aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/3d/simple3d/simple3d.py42
-rw-r--r--examples/async/eratosthenes/doc/eratosthenes.rst39
-rw-r--r--examples/async/eratosthenes/doc/eratosthenes.svg1
-rw-r--r--examples/async/eratosthenes/eratosthenes.pyproject3
-rw-r--r--examples/async/eratosthenes/eratosthenes_asyncio.py134
-rw-r--r--examples/async/eratosthenes/eratosthenes_trio.py197
-rw-r--r--examples/async/eratosthenes/requirements_trio.txt2
-rw-r--r--examples/async/minimal/doc/minimal.pngbin0 -> 8135 bytes
-rw-r--r--examples/async/minimal/doc/minimal.rst38
-rw-r--r--examples/async/minimal/minimal.pyproject3
-rw-r--r--examples/async/minimal/minimal_asyncio.py40
-rw-r--r--examples/async/minimal/minimal_trio.py107
-rw-r--r--examples/async/minimal/requirements_trio.txt1
-rw-r--r--examples/axcontainer/axviewer/axviewer.py46
-rw-r--r--examples/bluetooth/btscanner/btscanner.pyproject3
-rw-r--r--examples/bluetooth/btscanner/device.py130
-rw-r--r--examples/bluetooth/btscanner/device.ui111
-rw-r--r--examples/bluetooth/btscanner/doc/btscanner.rst4
-rw-r--r--examples/bluetooth/btscanner/main.py17
-rw-r--r--examples/bluetooth/btscanner/service.py48
-rw-r--r--examples/bluetooth/btscanner/service.ui71
-rw-r--r--examples/bluetooth/btscanner/ui_device.py90
-rw-r--r--examples/bluetooth/btscanner/ui_service.py57
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/App.qml99
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/BluetoothAlarmDialog.qml79
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/BottomLine.qml12
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/Connect.qml159
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/GameButton.qml39
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/GamePage.qml36
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/GameSettings.qml51
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/Main.qml71
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/Measure.qml212
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/SplashScreen.qml30
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/Stats.qml55
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/StatsLabel.qml34
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/TitleBar.qml54
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/images/bt_off_to_on.pngbin0 -> 6143 bytes
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/images/heart.pngbin0 -> 2664 bytes
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/images/logo.pngbin0 -> 31915 bytes
-rw-r--r--examples/bluetooth/heartrate_game/HeartRateGame/qmldir14
-rw-r--r--examples/bluetooth/heartrate_game/bluetoothbaseclass.py40
-rw-r--r--examples/bluetooth/heartrate_game/connectionhandler.py77
-rw-r--r--examples/bluetooth/heartrate_game/devicefinder.py139
-rw-r--r--examples/bluetooth/heartrate_game/devicehandler.py309
-rw-r--r--examples/bluetooth/heartrate_game/deviceinfo.py38
-rw-r--r--examples/bluetooth/heartrate_game/doc/heartrate_game.rst11
-rw-r--r--examples/bluetooth/heartrate_game/heartrate_game.pyproject23
-rw-r--r--examples/bluetooth/heartrate_game/heartrate_global.py30
-rw-r--r--examples/bluetooth/heartrate_game/main.py53
-rw-r--r--examples/bluetooth/heartrate_server/doc/heartrate_server.rst8
-rw-r--r--examples/bluetooth/heartrate_server/heartrate_server.py95
-rw-r--r--examples/bluetooth/heartrate_server/heartrate_server.pyproject3
-rw-r--r--examples/bluetooth/lowenergyscanner/Scanner/Characteristics.qml121
-rw-r--r--examples/bluetooth/lowenergyscanner/Scanner/Devices.qml121
-rw-r--r--examples/bluetooth/lowenergyscanner/Scanner/Dialog.qml48
-rw-r--r--examples/bluetooth/lowenergyscanner/Scanner/Header.qml25
-rw-r--r--examples/bluetooth/lowenergyscanner/Scanner/Label.qml16
-rw-r--r--examples/bluetooth/lowenergyscanner/Scanner/Main.qml31
-rw-r--r--examples/bluetooth/lowenergyscanner/Scanner/Menu.qml55
-rw-r--r--examples/bluetooth/lowenergyscanner/Scanner/Services.qml115
-rw-r--r--examples/bluetooth/lowenergyscanner/Scanner/assets/busy_dark.pngbin0 -> 1130 bytes
-rw-r--r--examples/bluetooth/lowenergyscanner/Scanner/qmldir10
-rw-r--r--examples/bluetooth/lowenergyscanner/characteristicinfo.py87
-rw-r--r--examples/bluetooth/lowenergyscanner/device.py278
-rw-r--r--examples/bluetooth/lowenergyscanner/deviceinfo.py34
-rw-r--r--examples/bluetooth/lowenergyscanner/doc/lowenergyscanner.pngbin0 -> 72365 bytes
-rw-r--r--examples/bluetooth/lowenergyscanner/doc/lowenergyscanner.rst11
-rw-r--r--examples/bluetooth/lowenergyscanner/lowenergyscanner.pyproject7
-rw-r--r--examples/bluetooth/lowenergyscanner/main.py27
-rw-r--r--examples/bluetooth/lowenergyscanner/serviceinfo.py64
-rw-r--r--examples/charts/areachart/areachart.py67
-rw-r--r--examples/charts/areachart/areachart.pyproject3
-rw-r--r--examples/charts/areachart/doc/areachart.pngbin0 -> 15491 bytes
-rw-r--r--examples/charts/areachart/doc/areachart.rst8
-rw-r--r--examples/charts/audio/audio.py47
-rw-r--r--examples/charts/barchart/barchart.py69
-rw-r--r--examples/charts/barchart/barchart.pyproject3
-rw-r--r--examples/charts/barchart/doc/barchart.pngbin0 -> 15717 bytes
-rw-r--r--examples/charts/barchart/doc/barchart.rst8
-rw-r--r--examples/charts/callout/callout.py86
-rw-r--r--examples/charts/chartthemes/README.md2
-rw-r--r--examples/charts/chartthemes/main.py126
-rw-r--r--examples/charts/chartthemes/ui_themewidget.py18
-rw-r--r--examples/charts/donutbreakdown/donutbreakdown.py48
-rw-r--r--examples/charts/dynamicspline/chart.py52
-rw-r--r--examples/charts/dynamicspline/doc/dynamicspline.rst15
-rw-r--r--examples/charts/dynamicspline/doc/dynamicspline1.pngbin0 -> 34292 bytes
-rw-r--r--examples/charts/dynamicspline/doc/dynamicspline2.pngbin0 -> 40347 bytes
-rw-r--r--examples/charts/dynamicspline/dynamicspline.pyproject3
-rw-r--r--examples/charts/dynamicspline/main.py27
-rw-r--r--examples/charts/legend/legend.py60
-rw-r--r--examples/charts/lineandbar/lineandbar.py52
-rw-r--r--examples/charts/linechart/linechart.py41
-rw-r--r--examples/charts/logvalueaxis/logvalueaxis.py41
-rw-r--r--examples/charts/memoryusage/memoryusage.py44
-rw-r--r--examples/charts/modeldata/modeldata.py47
-rw-r--r--examples/charts/nesteddonuts/nesteddonuts.py45
-rw-r--r--examples/charts/percentbarchart/percentbarchart.py53
-rw-r--r--examples/charts/piechart/piechart.py41
-rw-r--r--examples/charts/pointconfiguration/chartwindow.py156
-rw-r--r--examples/charts/pointconfiguration/doc/pointconfiguration.pngbin0 -> 34991 bytes
-rw-r--r--examples/charts/pointconfiguration/doc/pointconfiguration.rst144
-rw-r--r--examples/charts/pointconfiguration/pointconfiguration.py17
-rw-r--r--examples/charts/pointconfiguration/pointconfiguration.pyproject3
-rw-r--r--examples/charts/pointselectionandmarkers/doc/pointselectionandmarkers.pngbin0 -> 47669 bytes
-rw-r--r--examples/charts/pointselectionandmarkers/doc/pointselectionandmarkers.rst72
-rw-r--r--examples/charts/pointselectionandmarkers/images/blue_triangle.pngbin0 -> 2220 bytes
-rw-r--r--examples/charts/pointselectionandmarkers/images/green_triangle.pngbin0 -> 1389 bytes
-rw-r--r--examples/charts/pointselectionandmarkers/markers.qrc6
-rw-r--r--examples/charts/pointselectionandmarkers/pointselectionandmarkers.py128
-rw-r--r--examples/charts/pointselectionandmarkers/pointselectionandmarkers.pyproject3
-rw-r--r--examples/charts/pointselectionandmarkers/rc_markers.py275
-rw-r--r--examples/charts/pointselectionandmarkers/utilities.py77
-rw-r--r--examples/charts/qmlpolarchart/View1.qml34
-rw-r--r--examples/charts/qmlpolarchart/View2.qml34
-rw-r--r--examples/charts/qmlpolarchart/View3.qml34
-rw-r--r--examples/charts/qmlpolarchart/main.qml32
-rw-r--r--examples/charts/qmlpolarchart/qmlpolarchart.py47
-rw-r--r--examples/charts/temperaturerecords/temperaturerecords.py41
-rw-r--r--examples/corelib/ipc/sharedmemory/dialog.py93
-rw-r--r--examples/corelib/ipc/sharedmemory/dialog.ui47
-rw-r--r--examples/corelib/ipc/sharedmemory/image.pngbin0 -> 10199 bytes
-rw-r--r--examples/corelib/ipc/sharedmemory/main.py15
-rw-r--r--examples/corelib/ipc/sharedmemory/qt.pngbin0 -> 2991 bytes
-rw-r--r--examples/corelib/ipc/sharedmemory/sharedmemory.pyproject3
-rw-r--r--examples/corelib/ipc/sharedmemory/ui_dialog.py57
-rw-r--r--examples/corelib/mimetypesbrowser/doc/mimetypesbrowser.pngbin0 -> 22569 bytes
-rw-r--r--examples/corelib/mimetypesbrowser/doc/mimetypesbrowser.rst10
-rw-r--r--examples/corelib/mimetypesbrowser/mainwindow.py161
-rw-r--r--examples/corelib/mimetypesbrowser/mimetypemodel.py136
-rw-r--r--examples/corelib/mimetypesbrowser/mimetypesbrowser.py24
-rw-r--r--examples/corelib/mimetypesbrowser/mimetypesbrowser.pyproject3
-rw-r--r--examples/corelib/settingseditor/settingseditor.py126
-rw-r--r--examples/corelib/threads/mandelbrot.py163
-rw-r--r--examples/datavisualization/bars3d/bars3d.py42
-rw-r--r--examples/datavisualization/graphgallery/axesinputhandler.py101
-rw-r--r--examples/datavisualization/graphgallery/bargraph.py276
-rw-r--r--examples/datavisualization/graphgallery/custominputhandler.py177
-rw-r--r--examples/datavisualization/graphgallery/data/layer_1.pngbin0 -> 34540 bytes
-rw-r--r--examples/datavisualization/graphgallery/data/layer_2.pngbin0 -> 10553 bytes
-rw-r--r--examples/datavisualization/graphgallery/data/layer_3.pngbin0 -> 7119 bytes
-rw-r--r--examples/datavisualization/graphgallery/data/license.txt77
-rw-r--r--examples/datavisualization/graphgallery/data/maptexture.jpgbin0 -> 352922 bytes
-rw-r--r--examples/datavisualization/graphgallery/data/oilrig.obj2322
-rw-r--r--examples/datavisualization/graphgallery/data/pipe.obj330
-rw-r--r--examples/datavisualization/graphgallery/data/raindata.txt158
-rw-r--r--examples/datavisualization/graphgallery/data/refinery.obj2330
-rw-r--r--examples/datavisualization/graphgallery/data/topography.pngbin0 -> 395504 bytes
-rw-r--r--examples/datavisualization/graphgallery/doc/graph_gallery.webpbin0 -> 95552 bytes
-rw-r--r--examples/datavisualization/graphgallery/doc/graphgallery.rst11
-rw-r--r--examples/datavisualization/graphgallery/graphgallery.pyproject18
-rw-r--r--examples/datavisualization/graphgallery/graphgallery.qrc13
-rw-r--r--examples/datavisualization/graphgallery/graphmodifier.py395
-rw-r--r--examples/datavisualization/graphgallery/highlightseries.py94
-rw-r--r--examples/datavisualization/graphgallery/main.py50
-rw-r--r--examples/datavisualization/graphgallery/rainfalldata.py125
-rw-r--r--examples/datavisualization/graphgallery/scatterdatamodifier.py151
-rw-r--r--examples/datavisualization/graphgallery/scattergraph.py128
-rw-r--r--examples/datavisualization/graphgallery/surfacegraph.py265
-rw-r--r--examples/datavisualization/graphgallery/surfacegraphmodifier.py643
-rw-r--r--examples/datavisualization/graphgallery/topographicseries.py57
-rw-r--r--examples/datavisualization/graphgallery/variantbardatamapping.py67
-rw-r--r--examples/datavisualization/graphgallery/variantbardataproxy.py100
-rw-r--r--examples/datavisualization/graphgallery/variantdataset.py39
-rw-r--r--examples/datavisualization/minimalsurface/doc/minimalsurface.rst4
-rw-r--r--examples/datavisualization/minimalsurface/main.py54
-rw-r--r--examples/datavisualization/qmlsurfacegallery/datasource.py99
-rw-r--r--examples/datavisualization/qmlsurfacegallery/doc/qmlsurfacegallery.rst9
-rw-r--r--examples/datavisualization/qmlsurfacegallery/doc/qmlsurfacegallery.webpbin0 -> 100206 bytes
-rw-r--r--examples/datavisualization/qmlsurfacegallery/main.py39
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SpectrogramData.qml1545
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml227
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml430
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml272
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.pngbin0 -> 638731 bytes
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/main.qml57
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.pyproject10
-rw-r--r--examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.qrc5
-rw-r--r--examples/datavisualization/qmlsurfacegallery/rc_qmlsurfacegallery.py39967
-rw-r--r--examples/datavisualization/surface/doc/surface.rst23
-rw-r--r--examples/datavisualization/surface/doc/surface_mountain.pngbin0 -> 152571 bytes
-rw-r--r--examples/datavisualization/surface/main.py189
-rw-r--r--examples/datavisualization/surface/mountain.pngbin0 -> 34540 bytes
-rw-r--r--examples/datavisualization/surface/surface.pyproject4
-rw-r--r--examples/datavisualization/surface/surfacegraph.py253
-rw-r--r--examples/datavisualization/surface_model_numpy/doc/surface_model_numpy.rst24
-rw-r--r--examples/datavisualization/surface_model_numpy/main.py189
-rw-r--r--examples/datavisualization/surface_model_numpy/surface_model_numpy.pyproject4
-rw-r--r--examples/datavisualization/surface_model_numpy/surfacegraph.py295
-rw-r--r--examples/datavisualization/surface_numpy/doc/surface_numpy.rst24
-rw-r--r--examples/datavisualization/surface_numpy/main.py189
-rw-r--r--examples/datavisualization/surface_numpy/surface_numpy.pyproject4
-rw-r--r--examples/datavisualization/surface_numpy/surfacegraph.py253
-rw-r--r--examples/dbus/listnames/listnames.py53
-rw-r--r--examples/dbus/listnames/listnames.pyproject3
-rw-r--r--examples/dbus/pingpong/ping.py38
-rw-r--r--examples/dbus/pingpong/pingpong.pyproject3
-rw-r--r--examples/dbus/pingpong/pong.py44
-rw-r--r--examples/declarative/extending/chapter1-basics/app.qml64
-rw-r--r--examples/declarative/extending/chapter1-basics/basics.py102
-rw-r--r--examples/declarative/extending/chapter2-methods/app.qml70
-rw-r--r--examples/declarative/extending/chapter2-methods/methods.py109
-rw-r--r--examples/declarative/extending/chapter3-bindings/app.qml78
-rw-r--r--examples/declarative/extending/chapter3-bindings/bindings.py113
-rw-r--r--examples/declarative/extending/chapter4-customPropertyTypes/app.qml60
-rw-r--r--examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py116
-rw-r--r--examples/declarative/extending/chapter5-listproperties/app.qml70
-rw-r--r--examples/declarative/extending/chapter5-listproperties/listproperties.py130
-rw-r--r--examples/declarative/scrolling/doc/scrolling.pngbin79 -> 0 bytes
-rw-r--r--examples/declarative/scrolling/doc/scrolling.rst9
-rw-r--r--examples/declarative/scrolling/scrolling.py70
-rw-r--r--examples/declarative/scrolling/scrolling.pyproject3
-rw-r--r--examples/declarative/signals/pytoqml1/main.py69
-rw-r--r--examples/declarative/signals/pytoqml1/view.qml73
-rw-r--r--examples/declarative/signals/pytoqml2/main.py85
-rw-r--r--examples/declarative/signals/pytoqml2/view.qml64
-rw-r--r--examples/declarative/signals/qmltopy1/main.py87
-rw-r--r--examples/declarative/signals/qmltopy1/view.qml85
-rw-r--r--examples/declarative/signals/qmltopy2/main.py80
-rw-r--r--examples/declarative/signals/qmltopy2/view.qml80
-rw-r--r--examples/declarative/signals/qmltopy3/main.py71
-rw-r--r--examples/declarative/signals/qmltopy3/view.qml103
-rw-r--r--examples/declarative/signals/qmltopy4/main.py71
-rw-r--r--examples/declarative/signals/qmltopy4/view.qml68
-rw-r--r--examples/declarative/textproperties/doc/textproperties.rst9
-rw-r--r--examples/declarative/textproperties/main.py113
-rw-r--r--examples/declarative/textproperties/view.qml191
-rw-r--r--examples/declarative/usingmodel/doc/usingmodel.rst9
-rw-r--r--examples/declarative/usingmodel/usingmodel.py101
-rw-r--r--examples/declarative/usingmodel/view.qml65
-rw-r--r--examples/demos/colorpaletteclient/ColorPalette/ColorDialogDelete.qml71
-rw-r--r--examples/demos/colorpaletteclient/ColorPalette/ColorDialogEditor.qml139
-rw-r--r--examples/demos/colorpaletteclient/ColorPalette/ColorView.qml381
-rw-r--r--examples/demos/colorpaletteclient/ColorPalette/Main.qml62
-rw-r--r--examples/demos/colorpaletteclient/ColorPalette/ServerSelection.qml241
-rw-r--r--examples/demos/colorpaletteclient/ColorPalette/UserMenu.qml139
-rw-r--r--examples/demos/colorpaletteclient/ColorPalette/qmldir7
-rw-r--r--examples/demos/colorpaletteclient/QtExampleStyle/Button.qml48
-rw-r--r--examples/demos/colorpaletteclient/QtExampleStyle/CMakeLists.txt54
-rw-r--r--examples/demos/colorpaletteclient/QtExampleStyle/Popup.qml27
-rw-r--r--examples/demos/colorpaletteclient/QtExampleStyle/TextField.qml22
-rw-r--r--examples/demos/colorpaletteclient/QtExampleStyle/UIStyle.qml29
-rw-r--r--examples/demos/colorpaletteclient/QtExampleStyle/qmldir5
-rw-r--r--examples/demos/colorpaletteclient/abstractresource.py24
-rw-r--r--examples/demos/colorpaletteclient/basiclogin.py100
-rw-r--r--examples/demos/colorpaletteclient/colorpaletteclient.pyproject21
-rw-r--r--examples/demos/colorpaletteclient/colorpaletteclient.qrc17
-rw-r--r--examples/demos/colorpaletteclient/doc/colorpaletteclient.rst79
-rw-r--r--examples/demos/colorpaletteclient/doc/colorpaletteclient.webpbin0 -> 28034 bytes
-rw-r--r--examples/demos/colorpaletteclient/icons/close.svg3
-rw-r--r--examples/demos/colorpaletteclient/icons/delete.svg3
-rw-r--r--examples/demos/colorpaletteclient/icons/dots.svg3
-rw-r--r--examples/demos/colorpaletteclient/icons/edit.svg3
-rw-r--r--examples/demos/colorpaletteclient/icons/login.svg3
-rw-r--r--examples/demos/colorpaletteclient/icons/logout.svg3
-rw-r--r--examples/demos/colorpaletteclient/icons/ok.svg3
-rw-r--r--examples/demos/colorpaletteclient/icons/plus.svg3
-rw-r--r--examples/demos/colorpaletteclient/icons/qt.pngbin0 -> 2963 bytes
-rw-r--r--examples/demos/colorpaletteclient/icons/qt_attribution.json14
-rw-r--r--examples/demos/colorpaletteclient/icons/testserver.pngbin0 -> 6803 bytes
-rw-r--r--examples/demos/colorpaletteclient/icons/update.svg3
-rw-r--r--examples/demos/colorpaletteclient/icons/user.svg4
-rw-r--r--examples/demos/colorpaletteclient/icons/userMask.svg3
-rw-r--r--examples/demos/colorpaletteclient/main.py33
-rw-r--r--examples/demos/colorpaletteclient/paginatedresource.py278
-rw-r--r--examples/demos/colorpaletteclient/rc_colorpaletteclient.py1098
-rw-r--r--examples/demos/colorpaletteclient/restservice.py53
-rw-r--r--examples/demos/documentviewer/abstractviewer.py185
-rw-r--r--examples/demos/documentviewer/doc/abstractviewer.py.rstinc25
-rw-r--r--examples/demos/documentviewer/doc/documentviewer.pngbin0 -> 22897 bytes
-rw-r--r--examples/demos/documentviewer/doc/documentviewer.rst13
-rw-r--r--examples/demos/documentviewer/doc/jsonviewer.py.rstinc11
-rw-r--r--examples/demos/documentviewer/doc/mainwindow.py.rstinc11
-rw-r--r--examples/demos/documentviewer/doc/viewerfactory.py.rstinc3
-rw-r--r--examples/demos/documentviewer/documentviewer.pyproject14
-rw-r--r--examples/demos/documentviewer/documentviewer.qrc42
-rw-r--r--examples/demos/documentviewer/images/copy.png (renamed from examples/widgets/mainwindows/mdi/images/copy.png)bin1338 -> 1338 bytes
-rw-r--r--examples/demos/documentviewer/images/copy@2x.pngbin0 -> 2219 bytes
-rw-r--r--examples/demos/documentviewer/images/cut.png (renamed from examples/widgets/mainwindows/mdi/images/cut.png)bin1323 -> 1323 bytes
-rw-r--r--examples/demos/documentviewer/images/cut@2x.pngbin0 -> 2888 bytes
-rw-r--r--examples/demos/documentviewer/images/document-open-recent.svgzbin0 -> 4656 bytes
-rw-r--r--examples/demos/documentviewer/images/go-next-view-page.pngbin0 -> 1125 bytes
-rw-r--r--examples/demos/documentviewer/images/go-next-view-page@2x.pngbin0 -> 2312 bytes
-rw-r--r--examples/demos/documentviewer/images/go-next-view.pngbin0 -> 990 bytes
-rw-r--r--examples/demos/documentviewer/images/go-next-view@2x.pngbin0 -> 1830 bytes
-rw-r--r--examples/demos/documentviewer/images/go-next.svgzbin0 -> 5473 bytes
-rw-r--r--examples/demos/documentviewer/images/go-previous-view-page.pngbin0 -> 1119 bytes
-rw-r--r--examples/demos/documentviewer/images/go-previous-view-page@2x.pngbin0 -> 2067 bytes
-rw-r--r--examples/demos/documentviewer/images/go-previous-view.pngbin0 -> 1010 bytes
-rw-r--r--examples/demos/documentviewer/images/go-previous-view@2x.pngbin0 -> 1875 bytes
-rw-r--r--examples/demos/documentviewer/images/go-previous.svgzbin0 -> 5690 bytes
-rw-r--r--examples/demos/documentviewer/images/help-about.svgzbin0 -> 7056 bytes
-rw-r--r--examples/demos/documentviewer/images/magnifier.pngbin0 -> 1006 bytes
-rw-r--r--examples/demos/documentviewer/images/magnifier@2x.pngbin0 -> 2249 bytes
-rw-r--r--examples/demos/documentviewer/images/open.png (renamed from examples/widgets/mainwindows/mdi/images/open.png)bin2073 -> 2073 bytes
-rw-r--r--examples/demos/documentviewer/images/open@2x.pngbin0 -> 1017 bytes
-rw-r--r--examples/demos/documentviewer/images/paste.png (renamed from examples/widgets/mainwindows/mdi/images/paste.png)bin1645 -> 1645 bytes
-rw-r--r--examples/demos/documentviewer/images/paste@2x.pngbin0 -> 2782 bytes
-rw-r--r--examples/demos/documentviewer/images/print.pngbin0 -> 678 bytes
-rw-r--r--examples/demos/documentviewer/images/print2x.pngbin0 -> 931 bytes
-rw-r--r--examples/demos/documentviewer/images/qt-logo.pngbin0 -> 1483 bytes
-rw-r--r--examples/demos/documentviewer/images/qt-logo@2x.pngbin0 -> 1933 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-fit-best.pngbin0 -> 1067 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-fit-best@2x.pngbin0 -> 1692 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-fit-width.pngbin0 -> 905 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-fit-width@2x.pngbin0 -> 1724 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-in.pngbin0 -> 952 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-in@2x.pngbin0 -> 2100 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-original.pngbin0 -> 946 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-original@2x.pngbin0 -> 2005 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-out.pngbin0 -> 940 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-out@2x.pngbin0 -> 1971 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-previous.pngbin0 -> 946 bytes
-rw-r--r--examples/demos/documentviewer/images/zoom-previous@2x.pngbin0 -> 2049 bytes
-rw-r--r--examples/demos/documentviewer/jsonviewer/jsonviewer.py396
-rw-r--r--examples/demos/documentviewer/main.py37
-rw-r--r--examples/demos/documentviewer/mainwindow.py178
-rw-r--r--examples/demos/documentviewer/mainwindow.ui272
-rw-r--r--examples/demos/documentviewer/pdfviewer/pdfviewer.py204
-rw-r--r--examples/demos/documentviewer/pdfviewer/zoomselector.py54
-rw-r--r--examples/demos/documentviewer/rc_documentviewer.py5135
-rw-r--r--examples/demos/documentviewer/recentfilemenu.py34
-rw-r--r--examples/demos/documentviewer/recentfiles.py159
-rw-r--r--examples/demos/documentviewer/txtviewer/txtviewer.py144
-rw-r--r--examples/demos/documentviewer/ui_mainwindow.py230
-rw-r--r--examples/demos/documentviewer/viewerfactory.py114
-rw-r--r--examples/designer/taskmenuextension/doc/taskmenuextension.rst6
-rw-r--r--examples/designer/taskmenuextension/main.py41
-rw-r--r--examples/designer/taskmenuextension/registertictactoe.py53
-rw-r--r--examples/designer/taskmenuextension/tictactoe.py137
-rw-r--r--examples/designer/taskmenuextension/tictactoeplugin.py54
-rw-r--r--examples/designer/taskmenuextension/tictactoetaskmenu.py53
-rw-r--r--examples/examples.pyproject3
-rw-r--r--examples/external/matplotlib/widget3d/widget3d.py47
-rw-r--r--examples/external/matplotlib/widget_gaussian/widget_gaussian.py48
-rw-r--r--examples/external/networkx/doc/networkx.pngbin0 -> 28017 bytes
-rw-r--r--examples/external/networkx/doc/networkx.rst8
-rw-r--r--examples/external/networkx/main.py346
-rw-r--r--examples/external/networkx/networkx.pyproject3
-rw-r--r--examples/external/networkx/requirements.txt3
-rw-r--r--examples/external/opencv/webcam_pattern_detection.py45
-rw-r--r--examples/external/pandas/dataframe_model.py41
-rw-r--r--examples/external/scikit/staining_colors_separation.py45
-rw-r--r--examples/graphs/2d/hellographs/HelloGraphs/Main.qml153
-rw-r--r--examples/graphs/2d/hellographs/HelloGraphs/qmldir2
-rw-r--r--examples/graphs/2d/hellographs/doc/hellographs.rst51
-rw-r--r--examples/graphs/2d/hellographs/doc/hellographs.webpbin0 -> 60020 bytes
-rw-r--r--examples/graphs/2d/hellographs/hellographs.pyproject3
-rw-r--r--examples/graphs/2d/hellographs/main.py22
-rw-r--r--examples/graphs/3d/minimalsurfacegraph/doc/minimalsurfacegraph.rst4
-rw-r--r--examples/graphs/3d/minimalsurfacegraph/main.py54
-rw-r--r--examples/graphs/3d/widgetgallery/axesinputhandler.py100
-rw-r--r--examples/graphs/3d/widgetgallery/bargraph.py272
-rw-r--r--examples/graphs/3d/widgetgallery/custominputhandler.py177
-rw-r--r--examples/graphs/3d/widgetgallery/data/layer_1.pngbin0 -> 34540 bytes
-rw-r--r--examples/graphs/3d/widgetgallery/data/layer_2.pngbin0 -> 10553 bytes
-rw-r--r--examples/graphs/3d/widgetgallery/data/layer_3.pngbin0 -> 7119 bytes
-rw-r--r--examples/graphs/3d/widgetgallery/data/license.txt77
-rw-r--r--examples/graphs/3d/widgetgallery/data/maptexture.jpgbin0 -> 352922 bytes
-rw-r--r--examples/graphs/3d/widgetgallery/data/narrowarrow.meshbin0 -> 15420 bytes
-rw-r--r--examples/graphs/3d/widgetgallery/data/oilrig.meshbin0 -> 69728 bytes
-rw-r--r--examples/graphs/3d/widgetgallery/data/pipe.meshbin0 -> 4760 bytes
-rw-r--r--examples/graphs/3d/widgetgallery/data/raindata.txt158
-rw-r--r--examples/graphs/3d/widgetgallery/data/refinery.meshbin0 -> 75216 bytes
-rw-r--r--examples/graphs/3d/widgetgallery/data/topography.pngbin0 -> 395504 bytes
-rw-r--r--examples/graphs/3d/widgetgallery/doc/widgetgallery.rst11
-rw-r--r--examples/graphs/3d/widgetgallery/doc/widgetgallery.webpbin0 -> 93150 bytes
-rw-r--r--examples/graphs/3d/widgetgallery/graphmodifier.py391
-rw-r--r--examples/graphs/3d/widgetgallery/highlightseries.py94
-rw-r--r--examples/graphs/3d/widgetgallery/main.py41
-rw-r--r--examples/graphs/3d/widgetgallery/rainfalldata.py125
-rw-r--r--examples/graphs/3d/widgetgallery/scatterdatamodifier.py149
-rw-r--r--examples/graphs/3d/widgetgallery/scattergraph.py121
-rw-r--r--examples/graphs/3d/widgetgallery/surfacegraph.py256
-rw-r--r--examples/graphs/3d/widgetgallery/surfacegraphmodifier.py641
-rw-r--r--examples/graphs/3d/widgetgallery/topographicseries.py57
-rw-r--r--examples/graphs/3d/widgetgallery/variantbardatamapping.py67
-rw-r--r--examples/graphs/3d/widgetgallery/variantbardataproxy.py100
-rw-r--r--examples/graphs/3d/widgetgallery/variantdataset.py39
-rw-r--r--examples/graphs/3d/widgetgallery/widgetgallery.pyproject29
-rw-r--r--examples/gui/analogclock/analogclock.pyproject3
-rw-r--r--examples/gui/analogclock/doc/analogclock.rst8
-rw-r--r--examples/gui/analogclock/main.py92
-rw-r--r--examples/gui/rhiwindow/doc/rhiwindow.rst49
-rw-r--r--examples/gui/rhiwindow/doc/rhiwindow.webpbin0 -> 38466 bytes
-rw-r--r--examples/gui/rhiwindow/main.py80
-rw-r--r--examples/gui/rhiwindow/rc_rhiwindow.py319
-rw-r--r--examples/gui/rhiwindow/rhiwindow.py420
-rw-r--r--examples/gui/rhiwindow/rhiwindow.pyproject5
-rw-r--r--examples/gui/rhiwindow/rhiwindow.qrc8
-rw-r--r--examples/gui/rhiwindow/shaders/color.frag15
-rw-r--r--examples/gui/rhiwindow/shaders/color.vert17
-rw-r--r--examples/gui/rhiwindow/shaders/prebuilt/color.frag.qsbbin0 -> 1035 bytes
-rw-r--r--examples/gui/rhiwindow/shaders/prebuilt/color.vert.qsbbin0 -> 1131 bytes
-rw-r--r--examples/gui/rhiwindow/shaders/prebuilt/quad.frag.qsbbin0 -> 1023 bytes
-rw-r--r--examples/gui/rhiwindow/shaders/prebuilt/quad.vert.qsbbin0 -> 982 bytes
-rw-r--r--examples/gui/rhiwindow/shaders/quad.frag11
-rw-r--r--examples/gui/rhiwindow/shaders/quad.vert10
-rw-r--r--examples/httpserver/afterrequest/doc/afterrequest.rst5
-rw-r--r--examples/httpserver/afterrequest/main.py36
-rw-r--r--examples/installer_test/hello.py53
-rw-r--r--examples/installer_test/hello_app.spec44
-rw-r--r--examples/location/mapviewer/MapViewer/Main.qml460
-rw-r--r--examples/location/mapviewer/MapViewer/forms/Geocode.qml42
-rw-r--r--examples/location/mapviewer/MapViewer/forms/GeocodeForm.ui.qml136
-rw-r--r--examples/location/mapviewer/MapViewer/forms/Locale.qml45
-rw-r--r--examples/location/mapviewer/MapViewer/forms/LocaleForm.ui.qml116
-rw-r--r--examples/location/mapviewer/MapViewer/forms/Message.qml21
-rw-r--r--examples/location/mapviewer/MapViewer/forms/MessageForm.ui.qml69
-rw-r--r--examples/location/mapviewer/MapViewer/forms/ReverseGeocode.qml38
-rw-r--r--examples/location/mapviewer/MapViewer/forms/ReverseGeocodeForm.ui.qml103
-rw-r--r--examples/location/mapviewer/MapViewer/forms/RouteAddress.qml105
-rw-r--r--examples/location/mapviewer/MapViewer/forms/RouteAddressForm.ui.qml160
-rw-r--r--examples/location/mapviewer/MapViewer/forms/RouteCoordinate.qml41
-rw-r--r--examples/location/mapviewer/MapViewer/forms/RouteCoordinateForm.ui.qml136
-rw-r--r--examples/location/mapviewer/MapViewer/forms/RouteList.qml50
-rw-r--r--examples/location/mapviewer/MapViewer/forms/RouteListDelegate.qml42
-rw-r--r--examples/location/mapviewer/MapViewer/forms/RouteListHeader.qml47
-rw-r--r--examples/location/mapviewer/MapViewer/helper.js44
-rw-r--r--examples/location/mapviewer/MapViewer/map/MapComponent.qml497
-rw-r--r--examples/location/mapviewer/MapViewer/map/MapSliders.qml282
-rw-r--r--examples/location/mapviewer/MapViewer/map/Marker.qml64
-rw-r--r--examples/location/mapviewer/MapViewer/map/MiniMap.qml78
-rw-r--r--examples/location/mapviewer/MapViewer/menus/ItemPopupMenu.qml19
-rw-r--r--examples/location/mapviewer/MapViewer/menus/MainMenu.qml122
-rw-r--r--examples/location/mapviewer/MapViewer/menus/MapPopupMenu.qml30
-rw-r--r--examples/location/mapviewer/MapViewer/menus/MarkerPopupMenu.qml38
-rw-r--r--examples/location/mapviewer/MapViewer/qmldir27
-rw-r--r--examples/location/mapviewer/MapViewer/resources/marker.pngbin0 -> 752 bytes
-rw-r--r--examples/location/mapviewer/MapViewer/resources/marker_blue.pngbin0 -> 3523 bytes
-rw-r--r--examples/location/mapviewer/MapViewer/resources/scale.pngbin0 -> 98 bytes
-rw-r--r--examples/location/mapviewer/MapViewer/resources/scale_end.pngbin0 -> 93 bytes
-rw-r--r--examples/location/mapviewer/doc/mapviewer.rst14
-rw-r--r--examples/location/mapviewer/doc/mapviewer.webpbin0 -> 79588 bytes
-rw-r--r--examples/location/mapviewer/main.py75
-rw-r--r--examples/location/mapviewer/mapviewer.pyproject33
-rw-r--r--examples/macextras/macpasteboardmime/macpasteboardmime.py128
-rw-r--r--examples/macextras/macpasteboardmime/macpasteboardmime.pyproject3
-rw-r--r--examples/multimedia/audiooutput/audiooutput.py80
-rw-r--r--examples/multimedia/audiooutput/doc/audiooutput.rst2
-rw-r--r--examples/multimedia/audiosource/audiosource.py227
-rw-r--r--examples/multimedia/audiosource/audiosource.pyproject3
-rw-r--r--examples/multimedia/audiosource/doc/audiosource.pngbin0 -> 11897 bytes
-rw-r--r--examples/multimedia/audiosource/doc/audiosource.rst13
-rw-r--r--examples/multimedia/camera/camera.py535
-rw-r--r--examples/multimedia/camera/camera.pyproject11
-rw-r--r--examples/multimedia/camera/camera.ui497
-rw-r--r--examples/multimedia/camera/camera_mobile.ui504
-rw-r--r--examples/multimedia/camera/doc/camera.pngbin63404 -> 0 bytes
-rw-r--r--examples/multimedia/camera/doc/camera.rst6
-rw-r--r--examples/multimedia/camera/doc/camera.webpbin0 -> 11666 bytes
-rw-r--r--examples/multimedia/camera/imagesettings.py56
-rw-r--r--examples/multimedia/camera/imagesettings.ui123
-rw-r--r--examples/multimedia/camera/main.py17
-rw-r--r--examples/multimedia/camera/metadatadialog.py86
-rw-r--r--examples/multimedia/camera/ui_camera.py232
-rw-r--r--examples/multimedia/camera/ui_camera_mobile.py251
-rw-r--r--examples/multimedia/camera/ui_imagesettings.py94
-rw-r--r--examples/multimedia/camera/ui_videosettings.py178
-rw-r--r--examples/multimedia/camera/ui_videosettings_mobile.py176
-rw-r--r--examples/multimedia/camera/videosettings.py167
-rw-r--r--examples/multimedia/camera/videosettings.ui213
-rw-r--r--examples/multimedia/camera/videosettings_mobile.ui207
-rw-r--r--examples/multimedia/player/player.py99
-rw-r--r--examples/multimedia/screencapture/doc/screencapture.rst42
-rw-r--r--examples/multimedia/screencapture/doc/screencapture.webpbin0 -> 53592 bytes
-rw-r--r--examples/multimedia/screencapture/main.py20
-rw-r--r--examples/multimedia/screencapture/screencapture.pyproject3
-rw-r--r--examples/multimedia/screencapture/screencapturepreview.py162
-rw-r--r--examples/multimedia/screencapture/screenlistmodel.py38
-rw-r--r--examples/multimedia/screencapture/windowlistmodel.py30
-rw-r--r--examples/network/blockingfortuneclient/blockingfortuneclient.py85
-rw-r--r--examples/network/downloader/downloader.py44
-rw-r--r--examples/network/fortuneclient/fortuneclient.py72
-rw-r--r--examples/network/fortuneserver/fortuneserver.py64
-rw-r--r--examples/network/googlesuggest/doc/googlesuggest.pngbin0 -> 2467 bytes
-rw-r--r--examples/network/googlesuggest/doc/googlesuggest.rst11
-rw-r--r--examples/network/googlesuggest/googlesuggest.py136
-rw-r--r--examples/network/googlesuggest/googlesuggest.pyproject3
-rw-r--r--examples/network/googlesuggest/main.py14
-rw-r--r--examples/network/googlesuggest/searchbox.py27
-rw-r--r--examples/network/loopback/dialog.py151
-rw-r--r--examples/network/loopback/doc/loopback.pngbin0 -> 6195 bytes
-rw-r--r--examples/network/loopback/doc/loopback.rst10
-rw-r--r--examples/network/loopback/loopback.pyproject3
-rw-r--r--examples/network/loopback/main.py15
-rw-r--r--examples/network/threadedfortuneserver/threadedfortuneserver.py54
-rw-r--r--examples/networkauth/redditclient/doc/redditclient.pngbin0 -> 40526 bytes
-rw-r--r--examples/networkauth/redditclient/doc/redditclient.rst21
-rw-r--r--examples/networkauth/redditclient/main.py28
-rw-r--r--examples/networkauth/redditclient/redditclient.pyproject3
-rw-r--r--examples/networkauth/redditclient/redditmodel.py70
-rw-r--r--examples/networkauth/redditclient/redditwrapper.py92
-rw-r--r--examples/opengl/contextinfo/contextinfo.py68
-rw-r--r--examples/opengl/hellogl2/doc/hellogl2.rst14
-rw-r--r--examples/opengl/hellogl2/glwidget.py272
-rw-r--r--examples/opengl/hellogl2/hellogl2.py489
-rw-r--r--examples/opengl/hellogl2/hellogl2.pyproject2
-rw-r--r--examples/opengl/hellogl2/logo.py101
-rw-r--r--examples/opengl/hellogl2/main.py58
-rw-r--r--examples/opengl/hellogl2/mainwindow.py29
-rw-r--r--examples/opengl/hellogl2/window.py110
-rw-r--r--examples/opengl/textures/textures.py214
-rw-r--r--examples/opengl/textures/textures.pyproject2
-rw-r--r--examples/opengl/textures/textures_rc.py550
-rw-r--r--examples/opengl/threadedqopenglwidget/doc/threadedqopenglwidget.pngbin0 -> 10616 bytes
-rw-r--r--examples/opengl/threadedqopenglwidget/doc/threadedqopenglwidget.rst9
-rw-r--r--examples/opengl/threadedqopenglwidget/glwidget.py79
-rw-r--r--examples/opengl/threadedqopenglwidget/main.py93
-rw-r--r--examples/opengl/threadedqopenglwidget/mainwindow.py24
-rw-r--r--examples/opengl/threadedqopenglwidget/renderer.py326
-rw-r--r--examples/opengl/threadedqopenglwidget/threadedqopenglwidget.pyproject3
-rw-r--r--examples/pdf/quickpdfviewer/doc/quickpdfviewer.rst4
-rw-r--r--examples/pdf/quickpdfviewer/main.py49
-rw-r--r--examples/pdf/quickpdfviewer/quickpdfviewer.pyproject3
-rw-r--r--examples/pdf/quickpdfviewer/rc_viewer.py5505
-rw-r--r--examples/pdf/quickpdfviewer/resources/document-open.svg13
-rw-r--r--examples/pdf/quickpdfviewer/resources/edit-clear.svg15
-rw-r--r--examples/pdf/quickpdfviewer/resources/edit-copy.svg15
-rw-r--r--examples/pdf/quickpdfviewer/resources/edit-select-all.svg13
-rw-r--r--examples/pdf/quickpdfviewer/resources/go-down-search.svg13
-rw-r--r--examples/pdf/quickpdfviewer/resources/go-next-view-page.svg13
-rw-r--r--examples/pdf/quickpdfviewer/resources/go-previous-view-page.svg13
-rw-r--r--examples/pdf/quickpdfviewer/resources/go-up-search.svg8
-rw-r--r--examples/pdf/quickpdfviewer/resources/rotate-left.svg6
-rw-r--r--examples/pdf/quickpdfviewer/resources/rotate-right.svg6
-rw-r--r--examples/pdf/quickpdfviewer/resources/test.pdfbin0 -> 76633 bytes
-rw-r--r--examples/pdf/quickpdfviewer/resources/zoom-fit-best.svg13
-rw-r--r--examples/pdf/quickpdfviewer/resources/zoom-fit-width.svg13
-rw-r--r--examples/pdf/quickpdfviewer/resources/zoom-in.svg13
-rw-r--r--examples/pdf/quickpdfviewer/resources/zoom-original.svg13
-rw-r--r--examples/pdf/quickpdfviewer/resources/zoom-out.svg13
-rw-r--r--examples/pdf/quickpdfviewer/viewer.qml307
-rw-r--r--examples/pdf/quickpdfviewer/viewer.qrc20
-rw-r--r--examples/pdfwidgets/pdfviewer/doc/pdfviewer.rst5
-rw-r--r--examples/pdfwidgets/pdfviewer/images/document-open.svgzbin0 -> 4276 bytes
-rw-r--r--examples/pdfwidgets/pdfviewer/images/go-next-view-page.svgzbin0 -> 12615 bytes
-rw-r--r--examples/pdfwidgets/pdfviewer/images/go-next-view.svgzbin0 -> 6360 bytes
-rw-r--r--examples/pdfwidgets/pdfviewer/images/go-previous-view-page.svgzbin0 -> 12602 bytes
-rw-r--r--examples/pdfwidgets/pdfviewer/images/go-previous-view.svgzbin0 -> 6545 bytes
-rw-r--r--examples/pdfwidgets/pdfviewer/images/zoom-fit-best.svgzbin0 -> 6121 bytes
-rw-r--r--examples/pdfwidgets/pdfviewer/images/zoom-fit-width.svgzbin0 -> 6109 bytes
-rw-r--r--examples/pdfwidgets/pdfviewer/images/zoom-in.svgzbin0 -> 6033 bytes
-rw-r--r--examples/pdfwidgets/pdfviewer/images/zoom-original.svgzbin0 -> 5541 bytes
-rw-r--r--examples/pdfwidgets/pdfviewer/images/zoom-out.svgzbin0 -> 5420 bytes
-rw-r--r--examples/pdfwidgets/pdfviewer/images/zoom-previous.svgzbin0 -> 5665 bytes
-rw-r--r--examples/pdfwidgets/pdfviewer/main.py27
-rw-r--r--examples/pdfwidgets/pdfviewer/mainwindow.py141
-rw-r--r--examples/pdfwidgets/pdfviewer/mainwindow.ui327
-rw-r--r--examples/pdfwidgets/pdfviewer/pdfviewer.pyproject4
-rw-r--r--examples/pdfwidgets/pdfviewer/rc_resources.py3468
-rw-r--r--examples/pdfwidgets/pdfviewer/resources.qrc11
-rw-r--r--examples/pdfwidgets/pdfviewer/ui_mainwindow.py259
-rw-r--r--examples/pdfwidgets/pdfviewer/zoomselector.py59
-rw-r--r--examples/qml/editingmodel/MovingRectangle.qml78
-rw-r--r--examples/qml/editingmodel/doc/editingmodel.rst16
-rw-r--r--examples/qml/editingmodel/doc/qabstractlistmodelqml.pngbin0 -> 45810 bytes
-rw-r--r--examples/qml/editingmodel/main.py21
-rw-r--r--examples/qml/editingmodel/main.pyproject3
-rw-r--r--examples/qml/editingmodel/main.qml106
-rw-r--r--examples/qml/editingmodel/model.py156
-rw-r--r--examples/qml/signals/pytoqml1/main.py31
-rw-r--r--examples/qml/signals/pytoqml1/pytoqml1.pyproject (renamed from examples/declarative/signals/pytoqml1/pytoqml1.pyproject)0
-rw-r--r--examples/qml/signals/pytoqml1/view.qml36
-rw-r--r--examples/qml/signals/pytoqml2/main.py54
-rw-r--r--examples/qml/signals/pytoqml2/pytoqml2.pyproject (renamed from examples/declarative/signals/pytoqml2/pytoqml2.pyproject)0
-rw-r--r--examples/qml/signals/pytoqml2/view.qml30
-rw-r--r--examples/qml/signals/qmltopy1/main.py50
-rw-r--r--examples/qml/signals/qmltopy1/qmltopy1.pyproject (renamed from examples/declarative/signals/qmltopy1/qmltopy1.pyproject)0
-rw-r--r--examples/qml/signals/qmltopy1/view.qml54
-rw-r--r--examples/qml/signals/qmltopy2/main.py45
-rw-r--r--examples/qml/signals/qmltopy2/qmltopy2.pyproject (renamed from examples/declarative/signals/qmltopy2/qmltopy2.pyproject)0
-rw-r--r--examples/qml/signals/qmltopy2/view.qml49
-rw-r--r--examples/qml/signals/qmltopy3/main.py33
-rw-r--r--examples/qml/signals/qmltopy3/qmltopy3.pyproject (renamed from examples/declarative/signals/qmltopy3/qmltopy3.pyproject)0
-rw-r--r--examples/qml/signals/qmltopy3/view.qml66
-rw-r--r--examples/qml/signals/qmltopy4/main.py33
-rw-r--r--examples/qml/signals/qmltopy4/qmltopy4.pyproject (renamed from examples/declarative/signals/qmltopy4/qmltopy4.pyproject)0
-rw-r--r--examples/qml/signals/qmltopy4/view.qml31
-rw-r--r--examples/qml/textproperties/doc/textproperties.png (renamed from examples/declarative/textproperties/doc/textproperties.png)bin14082 -> 14082 bytes
-rw-r--r--examples/qml/textproperties/doc/textproperties.rst9
-rw-r--r--examples/qml/textproperties/main.py76
-rw-r--r--examples/qml/textproperties/textproperties.pyproject (renamed from examples/declarative/textproperties/textproperties.pyproject)0
-rw-r--r--examples/qml/textproperties/view.qml160
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/adding/People/Main.qml9
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/adding/People/qmldir3
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/adding/adding.pyproject4
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/adding/doc/adding.rst67
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/adding/main.py30
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/adding/person.py34
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/People/Main.qml16
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/People/qmldir3
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/advanced1-Base-project.pyproject4
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/birthdayparty.py46
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/doc/advanced1-Base-project.rst57
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/main.py33
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/person.py41
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/People/Main.qml16
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/People/qmldir3
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/advanced2-Inheritance-and-coercion.pyproject4
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/birthdayparty.py46
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/doc/advanced2-Inheritance-and-coercion.rst62
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/main.py38
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/person.py52
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/People/Main.qml15
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/People/qmldir3
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/advanced3-Default-properties.pyproject4
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/birthdayparty.py47
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/doc/advanced3-Default-properties.rst40
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/main.py38
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/person.py51
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/People/Main.qml33
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/People/qmldir3
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/advanced4-Grouped-properties.pyproject4
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/birthdayparty.py47
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/doc/advanced4-Grouped-properties.rst39
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/main.py46
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/person.py102
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/People/Main.qml22
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/People/qmldir3
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/advanced5-Attached-properties.pyproject4
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/birthdayparty.py71
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/doc/advanced5-Attached-properties.rst51
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/main.py48
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/person.py51
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/People/Main.qml27
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/People/qmldir3
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/advanced6-Property-value-source.pyproject4
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/birthdayparty.py89
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/doc/advanced6-Property-value-source.rst43
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/happybirthdaysong.py49
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/main.py53
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/person.py51
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/binding/People/Main.qml29
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/binding/People/qmldir3
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/binding/binding.pyproject4
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/binding/birthdayparty.py83
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/binding/doc/binding.rst17
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/binding/happybirthdaysong.py47
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/binding/main.py52
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/binding/person.py53
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/extended/doc/extended.rst41
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/extended/example.qml8
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/extended/extended.pyproject3
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/extended/main.py95
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/methods/People/Main.qml19
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/methods/People/qmldir3
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/methods/birthdayparty.py47
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/methods/doc/methods.rst15
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/methods/main.py32
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/methods/methods.pyproject4
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/methods/person.py34
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/properties/People/Main.qml16
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/properties/People/qmldir3
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/properties/birthdayparty.py41
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/properties/doc/properties.rst89
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/properties/main.py34
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/properties/person.py34
-rw-r--r--examples/qml/tutorials/extending-qml-advanced/properties/properties.pyproject4
-rw-r--r--examples/qml/tutorials/extending-qml/chapter1-basics/app.qml26
-rw-r--r--examples/qml/tutorials/extending-qml/chapter1-basics/basics.py68
-rw-r--r--examples/qml/tutorials/extending-qml/chapter1-basics/chapter1-basics.pyproject (renamed from examples/declarative/extending/chapter1-basics/chapter1-basics.pyproject)0
-rw-r--r--examples/qml/tutorials/extending-qml/chapter1-basics/doc/chapter1-basics.rst107
-rw-r--r--examples/qml/tutorials/extending-qml/chapter2-methods/app.qml32
-rw-r--r--examples/qml/tutorials/extending-qml/chapter2-methods/chapter2-methods.pyproject (renamed from examples/declarative/extending/chapter2-methods/chapter2-methods.pyproject)0
-rw-r--r--examples/qml/tutorials/extending-qml/chapter2-methods/doc/chapter2-methods.rst36
-rw-r--r--examples/qml/tutorials/extending-qml/chapter2-methods/methods.py75
-rw-r--r--examples/qml/tutorials/extending-qml/chapter3-bindings/app.qml40
-rw-r--r--examples/qml/tutorials/extending-qml/chapter3-bindings/bindings.py79
-rw-r--r--examples/qml/tutorials/extending-qml/chapter3-bindings/chapter3-bindings.pyproject (renamed from examples/declarative/extending/chapter3-bindings/chapter3-bindings.pyproject)0
-rw-r--r--examples/qml/tutorials/extending-qml/chapter3-bindings/doc/chapter3-bindings.rst54
-rw-r--r--examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/app.qml22
-rw-r--r--examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject (renamed from examples/declarative/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject)0
-rw-r--r--examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/customPropertyTypes.py83
-rw-r--r--examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/doc/chapter4-customPropertyTypes.rst73
-rw-r--r--examples/qml/tutorials/extending-qml/chapter5-listproperties/app.qml32
-rw-r--r--examples/qml/tutorials/extending-qml/chapter5-listproperties/chapter5-listproperties.pyproject (renamed from examples/declarative/extending/chapter5-listproperties/chapter5-listproperties.pyproject)0
-rw-r--r--examples/qml/tutorials/extending-qml/chapter5-listproperties/doc/chapter5-listproperties.rst46
-rw-r--r--examples/qml/tutorials/extending-qml/chapter5-listproperties/listproperties.py97
-rw-r--r--examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/piechart.py41
-rw-r--r--examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/pieslice.py53
-rw-r--r--examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/plugins.pngbin0 -> 5014 bytes
-rw-r--r--examples/qml/tutorials/extending-qml/chapter6-plugins/app.qml32
-rw-r--r--examples/qml/tutorials/extending-qml/chapter6-plugins/chapter6-plugins.pyproject3
-rw-r--r--examples/qml/tutorials/extending-qml/chapter6-plugins/doc/chapter6-plugins.rst26
-rw-r--r--examples/qml/tutorials/extending-qml/chapter6-plugins/doc/plugins.pngbin0 -> 5014 bytes
-rw-r--r--examples/qml/usingmodel/doc/usingmodel.png (renamed from examples/declarative/usingmodel/doc/usingmodel.png)bin2791 -> 2791 bytes
-rw-r--r--examples/qml/usingmodel/doc/usingmodel.rst11
-rw-r--r--examples/qml/usingmodel/usingmodel.py74
-rw-r--r--examples/qml/usingmodel/usingmodel.pyproject (renamed from examples/declarative/usingmodel/usingmodel.pyproject)0
-rw-r--r--examples/qml/usingmodel/view.qml21
-rw-r--r--examples/quick/models/objectlistmodel/doc/objectlistmodel.pngbin0 -> 1327 bytes
-rw-r--r--examples/quick/models/objectlistmodel/doc/objectlistmodel.rst14
-rw-r--r--examples/quick/models/objectlistmodel/objectlistmodel.py61
-rw-r--r--examples/quick/models/objectlistmodel/objectlistmodel.pyproject3
-rw-r--r--examples/quick/models/objectlistmodel/view.qml15
-rw-r--r--examples/quick/models/stringlistmodel/doc/stringlistmodel.pngbin0 -> 1978 bytes
-rw-r--r--examples/quick/models/stringlistmodel/doc/stringlistmodel.rst11
-rw-r--r--examples/quick/models/stringlistmodel/stringlistmodel.py26
-rw-r--r--examples/quick/models/stringlistmodel/stringlistmodel.pyproject3
-rw-r--r--examples/quick/models/stringlistmodel/view.qml17
-rw-r--r--examples/quick/painteditem/doc/painteditem.rst2
-rw-r--r--examples/quick/painteditem/main.qml47
-rw-r--r--examples/quick/painteditem/painteditem.py63
-rw-r--r--examples/quick/rendercontrol/rendercontrol_opengl/cuberenderer.py183
-rw-r--r--examples/quick/rendercontrol/rendercontrol_opengl/demo.qml161
-rw-r--r--examples/quick/rendercontrol/rendercontrol_opengl/doc/rendercontrol_opengl.rst5
-rw-r--r--examples/quick/rendercontrol/rendercontrol_opengl/main.py20
-rw-r--r--examples/quick/rendercontrol/rendercontrol_opengl/rendercontrol_opengl.pyproject6
-rw-r--r--examples/quick/rendercontrol/rendercontrol_opengl/window_singlethreaded.py272
-rw-r--r--examples/quick/scenegraph/openglunderqml/doc/openglunderqml.rst21
-rw-r--r--examples/quick/scenegraph/openglunderqml/doc/squircle.pngbin0 -> 37963 bytes
-rw-r--r--examples/quick/scenegraph/openglunderqml/main.py27
-rw-r--r--examples/quick/scenegraph/openglunderqml/main.qml39
-rw-r--r--examples/quick/scenegraph/openglunderqml/openglunderqml.pyproject3
-rw-r--r--examples/quick/scenegraph/openglunderqml/squircle.py79
-rw-r--r--examples/quick/scenegraph/openglunderqml/squirclerenderer.py98
-rw-r--r--examples/quick/scenegraph/scenegraph_customgeometry/doc/scenegraph_customgeometry.rst7
-rw-r--r--examples/quick/scenegraph/scenegraph_customgeometry/main.py152
-rw-r--r--examples/quick/scenegraph/scenegraph_customgeometry/main.qml34
-rw-r--r--examples/quick/scenegraph/scenegraph_customgeometry/scenegraph_customgeometry.pyproject3
-rw-r--r--examples/quick/shared/Button.qml50
-rw-r--r--examples/quick/shared/CheckBox.qml59
-rw-r--r--examples/quick/shared/FlickrRssModel.qml45
-rw-r--r--examples/quick/shared/Images.qml14
-rw-r--r--examples/quick/shared/Label.qml9
-rw-r--r--examples/quick/shared/LauncherList.qml205
-rw-r--r--examples/quick/shared/README11
-rw-r--r--examples/quick/shared/SimpleLauncherDelegate.qml96
-rw-r--r--examples/quick/shared/Slider.qml82
-rw-r--r--examples/quick/shared/TabSet.qml69
-rw-r--r--examples/quick/shared/TextField.qml43
-rw-r--r--examples/quick/shared/images/back.pngbin0 -> 1590 bytes
-rw-r--r--examples/quick/shared/images/checkmark.pngbin0 -> 809 bytes
-rw-r--r--examples/quick/shared/images/next.pngbin0 -> 1371 bytes
-rw-r--r--examples/quick/shared/images/qt-logo.pngbin0 -> 13596 bytes
-rw-r--r--examples/quick/shared/images/slider_handle.pngbin0 -> 887 bytes
-rw-r--r--examples/quick/shared/images/tab.pngbin0 -> 309 bytes
-rw-r--r--examples/quick/shared/qmldir11
-rw-r--r--examples/quick/shared/quick_shared.qrc15
-rw-r--r--examples/quick/shared/shared.qrc21
-rw-r--r--examples/quick/shared/shared_rc.py2253
-rw-r--r--examples/quick/window/AllScreens.qml42
-rw-r--r--examples/quick/window/CurrentScreen.qml83
-rw-r--r--examples/quick/window/Splash.qml42
-rw-r--r--examples/quick/window/doc/window.pngbin0 -> 9863 bytes
-rw-r--r--examples/quick/window/doc/window.rst35
-rw-r--r--examples/quick/window/main.py40
-rw-r--r--examples/quick/window/rc_window.py335
-rw-r--r--examples/quick/window/resources/icon.icnsbin0 -> 59662 bytes
-rw-r--r--examples/quick/window/resources/icon.icobin0 -> 11825 bytes
-rw-r--r--examples/quick/window/resources/icon.svg208
-rw-r--r--examples/quick/window/resources/icon64.pngbin0 -> 3004 bytes
-rw-r--r--examples/quick/window/window.pyproject3
-rw-r--r--examples/quick/window/window.qml151
-rw-r--r--examples/quick/window/window.qrc8
-rw-r--r--examples/quick3d/customgeometry/customgeometry.pyproject3
-rw-r--r--examples/quick3d/customgeometry/doc/customgeometry-example.jpgbin0 -> 51016 bytes
-rw-r--r--examples/quick3d/customgeometry/doc/customgeometry.rst17
-rw-r--r--examples/quick3d/customgeometry/examplepoint.py51
-rw-r--r--examples/quick3d/customgeometry/exampletriangle.py188
-rw-r--r--examples/quick3d/customgeometry/main.py29
-rw-r--r--examples/quick3d/customgeometry/main.qml240
-rw-r--r--examples/quick3d/customgeometry/qt_logo_rect.pngbin0 -> 6319 bytes
-rw-r--r--examples/quick3d/customgeometry/resources.qrc6
-rw-r--r--examples/quick3d/customgeometry/resources_rc.py585
-rw-r--r--examples/quick3d/intro/doc/intro.pngbin0 -> 13781 bytes
-rw-r--r--examples/quick3d/intro/doc/intro.rst9
-rw-r--r--examples/quick3d/intro/intro.pyproject3
-rw-r--r--examples/quick3d/intro/main.py24
-rw-r--r--examples/quick3d/intro/main.qml80
-rw-r--r--examples/quick3d/proceduraltexture/ProceduralTextureModule/Main.qml188
-rw-r--r--examples/quick3d/proceduraltexture/ProceduralTextureModule/app.qrc6
-rw-r--r--examples/quick3d/proceduraltexture/ProceduralTextureModule/qmldir2
-rw-r--r--examples/quick3d/proceduraltexture/doc/proceduraltexture-example.webpbin0 -> 5166 bytes
-rw-r--r--examples/quick3d/proceduraltexture/doc/proceduraltexture.rst12
-rw-r--r--examples/quick3d/proceduraltexture/gradienttexture.py105
-rw-r--r--examples/quick3d/proceduraltexture/main.py30
-rw-r--r--examples/quick3d/proceduraltexture/proceduraltexture.pyproject9
-rw-r--r--examples/quickcontrols/contactslist/Contact/ContactDelegate.ui.qml82
-rw-r--r--examples/quickcontrols/contactslist/Contact/ContactDialog.qml45
-rw-r--r--examples/quickcontrols/contactslist/Contact/ContactForm.ui.qml72
-rw-r--r--examples/quickcontrols/contactslist/Contact/ContactList.qml70
-rw-r--r--examples/quickcontrols/contactslist/Contact/ContactView.ui.qml36
-rw-r--r--examples/quickcontrols/contactslist/Contact/SectionDelegate.ui.qml17
-rw-r--r--examples/quickcontrols/contactslist/Contact/qmldir7
-rw-r--r--examples/quickcontrols/contactslist/contactlist.pyproject10
-rw-r--r--examples/quickcontrols/contactslist/contactmodel.py116
-rw-r--r--examples/quickcontrols/contactslist/doc/contactslist.rst15
-rw-r--r--examples/quickcontrols/contactslist/doc/qtquickcontrols-contactlist.pngbin0 -> 23581 bytes
-rw-r--r--examples/quickcontrols/contactslist/main.py28
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/Main.qml185
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/app.qrc15
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons.qrc14
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/app_icon.svg2
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_closed.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_open.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/generic_file.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/globe.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/info_sign.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/light_bulb.svg43
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/qt_logo.svg26
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/read.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/resize.svg6
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/About.qml93
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Colors.qml23
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Editor.qml160
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/FileSystemView.qml156
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenu.qml45
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenuBar.qml177
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/ResizeButton.qml23
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Sidebar.qml138
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/WindowDragHandler.qml16
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qmldir11
-rw-r--r--examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.rst52
-rw-r--r--examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.webpbin0 -> 47416 bytes
-rw-r--r--examples/quickcontrols/filesystemexplorer/editormodels.py116
-rw-r--r--examples/quickcontrols/filesystemexplorer/filesystemexplorer.pyproject29
-rw-r--r--examples/quickcontrols/filesystemexplorer/main.py48
-rw-r--r--examples/quickcontrols/gallery/+Material/ToolBar.qml8
-rw-r--r--examples/quickcontrols/gallery/ToolBar.qml6
-rw-r--r--examples/quickcontrols/gallery/doc/gallery.png (renamed from examples/quickcontrols2/gallery/doc/gallery.png)bin23828 -> 23828 bytes
-rw-r--r--examples/quickcontrols/gallery/doc/gallery.rst9
-rw-r--r--examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-drawer.png (renamed from examples/quickcontrols2/gallery/doc/images/qtquickcontrols2-gallery-drawer.png)bin15428 -> 15428 bytes
-rw-r--r--examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-menu.png (renamed from examples/quickcontrols2/gallery/doc/images/qtquickcontrols2-gallery-menu.png)bin15953 -> 15953 bytes
-rw-r--r--examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-welcome.png (renamed from examples/quickcontrols2/gallery/doc/images/qtquickcontrols2-gallery-welcome.png)bin18513 -> 18513 bytes
-rw-r--r--examples/quickcontrols/gallery/gallery.py52
-rw-r--r--examples/quickcontrols/gallery/gallery.pyproject36
-rw-r--r--examples/quickcontrols/gallery/gallery.qml318
-rw-r--r--examples/quickcontrols/gallery/gallery.qrc (renamed from examples/quickcontrols2/gallery/gallery.qrc)0
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20/back.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20/back.png)bin146 -> 146 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20/drawer.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20/drawer.png)bin123 -> 123 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20/menu.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20/menu.png)bin123 -> 123 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@2/back.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20@2/back.png)bin184 -> 184 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@2/drawer.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20@2/drawer.png)bin126 -> 126 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@2/menu.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20@2/menu.png)bin158 -> 158 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@3/back.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20@3/back.png)bin227 -> 227 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@3/drawer.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20@3/drawer.png)bin130 -> 130 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@3/menu.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20@3/menu.png)bin193 -> 193 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@4/back.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20@4/back.png)bin246 -> 246 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@4/drawer.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20@4/drawer.png)bin131 -> 131 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@4/menu.png (renamed from examples/quickcontrols2/gallery/icons/gallery/20x20@4/menu.png)bin223 -> 223 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/index.theme (renamed from examples/quickcontrols2/gallery/icons/gallery/index.theme)0
-rw-r--r--examples/quickcontrols/gallery/images/arrow.png (renamed from examples/quickcontrols2/gallery/images/arrow.png)bin319 -> 319 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrow@2x.png (renamed from examples/quickcontrols2/gallery/images/arrow@2x.png)bin476 -> 476 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrow@3x.png (renamed from examples/quickcontrols2/gallery/images/arrow@3x.png)bin611 -> 611 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrow@4x.png (renamed from examples/quickcontrols2/gallery/images/arrow@4x.png)bin758 -> 758 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrows.png (renamed from examples/quickcontrols2/gallery/images/arrows.png)bin458 -> 458 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrows@2x.png (renamed from examples/quickcontrols2/gallery/images/arrows@2x.png)bin699 -> 699 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrows@3x.png (renamed from examples/quickcontrols2/gallery/images/arrows@3x.png)bin942 -> 942 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrows@4x.png (renamed from examples/quickcontrols2/gallery/images/arrows@4x.png)bin1211 -> 1211 bytes
-rw-r--r--examples/quickcontrols/gallery/images/qt-logo.pngbin0 -> 2849 bytes
-rw-r--r--examples/quickcontrols/gallery/images/qt-logo@2x.pngbin0 -> 4936 bytes
-rw-r--r--examples/quickcontrols/gallery/images/qt-logo@3x.pngbin0 -> 7254 bytes
-rw-r--r--examples/quickcontrols/gallery/images/qt-logo@4x.pngbin0 -> 9505 bytes
-rw-r--r--examples/quickcontrols/gallery/pages/BusyIndicatorPage.qml28
-rw-r--r--examples/quickcontrols/gallery/pages/ButtonPage.qml44
-rw-r--r--examples/quickcontrols/gallery/pages/CheckBoxPage.qml40
-rw-r--r--examples/quickcontrols/gallery/pages/ComboBoxPage.qml51
-rw-r--r--examples/quickcontrols/gallery/pages/DelayButtonPage.qml27
-rw-r--r--examples/quickcontrols/gallery/pages/DelegatePage.qml201
-rw-r--r--examples/quickcontrols/gallery/pages/DialPage.qml27
-rw-r--r--examples/quickcontrols/gallery/pages/DialogPage.qml179
-rw-r--r--examples/quickcontrols/gallery/pages/FramePage.qml47
-rw-r--r--examples/quickcontrols/gallery/pages/GroupBoxPage.qml48
-rw-r--r--examples/quickcontrols/gallery/pages/PageIndicatorPage.qml27
-rw-r--r--examples/quickcontrols/gallery/pages/ProgressBarPage.qml33
-rw-r--r--examples/quickcontrols/gallery/pages/RadioButtonPage.qml39
-rw-r--r--examples/quickcontrols/gallery/pages/RangeSliderPage.qml35
-rw-r--r--examples/quickcontrols/gallery/pages/ScrollBarPage.qml40
-rw-r--r--examples/quickcontrols/gallery/pages/ScrollIndicatorPage.qml40
-rw-r--r--examples/quickcontrols/gallery/pages/ScrollablePage.qml24
-rw-r--r--examples/quickcontrols/gallery/pages/SliderPage.qml33
-rw-r--r--examples/quickcontrols/gallery/pages/SpinBoxPage.qml29
-rw-r--r--examples/quickcontrols/gallery/pages/StackViewPage.qml58
-rw-r--r--examples/quickcontrols/gallery/pages/SwipeViewPage.qml49
-rw-r--r--examples/quickcontrols/gallery/pages/SwitchPage.qml39
-rw-r--r--examples/quickcontrols/gallery/pages/TabBarPage.qml57
-rw-r--r--examples/quickcontrols/gallery/pages/TextAreaPage.qml29
-rw-r--r--examples/quickcontrols/gallery/pages/TextFieldPage.qml27
-rw-r--r--examples/quickcontrols/gallery/pages/ToolTipPage.qml30
-rw-r--r--examples/quickcontrols/gallery/pages/TumblerPage.qml26
-rw-r--r--examples/quickcontrols/gallery/qmldir (renamed from examples/quickcontrols2/gallery/qmldir)0
-rw-r--r--examples/quickcontrols/gallery/qtquickcontrols2.conf (renamed from examples/quickcontrols2/gallery/qtquickcontrols2.conf)0
-rw-r--r--examples/quickcontrols/gallery/rc_gallery.py4410
-rw-r--r--examples/quickcontrols2/gallery/+Material/ToolBar.qml55
-rw-r--r--examples/quickcontrols2/gallery/ToolBar.qml53
-rw-r--r--examples/quickcontrols2/gallery/doc/gallery.rst7
-rw-r--r--examples/quickcontrols2/gallery/gallery.py97
-rw-r--r--examples/quickcontrols2/gallery/gallery.pyproject37
-rw-r--r--examples/quickcontrols2/gallery/gallery.qml340
-rw-r--r--examples/quickcontrols2/gallery/images/qt-logo.pngbin1301 -> 0 bytes
-rw-r--r--examples/quickcontrols2/gallery/images/qt-logo@2x.pngbin2611 -> 0 bytes
-rw-r--r--examples/quickcontrols2/gallery/images/qt-logo@3x.pngbin4155 -> 0 bytes
-rw-r--r--examples/quickcontrols2/gallery/images/qt-logo@4x.pngbin5916 -> 0 bytes
-rw-r--r--examples/quickcontrols2/gallery/pages/BusyIndicatorPage.qml73
-rw-r--r--examples/quickcontrols2/gallery/pages/ButtonPage.qml91
-rw-r--r--examples/quickcontrols2/gallery/pages/CheckBoxPage.qml87
-rw-r--r--examples/quickcontrols2/gallery/pages/ComboBoxPage.qml97
-rw-r--r--examples/quickcontrols2/gallery/pages/DelayButtonPage.qml74
-rw-r--r--examples/quickcontrols2/gallery/pages/DelegatePage.qml217
-rw-r--r--examples/quickcontrols2/gallery/pages/DialPage.qml74
-rw-r--r--examples/quickcontrols2/gallery/pages/DialogPage.qml226
-rw-r--r--examples/quickcontrols2/gallery/pages/FramePage.qml94
-rw-r--r--examples/quickcontrols2/gallery/pages/GroupBoxPage.qml95
-rw-r--r--examples/quickcontrols2/gallery/pages/PageIndicatorPage.qml74
-rw-r--r--examples/quickcontrols2/gallery/pages/ProgressBarPage.qml80
-rw-r--r--examples/quickcontrols2/gallery/pages/RadioButtonPage.qml86
-rw-r--r--examples/quickcontrols2/gallery/pages/RangeSliderPage.qml82
-rw-r--r--examples/quickcontrols2/gallery/pages/ScrollBarPage.qml87
-rw-r--r--examples/quickcontrols2/gallery/pages/ScrollIndicatorPage.qml87
-rw-r--r--examples/quickcontrols2/gallery/pages/ScrollablePage.qml71
-rw-r--r--examples/quickcontrols2/gallery/pages/SliderPage.qml80
-rw-r--r--examples/quickcontrols2/gallery/pages/SpinBoxPage.qml76
-rw-r--r--examples/quickcontrols2/gallery/pages/StackViewPage.qml96
-rw-r--r--examples/quickcontrols2/gallery/pages/SwipeViewPage.qml96
-rw-r--r--examples/quickcontrols2/gallery/pages/SwitchPage.qml86
-rw-r--r--examples/quickcontrols2/gallery/pages/TabBarPage.qml104
-rw-r--r--examples/quickcontrols2/gallery/pages/TextAreaPage.qml76
-rw-r--r--examples/quickcontrols2/gallery/pages/TextFieldPage.qml74
-rw-r--r--examples/quickcontrols2/gallery/pages/ToolTipPage.qml77
-rw-r--r--examples/quickcontrols2/gallery/pages/TumblerPage.qml73
-rw-r--r--examples/quickcontrols2/gallery/rc_gallery.py7854
-rw-r--r--examples/remoteobjects/modelview/modelviewclient.py43
-rw-r--r--examples/remoteobjects/modelview/modelviewserver.py43
-rw-r--r--examples/samplebinding/CMakeLists.txt35
-rw-r--r--examples/samplebinding/README.md245
-rw-r--r--examples/samplebinding/bindings.h51
-rw-r--r--examples/samplebinding/bindings.xml54
-rw-r--r--examples/samplebinding/doc/bindings.h.rstinc2
-rw-r--r--examples/samplebinding/doc/bindings.xml.rstinc31
-rw-r--r--examples/samplebinding/doc/samplebinding.pyproject11
-rw-r--r--examples/samplebinding/doc/samplebinding.rst288
-rw-r--r--examples/samplebinding/icecream.cpp63
-rw-r--r--examples/samplebinding/icecream.h61
-rw-r--r--examples/samplebinding/macros.h51
-rw-r--r--examples/samplebinding/main.py42
-rw-r--r--examples/samplebinding/truck.cpp88
-rw-r--r--examples/samplebinding/truck.h70
-rw-r--r--examples/scriptableapplication/CMakeLists.txt38
-rw-r--r--examples/scriptableapplication/README.md165
-rw-r--r--examples/scriptableapplication/doc/scriptableapplication.pyproject9
-rw-r--r--examples/scriptableapplication/doc/scriptableapplication.rst195
-rw-r--r--examples/scriptableapplication/main.cpp51
-rw-r--r--examples/scriptableapplication/mainwindow.cpp112
-rw-r--r--examples/scriptableapplication/mainwindow.h57
-rw-r--r--examples/scriptableapplication/pythonutils.cpp63
-rw-r--r--examples/scriptableapplication/pythonutils.h55
-rw-r--r--examples/scriptableapplication/scriptableapplication.xml51
-rw-r--r--examples/scriptableapplication/wrappedclasses.h51
-rw-r--r--examples/serialbus/can/bitratebox.py55
-rw-r--r--examples/serialbus/can/can.pyproject10
-rw-r--r--examples/serialbus/can/can.qrc8
-rw-r--r--examples/serialbus/can/canbusdeviceinfobox.py49
-rw-r--r--examples/serialbus/can/canbusdeviceinfobox.ui86
-rw-r--r--examples/serialbus/can/canbusdeviceinfodialog.py16
-rw-r--r--examples/serialbus/can/canbusdeviceinfodialog.ui66
-rw-r--r--examples/serialbus/can/connectdialog.py235
-rw-r--r--examples/serialbus/can/connectdialog.ui278
-rw-r--r--examples/serialbus/can/doc/can.rst6
-rw-r--r--examples/serialbus/can/images/application-exit.pngbin0 -> 11200 bytes
-rw-r--r--examples/serialbus/can/images/clear.pngbin0 -> 12543 bytes
-rw-r--r--examples/serialbus/can/images/connect.pngbin0 -> 15374 bytes
-rw-r--r--examples/serialbus/can/images/disconnect.pngbin0 -> 15092 bytes
-rw-r--r--examples/serialbus/can/main.py18
-rw-r--r--examples/serialbus/can/mainwindow.py238
-rw-r--r--examples/serialbus/can/mainwindow.ui207
-rw-r--r--examples/serialbus/can/rc_can.py3453
-rw-r--r--examples/serialbus/can/receivedframesmodel.py142
-rw-r--r--examples/serialbus/can/receivedframesview.py54
-rw-r--r--examples/serialbus/can/sendframebox.py195
-rw-r--r--examples/serialbus/can/sendframebox.ui211
-rw-r--r--examples/serialbus/can/ui_canbusdeviceinfobox.py88
-rw-r--r--examples/serialbus/can/ui_canbusdeviceinfodialog.py64
-rw-r--r--examples/serialbus/can/ui_connectdialog.py252
-rw-r--r--examples/serialbus/can/ui_mainwindow.py172
-rw-r--r--examples/serialbus/can/ui_sendframebox.py188
-rw-r--r--examples/serialbus/modbus/modbusclient/doc/modbusclient.rst9
-rw-r--r--examples/serialbus/modbus/modbusclient/images/application-exit.pngbin0 -> 11200 bytes
-rw-r--r--examples/serialbus/modbus/modbusclient/images/connect.pngbin0 -> 15374 bytes
-rw-r--r--examples/serialbus/modbus/modbusclient/images/disconnect.pngbin0 -> 15092 bytes
-rw-r--r--examples/serialbus/modbus/modbusclient/images/settings.pngbin0 -> 16039 bytes
-rw-r--r--examples/serialbus/modbus/modbusclient/main.py26
-rw-r--r--examples/serialbus/modbus/modbusclient/mainwindow.py331
-rw-r--r--examples/serialbus/modbus/modbusclient/mainwindow.ui520
-rw-r--r--examples/serialbus/modbus/modbusclient/modbusclient.pyproject5
-rw-r--r--examples/serialbus/modbus/modbusclient/modbusclient.qrc8
-rw-r--r--examples/serialbus/modbus/modbusclient/rc_modbusclient.py3672
-rw-r--r--examples/serialbus/modbus/modbusclient/settingsdialog.py52
-rw-r--r--examples/serialbus/modbus/modbusclient/settingsdialog.ui237
-rw-r--r--examples/serialbus/modbus/modbusclient/ui_mainwindow.py377
-rw-r--r--examples/serialbus/modbus/modbusclient/ui_settingsdialog.py173
-rw-r--r--examples/serialbus/modbus/modbusclient/writeregistermodel.py118
-rw-r--r--examples/serialport/terminal/console.py49
-rw-r--r--examples/serialport/terminal/doc/terminal.rst9
-rw-r--r--examples/serialport/terminal/images/application-exit.pngbin0 -> 11200 bytes
-rw-r--r--examples/serialport/terminal/images/clear.pngbin0 -> 12543 bytes
-rw-r--r--examples/serialport/terminal/images/connect.pngbin0 -> 15374 bytes
-rw-r--r--examples/serialport/terminal/images/disconnect.pngbin0 -> 15092 bytes
-rw-r--r--examples/serialport/terminal/images/settings.pngbin0 -> 16039 bytes
-rw-r--r--examples/serialport/terminal/main.py17
-rw-r--r--examples/serialport/terminal/mainwindow.py108
-rw-r--r--examples/serialport/terminal/mainwindow.ui162
-rw-r--r--examples/serialport/terminal/rc_terminal.py4464
-rw-r--r--examples/serialport/terminal/settingsdialog.py180
-rw-r--r--examples/serialport/terminal/settingsdialog.ui177
-rw-r--r--examples/serialport/terminal/terminal.pyproject4
-rw-r--r--examples/serialport/terminal/terminal.qrc9
-rw-r--r--examples/serialport/terminal/ui_mainwindow.py149
-rw-r--r--examples/serialport/terminal/ui_settingsdialog.py181
-rw-r--r--examples/spatialaudio/audiopanning/audiopanning.pyproject3
-rw-r--r--examples/spatialaudio/audiopanning/doc/audiopanning.rst15
-rw-r--r--examples/spatialaudio/audiopanning/main.py193
-rw-r--r--examples/speech/hello_speak/doc/hello_speak.rst16
-rw-r--r--examples/speech/hello_speak/doc/hello_speak.webpbin0 -> 25432 bytes
-rw-r--r--examples/speech/hello_speak/hello_speak.pyproject5
-rw-r--r--examples/speech/hello_speak/main.py20
-rw-r--r--examples/speech/hello_speak/mainwindow.py134
-rw-r--r--examples/speech/hello_speak/mainwindow.ui267
-rw-r--r--examples/speech/hello_speak/ui_mainwindow.py211
-rw-r--r--examples/sql/books/bookdelegate.py56
-rw-r--r--examples/sql/books/books.qrc3
-rw-r--r--examples/sql/books/bookwindow.py57
-rw-r--r--examples/sql/books/createdb.py41
-rw-r--r--examples/sql/books/images/star-filled.svg1
-rw-r--r--examples/sql/books/images/star.pngbin782 -> 0 bytes
-rw-r--r--examples/sql/books/images/star.svg1
-rw-r--r--examples/sql/books/main.py43
-rw-r--r--examples/sql/books/rc_books.py142
-rw-r--r--examples/sql/books/ui_bookwindow.py22
-rw-r--r--examples/sql/relationaltablemodel/connection.py18
-rw-r--r--examples/sql/relationaltablemodel/relationaltablemodel.py77
-rw-r--r--examples/statemachine/moveblocks/doc/moveblocks.pngbin0 -> 4532 bytes
-rw-r--r--examples/statemachine/moveblocks/doc/moveblocks.rst10
-rw-r--r--examples/statemachine/moveblocks/moveblocks.py222
-rw-r--r--examples/statemachine/moveblocks/moveblocks.pyproject3
-rw-r--r--examples/statemachine/ping_pong/ping_pong.py70
-rw-r--r--examples/statemachine/ping_pong/ping_pong.pyproject3
-rw-r--r--examples/statemachine/rogue/rogue.py179
-rw-r--r--examples/statemachine/rogue/rogue.pyproject (renamed from examples/widgets/state-machine/rogue/rogue.pyproject)0
-rw-r--r--examples/statemachine/trafficlight/doc/trafficlight.pngbin0 -> 4786 bytes
-rw-r--r--examples/statemachine/trafficlight/doc/trafficlight.rst (renamed from examples/widgets/state-machine/trafficlight/doc/trafficlight.rst)0
-rw-r--r--examples/statemachine/trafficlight/trafficlight.py117
-rw-r--r--examples/statemachine/trafficlight/trafficlight.pyproject (renamed from examples/widgets/state-machine/trafficlight/trafficlight.pyproject)0
-rw-r--r--examples/texttospeech/hello_speak/hello_speak.py109
-rw-r--r--examples/texttospeech/hello_speak/hello_speak.pyproject3
-rw-r--r--examples/uitools/uiloader/uiloader.py45
-rw-r--r--examples/utils/pyside_config.py63
-rw-r--r--examples/webchannel/standalone/core.py43
-rw-r--r--examples/webchannel/standalone/dialog.py43
-rw-r--r--examples/webchannel/standalone/main.py43
-rw-r--r--examples/webchannel/standalone/ui_dialog.py19
-rw-r--r--examples/webchannel/standalone/websocketclientwrapper.py43
-rw-r--r--examples/webchannel/standalone/websockettransport.py43
-rw-r--r--examples/webenginequick/nanobrowser/ApplicationRoot.qml40
-rw-r--r--examples/webenginequick/nanobrowser/BrowserDialog.qml27
-rw-r--r--examples/webenginequick/nanobrowser/BrowserWindow.qml817
-rw-r--r--examples/webenginequick/nanobrowser/DownloadView.qml127
-rw-r--r--examples/webenginequick/nanobrowser/FindBar.qml95
-rw-r--r--examples/webenginequick/nanobrowser/FullScreenNotification.qml62
-rw-r--r--examples/webenginequick/nanobrowser/browser.qml53
-rw-r--r--examples/webenginequick/nanobrowser/icons/3rdparty/COPYING1
-rw-r--r--examples/webenginequick/nanobrowser/icons/3rdparty/go-next.pngbin0 -> 930 bytes
-rw-r--r--examples/webenginequick/nanobrowser/icons/3rdparty/go-previous.pngbin0 -> 955 bytes
-rw-r--r--examples/webenginequick/nanobrowser/icons/3rdparty/process-stop.pngbin0 -> 1272 bytes
-rw-r--r--examples/webenginequick/nanobrowser/icons/3rdparty/view-refresh.pngbin0 -> 1364 bytes
-rw-r--r--examples/webenginequick/nanobrowser/nanobrowser.pyproject5
-rw-r--r--examples/webenginequick/nanobrowser/quicknanobrowser.py113
-rw-r--r--examples/webenginequick/nanobrowser/rc_resources.py348
-rw-r--r--examples/webenginequick/nanobrowser/resources.qrc8
-rw-r--r--examples/webenginewidgets/markdowneditor/document.py24
-rw-r--r--examples/webenginewidgets/markdowneditor/main.py20
-rw-r--r--examples/webenginewidgets/markdowneditor/mainwindow.py137
-rw-r--r--examples/webenginewidgets/markdowneditor/mainwindow.ui107
-rw-r--r--examples/webenginewidgets/markdowneditor/markdowneditor.pyproject8
-rw-r--r--examples/webenginewidgets/markdowneditor/previewpage.py18
-rw-r--r--examples/webenginewidgets/markdowneditor/rc_markdowneditor.py852
-rw-r--r--examples/webenginewidgets/markdowneditor/resources/3rdparty/MARKDOWN-LICENSE.txt16
-rw-r--r--examples/webenginewidgets/markdowneditor/resources/3rdparty/MARKED-LICENSE.txt19
-rw-r--r--examples/webenginewidgets/markdowneditor/resources/3rdparty/markdown.css260
-rw-r--r--examples/webenginewidgets/markdowneditor/resources/3rdparty/marked.js1514
-rw-r--r--examples/webenginewidgets/markdowneditor/resources/3rdparty/qt_attribution.json35
-rw-r--r--examples/webenginewidgets/markdowneditor/resources/default.md12
-rw-r--r--examples/webenginewidgets/markdowneditor/resources/index.html32
-rw-r--r--examples/webenginewidgets/markdowneditor/resources/markdowneditor.qrc8
-rw-r--r--examples/webenginewidgets/markdowneditor/ui_mainwindow.py115
-rw-r--r--examples/webenginewidgets/notifications/doc/notifications.pngbin0 -> 21374 bytes
-rw-r--r--examples/webenginewidgets/notifications/doc/notifications.rst8
-rw-r--r--examples/webenginewidgets/notifications/main.py57
-rw-r--r--examples/webenginewidgets/notifications/notificationpopup.py68
-rw-r--r--examples/webenginewidgets/notifications/notifications.pyproject3
-rw-r--r--examples/webenginewidgets/notifications/resources/icon.pngbin0 -> 2252 bytes
-rw-r--r--examples/webenginewidgets/notifications/resources/index.html91
-rw-r--r--examples/webenginewidgets/simplebrowser/browser.py69
-rw-r--r--examples/webenginewidgets/simplebrowser/browserwindow.py500
-rw-r--r--examples/webenginewidgets/simplebrowser/certificateerrordialog.ui133
-rw-r--r--examples/webenginewidgets/simplebrowser/data/3rdparty/COPYING1
-rw-r--r--examples/webenginewidgets/simplebrowser/data/3rdparty/dialog-error.pngbin0 -> 1645 bytes
-rw-r--r--examples/webenginewidgets/simplebrowser/data/3rdparty/edit-clear.pngbin0 -> 1682 bytes
-rw-r--r--examples/webenginewidgets/simplebrowser/data/3rdparty/go-bottom.pngbin0 -> 1263 bytes
-rw-r--r--examples/webenginewidgets/simplebrowser/data/3rdparty/go-next.pngbin0 -> 1219 bytes
-rw-r--r--examples/webenginewidgets/simplebrowser/data/3rdparty/go-previous.pngbin0 -> 1200 bytes
-rw-r--r--examples/webenginewidgets/simplebrowser/data/3rdparty/process-stop.pngbin0 -> 1927 bytes
-rw-r--r--examples/webenginewidgets/simplebrowser/data/3rdparty/qt_attribution.json24
-rw-r--r--examples/webenginewidgets/simplebrowser/data/3rdparty/text-html.pngbin0 -> 1759 bytes
-rw-r--r--examples/webenginewidgets/simplebrowser/data/3rdparty/view-refresh.pngbin0 -> 2024 bytes
-rw-r--r--examples/webenginewidgets/simplebrowser/data/AppLogoColor.pngbin0 -> 6113 bytes
-rw-r--r--examples/webenginewidgets/simplebrowser/data/ninja.pngbin0 -> 1671 bytes
-rw-r--r--examples/webenginewidgets/simplebrowser/data/rc_simplebrowser.py1391
-rw-r--r--examples/webenginewidgets/simplebrowser/data/simplebrowser.qrc16
-rw-r--r--examples/webenginewidgets/simplebrowser/doc/simplebrowser.rst179
-rw-r--r--examples/webenginewidgets/simplebrowser/doc/simplebrowser.webpbin0 -> 67542 bytes
-rw-r--r--examples/webenginewidgets/simplebrowser/downloadmanagerwidget.py51
-rw-r--r--examples/webenginewidgets/simplebrowser/downloadmanagerwidget.ui104
-rw-r--r--examples/webenginewidgets/simplebrowser/downloadwidget.py109
-rw-r--r--examples/webenginewidgets/simplebrowser/downloadwidget.ui78
-rw-r--r--examples/webenginewidgets/simplebrowser/main.py45
-rw-r--r--examples/webenginewidgets/simplebrowser/passworddialog.ui121
-rw-r--r--examples/webenginewidgets/simplebrowser/simplebrowser.py103
-rw-r--r--examples/webenginewidgets/simplebrowser/simplebrowser.pyproject6
-rw-r--r--examples/webenginewidgets/simplebrowser/tabwidget.py241
-rw-r--r--examples/webenginewidgets/simplebrowser/ui_certificateerrordialog.py87
-rw-r--r--examples/webenginewidgets/simplebrowser/ui_downloadmanagerwidget.py76
-rw-r--r--examples/webenginewidgets/simplebrowser/ui_downloadwidget.py86
-rw-r--r--examples/webenginewidgets/simplebrowser/ui_passworddialog.py96
-rw-r--r--examples/webenginewidgets/simplebrowser/webpage.py29
-rw-r--r--examples/webenginewidgets/simplebrowser/webpopupwindow.py53
-rw-r--r--examples/webenginewidgets/simplebrowser/webview.py294
-rw-r--r--examples/webenginewidgets/tabbedbrowser/bookmarkwidget.py276
-rw-r--r--examples/webenginewidgets/tabbedbrowser/browsertabwidget.py244
-rw-r--r--examples/webenginewidgets/tabbedbrowser/doc/tabbedbrowser.pngbin37147 -> 0 bytes
-rw-r--r--examples/webenginewidgets/tabbedbrowser/doc/tabbedbrowser.rst58
-rw-r--r--examples/webenginewidgets/tabbedbrowser/downloadwidget.py148
-rw-r--r--examples/webenginewidgets/tabbedbrowser/findtoolbar.py99
-rw-r--r--examples/webenginewidgets/tabbedbrowser/historywindow.py103
-rw-r--r--examples/webenginewidgets/tabbedbrowser/main.py395
-rw-r--r--examples/webenginewidgets/tabbedbrowser/tabbedbrowser.pyproject5
-rw-r--r--examples/webenginewidgets/tabbedbrowser/webengineview.py91
-rw-r--r--examples/webenginewidgets/widgetsnanobrowser/doc/widgetsnanobrowser.png (renamed from examples/webenginewidgets/simplebrowser/doc/simplebrowser.png)bin51615 -> 51615 bytes
-rw-r--r--examples/webenginewidgets/widgetsnanobrowser/doc/widgetsnanobrowser.rst8
-rw-r--r--examples/webenginewidgets/widgetsnanobrowser/widgetsnanobrowser.py70
-rw-r--r--examples/webenginewidgets/widgetsnanobrowser/widgetsnanobrowser.pyproject3
-rw-r--r--examples/widgetbinding/CMakeLists.txt37
-rw-r--r--examples/widgetbinding/README.md76
-rw-r--r--examples/widgetbinding/bindings.h51
-rw-r--r--examples/widgetbinding/bindings.xml51
-rw-r--r--examples/widgetbinding/dialog.py54
-rw-r--r--examples/widgetbinding/doc/widgetbinding.md74
-rw-r--r--examples/widgetbinding/doc/widgetbinding.pyproject10
-rw-r--r--examples/widgetbinding/macros.h51
-rw-r--r--examples/widgetbinding/main.py51
-rw-r--r--examples/widgetbinding/registerwigglywidget.py51
-rw-r--r--examples/widgetbinding/wigglywidget.cpp63
-rw-r--r--examples/widgetbinding/wigglywidget.h51
-rw-r--r--examples/widgetbinding/wigglywidget.py69
-rw-r--r--examples/widgets/animation/animatedtiles/animatedtiles.py75
-rw-r--r--examples/widgets/animation/animatedtiles/animatedtiles.pyproject3
-rw-r--r--examples/widgets/animation/animatedtiles/animatedtiles_rc.py2766
-rw-r--r--examples/widgets/animation/appchooser/appchooser.py48
-rw-r--r--examples/widgets/animation/appchooser/appchooser.pyproject2
-rw-r--r--examples/widgets/animation/appchooser/appchooser_rc.py1068
-rw-r--r--examples/widgets/animation/easing/easing.py168
-rw-r--r--examples/widgets/animation/easing/form.ui105
-rw-r--r--examples/widgets/animation/easing/images/qt-logo.pngbin5149 -> 0 bytes
-rw-r--r--examples/widgets/animation/easing/ui_form.py80
-rw-r--r--examples/widgets/animation/states/states.py48
-rw-r--r--examples/widgets/animation/states/states.pyproject2
-rw-r--r--examples/widgets/animation/states/states_rc.py45
-rw-r--r--examples/widgets/codeeditor/codeeditor.py141
-rw-r--r--examples/widgets/codeeditor/codeeditor.pyproject3
-rw-r--r--examples/widgets/codeeditor/doc/codeeditor.pngbin7759 -> 0 bytes
-rw-r--r--examples/widgets/codeeditor/doc/codeeditor.rst9
-rw-r--r--examples/widgets/codeeditor/main.py52
-rw-r--r--examples/widgets/desktop/screenshot/doc/screenshot.pngbin0 -> 13890 bytes
-rw-r--r--examples/widgets/desktop/screenshot/doc/screenshot.rst8
-rw-r--r--examples/widgets/desktop/screenshot/screenshot.py156
-rw-r--r--examples/widgets/desktop/screenshot/screenshot.pyproject3
-rw-r--r--examples/widgets/desktop/systray/images/bad.png (renamed from examples/widgets/systray/images/bad.png)bin2496 -> 2496 bytes
-rw-r--r--examples/widgets/desktop/systray/images/heart.png (renamed from examples/widgets/systray/images/heart.png)bin25780 -> 25780 bytes
-rw-r--r--examples/widgets/desktop/systray/images/trash.png (renamed from examples/widgets/systray/images/trash.png)bin12128 -> 12128 bytes
-rw-r--r--examples/widgets/desktop/systray/main.py21
-rw-r--r--examples/widgets/desktop/systray/rc_systray.py2581
-rw-r--r--examples/widgets/desktop/systray/systray.pyproject (renamed from examples/widgets/systray/systray.pyproject)0
-rw-r--r--examples/widgets/desktop/systray/systray.qrc (renamed from examples/widgets/systray/systray.qrc)0
-rw-r--r--examples/widgets/desktop/systray/window.py236
-rw-r--r--examples/widgets/dialogs/classwizard/classwizard.py65
-rw-r--r--examples/widgets/dialogs/classwizard/classwizard.pyproject3
-rw-r--r--examples/widgets/dialogs/classwizard/classwizard_rc.py8
-rw-r--r--examples/widgets/dialogs/classwizard/listchooser.py52
-rw-r--r--examples/widgets/dialogs/extension/extension.py44
-rw-r--r--examples/widgets/dialogs/findfiles/findfiles.py222
-rw-r--r--examples/widgets/dialogs/findfiles/findfiles.pyproject3
-rw-r--r--examples/widgets/dialogs/licensewizard/doc/licensewizard.pngbin0 -> 47064 bytes
-rw-r--r--examples/widgets/dialogs/licensewizard/doc/licensewizard.rst9
-rw-r--r--examples/widgets/dialogs/licensewizard/images/logo.pngbin0 -> 1810 bytes
-rw-r--r--examples/widgets/dialogs/licensewizard/images/watermark.pngbin0 -> 34998 bytes
-rw-r--r--examples/widgets/dialogs/licensewizard/licensewizard.py298
-rw-r--r--examples/widgets/dialogs/licensewizard/licensewizard.pyproject3
-rw-r--r--examples/widgets/dialogs/licensewizard/main.py15
-rw-r--r--examples/widgets/dialogs/standarddialogs/standarddialogs.py186
-rw-r--r--examples/widgets/dialogs/tabdialog/doc/tabdialog.pngbin0 -> 13222 bytes
-rw-r--r--examples/widgets/dialogs/tabdialog/doc/tabdialog.rst13
-rw-r--r--examples/widgets/dialogs/tabdialog/tabdialog.py178
-rw-r--r--examples/widgets/dialogs/tabdialog/tabdialog.pyproject3
-rw-r--r--examples/widgets/dialogs/trivialwizard/trivialwizard.py48
-rw-r--r--examples/widgets/draganddrop/draggableicons/doc/draggableicons.pngbin0 -> 21766 bytes
-rw-r--r--examples/widgets/draganddrop/draggableicons/doc/draggableicons.rst9
-rw-r--r--examples/widgets/draganddrop/draggableicons/draggableicons.py128
-rw-r--r--examples/widgets/draganddrop/draggableicons/draggableicons.qrc7
-rw-r--r--examples/widgets/draganddrop/draggableicons/images/boat.pngbin0 -> 2772 bytes
-rw-r--r--examples/widgets/draganddrop/draggableicons/images/car.pngbin0 -> 2963 bytes
-rw-r--r--examples/widgets/draganddrop/draggableicons/images/house.pngbin0 -> 3292 bytes
-rw-r--r--examples/widgets/draganddrop/draggabletext/draggabletext.py49
-rw-r--r--examples/widgets/draganddrop/draggabletext/draggabletext.pyproject3
-rw-r--r--examples/widgets/draganddrop/draggabletext/draggabletext_rc.py4
-rw-r--r--examples/widgets/draganddrop/dropsite/doc/dropsite.rst8
-rw-r--r--examples/widgets/draganddrop/dropsite/droparea.py67
-rw-r--r--examples/widgets/draganddrop/dropsite/dropsite.pyproject3
-rw-r--r--examples/widgets/draganddrop/dropsite/dropsitewindow.py115
-rw-r--r--examples/widgets/draganddrop/dropsite/main.py15
-rw-r--r--examples/widgets/effects/blurpicker/blureffect.py33
-rw-r--r--examples/widgets/effects/blurpicker/blurpicker.py105
-rw-r--r--examples/widgets/effects/blurpicker/blurpicker.pyproject17
-rw-r--r--examples/widgets/effects/blurpicker/doc/blurpicker.pngbin0 -> 48358 bytes
-rw-r--r--examples/widgets/effects/blurpicker/doc/blurpicker.rst9
-rw-r--r--examples/widgets/effects/blurpicker/images/README.txt5
-rw-r--r--examples/widgets/effects/blurpicker/images/accessories-calculator.pngbin0 -> 3760 bytes
-rw-r--r--examples/widgets/effects/blurpicker/images/accessories-text-editor.pngbin0 -> 4746 bytes
-rw-r--r--examples/widgets/effects/blurpicker/images/background.jpgbin0 -> 16259 bytes
-rw-r--r--examples/widgets/effects/blurpicker/images/help-browser.pngbin0 -> 5392 bytes
-rw-r--r--examples/widgets/effects/blurpicker/images/internet-group-chat.pngbin0 -> 2809 bytes
-rw-r--r--examples/widgets/effects/blurpicker/images/internet-mail.pngbin0 -> 3899 bytes
-rw-r--r--examples/widgets/effects/blurpicker/images/internet-web-browser.pngbin0 -> 6376 bytes
-rw-r--r--examples/widgets/effects/blurpicker/images/office-calendar.pngbin0 -> 4010 bytes
-rw-r--r--examples/widgets/effects/blurpicker/images/system-users.pngbin0 -> 5353 bytes
-rw-r--r--examples/widgets/effects/blurpicker/main.py20
-rw-r--r--examples/widgets/effects/lighting.py147
-rw-r--r--examples/widgets/effects/lighting/lighting.py107
-rw-r--r--examples/widgets/effects/lighting/lighting.pyproject (renamed from examples/widgets/effects/effects.pyproject)0
-rw-r--r--examples/widgets/gettext/doc/gettext.rst7
-rw-r--r--examples/widgets/gettext/gettext.pyproject4
-rw-r--r--examples/widgets/gettext/locales/de_DE/LC_MESSAGES/example.mobin0 -> 463 bytes
-rw-r--r--examples/widgets/gettext/locales/de_DE/LC_MESSAGES/example.pot32
-rw-r--r--examples/widgets/gettext/locales/example.pot32
-rw-r--r--examples/widgets/gettext/main.py60
-rw-r--r--examples/widgets/graphicsview/anchorlayout/anchorlayout.py48
-rw-r--r--examples/widgets/graphicsview/collidingmice/collidingmice.py60
-rw-r--r--examples/widgets/graphicsview/collidingmice/collidingmice.pyproject2
-rw-r--r--examples/widgets/graphicsview/collidingmice/mice_rc.py45
-rw-r--r--examples/widgets/graphicsview/diagramscene/diagramscene.py232
-rw-r--r--examples/widgets/graphicsview/diagramscene/diagramscene.pyproject2
-rw-r--r--examples/widgets/graphicsview/diagramscene/diagramscene_rc.py572
-rw-r--r--examples/widgets/graphicsview/dragdroprobot/dragdroprobot.py108
-rw-r--r--examples/widgets/graphicsview/dragdroprobot/dragdroprobot.pyproject2
-rw-r--r--examples/widgets/graphicsview/dragdroprobot/dragdroprobot_rc.py4
-rw-r--r--examples/widgets/graphicsview/elasticnodes/elasticnodes.py70
-rw-r--r--examples/widgets/imageviewer/imageviewer.py72
-rw-r--r--examples/widgets/imageviewer/main.py41
-rw-r--r--examples/widgets/itemviews/address_book/adddialogwidget.py48
-rw-r--r--examples/widgets/itemviews/address_book/address_book.py62
-rw-r--r--examples/widgets/itemviews/address_book/addresswidget.py54
-rw-r--r--examples/widgets/itemviews/address_book/newaddresstab.py44
-rw-r--r--examples/widgets/itemviews/address_book/tablemodel.py48
-rw-r--r--examples/widgets/itemviews/basicfiltermodel/basicsortfiltermodel.py75
-rw-r--r--examples/widgets/itemviews/dirview/dirview.py59
-rw-r--r--examples/widgets/itemviews/dirview/dirview.pyproject3
-rw-r--r--examples/widgets/itemviews/dirview/doc/dirview.rst5
-rw-r--r--examples/widgets/itemviews/editabletreemodel/default.txt40
-rw-r--r--examples/widgets/itemviews/editabletreemodel/doc/editabletreemodel.pngbin0 -> 111556 bytes
-rw-r--r--examples/widgets/itemviews/editabletreemodel/doc/editabletreemodel.rst10
-rw-r--r--examples/widgets/itemviews/editabletreemodel/editabletreemodel.pyproject7
-rw-r--r--examples/widgets/itemviews/editabletreemodel/main.py14
-rw-r--r--examples/widgets/itemviews/editabletreemodel/mainwindow.py163
-rw-r--r--examples/widgets/itemviews/editabletreemodel/treeitem.py94
-rw-r--r--examples/widgets/itemviews/editabletreemodel/treemodel.py199
-rw-r--r--examples/widgets/itemviews/fetchmore/fetchmore.py53
-rw-r--r--examples/widgets/itemviews/jsonmodel/jsonmodel.py48
-rw-r--r--examples/widgets/itemviews/spinboxdelegate/doc/spinboxdelegate.rst5
-rw-r--r--examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.py79
-rw-r--r--examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.pyproject3
-rw-r--r--examples/widgets/itemviews/spreadsheet/doc/spreadsheet.pngbin0 -> 40187 bytes
-rw-r--r--examples/widgets/itemviews/spreadsheet/doc/spreadsheet.rst10
-rw-r--r--examples/widgets/itemviews/spreadsheet/main.py19
-rw-r--r--examples/widgets/itemviews/spreadsheet/spreadsheet.py544
-rw-r--r--examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.py67
-rw-r--r--examples/widgets/itemviews/spreadsheet/spreadsheetitem.py122
-rw-r--r--examples/widgets/itemviews/stardelegate/stardelegate.py58
-rw-r--r--examples/widgets/itemviews/stardelegate/stareditor.py53
-rw-r--r--examples/widgets/itemviews/stardelegate/starrating.py52
-rw-r--r--examples/widgets/layouts/basiclayouts/basiclayouts.py52
-rw-r--r--examples/widgets/layouts/borderlayout/borderlayout.py248
-rw-r--r--examples/widgets/layouts/borderlayout/borderlayout.pyproject3
-rw-r--r--examples/widgets/layouts/borderlayout/doc/borderlayout.pngbin0 -> 5450 bytes
-rw-r--r--examples/widgets/layouts/borderlayout/doc/borderlayout.rst10
-rw-r--r--examples/widgets/layouts/dynamiclayouts/dynamiclayouts.py56
-rw-r--r--examples/widgets/layouts/flowlayout/flowlayout.py76
-rw-r--r--examples/widgets/linguist/doc/linguist.rst7
-rw-r--r--examples/widgets/linguist/example_de.ts40
-rw-r--r--examples/widgets/linguist/linguist.pyproject3
-rw-r--r--examples/widgets/linguist/linguist.qrc5
-rw-r--r--examples/widgets/linguist/linguist_rc.py68
-rw-r--r--examples/widgets/linguist/main.py55
-rw-r--r--examples/widgets/mainwindows/application/application.py159
-rw-r--r--examples/widgets/mainwindows/application/application.pyproject2
-rw-r--r--examples/widgets/mainwindows/application/application_rc.py456
-rw-r--r--examples/widgets/mainwindows/dockwidgets/dockwidgets.py125
-rw-r--r--examples/widgets/mainwindows/dockwidgets/dockwidgets.pyproject2
-rw-r--r--examples/widgets/mainwindows/dockwidgets/dockwidgets_rc.py264
-rw-r--r--examples/widgets/mainwindows/mdi/images/new.pngbin852 -> 0 bytes
-rw-r--r--examples/widgets/mainwindows/mdi/images/save.pngbin1187 -> 0 bytes
-rw-r--r--examples/widgets/mainwindows/mdi/mdi.py195
-rw-r--r--examples/widgets/mainwindows/mdi/mdi.pyproject2
-rw-r--r--examples/widgets/mainwindows/mdi/mdi.qrc10
-rw-r--r--examples/widgets/mainwindows/mdi/mdi_rc.py608
-rw-r--r--examples/widgets/painting/basicdrawing/basicdrawing.py171
-rw-r--r--examples/widgets/painting/basicdrawing/basicdrawing.pyproject2
-rw-r--r--examples/widgets/painting/basicdrawing/basicdrawing_rc.py89
-rw-r--r--examples/widgets/painting/concentriccircles/concentriccircles.py81
-rw-r--r--examples/widgets/painting/painter/painter.py70
-rw-r--r--examples/widgets/painting/plot/doc/plot.pngbin0 -> 13030 bytes
-rw-r--r--examples/widgets/painting/plot/doc/plot.rst36
-rw-r--r--examples/widgets/painting/plot/plot.py66
-rw-r--r--examples/widgets/painting/plot/plot.pyproject3
-rw-r--r--examples/widgets/rhi/simplerhiwidget/doc/simplerhiwidget.rst34
-rw-r--r--examples/widgets/rhi/simplerhiwidget/doc/simplerhiwidget.webpbin0 -> 8556 bytes
-rw-r--r--examples/widgets/rhi/simplerhiwidget/examplewidget.py135
-rw-r--r--examples/widgets/rhi/simplerhiwidget/main.py35
-rw-r--r--examples/widgets/rhi/simplerhiwidget/rc_simplerhiwidget.py163
-rw-r--r--examples/widgets/rhi/simplerhiwidget/shader_assets/color.frag.qsbbin0 -> 738 bytes
-rw-r--r--examples/widgets/rhi/simplerhiwidget/shader_assets/color.vert.qsbbin0 -> 1091 bytes
-rw-r--r--examples/widgets/rhi/simplerhiwidget/shaders/color.frag10
-rw-r--r--examples/widgets/rhi/simplerhiwidget/shaders/color.vert16
-rw-r--r--examples/widgets/rhi/simplerhiwidget/simplerhiwidget.pyproject4
-rw-r--r--examples/widgets/rhi/simplerhiwidget/simplerhiwidget.qrc6
-rw-r--r--examples/widgets/richtext/orderform/orderform.py75
-rw-r--r--examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py48
-rw-r--r--examples/widgets/richtext/textedit/main.py44
-rw-r--r--examples/widgets/richtext/textedit/textedit.py104
-rw-r--r--examples/widgets/richtext/textedit/textedit_rc.py102
-rw-r--r--examples/widgets/richtext/textobject/textobject.py50
-rw-r--r--examples/widgets/state-machine/eventtrans/eventtrans.py95
-rw-r--r--examples/widgets/state-machine/eventtrans/eventtrans.pyproject3
-rw-r--r--examples/widgets/state-machine/factstates/factstates.py127
-rw-r--r--examples/widgets/state-machine/factstates/factstates.pyproject3
-rw-r--r--examples/widgets/state-machine/pingpong/pingpong.py108
-rw-r--r--examples/widgets/state-machine/pingpong/pingpong.pyproject3
-rw-r--r--examples/widgets/state-machine/rogue/rogue.py215
-rw-r--r--examples/widgets/state-machine/trafficlight/doc/trafficlight.pngbin79 -> 0 bytes
-rw-r--r--examples/widgets/state-machine/trafficlight/trafficlight.py150
-rw-r--r--examples/widgets/state-machine/twowaybutton/twowaybutton.py72
-rw-r--r--examples/widgets/state-machine/twowaybutton/twowaybutton.pyproject3
-rw-r--r--examples/widgets/systray/main.py58
-rw-r--r--examples/widgets/systray/rc_systray.py2581
-rw-r--r--examples/widgets/systray/window.py273
-rw-r--r--examples/widgets/tetrix/tetrix.py507
-rw-r--r--examples/widgets/thread_signals/thread_signals.py62
-rw-r--r--examples/widgets/thread_signals/thread_signals.pyproject (renamed from examples/widgets/threads/thread_signals.pyproject)0
-rw-r--r--examples/widgets/threads/thread_signals.py100
-rw-r--r--examples/widgets/tools/regularexpression/doc/regularexpression.pngbin0 -> 33814 bytes
-rw-r--r--examples/widgets/tools/regularexpression/doc/regularexpression.rst10
-rw-r--r--examples/widgets/tools/regularexpression/regularexpression.py21
-rw-r--r--examples/widgets/tools/regularexpression/regularexpression.pyproject3
-rw-r--r--examples/widgets/tools/regularexpression/regularexpressiondialog.py456
-rw-r--r--examples/widgets/tutorials/addressbook/part1.py49
-rw-r--r--examples/widgets/tutorials/addressbook/part2.py57
-rw-r--r--examples/widgets/tutorials/addressbook/part3.py59
-rw-r--r--examples/widgets/tutorials/addressbook/part4.py76
-rw-r--r--examples/widgets/tutorials/addressbook/part5.py80
-rw-r--r--examples/widgets/tutorials/addressbook/part6.py94
-rw-r--r--examples/widgets/tutorials/addressbook/part7.py101
-rw-r--r--examples/widgets/tutorials/cannon/t1.py42
-rw-r--r--examples/widgets/tutorials/cannon/t10.py65
-rw-r--r--examples/widgets/tutorials/cannon/t11.py59
-rw-r--r--examples/widgets/tutorials/cannon/t12.py61
-rw-r--r--examples/widgets/tutorials/cannon/t13.py75
-rw-r--r--examples/widgets/tutorials/cannon/t14.py84
-rw-r--r--examples/widgets/tutorials/cannon/t2.py45
-rw-r--r--examples/widgets/tutorials/cannon/t3.py42
-rw-r--r--examples/widgets/tutorials/cannon/t4.py44
-rw-r--r--examples/widgets/tutorials/cannon/t5.py44
-rw-r--r--examples/widgets/tutorials/cannon/t6.py44
-rw-r--r--examples/widgets/tutorials/cannon/t7.py44
-rw-r--r--examples/widgets/tutorials/cannon/t8.py54
-rw-r--r--examples/widgets/tutorials/cannon/t9.py65
-rw-r--r--examples/widgets/tutorials/modelview/1_readonly.py38
-rw-r--r--examples/widgets/tutorials/modelview/2_formatting.py65
-rw-r--r--examples/widgets/tutorials/modelview/3_changingmodel.py53
-rw-r--r--examples/widgets/tutorials/modelview/4_headers.py43
-rw-r--r--examples/widgets/tutorials/modelview/5_edit.py73
-rw-r--r--examples/widgets/tutorials/modelview/6_treeview.py42
-rw-r--r--examples/widgets/tutorials/modelview/7_selections.py71
-rw-r--r--examples/widgets/tutorials/modelview/doc/modelview.rst4
-rw-r--r--examples/widgets/tutorials/modelview/modelview.pyproject9
-rw-r--r--examples/widgets/widgets/charactermap/charactermap.pyproject4
-rw-r--r--examples/widgets/widgets/charactermap/characterwidget.py133
-rw-r--r--examples/widgets/widgets/charactermap/doc/charactermap.rst8
-rw-r--r--examples/widgets/widgets/charactermap/fontinfodialog.py47
-rw-r--r--examples/widgets/widgets/charactermap/main.py17
-rw-r--r--examples/widgets/widgets/charactermap/mainwindow.py167
-rw-r--r--examples/widgets/widgets/digitalclock/digitalclock.py41
-rw-r--r--examples/widgets/widgets/digitalclock/digitalclock.pyproject3
-rw-r--r--examples/widgets/widgets/digitalclock/doc/digitalclock-screenshot.pngbin0 -> 726 bytes
-rw-r--r--examples/widgets/widgets/digitalclock/doc/digitalclock.rst14
-rw-r--r--examples/widgets/widgets/tetrix/doc/tetrix-screenshot.png (renamed from examples/widgets/tetrix/doc/tetrix-screenshot.png)bin5396 -> 5396 bytes
-rw-r--r--examples/widgets/widgets/tetrix/doc/tetrix.rst (renamed from examples/widgets/tetrix/doc/tetrix.rst)0
-rw-r--r--examples/widgets/widgets/tetrix/tetrix.py472
-rw-r--r--examples/widgets/widgets/tetrix/tetrix.pyproject (renamed from examples/widgets/tetrix/tetrix.pyproject)0
-rw-r--r--examples/widgets/widgetsgallery/main.py44
-rw-r--r--examples/widgets/widgetsgallery/widgetgallery.py67
-rw-r--r--examples/xml/dombookmarks/dombookmarks.py113
-rw-r--r--examples/xml/dombookmarks/dombookmarks.pyproject2
-rw-r--r--examples/xml/dombookmarks/frank.xbel230
-rw-r--r--examples/xml/dombookmarks/jennifer.xbel84
1413 files changed, 153228 insertions, 33151 deletions
diff --git a/examples/3d/simple3d/simple3d.py b/examples/3d/simple3d/simple3d.py
index 3b199c1b3..eef0dca5d 100644
--- a/examples/3d/simple3d/simple3d.py
+++ b/examples/3d/simple3d/simple3d.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the qt3d/simple-cpp example from Qt v5.x"""
diff --git a/examples/async/eratosthenes/doc/eratosthenes.rst b/examples/async/eratosthenes/doc/eratosthenes.rst
new file mode 100644
index 000000000..56e9f391b
--- /dev/null
+++ b/examples/async/eratosthenes/doc/eratosthenes.rst
@@ -0,0 +1,39 @@
+Async "Eratosthenes" Example
+============================
+
+The Python language provides keywords for asynchronous operations, i.e.,
+"async" to define coroutines or "await" to schedule asynchronous calls in the
+event loop (see `PEP 492 <https://peps.python.org/pep-0492/>`_). It is up to
+packages to implement an event loop, support for these keywords, and more.
+
+The best-known package for this is `asyncio`. asyncio offers an API that allows
+for the asyncio event loop to be replaced by a custom implementation. Such an
+implementation is available with the `QtAsyncio` module. It is based on Qt and
+uses Qt's event loop in the backend.
+
+`trio` is another popular package that offers a dedicated `low-level API
+<https://trio.readthedocs.io/en/stable/reference-lowlevel.html>`_ for more
+complex use cases. Specifically, there exists a function `start_guest_run` that
+enables running the Trio event loop as a "guest" inside another event loop -
+Qt's in our case, standing in contrast to asyncio's approach.
+
+Based on this functionality, two examples for async usage with Qt have been
+implemented: `eratosthenes` and `minimal`:
+
+.. image:: eratosthenes.svg
+ :alt: Async example: Eratosthenes
+ :width: 400
+
+* `eratosthenes` is a more extensive example that visualizes the Sieve of
+ Eratosthenes algorithm. This algorithm per se is not one that is particularly
+ suitable for asynchronous operations as it's not I/O-heavy, but synchronizing
+ coroutines to a configurable tick allows for a good visualization.
+* `minimal` is a minimal example featuring a button that triggers an
+ asynchronous coroutine with a sleep. It is designed to highlight which
+ boilerplate code is essential for an async program with Qt and offers a
+ starting point for more complex programs.
+
+While `eratosthenes` offloads the asynchronous logic that will run in
+trio's/asyncio's event loop into a separate class, `minimal` demonstrates that
+async functions can be integrated into any class, including subclasses of Qt
+classes.
diff --git a/examples/async/eratosthenes/doc/eratosthenes.svg b/examples/async/eratosthenes/doc/eratosthenes.svg
new file mode 100644
index 000000000..eaf53da50
--- /dev/null
+++ b/examples/async/eratosthenes/doc/eratosthenes.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1210.666" height="886.666" viewBox="0 0 908 665" baseProfile="tiny" xmlns:v="https://vecta.io/nano"><style><![CDATA[.B{stroke:none}.C{font-family:.AppleSystemUIFont}.D{font-size:13px}.E{font-weight:700}.F{fill:#000}.G{fill:#548f7c}.H{fill:#bab040}.I{fill:#51a660}.J{fill:#a193b6}.K{fill:#8a4a8f}.L{fill:#45b2a7}.M{fill:#916bbd}.N{fill:#7dad6b}.O{fill:#628f47}.P{fill:#6474c0}.Q{fill:#b182b0}.R{fill:#a94257}.S{fill:#a1794d}.T{fill:#bbac54}.U{fill:#6e4344}.V{fill:#a38b9d}.W{fill:#6c4268}.X{fill:#974c66}.Y{fill:#8163bb}.Z{fill:#bda991}.a{fill:#599c9d}.b{fill:#7ec05e}.c{fill:#b26b51}.d{fill:#434da9}.e{fill:#a46a69}.f{fill:#6a6467}.g{fill:#954ca5}.h{fill:#6f4965}.i{fill:#7a99b1}.j{fill:#786344}.k{fill:#898683}.l{fill:#ac989d}.m{fill:#4f5a7b}.n{fill:#b28c5f}.o{fill:#639747}.p{fill:#aba64a}.q{fill:#916c5e}.r{fill:#b0929e}.s{fill:#909864}.t{fill:#a14faf}]]></style><g fill="none" stroke="#000" fill-rule="evenodd" class="C B"><path d="M0 0h908v665H0z" fill="#ececec" class="D"/><g font-size="14" class="F"><text xml:space="preserve" y="25.781" x="192">🥳</text><text xml:space="preserve" x="214.016" y="25.781"> Congratulations! You found all the prime numbers and solved mathematics. </text><text xml:space="preserve" x="693.031" y="25.781">🥳</text></g><text xml:space="preserve" y="61.906" x="34" class="D F">1</text><text xml:space="preserve" y="61.906" x="67" class="D F">2</text><text xml:space="preserve" y="61.906" x="101" class="D F">3</text><text xml:space="preserve" y="61.906" x="136" class="D E l">4</text><text xml:space="preserve" y="61.906" x="171" class="D F">5</text><text xml:space="preserve" y="61.906" x="206" class="D E U">6</text><text xml:space="preserve" y="61.906" x="241" class="D F">7</text><text xml:space="preserve" y="61.906" x="275" class="D E l">8</text><text xml:space="preserve" y="61.906" x="310" class="D E U">9</text><text xml:space="preserve" y="61.906" x="341" class="D E M">10</text><text xml:space="preserve" y="61.906" x="378" class="D F">11</text><text xml:space="preserve" y="61.906" x="411" class="D E U">12</text><text xml:space="preserve" y="61.906" x="446" class="D F">13</text><text xml:space="preserve" y="61.906" x="480" class="D E G">14</text><text xml:space="preserve" y="61.906" x="516" class="D E M">15</text><text xml:space="preserve" y="61.906" x="550" class="D E l">16</text><text xml:space="preserve" y="61.906" x="586" class="D F">17</text><text xml:space="preserve" y="61.906" x="619" class="D E U">18</text><text xml:space="preserve" y="61.906" x="655" class="D F">19</text><text xml:space="preserve" y="61.906" x="689" class="D E M">20</text><text xml:space="preserve" y="61.906" x="725" class="D E G">21</text><text xml:space="preserve" y="61.906" x="758" class="D E H">22</text><text xml:space="preserve" y="61.906" x="793" class="D F">23</text><text xml:space="preserve" y="61.906" x="827" class="D E U">24</text><text xml:space="preserve" y="61.906" x="862" class="D E M">25</text><text xml:space="preserve" y="85.906" x="28" class="D E I">26</text><text xml:space="preserve" y="85.906" x="63" class="D E U">27</text><text xml:space="preserve" y="85.906" x="96" class="D E G">28</text><text xml:space="preserve" y="85.906" x="132" class="D F">29</text><text xml:space="preserve" y="85.906" x="166" class="D E M">30</text><text xml:space="preserve" y="85.906" x="203" class="D F">31</text><text xml:space="preserve" y="85.906" x="236" class="D E K">32</text><text xml:space="preserve" y="85.906" x="270" class="D E H">33</text><text xml:space="preserve" y="85.906" x="305" class="D E J">34</text><text xml:space="preserve" y="85.906" x="341" class="D E G">35</text><text xml:space="preserve" y="85.906" x="375" class="D E U">36</text><text xml:space="preserve" y="85.906" x="411" class="D F">37</text><text xml:space="preserve" y="85.906" x="444" class="D E L">38</text><text xml:space="preserve" y="85.906" x="479" class="D E I">39</text><text xml:space="preserve" y="85.906" x="514" class="D E M">40</text><text xml:space="preserve" y="85.906" x="551" class="D F">41</text><text xml:space="preserve" y="85.906" x="584" class="D E G">42</text><text xml:space="preserve" y="85.906" x="619" class="D F">43</text><text xml:space="preserve" y="85.906" x="653" class="D E H">44</text><text xml:space="preserve" y="85.906" x="688" class="D E M">45</text><text xml:space="preserve" y="85.906" x="723" class="D E N">46</text><text xml:space="preserve" y="85.906" x="759" class="D F">47</text><text xml:space="preserve" y="85.906" x="792" class="D E K">48</text><text xml:space="preserve" y="85.906" x="827" class="D E G">49</text><text xml:space="preserve" y="85.906" x="861" class="D E M">50</text><text xml:space="preserve" y="109.906" x="29" class="D E J">51</text><text xml:space="preserve" y="109.906" x="62" class="D E I">52</text><text xml:space="preserve" y="109.906" x="97" class="D F">53</text><text xml:space="preserve" y="109.906" x="131" class="D E U">54</text><text xml:space="preserve" y="109.906" x="167" class="D E H">55</text><text xml:space="preserve" y="109.906" x="201" class="D E G">56</text><text xml:space="preserve" y="109.906" x="236" class="D E L">57</text><text xml:space="preserve" y="109.906" x="270" class="D E O">58</text><text xml:space="preserve" y="109.906" x="306" class="D F">59</text><text xml:space="preserve" y="109.906" x="340" class="D E M">60</text><text xml:space="preserve" y="109.906" x="377" class="D F">61</text><text xml:space="preserve" y="109.906" x="410" class="D E P">62</text><text xml:space="preserve" y="109.906" x="444" class="D E G">63</text><text xml:space="preserve" y="109.906" x="479" class="D E K">64</text><text xml:space="preserve" y="109.906" x="514" class="D E I">65</text><text xml:space="preserve" y="109.906" x="549" class="D E H">66</text><text xml:space="preserve" y="109.906" x="585" class="D F">67</text><text xml:space="preserve" y="109.906" x="618" class="D E J">68</text><text xml:space="preserve" y="109.906" x="653" class="D E N">69</text><text xml:space="preserve" y="109.906" x="689" class="D E G">70</text><text xml:space="preserve" y="109.906" x="725" class="D F">71</text><text xml:space="preserve" y="109.906" x="759" class="D E U">72</text><text xml:space="preserve" y="109.906" x="793" class="D F">73</text><text xml:space="preserve" y="109.906" x="828" class="D E Q">74</text><text xml:space="preserve" y="109.906" x="862" class="D E M">75</text><text xml:space="preserve" y="133.906" x="28" class="D E L">76</text><text xml:space="preserve" y="133.906" x="63" class="D E H">77</text><text xml:space="preserve" y="133.906" x="97" class="D E I">78</text><text xml:space="preserve" y="133.906" x="132" class="D F">79</text><text xml:space="preserve" y="133.906" x="166" class="D E K">80</text><text xml:space="preserve" y="133.906" x="202" class="D E U">81</text><text xml:space="preserve" y="133.906" x="236" class="D E R">82</text><text xml:space="preserve" y="133.906" x="271" class="D F">83</text><text xml:space="preserve" y="133.906" x="305" class="D E G">84</text><text xml:space="preserve" y="133.906" x="340" class="D E J">85</text><text xml:space="preserve" y="133.906" x="375" class="D E S">86</text><text xml:space="preserve" y="133.906" x="410" class="D E O">87</text><text xml:space="preserve" y="133.906" x="444" class="D E H">88</text><text xml:space="preserve" y="133.906" x="480" class="D F">89</text><text xml:space="preserve" y="133.906" x="514" class="D E M">90</text><text xml:space="preserve" y="133.906" x="550" class="D E I">91</text><text xml:space="preserve" y="133.906" x="584" class="D E N">92</text><text xml:space="preserve" y="133.906" x="618" class="D E P">93</text><text xml:space="preserve" y="133.906" x="653" class="D E T">94</text><text xml:space="preserve" y="133.906" x="688" class="D E L">95</text><text xml:space="preserve" y="133.906" x="723" class="D E K">96</text><text xml:space="preserve" y="133.906" x="759" class="D F">97</text><text xml:space="preserve" y="133.906" x="792" class="D E G">98</text><text xml:space="preserve" y="133.906" x="827" class="D E H">99</text><text xml:space="preserve" y="133.906" x="858" class="D E M">100</text><text xml:space="preserve" y="157.906" x="27" class="D F">101</text><text xml:space="preserve" y="157.906" x="59" class="D E J">102</text><text xml:space="preserve" y="157.906" x="94" class="D F">103</text><text xml:space="preserve" y="157.906" x="128" class="D E I">104</text><text xml:space="preserve" y="157.906" x="163" class="D E G">105</text><text xml:space="preserve" y="157.906" x="198" class="D E V">106</text><text xml:space="preserve" y="157.906" x="234" class="D F">107</text><text xml:space="preserve" y="157.906" x="267" class="D E W">108</text><text xml:space="preserve" y="157.906" x="303" class="D F">109</text><text xml:space="preserve" y="157.906" x="338" class="D E H">110</text><text xml:space="preserve" y="157.906" x="374" class="D E Q">111</text><text xml:space="preserve" y="157.906" x="408" class="D E K">112</text><text xml:space="preserve" y="157.906" x="443" class="D F">113</text><text xml:space="preserve" y="157.906" x="477" class="D E L">114</text><text xml:space="preserve" y="157.906" x="512" class="D E N">115</text><text xml:space="preserve" y="157.906" x="547" class="D E O">116</text><text xml:space="preserve" y="157.906" x="582" class="D E I">117</text><text xml:space="preserve" y="157.906" x="616" class="D E X">118</text><text xml:space="preserve" y="157.906" x="651" class="D E J">119</text><text xml:space="preserve" y="157.906" x="685" class="D E M">120</text><text xml:space="preserve" y="157.906" x="721" class="D E H">121</text><text xml:space="preserve" y="157.906" x="755" class="D E Y">122</text><text xml:space="preserve" y="157.906" x="789" class="D E R">123</text><text xml:space="preserve" y="157.906" x="824" class="D E P">124</text><text xml:space="preserve" y="157.906" x="858" class="D E M">125</text><text xml:space="preserve" y="181.906" x="25" class="D E G">126</text><text xml:space="preserve" y="181.906" x="60" class="D F">127</text><text xml:space="preserve" y="181.906" x="93" class="D E K">128</text><text xml:space="preserve" y="181.906" x="128" class="D E S">129</text><text xml:space="preserve" y="181.906" x="163" class="D E I">130</text><text xml:space="preserve" y="181.906" x="200" class="D F">131</text><text xml:space="preserve" y="181.906" x="233" class="D E H">132</text><text xml:space="preserve" y="181.906" x="267" class="D E L">133</text><text xml:space="preserve" y="181.906" x="302" class="D E Z">134</text><text xml:space="preserve" y="181.906" x="337" class="D E M">135</text><text xml:space="preserve" y="181.906" x="372" class="D E J">136</text><text xml:space="preserve" y="181.906" x="408" class="D F">137</text><text xml:space="preserve" y="181.906" x="441" class="D E N">138</text><text xml:space="preserve" y="181.906" x="477" class="D F">139</text><text xml:space="preserve" y="181.906" x="511" class="D E G">140</text><text xml:space="preserve" y="181.906" x="547" class="D E T">141</text><text xml:space="preserve" y="181.906" x="581" class="D E a">142</text><text xml:space="preserve" y="181.906" x="615" class="D E I">143</text><text xml:space="preserve" y="181.906" x="650" class="D E K">144</text><text xml:space="preserve" y="181.906" x="685" class="D E O">145</text><text xml:space="preserve" y="181.906" x="720" class="D E b">146</text><text xml:space="preserve" y="181.906" x="755" class="D E G">147</text><text xml:space="preserve" y="181.906" x="789" class="D E Q">148</text><text xml:space="preserve" y="181.906" x="824" class="D F">149</text><text xml:space="preserve" y="181.906" x="858" class="D E M">150</text><text xml:space="preserve" y="205.906" x="27" class="D F">151</text><text xml:space="preserve" y="205.906" x="59" class="D E L">152</text><text xml:space="preserve" y="205.906" x="93" class="D E J">153</text><text xml:space="preserve" y="205.906" x="128" class="D E H">154</text><text xml:space="preserve" y="205.906" x="163" class="D E P">155</text><text xml:space="preserve" y="205.906" x="198" class="D E I">156</text><text xml:space="preserve" y="205.906" x="234" class="D F">157</text><text xml:space="preserve" y="205.906" x="267" class="D E c">158</text><text xml:space="preserve" y="205.906" x="302" class="D E V">159</text><text xml:space="preserve" y="205.906" x="337" class="D E K">160</text><text xml:space="preserve" y="205.906" x="373" class="D E N">161</text><text xml:space="preserve" y="205.906" x="407" class="D E W">162</text><text xml:space="preserve" y="205.906" x="442" class="D F">163</text><text xml:space="preserve" y="205.906" x="476" class="D E R">164</text><text xml:space="preserve" y="205.906" x="511" class="D E H">165</text><text xml:space="preserve" y="205.906" x="546" class="D E d">166</text><text xml:space="preserve" y="205.906" x="582" class="D F">167</text><text xml:space="preserve" y="205.906" x="615" class="D E G">168</text><text xml:space="preserve" y="205.906" x="650" class="D E I">169</text><text xml:space="preserve" y="205.906" x="686" class="D E J">170</text><text xml:space="preserve" y="205.906" x="722" class="D E L">171</text><text xml:space="preserve" y="205.906" x="755" class="D E S">172</text><text xml:space="preserve" y="205.906" x="790" class="D F">173</text><text xml:space="preserve" y="205.906" x="824" class="D E O">174</text><text xml:space="preserve" y="205.906" x="859" class="D E G">175</text><text xml:space="preserve" y="229.906" x="25" class="D E K">176</text><text xml:space="preserve" y="229.906" x="60" class="D E X">177</text><text xml:space="preserve" y="229.906" x="93" class="D E e">178</text><text xml:space="preserve" y="229.906" x="129" class="D F">179</text><text xml:space="preserve" y="229.906" x="163" class="D E M">180</text><text xml:space="preserve" y="229.906" x="200" class="D F">181</text><text xml:space="preserve" y="229.906" x="233" class="D E I">182</text><text xml:space="preserve" y="229.906" x="267" class="D E Y">183</text><text xml:space="preserve" y="229.906" x="302" class="D E N">184</text><text xml:space="preserve" y="229.906" x="337" class="D E Q">185</text><text xml:space="preserve" y="229.906" x="372" class="D E P">186</text><text xml:space="preserve" y="229.906" x="407" class="D E J">187</text><text xml:space="preserve" y="229.906" x="441" class="D E T">188</text><text xml:space="preserve" y="229.906" x="476" class="D E G">189</text><text xml:space="preserve" y="229.906" x="511" class="D E L">190</text><text xml:space="preserve" y="229.906" x="548" class="D F">191</text><text xml:space="preserve" y="229.906" x="581" class="D E K">192</text><text xml:space="preserve" y="229.906" x="616" class="D F">193</text><text xml:space="preserve" y="229.906" x="650" class="D E f">194</text><text xml:space="preserve" y="229.906" x="685" class="D E I">195</text><text xml:space="preserve" y="229.906" x="720" class="D E G">196</text><text xml:space="preserve" y="229.906" x="756" class="D F">197</text><text xml:space="preserve" y="229.906" x="789" class="D E H">198</text><text xml:space="preserve" y="229.906" x="824" class="D F">199</text><text xml:space="preserve" y="229.906" x="857" class="D E M">200</text><text xml:space="preserve" y="253.906" x="25" class="D E Z">201</text><text xml:space="preserve" y="253.906" x="58" class="D E g">202</text><text xml:space="preserve" y="253.906" x="92" class="D E O">203</text><text xml:space="preserve" y="253.906" x="127" class="D E J">204</text><text xml:space="preserve" y="253.906" x="162" class="D E R">205</text><text xml:space="preserve" y="253.906" x="197" class="D E h">206</text><text xml:space="preserve" y="253.906" x="232" class="D E N">207</text><text xml:space="preserve" y="253.906" x="266" class="D E K">208</text><text xml:space="preserve" y="253.906" x="301" class="D E L">209</text><text xml:space="preserve" y="253.906" x="337" class="D E G">210</text><text xml:space="preserve" y="253.906" x="374" class="D F">211</text><text xml:space="preserve" y="253.906" x="407" class="D E V">212</text><text xml:space="preserve" y="253.906" x="441" class="D E a">213</text><text xml:space="preserve" y="253.906" x="476" class="D E i">214</text><text xml:space="preserve" y="253.906" x="511" class="D E S">215</text><text xml:space="preserve" y="253.906" x="546" class="D E W">216</text><text xml:space="preserve" y="253.906" x="581" class="D E P">217</text><text xml:space="preserve" y="253.906" x="615" class="D E j">218</text><text xml:space="preserve" y="253.906" x="650" class="D E b">219</text><text xml:space="preserve" y="253.906" x="684" class="D E H">220</text><text xml:space="preserve" y="253.906" x="721" class="D E J">221</text><text xml:space="preserve" y="253.906" x="754" class="D E Q">222</text><text xml:space="preserve" y="253.906" x="789" class="D F">223</text><text xml:space="preserve" y="253.906" x="823" class="D E K">224</text><text xml:space="preserve" y="253.906" x="858" class="D E M">225</text><text xml:space="preserve" y="277.906" x="24" class="D E k">226</text><text xml:space="preserve" y="277.906" x="59" class="D F">227</text><text xml:space="preserve" y="277.906" x="92" class="D E L">228</text><text xml:space="preserve" y="277.906" x="128" class="D F">229</text><text xml:space="preserve" y="277.906" x="162" class="D E N">230</text><text xml:space="preserve" y="277.906" x="198" class="D E H">231</text><text xml:space="preserve" y="277.906" x="232" class="D E O">232</text><text xml:space="preserve" y="277.906" x="267" class="D F">233</text><text xml:space="preserve" y="277.906" x="301" class="D E I">234</text><text xml:space="preserve" y="277.906" x="336" class="D E T">235</text><text xml:space="preserve" y="277.906" x="371" class="D E X">236</text><text xml:space="preserve" y="277.906" x="406" class="D E c">237</text><text xml:space="preserve" y="277.906" x="440" class="D E J">238</text><text xml:space="preserve" y="277.906" x="476" class="D F">239</text><text xml:space="preserve" y="277.906" x="510" class="D E K">240</text><text xml:space="preserve" y="277.906" x="547" class="D F">241</text><text xml:space="preserve" y="277.906" x="580" class="D E H">242</text><text xml:space="preserve" y="277.906" x="614" class="D E m">243</text><text xml:space="preserve" y="277.906" x="649" class="D E Y">244</text><text xml:space="preserve" y="277.906" x="684" class="D E G">245</text><text xml:space="preserve" y="277.906" x="719" class="D E R">246</text><text xml:space="preserve" y="277.906" x="754" class="D E L">247</text><text xml:space="preserve" y="277.906" x="788" class="D E P">248</text><text xml:space="preserve" y="277.906" x="823" class="D E d">249</text><text xml:space="preserve" y="277.906" x="857" class="D E M">250</text><text xml:space="preserve" y="301.906" x="26" class="D F">251</text><text xml:space="preserve" y="301.906" x="58" class="D E G">252</text><text xml:space="preserve" y="301.906" x="92" class="D E N">253</text><text xml:space="preserve" y="301.906" x="127" class="D E n">254</text><text xml:space="preserve" y="301.906" x="162" class="D E J">255</text><text xml:space="preserve" y="301.906" x="197" class="D E K">256</text><text xml:space="preserve" y="301.906" x="233" class="D F">257</text><text xml:space="preserve" y="301.906" x="266" class="D E S">258</text><text xml:space="preserve" y="301.906" x="301" class="D E Q">259</text><text xml:space="preserve" y="301.906" x="336" class="D E I">260</text><text xml:space="preserve" y="301.906" x="372" class="D E O">261</text><text xml:space="preserve" y="301.906" x="406" class="D E o">262</text><text xml:space="preserve" y="301.906" x="441" class="D F">263</text><text xml:space="preserve" y="301.906" x="475" class="D E H">264</text><text xml:space="preserve" y="301.906" x="510" class="D E V">265</text><text xml:space="preserve" y="301.906" x="545" class="D E L">266</text><text xml:space="preserve" y="301.906" x="580" class="D E e">267</text><text xml:space="preserve" y="301.906" x="614" class="D E Z">268</text><text xml:space="preserve" y="301.906" x="650" class="D F">269</text><text xml:space="preserve" y="301.906" x="685" class="D E W">270</text><text xml:space="preserve" y="301.906" x="722" class="D F">271</text><text xml:space="preserve" y="301.906" x="754" class="D E K">272</text><text xml:space="preserve" y="301.906" x="789" class="D E I">273</text><text xml:space="preserve" y="301.906" x="824" class="D E p">274</text><text xml:space="preserve" y="301.906" x="858" class="D E H">275</text><text xml:space="preserve" y="325.906" x="24" class="D E N">276</text><text xml:space="preserve" y="325.906" x="59" class="D F">277</text><text xml:space="preserve" y="325.906" x="93" class="D E q">278</text><text xml:space="preserve" y="325.906" x="128" class="D E P">279</text><text xml:space="preserve" y="325.906" x="162" class="D E G">280</text><text xml:space="preserve" y="325.906" x="199" class="D F">281</text><text xml:space="preserve" y="325.906" x="232" class="D E T">282</text><text xml:space="preserve" y="325.906" x="267" class="D F">283</text><text xml:space="preserve" y="325.906" x="301" class="D E a">284</text><text xml:space="preserve" y="325.906" x="336" class="D E L">285</text><text xml:space="preserve" y="325.906" x="371" class="D E I">286</text><text xml:space="preserve" y="325.906" x="406" class="D E R">287</text><text xml:space="preserve" y="325.906" x="440" class="D E K">288</text><text xml:space="preserve" y="325.906" x="475" class="D E J">289</text><text xml:space="preserve" y="325.906" x="510" class="D E O">290</text><text xml:space="preserve" y="325.906" x="546" class="D E f">291</text><text xml:space="preserve" y="325.906" x="580" class="D E b">292</text><text xml:space="preserve" y="325.906" x="615" class="D F">293</text><text xml:space="preserve" y="325.906" x="649" class="D E G">294</text><text xml:space="preserve" y="325.906" x="684" class="D E X">295</text><text xml:space="preserve" y="325.906" x="719" class="D E Q">296</text><text xml:space="preserve" y="325.906" x="754" class="D E H">297</text><text xml:space="preserve" y="325.906" x="788" class="D E r">298</text><text xml:space="preserve" y="325.906" x="823" class="D E N">299</text><text xml:space="preserve" y="325.906" x="857" class="D E M">300</text><text xml:space="preserve" y="349.906" x="25" class="D E S">301</text><text xml:space="preserve" y="349.906" x="58" class="D E s">302</text><text xml:space="preserve" y="349.906" x="92" class="D E g">303</text><text xml:space="preserve" y="349.906" x="127" class="D E L">304</text><text xml:space="preserve" y="349.906" x="162" class="D E Y">305</text><text xml:space="preserve" y="349.906" x="197" class="D E J">306</text><text xml:space="preserve" y="349.906" x="233" class="D F">307</text><text xml:space="preserve" y="349.906" x="266" class="D E H">308</text><text xml:space="preserve" y="349.906" x="301" class="D E h">309</text><text xml:space="preserve" y="349.906" x="337" class="D E P">310</text><text xml:space="preserve" y="349.906" x="374" class="D F">311</text><text xml:space="preserve" y="349.906" x="407" class="D E I">312</text><text xml:space="preserve" y="349.906" x="442" class="D F">313</text><text fill="#72a694" xml:space="preserve" y="349.906" x="476" class="D E">314</text><text xml:space="preserve" y="349.906" x="511" class="D E G">315</text><text xml:space="preserve" y="349.906" x="546" class="D E c">316</text><text xml:space="preserve" y="349.906" x="582" class="D F">317</text><text xml:space="preserve" y="349.906" x="615" class="D E V">318</text><text xml:space="preserve" y="349.906" x="650" class="D E O">319</text><text xml:space="preserve" y="349.906" x="684" class="D E K">320</text><text xml:space="preserve" y="349.906" x="720" class="D E i">321</text><text xml:space="preserve" y="349.906" x="754" class="D E N">322</text><text xml:space="preserve" y="349.906" x="788" class="D E L">323</text><text xml:space="preserve" y="349.906" x="823" class="D E W">324</text><text xml:space="preserve" y="349.906" x="857" class="D E I">325</text><text fill="#aa85a2" xml:space="preserve" y="373.906" x="24" class="D E">326</text><text xml:space="preserve" y="373.906" x="58" class="D E j">327</text><text xml:space="preserve" y="373.906" x="92" class="D E R">328</text><text xml:space="preserve" y="373.906" x="127" class="D E T">329</text><text xml:space="preserve" y="373.906" x="162" class="D E H">330</text><text xml:space="preserve" y="373.906" x="199" class="D F">331</text><text xml:space="preserve" y="373.906" x="232" class="D E d">332</text><text xml:space="preserve" y="373.906" x="266" class="D E Q">333</text><text fill="#bca451" xml:space="preserve" y="373.906" x="301" class="D E">334</text><text xml:space="preserve" y="373.906" x="336" class="D E Z">335</text><text xml:space="preserve" y="373.906" x="371" class="D E K">336</text><text xml:space="preserve" y="373.906" x="407" class="D F">337</text><text xml:space="preserve" y="373.906" x="440" class="D E I">338</text><text xml:space="preserve" y="373.906" x="475" class="D E k">339</text><text xml:space="preserve" y="373.906" x="510" class="D E J">340</text><text xml:space="preserve" y="373.906" x="546" class="D E P">341</text><text xml:space="preserve" y="373.906" x="580" class="D E L">342</text><text xml:space="preserve" y="373.906" x="614" class="D E G">343</text><text xml:space="preserve" y="373.906" x="649" class="D E S">344</text><text xml:space="preserve" y="373.906" x="684" class="D E N">345</text><text fill="#8e8dba" xml:space="preserve" y="373.906" x="719" class="D E">346</text><text xml:space="preserve" y="373.906" x="755" class="D F">347</text><text xml:space="preserve" y="373.906" x="788" class="D E O">348</text><text xml:space="preserve" y="373.906" x="823" class="D F">349</text><text xml:space="preserve" y="373.906" x="857" class="D E G">350</text><text xml:space="preserve" y="397.906" x="25" class="D E I">351</text><text xml:space="preserve" y="397.906" x="58" class="D E K">352</text><text xml:space="preserve" y="397.906" x="93" class="D F">353</text><text xml:space="preserve" y="397.906" x="127" class="D E X">354</text><text xml:space="preserve" y="397.906" x="162" class="D E a">355</text><text xml:space="preserve" y="397.906" x="197" class="D E e">356</text><text xml:space="preserve" y="397.906" x="232" class="D E J">357</text><text fill="#79a79e" xml:space="preserve" y="397.906" x="266" class="D E">358</text><text xml:space="preserve" y="397.906" x="302" class="D F">359</text><text xml:space="preserve" y="397.906" x="336" class="D E t">360</text><text xml:space="preserve" y="397.906" x="372" class="D E L">361</text><text fill="#656186" xml:space="preserve" y="397.906" x="406" class="D E">362</text><text xml:space="preserve" y="397.906" x="440" class="D E H">363</text><text xml:space="preserve" y="397.906" x="475" class="D E I">364</text><text xml:space="preserve" y="397.906" x="510" class="D E b">365</text><text xml:space="preserve" y="397.906" x="545" class="D E Y">366</text><text xml:space="preserve" y="397.906" x="581" class="D F">367</text><text xml:space="preserve" y="397.906" x="614" class="D E N">368</text><text xml:space="preserve" y="397.906" x="649" class="D E R">369</text><text xml:space="preserve" y="397.906" x="685" class="D E Q">370</text><text xml:space="preserve" y="397.906" x="721" class="D E V">371</text><text xml:space="preserve" y="397.906" x="754" class="D E P">372</text><text xml:space="preserve" y="397.906" x="789" class="D F">373</text><text xml:space="preserve" y="397.906" x="823" class="D E J">374</text><text xml:space="preserve" y="397.906" x="858" class="D E M">375</text><text xml:space="preserve" y="421.906" x="24" class="D E T">376</text><text xml:space="preserve" y="421.906" x="59" class="D E O">377</text><text xml:space="preserve" y="421.906" x="92" class="D E W">378</text><text xml:space="preserve" y="421.906" x="128" class="D F">379</text><text xml:space="preserve" y="421.906" x="162" class="D E L">380</text><text xml:space="preserve" y="421.906" x="198" class="D E n">381</text><text fill="#94894b" xml:space="preserve" y="421.906" x="232" class="D E">382</text><text xml:space="preserve" y="421.906" x="267" class="D F">383</text><text xml:space="preserve" y="421.906" x="301" class="D E K">384</text><text xml:space="preserve" y="421.906" x="336" class="D E H">385</text><text fill="#87759e" xml:space="preserve" y="421.906" x="371" class="D E">386</text><text xml:space="preserve" y="421.906" x="406" class="D E S">387</text><text xml:space="preserve" y="421.906" x="440" class="D E f">388</text><text xml:space="preserve" y="421.906" x="476" class="D F">389</text><text xml:space="preserve" y="421.906" x="510" class="D E I">390</text><text xml:space="preserve" y="421.906" x="546" class="D E N">391</text><text xml:space="preserve" y="421.906" x="580" class="D E G">392</text><text xml:space="preserve" y="421.906" x="614" class="D E o">393</text><text fill="#9f6db4" xml:space="preserve" y="421.906" x="649" class="D E">394</text><text xml:space="preserve" y="421.906" x="684" class="D E c">395</text><text xml:space="preserve" y="421.906" x="719" class="D E H">396</text><text xml:space="preserve" y="421.906" x="755" class="D F">397</text><text fill="#aebba6" xml:space="preserve" y="421.906" x="788" class="D E">398</text><text xml:space="preserve" y="421.906" x="823" class="D E L">399</text><text xml:space="preserve" y="421.906" x="857" class="D E K">400</text><text xml:space="preserve" y="445.906" x="25" class="D F">401</text><text xml:space="preserve" y="445.906" x="58" class="D E Z">402</text><text xml:space="preserve" y="445.906" x="92" class="D E P">403</text><text xml:space="preserve" y="445.906" x="127" class="D E g">404</text><text xml:space="preserve" y="445.906" x="162" class="D E m">405</text><text xml:space="preserve" y="445.906" x="197" class="D E O">406</text><text xml:space="preserve" y="445.906" x="232" class="D E Q">407</text><text xml:space="preserve" y="445.906" x="266" class="D E J">408</text><text xml:space="preserve" y="445.906" x="302" class="D F">409</text><text xml:space="preserve" y="445.906" x="337" class="D E R">410</text><text xml:space="preserve" y="445.906" x="373" class="D E p">411</text><text xml:space="preserve" y="445.906" x="407" class="D E h">412</text><text xml:space="preserve" y="445.906" x="441" class="D E X">413</text><text xml:space="preserve" y="445.906" x="476" class="D E N">414</text><text xml:space="preserve" y="445.906" x="511" class="D E d">415</text><text xml:space="preserve" y="445.906" x="546" class="D E K">416</text><text xml:space="preserve" y="445.906" x="581" class="D E q">417</text><text xml:space="preserve" y="445.906" x="615" class="D E L">418</text><text xml:space="preserve" y="445.906" x="651" class="D F">419</text><text xml:space="preserve" y="445.906" x="684" class="D E G">420</text><text xml:space="preserve" y="445.906" x="721" class="D F">421</text><text fill="#61a569" xml:space="preserve" y="445.906" x="754" class="D E">422</text><text xml:space="preserve" y="445.906" x="788" class="D E T">423</text><text xml:space="preserve" y="445.906" x="823" class="D E V">424</text><text xml:space="preserve" y="445.906" x="857" class="D E J">425</text><text xml:space="preserve" y="469.906" x="24" class="D E a">426</text><text xml:space="preserve" y="469.906" x="58" class="D E Y">427</text><text xml:space="preserve" y="469.906" x="92" class="D E i">428</text><text xml:space="preserve" y="469.906" x="127" class="D E I">429</text><text xml:space="preserve" y="469.906" x="162" class="D E S">430</text><text xml:space="preserve" y="469.906" x="199" class="D F">431</text><text xml:space="preserve" y="469.906" x="232" class="D E W">432</text><text xml:space="preserve" y="469.906" x="267" class="D F">433</text><text xml:space="preserve" y="469.906" x="301" class="D E P">434</text><text xml:space="preserve" y="469.906" x="336" class="D E O">435</text><text xml:space="preserve" y="469.906" x="371" class="D E j">436</text><text xml:space="preserve" y="469.906" x="406" class="D E N">437</text><text xml:space="preserve" y="469.906" x="440" class="D E b">438</text><text xml:space="preserve" y="469.906" x="476" class="D F">439</text><text xml:space="preserve" y="469.906" x="510" class="D E H">440</text><text xml:space="preserve" y="469.906" x="546" class="D E G">441</text><text xml:space="preserve" y="469.906" x="580" class="D E J">442</text><text xml:space="preserve" y="469.906" x="615" class="D F">443</text><text xml:space="preserve" y="469.906" x="649" class="D E Q">444</text><text xml:space="preserve" y="469.906" x="684" class="D E e">445</text><text fill="#7e6bb4" xml:space="preserve" y="469.906" x="719" class="D E">446</text><text xml:space="preserve" y="469.906" x="754" class="D E r">447</text><text xml:space="preserve" y="469.906" x="788" class="D E K">448</text><text xml:space="preserve" y="469.906" x="823" class="D F">449</text><text xml:space="preserve" y="469.906" x="857" class="D E M">450</text><text xml:space="preserve" y="493.906" x="25" class="D E R">451</text><text xml:space="preserve" y="493.906" x="58" class="D E k">452</text><text xml:space="preserve" y="493.906" x="92" class="D E s">453</text><text fill="#a2569d" xml:space="preserve" y="493.906" x="127" class="D E">454</text><text xml:space="preserve" y="493.906" x="162" class="D E I">455</text><text xml:space="preserve" y="493.906" x="197" class="D E L">456</text><text xml:space="preserve" y="493.906" x="233" class="D F">457</text><text fill="#67ab80" xml:space="preserve" y="493.906" x="266" class="D E">458</text><text xml:space="preserve" y="493.906" x="301" class="D E J">459</text><text xml:space="preserve" y="493.906" x="336" class="D E N">460</text><text xml:space="preserve" y="493.906" x="373" class="D F">461</text><text xml:space="preserve" y="493.906" x="406" class="D E H">462</text><text xml:space="preserve" y="493.906" x="441" class="D F">463</text><text xml:space="preserve" y="493.906" x="475" class="D E O">464</text><text xml:space="preserve" y="493.906" x="510" class="D E P">465</text><text fill="#5db273" xml:space="preserve" y="493.906" x="545" class="D E">466</text><text xml:space="preserve" y="493.906" x="581" class="D F">467</text><text xml:space="preserve" y="493.906" x="614" class="D E I">468</text><text xml:space="preserve" y="493.906" x="649" class="D E Z">469</text><text xml:space="preserve" y="493.906" x="685" class="D E T">470</text><text fill="#72a694" xml:space="preserve" y="493.906" x="721" class="D E">471</text><text xml:space="preserve" y="493.906" x="754" class="D E X">472</text><text xml:space="preserve" y="493.906" x="789" class="D E S">473</text><text xml:space="preserve" y="493.906" x="823" class="D E c">474</text><text xml:space="preserve" y="493.906" x="858" class="D E L">475</text><text xml:space="preserve" y="517.906" x="24" class="D E J">476</text><text xml:space="preserve" y="517.906" x="58" class="D E V">477</text><text fill="#5c989e" xml:space="preserve" y="517.906" x="92" class="D E">478</text><text xml:space="preserve" y="517.906" x="128" class="D F">479</text><text xml:space="preserve" y="517.906" x="162" class="D E K">480</text><text xml:space="preserve" y="517.906" x="198" class="D E Q">481</text><text fill="#bb54ab" xml:space="preserve" y="517.906" x="232" class="D E">482</text><text xml:space="preserve" y="517.906" x="266" class="D E N">483</text><text xml:space="preserve" y="517.906" x="301" class="D E H">484</text><text xml:space="preserve" y="517.906" x="336" class="D E f">485</text><text xml:space="preserve" y="517.906" x="371" class="D E W">486</text><text xml:space="preserve" y="517.906" x="407" class="D F">487</text><text xml:space="preserve" y="517.906" x="440" class="D E Y">488</text><text fill="#aa85a2" xml:space="preserve" y="517.906" x="475" class="D E">489</text><text xml:space="preserve" y="517.906" x="510" class="D E G">490</text><text xml:space="preserve" y="517.906" x="547" class="D F">491</text><text xml:space="preserve" y="517.906" x="580" class="D E R">492</text><text xml:space="preserve" y="517.906" x="614" class="D E O">493</text><text xml:space="preserve" y="517.906" x="649" class="D E L">494</text><text xml:space="preserve" y="517.906" x="684" class="D E H">495</text><text xml:space="preserve" y="517.906" x="719" class="D E P">496</text><text xml:space="preserve" y="517.906" x="754" class="D E a">497</text><text xml:space="preserve" y="517.906" x="788" class="D E d">498</text><text xml:space="preserve" y="517.906" x="823" class="D F">499</text><text xml:space="preserve" y="517.906" x="857" class="D E M">500</text><text fill="#bca451" xml:space="preserve" y="541.906" x="25" class="D E">501</text><text fill="#40448a" xml:space="preserve" y="541.906" x="58" class="D E">502</text><text xml:space="preserve" y="541.906" x="93" class="D F">503</text><text xml:space="preserve" y="541.906" x="127" class="D E t">504</text><text xml:space="preserve" y="541.906" x="162" class="D E g">505</text><text xml:space="preserve" y="541.906" x="197" class="D E N">506</text><text xml:space="preserve" y="541.906" x="232" class="D E I">507</text><text xml:space="preserve" y="541.906" x="266" class="D E n">508</text><text xml:space="preserve" y="541.906" x="302" class="D F">509</text><text xml:space="preserve" y="541.906" x="337" class="D E J">510</text><text xml:space="preserve" y="541.906" x="373" class="D E b">511</text><text xml:space="preserve" y="541.906" x="407" class="D E K">512</text><text xml:space="preserve" y="541.906" x="441" class="D E L">513</text><text fill="#b9a185" xml:space="preserve" y="541.906" x="476" class="D E">514</text><text xml:space="preserve" y="541.906" x="511" class="D E h">515</text><text xml:space="preserve" y="541.906" x="546" class="D E S">516</text><text xml:space="preserve" y="541.906" x="581" class="D E T">517</text><text xml:space="preserve" y="541.906" x="615" class="D E Q">518</text><text fill="#8e8dba" xml:space="preserve" y="541.906" x="650" class="D E">519</text><text xml:space="preserve" y="541.906" x="684" class="D E I">520</text><text xml:space="preserve" y="541.906" x="721" class="D F">521</text><text xml:space="preserve" y="541.906" x="754" class="D E O">522</text><text xml:space="preserve" y="541.906" x="789" class="D F">523</text><text xml:space="preserve" y="541.906" x="823" class="D E o">524</text><text xml:space="preserve" y="541.906" x="857" class="D E G">525</text><text fill="#5f5fb5" xml:space="preserve" y="565.906" x="24" class="D E">526</text><text xml:space="preserve" y="565.906" x="58" class="D E P">527</text><text xml:space="preserve" y="565.906" x="92" class="D E K">528</text><text xml:space="preserve" y="565.906" x="127" class="D E N">529</text><text xml:space="preserve" y="565.906" x="162" class="D E V">530</text><text xml:space="preserve" y="565.906" x="198" class="D E X">531</text><text xml:space="preserve" y="565.906" x="232" class="D E L">532</text><text xml:space="preserve" y="565.906" x="266" class="D E R">533</text><text xml:space="preserve" y="565.906" x="301" class="D E e">534</text><text xml:space="preserve" y="565.906" x="336" class="D E i">535</text><text xml:space="preserve" y="565.906" x="371" class="D E Z">536</text><text fill="#79a79e" xml:space="preserve" y="565.906" x="406" class="D E">537</text><text fill="#a8b675" xml:space="preserve" y="565.906" x="440" class="D E">538</text><text xml:space="preserve" y="565.906" x="475" class="D E H">539</text><text xml:space="preserve" y="565.906" x="510" class="D E W">540</text><text xml:space="preserve" y="565.906" x="547" class="D F">541</text><text fill="#4c7c9f" xml:space="preserve" y="565.906" x="580" class="D E">542</text><text fill="#656186" xml:space="preserve" y="565.906" x="614" class="D E">543</text><text xml:space="preserve" y="565.906" x="649" class="D E J">544</text><text xml:space="preserve" y="565.906" x="684" class="D E j">545</text><text xml:space="preserve" y="565.906" x="719" class="D E I">546</text><text xml:space="preserve" y="565.906" x="755" class="D F">547</text><text xml:space="preserve" y="565.906" x="788" class="D E p">548</text><text xml:space="preserve" y="565.906" x="823" class="D E Y">549</text><text xml:space="preserve" y="565.906" x="857" class="D E H">550</text><text xml:space="preserve" y="589.906" x="25" class="D E O">551</text><text xml:space="preserve" y="589.906" x="58" class="D E N">552</text><text xml:space="preserve" y="589.906" x="92" class="D E c">553</text><text fill="#5d90b0" xml:space="preserve" y="589.906" x="127" class="D E">554</text><text xml:space="preserve" y="589.906" x="162" class="D E Q">555</text><text xml:space="preserve" y="589.906" x="197" class="D E q">556</text><text xml:space="preserve" y="589.906" x="233" class="D F">557</text><text xml:space="preserve" y="589.906" x="266" class="D E P">558</text><text xml:space="preserve" y="589.906" x="301" class="D E S">559</text><text xml:space="preserve" y="589.906" x="336" class="D E K">560</text><text xml:space="preserve" y="589.906" x="372" class="D E J">561</text><text fill="#578f8b" xml:space="preserve" y="589.906" x="406" class="D E">562</text><text xml:space="preserve" y="589.906" x="441" class="D F">563</text><text xml:space="preserve" y="589.906" x="475" class="D E T">564</text><text xml:space="preserve" y="589.906" x="510" class="D E k">565</text><text fill="#8985af" xml:space="preserve" y="589.906" x="545" class="D E">566</text><text xml:space="preserve" y="589.906" x="580" class="D E m">567</text><text xml:space="preserve" y="589.906" x="614" class="D E a">568</text><text xml:space="preserve" y="589.906" x="650" class="D F">569</text><text xml:space="preserve" y="589.906" x="685" class="D E L">570</text><text xml:space="preserve" y="589.906" x="721" class="D F">571</text><text xml:space="preserve" y="589.906" x="754" class="D E I">572</text><text fill="#94894b" xml:space="preserve" y="589.906" x="789" class="D E">573</text><text xml:space="preserve" y="589.906" x="823" class="D E R">574</text><text xml:space="preserve" y="589.906" x="858" class="D E N">575</text><text xml:space="preserve" y="613.906" x="24" class="D E t">576</text><text xml:space="preserve" y="613.906" x="59" class="D F">577</text><text xml:space="preserve" y="613.906" x="92" class="D E J">578</text><text fill="#87759e" xml:space="preserve" y="613.906" x="128" class="D E">579</text><text xml:space="preserve" y="613.906" x="162" class="D E O">580</text><text xml:space="preserve" y="613.906" x="198" class="D E d">581</text><text xml:space="preserve" y="613.906" x="232" class="D E f">582</text><text xml:space="preserve" y="613.906" x="266" class="D E V">583</text><text xml:space="preserve" y="613.906" x="301" class="D E b">584</text><text xml:space="preserve" y="613.906" x="336" class="D E I">585</text><text fill="#ab6984" xml:space="preserve" y="613.906" x="371" class="D E">586</text><text xml:space="preserve" y="613.906" x="407" class="D F">587</text><text xml:space="preserve" y="613.906" x="440" class="D E G">588</text><text xml:space="preserve" y="613.906" x="475" class="D E P">589</text><text xml:space="preserve" y="613.906" x="510" class="D E X">590</text><text fill="#9f6db4" xml:space="preserve" y="613.906" x="546" class="D E">591</text><text xml:space="preserve" y="613.906" x="580" class="D E Q">592</text><text xml:space="preserve" y="613.906" x="615" class="D F">593</text><text xml:space="preserve" y="613.906" x="649" class="D E W">594</text><text xml:space="preserve" y="613.906" x="684" class="D E J">595</text><text xml:space="preserve" y="613.906" x="719" class="D E r">596</text><text fill="#aebba6" xml:space="preserve" y="613.906" x="754" class="D E">597</text><text xml:space="preserve" y="613.906" x="788" class="D E N">598</text><text xml:space="preserve" y="613.906" x="823" class="D F">599</text><text xml:space="preserve" y="613.906" x="857" class="D E M">600</text><text xml:space="preserve" y="637.906" x="26" class="D F">601</text><text xml:space="preserve" y="637.906" x="58" class="D E S">602</text><text xml:space="preserve" y="637.906" x="92" class="D E Z">603</text><text xml:space="preserve" y="637.906" x="127" class="D E s">604</text><text xml:space="preserve" y="637.906" x="162" class="D E H">605</text><text xml:space="preserve" y="637.906" x="197" class="D E g">606</text><text xml:space="preserve" y="637.906" x="233" class="D F">607</text><text xml:space="preserve" y="637.906" x="266" class="D E L">608</text><text xml:space="preserve" y="637.906" x="301" class="D E O">609</text><text xml:space="preserve" y="637.906" x="337" class="D E Y">610</text><text xml:space="preserve" y="637.906" x="373" class="D E T">611</text><text xml:space="preserve" y="637.906" x="407" class="D E J">612</text><text xml:space="preserve" y="637.906" x="442" class="D F">613</text><text fill="#9b6f5d" xml:space="preserve" y="637.906" x="476" class="D E">614</text><text xml:space="preserve" y="637.906" x="511" class="D E R">615</text><text xml:space="preserve" y="637.906" x="546" class="D E H">616</text><text xml:space="preserve" y="637.906" x="582" class="D F">617</text><text xml:space="preserve" y="637.906" x="615" class="D E h">618</text><text xml:space="preserve" y="637.906" x="651" class="D F">619</text><text xml:space="preserve" y="637.906" x="684" class="D E P">620</text><text xml:space="preserve" y="637.906" x="720" class="D E N">621</text><text fill="#be7384" xml:space="preserve" y="637.906" x="754" class="D E">622</text><text xml:space="preserve" y="637.906" x="788" class="D E e">623</text><text xml:space="preserve" y="637.906" x="823" class="D E K">624</text><text xml:space="preserve" y="637.906" x="857" class="D E M">625</text></g></svg>
diff --git a/examples/async/eratosthenes/eratosthenes.pyproject b/examples/async/eratosthenes/eratosthenes.pyproject
new file mode 100644
index 000000000..f0de627ef
--- /dev/null
+++ b/examples/async/eratosthenes/eratosthenes.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["eratosthenes_trio.py", "eratosthenes_asyncio.py"]
+}
diff --git a/examples/async/eratosthenes/eratosthenes_asyncio.py b/examples/async/eratosthenes/eratosthenes_asyncio.py
new file mode 100644
index 000000000..598d9b4bd
--- /dev/null
+++ b/examples/async/eratosthenes/eratosthenes_asyncio.py
@@ -0,0 +1,134 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import (Qt, QObject, Signal, Slot)
+from PySide6.QtGui import (QColor, QFont, QPalette)
+from PySide6.QtWidgets import (QApplication, QGridLayout, QLabel, QMainWindow, QVBoxLayout, QWidget)
+
+import PySide6.QtAsyncio as QtAsyncio
+
+import asyncio
+import sys
+from random import randint
+
+
+class MainWindow(QMainWindow):
+
+ set_num = Signal(int, QColor)
+
+ def __init__(self, rows, cols):
+ super().__init__()
+
+ self.rows = rows
+ self.cols = cols
+
+ widget_central = QWidget()
+ self.setCentralWidget(widget_central)
+
+ layout_outer = QVBoxLayout(widget_central)
+
+ self.widget_outer_text = QLabel()
+ font = QFont()
+ font.setPointSize(14)
+ self.widget_outer_text.setFont(font)
+ layout_outer.addWidget(self.widget_outer_text, alignment=Qt.AlignmentFlag.AlignCenter)
+
+ widget_inner_grid = QWidget()
+ layout_outer.addWidget(widget_inner_grid, alignment=Qt.AlignmentFlag.AlignCenter)
+
+ self.layout_inner_grid = QGridLayout(widget_inner_grid)
+ k = 1
+ for i in range(self.rows):
+ for j in range(self.cols):
+ box = QLabel(f"{k}")
+ self.layout_inner_grid.addWidget(box, i, j, Qt.AlignmentFlag.AlignCenter)
+ k += 1
+
+ self.set_num.connect(self.set_num_handler)
+
+ @Slot(int, QColor)
+ def set_num_handler(self, i, color):
+ row = int((i - 1) / self.cols)
+ col = (i - 1) - (row * self.cols)
+ widget = self.layout_inner_grid.itemAtPosition(row, col).widget()
+
+ font = QFont()
+ font.setWeight(QFont.Bold)
+ palette = QPalette()
+ palette.setColor(QPalette.WindowText, color)
+ widget.setFont(font)
+ widget.setPalette(palette)
+
+
+class Eratosthenes(QObject):
+
+ """ This Sieve of Eratosthenes runs on a configurable tick (default
+ 0.1 seconds). At each tick, a new subroutine will be created
+ that will check multiples of the next prime number. Each of
+ these subroutines also operates on the same tick. """
+
+ def __init__(self, num, window, tick=0.1):
+ super().__init__()
+ self.num = num
+ self.sieve = [True] * self.num
+ self.base = 0
+ self.window = window
+ self.tick = tick
+ self.coroutines = []
+ self.done = False
+ self.loop = None
+
+ def get_tick(self):
+ return self.loop.time() + self.tick
+
+ async def start(self):
+ self.loop = asyncio.get_event_loop()
+ asyncio.create_task(self.update_text())
+ while self.base <= self.num / 2:
+ await asyncio.sleep(self.tick)
+ for i in range(self.base + 1, self.num):
+ if self.sieve[i]:
+ self.base = i
+ break
+ asyncio.create_task(self.mark_number(self.base + 1))
+ while sum(self.coroutines) > 0:
+ await asyncio.sleep(self.tick)
+ self.done = True
+
+ async def mark_number(self, base):
+ id = len(self.coroutines)
+ self.coroutines.append(1)
+ color = QColor(randint(64, 192), randint(64, 192), randint(64, 192))
+ for i in range(2 * base, self.num + 1, base):
+ if self.sieve[i - 1]:
+ self.sieve[i - 1] = False
+ self.window.set_num.emit(i, color)
+ await asyncio.sleep(self.tick)
+ self.coroutines[id] = 0
+
+ async def update_text(self):
+ while not self.done:
+ await asyncio.sleep(self.tick)
+ if int(self.loop.time() + self.tick) % 2:
+ text = "⚙️ ...Calculating prime numbers... ⚙️"
+ else:
+ text = "👩‍💻 ...Hacking the universe... 👩‍💻"
+ self.window.widget_outer_text.setText(text)
+
+ self.window.widget_outer_text.setText(
+ "🥳 Congratulations! You found all the prime numbers and solved mathematics. 🥳"
+ )
+
+
+if __name__ == "__main__":
+ rows = 40
+ cols = 40
+ num = rows * cols
+
+ app = QApplication(sys.argv)
+ main_window = MainWindow(rows, cols)
+ eratosthenes = Eratosthenes(num, main_window)
+
+ main_window.show()
+
+ QtAsyncio.run(eratosthenes.start())
diff --git a/examples/async/eratosthenes/eratosthenes_trio.py b/examples/async/eratosthenes/eratosthenes_trio.py
new file mode 100644
index 000000000..89d3d1ce6
--- /dev/null
+++ b/examples/async/eratosthenes/eratosthenes_trio.py
@@ -0,0 +1,197 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import (Qt, QEvent, QObject, QTimer, Signal, Slot)
+from PySide6.QtGui import (QColor, QFont, QPalette)
+from PySide6.QtWidgets import (QApplication, QGridLayout, QLabel, QMainWindow, QVBoxLayout, QWidget)
+
+import outcome
+import signal
+import sys
+import traceback
+import trio
+from random import randint
+
+
+class MainWindow(QMainWindow):
+
+ set_num = Signal(int, QColor)
+
+ def __init__(self, rows, cols):
+ super().__init__()
+
+ self.rows = rows
+ self.cols = cols
+
+ widget_central = QWidget()
+ self.setCentralWidget(widget_central)
+
+ layout_outer = QVBoxLayout(widget_central)
+
+ self.widget_outer_text = QLabel()
+ font = QFont()
+ font.setPointSize(14)
+ self.widget_outer_text.setFont(font)
+ layout_outer.addWidget(self.widget_outer_text, alignment=Qt.AlignmentFlag.AlignCenter)
+
+ widget_inner_grid = QWidget()
+ layout_outer.addWidget(widget_inner_grid, alignment=Qt.AlignmentFlag.AlignCenter)
+
+ self.layout_inner_grid = QGridLayout(widget_inner_grid)
+ k = 1
+ for i in range(self.rows):
+ for j in range(self.cols):
+ box = QLabel(f"{k}")
+ self.layout_inner_grid.addWidget(box, i, j, Qt.AlignmentFlag.AlignCenter)
+ k += 1
+
+ self.set_num.connect(self.set_num_handler)
+
+ @Slot(int, QColor)
+ def set_num_handler(self, i, color):
+ row = int((i - 1) / self.cols)
+ col = (i - 1) - (row * self.cols)
+ widget = self.layout_inner_grid.itemAtPosition(row, col).widget()
+
+ font = QFont()
+ font.setWeight(QFont.Bold)
+ palette = QPalette()
+ palette.setColor(QPalette.WindowText, color)
+ widget.setFont(font)
+ widget.setPalette(palette)
+
+
+class Eratosthenes(QObject):
+
+ """ This Sieve of Eratosthenes runs on a configurable tick (default
+ 0.1 seconds). At each tick, a new subroutine will be created
+ that will check multiples of the next prime number. Each of
+ these subroutines also operates on the same tick. """
+
+ def __init__(self, num, window, tick=0.1):
+ super().__init__()
+ self.num = num
+ self.sieve = [True] * self.num
+ self.base = 0
+ self.window = window
+ self.tick = tick
+ self.coroutines = []
+ self.done = False
+ self.nursery = None
+
+ async def start(self):
+ async with trio.open_nursery() as self.nursery:
+ self.nursery.start_soon(self.update_text)
+ while self.base <= self.num / 2:
+ await trio.sleep(self.tick)
+ for i in range(self.base + 1, self.num):
+ if self.sieve[i]:
+ self.base = i
+ break
+ self.nursery.start_soon(self.mark_number, self.base + 1)
+ while sum(self.coroutines) > 0:
+ await trio.sleep(self.tick)
+ self.done = True
+
+ async def mark_number(self, base):
+ id = len(self.coroutines)
+ self.coroutines.append(1)
+ color = QColor(randint(64, 192), randint(64, 192), randint(64, 192))
+ for i in range(2 * base, self.num + 1, base):
+ if self.sieve[i - 1]:
+ self.sieve[i - 1] = False
+ self.window.set_num.emit(i, color)
+ await trio.sleep(self.tick)
+ self.coroutines[id] = 0
+
+ async def update_text(self):
+ while not self.done:
+ await trio.sleep(self.tick)
+ if int(trio.lowlevel.current_clock().current_time() + self.tick) % 2:
+ text = "⚙️ ...Calculating prime numbers... ⚙️"
+ else:
+ text = "👩‍💻 ...Hacking the universe... 👩‍💻"
+ self.window.widget_outer_text.setText(text)
+
+ self.window.widget_outer_text.setText(
+ "🥳 Congratulations! You found all the prime numbers and solved mathematics. 🥳"
+ )
+
+
+class AsyncHelper(QObject):
+
+ class ReenterQtObject(QObject):
+ """ This is a QObject to which an event will be posted, allowing
+ Trio to resume when the event is handled. event.fn() is the
+ next entry point of the Trio event loop. """
+ def event(self, event):
+ if event.type() == QEvent.Type.User + 1:
+ event.fn()
+ return True
+ return False
+
+ class ReenterQtEvent(QEvent):
+ """ This is the QEvent that will be handled by the ReenterQtObject.
+ self.fn is the next entry point of the Trio event loop. """
+ def __init__(self, fn):
+ super().__init__(QEvent.Type(QEvent.Type.User + 1))
+ self.fn = fn
+
+ def __init__(self, worker, entry):
+ super().__init__()
+ self.reenter_qt = self.ReenterQtObject()
+ self.entry = entry
+
+ self.worker = worker
+ if hasattr(self.worker, "start_signal") and isinstance(self.worker.start_signal, Signal):
+ self.worker.start_signal.connect(self.launch_guest_run)
+
+ @Slot()
+ def launch_guest_run(self):
+ """ To use Trio and Qt together, one must run the Trio event
+ loop as a "guest" inside the Qt "host" event loop. """
+ if not self.entry:
+ raise Exception("No entry point for the Trio guest run was set.")
+ trio.lowlevel.start_guest_run(
+ self.entry,
+ run_sync_soon_threadsafe=self.next_guest_run_schedule,
+ done_callback=self.trio_done_callback,
+ )
+
+ def next_guest_run_schedule(self, fn):
+ """ This function serves to re-schedule the guest (Trio) event
+ loop inside the host (Qt) event loop. It is called by Trio
+ at the end of an event loop run in order to relinquish back
+ to Qt's event loop. By posting an event on the Qt event loop
+ that contains Trio's next entry point, it ensures that Trio's
+ event loop will be scheduled again by Qt. """
+ QApplication.postEvent(self.reenter_qt, self.ReenterQtEvent(fn))
+
+ def trio_done_callback(self, outcome_):
+ """ This function is called by Trio when its event loop has
+ finished. """
+ if isinstance(outcome_, outcome.Error):
+ error = outcome_.error
+ traceback.print_exception(type(error), error, error.__traceback__)
+
+
+if __name__ == "__main__":
+ rows = 40
+ cols = 40
+ num = rows * cols
+
+ app = QApplication(sys.argv)
+ main_window = MainWindow(rows, cols)
+ eratosthenes = Eratosthenes(num, main_window)
+ async_helper = AsyncHelper(eratosthenes, eratosthenes.start)
+
+ # This establishes the entry point for the Trio guest run. It varies
+ # depending on how and when its event loop is to be triggered, e.g.,
+ # from the beginning (as here) or rather at a specific moment like
+ # a button press.
+ QTimer.singleShot(0, async_helper.launch_guest_run)
+
+ main_window.show()
+
+ signal.signal(signal.SIGINT, signal.SIG_DFL)
+ app.exec()
diff --git a/examples/async/eratosthenes/requirements_trio.txt b/examples/async/eratosthenes/requirements_trio.txt
new file mode 100644
index 000000000..e2cc10204
--- /dev/null
+++ b/examples/async/eratosthenes/requirements_trio.txt
@@ -0,0 +1,2 @@
+trio
+outcome
diff --git a/examples/async/minimal/doc/minimal.png b/examples/async/minimal/doc/minimal.png
new file mode 100644
index 000000000..b8a18963f
--- /dev/null
+++ b/examples/async/minimal/doc/minimal.png
Binary files differ
diff --git a/examples/async/minimal/doc/minimal.rst b/examples/async/minimal/doc/minimal.rst
new file mode 100644
index 000000000..54f847ea9
--- /dev/null
+++ b/examples/async/minimal/doc/minimal.rst
@@ -0,0 +1,38 @@
+Async "Minimal" Example
+=======================
+
+The Python language provides keywords for asynchronous operations, i.e.,
+"async" to define coroutines or "await" to schedule asynchronous calls in the
+event loop (see `PEP 492 <https://peps.python.org/pep-0492/>`_). It is up to
+packages to implement an event loop, support for these keywords, and more.
+
+The best-known package for this is `asyncio`. asyncio offers an API that allows
+for the asyncio event loop to be replaced by a custom implementation. Such an
+implementation is available with the `QtAsyncio` module. It is based on Qt and
+uses Qt's event loop in the backend.
+
+`trio` is another popular package that offers a dedicated `low-level API
+<https://trio.readthedocs.io/en/stable/reference-lowlevel.html>`_ for more
+complex use cases. Specifically, there exists a function `start_guest_run` that
+enables running the Trio event loop as a "guest" inside another event loop -
+Qt's in our case, standing in contrast to asyncio's approach.
+
+Based on this functionality, two examples for async usage with Qt have been
+implemented: `eratosthenes` and `minimal`:
+
+.. image:: minimal.png
+ :alt: Async example: Minimal
+
+* `eratosthenes` is a more extensive example that visualizes the Sieve of
+ Eratosthenes algorithm. This algorithm per se is not one that is particularly
+ suitable for asynchronous operations as it's not I/O-heavy, but synchronizing
+ coroutines to a configurable tick allows for a good visualization.
+* `minimal` is a minimal example featuring a button that triggers an
+ asynchronous coroutine with a sleep. It is designed to highlight which
+ boilerplate code is essential for an async program with Qt and offers a
+ starting point for more complex programs.
+
+While `eratosthenes` offloads the asynchronous logic that will run in
+trio's/asyncio's event loop into a separate class, `minimal` demonstrates that
+async functions can be integrated into any class, including subclasses of Qt
+classes.
diff --git a/examples/async/minimal/minimal.pyproject b/examples/async/minimal/minimal.pyproject
new file mode 100644
index 000000000..b4b1a3f80
--- /dev/null
+++ b/examples/async/minimal/minimal.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["minimal_trio.py", "minimal_asyncio.py"]
+}
diff --git a/examples/async/minimal/minimal_asyncio.py b/examples/async/minimal/minimal_asyncio.py
new file mode 100644
index 000000000..1b72f44c1
--- /dev/null
+++ b/examples/async/minimal/minimal_asyncio.py
@@ -0,0 +1,40 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Qt
+from PySide6.QtWidgets import (QApplication, QLabel, QMainWindow, QPushButton, QVBoxLayout, QWidget)
+
+import PySide6.QtAsyncio as QtAsyncio
+
+import asyncio
+import sys
+
+
+class MainWindow(QMainWindow):
+
+ def __init__(self):
+ super().__init__()
+
+ widget = QWidget()
+ self.setCentralWidget(widget)
+
+ layout = QVBoxLayout(widget)
+
+ self.text = QLabel("The answer is 42.")
+ layout.addWidget(self.text, alignment=Qt.AlignmentFlag.AlignCenter)
+
+ async_trigger = QPushButton(text="What is the question?")
+ async_trigger.clicked.connect(lambda: asyncio.ensure_future(self.set_text()))
+ layout.addWidget(async_trigger, alignment=Qt.AlignmentFlag.AlignCenter)
+
+ async def set_text(self):
+ await asyncio.sleep(1)
+ self.text.setText("What do you get if you multiply six by nine?")
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ main_window = MainWindow()
+ main_window.show()
+
+ QtAsyncio.run()
diff --git a/examples/async/minimal/minimal_trio.py b/examples/async/minimal/minimal_trio.py
new file mode 100644
index 000000000..5ae19fa36
--- /dev/null
+++ b/examples/async/minimal/minimal_trio.py
@@ -0,0 +1,107 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import (Qt, QEvent, QObject, Signal, Slot)
+from PySide6.QtWidgets import (QApplication, QLabel, QMainWindow, QPushButton, QVBoxLayout, QWidget)
+
+import outcome
+import signal
+import sys
+import traceback
+import trio
+
+
+class MainWindow(QMainWindow):
+
+ start_signal = Signal()
+
+ def __init__(self):
+ super().__init__()
+
+ widget = QWidget()
+ self.setCentralWidget(widget)
+
+ layout = QVBoxLayout(widget)
+
+ self.text = QLabel("The answer is 42.")
+ layout.addWidget(self.text, alignment=Qt.AlignmentFlag.AlignCenter)
+
+ async_trigger = QPushButton(text="What is the question?")
+ async_trigger.clicked.connect(self.async_start)
+ layout.addWidget(async_trigger, alignment=Qt.AlignmentFlag.AlignCenter)
+
+ @Slot()
+ def async_start(self):
+ self.start_signal.emit()
+
+ async def set_text(self):
+ await trio.sleep(1)
+ self.text.setText("What do you get if you multiply six by nine?")
+
+
+class AsyncHelper(QObject):
+
+ class ReenterQtObject(QObject):
+ """ This is a QObject to which an event will be posted, allowing
+ Trio to resume when the event is handled. event.fn() is the
+ next entry point of the Trio event loop. """
+ def event(self, event):
+ if event.type() == QEvent.Type.User + 1:
+ event.fn()
+ return True
+ return False
+
+ class ReenterQtEvent(QEvent):
+ """ This is the QEvent that will be handled by the ReenterQtObject.
+ self.fn is the next entry point of the Trio event loop. """
+ def __init__(self, fn):
+ super().__init__(QEvent.Type(QEvent.Type.User + 1))
+ self.fn = fn
+
+ def __init__(self, worker, entry):
+ super().__init__()
+ self.reenter_qt = self.ReenterQtObject()
+ self.entry = entry
+
+ self.worker = worker
+ if hasattr(self.worker, "start_signal") and isinstance(self.worker.start_signal, Signal):
+ self.worker.start_signal.connect(self.launch_guest_run)
+
+ @Slot()
+ def launch_guest_run(self):
+ """ To use Trio and Qt together, one must run the Trio event
+ loop as a "guest" inside the Qt "host" event loop. """
+ if not self.entry:
+ raise Exception("No entry point for the Trio guest run was set.")
+ trio.lowlevel.start_guest_run(
+ self.entry,
+ run_sync_soon_threadsafe=self.next_guest_run_schedule,
+ done_callback=self.trio_done_callback,
+ )
+
+ def next_guest_run_schedule(self, fn):
+ """ This function serves to re-schedule the guest (Trio) event
+ loop inside the host (Qt) event loop. It is called by Trio
+ at the end of an event loop run in order to relinquish back
+ to Qt's event loop. By posting an event on the Qt event loop
+ that contains Trio's next entry point, it ensures that Trio's
+ event loop will be scheduled again by Qt. """
+ QApplication.postEvent(self.reenter_qt, self.ReenterQtEvent(fn))
+
+ def trio_done_callback(self, outcome_):
+ """ This function is called by Trio when its event loop has
+ finished. """
+ if isinstance(outcome_, outcome.Error):
+ error = outcome_.error
+ traceback.print_exception(type(error), error, error.__traceback__)
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ main_window = MainWindow()
+ async_helper = AsyncHelper(main_window, main_window.set_text)
+
+ main_window.show()
+
+ signal.signal(signal.SIGINT, signal.SIG_DFL)
+ app.exec()
diff --git a/examples/async/minimal/requirements_trio.txt b/examples/async/minimal/requirements_trio.txt
new file mode 100644
index 000000000..ae0d704f0
--- /dev/null
+++ b/examples/async/minimal/requirements_trio.txt
@@ -0,0 +1 @@
+trio
diff --git a/examples/axcontainer/axviewer/axviewer.py b/examples/axcontainer/axviewer/axviewer.py
index e7e03d2c9..bcd4c2714 100644
--- a/examples/axcontainer/axviewer/axviewer.py
+++ b/examples/axcontainer/axviewer/axviewer.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2017 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 Active Qt Viewer example"""
@@ -45,7 +7,7 @@ import sys
from PySide6.QtAxContainer import QAxSelect, QAxWidget
from PySide6.QtGui import QAction
from PySide6.QtWidgets import (QApplication, QDialog,
- QMainWindow, QMessageBox, QToolBar)
+ QMainWindow, QMessageBox, QToolBar)
class MainWindow(QMainWindow):
@@ -63,7 +25,7 @@ class MainWindow(QMainWindow):
fileMenu.addAction(exitAction)
aboutMenu = self.menuBar().addMenu("&About")
- aboutQtAct = QAction("About &Qt", self, triggered=qApp.aboutQt)
+ aboutQtAct = QAction("About &Qt", self, triggered=qApp.aboutQt) # noqa: F821
aboutMenu.addAction(aboutQtAct)
self.axWidget = QAxWidget()
self.setCentralWidget(self.axWidget)
diff --git a/examples/bluetooth/btscanner/btscanner.pyproject b/examples/bluetooth/btscanner/btscanner.pyproject
new file mode 100644
index 000000000..208487fe7
--- /dev/null
+++ b/examples/bluetooth/btscanner/btscanner.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "device.py", "service.py", "device.ui", "service.ui"]
+}
diff --git a/examples/bluetooth/btscanner/device.py b/examples/bluetooth/btscanner/device.py
new file mode 100644
index 000000000..c75f5b8a1
--- /dev/null
+++ b/examples/bluetooth/btscanner/device.py
@@ -0,0 +1,130 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QPoint, Qt, Slot
+from PySide6.QtGui import QColor
+from PySide6.QtWidgets import QDialog, QListWidgetItem, QMenu
+from PySide6.QtBluetooth import (QBluetoothAddress, QBluetoothDeviceDiscoveryAgent,
+ QBluetoothDeviceInfo, QBluetoothLocalDevice)
+
+from ui_device import Ui_DeviceDiscovery
+from service import ServiceDiscoveryDialog
+
+
+class DeviceDiscoveryDialog(QDialog):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._local_device = QBluetoothLocalDevice()
+ self._ui = Ui_DeviceDiscovery()
+ self._ui.setupUi(self)
+ # In case of multiple Bluetooth adapters it is possible to set adapter
+ # which will be used. Example code:
+ #
+ # address = QBluetoothAddress("XX:XX:XX:XX:XX:XX")
+ # discoveryAgent = QBluetoothDeviceDiscoveryAgent(address)
+
+ self._discovery_agent = QBluetoothDeviceDiscoveryAgent()
+
+ self._ui.scan.clicked.connect(self.start_scan)
+ self._discovery_agent.deviceDiscovered.connect(self.add_device)
+ self._discovery_agent.finished.connect(self.scan_finished)
+ self._ui.list.itemActivated.connect(self.item_activated)
+ self._local_device.hostModeStateChanged.connect(self.host_mode_state_changed)
+
+ self.host_mode_state_changed(self._local_device.hostMode())
+ # add context menu for devices to be able to pair device
+ self._ui.list.setContextMenuPolicy(Qt.CustomContextMenu)
+ self._ui.list.customContextMenuRequested.connect(self.display_pairing_menu)
+ self._local_device.pairingFinished.connect(self.pairing_done)
+
+ @Slot(QBluetoothDeviceInfo)
+ def add_device(self, info):
+ a = info.address().toString()
+ label = f"{a} {info.name()}"
+ items = self._ui.list.findItems(label, Qt.MatchExactly)
+ if not items:
+ item = QListWidgetItem(label)
+ pairing_status = self._local_device.pairingStatus(info.address())
+ if (pairing_status == QBluetoothLocalDevice.Paired
+ or pairing_status == QBluetoothLocalDevice.AuthorizedPaired):
+ item.setForeground(QColor(Qt.green))
+ else:
+ item.setForeground(QColor(Qt.black))
+ self._ui.list.addItem(item)
+
+ @Slot()
+ def start_scan(self):
+ self._discovery_agent.start()
+ self._ui.scan.setEnabled(False)
+
+ @Slot()
+ def scan_finished(self):
+ self._ui.scan.setEnabled(True)
+
+ @Slot(QListWidgetItem)
+ def item_activated(self, item):
+ text = item.text()
+ index = text.find(' ')
+ if index == -1:
+ return
+
+ address = QBluetoothAddress(text[0:index])
+ name = text[index + 1:]
+
+ d = ServiceDiscoveryDialog(name, address)
+ d.exec()
+
+ @Slot(bool)
+ def on_discoverable_clicked(self, clicked):
+ if clicked:
+ self._local_device.setHostMode(QBluetoothLocalDevice.HostDiscoverable)
+ else:
+ self._local_device.setHostMode(QBluetoothLocalDevice.HostConnectable)
+
+ @Slot(bool)
+ def on_power_clicked(self, clicked):
+ if clicked:
+ self._local_device.powerOn()
+ else:
+ self._local_device.setHostMode(QBluetoothLocalDevice.HostPoweredOff)
+
+ @Slot("QBluetoothLocalDevice::HostMode")
+ def host_mode_state_changed(self, mode):
+ self._ui.power.setChecked(mode != QBluetoothLocalDevice.HostPoweredOff)
+ self._ui.discoverable.setChecked(mode == QBluetoothLocalDevice.HostDiscoverable)
+
+ on = mode != QBluetoothLocalDevice.HostPoweredOff
+ self._ui.scan.setEnabled(on)
+ self._ui.discoverable.setEnabled(on)
+
+ @Slot(QPoint)
+ def display_pairing_menu(self, pos):
+ if self._ui.list.count() == 0:
+ return
+ menu = QMenu(self)
+ pair_action = menu.addAction("Pair")
+ remove_pair_action = menu.addAction("Remove Pairing")
+ chosen_action = menu.exec(self._ui.list.viewport().mapToGlobal(pos))
+ current_item = self._ui.list.currentItem()
+
+ text = current_item.text()
+ index = text.find(' ')
+ if index == -1:
+ return
+
+ address = QBluetoothAddress(text[0:index])
+ if chosen_action == pair_action:
+ self._local_device.requestPairing(address, QBluetoothLocalDevice.Paired)
+ elif chosen_action == remove_pair_action:
+ self._local_device.requestPairing(address, QBluetoothLocalDevice.Unpaired)
+
+ @Slot(QBluetoothAddress, "QBluetoothLocalDevice::Pairing")
+ def pairing_done(self, address, pairing):
+ items = self._ui.list.findItems(address.toString(), Qt.MatchContains)
+
+ color = QColor(Qt.red)
+ if (pairing == QBluetoothLocalDevice.Paired
+ or pairing == QBluetoothLocalDevice.AuthorizedPaired):
+ color = QColor(Qt.green)
+ for item in items:
+ item.setForeground(color)
diff --git a/examples/bluetooth/btscanner/device.ui b/examples/bluetooth/btscanner/device.ui
new file mode 100644
index 000000000..fa81c5cb4
--- /dev/null
+++ b/examples/bluetooth/btscanner/device.ui
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DeviceDiscovery</class>
+ <widget class="QDialog" name="DeviceDiscovery">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>411</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Bluetooth Scanner</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QListWidget" name="list"/>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Local Device</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QCheckBox" name="power">
+ <property name="text">
+ <string>Bluetooth Powered On</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="discoverable">
+ <property name="text">
+ <string>Discoverable</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QPushButton" name="scan">
+ <property name="text">
+ <string>Scan</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="clear">
+ <property name="text">
+ <string>Clear</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="quit">
+ <property name="text">
+ <string>Quit</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>quit</sender>
+ <signal>clicked()</signal>
+ <receiver>DeviceDiscovery</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>323</x>
+ <y>275</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>396</x>
+ <y>268</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>clear</sender>
+ <signal>clicked()</signal>
+ <receiver>list</receiver>
+ <slot>clear()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>188</x>
+ <y>276</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>209</x>
+ <y>172</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/examples/bluetooth/btscanner/doc/btscanner.rst b/examples/bluetooth/btscanner/doc/btscanner.rst
new file mode 100644
index 000000000..d99af3be5
--- /dev/null
+++ b/examples/bluetooth/btscanner/doc/btscanner.rst
@@ -0,0 +1,4 @@
+Bluetooth Scanner Example
+=========================
+
+An example showing how to locate Bluetooth devices.
diff --git a/examples/bluetooth/btscanner/main.py b/examples/bluetooth/btscanner/main.py
new file mode 100644
index 000000000..a54a862a2
--- /dev/null
+++ b/examples/bluetooth/btscanner/main.py
@@ -0,0 +1,17 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the bluetooth/btscanner example from Qt v6.x"""
+
+import sys
+
+from PySide6.QtWidgets import QApplication
+
+from device import DeviceDiscoveryDialog
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ d = DeviceDiscoveryDialog()
+ d.exec()
+ sys.exit(0)
diff --git a/examples/bluetooth/btscanner/service.py b/examples/bluetooth/btscanner/service.py
new file mode 100644
index 000000000..31df8a9ea
--- /dev/null
+++ b/examples/bluetooth/btscanner/service.py
@@ -0,0 +1,48 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Slot
+from PySide6.QtWidgets import QDialog
+from PySide6.QtBluetooth import (QBluetoothAddress, QBluetoothServiceInfo,
+ QBluetoothServiceDiscoveryAgent, QBluetoothLocalDevice)
+
+from ui_service import Ui_ServiceDiscovery
+
+
+class ServiceDiscoveryDialog(QDialog):
+ def __init__(self, name, address, parent=None):
+ super().__init__(parent)
+ self._ui = Ui_ServiceDiscovery()
+ self._ui.setupUi(self)
+
+ # Using default Bluetooth adapter
+ local_device = QBluetoothLocalDevice()
+ adapter_address = QBluetoothAddress(local_device.address())
+
+ # In case of multiple Bluetooth adapters it is possible to
+ # set which adapter will be used by providing MAC Address.
+ # Example code:
+ #
+ # adapterAddress = QBluetoothAddress("XX:XX:XX:XX:XX:XX")
+ # discoveryAgent = QBluetoothServiceDiscoveryAgent(adapterAddress)
+
+ self._discovery_agent = QBluetoothServiceDiscoveryAgent(adapter_address)
+ self._discovery_agent.setRemoteAddress(address)
+
+ self.setWindowTitle(name)
+
+ self._discovery_agent.serviceDiscovered.connect(self.add_service)
+ self._discovery_agent.finished.connect(self._ui.status.hide)
+ self._discovery_agent.start()
+
+ @Slot(QBluetoothServiceInfo)
+ def add_service(self, info):
+ line = info.serviceName()
+ if not line:
+ return
+
+ if info.serviceDescription():
+ line += "\n\t" + info.serviceDescription()
+ if info.serviceProvider():
+ line += "\n\t" + info.serviceProvider()
+ self._ui.list.addItem(line)
diff --git a/examples/bluetooth/btscanner/service.ui b/examples/bluetooth/btscanner/service.ui
new file mode 100644
index 000000000..4ca12ee05
--- /dev/null
+++ b/examples/bluetooth/btscanner/service.ui
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ServiceDiscovery</class>
+ <widget class="QDialog" name="ServiceDiscovery">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>539</width>
+ <height>486</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Available Services</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QListWidget" name="list"/>
+ </item>
+ <item>
+ <widget class="QLabel" name="status">
+ <property name="text">
+ <string>Querying...</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Close</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>ServiceDiscovery</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>396</x>
+ <y>457</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>535</x>
+ <y>443</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>ServiceDiscovery</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>339</x>
+ <y>464</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>535</x>
+ <y>368</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/examples/bluetooth/btscanner/ui_device.py b/examples/bluetooth/btscanner/ui_device.py
new file mode 100644
index 000000000..b443b2bc2
--- /dev/null
+++ b/examples/bluetooth/btscanner/ui_device.py
@@ -0,0 +1,90 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'device.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QCheckBox, QDialog, QGroupBox,
+ QHBoxLayout, QListWidget, QListWidgetItem, QPushButton,
+ QSizePolicy, QVBoxLayout, QWidget)
+
+class Ui_DeviceDiscovery(object):
+ def setupUi(self, DeviceDiscovery):
+ if not DeviceDiscovery.objectName():
+ DeviceDiscovery.setObjectName(u"DeviceDiscovery")
+ DeviceDiscovery.resize(400, 411)
+ self.verticalLayout = QVBoxLayout(DeviceDiscovery)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.list = QListWidget(DeviceDiscovery)
+ self.list.setObjectName(u"list")
+
+ self.verticalLayout.addWidget(self.list)
+
+ self.groupBox = QGroupBox(DeviceDiscovery)
+ self.groupBox.setObjectName(u"groupBox")
+ self.horizontalLayout_2 = QHBoxLayout(self.groupBox)
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
+ self.power = QCheckBox(self.groupBox)
+ self.power.setObjectName(u"power")
+ self.power.setChecked(True)
+
+ self.horizontalLayout_2.addWidget(self.power)
+
+ self.discoverable = QCheckBox(self.groupBox)
+ self.discoverable.setObjectName(u"discoverable")
+ self.discoverable.setChecked(True)
+
+ self.horizontalLayout_2.addWidget(self.discoverable)
+
+
+ self.verticalLayout.addWidget(self.groupBox)
+
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.scan = QPushButton(DeviceDiscovery)
+ self.scan.setObjectName(u"scan")
+
+ self.horizontalLayout.addWidget(self.scan)
+
+ self.clear = QPushButton(DeviceDiscovery)
+ self.clear.setObjectName(u"clear")
+
+ self.horizontalLayout.addWidget(self.clear)
+
+ self.quit = QPushButton(DeviceDiscovery)
+ self.quit.setObjectName(u"quit")
+
+ self.horizontalLayout.addWidget(self.quit)
+
+
+ self.verticalLayout.addLayout(self.horizontalLayout)
+
+
+ self.retranslateUi(DeviceDiscovery)
+ self.quit.clicked.connect(DeviceDiscovery.accept)
+ self.clear.clicked.connect(self.list.clear)
+
+ QMetaObject.connectSlotsByName(DeviceDiscovery)
+ # setupUi
+
+ def retranslateUi(self, DeviceDiscovery):
+ DeviceDiscovery.setWindowTitle(QCoreApplication.translate("DeviceDiscovery", u"Bluetooth Scanner", None))
+ self.groupBox.setTitle(QCoreApplication.translate("DeviceDiscovery", u"Local Device", None))
+ self.power.setText(QCoreApplication.translate("DeviceDiscovery", u"Bluetooth Powered On", None))
+ self.discoverable.setText(QCoreApplication.translate("DeviceDiscovery", u"Discoverable", None))
+ self.scan.setText(QCoreApplication.translate("DeviceDiscovery", u"Scan", None))
+ self.clear.setText(QCoreApplication.translate("DeviceDiscovery", u"Clear", None))
+ self.quit.setText(QCoreApplication.translate("DeviceDiscovery", u"Quit", None))
+ # retranslateUi
+
diff --git a/examples/bluetooth/btscanner/ui_service.py b/examples/bluetooth/btscanner/ui_service.py
new file mode 100644
index 000000000..ccc36677a
--- /dev/null
+++ b/examples/bluetooth/btscanner/ui_service.py
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'service.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QAbstractButton, QApplication, QDialog, QDialogButtonBox,
+ QLabel, QListWidget, QListWidgetItem, QSizePolicy,
+ QVBoxLayout, QWidget)
+
+class Ui_ServiceDiscovery(object):
+ def setupUi(self, ServiceDiscovery):
+ if not ServiceDiscovery.objectName():
+ ServiceDiscovery.setObjectName(u"ServiceDiscovery")
+ ServiceDiscovery.resize(539, 486)
+ self.verticalLayout = QVBoxLayout(ServiceDiscovery)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.list = QListWidget(ServiceDiscovery)
+ self.list.setObjectName(u"list")
+
+ self.verticalLayout.addWidget(self.list)
+
+ self.status = QLabel(ServiceDiscovery)
+ self.status.setObjectName(u"status")
+
+ self.verticalLayout.addWidget(self.status)
+
+ self.buttonBox = QDialogButtonBox(ServiceDiscovery)
+ self.buttonBox.setObjectName(u"buttonBox")
+ self.buttonBox.setStandardButtons(QDialogButtonBox.Close)
+
+ self.verticalLayout.addWidget(self.buttonBox)
+
+
+ self.retranslateUi(ServiceDiscovery)
+ self.buttonBox.accepted.connect(ServiceDiscovery.accept)
+ self.buttonBox.rejected.connect(ServiceDiscovery.reject)
+
+ QMetaObject.connectSlotsByName(ServiceDiscovery)
+ # setupUi
+
+ def retranslateUi(self, ServiceDiscovery):
+ ServiceDiscovery.setWindowTitle(QCoreApplication.translate("ServiceDiscovery", u"Available Services", None))
+ self.status.setText(QCoreApplication.translate("ServiceDiscovery", u"Querying...", None))
+ # retranslateUi
+
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/App.qml b/examples/bluetooth/heartrate_game/HeartRateGame/App.qml
new file mode 100644
index 000000000..db6aa7145
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/App.qml
@@ -0,0 +1,99 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import HeartRateGame
+
+Item {
+ id: app
+
+ required property ConnectionHandler connectionHandler
+ required property DeviceFinder deviceFinder
+ required property DeviceHandler deviceHandler
+
+ anchors.fill: parent
+ opacity: 0.0
+
+ Behavior on opacity {
+ NumberAnimation {
+ duration: 500
+ }
+ }
+
+ property int __currentIndex: 0
+
+ TitleBar {
+ id: titleBar
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ currentIndex: app.__currentIndex
+
+ onTitleClicked: (index) => {
+ if (index < app.__currentIndex)
+ app.__currentIndex = index
+ }
+ }
+
+ StackLayout {
+ id: pageStack
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: titleBar.bottom
+ anchors.bottom: parent.bottom
+ currentIndex: app.__currentIndex
+
+ Connect {
+ connectionHandler: app.connectionHandler
+ deviceFinder: app.deviceFinder
+ deviceHandler: app.deviceHandler
+
+ onShowMeasurePage: app.__currentIndex = 1
+ }
+ Measure {
+ id: measurePage
+ deviceHandler: app.deviceHandler
+
+ onShowStatsPage: app.__currentIndex = 2
+ }
+ Stats {
+ deviceHandler: app.deviceHandler
+ }
+
+ onCurrentIndexChanged: {
+ if (currentIndex === 0)
+ measurePage.close()
+ }
+ }
+
+ BluetoothAlarmDialog {
+ id: btAlarmDialog
+ anchors.fill: parent
+ visible: !app.connectionHandler.alive || permissionError
+ permissionError: !app.connectionHandler.hasPermission
+ }
+
+ Keys.onReleased: (event) => {
+ switch (event.key) {
+ case Qt.Key_Escape:
+ case Qt.Key_Back:
+ {
+ if (app.__currentIndex > 0) {
+ app.__currentIndex = app.__currentIndex - 1
+ event.accepted = true
+ } else {
+ Qt.quit()
+ }
+ break
+ }
+ default:
+ break
+ }
+ }
+
+ Component.onCompleted: {
+ forceActiveFocus()
+ app.opacity = 1.0
+ }
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/BluetoothAlarmDialog.qml b/examples/bluetooth/heartrate_game/HeartRateGame/BluetoothAlarmDialog.qml
new file mode 100644
index 000000000..3687b1331
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/BluetoothAlarmDialog.qml
@@ -0,0 +1,79 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Item {
+ id: root
+
+ property bool permissionError: false
+
+ anchors.fill: parent
+
+ Rectangle {
+ anchors.fill: parent
+ color: "black"
+ opacity: 0.9
+ }
+
+ MouseArea {
+ id: eventEater
+ }
+
+ Rectangle {
+ id: dialogFrame
+
+ anchors.centerIn: parent
+ width: parent.width * 0.8
+ height: parent.height * 0.6
+ border.color: "#454545"
+ color: GameSettings.backgroundColor
+ radius: width * 0.05
+
+ Item {
+ id: dialogContainer
+ anchors.fill: parent
+ anchors.margins: parent.width*0.05
+
+ Image {
+ id: offOnImage
+ anchors.left: quitButton.left
+ anchors.right: quitButton.right
+ anchors.top: parent.top
+ height: GameSettings.heightForWidth(width, sourceSize)
+ source: "images/bt_off_to_on.png"
+ }
+
+ Text {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: offOnImage.bottom
+ anchors.bottom: quitButton.top
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ wrapMode: Text.WordWrap
+ font.pixelSize: GameSettings.mediumFontSize
+ color: GameSettings.textColor
+ text: root.permissionError
+ ? qsTr("Bluetooth permissions are not granted. Please grant the permissions in the system settings.")
+ : qsTr("This application cannot be used without Bluetooth. Please switch Bluetooth ON to continue.")
+ }
+
+ GameButton {
+ id: quitButton
+ anchors.bottom: parent.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: dialogContainer.width * 0.6
+ height: GameSettings.buttonHeight
+ onClicked: Qt.quit()
+
+ Text {
+ anchors.centerIn: parent
+ color: GameSettings.textColor
+ font.pixelSize: GameSettings.bigFontSize
+ text: qsTr("Quit")
+ }
+ }
+ }
+ }
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/BottomLine.qml b/examples/bluetooth/heartrate_game/HeartRateGame/BottomLine.qml
new file mode 100644
index 000000000..caebc307e
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/BottomLine.qml
@@ -0,0 +1,12 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Rectangle {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ width: parent.width * 0.85
+ height: parent.height * 0.05
+ radius: height*0.5
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/Connect.qml b/examples/bluetooth/heartrate_game/HeartRateGame/Connect.qml
new file mode 100644
index 000000000..ca8ef2923
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/Connect.qml
@@ -0,0 +1,159 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+import QtQuick
+import HeartRateGame
+
+GamePage {
+ id: connectPage
+
+ required property ConnectionHandler connectionHandler
+ required property DeviceFinder deviceFinder
+ required property DeviceHandler deviceHandler
+
+ signal showMeasurePage
+
+ errorMessage: deviceFinder.error
+ infoMessage: deviceFinder.info
+
+ Rectangle {
+ id: viewContainer
+ anchors.top: parent.top
+ // only BlueZ platform has address type selection
+ anchors.bottom: connectPage.connectionHandler.requiresAddressType ? addressTypeButton.top
+ : searchButton.top
+ anchors.topMargin: GameSettings.fieldMargin + connectPage.messageHeight
+ anchors.bottomMargin: GameSettings.fieldMargin
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width - GameSettings.fieldMargin * 2
+ color: GameSettings.viewColor
+ radius: GameSettings.buttonRadius
+
+ Text {
+ id: title
+ width: parent.width
+ height: GameSettings.fieldHeight
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ color: GameSettings.textColor
+ font.pixelSize: GameSettings.mediumFontSize
+ text: qsTr("FOUND DEVICES")
+
+ BottomLine {
+ height: 1
+ width: parent.width
+ color: "#898989"
+ }
+ }
+
+ ListView {
+ id: devices
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ anchors.top: title.bottom
+ model: connectPage.deviceFinder.devices
+ clip: true
+
+ delegate: Rectangle {
+ id: box
+
+ required property int index
+ required property var modelData
+
+ height: GameSettings.fieldHeight * 1.2
+ width: devices.width
+ color: index % 2 === 0 ? GameSettings.delegate1Color : GameSettings.delegate2Color
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ connectPage.deviceFinder.connectToService(box.modelData.deviceAddress)
+ connectPage.showMeasurePage()
+ }
+ }
+
+ Text {
+ id: device
+ font.pixelSize: GameSettings.smallFontSize
+ text: box.modelData.deviceName
+ anchors.top: parent.top
+ anchors.topMargin: parent.height * 0.1
+ anchors.leftMargin: parent.height * 0.1
+ anchors.left: parent.left
+ color: GameSettings.textColor
+ }
+
+ Text {
+ id: deviceAddress
+ font.pixelSize: GameSettings.smallFontSize
+ text: box.modelData.deviceAddress
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: parent.height * 0.1
+ anchors.rightMargin: parent.height * 0.1
+ anchors.right: parent.right
+ color: Qt.darker(GameSettings.textColor)
+ }
+ }
+ }
+ }
+
+ GameButton {
+ id: addressTypeButton
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: searchButton.top
+ anchors.bottomMargin: GameSettings.fieldMargin * 0.5
+ width: viewContainer.width
+ height: GameSettings.fieldHeight
+ visible: connectPage.connectionHandler.requiresAddressType // only required on BlueZ
+ state: "public"
+ onClicked: state === "public" ? state = "random" : state = "public"
+
+ states: [
+ State {
+ name: "public"
+ PropertyChanges {
+ addressTypeText.text: qsTr("Public Address")
+ }
+ PropertyChanges {
+ connectPage.deviceHandler.addressType: DeviceHandler.PUBLIC_ADDRESS
+ }
+ },
+ State {
+ name: "random"
+ PropertyChanges {
+ addressTypeText.text: qsTr("Random Address")
+ }
+ PropertyChanges {
+ connectPage.deviceHandler.addressType: DeviceHandler.RANDOM_ADDRESS
+ }
+ }
+ ]
+
+ Text {
+ id: addressTypeText
+ anchors.centerIn: parent
+ font.pixelSize: GameSettings.tinyFontSize
+ color: GameSettings.textColor
+ }
+ }
+
+ GameButton {
+ id: searchButton
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: GameSettings.fieldMargin
+ width: viewContainer.width
+ height: GameSettings.fieldHeight
+ enabled: !connectPage.deviceFinder.scanning
+ onClicked: connectPage.deviceFinder.startSearch()
+
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: GameSettings.tinyFontSize
+ text: qsTr("START SEARCH")
+ color: searchButton.enabled ? GameSettings.textColor : GameSettings.disabledTextColor
+ }
+ }
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/GameButton.qml b/examples/bluetooth/heartrate_game/HeartRateGame/GameButton.qml
new file mode 100644
index 000000000..8e8760102
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/GameButton.qml
@@ -0,0 +1,39 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Rectangle {
+ id: button
+ color: baseColor
+ onEnabledChanged: checkColor()
+ radius: GameSettings.buttonRadius
+
+ property color baseColor: GameSettings.buttonColor
+ property color pressedColor: GameSettings.buttonPressedColor
+ property color disabledColor: GameSettings.disabledButtonColor
+
+ signal clicked
+
+ function checkColor() {
+ if (!button.enabled) {
+ button.color = disabledColor
+ } else {
+ if (mouseArea.containsPress)
+ button.color = pressedColor
+ else
+ button.color = baseColor
+ }
+ }
+
+ MouseArea {
+ id: mouseArea
+ anchors.fill: parent
+ onPressed: button.checkColor()
+ onReleased: button.checkColor()
+ onClicked: {
+ button.checkColor()
+ button.clicked()
+ }
+ }
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/GamePage.qml b/examples/bluetooth/heartrate_game/HeartRateGame/GamePage.qml
new file mode 100644
index 000000000..249f94186
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/GamePage.qml
@@ -0,0 +1,36 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Item {
+ id: page
+
+ property string errorMessage: ""
+ property string infoMessage: ""
+ property real messageHeight: msg.height
+ property bool hasError: errorMessage != ""
+ property bool hasInfo: infoMessage != ""
+
+ Rectangle {
+ id: msg
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ height: GameSettings.fieldHeight
+ color: page.hasError ? GameSettings.errorColor : GameSettings.infoColor
+ visible: page.hasError || page.hasInfo
+
+ Text {
+ id: error
+ anchors.fill: parent
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ minimumPixelSize: 5
+ font.pixelSize: GameSettings.smallFontSize
+ fontSizeMode: Text.Fit
+ color: GameSettings.textColor
+ text: page.hasError ? page.errorMessage : page.infoMessage
+ }
+ }
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/GameSettings.qml b/examples/bluetooth/heartrate_game/HeartRateGame/GameSettings.qml
new file mode 100644
index 000000000..0fe854609
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/GameSettings.qml
@@ -0,0 +1,51 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma Singleton
+import QtQuick
+
+Item {
+ property int wHeight
+ property int wWidth
+
+ // Colors
+ readonly property color backgroundColor: "#2d3037"
+ readonly property color buttonColor: "#202227"
+ readonly property color buttonPressedColor: "#6ccaf2"
+ readonly property color disabledButtonColor: "#555555"
+ readonly property color viewColor: "#202227"
+ readonly property color delegate1Color: Qt.darker(viewColor, 1.2)
+ readonly property color delegate2Color: Qt.lighter(viewColor, 1.2)
+ readonly property color textColor: "#ffffff"
+ readonly property color textDarkColor: "#232323"
+ readonly property color disabledTextColor: "#777777"
+ readonly property color sliderColor: "#6ccaf2"
+ readonly property color errorColor: "#ba3f62"
+ readonly property color infoColor: "#3fba62"
+
+ // Font sizes
+ property real microFontSize: hugeFontSize * 0.2
+ property real tinyFontSize: hugeFontSize * 0.4
+ property real smallTinyFontSize: hugeFontSize * 0.5
+ property real smallFontSize: hugeFontSize * 0.6
+ property real mediumFontSize: hugeFontSize * 0.7
+ property real bigFontSize: hugeFontSize * 0.8
+ property real largeFontSize: hugeFontSize * 0.9
+ property real hugeFontSize: (wWidth + wHeight) * 0.03
+ property real giganticFontSize: (wWidth + wHeight) * 0.04
+
+ // Some other values
+ property real fieldHeight: wHeight * 0.08
+ property real fieldMargin: fieldHeight * 0.5
+ property real buttonHeight: wHeight * 0.08
+ property real buttonRadius: buttonHeight * 0.1
+
+ // Some help functions
+ function widthForHeight(h, ss) {
+ return h / ss.height * ss.width
+ }
+
+ function heightForWidth(w, ss) {
+ return w / ss.width * ss.height
+ }
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/Main.qml b/examples/bluetooth/heartrate_game/HeartRateGame/Main.qml
new file mode 100644
index 000000000..e26f9b004
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/Main.qml
@@ -0,0 +1,71 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+import QtQuick
+import QtQuick.Window
+import HeartRateGame
+
+Window {
+ id: wroot
+ visible: true
+ width: 720 * .7
+ height: 1240 * .7
+ title: qsTr("HeartRateGame")
+ color: GameSettings.backgroundColor
+
+ required property ConnectionHandler connectionHandler
+ required property DeviceFinder deviceFinder
+ required property DeviceHandler deviceHandler
+
+ Component.onCompleted: {
+ GameSettings.wWidth = Qt.binding(function () {
+ return width
+ })
+ GameSettings.wHeight = Qt.binding(function () {
+ return height
+ })
+ }
+
+ Loader {
+ id: splashLoader
+ anchors.fill: parent
+ asynchronous: false
+ visible: true
+
+ sourceComponent: SplashScreen {
+ appIsReady: appLoader.status === Loader.Ready
+ onReadyChanged: {
+ if (ready) {
+ appLoader.visible = true
+ splashLoader.visible = false
+ splashLoader.active = false
+ }
+ }
+ }
+
+ onStatusChanged: {
+ if (status === Loader.Ready)
+ appLoader.active = true
+ }
+ }
+
+ Loader {
+ id: appLoader
+ anchors.fill: parent
+ active: false
+ asynchronous: true
+ visible: false
+
+ sourceComponent: App {
+ connectionHandler: wroot.connectionHandler
+ deviceFinder: wroot.deviceFinder
+ deviceHandler: wroot.deviceHandler
+ }
+
+ onStatusChanged: {
+ if (status === Loader.Error)
+ Qt.quit()
+ }
+ }
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/Measure.qml b/examples/bluetooth/heartrate_game/HeartRateGame/Measure.qml
new file mode 100644
index 000000000..48e84e762
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/Measure.qml
@@ -0,0 +1,212 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import HeartRateGame
+
+GamePage {
+ id: measurePage
+
+ required property DeviceHandler deviceHandler
+
+ errorMessage: deviceHandler.error
+ infoMessage: deviceHandler.info
+
+ property real __timeCounter: 0
+ property real __maxTimeCount: 60
+ property string relaxText: qsTr("Relax!\nWhen you are ready, press Start. You have %1s time to increase heartrate so much as possible.\nGood luck!").arg(__maxTimeCount)
+
+ signal showStatsPage
+
+ function close() {
+ deviceHandler.stopMeasurement()
+ deviceHandler.disconnectService()
+ }
+
+ function start() {
+ if (!deviceHandler.measuring) {
+ __timeCounter = 0
+ deviceHandler.startMeasurement()
+ }
+ }
+
+ function stop() {
+ if (deviceHandler.measuring)
+ deviceHandler.stopMeasurement()
+
+ measurePage.showStatsPage()
+ }
+
+ Timer {
+ id: measureTimer
+ interval: 1000
+ running: measurePage.deviceHandler.measuring
+ repeat: true
+ onTriggered: {
+ measurePage.__timeCounter++
+ if (measurePage.__timeCounter >= measurePage.__maxTimeCount)
+ measurePage.stop()
+ }
+ }
+
+ Column {
+ anchors.centerIn: parent
+ spacing: GameSettings.fieldHeight * 0.5
+
+ Rectangle {
+ id: circle
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: Math.min(measurePage.width, measurePage.height - GameSettings.fieldHeight * 4)
+ - 2 * GameSettings.fieldMargin
+ height: width
+ radius: width * 0.5
+ color: GameSettings.viewColor
+
+ Text {
+ id: hintText
+ anchors.centerIn: parent
+ anchors.verticalCenterOffset: -parent.height * 0.1
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ width: parent.width * 0.8
+ height: parent.height * 0.6
+ wrapMode: Text.WordWrap
+ text: measurePage.relaxText
+ visible: !measurePage.deviceHandler.measuring
+ color: GameSettings.textColor
+ fontSizeMode: Text.Fit
+ minimumPixelSize: 10
+ font.pixelSize: GameSettings.mediumFontSize
+ }
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ anchors.verticalCenterOffset: -parent.height * 0.15
+ font.pixelSize: parent.width * 0.45
+ text: measurePage.deviceHandler.hr
+ visible: measurePage.deviceHandler.measuring
+ color: GameSettings.textColor
+ }
+
+ Item {
+ id: minMaxContainer
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width * 0.7
+ height: parent.height * 0.15
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: parent.height * 0.16
+ visible: measurePage.deviceHandler.measuring
+
+ Text {
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ text: measurePage.deviceHandler.minHR
+ color: GameSettings.textColor
+ font.pixelSize: GameSettings.hugeFontSize
+
+ Text {
+ anchors.left: parent.left
+ anchors.bottom: parent.top
+ font.pixelSize: parent.font.pixelSize * 0.8
+ color: parent.color
+ text: "MIN"
+ }
+ }
+
+ Text {
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ text: measurePage.deviceHandler.maxHR
+ color: GameSettings.textColor
+ font.pixelSize: GameSettings.hugeFontSize
+
+ Text {
+ anchors.right: parent.right
+ anchors.bottom: parent.top
+ font.pixelSize: parent.font.pixelSize * 0.8
+ color: parent.color
+ text: "MAX"
+ }
+ }
+ }
+
+ Image {
+ id: heart
+ anchors.horizontalCenter: minMaxContainer.horizontalCenter
+ anchors.verticalCenter: minMaxContainer.bottom
+ width: parent.width * 0.2
+ height: width
+ source: "images/heart.png"
+ smooth: true
+ antialiasing: true
+
+ SequentialAnimation {
+ id: heartAnim
+ running: measurePage.deviceHandler.alive
+ loops: Animation.Infinite
+ alwaysRunToEnd: true
+ PropertyAnimation {
+ target: heart
+ property: "scale"
+ to: 1.2
+ duration: 500
+ easing.type: Easing.InQuad
+ }
+ PropertyAnimation {
+ target: heart
+ property: "scale"
+ to: 1.0
+ duration: 500
+ easing.type: Easing.OutQuad
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ id: timeSlider
+ color: GameSettings.viewColor
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: circle.width
+ height: GameSettings.fieldHeight
+ radius: GameSettings.buttonRadius
+
+ Rectangle {
+ height: parent.height
+ radius: parent.radius
+ color: GameSettings.sliderColor
+ width: Math.min(
+ 1.0,
+ measurePage.__timeCounter / measurePage.__maxTimeCount) * parent.width
+ }
+
+ Text {
+ anchors.centerIn: parent
+ color: "gray"
+ text: (measurePage.__maxTimeCount - measurePage.__timeCounter).toFixed(0) + " s"
+ font.pixelSize: GameSettings.bigFontSize
+ }
+ }
+ }
+
+ GameButton {
+ id: startButton
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: GameSettings.fieldMargin
+ width: circle.width
+ height: GameSettings.fieldHeight
+ enabled: !measurePage.deviceHandler.measuring
+ radius: GameSettings.buttonRadius
+
+ onClicked: measurePage.start()
+
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: GameSettings.tinyFontSize
+ text: qsTr("START")
+ color: startButton.enabled ? GameSettings.textColor : GameSettings.disabledTextColor
+ }
+ }
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/SplashScreen.qml b/examples/bluetooth/heartrate_game/HeartRateGame/SplashScreen.qml
new file mode 100644
index 000000000..2f9ac1b3f
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/SplashScreen.qml
@@ -0,0 +1,30 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import HeartRateGame
+
+Item {
+ id: root
+
+ property bool appIsReady: false
+ property bool splashIsReady: false
+ property bool ready: appIsReady && splashIsReady
+
+ anchors.fill: parent
+
+ Image {
+ anchors.centerIn: parent
+ width: Math.min(parent.height, parent.width) * 0.6
+ height: GameSettings.heightForWidth(width, sourceSize)
+ source: "images/logo.png"
+ }
+
+ Timer {
+ id: splashTimer
+ interval: 1000
+ onTriggered: splashIsReady = true
+ }
+
+ Component.onCompleted: splashTimer.start()
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/Stats.qml b/examples/bluetooth/heartrate_game/HeartRateGame/Stats.qml
new file mode 100644
index 000000000..22cdd5365
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/Stats.qml
@@ -0,0 +1,55 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import HeartRateGame
+
+GamePage {
+ id: statsPage
+
+ required property DeviceHandler deviceHandler
+
+ Column {
+ anchors.centerIn: parent
+ width: parent.width
+
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.pixelSize: GameSettings.hugeFontSize
+ color: GameSettings.textColor
+ text: qsTr("RESULT")
+ }
+
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.pixelSize: GameSettings.giganticFontSize * 3
+ color: GameSettings.textColor
+ text: (statsPage.deviceHandler.maxHR - statsPage.deviceHandler.minHR).toFixed(0)
+ }
+
+ Item {
+ height: GameSettings.fieldHeight
+ width: 1
+ }
+
+ StatsLabel {
+ title: qsTr("MIN")
+ value: statsPage.deviceHandler.minHR.toFixed(0)
+ }
+
+ StatsLabel {
+ title: qsTr("MAX")
+ value: statsPage.deviceHandler.maxHR.toFixed(0)
+ }
+
+ StatsLabel {
+ title: qsTr("AVG")
+ value: statsPage.deviceHandler.average.toFixed(1)
+ }
+
+ StatsLabel {
+ title: qsTr("CALORIES")
+ value: statsPage.deviceHandler.calories.toFixed(3)
+ }
+ }
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/StatsLabel.qml b/examples/bluetooth/heartrate_game/HeartRateGame/StatsLabel.qml
new file mode 100644
index 000000000..0ea4249a7
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/StatsLabel.qml
@@ -0,0 +1,34 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Item {
+ height: GameSettings.fieldHeight
+ width: parent.width
+
+ property alias title: leftText.text
+ property alias value: rightText.text
+
+ Text {
+ id: leftText
+ anchors.left: parent.left
+ height: parent.height
+ width: parent.width * 0.45
+ horizontalAlignment: Text.AlignRight
+ verticalAlignment: Text.AlignVCenter
+ font.pixelSize: GameSettings.mediumFontSize
+ color: GameSettings.textColor
+ }
+
+ Text {
+ id: rightText
+ anchors.right: parent.right
+ height: parent.height
+ width: parent.width * 0.45
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+ font.pixelSize: GameSettings.mediumFontSize
+ color: GameSettings.textColor
+ }
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/TitleBar.qml b/examples/bluetooth/heartrate_game/HeartRateGame/TitleBar.qml
new file mode 100644
index 000000000..016a44358
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/TitleBar.qml
@@ -0,0 +1,54 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+import QtQuick
+
+Rectangle {
+ id: titleBar
+
+ property var __titles: ["CONNECT", "MEASURE", "STATS"]
+ property int currentIndex: 0
+
+ signal titleClicked(int index)
+
+ height: GameSettings.fieldHeight
+ color: GameSettings.viewColor
+
+ Repeater {
+ model: 3
+ Text {
+ id: caption
+ required property int index
+ width: titleBar.width / 3
+ height: titleBar.height
+ x: index * width
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ text: titleBar.__titles[index]
+ font.pixelSize: GameSettings.tinyFontSize
+ color: titleBar.currentIndex === index ? GameSettings.textColor
+ : GameSettings.disabledTextColor
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: titleBar.titleClicked(caption.index)
+ }
+ }
+ }
+
+ Item {
+ anchors.bottom: parent.bottom
+ width: parent.width / 3
+ height: parent.height
+ x: titleBar.currentIndex * width
+
+ BottomLine {}
+
+ Behavior on x {
+ NumberAnimation {
+ duration: 200
+ }
+ }
+ }
+}
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/images/bt_off_to_on.png b/examples/bluetooth/heartrate_game/HeartRateGame/images/bt_off_to_on.png
new file mode 100644
index 000000000..5ea1f3f06
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/images/bt_off_to_on.png
Binary files differ
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/images/heart.png b/examples/bluetooth/heartrate_game/HeartRateGame/images/heart.png
new file mode 100644
index 000000000..f2b3c0a3e
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/images/heart.png
Binary files differ
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/images/logo.png b/examples/bluetooth/heartrate_game/HeartRateGame/images/logo.png
new file mode 100644
index 000000000..ea0af7e00
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/images/logo.png
Binary files differ
diff --git a/examples/bluetooth/heartrate_game/HeartRateGame/qmldir b/examples/bluetooth/heartrate_game/HeartRateGame/qmldir
new file mode 100644
index 000000000..2baa74a92
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/HeartRateGame/qmldir
@@ -0,0 +1,14 @@
+module HeartRateGame
+App 1.0 App.qml
+BluetoothAlarmDialog 1.0 BluetoothAlarmDialog.qml
+BottomLine 1.0 BottomLine.qml
+Connect 1.0 Connect.qml
+GameButton 1.0 GameButton.qml
+GamePage 1.0 GamePage.qml
+singleton GameSettings 1.0 GameSettings.qml
+Measure 1.0 Measure.qml
+SplashScreen 1.0 SplashScreen.qml
+Stats 1.0 Stats.qml
+StatsLabel 1.0 StatsLabel.qml
+TitleBar 1.0 TitleBar.qml
+Main 1.0 Main.qml
diff --git a/examples/bluetooth/heartrate_game/bluetoothbaseclass.py b/examples/bluetooth/heartrate_game/bluetoothbaseclass.py
new file mode 100644
index 000000000..cc5c9dbd0
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/bluetoothbaseclass.py
@@ -0,0 +1,40 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal, Slot
+
+
+class BluetoothBaseClass(QObject):
+
+ errorChanged = Signal()
+ infoChanged = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_error = ""
+ self.m_info = ""
+
+ @Property(str, notify=errorChanged)
+ def error(self):
+ return self.m_error
+
+ @error.setter
+ def error(self, e):
+ if self.m_error != e:
+ self.m_error = e
+ self.errorChanged.emit()
+
+ @Property(str, notify=infoChanged)
+ def info(self):
+ return self.m_info
+
+ @info.setter
+ def info(self, i):
+ if self.m_info != i:
+ self.m_info = i
+ self.infoChanged.emit()
+
+ @Slot()
+ def clearMessages(self):
+ self.info = ""
+ self.error = ""
diff --git a/examples/bluetooth/heartrate_game/connectionhandler.py b/examples/bluetooth/heartrate_game/connectionhandler.py
new file mode 100644
index 000000000..7bf60bbc5
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/connectionhandler.py
@@ -0,0 +1,77 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtBluetooth import QBluetoothLocalDevice
+from PySide6.QtQml import QmlElement
+from PySide6.QtCore import QObject, Property, Signal, Slot, Qt
+
+from heartrate_global import simulator, is_android, error_not_nuitka
+
+if is_android or sys.platform == "darwin":
+ from PySide6.QtCore import QBluetoothPermission
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "HeartRateGame"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class ConnectionHandler(QObject):
+
+ deviceChanged = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_hasPermission = False
+ self.initLocalDevice()
+
+ @Property(bool, notify=deviceChanged)
+ def alive(self):
+ if sys.platform == "darwin":
+ return True
+ if simulator():
+ return True
+ return (self.m_localDevice.isValid()
+ and self.m_localDevice.hostMode() != QBluetoothLocalDevice.HostPoweredOff)
+
+ @Property(bool, constant=True)
+ def requiresAddressType(self):
+ return sys.platform == "linux" # QT_CONFIG(bluez)?
+
+ @Property(str, notify=deviceChanged)
+ def name(self):
+ return self.m_localDevice.name()
+
+ @Property(str, notify=deviceChanged)
+ def address(self):
+ return self.m_localDevice.address().toString()
+
+ @Property(bool, notify=deviceChanged)
+ def hasPermission(self):
+ return self.m_hasPermission
+
+ @Slot(QBluetoothLocalDevice.HostMode)
+ def hostModeChanged(self, mode):
+ self.deviceChanged.emit()
+
+ def initLocalDevice(self):
+ if is_android or sys.platform == "darwin":
+ error_not_nuitka()
+ permission = QBluetoothPermission()
+ permission.setCommunicationModes(QBluetoothPermission.Access)
+ permission_status = qApp.checkPermission(permission) # noqa: F821
+ if permission_status == Qt.PermissionStatus.Undetermined:
+ qApp.requestPermission(permission, self, self.initLocalDevice) # noqa: F821
+ return
+ if permission_status == Qt.PermissionStatus.Denied:
+ return
+ elif permission_status == Qt.PermissionStatus.Granted:
+ print("[HeartRateGame] Bluetooth Permission Granted")
+
+ self.m_localDevice = QBluetoothLocalDevice()
+ self.m_localDevice.hostModeStateChanged.connect(self.hostModeChanged)
+ self.m_hasPermission = True
+ self.deviceChanged.emit()
diff --git a/examples/bluetooth/heartrate_game/devicefinder.py b/examples/bluetooth/heartrate_game/devicefinder.py
new file mode 100644
index 000000000..e581d12ec
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/devicefinder.py
@@ -0,0 +1,139 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+import sys
+
+from PySide6.QtBluetooth import (QBluetoothDeviceDiscoveryAgent,
+ QBluetoothDeviceInfo)
+from PySide6.QtQml import QmlElement
+from PySide6.QtCore import QTimer, Property, Signal, Slot, Qt
+
+from bluetoothbaseclass import BluetoothBaseClass
+from deviceinfo import DeviceInfo
+from heartrate_global import simulator, is_android, error_not_nuitka
+
+if is_android or sys.platform == "darwin":
+ from PySide6.QtCore import QBluetoothPermission
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "HeartRateGame"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class DeviceFinder(BluetoothBaseClass):
+
+ scanningChanged = Signal()
+ devicesChanged = Signal()
+
+ def __init__(self, handler, parent=None):
+ super().__init__(parent)
+ self.m_deviceHandler = handler
+ self.m_devices = []
+ self.m_demoTimer = QTimer()
+#! [devicediscovery-1]
+ self.m_deviceDiscoveryAgent = QBluetoothDeviceDiscoveryAgent(self)
+ self.m_deviceDiscoveryAgent.setLowEnergyDiscoveryTimeout(15000)
+ self.m_deviceDiscoveryAgent.deviceDiscovered.connect(self.addDevice)
+ self.m_deviceDiscoveryAgent.errorOccurred.connect(self.scanError)
+
+ self.m_deviceDiscoveryAgent.finished.connect(self.scanFinished)
+ self.m_deviceDiscoveryAgent.canceled.connect(self.scanFinished)
+#! [devicediscovery-1]
+ if simulator():
+ self.m_demoTimer.setSingleShot(True)
+ self.m_demoTimer.setInterval(2000)
+ self.m_demoTimer.timeout.connect(self.scanFinished)
+
+ @Slot()
+ def startSearch(self):
+ if is_android or sys.platform == "darwin":
+ error_not_nuitka()
+ permission = QBluetoothPermission()
+ permission.setCommunicationModes(QBluetoothPermission.Access)
+ permission_status = qApp.checkPermission(permission) # noqa: F821
+ if permission_status == Qt.PermissionStatus.Undetermined:
+ qApp.requestPermission(permission, self, self.startSearch) # noqa: F82 1
+ return
+ elif permission_status == Qt.PermissionStatus.Denied:
+ return
+ elif permission_status == Qt.PermissionStatus.Granted:
+ print("[HeartRateGame] Bluetooth Permission Granted")
+
+ self.clearMessages()
+ self.m_deviceHandler.setDevice(None)
+ self.m_devices.clear()
+
+ self.devicesChanged.emit()
+
+ if simulator():
+ self.m_demoTimer.start()
+ else:
+#! [devicediscovery-2]
+ self.m_deviceDiscoveryAgent.start(QBluetoothDeviceDiscoveryAgent.LowEnergyMethod)
+#! [devicediscovery-2]
+ self.scanningChanged.emit()
+ self.info = "Scanning for devices..."
+
+#! [devicediscovery-3]
+ @Slot(QBluetoothDeviceInfo)
+ def addDevice(self, device):
+ # If device is LowEnergy-device, add it to the list
+ if device.coreConfigurations() & QBluetoothDeviceInfo.LowEnergyCoreConfiguration:
+ self.m_devices.append(DeviceInfo(device))
+ self.info = "Low Energy device found. Scanning more..."
+#! [devicediscovery-3]
+ self.devicesChanged.emit()
+#! [devicediscovery-4]
+ #...
+#! [devicediscovery-4]
+
+ @Slot(QBluetoothDeviceDiscoveryAgent.Error)
+ def scanError(self, error):
+ if error == QBluetoothDeviceDiscoveryAgent.PoweredOffError:
+ self.error = "The Bluetooth adaptor is powered off."
+ elif error == QBluetoothDeviceDiscoveryAgent.InputOutputError:
+ self.error = "Writing or reading from the device resulted in an error."
+ else:
+ self.error = "An unknown error has occurred."
+
+ @Slot()
+ def scanFinished(self):
+ if simulator():
+ # Only for testing
+ for i in range(5):
+ self.m_devices.append(DeviceInfo(QBluetoothDeviceInfo()))
+
+ if self.m_devices:
+ self.info = "Scanning done."
+ else:
+ self.error = "No Low Energy devices found."
+
+ self.scanningChanged.emit()
+ self.devicesChanged.emit()
+
+ @Slot(str)
+ def connectToService(self, address):
+ self.m_deviceDiscoveryAgent.stop()
+
+ currentDevice = None
+ for entry in self.m_devices:
+ device = entry
+ if device and device.deviceAddress == address:
+ currentDevice = device
+ break
+
+ if currentDevice:
+ self.m_deviceHandler.setDevice(currentDevice)
+
+ self.clearMessages()
+
+ @Property(bool, notify=scanningChanged)
+ def scanning(self):
+ if simulator():
+ return self.m_demoTimer.isActive()
+ return self.m_deviceDiscoveryAgent.isActive()
+
+ @Property("QVariant", notify=devicesChanged)
+ def devices(self):
+ return self.m_devices
diff --git a/examples/bluetooth/heartrate_game/devicehandler.py b/examples/bluetooth/heartrate_game/devicehandler.py
new file mode 100644
index 000000000..df34052b8
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/devicehandler.py
@@ -0,0 +1,309 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import struct
+
+from enum import IntEnum
+
+from PySide6.QtBluetooth import (QLowEnergyCharacteristic,
+ QLowEnergyController,
+ QLowEnergyDescriptor,
+ QLowEnergyService,
+ QBluetoothUuid)
+from PySide6.QtQml import QmlElement
+from PySide6.QtCore import (QByteArray, QDateTime, QRandomGenerator, QTimer,
+ Property, Signal, Slot, QEnum)
+
+from bluetoothbaseclass import BluetoothBaseClass
+from heartrate_global import simulator
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "HeartRateGame"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class DeviceHandler(BluetoothBaseClass):
+
+ @QEnum
+ class AddressType(IntEnum):
+ PUBLIC_ADDRESS = 1
+ RANDOM_ADDRESS = 2
+
+ measuringChanged = Signal()
+ aliveChanged = Signal()
+ statsChanged = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.m_control = None
+ self.m_service = None
+ self.m_notificationDesc = QLowEnergyDescriptor()
+ self.m_currentDevice = None
+
+ self.m_foundHeartRateService = False
+ self.m_measuring = False
+ self.m_currentValue = 0
+ self.m_min = 0
+ self.m_max = 0
+ self.m_sum = 0
+ self.m_avg = 0.0
+ self.m_calories = 0.0
+
+ self.m_start = QDateTime()
+ self.m_stop = QDateTime()
+
+ self.m_measurements = []
+ self.m_addressType = QLowEnergyController.PublicAddress
+
+ self.m_demoTimer = QTimer()
+
+ if simulator():
+ self.m_demoTimer.setSingleShot(False)
+ self.m_demoTimer.setInterval(2000)
+ self.m_demoTimer.timeout.connect(self.updateDemoHR)
+ self.m_demoTimer.start()
+ self.updateDemoHR()
+
+ @Property(int)
+ def addressType(self):
+ if self.m_addressType == QLowEnergyController.RandomAddress:
+ return DeviceHandler.AddressType.RANDOM_ADDRESS
+ return DeviceHandler.AddressType.PUBLIC_ADDRESS
+
+ @addressType.setter
+ def addressType(self, type):
+ if type == DeviceHandler.AddressType.PUBLIC_ADDRESS:
+ self.m_addressType = QLowEnergyController.PublicAddress
+ elif type == DeviceHandler.AddressType.RANDOM_ADDRESS:
+ self.m_addressType = QLowEnergyController.RandomAddress
+
+ @Slot(QLowEnergyController.Error)
+ def controllerErrorOccurred(self, device):
+ self.error = "Cannot connect to remote device."
+
+ @Slot()
+ def controllerConnected(self):
+ self.info = "Controller connected. Search services..."
+ self.m_control.discoverServices()
+
+ @Slot()
+ def controllerDisconnected(self):
+ self.error = "LowEnergy controller disconnected"
+
+ def setDevice(self, device):
+ self.clearMessages()
+ self.m_currentDevice = device
+
+ if simulator():
+ self.info = "Demo device connected."
+ return
+
+ # Disconnect and delete old connection
+ if self.m_control:
+ self.m_control.disconnectFromDevice()
+ self.m_control = None
+
+ # Create new controller and connect it if device available
+ if self.m_currentDevice:
+
+ # Make connections
+#! [Connect-Signals-1]
+ self.m_control = QLowEnergyController.createCentral(self.m_currentDevice.device(), self)
+#! [Connect-Signals-1]
+ self.m_control.setRemoteAddressType(self.m_addressType)
+#! [Connect-Signals-2]
+
+ self.m_control.serviceDiscovered.connect(self.serviceDiscovered)
+ self.m_control.discoveryFinished.connect(self.serviceScanDone)
+
+ self.m_control.errorOccurred.connect(self.controllerErrorOccurred)
+ self.m_control.connected.connect(self.controllerConnected)
+ self.m_control.disconnected.connect(self.controllerDisconnected)
+
+ # Connect
+ self.m_control.connectToDevice()
+#! [Connect-Signals-2]
+
+ @Slot()
+ def startMeasurement(self):
+ if self.alive:
+ self.m_start = QDateTime.currentDateTime()
+ self.m_min = 0
+ self.m_max = 0
+ self.m_avg = 0
+ self.m_sum = 0
+ self.m_calories = 0.0
+ self.m_measuring = True
+ self.m_measurements.clear()
+ self.measuringChanged.emit()
+
+ @Slot()
+ def stopMeasurement(self):
+ self.m_measuring = False
+ self.measuringChanged.emit()
+
+#! [Filter HeartRate service 1]
+ @Slot(QBluetoothUuid)
+ def serviceDiscovered(self, gatt):
+ if gatt == QBluetoothUuid(QBluetoothUuid.ServiceClassUuid.HeartRate):
+ self.info = "Heart Rate service discovered. Waiting for service scan to be done..."
+ self.m_foundHeartRateService = True
+
+#! [Filter HeartRate service 1]
+
+ @Slot()
+ def serviceScanDone(self):
+ self.info = "Service scan done."
+
+ # Delete old service if available
+ if self.m_service:
+ self.m_service = None
+
+#! [Filter HeartRate service 2]
+ # If heartRateService found, create new service
+ if self.m_foundHeartRateService:
+ self.m_service = self.m_control.createServiceObject(
+ QBluetoothUuid(QBluetoothUuid.ServiceClassUuid.HeartRate), self)
+
+ if self.m_service:
+ self.m_service.stateChanged.connect(self.serviceStateChanged)
+ self.m_service.characteristicChanged.connect(self.updateHeartRateValue)
+ self.m_service.descriptorWritten.connect(self.confirmedDescriptorWrite)
+ self.m_service.discoverDetails()
+ else:
+ self.error = "Heart Rate Service not found."
+#! [Filter HeartRate service 2]
+
+# Service functions
+#! [Find HRM characteristic]
+ @Slot(QLowEnergyService.ServiceState)
+ def serviceStateChanged(self, switch):
+ if switch == QLowEnergyService.RemoteServiceDiscovering:
+ self.info = "Discovering services..."
+ elif switch == QLowEnergyService.RemoteServiceDiscovered:
+ self.info = "Service discovered."
+ hrChar = self.m_service.characteristic(
+ QBluetoothUuid(QBluetoothUuid.CharacteristicType.HeartRateMeasurement))
+ if hrChar.isValid():
+ self.m_notificationDesc = hrChar.descriptor(
+ QBluetoothUuid.DescriptorType.ClientCharacteristicConfiguration)
+ if self.m_notificationDesc.isValid():
+ self.m_service.writeDescriptor(self.m_notificationDesc,
+ QByteArray.fromHex(b"0100"))
+ else:
+ self.error = "HR Data not found."
+ self.aliveChanged.emit()
+#! [Find HRM characteristic]
+
+#! [Reading value]
+ @Slot(QLowEnergyCharacteristic, QByteArray)
+ def updateHeartRateValue(self, c, value):
+ # ignore any other characteristic change. Shouldn't really happen though
+ if c.uuid() != QBluetoothUuid(QBluetoothUuid.CharacteristicType.HeartRateMeasurement):
+ return
+
+ data = value.data()
+ flags = int(data[0])
+ # Heart Rate
+ hrvalue = 0
+ if flags & 0x1: # HR 16 bit little endian? otherwise 8 bit
+ hrvalue = struct.unpack("<H", data[1:3])[0]
+ else:
+ hrvalue = struct.unpack("B", data[1:2])[0]
+
+ self.addMeasurement(hrvalue)
+
+#! [Reading value]
+ @Slot()
+ def updateDemoHR(self):
+ randomValue = 0
+ if self.m_currentValue < 30: # Initial value
+ randomValue = 55 + QRandomGenerator.global_().bounded(30)
+ elif not self.m_measuring: # Value when relax
+ random = QRandomGenerator.global_().bounded(5)
+ randomValue = self.m_currentValue - 2 + random
+ randomValue = max(min(randomValue, 55), 75)
+ else: # Measuring
+ random = QRandomGenerator.global_().bounded(10)
+ randomValue = self.m_currentValue + random - 2
+
+ self.addMeasurement(randomValue)
+
+ @Slot(QLowEnergyCharacteristic, QByteArray)
+ def confirmedDescriptorWrite(self, d, value):
+ if (d.isValid() and d == self.m_notificationDesc
+ and value == QByteArray.fromHex(b"0000")):
+ # disabled notifications . assume disconnect intent
+ self.m_control.disconnectFromDevice()
+ self.m_service = None
+
+ @Slot()
+ def disconnectService(self):
+ self.m_foundHeartRateService = False
+
+ # disable notifications
+ if (self.m_notificationDesc.isValid() and self.m_service
+ and self.m_notificationDesc.value() == QByteArray.fromHex(b"0100")):
+ self.m_service.writeDescriptor(self.m_notificationDesc,
+ QByteArray.fromHex(b"0000"))
+ else:
+ if self.m_control:
+ self.m_control.disconnectFromDevice()
+ self.m_service = None
+
+ @Property(bool, notify=measuringChanged)
+ def measuring(self):
+ return self.m_measuring
+
+ @Property(bool, notify=aliveChanged)
+ def alive(self):
+ if simulator():
+ return True
+ if self.m_service:
+ return self.m_service.state() == QLowEnergyService.RemoteServiceDiscovered
+ return False
+
+ @Property(int, notify=statsChanged)
+ def hr(self):
+ return self.m_currentValue
+
+ @Property(int, notify=statsChanged)
+ def time(self):
+ return self.m_start.secsTo(self.m_stop)
+
+ @Property(int, notify=statsChanged)
+ def maxHR(self):
+ return self.m_max
+
+ @Property(int, notify=statsChanged)
+ def minHR(self):
+ return self.m_min
+
+ @Property(float, notify=statsChanged)
+ def average(self):
+ return self.m_avg
+
+ @Property(float, notify=statsChanged)
+ def calories(self):
+ return self.m_calories
+
+ def addMeasurement(self, value):
+ self.m_currentValue = value
+
+ # If measuring and value is appropriate
+ if self.m_measuring and value > 30 and value < 250:
+ self.m_stop = QDateTime.currentDateTime()
+ self.m_measurements.append(value)
+
+ self.m_min = value if self.m_min == 0 else min(value, self.m_min)
+ self.m_max = max(value, self.m_max)
+ self.m_sum += value
+ self.m_avg = float(self.m_sum) / len(self.m_measurements)
+ self.m_calories = ((-55.0969 + (0.6309 * self.m_avg) + (0.1988 * 94)
+ + (0.2017 * 24)) / 4.184) * 60 * self.time / 3600
+
+ self.statsChanged.emit()
diff --git a/examples/bluetooth/heartrate_game/deviceinfo.py b/examples/bluetooth/heartrate_game/deviceinfo.py
new file mode 100644
index 000000000..5fd5c3270
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/deviceinfo.py
@@ -0,0 +1,38 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QObject, Property, Signal
+
+from heartrate_global import simulator
+
+
+class DeviceInfo(QObject):
+
+ deviceChanged = Signal()
+
+ def __init__(self, device):
+ super().__init__()
+ self.m_device = device
+
+ def device(self):
+ return self.m_device
+
+ def setDevice(self, device):
+ self.m_device = device
+ self.deviceChanged.emit()
+
+ @Property(str, notify=deviceChanged)
+ def deviceName(self):
+ if simulator():
+ return "Demo device"
+ return self.m_device.name()
+
+ @Property(str, notify=deviceChanged)
+ def deviceAddress(self):
+ if simulator():
+ return "00:11:22:33:44:55"
+ if sys.platform == "Darwin": # workaround for Core Bluetooth:
+ return self.m_device.deviceUuid().toString()
+ return self.m_device.address().toString()
diff --git a/examples/bluetooth/heartrate_game/doc/heartrate_game.rst b/examples/bluetooth/heartrate_game/doc/heartrate_game.rst
new file mode 100644
index 000000000..9d190d991
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/doc/heartrate_game.rst
@@ -0,0 +1,11 @@
+Bluetooth Low Energy Heart Rate Game
+====================================
+
+.. tags:: Android
+
+The Bluetooth Low Energy Heart Rate Game shows how to develop a
+Bluetooth Low Energy application using the Qt Bluetooth API. The
+application covers the scanning for Bluetooth Low Energy devices,
+connecting to a Heart Rate service on the device, writing
+characteristics and descriptors, and receiving updates from the device
+once the heart rate has changed.
diff --git a/examples/bluetooth/heartrate_game/heartrate_game.pyproject b/examples/bluetooth/heartrate_game/heartrate_game.pyproject
new file mode 100644
index 000000000..94b7e3978
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/heartrate_game.pyproject
@@ -0,0 +1,23 @@
+{
+ "files": ["main.py",
+ "bluetoothbaseclass.py",
+ "connectionhandler.py",
+ "devicefinder.py",
+ "devicehandler.py",
+ "deviceinfo.py",
+ "heartrate_global.py",
+ "HeartRateGame/qmldir",
+ "HeartRateGame/Main.qml",
+ "HeartRateGame/App.qml",
+ "HeartRateGame/BluetoothAlarmDialog.qml",
+ "HeartRateGame/BottomLine.qml",
+ "HeartRateGame/Connect.qml",
+ "HeartRateGame/GameButton.qml",
+ "HeartRateGame/GamePage.qml",
+ "HeartRateGame/GameSettings.qml",
+ "HeartRateGame/Measure.qml",
+ "HeartRateGame/SplashScreen.qml",
+ "HeartRateGame/Stats.qml",
+ "HeartRateGame/StatsLabel.qml",
+ "HeartRateGame/TitleBar.qml"]
+}
diff --git a/examples/bluetooth/heartrate_game/heartrate_global.py b/examples/bluetooth/heartrate_game/heartrate_global.py
new file mode 100644
index 000000000..de5c37ac3
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/heartrate_global.py
@@ -0,0 +1,30 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+import os
+import sys
+
+_simulator = False
+
+
+def simulator():
+ global _simulator
+ return _simulator
+
+
+def set_simulator(s):
+ global _simulator
+ _simulator = s
+
+
+is_android = os.environ.get('ANDROID_ARGUMENT')
+
+
+def error_not_nuitka():
+ """Errors and exits for macOS if run in interpreted mode.
+ """
+ is_nuitka = "__compiled__" in globals()
+ if not is_nuitka and sys.platform == "darwin":
+ print("This example does not work on macOS when Python is run in interpreted mode."
+ "For this example to work on macOS, package the example using pyside6-deploy"
+ "For more information, read `Notes for Developer` in the documentation")
+ sys.exit(0)
diff --git a/examples/bluetooth/heartrate_game/main.py b/examples/bluetooth/heartrate_game/main.py
new file mode 100644
index 000000000..3cb4f0672
--- /dev/null
+++ b/examples/bluetooth/heartrate_game/main.py
@@ -0,0 +1,53 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the bluetooth/heartrate-game example from Qt v6.x"""
+
+from pathlib import Path
+import sys
+from argparse import ArgumentParser, RawDescriptionHelpFormatter
+
+from PySide6.QtQml import QQmlApplicationEngine
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtCore import QCoreApplication, QLoggingCategory
+
+from connectionhandler import ConnectionHandler
+from devicefinder import DeviceFinder
+from devicehandler import DeviceHandler
+from heartrate_global import set_simulator
+
+
+if __name__ == '__main__':
+ parser = ArgumentParser(prog="heartrate-game",
+ formatter_class=RawDescriptionHelpFormatter)
+
+ parser.add_argument("-v", "--verbose", action="store_true",
+ help="Generate more output")
+ parser.add_argument("-s", "--simulator", action="store_true",
+ help="Use Simulator")
+ options = parser.parse_args()
+ set_simulator(options.simulator)
+ if options.verbose:
+ QLoggingCategory.setFilterRules("qt.bluetooth* = true")
+
+ app = QGuiApplication(sys.argv)
+
+ connectionHandler = ConnectionHandler()
+ deviceHandler = DeviceHandler()
+ deviceFinder = DeviceFinder(deviceHandler)
+
+ engine = QQmlApplicationEngine()
+ engine.setInitialProperties({
+ "connectionHandler": connectionHandler,
+ "deviceFinder": deviceFinder,
+ "deviceHandler": deviceHandler})
+
+ engine.addImportPath(Path(__file__).parent)
+ engine.loadFromModule("HeartRateGame", "Main")
+
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ ex = QCoreApplication.exec()
+ del engine
+ sys.exit(ex)
diff --git a/examples/bluetooth/heartrate_server/doc/heartrate_server.rst b/examples/bluetooth/heartrate_server/doc/heartrate_server.rst
new file mode 100644
index 000000000..aaa1a0988
--- /dev/null
+++ b/examples/bluetooth/heartrate_server/doc/heartrate_server.rst
@@ -0,0 +1,8 @@
+Bluetooth Low Energy Heart Rate Server
+======================================
+
+The Bluetooth Low Energy Heart Rate Server is a command-line
+application that shows how to develop a Bluetooth GATT server using
+the Qt Bluetooth API. The application covers setting up a GATT
+service, advertising it and notifying clients about changes to
+characteristic values.
diff --git a/examples/bluetooth/heartrate_server/heartrate_server.py b/examples/bluetooth/heartrate_server/heartrate_server.py
new file mode 100644
index 000000000..abbf4eb7f
--- /dev/null
+++ b/examples/bluetooth/heartrate_server/heartrate_server.py
@@ -0,0 +1,95 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the bluetooth/heartrate-server example from Qt v6.x"""
+
+import sys
+from enum import Enum
+
+from PySide6.QtBluetooth import (QBluetoothUuid, QLowEnergyAdvertisingData,
+ QLowEnergyAdvertisingParameters,
+ QLowEnergyCharacteristic,
+ QLowEnergyCharacteristicData,
+ QLowEnergyController,
+ QLowEnergyDescriptorData,
+ QLowEnergyServiceData)
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtCore import QByteArray, QTimer, QLoggingCategory
+
+
+class ValueChange(Enum):
+ VALUE_UP = 1
+ VALUE_DOWN = 2
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ QLoggingCategory.setFilterRules("qt.bluetooth* = true")
+
+#! [Advertising Data]
+ advertising_data = QLowEnergyAdvertisingData()
+ advertising_data.setDiscoverability(QLowEnergyAdvertisingData.DiscoverabilityGeneral)
+ advertising_data.setIncludePowerLevel(True)
+ advertising_data.setLocalName("HeartRateServer")
+ advertising_data.setServices([QBluetoothUuid.ServiceClassUuid.HeartRate])
+#! [Advertising Data]
+
+#! [Service Data]
+ char_data = QLowEnergyCharacteristicData()
+ char_data.setUuid(QBluetoothUuid.CharacteristicType.HeartRateMeasurement)
+ char_data.setValue(QByteArray(2, 0))
+ char_data.setProperties(QLowEnergyCharacteristic.Notify)
+ client_config = QLowEnergyDescriptorData(
+ QBluetoothUuid.DescriptorType.ClientCharacteristicConfiguration, QByteArray(2, 0))
+ char_data.addDescriptor(client_config)
+
+ service_data = QLowEnergyServiceData()
+ service_data.setType(QLowEnergyServiceData.ServiceTypePrimary)
+ service_data.setUuid(QBluetoothUuid.ServiceClassUuid.HeartRate)
+ service_data.addCharacteristic(char_data)
+#! [Service Data]
+
+#! [Start Advertising]
+ le_controller = QLowEnergyController.createPeripheral()
+ service = le_controller.addService(service_data)
+ le_controller.startAdvertising(QLowEnergyAdvertisingParameters(),
+ advertising_data, advertising_data)
+#! [Start Advertising]
+
+#! [Provide Heartbeat]
+ value_change = ValueChange.VALUE_UP
+ heartbeat_timer = QTimer()
+ current_heart_rate = 60
+
+ def heartbeat_provider():
+ global current_heart_rate, value_change, current_heart_rate
+ value = QByteArray()
+ value.append(chr(0)) # Flags that specify the format of the value.
+ value.append(chr(current_heart_rate)) # Actual value.
+ characteristic = service.characteristic(
+ QBluetoothUuid.CharacteristicType.HeartRateMeasurement)
+ assert characteristic.isValid()
+ # Potentially causes notification.
+ service.writeCharacteristic(characteristic, value)
+ if current_heart_rate == 60:
+ value_change = ValueChange.VALUE_UP
+ elif current_heart_rate == 100:
+ value_change = ValueChange.VALUE_DOWN
+ if value_change == ValueChange.VALUE_UP:
+ current_heart_rate += 1
+ else:
+ current_heart_rate -= 1
+
+ heartbeat_timer.timeout.connect(heartbeat_provider)
+ heartbeat_timer.start(1000)
+#! [Provide Heartbeat]
+
+ def reconnect():
+ service = le_controller.addService(service_data)
+ if not service.isNull():
+ le_controller.startAdvertising(QLowEnergyAdvertisingParameters(),
+ advertising_data, advertising_data)
+
+ le_controller.disconnected.connect(reconnect)
+
+ sys.exit(app.exec())
diff --git a/examples/bluetooth/heartrate_server/heartrate_server.pyproject b/examples/bluetooth/heartrate_server/heartrate_server.pyproject
new file mode 100644
index 000000000..de1fd14a0
--- /dev/null
+++ b/examples/bluetooth/heartrate_server/heartrate_server.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["heartrate_server.py"]
+}
diff --git a/examples/bluetooth/lowenergyscanner/Scanner/Characteristics.qml b/examples/bluetooth/lowenergyscanner/Scanner/Characteristics.qml
new file mode 100644
index 000000000..bd3ccbfcb
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/Scanner/Characteristics.qml
@@ -0,0 +1,121 @@
+// Copyright (C) 2013 BlackBerry Limited. All rights reserved.
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+import QtQuick
+
+Rectangle {
+ id: characteristicsPage
+
+ signal showServices
+ signal showDevices
+
+ width: 300
+ height: 600
+
+ Header {
+ id: header
+ anchors.top: parent.top
+ headerText: "Characteristics list"
+ }
+
+ Dialog {
+ id: info
+ anchors.centerIn: parent
+ visible: true
+ dialogText: "Scanning for characteristics..."
+ }
+
+ Connections {
+ target: Device
+ function oncharacteristics_pdated() {
+ menu.menuText = "Back"
+ if (characteristicview.count === 0) {
+ info.dialogText = "No characteristic found"
+ info.busyImage = false
+ } else {
+ info.visible = false
+ info.busyImage = true
+ }
+ }
+
+ function onDisconnected() {
+ characteristicsPage.showDevices()
+ }
+ }
+
+ ListView {
+ id: characteristicview
+ width: parent.width
+ clip: true
+
+ anchors.top: header.bottom
+ anchors.bottom: menu.top
+ model: Device.characteristicList
+
+ delegate: Rectangle {
+ required property var modelData
+ id: box
+ height: 300
+ width: characteristicview.width
+ color: "lightsteelblue"
+ border.width: 2
+ border.color: "black"
+ radius: 5
+
+ Label {
+ id: characteristicName
+ textContent: box.modelData.characteristic_name
+ anchors.top: parent.top
+ anchors.topMargin: 5
+ }
+
+ Label {
+ id: characteristicUuid
+ font.pointSize: characteristicName.font.pointSize * 0.7
+ textContent: box.modelData.characteristic_uuid
+ anchors.top: characteristicName.bottom
+ anchors.topMargin: 5
+ }
+
+ Label {
+ id: characteristicValue
+ font.pointSize: characteristicName.font.pointSize * 0.7
+ textContent: ("Value: " + box.modelData.characteristic_value)
+ anchors.bottom: characteristicHandle.top
+ horizontalAlignment: Text.AlignHCenter
+ anchors.topMargin: 5
+ }
+
+ Label {
+ id: characteristicHandle
+ font.pointSize: characteristicName.font.pointSize * 0.7
+ textContent: ("Handlers: " + box.modelData.characteristic_handle)
+ anchors.bottom: characteristicPermission.top
+ anchors.topMargin: 5
+ }
+
+ Label {
+ id: characteristicPermission
+ font.pointSize: characteristicName.font.pointSize * 0.7
+ textContent: box.modelData.characteristic_permission
+ anchors.bottom: parent.bottom
+ anchors.topMargin: 5
+ anchors.bottomMargin: 5
+ }
+ }
+ }
+
+ Menu {
+ id: menu
+ anchors.bottom: parent.bottom
+ menuWidth: parent.width
+ menuText: Device.update
+ menuHeight: (parent.height / 6)
+ onButtonClick: {
+ characteristicsPage.showServices()
+ Device.update = "Back"
+ }
+ }
+}
diff --git a/examples/bluetooth/lowenergyscanner/Scanner/Devices.qml b/examples/bluetooth/lowenergyscanner/Scanner/Devices.qml
new file mode 100644
index 000000000..6e5e85a52
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/Scanner/Devices.qml
@@ -0,0 +1,121 @@
+// Copyright (C) 2013 BlackBerry Limited. All rights reserved.
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+import QtQuick
+
+Rectangle {
+ id: devicesPage
+
+ property bool deviceState: Device.state
+ signal showServices
+
+ width: 300
+ height: 600
+
+ onDeviceStateChanged: {
+ if (!Device.state)
+ info.visible = false
+ }
+
+ Header {
+ id: header
+ anchors.top: parent.top
+ headerText: {
+ if (Device.state)
+ return "Discovering"
+
+ if (Device.devices_list.length > 0)
+ return "Select a device"
+
+ return "Start Discovery"
+ }
+ }
+
+ Dialog {
+ id: info
+ anchors.centerIn: parent
+ visible: false
+ }
+
+ ListView {
+ id: theListView
+ width: parent.width
+ clip: true
+
+ anchors.top: header.bottom
+ anchors.bottom: connectToggle.top
+ model: Device.devices_list
+
+ delegate: Rectangle {
+ required property var modelData
+ id: box
+ height: 100
+ width: theListView.width
+ color: "lightsteelblue"
+ border.width: 2
+ border.color: "black"
+ radius: 5
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ Device.scan_services(box.modelData.device_address)
+ showServices()
+ }
+ }
+
+ Label {
+ id: deviceName
+ textContent: box.modelData.device_name
+ anchors.top: parent.top
+ anchors.topMargin: 5
+ }
+
+ Label {
+ id: deviceAddress
+ textContent: box.modelData.device_address
+ font.pointSize: deviceName.font.pointSize * 0.7
+ anchors.bottom: box.bottom
+ anchors.bottomMargin: 5
+ }
+ }
+ }
+
+ Menu {
+ id: connectToggle
+
+ menuWidth: parent.width
+ anchors.bottom: menu.top
+ menuText: {
+ visible = Device.devices_list.length > 0
+ if (Device.use_random_address)
+ return "Address type: Random"
+ else
+ return "Address type: Public"
+ }
+
+ onButtonClick: Device.use_random_address = !Device.use_random_address
+ }
+
+ Menu {
+ id: menu
+ anchors.bottom: parent.bottom
+ menuWidth: parent.width
+ menuHeight: (parent.height / 6)
+ menuText: Device.update
+ onButtonClick: {
+ if (!Device.state) {
+ Device.start_device_discovery()
+ // if start_device_discovery() failed Device.state is not set
+ if (Device.state) {
+ info.dialogText = "Searching..."
+ info.visible = true
+ }
+ } else {
+ Device.stop_device_discovery()
+ }
+ }
+ }
+}
diff --git a/examples/bluetooth/lowenergyscanner/Scanner/Dialog.qml b/examples/bluetooth/lowenergyscanner/Scanner/Dialog.qml
new file mode 100644
index 000000000..75e82642a
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/Scanner/Dialog.qml
@@ -0,0 +1,48 @@
+// Copyright (C) 2013 BlackBerry Limited. All rights reserved.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Rectangle {
+ id: dialog
+ width: parent.width / 3 * 2
+ height: dialogTextId.height + background.height + 20
+ z: 50
+ property string dialogText: ""
+ property bool busyImage: true
+ border.width: 1
+ border.color: "#363636"
+ radius: 10
+
+ Text {
+ id: dialogTextId
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ anchors.topMargin: 10
+
+ elide: Text.ElideMiddle
+ text: dialog.dialogText
+ color: "#363636"
+ wrapMode: Text.Wrap
+ }
+
+ Image {
+ id: background
+
+ width: 20
+ height: 20
+ anchors.top: dialogTextId.bottom
+ anchors.horizontalCenter: dialogTextId.horizontalCenter
+ visible: parent.busyImage
+ source: "assets/busy_dark.png"
+ fillMode: Image.PreserveAspectFit
+ NumberAnimation on rotation {
+ duration: 3000
+ from: 0
+ to: 360
+ loops: Animation.Infinite
+ }
+ }
+}
diff --git a/examples/bluetooth/lowenergyscanner/Scanner/Header.qml b/examples/bluetooth/lowenergyscanner/Scanner/Header.qml
new file mode 100644
index 000000000..c95385dd3
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/Scanner/Header.qml
@@ -0,0 +1,25 @@
+// Copyright (C) 2013 BlackBerry Limited. All rights reserved.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Rectangle {
+ id: header
+ width: parent.width
+ height: 70
+ border.width: 1
+ border.color: "#363636"
+ radius: 5
+ property string headerText: ""
+
+ Text {
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ anchors.fill: parent
+ text: header.headerText
+ font.bold: true
+ font.pointSize: 20
+ elide: Text.ElideMiddle
+ color: "#363636"
+ }
+}
diff --git a/examples/bluetooth/lowenergyscanner/Scanner/Label.qml b/examples/bluetooth/lowenergyscanner/Scanner/Label.qml
new file mode 100644
index 000000000..e31156740
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/Scanner/Label.qml
@@ -0,0 +1,16 @@
+// Copyright (C) 2013 BlackBerry Limited. All rights reserved.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Text {
+ property string textContent: ""
+ font.pointSize: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+ color: "#363636"
+ horizontalAlignment: Text.AlignHCenter
+ elide: Text.ElideMiddle
+ width: parent.width
+ wrapMode: Text.Wrap
+ text: textContent
+}
diff --git a/examples/bluetooth/lowenergyscanner/Scanner/Main.qml b/examples/bluetooth/lowenergyscanner/Scanner/Main.qml
new file mode 100644
index 000000000..88600bace
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/Scanner/Main.qml
@@ -0,0 +1,31 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+
+Window {
+ id: main
+
+ width: 300
+ height: 600
+ visible: true
+
+ StackLayout {
+ id: pagesLayout
+ anchors.fill: parent
+ currentIndex: 0
+
+ Devices {
+ onShowServices: pagesLayout.currentIndex = 1
+ }
+ Services {
+ onShowDevices: pagesLayout.currentIndex = 0
+ onShowCharacteristics: pagesLayout.currentIndex = 2
+ }
+ Characteristics {
+ onShowDevices: pagesLayout.currentIndex = 0
+ onShowServices: pagesLayout.currentIndex = 1
+ }
+ }
+}
diff --git a/examples/bluetooth/lowenergyscanner/Scanner/Menu.qml b/examples/bluetooth/lowenergyscanner/Scanner/Menu.qml
new file mode 100644
index 000000000..ef69c895e
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/Scanner/Menu.qml
@@ -0,0 +1,55 @@
+// Copyright (C) 2013 BlackBerry Limited. All rights reserved.
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Rectangle {
+ id: menu
+
+ property real menuWidth: 100
+ property real menuHeight: 50
+ property string menuText: "Search"
+ signal buttonClick
+
+ height: menuHeight
+ width: menuWidth
+
+ Rectangle {
+ id: search
+ width: parent.width
+ height: parent.height
+ anchors.centerIn: parent
+ color: "#363636"
+ border.width: 1
+ border.color: "#E3E3E3"
+ radius: 5
+ Text {
+ id: searchText
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ anchors.fill: parent
+ text: menu.menuText
+ elide: Text.ElideMiddle
+ color: "#E3E3E3"
+ wrapMode: Text.WordWrap
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onPressed: {
+ search.width = search.width - 7
+ search.height = search.height - 5
+ }
+
+ onReleased: {
+ search.width = search.width + 7
+ search.height = search.height + 5
+ }
+
+ onClicked: {
+ menu.buttonClick()
+ }
+ }
+ }
+}
diff --git a/examples/bluetooth/lowenergyscanner/Scanner/Services.qml b/examples/bluetooth/lowenergyscanner/Scanner/Services.qml
new file mode 100644
index 000000000..70326242e
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/Scanner/Services.qml
@@ -0,0 +1,115 @@
+// Copyright (C) 2013 BlackBerry Limited. All rights reserved.
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+import QtQuick
+
+Rectangle {
+ id: servicesPage
+
+ signal showCharacteristics
+ signal showDevices
+
+ width: 300
+ height: 600
+
+ Component.onCompleted: {
+ // Loading this page may take longer than QLEController
+ // stopping with an error, go back and readjust this view
+ // based on controller errors
+ if (Device.controller_error) {
+ info.visible = false
+ menu.menuText = Device.update
+ }
+ }
+
+ Header {
+ id: header
+ anchors.top: parent.top
+ headerText: "Services list"
+ }
+
+ Dialog {
+ id: info
+ anchors.centerIn: parent
+ visible: true
+ dialogText: "Scanning for services..."
+ }
+
+ Connections {
+ target: Device
+ function onservices_updated() {
+ if (servicesview.count === 0)
+ info.dialogText = "No services found"
+ else
+ info.visible = false
+ }
+
+ function ondisconnected() {
+ servicesPage.showDevices()
+ }
+ }
+
+ ListView {
+ id: servicesview
+ width: parent.width
+ anchors.top: header.bottom
+ anchors.bottom: menu.top
+ model: Device.servicesList
+ clip: true
+
+ delegate: Rectangle {
+ required property var modelData
+ id: box
+ height: 100
+ color: "lightsteelblue"
+ border.width: 2
+ border.color: "black"
+ radius: 5
+ width: servicesview.width
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ Device.connectToService(box.modelData.service_uuid)
+ servicesPage.showCharacteristics()
+ }
+ }
+
+ Label {
+ id: serviceName
+ textContent: box.modelData.service_name
+ anchors.top: parent.top
+ anchors.topMargin: 5
+ }
+
+ Label {
+ textContent: box.modelData.service_type
+ font.pointSize: serviceName.font.pointSize * 0.5
+ anchors.top: serviceName.bottom
+ }
+
+ Label {
+ id: serviceUuid
+ font.pointSize: serviceName.font.pointSize * 0.5
+ textContent: box.modelData.service_uuid
+ anchors.bottom: box.bottom
+ anchors.bottomMargin: 5
+ }
+ }
+ }
+
+ Menu {
+ id: menu
+ anchors.bottom: parent.bottom
+ menuWidth: parent.width
+ menuText: Device.update
+ menuHeight: (parent.height / 6)
+ onButtonClick: {
+ Device.disconnect_from_device()
+ servicesPage.showDevices()
+ Device.update = "Search"
+ }
+ }
+}
diff --git a/examples/bluetooth/lowenergyscanner/Scanner/assets/busy_dark.png b/examples/bluetooth/lowenergyscanner/Scanner/assets/busy_dark.png
new file mode 100644
index 000000000..3a1059531
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/Scanner/assets/busy_dark.png
Binary files differ
diff --git a/examples/bluetooth/lowenergyscanner/Scanner/qmldir b/examples/bluetooth/lowenergyscanner/Scanner/qmldir
new file mode 100644
index 000000000..0adf6fb19
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/Scanner/qmldir
@@ -0,0 +1,10 @@
+module Scanner
+typeinfo scanner.qmltypes
+Characteristics 1.0 Characteristics.qml
+Devices 1.0 Devices.qml
+Dialog 1.0 Dialog.qml
+Header 1.0 Header.qml
+Label 1.0 Label.qml
+Main 1.0 Main.qml
+Menu 1.0 Menu.qml
+Services 1.0 Services.qml
diff --git a/examples/bluetooth/lowenergyscanner/characteristicinfo.py b/examples/bluetooth/lowenergyscanner/characteristicinfo.py
new file mode 100644
index 000000000..42bde8753
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/characteristicinfo.py
@@ -0,0 +1,87 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtBluetooth import QLowEnergyCharacteristic, QBluetoothUuid
+
+
+class CharacteristicInfo(QObject):
+
+ characteristic_changed = Signal()
+
+ def __init__(self, characteristic=None) -> None:
+ super().__init__()
+ self._characteristic = characteristic
+
+ @Property(str, notify=characteristic_changed)
+ def characteristic_name(self):
+ if not self.characteristic:
+ raise Exception("characteristic unset")
+ name = self.characteristic.name()
+ if name:
+ return name
+
+ for descriptor in self.characteristic.descriptors():
+ if descriptor.type() == QBluetoothUuid.DescriptorType.CharacteristicUserDescription:
+ name = descriptor.value()
+ break
+
+ if not name:
+ name = "Unknown"
+
+ return name
+
+ @Property(str, notify=characteristic_changed)
+ def characteristic_uuid(self):
+ uuid = self.characteristic.uuid()
+ result16, success16 = uuid.toUInt16()
+ if success16:
+ return f"0x{result16:x}"
+
+ result32, sucess32 = uuid.toUInt32()
+ if sucess32:
+ return f"0x{result32:x}"
+
+ return uuid.toString().replace('{', '').replace('}', '')
+
+ @Property(str, notify=characteristic_changed)
+ def characteristic_value(self):
+ # Show raw string first and hex value below
+ a = self.characteristic.value()
+ if not a:
+ return "<none>"
+
+ result = f"{str(a)}\n{str(a.toHex())}"
+ return result
+
+ @Property(str, notify=characteristic_changed)
+ def characteristic_permission(self):
+ properties = "( "
+ permission = self.characteristic.properties()
+ if (permission & QLowEnergyCharacteristic.Read):
+ properties += " Read"
+ if (permission & QLowEnergyCharacteristic.Write):
+ properties += " Write"
+ if (permission & QLowEnergyCharacteristic.Notify):
+ properties += " Notify"
+ if (permission & QLowEnergyCharacteristic.Indicate):
+ properties += " Indicate"
+ if (permission & QLowEnergyCharacteristic.ExtendedProperty):
+ properties += " ExtendedProperty"
+ if (permission & QLowEnergyCharacteristic.Broadcasting):
+ properties += " Broadcast"
+ if (permission & QLowEnergyCharacteristic.WriteNoResponse):
+ properties += " WriteNoResp"
+ if (permission & QLowEnergyCharacteristic.WriteSigned):
+ properties += " WriteSigned"
+ properties += " )"
+ return properties
+
+ @property
+ def characteristic(self):
+ return self._characteristic
+
+ @characteristic.setter
+ def characteristic(self, characteristic):
+ self._characteristic = characteristic
+ self.characteristic_changed.emit()
diff --git a/examples/bluetooth/lowenergyscanner/device.py b/examples/bluetooth/lowenergyscanner/device.py
new file mode 100644
index 000000000..09108cf69
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/device.py
@@ -0,0 +1,278 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+import warnings
+from PySide6.QtBluetooth import (QBluetoothDeviceDiscoveryAgent, QLowEnergyController,
+ QBluetoothDeviceInfo, QBluetoothUuid, QLowEnergyService)
+from PySide6.QtCore import QObject, Property, Signal, Slot, QTimer, QMetaObject, Qt
+from PySide6.QtQml import QmlElement, QmlSingleton
+
+from deviceinfo import DeviceInfo
+from serviceinfo import ServiceInfo
+from characteristicinfo import CharacteristicInfo
+
+QML_IMPORT_NAME = "Scanner"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+@QmlSingleton
+class Device(QObject):
+
+ devices_updated = Signal()
+ services_updated = Signal()
+ characteristic_updated = Signal()
+ update_changed = Signal()
+ state_changed = Signal()
+ disconnected = Signal()
+ random_address_changed = Signal()
+
+ def __init__(self, parent=None) -> None:
+ super().__init__(parent)
+ self.devices = []
+ self._services = []
+ self._characteristics = []
+ self._previousAddress = ""
+ self._message = ""
+ self.currentDevice = DeviceInfo()
+ self.connected = False
+ self.controller: QLowEnergyController = None
+ self._deviceScanState = False
+ self.random_address = False
+ self.discovery_agent = QBluetoothDeviceDiscoveryAgent()
+ self.discovery_agent.setLowEnergyDiscoveryTimeout(25000)
+ self.discovery_agent.deviceDiscovered.connect(self.add_device)
+ self.discovery_agent.errorOccurred.connect(self.device_scan_error)
+ self.discovery_agent.finished.connect(self.device_scan_finished)
+ self.update = "Search"
+
+ @Property("QVariant", notify=devices_updated)
+ def devices_list(self):
+ return self.devices
+
+ @Property("QVariant", notify=services_updated)
+ def services_list(self):
+ return self._services
+
+ @Property("QVariant", notify=characteristic_updated)
+ def characteristic_list(self):
+ return self._characteristics
+
+ @Property(str, notify=update_changed)
+ def update(self):
+ return self._message
+
+ @update.setter
+ def update(self, message):
+ self._message = message
+ self.update_changed.emit()
+
+ @Property(bool, notify=random_address_changed)
+ def use_random_address(self):
+ return self.random_address
+
+ @use_random_address.setter
+ def use_random_address(self, newValue):
+ self.random_address = newValue
+ self.random_address_changed.emit()
+
+ @Property(bool, notify=state_changed)
+ def state(self):
+ return self._deviceScanState
+
+ @Property(bool)
+ def controller_error(self):
+ return self.controller and (self.controller.error() != QLowEnergyController.NoError)
+
+ @Slot()
+ def start_device_discovery(self):
+ self.devices.clear()
+ self.devices_updated.emit()
+ self.update = "Scanning for devices ..."
+ self.discovery_agent.start(QBluetoothDeviceDiscoveryAgent.LowEnergyMethod)
+
+ if self.discovery_agent.isActive():
+ self._deviceScanState = True
+ self.state_changed.emit()
+
+ @Slot(str)
+ def scan_services(self, address):
+ # We need the current device for service discovery.
+ for device in self.devices:
+ if device.device_address == address:
+ self.currentDevice.set_device(device.get_device())
+ break
+
+ if not self.currentDevice.get_device().isValid():
+ warnings.warn("Not a valid device")
+ return
+
+ self._characteristics.clear()
+ self.characteristic_updated.emit()
+ self._services.clear()
+ self.services_updated.emit()
+
+ self.update = "Back\n(Connecting to device...)"
+
+ if self.controller and (self._previousAddress != self.currentDevice.device_address):
+ self.controller.disconnectFromDevice()
+ del self.controller
+ self.controller = None
+
+ if not self.controller:
+ self.controller = QLowEnergyController.createCentral(self.currentDevice.get_device())
+ self.controller.connected.connect(self.device_connected)
+ self.controller.errorOccurred.connect(self.error_received)
+ self.controller.disconnected.connect(self.device_disconnected)
+ self.controller.serviceDiscovered.connect(self.add_low_energy_service)
+ self.controller.discoveryFinished.connect(self.services_scan_done)
+
+ if self.random_address:
+ self.controller.setRemoteAddressType(QLowEnergyController.RandomAddress)
+ else:
+ self.controller.setRemoteAddressType(QLowEnergyController.PublicAddress)
+ self.controller.connectToDevice()
+
+ self._previousAddress = self.currentDevice.device_address
+
+ @Slot(str)
+ def connect_to_service(self, uuid):
+ service: QLowEnergyService = None
+ for serviceInfo in self._services:
+ if not serviceInfo:
+ continue
+
+ if serviceInfo.service_uuid == uuid:
+ service = serviceInfo.service
+ break
+
+ if not service:
+ return
+
+ self._characteristics.clear()
+ self.characteristic_updated.emit()
+
+ if service.state() == QLowEnergyService.RemoteService:
+ service.state_changed.connect(self.service_details_discovered)
+ service.discoverDetails()
+ self.update = "Back\n(Discovering details...)"
+ return
+
+ # discovery already done
+ chars = service.characteristics()
+ for ch in chars:
+ cInfo = CharacteristicInfo(ch)
+ self._characteristics.append(cInfo)
+
+ QTimer.singleShot(0, self.characteristic_updated)
+
+ @Slot()
+ def disconnect_from_device(self):
+ # UI always expects disconnect() signal when calling this signal
+ # TODO what is really needed is to extend state() to a multi value
+ # and thus allowing UI to keep track of controller progress in addition to
+ # device scan progress
+
+ if self.controller.state() != QLowEnergyController.UnconnectedState:
+ self.controller.disconnectFromDevice()
+ else:
+ self.device_disconnected()
+
+ @Slot(QBluetoothDeviceInfo)
+ def add_device(self, info):
+ if info.coreConfigurations() & QBluetoothDeviceInfo.LowEnergyCoreConfiguration:
+ self.update = "Last device added: " + info.name()
+
+ @Slot()
+ def device_scan_finished(self):
+ foundDevices = self.discovery_agent.discoveredDevices()
+ for nextDevice in foundDevices:
+ if nextDevice.coreConfigurations() & QBluetoothDeviceInfo.LowEnergyCoreConfiguration:
+ device = DeviceInfo(nextDevice)
+ self.devices.append(device)
+
+ self.devices_updated.emit()
+ self._deviceScanState = False
+ self.state_changed.emit()
+ if not self.devices:
+ self.update = "No Low Energy devices found..."
+ else:
+ self.update = "Done! Scan Again!"
+
+ @Slot("QBluetoothDeviceDiscovertAgent::Error")
+ def device_scan_error(self, error):
+ if error == QBluetoothDeviceDiscoveryAgent.PoweredOffError:
+ self.update = (
+ "The Bluetooth adaptor is powered off, power it on before doing discovery."
+ )
+ elif error == QBluetoothDeviceDiscoveryAgent.InputOutputError:
+ self.update = "Writing or reading from the device resulted in an error."
+ else:
+ qme = self.discovery_agent.metaObject().enumerator(
+ self.discovery_agent.metaObject().indexOfEnumerator("Error")
+ )
+ self.update = f"Error: {qme.valueToKey(error)}"
+
+ self._deviceScanState = False
+ self.devices_updated.emit()
+ self.state_changed.emit()
+
+ @Slot(QBluetoothUuid)
+ def add_low_energy_service(self, service_uuid):
+ service = self.controller.createServiceObject(service_uuid)
+ if not service:
+ warnings.warn("Cannot create service from uuid")
+ return
+
+ serv = ServiceInfo(service)
+ self._services.append(serv)
+ self.services_updated.emit()
+
+ @Slot()
+ def device_connected(self):
+ self.update = "Back\n(Discovering services...)"
+ self.connected = True
+ self.controller.discoverServices()
+
+ @Slot("QLowEnergyController::Error")
+ def error_received(self, error):
+ warnings.warn(f"Error: {self.controller.errorString()}")
+ self.update = f"Back\n({self.controller.errorString()})"
+
+ @Slot()
+ def services_scan_done(self):
+ self.update = "Back\n(Service scan done!)"
+ # force UI in case we didn't find anything
+ if not self._services:
+ self.services_updated.emit()
+
+ @Slot()
+ def device_disconnected(self):
+ warnings.warn("Disconnect from Device")
+ self.disconnected.emit()
+
+ @Slot("QLowEnergyService::ServiceState")
+ def service_details_discovered(self, newState):
+ if newState != QLowEnergyService.RemoteServiceDiscovered:
+ # do not hang in "Scanning for characteristics" mode forever
+ # in case the service discovery failed
+ # We have to queue the signal up to give UI time to even enter
+ # the above mode
+ if newState != QLowEnergyService.RemoteServiceDiscovering:
+ QMetaObject.invokeMethod(self.characteristic_updated, Qt.QueuedConnection)
+ return
+
+ service = self.sender()
+ if not service:
+ return
+
+ chars = service.characteristics()
+ for ch in chars:
+ cInfo = CharacteristicInfo(ch)
+ self._characteristics.append(cInfo)
+
+ self.characteristic_updated.emit()
+
+ @Slot()
+ def stop_device_discovery(self):
+ if self.discovery_agent.isActive():
+ self.discovery_agent.stop()
diff --git a/examples/bluetooth/lowenergyscanner/deviceinfo.py b/examples/bluetooth/lowenergyscanner/deviceinfo.py
new file mode 100644
index 000000000..35a568821
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/deviceinfo.py
@@ -0,0 +1,34 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtBluetooth import QBluetoothDeviceInfo
+
+
+class DeviceInfo(QObject):
+
+ device_changed = Signal()
+
+ def __init__(self, d: QBluetoothDeviceInfo = None) -> None:
+ super().__init__()
+ self._device = d
+
+ @Property(str, notify=device_changed)
+ def device_name(self):
+ return self._device.name()
+
+ @Property(str, notify=device_changed)
+ def device_address(self):
+ if sys.platform == "darwin":
+ return self._device.deviceUuid().toString()
+
+ return self._device.address().toString()
+
+ def get_device(self):
+ return self._device
+
+ def set_device(self, device):
+ self._device = device
+ self.device_changed.emit()
diff --git a/examples/bluetooth/lowenergyscanner/doc/lowenergyscanner.png b/examples/bluetooth/lowenergyscanner/doc/lowenergyscanner.png
new file mode 100644
index 000000000..29f41deb4
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/doc/lowenergyscanner.png
Binary files differ
diff --git a/examples/bluetooth/lowenergyscanner/doc/lowenergyscanner.rst b/examples/bluetooth/lowenergyscanner/doc/lowenergyscanner.rst
new file mode 100644
index 000000000..a0c574350
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/doc/lowenergyscanner.rst
@@ -0,0 +1,11 @@
+Bluetooth Low Energy Scanner Example
+====================================
+
+.. tags:: Android
+
+A Python application that demonstrates the analogous example in Qt
+`Bluetooth Low Energy Scanner <https://doc.qt.io/qt-6/qtbluetooth-lowenergyscanner-example.html>`_
+
+.. image:: lowenergyscanner.png
+ :width: 400
+ :alt: lowenergyscanner screenshot
diff --git a/examples/bluetooth/lowenergyscanner/lowenergyscanner.pyproject b/examples/bluetooth/lowenergyscanner/lowenergyscanner.pyproject
new file mode 100644
index 000000000..7e0cfa3d9
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/lowenergyscanner.pyproject
@@ -0,0 +1,7 @@
+{
+ "files": ["main.py", "device.py", "deviceinfo.py", "serviceinfo.py", "characteristicinfo.py",
+ "Scanner/Main.qml", "Scanner/Menu.qml","Scanner/Header.qml",
+ "Scanner/Characteristics.qml", "Scanner/Dialog.qml", "Scanner/Services.qml",
+ "Scanner/Label.qml", "Scanner/Devices.qml", "Scanner/assets/busy_dark.png",
+ "Scanner/qmldir"]
+}
diff --git a/examples/bluetooth/lowenergyscanner/main.py b/examples/bluetooth/lowenergyscanner/main.py
new file mode 100644
index 000000000..ec12f99e7
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/main.py
@@ -0,0 +1,27 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the bluetooth/lowenergyscanner example from Qt v6.x"""
+
+
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQml import QQmlApplicationEngine
+
+from device import Device # noqa: F401
+from pathlib import Path
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ engine = QQmlApplicationEngine()
+ engine.addImportPath(Path(__file__).parent)
+ engine.loadFromModule("Scanner", "Main")
+
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ ex = QCoreApplication.exec()
+ del engine
+ sys.exit(ex)
diff --git a/examples/bluetooth/lowenergyscanner/serviceinfo.py b/examples/bluetooth/lowenergyscanner/serviceinfo.py
new file mode 100644
index 000000000..cddffe663
--- /dev/null
+++ b/examples/bluetooth/lowenergyscanner/serviceinfo.py
@@ -0,0 +1,64 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtBluetooth import QLowEnergyService
+
+
+class ServiceInfo(QObject):
+
+ service_changed = Signal()
+
+ def __init__(self, service: QLowEnergyService) -> None:
+ super().__init__()
+ self._service = service
+ self.service.setParent(self)
+
+ @Property(str, notify=service_changed)
+ def service_name(self):
+ if not self.service:
+ return ""
+
+ return self.service.service_name()
+
+ @Property(str, notify=service_changed)
+ def service_type(self):
+ if not self.service:
+ return ""
+
+ result = ""
+ if (self.service.type() & QLowEnergyService.PrimaryService):
+ result += "primary"
+ else:
+ result += "secondary"
+
+ if (self.service.type() & QLowEnergyService.IncludedService):
+ result += " included"
+
+ result = '<' + result + '>'
+
+ return result
+
+ @Property(str, notify=service_changed)
+ def service_uuid(self):
+ if not self.service:
+ return ""
+
+ uuid = self.service.service_uuid()
+ result16, success16 = uuid.toUInt16()
+ if success16:
+ return f"0x{result16:x}"
+
+ result32, sucesss32 = uuid.toUInt32()
+ if sucesss32:
+ return f"0x{result32:x}"
+
+ return uuid.toString().replace('{', '').replace('}', '')
+
+ @property
+ def service(self):
+ return self._service
+
+ @service.setter
+ def service(self, service):
+ self._service = service
diff --git a/examples/charts/areachart/areachart.py b/examples/charts/areachart/areachart.py
new file mode 100644
index 000000000..164264ff7
--- /dev/null
+++ b/examples/charts/areachart/areachart.py
@@ -0,0 +1,67 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the areachart example from Qt v6.x"""
+
+import sys
+from PySide6.QtCore import QPointF, Qt
+from PySide6.QtWidgets import QMainWindow, QApplication
+from PySide6.QtCharts import QChart, QChartView, QLineSeries, QAreaSeries
+from PySide6.QtGui import QGradient, QPen, QLinearGradient, QPainter
+
+
+class TestChart(QMainWindow):
+ def __init__(self):
+ super().__init__()
+
+ self.series_0 = QLineSeries()
+ self.series_1 = QLineSeries()
+
+ self.series_0.append(QPointF(1, 5))
+ self.series_0.append(QPointF(3, 7))
+ self.series_0.append(QPointF(7, 6))
+ self.series_0.append(QPointF(9, 7))
+ self.series_0.append(QPointF(12, 6))
+ self.series_0.append(QPointF(16, 7))
+ self.series_0.append(QPointF(18, 5))
+
+ self.series_1.append(QPointF(1, 3))
+ self.series_1.append(QPointF(3, 4))
+ self.series_1.append(QPointF(7, 3))
+ self.series_1.append(QPointF(8, 2))
+ self.series_1.append(QPointF(12, 3))
+ self.series_1.append(QPointF(16, 4))
+ self.series_1.append(QPointF(18, 3))
+
+ self.series = QAreaSeries(self.series_0, self.series_1)
+ self.series.setName("Batman")
+ self.pen = QPen(0x059605)
+ self.pen.setWidth(3)
+ self.series.setPen(self.pen)
+
+ self.gradient = QLinearGradient(QPointF(0, 0), QPointF(0, 1))
+ self.gradient.setColorAt(0.0, 0x3cc63c)
+ self.gradient.setColorAt(1.0, 0x26f626)
+ self.gradient.setCoordinateMode(QGradient.ObjectBoundingMode)
+ self.series.setBrush(self.gradient)
+
+ self.chart = QChart()
+ self.chart.addSeries(self.series)
+ self.chart.setTitle("Simple areachart example")
+ self.chart.createDefaultAxes()
+ self.chart.axes(Qt.Horizontal)[0].setRange(0, 20)
+ self.chart.axes(Qt.Vertical)[0].setRange(0, 10)
+
+ self._chart_view = QChartView(self.chart)
+ self._chart_view.setRenderHint(QPainter.Antialiasing)
+
+ self.setCentralWidget(self._chart_view)
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ window = TestChart()
+ window.show()
+ window.resize(400, 300)
+ sys.exit(app.exec())
diff --git a/examples/charts/areachart/areachart.pyproject b/examples/charts/areachart/areachart.pyproject
new file mode 100644
index 000000000..b4a6f9d65
--- /dev/null
+++ b/examples/charts/areachart/areachart.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["areachart.py"]
+}
diff --git a/examples/charts/areachart/doc/areachart.png b/examples/charts/areachart/doc/areachart.png
new file mode 100644
index 000000000..d03838443
--- /dev/null
+++ b/examples/charts/areachart/doc/areachart.png
Binary files differ
diff --git a/examples/charts/areachart/doc/areachart.rst b/examples/charts/areachart/doc/areachart.rst
new file mode 100644
index 000000000..c6cd718d7
--- /dev/null
+++ b/examples/charts/areachart/doc/areachart.rst
@@ -0,0 +1,8 @@
+Area Chart Example
+==================
+
+The example shows how to create an area Chart
+
+.. image:: areachart.png
+ :width: 400
+ :alt: Area Chart Screenshot
diff --git a/examples/charts/audio/audio.py b/examples/charts/audio/audio.py
index 2d313dd8c..8ba0b20c5 100644
--- a/examples/charts/audio/audio.py
+++ b/examples/charts/audio/audio.py
@@ -1,51 +1,12 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the charts/audio example from Qt v5.x"""
import sys
from PySide6.QtCharts import QChart, QChartView, QLineSeries, QValueAxis
from PySide6.QtCore import QPointF, Slot
-from PySide6.QtMultimedia import (QAudioDeviceInfo, QAudioFormat,
- QAudioInput, QMediaDevices)
+from PySide6.QtMultimedia import QAudioFormat, QAudioSource, QMediaDevices
from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox
@@ -80,7 +41,7 @@ class MainWindow(QMainWindow):
format_audio.setChannelCount(1)
format_audio.setSampleFormat(QAudioFormat.UInt8)
- self._audio_input = QAudioInput(device, format_audio, self)
+ self._audio_input = QAudioSource(device, format_audio, self)
self._io_device = self._audio_input.start()
self._io_device.readyRead.connect(self._readyRead)
diff --git a/examples/charts/barchart/barchart.py b/examples/charts/barchart/barchart.py
new file mode 100644
index 000000000..66126ad8a
--- /dev/null
+++ b/examples/charts/barchart/barchart.py
@@ -0,0 +1,69 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the linechart example from Qt v6.x"""
+
+import sys
+
+from PySide6.QtCharts import (QBarCategoryAxis, QBarSeries, QBarSet, QChart,
+ QChartView, QValueAxis)
+from PySide6.QtCore import Qt
+from PySide6.QtGui import QPainter
+from PySide6.QtWidgets import QApplication, QMainWindow
+
+
+class TestChart(QMainWindow):
+ def __init__(self):
+ super().__init__()
+
+ self.set_0 = QBarSet("Jane")
+ self.set_1 = QBarSet("John")
+ self.set_2 = QBarSet("Axel")
+ self.set_3 = QBarSet("Mary")
+ self.set_4 = QBarSet("Samantha")
+
+ self.set_0.append([1, 2, 3, 4, 5, 6])
+ self.set_1.append([5, 0, 0, 4, 0, 7])
+ self.set_2.append([3, 5, 8, 13, 8, 5])
+ self.set_3.append([5, 6, 7, 3, 4, 5])
+ self.set_4.append([9, 7, 5, 3, 1, 2])
+
+ self.series = QBarSeries()
+ self.series.append(self.set_0)
+ self.series.append(self.set_1)
+ self.series.append(self.set_2)
+ self.series.append(self.set_3)
+ self.series.append(self.set_4)
+
+ self.chart = QChart()
+ self.chart.addSeries(self.series)
+ self.chart.setTitle("Simple barchart example")
+ self.chart.setAnimationOptions(QChart.SeriesAnimations)
+
+ self.categories = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
+ self.axis_x = QBarCategoryAxis()
+ self.axis_x.append(self.categories)
+ self.chart.addAxis(self.axis_x, Qt.AlignBottom)
+ self.series.attachAxis(self.axis_x)
+
+ self.axis_y = QValueAxis()
+ self.axis_y.setRange(0, 15)
+ self.chart.addAxis(self.axis_y, Qt.AlignLeft)
+ self.series.attachAxis(self.axis_y)
+
+ self.chart.legend().setVisible(True)
+ self.chart.legend().setAlignment(Qt.AlignBottom)
+
+ self._chart_view = QChartView(self.chart)
+ self._chart_view.setRenderHint(QPainter.Antialiasing)
+
+ self.setCentralWidget(self._chart_view)
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ window = TestChart()
+ window.show()
+ window.resize(420, 300)
+ sys.exit(app.exec())
diff --git a/examples/charts/barchart/barchart.pyproject b/examples/charts/barchart/barchart.pyproject
new file mode 100644
index 000000000..4ca819426
--- /dev/null
+++ b/examples/charts/barchart/barchart.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["barchart.py"]
+}
diff --git a/examples/charts/barchart/doc/barchart.png b/examples/charts/barchart/doc/barchart.png
new file mode 100644
index 000000000..da08217fc
--- /dev/null
+++ b/examples/charts/barchart/doc/barchart.png
Binary files differ
diff --git a/examples/charts/barchart/doc/barchart.rst b/examples/charts/barchart/doc/barchart.rst
new file mode 100644
index 000000000..b9a499721
--- /dev/null
+++ b/examples/charts/barchart/doc/barchart.rst
@@ -0,0 +1,8 @@
+Bar Chart Example
+==================
+
+The example shows how to create a Bar chart.
+
+.. image:: barchart.png
+ :width: 400
+ :alt: Bar Chart Screenshot
diff --git a/examples/charts/callout/callout.py b/examples/charts/callout/callout.py
index 99982e690..622938d16 100644
--- a/examples/charts/callout/callout.py
+++ b/examples/charts/callout/callout.py
@@ -1,49 +1,11 @@
-
-#############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the Callout example from Qt v5.x"""
import sys
-from PySide6.QtWidgets import (QApplication, QGraphicsScene,
- QGraphicsView, QGraphicsSimpleTextItem, QGraphicsItem)
+from PySide6.QtWidgets import (QApplication, QGraphicsScene, QGraphicsView,
+ QGraphicsSimpleTextItem, QGraphicsItem)
from PySide6.QtCore import Qt, QPointF, QRectF, QRect
from PySide6.QtCharts import QChart, QLineSeries, QSplineSeries
from PySide6.QtGui import QPainter, QFont, QFontMetrics, QPainterPath, QColor
@@ -80,37 +42,37 @@ class Callout(QGraphicsItem):
# establish the position of the anchor point in relation to _rect
above = anchor.y() <= self._rect.top()
- above_center = (anchor.y() > self._rect.top() and
- anchor.y() <= self._rect.center().y())
- below_center = (anchor.y() > self._rect.center().y() and
- anchor.y() <= self._rect.bottom())
+ above_center = (anchor.y() > self._rect.top()
+ and anchor.y() <= self._rect.center().y())
+ below_center = (anchor.y() > self._rect.center().y()
+ and anchor.y() <= self._rect.bottom())
below = anchor.y() > self._rect.bottom()
on_left = anchor.x() <= self._rect.left()
- left_of_center = (anchor.x() > self._rect.left() and
- anchor.x() <= self._rect.center().x())
- right_of_center = (anchor.x() > self._rect.center().x() and
- anchor.x() <= self._rect.right())
+ left_of_center = (anchor.x() > self._rect.left()
+ and anchor.x() <= self._rect.center().x())
+ right_of_center = (anchor.x() > self._rect.center().x()
+ and anchor.x() <= self._rect.right())
on_right = anchor.x() > self._rect.right()
# get the nearest _rect corner.
x = (on_right + right_of_center) * self._rect.width()
y = (below + below_center) * self._rect.height()
- corner_case = ((above and on_left) or (above and on_right) or
- (below and on_left) or (below and on_right))
+ corner_case = ((above and on_left) or (above and on_right)
+ or (below and on_left) or (below and on_right))
vertical = abs(anchor.x() - x) > abs(anchor.y() - y)
- x1 = (x + left_of_center * 10 - right_of_center * 20 + corner_case *
- int(not vertical) * (on_left * 10 - on_right * 20))
- y1 = (y + above_center * 10 - below_center * 20 + corner_case *
- vertical * (above * 10 - below * 20))
+ x1 = (x + left_of_center * 10 - right_of_center * 20 + corner_case
+ * int(not vertical) * (on_left * 10 - on_right * 20))
+ y1 = (y + above_center * 10 - below_center * 20 + corner_case
+ * vertical * (above * 10 - below * 20))
point1.setX(x1)
point1.setY(y1)
- x2 = (x + left_of_center * 20 - right_of_center * 10 + corner_case *
- int(not vertical) * (on_left * 20 - on_right * 10))
- y2 = (y + above_center * 20 - below_center * 10 + corner_case *
- vertical * (above * 20 - below * 10))
+ x2 = (x + left_of_center * 20 - right_of_center * 10 + corner_case
+ * int(not vertical) * (on_left * 20 - on_right * 10))
+ y2 = (y + above_center * 20 - below_center * 10 + corner_case
+ * vertical * (above * 20 - below * 10))
point2.setX(x2)
point2.setY(y2)
@@ -128,7 +90,7 @@ class Callout(QGraphicsItem):
def mouseMoveEvent(self, event):
if event.buttons() & Qt.LeftButton:
- self.setPos(mapToParent(
+ self.setPos(self.mapToParent(
event.pos() - event.buttonDownPos(Qt.LeftButton)))
event.setAccepted(True)
else:
@@ -165,7 +127,7 @@ class View(QGraphicsView):
self._chart = QChart()
self._chart.setMinimumSize(640, 480)
self._chart.setTitle("Hover the line to show callout. Click the line "
- "to make it stay")
+ "to make it stay")
self._chart.legend().hide()
self.series = QLineSeries()
self.series.append(1, 3)
diff --git a/examples/charts/chartthemes/README.md b/examples/charts/chartthemes/README.md
index 806e391d2..1b1ab51f7 100644
--- a/examples/charts/chartthemes/README.md
+++ b/examples/charts/chartthemes/README.md
@@ -3,7 +3,7 @@
To generated the file `ui_themewidget.py`, the following
command need to be executed:
-`pyside6-uic themewidget.ui > ui_themewidget.py`
+`pyside6-uic themewidget.ui -o ui_themewidget.py`
Also, if you modify the UI file, then you would need
to run the previous command again.
diff --git a/examples/charts/chartthemes/main.py b/examples/charts/chartthemes/main.py
index 76c5956ab..5787710ca 100644
--- a/examples/charts/chartthemes/main.py
+++ b/examples/charts/chartthemes/main.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the Chart Themes example from Qt v5.x"""
@@ -44,7 +7,7 @@ import sys
from PySide6.QtCore import QPointF, Qt
from PySide6.QtGui import QColor, QPainter, QPalette
from PySide6.QtWidgets import (QApplication, QMainWindow, QSizePolicy,
- QWidget)
+ QWidget)
from PySide6.QtCharts import (QAreaSeries, QBarSet, QChart, QChartView,
QLineSeries, QPieSeries, QScatterSeries,
QSplineSeries, QStackedBarSeries)
@@ -64,7 +27,7 @@ class ThemeWidget(QWidget):
self.value_max = 10
self.value_count = 7
self.data_table = self.generate_random_data(self.list_count,
- self.value_max, self.value_count)
+ self.value_max, self.value_count)
self.ui.setupUi(self)
self.populate_themebox()
@@ -78,8 +41,7 @@ class ThemeWidget(QWidget):
# Pie Chart
chart_view = QChartView(self.create_pie_chart())
- chart_view.setSizePolicy(QSizePolicy.Ignored,
- QSizePolicy.Ignored)
+ chart_view.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)
self.ui.gridLayout.addWidget(chart_view, 1, 1)
self.charts.append(chart_view)
@@ -107,10 +69,10 @@ class ThemeWidget(QWidget):
self.ui.antialiasCheckBox.setChecked(True)
# Set the colors from the light theme as default ones
- pal = qApp.palette()
+ pal = qApp.palette() # noqa: F821
pal.setColor(QPalette.Window, QColor(0xf0f0f0))
pal.setColor(QPalette.WindowText, QColor(0x404044))
- qApp.setPalette(pal)
+ qApp.setPalette(pal) # noqa: F821
self.update_ui()
@@ -171,7 +133,7 @@ class ThemeWidget(QWidget):
for j in range(len(self.data_table[i])):
data = self.data_table[i][j]
if lower_series:
- points = lower_series.pointsVector()
+ points = lower_series.points()
y_value = points[i].y() + data[0].y()
upper_series.append(QPointF(j, y_value))
else:
@@ -182,10 +144,12 @@ class ThemeWidget(QWidget):
lower_series = upper_series
chart.createDefaultAxes()
- chart.axisX().setRange(0, self.value_count - 1)
- chart.axisY().setRange(0, self.value_max)
+ axis_x = chart.axes(Qt.Horizontal)[0]
+ axis_x.setRange(0, self.value_count - 1)
+ axis_y = chart.axes(Qt.Vertical)[0]
+ axis_y.setRange(0, self.value_max)
# Add space to label to add space between labels and axis
- chart.axisY().setLabelFormat("%.1f ")
+ axis_y.setLabelFormat("%.1f ")
return chart
@@ -203,9 +167,10 @@ class ThemeWidget(QWidget):
chart.addSeries(series)
chart.createDefaultAxes()
- chart.axisY().setRange(0, self.value_max * 2)
+ axis_y = chart.axes(Qt.Vertical)[0]
+ axis_y.setRange(0, self.value_max * 2)
# Add space to label to add space between labels and axis
- chart.axisY().setLabelFormat("%.1f ")
+ axis_y.setLabelFormat("%.1f ")
return chart
@@ -222,10 +187,12 @@ class ThemeWidget(QWidget):
chart.addSeries(series)
chart.createDefaultAxes()
- chart.axisX().setRange(0, self.value_max)
- chart.axisY().setRange(0, self.value_count)
+ axis_x = chart.axes(Qt.Horizontal)[0]
+ axis_x.setRange(0, self.value_max)
+ axis_y = chart.axes(Qt.Vertical)[0]
+ axis_y.setRange(0, self.value_count)
# Add space to label to add space between labels and axis
- chart.axisY().setLabelFormat("%.1f ")
+ axis_y.setLabelFormat("%.1f ")
return chart
@@ -259,10 +226,12 @@ class ThemeWidget(QWidget):
chart.addSeries(series)
chart.createDefaultAxes()
- chart.axisX().setRange(0, self.value_max)
- chart.axisY().setRange(0, self.value_count)
+ axis_x = chart.axes(Qt.Horizontal)[0]
+ axis_x.setRange(0, self.value_max)
+ axis_y = chart.axes(Qt.Vertical)[0]
+ axis_y.setRange(0, self.value_count)
# Add space to label to add space between labels and axis
- chart.axisY().setLabelFormat("%.1f ")
+ axis_y.setLabelFormat("%.1f ")
return chart
@@ -278,10 +247,12 @@ class ThemeWidget(QWidget):
chart.addSeries(series)
chart.createDefaultAxes()
- chart.axisX().setRange(0, self.value_max)
- chart.axisY().setRange(0, self.value_count)
+ axis_x = chart.axes(Qt.Horizontal)[0]
+ axis_x.setRange(0, self.value_max)
+ axis_y = chart.axes(Qt.Vertical)[0]
+ axis_y.setRange(0, self.value_count)
# Add space to label to add space between labels and axis
- chart.axisY().setLabelFormat("%.1f ")
+ axis_y.setLabelFormat("%.1f ")
return chart
@@ -299,26 +270,7 @@ class ThemeWidget(QWidget):
chart_theme = self.charts[0].chart().theme()
if chart_theme != theme:
for chart_view in self.charts:
- if theme == 0:
- theme_name = QChart.ChartThemeLight
- elif theme == 1:
- theme_name = QChart.ChartThemeBlueCerulean
- elif theme == 2:
- theme_name = QChart.ChartThemeDark
- elif theme == 3:
- theme_name = QChart.ChartThemeBrownSand
- elif theme == 4:
- theme_name = QChart.ChartThemeBlueNcs
- elif theme == 5:
- theme_name = QChart.ChartThemeHighContrast
- elif theme == 6:
- theme_name = QChart.ChartThemeBlueIcy
- elif theme == 7:
- theme_name = QChart.ChartThemeQt
- else:
- theme_name = QChart.ChartThemeLight
-
- chart_view.chart().setTheme(theme_name)
+ chart_view.chart().setTheme(theme)
# Set palette colors based on selected theme
if theme == QChart.ChartThemeLight:
@@ -348,20 +300,10 @@ class ThemeWidget(QWidget):
options = self.ui.animatedComboBox.itemData(idx)
if len(self.charts):
- chart = self.charts[0].chart()
- animation_options = chart.animationOptions()
+ animation_options = self.charts[0].chart().animationOptions()
if animation_options != options:
for chart_view in self.charts:
- options_name = QChart.NoAnimation
- if options == 0:
- options_name = QChart.NoAnimation
- elif options == 1:
- options_name = QChart.GridAxisAnimations
- elif options == 2:
- options_name = QChart.SeriesAnimations
- elif options == 3:
- options_name = QChart.AllAnimations
- chart_view.chart().setAnimationOptions(options_name)
+ chart_view.chart().setAnimationOptions(options)
# Update legend alignment
idx = self.ui.legendComboBox.currentIndex()
diff --git a/examples/charts/chartthemes/ui_themewidget.py b/examples/charts/chartthemes/ui_themewidget.py
index e6e937dae..711615b3e 100644
--- a/examples/charts/chartthemes/ui_themewidget.py
+++ b/examples/charts/chartthemes/ui_themewidget.py
@@ -3,15 +3,21 @@
################################################################################
## Form generated from reading UI file 'themewidget.ui'
##
-## Created by: Qt User Interface Compiler version 6.2.0
+## Created by: Qt User Interface Compiler version 6.7.0
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
-from PySide6.QtCore import *
-from PySide6.QtGui import *
-from PySide6.QtWidgets import *
-
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QGridLayout,
+ QHBoxLayout, QLabel, QSizePolicy, QSpacerItem,
+ QWidget)
class Ui_ThemeWidgetForm(object):
def setupUi(self, ThemeWidgetForm):
@@ -58,7 +64,7 @@ class Ui_ThemeWidgetForm(object):
self.horizontalLayout.addWidget(self.antialiasCheckBox)
- self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
+ self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout.addItem(self.horizontalSpacer)
diff --git a/examples/charts/donutbreakdown/donutbreakdown.py b/examples/charts/donutbreakdown/donutbreakdown.py
index 1fc7ff83d..9111d4aac 100644
--- a/examples/charts/donutbreakdown/donutbreakdown.py
+++ b/examples/charts/donutbreakdown/donutbreakdown.py
@@ -1,49 +1,12 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the Donut Chart Breakdown example from Qt v5.x"""
import sys
-from PySide6.QtCore import Qt
-from PySide6.QtGui import QColor, QFont, QPainter, QScreen
+from PySide6.QtCore import Qt, Slot
+from PySide6.QtGui import QColor, QFont, QPainter
from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtCharts import QChart, QChartView, QPieSeries, QPieSlice
@@ -66,6 +29,7 @@ class MainSlice(QPieSlice):
def name(self):
return self.name
+ @Slot()
def update_label(self):
p = self.percentage() * 100
self.setLabel(f"{self.name} {p:.2f}%")
@@ -74,7 +38,7 @@ class MainSlice(QPieSlice):
class DonutBreakdownChart(QChart):
def __init__(self, parent=None):
super().__init__(QChart.ChartTypeCartesian,
- parent, Qt.WindowFlags())
+ parent, Qt.WindowFlags())
self.main_series = QPieSeries()
self.main_series.setPieSize(0.7)
self.addSeries(self.main_series)
diff --git a/examples/charts/dynamicspline/chart.py b/examples/charts/dynamicspline/chart.py
new file mode 100644
index 000000000..59ddef13f
--- /dev/null
+++ b/examples/charts/dynamicspline/chart.py
@@ -0,0 +1,52 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import random
+
+from PySide6.QtCharts import QChart, QSplineSeries, QValueAxis
+from PySide6.QtCore import Qt, QTimer, Slot
+from PySide6.QtGui import QPen
+
+
+class Chart(QChart):
+ def __init__(self, parent=None):
+ super().__init__(QChart.ChartTypeCartesian, parent, Qt.WindowFlags())
+ self._timer = QTimer()
+ self._series = QSplineSeries(self)
+ self._titles = []
+ self._axisX = QValueAxis()
+ self._axisY = QValueAxis()
+ self._step = 0
+ self._x = 5
+ self._y = 1
+
+ self._timer.timeout.connect(self.handleTimeout)
+ self._timer.setInterval(1000)
+
+ green = QPen(Qt.red)
+ green.setWidth(3)
+ self._series.setPen(green)
+ self._series.append(self._x, self._y)
+
+ self.addSeries(self._series)
+ self.addAxis(self._axisX, Qt.AlignBottom)
+ self.addAxis(self._axisY, Qt.AlignLeft)
+
+ self._series.attachAxis(self._axisX)
+ self._series.attachAxis(self._axisY)
+ self._axisX.setTickCount(5)
+ self._axisX.setRange(0, 10)
+ self._axisY.setRange(-5, 10)
+
+ self._timer.start()
+
+ @Slot()
+ def handleTimeout(self):
+ x = self.plotArea().width() / self._axisX.tickCount()
+ y = (self._axisX.max() - self._axisX.min()) / self._axisX.tickCount()
+ self._x += y
+ self._y = random.uniform(0, 5) - 2.5
+ self._series.append(self._x, self._y)
+ self.scroll(x, 0)
+ if self._x == 100:
+ self._timer.stop()
diff --git a/examples/charts/dynamicspline/doc/dynamicspline.rst b/examples/charts/dynamicspline/doc/dynamicspline.rst
new file mode 100644
index 000000000..e946447b7
--- /dev/null
+++ b/examples/charts/dynamicspline/doc/dynamicspline.rst
@@ -0,0 +1,15 @@
+Dynamic Spline Example
+======================
+
+This example shows how to draw dynamic data.
+
+You can check a simple animation of this example
+`here <https://qt-wiki-uploads.s3.amazonaws.com/images/thumb/f/f8/Dynamicspline.gif/300px-Dynamicspline.gif>`_.
+
+.. image:: dynamicspline1.png
+ :width: 400
+ :alt: Dynamic Spline Screenshot 1
+
+.. image:: dynamicspline2.png
+ :width: 400
+ :alt: Dynamic Spline Screenshot 2
diff --git a/examples/charts/dynamicspline/doc/dynamicspline1.png b/examples/charts/dynamicspline/doc/dynamicspline1.png
new file mode 100644
index 000000000..bcee80ed4
--- /dev/null
+++ b/examples/charts/dynamicspline/doc/dynamicspline1.png
Binary files differ
diff --git a/examples/charts/dynamicspline/doc/dynamicspline2.png b/examples/charts/dynamicspline/doc/dynamicspline2.png
new file mode 100644
index 000000000..595c38b1f
--- /dev/null
+++ b/examples/charts/dynamicspline/doc/dynamicspline2.png
Binary files differ
diff --git a/examples/charts/dynamicspline/dynamicspline.pyproject b/examples/charts/dynamicspline/dynamicspline.pyproject
new file mode 100644
index 000000000..bdd641930
--- /dev/null
+++ b/examples/charts/dynamicspline/dynamicspline.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["chart.py", "main.py"]
+}
diff --git a/examples/charts/dynamicspline/main.py b/examples/charts/dynamicspline/main.py
new file mode 100644
index 000000000..8405824dc
--- /dev/null
+++ b/examples/charts/dynamicspline/main.py
@@ -0,0 +1,27 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Dynamic Spline example from Qt v5.x"""
+import sys
+
+from PySide6.QtCharts import QChart, QChartView
+from PySide6.QtGui import QPainter
+from PySide6.QtWidgets import QApplication, QMainWindow
+
+from chart import Chart
+
+if __name__ == "__main__":
+
+ a = QApplication(sys.argv)
+ window = QMainWindow()
+ chart = Chart()
+ chart.setTitle("Dynamic spline chart")
+ chart.legend().hide()
+ chart.setAnimationOptions(QChart.AllAnimations)
+ chart_view = QChartView(chart)
+ chart_view.setRenderHint(QPainter.Antialiasing)
+ window.setCentralWidget(chart_view)
+ window.resize(400, 300)
+ window.show()
+
+ sys.exit(a.exec())
diff --git a/examples/charts/legend/legend.py b/examples/charts/legend/legend.py
index 2996904c8..5417a940f 100644
--- a/examples/charts/legend/legend.py
+++ b/examples/charts/legend/legend.py
@@ -1,50 +1,14 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the Legend example from Qt v5.x"""
import sys
-from PySide6.QtCore import Qt, QRectF
+from PySide6.QtCore import Qt, QRectF, Slot
from PySide6.QtGui import QBrush, QColor, QPainter, QPen
from PySide6.QtWidgets import (QApplication, QDoubleSpinBox,
- QFormLayout, QGridLayout, QGroupBox, QPushButton, QWidget)
+ QFormLayout, QGridLayout, QGroupBox,
+ QPushButton, QWidget)
from PySide6.QtCharts import QBarSeries, QBarSet, QChart, QChartView
@@ -160,6 +124,7 @@ class MainWidget(QWidget):
def hide_legend_spinbox(self):
self.legend_settings.setVisible(False)
+ @Slot()
def toggle_attached(self):
legend = self.chart.legend()
if legend.isAttachedToChart():
@@ -176,6 +141,7 @@ class MainWidget(QWidget):
self.hide_legend_spinbox()
self.update()
+ @Slot()
def add_barset(self):
series_count = self.series.count()
bar_set = QBarSet(f"set {series_count}")
@@ -183,12 +149,14 @@ class MainWidget(QWidget):
bar_set.append([1 + delta, 2 + delta, 3 + delta, 4 + delta])
self.series.append(bar_set)
+ @Slot()
def remove_barset(self):
sets = self.series.barSets()
len_sets = len(sets)
if len_sets > 0:
self.series.remove(sets[len_sets - 1])
+ @Slot()
def set_legend_alignment(self):
button = self.sender()
legend = self.chart.legend()
@@ -211,18 +179,21 @@ class MainWidget(QWidget):
button.setText("Align (Top)")
legend.setAlignment(Qt.AlignTop)
+ @Slot()
def toggle_bold(self):
legend = self.chart.legend()
font = legend.font()
font.setBold(not font.bold())
legend.setFont(font)
+ @Slot()
def toggle_italic(self):
legend = self.chart.legend()
font = legend.font()
font.setItalic(not font.italic())
legend.setFont(font)
+ @Slot()
def font_size_changed(self):
legend = self.chart.legend()
font = legend.font()
@@ -232,13 +203,12 @@ class MainWidget(QWidget):
font.setPointSizeF(font_size)
legend.setFont(font)
+ @Slot()
def update_legend_layout(self):
legend = self.chart.legend()
- rect = QRectF(self.legend_posx.value(),
- self.legend_posy.value(),
- self.legend_width.value(),
- self.legend_height.value())
+ rect = QRectF(self.legend_posx.value(), self.legend_posy.value(),
+ self.legend_width.value(), self.legend_height.value())
legend.setGeometry(rect)
legend.update()
diff --git a/examples/charts/lineandbar/lineandbar.py b/examples/charts/lineandbar/lineandbar.py
index 826b62965..62721c763 100644
--- a/examples/charts/lineandbar/lineandbar.py
+++ b/examples/charts/lineandbar/lineandbar.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the line/bar example from Qt v5.x"""
@@ -89,13 +51,15 @@ class TestChart(QMainWindow):
self.categories = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
self._axis_x = QBarCategoryAxis()
self._axis_x.append(self.categories)
- self.chart.setAxisX(self._axis_x, self._line_series)
- self.chart.setAxisX(self._axis_x, self._bar_series)
+ self.chart.addAxis(self._axis_x, Qt.AlignBottom)
+ self._line_series.attachAxis(self._axis_x)
+ self._bar_series.attachAxis(self._axis_x)
self._axis_x.setRange("Jan", "Jun")
self._axis_y = QValueAxis()
- self.chart.setAxisY(self._axis_y, self._line_series)
- self.chart.setAxisY(self._axis_y, self._bar_series)
+ self.chart.addAxis(self._axis_x, Qt.AlignLeft)
+ self._line_series.attachAxis(self._axis_y)
+ self._bar_series.attachAxis(self._axis_y)
self._axis_y.setRange(0, 20)
self.chart.legend().setVisible(True)
diff --git a/examples/charts/linechart/linechart.py b/examples/charts/linechart/linechart.py
index b3ed655b1..cee4c16db 100644
--- a/examples/charts/linechart/linechart.py
+++ b/examples/charts/linechart/linechart.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the linechart example from Qt v5.x"""
diff --git a/examples/charts/logvalueaxis/logvalueaxis.py b/examples/charts/logvalueaxis/logvalueaxis.py
index b84e409c4..e727c1200 100644
--- a/examples/charts/logvalueaxis/logvalueaxis.py
+++ b/examples/charts/logvalueaxis/logvalueaxis.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the Logarithmic Axis Example from Qt v5.x"""
diff --git a/examples/charts/memoryusage/memoryusage.py b/examples/charts/memoryusage/memoryusage.py
index 384057748..3ba42368e 100644
--- a/examples/charts/memoryusage/memoryusage.py
+++ b/examples/charts/memoryusage/memoryusage.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 Charts example: Simple memory usage viewer"""
@@ -92,7 +54,7 @@ def get_memory_usage():
legend = f'{command} {memory_usage}%'
result.append([legend, memory_usage])
- result.sort(key = lambda x: x[1], reverse=True)
+ result.sort(key=lambda x: x[1], reverse=True)
return result
diff --git a/examples/charts/modeldata/modeldata.py b/examples/charts/modeldata/modeldata.py
index ea2ab5afc..0e36f7770 100644
--- a/examples/charts/modeldata/modeldata.py
+++ b/examples/charts/modeldata/modeldata.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the Model Data example from Qt v5.x"""
@@ -47,7 +9,7 @@ from random import randrange
from PySide6.QtCore import QAbstractTableModel, QModelIndex, QRect, Qt
from PySide6.QtGui import QColor, QPainter
from PySide6.QtWidgets import (QApplication, QGridLayout, QHeaderView,
- QTableView, QWidget)
+ QTableView, QWidget)
from PySide6.QtCharts import QChart, QChartView, QLineSeries, QVXYModelMapper
@@ -139,9 +101,6 @@ class TableWidget(QWidget):
self.mapper.setModel(self.model)
self.chart.addSeries(self.series)
- # for storing color hex from the series
- seriesColorHex = "#000000"
-
# get the color of the series and use it for showing the mapped area
self.model.add_mapping(self.series.pen().color().name(),
QRect(0, 0, 2, self.model.rowCount()))
diff --git a/examples/charts/nesteddonuts/nesteddonuts.py b/examples/charts/nesteddonuts/nesteddonuts.py
index 406beb528..49173c33a 100644
--- a/examples/charts/nesteddonuts/nesteddonuts.py
+++ b/examples/charts/nesteddonuts/nesteddonuts.py
@@ -1,49 +1,11 @@
-
-#############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the Nested Donuts example from Qt v5.x"""
import sys
-from PySide6.QtCore import Qt, QTimer
+from PySide6.QtCore import Qt, QTimer, Slot
from PySide6.QtGui import QPainter
from PySide6.QtWidgets import QApplication, QGridLayout, QWidget
from PySide6.QtCharts import QChart, QChartView, QPieSeries, QPieSlice
@@ -103,6 +65,7 @@ class Widget(QWidget):
self.donuts.append(donut)
self.chart_view.chart().addSeries(donut)
+ @Slot()
def update_rotation(self):
for donut in self.donuts:
phase_shift = randrange(-50, 100)
diff --git a/examples/charts/percentbarchart/percentbarchart.py b/examples/charts/percentbarchart/percentbarchart.py
index 88a4e39e2..9f70c0328 100644
--- a/examples/charts/percentbarchart/percentbarchart.py
+++ b/examples/charts/percentbarchart/percentbarchart.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the Percent Bar Chart example from Qt v5.x"""
@@ -59,11 +21,11 @@ class MainWindow(QMainWindow):
set3 = QBarSet("Mary")
set4 = QBarSet("Samantha")
- set0.append([1, 2, 3, 4, 5, 6])
- set1.append([5, 0, 0, 4, 0, 7])
+ set0.append([1, 2, 3, 4, 5, 6])
+ set1.append([5, 0, 0, 4, 0, 7])
set2.append([3, 5, 8, 13, 8, 5])
- set3.append([5, 6, 7, 3, 4, 5])
- set4.append([9, 7, 5, 3, 1, 2])
+ set3.append([5, 6, 7, 3, 4, 5])
+ set4.append([9, 7, 5, 3, 1, 2])
series = QPercentBarSeries()
series.append(set0)
@@ -81,7 +43,8 @@ class MainWindow(QMainWindow):
axis = QBarCategoryAxis()
axis.append(categories)
chart.createDefaultAxes()
- chart.setAxisX(axis, series)
+ chart.addAxis(axis, Qt.AlignBottom)
+ series.attachAxis(axis)
chart.legend().setVisible(True)
chart.legend().setAlignment(Qt.AlignBottom)
diff --git a/examples/charts/piechart/piechart.py b/examples/charts/piechart/piechart.py
index 71c338820..e71359a98 100644
--- a/examples/charts/piechart/piechart.py
+++ b/examples/charts/piechart/piechart.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the Pie Chart Example from Qt v5.x"""
diff --git a/examples/charts/pointconfiguration/chartwindow.py b/examples/charts/pointconfiguration/chartwindow.py
new file mode 100644
index 000000000..36b10aa16
--- /dev/null
+++ b/examples/charts/pointconfiguration/chartwindow.py
@@ -0,0 +1,156 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Selected Point Configuration Example from Qt 6.5"""
+from PySide6.QtCore import QPointF, Slot
+from PySide6.QtGui import QColor, QIcon, QPainter
+from PySide6.QtWidgets import QMainWindow, QLineEdit, QLabel, QComboBox
+from PySide6.QtWidgets import QCheckBox, QWidget, QGridLayout, QHBoxLayout
+from PySide6.QtCharts import QLineSeries, QXYSeries, QChart, QChartView
+from typing import Union
+
+
+PointConfig = QXYSeries.PointConfiguration
+
+
+class ChartWindow(QMainWindow):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.setWindowTitle("Chart")
+ self._series = QLineSeries(self)
+ self._series.setName("Customized series")
+ self._series.setPointsVisible(True)
+ self._series.append([QPointF(0, 7), QPointF(2, 4),
+ QPointF(3, 5), QPointF(7, 4),
+ QPointF(10, 5), QPointF(11, 1),
+ QPointF(13, 3), QPointF(17, 6),
+ QPointF(18, 3), QPointF(20, 2)])
+
+ selected_point_index_label = QLabel("Selected Point: ")
+ self._selected_point_index_lineedit = QLineEdit()
+ self._selected_point_index_lineedit.setReadOnly(True)
+ self._selected_point_index_lineedit.setStyleSheet(
+ "background-color: rgba(0, 0, 0, 0); border: 0px")
+
+ color_label = QLabel("Color: ")
+ self._color_combobox = QComboBox()
+ color_strings = ["red", "orange", "yellow", "green", "blue",
+ "indigo", "violet", "black"]
+ for color_str in color_strings:
+ self._color_combobox.addItem(QIcon(), color_str, QColor(color_str))
+
+ size_label = QLabel("Size: ")
+ self._size_combobox = QComboBox()
+ for size in [2, 3, 4, 6, 8, 10, 12, 15]:
+ self._size_combobox.addItem(QIcon(), str(size), size)
+
+ label_visibility_label = QLabel("Label Visibility: ")
+ self._label_visibility_checkbox = QCheckBox()
+
+ custom_label_label = QLabel("Custom Label: ")
+ self._custom_label_lineedit = QLineEdit()
+
+ self._series.clicked.connect(self._select_point)
+ self._color_combobox.activated.connect(self._set_color)
+ self._size_combobox.activated.connect(self._set_size)
+ label_vis_checkbox = self._label_visibility_checkbox
+ label_vis_checkbox.clicked.connect(self._set_label_visibility)
+ clabel_lineedit = self._custom_label_lineedit
+ clabel_lineedit.editingFinished.connect(self._set_custom_label)
+
+ self._chart = QChart()
+ self._chart.addSeries(self._series)
+ self._chart.createDefaultAxes()
+
+ chart_view = QChartView(self._chart)
+ chart_view.setRenderHint(QPainter.RenderHint.Antialiasing)
+
+ control_widget = QWidget(self)
+ control_layout = QGridLayout(control_widget)
+ control_layout.setColumnStretch(1, 1)
+
+ control_layout.addWidget(selected_point_index_label, 0, 0)
+ control_layout.addWidget(self._selected_point_index_lineedit, 0, 1)
+
+ control_layout.addWidget(color_label, 1, 0)
+ control_layout.addWidget(self._color_combobox, 1, 1)
+
+ control_layout.addWidget(size_label, 2, 0)
+ control_layout.addWidget(self._size_combobox, 2, 1)
+
+ control_layout.addWidget(label_visibility_label, 3, 0)
+ control_layout.addWidget(self._label_visibility_checkbox, 3, 1, 1, 2)
+
+ control_layout.addWidget(custom_label_label, 4, 0)
+ control_layout.addWidget(self._custom_label_lineedit, 4, 1)
+
+ main_widget = QWidget(self)
+ main_layout = QHBoxLayout(main_widget)
+ main_layout.addWidget(chart_view)
+ main_layout.setStretch(0, 1)
+ main_layout.addWidget(control_widget)
+ self.setCentralWidget(main_widget)
+
+ self._select_point(4)
+
+ @Slot(QPointF)
+ def _select_point(self, point: Union[QPointF, int]):
+ try:
+ index = (self._series.points().index(point.toPoint()) if
+ isinstance(point, QPointF) else point)
+ except ValueError:
+ # Do nothing if the place that was clicked on wasn't a point.
+ return
+
+ self._series.deselectAllPoints()
+ self._series.selectPoint(index)
+ self._selectedPointIndex = index
+ self._selectedPointConfig = self._series.pointConfiguration(index)
+ selected_point = self._series.at(index)
+ selected_index_lineedit = self._selected_point_index_lineedit
+ selected_index_lineedit.setText("(" + str(selected_point.x()) + ", "
+ + str(selected_point.y()) + ")")
+ config = self._series.pointConfiguration(index)
+
+ color = config.get(PointConfig.Color) or self._series.color()
+ size = config.get(PointConfig.Size) or self._series.markerSize()
+ labelVisibility = (config.get(PointConfig.LabelVisibility)
+ or self._series.pointLabelsVisible())
+ customLabel = config.get(PointConfig.LabelFormat) or ""
+
+ combobox_value_list = [
+ (self._color_combobox, color.name(), color),
+ (self._size_combobox, str(size), size)
+ ]
+ for box, value_str, value in combobox_value_list:
+ if box.findData(value) < 0:
+ box.addItem(value_str, value)
+ box.setCurrentIndex(box.findData(value))
+
+ self._label_visibility_checkbox.setChecked(labelVisibility)
+ self._custom_label_lineedit.setText(customLabel)
+
+ @Slot(int)
+ def _set_color(self, index: int):
+ spc = self._selectedPointConfig
+ spc[PointConfig.Color] = self._color_combobox.currentData()
+ self._series.setPointConfiguration(self._selectedPointIndex, spc)
+
+ @Slot(int)
+ def _set_size(self, index: int):
+ spc = self._selectedPointConfig
+ spc[PointConfig.Size] = self._size_combobox.currentData()
+ self._series.setPointConfiguration(self._selectedPointIndex, spc)
+
+ @Slot(bool)
+ def _set_label_visibility(self, checked: bool):
+ spc = self._selectedPointConfig
+ spc[PointConfig.LabelVisibility] = checked
+ self._series.setPointConfiguration(self._selectedPointIndex, spc)
+
+ @Slot()
+ def _set_custom_label(self):
+ spc = self._selectedPointConfig
+ spc[PointConfig.LabelFormat] = self._custom_label_lineedit.text()
+ self._series.setPointConfiguration(self._selectedPointIndex, spc)
diff --git a/examples/charts/pointconfiguration/doc/pointconfiguration.png b/examples/charts/pointconfiguration/doc/pointconfiguration.png
new file mode 100644
index 000000000..791698587
--- /dev/null
+++ b/examples/charts/pointconfiguration/doc/pointconfiguration.png
Binary files differ
diff --git a/examples/charts/pointconfiguration/doc/pointconfiguration.rst b/examples/charts/pointconfiguration/doc/pointconfiguration.rst
new file mode 100644
index 000000000..ffe865d5e
--- /dev/null
+++ b/examples/charts/pointconfiguration/doc/pointconfiguration.rst
@@ -0,0 +1,144 @@
+.. role:: py(code)
+ :language: python
+
+Selected Point Configuration Example
+====================================
+
+This example shows how to configure individual points of a :py:`QLineSeries`.
+
+.. image:: pointconfiguration.png
+ :width: 90%
+ :align: center
+ :alt: Line chart with controls for configuring selected points
+
+Features demonstrated
+~~~~~~~~~~~~~~~~~~~~~
+
+In this application you will learn how to:
+
+* Select a series of points on click
+* Override the configuration for the following properties of specific points:
+
+ * Color
+ * Size
+ * Label visibility
+ * Text format of the label
+
+Subclass QMainWindow
+~~~~~~~~~~~~~~~~~~~~
+
+Create a subclass of :py:`QMainWindow` to contain the chart and controls.
+
+.. literalinclude:: chartwindow.py
+ :linenos:
+ :lineno-start: 16
+ :lines: 16-18
+
+Create a line series
+~~~~~~~~~~~~~~~~~~~~
+
+Create a :py:`QLineSeries` containing the points to plot. Give it a name and make the points
+visible.
+
+.. literalinclude:: chartwindow.py
+ :linenos:
+ :lineno-start: 20
+ :lines: 20-28
+
+Create the point configuration controls
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Now, create controls to configure the color, size, and label visibility attributes of a point.
+
+#. Create an associated label for each control, so the user knows what the control does.
+#. For the color and size, use a :py:`QComboBox`, populating it with a variety of colors and size
+ choices.
+#. Create the final two controls. Create a :py:`QCheckbox` to control the visibility of the selected
+ point, and a :py:`QLineEdit` to allow the user to provide a custom label for it.
+
+.. note::
+ Do not set initial values for any of the controls, as a point will always be selected showing
+ its current settings.
+
+.. literalinclude:: chartwindow.py
+ :linenos:
+ :lineno-start: 31
+ :lines: 31-52
+
+Populate the controls upon selecting a point
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Add the logic to set the current control values depending on the chosen point. Note that the whole
+series value is used if there is no customization for a selected point. In this case, if the series
+is set to show blue points, a blue color value will be shown in the color combobox.
+
+Perform some actions upon clicking on the lineseries. Look up the point clicked on and remove the
+prior point selection. Finally, select the point that was clicked on. This makes the point larger to
+indicate its selection. The current selected point's index and :py:`PointConfigurations` are saved
+to a member variable for later use.
+
+Query the :py:`PointConfigurations`, and use those to find the matching indices in the combo boxes.
+Set the current indices of the comboboxes to the corresponding values you looked up. Similarly,
+look up the values in :py:`PointConfigurations`, and update the checkbox and line edit controls.
+
+.. literalinclude:: chartwindow.py
+ :linenos:
+ :lineno-start: 54
+ :lines: 54
+.. literalinclude:: chartwindow.py
+ :linenos:
+ :lineno-start: 97
+ :lines: 97-132
+
+Provide the logic to configure the selected point
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Now that the controls are populated with some values, add logic to do something when the value
+changes. Connect the control signals and the logic, to configure the selected point based on the
+chosen values in the controls. You can do this by setting the :py:`QXYSeries::PointConfiguration`
+value that is associated with the control, to the :py:`m_selectedPointConfig` and
+:py:`PointConfigurations` member variables, and call :py:`QXYSeries::setPointConfiguration`.
+
+.. literalinclude:: chartwindow.py
+ :linenos:
+ :lineno-start: 55
+ :lines: 55-60
+.. literalinclude:: chartwindow.py
+ :linenos:
+ :lineno-start: 140
+ :lines: 140-156
+
+Create the chart and lay out the controls
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Finally, create the chart and its view, add the series to the chart, create the layout of the
+window, and select an initial point.
+
+.. literalinclude:: chartwindow.py
+ :linenos:
+ :lineno-start: 62
+ :lines: 62-95
+
+In our entrypoint file `pointconfiguration.py`, instantiate the :py:`ChartWindow`, resize it, show
+it, and start the event loop.
+
+.. literalinclude:: pointconfiguration.py
+ :linenos:
+ :lineno-start: 11
+ :lines: 11-17
+
+You now have a fully functioning application that demonstrates how to customize individual chart
+points.
+
+Usage
+-----
+To use this example, click any point you'd like to customize, change any of the comboboxes and
+checkboxes controlling the individual point color, size, label visibility. You can customize the
+label text in the line edit at the bottom.
+
+There are three special formatting strings for the label that you can use: ``@pointX``, ``@pointY``,
+and ``@index``. These are replaced with the x value, y value, and index of the point, respectively.
+More information about that can be found in the documentation for
+`QtCharts.QXYSeries.pointLabelsFormat`_.
+
+.. _`QtCharts.QXYSeries.pointLabelsFormat`: https://doc.qt.io/qtforpython/PySide6/QtCharts/QXYSeries.html#PySide6.QtCharts.PySide6.QtCharts.QXYSeries.pointLabelsFormat
diff --git a/examples/charts/pointconfiguration/pointconfiguration.py b/examples/charts/pointconfiguration/pointconfiguration.py
new file mode 100644
index 000000000..d8c90d2df
--- /dev/null
+++ b/examples/charts/pointconfiguration/pointconfiguration.py
@@ -0,0 +1,17 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Light Markers Points Selection example from Qt v6.2"""
+import sys
+from PySide6.QtWidgets import QApplication
+
+from chartwindow import ChartWindow
+
+
+if __name__ == "__main__":
+
+ a = QApplication(sys.argv)
+ main_window = ChartWindow()
+ main_window.resize(640, 480)
+ main_window.show()
+ sys.exit(a.exec())
diff --git a/examples/charts/pointconfiguration/pointconfiguration.pyproject b/examples/charts/pointconfiguration/pointconfiguration.pyproject
new file mode 100644
index 000000000..c53d798be
--- /dev/null
+++ b/examples/charts/pointconfiguration/pointconfiguration.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["pointconfiguration.py", "chartwindow.py"]
+}
diff --git a/examples/charts/pointselectionandmarkers/doc/pointselectionandmarkers.png b/examples/charts/pointselectionandmarkers/doc/pointselectionandmarkers.png
new file mode 100644
index 000000000..209bc3b0d
--- /dev/null
+++ b/examples/charts/pointselectionandmarkers/doc/pointselectionandmarkers.png
Binary files differ
diff --git a/examples/charts/pointselectionandmarkers/doc/pointselectionandmarkers.rst b/examples/charts/pointselectionandmarkers/doc/pointselectionandmarkers.rst
new file mode 100644
index 000000000..e8776daf8
--- /dev/null
+++ b/examples/charts/pointselectionandmarkers/doc/pointselectionandmarkers.rst
@@ -0,0 +1,72 @@
+.. role:: py(code)
+ :language: python
+
+Light Markers and Points Selection Example
+==========================================
+
+The Light Markers and Points Selection example shows how to use light markers
+and point selections in a series.
+
+.. image:: pointselectionandmarkers.png
+ :width: 90%
+ :align: center
+ :alt: QChart with Light Markers shown
+
+Creating the chart and its elements
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+We start by creating a series, filling it with the data, and enabling the light marker and point selection features.
+It is important not to set points visibility to :py:`True`, because light markers functionality is an independent feature and setting both would result in undesired behavior.
+
+.. literalinclude:: pointselectionandmarkers.py
+ :linenos:
+ :lineno-start: 20
+ :lines: 20-42
+ :emphasize-lines: 2-12
+
+Then we create the :py:`QChart`, the :py:`QChartview` and the control widget with its layout to arrange customization elements.
+
+.. literalinclude:: pointselectionandmarkers.py
+ :lineno-start: 44
+ :lines: 44-53
+ :emphasize-lines: 1,6,9
+
+Creating UI for configuring the chart
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The next step is where we create user interface elements that allow customizing the chart, including setting light marker and selection marker images.
+
+.. literalinclude:: pointselectionandmarkers.py
+ :linenos:
+ :lineno-start: 54
+ :lines: 54-57
+
+We create the label for the marker selection combobox and fill the combobox with the items. We then provide functionality to the combobox, allowing the user's selection to set the desired light marker image. As light markers are enabled and disabled by setting a valid QImage or setting an empty :py:`QImage()`, we need to make sure that if the user does not wish unselected points to be displayed, we do not actually set the light marker image.
+If checking isn't performed, a new :py:`QImage` will be set as the light marker and unselected points will be visible even though it has been switched off.
+
+.. literalinclude:: pointselectionandmarkers.py
+ :linenos:
+ :lineno-start: 59
+ :lines: 59-67
+ :emphasize-lines: 1-3
+
+Almost the same procedure applies to the selected point light marker and line color. The only difference is that there is no need to check the visibility of unselected points as it doesn't affect the functionality.
+
+.. literalinclude:: pointselectionandmarkers.py
+ :linenos:
+ :lineno-start: 70
+ :lines: 70-85
+
+A small difference comes with changing visibility of unselected points. As it was mentioned before, making light markers invisible is achieved by setting the light marker to an empty :py:`QImage()`. That is why, depending on checkbox state, selected point light marker is set to an empty :py:`QImage` or to the light marker extracted from the current index of the corresponding combobox.
+
+.. literalinclude:: pointselectionandmarkers.py
+ :linenos:
+ :lineno-start: 88
+ :lines: 88-97
+ :emphasize-lines: 5-6
+
+The final part is to lay out the widgets within the main widget and set the main window size.
+
+Usage
+-----
+To use this example, change any of the comboboxes and checkboxes controlling the markers, line color, and unselected point visibility on the right. Then try clicking on points in the chart to select or deselect them.
diff --git a/examples/charts/pointselectionandmarkers/images/blue_triangle.png b/examples/charts/pointselectionandmarkers/images/blue_triangle.png
new file mode 100644
index 000000000..7790453c8
--- /dev/null
+++ b/examples/charts/pointselectionandmarkers/images/blue_triangle.png
Binary files differ
diff --git a/examples/charts/pointselectionandmarkers/images/green_triangle.png b/examples/charts/pointselectionandmarkers/images/green_triangle.png
new file mode 100644
index 000000000..29ae043f2
--- /dev/null
+++ b/examples/charts/pointselectionandmarkers/images/green_triangle.png
Binary files differ
diff --git a/examples/charts/pointselectionandmarkers/markers.qrc b/examples/charts/pointselectionandmarkers/markers.qrc
new file mode 100644
index 000000000..eb1e56d19
--- /dev/null
+++ b/examples/charts/pointselectionandmarkers/markers.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/">
+ <file>images/blue_triangle.png</file>
+ <file>images/green_triangle.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/charts/pointselectionandmarkers/pointselectionandmarkers.py b/examples/charts/pointselectionandmarkers/pointselectionandmarkers.py
new file mode 100644
index 000000000..df7b61687
--- /dev/null
+++ b/examples/charts/pointselectionandmarkers/pointselectionandmarkers.py
@@ -0,0 +1,128 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Light Markers Points Selection example from Qt v6.2"""
+import sys
+
+from PySide6.QtCore import Slot, QPointF, Qt
+from PySide6.QtCharts import QChart, QChartView, QSplineSeries
+from PySide6.QtGui import QPainter, QImage
+from PySide6.QtWidgets import (QApplication, QMainWindow, QWidget, QGridLayout,
+ QComboBox, QCheckBox, QLabel, QHBoxLayout)
+
+import utilities as Utilities
+
+if __name__ == "__main__":
+
+ a = QApplication(sys.argv)
+ window = QMainWindow()
+ window.setWindowTitle("Light Markers and Points Selection")
+
+ marker_size = 20.
+ series = QSplineSeries()
+ series.append([QPointF(0, 0),
+ QPointF(0.5, 2.27),
+ QPointF(1.5, 2.2),
+ QPointF(3.3, 1.7),
+ QPointF(4.23, 3.1),
+ QPointF(5.3, 2.3),
+ QPointF(6.47, 4.1)])
+ series.setMarkerSize(marker_size)
+ series.setLightMarker(Utilities.default_light_marker(marker_size))
+ series.setSelectedLightMarker(Utilities.default_selected_light_marker(marker_size))
+
+ @Slot(QPointF)
+ def toggle_selection(point):
+ try:
+ index = series.points().index(point)
+ if index != -1:
+ series.toggleSelection([index])
+ except ValueError:
+ pass
+
+ series.clicked.connect(toggle_selection)
+
+ chart = QChart()
+ chart.addSeries(series)
+ chart.createDefaultAxes()
+ chart.legend().setVisible(False)
+
+ chart_view = QChartView(chart)
+ chart_view.setRenderHint(QPainter.Antialiasing)
+
+ control_widget = QWidget(window)
+ control_layout = QGridLayout(control_widget)
+ char_point_combobox = QComboBox()
+ char_point_selected_combobox = QComboBox()
+ line_color_combobox = QComboBox()
+ show_unselected_points_checkbox = QCheckBox()
+
+ @Slot(int)
+ def set_light_marker(index):
+ if show_unselected_points_checkbox.isChecked():
+ series.setLightMarker(Utilities.get_point_representation(
+ Utilities.point_type(index), marker_size))
+
+ char_point = QLabel("Char point: ")
+ char_point_combobox.addItems(["Red rectangle", "Green triangle", "Orange circle"])
+ char_point_combobox.currentIndexChanged.connect(set_light_marker)
+
+ @Slot(int)
+ def set_selected_light_marker(index):
+ series.setSelectedLightMarker(
+ Utilities.get_selected_point_representation(
+ Utilities.selected_point_type(index), marker_size))
+
+ char_point_selected = QLabel("Char point selected: ")
+ char_point_selected_combobox.addItems(["Blue triangle", "Yellow rectangle", "Lavender circle"])
+ char_point_selected_combobox.currentIndexChanged.connect(set_selected_light_marker)
+
+ @Slot(int)
+ def set_line_color(index):
+ series.setColor(Utilities.make_line_color(Utilities.line_color(index)))
+
+ line_color_label = QLabel("Line color: ")
+ line_color_combobox.addItems(["Blue", "Black", "Mint"])
+ line_color_combobox.currentIndexChanged.connect(set_line_color)
+
+ @Slot(int)
+ def display_unselected_points(checkbox_state):
+ if checkbox_state:
+ series.setLightMarker(
+ Utilities.get_point_representation(
+ Utilities.point_type(char_point_combobox.currentIndex()), marker_size))
+ else:
+ series.setLightMarker(QImage())
+
+ show_unselected_points_label = QLabel("Display unselected points: ")
+ show_unselected_points_checkbox.setChecked(True)
+ show_unselected_points_checkbox.stateChanged.connect(display_unselected_points)
+
+ control_label = QLabel("Marker and Selection Controls")
+ control_label.setAlignment(Qt.AlignHCenter)
+ control_label_font = control_label.font()
+ control_label_font.setBold(True)
+ control_label.setFont(control_label_font)
+ control_layout.addWidget(control_label, 0, 0, 1, 2)
+ control_layout.addWidget(char_point, 1, 0)
+ control_layout.addWidget(char_point_combobox, 1, 1)
+
+ control_layout.addWidget(char_point_selected, 2, 0)
+ control_layout.addWidget(char_point_selected_combobox, 2, 1)
+
+ control_layout.addWidget(line_color_label, 3, 0)
+ control_layout.addWidget(line_color_combobox, 3, 1)
+
+ control_layout.addWidget(show_unselected_points_label, 4, 0)
+ control_layout.addWidget(show_unselected_points_checkbox, 4, 1, 1, 2)
+ control_layout.setRowStretch(5, 1)
+
+ main_widget = QWidget(window)
+ main_layout = QHBoxLayout(main_widget)
+ main_layout.addWidget(chart_view)
+ main_layout.addWidget(control_widget)
+
+ window.setCentralWidget(main_widget)
+ window.resize(1080, 720)
+ window.show()
+ sys.exit(a.exec())
diff --git a/examples/charts/pointselectionandmarkers/pointselectionandmarkers.pyproject b/examples/charts/pointselectionandmarkers/pointselectionandmarkers.pyproject
new file mode 100644
index 000000000..8c394457c
--- /dev/null
+++ b/examples/charts/pointselectionandmarkers/pointselectionandmarkers.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["pointselectionandmarkers.py", "utilities.py", "markers.qrc"]
+}
diff --git a/examples/charts/pointselectionandmarkers/rc_markers.py b/examples/charts/pointselectionandmarkers/rc_markers.py
new file mode 100644
index 000000000..f5a9cd42b
--- /dev/null
+++ b/examples/charts/pointselectionandmarkers/rc_markers.py
@@ -0,0 +1,275 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.3.1
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x05m\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x02\x00\x00\x00\x01\xf6\x02\x03\x00\x00\x00{5\xdc\xf0\
+\x00\x00\x00\x09PLTE\x00\x00\x00\x98\xbag\x98\xba\
+g\xb0,\xf9`\x00\x00\x00\x02tRNS\x00\x93\x1f\
+\x95\x0f\xc6\x00\x00\x05\x11IDATx\xda\xdc\xd31\
+\x95\xc4@\x0c\x04\xd1U\x22\x10Bc<Bc\x10N\
+\x5c(\x0fC\xfb\xde\x8c\xe5\xeeX\xc1\x0fT\xbf\x7f.\
+~//\x8f\xdf\xbb\xab\xf3\xf7\xee\xfa\xfa\xbd\xba\xe0\x96\
+\xee\xfd\x00\x09\xd2\x17\xfa\x01\x0a\xa4\x0c\xfc\x00\x0dR\x87\
+v\x80\x00\xa9C?@\x82\xd4\xa1\x1f\xa0@\xea\xd0\x0f\
+\xd0 uh\x07\x08\x90:\xf4\x03$H\x1d\xfa\x01\x0a\
+\xa4\x0e\xfd\x00\x0dR\x87v\x80\x00\xa9C?@\x82\xd4\
+\xa1\x1f\xa0@\xea\xd0\x0f\xd0 uh\x07\x08\x90:\xf4\
+\x03$H\x1d\xfa\x01\x0a\xa4\x0e\xfd\x00\x0dR\x87v\x80\
+\x00\xa9C?@\x82\xd4\xa1\x1f\xa0@\xea\xd0\x0f\xd0 \
+uh\x07\x08\x90:\xf4\x03$H\x1d\xfa\x01\x0a\xa4\x0e\
+\xfd\x00\x0dR\x87v\x80\x00\xa9C?@\x82\xd4\xa1\x1f\
+\xa0@\xea\xd0\x0f\xd0 uh\x07\x08\x90:\xf4\x03$\
+H\x1d\xfa\x01\x0a\xa4\x0e\xfd\x00\x0dR\x87v\x80\x00\xa9\
+C?@\x82\xd4\xa1\x1f\xa0@\xea\xd0\x0f\xd0\xf0n\x87\
+\xcd\xbb\x19\x04#\x01\x1b3\xc8\xa1\x80}\x19\xd4P\xc0\
+\xbe\x0e{(`[\x87\xc1P\xc0\xb6\x0es,`W\
+\x875\x16\xb0\xab\xc3\x1e\x0b\xd8\xd4a0\x16\xb0\xa9\xc3\
+\x1c\x0c\xd8\xd3a\x0d\x06\xec\xe9\xb0\x07\x03\xb6t\x18\x0c\
+\x06l\xe90G\x03vtX\xa3\x01;:\xec\xd1\x80\
+\x0d\x1d\x06\xa3\x01\x1b:\xcc\xe1\x80\xf5\x1d\xd6p\xc0\xfa\
+\x0e{8`y\x87\xc1p\xc0\xf2\x0es<`u\x87\
+5\x1e\xb0\xba\xc3\x1e\x0fX\xdca0\x1e\xb0\xb8\xc3\xfc\
+\x00`m\x87\xf5\x01\xc0\xda\x0e\xfb\x03\x80\xa5\x1d\x06\x1f\
+\x00,\xed0?\x01X\xd9a}\x02\xb0\xb2\xc3\xfe\x04\
+`a\x87\xc1'\x00\x0b;\xcc\x8f\x00\xd6uXo\x03\
+\x1a\xa4\x0e\xed\x00\x01R\x87~\x80\x04\xa9C?@\x81\
+\xd4\xa1\x1f\xa0A\xea\xd0\x0e\x10 u\xe8\x07H\x90:\
+\xf4\x03\x14H\x1d\xfa\x01\x1a\xa4\x0e\xed\x00\x01R\x87~\
+\x80\x04\xa9C?@\x81\xd4\xa1\x1f\xa0A\xea\xd0\x0e\x10\
+(\xbb\x0d\x01\x89\xb4\xc3\x0fPH;\xfd\x00\x8d\xb4\xcb\
+\x0e\x10h\xbb\xed\x00\x89\xb8\xc3\x0dP\x88;\xdd\x00\x8d\
+\xb8\xcb\x0c\x10\xa8\xbb\xcd\x00\x89\xbc\xc3\x0bP\xc8;\xbd\
+\x00\x8d\xbc\xcb\x0a\x10\xe8\xbb\xad\x00\x09\xfa\x0e'@\x81\
+\xbe\xd3\x09\xd0\xa0\xef2\x02\x04Ov\x1b\x01\x92G;\
+|\x00\xc5\xa3\x9d>\x80\xe6\xd1.\x1b@\xf0l\xb7\x0d\
+ y\xb8\xc3\x05P<\xdc\xe9\x02h\x1e\xee2\x01\x04\
+Ow\x9b\x00\x92\xc7;<\x00\xc5\xe3\x9d\x1e\x80\xe6\xf1\
+.\x0b@\xf0|\xb7\x05\xe0\x8f{:(\x82(\x06\x81\
+ Z\xb9 \x22j\xd0\x83\x1aDpaT\xae\x86\xd4\
+\x87,\x93V\xf0.-\xf8\x90\xbe\x00\xd8\xf8\x90\xbf\x00\
+0|(\x1e\x00,|)\x1f\x00\x08>\xa5\xfc\x80\x8d\
+O9?\xc0\xf0\xa9\xa0\x07,|+\xe9\x01\x82\x8f)\
+;`\xe3c\xce\x0e0|,\xc8\x01\x0b_Kr\x80\
+\xe0s\xca\x0d\xd8\xf8\x9cs\x03\x0c\x9f\x0bj\xc0\xc2\xf7\
+\x92\x1a (H\x99\x01\x1b\x0593\xc0PP\x10\x03\
+\x16*Jb\x80\xa0$\xe5\x05l\x94\xe4\xbc\x00CI\
+A\x0bX\xa8)i\x01\x82\xa2\x94\x15\xb0Q\x94\xb3\x02\
+\x0cE\x05)`\xa1\xaa$\x05\x08\xcaRN\xc0FY\
+\xce\x090\x94\x15\x94\x80\x85\xba\x92\x12 (L\x19\x01\
+\x1b\x859#\xc0PX\x10\x02\x16*KB\x80\xa04\
+\xe5\x03l\x94\xe6|\x00CiA\x07X\xa8-\xe9\x00\
+\x82\xe2\x94\x0d\xb0Q\x9c\xb3\x01\x0c\xc5\x05\x19`\xa1\xba\
+$\x03\x08\xcaS.\xc0Fy\xce\x050\x94\x17T\x80\
+\x85\xfa\x92\x0a hH\x99\x00\x1b\x0d9\x13\xc0\xd0P\
+\x10\x01\x16:J\x22\x80\xa0%\xe5\x01l\xb4\xe4<\x00\
+CKA\x03X\xe8)i\x00\x82\xa6\x94\x05\xb0\xd1\x94\
+\xb3\x00\x0cM\x05\x09`\xa1\xab$\x01\x08\xdaR\x0e\xc0\
+F[\xce\x010\xb4\x15\x14\x80\x85\xbe\x92\x02 hL\
+\x19\x00\x1b\x8d9\x03\xc0\xd0X\x10\x00\x16:K\x02\x80\
+\xa05\x9d\x0f\xd8h\xcd\xe7\x03\x0c\xad\xc5x\xc0Bo\
+9\x1e hN\xa7\x036\x9a\xf3\xe9\x00Cs1\x1c\
+\xb0\xd0]\x0e\x07\x08\xda\xd3\xd9\x80\x8d\xf6|6\xc0\xd0\
+^\x8c\x06,\xf4\x97\xa3\x01\x82\x0b\xe9d\xc0\xc6\x85|\
+2\xc0p\xa1\x18\x0cX\xb8Q\x0e\x06\x08\xae\xa4s\x01\
+\x1bW\xf2\xb9\x00\xc3\x95b,`\xe1N9\x16 \xb8\
+\x94N\x05l\x5c\xca\xa7\x02\x0c\x97\x8a\xa1\x80\x85[\xe5\
+P\x80\xe0Z:\x13\xb0q-\x9f\x090\x5c+F\x02\
+\x16\xee\x95#\x01\x82\x8b\xe9D\xc0\xc6\xc5|\x22\xc0p\
+\xb1\x18\x08X\xb8Y\x0e\x04\x08\xae\xa6\xff\x06\xf8\xe1\x85\
+\xef\x01\xe2\xf0\xc2\xf7\x00yx\xe1{\x00\xe8\xe1\x85\xef\
+\x01\xfc\xf0\xc2\xf7\x00qx\xe1{\x80<\xbc\xf0=\x00\
+\xf4\xf0\xc2\xf7\x00~x\xe1{\x808\xbc\xf0=@\x1e\
+^\xf8\x1e\x00zx\xe1{\x00?\xbc\xf0=@\x1c^\
+\xf8\x1e \x0f/|\x0f\x00=\xbc\xf0=\x80\x1f^\xf8\
+\x1e\xe0\xd7=\x1d\x13\x01\x00\xc30\x0c\xa4f\x88\x01\x91\
+%FY\x0c\x9az'\x06\xbf\xfc\xc2\x85>\xc0\xc1\x85\
+>@\x03\x17\xfa\x00\x03\x17\xfa\x00\x0b\x17\xfa\x00\x07\x17\
+\xfa\x00\x0d\x5c\xe8\x03\x0c\x5c\xe8\x03,\x5c\xe8\x03\x1c\x5c\
+\xe8\x034p\xa1\x0f0p\xa1\x0f\xb0p\xa1\x0fpp\
+\xa1\x0f\xd0\xfc]\xd8\xe6\x01\x9f\xda\xf9\x10\xf2\x1c\xc7\xb0\
+\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x08\xac\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x01\x00\x00\x00\x00\xfb\x08\x03\x00\x00\x00\xb2\x8e\xba:\
+\x00\x00\x00\x8dPLTE\x00\x00\x00i\xba\xf0i\xba\
+\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0\
+i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\
+\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\
+\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0\
+i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\
+\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\
+\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0\
+i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\xba\xf0i\
+\xba\xf0i\xba\xf0\x9c\xb2p\x14\x00\x00\x00.tRN\
+S\x00\x05\xf7\xfb\x19\x13U\x09\xf3\xe2H\x1d\x94z\x0f\
+0\xdf\xc9e\xec\xcd3\x22\xa37\x86\xda\xc0tO\xac\
+\xe5\xb8\x80\xb3k\xe9\x9a\xa7\xc5*\xd4@_\x8e:=\
+\xa4\x0e\xbb\x00\x00\x07\xa0IDATx\xda\xe4\xdd\x07\
+b\xaa@\x10\x80av\x11\x10i\x8a\x82=\xf6\xae{\
+\xff\xe3=\xf2L\x1c\xc0(b\x81e\xe6?\x020\xbb\
+\x9f\x94D)3V\xdbnk.S\xc8\xc6\xc2\xfd\xde\
+\xb3\x5c\x85ll\xef\xf4G\xfa\x96\xee%\xe0\xfa\xc3\xce\
+\xd4\x1e\x1b\x0a\xd5\xc2Y\x93O\xa6\xbe\xa6\xd0\x8ci\xfb\
+U[\x88\xc1,Th\xa6\xf5\x16s.D}\xb5\xd7\
+h\xae\x02\x96\xdf\xdd\xa9B\xf0\xe9\xe2Ds\x08\x02{\
+P\xff>\x00\xbb\xaeOr\x08\x8c\xf1\x9c\x8b(\xb5\xdd\
+9\x06\x0a\xb9\x98\xeb-Z\xe2\x5c}\xde\xa0\xb7\x08\xb0\
+\xadn\x0f\xc4O\x1d\xdf\x22g\x01\xa3\xd1\x1f\xb6\xc5O\
+M[\x0f\xa9]\x03\xae?\x9dp\xf1S{xlP\
+\xbb\x04\xc2\xd9@\x15\xbfq\x93\x1a\x07\xcf\x08\x84Tj\
+\x1c\xd4z\xfe\x9c\x8bK\xf48\x18\x9e\x11\x08E\x1c\xec\
+Q\x1a\x823\x02/\x91\xe3\xa01\x9er\x91Hm\xb7\
+\x8e=\x85H\xcc\xdd\x8e:\xe2\x12=\x0e\x02\x02\x13u\
+\x16\x16\x91#\x00\x08\xfc\x1f=\x0e\x02\x02\xffG\x8f\x83\
+\x09\x04\x0ar\x1cL!\x90\x1e\x07\xb5 \x81@z\x1c\
+\x04\x04^\xa5\x92\xe0 \xf0*\x95\x02\x07\x01\x81\xd7\
+\xa9K\xf4\x1cL#\xf0\x9a\x83c\xdc\x8b\xc07\x02\x9b\
+\xe2\x12=\x0e\x02\x02od\xdac\xd4\x1c\x8c\x10hr\
+q\x89\x1e\x07\x93\x08$\xc7\xc1\x14\x02\xe9q0\x85\xc0\
+[\x1c<\xa1}k(\xf4Wq\x04\xd2\xe3`\xcf\xde\
+\xd5\x05D\x8e\x83I\x04\xde\xe3\xe0IA\x18 0\xab\
+\xfaT\xc78\x03\x06 0\xab\x9d\xe3!\xfcY\x0c\x08\
+\xccl\xd2\xf5=|\x07@\x03\x04fU\xeftu|\
+\xaf\x8ff 0\xf5\x94dd)\xb8\x02\x04>\xd4\xe4\
+\x88m\x06\x00\x81\x0f\xc5\xd7\xe3\x10\xd7o\xa2\xf0\xb0\xda\
+\x89\x1c\xb5\xfa\xe3\x9a\x82)@\xe0C\xa9\xe6t\xe6)\
+\x88b\x80\xc0\xc7\xe2f\x17\xd1\xb3R@\xe0\xe3\xa9\xc3\
+C\x0d\xcd\x11\x00\x04\xe6h0;\xa19\x02\x11\x02\xa7\
+m\x91\xb3\xc9z\x11`\xd9\x08\x22\x046\xb9\xb8D\x8f\
+\x83\x11\x02\xb9\xc8\x9b\xda\xde \xe1`\x0a\x81\xf48\xa8\
+y\x80\xc0\x5c\xf1\xaf1\x8aw\xa8\x01\x81yk\xcd\x1a\
+\x188\x98D`>\x0e:\x088\xc8t@`\xcex\
+\xb3\xfa\x1cL!\x90\x1e\x07S\x08\xa4\xc7A@\xe0S\
+-+\xcfA\xcd\x9f\xc7\x11\x98\x9f\x83\xab\x8as\xf0\x1b\
+\x81\xaax:^q\x0e\xa6\x10H\x8f\x83\xdf\x08\x8c\x9d\
+\x7fz\x1cL\x22\x90 \x07\x01\x81\xcfW\xe5\xbb\x83I\
+\x04\x92\xe3 \xf0\xb5\xd4ME9\x98B =\x0e\
+\xa6\x10\xf8\x0a\x07\xfdJr0\x85@z\x1c\xdc\xf6\x01\
+\x81/\xc5\x97U\xe4\xa0a5\xba\xb1\x01\xa0\xc7\xc1\xda\
+~4\x8c\x9d\x7fz\x1c\xdc\x8e\xbeb[\x00A\x0e\xee\
+\xd7\xf1O\xe3\xe8q\xd0=\xb4\xc4\x1b\xe3\xe6\xbaR\x1c\
+d\xb5S\x7f \xde\x99\xba\xf1\xab\x84!\xa3\xb7XO\
+\xc4%z\x1c\xd4\xf4U\xa7..\xd1\xe3\xa05j\xb5\
+Uq\x89\x1c\x07\x99g'\x06\x80\x1a\x07\x8dP\xff\xe2\
+\xe2\xedM\xec\xaap\xd0j\xcc6\xaax{je8\
+\xe89\xf3\x18\x02\x09r\xb0\x01\x08|kUyX\xec\
+\x1e:\xe2#\xf1f\x158\x08\x08|\x7f\xbc\x0a\x1c\x04\
+\x04~\xa0A_~\x0eF\x08l%\x11H\x8c\x83W\
+\x08\xa4\xc6\xc14\x02\x89q0\x13\x81\xafs0\x90z\
+\x11\xf8\x0b\x81\xa48\xe8\xfd}'\x90\x0e\x07\x1bk\x93\
+\x8b\xab\xe8p\xf0\x16\x02\x89p\xf0c\x08LsP\xd6\
+\x19\xb8\x87@\x12\x1c\xd4t\xfb&\x02Ip\x10\x10\xf8\
+\xd1\xea\xad\x95\xa4\x9f\xd7\xdfF \x09\x0e\x02\x02?\x9e\
+)%\x07\xef#\x90\x00\x07\x01\x81\x9f\xaf\xe5H\xc8\xc1\
+L\x04\x22\xe7\xa0\xebg \x107\x07\x99\xd6\xebg\x0d\
+\x00j\x0e\xba=\xbf\x00\x04&8\xd8\x93\x8a\x83\x80\xc0\
+\x82jK\xc6Ak\xb4Y\xaa\x22+\xc4\x1c\x04\x04\x16\
+\x14\x9f\x0c%\xe2 \xb0\xb8T\x998X\x14\x02\xd3\
+\x1c\xac\xc9\xb2\x0a\xe4A J\x0e\x02\x02\x8b\xcc\x9c;\
+\x92\xfc\x8f\xb6\x5c\x08\xc4\xc7\xc1\x9c\x08\xc4\xc7\xc1o\x04\
+.E\xb1\x01\x07%\xf8\xbb\x83\x80\xc0\xc2kw\x0f^\
+\xf9\x1b\x81\xe5\x14\x88\xc04\x07m\x098\xe8\xd9%\x0c\
+\x00p0T\xca\xcd\xb0\xf2\x22\x10\x19\x07#\x04\xb6J\
+\x19\x00\xe0`\xb9G (\x1c\x81i\x0e\xee\xcb\xdd\x0a\
+\x1b\xeb'>\x8dC\xc4\xc12\x10\x98\xe6\xe08\xe7\x0c\
+\xa0@ \xc4[\x8b\xf2f\xc0\x0d\xfc\xeeR\x94\x5c3\
+/\x07q P\x0e\x0e>\x8d@,\x1c\xf4\xec\xd2\x07\
+\xa0\x14\x0e\x02\x02\xe7\x5c\x94_\xc4\xc1\x1eS\x0a\x0d\x10\
+(dH\x9d?\xceAL\x08,\x9d\x83\x11\x02e\x98\
+\x80|\x1c\xc4\x84\xc08\x07\xbf\x1e\xe3 2\x04\x96\xca\
+A78\x94\x8f\xc0R8\x08\x08\xdc\x94\x8e\xc0\xbc\x1c\
+D\x87\xc029\xe8\xad$\x1a\x80\xff\x1ct\xb28\x88\
+\x11\x81y8\x88\x13\x81y8\x88\x13\x81P\xa7H\x0e\
+\x8e\xd7\x03\x89\xb6\x80\xe29\xa8\xc9\x83@\xa8~\x97\x83\
+x\x11\xf80\x07\xd1\x22\xb0x\x0e\xd6\xf4\xa3L\x08|\
+\x90\x83x\x11X<\x07\x03\xb9\x10\xf8\x10\x07Q#0\
+\xc9A\xe5\xaf\x90#0\x9b\x83\xd8\x11X$\x07\x99\x8c\
+\x08,\x92\x83\xda\xa2#\xe5\x0eP\x10\x07\x99\x16H\x89\
+\xc0\xc28\xe8z\x92\x22\xf0\x1e\x07I \xb0(\x0eZ\
+\xcep\x22\xf3\x12\xf0'\x07I \xf0\xd3\x1c\x04\x04J\
+~\xfe\xaf\xef\x0e\x92A`\x9c\x83\xfag8\xc8zR\
+#\xf0\x06\x07\xe9 \xf0o\x0e\x12B\xe0\xa79\xc8\xdc\
+\xa0o\x8aj\x04\x1c|3\x02\xdb\xa2\x22\xfdr\x90\x18\
+\x02?\xcb\xc1P~\x04B\xfc\xccAj\x08\xfc$\x07\
+Y%\x10\x08\x16R\xcdU\xef\xdd\x08\x94\xf0iX\x16\
+\x07\x09\x220\xc9A\x82\x08Lr\x90 \x02\xa1\xfa \
+\xe2 A\x04&9H\x11\x81)\x0e\xd2C`\x8a\x83\
+\xf4\x10\x08\xf1\xd6Q\xd7\xe8!\xf0\xfd\x1cd5}Z\
+\xc1\xf3\x1f\xc5\xcd\xd5\x89\x11D`\x8a\x83\x04\x11\xf8^\
+\x0e\xb2q\xb7j\x08\x84\xcc/' \x88\xc0\x14\x07\x09\
+\x220\xc9A\x8a\x08\x8cs0p\xd9+\x08\x1c\xf7\xab\
+\x88\xc0\x04\x07\xb7\x06=\x04&9X\xa3\x87\xc0\x14\x07\
+\x09\x220\xc9A\x8a\x08\x84\xd4i\xc4A\x82\x08|\x89\
+\x83\x80\xc0]\xa5\xb7\x80_\x0e\x8e\x82\xa7\x11(\xeb[\
+\xc199\xa83\x82\x08Lr\x90\x22\x02!\x138\x98\
+\x13\x81\x18& \xaa\xbe\xd6\xb7.=\x04\xbe\xca\xc1`\
+\x85d\x00~8H\x10\x81I\x0e2\x82\x08|\x8a\x83\
+\x80@\x1c{\xe0\x93\x1c4p 0\xc9A\x82\x08\x8c\
+sp\xad\xb3\x1c\x08\xf4\x90 \xf0\x92\x9a\x8b\x83\xeeV\
+\xc7\x82\xc0\x9c\x1c\x04\x04\x0eqM@T\xbd\xabo\x0d\
+z\x08\x84\xf8\xe6q\x0e\xf6d\xff2\xea\x99Ts\xe8\
+l\x1fF\xa0\xc0\x97\xfa\xe8\xddA\x86\x0c\x81)\x0e\x12\
+D \xb4\x8b8\xc8\xe8!\x10\x9a\xcc\x9d\x13\xa3\x87@\
+\x88O\xa6\x07#k\x00\x0ct\x08\x8c\xa5\xee\x9c\x90\x22\
+\x02\xa1\xa5\xbd\xaf\x19\xf4\x10\x08\xf1\xf9\xe2\xa4\xd1C`\
+|\x06\xd6\xbeu\x1f\x81\x98\x07@\x08\xb5>\xb0\xbd\xfb\
+\x08\x1c\x0a\xdc\xd5\xbf\x1a\x06A\x04\xc6\xda,<\x8d \
+\x02\xa1\x81\xado\xd9-\x04\xeah\x11\x08\xb5\x87\xc7=\
+\xbb\x83@\xc4[\xc09\xbe\x1c\x1e\x0c\x82\x08\x8c5p\
+B\x8a\x08Lr\x90\xd1C\xe0\x1d\x0e\x02\x02M\xf4+\
+\xc0\x99\x83]\xdf\xa2\x87\xc0,\x0e2\x0d=\x02!>\
+o\x18\x7f p'\xc8\xf4\xcdA\x82\x08\xfcW\x9e\x1d\
+\xa3\x00\x08\x03A\x14]\x95\x10Q\x12Q,D,\x84\
+46z\xff\xe3i\xaau\xd6\xca63\x97\xf8\x0f\xc6\
+p\x90\x0f\x81\xc0\xc1\xae\xb2\x08l)\x12\xa0\x1c\x8c\xf2\
+\x1a\x0b\x02\x81\x83\x8c\x084\x1c\xe4C pp\xd1\x10\
+\x1ca\xe7@\xa0\xe1`\xd9w\xf0\x0f\x0e2!\x109\
+\xc8\x88@\xdd\x98\x86(\xcf\xfcI\x85\xc0/\x07\x1d\x17\
+\x02\x91\x83>7p\xa3B pp\xca%\xec\xc3z\
+Q\xae\xa9\xe7\xe4\xe4\x06\xc7Z\x00\x1d\x81h\xe2\xc4\x00\
+\x00\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x06\
+\x07\x03}\xc3\
+\x00i\
+\x00m\x00a\x00g\x00e\x00s\
+\x00\x12\
+\x0c\xf7v\xe7\
+\x00g\
+\x00r\x00e\x00e\x00n\x00_\x00t\x00r\x00i\x00a\x00n\x00g\x00l\x00e\x00.\x00p\x00n\
+\x00g\
+\x00\x11\
+\x02\xf5Q\x07\
+\x00b\
+\x00l\x00u\x00e\x00_\x00t\x00r\x00i\x00a\x00n\x00g\x00l\x00e\x00.\x00p\x00n\x00g\
+\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00<\x00\x00\x00\x00\x00\x01\x00\x00\x05q\
+\x00\x00\x01\x82`\x07\x0a\xa2\
+\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x82`\x07!\xf4\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/charts/pointselectionandmarkers/utilities.py b/examples/charts/pointselectionandmarkers/utilities.py
new file mode 100644
index 000000000..b27a2542b
--- /dev/null
+++ b/examples/charts/pointselectionandmarkers/utilities.py
@@ -0,0 +1,77 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtGui import QImage, QPainter, QColor
+from PySide6.QtCore import Qt
+
+import rc_markers # noqa: F401
+
+
+def rectangle(point_type, image_size):
+ image = QImage(image_size, image_size, QImage.Format_RGB32)
+ painter = QPainter()
+ painter.begin(image)
+ painter.setRenderHint(QPainter.Antialiasing)
+ painter.fillRect(0, 0, image_size, image_size, point_type[2])
+ painter.end()
+ return image
+
+
+def triangle(point_type, image_size):
+ return QImage(point_type[3]).scaled(image_size, image_size)
+
+
+def circle(point_type, image_size):
+ image = QImage(image_size, image_size, QImage.Format_ARGB32)
+ image.fill(QColor(0, 0, 0, 0))
+ painter = QPainter()
+ painter.begin(image)
+ painter.setRenderHint(QPainter.Antialiasing)
+ painter.setBrush(point_type[2])
+ pen = painter.pen()
+ pen.setWidth(0)
+ painter.setPen(pen)
+ painter.drawEllipse(0, 0, image_size * 0.9, image_size * 0.9)
+ painter.end()
+ return image
+
+
+_point_types = [("RedRectangle", rectangle, Qt.red),
+ ("GreenTriangle", triangle, Qt.green, ":/images/green_triangle.png"),
+ ("OrangeCircle", circle, QColor(255, 127, 80))]
+_selected_point_types = [("BlueTriangle", triangle, Qt.blue, ":/images/blue_triangle.png"),
+ ("YellowRectangle", rectangle, Qt.yellow),
+ ("LavenderCircle", circle, QColor(147, 112, 219))]
+_line_colors = [("Blue", QColor(65, 105, 225)), ("Black", Qt.black), ("Mint", QColor(70, 203, 155))]
+
+
+def point_type(index):
+ return _point_types[index]
+
+
+def selected_point_type(index):
+ return _selected_point_types[index]
+
+
+def line_color(index):
+ return _line_colors[index]
+
+
+def default_light_marker(image_size):
+ return rectangle(_point_types[0], image_size)
+
+
+def default_selected_light_marker(image_size):
+ return triangle(_selected_point_types[0], image_size)
+
+
+def get_point_representation(point_type, image_size):
+ return point_type[1](point_type, image_size)
+
+
+def get_selected_point_representation(point_type, image_size):
+ return point_type[1](point_type, image_size)
+
+
+def make_line_color(line_color):
+ return line_color[1]
diff --git a/examples/charts/qmlpolarchart/View1.qml b/examples/charts/qmlpolarchart/View1.qml
index ad17fec6b..d05f7e2a2 100644
--- a/examples/charts/qmlpolarchart/View1.qml
+++ b/examples/charts/qmlpolarchart/View1.qml
@@ -1,34 +1,8 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Charts module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
-import QtQuick 2.0
-import QtCharts 2.0
+import QtQuick
+import QtCharts
Item {
anchors.fill: parent
diff --git a/examples/charts/qmlpolarchart/View2.qml b/examples/charts/qmlpolarchart/View2.qml
index 7f241c3e7..1db760396 100644
--- a/examples/charts/qmlpolarchart/View2.qml
+++ b/examples/charts/qmlpolarchart/View2.qml
@@ -1,34 +1,8 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Charts module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
-import QtQuick 2.0
-import QtCharts 2.0
+import QtQuick
+import QtCharts
Item {
anchors.fill: parent
diff --git a/examples/charts/qmlpolarchart/View3.qml b/examples/charts/qmlpolarchart/View3.qml
index 5695a891f..f684d55e0 100644
--- a/examples/charts/qmlpolarchart/View3.qml
+++ b/examples/charts/qmlpolarchart/View3.qml
@@ -1,34 +1,8 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Charts module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
-import QtQuick 2.0
-import QtCharts 2.0
+import QtQuick
+import QtCharts
Item {
anchors.fill: parent
diff --git a/examples/charts/qmlpolarchart/main.qml b/examples/charts/qmlpolarchart/main.qml
index ed7a810c6..6ced27ee2 100644
--- a/examples/charts/qmlpolarchart/main.qml
+++ b/examples/charts/qmlpolarchart/main.qml
@@ -1,33 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Charts module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
-import QtQuick 2.0
+import QtQuick
Item {
width: 800
diff --git a/examples/charts/qmlpolarchart/qmlpolarchart.py b/examples/charts/qmlpolarchart/qmlpolarchart.py
index f205f8db1..6391fc305 100644
--- a/examples/charts/qmlpolarchart/qmlpolarchart.py
+++ b/examples/charts/qmlpolarchart/qmlpolarchart.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the QML Polar Chart Example from Qt v5.x"""
@@ -45,8 +8,8 @@ from pathlib import Path
import sys
from PySide6.QtQuick import QQuickView
-from PySide6.QtCore import Qt, QUrl
-from PySide6.QtWidgets import QApplication, QMainWindow
+from PySide6.QtCore import QUrl
+from PySide6.QtWidgets import QApplication
if __name__ == '__main__':
@@ -58,7 +21,7 @@ if __name__ == '__main__':
viewer.engine().quit.connect(viewer.close)
viewer.setTitle = "QML Polar Chart"
- viewer.setSource(QUrl.fromLocalFile(os.fspath(src_dir / 'main.qml')))
+ viewer.setSource(QUrl.fromLocalFile(src_dir / 'main.qml'))
viewer.setResizeMode(QQuickView.SizeRootObjectToView)
viewer.show()
diff --git a/examples/charts/temperaturerecords/temperaturerecords.py b/examples/charts/temperaturerecords/temperaturerecords.py
index fe4e948cc..358f3818e 100644
--- a/examples/charts/temperaturerecords/temperaturerecords.py
+++ b/examples/charts/temperaturerecords/temperaturerecords.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the Temperature Records example from Qt v5.x"""
diff --git a/examples/corelib/ipc/sharedmemory/dialog.py b/examples/corelib/ipc/sharedmemory/dialog.py
new file mode 100644
index 000000000..134900047
--- /dev/null
+++ b/examples/corelib/ipc/sharedmemory/dialog.py
@@ -0,0 +1,93 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from pathlib import Path
+
+from PySide6.QtWidgets import QFileDialog, QDialog
+from PySide6.QtCore import QBuffer, QIODeviceBase, Slot, QSharedMemory, QDataStream, qVersion
+from PySide6.QtGui import QImage, QPixmap
+from ui_dialog import Ui_Dialog
+
+
+class Dialog(QDialog):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ v = qVersion()
+ name = f"QSharedMemoryExample_v{v}"
+ self._shared_memory = QSharedMemory(name)
+
+ self.ui = Ui_Dialog()
+ self.ui.setupUi(self)
+ self.ui.loadFromFileButton.clicked.connect(self.load_from_file)
+ self.ui.loadFromSharedMemoryButton.clicked.connect(self.load_from_memory)
+ self.setWindowTitle("SharedMemory Example")
+
+ def ensure_detached(self):
+ if self._shared_memory.isAttached():
+ self.detach()
+
+ def closeEvent(self, e):
+ self.ensure_detached()
+ e.accept()
+
+ @Slot()
+ def load_from_file(self):
+ self.ensure_detached()
+
+ self.ui.label.setText("Select an image file")
+ dir = Path(__file__).resolve().parent
+ fileName, _ = QFileDialog.getOpenFileName(self, "Choose Image",
+ os.fspath(dir),
+ "Images (*.png *.jpg)")
+ if not fileName:
+ return
+ image = QImage()
+ if not image.load(fileName):
+ self.ui.label.setText("Selected file is not an image, please select another.")
+ return
+ self.ui.label.setPixmap(QPixmap.fromImage(image))
+
+ # load into shared memory
+ buffer = QBuffer()
+ buffer.open(QIODeviceBase.WriteOnly)
+ out = QDataStream(buffer)
+ out << image
+ buffer.close()
+ size = buffer.size()
+
+ if not self._shared_memory.create(size):
+ self.ui.label.setText("Unable to create shared memory segment.")
+ return
+
+ self._shared_memory.lock()
+ _to = memoryview(self._shared_memory.data())
+ _from = buffer.data().data()
+ _to[0:size] = _from[0:size]
+ self._shared_memory.unlock()
+
+ @Slot()
+ def load_from_memory(self):
+ if not self._shared_memory.isAttached() and not self._shared_memory.attach():
+ self.ui.label.setText("Unable to attach to shared memory segment.\n"
+ "Load an image first.")
+ return
+
+ self._shared_memory.lock()
+ mv = memoryview(self._shared_memory.constData())
+ buffer = QBuffer()
+ buffer.setData(mv.tobytes())
+ buffer.open(QBuffer.ReadOnly)
+ _in = QDataStream(buffer)
+ image = QImage()
+ _in >> image
+ buffer.close()
+ self._shared_memory.unlock()
+ self._shared_memory.detach()
+
+ self.ui.label.setPixmap(QPixmap.fromImage(image))
+
+ def detach(self):
+ if not self._shared_memory.detach():
+ self.ui.label.setText(self.tr("Unable to detach from shared memory.")) # noqa: F821
diff --git a/examples/corelib/ipc/sharedmemory/dialog.ui b/examples/corelib/ipc/sharedmemory/dialog.ui
new file mode 100644
index 000000000..e99d6fb3c
--- /dev/null
+++ b/examples/corelib/ipc/sharedmemory/dialog.ui
@@ -0,0 +1,47 @@
+<ui version="4.0" >
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>451</width>
+ <height>322</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Dialog</string>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" >
+ <widget class="QPushButton" name="loadFromFileButton" >
+ <property name="text" >
+ <string>Load Image From File...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string>Launch two of these dialogs. In the first, press the top button and load an image from a file. In the second, press the bottom button and display the loaded image from shared memory.</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" >
+ <widget class="QPushButton" name="loadFromSharedMemoryButton" >
+ <property name="text" >
+ <string>Display Image From Shared Memory</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/corelib/ipc/sharedmemory/image.png b/examples/corelib/ipc/sharedmemory/image.png
new file mode 100644
index 000000000..dd9345306
--- /dev/null
+++ b/examples/corelib/ipc/sharedmemory/image.png
Binary files differ
diff --git a/examples/corelib/ipc/sharedmemory/main.py b/examples/corelib/ipc/sharedmemory/main.py
new file mode 100644
index 000000000..e497c8de6
--- /dev/null
+++ b/examples/corelib/ipc/sharedmemory/main.py
@@ -0,0 +1,15 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the ipc/sharedmemory example from Qt v6.x"""
+
+import sys
+from PySide6.QtWidgets import QApplication
+from dialog import Dialog
+
+
+if __name__ == "__main__":
+ application = QApplication()
+ dialog = Dialog()
+ dialog.show()
+ sys.exit(application.exec())
diff --git a/examples/corelib/ipc/sharedmemory/qt.png b/examples/corelib/ipc/sharedmemory/qt.png
new file mode 100644
index 000000000..4f68e162d
--- /dev/null
+++ b/examples/corelib/ipc/sharedmemory/qt.png
Binary files differ
diff --git a/examples/corelib/ipc/sharedmemory/sharedmemory.pyproject b/examples/corelib/ipc/sharedmemory/sharedmemory.pyproject
new file mode 100644
index 000000000..14fe88f13
--- /dev/null
+++ b/examples/corelib/ipc/sharedmemory/sharedmemory.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["dialog.py", "dialog.ui", "image.png", "main.py", "qt.png"]
+}
diff --git a/examples/corelib/ipc/sharedmemory/ui_dialog.py b/examples/corelib/ipc/sharedmemory/ui_dialog.py
new file mode 100644
index 000000000..2cd544f40
--- /dev/null
+++ b/examples/corelib/ipc/sharedmemory/ui_dialog.py
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'dialog.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QDialog, QGridLayout, QLabel,
+ QPushButton, QSizePolicy, QWidget)
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog):
+ if not Dialog.objectName():
+ Dialog.setObjectName(u"Dialog")
+ Dialog.resize(451, 322)
+ self.gridLayout = QGridLayout(Dialog)
+ self.gridLayout.setObjectName(u"gridLayout")
+ self.loadFromFileButton = QPushButton(Dialog)
+ self.loadFromFileButton.setObjectName(u"loadFromFileButton")
+
+ self.gridLayout.addWidget(self.loadFromFileButton, 0, 0, 1, 1)
+
+ self.label = QLabel(Dialog)
+ self.label.setObjectName(u"label")
+ self.label.setAlignment(Qt.AlignCenter)
+ self.label.setWordWrap(True)
+
+ self.gridLayout.addWidget(self.label, 1, 0, 1, 1)
+
+ self.loadFromSharedMemoryButton = QPushButton(Dialog)
+ self.loadFromSharedMemoryButton.setObjectName(u"loadFromSharedMemoryButton")
+
+ self.gridLayout.addWidget(self.loadFromSharedMemoryButton, 2, 0, 1, 1)
+
+
+ self.retranslateUi(Dialog)
+
+ QMetaObject.connectSlotsByName(Dialog)
+ # setupUi
+
+ def retranslateUi(self, Dialog):
+ Dialog.setWindowTitle(QCoreApplication.translate("Dialog", u"Dialog", None))
+ self.loadFromFileButton.setText(QCoreApplication.translate("Dialog", u"Load Image From File...", None))
+ self.label.setText(QCoreApplication.translate("Dialog", u"Launch two of these dialogs. In the first, press the top button and load an image from a file. In the second, press the bottom button and display the loaded image from shared memory.", None))
+ self.loadFromSharedMemoryButton.setText(QCoreApplication.translate("Dialog", u"Display Image From Shared Memory", None))
+ # retranslateUi
+
diff --git a/examples/corelib/mimetypesbrowser/doc/mimetypesbrowser.png b/examples/corelib/mimetypesbrowser/doc/mimetypesbrowser.png
new file mode 100644
index 000000000..3c4a476b3
--- /dev/null
+++ b/examples/corelib/mimetypesbrowser/doc/mimetypesbrowser.png
Binary files differ
diff --git a/examples/corelib/mimetypesbrowser/doc/mimetypesbrowser.rst b/examples/corelib/mimetypesbrowser/doc/mimetypesbrowser.rst
new file mode 100644
index 000000000..e8e4d1ecd
--- /dev/null
+++ b/examples/corelib/mimetypesbrowser/doc/mimetypesbrowser.rst
@@ -0,0 +1,10 @@
+MIME Type Browser Example
+=========================
+
+A Python application that demonstrates the analogous example in C++
+`MIME Type Browser Example <https://doc.qt.io/qt-6/qtcore-mimetypes-mimetypebrowser-example.html>`_
+
+.. image:: mimetypesbrowser.png
+ :width: 400
+ :alt: mimetypebrowser screenshot
+
diff --git a/examples/corelib/mimetypesbrowser/mainwindow.py b/examples/corelib/mimetypesbrowser/mainwindow.py
new file mode 100644
index 000000000..76404eeb7
--- /dev/null
+++ b/examples/corelib/mimetypesbrowser/mainwindow.py
@@ -0,0 +1,161 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from mimetypemodel import MimeTypeModel
+from PySide6.QtCore import (QDir, QFileInfo, QMimeDatabase, QModelIndex, Qt,
+ Slot)
+from PySide6.QtGui import QAction, QKeySequence
+from PySide6.QtWidgets import (QAbstractItemView, QApplication, QDialog,
+ QFileDialog, QInputDialog, QMainWindow,
+ QMessageBox, QSplitter, QTextEdit, QTreeView,
+ QWidget)
+
+
+class MainWindow(QMainWindow):
+ def __init__(self, parent: QWidget = None) -> None:
+ super().__init__(parent=parent)
+ self.m_find_index: int = 0
+ self.m_model = MimeTypeModel(self)
+ self.m_tree_view = QTreeView(self)
+ self.m_details_text = QTextEdit(self)
+ self.m_find_matches = []
+
+ self.setWindowTitle("Qt Mime Database Browser")
+
+ # create actions
+ self.detect_file_action = QAction(
+ "&Detect File Type...", self, shortcut="Ctrl+O", triggered=self.detect_file
+ )
+ self.exit_action = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close)
+ self.m_find_action = QAction("&Find...", self, shortcut="Ctrl+F", triggered=self.find)
+ self.m_find_next_action = QAction(
+ "Find &Next", self, shortcut="Ctrl+G", triggered=self.find_next
+ )
+ self.m_find_previous_action = QAction(
+ "Find &Previous",
+ self,
+ shortcut="Ctrl+Shift+G",
+ triggered=self.find_previous,
+ )
+ self.about_action = QAction(
+ "About Qt",
+ self,
+ shortcut=QKeySequence(QKeySequence.HelpContents),
+ triggered=QApplication.aboutQt,
+ )
+
+ # add action to menu
+ self.file_menu = self.menuBar().addMenu("&File")
+ self.file_menu.addAction(self.detect_file_action)
+ self.file_menu.addAction(self.exit_action)
+ self.find_menu = self.menuBar().addMenu("&Edit")
+ self.find_menu.addAction(self.m_find_action)
+ self.find_menu.addAction(self.m_find_next_action)
+ self.find_menu.addAction(self.m_find_previous_action)
+ self.about_menu = self.menuBar().addMenu("&About")
+ self.about_menu.addAction(self.about_action)
+
+ self.central_splitter = QSplitter(self)
+ self.setCentralWidget(self.central_splitter)
+
+ self.m_tree_view.setUniformRowHeights(True)
+ self.m_tree_view.setModel(self.m_model)
+
+ self.items = self.m_model.findItems(
+ "application/octet-stream",
+ Qt.MatchContains | Qt.MatchFixedString | Qt.MatchRecursive,
+ )
+
+ if self.items:
+ self.m_tree_view.expand(self.m_model.indexFromItem(self.items[0]))
+
+ self.m_tree_view.selectionModel().currentChanged.connect(self.current_changed)
+ self.central_splitter.addWidget(self.m_tree_view)
+ self.m_details_text.setReadOnly(True)
+ self.central_splitter.addWidget(self.m_details_text)
+
+ self.update_find_actions()
+
+ @Slot()
+ def detect_file(self):
+ file_name = QFileDialog.getOpenFileName(self, "Choose File")
+ if not file_name:
+ return
+
+ mime_database = QMimeDatabase()
+ fi = QFileInfo(file_name[0])
+ mime_type = mime_database.mimeTypeForFile(fi)
+ index = (
+ self.m_model.indexForMimeType(mime_type.name())
+ if mime_type.isValid()
+ else QModelIndex()
+ )
+
+ if index.isValid():
+ self.statusBar().showMessage(f'{fi.fileName()}" is of type "{mime_type.name()}"')
+ self._select_and_goto(index)
+ else:
+ QMessageBox.information(
+ self,
+ "Unknown File Type",
+ f"The type of {QDir.toNativeSeparators(file_name)} could not be determined.",
+ )
+
+ @Slot()
+ def find(self):
+ input_dialog = QInputDialog(self)
+ input_dialog.setWindowTitle("Find")
+ input_dialog.setLabelText("Text")
+ if input_dialog.exec() != QDialog.Accepted:
+ return
+
+ value = input_dialog.textValue().strip()
+ if not value:
+ return
+
+ self.m_find_matches.clear()
+ self.m_find_index = 0
+ items = self.m_model.findItems(
+ value, Qt.MatchContains | Qt.MatchFixedString | Qt.MatchRecursive
+ )
+
+ for item in items:
+ self.m_find_matches.append(self.m_model.indexFromItem(item))
+
+ self.statusBar().showMessage(f'{len(self.m_find_matches)} mime types match "{value}".')
+ self.update_find_actions()
+
+ if self.m_find_matches:
+ self._select_and_goto(self.m_find_matches[0])
+
+ @Slot()
+ def find_next(self):
+ self.m_find_index = self.m_find_index + 1
+ if self.m_find_index >= len(self.m_find_matches):
+ self.m_find_index = 0
+ if self.m_find_index < len(self.m_find_matches):
+ self._select_and_goto(self.m_find_matches[self.m_find_index])
+
+ @Slot()
+ def find_previous(self):
+ self.m_find_index = self.m_find_index - 1
+ if self.m_find_index < 0:
+ self.m_find_index = len(self.m_find_matches) - 1
+ if self.m_find_index >= 0:
+ self._select_and_goto(self.m_find_matches[self.m_find_index])
+
+ @Slot(QModelIndex)
+ def current_changed(self, index: QModelIndex):
+ if index.isValid():
+ self.m_details_text.setText(
+ MimeTypeModel.formatMimeTypeInfo(self.m_model.mimeType(index))
+ )
+
+ def update_find_actions(self):
+ self.find_next_previous_enabled = len(self.m_find_matches) > 1
+ self.m_find_next_action.setEnabled(self.find_next_previous_enabled)
+ self.m_find_previous_action.setEnabled(self.find_next_previous_enabled)
+
+ def _select_and_goto(self, index: QModelIndex):
+ self.m_tree_view.scrollTo(index, QAbstractItemView.PositionAtCenter)
+ self.m_tree_view.setCurrentIndex(index)
diff --git a/examples/corelib/mimetypesbrowser/mimetypemodel.py b/examples/corelib/mimetypesbrowser/mimetypemodel.py
new file mode 100644
index 000000000..5243f110e
--- /dev/null
+++ b/examples/corelib/mimetypesbrowser/mimetypemodel.py
@@ -0,0 +1,136 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from typing import List
+
+from PySide6.QtCore import QMimeDatabase, QMimeType, QModelIndex, QObject, Qt, qWarning
+from PySide6.QtGui import QStandardItem, QStandardItemModel
+
+mimeTypeRole = Qt.UserRole + 1
+iconQueriedRole = Qt.UserRole + 2
+
+
+def createRow(t: QMimeType):
+ name_item = QStandardItem(t.name())
+ flags = Qt.ItemIsSelectable | Qt.ItemIsEnabled
+ name_item.setData(t, mimeTypeRole)
+ name_item.setData(False, iconQueriedRole)
+ name_item.setFlags(flags)
+ name_item.setToolTip(t.comment())
+ return [name_item]
+
+
+class MimeTypeModel(QStandardItemModel):
+ def __init__(self, parent: QObject = None):
+ super().__init__(0, 1, parent)
+ self.setHorizontalHeaderLabels(["Name"])
+ self.m_name_index_hash = {}
+ self.populate()
+
+ def populate(self):
+ mime_database = QMimeDatabase()
+ all_types: List[QMimeType] = mime_database.allMimeTypes()
+
+ # Move top level types to rear end of list, sort this partition,
+ # create top level items and truncate the list.
+ with_parent_mimetypes, without_parent_mimetypes = [], []
+
+ for mime_type in all_types:
+ if mime_type.parentMimeTypes():
+ with_parent_mimetypes.append(mime_type)
+ else:
+ without_parent_mimetypes.append(mime_type)
+
+ without_parent_mimetypes.sort(key=lambda x: x.name())
+
+ for top_level_type in without_parent_mimetypes:
+ row = createRow(top_level_type)
+ self.appendRow(row)
+ self.m_name_index_hash[top_level_type.name()] = self.indexFromItem(row[0])
+
+ all_types = with_parent_mimetypes
+
+ while all_types:
+ # Find a type inheriting one that is already in the model.
+ name_index_value: QModelIndex = None
+ name_index_key = ""
+ for mime_type in all_types:
+ name_index_value = self.m_name_index_hash.get(
+ mime_type.parentMimeTypes()[0]
+ )
+ if name_index_value:
+ name_index_key = mime_type.parentMimeTypes()[0]
+ break
+
+ if not name_index_value:
+ orphaned_mime_types = ", ".join(
+ [mime_type.name() for mime_type in all_types]
+ )
+ qWarning(f"Orphaned mime types: {orphaned_mime_types}")
+ break
+
+ # Move types inheriting the parent type to rear end of list, sort this partition,
+ # append the items to parent and truncate the list.
+ parent_name = name_index_key
+ with_parent_name, without_parent_name = [], []
+
+ for mime_type in all_types:
+ if parent_name in mime_type.parentMimeTypes():
+ with_parent_name.append(mime_type)
+ else:
+ without_parent_name.append(mime_type)
+
+ without_parent_name.sort(key=lambda x: x.name())
+ parent_item = self.itemFromIndex(name_index_value)
+
+ for mime_type in with_parent_name:
+ row = createRow(mime_type)
+ parent_item.appendRow(row)
+ self.m_name_index_hash[mime_type.name()] = self.indexFromItem(row[0])
+
+ all_types = without_parent_name
+
+ def mimeType(self, index: QModelIndex):
+ return index.data(mimeTypeRole)
+
+ def indexForMimeType(self, name):
+ return self.m_name_index_hash[name]
+
+ @staticmethod
+ def formatMimeTypeInfo(t: QMimeType):
+ out = f"<html><head/><body><h3><center>{t.name()}</center></h3><br><table>"
+ aliases_str = ", ".join(t.aliases())
+ if aliases_str:
+ out += f"<tr><td>Aliases:</td><td> ({aliases_str})"
+
+ out += (
+ f"</td></tr><tr><td>Comment:</td><td>{t.comment()}"
+ f"</td></tr><tr><td>Icon name:</td><td>{t.iconName()}</td></tr>"
+ f"<tr><td>Generic icon name</td><td>{t.genericIconName()}</td></tr>"
+ )
+
+ filter_str = t.filterString()
+ if filter_str:
+ out += f"<tr><td>Filter:</td><td>{filter_str}</td></tr>"
+
+ patterns_str = ", ".join(t.globPatterns())
+ if patterns_str:
+ out += f"<tr><td>Glob patterns:</td><td>{patterns_str}</td></tr>"
+
+ parentMimeTypes_str = ", ".join(t.parentMimeTypes())
+ if parentMimeTypes_str:
+ out += f"<tr><td>Parent types:</td><td>{parentMimeTypes_str}</td></tr>"
+
+ suffixes = t.suffixes()
+ if suffixes:
+ out += "<tr><td>Suffixes:</td><td>"
+ preferredSuffix = t.preferredSuffix()
+ if preferredSuffix:
+ suffixes.remove(preferredSuffix)
+ out += f"<b>{preferredSuffix}</b> "
+ suffixes_str = ", ".join(suffixes)
+ out += f"{suffixes_str}</td></tr>"
+
+ out += "</table></body></html>"
+
+ return out
diff --git a/examples/corelib/mimetypesbrowser/mimetypesbrowser.py b/examples/corelib/mimetypesbrowser/mimetypesbrowser.py
new file mode 100644
index 000000000..4742a31b8
--- /dev/null
+++ b/examples/corelib/mimetypesbrowser/mimetypesbrowser.py
@@ -0,0 +1,24 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the corelib/mimetypes/mimetypebrowser example from from Qt"""
+
+import argparse
+import sys
+
+from mainwindow import MainWindow
+from PySide6.QtWidgets import QApplication
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ parser = argparse.ArgumentParser(description="MimeTypesBrowser Example")
+ parser.add_argument("-v", "--version", action="version", version="%(prog)s 1.0")
+ args = parser.parse_args()
+
+ mainWindow = MainWindow()
+ availableGeometry = mainWindow.screen().availableGeometry()
+ mainWindow.resize(availableGeometry.width() / 3, availableGeometry.height() / 2)
+ mainWindow.show()
+
+ sys.exit(app.exec())
diff --git a/examples/corelib/mimetypesbrowser/mimetypesbrowser.pyproject b/examples/corelib/mimetypesbrowser/mimetypesbrowser.pyproject
new file mode 100644
index 000000000..ada4252da
--- /dev/null
+++ b/examples/corelib/mimetypesbrowser/mimetypesbrowser.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["mimetypesbrowser.py"]
+}
diff --git a/examples/corelib/settingseditor/settingseditor.py b/examples/corelib/settingseditor/settingseditor.py
index 2c6a0703b..f87a2f4b5 100644
--- a/examples/corelib/settingseditor/settingseditor.py
+++ b/examples/corelib/settingseditor/settingseditor.py
@@ -1,59 +1,26 @@
-# -*- coding: utf-8 -*-
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/tools/settingseditor example from Qt v5.x"""
import sys
from PySide6.QtCore import (QByteArray, QDate, QDateTime, QDir, QEvent, QPoint,
- QRect, QRegularExpression, QSettings, QSize, QTime, QTimer, Qt)
+ QRect, QRegularExpression, QSettings, QSize, QTime,
+ QTimer, Qt, Slot)
from PySide6.QtGui import (QAction, QColor, QIcon, QIntValidator,
- QDoubleValidator, QRegularExpressionValidator, QValidator)
+ QDoubleValidator, QRegularExpressionValidator,
+ QValidator)
from PySide6.QtWidgets import (QAbstractItemView, QApplication,
- QCheckBox, QComboBox, QFileDialog, QDialog, QDialogButtonBox, QGridLayout,
- QGroupBox, QHeaderView, QInputDialog, QItemDelegate, QLabel, QLineEdit,
- QMainWindow, QMessageBox, QStyle, QSpinBox, QStyleOptionViewItem,
- QTableWidget, QTableWidgetItem, QTreeWidget, QTreeWidgetItem, QVBoxLayout)
+ QCheckBox, QComboBox, QFileDialog, QDialog,
+ QDialogButtonBox, QGridLayout,
+ QGroupBox, QHeaderView, QInputDialog,
+ QItemDelegate, QLabel, QLineEdit,
+ QMainWindow, QMessageBox, QStyle, QSpinBox,
+ QStyleOptionViewItem, QTableWidget,
+ QTableWidgetItem, QTreeWidget, QTreeWidgetItem,
+ QVBoxLayout)
class TypeChecker:
@@ -183,6 +150,7 @@ class MainWindow(QMainWindow):
self.setWindowTitle("Settings Editor")
self.resize(500, 600)
+ @Slot()
def open_settings(self):
if self.location_dialog is None:
self.location_dialog = LocationDialog(self)
@@ -195,9 +163,10 @@ class MainWindow(QMainWindow):
self.set_settings_object(settings)
self.fallbacks_action.setEnabled(True)
+ @Slot()
def open_inifile(self):
file_name, _ = QFileDialog.getOpenFileName(self, "Open INI File",
- '', "INI Files (*.ini *.conf)")
+ '', "INI Files (*.ini *.conf)")
if file_name:
self.load_ini_file(file_name)
@@ -209,77 +178,71 @@ class MainWindow(QMainWindow):
self.set_settings_object(settings)
self.fallbacks_action.setEnabled(False)
+ @Slot()
def open_property_list(self):
file_name, _ = QFileDialog.getOpenFileName(self,
- "Open Property List", '', "Property List Files (*.plist)")
+ "Open Property List", '',
+ "Property List Files (*.plist)")
if file_name:
settings = QSettings(file_name, QSettings.NativeFormat)
self.set_settings_object(settings)
self.fallbacks_action.setEnabled(False)
+ @Slot()
def open_registry_path(self):
path, ok = QInputDialog.getText(self, "Open Registry Path",
- "Enter the path in the Windows registry:",
- QLineEdit.Normal, 'HKEY_CURRENT_USER\\')
+ "Enter the path in the Windows registry:",
+ QLineEdit.Normal, 'HKEY_CURRENT_USER\\')
if ok and path != '':
settings = QSettings(path, QSettings.NativeFormat)
self.set_settings_object(settings)
self.fallbacks_action.setEnabled(False)
+ @Slot()
def about(self):
QMessageBox.about(self, "About Settings Editor",
- "The <b>Settings Editor</b> example shows how to access "
- "application settings using Qt.")
-
- def create_actions(self):
- self._open_settings_act = QtGui.QAction("&Open Application Settings...",
- self, shortcut="Ctrl+O", triggered=self.openSettings)
-
- self._open_ini_file_act = QtGui.QAction("Open I&NI File...", self,
- shortcut="Ctrl+N", triggered=self.openIniFile)
-
- self._open_property_list_act = QtGui.QAction("Open macOS &Property List...",
- self, shortcut="Ctrl+P", triggered=self.openPropertyList)
+ "The <b>Settings Editor</b> example shows how to access "
+ "application settings using Qt.")
def create_actions(self):
self.open_settings_action = QAction("&Open Application Settings...",
- self, shortcut="Ctrl+O", triggered=self.open_settings)
+ self, shortcut="Ctrl+O", triggered=self.open_settings)
self.open_ini_file_action = QAction("Open I&NI File...", self,
- shortcut="Ctrl+N", triggered=self.open_inifile)
+ shortcut="Ctrl+N", triggered=self.open_inifile)
- self.open_property_list_action = QAction("Open macOS &Property List...",
- self, shortcut="Ctrl+P", triggered=self.open_property_list)
+ self.open_property_list_action = QAction("Open macOS &Property List...", self,
+ shortcut="Ctrl+P",
+ triggered=self.open_property_list)
if sys.platform != 'darwin':
self.open_property_list_action.setEnabled(False)
self.open_registry_path_action = QAction(
- "Open Windows &Registry Path...", self, shortcut="Ctrl+G",
- triggered=self.open_registry_path)
+ "Open Windows &Registry Path...", self, shortcut="Ctrl+G",
+ triggered=self.open_registry_path)
if sys.platform != 'win32':
self.open_registry_path_action.setEnabled(False)
self.refresh_action = QAction("&Refresh", self, shortcut="Ctrl+R",
- enabled=False, triggered=self.settings_tree.refresh)
+ enabled=False, triggered=self.settings_tree.refresh)
- self.exit_action = QAction("E&xit", self, shortcut="Ctrl+Q",
- triggered=self.close)
+ self.exit_action = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close)
self.auto_refresh_action = QAction("&Auto-Refresh", self,
- shortcut="Ctrl+A", checkable=True, enabled=False)
+ shortcut="Ctrl+A", checkable=True, enabled=False)
self.auto_refresh_action.triggered[bool].connect(self.settings_tree.set_auto_refresh)
self.auto_refresh_action.triggered[bool].connect(self.refresh_action.setDisabled)
self.fallbacks_action = QAction("&Fallbacks", self,
- shortcut="Ctrl+F", checkable=True, enabled=False)
+ shortcut="Ctrl+F", checkable=True, enabled=False)
self.fallbacks_action.triggered[bool].connect(self.settings_tree.set_fallbacks_enabled)
self.about_action = QAction("&About", self, triggered=self.about)
self.about_Qt_action = QAction("About &Qt", self,
- triggered=qApp.aboutQt)
+ triggered=qApp.aboutQt) # noqa: F821
def create_menus(self):
self.file_menu = self.menuBar().addMenu("&File")
@@ -512,6 +475,7 @@ class SettingsTree(QTreeWidget):
def sizeHint(self):
return QSize(800, 600)
+ @Slot(bool)
def set_auto_refresh(self, autoRefresh):
self.auto_refresh = autoRefresh
@@ -522,15 +486,18 @@ class SettingsTree(QTreeWidget):
else:
self.refresh_timer.stop()
+ @Slot(bool)
def set_fallbacks_enabled(self, enabled):
if self.settings is not None:
self.settings.setFallbacksEnabled(enabled)
self.refresh()
+ @Slot()
def maybe_refresh(self):
if self.state() != QAbstractItemView.EditingState:
self.refresh()
+ @Slot()
def refresh(self):
if self.settings is None:
return
@@ -538,7 +505,7 @@ class SettingsTree(QTreeWidget):
# The signal might not be connected.
try:
self.itemChanged.disconnect(self.update_setting)
- except:
+ except Exception:
pass
self.settings.sync()
@@ -561,7 +528,6 @@ class SettingsTree(QTreeWidget):
key = ancestor.text(0) + '/' + key
ancestor = ancestor.parent()
- d = item.data(2, Qt.UserRole)
self.settings.setValue(key, item.data(2, Qt.UserRole))
if self.auto_refresh:
@@ -733,7 +699,7 @@ class VariantDelegate(QItemDelegate):
value = editor.value()
else:
value = self.value_from_lineedit(editor, model, index)
- if not value is None:
+ if value is not None:
model.setData(index, value, Qt.UserRole)
model.setData(index, self.display_text(value), Qt.DisplayRole)
@@ -771,7 +737,7 @@ class VariantDelegate(QItemDelegate):
h = value.height()
return f'({w},{h})'
if isinstance(value, list):
- return ','.join(value)
+ return ','.join(map(repr, value))
if value is None:
return '<Invalid>'
diff --git a/examples/corelib/threads/mandelbrot.py b/examples/corelib/threads/mandelbrot.py
index c95966119..4689813d4 100644
--- a/examples/corelib/threads/mandelbrot.py
+++ b/examples/corelib/threads/mandelbrot.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the corelib/threads/mandelbrot example from Qt v5.x, originating from PyQt"""
@@ -47,7 +9,7 @@ import sys
from PySide6.QtCore import (Signal, QMutex, QElapsedTimer, QMutexLocker,
QPoint, QPointF, QSize, Qt, QThread,
- QWaitCondition)
+ QWaitCondition, Slot)
from PySide6.QtGui import QColor, QImage, QPainter, QPixmap, qRgb
from PySide6.QtWidgets import QApplication, QWidget
@@ -68,7 +30,7 @@ INFO_KEY = 'info'
HELP = ("Use mouse wheel or the '+' and '-' keys to zoom. Press and "
- "hold left mouse button to scroll.")
+ "hold left mouse button to scroll.")
class RenderThread(QThread):
@@ -91,7 +53,8 @@ class RenderThread(QThread):
self.abort = False
for i in range(RenderThread.colormap_size):
- self.colormap.append(self.rgb_from_wave_length(380.0 + (i * 400.0 / RenderThread.colormap_size)))
+ self.colormap.append(
+ self.rgb_from_wave_length(380.0 + (i * 400.0 / RenderThread.colormap_size)))
def stop(self):
self.mutex.lock()
@@ -102,18 +65,17 @@ class RenderThread(QThread):
self.wait(2000)
def render(self, centerX, centerY, scale_factor, resultSize):
- locker = QMutexLocker(self.mutex)
-
- self._center_x = centerX
- self._center_y = centerY
- self._scale_factor = scale_factor
- self._result_size = resultSize
-
- if not self.isRunning():
- self.start(QThread.LowPriority)
- else:
- self.restart = True
- self.condition.wakeOne()
+ with QMutexLocker(self.mutex):
+ self._center_x = centerX
+ self._center_y = centerY
+ self._scale_factor = scale_factor
+ self._result_size = resultSize
+
+ if not self.isRunning():
+ self.start(QThread.LowPriority)
+ else:
+ self.restart = True
+ self.condition.wakeOne()
def run(self):
timer = QElapsedTimer()
@@ -171,7 +133,8 @@ class RenderThread(QThread):
if num_iterations < max_iterations:
image.setPixel(x + half_width, y + half_height,
- self.colormap[num_iterations % RenderThread.colormap_size])
+ self.colormap[
+ num_iterations % RenderThread.colormap_size])
all_black = False
else:
image.setPixel(x + half_width, y + half_height, qRgb(0, 0, 0))
@@ -185,7 +148,8 @@ class RenderThread(QThread):
if elapsed > 2000:
elapsed /= 1000
unit = 's'
- text = f"Pass {curpass+1}/{NUM_PASSES}, max iterations: {max_iterations}, time: {elapsed}{unit}"
+ text = (f"Pass {curpass + 1}/{NUM_PASSES}, "
+ f"max iterations: {max_iterations}, time: {elapsed}{unit}")
image.setText(INFO_KEY, text)
self.rendered_image.emit(image, scale_factor)
curpass += 1
@@ -253,45 +217,45 @@ class MandelbrotWidget(QWidget):
self._info = ''
def paintEvent(self, event):
- painter = QPainter(self)
- painter.fillRect(self.rect(), Qt.black)
-
- if self.pixmap.isNull():
+ with QPainter(self) as painter:
+ painter.fillRect(self.rect(), Qt.black)
+
+ if self.pixmap.isNull():
+ painter.setPen(Qt.white)
+ painter.drawText(self.rect(), Qt.AlignCenter,
+ "Rendering initial image, please wait...")
+ return
+
+ if self._cur_scale == self._pixmap_scale:
+ painter.drawPixmap(self._pixmap_offset, self.pixmap)
+ else:
+ scale_factor = self._pixmap_scale / self._cur_scale
+ new_width = int(self.pixmap.width() * scale_factor)
+ new_height = int(self.pixmap.height() * scale_factor)
+ new_x = self._pixmap_offset.x() + (self.pixmap.width() - new_width) / 2
+ new_y = self._pixmap_offset.y() + (self.pixmap.height() - new_height) / 2
+
+ painter.save()
+ painter.translate(new_x, new_y)
+ painter.scale(scale_factor, scale_factor)
+ exposed, _ = painter.transform().inverted()
+ exposed = exposed.mapRect(self.rect()).adjusted(-1, -1, 1, 1)
+ painter.drawPixmap(exposed, self.pixmap, exposed)
+ painter.restore()
+
+ text = HELP
+ if self._info:
+ text += ' ' + self._info
+ metrics = painter.fontMetrics()
+ text_width = metrics.horizontalAdvance(text)
+
+ painter.setPen(Qt.NoPen)
+ painter.setBrush(QColor(0, 0, 0, 127))
+ painter.drawRect((self.width() - text_width) / 2 - 5, 0, text_width + 10,
+ metrics.lineSpacing() + 5)
painter.setPen(Qt.white)
- painter.drawText(self.rect(), Qt.AlignCenter,
- "Rendering initial image, please wait...")
- return
-
- if self._cur_scale == self._pixmap_scale:
- painter.drawPixmap(self._pixmap_offset, self.pixmap)
- else:
- scale_factor = self._pixmap_scale / self._cur_scale
- new_width = int(self.pixmap.width() * scale_factor)
- new_height = int(self.pixmap.height() * scale_factor)
- new_x = self._pixmap_offset.x() + (self.pixmap.width() - new_width) / 2
- new_y = self._pixmap_offset.y() + (self.pixmap.height() - new_height) / 2
-
- painter.save()
- painter.translate(new_x, new_y)
- painter.scale(scale_factor, scale_factor)
- exposed, _ = painter.transform().inverted()
- exposed = exposed.mapRect(self.rect()).adjusted(-1, -1, 1, 1)
- painter.drawPixmap(exposed, self.pixmap, exposed)
- painter.restore()
-
- text = HELP
- if self._info:
- text += ' ' + self._info
- metrics = painter.fontMetrics()
- text_width = metrics.horizontalAdvance(text)
-
- painter.setPen(Qt.NoPen)
- painter.setBrush(QColor(0, 0, 0, 127))
- painter.drawRect((self.width() - text_width) / 2 - 5, 0, text_width + 10,
- metrics.lineSpacing() + 5)
- painter.setPen(Qt.white)
- painter.drawText((self.width() - text_width) / 2,
- metrics.leading() + metrics.ascent(), text)
+ painter.drawText((self.width() - text_width) / 2,
+ metrics.leading() + metrics.ascent(), text)
def resizeEvent(self, event):
self.thread.render(self._center_x, self._center_y, self._cur_scale, self.size())
@@ -340,6 +304,7 @@ class MandelbrotWidget(QWidget):
delta_y = (self.height() - self.pixmap.height()) / 2 - self._pixmap_offset.y()
self.scroll(delta_x, delta_y)
+ @Slot(QImage, float)
def update_pixmap(self, image, scale_factor):
if not self._last_drag_pos.isNull():
return
@@ -354,15 +319,13 @@ class MandelbrotWidget(QWidget):
def zoom(self, zoomFactor):
self._cur_scale *= zoomFactor
self.update()
- self.thread.render(self._center_x, self._center_y, self._cur_scale,
- self.size())
+ self.thread.render(self._center_x, self._center_y, self._cur_scale, self.size())
def scroll(self, deltaX, deltaY):
self._center_x += deltaX * self._cur_scale
self._center_y += deltaY * self._cur_scale
self.update()
- self.thread.render(self._center_x, self._center_y, self._cur_scale,
- self.size())
+ self.thread.render(self._center_x, self._center_y, self._cur_scale, self.size())
if __name__ == '__main__':
diff --git a/examples/datavisualization/bars3d/bars3d.py b/examples/datavisualization/bars3d/bars3d.py
index 57e145fe8..f1283fcbd 100644
--- a/examples/datavisualization/bars3d/bars3d.py
+++ b/examples/datavisualization/bars3d/bars3d.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2017 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 QtDataVisualization example"""
diff --git a/examples/datavisualization/graphgallery/axesinputhandler.py b/examples/datavisualization/graphgallery/axesinputhandler.py
new file mode 100644
index 000000000..7f721d4aa
--- /dev/null
+++ b/examples/datavisualization/graphgallery/axesinputhandler.py
@@ -0,0 +1,101 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from enum import Enum
+from math import sin, cos, degrees
+
+from PySide6.QtCore import Qt
+from PySide6.QtDataVisualization import QAbstract3DGraph, Q3DInputHandler
+
+
+class InputState(Enum):
+ StateNormal = 0
+ StateDraggingX = 1
+ StateDraggingZ = 2
+ StateDraggingY = 3
+
+
+class AxesInputHandler(Q3DInputHandler):
+
+ def __init__(self, graph, parent=None):
+ super().__init__(parent)
+ self._mousePressed = False
+ self._state = InputState.StateNormal
+ self._axisX = None
+ self._axisZ = None
+ self._axisY = None
+ self._speedModifier = 15.0
+
+ # Connect to the item selection signal from graph
+ graph.selectedElementChanged.connect(self.handleElementSelected)
+
+ def setAxes(self, axisX, axisZ, axisY):
+ self._axisX = axisX
+ self._axisZ = axisZ
+ self._axisY = axisY
+
+ def setDragSpeedModifier(self, modifier):
+ self._speedModifier = modifier
+
+ def mousePressEvent(self, event, mousePos):
+ super().mousePressEvent(event, mousePos)
+ if Qt.LeftButton == event.button():
+ self._mousePressed = True
+
+ def mouseMoveEvent(self, event, mousePos):
+ # Check if we're trying to drag axis label
+ if self._mousePressed and self._state != InputState.StateNormal:
+ self.setPreviousInputPos(self.inputPosition())
+ self.setInputPosition(mousePos)
+ self.handleAxisDragging()
+ else:
+ super().mouseMoveEvent(event, mousePos)
+
+ def mouseReleaseEvent(self, event, mousePos):
+ super().mouseReleaseEvent(event, mousePos)
+ self._mousePressed = False
+ self._state = InputState.StateNormal
+
+ def handleElementSelected(self, type):
+ if type == QAbstract3DGraph.ElementAxisXLabel:
+ self._state = InputState.StateDraggingX
+ elif type == QAbstract3DGraph.ElementAxisYLabel:
+ self._state = InputState.StateDraggingY
+ elif type == QAbstract3DGraph.ElementAxisZLabel:
+ self._state = InputState.StateDraggingZ
+ else:
+ self._state = InputState.StateNormal
+
+ def handleAxisDragging(self):
+ distance = 0.0
+ # Get scene orientation from active camera
+ ac = self.scene().activeCamera()
+ xRotation = ac.xRotation()
+ yRotation = ac.yRotation()
+
+ # Calculate directional drag multipliers based on rotation
+ xMulX = cos(degrees(xRotation))
+ xMulY = sin(degrees(xRotation))
+ zMulX = sin(degrees(xRotation))
+ zMulY = cos(degrees(xRotation))
+
+ # Get the drag amount
+ move = self.inputPosition() - self.previousInputPos()
+
+ # Flip the effect of y movement if we're viewing from below
+ yMove = -move.y() if yRotation < 0 else move.y()
+
+ # Adjust axes
+ if self._state == InputState.StateDraggingX:
+ distance = (move.x() * xMulX - yMove * xMulY) / self._speedModifier
+ self._axisX.setRange(self._axisX.min() - distance,
+ self._axisX.max() - distance)
+ elif self._state == InputState.StateDraggingZ:
+ distance = (move.x() * zMulX + yMove * zMulY) / self._speedModifier
+ self._axisZ.setRange(self._axisZ.min() + distance,
+ self._axisZ.max() + distance)
+ elif self._state == InputState.StateDraggingY:
+ # No need to use adjusted y move here
+ distance = move.y() / self._speedModifier
+ self._axisY.setRange(self._axisY.min() + distance,
+ self._axisY.max() + distance)
diff --git a/examples/datavisualization/graphgallery/bargraph.py b/examples/datavisualization/graphgallery/bargraph.py
new file mode 100644
index 000000000..7938a5ca1
--- /dev/null
+++ b/examples/datavisualization/graphgallery/bargraph.py
@@ -0,0 +1,276 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from graphmodifier import GraphModifier
+
+from PySide6.QtCore import QObject, Qt
+from PySide6.QtGui import QFont
+from PySide6.QtWidgets import (QButtonGroup, QCheckBox, QComboBox, QFontComboBox,
+ QLabel, QPushButton, QHBoxLayout, QSizePolicy,
+ QRadioButton, QSlider, QVBoxLayout, QWidget)
+from PySide6.QtDataVisualization import (QAbstract3DGraph, QAbstract3DSeries, Q3DBars)
+
+
+class BarGraph(QObject):
+
+ def __init__(self):
+ super().__init__()
+ self._barsGraph = Q3DBars()
+ self._container = None
+ self._barsWidget = None
+
+ def barsWidget(self):
+ return self._barsWidget
+
+ def initialize(self, minimum_graph_size, maximum_graph_size):
+ if not self._barsGraph.hasContext():
+ return False
+
+ self._barsWidget = QWidget()
+ hLayout = QHBoxLayout(self._barsWidget)
+ self._container = QWidget.createWindowContainer(self._barsGraph,
+ self._barsWidget)
+ self._container.setMinimumSize(minimum_graph_size)
+ self._container.setMaximumSize(maximum_graph_size)
+ self._container.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
+ self._container.setFocusPolicy(Qt.StrongFocus)
+ hLayout.addWidget(self._container, 1)
+
+ vLayout = QVBoxLayout()
+ hLayout.addLayout(vLayout)
+
+ themeList = QComboBox(self._barsWidget)
+ themeList.addItem("Qt")
+ themeList.addItem("Primary Colors")
+ themeList.addItem("Digia")
+ themeList.addItem("Stone Moss")
+ themeList.addItem("Army Blue")
+ themeList.addItem("Retro")
+ themeList.addItem("Ebony")
+ themeList.addItem("Isabelle")
+ themeList.setCurrentIndex(0)
+
+ labelButton = QPushButton(self._barsWidget)
+ labelButton.setText("Change label style")
+
+ smoothCheckBox = QCheckBox(self._barsWidget)
+ smoothCheckBox.setText("Smooth bars")
+ smoothCheckBox.setChecked(False)
+
+ barStyleList = QComboBox(self._barsWidget)
+ barStyleList.addItem("Bar", QAbstract3DSeries.MeshBar)
+ barStyleList.addItem("Pyramid", QAbstract3DSeries.MeshPyramid)
+ barStyleList.addItem("Cone", QAbstract3DSeries.MeshCone)
+ barStyleList.addItem("Cylinder", QAbstract3DSeries.MeshCylinder)
+ barStyleList.addItem("Bevel bar", QAbstract3DSeries.MeshBevelBar)
+ barStyleList.addItem("Sphere", QAbstract3DSeries.MeshSphere)
+ barStyleList.setCurrentIndex(4)
+
+ cameraButton = QPushButton(self._barsWidget)
+ cameraButton.setText("Change camera preset")
+
+ zoomToSelectedButton = QPushButton(self._barsWidget)
+ zoomToSelectedButton.setText("Zoom to selected bar")
+
+ selectionModeList = QComboBox(self._barsWidget)
+ selectionModeList.addItem("None", QAbstract3DGraph.SelectionNone)
+ selectionModeList.addItem("Bar", QAbstract3DGraph.SelectionItem)
+ selectionModeList.addItem("Row", QAbstract3DGraph.SelectionRow)
+ sel = QAbstract3DGraph.SelectionItemAndRow
+ selectionModeList.addItem("Bar and Row", sel)
+ selectionModeList.addItem("Column", QAbstract3DGraph.SelectionColumn)
+ sel = QAbstract3DGraph.SelectionItemAndColumn
+ selectionModeList.addItem("Bar and Column", sel)
+ sel = QAbstract3DGraph.SelectionRowAndColumn
+ selectionModeList.addItem("Row and Column", sel)
+ sel = QAbstract3DGraph.SelectionItemRowAndColumn
+ selectionModeList.addItem("Bar, Row and Column", sel)
+ sel = QAbstract3DGraph.SelectionSlice | QAbstract3DGraph.SelectionRow
+ selectionModeList.addItem("Slice into Row", sel)
+ sel = QAbstract3DGraph.SelectionSlice | QAbstract3DGraph.SelectionItemAndRow
+ selectionModeList.addItem("Slice into Row and Item", sel)
+ sel = QAbstract3DGraph.SelectionSlice | QAbstract3DGraph.SelectionColumn
+ selectionModeList.addItem("Slice into Column", sel)
+ sel = (QAbstract3DGraph.SelectionSlice | QAbstract3DGraph.SelectionItemAndColumn)
+ selectionModeList.addItem("Slice into Column and Item", sel)
+ sel = (QAbstract3DGraph.SelectionItemRowAndColumn | QAbstract3DGraph.SelectionMultiSeries)
+ selectionModeList.addItem("Multi: Bar, Row, Col", sel)
+ sel = (QAbstract3DGraph.SelectionSlice | QAbstract3DGraph.SelectionItemAndRow
+ | QAbstract3DGraph.SelectionMultiSeries)
+ selectionModeList.addItem("Multi, Slice: Row, Item", sel)
+ sel = (QAbstract3DGraph.SelectionSlice | QAbstract3DGraph.SelectionItemAndColumn
+ | QAbstract3DGraph.SelectionMultiSeries)
+ selectionModeList.addItem("Multi, Slice: Col, Item", sel)
+ selectionModeList.setCurrentIndex(1)
+
+ backgroundCheckBox = QCheckBox(self._barsWidget)
+ backgroundCheckBox.setText("Show background")
+ backgroundCheckBox.setChecked(False)
+
+ gridCheckBox = QCheckBox(self._barsWidget)
+ gridCheckBox.setText("Show grid")
+ gridCheckBox.setChecked(True)
+
+ seriesCheckBox = QCheckBox(self._barsWidget)
+ seriesCheckBox.setText("Show second series")
+ seriesCheckBox.setChecked(False)
+
+ reverseValueAxisCheckBox = QCheckBox(self._barsWidget)
+ reverseValueAxisCheckBox.setText("Reverse value axis")
+ reverseValueAxisCheckBox.setChecked(False)
+
+ reflectionCheckBox = QCheckBox(self._barsWidget)
+ reflectionCheckBox.setText("Show reflections")
+ reflectionCheckBox.setChecked(False)
+
+ rotationSliderX = QSlider(Qt.Horizontal, self._barsWidget)
+ rotationSliderX.setTickInterval(30)
+ rotationSliderX.setTickPosition(QSlider.TicksBelow)
+ rotationSliderX.setMinimum(-180)
+ rotationSliderX.setValue(0)
+ rotationSliderX.setMaximum(180)
+ rotationSliderY = QSlider(Qt.Horizontal, self._barsWidget)
+ rotationSliderY.setTickInterval(15)
+ rotationSliderY.setTickPosition(QSlider.TicksAbove)
+ rotationSliderY.setMinimum(-90)
+ rotationSliderY.setValue(0)
+ rotationSliderY.setMaximum(90)
+
+ fontSizeSlider = QSlider(Qt.Horizontal, self._barsWidget)
+ fontSizeSlider.setTickInterval(10)
+ fontSizeSlider.setTickPosition(QSlider.TicksBelow)
+ fontSizeSlider.setMinimum(1)
+ fontSizeSlider.setValue(30)
+ fontSizeSlider.setMaximum(100)
+
+ fontList = QFontComboBox(self._barsWidget)
+ fontList.setCurrentFont(QFont("Times New Roman"))
+
+ shadowQuality = QComboBox(self._barsWidget)
+ shadowQuality.addItem("None")
+ shadowQuality.addItem("Low")
+ shadowQuality.addItem("Medium")
+ shadowQuality.addItem("High")
+ shadowQuality.addItem("Low Soft")
+ shadowQuality.addItem("Medium Soft")
+ shadowQuality.addItem("High Soft")
+ shadowQuality.setCurrentIndex(5)
+
+ rangeList = QComboBox(self._barsWidget)
+ rangeList.addItem("2015")
+ rangeList.addItem("2016")
+ rangeList.addItem("2017")
+ rangeList.addItem("2018")
+ rangeList.addItem("2019")
+ rangeList.addItem("2020")
+ rangeList.addItem("2021")
+ rangeList.addItem("2022")
+ rangeList.addItem("All")
+ rangeList.setCurrentIndex(8)
+
+ axisTitlesVisibleCB = QCheckBox(self._barsWidget)
+ axisTitlesVisibleCB.setText("Axis titles visible")
+ axisTitlesVisibleCB.setChecked(True)
+
+ axisTitlesFixedCB = QCheckBox(self._barsWidget)
+ axisTitlesFixedCB.setText("Axis titles fixed")
+ axisTitlesFixedCB.setChecked(True)
+
+ axisLabelRotationSlider = QSlider(Qt.Horizontal, self._barsWidget)
+ axisLabelRotationSlider.setTickInterval(10)
+ axisLabelRotationSlider.setTickPosition(QSlider.TicksBelow)
+ axisLabelRotationSlider.setMinimum(0)
+ axisLabelRotationSlider.setValue(30)
+ axisLabelRotationSlider.setMaximum(90)
+
+ modeGroup = QButtonGroup(self._barsWidget)
+ modeWeather = QRadioButton("Temperature Data", self._barsWidget)
+ modeWeather.setChecked(True)
+ modeCustomProxy = QRadioButton("Custom Proxy Data", self._barsWidget)
+ modeGroup.addButton(modeWeather)
+ modeGroup.addButton(modeCustomProxy)
+
+ vLayout.addWidget(QLabel("Rotate horizontally"))
+ vLayout.addWidget(rotationSliderX, 0, Qt.AlignTop)
+ vLayout.addWidget(QLabel("Rotate vertically"))
+ vLayout.addWidget(rotationSliderY, 0, Qt.AlignTop)
+ vLayout.addWidget(labelButton, 0, Qt.AlignTop)
+ vLayout.addWidget(cameraButton, 0, Qt.AlignTop)
+ vLayout.addWidget(zoomToSelectedButton, 0, Qt.AlignTop)
+ vLayout.addWidget(backgroundCheckBox)
+ vLayout.addWidget(gridCheckBox)
+ vLayout.addWidget(smoothCheckBox)
+ vLayout.addWidget(reflectionCheckBox)
+ vLayout.addWidget(seriesCheckBox)
+ vLayout.addWidget(reverseValueAxisCheckBox)
+ vLayout.addWidget(axisTitlesVisibleCB)
+ vLayout.addWidget(axisTitlesFixedCB)
+ vLayout.addWidget(QLabel("Show year"))
+ vLayout.addWidget(rangeList)
+ vLayout.addWidget(QLabel("Change bar style"))
+ vLayout.addWidget(barStyleList)
+ vLayout.addWidget(QLabel("Change selection mode"))
+ vLayout.addWidget(selectionModeList)
+ vLayout.addWidget(QLabel("Change theme"))
+ vLayout.addWidget(themeList)
+ vLayout.addWidget(QLabel("Adjust shadow quality"))
+ vLayout.addWidget(shadowQuality)
+ vLayout.addWidget(QLabel("Change font"))
+ vLayout.addWidget(fontList)
+ vLayout.addWidget(QLabel("Adjust font size"))
+ vLayout.addWidget(fontSizeSlider)
+ vLayout.addWidget(QLabel("Axis label rotation"))
+ vLayout.addWidget(axisLabelRotationSlider, 0, Qt.AlignTop)
+ vLayout.addWidget(modeWeather, 0, Qt.AlignTop)
+ vLayout.addWidget(modeCustomProxy, 1, Qt.AlignTop)
+
+ self._modifier = GraphModifier(self._barsGraph, self)
+
+ rotationSliderX.valueChanged.connect(self._modifier.rotateX)
+ rotationSliderY.valueChanged.connect(self._modifier.rotateY)
+
+ labelButton.clicked.connect(self._modifier.changeLabelBackground)
+ cameraButton.clicked.connect(self._modifier.changePresetCamera)
+ zoomToSelectedButton.clicked.connect(self._modifier.zoomToSelectedBar)
+
+ backgroundCheckBox.stateChanged.connect(self._modifier.setBackgroundEnabled)
+ gridCheckBox.stateChanged.connect(self._modifier.setGridEnabled)
+ smoothCheckBox.stateChanged.connect(self._modifier.setSmoothBars)
+ seriesCheckBox.stateChanged.connect(self._modifier.setSeriesVisibility)
+ reverseValueAxisCheckBox.stateChanged.connect(self._modifier.setReverseValueAxis)
+ reflectionCheckBox.stateChanged.connect(self._modifier.setReflection)
+
+ self._modifier.backgroundEnabledChanged.connect(backgroundCheckBox.setChecked)
+ self._modifier.gridEnabledChanged.connect(gridCheckBox.setChecked)
+
+ rangeList.currentIndexChanged.connect(self._modifier.changeRange)
+
+ barStyleList.currentIndexChanged.connect(self._modifier.changeStyle)
+
+ selectionModeList.currentIndexChanged.connect(self._modifier.changeSelectionMode)
+
+ themeList.currentIndexChanged.connect(self._modifier.changeTheme)
+
+ shadowQuality.currentIndexChanged.connect(self._modifier.changeShadowQuality)
+
+ self._modifier.shadowQualityChanged.connect(shadowQuality.setCurrentIndex)
+ self._barsGraph.shadowQualityChanged.connect(self._modifier.shadowQualityUpdatedByVisual)
+
+ fontSizeSlider.valueChanged.connect(self._modifier.changeFontSize)
+ fontList.currentFontChanged.connect(self._modifier.changeFont)
+
+ self._modifier.fontSizeChanged.connect(fontSizeSlider.setValue)
+ self._modifier.fontChanged.connect(fontList.setCurrentFont)
+
+ axisTitlesVisibleCB.stateChanged.connect(self._modifier.setAxisTitleVisibility)
+ axisTitlesFixedCB.stateChanged.connect(self._modifier.setAxisTitleFixed)
+ axisLabelRotationSlider.valueChanged.connect(self._modifier.changeLabelRotation)
+
+ modeWeather.toggled.connect(self._modifier.setDataModeToWeather)
+ modeCustomProxy.toggled.connect(self._modifier.setDataModeToCustom)
+ modeWeather.toggled.connect(seriesCheckBox.setEnabled)
+ modeWeather.toggled.connect(rangeList.setEnabled)
+ modeWeather.toggled.connect(axisTitlesVisibleCB.setEnabled)
+ modeWeather.toggled.connect(axisTitlesFixedCB.setEnabled)
+ modeWeather.toggled.connect(axisLabelRotationSlider.setEnabled)
+ return True
diff --git a/examples/datavisualization/graphgallery/custominputhandler.py b/examples/datavisualization/graphgallery/custominputhandler.py
new file mode 100644
index 000000000..0402be607
--- /dev/null
+++ b/examples/datavisualization/graphgallery/custominputhandler.py
@@ -0,0 +1,177 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from enum import Enum
+from math import sin, cos, degrees
+
+from PySide6.QtCore import Qt
+from PySide6.QtDataVisualization import (QAbstract3DGraph, Q3DInputHandler)
+
+
+class InputState(Enum):
+ StateNormal = 0
+ StateDraggingX = 1
+ StateDraggingZ = 2
+ StateDraggingY = 3
+
+
+class CustomInputHandler(Q3DInputHandler):
+
+ def __init__(self, graph, parent=None):
+ super().__init__(parent)
+ self._highlight = None
+ self._mousePressed = False
+ self._state = InputState.StateNormal
+ self._axisX = None
+ self._axisY = None
+ self._axisZ = None
+ self._speedModifier = 20.0
+ self._aspectRatio = 0.0
+ self._axisXMinValue = 0.0
+ self._axisXMaxValue = 0.0
+ self._axisXMinRange = 0.0
+ self._axisZMinValue = 0.0
+ self._axisZMaxValue = 0.0
+ self._axisZMinRange = 0.0
+ self._areaMinValue = 0.0
+ self._areaMaxValue = 0.0
+
+ # Connect to the item selection signal from graph
+ graph.selectedElementChanged.connect(self.handleElementSelected)
+
+ def setAspectRatio(self, ratio):
+ self._aspectRatio = ratio
+
+ def setHighlightSeries(self, series):
+ self._highlight = series
+
+ def setDragSpeedModifier(self, modifier):
+ self._speedModifier = modifier
+
+ def setLimits(self, min, max, minRange):
+ self._areaMinValue = min
+ self._areaMaxValue = max
+ self._axisXMinValue = self._areaMinValue
+ self._axisXMaxValue = self._areaMaxValue
+ self._axisZMinValue = self._areaMinValue
+ self._axisZMaxValue = self._areaMaxValue
+ self._axisXMinRange = minRange
+ self._axisZMinRange = minRange
+
+ def setAxes(self, axisX, axisY, axisZ):
+ self._axisX = axisX
+ self._axisY = axisY
+ self._axisZ = axisZ
+
+ def mousePressEvent(self, event, mousePos):
+ if Qt.LeftButton == event.button():
+ self._highlight.setVisible(False)
+ self._mousePressed = True
+ super().mousePressEvent(event, mousePos)
+
+ def wheelEvent(self, event):
+ delta = float(event.angleDelta().y())
+
+ self._axisXMinValue += delta
+ self._axisXMaxValue -= delta
+ self._axisZMinValue += delta
+ self._axisZMaxValue -= delta
+ self.checkConstraints()
+
+ y = (self._axisXMaxValue - self._axisXMinValue) * self._aspectRatio
+
+ self._axisX.setRange(self._axisXMinValue, self._axisXMaxValue)
+ self._axisY.setRange(100.0, y)
+ self._axisZ.setRange(self._axisZMinValue, self._axisZMaxValue)
+
+ def mouseMoveEvent(self, event, mousePos):
+ # Check if we're trying to drag axis label
+ if self._mousePressed and self._state != InputState.StateNormal:
+ self.setPreviousInputPos(self.inputPosition())
+ self.setInputPosition(mousePos)
+ self.handleAxisDragging()
+ else:
+ super().mouseMoveEvent(event, mousePos)
+
+ def mouseReleaseEvent(self, event, mousePos):
+ super().mouseReleaseEvent(event, mousePos)
+ self._mousePressed = False
+ self._state = InputState.StateNormal
+
+ def handleElementSelected(self, type):
+ if type == QAbstract3DGraph.ElementAxisXLabel:
+ self._state = InputState.StateDraggingX
+ elif type == QAbstract3DGraph.ElementAxisZLabel:
+ self._state = InputState.StateDraggingZ
+ else:
+ self._state = InputState.StateNormal
+
+ def handleAxisDragging(self):
+ distance = 0.0
+
+ # Get scene orientation from active camera
+ xRotation = self.scene().activeCamera().xRotation()
+
+ # Calculate directional drag multipliers based on rotation
+ xMulX = cos(degrees(xRotation))
+ xMulY = sin(degrees(xRotation))
+ zMulX = xMulY
+ zMulY = xMulX
+
+ # Get the drag amount
+ move = self.inputPosition() - self.previousInputPos()
+
+ # Adjust axes
+ if self._state == InputState.StateDraggingX:
+ distance = (move.x() * xMulX - move.y() * xMulY) * self._speedModifier
+ self._axisXMinValue -= distance
+ self._axisXMaxValue -= distance
+ if self._axisXMinValue < self._areaMinValue:
+ dist = self._axisXMaxValue - self._axisXMinValue
+ self._axisXMinValue = self._areaMinValue
+ self._axisXMaxValue = self._axisXMinValue + dist
+
+ if self._axisXMaxValue > self._areaMaxValue:
+ dist = self._axisXMaxValue - self._axisXMinValue
+ self._axisXMaxValue = self._areaMaxValue
+ self._axisXMinValue = self._axisXMaxValue - dist
+
+ self._axisX.setRange(self._axisXMinValue, self._axisXMaxValue)
+ elif self._state == InputState.StateDraggingZ:
+ distance = (move.x() * zMulX + move.y() * zMulY) * self._speedModifier
+ self._axisZMinValue += distance
+ self._axisZMaxValue += distance
+ if self._axisZMinValue < self._areaMinValue:
+ dist = self._axisZMaxValue - self._axisZMinValue
+ self._axisZMinValue = self._areaMinValue
+ self._axisZMaxValue = self._axisZMinValue + dist
+
+ if self._axisZMaxValue > self._areaMaxValue:
+ dist = self._axisZMaxValue - self._axisZMinValue
+ self._axisZMaxValue = self._areaMaxValue
+ self._axisZMinValue = self._axisZMaxValue - dist
+
+ self._axisZ.setRange(self._axisZMinValue, self._axisZMaxValue)
+
+ def checkConstraints(self):
+ if self._axisXMinValue < self._areaMinValue:
+ self._axisXMinValue = self._areaMinValue
+ if self._axisXMaxValue > self._areaMaxValue:
+ self._axisXMaxValue = self._areaMaxValue
+ # Don't allow too much zoom in
+ range = self._axisXMaxValue - self._axisXMinValue
+ if range < self._axisXMinRange:
+ adjust = (self._axisXMinRange - range) / 2.0
+ self._axisXMinValue -= adjust
+ self._axisXMaxValue += adjust
+
+ if self._axisZMinValue < self._areaMinValue:
+ self._axisZMinValue = self._areaMinValue
+ if self._axisZMaxValue > self._areaMaxValue:
+ self._axisZMaxValue = self._areaMaxValue
+ # Don't allow too much zoom in
+ range = self._axisZMaxValue - self._axisZMinValue
+ if range < self._axisZMinRange:
+ adjust = (self._axisZMinRange - range) / 2.0
+ self._axisZMinValue -= adjust
+ self._axisZMaxValue += adjust
diff --git a/examples/datavisualization/graphgallery/data/layer_1.png b/examples/datavisualization/graphgallery/data/layer_1.png
new file mode 100644
index 000000000..9138c710a
--- /dev/null
+++ b/examples/datavisualization/graphgallery/data/layer_1.png
Binary files differ
diff --git a/examples/datavisualization/graphgallery/data/layer_2.png b/examples/datavisualization/graphgallery/data/layer_2.png
new file mode 100644
index 000000000..61631ae8b
--- /dev/null
+++ b/examples/datavisualization/graphgallery/data/layer_2.png
Binary files differ
diff --git a/examples/datavisualization/graphgallery/data/layer_3.png b/examples/datavisualization/graphgallery/data/layer_3.png
new file mode 100644
index 000000000..066ffbe75
--- /dev/null
+++ b/examples/datavisualization/graphgallery/data/layer_3.png
Binary files differ
diff --git a/examples/datavisualization/graphgallery/data/license.txt b/examples/datavisualization/graphgallery/data/license.txt
new file mode 100644
index 000000000..749daf31f
--- /dev/null
+++ b/examples/datavisualization/graphgallery/data/license.txt
@@ -0,0 +1,77 @@
+License information regarding the data obtained from National Land Survey of
+Finland http://www.maanmittauslaitos.fi/en
+- topographic model from Elevation model 2 m (U4421B, U4421D, U4422A and
+ U4422C) 08/2014
+- map image extracted from Topographic map raster 1:50 000 (U442) 08/2014
+
+National Land Survey open data licence - version 1.0 - 1 May 2012
+
+1. General information
+
+The National Land Survey of Finland (hereinafter the Licensor), as the holder
+of the immaterial rights to the data, has granted on the terms mentioned below
+the right to use a copy (hereinafter data or dataset(s)) of the data (or a part
+of it).
+
+The Licensee is a natural or legal person who makes use of the data covered by
+this licence. The Licensee accepts the terms of this licence by receiving the
+dataset(s) covered by the licence.
+
+This Licence agreement does not create a co-operation or business relationship
+between the Licensee and the Licensor.
+
+2. Terms of the licence
+
+2.1. Right of use
+
+This licence grants a worldwide, free of charge and irrevocable parallel right
+of use to open data. According to the terms of the licence, data received by
+the Licensee can be freely:
+ - copied, distributed and published,
+ - modified and utilised commercially and non-commercially,
+ - inserted into other products and
+ - used as a part of a software application or service.
+
+2.2. Duties and responsibilities of the Licensee
+
+Through reasonable means suitable to the distribution medium or method which is
+used in conjunction with a product containing data or a service utilising data
+covered by this licence or while distributing data, the Licensee shall:
+ - mention the name of the Licensor, the name of the dataset(s) and the time
+ when the National Land Survey has delivered the dataset(s) (e.g.: contains
+ data from the National Land Survey of Finland Topographic Database 06/2012)
+ - provide a copy of this licence or a link to it, as well as
+ - require third parties to provide the same information when granting rights
+ to copies of dataset(s) or products and services containing such data and
+ - remove the name of the Licensor from the product or service, if required to
+ do so by the Licensor.
+
+The terms of this licence do not allow the Licensee to state in conjunction
+with the use of dataset(s) that the Licensor supports or recommends such use.
+
+2.3. Duties and responsibilities of the Licensor
+
+The Licensor shall ensure that
+ - the Licensor has the right to grant rights to the dataset(s) in accordance
+ with this licence.
+
+The data has been licensed "as is" and the Licensor
+ - shall not be held responsible for any errors or omissions in the data,
+ disclaims any warranty for the validity or up to date status of the data and
+ shall be free from liability for direct or consequential damages arising
+ from the use of data provided by the Licensor,
+ - and is not obligated to ensure the continuous availability of the data, nor
+ to announce in advance the interruption or cessation of availability, and
+ the Licensor shall be free from liability for direct or consequential
+ damages arising from any such interruption or cessation.
+
+3. Jurisdiction
+
+Finnish law shall apply to this licence.
+
+4. Changes to this licence
+
+The Licensor may at any time change the terms of the licence or apply a
+different licence to the data. The terms of this licence shall, however, still
+apply to such data that has been received prior to the change of the terms of
+the licence or the licence itself.
diff --git a/examples/datavisualization/graphgallery/data/maptexture.jpg b/examples/datavisualization/graphgallery/data/maptexture.jpg
new file mode 100644
index 000000000..ae5d66ebe
--- /dev/null
+++ b/examples/datavisualization/graphgallery/data/maptexture.jpg
Binary files differ
diff --git a/examples/datavisualization/graphgallery/data/oilrig.obj b/examples/datavisualization/graphgallery/data/oilrig.obj
new file mode 100644
index 000000000..c3b6ea570
--- /dev/null
+++ b/examples/datavisualization/graphgallery/data/oilrig.obj
@@ -0,0 +1,2322 @@
+# Blender v2.66 (sub 0) OBJ File: 'oilrig.blend'
+# www.blender.org
+v 0.057462 2.272318 -1.170324
+v 0.057461 8.181165 -0.128434
+v 0.055540 2.268930 -1.151111
+v 0.055539 8.177776 -0.109221
+v 0.049849 2.265673 -1.132637
+v 0.049849 8.174520 -0.090747
+v 0.040608 2.262671 -1.115611
+v 0.040608 8.171517 -0.073721
+v 0.028172 2.260039 -1.100687
+v 0.028172 8.168886 -0.058798
+v 0.013019 2.257880 -1.088440
+v 0.013018 8.166726 -0.046550
+v -0.004270 2.256275 -1.079339
+v -0.004271 8.165121 -0.037450
+v -0.023029 2.255287 -1.073735
+v -0.023030 8.164133 -0.031846
+v -0.042539 2.254953 -1.071843
+v -0.042539 8.163799 -0.029953
+v -0.062048 2.255287 -1.073735
+v -0.062048 8.164133 -0.031846
+v -0.080807 2.256275 -1.079339
+v -0.080808 8.165121 -0.037450
+v -0.098096 2.257880 -1.088440
+v -0.098096 8.166726 -0.046550
+v -0.113249 2.260039 -1.100687
+v -0.113250 8.168886 -0.058798
+v -0.125685 2.262671 -1.115611
+v -0.125686 8.171517 -0.073721
+v -0.134926 2.265673 -1.132637
+v -0.134927 8.174520 -0.090747
+v -0.140617 2.268930 -1.151111
+v -0.140618 8.177776 -0.109222
+v -0.142538 2.272318 -1.170324
+v -0.142539 8.181165 -0.128434
+v -0.140617 2.275706 -1.189536
+v -0.140618 8.184552 -0.147647
+v -0.134926 2.278963 -1.208011
+v -0.134927 8.187810 -0.166121
+v -0.125685 2.281965 -1.225037
+v -0.125686 8.190812 -0.183147
+v -0.113249 2.284597 -1.239960
+v -0.113250 8.193443 -0.198071
+v -0.098095 2.286757 -1.252208
+v -0.098096 8.195602 -0.210318
+v -0.080807 2.288361 -1.261308
+v -0.080807 8.197207 -0.219419
+v -0.062047 2.289349 -1.266912
+v -0.062048 8.198195 -0.225023
+v -0.042538 2.289683 -1.268804
+v -0.042539 8.198529 -0.226915
+v -0.023029 2.289349 -1.266912
+v -0.023030 8.198195 -0.225023
+v -0.004270 2.288361 -1.261308
+v -0.004271 8.197207 -0.219418
+v 0.013019 2.286757 -1.252207
+v 0.013018 8.195602 -0.210318
+v 0.028172 2.284597 -1.239960
+v 0.028172 8.193443 -0.198070
+v 0.040609 2.281965 -1.225036
+v 0.040608 8.190812 -0.183147
+v 0.049850 2.278963 -1.208010
+v 0.049849 8.187810 -0.166121
+v 0.055540 2.275706 -1.189536
+v 0.055539 8.184552 -0.147646
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.961940 0.308658
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.990393 0.597545
+vt 0.915735 0.222215
+vt 0.961940 0.691342
+vt 0.853553 0.146447
+vt 0.915735 0.777785
+vt 0.777785 0.084265
+vt 0.853553 0.853553
+vt 0.691342 0.038060
+vt 0.777785 0.915735
+vt 0.597545 0.009607
+vt 0.691342 0.961940
+vt 0.000000 0.500000
+vt 0.038060 0.308659
+vt 0.009607 0.402455
+vt 0.038060 0.691342
+vt 0.009607 0.597546
+vt 0.500000 0.000000
+vt 0.402455 0.009607
+vt 0.308658 0.038060
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.308659 0.961940
+vt 0.222215 0.915735
+vt 0.084265 0.222215
+vt 0.146447 0.853554
+vt 0.084266 0.777786
+vn 0.995185 -0.017020 0.096528
+vn 0.956940 -0.050408 0.285877
+vn 0.881921 -0.081857 0.464235
+vn 0.773009 -0.110162 0.624758
+vn 0.634397 -0.134231 0.761264
+vn 0.471397 -0.153144 0.868523
+vn 0.290285 -0.166171 0.942402
+vn 0.098018 -0.172812 0.980066
+vn -0.098022 -0.172812 0.980065
+vn -0.290285 -0.166171 0.942402
+vn -0.471392 -0.153145 0.868526
+vn -0.634399 -0.134231 0.761262
+vn -0.773009 -0.110162 0.624757
+vn -0.881923 -0.081857 0.464231
+vn -0.956941 -0.050407 0.285873
+vn -0.995185 -0.017021 0.096528
+vn -0.995185 0.017021 -0.096529
+vn -0.956940 0.050407 -0.285875
+vn -0.881920 0.081858 -0.464238
+vn -0.773015 0.110160 -0.624751
+vn -0.634391 0.134232 -0.761268
+vn -0.471394 0.153144 -0.868524
+vn -0.290288 0.166171 -0.942401
+vn -0.098006 0.172812 -0.980067
+vn 0.098019 0.172812 -0.980065
+vn 0.290285 0.166171 -0.942402
+vn 0.471401 0.153144 -0.868521
+vn 0.634393 0.134232 -0.761267
+vn 0.773011 0.110161 -0.624755
+vn 0.881922 0.081857 -0.464233
+vn -0.000000 0.984796 0.173713
+vn 0.995185 0.017020 -0.096527
+vn 0.956941 0.050407 -0.285872
+vn -0.000011 -0.984808 -0.173648
+vn 0.995185 -0.017020 0.096529
+vn 0.956940 -0.050407 0.285875
+vn 0.881920 -0.081858 0.464237
+vn 0.773011 -0.110161 0.624755
+vn 0.634396 -0.134231 0.761265
+vn 0.471389 -0.153145 0.868527
+vn 0.290287 -0.166171 0.942402
+vn 0.098019 -0.172812 0.980065
+vn -0.098021 -0.172812 0.980065
+vn -0.290282 -0.166171 0.942403
+vn -0.471402 -0.153144 0.868520
+vn -0.634395 -0.134232 0.761265
+vn -0.773010 -0.110161 0.624756
+vn -0.881922 -0.081857 0.464234
+vn -0.956940 -0.050408 0.285875
+vn -0.995185 -0.017020 0.096527
+vn -0.956940 0.050408 -0.285876
+vn -0.881921 0.081857 -0.464236
+vn -0.773009 0.110162 -0.624757
+vn -0.634391 0.134232 -0.761269
+vn -0.471398 0.153144 -0.868522
+vn -0.290282 0.166171 -0.942403
+vn -0.098016 0.172812 -0.980066
+vn 0.098018 0.172812 -0.980065
+vn 0.290287 0.166171 -0.942402
+vn 0.471399 0.153144 -0.868522
+vn 0.773014 0.110161 -0.624751
+vn 0.881921 0.081857 -0.464236
+vn -0.000000 0.984812 0.173622
+vn -0.000000 0.984812 0.173623
+vn -0.000000 0.984801 0.173685
+vn -0.000000 0.984814 0.173615
+vn -0.000000 0.984810 0.173634
+vn -0.000000 0.984808 0.173649
+vn -0.000000 0.984806 0.173660
+vn -0.000043 0.984788 0.173763
+vn -0.000000 0.984797 0.173710
+vn -0.000000 0.984805 0.173661
+vn -0.000000 0.984810 0.173635
+vn -0.000000 0.984810 0.173637
+vn -0.000000 0.984802 0.173683
+vn -0.000000 0.984814 0.173611
+vn -0.000000 0.984800 0.173689
+vn -0.000000 0.984800 0.173690
+vn -0.000000 0.984801 0.173686
+vn 0.000005 0.984810 0.173637
+vn 0.956941 0.050407 -0.285873
+vn -0.000000 -0.984818 -0.173587
+vn -0.000007 -0.984807 -0.173654
+vn -0.000000 -0.984808 -0.173648
+vn -0.000027 -0.984801 -0.173685
+vn -0.000004 -0.984807 -0.173652
+vn -0.000010 -0.984800 -0.173693
+vn -0.000020 -0.984817 -0.173596
+vn -0.000013 -0.984810 -0.173638
+vn -0.000001 -0.984807 -0.173650
+vn -0.000005 -0.984808 -0.173646
+vn -0.000002 -0.984808 -0.173648
+vn 0.000002 -0.984808 -0.173649
+vn 0.000001 -0.984808 -0.173649
+vn -0.000011 -0.984809 -0.173642
+vn -0.000004 -0.984808 -0.173646
+vn -0.000001 -0.984808 -0.173648
+vn -0.000002 -0.984808 -0.173649
+vn -0.000006 -0.984808 -0.173649
+vn 0.000004 -0.984808 -0.173648
+vn 0.000000 -0.984808 -0.173649
+vn -0.000004 -0.984807 -0.173650
+vn 0.000005 -0.984808 -0.173646
+vn 0.000003 -0.984808 -0.173647
+vn 0.000008 -0.984805 -0.173663
+s off
+f 1/1/1 2/2/1 4/3/1
+f 3/1/2 4/2/2 6/3/2
+f 5/1/3 6/2/3 8/3/3
+f 7/1/4 8/2/4 10/3/4
+f 9/1/5 10/2/5 12/3/5
+f 11/1/6 12/2/6 14/3/6
+f 13/1/7 14/2/7 16/3/7
+f 15/1/8 16/2/8 18/3/8
+f 17/1/9 18/2/9 19/4/9
+f 19/1/10 20/2/10 21/4/10
+f 21/1/11 22/2/11 23/4/11
+f 23/1/12 24/2/12 25/4/12
+f 25/1/13 26/2/13 27/4/13
+f 27/1/14 28/2/14 29/4/14
+f 29/1/15 30/2/15 31/4/15
+f 31/1/16 32/2/16 33/4/16
+f 33/1/17 34/2/17 35/4/17
+f 35/1/18 36/2/18 37/4/18
+f 37/1/19 38/2/19 39/4/19
+f 39/1/20 40/2/20 41/4/20
+f 41/1/21 42/2/21 43/4/21
+f 43/1/22 44/2/22 45/4/22
+f 45/1/23 46/2/23 47/4/23
+f 47/1/24 48/2/24 49/4/24
+f 49/1/25 50/2/25 52/3/25
+f 51/1/26 52/2/26 54/3/26
+f 53/1/27 54/2/27 56/3/27
+f 55/1/28 56/2/28 58/3/28
+f 57/1/29 58/2/29 60/3/29
+f 59/1/30 60/2/30 62/3/30
+f 48/5/31 52/6/31 50/7/31
+f 63/1/32 64/2/32 2/3/32
+f 61/1/33 62/2/33 64/3/33
+f 1/8/34 3/9/34 63/10/34
+f 3/4/35 1/1/35 4/3/35
+f 5/4/36 3/1/36 6/3/36
+f 7/4/37 5/1/37 8/3/37
+f 9/4/38 7/1/38 10/3/38
+f 11/4/39 9/1/39 12/3/39
+f 13/4/40 11/1/40 14/3/40
+f 15/4/41 13/1/41 16/3/41
+f 17/4/42 15/1/42 18/3/42
+f 18/2/43 20/3/43 19/4/43
+f 20/2/44 22/3/44 21/4/44
+f 22/2/45 24/3/45 23/4/45
+f 24/2/46 26/3/46 25/4/46
+f 26/2/47 28/3/47 27/4/47
+f 28/2/48 30/3/48 29/4/48
+f 30/2/49 32/3/49 31/4/49
+f 32/2/50 34/3/50 33/4/50
+f 34/2/17 36/3/17 35/4/17
+f 36/2/51 38/3/51 37/4/51
+f 38/2/52 40/3/52 39/4/52
+f 40/2/53 42/3/53 41/4/53
+f 42/2/54 44/3/54 43/4/54
+f 44/2/55 46/3/55 45/4/55
+f 46/2/56 48/3/56 47/4/56
+f 48/2/57 50/3/57 49/4/57
+f 51/4/58 49/1/58 52/3/58
+f 53/4/59 51/1/59 54/3/59
+f 55/4/60 53/1/60 56/3/60
+f 57/4/28 55/1/28 58/3/28
+f 59/4/61 57/1/61 60/3/61
+f 61/4/62 59/1/62 62/3/62
+f 48/5/63 54/11/63 52/6/63
+f 46/12/64 54/11/64 48/5/64
+f 46/12/65 56/13/65 54/11/65
+f 44/14/65 56/13/65 46/12/65
+f 44/14/66 58/15/66 56/13/66
+f 42/16/66 58/15/66 44/14/66
+f 42/16/67 60/17/67 58/15/67
+f 40/18/67 60/17/67 42/16/67
+f 40/18/68 62/19/68 60/17/68
+f 38/20/68 62/19/68 40/18/68
+f 38/20/69 64/21/69 62/19/69
+f 20/22/70 24/23/70 22/24/70
+f 16/25/71 20/22/71 18/26/71
+f 16/25/72 24/23/72 20/22/72
+f 36/27/69 64/21/69 38/20/69
+f 34/28/73 64/21/73 36/27/73
+f 2/9/74 64/21/74 34/28/74
+f 4/8/75 2/9/75 34/28/75
+f 4/8/75 34/28/75 32/29/75
+f 6/10/76 4/8/76 32/29/76
+f 6/10/76 32/29/76 30/30/76
+f 6/10/68 30/30/68 28/31/68
+f 8/32/68 6/10/68 28/31/68
+f 10/33/73 8/32/73 28/31/73
+f 10/33/67 28/31/67 26/34/67
+f 12/35/77 10/33/77 26/34/77
+f 12/35/78 26/34/78 24/23/78
+f 14/36/79 12/35/79 24/23/79
+f 16/25/80 14/36/80 24/23/80
+f 1/4/32 63/1/32 2/3/32
+f 63/4/81 61/1/81 64/3/81
+f 19/7/82 15/11/82 17/6/82
+f 41/31/83 37/29/83 39/30/83
+f 3/9/84 5/21/84 63/10/84
+f 45/23/85 41/31/85 43/34/85
+f 45/23/86 37/29/86 41/31/86
+f 49/22/87 45/23/87 47/24/87
+f 49/22/84 37/29/84 45/23/84
+f 49/22/84 35/28/84 37/29/84
+f 49/22/84 33/27/84 35/28/84
+f 49/22/84 31/20/84 33/27/84
+f 55/36/88 51/26/88 53/25/88
+f 59/33/89 55/36/89 57/35/89
+f 61/32/90 55/36/90 59/33/90
+f 63/10/91 55/36/91 61/32/91
+f 63/10/92 5/21/92 55/36/92
+f 5/21/93 7/19/93 55/36/93
+f 7/19/94 9/17/94 55/36/94
+f 29/18/95 25/14/95 27/16/95
+f 31/20/96 25/14/96 29/18/96
+f 49/22/97 25/14/97 31/20/97
+f 49/22/98 23/12/98 25/14/98
+f 9/17/93 11/15/93 55/36/93
+f 11/15/99 13/13/99 55/36/99
+f 13/13/100 15/11/100 55/36/100
+f 15/11/101 19/7/101 55/36/101
+f 19/7/102 21/5/102 55/36/102
+f 21/5/103 23/12/103 55/36/103
+f 23/12/104 49/22/104 55/36/104
+f 49/22/105 51/26/105 55/36/105
+v 0.053672 2.252534 1.125439
+v 0.053673 8.161380 0.083549
+v 0.051751 2.255921 1.144652
+v 0.051751 8.164768 0.102762
+v 0.046060 2.259179 1.163126
+v 0.046061 8.168025 0.121236
+v 0.036819 2.262181 1.180152
+v 0.036820 8.171027 0.138262
+v 0.024383 2.264812 1.195075
+v 0.024384 8.173658 0.153186
+v 0.009229 2.266972 1.207323
+v 0.009230 8.175818 0.165433
+v -0.008059 2.268577 1.216423
+v -0.008059 8.177423 0.174534
+v -0.026819 2.269565 1.222028
+v -0.026818 8.178411 0.180138
+v -0.046328 2.269898 1.223920
+v -0.046327 8.178745 0.182030
+v -0.065837 2.269565 1.222027
+v -0.065836 8.178411 0.180138
+v -0.084596 2.268577 1.216423
+v -0.084595 8.177423 0.174534
+v -0.101885 2.266972 1.207323
+v -0.101884 8.175818 0.165433
+v -0.117038 2.264812 1.195075
+v -0.117038 8.173658 0.153186
+v -0.129475 2.262181 1.180152
+v -0.129474 8.171027 0.138262
+v -0.138716 2.259179 1.163126
+v -0.138715 8.168025 0.121236
+v -0.144406 2.255921 1.144651
+v -0.144406 8.164768 0.102762
+v -0.146328 2.252534 1.125439
+v -0.146327 8.161380 0.083549
+v -0.144406 2.249146 1.106226
+v -0.144406 8.157992 0.064337
+v -0.138716 2.245888 1.087752
+v -0.138715 8.154735 0.045862
+v -0.129475 2.242886 1.070726
+v -0.129474 8.151732 0.028836
+v -0.117038 2.240255 1.055802
+v -0.117038 8.149101 0.013913
+v -0.101885 2.238095 1.043555
+v -0.101884 8.146942 0.001666
+v -0.084596 2.236491 1.034454
+v -0.084595 8.145337 -0.007435
+v -0.065837 2.235502 1.028850
+v -0.065836 8.144349 -0.013039
+v -0.046328 2.235169 1.026958
+v -0.046327 8.144015 -0.014931
+v -0.026819 2.235502 1.028850
+v -0.026818 8.144349 -0.013039
+v -0.008059 2.236491 1.034455
+v -0.008059 8.145337 -0.007435
+v 0.009229 2.238095 1.043555
+v 0.009230 8.146942 0.001666
+v 0.024383 2.240255 1.055803
+v 0.024384 8.149101 0.013913
+v 0.036819 2.242886 1.070726
+v 0.036820 8.151732 0.028837
+v 0.046060 2.245888 1.087752
+v 0.046061 8.154735 0.045863
+v 0.051751 2.249146 1.106226
+v 0.051752 8.157992 0.064337
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.308659 0.961940
+vt 0.222215 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 0.990393 0.402455
+vt 1.000000 0.500000
+vt 0.853553 0.146447
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.691342 0.038060
+vt 0.777785 0.084265
+vt 0.597545 0.009607
+vt 0.500000 0.000000
+vt 0.146447 0.853554
+vt 0.084266 0.777786
+vt 0.038060 0.691342
+vt 0.308658 0.038060
+vt 0.402455 0.009607
+vt 0.146446 0.146447
+vt 0.222215 0.084265
+vt 0.084265 0.222215
+vt 0.038060 0.308659
+vt 0.009607 0.402455
+vt 0.009607 0.597546
+vt 0.000000 0.500000
+vn 0.995185 0.017020 0.096528
+vn 0.956940 0.050408 0.285877
+vn 0.881921 0.081857 0.464236
+vn 0.773010 0.110161 0.624756
+vn 0.634396 0.134232 0.761265
+vn 0.471397 0.153144 0.868523
+vn 0.290283 0.166171 0.942403
+vn 0.098018 0.172812 0.980066
+vn -0.098018 0.172812 0.980066
+vn -0.290285 0.166171 0.942402
+vn -0.471398 0.153144 0.868522
+vn -0.634392 0.134232 0.761268
+vn -0.773007 0.110162 0.624759
+vn -0.881923 0.081857 0.464231
+vn -0.956941 0.050407 0.285874
+vn -0.995185 0.017021 0.096528
+vn -0.995185 -0.017021 -0.096529
+vn -0.956940 -0.050408 -0.285877
+vn -0.881921 -0.081857 -0.464236
+vn -0.773008 -0.110162 -0.624758
+vn -0.634391 -0.134232 -0.761269
+vn -0.471388 -0.153145 -0.868528
+vn -0.290288 -0.166171 -0.942401
+vn -0.098006 -0.172812 -0.980067
+vn 0.098021 -0.172812 -0.980065
+vn 0.290285 -0.166171 -0.942402
+vn 0.471402 -0.153144 -0.868520
+vn 0.634392 -0.134232 -0.761267
+vn 0.773010 -0.110161 -0.624755
+vn 0.881922 -0.081857 -0.464233
+vn -0.000356 0.984796 -0.173717
+vn 0.995185 -0.017020 -0.096527
+vn 0.956941 -0.050407 -0.285872
+vn -0.000005 -0.984808 0.173646
+vn 0.995185 0.017020 0.096529
+vn 0.956940 0.050407 0.285875
+vn 0.881920 0.081858 0.464237
+vn 0.773011 0.110161 0.624755
+vn 0.634396 0.134231 0.761264
+vn 0.471389 0.153145 0.868527
+vn 0.290292 0.166171 0.942400
+vn 0.098013 0.172812 0.980066
+vn -0.098019 0.172812 0.980065
+vn -0.290283 0.166171 0.942403
+vn -0.471400 0.153144 0.868521
+vn -0.634396 0.134232 0.761264
+vn -0.773010 0.110161 0.624756
+vn -0.881922 0.081857 0.464234
+vn -0.956940 0.050408 0.285876
+vn -0.995185 0.017020 0.096526
+vn -0.995185 -0.017021 -0.096530
+vn -0.956940 -0.050407 -0.285875
+vn -0.773009 -0.110161 -0.624757
+vn -0.634390 -0.134232 -0.761269
+vn -0.471399 -0.153144 -0.868522
+vn -0.290282 -0.166171 -0.942403
+vn -0.098018 -0.172812 -0.980066
+vn 0.098018 -0.172812 -0.980065
+vn 0.290287 -0.166171 -0.942402
+vn 0.471399 -0.153144 -0.868522
+vn 0.634393 -0.134232 -0.761267
+vn 0.773014 -0.110161 -0.624751
+vn 0.881921 -0.081857 -0.464236
+vn -0.000114 0.984812 -0.173626
+vn -0.000002 0.984808 -0.173648
+vn -0.000054 0.984802 -0.173678
+vn -0.000008 0.984808 -0.173648
+vn -0.000004 0.984808 -0.173647
+vn -0.000107 0.984836 -0.173487
+vn -0.000015 0.984812 -0.173622
+vn -0.000013 0.984820 -0.173580
+vn -0.000001 0.984809 -0.173639
+vn -0.000044 0.984787 -0.173766
+vn -0.000047 0.984804 -0.173672
+vn -0.000051 0.984803 -0.173676
+vn -0.000050 0.984803 -0.173675
+vn -0.000006 0.984799 -0.173697
+vn -0.000037 0.984791 -0.173743
+vn -0.000244 0.984806 -0.173659
+vn -0.000025 0.984806 -0.173659
+vn -0.000168 0.984823 -0.173560
+vn -0.000013 0.984812 -0.173624
+vn -0.000088 0.984819 -0.173584
+vn -0.000036 0.984813 -0.173618
+vn 0.000016 0.984808 -0.173645
+vn 0.000005 0.984808 -0.173650
+vn 0.000006 0.984807 -0.173650
+vn 0.000005 0.984808 -0.173649
+vn 0.000002 0.984808 -0.173648
+vn 0.000003 0.984807 -0.173650
+vn 0.000005 0.984804 -0.173667
+vn 0.956941 -0.050407 -0.285873
+vn -0.000005 -0.984808 0.173649
+vn -0.000001 -0.984818 0.173592
+vn -0.000000 -0.984808 0.173648
+vn -0.000006 -0.984808 0.173646
+vn -0.000001 -0.984808 0.173648
+vn -0.000002 -0.984808 0.173648
+vn -0.000001 -0.984806 0.173661
+vn -0.000000 -0.984805 0.173663
+vn -0.000000 -0.984810 0.173635
+vn -0.000000 -0.984810 0.173634
+vn -0.000000 -0.984807 0.173653
+vn -0.000000 -0.984807 0.173650
+vn -0.000000 -0.984808 0.173647
+vn 0.000000 -0.984807 0.173651
+vn -0.000000 -0.984807 0.173649
+vn -0.000000 -0.984810 0.173637
+vn 0.000000 -0.984806 0.173659
+vn -0.000001 -0.984805 0.173664
+s off
+f 65/37/106 66/38/106 68/39/106
+f 67/37/107 68/38/107 70/39/107
+f 69/37/108 70/38/108 72/39/108
+f 71/37/109 72/38/109 74/39/109
+f 73/37/110 74/38/110 76/39/110
+f 75/37/111 76/38/111 78/39/111
+f 77/37/112 78/38/112 80/39/112
+f 79/37/113 80/38/113 82/39/113
+f 81/37/114 82/38/114 83/40/114
+f 83/37/115 84/38/115 85/40/115
+f 85/37/116 86/38/116 87/40/116
+f 87/37/117 88/38/117 89/40/117
+f 89/37/118 90/38/118 91/40/118
+f 91/37/119 92/38/119 93/40/119
+f 93/37/120 94/38/120 95/40/120
+f 95/37/121 96/38/121 97/40/121
+f 97/37/122 98/38/122 99/40/122
+f 99/37/123 100/38/123 101/40/123
+f 101/37/124 102/38/124 103/40/124
+f 103/37/125 104/38/125 105/40/125
+f 105/37/126 106/38/126 107/40/126
+f 107/37/127 108/38/127 109/40/127
+f 109/37/128 110/38/128 111/40/128
+f 111/37/129 112/38/129 113/40/129
+f 113/37/130 114/38/130 116/39/130
+f 115/37/131 116/38/131 118/39/131
+f 117/37/132 118/38/132 120/39/132
+f 119/37/133 120/38/133 122/39/133
+f 121/37/134 122/38/134 124/39/134
+f 123/37/135 124/38/135 126/39/135
+f 68/41/136 66/42/136 70/43/136
+f 127/37/137 128/38/137 66/39/137
+f 125/37/138 126/38/138 128/39/138
+f 65/41/139 67/42/139 69/44/139
+f 67/40/140 65/37/140 68/39/140
+f 69/40/141 67/37/141 70/39/141
+f 71/40/142 69/37/142 72/39/142
+f 73/40/143 71/37/143 74/39/143
+f 75/40/144 73/37/144 76/39/144
+f 77/40/145 75/37/145 78/39/145
+f 79/40/146 77/37/146 80/39/146
+f 81/40/147 79/37/147 82/39/147
+f 82/38/148 84/39/148 83/40/148
+f 84/38/149 86/39/149 85/40/149
+f 86/38/150 88/39/150 87/40/150
+f 88/38/151 90/39/151 89/40/151
+f 90/38/152 92/39/152 91/40/152
+f 92/38/153 94/39/153 93/40/153
+f 94/38/154 96/39/154 95/40/154
+f 96/38/155 98/39/155 97/40/155
+f 98/38/156 100/39/156 99/40/156
+f 100/38/157 102/39/157 101/40/157
+f 102/38/124 104/39/124 103/40/124
+f 104/38/158 106/39/158 105/40/158
+f 106/38/159 108/39/159 107/40/159
+f 108/38/160 110/39/160 109/40/160
+f 110/38/161 112/39/161 111/40/161
+f 112/38/162 114/39/162 113/40/162
+f 115/40/163 113/37/163 116/39/163
+f 117/40/164 115/37/164 118/39/164
+f 119/40/165 117/37/165 120/39/165
+f 121/40/166 119/37/166 122/39/166
+f 123/40/167 121/37/167 124/39/167
+f 125/40/168 123/37/168 126/39/168
+f 66/42/169 128/44/169 126/45/169
+f 70/43/170 66/42/170 126/45/170
+f 72/46/171 70/43/171 74/47/171
+f 70/43/172 126/45/172 74/47/172
+f 126/45/173 124/48/173 74/47/173
+f 122/49/174 120/50/174 118/51/174
+f 124/48/175 122/49/175 118/51/175
+f 114/52/176 118/51/176 116/53/176
+f 124/48/177 118/51/177 114/52/177
+f 108/54/178 112/55/178 110/56/178
+f 104/57/179 108/54/179 106/58/179
+f 102/59/180 108/54/180 104/57/180
+f 100/60/181 108/54/181 102/59/181
+f 76/61/182 74/47/182 78/62/182
+f 78/62/183 74/47/183 80/63/183
+f 96/64/184 100/60/184 98/65/184
+f 96/64/185 108/54/185 100/60/185
+f 92/66/186 96/64/186 94/67/186
+f 90/68/187 96/64/187 92/66/187
+f 88/69/188 96/64/188 90/68/188
+f 86/70/189 96/64/189 88/69/189
+f 82/71/176 86/70/176 84/72/176
+f 74/47/190 124/48/190 80/63/190
+f 124/48/191 114/52/191 80/63/191
+f 114/52/192 112/55/192 80/63/192
+f 112/55/193 108/54/193 80/63/193
+f 108/54/194 96/64/194 80/63/194
+f 96/64/195 86/70/195 80/63/195
+f 86/70/196 82/71/196 80/63/196
+f 65/40/137 127/37/137 66/39/137
+f 127/40/197 125/37/197 128/39/197
+f 127/43/198 65/41/198 125/46/198
+f 83/52/199 79/51/199 81/53/199
+f 97/60/200 93/57/200 95/59/200
+f 99/65/200 93/57/200 97/60/200
+f 103/67/201 99/65/201 101/64/201
+f 103/67/202 93/57/202 99/65/202
+f 105/66/203 93/57/203 103/67/203
+f 115/71/199 111/70/199 113/72/199
+f 115/71/204 109/69/204 111/70/204
+f 117/63/205 109/69/205 115/71/205
+f 117/63/206 107/68/206 109/69/206
+f 119/62/207 107/68/207 117/63/207
+f 119/62/208 105/66/208 107/68/208
+f 121/61/208 105/66/208 119/62/208
+f 123/47/200 105/66/200 121/61/200
+f 125/46/209 105/66/209 123/47/209
+f 125/46/200 65/41/200 105/66/200
+f 105/66/200 65/41/200 93/57/200
+f 65/41/210 69/44/210 93/57/210
+f 69/44/209 71/45/209 93/57/209
+f 93/57/200 71/45/200 91/58/200
+f 91/58/211 71/45/211 89/54/211
+f 71/45/212 73/48/212 89/54/212
+f 73/48/211 75/49/211 89/54/211
+f 89/54/208 75/49/208 87/56/208
+f 75/49/213 77/50/213 87/56/213
+f 87/56/207 77/50/207 85/55/207
+f 77/50/214 79/51/214 85/55/214
+f 79/51/215 83/52/215 85/55/215
+v 1.116865 2.257815 -0.125221
+v 0.074976 8.166661 -0.125221
+v 1.136078 2.261203 -0.123300
+v 0.094188 8.170050 -0.123300
+v 1.154552 2.264460 -0.117609
+v 0.112663 8.173306 -0.117609
+v 1.171578 2.267462 -0.108368
+v 0.129689 8.176309 -0.108368
+v 1.186502 2.270094 -0.095932
+v 0.144612 8.178940 -0.095932
+v 1.198749 2.272254 -0.080778
+v 0.156859 8.181100 -0.080778
+v 1.207850 2.273858 -0.063490
+v 0.165960 8.182705 -0.063490
+v 1.213454 2.274846 -0.044730
+v 0.171564 8.183693 -0.044730
+v 1.215346 2.275180 -0.025221
+v 0.173456 8.184027 -0.025221
+v 1.213454 2.274846 -0.005712
+v 0.171564 8.183693 -0.005712
+v 1.207850 2.273858 0.013047
+v 0.165960 8.182705 0.013047
+v 1.198749 2.272254 0.030336
+v 0.156859 8.181100 0.030336
+v 1.186502 2.270094 0.045489
+v 0.144612 8.178940 0.045489
+v 1.171578 2.267462 0.057926
+v 0.129689 8.176309 0.057926
+v 1.154552 2.264460 0.067167
+v 0.112663 8.173306 0.067167
+v 1.136078 2.261203 0.072857
+v 0.094188 8.170050 0.072857
+v 1.116865 2.257815 0.074779
+v 0.074976 8.166661 0.074779
+v 1.097653 2.254427 0.072857
+v 0.055763 8.163274 0.072857
+v 1.079178 2.251170 0.067167
+v 0.037289 8.160016 0.067167
+v 1.062152 2.248168 0.057926
+v 0.020263 8.157014 0.057926
+v 1.047229 2.245536 0.045489
+v 0.005339 8.154383 0.045489
+v 1.034981 2.243377 0.030336
+v -0.006908 8.152224 0.030336
+v 1.025881 2.241772 0.013047
+v -0.016009 8.150619 0.013047
+v 1.020277 2.240784 -0.005712
+v -0.021613 8.149631 -0.005712
+v 1.018384 2.240450 -0.025221
+v -0.023505 8.149297 -0.025221
+v 1.020277 2.240784 -0.044730
+v -0.021613 8.149631 -0.044730
+v 1.025881 2.241772 -0.063490
+v -0.016009 8.150619 -0.063490
+v 1.034981 2.243377 -0.080778
+v -0.006908 8.152224 -0.080778
+v 1.047229 2.245536 -0.095932
+v 0.005339 8.154383 -0.095932
+v 1.062152 2.248168 -0.108368
+v 0.020263 8.157014 -0.108368
+v 1.079178 2.251170 -0.117609
+v 0.037289 8.160016 -0.117609
+v 1.097653 2.254427 -0.123300
+v 0.055763 8.163274 -0.123300
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.853553 0.146447
+vt 0.777785 0.084265
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.500000 0.000000
+vt 0.000000 0.500000
+vt 0.038060 0.308659
+vt 0.009607 0.402455
+vt 0.146447 0.853554
+vt 0.038060 0.691342
+vt 0.084266 0.777786
+vt 0.308659 0.961940
+vt 0.222215 0.915735
+vt 0.402455 0.009607
+vt 0.308658 0.038060
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.009607 0.597546
+vt 0.084265 0.222215
+vn 0.096528 0.017020 -0.995185
+vn 0.285876 0.050408 -0.956940
+vn 0.464235 0.081857 -0.881921
+vn 0.624757 0.110162 -0.773009
+vn 0.761264 0.134232 -0.634396
+vn 0.868521 0.153144 -0.471400
+vn 0.942403 0.166171 -0.290283
+vn 0.980066 0.172812 -0.098018
+vn 0.980066 0.172812 0.098018
+vn 0.942403 0.166171 0.290283
+vn 0.868521 0.153144 0.471399
+vn 0.761264 0.134232 0.634396
+vn 0.624757 0.110162 0.773009
+vn 0.464235 0.081857 0.881921
+vn 0.285876 0.050408 0.956940
+vn 0.096527 0.017020 0.995185
+vn -0.096528 -0.017021 0.995185
+vn -0.285875 -0.050407 0.956940
+vn -0.464235 -0.081857 0.881921
+vn -0.624754 -0.110161 0.773012
+vn -0.761268 -0.134232 0.634391
+vn -0.868524 -0.153144 0.471394
+vn -0.942401 -0.166171 0.290288
+vn -0.980066 -0.172812 0.098010
+vn -0.980065 -0.172812 -0.098018
+vn -0.942402 -0.166171 -0.290285
+vn -0.868521 -0.153144 -0.471401
+vn -0.761266 -0.134232 -0.634394
+vn -0.624751 -0.110161 -0.773014
+vn -0.464236 -0.081857 -0.881921
+vn -0.173717 0.984796 0.000356
+vn -0.096527 -0.017020 -0.995185
+vn -0.285873 -0.050407 -0.956941
+vn 0.173648 -0.984808 -0.000011
+vn 0.285874 0.050407 -0.956940
+vn 0.464237 0.081858 -0.881920
+vn 0.624752 0.110161 -0.773013
+vn 0.761267 0.134232 -0.634393
+vn 0.868524 0.153144 -0.471394
+vn 0.942402 0.166171 -0.290287
+vn 0.980065 0.172812 -0.098019
+vn 0.980065 0.172812 0.098019
+vn 0.942402 0.166171 0.290287
+vn 0.868524 0.153144 0.471394
+vn 0.761267 0.134232 0.634393
+vn 0.624752 0.110161 0.773013
+vn 0.464237 0.081858 0.881920
+vn 0.285874 0.050407 0.956940
+vn -0.096529 -0.017021 0.995185
+vn -0.285874 -0.050407 0.956940
+vn -0.624758 -0.110162 0.773008
+vn -0.761268 -0.134232 0.634392
+vn -0.868523 -0.153144 0.471397
+vn -0.942402 -0.166171 0.290284
+vn -0.980066 -0.172812 0.098018
+vn -0.980065 -0.172812 -0.098021
+vn -0.868521 -0.153144 -0.471400
+vn -0.761267 -0.134232 -0.634392
+vn -0.624756 -0.110161 -0.773010
+vn -0.464234 -0.081857 -0.881922
+vn -0.173640 0.984809 -0.000036
+vn -0.173648 0.984808 0.000040
+vn -0.173648 0.984808 0.000002
+vn -0.173650 0.984807 -0.000020
+vn -0.173652 0.984807 -0.000031
+vn -0.173635 0.984810 0.000027
+vn -0.173649 0.984808 -0.000009
+vn -0.173641 0.984809 0.000007
+vn -0.173650 0.984807 -0.000006
+vn -0.173640 0.984809 0.000006
+vn -0.173660 0.984806 -0.000014
+vn -0.173675 0.984803 0.000050
+vn -0.173675 0.984803 0.000049
+vn -0.173767 0.984787 -0.000044
+vn -0.173767 0.984787 0.000044
+vn -0.173642 0.984809 0.000000
+vn -0.173677 0.984803 0.000052
+vn -0.173717 0.984796 -0.000357
+vn -0.173646 0.984808 0.000005
+vn -0.173645 0.984808 0.000007
+vn -0.173703 0.984798 -0.000011
+vn -0.173684 0.984802 -0.000003
+vn -0.173667 0.984805 0.000002
+vn -0.173671 0.984804 -0.000015
+vn -0.173656 0.984806 -0.000026
+vn -0.173637 0.984810 0.000008
+vn -0.173643 0.984809 0.000005
+vn -0.096528 -0.017020 -0.995185
+vn -0.285872 -0.050407 -0.956941
+vn 0.173648 -0.984808 -0.000000
+vn 0.173647 -0.984808 0.000006
+vn 0.173647 -0.984808 0.000005
+vn 0.173652 -0.984807 -0.000009
+vn 0.173645 -0.984808 0.000005
+vn 0.173653 -0.984807 -0.000007
+vn 0.173643 -0.984809 0.000006
+vn 0.173652 -0.984807 -0.000003
+vn 0.173643 -0.984809 0.000004
+vn 0.173651 -0.984807 -0.000002
+vn 0.173650 -0.984807 -0.000001
+vn 0.173647 -0.984808 0.000000
+vn 0.173649 -0.984808 0.000000
+vn 0.173652 -0.984807 0.000001
+vn 0.173642 -0.984809 -0.000003
+vn 0.173653 -0.984807 0.000003
+vn 0.173642 -0.984809 -0.000004
+vn 0.173655 -0.984806 0.000007
+vn 0.173641 -0.984809 -0.000008
+vn 0.173658 -0.984806 0.000013
+vn 0.173645 -0.984808 -0.000007
+vn 0.173654 -0.984807 0.000007
+vn 0.173646 -0.984808 -0.000004
+s off
+f 129/73/216 130/74/216 132/75/216
+f 131/73/217 132/74/217 134/75/217
+f 133/73/218 134/74/218 136/75/218
+f 135/73/219 136/74/219 138/75/219
+f 137/73/220 138/74/220 140/75/220
+f 139/73/221 140/74/221 142/75/221
+f 141/73/222 142/74/222 144/75/222
+f 143/73/223 144/74/223 146/75/223
+f 145/73/224 146/74/224 148/75/224
+f 147/73/225 148/74/225 150/75/225
+f 149/73/226 150/74/226 152/75/226
+f 151/73/227 152/74/227 154/75/227
+f 153/73/228 154/74/228 156/75/228
+f 155/73/229 156/74/229 158/75/229
+f 157/73/230 158/74/230 160/75/230
+f 159/73/231 160/74/231 162/75/231
+f 161/73/232 162/74/232 163/76/232
+f 163/73/233 164/74/233 165/76/233
+f 165/73/234 166/74/234 167/76/234
+f 167/73/235 168/74/235 169/76/235
+f 169/73/236 170/74/236 171/76/236
+f 171/73/237 172/74/237 173/76/237
+f 173/73/238 174/74/238 175/76/238
+f 175/73/239 176/74/239 177/76/239
+f 177/73/240 178/74/240 179/76/240
+f 179/73/241 180/74/241 181/76/241
+f 181/73/242 182/74/242 183/76/242
+f 183/73/243 184/74/243 185/76/243
+f 185/73/244 186/74/244 187/76/244
+f 187/73/245 188/74/245 189/76/245
+f 132/77/246 130/78/246 134/79/246
+f 191/73/247 192/74/247 129/76/247
+f 189/73/248 190/74/248 191/76/248
+f 129/77/249 131/78/249 191/79/249
+f 131/76/216 129/73/216 132/75/216
+f 133/76/250 131/73/250 134/75/250
+f 135/76/251 133/73/251 136/75/251
+f 137/76/252 135/73/252 138/75/252
+f 139/76/253 137/73/253 140/75/253
+f 141/76/254 139/73/254 142/75/254
+f 143/76/255 141/73/255 144/75/255
+f 145/76/256 143/73/256 146/75/256
+f 147/76/257 145/73/257 148/75/257
+f 149/76/258 147/73/258 150/75/258
+f 151/76/259 149/73/259 152/75/259
+f 153/76/260 151/73/260 154/75/260
+f 155/76/261 153/73/261 156/75/261
+f 157/76/262 155/73/262 158/75/262
+f 159/76/263 157/73/263 160/75/263
+f 161/76/231 159/73/231 162/75/231
+f 162/74/264 164/75/264 163/76/264
+f 164/74/265 166/75/265 165/76/265
+f 166/74/234 168/75/234 167/76/234
+f 168/74/266 170/75/266 169/76/266
+f 170/74/267 172/75/267 171/76/267
+f 172/74/268 174/75/268 173/76/268
+f 174/74/269 176/75/269 175/76/269
+f 176/74/270 178/75/270 177/76/270
+f 178/74/271 180/75/271 179/76/271
+f 180/74/241 182/75/241 181/76/241
+f 182/74/272 184/75/272 183/76/272
+f 184/74/273 186/75/273 185/76/273
+f 186/74/274 188/75/274 187/76/274
+f 188/74/275 190/75/275 189/76/275
+f 130/78/276 192/80/276 134/79/276
+f 192/80/277 190/81/277 134/79/277
+f 190/81/278 188/82/278 134/79/278
+f 188/82/279 186/83/279 134/79/279
+f 186/83/280 184/84/280 134/79/280
+f 184/84/281 182/85/281 134/79/281
+f 182/85/282 180/86/282 134/79/282
+f 180/86/283 178/87/283 134/79/283
+f 178/87/284 176/88/284 134/79/284
+f 176/88/285 174/89/285 134/79/285
+f 174/89/286 172/90/286 134/79/286
+f 170/91/287 168/92/287 166/93/287
+f 170/91/288 166/93/288 164/94/288
+f 148/95/289 152/96/289 150/97/289
+f 140/98/290 144/99/290 142/100/290
+f 172/90/287 170/91/287 164/94/287
+f 134/79/291 172/90/291 164/94/291
+f 136/101/292 134/79/292 138/102/292
+f 134/79/291 164/94/291 138/102/291
+f 162/103/293 160/104/293 158/105/293
+f 162/103/294 158/105/294 156/106/294
+f 146/107/295 152/96/295 148/95/295
+f 146/107/296 154/108/296 152/96/296
+f 144/99/297 154/108/297 146/107/297
+f 140/98/298 154/108/298 144/99/298
+f 138/102/299 164/94/299 140/98/299
+f 162/103/300 156/106/300 154/108/300
+f 164/94/301 162/103/301 140/98/301
+f 162/103/302 154/108/302 140/98/302
+f 192/74/303 130/75/303 129/76/303
+f 190/74/304 192/75/304 191/76/304
+f 131/78/305 133/80/305 191/79/305
+f 133/80/306 135/81/306 191/79/306
+f 135/81/305 137/82/305 191/79/305
+f 137/82/307 139/83/307 191/79/307
+f 139/83/308 141/84/308 191/79/308
+f 141/84/309 143/85/309 191/79/309
+f 143/85/310 145/86/310 191/79/310
+f 145/86/311 147/87/311 191/79/311
+f 147/87/312 149/88/312 191/79/312
+f 149/88/313 151/89/313 191/79/313
+f 151/89/314 153/90/314 191/79/314
+f 153/90/305 155/91/305 191/79/305
+f 155/91/315 157/92/315 191/79/315
+f 157/92/305 159/93/305 191/79/305
+f 159/93/316 161/94/316 191/79/316
+f 161/94/305 163/103/305 191/79/305
+f 163/103/305 165/104/305 191/79/305
+f 165/104/317 167/105/317 191/79/317
+f 167/105/317 169/106/317 191/79/317
+f 169/106/318 171/108/318 191/79/318
+f 171/108/319 173/96/319 191/79/319
+f 173/96/320 175/97/320 191/79/320
+f 175/97/321 177/95/321 191/79/321
+f 177/95/322 179/107/322 191/79/322
+f 179/107/323 181/99/323 191/79/323
+f 181/99/324 183/100/324 191/79/324
+f 183/100/325 185/98/325 191/79/325
+f 185/98/326 187/102/326 189/101/326
+f 191/79/327 185/98/327 189/101/327
+v -1.178897 2.277600 -0.129009
+v -0.137008 8.186446 -0.129009
+v -1.159685 2.274212 -0.127088
+v -0.117795 8.183058 -0.127088
+v -1.141210 2.270954 -0.121397
+v -0.099321 8.179801 -0.121397
+v -1.124184 2.267952 -0.112156
+v -0.082295 8.176799 -0.112156
+v -1.109261 2.265321 -0.099720
+v -0.067371 8.174168 -0.099720
+v -1.097013 2.263161 -0.084566
+v -0.055124 8.172008 -0.084566
+v -1.087913 2.261557 -0.067277
+v -0.046023 8.170403 -0.067277
+v -1.082309 2.260568 -0.048518
+v -0.040419 8.169415 -0.048518
+v -1.080417 2.260235 -0.029009
+v -0.038527 8.169081 -0.029009
+v -1.082309 2.260568 -0.009500
+v -0.040419 8.169415 -0.009500
+v -1.087913 2.261557 0.009259
+v -0.046023 8.170403 0.009259
+v -1.097013 2.263161 0.026548
+v -0.055124 8.172008 0.026548
+v -1.109261 2.265321 0.041702
+v -0.067371 8.174168 0.041702
+v -1.124184 2.267952 0.054138
+v -0.082295 8.176799 0.054138
+v -1.141210 2.270954 0.063379
+v -0.099321 8.179801 0.063379
+v -1.159685 2.274212 0.069069
+v -0.117795 8.183058 0.069069
+v -1.178897 2.277600 0.070991
+v -0.137008 8.186446 0.070991
+v -1.198110 2.280987 0.069069
+v -0.156220 8.189834 0.069069
+v -1.216584 2.284245 0.063379
+v -0.174695 8.193091 0.063379
+v -1.233610 2.287247 0.054138
+v -0.191721 8.196094 0.054138
+v -1.248534 2.289878 0.041702
+v -0.206644 8.198725 0.041702
+v -1.260781 2.292038 0.026548
+v -0.218892 8.200884 0.026548
+v -1.269882 2.293643 0.009259
+v -0.227992 8.202489 0.009259
+v -1.275486 2.294631 -0.009500
+v -0.233596 8.203477 -0.009500
+v -1.277378 2.294964 -0.029009
+v -0.235489 8.203811 -0.029009
+v -1.275486 2.294631 -0.048518
+v -0.233596 8.203477 -0.048518
+v -1.269882 2.293643 -0.067278
+v -0.227992 8.202489 -0.067278
+v -1.260781 2.292038 -0.084566
+v -0.218892 8.200884 -0.084566
+v -1.248534 2.289878 -0.099720
+v -0.206644 8.198725 -0.099720
+v -1.233610 2.287247 -0.112156
+v -0.191721 8.196094 -0.112156
+v -1.216584 2.284245 -0.121397
+v -0.174695 8.193091 -0.121397
+v -1.198110 2.280987 -0.127088
+v -0.156220 8.189834 -0.127088
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.853553 0.146447
+vt 0.777785 0.084265
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.500000 0.000000
+vt 0.402455 0.009607
+vt 0.308658 0.038060
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.084265 0.222215
+vt 0.038060 0.308659
+vt 0.009607 0.402455
+vt 0.000000 0.500000
+vt 0.009607 0.597546
+vt 0.038060 0.691342
+vt 0.084266 0.777786
+vt 0.146447 0.853554
+vt 0.222215 0.915735
+vt 0.308659 0.961940
+vn 0.096528 -0.017020 -0.995185
+vn 0.285876 -0.050408 -0.956940
+vn 0.464236 -0.081857 -0.881921
+vn 0.624756 -0.110161 -0.773010
+vn 0.761265 -0.134232 -0.634395
+vn 0.868521 -0.153144 -0.471400
+vn 0.942403 -0.166171 -0.290282
+vn 0.980065 -0.172812 -0.098021
+vn 0.980066 -0.172812 0.098018
+vn 0.942402 -0.166171 0.290285
+vn 0.868522 -0.153144 0.471399
+vn 0.761265 -0.134232 0.634395
+vn 0.624756 -0.110161 0.773010
+vn 0.464235 -0.081857 0.881922
+vn 0.285876 -0.050408 0.956940
+vn 0.096527 -0.017020 0.995185
+vn -0.096528 0.017020 0.995185
+vn -0.285876 0.050408 0.956940
+vn -0.464234 0.081857 0.881922
+vn -0.624758 0.110162 0.773008
+vn -0.761264 0.134231 0.634396
+vn -0.868524 0.153144 0.471394
+vn -0.942401 0.166171 0.290288
+vn -0.980066 0.172812 0.098014
+vn -0.980066 0.172812 -0.098014
+vn -0.942403 0.166171 -0.290281
+vn -0.868522 0.153144 -0.471398
+vn -0.761268 0.134232 -0.634392
+vn -0.624751 0.110161 -0.773014
+vn -0.464236 0.081857 -0.881921
+vn 0.173717 0.984795 -0.000357
+vn -0.096527 0.017020 -0.995185
+vn -0.285874 0.050407 -0.956940
+vn -0.173648 -0.984808 0.000011
+vn 0.285874 -0.050407 -0.956940
+vn 0.464237 -0.081858 -0.881920
+vn 0.624755 -0.110161 -0.773011
+vn 0.761264 -0.134231 -0.634396
+vn 0.868524 -0.153144 -0.471394
+vn 0.942402 -0.166171 -0.290287
+vn 0.980066 -0.172812 -0.098013
+vn 0.980066 -0.172812 0.098013
+vn 0.942402 -0.166171 0.290287
+vn 0.868524 -0.153144 0.471394
+vn 0.761264 -0.134231 0.634396
+vn 0.624755 -0.110161 0.773011
+vn 0.464237 -0.081858 0.881920
+vn 0.285874 -0.050407 0.956940
+vn -0.096529 0.017021 0.995185
+vn -0.285874 0.050407 0.956940
+vn -0.464235 0.081857 0.881921
+vn -0.624756 0.110161 0.773010
+vn -0.761269 0.134232 0.634391
+vn -0.868522 0.153144 0.471398
+vn -0.942403 0.166171 0.290282
+vn -0.980066 0.172812 0.098018
+vn -0.980065 0.172812 -0.098019
+vn -0.942402 0.166171 -0.290285
+vn -0.868521 0.153144 -0.471400
+vn -0.761267 0.134232 -0.634392
+vn -0.624756 0.110161 -0.773010
+vn -0.464234 0.081857 -0.881922
+vn 0.173640 0.984809 0.000036
+vn 0.173648 0.984808 -0.000041
+vn 0.173648 0.984808 -0.000002
+vn 0.173650 0.984807 0.000019
+vn 0.173652 0.984807 0.000031
+vn 0.173635 0.984810 -0.000027
+vn 0.173649 0.984808 0.000009
+vn 0.173641 0.984809 -0.000007
+vn 0.173650 0.984807 0.000006
+vn 0.173641 0.984809 -0.000005
+vn 0.173660 0.984806 0.000014
+vn 0.173629 0.984811 -0.000011
+vn 0.173638 0.984810 -0.000005
+vn 0.173649 0.984808 0.000001
+vn 0.173659 0.984806 0.000005
+vn 0.173636 0.984810 -0.000002
+vn 0.173683 0.984802 0.000007
+vn 0.173611 0.984814 0.000000
+vn 0.173649 0.984808 0.000000
+vn 0.173635 0.984810 0.000001
+vn 0.173681 0.984802 -0.000008
+vn 0.173674 0.984803 -0.000006
+vn 0.173644 0.984808 0.000007
+vn 0.173666 0.984805 -0.000005
+vn 0.173677 0.984803 -0.000016
+vn 0.173633 0.984810 0.000028
+vn 0.173518 0.984831 0.000143
+vn 0.173638 0.984810 0.000022
+vn -0.096528 0.017020 -0.995185
+vn -0.285872 0.050407 -0.956941
+vn -0.173648 -0.984808 0.000000
+vn -0.173647 -0.984808 -0.000006
+vn -0.173648 -0.984808 -0.000002
+vn -0.173647 -0.984808 -0.000003
+vn -0.173652 -0.984807 0.000009
+vn -0.173645 -0.984808 -0.000005
+vn -0.173652 -0.984807 0.000005
+vn -0.173644 -0.984809 -0.000005
+vn -0.173652 -0.984807 0.000003
+vn -0.173643 -0.984809 -0.000004
+vn -0.173650 -0.984807 0.000001
+vn -0.173680 -0.984802 0.000024
+vn -0.173592 -0.984818 0.000023
+vn -0.173693 -0.984800 0.000010
+vn -0.173644 -0.984808 -0.000000
+vn -0.173638 -0.984810 0.000013
+vn -0.173653 -0.984807 -0.000003
+vn -0.173644 -0.984808 0.000011
+vn -0.173646 -0.984808 0.000007
+vn -0.173645 -0.984808 -0.000007
+vn -0.173651 -0.984807 0.000003
+vn -0.173649 -0.984808 0.000000
+vn -0.173648 -0.984808 0.000001
+vn -0.173647 -0.984808 0.000002
+vn -0.173640 -0.984809 -0.000005
+vn -0.173647 -0.984808 -0.000001
+s off
+f 193/109/328 194/110/328 196/111/328
+f 195/109/329 196/110/329 198/111/329
+f 197/109/330 198/110/330 200/111/330
+f 199/109/331 200/110/331 202/111/331
+f 201/109/332 202/110/332 204/111/332
+f 203/109/333 204/110/333 206/111/333
+f 205/109/334 206/110/334 208/111/334
+f 207/109/335 208/110/335 210/111/335
+f 209/109/336 210/110/336 212/111/336
+f 211/109/337 212/110/337 214/111/337
+f 213/109/338 214/110/338 216/111/338
+f 215/109/339 216/110/339 218/111/339
+f 217/109/340 218/110/340 220/111/340
+f 219/109/341 220/110/341 222/111/341
+f 221/109/342 222/110/342 224/111/342
+f 223/109/343 224/110/343 226/111/343
+f 225/109/344 226/110/344 227/112/344
+f 227/109/345 228/110/345 229/112/345
+f 229/109/346 230/110/346 231/112/346
+f 231/109/347 232/110/347 233/112/347
+f 233/109/348 234/110/348 235/112/348
+f 235/109/349 236/110/349 237/112/349
+f 237/109/350 238/110/350 239/112/350
+f 239/109/351 240/110/351 241/112/351
+f 241/109/352 242/110/352 243/112/352
+f 243/109/353 244/110/353 245/112/353
+f 245/109/354 246/110/354 247/112/354
+f 247/109/355 248/110/355 249/112/355
+f 249/109/356 250/110/356 251/112/356
+f 251/109/357 252/110/357 253/112/357
+f 196/113/358 194/114/358 198/115/358
+f 255/109/359 256/110/359 193/112/359
+f 253/109/360 254/110/360 255/112/360
+f 193/113/361 195/114/361 255/115/361
+f 195/112/328 193/109/328 196/111/328
+f 197/112/362 195/109/362 198/111/362
+f 199/112/363 197/109/363 200/111/363
+f 201/112/364 199/109/364 202/111/364
+f 203/112/365 201/109/365 204/111/365
+f 205/112/366 203/109/366 206/111/366
+f 207/112/367 205/109/367 208/111/367
+f 209/112/368 207/109/368 210/111/368
+f 211/112/369 209/109/369 212/111/369
+f 213/112/370 211/109/370 214/111/370
+f 215/112/371 213/109/371 216/111/371
+f 217/112/372 215/109/372 218/111/372
+f 219/112/373 217/109/373 220/111/373
+f 221/112/374 219/109/374 222/111/374
+f 223/112/375 221/109/375 224/111/375
+f 225/112/343 223/109/343 226/111/343
+f 226/110/376 228/111/376 227/112/376
+f 228/110/377 230/111/377 229/112/377
+f 230/110/378 232/111/378 231/112/378
+f 232/110/379 234/111/379 233/112/379
+f 234/110/380 236/111/380 235/112/380
+f 236/110/381 238/111/381 237/112/381
+f 238/110/382 240/111/382 239/112/382
+f 240/110/383 242/111/383 241/112/383
+f 242/110/384 244/111/384 243/112/384
+f 244/110/385 246/111/385 245/112/385
+f 246/110/386 248/111/386 247/112/386
+f 248/110/387 250/111/387 249/112/387
+f 250/110/388 252/111/388 251/112/388
+f 252/110/389 254/111/389 253/112/389
+f 194/114/390 256/116/390 198/115/390
+f 256/116/391 254/117/391 198/115/391
+f 254/117/392 252/118/392 198/115/392
+f 252/118/393 250/119/393 198/115/393
+f 250/119/394 248/120/394 198/115/394
+f 248/120/395 246/121/395 198/115/395
+f 246/121/396 244/122/396 198/115/396
+f 244/122/397 242/123/397 198/115/397
+f 242/123/398 240/124/398 198/115/398
+f 240/124/399 238/125/399 198/115/399
+f 238/125/400 236/126/400 198/115/400
+f 236/126/401 234/127/401 198/115/401
+f 234/127/402 232/128/402 198/115/402
+f 232/128/403 230/129/403 198/115/403
+f 230/129/404 228/130/404 198/115/404
+f 228/130/405 226/131/405 198/115/405
+f 226/131/406 224/132/406 198/115/406
+f 224/132/407 222/133/407 198/115/407
+f 222/133/408 220/134/408 198/115/408
+f 220/134/409 218/135/409 198/115/409
+f 218/135/410 216/136/410 198/115/410
+f 216/136/411 214/137/411 198/115/411
+f 214/137/412 212/138/412 198/115/412
+f 212/138/413 210/139/413 198/115/413
+f 210/139/398 208/140/398 198/115/398
+f 208/140/414 206/141/414 198/115/414
+f 206/141/415 204/142/415 198/115/415
+f 204/142/416 202/143/416 200/144/416
+f 198/115/417 204/142/417 200/144/417
+f 256/110/418 194/111/418 193/112/418
+f 254/110/419 256/111/419 255/112/419
+f 195/114/420 197/116/420 255/115/420
+f 197/116/421 199/117/421 255/115/421
+f 199/117/422 201/118/422 255/115/422
+f 201/118/423 203/119/423 255/115/423
+f 203/119/424 205/120/424 255/115/424
+f 205/120/425 207/121/425 255/115/425
+f 207/121/426 209/122/426 255/115/426
+f 209/122/427 211/123/427 255/115/427
+f 211/123/428 213/124/428 255/115/428
+f 213/124/429 215/125/429 255/115/429
+f 215/125/430 217/126/430 255/115/430
+f 237/136/431 233/134/431 235/135/431
+f 247/141/432 243/139/432 245/140/432
+f 241/138/433 237/136/433 239/137/433
+f 241/138/434 233/134/434 237/136/434
+f 251/143/435 247/141/435 249/142/435
+f 251/143/436 243/139/436 247/141/436
+f 219/127/437 221/128/437 223/129/437
+f 219/127/438 223/129/438 225/130/438
+f 233/134/439 229/132/439 231/133/439
+f 241/138/440 229/132/440 233/134/440
+f 255/115/437 251/143/437 253/144/437
+f 255/115/441 217/126/441 251/143/441
+f 251/143/441 217/126/441 243/139/441
+f 219/127/442 225/130/442 227/131/442
+f 217/126/443 219/127/443 227/131/443
+f 243/139/420 217/126/420 227/131/420
+f 241/138/444 243/139/444 229/132/444
+f 243/139/445 227/131/445 229/132/445
+v -3.858562 2.027707 3.871576
+v -3.858562 2.027707 -3.907549
+v 3.920563 2.027707 -3.907549
+v 3.920563 2.027707 3.871576
+v -3.858562 2.306528 3.871576
+v -3.858562 2.306528 -3.907549
+v 3.920563 2.306528 -3.907549
+v 3.920563 2.306528 3.871576
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.000000 1.000000
+vt 1.000000 1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 -0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+s off
+f 261/145/446 262/146/446 257/147/446
+f 262/145/447 263/146/447 258/147/447
+f 263/145/448 264/146/448 260/148/448
+f 264/145/449 261/146/449 257/148/449
+f 257/145/450 258/146/450 259/148/450
+f 264/145/451 263/146/451 262/148/451
+f 262/146/446 258/148/446 257/147/446
+f 263/146/447 259/148/447 258/147/447
+f 259/147/448 263/145/448 260/148/448
+f 260/147/449 264/145/449 257/148/449
+f 260/147/450 257/145/450 259/148/450
+f 261/147/451 264/145/451 262/148/451
+v 2.043798 0.024218 -3.001008
+v 2.043798 2.024218 -3.001008
+v 2.238889 0.024218 -2.981793
+v 2.238889 2.024218 -2.981793
+v 2.426482 0.024218 -2.924888
+v 2.426482 2.024218 -2.924888
+v 2.599369 0.024218 -2.832478
+v 2.599369 2.024218 -2.832478
+v 2.750905 0.024218 -2.708115
+v 2.750905 2.024218 -2.708115
+v 2.875268 0.024218 -2.556578
+v 2.875268 2.024218 -2.556578
+v 2.967678 0.024218 -2.383692
+v 2.967678 2.024218 -2.383692
+v 3.024584 0.024218 -2.196099
+v 3.024584 2.024218 -2.196099
+v 3.043798 0.024218 -2.001008
+v 3.043798 2.024218 -2.001008
+v 3.024584 0.024218 -1.805918
+v 3.024584 2.024218 -1.805918
+v 2.967678 0.024218 -1.618325
+v 2.967678 2.024218 -1.618325
+v 2.875268 0.024218 -1.445438
+v 2.875268 2.024218 -1.445438
+v 2.750905 0.024218 -1.293901
+v 2.750905 2.024218 -1.293901
+v 2.599369 0.024218 -1.169539
+v 2.599369 2.024218 -1.169539
+v 2.426482 0.024218 -1.077129
+v 2.426482 2.024218 -1.077129
+v 2.238889 0.024218 -1.020223
+v 2.238889 2.024218 -1.020223
+v 2.043798 0.024218 -1.001008
+v 2.043798 2.024218 -1.001008
+v 1.848708 0.024218 -1.020223
+v 1.848708 2.024218 -1.020223
+v 1.661115 0.024218 -1.077129
+v 1.661115 2.024218 -1.077129
+v 1.488228 0.024218 -1.169539
+v 1.488228 2.024218 -1.169539
+v 1.336691 0.024218 -1.293902
+v 1.336691 2.024218 -1.293902
+v 1.212328 0.024218 -1.445439
+v 1.212328 2.024218 -1.445439
+v 1.119919 0.024218 -1.618326
+v 1.119919 2.024218 -1.618326
+v 1.063013 0.024218 -1.805919
+v 1.063013 2.024218 -1.805919
+v 1.043798 0.024218 -2.001009
+v 1.043798 2.024218 -2.001009
+v 1.063013 0.024218 -2.196100
+v 1.063013 2.024218 -2.196100
+v 1.119919 0.024218 -2.383693
+v 1.119919 2.024218 -2.383693
+v 1.212330 0.024218 -2.556580
+v 1.212330 2.024218 -2.556580
+v 1.336693 0.024218 -2.708116
+v 1.336693 2.024218 -2.708116
+v 1.488229 0.024218 -2.832479
+v 1.488229 2.024218 -2.832479
+v 1.661116 0.024218 -2.924888
+v 1.661116 2.024218 -2.924888
+v 1.848710 0.024218 -2.981794
+v 1.848710 2.024218 -2.981794
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.853553 0.146447
+vt 0.777785 0.084265
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.500000 0.000000
+vt 0.402455 0.009607
+vt 0.308658 0.038060
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.084265 0.222215
+vt 0.038060 0.308659
+vt 0.009607 0.402455
+vt 0.000000 0.500000
+vt 0.009607 0.597546
+vt 0.038060 0.691342
+vt 0.084266 0.777786
+vt 0.146447 0.853554
+vt 0.222215 0.915735
+vt 0.308659 0.961940
+vn 0.098018 0.000000 -0.995185
+vn 0.290285 0.000000 -0.956940
+vn 0.471397 0.000000 -0.881921
+vn 0.634393 0.000000 -0.773011
+vn 0.773011 0.000000 -0.634393
+vn 0.881921 0.000000 -0.471398
+vn 0.956940 0.000000 -0.290285
+vn 0.995185 0.000000 -0.098017
+vn 0.995185 0.000000 0.098017
+vn 0.956940 0.000000 0.290285
+vn 0.881921 0.000000 0.471397
+vn 0.773011 0.000000 0.634393
+vn 0.634393 0.000000 0.773011
+vn 0.471397 0.000000 0.881921
+vn 0.290285 0.000000 0.956940
+vn 0.098017 0.000000 0.995185
+vn -0.098018 0.000000 0.995185
+vn -0.290285 0.000000 0.956940
+vn -0.471397 0.000000 0.881921
+vn -0.634394 0.000000 0.773010
+vn -0.773011 0.000000 0.634393
+vn -0.881922 0.000000 0.471396
+vn -0.956941 0.000000 0.290283
+vn -0.995185 0.000000 0.098017
+vn -0.995185 -0.000000 -0.098018
+vn -0.956940 -0.000000 -0.290286
+vn -0.881921 -0.000000 -0.471398
+vn -0.773010 -0.000000 -0.634394
+vn -0.634392 -0.000000 -0.773012
+vn -0.471396 -0.000000 -0.881922
+vn -0.098016 -0.000000 -0.995185
+vn -0.290283 -0.000000 -0.956941
+s off
+f 265/149/452 266/150/452 268/151/452
+f 267/149/453 268/150/453 270/151/453
+f 269/149/454 270/150/454 272/151/454
+f 271/149/455 272/150/455 274/151/455
+f 273/149/456 274/150/456 276/151/456
+f 275/149/457 276/150/457 278/151/457
+f 277/149/458 278/150/458 280/151/458
+f 279/149/459 280/150/459 282/151/459
+f 281/149/460 282/150/460 284/151/460
+f 283/149/461 284/150/461 286/151/461
+f 285/149/462 286/150/462 288/151/462
+f 287/149/463 288/150/463 290/151/463
+f 289/149/464 290/150/464 292/151/464
+f 291/149/465 292/150/465 294/151/465
+f 293/149/466 294/150/466 296/151/466
+f 295/149/467 296/150/467 298/151/467
+f 297/149/468 298/150/468 299/152/468
+f 299/149/469 300/150/469 301/152/469
+f 301/149/470 302/150/470 303/152/470
+f 303/149/471 304/150/471 305/152/471
+f 305/149/472 306/150/472 307/152/472
+f 307/149/473 308/150/473 309/152/473
+f 309/149/474 310/150/474 311/152/474
+f 311/149/475 312/150/475 313/152/475
+f 313/149/476 314/150/476 315/152/476
+f 315/149/477 316/150/477 317/152/477
+f 317/149/478 318/150/478 319/152/478
+f 319/149/479 320/150/479 321/152/479
+f 321/149/480 322/150/480 323/152/480
+f 323/149/481 324/150/481 325/152/481
+f 268/153/451 266/154/451 270/155/451
+f 327/149/482 328/150/482 265/152/482
+f 325/149/483 326/150/483 327/152/483
+f 265/153/450 267/154/450 327/155/450
+f 267/152/452 265/149/452 268/151/452
+f 269/152/453 267/149/453 270/151/453
+f 271/152/454 269/149/454 272/151/454
+f 273/152/455 271/149/455 274/151/455
+f 275/152/456 273/149/456 276/151/456
+f 277/152/457 275/149/457 278/151/457
+f 279/152/458 277/149/458 280/151/458
+f 281/152/459 279/149/459 282/151/459
+f 283/152/460 281/149/460 284/151/460
+f 285/152/461 283/149/461 286/151/461
+f 287/152/462 285/149/462 288/151/462
+f 289/152/463 287/149/463 290/151/463
+f 291/152/464 289/149/464 292/151/464
+f 293/152/465 291/149/465 294/151/465
+f 295/152/466 293/149/466 296/151/466
+f 297/152/467 295/149/467 298/151/467
+f 298/150/468 300/151/468 299/152/468
+f 300/150/469 302/151/469 301/152/469
+f 302/150/470 304/151/470 303/152/470
+f 304/150/471 306/151/471 305/152/471
+f 306/150/472 308/151/472 307/152/472
+f 308/150/473 310/151/473 309/152/473
+f 310/150/474 312/151/474 311/152/474
+f 312/150/475 314/151/475 313/152/475
+f 314/150/476 316/151/476 315/152/476
+f 316/150/477 318/151/477 317/152/477
+f 318/150/478 320/151/478 319/152/478
+f 320/150/479 322/151/479 321/152/479
+f 322/150/480 324/151/480 323/152/480
+f 324/150/481 326/151/481 325/152/481
+f 266/154/451 328/156/451 270/155/451
+f 328/156/451 326/157/451 270/155/451
+f 326/157/451 324/158/451 270/155/451
+f 324/158/451 322/159/451 270/155/451
+f 322/159/451 320/160/451 270/155/451
+f 320/160/451 318/161/451 270/155/451
+f 318/161/451 316/162/451 270/155/451
+f 316/162/451 314/163/451 270/155/451
+f 314/163/451 312/164/451 270/155/451
+f 312/164/451 310/165/451 270/155/451
+f 310/165/451 308/166/451 270/155/451
+f 308/166/451 306/167/451 270/155/451
+f 306/167/451 304/168/451 270/155/451
+f 304/168/451 302/169/451 270/155/451
+f 302/169/451 300/170/451 270/155/451
+f 300/170/451 298/171/451 270/155/451
+f 298/171/451 296/172/451 270/155/451
+f 296/172/451 294/173/451 270/155/451
+f 294/173/451 292/174/451 270/155/451
+f 292/174/451 290/175/451 270/155/451
+f 290/175/451 288/176/451 270/155/451
+f 288/176/451 286/177/451 270/155/451
+f 286/177/451 284/178/451 270/155/451
+f 284/178/451 282/179/451 270/155/451
+f 282/179/451 280/180/451 270/155/451
+f 280/180/451 278/181/451 270/155/451
+f 278/181/451 276/182/451 270/155/451
+f 276/182/451 274/183/451 270/155/451
+f 274/183/451 272/184/451 270/155/451
+f 328/150/482 266/151/482 265/152/482
+f 326/150/483 328/151/483 327/152/483
+f 267/154/450 269/156/450 327/155/450
+f 269/156/450 271/157/450 327/155/450
+f 271/157/450 273/158/450 327/155/450
+f 273/158/450 275/159/450 327/155/450
+f 275/159/450 277/160/450 327/155/450
+f 277/160/450 279/161/450 327/155/450
+f 279/161/450 281/162/450 327/155/450
+f 281/162/450 283/163/450 327/155/450
+f 283/163/450 285/164/450 327/155/450
+f 285/164/450 287/165/450 327/155/450
+f 287/165/450 289/166/450 327/155/450
+f 289/166/450 291/167/450 327/155/450
+f 291/167/450 293/168/450 327/155/450
+f 293/168/450 295/169/450 327/155/450
+f 295/169/450 297/170/450 327/155/450
+f 297/170/450 299/171/450 327/155/450
+f 299/171/450 301/172/450 327/155/450
+f 301/172/450 303/173/450 327/155/450
+f 303/173/450 305/174/450 327/155/450
+f 305/174/450 307/175/450 327/155/450
+f 307/175/450 309/176/450 327/155/450
+f 309/176/450 311/177/450 327/155/450
+f 311/177/450 313/178/450 327/155/450
+f 313/178/450 315/179/450 327/155/450
+f 315/179/450 317/180/450 327/155/450
+f 317/180/450 319/181/450 327/155/450
+f 319/181/450 321/182/450 327/155/450
+f 321/182/450 323/183/450 325/184/450
+f 327/155/450 321/182/450 325/184/450
+v -2.014818 0.007922 0.998641
+v -2.014818 2.007922 0.998641
+v -1.819728 0.007922 1.017856
+v -1.819728 2.007922 1.017856
+v -1.632135 0.007922 1.074762
+v -1.632135 2.007922 1.074762
+v -1.459248 0.007922 1.167172
+v -1.459248 2.007922 1.167172
+v -1.307712 0.007922 1.291534
+v -1.307712 2.007922 1.291534
+v -1.183349 0.007922 1.443071
+v -1.183349 2.007922 1.443071
+v -1.090939 0.007922 1.615958
+v -1.090939 2.007922 1.615958
+v -1.034033 0.007922 1.803551
+v -1.034033 2.007922 1.803551
+v -1.014818 0.007922 1.998641
+v -1.014818 2.007922 1.998641
+v -1.034033 0.007922 2.193732
+v -1.034033 2.007922 2.193732
+v -1.090939 0.007922 2.381325
+v -1.090939 2.007922 2.381325
+v -1.183349 0.007922 2.554211
+v -1.183349 2.007922 2.554211
+v -1.307712 0.007922 2.705748
+v -1.307712 2.007922 2.705748
+v -1.459248 0.007922 2.830111
+v -1.459248 2.007922 2.830111
+v -1.632135 0.007922 2.922521
+v -1.632135 2.007922 2.922521
+v -1.819728 0.007922 2.979427
+v -1.819728 2.007922 2.979427
+v -2.014819 0.007922 2.998641
+v -2.014819 2.007922 2.998641
+v -2.209909 0.007922 2.979426
+v -2.209909 2.007922 2.979426
+v -2.397502 0.007922 2.922521
+v -2.397502 2.007922 2.922521
+v -2.570389 0.007922 2.830111
+v -2.570389 2.007922 2.830111
+v -2.721926 0.007922 2.705748
+v -2.721926 2.007922 2.705748
+v -2.846288 0.007922 2.554211
+v -2.846288 2.007922 2.554211
+v -2.938698 0.007922 2.381324
+v -2.938698 2.007922 2.381324
+v -2.995604 0.007922 2.193731
+v -2.995604 2.007922 2.193731
+v -3.014818 0.007922 1.998640
+v -3.014818 2.007922 1.998640
+v -2.995604 0.007922 1.803550
+v -2.995604 2.007922 1.803550
+v -2.938698 0.007922 1.615957
+v -2.938698 2.007922 1.615957
+v -2.846287 0.007922 1.443070
+v -2.846287 2.007922 1.443070
+v -2.721924 0.007922 1.291534
+v -2.721924 2.007922 1.291534
+v -2.570388 0.007922 1.167171
+v -2.570388 2.007922 1.167171
+v -2.397501 0.007922 1.074761
+v -2.397501 2.007922 1.074761
+v -2.209907 0.007922 1.017856
+v -2.209907 2.007922 1.017856
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.853553 0.146447
+vt 0.777785 0.084265
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.500000 0.000000
+vt 0.402455 0.009607
+vt 0.308658 0.038060
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.084265 0.222215
+vt 0.038060 0.308659
+vt 0.009607 0.402455
+vt 0.000000 0.500000
+vt 0.009607 0.597546
+vt 0.038060 0.691342
+vt 0.084266 0.777786
+vt 0.146447 0.853554
+vt 0.222215 0.915735
+vt 0.308659 0.961940
+vn 0.098017 0.000000 -0.995185
+vn 0.881921 0.000000 -0.471397
+vn 0.634393 0.000000 0.773010
+vn 0.471396 0.000000 0.881922
+vn -0.881920 -0.000000 -0.471398
+vn -0.634393 -0.000000 -0.773011
+vn -0.471395 -0.000000 -0.881922
+s off
+f 329/185/484 330/186/484 332/187/484
+f 331/185/453 332/186/453 334/187/453
+f 333/185/454 334/186/454 336/187/454
+f 335/185/455 336/186/455 338/187/455
+f 337/185/456 338/186/456 340/187/456
+f 339/185/485 340/186/485 342/187/485
+f 341/185/458 342/186/458 344/187/458
+f 343/185/459 344/186/459 346/187/459
+f 345/185/460 346/186/460 348/187/460
+f 347/185/461 348/186/461 350/187/461
+f 349/185/462 350/186/462 352/187/462
+f 351/185/463 352/186/463 354/187/463
+f 353/185/486 354/186/486 356/187/486
+f 355/185/487 356/186/487 358/187/487
+f 357/185/466 358/186/466 360/187/466
+f 359/185/467 360/186/467 362/187/467
+f 361/185/468 362/186/468 363/188/468
+f 363/185/469 364/186/469 365/188/469
+f 365/185/470 366/186/470 367/188/470
+f 367/185/471 368/186/471 369/188/471
+f 369/185/472 370/186/472 371/188/472
+f 371/185/473 372/186/473 373/188/473
+f 373/185/474 374/186/474 375/188/474
+f 375/185/475 376/186/475 377/188/475
+f 377/185/476 378/186/476 379/188/476
+f 379/185/477 380/186/477 381/188/477
+f 381/185/488 382/186/488 383/188/488
+f 383/185/479 384/186/479 385/188/479
+f 385/185/489 386/186/489 387/188/489
+f 387/185/490 388/186/490 389/188/490
+f 332/189/451 330/190/451 334/191/451
+f 391/185/482 392/186/482 329/188/482
+f 389/185/483 390/186/483 391/188/483
+f 329/189/450 331/190/450 391/191/450
+f 331/188/484 329/185/484 332/187/484
+f 333/188/453 331/185/453 334/187/453
+f 335/188/454 333/185/454 336/187/454
+f 337/188/455 335/185/455 338/187/455
+f 339/188/456 337/185/456 340/187/456
+f 341/188/485 339/185/485 342/187/485
+f 343/188/458 341/185/458 344/187/458
+f 345/188/459 343/185/459 346/187/459
+f 347/188/460 345/185/460 348/187/460
+f 349/188/461 347/185/461 350/187/461
+f 351/188/462 349/185/462 352/187/462
+f 353/188/463 351/185/463 354/187/463
+f 355/188/486 353/185/486 356/187/486
+f 357/188/487 355/185/487 358/187/487
+f 359/188/466 357/185/466 360/187/466
+f 361/188/467 359/185/467 362/187/467
+f 362/186/468 364/187/468 363/188/468
+f 364/186/469 366/187/469 365/188/469
+f 366/186/470 368/187/470 367/188/470
+f 368/186/471 370/187/471 369/188/471
+f 370/186/472 372/187/472 371/188/472
+f 372/186/473 374/187/473 373/188/473
+f 374/186/474 376/187/474 375/188/474
+f 376/186/475 378/187/475 377/188/475
+f 378/186/476 380/187/476 379/188/476
+f 380/186/477 382/187/477 381/188/477
+f 382/186/488 384/187/488 383/188/488
+f 384/186/479 386/187/479 385/188/479
+f 386/186/489 388/187/489 387/188/489
+f 388/186/490 390/187/490 389/188/490
+f 330/190/451 392/192/451 334/191/451
+f 392/192/451 390/193/451 334/191/451
+f 390/193/451 388/194/451 334/191/451
+f 388/194/451 386/195/451 334/191/451
+f 386/195/451 384/196/451 334/191/451
+f 384/196/451 382/197/451 334/191/451
+f 382/197/451 380/198/451 334/191/451
+f 380/198/451 378/199/451 334/191/451
+f 378/199/451 376/200/451 334/191/451
+f 376/200/451 374/201/451 334/191/451
+f 374/201/451 372/202/451 334/191/451
+f 372/202/451 370/203/451 334/191/451
+f 370/203/451 368/204/451 334/191/451
+f 368/204/451 366/205/451 334/191/451
+f 366/205/451 364/206/451 334/191/451
+f 364/206/451 362/207/451 334/191/451
+f 362/207/451 360/208/451 334/191/451
+f 360/208/451 358/209/451 334/191/451
+f 358/209/451 356/210/451 334/191/451
+f 356/210/451 354/211/451 334/191/451
+f 354/211/451 352/212/451 334/191/451
+f 352/212/451 350/213/451 334/191/451
+f 350/213/451 348/214/451 334/191/451
+f 348/214/451 346/215/451 334/191/451
+f 346/215/451 344/216/451 334/191/451
+f 344/216/451 342/217/451 334/191/451
+f 342/217/451 340/218/451 334/191/451
+f 340/218/451 338/219/451 334/191/451
+f 338/219/451 336/220/451 334/191/451
+f 392/186/482 330/187/482 329/188/482
+f 390/186/483 392/187/483 391/188/483
+f 331/190/450 333/192/450 391/191/450
+f 333/192/450 335/193/450 391/191/450
+f 335/193/450 337/194/450 391/191/450
+f 337/194/450 339/195/450 391/191/450
+f 339/195/450 341/196/450 391/191/450
+f 341/196/450 343/197/450 391/191/450
+f 343/197/450 345/198/450 391/191/450
+f 345/198/450 347/199/450 391/191/450
+f 347/199/450 349/200/450 391/191/450
+f 349/200/450 351/201/450 391/191/450
+f 351/201/450 353/202/450 391/191/450
+f 353/202/450 355/203/450 391/191/450
+f 355/203/450 357/204/450 391/191/450
+f 357/204/450 359/205/450 391/191/450
+f 359/205/450 361/206/450 391/191/450
+f 361/206/450 363/207/450 391/191/450
+f 363/207/450 365/208/450 391/191/450
+f 365/208/450 367/209/450 391/191/450
+f 367/209/450 369/210/450 391/191/450
+f 369/210/450 371/211/450 391/191/450
+f 371/211/450 373/212/450 391/191/450
+f 373/212/450 375/213/450 391/191/450
+f 375/213/450 377/214/450 391/191/450
+f 377/214/450 379/215/450 391/191/450
+f 379/215/450 381/216/450 391/191/450
+f 381/216/450 383/217/450 391/191/450
+f 383/217/450 385/218/450 391/191/450
+f 385/218/450 387/219/450 391/191/450
+f 387/219/450 389/220/450 391/191/450
+v -2.001621 -0.021814 -3.021079
+v -2.001621 1.978186 -3.021079
+v -1.806530 -0.021814 -3.001864
+v -1.806530 1.978186 -3.001864
+v -1.618937 -0.021814 -2.944958
+v -1.618937 1.978186 -2.944958
+v -1.446051 -0.021814 -2.852548
+v -1.446051 1.978186 -2.852548
+v -1.294514 -0.021814 -2.728185
+v -1.294514 1.978186 -2.728185
+v -1.170151 -0.021814 -2.576649
+v -1.170151 1.978186 -2.576649
+v -1.077741 -0.021814 -2.403762
+v -1.077741 1.978186 -2.403762
+v -1.020836 -0.021814 -2.216169
+v -1.020836 1.978186 -2.216169
+v -1.001621 -0.021814 -2.021079
+v -1.001621 1.978186 -2.021079
+v -1.020835 -0.021814 -1.825988
+v -1.020835 1.978186 -1.825988
+v -1.077741 -0.021814 -1.638395
+v -1.077741 1.978186 -1.638395
+v -1.170151 -0.021814 -1.465508
+v -1.170151 1.978186 -1.465508
+v -1.294514 -0.021814 -1.313972
+v -1.294514 1.978186 -1.313972
+v -1.446051 -0.021814 -1.189609
+v -1.446051 1.978186 -1.189609
+v -1.618937 -0.021814 -1.097199
+v -1.618937 1.978186 -1.097199
+v -1.806531 -0.021814 -1.040293
+v -1.806531 1.978186 -1.040293
+v -2.001621 -0.021814 -1.021079
+v -2.001621 1.978186 -1.021079
+v -2.196712 -0.021814 -1.040293
+v -2.196712 1.978186 -1.040293
+v -2.384305 -0.021814 -1.097199
+v -2.384305 1.978186 -1.097199
+v -2.557191 -0.021814 -1.189609
+v -2.557191 1.978186 -1.189609
+v -2.708728 -0.021814 -1.313972
+v -2.708728 1.978186 -1.313972
+v -2.833091 -0.021814 -1.465509
+v -2.833091 1.978186 -1.465509
+v -2.925501 -0.021814 -1.638396
+v -2.925501 1.978186 -1.638396
+v -2.982406 -0.021814 -1.825989
+v -2.982406 1.978186 -1.825989
+v -3.001621 -0.021814 -2.021080
+v -3.001621 1.978186 -2.021080
+v -2.982406 -0.021814 -2.216170
+v -2.982406 1.978186 -2.216170
+v -2.925500 -0.021814 -2.403763
+v -2.925500 1.978186 -2.403763
+v -2.833090 -0.021814 -2.576650
+v -2.833090 1.978186 -2.576650
+v -2.708727 -0.021814 -2.728186
+v -2.708727 1.978186 -2.728186
+v -2.557190 -0.021814 -2.852549
+v -2.557190 1.978186 -2.852549
+v -2.384303 -0.021814 -2.944959
+v -2.384303 1.978186 -2.944959
+v -2.196710 -0.021814 -3.001864
+v -2.196710 1.978186 -3.001864
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.853553 0.146447
+vt 0.777785 0.084265
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.500000 0.000000
+vt 0.402455 0.009607
+vt 0.308658 0.038060
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.084265 0.222215
+vt 0.038060 0.308659
+vt 0.009607 0.402455
+vt 0.000000 0.500000
+vt 0.009607 0.597546
+vt 0.038060 0.691342
+vt 0.084266 0.777786
+vt 0.146447 0.853554
+vt 0.222215 0.915735
+vt 0.308659 0.961940
+vn 0.471398 0.000000 -0.881921
+vn -0.634393 0.000000 0.773010
+vn -0.881921 -0.000000 -0.471397
+vn -0.773009 -0.000000 -0.634395
+vn -0.634393 -0.000000 -0.773010
+s off
+f 393/221/484 394/222/484 396/223/484
+f 395/221/453 396/222/453 398/223/453
+f 397/221/491 398/222/491 400/223/491
+f 399/221/455 400/222/455 402/223/455
+f 401/221/456 402/222/456 404/223/456
+f 403/221/485 404/222/485 406/223/485
+f 405/221/458 406/222/458 408/223/458
+f 407/221/459 408/222/459 410/223/459
+f 409/221/460 410/222/460 412/223/460
+f 411/221/461 412/222/461 414/223/461
+f 413/221/462 414/222/462 416/223/462
+f 415/221/463 416/222/463 418/223/463
+f 417/221/464 418/222/464 420/223/464
+f 419/221/465 420/222/465 422/223/465
+f 421/221/466 422/222/466 424/223/466
+f 423/221/467 424/222/467 426/223/467
+f 425/221/468 426/222/468 427/224/468
+f 427/221/469 428/222/469 429/224/469
+f 429/221/470 430/222/470 431/224/470
+f 431/221/492 432/222/492 433/224/492
+f 433/221/472 434/222/472 435/224/472
+f 435/221/473 436/222/473 437/224/473
+f 437/221/474 438/222/474 439/224/474
+f 439/221/475 440/222/475 441/224/475
+f 441/221/476 442/222/476 443/224/476
+f 443/221/477 444/222/477 445/224/477
+f 445/221/493 446/222/493 447/224/493
+f 447/221/494 448/222/494 449/224/494
+f 449/221/495 450/222/495 451/224/495
+f 451/221/490 452/222/490 453/224/490
+f 396/225/451 394/226/451 398/227/451
+f 455/221/482 456/222/482 393/224/482
+f 453/221/483 454/222/483 455/224/483
+f 393/225/450 395/226/450 455/227/450
+f 395/224/484 393/221/484 396/223/484
+f 397/224/453 395/221/453 398/223/453
+f 399/224/491 397/221/491 400/223/491
+f 401/224/455 399/221/455 402/223/455
+f 403/224/456 401/221/456 404/223/456
+f 405/224/485 403/221/485 406/223/485
+f 407/224/458 405/221/458 408/223/458
+f 409/224/459 407/221/459 410/223/459
+f 411/224/460 409/221/460 412/223/460
+f 413/224/461 411/221/461 414/223/461
+f 415/224/462 413/221/462 416/223/462
+f 417/224/463 415/221/463 418/223/463
+f 419/224/464 417/221/464 420/223/464
+f 421/224/465 419/221/465 422/223/465
+f 423/224/466 421/221/466 424/223/466
+f 425/224/467 423/221/467 426/223/467
+f 426/222/468 428/223/468 427/224/468
+f 428/222/469 430/223/469 429/224/469
+f 430/222/470 432/223/470 431/224/470
+f 432/222/492 434/223/492 433/224/492
+f 434/222/472 436/223/472 435/224/472
+f 436/222/473 438/223/473 437/224/473
+f 438/222/474 440/223/474 439/224/474
+f 440/222/475 442/223/475 441/224/475
+f 442/222/476 444/223/476 443/224/476
+f 444/222/477 446/223/477 445/224/477
+f 446/222/493 448/223/493 447/224/493
+f 448/222/494 450/223/494 449/224/494
+f 450/222/495 452/223/495 451/224/495
+f 452/222/490 454/223/490 453/224/490
+f 394/226/451 456/228/451 398/227/451
+f 456/228/451 454/229/451 398/227/451
+f 454/229/451 452/230/451 398/227/451
+f 452/230/451 450/231/451 398/227/451
+f 450/231/451 448/232/451 398/227/451
+f 448/232/451 446/233/451 398/227/451
+f 446/233/451 444/234/451 398/227/451
+f 444/234/451 442/235/451 398/227/451
+f 442/235/451 440/236/451 398/227/451
+f 440/236/451 438/237/451 398/227/451
+f 438/237/451 436/238/451 398/227/451
+f 436/238/451 434/239/451 398/227/451
+f 434/239/451 432/240/451 398/227/451
+f 432/240/451 430/241/451 398/227/451
+f 430/241/451 428/242/451 398/227/451
+f 428/242/451 426/243/451 398/227/451
+f 426/243/451 424/244/451 398/227/451
+f 424/244/451 422/245/451 398/227/451
+f 422/245/451 420/246/451 398/227/451
+f 420/246/451 418/247/451 398/227/451
+f 418/247/451 416/248/451 398/227/451
+f 416/248/451 414/249/451 398/227/451
+f 414/249/451 412/250/451 398/227/451
+f 412/250/451 410/251/451 398/227/451
+f 410/251/451 408/252/451 398/227/451
+f 408/252/451 406/253/451 398/227/451
+f 406/253/451 404/254/451 398/227/451
+f 404/254/451 402/255/451 398/227/451
+f 402/255/451 400/256/451 398/227/451
+f 456/222/482 394/223/482 393/224/482
+f 454/222/483 456/223/483 455/224/483
+f 395/226/450 397/228/450 455/227/450
+f 397/228/450 399/229/450 455/227/450
+f 399/229/450 401/230/450 455/227/450
+f 401/230/450 403/231/450 455/227/450
+f 403/231/450 405/232/450 455/227/450
+f 405/232/450 407/233/450 455/227/450
+f 407/233/450 409/234/450 455/227/450
+f 409/234/450 411/235/450 455/227/450
+f 411/235/450 413/236/450 455/227/450
+f 413/236/450 415/237/450 455/227/450
+f 415/237/450 417/238/450 455/227/450
+f 417/238/450 419/239/450 455/227/450
+f 419/239/450 421/240/450 455/227/450
+f 421/240/450 423/241/450 455/227/450
+f 423/241/450 425/242/450 455/227/450
+f 425/242/450 427/243/450 455/227/450
+f 427/243/450 429/244/450 455/227/450
+f 429/244/450 431/245/450 455/227/450
+f 431/245/450 433/246/450 455/227/450
+f 433/246/450 435/247/450 455/227/450
+f 435/247/450 437/248/450 455/227/450
+f 437/248/450 439/249/450 455/227/450
+f 439/249/450 441/250/450 455/227/450
+f 441/250/450 443/251/450 455/227/450
+f 443/251/450 445/252/450 455/227/450
+f 445/252/450 447/253/450 455/227/450
+f 447/253/450 449/254/450 455/227/450
+f 449/254/450 451/255/450 455/227/450
+f 451/255/450 453/256/450 455/227/450
+v 2.021592 0.003623 1.016610
+v 2.021592 2.003623 1.016610
+v 2.216682 0.003623 1.035825
+v 2.216682 2.003623 1.035825
+v 2.404276 0.003623 1.092731
+v 2.404276 2.003623 1.092731
+v 2.577162 0.003623 1.185141
+v 2.577162 2.003623 1.185141
+v 2.728699 0.003623 1.309503
+v 2.728699 2.003623 1.309503
+v 2.853062 0.003623 1.461040
+v 2.853062 2.003623 1.461040
+v 2.945472 0.003623 1.633927
+v 2.945472 2.003623 1.633927
+v 3.002378 0.003623 1.821520
+v 3.002378 2.003623 1.821520
+v 3.021592 0.003623 2.016610
+v 3.021592 2.003623 2.016610
+v 3.002378 0.003623 2.211700
+v 3.002378 2.003623 2.211700
+v 2.945472 0.003623 2.399293
+v 2.945472 2.003623 2.399293
+v 2.853062 0.003623 2.572180
+v 2.853062 2.003623 2.572180
+v 2.728699 0.003623 2.723717
+v 2.728699 2.003623 2.723717
+v 2.577162 0.003623 2.848080
+v 2.577162 2.003623 2.848080
+v 2.404275 0.003623 2.940490
+v 2.404275 2.003623 2.940490
+v 2.216682 0.003623 2.997396
+v 2.216682 2.003623 2.997396
+v 2.021592 0.003623 3.016610
+v 2.021592 2.003623 3.016610
+v 1.826501 0.003623 2.997395
+v 1.826501 2.003623 2.997395
+v 1.638908 0.003623 2.940490
+v 1.638908 2.003623 2.940490
+v 1.466021 0.003623 2.848079
+v 1.466021 2.003623 2.848079
+v 1.314485 0.003623 2.723716
+v 1.314485 2.003623 2.723716
+v 1.190122 0.003623 2.572180
+v 1.190122 2.003623 2.572180
+v 1.097712 0.003623 2.399293
+v 1.097712 2.003623 2.399293
+v 1.040807 0.003623 2.211699
+v 1.040807 2.003623 2.211699
+v 1.021592 0.003623 2.016609
+v 1.021592 2.003623 2.016609
+v 1.040807 0.003623 1.821519
+v 1.040807 2.003623 1.821519
+v 1.097713 0.003623 1.633926
+v 1.097713 2.003623 1.633926
+v 1.190123 0.003623 1.461039
+v 1.190123 2.003623 1.461039
+v 1.314486 0.003623 1.309502
+v 1.314486 2.003623 1.309502
+v 1.466023 0.003623 1.185140
+v 1.466023 2.003623 1.185140
+v 1.638910 0.003623 1.092730
+v 1.638910 2.003623 1.092730
+v 1.826503 0.003623 1.035825
+v 1.826503 2.003623 1.035825
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.853553 0.146447
+vt 0.777785 0.084265
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.500000 0.000000
+vt 0.402455 0.009607
+vt 0.308658 0.038060
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.084265 0.222215
+vt 0.038060 0.308659
+vt 0.009607 0.402455
+vt 0.000000 0.500000
+vt 0.009607 0.597546
+vt 0.038060 0.691342
+vt 0.084266 0.777786
+vt 0.146447 0.853554
+vt 0.222215 0.915735
+vt 0.308659 0.961940
+s off
+f 457/257/484 458/258/484 460/259/484
+f 459/257/453 460/258/453 462/259/453
+f 461/257/454 462/258/454 464/259/454
+f 463/257/455 464/258/455 466/259/455
+f 465/257/456 466/258/456 468/259/456
+f 467/257/457 468/258/457 470/259/457
+f 469/257/458 470/258/458 472/259/458
+f 471/257/459 472/258/459 474/259/459
+f 473/257/460 474/258/460 476/259/460
+f 475/257/461 476/258/461 478/259/461
+f 477/257/462 478/258/462 480/259/462
+f 479/257/463 480/258/463 482/259/463
+f 481/257/464 482/258/464 484/259/464
+f 483/257/465 484/258/465 486/259/465
+f 485/257/466 486/258/466 488/259/466
+f 487/257/467 488/258/467 490/259/467
+f 489/257/468 490/258/468 491/260/468
+f 491/257/469 492/258/469 493/260/469
+f 493/257/470 494/258/470 495/260/470
+f 495/257/471 496/258/471 497/260/471
+f 497/257/472 498/258/472 499/260/472
+f 499/257/473 500/258/473 501/260/473
+f 501/257/474 502/258/474 503/260/474
+f 503/257/475 504/258/475 505/260/475
+f 505/257/476 506/258/476 507/260/476
+f 507/257/477 508/258/477 509/260/477
+f 509/257/478 510/258/478 511/260/478
+f 511/257/494 512/258/494 513/260/494
+f 513/257/489 514/258/489 515/260/489
+f 515/257/490 516/258/490 517/260/490
+f 460/261/451 458/262/451 462/263/451
+f 519/257/482 520/258/482 457/260/482
+f 517/257/483 518/258/483 519/260/483
+f 457/261/450 459/262/450 519/263/450
+f 459/260/484 457/257/484 460/259/484
+f 461/260/453 459/257/453 462/259/453
+f 463/260/454 461/257/454 464/259/454
+f 465/260/455 463/257/455 466/259/455
+f 467/260/456 465/257/456 468/259/456
+f 469/260/457 467/257/457 470/259/457
+f 471/260/458 469/257/458 472/259/458
+f 473/260/459 471/257/459 474/259/459
+f 475/260/460 473/257/460 476/259/460
+f 477/260/461 475/257/461 478/259/461
+f 479/260/462 477/257/462 480/259/462
+f 481/260/463 479/257/463 482/259/463
+f 483/260/464 481/257/464 484/259/464
+f 485/260/465 483/257/465 486/259/465
+f 487/260/466 485/257/466 488/259/466
+f 489/260/467 487/257/467 490/259/467
+f 490/258/468 492/259/468 491/260/468
+f 492/258/469 494/259/469 493/260/469
+f 494/258/470 496/259/470 495/260/470
+f 496/258/471 498/259/471 497/260/471
+f 498/258/472 500/259/472 499/260/472
+f 500/258/473 502/259/473 501/260/473
+f 502/258/474 504/259/474 503/260/474
+f 504/258/475 506/259/475 505/260/475
+f 506/258/476 508/259/476 507/260/476
+f 508/258/477 510/259/477 509/260/477
+f 510/258/478 512/259/478 511/260/478
+f 512/258/494 514/259/494 513/260/494
+f 514/258/489 516/259/489 515/260/489
+f 516/258/490 518/259/490 517/260/490
+f 458/262/451 520/264/451 462/263/451
+f 520/264/451 518/265/451 462/263/451
+f 518/265/451 516/266/451 462/263/451
+f 516/266/451 514/267/451 462/263/451
+f 514/267/451 512/268/451 462/263/451
+f 512/268/451 510/269/451 462/263/451
+f 510/269/451 508/270/451 462/263/451
+f 508/270/451 506/271/451 462/263/451
+f 506/271/451 504/272/451 462/263/451
+f 504/272/451 502/273/451 462/263/451
+f 502/273/451 500/274/451 462/263/451
+f 500/274/451 498/275/451 462/263/451
+f 498/275/451 496/276/451 462/263/451
+f 496/276/451 494/277/451 462/263/451
+f 494/277/451 492/278/451 462/263/451
+f 492/278/451 490/279/451 462/263/451
+f 490/279/451 488/280/451 462/263/451
+f 488/280/451 486/281/451 462/263/451
+f 486/281/451 484/282/451 462/263/451
+f 484/282/451 482/283/451 462/263/451
+f 482/283/451 480/284/451 462/263/451
+f 480/284/451 478/285/451 462/263/451
+f 478/285/451 476/286/451 462/263/451
+f 476/286/451 474/287/451 462/263/451
+f 474/287/451 472/288/451 462/263/451
+f 472/288/451 470/289/451 462/263/451
+f 470/289/451 468/290/451 462/263/451
+f 468/290/451 466/291/451 462/263/451
+f 466/291/451 464/292/451 462/263/451
+f 520/258/482 458/259/482 457/260/482
+f 518/258/483 520/259/483 519/260/483
+f 459/262/450 461/264/450 519/263/450
+f 461/264/450 463/265/450 519/263/450
+f 463/265/450 465/266/450 519/263/450
+f 465/266/450 467/267/450 519/263/450
+f 467/267/450 469/268/450 519/263/450
+f 469/268/450 471/269/450 519/263/450
+f 471/269/450 473/270/450 519/263/450
+f 473/270/450 475/271/450 519/263/450
+f 475/271/450 477/272/450 519/263/450
+f 477/272/450 479/273/450 519/263/450
+f 479/273/450 481/274/450 519/263/450
+f 481/274/450 483/275/450 519/263/450
+f 483/275/450 485/276/450 519/263/450
+f 485/276/450 487/277/450 519/263/450
+f 487/277/450 489/278/450 519/263/450
+f 489/278/450 491/279/450 519/263/450
+f 491/279/450 493/280/450 519/263/450
+f 493/280/450 495/281/450 519/263/450
+f 495/281/450 497/282/450 519/263/450
+f 497/282/450 499/283/450 519/263/450
+f 499/283/450 501/284/450 519/263/450
+f 501/284/450 503/285/450 519/263/450
+f 503/285/450 505/286/450 519/263/450
+f 505/286/450 507/287/450 519/263/450
+f 507/287/450 509/288/450 519/263/450
+f 509/288/450 511/289/450 519/263/450
+f 511/289/450 513/290/450 519/263/450
+f 513/290/450 515/291/450 519/263/450
+f 515/291/450 517/292/450 519/263/450
diff --git a/examples/datavisualization/graphgallery/data/pipe.obj b/examples/datavisualization/graphgallery/data/pipe.obj
new file mode 100644
index 000000000..6ccbb2860
--- /dev/null
+++ b/examples/datavisualization/graphgallery/data/pipe.obj
@@ -0,0 +1,330 @@
+# Blender v2.66 (sub 0) OBJ File: 'cylinder.blend'
+# www.blender.org
+o Cylinder
+v 0.000000 -1.000000 -1.000000
+v 0.000000 1.000000 -1.000000
+v 0.195090 -1.000000 -0.980785
+v 0.195090 1.000000 -0.980785
+v 0.382683 -1.000000 -0.923880
+v 0.382683 1.000000 -0.923880
+v 0.555570 -1.000000 -0.831470
+v 0.555570 1.000000 -0.831470
+v 0.707107 -1.000000 -0.707107
+v 0.707107 1.000000 -0.707107
+v 0.831470 -1.000000 -0.555570
+v 0.831470 1.000000 -0.555570
+v 0.923880 -1.000000 -0.382683
+v 0.923880 1.000000 -0.382683
+v 0.980785 -1.000000 -0.195090
+v 0.980785 1.000000 -0.195090
+v 1.000000 -1.000000 -0.000000
+v 1.000000 1.000000 -0.000000
+v 0.980785 -1.000000 0.195090
+v 0.980785 1.000000 0.195090
+v 0.923880 -1.000000 0.382683
+v 0.923880 1.000000 0.382683
+v 0.831470 -1.000000 0.555570
+v 0.831470 1.000000 0.555570
+v 0.707107 -1.000000 0.707107
+v 0.707107 1.000000 0.707107
+v 0.555570 -1.000000 0.831470
+v 0.555570 1.000000 0.831470
+v 0.382683 -1.000000 0.923880
+v 0.382683 1.000000 0.923880
+v 0.195090 -1.000000 0.980785
+v 0.195090 1.000000 0.980785
+v -0.000000 -1.000000 1.000000
+v -0.000000 1.000000 1.000000
+v -0.195091 -1.000000 0.980785
+v -0.195091 1.000000 0.980785
+v -0.382684 -1.000000 0.923879
+v -0.382684 1.000000 0.923879
+v -0.555571 -1.000000 0.831469
+v -0.555571 1.000000 0.831469
+v -0.707107 -1.000000 0.707106
+v -0.707107 1.000000 0.707106
+v -0.831470 -1.000000 0.555570
+v -0.831470 1.000000 0.555570
+v -0.923880 -1.000000 0.382683
+v -0.923880 1.000000 0.382683
+v -0.980785 -1.000000 0.195089
+v -0.980785 1.000000 0.195089
+v -1.000000 -1.000000 -0.000001
+v -1.000000 1.000000 -0.000001
+v -0.980785 -1.000000 -0.195091
+v -0.980785 1.000000 -0.195091
+v -0.923879 -1.000000 -0.382684
+v -0.923879 1.000000 -0.382684
+v -0.831469 -1.000000 -0.555571
+v -0.831469 1.000000 -0.555571
+v -0.707106 -1.000000 -0.707108
+v -0.707106 1.000000 -0.707108
+v -0.555569 -1.000000 -0.831470
+v -0.555569 1.000000 -0.831470
+v -0.382682 -1.000000 -0.923880
+v -0.382682 1.000000 -0.923880
+v -0.195089 -1.000000 -0.980786
+v -0.195089 1.000000 -0.980786
+vt 0.289718 0.879351
+vt 0.288367 0.438844
+vt 0.330714 0.438714
+vt 0.332066 0.879221
+vt 0.370605 0.438592
+vt 0.371956 0.879099
+vt 0.406505 0.438482
+vt 0.407857 0.878988
+vt 0.437036 0.438388
+vt 0.778904 0.000000
+vt 0.780256 0.440507
+vt 0.749725 0.440601
+vt 0.748373 0.000094
+vt 0.713824 0.440711
+vt 0.712473 0.000204
+vt 0.673934 0.440833
+vt 0.672582 0.000326
+vt 0.631586 0.440963
+vt 0.630235 0.000456
+vt 0.588409 0.441095
+vt 0.587057 0.000588
+vt 0.546061 0.441225
+vt 0.544710 0.000718
+vt 0.506171 0.441348
+vt 0.504819 0.000841
+vt 0.470270 0.441458
+vt 0.468919 0.000951
+vt 0.439739 0.441552
+vt 0.720545 0.882916
+vt 0.719194 0.442409
+vt 0.755094 0.442299
+vt 0.756446 0.882806
+vt 0.794985 0.442176
+vt 0.796336 0.882683
+vt 0.837333 0.442046
+vt 0.838684 0.882553
+vt 0.881861 0.882421
+vt 0.880510 0.441914
+vt 0.924209 0.882291
+vt 0.922857 0.441784
+vt 0.964099 0.882168
+vt 0.962748 0.441662
+vt 1.000000 0.882058
+vt 0.717842 0.441552
+vt 0.719194 0.882058
+vt 0.681942 0.441662
+vt 0.683293 0.882169
+vt 0.642051 0.441784
+vt 0.643403 0.882291
+vt 0.599704 0.441914
+vt 0.601055 0.882421
+vt 0.556526 0.442046
+vt 0.557878 0.882553
+vt 0.514179 0.442176
+vt 0.515530 0.882683
+vt 0.474288 0.442299
+vt 0.475640 0.882806
+vt 0.438388 0.442409
+vt 0.097872 0.879939
+vt 0.096520 0.439433
+vt 0.128403 0.879846
+vt 0.127051 0.439339
+vt 0.164303 0.879735
+vt 0.162952 0.439229
+vt 0.204194 0.879613
+vt 0.000000 0.197605
+vt 0.008423 0.155257
+vt 0.000000 0.240783
+vt 0.246541 0.879483
+vt 0.245190 0.438976
+vt 0.202842 0.439106
+vt 0.438388 0.878895
+vt 0.438388 0.001045
+vt 0.998649 0.441552
+vt 0.439739 0.882916
+vt 0.024947 0.115367
+vt 0.048935 0.079466
+vt 0.079466 0.048935
+vt 0.115366 0.024947
+vt 0.155257 0.008424
+vt 0.197605 0.000000
+vt 0.240782 0.000000
+vt 0.283130 0.008423
+vt 0.323021 0.024947
+vt 0.358922 0.048935
+vt 0.389453 0.079466
+vt 0.413441 0.115367
+vt 0.429964 0.155257
+vt 0.438388 0.197605
+vt 0.438388 0.240783
+vt 0.429964 0.283130
+vt 0.413441 0.323021
+vt 0.389453 0.358922
+vt 0.358922 0.389453
+vt 0.323021 0.413441
+vt 0.283130 0.429964
+vt 0.240783 0.438388
+vt 0.197605 0.438388
+vt 0.155257 0.429964
+vt 0.115367 0.413441
+vt 0.079466 0.389453
+vt 0.048935 0.358922
+vt 0.024947 0.323021
+vt 0.008423 0.283130
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.685690 -0.727866
+vn 0.142003 0.685690 -0.713889
+vn 0.195074 0.000000 -0.980773
+vn 0.278542 0.685690 -0.672475
+vn 0.382672 0.000000 -0.923856
+vn 0.404370 0.685690 -0.605213
+vn 0.555559 0.000000 -0.831446
+vn 0.514664 0.685690 -0.514664
+vn 0.707083 0.000000 -0.707083
+vn 0.605213 0.685690 -0.404370
+vn 0.831446 0.000000 -0.555559
+vn 0.672475 0.685690 -0.278542
+vn 0.923856 0.000000 -0.382672
+vn 0.713889 0.685690 -0.142003
+vn 0.980773 0.000000 -0.195074
+vn 0.727866 0.685690 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.713889 0.685690 0.142003
+vn 0.980773 0.000000 0.195074
+vn 0.672475 0.685690 0.278542
+vn 0.923856 0.000000 0.382672
+vn 0.605213 0.685690 0.404370
+vn 0.831446 0.000000 0.555559
+vn 0.514664 0.685690 0.514664
+vn 0.707083 0.000000 0.707083
+vn 0.404370 0.685690 0.605213
+vn 0.555559 0.000000 0.831446
+vn 0.278542 0.685690 0.672475
+vn 0.382672 0.000000 0.923856
+vn 0.142003 0.685690 0.713889
+vn 0.195074 0.000000 0.980773
+vn 0.000000 0.685690 0.727866
+vn 0.000000 0.000000 0.999969
+vn -0.195074 0.000000 0.980773
+vn -0.142003 0.685690 0.713889
+vn -0.382672 0.000000 0.923856
+vn -0.278542 0.685690 0.672475
+vn -0.555559 0.000000 0.831446
+vn -0.404370 0.685690 0.605213
+vn -0.707083 0.000000 0.707083
+vn -0.514664 0.685690 0.514664
+vn -0.831446 0.000000 0.555559
+vn -0.605213 0.685690 0.404370
+vn -0.923856 0.000000 0.382672
+vn -0.672475 0.685690 0.278542
+vn -0.980773 0.000000 0.195074
+vn -0.713889 0.685690 0.142003
+vn -1.000000 0.000000 0.000000
+vn -0.727866 0.685690 0.000000
+vn -0.980773 0.000000 -0.195074
+vn -0.713889 0.685690 -0.142003
+vn -0.923856 0.000000 -0.382672
+vn -0.672475 0.685690 -0.278542
+vn -0.831446 0.000000 -0.555559
+vn -0.605213 0.685690 -0.404370
+vn -0.707083 0.000000 -0.707083
+vn -0.514664 0.685690 -0.514695
+vn -0.555559 0.000000 -0.831446
+vn -0.404370 0.685690 -0.605213
+vn -0.382672 0.000000 -0.923856
+vn -0.195074 0.000000 -0.980773
+vn -0.142003 0.685690 -0.713889
+vn -0.278542 0.685690 -0.672475
+s 1
+f 1/1/1 2/2/2 4/3/3
+f 3/4/4 4/3/3 6/5/5
+f 5/6/6 6/5/5 8/7/7
+f 7/8/8 8/7/7 10/9/9
+f 9/10/10 10/11/9 12/12/11
+f 11/13/12 12/12/11 14/14/13
+f 13/15/14 14/14/13 16/16/15
+f 15/17/16 16/16/15 18/18/17
+f 17/19/18 18/18/17 20/20/19
+f 19/21/20 20/20/19 22/22/21
+f 21/23/22 22/22/21 24/24/23
+f 23/25/24 24/24/23 26/26/25
+f 25/27/26 26/26/25 28/28/27
+f 27/29/28 28/30/27 30/31/29
+f 29/32/30 30/31/29 32/33/31
+f 31/34/32 32/33/31 34/35/33
+f 33/36/34 34/35/33 35/37/35
+f 35/37/35 36/38/36 37/39/37
+f 37/39/37 38/40/38 39/41/39
+f 39/41/39 40/42/40 41/43/41
+f 41/44/41 42/45/42 43/46/43
+f 43/46/43 44/47/44 45/48/45
+f 45/48/45 46/49/46 47/50/47
+f 47/50/47 48/51/48 49/52/49
+f 49/52/49 50/53/50 51/54/51
+f 51/54/51 52/55/52 53/56/53
+f 53/56/53 54/57/54 55/58/55
+f 55/59/55 56/60/56 57/61/57
+f 57/61/57 58/62/58 59/63/59
+f 59/63/59 60/64/60 61/65/61
+f 4/66/3 2/67/2 6/68/5
+f 63/69/62 64/70/63 1/1/1
+f 61/65/61 62/71/64 63/69/62
+f 3/4/4 1/1/1 4/3/3
+f 5/6/6 3/4/4 6/5/5
+f 7/8/8 5/6/6 8/7/7
+f 9/72/10 7/8/8 10/9/9
+f 11/13/12 9/10/10 12/12/11
+f 13/15/14 11/13/12 14/14/13
+f 15/17/16 13/15/14 16/16/15
+f 17/19/18 15/17/16 18/18/17
+f 19/21/20 17/19/18 20/20/19
+f 21/23/22 19/21/20 22/22/21
+f 23/25/24 21/23/22 24/24/23
+f 25/27/26 23/25/24 26/26/25
+f 27/73/28 25/27/26 28/28/27
+f 29/32/30 27/29/28 30/31/29
+f 31/34/32 29/32/30 32/33/31
+f 33/36/34 31/34/32 34/35/33
+f 34/35/33 36/38/36 35/37/35
+f 36/38/36 38/40/38 37/39/37
+f 38/40/38 40/42/40 39/41/39
+f 40/42/40 42/74/42 41/43/41
+f 42/45/42 44/47/44 43/46/43
+f 44/47/44 46/49/46 45/48/45
+f 46/49/46 48/51/48 47/50/47
+f 48/51/48 50/53/50 49/52/49
+f 50/53/50 52/55/52 51/54/51
+f 52/55/52 54/57/54 53/56/53
+f 54/57/54 56/75/56 55/58/55
+f 56/60/56 58/62/58 57/61/57
+f 58/62/58 60/64/60 59/63/59
+f 60/64/60 62/71/64 61/65/61
+f 2/67/2 64/76/63 6/68/5
+f 64/76/63 62/77/64 6/68/5
+f 62/77/64 60/78/60 6/68/5
+f 60/78/60 58/79/58 6/68/5
+f 58/79/58 56/80/56 6/68/5
+f 56/80/56 54/81/54 6/68/5
+f 54/81/54 52/82/52 6/68/5
+f 52/82/52 50/83/50 6/68/5
+f 50/83/50 48/84/48 6/68/5
+f 48/84/48 46/85/46 6/68/5
+f 46/85/46 44/86/44 6/68/5
+f 44/86/44 42/87/42 6/68/5
+f 42/87/42 40/88/40 6/68/5
+f 40/88/40 38/89/38 6/68/5
+f 38/89/38 36/90/36 6/68/5
+f 36/90/36 34/91/33 6/68/5
+f 34/91/33 32/92/31 6/68/5
+f 32/92/31 30/93/29 6/68/5
+f 30/93/29 28/94/27 6/68/5
+f 28/94/27 26/95/25 6/68/5
+f 26/95/25 24/96/23 6/68/5
+f 24/96/23 22/97/21 6/68/5
+f 22/97/21 20/98/19 6/68/5
+f 20/98/19 18/99/17 6/68/5
+f 18/99/17 16/100/15 6/68/5
+f 16/100/15 14/101/13 6/68/5
+f 14/101/13 12/102/11 6/68/5
+f 12/102/11 10/103/9 8/104/7
+f 6/68/5 12/102/11 8/104/7
+f 64/70/63 2/2/2 1/1/1
+f 62/71/64 64/70/63 63/69/62
diff --git a/examples/datavisualization/graphgallery/data/raindata.txt b/examples/datavisualization/graphgallery/data/raindata.txt
new file mode 100644
index 000000000..d95589219
--- /dev/null
+++ b/examples/datavisualization/graphgallery/data/raindata.txt
@@ -0,0 +1,158 @@
+# Rainfall per month from 2010 to 2022 in Northern Finland (Oulu)
+# Format: year, month, rainfall
+2010,1, 0,
+2010,2, 3.4,
+2010,3, 52,
+2010,4, 33.8,
+2010,5, 45.6,
+2010,6, 43.8,
+2010,7, 104.6,
+2010,8, 105.4,
+2010,9, 107.2,
+2010,10,38.6,
+2010,11,17.8,
+2010,12,0,
+2011,1, 8.2,
+2011,2, 1.6,
+2011,3, 27.4,
+2011,4, 15.8,
+2011,5, 57.6,
+2011,6, 85.2,
+2011,7, 127,
+2011,8, 72.2,
+2011,9, 82.2,
+2011,10,62.4,
+2011,11,31.6,
+2011,12,53.8,
+2012,1, 0,
+2012,2, 5,
+2012,3, 32.4,
+2012,4, 57.6,
+2012,5, 71.4,
+2012,6, 60.8,
+2012,7, 109,
+2012,8, 43.6,
+2012,9, 79.4,
+2012,10,117.2,
+2012,11,59,
+2012,12,0.2,
+2013,1, 28,
+2013,2, 19,
+2013,3, 0,
+2013,4, 37.6,
+2013,5, 44.2,
+2013,6, 104.8,
+2013,7, 84.2,
+2013,8, 57.2,
+2013,9, 37.2,
+2013,10,64.6,
+2013,11,77.8,
+2013,12,92.8,
+2014,1, 23.8,
+2014,2, 23.6,
+2014,3, 15.4,
+2014,4, 13.2,
+2014,5, 36.4,
+2014,6, 26.4,
+2014,7, 95.8,
+2014,8, 81.8,
+2014,9, 13.8,
+2014,10,94.6,
+2014,11,44.6,
+2014,12,31,
+2015,1, 37.4,
+2015,2, 21,
+2015,3, 42,
+2015,4, 8.8,
+2015,5, 82.4,
+2015,6, 150,
+2015,7, 56.8,
+2015,8, 67.2,
+2015,9, 131.2,
+2015,10,38.4,
+2015,11,83.4,
+2015,12,47.8,
+2016,1, 12.4,
+2016,2, 34.8,
+2016,3, 29,
+2016,4, 40.4,
+2016,5, 32.4,
+2016,6, 80.2,
+2016,7, 102.6,
+2016,8, 95.6,
+2016,9, 40.2,
+2016,10,7.8,
+2016,11,39.6,
+2016,12,8.8,
+2017,1, 9.4,
+2017,2, 6.6,
+2017,3, 29,
+2017,4, 46.2,
+2017,5, 43.2,
+2017,6, 25.2,
+2017,7, 72.4,
+2017,8, 58.8,
+2017,9, 68.8,
+2017,10,45.8,
+2017,11,36.8,
+2017,12,29.6,
+2018,1, 19.8,
+2018,2, 0.8,
+2018,3, 4,
+2018,4, 23.2,
+2018,5, 13.2,
+2018,6, 62.8,
+2018,7, 33,
+2018,8, 96.6,
+2018,9, 72.6,
+2018,10,48.8,
+2018,11,31.8,
+2018,12,12.8,
+2019,1, 0.2,
+2019,2, 24.8,
+2019,3, 32,
+2019,4, 8.8,
+2019,5, 71.4,
+2019,6, 65.8,
+2019,7, 17.6,
+2019,8, 90,
+2019,9, 50,
+2019,10,77,
+2019,11,27,
+2019,12,43.2,
+2020,1, 28.8,
+2020,2, 45,
+2020,3, 18.6,
+2020,4, 13,
+2020,5, 30.8,
+2020,6, 21.4,
+2020,7, 163.6,
+2020,8, 12,
+2020,9, 102.4,
+2020,10,133.2,
+2020,11,69.8,
+2020,12,40.6,
+2021,1, 0.4,
+2021,2, 21.6,
+2021,3, 24,
+2021,4, 51.4,
+2021,5, 76.4,
+2021,6, 29.2,
+2021,7, 36.4,
+2021,8, 116,
+2021,9, 72.4,
+2021,10,93.4,
+2021,11,21,
+2021,12,10.2,
+2022,1, 8.6,
+2022,2, 6.6,
+2022,3, 5.2,
+2022,4, 15.2,
+2022,5, 37.6,
+2022,6, 45,
+2022,7, 67.4,
+2022,8, 161.6,
+2022,9, 22.8,
+2022,10,75.2,
+2022,11,21.8,
+2022,12,0.2
diff --git a/examples/datavisualization/graphgallery/data/refinery.obj b/examples/datavisualization/graphgallery/data/refinery.obj
new file mode 100644
index 000000000..ed90c3619
--- /dev/null
+++ b/examples/datavisualization/graphgallery/data/refinery.obj
@@ -0,0 +1,2330 @@
+# Blender v2.66 (sub 0) OBJ File: 'oilrefinery.blend'
+# www.blender.org
+v -2.719012 -0.196783 4.805554
+v -2.719012 -0.196783 -4.824533
+v 2.730989 -0.196783 -4.824533
+v 2.730989 -0.196783 4.805554
+v -2.719012 0.012961 4.805554
+v -2.719012 0.012961 -4.824533
+v 2.730989 0.012961 -4.824533
+v 2.730989 0.012961 4.805554
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.000000 1.000000
+vt 1.000000 1.000000
+vn -0.577349 0.577349 0.577349
+vn -0.577349 0.577349 -0.577349
+vn -0.577349 -0.577349 0.577349
+vn 0.577349 0.577349 -0.577349
+vn 0.577349 -0.577349 -0.577349
+vn 0.577349 0.577349 0.577349
+vn 0.577349 -0.577349 0.577349
+vn -0.577349 -0.577349 -0.577349
+s 1
+f 5/1/1 6/2/2 1/3/3
+f 6/1/2 7/2/4 3/4/5
+f 7/1/4 8/2/6 4/4/7
+f 8/1/6 5/2/1 1/4/3
+f 1/1/3 2/2/8 3/4/5
+f 8/1/6 7/2/4 6/4/2
+f 6/2/2 2/4/8 1/3/3
+f 2/3/8 6/1/2 3/4/5
+f 3/3/5 7/1/4 4/4/7
+f 4/3/7 8/1/6 1/4/3
+f 4/3/7 1/1/3 3/4/5
+f 5/3/1 8/1/6 6/4/2
+v -1.384247 1.252743 0.422195
+v -1.384247 2.069450 0.422195
+v -1.303725 1.252743 0.430041
+v -1.303725 2.069450 0.430041
+v -1.226298 1.252743 0.453279
+v -1.226298 2.069450 0.453279
+v -1.154941 1.252743 0.491015
+v -1.154941 2.069450 0.491015
+v -1.092396 1.252743 0.541799
+v -1.092396 2.069450 0.541799
+v -1.041066 1.252743 0.603679
+v -1.041066 2.069450 0.603679
+v -1.002925 1.252743 0.674278
+v -1.002925 2.069450 0.674278
+v -0.979437 1.252743 0.750883
+v -0.979437 2.069450 0.750883
+v -0.971507 1.252743 0.830548
+v -0.971507 2.069450 0.830548
+v -0.979437 1.252743 0.910214
+v -0.979437 2.069450 0.910214
+v -1.002925 1.252743 0.986818
+v -1.002925 2.069450 0.986818
+v -1.041066 1.252743 1.057417
+v -1.041066 2.069450 1.057417
+v -1.092396 1.252743 1.119298
+v -1.092396 2.069450 1.119298
+v -1.154941 1.252743 1.170082
+v -1.154941 2.069450 1.170082
+v -1.226298 1.252743 1.207818
+v -1.226298 2.069450 1.207818
+v -1.303726 1.252743 1.231055
+v -1.303726 2.069450 1.231055
+v -1.384247 1.252743 1.238902
+v -1.384247 2.069450 1.238902
+v -1.464769 1.252743 1.231055
+v -1.464769 2.069450 1.231055
+v -1.542196 1.252743 1.207818
+v -1.542196 2.069450 1.207818
+v -1.613554 1.252743 1.170082
+v -1.613554 2.069450 1.170082
+v -1.676099 1.252743 1.119298
+v -1.676099 2.069450 1.119298
+v -1.727429 1.252743 1.057417
+v -1.727429 2.069450 1.057417
+v -1.765570 1.252743 0.986818
+v -1.765570 2.069450 0.986818
+v -1.789057 1.252743 0.910214
+v -1.789057 2.069450 0.910214
+v -1.796988 1.252743 0.830548
+v -1.796988 2.069450 0.830548
+v -1.789057 1.252743 0.750882
+v -1.789057 2.069450 0.750882
+v -1.765570 1.252743 0.674278
+v -1.765570 2.069450 0.674278
+v -1.727428 1.252743 0.603679
+v -1.727428 2.069450 0.603679
+v -1.676098 1.252743 0.541798
+v -1.676098 2.069450 0.541798
+v -1.613553 1.252743 0.491015
+v -1.613553 2.069450 0.491015
+v -1.542196 1.252743 0.453279
+v -1.542196 2.069450 0.453279
+v -1.464768 1.252743 0.430041
+v -1.464768 2.069450 0.430041
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.853553 0.146447
+vt 0.777785 0.084265
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.500000 0.000000
+vt 0.402455 0.009607
+vt 0.308658 0.038060
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.084265 0.222215
+vt 0.038060 0.308659
+vt 0.009607 0.402455
+vt 0.000000 0.500000
+vt 0.009607 0.597546
+vt 0.038060 0.691342
+vt 0.084266 0.777786
+vt 0.146447 0.853554
+vt 0.222215 0.915735
+vt 0.308659 0.961940
+vn 0.096985 0.000000 -0.995286
+vn 0.287455 0.000000 -0.957794
+vn 0.467486 0.000000 -0.884001
+vn 0.630338 0.000000 -0.776321
+vn 0.769672 0.000000 -0.638440
+vn 0.879812 0.000000 -0.475321
+vn 0.956070 0.000000 -0.293137
+vn 0.995081 0.000000 -0.099061
+vn 0.995081 0.000000 0.099061
+vn 0.956070 0.000000 0.293137
+vn 0.879813 0.000000 0.475321
+vn 0.769672 0.000000 0.638440
+vn 0.630338 0.000000 0.776321
+vn 0.467486 0.000000 0.884001
+vn 0.287455 0.000000 0.957794
+vn 0.096986 0.000000 0.995286
+vn -0.096986 0.000000 0.995286
+vn -0.287456 0.000000 0.957794
+vn -0.467486 0.000000 0.884001
+vn -0.630338 0.000000 0.776321
+vn -0.769673 0.000000 0.638438
+vn -0.879812 0.000000 0.475322
+vn -0.956071 0.000000 0.293135
+vn -0.995081 0.000000 0.099059
+vn -0.995081 -0.000000 -0.099061
+vn -0.956070 -0.000000 -0.293138
+vn -0.879812 -0.000000 -0.475322
+vn -0.769671 -0.000000 -0.638441
+vn -0.630337 -0.000000 -0.776322
+vn -0.467484 -0.000000 -0.884001
+vn -0.000000 1.000000 0.000000
+vn -0.096985 -0.000000 -0.995286
+vn -0.287454 -0.000000 -0.957794
+vn 0.000000 -1.000000 -0.000000
+s off
+f 9/5/9 10/6/9 12/7/9
+f 11/5/10 12/6/10 14/7/10
+f 13/5/11 14/6/11 16/7/11
+f 15/5/12 16/6/12 18/7/12
+f 17/5/13 18/6/13 20/7/13
+f 19/5/14 20/6/14 22/7/14
+f 21/5/15 22/6/15 24/7/15
+f 23/5/16 24/6/16 26/7/16
+f 25/5/17 26/6/17 28/7/17
+f 27/5/18 28/6/18 30/7/18
+f 29/5/19 30/6/19 32/7/19
+f 31/5/20 32/6/20 34/7/20
+f 33/5/21 34/6/21 36/7/21
+f 35/5/22 36/6/22 38/7/22
+f 37/5/23 38/6/23 40/7/23
+f 39/5/24 40/6/24 42/7/24
+f 41/5/25 42/6/25 43/8/25
+f 43/5/26 44/6/26 45/8/26
+f 45/5/27 46/6/27 47/8/27
+f 47/5/28 48/6/28 49/8/28
+f 49/5/29 50/6/29 51/8/29
+f 51/5/30 52/6/30 53/8/30
+f 53/5/31 54/6/31 55/8/31
+f 55/5/32 56/6/32 57/8/32
+f 57/5/33 58/6/33 59/8/33
+f 59/5/34 60/6/34 61/8/34
+f 61/5/35 62/6/35 63/8/35
+f 63/5/36 64/6/36 65/8/36
+f 65/5/37 66/6/37 67/8/37
+f 67/5/38 68/6/38 69/8/38
+f 12/9/39 10/10/39 14/11/39
+f 71/5/40 72/6/40 9/8/40
+f 69/5/41 70/6/41 71/8/41
+f 9/9/42 11/10/42 71/11/42
+f 11/8/9 9/5/9 12/7/9
+f 13/8/10 11/5/10 14/7/10
+f 15/8/11 13/5/11 16/7/11
+f 17/8/12 15/5/12 18/7/12
+f 19/8/13 17/5/13 20/7/13
+f 21/8/14 19/5/14 22/7/14
+f 23/8/15 21/5/15 24/7/15
+f 25/8/16 23/5/16 26/7/16
+f 27/8/17 25/5/17 28/7/17
+f 29/8/18 27/5/18 30/7/18
+f 31/8/19 29/5/19 32/7/19
+f 33/8/20 31/5/20 34/7/20
+f 35/8/21 33/5/21 36/7/21
+f 37/8/22 35/5/22 38/7/22
+f 39/8/23 37/5/23 40/7/23
+f 41/8/24 39/5/24 42/7/24
+f 42/6/25 44/7/25 43/8/25
+f 44/6/26 46/7/26 45/8/26
+f 46/6/27 48/7/27 47/8/27
+f 48/6/28 50/7/28 49/8/28
+f 50/6/29 52/7/29 51/8/29
+f 52/6/30 54/7/30 53/8/30
+f 54/6/31 56/7/31 55/8/31
+f 56/6/32 58/7/32 57/8/32
+f 58/6/33 60/7/33 59/8/33
+f 60/6/34 62/7/34 61/8/34
+f 62/6/35 64/7/35 63/8/35
+f 64/6/36 66/7/36 65/8/36
+f 66/6/37 68/7/37 67/8/37
+f 68/6/38 70/7/38 69/8/38
+f 10/10/39 72/12/39 14/11/39
+f 72/12/39 70/13/39 14/11/39
+f 70/13/39 68/14/39 14/11/39
+f 68/14/39 66/15/39 14/11/39
+f 66/15/39 64/16/39 14/11/39
+f 64/16/39 62/17/39 14/11/39
+f 62/17/39 60/18/39 14/11/39
+f 60/18/39 58/19/39 14/11/39
+f 58/19/39 56/20/39 14/11/39
+f 56/20/39 54/21/39 14/11/39
+f 54/21/39 52/22/39 14/11/39
+f 52/22/39 50/23/39 14/11/39
+f 50/23/39 48/24/39 14/11/39
+f 48/24/39 46/25/39 14/11/39
+f 46/25/39 44/26/39 14/11/39
+f 44/26/39 42/27/39 14/11/39
+f 42/27/39 40/28/39 14/11/39
+f 40/28/39 38/29/39 14/11/39
+f 38/29/39 36/30/39 14/11/39
+f 36/30/39 34/31/39 14/11/39
+f 34/31/39 32/32/39 14/11/39
+f 32/32/39 30/33/39 14/11/39
+f 30/33/39 28/34/39 14/11/39
+f 28/34/39 26/35/39 14/11/39
+f 26/35/39 24/36/39 14/11/39
+f 24/36/39 22/37/39 14/11/39
+f 22/37/39 20/38/39 14/11/39
+f 20/38/39 18/39/39 16/40/39
+f 14/11/39 20/38/39 16/40/39
+f 72/6/40 10/7/40 9/8/40
+f 70/6/41 72/7/41 71/8/41
+f 11/10/42 13/12/42 71/11/42
+f 13/12/42 15/13/42 71/11/42
+f 15/13/42 17/14/42 71/11/42
+f 17/14/42 19/15/42 71/11/42
+f 19/15/42 21/16/42 71/11/42
+f 21/16/42 23/17/42 71/11/42
+f 23/17/42 25/18/42 71/11/42
+f 25/18/42 27/19/42 71/11/42
+f 27/19/42 29/20/42 71/11/42
+f 29/20/42 31/21/42 71/11/42
+f 31/21/42 33/22/42 71/11/42
+f 33/22/42 35/23/42 71/11/42
+f 35/23/42 37/24/42 71/11/42
+f 37/24/42 39/25/42 71/11/42
+f 39/25/42 41/26/42 71/11/42
+f 41/26/42 43/27/42 71/11/42
+f 43/27/42 45/28/42 71/11/42
+f 45/28/42 47/29/42 71/11/42
+f 47/29/42 49/30/42 71/11/42
+f 49/30/42 51/31/42 71/11/42
+f 51/31/42 53/32/42 71/11/42
+f 53/32/42 55/33/42 71/11/42
+f 55/33/42 57/34/42 71/11/42
+f 57/34/42 59/35/42 71/11/42
+f 59/35/42 61/36/42 71/11/42
+f 61/36/42 63/37/42 71/11/42
+f 63/37/42 65/38/42 71/11/42
+f 65/38/42 67/39/42 71/11/42
+f 67/39/42 69/40/42 71/11/42
+v 1.365790 1.252743 0.402799
+v 1.365790 2.069450 0.402799
+v 1.446312 1.252743 0.410646
+v 1.446312 2.069450 0.410646
+v 1.523739 1.252743 0.433883
+v 1.523739 2.069450 0.433883
+v 1.595097 1.252743 0.471619
+v 1.595097 2.069450 0.471619
+v 1.657642 1.252743 0.522403
+v 1.657642 2.069450 0.522403
+v 1.708972 1.252743 0.584284
+v 1.708972 2.069450 0.584284
+v 1.747113 1.252743 0.654883
+v 1.747113 2.069450 0.654883
+v 1.770600 1.252743 0.731487
+v 1.770600 2.069450 0.731487
+v 1.778531 1.252743 0.811153
+v 1.778531 2.069450 0.811153
+v 1.770600 1.252743 0.890818
+v 1.770600 2.069450 0.890818
+v 1.747113 1.252743 0.967423
+v 1.747113 2.069450 0.967423
+v 1.708972 1.252743 1.038022
+v 1.708972 2.069450 1.038022
+v 1.657642 1.252743 1.099902
+v 1.657642 2.069450 1.099902
+v 1.595097 1.252743 1.150686
+v 1.595097 2.069450 1.150686
+v 1.523739 1.252743 1.188422
+v 1.523739 2.069450 1.188422
+v 1.446312 1.252743 1.211660
+v 1.446312 2.069450 1.211660
+v 1.365790 1.252743 1.219506
+v 1.365790 2.069450 1.219506
+v 1.285269 1.252743 1.211660
+v 1.285269 2.069450 1.211660
+v 1.207841 1.252743 1.188422
+v 1.207841 2.069450 1.188422
+v 1.136484 1.252743 1.150686
+v 1.136484 2.069450 1.150686
+v 1.073939 1.252743 1.099902
+v 1.073939 2.069450 1.099902
+v 1.022609 1.252743 1.038021
+v 1.022609 2.069450 1.038021
+v 0.984468 1.252743 0.967422
+v 0.984468 2.069450 0.967422
+v 0.960981 1.252743 0.890818
+v 0.960981 2.069450 0.890818
+v 0.953050 1.252743 0.811152
+v 0.953050 2.069450 0.811152
+v 0.960981 1.252743 0.731486
+v 0.960981 2.069450 0.731486
+v 0.984468 1.252743 0.654882
+v 0.984468 2.069450 0.654882
+v 1.022609 1.252743 0.584283
+v 1.022609 2.069450 0.584283
+v 1.073939 1.252743 0.522403
+v 1.073939 2.069450 0.522403
+v 1.136485 1.252743 0.471619
+v 1.136485 2.069450 0.471619
+v 1.207842 1.252743 0.433883
+v 1.207842 2.069450 0.433883
+v 1.285269 1.252743 0.410646
+v 1.285269 2.069450 0.410646
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.853553 0.146447
+vt 0.777785 0.084265
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.500000 0.000000
+vt 0.402455 0.009607
+vt 0.308658 0.038060
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.084265 0.222215
+vt 0.038060 0.308659
+vt 0.009607 0.402455
+vt 0.000000 0.500000
+vt 0.009607 0.597546
+vt 0.038060 0.691342
+vt 0.084266 0.777786
+vt 0.146447 0.853554
+vt 0.222215 0.915735
+vt 0.308659 0.961940
+vn -0.879812 0.000000 0.475321
+vn -0.956071 0.000000 0.293136
+vn -0.956070 -0.000000 -0.293137
+s off
+f 73/41/9 74/42/9 76/43/9
+f 75/41/10 76/42/10 78/43/10
+f 77/41/11 78/42/11 80/43/11
+f 79/41/12 80/42/12 82/43/12
+f 81/41/13 82/42/13 84/43/13
+f 83/41/14 84/42/14 86/43/14
+f 85/41/15 86/42/15 88/43/15
+f 87/41/16 88/42/16 90/43/16
+f 89/41/17 90/42/17 92/43/17
+f 91/41/18 92/42/18 94/43/18
+f 93/41/19 94/42/19 96/43/19
+f 95/41/20 96/42/20 98/43/20
+f 97/41/21 98/42/21 100/43/21
+f 99/41/22 100/42/22 102/43/22
+f 101/41/23 102/42/23 104/43/23
+f 103/41/24 104/42/24 106/43/24
+f 105/41/25 106/42/25 107/44/25
+f 107/41/26 108/42/26 109/44/26
+f 109/41/27 110/42/27 111/44/27
+f 111/41/28 112/42/28 113/44/28
+f 113/41/29 114/42/29 115/44/29
+f 115/41/43 116/42/43 117/44/43
+f 117/41/44 118/42/44 119/44/44
+f 119/41/32 120/42/32 121/44/32
+f 121/41/33 122/42/33 123/44/33
+f 123/41/45 124/42/45 125/44/45
+f 125/41/35 126/42/35 127/44/35
+f 127/41/36 128/42/36 129/44/36
+f 129/41/37 130/42/37 131/44/37
+f 131/41/38 132/42/38 133/44/38
+f 76/45/39 74/46/39 78/47/39
+f 135/41/40 136/42/40 73/44/40
+f 133/41/41 134/42/41 135/44/41
+f 73/45/42 75/46/42 135/47/42
+f 75/44/9 73/41/9 76/43/9
+f 77/44/10 75/41/10 78/43/10
+f 79/44/11 77/41/11 80/43/11
+f 81/44/12 79/41/12 82/43/12
+f 83/44/13 81/41/13 84/43/13
+f 85/44/14 83/41/14 86/43/14
+f 87/44/15 85/41/15 88/43/15
+f 89/44/16 87/41/16 90/43/16
+f 91/44/17 89/41/17 92/43/17
+f 93/44/18 91/41/18 94/43/18
+f 95/44/19 93/41/19 96/43/19
+f 97/44/20 95/41/20 98/43/20
+f 99/44/21 97/41/21 100/43/21
+f 101/44/22 99/41/22 102/43/22
+f 103/44/23 101/41/23 104/43/23
+f 105/44/24 103/41/24 106/43/24
+f 106/42/25 108/43/25 107/44/25
+f 108/42/26 110/43/26 109/44/26
+f 110/42/27 112/43/27 111/44/27
+f 112/42/28 114/43/28 113/44/28
+f 114/42/29 116/43/29 115/44/29
+f 116/42/43 118/43/43 117/44/43
+f 118/42/44 120/43/44 119/44/44
+f 120/42/32 122/43/32 121/44/32
+f 122/42/33 124/43/33 123/44/33
+f 124/42/45 126/43/45 125/44/45
+f 126/42/35 128/43/35 127/44/35
+f 128/42/36 130/43/36 129/44/36
+f 130/42/37 132/43/37 131/44/37
+f 132/42/38 134/43/38 133/44/38
+f 74/46/39 136/48/39 78/47/39
+f 136/48/39 134/49/39 78/47/39
+f 134/49/39 132/50/39 78/47/39
+f 132/50/39 130/51/39 78/47/39
+f 130/51/39 128/52/39 78/47/39
+f 128/52/39 126/53/39 78/47/39
+f 126/53/39 124/54/39 78/47/39
+f 124/54/39 122/55/39 78/47/39
+f 122/55/39 120/56/39 78/47/39
+f 120/56/39 118/57/39 78/47/39
+f 118/57/39 116/58/39 78/47/39
+f 116/58/39 114/59/39 78/47/39
+f 114/59/39 112/60/39 78/47/39
+f 112/60/39 110/61/39 78/47/39
+f 110/61/39 108/62/39 78/47/39
+f 108/62/39 106/63/39 78/47/39
+f 106/63/39 104/64/39 78/47/39
+f 104/64/39 102/65/39 78/47/39
+f 102/65/39 100/66/39 78/47/39
+f 100/66/39 98/67/39 78/47/39
+f 98/67/39 96/68/39 78/47/39
+f 96/68/39 94/69/39 78/47/39
+f 94/69/39 92/70/39 78/47/39
+f 92/70/39 90/71/39 78/47/39
+f 90/71/39 88/72/39 78/47/39
+f 88/72/39 86/73/39 78/47/39
+f 86/73/39 84/74/39 78/47/39
+f 84/74/39 82/75/39 80/76/39
+f 78/47/39 84/74/39 80/76/39
+f 136/42/40 74/43/40 73/44/40
+f 134/42/41 136/43/41 135/44/41
+f 75/46/42 77/48/42 135/47/42
+f 77/48/42 79/49/42 135/47/42
+f 79/49/42 81/50/42 135/47/42
+f 81/50/42 83/51/42 135/47/42
+f 83/51/42 85/52/42 135/47/42
+f 85/52/42 87/53/42 135/47/42
+f 87/53/42 89/54/42 135/47/42
+f 89/54/42 91/55/42 135/47/42
+f 91/55/42 93/56/42 135/47/42
+f 93/56/42 95/57/42 135/47/42
+f 95/57/42 97/58/42 135/47/42
+f 97/58/42 99/59/42 135/47/42
+f 99/59/42 101/60/42 135/47/42
+f 101/60/42 103/61/42 135/47/42
+f 103/61/42 105/62/42 135/47/42
+f 105/62/42 107/63/42 135/47/42
+f 107/63/42 109/64/42 135/47/42
+f 109/64/42 111/65/42 135/47/42
+f 111/65/42 113/66/42 135/47/42
+f 113/66/42 115/67/42 135/47/42
+f 115/67/42 117/68/42 135/47/42
+f 117/68/42 119/69/42 135/47/42
+f 119/69/42 121/70/42 135/47/42
+f 121/70/42 123/71/42 135/47/42
+f 123/71/42 125/72/42 135/47/42
+f 125/72/42 127/73/42 135/47/42
+f 127/73/42 129/74/42 135/47/42
+f 129/74/42 131/75/42 135/47/42
+f 131/75/42 133/76/42 135/47/42
+v -2.345663 0.025178 -0.194338
+v -2.345663 0.025178 -0.594338
+v -1.345663 0.025178 -0.594338
+v -1.345663 0.025178 -0.194338
+v -2.345663 1.525178 -0.194338
+v -2.345663 1.525178 -0.594338
+v -1.345663 1.525178 -0.594338
+v -1.345663 1.525178 -0.194338
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.000000 1.000000
+vt 1.000000 1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 -0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+s off
+f 141/77/46 142/78/46 137/79/46
+f 142/77/47 143/78/47 138/79/47
+f 143/77/48 144/78/48 140/80/48
+f 144/77/49 141/78/49 137/80/49
+f 137/77/42 138/78/42 139/80/42
+f 144/77/39 143/78/39 142/80/39
+f 142/78/46 138/80/46 137/79/46
+f 143/78/47 139/80/47 138/79/47
+f 139/79/48 143/77/48 140/80/48
+f 140/79/49 144/77/49 137/80/49
+f 140/79/42 137/77/42 139/80/42
+f 141/79/39 144/77/39 142/80/39
+v 1.364119 0.019809 -0.205019
+v 1.364119 0.019809 -0.605019
+v 2.364120 0.019809 -0.605019
+v 2.364120 0.019809 -0.205019
+v 1.364119 1.419809 -0.205019
+v 1.364119 1.419809 -0.605019
+v 2.364120 1.419809 -0.605019
+v 2.364120 1.419809 -0.205019
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.000000 1.000000
+vt 1.000000 1.000000
+s off
+f 149/81/46 150/82/46 145/83/46
+f 150/81/47 151/82/47 146/83/47
+f 151/81/48 152/82/48 148/84/48
+f 152/81/49 149/82/49 145/84/49
+f 145/81/42 146/82/42 147/84/42
+f 152/81/39 151/82/39 150/84/39
+f 150/82/46 146/84/46 145/83/46
+f 151/82/47 147/84/47 146/83/47
+f 147/83/48 151/81/48 148/84/48
+f 148/83/49 152/81/49 145/84/49
+f 148/83/42 145/81/42 147/84/42
+f 149/83/39 152/81/39 150/84/39
+v -1.384247 0.015116 3.993316
+v -1.384247 0.015113 -0.006684
+v -1.189157 0.034331 3.993316
+v -1.189157 0.034328 -0.006684
+v -1.001564 0.091236 3.993316
+v -1.001564 0.091234 -0.006684
+v -0.828677 0.183646 3.993316
+v -0.828677 0.183644 -0.006684
+v -0.677140 0.308009 3.993316
+v -0.677140 0.308007 -0.006684
+v -0.552777 0.459546 3.993316
+v -0.552777 0.459543 -0.006684
+v -0.460368 0.632432 3.993316
+v -0.460368 0.632430 -0.006684
+v -0.403462 0.820025 3.993316
+v -0.403462 0.820023 -0.006684
+v -0.384247 1.015116 3.993316
+v -0.384247 1.015113 -0.006684
+v -0.403462 1.210206 3.993316
+v -0.403462 1.210203 -0.006685
+v -0.460368 1.397799 3.993315
+v -0.460368 1.397797 -0.006685
+v -0.552777 1.570686 3.993315
+v -0.552777 1.570683 -0.006685
+v -0.677140 1.722223 3.993315
+v -0.677140 1.722220 -0.006685
+v -0.828677 1.846586 3.993315
+v -0.828677 1.846583 -0.006685
+v -1.001564 1.938995 3.993315
+v -1.001564 1.938993 -0.006685
+v -1.189157 1.995901 3.993315
+v -1.189157 1.995899 -0.006685
+v -1.384247 2.015116 3.993315
+v -1.384247 2.015113 -0.006685
+v -1.579338 1.995901 3.993315
+v -1.579338 1.995898 -0.006685
+v -1.766931 1.938995 3.993315
+v -1.766931 1.938993 -0.006685
+v -1.939818 1.846585 3.993315
+v -1.939818 1.846583 -0.006685
+v -2.091354 1.722222 3.993315
+v -2.091354 1.722220 -0.006685
+v -2.215717 1.570685 3.993315
+v -2.215717 1.570683 -0.006685
+v -2.308127 1.397799 3.993315
+v -2.308127 1.397796 -0.006685
+v -2.365032 1.210205 3.993316
+v -2.365032 1.210203 -0.006685
+v -2.384247 1.015115 3.993316
+v -2.384247 1.015112 -0.006684
+v -2.365032 0.820024 3.993316
+v -2.365032 0.820022 -0.006684
+v -2.308126 0.632431 3.993316
+v -2.308126 0.632429 -0.006684
+v -2.215716 0.459545 3.993316
+v -2.215716 0.459542 -0.006684
+v -2.091353 0.308008 3.993316
+v -2.091353 0.308006 -0.006684
+v -1.939816 0.183645 3.993316
+v -1.939816 0.183643 -0.006684
+v -1.766929 0.091236 3.993316
+v -1.766929 0.091233 -0.006684
+v -1.579336 0.034330 3.993316
+v -1.579336 0.034328 -0.006684
+v -1.384247 0.619839 -0.156215
+v -1.307133 0.627434 -0.156215
+v -1.232982 0.649928 -0.156215
+v -1.164645 0.686455 -0.156215
+v -1.104746 0.735612 -0.156215
+v -1.055589 0.795511 -0.156215
+v -1.019062 0.863848 -0.156216
+v -0.996568 0.937999 -0.156216
+v -0.988973 1.015113 -0.156216
+v -0.996568 1.092227 -0.156216
+v -1.019062 1.166378 -0.156216
+v -1.055589 1.234715 -0.156216
+v -1.104746 1.294614 -0.156216
+v -1.164645 1.343771 -0.156216
+v -1.232982 1.380298 -0.156216
+v -1.307133 1.402792 -0.156216
+v -1.384247 1.410387 -0.156216
+v -1.461361 1.402792 -0.156216
+v -1.535512 1.380298 -0.156216
+v -1.603849 1.343771 -0.156216
+v -1.663748 1.294613 -0.156216
+v -1.712905 1.234715 -0.156216
+v -1.749432 1.166377 -0.156216
+v -1.771926 1.092227 -0.156216
+v -1.779521 1.015113 -0.156216
+v -1.771925 0.937999 -0.156216
+v -1.749432 0.863848 -0.156216
+v -1.712905 0.795510 -0.156215
+v -1.663747 0.735612 -0.156215
+v -1.603849 0.686455 -0.156215
+v -1.535511 0.649928 -0.156215
+v -1.461360 0.627434 -0.156215
+v -1.384247 0.605419 4.159918
+v -1.304319 0.613291 4.159918
+v -1.227463 0.636605 4.159918
+v -1.156632 0.674465 4.159918
+v -1.094548 0.725416 4.159918
+v -1.043596 0.787500 4.159918
+v -1.005736 0.858332 4.159918
+v -0.982422 0.935188 4.159918
+v -0.974550 1.015116 4.159918
+v -0.982422 1.095044 4.159918
+v -1.005736 1.171900 4.159918
+v -1.043596 1.242731 4.159918
+v -1.094548 1.304815 4.159918
+v -1.156632 1.355766 4.159918
+v -1.227463 1.393626 4.159918
+v -1.304319 1.416940 4.159918
+v -1.384247 1.424813 4.159918
+v -1.464175 1.416940 4.159918
+v -1.541031 1.393626 4.159918
+v -1.611863 1.355766 4.159918
+v -1.673947 1.304815 4.159918
+v -1.724898 1.242731 4.159918
+v -1.762758 1.171900 4.159918
+v -1.786072 1.095043 4.159918
+v -1.793944 1.015115 4.159918
+v -1.786072 0.935187 4.159918
+v -1.762757 0.858331 4.159918
+v -1.724897 0.787500 4.159918
+v -1.673946 0.725416 4.159918
+v -1.611862 0.674465 4.159918
+v -1.541031 0.636605 4.159918
+v -1.464174 0.613291 4.159918
+v 0.006492 3.927105 -3.525056
+v 0.006492 4.374522 -3.525055
+v 0.050135 3.927105 -3.520757
+v 0.050135 4.374522 -3.520757
+v 0.092102 3.927104 -3.508027
+v 0.092102 4.374522 -3.508027
+v 0.130778 3.927104 -3.487354
+v 0.130778 4.374522 -3.487354
+v 0.164678 3.927104 -3.459533
+v 0.164678 4.374522 -3.459533
+v 0.192499 3.927104 -3.425632
+v 0.192499 4.374522 -3.425633
+v 0.213172 3.927105 -3.386956
+v 0.213172 4.374522 -3.386957
+v 0.225902 3.927105 -3.344990
+v 0.225902 4.374522 -3.344990
+v 0.230201 3.927105 -3.301347
+v 0.230201 4.374522 -3.301347
+v 0.225902 3.927105 -3.257704
+v 0.225902 4.374522 -3.257703
+v 0.213172 3.927105 -3.215737
+v 0.213172 4.374522 -3.215738
+v 0.192499 3.927105 -3.177061
+v 0.192499 4.374522 -3.177062
+v 0.164678 3.927105 -3.143161
+v 0.164678 4.374522 -3.143161
+v 0.130778 3.927105 -3.115340
+v 0.130778 4.374522 -3.115340
+v 0.092102 3.927105 -3.094666
+v 0.092102 4.374522 -3.094667
+v 0.050135 3.927105 -3.081937
+v 0.050135 4.374522 -3.081936
+v 0.006492 3.927105 -3.077638
+v 0.006492 4.374522 -3.077638
+v -0.037151 3.927105 -3.081937
+v -0.037151 4.374522 -3.081936
+v -0.079118 3.927105 -3.094666
+v -0.079118 4.374522 -3.094667
+v -0.117794 3.927105 -3.115340
+v -0.117794 4.374522 -3.115340
+v -0.151694 3.927105 -3.143161
+v -0.151694 4.374522 -3.143161
+v -0.179515 3.927105 -3.177061
+v -0.179515 4.374522 -3.177062
+v -0.200188 3.927105 -3.215737
+v -0.200188 4.374522 -3.215738
+v -0.212918 3.927105 -3.257704
+v -0.212918 4.374522 -3.257704
+v -0.217217 3.927105 -3.301347
+v -0.217217 4.374522 -3.301347
+v -0.212918 3.927105 -3.344991
+v -0.212918 4.374522 -3.344990
+v -0.200188 3.927105 -3.386957
+v -0.200188 4.374522 -3.386957
+v -0.179515 3.927104 -3.425633
+v -0.179515 4.374522 -3.425633
+v -0.151694 3.927104 -3.459533
+v -0.151694 4.374522 -3.459533
+v -0.117794 3.927104 -3.487354
+v -0.117794 4.374522 -3.487354
+v -0.079117 3.927104 -3.508027
+v -0.079117 4.374522 -3.508027
+v -0.037151 3.927105 -3.520757
+v -0.037151 4.374522 -3.520757
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.853553 0.853553
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.500000 0.000000
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.777785 0.084265
+vt 0.853553 0.146447
+vt 0.084265 0.222215
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.038060 0.308659
+vt 0.222215 0.915735
+vt 0.308659 0.961940
+vt 0.146447 0.853554
+vt 0.990393 0.597545
+vt 0.084266 0.777786
+vt 0.038060 0.691342
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.009607 0.597546
+vt 0.000000 0.500000
+vt 0.915735 0.222215
+vt 0.009607 0.402455
+vt 0.402455 0.009607
+vt 0.308658 0.038060
+vn 0.098018 -0.995185 0.000001
+vn 0.290285 -0.956940 0.000001
+vn 0.471397 -0.881921 0.000001
+vn 0.634393 -0.773010 0.000000
+vn 0.773010 -0.634393 0.000000
+vn 0.881921 -0.471397 0.000000
+vn 0.956940 -0.290285 0.000000
+vn 0.995185 -0.098017 0.000000
+vn 0.995185 0.098017 -0.000000
+vn 0.956940 0.290285 -0.000000
+vn 0.881922 0.471396 -0.000000
+vn 0.773010 0.634393 -0.000000
+vn 0.634393 0.773011 -0.000000
+vn 0.471397 0.881921 -0.000001
+vn 0.290284 0.956941 -0.000001
+vn 0.098017 0.995185 -0.000001
+vn -0.098017 0.995185 -0.000001
+vn -0.290285 0.956940 -0.000001
+vn -0.471397 0.881921 -0.000001
+vn -0.634394 0.773010 -0.000000
+vn -0.773011 0.634393 -0.000000
+vn -0.881922 0.471396 -0.000000
+vn -0.956941 0.290283 -0.000000
+vn -0.995185 0.098017 -0.000000
+vn -0.995185 -0.098018 0.000000
+vn -0.956940 -0.290286 0.000000
+vn -0.881920 -0.471398 0.000000
+vn -0.773010 -0.634394 0.000000
+vn -0.634393 -0.773011 0.000000
+vn -0.471395 -0.881922 0.000001
+vn -0.239975 -0.023636 -0.970491
+vn -0.098017 -0.995185 0.000001
+vn -0.290283 -0.956941 0.000001
+vn -0.210907 0.173086 0.962060
+vn 0.152975 0.186400 -0.970492
+vn -0.023635 -0.239975 -0.970491
+vn -0.152975 0.186400 -0.970492
+vn 0.239975 -0.023636 -0.970491
+vn -0.212662 -0.113672 -0.970491
+vn 0.069999 0.230752 -0.970492
+vn 0.113670 -0.212663 -0.970491
+vn -0.212662 0.113670 -0.970492
+vn 0.230752 0.069998 -0.970492
+vn -0.152975 -0.186401 -0.970491
+vn -0.023636 0.239974 -0.970492
+vn 0.186400 -0.152976 -0.970491
+vn -0.239974 0.023634 -0.970491
+vn 0.186401 0.152974 -0.970491
+vn -0.069998 -0.230753 -0.970491
+vn -0.113670 0.212662 -0.970492
+vn 0.230753 -0.069999 -0.970491
+vn -0.230752 -0.069999 -0.970491
+vn 0.113670 0.212662 -0.970491
+vn 0.069998 -0.230753 -0.970491
+vn -0.186401 0.152974 -0.970491
+vn 0.239975 0.023634 -0.970492
+vn -0.186400 -0.152976 -0.970491
+vn 0.023635 0.239974 -0.970492
+vn 0.152975 -0.186401 -0.970491
+vn -0.230752 0.069998 -0.970492
+vn 0.023636 -0.239975 -0.970491
+vn 0.212662 0.113670 -0.970492
+vn -0.113670 -0.212664 -0.970491
+vn -0.069999 0.230751 -0.970492
+vn 0.212663 -0.113671 -0.970491
+vn 0.271524 0.026743 0.962060
+vn -0.210906 -0.173085 0.962060
+vn 0.026743 0.271524 0.962060
+vn 0.173086 -0.210906 0.962060
+vn -0.261089 0.079201 0.962060
+vn 0.026743 -0.271523 0.962060
+vn 0.240621 0.128616 0.962060
+vn -0.128614 -0.240621 0.962060
+vn -0.079201 0.261090 0.962060
+vn 0.240621 -0.128614 0.962060
+vn -0.271524 -0.026742 0.962060
+vn 0.173087 0.210907 0.962060
+vn -0.026742 -0.271523 0.962060
+vn -0.173087 0.210907 0.962060
+vn 0.271524 -0.026742 0.962060
+vn -0.240621 -0.128615 0.962060
+vn 0.079201 0.261090 0.962060
+vn 0.128614 -0.240621 0.962060
+vn -0.240621 0.128616 0.962060
+vn 0.261089 0.079202 0.962060
+vn -0.173086 -0.210906 0.962060
+vn -0.026743 0.271524 0.962060
+vn 0.210907 -0.173085 0.962060
+vn -0.271524 0.026743 0.962060
+vn 0.210907 0.173087 0.962060
+vn -0.079201 -0.261088 0.962060
+vn -0.128615 0.240622 0.962060
+vn 0.261089 -0.079200 0.962060
+vn -0.261089 -0.079201 0.962060
+vn 0.128615 0.240622 0.962060
+vn 0.079201 -0.261088 0.962060
+vn 0.098012 0.000001 -0.995185
+vn 0.290289 -0.000001 -0.956939
+vn 0.471395 0.000001 -0.881922
+vn 0.634385 0.000001 -0.773018
+vn 0.773012 -0.000001 -0.634391
+vn 0.881922 -0.000001 -0.471395
+vn 0.956942 -0.000000 -0.290279
+vn 0.995184 -0.000000 -0.098022
+vn 0.995184 0.000000 0.098020
+vn 0.956940 -0.000000 0.290285
+vn 0.881922 0.000001 0.471395
+vn 0.773012 0.000001 0.634391
+vn 0.634398 0.000001 0.773007
+vn 0.471395 -0.000001 0.881922
+vn 0.290289 0.000001 0.956939
+vn 0.098010 -0.000001 0.995185
+vn -0.098033 0.000001 0.995183
+vn -0.290269 -0.000001 0.956945
+vn -0.471412 0.000001 0.881913
+vn -0.634385 -0.000001 0.773018
+vn -0.773012 0.000001 0.634391
+vn -0.881922 0.000001 0.471395
+vn -0.956942 0.000000 0.290279
+vn -0.995184 0.000000 0.098022
+vn -0.995184 -0.000000 -0.098020
+vn -0.956939 0.000000 -0.290289
+vn -0.881922 0.000001 -0.471395
+vn -0.773003 0.000001 -0.634402
+vn -0.634398 -0.000001 -0.773007
+vn -0.471395 0.000001 -0.881922
+vn -0.098032 -0.000001 -0.995183
+vn -0.290292 0.000001 -0.956938
+vn 0.098017 -0.995185 0.000001
+vn 0.881921 -0.471396 0.000000
+vn 0.881921 0.471397 -0.000000
+vn 0.634394 0.773010 -0.000001
+vn 0.471396 0.881922 -0.000001
+vn 0.290285 0.956940 -0.000001
+vn -0.098018 0.995185 -0.000001
+vn -0.881920 -0.471399 0.000000
+vn -0.239974 -0.023636 -0.970491
+vn -0.210907 0.173087 0.962060
+vn 0.000000 -0.000003 -1.000000
+vn 0.152975 0.186400 -0.970491
+vn 0.239975 -0.023635 -0.970491
+vn -0.212662 -0.113674 -0.970491
+vn 0.069998 0.230752 -0.970492
+vn 0.113671 -0.212663 -0.970491
+vn -0.212664 0.113668 -0.970491
+vn 0.230752 0.069998 -0.970491
+vn -0.023635 0.239974 -0.970492
+vn 0.186401 -0.152975 -0.970491
+vn -0.239974 0.023635 -0.970492
+vn 0.186400 0.152975 -0.970491
+vn 0.230753 -0.069998 -0.970491
+vn -0.230753 -0.069998 -0.970491
+vn -0.186400 0.152974 -0.970492
+vn 0.239974 0.023635 -0.970492
+vn -0.186400 -0.152975 -0.970491
+vn 0.023635 -0.239975 -0.970491
+vn 0.212664 0.113668 -0.970491
+vn -0.113670 -0.212663 -0.970491
+vn -0.069998 0.230752 -0.970492
+vn 0.212662 -0.113674 -0.970491
+vn -0.210905 -0.173086 0.962060
+vn -0.261089 0.079200 0.962060
+vn 0.026743 -0.271523 0.962061
+vn 0.240622 0.128615 0.962060
+vn 0.240621 -0.128615 0.962060
+vn -0.271523 -0.026743 0.962060
+vn 0.271523 -0.026743 0.962060
+vn 0.079200 0.261090 0.962060
+vn 0.128615 -0.240620 0.962060
+vn -0.240622 0.128615 0.962060
+vn 0.261089 0.079200 0.962060
+vn -0.173085 -0.210906 0.962060
+vn 0.210906 -0.173086 0.962060
+vn -0.271524 0.026742 0.962060
+vn -0.079200 -0.261088 0.962061
+vn -0.261089 -0.079200 0.962060
+vn 0.079200 -0.261088 0.962060
+vn 0.098033 -0.000001 -0.995183
+vn 0.290269 0.000001 -0.956945
+vn 0.634398 -0.000001 -0.773007
+vn 0.995184 -0.000000 0.098022
+vn 0.956942 0.000000 0.290279
+vn 0.634385 -0.000001 0.773018
+vn 0.471412 0.000001 0.881913
+vn 0.290269 -0.000001 0.956945
+vn 0.098032 0.000001 0.995183
+vn -0.098012 -0.000001 0.995185
+vn -0.290289 0.000001 0.956939
+vn -0.471395 -0.000001 0.881922
+vn -0.634398 0.000001 0.773007
+vn -0.995184 0.000000 -0.098022
+vn -0.773012 -0.000001 -0.634391
+vn -0.634385 0.000001 -0.773018
+vn -0.098010 0.000001 -0.995185
+vn -0.290272 -0.000001 -0.956944
+vn 0.000000 -1.000000 -0.000019
+vn -0.000002 -1.000000 0.000007
+vn 0.000001 -1.000000 -0.000000
+vn -0.000027 -1.000000 -0.000008
+vn -0.000009 -1.000000 -0.000001
+vn -0.000005 -1.000000 0.000000
+vn -0.000003 -1.000000 0.000001
+vn -0.000002 -1.000000 0.000001
+vn -0.000001 -1.000000 0.000001
+vn 0.000000 -1.000000 0.000001
+s off
+f 153/85/50 154/86/50 156/87/50
+f 155/85/51 156/86/51 158/87/51
+f 157/85/52 158/86/52 160/87/52
+f 159/85/53 160/86/53 162/87/53
+f 161/85/54 162/86/54 164/87/54
+f 163/85/55 164/86/55 166/87/55
+f 165/85/56 166/86/56 168/87/56
+f 167/85/57 168/86/57 170/87/57
+f 169/85/58 170/86/58 172/87/58
+f 171/85/59 172/86/59 174/87/59
+f 173/85/60 174/86/60 176/87/60
+f 175/85/61 176/86/61 178/87/61
+f 177/85/62 178/86/62 180/87/62
+f 179/85/63 180/86/63 182/87/63
+f 181/85/64 182/86/64 184/87/64
+f 183/85/65 184/86/65 186/87/65
+f 185/85/66 186/86/66 187/88/66
+f 187/85/67 188/86/67 189/88/67
+f 189/85/68 190/86/68 191/88/68
+f 191/85/69 192/86/69 193/88/69
+f 193/85/70 194/86/70 195/88/70
+f 195/85/71 196/86/71 197/88/71
+f 197/85/72 198/86/72 199/88/72
+f 199/85/73 200/86/73 201/88/73
+f 201/85/74 202/86/74 203/88/74
+f 203/85/75 204/86/75 205/88/75
+f 205/85/76 206/86/76 207/88/76
+f 207/85/77 208/86/77 209/88/77
+f 209/85/78 210/86/78 211/88/78
+f 211/85/79 212/86/79 213/88/79
+f 204/85/80 202/86/80 242/88/80
+f 215/85/81 216/86/81 153/88/81
+f 213/85/82 214/86/82 215/88/82
+f 193/85/83 195/86/83 269/88/83
+f 246/89/47 248/90/47 247/91/47
+f 180/85/84 178/86/84 229/87/84
+f 154/85/85 216/86/85 217/88/85
+f 194/85/86 192/86/86 237/88/86
+f 170/85/87 168/86/87 224/87/87
+f 208/85/88 206/86/88 244/88/88
+f 184/85/89 182/86/89 231/87/89
+f 160/85/90 158/86/90 219/87/90
+f 198/85/91 196/86/91 239/88/91
+f 174/85/92 172/86/92 226/87/92
+f 212/85/93 210/86/93 246/88/93
+f 188/85/94 186/86/94 234/88/94
+f 164/85/95 162/86/95 221/87/95
+f 202/85/96 200/86/96 241/88/96
+f 178/85/97 176/86/97 228/87/97
+f 216/85/98 214/86/98 248/88/98
+f 192/85/99 190/86/99 236/88/99
+f 168/85/100 166/86/100 223/87/100
+f 206/85/101 204/86/101 243/88/101
+f 182/85/102 180/86/102 230/87/102
+f 158/85/103 156/86/103 218/87/103
+f 196/85/104 194/86/104 238/88/104
+f 172/85/105 170/86/105 225/87/105
+f 210/85/106 208/86/106 245/88/106
+f 186/85/107 184/86/107 232/87/107
+f 162/85/108 160/86/108 220/87/108
+f 200/85/109 198/86/109 240/88/109
+f 156/85/110 154/86/110 217/87/110
+f 176/85/111 174/86/111 227/87/111
+f 214/85/112 212/86/112 247/88/112
+f 190/85/113 188/86/113 235/88/113
+f 166/85/114 164/86/114 222/87/114
+f 249/92/49 250/93/49 280/94/49
+f 169/85/115 171/86/115 258/87/115
+f 207/85/116 209/86/116 276/88/116
+f 183/85/117 185/86/117 265/87/117
+f 159/85/118 161/86/118 253/87/118
+f 197/85/119 199/86/119 271/88/119
+f 153/85/120 155/86/120 250/87/120
+f 173/85/121 175/86/121 260/87/121
+f 211/85/122 213/86/122 278/88/122
+f 187/85/123 189/86/123 266/88/123
+f 163/85/124 165/86/124 255/87/124
+f 201/85/125 203/86/125 273/88/125
+f 177/85/126 179/86/126 262/87/126
+f 215/85/127 153/86/127 280/88/127
+f 191/85/128 193/86/128 268/88/128
+f 167/85/129 169/86/129 257/87/129
+f 205/85/130 207/86/130 275/88/130
+f 181/85/131 183/86/131 264/87/131
+f 157/85/132 159/86/132 252/87/132
+f 195/85/133 197/86/133 270/88/133
+f 171/85/134 173/86/134 259/87/134
+f 209/85/135 211/86/135 277/88/135
+f 185/85/136 187/86/136 265/88/136
+f 161/85/137 163/86/137 254/87/137
+f 199/85/138 201/86/138 272/88/138
+f 175/85/139 177/86/139 261/87/139
+f 213/85/140 215/86/140 279/88/140
+f 189/85/141 191/86/141 267/88/141
+f 165/85/142 167/86/142 256/87/142
+f 203/85/143 205/86/143 274/88/143
+f 179/85/144 181/86/144 263/87/144
+f 155/85/145 157/86/145 251/87/145
+f 281/85/146 282/86/146 284/87/146
+f 283/85/147 284/86/147 286/87/147
+f 285/85/148 286/86/148 288/87/148
+f 287/85/149 288/86/149 290/87/149
+f 289/85/150 290/86/150 292/87/150
+f 291/85/151 292/86/151 294/87/151
+f 293/85/152 294/86/152 296/87/152
+f 295/85/153 296/86/153 298/87/153
+f 297/85/154 298/86/154 300/87/154
+f 299/85/155 300/86/155 302/87/155
+f 301/85/156 302/86/156 304/87/156
+f 303/85/157 304/86/157 306/87/157
+f 305/85/158 306/86/158 308/87/158
+f 307/85/159 308/86/159 310/87/159
+f 309/85/160 310/86/160 312/87/160
+f 311/85/161 312/86/161 314/87/161
+f 313/85/162 314/86/162 315/88/162
+f 315/85/163 316/86/163 317/88/163
+f 317/85/164 318/86/164 319/88/164
+f 319/85/165 320/86/165 321/88/165
+f 321/85/166 322/86/166 323/88/166
+f 323/85/167 324/86/167 325/88/167
+f 325/85/168 326/86/168 327/88/168
+f 327/85/169 328/86/169 329/88/169
+f 329/85/170 330/86/170 331/88/170
+f 331/85/171 332/86/171 333/88/171
+f 333/85/172 334/86/172 335/88/172
+f 335/85/173 336/86/173 337/88/173
+f 337/85/174 338/86/174 339/88/174
+f 339/85/175 340/86/175 341/88/175
+f 284/92/39 282/93/39 286/94/39
+f 343/85/176 344/86/176 281/88/176
+f 341/85/177 342/86/177 344/87/177
+f 281/92/42 283/93/42 343/94/42
+f 155/88/178 153/85/178 156/87/178
+f 157/88/51 155/85/51 158/87/51
+f 159/88/52 157/85/52 160/87/52
+f 161/88/53 159/85/53 162/87/53
+f 163/88/54 161/85/54 164/87/54
+f 165/88/179 163/85/179 166/87/179
+f 167/88/56 165/85/56 168/87/56
+f 169/88/57 167/85/57 170/87/57
+f 171/88/58 169/85/58 172/87/58
+f 173/88/59 171/85/59 174/87/59
+f 175/88/180 173/85/180 176/87/180
+f 177/88/61 175/85/61 178/87/61
+f 179/88/181 177/85/181 180/87/181
+f 181/88/182 179/85/182 182/87/182
+f 183/88/183 181/85/183 184/87/183
+f 185/88/65 183/85/65 186/87/65
+f 186/86/184 188/87/184 187/88/184
+f 188/86/67 190/87/67 189/88/67
+f 190/86/68 192/87/68 191/88/68
+f 192/86/69 194/87/69 193/88/69
+f 194/86/70 196/87/70 195/88/70
+f 196/86/71 198/87/71 197/88/71
+f 198/86/72 200/87/72 199/88/72
+f 200/86/73 202/87/73 201/88/73
+f 202/86/74 204/87/74 203/88/74
+f 204/86/75 206/87/75 205/88/75
+f 206/86/185 208/87/185 207/88/185
+f 208/86/77 210/87/77 209/88/77
+f 210/86/78 212/87/78 211/88/78
+f 212/86/79 214/87/79 213/88/79
+f 202/86/186 241/87/186 242/88/186
+f 216/86/81 154/87/81 153/88/81
+f 214/86/82 216/87/82 215/88/82
+f 195/86/187 270/87/187 269/88/187
+f 245/95/47 248/90/47 246/89/47
+f 244/96/47 248/90/47 245/95/47
+f 234/97/47 236/98/47 235/99/47
+f 234/97/47 237/100/47 236/98/47
+f 234/97/47 238/101/47 237/100/47
+f 229/102/47 231/103/47 230/104/47
+f 228/105/47 231/103/47 229/102/47
+f 219/94/47 221/106/47 220/107/47
+f 219/94/47 222/108/47 221/106/47
+f 218/92/47 217/93/47 219/94/47
+f 217/93/47 248/90/47 219/94/47
+f 248/90/47 244/96/47 219/94/47
+f 219/94/47 244/96/47 222/108/47
+f 244/96/188 243/109/188 222/108/188
+f 222/108/188 243/109/188 223/110/188
+f 223/110/47 243/109/47 224/111/47
+f 243/109/47 242/112/47 224/111/47
+f 242/112/47 241/113/47 224/111/47
+f 241/113/47 240/114/47 224/111/47
+f 224/111/47 240/114/47 225/115/47
+f 225/115/47 240/114/47 226/116/47
+f 240/114/47 239/117/47 226/116/47
+f 226/116/47 239/117/47 227/118/47
+f 239/117/188 238/101/188 227/118/188
+f 227/118/188 238/101/188 228/105/188
+f 228/105/47 238/101/47 231/103/47
+f 238/101/47 234/97/47 231/103/47
+f 234/97/47 233/119/47 232/120/47
+f 231/103/47 234/97/47 232/120/47
+f 230/88/189 180/85/189 229/87/189
+f 216/86/85 248/87/85 217/88/85
+f 192/86/86 236/87/86 237/88/86
+f 225/88/190 170/85/190 224/87/190
+f 206/86/191 243/87/191 244/88/191
+f 232/88/192 184/85/192 231/87/192
+f 220/88/193 160/85/193 219/87/193
+f 196/86/194 238/87/194 239/88/194
+f 227/88/195 174/85/195 226/87/195
+f 210/86/93 245/87/93 246/88/93
+f 186/86/196 233/87/196 234/88/196
+f 222/88/197 164/85/197 221/87/197
+f 200/86/198 240/87/198 241/88/198
+f 229/88/199 178/85/199 228/87/199
+f 214/86/98 247/87/98 248/88/98
+f 190/86/99 235/87/99 236/88/99
+f 224/88/200 168/85/200 223/87/200
+f 204/86/201 242/87/201 243/88/201
+f 231/88/102 182/85/102 230/87/102
+f 219/88/103 158/85/103 218/87/103
+f 194/86/202 237/87/202 238/88/202
+f 226/88/203 172/85/203 225/87/203
+f 208/86/204 244/87/204 245/88/204
+f 233/88/107 186/85/107 232/87/107
+f 221/88/108 162/85/108 220/87/108
+f 198/86/109 239/87/109 240/88/109
+f 218/88/205 156/85/205 217/87/205
+f 228/88/206 176/85/206 227/87/206
+f 212/86/207 246/87/207 247/88/207
+f 188/86/208 234/87/208 235/88/208
+f 223/88/209 166/85/209 222/87/209
+f 250/93/49 251/90/49 280/94/49
+f 251/90/49 252/91/49 280/94/49
+f 252/91/49 253/89/49 280/94/49
+f 253/89/49 254/95/49 280/94/49
+f 254/95/49 255/96/49 280/94/49
+f 255/96/49 256/109/49 280/94/49
+f 256/109/49 257/112/49 280/94/49
+f 257/112/49 258/113/49 280/94/49
+f 258/113/49 259/114/49 280/94/49
+f 259/114/49 260/117/49 280/94/49
+f 260/117/49 261/101/49 280/94/49
+f 261/101/49 262/100/49 280/94/49
+f 262/100/49 263/98/49 280/94/49
+f 263/98/49 264/99/49 280/94/49
+f 264/99/49 265/97/49 280/94/49
+f 265/97/49 266/119/49 280/94/49
+f 266/119/49 267/120/49 280/94/49
+f 267/120/49 268/103/49 280/94/49
+f 268/103/49 269/104/49 280/94/49
+f 269/104/49 270/102/49 280/94/49
+f 270/102/49 271/105/49 280/94/49
+f 271/105/49 272/118/49 280/94/49
+f 272/118/49 273/116/49 280/94/49
+f 273/116/49 274/115/49 280/94/49
+f 274/115/49 275/111/49 280/94/49
+f 275/111/49 276/110/49 280/94/49
+f 276/110/49 277/108/49 280/94/49
+f 277/108/49 278/106/49 279/107/49
+f 280/94/49 277/108/49 279/107/49
+f 257/88/115 169/85/115 258/87/115
+f 209/86/210 277/87/210 276/88/210
+f 264/88/117 183/85/117 265/87/117
+f 252/88/118 159/85/118 253/87/118
+f 199/86/211 272/87/211 271/88/211
+f 249/88/212 153/85/212 250/87/212
+f 259/88/213 173/85/213 260/87/213
+f 213/86/122 279/87/122 278/88/122
+f 189/86/123 267/87/123 266/88/123
+f 254/88/214 163/85/214 255/87/214
+f 203/86/215 274/87/215 273/88/215
+f 261/88/126 177/85/126 262/87/126
+f 153/86/127 249/87/127 280/88/127
+f 193/86/128 269/87/128 268/88/128
+f 256/88/216 167/85/216 257/87/216
+f 207/86/130 276/87/130 275/88/130
+f 263/88/217 181/85/217 264/87/217
+f 251/88/218 157/85/218 252/87/218
+f 197/86/219 271/87/219 270/88/219
+f 258/88/220 171/85/220 259/87/220
+f 211/86/221 278/87/221 277/88/221
+f 187/86/136 266/87/136 265/88/136
+f 253/88/222 161/85/222 254/87/222
+f 201/86/223 273/87/223 272/88/223
+f 260/88/139 175/85/139 261/87/139
+f 215/86/224 280/87/224 279/88/224
+f 191/86/141 268/87/141 267/88/141
+f 255/88/142 165/85/142 256/87/142
+f 205/86/225 275/87/225 274/88/225
+f 262/88/144 179/85/144 263/87/144
+f 250/88/226 155/85/226 251/87/226
+f 283/88/227 281/85/227 284/87/227
+f 285/88/228 283/85/228 286/87/228
+f 287/88/148 285/85/148 288/87/148
+f 289/88/229 287/85/229 290/87/229
+f 291/88/150 289/85/150 292/87/150
+f 293/88/151 291/85/151 294/87/151
+f 295/88/152 293/85/152 296/87/152
+f 297/88/153 295/85/153 298/87/153
+f 299/88/230 297/85/230 300/87/230
+f 301/88/231 299/85/231 302/87/231
+f 303/88/156 301/85/156 304/87/156
+f 305/88/157 303/85/157 306/87/157
+f 307/88/232 305/85/232 308/87/232
+f 309/88/233 307/85/233 310/87/233
+f 311/88/234 309/85/234 312/87/234
+f 313/88/235 311/85/235 314/87/235
+f 314/86/236 316/87/236 315/88/236
+f 316/86/237 318/87/237 317/88/237
+f 318/86/238 320/87/238 319/88/238
+f 320/86/239 322/87/239 321/88/239
+f 322/86/166 324/87/166 323/88/166
+f 324/86/167 326/87/167 325/88/167
+f 326/86/168 328/87/168 327/88/168
+f 328/86/169 330/87/169 329/88/169
+f 330/86/240 332/87/240 331/88/240
+f 332/86/171 334/87/171 333/88/171
+f 334/86/172 336/87/172 335/88/172
+f 336/86/241 338/87/241 337/88/241
+f 338/86/242 340/87/242 339/88/242
+f 340/86/175 342/87/175 341/88/175
+f 282/93/39 344/90/39 286/94/39
+f 344/90/39 342/91/39 286/94/39
+f 342/91/39 340/89/39 286/94/39
+f 340/89/39 338/95/39 286/94/39
+f 338/95/39 336/96/39 286/94/39
+f 336/96/39 334/109/39 286/94/39
+f 334/109/39 332/112/39 286/94/39
+f 332/112/39 330/113/39 286/94/39
+f 330/113/39 328/114/39 286/94/39
+f 328/114/39 326/117/39 286/94/39
+f 326/117/39 324/101/39 286/94/39
+f 324/101/39 322/100/39 286/94/39
+f 322/100/39 320/98/39 286/94/39
+f 320/98/39 318/99/39 286/94/39
+f 318/99/39 316/97/39 286/94/39
+f 316/97/39 314/119/39 286/94/39
+f 314/119/39 312/120/39 286/94/39
+f 312/120/39 310/103/39 286/94/39
+f 310/103/39 308/104/39 286/94/39
+f 308/104/39 306/102/39 286/94/39
+f 306/102/39 304/105/39 286/94/39
+f 304/105/39 302/118/39 286/94/39
+f 302/118/39 300/116/39 286/94/39
+f 300/116/39 298/115/39 286/94/39
+f 298/115/39 296/111/39 286/94/39
+f 296/111/39 294/110/39 286/94/39
+f 294/110/39 292/108/39 286/94/39
+f 292/108/39 290/106/39 286/94/39
+f 290/106/39 288/107/39 286/94/39
+f 344/86/243 282/87/243 281/88/243
+f 343/88/244 341/85/244 344/87/244
+f 283/93/245 285/90/245 343/94/245
+f 343/94/245 285/90/245 341/107/245
+f 285/90/42 287/91/42 341/107/42
+f 287/91/42 289/89/42 341/107/42
+f 289/89/42 291/95/42 341/107/42
+f 291/95/246 293/96/246 341/107/246
+f 293/96/247 295/109/247 341/107/247
+f 335/110/248 331/115/248 333/111/248
+f 295/109/247 297/112/247 341/107/247
+f 297/112/247 299/113/247 341/107/247
+f 335/110/249 329/116/249 331/115/249
+f 299/113/247 301/114/247 341/107/247
+f 335/110/250 327/118/250 329/116/250
+f 301/114/247 303/117/247 341/107/247
+f 335/110/251 325/105/251 327/118/251
+f 303/117/42 305/101/42 341/107/42
+f 335/110/252 323/102/252 325/105/252
+f 305/101/42 307/100/42 341/107/42
+f 335/110/253 321/104/253 323/102/253
+f 307/100/42 309/98/42 341/107/42
+f 335/110/253 319/103/253 321/104/253
+f 309/98/254 311/99/254 341/107/254
+f 335/110/254 317/120/254 319/103/254
+f 311/99/254 313/97/254 341/107/254
+f 315/119/254 317/120/254 335/110/254
+f 313/97/254 315/119/254 341/107/254
+f 315/119/254 335/110/254 341/107/254
+f 335/110/42 337/108/42 339/106/42
+f 341/107/42 335/110/42 339/106/42
+v 1.365790 0.015116 4.001092
+v 1.365790 0.015113 0.001092
+v 1.560881 0.034331 4.001092
+v 1.560881 0.034328 0.001092
+v 1.748474 0.091236 4.001092
+v 1.748474 0.091234 0.001092
+v 1.921361 0.183646 4.001092
+v 1.921361 0.183644 0.001092
+v 2.072897 0.308009 4.001092
+v 2.072897 0.308007 0.001092
+v 2.197260 0.459546 4.001092
+v 2.197260 0.459543 0.001092
+v 2.289670 0.632432 4.001092
+v 2.289670 0.632430 0.001092
+v 2.346576 0.820025 4.001092
+v 2.346576 0.820023 0.001092
+v 2.365790 1.015116 4.001092
+v 2.365790 1.015113 0.001092
+v 2.346576 1.210206 4.001091
+v 2.346576 1.210203 0.001091
+v 2.289670 1.397799 4.001091
+v 2.289670 1.397797 0.001091
+v 2.197260 1.570686 4.001091
+v 2.197260 1.570683 0.001091
+v 2.072897 1.722223 4.001091
+v 2.072897 1.722220 0.001091
+v 1.921361 1.846586 4.001091
+v 1.921361 1.846583 0.001091
+v 1.748474 1.938995 4.001091
+v 1.748474 1.938993 0.001091
+v 1.560881 1.995901 4.001091
+v 1.560881 1.995899 0.001091
+v 1.365790 2.015116 4.001091
+v 1.365790 2.015113 0.001091
+v 1.170700 1.995901 4.001091
+v 1.170700 1.995898 0.001091
+v 0.983107 1.938995 4.001091
+v 0.983107 1.938993 0.001091
+v 0.810220 1.846585 4.001091
+v 0.810220 1.846583 0.001091
+v 0.658683 1.722222 4.001091
+v 0.658683 1.722220 0.001091
+v 0.534320 1.570685 4.001091
+v 0.534320 1.570683 0.001091
+v 0.441911 1.397799 4.001091
+v 0.441911 1.397796 0.001091
+v 0.385005 1.210205 4.001091
+v 0.385005 1.210203 0.001091
+v 0.365790 1.015115 4.001092
+v 0.365790 1.015112 0.001092
+v 0.385005 0.820024 4.001092
+v 0.385005 0.820022 0.001092
+v 0.441911 0.632431 4.001092
+v 0.441911 0.632429 0.001092
+v 0.534322 0.459545 4.001092
+v 0.534322 0.459542 0.001092
+v 0.658685 0.308008 4.001092
+v 0.658685 0.308006 0.001092
+v 0.810221 0.183645 4.001092
+v 0.810221 0.183643 0.001092
+v 0.983108 0.091236 4.001092
+v 0.983108 0.091233 0.001092
+v 1.170702 0.034330 4.001092
+v 1.170702 0.034328 0.001092
+v 1.365791 0.649119 -0.167860
+v 1.437192 0.656151 -0.167860
+v 1.505850 0.676978 -0.167860
+v 1.569126 0.710800 -0.167860
+v 1.624587 0.756316 -0.167860
+v 1.670104 0.811778 -0.167860
+v 1.703925 0.875053 -0.167860
+v 1.724752 0.943711 -0.167860
+v 1.731785 1.015113 -0.167860
+v 1.724752 1.086515 -0.167860
+v 1.703925 1.155173 -0.167860
+v 1.670104 1.218448 -0.167861
+v 1.624587 1.273910 -0.167861
+v 1.569126 1.319426 -0.167861
+v 1.505850 1.353247 -0.167861
+v 1.437192 1.374075 -0.167861
+v 1.365790 1.381107 -0.167861
+v 1.294389 1.374075 -0.167861
+v 1.225731 1.353247 -0.167861
+v 1.162455 1.319426 -0.167861
+v 1.106993 1.273910 -0.167861
+v 1.061477 1.218448 -0.167861
+v 1.027656 1.155173 -0.167860
+v 1.006829 1.086515 -0.167860
+v 0.999797 1.015113 -0.167860
+v 1.006829 0.943711 -0.167860
+v 1.027656 0.875053 -0.167860
+v 1.061478 0.811777 -0.167860
+v 1.106994 0.756316 -0.167860
+v 1.162456 0.710800 -0.167860
+v 1.225731 0.676978 -0.167860
+v 1.294389 0.656151 -0.167860
+v 1.365791 0.605024 4.157856
+v 1.445795 0.612904 4.157856
+v 1.522726 0.636241 4.157856
+v 1.593625 0.674137 4.157856
+v 1.655769 0.725137 4.157856
+v 1.706769 0.787281 4.157856
+v 1.744666 0.858181 4.157855
+v 1.768002 0.935111 4.157855
+v 1.775882 1.015116 4.157855
+v 1.768002 1.095121 4.157855
+v 1.744666 1.172051 4.157855
+v 1.706769 1.242950 4.157855
+v 1.655769 1.305094 4.157855
+v 1.593625 1.356094 4.157855
+v 1.522726 1.393991 4.157855
+v 1.445795 1.417328 4.157855
+v 1.365790 1.425207 4.157855
+v 1.285786 1.417327 4.157855
+v 1.208855 1.393991 4.157855
+v 1.137956 1.356094 4.157855
+v 1.075812 1.305094 4.157855
+v 1.024812 1.242950 4.157855
+v 0.986915 1.172051 4.157855
+v 0.963579 1.095120 4.157855
+v 0.955699 1.015115 4.157855
+v 0.963579 0.935110 4.157855
+v 0.986916 0.858180 4.157855
+v 1.024812 0.787281 4.157856
+v 1.075812 0.725137 4.157856
+v 1.137956 0.674137 4.157856
+v 1.208856 0.636240 4.157856
+v 1.285786 0.612904 4.157856
+vt 0.000000 0.000000
+vt 0.450363 0.000088
+vt 0.519265 0.025135
+vt 0.412277 0.001462
+vt 0.592585 0.072108
+vt 0.660664 0.134431
+vt 0.714751 0.214466
+vt 0.755741 0.304410
+vt 0.778531 0.401983
+vt 0.781786 0.502742
+vt 0.147188 0.142771
+vt 0.050179 0.306373
+vt 0.093406 0.218681
+vt 0.765337 0.602148
+vt 0.019781 0.402090
+vt 0.729413 0.696327
+vt 0.000089 0.500905
+vt 0.680707 0.782826
+vt 0.000088 0.601389
+vt 0.627360 0.858268
+vt 0.022810 0.698277
+vt 0.566443 0.918999
+vt 0.063602 0.787572
+vt 0.501474 0.962949
+vt 0.119962 0.865210
+vt 0.436606 0.989270
+vt 0.188187 0.927714
+vt 0.377255 0.998855
+vt 0.263175 0.972402
+vt 0.336538 0.999912
+vt 0.208578 0.081678
+vt 0.280064 0.037078
+vt 0.344761 0.010798
+vn 0.634394 -0.773010 0.000000
+vn 0.773010 -0.634394 0.000000
+vn 0.773010 0.634394 -0.000000
+vn 0.634394 0.773010 -0.000000
+vn -0.956941 0.290284 -0.000000
+vn -0.995185 0.098016 -0.000000
+vn -0.881921 -0.471398 0.000000
+vn -0.634392 -0.773011 0.000000
+vn -0.075085 -0.247523 -0.965968
+vn -0.199427 0.163668 0.966148
+vn -0.121931 0.228117 -0.965969
+vn 0.247522 -0.075086 -0.965968
+vn -0.247522 -0.075086 -0.965968
+vn 0.121931 0.228117 -0.965969
+vn 0.075085 -0.247523 -0.965968
+vn -0.199948 0.164091 -0.965968
+vn 0.257414 0.025352 -0.965968
+vn -0.199947 -0.164093 -0.965968
+vn 0.025353 0.257414 -0.965969
+vn 0.164092 -0.199947 -0.965968
+vn -0.247522 0.075085 -0.965969
+vn 0.025353 -0.257415 -0.965968
+vn 0.228118 0.121931 -0.965969
+vn -0.121931 -0.228119 -0.965968
+vn -0.075086 0.247521 -0.965969
+vn 0.228118 -0.121932 -0.965968
+vn -0.257414 -0.025354 -0.965968
+vn 0.164092 0.199946 -0.965969
+vn -0.025353 -0.257415 -0.965968
+vn -0.164092 0.199946 -0.965969
+vn 0.257415 -0.025354 -0.965968
+vn -0.228117 -0.121932 -0.965968
+vn 0.075086 0.247521 -0.965969
+vn 0.121931 -0.228119 -0.965968
+vn -0.228117 0.121931 -0.965968
+vn 0.247522 0.075085 -0.965969
+vn -0.164092 -0.199947 -0.965968
+vn -0.025353 0.257414 -0.965969
+vn 0.199947 -0.164093 -0.965968
+vn -0.257414 0.025352 -0.965968
+vn 0.199947 0.164091 -0.965968
+vn 0.256746 0.025290 0.966148
+vn -0.199428 -0.163666 0.966148
+vn 0.025287 0.256747 0.966148
+vn 0.163666 -0.199428 0.966148
+vn -0.246880 0.074890 0.966148
+vn 0.025287 -0.256746 0.966148
+vn 0.227526 0.121615 0.966148
+vn -0.121615 -0.227526 0.966148
+vn -0.074890 0.246880 0.966148
+vn 0.227525 -0.121615 0.966148
+vn -0.256745 -0.025287 0.966148
+vn 0.163667 0.199428 0.966148
+vn -0.025287 -0.256746 0.966148
+vn -0.163667 0.199428 0.966148
+vn 0.256746 -0.025287 0.966148
+vn -0.227525 -0.121615 0.966148
+vn 0.074890 0.246880 0.966148
+vn 0.121615 -0.227526 0.966148
+vn -0.227526 0.121615 0.966148
+vn 0.246880 0.074890 0.966148
+vn -0.163666 -0.199428 0.966148
+vn -0.025287 0.256747 0.966148
+vn 0.199428 -0.163666 0.966148
+vn -0.256746 0.025289 0.966148
+vn 0.199427 0.163668 0.966148
+vn -0.074892 -0.246879 0.966148
+vn -0.121615 0.227526 0.966148
+vn 0.246879 -0.074890 0.966148
+vn -0.246879 -0.074890 0.966148
+vn 0.121615 0.227526 0.966148
+vn 0.074892 -0.246879 0.966148
+vn -0.199428 0.163666 0.966148
+vn 0.000000 -0.000004 -1.000000
+vn 0.247522 -0.075085 -0.965968
+vn -0.199947 0.164092 -0.965969
+vn 0.257414 0.025353 -0.965969
+vn -0.199947 -0.164092 -0.965968
+vn 0.228120 0.121929 -0.965968
+vn -0.121931 -0.228118 -0.965968
+vn -0.075085 0.247521 -0.965969
+vn 0.228117 -0.121935 -0.965968
+vn -0.257414 -0.025353 -0.965968
+vn 0.164092 0.199947 -0.965969
+vn 0.257415 -0.025353 -0.965968
+vn -0.228117 -0.121935 -0.965968
+vn 0.075085 0.247521 -0.965969
+vn 0.121932 -0.228118 -0.965968
+vn -0.228120 0.121928 -0.965968
+vn 0.199947 -0.164092 -0.965968
+vn -0.257414 0.025353 -0.965969
+vn 0.199946 0.164092 -0.965969
+vn -0.000004 0.000009 1.000000
+vn 0.000001 -0.000000 1.000000
+vn -0.000029 -0.000009 1.000000
+vn -0.000010 -0.000001 1.000000
+vn -0.000005 0.000001 1.000000
+vn -0.000003 0.000001 1.000000
+vn -0.000002 0.000001 1.000000
+vn -0.000001 0.000001 1.000000
+vn 0.000000 0.000001 1.000000
+vn 0.256746 0.025287 0.966148
+vn -0.074891 0.246880 0.966148
+vn 0.227529 -0.121610 0.966148
+vn -0.256746 -0.025287 0.966148
+vn -0.227529 -0.121610 0.966148
+vn -0.256746 0.025287 0.966148
+vn 0.199428 0.163666 0.966148
+vn -0.074889 -0.246879 0.966148
+vn 0.074890 -0.246879 0.966148
+s off
+f 345/121/50 346/121/50 348/121/50
+f 347/121/51 348/121/51 350/121/51
+f 349/121/52 350/121/52 352/121/52
+f 351/121/255 352/121/255 354/121/255
+f 353/121/256 354/121/256 356/121/256
+f 355/121/55 356/121/55 358/121/55
+f 357/121/56 358/121/56 360/121/56
+f 359/121/57 360/121/57 362/121/57
+f 361/121/58 362/121/58 364/121/58
+f 363/121/59 364/121/59 366/121/59
+f 365/121/60 366/121/60 368/121/60
+f 367/121/257 368/121/257 370/121/257
+f 369/121/258 370/121/258 372/121/258
+f 371/121/63 372/121/63 374/121/63
+f 373/121/64 374/121/64 376/121/64
+f 375/121/65 376/121/65 378/121/65
+f 377/121/66 378/121/66 379/121/66
+f 379/121/67 380/121/67 381/121/67
+f 381/121/68 382/121/68 383/121/68
+f 383/121/69 384/121/69 385/121/69
+f 385/121/70 386/121/70 387/121/70
+f 387/121/71 388/121/71 389/121/71
+f 389/121/259 390/121/259 391/121/259
+f 391/121/260 392/121/260 393/121/260
+f 393/121/74 394/121/74 395/121/74
+f 395/121/75 396/121/75 397/121/75
+f 397/121/261 398/121/261 399/121/261
+f 399/121/77 400/121/77 401/121/77
+f 401/121/262 402/121/262 403/121/262
+f 403/121/79 404/121/79 405/121/79
+f 408/121/263 406/121/263 440/121/263
+f 407/121/81 408/121/81 345/121/81
+f 405/121/82 406/121/82 407/121/82
+f 385/121/264 387/121/264 461/121/264
+f 437/121/47 439/121/47 438/121/47
+f 384/121/265 382/121/265 428/121/265
+f 360/121/266 358/121/266 415/121/266
+f 398/121/267 396/121/267 435/121/267
+f 374/121/268 372/121/268 422/121/268
+f 350/121/269 348/121/269 410/121/269
+f 388/121/270 386/121/270 430/121/270
+f 364/121/271 362/121/271 417/121/271
+f 402/121/272 400/121/272 437/121/272
+f 378/121/273 376/121/273 424/121/273
+f 354/121/274 352/121/274 412/121/274
+f 392/121/275 390/121/275 432/121/275
+f 348/121/276 346/121/276 409/121/276
+f 368/121/277 366/121/277 419/121/277
+f 406/121/278 404/121/278 439/121/278
+f 382/121/279 380/121/279 427/121/279
+f 358/121/280 356/121/280 414/121/280
+f 396/121/281 394/121/281 434/121/281
+f 372/121/282 370/121/282 421/121/282
+f 346/121/283 408/121/283 409/121/283
+f 386/121/284 384/121/284 429/121/284
+f 362/121/285 360/121/285 416/121/285
+f 400/121/286 398/121/286 436/121/286
+f 376/121/287 374/121/287 423/121/287
+f 352/121/288 350/121/288 411/121/288
+f 390/121/289 388/121/289 431/121/289
+f 366/121/290 364/121/290 418/121/290
+f 404/121/291 402/121/291 438/121/291
+f 380/121/292 378/121/292 426/121/292
+f 356/121/293 354/121/293 413/121/293
+f 394/121/294 392/121/294 433/121/294
+f 370/121/295 368/121/295 420/121/295
+f 441/122/49 442/123/49 472/124/49
+f 361/121/296 363/121/296 450/121/296
+f 399/121/297 401/121/297 468/121/297
+f 375/121/298 377/121/298 457/121/298
+f 351/121/299 353/121/299 445/121/299
+f 389/121/300 391/121/300 463/121/300
+f 345/121/301 347/121/301 442/121/301
+f 365/121/302 367/121/302 452/121/302
+f 403/121/303 405/121/303 470/121/303
+f 379/121/304 381/121/304 458/121/304
+f 355/121/305 357/121/305 447/121/305
+f 393/121/306 395/121/306 465/121/306
+f 369/121/307 371/121/307 454/121/307
+f 407/121/308 345/121/308 472/121/308
+f 383/121/309 385/121/309 460/121/309
+f 359/121/310 361/121/310 449/121/310
+f 397/121/311 399/121/311 467/121/311
+f 373/121/312 375/121/312 456/121/312
+f 349/121/313 351/121/313 444/121/313
+f 387/121/314 389/121/314 462/121/314
+f 363/121/315 365/121/315 451/121/315
+f 401/121/316 403/121/316 469/121/316
+f 377/121/317 379/121/317 457/121/317
+f 353/121/318 355/121/318 446/121/318
+f 391/121/319 393/121/319 464/121/319
+f 367/121/320 369/121/320 453/121/320
+f 405/121/321 407/121/321 471/121/321
+f 381/121/322 383/121/322 459/121/322
+f 357/121/323 359/121/323 448/121/323
+f 395/121/324 397/121/324 466/121/324
+f 371/121/325 373/121/325 455/121/325
+f 347/121/326 349/121/326 443/121/326
+f 347/121/178 345/121/178 348/121/178
+f 349/121/51 347/121/51 350/121/51
+f 351/121/52 349/121/52 352/121/52
+f 353/121/255 351/121/255 354/121/255
+f 355/121/256 353/121/256 356/121/256
+f 357/121/179 355/121/179 358/121/179
+f 359/121/56 357/121/56 360/121/56
+f 361/121/57 359/121/57 362/121/57
+f 363/121/58 361/121/58 364/121/58
+f 365/121/59 363/121/59 366/121/59
+f 367/121/60 365/121/60 368/121/60
+f 369/121/257 367/121/257 370/121/257
+f 371/121/181 369/121/181 372/121/181
+f 373/121/182 371/121/182 374/121/182
+f 375/121/183 373/121/183 376/121/183
+f 377/121/65 375/121/65 378/121/65
+f 378/121/184 380/121/184 379/121/184
+f 380/121/67 382/121/67 381/121/67
+f 382/121/68 384/121/68 383/121/68
+f 384/121/69 386/121/69 385/121/69
+f 386/121/70 388/121/70 387/121/70
+f 388/121/71 390/121/71 389/121/71
+f 390/121/259 392/121/259 391/121/259
+f 392/121/260 394/121/260 393/121/260
+f 394/121/74 396/121/74 395/121/74
+f 396/121/75 398/121/75 397/121/75
+f 398/121/261 400/121/261 399/121/261
+f 400/121/77 402/121/77 401/121/77
+f 402/121/262 404/121/262 403/121/262
+f 404/121/79 406/121/79 405/121/79
+f 406/121/263 439/121/263 440/121/263
+f 408/121/81 346/121/81 345/121/81
+f 406/121/82 408/121/82 407/121/82
+f 387/121/327 462/121/327 461/121/327
+f 436/121/47 439/121/47 437/121/47
+f 427/121/47 429/121/47 428/121/47
+f 427/121/47 430/121/47 429/121/47
+f 421/121/47 423/121/47 422/121/47
+f 420/121/47 423/121/47 421/121/47
+f 411/121/47 413/121/47 412/121/47
+f 411/121/47 414/121/47 413/121/47
+f 410/121/47 409/121/47 411/121/47
+f 409/121/47 440/121/47 411/121/47
+f 440/121/47 439/121/47 411/121/47
+f 439/121/47 436/121/47 411/121/47
+f 411/121/47 436/121/47 414/121/47
+f 436/121/328 435/121/328 414/121/328
+f 414/121/328 435/121/328 415/121/328
+f 435/121/47 434/121/47 415/121/47
+f 434/121/47 433/121/47 415/121/47
+f 433/121/47 432/121/47 415/121/47
+f 432/121/47 431/121/47 415/121/47
+f 415/121/47 431/121/47 416/121/47
+f 416/121/47 431/121/47 417/121/47
+f 417/121/47 431/121/47 418/121/47
+f 418/121/47 431/121/47 419/121/47
+f 431/121/328 430/121/328 419/121/328
+f 419/121/328 430/121/328 420/121/328
+f 430/121/47 427/121/47 420/121/47
+f 420/121/47 427/121/47 423/121/47
+f 427/121/47 426/121/47 423/121/47
+f 426/121/47 425/121/47 424/121/47
+f 423/121/47 426/121/47 424/121/47
+f 382/121/265 427/121/265 428/121/265
+f 416/121/329 360/121/329 415/121/329
+f 396/121/267 434/121/267 435/121/267
+f 423/121/268 374/121/268 422/121/268
+f 411/121/269 350/121/269 410/121/269
+f 386/121/330 429/121/330 430/121/330
+f 418/121/331 364/121/331 417/121/331
+f 400/121/332 436/121/332 437/121/332
+f 425/121/273 378/121/273 424/121/273
+f 413/121/274 354/121/274 412/121/274
+f 390/121/275 431/121/275 432/121/275
+f 410/121/276 348/121/276 409/121/276
+f 420/121/333 368/121/333 419/121/333
+f 404/121/334 438/121/334 439/121/334
+f 380/121/335 426/121/335 427/121/335
+f 415/121/336 358/121/336 414/121/336
+f 394/121/337 433/121/337 434/121/337
+f 422/121/338 372/121/338 421/121/338
+f 408/121/283 440/121/283 409/121/283
+f 384/121/284 428/121/284 429/121/284
+f 417/121/339 362/121/339 416/121/339
+f 398/121/340 435/121/340 436/121/340
+f 424/121/341 376/121/341 423/121/341
+f 412/121/342 352/121/342 411/121/342
+f 388/121/343 430/121/343 431/121/343
+f 419/121/290 366/121/290 418/121/290
+f 402/121/291 437/121/291 438/121/291
+f 378/121/292 425/121/292 426/121/292
+f 414/121/344 356/121/344 413/121/344
+f 392/121/345 432/121/345 433/121/345
+f 421/121/346 370/121/346 420/121/346
+f 442/123/49 443/125/49 472/124/49
+f 443/125/49 444/126/49 472/124/49
+f 444/126/49 445/127/49 472/124/49
+f 445/127/49 446/128/49 472/124/49
+f 446/128/347 447/129/347 472/124/347
+f 447/129/348 448/130/348 472/124/348
+f 468/131/349 466/132/349 467/133/349
+f 448/130/348 449/134/348 472/124/348
+f 468/131/350 465/135/350 466/132/350
+f 449/134/348 450/136/348 472/124/348
+f 468/131/351 464/137/351 465/135/351
+f 450/136/348 451/138/348 472/124/348
+f 468/131/352 463/139/352 464/137/352
+f 451/138/348 452/140/348 472/124/348
+f 468/131/353 462/141/353 463/139/353
+f 452/140/348 453/142/348 472/124/348
+f 468/131/354 461/143/354 462/141/354
+f 453/142/49 454/144/49 472/124/49
+f 468/131/354 460/145/354 461/143/354
+f 454/144/355 455/146/355 472/124/355
+f 468/131/354 459/147/354 460/145/354
+f 455/146/355 456/148/355 472/124/355
+f 468/131/355 458/149/355 459/147/355
+f 456/148/355 457/150/355 472/124/355
+f 457/150/355 458/149/355 472/124/355
+f 458/149/355 468/131/355 472/124/355
+f 468/131/49 469/151/49 472/124/49
+f 469/151/49 470/152/49 471/153/49
+f 472/124/49 469/151/49 471/153/49
+f 449/121/356 361/121/356 450/121/356
+f 401/121/297 469/121/297 468/121/297
+f 456/121/298 375/121/298 457/121/298
+f 444/121/299 351/121/299 445/121/299
+f 391/121/300 464/121/300 463/121/300
+f 441/121/301 345/121/301 442/121/301
+f 451/121/302 365/121/302 452/121/302
+f 405/121/303 471/121/303 470/121/303
+f 381/121/357 459/121/357 458/121/357
+f 446/121/358 355/121/358 447/121/358
+f 395/121/359 466/121/359 465/121/359
+f 453/121/307 369/121/307 454/121/307
+f 345/121/308 441/121/308 472/121/308
+f 385/121/309 461/121/309 460/121/309
+f 448/121/310 359/121/310 449/121/310
+f 399/121/360 468/121/360 467/121/360
+f 455/121/312 373/121/312 456/121/312
+f 443/121/313 349/121/313 444/121/313
+f 389/121/314 463/121/314 462/121/314
+f 450/121/315 363/121/315 451/121/315
+f 403/121/316 470/121/316 469/121/316
+f 379/121/317 458/121/317 457/121/317
+f 445/121/318 353/121/318 446/121/318
+f 393/121/361 465/121/361 464/121/361
+f 452/121/362 367/121/362 453/121/362
+f 407/121/363 472/121/363 471/121/363
+f 383/121/322 460/121/322 459/121/322
+f 447/121/323 357/121/323 448/121/323
+f 397/121/324 467/121/324 466/121/324
+f 454/121/325 371/121/325 455/121/325
+f 442/121/364 347/121/364 443/121/364
+v 0.000000 0.010026 -4.301087
+v 0.000000 4.010026 -4.301087
+v 0.195090 0.010026 -4.281873
+v 0.195090 4.010026 -4.281873
+v 0.382683 0.010026 -4.224967
+v 0.382683 4.010026 -4.224967
+v 0.555570 0.010026 -4.132557
+v 0.555570 4.010026 -4.132557
+v 0.707107 0.010026 -4.008194
+v 0.707107 4.010026 -4.008194
+v 0.831470 0.010026 -3.856658
+v 0.831470 4.010026 -3.856658
+v 0.923880 0.010026 -3.683771
+v 0.923880 4.010026 -3.683771
+v 0.980785 0.010026 -3.496178
+v 0.980785 4.010026 -3.496178
+v 1.000000 0.010026 -3.301088
+v 1.000000 4.010026 -3.301088
+v 0.980785 0.010026 -3.105997
+v 0.980785 4.010026 -3.105997
+v 0.923880 0.010026 -2.918404
+v 0.923880 4.010026 -2.918404
+v 0.831470 0.010026 -2.745517
+v 0.831470 4.010026 -2.745517
+v 0.707107 0.010026 -2.593981
+v 0.707107 4.010026 -2.593981
+v 0.555570 0.010026 -2.469618
+v 0.555570 4.010026 -2.469618
+v 0.382683 0.010026 -2.377208
+v 0.382683 4.010026 -2.377208
+v 0.195090 0.010026 -2.320302
+v 0.195090 4.010026 -2.320302
+v -0.000000 0.010026 -2.301088
+v -0.000000 4.010026 -2.301088
+v -0.195091 0.010026 -2.320302
+v -0.195091 4.010026 -2.320302
+v -0.382684 0.010026 -2.377208
+v -0.382684 4.010026 -2.377208
+v -0.555571 0.010026 -2.469618
+v -0.555571 4.010026 -2.469618
+v -0.707107 0.010026 -2.593981
+v -0.707107 4.010026 -2.593981
+v -0.831470 0.010026 -2.745518
+v -0.831470 4.010026 -2.745518
+v -0.923880 0.010026 -2.918405
+v -0.923880 4.010026 -2.918405
+v -0.980785 0.010026 -3.105998
+v -0.980785 4.010026 -3.105998
+v -1.000000 0.010026 -3.301089
+v -1.000000 4.010026 -3.301089
+v -0.980785 0.010026 -3.496179
+v -0.980785 4.010026 -3.496179
+v -0.923879 0.010026 -3.683772
+v -0.923879 4.010026 -3.683772
+v -0.831469 0.010026 -3.856659
+v -0.831469 4.010026 -3.856659
+v -0.707106 0.010026 -4.008195
+v -0.707106 4.010026 -4.008195
+v -0.555569 0.010026 -4.132558
+v -0.555569 4.010026 -4.132558
+v -0.382682 0.010026 -4.224968
+v -0.382682 4.010026 -4.224968
+v -0.195089 0.010026 -4.281873
+v -0.195089 4.010026 -4.281873
+v 0.000000 4.270857 -3.619825
+v 0.062183 4.270857 -3.613700
+v 0.121975 4.270857 -3.595562
+v 0.177081 4.270857 -3.566108
+v 0.225381 4.270857 -3.526469
+v 0.265020 4.270857 -3.478168
+v 0.294475 4.270857 -3.423063
+v 0.312612 4.270857 -3.363270
+v 0.318737 4.270857 -3.301088
+v 0.312613 4.270857 -3.238905
+v 0.294475 4.270857 -3.179112
+v 0.265020 4.270857 -3.124007
+v 0.225381 4.270857 -3.075707
+v 0.177081 4.270857 -3.036068
+v 0.121975 4.270857 -3.006613
+v 0.062182 4.270857 -2.988475
+v -0.000000 4.270857 -2.982351
+v -0.062183 4.270857 -2.988475
+v -0.121975 4.270857 -3.006613
+v -0.177081 4.270857 -3.036068
+v -0.225381 4.270857 -3.075707
+v -0.265020 4.270857 -3.124007
+v -0.294475 4.270857 -3.179113
+v -0.312613 4.270857 -3.238906
+v -0.318737 4.270857 -3.301088
+v -0.312612 4.270857 -3.363271
+v -0.294474 4.270857 -3.423064
+v -0.265020 4.270857 -3.478169
+v -0.225381 4.270857 -3.526469
+v -0.177080 4.270857 -3.566108
+v -0.121975 4.270857 -3.595562
+v -0.062182 4.270857 -3.613700
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.853553 0.146447
+vt 0.777785 0.084265
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.500000 0.000000
+vt 0.402455 0.009607
+vt 0.308658 0.038060
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.084265 0.222215
+vt 0.038060 0.308659
+vt 0.009607 0.402455
+vt 0.000000 0.500000
+vt 0.009607 0.597546
+vt 0.038060 0.691342
+vt 0.084266 0.777786
+vt 0.146447 0.853554
+vt 0.222215 0.915735
+vt 0.308659 0.961940
+vn 0.098017 0.000000 -0.995185
+vn 0.290285 0.000000 -0.956940
+vn 0.471396 0.000000 -0.881922
+vn 0.634394 0.000000 -0.773010
+vn 0.773011 0.000000 -0.634393
+vn 0.881921 0.000000 -0.471397
+vn 0.956940 0.000000 -0.290285
+vn 0.995185 0.000000 -0.098017
+vn 0.995185 0.000000 0.098017
+vn 0.881921 0.000000 0.471397
+vn 0.773011 0.000000 0.634393
+vn 0.634394 0.000000 0.773010
+vn 0.471396 0.000000 0.881921
+vn 0.290285 0.000000 0.956940
+vn 0.098017 0.000000 0.995185
+vn -0.098018 0.000000 0.995185
+vn -0.290285 0.000000 0.956940
+vn -0.471397 0.000000 0.881921
+vn -0.634394 0.000000 0.773010
+vn -0.773011 0.000000 0.634393
+vn -0.881922 0.000000 0.471396
+vn -0.956941 0.000000 0.290284
+vn -0.995185 0.000000 0.098016
+vn -0.995185 -0.000000 -0.098018
+vn -0.956940 -0.000000 -0.290286
+vn -0.881921 -0.000000 -0.471398
+vn -0.773010 -0.000000 -0.634394
+vn -0.634392 -0.000000 -0.773012
+vn -0.471397 -0.000000 -0.881921
+vn -0.357332 0.933314 -0.035195
+vn -0.098015 -0.000000 -0.995185
+vn -0.290282 -0.000000 -0.956941
+vn 0.227786 0.933314 0.277558
+vn -0.035193 0.933314 -0.357332
+vn -0.227786 0.933314 0.277558
+vn 0.357332 0.933314 -0.035194
+vn -0.316663 0.933314 -0.169261
+vn 0.104230 0.933314 0.343600
+vn 0.169260 0.933314 -0.316664
+vn -0.316664 0.933314 0.169260
+vn 0.343600 0.933314 0.104230
+vn -0.227785 0.933314 -0.277559
+vn -0.035194 0.933314 0.357332
+vn 0.277558 0.933314 -0.227786
+vn -0.357332 0.933314 0.035194
+vn 0.277558 0.933314 0.227786
+vn -0.104229 0.933314 -0.343600
+vn -0.169260 0.933314 0.316663
+vn 0.343600 0.933314 -0.104230
+vn -0.343600 0.933314 -0.104230
+vn 0.169260 0.933314 0.316664
+vn 0.104230 0.933314 -0.343600
+vn -0.277558 0.933314 0.227786
+vn 0.357332 0.933314 0.035194
+vn -0.277558 0.933314 -0.227786
+vn 0.035194 0.933314 0.357332
+vn 0.227786 0.933314 -0.277558
+vn -0.343600 0.933314 0.104230
+vn 0.035194 0.933314 -0.357332
+vn 0.316664 0.933314 0.169260
+vn -0.169260 0.933314 -0.316664
+vn -0.104230 0.933314 0.343600
+vn 0.316664 0.933314 -0.169260
+vn -0.357332 0.933314 -0.035194
+vn -0.035195 0.933314 -0.357332
+vn -0.316664 0.933314 -0.169260
+vn 0.169261 0.933314 -0.316663
+vn -0.227786 0.933314 -0.277558
+vn -0.357332 0.933314 0.035193
+vn -0.104230 0.933314 -0.343600
+vn -0.169261 0.933314 0.316663
+vn 0.035195 0.933314 -0.357332
+vn -0.169259 0.933314 -0.316664
+s off
+f 473/154/365 474/155/365 476/156/365
+f 475/154/366 476/155/366 478/156/366
+f 477/154/367 478/155/367 480/156/367
+f 479/154/368 480/155/368 482/156/368
+f 481/154/369 482/155/369 484/156/369
+f 483/154/370 484/155/370 486/156/370
+f 485/154/371 486/155/371 488/156/371
+f 487/154/372 488/155/372 490/156/372
+f 489/154/373 490/155/373 492/156/373
+f 491/154/155 492/155/155 494/156/155
+f 493/154/374 494/155/374 496/156/374
+f 495/154/375 496/155/375 498/156/375
+f 497/154/376 498/155/376 500/156/376
+f 499/154/377 500/155/377 502/156/377
+f 501/154/378 502/155/378 504/156/378
+f 503/154/379 504/155/379 506/156/379
+f 505/154/380 506/155/380 507/157/380
+f 507/154/381 508/155/381 509/157/381
+f 509/154/382 510/155/382 511/157/382
+f 511/154/383 512/155/383 513/157/383
+f 513/154/384 514/155/384 515/157/384
+f 515/154/385 516/155/385 517/157/385
+f 517/154/386 518/155/386 519/157/386
+f 519/154/387 520/155/387 521/157/387
+f 521/154/388 522/155/388 523/157/388
+f 523/154/389 524/155/389 525/157/389
+f 525/154/390 526/155/390 527/157/390
+f 527/154/391 528/155/391 529/157/391
+f 529/154/392 530/155/392 531/157/392
+f 531/154/393 532/155/393 533/157/393
+f 524/154/394 522/155/394 562/157/394
+f 535/154/395 536/155/395 473/157/395
+f 533/154/396 534/155/396 535/157/396
+f 473/158/42 475/159/42 535/160/42
+f 538/158/39 537/159/39 539/160/39
+f 500/154/397 498/155/397 549/156/397
+f 474/154/398 536/155/398 537/157/398
+f 514/154/399 512/155/399 557/157/399
+f 490/154/400 488/155/400 544/156/400
+f 528/154/401 526/155/401 564/157/401
+f 504/154/402 502/155/402 551/156/402
+f 480/154/403 478/155/403 539/156/403
+f 518/154/404 516/155/404 559/157/404
+f 494/154/405 492/155/405 546/156/405
+f 532/154/406 530/155/406 566/157/406
+f 508/154/407 506/155/407 554/157/407
+f 484/154/408 482/155/408 541/156/408
+f 522/154/409 520/155/409 561/157/409
+f 498/154/410 496/155/410 548/156/410
+f 536/154/411 534/155/411 568/157/411
+f 512/154/412 510/155/412 556/157/412
+f 488/154/413 486/155/413 543/156/413
+f 526/154/414 524/155/414 563/157/414
+f 502/154/415 500/155/415 550/156/415
+f 478/154/416 476/155/416 538/156/416
+f 516/154/417 514/155/417 558/157/417
+f 492/154/418 490/155/418 545/156/418
+f 530/154/419 528/155/419 565/157/419
+f 506/154/420 504/155/420 552/156/420
+f 482/154/421 480/155/421 540/156/421
+f 520/154/422 518/155/422 560/157/422
+f 476/154/423 474/155/423 537/156/423
+f 496/154/424 494/155/424 547/156/424
+f 534/154/425 532/155/425 567/157/425
+f 510/154/426 508/155/426 555/157/426
+f 486/154/427 484/155/427 542/156/427
+f 475/157/365 473/154/365 476/156/365
+f 477/157/366 475/154/366 478/156/366
+f 479/157/367 477/154/367 480/156/367
+f 481/157/368 479/154/368 482/156/368
+f 483/157/369 481/154/369 484/156/369
+f 485/157/370 483/154/370 486/156/370
+f 487/157/371 485/154/371 488/156/371
+f 489/157/372 487/154/372 490/156/372
+f 491/157/373 489/154/373 492/156/373
+f 493/157/155 491/154/155 494/156/155
+f 495/157/374 493/154/374 496/156/374
+f 497/157/375 495/154/375 498/156/375
+f 499/157/376 497/154/376 500/156/376
+f 501/157/377 499/154/377 502/156/377
+f 503/157/378 501/154/378 504/156/378
+f 505/157/379 503/154/379 506/156/379
+f 506/155/380 508/156/380 507/157/380
+f 508/155/381 510/156/381 509/157/381
+f 510/155/382 512/156/382 511/157/382
+f 512/155/383 514/156/383 513/157/383
+f 514/155/384 516/156/384 515/157/384
+f 516/155/385 518/156/385 517/157/385
+f 518/155/386 520/156/386 519/157/386
+f 520/155/387 522/156/387 521/157/387
+f 522/155/388 524/156/388 523/157/388
+f 524/155/389 526/156/389 525/157/389
+f 526/155/390 528/156/390 527/157/390
+f 528/155/391 530/156/391 529/157/391
+f 530/155/392 532/156/392 531/157/392
+f 532/155/393 534/156/393 533/157/393
+f 522/155/428 561/156/428 562/157/428
+f 536/155/395 474/156/395 473/157/395
+f 534/155/396 536/156/396 535/157/396
+f 475/159/42 477/161/42 535/160/42
+f 477/161/42 479/162/42 535/160/42
+f 479/162/42 481/163/42 535/160/42
+f 481/163/42 483/164/42 535/160/42
+f 483/164/42 485/165/42 535/160/42
+f 485/165/42 487/166/42 535/160/42
+f 487/166/42 489/167/42 535/160/42
+f 489/167/42 491/168/42 535/160/42
+f 491/168/42 493/169/42 535/160/42
+f 493/169/42 495/170/42 535/160/42
+f 495/170/42 497/171/42 535/160/42
+f 497/171/42 499/172/42 535/160/42
+f 499/172/42 501/173/42 535/160/42
+f 501/173/42 503/174/42 535/160/42
+f 503/174/42 505/175/42 535/160/42
+f 505/175/42 507/176/42 535/160/42
+f 507/176/42 509/177/42 535/160/42
+f 509/177/42 511/178/42 535/160/42
+f 511/178/42 513/179/42 535/160/42
+f 513/179/42 515/180/42 535/160/42
+f 515/180/42 517/181/42 535/160/42
+f 517/181/42 519/182/42 535/160/42
+f 519/182/42 521/183/42 535/160/42
+f 521/183/42 523/184/42 535/160/42
+f 523/184/42 525/185/42 535/160/42
+f 525/185/42 527/186/42 535/160/42
+f 527/186/42 529/187/42 535/160/42
+f 529/187/42 531/188/42 533/189/42
+f 535/160/42 529/187/42 533/189/42
+f 537/159/39 568/161/39 539/160/39
+f 568/161/39 567/162/39 539/160/39
+f 567/162/39 566/163/39 539/160/39
+f 566/163/39 565/164/39 539/160/39
+f 565/164/39 564/165/39 539/160/39
+f 564/165/39 563/166/39 539/160/39
+f 563/166/39 562/167/39 539/160/39
+f 562/167/39 561/168/39 539/160/39
+f 561/168/39 560/169/39 539/160/39
+f 560/169/39 559/170/39 539/160/39
+f 559/170/39 558/171/39 539/160/39
+f 558/171/39 557/172/39 539/160/39
+f 557/172/39 556/173/39 539/160/39
+f 556/173/39 555/174/39 539/160/39
+f 555/174/39 554/175/39 539/160/39
+f 554/175/39 553/176/39 539/160/39
+f 553/176/39 552/177/39 539/160/39
+f 552/177/39 551/178/39 539/160/39
+f 551/178/39 550/179/39 539/160/39
+f 550/179/39 549/180/39 539/160/39
+f 549/180/39 548/181/39 539/160/39
+f 548/181/39 547/182/39 539/160/39
+f 547/182/39 546/183/39 539/160/39
+f 546/183/39 545/184/39 539/160/39
+f 545/184/39 544/185/39 539/160/39
+f 544/185/39 543/186/39 539/160/39
+f 543/186/39 542/187/39 539/160/39
+f 542/187/39 541/188/39 539/160/39
+f 541/188/39 540/189/39 539/160/39
+f 550/157/397 500/154/397 549/156/397
+f 536/155/429 568/156/429 537/157/429
+f 512/155/399 556/156/399 557/157/399
+f 545/157/400 490/154/400 544/156/400
+f 526/155/430 563/156/430 564/157/430
+f 552/157/402 504/154/402 551/156/402
+f 540/157/431 480/154/431 539/156/431
+f 516/155/404 558/156/404 559/157/404
+f 547/157/405 494/154/405 546/156/405
+f 530/155/432 565/156/432 566/157/432
+f 506/155/407 553/156/407 554/157/407
+f 542/157/408 484/154/408 541/156/408
+f 520/155/433 560/156/433 561/157/433
+f 549/157/410 498/154/410 548/156/410
+f 534/155/434 567/156/434 568/157/434
+f 510/155/435 555/156/435 556/157/435
+f 544/157/413 488/154/413 543/156/413
+f 524/155/414 562/156/414 563/157/414
+f 551/157/415 502/154/415 550/156/415
+f 539/157/416 478/154/416 538/156/416
+f 514/155/417 557/156/417 558/157/417
+f 546/157/418 492/154/418 545/156/418
+f 528/155/419 564/156/419 565/157/419
+f 553/157/420 506/154/420 552/156/420
+f 541/157/421 482/154/421 540/156/421
+f 518/155/422 559/156/422 560/157/422
+f 538/157/436 476/154/436 537/156/436
+f 548/157/424 496/154/424 547/156/424
+f 532/155/437 566/156/437 567/157/437
+f 508/155/426 554/156/426 555/157/426
+f 543/157/427 486/154/427 542/156/427
+v 0.609274 0.018251 -1.901238
+v 0.609274 0.018251 -0.682690
+v -0.609274 0.018251 -0.682690
+v -0.609274 0.018251 -1.901238
+v 0.609274 1.236799 -1.901237
+v 0.609273 1.236799 -0.682690
+v -0.609274 1.236799 -0.682690
+v -0.609274 1.236799 -1.901238
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vn 1.000000 -0.000000 0.000001
+s off
+f 569/190/42 570/191/42 571/192/42
+f 573/190/39 576/191/39 575/192/39
+f 569/190/438 573/191/438 574/192/438
+f 570/190/49 574/191/49 571/193/49
+f 571/190/46 575/191/46 572/193/46
+f 573/190/47 569/191/47 572/192/47
+f 572/193/42 569/190/42 571/192/42
+f 574/193/39 573/190/39 575/192/39
+f 570/193/48 569/190/48 574/192/48
+f 574/191/49 575/192/49 571/193/49
+f 575/191/46 576/192/46 572/193/46
+f 576/193/47 573/190/47 572/192/47
diff --git a/examples/datavisualization/graphgallery/data/topography.png b/examples/datavisualization/graphgallery/data/topography.png
new file mode 100644
index 000000000..9349cdb31
--- /dev/null
+++ b/examples/datavisualization/graphgallery/data/topography.png
Binary files differ
diff --git a/examples/datavisualization/graphgallery/doc/graph_gallery.webp b/examples/datavisualization/graphgallery/doc/graph_gallery.webp
new file mode 100644
index 000000000..694b4f294
--- /dev/null
+++ b/examples/datavisualization/graphgallery/doc/graph_gallery.webp
Binary files differ
diff --git a/examples/datavisualization/graphgallery/doc/graphgallery.rst b/examples/datavisualization/graphgallery/doc/graphgallery.rst
new file mode 100644
index 000000000..5ebefc56a
--- /dev/null
+++ b/examples/datavisualization/graphgallery/doc/graphgallery.rst
@@ -0,0 +1,11 @@
+Graph Gallery
+=============
+
+
+Graph Gallery demonstrates all three graph types and some of their special
+features. The graphs have their own tabs in the application.
+
+
+.. image:: graph_gallery.webp
+ :width: 400
+ :alt: Graph Gallery Screenshot
diff --git a/examples/datavisualization/graphgallery/graphgallery.pyproject b/examples/datavisualization/graphgallery/graphgallery.pyproject
new file mode 100644
index 000000000..8022aea9b
--- /dev/null
+++ b/examples/datavisualization/graphgallery/graphgallery.pyproject
@@ -0,0 +1,18 @@
+{
+ "files": ["axesinputhandler.py",
+ "bargraph.py",
+ "custominputhandler.py",
+ "graphgallery.qrc",
+ "graphmodifier.py",
+ "highlightseries.py",
+ "main.py",
+ "rainfalldata.py",
+ "scatterdatamodifier.py",
+ "scattergraph.py",
+ "surfacegraph.py",
+ "surfacegraphmodifier.py",
+ "topographicseries.py",
+ "variantbardatamapping.py",
+ "variantbardataproxy.py",
+ "variantdataset.py"]
+}
diff --git a/examples/datavisualization/graphgallery/graphgallery.qrc b/examples/datavisualization/graphgallery/graphgallery.qrc
new file mode 100644
index 000000000..6df5703df
--- /dev/null
+++ b/examples/datavisualization/graphgallery/graphgallery.qrc
@@ -0,0 +1,13 @@
+<RCC>
+ <qresource prefix="/">
+ <file>data/raindata.txt</file>
+ <file>data/layer_1.png</file>
+ <file>data/layer_2.png</file>
+ <file>data/layer_3.png</file>
+ <file>data/refinery.obj</file>
+ <file>data/oilrig.obj</file>
+ <file>data/pipe.obj</file>
+ <file>data/maptexture.jpg</file>
+ <file>data/topography.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/graphgallery/graphmodifier.py b/examples/datavisualization/graphgallery/graphmodifier.py
new file mode 100644
index 000000000..e8d94ee96
--- /dev/null
+++ b/examples/datavisualization/graphgallery/graphmodifier.py
@@ -0,0 +1,395 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+from math import atan, degrees
+import numpy as np
+
+from PySide6.QtCore import QObject, QPropertyAnimation, Signal, Slot
+from PySide6.QtGui import QFont, QVector3D
+from PySide6.QtDataVisualization import (QAbstract3DGraph, QAbstract3DSeries,
+ QBarDataItem, QBar3DSeries,
+ QCategory3DAxis, QValue3DAxis,
+ Q3DCamera, Q3DTheme)
+
+from rainfalldata import RainfallData
+
+# Set up data
+TEMP_OULU = np.array([
+ [-7.4, -2.4, 0.0, 3.0, 8.2, 11.6, 14.7, 15.4, 11.4, 4.2, 2.1, -2.3], # 2015
+ [-13.4, -3.9, -1.8, 3.1, 10.6, 13.7, 17.8, 13.6, 10.7, 3.5, -3.1, -4.2], # 2016
+ [-5.7, -6.7, -3.0, -0.1, 4.7, 12.4, 16.1, 14.1, 9.4, 3.0, -0.3, -3.2], # 2017
+ [-6.4, -11.9, -7.4, 1.9, 11.4, 12.4, 21.5, 16.1, 11.0, 4.4, 2.1, -4.1], # 2018
+ [-11.7, -6.1, -2.4, 3.9, 7.2, 14.5, 15.6, 14.4, 8.5, 2.0, -3.0, -1.5], # 2019
+ [-2.1, -3.4, -1.8, 0.6, 7.0, 17.1, 15.6, 15.4, 11.1, 5.6, 1.9, -1.7], # 2020
+ [-9.6, -11.6, -3.2, 2.4, 7.8, 17.3, 19.4, 14.2, 8.0, 5.2, -2.2, -8.6], # 2021
+ [-7.3, -6.4, -1.8, 1.3, 8.1, 15.5, 17.6, 17.6, 9.1, 5.4, -1.5, -4.4]], # 2022
+ np.float64)
+
+
+TEMP_HELSINKI = np.array([
+ [-2.0, -0.1, 1.8, 5.1, 9.7, 13.7, 16.3, 17.3, 12.7, 5.4, 4.6, 2.1], # 2015
+ [-10.3, -0.6, 0.0, 4.9, 14.3, 15.7, 17.7, 16.0, 12.7, 4.6, -1.0, -0.9], # 2016
+ [-2.9, -3.3, 0.7, 2.3, 9.9, 13.8, 16.1, 15.9, 11.4, 5.0, 2.7, 0.7], # 2017
+ [-2.2, -8.4, -4.7, 5.0, 15.3, 15.8, 21.2, 18.2, 13.3, 6.7, 2.8, -2.0], # 2018
+ [-6.2, -0.5, -0.3, 6.8, 10.6, 17.9, 17.5, 16.8, 11.3, 5.2, 1.8, 1.4], # 2019
+ [1.9, 0.5, 1.7, 4.5, 9.5, 18.4, 16.5, 16.8, 13.0, 8.2, 4.4, 0.9], # 2020
+ [-4.7, -8.1, -0.9, 4.5, 10.4, 19.2, 20.9, 15.4, 9.5, 8.0, 1.5, -6.7], # 2021
+ [-3.3, -2.2, -0.2, 3.3, 9.6, 16.9, 18.1, 18.9, 9.2, 7.6, 2.3, -3.4]], # 2022
+ np.float64)
+
+
+class GraphModifier(QObject):
+
+ shadowQualityChanged = Signal(int)
+ backgroundEnabledChanged = Signal(bool)
+ gridEnabledChanged = Signal(bool)
+ fontChanged = Signal(QFont)
+ fontSizeChanged = Signal(int)
+
+ def __init__(self, bargraph, parent):
+ super().__init__(parent)
+ self._graph = bargraph
+ self._temperatureAxis = QValue3DAxis()
+ self._yearAxis = QCategory3DAxis()
+ self._monthAxis = QCategory3DAxis()
+ self._primarySeries = QBar3DSeries()
+ self._secondarySeries = QBar3DSeries()
+ self._celsiusString = "°C"
+
+ self._xRotation = float(0)
+ self._yRotation = float(0)
+ self._fontSize = 30
+ self._segments = 4
+ self._subSegments = 3
+ self._minval = float(-20)
+ self._maxval = float(20)
+ self._barMesh = QAbstract3DSeries.MeshBevelBar
+ self._smooth = False
+ self._animationCameraX = QPropertyAnimation()
+ self._animationCameraY = QPropertyAnimation()
+ self._animationCameraZoom = QPropertyAnimation()
+ self._animationCameraTarget = QPropertyAnimation()
+ self._defaultAngleX = float(0)
+ self._defaultAngleY = float(0)
+ self._defaultZoom = float(0)
+ self._defaultTarget = []
+ self._customData = None
+
+ self._graph.setShadowQuality(QAbstract3DGraph.ShadowQualitySoftMedium)
+ theme = self._graph.activeTheme()
+ theme.setBackgroundEnabled(False)
+ theme.setFont(QFont("Times New Roman", self._fontSize))
+ theme.setLabelBackgroundEnabled(True)
+ self._graph.setMultiSeriesUniform(True)
+
+ self._months = ["January", "February", "March", "April", "May", "June",
+ "July", "August", "September", "October", "November",
+ "December"]
+ self._years = ["2015", "2016", "2017", "2018", "2019", "2020",
+ "2021", "2022"]
+
+ self._temperatureAxis.setTitle("Average temperature")
+ self._temperatureAxis.setSegmentCount(self._segments)
+ self._temperatureAxis.setSubSegmentCount(self._subSegments)
+ self._temperatureAxis.setRange(self._minval, self._maxval)
+ self._temperatureAxis.setLabelFormat("%.1f " + self._celsiusString)
+ self._temperatureAxis.setLabelAutoRotation(30.0)
+ self._temperatureAxis.setTitleVisible(True)
+
+ self._yearAxis.setTitle("Year")
+ self._yearAxis.setLabelAutoRotation(30.0)
+ self._yearAxis.setTitleVisible(True)
+ self._monthAxis.setTitle("Month")
+ self._monthAxis.setLabelAutoRotation(30.0)
+ self._monthAxis.setTitleVisible(True)
+
+ self._graph.setValueAxis(self._temperatureAxis)
+ self._graph.setRowAxis(self._yearAxis)
+ self._graph.setColumnAxis(self._monthAxis)
+
+ format = "Oulu - @colLabel @rowLabel: @valueLabel"
+ self._primarySeries.setItemLabelFormat(format)
+ self._primarySeries.setMesh(QAbstract3DSeries.MeshBevelBar)
+ self._primarySeries.setMeshSmooth(False)
+
+ format = "Helsinki - @colLabel @rowLabel: @valueLabel"
+ self._secondarySeries.setItemLabelFormat(format)
+ self._secondarySeries.setMesh(QAbstract3DSeries.MeshBevelBar)
+ self._secondarySeries.setMeshSmooth(False)
+ self._secondarySeries.setVisible(False)
+
+ self._graph.addSeries(self._primarySeries)
+ self._graph.addSeries(self._secondarySeries)
+
+ self.changePresetCamera()
+
+ self.resetTemperatureData()
+
+ # Set up property animations for zooming to the selected bar
+ camera = self._graph.scene().activeCamera()
+ self._defaultAngleX = camera.xRotation()
+ self._defaultAngleY = camera.yRotation()
+ self._defaultZoom = camera.zoomLevel()
+ self._defaultTarget = camera.target()
+
+ self._animationCameraX.setTargetObject(camera)
+ self._animationCameraY.setTargetObject(camera)
+ self._animationCameraZoom.setTargetObject(camera)
+ self._animationCameraTarget.setTargetObject(camera)
+
+ self._animationCameraX.setPropertyName(b"xRotation")
+ self._animationCameraY.setPropertyName(b"yRotation")
+ self._animationCameraZoom.setPropertyName(b"zoomLevel")
+ self._animationCameraTarget.setPropertyName(b"target")
+
+ duration = 1700
+ self._animationCameraX.setDuration(duration)
+ self._animationCameraY.setDuration(duration)
+ self._animationCameraZoom.setDuration(duration)
+ self._animationCameraTarget.setDuration(duration)
+
+ # The zoom always first zooms out above the graph and then zooms in
+ zoomOutFraction = 0.3
+ self._animationCameraX.setKeyValueAt(zoomOutFraction, 0.0)
+ self._animationCameraY.setKeyValueAt(zoomOutFraction, 90.0)
+ self._animationCameraZoom.setKeyValueAt(zoomOutFraction, 50.0)
+ self._animationCameraTarget.setKeyValueAt(zoomOutFraction,
+ QVector3D(0, 0, 0))
+ self._customData = RainfallData()
+
+ def resetTemperatureData(self):
+ # Create data arrays
+ dataSet = []
+ dataSet2 = []
+
+ for year in range(0, len(self._years)):
+ # Create a data row
+ dataRow = []
+ dataRow2 = []
+ for month in range(0, len(self._months)):
+ # Add data to the row
+ item = QBarDataItem()
+ item.setValue(TEMP_OULU[year][month])
+ dataRow.append(item)
+ item = QBarDataItem()
+ item.setValue(TEMP_HELSINKI[year][month])
+ dataRow2.append(item)
+
+ # Add the row to the set
+ dataSet.append(dataRow)
+ dataSet2.append(dataRow2)
+
+ # Add data to the data proxy (the data proxy assumes ownership of it)
+ self._primarySeries.dataProxy().resetArray(dataSet, self._years, self._months)
+ self._secondarySeries.dataProxy().resetArray(dataSet2, self._years, self._months)
+
+ @Slot(int)
+ def changeRange(self, range):
+ if range >= len(self._years):
+ self._yearAxis.setRange(0, len(self._years) - 1)
+ else:
+ self._yearAxis.setRange(range, range)
+
+ @Slot(int)
+ def changeStyle(self, style):
+ comboBox = self.sender()
+ if comboBox:
+ self._barMesh = comboBox.itemData(style)
+ self._primarySeries.setMesh(self._barMesh)
+ self._secondarySeries.setMesh(self._barMesh)
+ self._customData.customSeries().setMesh(self._barMesh)
+
+ def changePresetCamera(self):
+ self._animationCameraX.stop()
+ self._animationCameraY.stop()
+ self._animationCameraZoom.stop()
+ self._animationCameraTarget.stop()
+
+ # Restore camera target in case animation has changed it
+ self._graph.scene().activeCamera().setTarget(QVector3D(0.0, 0.0, 0.0))
+
+ self._preset = Q3DCamera.CameraPresetFront.value
+
+ camera = self._graph.scene().activeCamera()
+ camera.setCameraPreset(Q3DCamera.CameraPreset(self._preset))
+
+ self._preset += 1
+ if self._preset > Q3DCamera.CameraPresetDirectlyBelow.value:
+ self._preset = Q3DCamera.CameraPresetFrontLow.value
+
+ @Slot(int)
+ def changeTheme(self, theme):
+ currentTheme = self._graph.activeTheme()
+ currentTheme.setType(Q3DTheme.Theme(theme))
+ self.backgroundEnabledChanged.emit(currentTheme.isBackgroundEnabled())
+ self.gridEnabledChanged.emit(currentTheme.isGridEnabled())
+ self.fontChanged.emit(currentTheme.font())
+ self.fontSizeChanged.emit(currentTheme.font().pointSize())
+
+ def changeLabelBackground(self):
+ theme = self._graph.activeTheme()
+ theme.setLabelBackgroundEnabled(not theme.isLabelBackgroundEnabled())
+
+ @Slot(int)
+ def changeSelectionMode(self, selectionMode):
+ comboBox = self.sender()
+ if comboBox:
+ flags = comboBox.itemData(selectionMode)
+ self._graph.setSelectionMode(QAbstract3DGraph.SelectionFlags(flags))
+
+ def changeFont(self, font):
+ newFont = font
+ self._graph.activeTheme().setFont(newFont)
+
+ def changeFontSize(self, fontsize):
+ self._fontSize = fontsize
+ font = self._graph.activeTheme().font()
+ font.setPointSize(self._fontSize)
+ self._graph.activeTheme().setFont(font)
+
+ @Slot(QAbstract3DGraph.ShadowQuality)
+ def shadowQualityUpdatedByVisual(self, sq):
+ # Updates the UI component to show correct shadow quality
+ self.shadowQualityChanged.emit(sq.value)
+
+ @Slot(int)
+ def changeLabelRotation(self, rotation):
+ self._temperatureAxis.setLabelAutoRotation(float(rotation))
+ self._monthAxis.setLabelAutoRotation(float(rotation))
+ self._yearAxis.setLabelAutoRotation(float(rotation))
+
+ @Slot(bool)
+ def setAxisTitleVisibility(self, enabled):
+ self._temperatureAxis.setTitleVisible(enabled)
+ self._monthAxis.setTitleVisible(enabled)
+ self._yearAxis.setTitleVisible(enabled)
+
+ @Slot(bool)
+ def setAxisTitleFixed(self, enabled):
+ self._temperatureAxis.setTitleFixed(enabled)
+ self._monthAxis.setTitleFixed(enabled)
+ self._yearAxis.setTitleFixed(enabled)
+
+ @Slot()
+ def zoomToSelectedBar(self):
+ self._animationCameraX.stop()
+ self._animationCameraY.stop()
+ self._animationCameraZoom.stop()
+ self._animationCameraTarget.stop()
+
+ camera = self._graph.scene().activeCamera()
+ currentX = camera.xRotation()
+ currentY = camera.yRotation()
+ currentZoom = camera.zoomLevel()
+ currentTarget = camera.target()
+
+ self._animationCameraX.setStartValue(currentX)
+ self._animationCameraY.setStartValue(currentY)
+ self._animationCameraZoom.setStartValue(currentZoom)
+ self._animationCameraTarget.setStartValue(currentTarget)
+
+ selectedBar = (self._graph.selectedSeries().selectedBar()
+ if self._graph.selectedSeries()
+ else QBar3DSeries.invalidSelectionPosition())
+
+ if selectedBar != QBar3DSeries.invalidSelectionPosition():
+ # Normalize selected bar position within axis range to determine
+ # target coordinates
+ endTarget = QVector3D()
+ xMin = self._graph.columnAxis().min()
+ xRange = self._graph.columnAxis().max() - xMin
+ zMin = self._graph.rowAxis().min()
+ zRange = self._graph.rowAxis().max() - zMin
+ endTarget.setX((selectedBar.y() - xMin) / xRange * 2.0 - 1.0)
+ endTarget.setZ((selectedBar.x() - zMin) / zRange * 2.0 - 1.0)
+
+ # Rotate the camera so that it always points approximately to the
+ # graph center
+ endAngleX = 90.0 - degrees(atan(float(endTarget.z() / endTarget.x())))
+ if endTarget.x() > 0.0:
+ endAngleX -= 180.0
+ proxy = self._graph.selectedSeries().dataProxy()
+ barValue = proxy.itemAt(selectedBar.x(), selectedBar.y()).value()
+ endAngleY = 30.0 if barValue >= 0.0 else -30.0
+ if self._graph.valueAxis().reversed():
+ endAngleY *= -1.0
+
+ self._animationCameraX.setEndValue(float(endAngleX))
+ self._animationCameraY.setEndValue(endAngleY)
+ self._animationCameraZoom.setEndValue(250)
+ self._animationCameraTarget.setEndValue(endTarget)
+ else:
+ # No selected bar, so return to the default view
+ self._animationCameraX.setEndValue(self._defaultAngleX)
+ self._animationCameraY.setEndValue(self._defaultAngleY)
+ self._animationCameraZoom.setEndValue(self._defaultZoom)
+ self._animationCameraTarget.setEndValue(self._defaultTarget)
+
+ self._animationCameraX.start()
+ self._animationCameraY.start()
+ self._animationCameraZoom.start()
+ self._animationCameraTarget.start()
+
+ @Slot(bool)
+ def setDataModeToWeather(self, enabled):
+ if enabled:
+ self.changeDataMode(False)
+
+ @Slot(bool)
+ def setDataModeToCustom(self, enabled):
+ if enabled:
+ self.changeDataMode(True)
+
+ def changeShadowQuality(self, quality):
+ sq = QAbstract3DGraph.ShadowQuality(quality)
+ self._graph.setShadowQuality(sq)
+ self.shadowQualityChanged.emit(quality)
+
+ def rotateX(self, rotation):
+ self._xRotation = rotation
+ camera = self._graph.scene().activeCamera()
+ camera.setCameraPosition(self._xRotation, self._yRotation)
+
+ def rotateY(self, rotation):
+ self._yRotation = rotation
+ camera = self._graph.scene().activeCamera()
+ camera.setCameraPosition(self._xRotation, self._yRotation)
+
+ def setBackgroundEnabled(self, enabled):
+ self._graph.activeTheme().setBackgroundEnabled(bool(enabled))
+
+ def setGridEnabled(self, enabled):
+ self._graph.activeTheme().setGridEnabled(bool(enabled))
+
+ def setSmoothBars(self, smooth):
+ self._smooth = bool(smooth)
+ self._primarySeries.setMeshSmooth(self._smooth)
+ self._secondarySeries.setMeshSmooth(self._smooth)
+ self._customData.customSeries().setMeshSmooth(self._smooth)
+
+ def setSeriesVisibility(self, enabled):
+ self._secondarySeries.setVisible(bool(enabled))
+
+ def setReverseValueAxis(self, enabled):
+ self._graph.valueAxis().setReversed(enabled)
+
+ def setReflection(self, enabled):
+ self._graph.setReflection(enabled)
+
+ def changeDataMode(self, customData):
+ # Change between weather data and data from custom proxy
+ if customData:
+ self._graph.removeSeries(self._primarySeries)
+ self._graph.removeSeries(self._secondarySeries)
+ self._graph.addSeries(self._customData.customSeries())
+ self._graph.setValueAxis(self._customData.valueAxis())
+ self._graph.setRowAxis(self._customData.rowAxis())
+ self._graph.setColumnAxis(self._customData.colAxis())
+ else:
+ self._graph.removeSeries(self._customData.customSeries())
+ self._graph.addSeries(self._primarySeries)
+ self._graph.addSeries(self._secondarySeries)
+ self._graph.setValueAxis(self._temperatureAxis)
+ self._graph.setRowAxis(self._yearAxis)
+ self._graph.setColumnAxis(self._monthAxis)
diff --git a/examples/datavisualization/graphgallery/highlightseries.py b/examples/datavisualization/graphgallery/highlightseries.py
new file mode 100644
index 000000000..b5495b422
--- /dev/null
+++ b/examples/datavisualization/graphgallery/highlightseries.py
@@ -0,0 +1,94 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QPoint, Qt, Slot
+from PySide6.QtGui import QLinearGradient, QVector3D
+from PySide6.QtDataVisualization import (QSurface3DSeries, QSurfaceDataItem, Q3DTheme)
+
+
+DARK_RED_POS = 1.0
+RED_POS = 0.8
+YELLOW_POS = 0.6
+GREEN_POS = 0.4
+DARK_GREEN_POS = 0.2
+
+
+class HighlightSeries(QSurface3DSeries):
+
+ def __init__(self):
+ super().__init__()
+ self._width = 100
+ self._height = 100
+ self._srcWidth = 0
+ self._srcHeight = 0
+ self._position = {}
+ self._topographicSeries = None
+ self._minHeight = 0.0
+ self.setDrawMode(QSurface3DSeries.DrawSurface)
+ self.setFlatShadingEnabled(True)
+ self.setVisible(False)
+
+ def setTopographicSeries(self, series):
+ self._topographicSeries = series
+ array = self._topographicSeries.dataProxy().array()
+ self._srcWidth = len(array[0])
+ self._srcHeight = len(array)
+ self._topographicSeries.selectedPointChanged.connect(self.handlePositionChange)
+
+ def setMinHeight(self, height):
+ self. m_minHeight = height
+
+ @Slot(QPoint)
+ def handlePositionChange(self, position):
+ self._position = position
+
+ if position == self.invalidSelectionPosition():
+ self.setVisible(False)
+ return
+
+ halfWidth = self._width / 2
+ halfHeight = self._height / 2
+
+ startX = position.y() - halfWidth
+ if startX < 0:
+ startX = 0
+ endX = position.y() + halfWidth
+ if endX > (self._srcWidth - 1):
+ endX = self._srcWidth - 1
+ startZ = position.x() - halfHeight
+ if startZ < 0:
+ startZ = 0
+ endZ = position.x() + halfHeight
+ if endZ > (self._srcHeight - 1):
+ endZ = self._srcHeight - 1
+
+ srcProxy = self._topographicSeries.dataProxy()
+ srcArray = srcProxy.array()
+
+ dataArray = []
+ for i in range(int(startZ), int(endZ)):
+ newRow = []
+ srcRow = srcArray[i]
+ for j in range(startX, endX):
+ pos = srcRow.at(j).position()
+ pos.setY(pos.y() + 0.1)
+ item = QSurfaceDataItem(QVector3D(pos))
+ newRow.append(item)
+ dataArray.append(newRow)
+ self.dataProxy().resetArray(dataArray)
+ self.setVisible(True)
+
+ @Slot(float)
+ def handleGradientChange(self, value):
+ ratio = self._minHeight / value
+
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.black)
+ gr.setColorAt(DARK_GREEN_POS * ratio, Qt.darkGreen)
+ gr.setColorAt(GREEN_POS * ratio, Qt.green)
+ gr.setColorAt(YELLOW_POS * ratio, Qt.yellow)
+ gr.setColorAt(RED_POS * ratio, Qt.red)
+ gr.setColorAt(DARK_RED_POS * ratio, Qt.darkRed)
+
+ self.setBaseGradient(gr)
+ self.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
diff --git a/examples/datavisualization/graphgallery/main.py b/examples/datavisualization/graphgallery/main.py
new file mode 100644
index 000000000..4b57b85dd
--- /dev/null
+++ b/examples/datavisualization/graphgallery/main.py
@@ -0,0 +1,50 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Qt DataVisualization graphgallery example from Qt v6.x"""
+
+import os
+import sys
+
+from PySide6.QtCore import QSize
+from PySide6.QtWidgets import QApplication, QMessageBox, QTabWidget
+
+from bargraph import BarGraph
+from scattergraph import ScatterGraph
+from surfacegraph import SurfaceGraph
+
+
+if __name__ == "__main__":
+ os.environ["QSG_RHI_BACKEND"] = "opengl"
+
+ app = QApplication(sys.argv)
+
+ # Create a tab widget for creating own tabs for Q3DBars, Q3DScatter, and Q3DSurface
+ tabWidget = QTabWidget()
+ tabWidget.setWindowTitle("Graph Gallery")
+
+ screen_size = tabWidget.screen().size()
+ minimum_graph_size = QSize(screen_size.width() / 2, screen_size.height() / 1.75)
+
+ # Create bar graph
+ bars = BarGraph()
+ # Create scatter graph
+ scatter = ScatterGraph()
+ # Create surface graph
+ surface = SurfaceGraph()
+
+ if (not bars.initialize(minimum_graph_size, screen_size)
+ or not scatter.initialize(minimum_graph_size, screen_size)
+ or not surface.initialize(minimum_graph_size, screen_size)):
+ QMessageBox.warning(None, "Graph Gallery", "Couldn't initialize the OpenGL context.")
+ sys.exit(-1)
+
+ # Add bars widget
+ tabWidget.addTab(bars.barsWidget(), "Bar Graph")
+ # Add scatter widget
+ tabWidget.addTab(scatter.scatterWidget(), "Scatter Graph")
+ # Add surface widget
+ tabWidget.addTab(surface.surfaceWidget(), "Surface Graph")
+
+ tabWidget.show()
+ sys.exit(app.exec())
diff --git a/examples/datavisualization/graphgallery/rainfalldata.py b/examples/datavisualization/graphgallery/rainfalldata.py
new file mode 100644
index 000000000..18d6de8d7
--- /dev/null
+++ b/examples/datavisualization/graphgallery/rainfalldata.py
@@ -0,0 +1,125 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from pathlib import Path
+
+from PySide6.QtCore import QFile, QIODevice, QObject
+from PySide6.QtDataVisualization import (QBar3DSeries, QCategory3DAxis, QValue3DAxis)
+
+from variantbardataproxy import VariantBarDataProxy
+from variantbardatamapping import VariantBarDataMapping
+from variantdataset import VariantDataSet
+
+
+MONTHS = ["January", "February", "March", "April",
+ "May", "June", "July", "August", "September", "October",
+ "November", "December"]
+
+
+class RainfallData(QObject):
+
+ def __init__(self):
+ super().__init__()
+ self._columnCount = 0
+ self._rowCount = 0
+ self._years = []
+ self._numericMonths = []
+ self._proxy = VariantBarDataProxy()
+ self._mapping = None
+ self._dataSet = None
+ self._series = QBar3DSeries()
+ self._valueAxis = QValue3DAxis()
+ self._rowAxis = QCategory3DAxis()
+ self._colAxis = QCategory3DAxis()
+
+ # In data file the months are in numeric format, so create custom list
+ for i in range(1, 13):
+ self._numericMonths.append(str(i))
+
+ self._columnCount = len(self._numericMonths)
+
+ self.updateYearsList(2010, 2022)
+
+ # Create proxy and series
+ self._proxy = VariantBarDataProxy()
+ self._series = QBar3DSeries(self._proxy)
+
+ self._series.setItemLabelFormat("%.1f mm")
+
+ # Create the axes
+ self._rowAxis = QCategory3DAxis(self)
+ self._colAxis = QCategory3DAxis(self)
+ self._valueAxis = QValue3DAxis(self)
+ self._rowAxis.setAutoAdjustRange(True)
+ self._colAxis.setAutoAdjustRange(True)
+ self._valueAxis.setAutoAdjustRange(True)
+
+ # Set axis labels and titles
+ self._rowAxis.setTitle("Year")
+ self._colAxis.setTitle("Month")
+ self._valueAxis.setTitle("rainfall (mm)")
+ self._valueAxis.setSegmentCount(5)
+ self._rowAxis.setLabels(self._years)
+ self._colAxis.setLabels(MONTHS)
+ self._rowAxis.setTitleVisible(True)
+ self._colAxis.setTitleVisible(True)
+ self._valueAxis.setTitleVisible(True)
+
+ self.addDataSet()
+
+ def customSeries(self):
+ return self._series
+
+ def valueAxis(self):
+ return self._valueAxis
+
+ def rowAxis(self):
+ return self._rowAxis
+
+ def colAxis(self):
+ return self._colAxis
+
+ def updateYearsList(self, start, end):
+ self._years.clear()
+ for i in range(start, end + 1):
+ self._years.append(str(i))
+ self._rowCount = len(self._years)
+
+ def addDataSet(self):
+ # Create a new variant data set and data item list
+ self._dataSet = VariantDataSet()
+ itemList = []
+
+ # Read data from a data file into the data item list
+ file_path = Path(__file__).resolve().parent / "data" / "raindata.txt"
+ dataFile = QFile(file_path)
+ if dataFile.open(QIODevice.ReadOnly | QIODevice.Text):
+ data = dataFile.readAll().data().decode("utf8")
+ for line in data.split("\n"):
+ if line and not line.startswith("#"): # Ignore comments
+ tokens = line.split(",")
+ # Each line has three data items: Year, month, and
+ # rainfall value
+ if len(tokens) >= 3:
+ # Store year and month as strings, and rainfall value
+ # as double into a variant data item and add the item to
+ # the item list.
+ newItem = []
+ newItem.append(tokens[0].strip())
+ newItem.append(tokens[1].strip())
+ newItem.append(float(tokens[2].strip()))
+ itemList.append(newItem)
+ else:
+ print("Unable to open data file:", dataFile.fileName(),
+ file=sys.stderr)
+
+ # Add items to the data set and set it to the proxy
+ self._dataSet.addItems(itemList)
+ self._proxy.setDataSet(self._dataSet)
+
+ # Create new mapping for the data and set it to the proxy
+ self._mapping = VariantBarDataMapping(0, 1, 2,
+ self._years, self._numericMonths)
+ self._proxy.setMapping(self._mapping)
diff --git a/examples/datavisualization/graphgallery/scatterdatamodifier.py b/examples/datavisualization/graphgallery/scatterdatamodifier.py
new file mode 100644
index 000000000..7c16ef7b9
--- /dev/null
+++ b/examples/datavisualization/graphgallery/scatterdatamodifier.py
@@ -0,0 +1,151 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from math import cos, degrees, sqrt
+
+from PySide6.QtCore import QObject, Signal, Slot, Qt
+from PySide6.QtGui import QVector3D
+from PySide6.QtDataVisualization import (QAbstract3DGraph, QAbstract3DSeries,
+ QScatterDataItem, QScatterDataProxy,
+ QScatter3DSeries, Q3DCamera,
+ Q3DTheme)
+
+from axesinputhandler import AxesInputHandler
+
+
+NUMBER_OF_ITEMS = 10000
+CURVE_DIVIDER = 7.5
+LOWER_NUMBER_OF_ITEMS = 900
+LOWER_CURVE_DIVIDER = 0.75
+
+
+class ScatterDataModifier(QObject):
+
+ backgroundEnabledChanged = Signal(bool)
+ gridEnabledChanged = Signal(bool)
+ shadowQualityChanged = Signal(int)
+
+ def __init__(self, scatter, parent):
+ super().__init__(parent)
+
+ self._graph = scatter
+
+ self._style = QAbstract3DSeries.MeshSphere
+ self._smooth = True
+ self._inputHandler = AxesInputHandler(scatter)
+ self._autoAdjust = True
+ self._itemCount = LOWER_NUMBER_OF_ITEMS
+ self._CURVE_DIVIDER = LOWER_CURVE_DIVIDER
+ self._inputHandler = AxesInputHandler(scatter)
+
+ self._graph.activeTheme().setType(Q3DTheme.ThemeStoneMoss)
+ self._graph.setShadowQuality(QAbstract3DGraph.ShadowQualitySoftHigh)
+ self._graph.scene().activeCamera().setCameraPreset(Q3DCamera.CameraPresetFront)
+ self._graph.scene().activeCamera().setZoomLevel(80.0)
+
+ self._proxy = QScatterDataProxy()
+ self._series = QScatter3DSeries(self._proxy)
+ self._series.setItemLabelFormat("@xTitle: @xLabel @yTitle: @yLabel @zTitle: @zLabel")
+ self._series.setMeshSmooth(self._smooth)
+ self._graph.addSeries(self._series)
+
+ # Give ownership of the handler to the graph and make it the active
+ # handler
+ self._graph.setActiveInputHandler(self._inputHandler)
+
+ # Give our axes to the input handler
+ self._inputHandler.setAxes(self._graph.axisX(), self._graph.axisZ(),
+ self._graph.axisY())
+
+ self.addData()
+
+ def addData(self):
+ # Configure the axes according to the data
+ self._graph.axisX().setTitle("X")
+ self._graph.axisY().setTitle("Y")
+ self._graph.axisZ().setTitle("Z")
+
+ dataArray = []
+ limit = int(sqrt(self._itemCount) / 2.0)
+ for i in range(-limit, limit):
+ for j in range(-limit, limit):
+ x = float(i) + 0.5
+ y = cos(degrees(float(i * j) / self._CURVE_DIVIDER))
+ z = float(j) + 0.5
+ dataArray.append(QScatterDataItem(QVector3D(x, y, z)))
+
+ self._graph.seriesList()[0].dataProxy().resetArray(dataArray)
+
+ @Slot(int)
+ def changeStyle(self, style):
+ comboBox = self.sender()
+ if comboBox:
+ self._style = comboBox.itemData(style)
+ if self._graph.seriesList():
+ self._graph.seriesList()[0].setMesh(self._style)
+
+ @Slot(int)
+ def setSmoothDots(self, smooth):
+ self._smooth = smooth == Qt.Checked.value
+ series = self._graph.seriesList()[0]
+ series.setMeshSmooth(self._smooth)
+
+ @Slot(int)
+ def changeTheme(self, theme):
+ currentTheme = self._graph.activeTheme()
+ currentTheme.setType(Q3DTheme.Theme(theme))
+ self.backgroundEnabledChanged.emit(currentTheme.isBackgroundEnabled())
+ self.gridEnabledChanged.emit(currentTheme.isGridEnabled())
+
+ @Slot()
+ def changePresetCamera(self):
+ preset = Q3DCamera.CameraPresetFrontLow.value
+
+ camera = self._graph.scene().activeCamera()
+ camera.setCameraPreset(Q3DCamera.CameraPreset(preset))
+
+ preset += 1
+ if preset > Q3DCamera.CameraPresetDirectlyBelow.value:
+ preset = Q3DCamera.CameraPresetFrontLow.value
+
+ @Slot(QAbstract3DGraph.ShadowQuality)
+ def shadowQualityUpdatedByVisual(self, sq):
+ self.shadowQualityChanged.emit(sq.value)
+
+ @Slot(int)
+ def changeShadowQuality(self, quality):
+ sq = QAbstract3DGraph.ShadowQuality(quality)
+ self._graph.setShadowQuality(sq)
+
+ @Slot(int)
+ def setBackgroundEnabled(self, enabled):
+ self._graph.activeTheme().setBackgroundEnabled(enabled == Qt.Checked.value)
+
+ @Slot(int)
+ def setGridEnabled(self, enabled):
+ self._graph.activeTheme().setGridEnabled(enabled == Qt.Checked.value)
+
+ @Slot()
+ def toggleItemCount(self):
+ if self._itemCount == NUMBER_OF_ITEMS:
+ self._itemCount = LOWER_NUMBER_OF_ITEMS
+ self._CURVE_DIVIDER = LOWER_CURVE_DIVIDER
+ else:
+ self._itemCount = NUMBER_OF_ITEMS
+ self._CURVE_DIVIDER = CURVE_DIVIDER
+
+ self._graph.seriesList()[0].dataProxy().resetArray([])
+ self.addData()
+
+ @Slot()
+ def toggleRanges(self):
+ if not self._autoAdjust:
+ self._graph.axisX().setAutoAdjustRange(True)
+ self._graph.axisZ().setAutoAdjustRange(True)
+ self._inputHandler.setDragSpeedModifier(1.5)
+ self._autoAdjust = True
+ else:
+ self._graph.axisX().setRange(-10.0, 10.0)
+ self._graph.axisZ().setRange(-10.0, 10.0)
+ self._inputHandler.setDragSpeedModifier(15.0)
+ self._autoAdjust = False
diff --git a/examples/datavisualization/graphgallery/scattergraph.py b/examples/datavisualization/graphgallery/scattergraph.py
new file mode 100644
index 000000000..ffcd428ee
--- /dev/null
+++ b/examples/datavisualization/graphgallery/scattergraph.py
@@ -0,0 +1,128 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, QSize, Qt
+from PySide6.QtWidgets import (QCheckBox, QComboBox, QCommandLinkButton,
+ QLabel, QHBoxLayout, QSizePolicy,
+ QVBoxLayout, QWidget, )
+from PySide6.QtDataVisualization import (QAbstract3DSeries, Q3DScatter)
+
+from scatterdatamodifier import ScatterDataModifier
+
+
+class ScatterGraph(QObject):
+
+ def __init__(self):
+ super().__init__()
+ self._scatterGraph = Q3DScatter()
+ self._container = None
+ self._scatterWidget = None
+
+ def initialize(self, minimum_graph_size, maximum_graph_size):
+ if not self._scatterGraph.hasContext():
+ return -1
+
+ self._scatterWidget = QWidget()
+ hLayout = QHBoxLayout(self._scatterWidget)
+ self._container = QWidget.createWindowContainer(self._scatterGraph, self._scatterWidget)
+ self._container.setMinimumSize(minimum_graph_size)
+ self._container.setMaximumSize(maximum_graph_size)
+ self._container.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
+ self._container.setFocusPolicy(Qt.StrongFocus)
+ hLayout.addWidget(self._container, 1)
+
+ vLayout = QVBoxLayout()
+ hLayout.addLayout(vLayout)
+
+ cameraButton = QCommandLinkButton(self._scatterWidget)
+ cameraButton.setText("Change camera preset")
+ cameraButton.setDescription("Switch between a number of preset camera positions")
+ cameraButton.setIconSize(QSize(0, 0))
+
+ itemCountButton = QCommandLinkButton(self._scatterWidget)
+ itemCountButton.setText("Toggle item count")
+ itemCountButton.setDescription("Switch between 900 and 10000 data points")
+ itemCountButton.setIconSize(QSize(0, 0))
+
+ rangeButton = QCommandLinkButton(self._scatterWidget)
+ rangeButton.setText("Toggle axis ranges")
+ rangeButton.setDescription("Switch between automatic axis ranges and preset ranges")
+ rangeButton.setIconSize(QSize(0, 0))
+
+ backgroundCheckBox = QCheckBox(self._scatterWidget)
+ backgroundCheckBox.setText("Show background")
+ backgroundCheckBox.setChecked(True)
+
+ gridCheckBox = QCheckBox(self._scatterWidget)
+ gridCheckBox.setText("Show grid")
+ gridCheckBox.setChecked(True)
+
+ smoothCheckBox = QCheckBox(self._scatterWidget)
+ smoothCheckBox.setText("Smooth dots")
+ smoothCheckBox.setChecked(True)
+
+ itemStyleList = QComboBox(self._scatterWidget)
+ itemStyleList.addItem("Sphere", QAbstract3DSeries.MeshSphere)
+ itemStyleList.addItem("Cube", QAbstract3DSeries.MeshCube)
+ itemStyleList.addItem("Minimal", QAbstract3DSeries.MeshMinimal)
+ itemStyleList.addItem("Point", QAbstract3DSeries.MeshPoint)
+ itemStyleList.setCurrentIndex(0)
+
+ themeList = QComboBox(self._scatterWidget)
+ themeList.addItem("Qt")
+ themeList.addItem("Primary Colors")
+ themeList.addItem("Digia")
+ themeList.addItem("Stone Moss")
+ themeList.addItem("Army Blue")
+ themeList.addItem("Retro")
+ themeList.addItem("Ebony")
+ themeList.addItem("Isabelle")
+ themeList.setCurrentIndex(3)
+
+ shadowQuality = QComboBox(self._scatterWidget)
+ shadowQuality.addItem("None")
+ shadowQuality.addItem("Low")
+ shadowQuality.addItem("Medium")
+ shadowQuality.addItem("High")
+ shadowQuality.addItem("Low Soft")
+ shadowQuality.addItem("Medium Soft")
+ shadowQuality.addItem("High Soft")
+ shadowQuality.setCurrentIndex(6)
+
+ vLayout.addWidget(cameraButton)
+ vLayout.addWidget(itemCountButton)
+ vLayout.addWidget(rangeButton)
+ vLayout.addWidget(backgroundCheckBox)
+ vLayout.addWidget(gridCheckBox)
+ vLayout.addWidget(smoothCheckBox)
+ vLayout.addWidget(QLabel("Change dot style"))
+ vLayout.addWidget(itemStyleList)
+ vLayout.addWidget(QLabel("Change theme"))
+ vLayout.addWidget(themeList)
+ vLayout.addWidget(QLabel("Adjust shadow quality"))
+ vLayout.addWidget(shadowQuality, 1, Qt.AlignTop)
+
+ self._modifier = ScatterDataModifier(self._scatterGraph, self)
+
+ cameraButton.clicked.connect(self._modifier.changePresetCamera)
+ itemCountButton.clicked.connect(self._modifier.toggleItemCount)
+ rangeButton.clicked.connect(self._modifier.toggleRanges)
+
+ backgroundCheckBox.stateChanged.connect(self._modifier.setBackgroundEnabled)
+ gridCheckBox.stateChanged.connect(self._modifier.setGridEnabled)
+ smoothCheckBox.stateChanged.connect(self._modifier.setSmoothDots)
+
+ self._modifier.backgroundEnabledChanged.connect(backgroundCheckBox.setChecked)
+ self._modifier.gridEnabledChanged.connect(gridCheckBox.setChecked)
+ itemStyleList.currentIndexChanged.connect(self._modifier.changeStyle)
+
+ themeList.currentIndexChanged.connect(self._modifier.changeTheme)
+
+ shadowQuality.currentIndexChanged.connect(self._modifier.changeShadowQuality)
+
+ self._modifier.shadowQualityChanged.connect(shadowQuality.setCurrentIndex)
+ self._scatterGraph.shadowQualityChanged.connect(self._modifier.shadowQualityUpdatedByVisual)
+ return True
+
+ def scatterWidget(self):
+ return self._scatterWidget
diff --git a/examples/datavisualization/graphgallery/surfacegraph.py b/examples/datavisualization/graphgallery/surfacegraph.py
new file mode 100644
index 000000000..d42f496f9
--- /dev/null
+++ b/examples/datavisualization/graphgallery/surfacegraph.py
@@ -0,0 +1,265 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from surfacegraphmodifier import SurfaceGraphModifier
+
+from PySide6.QtCore import QObject, Qt
+from PySide6.QtGui import QBrush, QIcon, QLinearGradient, QPainter, QPixmap
+from PySide6.QtWidgets import (QGroupBox, QCheckBox, QLabel, QHBoxLayout,
+ QPushButton, QRadioButton, QSizePolicy, QSlider,
+ QVBoxLayout, QWidget)
+
+from PySide6.QtDataVisualization import (Q3DSurface)
+
+
+def gradientBtoYPB_Pixmap():
+ grBtoY = QLinearGradient(0, 0, 1, 100)
+ grBtoY.setColorAt(1.0, Qt.black)
+ grBtoY.setColorAt(0.67, Qt.blue)
+ grBtoY.setColorAt(0.33, Qt.red)
+ grBtoY.setColorAt(0.0, Qt.yellow)
+ pm = QPixmap(24, 100)
+ with QPainter(pm) as pmp:
+ pmp.setBrush(QBrush(grBtoY))
+ pmp.setPen(Qt.NoPen)
+ pmp.drawRect(0, 0, 24, 100)
+ return pm
+
+
+def gradientGtoRPB_Pixmap():
+ grGtoR = QLinearGradient(0, 0, 1, 100)
+ grGtoR.setColorAt(1.0, Qt.darkGreen)
+ grGtoR.setColorAt(0.5, Qt.yellow)
+ grGtoR.setColorAt(0.2, Qt.red)
+ grGtoR.setColorAt(0.0, Qt.darkRed)
+ pm = QPixmap(24, 100)
+ with QPainter(pm) as pmp:
+ pmp.setBrush(QBrush(grGtoR))
+ pmp.setPen(Qt.NoPen)
+ pmp.drawRect(0, 0, 24, 100)
+ return pm
+
+
+def highlightPixmap():
+ HEIGHT = 400
+ WIDTH = 110
+ BORDER = 10
+ gr = QLinearGradient(0, 0, 1, HEIGHT - 2 * BORDER)
+ gr.setColorAt(1.0, Qt.black)
+ gr.setColorAt(0.8, Qt.darkGreen)
+ gr.setColorAt(0.6, Qt.green)
+ gr.setColorAt(0.4, Qt.yellow)
+ gr.setColorAt(0.2, Qt.red)
+ gr.setColorAt(0.0, Qt.darkRed)
+ pmHighlight = QPixmap(WIDTH, HEIGHT)
+ pmHighlight.fill(Qt.transparent)
+ with QPainter(pmHighlight) as pmpHighlight:
+ pmpHighlight.setBrush(QBrush(gr))
+ pmpHighlight.setPen(Qt.NoPen)
+ pmpHighlight.drawRect(BORDER, BORDER, 35, HEIGHT - 2 * BORDER)
+ pmpHighlight.setPen(Qt.black)
+ step = (HEIGHT - 2 * BORDER) / 5
+ for i in range(0, 6):
+ yPos = i * step + BORDER
+ pmpHighlight.drawLine(BORDER, yPos, 55, yPos)
+ HEIGHT = 550 - (i * 110)
+ pmpHighlight.drawText(60, yPos + 2, f"{HEIGHT} m")
+ return pmHighlight
+
+
+class SurfaceGraph(QObject):
+
+ def __init__(self):
+ super().__init__()
+ self._surfaceGraph = Q3DSurface()
+ self._container = None
+ self._surfaceWidget = None
+
+ def initialize(self, minimum_graph_size, maximum_graph_size):
+ if not self._surfaceGraph.hasContext():
+ return False
+
+ self._surfaceWidget = QWidget()
+ hLayout = QHBoxLayout(self._surfaceWidget)
+ self._container = QWidget.createWindowContainer(self._surfaceGraph,
+ self._surfaceWidget)
+ self._container.setMinimumSize(minimum_graph_size)
+ self._container.setMaximumSize(maximum_graph_size)
+ self._container.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
+ self._container.setFocusPolicy(Qt.StrongFocus)
+ hLayout.addWidget(self._container, 1)
+ vLayout = QVBoxLayout()
+ hLayout.addLayout(vLayout)
+ vLayout.setAlignment(Qt.AlignTop)
+ # Create control widgets
+ modelGroupBox = QGroupBox("Model")
+ sqrtSinModelRB = QRadioButton(self._surfaceWidget)
+ sqrtSinModelRB.setText("Sqrt and Sin")
+ sqrtSinModelRB.setChecked(False)
+ heightMapModelRB = QRadioButton(self._surfaceWidget)
+ heightMapModelRB.setText("Multiseries\nHeight Map")
+ heightMapModelRB.setChecked(False)
+ texturedModelRB = QRadioButton(self._surfaceWidget)
+ texturedModelRB.setText("Textured\nTopography")
+ texturedModelRB.setChecked(False)
+ modelVBox = QVBoxLayout()
+ modelVBox.addWidget(sqrtSinModelRB)
+ modelVBox.addWidget(heightMapModelRB)
+ modelVBox.addWidget(texturedModelRB)
+ modelGroupBox.setLayout(modelVBox)
+ selectionGroupBox = QGroupBox("Graph Selection Mode")
+ modeNoneRB = QRadioButton(self._surfaceWidget)
+ modeNoneRB.setText("No selection")
+ modeNoneRB.setChecked(False)
+ modeItemRB = QRadioButton(self._surfaceWidget)
+ modeItemRB.setText("Item")
+ modeItemRB.setChecked(False)
+ modeSliceRowRB = QRadioButton(self._surfaceWidget)
+ modeSliceRowRB.setText("Row Slice")
+ modeSliceRowRB.setChecked(False)
+ modeSliceColumnRB = QRadioButton(self._surfaceWidget)
+ modeSliceColumnRB.setText("Column Slice")
+ modeSliceColumnRB.setChecked(False)
+ selectionVBox = QVBoxLayout()
+ selectionVBox.addWidget(modeNoneRB)
+ selectionVBox.addWidget(modeItemRB)
+ selectionVBox.addWidget(modeSliceRowRB)
+ selectionVBox.addWidget(modeSliceColumnRB)
+ selectionGroupBox.setLayout(selectionVBox)
+ axisGroupBox = QGroupBox("Axis ranges")
+ axisMinSliderX = QSlider(Qt.Horizontal)
+ axisMinSliderX.setMinimum(0)
+ axisMinSliderX.setTickInterval(1)
+ axisMinSliderX.setEnabled(True)
+ axisMaxSliderX = QSlider(Qt.Horizontal)
+ axisMaxSliderX.setMinimum(1)
+ axisMaxSliderX.setTickInterval(1)
+ axisMaxSliderX.setEnabled(True)
+ axisMinSliderZ = QSlider(Qt.Horizontal)
+ axisMinSliderZ.setMinimum(0)
+ axisMinSliderZ.setTickInterval(1)
+ axisMinSliderZ.setEnabled(True)
+ axisMaxSliderZ = QSlider(Qt.Horizontal)
+ axisMaxSliderZ.setMinimum(1)
+ axisMaxSliderZ.setTickInterval(1)
+ axisMaxSliderZ.setEnabled(True)
+ axisVBox = QVBoxLayout(axisGroupBox)
+ axisVBox.addWidget(QLabel("Column range"))
+ axisVBox.addWidget(axisMinSliderX)
+ axisVBox.addWidget(axisMaxSliderX)
+ axisVBox.addWidget(QLabel("Row range"))
+ axisVBox.addWidget(axisMinSliderZ)
+ axisVBox.addWidget(axisMaxSliderZ)
+ # Mode-dependent controls
+ # sqrt-sin
+ colorGroupBox = QGroupBox("Custom gradient")
+
+ pixmap = gradientBtoYPB_Pixmap()
+ gradientBtoYPB = QPushButton(self._surfaceWidget)
+ gradientBtoYPB.setIcon(QIcon(pixmap))
+ gradientBtoYPB.setIconSize(pixmap.size())
+
+ pixmap = gradientGtoRPB_Pixmap()
+ gradientGtoRPB = QPushButton(self._surfaceWidget)
+ gradientGtoRPB.setIcon(QIcon(pixmap))
+ gradientGtoRPB.setIconSize(pixmap.size())
+
+ colorHBox = QHBoxLayout(colorGroupBox)
+ colorHBox.addWidget(gradientBtoYPB)
+ colorHBox.addWidget(gradientGtoRPB)
+ # Multiseries heightmap
+ showGroupBox = QGroupBox("Show Object")
+ showGroupBox.setVisible(False)
+ checkboxShowOilRigOne = QCheckBox("Oil Rig 1")
+ checkboxShowOilRigOne.setChecked(True)
+ checkboxShowOilRigTwo = QCheckBox("Oil Rig 2")
+ checkboxShowOilRigTwo.setChecked(True)
+ checkboxShowRefinery = QCheckBox("Refinery")
+ showVBox = QVBoxLayout()
+ showVBox.addWidget(checkboxShowOilRigOne)
+ showVBox.addWidget(checkboxShowOilRigTwo)
+ showVBox.addWidget(checkboxShowRefinery)
+ showGroupBox.setLayout(showVBox)
+ visualsGroupBox = QGroupBox("Visuals")
+ visualsGroupBox.setVisible(False)
+ checkboxVisualsSeeThrough = QCheckBox("See-Through")
+ checkboxHighlightOil = QCheckBox("Highlight Oil")
+ checkboxShowShadows = QCheckBox("Shadows")
+ checkboxShowShadows.setChecked(True)
+ visualVBox = QVBoxLayout(visualsGroupBox)
+ visualVBox.addWidget(checkboxVisualsSeeThrough)
+ visualVBox.addWidget(checkboxHighlightOil)
+ visualVBox.addWidget(checkboxShowShadows)
+ labelSelection = QLabel("Selection:")
+ labelSelection.setVisible(False)
+ labelSelectedItem = QLabel("Nothing")
+ labelSelectedItem.setVisible(False)
+ # Textured topography heightmap
+ enableTexture = QCheckBox("Surface texture")
+ enableTexture.setVisible(False)
+
+ label = QLabel(self._surfaceWidget)
+ label.setPixmap(highlightPixmap())
+ heightMapGroupBox = QGroupBox("Highlight color map")
+ colorMapVBox = QVBoxLayout()
+ colorMapVBox.addWidget(label)
+ heightMapGroupBox.setLayout(colorMapVBox)
+ heightMapGroupBox.setVisible(False)
+ # Populate vertical layout
+ # Common
+ vLayout.addWidget(modelGroupBox)
+ vLayout.addWidget(selectionGroupBox)
+ vLayout.addWidget(axisGroupBox)
+ # Sqrt Sin
+ vLayout.addWidget(colorGroupBox)
+ # Multiseries heightmap
+ vLayout.addWidget(showGroupBox)
+ vLayout.addWidget(visualsGroupBox)
+ vLayout.addWidget(labelSelection)
+ vLayout.addWidget(labelSelectedItem)
+ # Textured topography
+ vLayout.addWidget(heightMapGroupBox)
+ vLayout.addWidget(enableTexture)
+ # Create the controller
+ modifier = SurfaceGraphModifier(self._surfaceGraph, labelSelectedItem, self)
+ # Connect widget controls to controller
+ heightMapModelRB.toggled.connect(modifier.enableHeightMapModel)
+ sqrtSinModelRB.toggled.connect(modifier.enableSqrtSinModel)
+ texturedModelRB.toggled.connect(modifier.enableTopographyModel)
+ modeNoneRB.toggled.connect(modifier.toggleModeNone)
+ modeItemRB.toggled.connect(modifier.toggleModeItem)
+ modeSliceRowRB.toggled.connect(modifier.toggleModeSliceRow)
+ modeSliceColumnRB.toggled.connect(modifier.toggleModeSliceColumn)
+ axisMinSliderX.valueChanged.connect(modifier.adjustXMin)
+ axisMaxSliderX.valueChanged.connect(modifier.adjustXMax)
+ axisMinSliderZ.valueChanged.connect(modifier.adjustZMin)
+ axisMaxSliderZ.valueChanged.connect(modifier.adjustZMax)
+ # Mode dependent connections
+ gradientBtoYPB.pressed.connect(modifier.setBlackToYellowGradient)
+ gradientGtoRPB.pressed.connect(modifier.setGreenToRedGradient)
+ checkboxShowOilRigOne.stateChanged.connect(modifier.toggleItemOne)
+ checkboxShowOilRigTwo.stateChanged.connect(modifier.toggleItemTwo)
+ checkboxShowRefinery.stateChanged.connect(modifier.toggleItemThree)
+ checkboxVisualsSeeThrough.stateChanged.connect(modifier.toggleSeeThrough)
+ checkboxHighlightOil.stateChanged.connect(modifier.toggleOilHighlight)
+ checkboxShowShadows.stateChanged.connect(modifier.toggleShadows)
+ enableTexture.stateChanged.connect(modifier.toggleSurfaceTexture)
+ # Connections to disable features depending on mode
+ sqrtSinModelRB.toggled.connect(colorGroupBox.setVisible)
+ heightMapModelRB.toggled.connect(showGroupBox.setVisible)
+ heightMapModelRB.toggled.connect(visualsGroupBox.setVisible)
+ heightMapModelRB.toggled.connect(labelSelection.setVisible)
+ heightMapModelRB.toggled.connect(labelSelectedItem.setVisible)
+ texturedModelRB.toggled.connect(enableTexture.setVisible)
+ texturedModelRB.toggled.connect(heightMapGroupBox.setVisible)
+ modifier.setAxisMinSliderX(axisMinSliderX)
+ modifier.setAxisMaxSliderX(axisMaxSliderX)
+ modifier.setAxisMinSliderZ(axisMinSliderZ)
+ modifier.setAxisMaxSliderZ(axisMaxSliderZ)
+ sqrtSinModelRB.setChecked(True)
+ modeItemRB.setChecked(True)
+ enableTexture.setChecked(True)
+ return True
+
+ def surfaceWidget(self):
+ return self._surfaceWidget
diff --git a/examples/datavisualization/graphgallery/surfacegraphmodifier.py b/examples/datavisualization/graphgallery/surfacegraphmodifier.py
new file mode 100644
index 000000000..68499fac8
--- /dev/null
+++ b/examples/datavisualization/graphgallery/surfacegraphmodifier.py
@@ -0,0 +1,643 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from math import sqrt, sin
+from pathlib import Path
+
+from PySide6.QtCore import QObject, QPropertyAnimation, Qt, Slot
+from PySide6.QtGui import (QColor, QFont, QImage, QLinearGradient,
+ QQuaternion, QVector3D)
+from PySide6.QtDataVisualization import (QAbstract3DGraph, QCustom3DItem,
+ QCustom3DLabel,
+ QHeightMapSurfaceDataProxy,
+ QValue3DAxis, QSurfaceDataItem,
+ QSurfaceDataProxy, QSurface3DSeries,
+ Q3DInputHandler, Q3DCamera, Q3DTheme)
+
+
+from highlightseries import HighlightSeries
+from topographicseries import TopographicSeries
+from custominputhandler import CustomInputHandler
+
+
+SAMPLE_COUNT_X = 150
+SAMPLE_COUNT_Z = 150
+HEIGHTMAP_GRID_STEP_X = 6
+HEIGHTMAP_GRID_STEP_Z = 6
+SAMPLE_MIN = -8.0
+SAMPLE_MAX = 8.0
+
+AREA_WIDTH = 8000.0
+AREA_HEIGHT = 8000.0
+ASPECT_RATIO = 0.1389
+MIN_RANGE = AREA_WIDTH * 0.49
+
+
+class SurfaceGraphModifier(QObject):
+
+ def __init__(self, surface, label, parent):
+ super().__init__(parent)
+ self._data_path = Path(__file__).resolve().parent / "data"
+ self._graph = surface
+ self._textField = label
+ self._sqrtSinProxy = None
+ self._sqrtSinSeries = None
+ self._heightMapProxyOne = None
+ self._heightMapProxyTwo = None
+ self._heightMapProxyThree = None
+ self._heightMapSeriesOne = None
+ self._heightMapSeriesTwo = None
+ self._heightMapSeriesThree = None
+
+ self._axisMinSliderX = None
+ self._axisMaxSliderX = None
+ self._axisMinSliderZ = None
+ self._axisMaxSliderZ = None
+ self._rangeMinX = 0.0
+ self._rangeMinZ = 0.0
+ self._stepX = 0.0
+ self._stepZ = 0.0
+ self._heightMapWidth = 0
+ self._heightMapHeight = 0
+
+ self._selectionAnimation = None
+ self._titleLabel = None
+ self._previouslyAnimatedItem = None
+ self._previousScaling = {}
+
+ self._topography = None
+ self._highlight = None
+ self._highlightWidth = 0
+ self._highlightHeight = 0
+
+ self._customInputHandler = None
+ self._defaultInputHandler = Q3DInputHandler()
+
+ ac = self._graph.scene().activeCamera()
+ ac.setZoomLevel(85.0)
+ ac.setCameraPreset(Q3DCamera.CameraPresetIsometricRight)
+ self._graph.activeTheme().setType(Q3DTheme.ThemeRetro)
+
+ self._x_axis = QValue3DAxis()
+ self._y_axis = QValue3DAxis()
+ self._z_axis = QValue3DAxis()
+ self._graph.setAxisX(self._x_axis)
+ self._graph.setAxisY(self._y_axis)
+ self._graph.setAxisZ(self._z_axis)
+
+ #
+ # Sqrt Sin
+ #
+ self._sqrtSinProxy = QSurfaceDataProxy()
+ self._sqrtSinSeries = QSurface3DSeries(self._sqrtSinProxy)
+ self.fillSqrtSinProxy()
+
+ #
+ # Multisurface heightmap
+ #
+ # Create the first surface layer
+ heightMapImageOne = QImage(self._data_path / "layer_1.png")
+ self._heightMapProxyOne = QHeightMapSurfaceDataProxy(heightMapImageOne)
+ self._heightMapSeriesOne = QSurface3DSeries(self._heightMapProxyOne)
+ self._heightMapSeriesOne.setItemLabelFormat("(@xLabel, @zLabel): @yLabel")
+ self._heightMapProxyOne.setValueRanges(34.0, 40.0, 18.0, 24.0)
+
+ # Create the other 2 surface layers
+ heightMapImageTwo = QImage(self._data_path / "layer_2.png")
+ self._heightMapProxyTwo = QHeightMapSurfaceDataProxy(heightMapImageTwo)
+ self._heightMapSeriesTwo = QSurface3DSeries(self._heightMapProxyTwo)
+ self._heightMapSeriesTwo.setItemLabelFormat("(@xLabel, @zLabel): @yLabel")
+ self._heightMapProxyTwo.setValueRanges(34.0, 40.0, 18.0, 24.0)
+
+ heightMapImageThree = QImage(self._data_path / "layer_3.png")
+ self._heightMapProxyThree = QHeightMapSurfaceDataProxy(heightMapImageThree)
+ self._heightMapSeriesThree = QSurface3DSeries(self._heightMapProxyThree)
+ self._heightMapSeriesThree.setItemLabelFormat("(@xLabel, @zLabel): @yLabel")
+ self._heightMapProxyThree.setValueRanges(34.0, 40.0, 18.0, 24.0)
+
+ # The images are the same size, so it's enough to get the dimensions
+ # from one
+ self._heightMapWidth = heightMapImageOne.width()
+ self._heightMapHeight = heightMapImageOne.height()
+
+ # Set the gradients for multi-surface layers
+ grOne = QLinearGradient()
+ grOne.setColorAt(0.0, Qt.black)
+ grOne.setColorAt(0.38, Qt.darkYellow)
+ grOne.setColorAt(0.39, Qt.darkGreen)
+ grOne.setColorAt(0.5, Qt.darkGray)
+ grOne.setColorAt(1.0, Qt.gray)
+ self._heightMapSeriesOne.setBaseGradient(grOne)
+ self._heightMapSeriesOne.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
+
+ grTwo = QLinearGradient()
+ grTwo.setColorAt(0.39, Qt.blue)
+ grTwo.setColorAt(0.4, Qt.white)
+ self._heightMapSeriesTwo.setBaseGradient(grTwo)
+ self._heightMapSeriesTwo.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
+
+ grThree = QLinearGradient()
+ grThree.setColorAt(0.0, Qt.white)
+ grThree.setColorAt(0.05, Qt.black)
+ self._heightMapSeriesThree.setBaseGradient(grThree)
+ self._heightMapSeriesThree.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
+
+ # Custom items and label
+ self._graph.selectedElementChanged.connect(self.handleElementSelected)
+
+ self._selectionAnimation = QPropertyAnimation(self)
+ self._selectionAnimation.setPropertyName(b"scaling")
+ self._selectionAnimation.setDuration(500)
+ self._selectionAnimation.setLoopCount(-1)
+
+ titleFont = QFont("Century Gothic", 30)
+ titleFont.setBold(True)
+ self._titleLabel = QCustom3DLabel("Oil Rigs on Imaginary Sea", titleFont,
+ QVector3D(0.0, 1.2, 0.0),
+ QVector3D(1.0, 1.0, 0.0),
+ QQuaternion())
+ self._titleLabel.setPositionAbsolute(True)
+ self._titleLabel.setFacingCamera(True)
+ self._titleLabel.setBackgroundColor(QColor(0x66cdaa))
+ self._graph.addCustomItem(self._titleLabel)
+ self._titleLabel.setVisible(False)
+
+ # Make two of the custom object visible
+ self.toggleItemOne(True)
+ self.toggleItemTwo(True)
+
+ #
+ # Topographic map
+ #
+ self._topography = TopographicSeries()
+ file_name = os.fspath(self._data_path / "topography.png")
+ self._topography.setTopographyFile(file_name, AREA_WIDTH, AREA_HEIGHT)
+ self._topography.setItemLabelFormat("@yLabel m")
+
+ self._highlight = HighlightSeries()
+ self._highlight.setTopographicSeries(self._topography)
+ self._highlight.setMinHeight(MIN_RANGE * ASPECT_RATIO)
+ self._highlight.handleGradientChange(AREA_WIDTH * ASPECT_RATIO)
+ self._graph.axisY().maxChanged.connect(self._highlight.handleGradientChange)
+
+ self._customInputHandler = CustomInputHandler(self._graph)
+ self._customInputHandler.setHighlightSeries(self._highlight)
+ self._customInputHandler.setAxes(self._x_axis, self._y_axis, self._z_axis)
+ self._customInputHandler.setLimits(0.0, AREA_WIDTH, MIN_RANGE)
+ self._customInputHandler.setAspectRatio(ASPECT_RATIO)
+
+ def fillSqrtSinProxy(self):
+ stepX = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_X - 1)
+ stepZ = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_Z - 1)
+
+ dataArray = []
+ for i in range(0, SAMPLE_COUNT_Z):
+ newRow = []
+ # Keep values within range bounds, since just adding step can
+ # cause minor drift due to the rounding errors.
+ z = min(SAMPLE_MAX, (i * stepZ + SAMPLE_MIN))
+ for j in range(0, SAMPLE_COUNT_X):
+ x = min(SAMPLE_MAX, (j * stepX + SAMPLE_MIN))
+ R = sqrt(z * z + x * x) + 0.01
+ y = (sin(R) / R + 0.24) * 1.61
+ item = QSurfaceDataItem(QVector3D(x, y, z))
+ newRow.append(item)
+ dataArray.append(newRow)
+ self._sqrtSinProxy.resetArray(dataArray)
+
+ @Slot(bool)
+ def enableSqrtSinModel(self, enable):
+ if enable:
+ self._sqrtSinSeries.setDrawMode(QSurface3DSeries.DrawSurfaceAndWireframe)
+ self._sqrtSinSeries.setFlatShadingEnabled(True)
+
+ self._graph.axisX().setLabelFormat("%.2f")
+ self._graph.axisZ().setLabelFormat("%.2f")
+ self._graph.axisX().setRange(SAMPLE_MIN, SAMPLE_MAX)
+ self._graph.axisY().setRange(0.0, 2.0)
+ self._graph.axisZ().setRange(SAMPLE_MIN, SAMPLE_MAX)
+ self._graph.axisX().setLabelAutoRotation(30.0)
+ self._graph.axisY().setLabelAutoRotation(90.0)
+ self._graph.axisZ().setLabelAutoRotation(30.0)
+
+ self._graph.removeSeries(self._heightMapSeriesOne)
+ self._graph.removeSeries(self._heightMapSeriesTwo)
+ self._graph.removeSeries(self._heightMapSeriesThree)
+ self._graph.removeSeries(self._topography)
+ self._graph.removeSeries(self._highlight)
+
+ self._graph.addSeries(self._sqrtSinSeries)
+
+ self._titleLabel.setVisible(False)
+ self._graph.axisX().setTitleVisible(False)
+ self._graph.axisY().setTitleVisible(False)
+ self._graph.axisZ().setTitleVisible(False)
+
+ self._graph.axisX().setTitle("")
+ self._graph.axisY().setTitle("")
+ self._graph.axisZ().setTitle("")
+
+ self._graph.setActiveInputHandler(self._defaultInputHandler)
+
+ # Reset range sliders for Sqrt & Sin
+ self._rangeMinX = SAMPLE_MIN
+ self._rangeMinZ = SAMPLE_MIN
+ self._stepX = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_X - 1)
+ self._stepZ = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_Z - 1)
+ self._axisMinSliderX.setMinimum(0)
+ self._axisMinSliderX.setMaximum(SAMPLE_COUNT_X - 2)
+ self._axisMinSliderX.setValue(0)
+ self._axisMaxSliderX.setMinimum(1)
+ self._axisMaxSliderX.setMaximum(SAMPLE_COUNT_X - 1)
+ self._axisMaxSliderX.setValue(SAMPLE_COUNT_X - 1)
+ self._axisMinSliderZ.setMinimum(0)
+ self._axisMinSliderZ.setMaximum(SAMPLE_COUNT_Z - 2)
+ self._axisMinSliderZ.setValue(0)
+ self._axisMaxSliderZ.setMinimum(1)
+ self._axisMaxSliderZ.setMaximum(SAMPLE_COUNT_Z - 1)
+ self._axisMaxSliderZ.setValue(SAMPLE_COUNT_Z - 1)
+
+ @Slot(bool)
+ def enableHeightMapModel(self, enable):
+ if enable:
+ self._heightMapSeriesOne.setDrawMode(QSurface3DSeries.DrawSurface)
+ self._heightMapSeriesOne.setFlatShadingEnabled(False)
+ self._heightMapSeriesTwo.setDrawMode(QSurface3DSeries.DrawSurface)
+ self._heightMapSeriesTwo.setFlatShadingEnabled(False)
+ self._heightMapSeriesThree.setDrawMode(QSurface3DSeries.DrawSurface)
+ self._heightMapSeriesThree.setFlatShadingEnabled(False)
+
+ self._graph.axisX().setLabelFormat("%.1f N")
+ self._graph.axisZ().setLabelFormat("%.1f E")
+ self._graph.axisX().setRange(34.0, 40.0)
+ self._graph.axisY().setAutoAdjustRange(True)
+ self._graph.axisZ().setRange(18.0, 24.0)
+
+ self._graph.axisX().setTitle("Latitude")
+ self._graph.axisY().setTitle("Height")
+ self._graph.axisZ().setTitle("Longitude")
+
+ self._graph.removeSeries(self._sqrtSinSeries)
+ self._graph.removeSeries(self._topography)
+ self._graph.removeSeries(self._highlight)
+ self._graph.addSeries(self._heightMapSeriesOne)
+ self._graph.addSeries(self._heightMapSeriesTwo)
+ self._graph.addSeries(self._heightMapSeriesThree)
+
+ self._graph.setActiveInputHandler(self._defaultInputHandler)
+
+ self._titleLabel.setVisible(True)
+ self._graph.axisX().setTitleVisible(True)
+ self._graph.axisY().setTitleVisible(True)
+ self._graph.axisZ().setTitleVisible(True)
+
+ # Reset range sliders for height map
+ mapGridCountX = self._heightMapWidth / HEIGHTMAP_GRID_STEP_X
+ mapGridCountZ = self._heightMapHeight / HEIGHTMAP_GRID_STEP_Z
+ self._rangeMinX = 34.0
+ self._rangeMinZ = 18.0
+ self._stepX = 6.0 / float(mapGridCountX - 1)
+ self._stepZ = 6.0 / float(mapGridCountZ - 1)
+ self._axisMinSliderX.setMinimum(0)
+ self._axisMinSliderX.setMaximum(mapGridCountX - 2)
+ self._axisMinSliderX.setValue(0)
+ self._axisMaxSliderX.setMinimum(1)
+ self._axisMaxSliderX.setMaximum(mapGridCountX - 1)
+ self._axisMaxSliderX.setValue(mapGridCountX - 1)
+ self._axisMinSliderZ.setMinimum(0)
+ self._axisMinSliderZ.setMaximum(mapGridCountZ - 2)
+ self._axisMinSliderZ.setValue(0)
+ self._axisMaxSliderZ.setMinimum(1)
+ self._axisMaxSliderZ.setMaximum(mapGridCountZ - 1)
+ self._axisMaxSliderZ.setValue(mapGridCountZ - 1)
+
+ @Slot(bool)
+ def enableTopographyModel(self, enable):
+ if enable:
+ self._graph.axisX().setLabelFormat("%i")
+ self._graph.axisZ().setLabelFormat("%i")
+ self._graph.axisX().setRange(0.0, AREA_WIDTH)
+ self._graph.axisY().setRange(100.0, AREA_WIDTH * ASPECT_RATIO)
+ self._graph.axisZ().setRange(0.0, AREA_HEIGHT)
+ self._graph.axisX().setLabelAutoRotation(30.0)
+ self._graph.axisY().setLabelAutoRotation(90.0)
+ self._graph.axisZ().setLabelAutoRotation(30.0)
+
+ self._graph.removeSeries(self._heightMapSeriesOne)
+ self._graph.removeSeries(self._heightMapSeriesTwo)
+ self._graph.removeSeries(self._heightMapSeriesThree)
+ self._graph.addSeries(self._topography)
+ self._graph.addSeries(self._highlight)
+
+ self._titleLabel.setVisible(False)
+ self._graph.axisX().setTitleVisible(False)
+ self._graph.axisY().setTitleVisible(False)
+ self._graph.axisZ().setTitleVisible(False)
+
+ self._graph.axisX().setTitle("")
+ self._graph.axisY().setTitle("")
+ self._graph.axisZ().setTitle("")
+
+ self._graph.setActiveInputHandler(self._customInputHandler)
+
+ # Reset range sliders for topography map
+ self._rangeMinX = 0.0
+ self._rangeMinZ = 0.0
+ self._stepX = 1.0
+ self._stepZ = 1.0
+ self._axisMinSliderX.setMinimum(0)
+ self._axisMinSliderX.setMaximum(AREA_WIDTH - 200)
+ self._axisMinSliderX.setValue(0)
+ self._axisMaxSliderX.setMinimum(200)
+ self._axisMaxSliderX.setMaximum(AREA_WIDTH)
+ self._axisMaxSliderX.setValue(AREA_WIDTH)
+ self._axisMinSliderZ.setMinimum(0)
+ self._axisMinSliderZ.setMaximum(AREA_HEIGHT - 200)
+ self._axisMinSliderZ.setValue(0)
+ self._axisMaxSliderZ.setMinimum(200)
+ self._axisMaxSliderZ.setMaximum(AREA_HEIGHT)
+ self._axisMaxSliderZ.setValue(AREA_HEIGHT)
+
+ def adjustXMin(self, min):
+ minX = self._stepX * float(min) + self._rangeMinX
+
+ max = self._axisMaxSliderX.value()
+ if min >= max:
+ max = min + 1
+ self._axisMaxSliderX.setValue(max)
+
+ maxX = self._stepX * max + self._rangeMinX
+
+ self.setAxisXRange(minX, maxX)
+
+ def adjustXMax(self, max):
+ maxX = self._stepX * float(max) + self._rangeMinX
+
+ min = self._axisMinSliderX.value()
+ if max <= min:
+ min = max - 1
+ self._axisMinSliderX.setValue(min)
+
+ minX = self._stepX * min + self._rangeMinX
+
+ self.setAxisXRange(minX, maxX)
+
+ def adjustZMin(self, min):
+ minZ = self._stepZ * float(min) + self._rangeMinZ
+
+ max = self._axisMaxSliderZ.value()
+ if min >= max:
+ max = min + 1
+ self._axisMaxSliderZ.setValue(max)
+
+ maxZ = self._stepZ * max + self._rangeMinZ
+
+ self.setAxisZRange(minZ, maxZ)
+
+ def adjustZMax(self, max):
+ maxX = self._stepZ * float(max) + self._rangeMinZ
+
+ min = self._axisMinSliderZ.value()
+ if max <= min:
+ min = max - 1
+ self._axisMinSliderZ.setValue(min)
+
+ minX = self._stepZ * min + self._rangeMinZ
+
+ self.setAxisZRange(minX, maxX)
+
+ def setAxisXRange(self, min, max):
+ self._graph.axisX().setRange(min, max)
+
+ def setAxisZRange(self, min, max):
+ self._graph.axisZ().setRange(min, max)
+
+ def setBlackToYellowGradient(self):
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.black)
+ gr.setColorAt(0.33, Qt.blue)
+ gr.setColorAt(0.67, Qt.red)
+ gr.setColorAt(1.0, Qt.yellow)
+
+ self._sqrtSinSeries.setBaseGradient(gr)
+ self._sqrtSinSeries.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
+
+ def setGreenToRedGradient(self):
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.darkGreen)
+ gr.setColorAt(0.5, Qt.yellow)
+ gr.setColorAt(0.8, Qt.red)
+ gr.setColorAt(1.0, Qt.darkRed)
+
+ self._sqrtSinSeries.setBaseGradient(gr)
+ self._sqrtSinSeries.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
+
+ @Slot(bool)
+ def toggleItemOne(self, show):
+ positionOne = QVector3D(39.0, 77.0, 19.2)
+ positionOnePipe = QVector3D(39.0, 45.0, 19.2)
+ positionOneLabel = QVector3D(39.0, 107.0, 19.2)
+ if show:
+ color = QImage(2, 2, QImage.Format_RGB32)
+ color.fill(Qt.red)
+ file_name = os.fspath(self._data_path / "oilrig.obj")
+ item = QCustom3DItem(file_name, positionOne,
+ QVector3D(0.025, 0.025, 0.025),
+ QQuaternion.fromAxisAndAngle(0.0, 1.0, 0.0, 45.0),
+ color)
+ self._graph.addCustomItem(item)
+ file_name = os.fspath(self._data_path / "pipe.obj")
+ item = QCustom3DItem(file_name, positionOnePipe,
+ QVector3D(0.005, 0.5, 0.005), QQuaternion(),
+ color)
+ item.setShadowCasting(False)
+ self._graph.addCustomItem(item)
+
+ label = QCustom3DLabel()
+ label.setText("Oil Rig One")
+ label.setPosition(positionOneLabel)
+ label.setScaling(QVector3D(1.0, 1.0, 1.0))
+ self._graph.addCustomItem(label)
+ else:
+ self.resetSelection()
+ self._graph.removeCustomItemAt(positionOne)
+ self._graph.removeCustomItemAt(positionOnePipe)
+ self._graph.removeCustomItemAt(positionOneLabel)
+
+ @Slot(bool)
+ def toggleItemTwo(self, show):
+ positionTwo = QVector3D(34.5, 77.0, 23.4)
+ positionTwoPipe = QVector3D(34.5, 45.0, 23.4)
+ positionTwoLabel = QVector3D(34.5, 107.0, 23.4)
+ if show:
+ color = QImage(2, 2, QImage.Format_RGB32)
+ color.fill(Qt.red)
+ item = QCustom3DItem()
+ file_name = os.fspath(self._data_path / "oilrig.obj")
+ item.setMeshFile(file_name)
+ item.setPosition(positionTwo)
+ item.setScaling(QVector3D(0.025, 0.025, 0.025))
+ item.setRotation(QQuaternion.fromAxisAndAngle(0.0, 1.0, 0.0, 25.0))
+ item.setTextureImage(color)
+ self._graph.addCustomItem(item)
+ file_name = os.fspath(self._data_path / "pipe.obj")
+ item = QCustom3DItem(file_name, positionTwoPipe,
+ QVector3D(0.005, 0.5, 0.005), QQuaternion(),
+ color)
+ item.setShadowCasting(False)
+ self._graph.addCustomItem(item)
+
+ label = QCustom3DLabel()
+ label.setText("Oil Rig Two")
+ label.setPosition(positionTwoLabel)
+ label.setScaling(QVector3D(1.0, 1.0, 1.0))
+ self._graph.addCustomItem(label)
+ else:
+ self.resetSelection()
+ self._graph.removeCustomItemAt(positionTwo)
+ self._graph.removeCustomItemAt(positionTwoPipe)
+ self._graph.removeCustomItemAt(positionTwoLabel)
+
+ @Slot(bool)
+ def toggleItemThree(self, show):
+ positionThree = QVector3D(34.5, 86.0, 19.1)
+ positionThreeLabel = QVector3D(34.5, 116.0, 19.1)
+ if show:
+ color = QImage(2, 2, QImage.Format_RGB32)
+ color.fill(Qt.darkMagenta)
+ item = QCustom3DItem()
+ file_name = os.fspath(self._data_path / "refinery.obj")
+ item.setMeshFile(file_name)
+ item.setPosition(positionThree)
+ item.setScaling(QVector3D(0.04, 0.04, 0.04))
+ item.setRotation(QQuaternion.fromAxisAndAngle(0.0, 1.0, 0.0, 75.0))
+ item.setTextureImage(color)
+ self._graph.addCustomItem(item)
+
+ label = QCustom3DLabel()
+ label.setText("Refinery")
+ label.setPosition(positionThreeLabel)
+ label.setScaling(QVector3D(1.0, 1.0, 1.0))
+ self._graph.addCustomItem(label)
+ else:
+ self.resetSelection()
+ self._graph.removeCustomItemAt(positionThree)
+ self._graph.removeCustomItemAt(positionThreeLabel)
+
+ @Slot(bool)
+ def toggleSeeThrough(self, seethrough):
+ s0 = self._graph.seriesList()[0]
+ s1 = self._graph.seriesList()[1]
+ if seethrough:
+ s0.setDrawMode(QSurface3DSeries.DrawWireframe)
+ s1.setDrawMode(QSurface3DSeries.DrawWireframe)
+ else:
+ s0.setDrawMode(QSurface3DSeries.DrawSurface)
+ s1.setDrawMode(QSurface3DSeries.DrawSurface)
+
+ @Slot(bool)
+ def toggleOilHighlight(self, highlight):
+ s2 = self._graph.seriesList()[2]
+ if highlight:
+ grThree = QLinearGradient()
+ grThree.setColorAt(0.0, Qt.black)
+ grThree.setColorAt(0.05, Qt.red)
+ s2.setBaseGradient(grThree)
+ else:
+ grThree = QLinearGradient()
+ grThree.setColorAt(0.0, Qt.white)
+ grThree.setColorAt(0.05, Qt.black)
+ s2.setBaseGradient(grThree)
+
+ @Slot(bool)
+ def toggleShadows(self, shadows):
+ sq = (QAbstract3DGraph.ShadowQualityMedium
+ if shadows else QAbstract3DGraph.ShadowQualityNone)
+ self._graph.setShadowQuality(sq)
+
+ @Slot(bool)
+ def toggleSurfaceTexture(self, enable):
+ if enable:
+ file_name = os.fspath(self._data_path / "maptexture.jpg")
+ self._topography.setTextureFile(file_name)
+ else:
+ self._topography.setTextureFile("")
+
+ def handleElementSelected(self, type):
+ self.resetSelection()
+ if type == QAbstract3DGraph.ElementCustomItem:
+ item = self._graph.selectedCustomItem()
+ text = ""
+ if isinstance(item, QCustom3DItem):
+ text += "Custom label: "
+ else:
+ file = item.meshFile().split("/")[-1]
+ text += f"{file}: "
+
+ text += str(self._graph.selectedCustomItemIndex())
+ self._textField.setText(text)
+ self._previouslyAnimatedItem = item
+ self._previousScaling = item.scaling()
+ self._selectionAnimation.setTargetObject(item)
+ self._selectionAnimation.setStartValue(item.scaling())
+ self._selectionAnimation.setEndValue(item.scaling() * 1.5)
+ self._selectionAnimation.start()
+ elif type == QAbstract3DGraph.ElementSeries:
+ text = "Surface ("
+ series = self._graph.selectedSeries()
+ if series:
+ point = series.selectedPoint()
+ text += f"{point.x()}, {point.y()}"
+ text += ")"
+ self._textField.setText(text)
+ elif (type.value > QAbstract3DGraph.ElementSeries.value
+ and type < QAbstract3DGraph.ElementCustomItem.value):
+ index = self._graph.selectedLabelIndex()
+ text = ""
+ if type == QAbstract3DGraph.ElementAxisXLabel:
+ text += "Axis X label: "
+ elif type == QAbstract3DGraph.ElementAxisYLabel:
+ text += "Axis Y label: "
+ else:
+ text += "Axis Z label: "
+ text += str(index)
+ self._textField.setText(text)
+ else:
+ self._textField.setText("Nothing")
+
+ def resetSelection(self):
+ self._selectionAnimation.stop()
+ if self._previouslyAnimatedItem:
+ self._previouslyAnimatedItem.setScaling(self._previousScaling)
+ self._previouslyAnimatedItem = None
+
+ def toggleModeNone(self):
+ self._graph.setSelectionMode(QAbstract3DGraph.SelectionNone)
+
+ def toggleModeItem(self):
+ self._graph.setSelectionMode(QAbstract3DGraph.SelectionItem)
+
+ def toggleModeSliceRow(self):
+ sm = (QAbstract3DGraph.SelectionItemAndRow
+ | QAbstract3DGraph.SelectionSlice
+ | QAbstract3DGraph.SelectionMultiSeries)
+ self._graph.setSelectionMode(sm)
+
+ def toggleModeSliceColumn(self):
+ sm = (QAbstract3DGraph.SelectionItemAndColumn
+ | QAbstract3DGraph.SelectionSlice
+ | QAbstract3DGraph.SelectionMultiSeries)
+ self._graph.setSelectionMode(sm)
+
+ def setAxisMinSliderX(self, slider):
+ self._axisMinSliderX = slider
+
+ def setAxisMaxSliderX(self, slider):
+ self._axisMaxSliderX = slider
+
+ def setAxisMinSliderZ(self, slider):
+ self._axisMinSliderZ = slider
+
+ def setAxisMaxSliderZ(self, slider):
+ self._axisMaxSliderZ = slider
diff --git a/examples/datavisualization/graphgallery/topographicseries.py b/examples/datavisualization/graphgallery/topographicseries.py
new file mode 100644
index 000000000..350edcb4f
--- /dev/null
+++ b/examples/datavisualization/graphgallery/topographicseries.py
@@ -0,0 +1,57 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Qt
+from PySide6.QtGui import QImage, QVector3D
+from PySide6.QtDataVisualization import (QSurface3DSeries, QSurfaceDataItem)
+
+
+# Value used to encode height data as RGB value on PNG file
+PACKING_FACTOR = 11983.0
+
+
+class TopographicSeries(QSurface3DSeries):
+
+ def __init__(self):
+ super().__init__()
+ self._sampleCountX = 0.0
+ self._sampleCountZ = 0.0
+ self.setDrawMode(QSurface3DSeries.DrawSurface)
+ self.setFlatShadingEnabled(True)
+ self.setBaseColor(Qt.white)
+
+ def sampleCountX(self):
+ return self._sampleCountX
+
+ def sampleCountZ(self):
+ return self._sampleCountZ
+
+ def setTopographyFile(self, file, width, height):
+ heightMapImage = QImage(file)
+ bits = heightMapImage.bits()
+ imageHeight = heightMapImage.height()
+ imageWidth = heightMapImage.width()
+ widthBits = imageWidth * 4
+ stepX = width / float(imageWidth)
+ stepZ = height / float(imageHeight)
+
+ dataArray = []
+ for i in range(0, imageHeight):
+ p = i * widthBits
+ z = height - float(i) * stepZ
+ newRow = []
+ for j in range(0, imageWidth):
+ aa = bits[p + 0]
+ rr = bits[p + 1]
+ gg = bits[p + 2]
+ color = (gg << 16) + (rr << 8) + aa
+ y = float(color) / PACKING_FACTOR
+ item = QSurfaceDataItem(QVector3D(float(j) * stepX, y, z))
+ newRow.append(item)
+ p += 4
+ dataArray.append(newRow)
+
+ self.dataProxy().resetArray(dataArray)
+
+ self._sampleCountX = float(imageWidth)
+ self._sampleCountZ = float(imageHeight)
diff --git a/examples/datavisualization/graphgallery/variantbardatamapping.py b/examples/datavisualization/graphgallery/variantbardatamapping.py
new file mode 100644
index 000000000..50bdefa6a
--- /dev/null
+++ b/examples/datavisualization/graphgallery/variantbardatamapping.py
@@ -0,0 +1,67 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Signal
+
+
+class VariantBarDataMapping(QObject):
+
+ rowIndexChanged = Signal()
+ columnIndexChanged = Signal()
+ valueIndexChanged = Signal()
+ rowCategoriesChanged = Signal()
+ columnCategoriesChanged = Signal()
+ mappingChanged = Signal()
+
+ def __init__(self, rowIndex, columnIndex, valueIndex,
+ rowCategories=[], columnCategories=[]):
+ super().__init__(None)
+ self._rowIndex = rowIndex
+ self._columnIndex = columnIndex
+ self._valueIndex = valueIndex
+ self._rowCategories = rowCategories
+ self._columnCategories = columnCategories
+
+ def setRowIndex(self, index):
+ self._rowIndex = index
+ self.mappingChanged.emit()
+
+ def rowIndex(self):
+ return self._rowIndex
+
+ def setColumnIndex(self, index):
+ self._columnIndex = index
+ self.mappingChanged.emit()
+
+ def columnIndex(self):
+ return self._columnIndex
+
+ def setValueIndex(self, index):
+ self._valueIndex = index
+ self.mappingChanged.emit()
+
+ def valueIndex(self):
+ return self._valueIndex
+
+ def setRowCategories(self, categories):
+ self._rowCategories = categories
+ self.mappingChanged.emit()
+
+ def rowCategories(self):
+ return self._rowCategories
+
+ def setColumnCategories(self, categories):
+ self._columnCategories = categories
+ self.mappingChanged.emit()
+
+ def columnCategories(self):
+ return self._columnCategories
+
+ def remap(self, rowIndex, columnIndex, valueIndex,
+ rowCategories=[], columnCategories=[]):
+ self._rowIndex = rowIndex
+ self._columnIndex = columnIndex
+ self._valueIndex = valueIndex
+ self._rowCategories = rowCategories
+ self._columnCategories = columnCategories
+ self.mappingChanged.emit()
diff --git a/examples/datavisualization/graphgallery/variantbardataproxy.py b/examples/datavisualization/graphgallery/variantbardataproxy.py
new file mode 100644
index 000000000..f69ebaf80
--- /dev/null
+++ b/examples/datavisualization/graphgallery/variantbardataproxy.py
@@ -0,0 +1,100 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Slot
+from PySide6.QtDataVisualization import QBarDataProxy, QBarDataItem
+
+
+class VariantBarDataProxy(QBarDataProxy):
+
+ def __init__(self):
+ super().__init__()
+ self._dataSet = None
+ self._mapping = None
+
+ def setDataSet(self, newSet):
+ if self._dataSet:
+ self._dataSet.itemsAdded.disconnect(self.handleItemsAdded)
+ self._dataSet.dataCleared.disconnect(self.handleDataCleared)
+
+ self._dataSet = newSet
+
+ if self._dataSet:
+ self._dataSet.itemsAdded.connect(self.handleItemsAdded)
+ self._dataSet.dataCleared.connect(self.handleDataCleared)
+ self.resolveDataSet()
+
+ def dataSet(self):
+ return self._dataSet.data()
+
+ # Map key (row, column, value) to value index in data item (VariantItem).
+ # Doesn't gain ownership of mapping, but does connect to it to listen for
+ # mapping changes. Modifying mapping that is set to proxy will trigger
+ # dataset re-resolving.
+ def setMapping(self, mapping):
+ if self._mapping:
+ self._mapping.mappingChanged.disconnect(self.handleMappingChanged)
+
+ self._mapping = mapping
+
+ if self._mapping:
+ self._mapping.mappingChanged.connect(self.handleMappingChanged)
+
+ self.resolveDataSet()
+
+ def mapping(self):
+ return self._mapping.data()
+
+ @Slot(int, int)
+ def handleItemsAdded(self, index, count):
+ # Resolve new items
+ self.resolveDataSet()
+
+ @Slot()
+ def handleDataCleared(self):
+ # Data cleared, reset array
+ self.resetArray(None)
+
+ @Slot()
+ def handleMappingChanged(self):
+ self.resolveDataSet()
+
+ # Resolve entire dataset into QBarDataArray.
+ def resolveDataSet(self):
+ # If we have no data or mapping, or the categories are not defined,
+ # simply clear the array
+ if (not self._dataSet or not self._mapping
+ or not self._mapping.rowCategories()
+ or not self._mapping.columnCategories()):
+ self.resetArray()
+ return
+
+ itemList = self._dataSet.itemList()
+
+ rowIndex = self._mapping.rowIndex()
+ columnIndex = self._mapping.columnIndex()
+ valueIndex = self._mapping.valueIndex()
+ rowList = self._mapping.rowCategories()
+ columnList = self._mapping.columnCategories()
+
+ # Sort values into rows and columns
+ itemValueMap = {}
+ for item in itemList:
+ key = str(item[rowIndex])
+ v = itemValueMap.get(key)
+ if not v:
+ v = {}
+ itemValueMap[key] = v
+ v[str(item[columnIndex])] = float(item[valueIndex])
+
+ # Create a new data array in format the parent class understands
+ newProxyArray = []
+ for rowKey in rowList:
+ newProxyRow = []
+ for i in range(0, len(columnList)):
+ item = QBarDataItem(itemValueMap[rowKey][columnList[i]])
+ newProxyRow.append(item)
+ newProxyArray.append(newProxyRow)
+
+ # Finally, reset the data array in the parent class
+ self.resetArray(newProxyArray)
diff --git a/examples/datavisualization/graphgallery/variantdataset.py b/examples/datavisualization/graphgallery/variantdataset.py
new file mode 100644
index 000000000..752bc3887
--- /dev/null
+++ b/examples/datavisualization/graphgallery/variantdataset.py
@@ -0,0 +1,39 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Signal
+
+
+class VariantDataSet(QObject):
+
+ itemsAdded = Signal(int, int)
+ dataCleared = Signal()
+
+ def __init__(self):
+ super().__init__()
+ self._variantData = []
+
+ def clear(self):
+ for item in self._variantData:
+ item.clear()
+ del item
+
+ self._variantData.clear()
+ self.dataCleared.emit()
+
+ def addItem(self, item):
+ self._variantData.append(item)
+ addIndex = len(self._variantData)
+
+ self.itemsAdded.emit(addIndex, 1)
+ return addIndex
+
+ def addItems(self, itemList):
+ newCount = len(itemList)
+ addIndex = len(self._variantData)
+ self._variantData.extend(itemList)
+ self.itemsAdded.emit(addIndex, newCount)
+ return addIndex
+
+ def itemList(self):
+ return self._variantData
diff --git a/examples/datavisualization/minimalsurface/doc/minimalsurface.rst b/examples/datavisualization/minimalsurface/doc/minimalsurface.rst
new file mode 100644
index 000000000..bfc7a044d
--- /dev/null
+++ b/examples/datavisualization/minimalsurface/doc/minimalsurface.rst
@@ -0,0 +1,4 @@
+Minimal Surface Example
+=======================
+
+The example shows the minimal code to create a surface.
diff --git a/examples/datavisualization/minimalsurface/main.py b/examples/datavisualization/minimalsurface/main.py
new file mode 100644
index 000000000..db720dced
--- /dev/null
+++ b/examples/datavisualization/minimalsurface/main.py
@@ -0,0 +1,54 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+import sys
+
+from PySide6.QtCore import QSize, Qt
+from PySide6.QtGui import QGuiApplication, QVector3D
+from PySide6.QtDataVisualization import (Q3DSurface, QSurfaceDataItem,
+ QSurface3DSeries)
+
+
+DESCRIPTION = """Minimal Qt DataVisualization Surface Example
+
+Use the mouse wheel to zoom. Rotate using the right mouse button.
+"""
+
+
+if __name__ == '__main__':
+ os.environ["QSG_RHI_BACKEND"] = "opengl"
+ app = QGuiApplication(sys.argv)
+
+ print(DESCRIPTION)
+
+ surface = Q3DSurface()
+ surface.setFlags(surface.flags() ^ Qt.FramelessWindowHint)
+ axis = surface.axisX()
+ axis.setTitle("X")
+ axis.setTitleVisible(True)
+ axis = surface.axisY()
+ axis.setTitle("Y")
+ axis.setTitleVisible(True)
+ axis = surface.axisZ()
+ axis.setTitle("Z")
+ axis.setTitleVisible(True)
+
+ data = []
+ data_row1 = [QSurfaceDataItem(QVector3D(0, 0.1, 0.5)),
+ QSurfaceDataItem(QVector3D(1, 0.5, 0.5))]
+ data.append(data_row1)
+ data_row2 = [QSurfaceDataItem(QVector3D(0, 1.8, 1)),
+ QSurfaceDataItem(QVector3D(1, 1.2, 1))]
+ data.append(data_row2)
+
+ series = QSurface3DSeries()
+ series.dataProxy().resetArray(data)
+ surface.addSeries(series)
+
+ available_height = app.primaryScreen().availableGeometry().height()
+ width = available_height * 4 / 5
+ surface.resize(QSize(width, width))
+ surface.show()
+
+ sys.exit(app.exec())
diff --git a/examples/datavisualization/qmlsurfacegallery/datasource.py b/examples/datavisualization/qmlsurfacegallery/datasource.py
new file mode 100644
index 000000000..aca2a6ab8
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/datasource.py
@@ -0,0 +1,99 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from math import sin, pi
+
+from PySide6.QtCore import QObject, QRandomGenerator, Slot
+from PySide6.QtQml import QmlElement
+from PySide6.QtGui import QVector3D
+from PySide6.QtDataVisualization import QSurfaceDataItem, QSurface3DSeries
+
+
+QML_IMPORT_NAME = "SurfaceGallery"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class DataSource(QObject):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_index = -1
+ self.m_resetArray = None
+ self.m_data = []
+
+ @Slot(int, int, int, float, float, float, float, float, float)
+ def generateData(self, cacheCount, rowCount, columnCount,
+ xMin, xMax, yMin, yMax, zMin, zMax):
+ if not cacheCount or not rowCount or not columnCount:
+ return
+
+ self.clearData()
+
+ xRange = xMax - xMin
+ yRange = yMax - yMin
+ zRange = zMax - zMin
+ cacheIndexStep = columnCount / cacheCount
+ cacheStep = float(cacheIndexStep) * xRange / float(columnCount)
+
+ # Populate caches
+ self.m_data = []
+ rand_gen = QRandomGenerator.global_()
+ for i in range(0, cacheCount):
+ cache = []
+ cacheXAdjustment = cacheStep * i
+ cacheIndexAdjustment = cacheIndexStep * i
+ for j in range(0, rowCount):
+ row = []
+ rowMod = (float(j)) / float(rowCount)
+ yRangeMod = yRange * rowMod
+ zRangeMod = zRange * rowMod
+ z = zRangeMod + zMin
+ rowColWaveAngleMul = pi * pi * rowMod
+ rowColWaveMul = yRangeMod * 0.2
+ for k in range(0, columnCount):
+ colMod = (float(k)) / float(columnCount)
+ xRangeMod = xRange * colMod
+ x = xRangeMod + xMin + cacheXAdjustment
+ colWave = sin((2.0 * pi * colMod) - (1.0 / 2.0 * pi)) + 1.0
+ rand_nr = rand_gen.generateDouble() * 0.15
+ y = ((colWave * ((sin(rowColWaveAngleMul * colMod) + 1.0)))
+ * rowColWaveMul + rand_nr * yRangeMod)
+
+ index = k + cacheIndexAdjustment
+ if index >= columnCount:
+ # Wrap over
+ index -= columnCount
+ x -= xRange
+
+ row.append(QSurfaceDataItem(QVector3D(x, y, z)))
+ cache.append(row)
+ self.m_data.append(cache)
+
+ @Slot(QSurface3DSeries)
+ def update(self, series):
+ if series and self.m_data:
+ # Each iteration uses data from a different cached array
+ self.m_index += 1
+ if self.m_index > len(self.m_data) - 1:
+ self.m_index = 0
+
+ array = self.m_data[self.m_index]
+ newRowCount = len(array)
+ newColumnCount = len(array[0])
+
+ # Copy items from our cache to the reset array
+ self.m_resetArray = []
+ for i in range(0, newRowCount):
+ sourceRow = array[i]
+ row = []
+ for j in range(0, newColumnCount):
+ row.append(QSurfaceDataItem(sourceRow[j].position()))
+ self.m_resetArray.append(row)
+
+ # Notify the proxy that data has changed
+ series.dataProxy().resetArray(self.m_resetArray)
+
+ @Slot()
+ def clearData(self):
+ self.m_data = []
diff --git a/examples/datavisualization/qmlsurfacegallery/doc/qmlsurfacegallery.rst b/examples/datavisualization/qmlsurfacegallery/doc/qmlsurfacegallery.rst
new file mode 100644
index 000000000..4be2d738c
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/doc/qmlsurfacegallery.rst
@@ -0,0 +1,9 @@
+Surface Graph Gallery
+=====================
+
+Surface Graph Gallery demonstrates three different custom features with
+Surface3D graphs. The features have their own tabs in the application.
+
+.. image:: qmlsurfacegallery.webp
+ :width: 600
+ :alt: Surface Graph Gallery Screenshot
diff --git a/examples/datavisualization/qmlsurfacegallery/doc/qmlsurfacegallery.webp b/examples/datavisualization/qmlsurfacegallery/doc/qmlsurfacegallery.webp
new file mode 100644
index 000000000..82a43a84e
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/doc/qmlsurfacegallery.webp
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacegallery/main.py b/examples/datavisualization/qmlsurfacegallery/main.py
new file mode 100644
index 000000000..7b980bc17
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/main.py
@@ -0,0 +1,39 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Qt DataVisualization qmlsurfacegallery example from Qt v6.x"""
+
+import os
+import sys
+from pathlib import Path
+
+from PySide6.QtCore import QCoreApplication, QUrl
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView
+from PySide6.QtDataVisualization import qDefaultSurfaceFormat
+
+from datasource import DataSource # noqa: F401
+import rc_qmlsurfacegallery # noqa: F401
+
+
+if __name__ == "__main__":
+ os.environ["QSG_RHI_BACKEND"] = "opengl"
+ app = QGuiApplication(sys.argv)
+
+ viewer = QQuickView()
+
+ # Enable antialiasing in direct rendering mode
+ viewer.setFormat(qDefaultSurfaceFormat(True))
+
+ viewer.engine().quit.connect(QCoreApplication.quit)
+
+ viewer.setTitle("Surface Graph Gallery")
+
+ qml_file = Path(__file__).resolve().parent / "qml" / "qmlsurfacegallery" / "main.qml"
+ viewer.setSource(QUrl.fromLocalFile(qml_file))
+ viewer.setResizeMode(QQuickView.SizeRootObjectToView)
+ viewer.show()
+
+ ex = app.exec()
+ del viewer
+ sys.exit(ex)
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SpectrogramData.qml b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SpectrogramData.qml
new file mode 100644
index 000000000..6e1b57228
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SpectrogramData.qml
@@ -0,0 +1,1545 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Item {
+ property alias model: dataModel
+
+ ListModel {
+ id: dataModel
+ ListElement{ radius: "0"; angle: "0"; value: "50"; }
+ ListElement{ radius: "0"; angle: "5"; value: "54.3578"; }
+ ListElement{ radius: "0"; angle: "10"; value: "58.6824"; }
+ ListElement{ radius: "0"; angle: "15"; value: "62.941"; }
+ ListElement{ radius: "0"; angle: "20"; value: "67.101"; }
+ ListElement{ radius: "0"; angle: "25"; value: "71.1309"; }
+ ListElement{ radius: "0"; angle: "30"; value: "75"; }
+ ListElement{ radius: "0"; angle: "35"; value: "78.6788"; }
+ ListElement{ radius: "0"; angle: "40"; value: "82.1394"; }
+ ListElement{ radius: "0"; angle: "45"; value: "85.3553"; }
+ ListElement{ radius: "0"; angle: "50"; value: "88.3022"; }
+ ListElement{ radius: "0"; angle: "55"; value: "90.9576"; }
+ ListElement{ radius: "0"; angle: "60"; value: "93.3013"; }
+ ListElement{ radius: "0"; angle: "65"; value: "95.3154"; }
+ ListElement{ radius: "0"; angle: "70"; value: "96.9846"; }
+ ListElement{ radius: "0"; angle: "75"; value: "98.2963"; }
+ ListElement{ radius: "0"; angle: "80"; value: "99.2404"; }
+ ListElement{ radius: "0"; angle: "85"; value: "99.8097"; }
+ ListElement{ radius: "0"; angle: "90"; value: "100"; }
+ ListElement{ radius: "0"; angle: "95"; value: "99.8097"; }
+ ListElement{ radius: "0"; angle: "100"; value: "99.2404"; }
+ ListElement{ radius: "0"; angle: "105"; value: "98.2963"; }
+ ListElement{ radius: "0"; angle: "110"; value: "96.9846"; }
+ ListElement{ radius: "0"; angle: "115"; value: "95.3154"; }
+ ListElement{ radius: "0"; angle: "120"; value: "93.3013"; }
+ ListElement{ radius: "0"; angle: "125"; value: "90.9576"; }
+ ListElement{ radius: "0"; angle: "130"; value: "88.3022"; }
+ ListElement{ radius: "0"; angle: "135"; value: "85.3553"; }
+ ListElement{ radius: "0"; angle: "140"; value: "82.1394"; }
+ ListElement{ radius: "0"; angle: "145"; value: "78.6788"; }
+ ListElement{ radius: "0"; angle: "150"; value: "75"; }
+ ListElement{ radius: "0"; angle: "155"; value: "71.1309"; }
+ ListElement{ radius: "0"; angle: "160"; value: "67.101"; }
+ ListElement{ radius: "0"; angle: "165"; value: "62.941"; }
+ ListElement{ radius: "0"; angle: "170"; value: "58.6824"; }
+ ListElement{ radius: "0"; angle: "175"; value: "54.3578"; }
+ ListElement{ radius: "0"; angle: "180"; value: "50"; }
+ ListElement{ radius: "0"; angle: "185"; value: "45.6422"; }
+ ListElement{ radius: "0"; angle: "190"; value: "41.3176"; }
+ ListElement{ radius: "0"; angle: "195"; value: "37.059"; }
+ ListElement{ radius: "0"; angle: "200"; value: "32.899"; }
+ ListElement{ radius: "0"; angle: "205"; value: "28.8691"; }
+ ListElement{ radius: "0"; angle: "210"; value: "25"; }
+ ListElement{ radius: "0"; angle: "215"; value: "21.3212"; }
+ ListElement{ radius: "0"; angle: "220"; value: "17.8606"; }
+ ListElement{ radius: "0"; angle: "225"; value: "14.6447"; }
+ ListElement{ radius: "0"; angle: "230"; value: "11.6978"; }
+ ListElement{ radius: "0"; angle: "235"; value: "9.0424"; }
+ ListElement{ radius: "0"; angle: "240"; value: "6.69873"; }
+ ListElement{ radius: "0"; angle: "245"; value: "4.68461"; }
+ ListElement{ radius: "0"; angle: "250"; value: "3.01537"; }
+ ListElement{ radius: "0"; angle: "255"; value: "1.70371"; }
+ ListElement{ radius: "0"; angle: "260"; value: "0.759612"; }
+ ListElement{ radius: "0"; angle: "265"; value: "0.190265"; }
+ ListElement{ radius: "0"; angle: "270"; value: "0"; }
+ ListElement{ radius: "0"; angle: "275"; value: "0.190265"; }
+ ListElement{ radius: "0"; angle: "280"; value: "0.759612"; }
+ ListElement{ radius: "0"; angle: "285"; value: "1.70371"; }
+ ListElement{ radius: "0"; angle: "290"; value: "3.01537"; }
+ ListElement{ radius: "0"; angle: "295"; value: "4.68461"; }
+ ListElement{ radius: "0"; angle: "300"; value: "6.69873"; }
+ ListElement{ radius: "0"; angle: "305"; value: "9.0424"; }
+ ListElement{ radius: "0"; angle: "310"; value: "11.6978"; }
+ ListElement{ radius: "0"; angle: "315"; value: "14.6447"; }
+ ListElement{ radius: "0"; angle: "320"; value: "17.8606"; }
+ ListElement{ radius: "0"; angle: "325"; value: "21.3212"; }
+ ListElement{ radius: "0"; angle: "330"; value: "25"; }
+ ListElement{ radius: "0"; angle: "335"; value: "28.8691"; }
+ ListElement{ radius: "0"; angle: "340"; value: "32.899"; }
+ ListElement{ radius: "0"; angle: "345"; value: "37.059"; }
+ ListElement{ radius: "0"; angle: "350"; value: "41.3176"; }
+ ListElement{ radius: "0"; angle: "355"; value: "45.6422"; }
+ ListElement{ radius: "0"; angle: "360"; value: "50"; }
+ ListElement{ radius: "5"; angle: "0"; value: "49.3844"; }
+ ListElement{ radius: "5"; angle: "5"; value: "53.7422"; }
+ ListElement{ radius: "5"; angle: "10"; value: "58.0668"; }
+ ListElement{ radius: "5"; angle: "15"; value: "62.3254"; }
+ ListElement{ radius: "5"; angle: "20"; value: "66.4854"; }
+ ListElement{ radius: "5"; angle: "25"; value: "70.5153"; }
+ ListElement{ radius: "5"; angle: "30"; value: "74.3844"; }
+ ListElement{ radius: "5"; angle: "35"; value: "78.0632"; }
+ ListElement{ radius: "5"; angle: "40"; value: "81.5238"; }
+ ListElement{ radius: "5"; angle: "45"; value: "84.7398"; }
+ ListElement{ radius: "5"; angle: "50"; value: "87.6866"; }
+ ListElement{ radius: "5"; angle: "55"; value: "90.342"; }
+ ListElement{ radius: "5"; angle: "60"; value: "92.6857"; }
+ ListElement{ radius: "5"; angle: "65"; value: "94.6998"; }
+ ListElement{ radius: "5"; angle: "70"; value: "96.369"; }
+ ListElement{ radius: "5"; angle: "75"; value: "97.6807"; }
+ ListElement{ radius: "5"; angle: "80"; value: "98.6248"; }
+ ListElement{ radius: "5"; angle: "85"; value: "99.1942"; }
+ ListElement{ radius: "5"; angle: "90"; value: "99.3844"; }
+ ListElement{ radius: "5"; angle: "95"; value: "99.1942"; }
+ ListElement{ radius: "5"; angle: "100"; value: "98.6248"; }
+ ListElement{ radius: "5"; angle: "105"; value: "97.6807"; }
+ ListElement{ radius: "5"; angle: "110"; value: "96.369"; }
+ ListElement{ radius: "5"; angle: "115"; value: "94.6998"; }
+ ListElement{ radius: "5"; angle: "120"; value: "92.6857"; }
+ ListElement{ radius: "5"; angle: "125"; value: "90.342"; }
+ ListElement{ radius: "5"; angle: "130"; value: "87.6866"; }
+ ListElement{ radius: "5"; angle: "135"; value: "84.7398"; }
+ ListElement{ radius: "5"; angle: "140"; value: "81.5238"; }
+ ListElement{ radius: "5"; angle: "145"; value: "78.0632"; }
+ ListElement{ radius: "5"; angle: "150"; value: "74.3844"; }
+ ListElement{ radius: "5"; angle: "155"; value: "70.5153"; }
+ ListElement{ radius: "5"; angle: "160"; value: "66.4854"; }
+ ListElement{ radius: "5"; angle: "165"; value: "62.3254"; }
+ ListElement{ radius: "5"; angle: "170"; value: "58.0668"; }
+ ListElement{ radius: "5"; angle: "175"; value: "53.7422"; }
+ ListElement{ radius: "5"; angle: "180"; value: "49.3844"; }
+ ListElement{ radius: "5"; angle: "185"; value: "45.0266"; }
+ ListElement{ radius: "5"; angle: "190"; value: "40.702"; }
+ ListElement{ radius: "5"; angle: "195"; value: "36.4435"; }
+ ListElement{ radius: "5"; angle: "200"; value: "32.2834"; }
+ ListElement{ radius: "5"; angle: "205"; value: "28.2535"; }
+ ListElement{ radius: "5"; angle: "210"; value: "24.3844"; }
+ ListElement{ radius: "5"; angle: "215"; value: "20.7056"; }
+ ListElement{ radius: "5"; angle: "220"; value: "17.245"; }
+ ListElement{ radius: "5"; angle: "225"; value: "14.0291"; }
+ ListElement{ radius: "5"; angle: "230"; value: "11.0822"; }
+ ListElement{ radius: "5"; angle: "235"; value: "8.42681"; }
+ ListElement{ radius: "5"; angle: "240"; value: "6.08315"; }
+ ListElement{ radius: "5"; angle: "245"; value: "4.06903"; }
+ ListElement{ radius: "5"; angle: "250"; value: "2.39979"; }
+ ListElement{ radius: "5"; angle: "255"; value: "1.08813"; }
+ ListElement{ radius: "5"; angle: "260"; value: "0.144029"; }
+ ListElement{ radius: "5"; angle: "265"; value: "-0.425318"; }
+ ListElement{ radius: "5"; angle: "270"; value: "-0.615583"; }
+ ListElement{ radius: "5"; angle: "275"; value: "-0.425318"; }
+ ListElement{ radius: "5"; angle: "280"; value: "0.144029"; }
+ ListElement{ radius: "5"; angle: "285"; value: "1.08813"; }
+ ListElement{ radius: "5"; angle: "290"; value: "2.39979"; }
+ ListElement{ radius: "5"; angle: "295"; value: "4.06903"; }
+ ListElement{ radius: "5"; angle: "300"; value: "6.08315"; }
+ ListElement{ radius: "5"; angle: "305"; value: "8.42681"; }
+ ListElement{ radius: "5"; angle: "310"; value: "11.0822"; }
+ ListElement{ radius: "5"; angle: "315"; value: "14.0291"; }
+ ListElement{ radius: "5"; angle: "320"; value: "17.245"; }
+ ListElement{ radius: "5"; angle: "325"; value: "20.7056"; }
+ ListElement{ radius: "5"; angle: "330"; value: "24.3844"; }
+ ListElement{ radius: "5"; angle: "335"; value: "28.2535"; }
+ ListElement{ radius: "5"; angle: "340"; value: "32.2834"; }
+ ListElement{ radius: "5"; angle: "345"; value: "36.4435"; }
+ ListElement{ radius: "5"; angle: "350"; value: "40.702"; }
+ ListElement{ radius: "5"; angle: "355"; value: "45.0266"; }
+ ListElement{ radius: "5"; angle: "360"; value: "49.3844"; }
+ ListElement{ radius: "10"; angle: "0"; value: "47.5528"; }
+ ListElement{ radius: "10"; angle: "5"; value: "51.9106"; }
+ ListElement{ radius: "10"; angle: "10"; value: "56.2352"; }
+ ListElement{ radius: "10"; angle: "15"; value: "60.4938"; }
+ ListElement{ radius: "10"; angle: "20"; value: "64.6538"; }
+ ListElement{ radius: "10"; angle: "25"; value: "68.6837"; }
+ ListElement{ radius: "10"; angle: "30"; value: "72.5528"; }
+ ListElement{ radius: "10"; angle: "35"; value: "76.2316"; }
+ ListElement{ radius: "10"; angle: "40"; value: "79.6922"; }
+ ListElement{ radius: "10"; angle: "45"; value: "82.9082"; }
+ ListElement{ radius: "10"; angle: "50"; value: "85.855"; }
+ ListElement{ radius: "10"; angle: "55"; value: "88.5104"; }
+ ListElement{ radius: "10"; angle: "60"; value: "90.8541"; }
+ ListElement{ radius: "10"; angle: "65"; value: "92.8682"; }
+ ListElement{ radius: "10"; angle: "70"; value: "94.5375"; }
+ ListElement{ radius: "10"; angle: "75"; value: "95.8491"; }
+ ListElement{ radius: "10"; angle: "80"; value: "96.7932"; }
+ ListElement{ radius: "10"; angle: "85"; value: "97.3626"; }
+ ListElement{ radius: "10"; angle: "90"; value: "97.5528"; }
+ ListElement{ radius: "10"; angle: "95"; value: "97.3626"; }
+ ListElement{ radius: "10"; angle: "100"; value: "96.7932"; }
+ ListElement{ radius: "10"; angle: "105"; value: "95.8491"; }
+ ListElement{ radius: "10"; angle: "110"; value: "94.5375"; }
+ ListElement{ radius: "10"; angle: "115"; value: "92.8682"; }
+ ListElement{ radius: "10"; angle: "120"; value: "90.8541"; }
+ ListElement{ radius: "10"; angle: "125"; value: "88.5104"; }
+ ListElement{ radius: "10"; angle: "130"; value: "85.855"; }
+ ListElement{ radius: "10"; angle: "135"; value: "82.9082"; }
+ ListElement{ radius: "10"; angle: "140"; value: "79.6922"; }
+ ListElement{ radius: "10"; angle: "145"; value: "76.2316"; }
+ ListElement{ radius: "10"; angle: "150"; value: "72.5528"; }
+ ListElement{ radius: "10"; angle: "155"; value: "68.6837"; }
+ ListElement{ radius: "10"; angle: "160"; value: "64.6538"; }
+ ListElement{ radius: "10"; angle: "165"; value: "60.4938"; }
+ ListElement{ radius: "10"; angle: "170"; value: "56.2352"; }
+ ListElement{ radius: "10"; angle: "175"; value: "51.9106"; }
+ ListElement{ radius: "10"; angle: "180"; value: "47.5528"; }
+ ListElement{ radius: "10"; angle: "185"; value: "43.195"; }
+ ListElement{ radius: "10"; angle: "190"; value: "38.8704"; }
+ ListElement{ radius: "10"; angle: "195"; value: "34.6119"; }
+ ListElement{ radius: "10"; angle: "200"; value: "30.4518"; }
+ ListElement{ radius: "10"; angle: "205"; value: "26.4219"; }
+ ListElement{ radius: "10"; angle: "210"; value: "22.5528"; }
+ ListElement{ radius: "10"; angle: "215"; value: "18.874"; }
+ ListElement{ radius: "10"; angle: "220"; value: "15.4134"; }
+ ListElement{ radius: "10"; angle: "225"; value: "12.1975"; }
+ ListElement{ radius: "10"; angle: "230"; value: "9.2506"; }
+ ListElement{ radius: "10"; angle: "235"; value: "6.59522"; }
+ ListElement{ radius: "10"; angle: "240"; value: "4.25156"; }
+ ListElement{ radius: "10"; angle: "245"; value: "2.23744"; }
+ ListElement{ radius: "10"; angle: "250"; value: "0.568195"; }
+ ListElement{ radius: "10"; angle: "255"; value: "-0.743465"; }
+ ListElement{ radius: "10"; angle: "260"; value: "-1.68756"; }
+ ListElement{ radius: "10"; angle: "265"; value: "-2.25691"; }
+ ListElement{ radius: "10"; angle: "270"; value: "-2.44717"; }
+ ListElement{ radius: "10"; angle: "275"; value: "-2.25691"; }
+ ListElement{ radius: "10"; angle: "280"; value: "-1.68756"; }
+ ListElement{ radius: "10"; angle: "285"; value: "-0.743465"; }
+ ListElement{ radius: "10"; angle: "290"; value: "0.568195"; }
+ ListElement{ radius: "10"; angle: "295"; value: "2.23744"; }
+ ListElement{ radius: "10"; angle: "300"; value: "4.25156"; }
+ ListElement{ radius: "10"; angle: "305"; value: "6.59522"; }
+ ListElement{ radius: "10"; angle: "310"; value: "9.2506"; }
+ ListElement{ radius: "10"; angle: "315"; value: "12.1975"; }
+ ListElement{ radius: "10"; angle: "320"; value: "15.4134"; }
+ ListElement{ radius: "10"; angle: "325"; value: "18.874"; }
+ ListElement{ radius: "10"; angle: "330"; value: "22.5528"; }
+ ListElement{ radius: "10"; angle: "335"; value: "26.4219"; }
+ ListElement{ radius: "10"; angle: "340"; value: "30.4518"; }
+ ListElement{ radius: "10"; angle: "345"; value: "34.6119"; }
+ ListElement{ radius: "10"; angle: "350"; value: "38.8704"; }
+ ListElement{ radius: "10"; angle: "355"; value: "43.195"; }
+ ListElement{ radius: "10"; angle: "360"; value: "47.5528"; }
+ ListElement{ radius: "15"; angle: "0"; value: "44.5503"; }
+ ListElement{ radius: "15"; angle: "5"; value: "48.9081"; }
+ ListElement{ radius: "15"; angle: "10"; value: "53.2327"; }
+ ListElement{ radius: "15"; angle: "15"; value: "57.4913"; }
+ ListElement{ radius: "15"; angle: "20"; value: "61.6513"; }
+ ListElement{ radius: "15"; angle: "25"; value: "65.6812"; }
+ ListElement{ radius: "15"; angle: "30"; value: "69.5503"; }
+ ListElement{ radius: "15"; angle: "35"; value: "73.2291"; }
+ ListElement{ radius: "15"; angle: "40"; value: "76.6897"; }
+ ListElement{ radius: "15"; angle: "45"; value: "79.9057"; }
+ ListElement{ radius: "15"; angle: "50"; value: "82.8525"; }
+ ListElement{ radius: "15"; angle: "55"; value: "85.5079"; }
+ ListElement{ radius: "15"; angle: "60"; value: "87.8516"; }
+ ListElement{ radius: "15"; angle: "65"; value: "89.8657"; }
+ ListElement{ radius: "15"; angle: "70"; value: "91.535"; }
+ ListElement{ radius: "15"; angle: "75"; value: "92.8466"; }
+ ListElement{ radius: "15"; angle: "80"; value: "93.7907"; }
+ ListElement{ radius: "15"; angle: "85"; value: "94.3601"; }
+ ListElement{ radius: "15"; angle: "90"; value: "94.5503"; }
+ ListElement{ radius: "15"; angle: "95"; value: "94.3601"; }
+ ListElement{ radius: "15"; angle: "100"; value: "93.7907"; }
+ ListElement{ radius: "15"; angle: "105"; value: "92.8466"; }
+ ListElement{ radius: "15"; angle: "110"; value: "91.535"; }
+ ListElement{ radius: "15"; angle: "115"; value: "89.8657"; }
+ ListElement{ radius: "15"; angle: "120"; value: "87.8516"; }
+ ListElement{ radius: "15"; angle: "125"; value: "85.5079"; }
+ ListElement{ radius: "15"; angle: "130"; value: "82.8525"; }
+ ListElement{ radius: "15"; angle: "135"; value: "79.9057"; }
+ ListElement{ radius: "15"; angle: "140"; value: "76.6897"; }
+ ListElement{ radius: "15"; angle: "145"; value: "73.2291"; }
+ ListElement{ radius: "15"; angle: "150"; value: "69.5503"; }
+ ListElement{ radius: "15"; angle: "155"; value: "65.6812"; }
+ ListElement{ radius: "15"; angle: "160"; value: "61.6513"; }
+ ListElement{ radius: "15"; angle: "165"; value: "57.4913"; }
+ ListElement{ radius: "15"; angle: "170"; value: "53.2327"; }
+ ListElement{ radius: "15"; angle: "175"; value: "48.9081"; }
+ ListElement{ radius: "15"; angle: "180"; value: "44.5503"; }
+ ListElement{ radius: "15"; angle: "185"; value: "40.1925"; }
+ ListElement{ radius: "15"; angle: "190"; value: "35.8679"; }
+ ListElement{ radius: "15"; angle: "195"; value: "31.6094"; }
+ ListElement{ radius: "15"; angle: "200"; value: "27.4493"; }
+ ListElement{ radius: "15"; angle: "205"; value: "23.4194"; }
+ ListElement{ radius: "15"; angle: "210"; value: "19.5503"; }
+ ListElement{ radius: "15"; angle: "215"; value: "15.8715"; }
+ ListElement{ radius: "15"; angle: "220"; value: "12.4109"; }
+ ListElement{ radius: "15"; angle: "225"; value: "9.19499"; }
+ ListElement{ radius: "15"; angle: "230"; value: "6.2481"; }
+ ListElement{ radius: "15"; angle: "235"; value: "3.59272"; }
+ ListElement{ radius: "15"; angle: "240"; value: "1.24906"; }
+ ListElement{ radius: "15"; angle: "245"; value: "-0.765063"; }
+ ListElement{ radius: "15"; angle: "250"; value: "-2.4343"; }
+ ListElement{ radius: "15"; angle: "255"; value: "-3.74597"; }
+ ListElement{ radius: "15"; angle: "260"; value: "-4.69006"; }
+ ListElement{ radius: "15"; angle: "265"; value: "-5.25941"; }
+ ListElement{ radius: "15"; angle: "270"; value: "-5.44967"; }
+ ListElement{ radius: "15"; angle: "275"; value: "-5.25941"; }
+ ListElement{ radius: "15"; angle: "280"; value: "-4.69006"; }
+ ListElement{ radius: "15"; angle: "285"; value: "-3.74597"; }
+ ListElement{ radius: "15"; angle: "290"; value: "-2.4343"; }
+ ListElement{ radius: "15"; angle: "295"; value: "-0.765063"; }
+ ListElement{ radius: "15"; angle: "300"; value: "1.24906"; }
+ ListElement{ radius: "15"; angle: "305"; value: "3.59272"; }
+ ListElement{ radius: "15"; angle: "310"; value: "6.2481"; }
+ ListElement{ radius: "15"; angle: "315"; value: "9.19499"; }
+ ListElement{ radius: "15"; angle: "320"; value: "12.4109"; }
+ ListElement{ radius: "15"; angle: "325"; value: "15.8715"; }
+ ListElement{ radius: "15"; angle: "330"; value: "19.5503"; }
+ ListElement{ radius: "15"; angle: "335"; value: "23.4194"; }
+ ListElement{ radius: "15"; angle: "340"; value: "27.4493"; }
+ ListElement{ radius: "15"; angle: "345"; value: "31.6094"; }
+ ListElement{ radius: "15"; angle: "350"; value: "35.8679"; }
+ ListElement{ radius: "15"; angle: "355"; value: "40.1925"; }
+ ListElement{ radius: "15"; angle: "360"; value: "44.5503"; }
+ ListElement{ radius: "20"; angle: "0"; value: "40.4508"; }
+ ListElement{ radius: "20"; angle: "5"; value: "44.8086"; }
+ ListElement{ radius: "20"; angle: "10"; value: "49.1333"; }
+ ListElement{ radius: "20"; angle: "15"; value: "53.3918"; }
+ ListElement{ radius: "20"; angle: "20"; value: "57.5519"; }
+ ListElement{ radius: "20"; angle: "25"; value: "61.5818"; }
+ ListElement{ radius: "20"; angle: "30"; value: "65.4508"; }
+ ListElement{ radius: "20"; angle: "35"; value: "69.1297"; }
+ ListElement{ radius: "20"; angle: "40"; value: "72.5902"; }
+ ListElement{ radius: "20"; angle: "45"; value: "75.8062"; }
+ ListElement{ radius: "20"; angle: "50"; value: "78.7531"; }
+ ListElement{ radius: "20"; angle: "55"; value: "81.4085"; }
+ ListElement{ radius: "20"; angle: "60"; value: "83.7521"; }
+ ListElement{ radius: "20"; angle: "65"; value: "85.7662"; }
+ ListElement{ radius: "20"; angle: "70"; value: "87.4355"; }
+ ListElement{ radius: "20"; angle: "75"; value: "88.7471"; }
+ ListElement{ radius: "20"; angle: "80"; value: "89.6912"; }
+ ListElement{ radius: "20"; angle: "85"; value: "90.2606"; }
+ ListElement{ radius: "20"; angle: "90"; value: "90.4508"; }
+ ListElement{ radius: "20"; angle: "95"; value: "90.2606"; }
+ ListElement{ radius: "20"; angle: "100"; value: "89.6912"; }
+ ListElement{ radius: "20"; angle: "105"; value: "88.7471"; }
+ ListElement{ radius: "20"; angle: "110"; value: "87.4355"; }
+ ListElement{ radius: "20"; angle: "115"; value: "85.7662"; }
+ ListElement{ radius: "20"; angle: "120"; value: "83.7521"; }
+ ListElement{ radius: "20"; angle: "125"; value: "81.4085"; }
+ ListElement{ radius: "20"; angle: "130"; value: "78.7531"; }
+ ListElement{ radius: "20"; angle: "135"; value: "75.8062"; }
+ ListElement{ radius: "20"; angle: "140"; value: "72.5902"; }
+ ListElement{ radius: "20"; angle: "145"; value: "69.1297"; }
+ ListElement{ radius: "20"; angle: "150"; value: "65.4508"; }
+ ListElement{ radius: "20"; angle: "155"; value: "61.5818"; }
+ ListElement{ radius: "20"; angle: "160"; value: "57.5519"; }
+ ListElement{ radius: "20"; angle: "165"; value: "53.3918"; }
+ ListElement{ radius: "20"; angle: "170"; value: "49.1333"; }
+ ListElement{ radius: "20"; angle: "175"; value: "44.8086"; }
+ ListElement{ radius: "20"; angle: "180"; value: "40.4508"; }
+ ListElement{ radius: "20"; angle: "185"; value: "36.0931"; }
+ ListElement{ radius: "20"; angle: "190"; value: "31.7684"; }
+ ListElement{ radius: "20"; angle: "195"; value: "27.5099"; }
+ ListElement{ radius: "20"; angle: "200"; value: "23.3498"; }
+ ListElement{ radius: "20"; angle: "205"; value: "19.3199"; }
+ ListElement{ radius: "20"; angle: "210"; value: "15.4508"; }
+ ListElement{ radius: "20"; angle: "215"; value: "11.772"; }
+ ListElement{ radius: "20"; angle: "220"; value: "8.31147"; }
+ ListElement{ radius: "20"; angle: "225"; value: "5.09551"; }
+ ListElement{ radius: "20"; angle: "230"; value: "2.14863"; }
+ ListElement{ radius: "20"; angle: "235"; value: "-0.506752"; }
+ ListElement{ radius: "20"; angle: "240"; value: "-2.85042"; }
+ ListElement{ radius: "20"; angle: "245"; value: "-4.86454"; }
+ ListElement{ radius: "20"; angle: "250"; value: "-6.53378"; }
+ ListElement{ radius: "20"; angle: "255"; value: "-7.84544"; }
+ ListElement{ radius: "20"; angle: "260"; value: "-8.78954"; }
+ ListElement{ radius: "20"; angle: "265"; value: "-9.35889"; }
+ ListElement{ radius: "20"; angle: "270"; value: "-9.54915"; }
+ ListElement{ radius: "20"; angle: "275"; value: "-9.35889"; }
+ ListElement{ radius: "20"; angle: "280"; value: "-8.78954"; }
+ ListElement{ radius: "20"; angle: "285"; value: "-7.84544"; }
+ ListElement{ radius: "20"; angle: "290"; value: "-6.53378"; }
+ ListElement{ radius: "20"; angle: "295"; value: "-4.86454"; }
+ ListElement{ radius: "20"; angle: "300"; value: "-2.85042"; }
+ ListElement{ radius: "20"; angle: "305"; value: "-0.506752"; }
+ ListElement{ radius: "20"; angle: "310"; value: "2.14863"; }
+ ListElement{ radius: "20"; angle: "315"; value: "5.09551"; }
+ ListElement{ radius: "20"; angle: "320"; value: "8.31147"; }
+ ListElement{ radius: "20"; angle: "325"; value: "11.772"; }
+ ListElement{ radius: "20"; angle: "330"; value: "15.4508"; }
+ ListElement{ radius: "20"; angle: "335"; value: "19.3199"; }
+ ListElement{ radius: "20"; angle: "340"; value: "23.3498"; }
+ ListElement{ radius: "20"; angle: "345"; value: "27.5099"; }
+ ListElement{ radius: "20"; angle: "350"; value: "31.7684"; }
+ ListElement{ radius: "20"; angle: "355"; value: "36.0931"; }
+ ListElement{ radius: "20"; angle: "360"; value: "40.4508"; }
+ ListElement{ radius: "25"; angle: "0"; value: "35.3553"; }
+ ListElement{ radius: "25"; angle: "5"; value: "39.7131"; }
+ ListElement{ radius: "25"; angle: "10"; value: "44.0377"; }
+ ListElement{ radius: "25"; angle: "15"; value: "48.2963"; }
+ ListElement{ radius: "25"; angle: "20"; value: "52.4563"; }
+ ListElement{ radius: "25"; angle: "25"; value: "56.4863"; }
+ ListElement{ radius: "25"; angle: "30"; value: "60.3553"; }
+ ListElement{ radius: "25"; angle: "35"; value: "64.0342"; }
+ ListElement{ radius: "25"; angle: "40"; value: "67.4947"; }
+ ListElement{ radius: "25"; angle: "45"; value: "70.7107"; }
+ ListElement{ radius: "25"; angle: "50"; value: "73.6576"; }
+ ListElement{ radius: "25"; angle: "55"; value: "76.3129"; }
+ ListElement{ radius: "25"; angle: "60"; value: "78.6566"; }
+ ListElement{ radius: "25"; angle: "65"; value: "80.6707"; }
+ ListElement{ radius: "25"; angle: "70"; value: "82.34"; }
+ ListElement{ radius: "25"; angle: "75"; value: "83.6516"; }
+ ListElement{ radius: "25"; angle: "80"; value: "84.5957"; }
+ ListElement{ radius: "25"; angle: "85"; value: "85.1651"; }
+ ListElement{ radius: "25"; angle: "90"; value: "85.3553"; }
+ ListElement{ radius: "25"; angle: "95"; value: "85.1651"; }
+ ListElement{ radius: "25"; angle: "100"; value: "84.5957"; }
+ ListElement{ radius: "25"; angle: "105"; value: "83.6516"; }
+ ListElement{ radius: "25"; angle: "110"; value: "82.34"; }
+ ListElement{ radius: "25"; angle: "115"; value: "80.6707"; }
+ ListElement{ radius: "25"; angle: "120"; value: "78.6566"; }
+ ListElement{ radius: "25"; angle: "125"; value: "76.3129"; }
+ ListElement{ radius: "25"; angle: "130"; value: "73.6576"; }
+ ListElement{ radius: "25"; angle: "135"; value: "70.7107"; }
+ ListElement{ radius: "25"; angle: "140"; value: "67.4947"; }
+ ListElement{ radius: "25"; angle: "145"; value: "64.0342"; }
+ ListElement{ radius: "25"; angle: "150"; value: "60.3553"; }
+ ListElement{ radius: "25"; angle: "155"; value: "56.4863"; }
+ ListElement{ radius: "25"; angle: "160"; value: "52.4563"; }
+ ListElement{ radius: "25"; angle: "165"; value: "48.2963"; }
+ ListElement{ radius: "25"; angle: "170"; value: "44.0377"; }
+ ListElement{ radius: "25"; angle: "175"; value: "39.7131"; }
+ ListElement{ radius: "25"; angle: "180"; value: "35.3553"; }
+ ListElement{ radius: "25"; angle: "185"; value: "30.9976"; }
+ ListElement{ radius: "25"; angle: "190"; value: "26.6729"; }
+ ListElement{ radius: "25"; angle: "195"; value: "22.4144"; }
+ ListElement{ radius: "25"; angle: "200"; value: "18.2543"; }
+ ListElement{ radius: "25"; angle: "205"; value: "14.2244"; }
+ ListElement{ radius: "25"; angle: "210"; value: "10.3553"; }
+ ListElement{ radius: "25"; angle: "215"; value: "6.67652"; }
+ ListElement{ radius: "25"; angle: "220"; value: "3.21596"; }
+ ListElement{ radius: "25"; angle: "225"; value: "5.55112e-15"; }
+ ListElement{ radius: "25"; angle: "230"; value: "-2.94688"; }
+ ListElement{ radius: "25"; angle: "235"; value: "-5.60226"; }
+ ListElement{ radius: "25"; angle: "240"; value: "-7.94593"; }
+ ListElement{ radius: "25"; angle: "245"; value: "-9.96005"; }
+ ListElement{ radius: "25"; angle: "250"; value: "-11.6293"; }
+ ListElement{ radius: "25"; angle: "255"; value: "-12.941"; }
+ ListElement{ radius: "25"; angle: "260"; value: "-13.885"; }
+ ListElement{ radius: "25"; angle: "265"; value: "-14.4544"; }
+ ListElement{ radius: "25"; angle: "270"; value: "-14.6447"; }
+ ListElement{ radius: "25"; angle: "275"; value: "-14.4544"; }
+ ListElement{ radius: "25"; angle: "280"; value: "-13.885"; }
+ ListElement{ radius: "25"; angle: "285"; value: "-12.941"; }
+ ListElement{ radius: "25"; angle: "290"; value: "-11.6293"; }
+ ListElement{ radius: "25"; angle: "295"; value: "-9.96005"; }
+ ListElement{ radius: "25"; angle: "300"; value: "-7.94593"; }
+ ListElement{ radius: "25"; angle: "305"; value: "-5.60226"; }
+ ListElement{ radius: "25"; angle: "310"; value: "-2.94688"; }
+ ListElement{ radius: "25"; angle: "315"; value: "-5.55112e-15"; }
+ ListElement{ radius: "25"; angle: "320"; value: "3.21596"; }
+ ListElement{ radius: "25"; angle: "325"; value: "6.67652"; }
+ ListElement{ radius: "25"; angle: "330"; value: "10.3553"; }
+ ListElement{ radius: "25"; angle: "335"; value: "14.2244"; }
+ ListElement{ radius: "25"; angle: "340"; value: "18.2543"; }
+ ListElement{ radius: "25"; angle: "345"; value: "22.4144"; }
+ ListElement{ radius: "25"; angle: "350"; value: "26.6729"; }
+ ListElement{ radius: "25"; angle: "355"; value: "30.9976"; }
+ ListElement{ radius: "25"; angle: "360"; value: "35.3553"; }
+ ListElement{ radius: "30"; angle: "0"; value: "29.3893"; }
+ ListElement{ radius: "30"; angle: "5"; value: "33.747"; }
+ ListElement{ radius: "30"; angle: "10"; value: "38.0717"; }
+ ListElement{ radius: "30"; angle: "15"; value: "42.3302"; }
+ ListElement{ radius: "30"; angle: "20"; value: "46.4903"; }
+ ListElement{ radius: "30"; angle: "25"; value: "50.5202"; }
+ ListElement{ radius: "30"; angle: "30"; value: "54.3893"; }
+ ListElement{ radius: "30"; angle: "35"; value: "58.0681"; }
+ ListElement{ radius: "30"; angle: "40"; value: "61.5286"; }
+ ListElement{ radius: "30"; angle: "45"; value: "64.7446"; }
+ ListElement{ radius: "30"; angle: "50"; value: "67.6915"; }
+ ListElement{ radius: "30"; angle: "55"; value: "70.3469"; }
+ ListElement{ radius: "30"; angle: "60"; value: "72.6905"; }
+ ListElement{ radius: "30"; angle: "65"; value: "74.7047"; }
+ ListElement{ radius: "30"; angle: "70"; value: "76.3739"; }
+ ListElement{ radius: "30"; angle: "75"; value: "77.6856"; }
+ ListElement{ radius: "30"; angle: "80"; value: "78.6297"; }
+ ListElement{ radius: "30"; angle: "85"; value: "79.199"; }
+ ListElement{ radius: "30"; angle: "90"; value: "79.3893"; }
+ ListElement{ radius: "30"; angle: "95"; value: "79.199"; }
+ ListElement{ radius: "30"; angle: "100"; value: "78.6297"; }
+ ListElement{ radius: "30"; angle: "105"; value: "77.6856"; }
+ ListElement{ radius: "30"; angle: "110"; value: "76.3739"; }
+ ListElement{ radius: "30"; angle: "115"; value: "74.7047"; }
+ ListElement{ radius: "30"; angle: "120"; value: "72.6905"; }
+ ListElement{ radius: "30"; angle: "125"; value: "70.3469"; }
+ ListElement{ radius: "30"; angle: "130"; value: "67.6915"; }
+ ListElement{ radius: "30"; angle: "135"; value: "64.7446"; }
+ ListElement{ radius: "30"; angle: "140"; value: "61.5286"; }
+ ListElement{ radius: "30"; angle: "145"; value: "58.0681"; }
+ ListElement{ radius: "30"; angle: "150"; value: "54.3893"; }
+ ListElement{ radius: "30"; angle: "155"; value: "50.5202"; }
+ ListElement{ radius: "30"; angle: "160"; value: "46.4903"; }
+ ListElement{ radius: "30"; angle: "165"; value: "42.3302"; }
+ ListElement{ radius: "30"; angle: "170"; value: "38.0717"; }
+ ListElement{ radius: "30"; angle: "175"; value: "33.747"; }
+ ListElement{ radius: "30"; angle: "180"; value: "29.3893"; }
+ ListElement{ radius: "30"; angle: "185"; value: "25.0315"; }
+ ListElement{ radius: "30"; angle: "190"; value: "20.7069"; }
+ ListElement{ radius: "30"; angle: "195"; value: "16.4483"; }
+ ListElement{ radius: "30"; angle: "200"; value: "12.2883"; }
+ ListElement{ radius: "30"; angle: "205"; value: "8.25835"; }
+ ListElement{ radius: "30"; angle: "210"; value: "4.38926"; }
+ ListElement{ radius: "30"; angle: "215"; value: "0.710441"; }
+ ListElement{ radius: "30"; angle: "220"; value: "-2.75012"; }
+ ListElement{ radius: "30"; angle: "225"; value: "-5.96608"; }
+ ListElement{ radius: "30"; angle: "230"; value: "-8.91296"; }
+ ListElement{ radius: "30"; angle: "235"; value: "-11.5683"; }
+ ListElement{ radius: "30"; angle: "240"; value: "-13.912"; }
+ ListElement{ radius: "30"; angle: "245"; value: "-15.9261"; }
+ ListElement{ radius: "30"; angle: "250"; value: "-17.5954"; }
+ ListElement{ radius: "30"; angle: "255"; value: "-18.907"; }
+ ListElement{ radius: "30"; angle: "260"; value: "-19.8511"; }
+ ListElement{ radius: "30"; angle: "265"; value: "-20.4205"; }
+ ListElement{ radius: "30"; angle: "270"; value: "-20.6107"; }
+ ListElement{ radius: "30"; angle: "275"; value: "-20.4205"; }
+ ListElement{ radius: "30"; angle: "280"; value: "-19.8511"; }
+ ListElement{ radius: "30"; angle: "285"; value: "-18.907"; }
+ ListElement{ radius: "30"; angle: "290"; value: "-17.5954"; }
+ ListElement{ radius: "30"; angle: "295"; value: "-15.9261"; }
+ ListElement{ radius: "30"; angle: "300"; value: "-13.912"; }
+ ListElement{ radius: "30"; angle: "305"; value: "-11.5683"; }
+ ListElement{ radius: "30"; angle: "310"; value: "-8.91296"; }
+ ListElement{ radius: "30"; angle: "315"; value: "-5.96608"; }
+ ListElement{ radius: "30"; angle: "320"; value: "-2.75012"; }
+ ListElement{ radius: "30"; angle: "325"; value: "0.710441"; }
+ ListElement{ radius: "30"; angle: "330"; value: "4.38926"; }
+ ListElement{ radius: "30"; angle: "335"; value: "8.25835"; }
+ ListElement{ radius: "30"; angle: "340"; value: "12.2883"; }
+ ListElement{ radius: "30"; angle: "345"; value: "16.4483"; }
+ ListElement{ radius: "30"; angle: "350"; value: "20.7069"; }
+ ListElement{ radius: "30"; angle: "355"; value: "25.0315"; }
+ ListElement{ radius: "30"; angle: "360"; value: "29.3893"; }
+ ListElement{ radius: "35"; angle: "0"; value: "22.6995"; }
+ ListElement{ radius: "35"; angle: "5"; value: "27.0573"; }
+ ListElement{ radius: "35"; angle: "10"; value: "31.3819"; }
+ ListElement{ radius: "35"; angle: "15"; value: "35.6405"; }
+ ListElement{ radius: "35"; angle: "20"; value: "39.8005"; }
+ ListElement{ radius: "35"; angle: "25"; value: "43.8304"; }
+ ListElement{ radius: "35"; angle: "30"; value: "47.6995"; }
+ ListElement{ radius: "35"; angle: "35"; value: "51.3783"; }
+ ListElement{ radius: "35"; angle: "40"; value: "54.8389"; }
+ ListElement{ radius: "35"; angle: "45"; value: "58.0549"; }
+ ListElement{ radius: "35"; angle: "50"; value: "61.0017"; }
+ ListElement{ radius: "35"; angle: "55"; value: "63.6571"; }
+ ListElement{ radius: "35"; angle: "60"; value: "66.0008"; }
+ ListElement{ radius: "35"; angle: "65"; value: "68.0149"; }
+ ListElement{ radius: "35"; angle: "70"; value: "69.6842"; }
+ ListElement{ radius: "35"; angle: "75"; value: "70.9958"; }
+ ListElement{ radius: "35"; angle: "80"; value: "71.9399"; }
+ ListElement{ radius: "35"; angle: "85"; value: "72.5093"; }
+ ListElement{ radius: "35"; angle: "90"; value: "72.6995"; }
+ ListElement{ radius: "35"; angle: "95"; value: "72.5093"; }
+ ListElement{ radius: "35"; angle: "100"; value: "71.9399"; }
+ ListElement{ radius: "35"; angle: "105"; value: "70.9958"; }
+ ListElement{ radius: "35"; angle: "110"; value: "69.6842"; }
+ ListElement{ radius: "35"; angle: "115"; value: "68.0149"; }
+ ListElement{ radius: "35"; angle: "120"; value: "66.0008"; }
+ ListElement{ radius: "35"; angle: "125"; value: "63.6571"; }
+ ListElement{ radius: "35"; angle: "130"; value: "61.0017"; }
+ ListElement{ radius: "35"; angle: "135"; value: "58.0549"; }
+ ListElement{ radius: "35"; angle: "140"; value: "54.8389"; }
+ ListElement{ radius: "35"; angle: "145"; value: "51.3783"; }
+ ListElement{ radius: "35"; angle: "150"; value: "47.6995"; }
+ ListElement{ radius: "35"; angle: "155"; value: "43.8304"; }
+ ListElement{ radius: "35"; angle: "160"; value: "39.8005"; }
+ ListElement{ radius: "35"; angle: "165"; value: "35.6405"; }
+ ListElement{ radius: "35"; angle: "170"; value: "31.3819"; }
+ ListElement{ radius: "35"; angle: "175"; value: "27.0573"; }
+ ListElement{ radius: "35"; angle: "180"; value: "22.6995"; }
+ ListElement{ radius: "35"; angle: "185"; value: "18.3417"; }
+ ListElement{ radius: "35"; angle: "190"; value: "14.0171"; }
+ ListElement{ radius: "35"; angle: "195"; value: "9.75857"; }
+ ListElement{ radius: "35"; angle: "200"; value: "5.59852"; }
+ ListElement{ radius: "35"; angle: "205"; value: "1.56861"; }
+ ListElement{ radius: "35"; angle: "210"; value: "-2.30048"; }
+ ListElement{ radius: "35"; angle: "215"; value: "-5.9793"; }
+ ListElement{ radius: "35"; angle: "220"; value: "-9.43986"; }
+ ListElement{ radius: "35"; angle: "225"; value: "-12.6558"; }
+ ListElement{ radius: "35"; angle: "230"; value: "-15.6027"; }
+ ListElement{ radius: "35"; angle: "235"; value: "-18.2581"; }
+ ListElement{ radius: "35"; angle: "240"; value: "-20.6017"; }
+ ListElement{ radius: "35"; angle: "245"; value: "-22.6159"; }
+ ListElement{ radius: "35"; angle: "250"; value: "-24.2851"; }
+ ListElement{ radius: "35"; angle: "255"; value: "-25.5968"; }
+ ListElement{ radius: "35"; angle: "260"; value: "-26.5409"; }
+ ListElement{ radius: "35"; angle: "265"; value: "-27.1102"; }
+ ListElement{ radius: "35"; angle: "270"; value: "-27.3005"; }
+ ListElement{ radius: "35"; angle: "275"; value: "-27.1102"; }
+ ListElement{ radius: "35"; angle: "280"; value: "-26.5409"; }
+ ListElement{ radius: "35"; angle: "285"; value: "-25.5968"; }
+ ListElement{ radius: "35"; angle: "290"; value: "-24.2851"; }
+ ListElement{ radius: "35"; angle: "295"; value: "-22.6159"; }
+ ListElement{ radius: "35"; angle: "300"; value: "-20.6017"; }
+ ListElement{ radius: "35"; angle: "305"; value: "-18.2581"; }
+ ListElement{ radius: "35"; angle: "310"; value: "-15.6027"; }
+ ListElement{ radius: "35"; angle: "315"; value: "-12.6558"; }
+ ListElement{ radius: "35"; angle: "320"; value: "-9.43986"; }
+ ListElement{ radius: "35"; angle: "325"; value: "-5.9793"; }
+ ListElement{ radius: "35"; angle: "330"; value: "-2.30048"; }
+ ListElement{ radius: "35"; angle: "335"; value: "1.56861"; }
+ ListElement{ radius: "35"; angle: "340"; value: "5.59852"; }
+ ListElement{ radius: "35"; angle: "345"; value: "9.75857"; }
+ ListElement{ radius: "35"; angle: "350"; value: "14.0171"; }
+ ListElement{ radius: "35"; angle: "355"; value: "18.3417"; }
+ ListElement{ radius: "35"; angle: "360"; value: "22.6995"; }
+ ListElement{ radius: "40"; angle: "0"; value: "15.4508"; }
+ ListElement{ radius: "40"; angle: "5"; value: "19.8086"; }
+ ListElement{ radius: "40"; angle: "10"; value: "24.1333"; }
+ ListElement{ radius: "40"; angle: "15"; value: "28.3918"; }
+ ListElement{ radius: "40"; angle: "20"; value: "32.5519"; }
+ ListElement{ radius: "40"; angle: "25"; value: "36.5818"; }
+ ListElement{ radius: "40"; angle: "30"; value: "40.4508"; }
+ ListElement{ radius: "40"; angle: "35"; value: "44.1297"; }
+ ListElement{ radius: "40"; angle: "40"; value: "47.5902"; }
+ ListElement{ radius: "40"; angle: "45"; value: "50.8062"; }
+ ListElement{ radius: "40"; angle: "50"; value: "53.7531"; }
+ ListElement{ radius: "40"; angle: "55"; value: "56.4085"; }
+ ListElement{ radius: "40"; angle: "60"; value: "58.7521"; }
+ ListElement{ radius: "40"; angle: "65"; value: "60.7662"; }
+ ListElement{ radius: "40"; angle: "70"; value: "62.4355"; }
+ ListElement{ radius: "40"; angle: "75"; value: "63.7471"; }
+ ListElement{ radius: "40"; angle: "80"; value: "64.6912"; }
+ ListElement{ radius: "40"; angle: "85"; value: "65.2606"; }
+ ListElement{ radius: "40"; angle: "90"; value: "65.4508"; }
+ ListElement{ radius: "40"; angle: "95"; value: "65.2606"; }
+ ListElement{ radius: "40"; angle: "100"; value: "64.6912"; }
+ ListElement{ radius: "40"; angle: "105"; value: "63.7471"; }
+ ListElement{ radius: "40"; angle: "110"; value: "62.4355"; }
+ ListElement{ radius: "40"; angle: "115"; value: "60.7662"; }
+ ListElement{ radius: "40"; angle: "120"; value: "58.7521"; }
+ ListElement{ radius: "40"; angle: "125"; value: "56.4085"; }
+ ListElement{ radius: "40"; angle: "130"; value: "53.7531"; }
+ ListElement{ radius: "40"; angle: "135"; value: "50.8062"; }
+ ListElement{ radius: "40"; angle: "140"; value: "47.5902"; }
+ ListElement{ radius: "40"; angle: "145"; value: "44.1297"; }
+ ListElement{ radius: "40"; angle: "150"; value: "40.4508"; }
+ ListElement{ radius: "40"; angle: "155"; value: "36.5818"; }
+ ListElement{ radius: "40"; angle: "160"; value: "32.5519"; }
+ ListElement{ radius: "40"; angle: "165"; value: "28.3918"; }
+ ListElement{ radius: "40"; angle: "170"; value: "24.1333"; }
+ ListElement{ radius: "40"; angle: "175"; value: "19.8086"; }
+ ListElement{ radius: "40"; angle: "180"; value: "15.4508"; }
+ ListElement{ radius: "40"; angle: "185"; value: "11.0931"; }
+ ListElement{ radius: "40"; angle: "190"; value: "6.76844"; }
+ ListElement{ radius: "40"; angle: "195"; value: "2.5099"; }
+ ListElement{ radius: "40"; angle: "200"; value: "-1.65016"; }
+ ListElement{ radius: "40"; angle: "205"; value: "-5.68006"; }
+ ListElement{ radius: "40"; angle: "210"; value: "-9.54915"; }
+ ListElement{ radius: "40"; angle: "215"; value: "-13.228"; }
+ ListElement{ radius: "40"; angle: "220"; value: "-16.6885"; }
+ ListElement{ radius: "40"; angle: "225"; value: "-19.9045"; }
+ ListElement{ radius: "40"; angle: "230"; value: "-22.8514"; }
+ ListElement{ radius: "40"; angle: "235"; value: "-25.5068"; }
+ ListElement{ radius: "40"; angle: "240"; value: "-27.8504"; }
+ ListElement{ radius: "40"; angle: "245"; value: "-29.8645"; }
+ ListElement{ radius: "40"; angle: "250"; value: "-31.5338"; }
+ ListElement{ radius: "40"; angle: "255"; value: "-32.8454"; }
+ ListElement{ radius: "40"; angle: "260"; value: "-33.7895"; }
+ ListElement{ radius: "40"; angle: "265"; value: "-34.3589"; }
+ ListElement{ radius: "40"; angle: "270"; value: "-34.5492"; }
+ ListElement{ radius: "40"; angle: "275"; value: "-34.3589"; }
+ ListElement{ radius: "40"; angle: "280"; value: "-33.7895"; }
+ ListElement{ radius: "40"; angle: "285"; value: "-32.8454"; }
+ ListElement{ radius: "40"; angle: "290"; value: "-31.5338"; }
+ ListElement{ radius: "40"; angle: "295"; value: "-29.8645"; }
+ ListElement{ radius: "40"; angle: "300"; value: "-27.8504"; }
+ ListElement{ radius: "40"; angle: "305"; value: "-25.5068"; }
+ ListElement{ radius: "40"; angle: "310"; value: "-22.8514"; }
+ ListElement{ radius: "40"; angle: "315"; value: "-19.9045"; }
+ ListElement{ radius: "40"; angle: "320"; value: "-16.6885"; }
+ ListElement{ radius: "40"; angle: "325"; value: "-13.228"; }
+ ListElement{ radius: "40"; angle: "330"; value: "-9.54915"; }
+ ListElement{ radius: "40"; angle: "335"; value: "-5.68006"; }
+ ListElement{ radius: "40"; angle: "340"; value: "-1.65016"; }
+ ListElement{ radius: "40"; angle: "345"; value: "2.5099"; }
+ ListElement{ radius: "40"; angle: "350"; value: "6.76844"; }
+ ListElement{ radius: "40"; angle: "355"; value: "11.0931"; }
+ ListElement{ radius: "40"; angle: "360"; value: "15.4508"; }
+ ListElement{ radius: "45"; angle: "0"; value: "7.82172"; }
+ ListElement{ radius: "45"; angle: "5"; value: "12.1795"; }
+ ListElement{ radius: "45"; angle: "10"; value: "16.5041"; }
+ ListElement{ radius: "45"; angle: "15"; value: "20.7627"; }
+ ListElement{ radius: "45"; angle: "20"; value: "24.9227"; }
+ ListElement{ radius: "45"; angle: "25"; value: "28.9526"; }
+ ListElement{ radius: "45"; angle: "30"; value: "32.8217"; }
+ ListElement{ radius: "45"; angle: "35"; value: "36.5005"; }
+ ListElement{ radius: "45"; angle: "40"; value: "39.9611"; }
+ ListElement{ radius: "45"; angle: "45"; value: "43.1771"; }
+ ListElement{ radius: "45"; angle: "50"; value: "46.1239"; }
+ ListElement{ radius: "45"; angle: "55"; value: "48.7793"; }
+ ListElement{ radius: "45"; angle: "60"; value: "51.123"; }
+ ListElement{ radius: "45"; angle: "65"; value: "53.1371"; }
+ ListElement{ radius: "45"; angle: "70"; value: "54.8064"; }
+ ListElement{ radius: "45"; angle: "75"; value: "56.118"; }
+ ListElement{ radius: "45"; angle: "80"; value: "57.0621"; }
+ ListElement{ radius: "45"; angle: "85"; value: "57.6315"; }
+ ListElement{ radius: "45"; angle: "90"; value: "57.8217"; }
+ ListElement{ radius: "45"; angle: "95"; value: "57.6315"; }
+ ListElement{ radius: "45"; angle: "100"; value: "57.0621"; }
+ ListElement{ radius: "45"; angle: "105"; value: "56.118"; }
+ ListElement{ radius: "45"; angle: "110"; value: "54.8064"; }
+ ListElement{ radius: "45"; angle: "115"; value: "53.1371"; }
+ ListElement{ radius: "45"; angle: "120"; value: "51.123"; }
+ ListElement{ radius: "45"; angle: "125"; value: "48.7793"; }
+ ListElement{ radius: "45"; angle: "130"; value: "46.1239"; }
+ ListElement{ radius: "45"; angle: "135"; value: "43.1771"; }
+ ListElement{ radius: "45"; angle: "140"; value: "39.9611"; }
+ ListElement{ radius: "45"; angle: "145"; value: "36.5005"; }
+ ListElement{ radius: "45"; angle: "150"; value: "32.8217"; }
+ ListElement{ radius: "45"; angle: "155"; value: "28.9526"; }
+ ListElement{ radius: "45"; angle: "160"; value: "24.9227"; }
+ ListElement{ radius: "45"; angle: "165"; value: "20.7627"; }
+ ListElement{ radius: "45"; angle: "170"; value: "16.5041"; }
+ ListElement{ radius: "45"; angle: "175"; value: "12.1795"; }
+ ListElement{ radius: "45"; angle: "180"; value: "7.82172"; }
+ ListElement{ radius: "45"; angle: "185"; value: "3.46394"; }
+ ListElement{ radius: "45"; angle: "190"; value: "-0.860686"; }
+ ListElement{ radius: "45"; angle: "195"; value: "-5.11923"; }
+ ListElement{ radius: "45"; angle: "200"; value: "-9.27928"; }
+ ListElement{ radius: "45"; angle: "205"; value: "-13.3092"; }
+ ListElement{ radius: "45"; angle: "210"; value: "-17.1783"; }
+ ListElement{ radius: "45"; angle: "215"; value: "-20.8571"; }
+ ListElement{ radius: "45"; angle: "220"; value: "-24.3177"; }
+ ListElement{ radius: "45"; angle: "225"; value: "-27.5336"; }
+ ListElement{ radius: "45"; angle: "230"; value: "-30.4805"; }
+ ListElement{ radius: "45"; angle: "235"; value: "-33.1359"; }
+ ListElement{ radius: "45"; angle: "240"; value: "-35.4795"; }
+ ListElement{ radius: "45"; angle: "245"; value: "-37.4937"; }
+ ListElement{ radius: "45"; angle: "250"; value: "-39.1629"; }
+ ListElement{ radius: "45"; angle: "255"; value: "-40.4746"; }
+ ListElement{ radius: "45"; angle: "260"; value: "-41.4187"; }
+ ListElement{ radius: "45"; angle: "265"; value: "-41.988"; }
+ ListElement{ radius: "45"; angle: "270"; value: "-42.1783"; }
+ ListElement{ radius: "45"; angle: "275"; value: "-41.988"; }
+ ListElement{ radius: "45"; angle: "280"; value: "-41.4187"; }
+ ListElement{ radius: "45"; angle: "285"; value: "-40.4746"; }
+ ListElement{ radius: "45"; angle: "290"; value: "-39.1629"; }
+ ListElement{ radius: "45"; angle: "295"; value: "-37.4937"; }
+ ListElement{ radius: "45"; angle: "300"; value: "-35.4795"; }
+ ListElement{ radius: "45"; angle: "305"; value: "-33.1359"; }
+ ListElement{ radius: "45"; angle: "310"; value: "-30.4805"; }
+ ListElement{ radius: "45"; angle: "315"; value: "-27.5336"; }
+ ListElement{ radius: "45"; angle: "320"; value: "-24.3177"; }
+ ListElement{ radius: "45"; angle: "325"; value: "-20.8571"; }
+ ListElement{ radius: "45"; angle: "330"; value: "-17.1783"; }
+ ListElement{ radius: "45"; angle: "335"; value: "-13.3092"; }
+ ListElement{ radius: "45"; angle: "340"; value: "-9.27928"; }
+ ListElement{ radius: "45"; angle: "345"; value: "-5.11923"; }
+ ListElement{ radius: "45"; angle: "350"; value: "-0.860686"; }
+ ListElement{ radius: "45"; angle: "355"; value: "3.46394"; }
+ ListElement{ radius: "45"; angle: "360"; value: "7.82172"; }
+ ListElement{ radius: "50"; angle: "0"; value: "3.06162e-15"; }
+ ListElement{ radius: "50"; angle: "5"; value: "4.35779"; }
+ ListElement{ radius: "50"; angle: "10"; value: "8.68241"; }
+ ListElement{ radius: "50"; angle: "15"; value: "12.941"; }
+ ListElement{ radius: "50"; angle: "20"; value: "17.101"; }
+ ListElement{ radius: "50"; angle: "25"; value: "21.1309"; }
+ ListElement{ radius: "50"; angle: "30"; value: "25"; }
+ ListElement{ radius: "50"; angle: "35"; value: "28.6788"; }
+ ListElement{ radius: "50"; angle: "40"; value: "32.1394"; }
+ ListElement{ radius: "50"; angle: "45"; value: "35.3553"; }
+ ListElement{ radius: "50"; angle: "50"; value: "38.3022"; }
+ ListElement{ radius: "50"; angle: "55"; value: "40.9576"; }
+ ListElement{ radius: "50"; angle: "60"; value: "43.3013"; }
+ ListElement{ radius: "50"; angle: "65"; value: "45.3154"; }
+ ListElement{ radius: "50"; angle: "70"; value: "46.9846"; }
+ ListElement{ radius: "50"; angle: "75"; value: "48.2963"; }
+ ListElement{ radius: "50"; angle: "80"; value: "49.2404"; }
+ ListElement{ radius: "50"; angle: "85"; value: "49.8097"; }
+ ListElement{ radius: "50"; angle: "90"; value: "50"; }
+ ListElement{ radius: "50"; angle: "95"; value: "49.8097"; }
+ ListElement{ radius: "50"; angle: "100"; value: "49.2404"; }
+ ListElement{ radius: "50"; angle: "105"; value: "48.2963"; }
+ ListElement{ radius: "50"; angle: "110"; value: "46.9846"; }
+ ListElement{ radius: "50"; angle: "115"; value: "45.3154"; }
+ ListElement{ radius: "50"; angle: "120"; value: "43.3013"; }
+ ListElement{ radius: "50"; angle: "125"; value: "40.9576"; }
+ ListElement{ radius: "50"; angle: "130"; value: "38.3022"; }
+ ListElement{ radius: "50"; angle: "135"; value: "35.3553"; }
+ ListElement{ radius: "50"; angle: "140"; value: "32.1394"; }
+ ListElement{ radius: "50"; angle: "145"; value: "28.6788"; }
+ ListElement{ radius: "50"; angle: "150"; value: "25"; }
+ ListElement{ radius: "50"; angle: "155"; value: "21.1309"; }
+ ListElement{ radius: "50"; angle: "160"; value: "17.101"; }
+ ListElement{ radius: "50"; angle: "165"; value: "12.941"; }
+ ListElement{ radius: "50"; angle: "170"; value: "8.68241"; }
+ ListElement{ radius: "50"; angle: "175"; value: "4.35779"; }
+ ListElement{ radius: "50"; angle: "180"; value: "9.18485e-15"; }
+ ListElement{ radius: "50"; angle: "185"; value: "-4.35779"; }
+ ListElement{ radius: "50"; angle: "190"; value: "-8.68241"; }
+ ListElement{ radius: "50"; angle: "195"; value: "-12.941"; }
+ ListElement{ radius: "50"; angle: "200"; value: "-17.101"; }
+ ListElement{ radius: "50"; angle: "205"; value: "-21.1309"; }
+ ListElement{ radius: "50"; angle: "210"; value: "-25"; }
+ ListElement{ radius: "50"; angle: "215"; value: "-28.6788"; }
+ ListElement{ radius: "50"; angle: "220"; value: "-32.1394"; }
+ ListElement{ radius: "50"; angle: "225"; value: "-35.3553"; }
+ ListElement{ radius: "50"; angle: "230"; value: "-38.3022"; }
+ ListElement{ radius: "50"; angle: "235"; value: "-40.9576"; }
+ ListElement{ radius: "50"; angle: "240"; value: "-43.3013"; }
+ ListElement{ radius: "50"; angle: "245"; value: "-45.3154"; }
+ ListElement{ radius: "50"; angle: "250"; value: "-46.9846"; }
+ ListElement{ radius: "50"; angle: "255"; value: "-48.2963"; }
+ ListElement{ radius: "50"; angle: "260"; value: "-49.2404"; }
+ ListElement{ radius: "50"; angle: "265"; value: "-49.8097"; }
+ ListElement{ radius: "50"; angle: "270"; value: "-50"; }
+ ListElement{ radius: "50"; angle: "275"; value: "-49.8097"; }
+ ListElement{ radius: "50"; angle: "280"; value: "-49.2404"; }
+ ListElement{ radius: "50"; angle: "285"; value: "-48.2963"; }
+ ListElement{ radius: "50"; angle: "290"; value: "-46.9846"; }
+ ListElement{ radius: "50"; angle: "295"; value: "-45.3154"; }
+ ListElement{ radius: "50"; angle: "300"; value: "-43.3013"; }
+ ListElement{ radius: "50"; angle: "305"; value: "-40.9576"; }
+ ListElement{ radius: "50"; angle: "310"; value: "-38.3022"; }
+ ListElement{ radius: "50"; angle: "315"; value: "-35.3553"; }
+ ListElement{ radius: "50"; angle: "320"; value: "-32.1394"; }
+ ListElement{ radius: "50"; angle: "325"; value: "-28.6788"; }
+ ListElement{ radius: "50"; angle: "330"; value: "-25"; }
+ ListElement{ radius: "50"; angle: "335"; value: "-21.1309"; }
+ ListElement{ radius: "50"; angle: "340"; value: "-17.101"; }
+ ListElement{ radius: "50"; angle: "345"; value: "-12.941"; }
+ ListElement{ radius: "50"; angle: "350"; value: "-8.68241"; }
+ ListElement{ radius: "50"; angle: "355"; value: "-4.35779"; }
+ ListElement{ radius: "50"; angle: "360"; value: "-9.18485e-15"; }
+ ListElement{ radius: "55"; angle: "0"; value: "-7.82172"; }
+ ListElement{ radius: "55"; angle: "5"; value: "-3.46394"; }
+ ListElement{ radius: "55"; angle: "10"; value: "0.860686"; }
+ ListElement{ radius: "55"; angle: "15"; value: "5.11923"; }
+ ListElement{ radius: "55"; angle: "20"; value: "9.27928"; }
+ ListElement{ radius: "55"; angle: "25"; value: "13.3092"; }
+ ListElement{ radius: "55"; angle: "30"; value: "17.1783"; }
+ ListElement{ radius: "55"; angle: "35"; value: "20.8571"; }
+ ListElement{ radius: "55"; angle: "40"; value: "24.3177"; }
+ ListElement{ radius: "55"; angle: "45"; value: "27.5336"; }
+ ListElement{ radius: "55"; angle: "50"; value: "30.4805"; }
+ ListElement{ radius: "55"; angle: "55"; value: "33.1359"; }
+ ListElement{ radius: "55"; angle: "60"; value: "35.4795"; }
+ ListElement{ radius: "55"; angle: "65"; value: "37.4937"; }
+ ListElement{ radius: "55"; angle: "70"; value: "39.1629"; }
+ ListElement{ radius: "55"; angle: "75"; value: "40.4746"; }
+ ListElement{ radius: "55"; angle: "80"; value: "41.4187"; }
+ ListElement{ radius: "55"; angle: "85"; value: "41.988"; }
+ ListElement{ radius: "55"; angle: "90"; value: "42.1783"; }
+ ListElement{ radius: "55"; angle: "95"; value: "41.988"; }
+ ListElement{ radius: "55"; angle: "100"; value: "41.4187"; }
+ ListElement{ radius: "55"; angle: "105"; value: "40.4746"; }
+ ListElement{ radius: "55"; angle: "110"; value: "39.1629"; }
+ ListElement{ radius: "55"; angle: "115"; value: "37.4937"; }
+ ListElement{ radius: "55"; angle: "120"; value: "35.4795"; }
+ ListElement{ radius: "55"; angle: "125"; value: "33.1359"; }
+ ListElement{ radius: "55"; angle: "130"; value: "30.4805"; }
+ ListElement{ radius: "55"; angle: "135"; value: "27.5336"; }
+ ListElement{ radius: "55"; angle: "140"; value: "24.3177"; }
+ ListElement{ radius: "55"; angle: "145"; value: "20.8571"; }
+ ListElement{ radius: "55"; angle: "150"; value: "17.1783"; }
+ ListElement{ radius: "55"; angle: "155"; value: "13.3092"; }
+ ListElement{ radius: "55"; angle: "160"; value: "9.27928"; }
+ ListElement{ radius: "55"; angle: "165"; value: "5.11923"; }
+ ListElement{ radius: "55"; angle: "170"; value: "0.860686"; }
+ ListElement{ radius: "55"; angle: "175"; value: "-3.46394"; }
+ ListElement{ radius: "55"; angle: "180"; value: "-7.82172"; }
+ ListElement{ radius: "55"; angle: "185"; value: "-12.1795"; }
+ ListElement{ radius: "55"; angle: "190"; value: "-16.5041"; }
+ ListElement{ radius: "55"; angle: "195"; value: "-20.7627"; }
+ ListElement{ radius: "55"; angle: "200"; value: "-24.9227"; }
+ ListElement{ radius: "55"; angle: "205"; value: "-28.9526"; }
+ ListElement{ radius: "55"; angle: "210"; value: "-32.8217"; }
+ ListElement{ radius: "55"; angle: "215"; value: "-36.5005"; }
+ ListElement{ radius: "55"; angle: "220"; value: "-39.9611"; }
+ ListElement{ radius: "55"; angle: "225"; value: "-43.1771"; }
+ ListElement{ radius: "55"; angle: "230"; value: "-46.1239"; }
+ ListElement{ radius: "55"; angle: "235"; value: "-48.7793"; }
+ ListElement{ radius: "55"; angle: "240"; value: "-51.123"; }
+ ListElement{ radius: "55"; angle: "245"; value: "-53.1371"; }
+ ListElement{ radius: "55"; angle: "250"; value: "-54.8064"; }
+ ListElement{ radius: "55"; angle: "255"; value: "-56.118"; }
+ ListElement{ radius: "55"; angle: "260"; value: "-57.0621"; }
+ ListElement{ radius: "55"; angle: "265"; value: "-57.6315"; }
+ ListElement{ radius: "55"; angle: "270"; value: "-57.8217"; }
+ ListElement{ radius: "55"; angle: "275"; value: "-57.6315"; }
+ ListElement{ radius: "55"; angle: "280"; value: "-57.0621"; }
+ ListElement{ radius: "55"; angle: "285"; value: "-56.118"; }
+ ListElement{ radius: "55"; angle: "290"; value: "-54.8064"; }
+ ListElement{ radius: "55"; angle: "295"; value: "-53.1371"; }
+ ListElement{ radius: "55"; angle: "300"; value: "-51.123"; }
+ ListElement{ radius: "55"; angle: "305"; value: "-48.7793"; }
+ ListElement{ radius: "55"; angle: "310"; value: "-46.1239"; }
+ ListElement{ radius: "55"; angle: "315"; value: "-43.1771"; }
+ ListElement{ radius: "55"; angle: "320"; value: "-39.9611"; }
+ ListElement{ radius: "55"; angle: "325"; value: "-36.5005"; }
+ ListElement{ radius: "55"; angle: "330"; value: "-32.8217"; }
+ ListElement{ radius: "55"; angle: "335"; value: "-28.9526"; }
+ ListElement{ radius: "55"; angle: "340"; value: "-24.9227"; }
+ ListElement{ radius: "55"; angle: "345"; value: "-20.7627"; }
+ ListElement{ radius: "55"; angle: "350"; value: "-16.5041"; }
+ ListElement{ radius: "55"; angle: "355"; value: "-12.1795"; }
+ ListElement{ radius: "55"; angle: "360"; value: "-7.82172"; }
+ ListElement{ radius: "60"; angle: "0"; value: "-15.4508"; }
+ ListElement{ radius: "60"; angle: "5"; value: "-11.0931"; }
+ ListElement{ radius: "60"; angle: "10"; value: "-6.76844"; }
+ ListElement{ radius: "60"; angle: "15"; value: "-2.5099"; }
+ ListElement{ radius: "60"; angle: "20"; value: "1.65016"; }
+ ListElement{ radius: "60"; angle: "25"; value: "5.68006"; }
+ ListElement{ radius: "60"; angle: "30"; value: "9.54915"; }
+ ListElement{ radius: "60"; angle: "35"; value: "13.228"; }
+ ListElement{ radius: "60"; angle: "40"; value: "16.6885"; }
+ ListElement{ radius: "60"; angle: "45"; value: "19.9045"; }
+ ListElement{ radius: "60"; angle: "50"; value: "22.8514"; }
+ ListElement{ radius: "60"; angle: "55"; value: "25.5068"; }
+ ListElement{ radius: "60"; angle: "60"; value: "27.8504"; }
+ ListElement{ radius: "60"; angle: "65"; value: "29.8645"; }
+ ListElement{ radius: "60"; angle: "70"; value: "31.5338"; }
+ ListElement{ radius: "60"; angle: "75"; value: "32.8454"; }
+ ListElement{ radius: "60"; angle: "80"; value: "33.7895"; }
+ ListElement{ radius: "60"; angle: "85"; value: "34.3589"; }
+ ListElement{ radius: "60"; angle: "90"; value: "34.5492"; }
+ ListElement{ radius: "60"; angle: "95"; value: "34.3589"; }
+ ListElement{ radius: "60"; angle: "100"; value: "33.7895"; }
+ ListElement{ radius: "60"; angle: "105"; value: "32.8454"; }
+ ListElement{ radius: "60"; angle: "110"; value: "31.5338"; }
+ ListElement{ radius: "60"; angle: "115"; value: "29.8645"; }
+ ListElement{ radius: "60"; angle: "120"; value: "27.8504"; }
+ ListElement{ radius: "60"; angle: "125"; value: "25.5068"; }
+ ListElement{ radius: "60"; angle: "130"; value: "22.8514"; }
+ ListElement{ radius: "60"; angle: "135"; value: "19.9045"; }
+ ListElement{ radius: "60"; angle: "140"; value: "16.6885"; }
+ ListElement{ radius: "60"; angle: "145"; value: "13.228"; }
+ ListElement{ radius: "60"; angle: "150"; value: "9.54915"; }
+ ListElement{ radius: "60"; angle: "155"; value: "5.68006"; }
+ ListElement{ radius: "60"; angle: "160"; value: "1.65016"; }
+ ListElement{ radius: "60"; angle: "165"; value: "-2.5099"; }
+ ListElement{ radius: "60"; angle: "170"; value: "-6.76844"; }
+ ListElement{ radius: "60"; angle: "175"; value: "-11.0931"; }
+ ListElement{ radius: "60"; angle: "180"; value: "-15.4508"; }
+ ListElement{ radius: "60"; angle: "185"; value: "-19.8086"; }
+ ListElement{ radius: "60"; angle: "190"; value: "-24.1333"; }
+ ListElement{ radius: "60"; angle: "195"; value: "-28.3918"; }
+ ListElement{ radius: "60"; angle: "200"; value: "-32.5519"; }
+ ListElement{ radius: "60"; angle: "205"; value: "-36.5818"; }
+ ListElement{ radius: "60"; angle: "210"; value: "-40.4508"; }
+ ListElement{ radius: "60"; angle: "215"; value: "-44.1297"; }
+ ListElement{ radius: "60"; angle: "220"; value: "-47.5902"; }
+ ListElement{ radius: "60"; angle: "225"; value: "-50.8062"; }
+ ListElement{ radius: "60"; angle: "230"; value: "-53.7531"; }
+ ListElement{ radius: "60"; angle: "235"; value: "-56.4085"; }
+ ListElement{ radius: "60"; angle: "240"; value: "-58.7521"; }
+ ListElement{ radius: "60"; angle: "245"; value: "-60.7662"; }
+ ListElement{ radius: "60"; angle: "250"; value: "-62.4355"; }
+ ListElement{ radius: "60"; angle: "255"; value: "-63.7471"; }
+ ListElement{ radius: "60"; angle: "260"; value: "-64.6912"; }
+ ListElement{ radius: "60"; angle: "265"; value: "-65.2606"; }
+ ListElement{ radius: "60"; angle: "270"; value: "-65.4508"; }
+ ListElement{ radius: "60"; angle: "275"; value: "-65.2606"; }
+ ListElement{ radius: "60"; angle: "280"; value: "-64.6912"; }
+ ListElement{ radius: "60"; angle: "285"; value: "-63.7471"; }
+ ListElement{ radius: "60"; angle: "290"; value: "-62.4355"; }
+ ListElement{ radius: "60"; angle: "295"; value: "-60.7662"; }
+ ListElement{ radius: "60"; angle: "300"; value: "-58.7521"; }
+ ListElement{ radius: "60"; angle: "305"; value: "-56.4085"; }
+ ListElement{ radius: "60"; angle: "310"; value: "-53.7531"; }
+ ListElement{ radius: "60"; angle: "315"; value: "-50.8062"; }
+ ListElement{ radius: "60"; angle: "320"; value: "-47.5902"; }
+ ListElement{ radius: "60"; angle: "325"; value: "-44.1297"; }
+ ListElement{ radius: "60"; angle: "330"; value: "-40.4508"; }
+ ListElement{ radius: "60"; angle: "335"; value: "-36.5818"; }
+ ListElement{ radius: "60"; angle: "340"; value: "-32.5519"; }
+ ListElement{ radius: "60"; angle: "345"; value: "-28.3918"; }
+ ListElement{ radius: "60"; angle: "350"; value: "-24.1333"; }
+ ListElement{ radius: "60"; angle: "355"; value: "-19.8086"; }
+ ListElement{ radius: "60"; angle: "360"; value: "-15.4508"; }
+ ListElement{ radius: "65"; angle: "0"; value: "-22.6995"; }
+ ListElement{ radius: "65"; angle: "5"; value: "-18.3417"; }
+ ListElement{ radius: "65"; angle: "10"; value: "-14.0171"; }
+ ListElement{ radius: "65"; angle: "15"; value: "-9.75857"; }
+ ListElement{ radius: "65"; angle: "20"; value: "-5.59852"; }
+ ListElement{ radius: "65"; angle: "25"; value: "-1.56861"; }
+ ListElement{ radius: "65"; angle: "30"; value: "2.30048"; }
+ ListElement{ radius: "65"; angle: "35"; value: "5.9793"; }
+ ListElement{ radius: "65"; angle: "40"; value: "9.43986"; }
+ ListElement{ radius: "65"; angle: "45"; value: "12.6558"; }
+ ListElement{ radius: "65"; angle: "50"; value: "15.6027"; }
+ ListElement{ radius: "65"; angle: "55"; value: "18.2581"; }
+ ListElement{ radius: "65"; angle: "60"; value: "20.6017"; }
+ ListElement{ radius: "65"; angle: "65"; value: "22.6159"; }
+ ListElement{ radius: "65"; angle: "70"; value: "24.2851"; }
+ ListElement{ radius: "65"; angle: "75"; value: "25.5968"; }
+ ListElement{ radius: "65"; angle: "80"; value: "26.5409"; }
+ ListElement{ radius: "65"; angle: "85"; value: "27.1102"; }
+ ListElement{ radius: "65"; angle: "90"; value: "27.3005"; }
+ ListElement{ radius: "65"; angle: "95"; value: "27.1102"; }
+ ListElement{ radius: "65"; angle: "100"; value: "26.5409"; }
+ ListElement{ radius: "65"; angle: "105"; value: "25.5968"; }
+ ListElement{ radius: "65"; angle: "110"; value: "24.2851"; }
+ ListElement{ radius: "65"; angle: "115"; value: "22.6159"; }
+ ListElement{ radius: "65"; angle: "120"; value: "20.6017"; }
+ ListElement{ radius: "65"; angle: "125"; value: "18.2581"; }
+ ListElement{ radius: "65"; angle: "130"; value: "15.6027"; }
+ ListElement{ radius: "65"; angle: "135"; value: "12.6558"; }
+ ListElement{ radius: "65"; angle: "140"; value: "9.43986"; }
+ ListElement{ radius: "65"; angle: "145"; value: "5.9793"; }
+ ListElement{ radius: "65"; angle: "150"; value: "2.30048"; }
+ ListElement{ radius: "65"; angle: "155"; value: "-1.56861"; }
+ ListElement{ radius: "65"; angle: "160"; value: "-5.59852"; }
+ ListElement{ radius: "65"; angle: "165"; value: "-9.75857"; }
+ ListElement{ radius: "65"; angle: "170"; value: "-14.0171"; }
+ ListElement{ radius: "65"; angle: "175"; value: "-18.3417"; }
+ ListElement{ radius: "65"; angle: "180"; value: "-22.6995"; }
+ ListElement{ radius: "65"; angle: "185"; value: "-27.0573"; }
+ ListElement{ radius: "65"; angle: "190"; value: "-31.3819"; }
+ ListElement{ radius: "65"; angle: "195"; value: "-35.6405"; }
+ ListElement{ radius: "65"; angle: "200"; value: "-39.8005"; }
+ ListElement{ radius: "65"; angle: "205"; value: "-43.8304"; }
+ ListElement{ radius: "65"; angle: "210"; value: "-47.6995"; }
+ ListElement{ radius: "65"; angle: "215"; value: "-51.3783"; }
+ ListElement{ radius: "65"; angle: "220"; value: "-54.8389"; }
+ ListElement{ radius: "65"; angle: "225"; value: "-58.0549"; }
+ ListElement{ radius: "65"; angle: "230"; value: "-61.0017"; }
+ ListElement{ radius: "65"; angle: "235"; value: "-63.6571"; }
+ ListElement{ radius: "65"; angle: "240"; value: "-66.0008"; }
+ ListElement{ radius: "65"; angle: "245"; value: "-68.0149"; }
+ ListElement{ radius: "65"; angle: "250"; value: "-69.6842"; }
+ ListElement{ radius: "65"; angle: "255"; value: "-70.9958"; }
+ ListElement{ radius: "65"; angle: "260"; value: "-71.9399"; }
+ ListElement{ radius: "65"; angle: "265"; value: "-72.5093"; }
+ ListElement{ radius: "65"; angle: "270"; value: "-72.6995"; }
+ ListElement{ radius: "65"; angle: "275"; value: "-72.5093"; }
+ ListElement{ radius: "65"; angle: "280"; value: "-71.9399"; }
+ ListElement{ radius: "65"; angle: "285"; value: "-70.9958"; }
+ ListElement{ radius: "65"; angle: "290"; value: "-69.6842"; }
+ ListElement{ radius: "65"; angle: "295"; value: "-68.0149"; }
+ ListElement{ radius: "65"; angle: "300"; value: "-66.0008"; }
+ ListElement{ radius: "65"; angle: "305"; value: "-63.6571"; }
+ ListElement{ radius: "65"; angle: "310"; value: "-61.0017"; }
+ ListElement{ radius: "65"; angle: "315"; value: "-58.0549"; }
+ ListElement{ radius: "65"; angle: "320"; value: "-54.8389"; }
+ ListElement{ radius: "65"; angle: "325"; value: "-51.3783"; }
+ ListElement{ radius: "65"; angle: "330"; value: "-47.6995"; }
+ ListElement{ radius: "65"; angle: "335"; value: "-43.8304"; }
+ ListElement{ radius: "65"; angle: "340"; value: "-39.8005"; }
+ ListElement{ radius: "65"; angle: "345"; value: "-35.6405"; }
+ ListElement{ radius: "65"; angle: "350"; value: "-31.3819"; }
+ ListElement{ radius: "65"; angle: "355"; value: "-27.0573"; }
+ ListElement{ radius: "65"; angle: "360"; value: "-22.6995"; }
+ ListElement{ radius: "70"; angle: "0"; value: "-29.3893"; }
+ ListElement{ radius: "70"; angle: "5"; value: "-25.0315"; }
+ ListElement{ radius: "70"; angle: "10"; value: "-20.7069"; }
+ ListElement{ radius: "70"; angle: "15"; value: "-16.4483"; }
+ ListElement{ radius: "70"; angle: "20"; value: "-12.2883"; }
+ ListElement{ radius: "70"; angle: "25"; value: "-8.25835"; }
+ ListElement{ radius: "70"; angle: "30"; value: "-4.38926"; }
+ ListElement{ radius: "70"; angle: "35"; value: "-0.710441"; }
+ ListElement{ radius: "70"; angle: "40"; value: "2.75012"; }
+ ListElement{ radius: "70"; angle: "45"; value: "5.96608"; }
+ ListElement{ radius: "70"; angle: "50"; value: "8.91296"; }
+ ListElement{ radius: "70"; angle: "55"; value: "11.5683"; }
+ ListElement{ radius: "70"; angle: "60"; value: "13.912"; }
+ ListElement{ radius: "70"; angle: "65"; value: "15.9261"; }
+ ListElement{ radius: "70"; angle: "70"; value: "17.5954"; }
+ ListElement{ radius: "70"; angle: "75"; value: "18.907"; }
+ ListElement{ radius: "70"; angle: "80"; value: "19.8511"; }
+ ListElement{ radius: "70"; angle: "85"; value: "20.4205"; }
+ ListElement{ radius: "70"; angle: "90"; value: "20.6107"; }
+ ListElement{ radius: "70"; angle: "95"; value: "20.4205"; }
+ ListElement{ radius: "70"; angle: "100"; value: "19.8511"; }
+ ListElement{ radius: "70"; angle: "105"; value: "18.907"; }
+ ListElement{ radius: "70"; angle: "110"; value: "17.5954"; }
+ ListElement{ radius: "70"; angle: "115"; value: "15.9261"; }
+ ListElement{ radius: "70"; angle: "120"; value: "13.912"; }
+ ListElement{ radius: "70"; angle: "125"; value: "11.5683"; }
+ ListElement{ radius: "70"; angle: "130"; value: "8.91296"; }
+ ListElement{ radius: "70"; angle: "135"; value: "5.96608"; }
+ ListElement{ radius: "70"; angle: "140"; value: "2.75012"; }
+ ListElement{ radius: "70"; angle: "145"; value: "-0.710441"; }
+ ListElement{ radius: "70"; angle: "150"; value: "-4.38926"; }
+ ListElement{ radius: "70"; angle: "155"; value: "-8.25835"; }
+ ListElement{ radius: "70"; angle: "160"; value: "-12.2883"; }
+ ListElement{ radius: "70"; angle: "165"; value: "-16.4483"; }
+ ListElement{ radius: "70"; angle: "170"; value: "-20.7069"; }
+ ListElement{ radius: "70"; angle: "175"; value: "-25.0315"; }
+ ListElement{ radius: "70"; angle: "180"; value: "-29.3893"; }
+ ListElement{ radius: "70"; angle: "185"; value: "-33.747"; }
+ ListElement{ radius: "70"; angle: "190"; value: "-38.0717"; }
+ ListElement{ radius: "70"; angle: "195"; value: "-42.3302"; }
+ ListElement{ radius: "70"; angle: "200"; value: "-46.4903"; }
+ ListElement{ radius: "70"; angle: "205"; value: "-50.5202"; }
+ ListElement{ radius: "70"; angle: "210"; value: "-54.3893"; }
+ ListElement{ radius: "70"; angle: "215"; value: "-58.0681"; }
+ ListElement{ radius: "70"; angle: "220"; value: "-61.5286"; }
+ ListElement{ radius: "70"; angle: "225"; value: "-64.7446"; }
+ ListElement{ radius: "70"; angle: "230"; value: "-67.6915"; }
+ ListElement{ radius: "70"; angle: "235"; value: "-70.3469"; }
+ ListElement{ radius: "70"; angle: "240"; value: "-72.6905"; }
+ ListElement{ radius: "70"; angle: "245"; value: "-74.7047"; }
+ ListElement{ radius: "70"; angle: "250"; value: "-76.3739"; }
+ ListElement{ radius: "70"; angle: "255"; value: "-77.6856"; }
+ ListElement{ radius: "70"; angle: "260"; value: "-78.6297"; }
+ ListElement{ radius: "70"; angle: "265"; value: "-79.199"; }
+ ListElement{ radius: "70"; angle: "270"; value: "-79.3893"; }
+ ListElement{ radius: "70"; angle: "275"; value: "-79.199"; }
+ ListElement{ radius: "70"; angle: "280"; value: "-78.6297"; }
+ ListElement{ radius: "70"; angle: "285"; value: "-77.6856"; }
+ ListElement{ radius: "70"; angle: "290"; value: "-76.3739"; }
+ ListElement{ radius: "70"; angle: "295"; value: "-74.7047"; }
+ ListElement{ radius: "70"; angle: "300"; value: "-72.6905"; }
+ ListElement{ radius: "70"; angle: "305"; value: "-70.3469"; }
+ ListElement{ radius: "70"; angle: "310"; value: "-67.6915"; }
+ ListElement{ radius: "70"; angle: "315"; value: "-64.7446"; }
+ ListElement{ radius: "70"; angle: "320"; value: "-61.5286"; }
+ ListElement{ radius: "70"; angle: "325"; value: "-58.0681"; }
+ ListElement{ radius: "70"; angle: "330"; value: "-54.3893"; }
+ ListElement{ radius: "70"; angle: "335"; value: "-50.5202"; }
+ ListElement{ radius: "70"; angle: "340"; value: "-46.4903"; }
+ ListElement{ radius: "70"; angle: "345"; value: "-42.3302"; }
+ ListElement{ radius: "70"; angle: "350"; value: "-38.0717"; }
+ ListElement{ radius: "70"; angle: "355"; value: "-33.747"; }
+ ListElement{ radius: "70"; angle: "360"; value: "-29.3893"; }
+ ListElement{ radius: "75"; angle: "0"; value: "-35.3553"; }
+ ListElement{ radius: "75"; angle: "5"; value: "-30.9976"; }
+ ListElement{ radius: "75"; angle: "10"; value: "-26.6729"; }
+ ListElement{ radius: "75"; angle: "15"; value: "-22.4144"; }
+ ListElement{ radius: "75"; angle: "20"; value: "-18.2543"; }
+ ListElement{ radius: "75"; angle: "25"; value: "-14.2244"; }
+ ListElement{ radius: "75"; angle: "30"; value: "-10.3553"; }
+ ListElement{ radius: "75"; angle: "35"; value: "-6.67652"; }
+ ListElement{ radius: "75"; angle: "40"; value: "-3.21596"; }
+ ListElement{ radius: "75"; angle: "45"; value: "5.55112e-15"; }
+ ListElement{ radius: "75"; angle: "50"; value: "2.94688"; }
+ ListElement{ radius: "75"; angle: "55"; value: "5.60226"; }
+ ListElement{ radius: "75"; angle: "60"; value: "7.94593"; }
+ ListElement{ radius: "75"; angle: "65"; value: "9.96005"; }
+ ListElement{ radius: "75"; angle: "70"; value: "11.6293"; }
+ ListElement{ radius: "75"; angle: "75"; value: "12.941"; }
+ ListElement{ radius: "75"; angle: "80"; value: "13.885"; }
+ ListElement{ radius: "75"; angle: "85"; value: "14.4544"; }
+ ListElement{ radius: "75"; angle: "90"; value: "14.6447"; }
+ ListElement{ radius: "75"; angle: "95"; value: "14.4544"; }
+ ListElement{ radius: "75"; angle: "100"; value: "13.885"; }
+ ListElement{ radius: "75"; angle: "105"; value: "12.941"; }
+ ListElement{ radius: "75"; angle: "110"; value: "11.6293"; }
+ ListElement{ radius: "75"; angle: "115"; value: "9.96005"; }
+ ListElement{ radius: "75"; angle: "120"; value: "7.94593"; }
+ ListElement{ radius: "75"; angle: "125"; value: "5.60226"; }
+ ListElement{ radius: "75"; angle: "130"; value: "2.94688"; }
+ ListElement{ radius: "75"; angle: "135"; value: "5.55112e-15"; }
+ ListElement{ radius: "75"; angle: "140"; value: "-3.21596"; }
+ ListElement{ radius: "75"; angle: "145"; value: "-6.67652"; }
+ ListElement{ radius: "75"; angle: "150"; value: "-10.3553"; }
+ ListElement{ radius: "75"; angle: "155"; value: "-14.2244"; }
+ ListElement{ radius: "75"; angle: "160"; value: "-18.2543"; }
+ ListElement{ radius: "75"; angle: "165"; value: "-22.4144"; }
+ ListElement{ radius: "75"; angle: "170"; value: "-26.6729"; }
+ ListElement{ radius: "75"; angle: "175"; value: "-30.9976"; }
+ ListElement{ radius: "75"; angle: "180"; value: "-35.3553"; }
+ ListElement{ radius: "75"; angle: "185"; value: "-39.7131"; }
+ ListElement{ radius: "75"; angle: "190"; value: "-44.0377"; }
+ ListElement{ radius: "75"; angle: "195"; value: "-48.2963"; }
+ ListElement{ radius: "75"; angle: "200"; value: "-52.4563"; }
+ ListElement{ radius: "75"; angle: "205"; value: "-56.4863"; }
+ ListElement{ radius: "75"; angle: "210"; value: "-60.3553"; }
+ ListElement{ radius: "75"; angle: "215"; value: "-64.0342"; }
+ ListElement{ radius: "75"; angle: "220"; value: "-67.4947"; }
+ ListElement{ radius: "75"; angle: "225"; value: "-70.7107"; }
+ ListElement{ radius: "75"; angle: "230"; value: "-73.6576"; }
+ ListElement{ radius: "75"; angle: "235"; value: "-76.3129"; }
+ ListElement{ radius: "75"; angle: "240"; value: "-78.6566"; }
+ ListElement{ radius: "75"; angle: "245"; value: "-80.6707"; }
+ ListElement{ radius: "75"; angle: "250"; value: "-82.34"; }
+ ListElement{ radius: "75"; angle: "255"; value: "-83.6516"; }
+ ListElement{ radius: "75"; angle: "260"; value: "-84.5957"; }
+ ListElement{ radius: "75"; angle: "265"; value: "-85.1651"; }
+ ListElement{ radius: "75"; angle: "270"; value: "-85.3553"; }
+ ListElement{ radius: "75"; angle: "275"; value: "-85.1651"; }
+ ListElement{ radius: "75"; angle: "280"; value: "-84.5957"; }
+ ListElement{ radius: "75"; angle: "285"; value: "-83.6516"; }
+ ListElement{ radius: "75"; angle: "290"; value: "-82.34"; }
+ ListElement{ radius: "75"; angle: "295"; value: "-80.6707"; }
+ ListElement{ radius: "75"; angle: "300"; value: "-78.6566"; }
+ ListElement{ radius: "75"; angle: "305"; value: "-76.3129"; }
+ ListElement{ radius: "75"; angle: "310"; value: "-73.6576"; }
+ ListElement{ radius: "75"; angle: "315"; value: "-70.7107"; }
+ ListElement{ radius: "75"; angle: "320"; value: "-67.4947"; }
+ ListElement{ radius: "75"; angle: "325"; value: "-64.0342"; }
+ ListElement{ radius: "75"; angle: "330"; value: "-60.3553"; }
+ ListElement{ radius: "75"; angle: "335"; value: "-56.4863"; }
+ ListElement{ radius: "75"; angle: "340"; value: "-52.4563"; }
+ ListElement{ radius: "75"; angle: "345"; value: "-48.2963"; }
+ ListElement{ radius: "75"; angle: "350"; value: "-44.0377"; }
+ ListElement{ radius: "75"; angle: "355"; value: "-39.7131"; }
+ ListElement{ radius: "75"; angle: "360"; value: "-35.3553"; }
+ ListElement{ radius: "80"; angle: "0"; value: "-40.4508"; }
+ ListElement{ radius: "80"; angle: "5"; value: "-36.0931"; }
+ ListElement{ radius: "80"; angle: "10"; value: "-31.7684"; }
+ ListElement{ radius: "80"; angle: "15"; value: "-27.5099"; }
+ ListElement{ radius: "80"; angle: "20"; value: "-23.3498"; }
+ ListElement{ radius: "80"; angle: "25"; value: "-19.3199"; }
+ ListElement{ radius: "80"; angle: "30"; value: "-15.4508"; }
+ ListElement{ radius: "80"; angle: "35"; value: "-11.772"; }
+ ListElement{ radius: "80"; angle: "40"; value: "-8.31147"; }
+ ListElement{ radius: "80"; angle: "45"; value: "-5.09551"; }
+ ListElement{ radius: "80"; angle: "50"; value: "-2.14863"; }
+ ListElement{ radius: "80"; angle: "55"; value: "0.506752"; }
+ ListElement{ radius: "80"; angle: "60"; value: "2.85042"; }
+ ListElement{ radius: "80"; angle: "65"; value: "4.86454"; }
+ ListElement{ radius: "80"; angle: "70"; value: "6.53378"; }
+ ListElement{ radius: "80"; angle: "75"; value: "7.84544"; }
+ ListElement{ radius: "80"; angle: "80"; value: "8.78954"; }
+ ListElement{ radius: "80"; angle: "85"; value: "9.35889"; }
+ ListElement{ radius: "80"; angle: "90"; value: "9.54915"; }
+ ListElement{ radius: "80"; angle: "95"; value: "9.35889"; }
+ ListElement{ radius: "80"; angle: "100"; value: "8.78954"; }
+ ListElement{ radius: "80"; angle: "105"; value: "7.84544"; }
+ ListElement{ radius: "80"; angle: "110"; value: "6.53378"; }
+ ListElement{ radius: "80"; angle: "115"; value: "4.86454"; }
+ ListElement{ radius: "80"; angle: "120"; value: "2.85042"; }
+ ListElement{ radius: "80"; angle: "125"; value: "0.506752"; }
+ ListElement{ radius: "80"; angle: "130"; value: "-2.14863"; }
+ ListElement{ radius: "80"; angle: "135"; value: "-5.09551"; }
+ ListElement{ radius: "80"; angle: "140"; value: "-8.31147"; }
+ ListElement{ radius: "80"; angle: "145"; value: "-11.772"; }
+ ListElement{ radius: "80"; angle: "150"; value: "-15.4508"; }
+ ListElement{ radius: "80"; angle: "155"; value: "-19.3199"; }
+ ListElement{ radius: "80"; angle: "160"; value: "-23.3498"; }
+ ListElement{ radius: "80"; angle: "165"; value: "-27.5099"; }
+ ListElement{ radius: "80"; angle: "170"; value: "-31.7684"; }
+ ListElement{ radius: "80"; angle: "175"; value: "-36.0931"; }
+ ListElement{ radius: "80"; angle: "180"; value: "-40.4508"; }
+ ListElement{ radius: "80"; angle: "185"; value: "-44.8086"; }
+ ListElement{ radius: "80"; angle: "190"; value: "-49.1333"; }
+ ListElement{ radius: "80"; angle: "195"; value: "-53.3918"; }
+ ListElement{ radius: "80"; angle: "200"; value: "-57.5519"; }
+ ListElement{ radius: "80"; angle: "205"; value: "-61.5818"; }
+ ListElement{ radius: "80"; angle: "210"; value: "-65.4508"; }
+ ListElement{ radius: "80"; angle: "215"; value: "-69.1297"; }
+ ListElement{ radius: "80"; angle: "220"; value: "-72.5902"; }
+ ListElement{ radius: "80"; angle: "225"; value: "-75.8062"; }
+ ListElement{ radius: "80"; angle: "230"; value: "-78.7531"; }
+ ListElement{ radius: "80"; angle: "235"; value: "-81.4085"; }
+ ListElement{ radius: "80"; angle: "240"; value: "-83.7521"; }
+ ListElement{ radius: "80"; angle: "245"; value: "-85.7662"; }
+ ListElement{ radius: "80"; angle: "250"; value: "-87.4355"; }
+ ListElement{ radius: "80"; angle: "255"; value: "-88.7471"; }
+ ListElement{ radius: "80"; angle: "260"; value: "-89.6912"; }
+ ListElement{ radius: "80"; angle: "265"; value: "-90.2606"; }
+ ListElement{ radius: "80"; angle: "270"; value: "-90.4508"; }
+ ListElement{ radius: "80"; angle: "275"; value: "-90.2606"; }
+ ListElement{ radius: "80"; angle: "280"; value: "-89.6912"; }
+ ListElement{ radius: "80"; angle: "285"; value: "-88.7471"; }
+ ListElement{ radius: "80"; angle: "290"; value: "-87.4355"; }
+ ListElement{ radius: "80"; angle: "295"; value: "-85.7662"; }
+ ListElement{ radius: "80"; angle: "300"; value: "-83.7521"; }
+ ListElement{ radius: "80"; angle: "305"; value: "-81.4085"; }
+ ListElement{ radius: "80"; angle: "310"; value: "-78.7531"; }
+ ListElement{ radius: "80"; angle: "315"; value: "-75.8062"; }
+ ListElement{ radius: "80"; angle: "320"; value: "-72.5902"; }
+ ListElement{ radius: "80"; angle: "325"; value: "-69.1297"; }
+ ListElement{ radius: "80"; angle: "330"; value: "-65.4508"; }
+ ListElement{ radius: "80"; angle: "335"; value: "-61.5818"; }
+ ListElement{ radius: "80"; angle: "340"; value: "-57.5519"; }
+ ListElement{ radius: "80"; angle: "345"; value: "-53.3918"; }
+ ListElement{ radius: "80"; angle: "350"; value: "-49.1333"; }
+ ListElement{ radius: "80"; angle: "355"; value: "-44.8086"; }
+ ListElement{ radius: "80"; angle: "360"; value: "-40.4508"; }
+ ListElement{ radius: "85"; angle: "0"; value: "-44.5503"; }
+ ListElement{ radius: "85"; angle: "5"; value: "-40.1925"; }
+ ListElement{ radius: "85"; angle: "10"; value: "-35.8679"; }
+ ListElement{ radius: "85"; angle: "15"; value: "-31.6094"; }
+ ListElement{ radius: "85"; angle: "20"; value: "-27.4493"; }
+ ListElement{ radius: "85"; angle: "25"; value: "-23.4194"; }
+ ListElement{ radius: "85"; angle: "30"; value: "-19.5503"; }
+ ListElement{ radius: "85"; angle: "35"; value: "-15.8715"; }
+ ListElement{ radius: "85"; angle: "40"; value: "-12.4109"; }
+ ListElement{ radius: "85"; angle: "45"; value: "-9.19499"; }
+ ListElement{ radius: "85"; angle: "50"; value: "-6.2481"; }
+ ListElement{ radius: "85"; angle: "55"; value: "-3.59272"; }
+ ListElement{ radius: "85"; angle: "60"; value: "-1.24906"; }
+ ListElement{ radius: "85"; angle: "65"; value: "0.765063"; }
+ ListElement{ radius: "85"; angle: "70"; value: "2.4343"; }
+ ListElement{ radius: "85"; angle: "75"; value: "3.74597"; }
+ ListElement{ radius: "85"; angle: "80"; value: "4.69006"; }
+ ListElement{ radius: "85"; angle: "85"; value: "5.25941"; }
+ ListElement{ radius: "85"; angle: "90"; value: "5.44967"; }
+ ListElement{ radius: "85"; angle: "95"; value: "5.25941"; }
+ ListElement{ radius: "85"; angle: "100"; value: "4.69006"; }
+ ListElement{ radius: "85"; angle: "105"; value: "3.74597"; }
+ ListElement{ radius: "85"; angle: "110"; value: "2.4343"; }
+ ListElement{ radius: "85"; angle: "115"; value: "0.765063"; }
+ ListElement{ radius: "85"; angle: "120"; value: "-1.24906"; }
+ ListElement{ radius: "85"; angle: "125"; value: "-3.59272"; }
+ ListElement{ radius: "85"; angle: "130"; value: "-6.2481"; }
+ ListElement{ radius: "85"; angle: "135"; value: "-9.19499"; }
+ ListElement{ radius: "85"; angle: "140"; value: "-12.4109"; }
+ ListElement{ radius: "85"; angle: "145"; value: "-15.8715"; }
+ ListElement{ radius: "85"; angle: "150"; value: "-19.5503"; }
+ ListElement{ radius: "85"; angle: "155"; value: "-23.4194"; }
+ ListElement{ radius: "85"; angle: "160"; value: "-27.4493"; }
+ ListElement{ radius: "85"; angle: "165"; value: "-31.6094"; }
+ ListElement{ radius: "85"; angle: "170"; value: "-35.8679"; }
+ ListElement{ radius: "85"; angle: "175"; value: "-40.1925"; }
+ ListElement{ radius: "85"; angle: "180"; value: "-44.5503"; }
+ ListElement{ radius: "85"; angle: "185"; value: "-48.9081"; }
+ ListElement{ radius: "85"; angle: "190"; value: "-53.2327"; }
+ ListElement{ radius: "85"; angle: "195"; value: "-57.4913"; }
+ ListElement{ radius: "85"; angle: "200"; value: "-61.6513"; }
+ ListElement{ radius: "85"; angle: "205"; value: "-65.6812"; }
+ ListElement{ radius: "85"; angle: "210"; value: "-69.5503"; }
+ ListElement{ radius: "85"; angle: "215"; value: "-73.2291"; }
+ ListElement{ radius: "85"; angle: "220"; value: "-76.6897"; }
+ ListElement{ radius: "85"; angle: "225"; value: "-79.9057"; }
+ ListElement{ radius: "85"; angle: "230"; value: "-82.8525"; }
+ ListElement{ radius: "85"; angle: "235"; value: "-85.5079"; }
+ ListElement{ radius: "85"; angle: "240"; value: "-87.8516"; }
+ ListElement{ radius: "85"; angle: "245"; value: "-89.8657"; }
+ ListElement{ radius: "85"; angle: "250"; value: "-91.535"; }
+ ListElement{ radius: "85"; angle: "255"; value: "-92.8466"; }
+ ListElement{ radius: "85"; angle: "260"; value: "-93.7907"; }
+ ListElement{ radius: "85"; angle: "265"; value: "-94.3601"; }
+ ListElement{ radius: "85"; angle: "270"; value: "-94.5503"; }
+ ListElement{ radius: "85"; angle: "275"; value: "-94.3601"; }
+ ListElement{ radius: "85"; angle: "280"; value: "-93.7907"; }
+ ListElement{ radius: "85"; angle: "285"; value: "-92.8466"; }
+ ListElement{ radius: "85"; angle: "290"; value: "-91.535"; }
+ ListElement{ radius: "85"; angle: "295"; value: "-89.8657"; }
+ ListElement{ radius: "85"; angle: "300"; value: "-87.8516"; }
+ ListElement{ radius: "85"; angle: "305"; value: "-85.5079"; }
+ ListElement{ radius: "85"; angle: "310"; value: "-82.8525"; }
+ ListElement{ radius: "85"; angle: "315"; value: "-79.9057"; }
+ ListElement{ radius: "85"; angle: "320"; value: "-76.6897"; }
+ ListElement{ radius: "85"; angle: "325"; value: "-73.2291"; }
+ ListElement{ radius: "85"; angle: "330"; value: "-69.5503"; }
+ ListElement{ radius: "85"; angle: "335"; value: "-65.6812"; }
+ ListElement{ radius: "85"; angle: "340"; value: "-61.6513"; }
+ ListElement{ radius: "85"; angle: "345"; value: "-57.4913"; }
+ ListElement{ radius: "85"; angle: "350"; value: "-53.2327"; }
+ ListElement{ radius: "85"; angle: "355"; value: "-48.9081"; }
+ ListElement{ radius: "85"; angle: "360"; value: "-44.5503"; }
+ ListElement{ radius: "90"; angle: "0"; value: "-47.5528"; }
+ ListElement{ radius: "90"; angle: "5"; value: "-43.195"; }
+ ListElement{ radius: "90"; angle: "10"; value: "-38.8704"; }
+ ListElement{ radius: "90"; angle: "15"; value: "-34.6119"; }
+ ListElement{ radius: "90"; angle: "20"; value: "-30.4518"; }
+ ListElement{ radius: "90"; angle: "25"; value: "-26.4219"; }
+ ListElement{ radius: "90"; angle: "30"; value: "-22.5528"; }
+ ListElement{ radius: "90"; angle: "35"; value: "-18.874"; }
+ ListElement{ radius: "90"; angle: "40"; value: "-15.4134"; }
+ ListElement{ radius: "90"; angle: "45"; value: "-12.1975"; }
+ ListElement{ radius: "90"; angle: "50"; value: "-9.2506"; }
+ ListElement{ radius: "90"; angle: "55"; value: "-6.59522"; }
+ ListElement{ radius: "90"; angle: "60"; value: "-4.25156"; }
+ ListElement{ radius: "90"; angle: "65"; value: "-2.23744"; }
+ ListElement{ radius: "90"; angle: "70"; value: "-0.568195"; }
+ ListElement{ radius: "90"; angle: "75"; value: "0.743465"; }
+ ListElement{ radius: "90"; angle: "80"; value: "1.68756"; }
+ ListElement{ radius: "90"; angle: "85"; value: "2.25691"; }
+ ListElement{ radius: "90"; angle: "90"; value: "2.44717"; }
+ ListElement{ radius: "90"; angle: "95"; value: "2.25691"; }
+ ListElement{ radius: "90"; angle: "100"; value: "1.68756"; }
+ ListElement{ radius: "90"; angle: "105"; value: "0.743465"; }
+ ListElement{ radius: "90"; angle: "110"; value: "-0.568195"; }
+ ListElement{ radius: "90"; angle: "115"; value: "-2.23744"; }
+ ListElement{ radius: "90"; angle: "120"; value: "-4.25156"; }
+ ListElement{ radius: "90"; angle: "125"; value: "-6.59522"; }
+ ListElement{ radius: "90"; angle: "130"; value: "-9.2506"; }
+ ListElement{ radius: "90"; angle: "135"; value: "-12.1975"; }
+ ListElement{ radius: "90"; angle: "140"; value: "-15.4134"; }
+ ListElement{ radius: "90"; angle: "145"; value: "-18.874"; }
+ ListElement{ radius: "90"; angle: "150"; value: "-22.5528"; }
+ ListElement{ radius: "90"; angle: "155"; value: "-26.4219"; }
+ ListElement{ radius: "90"; angle: "160"; value: "-30.4518"; }
+ ListElement{ radius: "90"; angle: "165"; value: "-34.6119"; }
+ ListElement{ radius: "90"; angle: "170"; value: "-38.8704"; }
+ ListElement{ radius: "90"; angle: "175"; value: "-43.195"; }
+ ListElement{ radius: "90"; angle: "180"; value: "-47.5528"; }
+ ListElement{ radius: "90"; angle: "185"; value: "-51.9106"; }
+ ListElement{ radius: "90"; angle: "190"; value: "-56.2352"; }
+ ListElement{ radius: "90"; angle: "195"; value: "-60.4938"; }
+ ListElement{ radius: "90"; angle: "200"; value: "-64.6538"; }
+ ListElement{ radius: "90"; angle: "205"; value: "-68.6837"; }
+ ListElement{ radius: "90"; angle: "210"; value: "-72.5528"; }
+ ListElement{ radius: "90"; angle: "215"; value: "-76.2316"; }
+ ListElement{ radius: "90"; angle: "220"; value: "-79.6922"; }
+ ListElement{ radius: "90"; angle: "225"; value: "-82.9082"; }
+ ListElement{ radius: "90"; angle: "230"; value: "-85.855"; }
+ ListElement{ radius: "90"; angle: "235"; value: "-88.5104"; }
+ ListElement{ radius: "90"; angle: "240"; value: "-90.8541"; }
+ ListElement{ radius: "90"; angle: "245"; value: "-92.8682"; }
+ ListElement{ radius: "90"; angle: "250"; value: "-94.5375"; }
+ ListElement{ radius: "90"; angle: "255"; value: "-95.8491"; }
+ ListElement{ radius: "90"; angle: "260"; value: "-96.7932"; }
+ ListElement{ radius: "90"; angle: "265"; value: "-97.3626"; }
+ ListElement{ radius: "90"; angle: "270"; value: "-97.5528"; }
+ ListElement{ radius: "90"; angle: "275"; value: "-97.3626"; }
+ ListElement{ radius: "90"; angle: "280"; value: "-96.7932"; }
+ ListElement{ radius: "90"; angle: "285"; value: "-95.8491"; }
+ ListElement{ radius: "90"; angle: "290"; value: "-94.5375"; }
+ ListElement{ radius: "90"; angle: "295"; value: "-92.8682"; }
+ ListElement{ radius: "90"; angle: "300"; value: "-90.8541"; }
+ ListElement{ radius: "90"; angle: "305"; value: "-88.5104"; }
+ ListElement{ radius: "90"; angle: "310"; value: "-85.855"; }
+ ListElement{ radius: "90"; angle: "315"; value: "-82.9082"; }
+ ListElement{ radius: "90"; angle: "320"; value: "-79.6922"; }
+ ListElement{ radius: "90"; angle: "325"; value: "-76.2316"; }
+ ListElement{ radius: "90"; angle: "330"; value: "-72.5528"; }
+ ListElement{ radius: "90"; angle: "335"; value: "-68.6837"; }
+ ListElement{ radius: "90"; angle: "340"; value: "-64.6538"; }
+ ListElement{ radius: "90"; angle: "345"; value: "-60.4938"; }
+ ListElement{ radius: "90"; angle: "350"; value: "-56.2352"; }
+ ListElement{ radius: "90"; angle: "355"; value: "-51.9106"; }
+ ListElement{ radius: "90"; angle: "360"; value: "-47.5528"; }
+ ListElement{ radius: "95"; angle: "0"; value: "-49.3844"; }
+ ListElement{ radius: "95"; angle: "5"; value: "-45.0266"; }
+ ListElement{ radius: "95"; angle: "10"; value: "-40.702"; }
+ ListElement{ radius: "95"; angle: "15"; value: "-36.4435"; }
+ ListElement{ radius: "95"; angle: "20"; value: "-32.2834"; }
+ ListElement{ radius: "95"; angle: "25"; value: "-28.2535"; }
+ ListElement{ radius: "95"; angle: "30"; value: "-24.3844"; }
+ ListElement{ radius: "95"; angle: "35"; value: "-20.7056"; }
+ ListElement{ radius: "95"; angle: "40"; value: "-17.245"; }
+ ListElement{ radius: "95"; angle: "45"; value: "-14.0291"; }
+ ListElement{ radius: "95"; angle: "50"; value: "-11.0822"; }
+ ListElement{ radius: "95"; angle: "55"; value: "-8.42681"; }
+ ListElement{ radius: "95"; angle: "60"; value: "-6.08315"; }
+ ListElement{ radius: "95"; angle: "65"; value: "-4.06903"; }
+ ListElement{ radius: "95"; angle: "70"; value: "-2.39979"; }
+ ListElement{ radius: "95"; angle: "75"; value: "-1.08813"; }
+ ListElement{ radius: "95"; angle: "80"; value: "-0.144029"; }
+ ListElement{ radius: "95"; angle: "85"; value: "0.425318"; }
+ ListElement{ radius: "95"; angle: "90"; value: "0.615583"; }
+ ListElement{ radius: "95"; angle: "95"; value: "0.425318"; }
+ ListElement{ radius: "95"; angle: "100"; value: "-0.144029"; }
+ ListElement{ radius: "95"; angle: "105"; value: "-1.08813"; }
+ ListElement{ radius: "95"; angle: "110"; value: "-2.39979"; }
+ ListElement{ radius: "95"; angle: "115"; value: "-4.06903"; }
+ ListElement{ radius: "95"; angle: "120"; value: "-6.08315"; }
+ ListElement{ radius: "95"; angle: "125"; value: "-8.42681"; }
+ ListElement{ radius: "95"; angle: "130"; value: "-11.0822"; }
+ ListElement{ radius: "95"; angle: "135"; value: "-14.0291"; }
+ ListElement{ radius: "95"; angle: "140"; value: "-17.245"; }
+ ListElement{ radius: "95"; angle: "145"; value: "-20.7056"; }
+ ListElement{ radius: "95"; angle: "150"; value: "-24.3844"; }
+ ListElement{ radius: "95"; angle: "155"; value: "-28.2535"; }
+ ListElement{ radius: "95"; angle: "160"; value: "-32.2834"; }
+ ListElement{ radius: "95"; angle: "165"; value: "-36.4435"; }
+ ListElement{ radius: "95"; angle: "170"; value: "-40.702"; }
+ ListElement{ radius: "95"; angle: "175"; value: "-45.0266"; }
+ ListElement{ radius: "95"; angle: "180"; value: "-49.3844"; }
+ ListElement{ radius: "95"; angle: "185"; value: "-53.7422"; }
+ ListElement{ radius: "95"; angle: "190"; value: "-58.0668"; }
+ ListElement{ radius: "95"; angle: "195"; value: "-62.3254"; }
+ ListElement{ radius: "95"; angle: "200"; value: "-66.4854"; }
+ ListElement{ radius: "95"; angle: "205"; value: "-70.5153"; }
+ ListElement{ radius: "95"; angle: "210"; value: "-74.3844"; }
+ ListElement{ radius: "95"; angle: "215"; value: "-78.0632"; }
+ ListElement{ radius: "95"; angle: "220"; value: "-81.5238"; }
+ ListElement{ radius: "95"; angle: "225"; value: "-84.7398"; }
+ ListElement{ radius: "95"; angle: "230"; value: "-87.6866"; }
+ ListElement{ radius: "95"; angle: "235"; value: "-90.342"; }
+ ListElement{ radius: "95"; angle: "240"; value: "-92.6857"; }
+ ListElement{ radius: "95"; angle: "245"; value: "-94.6998"; }
+ ListElement{ radius: "95"; angle: "250"; value: "-96.369"; }
+ ListElement{ radius: "95"; angle: "255"; value: "-97.6807"; }
+ ListElement{ radius: "95"; angle: "260"; value: "-98.6248"; }
+ ListElement{ radius: "95"; angle: "265"; value: "-99.1942"; }
+ ListElement{ radius: "95"; angle: "270"; value: "-99.3844"; }
+ ListElement{ radius: "95"; angle: "275"; value: "-99.1942"; }
+ ListElement{ radius: "95"; angle: "280"; value: "-98.6248"; }
+ ListElement{ radius: "95"; angle: "285"; value: "-97.6807"; }
+ ListElement{ radius: "95"; angle: "290"; value: "-96.369"; }
+ ListElement{ radius: "95"; angle: "295"; value: "-94.6998"; }
+ ListElement{ radius: "95"; angle: "300"; value: "-92.6857"; }
+ ListElement{ radius: "95"; angle: "305"; value: "-90.342"; }
+ ListElement{ radius: "95"; angle: "310"; value: "-87.6866"; }
+ ListElement{ radius: "95"; angle: "315"; value: "-84.7398"; }
+ ListElement{ radius: "95"; angle: "320"; value: "-81.5238"; }
+ ListElement{ radius: "95"; angle: "325"; value: "-78.0632"; }
+ ListElement{ radius: "95"; angle: "330"; value: "-74.3844"; }
+ ListElement{ radius: "95"; angle: "335"; value: "-70.5153"; }
+ ListElement{ radius: "95"; angle: "340"; value: "-66.4854"; }
+ ListElement{ radius: "95"; angle: "345"; value: "-62.3254"; }
+ ListElement{ radius: "95"; angle: "350"; value: "-58.0668"; }
+ ListElement{ radius: "95"; angle: "355"; value: "-53.7422"; }
+ ListElement{ radius: "95"; angle: "360"; value: "-49.3844"; }
+ ListElement{ radius: "100"; angle: "0"; value: "-50"; }
+ ListElement{ radius: "100"; angle: "5"; value: "-45.6422"; }
+ ListElement{ radius: "100"; angle: "10"; value: "-41.3176"; }
+ ListElement{ radius: "100"; angle: "15"; value: "-37.059"; }
+ ListElement{ radius: "100"; angle: "20"; value: "-32.899"; }
+ ListElement{ radius: "100"; angle: "25"; value: "-28.8691"; }
+ ListElement{ radius: "100"; angle: "30"; value: "-25"; }
+ ListElement{ radius: "100"; angle: "35"; value: "-21.3212"; }
+ ListElement{ radius: "100"; angle: "40"; value: "-17.8606"; }
+ ListElement{ radius: "100"; angle: "45"; value: "-14.6447"; }
+ ListElement{ radius: "100"; angle: "50"; value: "-11.6978"; }
+ ListElement{ radius: "100"; angle: "55"; value: "-9.0424"; }
+ ListElement{ radius: "100"; angle: "60"; value: "-6.69873"; }
+ ListElement{ radius: "100"; angle: "65"; value: "-4.68461"; }
+ ListElement{ radius: "100"; angle: "70"; value: "-3.01537"; }
+ ListElement{ radius: "100"; angle: "75"; value: "-1.70371"; }
+ ListElement{ radius: "100"; angle: "80"; value: "-0.759612"; }
+ ListElement{ radius: "100"; angle: "85"; value: "-0.190265"; }
+ ListElement{ radius: "100"; angle: "90"; value: "0"; }
+ ListElement{ radius: "100"; angle: "95"; value: "-0.190265"; }
+ ListElement{ radius: "100"; angle: "100"; value: "-0.759612"; }
+ ListElement{ radius: "100"; angle: "105"; value: "-1.70371"; }
+ ListElement{ radius: "100"; angle: "110"; value: "-3.01537"; }
+ ListElement{ radius: "100"; angle: "115"; value: "-4.68461"; }
+ ListElement{ radius: "100"; angle: "120"; value: "-6.69873"; }
+ ListElement{ radius: "100"; angle: "125"; value: "-9.0424"; }
+ ListElement{ radius: "100"; angle: "130"; value: "-11.6978"; }
+ ListElement{ radius: "100"; angle: "135"; value: "-14.6447"; }
+ ListElement{ radius: "100"; angle: "140"; value: "-17.8606"; }
+ ListElement{ radius: "100"; angle: "145"; value: "-21.3212"; }
+ ListElement{ radius: "100"; angle: "150"; value: "-25"; }
+ ListElement{ radius: "100"; angle: "155"; value: "-28.8691"; }
+ ListElement{ radius: "100"; angle: "160"; value: "-32.899"; }
+ ListElement{ radius: "100"; angle: "165"; value: "-37.059"; }
+ ListElement{ radius: "100"; angle: "170"; value: "-41.3176"; }
+ ListElement{ radius: "100"; angle: "175"; value: "-45.6422"; }
+ ListElement{ radius: "100"; angle: "180"; value: "-50"; }
+ ListElement{ radius: "100"; angle: "185"; value: "-54.3578"; }
+ ListElement{ radius: "100"; angle: "190"; value: "-58.6824"; }
+ ListElement{ radius: "100"; angle: "195"; value: "-62.941"; }
+ ListElement{ radius: "100"; angle: "200"; value: "-67.101"; }
+ ListElement{ radius: "100"; angle: "205"; value: "-71.1309"; }
+ ListElement{ radius: "100"; angle: "210"; value: "-75"; }
+ ListElement{ radius: "100"; angle: "215"; value: "-78.6788"; }
+ ListElement{ radius: "100"; angle: "220"; value: "-82.1394"; }
+ ListElement{ radius: "100"; angle: "225"; value: "-85.3553"; }
+ ListElement{ radius: "100"; angle: "230"; value: "-88.3022"; }
+ ListElement{ radius: "100"; angle: "235"; value: "-90.9576"; }
+ ListElement{ radius: "100"; angle: "240"; value: "-93.3013"; }
+ ListElement{ radius: "100"; angle: "245"; value: "-95.3154"; }
+ ListElement{ radius: "100"; angle: "250"; value: "-96.9846"; }
+ ListElement{ radius: "100"; angle: "255"; value: "-98.2963"; }
+ ListElement{ radius: "100"; angle: "260"; value: "-99.2404"; }
+ ListElement{ radius: "100"; angle: "265"; value: "-99.8097"; }
+ ListElement{ radius: "100"; angle: "270"; value: "-100"; }
+ ListElement{ radius: "100"; angle: "275"; value: "-99.8097"; }
+ ListElement{ radius: "100"; angle: "280"; value: "-99.2404"; }
+ ListElement{ radius: "100"; angle: "285"; value: "-98.2963"; }
+ ListElement{ radius: "100"; angle: "290"; value: "-96.9846"; }
+ ListElement{ radius: "100"; angle: "295"; value: "-95.3154"; }
+ ListElement{ radius: "100"; angle: "300"; value: "-93.3013"; }
+ ListElement{ radius: "100"; angle: "305"; value: "-90.9576"; }
+ ListElement{ radius: "100"; angle: "310"; value: "-88.3022"; }
+ ListElement{ radius: "100"; angle: "315"; value: "-85.3553"; }
+ ListElement{ radius: "100"; angle: "320"; value: "-82.1394"; }
+ ListElement{ radius: "100"; angle: "325"; value: "-78.6788"; }
+ ListElement{ radius: "100"; angle: "330"; value: "-75"; }
+ ListElement{ radius: "100"; angle: "335"; value: "-71.1309"; }
+ ListElement{ radius: "100"; angle: "340"; value: "-67.101"; }
+ ListElement{ radius: "100"; angle: "345"; value: "-62.941"; }
+ ListElement{ radius: "100"; angle: "350"; value: "-58.6824"; }
+ ListElement{ radius: "100"; angle: "355"; value: "-54.3578"; }
+ ListElement{ radius: "100"; angle: "360"; value: "-50"; }
+ }
+}
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml
new file mode 100644
index 000000000..8213c5747
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceHeightMap.qml
@@ -0,0 +1,227 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtDataVisualization
+
+Rectangle {
+ id: heightMapView
+ color: surfacePlot.theme.windowColor
+
+ required property bool portraitMode
+
+ property real buttonWidth: heightMapView.portraitMode ? (heightMapView.width - 35) / 2
+ : (heightMapView.width - 40) / 3
+
+ Item {
+ id: surfaceView
+ anchors.top: buttons.bottom
+ anchors.bottom: heightMapView.bottom
+ anchors.left: heightMapView.left
+ anchors.right: heightMapView.right
+
+ //! [1]
+ ColorGradient {
+ id: surfaceGradient
+ ColorGradientStop { position: 0.0; color: "darkgreen"}
+ ColorGradientStop { position: 0.15; color: "darkslategray" }
+ ColorGradientStop { position: 0.7; color: "peru" }
+ ColorGradientStop { position: 1.0; color: "white" }
+ }
+ //! [1]
+
+ Surface3D {
+ id: surfacePlot
+ width: surfaceView.width
+ height: surfaceView.height
+ aspectRatio: 3.0
+ //! [2]
+ theme: Theme3D {
+ type: Theme3D.ThemeStoneMoss
+ font.family: "STCaiyun"
+ font.pointSize: 35
+ colorStyle: Theme3D.ColorStyleRangeGradient
+ baseGradients: [surfaceGradient] // Use the custom gradient
+ }
+ //! [2]
+ shadowQuality: AbstractGraph3D.ShadowQualityMedium
+ selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndRow
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeft
+ axisX.segmentCount: 3
+ axisX.subSegmentCount: 3
+ axisX.labelFormat: "%i"
+ axisZ.segmentCount: 3
+ axisZ.subSegmentCount: 3
+ axisZ.labelFormat: "%i"
+ axisY.segmentCount: 2
+ axisY.subSegmentCount: 2
+ axisY.labelFormat: "%i"
+ axisY.title: "Height (m)"
+ axisX.title: "Longitude 175.x\"E"
+ axisZ.title: "Latitude -39.x\"N"
+ axisY.titleVisible: true
+ axisX.titleVisible: true
+ axisZ.titleVisible: true
+
+ //! [0]
+ Surface3DSeries {
+ id: heightSeries
+ flatShadingEnabled: false
+ drawMode: Surface3DSeries.DrawSurface
+
+ HeightMapSurfaceDataProxy {
+ heightMapFile: ":/qml/qmlsurfacegallery/heightmap.png"
+ // We don't want the default data values set by heightmap proxy, but use
+ // actual coordinate and height values instead
+ autoScaleY: true
+ minYValue: 740
+ maxYValue: 2787
+ minZValue: -374 // ~ -39.374411"N
+ maxZValue: -116 // ~ -39.115971"N
+ minXValue: 472 // ~ 175.471767"E
+ maxXValue: 781 // ~ 175.780758"E
+ }
+
+ onDrawModeChanged: heightMapView.checkState()
+ }
+ //! [0]
+ }
+ }
+
+ Item {
+ id: buttons
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.margins: 10
+ height: heightMapView.portraitMode ? surfaceGridToggle.implicitHeight * 3 + 20
+ : surfaceGridToggle.implicitHeight * 2 + 15
+ opacity: 0.5
+
+ Button {
+ id: surfaceGridToggle
+ anchors.margins: 5
+ anchors.left: parent.left
+ anchors.top: parent.top
+ width: heightMapView.buttonWidth // Calculated elsewhere based on screen orientation
+ text: "Show Surface\nGrid"
+ //! [3]
+ onClicked: {
+ if (heightSeries.drawMode & Surface3DSeries.DrawWireframe)
+ heightSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
+ else
+ heightSeries.drawMode |= Surface3DSeries.DrawWireframe;
+ }
+ //! [3]
+ }
+
+ Button {
+ id: surfaceGridColor
+ anchors.margins: 5
+ anchors.left: surfaceGridToggle.right
+ anchors.top: parent.top
+ width: heightMapView.buttonWidth
+ text: "Red surface\ngrid color"
+ //! [4]
+ onClicked: {
+ if (Qt.colorEqual(heightSeries.wireframeColor, "#000000")) {
+ heightSeries.wireframeColor = "red";
+ text = "Black surface\ngrid color";
+ } else {
+ heightSeries.wireframeColor = "black";
+ text = "Red surface\ngrid color";
+ }
+ }
+ //! [4]
+ }
+
+ Button {
+ id: surfaceToggle
+ anchors.margins: 5
+ anchors.left: heightMapView.portraitMode ? parent.left : surfaceGridColor.right
+ anchors.top: heightMapView.portraitMode ? surfaceGridColor.bottom : parent.top
+ width: heightMapView.buttonWidth
+ text: "Hide\nSurface"
+ //! [5]
+ onClicked: {
+ if (heightSeries.drawMode & Surface3DSeries.DrawSurface)
+ heightSeries.drawMode &= ~Surface3DSeries.DrawSurface;
+ else
+ heightSeries.drawMode |= Surface3DSeries.DrawSurface;
+ }
+ //! [5]
+ }
+
+ Button {
+ id: flatShadingToggle
+ anchors.margins: 5
+ anchors.left: heightMapView.portraitMode ? surfaceToggle.right : parent.left
+ anchors.top: heightMapView.portraitMode ? surfaceGridColor.bottom : surfaceToggle.bottom
+ width: heightMapView.buttonWidth
+ text: heightSeries.flatShadingSupported ? "Show\nFlat" : "Flat not\nsupported"
+ enabled: heightSeries.flatShadingSupported
+ //! [6]
+ onClicked: {
+ if (heightSeries.flatShadingEnabled) {
+ heightSeries.flatShadingEnabled = false;
+ text = "Show\nFlat"
+ } else {
+ heightSeries.flatShadingEnabled = true;
+ text = "Show\nSmooth"
+ }
+ }
+ //! [6]
+ }
+
+ Button {
+ id: backgroundToggle
+ anchors.margins: 5
+ anchors.left: heightMapView.portraitMode ? parent.left : flatShadingToggle.right
+ anchors.top: heightMapView.portraitMode ? flatShadingToggle.bottom
+ : surfaceToggle.bottom
+ width: heightMapView.buttonWidth
+ text: "Hide\nBackground"
+ onClicked: {
+ if (surfacePlot.theme.backgroundEnabled) {
+ surfacePlot.theme.backgroundEnabled = false;
+ text = "Show\nBackground";
+ } else {
+ surfacePlot.theme.backgroundEnabled = true;
+ text = "Hide\nBackground";
+ }
+ }
+ }
+
+ Button {
+ id: gridToggle
+ anchors.margins: 5
+ anchors.left: backgroundToggle.right
+ anchors.top: heightMapView.portraitMode ? flatShadingToggle.bottom
+ : surfaceToggle.bottom
+ width: heightMapView.buttonWidth
+ text: "Hide\nGrid"
+ onClicked: {
+ if (surfacePlot.theme.gridEnabled) {
+ surfacePlot.theme.gridEnabled = false;
+ text = "Show\nGrid";
+ } else {
+ surfacePlot.theme.gridEnabled = true;
+ text = "Hide\nGrid";
+ }
+ }
+ }
+ }
+
+ function checkState() {
+ if (heightSeries.drawMode & Surface3DSeries.DrawSurface)
+ surfaceToggle.text = "Hide\nSurface";
+ else
+ surfaceToggle.text = "Show\nSurface";
+
+ if (heightSeries.drawMode & Surface3DSeries.DrawWireframe)
+ surfaceGridToggle.text = "Hide Surface\nGrid";
+ else
+ surfaceGridToggle.text = "Show Surface\nGrid";
+ }
+}
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml
new file mode 100644
index 000000000..a5ff8acd9
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceOscilloscope.qml
@@ -0,0 +1,430 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtDataVisualization
+//! [0]
+import SurfaceGallery
+//! [0]
+
+Item {
+ id: oscilloscopeView
+
+ property int sampleColumns: sampleSlider.value
+ property int sampleRows: sampleColumns / 2
+ property int sampleCache: 24
+
+ required property bool portraitMode
+
+ property real controlWidth: oscilloscopeView.portraitMode ? oscilloscopeView.width - 10
+ : oscilloscopeView.width / 4 - 6.66
+
+ property real buttonWidth: oscilloscopeView.portraitMode ? oscilloscopeView.width - 10
+ : oscilloscopeView.width / 3 - 7.5
+
+ onSampleRowsChanged: {
+ surfaceSeries.selectedPoint = surfaceSeries.invalidSelectionPosition
+ generateData()
+ }
+
+ //![1]
+ DataSource {
+ id: dataSource
+ }
+ //![1]
+
+ Item {
+ id: dataView
+ anchors.bottom: parent.bottom
+ width: parent.width
+ height: parent.height - controlArea.height
+
+ //! [2]
+ Surface3D {
+ id: surfaceGraph
+ anchors.fill: parent
+
+ Surface3DSeries {
+ id: surfaceSeries
+ drawMode: Surface3DSeries.DrawSurfaceAndWireframe
+ itemLabelFormat: "@xLabel, @zLabel: @yLabel"
+ //! [2]
+ //! [3]
+ itemLabelVisible: false
+ //! [3]
+
+ //! [4]
+ onItemLabelChanged: {
+ if (surfaceSeries.selectedPoint == surfaceSeries.invalidSelectionPosition)
+ selectionText.text = "No selection";
+ else
+ selectionText.text = surfaceSeries.itemLabel;
+ }
+ //! [4]
+ }
+
+ shadowQuality: AbstractGraph3D.ShadowQualityNone
+ selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndColumn
+ theme: Theme3D {
+ type: Theme3D.ThemeIsabelle
+ backgroundEnabled: false
+ }
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetFrontHigh
+
+ axisX.labelFormat: "%d ms"
+ axisY.labelFormat: "%d W"
+ axisZ.labelFormat: "%d mV"
+ axisX.min: 0
+ axisY.min: 0
+ axisZ.min: 0
+ axisX.max: 1000
+ axisY.max: 100
+ axisZ.max: 800
+ axisX.segmentCount: 4
+ axisY.segmentCount: 4
+ axisZ.segmentCount: 4
+ measureFps: true
+ renderingMode: AbstractGraph3D.RenderDirectToBackground
+
+ onCurrentFpsChanged: (fps)=> {
+ if (fps > 10)
+ fpsText.text = "FPS: " + Math.round(surfaceGraph.currentFps);
+ else
+ fpsText.text = "FPS: " + Math.round(surfaceGraph.currentFps * 10.0) / 10.0;
+ }
+
+ //! [5]
+ Component.onCompleted: oscilloscopeView.generateData();
+ //! [5]
+ }
+ }
+
+ //! [7]
+ Timer {
+ id: refreshTimer
+ interval: 1000 / frequencySlider.value
+ running: true
+ repeat: true
+ onTriggered: dataSource.update(surfaceSeries);
+ }
+ //! [7]
+
+ Rectangle {
+ id: controlArea
+ height: oscilloscopeView.portraitMode ? flatShadingToggle.implicitHeight * 7
+ : flatShadingToggle.implicitHeight * 2
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.right: parent.right
+ color: surfaceGraph.theme.backgroundColor
+
+ // Samples
+ Rectangle {
+ id: samples
+ width: oscilloscopeView.controlWidth
+ height: flatShadingToggle.implicitHeight
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.margins: 5
+
+ color: surfaceGraph.theme.windowColor
+ border.color: surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 4
+
+ Row {
+ anchors.centerIn: parent
+ spacing: 10
+ padding: 5
+
+ Slider {
+ id: sampleSlider
+ from: oscilloscopeView.sampleCache * 2
+ to: from * 10
+ stepSize: oscilloscopeView.sampleCache
+
+ background: Rectangle {
+ x: sampleSlider.leftPadding
+ y: sampleSlider.topPadding + sampleSlider.availableHeight / 2
+ - height / 2
+ implicitWidth: 200
+ implicitHeight: 4
+ width: sampleSlider.availableWidth
+ height: implicitHeight
+ radius: 2
+ color: surfaceGraph.theme.gridLineColor
+
+ Rectangle {
+ width: sampleSlider.visualPosition * parent.width
+ height: parent.height
+ color: surfaceGraph.theme.labelTextColor
+ radius: 2
+ }
+ }
+
+ handle: Rectangle {
+ x: sampleSlider.leftPadding + sampleSlider.visualPosition
+ * (sampleSlider.availableWidth - width)
+ y: sampleSlider.topPadding + sampleSlider.availableHeight / 2
+ - height / 2
+ implicitWidth: 20
+ implicitHeight: 20
+ radius: 10
+ color: sampleSlider.pressed ? surfaceGraph.theme.gridLineColor
+ : surfaceGraph.theme.windowColor
+ border.color: sampleSlider.pressed ? surfaceGraph.theme.labelTextColor
+ : surfaceGraph.theme.gridLineColor
+ }
+
+ Component.onCompleted: value = from;
+ }
+
+ Text {
+ id: samplesText
+ text: "Samples: " + (oscilloscopeView.sampleRows * oscilloscopeView.sampleColumns)
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ color: surfaceGraph.theme.labelTextColor
+ }
+ }
+ }
+
+ // Frequency
+ Rectangle {
+ id: frequency
+ width: oscilloscopeView.controlWidth
+ height: flatShadingToggle.implicitHeight
+ anchors.left: oscilloscopeView.portraitMode ? parent.left : samples.right
+ anchors.top: oscilloscopeView.portraitMode ? samples.bottom : parent.top
+ anchors.margins: 5
+
+ color: surfaceGraph.theme.windowColor
+ border.color: surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 4
+
+ Row {
+ anchors.centerIn: parent
+ spacing: 10
+ padding: 5
+
+ Slider {
+ id: frequencySlider
+ from: 2
+ to: 60
+ stepSize: 2
+ value: 30
+
+ background: Rectangle {
+ x: frequencySlider.leftPadding
+ y: frequencySlider.topPadding + frequencySlider.availableHeight / 2
+ - height / 2
+ implicitWidth: 200
+ implicitHeight: 4
+ width: frequencySlider.availableWidth
+ height: implicitHeight
+ radius: 2
+ color: surfaceGraph.theme.gridLineColor
+
+ Rectangle {
+ width: frequencySlider.visualPosition * parent.width
+ height: parent.height
+ color: surfaceGraph.theme.labelTextColor
+ radius: 2
+ }
+ }
+
+ handle: Rectangle {
+ x: frequencySlider.leftPadding + frequencySlider.visualPosition
+ * (frequencySlider.availableWidth - width)
+ y: frequencySlider.topPadding + frequencySlider.availableHeight / 2
+ - height / 2
+ implicitWidth: 20
+ implicitHeight: 20
+ radius: 10
+ color: frequencySlider.pressed ? surfaceGraph.theme.gridLineColor
+ : surfaceGraph.theme.windowColor
+ border.color: frequencySlider.pressed ? surfaceGraph.theme.labelTextColor
+ : surfaceGraph.theme.gridLineColor
+ }
+ }
+
+ Text {
+ id: frequencyText
+ text: "Freq: " + frequencySlider.value + " Hz"
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ color: surfaceGraph.theme.labelTextColor
+ }
+ }
+ }
+
+ // FPS
+ Rectangle {
+ id: fpsindicator
+ width: oscilloscopeView.controlWidth
+ height: flatShadingToggle.implicitHeight
+ anchors.left: oscilloscopeView.portraitMode ? parent.left : frequency.right
+ anchors.top: oscilloscopeView.portraitMode ? frequency.bottom : parent.top
+ anchors.margins: 5
+
+ color: surfaceGraph.theme.windowColor
+ border.color: surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 4
+
+ Text {
+ id: fpsText
+ anchors.fill: parent
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ color: surfaceGraph.theme.labelTextColor
+ }
+ }
+
+ // Selection
+ Rectangle {
+ id: selection
+ width: oscilloscopeView.controlWidth
+ height: flatShadingToggle.implicitHeight
+ anchors.left: oscilloscopeView.portraitMode ? parent.left : fpsindicator.right
+ anchors.top: oscilloscopeView.portraitMode ? fpsindicator.bottom : parent.top
+ anchors.margins: 5
+
+ color: surfaceGraph.theme.windowColor
+ border.color: surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 4
+
+ Text {
+ id: selectionText
+ anchors.fill: parent
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ text: "No selection"
+ color: surfaceGraph.theme.labelTextColor
+ }
+ }
+
+ // Flat shading
+ Button {
+ id: flatShadingToggle
+ width: oscilloscopeView.buttonWidth
+ anchors.left: parent.left
+ anchors.top: selection.bottom
+ anchors.margins: 5
+
+ text: surfaceSeries.flatShadingSupported ? "Show\nSmooth" : "Flat\nnot supported"
+ enabled: surfaceSeries.flatShadingSupported
+
+ onClicked: {
+ if (surfaceSeries.flatShadingEnabled) {
+ surfaceSeries.flatShadingEnabled = false;
+ text = "Show\nFlat"
+ } else {
+ surfaceSeries.flatShadingEnabled = true;
+ text = "Show\nSmooth"
+ }
+ }
+
+ contentItem: Text {
+ text: flatShadingToggle.text
+ opacity: flatShadingToggle.enabled ? 1.0 : 0.3
+ color: surfaceGraph.theme.labelTextColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ opacity: flatShadingToggle.enabled ? 1 : 0.3
+ color: flatShadingToggle.down ? surfaceGraph.theme.gridLineColor
+ : surfaceGraph.theme.windowColor
+ border.color: flatShadingToggle.down ? surfaceGraph.theme.labelTextColor
+ : surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 2
+ }
+ }
+
+ // Surface grid
+ Button {
+ id: surfaceGridToggle
+ width: oscilloscopeView.buttonWidth
+ anchors.left: oscilloscopeView.portraitMode ? parent.left : flatShadingToggle.right
+ anchors.top: oscilloscopeView.portraitMode ? flatShadingToggle.bottom : selection.bottom
+ anchors.margins: 5
+
+ text: "Hide\nSurface Grid"
+
+ onClicked: {
+ if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe) {
+ surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
+ text = "Show\nSurface Grid";
+ } else {
+ surfaceSeries.drawMode |= Surface3DSeries.DrawWireframe;
+ text = "Hid\nSurface Grid";
+ }
+ }
+
+ contentItem: Text {
+ text: surfaceGridToggle.text
+ color: surfaceGraph.theme.labelTextColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ color: surfaceGridToggle.down ? surfaceGraph.theme.gridLineColor
+ : surfaceGraph.theme.windowColor
+ border.color: surfaceGridToggle.down ? surfaceGraph.theme.labelTextColor
+ : surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 2
+ }
+ }
+
+ // Exit
+ Button {
+ id: exitButton
+ width: oscilloscopeView.buttonWidth
+ height: surfaceGridToggle.height
+ anchors.left: oscilloscopeView.portraitMode ? parent.left : surfaceGridToggle.right
+ anchors.top: oscilloscopeView.portraitMode ? surfaceGridToggle.bottom : selection.bottom
+ anchors.margins: 5
+
+ text: "Quit"
+
+ onClicked: Qt.quit();
+
+ contentItem: Text {
+ text: exitButton.text
+ color: surfaceGraph.theme.labelTextColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ background: Rectangle {
+ color: exitButton.down ? surfaceGraph.theme.gridLineColor
+ : surfaceGraph.theme.windowColor
+ border.color: exitButton.down ? surfaceGraph.theme.labelTextColor
+ : surfaceGraph.theme.gridLineColor
+ border.width: 1
+ radius: 2
+ }
+ }
+ }
+
+ //! [6]
+ function generateData() {
+ dataSource.generateData(oscilloscopeView.sampleCache, oscilloscopeView.sampleRows,
+ oscilloscopeView.sampleColumns,
+ surfaceGraph.axisX.min, surfaceGraph.axisX.max,
+ surfaceGraph.axisY.min, surfaceGraph.axisY.max,
+ surfaceGraph.axisZ.min, surfaceGraph.axisZ.max);
+ }
+ //! [6]
+}
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml
new file mode 100644
index 000000000..cedb9850a
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/SurfaceSpectrogram.qml
@@ -0,0 +1,272 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtDataVisualization
+
+Rectangle {
+ id: spectrogramView
+ color: surfaceGraph.theme.windowColor
+
+ required property bool portraitMode
+
+ property real buttonWidth: spectrogramView.portraitMode ? (spectrogramView.width - 35) / 2
+ : (spectrogramView.width - 50) / 5
+
+ SpectrogramData {
+ id: surfaceData
+ }
+
+ Item {
+ id: surfaceView
+ anchors.top: buttons.bottom
+ anchors.left: parent.left
+ anchors.right: legend.left
+ anchors.bottom: parent.bottom
+
+ ColorGradient {
+ id: surfaceGradient
+ ColorGradientStop { position: 0.0; color: "black" }
+ ColorGradientStop { position: 0.2; color: "red" }
+ ColorGradientStop { position: 0.5; color: "blue" }
+ ColorGradientStop { position: 0.8; color: "yellow" }
+ ColorGradientStop { position: 1.0; color: "white" }
+ }
+
+ ValueAxis3D {
+ id: xAxis
+ segmentCount: 8
+ labelFormat: "%i\u00B0"
+ title: "Angle"
+ titleVisible: true
+ titleFixed: false
+ }
+
+ ValueAxis3D {
+ id: yAxis
+ segmentCount: 8
+ labelFormat: "%i \%"
+ title: "Value"
+ titleVisible: true
+ labelAutoRotation: 0
+ titleFixed: false
+ }
+
+ ValueAxis3D {
+ id: zAxis
+ segmentCount: 5
+ labelFormat: "%i nm"
+ title: "Radius"
+ titleVisible: true
+ titleFixed: false
+ }
+
+ Theme3D {
+ id: customTheme
+ type: Theme3D.ThemeQt
+ // Don't show specular spotlight as we don't want it to distort the colors
+ lightStrength: 0.0
+ ambientLightStrength: 1.0
+ backgroundEnabled: false
+ gridLineColor: "#AAAAAA"
+ windowColor: "#EEEEEE"
+ }
+
+ //! [0]
+ Surface3D {
+ id: surfaceGraph
+ anchors.fill: parent
+
+ Surface3DSeries {
+ id: surfaceSeries
+ flatShadingEnabled: false
+ drawMode: Surface3DSeries.DrawSurface
+ baseGradient: surfaceGradient
+ colorStyle: Theme3D.ColorStyleRangeGradient
+ itemLabelFormat: "(@xLabel, @zLabel): @yLabel"
+
+ ItemModelSurfaceDataProxy {
+ itemModel: surfaceData.model
+ rowRole: "radius"
+ columnRole: "angle"
+ yPosRole: "value"
+ }
+ }
+ //! [0]
+
+ //! [1]
+ // Remove the perspective and view the graph from top down to achieve 2D effect
+ orthoProjection: true
+ scene.activeCamera.cameraPreset: Camera3D.CameraPresetDirectlyAbove
+ //! [1]
+
+ //! [2]
+ flipHorizontalGrid: true
+ //! [2]
+
+ //! [4]
+ radialLabelOffset: 0.01
+ //! [4]
+
+ //! [5]
+ inputHandler: TouchInputHandler3D {
+ rotationEnabled: !surfaceGraph.orthoProjection
+ }
+ //! [5]
+
+ theme: customTheme
+ shadowQuality: AbstractGraph3D.ShadowQualityNone
+ selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndColumn
+ axisX: xAxis
+ axisY: yAxis
+ axisZ: zAxis
+
+ aspectRatio: 1.0
+ horizontalAspectRatio: 1.0
+ scene.activeCamera.zoomLevel: 140
+ }
+ }
+
+ Item {
+ id: buttons
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ height: spectrogramView.portraitMode ? (polarToggle.height + 10) * 3
+ : polarToggle.height + 30
+ anchors.margins: 10
+
+ //! [3]
+ Button {
+ id: polarToggle
+ anchors.margins: 5
+ anchors.left: parent.left
+ anchors.top: parent.top
+ width: spectrogramView.buttonWidth // Calculated elsewhere based on screen orientation
+ text: "Switch to\n" + (surfaceGraph.polar ? "cartesian" : "polar")
+ onClicked: surfaceGraph.polar = !surfaceGraph.polar;
+ }
+ //! [3]
+
+ Button {
+ id: orthoToggle
+ anchors.margins: 5
+ anchors.left: polarToggle.right
+ anchors.top: parent.top
+ width: spectrogramView.buttonWidth
+ text: "Switch to\n" + (surfaceGraph.orthoProjection ? "perspective" : "orthographic")
+ onClicked: {
+ if (surfaceGraph.orthoProjection) {
+ surfaceGraph.orthoProjection = false;
+ xAxis.labelAutoRotation = 30;
+ yAxis.labelAutoRotation = 30;
+ zAxis.labelAutoRotation = 30;
+ } else {
+ surfaceGraph.orthoProjection = true;
+ surfaceGraph.scene.activeCamera.cameraPreset
+ = Camera3D.CameraPresetDirectlyAbove;
+ surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
+ xAxis.labelAutoRotation = 0;
+ yAxis.labelAutoRotation = 0;
+ zAxis.labelAutoRotation = 0;
+ }
+ }
+ }
+
+ Button {
+ id: flipGridToggle
+ anchors.margins: 5
+ anchors.left: spectrogramView.portraitMode ? parent.left : orthoToggle.right
+ anchors.top: spectrogramView.portraitMode ? orthoToggle.bottom : parent.top
+ width: spectrogramView.buttonWidth
+ text: "Toggle axis\ngrid on top"
+ onClicked: surfaceGraph.flipHorizontalGrid = !surfaceGraph.flipHorizontalGrid;
+ }
+
+ Button {
+ id: labelOffsetToggle
+ anchors.margins: 5
+ anchors.left: flipGridToggle.right
+ anchors.top: spectrogramView.portraitMode ? orthoToggle.bottom : parent.top
+ width: spectrogramView.buttonWidth
+ text: "Toggle radial\nlabel position"
+ visible: surfaceGraph.polar
+ onClicked: {
+ if (surfaceGraph.radialLabelOffset >= 1.0)
+ surfaceGraph.radialLabelOffset = 0.01;
+ else
+ surfaceGraph.radialLabelOffset = 1.0;
+ }
+ }
+
+ Button {
+ id: surfaceGridToggle
+ anchors.margins: 5
+ anchors.left: spectrogramView.portraitMode ? (labelOffsetToggle.visible ? parent.left
+ : flipGridToggle.right)
+ : (labelOffsetToggle.visible ? labelOffsetToggle.right
+ : flipGridToggle.right)
+ anchors.top: spectrogramView.portraitMode ? (labelOffsetToggle.visible ? labelOffsetToggle.bottom
+ : orthoToggle.bottom)
+ : parent.top
+ width: spectrogramView.buttonWidth
+ text: "Toggle\nsurface grid"
+ visible: !surfaceGraph.orthoProjection
+ onClicked: {
+ if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe)
+ surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
+ else
+ surfaceSeries.drawMode |= Surface3DSeries.DrawWireframe;
+ }
+ }
+ }
+
+ Item {
+ id: legend
+ anchors.bottom: parent.bottom
+ anchors.top: buttons.bottom
+ anchors.right: parent.right
+ width: spectrogramView.portraitMode ? 100 : 125
+
+ Rectangle {
+ id: gradient
+ anchors.margins: 20
+ anchors.bottom: legend.bottom
+ anchors.top: legend.top
+ anchors.right: legend.right
+ border.color: "black"
+ border.width: 1
+ width: spectrogramView.portraitMode ? 25 : 50
+ rotation: 180
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "black" }
+ GradientStop { position: 0.2; color: "red" }
+ GradientStop { position: 0.5; color: "blue" }
+ GradientStop { position: 0.8; color: "yellow" }
+ GradientStop { position: 1.0; color: "white" }
+ }
+ }
+
+ Text {
+ anchors.verticalCenter: gradient.bottom
+ anchors.right: gradient.left
+ anchors.margins: 2
+ text: surfaceGraph.axisY.min + "%"
+ }
+
+ Text {
+ anchors.verticalCenter: gradient.verticalCenter
+ anchors.right: gradient.left
+ anchors.margins: 2
+ text: (surfaceGraph.axisY.max + surfaceGraph.axisY.min) / 2 + "%"
+ }
+
+ Text {
+ anchors.verticalCenter: gradient.top
+ anchors.right: gradient.left
+ anchors.margins: 2
+ text: surfaceGraph.axisY.max + "%"
+ }
+ }
+}
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.png b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.png
new file mode 100644
index 000000000..02f41230a
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/heightmap.png
Binary files differ
diff --git a/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/main.qml b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/main.qml
new file mode 100644
index 000000000..2d0b82dba
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qml/qmlsurfacegallery/main.qml
@@ -0,0 +1,57 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item {
+ id: mainView
+ width: 1280
+ height: 1024
+ visible: true
+
+ property bool portraitMode: width < height
+
+ TabBar {
+ id: tabBar
+ width: parent.width
+
+ TabButton {
+ text: "Height Map"
+ }
+
+ TabButton {
+ text: "Spectrogram"
+ }
+
+ TabButton {
+ text: "Oscilloscope"
+ }
+ }
+
+ StackLayout {
+ anchors.top: tabBar.bottom
+ anchors.bottom: parent.bottom
+ width: parent.width
+ currentIndex: tabBar.currentIndex
+
+ SurfaceHeightMap {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ portraitMode: mainView.portraitMode
+ }
+
+ SurfaceSpectrogram {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ portraitMode: mainView.portraitMode
+ }
+
+ SurfaceOscilloscope {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ portraitMode: mainView.portraitMode
+ }
+ }
+}
diff --git a/examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.pyproject b/examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.pyproject
new file mode 100644
index 000000000..afe8c179b
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.pyproject
@@ -0,0 +1,10 @@
+{
+ "files": ["datasource.py",
+ "main.py",
+ "qmlsurfacegallery.qrc",
+ "qml/qmlsurfacegallery/SpectrogramData.qml",
+ "qml/qmlsurfacegallery/SurfaceHeightMap.qml",
+ "qml/qmlsurfacegallery/SurfaceOscilloscope.qml",
+ "qml/qmlsurfacegallery/SurfaceSpectrogram.qml",
+ "qml/qmlsurfacegallery/main.qml"]
+}
diff --git a/examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.qrc b/examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.qrc
new file mode 100644
index 000000000..92f0f054b
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/qmlsurfacegallery.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>qml/qmlsurfacegallery/heightmap.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/datavisualization/qmlsurfacegallery/rc_qmlsurfacegallery.py b/examples/datavisualization/qmlsurfacegallery/rc_qmlsurfacegallery.py
new file mode 100644
index 000000000..510c18aa0
--- /dev/null
+++ b/examples/datavisualization/qmlsurfacegallery/rc_qmlsurfacegallery.py
@@ -0,0 +1,39967 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.5.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x09\xbf\x0b\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x02\x00\x00\x00\x02\x00\x10\x06\x00\x00\x00\xa4\xe8\x08\xb9\
+\x00\x00\x01niCCPicc\x00\x00(\x91u\
+\x91;K\x03A\x14\x85\xbf$J$F,\xb4\x08b\
+\xb1E\x14\x0b\x85\xa0 \x82\x8d\xc6\x22M\x90\x10#\xf8\
+j\x925\x0f!\x8fe7A\x82\xad`c\x11\xb0\x10\
+m|\x15\xfe\x03m\x05[\x05AP\x04\x11;{_\
+\x8d\x84\xf5\x8e+D$\x99e\xf6~\x9c\x99s\x999\
+\x03\xeeh^/Xm!(\x14\xcbf<\x12\xd6\x16\
+\x16\x974\xef\x0bn<\xf8\x080\x99\xd4-c:\x16\
+\x8b\xd2r|\xde\xe1R\xf5vD\xf5j\xbd\xaf\xe9\xe8\
+\x5cM[:\xb8:\x84\xc7u\xc3,\x0bO\x09G\xd7\
+\xcb\x86\xe2m\xe1^=\x97\x5c\x15>\x14\x1e6\xe5\x80\
+\xc2WJO9\xfc\xac8\xeb\xf0\xbbb3\x11\x9f\x01\
+\xb7\xea\xa9e\xffp\xea\x0f\xeb9\xb3 <$\x1c,\
+\xe4+\xfa\xefy\xd4M\xfc\xe9\xe2\xfc\x9c\xd4>\x99\xfd\
+X\xc4\x89\x10F#E\x855\xf2\x94\x19\x91Z\x94\xcc\
+\x9a\xfbB?\xbeYJ\xe2\xd1\xe5oP\xc5\x14G\x96\
+\x9cx\x87E\xadH\xd7\xb4\xd4\x8c\xe8i\xf9\xf2TU\
+\xee\xff\xf3\xb42c\xa3Nw\x7f\x18\xda\x9fl\xfbm\
+\x00\xbc;P\xaf\xd9\xf6\xd7\x91m\xd7\x8f\xc1\xf3\x08\x17\
+\xc5\x86\xbf$9M|\x88^kh\xc1\x03\xe8\xde\x84\
+\xb3\xcb\x86\x96\xda\x85\xf3-\x08<\x18I3\xf9#y\
+d\xba3\x19x=\x85\xaeE\xe8\xb9\x01\xdf\xb2\x93\xd5\
+\xef:'\xf7\x90\xd8\x90'\xba\x86\xbd}\x18\x94\xfd\xdd\
++\xdf\xe3.g\xfd\x87\xf3\xce\xbb\x00\x00\x00\x09pH\
+Ys\x00\x00\x0b\x11\x00\x00\x0b\x11\x01\x7fd_\x91\x00\
+\x00\x02\xcbtEXtRaw profi\
+le type exif\x00\x0aex\
+if\x0a 334\x0a4578\
+6966000049492a00\
+080000000a001201\
+0300010000000100\
+00001a0105000100\
+0000\x0a860000001b0\
+10500010000008e0\
+0000028010300010\
+0000002000000310\
+1020020000000\x0a96\
+0000003201020013\
+000000b600000046\
+4703000100000001\
+0000004947030001\
+000000\x0a140000006\
+987040001000000d\
+e000000039002001\
+3000000ca0000000\
+000000000000000\x0a\
+0000000000000000\
+000000006461726b\
+7461626c65206461\
+726b7461626c652d\
+322e342e\x0a322d312\
+e666332373230313\
+83a30343a3036203\
+0373a32383a30360\
+0323031383a30343\
+a\x0a30322031343a34\
+393a343600050003\
+9002001300000020\
+0100000490020013\
+0000003401\x0a00000\
+1a00300010000000\
+100000002a004000\
+1000000000800000\
+3a00400010000000\
+008\x0a000000000000\
+323031383a30343a\
+30322031343a3439\
+3a34360032303138\
+3a30343a3032\x0a203\
+1343a34393a34360\
+0\x0a22\xf6\xfb\x00\x00\x00ZtEXtRa\
+w profile type i\
+ptc\x00\x0aiptc\x0a \
+26\x0a50686f746f736\
+86f7020332e30003\
+842494d040400000\
+0000000\x0a\xc7\xd1i\xdc\x00\x00\x17U\
+tEXtRaw profile \
+type xmp\x00\x0axmp\x0a \
+ 2928\x0a3c3f78706\
+1636b65742062656\
+7696e3d22efbbbf2\
+22069643d2257354\
+d304d7043656869\x0a\
+487a7265537a4e54\
+637a6b633964223f\
+3e0a3c783a786d70\
+6d65746120786d6c\
+6e733a78\x0a3d22616\
+46f62653a6e733a6\
+d6574612f2220783\
+a786d70746b3d225\
+84d5020436f72652\
+0\x0a342e342e302d45\
+78697632223e0a20\
+3c7264663a524446\
+20786d6c6e733a72\
+64663d2268\x0a74747\
+03a2f2f7777772e7\
+7332e6f72672f313\
+939392f30322f323\
+22d7264662d73796\
+e74\x0a61782d6e7323\
+223e0a20203c7264\
+663a446573637269\
+7074696f6e207264\
+663a61626f75\x0a743\
+d22220a202020207\
+86d6c6e733a74696\
+6663d22687474703\
+a2f2f6e732e61646\
+f6265\x0a2e636f6d2f\
+746966662f312e30\
+2f220a2020202078\
+6d6c6e733a786d70\
+3d22687474703a\x0a2\
+f2f6e732e61646f6\
+2652e636f6d2f786\
+1702f312e302f220\
+a20202020786d6c6\
+e733a65\x0a7869663d\
+22687474703a2f2f\
+6e732e61646f6265\
+2e636f6d2f657869\
+662f312e302f220a\
+\x0a202020746966663\
+a595265736f6c757\
+4696f6e3d2230202\
+f2030220a2020207\
+46966663a\x0a585265\
+736f6c7574696f6e\
+3d2230202f203022\
+0a20202074696666\
+3a526174696e673d\
+22\x0a31220a2020207\
+46966663a5261746\
+96e6750657263656\
+e743d223230220a2\
+02020746966\x0a663a\
+4f7269656e746174\
+696f6e3d2231220a\
+202020746966663a\
+5265736f6c757469\
+6f6e\x0a556e69743d2\
+232220a202020746\
+966663a446174655\
+4696d654f7269676\
+96e616c3d2232\x0a30\
+31383a30343a3032\
+2031343a34393a34\
+36220a202020786d\
+703a4d6f64696679\
+446174\x0a653d22323\
+031383a30343a303\
+62030373a32383a3\
+036220a202020786\
+d703a4372656174\x0a\
+6f72546f6f6c3d22\
+6461726b7461626c\
+65206461726b7461\
+626c652d322e342e\
+322d312e\x0a6663323\
+7220a20202065786\
+9663a44617465546\
+96d654f726967696\
+e616c3d223230313\
+8\x0a3a30343a303220\
+31343a34393a3436\
+220a202020657869\
+663a446174655469\
+6d65446967\x0a69746\
+97a65643d2232303\
+1383a30343a30322\
+031343a34393a343\
+6220a20202065786\
+966\x0a3a436f6c6f72\
+53706163653d2231\
+220a202020657869\
+663a506978656c58\
+44696d656e73\x0a696\
+f6e3d22323034382\
+20a2020206578696\
+63a506978656c594\
+4696d656e73696f6\
+e3d22\x0a3230343822\
+2f3e0a203c2f7264\
+663a5244463e0a3c\
+2f783a786d706d65\
+74613e0a202020\x0a2\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020\x0a20202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+\x0a202020202020202\
+0202020202020202\
+0202020202020202\
+0200a20202020202\
+020202020\x0a202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+20\x0a2020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+02020202020\x0a2020\
+2020202020202020\
+2020202020202020\
+0a20202020202020\
+2020202020202020\
+2020\x0a20202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020\x0a20\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+202020\x0a202020202\
+02020202020200a2\
+0202020202020202\
+0202020202020202\
+020202020202020\x0a\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+20202020\x0a2020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0\x0a202020200a2020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020\x0a20202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+020\x0a202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020200a2020\x0a202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+02020\x0a2020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+20202020202020\x0a2\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0200a20202020202\
+0202020\x0a20202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+\x0a202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+020202020\x0a202020\
+2020202020202020\
+2020202020202020\
+0a20202020202020\
+2020202020202020\
+20\x0a2020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+02020202020\x0a2020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020\x0a20202020202\
+02020202020200a2\
+0202020202020202\
+0202020202020202\
+0202020202020\x0a20\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+202020\x0a202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+020202020202020\x0a\
+20202020200a2020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+20202020\x0a2020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0\x0a20202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020200a20\x0a20202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+020\x0a202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+202020202020\x0a202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0200a20202020202\
+02020\x0a2020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+20202020202020\x0a2\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020\x0a20202020\
+2020202020202020\
+2020202020202020\
+0a20202020202020\
+2020202020202020\
+\x0a202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+020202020\x0a202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+20\x0a2020202020202\
+02020202020200a2\
+0202020202020202\
+0202020202020202\
+02020202020\x0a2020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020\x0a20202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020\x0a20\
+20202020200a2020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+202020\x0a202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+020202020202020\x0a\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020200a\x0a2020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0\x0a20202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020\x0a20202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0200a20202020202\
+020\x0a202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+202020202020\x0a202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+02020\x0a2020202020\
+2020202020202020\
+2020202020202020\
+0a20202020202020\
+20202020202020\x0a2\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020\x0a20202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+\x0a202020202020202\
+02020202020200a2\
+0202020202020202\
+0202020202020202\
+020202020\x0a202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+20\x0a2020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+02020202020\x0a2020\
+20202020200a2020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020\x0a20202020202\
+0202020202020202\
+0202020202020202\
+0202020202020202\
+0202020202020\x0a20\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+2020202020202020\
+202020\x0a0a2020202\
+0202020202020202\
+0202020202020202\
+0202020202020200\
+a3c3f787061636b\x0a\
+657420656e643d22\
+77223f3e\x0a\xc0$8\x8d\x00\x00 \
+\x00IDATx\xdal\x9d\x09\xfc}c\xf5\xfd\xcf\
+=\x9f\xaf\xa9\x102\x961*CHR\x1aQ!4\
+ \xa4\xfe\x84\x92BR\x9a34\xaa\x90\xa2R2K\
+E%\xa59%D\xb32f(d\x88\xa4R\xa4\x10\
+\x9f{\xfe{=g\xbd\xf7\xf3t\x7fY\xafW\xa7{\
+\xbf\xf7s\xef\x19\x9ea\x0fk\xaf=\xe9\xd7\x0fl0\
+\x0c\xc3[\x84\xae\xeb\x9eT\xd0\xf5\xb7\x04n\x8d\xe3\xf7\
+\x84x\xff\xa9\x05]wxA\xd7m\x1d\xd8\xaa\xeb&\
+\x8b\x0bq\xdcS\x88\xcf\x7f2\xf0\x89x\xfdx\xa1\xbe\
+?\xb7\x9f\x10\xc7{\x03\xf7\xc4\xf1\xf1B|\xfe?B\
+|\xdf\x5cA7<B\x88\xe3\xdf\x84x\xff\x8c\x82\xae\
+\xbb\xb6\xa0\x1b\xde\x108\xa0\xeb\xe6\x97\x13\xe2\xf5MB\
+\xfc\xfba\x81C\xe3\xf7\xde!\xc4\xfbk\x07\xd6\xe9\xba\
+\xe9\x0f\x84\xf8\xfc\xc5B|\xee\x98\x82nr\xa6\x10\x9f\
+\xfb\xb3\x10\xef\xef^\xd0\x0d\xaf\x17\xe2\xf5F\x05\xddd\
+%!\xde\xff\xa1\x10\xef\x9fX\xd0\x0d\x9f\x09\x1c\x1f\xaf\
+?\x158.\x8e\xa7\x17t\xc3YB\xbc\xbe\xb0\xa0\xeb\
+\xfe\x15\xb8/\x8e\x8f.\xe8\xbaG\x14t\xdd\x82\xc0B\
+~\x7f\x99\xf8\x9d\xff'\xc4\xeb/\x05\xbe\x1c\xaf_\x1f\
+\xd8'^oU\xd0u\xaf)\xe8&o\x17\xe2\xf5\xb6\
+\x05\xdd\xe4#B\x1c\x1f\x16\xe2\xfd\x9f\x16t\xfd\xb7\x84\
+8^-\xc4\xfb\x9f\x0b\xc4\xf9M\xae\x17\xe2\xf8\x9b\xc0\
+e\xf1\xfe\x9f\x0a\xba\xe1C\x81x\xae\x0f\x7f=pn\
+\xbc~\xa3\x10\x8f\xe5f!>\xff~!>\xff\x86\x82\
+n\xb2A`\xfd:^\xe2Z\x16*\xd7sEA7\
+\x1c(\xc4q#!\xde_\x22\xb0d\x1c\xfb\x82n\xf2\
+b!^\xbeY\x88\xdf\xd93\xb0G\xbc>^\x88\xcf\
+\xadT\xd0u\x7f/\xe8\xba?\x17t\xdd\xda\x05]\xf7\
+\x98\x82\xae[\xb1\xa0\x9b\xbcG\x88\xe37\x85x\xff;\
+\x05\xdd\xe4P!^\xafU\x90\xef\x0f\x8f\x13b|\xfc\
+E\x88\xe3M\x81?\xc4\xbf\x7f(\x10\xf7\xa1_A\x88\
+\xbf\xbfT\xf0\xf8:\xac>\xe7\xee\xc6\x82\xae[\xb8\xa0\
+\x1bv\x0c\xbc,^\xff$pI\xfc\xdd7\x84\xf8\x9e\
+\xdf\x0a\xf1\xfa\xf7\x81\x1b\xe2xo \xc6\xff\xe4\x12\xc1\
+\xf3j\x938\xde]\xd0u\xf7\x14t1\x06\x84\xae\xfb\
+zA\xd7\xed\x15\x88y\xd4\xed\x1axE\x1c\x97*\x18\
+\xc7\xd1\x828\xfe\xa3\xa0\xeb\xee\x0f\xfc\xdb\xf3i\x81_\
+\xdf\x1f\xc7\xdf\x05\xae\xf7\xf7\xc5\xf3\xed~\x148\xdf\xcf\
+-\xce\xbf{ZA\xd7\xad_\xd0u\x8b\x17\xe4|\x9c\
+^\x15\xb82^\x7f]\x88\x7f\xbf\xb7\xa0\xeb\xaf\x10\xe2\
+\xfd\x1b\x02q?\x1e^$\x10\xdf7\xbf\xbf\x10\xef\x1f\
++\xc4i^#\xc4i\x9d%\xc4\xdf\x7f\xbc\xa0\xeb\xdf\
+(\xc4\xfd\xb8.\xa0qy\xa7\xd0\xcc\x93\x87\x0a\xban\
+\xd1\xc0\x22\xbe\xdf:.V\xd0u\xdf\x0b|7~g\
+W!\x8e\x9b\x07\xb6\x88\xf7\x9f\x13xv3\xee\x1e\x0c\
+<\x10\xc75\x0a\xba\xc9A\x01\xadw'\x05b>O\
+.\x08h\xbe\xbe\xbb\xa0\x9b\xbcQ\x88\xd7o,\xa8\xf3\
+n\xaf\x82.\xbe[\xa8\xf3v\xff\x82n\xf2*!^\
+?\xa3\xa0\xebV.\xa8\xe3\x99q\xbbCA7Y[\
+\x88\xf3\xbeF\xf0\xf8\xf9I\x1c\xbf[\x90\xf7\xb9\xac\xb7\
+[\xd7\xef\x9d|tr\xf4\xe4\xe88\x9e%\xc4\xfbG\
+\x16t\xdd\x0b\x0b\xba\xee\xca\x82\xae\xbb\xaa\xa0\xeb\xd6)\
+\xe8\xba\xe7\x16\xc4\x0f\x16\xe4}\x9e<[\xa8\xebJ\xb7\
+EA\xd7\xad;\xfe\xdd\xe4I\x93\xf5\xcb|\x7fuA\
+\xae\x97\xdd\xa7\x0b\xba\xe1\x09B\x1c\xdf,\xc4\xfb?/\
+\xc8\xf5\xa5[\xa1\xa0\x9b\xbcB(\xdf3\xde\xc7\xa9\xcf\
+\x83\xf1\xff\xef\x82\xfa\xdfS\x0a\xba\xc9\xc7\x85x\xfd\x89\
+\x82\xbc\x1f\x93\x97\x8c\xebH\xb7]\x81\x9e\x8b\x9e|\xfd\
+\xbb\xf5}\xde\xeb\x16t\xdd\xe3\x0b\xban\xe3\x82\xfaw\
+\x8b\x16t1F\xca|\x99\xbc`\xb2\xe5d\xcbx\xbd\
+gA7\xd9_\xa8\xcf\xb9;\xb0@\xbf\x1f\x88\xd7\x9b\
+\x17\xd4\xfb\xef\xef\x9d\xbcH\x88\xd7/(\xa8\xf3\xcc\xeb\
+\xe6d-!^\xafZ\x90\xebY\xdc\x17\xa1\xeb\xee(\
+\xa8\xffy^\x96}\xe5_u\x9f\xca\xeb\xe1:\xd9o\
+\xe6\x0br\xdd\x8d\xbdF\xc8\xf18y\xac\x10\xafW+\
+\xe8\xba\xc7\x15\xd4\xf5\x92\xf5\xd6\xdf\x9f\xe3d\x9b\x82\xae\
+\xdb\xb1\xa0\xeb^T\xd0M\xb6\x11\xfe\xc7\xf5z]\x99\
+<W\x88\xd7O(\xe8\x86\xcf\x09^\x9f~\xd7\xcc\x9f\
+\xffWP\xe7\xdf;<\xff\xf6+\xe8\xba\x0d\x0b\xba\xc9\
+*B\xf3\x5c}\x1e\xb1F\x0au~\xfdUh\xe6\x15\
+\xf3l\xd9\x82\xfc\xfda'!\xfe\xee\x85B\xbc\xff\xac\
+\x82.l\x8bC\x8b}\xa1u\xea\xba8~Fh\xd6\
+\xff/\x09\xf1\xfa\x07\x05u\xfdb\x1d\xf0\xfd\x9c,/\
+\xd4\xe77\xfcEh\xc6\xff\xec\xf3\xfacA\xd7]]\
+\xd0u\x7f)\xa8\xe3e\xd3\x82n\xb2\x89\xd0\x9c/\xf7\
+\xfdy\x05\xddd[\xa1\x0e\xa3\xe1\x83B\xfc\x9f_\x15\
+t\x93\xa7\x0aq\xbcI\x88\xe3\x89B]\x7f\xca\xfe\xf5\
+\xfbx\xfd\xd8\x82<\xaf\xc9\x0f\x858\xde#\xd4\xfdw\
+\xb2\xb1\x10\x971'\xc4\xebM\x85\xf8\xdd\xd7\x08\xf1\xfe\
+\x1b\x84f<\xb1\x1e\xbeZ\xa8\xfb\xda\xf0~\xa1\xaes\
+\xfd\xe1B\xbc\xffV!\xa6\xc9\xa7\x848\xfeT\x88\xcf\
+m.\xc4\xbf\x9f\x22\xc4\xe7_*\xc4\xfb\x1b\x0aq|\
+\x9dP\xc7\xe9\xe4\x0fB\x1cw\x10\xe2\xef\x8e\x12\xe2\xf7\
+\xcf+\xe8\xfaW\x09q\xbcJ\x88\xcf=K\x88\xe3\xc2\
+B\x1cO\x11\xbc\xcf,\x11\x7f\xff2!\x8e\xdf\x11\xe2\
+\xfd\xcf\x16\xc4\x07\x0b\xba\xfeOB\x1c\x17\x11\xe2s\xdf\
+\x17\xe2x\xaa\x10\x1f{\x8b\x10\xfb\xe4:B\x1c\xd7\x14\
+\xe2\xef\x8f+\xe8\xba\xdf\x16\xa4}0\xf9\x8bP\xc7\xeb\
+d9!\x8e7\x0b\xf1\xb9\xd7\x17t\x93\xcf\x09\xf59\
+L^.\xc4\xf1\x0e!\x8e_\x17\xe2\xf8S!\xfe\xee\
+\x90q\xbc\xa7]\xf7\xd7\x82\xfc;\x9eWwCA\x1d\
+\xdf\xef\x15\xe2\xfa\x8e\xec\x8f\xe8\x8f(\xebSY\x87\x87\
+\x03\x84\xffZ?\xdfX\xd6\xcf\xed\x03z>K\x05\x96\
+\x8e\xbf{\xa5\x10\xd7}\x9a\x10\xaf\x9f$\xc4\xbf\x7f:\
+\x10\xd7?\xbdQ\x88\xf7/\x0c\x5c\x14\xef_\x13\xf8m\
+c\xf7\x9d]\xd0\x0d\xe7\x0e\xdf\x18\xc2\xfe\x9a\xbfi\xfe\
+\xc6\xf9\x18\xcf\xc3/\x85\xf8\xdc\xb2B\xbc~\xa9\x10\xaf\
+\xbf,\xc4\xeb\xaf\x08\xf1\xf9\xc5\x84j\xc7\xcd\x1d\x1d\xf8\
+X\xbc>:\xf0\xd1\xf8\xdc\x0e\x81\x1d\xab\xdf0\xf9\xae\
+\x10\xc7\xa7\x09q~\xbf\x16\xe2\xf3o/\xe8\x86O\x0a\
+q\xdcF\x08\xfb\xe8\xc6\x87oz8\xce\x7f\xfen!\
+\xae\xe3\xb9B\xfc\xfdmB\x19\x7fG\x0e\xb1\x8f\x0f\x97\
+\x0fW\x0caWM\xdf$\xc4\xeb\x95\x86\x15\x87\x15\xeb\
+\xfa\xd3\x1f\xd2\x1f\xda\x1f\xda\xcc\x8b+\xc3\x0e\x8b\xfd~\
+\xee`!\x8e\xe7\x0aq\xbcZh\xfc\x9d\xfd\x848\xbf\
+\x8f\x15t\xc3'\x84\xf8\x9d\x95\x84z\x9f\xfa\x0d\x848\
+\xde,\xc4\xdf\x7fL\xa8\xf6\xc1\xf0\x1e!\x8e\xdf\x12\xe2\
+\xdf\xff&\xc4\xef\x1d/\xc4\xdf\xbd+\xf0\xce\xba\x9eO\
+\xee\x16\xe2\xf3\xff\x16\xe2\xfa\xbf'x\xb9\x9b\xd4\xfb1\
+\x7f\xab\x10\xc7\xd5\xe6W\x9f\x8f\xfdhz\x8b\x10\xc7\xd7\
+\x09q\xff\xe2\xee\xe9\xfeM\x97\x11\xe2\xf5o\x84\xf8\xfc\
+zB|\xffK\x848\xae'T\xfb\x95u~\xf8\xa8\
+\x10\x9f?P\x88\xd7\xff\x10\xe2\xf8\x07!\xbe\xf7.!\
+\xfe\xfd$!^?R\x88\x7f\x7f\xa5\x10\xaf\x9f \xc4\
+\xf1\x22\xa1\xfa\x8b\x93\xb7\x0a\xf1\xfa\xe3B\x1c\x9f+\xc4\
+\xef\xbe\xb2\xa0\x1b\xf6\x10\xe2\xb8\xb4\x10\xc7\xa3\x85\xf8\x9e\
+\x9f\x0bu\xde\x16;\xfa\x86jG\x0c\x8f\x15\x8a?|\
+\xf7\xa0\xfb\xb7\xa6\x10\xc7e\x848./\xc4\xf1b!\
+\x8e\x8b\x08q\xec\x858.%\xd4}cx\xbe\x10\xc7\
+#\x84Xf'\xc7\x08\xf1\xc0\x96\x0a\xe8\xc4v\x09\xec\
+\x1c\xc7\xcd\x02\xb1\x90N\xff,\xc4\xbf\x7f-pN\x1c\
+\x9f/T\xc3\xa8{s\xe0\xa08\xbe\xa7\xa0\xeb\xde\x16\
+\x88\x81\xdf\xbf?\xf0\xbe\xb8\xb0\x07\x04\x1b\xd4\x07\x14\xc3\
+\xea\x05\xc5\xb0z_A7\xf9\xac\xd0\x18L\x9f\x12\x9a\
+\x05\xf4\xd2\x82n\xd8X\x88\xf39Y\xb0\x81\xb3\xac\x07\
+\xf6\x17\xe3\xf5\x22\x05\xb9\x00t;\x05\xb8\x8e\xcd\xe2s\
+O\x16\xe2x\xa0`\x07@\xe7\xbdsA7\x5c&\xc4\
+\xf7\xffM\xa8\x06$\x0b\xef\xe4\x00!>w\xb0\xe0\x09\
+\x1f\x1b\xeepx\xe0C\xd5\x10H\x87E\xe6\xdb\xbc\x17\
+N}\xdf]\x81\xbf4\x86\x81\xb6Q9\x02\xcb\x15t\
+\xc3\xcdB|\xefk\x03\xfb\xd8q\x8a\x85c\xb2W \
+\x06N\xf7\x92\x82\xea\x08`\x88\xe30~\xab \x7f\x7f\
+\xf2.!^\xdf\x1e\xf8c\xdd\xf8\xba}\x03\xfby\x83\
+\xfb~s>\x17\x07b\xc1\xeb\xe7\x03\x0f\xc7\xe9\xdf&\
+\xc4\xf1\xb7BL\xec\xcf\x07\xceh\x0c\xf1w\x15t\xdd\
+*\x05ixN6\x13\xea\x82<}\x99P\x0d6\x02\
+(\xc5\xbc\x99\xb3!\xf2\x01;\x0e\xb1\xd0Mo\x16\xe2\
+\xef\xef\x17\xaa\x81\x91\x86.\x86\x92\x17\xb0\xee\x97\x059\
+>\x86\xdf\x0a\xf1w\x8f\x11\xea\xc2\x9c\x86\xb6\xc7S\x1a\
+\xc0\x1a\x17\x1b\xd9 }|\x0dpLO\x17\xe2\xdf\x17\
+\x11<n\xc3\xa0\x1d~.T\x03\x05C`8T\xb0\
+\x01\x13\x8e\xcdp\x92\x10\xc7O\x0b\xf1\xfe\x8aB\xfc\xdd\
+A\x05]\xf7\xcd\x82\xea0\xe0\xd0\xcb\xad\x94\x01\xb7f\
+A7\x1c#T\xc7q\xf2\x15\xa1\x06$&\xcb\x08\xf1\
+\xb9\x7f\x0a\xf1\xfe}\x01\x8e\xffr\xe0\xe4\xce\xc6\xd1\xc7\
+\xc1\x7fTA587(\x18\x0d\xd6M\x9b\x00\xd8\xef\
+\x02\xbf\xaf\x06\xd0\xfc\x1f\x85\xf8\xf7\x97\x16t\xc3aB\
+\xbc>\xab`4T\xaf\xaa\xef\xf7\xdf\x14\xe2\xf8B\xa1\
+\x1a\xe4\x93\x1b\x85x\xffA\xa1\x09\xa8\x10\xd0\xe093\
+\x9f\x1e.\xa8\xe3UnR8\x94\xe1\xdc/Y\xaeC\
+\x8e\xfc\xc9\x9eg\x0a\x14\xfd\xa1\xa0\xdeW\xdf\xcfb\x16\
+?\xdd\xeb\xd5a\x8dc\x8f\x03\xf7\xfb\x82j\xd8`p\
+\x110\xc1\x00\xb6A\x97\x8e\xeesF\xc7s\xb8Hh\
+\x0c\x22?\x9f\x5c\x9f\x1c8\xe0{\x86\xef\x0a\x8dCr\
+~A\x0d\xfc<\xb1\xa0\xeb\x96.\xc8\x00F\xf7\x9f\x82\
+\x5c''/\x13\xe2\xfdo\x17t1\x06\xfeY\xc6\xc1\
+\x83\x05\xd5\x91\xc4\x81\xe0>\x12\x18\xb8\xae\xa0:\x16K\
+\x16\xd4\x00\xe1\xe9\xc3iC\x18d\xdd\xea\xfe}\xee\x83\
+\x03\xc3\xc3\x9eB\xbc\xfebAu\xfc\x19gv\xf8x\
+\xae\xc3\x1b\xc7\x00a\x19\xa7\xf7\xd5\x000\xffM\xd6\x15\
+\xea\xb8g\x83\x9e|d\xf2\xe1\xc9\x87\x1bGg\xf6:\
+}\x9fs\xbe\xd9A\xca@%\xe3\x1f\x07\x9c\xe7\xc3}\
+^\xd4\xcfI\xa3\xe4\xe9\xe5z\x85z?p\xccl\x10\
+\x97\xf5\xf5\xf6&\xd0\xc6\xba\xe0u#\x03*\x04\xac\x96\
+/P\x80|\x5c\x8f\xf8~\x1cv\xef\x079^x\x8d\
+!N\x00\x80\xd78\xee\x9c?\x0e\xbc\x9fO\x9e\x07\x01\
+\x8e\xe5\xe3\xdb\x96/\x81\xa9UJ`\x8a\x80\x10\x01*\
+\xfe\x9e\xefs\x00 \xd7O\xe6\x11\xe7A\x00vU;\
+\xe2/\xea^\xdc\xbd\xb8y\xde\x9b\x14\xa4\xe3\x94\x81%\
+\x1bd\x93\xa7\x08\xcd\xba\xca\xbc'\x80\xe5ue\xf8\xd8\
+hXM\xee\x9a\xfcy\x22\xc3\xfb`\xc1\x81m96\
+\xbb\x0a\xcd|g=\xd9\xbb\xa0\x9b,!\xc4\xf7\xbcO\
+\xa8\xf3\xa7{dA\xae\x7f$,J \xf8C\xcd\xfd\
+!\xc0pKA\xd7mY\x90\xe3{\xb2\x8f\xd0\x04\xaa\
+\x09\xdc\xb1\xbe\xb3\xae\xedT\x90\xf3p\xb2\x9d\x10\xaf\xff\
+VP\xc7\xb1_\x0f\xbf\x17\x9aytk\xc1\xff\x1d\x1f\
+\x1cy.\xfc;\xe3\x83\xeb`\xfc\x12(a\xfc:\xb0\
+6\xfcXh\xe6\xe1\xb7\x848^)T\x87\x83u+\
+\x1dK\x1cN\xd6O\x02X'\x15t\x93\x0f\x095\x10\
+\x98\xf6\x95\xef\xc7\xe4;B\x1c\xe7\x85\xe6\xb9\xd9A\xc7\
+\x91e\x9d\xc6n\x9c|_\x88\xcb\xfa\x82\x10\xaf\x1f\x14\
+\xaa=\xd0=\xb3\xa0\x1b\xd6\x12\xe2\xdf?/\xc4\xf1\xe7\
+B\x1c\xaf\x15\xea\xfa\xdbo*\xc4\xe7\xcf\x13\xe2\xfds\
+\x0bj`\x87@\x05\x81E_\xefd\x0f\xa1\x09\xc01\
+?9\xdeY0\xee#?\x8a\xcf\x9f \xc4\xef\xbdG\
+\x88\xdbu\x87\x10\xbf\xbb\x9bP\x03l\xc3\xf1B|n\
+_!\xde\xbf\xa8\xa0\x06\xe6N(\xe8\x86\xbd\x84r?\
+\xce\x9b\xc4yO.\x17\xaa\xdd\xd2\xbd\xbc \xbfw\xb2\
+\x91\x10\xc7\x7fO\xfe5\x09;a\xf2\xf7\xc9?&\xff\
+(\x09\xa81\xb0p\xca\xe4\xe4\x89\xf6\xd3\x97y\xbc:\
+\x90]\x12?\x1b4\xf6\xfbaBcO\xed5\xce\x9f\
+\x92x9\xac\xd9odU<\xa3<\xe7o\xeb9\x87\
+\xfb\x7f@\x09\xec)0\xf3\xe4&\xd0\xf7W\xa1>G\
+\x02\xc6\xfd\xef\x03\x0a\x10\xee\x22\xf8s1?&{\x07\
+\x94\x18[T\x88\xe3\xd3\x85\xb8\x1f\x0b\x09\x8d#.;\
+Jv\xeb\xf3\x03/\xa8\xeb5\x81\xb1\xbc\xef\xbf(\xe8\
+\xa6w\x0b\x1e\xb7\xb1\xdfLv\x0a\x84\x9f0\xbdX\x88\
+\xd7\x87\x08\xcd}\xb4\x1fR\x022q\xfe\xc3s\x84\xf8\
+\xfcW\x85x}\xe4\xe8\xd8\xf7{\xf5{\xf6{\x95\xf3\
+9Vv\xdd\xdcT(\xeb\xc0\xb6Z\x07J\x00R\xfe\
+\xc8\xb6\x81\xed\x8a\xbdw\xb6\xec\xbd\xe9\xbdB\x13\xd8^\
+M\x88\xef{\xaa\x10\xc7'\xf6O\xe8c\xbd\xee\xaf\x13\
+\xe2\xb8_`\x7f'X\xc2\x9e\xed\xb7\x0c\xbc\xc0v\x9b\
+\x1c\xe4\xe5\x84\x12h\xb8\x5c~O\xff\x11!^?Z\
+\xa8\x81\xda2_\xce\xf0\xeb\xb8\x9e\xc9q\x01\xf9g\xbb\
+\x07v\xf3}8\xd8\x89\x90x\xdd\xdf\x1f\x08\x07\xbf?\
+Z\x88\xdf{k\xc1\x98\xa0{o\xfc\x9d\xfe\x8b\x7f\x9f\
+\x1c)\xc4\xe7\xbe/x\xbc^\x11\xc7\x7f\x0a%\x10y\
+\xa3\x02\x918\xf6\x93\xe7\x0bN\xb8\xc6\xef?\xfcG!\
+\xee\xdf\xe1s\x1f\x9a\xfbP\xb1\x13\xcbz>\xfd\xab\x10\
+\xbf\xf3\x8d1\x00$\xab\xa5\xd8-\x04\x00n\x15\xea\xfa\
+?\xddU\x88\xe3;\x85\xban\xe1\x87\xf6\xbb\x0b\xf1w\
+/\x12\xe2\xdf\x7fV\xd0\x0d_\x14\xe2\xdfw\x14\xea|\
+\x18\x1e%\xd4\xf5q\xd8^h\xd6\xed\xf7\x16t\xc3\x17\
+\x84\xf8\x9d\x7fx\xde9\x81\x87\xdf6,*T{p\
+\xf8\xc5\x18\x98\x196\x14\x9a\x04\x9d\xed\xfe\xe1SB]\
+\xc7\x09(t\xeb\x15t\xc3\x8b\x85\xea\xcf\x0e\xaf\x12b\
+[\x223\xdf}2\xa0H\xeaq\x81OW\x03xr\
+\x9fP#\x8e\xc3S\x84\xb8\xf1\xd7\x0a6\x80\x7f\x1a\xef\
+\xff)p\xa77\xd0X\x08'7\x08q\x83\xee\x0a\xfc\
+\xa5q\xd4\xed\xb8ff\x84\xcc*\x06*\x99\xb4?\x8f\
+\x1b\xfd\xf0\x9b\xc0\xaf\xe3\xf8\xa4\xc0\xfa%2)\x8c\xdf\
+w\x967\xa8o\xdb\xa0\xd7\x8d\xbdR\x88\xeb\xd8N\xf0\
+\x82ya\x9c\xc7K\x848\xfeMp\xc4q)o\x14\
+q=\xf3\x9b\x08\xd5!b\xc3\xe3\xc1\x0d\x8f\x17\x1aC\
+mZrW\xa3\xa3q\xb3#\xe2\xb75\x99\x19\x1cs\
+\x99\x01\xf7T\x87\xb7<\xb6G\xfa\xb8D\xdd\xb8'O\
+\x0chA\x7f\x7fA\xd7=9\xb0\xa1\x07\xecm\x8e0\
+\xbd\xa5\x1a\x08i \xc3\x5c\xd8T\xa8\x91\xf9a\x15!\
+~v\x9d\xc0\xba\x8e\xb4n\xef\x88\xf4\xf1\x8dA+s\
+iig\xba\x7f\x15\xcfu/\xc1\x91\xa5\x15\x9a\x8d\xf8\
+\x09\x81\xc7\x97\x8d\x22\x10\xef\x9f\x1c\xf8u\x93qfC\
+R~f\x7f3\x17\xc2@\xea\xd7\x0d\xc4\x00\x9c\x9e%\
+\xc4\xdf?C\x88\x7f?5\xa0\x0d\xe6u\x81\xd8\xd8\xa7\
+\xb7\x0a\xcd\xc4{t`\xd9&\x83\x22\xf3l}g|\
+\xbfg\x87h\x99\x86\x99\x82AO\xc6\xc7\x91\xcc\xe1w\
+B\x8dPvG\x14\x8c\x0e\x9a\xae\xe7\xc7\x81\x8b\xea\x06\
+;\xfd\xb2\x10\xff\xfe\xc3\x82\x1ai\xfb\x9aP\x03\x0b8\
+ \xc3g\x85\x1aY\xce\x0c\x9ex&\xb1\xe1L_\x1a\
+\x88\xfb><O\x88\xdf\xd9B\x88\xcfo%\xc4\xf1\x9d\
+\x82\x0d\x9d\x9b\x1c@{[\x9d\x8f\xc3&Bc\x10c\
+@\xfcD\x88\x7f\xff\x95\xd0\x18\x5c8\xc4\x18\xb6\xc5\x8a\
+\xf3\x82\xf7Pu@\xca\xe8\xfc\x87\xc7\xd3\x7f\xbc@>\
+\xda\x8e\xc3\xca6 \x17u\xa6\xe4\x85\xce\x00j\xa3\xd9\
+:\x10\xaf\xa7?\x0e\x5c\xd40=\x14!\x8d\x8dz8\
+.\xf0\xf7j\xf0\xf6\xdb\x091\xae\xae\x09\x5c\xeb\xf9w\
+w3\x8e\xff\x14\xb8\xb3:\x068zi0\xe1\x10\x5c\
+RP\xe7\x1f\x0e;\x86\x89\x22\xe8Z`o\x0a\xfc\xa1\
+\x99\x0f\xca\x7f\xe9~\x7fB0c\xe6\x88&\x10\xf5\xd5\
+\x82qa\xffy\xe3\xa8\x11H!S.\xb3u\xc5\x99\
+y\xd3200|\x19\x9f\xce\xb4\x0e'\x0a\x8dA\xfe\
+\xf4\xd1\xb1\x9cl-4\x99Vg\xbe\x87\x1f\x09\xcd:\
+H\xe6\xce\xcc\x1e\x02!d\xb8\x14\x86,\x81H\x05n\
+wi\xee\x0bL\x03;\x00d\xf82\xb0\xf1\xe4\x82\x1a\
+\x88 \xa3a\x03*\x1d\x85\x9a\x19\x7f\xa00(pp\
+n.\xa8\x8e\x1b\x99U\x02/|\x8e\xc0\x9f\x0d\xe1\xe1\
+j\xa1\xf9<\xeb%\x0e\xa8\xef+\x0c0\x0c\xad\x5cO\
+\xef\xb1cU\xc7\xf7\xc4\xe3{\x0c\x14q\x9e0\x0bx\
+\x9e8H8\xb4\x18\xb2\x18\xec\x04\x18q\xc8\x09\x18p\
+\xfe8R80\xdc_\xbe\xb7ev-h\x02\xc2\x9c\
+\xa73\x849~\x16\xf3\xe7q\xd8\x18\xd7\x1c\x09\xf80\
+n\xf8\x1e\xde\xe7{\xc8`;\x10\x1b\x8ex\xa09_\
+\xaek);\x90\xcb\xfb\xfcWu\xe0\xf61\x0e\xe4p\
+\xff\x09\xe8\xc2\x94YO\x88\xd7\x9b\x15T\xc7\x9eu\x99\
+@\xc1\xaa\xfe=\x02C\xcc\xcb\xc7\x09\x0d\x93\xcd\x0eY\
+\x8c\xe1\xf1y\x11\xd8d_x\xda\x180 s\x9d\x8e\
+\x0b\xe3p\xf7\xeeU\xdd\xab\xca\xdf\x8d\x0e\x07\x19L2\
+\xeb\xdc'\xec\x95W\x0bM\xc6\x9b@\x17\xd7I\xa6\x9c\
+\xf5\x86\x00\x08\x8e\xdd\xb9B\x0d8\x93@\xc8\x00\x01\xe7\
+\x09\x03\x83@\x96\x03\xd3\xc90a\x1cb\xe7\x10H \
+\x90\x84\xa3\xc4z\xe7\xc0c\xd9w\x9fP\x03\xa1\xc3-\
+B\xe3\xc0\xb0\x1f1N\x19O\x9c\x07\xe3\x93\x80\x19\xcf\
+\xd5\xf6\xc0p\x88P\x1d\xf54To+\xa8\x01P\x98\
+\x06\xcex\x93\xe9\xcd@\x0b\x81-3\xa2\xb0\xef&\xa7\
+\x095@\x90\xbf\xcb\xbeurAW\xd2\x14\x0aD\xec\
+R\xd0M\xde \xd4\xc4G\xda/$xl\xc0O~\
+-4\x0c\x133!\x92\xb1\xe0@\xcc\xf4\xa8\xe9G\xa7\
+\x1f-\x0c\xcd3\x873\xff/S#\x03\x5cfL\x11\
+\xb8f=\x18~ 4L\x81\x1b\x85\xf8\xdcs\x84x\
+\xffv!\x8eW\x0b\xf1\xefw\x09q\xfc\xb0P\x99\x91\
+\x19\xd0\x86\x09\xe9\xbf\xeb\x97\x16\xe2<\x8f\x16\xe2\xef\xee\
+\x17\xe2\xf8k\xa1:\x16\x939\xa1\x99\x970raz\
+\xdd\xe1\x80\x0e\xeb\x9c\x1d\xe9\xee\xb5\x05u\xdd8\xb3\xa0\
+\xeb~S\xa0\xbf+\x01[\x98-i/y\xbe\xe58\
+\xfcR\x81\xe6Aa\xc8\x95@\xc8\x065\x13\x9e\xeb\xd0\
+\x17\x848\xef\xf7\x0a\x0dC\xd3vO^?\x81Z\x07\
+\x9e\xfb3\x85x\xff\x8c\xc0\xe7\xe2\xb5\x18\xca\xeb\xdb\x1e\
+|t\x0d\xccL^)\xd4u\xbc0Z\xe3:&\x0b\
+&\x0bM\x16*\x0e\xdbvr\xa0s\x1fv\xa6zz\
+| \xae\xaf\xbf\x5c\xa8\x7f7\xdd/\x10\xf6\xdf\xf0\x01\
+!\xde_Lh\x02SO\x12\xe2\xef\xee\x0e\xc8\xbe\xd9\
+\xa7\xa0\xeb_.x]\x8b\xf5kX# f\xe9\xe2\
+B\xfc\xdd\xf1B\xc3|{\xf1\x18 -\x09\xd5\xb0'\
+\xfb\x03\xc3A?\xb0\xb9/\x0e@\x0c\xf7\x08\xf1\xfe#\
+'\x8f\x98<\xb2I\xfc9`>\xb7\xc6\xdc\xeas\xab\
+\x97\xf1\x7f\xa9\xc6\x7f\xffE!\x8e\xab\x08q|D`\
+\xb1\xca\xbc\xee?\x15\x10\x13\xe1\xee1\x93<]U\xa8\
+\x89\x83\xcc\x98\xbfS\x88\xdf\xf9h\xe0\xa8\xca\xb8\x81\x11\
+\x94\xf7c\xf7\xc9\xab&\xbb\xd7\xc0\xebd\x8d\x80\xce\xe7\
+p!\xfe\xee\x12\xa12a\xcb*'\xa6\xed\xd7\x84&\
+\x10\xf7f!\xfe\xfd\x94\x80\xd6\x81\xdd\x02\xbb7\xeb\xbd\
+\xd71Y\xe9\x93\x1f\xc7\xf9\x9d!\xc4\xdb\xfb\x8f\xd75\
+l=\xbcpxa\xc9\x9c\x17;\x7fx\x97P\xe7\xf7\
+\xe4\x16\xa1\xee\xab\xd8\xf3\xdd7\x0a\xf2\xf3\x0a\x9b)p\
+\xd6//\xc4\xebO\x0a\x95\x114\xbf\xb6P\xe7O\xff\
+a\xa1I\xac\xfe\xb8\xa0\x9b\x1e.4\xfb\x8c\xfd\x0d\x12\
+\xc70\x02&\xab\x0bN\xf8\xbe\xd6\xcc\xd5\xcd\x1b\xc6\x02\
+\x89\x11\xaf?0\x0daD\xe1O0\xef\x0bC\xe6\xd3\
+%P\x1e\x98I\x84+\x80\x87\xfd\xb7\xe8\x18\x18\xc1\xee\
+Y\xd0o#xb\xcbA;?\xf0\xa3\x86\x1a/\xb7\
+\xe3\x8aZ\x0a0l)\xc4\xfb_)\xe8\xfaW\x07\xf6\
+\xf4B\xf4\xc1\xc6\x00\xc5\xb0~\xb8l\xf5\xdd\xe4b\xc1\
+\x14\xdf?UG\xbbPw_Q\x1d\xc9\x12\xd1\xdb\xbb\
+Yhp\x8c\xe5\xb8\x9e\x10\xaf\xff#4\xd4\x1bE\x86\
+\x9egj\xf4\xcb+u#\x9c\xd3_\x17\x07U\x03\xeb\
+TS\x85\xae\xa9\x1bIy\x80\xb1\x81O\x7f\x2283\
+\xf7\x9cf!!\x83\xee\xeb\x1c\xd6\x15\x1a\x03l4;\
+s`\x0f\xb7\x09\x1ex?l\x1e \x11}\x0cD\x16\
+`\x0c$9\x02[9\x92{\xa2\xef\xbf6&-\xbb\
+\xbb5\x0b4\x81\x08/\xa8ix`\xe0]\x5c\x90\x9f\
+\x9b?U\x88\xef\xfbR \x9e\xeb\xdc\xa3\x03\xcb\xd6\x88\
+h\xb9;\x976\x99\x8a\xe7\x17\xd4\x0c\xde5\x05\x95\xea\
+&C\xe3\xb1\x0d\xf3C\x81\x95\x1f\x9b\xa2\x7fw\xe3\xf8\
+B\xfd$S\xa9xS8\xb2\x93?\x0a\x0dUK\xcb\
+\xe0\x8b\xaa\xe1Y(XrL\xb6\x0f\xc4\x06;}\xaf\
+\x10\xcf\xe9\x1b\x81sM\xbd?\xadR\xc9\xd2@\xc0\xa1\
+\xe5{L\xa5&\xe3<\xec\x1fPF\xff\xc5\x81\x17\xd5\
+Hnn\x98.-\x99\x5c\x18\xb8\xa8P\xd7\x8e\x14u\
+-KbD\xac>\xaa\xc9\xa0\x10\xa01E5)\xad\
+\x1e'\xe9\x08\xaa\xd0@\x1b\xe2i\x05\xdd\xb0\x85`\xc7\
+\xf9\xc7.\xd9P\xa0\xe9\xe8@\x18&\xfd1\x81c\x1b\
+J\xe9\x9dB|\xfe\x8a\xc0\xe5MF\xfe\xaa\xc0\xfaM\
+\x09\x88\x032\x93\x87\x84f\xfcjC\x89y:\xfc=\
+\xf0\x0f\x07\x02\xa6vD\x16\xaf\xa5'\x19\x18\xc0a\xc1\
+P\x95\xfb4m2\xac\xbb\x16\xd4\xd2\x86\xe3\x02Zp\
+\xfe\x15\x88q>\xfcG0\x05rG\xcf\xefi\x13H\
+\x83zl\x0a}R\xca\xa0N^%4\x062\x0e\x13\
+\x0e\xce[\x02\x075%\x130b4\xdaoqfr\
+\xad\x9a\x11*\xc4V\x19\xe0\x1f(\xe8\xba\x0f\x17\xa4#\
+?\xd9Qh\x1c\x1bJ$n*\xf8\xbf\x8c\x08\x98\x1b\
+8\x86\x8c;(\xeb0\x01<o\xd2q\x83a\x81c\
+\xe2y\x9a\x94H2\xaad$\x1d\xe1f}\xc8\xcc7\
+\x19T\x0c\xf3\xcb\x0a\xba\xe1\xb5B\xcd\xd4\xa4\xa1\x0c\xd3\
+\xc0\xeb\xc4\xff\xf9\x1e\x9e+\xa5#~\x8da\x9b\x01-\
+\x1c\x0fJ\xb20\xf8q`\x1c(K\x07\x86\x00\x00\xdf\
+\x8bC\xc5\xf5a\x083O\xa0\x92SR\x01%\x1d\x87\
+\x91\x801\x81\x90W\xd9\x01$\x90A\xe6}\x86A\x10\
+\xef\x8d\x81\x05\x02\x0c\xfc>\x9f\x9b]\x8fW\xf0\xf3t\
+\xc4\x9c\x00\x09\xd4\xe1\x5c\x1fW1C\x82\xe7\x89\xc3\x86\
+\xe3\xc4\xf8\xbd\xdf\xe3b\x11\xcf+2\xde.)K\xe6\
+\x05\x86\x0e\xf3n\xd6\xe1\x9f\xcd\xf02\x1f8\xe2x\xad\
+\x14\x86\xf4JM@\x89\xd2\x13\xd6e\xc6+\xaf\xed@\
+\xc7\xff\xff\xef\xd2\x14\x98\x03<\x87\xb5<>\x1f\xe5\xfb\
+\xc4\xdf\xdb\xf1\x9f\xac)4\x19q\x02\x09\xfc\xde\xecy\
+\x93I'\x90r\xa7\x03E\xecs~\xeeiX\xcd\x8f\
+\x01\xaf\xc9\x11B\x1d\x9fY:\x80Ck\x87\x83\xe7\x06\
+E\x1cG,3\xe8\xa6d\x931\xa4\xc4\x10*6\xcc\
+\xa6\x0c8\x11\xa8\x94CrF\xb3?R\xf2`\x870\
+\xc7\x17\x81/\xef+\xc98\xe3z\x19\xb7\xbe\xde\x5c\xf7\
+\xae/\xa8L \xe6\x0f\xe7\x8d\xc3d\x0aw\x06\x0e\x08\
+\xc0\xf0\xbc\x19\xd7\x04\x1a\x9d1\xcdL\x9c\x1d\xf3\xe1:\
+!^\xbfI\xa8\xcf%\x03\x93\xd8\x13^\xd7\xb0\x7f\xd8\
+\x173\xf3\xe9\x0c}R\xe7Y'\x090\xba\xc4\x80u\
+53y\x944\x10\xe0\xe1?J\x8b\xee*\x183\x8e\
+\xc75\x8c7373\xb0\xea\xf9\x97Txg\x10s\
+\x9d\xf2\xfa\xdf\xdf\xd8\xdf\xd0\xdfP\x99\x04\x19X\x87\xd2\
+L\xa9\xc1\x16\x82)\xdf\xe1\x88\xf7+\x0a\xb6C\x9fX\
+\x1d\xf2\xc9\xf3\x84\xe6y\x12\xd8r@\x03\xa6\x1e\x0eS\
+\xae\x1f\x94\x04\xb0n\xd8\x10\xa7T\x90\x92\xaa\xe9\x1aB\
+\x0c\xff\xc5\x85&\xe3\xb8s\xbfK\x1f\xcfsn\xa1\xb9\
+\x05s\x0a\xb0?VhJe=n\xc8\xe4\x92 \xe9\
+\xdf*\x94\x80\xd48nOv\x86\x9f\x84\xdaW\x85\xba\
+\xaf\x10p\xcf\xd2\x0e3U&\x87N\x0eQI%\x01\
+;\xc6\x7f\x7f\x8aP\xc7\x19\xf6U2\x13?X0\x96\
+\x86<\xa5qx_V &B\xa02i\xd2A\xff\
+\x95\x10\xaf7\x16\x9a\xf9\xe9}@\x85Z\xb2s\xf2<\
+\x7f!\xb8T\xf8\x0d5\xf00\xfd\x86P?\xd7\x7f[\
+\xa8%\xc3\xa5$\xed\xd5\x85\xa2=&|\xee\x0b\xc4y\
+\xf7\xe7\x08~\xfe*Yz\xa4PK\xc0\xfa\xef\x06\xbe\
+\xe3\x0cq\xdc\x9f\xe9ZB\xc346\xf3\x88\xf1\xd0o\
+.\xc4\xe7\xf7\x16\xe2\xf5fB\x1c\x0f\x16\xecx+P\
+\xb5\x82PK\x03\xca:8_\xec\x94\xebU\xaaTJ\
+C\xe2w\xfa\xc3\x84Z\xda\xdbO\x848\xfe\xb9\xbf\xab\
+\xffsI\xa8\x95\xf93y\xfd\xb8\x9e\xce\xffE\xa8T\
+s\xee{\x7f\xa0P\xfd>2\xde\x04\xe0\xfb\xd7\xf6{\
+\xf7ag\xe8\x7f\xfb\xbdK\xa6\xff\xdf\xbd\x02\x90\xc7N\
+\x8e\x99\xc8n=\xb8 \xa9\xf0$(\xf3\xfc\xbd\xcfQ\
+z3=Uh\xe6\x85\x19 \xc3O\x02J\xf4\x5c\x1e\
+\xb8\xa2\xb1\x1f>\x13\xb3B\x81\x9b?\x08\xf1\xb9k\xc7\
+\xf5\xab\xdfA(\xfe\xc3\xd9\xc3\xd9\xc51\x1e)\xee\xb7\
+\x0b\xd5\xbe\xa2\xd4\x88\x00\x04\xd4\xfd\xe2\xbf\xbe\xba\x09<\
+R\xf2\xed\xf5`~c\xa1\x09\x08{\xbf\xeb\x97\x11j\
+\xc0\x0b\xea\x7f\xda{0\x7f\x18\xdf\xfe\xde\xc99B\x9c\
+\xc7\xc7\x85\xf8\xbbg\x0a\xcd:\x8f]\x00C\xca\xf6\xcd\
+\xb0\xf8\xb0\xc4\xb0D3\xfe\x1dX\xc8\x12e\xec\x083\
+G\xb3\x94\x8d\x12\xd55\xc5)\x89\xf7\xbf=\x06\xa0X\
+\xf7\x17P\xab\xd1]P0F\xc0\xde\xefZ\x82E\xeb\
+\x864\xf9Z \x16\x88\xfe\x03B]\xc0'\xaf\x09\xec\
+\xed\xe3kl\xa8\xbf\xa5F\x10K\x04\xf8T3f'\
+\xb5\xe6\xb6\xd4\xd2\xec\xe0\x0d\xe6g\x95\x22?|[\x88\
+\xdf9U\x88\xf7\x8f*\x18k\xa6\x16v\x84m\xf5:\
+\x01\xc7\x82\xb6\xb8\xa1\xcf\x11\xe2\xff\xbf\xb3\xa0R\x89\x88\
+LB\xc5\xd36:\xf1Bwy5\xf8\x0a\xb5\xed\xcc\
+\x86\x0a\x8f6\x81)`\xc3\x05B\x1c\x7f*4\x86;\
+\x19\x0f\x99k\x8b7\x11^2\xafd\x84\xf4x\x16k\
+\x1c\x1b\x1e\x98\x03\x0a\x93\xfd\x02\xfb\xda\xe1\x8e\x813\xf9\
+\x91\xd0d\xe8Lm\x1f.\x14*\xc5(\xa9ho.\
+\xe8\xfa\x93\x02'\xfa\xba\x9edF\x84j\xb4\x9f%\xb8\
+\xf6\xfeE\x0d\x15s\x8f\x82\xcc\xa0\x94\x89\xffb?\x97\
+_4\x1b\xb6\xdc\xde\xf7\x99\xe2\xbf\xb9k\x17\xefj\x22\
+\xf1\x04\x08\xb4\xdd|\xb5\xb9n\xe5A~a\xc7~\xfb\
+\x1a\xe9\xa5\xa6+\x0dp&\xbc\x0d\x9d\x92\xe1<\xb9:\
+\xcc\xc3\xf5\x82\x1d\x8e\xf3\x9b@\xcb*#\x955)\xe5\
+\x8e\xc8\x97\x85\xe4'\xd5\xa0)\x11\xfc\xf3\xe28\x17\xe8\
+=\xe1\x96\xac\x99\xcc\xa4\x98;\xb33\xb9L\xb0A\xbe\
+p\xfd\xfd4\xa8\xf8\xbc#\xba%<\xa0\xd2\x87\x9f\x09\
+M\xc4\xfd\xfb\x01\x05\xce\x96\x15\xaa\xc17\x1c\x14\xd0<\
+9*p\xa4\x1d\xb9\xbd\x9b\x0c\x89\xe6_\xfc\xee\xf4-\
+BCa\xf5\xc6^\x22\x8a\xefvd^\xd4\xaf[\x03\
+\xe1\x90\xf5\xab\x07V\xf3u\xdd\xd2\x18Vh\x02\xb4\x14\
+\xd1E=^\xff\xd30Z\xc8\xa0\xca\x9d\xfb\xab\xc7\xdd\
+5\x0d\xb5\xfc3\x05\xdd\xe4\xec\x91\x9aVj\x0f\xb7i\
+\xa8\x85\x8a\xe8\xca\x00<6pL\xad\xc5-T\xb8s\
+\x1a\x03\xf3\x1d\x81\xb7\x9b\x01\x12\x1b\xd3\xf0n\xc1\x86\xec\
+c\x1d\xe8\xb8\xba\xa1L9P8y\x9f\xd0\xdc\xdfs\
+\x02_k\x1c\x0e\x22\xc8\x94P\xec\x1b\xd8\xaf\xc9\x94\x98\
+2\x8cv@\xd9\x00\xef\xb7c\xbf\x9e\xcf\xfb\x13f\xd2\
+\xdcn\x83\xea\x9e\xff\x919\xf1BM\xe9\x10\x06k\x1a\
+\xfa\xdcg\x1ce\x1c\xa3\x99\x8c1\x86t:H|\x0e\
+\xe6\x81\x0dh4H\xd2\xe1\x22`\xc3\xe7\xaf2C\xe4\
+J;\xd8P\xcf\x09\x1cQ\x9b\x8d\x03M\xa6\x9b\xf3\xc4\
+\xe1\xb0\x03_\xa8\x81\x977\x0e4\x19M\x1c\xdd\xd9L\
+!\xd7O\x00\x80\x00(\x0e-\xb5\xcc\x94\x06\xc0\xdc\x81\
+:J\x06\x97\x1ao\x0c<gz\xb2v\x94LHr\
+\x94\x1d\x8a%\x10\xe3\x80\xe6\xf0W3\x08\x08x\xdcd\
+\x87\xc0\x01\x9a0 J\xa00\x19\x0f\xd6:pX\xb7\
+n\xc8<\x17\x02\xbf\x04t\xd1\xa4\xf1}JF\x963\
+\xefa~\xdc1\xdc\xd1d\x8cq\xf0q\xb4gK\x0a\
+\xb8_\x5c\x0f\xcf\x1fC\x82\xdfo\xe7\xf3\x5c\xf3\xef\x9a\
+\xdds\xcd\xba\xcb\xfa\xc4}!\xe0\xc3y\xc0@X4\
+_\x8fG\x02\x0f<w4X\x06\xff\xee\xbc\x99F\x18\
+(\xfc\x1e\xe3\x88\xfb\xc6\x91\xdf\xe1\xbe\xb1_<S(\
+\xd7=\x06\x9e\xae\x18k^\xe3i\x8c\x0e\xee\xeb\xc7u\
+!\x03\xaf0\x9f\x9cH\xa0\x04m8AhJ\x03\xc9\
+t\xe3H\xc2`s\xa65\x99D3\xdaB\xa5\xd4n\
+\xaf&q\xc0\xbcb\xbd@\xa3\xc0\x19\x9b\x9cG\x07\x14\
+\xd4y\xcd\xfe\xcesa= P\xc5\xf7\x9b\xd1\x93\xa5\
+\x0c$\x1a\x5c\x1b\x9a\x01t\x9e\x07\xf7\x97\xf9\x85\x03\xcd\
+\xef\xe2\x80BQ\xd7\xfa|v\x93\x01\xa3d\xcf\x06d\
+\x96\x92y]O\x86\x04\x993J\x13\x9c)c\xddG\
+;\x07\x0d\x9f\xa4\xce;\xa3\x99\x81\x1c2`\xac\x97\x94\
+\x1c\xf8\xf7\xfa\x17\x08M`\xd9L\xd3\xc2 ;\xae\xd6\
+\xb2N\xae\x10\x9aRQJ>\xbe'4\x01\x18\xf6%\
+S\xfb\xd9w\x92\x19\xa0}6\xec\xc8\xe9\x97\x84F\xb3\
+\x81\x00\xb1\xed\xc6\x0c\xe0\xd8\xf1\xc8\x8c\xb03\xfb\xfd\xf6\
+B\xb3\xfe\xbb\xa6\xb70\x1aO\xad\xeb\x18\x0cV\x02\xba\
+\x99\xf8p\x060\x03\xa0\x0e@S\x221\xf7~!^\
+\x7f{\xa4\xca\x0fK\x06\x96\xa8\x01\xb6\xe9?\x84:\xee\
+Hl\xcd-,4%\x01\x8b\x095\xf1\x00\xd3\xa5\xdf\
+J\x1c\xbe&\xf0\x8aF\x84\x994I\x81&as\xdf\
+\xe4\x9fz.\x93\xa5\xc7\x1a}\xd6\xd3~5\xc1\x0c\xbf\
+m\xbd/\xad\xe5L\xf0\x1aM\xa0E\x0c\xc9\x13\xbcO\
+*11\x08U\xeb\x00m\x95Ld\xe8\xfbc\x1cO\
+\x1e%\xc4\xf7\xaf\xec\x8c\xb6\x7f/)\xce\xd2\xec\xb9\xa0\
+>\x17\xb4\xb0\xba7\x15\xd4@\xfb\xb3\x85R:\x14\xa8\
+\x19_\x18\x17\xe9\xf7L\x05\xd7\x5c?\xa6ahz\x1e\
+1N\xd1\xba\xa1t\x04\x06\xc2p\xba\x10\xc7\x95\x85\xf2\
+\xfe\x86\x85\x99pI\xacW\x97\xd4\xe7R\x12=\xc74\
+\xa5,f\xaa\x10\x08\x98\xbc\x7f\xf2\x01im\x0d\x87\xc7\
+|<\xbcaz\xb8\x94\x8a}w\xeeD\xa1j&`\
+Gf\x86~g\xa1P\xe9\x0b\xb3\xb4P\xef\x87\x9a\xa8\
+!\x90\xd8\xffY\xa8\x99\xefx\xf8\x93i\xec?\xc3\x06\
+Be:\xe4\xba\xe0@\x11\x09\xd2\xf4\xb3\xd0L\xf2z\
+\x91\xda\x18\xb6\xefr^\xa1\xddc\xe6N\xffz\xa1\xda\
+\x0fs\xaf\x15\x1a\x06\xcd\xb5r\xf5\xeb\xfa\xd4/\x17\xe7\
+\x19\xeb\xdd\xf4\x15B\xbc\xfe\xbc\x10\xaf\x0f\x12\xe2\xf5\xc5\
+B|~\x09;\xcc\xd6\xa8\xc9R\x22\xdb+\x99\xd0\xc0\
+\x0f\xb3?\x09cl~?\xa1\xd9w<?\x17\xbcY\
+\xa8\x9f\x9f.&T\xca>\x1a$h\x5c\xa5\x7fe\x06\
+\xcd\xf4\xf9BS\xdahG\x9d\xda\xfed\x90R\xfa\xbe\
+\xb9\xe7\xaf\x03\xcf\x19\xa0\xc4~\xb2_UJF\xb6m\
+\x02&0\xdc`f\xc3\xe0\xdaM\xa8\x01\x9b\x05Y3\
+\xee\xccY\xd6\xc4zC!\xe3^\xcc\x80\xbf\xd5\x8c^\
+\x19\xf0\xa7\xd5\xc8x\x7f\x93\xd0d\xa6M\x89@T+\
+E\xecN\x17*Eo\xfa\xf9\xc0\x19\x0dE\x86\x08\xbe\
+\x1f8\xd4\x9b\x1cp\xa6fL\xaf\x0e\x5cU)A%\
+\xf2\xf6\xf88\x9e\x1bP\x04\xe4\x92\xc0O\xea\x86S2\
+9\x1b\x98\xd2vuS\xebj\xc7\xb9\x10\xfc$J\xf6\
+\x03!\x8eg\x0b\xb5v\x02\xb1\x102\xbeY\x13\x82\xe3\
+\x81\x01\xd7R\xb1\x97h\x0c9\x0c>2\xa1\x18tD\
+\xec\xe7K\x8c\xaf~\xee\x1d\x05cFZ\x0e\xe2\xdb\x02\
+o\xb7#z]#J\x08\xe5\xca\xe29\xfd/\x84Z\
+\x1b\x0c\x05m\xfe\xc5\x82\x17\xf6\x98\x00\xfd\x1e\x81=]\
+K\xb4\xba'\xdc_*\xf5y\xeeY\x81x\xfe\xd3K\
+\x85\x1a\x99\xce\x0d\x95ZI\x0c\x13\xf1\x0a\xde\xe6\x88\xf6\
+z\xcd\xf5\xb8\xb6\xbe\xdc\xbf/Y<\xe4\xbd\x8e\x9c\xdf\
+\xe8\x8d\xff\xde\xa6\xa6\xdf\x99\x0dD7R\xbcI\xf1\xb9\
+\x977\x94J3\x02\xa0n\xe6\xe7Mi$r\x0cU\
+\x06q\x90\x9c\x08\x04N\xccP\xc9\xcc$\x99\x03\xf1\x1c\
+\xf6\xf0B\xbdECE\xc60\xc3\xc0\xe69R\xdaa\
+\x0a?\xa2\x8c\xb1q.\xad\x8d\x93\xccI\xa1\xf8}4\
+>w|@\x06\xd5\x1f\x85Z\xb2PF\xe3\x9b\x9aq\
+c\xc7\x87\xeb#b\x9a\x19\x08gN\x87\xc7\x08\xcd\xb8\
+\xb0#\x9b\x11Bg\x84\x8a\xb9\xb8l\xe3@\xe2Hp\
+=\x18\xfc0C\x10\xdf\x93\xb9\xb3\xb6\xc5\x82\xbe\xe6\x85\
+\xf1\x02\xff\xce\xb1\xa6\x9c=\xd2\xf3G\xf3qC!\x8e\
+\x87\x08^\x98\xd6\xa8T\xbc\xfe\x8f\x81\xdb\x9b\xf9\xee\x0d\
+\x0a\x06\x12\x9a\x1b\xa5\x86\xf1\xf96\x84T[ur\xe0\
+\xa4\xa6\x14E\xcb\xeb\xab\x5c\xfa!\x83\xec!\xc15X\
+\xdf\xa9b1\x04\x16\xc8p\x94\x8d\xf8\xe3M\x86W\xee\
+\xb22\x1c\xcf\x09<\xb7\x89\xc4z>'#\xca\xcc\x9f\
+\xd4\xa8 \xc2\xca\x7f\x18\x94\xdc_\xc6+\x99O6r\
+3\x0cRD\xc7\xa3\x03g\xda\x00\x00 \x00IDA\
+T\x1a%\xf9<\xc8\xf0\xe1\x98\xf3|pHg\xa9\xeb\
+\xfc\xdd\x06\xa6\x02cX#\xaa\xc6F\x8caL\xc6\x92\
+\xcc=\xcf\x9bL$\x0e#G\xce\x07\x07\x9e#\xd4i\
+2\xdf0\x95\xc8\x9c.\xef\xdaf\xe6\x09\x81\x07\xd6I\
+\x1ci\x076Sl\x94@\x14\x8e\x18Tm2\xea\xdc\
+_\xae\x83\xdf\xc7\xb0f\x9d\x85\xe9\xc3:\xb5\x9c\xd7k\
+6\xc8\x7f\xdb1\xa3\xb4\xe0\xaf>_\xae\x97\xeb#P\
+\xb8\x84\xbfga;x\x94\x82\x10\xf8\xe5\xf8\xa0\xcf\xff\
+\xfe\xff\x0eL\xa4#\xc8\x7f<_\x02(\x5c\x17\xfb\x0a\
+\xdf\x87C\xc9\xdf\xcf\x9c\x1f\x0et\xb7\xf2$ m\x03\
+_?\x06\x0e\x8e$\xe3\xe7\xb1\x0eD\xc0h\xc0p\xa0\
+\x14E%}\x7f*\x06\xe8\x18\xd8\xe0\xbe\xe1\xd0\xce9\
+p\x81c\xcf\xf8$\x80\xc1\xefr\xbf\xec\xe8S\xc3\x9c\
+\x01\xd5}F\x87\x9aZ\xf2\xd8\x03J\xe65\xd79j\
+\xfba\x18p\x1d$ \xac\xf12\x5c*4\x06\xb3\x19\
+\x88\xc9`C\xbb\x06\xad\x12D\xff\x10\x11\xde\xad\xa0\xee\
+\x03v\xe4\x93\xa9\x04\xf3\x8b\x00\x94?\x9f\x01a\xe6#\
+\xf7\x91\x8c<\x81\x10\xc6!\x19\x1ag\x92\x93b\xcf8\
+\x80\xb9C@\x86\xe7O \x8d\xff\x18'\xcc+\xce\xa7\
+\xfc\x17\xc7%\x85Fkf6\xb0A\xc9\xc0\xe5\x05U\
+\x94\x96\xf3\xe7|)\xf5\xe0|\x18\x87\x18\xd6d\xfcN\
+\x15j\x0d\xff\xe4\xddB\x13\x88\xf9dA&t\xb2\xe6\
+\x15\x11A\x07*(m\x839\x97\x99.\x05\x84\xafj\
+\x02Z\xde\xcf\xfa/\x0b\x0d\x03\xd3\xcf\x89R\xc2\xcc\xc8\
+\xd9\xb0\x9e0?\x10\xbb\xb3C@-o\x7f\xa5\xd0\x94\
+\xfeYL+k\xde\xa1\xc2\xc3\x84\x84\x11c\xc6jf\
+\xf6)\xedD#A\xfb\xcas\x9a\x92\x85\x19&L^\
+\xb7\xd7i\x18X\x198p\xc0\x1b\xb1/\x9ew\x8az\
+9c\x8c\xb8 \xd73\xfd\xeb(r<|}8w\
+8\xb7\xde'D\x18\xb1[\x9979\xdf\xcc\x14\x0dw\
+\xef\xec\xe2\xf0\xc9/\x9c\xfa\xb9\x86\xe3\xd0?9\xb0a\
+Mx\xa4\xd6\xcf\xc9\x01i\x1f}9\xf0\xa5\x22^\xb7\
+\x92\xec\x92\x9c\xbf\xb2\xc6\xbf\xe5\x0c\xfc\xb7\x1c\x00\x7fr\
+\xa1\xee/PiC\xff\x0f\xa1\x8a\x01O\xbe(\xc4\xfb\
+\xcf\x12\xaa=\x95\x14}S\x9fS\xf4\x99\x80\x1a\x09\x02\
+\x97\xfaM\xbf(4\x0e*\xb5\xd7f\xac\x14\x06\xc9]\
+\xb6\xef7kJ\x81\xbd\xcf\x13\xc8\x1a\x9e.T\xe6\x1b\
+\xa5#\xd4\xfa\xf7\xef\x10\x9ca\xde\xb70tJ\xc9T\
+\x11\x7f\xbe\xb7\x9e?\x01\x80\x0c\xa4|6p|\xad\xed\
+\xc7\x01/~\xd1+\xab\x88\x1e\xeb\x07\x01\xb0\xb9\x0f\x06\
+>\xd0\x94N\x98)\x05\xb5>\x03\x18\xb6[\xfbc\x85\
+jW\x92\xc9\x0e\xb7\xf2yr,'\xd7Y\x13\xc3\xf6\
+'L\x0a\xd6\x89\x14\xc5\x95H\xf9\xeb\x9b\x80\xaa\xed\xe6\
+\x14\xf1\x84i\xe5@\x22\x9aX\xb9na_\xc1\xa4\xb5\
+\x1fI\x00c\xeeIB\xa5\xceO\xf7\x0e\xbc\xd6\x09\xa0\
+\xf7V\xc6Ow\x82\x7f\xc7\xa5ZE\x1c\xf2\xc2R\xca\
+\xf0\x8e\xe1\x1d\x8dx\xf1[\xccL\x22\xc1aQF\x98\
+\x07\xdc\x8f\xf9+\x84\x1a\xb0!\x90\xb1\xe0.\xa1&d\
+\xa7_\x11\x9a\xf5\x91\xc0*\xf7\x85}\x92\xc0\x9dJ\x81\
+_Z\x030\x8cO\xc4;S\xc4\xcf\x22\xf2Y\xeb\xef\
+@\xd6d\x18\xe7\x9ff\xb1\xe61%\xec\xe9\x9fa\x1f\
+\x11\x80&\x80\xcf>\x89\x7f\xff\x08\xa1\x8e\xa3\x05\xd3\xc7\
+\x05\xd6\xac\x86\x1b\x17@$\xa5\xd4\xd8\x7f\xd3T\x8b\x1d\
+\x1burjR\xbd!\xf6[\x05\xb6\xac\x99\xb6T\x93\
+u\xedA\x7f\xa3P#)\xf3\x9f\x17\xe2\x82\xde\x14x\
+s\x15\xa3\xe9\xbf.4\x91<\xc4q0,>_\x90\
+5\xf9\xa8\xb8\x17\x91\x8d\xa3\x9a\x08\xa1\x22t\xd7\xd5\xc0\
+\x02\x0bwN$m\x1f\x9bV\x8a[\x7f\xa2\xd0|\x1e\
+*\x91\xa8\xbao0\x83\xe0\x94fC\xc6\xc0\xc2\x01W\
+\xad\xa3\x1c\x9c3]c\xf6\x98R]\xf9\xdf\xb5\x9f\x8f\
+jj\xac\xb5\x0d\xafh\x83x\x0dO\xa0\x1b\x9a\x81C\
+dR\x11\xf75\x1c\xd9\xfeYQ\xff\xfe\xa8(\xe3\xb9\
+ 9b\xde\xffNp\x06\xfc\xb9\xa6~\x87\x834}\
+\xa5P\xd5?Kw\x84\xb5kM\xdb\xdc\xf7\x05\xd7\xe8\
+\xfd\xc1\x99P9\xf8/\x15\xbc@?\xc5b\x87\x87{\
+\x00-\xd6P\xfc8\xae\x93j\xe1%`\x93\x861\x19\
+92<\x12\x8dyOu\xdcp\x5c\xfag\x0a\xcd\xc6\
+\xa8\xa7xlU\xcf,|\x85\xe7\xd5\x8cZ\x89\xe4\xbe\
+\xb3vMP\x85_q\xac\xad\xd6<<Yhj&\
+?R0f\xe4\xbf\xdf08d\xee]\xd9P\x85N\
+\x12,\x0e\xb9\xd3\xffpH(q\x10\xd1\xef$;\xf6\
+\x07\xd5\x88\xb6j\xad\x8a\xe1\xb1o\xb7oat\x10\x11\
+wf\x90\xae\x07hU\x14\x02\xe7\xda\x8d:+\x813\
+\x0c:G\xe2s^\x11Y5U6k\xddM\xb1\xd4\
+\xb2W\xee\x0b\x0e\xa1\x99\x1e%p\xf6\x89\x86\x89a\xca\
+|\x8eO\x0cI28\x94\xb8`\x10\xa2aA\x80\x07\
+\x0d\x06o\x14\xd4\x1a\xa2>;\xbf\x96\x10\xc7\xbb\x848\
+~G\xa8\xd4\xa3\xac\x15uf&U\x8c\xad\xe1\x80X\
+M:\xa8V\xf1\xe7s0t\xca\xba\xb3\x95\xc5\x16\x8f\
+\xab\x81\xbd\x12i}^\xcd\x80\xcc}<pL-\xb5\
+)\xa5!\xfb5]*\x5c\xaa\xd2\x9f\x17\xf8A\x93\xf9\
+C\x8d\x9cL\xa7\x0d>\xba\x91PJT\xf2\x1d\xfb6\
+\x0e\xfe\xaa\xa5\xca\xba\x8aC\xaa\xc4\xe4\xc2\xff\x9b\xa1\xcb\
+L=\x86\xea\xac\x03H\xc0\x8d\x80\x0f\x01\x056P\x07\
+\x0c\x932}\xe6\xe8\xe0L> 4\x06\x0e\x86\x11]\
+0\xdc\x9d!\x0dj\xc67\x94\xddY\x8a=\x0e,\x01\
+\x22\x8ev\xbc\xd3\x91b\xbd\xbe\xcd\xa5\x1dw\x8d\xe2p\
+1\x07F\xc7\x0dG\x86\xdf\xe5\xf3\x5c/\x0e\x8b\xafK\
+\xe1\x9e\x12\xf0\xf9\xb03<;\x8d\x94\xba\xb2J\xad\xdf\
+8\xfe\xae\x9d\xcc\xef%p#\x0d\x99\xdf4L&J\
+8x\x9e\x5c7\x0e8\xe3\x8d\xf9d\xc6NR\xaf\xc9\
+\xb8\xae\xef\x12\x11\x1cR\x1c\xab5\xbc\x9e/\x95\x19\xfb\
+q&\xddmQ\xb7;Fj\xe2dc\xd7\xe4\xa1\xce\
+k\xcab:nP\xbbYG\x09`p\xbf\x08\x10\xf2\
+\xfb\x04\xb4\xef\x1a\xafw\xf8\xa5\x03\xc9\x8c'\xff}\x96\
+v\x10\x00!\xf0\x81c\xc7\xfb\xbc\xae%\x12\xe3\xbe\xc4\
+\xfa\xfcX;\xb88\x860\x19Xwz_7\xdfC\
+i\x02\xf7\x97\xcc\xf2%\xa6\xbcS\x8aC\x86\x88\x0c3\
+\x94G\x0c\x1cJ3\xc8\xfcZ\xc4\x17Q5\xba\xb4\x90\
+\x01\xcb.\x05d\xec\xa1\xf6\xdb\xde\xc8y\xc3>F`\
+\x0b\xc6\x933\xe7\x19X@\x14\x98\x12\x222d0\x22\
+p\xfc\xb9_\xad\x86\xc8\x0a\x8dc\xf16\xa1\x11y\x12\
+Si\xdf*&\x97b\xa2\xb6w\xf2\xbc\xb1\x83Pw\
+\xe7:\xbd\xae\xa3\xbd\x94\x8e\x11\x8e)\x812S])\
+\xad)\x89\x85\xb7\xd5\xfb7\xbc]\xa8\xf6\x05\x0c\x99\xa4\
+\xd8;\xf0\x8a#I\xcd0\xcc\xae\xec\x0aE\xcd0\xb5\
+\xf8\x94\xf2\xd0]\xc1\xf3\x16GLRt\x12\xa3K\x06\
+\x10\xe2\x9d\x048\x9d\xa8IQ`g\xc0RlX\xda\
+U\xc75\xccP\x97|e-\xba\xd7'\xc6\x0d\x8c\x8f\
+~\x7f\xc1\x19w1\x13\xde.T\x07`\xfe\xa5B\x93\
+\x91ti\x1e\xf3\xb4\x7f\x86\xd0$0\xf6\x09\xf7}\x9f\
+\x12 ?_\x99\xc3\xcc\xa8S\x0b\xce\xbe\x07\xc3\x10j\
+4Z\x0e\x0e\xd4\x10\xc8\xc9\xae4\xae\xfdG\xdb)\xc5\
+7\xb9o\xce\xb0\x22:F\xa6yn\xb3\xb9-\xe6\xb6\
+(\xf6\xd2X\xdb\xbd\xa1\xd7\xad\xab\xc7\xc0S\xbfN\xbf\
+v\xbf\xb6\xed\x8b\x0f\x15{o\x14E~\xd4h\xaf\x92\
+\x10\xe4\xf7\xd3N\xf6\xf5\x10\x80\x81\xa1\x9b\x19\xd8\x05\x82\
+\xa9\xd4\xef\xab\x09\x8f\xbc\xcf\x1f\x14\x1a\xbb\x95\xee\x08\xaf\
+\x10\x1a\xc7\xdb\xeb\x17\xf3\xaf\x7f\xba\xd0dD\x11\x9d\xc6\
+N\xa3\xe6\x99\x84\x87\xd7+\x15\x80\x94\x12\x10\x023\x8c\
+\x0b\x18\x99t\xe3 `\xe5\xc0*\xf6\x09L\x10J\xee\
+$E[\xc4h\xb1\x9b\xcc\x04%\x91\x81\x98sa\xf6\
+\xaa\x06\xff4\xa1R\xd8S\xc3\xc3L\xd8\xb9\xc3\x84\x86\
+\xb1\x8a\xfd\xbec`\x87*\xa2\x87\xdfP2\xf1g;\
+\x91\xb7G\xc9\x9c\xef3\xb7\x8f5\xd7\xee\xaa\xb5\xf2\xb9\
+\xbe\xa1\xb5\x86x\x9c\xed\xa2\xcc\xc0\x7f\xad\xa0ja \
+\xce\xe9\xc0i>\x0f\xec!\x07\xc4R\x94\x12\x11r\xd6\
+7\x07\xbc\x92Q\x8b\xe8:\x99k\xec\x0a\x98\x1aJ\xd8\
+^R\x03 \xd9E\xee\x22\xa1\x96\x80\x97p\xc3\xc5%\
+\x10Q\xbabM\xbe;\x06B\x18\x97\xd3\xf3\x84F$\
+\xf4h\xfbK\x94\x14z\x1d\xc9y\xe4\x00\x06\x8c\x19j\
+\xed\xe7.\x14*C\x22\xb5\x13\xd6\x13\x1a\x8d<\xcf\xd3\
+~U\xa1\xfaW\xf3\xef\x12\x9a\xfd\xca\xe3\x94\xd2\x16\x12\
+v\xd3\xcb\x85\xf8\xf7\x1f\x08\x0d\xf3\x11\x0d\x02T\xff\xad\
+\xbdG\x80\x98\xeb$\x01W$\xf1\x97mJy^\xe9\
+D\x0fv\x01\x81\x7f\xec\x0dw\x7fX0_\xd0\x88\x1b\
+\xbc,\xb0\x93\x1d\x04\x22\xc1M\xadV\x8a=hB\xae\
+kuN\x89\xfdm\x18x\xb2\xa9\xf4_\xaa\xea\xa3\x85\
+\xa2\xf3[Gp%\xce\xf7F!N`\xc5\xc0J\x8d\
+\xe1\xa6\xb8\xe9\xdf\x9b\xda\x19u'\xf8x#\x22\xe1L\
+Q:z\xd4\xe2\xc9=Y\xd3\xd4\xab\xe5\xacZ\xfe;\
+g|_\xeaH\xda\xfa^H\x16r\x0d\xdc\x8b\x9b\xc8\
+-T\x1c\xd7N\xf7\x87\x04\x0e\xb6\xaa\xe2q\xdeh_\
+\xe7\x8d\xfaG\x8d\x01\x0b\x85\xd75H\xd9\x06Nf@\
++\x06$s\xed\xee\xc6\x90C\xd4A\x94\xd1\xf5\x9a\x8c\
+\xaf\xcc\xcf;\x1bU{\x89\x1e>\xa9\x1a\x00y\xbf\xe5\
+\xe0?\xdb\x8e\xe2\xc5U\x1c\x8e\xae\x04%\x12\xfb\x8df\
+\x83\xf4\x86C\xe6\x19f\x04T\xbe\x129^\xde\x14\xc9\
+;j\xedv\x96R\xdc\x1a\xb8\xcd\xb5\x5c\xf7Zd\xe2\
+\xe3\xae!;\xa91<0\xb0i\x0f\x83\xda\xb6\x03-\
+P\xba\xb2;\x82k\xc2\xb2\x14\x83.\x02mfw\x0f\
+G\x9a7\xaa\x14\xafT\xf7t$v\xd8Y\xa8\x14\xcf\
+\xa2N\xfa\xaaF\xfd\xfe\x00\xab\xcd\x22\xfa\x85\xd8\x9c\xdb\
+\x91\x143\xe4\xf6\x1a\xe8*\xc4\xc5\xeb\x9bZ\xbd\xc7\x94\
+j\xd9\xae\x94V\xf5.\xadX\xd7\xaa\xef\xcfm\xa8\xcd\
+d\xc0\x9e\xd9\x15jk1Lnm\x0cXg\xc0\x93\
+\xd9q\xbe\xd0d\xf0\xa9\x09\x872\x8ecmjd\x1a\
+t\xcepN\xf7\x0a\xbc\xbaj_`\xb8\x12\x81\xcd6\
+\x8f\xd4V\xb9\xe6,3\xd6\x88Xq\x1d\x18\xbe\xb4\x93\
+\x83\x19\x83X%\xe7E\x86\x03\x911g\x88K\xe0'\
+\xc6\xf3\xdc\x87\x03\xf1\x9c\x16~\xb9\xd0u\x0f]\x16\xb8\
+\xdc\x8e\xb6\x022[\x09U\xcb\xa2PxOl6\x8c\
+\xe3\x0b\xc6\x1a\xdd\xc5j)\x08\xf7/\x03\x93\xa8E\xb3\
+~\xac\x5ct\xcdG\x83\xf6\xad5\xa3\x5c\xdc\x93G4\
+\x81\x90c\x85\xa6\xc4\xe8\xdf%\x07<\xd6\x00\x9f\xe7H\
+\xfe\xd9\xd5\xf0\xe8\xff\x2245\x88n/X\xbac\xc4\
+\xba8\xddMh\xb4O\xa0\xe6*\x7fuz\xd5V\xa1\
+\xcd\x10\x99\x93b\x86m\xf8?(\xdb8l\xac3\xac\
+\x1b\x18\xc2\xd4\xaamg\x11Uj\xe8\x8ew$\x9c\xf6\
+]\xd4\x5c:\x90\x97\xcf\xf5\x0b\x05c\xe9\xc49\xcd\xef\
+\xb0A\x10\x00\x22\x10\x85\xe3\x80\x16\x80\xc5\xa9r\x1c0\
+.\xa8\x1d\xad\x19\xe6\xb1\x96\x9c\xf3_m\x86\xf2~\x7f\
+f\xdeG\xc7\x86L\xb6\x1d\x9f\xac\xcd\x84z\x8e\x83\x8d\
+\xe3\xed\xccU>g\x07d\xc9\x08\xcf:\xae\xa8\xfff\
+\x1b+\x1cr\x1bZ\xaaLU\xa03\x19\x04d\xb0\x09\
+\xf4\x92\xc1\xe6y\xcd\x8a\x01\xf2\xb9\xe5\x8a\xce~\x0d\xe8\
+\x10H!`\xbe\x905>\xac\x02\x9c\x0c\x03\x07&\xf3\
+|\x10\xc5\x83YF\xa9\x05\x01\xe8Y\xc6\x00\x0e,\xf7\
+\x93\xf3\x9f\xc9\x14g\xe6\xdd5\xcd\xf9\xbc\x08\x84 \xba\
+DI\x06\x8c>\x02N\x04\x04\xd9?\x11-$\xd3\x0d\
+\xa3m\xce\xf7\xe9\xdf\xceD\xf0\xdcv\xf0~\xb1\xd0(\
+\xd6\x95\x7fO\xe0\x09*;\xe3\x84\xf1\x87\xd6\x01\x8c\x1d\
+2\xf1\xcc;gZr\x1da\x1f\x22`A\x00\x82\xcc\
+\x08\xcf\x8f\xeb\xe6\xbc\x09D\xf1\xfb\x04\xb8DE\xbd\xb6\
+\xa1\x92B\xe5F\xa4\x0e\x06\x0f\xf7\x89\xef\xa1\xeb\x85\x19\
+\x0a\x19x&\xa0F@\x89\x0c)\xa2\x9d\xa8\xd3\xb3.\
+\xc3L\xe0>\xe38:\x13Dms\x06<x>\xac\
++\x04\xe8]c\x8d\xa1\x9aZD\x94H\xc0\x0cp)\
+g\x8eO\x07:21@w\x1d\x98\x80\xb4\xc7\xf5\xbe\
+\x0d\xc3\x02;\xa2\x7f\x82\xd0\xa8\xf9\xbb\xd693a\xcc\
+w\xb4\x0e\x9c\x89\xce\xfbf\xf5m\x02^\xa9\xe1\xe0\x9a\
+\xfb\x92\xa8\x1f\x9a\xee\x09t\x01\xf0\xbc\xe8\x97\x15b\xbd\
+^Q\xa8\x863\x8e`\xd1\xb49\xae\x99\x17\xbe\x9e\xb9\
+\xcd\x85\xf8\xbb\xf3\x85\xe6{i\xe3hM\xac\xacyv\
+\xe2\xa80\xd9\xceo\xf6)w\xc9\x22\x81C\x80\xab\x88\
+\x10\xff\xb8\xd1\x10B\x03\xc3\x0e\x01\x0c\x14\x02\x1f\xc3\xcf\
+\x84\xca\x8cL\xe6\x04L\x83\xdd\x85\xb2\xbe\x96q\xdd\xff\
+](v\xc7X\xe2\xb0\xbd\x03\xd0n\x9f9y\xd5d\
+\xb7\xf2y\x02i3%\x17y=~\x1e\xc9\x90\xb5\xda\
+|I\x98\x9cX\xed\xa3lGm\xbb\xa7P\xed\x97i\
+\xb44\xfc\xb9\xb9\xad\x85\xca\xb4-\x99\xec\x0fV-\x01\
+\xc6u\xaes\xd8\xa3\x88P\xc2\x08v\xbb\xc9\x5c\x17\xb0\
+\x07X7\xe4^\xfe\xb8\xaa\xea\xe7z\xeay7\x7f\xbe\
+\x10\xbf\xfb9\xa1\xe9Z\xc2\xfd\xf78\xa3\xe46\xd5\xd9\
+-\xfa\x99]:\x10\x01\xf5\xfe\x09c\x05\xcav\xa9\xfd\
+\x97\x03\xf8&\xa1\xc9\xa4\xfb\xf9\xe2\xc0\xf6\xffO(v\
+\xf9\xd8\xf6\xef_\xa3\xfdW2\xbd\xbf\x1a\xcf[\xebr\
+\xbfg\xbf\xa7J\x9ba\x08\xa3\xf1\x10n\xeb\x05s\x17\
+4Z_0\x1e\xd0\xcex\x9d\xd00k\x09\xb4\x8b\xa9\
+\xb1R\x0dL&\xe3\xf9\xb7B\xc3 B\xd4\x8e\xf5\x03\
+\xfb\xc3\x81\xde\x0c\xc4P\xda\x82\x86\x07\xfb\xaa\x03\xaf)\
+\x02\x8a\x06\x05\x9a\x220\xb5H\xc0x\xdd\xcb\xc0\x9dk\
+\xf9\xfb\x8d\x84\x1a\xc0\xcc}L\xcad\x175\x89%\x12\
+/$F\xcc(\xc9\xc0*\xed\xdb\xad\x19C \x17U\
+\xfd\xe9R\x82E\x22\xf7\xab\xcc\xca\xd2\xee\xfe\x93\xd5/\
+\x9e\x7f\xa3P\xdb\xf6%#\xc2\x09E\x12\xe1\xf8\x1d\xc3\
++\x84f\xfd\xa7\xbd\xb1\xd7\xefR\x22|\x90\x19\xaf*\
+\x85^Nh\xba}\x9ca\xc6\x1c\x09\xc9\x99\x80J\x8a\
+\xfd\x12\xf0\xbd~,\xc9\x1a\x0e\x1b\xdb7\x92\x10_P\
+\xc4[>\xea\xfe\xeb\x9fm\x1c!\xab\xc2\x16\xca\xc2\x83\
+\xd5\xf1*\x8e\xdf)5\x92W\x22\xbe\x8f\xac\x91\xe7\x8c\
+\xd0\x98\xf2_\x02\x08r\xfc\x8f\x11\xe2Fm\x14x\x8a\
+k~\xdf\xe5\x85\xe6x;\xee\xd77T;-\x1f\xdb\
+[Tl\xa7JUO\x913\x89\xb9\xedT\xfb\xbcg\
+\x0d\xa63\xed\xc3\xf9\x81X0\xa7\xdf\x16\x1cq\xfdM\
+\xcd\x10\xb3\x91\x946\x1a\x1b\xd7\x9a\xe7r\x9b\xaemT\
+K]3Q\xa8:\xab\xba\x86|A\xb3\x10\xd4\x8c\xd0\
+\x98\xa9C\x85\xde\x9a\x01i0Zm_\xdb\xbb\xae\xa3\
+\x98U/o\xda\x92\xc8<\xfc\x89\xcf\xfb\xfc\x86rN\
+\xad\xc8G\x02G\xd4\xb6|I\xbd\xb3\x18\x1e\x14\x98t\
+\x00\xdc/=#\xa4\x1a\xf8g6\x22gD\xd4yn\
+\x22\xc0\xbc\xc1\x13\xf5w\xcd\x80R\x18a\xe3\xaa\xd6_\
+*h\x7f\xdb\x046\xc8L\x91\xb1\x12!\xe6\x99Mm\
+\x99\x0c\x8e\xd7VC\xa9\x94v\x1c\xee\xc8\xd4j\x8d&\
+\x03\x99h2\xa4vx\xcb\x06\xfaPm\x8f\x98\x86\x1f\
+\x06#\x8e\x8e\x0d\xcaau\xa1NL\x16^\xa8\xef)\
+\xd6\xc1\x02\x80\x03\x83\xa3\xa2\xb8\xd9\xae\x9e\xe8\xafp\x06\
+\xe4iM\xa4\x93\x0c#\xea\xf2\xd4&Bm]q\x5c\
+\xb8\xa1\xf2\x14j\xe4i\xb5\xf4$3%\xd4~\xcb\xad\
+{r\xb3\xc0\x8ai\xd2\xf4\xd7.\xcf\xe7F/\xe8\xef\
+pF\xf7\xcdM \xc9m\xb4\xb2+\x01\xa5\x0e\x22\xbe\
+\x9dT\x033h\x06dd\xd7\x14:(r\xd2\xcc-\
+\x1b$\xdfK\x86\x0a\xed\x0c\xb9\x0fKy\x83|ZC\
+]\x84\xf1\xe1R\x81\x22:\xf9\xa5\xd8\x88\xf6\x0d\xecW\
+\xc5\xfb\xe6/\x10j\xe43\xe79\xf3Bn\xd2\xef\x9b\
+\x0c\xb03\xcc\xd4\xfcO\xd7\x16\x1a&\x8bD\xacb\xbd\
+\x98\xfeB\xf0\xc6\xf3\x81\x86\xba\xe9\xfb_\x02z\x876\
+mJ\xe9Z\x01E\x9e\xcc\xba\xa9\xb8sG\x05\x8et\
+\x0d\xd71\x8d\x06\x0a\x91t\x8bT\xf6W\x0b\xf1;\xeb\
+\x076p\x8d\xdcyM;\x1bk\xa0\xa4\xba\xae(\x81\
+\xaf\xab\xf38\xfb8\xd3\x9fW\xa2C\xf75\xb5\xd1l\
+\x98t\x7f\x80\x92K\x0d\x1bbT\xa8q\x93y\x84\x1a\
+\x8e\xa1\x83csLA\xd5Z\x80\x11C-?\xda\x1b\
+\x8e\xc4\xff\x17\x13d\xd2\x04\x0a\xa0\xfc\xcdvi\xc0\xe1\
+ 3\x05\xf3\x05\xc7\x8b\x80\x11\x0e3\x1b\xf6\xacX\x22\
+*\xf38t\xd4\xd4QZ\x81c\xc6|\xc4\xc1E\x8b\
+\x85\xf9\xc9\xfd\xe3\xbep\x1e\x884\x22\xd2\xb6\xa1KP\
+\xae2Un\x05\x1b\x9c\x5c\x9f\xef\xdf\xf0\x07\xb7iE\
+\x93\x80L\x07*\xf7d,q\xf8\xe9G\xed\xda\xd0\xd4\
+\x22\xf8\x8d\x03%8\xbed\xca\x9f9\xce\xdf\xcc|\x93\
+\xf1f}\xc2\xa1\xe7yP\x92\xc0k\x8e\x18\xccd\x9e\
+\xb9\xcf8\xee\xce\xd8\x0f\xf7\x0aE5}d\x22p\xdf\
+\x08\xac0\x1e\x09\xec\xe2\xb0\xf2\xbc\xf9<\xbf\x0b\x13\x80\
+@\x0c\xed\x15\xb7\xb2cK@\x1a\x8a$\xea\xef\x18\xea\
+\xb4\xa3\xa3\x04kVC\x82q\xcc~\xcb\xf3\xc4\xb1\x9d\
+}\x0e8\xda\x88:B\xd1\xc7\xa1&P\xc2ys\x7f\
+q\xe0\xd1v\x81\x9a\x0f\xd3\x84\x8c\x0a\x94O\xfa\xd8S\
+SM\x00\x03&\x05\x8e\x8f\xc4^\x8f\xae\x01N\xba\xc7\
+\xe4}!\x93O \x09\xe6\x8e\x1d\x84,\xf1 \xf1@\
+\xdb9\xdbY\xfd\x01B|\xee\xf3BS\xd3N\xc0\x83\
+\xeb\xc7\xb0\xc6Q\xc1Q%\xe3f\x07\x9fu\x9avR\
+\xf4\x03'\x03\x0b3\xa0$\x80~_3\xda\x19\xe8\xb7\
+vC\xb6G$\xa0M\x80\x9fqC\x89\x11\x94aw\
+\x0d \xa3X\xda\x97)\xc1\xf24\xa1\xd1l\x82\x09\xe7\
+\x92\xa6\xcc\x98Y\x0483\xe8\xf4\xd3\xa6\x1d/\x0c?\
+\xd6=\xec3\xc6\x1f\x19wj\xca\x1d@'\xd3\xdd]\
+XP\x1d\xf2\xff'\xd4\xccaf<\x11\xa9\xa6\x16\xdb\
+\x9a\x00\xe9\x18b\x97\xd9\xc1Kf\xab\xb5\x09R\x9c\xdb\
+\xa5\x97\xb1+\x94\xf5c\xb2\xec\xe4\xd1\x93X7\xe6\x1f\
+\x12\x1aqW\x07\x00\xe8\xdf>\xf9\x99\xb5\x10L\xdd\xce\
+\x006\xed'\x1f=\xce\xcf\xc9\xf2\x93\x15&+4\xf6\
+<\xf64\x01!\xaf\xa3\xb4\xffN&\xaf\x026o\xaf\
+]G\xb2\xcd/\x8e\x17\xe3\xca\x9aF\x88\xc1a\xa7\xcf\
+=J\xa8\x99\xd6\xb9\x85\x84\xc6>r\x22/\x197\x1f\
+\x14\x9a\xc0\x98\xf7\xeb\xd2F\xf103:\xf6l\xec\x11\
+\x18E0\xde\x1cX-%\xa2\x87V\xf1\xef\xd2~\xfa\
+\xcd\x8d=\xc3<P\xe6~\xff*\x86J \x0a\x87\x9f\
+n6\xd3\xdf\x0b\x0d\xf3\x85\x12\x13T\xee\xd1*0\xf3\
+x\xee\x19B}\x9f}\xab\xff\x91\x10\xc7\xc7\x08\x8d\xe6\
+\xcf\xdf\xc7\xbf\xebO\xe8?\xdb\x9fP\xec\x96W\x88i\
+X\x02\x13\xd3x\x7fQ!\x8e_\x12\xe2\xf8-\xa1\xb6\
+\xb3\xa4F?KV\xcc\x8c\xa1\x0d\xdc\xf4=B\xadM\
+\xcf\x92Q\xb4T`6\xd0\xbf^\xa5\x98K\x96\xb6t\
+\x81\xa6\xfd0\x81\x04\xb7\x11M\xad'\xfc\x02\x12J$\
+,m\xff\xa6=N`\x93\x92Ni\x0a\x1cX\x03r\
+\x93G\x0aq]?\x14JB\xe9\xc9bnf\xbb\xc7\
+\xcfZc\x01\x06\xc9\xda\x93uT\x12\xaa\x82N\x95t\
+N\xf7\x11jW0\xb4<R\xc3\x03m\x11\xdb\xaf\xd3\
+\x9f\x0b\xf1\xef\xdf\x13\x1a\xf1j\xcfg\x18\x03\xd3\xcf\x08\
+q\x5cW\xa8\xeb\x5cv\x071S\x08\x8d\x1aJ\x93\x93\
+\x81F\xe9\x8d\xedq\x98`$\x8c\xa6\xaf\x11*u\xbf\
+?T\x16m\xf5?I\x98\x0c\xab\x8d~O\xb1/?\
+R\xfdc\xfc\xf6,\xe1p\x22\x08\xe6\xd6\x82\xcc\xa4~\
+5\x10\x06\xcb\xf4N\xa1R\x882\x83\x04\xf5\x10\xaa\xc7\
++\x0b\xc9\xa0\xf6s\xf7\xc2[nL\xd3V\xa5h\x08\
+<Tk\xfaK\xad\xc3%\xa6\x90\xbc\xd7\xb5>w9\
+R\xff\x84\xa6\xc4\x80\xf6\x1dV\x11-bh\x075\x91\
+u;\xb2\xfd\xe3\x85F\x15\xd65\x19D~\xca\x06\xfd\
+\x1cGN\xf6l\xc4\xefdF\xdf\xda\x88\xc9\x11)\xc7\
+\xb1%\xe3&\xb7t\xc9\x86:\xae\xb8v\x13\xf1\xa3\x1d\
+WqK\xb7i\xdab\xb5\xfd\xb6\x1b\x11\x9f\xb2|/\
+\xe3\x09\xf1$\x7f\xcfS\x9a\xc8;\xbf\x8b\xa3\x8b\xe1\xe5\
+\x08|\xaa\x15\xd3\x0f\x14\x95u;h\x85\x9a\xf7\xc7\xa6\
+V\x10\xb5}\xfa\x1c\xbb\x9fg\xa1\xa2\xbf\xa9YX\xc5\
+\x8c\xd8\xae\xa9\xc9\xb5\x88^\xb6\xd7\x83bIM\xf8\xdd\
+%\x87V7>\xa8w|\x9e\x80\x8c\xa4\x96>W#\
+oe\x83\x10\x13\xe1\x9c\xc0W\xabCU\x88/\xbb7\
+\xd4KD\xc7L\x91O\x0a\x0f\x86\x185pn\xcf\x97\
+\x8e\x09\xa2\x17\x04&\x10\xf1\xa0\xa6\x8e>\xc1\xce\x88\x0f\
+\x0f\x0aM&\x9e\x0c\x9c#\xf5\xc3>BS\x8b7\xeb\
+\x10Q\x03\xa4\xb3\xdb\xba\x06\x12\xb26Tw\xe5M\xce\
+t\xec\xed\x80\xcd\x01M\x00\xc0\x19\xe3\xe1\xa3\x81\xa3\x9a\
+\x08\xaaE\x18\xb3\x96\x8d\xffd\x8e\x1c\xe8Z\xaf\x8f\x94\
+6([\xab\x0d\x0a\x863\xfd]K%\xf7u\xb5\x8d\
+&\x99\xb0\xb2p\xc7}\x9d{\xa1P7\xd2T#\xb5\
+\xa3H\x068\xa9nD\x94qLp\xe8\x08\x10\xc9\xcd\
+X\xaef(\xc9l\xccm#Tq&\x1c\xd0\xdc\xe0\
+$N\xb7m\x93\x016e;\xef\xaf\xdc\xb5\xab=\xfe\
+\x7f\x10\xeb\xc0\x9b\x848\x9e$\xd4\x8d\xbb_(\xb0\xa0\
+\xa1\xa2k\x16=\xa5\x89 K<\x8c\x8di\xd7Zb\
+DF\xa5\xacWk6L\x02\x1c \x8br\x16\xf5\xf1\
+\x9bj\xbb\x98\x22z\xf4\xb8\xa6\xcd\x92\xcc\xc2\x8b\x1a\x87\
+\x93\x0d\xc5\x1b\x7f\x1a\xf2h5\xbcg\x8c\xc4f\x0d\x1c\
+\x0c\x15\x1c\x5c\x1cXJ}^.4L\x8fM-^\
+G\x0d6mn\xa0(\xda\x00AT5\xd7mod\
+\xd9n\x90\x1ad\xd6w\x98\x028J\xac\xb7P\x1d\xc9\
+\x98\xcefR\xc9\xd0:\xb3\x94\x19i\x1c5j\xff\xc9\
+\xe4\xf3w|\xefB35\xf5\xccc\x1cD\x1cF\xda\
+\x95A%$\xa0\xeb\xccu\xb63\xa4\xd6\x92u\x00G\
+\x10\xc6\xce\xe5\xce\xa8\xaem\x87\xef\xa9#\xc5o\xb8\xcd\
+\x9f\xb7c\x90bh\x9c7\x22=\x04f\xd1. \x03\
+L{1\x02\x22\xa6\xa2\x0e\x9f\x11\x1a\x83\x88\xfb\xea\xfb\
+\x93\x86\xc5\xc56\xa0l\xb8$\x93\x8c\x80\x01\x01\x89\x9b\
+\xc7\x80D\x06\x22Xo\xb9>\x02\x008\xc40\x22f\
+\xbe\xa7hK\xcf7\x8e\xd8\x9f\x1d\xf8\x80\xc9B\xa0\x95\
+\xe7\xcd\xe7\xb8>\xd6\xe3\xd9n7\xcc\x83\x8d\xed\xe0\xba\
+]%\xea\xea\x19P\xf3\xfd\xc8\xdaf~\x97\xe7\x8ec\
+N@\xa6\xddW\x1f\xd18\xfa\xec\x9bP\xf1\xc9\xc8\xc1\
+\xf0\xf3\xb8\xcc\xd2+D\xea(eA\x9c\x96\x0c\xaa\xc5\
+\x03\x93A\xe0\xcfS\xeb\x9e\xf7\x85\xe7\x89\xc3\x01#\x80\
+\xf5\x9d\x00\x03\x99i\xabK\xe7s!\xf3\x8b\xc1\xbdo\
+A\x15%\xf4\xef$U\xd7\x99\xf3\xfe\x16\xa1Ryi\
+\xdf\x96]\x0d\xa8\xb9%\xa0\x8ah\x1c\xea\xef\x88Ty\
+\x1d\xcc\x1atg\xfe\xcb~\xf4\xd1Z\xcb_\xda\x9f\xdd\
+]\xdb\x82\xcdm,T\xb1b\xa8\xce)\xb6J{G\
+\xd7\x8e\xf3{\xa9\xf5\x04\xd5\xda\xb5\xfe\x99y&c\x8e\
+F\x80E\xde\xf2~\xe3H\x10XQ\xc2\xea[M \
+\x80\xc0\xb5\xd7\xa9\xec\x92\x82\x88\xa1\x997\xa5=\xf2:\
+M\xfb>k \x94\xb6\xc5\xebV\xa6^\xda\x01\xf4\xd1\
+F\x1b\xe2\x97B#*\xea>\xef)\x0ag\xc7\x81}\
+\x8fv\xbf\x19P\xa6\xdb\xd5\xfb\x1c\x08_\xcc\x8c\x0eJ\
+\xb5X\x17^\xe9\x92\x81C\xfc\xbe\x1d\xe2,\x91e\xbe\
+[\xbb%\x1dzg\xee\xb3v~k\xab\xee\x93\x18\xc0\
+A7e\xb8\xff\x8d\x10\xaf\x1f\x10j\x09j\xb6\x05D\
+\xb4m\x93\xc0S\x9b\x8c\xad)\xda\x04\xa4JI\xc7=\
+M{c\x1c\x1c3\x15\xfa\x07\x84\x18?/\x10\xe2x\
+\x8e\x10\xef\xff[\xa8\x0c\xad\xfeUB\x93\x89\xb6\x88_\
+\x8a\xce\xe1h\xcbQT)\xde\xaeBc\xef\x99A\xc5\
+>\xcb|\x98\xee\x14\xd8\xb9\xd4\xba_W\x02\x09\xda\xa5\
+Ow\xa9\xca\x0d\x8d\xb6\x00\xdd\xc6\xdc\xd6\x8e@\xcb\xf4\
+sB\x1cw\x17\x9a\x0c\xf8\x03c\x89b\xf7\xce\xc2\xb5\
+H\x95yJ\x88\xfa\xd3\x85r\xbf\x8a]\xd4\xdf\xdb\xdf\
+\xd3\xdf\xd3$\xba<\x1e`\xcad;8\xdbAE\xfc\
+|\x8d\xa6\x1b\x03b\x8c\xb7\x0bq\xfc\xa9P\xdbY\xcf\
+m*T\x91E\x02\xc1h\x82\x11\xc8\xc8\xc0\x8cKP\
+\xd0\x94\xc8\xf5\xca\xcc9\x1c\xe2d\xb2\xc1\x08\xb4vU\
+\xee\xb7\x88Pz>\xe4\xbc\xc5_B\xab\xeb\x8dB\xe3\
+\xdf\x10\x90s\x1b\xe7\x5cG\x19\x7f\x9a\xd7o\xaf\x8c\x8f\
+\xfe\xafB\xb5\xb3\xfaw\xf7\xef\xea\xdf]KT\x11u\
+\x0fo\xa8\xb4Q' :\xbc\xc6v\xbf\xfc]\x8d\xfb\
+K\x85\xa6\xab\x92\x03\x18\xb3%v\xfd'\x84\x1a\xc0\x9d\
+\xbfq\xfe\x86\xf9\x1bJ\x80\xbft\xa3\x91\x04\xb7\xd6\xe3\
+,AwbVR\xc0\x12\x03\xee\x97\x14\x9a\xd2r\x97\
+ng\x00\xd2\xfb\x1a\xe3*K\x82aD\x118e\x9f\
+s\x02'\xdb\x8c:\x00\xc2\xfe:,?\xfa\x01\x8c{\
+\xbaW\xa0iBI\xc3\x82\xb2\xcc\xacYo$5,\
+\xd3\xeb\x03\xbfk\xfa\x89\xb2`\xc9,\xbc\xa3\xc9\x148\
+C_\xdc\xc6k\xea\x09L\xdf,\xd4\xccr\xb6]\xa1\
+-\x0e\xb5$,HP\xc0lxN\x17\x0e,\xe2\x08\
+\xc7\xb7,\x96v\xbb7\xf2\x95\x1b\xca:\x91x\xd4_\
+\xc9\xec\xc8L\xb9\xcf\x06\xe2!^8?])\x90\x19\
+\xb9\x85\x12B\xa6\x04\x03N\xee\xf7V\xce\xa8\xfc\xb9\xd6\
+\x94g&\x16\x03\xc3\x86A:\xb4\xdc\x07j31\xf4\
+0leF\xaeP\x0d\xb1\xcc\x94H\x93\xf1\xdd\x0d5\
+\x92v:D\xa6Q\x93E\xdd\xd7\xfd\xeb\xc9\x90\xa6\xb8\
+\x0cTA\xf7\xf1\x1c6\x0bl\xde\xd4\xc4IleA\
+\xd3\x16\xd1\x13\x0b\x114\x98\x17dT\xb3V_\xdfw\
+\xb4'\xec=M\xc6\x0d\xf1\x152\x5c\xf7\x94\xaa\xd21\
+\xa0\xb1Ac\xe8\x10\x98\xa1=\x8e7\xeeBI\xda\xa7\
+R\xf9S-\x98L\x16\x19\x1fS\xa9\xf3\xbe\x92\xa9\x86\
+)\x81aK\x06\xf4\xe1\xb1m\x0a]#\xb2\x0f\xbc\xc7\
+\x19\x0bK\x96\xa4\x10Iw7\x0bjd\xd2q\xa2\xdf\
+&\xed\xa6PU\xe6\xf9\xc8-^\xb9\x11AB\xfd\xdb\
+\x8ex\x8a\x22*?p\xb8\x17\xfe\xcf4\xcc\x1ajL\
+ioG\xcd\xa4\xfa\x85\xae\xd6\x04\xce`\x0a\xe0(R\
+\xaaC\xa0\x80\xdae\x8b@&u\xf2\x0d\x05c\xe6\xe7\
+\xd7.\xa5Q\xc0a\xdf\xc0~n\x97yJ\xa5\xd2\xd1\
+\xa74\x0d5\x85\xe3\x96\xb6A\xbcV\xd3W\x9e\xc0\x95\
+\xdc\xbd\x8d\x9a\x8c\x19\xe2R\x88\xf8\xfc,\xf0S\xdf\xaf\
+;L%\x7f\xa0\xc9\x84\xa1\xa2\x0c#\xc8\x94\xd6\x128\
+\xfc\x90)k\x7f\xa9\xd4\xac\xec\x9b\xba\xe2P(\x9d\xd3\
+]\xa7\xbb\x96\x86 l,\xce\x9c\xa0MBD9)\
+\x82lTb\x12\x5c\xdbP4\xcd\xd8(\x99\x90C\xbc\
+\xa0\x7f\xb2\xc9xB\xc5&@\xa7\xe7\xfe\xf4\xa6\xe6\x90\
+\xf1@\xa0\x88\xfb\x83\xe3\xa3\x0c\xe8\xeb\x1c\x91\xdf\xaba\
+n\xa0\xc2\x8d\xea9\x19o\xda\x0b\x9a\xea\x95\x869T\
+=\xab\xfbg\xe6\xe5\xd9\xe3<\x8c\xed\xbd\xb4\xf9If\
+\x0d\x1b1\x19F\x1b\xb8\xe9\x00!\x8av\xb5k\xde\x1f\
+9f42\xc0\x85\x03\xcc\x865\x1b\x18 \xb3\x8f\xe3\
+\x87X&G\xd6\x0b\x1cG\xe65\x14dj\x0f\xa1\xb4\
+\xd9\x01Ss\x1f\x05\xa6\xc3\xb8\x1a\x19I\xa6\xb6M\x8e\
+\x14\x9a\x00\x06\x8e\xa9\x1d\x83\xac\xf9\xc5\x91Z\xd2\xf7\xa1\
+j+\x8cZ\x00[\xd8At\xc6 \xd7\x17\xb7\x9fK\
+\xad\x01;\xa4\x999w;\xb5\xac!$pH\x06\x14\
+\xb5v\xd61\x02:\x04D\xc8\xc8n\xee\x80\xf4/=\
+.-R\x97m\xee\xc88s_\x09\x08\xb0\x0e\xe0\xd8\
+3.Y\x07g\xdbz>\xa7 3\x8f\xf99\x98\x01\
+<\xd7{}\x1f\xa1jb(\xb2>-\x9a\x81\xb91\
+phC\x22U\xa0\xab\x06\xc0\xb8>\xad\xeaL8\xe3\
+\x1a\xcd\x0bS\x8e3\xa3K[W\xda\xe01\xae\xb8N\
+\x02\x0c\x5c\xa7\xe7W\xb6+\xa4\x16\x9f\xfd\x86\xb6\x92d\
+\xe8\x09\x98\xfb:2p\xccz@\x80\x83q\x89\x08\xa1\
+E\xb5\xd2\xc1\xc7niER\x17m\x1c6\x18E\x88\
+nV\xad\x85\xc28\xc8\x9aw\xc4\x0b1\xcc\xd0\x0aA\
+\x9d\x9f}\x15\x83\x9f}\x05\xa6\x9f\xd6\xed}\x9b\xf6g\
+\xee\x823\x1c(4\x01m\xdb\xb1\x8c\xa3T\x9bF\xd4\
+\x17\xd1A\xdaxAY\xa5?;\xed\x0e\x9dy\xed/\
+\x12j\xff\xf3\xa4l\xbb\x0d\xed\xf0\x5c\xa1\xa9}\xb7\xbd\
+\x91\x81n\xb4\x80\xe4\x80]\xd7\xac+\xacS\x88E\xbb\
+\xb42_\xab\x0b\xd5\xd7\x9a\xd2$\xb4\x22HL\xb0>\
+?\x22\xbb[\x8c\xcf\x85\x80\x90k\xf4\xfb\xd7\x08U\x8c\
+\x90\xf3\x08\x07\xe2\xdd}k\x7f\x11\xc0\xfcn\xc1X\x92\
+zL\x93(\x82\xba\xec\x0c\xb7\xf6\x1f\xed@\xa5[\xcd\
+\xae\x8d\x88\x17\xe7\xe5\xf10\xf7b\xa1\x19\xc7n\xb3\x99\
+\x81\x0b\xd6\x05\xda8~I\xaeLeT\xa5\x03lQ\
+\xaf\xe9[\x85\x1a \xa6KP\xb6\xb9\xdb\xd1\xd4\xe9E\
+\x02\x8b:atUc\xff\x99\xb1\x9a\x1aF\xfb\x09\x0d\
+\x93G\x0e\xe2\xad\x1e\x97_\xae\x01\x11j\xf6s\xbc\xc8\
+Aa\xdf\xbf\xac:\xe6\xc9L 3\xfd$\xa1\x06\x02\
+RK\xc0\xed\xd8\xfa\xef\x07\xbe\xe7\xe5c\xa8\xfb[?\
+\x0d\xcc[\xd4v\xf7\xfa{\xa54A\xe3\xf0>\xc1\x81\
+\xef/4\xe3\xc4\xcf}\xbam`;\xd7f\xbf\xc3\xcf\
+m\x07\x07\xbe\xc2.\x99\xdf[h2\xb7b\xf0\xfd\xd5\
+\x09\x89\xcb\x1a\x86$\x0e\xd6jBe\xfc\x0c\x8b\xc7<\
+^\xbciog\x86\xd6\xdc\xcb\x848\xfe]\xa8\xa5*\
+s\xb7\x08\xf1\xfa3Bu\xb8\x931C\xbfx\xdf\x9f\
+\x14)e\x9e\xda\xde\x87I@\x0d\xfa\xdc\x01B\x0d\xd4\
+\xd1\x15\xaa$.~`\x86d\xac\xab\xd3\xfd\x85F\xdb\
+\xc3\xe3\x0am0\x02\xb2\xf3_\x16\x9a\xf6\x8e\xf6/\xb2\
+\xa4\xce\xe3\x10\x0d\x85,\xc5\xb0=\x95\x19~\x12\x0a\xac\
+\x8b\xccK\xec#4a\xe8\x16\x80\x08\xa5\xdbzf;\
+p\xe6\xb1\x99G\xa9\xcda\xe6m\x06.~\x17~\xde\
+\xef\x0as\xe3WE\x1c\xd6\xcc\x9ba\x8faOi\x8a\
+\x0d\xab\xfa\xf9!Z\xec\x00=\xdd\x10\x94\x16\x9c\xca>\
+\xfd\xe6\xf0M\x8d\xdb\xe93\x84\xba_\xa0\xb1\xb4\xd0[\
+\x84\xea\x98\x13\xf8I\xc7\x9cu\x97\xd7\xb4\x1d5\x83\x02\
+qT\xec\xd9\xd4\x5c\xf0~\xd8\x1f*T\xa6+\xdd\xdc\
+\x92a\xeeD\x88z\x8aId<\x19\xb6\x04\x0a7q\
+\xc2n\xb6$\xce\xe3k\x01\x8e=\x14\x09\x22\xc0\xfd{\
+\x85F5Z\xee\xf1\xa3\xff\xab\xed\xd4HI\xa5o\xb5\
+\xb6\xcf\x7f\xdba\xfaf5\xbc2S!\xb7\xec/M\
+\xc6\xdc\x86\xe7\xf4*\xa1\xe9;)\xca\xc4\xa3\xaa\x8ao\
+\xa1N\x9chG\xf7\x83\x1e\xf8\xbf\xb2C\xfd\xa8f\xc3\
+\xbb\xba\xc8\x9a\xa4\xeau\x99\xf0\xba\xd1G\x08M-(\
+mfN\x15\x5c{\xfd\xc6\xa6]\x96)\xffe\xc3\xbb\
+\xa6\x89\x04\x91!\xa3V\x9d~\xe3l\x08\xca\xd3}\xa9\
+vG\x80\x82\x0f\xb5%\x1d*Ixm\xdbdP\xe9\
+\xcbND\x8d\x0c\x96\xcf\x03C\x05\xd5Z2\xd1\x99\xa9\
+\x90Y\x7fi-!H\xb1A\xda\x87Y\xcb\x80\x0c\xa8\
+D\xea\xfaOy\x03;\xd4\x86\xcdskMU\x1a\x84\
+f.\xe4\x02\xe4\x8c\xff\xf4\xd7\x82\xa97\xaa\x91\x9e\x13\
+\x9a\xda>\x99\xafg6\x99\x1aT\xc5\xb9O\x18\x88\xa6\
+\xe6\xa5h\x05\x14\x15\x8b\x9cQ\xeb\x82\xa1B\xdbH\xda\
+0e\xad\x19\xa2v8dP\x99\xa1\xc8\x98\xba5\xbd\
+D\xa8\x91\xe7\xecc\xeb\xc0@fb\xa0J]R\xe4\
+\xa9j\xe6\x00\xaa\x18\x222g\x8d\x1bs\x96R\x90)\
+G\x0cH\xee\xc2\x83\x8d\x18$\xfd@\xe9\xbb\x8c#\x02\
+\x95\x99\x05\xd1%\x11\xa9\x81\xe1\xf6\x7f\xa5 `\x07\x0f\
+\xc7I\x93Qu\xc6\x9a.\x0bi\x88iA\xd9\xccZ\
+\x19gV1\xc1\x22*\xb3c\x15{\x1aN\x0b\x9c\xea\
+y\xb3G5\x9c\xb2\x9b\x82\xc5-\x11\x09J\x87\x06f\
+\x8c\x08\xdbOl2\xac\x18`3\x0es\xa1\x8a\xed\xd4\
+\x18\xe6.U\xa1;B\xd6\x1a\xbb\xedb1\xecN4\
+\xd5\x0e\xf5\xecs\xab\x036\xff*!\x8e[\xceoY\
+2\xb01\x1b\x0ac\xc5\x19\xaf\xb9\xfb\x04S\xc7\x16o\
+2\x85v\x10X\x1f\xa6\x1b\x09U\x84'\x03\x01\x16+\
+\xa5\xa4)\xcf\x9fZ]\xc63\x99J\x02\x880@P\
+\xf3\xa5\xd6\xdb\x1bwi\xabxum\xbbH\x89G\x09\
+\x00\xa8\x84\xe1\x85\x82\x19\x05\x174j\xf9O,z\xc2\
+\xa3Cti\xed\xdaA\x7fh\x1c\x02\x15<h\xc3\x80\
+:?<y4DY\x07'\xbfuF\xed\x9d\x0e\x00\
+\xcc\xb6\xd1\xa3\xef\xf7\x8d\xee\x13\xfc43\x0dp\x90\x18\
+\xb7\xb3\x86;\x8e\x13\xf7\xd9\x8c\xa3\xcc\xe4\xcf\xdc\x9ft\
+\xb4y\x0d\x05\x10j;%\x1bdX9>wtd\
+\x93\x09@\xad1\xd4k4Ip\xfc\x9c1\x8d\xddh\
+T'\xa6F\x9au\x9cZ\xd3\x17\xf8\xb9\xce\x062p\
+\x04p\xa0\xb7\xb2c\xb2\x93\x1dXJ\x9dh\xcf\xc8\xdf\
+s?\x09\x88\x11\xf8\xa6D\x80\xf7a\xba\xfd\xca*\xf6\
+\xd6\xce\xc9\x80\xc6\x9a\x0e\x18\xc0\x98\xc0\xb1\x1e<.V\
+u\xdbA\x1cu\x8f\xbbt\x80`\x08\x90\x09\xa2+\x0f\
+\x0e,\xcf\x95\xffp\xbcy>\xa8\xf8s?h\x1b\xf8\
+\x1f3}p\xf0\x08(1.\xec\xd8dI\xc7:N\
+$D\x90En\x00\x00 \x00IDAT\xe0 \x93\
+\xc9\xc5\xe1A\x9c\x11\x11M\xf6]J \x18W\x8c#\
+\x02\x16\xb3j\xf8d\xf2ad\x10P&PB\xad*\
+\xf3\x83\xf9\xc9\xf3 \xc6\xfdGs\x01\xc3\x89\x12\x01\
+\x18\x09<g\xc6/\x06-\x81\x5c\x02`\xec\x87\xdcW\
+\xa8\xe6\x88\xe2\xcd\xda\x09<?\x1b\xc2\xd9\xd7\x19\x06\x02\
+\xfb'\xd4c\xdbqY\xd2\x87\x8a\xb7\x99n\x94\xf4M\
+\x0f\x15\x9a\xb6o\xdcg\x02B\x04*px\xc98\xf1\
+\xfc1\xe4\x99\xd7\x88V9#\xcb~\x99\xe2\xc8V?\
+O\x8d\x10\xaf\x9b\x94\xaee\x00\x87\x8c\x1f\x0c\x01\x02 \
++\x8c\x19\xed\x0c\xf41n-\x9e\x98\xe3\x81qB \
+\x16\xad\x14\xda\xa2\xe1\x00X\xfc+\x03\xffn\xfb5\xbd\
+L(\x99\xd9\x80\xb5Z\x9e\xdc\x94BQ2\x86\xc6\x08\
+%\xae[\x8c]\x82R\xbc\x9aR\x10\x07\xf2\xb2\xbb\x82\
+\xe7\xd9\xf4\xb3B\xb5\x9fK\x89\xda!\x0dCTb\xcc\
+77\xa5\x85\xb4_s\xcdn\xbf\x93\x10\xe7\xbd\x9b\xd4\
+\x8e\x1a\xad%\x07\x22'\x878p}|Q\x85\x91\x9d\
+rf\x09 \xb8\xfbV)-x\xa1K;\x96\xaf\xf6\
+\xc2\xdcg\x04\x8b\x9e\xddi{\xe8\xcbM\xad:\xfd\xe2\
+\xcd\x14\xa0\x06:\x19p\xcc\x7f\xf6{?W\x02\x0a8\
+L\xd9\x0f\x9d\xb6\x8a\x1f\x13j\x1f\xfa\xb9#\x02\x1f\x89\
+\xd7\xd7\x08q<(\xa0\xf6\xd6\x0b\x0b\x0d\x93@\x09\x05\
+1\xf7\xd6\x09\xac]\xd5\xdf\x8bF\xc7\xcd\x0d\x93\xd5v\
+\xcc\xf4\xf5\x81\xd75\x22\xd7Z\x87\x9eo;\xfe{\x1e\
+g\xcb7\xed\xe3hc(\xbbS\x01\x9e\x9b\x0276\
+\x8cQJ\xd6\xd8\xf7`\x08[\x1c\x8fn\x12h\x0b\xf4\
+\xcb\x09q}{\x09\x95\xa2\x8f\x06B\x964\xfby\xd0\
+\x86\xb8\x7f\x91\xd0d\x8c)\xad\xf1|\x831\x00S\xa1\
+\x7f] \xfc\xb8\xb9\xd3\x85x}m\xe0\x9a&\xb0e\
+\x07t\xfe\xd7B\xd3u\xc9\x8c\xc1\xf9\x0f\x0b\x0du\xdc\
+\x89\xc3\x14\x99\xa4v\x9f.\x1d\xd8\xcd\x88\x96\xef\x224\
+\xe2t\x94\x1c\xc3\xc4\xa3\xeb\x93\xa9\xee$\xba2\x00B\
+\xc6\xdf%8\x1c\xfb\x1f\x0b\xb5-t2\x84\x95\xe6\xfc\
+h\xd1z\x1b\x03n$v\x9c\xb0\x9d\xff\xacP\xb7\xb7\
+\x98=E\xe3.\xbbn\xbdsL\xe4M\x7f:\x96\x84\
+d[\xd8\xd8\xcd\xfb~\xf4\xa3\xb4^\x96\xd2\xef\xb9j\
+\xc7/\xb4\xa5P\x19f$\x1c\xa6\xef\x14\xe2\xf8\x5c\xa1\
+\xfa\x99\xc9\xc8D\xd4\xdc\x097\x98\xd3\xe9\xd7\xa0\x11B\
+\xb79\x97t\xa1=2=K\xa8\xed\xa7c5[u\
+X\xb5)y^_\xa8\x0e\xff\xb0\xe5\xf0\x82\xe1\x05U\
+\xfba\xfa\x80P\x03+\x0b\x1e\xdeC\xa8\x0f`\xee\x15\
+\x81W\xdaQ9\xb0\x1a|\xd3\xad\x03[\xd5\x05\x87H\
+'\x14p\x22\x94\xa5&\xe7=\x0d\xd5Y\xa2\x1f\x93\x86\
+\xb2\xa9m\xff\xa0\xf8\xbe\x17\x09q\xbcHhT\x10\x9d\
+\x09L\xea\x9e(\xea\x87\xdbP[\xb2j\x00h{V\
+i@y\x90\xcb9\xf2\xbc\x99\xd5,\xcfi\xc4^4\
+,\x7f\xd4\x88\xb6(\x22uL\xad\x15\x87\xcaE\x1b\x12\
+\x22\x9d\xb9\xe1)oz@\xb3\xa0S\xa3F&m\xaf\
+Q\x8d\xb2\xa8\x89^\xe9\x05i\xdd\xa6?\xf8L\xc6:\
+\x0d\x1e\x0cz2bP`g\xdbn!\x0ahm\x00\
+\xc4(\xfas\x02_mD\xcc\xacf\x9e5PD\xd0\
+\x5c\xb3Z\xa8x\xf3M\x17\x04\x07\x0cJ\xcd\xcf\xaf\x9b\
+\x09e\xc7.\x0dc(\xde6\x10\xfaw\x09v<\xc2\
+\xb1\x9c>%\xb0Q\xd3\x1d@\xf7\xe3\xd5\xb5\x8d^\xb6\
+}\xbc\xa8\xc8s\x8c\x11\xc6\xf3\x9a\xda!j\x1aQ\x19\
+\xe5\xfa\xa9='\x03\x8d\xa1\x8a*3\xa2G8`\xb4\
+w\xe25\x94xe\xf2?\xd9\x881\xb9F<\x0d,\
+\x1b\x16\x99I1u\xbf\xd4v\xaf\xdf8\x18|\xafx\
+2g\xd46s\xa8\xfag\x7fN\x99?\x9fn\xfa\xc8\
+\x13\xc9%\x83Fw\x03\xf59^\xb4aX\xc0(\x80\
+\x02\xa58\xe3/+\xc59E\x5cl\xb0$\xe5O\xf7\
+qGg\xce~\xda\xb4\xf5\xa1\x06\x92\xfb\xa9e\xfal\
+\xcf\x9f_\xd7\xbe\xa1e\xde>\xae\xd66f\xad)\x0b\
+\xb7\xc6\xc9\xcf\x9a\xb6J0_\xa8\xd1\xc5\x00\xc7@'\
+cI\xc6\x0e\x83\x0d\xc7\xc0\xedVp\x04\xb2\xc6\x18G\
+k\xb6\xff\xb5\xb5\x22\xfa\x87\x85X\x9f\x1e\x16jF.\
+\xfb\xf7:2\x9a\x01\x08\xcd\xceGW\xeaf\xd9\xb8c\
+\xe1\x83\x91Z\xda\xca\xbc\xa6\xf6/\x9e?O\xa8\x06I\
+\xa9\xd5\xfae#\x0ed\xad\x84\xa4(c\xf8\xe3\xc02\
+\x7f\x09\xa0\xfcCh\xd4\xc7\x11\x17\xa2\x7f0\xed\x06\xd1\
+dP[\x9f\xef;\x00\xb2h\x13\xd8\xa4}\xa1x\x02\
+\xcf\xf6|~Eet\x94\xd2\x84\x1b\x1af\x84\xdb\xb7\
+)\x0cY\x02\x91\xb4\xb3Q\xf7\x8d\xc3\x1aG\xc8\xaa\xbf\
+\xb3\x22>\xe9\x08p\xff\xef\xb1c\xc4|\xe1\xfeR\x0a\
+@m/\x99o\x0cc\x98\x03\xb3\x99k\x1cX\x1c8\
+;&\xa81\xe7x\x85\xfa\xc6\xbc\x9aQQ\xcf\x8c;\
+\xb5\x86\x1bYm\x17*2T<\xc43\x09T{\xfc\
+*\xacU\x02[\x1be&b\x0cX<\xd1\x8e\xcdR\
+v\xe8`.\x10\xe8X\xd8\x19p\x02'8P\xac\x0f\
+8\xa28&\x8c{\xd6/\x02G\xd4\xa0\xc3\x0c \xb3\
+B;\xbb\x8d\xec\xc0\xdee\xc7\x91\xef\xc3\x90\xe2~\xb0\
+\x0f\xf1\x1f\xcf\x97\xfd\x86Zpgt'\xab\xb9\xbf0\
+\xe2\x898N\x9d\xaf\xe3\x11~\xeen\xfb\x17f\xfc\xe8\
+\xd8\xe1\xd8\xe2\xd03_\xd9\xbf\xc8\x18\xe2\xd0\xbd\xd5\x22\
+r\x04n\xce\xf7\xf7\xb2.`@\xa3\x92\x8cf\xc4L\
+\xd7\x89,\xc5!#\x0dU\x1e\x87\x9b\xf5g\xb6\x9b\x05\
+%D\xb3\x22\x80\x9c/Z\x06<?\x9e\xe7\xacH%\
+%\x0e\x1c\xb9~\xbe\xbf\x8a?\x8e\x8e\x00\xeb\x01\x812\
+\xd6C\x9e\x1b\x0c!\x12\x0a0\x83,6\x06E4\x0d\
+}\x1cqS\x9b3@\x82\x88.\xf3\x0c\xd1M\x1b\xd0\
+\xd9\xc6\xd1\x99\xde,-\x80\xe2\x8d\x03\xed\xfb\x98\xea\xe5\
+h\x1f\xe0\xb0;0\x02\xf3\x08\xc3yz\x8aP\x990\
+\x04R\x93Y@\xc9\x04\x14c\x02\x0e\xdcG\xba\x18\xfc\
+Ih\xc4\xba(5\x83\xb1\x84=\xe8\xe7\x98\x19R\xd6\
++\xe6\x11\xf3\xd4%j\x04Dg\xdb\xf6\xd2\xb6\x0e\x8a\
+7\xccCj\x83\xa7\x0f\x0bu\xfd\xa0\xe6\x18\x839\x1d\
+)\xd6m\x07\x1a\xb3\x9d+\xfd\xedi3\x87\xd6\x0bm\
+.Y\x7f\xcch\x18\x8e\x11\x1a\xca\xbd\xbf?\xdb\xee\x99\
+\xe9\x14\xab\xdc\xd8%\xe7\xe3\xe3x\xe8\x9f\xedL\xb5\x03\
+\x03j\xb6W4\x1b\xa4Mp~\xd36q6c,\
+;\xeb\x81\x869\x06\x95\x1f1=\xfd\xfd\x0f\x9a@*\
+\x81\x1a3LJ u\xafb\xe7\xae[j\xac?;\
+9\xbe\x88\x05r\xbfa\x12\xbak\x0a\xd7\x01E\x9f\x84\
+Q\xbf\x98P\x13[\x880\xf6k\x09q\xdc+\x10v\
+\xce\xdcu\x81k\xad1\xb0MQQ\xbf\xac\xbf\xcc\x81\
+\x85\xfd\x8b\xddvoy.\xbfw \xddm\xc1\xbb\xef\
+:\x80D\xe9\xa6\xa4\xeb\xe2>\xce\xfd[\xa8\xd3\x9c\x80\
+\xcc\xc3\x7f\x08\xdc\x5c5\x96\xc8\xe4N\xb7\x12\x9c\xe0;\
+\xabq\xe0H\xd8\xcctgR\xa1\x85J-\xf0\x83\xfa\
+}\x84j\xb7\xcc=S\x88\xf7\xe7\x85F\x14\xd0vf\
+\xb6\xc5<G\xb0#\xbba\x93\x00\xb3\x86J\x8eG\xba\
+')Q\x14\xebK\x7f\x87\x10\xbf\xf3)\xa1j\x04\x94\
+\xdd\xe9\xa1Xv\xcf\x0e|\xb52\xa7\x0b\xf3(\xec\x82\
+\xe9\xb1B\xd3\xae\xda]5\x86\xcb\x85F\xb4\x0e\x87\xdf\
+\x89.\x02,\xc9xc\xfff?d\x7f\x81\x89\xc6\xba\
+\x08%\x9fL\xb85s\x10}O\xcd\x0d\x18\xe8\x94\x22\
+\xd1f\xd1\xfePQ\x90Z\xaa\xe9\x0a\xa6UaAm\
+C\xad4F\xb1\x8fl\x1fr\xbf\xa7\x07O\x0f\x99\x1e\
+\x5c\x12dE\x14\x19Fr:\xea\xeb\x08\x95\xa1\xca\xfc\
+-\xcd-\x86\x9aaG\x83 \x99\x8a\x88\xeeA\xd1\x87\
+\x82\x7f\xb4\xd00\xfc\x16\x17j\xc065?l\x0f\xd0\
+\xce:\x03\xe3\x88\x99\xd2\x16^\xa2\xf3;\x16m\x94\x91\
+Y\xbf\xbf\xbb\xa7x?\x8c\xd5\xa0\x88:\x22\x96\xaf0\
+\x80\x02\x01Y\xfac\x7f{ARK\x9c\x99(\xea\xf3\
+\xeb{\xa0\xbf\xaa&\xa0\xa8\xad(5g\xcf\xf3\xc4\xd8\
+2N\xe8mB\x131\x959\xf9<\xb7\x0d\xdc\xde*\
+\xa0K7b\x1c\xceX\x91\xf9,\x81\x85\xad\xab\xe1\x80\
+h\x02\xe2Ve\xe3\xb8\xbd:j\xd3\xd7\x06\xf6q\xa4\
+5\x16\xae\xe9\xce\x8177\x11\x1dj\xd8\x94\x01\xdd\xa2\
+\xd6(\x0d\xff\x12\xe2\xf3\xbb\x085#S\xdc\xd0\x1d\xc7\
+\x1a9Q\x18\x87G\x09\xcdFd\x039\xd5\xbbU!\
+{T\xdd(\xe6\x8f\x08\x1ci\xea\xc6\xc7\xdc\x86\xe5\xa5\
+6\xa0\x1f\xd1\x18\xcc\xfc7+\xda4[\x03CM6\
+\xb55\xce\x081 \xc9hM7\x16\x1c\x09\x85\xea\xfd\
+\xd3\xea\xb8\xa4\xba\xbb\xc5\xd6R\x04\xc5\xed$\x8a8\xde\
+\xe6M\x04\x17\x8a:\x86\xd4\x0eE\xaf\xb9\x9e?\xaa\x96\
+\x04`\xce\x0d|\xbdR\xfe\xa6?\x10L\xa9\xbb\xbe\xf4\
+\xad\x0c4\x94\x5cQZOo\xd4}\x9dQ\xcf~\xc1\
+\xa8\xf5c\xc0\xdf_tl\xab\xa3\xb0q\xa9&M\xd1\
+\xb44h\xe8\xff\xae\xda\xce+\x1a\x91#g\x82\xe9>\
+Q\x22\xd8\xff\xaa\x0eIR!Y\xb0\xc8\xf0a \x9d\
+W\x90\xed_\x92\xaaL\x1f`\x166\xa8\xa1\xca\xc3\xad\
+\xee\xf3\xdc\xbf\xd1$0\x93\xa2P\xcd\xaf\xab\x91\xbd\xa4\
+\xea+@ql-Y(\xee\xd3\x16\xb5v(\x032\
+\xb4\xef\xc2p\xc6\xf0#@\xf2@!IW\x07\x15\xc7\
+\x0b\x91D\xfa\xfbB-\xa7\xf6\x5c\x01\x84\x1f\xd76x\
+\xa9\xceLD_\x92-W4\x8e\xe8L\xa6(3f\
+d0p\xd8\xfc\xef\xd9\x16\x13\xd1\x13\x0c8j\xcdq\
+,\xa1\xca\xe2\xe8\xd8aJ1\x22\x8d\x0fQ\xa2\xce\x12\
+\xeayL\xb7\x0f\xbc\xd4L\xa1S\x1a\x11\xc8\xfb\x8an\
+\xfb\xb8@/\xa8\x86\xde\xfc\x0f\x85f>\xba]\x0f\x91\
+\xe5\xe9\x0f\x03?hT\xf2\x1dX\x99;3pV\xa3\
+\xd6\xbat\xb6y\x1b\xff\xc3\xb1c\xbcb\xc0\xc2\x18A\
+|\x0a\x87\x10\xd5lg\xae\x93\xf2\x8a\xf8\xa3\xbao\xdc\
+\xda\x04\xb6\x1c8\xcd\x8c\xb3)\xa3\x88\x01N\xcf\x0e\x88\
+1\xf5\xc7\xc0mu\x1cS\xf3K@ox\xc0\x19\x8c\
+\xfb\xff\xbb]^\xaeC\xbc\x86Ic\x0d\x96\xf8\xeb\xb1\
+\xc6\x0f\xc7\x87\x8c&\x0e\xc2\x03BS\xc3\x8a\xe1=+\
+\xf2\xc7q\x96A\x81\xe36\xd3\xf6)\x03\x14\x04N\xd7\
+\xb3\xc6\x08%(8,\x8f\xb7cf\x07\x11m\x93l\
+\x0b\x07\xf5\x1d\x03d\x1bS\xd1\xc9d>\xd5\x8e\x15\xa5\
+J+X\x05\x9f\x8c7\x01\x00\xe6\x15L\x05\x02\xb5\xdc\
+7\x0c\x1d>\xc7|\xe1\xfd\xd9\xae\x0f\x9d\xdbmb@\
+\xc1\x08\xb8l4\xbc\x92Y\xc0\xfcX\xc3\x8e=\x8e,\
+\xe7\xc7\xbc\x81b\x8f\x88\x1c\xa5\x22W\xda\x81\x7f\xa2K\
+(6\x18\xfb#\x87\xdb3\xaaX\xa3\xae\xbe\x9c\xd7\x19\
+\xae\xf7\xb1f4PBA`\x01\xc7\x9a\xf3@\x5c\xd0\
+*\xc7\x93\xddG\x06[\x5c\xd3x\x9f\x08\xc8\x12\xe0\xb0\
+\xd8X\xee\x83\x94~\xf0\xfd\x1e\x17\xd9\xf6\x16f\x15\xd7\
+I\x00\x82q\xc1k\x98'8\xfc\x8cC\xd6K\x1ch\
+\x9e\x1b\x8c7\x1cr\x1c\xf5Yf\x0a\xf3\x96}\xc2\x0e\
+S\xaa\x93\x1f 4]\x09h\xf3E@\xc4\xf73U\
+\xed\x09\xd4\xa2\x15@&\xf7m\x05\xb5m\x9c\xfb\xa1\xe7\
+uQ\xb2\x00u\x1f\xea,\xf7\x0f\xed\x16gls\x9d\
+\x22\x83\xee\xb6\x80i\x86\xb8_x\x8a\x9b\xb9\xf4\x8d\xf6\
+o\xa5M\xf3\x9b\x5c;\xbdSS\x02g5pD\xef\
+\xfa\xdd\x85\xca`\xa0\xado\x8a\xe0\xb9[@\xb69\x84\
+\xe1G\xc0\x0aU~\x98t\x04 \x08\x98\x10x\xf1\xbe\
+L\x00\x99\xd2\x89\xd4\x0eb?&\xc0\x03C\xcf\x99\xe7\
+d\xa0\xc1X pC\x89\x155\xe3\xbb\x8f\x19vJ\
+W\xb3{\x08%\x01\xbe\x0f\x04>q\x5cR\x0d\xdf\x09\
+\x0e\x98\x828\xbaY\xbbo\xc3>\x13U\xde\xa7\xb3F\
+\xdbbk\x93M\xdcm\xe1\x81\xd1NC\x141f\xe9\
+2\x12\x03\x84\x91\x073\x8e\x80\x055\xd2\xfd?\xfb{\
+\xfb\x7f\xd6\x1a{D\xe62\xa0F\x80\x8e\x12AY%\
+76L)\xf614\x17V\xf4}<~dzd\
+I\x8a\xd5\xde\xb3$\xc0%\xb9\xfd\x15B\x1c\x97\x10\xea\
+\x91\xda\xfe\xd4\x96\xf8m\xe0\xaa\xdaUl\xee_\x818\
+\xdf\xb9\xd7\x09q|\x87P\x98\x00\x8b\xf4\x8b4\xf3\x00\
+\xbb\x19F\xd1\xda\xbe\x9e\xd3\x9d\xa1\xb6=K&=\x19\
+,\xce\xd4\x17\xffa\xe7:\x0f)]\x9e\x9e&\xc4}\
+]Kp\x09N\xac\xd7\xfd/\x84\x9a\xc1V%\xbfj\
+\xf9\xa1\xd4\xf7/\x10ji\xea\xdc\x09B\x0d<\xcc\xfd\
+Xh\xbaN\x90@\xa5\x9b\x03%\xad\xacO\xee\xaa\x81\
+&\x00\x01'\xb4\xbf`\x0c\xd0U\x8c.I\xa5k\xe3\
+\xa4\xae\xcf\xf3\xb7\x07\xc2\x9e\x9c\xff\x8f\x10\xc7K\x858\
+\xef\x8b\x03a\xa7N\x0f\x13\x9c \x89\xbf\x1b>$\xc4\
+\xf1\xa9B]?a(g\x04\x05\xff\x11Qm\xf7\x97\
+\xcfy\xcd:5\xdbE\x86\xf1\x86\x9d\xe7u(\xed\x1b\
+\x02J\x0e\xa0\xa5*\xbe\x13\xcf\x19h\xfc\xce8\x1f\x0b\
+#\xf2\xcf\xa5\xf6}yu5C\xdc\xaf\x04 \xffX\
+\xbbi%\xa3\x05\xf1\xf4\x05c{\xcbd\xb29\x91E\
+\xe9B2MZ\xcd\x09\xf9\x89\xf7\x08q\xbf\xbe!4\
+\xeb:\xa5\x0fh\x09\x10\x00vi[j#\xd0\xc5\xc5\
+\xf3 \x13X\xb6\xcf\xb3\xed\xa6\xc5])\xd5`\x9e\x93\
+8\x9f\xbe\x5ch\xc4\x9d}\xff\xb2\xa4\x94v\x99ow\
+\x89\xbd\xed\x83\xfe\x1f\x82J\x00\x14\xb1|k\xbc\xf1\x14\
+\xa1\x0e\x98\xe9w\x85\x86r#\x8a\xce\x9b\x1aq\x17\xf7\
+\x1f\xcd\xda\xea3\x02\x9f\xb7\x1a\xec\xe5\xa6\x1c*C\xb5\
+\xb2\x10\xdfw\x9d\xe0\x1a\x19M\xac\xa5\x84\xaa\x92\x9c\xd4\
+1;\xce\x85:vO\x13)B\x8cb\xcd\xc0ZM\
+\xed\xbb6\xaa\xb7Y$P\x91\xab\xa3\x84\xaa\xba\xcb\x86\
+\x94\x14\xdbe\x85\xba\xe1\x16\x0d\xcf\xdf\x8fb)R_\
+-\x22\x18\xcf\xab\x19\xee\x14\xaf\xb3\x0ac\x11/;\xbf\
+\xb9~\xff{j\x1ch\xb8~\xc5\x8e\xd1?L!|\
+\xb82\x02\xb2\x0d\x9b)\xef\xc3O\x03?3%q\xb3\
+\xc6`\xc6\x00\xff\xa6P)\x8d\xc33\x84\xda\xc7\x1b\xb5\
+\xd9\xac%<L\x8d\x1e\x9a\xc8\xba6\xa8%\x9b\xf6\x1f\
+\xd4N\xab_\xfc;\x1a\xaa\x19\x1b\x01\xda\x092O\x1f\
+\xb2\xc1\xbaP\x93\x11A\x9d\xdd\x94\xa3\xe2F\xee\xd6\x88\
+8\xca\xfc\xd9\xac\xd9@l\x80\xa5\xe8\x13\x99bJ\x03\
+0\x90\xdd\x8e\xafd\xceok\xc4\x05a\x8e\xc0\xe4\x90\
+y\xff\xcc\xccWU\xaa\xa0\xfb2\x0f\x7f\x13\x9a\xdf\x85\
+\x02\xe8\xf6xI\xcd\xc4\x80'\x92[\xdb\xa9\x8d\xd49\
+\x18\x01\xa6\xa2O?\x10\xf8\xa0\xef\xefa\xf5\xbe\x95v\
+v\xea\x87\xfa\xc3\x82*\xb2dC15\x11,\x86X\
+\x0c\x8c\xc3\x1a\x03\xbbU\xa5\xbe\xd7\x0b\xfc\xb3\x9an\x0a\
+\x94\x86H\xa3\xe0\xe6&R\x8a\xe1(B\xfb3*5\
+)k`\x15\x97\x96\xe3\xff\xf5\xc0\xb9\x8dCi\xf1\xcd\
+2\xce_P7\xbaR\x02\xf2\xce\x86\xf2J\x86\xc5\x0b\
+Ff\xeai\x13)\xb3\xec\x8fM\xcd\xae\x88\xb6\xdb5\
+\xe7A\xc6\x86\xdaM\x02\x0f\x18\xc8\xb35\xb7\x88\xae\x99\
+\xd2\x9a\x81'\x1c'S!\xfb\xef\x0a6\xf46\xf7\xb8\
+\xf9S\x15\xc3\xca\xd2\x0f\x8b\xbcL\x8f\x10\x9an\x01\xdb\
+\x0a\x95\x02\x08\x13\x82R\xa5\x22\x9a\xf7\xad\x1a\x98*\xeb\
+\xd5)~}pU\xeb\xcd6`8~\x5c\x0f\xcc\x88\
+{J\xee\xbc\x1a\xe6\x04\x14(\xf9\x802\x88x\xdf\xd7\
+\x85*\x9e\x18\xe6\xfb\xc8\x88\xf9\xb2#\xee\x04\xb6h\xd3\
+\xb6\x92\x99K\xcb\x8c\xaa\xd0j\x96\xa8v1I\xdd\xc3\
+Q\x22\x93J\xd7\x805\xac\x96~\xf7h`d\xff\xe3\
+*\x0a7:\xa68\xea\x04rn\x97\x0aKq\x10G\
+\xc7\x98\x0d\x1e\xd5v\x02O\x88\x04\xe1\xb00\x7fy\x8e\
+\xb3\x19s~\x8f\xf1\x86\x03H\xc6\x99\xef\x81\xb2\xef\x9a\
+\xd5\xac!\xc7\xc0\xc0A\xc3a\xc3a\xc6\xe0x\x9c\x1d\
+A2\xfc\x1b\xd8\xe1\x82\xe2\xec\x00@\xb6\xdf\x83:\xbe\
+\xb2\xbf\x87u\xea\x9f\x0e\x94\xe0A9\x10X4j\xfe\
+\xd8\x88\xf1\x91\x19\xe6zp`0\x08\x08|\xfd\xdb\xa5\
+s\x0f\xbad\xe8\x9f\xff]\x83\x9f\x19S\xee\xf7\x90\x99\
+\xfa\xf1~.>\x93Y'\xa3\x8e\xa8\x1b\x816\xd6c\
+\x9e\xab\xefC\xd6\x9c\xf3\x9c\xd0\x9e\xb9\xcd\xe2b\x0f\xf9\
+9\xad\xe8\xfb\xcb\xfd\x84\x81\x80\xc3\xcc\xf7r\xde\xd7\x9b\
+9\x05\x85\x9a\xf6D\xd4\xf4\xe3pS\xf3\xc9<b\xdd\
+d?B\x9d\xdb\x99\xb5\x1c\xa7\xcc3\x028P\xe8Y\
+\x17)]\xf4\xf7\xa4\xc3NM&\x8e.\xed\x99\x10\x0f\
+e=\x9a\xcd\xe8\x13\xc8\x83\xb9F\x80\x94\x92 \xc67\
+\x01\x09\xd6w\xe6!j\xff\x94b0~\xac2\x9f\x81\
+\x14\xae\x1b\xc3\xd7\xa2\xbf\xd9%\xc0m<\xe9R\x94\xeb\
+-\xb5\xf2\xec\xcb\xdcW\xff\x97\xb5\xf7\x88\xeda\xb7\xa9\
+6|\x91Z\x13\x9f\xf3\x88\xf1d\x87\x9b\xe75\xfd\x99\
+PkW\x93\x89\xe6u\xa1\xbfM\xa8m\xbaH\x00\x91\
+q\x86\xa9D\x89g\xee\xc3\xb4\x1dd|p\x1e.\x09\
+\xccR\x1e\x18T\xebX\xe5\x9b\xf6\xc0v\xd4\x929\x08\
+\xf3\x095\x7f\x18\x090\xa1\xd0\x8e\xa2\xab\x07\xf3\x92\x12\
+\x1d;\xe8\xc3K\x05k]\xc5}\xee\xb7\x13\x1aQ\xae\
+s\x0b\x92\xe9\x98\x01\x01;\xd8I\x81\xb7\xfdH\xc68\
+\x99-t\x07\x80\xf2LI\xa4\x03\x0dq.c\xe2\xe5\
+\x0bV\x95w\x805\xdc\xeb\x9f\x15\x07\x9b\x8c\xa8\x13<\
+\xfdI\xfd\x89\xfdI\x95\xb9\x86C\x89=\xa5\xf6q\xfd\
+\x9e\x16o<\xbf2\xff\xcaj\xbaSM\xe8@\xa9\xef\
+\x97\xefW\xe8W(\x89\xb8\xa2\xb9\x85FR\x96\x9c8\
+PD\x0d9\xddq\xd0\xb6\xc2\xf1.\x09\xa7-j;\
+\xc6\xb9o\x0aq\xdc*\xb0\xa5\xdb\xd8)\x91\xb8\x94\x10\
+\xef\xdf\x13\x88uv\xc1K\x85\x12\xc8(5\xfea\xfb\
+\x8c\xe3\x06\x87\x13\xaa\xbf3\xd7\xb1\xbb\x17FJ\xb8\x8b\
+%p\x95\xf7\xd1\x89\x92\xfe\xb3B\x0d\x8c\x11`-\x0c\
+\x87\x98\xff\xf3\xd7\x06\xae\xa9\x7f\x87Z~\xc9\xa0nY\
+\xdb\xc5e;U\x9e\x9b\x19\xact\xe7\x22\x83\x9dm\x84\
+\x1d8@\x0ba\xee&\xa1y\xfe\xee\x1aT\x1c\xd5\x7f\
+6v\xa1V\xf3\x0d\xcdt\x9co\xda22\x8f\x950\
+]\xa2i[h*y)P\x8a\xbf\x9f\xdfX\x88m\
+vC\xc1\x1a\x08a\xd7\xcc/*\xd4qM\x80o\xfa\
+\x04\xa1\xb67\xc6O\xc8\xb6\xe4.\x85\x81Y+\x9e\xb8\
+JZ\x8b\x18\xde\xe9\xcd\xbe\xcb\xbaAi\x8f\xed\xae\xb4\
+\xb7Y')\xfd\x84\xc1C\x89\x9aK\x0c\x98o\xb4\x8d\
+f\x9d\xcbnPV\xb3/\xa3\xe2\x9c\xca\x88\xcc\x92b\
+=\xe5e\x9a\xf5\x19\xbb\x0b\xad4\x02\xdc$4\xcc\xc4\
+\x99\xfb\xbc\xd0\xac\x8f\x88\xfe\x92yw\x80\x84\xbf\x83\x01\
+D\xc9U\x7f\xa6P\x13\xce0:)q\xc2?K\x11\
+a\x07\xd2\xfa\xdd\x84\xc24\x1f\xb5\xa8\x9c\xc8\x19\xbe,\
+\xc4\xf7=Jh\xb4\xee\x08(\xfa\xbe\x17f\xf1\x22\xb5\
+\x04 \xb5\x0b\x5c\x22\x90\xfb\xbc\xfd\xcc\x05)\xf2!\x15\
+\xcc\xdf7b3\xb4\xaf`\x81\xa46B\x0e\xef\x17\xdc\
+\x0f\xf4\xbc*\xeaQ\x22\x9c?1u\xe5\xabu\xc3L\
+\xc7\xfc\xf3B\x9c\xe0\xb3\x05gLW\xad\xe2O\xb9\x01\
+\xdb\x00\x98\xae\x1cX\xa5\x11a\xf3\x065\xdd \xb0a\
+#J\x82A\x085\xc5\x8e\x13\x19tT\x0f\xd3\xb0\xd8\
+\xb04~\xaa\x0b\xbe\xa9N\xd3\xf3\x84&R\x8ex\x1a\
+\x14|\x05*>\xd7\xa8pS\xd3\xa4Z\xe6\x13\xaa\x98\
+\x08\x91\xaalo\xc7F:q\xa6\x07*\x9f3\x94Y\
+\x9a \xd1\x8d\x9fx\xa3\xdc\xba\xa16\xa2n\xed\xb6#\
+\xd9\xe7\xd8\x14\x94\xe9\xf7\x84F\x9c\xcf\x0eb\xbf\xb6P\
+\xdb\x9a 2H\x0dy\xf6K\xf7\x82\x9f}u1\xc4\
+\xa9q$\xd3\x8b\xe1I\xbbD\x0c\x0c\xee\x93)q\xd9\
+\xc5\x81\x1a@\x8b\xf4\xd0\xc6#\xfb]Ce\x87\xca\x88\
+\xc1L\x86\xccm\xf8\x0aQ\xf9\xeb\x8eDn\xdcd\xe2\
+Qq5\x93\x83\x80HR*i\x0bEf\x0015\
+D\x9cpX\xa0\x0c\x12 X\xa3\xe4\xd8jF\xce\xed\
+\x89bc=I\x1b+\x19\x91T\xf9\xd5\xf8{\xa27\
+\xf4\x7f5\x01\x00\xb9\x0b\xcb6\xf7\x03\x95x\xd4\xa5a\
+0X=5\xb5#\x16-9\xbd\x1a\xe1\xf4\xb8\xce\xfb\
+\xa5\x8a\xac\x8f4\xed\xf80\x88\xe9nA-\x95\x99#\
+\x85\x8a\xf7\x8c\xe6<\xe8F\xa0\xd2\x97_U5\xfbt\
+@\x15\xb9\xff\x85\x19'j\xbbw\x86\xe0R\x8f\x8d\x1b\
+\x86\x06\xb5\x8e^X\xb3\xf4\x84L\x16\x869\x94]\x98\
+\x05\xccgD\x900\xb4\xb9\x0e\x02M3\xea\xdfY;\
+l1\xcfb`\xad\xe0.%\xdb;S\xf1\xcb\xeaH\
+\xd0\xc5\x22\xdbG9c\x95\xfdd\x1dq\xe65\x81\x82\
+\xec.\xe1\x12\x90l\xc3\xa2\xf6|\xcf\xb0\xdd>i4\
+(p`)\xa1a\x1c\xbb\x04!)Y\x9e\xbf9o\
+\xc8\xac\xa0=\xe2\xf9\x91\x01\xab\x83L%\x85\xe2\xe9.\
++0G2\x12\xed\xc0^:\xa88$\xa6~f\xa0\
+\xd1\x0e|\xdc\x83BM\x13\x91\xb3\x88\xe3\xb1>\xc1\xfc\
+a\xfe1\xdfy\xdf\x81?)\x18\x94u\x88\xf6\x938\
+8<GJf\xb8\x0f8\x888x\x1cq\x18q\x84\
+p\xe0\xe8?O-/\xe3\xc0\xf79\x0dgD6q\
+\xe0\xf9=\xaf\xcf\xc3n\x16yE\xac\x0f\x87tu\x07\
+\x028_\x18\x05\xb4_$\x83\x88\xa6\x05%/\x04$\
+X\x0fi'H\xe0\x87@\x08\x0e\xcdl\xa9\x03\xf7\x01\
+Q<\xa8\x8dd&q\xd4\xcc\xa4\xc8\xfbO\xe9De\
+\x0c\xfc7\xd5\xdf\xcc\x874\xc8]\xda0\xb9\xc6\xed\xb2\
+\x10\xb5\xc5\xc0\xe2|q\xe4=\x8f\x09L\xd3\x86,E\
+\xb4\x1e43\xc3%\x01E\x02t\xad\xaa\x1a\x9d\x06\xdc\
+,\x93\x04\x03\xd6\xdf3|\xd3\x14\xe9\xb3\x1dp\xe0\xfe\
+\xe1\x80\x10\x18\x83Z\xcd|'sO\x00\x83}\x9b\xeb\
+`\x9f$PD\x97\x12\xd6u\xd6%\xba\xc8@\xc1\xf6\
+\xfd\x82\xea\x9b\xa5$P.\x19w\xfcGF\x19\x86\x0a\
+\x9a9\xccc\x98%h\xfb\xb0\xfe\xb1\x9f2>1\x80\
+\xb9\xff<\x17;\xbc\xc90\xb3\x83\x9a\x09\x01\xe67\x01\
+\x09\xae\xd7\x86]\x06N\xd1\xc2 0\xc6\xe7``\xf9\
+9SR\x96*\xed\xb4-\xf5\xb0\xcb\xfbB[@2\
+JP_\xad\xe6\x9d5\xc2\x87\x9bi\xe6\xc4H\xffM\
+\xa1)i\xa0=(\x81\x0b\x07\xc4\xd2^r\xe0\x09\xca\
+l\xda\x9d8\xeaN PR\x90\xeb\x9c\x9fk\xb6\xe5\
+sw\x99\x0c0\xd2\xf6\x0e\x0a<\xe3\x16\xa6\x90\xa9\xea\
+\xb9\xdeP\x93\xeb\x8c`\xa1\x16\xbf\xab\xc9\x0c\x92\x115\
+C\x81\x1a\xectH\xcdd\xca\xcc?\xeb:L\x10\xaf\
+\x0f\xf4/\xcfL\xb0\x1d\x8d\x5c\x0f\x9c!Uz\xab0\
+x~g\xfb|{\xefw\x88:\x93I\xdf\xa5\xdf\xb9\
+\xdf\xa5\x96\xa8f\x02H\x09\x80\xafW\xe6\x5c\x8a\xf12\
+n=\xae\x19\x0f\xa8\xc8\xc7\xb7\x05\x9aD\xdb\xc2.M\
+Xb\x1cg\xa9j\xef\x80gR\xd3mG\xf5\xef\x14\
+\xe2\xb8\xc2\x18@\xe8\x1f'\xc4r\xf6\xb5@\xf8\x07s\
+G\x0a\xb1<\xbeC\x88\xd7\x0f\x04b\x1f\x9a\xdbH\x88\
+\xf7\xaf[p\xfd\x82\xebK\x9b\xeeM\xfaMJ\xe2\xa4\
+$^\xa6\xebN\xd7\x9b6\xe3\x95e6\x19!/\x19\
+\x036\xa9\xe9\xc2z\x84v\x11\xf3\x08\x11n3\xdb2\
+\x90\xf2\xf8\xc0ZU\xdc\x94n9\xd3G\x06\x16\xaf%\
+\x9c\x94hN~+Tf\x06\xa5f\xfd\x09B\x15\x9d\
+\xe4<i3<7\x1f\x98z\x1f{c\xd3\x1e\x95\xae\
+\x18jk\xf9\x89f\xfd3\xf3\x98\x12\x85\x9c\xc7\xfe}\
+J\x1f\xd0X\x9b\x1f\x848\xde\x16\x88}\x7f\xfe'\x01\
+\x89\x1d\xfeM\x88\xe3_\x85\xaa\xfaO\x00\x0d\x8d\x90\xe1\
+\x09B\xbc\xbeV(\x81\xb5\xadK;M\x89\x8ao\xd6\
+hRA\x91\xa7\xcb\x85\x13\x1d\x88\xd8&\xc3\x08\x11<\
+\xd6_\x18|\xec\xa7\x8cG\x9e\x8b\xa9\xf1\x940e\xf7\
+$4\xe4lOR:\xc8\xfb\xd3\xd7\x05$*\xfe\xc9\
+\xc0\xa7\xec\x17|\xa2R\xee\xb3$\xf4x!\x8e\x0bL\
+\xe1G\x84\xcfL\x81\x05_\x11j \x19\xd1\xf8l\xf3\
+\x8d\x08\xa2\x03\xb3\xd4\xfe\xa7\x08\x1f\xf6\x17\x0cY\xdb\x1b\
+\x94f%\x03\x00F\x94\xbbQM_)\xc4\xf1\x8a\xe9\
+U\xd3+\x0a\x93~\xfb^\xf6\xe9\xb3\x84\xbaN\xf4\x8f\
+\x16*3\x98nO)^\x8e\xbd\xc1:\xfb<\xa1a\
+\xb8\xbfy\x0c\x1c,\xa0\x0f\xe4\xe4\xd8\xc0'\x1a5\xc9\
+\xb3\x02g\x9a*\xb1\xbfO\xfc\x8eF\x1c\x8b\xf61\xee\
+\x9bX\xdav\xec\xde\xb4\xb3\x121\xf3%^X\x97\xae\
+\x0bhn\x0cn\x1f\x83\x18W\xd6\xce\xda\x91\xe3FM\
+W\x11\x1a\x83\xd1\x8eYYhbbMO\x08\x9c\xd8\
+\xf4\x97\xf4\x06\x93\xfdpq\xe8\xdd\xbe\x09F\x02\x1b0\
+\x0bhnlVQ\xcd\x81\x89\x1a\xf2\xbaB\xedwZ\
+*.\xf6\xab*\xb0\xb4\x07,\xe2}\xbb7\xeda\x9c\
+\xe1\xa7V\xbf\x10f\xff\xde\x18H\x97\x97\x86T\xe3\xfd\
+i\xfbT\x93\x11\x98\x15\xa5\x82z\xceu\xc1\x90\xf0y\
+\x97\x92\x84#\x1a\xca\xb4\xda$>\xc1\x22\x80\x17W\xc7\
+ix\x8d\x1ab\xd4\xda\xb7\xb2\xa0\xde\xed\x8c\xcb\xf2\x8d\
+c\xf0\xcf\x92\xf3\xaa\x01\x0b\x9f\x7fR\x5cT\x1b\xf5E\
+\x1b6\x1b\xd76r%B~w#bGm\xb0\xdb\
+\x9a!\xd6\x98\x19a\x22\x85\x1e\x17e;\x95\xe3\xf9\x06\
+\xa1\xd6\xde\xd3\xef7kz5\xbe6m\x22|\xa6r\
+g\x0d\x95ksX\xc8\xf3y\x13\x81\xa4\xcd\x8a\xfbn\
+2NR\x8cKg\xbdwe\x18\x14&L,\xd8\xd3\
+\xef\x0bM\xa9\x82\xb6\xeb\xfd\x9d\xe9\xff|S\xcbc*\
+Q\xce\x0b\xb9\x03s6@_S3|\xa9f\xec6\
+N\xa5\xa4\xe4\x98\xc6\xf0t\xa0%3(\xd4pS\xab\
+O\xbbG\x8d\xaa;\xff\x87\xda8\x1b \x94P\x18\x02\
+te\xc0\xb0\xc2\xb0P\xb7\x84wz\xdc\xab\xc4\xe2c\
+\x81\xa3\x9dI\xb9\xd6\x0e\xcfM\x95\xf27\xec/T\x83\
+))\xd7\x22\xee\x1e\xed\x88\xf5\x95\x8dcD\x06p\x86\
+Y\x12\x8e\xea\xed\xea\xf6\x91\x8e%\xf3\x90\xffh{\xe4\
+\xeb\x0aGo7-\xcc\x5c_v\xc3\xc0\x11C\xcd\x9b\
+\xeb\x94\xc8\xd2-\x0d\x05\xd9\xe3r\xeeE\x81\x17\xbb\x8d\
+\xe2\xb2\xb5\xc6\x0c\xf1\xad\xf9\x9f\x0b\xa6\xd2\xc7\xfd\x9b[\
+\x5ch2Yd\xbe\xa9\xb9\xc6\xc1d\x03\x80\x1a\xc7s\
+p\xc0 )\xda\xeb\x8f\x94\xec\x98;#\x15\x16\x07\xc8\
+\x8egf\xa6\xb9O\xa6\xe6\x0f\xff\x11\xca\xf7\x97\xf10\
+\xb9^\xa8\x99d6\xf2\xd2\xc3\xe3\xe8J\xbd\xa5\x9fw\
+:zP\xf48o\x9e\x0b\xeb\x8c\xd7\xd7\xac\xc1g\xfe\
+\xa3m\xe0L\x0a\xa2j\xd9\xbe\x0b\x87\x0dG\x06\x86\xc9\
+\xac\x83\xcb\xb8`\x9d\xe7>!\x9e\x87AO@\xc2\x99\
+\xb7t\xf8X/\x11\x01\x223\xb0\xa6\x1d-\xda\xa0\xe1\
+\x80\xe0\x181\xbf8?\x18J\x04\xae\xc8\xa8c\xc0\xf3\
+\x1f\xf7WmWok\xd6K\x1ca(\x9c0\x9d\xb8\
+.\xaes\x99\x19\xad\x05\xda\xa7Z\xb5;\x9c\xdb\xf1\xfe\
+\xe3H\xf2w\xb4\xed[\xc8\x8e(\xe3\x06Q!\x02>\
+g\x09M\xc9\x11\x19U\x02P<\xd7\x9dG\x87;\xdb\
+\x0e\xdd\xe2y\xb3\xc4\x8c\xd6\x00\x8e\xffzv\xa8\x09\xbc\
+P\x0a\x80#\x8b\xa3K\x06\x9c\x00\xc2\x9d\xcd~\xd7\x9e\
+\x9f\x03\x8ai0\xc2\x18b\xde\xcf\xb6\xf5#\x93\xce\xbe\
+\xc2sw\xe0\x1bfHf\x9cp\xa4\x09\xe0\xb0\x1e2\
+\xee\x08\x5cc01\x0e\x08,\xc04\xe0~9C\x94\
+\x01\x22\x1c\xe0\xd9\xc0\x10\xa2\x82\xbc\xcfx`\x9c\xc0l\
+\x80\x99\xc0\xf9QC\x8a\xfa>\xcc+\x02\xd73\x9a\x02\
+\x048\xa8\xd5\xcd\x80\xac\x1d\xbf,i\x81\xe9\xe0\x8c_\
+\x06\x0e(5`\xbft\xa0rxXhJ+\x11\x01\
+s\xdb\xe8\xb4{\xb8\xbf\x88\xd0\xc9\x8e<\xb6f\xe2\x87\
+=\x85&p\xc1\xf5\x93\xa1\xa3d\x85\x92K\xaf3\xa9\
+a\x80\xbdIi\xa4\xed:J\x0a\xd2qw\x00<\xc5\
+\x99\xd1\xf6\x81\x09J\x80\x87R\x03\x02\x02\x88\x85:\xf0\
+W\xda\xbe.\x5c\x19\xa9\xdc\xc7\xd2\x85\xe6\xaf\xd5\xee\x83\
+B\x9e\x99g\xd7\x80S\xfb\x9b]\xadX_`\xcaQ\
+zJM=T\xee\x7f\x8d%\x1b)\x1a\xe8\xfd\x9d\xae\
+8\x19\xe8\x10\xd3\xf6\x8c\x9a1\xcc.Bn_\x97\x9a\
+5\x04N\x10\x15\x94&\xc1\xdfM\x19\xffOC\xe9'\
+@\x06\xb3\xc4\x9a\x13\xfd\x05B\xa3A@?v\xec \
+\xd7\x96'\xf3\x81\xdf\xa1\xe6\x7fe\xa1\xe9\xb2\xf0\xff\x84\
+J\x91\xc7\x81ASj\xee4!\x8e\x8f\x12\xaa\xbd:\
+]i,\x91\x98_F(\x81\xf9\x92\x89\xceu\xc2\x0c\
+\xbb\x0c\xec \x9a\xe8@\xca\xf0uw\xfb`>\xb2\xaf\
+\xb0\xbf\xad\xe0\xc0\xd4\xadf:+\x10\xf0v3\xe3\xe2\
+yO7\x0flVE\xc1\xd1\xe0)\xcc\x86\xb0\x17\xe6\
+.\x14\x9a\xb6\xbf\xae!\xcf\x00\xc5S\x85\xf8\xdc\x8f\x02\
+\xe7WM\x80\xfeoB\x1c\x7f\x228\xf0\xbdBS\xa2\
+C\x97\x0c\x02\xac\xb2j\xdfS\x19\x17\xd9\xe6\x92\x92\xec\
+\xd2&!\xee\xd3\x1b\x02\xb1\xcf\xcd\xdf\x1b\x10E}\x87\
+\xc0\x8e\xb5\xcb\xc1\xfc\x1b\x85x\xffCB\x1c\x9f*4\
+\x894w\x8f\x9a\x1e,4\x0c\x98m\xdd\x05\x81\x0c=\
+m7\xcd,a=\x8f}k,m2\x13\x82\x1a\xff\
+d0\xe1\x87\x99Y\x90\x091\xfc13\x9a\xd3>s\
+\x02\x0e\xd1s\xa8\xfd\xd3\xe3\x85\xe6\xb8\xb8\x10\xc7E\x02\
+\x8bZ\x03 \xf6\xed\xe9\xda\x82\xc5\xde\x0fh\x18\x82\xd7\
+\x8c\xdd\xda\xe8f\x92\x94\x7f\x07\xaa\xb2\x84\xd7\xdaO\xd3\
+\xd5\x043\x0cb\xdeN\x0f\x12\xaa\x9d\x19\xfbb\x09\x84\
+\xf5\xaf\xee\xf7\xee\xf7.\x81\x86\x22j\x9fZ\x06\xfe\x9e\
+L\x1c:\xe0\x96b\xa4\xbe\xcf\x99Hp\xc2\x9d\xae\x12\
+\xd9\x9e\x14\xc6\x815\x02\xf2h&Aa*\x7f\xa0\x8e\
+\xb3\x14\xb34\x83b\xfa<\xa1\xfa]\x0b\x0a1\xef\x92\
+\xc6Qr\xdfs\x0c\xdaRs\xfd\xc5\x1a\x99\xa3]B\
+\xd6\xa2\xb8\xf6-\xfb4*\xe2\xf9\x08/\xe0w6\x81\
+\x02e\x16\x7fV#\x8a\xfd\xf5B\xbd`nhq(\
+Ntd\xf8-52B\x97\x80\xa4\xb4r\xe1P\xbe\
+q\xb8q\xf0]\xfb9\xbdOh6D\x02\x0do\x10\
+\xe2\xdf\x1f\x14\x9a~\xb9<(6:j\xf0\xbc!O\
+\xdf/\xc4\xf9\x1f\x1b8\xc6T`\x22\xeao\xa9m\xed\
+J@\xe0\x06g\xe0\xd7j\xfa\xa4cp\xb8\xa6=3\
+\x0d6\x10Jm\x09m\xa6\xb6k\x0cG\xa8\xa1l(\
+d\xba\xde'4\x22e^@\xe6\xaf\x08\x5cY3\xda\
+E\xa5\xf6\xdc:\xa1\x8a\x99\xb4K\xd3^\x8d6x\xa2\
+4\x1d\xd1t'\xc0@e\xe2(_\xd7{\xe3X\xcf\
+bx\xdf\xab\x0c\x90t\xc0\xa5\x96\xbbI\xd3\x1d\xc0\x8e\
+\xd2\xf0\x91\xc0\x116\xd0\xb6\xb1\xd8\xd1s\x9a\xe7\xa2\x08\
+\xec\xe3\x1b\xd5}\xa8\xb88\xb4r\xabo\xa8j\xc8\x94\
+\x9e\x94\xf1\xf0\x9f&0`\x83\x99H4\x14\xa6,}\
+\xa0\xed\x94)\x98\x887\x96\x85\xeb-M\x9fz2\xe5\
+\xd4\xa2\x8a\xa0\xf8\x1bS\x1b\xc3\xa0\x99^#\xd4\x8c6\
+\x0b+\x94\xb2B4\xba\xdc\x01\x8d/4\x0e\xa1\xbb\x03\
+@iL\x83S\x9f\xbf\xb2\x8aK\xa6\x18 \x81\xa3\xc7\
+\x16\xd2Rm\xb3\xa8\xeda\x0b\x07\x186\xf4B|f\
+\xf3\x9c\xe9\xd6\xe1q\x97\x8e\x9bF\xfb\xb7\x1a\x11\x1b\x8d\
+\xf3\xbb\x1a\x06\x82\xdbj\x15u\xda\x97\xd5>\xb0\xc3\xc1\
+\x81C\x1aq&\xab\xe4\x97\xca\xa7\xc3\xea\xb8-\x19\xa2\
+W\x981tf\xe3\x18\xf0\x1cq\x8c0\x90\xc9\xe8\xcd\
+\x1a\xccd\x88i\xaf\xe9\xee\x15\xb9\xc1\xbeV\xa8\xcfw\
+:/4\x11e\x98\x05\xd4\x10[\x13#\x1dW\x9e\x93\
+\xae\xe6\x14\xafwgU\x11?\xd6\x8f\xa2\x1e\xbd\xb27\
+\x96\x8dj\xade:f*D\xf9v\xfd\xbe,\xd9Q\
+d\xfe\xfb\x8e\xc0n\xe1\xeb\xfe]S\x13J\x86\x10G\
+\x97@\x02\x06\x0aG\xda\xd09\xf2\x8c\x01\x9f\x11\xe9\x97\
+\x8d\xd4\xb4\xcc\x8cQ\xa2\x80\xa3\x8d#c\xc7\x19-\x90\
+T\xe9&\xc0\xd8\xdb1\x82\xb1\xc1s\xa6\xb4\x04J.\
+\x0e\x9d\x19M\xa9v\xbb\xdfHqf\x9ce\xa6\x94\xd2\
+\x1b\x1c\x98Y\xed\x04\xb4\x04n\x11\x1aF\x00\xcc$\x18\
+I\xa8\x9b\xbbt,U\xd4m #V\x96\x149\xfe\
+n\xb6\xcd\x10\x22h\x0b|\xbd|\x9e\xff(aA\x85\
+\x9cL>\x8e\xa33\xf0\xc94\xc2\xb1!3\xcf\xe7\x99\
+\xef8<<o(\x85\xa8\xf7\xe3\xa0P\xcb\xbe\x823\
+\xca\x18\xae\xb7\xbb\x14\x80\xf1\x86C\xc6\xdfc\x88\xd9\xc1\
+\x9bl\x22\xd4Lc~/\xe7\xc9\xb8z\xba3\xe5;\
+\x8f\xe2\xa7\xe9 \xcf\x06\xa0\xff\xe9\xf1\xc3\xf5\x13\x18`\
+>;\x80\x94\x0e\x05\x0c\xa1]\xec\x90\x9bi\x93\xda\x04\
+Oww\x09\xba\xaep\x9d\xb4\xa3D+\x80\xcc\x12\xdf\
+\x8f6\x04\x14\x7f2\xeed\xfc)\x1dc\xfc\xc3\x1c\xe0\
+<\xd9\xc7hS\xe7@A\xb6\x05d\xfd!`\xc2\xfa\
+A\xe0\x8a@\x14\xbf\xcb\xfe\xc8>\xceu0\xee`\x92\
+\xcd\xb4\xbd\xcc\x92\x10\xb4/\xf8\x1d\x98\x04\xec\x87f\xfe\
+d\x0d:\x0e\x0c\xf7I\xed\x87\xcf\xa9\xe2\xb59\xbfp\
+\x8c\x98\x1fd\xc2a\xba\xc1Xb\x9c;\x90D&3\
+\xdb\x819\xa0;=_\x88\xe3\x8f\x84f\xdc\x13\x08s\
+\x02\x82\x80=L\x86\xc9\xb7\x85\xc6\x8e\xf1u\xa76\x89\
+K\x032\xd3I\x00\x86D\x87K\xeb2\xb0H\xf7\x1d\
+\xd6K\x021\x88&\xc2\x1c\xa0t\x0d\x11;i#i\
+?8\xb9\xa0vS q\x84\xf8\x1a\xe2\xb90&\xe8\
+\x12D\x17\x17k\x5cd&\xd3\x01\xac\xc9\xc7\x84\xc6>\
+u\xe0\xa3_Sh\xf6;\xdf/\x12g07\xfao\
+\x8c\xd4\xf0\xb0nF18\xdf\xb7\xc2DXx\x80X\
+Y\x00\x00 \x00IDAT\xa8\x88\x90\x9d^D\x04\
+\x0f\x0ck\xe5\xc0\xf8\xfc\xc9\xfd)\xfd\xc9M`\x19\xc7\
+\xd7\x8c\xcfd\xf4:\x00\xc86\x9a\xf6\x0e\x81\x12\xef\xb3\
+h;\xa5\x18\x1a\x8e\x98\x03\xa6\xfd.B\xadyOq\
+G\x02\xbd\x1e\xef\xfdiB]\xa6\xfa5\x848\x9e+\
+\xc4\xf1W\x81_Z\xdd\xff w\x15\x10\x93\xe2\xd3B\
+-\x95(\x19\xf7\x98W\xf3\xe5?'\xac^cM\xa1\
+/\xd6R\x8b\xfe=\xfda\xbd\xec\x8e\xcbGJ|\xce\
+\xb3*6:\x06dY\x87\x19W\xb3\x81>\x18Y\x0a\
+`\x0c\xd5n#PT\xc4\xd1_\xe1\xf6k\x176%\
+\x17\xe7\x09\xf1\xfa(\xa1f\xa23\xf0\xb1\x81\x10\x7f\x7f\
+\xaf\x10\xc7+\x84x\xff\xedB\xbc~Z\xe0\xe9\xcd\xfc\
+\xd6jqSe\x80\x16&\xf6\x85\x0dCK\x8e\x9e4\
+\xcd>-\xc4\xe5\x1d\x168\xb4q\x84\xaf\x0c\x84\xbd7\
+\xbdS\x88\x7f\x7f\xa5\x10\xc7M\x85\xaa\xd55=P\xb0\
+v\xd0\xd9\x0dS\xeb]c\xe0|8W\x88\x7f\xff\xe4\
+\xf4S\xd3O\x95}y\xec\xe6f\xa6\xd6\xe4&\xa1)\
+\xd9a?x\xae\x19t\x94\x98\xd1\x0d\xce\x09\xa2\xdc\x1f\
+)\xd1\x85\xb9A\xa9\x13\x01m\xd69\xaf\x9f0\xb9)\
+M\x98\xae \xd4\x00\xc6\xb4\xfc\xe7D\xdf\x05\x8d\xa80\
+% ^\xef\xfa\xaf\x08e\xfd/\xa5\xac\x94\x84\xc7\xa8\
+\x1b\x19\xca\xfb\x8e\x01>ya\xf2\xc3\xc2\xaa\x1a\x03\xa6\
+\xde\xf7\xa6_\x11\xfeG\xb7\x9fgX\xcb\xe9\xe9\xa3f\
+\x07m2\xe3\xfe\x05*#;\xbb\xed\xd9\x1fJ\xa6\x11\
+%%\xbf\x13\xe2\xf3\x1f\x12j\x22l\xfai\xa12\x14\
+\x86k\x85f\x7f\xc3?\xc4\xee% O\xc0\xdd\xf6Y\
+\x96L\xdb\xefX0\xf7X\xa1RhKfI\x22\x03\
+\xdf\x14\x1aq\x1b\x1b\xe8\x88r *V\x22X\x97\xc4\
+\xf1i\x81M\xbc\x80\xc4\xdf\xcd\xbf6 *\xc6\xa6B\
+\xd3\xb7\xd7\x91\xcb\x127\xff\x90#\x8e\xc7V*\x04\xb5\
+He\x1b\xbd\xa7\xc9\x94\xb3Qy\xa2\xa8\xf9\xc1\xd0\xb6\
+\xfbA\x84\xc8\x8e{\xb6\xf9{\xadP\x1d\xfe\xacIt\
+$\x0b\x03?\xcf\x8fL,j\x8d/\x11\xea\xef#&\
+X6\xbce\x9bZT\x8b\xf7\x14\xb3\xea\x85\xde\xd0\xdb\
+\x9a@(\x88\x18\xd0\x18,\x12\x97x\x8c5\x02\xaeh\
+\x0cNU\xc4\x1d\xd4dZ\x18p\x18`\x18\x0e\x18 \
+\x18\x10LH\xfaMZ\xad\xbe\xb8\x0b\xbb4\x01\x19\xa9\
+\x8e\x7f\xaf\xa9\x0dw)D\xa1\xf4\x1c_\xdb\x92\xa4\xc8\
+\xd6L\x09E\xc9\x88=\xa69?\xc5\xf1^\xd3\xdc/\
+J\x1dh\xe3\xe7\xbe\xa2Y\x83.\xb1\xc4\xed\xab\xb8d\
+\xb6iTD\xfb\x5c\x1b\xbasM7\x02\x0c#\xf7\x9b\
+g\xa2\x10\xa9\xef7\x0e<\xb5D\x8cW\xd2\xc2\x80\xa3\
+\x9e5\xd5\x16\x83\xcc\x80\x0f;\x22m\x8f\xa4B\xbd\xba\
+k\x04\xdf\xd3,\xb8\x16_D\x1c\x86\xbe\x9c%\xdf\xf4\
+\xd5&\xd2\xb6z!\x17\x8fb-\x8b\xd5\x9a\xb1\xec\x1a\
+A\xe6`\xe9Q\xb543\xaaL\x5c(\xfc\x94\x8e\xe0\
+\xa8x\x5c\x11yDK \xfbg\x93\xe1\xb3\x18S\xd9\
+\x18\x97jj\xc9TJ\xf1\xf2F\xc4\x0f\xc6\x80\x19\x1d\
+\xd9\xe7\xda\x91\xd9\xfc\xfd\xb6\x7f8\xdf\x7fxU\xe5/\
+\xf9\xca\xf5\x9a\x8d\x8a>\xe0\x88\xd8\xc9px\xaf\x03|\
+7\xd4.\x10\xb9\xf1\xe2 ap\xf3{3\x8c\x80\xfc\
+<\x0c\x1a^\xcf\x96\xba\x1c8\xd6\xa2\xcd_ \xc4\xf1\
+\xa2\xc0\x85M\x9b\x1bj^1Xl\x08\xb2`\x12\xc0\
+,\xee\xc1\x92\xb5\x04\xa5|\xfe*\xaf\x17\x07\xd7\xc0\xd4\
+\xf4\xc3\x82\xdb\xae\xadnC\xe1\xd2\x1a\xb0!\x10I\xbf\
+V\xfa4\x17q\xba\x0f\xd4\xf5-#\xe7\x18\x86oq\
+\xe4\xdc\xe2\x89)\x86\xc3\x86xX\xc1\xd8N\xf0\xb7E\
+{\xa4PRq\x94J\x80\xed#\x8d\x83C\xc9\x903\
+p\x88Q\xa2^\x9b\xaa\xcd\xd4&\xdbPM\xed\x11\xc4\
+sp\xb8p$Y\x7fX\x9fY\x87\xc8\x80\xc3P1\
+\xe3')\xcf\x18h\xb3\x8e2\x81\x0a\x02?0\xaf\x9c\
+\xd9L\x07\x12G\x0e\xcd\x0ej\xa0\xc9\xd8S\x1b\x8fv\
+\xc1G\xad\xbeKD\x9fL$b@t\xd7p\xe0!\
+\x0dy\x1c8\xce\x87\x00\xd6\xac\xa8+\xeb1\x19d\x1c\
+|\x02\x15f\x08d\x0d0\x06\x03\x81\x8f\xfb\x1c\xf8\xe2\
+w\xf8w\x1cP(\xe9\x7fs\xe0\x97\xcf\xe1P\x91Q\
+\xf9\xa4k\xda\xb7\x1ck\xe5s\x1c\xf0\xbc\x9e\x94\xa5\x0e\
+#\x93d\x1d\xefKw\xf8>3\xde\x9e=yV\xd1\
+ \xa1V\xf0\xcf\xbe\x0f\xeeFP\xc4V\xaf\xacmj\
+\xf3ys_\xa9\x01E\xfb\xe0Y\xa6\xa2\xb3\x8f\x901\
+\xc6PAm\x9c\xdazD\xa50\xcc\x19'8\xee<\
+\x07\x9e7\xfb(\x99t\x02\xec\x04\x8e\xb9n\x184h\
+\xeb\xa0\x16\x0eC\x08m\x1e\x98C\xec7\x16\xe1J\x06\
+\x1b\xe7E\xf7\x0b\x8b\xbe\xa5x\xa3\x03\xe9i\xb8R\xba\
+G\x89\x09\x8c\x09\x07\x8cS;\x02G\x9d\xf5\xd0\xe3 \
+\xc5_\x11\xcdb\x9c\xe1a1^\x18'3\xa5\x8b)\
+zgM\x9b\xfe*\xa12\xe2`\xc6\xa4\xb8\xa13\xfb\
+\xec[YzF\x09\x9d\xcf{\xeeJ\xa1\xee\xf3\xa8\xde\
+C\xb5%\x83H\x89'\xed)q0s|;\x00\x9d\
+\xcf\x151J(\xc20I\xd8\x0fa\xfc`G\xa1}\
+\x80x\xa0\xdb\x83\xe6\xbai\x11\xac\xd4N\x81\x01\x888\
+\xd6\xfb\x85\xba/d\x1bM\xf6W\xaf\x0f\xe98;q\
+\x90\x09\x02(\xfe{\x98\x91\x80x\xb0)\xe4%\x83\xbc\
+y\xdc\xf7w\x0b\xcd:G\x1b\xc8\xf7\x9ab\xbf\xc6\xa8\
+UE\x06>\x1d\xf2U'\xabLV\xad]\x14\xa4y\
+\xaf\x80mR\xa4iK\x88v\x04Z:\xd6H\xe8O\
+\x16,Z\xf8\xf9\x86\x09J@\x00\xc6\x08\xed\xf9,\xba\
+[\xbaC]ZK\x07\x8a\xb6\xd7eu<f\xe6\xda\
+\xa5\xc2\xdc\xcf\xd2\x1e\xf0\x13\xee;\x7f^\x15\x09\x9f{\
+k\xe0-M)\xc2\xb6\x81\xed\xaa#\x1c\xd7\xb9\xaa\xae\
+3\x99Q\x882\x8aA\xfb\xd3*\x82\x97\x19hu\x93\
+\x7f}\xe3\xb8^\xe5y\xe6\xeb\xc6\x81+\xcdt/\xf8\
+\xbf%!\xb9n\xc1\x88\x84\xf9\xe5\x80S\xc9\xb8\xaeW\
+\x19\xb2\x19\x90F\xdcPb\x8a+5\xdd\x9c\xccL\xa4\
+\xdd2\xed\x1d\x8b\xc8\xe1\xdf\x1a\x0d\x80\xfbF-\x83\xfe\
+\xc5B\xbd?hu\xd1\x16/\x03zt\xb3\xf1\xbe4\
+\xfd\x93P\x03$\xd3\x87\x84\x9ax\x9a\xffQ@\xf6\xcf\
+o\x858>[\xa8\xf6\xcat)!\x8e\xcf\x17\xe2\xb8\
+\xab\xd0\xa8\xd9\xaf?l0lP\xc5\x15\xe5\x0d\x14\xaa\
+\xbc\xed\x86\x0c\xec\x120\x87\xc9\x09C\x0a\x86&\xeb'\
+\xf6\x01\xa5\x81\x94x\xd1\xe6\xce%\x08\x04\xea\xb0\xaf\x08\
+\xa0\xa1\xc54,,\x14\xca\xfe\x02\x89:\x17\xbe\xf1S\
+\x8a\xbdr]\x09\xacq\x9fd'H|\xfe\xba\xc0\xb5\
+M`\xd0\x8c\x82\x5c\x97\xfcz\x18\x86\xa9\xba\x9f\xf4/\
+\xec\xb7\x16\xb3;\xed\xfd\x7f\x09\xf5\x98\xfb\x03L\x1c\xc4\
+\xd3\xbd.\xf4_\x10j7\x05\xecj4Y21M\
+I/\x0cE;\xe4iG\xc0\x00 q\xc7>\x8a&\
+\x8c\x13\xdeY\x9a\xfb\x18\xa1\xb61-b\x88w\xd5D\
+\xfdp\x89\xd0h\x0f\xd8oG$y\xc1\x82\x0b\x031\
+`\xa6\xc7\x08\xee\x17}d\xa9\xb5\x098\x92xCm\
+G\xc6\x89\xce] TC\x00\xf5\xfe\xf2\x80\x162\x95\
+\xe4\xdb\xb5\x8d^R\xd9\xa8\xd5\xa7\x96\x9b\x08\xa3k\x93\
+\x8ac\xbfZS+.\x07^\xa2\x0a\x8b\x8c\xea\x9fD\
+\x88\xa6w\x09M\xdf_\xfa\x9c\x7fK\xa8\x0e\xd7\xf0\x1c\
+\xa1N\xec\x14ya\x03\xc5\xd0sM8\x01\x83tD\
+\xc8\x9ca\xc0\xd2-\x01\x15[j\xe2\xdd\xee\x0b\x91\xbe\
+\xacm'@\xb0W\xc1\x18\xc0\xd8\xa5\xe9[\x8f\xe8\x9c\
+\x22\xe2'\xf9zVi\xda \xe2X\xcd:\xfc\x18\x0a\
+\xd4\xc6B\x01$\xd3iGlxl`eG\xc4\xb4\
+@\xde%4T\x7fD\x9b\x5c\xbb\x9d\x0e%\x06\x05\x94\
+J\xce\xc3\x94\x1d\x9eg\x19P\xe1\xd8Lo\x17j\x0d\
+]\xb61s\xa6$\xc5\x17\x9dYf\x81H\xaa&\x91\
+,\x0c\x166pO\x90\xd2\x85a\xa3\xa6]\xd4\xf1E\
+\x87v\x0cT\xec\xdcD\xe4\xd5\x1e\xe5\xbef\x83~\x96\
+\x0dZk\x03\x94\xcc\xfd2\xa6\xfc\x7f\xb9\xc9l\xf2|\
+P\x9d\xa7\xd6~l\x90U\x1d.\xdd\xe7\xcb,\xceq\
+\x7f\xad\xfd+\x99\xa9'\xd9 \xffn5\xe8\xb4\x9c\x96\
+\xfe\xa423_\xd0D\xa0\xe5\x06-\xeb@\xc8\x0e\x8d\
+h\x17\x1b\x11\x11<(\xa1\xb3\xfd\xaf1\x8c\xc9\xf8X\
+\x84\xafP:?\xebZ\xac\xaf\xd90\x7fT\xb30k\
+\xf44}\xa3\xb9\xce\xd4\x22p\xbb\xbc\xb2\xbc_\xd7\xd4\
+n\xaa\x9b\xc2\xd5\x16\xf3\xfb`\xa3V\x8a\x88\x98F\xf3\
+V\x16):\xa4R\x01\xb3$\x02G\x84q\x8b\x05\x82\
+#3\xeb\x08\xf2>\x1b7\x814\x07\x90\xd8\x88\xd3`\
+\xf4\xfd\xcbZ8\x19\x0c\x8flD\xaaD\x19\xdd\xcb5\
+T\x8b6\xed\x0d\xb5\xb1\xcaA\xfcxA\xcd \x8aH\
+~b\x15#e\xe3\xa1\x06}\xbao`?\x8b%]\
+\xd0\xb4\xe3\x84\xf2\x8aJ\xb1\xf23\xe7\xdaqX\xa4\xd1\
+\xb6\x80\xda\x8f\xe1E\xd7\x0c2\xd5\xdc\x07\x1cY\x0c\x11\
+\x1b\xa6j:Z\x1c1\xb7u!\x80\xa4n\xb8e\xbc\
+!\x1e\xc7\xf8\x86\x12\x8a\xe1hQ\xb5\xec'\x8b\x81E\
+\x9bF\xb4,\x08\x5c\x11 ]\xdd\xf3\x0fG\x9c\x8c'\
+\xeb)\xbf\x87\xc3\xc6s\xa5\xf6\x92\x00\x80\xe7\xf1\x84\xc0\
+&\x9f\xe3y\x13\x00b\x9c\xccR\xa31\xcc-F\x16\
+\xe6\xd2H1\x5c\xca\x06\xdd\xdd6L^\xe8\x1awS\
+m\xb3+\xc6\x8b\x85\xc6\xe0\xc2\xf0\xc7\xd1\x22r~\x91\
+\xd08\x04\xa8\x87\xcf\x96.\x90\xf9CT\xd1\xafS\xd3\
+\x00\x87\x15J;\xf3|\x15g\x84g5P\x16qF\
+\x99\xee\x06\xeb\xfb5L\x99\x85\xfc\xb9\xc5\x1c\x90\x98\xb3\
+c\x0b\x93\x0b\x8d\x06\xfes\xa0V\x92\xa5\x851\x06\xe5\
+y;\xa18X\xa3\x9a\xf8\x17\xc6.=Y\x02\xc5\xf3\
+\xc1a[\xcf\xf3\x90\x00\x06\x81\xbbZ\xa3\xfe\xdf\x8e\xfa\
+\xec\x11\x83\x86\xfd\x94qB\x09\x0a\xeb?\xeb6\x81u\
+\x02\xcd\xacwPF\xd9\xaf\x10\xdb\xa4T\x80\x84\x01\x81\
+\x01\x02\xf0d\x06\xa1\xdcC\xb1\xe5\xfc\xb0\x0f\x18\x87P\
+\xf5\xd9\xa7\xb0#L%\xc7 \x83\xc1Q\xc4|7o\
+\xda:\xfeFh\xdaV\x92\xa1f?\xa7Fy\xb6d\
+\x00m S\xf1\xa1\xd6g\xa0\x04*;\x19[;\x0c\
+\x88\xafe \x8a\xf9\xc3\xfc\xa7\xdd\xae\x03\x89P\xd1s\
+\xde\xda\x8ea=\xc2a\xce\xae\x22n\x07K\x86\xba\x7f\
+\xa5P\xb56\xfa=\x84&\xb0\xc0u\x11\x90`|\xc3\
+\x04p\xdb\xbc\x1cg|\x9e.\x03\x888\xc24uf\
+\x9b\xf55\xd5\xf7\xdd\xde/\xf7E\xda\xefZ+\x84y\
+\x98\xed\xf5hOL\xc9\x9f)\xcb\x93\xc3F\xc7 3\
+\xff\xb6W\xe9J\xc5\xba\x90\x99S\x18\x04\xa8\xdf/j\
+\xd10\x8b\xa51^\xa6_\x17\x9a.\x01\x16\x7fK\xc7\
+\xc5\x0ep\x9e\xe7\xce\xa3]\xd3\x7f\x5ch\x02\x15\x9c7\
+\xd7G\xc9\x00%\x22\xb4O\xc5a\x97\xc3/\xd5\xf9\xe7\
+\x0a\x0d\xf3\xc0v \x8e\x00]h\xfa?\xf47\xf5\x7f\
+\xa8\xed$\xb3-\xdfK\x84Z\x22A7\x9f\x0cl9\
+PF\xdb\xef\x92\xb0\x95c\xf5\xc4@<\xe7\xfe\xa7B\
+,S\xcf\x12\xe2x\xb1\x10\xc7\x1f\x04~X\xb4A\x8a\
+\xf8!\xf353\xc6\x04|dg\xdf\xe5y\xfc\x09'\
+t\xda\xbe\xf0\xacG\xec\x1b\x0f\xd8~g\xbc\xc1\xd0!\
+\x80\xc7:\x8a\x9d\x0f\xe3\xc3bz\xfdzB\xcdT\x93\
+\xd9O\xd5\x7f\xab\xbfg\xc0\xcc\xe3\x12F\x22\xdd\x0d\x8a\
+\x9d\xf5\xda\xa64@\xeb\xed\x8b\xaa\x18`i\x078m\
+4\x9bHh\xe27\xc0 \x22\x00\xef\xcc\xf1\xf4t!\
+\xcek\x1b!\xcc\xa5O\x05\x8e\xab\xe2~\xf3\xe7\x0a\xf1\
+\xb9/\x08\x0dE\xfeB\xa1a6R;\x7f\xa9P\xc5\
+\x90\xb3=/\x8e*\x22\x9d\x94\xe8\xa8\xf4r\xb7\xa6\xdd\
+\xa3\xc7U\x06\xc8g\x18<Y\x8aD\xc9\x12\xa2\xe9\x04\
+\x8e\x09\x04S\x02\xec}9\xf7\x05\x18\x06\xec\xbb\x9f\xeb\
+N/%\x17\xee\xc6\xd1?(T\x06{\xb6\xb9v\xe0\
+w\xfa\xee\xc0\xc1M\xdbRg\xd4\xe9j\x80\xdd\x08\xc3\
+ \x99\x91R\xda\xda\xa4&\xbahG\xcd<\xa6\x04\x07\
+\xad\x84\xc2\x90=\xb8\xd1\xe4qiJ\xceG'x\xb1\
+\xaf\x92QD\xa2\xc4\x01\xcd\xe9\x07\x85\xea\xe7\xf2\xfc\xb2\
+\xe4\xd3vJ\x11\xcf|k=\xbf\xe9\x1eB--\xa5\
+\xb4\xe7\xbf\xda\x98\x7f\xaeik\x88\xc1;w\x92\x10\x03\
+\xe7\xd4\xc0)\xd5\xa1\xcf\x09\x86\xe1\x82c\xa9@A,\
+\xd0\xc3\x1a\x81\xd5\xab#3\x7f\xb2P#LDL\xfb\
+e\x02K7\x13\xcf\x11\xb8\xd2\xb7\xf2\xf6Z\xcb2\xbc\
+P\x88\x7f\xbe%ps\x15\xf9K\xaa\xefj\x81\xd5\x1b\
+J\xde\xef\x0bi*k\xb0\x0a5?6\xc6\xf9\x1d\x84\
+&\x93M\xe4\x1f\x91#G\xb8\x88T\xa6*\xa43\x8b\
+\xd9\x9d\x00\x87\x1bj\xae\x88\xd5'T*{\x19\xe6\xb7\
+6\x03\x13\x95I\x22\xbcLhe\xa4/m\x1c'j\
+\x5c\x1e,\xfa\xcf\xe3\xef~\xe5\x7fPX\xfd\xc0\xfau\
+\x84\xb8/\xb7\x09Ul\x22\x17`2|\xb4\xc9\x802\
+\x8c8\x84\xa9\xf5\x88\xbcd\xfb\x22D\x1b\xed\xb8g_\
+j\xda\xe78\xf2\x98\x0e\x17\x86\xc5\xacc\x8a\xa1\x81\x98\
+\x93\xc7\xcd\xf08\xc1\x99\xba\x9d\x1aG\x15J\xbd\x99\x16\
+\x19\xc1\x87\x22\x89a\xe6Z\xdd\xf2|O\xae5h\xb4\
+\xc7KJ\xb4k\xd3\x99hi`\xa9\x00a_\x07\x88\
+\x9avr\xc5\xcc\xbb\xb1a\x84PS.\x83\xed\xb2J\
+\xd1\xce~\xb9\xa7\x8e\xaa\x9c\xe5y=P\xdb\xc3\x95|\
+\xd1-\xf5~\x94\xcc\xc9\xe9\x8da\xabQv\x8b\x17\xf0\
+]\x1b\xf1:Q`7mJ \xe4f\xed\xdfd\xac\
+D\xb1\x5c\xd7\x86\xc3\xb9\xde\xd8\xee\xf6\xc6||\xd3\xee\
+\x8e\xebd\xa3\x9b\xad\xa5V\x98e\x05G\xca/n\x0c\
+$JR\x9c\x89\xcb\x00\x12\xdd\x15\x88\x8c\xd3\xaf\xd9\x06\
+H\xa9Uz\x89\xc5jNm\xda\x15i\xa1[\xa9\x19\
+\xff\x9c\x07\x8e\x01\x14H6\x5c2Yl\x18\xcc3\xce\
+\x9b\xcc\xd6b\xa9v>~\x9e\xd2\x99\xa7\x16\xdd\xf6j\
+0\xdb!\xc5A\xa3\xc6.kF\xa9u%\x13\xcb\xb8\
+\x125\xf4\xd2f\x01\xa6\xcb\x02*\xc6_\x15\xaa\x08e\
+2\x7fd~\xfe\xdc\xb5\xcbg4\xb5lP\xa7\xc90\
+\xb9\xbbB\xaa\x05\xdb\xe1J\x95\xe6o\x8c}\x8a'\x7f\
+\x18k(q`3c\x89a\xc3}\xc3 \xfe\xac\x99\
+J\x1e\xbf\xc3\xd7L\x05\xb6\xd6D\xf6\x97\xe69\x10P\
+$\xc3\xed\x083\x0c\x0aD\x1333Bf\x9d\x08\xfe\
+\xd2v\x906vfx[g\x02`\xb0\x90Y!\xc3\
+\x09c\x88}\x83\x0d\x08\xc7\x98\x00\xc26\xa6\x0c\xce2\
+\x03\xf8<%OO\xb1X\x22\x0e\x1fm\xa8\xa8-D\
+{\xe1\xf9n#\xf4x\x8b\xa9y\x9f\x98|w\x14W\
+\xccu\x9a\xf5\x8e\x8c4\xed\x16aZ`\xb8`\xa0\xa0\
+\xe9\xe1\x1a\xbet\x18y>d@\x08\xe0@AG\x94\
+\x0d\x07\xf6\x19v\xb40\x88L\xd5O\x87\x94\xc0\x00\x0e\
+7b\xaa3b\x81)\xca\xb7\xe2\x8ca4\xdbg\x9e\
+\xefc~\x91a\x80b\x0e\x85\x1c\xcd\x0e\xda\xf5Yu\
+\xb8\xf4\xfd~u\xe3X/\xed\xfb\xc1}q\x807\x1d\
+m\x02\xb9\x04d\xc9`\xef\xee\xcc>\x99\x5c\xf67D\
+\x00yM\xe0k\x96q\x01\xf3\x87\x00\x00\xe3\x0c\xc7\x95\
+\xfd\x02q7\xf6E\x98\x00\x04\x00\xe8b\xe3\x006\xfb\
+cR\xfa\xa9\xe1g\xbd\x22\xb3\xea\xf6N\x19\x18\xb3\xca\
+r^\x1fZ6\x04*Y\xc7\x19\x9f\x18\xb0\x8c\xb7\xd9\
+\x12\x02\x9e\x1f\xfb(\xf3\x9d\xfb\xc58#S\xef\xfd3\
+\xfb\xb8\xa3\x0a\x8e!n\xd1\xe4\xdcg\xdfU {d\
+\xa3b\x8f\xa8\xc9\xef\x0eUu~r\xb7P\xed!J\
+\xac\xb8\xbf)z\xea}a\xb8_h\x984\xd8Q^\
+\x8f\xfbU\x84JmM1J\x02\x03\xb3]``\x02\
+\xb0.\x13\x00\xa2\xa6\x1e\xc6\x1f\x01@\x972\xd0\xd7>\
+\xd7o\x02\xcd\xdc?\xee3\xed \x19\xafP\x8d\xa9\x85\
+\xa7-\x18j\xee\xdcW\xd7\x1e\x13\x18e~\xf5\x97\x0b\
+\x95)\x156\xc6\xb8OZ\xa3\x88@I\xe1\x8d\x899\
+\xb6\xd2\xd8\x97\x9b\xef\xcb\xef\xdf\xc5\xd4\xef\x03,\xfa\xb7\
+\xe9h\x17\xa0\x9eO{\xbd\xfe\xefBcObw\xf1\
+|(q\xb5\xe8q\x09t/\xec\xd2\xd0\x13\x9a\xf7a\
+\x18\xd0?\xde\x0e\x5c\x7f\xb6Pk\xff\xa1\xae\xd3\xc5\xa1\
+\x94\x98Ok\x89%m\xca`\x0ad\xe0AZ\x01\xb2\
+\xd7O\x14\xe2\xf8\xc8@\xcc\xdf~\xaf\x80\xc4\x01\x17\x04\
+\x94@\xdcG(\xbf\xb3\xa1~'\xb5@\xec\xf8\x8bO\
+W\x18\x08\xb7\x0a\x8d=\xee\x12\xa2~{\xa1h\x1a\x94\
+q\x99\x01K\x18#\xd8\xa9\xb3\xdd\x84\x98_\xecs\xec\
+3\x04\x066\xf3>\xe9\x12\x97\xbc\x1ft\xb5p{\xc5\
+\xc2\xfcX\xbci\xc3\x87\x06\x01\x1aX\xd6L\x88\xab+\
+\xd7\x87]\x94\x22\x8d\xba\xff\xdb4\xed2\xe9^\xe2\xf5\
+'\xbbf9\xd0\x95\xe2|'\x07N\xaa\xf6\xfc\xf4/\
+\x823\xc0\x0aL\x1d)\x84\x19u\x92\x10\xaf\x7f-\xc4\
+\xe7\xdf(\xc4\xeb\xa3\x85\xcaH\xcc\xd2N\xf9U\xab\xd5\
+\xf5\x8e\x92\x8b\xec\x9aB\xcd\xbe\xc2e\xdf\xaf\x0eha\
+\x84]\xd5\x94\xdap?\xbc.\xe68\xf3\xfa\x92\x22\xbb\
+\xeb[\x83\x87\x00\xeb\xdb\xc6\x00\x5c\xae\xe7\x04\x10\xd0*\
+\xb1F\x09Z\x12\xc9du\xe9v\x8a\x04\x22\xda\xe8\xfb\
+P4\x9d\x96\xf3\xfa\xda\xbb\xcd\xb3\x18\x1e\x1f\x11\x9aR\
+\x87\xe3\x84&\xa1\xe2\xae\x11\x88i\xa6\x1dH\x06\xfeS\
+\x92\x19t\x1b\xea\xed\xebu&#\xd8\xfb.\x9a\x1d\xe9\
+Wz_MQ\xc0\xf7\x0b\x0d\xc3|K\xa1&\x88a\
+\x1c\xa7\xb6\xc6\xb5B\x0d<\x90pf\xfc\xc3\xf8\xa1[\
+AjFQ\xda\x0f\x13\xd2\xf6\xf5\x02\x22\xec\xfd3\x02\
+\x9b6'\xe6vZ\x19\x11\xd6\x02\xff}?\xc8\xbf\x99\
+*}h\xadA\x9c\xae\x1eX\xcd\x19\xe7\xc7X\xc4\xec\
+\xe3\xa6\xea\xbc\xaeRi\xcb\xc2\xfe\xcc\xa6\x16\x0b\xd1.\
+(\xe8\xdaX\xe8O=4\xff\x8eX\x9b\xdb}\x91!\
+\xed\x9f'\xc4\xe7\xfe\x13x\xa8\xf6\xfb&b\x8c\x98\x17\
+\xb5(\x19\x09d\x83g\xa0A\xdd\xb2XB\xff\x0a\xa1\
+f\xd4\x93\x82\x22\xaa\xe8\xcdM\x1b\x18\xb9\xe7\xa75\xea\
+\xe6P e\x0e^mG\xfa@O\xac\xb5K\xdb\x8c\
+7\x89\xaa\x8c(\x0cb6\xf4\x87\xcc\xf6rn'\x91\
+\x1b\x943Xs+\x04\x96\xaf\xfdK\xb3m\xde\x0cU\
+-\xd5f\xadZ\x9b\xfdeU;\xa4\x0d\xe5{B\xa3\
+\x8e\x8e\xa1B\xfb9\x0c\x15\x22\xd9\x88\xed\xe0\xd8\xb2\xc0\
+\xe2\x90\xd0g\x5c%\x18\x9b6\xb5\xa9\x18\xb88j8\
+$\xf4;&\xd3\x80:\xfb\xd9BS\xf3gqJ6\
+\x1a\xda\x9c\x90\x89%s[\xf2J\xab9\xc2\xb8\xbe#\
+\xfaok\x0c/\xa8\xea\xaa\xe9\xffE-=@$\xa8\
+\x8c\x8aE\xbc\xc1\x1d\xd78\xe6\xd4\x18\xd2V\xc8\x91\xf2\
+\xe1D\xa1\xd9@T\x9b~pC\xc5V\x84tw?\
+\x87?\xd46D\x88M\x16\xf3\xfe1\xa6Tm\xfb?\
+\xc4\xc5,\xeaQ\xcc\x1aQ\xe6v\x15*\xa5\xa9{k\
+\xe0m\xce\x84\xada\x03q\xde\x01\x81\xfbg(\xca\x0b\
+\x9a\xcc\x0a\xbf\x8b\xf8\x9b\xdc\x84\xbf6\x1b'\x1b$\x01\
+\x00\xae\x8f\xcc\x9c\x0d\xafak\xa1a\xd0(\x9f\xa3\x8d\
+\xe3\xedB\xa3j\xcb\xef\xf09\x1c{\x1cz6^\x0c\
+|\xfe\xe3\xfdY\x0d\x0a\xda\x90\x9az9\xdc x\x1c\
+>\xa1F6\xfbo\x0bV\xf1\x7f\xb5\x99\x03\xef\xaf\x86\
+t1\x98\xbe\xe6\xf6d?n\xc4\xa0\xe4\xee\xde\xe1\xdf\
+[\xaa\xe9S\xabR\x99[<\x8e>SE\xd3R\xe3\
+\x83\x00\x0c\x8e\x82\x98M\x87\xd5\xee i0AA\xb5\
+\xe3S\x98\x15W5\xeb%L\x0d\xbe\x8f\xfb\x85!\x83\
+C\x83AJ\x00\xcd\x19\xedt\xe8p\x94\xe9\x9b\x0d\xa5\
+\x16\xc7\x14\x87\x95\x0d\xf8\xc8\xc9Q\x93\xa3\x9a\xdfc\xbe\
+\xc2\x80\x22C\xb7O\xe9#Q)\xf8dTq,Q\
+\xc1\xdePh\x0c{\xd4\xe6a\xf0 \xfeEf\x1c\xc6\
+\x11\x0e\xafE\xf7\x10;\xcc\xfb\x82c\xb8\xda\x7f\xf7\xa3\
+\x87\xda\x96\xbfg-\x94B\x14|J\x13\x98$ \x81\
+\xc3\x8dax\x85k\xf4\x99\xa7\xdc\x7f\x02:8\x9ck\
+\xd9\xa1\x86i@\xc6\x89\xfb@&\x83Zx\x0c\x1e\xfe\
+~\x033?p\x98\xb9\x8f\xb3\xcc\x80\xf5\xed@\x9a\xd2\
+\x9a\xef3OX\xd78r\x1d\xdcG\x1c,\x1cw2\
+tP\xcd\xa9A\xc7\xf1$ C_m\xc6\xc1\xd3F\
+\xad\x8c\xec\xaf\xbd\xc0\xeb>\x81\x1f\xee\x0f\xa2\x8a\x04\x9a\
+\xac\x1e\x9f\x81\x22\xfe\x9d\x00\x0f\x01\x0aJ=`.\xe0\
+8\xe1\x88C\x85d\xbf\xe6\xba\x08\x90P\xaa`\xed\x8b\
+\x14\xcfd\xff\x82i\xf7\xff){\x13\xb0\xed\xc6\xea\xfd\
+\xff\xbd\xf7\xf3\x92\xccs\x99\x87\xc8L2\x94yxe\
+(\x92!\x222\x95\xc8,\xf9\x16R*S\x86\x92(\
+Q2K\x99I\xc9P$2Ef\x09\xa1\x0cEe\
+\x0a\xb9\xf7\xfe_k\xed\xf3\xb3\xaee\xfb}\xff\xbf\xe3\
+\xf7\xac\xe3\xe8\xe9\xf1>\xc3}\xef}\xed\xebZ\xeb\x5c\
+\xe7:OF\xac\xd8\x07\xd1p@\x0bF\x89\x11*\xf4\
+\xb1\x0eq\xe5@\x04\x12M\x1b(\xfe\xa2\xc6\x8e\xd6\xb1\
+H\xeb\x0a\xc0A\xeb!\xb96\xf4\xeb\x95\x19z\xae\x1f\
+\xf7\x83}\x17f#\xccIu\xfcC\xab\x88\x112\x98\
+\x0fJX\xc3M\xe0\xbb\x12\xcb\x85\xa1v\x8c\x9e\xef'\
+\xfa\x86E\x88\x85\xf2{a\x22\xf0\xdcp\x7f\x19\xc9\x80\
+\xe2\xbd\xa7E\x02V5\x22\x14\xe73\xb6Y*\xc8Q\
+A\x8f\xf7\x095X\xcfK\x88?2S\xfek\x8b\xf4\
+\xba\xb8oC\xc6\x03\x1dtF\x98\xe8x}F\xfb\x93\
+F\x04\x02\xf0D\x5c\x8dQ\x22F\xd5\xa4Q\x12\xf6j\
+\xb2\xef\xe3~\xc7H&\xcf\x11\x22~r\x81j\x1f\xb6\
+H\xfb\x0f\xe2}bj\xd08\x09f\xe9\xfc\x02 \xa4\
+\x95R~\xbb\xff\xbdI\x07*\x1f2\xa6\xc9G\x92;\
+\x03\xb6\x820\xc5`B \xea(\x06\x17\xa3\x0f\xcd\x9c\
+%\xe6\xa8\xd4c\xa8\xca\xa3wJK\x05\xc6\x81Fn\
+\xa3\x83\x0d\x83\x05&\xc4\xab\x12%T^\x886B\x88\
+\xfe\xe1K\xae\x0e&\x00\x91\xdb\x98}R\x9d\x5c+\x9c\
+\xb7(\xb1\xb9\x98\x00V\x10\x1fkQ>\x9fU\xe2\xec\
+\xa4\xe5$7\x01\xb4\xbe`\x04L|g\xe2\xc4\x89\x13\
+\x9d\xb9u\xb8\x8d8\x96\xdc\xa6\x1f\x8d\xb9E\xf7\xeb\xe0\
+\xde\xe6\xb0\xdbO\xb6\x7f\xac\x07\x18\xc9\xcc\x82\xb3o\xb2\
+O\x0f\xf3\x8c\xc5\xa51\x02\x83G\xfb_)\xf7|\x94\
+\xc3<\xa7\x5c\xab\xe9=.+[\x19\x1b\xf8\xb5\x8b\xca\
+O\x01\xd7\xdch\x91FDpe\xd09\xef\x05\xdd\xa4\
+\xb4^4\x92\xeb\x1dg\x1bi\x9aO#\x11\xbfQ\xfe\
+\x84\x86\x0e\xeeR\xcf\xfbPX0\x19c\x14\x8c\xd1Z\
+5\xa4P\xbd\x8f\xc2_\xe2\x9a\xa1\xa9\xc6h\x13v\xc4\
+4\x0e\xe4REG\xdb\x0b\xca-\x94/\xfd6i\xda\
+\xa0-e\xfb\xc1Y\x12\x7f\x9cO\xc0\xdd\x91\x95Y\x1b\
+\xe7\x09b\xb5\xd4\x950n\x01v9w\xb5O\xa0\xa1\
+\x11\xea\xff\xb2\xb5\x0d\xfb\xcf[,*\x00\x8c\xa8}\xd8\
+\x96^oQ\x1b\xc3L\xbe\xb8f\x831\xdd?Sb\
+\xd7\xc4\x8c\xd4\xbe\xd8lf\x91\x18\xcd\xbf\xedn2*\
+}\xbb\x89Er_b\xd4R\x8d\xc9\xd8\x97\x10\x87\xae\
+\x1a\x01\xbd\xc6\x09L\x13\xfd\xbd\x89C,\xca\xaf\xb9\xd7\
+\x22\x01\x1d\x1a)\xe8\x0e\xb1H\xae\x14P\xff\xe5\xae\xd7\
+m\xa3\x86/\x22\x8e\x02<\x10sD#.\x5co\x10\
+\xfbU\xdd6y\xbck\x89\xcfj\xb6\xeb\x09QS.\
+O\x94P\x9b\xdcx(\xd9\x14\x99\x1d\xcc\xe1\xc9\x16P\
+\xb3\xb7\xf1\xf5\x19\x12+Q\x079f\xd1\xcdOs\xfb\
+\xb4\xe1\xaaS\x05\x02\xc9\xacdP]%\xf6\x16\x07\x87\
+\x95\xd7\x97'\xb5U-\xc0\xf0M\xd5L\xb6/\xe3Y\
+S\xe2\xae\x0b\x1a\x1b9\x880\x1d\x0cf\xd4E\xf1\xa5\
+S\x88_)T9f\xc0\x99\xcd\x0a?W\xc4\x08u\
+\x90\x052%\xaac\x88;\x0d\xc5\x92\x84\xecFbA\
+B\x01\x85\x17\xb5c6~\xd9\x0d\xc6,\xd1\xe1%\xbe\
+\xa1\xce\xf1\xeeJ WL\xb3x\x86\xf8\x94\x03\xa7\xfd\
+P\x89\xf5\x93\xbd\x8f\xcd\x92?\x9afY\xb0\xc9\x9a\xcf\
+\xc9\xa8\xfd\xac\xe6\xa6\x9a-\xfb@\x7f0{Bh\xe5\
+\xef\x7fS\xe1F\xc1\xa8\x0f3\x891\xb1\x1aG~\x7f\
+\x90\x12|\x8d\x16D\x87Y\xfe\xc9!\x12Da\xc4\x01\
+\x04U\x8aY56\x88\xbf\xf9\xb4\xea\xa4\xf6!\x8b\xaa\
+N\xdbMWbZ\xad\x93\xb9\x92\x88\x8f\x0a\xf6\x98\xdd\
+\xd2\xc1\x1en\x166S\xf7\xb4w^K\xa8\xa0> \
+\x15\x8a\x96~\xdeW\x0b\x17\x80-6\x9a@\xbeE\x19\
+u;\x96{\xebHG\xac[\xeb'>+1\x92_\
+$\x91.\xcd6y?douz\x9e\xa9*\xd3\xae\
+!0%=G\x96V\xaf\x95\xec\x86\xa0H\xea\xbaD\
+\xe2\x0be\x9b\xc2\x0d\xf1@\xa8\xfc\xc6<X9\x15\x84\
+\x96v\x1c(\x00\xe4\xe5\x94`\xd3\x89\xe7\xb3D\xd3\xba\
+\xdbJ\xdc^\xdd\x1f\xba\x1f\x9485u\xc0,]\xff\
+\xa3DJ\xeeO\x00\x1e\xeb\x9fN\x16@\x10\x072\x09\
+(\x9d\x0d\x0a\x1a\xbe\x0f\xc6\x0f\x1f<_*\xdc\xd1\x98\
+\x08q'\xa947\x9f\xb7(\xeb\xe6\xbe\x12\xf7\xaa@\
+}]\x9d\xb2\xf3\xd3z\xc6\xc5CT\xf0P\xbfF#\
+B\xb3e\xae\xaa\xbf\xa8\xd6\x97\x01usZT\xa6\x12\
+\x09\x9f\xdba\xbd*\xaa\xfd\x87\xc4L\x98/Q\xc1\x8e\
+\x10\xe3\x05\x7fVf\xbbIH\xf4~\xa1\x00\x07\x80\x82\
+x\x0e\x09\xa0\xd4k\x1d.\xed\xd2l\x1b*\xda\x88\x0d\
+~K\xa3A\xb3C\xc1WGli\xd962S\xcb\
+\xbe\x08\xf0\x02@@A\x0b0@!\xc2\xc6\x02P\x84\
+:?\x05\x0f\x9d\x16>8\xe8\x19q\xe13\xfb\x1d\x9d\
+\x90m\xa52<\x04Fx]\xec\xb3\x14\x92\xdcGD\
+\xe7\xde\xa7\xdf\x03\xa3\x08 \x80\x04\x83\x82\xf2\xce^3\
+%l\x8a\xa6\xd3\xef\x99cp\x9d\xd8\xb7)\xdc\xb8N\
+\x14lPU\x01\xaa\xb8_0#:]\x07\xae\x0b\x05\
+,\xc0\x00*\xe6\x00\x03\x00\xd5\x14\x86\xec'\x00 \x14\
+\xfe</\x5c\x17\xf6e\x802\xf6\x05\x9ek\xcdr\x93\
+p\xcb\x9c\xd6\xaeg\x7f\xfe\x080\x0f\xea\xe9\x05*\x08\
+yn\xff\xadQ\x87/[\xa4\xf5\xc5u~\x87\xd6/\
+v\x87\x14\xc2\xa2(\xc7\xc8\x01\x851L\x88\x05\xfb\x19\
+\xe8H\xb8X\xbf\xf2\x1d\x8f\x19R\xedk\xa1\x0d\x03\xe0\
+\x83\xfd(3\xaa\xf8\xc1\xebs\x00|\x14\x9e\xd22\x88\
+Q\x04\xf6\x19\x18\x04\xd8\xf1Q\x103\x03?|N\xf9\
+9\x9e\x0b:\xf6\xac{\x5c\x1c\xe8\x08\xb1~`\xc8\x0c\
+\xef+\x9fa\x8c\xa8\xb1\x10Ty\xae'\x098bx\
+\x5c_\x01\x16\xe5\x0c\xdf\xcc\x81(\xf6y\xed\xdf\xa1N\
+O'\x1e\xc0G\xeb1\xect5\xeb\x1f\x057\xcc:\
+1\x0bB-[\x05w\x88\xfd\xc1\x1c\x02`\xb9\xcb\x22\
+1n\xf4\x5ct'Y\xa4\xd7\xc7\xe8\x056`\xa2\xa0\
+\x87\x88\x17\xeb\xdc\xb4+\x96\xa8\xcc\x9a(\xfc%Z\x1a\
+\xef\x0fF\x98\x12\xed\xa0P\x03\x94\x00\xcc\xf1\x1c3\xa2\
+\x80?\xbcF>b\xddp_\x01\xfc\x04\x88\xfb\xcc\xfb\
+\x89\xf5\xdc\x8eQ\x0d\xa8\xfcz\xff>\x1awp\x1a\xfd\
+\xa2\xb0\x96MZ\xb3Q\x89\x0f\xa7Q@\x89\xfb\xc5\x08\
+\x864\x8c\xa2\x83,\xf10\x00v\x18z\xa1\xc9 `\
+\xc6]\x8b\xf6\xa9\xdaPA\xb1\xc6n\xce\xf2\xcaS\x13\
+u]*\xfd\x91\x87I#\x8a\xd7\xdf\x5ck!F\xc1\
+\x15\xc9\x06P.0\x00\x0b\xf8\xb7\xfb`\xed=U\xa4\
+8|\xce\x9b\x92\xf7MN\xa3W\x88\x8e3\x1b\x0e\xe5\
+\x1e\xb7\x1a\x1a=\x8cv\xf1\x1c.\xac\xfd\x99\xfd\x94u\
+\xc2\xbe\x0c\xe04\xf7[\xed6\x83\xd9\xa6\xef\x0ff\x85\
+F\xca\xe2<A$\x16\xfbo[o\x89rM!\x1b\
+\x8c\x17\xed\x8b&Mh\xe2\x84\xcd\xdf-\x12S\xc8\xca\
+\xe1\x9d\xd5()\xeb\xb6\xbd\xd4\xa2|}\xb8E\x15\xbd\
+5\x18\xc7\x80\x9cR{\xf8\xe8u\x8c\xd0\x92\xffm\xe5\
+']?\xdazlu\xc3\x020ln\xb0\xa8\xa3\xb0\
+P\xc7i,\xc1\x14v\xb7\xc0q\xb5\x03\x8f\xc2\x1f\x17\
+5\xf2C\xbb\x1a3\xd4s\x0e\xbb9\xe3c\x1bs\xc0\
+\x81\xbb\xdf\xa4\x06\x10\xe2\xbf\x88\xed\x22\x16,M\x11\xf2\
+\x09\xf2\xf8\xb8\xbf\x02\xc2)\xfc\x9b\xa9,\xea\xfe\xd0|\
+\xc5\x221\x17T/F\xe7\x1c\xe0\x98\xbcR\xeb\xc0G\
+\x00\x0e\xaa\x8c\x96\xf1\xbf,t>N\xa9\x00\x16n\x1a\
+1*5k_Ob\x93\x8d\x0bA\xb7V\x7f\xbd\x10\
+S\xc6\x0d\xa4\xbb\xdb\x22\x89H3\xaaaZ\x03mm\
+\xe4\x9a\xb9\xa5\xdb[^h\x91\x18\x02j\x04\xc7\x88\x11\
+\x0d\x09\xec\x15W\xb5H\xe7\xfc\x14\x89\xbd\xb2?\x93\x07\
+`\xb3M~\x86\xbb\x97\xdc3\xba\x03,\xcc\x06pe\
+\x8bZ\x90\xbb\x0a\xec\x94:\x93\x1f\xaa\xa2:p}2\
+\xe2\xdf\xea<\xa5\xc4\xc0G\x02\x8eR\xe7ow\x89\xb3\
+\x9d,\x11\x82\x1b\xabm\x1f\x22hQ\x00#\x96`\x94\
+\x97\xdd\x92\xa8\x08\x89\x1aTrT\x12\x95\xd0\xb0\xc1p\
+A\xc3\xa6\xcc\xd2\xc4\xbf&\x15X\xeb\xf8\xde\x9a\x12\x15\
+\xa8\xfe:X\xc2\x16G_\xc7\x8c\x18b\x22\xb2]k\
+\xee\xb3\xa8\xcc\x05\x90\xdf8\xe8D\xd9\x0d\x9fj\x12Y\
+!\xae\x81\xa4CU\xa5SfH\xe5\x0cB\xb4\x8e\x94\
+\xc8\xc73\xc9^\x88\xce\x1f\x0f\xbe\x12\x04\x1f\x09X\xbc\
+R\xce\xcd\xc4\xc4\xed\xcd4\x13\xe7\xb3\xc8;\x95\xdb\xf3\
+\xbe\x12\xcbi\x86\xa4\xfc\x9dv#\x8b\xf2\xf3\xcf\x96x\
+&Q?\xa1..\xe5S\x9e\xd1\x19vB\xcdu}\
+A\xee\x1b\xe6\x90RJ\xa2\xc3,\xad\xc4j\xd8@\xc3\
+7W\xd4Z\x1e\xc0\x185@e\x5c\xc8\x1e\xea\xc3t\
+\x04\xba\xf5-\x92(\x8c(;1\x8aa\x0f\xd0\xcf\x92\
+-\x90\xa5#\xbb\xa6\x83\x00\x0d\x02\xd9\xf8\x8c\xe6\xb3H\
+j\xe3t\x84\xe9\x14|\xcbK\xa5\xb7\x8b+\xa2\xc6\x0f\
+%\x91Y<:>t\xce\xd5\x81\xf7\x02\xffK\xa2\x8a\
+n^7j\xec$\x9d(|y\xda`\x17\xf0\x9ef\
+\xbd.\x00\x0b\x06p]\x94\x90T+\x17?\x91\xfe\xbe\
+\x11\x95\x7fU;\xd3\x91P\xd2\xc1A\x84\x8fY*D\
+GH\x9c\xf9\x18\xce\xa2\xf2\xf3k\xba\xaek\x0f\xbc<\
+\xa8\xbfsRu1\x08w\x87}K\xecS\x91lT\
+\xb5Aj\x11)\x8c\xc2\x06\xca\xaf\xdc:\x82*M\x02\
+\xd9\xbaNk}\x1dP\xb3I\xc0\x00\x04\x10yA\xdd\
+\x1a\xd7\x05\x98G:\xd8}Fv\xeb\xea_\xed\x89\xe1\
+\x9f\xc5d\x99:%\x9a\xd80B\xa5E$\x09\x9b\x1e\
++/6L\xcc\x06\xb4QVs\xb9\xb3(d@\x82\
+\xd9G\xa2\xd3r\x87\x00D:\x5c \xb7\xeco\xea\xf8\
+\xbc\x8d\xfa\xcf\xa8\x07\x94x>S\xa8=\xa9D\x9eD\
+EL\x99P{F\xc5\x1d\x86\x12\x1d-f\x0d\xe9\xd0\
+S\xf8P\x98R\x88\x90\xf0\xc0\x88\xe1\xb9\xa0\xb0\xa4\x90\
+'qB\xe4\x8d\xd7\xc7L4\xa24\xcc2Ci\xd6\
+\xc1\x1b\x85\xe1\x07\x85\x98\xf3\xf7\xe9\xf42\x8a\x85H\x11\
+\xb6\x98\xd8v}C\xa2;\xf8\xf4B%Fl\x0f\x91\
+4\x0a6\x18`P\xe7)\xf8y\x9f|\xa6S\xcd\xeb\
+\x07\x10Y@\x80\xc6\xa0\x83\xd1Q\xa8N\xd1\xdf\xe5\xf9\
+z\xf1\xad\x22o\xe5\x1e\xf7\xeb\x98\xebI\x82:\xd4\xf8\
+\x80\x8a>\x9c\xc9\x07\xa8\xe0\xba\xeb|\xe0\xdc\x8e\xce\x11\
+\x94u\x00\x81\xa5\xf5\xbed\x83U\x8a\xca^<\x8c}\
+\x85\xf3\xf1\x8e~\x86=f\xb6\x17\x16\x83\xe3b%$\
+\x97wWtW$\x0a0\x85\xc8\x03J\x5c\x00`\xa1\
+\xe8\xf2|\xa3A -\x8ax\x9d\xb8sP(\xf3\xdf\
+\xb9\x1e\x00\x89\x00.\x14T\xbc_\x5c\x05\xf8=t\xe6\
+\x01\xa4\x958\xb1\xfeH\xec\xc2F\x94\x113:\xeb\x9c\
+\x03\x8c*\xb0>(\xec\x87\xf7\x01\xc0\x94\xe7\x93\xfd\x8a\
+D\x8c\xf7\xc1\xf7s\xee\xf2{\x19\x99\xa2S\xa4s-\
+\x18\x87\xf2\x9fg\xbdG\xc2\x0b\xc5\x1e \xeec\x936\
+\xf5\xe7\xe8\xb2I\x97\xfaH\xca\xd0\xa6P\x89e\x8c\x08\
+\xe0\xde\xa3\x99p\xce\xe3H$\x01\xc0T\x98#\x1a\x1a\
+\x22\xb2\xf8^\x03\xac\xe9\xfa3*\x1a\xc0\x04\x8d\x074\
+\x05\xe8D\xf3\x9c\xea\xe7\xa0\x18G\xc3\x87B\x8e\xf7\xc5\
+9\xc2\xba\xa3\xf0\x97\xd6O\xacc\x01\x85t\xb6c\xbf\
+\x11C\x09F&\xcc\x85\xd8\x7f\x19\x0d\xa4@\xc4\x8e\x10\
+\xe6\x8fD-G\xaf\x1b\xf74u\xda\xe8L\xdf\xdb\xfb\
+\xb3\xc7\xc8\xa7\xa8\xf7\xb1O1#\xfc\xf0\xe8!\x1fm\
+@\xcb\x04w-=\xa7q\xdd\x008\x10u\xb5\xaf\x8e\
+Q'z\xbe4j\xa6\xf7\xd5\xcce2u\xe5\xf3+\
+\xbd\xe8\x5c0I\x11{\x05\x08\xa4\xc1$\xe0q4\xb6\
+\xd0\xc8\xee\xac\xd5\xae\x99\xc24\x1a76\x227\x9b\x18\
+\x9f+\xd7\xd1\xbb\xd1l%fO\x14p\x1b\xed<Z\
+\x0c\xc9C\xd2y0\xa1\xfdF>\xef00\xdam,\
+R#\x83<\x8e\x02\x91\xba\x00\xd7/\xa9\xc7\x87\xe8,\
+\x8c&\x80$\xec\x00eG\x17\x80\x1f\x0cV\x1a\x82\xec\
+\xb3\xe4\xb1\xc6p>\xd4\x1b\x1b\xbeOyg}S\xcd\
+\x96oT\x0b\xdcfG\x0bu\x86?Z\x99\xd4\xe1\x82\
+\xf0u\x8b\xf2\xf9:\x0b\x9d\xc7\xbfP^[\x0a\xd6\xf1\
+%\x16u\x7fj\xd6(\xb1\xba\xec\x0e\x97\xa9\x7f\xc7\xeb\
+\x9b\xe3\xd5\x01>35:\x11+V\x9e\xd3\xfc\xd1\xa2\
+jV\xb1\xcf\xc2(6I?\x17\xf53\xad\xa7\xd7\x93\
+&\x17\x0dM\xb9\xc1\x05\xc5\x1f\xca\xfa\xbb}\xd8\xac\x17\
+?\x9c[\x0d\x92r=\xc7W\x8f\x7f5\xbe\xa6\x02\x08\
+02\xdb\xc9\x16\xaa\xcf\xee\xa9\xa3\x0c\xceP\x99SZ\
+]/%Qr\x0ac\xb9v%\x91\x04\xa5\x00\x00 \
+\x00IDAT\xc1\xd8\x86\x91\xd1\xecfQ5\x0d\x10\
+\xe5k\x0f\xb4(\x9f\xb7\xb4H\x0d\x18\x18,<\xe7Z\
+_\x00\x1e\x91?Z6a\xdaQ?\xb6\xa8\xe7A{\
+]{\xbd\xb9\x9d\xc4\x88\x18\xe75\xa3\xdd\xb8l\xe8y\
+q\x8f\xafs\x9cA\xe0\xee\x0f\xec\x8b\xcd\x8f,\xdc\xfd\
+\xce\xcfEl\xfa`8\xb7\xbf\xb0Hns0\xad\xd6\
+\xb7Hu&\xe7\x81\xeco\x01\xdc`\x9cF\xc3\x0cq\
+Z\x01\xed\xa1\xe9@}\x85(\xbf\x80\xd0\xc9\xcd\xf7-\
+\xb4\xc1/.5\xe0\xf3\xcbstx\x89\xb2\xe15k\
+\x97XK\x09\xf5\xae\xba\xc0\x86|~\xb0\xc49*P\
+~\xa6\xd9\x8dU\xaa\x1f\xa8?p\xb7\xa4\x19j\x1b\x01\
+\xb8OH\xa6Q_\xffa\x91(vB8\x9b\xd7J\
+\xfcGue\x97\x0aNl\x13$\xaa\x81\x8d\x88\xbf\x8d\
+\xed\x92\xd8\xdas\xaeW\x5c)\x81\x88\x14JT.:\
+|3X\x88Jww\xb2\x01\xe2\x00U\xa2\x85j'\
+\x0f\xc8\xf8\x0b\x16\xe5\xfb\x17\xb1H\x07%\x89\x17\xe2K\
+$\xac\x88\xef\x98\x1d\xda\xb9I\xdc\xc4\x883[\x88\xb2\
+\xb9\x8c6\xfe5\xea\xeb\x84\xda\xe2\x9d\xe7yj\x87\xca\
+\xf1\x89F\xc8|Y\x98\x13G[H\xcc\xe7\x91\xbaa\
+\xbbd\xc7\x01\xda\xa0v\x90\xbf\xfa\xdfj\xc78\x00\x09\
+:\x00\x03_\xf2H\xbc\x85<\x05\x15\x13\xaa*\x1f\x1c\
+\xcc$0\x5c?\x0a6\xa8\x98 V:X\x83\xda\x88\
+J/\x07\x83D\xea\xd8\x18\xbawY$\xca\x13H\x98\
+\x18\x0ea\xdf\xc2\x86\x82\x1a\xf3\x0a%\xde_5\x1a\xfc\
+\x81<*\xbd>\x0ag:.v\x9co\x9c\x00\xa4g\
+\xdc\xe8,\x0a\xeb@\x04\xb9\x1evL\xec\xa4\x82\xf7\x97\
+U\x8c\xc4;\xf7\xebU\x119\xff\xed\xb3%\x17\x04%\
+\x86\xcc*\x85X\x9eF^\xbcLx)%4\xf8\xf3\
+\x8a\x1a\xe8e\xdb\xfbE\xd5:!\xcd\x9e\xa3M`w\
+c\x8e\xa4fOaC\x87[\x1b#\xf6\x95\xfej\x9e\
+O\xf6\x7ft\x16\x11?\x14\xc0\x12H\xa4\x10\xe2\xb8\x1f\
+t\xc6,\xed}\xf3\xed3\xdc\xe1\xf7Mg\x03`\x08\
+\xb7\x08+\xff\x7f\x9c\xa8r\xd8\xe71;j\xeb\xf5\xe9\
+\x94\x90\x01p\xd0\x01`\xdd1\xa2B\xa1B\xe2\xcf\xba\
+\xc2\x1d\x83\xf5\x0e5\x1e?\xeb\xe1\xac-\x0c\x0a\x89\x83\
+6\xdf)qB\x12K5`k%%\xd0\xc7if\
+\xf6\x85\x94\xa8P0\x90\xa8.\xa8\xd7I\xa7\x1214\
+l\x9cP\xdfG\xd3\x82D\x86\xc2\x91\x0e\xb8\xee\x03#\
+6\x01\x90\x22\xd6\xa3Y\xdfx\x1d\xd8\xf2,\xaf\x82\x7f\
+Y\xfd}\x12m:\xb0P\xf6\xa1\xdcBY\xa3S\x06\
+\xe3\x82Y\xf4!C\x83\xce*\x9d\x03\xd6\x11\x1dY\x00\
+\x05\x0a#F\x10\xb0\xb3#A\xdd^\x89\x19\x8c\x15\xf6\
+\x89\x1d\xfaN\x8b\x0f\xba\x8c+\x80\xd4mf\xe1\x08\xfc\
+\xfe\xdd\xfeNQ\xec\xfd\xc8\xcf\xeaGA\xa2\x03\x0fP\
+\x81\x8f.L3\xdd\x9f\x10O\x83*Jgp\xe8V\
+\xc0\xbfS\xf81\x8a@a\xae\x9f\x1bq\xff6\xd4\xfd\
+\x9fV\x85$\x14z\x0a\x7fu\xd4\xa3\xd0b}\xb2N\
+\xb8\x8e$\xae\x14\xc0\x009P\xbe\xe9\x88S@\x0e\xc4\
+\xf0\x02@\xbaW\xd7}9\xfd~\xdc\x00\xd8\xefI\xb8\
+)\xa0)\xe8\xf9\xbd\x1b\xa8\xb3\x8e(\x22\xb6|7\x0b\
+\x98\xc1\xfd\x80\x0e\xfe\xe5= \x1d\xeb\x85\xdf\xcf\xb9\xce\
+\xcc6\x1dqf\xf9q\x0d`\xa4\x02\x8a5v\xb7\x00\
+\x95<\xff\x14\xda\x14\xb8\x00\xd3Cf\x00\xd7S\x1d\xfc\
+\x00\xfaQ\xc5\xe7:Q\xc8\xf3\xfcR@\x0fmK\xf9\
+L\x82\xc8\xf3\xfa\xfc\xa0S\xc9\xba\xe7\xdf\x01\xf6\xd8o\
+\xe8X\x0a\x10\x88\xe7\x11\x00\x82\xd9xD\xdf\x10\xd1\xc5\
+\xb5\x88\x19\xd2\xed-\xea(\xdd\xd0\xf7<\xdc=\x04\x10\
+\xd2\xb9Fk(\x80\x00\x1a!\x9a\xcd\x8e\xf5DC\x03\
+\xb7\x05\x014P\xaeaP\x06P\x87\xe83\xef\x1f\x95\
+z:\xdb0?\xc4\x1c\x8a\x8e;\xa2\xa3\x7f\x18\xdd\xe9\
+\x9d-\xf6%\x0a\xc93\x05\x1cc{*\x002\x00\x0a\
+\x18\x09\x00\x0e\x5c7\x1a@\xacC\x9es\xd4\xc9\xc5H\
+\x88\xc6\xd1\x1b}\x81_\x0a\xf5^|\x10q\xe7\xf5\xfb\
+\xd1\x92\xd1\xae\x1aI|\x97\xecX\xf7\xec\xfd\xc6\x99\xa9\
+6\x85\x17\xd3x\x89BG\xf7%\xd4\xfd\xc54h>\
+kQ\xfb\x08\xcd\x0c\x16if\x1ff\xa3\x95e{$\
+1F\xc4\x01\x19Y\x98K\xa2c_\xed\xc5\xb5c\x04\
+\x00\xf7\x1b\x98 b\x944\x17YT\xf1\xdb\x98\xe5V\
+\x1e\x08\x10\x17\x9aHV\xe0\xcf\x96\xa8\xeb0l\xa1@\
+#\x8e\xcc\x88+b\x81v?\xaeH\xfb\xcc&\x02\xf6\
+x\x0eu\x0eO\xfc\xc4\xa2<~\xebZT\x86m\xe4\
+\x9fz\xae\xc2\x06\x8ds\x9d\xfd\x80|\x0eF\x12\xcfe\
+\xb5\xdf\xec\x81T\x00\xd7\x99t\xff9\xef\xf9\xb8W\x7f\
+O\xfb\xae\x9f\xb7\x0f'@G\xf9fh\x0eQ\xe8I\
+s,\xec\x0f\xffj\xa1\x91\xc4\x9fW\x17+f\xb4\xbb\
+\xf7X\xd4\xc6[\xfb\x84E\xb9\x0e\x8b\x970\x17\x87\xdb\
+-\xaa\x86\x046t\xde\xd0z^\xf7q\x7f16\xce\
+\xa9\xfb\xa43\xb5\xbf\x91\x98\x03\xca\x07\xba\xb5-\xea\xa8\
+t\xeco\xec\xab\x8c\xa4I\xf3\xc7G\x87\xbe\x99\x0aO\
+\x8d\x1a\x07\x05\xff\xe0\xee\xa0\xce\xdc\xd4\xce\xb7(\xf7\xed\
+S\x16U\x84\x1a`\xb6y\xae\xc4\xb3U{\xa3\xfb\x9b\
+EuI\x09\xc6.\xa3\x8d4py\xfe\x10\xaf\x94\xab\
+H\xac\x1b\xd9\x82\xc6~\xa2\xe7\x9c\x9f\x0b\xa6\x87\x00\xf0\
+\x00F4\x12\x18\xb3\xf1\xac\x1f12\x9by\x9a\xb9\x9b\
+y\xea~G\x1dF\x03\xd0GKw\xa9u\xec\xa4\xbb\
+\x04\xcc\xe2\xe6\x84\x96\x00\x8d[\xf6=\xecoeG\x1d\
+\x9a+\x8c\xfa\xa15\x84h\xacD)C\x9b\x8a\x91 \
+\x00a\xd6?@\xb2\x98I\xb1\xdf\x92\xef\x88!\xd1m\
+eQ\xeb\xdf\xc9\x13]\x896%\x8c\xb2\xe7\x0b\xb1/\
+Q\xe8\x18\x0dpU\xd0E+\xf2\xe5\x22o\x0b%\x11\
+\x09\xc4\xcaD\xddF\x8d\xd1\xed\x1d\xf6\xaf\x94\xa3@n\
+\xd5\xb1n\xce\xb5\xa83x\x88\x88 \xda\xc0\x02\x0c*\
+\x0a\xb6g \xbdP\xb8\xa1\xcc\x910\xb0\xe1\xe9\xc2S\
+\xc8\xb5\xab\x96\xb0\x8e\xfdk%^\xaf\xa2\x1b\xd1\xc1f\
+\xc6\x0ej\xdc3%\x9eN\x85\x9c\x0a\x838\xc0\xd9P\
+\x10\xc7\xa3\xf0\x9f\xc3\xa2\xceDcK\x17\xa3\x14\x88\xda\
+\x882\xd6\x9caQE\xdeL\x93\xd9T\x99\xdb\xad-\
+\x12\xd2\xb7\xb5E\xa5\x98\x84\x1a$\xbfO\x07Ol\xec\
+\xa2${9X\xde_\xbb\xb7E\x15\xc9\x9bX\xa7\xc4\
+\xda\x091\xd5\x0c\x09T\xb1\xee\x93%\xb6M\xbe\xee\x9b\
+\x0a\x89W'#\x16\xb0\xaeC\xd8\x1fa\xb3%\x8aS\
+0$\xec\xbf\xef\x97\xc4\x9a\xa0\x0e\xdbv\xfd\x8a4(\
+\xdeY\xa95\x00\x1et\x1a\xdc\xd6\xe8_I\x85\x9e\x84\
+C\xae\x13\xddZF\xd2\x11\xb0\xf1\xfb\xf4\xa0P@Z\
+\xbf\xe4\x9a\xa42\xfd\xe2\xa4\x9e\xd9\x22\xb1\x1c\x7f\x9c\x96\
+H\x896\xd4^\x831\xa6O\x94A\xc4\x1d\x99)\x94\
+\xc8\x8fo4\xf7VW\x02D\xff\xda3-\xd2\xac.\
+\xeb\x88\x02\x82\x03\x8c\xaf\xc5\x14\x80\x92\x1evE\x06\xac\
+mX\x0b\xd1P\xf7\x17\xe0\xe6\x1b\xec\xd3\x89\xaaMA\
+J\x82Kb\xba\x80\xf70\xe3`\xf2\xd5N\x81\xfd\xbc\
+f\xcb?\xaa\x02{\xe5j\x03\x19\x85\xa8:\x1f~=\
+\xafV\xc7\xe5\xb1\x0a\xc4\x8d\x0e\xb4H#\x0b\x96\xc6\xad\
+\xad\xf5u\x95\x00\x9c%R\xc7\x0d\xea\x16\x1b2\x85\xcf\
+\x8d\x1e\x01T\xbe\xcd\xaf\x1c`\x8a\xce\x1a\x05\x98\xa8\xc3\
+\xc1\x10`\x9d)\xa1f\x96+\x18$$\xb6P\xed\x8d\
+ZuW\x02$\xe80\xd2q\xad\xb3\xd2\xae\x16\xeb\x09\
+\xd4\x0aId\x94N\xa6\x0a\xd3`\x1a\x90p\xb0.\xa1\
+\xcaQ\x10q\xff)$\x06~\xcf\xc1\x08\xe1:!\xbe\
+\xc8\x8c?\x85\xc3C\x02n\x9e\x96+\xc0\x83*\x90`\
+00\xa2%\x9b\xc9H\xf8\xe9p\x92X3\xbb\x0f\xe3\
+\x85\x8e?\xc0\x1e@\x13\x85\x16\x1d\x18:\xce\x14x\x14\
+L\xeb*\xa1\xa7\xd0\xc7\xf7~\xfb\x04@MJ@\xc5\
+Q\xd2*Q\xa1\x0e\xb2\x8dZ7\xf6A\x91H@5\
+6\xd1\xa4\x1f&\x86\x046S\x8c\x88\xa1\xee\x8ev\x0a\
+\xeb\x0dj\xe9<J\x1c\xb9\x9e\xac/\xbe\x06\x10\x18\x8c\
+L\x04@\xc0\xfad\xa6\x9c\xeb\xc8u\x1av\x90)\xb4\
+\x87\xb6w\x00\xad\xcc\x86\xd3\xf1\xa6\x00\xe6:\xf1}\x00\
+L\xac\xa7%\x82\x8a\x0e\xc3\xa1\xdf\x7fH\xc8\xe9\xc8#\
+>\x89\xcb\xc0\xdf\xb5O\xd01\xe1\xf9\x04pc6{\
+Uup5\xe2\x15\xaf\x9fu1\xb0\xa7\x0d\xa0\x03`\
+\x11&\x06\x056\x1f\xbc\x7f\xf6a\xce[\xa8\xef0\x15\
+\xe4\x8b\x1d#Z$N\x14x\xacW\x80\x16\x98E\x9c\
+_\x00\x8f0\xc3x\xdd\x14\x8a\xdc\x17~\x0f\x80\x86\x12\
+\xcc\xd0\xbc\xe1<\xe3\xf5\x92\x88\xf1\xbe\x00\x00\xf8\xfb\xfc\
+w\x9es\x12r\x89\x9dE\xc1\xaa\x82*\xee+\xeb\x8a\
+<C\x85X\xec\xa3\x12k\x0b\xa0\x80N23\xb8\xe4\
+5\xa2\x04\x87=\x1f\xe7\x1a.\x0b0\x02\x00\x16a0\
+\xb2\xdf`\xf7\x0b\x93\x08F\x96\x18\x9e\x14L\xe1\x9a\x80\
+K\x12\xa3\x150\x1a\x10\x9b\x06`\xa6\xd0\xc7\xb5Cj\
+\xfe\xd8\xc21\xf2\x14\xd7\x01\x86\x1b\x80\x0f\x9d\x5c\x18\x0e\
+\xa8_\xe3\xc2@!\x0f\x93\x02[FQ\x98\xc3\xed\x08\
+\xb1@\x9e;\x1a$\x8c\x8al\xdck\xaf0\x02\x16\xd7\
+\xb5\xed)\xbf\xdds\xbd+\xc8h?1\x0d$\xd6g\
+\xe5\xb0\xbb((\xefuF\xe6\xb3I\xcb\x09\x95\x7f\xec\
+k\xa5\xae\x1f#\x91\x001\xda\xe7`\x9c\xe1\x96\xd5\xfc\
+\xc5\xc2\x7f\xdeG\x12\x9aU\x9b\xd5\x9a\xd5\x92\x06\x80f\
+\xf8q/ \x7fD\x94\xaey\xc5\xb8\x03\xe5\xf3\xd9\x16\
+U|\xcc\xdd\x82fN~\xf5\xb2\x07n\xd6\xb1(\xff\
+~\x8d\x85l\xf4\x96H\x22\x8a\xdb\xfaPWe\xdc-\
+\xa4}V\xeb\x06\xb7\x95\xe6q\x8br|O\xb6(\xb7\
+\xf9\x02\x8b\xf2\xef\xabY\x94\xcf\xb3Z\xa4}\x97\xe7\x93\
+\xfb\xce\xf3\xce\xbf\xf3|\xb1\xbf\xd2\xe9oB\x0c\xd0\x81\
+\xbe\xee~\x8b\xaa\xe1\xc4\xc8o;\xafE\x1d\x8d\xe9\x96\
+1\xa3<1P\xbf\x9fFE\xc4\xb4\xa3\x01\x1a#V\
+\xaaG\xda\xf7\x96XT\x0d\xc0=\xc5\x5c;1\x15\xde\
+z\x0e|\xb0\xa3\xbc\xef\xf1\x11\xe3#\xec|w\xea\xfe\
+\xeb\xca\xaf\x17O\xfb\x04v\xdaZ\xaf<W\xed\xad\x16\
+U\x9c9\x0ae\xb4\xae4\xc2\x13\xe7\x15\xfb\x13\x9dc\
+\xe5\x8fq\xae\xc0<Q\xa1\x1d\x05\xa5\xb4y\x9a\x99,\
+j=0^\xcf\x225$\xb4\xff \x1a:>\xac\x84\
+\x89I\xaf\x5cb\xa54\xfa!\xf1L\xc45\xd9W\xdd\
+\xde{\x85\xda@E\x0b\xab\xfd\x9cE\xd5V\x88N\xb8\
+\x0a\xeb\x10\x05\xbd\x5c\xdal0\xf2\x0e\xe95#\xc8\x07\
+\x9b\xab\x9b_6W'Qi\xed\xaf!\x0a\x88\xd6\xc7\
+\xef\xda\x9b\xdb\xdf\xd5\x06M\xb8\xbbl\xd4\x8b\xd63\xba\
+\xdd\x9d.&\xc1\xe1=\x00\xc3\xef\x09\xfbx1P\xdb\
+\xed-\xca\xe7U,\xca\xe7u-\xea:\xec\xd6\xb5\xa8\
+\xa3j\x00,\xcc\xf0\xc7\xf3\xc0H\x02\x9a\x0e4T\xc9\
+\xb38'a\x9c\x92G\xeb<\x99<q|\x89\xe3\xf4\
+\x03/k&i\xff\x8at\x84H\xc4\xe1\xbd\x08\x87#\
+\x8a\xaf\x09\xe1\xb8&\xfd\x01:\xa3Ph\x8dR\xb4b\
+\xa5\xe2\xc6\xc8\x00v\x1eP1\x85\xb4;rX\x16z\
+\xf3\x94Ey\xc3kY$\x0a\xcc\xfe}\x87\x071\x1b\
+\xa7\xd8\xbfOb'\xdf\xd0\x0c\xf9\x86\xd5/\x91B4\
+\x10Hfom\xf6j\xcb4\xc3m\x92l'\xa7\x99\
+>\x10ku(\x9c\xda\xb2\x86\xfcmgH\xe2g\x14\
+\x12\x14\xfe\x14\xa6:`\xa06E\xe2 1AD\xca\
+@$\xc3\xb6L\x052\xb3\xe0\x81\xdc*\x91\x09\x11\x19\
+\x89\x10uWY\xa4\xd9}\xa9\x5c\xc2(\x08j\xa4\xa8\
+Z\x8e\xdc\xceZg\xb6\x1dh95\xa9\xe2\x82(!\
+*\xa6\x19\xb0\x10\xf7\xb2\xc7\xeb\xab\xe9\xfeM\xeb=\xad\
+\xdai\xa1\xa0\x04q\xb7\x83s\xd9D\xd1\x87b\xcfA\
+k\x08\xd7\xbf\xeb\xccx$(zp\x9d\xd1\xb1L\xa2\
+\xcaa\xcbax\xffz.\xca\xe2T\x9b\xe8\x88IE\
+\xdf\xb5$\x9eHb~\x96f\xbd\x98\xc4#\xed\xaf?\
+%1\xbf\xf5*`\xe5e\xddN\xa9p\x84\xb2n}\
+\x93\xd7\xd2\x8c\x22\xef\x97\x02C\x88jt\xac\x10{4\
+\xaa\xde\x9a)\xa1\xc2\xaf\x1a\xb5d(\x93\xd81\xe13\
+\xaaD\xc6\xa9X\x17\xa6\x0d\x185U\x15\x94^\x90>\
+\x9c\xa8\xab\x1c\xb4\xdc\x7f:\xe6\x00\x0c\xbc~\x0aO\xdb\
+\xfe\xa7M\x9d'\x0a\x141QP\x19\x05\x90qm\xdb\
+\x13$\x9a\xb5\x87\x00\xb2{*\x95(F5\x00b\x10\
+A\xa1\xa0\xd2\x7f\xc7\x9626$=\xffa\xa7E\xe7\
+\x9e\xc4\x92\x82\x83\x84\xdc~\xdb{t\xf0\xcf\x96^?\
+\xeb\x80\xcf\x1c\xf4\xbc\x7ff \xd5\xa9@L%:\xd1\
+l\x98$\xb0h4@\xb1\xc3.\xd0\xf0\xe1\xad\x92Z\
+\xfa\xcd\x16i\x84C#\x01\xa3[dK\xc5\xac\xe5\xd0\
+\xae\x8c\xe7\x85\x8e%\x89>\xd7\x8b\x0e\xa9^\x1f\xb3a\
+!\xa6&D8\x98\x0b\x07\xcb\x1f\x99N\x1e\x087\x9d\
+M:\xd8\x03\x15\xe4\xd1Z\x12=\x1a\x88\xd4\x04e\x99\
+\xef\xe7\xe7I\xb0\xa0\xa4\xf3:)\xa8\xf1/\xc6\x06\x11\
+\x0a7L\xa0\xa9\xa3\x03\xde\x17r+\xaape\x04d\
+c=G\x00:\xaco\xcd\xd6\x86\x98\xd7\xa5\x16i}\
+\xbc.`kk\x89\x1f\xbd\xbb\xef\xc8\xc5\x08\x8a\xd4\xf9\
+c\xd6\x93\xce8\x85?\xc0\xe9\x82\x9aI\xa5\x80%Q\
+\xeaT\x90\x0eE,\xf9\x1a\x9fq\xb4f(\xf0\x87\x9d\
+xD\x04)XT\x80\x8f\x16\xd3\xe8\xc5\xf2z\xdf\x14\
+\x9a\xaco\x98\x08C\x80p\xb8^\xe8t\x91\xc0q\x0e\
+,\xadB\x86\xf5\x07\x00\xb3\x8e\x0af:\xafhR\xf0\
+}\xfc~\x98\x14\xcc\x9e\xc3\xb0C\xadZ\x1dN\x1f\x90\
+\xd9\xd0\x81\xb0~\x04N\xb3\xe9\xdd\xa3\x16\x89\xa1\x86\xc8\
+\xd6\xed\x16\x89\x9aL>A\xa2\x82\xed%\x8c)\xf2\x01\
+;\xc7~\x90\x00\x1c\x00&\x0ad~\x0f\xfb\x10\xc0'\
+L\x81\x7f\x0c\x80\x0d\x0a<\x18A\xac{\x006:\xd0\
+\xdc\x17\xae\x0b\x05=\x85;\xeb\xfa\x7f\x1b\xa9b\xbd\xf0\
+\x99\xff\xce\xf7\xf3\xdc!\xbe{\xa0G\x14\xde\xd1\xd1#\
+\xb1'O\x80a\xc5:\x11\x80G\xe1\x12\x059\x00&\
+\x85\x04\xcf5\x1a\x0bbF\xf1{\xbc\xf1\xf1L\xeax\
+*!\x0e1D\x0aw\x98\x04\xa8x\xc3La\x94\x8a\
+\x0e;\x1a-\x14d\xfc}Q\xf7\xb1/E\xec.\x00\
+\x04\x0a\x14\xd9=G\xe1\xbb\x8bFK\x8d\x82{vz\
+\x1f<\x070\x97h\xc0\xa0\x09\x80F\x06\x94{\x15 \
+\x01\x9c\xdc\xa6\xd1,:\xcd\xaf\x8a\xb1\xc1,\xf2\x02\x16\
+\x1aa\xd8Qn2\xb79E\xd8\x81\x92v\xe3^,\
+\xcc\x15\xb4\x1eJ\x9d=\xec\xc9n\xb6\x13\x22u\x5c\x19\
+M\xc0u\x09\xea\xb2\x18\x1e\xa3\xe9-\x92\xba?\xfb\x06\
+\xb6\x82\xaf\x88\xf2,\x1bB\xb43\x9a\x13\x9b\xef6\xdf\
+\xad\x0cE\xf6\xcd\xa0Hk\xbfjf\xb6(\x9f\x8f\xb0\
+H\xdf\xc7\x08\x8a5\x026N\x22{4\x98\xa4\x0d\x80\
+\x8bSs\x89\x85\xf2\xdf\x07t\xbf\x9eL\x9aK\xac\x9f\
+mz\x80#\xc4\xc6\xb5\x7f\xb4\xc7[\xd4Q\xcd\x89S\
+,\xaa\xb8\xdbxM\x8b\xb4/s\x9f\x07\x8c\xa8`\xd8\
+`\x03,\xfb\xc2\xe8\x00\xb3\x8f\x92\xef1\xca\xbc\x94E\
+u\xdb\x8a\xcfK\x97XJ\xfe\xea''\xbb7\xe5m\
+\x009\xb1\xcf\x7f\xdfcR\xbb\xafE\x9d\xc5\xf7\xf2\xf4\
+\xb0Tx\xb3\x8fk_q%\xb4'{5\xfd\xf6\x13\
+U4\xda\x19\xd7\xab(/?+\xed\x130\xb5l4\
+cQ\x01Z\xdfO\xa2\xb7\x00\x94f{\xfd\xd3\xc4\x84\
+F\xcc\xda\x00\x8de\x12\xe3\x89\x06&..*\x98y\
+\x9d\xde\xd8+\xd7\xaf\x9d\xda\xa2j;\xc0\x9c\x998\xc7\
+\xa2\xfc\xba\xfb-\xea\xfe\x01s\xb2y\xccBnl\x17\
+hf\xfe\xae\xc4\xd4D$\x15\xcd\x0c\xdcTlv\xfd\
+\xa2\xba\x8f4\xe7[\xd4\xe7\xaa}\x9fE\x02\x98\x19\xf1\
+\xd8Q\xe2\xb7{K<S\xa3_\x88\xbc\xfb\xe8\xc0\x16\
+\xa91-\x17\x87\x18a\xa4\xbe;\xa7\xef\xe4w\xbf\xeb\
+\xf3\xbdv\x0f3\x82.\x9f\xffeQ>\x1feQ>\
+oeQ>\xff\xc7\xa2\xdaE\x86+\x81\xce;\xdc\x84\
+hx#\xd6H\x9d\xc2}!\x8f!\x7f\xa2\x0e\x0e\x9b\
+\xf5\x8d\xc5\x5c\x06`\x95\x8b\x1e\x9a'0\xd5\x038\xd8\
+\xcd\xa2\x024\x93\x9b\xcfYh\xe6`\x83t\xe1vw\
+c\x93H|\x9d\x02k\x08\xcd\xafJ\x5c\x9d\xec\xa6\xbe\
+bQ\xfe\xfbq\x16u\xa3\x09\x11$:\x22\xd6\xaf\xda\
+Q3\xc8W\x0aA3\x11\xad\xebK\xe4\x91\x00S\x0f\
+\xfehEd\xbc\x83\xf8\x85J\x05\x0e\xd18!nP\
+\xf7\x9dr\xf8L\x12\x8d\xa2 \x1b\xaaQ2\xbb%\xb5\
+G\x90\xad\xee\xeb%\xbe\x96\xd4\xf3u!\xbby-R\
+\xa1\x07\xc0@\x82%\xcaJs\x8fE\x15\x03!\xc1\x80\
+\x02\x1d\x22\x89l\xbc\x9a}\x0b[\x09D\x12\x0d\x81\xfb\
+p\x12?\x91zs\xbb\x9eE\x9d\x8dr\xc4y1\xcd\
+\x0c\xadY\xc5\xff\x9c\x82\xb4EE\xd2'\x96+\xb1l\
+]\xd8>\xb22J\x07\xb2\x89\x86\x1d\xa2\x04g\xddt\
+0\xd3Q\xa2\xd3\xba\xa0\x93\x98\xfb\x8e\xcb\xcf\x93H\x9e\
+(\xe71s\x8b\xbd!\xd4Z\xb4\x10\x98\x09\x94]\x07\
+\x9d\xa2\xee\xb8\x12\xc7\xa6B\x99\xebj\xfd\x8f\xcf\xd7\xd9\
+}\xc4\xf4\x9c\xf2t\x80\x90\xd4\xcf\xa5\x0e$3\xc6\x86\
+\x9c\xad\x93(\xfcPJ\x01x\xa0\xc6S\xc8h\xa3v\
+\xa6\xc1\xfe\x02\x94\x8eH\x09\x12H\xb7\xf5ooJ\x94\
+\x22\x12J\x0a-\xa3^~*\x15F\xeah\x8d\xce\xb3\
+H\x9d)\xd9\xa4\xc4\x01@\xc2MB#J\x97\xf7W\
+~\x91\xb4 (\xcc\x04\xc0\x80\xb43\xdb\x88{\x853\
+q\xe6W\xa1tAz\x0e)$x\xdf\xa8\xdc\xa3j\
+\xbb\xb5\xec\x88,}\xdf\xa0\x02'~,\xcd+\xe0\xea\
+\x0c\xcd@\x1d\x9c\x80\x93\xc1l\xbe'\xea\xd7J\x141\
+ift\x8bY$\x0d\x04;~gIL\x0b\x9e\x17\
+\xcdb\x91\x7f\xfbO\x9f\x96Drdw\xe5\xef\xea\xd9\
+\xb4\xce@\xdc\xe9\x5c\xf3\xfb\x10\x9f\xe4`&\xd1\xd7\xba\
+\x8c\x19/\x0eb\xee\x1f\x05\x9cM,o\xdew\x84\x1c\
+\x882\xd1\xd2\xbfK\xec\xc7\xd4Y\xa7*Q\xd6\xd5x\
+\xc5\x12+U\xe0\xaf\x99\xb0H\x09\x0f\xd7\x9d\x83\x1b\xca\
+<*\xcaPr\x01.Hp(\x84H \x0f\xeb\xef\
+s\x14pt\x22\x19\x11\xa0P\x19\xfa\xe6\xf2\x9c\xd0\xd1\
+\x9fS\x85*\xdf\xcf\xf7)\x01\x0f\xe0\x84\x91\x1auF\
+\xd9\xf7\xa3\xf3B\x81\x0b\xf5\x0c\x00f(\xf2\x86\x18*\
+\x9d\x19\x0a1\xae\x0b\x94\xd0\x05\x05H\x22>\x06`\x06\
+\x90B\xa1:\x9d\x0ef\x15\xcc\xa3\x85\xfb\x99\xb8nw\
+\x0bO\xfc\xfaB\x00\xfb3f\xbb\x8f\x16\xb0\xbd\xaa:\
+x\xcc\xa0\x03\x04\x1d.\xe0\x0fC\xccw\xbcu\xd68\
+\xd6;\xc0(\x89\x13\x05\xdc\xd0\xb5\x82\x82\x8c\xf5\xb5\xb4\
+\x00\x1c\x00\x00\xd6\x1b\xd4T\x12S~\x0f\xfb\x16\xe72\
+_\x93\x98\x0c;\xdc\xfc^F\xa3\xa0\x92\xa3e@\x82\
+\x8c\x1b\x01\x80\x1b\xa2y\xecS\x14\xea\xa8\xf8\xb3\xdf]\
+&F\x11\xee\x0d\xcc\x90\xea\xfbJz\xd5\xdb\xeeJ\x84\
+3\x00a\x00J\x18\x09\x88K\x8a\xa1\x16\xf7\x09m\x08\
+\x00\x0d\x0a:\xce\x07\x12[\xb4]\xe8`k\xd4/\x9e\
+\x03\x5c}\xf6\x95:8\xbf\x8f\x8e1\xee5\xec\x1bC\
+\xcd\x0b\xf2\x07\xee/\x80*\xb6\x92\x9a\x89~\x9b\x16\x00\
+\xe7&\xe7(\x801\xee.\xff\xb6H\xa3\x82C\xb7\x0d\
+\x9e\x0b\xde'\x00)\x0d\x00\xc4\xf9\xd4\xc1\x0dW\x10\x9e\
+W\x18L\x88\xb2r\xbd\xa5\x12\x1e\x85\x12\x7f\x97\xd7\xcf\
+\x7f\xe7\xbc\xa7\x03M\x87S\xa2r\xc1\xa8D\xbb\xc9\x98\
+\x85\xaf\xd4s4:\x8c\xeah\x06\xb3H\x9d\xd5\xa0\xf8\
+\x02dr\xce\x8a\xd9\x14\xee*P\xd1\xcf\x94\x8d\xd6\x85\
+\xa2\xc0J\xdd>\x98NO\xca\x05I\xcc\xa5\xb8.\x00\
+\xec0\xdf\xf8\xa0\xa0\xd0\xb9\x1c\x85\xf6\xde\x16\xc9\x0d\xe0\
+\xd5\xde\x8d\xc0;\xf5W8\xe0\xe1\xf9\x14\x0d\x89\xe88\
+\x9b\xad\xe7\x07T\x00\x1f\x95\xf2\xc1\x9d-\xd4\xc8X\xd6\
+\xc5\xa3\xefp\xed\x17\xf6W\xf6\x1b\x80\x0f\x80\x1e=O\
+!\xce\x0c\x10\xda\xb9\x8c\xe8\xdb\xed\xd1`\xae\xca\xdd\xa0\
+\xd9\xa1\xc4\x8e\xcaC\xe7M\xd4i\xa8\xc3\x88\xf5\xe9}\
+\xe0\xea\x10\xb3\xccZ'q\x1d\x18a\x00\xe0\xe6|\xc2\
+\xed\xe3+\x1a5\x90\x98\x9b\xff\x9eV\xe2\x83\xe5z6\
+\xef\xb2(\x9f/\xb3\xd0\xb9\xb0Y\xb2\xfb~\xbfE\xfa\
+y\x8d>F\xa1&\xfb\xc3\xe6\x02\x8b\xba\x0f\xb7\xfbX\
+$7(:\xcd\x14\xf80\x1f\x07\x94\xea\xd8\xbf\xdf\x10\
+\xf0w\xa1\x1aN\x9a\x89w\xbb\xbdC*\x100\xfe[\
+\x89\xa7U\xd0\xbd\x9a4\x078G\xed\xb9x\xa5\xda\x05\
+\xfah\xe3\xa6\xb5@n\xdfi\x91\x00{\xcee\xf6c\
+\xb4\x94\xd8wu\x1f)\xd8\xb1\xff\xe3\xdc\xf4uvD\
+\xda\xef\xd9\xd7\xd4\x90t\xbb:S\x91\xbf\xd7\xa2\xbc\xfe\
+\xf3-\xd2\xfa\xe2\x5ca\x9f\x03 \x83\xd9B#\x80|\
+\x00\xdbw\x15\xae\xed^\x16\xe5\xeb-K|\x5cL\xdb\
+\xb5\x94\xaf\x8dR>+\x00\x86\xd7\x8f\xf6W\xd7X$\
+[e+h\xf7\xab\xb3\xf5\xbc\x8f\xf6<\x8b\xf2\xfaW\
+\xb3\xa8Z\x04\xcd\xbe\x16\x89!\x84\xa6\xcb\xc9\x16I;\
+\x83\xfa\x0e\xfbP\xde\xa7\xf6\x15\x17\xb3\xbe-1\xd3,\
+kyo\xd2\x04\x01(\x84Q\x0es\xc0\xf6\x8be\x93\
+m\xf3\x7f\xfas\x91u\xd7\xfe\xd5\xa2\xce\xf6\xa3\x85\xe0\
+\x0cj\xd3,\xf8\x81E\xf9\xfaE\x0b\x01J\xdfKy\
+\x13\xfb\x0aL\x22F9v\xb0H\x0ds\xdc\xc6`\x16\
+\x08\x18\xb6\x81\x0c\x1f\xc9\xb8\xdb\x22\x9d\x93_\xb2\xa8.\
+\x11\xed/-\x0c\x000\x95l\xf3\xd5|_\x89\xe5\xb5\
+\x81\x7f\xb3v8\xc2'\x967n\xa2qk\xa6\xd9+\
+(,\xa6\xf1\xbaoZ\xa8\xcc`\xc9\x87\x9c\x03\xcc\x91\
+\xfe=\xd3\xcc\xb9\x10\xa9p\x19X\xdeB\x1d\xde\x07j\
+\xa1\x8f\xedAP\xcf\xec\xb6\x5cY)\xed\x88T\xc4\x06\
+\x0f\xe5\x85\x8e\xa4\xf5y\xf6I\x9d\x0d\xc3[\xd7|\xbb\
+\xe8J$:\xcc\xa4j\x83\x0b\xea\x1a\x89\x02\x141\x90\
+qu\xa8\xc3\xdd\x00*\xb8\x16| \x5c\x14t\x02\x12\
+\xf0\x0b\x85\xf2\x1f\x88\xbe\x18\x0bP[\x83\x8a\xa6\x0e\xa5\
+\x8b n\xac\x8e\xc5\xa6\xa9\x83EB\xcb\xfb\x145f\
+\xe2X\x0b-\xd4R\xa0\xb4\x9b\x97\xd8L>\xa1w&\
+\xbfID\xc3X\x88t\xbaDq\xf6ta\xb1\xd4\xb9\
+\xa4 &A&\x91\xc8v\x88\xf7%f\x81:\xd9a\
+\xa3AbGa\xc0\x06\x82\xf8\x8e]\x9f\xf7\xaa#\xd3\
+h\xf6\xfd[\xe9@\xa7\xb01%\x86\xa3S\xc7\x075\
+_;X\x8e\xa9.\x17\x0e\xb8\xbcPE\x17\xbb\xd3-\
+\x125\x10\x00\xa2q\x92X_x\xd8H\xc6\x0d%~\
+\x93:\xae\x96\xd6\xcf\x94\x9e\x07ulB=\x97\x99b\
+\xc4l\x10}D\xab\x80\x11\x13\xfc\xc7?\xef\xd1\xdf\xc7\
+M\x92\x9d\x08\x1b#\xd4q\x12\x1f\xec\xfd\xb8\xce\xac+\
+\xa8\x980B8(P\x13g}S\xc0m\xe0S\xbd\
+\x95\x9a\xc7\x01e\xc7\xe3\x9b\xe9\xa0X\xc8I{5\xa1\
+}\xd9e\xd5\xfa\x02pE%\x06\xf3%q\x12Kc\
+\x0d\x19=\xc5\x22\xd9dN\x1b\x85\xdb\xf2\x9e\x98\xea\xbe\
+\xa2\xce\x1f\x07:\x14Q\x0a\x1fi!DA\xc0\xba\xe2\
+\xfeS\x80\x82\x00\xd3\x91\xa6\x90!!E\xdd\x1f\xd5f\
+D0a\xf0\xe8y\x0c\xbb\x19\xb9G4\xd34\xd3\xd8\
+\xfdnV.aL\xa0\xf9J\xcc\xaf\x8e\xda\x0eu\xc4\
+\xc9p\xe1v\xb7\xf2}\x8b\x97X\x22%LBdG\
+;I\xd5<6<\x15\x9a$\xe4<\x0f\xda\x1fB\xad\
+w\xe5n%\xa7\xcc\xe1\xe3\x0aBB\xe7q\xa8\xb2\x0f\
+\xb5~I\xcdh\xd3)\xe1\xb3:\xb3\xf1\x9c\xf3st\
+\xd4)\xa4H8\x99\xed\x96Hg\x00)\xcc\x88\x03\xac\
+\x22\xe6\x85\xd6\xc6\x14\x01p$\xba\x14\xca\x00Zo\xe8\
+\xefi\x16s\xb4\xb8D\x13I,\x01\xccT\x10\xc5\x81\
+\xce:}\xb3G\xea\x01r\xc2W{\x16\x15\xe0hT\
+`\x83\xb7\x87l\xdfx\x8ex]0?\xd4i\x8bQ\
+%f\xeb\x01\xd0\xd0\xf0\x80\x8a\xccz\x04\xd0\x91vK\
+\x14\xd6\x148uv\xbf\xbf\xfe\x88\xf2\xa1\xa9\xc0s\xc6\
+\xf3\xcc\xdf\xa3C\xcasGA\xfa\xa6\x9eO\xbef=\
+\xf0|1\x0a\xc0\xfd\xe6>\xd3i4\x97\x97\x95\x93(\
+\x1f\x1d}l\x02)\xf0\x19\x15@\xecp\xee\xb7\x02\x0d\
+a\x1f\xbb\x9d\xd6\xd3n\x12\xdf\xd4\xfd\x0b\xa6\x1f3\x9d\
+\x14\x82\xa8\xb1C\x01\xc5\xa6\x17\x15n\xd6\x07\x80\x07\xe7\
+\x10\x14~\xf6Oftu?\xc2\xa6TbW\xb1\xef\
+i\x1f\x09@D\xcc\x0f\x12\xb7p'\x00\xb0\x81\xb9G\
+\xa7\x9f\xd7\x81\xf8\xe4S\x16i\xbds\xbd\xb9\x8f\x00;\
+C&\x09\xf7\x8b\xe7\x83\xcf<\x17\x88\xc0\xf2\xfa$\xfe\
+\x85[R\x14\xe0\x12\x8dB\xd59\x80 \x18}\x8c4\
+\xa1\x95\x01\xc5Y\xfbY\x14\xf80v\xc8O\x18)\xe0\
+<DlQL\x86\x103\x85Q\xc9l:#L\xda\
+\x87\x11\xeb\x0d\xd7$\xde\x1f\xe72\x80 \xe7=\xa3\x05\
+\xba\xceQh\xdd\xd0\x03\xa0A\xe5GT\x92}\x87\x0e\
+\xa8lP\x01\xc6C\x9c\x99\x99[\xa8\xfePd\x19\xc1\
+\x03\x98\x03H\xd6\x88N\xd9\xa5{\xc0\x17_s1I\
+C<Ov\x85\x88\x8e\xc1\xe4\x8b\xf7c\xbc\xd9\x9d]\
+\x8co.\x13Mc=#\x82\x16\x0d\x02\x13o~\xfc\
+\xed\x85o\x00\xf70\xdd\x00\xa0\xb8o\x88\x90j\xf45\
+Fa/p\xdf\x8e\x9a\xbf\xd3\xa9\x97k\x00\xfbg\xd8\
+\x14\xa2\xc1\x00\x00g\x1a\x0a'Wm#_\x85{&\
+1a\xcb\xf6\xb2\xbb\x09\xcf\x15\x00\x0c\xc0\x8d\xfd\xbd\xa9\
+\xf4|\xac\xae\xfde\xfdT\x08\xaf\xd3\x03\x08\xe4\xd5f\
+\xfe\xed\xf6\xdfg\xf7\x0c\xe2f\xb7f\xf7f\xf74J\
+\xa7Q\xcf\xd0HX\xcb\xa2l\x8b\xcfZT\x06\x22\xe7\
+G7\xa1BS\xcf\xcf\xa4\xdb\xd5\xd1\x05\xd0\x15@\x87\
+=^;\xb3E\xf9\xdc\x94\x18\xd5\x11\x0e\xec\xd9\xdcm\
+\xe7x\xa9\xbe\xaf\x90\xc4\x13aB[y\xfd?\xd2F\
+\xb8\xa8v\xbccTv\xe86\x02\xf3\x08f\xa6\x0dB\
+= \xfb\xe8\xed\x92\xad\xaf\xe5\x9d7$\xbbc\x01B\
+\xdd\xea\x16)\x8f\xb3\xbbwP\x02\xe6\xc4\xc8\x88\xfa\x04\
+{MD\xec`:\x91\xb7\xa2\xe1\x80K\x04\xcc-\x8d\
+V\xb5?\xb4P\xdd\xf3\x99\xda\xd8\xec\xde\xd1\xf5y{\
+\xc9\xc6\xda\xfb\xea9\xe5#\xd6\xab\xa6\xc6\x0f\x05\xaf\xf6\
+iw\xff\x1e\xd5\x91\xea\xf6A\x8b\xb2=\xeelQ\xfe\
+\xfb\x89\x16\xe5\xbf\xefj\xa1\x11\xe5r\x9e6\x7f\xb3\xd0\
+\xeb\xdb6i\x95HD04\xe7\xd0\xf2@\xd4\x18f\
+\x11\xdf\x07\x93\x88s\xc8\x9e\xea\xdf'\xa6\xa2\x00\x8ch\
+D\x88ql\x9ew6\x8a\x84\x06]7s7SW\
+\xf6\xa3\xf6j\x8b\xf2\xdf\xbfd\x91\xf295&\xdb\xc7\
+-\xaa\xa6Qw\x84E\xbd\xff\xb8\x010*\xc1H\x0c\
+Lo\x80T\x5c\x9f\xb0\x9f\xc5\x85 \x80[\xce)\x8d\
+63\x0a\xd2-dQ\x1b\xc1\xcd\xe5\x166\x02\xb0m\
+\x89O\x0a\xc9z)\x15\xe8\xf8~\x9bM\xda\xa3\xda\xe8\
+'%\xa4\x93\xc2\x81\x82\x88\x04\x12\x84\x8d\x02_\x07\x80\
+\x8b],\x92\x16\xaa=@sk\x83\xd9+Q`\xf1\
+\x8f5\xad\x81E\xaaXX\xa8$R\xd0[\x19\xbeH\
+\xb2wA\x03\x80DF\xa2#a\xeb`\x94\x92\x83R\
+!\xc6,\x96\xdd\x90u5\xbb\xf3\x98\xcftld*\
+\x9f\x91\xb8\xd1\xe1\xa23:\xd9e\x9c\xaax!\x05\x8f\
+\xec\xd6\xa2S\xc9\x8c:\xbe\xae\xf6}\x0b\xa7\x19\xbc\xa9\
+\x9d\x0c\xdbSd7I33R\xb1\x0f\x9fU\xd9\x8c\
+\x05\x83\x011\x1f\x89\x82D!b\x84\xb5;R\x02c\
+\xe9\xde\xb2\xa9\xd3\x22;\x97\xc93\x94(\x07\xc3\x9b\xd7\
+YhCYA\x1b\xde\xb8\xaa[Fb\x0c\xd2Ia\
+DG\x82\xce*\xcc\x06:\xfd$p \x88*\xd4\x02\
+y\xd3F\x16\xa3\x0d\x88S\xac\xd4\x178\x01\x1c1*\
+\xb0\x8bE\x12\x81\xd4\xc6\x18~\xbfl\xac\xc3Y\xca%\
+\x5c\xde*T\xe1q\x99\x08D\x13;\x12\xad\x83\x10\x81\
+\x84\xfa\xcf\xf5\x83\xda\xcal\xb1\x1d\x1bs&\xdb44\
+)\xe4n\x11\xc8$\x14h>\x03,\x90\xc8b\x8b\xc4\
+\xdf\x83B\x8c\xe8\x19H,T6\x80/\x01\x0a\xce\x9c\
+8.\xa9\xc3\xbe\xc3\xb7\xe2\x0a\x14\x90\x90Bm\xe7\xf5\
+2\xfb\xcd\xba@\xd4\x85DM\xdf\xcfhJ \xd5\xbc\
+?5\xe6\x83B\x8b\xe8\x89f4\xf1\x89\xf5\x8dg\x86\
+\xda\xd1rdu\x1f1S>\x97\xd6\x07\xe2\x870\x02\
+\x10\xc3S\xa7\x0c\x8d\x8a\x98AS\xe2\x14#\x03l\xe4\
+t\x9c\x11\xdf\xe4\xbaQ\x00a\xb3&\xf1#\xa8\x98q\
+ \xd3\x01%\xd1\x82\xf2&;\x97\x98\x9dT\x22\xe8\x94\
+<\xd3t\xb8\xb8\xc4\xa5\xd5.\xd5g\xf6\xfe\x9b\xb4%\
+`\xda\xcc(ui\x0aO>\xb8?\x00\x1a\xbc?F\
+\x14>\xa8Y\xeb\xcb4rD\x87\xb7\xda\xeb\xf5w\x84\
+B\x9a\xfd\x17\x86\x09\x00\xca\xd2\x83\x99o\x80L:\xc5\
+\x88\xb9\xd1\xc1$\xd3\xa239\xa4.\x03\x5c\x90\x08\x92\
+\xd0\xac! \x06uy(\xe8\x14\x1az=\x1ch\xce\
+3y1\xd9\x13\xce(@gkQ\xa0\xe9,\xffN\
+#\x15\x00\x8e$\xech\xc3h_\xef\x1e\xef\xa9\xe6\xa5\
+\xe8\xec\x0b\x7f\x0a0\xd61\x9dRD\xb9\xd8\xb7x>\
+\xb1\x17\x03\x10\x86A\x04\xd3\x82\xf5\x0c\xa3@\xfbN0\
+\xa0x=\xfc]\xc4\xab\xae.O\xef\xd5\x09\xc8\x00X\
+\xe0\xbepp\x03h\xf1z\xe8$\xf3\xef<7\x8d\x00\
+>>\xb8\xfe\xdc\x1f\xf6C\x0a\x09\x80\x0a\xf9h\xc7:\
+b\x9f\xe1\xfa\xf0z\xd8/(8>\xa8B\x8au\xc7\
+\xfe\xb2\x87\x00N\x12I\xee3TR\x00I\xb4#\x18\
+!P\x22\x12@=\xfb,\x80%\xd4x\xc4\x93\xd0<\
+\x00H\xe1\xdfQ\x9dgF\x1e\xa0\x90N+\xef\x8b\x91\
+>i\xdb\x8c\x0e\xb3H\xa3'\x9c\x1b\x03\xb1\xc8\x00b\
+(\xe8\x07\xf6Rq_\x86\x00\x0d@\x0c\x0d\x09\xf9\x86\
+\xbf\xcd^\x12\xe6\x00\xbf\x8f\xe7C\x09^$\x8c\x00\x15\
+Ut\xaa\xbf\x8e0\x95\x00\xea\x863\xf1\x00\xebh\xf9\
+\xe0\xb2\x035\x9fs\x80\xf5H>\xc7\xf5@\x13\x87\xe7\
+\x8b\x8e\xbe\xcd\x82\xcf\x92\x98\x06\x8c8\x02|\xb1\xee\xd1\
+2`\x1f\xe2\xf5\xc0LP\xc7\x9c\xd1\xce\xa0\xfc\x03\xf4\
+L[\x9e\xbai\x13 \xc0\xfa\x16P\x12\x9aM\xec[\
+z\xfd\xe1W\x8fz\xbd\x80!\xce{\x98\x01!n\x06\
+\xb3\x80\x11\x12\x0a3\x00\x02]\xbff\x97f\xe7f\x97\
+\xda\x90q\xd5\xef\x87\x5cC\xc3\xddrb\x9d\x0bX\x0b\
+@\x017\x1a\xec\xff\x00p\xcc\xed\xe8\xa9\x04\xfc\xfdz\
+\xd2\xf5\xfe\xba\xecu^\x5c\xcf\xd5\x10\xf1\x83\x11v\x8d\
+G}~\xc5\xa8\x8d<\x85\x06\x90\xec\x1e\x11\xa7\x8b\x91\
+\x01^\x97\xce\xc3\x18\x8d\xa2\xf1\xc1(\x88e\xe3?\xa9\
+\x85\xa0\x8b\x0f\x9e\x98\xee\x1f\x004\xfb\x01ZB\xf6\xee\
+\xb7L6\xd7\xac#\xb9\x10\x05S\x0b\xe0\x1e\xc0F\x85\
+[{y{E{E\x02J)l\x19\xb5\x10\xb30\
+\xecw\xd5\xa1\xedf)%\xd9\xcci\xa4\xf6\x98\x1e\xc8\
+o\x7fn\x91\xf6\xdf\xab\xc5 \xd6\xf30>\xb9\xc4I\
+\xe5\xfb\xce\xb2\xa8\x94\xf2\xf6\x81\x12\xf7'{n\xce\x0d\
+l*9gy\x1f0m\x18\x89f?`\xdf\xe6\x83\
+\xaf\xf9l\xa7\xe9\xd45_\xc4f\x8f\xfd\xb1\xdb\xda\x22\
+=\xf7\x9c\xcb\xb6{\xcc\x9d\xf2e\xcd\x8c#\xc69\xb1\
+\x8dEbD\xca\x95\xab\xfd\x93EZ_\x8b\xca\xdd\x81\
+\x06\xe2\xcf\xe4\xee$Q_\x1av\xed\x89%\xca\xebj\
+\xae\xb2(_\xcf_\xa2\xe4K\xed?\xdb\x7f\x1a\x03\x9b\
+\x86%\xd71\xa8\xee\xa8\xecK+\xa5\xbd\xb9\xc4-\x02\
+\xd0\xca\xb9>\x9e\xc1\xa2v\xa8\xc3\xc6R6\xce\xe3\x8f\
+ZT \x10\xbb\xca\x89\x17,\xd2\xe8\x8cF7\x01\xb8\
+\x9b\x15-\xca\xcf\xdff\x91\xf65\x80i\xc4\xaf\x87#\
+_0\xfc\x00Fi\x10\xc10WC\x01m\x9d\x00\x22\
+\x00\xf2\xb0\xed\x94f\x07\xf5Oh}\xe8\xf5\xb6{Z\
+\xd4\xeb\x14\x8c\x01i\x0c\x84\xab\x09\x22\x9c\xda?\xbam\
+,\x12\x03@#\xbb0W\x00\x22\x18Y\x0f\xd7\x07\x98\
+q\xd2\x8e\x98<q\xe3\xc4\x8d\xe6\x17i\xe5\xa5#\xf0\
+\xf8\xb4\x0b\xa9\xe7Br`6\x1b\x940\xea\xcer\x16\
+\xd5F!\x10$\x1dX\xa3\xab,\x12Bh\x85\xe5U\
+R\xb3?B\x05\xd7%uf\x0c*\x1e\xb3\x19tD\
+G_-qX\xf2\xbb\xd7\x06\x17\x08\xc91%\xbe)\
+\xea\xf9\xa1\xa9\x83~VO\x1d\x0b\x9b\x1a\x0ac:[\
+v<\xdd+\xb1\x98]\x92\xed\x07\xea\xf3F\xfd\x9f\xa7\
+v\x88\x9d\x82\xb1\x93DYN\xa8T\x91f[\x8b$\
+\x82G\x02\xa2\xd9\xd7\xe6N\x8b\xf2\xef\xa7X\xa4\x05\xc6\
+\x81\xa8\x03\xb8=\xcd\x22!VJ\x9c\xfc\x803\xe4\xf8\
+n\x8b\xf2}\xabY\x08\x19\xbcQ~\xa9fK\xf8\xa8\
+\x85\x0a\x9fW\xabx\x06\xf7\x87\x82\x04{\x96\xc9\x1bZ\
+\x94\x07\xe3\x14\x8b\xf2\xf3\xd7Z\x94\x7f\x9f[*\xb2\x1c\
+\x14\x1c\xf4$Rt\x16\x11\xaba\xe6\x11\xad\x07\x0eb\
+:\xcdl\x8c$\xec6\xe2\xb1i\x02|\xb0s\xd9\xd3\
+\x22i+\x90\x10Q0\x91h\xf1\xdf--\x9f\x92\x0a\
+K:\xe8<\x98\x88\xf2\x19\xb0\xf3\x17=@7\xa9S\
+2K\xa2\x84YZ?M\xdd\x10\xdcgs5%p\
+\xefL\x94|\xde\x17\x07\xbb\xd9ZMI\x14Xu\xbc\
+\xbb\xf9-\xca\xd7\xa7y\x84}Z\xd8\x10\x810\xeeW\
+b_Q\xeb\xcf\x12\xa0\xb6AJ\xd4\xd9x\xe8\xac0\
+\xd3J\xa1\x88\xb8\x133\xb8:\xb8\xfd@\xbb&\xd9\xec\
+q\xddu t~L=\xe4\x00\x00 \x00IDA\
+T_+qXr\xcb\x009\x84\x0a%*f\xa8\xb5\
+b\xbbh}\xb4ES\x02&\xd5\x7ffw\x83\x8a\x8b\
+\xda2\xa3\x15\x87Z\xa4\xf5\x0e\xe5\xb4\xd3T5\x893\
+\xafS\x07Pt`\xe9\xccaCG\xe2\xc3\xc1K\x07\
+\x8d\xc2\x89\xbf\xc3\xc1\x0b@D'\x90\x04\x8d\xaf\xf5\xf3\
+\xa1\xc1@\xe1\x0e\xb5\x8e\x8e\x01~\xbf\x7f\xb0H\xb6}\
+Z\x1fP\xb4\xb0\xd1A\xec\xc5\xfa\x18\xde\xc9 a\xa2\
+0\xe4\xf5\xa1\x82\xcf\x86\xcfAD\xc24\x83\x12\xa3\xf5\
+\xfa\x99\xbd\x10\xa5\xa33\xfc_\xbd\x7f\x0exTu\x1f\
+\xeb\xed\xaf\xba\x07\xd4\xf9\xfb\xb8\x0a3\x0a\x13\xd4\xc6\xf1\
+\xe1\x1e\xd8\xaaE\xa1EA\xa1\x0ert\x0eX7P\
+Ty?\x88\xec1Z\xc0l6@\x18\x1d;f\x81\
+y\x9e\xd1\xc88D#DR\xd9\xf6\xe3\xf9\x9d\xa90\
+gT\x85\x0e-\x00\x0b\x00\x14be\xacS\xf6!\x18\
+%$\x94tn\x07>\xedQ\x90\x0d\x0br\x12\xb5\x0c\
+0.\x914\x0a\x10O\xc2\x95\x83B\x9a\xdf\xcb\xdf\xf9\
+~/\x1e\x05\xb5/\xec*\x11\xdf\x83\xd9\xc0g\xae3\
+\x092\xcc\x22\xd6\x13\xf7g\xe8\x83\x0d\x90\x02p\xc1\xba\
+\xa2\x80\xa5\x10C\xccl\x8br~o\x91\x003:\xc9\
+\x00\xaeh%\x00 \xb1Np=\xa0@G3\x88\xeb\
+L\xe7\x94\xf5%\x80.\xd4\xc4\xe9\xfc\xd2\x19\x06\x00\xe5\
+\xfdp\xfd\x01|\x01\x08x\xdfC\x9bD\xfe\x9d\xf7K\
+\xc1\x0d\xa3\x81\xd7\xcd\x07\xe71\xfb\xc9P\xbd\x9f\x02P\
+\xd7%\xc4\xde\x00\xd0\xa0\xb2\xf35\xf7\x8d\xe7\x93\xe7\x82\
+u\xce\xbe\xc3\xba\xe0\xf3\xc0\xe5!\x18\x1a:\x17B<\
+R\xf9E\xcc\xee\xe2B\x04\xb5\x9e\xc4\x95s\xe2\x89\xb7\
+\xda\x83F\xa3\x04 \x0c\xc0\x90F\x07\xee-6\xa3\xfb\
+\x93\xf4s\xba.\x01\xd0\xf3>\x99\x15\x96\xd8+\x89o\
+\xdc7\xce!\x0a\xd2\x81J{\x88&\x92\xe8\xc2(\xd1\
+\xf9I\x9e\x15\x05\x15\xc0\x0c\x00\x13\x0d!\xd9\xc9\x06\xa5\
+\x16\xcd\x80=\xc5\xf8A\xb3@\x85#\xa3\x9a\xa3\x95\xb4\
+\xff\xfdT\x0d\x86I}\xa7\x8b\xc2\x8bYt(\xf91\
+\xaaj\x1d\xee\x89\x04 j\xf4\x81\x11\xb7pC\xa00\
+\xd7z\x0a\x86 \xb6\x83\x00\xef*\xec\xba\xf7ZT@\
+\xdf_\xc7\xb1\x09\xc8#\xdfb\x1d\x098\xe8\x9e\xb5H\
+\xebH\x9d\xcd(\xf0\xef\xb2\xa8yH\x8c\xfe\x92\x9f\xc2\
+D\x12S\xa5\xbb\xa9\xc4\xef\xb4\x8e\xee\xad\xf9u\xd8\x1d\
+Z^\xfe\x95\xb4\xfe3p\xb9`\xda\xcf\x00\xba`N\
+\x01d\x89\xea\x1e\x00<\xcf'\xcf\xcbOzf$\xb6\
+ehY\xc0$\x89\xdf\x8f}7v\xe0\xe4\x91\xfby\
+L\x1a\xdf7\xbew|O-\xe8c\xc4P3\xe5\xd8\
+\xc8\x8dW\xb6\xa83\xfbt\x9e\xa3\x11\xf1\x0e\xcf\x04B\
+l\x93Y\xedvQ\x0b\x8d\xe2\xae\x91\xa8\xe50r\xc8\
+\xeb\xfeo\x1fC\xad\x9d\xe1\xf3\xa9s\xc5\xed\xbdw\xac\
+uK0\xa5`\xe8P\x00K3g\xe2,\x8b$\x96\
+\xc7u\xf9\xa1EbfJ43\x1a(\x5c\xe7\xd9\xfb\
+}\xba\x9b\xd6\xa22\x8d\xd1\x02\x08\xc6\xad\x1a\x7f\xe3[\
+-\xaa\xa89\xe2\xf0\xce8\xde\xbc6Z\x1c\xf8z\xa2\
+\xe6\x9d\xdd\x9b\x16\x127\xffD\xcd\xeb\xc9o\x11\x85\x0f\
+\x9bJ\xb9. f>\xb1\xafE\x02,\x04$\x84\x8b\
+\x98\x00J\xdf=\xcf\xad\xb6\xf5!f+w4\xb4\xb5\
+\x82\xe1\xa0\x82:F\x9b\x8cw;Q\x81\x00\x1b\x90\xf7\
+\x11y\xea-4\x8f\xc8Ot\x1e\x86X\xf1\x1d\x16U\
+\xdc\x92\xbc\xc6\xf3\xf2\xaf\xa5|\x8a|\xf3\x10\x8bZ\x07\
+\xd0\xa0n\xff`Q\xbe\x9el\x91\x18\x05j\x80S\xb7\
+\x927s}i|vsX\x18\x00P.\xdb\xe4}\
+\x95\x18\xce\x95\xd4\xa6\xf5\xc02\xd3oR\x22&&\xe2\
+}\xb6M\x13\xd5\xd6\x8e\xdb\xb9\x13\x22+q\xbd\x00\x0e\
+L|\xe6\xe4:{\xdd\xdei\x91\x12,\x10-\x12y\
+|\xb5I\xa04\xbb\x126kP\xc7%R\xe8\xb3\xf9\
+\xeb\xa4\x19\x1a\xa9\xcb7\xcbY\xa4\x8e\x1e\x1dW\xcd4\
+\xbb\x88\xc7A:h~Xg\x15\xb1cq\xcaK9\
+\x80\xda\xdb-*\x82\xcf\xac\x09j\xa9\xcc\xee6\x97Z\
+\xa4\x0e\xba\x16@\xb8'<m\x91\x0aIu\x8aa\x08\
+\x8c\xbfT\xe2\x8b\x15\xe9\xeb\xf6.\xb1\x8f\x90\xfa\xf3\xb5\
+\xb1/\x94\xc4XlC\x9aZ\xd4\xbe\xb2Q\xb4_-\
+q\x98\xae\xe7\x1f\xea\x81\xda\x1cc\x91\x0a\x1b\x1d\x9c\xce\
+\xc0\xe9\xeaA\x88\xbf&\xa3\x16\x13\x17Z\xa4\x83^v\
+vo\xeb\x14\x81\x98#\xde\x81\x0a:\x9d1[\xf0\xb7\
+\xa7\xef\xa73E\x82\x82\xcd\x13\x89\x1f\x89\xc1\x1d\x16\xd2\
+|\x98,`\xea\xc0:+\xe6\xe5\xfa\xef\x92\x8d\x9e:\
+\xfe\x0eDm\x96\xd4\xa8E-\x8f\x83S\xd4yG\x8c\
+\x0fN\xb6\x7f\x5c\xb7_\xaaS\xc7\xc1j\x22%\x7f\xac\
+L\x91\xe8,\xe7Bj\xa9\x84\x84\xc3\x08\x00I\x97\xb8\
+f$\xect\xd4\x1e(\xf1`\xb2\xe5\xa3\xb0\x15\x15\x19\
+\x95\xcf@\x94\xf1\xab\xe5\xefb\xcfF'\x16@\x00\x84\
+\x92\xc2\x81\x04\x0d\x8d\x08\x9b\x05\x9c\xb9\x8aAzg\xfd\
+\xbc$\xe6D\x02\x8d\xd8\x1a3\xec$\x92\xf6\xbf\x7f\x11\
+\x93\xe3\xcfi\xc6\x97D\x88D\xd4\xd2\xff\x8f%*\x1b\
+*\xd9F\xf5\xdd9\x01C$\x84$\x10t\xa4\xb0A\
+\xc4\xed\x031\x1a\x00!6X\xf6\x0f\xb49H H\
+\xdc\x87\x9dSf\xc1D\x0d\x0d&\x0b\x076\xd7\x0b\xf5\
+\xfe\xb9\xf4{^V\xc7qK\x01@\xacC;>/\
+O\xa3\x06:\x10C\x93\xe1\xb7\x96J\xa5D\x96\xd7\xc3\
+s@\xa7\x89\xaf\x87vi$\xec\xd2&\x89\x02n(\
+:\xa6\xc4\x98\x99\xdd\xa0\xa2#J\xb7F\xbf\xae\xe2\xef\
+P \x0f\xfd\xd5\xe9\x882\xbbO\x82N'\xf7t\x8f\
+\xca\x18@m\x17\x17\x99Mu\x00B5\x97\x1d\x1f\xee\
+'q\xbfHTan\xf0:\xb2\x1b\xc8\xab\x09\xb0\xa5\
+ \xa4\xd3D\xa2\x02\xe0C\x81\xc2u\xe6y\xa3\xa3\x8b\
+h\xa3i7|9=\xc7\x14\xc2<_<7C\xcd\
+\x0c\x123~\x1f\x94f\xee\x1f\x85\x12\x7fw+\x01\xb8\
+\x1f\xd1,/\xcc\x08\x89\x11\x06\x85\x9e\x82\x9e\x02\x96\xfb\
+\x0f\x85\x97u\xc8zf?f\x1f\x80Q4\xb0\x0b\x84\
+\x0a\xfb\x96Y\xe5\x0f\xfa\xe7\xfe\xfe^\xd9w\xe2\xe2>\
+\xac\xee\xaf\xb0\xbe~\x18\x00W\x8by\x04#\x107\x0d\
+\xee\x1b\xfb\x0f\x89\x0fL\x1b\x0a9:\xc0\x00\xdaP\x8e\
+y]\x14\xe0\xack\xfe;\xe2h\x14\xfa\xdcw\x80\x09\
+\x98w\x14\xd0\x9cK\xec\xfbC\xd7\x04\x18\x1d\xbc?\x0a\
+^\xee\xff\xd0\xe5\x80\xcf\xb8\x15)\xa1\x8d\x9f\xa3\xf0\xe1\
+\xef\x02\x00P\xf0 2Ga\x05P1\xd4\xe4\x18\xaa\
+\x93\xb3\xeeX\x07\x8cZ\xc2p@\xa3H\xbe\xdbPs\
+\xa1\xc6\x8e\xb6\xb1\xf0\x8eR\xdf1\xff\xa7\x80\x0d\xecw\
+\x19\x19`\xffd\xdd\xe1z\xc2\xa8\x01\x80:\xb6\xbb\x12\
+]\x0c\x11\xe2C,\x92-\x17\x89+\xf7o\xe8\x22\x82\
+\x08*\xd7\x1b\xea-3\xfa\xac_\xee\x97\xc4\x1e\xa3@\
+F\xfb\x88\x19|D\x07\xb9\xdf\x02\x88\xe2\xf5\x0b@\x0d\
+Q,\xdd\xf7\xd8\x87\x98\xb5?\xc2\x22\xd9\xe9a\xf7\x8b\
+*\xfbSV\xaah\xa6\x7f\x97Dq\xb7<\xf0{I\
+T\x91u\xcc\xf9\x040\x09u\x1d\x11c\x007~\x0f\
+\xda/\x00\x5ch?p\xdd\xb1\xcbe\xd6\x99s\x90\xeb\
+\x81\xa8\xdb\xcd&+\x98\xce\x89aa\xce\x88\xd3\x0b\x16\
+uD54u,\xcb\xfe\x82\x80\x85\xc5\xd4\xe0X/\
+\x8d \xb2o\xe3\xc2#q\xe2X\xefhc\x08h\x88\
+\xfbC#\x84\xd1\x12\xce\x0d\x00A\xd6\x03\xcf\x05u\x80\
+\x0a[/\xd4\x8e~\x8b\xf8\xac\x03\x1f\xed\x07-\x9c\x02\
+\xed#\xc3\x93\xf6\xea}\xeb\xf9{\xede\xed\xa5\xc6\xcc\
+\xb3\x09\xfcqy\x8e\xc6w\x8e\xeft\x15u\xeb\xe4/\
+[5J\xda\x8d,\x9c\xca\xed\xcc\x01w\x1d\xbb\xb6\x9e\
+\xbb\xb8_\xf9\xd5\x5cN\xcf\xcb{\x93\xcf\xba\xf2\xb4\xf1\
+\x89\x16)\x0f\x02\xe8\x07\xe0\xf8\x7f\xfd\x18\xba\x17\x00d\
+\xb3\x0f\x00@\xc3teTD\x80*\xeej1\x92\xad\
+\xbalb\x17\x8b\x9a?\xc04p)9+\xec\xf7\xb2\
+\xca\xa3\x16\xc6Q\xb8\xeed\x91\x006\xd6\xb11y\xaf\
+\xae#)\x00[\xedo,\xca\xf7\xff\xbdw\xc10\xaf\
+*c\x1e\xc4\xb9}\xc8\xa4\x83\xad\xfei\x17\xb4(\x97\
+\xe9:\x8b\xaa\x15\xe0\x00\xf1\xecu\xbd\x86\xab\x85\x5cI\
+\x9a\x19-\xca\xcf\xdfeQ\xae\xff\xbf,\xaa\x0b\x00\xa3\
+\xe4\xde\xe6\xbd\xb7\x16\xf2!\xea\xceH\xc2=\x16\xb5\x01\
+\x8bh\x9e\xf1O\x8c\x81\xc2\xfak\x8fl\x8fj\x8fL\
+\xa3\x0d\xb2e\x8fsF\x0d\xc4`(\x98\x16\xc3\x855\
+\x8f\xee\x96\xb6(?\xff-\x8b\xf2\xefG[\xd4\xfc\xbe\
+]\xd2\xa2\x02\x8f\x13\x0bYT\x174\xc4\x00i\x1c\xc0\
+|\x8a\x11I\xd5\xbf^\xafX\xa3x\xc5v\xa5v\xc5\
+\xb4\xfeh\xf0\xf1|\xa9\xd17ybC\x0bu\xce\xdf\
+\x102\xf7\xb1\xe4O\xb9\xbe\xf7b\xfa\x82\xf2\xd8J=\
+\x89B\xf9\xe0\x12\x07\xa9#\x7fCU\xc5\xc6\x97\xd1\x11\
+\x17\xb3\x11\xf9\x98E\xda \x99\xa5\xd3\xacG\xa8R\xa3\
+\xce\xbf\xa6(U\xd6G\xfc^\xba\x00P%\xce\xb6H\
+\x94\x15f\x96\x85\x04c/\xd4<jQ\x91\xebn\xb6\
+\x12\xb3KDd\xefD\xb9\xd7B\x8f\xd1\x051\x12\x10\
+\x87A=1:\x85\x1c`\x88\xdb\x09\x81A=\xd5\xd5\
+P/N\x94\x90\x1f[\xd4\xd9\xb7@\x88--\xdaR\
+\xb6\x8b\x9b\xa6\x07\xc7\x10\xe0\xa9u .P\x0bS\x9f\
+\x0d\xffzM@A\xbab&R*\xb6\xa3\xeb-R\
+\xe2>\xa4\xee\xe2w\xb9\x8c\x85\xec\xb2N\x93\xdax\xb9\
+\xcf\xedgK\xec*\xf1\xc7\xef\xe8}\x1c\xa8\xdf\xb3X\
+*P`p\xacd\xa1\xaf?P7\xb0\x10\xb3\xc9\x85\
+\xea\xbb\x12\xa0!\xd1\xc0\xf6t\x8b\xd4!b\x86t7\
+\x9f*\xad\x85\x08\x8c\x0d({\x9799\xba\x17\x93\xda\
+$Q\xe94\xaa\x81x\xa0oD\xcf\xd5\xeb\xe8\x0f\xe4\
+R\xea\x04\xae\x9aDn`&\x18\xa1u\xeb4\xa3\xa3\
+Y,f\xddP\xe9\x0f\xea\xe2V\x9e\xf2\xd7Y`\x80\
+\x03f\x12e\xaf\x17\xeb\x0013!\xb2\x14>!\xfa\
+\x81\x8d\x0bbTP-)\x04\xa0\xc0\xe2v\xc1L%\
+\x89\x1d3\x89\x14\x08\x00k\x1c\xc4\xb8<\x90\xc8\x03\xe4\
+\xa1%a\x8c\x9f\xafV\xd5\xd1\x98M\xe7\xa0\xa7\x83+\
+\xb5~F9B$\x12W\x05\x12\x7f\xeb\x102\x8b;\
+9\x15n$*o\xfaTs\xa8.\x87\xdb\x073\xfa\
+tR@\x90I\xe8\xb1\x8d\xc2\xbd\x83\x02\x8d\xce3\x05\
+\x1d\x07)\xeb\x90\x0e8\x9dc\x12\x1a\xae\xd7\xa2\xea\xb0\
+\x00\x88\xc0\xc8XL\x07\xef\xc3\x93\xfed\xeb\x82\xd9e\
+s\x7fv\xffg\x13\xf3\xfcT\x9d\xe5\x9at\x82Te\
+\x87\xcc\x04\x0a[D\xbfx\x9e\x00D(\xf0\x87\x22]\
+\x14&$v\x00\x0a\xac\x07\xd4\xa1w\x97\x9d\xdf.J\
+,\x97\xd3u\x06\xb0#\xa1\x1a\xfa\x99s}(D(\
+@\xb4N\x03\xf8 Q%\xf1\xa5c\x81\xfa\xf7R\xda\
+?\xa7\xea\xd5\x97c\xfd\xc0p\xa1@\xc2\xae\x95uM\
+G\x83\x84\x07\xbb+\x12\x1ff\xfa\x01\x90(\x14y?\
+t\x08\xb9\x8e0L\x1e\xed\x19\x11\xd1\xa9\xe7\xbaq?\
+f\xea5=\xa2\x90\xa3\x90\xa6\xf0\xa3\xe0\xa6C\xfa\x82\
+EZWt\xe8\x18\xa9XM\xcf7\xcc(\x80?F\
+\x07\x00\x82y\x7f\xac\xbba\xc1\xc4\xfa\xa5@\x9c1\x98\
+.\xfd\xeb\x1fv\x90x\xfe\xe7\x1d\x88\x02~@\xfb4\
+\x22\x8e\x00u\xac\x1b\xce\x8fi\x94\x90?\xaf\x0e8\xc0\
+\x06\xd7\x91\xebC\x07\x92\xaf\x87\xa3&t\xf4\x00\x82`\
+*\xd1I\xa1\xb0\xa7\xe3-UjO\xe3\xf7L\x9do\
+^/\xcf!\x0c\x05\x98^\x00\x00\x00Hz]AE\
+\x07\xe0\xa0\x13G\x01\xcf\xeb\xa4`\xe5\xf7s\xfdXO\
+|\xe6\xef\xc0\x80\xe0\xfe\x01\x00 *\xa8\x8eq\x00V\
+t\x98X\x8f\xc3\xe7\x9b\xcf\xcc\xb63j\xc7\xdf\xe19\
+'q\x83\xa2\x8f\xe8\xad\xa8\x9fF\xc1m\xff\x99\xf2\x1d\
+\x01\xe8\x01\x10Jk\x06[L\x98\x0c$\xc0\xd1a\xe7\
+\xfdp\xbdpc\xe1\xfa\x08\xf0\xed>`Q\x81\xe3\xd1\
+s\x16iT\x93<\x8f\xeb\xcf\x08\x1fb\x8d\x00j\x9c\
+o<\xb7\x14\x84<\xff0C`\x92\xa8\xc0\x0d\xf1H\
+F\xda`\xc8\xa83\x1c\x7f\x87\x04\x98\xd1\xb6)\x16\xb5\
+\xa3\xd9m$U~i\xeeD\xdeJ\x1e2\x1e\xbd\xe9\
+\xe2x\x9a\xd1v\x8d\x8c\x8d\x120\xcb>\xde\xba\xa1\x5c\
+\xd5\xba\x00\xe8\xd2\xbe\x18\xeePt\xaeQ\x1b\xe7\xfd\xa9\
+\x10\x87I\xd1=\xda=\xe6\xa3L3:\x07\xcc\x80\xea\
+^-}N\xd9V\xca\xd5\x80}\xd1x\x7f\xce\xfc\xdb\
+F\xa3S\x00*\xb8y\xbdwp\x9e1\xf2\xc6\xebP\
+\x81\xefbp\x07\xa6Q\x0c\x98\x1bjX5\x9bXT\
+ )\xa8\xda[\x95\xb0|r\xda\x12\xa5\xe0n~W\
+\xe2\xe6\xc4\xc0E\x94\x0f&\x06\xcf\x01\x00\x14\xaeXf\
+\xcb\xfdZe\xa2\x96\x9c\xe5-#\x95\x88\xca\xb5\xeb[\
+H\x9c\xf6\xf1*\x1e\xe9\xbb\x98=\x17\x07\x94\xf8\xbc\xec\
+\xd6\xca\xf5\x1a/X\xe2\x84\xba\xdf\xf8\xc8\xd6\x93\x89r\
+\x8d\xc87ZR\xec\x9b\x06O\xfd&10\xf5>\xd0\
+\xe6\xe1\xf7\xb5OXT@\xc9\xab\x903\xdf2\xaaW\
+\x9ddF\xff?\x85?\xdf\xcfy\xc3\xf3\xc3\xb9\xc7h\
+\x86\xfd\xef\xaf\x92\xeb\x06\xe7\x99\xd6ch\xd4\xb0\x7f\x90\
+GP\xd8\xab\x91\xd9\xb9\x0f\xbc3-z-\x06l\xb7\
+i\xdc0R\x80h\xa6\x80W\xea\x95x\xbelWz\
+.im\xb0\xff\xe1\xae\xa0|v|\x89\x85\x8f\x92\xb8\
+\xebFy\xba\xfc\xf9\x0aJ\xbb\x18\xe2\x9c{\xcd\xc2\x16\
+\xe5\xb2\x1ck\x91\xc4:\xcd^}\xf6\xeaF\xd5,]\
+b)\xd5\x8fwH\x9c\xef?\xbe>\xdc.8\xb4\xa6\
+,\xcb\xbe\xac\xe6\x93\xed\xd1\x16U\xbc\xba}\xa6u\xd7\
+\x02\x1fu\x9a\xc5m\xfa\xdc.\xbe\xfd\x86\x85\xab\xfc\x7f\
+\xbc\xfd\xb83 |\xdf,U\xf2\xc2\xdd\xc2I\x13\x8d\
+}L\xfbhh\xbci\xa4\x13\xa0\xb1\xbb\xdc\xa2|\xfd\
+m\x8b\xe4&\xa1\x8e\xbf)\x0b\x98\xb6\x00\x0c\x8a\xd0$\
+`\xb4@.\x09\xa1\x09\xa0\xce~4\x02/\x18\xfd\xc4\
+\xf61FXaB\xb4\x1bXT\x1b\xc7\xc9\x13gX\
+\x08\xc1Y&\xd9\xe2ic53\x13\xb33\xe1\x06:\
+\x85\xbc<P\xcd\x9fK<*\xf5{S\x9b\xdc\xb3\xc4\
+\x1eu\xc3\xe8\xb6\xb2\xa8\x94\x22:\x93P9\x98E\x09\
+5S\xbb\xa1s\x0a1\x7f\xb7\x0e\xdcE\x94\x8f\x8eR\
+\xe1b\x0b\xd7l1\x0e\xb3\xa8\xc8J\x14|\x96V\xcc\
+U\xc5O\x02i\xe1\xc1\x95ob\xf8\xc3\x1b^\xf6?\
+\x89j%\x11\x95\xf6E\x8btcU\x00\xa0F\x19\x1b\
+0\x89\x1b\xf6xP.\xce-q\x9e\xece\xbeS\x11\
+#\x9bH\xb1\x0e\xf9h\xba\x12&6\xe5\x1fI\xadU\
+\x07\x97\x03\x1b\x1b\xa4\xc4\x0c\x11\x0b\x89\x18\xf9\xef3\x06\
+\xc4\xefK\xdcRm\xfc\x9a+-\xd2\xfd\xa4\xb3E\xc7\
+\x9d\x04[\xf77\xec\x15\xad\xa0\x9aRm\xef\xda\xeb-\
+4\xab\xf2-m\x84\xd7\xc9^\xe6\xd3J\x80V\xd4\x8c\
+\xdd;\xa5\xc5\xf0\x89\x94Pq\x80\x0fm\x92\xd8\xd0H\
+4\x84\xd86\xb3Y\x94\xbf{\x83E\xed\xa0b\x1f\x83\
+\x0b\x84\xe3X\xb7\xd7\xc4\xc7\xc5\x88\xee\xd4F3N\xeb\
+\xa0\x0b\x92y\xbf\xe1\xd2\xe1\x01\xb94\x95\xdb[\xd2\xeb\
+\xa5\xc0\xb02d\xaeDYf\xe3\x10\xf0\xe5\x00\xd4/\
+\x85D~]\xd4\xb4o\xab3\xb6\x8b:\x0d\xcb\xa5\x84\
+\x11\xb5\x5c\x15\x8a\x81\xbc\x7fF\x09\x0d\x9a\x0e?\x92_\
+9\x07\x0d\xaf\x83\x19\xa5:\x13\xd9\x1f\x0c|\xf05\x85\
+\x1a\x9faV0\x83GB JY\xa8\xba3r\x22\
+\xa4\xbf\xbb\xc2\x22]G^\xbf\x89J\xed\x90\xc4\x07\x01\
+\xa0\x8c\xa9\xb2W\xd5\x92\xf02\xeb\xcfi\x9dq\xc0S\
+\x90\x930Qx\xd9\xf14\xbd\x00\xa3\x17%r\x97f\
+\x1cA4\x19\xe9\xf1>\xef\x0b\xe9~\xf2~\x1e\xb3H\
+\xe2Utx\xf9LG\x8d\x83\x92\xc2\x11\xaa\xe8\xb2\x12\
+\x07\xe3y&a\x1aR\xe17\xe8\x13\xe0\xf2=\xbd\xa8\
+\xd7k\xfdA\x03\xa0\x03\xa2\xee\xd4\xc5U\xe4\xcf\xbaI\
+RG\x1f&\xf2\xc3Yz\xee\x13\x85\x08\x858\x09\x13\
+\xef\x83\xc2\x13\xe0\x80\x02\x90\xce\x01\xeb\x9a\xe7N@K\
+t`x_\x14(\xfc<\xaf\x0b\x7f\xf6\xe1\xba\xe3:\
+\xc0\x94@E\xfdI1D\x98\xe5\xff\x84\xb4YX\xcf\
+\x9c\x03\xd8\xb6\xf1\xfe\x18\x89\x01\x08\xe2\xfeP\x80\xa3\x1e\
+/@\xab{\xd8\xe2\xed\x80*@D\x07\x15\x92\x82P\
+\xda\x08\xdd\x83\xfd\xc8Fh*\xdc\xa7}\x1d\xe0c.\
+=o\x00\x13\x88\xc5\xc1\x88\xe0\xf5\x02T\xaf-\xfbD\
+\xc4%\xffj\x91(\xe2\x00\xafZgQ\xe02\x1a\x01\
+\x801\x18\x81\x8b\xf7\x0f\xc5\x19\xa6\xcf\x0b\xa2\xa63\x92\
+\xd2\x85KA_0\xa1\x0e<\xa3E\x02\xf6\x00|\x00\
+\x04\xe8L1CJ!)\xb1!\xb7/]\xa3\x8e\x9e\
+\x04ev\xa0\xcd\x12\x94y\xd6\x01\xaa\xf6tDx\x9f\
+\xac\x17\xee\x07\x1dC\xe5\x09\x01t\x00\xa8\xc3 \xe0\xfa\
+r\x1dY\xaf<\x1f\xfc^\xce7\xd69\x00\x01\x0cE\
+\x0a~\x12`\x9e\x03f\x9e\x87Z\x08\xecW\x009\x88\
+\xadQ0\xb1\x1e\xe8\xa82\xfa\xc7\xeb\xe3~\xb1^x\
+N\x87#\x0d\xbc^\x9eo\x9e/\xfe\x9d\xd7\xc1z`\
+\x7f@\xdb\x80\x06\xca\x16\x16U\x8d\x9bB\x9b\xbc<\x5c\
+b\xbe\xdd'\x8a\x00\xf2t\xba\x18\xc9\xeb\xce\xb0HT\
+u\x1a\x14P\x849\x0f\xd9\x7f\x00\xf4\x18\x99`D\x04\
+{Bf\xa49\x07~-\xc0\x90\x8e2\xd7{hs\
+\xc9\xba\xe2<\xe6\xeb\x5cHMJ\xa2\xa3\x88J2\x8a\
+c3\xea\xdfM\x14f12c\x04SZJ\xa3{\
+z\xcax\x8cl\xaa\x93\x1fv\xb6\x9c\x9f\x9b\x8f6s\
+\xc0\x8eB+\x03\xb5\xb3\xa4\xfdR\x8d\x8d\xa1\x9dfh\
+\x5c\x1c\xee\x11\xa3\xb4\xe1f%1\xc5\xb8\xbf\x96\x9d\xac\
+\xea\xf9\xedW\x9b\xaf\xaa\xe1\xb1\x933iz\x8d\x8c\x0d\
+{\xcd\x87\xd0\x80R\xa3\xce\x14\xae\x5c\xe3\x8aF\x0f\xfb\
+\xee\x90I\x05\xa3P\xfb\x0b\xb3\xda\xa3?[T\x8d\x81\
+\x98iV~\xd5\xfc\xac\xc4OS\x87V\x80I\xf3\x8c\
+E\xf9\xbcT\x89%\xf5u\x02R\x9a\xdd,\xbc\xb1\xe1\
+3\xf9\xee\xde\xb4G\xd5~\xb1j\xc2\xea\x89\xc8\x07Y\
+\xd7\xe4!b\x9cu\x17Y\x94\xcf_\xb0(\xaf\xfb\x0b\
+%\x0e\xa8\x9d^\x0a\xc4\xc8\xf3\xb5o\xb5\x7f\xb1\xa8\x05\
+:y\x033\xf00\x11h,b\x9b\x1d\xcf\xe1\xe4\x9e\
+\xf2\xed\xab\xfa\x1d\xc9\x9f]\x8d\xcbf\x8aE:\x9fa\
+\xc2\x18\xdcv^\xea\xbc\x02|\xb2~\xb2\x06R\x9b\xf2\
+\x02\xf2\x1a\x18X\xbc\x0e\x5c2l\xa6\xdbF\xb0\x0f(\
+\xf1\xf9d\x1bg\x1a\x0d\xa93\x1f\xf9\x93\xae[\x14\xfe\
+\xc6<}\xa02\xa2\xc9\xaf\x18\xa9\xa6\xd1\xd0\xeegQ\
+\xfe\xfb;-\xaa;N)w]L\xce\x1bv?N\
+\x14{Q\xeb\xfd\xd5\xbf\x91\xc435B<\xfaE?\
+\x12\xdem+5|\x019\xa3'z\x86\x0dnsn\
+\x97wLe\x04\xb7\x7f\xb4\xa8@\x80k,\xbd\xe1b\
+\x91&\x17i\xf5\xdc\xacV\xcf\xf9\xbf\xbf'Q\xf19\
+\x1f\xacZ\xb8\xb3\x02\x02>\x90\xf4\xa0\xc4\xd1\x0fM\xae\
+\x03G\xb6G\xb4G\x88)p\xab\xdf\xe7)\x96\xd7\xc7\
+\xe8)\xf9\x89\xc4\xb6\xa9\x8f\xca_/\x91FE\xd4H\
+bD\xab}\xd5\x22\x15\xe24l\xa9\xc7h\xd8\xdc,\
+\x8d#\xad\x87\xb0_\x95\x0dh4&\xb9\xaf\x1a\x15\x82\
+\xa9\x85\xa6\x06\xaf\x83F\x1a\x0c\x0bF\xbd\x01\x16\xda\xbf\
+Y\x94\xe5\xed\xb3\xef_I\x9dK\x9b\x15\xb0N\xdc\x0c\
+%\x8cb\xb1\x80E-D}\xb6\xe4;\x9a\xb58+\
+!\x1dt:QY%\x81\xbc\xdaI\x84\xfd\x83\xb1b\
+\xa2pq@\x9bt\xcd\x13IdL\x9dH\x17\xef\x9b\
+\xa6R\x80\x9bY-\xca\xdf\xdd\xb5\xc4g\xd3\xec\x09\x94\
+^\xfc\xd1M\xedp\xc1\xd4)\xa3\xd3A\x81\xa3\x19\x0a\
+\x1f%\xd8-\xa9eB\x09\xa6s\x07E\xcc\xd4P\x7f\
+\x91\x0e@|\xea\x99\xb5\x95\x9d\x9a#\xbe\x0b\xd4\xd9\x12\
+f\xcf|\x96\xee|1\x03.\xeb\x0bW?\xc0\xcb\xfb\
+\xb5B\x12\x91?\x12\xa1\xe6\x07%N\xad\x1d\x15\x9f]\
+Z\xbe\x8a\x08\x22\xd6\xd3>U\xe2I\x8d(\xdc\xa1Q\
+\x83+\xd2\xf5\xa5#\x03u\x9b\x83\x0aj\x1c\x07\xbe\x12\
+\xff\xe6 \x8b\xf2\xdf\xd7\xb0(\x0b\xe6+\x16\xe5\xf7\xcf\
+eQ\xf6\xab\xed-\x92\xd8\x10\x05\xbef\xe5#\xf1\xa3\
+S9\xf0\x1b\x7f\x0b@\xf3\xaeTh\xf1!\xe4\xd0\x99\
+\x0b\xd7%\x91Iu\xf8\xc3\xae\x0d\x1b?\x12`:A\
+lp\xf7X\xa4\xdfO\x82O\xe2\x22@\xc0\xaf\xd3g\
+\xd2\xf7!\xbef3\xef\x97\xe9 \xbc!!\x9cV\xf6\
+}(\x15\x06\xd8/\xa9\x00@\xdc&\x0a\x17Q\xc2\xa1\
+\xde#\xc6\x13\x94AQ\x81\xbb?\x0f\xd4]\xd9\xb0m\
+`\xe3\x80:\xb2\x12\x1d&f\x97\x958u\xa7X$\
+J\x1d\xb3\xda\xcc\x8c\xd2A\xe4\x80e\xd6\x1e\x86\x05\xd7\
+\x0f\xea5\x09&\x0c\x0e\xcd\x94\x81\xb4\xc6L\x1a\xcf\x03\
+\xd7g\x01\xd7\x09\xefg\xf1\xeeI##\xccxI\xdd\
+6\xee\x03\xaa\xd8F\x1c\xde41)\x04\xc8\xf9\xdd\xfc\
+`\xfa{\x88\xb6 z\xc5\x07\x88'j\xcf\x880\x92\
+\x88\xe3&\xf1\x1eQU\xd5y\xea~\xd9\x1f\xf8\x91\x18\
+\x91\x882#LaA\xc1B\xe7IL\x97(<m\
+\xe2\xfc\x8b\xa9 \xd0~\xe2\x00\xd9\xca\xa9\x83H\xc2O\
+\xe7\x8b\xce+\xeb\x93\xaf\xd9\xb7H\x04\x86\xea\xee\x14\x14\
+J8\xcc\xb5\xde}\xeb)0(\x08\x11G\x03h\xe1\
+\x00\xd3lv\x142$.\xcc\xea\xf2\xfcr\x9fH\xe0\
+\xe9\xf0\xd3\x89\xe0~PXA\xc5]A\xb6|k\xab\
+\x03\x0b\x05\xbc\xd3>\xc0z\xd4\xf5\xa2\xa3\x18\xcf/\x80\
+\x156\x87\x8c\xa2\xd0A\xe6~\xc9\xdd\xa4\xac\xc9\x1e \
+m$\xa2\xb9\x87\x12\xa9\xfdu\x9d\xd0xP\xe7 4\
+G$\xb2\x16\xfb\x99\xba2!\xd6\x06\xe3\x86\xeb\xc6u\
+\xe1\xfa>\xab\x8e?\xeb\x0f\xea1\xeb\x87\x02\x8e\xfbO\
+\xc2G\x02\x888\xdc\xba\xbaN<\x87$.\xdc_\xdc\
+d$\xf6\x13\xfb\x0d\xeb\x02\x80kn\xdd\x7f\x12I\xd6\
+\xd5k\xfaw\x0a\x81\x7f\x8a\xb1\xc1}\xe5\x9cf\xfd\xd0\
+\xf1\xc7mb5\xad\x13>(\xd4x\xdft\xe8Q?\
+\xe7\xb9\xa1\xb3OG\x9c\xfd\x92Bm\x0e%\xfe\x9au\
+\xe4y\x0d\xc6\x0f\x80\x00\x9dh\x80\x0c\xdd\x87\xf8\xbd\x14\
+\xde\x14\xfe<\xaf\x00Kt\xd2\x19\xb9\xe0\xf5\x02\x90\xb0\
+\x1e\xf9=0\x1a`\x08P\xa8\x92X\x03\xe8\xa0M\xc2\
+\xdf\x19h\x05\x04\x00@\x02\x0f\xf0\x02\x80\xc1\xfd\x1b\x8a\
+\xe3q\xff`\x06\x0d\x01N\x18,s\x84hf\x7f?\
+\x10\xe9\xc3\xbe\x18_\xe9S\xe4\x86\xc0\xeb\xa0\xb0\x00\x98\
+G\xbc\x91\xe7\x8e\x82\x9b\xfda`/\x1a\xb3\xf0\x8c\xde\
+A\xf1\xe69\x19\xaa\x9d\xf3~\x01\x00\x01\xba\x00\x88\x00\
+hX\x7f\xfc]^\x1f>\xe6\x88\x17b\xcf5\xd4x\
+A$\x99\xce\xfd\xa3\x16\xf52\xd31#\x8f,\xd9Y\
+\xef\x0b\xae\x91\x00(\xef\xccN\x87\x98\x1e\xebC\xa3\xa8\
+!\xce\x86\x98`e\x10\xf5\xf7\x97\x84^j\xea!\xfa\
+\xf7#\x8b\x048\x01\xec0z\xa1Q\x00\xb4\x85\xc2\xed\
+\x84\xfd\x15\xa0QLT\x801\x0a]\xe7[|\xd2;\
+\x8d>\x03\x1d\xf7\x85\xf3D\x00C\x88\xc0=bQ\xaf\
+7\xb6qa\xa7&\x8d\x83ff\x0b\x89\x8a\x1d$\xf1\
+\xb5\xf2\xfa\x9a\xc3K\x1c\x91\x80\x01s\xc7Y9\x8d\x0c\
+\xa31\xf0\x9f\xe6\xb5\xe6\xb5T\x98\xcc Ur\xa8\xe7\
+\x8c\x8e-\xac\x86\xc9\x0f\xa5\xfd\xa0F\x18\x8d\x1e\xdc\x03\
+\xba\xcd,\xaa\xe6\xd0\xf8\x5c\x8b\xcaH\x81\x09\xc3\x08,\
+n\x1d\xdd\xd8B\xa3\x88\x8fh\x04 \x8d<\xc6(\xd6\
+\xc0\xb6\x93\x82\x16\xd7#/\xac\xee\xaf\x8cFw\xfd\xd9\
+\xbd\x8a\xa47g\x968\xab\xee\x0f0\x9f\xdb\xa7-\xd2\
+\xa8\x07@=\xf9'\xebL\xf9\x0dL\xe2\xb0\xd9\xd4\xba\
+rf\xb0Q\xf7\xbfkQG+aNE>xv\
+\xef[\x1f\xf9\x1c\xe7\x19\xa2\xaa0Q\x94/\x05#F\
+\x8c\x80\xf6I\x0b\xd5\x19v\xfd\xae\xe9\x9f?\x1f\x01(\
+\xfbI{\x9bE\xaa\x83p\x1bA\xa3\xe0b\x8f\x00\xee\
+]\xbc\xf1\xd6\xba\x1e\xa3\xb1\x0c\x93\x82}\xf4\x89\xde\xad\
+\xab\xe4\x96\xde\xa0\xc5N\xb3}G;M\xfb\x0e\x7f}\
+\x93\xed\xf5\x85\xed4\xee\x0f\xeb\x97|\xccF\xb8\x0fm\
+\xbe\xdc\x1c\xea\xf5\xe3\xb4\xd6\x98\x0c\xdb\xd55GkX\
+}\xd5\x9dP\xd6\xdd\xb7=?\xdf\xdeG6u\xfd\xbb\
+\x0fw\x1f\xe9\xca\xfdj7\x93;\x9a\x01,\x07$\xfb\
+V:\xeck\xc9\x85ML\x98\xf6\x04\x8b*b\x1e\x9f\
+%\xa2\x8d8p\x8c\x1c\xa8a\xdd-jQ\xf3\x05\x1a\
+\x1b!B\xcfH'#\x18h\x04\x88\x89\x19\xdat\x97\
+X\x94\xcf\xff\xb5(\xafg\x06\x8bj\xb7\x1eL\x19\xdd\
+'\x98\xaa0\x82'\xc7\x8c\x82\x15\xd6\xbb\xd6\x99m\x17\
+\xb5\xda^H\xf1\xa2B\x98N*\x9f\x9f,Q\xdeP\
+\xbb\x8d\x85D\xf8\x8eI\xb6(\x88\xf01\x0b#q4\
+\xefxOWg#\x9c\xf2\xb1\xad\x1e\xac\x974\xeb\xb4\
+I\xf5\x93\xf4\x82x\xadj\xdf\xe6\x1d\xc8\x9d4\xabq\
+j\x9a\x89\xa2\x90Q\x82\xcc,OP\x82)\xb8\xee\x9c\
+\xd4\x8bl\x192\xf7p\xa2@\xf3\x80\x98d\xdc\x16\x89\
+\xda\x05\x90\x01\x92\xab\x83!T\xf9\xf1\xdb\xd5L\x90\x11\
+\xb0\xfc\x80\xb2\xce\xc2\xf2RY\xfcBU_\x8d\x04\x06\
+\xe6\x816\x82f\xfb\x12\xdb\xa9\x83\xf4T\x9den\xce\
+\xb2H\x05<\x075v\x1e\xa2\x96\xfa\x01pF\x05\x1c\
+\x1cy\xfdIJDP\x09%1\x82\x92\x8d\xbf6\x05\
+\x92\xf5\xd3~\xdcoL.\xe68\xadE\x12\x9f\xe0A\
+\xb3\x19\xaf\xbb\xf5ss\xa4\xc4nyw\xe4\xae\x1b\x1a\
+\x09\x00}x\xbe&\xe1\xa1\x10\xe2\xfa\xeb\xfb\xdc\xbf\xf3\
+OI\x85\xdf\xde\xc5|B\xb4oK\x09/\x05\xbb\x89\
+\xf6\xad\xaa\x99\xb3\xeb\x12\xe5\x11\x0a?\x89\xa4\xd4\xe6c\
+vt\x03\xef\xe5\xf6\xc8\xfe*5A\xf6\x8e\xc9\xe7\x85\
+\xf0~G?7)Q\xe38\xb0\xe8\x10\x19\xf0\xb4P\
+\xfa=t\xbaI\x18I\xec8\xc8\x11}\x93X\x09\x9d\
+\x8cP\xf1\xe7\x01GT\x0f\xd1D\x12OT\xa0\xb9\xce\
+P \xa1\xfa\x91\xf1\xd0\xd9\x1dRWI\x98H\x1c)\
+\xd09H\xce\xf4\xa8*\xdd\x9a\xc1\x0c\xd1\x1eQ\x9dC\
+]\xf4$\x8b\xca@\x89\xd1\x13\x0a^fn\xe5~\x81\
+\xedK\x14\x18V\xa6>\x98:!$2\xd83\xd2!\
+\x5c\xc7\x8d\x83jA5d\x92\x80\xbc\x93\xe8\xaf\xa2\x91\
+\x11\x12L\x12\xfe\xe7\xd4i\xe1\xf9\xb8M\xf6@t6\
+\xb1E\x03@ \xd1f\xdd\xcd\xa7\x19U!\xb6\x00I\
+\x01pd\x9b\xd2+\x9cZy\xb7\x17\xa8\x88\x8a\xf1w\
+I\x1c\x01\xd2(\xf8\xe9\xcc\x92\x00\xf3~I\xe4\x00\xbe\
+H )\xd4\xf9\xbd\xdco\x18\x0c\xfc\x1e\x12k\xde\x17\
+\x80\x02\x85\x0a\xb3\xd5\xec\xdbP\x9c\xb9\xae\xbc\xfe\x87\x05\
+,P@\xfeY3\xf0\x00\xb10\xa3\x00\xf4\x98q\x05\
+8\xd8\x5c\x00\xc4\x14u\x80\x19\xe5X]\xcf\x0b\x05\xa1\
+\x80\x04\x9fM_#\x15\x98\xa8\xf1\x22\xaa\x89\xe8\x1c\xeb\
+\x9e\xeb\xc8\xfb\xe7z\xd1\xb1d\x16z\x07\x0b\xdfG\xfa\
+\xfd\xf5\x15]w\x804\x0a\xf8eU\xd0/\xae\xaf)\
+\xf4\xb8\x1f\xf3\xab\xe0\x05H\xe1\xba\xf2}\x03\x0ar\xdc\
+w\x9e_\xad\xa7(\xa0T\xa0\xc5>\x05\xa0\xb7\x9dF\
+\xcf\xee\x90\xa6\x8d\xf6\xcd\x0ej \xe7\x0b\x05+\x85=\
+\x94_\x00\x80\x09\xbd\x1e\x0a\x16\xd67\xeb\x87\xf7\xaf\xd1\
+\x9a\xb0[CD\x11F\x1c3\xff\x00At\xc8)\xc0\
+\x00 \x87\x858\x7fo\xa0u0\x9c\x01\x8f\xf3\x92\xeb\
+\x08\x00\x8a8\x1e@\x16\xf7\x89\xfd\x80s\x8eQ\x00:\
+\xf8\x14\xf44\x1e\xb8N\x83\xc25D1y\xbd\x00\x10\
+h \x00\xfc!\xf68\xb0\x19\x0c\x80g\xe8\xde@\x01\
+,\x11\xde\xb0\xbb\xd3\x8c\xec\xdb\xd6/#%\x9c\xff\x1a\
+a\x09\xcd\x09\xde/\x05'\xbf\x97N!\xe7\x22\x80\x89\
+F\xe6\xba\xaf[$\x1bP\x9d\x97\xb8\xact\xcfY\xa4\
+\xc2\x9f<K\x1d\xfd(\xe4\xd4\x89\x8b\xc2J\x85\x83\xdb\
+\xeb\x1e\xf5\x7f\x10\xfd\xe5>1\x1a@A\xc2\xa8\x07\x00\
+.\xe7\x85\xce\xcf\xe8\xcc\x8a\x82\x1c6\x89\xd8\xa4\xe2\xea\
+\xa0\xf7\x1f#\x97\x1a\x19\xe4<rW\xa6\x7f'\xe0\x81\
+YiD\xf2\xa6\xb2H\xb3\xff\xfb\x8d\xf65-\xa9\xf8\
+y\x89\xa8\xc5\xfd\x87\x99\xc2}\xe19c\x9fb\xa4L\
+\xfb^\xcc\xb23\xaa \x8d\x83\x18\x01\xe4y\x84\x11\xc7\
+s\x05\xe0\xc7\xfaD\xab\x00*\xb0\x80\xf3\x92}^\xeb\
+#\x00\x14\x987\xe9|e_\x22_\x12\xc5\xbe;\xd6\
+\xa2lOKZ\xa4\x0e&\xeb\xde\xfa\x8c\xbf\xaab\x9d\
+\xcdM\x16e\xfb\xf8\x80E\xea\xf4\x9f[\xc2\x0a\xfe\xa9\
+J\x94\xf5\xdc\xbc\xd1\xfc\xb7\xf9\xafkR\xb8\xe6\x95\xdb\
+\x8b\xbf\xafjP9%\xdf\xea\x8a\xeb-\xaa\x96D\xbc\
+\xdf\xe9\xb4\x1f\xa0-tt?r\xe6L\xd7\xdf';\
+\x5c;\xb5oMZ\x01\xe4!\xd2\xa4pw\x9e\x8b+\
+\x83\x18\xdfyo'\x1e\x99\x00M\xee\x9b\xed\xe6\xaf%\
+{\xe3Q\xf8\x1d\xbdu\xc4\xca\xb2\x87\x7f\xa8!uE\
+\xd5Lp~\xc6>\xe5\xef~\xbd\xc4\xd7\x92f\x9a\xb5\
+\x0d\x1e\xab#\xd3\x8c\x08z{\xf1\xb3\xe9\xf9\xb6\xacc\
+\xf3*b\x1b\xccek\x1b\xed]5\xcb\xba\xed-\xf4\
+\xfc\x8dTP.\x93f\xf4W\xb0H\x05\xe7\xab\xbd\xbd\
+bw\xa6Ey}7Z\x94\xcf\x1f\xb0\xa8\xf7\xa1\xdd\
+\xcb\xa2\x8a/G\xa7]\xc0\x1a\x8c\x0c\x0a\xcb(\xc0\xc5\
+\xd4m_\xb6H6v\xaa\x93\x10}\xf4N\xf9lU\
+C\x00& 3\xf1\xa5\xfcu\x86^\xf71\x8d\x16\xe8\
+\xba\x94*\xf3\x13\xad\xd5=7I\x5cz\xe1~\x7f\xef\
+\xbe\xdd\x8bB\x86M\xfa\x9a=sm\xe2+\x13_\x9d\
+\xf8J\xb5\xa7\x87\xea\xce\x08n\x8c(\xdcY\x9e\xaa;\
+S\xbe\x84\xb6\xc9\xcf\xba\x9fv?\xf5\xc2\xf9C\xed\x87\
+\x1cp\xeb5\xe7h \x03x\x00\xd0\x8b)E\x03\x95\
+Q\x01\xf2\xc0\xe8\xecK|4\xdc\x9d\x10sE\xac\x0f\
+\xcd\x0c\x80!\x98/0\x0c\xc4\xa8\xc7.>\xbe\x9f\xba\
+E\xf6\xed\xe1n# \x17\xbb?\xb7\xab\xb4\x11\x87\xd5\
+-R_\xd6\xffO\x97\x90/\x12a+\x03\xce\xd2\xc6\
+h\x1d\xb3\xc5K\x94\xc4\xba\xfd\xb1EB(\xb0\xe1\xb0\
+\x99\xa0K\xca\x1f<\xdb\xa2\x22j\xdd\x1f,*\xb5\xd7\
+\x91'C\x1cO)aj\xc8\xffc\xa1\x855OE\
+\x10\xf1\x97uQ\x89i\x12U\xde:\x22\xdb\x09A<\
+1m\x5c\xa8\xc0\xda\x03\x96\xd4\xb8\xd9\xf0\x1d\x07\xb7\x0d\
+i\xb1\x12\xbb\xcb\xf7s\x96J\xe9\xf7\xf4cN\x15B\
+\x0f'M\x80\xeb{[\x16\xc3\x87\xdc6L\x09\x1a3\
+G1\xabt\x97\xa7\xfa\xf1\x80\xfa,\xd0\x91*\x9c?\
+\x946^Q\x88\x02i5U\xcbV\xa3\x02'\xd6\xce\
+T\xfb1\x8bJ\x85\xe4\xdf\xe3\xe0\x87R&?\xfb\xb0\
+\xf1\x91\x1ag \xedtd\x86\x859\x1d):`\xf6\
+_\xff\xd5'\xa8\xdd\xc6o9X|\xb6\xac\x9b\xce\xa2\
+n\x00>cx{Jx-m\x5c)\xf9\xc4\xbe\xe1\
+\xe4\xdb\xa0N\xc5\x8c\x9cm\xb4o\xa4\x84\x14\x8a\xbb\xa5\
+\xfb\xcbW\x15\xd9\xb7\x89\xa1A\x99\x11\xe5:\xec\xb98\
+\x00\x0cQ\xb3\x91\x91\xa9,\x12\x83\xc3\x80\x8c\xe9\xaa\xdf\
+.\xf79f\xf5x`\x1a\xef!V\xca\xab!\xf1\x1f\
+J\xcf\x85\x1d8\xb7kf|\xef\xd4\xa9\xc3\xff\x95\x8e\
+\x18\xa2B\xa2\xd6\xb3\xd1a\xc3\x18\x1f\xd2j`\x1dA\
+\xe5\x8b\x99\x1f:\xdf\x14\x000;\xbe\xe1Q)\xb4\xa2\
+6r\x9f\x82\x89\xc0\xfd%\xb1'\xd1%A\xe7\xf9\xbc\
+I\x22uP\xb3\xa18C\xa5D\xb4L\xae\x0a!\x0e\
+\xba}\x8f\xa0\xba\x1d\xe6\x95\x02\x12\xee\xac\xeb:f\xa5\
+\xe5\xc7M\xe7\x86\x023\xec\x1feG\xe2\x89\xe9\xd7\xaa\
+Ha\x88\xd8\x00l \x0ei\x14\xf6\xa5\x05\xc4\x1c\x9f\
+(\x97$>\x03\x95\xfb(T(,\xeeT\x82\xc7l\
+\x96\xb9h\xfc\xc8;\x05O\xdaL\xa0=\xb5\xde\xc1\x87\
+*\xac\x84\xc2\x81\xcfL}~D\x89\xa8\xdc\x1cB\x04\
+U\xc8\x7f)\x7f\x16t\x9b\xa5\xdf\x8cn\x1c\xdd\x98\xdc\
+\x1c(\x1c\x99\xad\xa5\xa0\x1a\x8e\xca\x00\x1c\xf1\x99\xe7\x81\
+\x7f\xa7\xb0\x00H\xe33\x05\x13\xc0\x07\xeb\x88\x82\x88\x19\
+t\x0a.:\x9e\x00)\x9a\x15\x8eB\x10\x00\x82\xc2\x04\
+1Q\xc4\xc8~\xddS\x07G\xa7\x8dN\x1d\x9d\xea\x85\
+n\xff\x5c\xc3\x08\xe2\xefT\xaau\xaf\xe6\xcf\x8c6\x05\
+\x22L\x00\xbe\x0f1\xc8y\xd5\x99\xd4\xcc^h\x8a\xe8\
+9\x08\xdb9:\xa7\x00(\xac{\x127\xdd\x1f(\x8f\
+Q\xb8q}\xfe3\xe8\x94\xf3|/\xa5u\xc4s\x88\
+\xe8\x99\xee\x07\x9d\xc9\x00r(\xf0)\xbc\xb0\x05d\x96\
+\x16\x8d\x04\xc4\xe1\x00<T0\x86h##*\xec\xdf\
+\xbc\x9e\xa9\xb5\x1e\xf0\x11\xdfD\xf7g\x0e\x15\x8c\x14\xb6\
+\x88\xdf\xf2\xfe\x07\xfe\xd7\xd1\xf1F\xec\x91\xc2\x17\xa0q\
+\x0b\xad\x13\x15Z!\xfe\xa7\xd7\x1b\xfb\x05\x22\x9d\x12\x9f\
+\x8bu\x03@\xce\xeb\xa7\x00\x07P\xe2y\x84\x09\xc4\xfa\
+\xe5\x83\x0e8\x8c\x04\xde?Ti\xbe\x9f\xe7\x9c\x02\x9d\
+\x11\x0c\x80\x00\xae#\x85%\xaf\x03\xc6\x09\xae\x16\x88S\
+\xc1da\xbfd\xdf\x01\xd0`\x1fD\x8b\x84u\xcc\xfa\
+\xe1|\xe5\xf5\xd2y\x87A\x02\xd3\x03;b\x0aJ\xde\
+'\xcf\x0b\xfb\x04\xda#\xac_l\xf8pg\x18\xba\xa1\
+(1\x8c\x91\x00\xf6\x0d\xd6\xb5\x0a\xdf\xf6\x97\x16I\xe3\
+\xe8\xe3\x16\xe5\xeb\xe7-\x92\xcd1\x9f\xf5\x9c5\x1f\xb1\
+(?\xff\x13\x8bdK\xab}\x1ef\x98\xf5\x89\xcd\xa6\
+\x0b\xc3+\x8bu\x00\x00 \x00IDAT !D\
+!\x07#+\x01\x9cp\x7f\x10k\x06\x18\xd0yA\x03\
+)\x0a\x12\x15.\xbc\xbe`@\x90\xcf\xb1?\xb2\xde\xea\
+z\xe9\x19\xab\x17Z\xa4u\xb6\xfd\xa4\xed&m\xe7@\
+t\x0fx\xe3f#f\x5c0S\xb8\x7f\x88\x17\xa2\x85\
+\x02\xe0\x0f\xb3\x89\xc2\x1b\x8d\x035\xa4\xb0\xefm/\xb4\
+(\xd7in\x8bJ\xc1\xf6\x91\x81\xe3\x95\xf7N\xad\xeb\
+\xb1ou\x9b\xa11\x83\x06I\xe4}\xea\x1c\x97w\xef\
+\xee\x0d\xe1\x92\xa5\xef\x0b\x80_yc\xa8\xb9\xcb\xa7\xbd\
+y\xafErO\x12c\x22\xec\x13\xb5_5\xff\xb4\xa8\
+6p\x88\xb35\xd7Z\x94\xcf\xbfl>\xdd\x94<\xa5\
+Y\xdc\xa2|^\xbe\x07\x00|\xd6\xfb\xcd\xdaHh\xff\
+k\x91\xd4\xd6Ea\x86I\x5c\xeeN\xaf\xb6/\xfbG\
+\x1f5\xdc\xdb;\xf0\x9e\x1f7\xf7\xda\xf0q\xf9=\xe7\
+\x978/\x89\x8ek4\xcc\x1b\x0dfG\xbc^\x89)\
+\xda\x17\x96H\x9dT\xdb-\x9f\xae\xcc\xc5\xc8O9\x87\
+i\x5c\xf1\xfc\xd09\xb7\x11\xa9\xd5\x93M\xb2\xc1;7\
+\xab\xe3~\x8e\xdc\x7f\x8c\xe2\xfe\x19\x0b\x01 \xef\x17\x80\
+z\xbe\x00\x93s\xb5o-Q\x1b\xae<_\xa3\xfb,\
+\xca\xcf=aQ\xeb\x87\xf1\xcb\x16U\xfc\x131[g\
+>|0\x01s\xdco\xb9xt\xb3[H\xab\xad\xdc\
+\xcfv\x07\x8b\xf2y\xa9v\xe9\xd6D\xe96\xb4\xa8\xda\
+\x02\xcd5\x16\xb5nb$\x97\xe7\x1ej:\x05\xfe\xf8\
+=\x16I\xf4[#\x1a\x00\x101j\xc1\xa8\xcdi\xce\
+\xf1\xa8\x0d.\xf2b\x8d\xeb\xa2\x92\x8f\xe8(*\xff\x14\
+\xc41\xb2\xb6\xbe\xf2G\xe5\xfb\x00u\xe5\xbb\x1d\xc8\x88\
+\x86\xed\xda\xfd>\xd8]h\x914V.\x96\xe6\x09\xf5\
+\xcf\xfd}}\x81\xcb\x85\x99\x09\x9b\x06\x07#\x10\xdd\x97\
+,R\xbeB^\x84\xb6\x09\x1ah\xecg\xd4\x036j\
+\xfc\xfb\xb4~`\xbeq\x1e\xb0\xdf\x03\x00\xa2\x91DC\
+\xfb4\x8b4\x82\x07\x83\x8b\xbfO^)\x9bRFs\
+\xd8\x97\xf8\xf9\xee \x8b\xaa\x01\x03Cf\xf2x\x9b\x12\
+\x9f(\xf5\xc2\xea%VS\xe1g\xc8\xe0\xde\x16\x15\xe1\
+\x852\x83\xfd\x80\x1f\x1c\xfb$\x7f{u\xbc\x9a],\
+d\x0f\xb6\xa7\xec\xe9\xfe,d\xf9\xef\xa2\xa0_Q\x1f\
+Hf\xdf\xbds?S\xedl7G\xf5\x08\x18\x85\x0f\
+j\x9ba\xf7!\x1b\x83\xf6g\x16z\xc3\xbf\x16\x95e\
+\xbaJ\x19g\xe3\xa3\xb0v\xc6\xc2\xb1\x95b\xed\x05\xc4\
+j\xa9\xf01\xdb\xb8\xc7\x85\xb8l\x9d\x80\x00l$@\
+\xc6\xd9\xd8Uha\xff\x11\x9dR:nt\x0aP)\
+\x17%\x16[\x13/\x5c\xdf+\xea\xe9|\xc9\xf7\xdcf\
+\x0b\x17\x97\xd6\xc1W\xa5b\xfdhb(\x90P\xda\x04\
+\xc8\x01Iu\x9e\x0e\x01\x08;j\xbeP\xecH,\x98\
+\x85\xb1\x89\xb0\xab\xd2lX\x9e\x95_\xbdj)8p\
+\xf3\xc14\xc3B\xc2b<\x89\xf3\x92\x8d\x0f\xef\x1f*\
+,\x9d!:\x8d\xcc\xd4S\xa0R\xb0I\x84\xcfg\x7f\
+\xd6\xab\x00Bw\xabE*\x5cE\xbd\xa3@ea\x87\
+\x88\x91\x1e$\xc4K\x1c1[@\x09\xea\xb6\xe9\xfdQ\
+\x18J\xf3\x80\x8d\x1eQ\x0eG6\x0f\xd3A\x7f}\xa2\
+\x06\x22:g\xe9\xd4\x7f\x12\x83\xc2\xc4\x816P\xa7\xf1\
+\xb6\x94\xb8\x91\xe82\x0b\x86\xdd\x0f\x0c\x00\x0a\x00f\x0c\
+\xf5}\x1c\xc0A\xbd\x16\xb0\x83\xcaitBPy\x15\
+\x85\xd1\xf0KC0\x03I\xa4\x93F\x01C\xa2O\xa7\
+\x11Ua|\x9b)\x0c\x04$\x18\x0fg\xb4VJ4\
+\x95\xb8\x19L\xe6@\x99\x8d\xc8\xfc2!\xbc\x1ch\x02\
+\xfaB\x95\x9d\x11#\x00\x01\x18(P\xed\x04\xa0\x05#\
+\x04;R:~\x14\x166\x81uDb\xf6\xd0\xd9\xc5\
+v\x8cDs\x17=w$\xea\x02\xc4\x98\xd5\x0eU\x7f\
+\xee\x0f\x85\x05\x88<\x9dc\xa8\xfd\xec\x03\xdc\xc7m\xfb\
+\x19\xf7\x10!E|\x14\xfb%K\xccfq\xaa\xa0\x1f\
+8n{\xf3dE\xf8\x83\x02I\xe2N!\xcasA\
+\xa1F!\xcdg\xd6\x1b\x94E\x0a\xac\xe1h\xc5PD\
+\x8c\x7f\x87\x09\xa1D;\x00\x14\x0a\x18\x12bF\x08H\
+\xa0\xb9>0K\xa6\x8f\xc2\xad\x7f\xbd/\xe8\xe7\xe8\x5c\
+\xd2\xf1\xe6yc=\xc2\x80Q\x87!\xd6\x1f\x89'\xd4\
+D\x183\xd8\xc4m\xac\x83\x0f\xe0\x84\xebC\xc1Ea\
+\x01\xb3e\xea\x81H\x1e\x0c\x05u\x06\xa1\x86\xc6\xeb\xe2\
+~C\xed\x9f\xa4\xc2\x19U\xf2\xa1\x8f;\x1f\x14z\x14\
+\x96c1\x90\xea\xec}\x0fD\x00\xb0P\xa0\x03x0\
+\xd2\xc2u\xe6\xf5\xb3/\xd2\xb1$Q\xe0\xf9d\xdd\x00\
+P\xb2\x1fl\xa1\x02\x15\xea>\x80\xc8\x90\xa1\x80\x9d+\
+\xa3\x0bb\x98E\x82\xf1\x90\x18\x04\x14\xd2\xec\xdf\xdc\x7f\
+\xc4\xcd\x10[\xc3F\x8a\x8e\xda\xb0\xb3\x0f3G\xf6\xa2\
+Q0\xb1\xaeY\xa7\x00\x16\xec7\xbc/\x0a<\x15\x0c\
+A\x85G\xeb\x82\xc4\x8c\xeb\xc8\xf5f\x1d\xf1\xdfu.\
+\x85\xeb\x0c\xfb\x08\xe2\xa7\xac?\xee'\xaf\x1f&\x19\x00\
+<@\x1c\x8c/\x0aX\x18h\xc3\xf5H\xa7\x89\xdf\x87\
+x&\xef\x0f&\x12\xf7\x8b\x9f\x1b\x00X\x01\x88\xd3\x19\
+Vg=\x12j\xce_\x00*\xa8\x9f\x14\xe8<\xc70\
+\xfbD\xd9\x85J\xca\x08]4`\xf0\x9f\xb6\xf3m\xc3\
+*\x1a\x08\xb3\x87\x04\xbd9\xc7\xa2v\xbe\xe8\xc8N\xac\
+oQ\xf3\x9e\x00\x92\xd8\xb7Y\x8f\xacOFJO\xed\
+\x01E\xd7\x18\x9a&\xd9\x98\x0d\x00\x8f\xe8\xec\xb3\xaf\x91\
+\xf7\x00\xf0\xc1x\xe2\xbe\xf0\xf9x1\xf9`6\xa1\xb9\
+\xc1\xe8\x96\x18k\xa3\xbf[${Q\xdcD\x18\xa1\xe4\
+\xbc\x16\xd3\x13m\x89\xb0I\xc65\x05W\x03\xb4-\x00\
+\xb6y\xfe)\xa0\xe8\x08\xb2.3\x83p\x89\xb4n\xd0\
+\x0eR\xc7\x17_ql\x11\xbb%,j\xa1\x1a\x22\xcb\
+\xda\x7f\x9a\x93-R\x1e\xa4\xbf\x07\xf0\x1e\x8c>\xe5\xc3\
+\x91\xafK#\xa4y\xc4\xa2\xdc\xdf='\xf6\x9a\xd8\xab\
+\x8e\x0a\xd08jn\xb7(\xff\xfe\xa3\x89\xd3'N\xaf\
+\xc0\xb3\x8b\x05\x96\xeb<^\xc7\xa2\xbc\xaew[xA\
+\xdc\xef\x0f\xd3\xf6@\x0f3\xe4\x88\xa5\x8d\xcf\xb1H\x22\
+\xc2bl1#\xdd\xech\x91\xf6\xe3u}\x88\xac\x07\
+\xca>\xaa\xce\xeb\x99\xa9\xb1e\xf7\xcf\x98\x8eg\x958\
+3\xe5\x81\x5co>\xa6sNB\xbf\xef\xcf^\x0bw\
+\xbf\xdf\x1fO\xe2\xd9j$x\x03\xe0\xc3\x95a\x81\xcf\
+;\xeb\xc2G\x04\xce\xac\x85`s\x80E\x15\xc3\x0d\xdb\
+`ij\xb4\xef\xb7H#\x9f\xba\xdf\xce\x88\xbd#\x89\
+@\xba\xadW\xf9\xfc7\x8b\xf2s\xd3Z$\x9fy\xec\
+\xe7\xee\xb7\xa8\x0c\x00\xf6\xeb\xe6\x8e\x12w&@S\x7f\
+\xbf\xf9\x90\x85\xae\xfb\xd4\x15\xa8iglgjg\x12\
+ \xb7\xa3D\xf4\xac\x00?\xae\xc4\xf1\xa2\xfe\x7f\xb9\x8a\
+uv\x9bu\x9b\xdb\xe8\x06\xf5K\xe4C\xe4;\x02\xfc\
+b\xd4[\xb6\xc8\xe3\xc5-\xaa\xabI\xb7\x98l2a\
+\x840\x1a'F\xe9\xf8!\x8b\x04\x0c2Z\x8b\xb6\xc7\
+\xbd}\xa1o\x92\xe1\x0e\xa0*\xcf\xa1P\x0e;p\xec\
+$a\xe8\xa2\xb5\xa2\xd1\x8b`\x0a!\xee\xc9\xc8\x0e\xe7\
+\x0e\xf9*\x0d\x16\x18\x93\xb2\xad\x8cs\x89\xbc\x0c;W\
+\x80\x001\x0eB\xa3\xe5\x8b\x16u\x7f\x03\x10k\xb7\xb6\
+H\xdaS\x9f\xb1\xa83\xfe\xd1\xa0`\x1f\x92\xe8:y\
+\xd7\xe4v\x8b\x12[\xea\x85\x95\x02p\xf2\xcfK\x5cY\
+\x0b\x82\x98a`\xb6\x1e\xb1%\xcd\x9895\x7f\xc7d\
+\xdbe\xe9\xc9{\x92\x18\x8cu^\xffRg\xa0\xb4N\
+\xfbY\xd9\xa3\x12\xa2Mag3Y7:\x05\xe6\xa8\
+\xe6(?h|\xf63\x0e2!9\xd8\x01\x06EK\
+b+\xcc@\xb4/XT\xe4+f\xb2\xb4a`\xff\
+\x85\x9d\x9fi9\x9a\x9a\xa3#p\xf7W&\x82\xa7\x0b\
+\xefK\x89\x90\x11\xbb\x8eI\xb6\x12\xd6\xd1_\xa7\xfe\x9e\
+\xe8\xd0\xa2\xae\x0a\x22,\xdf\xf48\xf0\x00\x06\xec\x989\
+\xbd\xce\xc6\xd3\x11\xe0\x80\xc1..\xa8\xd7F\xf5\xd99\
+\x8d\x0eha\x07\xf5G\xa2 \xe1_k\x85\xf2IJ\
+D\xe7\xa9\xe20\xe1\xab\xca\x8c\x8b(\x83\xed\xa1\x16\xd5\
+\xc7\xbd\xf9\xb2E\xf9=\xafY$f\x85:\x8d\xdd\xb5\
+\xa2\x9eq\xb0\x82\xa4\x028(\xf1\x09\x11,\x0ed;\
+\xae7\xd3&\xbbdJ\x1c)\x5c\xec\xa7\x16\x162\xba\
+\xb5f\x95\x0eVG\xe0}I\x95<\xdb\xfa|6\xd9\
+\xfd\xecg$\xbeDA\xda\xa5\xc4\xa7\xab\xcd\xcf\xe8\x8c\
+\x12g\xa6N\x0f\x0f\xa2fcB<\xe9\xc3%6\xd2\
+\xfb\x9d'%`\xa8\x9eZZ\xf6p-\xbc\x11\xc9\x0c\
+\x84O\xa3$n'\xf3\xc9\x94\xf83sO\xa1\x85\x8d\
+\x8b\xf1o\x9eJ\x22}/YT\x84/:;tx\
+)(\xb6\x91\xe8\x1a\x1de\xee\x07\x1f\x1cll0$\
+\xce\x5co\x80\x22\x00\x85%%\x16G\x225P\x8d/\
+\xab\xab/\x88\xd6\xd1\xfd|\x5c\x14CD\x01I\xf0\xe9\
+\xac\x81\x80\xaa\xc3\x14\x05\xb4\x12\x97\x10\x93a\x04\x81N\
+\x1b\xeb\x02qCQ\xf4\xa3\x00\x80\xe9\xb1\xb5\xd4\xe4\xf7\
+\x90\x8a\xf8v=\xc55:\x95\x14\x98\x0090J\x8e\
+\xeb\x81\xbd\xb2\xfd\x9fj\xb6\x88q q\xfdH(\x94\
+(\xb1q2\xb2\xe0\xa3K\x9bV\xca\x19\xeb\xda\x13\xa7\
+\xc7\xaaHX\x14\x9e\xa2\xeaE!\x07\xe0@\x87\x0a\x04\
+\x99B\x81B\x12\x8a>\xb3\xcf\xac/\xae\x0f\x85)\xaf\
+\x1f@\x81Q\x15Q]\x83B\x8f\xfb\x81\x9e\xf3\xe8\xa0\
+\x22j\xc6\xf3\x0b\xd5\x16Q&\x00\x1b(\xd9s\x89\x01\
+\x85\xc8\x11\x85\x0b=\x14\x80Bl.\x01xx\x9d0\
+'(\xb0)\xa4x?\x14\x8et\xba6U\xa2\x7f\xad\
+\xc4pl4\xed\xe4\xf4}\xac\x0b\x0a\xa9\xa1\xa6\x02\xf6\
+z\xcb\x88\x1a\xde\x85B\xf3[_/?\xc7\xfb\xa1@\
+\xe1\x83\x02D\x1d~\x12\xafX7R\xeb\x8e\x82\x11\xc6\
+\x0e\x0c\x86\xaf\xf7@\xdeh/\xf9\x94S \xf2\xfe9\
+o\xb8\xef\x14\xeaC\xf18\xbef\xdd0\x12\x04\x00\x09\
+ \x03PB\x82BG\x18\xe6\x02\xea\xff\x14\xee\xbc\x0f\
+\xbe\x8f\xc2\x0b\x15j~/\x1d\xf8\xe1>Aa\xcf\x8c\
+-b\xa3C\x8d\x8da\xa7\x9c\xfbDg\x06`\x8aB\
+M\xcf\x83\xdb\x90>\x92D\xd6x\x9d\xec\xcf\xbcO\xf6\
+7\x00d\x0a|\xa8\xfdP\x8d\xb1\xf1\x04p\xe2u\x0e\
+\x199\xec\x9f\x5co\x00\x1e\xedC\xf1>\xb8\xae\xec{\
+\xaco\xde\xb7^o\xa8\xf0s\xfe\xd0`\x98g \xda\
+\xc8u\xd1u\x88\x8e1\xebI\xf77(\xfe<?\xd8\
+:#\xd6\xc7\xeb\x22\x01\xe5\xfem\xd7w\xc0\xe3|a\
+\xc4\x84\xbf#\xfb-\x12\xe1`&j?\x02\x80\x08\xd5\
+oT\xbd\xa5)\xd4\x9ck\xe1\xa3t\xbd\x0f\xfd\x8f\x9b\
+3\x1a\xcbon\xb5\xa8\x0d\x13\x0agf\xa0\x83\x81&\
+q\xb7p\x9f\xd1y\x106X\xdc\x87\xb3\xd5i\xdc[\
+\x9a;C\xdbSfno\xe9\xdd\xaa\x82\x92\xcd\xf5\x15\
+\xb3,\x5c\x81`\x22P\xc8hV7\x1a1\xec\xe3\x8c\
+\x8eq\xbe\x03p\x90\xf8\xd3\xd9c\xe6\x1f\x9fs\x89\x1c\
+G\x87\x0f\x8d#D\x8diL\x180\xf3\xc7\xca$h\
+\x16\xb1Hy\xb3\xd9m\x9f\xe4@x\x7fn\xee\xd9k\
+_\xc1\xf4h\xb6\xb3H\x1dH\xe5O>\xd3_\xf6\xa5\
+fc\x8b\xf2\xf9N\x8b\xaa\xb92\xfak\x89\xa7\xa4\x11\
+1w\xb2\xe5\x86\x19\xb0W\xaf\xa5\xd0\xfc\xd4\xa2\xdeg\
+\x0aG\x80\x82r\xea\xbf`\xe7~{\x88E-\xd8\xc3\
+\x96\x12\x00\x82\x0e\xb9\x80W\xf2\xf9\x18\x11\xa1\x01\xb2\xbc\
+\xc4\x96\xadM\xf0\xa5\x9a\xdf\xb3\x8dG\x1eM\x07\x15f\
+\x00n]h~Y\x03\xe9Ki\x9f\xef\x5c\xad&\x18\
+\xa1\xb1\x9f\xb1OM\xef\xd0w\xed\xf0j4\x94\xdf\xeb\
+\xa3\x1e\xdf\xac\xd7\xcf\x1b\x83\xb7W\xc0\xb4\xdd\xcc\xa2\xfc\
+\xfaO\xf7L\x09\x18\xc4\x9c[\xcd\x84\x85^\xcfLj\
+\xb8\x95\xef\x1f?h\x91\x80m\xfd{h\xe1\xcc\xe8~\
+\x11}\x01\xb8ke\xb2\x063\x80\xce\xaf\x18\x0e\xcdI\
+\x02\x80\xd8\x17h\x10\xfdat\x97\xe55\xe47\xa1\xf9\
+A}5_\x89y\xab\x9a?\xeel\xcdi\x16\x12?\
+?7\x01\x0f\xd3X\xd4<v4\x9b\x98\xa7*\xf0a\
+\xc4D\xe7]\x9a\x00\x00\x1a1\xa2\xfe\x98:\xf2\xd7Y\
+\xc5Q~\xffU\x16\xe5\xf3\xe5\x16\x89)\xa2Q\xda\xf6\
+u\x0b\xd5\xad\x0b\xa5\xfc\x96\x8e9u\x08\x00+\x85>\
+\x8d\x01\x1a5r\xe5\xe2\x1c\xb76\x975\xba\x10\xcbD\
+\xeb \xb4e\x10\xdf\xe4\xfc!\xcfdT\x91sGy\
+W\xf7O\x8b\xf2yz\x8b\xe4\x22%\x11\xc1\x00n\x96\
+\xb1\xa8\xee\x0e\xe6E\xe0n\x04\x87K\x5cS\xef3D\
+6\x05(\xc3\x1c\x1f=eQ\x81N\xf6\xf1\xc9\xf8\xbf\
+\xfb\xcc\xc9QB\xc4\xceR\xe7\xb5\xfc\x82\xf6\x7f,t\
+\x81\xca\x06\xd8<T\xe2\xc1:\xeb\x143\x0d'\x94\xf8\
+N-\x88\x021\xb7\xcb\xbcv\x9aQ\xb0\x0d\xfb\xcdd\
+\x8b\xa4\xff\x0e\xa5\xbbY\xdb\xc2g\x8a\xa6\xb6\x99\xa2I\
+\x8b\xca\xb6\xe35\x89\xf3\xe9@s\xea\xfc\xd8\xc5%\xdc\
+6\x10f\x00\x89Q\xfbs\x0b!\xb6\x8f\xa4\x1b.\x0a\
+T\xb3\xa7E\xa2\x94hF\xc6}-\xaf\xa93<\xdd\
+\xd6\x16\xe9FZ:\xfc\xd3\x84\xa8\xebzEg\x90N\
+\x03\x1b\x09\xb3Mt8\xf1i%\xf1\xb7\xe3\xfc\xef\xe9\
+\xa0\xb2\xf4\xfc\xa0$\xf6\x06\xb5\xe8\xf9\x12\xffH\x07\x88\
+?!i\xe6\x9a\x85\x0c\xa2KAH\xc2MB\xc0\xdf\
+5\x9c\xf8f\xa9\x95\x97\xc4\xb2\x9d\xbb\xc4<5\xb1k\
+\xee\xb3H\xd4\x16\x0e\xdc7,*\xf0\xe3\xfd\xf0\xcf\xa9\
+\x03<K\xd5R\xf0\xce\xc1\xcdU#\xc2\xef\xca\xac)\
+\xc16\xf3\xab\x13\x12\x02\xfe\x82\xeb\x5c\xd7\xf5\x03\x15p\
+\xe87\x0dE\x99\xdf7\xb0ab#\x84\x0aI\xa2\x12\
+\xa2\x1b$\xb6\xcc\xf0\x91\xd8\x81\xac\xf3\xf5@\x8d\xfc-\
+bF\xd3+\xb1{A\xf7\xef\xf9T0X\xfa}c\
+*\xd0\x999\x92\x88M$\xd8\xd8\xb5\xc0p\xa0\x03\x01\
+\x85\x1f\xaa\x9e]\x9d\x0d\xd3\x0c!\x09)\x850\x14V\
+\x0a\xc5\x8c\x5cO\x97\xde/\x05\x03b\x90CQ2f\
+\x0c\xf1\x1d'1\x1c\x8a:2r\x01p\xf1\x0d=W\
+_\xd7\xfa`T\x81\xe7\x0d\xed\x0a\x0a3\x18\x14K\xa9\
+\xc3F\xa1\xaf\x99\xe5nu\x8b\xb4nI\xfc\xb1;\x84\
+\xe2\xcb\xcf\xcd\xa1B\x83\x91\x90Oj_A=\x9e\xce\
+\x0d\xb6\x7ft\xbc\x87\xd4z\x12\xb7O\xf5\x14\xcf\x98\xc1\
+\x86\xa1A\xa7\x95\xf5\xf0\x8c\xc4\xa9p\x15\x01\x00\xb0\xbb\
+\xb0PJ\xf8~\xde\x03\xab\xae\xa9\xb2C:8\xf8}\
+\xac\x07\xee\x03\x00!\x09-bj&:\xb4h*\x10\
+\x87\x85?\xeb\xf3\x7f\xb3\x19\x1b\x02q\xf2AF;$\
+:\xa80M(T\xee\x1a\x8cL\xa0v\xcf\xbe \x0a\
+p\xec;\x00[\x9a\x8d\x0d\xf1N\xd6\x11\x14xQj\
+\xbb\x0b\xc4XY1\xec\xd9z`J\xc8yP\x94O\
+\x11@#\x0d\x81\x00*H\xcc\xb4\xceP\xb3\x8f\xc4f\
+\xf8\x5c3\x0a\xc1\xeb\x1f\xfa\xaes\x1d)\x94\xe8\xb4\x03\
+\xd0\xf0\xdc\xb0?p]\xd1N\xe0\xbe\x928\xb2\xfey\
+N\x95\xc0\x8evR'\x94\xce9\x7f\x9f\xe7\x15Q?\
+\xd6\x03\x9d\x04:\x0b\x14\xdc\x5cW\x0aE\x0af\xdcc\
+\xa0\xb4\x02\x00p=\x00\xf2o\xec~kTYW;\
+\xdf\xcc;\xc4}\x81\x89+\x80f\x8d\xdf\xc6L\x01\x08\
+\xd2\xccy\xbc.\xdc\x0d\xb07c\xd4\x81\x82\x93\xfb\xc5\
+\xeb\xe5z\xb1\x1f*1\x0cqKFBH\xd0\x87j\
+\xff\x8c\x8a0\x03\xcf\xfe\xc2s\x8aK\x01\x9d-:\xf6\
+\x8c\x00\xe0\x06\xc0,\xb6\xf6\xe1\x10{\xe5}S\xd8\x03\
+l\xb0\x9e$\xbe\x15#\x10\x00\xab0i\xb8N\xecW\
+\xbc\x1ffH\xd5I\xef\x0e\xb5\xa8\x1d\xe6\x00\xb2\x11\xe7\
+\xa3\xc0gF\x9f\x11\x1c\xd9.\x07\xd0\xc7>\x01\x80\xc7\
+\xf5\xe6z\x0d\x00\x9bx\x0e`\xea\xf1\xfe$\x16\xccG\
+\x14\xca4.\xd4i\x06@\xe762s\xdc\xfc\xc4\xa2\
+|\xbe\xc0\xa2\xee;\xd8\x0aO\xbcdQ\xbe\xfe\xb6E\
+\xf9\xfc/\x8b\xc4\xb4\xa2\xf0\x05\xc0%\xcf\xd2\xf5t7\
+\x22c\x9a>hQG\xc0F'\xf4\x0c\xbe` 1\
+\x0b,J1\x0c?Fd\xba\x9d\xad5\x90\x9e\x8b\xc7\
+$\xf6jZJ?M\x8d\x17\x152\xa8h\xd3\xc1\xc7\
+\xe5)\xd6\x89\xaeO\xd8\xe7b\x03\xaa\xf3\x80B\xa7\xd9\
+\xd2\x22\xcdR\xab\xf0\x88\xf7\xaf\xdf3\xba\xb7\xc4=\xe9\
+\xf3M\x16R\xdd_*\xb9\x1cH{\xa5\xb9NT\xfc\
+\x17,R\xbe\xc9z\xbb\xa8\xa7\xd67wY\xd4B\xaf\
+Y\xde\xc8\xfa\xd5m\x07\xc0\x11M\x07\xa7\x16?\xe3\x14\
+}\xcf\x8fc\xd4\xf4$\x8d\xb2J\x8bkb\x1f\x8b$\
+\xea\xab\xbc\x19\x0au7\xd9\xa2|>\xde\xa2\xfc\xfb\xd1\
+\x1e\xf5\xfcf6Z\x8cZ\xaeK\xbb\x9d\x85\xef\x0f^\
+\x10\xa1\x0d\xd5|\xb2D9\xef\xdb\xcb,\xca\xbfon\
+\x91F\x99\x0c\xc0\xf8[\xa5\xfe\xb3\xde\xa1\xc6\xc7:\xb1\
+Sx\x86\xc4\xa4\x1d\x8aV/\xe9\xc3#U\xa3\xe1\x15\
+\x1fv\xeb\xf3\xce\xc55\x8a\xf9\xfd\xda\x10\xa0S\x1c#\
+\xa6bH\xfb\xe8\xcauR\xbb\xfff\x1a\x15\x93\x9d\x22\
+\x85h\xf3\x19\x0b\x89\x0c\xda}=\xce\x22u\xbe\xad\x81\
+\xf7\x9d:\x83\xee\xd7\xbf\xec\x1f\xcd\xb1\x16\xe9\x1cS\x1e\
+\xd5\x1en\x91\xdc\x1d\x00\xd28\xe7\xb5\x0eGo\xf6\x80\
+\x1a\x1a\x04\x8c$P_\x8d/\xb5(\xbfo%\x8bd\
+\x17\xc9>\x83k\x94\x5c%\x9am-\x12\xf5\xdeN\xa7\
+W5\xea\xba\xa0F/\x9f\xf2\x02}\x7fW\xb3\xdf\xb9\
+op\x8e\x1f\x1b?>~L\xf6~6\xaap\xaeE\
+\x15\xbbk\x8eh\x8elL\x8d\xff\x98\xfe:\x8eo\x1c\
+\xffv\xfc[\x1f)\xf7\x91\xd2(\x90\xc5D\x8aQf\
+\xfd<*\xf9Q\xe0\x93\xd7NmQ\xb5\xd6\xd08\x88\
+\x86\xb8\x0a\xf3``a\xaf\xcdh$@\x22y\x18\xcc\
+.\x80\x1a>\xab\x9e\xa1\x11\x1d\xe2\xec\x00\x160\x7f\x11\
+s\x04\xb8P\x1d\x11\xf6\xc4h\xf5 \x82\xcf\xfb\x82\x19\
+\xads$\xc4!\xd1(\xd1\xc7d?\xe6@\xd2\xca\x82\
+\xe9\xe6)1\xaf\x16\xe6\xbc\xd5\xc7\xb3;\xcf\xa2~\xcd\
+\x86\xde=kQ\xa9\xd6\x14\xcc\xbe\xd1\x9e\x90\xc4Ul\
+\xe2\xf9D\xbd\x81\x0bk\xe1\x1d\x1d\xc1\x95\x06\xe2K\xe7\
+H\x84\x8f\x0e\xf5\xa2\xbdmM\x88\xfb\xa1\x1a\xfcY\xd9\
+\xa9\x91\xa01{\x88]\x02\x88\xc8Z\xae\xdfXU\xd9\
+A\x12u\xa1\x9b\xe9-*\xa0\x01\x82\x84\xca\xb7?h\
+\xa7T{\x0c:h\xcc\xce\x05\x93A\x0fd\xb7O\x89\
+}E\xe1\xf8h-\x00\xdaK,\xaa\xea\xaak\x0bd\
+*\xb6\x1d+G\xeb\xf7\xef\xab\x07%\xabR\xab\xe0e\
+\xa1\xf2>\xdf\xd2\xf1\xffn:\xd0)\xf8\xa0\xfe\x01T\
+p\xb0\x1bB\xfaCu\x8e\xef\x13\xb3\xe0Si\x06M\
+\xc8Y\xbc>\xa8i\x86\xc7_\x91(\xd4\x00\x19$\xac\
+VF\xed\xa8\x07\xe97\x89j\x05\x22\x8eJ-\x9d$\
+\xa88zP\x83zf\x07\xecw+u>\x0a%\x5c\
+ (\x5cHx\xe8\xccS\x90\xa3\x0e\x8c\xff\xab4)\
+\x82\x0a\xc3\x08\x8af\x9b\xa2p\xa0\x80\xe5`P\x07\x9e\
+\xfb\x13L\x87{\x5c\x87\xbc\xce\xdc\xd8,\xff\x22\x09A\
+\xbc\xc5\xa2\xda\xdc\xb9\x1d\xe0\x8e\xc9V\x90\x0e&\xa2P\
+\xc6p\xf9Y\xb5\xd5\xe3uF!L\xc2\x0d\xd5R?\
+\x1fTy6\xfe\xa1/:\x05\x00\xe2`\x14\x06C\x9b\
+\xa0\xd7U\xf0p\x9d\xe9L\xf2\x81\xdd\x98(\xc1\xdd\x99\
+JT\xe5c\x8a/i\x00UP\xe4\xb1\x89\x82\x22\x8f\
+O:\xafk+\x012\xea\x9c\xc00\x8a\xfbHB?\
+\x14q\xfa\x96\x12:41\x98\x09'A\xd3A\x14\xf6\
+f\x8c\x88\xeck\x91\x12Y\x0a\x14\x98\x06\x006$\xcc\
+\xba\x0et\x14\xda\x7f\xf6\x0c\xa3\x18\x91\xe2\xc3\xf8>k\
+$\x9fY\x1dD\xa3\xcb\xfaQ\x9a(\xb0)\xd0\x866\
+\x85\x1c\x1c\xd8\xd11sN'\x93B\x8b\xd7\xcb\x81C\
+AJ\xa2\x0f\xa2\xaf\xfb\x12\x07\x15\xcf\x11#J|\xc6\
+\x1e\xebs\x16\xe9@\xc7.\xf4\x06\x8bDu\xbb\xad\xbf\
+O\xa3\xf7\xea`\x07\xc0\x9c\xa2D\xeei=\xd7\x009\
+\x88\xdd\x89Z\x1d3\xbc\xbb[T-\x88\x18\xe1\x90\xbf\
+x\x00\xa8$\xb2wJ\xb4R\xda1\xd1\xf9WA\xe0\
+\x13\x997\xa7\xeb\xfa_\x15\xd4<\x17\x88\x8b\xa9p\x8a\
+\x8e\xf0\xd0\xdf\x9eQ*^?\x859\x9d\xdf\xa1\x06\xc3\
+\xb03\xcf\xfd\xe1<\x22a`t\x8c\x0ff\xd4\xe9\x1c\
+P8N\xa5\xdf\xcf\xfb\x00\x90\x18\xf8x\xc7l2\x7f\
+\x17\xbfsu\x0eb\x7f\xe5\xfdq\x1ePh\xce\xaa\x9f\
+\x9b]\x14\xff\x99Th\xb3\x0f\xf2}\xec#\xec\x17\xa8\
+r\x93\x17\xe0\x02\xc4\xbfsn\xbfn\x91\xc4\xf8X'\
+\xfc^\xbe\x9f\xfd\x8d\xf7\xc9\xf7Qh\xf3\xfeTh\x8d\
+\xa6\xb6\xa8T\xedxNaD\x91\x1f0c\xcfu\x87\
+\x914\x04$\x00\xe2\xb8\x8f\xfc;L\x00:\xbd\x5c\x7f\
+:\x80\xfc~\x984t\x82\xb1m\x1a\x020<\xd7\xda\
+\xaf\x01\xc8\x00\x22\x10\xe1\x0a;S\x00\x0d\x0a_\x80M\
+\xee\xe3\x90\xe1\xc19\xc8\xb9\xcc\xfb`\x1f\xe7\xbf\xf3>\
+\x99\xc5\xa7\x10\xe2\x1c\xe0\xfe\xf0wt\x1f\x981\xc6\x0e\
++\xfe\x1d\xf1Af\x90e3\xd8\xeek\xe1\x09\xfb\x11\
+\xa6\x1a\x1f\x0c((\xaf*\xd0\x99\x95\xed^*\xef\xff\
+\xa5tnc\xff\xac\xc25\x12c\x9e;\x80\x0f\x00f\
+iR\x04\x10\x03s\x85\xfd\x1b\xfbi\xe5\x1be\xf7\xf1\
+\xfd\xae\xfb\x81\x00F\xfd\xben\xc9n\x89n\xc9Z\xc0\
+\xf9,\xf9z\xe9y\x86)b\xab\xf5\xf5t\x1ek6\
+\xdb;\xfb\x7f\xab\xe2\x89\x88\xe9\x85]&\x22\x810G\
+\x18\x09 \xafa\xbf\xe2\xfd\x02\x88 \xca+FF\xf3\
+\x07u\xec\x95/5\xdf\xb3\xa8L7F\x03\x83z\x8d\
+\xf6\x94\x98\x17\xc1\xe0P\x03\xccyc\xcf\xaa\xe3k\xe2\
+\xdew\x97\xb8+\x8d\xb4\x19\xc0\xbf\xabw\xf0wjv\
+\xaa\x1d\xc6f\x15\x0bgp\xecg\xe2\x89\x14\xf6a?\
+\xa6Y\xeavm\x8b\xd4\xf1%\x7f\xd9W?\xc7\xf3C\
+\x9e\xc3\xec\xb8\x9e/l\xe5X\xee\xa8\xb0\x07\xe0\xceh\
+\x1b\xcc\x12D\xaa)\xf0\xa4\xc1\x15\x1aP\xe6rt\xb0\
+\x98\xac\xd7\x0a\x18\xba#\xe5\x1d\x14\xc80\xe4\xa4Q\xd4\
+\xfd\xc3\x22\xd9\x7f\xcb\x162\xf2v\xb3\xff\xdd\xb8\x8a\xa7\
+c\xef\xe8L\x8d\x93\xabxx0\x8f`\x94\xb0\x9e\x10\
+a\xfe\xa1\x85:\xf1\x1f\x11P\xf0\x8a\x1a\xa9o\xd4\xfa\
+\xcaGd\x9eI\xd7G\x80\x01\x85#u\x1b\xdaS\x01\
+\x98\xb2OiD\xc7]\xc8~PE\xd2G_\xb7p\
+\x9b\xbc\x12\xa9\x11\xc4\xc8/L sA[P\xeb\xd2\
+\xdc!\x8e\xb1H\xf6\xe5\x88\x013Ja\xab\xff\xb8\xe4\
+w/u|oD\xce\xed\xcc\xde\xdf8\xb3\xd7\xcc\xc6\
+W*\xff\xfd\xf7\xed-\xed\xef\x9d\x09\xf0\x97\xeeq\xdf\
+'{\x8d\x81\x8f\xb4\x1b\xb7\x1b{C\xd4\x81\x8dv\x0d\
+\x8b\xca\x5c\x1e\xff\xdc\xa2\xfc\xf7\xc7,\xca\xe7\xdfZ$\
+\xc6\xa9\x5c\xe2\xb0\xf5\xa3!\x09s\x1cf\x14\x8d\x1b\xf2\
+\xc6`B\xcb\x15.\xce1\x98k\xe4\x8f\x8c\xcc\xea\x9c\
+\x84\xa1\x0d0\x16\x8d\x01\x802]\x87\x10\xdfe\x7f\x00\
+\x00\x00\x08e]k$\x12w\x90\xeei\x8b\x04T\xb0\
+/\xa3}\xc4\x08\x9f\x98\x0b\x93\x0d\x97\x1a]\xa1\x03n\
+\xa7:\xdb\xec\x89\xc5\xda\x15Yr*\xf5\xbd\xc9\xf7\x9c\
+\x05g\x1b\xdb\xacu\xc3u5\xd8\xc9U\xed\x11d#\
+f\xb5\x86\xea\xd3\xea\x80\xc4\x02\x01y\xfe\x86:\xa0/\
+*\x118P\x08\x0b3\xa0 \x1b\x12k\x88\x84m3\
+'AU\x04\xdd6\xb8y\x93\x1b\x81\x12j/\x08\xd6\
+\xd4\xec\xf5\x07ja\xd8N\xd3\xdbMx\x9a\xbaT\xa5\
+b{\x9a\xf1CQ\xe2nHH8\x1d^\x0aX\x00\
+\x10%<\xf8\x81G\x87P\x88_\x88i\xd8\x0c\xcb\xab\
+J\xd8l#?\xb0\xc4\x17\xd2\x8c\xb9]\xd5\xa5Sg\
+QbtQ\xc8\xa9\x03\x07\x05\x8c\x8e\x8b\x1f\x98\x17'\
+*\xb6\xa5\x93SU\x0a\x97?\x88s\xa6\x8e\x81\xa5\x05\
+\xf3\x89\xca{t\x15?\x0cdV\xe27!j\xc1\x86\
+*[\x96H$\xe8\xd4\xbf\xe0S\xc1\x01$\x85\xcf;\
+\x09\xb4\x95\x1d\xab\xa5\xef\xb7m\x7fKQ\xa7v\xab>\
+\x9fl\x9c\x91\x10\x90\x10\x1a\x8f\xe1/I\x85w\xc2\xf5\
+\xad\xeb\x07\x22/Pu\xf9\xbd\xa8\x1f#\x92\xc5\xbfO\
++\xdb\x10\x8d\xbcx\x1fy\x1b\x1d\xe0\xdfO\xd41\xec\
+\xc4H\xdc\x7f\xee=\xde\xaa\x1e+\x9bA\x80\x9dP\x83\
+7\xcd\x85\xfb\xabMS|p\x1fy\x9f$^b\x16\
+\xe0\x1f\x1a\xe2n<\xc0\xf6\xf4\xccZ;U\xae\x96|\
+\x95\x90\xfbU\x92h&\xe2I\xd8\x9f!\xfa\x07s\x84\
+\xce\x1a\x85\xf7\xe3\xb2\x9b\xda^\x07\x13T\xe4\xa1X\x17\
+\x89\xd5\x06bp\xec\x22\x0d\x01fi)\x5c\xd9\xa8H\
+|WT\xc7\x09f\x07\x9d\x89\xabz\x9f\xd8\xe8\xc4C\
+]\xa5\x83J'\xe8\x86~#n\xd6\x95\xff.\x1b)\
+\x1dLD\xcd\xa0\xb8\x8b\xb2l\x12JF-\x85\xaa\x0d\
+%\xb7\xdb\xd2\x22u\xfe\xf0\xbf\xde<f\xa9\xfd\xf9\x01\
+\xc1n\xf7\xb0\xf0\x19\xbfc\x8c\xea\xc7\xcc(\xf6\xa9\xa3\
+\xfbK<\x90\x12EFL\xce\x97\x8a\xfa5\xda\xc8\x97\
+\x11\x03\x82\x82\x7f`\xeb\x15\x08/\x05?\x9dC\xb4\x22\
+(\xf4\x87>\xd9P\xc6)l\xa1V2{\xcd\xf3\xcf\
+\xac:\x94n\x18[ \xc40d4c\x18\x9d6\x0a\
+\xa6\x07\xb4nqK\xa1\x00\xbbO\x09\xebw<l\xff\
+\xee;\xa0\xd3\xab\x83:\xf3\xc0\xf7\x9c\x9984\x22\x98\
+E\x1654(\xb7\x02:\x82\x0aO\x22\xa2\xeb\xeb\xf7\
+\xe3\x18\x7f\xff=\x13\x86\x82\x86N3\x0c\x90\x0d\x04H\
+\xf1\xf7)\xa0(\xb4I\xfc\x86\xae%C\xad\x01\x0a\xd2\
+\xa1z=\x00\xb6\x5c\x14\x82q\xc1u\xa5\xc3\x0aE\x98\
+\xdf\xcb\xeb`\x1f\x05p@\x93\x00\xe0\x94\x82\x0b\xe0g\
+i1\xa0`\x86\x00\xd0\x01\xa4PX\xb3\x0e\xf9\xbd0\
+Q\x00\x06x}\xeb\x8b\xc9C\xc7\x06\xa6\x9fF@\xfc\
+|:0i\xde\xf0\xdc\x02\xd4\xf0\xfb\xd8'\xd8_\xd8\
+\xd7(\x88\x01\x14\xb8\xde\xac\x7f\xee\xeb\x10P\xe1\xba2\
+R\x87V\x01\xfb\x05\xae\x22t\xfc\xd9/x\x0eu\x8e\
+\xc5\x0c6\x05\x22n\x17\xd9\xb5\xa6K\xf9\x09@0Z\
+ Ki4\x0a\xc6\x15\xcf\x0d\xf7\x9b\x19w\xf2\x11\x18\
+$C`C\xcfqh\xb7\xa0qD\x81O\xbe\xc0\xf7\
+S\x08\x92`\xb2^\x00\x8c\x86\x8c.\x80\x0a>\x0f\xdd\
+>`Xp?\x18\x1d\x03\x10\x1c^\x07\x189\x88\x0f\
+j?\x0a\xc0W\x85\x1aT\xd8\xee\x1c\x8b\xd4\xd1f\x1f\
+\x95h-\xf7\x19U\xea\xb0\x9b\xc5\xceS#S\xcd\xf5\
+\x16i}pn\xec\xebQ\x99@\xbco:\xaa\x88\x9d\
+\x92\xb7\x00\xa8(a\x1f\xfd\xcc\xc2\xd7U\xcf\x848]\
+#\xaahC\x8c{\x80\xdf\xd5\xd7\x0fN\x14{\xd6%\
+\xcf#\xe2\x8c\xb8\x15\xec\xa7B\x16\x0d\x1b\xbd_\xd7\xde\
+Y!i\xb7\xa0\xe2MG\x8f\xfb\x8e\xc8 \xc0\x07n\
+\x01\xf6t\x99\x16\xc3\x0a\x16\xaeM\xf0\xdc\xe89\x07\x14\
+\x5c\xd3gb\xbf\x89\xfd'\xf6O\xae90\xad\xa0\x98\
+\xcb\xce\xba\xf9\x83E\x05$b\xff2f\xebO\x12\x10\
+\xcd\xf5f\xffD\xfcS\x0c\x0a\x18\xb8\xcd\xa6\x16)\xdf\
+\x9d\xb6\x17\x8bn\xff\xda\xcf \x8f\x9f\xb0H\xbe\xe4\xa6\
+\x09V\xf2\xb5v\xab\x1e\x18\x9ft\xbc\x0a\xc9\x07{\x7f\
+z\xf3\x02s\xe0\x7f\x06\x8dji]\xc0\xc8\x9b\x98\xc1\
+\xc2\x99|=CvE\xe7\x8e\x85F\x02\xda\x06\xe3\x0b\
+J\xfcT\x9d\xfe\xd9\xd49\xbf\xa5\xfc\xdd\xd5,\x92+\
+\x82:\xf2\xe12A\xdeK~\x89\x88\xb5\xad\x92Eu\
+_>\x9a\xdck\x04\x18D'\x97\xfd\x84\xf3\x90\xfd\x17\
+qu\xcb\xdeV\x16\x13a\xc5\xa4q\xb1\x85Er\x17\
+\xc2}A\xa2|\xcd\xdfK\x94\xfb\xdd~\xc9\xa2\x8e\xc4\
+\x85\xdb\x85i\xae\x95\xbc\xa4\xd9\xa2\xc4\xe6I\x1c\x0f\x80\
+}\x15\x8b\xf2\xf5\x8c\x16u\xff\xc0\x1d\xc4\xdd\xbd\xeeJ\
+\x0d\x00\x01\x10\xe3\x95,\xca\xe79,\xca\xdf\xbf\xd6\xa2\
+\xe6-a\xa7\x0b\xd3\x1b-,\xd6\x91:\xd8\xc6\xe76\
+F7\x22u!\xfe.\x00h\xbc\x90E}\x8e\x9b\x19\
+,\xd2\xf3z\x91\xc9B\xd6\xe7\xac}\xb3\xc4\x7f\xbd`\
+\xef]]\xce\xed\xbf\xaf9\xbd\xf9QS\x9ec\xd3\xf0\
+7\x15\x7f\x1a14\x5c\xb0\xd9\x1eMX\x94\xaf\xe7\xb5\
+\xa8\xccRf\xe7\xa3N\xc3V\x15\xf7*\x9d\x07\xb8\x9e\
+t\x9f\xb7\xa8\xfbR\xf7m\x8b\x94\x9f\xa1\xad\x85k\x1b\
+\xa3R\xec\xef\xe4Y0Ui,\xa8p\x0f\xa0X\x00\
+B\x8c\x0e\x08\x90\x8c\xd1\x88\xcbz\xad\x8cp_\x80\xe1\
+\xc2}\x92=a\x9cK:\x17&\xc7\xec\x89Q-\x96\
+\xa9\x17\x1e\x8aH\xfb\x90EE*\xbae-\x92\xea\xb6\
+\xde8\x9d\x08?\x00\x96\x11B\xf6|\xea\x5c!:$\
+\x0aSP\x03\xf5\xc0t\xa7KD\x83\x04\xfc{\x93N\
+.a\xa2\x13\xae\x92\x1e\x88)\xb3\x8d\x1cL\xcc<B\
+E\xb1\xf4\xc5f\x9a.\xb2H\x88\x9fl\xea\xa0J\xf8\
+\xc2?\xa2&(\xed5%~%$\xab,\xc4\xe6\xcf\
+%\x1e\xa9b\x83Na:H\x1b\xf8,\x1aU(\xef\
+w|G\x89;S\x87M\x89\x823\x02\x1eI\xb3:\
+Pl\x8e\xb5H\xa2>$N\xcc|\xd9c\xf9l\xda\
+8\x94 y\x87`\xb9\x94\xb8Jt\x8c\x19j\xef\x14\
+\x1f*J\xd8\xc3\xa9@}\xdc\xa7\xb3\xab\xfd \x9di\
+\x89g8\x85y\xe6\x94h0\xa3b\xe9\xe4\xfb\x93\x98\
+\x8d\xdd\x8d\xef\xa5\x84V\x9d\xf1n\x06\x0bQ\xe8\xfe\x99\
+^\x1f\x1d-D[H\xf4H\xa0\x17\xf5\xe1\x8e\xaa\x15\
+a\x0b}\xa5Z8\x04\xa2\xaf\x83>~nHi\x97\
+\xbd_t\xfe'\xbb,YMlH\x98Wpc\xb1\
+Zh\x98}\xc8\xbeJxV\x97H\xdc\xe2\xc9\x95\x80\
+\x9f\x13\x02\xe8\xa2u\xbfJ\x9d\x7fKw\xceN\x89\x07\
+\xa2\x8c\xbc.\x12y\x12\x05\x00\x10F\x04(\xdc\xa6x\
+\xcf\xb4_\x17\xc7U\x04\xdc\xdd\x016Q!\xdf\xaa\xb0\
+]\xb5jX8\xd3\xe3d\xcd\x90\xfe\xb1\x1e \xcc\xc6\
+FAo\xa2Y\xe7%\xa0C\x8c\x87\xa0\x1eC1R\
+\xa1\x13\xd4\xf7\xf5\xd4\x09\x07x\xa03\xcasGA\xa6\
+\x8d\xd34\xfc\x9db7\xa4\xfa\x7f\xb6\xb7W\x09{(\
+(\xe2\x00\x0a\x5c/\xd9\xb0 \xfe\x14\xb6l\x88S\x82\
+8\x8b\xc1C\x81\x12\xb3\x8a7J\xb5\xb9np\xfd\x06\
+,\x847\x12P\x1d\xdc\xa1\xea:\xec \x91\x08\x93\xb8\
++\xe1\xa3C\x80jrwfw\x86\xfb/\xeb\xf9\x22\
+\xf1r\x11\xae\xcd\xff\x0f\xea\xfe$\xe8\xb8\x07L\x93\x9e\
+\x83E\xd3u%\xc1\x1c\xce\x9eS8\xc2\xec\x18\xda\x01\
+\x06\x07W\xff\x9d\xeb\xcb\xf7g\x1b\xa3\xbfW;\xb9\xe8\
+\x84k\xe4\x08\xdb\x9cQc\x91\x5c\x1b\xa0\x1e\xeb\xf7\x84\
+\x8b\x84f\xd8B\xcb\x02\xff_\xec\x10\xdf\xad\x8e$L\
+\x1d\xa9\xea\x8f\xe6\xecgQqW\x88\x82\x84\xc2\x98\xce\
+.\xfb\x86\x0a\x13f\xfd\xe2}\x22\xd2\x87\xf8\x19\xd7\x83\
+\xf7\x89\x98\x1b\x0c\xaa\xeb\x94x\xcb\x8d\x00\x80-\x12g\
+(\xdb\xec3\xfc}\xee\xdf\xd0u\x81\xeb\xcc\xfd\x81\xf9\
+\xb2Hy\x8e\x16\xf1Bo\x15\x07l\xf8=\xbf\x97-\
+\x984X\x82\x82M\xe7}\xb6\x81\x8d\x1c\x85*\xf7\x91\
+\xc4\x8auu\xb7\x98$tz)\xe0\xf8=\xdcw\x12\
+}:et,\x00\x0e\x18\xf1\xd2>\x12\x94F\xf6s\
+\xfe\x1e\x056\xd4y\xec\x91\x00\x16\xb1g\x04\x10\xc1\xc7\
+\x9dYw\xf2\x00\x0a7\xf6\x17\x00\x1b\x98\x03\xf87k\
+\xf6:l\xe5p\xb7Q>\x10\x1d4u\x94c\x14\x83\
+\xd7\x0f\xb07\x04\x04\xd8\xaf\xc9O\xd87\x86n9z\
+.C<\x15`\x90D\x1fQA\xf6\x0f\x00G\x0aI\
+%\xfe0h\xa2\xe3F\xe1\x0e\xf0\x04\xf3\x88}\x98\xeb\
+\xcb9\xc2u\xa4!\xc1\xeb\xa5\xb0`}\xb2\x0eY?\
+\x00\xafhh0\xca\xc0\xbeC\xc7\x1f`\x8f\xfd\x98u\
+M\x01\xc8z\xe7zR\xc8J\xf5?F\xf1x?\xda\
+\xe7\xa1\xdeG\x1e%\x0as\xb8X0\xab\xfdi\x8b\xb2\
+\x8d\xddj\x91Dp\x11=\xbdb\xe4\x8d\xaaf_\x8b\
+\xc4\x98\x80J\xce\xfeN\xe7\x17\xe0\x8e\x91\x0f\xe5Y\x14\
+J\xa3y\xc5\x98\x9cI\x85\xd4\xf4\x16>\xa2p\x82\x8d\
+(Ph\xc79\xc0z@[d8\xc2\xc5~\x8d\xd6\
+\x0c\xda\x0c\xd8\x06\xc3$\xb1\xb4\xfe\x9a\x04 \xb1\xdf\xf3\
+\xbc\xa8P\x18\xfdJ\x22\xb9\xd6?\xfdk\xb2\xbbF\x8c\
+Z\x8d\x8c\x18iC\xf3\x05\xca1\xf9\x05#\xa9\x14R\
+:\xffh\xb89\xd0<\x87\xd6\xc3{k>\xc8\xc8C\
+\x9c\xd7\x96\xdd\x1e\x22J\xf4\xd7\x5c\x1c\xb9\xcf\xbb\xb1\xe3\
+T\x81\xd5\xfe\xd4\xa2l\x9f\x9f\xb3(_/iQ>\
+\xdfbQ>\xbf\xd4\xbe\xd8\xbe\x98T\xec\x8d)\xbbO\
+}^q\xcb\x22\x0fq\xb7\xb0R\xc0M\xcciQ\xc5\
+\x09\x9b\x7f5\xffn\xfe-\xa6\xd9\xb3.Z\xbe\x8f\xad\
+\x8bv\xbd\x12Sj\xc3\x87\xc2\xad]\xb9\xc4J\xcac\
+K\xde\xd4\x9eT\xe2d1;\xcf\xd0\xb9\x95\x0a\xcc(\
+\xdc^t\x08\xbb\xcf?\xf3\xb92\xc9\xafA\xd8\x18{\
+\xfe\xfb\xef\x04\xd0\x01\xbc\xd9\xee9]m\xe0\xc1 h\
+\x16-Q\xaews\x7f\x89\x07\xca\xfb\x9b\x5c\xa2\xac\xd7\
+\x89\xebJ\x5c\x9f\xc4U\xad\xff\xfb\x19ox\xack\x0d\
+\x0f\xaf\xd3\x96\xaa\xb3\xf64d\x9b\xffXT\xf1\xf2n\
+9\x8b\xc4\x5c\xc5\xc6\x15\x1bT]\x07\xec?'\xe6\xb7\
+\xa8\x0d\xb07\xd7\xb2\xa8\x00N\xfbi\x8b\xf2\xf5^\x16\
+\xe5\xf3<\x16uT,\x5c\x11`l\xc0@\x163\x93\
+B\xdb\xed\x7f\xa7\xf8z\xe9\xed\x91ar\x9ef\x914\
+\x93\x18\xe9\xc6e\x03;M5l\xbaW\xbb\xffX\xe3\
+\xb4\xbc*w[h'l\xb6\xc1}\xee]\xbc/\x18\
+-0I`|\xd3PQ\xbe\x19Lq\x89\xcb\x92o\
+\x02p\x07\xa3L\x8c\xb8\x00.\x18U\x8510j\x15\
+5\x00\x00 \x00IDAT\xb4\x91EuK\xe3\x1c\
+\xf0\x91\x90\x8f\xd6\xf3\x13fT\xd4\x7f0A\x19\x85f\
+\xbf\xa5\xe3\xcf\x88\x0c\x8dB=\xd7\x8c\xc6tw\xf5\x9d\
+\xfdp-@\xc3\x85|\xe9b\x8b\x9a\xef\xa3\x91\xd0\xcd\
+eQ\xb6uW\xff_C\xd4\xa2;dw\xb3p\xea\
+\xe4)1D\x15\xd6%\xee\x0e\xafT\x08TR]T\
+\xed\xc7\xc9\xb6\xe4u\x8b\xb20?h\x91\x90X\x10x\
+\x00\x04>8\xe0TP\xb6_\xb6H\x22\x09\x8f[\xa4\
+\xd9\xd5\xc9\x16\xf5\xe0\xa2s\x14\xe2p\x87\x96\xf8\xb2\x90\
+\xa7w\xa4Y\x09\xc4\x88T \xc7\x0c\x9d=\x16F\xb1\
+\xf9\xaaEJ$U\x90\xa2\x0a\x19\x08/6a\xbbj\
+\x04\xe1$\x8f\xfe\xe0:\xa8\x22\xfbns\xf1\x17Qs\
+\xac\xd3\xf9J\x89\x97\x93\x0a&\x9dh\xa8FP\xc0X\
+\xb0$\xa2\xb6,fNb\x82\xda\xd8\x19\xa1hV.\
+\xb1\x92\x12\xf7\x09\x8df<\x936\x22\x1d\x5c\xed}%\
+\xeeO\x89\xff\xd6\x16\xc9f\x8b\xfb\xadY!\x12\x8d\x98\
+Q\xb2m\xe3\xa4\xda\xb9\xa3#\x10~\xc6\xd6W\xfam\
+\xea|\x93P\xffo>\xe5\xcc\xb0\x92@X\xfa\xf2\xae\
+D\xf9\xce\xef{\x9c\x12i\x0a\xffI\x12\xf2\x22\xa1\xe5\
+\xfb\xa0fUj{u?\xb8\xbf\x8a9\xa2\xe9\x10\x7f\
+\x87\x03\xdd~\xdb+:\x80\x9fN\x07\xf6p\xd6g`\
+\xb7\xe7\x22;s\x8a\x0a\xf9\xbc\x00\x80\xbf\xbd\xa5\xa3\xe7\
+\xc0B \xfbv\x8co\xa7<}\x94D\xa9\xa4*\x0c\
+r\xeb\x04\xb45j\xc7\xdf\x13\x96\xe9R\x81\x88\xb6\x03\
+\x0c\x07\xd6\x13\x89\xb5\xbd\xfa\x05\xa4&\xfa\xa5\x9a\xd0\xc4\
+\xac\xde\x9f\x94P^)\x0d\x02\xee\x0b\x09\xbb\x12\xe0\xb8\
+\xcft\xb4X\xbf$\x9c\x00H\x00'B\xd6\x0dVs\
+\x1b-4 (\xf0X\x1ft\xf4\xb8\xef\xcf\x0b\x00\xfb\
+\xa3\x0e\xe2\xe7d;z\xa9\xec\x01\x19)\xe0}\xc2\x04\
+!\x01\xe6\xf9\xe5\xfe\xf0\xf9%%pt\x8a\xe84K\
+\x14%\x80\x1f\x0ar\x12\xab\x07<z\x9f\xd8\x0b\xd2L\
+ \x1dy\xbd\xdff\x0d\x8b\xda\x81\xe9\xb6\xb3p\xa6\x8e\
+\x03\x111\xa2\xc0\xef\x87\xb2\xcb\xba\x1d\x8a\x01\x06\xd7Q\
+\x09\xe7p\xdd\x0d\x811\x12?(\xdc\xd81\x0a\xf0\x8b\
+\x82\x0aM\x13\x0e\xb6\x13-\x92\xed\xf1\xbb-\xd2\x08\x0b\
+\x85\xfd\x83\xba\x0eGZ$F\x01\x149f\xf07\x1b\
+0(\x18!zM\xea\xd5Ok\xe4\x86\x82\x88\xf7\xad\
+\xd1\x81\xeev\x8b\xf2s;\xa8\xc0\xa3 \xe1us}\
+\xa0\xf6\xe2~\xc1u\x00p\x85\xf9\xc0\xcc\xbb\x0a\x90\x18\
+\xada\xc4A\x89b\x9c+\x00\x0cC;\xd2\xb9T\xb0\
+\xf2\xdf\x01\xa4Y\xd7\x1c\xd07u\xbf\xf3\x82\x98\xd1\x9c\
+\x17t?\x00\x86\xee\xe9;\xba\xa1\xa1CaMBO\
+\xe1\xff~\x15\xa8<\x1fh\xe7l\xaduDg\xffI\
+\xeds3*\x81@\x9b\x81\x84\x02 \x80\xc2\x91u\xbd\
+\xaa\x183\x9b\x8a\x8a\x08U\x1e`_\x00\x1b\xd4Q(\
+\xd6\xccRFg\x95D\x0b7\x16\x0a\x22\x0aB\x9eG\
+\x15\x9e1\xf3\x0c\x00\xc2\xa8\x05\xfb5#\x1f$H$\
+T\xccr\x03\xa4S\x90Q\xb8\xa2\xbd\xa2\xc2\x1e[\xce\
+\xd8\xb7\x01<\x86.\x08\xba.\x01h\xf1\xdcq\x1e\xf0\
+\x9cr_\x00L\x00\x16$\x82\x19b\xc7:\x97\xbb\xfb\
+-\xca\xd7_\xb4\xa8\x89{0_\x00\xce\x00$\xe8\xf4\
+\xf3\xc1\xbe*\x00(\xf6a\x98j\x03\x8ax\x00b\xd8\
+O\x02\xfc0\xfa\xc0\xfba\x9f\xe59\xe2\xdf\x01D\xd8\
+W9_\xe8(+\xdf\xc1F\x0f\xc6C\x88\xe0\x0a\x08\
+A-<\xee7~\xe1/\xf6\x05`h\xf9\xe8\xf9\x99\
+x\xd9\xa2R\xe7c\x94E\xeb\x8c\x06\x0b\xcc\x82\xf6\xd7\
+\x16I\xb4n~\x01\x88\xabh?\xa6\xa1\xc1:d\x84\
+\xe3Cb\x8c\x08\x18`\xfdE\x07\x16\xd5\x7f\xd6\x09\xeb\
+\x8f\xeb\xc6u\x06\x00\xc2\x87[\xcc\x98\x002\xb9\xbf0\
+(\x01\x12p\x11\x00\xc8\xe4u\xc2P\xa2\x01fO\xf5\
+2I\xb4\x0f\xd5qc\x98\xdd\x9fl\xfb(T\xb9O\
+\xd8T\xcb\x8e:\xf6s1\x00\xe2\xbe\xcb\xc6\xd0\x0b\x9a\
+/*_\xbb\xac\x02\x93\xed>\x16\xe5X\xfa\x95E-\
+\xa8\x9b\x93J|\xd7)\xd8\x0e\x14Sp\xe0\xff>^\
+\xda\xa2\xaa\xf6\x8f\x17\xee;\xbb\xed\xd9\xedY\xedYU\
+\x0c\x99\x11\xd6\xf6\xdf\x16\xca\x9f\xbf\x9b\x1ab\xca\xa7\x11\
+'d\xbdL\xdc4\xf1\xf4\xc4\xd3\x15\xa0\x99|\xb6E\
+\xf9}3\xf6T\xf2\xf6\xca\xf6\x8a\xb6\xe4\x9d\xe3\xcf\x8f\
+\xf7\x1f\xef/u\xfa\xeb*\x85?(\xe7V\x98mR\
+\x01\xc1\xee\xa8\x12G\xd6\xd1\x0a4\xb2\xc2\xb5F\xf6\xe0\
+\x88Q\xfa\xee\xf9wQ\xae\x9f\xa9\x00\x02nd\x8c\xc8\
+\xc0\x88\xc1E\xab\xd9\xabD\xc9[&6\xb3(\x9f\xbf\
+^\xc2F9\xe6\xb7\xa8\xf9\x95kg}S#A\xaf\
+H\x93\xa2\xe4\x1d\xcdZ\x16\xd5>\xdaa\x9ds\x95\xb7\
+\xaf.&\xe2\x9b>\xc2\xb2\xa4\xb9@D\x87\xd9\xfa\xcd\
+?\xd0y\xffBbB\x92\xe7sn!\xce'\xf1\xcf\
+h$Y\xc3l\xbf\xea\xde\x13\xccN\x18\xa2\xfbN\xda\
+\xd7\xeb\xa2\xf2t\xb8;\xd4\x0e%v\xac*\xf4\xf1\x1c\
+\xab\x10\x1e\x1dV\xea\xac\xc3*\xa5\x1d\xc6b\xec\xc7\xd2\
+V\x89\xe7\x06\xe0\x12\xe6\x8c\xf5\xc1\xad!\xf9P\xcfL\
+\x8c\xbaN#\x80\xdd\xa5\x16\x95\xfa\x8e-!\xa3\xa5\xd1\
+A?U\xa3?\x14\xd8\x00\xaa\x1a\x95\x0e\xd7(\xf2\x7f\
+\x1a\xb3\xaa\x97\xba]-\x12\x13\x1c@\x00`\x12qU\
+iS\xf0\xf7\x22O\x82\xd1N\xfeN\x1d3t\xa3\xe0\
+>\xe0>\x22 'F\x0a\xc4\x80\x0b\xf1@\x18\xf8\xfa\
+\xfb\xedi\x16\x15\x10\xc0\xfder \xe8\x96>\xdb\x8c\
+\xc4\xbd\x16\xd5\xa6\xcbm\xf5\xa6\xad\x05]t\xee\xb9A\
+P\xbf@\x14\x95g\xc4\x8c\x9cDBB\x94c\xb1\xfe\
+F\xc5\x02\xa6\xb3\xc0A\xf4\xb5\xbe\xc0ow\xb1\xf0\x0b\
+\xd7S\xcc\xa7S'b\x1a\xef\x9d\xc5lJ\xcch \
+\xd6\xa5\x0e\xc7\xe8\x9d%\xca\xf7O\xde\xd4\xa2\xde\xc8\xae\
+\xe9F]\xe3Z\x07\xf3\x9a\x9f\xbd\x8b.,\x9c\xd4\x85\
+\x8d\xd2^nT\xdb\x95h\xabofPO\xb6\xb4(\
+_O)\xb1\x9e\x10\xd7[\xb5\xe0wH\xd4\x9d\xd9-\
+\xd4\xa1?\xae.\xd0\xe6R\x8b\xe4\x17n.\x09OH\
+\xfd\xf4<%\x02S\xd2\x02\xd0\x03\xcbl\x96\xcf\x88_\
+\x94:!$l\xcc6\x93\xb0\xdbrzR\x07\xe9\xcb\
+u\xe6&\x0e\x04\xa8\xec\xccB1s\x82\xf8\x9e\xa8\xbd\
+$\x1cA\xe9\xb6\xf4\xefH\x01\x0b\xf3V\xb1\xc1@\xf2\
+\xad\x90\xf8\xae\x0e\xf6\xc7\x13\xb2M\x07\x8b\xbfo\xb3p\
++\xa8`\x5c?\x1d\x94\x1c\xb0\xf1\x8d\xfdr\x8a\x02\x88\
+\xcf\x14L\xfc\xbb\x95Eo\xe8@}\xa9n\xd0\xc1\x0c\
+\x00\xb9\x9d\xd3\xf5\xb9\xab\xf8\x9e\xc4\x199(\x822O\
+BKBd\xb8\xee\xe3\xa9\x93O\x82\xa8\xc2$\xfc\xe9\
+\x99A\xe3~\x92\x80\xa0\x06\xcd\xac\xb2i\xdd\x9f\x91D\
+\xac\x84\xc4F\x81C\xc2L\xe7\x9b\xc2\x00\x0a$\x1b'\
+\xc0\x9c\xa8\xdetp#\xf1\x070\xd3\x81\xe9\xe2 \x07\
+'\xcd\x03%`\xf1\x5cO\xd6s8\xbc\x0f\xa8y\xd3\
+\xe9\xa2\xe0\xc3>\x05j.\x14\xf6]U8\xa0\x0eO\
+'\x81\xe7\x9cY~\x00\x0a\xd4\x96\x11!$a\x07h\
+\xa0\x00d\xc6\x13q<Q\xe8\xe2>\xb1\x9f\x0cG\x16\
+(D(|^\x1a\xd8\x00\xf2}\x00\x00\x5c\x7f\x0aT\
+\xae\x13\x9dK\x12C\x01J!\xc6\xa3\x91\x1a\xf7\x91\xbe\
+)\x15\x8e0A\xd8\xe0y=C\xffy\xae\x07\x1dB\
+^/\x07\x13\xc81\x1b\xed\x0cA\xad\xef\x9f/\x0a\x15\
+\x00\x1c\xfe\x9d\xe7\x05\xea\xb0\xc4\xfd\xbc?1]*\x14\
+\xc4,*\x09U\x89\xd4)\x04\xb8{@\x05,~\xf4\
+\x02F\x02x\x81\xa9\xc5\xfeE!\x0d\xd3D\x00@|\
+\xbf:\xf1Q\xc0\xe1\x1e\xc0}\xff\xab\x0a\xc3\x1b\xd4\x09\
+xE\xd7\x89\xceY\xd5*\xe8\xff}q\x8dJ \xaa\
+9|\xdf\x14L\xea\xc4\xc7\x08\x04#M*0c\x9f\
+\xa1\x00\xa3 \x02\xf8\xa5C\x0b \x83\x88\x18\x056\x9d\
+l\x12}D\xe7V\x97\x16\x05\x85$n\x0a\x1bj\x96\
+\x9c\xd7M\xa7\xf5\x93\xea\x04\x89\xe1\x16\x22\x9b\x5c\xb7\xe1\
+,7\xeb\x7f\x0euN\xd7U'Zb\xba\xb1cN\
+h\xff\xfa\xa3\xd6\xf7\xb7\xd4YDS\xe1]\x16\x09x\
+\xa0 \xa2`e\x1d\xa2)\x03\xd5\x10M\x13\x5c3\xd0\
+\xde\xa0\xf3\x04\xa3\x80\xf5\x0a`\xc5\x07\xfb\x0e\xdf\x07p\
+;`\xe6\x84\x9f7\x1dn\x0aG\xee\x13\xebv\xc8p\
+ \xc1\xa4 \x04\xb0d\xc6\x17@\x9c\xfd\x8c\x82\x89\xf5\
+O\xc7\x1fM\x03\xa9;s\xfeGB'`4:\xd5\
+\x9ay\xe6\x1c\x8du\xc6\xba\xe7\xef\xb0\xeex\xbe\xf9w\
+\x0aP\xc4\x15\xe7\xb5\xa8@@h\x22\x00\xac\xd3\xe9\x82\
+aA\xa2\xceu\xe7\xfa\x00`rN\xd1\xa9\x86\xc2\x0c\
+\xf5\x7f!\x01\xb8\x1f\xd0\xe8\x82\xec]cF\x19\xb1B\
+\xa8\xf96;~we\x0e\x91G\xb6\x1f\xb6H\x0c\xc6\
+G,*\xb3\x10\x8a93\xbc\xc1\xd8\xc0\xfeJ\x85H\
+0+\x04D\xb67[\x94\x9f\xfb\x93\x85\x03\x13;\x8d\
+v\xaa\xcc \xef\xbc\xce\xe4\xc0\x88S\xa0G\x93ds\
+hy\xe2;kg9D,\xd9oy\x9e\xb8\x8e\xba\
+\xaeP\xafC\x93\x8a\xeb\x89f\x12\x9d\xcc\x17,\xd2\xbe\
+*Fj\x88\x8d!J\xb7\x8b\xc4\x08\x01\xc2\xec\xe9\xdf\
+\xba\xee\xc3h(\x04\xe0\xa4\x828T\xf3\xe9\xc0O\xb1\
+\xa8\xd7\xa99\xd1\xa2\xaa\x8c\x9bK\xba\xf9\xa4\x87{\x8e\
+(\xd9\x9e\xbf\xad\xaf\xbc\xe4\xac\x0a\x9cza\xffj\xd2\
+t\xb8\xad\xc4\xed\xe5\xf3\xfc\xed\x02\xed\x02uv\x1a`\
+\x82\x11\xb9\xf1\xce\xe3\x9d\xc6\xe5\xfa\x8fW\xb4(\x9fw\
+\xb4\xa8\xd4\xe7v\xfd\x12\xe5~\xb7\x8b\x94x\x8fT\xfa\
+OO\xcf\xa1\xe5\x87\xcb\xd7\xbcd\xfc\x98E\x1d\x09l\
+\x1e\xb4(\xc7\xf6\x0b\x16.z\xf8|\xf3|e$\x22\
+\xb2:\xbe||\xd9\xf8\xb2J\xd1w\x95\xf9\x92\xaf\xb6\
+\xc7\x978.\x89I3\xcaG=@\xe3\x0c\xbbS\xcd\
+\xcc\x87\x0d\x1c\xfb\x9ee5\x97\xa4\x82\x91Q\x00\x98\x03\
+0:\x04,5\x7f-\xf1\x94\xdb\x9c\xbb\xcbY\xf3R\
+\x89\x97+\xe0\xf2\xe6\x89%\xb2\xb8\x9f\x01\xd2S\xd5\x19\
+|\xbf\x9e+\xa4}\xda\x18\xa1\xe5zN\xdcm\xa1\x02\
+\xf3\x07\x95\xb1\xd8~\xab\xc4\xf1iv\x5cL\x8f\x10\xaf\
+\xe4}\xd2\x81V\xbe\xe1\xe2\x89\xe5<l\xae\xb0H\xe2\
+\x90\xb8\xbdAYG\x9c\xf9\x88\xd1\x11h\xd5\x98v\xc0\
+\xa4\xbd\xdc\x87\xa3\xd6\x05\x02\xa4\xa2\xf1\xa5\xba%4\x8a\
+t\xde5\x17[HSn\xc1\xa4\x15BCIv\xa4\
+\xcd\xbbK\xcc\xa5Q\xce\xb2\x0e\x9bKJ\x5c\xec\xd4\xff\
+\xb2\xb2<\xef\xe9\x99\xdd\xcf\xb4O\xb7O\xa7\x86\x88\xf2\
+\x91\xd1\xa3\x16\xe5\xe7\x96\xb0p\x8d\x81\xdf\x9b\xc6\x00#\
+\x8f\xc1`F\xcc\x98\x86)\xdaw\x00\xd8\xd2>\xe8\x0e\
+\xb0Hj\xff\xec\xa74>y\xbf\x00\xd2\x88B\xeee\
+Q\x1b)aW\xc8\xf9\x8aH\xa8\xae\x9f\x03UG%\
+Q?\xf2\x17\x8d\x1c\xb9f\xdc\x02)\x7f\xd3y\x02\x13\
+\x01\xed%\xae\xc7d\xa7\xee\xfd\xb6\xda;x\xf9qo\
+U\xfd\x8c\x04Y\x88!\xea\x90Qx\x83\x88\x89j\xc9\
+\xc1\x14o\xf8}\xa2\xe45\xfd\x81\x16\xa2Y$x\xcc\
+\x06Rp!\xde\x05\xb3@\x072\x1b| v\xa20\
+\x90H\xa26\x0f0\x10\xe2_\x0bH\x9cB\xb6e\xe3\
+S\xc6\xdf\x1b\x7f\xaf|\xfe\x93\x85~O\xd9\xd8\xdbE\
+K,\xa2\x0d\xad\x1c\xe0\xe3\xab,\xca\xd7\xdf\xb6\xa8\xae\
+\x08\xddW,*5\xc7\xa5\xec~X7\x10\x07Tv\
+P\xe1\xf0G\xa9l\x7f\xae2\x0bH\x1cB\x14\x06j\
+!\x08<H\x10\x1dM+\xb3n\xa8b\x83\x14\xcc\x81\
+x\x9d\xe0Q\x0b\x08\x12P:(\xf8\xfd\xfe\xbc\xc4\x95\
+\xb5\x00\x0d_\xc9\xc1\xec`\xcc\xe2Au\xa4\xc3\xb5\xb4\
+\xebs\xf7\x1d\x97\x97\xea:\x89\xbfC\xc1\x89\x0d\xa4\x0a\
+\xedH\x5cHl\xf0\xbb\xa5\x83\x84\xe6\x01@\x82!\xa6\
+\xcb)a\xdc(Q\xa8,\xed{=!\xe6\xc3N(\
+\xd4|\x80\x00\xeb\x03\xfe7i\x1b0+F\xa1H\x01\
+\xa2\x02\x1b\xcd\x81\xe8\xac\x88r\xe4n\x07;T\x86H\
+$d\x14f\x1c\xfc\xfc]\x12}\x00\xaaa!\x82_\
+\xbc\xb4*B\xa4\x87\x8e\x1d\x14^:TJ\xec\x02\xa9\
+\x05\xf1\xa7\x80\xe5\xfd\x93\xf8\xa2J~\x89l\x94@\xd4\
+\xa1\x98R\xe8A\xdd\xc4v\xef\x17\x121\xba\xbb?\xc0\
+F\xdb\xa8\xb3\xc7\xdf\xa3\x80\xe2\xa0`\xe6U\xbe\xc1\xd1\
+\xc1\xfa\x83D\xe6\x98m\x84\x0aI!\xc1: \xf1\xc4\
+V\x90N-\x09\x96f\xd3B\x9c\x87\x0e)#\x10\xea\
+@\xc5\xfbg]\x000\xf0w(\xec)$\xf8\x0c@\
+\x80F\x06\x08/\x14J\x00#6j\xa8\x8a\x9aqw\
+$y\xe3\x0a\xe4\x84\x0d\xd0!\x16\x89j\x89\xc8\x0b\x09\
+\x03\x85\xf9\xf0u\x93\xf8\xe9@\xc5\xbe2\xd4\xc8)\xa4\
+)4y}t\xa2`4@]\xe5~PH\xf1\xfd\
+\x14\xc0<\xd7\x88\xcd\xa1\xc2\xafB\xa1{\xc8\x22\xb9}\
+<\xa9}\x09\xa6\x08\xd7\x99\xeb\xcb\xef\xa3\xc0`?\x93\
+\xb8\x5c\x88{\x22\x0a)\x91\xbfX\x1f\xac\x07~\x9eQ\
+\x1d\x12*\x9e\x9f\x97\xb5\xee\x05@ z\xe4\xfc\x96\xbe\
+c\xd93+\xd8w(\xe0Y\x0fU\x0b\xc3\xedtB\
+D\x16 \x83\xfb\xc0\xf7\xcf5P\xe3\xd7\xef3\xf3(\
+g\xd2\xc8\xb5 \x00\x01\xf6a\xee\x13\xeb\x1b1\x5c(\
+\xb3\x14\x92\x8cT}L#\x12\x88\xd7q\x9dP\x11g\
+\xe6\xf4\xfd\x12a\xe5\xba\xb3.\x00\x02(\xd0\xb1]|\
+L\xe7\x88f\xfbc4\x8cN1\xb3\xfe\xcc\xd0C\x19\
+f\xa4\x8duJ\x01L\xc7\x9d\x82r0[\x1e\x14h\
+\x98r\x14\x94$`\x5cg\x9eC\x18\x1b\xac\x17\xc4\x0d\
+Q\xed\x17\xe3a\xe8\x17\x1f\xf6\xc3\x02*\x9ci\xf7D\
+jL\xd0\x11\xe5\x9c\x182\xc1\xd0\xd4\x00x\xe6<\xa0\
+\xf0\xe6\xef\xf0\xfc!\xc6\xc4\xf3\xc6~F'l\xa0)\
+\x13\xfe\xdchX@\xc5\xe5\xfdr\x1d\x01@(\xeca\
+\xe8p\x7f\x01\x22\xd1@\x18h~\xc4\xba\x03\xd0\xe0}\
+\xf1\xfd\x14\xae\xfcw\x9e\x87!@\xa8\xf5\x1a\xebA\x85\
+V\x00\x13\x03w\x87r\x86\xf4\x0d\x1e\xfc\xcd\xa5j\xcf\
+\x88T\xbc_\x18\x94\x88\xef\x01P\x88)\xd2.a\x91\
+\xee\xa3iK=]\x01\x85\xb0\xf9\xe3\xfd\x9eiQ\xb5\
+\x18\xbc3\xfb\xa7d[\xf8C\x89\xb4\xfe\xa3}\xbe5\
+f\xe4\x8d\xcd\x0d\xcd\x0d\x15\xb0\x88\x91\xc3O\x08\xe8\xc1\
+\x1el\xce^\x13)\xf2Y\xee#\xfb\x0e\xc0\x14\xd7\x03\
+\x06\xa6\xed\xef\x9b\xaa\xc0:\xbb\xee\xaf\x01\xf00\x82&\
+ >\xfe;\xfb%bo\xb2\xf3\x0b7\x1e\x1b\xa9]\
+31)\xd9\x8fX?\x14\x08jx\xb5\xdf\xb1H\x85\
+\x81\xc4m\xdd\x9d\xa9\xac\xe3\xf6]\x16i4C\x8c\x0c\
+F\x9f&f\xb3\xa8\x05H\xfb/\x8br\xfd\xbeP\xe2\
+\x80J\x91\xc6\xdeq\xbc\xecx\x99\xb1\xed{\xcf\xf5Z\
+\x04<\xf7\xe1\x13\x7fF\xfb\xe3\xd6F\x88g\xb5(\x9f\
+O/a\xb3\xd9_(a\xbf\xefG\xfd\xc8oh\x15\
+!\x06\xae\x82\xa7\xd9\xc7\xa2|\xffT\x16\xca\xfb\xb7P\
+\xa1\xf3\xc5j\xfb\xeb6y\x1f\xab\xa3\xaa\xcdJ\x16\xb5\
+P\x8a\x82U#\xa7\x00F\x883:\xcf\xf6\xb0j\x93\
+\xcb\xc8\x82ky}B\xfb\xc7\xd9\xe9y\xe19\x22\xcf\
+%\x0f\xb3\x8e\xf4)\x89\x81\xacu\xeab|\xc7V\xdb\
+?gP\x9c$m\x88\xb2\x0e\xc6\xaf[\x94?\xf3/\
+\x8b\xf2\xf5\xaa\x16j\x80\x94\x82p\xe2\xa2\x12f{>\
+\xb3E\xb9\xfdM\x89Qe\x0a4_+Q^\xff\xc4\
+-%n\xd6\x88v\xd9\xaf\xde\xfc\x99\x85D\xa9\xdf\x93\
+Da\x8d\xdfye\x1d\xc9l^)a\xae\x1d3\x97\
+(\xf9\xfb\xc4\xfa\x16:\x0fnJ\xaa\xfb\xdc\x8f\xcfZ\
+$-\x08F\xba\xb1'\x06P\xa5p\xbe\xbc\xbb\xc2f\
+\xd3K\xd6\xe6\xef\x17\x863#\x0e!.\x8cf\xd3@\
+\xe3(F\xcb\x94G\xd1\xa8l\x9e\xb3\xa8\x1d\xf7\xf6'\
+\x16\xeew\xff\xff\xd1u&\xf0\xfa\x8e\xd5\xfa\xff\xbd\xcf\
+\xde\xe6\x14\xa1\x84$C\x93d*B4\xa7\x92)\xa5\
+9\xaaSrtL\x91\x06BQ\xa44\xf9'\x84\xca\
+p4\x09\x8d\x12'\x94\xa9S*\x94\x063\x91!\xf3\
+\xfc\xdb\xcf\xfb\xbf\xaf\xfb\xb9\xbe\xeb^\xbf\x87\xb3\xd7\xe7\
+\xf4\x9e\xed\xb7\xf7~\xdf\xe7y\xee{\xddk]\xebZ\
+\xd7\xaa\xcc\xd2~\xd3~\xb3~\xb3\x0aP\x0e\xad\x05f\
+\x9e\xcf|NV\xc5\x03\x8b\x95\xd7\x83dmZ\x09\xf9\
+i\x8cU\x7f\xae,i\x0d\xa1\xf1ff\xeb\xf4\xf3\xb2\
+\x94\xb8\x1b\x00\xe5y\xc1\x5c\x9f\xbeW\xd6\x18`\x93/\
+\xca\x1a\xa0\xc41\x1e\x95{\x9f\xa7\xd3\xb7\xcb\xca\xeb\xd6\
+\xb2T\x18\xa3\xa5\x92\xf8T\xe3\x1f\xdf\xef\xb1\xe5\xafo\
+\xf9%\x85>\x0a\x85\xddkd-n\x98\x9d\x7f\xa9\xac\
+|\xff\x1dY\xeby\xe8\xfe[V^\x17\x93\x95\xd7\x03\
+\x8b}\xaa\xcdI\xad\x07\xf0{\xec\xb0\x9e\xd9(;\x04\
+\xb4\x92\xd8\x93c)o_U\x09\xe3\xc0\xe3@\x06a\
+e\xfc\x0e\x15#\x1c&\x81\x08=\x95V/E%\x11\
+\xd5\xfd\xa0\xdcx\x1cG$\xae\xfc=T\xa3\xbf\x22\xab\
+\x0edPou\xe5\xb8\xff`\xb1\xb2\xa0\xe7n)\xf6\
+\xaf\xf2z\x98\xacQ\xa5I\xf8\xabh\x84\xc4\x0d\x9fS\
+\xec\xd9\x09I\xb28Vw@\xb1\xfd\xdb\xc1V\x0f\xc6\
+uS\xaf\x96{\xcf\x02!\x07\x10P`\xb8p\x13\x99\
+\x09\x0a\x8e\xdf\x17D'\xe6\xd3\x9b\x1a^\xc7\xc2\x5c\xe1\
+\x80\xf6/\x06\x1avI\xe3j\xa0\x80\xbd\xba\x92\xde4\
+\xdec\xbeD[b\x9c\x1c*\x95,(\x02F\x0a\xef\
+f\x80DO\x93\xd2\xe1\x8b} \xf6\xa6p\x1f\xdfD\
+T\xf8;Q!U:\xf1\xc2t`\xa2\xa6O\x80\x0c\
+\xd0A\xc5\x95\x00V\x84\xa575@\xa5\x12s\xfeb\
+\xc7\xb0QJ\x10\xec\xa0\x22@Z\xc7sa\xf9|P\
+\x16=\xce\xa3\x1e0\xff6e\xf1}\xa92\x04 \x00\
+\xd0\x00\x15T\xe2\x8d\x1b&\xb1,O\x83\x08\xe0J\xc7\
+\xc0\xf3R\xa5h<\x0e\x90\xbfO\x80\xc8\xd8%\xe6\x85\
+\x22vI/>\x22U\x00\x02T\xc8\xe9\xa5\xa2\x87\x8b\
+uM`B`\xcc\xbe3U,TsW\x1f*\xd2\
+\x22\xb0Uj\x96\xd6\xcd\xe5\xa9g\xd8s\x96\xa7\xff\xcf\
+ckp\x1cN\xbc&\x1f\x1b\x00!\x0d\x0b\xab\xe3\xc2\
+\xf8\xfb8 \xa8\xa9\xe3y\xcc\xf4\xee\xa3\x16\x0d\x83\xc0\
+\xa2D\x91p\x8f\xc6\xa5\x05\xa0\x82\x98\x9fZ\x8b\xbe\xd5\
+\x10\xd9\xa0\xfe2\xae\xd4SH\xe2\xef\x92\x98\xce\x8b\x1e\
+\xf9\x05+\xd1\x06\xaa\xa2\xd2\x87\xda<\x15%(U\xa8\
+\xe5\xf3\xea@\xad\x7f\xb8\x7f\xa8/\xcf\x7f\xbaa\xb1\x0d\
+\xda\x18L\x00\xa0\x1ah-\x9f\x12n\x1f\x84\x8c\xf5)\
+\xabf\xd0\x1c\xb8V\xdc\x9f\x0aD\x0c\x89*\x81\x04\x95\
+\x7f\x90_z\x87\xa9\x14C\x99\xa6\xf2\x8d:4\xaa\xbe\
+\xf4\xac\xe1ga\x948q\x0eJ$_\x04\xf2T\x96\
+npe\x9a\x9e;\x00O\x80\x8a\xdb\x0c|\xcd\xf7\xfa\
+\xfb?\xd4\xd3C,\x0c\x80a\x5cy$a\x19'\xb0\
+|\xf1\xb9\x09t\xd9w0$\x16\x1f\xae;\xa8\xfb\x8c\
+M\x85\xca\x87\x96\x00\x0c\x0b\xee+\x89.\x89<\xa2<\
+s\x0e\xb0Q\xeb\xe7\xf3\x00\x98\xf9\xefDE\x1b\xaa9\
+\xfb\x88\xc0\x10\xc0\x9c\x84\x12\x00\x81J\x0b\xcf\x0d\x00\x8a\
+\xe7~\x8b\xfd \xfbz\xac\xfd\x00p~\x8d\x81\x80\x11\
+\xa3*\xee#\xad\x08w\x9a\xd2\x89J\xbf\xb5b\x82\xda\
+\xefJJ\xb4\x0c\x01\x18A\x8d\x06\x90c\x9fr\x1d|\
+.\xf6\x05\xfe\x8dV\x0f\xc4\x07I\xc4\xb9/\x9c\xf7\x00\
+\x14<\x17*Y\x88\xe71\x06\x15\xbfG\xcb\x03\xaa\xe6\
+\x1a\xd3{VJ09_x?\x12_\xee\x0f@\x0c\
+\x89\x99\xb5\x08\x18\x9b\xc6:\x08\xbf\xcb\xef\xe3\xc7\xa8@\
+\x03\xd8\xc0\x8c\xf8D\xb5\xf6{T~\x9c\xa0\x85\x16\x0b\
+@>\x00\xc8\xf8\x95iH\x00D\x5c7\x00\x00\xe7\x08\
+\xf7\x91\xf5\x02\xb3\x88\xeb\xc3\xef\xf1\xbc\xc6S\x0b\xb8\xcf\
+T\xf2G\x9a\x15Am\x85\x99\xc2\xf5\xb3N\x01\x0aF\
+\xe3s\xa1\x96\xc7T\x1d\x8b=O\x9f.K\xf1\x84\x13\
+\x22\xa6!\x05\x03\xd1\xbd\xc8\x04\xd6TB97f\x0e\
+\x96%j=\xe7 \xd3\x03,f\x1b\x01\xb5\x03\xf2r\
+\xea\x0dL\x0b\x8b\x14\xf6\x7f\x93\x15?\xfcfY\x9af\
+\xc0\xba=|\xf2\x85\xba?X\xdf\xe3i\x1f\xf8\x8f+\
+\xab\xfci\xeb1\xd6*<>\x8ds\xb4\xfa{\xc4\x11\
+*\xbc\xfc4\xb5\xdc\xc1\x9c\xa0@\xa5\xb8R\xff\xfd\xf6\
+bw\xa4\x02\x96\x98\x11W\xa58\x8c8\x81)L\xd6\
+X\xe9?%\xab\x89V\x15\x01\xebw\x95\xa5\x16\x0a\xb7\
+\x18E+\x81\xb5\x00\xaa\xc6\xd5Ui\x0c\xb6\x19\x1au\
+\x0a\xd8\x8a\x89\xca,-\xafr\x8e\xcd]]\xec\x9a\x14\
+\x8f\xd1C\x0d0v\xae5\x01\x983\xce\x18\xf1\xfde\
+N\xacUi]X\xd6\xc6\xe51\x1d*\x80sW\xbe\
+\xfb\x9f\xcb\x5c \xbc\xda\xda@G'@\x91\x0a\xad\x99\
+!\x95\xb1;m\x09\x14\xe7Bh\xfd\x18\x80\xef\xd6\x93\
+%&\xe8\xa6\xc56k\xaa\xfe\xc1\xac\x15\xdc\xb9\xaa\xc7\
+s\xee\xe78\xf5\x16\x03\x05{\xa5)B:\x1dR\xab\
+\x5c\xfd\xfd5[\xe1\xa8N\x91\xf8T\x13\xfdc\x0a\xc6\
+\xfc\xbf\x14\xfbs\xb9\xaf\x07\xca\xca\xf7\xef.\xb6\x83\xef\
+\xf3\xd5m\xaa\x03\xc0\x05\xda*5/\xd9\xa7\x1c\xef\xb7\
+\x14\x93\xf6\xc1\x8fd\xadu\xa9\xfft\xb1\x92\xd0\xce?\
+AV\xbe\xdflH\x84+\x93\xe3!\xc7\x95\xe5\xfc\x98\
+9\xa1\xd8\x89\xa9\xb2\x7fK\xb1rnt{\xc8\x1a\x95\
+\x9cu\xdd\xed +\xbf\xb7\xa2\xac\xf5\xc0S \x0d\xf1\
+B\xa6A\xc1LR\xc1s-3E\x8fI\x80\x19\xe2\
+\xe5\x12\xbf|gJp\x01\xba`\xf0\xa2\x89\xe68\xa3\
+\x02\x1e\x9fjZ(\xfd\xd1\xb2\xf2\xfd\xf2\xb2Z\xc8}\
+V\xbfF\xa5\xbaW\xb1?\x00\xean[Y\xd3\x14\x98\
+<8y`\xf2@J\xe4\x9d\xffNO\x94\xa5\xf5\xef\
+1\xe90\xce\x82b\x8f\x86\x1a\x1ah\x14\xfa\x0c\xec\xb1\
+\x9e\x83\x89a\xb1S\x0a!\xd1\x0a\xe4\xd6S\xf6\xf1\xe4\
+FY\xd3&B|74\xa8\x18\xcf\x8b\x18;\xf1\xde\
+\xbe\xd5b\xdcy\x9c\xefh\x86\x90g1m\xc2\x80\xd6\
+\xec#\xbf\x95\xb5\x1b?\xb3\x8a\xac\xdc\xb0\x97\x14S \
+p\xcd\xe4\x9a\xba\x015\xceNcF\xbeQ\xec\xd8\xd4\
+\x13h\xa4qr\x99l\x01\x11\xbc\xe1\x00\xa4\xe2I\x82\
+\x89\xaa\xae\xa9\xc1\x88: \xf2\x12\x14\x0c\x02?\x02-\
+(\x84\x88:y\x8cF\xad\x7f\x7f%\xa9TSi3\
+\xe5tz\x86\xac\xa9\x22B\x81\xaaj\xa4\xe5\x01\xccm\
+Zl\xb3D1r\x05\xb0{\xa8\xd8\x83m|au\
+\xec[&\xb1(S\xecA\xec+\x02\xb9\x87\xb5\x14.\
+u \xf9{\x07,\xbfp\xaf\xf5\xe7\x1c\xd0\xbc\xe3\xb1\
+\x01P\xd5\x18\xd8%\xf5*\xb9\x07\x88D9\xc6o\xf9\
+\xba\x22\x11\x82\x8aL\xa0\xa2\xf0\xf3\x19\xee\xa9\x7f^\x0a\
+\x10\x10\x7fB[\xe0Eu\xc0\xc6\xb0A\x96M\x22Y\
+\x04:8 Z\x09\x08\x0cT/\xff|\xa2\x980\xd6\
+\xac\xab\xfa\xbd\x0d\xc1\xa3RB@\xc2\x5c\xd5;kh\
+:\x042\xf7\xa4\x80\x9e\x05\xeaV\x94Z\x07\xde\xd0\x14\
+\xc3\xe3R\x05{^u\x06C\xa2\xf6\xb24\x06\x11\xf1\
+5\xee\x03\xea\xf1\x1e#\xd8\xbd\xa5\xd8\xf6\xe9\x00C\xb4\
+\xc5\x89N \xebT~\x00XV\xa8\x13\xb9[\xaf\x9c\
+\xe0\xa3}\xd2\x18\x10\x07*\x04\x14\x81,C\xcd\xe1\xfa\
+\xa9\xfc\xf1<H\xa8\x08,\xa88\x90pp\xbd0\x02\
+H\xb4\xc6c\x9b\xf8\x9e\x83\x91\x00\x86@\xd1\xc0\x1bL\
+\x98\xa8p\x8d\xc5\xcc\x00\xc6\xa8\xe4\xb9\xd2\x1f\x0e\xe7[\
+C\x00\x17\x81+\x95\x1c~\x9f\xcf\x01\xf5t4\x9e.\
+Z\x0c\xd0z\x00x\x81j\xca\xba!A\x84Z\x86\xd8\
+\x14\xff\xbe\x93\x03\x0e\x023\x9e\x1b_|\xcf\xf8\xb7I\
+P\x9e\x87\xcfI \x0b \x83\xd8\x14\xe35\x09\xe0\xb8\
+\x9e\x03<\xb7\xd5j\xdf\xb4&\xd5\xf4\xf2\xb7\x0e\x08\xf6\
+l\x22\x8d\x04\xfc\xfd\xcbei\xbey\x8dP\x1a\xe3'\
+\xe6\xe3:a\xd21Y\x13.*\xd0$L0/\x1a\
+%~h%\xe0\xf9\xb6qw\xc3\xfd\x86\x91\xc3\xdf\xa1\
+rE\xa2\xcaz\xe4\xa0\xc5\xff\x5c<\xb4\xc4DE\xfa\
+v\x03\x18\xcb9Q\x18S\xcdy%\xa1%Q\x19\xab\
+\xe4\x03\xfc\xd0\xdaa\xa6O$\xac\xe3\xe7F\xe2\x8f_\
+\xe3\xf9\xb1?\x00\x10\xa9dz\x1dQ\x09\x0cF\x01=\
+\xae\x8c\xbf!\xd1A\xbc\x12?\xce:\xc4?R\x01\xa4\
+\xe2\xcd\xf5\xf1\xf9\xd0\xfa\xa0\xb2\x04\xc0\xc5\xbee?p\
+\xdf\xc7S\x02x\xe5\xf3\xf3\x5c\xa1\xb8\xf3\xfcF\xfb7\
+\xe6\x88\xd3\xaa\x04\xf3\x81D\x85\xe7\xf1D\xaf\xef\xd5\xbd\
+\x8f\x00D\xae\xf0\xdf\xe7}\xf8\xa2B\x8c_\xe2\x8bJ\
+\x0e\x8c\x1f\x9e/\x15J\x03n1\xa5\x04?\x86\x7f@\
+e\x1aus\xfc\x13\xeb\x94\xc4\xd4\x00d\xa85\x93\xe8\
+\x22\x86g5\xf78\xdf\xe9\x85&\x81\xe7\xf9\x91\x90\xa0\
+]\x84\x08\x1f\x15~\xee\xf7HT/\x98\x5c\xacW\x18\
+A\xa3\xeb\x86\xea\x19q\x08\x89:\xf1\x06\x01\xe0\xb8\xd7\
+\x1e\x86#\x09\x99\xc7\xfc\xc5\x94\x0c\x9e\xef\xb8\xd5f\xec\
+\x1fI\xf8\xa1\xa4\x8f5^Xo$\xee<'O;\
+\x89\xf5\x0f\xb0\x0c\x00\x00P\xc0:\x1a\x7f\x1e\xde\x17&\
+\xc8\xa6\x9e\x86\xb0\xd4@\xa9\x0f\xe6\x00j\xed\xa6\xc6W\
+\xaa\xf5[[\x0fph0I\x9b\xe9\x93M\xbc\x91\xf1\
+~\x04\xde\x04\xce\x00\x010\x1d\x03x\xe1|3p\x10\
+~\xd2\x81nT\x92\x11\xa1\xa5\x80\xe1\xca#ZN\xfd\
+F\xfd\xc6\xbd\xa6\x0c\xbcM\xd6T\xb2KX}Q\x0d\
+\xac\xa9\xf8\xa2=A\xaf\xefs\xcb)\xf1\xdc\xd6\x8a\x8a\
+(X]\x9f\x7fm\x9a2q\xdf\x10\xdf\xb5\x06D\x00\
+B\xac;\xcey\xad61_>[\xec\x10\xbf\xef\x99\
+\x09(\xd0X\xbe/\xa4\xb1^\xee\xb9\xa7\xd7\xb9&~\
+\x9f\xaeS\x0b\xea\xfc\xef\xc9\xf5\x83\xc6Tq\xb2\x93\xe9\
+$M\x9b\xb0\xb6\x0a\x09\x5c\xb4\x06B\x116\xf5\x9aq\
+i1\xb6\x98x\xce\x9f3\xa6\x11Yki\xb2\xa8\x06\
+G\x97\xfbyn\xf7\xab\xeeW\xc9\xff~\xb3\xd8\xf1)\
+.\xb3\xd8ue \xec\xdf\xa6EE<\xcb~3P\
+\x15\xe7\xa3\x18\x12\xa7\xb7qu\xd3\xe3\xa6\xc7j|u\
+\xff3Y\x15o\xfc\x8a\xc4\x1bc\xce\xbb\x00z\xc5\x8f\
+\x0f\x0c\x89^\xb7\x8c\xcc-\xb4?HZ\x06\x12#\xfc\
+\x84E\x02\xcb\xcf\xeb\xd3\xeb\xf3#\xe6\x16s\xd5\x1f\x90\
+9\x81;+M=\x90&\xc5\xc9\x09\xf0\x81\x0aN\x02\
+\x89\xa6\x82\xc5\xd4\xfb#\x8b}\xad2U\xea\xe7W\x83\
+\xc2\x9c\x80\x9bo\x0e\x8c\x89\xb9]\x8bi\xdd\xdf#K\
+\x05Ck\x13\xcc]Z\xec\x0f\xe5\xf57\xb2&\x96J\
+K.\xd4\xf4\xfe\x1d\xb2\xf2sw\xca\x9ch\xbe\xd1\x9a\
+W\xdfM\xd3}\x0c\x0c\xa1M4\xf9\x9c\xcc\xd4\xfd\xd7\
+Z[\xac\xc4s\xb3[\xc8Z+Z\xbf\xb8\xac\xb8\x85\
+\x0dd)\xd1\xf4\xf9\x17\xbd\xffJ\xacOI\xe2\xce\x8c\
+\xbb\x84A\x05\xf3\x17?\xa0}\xb6S\x12uW\x99\xec\
+\xc7I\xcc\xf1v\x99[8\x0eOS\x15\xdc\x82[\xbc\
+\xcf&u*\xc2>\x83&G\xb7\xae\xac]\xe7\xf4\x0b\
+Co\xfe\xe4\x0f\x93K\x95\xa7u{u\x1f\xe8\xca\xbe\
+\x9e\xae,k-\xb4L\x85\xc3\x8f\xd6\xd6\x90g\xa6\xf1\
+\x8e\xa7\x95}wZm-\xbf\xb1j\x04\xc0\xcc\x02\x10\
+wkPh'8\x8e\xee\xd7\x955`l\xfa9Y\
+*Dy\xba\x5c\xf9\x9c\xc5j+\x85\xac\x15v\xfd\xf3\
+\xd3\x83d\xa9P\xc6\x14\x0b\x12|\x17\xd2CS\x04\x86\
+\x94\x99\x08\x00\xd6\xb3,@\x0e\x0az\x0c\xe7>%3\
+\xd5V\x88\xe1\x96\xdd\x965\xf1tb\xc4\xc6D\xbdu\
+r\x8e,\x05x8:/\x8c\xe9\xaa\xb2F\x95\x0b\xaa\
+5\x07\x0bTG\x1f\xa8!\xd2D\xc5\x80\x83\x89y\xeb\
+\xa26\xfc+\xa9\xfe\xd2\x82@\xe5\x89\x0a$\x08\xa7\x03\
+\xf0~1Yy\xddZV^\x9f(KcM^Y\
+\xec\x15I\x15\xfbO\xb2\xf2s\xc7\xcaRbwN\xd5\
+\x93\x1e*\x17\xefi\xa2d\xd5a\x96\xef\xbb\xbf\xc8\xca\
+\xf7?\x95\xb5\x0az\xf7\x02Y\x13)\x8cJ\x9f\xe6R\
+.\x9f(\x83\xcc\x99U\xfaq@j18W\xe6\x8a\
+\xf4\xc7Gsx\x7f\x91zO\xe8Q\xa7\xf7\xcc\xd7Q\
+\x91\xf6\xed\x13\xd5roY\x13m\xac\x14\x1b\x89s|\
+\xb2Zk5p@C\x85T\x04ZQsB[@\
+\xe1B\x0e@\x00jX\xa0\xaaPj\x03\xdeQ\xecv\
+'\x0a\x8b\xa6\x84\x0c\x86\x00\x89\x9f\x16\xf4\xc9\xed\xf3\xd5\
+\xe3xek\x13\x9c\xd4\xa81\x11\x08x\xfa\x03=m\
+q\x80\xd2\x1bz|\xb1o\x96\xef7\x94=N\xc0\xca\
+\x98\xc4\x85j\xcd2\x02\xd5\xa0b\x9b\x22\x16cD8\
+\x00\xe8\xe1\xe1@\x87bl\xb1\x8e\xda\xf3\xf3\x86\x14\xc0\
+#\x0e\xe2@,z\xfb]Q\xa3\xb209S\x96*\
+-\xd6&\x08\x87\x0fPFB\x08c\x06Q0\xa8\xb9\
+T\xc2\x08\xf4\xc7j\xf3P\x94\xa9\xc0]\xe9q\x96\xfb\
+\x0e\x81\xc4\xbc\xdd,\xb6g\xf5\xf4\xe9e\xd3\xcb5\x0e\
+4\x0e\xecqk\x01\x89\x0b\x89\x0d\xeb\xe6\x1a\x8f\x17\xa4\
+\x07w\x91\x91\x0a>\xbd\xd5\x88\xa6\xb9R\x1e\x09\x16\x81\
+7\x89?\xaf\x04\x84\x5c'\xea\xfa$bp}Hx\
+\xf17#Q\xb2\xe8\x89t\xe2@`E\x8bM\xffR\
+\x99\xd7\xcb\xed\x0ex?\x96\x12\x1b\xf6\x8bD\xb2\xa4\x85\
+\xf2\x97a\xac\x11~k\x81\x16\x01\x05\x1c\xa7\xc9\x9a\xf8\
+T\x09C\xdf\xda\xbd5\x8d\xcd\x82*\x8d\xdf\xf3\xf3\xab\
+\xfb\xe7\x8e\x94\xe8\x22Nh5\xfd\xb8\xffT\xf4H\xa4\
+Hx\x01\xf2X\xaf\x04r\xbe/\x04H\x93\xe7\x98\x0a\
+\x0c\xa5\x9e}:V\xbdG\x83\x04\xa6\xd6\xd2V\x1b\x7f\
+\xdb\x88\xba\xcd\xf3\xe6\xfe;\xb1'\x90e*@\x00\x00\
+$\xdc$60k\xeeu\x02\xb4\x9a\x9f[S\xd1\x1e\
+\xc6\xf6\xc0\x5ca>;\x00\x02@2\xc0\x15\xd7O+\
+\x8c_\xa9\xd8E\xe2D\xe2HO?c\xcfhY\x03\
+\xf0\xa2\xe5\x8d\xc4\x93J:\xe3\x1c\x19\x17\xb7\xae\x03\x5c\
+(\xee\x00|\x00\x03k\x8c\xae\x0b\xff\x04\xc5\x1c@\x89\
+\xd6\x18\x127\xee/L\x11\xae\xdfL\x0d\x02\x9ar\xba\
+\x0f-`\xb4\xcc\xb1\x8e\xa8$\xe0'\xd8\xbfP\xd3\xe9\
+y\xa6\x02\xcc\x983\x004\x00\x1bZ\xc1\xb8\xbf\xf8\x05\
+\xc6\x9b!\xce\x87\x96\x88\x03\xa5\x9a\xf8|\xf6qz\xf8\
+Q\x81flR\x88\x0c\xf9\x8bs\x8c\xe9\x05\xacG*\
+\xa5\x8c\xef\xc3\xefs\x9f\xc7\xaa\xcb\xac/\xd6+\x00!\
+\x9f\x93\x0a\xbf\x81\x5c\xce\xf9\x10\xff\x05\x90\x00H@T\
+\xcb\xa2u\x8f\xf9\xe2\xf9\x8e+\xed\xe3\x9e}\xfc\x22\x00\
+*@\x02Z/\xa3i%\xf1s\x00\x09$\xfc\xdc\xd7\
+1\xc3\x81W\xde\x17\xff\x01\xb3\x0b\x7f\x0dS\xf3\x9f\xd6\
+\xca@t\x998\xc5@\x87\x1a\xcf\x94\xa8E\xc2\x89\xe8\
+\xd4\x05n\xb9\xa1\xb5\x93u\xe3\xf8\x0cjtL\x8b\x80\
+\x19\x00u\x96\x0a\x9d\xc5\xbb\x1e\xd3\xaaxl\xb5\x88\xe3\
+\x02 \xdb\xdf\x00.\x80\xe8\x98)\x03\xc3\x8f\x7f\xd7\xac\
+\xa4K\x1a#&(\xd4\xdf\x99~\xb72d\x7f3\xef\
+\x82z\xee\x02\x04\x1e809#\xf1\xe3\xf9\xa3Qc\
+\xd1\xc4\x10\x7f\x84\xf9h`\x8e\xc2Q\x95&\xdc\xdc\xeb\
+ys\x17.\xbe\x9aZ[h!\xf0z\x9a\xfeD\xd6\
+\xa8\xe0\x95b\x7f|\xeb\xcd\xeev\xec\xde\xd3\xbd\xa7&\
+F\xb5\xa2\x1d@\x9c\xfdI\xff\xdf\xb2\xb4\xcf\x01\x9c`\
+Hy\xfa@-\xf8\x1c\xde>\x17\xbd\xca\x93\xb3e\xb5\
+\x95b\xa0\xe2\xab\x02[\xd6]\x7f\xa6,1\x0a^&\
+K\x15T(\xd10\xaf\x96\xac\x03\xffb\x0a\x03\xe7h\
+\x00q\xbe\x9e\xb9\xabd\xad\xd2=YD\x90C9N\
+\xf6\x92%M\x09\x8f\xb3\x8b\x8a\xb2\x99x\x93\xff\x19\xf2\
+\x93\x997\xc8\xca\xe7\xfc\xba\xcc\x80\xdc\xbd\x1e\xb7wv\
+[\xd7\xfdY2'l\xeb\x19 xa\x12\x93\xddL\
+\xd6\xc6MS\xa1g\x0aB\x8d\xe3N\xb0\xc6\xc1\xeai\
+|\xa8\xcaeG\x94\xff\xfe\xd3b%!\x9c;\xba\xd8\
+1\xfe\x9c\xe5\xbc\x9e\xfb\x8e\xac\xfc\xfb)\xb26\x06\x93\
+\x04y\xee3\xb2\xd6\xd21s\xb6\xac\x01\x0c\xf3\x8e\xae\
+60\x17\xca}\x9c\xdbW\xd6(\xf2\x93\x13eil\
+\xa5\xef\xd7\xccke\x16\x07\xbc\xb9\x8d\x1d\x9c\xdd\xa3\xd8\
+\x9e\xe5\x18\xb9FV\xfe\xfb\xbe23\x08NHc\xc0\
+\xad\xfd\x83\xb6[\xec\xdb\xf5d\xe9\xf9\xc0\x0c\xa7\xf0\x8b\
+\xa8\xe8\xf9\xb2$6\xcc\xb9\xef\xf5\xd9\xdfY\xac\xf8\xd3\
+\xb9\xf7\x17\xfb\x0f\xc7\xd7j\xb18Q\xd6\x80^\xcdj\
+\xab\x8c\x0f\xaf\xe3\xee\x9cr\xff\xceI\xe2\xa1\x1f\x92%\
+f\x0e\xf1\x9b\xcf\x85\xe9\x7f\xbb\xd5\xc5yX\xf4\xdc#\
+\xe6\xfc\xe3\x81\xb9;]\xbf\x5c\xd7\xfa\xb5\x05\xf4[\xb5\
+\x85\xd6~5\xb4i(p\x9b\x91\x82\xb6\xde\xdcF\xb2\
+\x96\xc7\xf5\xd7\xcb\xd2\xb4\x10\x0ad0i6\x97\x95\xd7\
+w\xcb<\xa5c\xe9\xd4\xaaJ\x8b\xee\x989F\x5c@\
+\xa1\xde\xe7\x14Lx\x80\xc0\xd9\xa8\xd0\x10\x08\xe8\xb6/\
+\xdaD\xe0B\x1d[\x04\xd8/\xa7\x8a)cx\x8c\xe8\
+F \xc4\x07B\xd5\xdfT8\x10\xb4Z_9\xa3\xa9\
+/3\xa7\x92\x84\x11\x04\x98\xf7\xef6\xe86\xec6L\
+\x0e\xd0\xd4\x0b\x1c~\xa8)\x82\xb4\xd3\xebG\xe0\xe2\x83\
+\xb9\xaa\x8f\xbe\xdd\x14\xfbK=\xaf\xb1\xdc\xf0\xc9\xef\x8a\
+\x95\xc0\xaa\xdb\xbf\x98\x02\xf8\xff\x92\xb5\x83-\xe6\xb6\x1b\
+\x88\x80\xe2\x16\xe2`\x04\x0a\x88\xa90F\x0dU`\x07\
+z\x95\x02\xa4\x04^\x80lodi5\x07N\x7ft\
+\x00\xf2P\xea%BD\xc9*\xed\x93\x0b\x8a\xfd\xa6\xf5\
+\x06E%\xc0\x09\x09\xad\x00\xf5\x0b\xfd\x18:\x00\x00 \
+\x00IDAT\x98_\xa5\x8d\x1d\x99\xeeT\xec\x83N\
+\xc0\xaen\x01g\xfd\xbb\x9f\xf7X\xb8S,N\xb4\x86\
+\x1d\xcd\x0f\x9d\xe0\x1d\x96\x90:*\xe7\xcc\x11V\x05\xec\
+\xa3\xa6B\xed\x96TSu,\xae\x98z\xe4\xe8i\x14\
+As\x97\xa4\xb2\x0a@\xa4\x9f\x7fz\x1b\x1fY\xd7\xc7\
+\x8fSb\xe2y\xac\xa8\x1a\xd7\xe7\x91\x03{\x02\x1d\x10\
+f_wP\xc48\xf0\x01D\xc6=}\xe3\xb1}|\
+\x91x\x11`q@B\xfd'\x91\xf1\x01\x16\x07\xbb\x08\
+\x8a\xa7$Q1\x01\x04\x1fJ\x08:b\x98\xbe/8\
+\xeaP\x01\xf6\x81\x1a\x01?\x0c_\x07PPb\x99\xf7\
+\x19\x07\x10j\xfe0r<\xe7\xb4\xdc\x8b\x81\x22\x0b\x85\
+\x97\x8a\xd2\xb8\xb2I\xa5\x19Q\xc2\xa3\x07\xc4\x16\xa4\xb1\
+\x1cw\xc3x\x11\xee\xa7\x11\xfe\x10=d\xba\x07\x15i\
+\x12s\x1c,\xcf\x87\xfb:f0\x10x\xaf\xe4\xca\xe0\
+:\xbe\xdf\x88\x021_z\xf4\x9c&c`\xc3\xe2/\
+\x15\xceY(Q\xd5\xb9N>?\x80\x00=\xe5$P\
+$B\xbc\x0f\xc8\xfe\x9e\xb2\xe4\xa8\xd5\x00\xb1Mb8\
+\xa0b\x8b\xb8'\xaa\xd0\xbe/1\xc5\xe4\xca\x0a\xb1\xcc\
+\x9b>KV>\xc6?d\x0d\xd0\xea>&k\x95\xac\
+r\x5c\xd6\xf1\xaaQ\x81\x05`\xf2\xd8\x9dHP\xb8\x9f\
+0\xa7x\x85\xc9\x81\xba9\x01\xbe\xf7_\x88\xd2P\x99\
+\xa5w\xef\xb8\xe9\xf1\xb5rC\xa2O\xe2\x04\xc5\x1f\x11\
+4*l$0$\xcc\xf8a>/-([\x89K\
+\x96\x18a$J?\x1a\xa8n\xf1\x1c\x00h\xd8\xa7\x1c\
+lO\xb0\xe8\xe6\xfa\xd6N\xe1kf\xd43=\x9e\xeb\
+\xce\x7f\xa7\xf2L\x85\x16?\x01\xf5\xdf\x15\xf8\x08P\x01\
+T\xe9A\x06\xf83\x90W\xc5\xab\xbe\x99\x18T\xf8#\
+\xee\x17\xeb\xb3it\x0c\x15\xd7\xa7;\xf1\x22!\xc3\xdf\
+\xc1\xd4\xe0yp\xce\x90P\xf3<\xf0[c\xa6\xc1\x22\
+#qF\xc612\x86\xc8@T\x883\xb9\x12\x15\xad\
+6\x00=\xfc\x1ec0\x0d \xc74\x07\xee#\xfb\x8a\
+\xe7\xce}\xa7\xf2\xee\xcf\x11\xd3/<\xe5$Z\xe3\xe8\
+\xfdd*\x08\xd7\x0f\x10\x8c\x96\x8a\xc7!E\x82\xcb\xb9\
+D\xa5\x96\xfb\x87\xc6\x81\xd7}h)\x00\xc0\xd0\xcb\x0e\
+p\xe0\xf1\xc5\xf1\xfb\x8b\x8c\x00D\xae\x93\x16-\xce3\
+Wf\x02X\xa0\xf2\xc3:\xc3\x7f\x10\x88\x8d\xd7!\xcf\
+\x0b\xe0\x96\xf7\x1d1u\x10\x15\x8d\xfd\x0f\x83\x85V\x94\
+\xf1\xdf\x85a9\x16/d\xfdQ\xf1G\xdc\x0fjx\
+n\xd5{Bb\xc4\xc0\xa4\xf3\xf8\xd8\xc9\x8fd\xad\xd5\
+\xb1\xaa\x8d?\xaf\x01\xde\xc4\x8b\x00\x07\x01\xccx_\xd1\
+\xea\x10Tk\x18\x04P\x88a\x10Hd\xf9\x95\xed9\
+\x91H\xf6o\xea\xb7\xeb\xb7s\xcb\xe5\x01\xa9B\xec\xf9\
+\xe5\x00c1\xa5\x00\xe6\x00@\x92\xe3\xd2\xc9k\xed7\
+\x11=6\xd0;\xdd\xc0\xad]k\x0f-\x85\x11\xbf\xee\
+:\xddm\xbak\x02F\x008\xe8\xe9\xb56MM\x18\
+\x0emT{*z\x88\xe4q\xbe\x87\xff\xf4\x14\xa2\x10\
+C;\xbeZ0H\xa3'\x18\xbf\xedx\x93\xcaw$\
+*\xeb\xc8\xca}\xf9\x89\xac\xae\x8b\xe1|\xbb\xde\xadm\
+N\x1c(\xc4!\x8e\xd8\x9f*K\xeb\x0f\x86\x15\x05\xa6\
+\xd1xP\xe2\xc6\xda\xf3\xfcj\x17\xda\xce\xf4}\xfa{\
+\x8b\x7fk\xa5\xf2\xb0\xd6*C\x81+Z\x16(\x08 \
+>\x0d\x13U\xd1\xc1\xfdml\xdc\xdc\x89\xb2T\xb0q\
+\x82\x88V\x91V\x83\xd6C0E\x10#'\xe1\x06\xd0\
+\x00\xe83\x80\xd1\xad\x22k\x15o\xd6}L\x1f\x83\xe2\
+\xaf\xdd\xbf\x82\x13\xb0w\xb5\x16\xdc\x0a+\xbe\xb4\x15B\
+\xfa\x17\xc8\xca\xeby\xc5\xceoS1\xa6k\xca\xdas\
+\x85r\xdf\x1f&+\xd7w\xa6\xac\x01\x97\xfd{d\xe5\
+\xbf\x9f,+\xbf\xffAYc\x00\x07\xf0\xeb\x04\xb0_\
+J\xd6\xc6\xed\xf1\xfcx\xde\xfd3e\x89!\xe7\xfc\x06\
+\x80;\xc4\x1d\xcf\x915\xc0kf\xefb{\x95\xfb\xb4\
+b\xb1\x15\xd2\xf5\x98\x92^\xc7\xa6\x97\xf3{fSY\
+\x13\xd3\xec\xdf%+\xaf\xdf.\xf6-\xe7K\xe5\xdc\xe9\
+>'\xab\xad\xd1US\x85u\xcb44\x18\x02\x93\xef\
+\xc9Z\xc2==X\xd6\xe2\x0c\x12\xf2\x99[\x8a\xddl\
+\xbfqQ\x12\xe3\xf4X\xda\xdar\xfd\x9f1#LZ\
+\x18\xcbT-\x8ce\xfae\xfbe\xeb\x98\xbf\x9a\x00\x87\
+\x9fC<\x98\xef\x7fi\xa6\xcd\x16\xb2\xf2z\xf9P\xf8\
+*9\xe6\xa0\x81d\x86\x11\x8c\x80\x00\x94\xcc<\xe9_\
+$+\xcf\xf1xYe\xca\x0d\x85;\x8b\xef\x92/v\
+\xaf\x93\x95\xd7\x8f\xc8R\xa1g]Y\xf9;o\x90\xa5\
+i\x06\xb4v\x03 \x1b\xe0dj\x03b\xb3\xd1:\x8e\
+v\x81\xa7<\xd1*\xc1\x98\xc8\xd9\x99cd\xa97I\
+\xbd\xa0\xafk\xbd\xbeQ\xd9'\xb1t\xe2\x1e\x81\x08\xd4\
+f\xc4^@\xde\xe8\x8d6\x82\x13H\xe8\xae2\xff\xf7\
+\x07SO\x04\x14D\x85\xad\x7f3\x02\xbejM|\xaa\
+\x08D\xf4\x08\xffg\x1d\xa8\xd5\x0eV\xa8'\xa8p\xd2\
+\xe3\xea\x84\xad\xdf\xbeX9 \xe6\x16\x97\x95\xefg\x8b\
+\xcd$q\x04(0 \xaeT\xec\x9d\xc0\xd7V\x80\x87\
+\x9c\x80]\x98\x0ezS\xe9k\xaf\xe4\xf3\xeb8\x8a\xbf\
+j\x83B\x8d\x8cq2\xa8\xb5\xaa\x92\xfd\x11\x03\x1b\xff\
+\x9d\x0e\xe2\x8b\xab\x1eu\xa3\xe6\xaa\x03R\x94\xeb\x93\x8a\
+\x89qq\x9e\xac\x01 \xa1Z\x0a\x85\x9e\x00\x5ca\xf6\
+\x15)\x90yR\x9d,\x1d\x1a\x0d\xf5\xa0|\x93\x1d\xcd\
+V\xe9\xf3\xeb\xef\x9f\xeb\xc4\xfc\xd3\xe9 \x82JB\xe2\
+\xfb\x8djA\x89\x078\xa8a\xdb\xb1\x0e\xd0>\xe7\x03\
+\xf1\xa4$N\x84\x88\x93\x13\xc0Z!{UC\x98+\
+\x95\xfe\x07\x0e\x84\xd6w\x82\xfa\x5cW~?\xd3z\x80\
+\x18[REm\x96N\xd3'\xbe/k\x95STA\
+CL\x92\xdeW\xc6+\x8e\xe7z\x13\xb0\x12p\x13\xd0\
+\x12\xc0q0R\xe1$@1\xd2Y\xe7\xf3\x1e\xd0(\
+;\xf5\xf5\xf0$\x12\xc3\xfcW\xc4\x1e\xd9\x90\x88\x22\xb1\
+\x8fH\xccA\x00\xf9\x1c\x04\xfa\x00\x11$h\x1c\xc0J\
+\xb3_\x91\x0e\x98\x9f\xc9Ro\xbc\xe7\x1dG K\xa0\
+\x08\xd5\x96\xc0\x90\xbf\x0fE\x18 \xe0\xd3\x03`3=\
+\xc9\xbdQ\xa6\x86\xab3\xae\xf6\xc61\xbf\xfc\x01'\xa0\
+$\xeeTD\xa9\x941\xbd\x80\xeb%\xb1\xf2\xc1+m\
+f\xa93Ge\x8e\x84\x9e\xfb\xcf\xcfm\xe0\x84\xa9U\
+<\x17L\xfc\x16\xf1+\x81\xf1\x03\x06$\xe6F@@\
+\x9b\xf3\xbe\xa0\xd8\xd3\x98\xba\xeb\x04\xb5\xfb\x81\xccc\x7f\
+n\xb6(\xe0\xae\x06\xf0.o\x07\xf0\xe4\x22Y\x0a\xd8\
+\x01v\xa8\xec\x93x\x1c/+\xfe\xa8\x93\xb51C\xfd\
+-\xb2\xb2<\xbf \xab\xcf{\xf8\x1c\x00B\xac[\x98\
+T{O?2\x1d\x0e\x8e\x05\x01\x1e\xaf\xf3\xa8L\x02\
+\xbc@ME\xec\xcf\x07G\xecW*c\xec{\x80]\
+*\x91hX0u\x85\xc4\xcf\x89\xf4\xf4\xd7\xf6\xd7h\
+\x13 \xb6\xb5\x9a\xa9t\x8c\xe1\xa3\xb2\xc8\xfb\x91(\xc3\
+\xe4h\xd3\x0d\x86\xc0me\xafS\xfc\x1b\x89\x0d~\x94\
+\xd6%*\xd5T\x829\x87\xa8<\xa3\x15\xc1\xfa\x02\xa0\
+0\xd53\x80-Zt\xf0\xcb\x00x\xe3qp\xdbU\
+k\x95\xff\xf7T{\xac&\x00\xcf\x07\xe0m\xc9\x05\xa7\
+\x83\x04\x85\xd0\x81]T(\x9e\xe9D\x90\x16\x1e\xf6+\
+\xfb\x08\xa0\x8d\xfb\xc04\x18k\xc9D/\xff\xdd>_\
+I\x08\x8e\x19\xc4\xd2*\xe5\xf9\xa2\x04\xc0\xc10\xd8[\
+\x96\x12u\xcfiFl(\xc4:\x09\xb4I\xac\x01\xae\
+I\x94\xadE\x12\xfe\xd5\xeb&\xfe\x1d\xc6\x9f\xc7\xe7=\
+\xa6\x05\x82\xc4\x94\xe7\x81\x1f\xa1E\x01\x00\x85\x9f\x1b\x8f\
+S\x84\x91\x888!@%@\x81\x03\xc6H\xc49\x0f\
+\x08\xb0\x00X\xf0\xcb0I\x98\x1aD\xeb\x17\xefG\xa2\
+\x01\x00\x06\xb0\xca~t\xa0\x1cc\xb6\xd8\x97\xbc/\x00\
+\x1b\xfb\x91\xd6'\xf65\xc07\xfe\x8a\xcfI<\xc4\xfe\
+\xe6~\xb0\x0e9\xbf\x00P\x00\x1a\xa8\xa0\xf3>\xec;\
+\x12'\xc65\x03\xec\xa2\xa1B\xc1\xc8\xccG\x02\xdf\xe9\
+\x0a\xb2\xa4\x0d\xc0t$\xd4\xee=_{r\x84,M\
+\x87aN\xbd\xc5\xf0\xea\x14\x95_\xa7\x0a\x1c\x14\x5c\xb7\
+\x9cT\xd1\xea\xa77\x95\xfd\xee\xe5\xb2t\xae\x18\xa8\x0d\
+\x111\xb4#\xd0\x8e\xb1\x96T\x95\xf6\xdd\xa21bB\
+D\x99}\xf4q3\xe1\x5cp\x9a\xb7\x89\xe7k;!\
+\x801;\xfd\xd1\xd0jZ\xf7\xc9\xb1\xe9\xfe\xc1,\x13\
+\xd0\xb5{b,\xd2\xaa\x82f\x12\xfb\xba1\xd7\x86/\
+\xfb;\xe2\x85~}Yy=\xbb\xd89\x0d\x18\x89}\
+\xee\xf5\x1e=\xc8P\x86\x9fm\xed*\xae\xcf~\xb7\xdb\
+U\x96\x00\x02\x8b\xea\xc5z5P\x00\x10P{\xfb/\
+N\xe2\x89\x9c\x97wW\x0f3\x00\xd1\x0f\xb8\xd2\xfd\x95\
+&z\x88\xf6\x14\xa2jL%\x88q\xbe$\xb0\x22\xbc\
+\xef\xd6\xe2sZwaT\x05\xf3\xe8\xb7\xb2\xea\xbf+\
+c\xacD#\xf5zg\xce\x9e9g\xe6\x9c\xb4\xde\xf1\
+3\xdc\xdf\xa3\x06\x7f\xa4\x99\x01uj\xc0F\xc3y\xd1\
+o\xddo\xd5o\xd5\xd6em\x85{US\xe1\xa7%\
+!(\xe0\x9ev\x82h\x5c\xffZY\x13c\xec\x0f\x94\
+Um\xa5b\xe9y\xc3h5 \xdbo$+\xaf\xcf\
+\x96\x95\xd7?\xcaZ\x22\x1d\x15v\x0a\xa4G\x96\xf7=\
+\xb2NIX\x7f\xb2^\xaa\x04\xe3\x1f\xa0z;\x81\x0c\
+\xc6\xa8\xc7Rv\x1b\xcbZ\xe2\xaf!\x8d\x1a\xd3\x18@\
+6\xeb\xd5\xc0\xcc\xcca\xb2\xf2zA\xb1\xdf\xb4\x84\x14\
+\x863=\xf8\x01p9>\x88q\xc8n\xcd\xea\xb6\x97\
+\x95\xd7\xef\x0db{\xa1\xa1\xa6\x82\xe8\xb4\xf6\xe4\x17k\
+yB\xbf\xa9\xac\xbc\xfeBV\xde\xffE\xb2\xc4\xf4\x91\
+\xe6\xd9\x87\xca\xe7\xff\xb2\xaci\x8a\xf4\x8f\xca\x0c\x1c|\
+\xc6\x85\xdb\xbf\xd9\x7f\xa8\xb5e\xa5~E\x89\xdd\xf7\x97\
+\xf4\x17\xf7\x97\xa4\x96j\xc4\x8e\x19\xe7\xb7\xdaP\xa0\xad\
+\x85\x9b\xeb\x1au\x7f\xfa$\x8b\xfb\xbdNV\xfe\xfb\x7f\
+\xc8\x12\x13\xc8c\xbb\xd1@\x89<\xd3\xadA\xc1t2\
+\x10\x07\xd0\x05S\x05@5Z\xbf\xaf\xb3V\x14LE\
+\xe7aL\x11A\xbb\xa2\x02lOm\x0cE4A\x22\
+\xae\xf1s\x85\xb92]F\xc6\xd0\xaf\x85,B\x22U\
+\xc9\xabeM\xd5\xb5R\xd6\xd7NsD9\x089\xb0\
+\xe8\x9d55:\xe6\x84#\x9a\xe4\xc0!\x02H#\x89\
+PM\xe3\xc2\xa0`#\xa2c\x87\x1f\x07[\xee\x1d\x9d\
+K\x01\x854\x10\x7f\xd4\xc6\x1b\xd4q/\xe5\x00\x98;\
+W\xd6\xc4_\xfa3d\xed\xf3\xa9c\xa9\xf6,}]\
+V^\x97.\xf6\xe4\x16\xc0\x93X2\xb7\x16\xc4\xae\x8a\
+\xf5\x1d\xe1\x84k\x093\x1e.\xb7H\xd1\x97\x5c\xa9W\
+\x05\xf6\x0aY\x1ao\xa3^\xc6mS\xa2\x03\xc5\xcc\x95\
+\x95\x1a\xf6\xea`\xbd\xab\xd8\x9dIS\x81\x00\x85@\x94\
+\xc4\x85\x0a\xa6p\xd1\xbbR\x85\x8fV\x0a*\x93\xa6T\
+\xd3[\x83X\x0e\xa2\x8a\x88\x93\xd4\xf0x='`\xaf\
+w \xb7u\xdbhQ\xb1{\xb4vW\x07RK\x8f\
+vm\x0dxER\xb3\xe7y\x19p\x08\x0a\xb2\xdc\xfd\
+nv\xd0\xab4\xf1\xc2\x18\xaf\xa7\x0e\xaf\x0f{\x83\xbd\
+\xb61\x12\x82\xf1 \x82\xd8~Im\xf5\xdeb\xf7\xb9\
+W\xe8\xa7\x89\x8ahjS\x8c+a\xbd@y[x\
+\x94(\x12P\xa1\xe6\xcf\x17\x01\x1d-\x0d\x92b\xdc\xb7\
+1G\xa8\x04EBt|\xd5!\x0d*V\x88SB\
+\xf9s\xc5\x88\xb1\x22\xd1\xaab\xeas\x04\x22PXa\
+\xd4\x00\x5c\xb8\xa2P\xc3\xd2\xc5S \xcb\xdca\xa8\x9a\
+$\x88?w\x0f?s\xbeI\x1cH\xa0\x08\x985v\
+g\xbd\x84 ;\x81@\xdc\xb1{\xb5,\xcd5\xfd\xb0\
+,\xb5r\xdf\xe5\x00\x1dF\x80U^#\x01B}\x1e\
+\xa0\x81/*\xc7+\x8d*\xa2P\xb5\x09h\x09\x8c\x08\
+l\xa9\xfc\xb1\x1f\xf8\xbb<g*\xe2\xbd? \xff\xce\
+}d\x1c\x1d\xbfO`\xef\xca\x22\x95C\xaesr\xf9\
+\xb0\x1f\xa5\x892\xb9\xc6\x89\xdc\xd3\x0c\xacm\xdf\x1cv\
+\xf8\x97\xff\x95\xa5\x00\x1c\xa0\x14\x7f\xe6\xfb\xd2\xbdLV\
+>\xe6[d\xb5\x02\xb5\x81zQ\x09\x5c\x03\xc8\xfaL\
+\x1d\xb4\xd3Z~H\x88\xd8\x17$p\xf8\x09\xf6!\x09\
+5\xd4p\x00\x01\xaf\xff\x10+\x03h\x22\xb1%\xe0\xa2\
+\x02D\xc0O\x02\x06\xe5\x8c}\x01\x95\x96\x04\x8e^\xe8\
+\xfb\xfc\x1c\x00T\xbc\x9e\x03\x08@\x94\x0c\x00\x00\xa0\xca\
+\x80\xc1\xbcE\xbc\x1e\x00>x\xae\x5c\xbf\x13\xf9hY\
+x\x97\xf7!c%\x11M\xe4>\xb0\x8e8p}\x80\
+\xc69\xc4~\xc3?0\xd5\x03Q\x1dT\xbb\x05\xd0\x9e\
+\xd4^\x03p\x80\xba\xceu\x90\x90\xa0w\xc0\xfa{\xd0\
+\x956\xc6*\xd2KN\x02\xc69\xbb\x96\x03\xbf\xf3\x9c\
+0\xae\xe1J\x17\xc0\x0b\xf7\x8du\xccu\xb2o\x1as\
+`\xf8\xf9\xeb\xfc|\xf0\x83T\xd6h)\xe2\x8b\xf3\xc5\
+\x8c\x98P\x0d\x87Z\x8d\x1f\x82\xf9\xc4s\x01\xd0\x01@\
+\x84a\x02\xd5\x1f\x06\x18\xd4\xdcKd\x0d\x10\x0b@\x09\
+\xbf\xcb\xe7\xa4w\x95\x84\x01\xe0\x85\x96!\x18\x01\xdc\x0f\
+\x98<\x00\x12\x8c\xe9Cdx<\x1epk3Sx\
+\xee\xec3\xfc\x19\xeb\x1f?\xcfs&\x0e\xe2\xbaa~\
+y\x8aF\xb4\x8a\xe0(a\xd0\x01$3\xe5\x82\xeb\x84\
+\xfaO@OK\x17\xfbr\xccP\x80I\x80_\xe1\x95\
+\xf7\xe1\xfe\x90\x00\xb1\xae`hX\xcc5*\xf5\xf8\xdf\
+\xb1\x16\x09Tz31`F\xc2\xd0 \x9e\xab=\xdf\
+\xdfl\x0c\x9a(\x88\xd0\x92\xc2\xfaF4\x98\x0a0b\
+\x8c\x16\xf5\x8b\xf1\x8a0\xe2\xb8\xcfT\xea\x1f\x925\xa0\
+\x0c\xe6Aw\xb2,\x89*\xfa\xfe\x13\xcf\x05\xe3\x07\x8d\
+\x18W\xa8\xfb\x07dI\xc3\x07\xc6\x1ab\xc2\x16m\x9e\
+\xb7\xa8\x01!*\xe5\x8d\xd16|\x0f\x90\x87\xf6\x06\xfb\
+\x82\xe7\x98\xfc\x83\xa6\x1cT@\xf9\xfe4\xa5\xe0\xc1\xea\
+\x19Z\xab\xa5\x135\xc6\x04\x8aX.j\xf9\xf4c\x9e\
+\xe2\x84\xd6\x86+\xd9\x88\xf8\xc1P\xaa\xe3\xf6^\xd3\xfc\
+\xfb\xf4\xa8\xe9\xd75%\x00@\xa4\x9e7\x1b\xb4\xca}\
+\x8c-\xe4\xf33\xde\xd3\xaa\xfd\xf8\xfb\xfe\x8ab\x7fv\
+O\xf6m\xfew=\xf7+eNP\x16J\x00\xd1\xf6\
+\xc5\xde\xe2x\xf72\x03\xa5;\xba\xa2\xfc\x93\xf2w\xee\
++v\xbf\xcf\xe1\xf5\x92?\x82I\x81?\x15\xcf\xaa\xdc\
+\x97G\x7f%3C\xf1\xd3\xaduD\xb3\xae\xf4\xf7f\
+\xd7\x93\xa58\x94\xf1\x81\xaf\xef\xb6\xe8\xb6h\xfb@C\
+\xf74v\xafVj\x8fk\xe2\xa2u=\x7f\xdfb\xe8\
+\xa74\x80s\xfe'eNP7s\xe5\x5c\x14\xfc\xff\
+,V\xfcJ\xbfm\xb17\xa6\xca;\xf1\x11\xccL\xc7\
+\xa50^\x00X\xe7\xf6\x979\xe1=\xab\x01i\xcc\xad\
+\xa7\x90XV\xcb-UT\x1d\x064s\xea\xd1P!\
+\xce\x90\xb7\xfd\xbe\xa7B|\xdd\xadh\xcb\xb5\xfd\xd6\xdf\
+/KL\x00\x8063R\xfb\xdde\xe5\xfa\x97,\xa6\
+\x16\xe9\xfbe\x1e\xb3Y\xe2\x85\xee\xe9\xb2\xa4\xe5\xa1\xa9\
+\x06G%\xe0\x92V14^\x0c$N\xf6\x18\xa65\
+\xcc\xbcL\xd6\xce[Z\x82\xb8\xee\xf1xa\xf2\xb7n\
+9Y\x9dn6\x8c[=\xdfLr\xe5m\x17\xb6\x16\
+\x87\x10\x09w\xc3X\xd5\x86(\xfb\xbd\xdf\xb2\x1f\xeeg\
+Y\xc5\x15\x00\xa4\xa5\x0a@\xd6qS\xff-Y\xa2\xde\
+\x8bI\xfd\x81&\xe2\x18LP\xe2\xaee\xbcO|N\
+\xb2o\xd1\xa0\xa0\xe0\x01\x13#4O\xf8\xfejY\x13\
+\xed\x0d\xd1P\xa6l\xc0\x9c#\xee\xf1z\x88\xbc\x8c\xcf\
+\xe1\xc2m\xb4\xc6\xfb\xdc\xac\xfbo\xfb\xa4\x85\xb7\x84\xac\
+\xec\x93~/\x99\x1d\xdf\xd7\x0c\x04\xdc\xde\xe6\xd8\xa3\x9a\
+9\xe9d\x09\xf1#\xe0\xc3Q\x80 sPy\xfc\x5c\
+\x1c\x1c\x0e\xb0\xe3`T:pY:\xb0,\x0eR\xf1\
+\xec\xc5\x12\x82\xca\xdcozZA\xa4\xa1FKl\xe2\
+\x97F\xfa\xd4\xd3\xff\xaab\xafn\xea\x94\xfd\xf3e\xe5\
+\xe7^j\x0a3\x88\x94\xaf\xab{\x85\xac,\xc8U\x8b\
+\xad\xe6\x05{z\xfb{\x1c\x00\x8c\x9d\x08\x15\xd3\x01\xb8\
+j\xe2\x7f\xac4\xc6\xf21f\xe9m2\x8b\xc0|\xac\
+\xa97\xf6?\x92%\x91,o\xb0\x08<\xb8o\x1c\xf4\
+\x04x]\x1d\xa8\xd8\x1e\xb8\xc5\x10C\xccES\x0a\x9e\
+\x93T\x9aI\xa4\x14\x06m\xe9\x00\xfd\x9a\xa6\x8a_\xd3\
+\xcc\x1dR\xe5\x0b\x86\x07\x81\x96\x08\x85\x9b\xa5y\xa6\x12\
+9\xfc\x9d\x13\x8dg4\xd5\xe6:\xdf\xf6\xe5\x8d\xb9Q\
++\xe3\x9fL\x15\x14u\x80\xee\xe8@\xa8w`\xfc\xa4\
+\xa4&O\x02{C\x1d8\xb6\xe08\x91kR\x02!\
+\x02\xd8i\x9e\x0fzXR\xb5\xf6}\xae\x9d\xea\xff\x93\
+\xd6%\x81\x14\x89&\xf7\x91\xfb\xca\x83#\xc0\xe0\x15\x0a\
+*\xaa\xf8hV\x00\x94\xacSk\xddA\xc5D\xe58\
+\x02g\x9e\x93\xb4\x08\xcej\x07@\x8c?\xa3w\x8e\xde\
+\x22\x90\x5c\x02.\x98\x13P\x93i\xbd!\xf1\xe5\xb9\x12\
+P\xc1\x80\x81:I\x00n\x11\xad\xb2K\x06\xca8\xf7\
+i<?\x9e\x0a\x8f{\xed\x99J\x11\xefC\xcb\x0e-\
+-P\xb5\xe8m\x04\xc8\xa0%\xc6\x22686\x18\x0a\
+\x8c\xa3\x09\xa6\x09\x152\xd63\x898\x15Fz\xb1\x01\
+,\x08\xf0\xa9P\xf3\xfcp\x8c\xff^P\x84\xac\xc29\
+\x8f<N\xc0\xf6o'>\x00\x06T\xde<\xde&\xa8\
+gP\xe8K80\xfd^\xd2h0\xe54Z\x7f\x98\
+\xae\xe0\x041\x02n*f\xcco\x87*\xce\xbe\x81\xb2\
+j\x04<\x90c;j\x12\xa6\xe9\x9fem\xdcN\x8c\
+\xf5\xa1\xd2H\xcb\xcdW\xccd\xd2\xfe\xdb?!\xe6\x00\
+pT\xfeH\x10\xdc\xaa\x10\x0c\xa3\x8d<\xe7\xfbEN\
+\x1c\xf0\xeb$\x0c\xbc:\x80\x8a\xdeR\x9f\x07\x01\xc4R\
+i\xe4y\xe2\xbfiM\xb0\xdf\x0f* \xe3\xc7X\xdf\
++\xf9uU'DO6@A\x02D@\x08\xc0D\
+\xab\x0b\xeb\x95\xf5B\x22\xcc\x17Tx\x80\x0f\xa6q\xe4\
+\xde\xd7\x7f&\xbf\xc1z\xa1e\x89\x04q<F\x8d\xcf\
+5\x16S\x03\x10\xa1G\x9e\xb1\xb5ny\x88\xf1I\xac\
+\xd3\xa5]\xd1g\xfd\xb6\x0a\xf1\x00\x80\xdc5TP\xcb\
+\xb3\x1f\xf6\xf7\xb3\xad\xd1B\xe2\xcc>\xc6\x0f\x8d[$\
+\xb8o\x00i'\xba\x22J\xe0Ao3\x81\x1c\x8c\x07\
+\x07\xe20\xec\xba\xcde\x8d\x0a\x1e\xadM<\xc7\x83\xaa\
+\xb5}\x0d\x80\x83_\x22\xe1\xe6\xfe\xa3%\x02\xc3\x8e\x82\
+\x01Tq\x9e+\xad\x02P\xba\xdfR\xad}N\xce\x1b\
+\xfc\x18\x006\x80\x05S\x05\xd0\xb6\x01\xa0\x03\xd8\x1a\x89\
+?Fe\x88\xb1\x88h\x000u\x03\x80\x87\xe7\x8e\x1f\
+\x82\xc1\xc0\xb9\xc3\xe7\xe7|\xe1\xdc73lz\x8f,\
+]/\xcc\x15\x12vZ\xa9\xf0\xd70l\xa8\xfc\xf2>\
+h\xc2\xb0\xeeaT\xc1\x9ca}0\xc6\x15\xa0\x96i\
+@\xcc\xdb\xe6\xfa`\x84\x01\x08Z\x84-D\xde,r\
+F\xc0\x09\x15\xbd\xff\x89,M\x070 \x0a\xa34\xc6\
+\xc7\xda\x0fNv\x92\xb5\xd6\x93H\x90\x1aSr8\xff\
+\xbc~\xa6\x9b\xc8\xda\xf9S{\xb47H\x89\xb4\x13\x8b\
+n+Y\xbd\xce\xea\xa7\xd0\x04*i\xee\x9d\xb5\xd0\xa2\
+\x02\xc2\xbd)^\xd8\xdc\x816\xefg\xed\x9b\x00FX\
+\xc7$\xf4\x00\x82{*\xb5I\xad&h\xf7\xd0\x22\xcb\
+\xb8]\xa6\x0e(mz\xb7[\x14\x0eh\xad\x1b\x88\xf3\
+\x85x\x98\x13\xb3\xea\x8d\xd6l\x1a0\xd3Gd\xadu\
+\xa7\xff\xad,\xb5`\x9a*\xcf8\xc5\xe9B\xb2\x94 \
+\xd0\x8a`\xb1\xe7\xee\xdca\x5cbI\x92\x87\xfd\xc4:\
+m\x95\xf3\x9a`Vf\xe1\xadi\xba\xc2\x1e\xc5vw\
+\xc5\xba\x9c\xe7\xdd\x05\xc5.l\x0cH\x12\xd8JI^\
+\xd9j\xe5\xfb%F-c\xdc\xde*K\x15X\xd6)\
+\xcc\x22\xd5/wj\x0c\xab\xc9\xc9\xb2\x928\x1f,3\
+\xb0\xf7!\xf7N\xbf\xb9\x01\x1a\xddu\xb2\x16\x17N\xd7\
+\xd6\xa0\xbc\xf2{/\x92\x15\xb7{\xa0\xac\xbc\xff\x0d\xc5\
+\xaeO\x22\x95bBo\xd1\x00\xcazj\xfd\xc3q\x04\
+\xea\xef\x9a3\xffgY\x9bB\x10q;\xe3\xb7=\xe6\
+-\xce]\x98\xd2\x8e\xd3\xfa\x17\xca\xca\xf7_\x97%1\
+G\x8b\x0d\xa2\xb1\x16L5O\x1b\xa8<\x92#[+\
+ami\xfer\x02\x9c\x94%} \x9d\xef\xde7\xfd\
+\x0a\xb2\xb4\xcf\x9f#K\x1am\x06V\xbb\x17\xcb\xfc\xbc\
+>\x91\x00{\x154\xcb\xfe\xe8\xd6\x90\xd5uS,i\
+I\xc1@e\xda\x18\x22\xd4\x8ec\x18\xd3\x18c\x5c\xcd\
+<`\xcc5\xfb:\xce3\x0a\x1aP\xf3\xf9{\xd6\x5c\
+\x08\x00\xc2\xad\x15\xdd\xf7d\x89IG\x8b\xb8\x0b\x16\x15\
+h\xba\xd7\x05\xbf\x0d\xccx\xd9\xda\xf7\xefK-/\xeb\
+\xb6\x91\x95\xef\xd7\x92\xd5)\x08\xef\xd6\x14\x04\xc4?\xfb\
+O\x16\xdb\xafNO\xb8yrK\xd2\xf4\xb2\xff\x91\xb4\
+\xa0\xc4\x05C\x1b\xc1L\x10\xb4\x9a\xfa\x8f\xcb\xda99\
+=\xc1q\xe5W\xcd\x8c\x82)\xeas\x98V\x92`\x0e\
+P\x80\xf3\xd4\x93\x10=\xa55\x01\xe6\x8f\x19\x050*\
+\xa25\xde\xe3\xc5gg~[\xac,\xf0\x99\xf5eV\
+K\x7fk\x13Q\xc3\xc1\x82\x0cu\xcf\x92%\x00\x80\xc0\
+\x0e\xaa+\x01\xaa\x11\xc8\x10\xd3\xe2\x80\x06\x18`\x83\xe3\
+hp\xac\x88\x1e\x89\xb0xg\x9b\xdb\x19\x891\xa23\
+P\xacM\x81\xebO\x90\xa5J\xb8{\xeag\xb6*\xb6\
+\xb5ES~\xecJ\xcf%\x0d!\xee\x8e\x965\xf1\x18\
+\x0e:\x1cmM/\xca\xe7\xeb~_LcD~.\
+k\xe3\x02cN+j\x9d\xee\x0d\x8b\x83\x1cuZS\
+\xc5#P\xa4\xd5\x81\xf9\xa6k\xd7\xae\xb3V\x01@#\
+\x1b`D\xe1\xe1\xa3>\xe8\x17O\x09,\x14@z\xd9\
+\xa8\xf80\xe6\xcf\x88t\x9dK\xfeJ\x8f\x93y\x8f\x03\
+\x92g7\xca\xd3\xf4\x18Y\xa2\xf03~\x86\xc4\x94\x8a\
+\x8a`\x80\x0f\xba7qu/\xec\xaf9\x10Z2\x05\
+r\xae\xa4\xd7\xb1\x167\xd9\x01>\xbbi;0\xbd!\
+\xc4s\xc4s\xf8D\xeb\xa9\x8a^S\xdd\xbd/&&\
+\x04cQ\x10a\x13\xa1\xed*o\x84\xc3,Bt\x9a\
++*\x0f\xa7\xf7\xa5\xa2D\xa5\x7f\x1c s\x1fy\x1d\
+\xab\xeeC\xdd\xe5\xdf\xa9(\x13h!Z3\xa6\xf2\x13\
+0\xd2\xa3O\xe0\xc0\x1c`>\x17\x00\x01\x15H\xf6\x83\
+\x9f'-\x10\xfc\xf7\xa8\xecP\xa9\xa0\xd2\xe1J\xa5:\
+\xb8\xd5\xc3=]N\xd6\xc6\xde!\xca\x14\x22d\x8c\xbf\
+c\x5c\x10\xbd\xc0\x000P\xab\x09\x989\xc8\xe8!e\
+z\x07\xf7\xe7\x0aW\xfa?W\xadU&\xdc\x9b\x14*\
+\xeb\xf4\x18\x93`\x92\xa0;\xc1\x0f\xd5m*&\xdc\xd7\
+5\x1c\x10\xbe\xc0@\xe3\x93\x1c\x10\x93\xf8_\xed\xfbJ\
+\xc2\xf4\x90+\xaew\x9a\x02}\x87\xfd\x15\x8c\x05\xa8\x82\
+/w\xaf\xfe\x86\x1e\xfbbUhM/\xae\xf3\x8b?\
+\x22k\xf3^\xd1.\xe9\x9e+k\x0c\xa6@\xe4\xf1\x0b\
+\xecC*\xe2\xa8\x95\x1b\xd1\x9d\xfcQV^\x7f)K\
+\x95y\xc4\x9d~%k\x1a\x18\x01\x80\xb2\xcfI\x94\xb6\
+4\xd5\x91\x96\xa8QE\xbbR7/IL\x00(\xcb\
+\xf8e*W\xb7\x0d\xf7'\x02L*\xe8T\xae\xe9\x85\
+\x7f\xa2?\xcf\xfeV\xaf\x050s@\x11L\x13\xd61\
+\xfe\x1e\xc6\x02\x81\x0a\x00\x0e\x94\xfcq\x85\x12`f\x15\
+\x8f\x01\xa3\xc5\x84\x00\x06J\xb7\xbf\x8fs\x88\xde_\xf6\
+'\xcc\x16\x03)!\xe6J\xe2\x0f`\xca\xe7\xc6\xbf\xb2\
+\xcf\x01\xe6\xe8\xc9\x87a\xc3X9z\xdc\x09Tx\x8e\
+TB\xb9\xdf\xacs\xc4_-\xe6\x15\xc0\x02\xeb\x91\xde\
+u\xceC\x184|\xcf\x9c\xe0[\xcd8a\xfc\x1e\x09\
+>\x09\x0b\x00\x09~\x86\x04\x92\xd6\x98qk\x89\x01\x0d\
+\x02\xa2\x00X\x99\x0e\x81H\x17\xe2\x85\xa8v\x03\xe8y\
+\x7f\x87\x88/\xe2y<O\xee7~\x8e\xeb\x82\x89\xe0\
+\x02B\x04\xaeP\xaf\xf1G\x9c\x9f\xac'\x12uD\xc4\
+\x9c\x801O\x9eV\xb1\xc7\xdcW>\x17\x05\x0b\x98?\
+\xf8UZ\x02\xd0\xf2\x81\xba\x0b \x0b @\xc2O\xa2\
+\x0c\x03\x8d\x84\x18\xa0i\xcc\xbcb\x9dx=Dk\x0d\
+\xe7\x03\xcf\x8f\x9fG\xe4\x18\xbf\x08\x90\xcd~\xa1E\x85\
+\xcfA\x1ca\xf1\xc5x~\x9c{\x00\x06T\x0c\x098\
+\xf7\x90\xb5\x84\x09Q\xe5\x00\x14\x1d\xef!\xf6\x17\x89-\
+\xc0\x0d\x22^\x06\x14b\x9c\x95[C\xbb\x8f\xcaR\xc1\
+\xc4\xd3\x81\xd4HY\x81\x0c\x03'\x01\xfc\xd2R\x03p\
+\x8af\x80?gP\xb1\xedw\xfb}e\xe5}>#\
+kqM\xf7\xce\xee]\xdd\xbb\xda4\x12\x98,\xa1\x81\
+\x00\x90\x03\x80t\xf3\x00\xc0\x95\xf4m\xa0p\x7f\xd7\xe3\
+\x07)\xec \x9el\x8d\x06\xc1\x09\x02\x14\x00\xd0\xa0<\
+\x07@\x0c\xa3\xd3\xf1D\xa5\xe2n\xea\x82\xc0\x81\xcdO\
+\x00\xa0\x04\xa3\xccbz0f\xfa\xcde\xad\x95\x801\
+\xdd\x95*|\xad{\xeb\xf5\xfa\x91b\xfb\x18\x10\xba\xd1\
+=\xc0\x9a\x86tZ\xb1\xd3\x0d\xd0K\xfc\xee\xf2b:\
+\x1fv\x94%\xd1C\xbe\xa7\x02\xaa\x96\xb7\xddZ\xafs\
+\xbd\xff\xbb\xbb\x95bM\xb7f>9\x89\xf6*\x8d\xff\
+\x9a\xd7\xd1\xafZ+P0\x1fU?\xfdR\x02\x16\xd1\
+B\x020\xc4O\xe2\xcf=\x07\x1e\x8a|\xf7z\x995\
+\x00\xde\xe4\x96\x80r\xbe\xcdm K-\x02\x024\xb6\
+\xafcx?\xd0\xedT\xc5\xbc\xbf\xd1\x7f\xa3l\x9f\xa7\
+\xcb\x9a\xfa~\xe5\x07\xbc\xad\xfc\xdc\x1bd\xe5\xf5RY\
+\xf9\xf7\x97\xc9R\xc1\x8b\xd6\x075\xcel\xe7\xf1v\xdf\
+hb\xd05\xc1\xbc\xaf='T\xf9c\xba\x97\xc7]\
+r]s7\xc9R+\xa0+\xc85A\xfc\x84\xcf\xb5\
+w$m\x09\xfb\xdf(P\x98y\x16\x7fw<\xa5g\
+\xc4Tb\x8c\xe0\xf4\xd9\xb2\x06\x0c\xf5w\xc9\xda\x98\xbb\
+\xb9\xbf\x15\xfb\xab\xc77\xea\xf9\xce\xc8R>\xa3<\xe7\
+\x95\xee]\xdf'1\xd88/a\xea\xb8ue\xba\xb3\
+\xac\x8d\xcd\x0bF\xb5\x99Y3{\xc8\x1a\x03=\xb4B\
+\x5c\x80#^e\x0c \x15\xfa\x9a\xaf\xbe%i)\xbd\
+`\x00x\x10}'\xae\x8d\xa9efZ\xd5\xc2\xdb;\
+\x92\x1f6pV\xb5\xe0t\xff\x7f/K\x15|\xb7$\
+\xa1\xf5\x11S\x9f\x0c\x98D\xeb\x84\xfdJw\x92\xcc\xf7\
+\xfb\xa3Mk&\xb4\xbb\x1c\xc7\x01 M\xce\xb3\x08\xa2\
+\xc5\xffh\xad\x83\xda\x1f\xfe\x8fV63\xb8\xa3%\xd5\
+\xad\x04\xd1*\xe5\xfd\x18\xf97\xadG\x88\xc5:\x9e\x9c\
+\x9dY\xa6\xd8\xb2\x0e\xf0\xcbB\xe9/,vAZ\xb8\
+\xf4\xf2\x9a\xea\xd8?W\xd6({\x93C\x8b\x1d\xe2\x84\
+\xe6\xda\x84\xa4S\xd9%\xd0\xe7\xa0\x1c\xf5\xf4>F\xac\
+\x89J'\x01\xc2\x15u\x80Q\xcc\x7f\x0d\x11\x04\xd5#\
+\xcfMcIP\xe5\xf7\xc1\xd0\xad$K\x7f\x8f^I\
+\x85\xbb+\xa4\x8a\x98\xc7H\x04E\x0a\x86\x82\x03U\xe6\
+X\x82\xc4\xa0\x96No\x10T\xfeH\x9c\xb8~\x0eP\
+\x02\x0a\x11\x8b\xbeej\xf5\xef\x12\x80\xe2\xb9\x9c\x11\x88\
+@\x05\x1c\x7f\x8d\x13~\x0e*\x02:*RPnN\
+\xab6\x1c\xa8\xf7\xa59\xc0\xa8\xb7z\xded\x1c\xb4P\
+\xcaI\xe0\x95\xa6\xecl$\xee)\xe9y\xcdT\x19\x8b\
+\xc1A?\xd8D#kEt\x97\xc7I\x88=n0\
+\x0eZ4\x1cD\x90?\xaa\xf5\x94\xa2\xb2\x0f\x05/D\
+\xec6\xaf\x98\xfc\xd0\xcbt\x8f\x1d\xf5[R\xc5\xd2\x1a\
+\x08\x88\x13E/\x93\xa4^\xf6I@\xc0\xff\x95x\x8c\
+\xd5\xe4A\x1ey%@\xe3>\x8d\x81\x03\x02;\xae\x9b\
+J\x0b\x01\x15\x15(\x03DAu\xf7\xcf\xa3=\x81\xca\
+q$n\x00^~\x0d\xd5c\xae\x03\x11*\xc6\x0bQ\
+\x19\x87jv\x9f\x19%\x88\xe6\x98\x9a\xc9\xba\xa7w\x90\
+\xc44*\x15T\xb2H\xfc\x99\xbf<\x9ew\xcez\xe5\
+\x95\xbfc&JTFQu'P\xf5<c\x026\
+\x9e{<\x17\xa8\xca\xacs\x12\x93\xd6\xc3?\xbc\xba\x87\
+:\xde\xcf\x15\xd4\xe9\x1f\xddR\xc3\xcfs\xbf\xa8\x94\xe3\
+gxn\xab8\x91\xb2\xbat\x7fC\x7fc_~n\
+n\xe5\xb9\xa7\xcf)@\xb8t8\x08\xa6\xaf.\xf6\xaa\
+\xa4\x9d\xc1XN\x02\x15\x85g\xf7%J\x9d{]\x01\
+n@\x5c\x03\xa8[\xdb\x81\xfe\xf2\xa6\x98\xee;$L\
+\xdd\xee\xb2\xf2\xbe\x1b\xaa&\x91\xc6\xb6p\x1d_\xa8\x16\
+\x07J9\x16\x87\xb9\xf0\x04\xe0P\xf9I\xac`8\x00\
+\xe49Q@\xcc'~\x1e\x04\xdf\x88:=\xe3\x01\x18\
+9\x00\x8b^\xc4\xdb<7yC\xfb7*\xcc\x00\x0a\
+\xf8%\x12\x8d\xc5\xfd\xca\xf70#|\xc0G\xa5\x87u\
+L%\x9a\x84\xe7\x05\xae\x80R\xd1\xa4BJ\xa2F+\
+\x02\xeb\x93\xfdL\xe0\x030\x83\x16\x08\x00\xc0\x85\xd5\xda\
+\xd8\xc3\xa7z]\x900\x8f[T\x9ef\xa0\x8b\xfd\xc9\
+\x94\x1a\x00\x02\xee3\x80\x8a\xcf\xbd`z :\xc7:\
+D\xe3a)?\x07\x80\x16Z\x03,\x1a\x14\x092\x94\
+o\xfe>\x09>\xfe\x0c\x06\x0e\x09\x1f\xc0-\xe7,c\
+\x02\x0d\x98\xc5\xf8G\xa8\xfdhh\x90\xe0\xe3\xd7\xa8\x04\
+\x22RD`\xa3\xd6\xb7/'\xe6\x18\xcf\xcf\xd4\xd6\x08\
+h\x00HhQ\xe2\xbe\xc3\x8c\x00\x18\xa4\xa5\x0a\xff\x83\
+\x86\x88\xcf\xd9H\x8cI\xd8\x00\x1e\x01@\x19\xcfhF\
+YP\xc8\xb9o\x00\xa6T\xb4\x01\xd0^\xe1}\x04\xc0\
+\xc6\xf4\x1a~\x1f@\x13?\xc99\x89\x9f\xf1~\x8b\x96\
+>\xce%\x80\x03S5c\xca\x0f\x80/\xad\x03\x14R\
+\x00\x00`\x0c\x00\x88\xd2*\x03`\xca\xfa\xc3?\xd2\x02\
+\xe1\x0ad\xfc<\xeb\xc4T\xf7X_\xf8\x05\xfc6@\
+\x1f\xfe\xcd\x9a\x0c\x91({\x9aET\xe6\xfd\xfc\xe2\xbc\
+\xa6\xa2\x8fX#T~\xbe\xdc{\x1f\xeb\xc8qJ\xb7\
+~\xb1\x17\xd6\xe7W\xf7\xa3:\xe5%\x0a\x19\x00\x01@\
+\x0b\xfe\xc1\x0c\x87\x08\xcc]\x09\x86A0\xf9\x88\x9f\xff\
+k\xfc|\x88\x93>>\xb4\x02N\x0e\x19\xa6M\x94\xdf\
+\x1ez\x8e\x19+\xf9\xa5\xc9\x17\xc5\xfc\x8a\x96:\xfc\x22\
+SGx^\xde?\x11\x0f\xbed\xb2\x89\x80\xbd\xc9\xa6\
+\xe5\xff\xdb\xb4\xfe\xfdCj<\x8c\xbf\x06\x08\xa4\x02n\
+\xa0Si\xa8\x12Q\x9es\x8c\x19Tk\xc2\xa3\x15@\
+\x1a*\x7f\x0f\xba\xd5\xc1\xf3\xec\xfbGd\xed<\xa9c\
+\xec\xf6KLM\x9d\x02%^\xefN\x90\xf9>=h\
+\xbfwj\xf9\xfd\x93eM$q\xe6\xdd\xc5vh\x0c\
+TD\xf0\xe2\xe7(\x8c9.A\x14\x0e&k\x05:\
+\x94\x80]$+\xdb\xe1\xb8b\xc7\x1a\xf8\xb9\xbbi~\
+1\xed%\xe6\xbbs>1\xbd\x0a\x11@\xdd\xf5\xa5\x1c\
+gM[\x02\x1b\x05\x0a\xb5\xb0\xedd\x80\xe3#\xdeO\
+\x7f5\x10\xf0\xc6\xc6h\xe8W)\xf6\xcc\xb4\x0f.\xb2\
+\xbfq\x9c\xdc\x1d,3\x80u\x82[\x87\x8b\xbf\x9f\xf9\
+\xbe\xacQ\xbd+\x10\xbe\xbc\x99\x0e\xc5o\xf5/\x96\xa5\
+VM\xaf\x1f*\xcd\x91\xf0Z\x1b\x80\xc4\x17 \x8d\x96\
+\xe4(0\xa0\x1d\x80\x88\x9c\x99X1v\xda\x8chu\
+\x9eW\xed+\x80_\xff~\x15\xd7\xfePj\x01\xc0\xcf\
+\xc3@\xb0\x8a<\xc0um\xd9\xb8\xa3\x16jWV\xa1\
+\xb6\xdfr\xe8\xe9\x9f\xffKY\x8d\x1b\xefSKm\xff\
+J\x99[\x08\xca\xdf\x9dYRV^O*v\xa2\xb5\
+\x18>Z\xc7?\x16+o\xfbLY\x9az\x84\xb8\xe0\
+\xfbeI\xfb\x01\x0d\x103\xc5\x82\xf9l\xa0\xb6[^\
+V^w\x93\x95\xf7\xbbTV~\xee!Y\xf9{_\
+\x945F\x01\xad\x16\xd1\x22a\xd1j4\x18`\x90\xa3\
+\xd1\x85h2b\xb8\x0b\x88\x0d/^\xcf\x93\xa7V@\
+\xd9\xe7\x0e\x05\xed`\xf8\xea4\x5c\xa6iQ\x90\x98\xa3\
+e\x10\xfe\x1b \xc4\xe7SLo\xc2\x8fJ3N\xa2\
+\xf27\xc9\xca\xf5\xee'\xab\x85\xb2\x03\xaa\x88\x9f[\x04\
+\xeay\xbcH\xf5\x13\xc3\xd8{\xdf\xa7h\xd1u\xab\x0c\
+@\x1d~\x85B8\xff\x9dV\x80\xf0\xd3\x8ekf\xe7\
+\xee\x97\xa5\xb1%\xeea\x9f\xbdX\xd6\x10\xda\xb95\x8b\
+\x89J\xf0\xc1be\x03V\xc0j\xda\x10\x13\xc6\x1aT\
+\x8ax\xea\x1d\x06!\x0cuZW\xd4\xa3\x82\xc5A\x84\
+\x9a=\x8e\x93\x1b\x08`@\xa0\xe3\x03\xa1\x22B\xe7\xf8\
+ \xf9\x91)f\xbfm\x09Z\x04\x5c\x88\xafA\x15\x04\
+ad\xac\x18\x07$=\xf3$z\x8b\xd4[\x1f\xea\x98\
+c\x84\x89\xf9\xdf\x1c@Au\x85\x0a-\x22\xe9\xcd\x9e\
+gyP\xeaE\x81\xd2\x85\xa8\xe1Sk\xc8\xd9\x02\x1a\
+>\x9f\xae\xfe\xe1\x84\xf4s\x1fH\x8c\xe8\x99\x13\xd5V\
+\x01\xd9U\xb2DA&\xc1!\xa1\x13\xe1\xec]i^\
+$H\xa6\x17>\x80NE \x0ft\xc0\xf9\xefD)\
+\xbc\xab\xd6L\x87\xbf\xfb\xd4$.\x22\xe0\xe5l\xff\xbd\
+=S@B@d\xb1\x9d*&\xf3\xc6\xc6\x90 \xc0\
+\xab\x07\xca\x8aI\xf5\xd8\xbdv\x9a\xd2\xa99\x9dU}\
+\xfd\xc3\xa9r\xc4\xdcP\xfd\x9dW\xa7\x96\x8d\x83\x8b}\
+&U|\x08\xd8\xe9\xe9G\xdd\x1b\xaa\xe5R\x1eW6\
+\x16\x03\xe4\xfe\x02\xa8\x8c\xef#\x01\x1b\x01\xc2Xu|\
+,2\x08\xf0E\x02J@\xc2\xdfCd\x8b\xdeXD\
+\x1d\xa1\x90R\x09\xf0\x1c\xd4\xa8\xd8\x91\x90\xd3c\xca\xfe\
+]\xdd\xaa\xd1\xae\x04N\x7f=\xfc\xded\xc7\x01i\x8d\
+\xebG\xb4\xcc\x81\xe4\xf4\xf5\x83\xa8I\x85\x8b\xeeK\xa2\
+I|^*\xb4\xacS\x00\x12\xdewSW8\xe9\xb1\
+\xdd\xcc\x01\xb6\xa9\xf6\x93\xcb&\x7f\x9a\xe4\xb9\xee\xb4\xf6\
+@\x05\xb7*\xeb\xe4\xe7\x83\x08'\x95\xb3H\x10\xb9\x7f\
+\x00dPC\xd9/\xcfw\xcb\x80[2\xa2\xb2\xfa7\
+'h<\x9f\xa7\xdb\x8f\xd8\xbfTuX\x05d\x17\x08\
+\xfaL\x07\xf4\xf1C\xcf#L\x0a\x00-\x10\xe7\xa0 \
+\x8f\x81\x1f\xaf\x97\x00~\xech\x83\xea\xee\xd6\x89@\xe6\
+\xf1\x7f\xf4rZ\x0d\xb7;\xae;\xb6;\xb6j8\x9c\
+\xa9q=eO\xd7\x8a\xc9tcY\x02(\xa9,q\
+\xf0 \xc6\x07\xf2;Jd\xa3\xd2\xe8@=\x126\xa8\
+\x97P\xe0\xbf\xe4V\xa6\x97\x0f\x09\x9a\x08\x89u\xfe\xf1\
+\x87\x07\xea]\x09\xb83\x99\xd1\x00\x00 \x00IDA\
+TB\x86\xb19gY\xc4\x15\x91F\xa8\xff\xdc\x17\x9e\
+O{\x1d\xd6\x13\xeb\x8a\xff\xce>\xc2\xff\xc3\x5c@\x8d\
+\x1f\xca\xb4U\x9e\xe3~\xb3\xdfH\xa8Y_<_\x8f\
+\xf1\x8c^R\x18\x19\xcc\xf7v\x0f^$Z$\xaa\xde\
+\xffA\x85\x07`Y\xce\xfe\x80\xfb\xc4\x5c\xee6>q\
+`@\x90@s\xce\xf9s\xc68>\xd4\xe3\xc7\x00\xae\
+\xafcz\xce\xd0J\x11\xad\x16P\xeb\xd9\x87\xe3\xe9\x0b\
+0[8'a\xcc\x00\xc8,i\x00\x97\xcf\x0f\xa0\xe0\
+D\x8ei\x00\xb1~\xbf<\xb4\xc2\x04\xb0\xc2\xf5R\x91\
+\xa7\xd2\xcb\xef{\xccR\x9c\x87$L|\x1eZ\xb3H\
+\xe8\xacq\x12\xad1\x00;\xf8[\xf6+\xc03\xf1\x03\
+\x14~\x18\x15\xdcg\x9e\xbb)\xb6!\xf6H!\x02`\
+\xde\x09t\x88E\x22r\xc9\xcfA\xe5\x04\x10 \xa1\xa6\
+\xb7\xd4\x00O\xf4\x84\x8f4\x91\x82R\xef\xc2C\xa8Y\
+\xfb|\x06\xc8\x8d\x0a\x1e\xd4s\x12\xfaq\xaf\xf8\x98y\
+F\xa5\x1f\xe0\x11Q73\x05b<+\xe7 T\x7f\
+\xefK*\xf2A\xa5]^\x96\xa8\xebPI\x01f\x00\
+x\xf9b\x8a\x10\xa2_\x06\x06#Pf\x9c\xb0\xc5\x0e\
+#.d:\x12\xbd\xff\x88\x00\xean^Rn\xdf\x93\
+eiZ\xc0\xc7d\x09(\xf4<\xeb\xd00\xf2X\xdc\
+\xd0X\xb2\x08\xd8\xe4fS\xfc\xad\xb5\xd4-3\xb4\xb2\
+j\xf8\xa5\xc6_\x16\xaf<Lyr\xaf\xf7d\xdf\xc9\
+'\xc44\x0c&\x1b\xfb\xe6\x86*\x979\x8c\x95]\xb4\
+\xee\xff-\xaa\x88\x1b\x80\x90\x01\x9bnqY\x03\x0e\xa2\
+\x12\x87\xb85\xeb\xd8\xfbAu\xf9\x9a\xb8\x9eW\xce\xe5\
+\xf3*\xc0\xfb\xbe\x0a\xf0\xbew\xde\xfb\x04\x8cW>\xe8\
+vi^\xfa\xab\x07\xa6X\xb4\x04\xb8r;\xf9\xe1\xe4\
+4i#\xf5\xc7\x94\x80\xff\x98\xeaG\x9fP\xfd\xbb\xf7\
+S\x15g;&\xcd\x93\x97\xd4\xa2\xc4\x15\xaf\x94\x95\x8f\
+\xf5[Y\xebI\x9f\xdb\xbd\xd8n\xa9\xc5\x0f\x0d\x054\
+/\xa8\x1c\xba\xc0\x82_\xedo+v\xab[b'I\
+\xa4z\x9da\x8aB\x8d\x026{\x9c\x02\x0b\xf1\xa1\xfc\
+\xc6\xc9)\xdea\xff\xf3=~Y\x22\x8a\xbb\x1a\x088\
+1%\x9aP\xaba*\xbb\x82][\xd1\xca\xb91w\
+\x84\xac|\x7f\xa6,%\x98\xef\x96\x950mgYj\
+\xc1p\xabg\xff\xd5b_q\xbe\xb3\xb3[\x7fE\xfd\
+>QV^\xaf*vu\xea\xf5wkTP\xb4\xa1\
+l\xc3\xc4\xb4\xa8*\x9a\x0bsg\xcb\xca\xef\x1f!K\
+\x95\x7f'\xe8\xa1\xb5d\xa0\xa3\xc2_\x9b4FK\xc4\
+O0\xaa9/\x0d\xbcT\x8d\xb3\x85S\x01\x08\xa6\xad\
+f\x8ei\xac\xf9>\x03\xa31\x80tZ\x17\xcc\xe0\x98\
+\xbfD\xb1'\xb4J1\x0c\xa0\xd8\xcf\xde\x7f\x144\x02\
+\x88\xb2\xe6\x16\x22u1\xb5\x8a\x96\x1dku\xc0\x98\xe8\
+6\x91\x95\xcf\xb3\xd5 \xc2\x18\xe3\xb2%\x0e\xfe\xfd\xc6\
+\xb8F{)\x00\x1d\xceUZ\x87i\xa9tKR\x95\
+$\xff\x5c\x1bw\x07\xe3\x8b\xa9\x0aq\x0e\x01\xe0HS\
+\xe4\xe1&j-\x1eM\x9d\xda\xe4\xf8\x9c\x16\x88\x18/\
+~\x92\x81G\x9f3\xdd\x86C\xcbD\x7f\xf60\x1d!\
+\xce#\xd6;\x8c\xc1\xfde\xe5\x9f\x8f\x95\xb5\xd6\x05\xf2\
+\xbc\xda\xaa\xa4\xe7>\x9d\xceM\xa7\x95)\xf1y1%\
+\xc8\xb7\xc8\xa7\xa6o\x95%1q\x17\x88\xf1{\xd1:\
+\xfafY\xcbK\x03\xb82\x80=;\xf7lY\xb9\x80\
+Cd\xe5\xf5\xeeb\xf7\xb4\xc4cn\xa7bk\xb6^\
+\x86\x995d\x0dI\xa8\x22\x05\xb75\x84\x86@!\xc6\
+k\xd0\x13\x0f\x05H\x89\xcc\xaf\x13\xf5\x02\x04]\x84\xbe\
+\x87\xd2\x81\x8e#&\x80@\x95\xf4'\xb24\x86\xd0\x89\
+8\xa2u<\xf0\xc9&\xc56N\xe2\x09\x00\x00\x88\xcd\
+i[\x9c\xda\xc6\xd7\x04\xd2hJEP\x97\xa1\x92x\
+\xcc\x09\xe2\x16U\xbd\xf59\xad%\x82^+\x02K4\
+\x13\xea\xf8\x8bCM\xc5{\x8f\x03\xf4\xdf\xa5\xc0\x86\x8a\
+2\x81\xa0\xc5\xf1\x22\x10\xd6\xff\xde;\x02\x00\x16K\x09\
+\xac\x91\xd2\xaa6y\xb3\x13\x84\x8dR\xe5\x07@\xe2\xd5\
+\xf5(i\x81\xb2\xeaKW&j\x13c\x8e\x1c\xc0L\
+?Tl\x97T\xd1\xa2B\xf1\xb4Z\x03\xf3\x0c\xb6$\
+\x86F@\xf4\xae*\xc3\xd5>7\xbf\x7fT\xd5_\x1d\
+*\xf5?\xf6\xf5.\x9d6\x98z\xa0\x8e\xb4\xa6\xc2\x87\
+\xd3\xe7g,%\x0c\x06Q\xdc_\xe7\x8a\xcc\xa1i\xcc\
+\x9a\x0e\x92\x13\x13\xc5\x13\x80\x87\x04g\xd4\x1b\xcc\x1c\xe5\
+\xc9\xe2\xb2\x14\xe0@\xb1\xe5z\x11;c\x8e5\x95+\
+~n\xacj?\xa6\x0c\xc3@\xe1s\xf0\xbc\xa9H\xf1\
+{$\x18\x04\x0c8\x10\xc6\x16\xd1\x12\x81\xc3#\xb1C\
++\x80\xeb\x83y\x01\xd5\xdb\xbd\x8f\xd3S\x06d9\xa8\
+L\xcc]mc\xdf\x86\x84\xd7\x09\x8a\xea\xdd\xaaxw\
+SA}\xadr\x1a\x95E\xd6#\x15\xd3+\x9dh\xc3\
+\xdcy\x91)\xef>XK\x98X{~\x03\x01v\x0f\
+pqG\xb5W\xa9^\xf3<\xcfY\xbe\xa0\xde\xaf\x01\
+\xc0@\xc5\x14\xc6\x04\x15\x7fDb\xb8\xdf\x88z\x110\
+\xd0;\xc5\x01J\xa2\xe6\x83\x0a\xf5n\xc6\xee\xf4\xf3\xad\
+\x1e\xeb\x04\xbb\xff\x8b\xac9\xe6noY\x0a\xacIp\
+\xa1&\xc3\x94B<\xd0\xea\xaf\xd1\xe3\xcc\xe7\xe4s\x93\
+\xc01f\xed\x06kLx=T\x84~\xe5\x8a\xc8\xd7\
+\x1e\xd5\x120\x9e\xa7\x80\x91u\xa7\xa1\x9e\xd2V\xe8\xf7\
+W7ZK<5\xa4\xa9&\x00\xac\x03\xf6;\x01\x13\
+\x880\x89$\xe3\xd2\x1cpO\xb7\x92%\xf14\xc6\xb4\
+\xbd\xca\x951\x80\x0f\x12OZ)\x98n\xc1\x9c\xe6\xb5\
+\x87q?\x8f\x99\xbe\xf0\x88\x01\x0f\xee\x07TnZ4\
+\x00l\x00F\xe8U\xe7\xf7\xa94[\x03\x02\x11\xb5\xc9\
+\xdbe\xcd\x8f\xd2SIE\x93\x0a3Z\x18\x95W\xf6\
+\xe7\x94@qP\xf3>\x88\x03\xd1\x0a\x81\x98\x1d\x01\x03\
+Z\x10T\xf4\xe91\xfd\xb4\xac\x9d7\xe1\x8f\xf8\xfbT\
+\xfc\x10y\x04\x98!\xc1\xc7?\xc0\x88A\x95\xff'f\
+l\xaci*\xb8\xc7)\xc5\xe7\xbfcA\xc6Ah\x0a\
+\x00\x00\x18\xb0\x09\xa6\x06\xc07\xda*\x7ft\x0b\xc4\x86\
+\xae0C5t\xe2\x15\xcc\x15\x98h\xae\x08\x12\xe0\x02\
+,\x87X\x98\x99?\xb4\xca\x84\xf6\x07\xe2\xac\x9coT\
+\x84I\x0c\xad\xad\x11\x0c/\x98l\xf83\xc6\xdf\x91\xa8\
+\xa2\x0a\x0e\xb0\x8c&A\x03>\x06\xc6\x03\x15}k\xa2\
+\xc0L\x88\xca2\x95pT\xd9\xb9~\xc4\x09\xdd\x22\x02\
+\xe0\x16\x09--\x07\xa6dF\xc5\xc7LB\x18T\x8c\
+qE\xbc.zz\xf1O\x9c\xff\x00\xbb\xb4,\xd0J\
+\x08\xb3\x85V\x0azc\xed\x0fb<\x19\x89-\xf7\xd1\
+\xfb\x18\x06e\x88\x89\x22\xde\xe8\xb1h!\x86\x88\xb6\x09\
+\xe3\xfe\xce\xb1\xd8\x16\x1a\x180:\x19\xbb\xc5\xfd\x1b\xf7\
+\xc6\x03p\x03\xac\x00\xf0\xf1\x5cLi\x8f}c\xa0\xa4\
+\xc6m\x9b\xb4\x96\xb1\xf0?\xfc\xbe\x19d1\x1e\xd6\x9a\
+UT\x22)\xf8tw\xc9\xca\xeb\x85\xb2:N\xbaV\
+\x14\x89\x1b\xa3\x00s\x8f\xe3A*\xd2\x9c\xcb\x9cc\x00\
+3\x00PhI\x1cSM\x8c\xd8\xe7\x89\x11\xdb\x9f\xda\
+\xffP\xe3\xf4\x82:\x7f\xfe\x90\xe0\x87\x7f\x04\x00t\x0b\
+YIS\x07\x112\xff\xbd\xe9?\xcdPb?\xc3L\
+\xb0Xu\x144\x88#\xa0~\xd32\xf0O\x17j\x0e\
+\xf24\x9a\x8b'\x97\xa8B?9\xc4\x0c]\xb7\xceF\
+\xbc\xe3\xf54\xb7\xb2,\x89]2\x0d\xcc\xf7\x9d\xc4\x8b\
+y\xeb\x9c\xc7\xd3O\xc8\xda~\xea\xb6\x96\xb5\xa9U\xb5\
+\x85g\xefF\xcd\x9f\x5c%\xf3\xfaX\xab1\x12k\x81\
+\xec\xd3\xbe\xcf\xb7\xb4xr\xac\x81\x02\x93\xa0N\x13{\
+\x7f\x8b\xb3\xfb\xabei\x8a\x04\xad\x02{\xcb\x5c\xf9,\
+\xeb\xbe\xbfYfq\xf3\xed\x5ca\xfel\x9a\xb7.\xd1\
+\xc5\x97\xb5\xeb\x9a{_\xb1rn\xcc\xedZ\xec\xbfL\
+\x09\xbf\xb42\xf3\x8a\xf9\xdfKB9\xf7\x5cY\xf9\xef\
+k\xcbR\xc2\xefs4Z(\xa8\xc8\x02\x04\xac4h\
+\xfd\xc4\xb8u\xfd\xfb]I\xec\x94\xb8\x91\x04\x1d\xff\xc0\
+\xb9\x0e\x00h\xff\x18\x09\xaa\xee\xc2\xc9\xa9\xd0\xc8>\xa3\
+\x80\x22%\x83\xbfW?}\xac\xfct\x9d&\xf1\xcbT\
+\xa8\xa0`\xe7\xc2\xcb\xec\xbd\xb2\xd6\x8a\xd8\xbdM\x96\x0a\
+tg\x0c\xd3/\xd8\x1f\xb4h\xa0\x05\x14\xd3\x1f<\x86\
+\x0e\xc6C\xc4\x8f_\xad\x16\xadV\xd3\xf5e-\x9f\x00\
+p\x99y\x9a\xac\xfc\xf7SdM[\x22\x98\xdc\x9c\xaf\
+^7\x01\x04\xb0\xbf\xa0\xc4\xbb\x90\x16\xa2\x91:\xdf\x1f\
+mq\x17\xe7=L.5\x84\xaa%4\xe22\xad\xef\
+\xf3k\xa1\xa0\x8a?\x97\xa8\xe0\x0d5.p\x1c\xd3m\
+9h\x8eL\xe7Kv\xb0\xbc.*+\xd7\xb1\x8d,\
+\x89\xdbs\x1ey\xbcj0\x15_\xaa\x81\xdb\xce\xbf>\
+\xd4\xceM\x18%\xc1\xf06\xa5\x1f\xa6\x15\xf9\xc1\xf4M\
+23H\xf6i\x80^\x8c\xb3\x07p\xb6?\x9a\xad\x14\
+\x9e7\x1b\x11\xdf\xc4\x88By\x00\xf37+\xb6w\x1a\
+\x17r\x9c\xac\xbc>ZLj\x8a\xaf\x90\xb5\xb9\xf4\x8c\
+\x0d\xec\xbe,\xab\x08\xef \x22\xb6\xddp\x90Be\x8d\
+q\x1a\xae\x18D B\x02CbL\x8f4\x07\x22\x81\
+4\x01!\x01\xb4\xc2\x84O\xa5\x0a<\x09*\x09$\xa2\
+!\xa8\xf7+-\xbb1\x89\xe5\xb9\x92\xd4/Wl\xd9\
+:\xe6\xa1X\x13\xbb\xa1W\x04UV*\xf3\xd1\x1bg\
+D\x9a\x0d\xdb=UV{\x8e\xde/\x11\x88\x0a\x8c<\
+l\xf1\x87\xeb\xfd\xa0\xe7\xf9@[$\xf5\xf6\x83\xe0\xa8\
+wp\xbd\x14\x08R\x01\xbe\xaf\xd8\xbd)\xa0_d@\
+\xa6\xa7;\xc8\xca\xebwe\xe9`\xe4}5\xefq\x1d\
+\x1fXG\xbb\xa2vnbR(\xa0\xf9S\xaa\xa8B\
+\xc1\x04\x81|G\xb1w&Q8z\x0bgj(\xd9\
+*\xe1T^\xa0\xf4\xa8\xae\xf2\xa2\xf6{\xb5G\xee\xae\
+\xa6\xc6\x8b\xfav$\xa4\x0a\xa8VO\xea\xf9$r\x1e\
+\x1f\x19\xe2Y\xaf\x97\x99\x99\xf0Oo\xf4\xaf\xb4\x8a\x22\
+\xa2sQac\xbdP\x09a\x1c\x1bb\x19\xb7\xcaR\
+B\x0d\xb6\x01\x02\x8e\x03\xe5:\xe9I\x04\x08\x18\x8f\xab\
+\x22p\xa3g\x9e\xca\x0a\x01\x1b\x07<\x89\x0f\xeb\x9e1\
+eOv\xc5\x1b\xea\xe0Mn\xc5\xa1\xb7\x97W\xf6\xcd\
+\xe6n5`\xbe:\xbd\xad\x00iTzN7\xf5\x87\
+J\xdeW\xe7\x1d1\xef\x88$\x0ar\xdb\x10HE\xa0\
+\xe5\x80\xa3\xce\xb5-\x07z\xf7VY:x\xfa\x18C\
+5Tr\x17v\xc0Ge\xf1\x02\xdf\x1fD\xcd\xb8^\
+*\xd0\xfb8AC\xcd\xfb\x83C\xa2\x80Hb<\x8f\
+\x87]\xf1g?\x8c+\xbeK\xfb`\xa42\xc6\xfd!\
+p\xe3>\xda!\xf6[\xcbZ\xe04\xf7\xde\xb9\xf7\xcc\
+\xedh\x95\xd477\x84=\x10ZU\x8e\xde\xeb\xc0\xf2\
+E\xa9b\x08\x85\xd8\x22.\xb4\x06\xcd\xfb\x7f\xd5\x1a\xc0\
+b\xca~\xf4>\x12H\x13\x80s\xb0s\xbd\xbeO\xd3\
+?\xbbr\x8d\xd8\x97{\x9c'O\x1a\x80\xbf\xfe\xba\xfe\
+\xda\xfe\xda*\x16X5\x1e\xa8p\x22\xfe\x12\x091\x01\
+\xc4\x8e^\xb7\xf3\x9dXSy_\xc9@\xcb\x97\x06Q\
+\xa7\x98\xa3\xcc\xfa%\xd1\xbf\xd1\xea\xe6\x00\xac\x9b\xfa\xe0\
+%\xc1\xc2\xff\xf2\xc5XW\xd6\xc3\x18X\xbb\xcd\xda\x16\
+7\x0c\xeb\xbb\xec\xfe\xda\x9b\x1b\xe3\xea\x00\x04\x00\xc2\xa0\
+\x9eC\xad\xde\xc9@\x01\x95V*\xd0\x00\xb1\xf4\xfaA\
+\xc9\x86:}\xa2\x01\x1c\x807*\xb8\xac\xab\x7f9\xf0\
+D\xcb\x02\x15l3*\x02\x80rb\xc48\xd0h\xf9\
+\xa1BHb\xcb~\x221\xe7\x00\xe6\xfc\x22\xf0p\x82\
+\x18\x8c\x03\xf67\xf7\x91\x84\xea\x85^\xe7k\x1b\xf0b\
+\x9f\xd3R\x86h\xe0\xc3\x0bR\x10\xcb\x9a\x1d\x18\x13\x04\
+\xd67x\xfdQ\xe9\xbd\xc1\x01\xe2\xbb\xec\x8f\x98#\xce\
+9L\x8f<\xbd\xfehY\xf0\xfc/\xa9\xd6\x12w*\
+Sh\x85\xd0B\xc2\xcf\x01\x0c\x93\x10\x9282w\x9e\
+\x9f\x87\xa9F\x05\x1f\x00\x88J4\xad\x0b\x8c\xade\xbd\
+\x03\xa4\x22\x8e\xc9~\xa05\x81\x00\x0c&\x01-\x06G\
+\x0c~\xb12\xca\x0eN\xe7\xfa\x13en\xfd\x9b]\x80\
+:>0%\xb8\x8f^\xaf\x22\x9a\x8bj>\xfd\x8a,\
+\x8d\xa5\xf3<\xed`r\xe1\xaf`\xc0\xa1\xde\xdc\xa6a\
+\x0c\x1a\x00N|\x831\xc1~\xa3\x90\x02s\x01m\x17\
+\x03!\xc1\xf8c\xfdS\x89e\xfd\xe1W\x01\xac\x09\xc8\
+\x11\x09\xc5\x1f0\x8e\x8a\xf3\x0b\xbfu\xe7HL\x95\xf3\
+\x92u\x86\x1ff\xddS\x91D\xcc\xce\xbd\xdf1-\x80\
+\xb1\xcc\xb4\x1a\xf0\x05\xf3\x8e\xc2\x10~\x1d\x00\xc5\x0c\xa6\
+\x10/\x84\x1a}\xe9\x00\xdc\x84\x18\x1b\xeb\xcb\xef\x83\x98\
+]0,\xe8I\x7f\xbb\xac\x02O5\xfe\xac\x95\xe7o\
+\xa7\xf8G\x0d\x0d\xdfn\x95\xb9h\x153\xd58\xee\x13\
+\xe7\x22\xf7\xc7\x95\xca\x00V\x1c\xef2\x16o\xccl)\
+\xe9h\x1dC8\xf9O\x9f\x8f\xdb\x0f\xc0\x22c\xbeb\
+\x1d\xbf\xc9S\x1c\x9eo\x7f\x86h\x1f\xd3;\x00xi\
+%x}\xb1\xd7\x19\xc0~m\xa2`k*\x96\xc4\xe5\
+V\x96\xa5q\xb1\x8e\x97\xe95'\x11\xeb\xee,v\x97\
+\x81\x9b\x97\xb4J=-3\x01\xcc\xa3e\x856\x0e\x9a\
+N|?\x12_\x0e\xcd\x16\xdf_\x98kQ\xc1d\x1d\
+C\x91\x17#\xe1\xcfml\x1e\xe3\xeax\xa5b^\x81\
+\x8c\x93\xaa&\xc4;\xbbw\xa4\xf3\xdcLV\x18\x1cs\
+\xcb\xc9\xca\xef\xd7\xaf\xf2\xfdg\x8b}\xc6\x8c\x87\xdbR\
+\x8b\x9f\x99S\xd3\xfbe\xe5\xdfO\x92\xa5\x84\x1fQG\
+\x8b\xf7Eb\xcc\x7fwO|\x85g\xf6\xf19\xb7\x92\
+\x19a+\xa5)\x06LU\xb3\xe8'\xd4\xfc8\x9fY\
+_\xb4\x5c\xdaO\x0a\xee\xae\x807\xcc-3\xe0j\xab\
+\xf7\x85m\xea\xd9\xb4~\xb5\xb1{\xdd\x12\xb2\xf2\xba\x87\
+\xac\xfcw\x8b\xc5\x87\x06\x05\xa2\xce0\x1d\x10\xa5\x83\x19\
+\xf2\xa0\xac|?+Kb\x87n\xe5\xa0\xe0U\xc5\xf4\
+>\xd9\x0a\x12T\xac\xa3\x92\xfd\x17Yk\xb1\xe8\xfe*\
+K\x1a\x03\x9c\xef\x00c\xdc\x0f*\xden\xadAS\x09\
+&Ve\xactID\xd1\xccX\xc4\xe3+C\xeb \
+'\xf0\x8b%F\x0e~^Zh\x1fp!\xfc\xf4\xc7\
+\xfa\xc1\xe99\x03\x03=\x18\xd9\xc4\x01\xb4B\xb2\xde\xf9\
+\xbc\x14\xc8\xd108\xc4\xc0\xc9\xae\x03S\x22\x18\x9b\xb4\
+\xc6yjB\xf8a\x0a-\xe4\xc9\xf6\xef\xec\xff\x88\xbb\
+\x88\xc3\x0dx\xceN\xdf&k=\xa1\x88\xa8\x89\x88+\
+*n\xf7;YK\xc4\xfaMdi\xec\x8a\x91\xc1\xd9\
+\xb7\x14\xdb>\xa9{rps\x10A\xcd%\x81#p\
+\xa0\xc7\x1a\x11\xa3\x91\xaaw [TZ9\xb08 \
+I\xa0\x08T\xa0\xf2\x9b\xa2\x16T\x19\xc6\xc1\x8d\xa8v\
+P\x9dy\x7f\xc6\x7f\xd4\x05\xbb\xbe+\xc5\xf7\xa4\x8a\xc5\
+\xbd\xb5+lH$\xbf\xdaz\xfb@j\x11\x1f\xea\xce\
+.vN\xa3\xd0T\x04g\xbe\x03\xe1\x7f\xa7\x84q\x9e\
+GD\xfd\xb3b\xb8m\xa1\xa8\xde\xf6\x0aW\x0c\xaf\xf4\
+\x01\xb9bJXq\x90:\xa8\xde\xd6\x02\x15\x10\xd9\xe8\
+\x85'\xa1\xf0\xc6\x9a^'s\xef\xc8\xaf\xad\x12\xb9\xa6\
+[?~\xd3z\xc9b|\xa3\x13\x98P]\x07\x90!\
+ \x85\xa2\xa7\xe7\xbbY\x0aL\x10\x1f23\x8c\xc49\
+\xe6KS\x01\x84\xea\xe8y\x9c\x118s \xdbaM\
+\xfeQ\xec\xef\xde\x88\x87\xda\xe1\xec\xe9\xca\xdc\x1b\xd2\x18\
+I\x85Qy\xac\x18\x0e\xd1Hs\x00Q\x1ak\xf9\xb3\
+T\xc1`c\x908\xd0RA\xab\x05\x95>\x12M*\
+\x11P[\xa9\x8c\x11\xa08 \x8b\x0a\x0c\xbf\x17\xcd\x8d\
+\x06\x1a\x9em\xca0\x07%\x8c\x15;\x8a\x12\x06\x0f\x15\
++\xf7\x043\xd6/*l$\xd4\xa88\xc3\xe4`\xec\
+\x12\xeb\x8c\xe76\x16\x1d\x04\xc0\x80\x81\x80(\x14\x09\x06\
+\x94\xfe\x9d=V\x0e\x8d\x02\x12\x1eS+\xab\xb6\xef~\
+\xe9\xef\xb0_i\xbd\x00\x98\xe9\x86\x9e\xee\xe9\x83\x06\xe6\
+vt\x8f/\x15SWB+\xe0u_J\xccpp\
+$\xfe\xec\x93e\x5c\x89\xa7\x17\x1c\x87:\x1a\x97\x05\x93\
+\xa7\xdf\xb1\xdf\xa1/\xebr\xee\xca\xb9\xbf\xcc\xfd\xb9\xcd\
+s\xae\xc7\xc5\x99\x09\xe8\xfc\x85,\x89\xf7]T\xbb\x08\
+\x9b\xba\xad\x03\x90\xa0\x8c3~\x13\xb5n\x12\x1bT\x97\
+\xa9<\xe2\xb0\xf1C$lT\xd0XG\x5cg\x13g\
+\x1b\x12V\x07\xf2L/\x01\xd9\x0d\x86\x80E\xb9\xa0\x9a\
+\xc5}\xfa\xb5\x13D\xf6-\x01(\xbd\xcd;X\xed\x1c\
+\x80\x8b\xc4\x98\x96\x0b\xc4\xc5\x10\x89\xfb\xcd\xf4\xd7br\
+\x85\xdff}\xf99@\xa5\x9c<\xdfs\xe2\xd9\xcf\xe3\
+V\x003\x02\xa6\x17\x0e\x09\xf0\xbc\xd5\x9d0\xd2\x93\x8c\
+\x9f\xe7\x003sg\xde\xa5na1e/\x80\x00\x8f\
+\xcb\x8a\xf7\xd9\xb7Z\xbb\xdf\xf4\x90\xd3B@\xe2I@\
+y\xfbHto\x11\x7fn\xc6\xd3\xa2\x9d\x00@\xe91\
+\xa8L7(\xa7U\x0d\xf4&G\x0dbA\x01\x98H\
+U\xfa\xf5\x8f\xd3\x1a\x04\xb0\xc8t\x82?\xcaR\x22\xc0\
+}\xf5}/\xa7\xc9 v\xf7FS\x85\x01\x16\xa9\x80\
+\x10XpN\xf2\xca\x14\x05\x12\xbdk<\x9d\x00F\x07\
+~\xe1~\xafG\x00\x05*R\x04\xca\x00\x95\x87\xcbR\
+\x22\x89:<\xeb\x85\xcf\xc3\xe7\x07\xf0b\x1f\x03p\x00\
+|\x03\xdcdm\x9c\x97'f\x0d\xe3+\x1d\xf8E\xa2\
+\xcb\xbeG]\x1d\xf1@\x12^*_\x88\x93!\xa6G\
+\xa5\x9fq\x99^'1\x1e\xd7\x22\x92\xa1\x0a\xce|z\
+\x07\xa4TnP\x91\xa7\x02\x0d\xd0\x17\xa2\x5c\x00\xae0\
+j\xdc\xbbN\x02\x10S\x11\xdc\x9b\x1a\x8c\x22\x18FT\
+\xa4\x193\xc9y\x06 \x82(!\xe7\xe9hJEP\
+\xed\xa9\xc4SIf?p\xfe\xc2\x08\xe2\x5c\xf9\x95,\
+1*h}\xf08\xe8\xc9#\xb2\x14?!\x86'\xcd\
+\xa4\xe77\xa0\x04\xd5\xfd\x00>\xf1\x03\xee]\xa5g~\
+2_\x96\xee\xf3-\xb2\xc6\x80\x98\x1c(k\xe3\xb4`\
+\xa6\x10\xb8\xc3\xacB\xb3\x04\xd1\xc1~QY+,<\
+F\x95\x9f\xf5L\xcb\xdbY%\x9a;\xcb\xbd\xd8'{\
+\x9e\xfa:ID\xf5K\xb5\x19K\xfe\xed\xbaZ\xd0\xf9\
+\xe6\x90\x08\x85&\x04\xd7\x87()\x15[\xe2\x1a\xd6\x1b\
+\xcc\x0b\xf6\x0b\xf1\xe5XS\x88\xf8\x16`\xff#f\xbc\
+l$K~\x8bx\xebR3l\xec\xdf\x83\x81\xf4c\
+\x8bs\xeem\x8d\x84?\x98\x92\xacsQ\x89\xdf\xf6\xb2\
+\xf2z\xb1,%\x12T\xa2\x0d4t\x1f\x93\x95\xbfs\
+\x83\xcc\xcf\xe5\x00\xf7H\x7f+\xadGZ\xda\x10]|\
+T\xe69\xe6\xc7\xa6\xdeeD2Y\x7f\x8b.\xe8o\
+C4\xd1\xe3\x05c\xda\x95\x80\xa3\xfdRK\x0dj\xe8\
+\xe7\xd7\xc1p!\xc6W\xa7\x04|\xa6\xc5\xbf3\xef,\
+V\x12\xff\xfe\xb3\xb2\xd4;\x0f\x13o\x0bY\xa3\xfe\xcf\
+\xedS\xec\xa3\xad\xf7\xbc\x7f\x8a\xac1\xcf\x00\xf8\xa0\x96\
+\xf7\x8b\xc8R\x82L%Z\x12y\xbfo\xad\x111\x0e\
+\xfd\x01\x99\x81\x90\x9f$\x7f\xcb\x98l\xf7\xa2O\x97\x96\
+=\x8eVT\xd6V[8\xc5\x17\xc4?\x9c\x070\x93\
+\xa8\x043>\xee[\xd5\xa2eER\x99\x12\xcb\x84I\
+L\xe5\x7f\xeek\xb2\xd4:\xe2\xe9?Q\xa16s\x12\
+M/\xb4*\x00D\x88\x17\xa3\xf5\xe9\x013\xdch=\
+d\xfc\x22\xf19\xd3B`\x90A\x81WAs\xed4\
+>\x14?vz\xb5v\xbd\xac\x1f\xf2LZ\x0e\x0d\xa8\
+\xd7\x02\xe4mfj\xfd\xad\xdd\xd7\x004\x94\x88\xaf\x9d\
+\xae\xcf\x00b\x7fY11\x03\xae-\xfb_q\xed\x07\
+\xe7\x0d-\x05\xa7\x96\xa8\xfd\x87)^\xb48u\x00V\
+\x00\xb9f\x96\x05@c\xc0\x10\xad\x04\xc4 \xfb\xbd\x06\
+\x06\x8b\x84\x05\x14\x06\xc2\xa0\x88iz\xb4Fr\xbe\xf0\
+\xbe\xf8\x09\x80JO\xcd\x89\x16\x15\xb7\xc2\x10\x0f\xcfN\
+?%K\x07\x9b\xd5\xa8gn\x96\x95\xd7Ed\x16\xd7\
+\xf9\xa8\x1d\xf9Umn\xf8\xe472o\xbc_\xa7\x83\
+\x1a$\x19\xca\xea\xb5\xee\xa9\xa0r\xe6\x03K\x1dY\xb5\
+'\xcb\x94\xaa\xb2HP\xfb\x1dz\x8e\xf8{\x8cS\xf2\
+\x83\x0e\xe4\x87\x1eu\xe1\xf6_u\x8f\xd3_[%.\
+\x90X\x16\x00\x22I\x12_\xb8\xb1\x1d\xa4\xdd\xa2\xc5\x16\
+q\x85\xe0\x9d\x8dj\x1d\x94\x11\x90\x19Q\x88?\x99\x10\
+yW\xb8Q\x0d\xad\xdau%\xc1\xeb\xee+v\x7f\x1a\
+{\xe5\xf9\xf1!b\xc7x\xb8\xbbk\xcd+\x00\x8c\xa0\
+J\x9e*s\xa0\xb9b\xa2\x82\xab\xb7nq;\xfe,\
+\xdeu\x9b\xcc\x94\xab\xff\xf5\x81\xbf\x8d)+\xe7\xb6\x00\
+\x14\xd5\xcf\x10=s\x0fW\xb7\x91\xcc\x95\xef\xd9\x14\x88\
+\x90Pq\x1d\x1c\x08\x8c\xf3\x13\x91\xecyI,\x10\x00\
+\x00\xe4\x92\x80\x0f\xea3\x81!\x07\x1c\x01*\x81\x08\x1b\
+\xd6\x89\x0a\x81U\x046T\x9eD\x5c\xbd:\x05\x8eL\
+\x87\xe0\xef\xf2\xf3$\xba\x88\x97\x19\x91\xa8\xaa\xa0K\xfa\
+\xbe\xdd\x9e\x1c\x07\x01\xe3\xfcA\x8c\x87i\x09\x91\x98\xb9\
+rS\xc7Dn\xd5\xae\x07\xcd\x89\xb8\x1e\x1c0\xc8 \
+\xea\xc6\x1b\x0f\x14\xc7\xe8\xad\x85\x8a8\xee\xf9\x1c\xcf\xc1\
+\xa6\xb5\xe6 W\xa6\xa0(\xd2\xda\xc2\xd8+\x12\x7fZ\
+\x17`\xc2\xe0 \xb8\xff\xf4\xdc\x12\xc0SAr`L\
+%9\x0ef\x9e\x0b\x07\xc7x\xac\x18\x154T\xdb\xdd\
+\x02\x13=\xa7\x04\xa8T\xc8\x96\x19\x12'\x0d\xaf\xa9\x07\
+$Z\x00F\xd2#\xf1'0j\x15\xda\xc1\xe1C\x8d\
+f<\xe1\xce\x06\xfaPW\xf7\xf4\x90~qY\xd50\
+y\x9e4L\xe6\xd6\x91\xf9s\x96\xeb\xec\x96\x92\xb5\xfd\
+A\xa0Y\xd6\xd2\x00\x18\xde\xe9D\xc5\xbd\x90\x91\xf0\x13\
+H\xe3p\x11\xe1\x22\xd0#\xd1\x03`b\xfd\x90\xf0Q\
+\xd9\xe5\xbe\x90\x98\xb3nI\xf8\x9e\xe1\x9e7\xd6\x0b\x00\
+\x03\xd3 \x1c\xf0\xc1\xf0(a\xea\x00\x98\x22\x1e\xb9\xee\
+\xe0\xa7Y\x7fQ\x11\xd8b\x00j\xa6\xe7Z}\xda\xfe\
+\x80\x1e\xd1\xf0\xb7\x88\xdc\xc1\xfc \x11\x07(\xf3\xc19\
+y\xad\xd7\xdd\xe6^W[\x1a\x08\x22\xf0\xa7\x22\x0d\xb0\
+\xc1\xba\xf6\xd4\x81X\xff \xe4\xf4\xf8QI\xe4\xf3\xd0\
+Kw\x9a,U\xcc\xd9\x87\x0e\xd4'+\xc9\xd2\xe7\xa6\
+\x85a\x1b\xcf=wkL\x00\x02\xdcw\x00<\x9e\x07\
+\xbf\xcf\xba\xa3G\xde\x09O\xac\x03\x18\x0e\x5c\x0f\x15O\
+\xd4\x91\xf1+<o\x12b\x02\x03\xae\xbf\x05.\x03\x13\
+\x8e\xf5B\xa0\xcf\xfd\xe1>\xf2=\x9f\x97\xf7!\x91\xe6\
+\xf7\xd9\xe7\x9c\x87\x04\x06\x9c7\x00y0/\xfe\xec\x84\
+\x0a\x00\x03\xea8\xc0\x0a\x14|\x8b\xfa\xc5\xb8<\xfe\x9d\
+i\x01<\x7fZ\x97\x00@\xb9\x9f\xb4:p\xffY\x17\
+\x5c\x1f\xd7\xc5z\xc7\xdf\xe3\xf7\x00\x22y\x7f\xc4V\xd9\
+\xafo\x90%@\x8eWW \xa3\xb5\x8ai\x07\xee\x95\
+G\xdc\xb0\xdbW\xd6\x18=Q\xa9\xc6_ Fg\xd5\
+\xf1\xa8(1\xd7\x19\xea?\xd3\x89\x18\x0b\x05\x00@\x9c\
+2\x12\x8f\x0d?B\xeb\x03\x14\x7f\xdf\xd7\x88\x8b\x0c\xa4\
+Db\x00\xc0\x83X\x94)\xdb\xdd\x9a\xb2\xd4\x92\x09\xa5\
+\x1d\xe0\xc4\xaa\xd3q\x0e\xe2g\xbcNI\xe0\x02\xf00\
+\xf0\xc5\xe7\x00\xb0c\x9cW$~\x8e\xefB,\xf0\x1d\
+\x93\xb7\x8bA\xd2\xed,k\xea\xf9T\xfc\x10\x0b$\xae\
+\x8c\x16\x14\xd4\xe0\x99F@\xa2C+\xd0\xba\xd3\xf5\xa6\
+\xeb\xd5\x8a\xed\x5c?\xd7Z9#\xa1f=\xfcy\x88\
+s\xe7]\xe8\xb8\xe0r\x9f\xa3\xbb\x9a\xf9\x888\xe63\
+\x9d(\x99\x112\xfd\xa6\xb5`\x0e\xb0&\x04\x0c\x15Z\
+\x0d\x0d\x18\x06C\xc3\xf1S\x00\xbfh)\x00\xf4\x03\x8c\
+\xc1L\xa4\xb5n$\x0299y`p\xd0\xf2\x19\x1a\
++\xacc\x9e\xb7\xcf\xbd`\x90\x90 \xc2\xb0\xf3>\x08\
+\x80F\xad\x00K\xa4\xc2\x0e\x15\xc3]d\xe5>\x1e7\
+L\xbf\xe1\xbc\xa4\x22\xccz\xaa\xf1\xe9\x0f\x123\xc4@\
+\xf6\xdc\xde\xb2\xf2z\xb7\xac\x02\xed\xc5Z\x05\x99\x02A\
+\x88\x02\xc2`\x19\xc5}\xa1\xdd\xf4h\x95El\x00\xac\
++\xe9Q(pBCoz\xe5\x1f\x1dP\xdew\xa3\
+b%!\x9d{H\x96\x00]I\x80\xbe\xd9\xf7}\x83\
+$\xe2&\x0d\x8b\x95k+\xe0|\xb5\x02\xd6\xc4\xb7\xfc\
+\xbd\xb9%d\xa9\x82\xef\x02\x1a\xf7'\xa6Z]?\x8c\
+\xaf&\xa1\xa7e!\x80:\x18o\xff1$\xc8\xe3\x9e\
+\xee\xba\x1a/L\x0c3\x18\xad\xd6\x96QYG\x9a$\
+\x15\xbeZ)\x8d{F\xfcT\xe7\xe0\xba\xcd\xdfDO\
+9cFa\x1e\xb9\xa0\x16\x22\xd0\x88\xed\xc2\xcc^E\
+\xe6\xf8\xe9\x90r\x9d;\x14{w\x02<\xce\x1a\xb4\x80\
+\xfa\xef\xca\x1a\xd0\x01#\xbc\xbf_V^\xbf&K\xe2\
+\xbb\x14b,\x0eX\xee\xd5pN\x09~>\xcf\x8c\xa0\
+\xdb\x1b\xd3\xb2~\xbe\x97\xa6\xb8\xd6-\xe7U\xecq;\
+3\xd1\x1fM\x9aJ\x06\xd6\x82\x89i\xd1\xf5\xba\x9af\
+\x13@\xe9\xe3\x87\xe9Ku\xba\xc5\xee\x89\x993.\xd8\
+!\xbax\xaa,\xad\xd7[\xcb\xe9\xa5\xf8D|\x86\x13\
++\x00rU\x05@$\xd6\xb8Te\x5c\x08\xea\x8aV\
+\x86`\x14\x01\x94\xc3h\xe2\x9c\xa6\x10g\xff\xde-3\
+h\xa2\xb0O\x00>\xfa?\xc8\x92\x86\x91\x99@\xd3%\
+d\x09\xa84\x13\x8f1\x920<h\x11 \x9e\x9c\xad\
+\xc7OyP3\x9f\x91\x957>E\x96(\x18N\x90\
+f>$s p\xb0\x1d\xc6\xf5\xad\xe7\xa7\xbb\xbd\xd8\
+\x1di\xdc\x00\x010\x81;\x81\x8d\x13\xc4\xa0\xce\x19\x81\
+\x0a\xc7\x0ee\xf0\x0c\xf7\xa0\x9dj\xca\xd8\x8a\xd3\x15\xa6\
+\xa2\x80\xben\x10+\x83\xea\x15\x95\xae+k\x17r\xab\
+\xf8\x10\xf8\x8cU\x83I\xac@HT?X\xbf\x89\xa5\
+\xc4\xc2R\x82\xb7\xa5\xc7_\xccz\x9cZ9H\xfa{\
+di\xfe9@\x80)\x19\x95z\xfe\xe2\xe4pH\x9c\
+-\x9eW\xb7\xdf\x0f\x9c8?'\xa9$#VH\x80\
+\xbds\xad\xb96\xca\xa4\xa6\xee\xfe\x8f)v\xb7z#\
+\xfe\x22U\xa2\xa1\xc0\xe9 yUSU\x8d\x05\xe1\x8d\
+&)\xb6J\xf9\x87z\xa5N\xbe\xef\xa6\xfb\xe7\xc0\x8e\
+\xa9\x10\x8c#\x8cy\xee\x8c\xcb\xa2bN\x80Lk\x83\
+\xb6\xf9L\x0a\xf4\xf8w\x168\xaf\xfc>\x09\xfb\xa8b\
+[\xd7\xdf\x92\x0d\xd9\x8c)\x00\x0e`Ce\x98\x80\x9d\
+\x80\x92\xca?\x015\xda\x01\x88\xc9\x19\x88\xa9\xd4\xa4\x85\
+\xd2\xe7E\x85\x96\x84\x9dV\x0aW\x1c\x1e36\x8a\xeb\
+\x82\x82\x87Z5b\x858\x10\xfe\x1e\xe3\xfc\xe8\x0dE\
+d\x8a\x04\x9a\x0a\x1b\x81\x0e\x07=\xeb\x98\xfb4\x12\x13\
+\x0b\x00\x08Q?\xd6\x03\x01%\x15B*B\xee\x01\x8c\
+\x0a;-\x0b\x88A9\xe1\x8f\x84\x00FB$\xdcC\
+\xa59\xc4\xa6\x00X\xfe\xe1u\xbe\xb2\xc5\xccf\x1d\xb0\
+3\xfdaT\xb9W\xc7[\x05\x06\x5c\x09\x88\xc0\x93\xca\
+\xe0hn;\x0e\xb3\xa4+U\xfd\xb4\xb8\xf9\xe1~#\
+\x02\xb4\x8d[X\x105tO\xfd\xdc\xa2\xb2\xa6\xde\x0b\
+\x15\xae[]\x96\xc4\xab\x08 \x8e\x1c\xa8X1\xee\xed\
+\x02W*\x8e\x96%&\x11\x15\x1f*\xc1\x88\xbfY\xd5\
+?\xc4\xdc\xae3\xf0IE\x1dF\x06\xeb\x1f\xffh\xcd\
+\x03\xd4\x88#\xe1\xa3\x02\xb4\x81\xd7\x13@\x0b\x09\x13~\
+\x96qhT\xf2I\x04\xf9y\x1f<\x11`\xb0_\x98\
+\x82\xb0\xbb,\xcd\x03\xf6\xc1^\x82\x83\xe1y\xd2kM\
+\x80K\xe5\x81\xca\xf7A\x03\xb2\x1f\xc0\xd8e\xc3\xfd\x9b\
+\x1e\xe9V\x0f\xc4;\xd1\x06 \xd1\x03 d\x9d\x8f{\
+\x16\xdbX\xbd!0\xc4?\xfe\xc9\x7f\x1f\xb5\x5c\xee\x17\
+\xbd\xe9h\x03\xaco\x00\xc4\x15\xf3rzUj\xf6\xbc\
+\xaf\x0e-K\xa1\xbe\x0f\xe0\x000\xc3z\x04\x00\xc3\xaf\
+\x90\xb0\x93X\x00\xacA=\x7fJ\x88\xec-\xa0i\x00\
+\xd0Be *\xd0\xfc\xdd\xf1\x98\xbe%G\xa2\xb0\x04\
+\xc6\xb4\xc8\xf1>\x8f\xf8>\x8e)\xd6\x00x\x00\xb2\x00\
+\xb9\x00\x87$x\xdcw\x00\x89\xd6\x9a20\xbbV\x97\
+\xa5\x8a)\xeb\xcd\xcf'\x9e'\xd4\xf9\xa3dI\xcc\x0d\
+U~z\x16]9\x8a\xca\x8f\xcf\x13\xa8\xb1\x11\x17\x00\
+4\xd3B\xc34\x0c\xa8\xe9\x00\x12h\x04q\x1f\xf1\xdb\
+$\xfe\x00\xd9\xf8m\xe2\x0fZ\x02N\xb5\xb6\xc9\xa5\x1e\
+\xc7\xf9\xe2\xa1u\xac\xfb/Y{\x9f\xee}\xb2V\x19\
+\xef\x0e\x94\xb5\xc2I\x00\xd3n\xad#\xe1\xa7\xb2\x0ae\
+\x17q\xab\x98{\xed^\xd6\x98J\xc1xK\x985\xc4\
+)\x9e^\xc0\x98\xd7hy\xa0E\x88\xe9\x1d\x00\xbcP\
+\x82\x1d?\xc0h\x0b\xb5n\x9fS1F\x93\xd6%\x89\
+\xf5n\x9b\x00-\xfc\x9b\xaf;\x0a\x0dN\x18B|\x0f\
+Uk\x8f\x07d]\xd0:\x06\x034\x12~*\xfbf\
+\x12\xc4\x94\x02\xd6\xb9\xf7q\xcc\xb7g\xdd\xd2\xf3\xec\xc4\
+/\x98\x9cL-\x00xp+\x22=\xbc\xd3MeI\
+T\xd3\x14\xf6h\x91\x00\xd8\xe6\x9cw\x0bK\xc4\x0d\xbf\
+\xaa\xd6\x98^0\xd6\xbe\xeb\x04\x84V?\xee\xbf\x01{\
+\xc6\x8e\x86\x86\x08~\x0a\xe6\x0aL\x15\xcei\x80\x01\xdf\
+\x8f\xc9\xca\x83\x86\x04\xcf%\x18.hV\xb0\x9f\xa0\x1a\
+\xd3B\xc7\x17\x0c\x0e\x0a$\xf2*OJ\xc0\x0e\xccU\
+\xc6\xd0\xfa\x5c\xe8\x97\x95\x19 \xfc\xdft\x9f=\xd5*\
+\xc60\x8bwP\xce\x9b\xfe\xd6b\xfa\xbd\x17\xc8\x8a[\
+\x7fPf\x00\xbe\xf8\x9d\xfe\xcb2OCxFz\x9e\
+<o\xceA\xbe\x1f\x8f\xb3c=\xc3\x08p\x22\x1e\x9a\
+`\xf6#\x8co\xebw*\xa6\x8a\xfc\x1d\xb2\xd6\xa2\x1a\
+\x9aBy|\xe5\x16>\xef\x8es\x5c]\xeeC\xff\x22\
+Yy\xfd\xa8\xac\x15&(,D\x02\xdf*\xc6\xcf\xaf\
+\x05\xc2Y\xe7\x0b\x1a'\x5c\xfc\x88$\x86%2<\xdd\
+e\xe8\xe9\x8es\x85\xe7\x0c\xb3\x0e\x06\x82\x12\xf5\xef\xba\
+%w\x8d\x94\xb8*j[bH\x8c\x05(\x03\xd4D\
+\x1c\xc2\xf9o`*\xb4\xcdx\xfe$\x9a\xee!\x0f\x0d\
+\x06\x0a\x8f\x1e\xfb:\xf9\xb7\xac\xed\x93\x99\xd5\x8a\xad\x9a\
+\xe2\xd47{\x8a\x8a\xe3t\x186\xfd\x9e\xb2\xf2\xba\xb1\
+\xac\xb5L\xc3\x5c\x88s\x85\xf8\x89\x96\xde\xef\x0f\x8c\xeb\
+\xcaC<\xcc\xd3\x16voya\x14\x0e\x19\xc7z\xcb\
+\xe4_b\x06\xf1\xf9\xbb\xf3dI\xc4\x91iW\xe4\x0f\
+\x14\x10\x88\x1b\x00\xe0\x04{\xbe$\xb5T\x90\xb8_X\
+\xa1\xc1h\x15\x8fx\x1cq[\xfc\xe2}\x95+\xd7\x80\
+3Oo\xa8i\xff7jaz\x81\xf8+Z\x9d\xcd\
+\x9c\x09\x0d\x03D\xcf\x9d?t/\x97\xa5q\x81\xe4\x19\
+.tw\xcf\x93U\x8d\x81\xf9b\x94WF\xc2e\xad\
+\xb0C\xbe\xc7\xb4<\x80\x03\xa6$\x04\x00\xe4\x96\xd8\xd9\
+\x99\xdf\x15+\x1b\xbc;W\xd6z\x85@\x12+B\xae\
+\xf1Tg\xc8\xca\xeb\x03\xb2$\xa6BO\x02\xaa\xb0\xcb\
+\x0dc\x0e\xa2\xb7\xe9[~ \xa64\x06\x82\xf7,W\
+P\x9c\xf8T1\xc1[\xebX\xb3A\xfd\x95\x0a\x85\x03\
+\x19\xa8%!z\xc2\x81\x0e%\x0e\x0a\xf4\xf3k\x17\xd4\
+pp\xae\xfa8\x22T#u\xf5\xd8\x90\x04\x16\x1e\xe7\
+0\xb9\xbb\xd8=iN#\xe3\x0e\x1dP\xf4?-\xf6\
+\x93VA\xe0\xf3\x87\xa35\x95:(>\x97W\xac9\
+(\x97\xf5\x81\xbf\xb7%\xe2\xb5\xd2\xbdHZ\xf0>\xf0\
+\xa3\xd7\x07q+Wd\xa2\x07\xec\xce\x1aj\x0e\x1b\xf7\
+\xae\x8ad\xefZ\xc5\x9a\xec0C\x8cQ\x9a\xcb;4\
+\xca\x1d\xea\xd7\xfd\xf92S\xc9\xd7Nc\x92\x08\xa8x\
+\xbe\x04$\xee\x81\x89V\x02([$\xf0\x88\xff\xd1#\
+\x8b\x18\x05\xe3\x10q|\x1c|lH\xbe`j\x80\xfc\
+2_\xdc\xaa\xa3QI\xb1\x18c$\x0c0AH\xb8\
+\xd9\xf0\x0e\xac\xeb|\xdckR\xe0JO\x19b\x800\
+Q\xa8hA\x9d\x83\xb2C\x85\x9c\xc0\x92\x0a:\xe2L\
+c5j\x1c\x05\x07>\xaf\x7f\xb0\x88\xd8O\x07\x95\xfa\
+\xb2\xda\x87\xf1~P\xf7\x11\x97\x22\xa1\xa0\xf2K\x22\x07\
+e\xd4j\xf1q\xfd\x04\xa0\x04\xbc \xbb$\x94$\x0c\
+\x00\x01T0\xff\x8fy\xb1\xa1\xea\xee\xa9 \x81h#\
+\xdaCe\xc4\x89cTT\xd9W\xab:Q\x22\x81'\
+\xe1\xa3\x02\xca~l\xd3\x1a\x86\xff>N\x0c\xd9\xaf$\
+\x84T\xf8\x8dDG\xc0\x0a\xd0\xe7\xc4\xa1?^V\x0f\
+\xe2\xaa\xba\x0b\xc3\xa8;R\x96Tm\x0f4\x95l\xd7\
+j-0\x1bWN\xa9\xb8\xf0\xbc\x99\x7f\xce\xbc\xf9u\
+\xfd{Pva:ld\xb5\xf1\xf1z\xe0z\x11\xc5\
+\x1b\x8f\xcf\xa4\x22\xc2s\xa1R\x07\xd0\x03\xf0\xc5\x01\x84\
+\xda=\xfb\x80J\xaf\xefgP\xca9\xa0P\xd5\xff\x9d\
+\xacQ\x97\xfb\x9deM\xac*\xb4\x07n\x19\xe6Y\xc7\
+~`\xbd\xb1\x9fy_\x00\x0b\x98'\x00\x9c\xd6\xde\xe0\
+\xa0B\xec+\xd4\xefG\xe3\x1a\xa1|\xce\xb3\x16A\x09\
+\x82\x87\xfd\xdc(}\x83\xdfy\xb2\x13\xf4\xe7\xf9\xb9l\
+k\xf16\x80;\xa8\xf2\xf8\x0b\xf6\x05\x80\x1d\x95%\xc6\
+\xbf\xb2\xce\x08DG\x00eT\xa09\x7fH\xdc\xf9\x5c\
+\xec\x7f\x02\x00D-y\xce\x88\xb8\xb1\x0e\xf8}\x12}\
+\xf6\x1f\x01/@\x11\xc0\x04\xc0\x0d\xfb\xec\xb7\x9e\xfap\
+\x8a,U\x0eQK&!\xe1}X7\xae\x10L\x0e\
+\x93%\xffB\xc5\x1e\xbf\x0c`Ek\x0f\x94Y'\x8c\
+\x000\xf8\x89\xb8\x0fT\x98\xb9\xefP\xd0\xa1,\x02\xf4\
+!&\x07\x00J\xa0\x0eu\xd2@f\xa8\xc2\xd3R\xe4\
+V\xb8\x10\xdf\xe3\x1c\x02\xd8\xa0\xb2\xc9\xab\x81\xccH\xa0\
+\xdd\xda4\xd9\xc5\x15\xea;,&\x87\x98 \xf7\x07\xf5\
+ik\xd7Do\xec|Y\x13\xc3\x8a\xfdm\xbf\x1d\xd3\
+%\x1cp\xf7\xb3\xb2T\x09\xc7/\xd3b\xc7\xfd`\xbd\
+\xd1\x02\x81\xff\xe7\x95y\xd0\xec/\xae\x8f\x00\xfdh3\
+)\x01j8\x1f8\xb7\xddR\x19cv\xcd\xd4\x8c}\
+\xee\xb1\xb2|ND\xb4B\xed\xdfS\x92\xa2\x22m\x8a\
+?\xe2\x8e\x00\xd7\xdd\xe7e\x89\x99a\x0d\x84\x00\x80\x19\
+w\x06\xb0\xea\xf5\x11-\x9fh\x1f1\xee\x8d\x1e~\xfc\
+\x0e\x0cC*\xed\xd6\xfc\x898\x03\x7f\xce\xd4\x0f\xe2\x18\
+(\xc5\xee\xfd\xe7\x9c\x0f\xc6\x01\xe3vi\xa9\x84\x81\xe0\
+\x1e\xdd\xf0\x9f$\x90h\xec\xc0\xd0\x80\xfa\x8f\xa8\x22\xf1\
+\x02}\xd0R^\x00\x00 \x00IDAT\xda\x13\xdc\
+O\xd6!\xe7\x0a\x00\x00\x05\x0bS\xc4\x038'n\x81\
+\x81\xe11\xb4\x93\xf9\x93G\xd5:Q|\xca\xeb\xab_\
+9y\xdeIU\x04\xee\xc8b_K\xe3\x17\xef\xab)\
+\xcbP\xb1\xbf\xbe\x8d\xc1c\xfdv\xd7\x15\xbb\xd6\x09\xda\
+\xc7\x93h\xa0\xa7\xd9\x84\x06\x06\xa2\x94\xf6\xa35\x01\x16\
+\xb3\xee\xf9\xb2\xb2\xce\xd7\x94\x95\xef\x0f\x90\x95\xef\x1f\x90\
+5?\x11\x15j*\xa0|q\xee\xb3n\x89'y%\
+^\xa0u\x12f(\x05\x17\xc1\x09\x7fjq^\x7fh\
+\xb1C\xdc\xd3\xfd\xe5&\xc6\x16\xe2\xe1\xb4\xc6\xac[O\
+\xeeV\xa0\xf3:\xedO\x90\x95\xd7g\xc8Z\xde\x82h\
+\xea\xf4\x8d\xb2\xf2\xba\xc2P\x98\x8cVg'\x94\xfd\xa7\
+\xfb\x83\xfaO\xb7\x82I\xad \xff\xd0\xf9\xcb\xda\x89\xe9\
+\x01s\x16\x0a\xbb>\xdd\xe1\xe5\xe7\x96/\xf6\x94\xa4\xc5\
+\x80H\x1f\x22\xbe\xac?\x00^\x80i\xce\x1f\xfc<\x22\
+\xda\xf6\x03Q\x91wO;-\x01\x11\x0f[\x1c9\x98\
+J\xcb\x0d\x1aC\xfd\xa9\xb26>/\xd4\xe8\xc9\xcf\x10\
+\xd5\xb38n\xb4\xf4\xaed-\x03\x98\xdb\xc4mLi\
+\x01`\xf79^5\xc7\xde\xd1Z1\x829\xe6\xfc\x07\
+ r\xbay\xf9\xdc\x9b\xd7)\x18\xc7h\xdaE\xb7\x96\
+\xac\xb5\xc2L\x7f\xe0\x8a\xbd\x192q]\xb4\xc6\x18\xf0\
+\x02x\x8e\xfb/\xef\xbb\x9c[\xd8\xf7J~\x15M\x11\
+\xe2|\xfc\xb1\xc4\x84\xaf\xa8\xe7H\x15O\x9d\x1ej\xe0\
+\x1dF\x01\xfe\x97VO\x80;\x18\xd9\x8b\xcb\x1e\x87\xa9\
+N\xc1\x9a\xf7\xe7<\x06\xf0f*\xd5\x8b\x87\xe9\x03c\
+\xd1\xd2\xda\xbaT\xce\x85\xfe\xbfd\xe5\xfb\x8ddMs\
+E\x12\x85\x12)\x9c\xad\xaa\xffw\xb7\x1b0\xb9ZV\
+\xf6\xe1\xfa\xb2\xf2\xba\xb1,Uvp\xa4\xd6\x08\x88\x00\
+\x90\x079\x1a\x0f\x16\xd4W\xc6\xf78\xe0\x10a\xa5\x02\
+\x0cS\xb7DCI\xf5\x02\xa7\x07$(Z\xa8\x80\xbb\
+b\x17\x95m6\xc0R\xb5f1 \xc0\xab%\xc7\x0a\
+\xf5\xd5=\xa9\x11\x80\x10\xe8\xc8\x0d\xfd\xd3\x89\xf7r\x0b\
+\x88&\x0d\xc0\xc4^\xc3\xd8\xab\x10\xa7\x10\xd5fm\xab\
+\x9a\xfe#\x89\x80\xe9`|F\x12I\x22\xb1!\xb0\xd5\
+\xf6}B\xa2\xcc\x1f^\xadU\x1e\xfd}\x88\xa5 \x92\
+\xa44\xfcii\xac\xa0\x81\x91\x8aS\xffG\x0bX\xba\
+\x17\x14[;9f\xa8Cr\x0bB\xc4\xf7+\xf6\xc9\
+\xa4\x06\xec\x0an\xed\x89\xdb\xbfQE\x82\x8a\xa7\xb4\xe3\
+Y\xa9'|$\xe2\x12=ht\xb4\x03\xb8\xb4\x04g\
+\x08`\xef\xa9:\xbb\xc3\xc2}z\x0aXH\xecH\xb0\
+X'\x88by\x81\xc6\xb8\x11Z\x02\x1c\xa8\x90\xb8\xc7\
+F\xe1\xe0\xa02\xca+\x94|\x0eR\x124\x8fK\x0b\
+\xb1@\xad\x96\x15R 9\xa2\xacGB\xc0\xf5\x11\xa0\
+\x8d\xc7\x91\x01\xa0@\xfd\xa5\x92<\xeeMb\x9d\x918\
+q B\x89m\x22m\xc3:B\xccj4g>\x1c\
+\x06j\xe2\xccM\x1fO?\xe0s\x13\xa0s_\xf8\x5c\
+\x5c\x1f\xcf\x05\xe4\x94\x9f\xff@\xb5F-\xe5@d\xbf\
+\xfb\xbf\xd3\x1a\x14\x08\xfd3\xfdy8\xc89\xc0\x1d\x00\
+#\x06\x15\xfbd^\xe8b\x0c\xcf\x8b\xfb\x01\x15\x9f\xcf\
+\x87z9\x00\xe0#fFx\xdc^\xff\xdd\xfe;\xfd\
+w\x92\xe6\x08j\xf7G\x0f\xbd\xd9\x93o\x0c\x22\x7f\x11\
+H\xe2`IH\xb9/L1x\xf70F\x11*\x1f\
+\x15\xfbH\xfc\xdb\x9c\xf8\xc1\xef\xb0\x9e\xf9\xfc$rT\
+b\xc7\xc0\x08\x00\x0d\xcf\x89\x9f#\x01\x03\x10b\xddA\
+=\xe5`D\xdc\x12\xbf\xe1\xf57\xfd\x97\xac|\x7f\xf0\
+\xa0\x0e\x1d\x89\x0a\x80\xd6.\xb2\xf2:\x19Z6&\xbf\
+p/\xec\xf7\x87\xc4,\xc6\xf7\xec+Ks\xdc/1\
+\xc5\xf4\x89N,Q5G\xd4\x8b\x16\xb1-\x87sc\
+\xfa:SjQ\xfdv\xaf.\xeb5\x12Q\xf6\x11\xcf\
+\xf9\xd6Ak`\xfac\xbf\x0f\xfb\x11\xa6\x0a\xda\x1c$\
+D$\xba\xac{\xcf\x03\x8fJ5\x94k\xf67@\x17\
+\x0c\x0e\xf6\x05~\x05\x00\x86\xe7\x04pI\xc0E\x85\x96\
+\xc4\x0d\xff\xc1\xfamT\xfda?\xf3w\x01*aR\
+\x80\xf4\xf3=\x8c\x04\xfc#\xe3\x91~\xeb\x16\x07Z\x89\
+\xb8O\x97ZTn\x0dO\x19\x80\xa1\xe6\x96\xbb\xa8\x10\
+\x1b\xc0\x8bJ;\x9a\x0f\xec#\xc6\x8aB-\x86\x91\xc0\
+\x18EWb\xe2\xba\xb8?TH\xd1\xe2\xe1\xf7\x01.\
+`\xc2\xd1\x8bO%\xca\x0c\x9e:\xcd\xe7\xc3)1\xf3\
+>\x8d\xfb\x0dpB+\x1c\x1a\x00\xe3\xca1\x81\x16_\
+\xb4\xd2\xb82\x1c\x09\x1a\x7f\xd7\xe7a0L\x00\x0a\xa0\
+\xae\xbb7\x9f) U\xf4\xec\xceT\xb93\x80\x11c\
+\x5c\x99\xba\xe3\xf3%\xa6'p\x1e\xc0l@\xf4\xef\xab\
+2'lG\xa6s\x8cx\x8a\xcf\xcb\xfa!n\xb1\xff\
+\x8b\xc4\xd3\xfe\x8b\xfb\x19\xfe\x0b\xa6\x1f\x9f\x0b\xb1)\xc6\
+\xac\xb2\x7f\x00v8\xef\xcd0\x88\xebv\x01h\xb2\x93\
+\xac\x8d\xcd\x0b\xad%W\xec'7\xca\xd2\xb4\x06\xaf\x8b\
+\x10+f:\x07\xf3\xb9Ip\xd0|\x82\x99\x86v\x91\
+\x03\xf7h\xf9d\xff3\xa5\xc1Z\x14\xf1\xbc\x1c\x97r\
+_\xa35\x81\xfd\xed\xc0<\xc4\x85\x89\xa7\x08\xd4at\
+\x22B\x08\xa3\xd4\xf1i\x8c\xbbE\xc3\xc0\xad\x22q>\
+\x8e\x81&\xfc4\xad*\xb4\x90\xd1\xaa\x02\xd0\xcc\xfa@\
+#\x80V\xd9\x8b\xecg\x1fZ\x90\xe93\xd9v\xb2\x8d\
+\x80\xef\xee\x17\xdd\x99\xdd\x99\x89a\xe8\xca\x1f\x22\xc9\xb5\
+a\xf7\xea\xe6\xa7\x00\xc0\xbb\x97\xc9\xca\xeb\xb6\xb2\x16\xb7\
+N..v\x91\xf3\x80\xab,>vH\xd3\xca\x917\
+\xae\xfeX\xfe\xa5\xf8\x83\xb9w\x17{\x97+\x9a[5\
+\x8av$\xdc\xc4\x0f\x9c\xaf\x00\x8d0\x99\xb4\xda\xbb$\
+*\xcd\xfa'\xae\x19\xfbS\xc6\xbb2\x9d\xc5\xeb\xb0\x8a\
+\xf1\x1d\x97\xee\x13\xe7\x8c\x19\x07\xa8\xf6\x93\x98\xc6zA\
+\xac\x93x\x99\xfb\xef\xf3\x18\x11\xe4\xe8M7\xd3d\xba\
+\x86,\x8d[\xa6\xd5\x11\xb18\xf2\x224y\xce\xd4@\
+\xdfZ0\x19\xc69J3`\xe7\x06\xfc\x85\xba\xbd4\
+\x05\x04Xt\xb2\xd4\x1a\xed\xd7P\x91\xf7>%?\x99\
+\xf7\xfejm\x1c\xa9\xe3\xda\x92(o\xaeD9\x98\xaa\
+P\xfd_*Kby\x87\xcb\x1a`\x87\x86\x06\xad\xcf\
+\xac\xc7\xca\x88\x9eIq\x15\xe7\x15\xe7.~\x9f\xd6A\
+\x9e\x07\xf1\xad\xb5%\xf0\x07\xc10|\x8a\xe3H\xf6#\
+S\x9b^!K@\x1e\x001\xef\xff\xderz\xbd7\
+M]:x\xf0+\xc1\xf0Z\xd5\xe73\xd4{\xb4-\
+(\xb4\x1eT\xe7f4-\x12\xb7\xb4L7\x93\xb5\xd6\
+\xde(\xe4\xbe\xb7\xbec0\x16\x22^{\xb1\xef/\xaa\
+\xfb\xf8a\x18\x92\x007\xf6/0\x15\xc4g\x15\xa3\x15\
+\x0d\x84\x88\xf3\xc8+\x0c\xbc\x87\x9fg?\x99A\xc7\xfa\
+\x86i\xd7\xfdZV\xd6\xed\x99\xb2\xf2\xfdN\xb2\xf2\xfd\
+A\xb2T\x18\xf5:\x9d\x0dj\xcf]\xb2\xf2\x0b\xfb\xc9\
+\xca\xeb\x07\x8a\xed\xd4\x02\xf5@$\xe9-\xf0\x02\xa9H\
+\xca\xd9M\x0c\xa4\x0e\xe3\xdb:Q\x1f\xf6\x90\xa5\x1eN\
+D\xe3\x9e\xe6^:T\xe1\xe9aX\xc7\x94\x05DD\
+\xdc\xb3\xd4\xbdFV.\xe4g\xb2T\xd9f,\x02\x07\
+?\xd4k\x1c\x0c\xa2$,D\x12\x1b\x90\xa5_Z\xf4\
+E\x14\xb9\xab\xd3\x01K%\xce\x95\xce\xe8\xd5\x86j#\
+Gy\xb1U\x88\x9f\x9c*\xb2\x04\xe8\x04R KP\
+\xf9\xd5a\xb2\xa5\xd5\xa2\xdf\x92>\x8f\xd2\x84\x07Rb\
+\x808\x0d\xad\x0eP\xd8\x08\x1c\xe8\xed\xd7\xdc\xddG\xda\
+\x98\xbd\x8a\x9b\xdf\xf08\x14s\xf7\x82\x05\x00\x02\xa5\xd7\
+\xe3~\x22\x11\xa3\xf7J8\xf71Is\x80\x84F\x1d\
+\xd7\xe7>NBI\x05V\xb8\xe3\x9a\xa9B\x8a\xf8\x15\
+\x88\x1a\x09\x12\x9f\x83J/\x07\xfbx\x9e7\xaf\x044\
+\xcc\xa35P\x11\x22@\x04HcF\x02\x7f\x7f\x5cy\
+~Ju9\x0d\xa9<i@\xceC\xe4\xc7S\x15B\
+\x9c\xc9\x9f\x03\xe6ET\x0aH\xdc\x08\x849\xb8IH\
+x\xbeT\xec\xb8o\x1c\xfc\x00%he\xdchUt\
+\xde\x97}C \x05\xf0\xc5\xfd \xa1\x00\xd8\xe0\x95\x1e\
+R>\x1f\xef\xc7\xbe\x18\xf7\xd8r_p\x10<o\xbe\
+XG\xcc\xd1&ac\x8c\x8e+^\x04p\xdd\x16\xb2\
+\x94\xe8P\xa9\xe5s\xd3\xea\x81\x1a3\x08m\x16\xdb\xbc\
+7}O\x05u\xa1\xa0\xbe/\xb0\x1e\x10\x01\xeaOq\
+\xe2\x0f\xd5\xf0\x9e\xe1\x80\x8a\xc0\xeb\x1c\x8b6\xfe\xc5\x94\
+i\x9e\x13~\x03\x84\x95\xc4\x8e\xfbK\x85\x86\x04\x9bu\
+I\x22\x08p\x00\x10\xc0}n\xe3\xef\x86\xf5\xc7\xfa$\
+\x11\x07 \xe09\xf1\xca\x81J\xc5\x9a\x8a6\xe3\xcbF\
+\x8c\x90\xa8\xa0r=\x04\xa8\xf8_\x02Q\xf6\x03\x89\x19\
+\xfb\x90\xca\x13\x81\xef|\xff\x1c\xd3\x22\xa8\xb8\xfb:\x11\
+7R\xa3T\x9d\x86\xb2\x82+\xe3\xa8?\xc3\xd4\x809\
+\x82\x16\x02\x0c\x0b\xf6\x05\x22\xaa\x04\xd2|\xce\xeb\x9d\xf8\
+\x92\x08MF\xaa\xb9\x9e\xbb\x1d\x88<\x81;\xd4z\xee\
+\x13L\x14\xfc\x94[U\xa2\x97\x15`\x80\x8a\x09\x95}\
+\x12D(\xfe\x046\x04\x0e\xe3q\x9en}\x09\xed\x01\
+\xce\x0f\xd6\x13\x95yD;\xc7\x95\xdb%F\xea\xc0\xac\
+\x17D\xf9\xa8\x10\xff\xcb\x81\xbe\xc7\x86Qq\x8a\xfd\xf2\
+\xe4\x05[\x16\xc2\xff\x22\xf6\xc8zp\xc0X\x13\x89m\
+\x12\xf0\xfa\xb3\x12\xa8\xfe\xbc\x02\xeb\x83\x98#\x8c\x0d\xa8\
+\xb6\xec\x03\xd65\xd7\xcf:f]\xe1?\x00\x06\xa0\xee\
+\x12\x90\x92\xc0Q\x89\x010<I\x96\xe6\xda#\x06\x89\
+\x0a2\xfe\x84\xd713\x82J\x08-\x11P\x5c\xff)\
+KL/\xee7@,\xd73\x1a\xcb\x1a\x0c\x03*\xcf\
+\xc4\x03\xfe\xbe\xff\xbb,M?\xbaD\xd6\x00\x00\x02\xbf\
+\xfe`Yy}\x9d\xac\x89=\x866\x0c\xad\x12\x04\xd4\
+\x00\xab\x00|\xf4\xb6\xe2\x1f<\x96\x15\x8d\x22\x98<5\
+\x1ex8\xf9m\x12\x1aT\xe1\x19_i\xa6YPM\
+\x99\x06\x03\xa5\xdc\x15t\xc4\xa7\x08\xfc\xa3\x95\x89D\x0c\
+\xcd\x8d+d\x89\x8a\xfd\x83\xa1bX\xeeq=\x97a\
+n\x226\x16\xadl\xa8\xf8\xb3\xcf]`\x8a)Q\x8c\
+\x81D}\x9b\xa9N\x8c[5%;\x98\x00\x14\xaa(\
+\xcc\xb8G\xb8\x8a\xd4};1\x19\x99v\x84H4\xcc\
+6\x18^\x00p/1\x80\x06#\x821\xcf\x9f\x96%\
+\x80\x80\x04\xdfc\x94#!\x03\x80\xe3s\xe1\x97\xcc\x08\
+\x88\xc0\x9e\xf5\x8c\x08\xaa\xef'L\x8d`\xf4<\xd7\x89\
+%\xef'\xad\x9d<~\x91u\xcd\xdf\xe3}\xfe.+\
+\xc7\xe6\xac\xac\x89\xbdU\xa6\xef:\x0d\x88\xed\x96)V\
+\xe2\xcdn\xffb\xeaE^G\xd6\x18\xb6\x8c\xb7\xebW\
+.\xf6\x0ck\xb1\x9c\x9a\xc6\xc11\xfd\xc3\xcc\x83\x0a\xdc\
+\xfc\xb11\x0b\x22\x01\xb5\x08Y\xf5\xa2s\xc9\x7f,T\
+O\xf8\xd6z\xc1~$^\xe1\xfc\xc2\x9f\x03(\xa2y\
+\xe3u\xddm +\xaf\xcf)\xa6q\x87\x87\xc8\xca\xdb\
+\xad k\xad=\x8c\xf5d\x0aChjX5\xbeR\
+\xd2\xf7hs\xeb\xe3y!\x9eg\x80\x9d\xeb\x0fF\x00\
+\x895\xe3\x00\xaf\x95ld\x03\x0a\xa8\xac\xe3\xaf\x00\xce\
+c\xba\x14\xe7\xd1\xaeU\x9d\xa2\xed;\xf2\x19\xaf_\x18\
+\x05\x91\x9f\x19\xa0\xa7\xf5$\x98[\xe38\x1d\xe6\x9bE\
+\x0cI\x98C\x5c\x8ex\xd6q\xc5t/Y\xb9\x1f\xeb\
+\xc8R\x01\x90\xb8\x96)1T\xb6\xd1\x96q\x8b\xc9t\
+gY\x8aOh\x95B\x8b\x00\xa0\x9b\x16\x01\x80S\x9f\
+/1N\xd1L\xf0\xf0\x9b\xce\x03\xe6\x8e\x97\xd5\x96\xa4\
+\x01\xd8\xb9\xd2\xadY+\xba\x10\x06\xa3a\x1bY\x02\xa8\
+\x10\xe3\xe4|%n#\xcf\xb2\x98i9\x05\xcf\xac\x14\
+{M\xc3x\xae\x9f\xe3\x9dI\xb4\x91\xe9JT\xf2\xcd\
+\xacBs\xac_W\x96\xc6m{:A\x9c\xf3\x14,\
+`\xf0\xa2}\xe0\xb85\x0a0\x14\x0a`\xc8\xffd`\
+\x12\xc7\xbar\xfe\x10\xe7/\xadD\xb40\xb0\x7f\x0cT\
+\xce\x82\x14\xd2\xc3\x05\x22\xde\xbf\xb2\xd8\xab\x92z7c\
+\xe08\xa0|\x00\xa1\xba\x19\xd4\xe9/9\x90c,\x1c\
+\xbdEV\x1d\x0e\xd1/.\xe08\xcf\xcd\xfc\x9d+\x9a\
+l\x1c\xa8\x11 \x82\xa8\x9c\xba\x075\xe6-\xb3\x00\xf9\
+\x5c\x04\xf2 \xa2\x88\xc1 \x8a\xc2\x18!\x02\x04\xcf\xb3\
+\xaf\x89\xfcR\x0ex\xceJ\x89\x1aH\xad\xeaH\xafJ\
+\x15p!\xe1%\x00\x98\xf9Y\xb1\x9fZ;\xe1;\x8d\
+:E\x022]M\xd6z\x81\xc2\x81h\xf9\x7f\xd2\x81\
+\xfeR\xeds0f0\x1c\x1eH\x9f\x10\xd9k\xd2\xc1\
+\xec\xb1\x18\xb1Q\xe5F.\xf7\xc1\xfa\x88\x11\xa4\x0d|\
+\x1d\xcbx\xe3?\xab1%\xa2E@\x22F\xf7\xa7^\
+L!\xb9op/\xe9i\x89\xb2\xe6y\x9b\xf4\x84E\
+o7\x09\x10\x09\xb7\xb6\xdb\xf2)P\x5c\xb2v\xb3\xb6\
+\xc4\x92\x0d\x06\xc2\xcb\xf7M\xe4j\xa0\xfc3\xff\x96\x03\
+\x8du\xc0\x02\x86\x92\xcbAA@N\x825f\x00P\
+Q\x00\xc9\xbb\xdf=<\xfaW\xee\xf36M\xed=z\
+'-6\x16\x07\xae\x03\xb1\x18\xb7f\x8a\x5cTF9\
+\x88\x09\xc0Ab\xff\xe9uh\x91\xa1H\xf08\xa8a\
+\x02PA\xa3\xc24N\xd8qT$\xa8\x04\xaeTN\
+\xf9w*\xc7T&\x01\x04\xc6Te\xee\x13\x8e\x85\x7f\
+'0\xa6\xe5\xc0\x15\xc7\xea\x08\xcfL\xaa\xd9\x88\x0a\x19\
+\xa8\x8a\x9eM\x0e\xaa~\xa4\xda\xcf\xd8@&!\x00\xe8\
+\xc0\x08@,\x94\xc4\x94D\x19\xa0\x82\xcf5\x9e\x16a\
+\xeaw\x00$\xf8\x03\xd6\xddk\x1c B\x11\x85\xca\xce\
+81zaW\x1b\xb5.p@\xbb\xf2\x11\xef\xc7:\
+$\xe1'\x91\x03\x08h\x89\xebp\x9f\xf9y\xee\x03\x15\
+'\x127\x02~\xd4\xc7\x01l\xf8\xef\x04\x04\x5c?s\
+i\xcd\x08\x09\x11EZs\xf89\x9eg\x0e\xb0\x16z\
+\x9ci\x03\xfc\x1c\xefG\x0b\x03\x15?Z\x1dH\xe4\x9e\
+\xee9\xc67Y\x9c\x92J\x22\xf7\x8d\xc0\x0d@\x95\x8a\
+\xbd\x81\xa3h\xe9\x82\xf2g\xa4=\xb4=`x\x90\xf8\
+\xb3^\xf0wTX\xb8\x8f<\x971\x93\xa3\x89\x0d\x0e\
+?\xe7\x04\xba\xf2\xbe2\x00I`D\xa5\xf9u\xde\xef\
+\xaf4%\xdc\x81Y\xf8]\x00\x0c\xee\xe3\x9c\xfd\xcc\xb8\
+\xe5\x8c\xc0`\x0c\xa8Q\x11\x81J\xc8\xb4\x11\x9e'\xc0\
+\x03\x80)\xfe\x91\xe7\x0e\xe0\xc2\xe7\x05h\x80)d\x06\
+FP\x17\xf1K\xac+\x12I\x80#\xfc\xfcMC\x05\
+7z\xcc9_\xa9\xa8\xf9\xfa\x83)\xe6\xde\xc2\x08`\
+ie2\xc3,\x02\x17\x00\x11\x9f\xcb!\xb6I\x82\xcb\
+4\x05\x98pT\x80>>\x8cA\x8b\x04\x1c\xff\xe8s\
+9\xd4\xe0I\x84]\x89\x0f\xe0\x82\x84\x9f\xf5\xc0\x1c{\
+\x80Z\xd6'@+q\x0d\x9a#\x04\x9e\x0e\xdc\xe6.\
+\x97\x95\xbf\xbb\xf50v\x15\xca|\x00(\x16\xd3\x9c~\
+T\xd6ZY\xa8PE\xa5\x8a\x8a\x8f\x81\xf8\xb8\xbeq\
+\x02\x07@\xcc9@\xab#\xc0 ~\x0bj3\xad\x12\
+$\xa0\xd6\x84\x08J\xb7\x13\xe1\xa8\xc4!B\xe6@\xb6\
+_E\xd6\x80\x84\xc0\xe5\xa9\x10R\xf8\xa0\xa5\xc8\xfe\x15\
+\xf1\xd0\xa0\xbc\xef\xe68\xc5c\xa8\xa6\x0b\xcb\x9a\x08q\
+T\xcc\xd1\x14\xe2\xfes\x9d\x8c\xfb4\x03pr\xbc,\
+M/\x01\xa0\xe1\xdfy\xff\xfa\xd5\xb4\xa9b\x9d\xb3/\
+\xf7\xb7\x88\xdf\xff\xca\x92\x08\x1c\x15a\x18\x99hI\x10\
+\x17\xc3\x1c@d\x17J?c\x05\x89\xeb\xd0Z1\xb3\
+\xaaj\xef\xff(1\x03\x010\x10q\xfc\xe1\x00p\x04\
+@M\xe1\xcb\x22\xd0\xd1\x1ak\xed\x9e\xf0\x0f\xc4u\xbc\
+\x9fD\xf1\x9e\xe5\xf8\xe4}\xa90\xe2\xb8w\xe6nY\
+qC\x1f/\xf61\x03\x0b]z^~\x0e\x9d\xbe$\
+b\xbd\x9a\xac\xbc\xae,kq\x0eL\x01\xa8\xf6\xb4r\
+L\xbe K~\x99\xf8G\xebd\xd3\xd4\xb2j\x805\
+Z\xb0\xd8\x7f\xc4\x9f|n\xc7w\xd1\x9aE<\xc1\x17\
+\x09\x1a\xfb[u\xd3MM\x11/~\xaa;VV\x1e\
+\xfb\xcfe\x0d`\x8b\x04\x8c\xfc\x81\xf5k\x11\xcc\x10]\
+sB\x15\x8c\x86\xb5\x8a\xa9\x10\xb9b\xb1\x95Z\xa1\x8f\
+\xcf\x0b`\x10\x09<~U\x05%U\xf4\xd7+&\xf5\
+\xf67\xc8\x92\x06\x0a\x09#\xe7\x01q\xb3\x99E\x8c\xd7\
+\x0b&3\x22n0'\xdc\x02\x0c\xa3\x00F0\x15\xec\
+\xd0\xac\xa0\xf2\xcd\xfd&.V\xe1\xeb\xc4v\x1e\xa3\xd1\
+\x11Zn\xe2\x1f\xbd\xa3\x8e\xa5;D\xa2\x80s\xdf\x96\
+\xb5\xfc\xac{\xb6\xac\xe5y1\xf5\x83qx?7\xa0\
+,\x98\xf6\xee\x04\xc8\x9aq\x01\x90 %\x80\xca\xc0p\
+\xfe\x17\xf1?q\x09cT\x17\x91\xb5)+\xf1\x1c\x01\
+\x94\x99^\x02#U\x1a\x1f\xa7\xf8\xfc\xd9\xb8\x15Ha\
+\xacP\x08 ?\x8b\xf3\xc7\xf1VLqP\xbd\xffs\
+U\x04\xbeN\x9f\xd0\xd0\xc9\x0a\xb0\x18\xa0\xec\x0f\x935\
+f\x95\xa4\x13%\x9e\xd8?Q\xd6\x80O\xc6/\xe2\xf7\
+\x03\x00EC\xc4q{L\xcdc\xfc<@\xfb\xef\xbd\
+\x0f\x00\xbe)H\xf9z\x83yF<\x84?\x05x\xe1\
+|q\x5c=\x8b8D\xa5\xb8\x94\x0d9\xf7{Y\x1b\
+C1\xbbF\xb1\xd5\xbd\x91~\xe6\x03\xf6\xe0\x14H\xb3\
+1\xaf\xa9)\xbe\x12\xa1z0w\xcf\x92\xa5\x0a\x00\x89\
+\x9dEc\xe2 #\xc1\xd8g8H\x83*\xf1\xb3\xc1\
+\xe1N\x9ffD\x8d\x00\x98\x0b\xe3d\x22@\x02!#\
+\xd0\x81\xfa\x06\xb5Ju\x9f\xbf=\xce\x18(\x02b\xfd\
+\xd5ERk\xc3\xadU\xe7\xb1U\xb4u\x5c\xed\xd4\x10\
+\x1b\x1cc\xf7\xa7b\x97\xa7\x1b\x0f\x02\x0a\xb2DE\xc9\
+*\xb4\x15\xc7\xbe\xcc\x81\xd8R^\xe8\x0b'\xc7g\x04\
+4\x02F\xdd\xa5\x8f$G\xc1\xc1c\x15\xfc\x9a\xe6\xdc\
+\x93\x025*\xe1PIF\xbd\xac\x15\xf1M\xe3\xd2j\
+%\xe2\x0f>\xf8\xce\xf3\x01\xf7\xda\x94\xa8P9\x80\xb2\
+#7\xf2\xd3\x84\x14\xe2\x88U9xwBp\x01\x08\
+\xa8TB\x81\x06\xf1\xe59\x92(\xf1\xf9\xe8\x8d$P\
+]b\xa4rM\xc2\x82\x03\xe3\xdf\xf9\xe2\xfa\xf9\xfc|\
+1u\xc2-$$D\xa1)\xa04#3\x0dTw\
+\xbb7\xdd_\xe66\x13\xa8\x90\x10\xa0F\xeey\xc9\xb4\
+\xbaD\x02\xe6\x0ad\xa8\x01\x8f{z\xb9.(\xb2n\
+\x19\x80\xe2\x1f\xe2\x90$\xf8\xfc>\x09\x0d\xc8\xa1\xd7\x7f\
+0\x08\xac\x92\x1b\x0e\x80\x96\x1c\x0e\x18\x00\x18\x80\x15\x18\
+4$\x1a\x0by\xfd=\xe8\x04\x0a*\xfc\xffx<\xcb\
+yV\xc5\xa6'\xebk\xb2T\xc9\xda\xdc\xe2\x81\xf4@\
+\xb3\x9e\xf9<<\x7f\x12S\x12a\x10Q\x80\x0c\x128\
+\xa8\xc8T\xaa_8T\x06\x99\xc3\xdeo(K\x88\xec\
+\x0bSo\xdc\xaaiZ\x09-C\xa8k\xa3\xbeL\xaf\
+2~\x86\x0a\x10\xefK`\xc3}\x02\xf0\x22\xf1G\x1d\
+\x9e\xde6\x1c\xf6\xa8\xf5!\xae\x1b\x80\x83\x84\xb9\x01.\
+Cb\xb2\xe9h\xfd\xd3\xd21\x9e.\xc1\xbf\xc3\xb8!\
+!\xe0\xef\xf3\xc5\xba\x19\xa9\xaa\xc7z \x81\x04X\x01\
+@\xe2\xb9m\xec\x03\x84\x8a\xd2\xf5\xb2\xe4\x97Pe\xe7\
+}\xa8\xc8Q9\xb3\x9f\x8e\x9eZ\x80Z'\xa81\xfd\
+\x81\xdeq\x02\x10>\xef\x83\x1e\x17\xfbbW\x1e\xb8o\
+\xecK4)`>l\xeb\xc0\x1f\xed\x94+-\xbe\xf9\
+E\x8f\xaf{\x9e\xcf\x0b\xae\x9b\xfb\x0a0\x0c\xd0\x91\xb5\
+V\xeeL~~<\xc5\x81\x00\xcd\xd7\x01`\x1a\xc0\x00\
+\x14g3e\x00\xce\xe2~\xb5V\x81\xc5\xaa\xffB#\
+\xe2\xef\xbe\xbfwx?\x00l\x9b:8y\x9f+\xc3\
+L\xa1\xa0\x82\xc0}\x04`\x18k\x13\xf0\x5c\x11\xdd%\
+\x11\x80)F\xc2D\x02\xc3\xbe\xf585T\xa8\xe3<\
+\x07@\x84\xa9\xf4!\x8b^\xd12H\x0b\x02\x15)\xfe\
+>\xcc'\xc6|9\x91b\x9ew\xa8;#\xd6\xc6y\
+\x8e\xffG\x85\x9b)\x10\xb4\x10\xf8\xfd\x18\xdbY[\xe0\
+\xf6k\x14\xf4\xf8\xde\x15\x94`\xe8Q\x81F\xc5\x7f\x8f\
+\x81\xb2\xdb\xcf\xc8\x92v\x0aTbM\xcdY\xa8U\xac\
+\xa6\xef\x94\x95\x9f?Y\x96\x0a\x10\xcc=\x87!HK\
+\x1b\x09%\xe7 \xfb\x19?\x01P\x0c\xa0Ib\xc5\x94\
+ \xc6\xf6\xc1\x10\x82i\xc3\xd8@\xc6(\xd2\xe3\xee\x8a\
+V\xfc}\xd65\xaa\xe3fh\x00\x0c\xc4\xf9\xe3\x0a|\
+h\x05\xb0\x8f\xddZ\xd5\xed%\xabZ\x0a\xc5\xdayN\
+\xe50\x12\x12W\xfeb_\x03\xb8\x1a`B\xa4XJ\
+R\xd2\x92\x8aV\x15\x12h\xf6+\xbf\x87\x9f\x1b\x03\xab\
+\xacw\xe2B\xd6/\xaf\xacK\xb5r^\xd5z\xea\xa3\
+E\x86\x96\x0e\xaf\xe7\x00V\x5c\x88\x8a\xb1\x8e[\x0e\x0c\
+\xa8\xaa\xb1\xb4c\xf9\xfe?\x87^\xe0\x00\xde8w\xd9\
+g\x8c9\xfc\xd1@]\x9fw\xb0\x99\x0a\x0f\xc9\xd2T\
+\x00\x18\x15h\x0e8\xce.^\xa5\x8e[\x8e\x96/I\
+E\xefl\xe0\xee\xa6\x94\x08\xf9}\x18\xdb6{h\xb1\
+\x92\xc0uGt\xff\xaf;\xa2\x89\xc1N\xae\x955\xd1\
+\xeaH\xfc\x17\x96\x95\xd7{d\xe5u\x1bY\xea=g\
+\x9d\x11\xcf\x01\xbcn^O\xfe\xc6\xa4\xa0\xd5\x0c\xb5v\
+Z\x7f\xce\x95,\xaa\x0br\xe7\xa7\xfdDA\x07\xff@\
+!\x04\xbf\x0b\xb0\x8a\xd8\xab\xc7\xbeNv+\xb6\xbb\xb5\
+\xbb\xca>\xe9\xd6-V>\xcf\xcc\x8d\xb2\xf2k\x87\xcb\
+\xdazG\x9c3Z\x00\xad\xbeN\x1c\x11\x8c\x00\xce\x13\
+1\x06>\x9b\xf2\x13\x00M\xb4\xd0`v\xc0\xec\x22\xee\
+%1c\xda\x17\x85\x1e\x18ehe\xb9\x87~b\xcd\
+\x9b\xd0\x10\xf1\xf9L\x02\x1e\xe3\xd5\x89C87\xec\xa7\
+k\xaf\xf7\x8b\xd3\xb4\x0f\xee\x97\xb5\x12\xa2\xd5\x81\xd6\x22\
+\x8b|\x87V\x04\xcc`\x8f\xfb\xac\x0c\x87r\xde\xcc_\
+\xaf\xd8\xfam\xddu\x97\xcb\xca\xba\xdaEV\xee\xf3\xa6\
+23.J\x9c4\xf3\x17Y;\xa7\xfa\xcde\x0d\x00\
+\xe9\xffT\xec\x8f\xc9?\xb1\x9e9GO\x9f\x9e1=\
+=\xc5Q\xecc\xc6n\xbb\x00U{\xf8u\xde<\x5c\
+\xec\x11\xb7\x06\xdf\x97Z\xd5\xd4\xf0tT\xca\xeb\x88o\
+\x897Q\xd3\xf78\xbe`,\xc2\xdcf]\xc3\xfc\xeb\
+jI\x22\xfe\xbd\xbfTV^/\x19\xc6g\xc6\xf4\x83\
+\x83\xad\x95\xf0d\x8b \x22\x8a\xebV$z\xf2\x83\xe1\
+\x84V\x13\xcc\xa6\xeddu\xdd\x0f\x09\xfe\xb7\xcd8\xf9\
+\xbc?'-\x10\xb4\x88\x18\xa0\xa4U\x0a\xad\x87:\xee\
+\xf0\xf6\xf4=\xd3#|\xae\xce\xf6\xd7\x17\xbb\xcec\xd1\
+\x9eh\xa4\xaa$\x883\xbf\x95\x95\xef\x9f++\xfb\xf1\
+PYSy\xed\xbe_\xec{\x8dj\xd5\xfd\xad\x98(\
+F\x87\xcbZOD\x04\x1aT\x96\x5ci\x08\xb1\x9e{\
+=\xff\x18\xf1\x97/Y,\x86\xca\xddQ\x16_qb\
+\x17c\xac@\xb6\xd9p\x04:\x1c\xa08\x0e\x02~*\
+R,\x00*RPT|\xa3B\x0d\x9e\x04\x89\xc0\xdb\
+\x81W\xb7\x99\xaci%\x84\x08\x8c\xc7mM_a\xf5\
+K\x8b\xa3E\xaf\x9e)z1\x16\x04\x04^j\x8eY\
+\xedt\xdcK\xbad\x1d\x08\xd5\x0e\xea\xd7\xd4\xae\xd6&\
+z\x22\x07\xf8\x1f\xad\x872\xd4\x1e\xe5v_\x96\x00\x05\
+\x90p\x85\x89\xaf\xf7A\xb8d\x9a\xab*q\x96\x0bS\
+`K\x22\xc4F\x01\x89\xbb\xa9\x86\x90C\xe0}\xa9\xa9\
+W\xb7\xa6@\x98\xfb\xc5\xc1G\xe2D\xa2\x04r=\xd2\
+\x8c\x08\xc0\x80u\xf2\xc4\x91\x0a\xf68\x91\x22\x00\xa4B\
+\xd2\x8d(\xc2\x8bE\xa5y\xc1\x0a\xecH\x5c\x0b\x87\x1b\
+\xe2\x198\xde%*yq@T_\x9d\x98\x18$\x92\
+\x00_\x888\x01,\xd1\xf3\xcfu\xdchG\xcf:d\
+\x9d\x92\xf8\x8e\xe7cC\x85b\xbd\xb3/<\xee\xac\xfc\
+\xdf\x00\x04p\x00\xb0\xbfx>P+u\xc0\x9e\x9bZ\
+Apd$\xb4T\xc4\xc6\xe3\xce\xa8\xb8s\xffY\x87\
+<\xa7\xcd-\x8e\xf81\x07\xb4\xde\x9f\xa1N\xcc\x81\x04\
+0\xc1z\x1aU0\x03\xe0!\xd1\xe79\x8d\xc5\x02\x9f\
+\xe0\xe7\xb9\xb2\x13S\x00\xb5\xbbL1w\x80=\xbdm\
+\x10\x05\x9b.7]v\xbal\x13A\x81z\xa9\xf0H\
+\x01R \xfd\xaeh\x05`C\xe2\xc3>\x01\xe8a\xff\
+zJBP\x89Y\xaf$\xee\x5c\x1f\xfe\x88}\xc0\xf5\
+6\x06\xc4p?y\xee\xdco\x98\x040;xN\xdc\
+O\xfe\x0e\xd7O\x00\xcc\xfb\xe3Oy\x9e\xf8\x0b\xd6\xc9\
+HD)\xd6\x0d\x9f\x87\xf7g\x1d\xb3\xdf\xd8g/w\
+\xa5\x8c\xfd\xc2\xb4\x03Zc`\x86,lf\x8e+\xa4\
+A\xe9C\xfc\xebR\xf7\xbcy\x8c\xe4daY\xabd\
+\xd5\xb1<\xbb%J#L\x0d\xfb\x91\x10\x11\xa2\xc2\x87\
+\xca\xf1\x9c\xaf\xef\x22\x1f\x8c\xa7[|\x91\xfb@\xc0\xc6\
+\xd4\x0c\x8b\x98\xc5}c?\x93P\xb2?\xc6\x95~\x98\
+\x09\xack\x02\x14\x80h\xee\x17\xfe\x87\xbfC\xeb\x0c-\
+\x00\xbc/\x80\x0b\x09\xd8u\x03U4\xfc\x03\xbd\x94\xf4\
+\x8aR9\xe39]o\xffB@\xf9\x90\x01\x85\xe5\xfd\
+\xb9\x10\x1d\xda\xd8\xf7\x03\x95y\xab\xdd\x878\x1b~\x9a\
+J\x01\xfb\x97}\x89_\xa2\x82c5{\x12ST\x8e\
+\x11\xb9\x0d1E\x12_Z?\x00\xc29\x9f\x01\xea\x01\
+\x0e\x10\x85\xa30p\xb9,\x9d\x03|\x0e\x0a\x17$\xf4\
+VS\x0e`wEY\x13mD$\x13\x8a6\xcc\x82\
+h\xdd\x03\xf8\xb1_\x9a\xbeH\x96\xce\x033\x16\xbb\x03\
+d\xe5\xf5PYK\xdc\xe8I&\xd1\xed\xef\x9651\
+\xc3\xe8\x19\xc6\xdfyL\xefc\xc6\x1e\x8e\xa7Opn\
+\xf8\xdfc\xff9~\x08\xca\xbe\x03\xfe\xc9\xdbdi]\
+\xf2\xf7\xf0s\xac+\xd6\x05b\x9c\x9c\xcf\x9c\x8f\xec\x13\
+\x8b\xce\xc5zu \x1c-\x01NX\xe7>\x22K\x89\
+\x1e\xad<\x88\xb4\xa11\x010A\xaf\xbc\xa9\xe9\xb4\x8c\
+\xa1!\x10\x00!\x091\x00\x15@-\xeb\x14\xaa\xb0[\
+\x89\xa6\xff\x18\xa6\x1d\x94\xf7\x1cT\xcf\xdd;\x1c\xa2\x87\
+\xecG\x0a\x1b\xc7{\xbc\x9f\xcf\xcd\xe8\x09\xbf\xc8b\x89\
+\xd7{\xcc\x1d\xe7\xb9\x0b+q\xae\xe2\x9fH\x88\xa9\xfc\
+\xb2\xdf-:X\xaey\x00\x0c\xdc\xeb\x1d\xad\x04L\x8f\
+BL\x89\xa9<\xcf\xb0\xfa\xff'\x07\xed\xa6\x10\xfd\xb3\
+\xbfd\x1dwGwGuG'\xc6\x81\xcf1\x12\xf8\
+\x99=\x8a\xed^\x13\xff#\x94\xf8w\x8b\xc9Rk/\
+\xad#\xbe?\xddU\xb2\xd6\xcb\x8c\xe8e0-\x98\x02\
+CK\xd1\xcf\x8a\xa9b\xfbCY\xd2\xb8P|\xf8\xbb\
+\x16g\x06p\xa9\xde\xe8\xafy\xbf\x1e\xe8D\xea4\x8b\
+\x04\x9e\x94\x00\x01\xa5y\xe7\xa4\x84\xc8\x0c\x9fH\x00\x89\
+\x97\x5c\x01\x9d\xee-\xf3}=\xb3i0\x04#\xc4\x0c\
+\xda\xee4Yc\xba\xf4K\xcb\x1a%<D\xb7\x19c\
+\x0e\xc3j\xedy/\xa8\xeb\xdfS\x22*\xe3m3'\
+\xee\xf2O\x9f\xaa\xd6\x18\x85j\xf1}k\x8a\x03\xb6\xad\
+\x1c\xc5\xf6\xe5\x02aLs2#\x88\xb1\xec\xe1\x8f\x10\
+\xb3\xa4\xf0\x07\xc0\xc5}\xa0\xc7\xdc\x8c\x8c\xd0:\x81\x91\
+j\x7f\x5c\x12\xea\xd3kB\x0d\x83\x86\xf5\x8c_\x86!\
+\xa0\xf2\xedn\x1e\xdbX\xeeg\x7f\x9d\xaci\x08\x01\xd0\
+u\xaf\x92\xa5|\xc5\x1a5\x008!*\xcf\xf8I\x17\
+\x86\xe6\xfe$+\xff\xbec\xb1\x1d\x5c\x01\xdf'\x15\xb8\
+\xce\x1c\x9e_L7q\xc2\xdc_)KL\x00k\x96\
+\xd5\xa8v\xddv\x1e#zW\xb3\xcc\xf7\xa5\xf1\x98\x1e\
+K\x1d\xfb\x93q\xc2h\x92\x00\xac\x90\xf8\x9b9\x11\xfe\
+\x96}\x8fX\xa2\x01\x838w)dH\x8b\xe2\xd8\x9a\
+O/\xa91\xe3\xa1\xa5\xe0V\xab\xe9\x93d\xe9\xdc\x87\
+A\xf7cY\x02\xeeiy\xf3~*\xff:\x00\xd5\xc4\
+\x03f\xb2\x85\x98\xaa\x81\xb0\x88W\x88O\xc6\xcca\x98\
+\xf0\xbe\xdf\xb3\x8f\xfe\xbaXIh\xba\xede\x8d\xe2L\
+O\xdb\xdc\xb1\xb2\xd6\xa3\xdf\x9d/k\xf3\x1ek\x05\xed\
+5>\x08\x1fN\x95\x15\x16*\x1f\x84J\x13\x1fh\x89\
+\xd1<c\x025\x02]\x90Zz\xe9\xa0\x06s\x03H\
+\xa4\xa8T\x8dE\xd5\x9c\x80\x86X\x10\xbd\x81\xfc]~\
+\x9e^{*2\xae,Ee\x98\xca\xf1\xb1\x83hX\
+\x8c\xb1\xd9S\x96\xd4\xad\xa1\xf8\xb1\xa1AJ\xa1D*\
+A\xda\xdb\x01\xee\xae\x89\xba\x81\xba\xb7(^\x8b9\xd0\
+\x5c\xe8q\xe6\xc9\xf3\xb9U\x1f|\x89\x11\xc1C\xbdp\
+\xf7\xac\x88S\x1d\xc3\xd5m'K\x0c\x87<\xf6p\x15\
+#?\xbb\xa4\x8a\x02\xbd\x7f\x9arphzn$\x0c\
+\x04\x06 \xba8\x1c\xf7\xb0\x84*\xac\x91\xac\xaa\xca\xbe\
+\x8d[&^\x93\x02\x07\x9e\xff\xa8W=\x12)\x1c\xe5\
+\xb8W\x9d@\x9a\xfb\xc0I9\x06\x00\xf8\xef\xac\xab\xf1\
+\xf8\xac\xb1\xb8\x1c\xd7G@\x84\xb6\x03st9`\x8c\
+\xb0174*E\x04\xa2TRI\xc0\x09\xb8@2\
+\xa16\xd3\x1bH\x22\x82\x9a\xf3X\xf4\x8c\xdf'\x01d\
+?\x08\xe1\xd4\xcf\xdd2\x04\x06\xf1\x5c\xc7j\xe2\xfc>\
+\xf7m\xac\xa6\xcf}\xa3\x92D\x22D\xc5\x13\xd18\xa8\
+\xf9\xf44\xaf\xe0\x04\x07`\x8f\xdbiq\xcd\xa0\x1c\x7f\
+\xc5\x07'b'h&p\xfd\x5c\x0f\x01\xae\x01\xc0\xa8\
+\x84\x12\x10\xf3\xfc\x96\xf1\xf5\xade\xad\x12\x8f%+\xe1\
+\xfdJ\xd3\x95\xd2x\xcac\x5c\x99\xa4\x07\x8aD\x8e\x0a\
+\x0e\xd4rz\xabLm\x8f^P\x12w\x9e\x07\x0c\x00\
+>/\x81\x19\x013=\xe8\xf8\x11\xee?\xeb4(\xfd\
+^\xef\xfc\x1d\xfe\x1d\x80\x81D\x89\x03\x01\xa4\x9b\xdf\xc7\
+/\xf2\xb9\xa8\xa4\xd3\xeb\x0e\xe3\x09\xc0\x8d\xbf\xc3\xfd\x04\
+\x00\x18\x8dQ\x8a}\xc1+\xfb\x06\x00\x82\xf77\x13\xa4\
+\x1c{\x15\x80\x8a\x04\xce\xbd\xb1\xe5\x9a\x06\x91\xb5]\xdc\
+\x0a\xc3sc\x1a\x0a\x07.\xfbd93%\x18s\x89\
+_h\x0c\x88\x01\x80\xe1z\x08\xd8\x01*\x18\xafJ@\
+\xf46k\xb3\x1c\xe6J\x0c\xd4Q\x03\xba!\x8a\xc9\xb8\
+J*%\xecK\xa8v\x16\x8f\x0cm\x0a\xe6|CQ\
+\xe6\x00e\xdf\x03P\xb1n\xf0sc\x15k>\xf7\xa2\
+1\xb5`X\xcf\x00\x06\xf89\xfc.\xc0\x10=\xcfh\
+\xd5x\xdf\x86\xfa\xbd\xc7\x9c\x95$}h\x89\x000?\
+\xcf\x89\xcf\xf9N\xbc>`\x0a(\xe7\xa5\xdfWu\x12\
+UJ&\x9f\xb7\x96\x07\x00\x07\xfe\x9e\xdee\xc6\x832\
+\xd6\xd2T\xd7\x002\x18\xe3\xe9}\x8b\x98]P\x86\x11\
+cb\xbe;\xcc\x08\xc4\xfb\x08HG\x94w4P\x04\
+\xdb\xd5\xca&\xd4U*Y\xc7\xc8Z\xc55\x00=\x80\
+\x8cQ\x5c\x11\xad\x83\x8c\x89b\x5c!\xfe\x12\xe0\x8fq\
+p\xbe\xefq\xbd0\x9dD\xb5U\xef\xff\x1a\xb2tn\
+\xd1\x13\xecD\xbf\xbfJV^\xb7\x905M\x99\x98z\
+\x80\xa6\x10\xeb\x08\x7f\xc3\xe7\x1e\xabF\xab\xc2\xb9[\xaa\
+,\xf3<\xd9o\xec\x1fZ/\xcdp\x88\xfd@A\x82\
+\xf1Z\xf8+\xfc\x0a\x09;\xdaM<7\xb7D\xc4\xb4\
+\x15\x12\x06\xfc\xb4\xe3\xb1\x18\xb7\xe7\x82Q\xfc}\x98I\
+\x88\x95\x19\x10B\x8b\x22\x12\x04\xf7b\xc7\xbe\x008\xc0\
+?\xf1\x9ch\x8d\x81\x89D/2\xaa\xdb\x1e\xbbI\xbc\
+\x17S\x1c8\x9f\xcc `\xaa@$\xe8\xbe\xdf\xccK\
+\x9f|\xc1cn\x01F\xc7\x0c5\xf6\xb7\xd7[\xec\x07\
+\x00\x01\xd6\xd3[\xfc\x9c\xd1\x0a\xc0\xbfp?\xcf1c\
+\xf4\x8ffX@\xa5~T\xd6\xe2#\xee\x1f\xa2\x87\xdd\
+\xd9\xb2\x94hY\xcb\x09?5\xb3L\xb1\xe2g\xba_\
+\xc9\xaa\x98\xf7&3\x9b\xd4\x84}\x10I\xb4\xd6\x06\x9a\
+\x08\xb5\x15\xf4\x81\xf2\xf3O\x90\xb5\xb8\x16\x06\x06-~\
+hb\x88\xff'\x06`\xbd\xaaO\xa4\xfb\x01\x10rc\
+-}\x04E\x9d\xefk\x1c\xbc\x97\x0b\x14\xe7%\xca\xb3\
+[iP\xcd\xaf\xa7\xe5\x92\xe9|$\x1e\x22\xe1D\xf3\
+\x83u!\xaf\xbat\x02\x86Hh\xedG\xbb\x13\x8a\x9d\
+X\xee\xc3f\xb2\xb2/\xd7\x96\x95\xe3\xf02Y\x8b\x9f\
+\xa7\x1f\x93\xa5\xc4\x9f\xb8\x978\x81s\xdb\x09\xfd\xf4\xa9\
+\xb2\x14\x0f\xc0\x5c#\x1ed\xea\x97\x19\x190\xa5\x19\x1f\
+\x18\x0c+~\x0f?\x0e\xd0OK\x17\xe2\xe7\xfb\xc9\xd2\
+\xfd\xe0\xfc\xe0|\xa0\xc2\xcf}\xc2/\x00\xc4\x22&\x8b\
+\x06\x09\xfb\xc6\xd7[\x13\xd4\xf2w\xfb\xd5ei\xdc&\
+\x9a1\x06z\xa2\x10\x8bX\xb8V\xfd\xb6i\x1a\x8c\xfd\
+F\xb7\x94\xac\xbc>$k\xf1J\xbf\x81\xac\x8d'\x0d\
+\xffI\x85\x9a\x160\x18\x17\x00H\x1eW\x08\xd3-\x0a\
+\x97\xf8\x15\xb7\xd6\xd4\xb1\xcf\x1b\xb5\xc26\xe3H\xa3\x10\
+\x06p\x04\xe3\x89\x028\xad\x89\xc4\x91\xb4\x80\xd3\x9a@\
+\xab\xce\xbe\x1e'\xce4\x04\xc6'\xc3\xe4\xa5\xa5\x8eq\
+\xd9\xc4ULm\x82!G\xdeB~J+\x18q\x02\
+\x85\x1e\xfc\x1e\xf1\x1b\xe3\x1f\x01\xea)\xe0\x11Ws\x9e\
+3\xf6\x94\x021\xd3x\x9cW\xcf\xce?\xb5Xy\xa0\
+3\x8b\x16+\x09\xc3\xcce\xb2\xf2>+\xc9R\xe5\xff\
+\x9b2\xab\x07~\xb6\xfc\xdc\xf5\xb2\xd6sT\x1d\xe0Z\
+I$\xea\xc9\xeeyg\xfe)\x07\x16\xa2M\x04x\xfe\
+\xe0\xa11\xb0\xa7\x91+\x90f\xabP\x87\x18\x10\x89\xeb\
+X4\x0b\xe4\x1fut6 \x01$\x158\x0el\x0e\
+\x9a\xb1\x88\x10\x15}!\xb0+\xbb\x02{IB\xa4\xa1\
+\xfap\x1d\xa6D\x065R\x14\x97-S/\xa1\x1fH\
+\xa58\xfe\xd5\x1b\xfe\x8c\xa4\xaa\xcf\xf5,\x5ckg-\
+\x10\xc7\xa1\xfa\xfe\x90p\xd7\x80\xe4\xd6\x14x\x91\x00\x80\
+\xac\xb3\x90Pw\xa6W^\x01\xf7\xf2\xfe\xf9\xb5S%\
+\x87\xb9\xf4$V\x8c\xcb\x03\x81\x84*\xcd\x81E\xe2\x8c\
+\xaa\xb0\x91\xcc\xe8\x01\xd3v\xd9#\xddg^qD$\
+\xda$\xfe<\x07\x1c\x16\xaf\xe3J>\xcfo\x5c\xd1'\
+\x80\xe1se\xe6\xc4\x92\xe9\xfbq\xef3\x81:\x89\x11\
+\xeb\x80\xcf\x09\xb5\x90\x8a\x1f\xad\x1d\xff\x17P\xc1+\xeb\
+\x8d\xf7\xf1}\xc4\xe1\x86F\x06\x22W\x88\xfb\x8c\x81\x1e\
+\x02;\xee\x07\xef\xc7\x86'P'\xf1Xo\xa4F?\
+\xbe\xff\x5c/T#\xc6\xe8\x100\x93\xf0\x13(\xdd\xe7\
+\x80\x87\xbf\xc7A\xe8\xb9\xf1\x91\xd0\x22\xcaG\x82\xc4\xe7\
+\x80\x027R\xef\x8d\xe7\xc8\xf5>d\xc6\x02\xda\x0c\xac\
+;\x12C\xc6\x16\x02\xcc@\xf5E\xfc\x09\x91\xab\xed<\
+'\x9b\x03\xe8\xbf\x86@Y\xfc\x8d\xca\xe0\xf8\x9c)a\
+\xb4\xc6\xe0(\x11g#Q\xe4\xa0\xc1\x8f\x90\xa2\x1fk\
+8\x00\x00 \x00IDAT\xc0\x93\xe8\xb1\x1e\xe9E\
+\x1fk+\xb0\x1ey~\xe3\x0a1\xeb\x82\xfbJ\xef\x1f\
+\x013=\xde\x00\x92\x1c\xec\x8c\xabd\xdfp P\x09\
+\xe6~\xe1\xa7\x1a\xb3c\x00\xb8\x1e\x1e\x89`\x128\xf1\
+9Y\x1f\xb4\xe2\xd0kJ\xa0\xb1\x8e\xd7\x19\xbd\xd3\xa8\
+b\x1b@\x8a\x04\x87\xfd\x8d\x0a8\xd7?\x06\xaa\xf0\x9f\
+\x00\x0d<g\xe6j\x83T\x83\xb0\xaf\xe4\xf5~\xb1\xb5\
+9\x98\x02\x82&\x0b\x955\x0eP\x12\x1f\x18\x1bh\x98\
+\xb87\x1b\x86\xc1t{Y\x12\x932p\x15\x09)\x9a\
+1\x04\xa2\x00+\x5c\x07\xfb\x82\xfb\xcaAL \x07`\
+\xcd\x1cfz\xd8\xd9\x97\xb4P\xb0\x7f`\x84@u\xc7\
+\x0f\xd1R\xe1\xca`$\xaaW91\xbeo\xc1V\x9a\
+\xe99\xb2\x06\x5c\x07S\x82D\x93}\xd6\x12\x90\x81\xb9\
+\x04\xe3\x85\xf7\xe1\x1c\xe1\xf9 \xd2G\x85\x89s\x131\
+U\x18n\x9c\x93\xac{\x12#ZtX\xff\xf85Z\
+\xc9\xa8\xf4\xd2B\x07\x90N\x02\xc6y\xe9\xebAC\x22\
+\xe65sN9\x11\x0e\xff\x0e\x85\x98\xbf3\xbe\xff\xec\
+C\xee\x0b\xfb\x88\x0a\xcd*\xb2\x16\x18\xd7\xe99\x9fL\
+\x22\xa4N\x1c\xea\xf8\xae\xe5\x1bP\x83\x1fa\xee\xf3\xf4\
+m\xb24\x8d\x82B\xc0\x98\xcaN\xc0\x08S\x82\x84\x1b\
+*9\x00\xa0E\xecHd'7\xcb\xd2}C\xe4\x19\
+\xe6\x1a\xbd\xa6\x00\xf9\xd66\x89\xeb\x81\x1aLB\xc3\xf9\
+\x83\xdf\xc3\xdf\xf0\x5c\x89\xdf\x10\x85\xc5\x0fR\x98\xa1\x10\
+\xe3\x04\x92\xf5\x1d-\x09\x00+\x8c}\xb4\x9f\x88\x1ey\
+\xde\x0f\x7f\x8d\x7f\x01\x88E\xec\x8f\xa9F\xd6.\x08\xea\
+\xfa\xaa\xb2t=L;\x00\x88\x07\xc8\xa65\x07\x0d\x00\
+\x80Fzn\xff\xe9\xc2\x12\xf7\x83\xfd\x82?\xa4E\x81\
+V9D|\x8f\x1a\xe2\xc2\x18+\x0c\x00\xb4\x9f5t\
+~5\xbc\x1f-+1\x86\xfa5\xc3\xb9\xa5N\xfdZ\
+\x99\xdfX\xd64\x85\xba?\xc8\xdcZ\xb8m\x03,\xab\
+\xaa\xff6\xad\x05W\x1d\xfd\xb5\xa7\x7f\x93n\xa3n\xa3\
+:\xce\xf5\x16\xcdQ\xd7PW\x8duE\xfc;\x18\x07\
+\x16\x81\xed\xd6\x97%m\x04\x8b[\xa2\x89\x10\xads\xc7\
+\x17\xfbf\xd2\xe4`\x0a\x16\xeb\x18\x7f\x06c\xc7\x0c\x1f\
+\xfen\x8cw40\xc3X\xed\xda:\xf2\xe14}\x84\
+s\x95\xf8\x08\xff\xeas\xabV\x98?\xeas\x5c\xd7q\
+\xb0\xac\xfc\xf3\x13\x8b=\xa9\xb5\x0a\x86F\xd0\xce\xd5\x04\
+\x0c\xbe\xafj&<0\xf4\xfeGB\xcc\xf93\x1e\xd3\
+\xf8\xe5\xda\xd5/\x0d\x9c:\xbd\x22\xfe\x1e\x00\xa5\x81\xb4\
+\xfe\xcd\xb2VAf=LW/\xb6F\x9a\xa6\xa4\x82\
+\xe1\xef\x1fG\x9b\x89x\x94\x82\x05\x22n|\x0e\xfc8\
+\xad\x87;xJ\x11T\xf0S=\x06\x8f\xf3\x871\x80\
+n5\x08\xe0uT\x11\x0e&\x96{\xfc5Dy\x9a\
+\xc5\x85\x9dh\xcf](3\xe0\xb3\x89\xfd\xf5\xde\xed|\
+\x008\x98\xbdGV^\xbf++\xeb\xaa\x97\xa5B\xab\
+\xc5>\xab\xc6\xc2Z\x09`g\xdc\xeb\x81\xb2\xd6z\x05\
+\xf3\x86\xeb\x83i\xd1\xef\x22K\x0c2\x18A\x16o\x9c\
+\xbbCf\x06\xfbif\xee\x1e\xee\xeb\x5c,Q\xf2i\
+I\xf3\xef\xc5t\x07?\x87\xe9b\xc3\xcfG^@\xbc\
+?\x9eN\xc5\x98\xdco\xc8\x92x\xac\xfdo\x9cS\xf6\
+\x8f\xd3\x13d\xedza\x04L\xcc\xfc\x8dx\xcdL\xaf\
+\x88\x7f\x01\xd2\x01\x1eX\xaf\xc4\xddL\x7f\x22OF\x0b\
+\xcd\xf9\xc8lE\xc2\xbf\x9e\x90k\xf5\xc0\xbc89\xd6\
+%e\xcd\x91\xd2\xfb1\xb3g\xb1\xb2Agn)V\
+\x1cIw_\xb1\xfb\x9bXZ%\xd2/\x9bT1\xdd\
+\xfb\x15\x89>\xbd\x8a\xdc8\xa83W\x0f\x88\xed\xbc\x0d\
+\x5c\xc1\xe6\x82M\xa5\x88\x0a\xff\x98*\xef\x85\x1ebb\
+\xf4\xf6\x8d{[Ix\xf8}\x02LzJ\xf9\x9e\xf7\
+\x01\x89'!u\xafWl\xc4'\x06\xd2=$\x08\x0a\
+g\x97M\xa2a\xf4<\x92x0\xeeD\xe1,j\xe1\
+K\xa4\xcfCb\x85\xca\xae\x10\xb9\xf2}\xbfc\xb1\x1d\
+\xda\xbc\xd2\xda\x83wd\x9b\xa20\xf9\x85\x06x\xa5V\
+\x03*\xbd8\x124\x0c@\x16\x1dXD\xcf\xb6)\x8e\
+\x0bP\xb3N\xf7s\xd9(!\xd8$r\xcc\xd3\xa4\x17\
+\x90\xf1\x1d\x04v<\x97\x11\x12\x19bb\xfc\x1c\x09\xc2\
+\xb8b:\x9e\x8f=\xae\xe4?2\x9a\x1bO%\x1f\x07\
+\xcaA1\x06\x02\x08d\xc6\x89\x0f\x81=\xeb\x04*\x0d\
+\x8e\x93^R\x1c-\x09\x18\x89 \x01\x0f\xe2i[\x99\
+\x02\xcd\xba\xe1\xefB\xc5\xe49\x93@\xf0\xef ~c\
+\xc6\x0c\x81\x10\x0c\x04>7\x81\x0c\x89,\x89\x1b\x9f\x87\
+\xbfO\xa0\xed\xae\xaf\x18\xb3H\xcf8\x011_\xecK\
+\xeeo\xa3\xee/0\xfd!\xc4\xbbx\x7f3B\xa8\xb4\
+\xc5\xf3\x07Ph=\xff\xc3~\x03p3\xc50z\xa8\
+\x19\xff\x08\xe0aF\x0b\x22>Q\x01\xbec\xd4B@\
+`m\xb1\xc1\x98_O\x02\x0a\xf3\x82\x96\x06T\xe0\xb9\
+\xbf\xe3\xb1m\xdcG\xee\x0f\xc0\x13\x9f\x8b\xe7\xc4\xf3\xe0\
+`f\xbc\x1c\x0c\x19\x0e\x0a\xff\x5c\x8c\xb5b}p\x9f\
+\xa8\x00\xf3\xbc\xa0\x9e\x81<\x938\x8f)\xfb$\x06\x00\
+8\xcb:`&\x01\x02\x00`\xdfp\x1d\x0d\xc8\x19\xf6\
+\x17\x81\x1b\x95\x1c\x10\xf3\xd6\x0a2\x04\x1c\xee\xd1}\x8c\
+_\xe5:\xf9\x9e\x7f\x87\x92\xees!\x9e\x07\xfb\x9e\xfb\
+\x0c\xe00\xee\x89F\xd4\xcc\x81VP\x9d\x09\xa8\xe9\xa9\
+\xb6\x0at0Z,\xca\xc3\xbc_\x0e\xd4P\xe1\xdd\xd8\
+\xfbgm\x8bSmj\xa0\xc0\x14\xf2x\xae$\xb60\
+\x97H\x98\x00t\xf0\x17\x8cC\xf4\x98L\x11Ek\xc5\
+\x1b\xcd\x15z\xf7\x11M\xe4\xf7x\x9e\xec7\x00\x07\xee\
+\x8f\xf7qhm\xbc\xcf\x81\xab\xf7C\x09\xa7\x07\x06\x06\
+\x15#\xfe\xfe\x19\xf6\xe3$\xb8\x1b\x9a\x91\xf1T\x03\x9d\
+0\x0dXo\xacC>\x0f\xda\x02$6n\x19\x8b\x7f\
+g\xda\x0d\xbd\xc7T\xaa\x01\x1cHp\x01\x0a`:\x00\
+\x8c\xd2\xd2A\xa5\x84s\x97@\xd6\x89s\x14\x12\xf0\x7f\
+P`9\xafI\x5cal\x90P\x03tS\xc9\xbfH\
+\x96\x12\x13S\xc4c\x1e4\x011\x80:\xeb\xd0\xc0\x05\
+\xe3\x80\x03\xc8\xe0y\xf1y\x0d\x00\xe0\xe7\xa7/\x915\
+q\xc0\x18G\x05\x05\xd5\xad\x09\xe17\x10\xf7Cc\x89\
+\xb9\xe3h\xc2\xd0\xb2\x00\xd04\xae\xfc\xd0\xda\xf8)Y\
+\xab\x80\x93\x00\x03\x80\x01\x9c\x02l0E%\x0a=\x04\
+\xb2\x04\x9e$\x08\xf8\x0b\xa8\xaa\xac\x17*\xa3\xde\xef!\
+\x8e\xfb\xa5!a\xa2\xd7\x9e\xb8\x12*5\x158\xa8\xf0\
+\x01\xb4\xa3\x11E\xcb(\xe2j\x00\xf4\xf8W\x8f\x8bF\
+|\x0c\xd1<\xfcW<W\xc6\xc0\xa2\x9d0V\xe9\xc7\
+o\xd0\x92\x82\xff\xbf`\xf8<%\x1c\x1f\x98ln\xb9\
+\xa0\xe5\x83\x0a'\x14\xee\xd0\xba8`\x98\x96\x15\x94y\
+W\x90IX\x00\xb4'o\x91\xd5\xcf\x7fS\xfd\xfcn\
+)\x89D\x1d\x11@?\xc7\xee\x11Yy\xbd\xb6\xd85\
+f\xb2\x94\xf8\xab\xfb\x8d\xac\xbc>(K\xef\xf3\xe8d\
+\xfed~\x15I\xac\x89{\xb7\x87,i,H\xfcz\
+\xe94.\x11\x06\x82\xa9\xd7\x00\x121.\x13\x86\x8e\x00\
+\xea5\x0d|\xbc\xd9\xfb\xfd\x07\xe9y\xab\xb0\xb1Jj\
+eT<|~\xeb\xd5G\x15>\xa62\x00\xbc\x11w\
+X\xe4n\xba\x93\xac\x01>16\x8d\x9f\xa3\x90\x02\x00\
+$\xa6\xe1;\xd2t\x14E\xeb;\x18H8\xc5\xf1\xc6\
+\xfdI\x9b\xe6\x8dn\xfd;\xd1=\xf0\xb7;\xde\xbbt\
+\xfa\x87\xaa\x8d\x05C\xc4\xfb\xa0\xf6\xa6\x9f\x91\x98Y\xd6\
+\x0e`\xddN/\x94%\xbf\x0a0,i\xb9/\xa6\x96\
+\x86\xb7\xca\x1c?-\xd3Z\xdf\x1e\xd3\xdaI\x8f\xba*\
+\xdd\x17<\x8ef\xd2X\xdb\x07\x91E\x8bf\x060o\
+\x7f\x15\x00\x0d-\xc8h\xdc\xd0\xba5\x9a\xc6\x15-\x05\
+\xb9p0i\x05\xdd\xb9[\x8a\xdd\xdc\xc4\x0ek~W\
+\xce\xa7n-Y\xdb\xdf\xfd\xb7e\xc9\x8f\x00\xd4\x13\xef\
+3u\x87<\xd0\x9aY\x93\xc5\x5c\xa8B\x84\xdb\xd3\xdf\
+\xba\x8f\xcb\xca\xdf]\xb2X*\xc0\xc54\x063\x0bb\
+\x8a\x89\x01\x89\xca\x18\xdb%\x15R)\xd0\xaa\xe2\x7fS\
+\x8a\x97}\xdeGO\xff\x1a\xd3gU\xe0\xe6\x8ar\xba\
+_\x91Z\x04\xacM\x13\xfbG-1?k\x00\x02\xe7\
+P\xb4,\xecR\xad\x9d\x1b\xf8\xefq\x81\x01\xa6\xc4\xe9\
+\xb2\xf2\xfb\xf5+\x01f\xdeg\x01l\xb9\x95\x89s\x8e\
+\xe9\x13\xe4\xab\xd3\x0de\x8d\xa9\x85\x08\xeb\xec\xccJ\xb2\
+\xe4\xd0\x8d\xf00O\xb4;XV^_+s<T\
+\x16\xc0\xcci\xc5\xa4\x05\xf0sY\xaa\xd0\x1b)\x9a\x1e\
+\xee\x1e\x09z\xa1\xcew\x8f \x08\x05\x0f\x9e\x8a5\x88\
+*\x09+=\xfeT\x0a\xa9ts\xd0\x83\x00B\xed$\
+@\xe5\x80\x22p\x22A#\xe0\x1c\x8f\x09\x04q\xe2}\
+\xd9`cuu\x02(\x0e\x22(\x18\xc8h\x10(s\
+}\x88\xc4Y\xdc(\x1c\x06\x81\x967P\x0d\xd8\xd7O\
+\x95S\xfe\xdd\x0e\xa4\xf6\x14n\xda\x00\x8a\xee\xa5\xc5^\
+\xd6\x02\x9f\xda3wS\x0a\x0cH\x80\xa0\x12\x13\xe8P\
+\xd1\xca\x81\xde2\x0e\xd8WN\x01D\xa6\x1c?\x94*\
+\xccT\x9c\x99\xc7\x89\xa3\x80\x1a5\xa6^\x8e\x02\xf9\x10\
+\xf7\x03\x89\xe29\xf1:\xaa\x80\xc6\xf3#\xc0\xe0\xdf\x09\
+\xc8\xd98\xe3qq\xfcw\x12\x19\xfe\x1e@\xc0\xf8\xfd\
+\xc6\x22\x82\xfc\x1d\xee\x03\xdf\xa3\x0aM\x22A\x80\xcd\xdf\
+\x81\xe1\xc2\xbaF\xed\x7f5'6P\xca\xa8\x88h\xbc\
+\xe2bI\x14\x8a\x84\x92J3\xf7\x93\xe7\xc7\xba\xe2\xf3\
+\x93(R\xb1E\xdc\x90}\x82\x86\x03\xeb\x9f\x04\x96\xfb\
+J`\xc7\xc1A\x22\xcb\xfd\x18\x8f\x8b\xe3k4m \
+*\xac$d\xa8'\xbb'\xb1\xa4A\xc3\x81\x88\x98 \
+\x0e\xee\xfeQ\xe0J\x82\xf1\xde!\xb1\x99\xf7V\x8b\xca\
+\x9da\xca\xb6\x11\xe2\x18G\xf3=Y\xedE\xad\xf3r\
+c\xae\xea\xc6\xb2\xea\x97\xea|\xe4\x10\xbd\xa2\xb2\xee\x9e\
+\xe0\x00ZH\xa8\xf1\x1fm\x9c\xda\xe0/\xd8G<g\
+\x02u*U\x88-\xa2\x02\xce\x9cr\x9e\x13\xc89\x15\
+=(\xa0\xb4&\x99\x92\x17\xd4l\x8f\xcf\x89u\xf4*\
+W\xae\x16s@J\x02\xc5\xd73\xfd\xdc\xf8\xfb\x00\x02\
+\xac\x1f\xe6\x9b?\xe4\xc4\xdfbz!N\xf7\xa4Q\xcb\
+\x15~\x0f\x00\xe1\x0dN\x84\x08HX/\xbc\x0f\x95\x1b\
+\x12\x96%\xfcw\xd6\x0bm\x96\xe1\xfe=#Z\x80\x86\
+\xfd\x0f\x10@K\x03\xf7\xd1\xcf%\x02w\xb4:<\xd7\
+;\xa8\x8aP\x1d9?x~\xf8\x07\xfc+\xe3\xb7\xd8\
+/\x8c\x93\x84\x22\xfa\x0f':kYD\xf3\xf3\xaeD\
+25\xe2\x8cA\xf3f\xb2\xe3\xd0{\x0f\xf5\xbc\xf6\xac\
+\x9e\xd8(\xb9\x8fa\x800\x06\xd1\xbd{\x93W\xca\xda\
+X?\x12.\xee\x8fN\x81z\x0e\xf0\x1cXg\xdcg\
+\x06\xc5X\x84-\xc4\x9a\xa8\xc4Q1G\xf5\xd9\xfb6\
+\xe6\x9d\xa3\xd9\xb1\xa5\x99\x1b\x88\x92\x92\x90ZS#\xd6\
+;\x81\x90[8\x98\x0f\x1d- \xfc;~\x89\xfd\x04\
+ \x00\xf0\x83H\x11S\x04\x0c\xcc\x87\xff$\x01g\x7f\
+\xd3\xbaA\x05\x18?\xc4T\x96o\xc9\x12\xe3\xc3\xef\x17\
+c\x81\xf9b\x9f\x8c[+\xa0\x96\xd3sk\xd1\xa7\x18\
+C\x09\xc0\xf9?\xee\x09=\xcb\x018\x01\x15S\x04`\
+\x14\x18\x90\x8a\x16E*{PlaJ8\xe0Bu\
+:\x98\x07c\x91\xc5q+\x17~\x84u=\x12\xaf\x0d\
+q:*\x90\xc4/\x004_\xb7F\x0b\x89\x16L\x0c\
+Zt8o\x00TaX\xb92\x07\x83\x84\xd6\xc6\x10\
+}\xe4\xdca\xcc$\xeb\x9e\xcf}@\xb5V\xf9f]\
+Q\x800\x155\x18\x1fL\x95q\x85;(\xbdh\x81\
+\xb8\xf5\x01\xd1D\xb4\x9b\x02\x18\xa5g\x1b\x00\x01\x00\x08\
+\xa6\x0cq\x0f\x89\x06\xfe\x1dM\x01\x12\x1e\xa8\xfc\xf8\x07\
+\x005z\xec\xcdl\x09\x7f\xc4>\xe4\xdf?oM \
+\xc4\xe5(\x08\x00\xacx=\xe1\xcf\x19G\xd7\xfd\xb8\xfb\
+Q\xf7\xe3\xa6\xa5\x13b\x81\x88\xda\xfd\xfe\xff\xd3u\xe6\
+\x81\xbeN\xd5\xff?\x9f\xe7s\x90y,S\x92y\x9e\
+\xe7\x88\x1bQ(\x15\xd2\xa0RJQ*\xc3\xb7B\xc6\
+&*S\xa2_D)\x92\xa1\x22\xc9\x18R\x91P)\
+T\x86\x0a\xa1\x14\xc9,\xf7\x9e\xe7\xf9\xad\xb5\xf7\xfb\xb5\
+\xf6>\xfbr\xd6\x1f\xcf\xfd\xdcs>\x9f\xcf\xf3\xeca\
+\xed5\xbc\xd7{\xb9\xd8u.\x939K\xd7\x83\xee\xd3\
+&6n\xdd\xf9&\xe7\x95\x84Pw|wBg\x0e\
+gw\x9f\x87\x0a\x0a\xa2\x81\xf6\xc5\xdd\xa9.U\x80\x81\
+\x80\xc0\xdf]JF\xbf;\xd0\xa5 \x03\x82\x14R\xfb\
+(\xf6\x8d\xaf\xbe\xbfU]\xa8\x08\x08\x110U\xe2/\
+\x95^\xfdT\x99\xfe\xc3\xca\xeb@\x94\xea\xfc\xe1\xf7\xc9\
+\xca}\xa0p\x8e$}{\x5c\x09\x18\xa4\x84\x97\x07T\
+\xcfs\x91\x1d\xe2\x19\xe15\x5cL}\xechb\xebk\
+\xea.\x93\xbb\xed\xffwp\xa9\xbas\xdd\xad\x00\xb1\x90\
+9\xfc\x7f\xb0\xb4+Q\x12\xc8I\xda?\xb2\x1f\xf1'\
+\xf0#(9\xfc\xa6K\xd5v\xd3\x91\x89\xd7W\x5c\x06\
+\x04~\xf1'\xb0\x83\xb0\xb7\xb0;\xd9O\x90\xdd\x92\xc0\
+\xe2\xff\xeb\xeeX\xb3\xaa\x00<\xe7\xb22\xcdQ\xeb\x0e\
+\xd2\x0c;\xc7w\xff\xba\x95\x1f\xc59\xd6\xb6A&0\
+\xc1\xf7\x93H\xd8\x22\x15\x03N\xf43\x5cJ\x0d\xfe\xd4\
+\xee.v\x9b_s\xa9\x02]\x9fp)\xed\x04i\x93\
+\x17\xed8IX\xd0\xd6\xf1\x00A\xd7\xe5\x07v\x1fw\
+\xb1\xf7o\xe4R\xbay\xa4D\xb5\x07\x04\xbf\xedb\xbf\
+\x7f\x87K\xf1[\x86\x0d]\xec\xff?\xe8R\x90\x84\xd8\
++\xc3k\x87mS\x80\x96s\xeac\xb9T{\xd8e\
+\xd8\xd5\xc9\xf8\xfag\xfbg\xfag\xaa\x80\x08]\x1c(\
+\xf1x\xd6\xa5$`\xa2\xc4\x11=sF\x92\x89\xfe{\
+.%\xa0A\xd7\x89h\xa7\x0d\x17\x1d\xfe\x04\xc8:q\
+\x8d\x11\x80\x8ev\xaa*u\x05\x11\x10\xedVu%\xa0\
+N\xe9\x1a$\xa7\xc3\xa5.f\xd6u\x8f\x9a<Rj\
+\xdb\x89\xd4$\xb5\xbe\xbd\xd8H\xcd \x1f\xff\xc2\xc46\
+\xfc\xf8\x5c\x93\xf3*\xf6Z\x22G8\x1e\x90>q\xa0\
+\x89<- UD\xce\x81\xa6\xb0\xb09\xa8\x81\xbc\xe2\
+8\xab-\xc3\xe8\x11\x97\x04\xe1\xb8xtq\xd5\xae\xf0\
+\xda\xfe\x9a\xfe\x9at\x00d\xc8\x1f\x8a\x1f\xc7\x07\x87\x03\
+\x08#\xd0T&\x86\x0c\xef\xad9\xe2\x17\x99\x05\x1cW\
+2F\x8a\xa4E\xa4\x1c\xc3\x0a\xe8e\xd3n.\x99\xd9\
+OW\x1b\x14\x87\x99\x03\x85\x83\x8b\x9a\x0c\xc6\x0f\xc3\xca\
+\xdd>\x7f\xde\xe7Mf\x8a\xfc\xe2\xc4\x0a\xfa\xe22(\
+R\xf5\xa6\xca0\xc7\xd1\xc3\x11\xc7pg#\xe3\x80s\
+\x1f\xca\x18\xc3\x12\x19\x07%\x19@\x0c9\x0c1\x02!\
+\x1c\xe8m$\xd2\xb7\xe9\x9cU\x84K\x81\x1a8\x12\x02\
+\x0a\xc8\xe7\xb5\xed\xb1P\x008\x22<\x17\x0a\x12\xc3\x86\
+\xf7\xe1\xa8\x03\x0dE\x81\xf2\xfd(,\x9e\xab!\x81\x8c\
+\xd7\xfc\x1d\xdf\x8b\xc2{\xaeq\x5c\x99g\x14iK\xd2\
+\xa6\xc0L@\xb0\x08\x80}X\x06\x82\x0cz \xef\xb1\
+\x8f\xf8\xfe\xb6\x0f<\xf7\xc9~\xe25\x81\x0e\x9e\x9b\xdf\
+\xe30\x10\x90ZC\x81\x80\x15\x14xX\x5c\x99\xdb%\
+\xb5NP4\x0b+`\xb3\x8a\x1cG\x9e\xb3%\xe7\xe3\
+\xffyM\x80\x82\xd7m\xdf\xd9y\x9b\x92\x06\x02\x0d\xcc\
+#\x0e\x84\xc8\xaeF\xef\xcc\x81\x04\xa7\xd6qr\x9d\xfe\
+\xd0\xfe\xb0\xfe0A\xe7VL\x90\xad\xb9\x13d\xeb\xef\
+\x99{\xc0_\xa5\xd7\x8a\xa0w{\xb9\xd8u\xb3\x0c\x99\
+\x0c\x83\x97\xf1A/45v\xb1\x1eA$@\x9a\xc6\
+\xf3MFW\x84\xbc\x0e8\x80q|(\x95\xd9E\xe3\
+\xf3\x06\x05.9H\xf9;\x1cU\xf6;z\x11\xc3\x87\
+\xda]\x22\xe4\xdb\xab6\x97yW\x86\xc2\x9c\xc3|\x85\
+\xc3\x03\xe4\x07\x19[\x10*d\xcc0\xd0Y/\x90\xe6\
+\xe1\x88\x13px\xb2Aj\x80\xf4\xa0\xd6\x96\xfb\x07I\
+\x81\x01D \xe5\x9fQ\x9b\x99\xd7\xcd\xaa\xd2gM\x0d\
+z8\x10K\xabkB\x838\xc0P\x0d\x83^\xfa>\
+H\xf0\xc4\xc2\x1dl\xf1\xca\xdcE\x86\x1d\x12B\xba\x13\
+\xc0\xaa\xffD\x95a\x1aW\xc8\x03\xb8ZD\x1e\x95\xcc\
+Y\xcf\xb0\x1d\xe1Re\xb8e`\x0fG\xb8T$t\
+\xd4L\x13\xd0\xc1\xc1\x13\x09h\x18\x82\x04J\x18\x0f\x95\
+VDmcY\x97\x99\x9bf=\x05\x06(\x05S\xe6\
+\xd1\xcc\xd0\x94\xe1\x8d\x1f2\xb6_LEz^S\x99\
+!\xe0\x0fd\x03:\xd65\xa5.\x94\xce\x10\xe0e\xfe\
+\xd9\xa7 d\xc8\xa4\xc9\xa1\x8b\xfd\xc3z'p\xc3y\
+@\xe6\x9c\xc0-\xe7:$p\x94((\x90\x17\x99\x0f\
+\xd6\x15\x19x\x0c`X\xd7y?\x01L\xd8\xa3aK\
+g|\xe8\x82B\xcd-\xfb\x16;\x03H?5\xe02\
+\xe8\x87s\x5c\xaa\xfb\xf8\x81J\x0c\x8e\xcam\xecf\xdb\
+Gm7\x96o%)\x06\xbd\xec\xa0h\x1b\xc9|\x13\
+\xa0\xe7\x9c\xe2\xdc\x80\xb3\x87q#\xe0\x8e\x1d\x02\x17\x0b\
+d\x5cj\x0b\x17\x8e<z\x19\xc7\x82\xf7s\x8e\x80\xc0\
+#\xa3\x09\xf7\x91j\xbf#C%\xfd1|\xc4\xa5\x82\
+\x96r~\xa2\x1f\x987\xee\x1f\x12U\x90\x1e\xecs\xf4\
+*\xeb\x93s\x02G\x85\xe7\xe6\xdc\xe2\xfd\x9c\xeb\xdc'\
+Pt\x05\xd2\xb0\xbf\xc2\x11G\x0f\xe2\x90\xc2\x82\xce\xfb\
+i\xd7\xa8y\x0a\xf2;\xa0\xc5\xeaj\x12\x01\xb6\x9b2\
+r\xc5>-w!\xd0~\xa6}e \x09\x18\x1f\xba\
+\x02\x5c9\xba\xca\x91\x98\xc1\xaa\x8e\xfd\xbb\xad\xb8\x15T\
+\xe2\x14,\xfcW\x8e\xae\x18]Q!0\xf9|9\x10\
+\xdd\x95.v\x9d\xe1b\xd7_\x9a\x98\x03\xd9m\xebR\
+e\xfa\x150\x8b\xbf_\xb0\x9b\xbfs\xbd}E\xfe\xfc\
+\xeew.v\xfd\xb1K\xe58)q\xd0=\xeeR\xd5\
+\xfeK\xffR\x22\x80\xa3\xc1\xba\xeb\xb61\xd9Z\xa4p\
+\xb7U\xdc\x14\xd4\xfeS\x1a@\xbbo\xf44\xfb\x05;\
+\x9d6\xe4\xd2\xd7\xc9.zV$\x9c\x1bW\x01s\x12\
+\x5c\xe8\x9d\x9f\xb8\x94\xf3r|\xb1\x8bJ`l\xfd\xf7\
+?u)\x1cA\xfd\x19.\xb6\x1c\xefu\xb1\xd7\xeft\
+\xa9\xfa\xa8\xaf\xae\x8c-\xe7\x01\x082\x02{$\xfc@\
+\x9e\x9c\xefR\x95H\xb5\xe7\x03\x080\xd6\x1d,\xf0\xe6\
+\xbd8W\x03\xa4\x8e\xe1\x00cg`\xa7\xa0\xefZ\x92\
+\xe4\xb6\x1d2v \xf6\xaa\xef\xaa\xb9\xab\xf3\x9b\xfd\x04\
+\xc2\x82.\x0c\x90\xb8\xaa-^:\xb5\xee\x94\xfe\xa88\
+\xa0@\xce\xc4\xb9\xc4\xfd\xf0\xb9:\x97\x87\x99\xc3,\x0f\
+\x94\xf4s\x99\xd8\xfb\xa6\x1et)%>\xec\xaf\x84\x14\
+\x7f\xaa\x04\xf0\xfb\x1b]*\x8e\x02\xf4\x02\xfa\xe6\xff\xe5\
+\x00\xe6p\xb9\xf4(\xa4\xb5 \xc8!\x0bT\xa0#!\
+Z\x16)\xebw\xd8\xde%!\xb42\xe2a\xeda\x9d\
+a\xed\x0a\x19\xf0\x97 \x0d\xcd\x81a\x10|7\x0c\xd7\
+\x0f\xd7\xa7\xf6\xa5\xa9m)\xac\xfc\xfdo]*\xc4\xe1\
+TF\xd8\xa0\xff8_\x03\x01E\xa9\x95\xda\x09\x06r\
+\xef\xa9\xcc\xc1\x13\x89J\xb8WN\x19\x9d<:\xf9\x05\
+\xdaN+A\x8e\xde\xeb/v\xa9H#\xe5\xd8G@\
+W\x89\xd9\x08\x14\xb0N87E\xd68Idr\xbc\
+\xa7\x89;\xfa\x1f11\xc3\xa0\xfb\x9c\x8b\xbd\xbe\xda\xc4\
+\x0e\x90\xf1..\xf6\xff\x0b\xb8\xd8\xf5L\x17\xb5\x0f\xdc\
+\xb3\xf4\x85\x0e\xa8\x17\xa4\x16@\xd8\xe8\xa7Hf\x98\x03\
+\x84\x0c\x16\x10K \xcd\x1c\x90\xb4e\xa1\xc6\x8d\x1a_\
+eL\xbb\x0b3\xab\xa7)\x9bd\xf0\xf4\xff\xe8\x1f\xea\
+\x1f*mq\x80\xe4D\x86\x94\x88/\x1c\x04\xf4\x01\xa5\
+\x06\x9e\xbe\x9282@R\x98P \xa7\x18\xbc\xdaP\
+v8\xe4\x83`Q\x1dh\x90\xf9\xb11=\x1e\xb7L\
+\x05\x11\xa3\xcf25z@w\x81\xa6-\x95h\xd72\
+4\xee\xd0\x12\x89\xec\xf7p\x91B\xe8*2!2\xc9\
+\x18bm\xbb16.\xa45\x18v\xeb\x85\xa1\x99 \
+i\x01\xb1\xc2\xc0\xc1 \xe1\xe0\xe7\xfbpH\xc8\x08\xf1\
+\xfd\xf3\xa4FVE\xd1s\xe0/\x98r\x8d\xb1\xe1\xa2\
+]\x1a\x0e7\x07>\x06(\xf7\x0d\xd2\x03\x85\x06\x22\x04\
+\x83\x8a\x80\x07\x0a\x94u\xc3k\x02\x0ad\xb6\x1b\x12\xba\
+(I@\xe1\xb0!\xb9/\x0c\x986@\xc1\xf8b\xf0\
+\x0b\xaa\x15\x07\x08\x0a\x93\xcf\xa3\xf6\x17E\xdc\xf61'\
+\xa2J \x80\xc89\xb5\xb8\xec\x1b2N\xf4\xc7\xc5\xd1\
+.}\xdc\xf3|\xb1\xbeY_\xabg\xf6{S2\xf9\
+ c\xfe\x0aK}\x1eW\x0c7\x02Qm\x0d\x7f\x8b\
+\x90\xe1\xc0b\xbe\x96U\xc9\x0d%?\xac\xf7\x8d\xe5(\
+\xbeU\xb5\x92\x04\xa0\xd6Um?\x810JK\x08L\
+\x9d\xe4b\xeb\xfe\x97\xfd/\xfa_Tz\x05\x96j\x19\
+L\xdd)\x8a4/\x9f\xa1\x9c\x18\x0c\x03\xfd\xb1\xd9\x17\
+8\xc68>\x5cq\x10q\xec\xdb\x1a\xc6\xf6\xff\xdb\x1f\
+\x1cz\x1c\x14\xfe\x0eC\x9cu\xc1\xfaE/`\xf8\x12\
+\x10e\xde@Dl\xa1ZW\x02C8F\xf77\xa5\
+K >\x08\xac\xf09\xfc\x7f\x1b\xd8\x1a\xe40\xccO\
+`P\x81\xa1G\x07\x93j]\xb2\xeeh\xab\xb8\x8e\x02\
+K\xcbh\x9e\xf9\x7f\x9e\x9b\x83\x86\xf5\x8e\xa3\xbfA\x90\
+p\xe5\x80\x22z\x05RI\xd6\x1b\x81+\xd6\x0b5\xb6\
+\xec7\x1c0\xfaw\x93YWf6\x1cl\x0c6H\
+\x08\xb9?\xd6\xb3\xe6'\x1c+2\x83\x18<\x9a\xcf\x08\
+\x5c\x92i%P \xd6y\x1c\xc9@$\x90y\xa1\xb4\
+\x04}!\xe4A\xf4\xa7\x07\xd2N\x86X\xe7R8 \
+m;F\xf4\xd0\x9fT\x13\x0e\xe4T\x86\x0c\x90\xf3@\
+\xe2\xa0G\xd6H\x18\x83\xdc^p\xee\xf4\xfc\xd3K|\
+\xc8\x5c\xa1\x97\xe8\x86@\x00\xa3%%\xc5\x91\x042M\
+\x00\x8d}\xc5zC\x8fc(Rs\xaa\xcf\x1d\xb4\xce\
+\x82\x05\xfd\xe4l\xf8D\xa0L\xf6@dd\xa9ed\
+\x1ea\x1b\xe7\xdc pOf\x06\x88=\x86\xb8\xec\x87\
+\xb6\xe6=HJ\x85\x88\x08\x88\xfc)\xaa\xd9\xbc_\xe3\
+\xc3y\xc3\xfd\xb1\xcf0\xc4Y\xa7\xdc\x0f\x08\xbe\xad]\
+\xaa>\xf1\x8c\x0b\xfb\x99\xf5\xc9zd\xfe\x09\x5c.\xd6\
+\x94\xcc\xa0\xb7y?\xfa%\xc8b\xb5?@b\x10\x98\
+\xe0|`}\xcb\xd1'\xc3N\xed|\xf4\xa5&@\x84\
+\xe3\xc1\xfcQ\x1a\xc8yJ\xc9\x06\x08R\xf4,dW\
+J\xac\xc4>\xe5\xf9\xd9\xcf\x9c\xbb\x04\xa0@\xc2\xb5\xfb\
+\x16\xc8-\x01@J\xa9\xd4\x0f<j\xc7UZ5:\
+\xdd\xa5\xd2c\xd8\x11Z\xc7\xe1\xe8\xca\x0e!\xd1\x032\
+\xcb\xdd\xf8\xe4\xc8\xd3f\x11\xd2X\xe9\x95\xd1\x0f\x5c*\
+\xc3\xfc\xdc\x9c\x81\xf6\xbc\xbbg\xde\xe3\xfc\xa2\xa4M$\
+\xcb\x04RMKm\xe4z*m\xafQ\xd5\x8eP\x99\
+\xec\xd4o\xde\xe6\xb5[\xd7\xc4\xf4Hw\x92\x89\xd9\xcf\
+\xdd\x8f\x5c*\xe4\xed\xad.\x85D-\xb5\xbf[/\xd9\
+\xc5&v\xfd\x8c\x8b\x02\x07\xb6\xee\xbb\xf7\xbb\x88\x85\xfd\
+\xbd\x05\x99\xda\x1dm\xe2H\x84\xbf\x9bx\x00\xed\x09\x93\
+\xc7\x05Y\xfe\xb0\xf6\xf1?\x0b\xab~\xf7\xa0Kio\
+7:\xdb\xe4\xac\xd2\xe6\xda\x9b\xa0y\x1b\xb4\xd8'\xae\
+]7\xa9\xf6\x8b3\xab\x5cW\xb5\x97tN\xa2\xb9+\
+n+\xdar{W\x89\xef+\xc0\xf0\x11\x05|N.\
+$\x92\xdd,\x13\xd3\x8b\xe37\x9a\xbcA\xe3w\xae\xd9\
+\x0b'\xb9\x94D\xcc\xb0\x90\xc9\xc2\xd5\xeb9]*\xf6\
+zJ\x0c\xe8\x06\x00),v3\xed\x99\x09\x5cB\xce\
+\x09\xf9\x22\xfb\x9f.+\x90\x8c\xc2E\x03\xf2\x09N\x80\
+)\x93\xbe\xeab\xd1\x96\x1ccO\x11\xd0\x03\x11\x86}\
+\xc6\xfe\xa1+\x97\xdf\xe5c/P\x92C)\x02\x01r\
+\xda\xdc\xb1\xbf9'I\xcc\xd0\xd5\x0bD\x11\x88N\xda\
+q*\xa1\x11,\xf8 \xa1~`^\x91;\xf4?7\
+;\xed\xe7v\xfd\xb0\x8b]\xdf\xe8b\xc7\xd7\xf5.\xd5\
+\xfc\xee&?L\xcf\x17\x10w\x95FP+?\xec\xa3\
+\xcc5\x89f\x905$H\x08\xb4\xa1G\x1c\x7fuN\
+!\xb3'\xc0\xc99o\xaf\x12y.\x19\xf0\xe0 \xd8\
+7\x07<\x1dO\x9a\x10\xa5\xffq\xa9\xba;\xc8\xef\x8b\
+v\x81 Ep\xa8\xe9\xd2\x81\x9f\x89}O\xdbj\xe9\
+-j\xfc\xa3\xbb\xc9~.\xd5y\xfd\x1b\x9d[+\x0f\
+\xab\x0c\xab\xa4\xef\xcd\x88\xeb\xcbTb&\x92\xee\xb0?\
+\x84\xd4\x0f\xfd\xcf:\xe2\x5c\xe6\x1c\xe7\x5c\x04\xe1 \xbb\
+a\x92\xda\xfe\xf1\xe1&\x1eI\xdb\xc4dS\xb5\xbb9\
+B\x8e\xf1\x0a\x15\xc4A\x8a\xcd\xdc\xf0\x04\x09\x8a6h\
+,X\xda)\x1c\x95k\xa0\xc20\xa0\x9f\xe5\xd1R\x0c\
+\xb7\x88\xe4\xe81\xb57\x02\xa2\xd6\x90\xf5E\x1b\x069\
+\x9aQ\xd3\xc2\x06\xa0\xf6\xf5\xcc\x0c\xfd\xe8\xd6q\xb1\x85\
+\xf7v\x97\xca\x10\xe3\x00W\xfb\x99\xc8\xcc\x91\x11#r\
+OF\x0b\xee\x00\x0e^ m\xf4}%c\x05\x94\x96\
+\x03\x86L\xc3c\xe9\xc9\xf2\x81\xbdH\x05\xf9\xc5!\xa1\
+\x86\x94\x80\x07\x10<2ku\xe9\xc2\xa2\x15\x19\x08\x07\
+5\x10CH\xfe8\xd0\x88\xf0s\xff\x18\xfe\x5c1,\
+9`y>\xd8XA&\xe0\xb8\xcb\xa1\x8evt\x90\
+D\x89t&\xa0\xb0\xd4\xc6\xd3\xe7\xd7\xbf\x0d\xe8\x14\xa4\
+h\xf3\xca@\x5c\xadB\x1c\x00\x01\x06\xaa\x8d\x83\x84\xc1\
+\xd9\xf6\x83's\x07\x04\x9b\x9aT\x0c\x026.\x8e\x1b\
+\xd7\xb6K\x00\x06\x11\xdf\xd3r\x0fp\x1f|\x1f\x1b\x94\
+\xbf'\xb3\xc4k\x14\xe9\xab\xa3]H\x0e\xb0\x00}\xc6\
+\xc1!\x82\xcb}Q\xc3\x8a\xa2g=\x92\xd1\xc1\x00\xc2\
+Q\xa4\x84\x80\xfd\x82\x83\xc1\xbc\x92q\x07\xf2\xfer)\
+$\xa0\xe8\xcc;\xf73\x97\xf6\x1bH\x16\xba^\xec)\
+C\xebM\x0a\xccuA\xbe\x98\xef\x0b\x87\x04\x87ok\
+\x05\x80\x1e\x13\xf4\xf8\x04)6\xe6\x0d\x05\x8e\xc3\x81\xe3\
+M\xe6\x80\xc0\x92j\x93\xfb\x03]R\xdb\xa0\x5c\xf3\x84\
+#\x84\xa3\xf4\x1fu\xe38O\x91xA@\xa3\xe6\x1e\
+\xf6\xd3m5\xdf[4\x9c\x088\x9a8\xee\x8c\xe3<\
+M\x17\x09\xe6\x89yc]\xb0\x8e\x98/\xf6\x1b\x0e\xd0\
+\xbc\xc1\xce\x9d\xd77\x0e\x13\xeb\x0e\xc8\xf5#\x22\x9da\
+?\xc3Z\x0eR\x83\x03\x8fZ\xf5\xe7e\xe0\xffQ}\
+iQ\xf0\xac[\xd5\xe8G\xa6\x82\x0c;5\xdfCt\
+\xfe\xcd?\xa5\xefx>0\xfe%}\x89\xe1\x5c\xb7\x0f\
+\xddqv\xee\x8b\x08$\xb2\x7f\xd0\xdf\x04xq \xd7\
+W\xa0\x80u\xdc\xb2\x14c\xf8\xd3\x9f[\x08\x0c3\xe7\
+3iQ)A\x99\x9eA\xdc:\x97H\x04\xbb<d\
+\x5c\x9bM\x0f,\xc4}\xb2\x8fyn\x02\xcf\xb4[k\
+\x1c\xda@\x8c\x11a\xc7\xd1\xc1\x11\x06\x12\x0ak1\xf3\
+\xc88`X\x11\xd0\xe0\xf9\x09\xb0\x82\xb0\x00\xfaLF\
+\x14}\x85\xdef\xdf\xdc\xa0\xd22J\x0b@\x1e\xb0\x9f\
+\x18O\x1cUH '\xf3\xfa\x8d~\xd3\xb4\xf3d?\
+\xf0\x03\x22\x85>\xdb\x90\xa3\x91i\x85E\x1d\x04\x13\xfb\
+\x8d\xc0 \x0e0\x99\x14jL1L\xd0\xe7\x04j\xd1\
+\xaf\xacW\x12\x08\xac\x1b2\xb6\x9ck\x9c\xdb\xaa!\x8f\
+\x0c\x14\xdc\x08p\x10\x00\xf9o\xdb8\xb2\x9f\xe9\xeb\x8c\
+AD @\xe4\x9b\xd1\xae\x89\xcc5\x06fS\xa2E\
+\xadtp\xf6\xd0V\x8e\xe7\xa5=\x94\xce\xc90\xfc \
+\xb1C\x9f\xe0(\x80\xf0 @\xc4\xef1\xf0ZR\x5c\
+\xd61\xe4U\xe2T\x08\xa4\x01\x01Z\x91\xa9E\xbbV\
+\xe6\x89@#\x90sA\xbd\xfb\x8b\x5c*G\x88\x92F\
+\xd9\x01 \xd78\xc7i\x17\x18\x886>\x9fyd]\
+\xa3\x97\x09lS\xb2\xd2 \xc4b]c_\xd2\x95\x81\
+\xdaiA\xcaI\x08E\x1b=Am\xe9\xda3z\xca\
+\xa5r\x00\xc8\x1ccWB\x8a\x88\xbe\x82\x03@\x86?\
+\xec\xe1\xa3GF\x8f\x8e\x1eM\xb5\xf8\xf7\x8e\xeeM\xf7\
+\x9d\x1d\x90KU\xdaI\x8d\xbf \xf5\xddR.\xea\xd2\
+\xe1\x0e\xdf\xa3\xfe\x09\xa9\x1d\xd9\xc8\xdb\x91\x05\xb4\xff>\
+\x97\xd2\xa7\x9c\x9a\xfc\xeei\x93\xa7\x0a\xfb\xff\xf8\xb5.\
+\xf6\xff\xab\xbb\xc8\xe1>\xbb\x04\x22@48\xd7\xbf\xb3\
+\xfd\x8f\xb7u)\xf3\x1d\x81\x83\x1f\xba\xd8\xff\xff\xd6\xa5\
+@\xa6\x816GI\x81C\xff\x0f\xa8\xe6\x07\xee\x15\xed\
+\xaf\x08d@&LB\x0b\xae\x8c\xc5r;\xdei\xf6\
+\xe3\x8d\xa5\x96}\xd8\xc0\xc5\xde\x7f\x9a\xc9\xa9:_'\
+\xe5P\xbdA\xa5C\xa7\x97\xaeR\x09\xa9lz\xa3;\
+\xc6\xe4h\xbb\xce\xd3e$\xc2\x8cn\xc6\xd8\xdb\x15\x1e\
+\xe4b\xeb\xf6\xc7&\x97\x94>\xf0\xd4\xfa'\xc4\xc3o\
+*\x12H\x02\xdf\xd8\x1d\x90vC\xba\xd9p\x82\x0d\x7f\
+w\xa9\xb8*H\x884$\xa6\xb1\x8e\xa4\xd7\xa9\x05\xef\
+\x9fs\x11\xe7\xc6r\xa56>\xbe\x8fs\x16\xbdA\xc9\
+\xa9\xec\xd9\x18g\xec\x07\xde\x87\xfd\xc1\xb9\xde\x92R\x13\
+\x98\xe0\xbcu7\xf6\xfc\xca\xdf\xe1|yy\xa2\xd9-\
+\xf6,\x8e=\xcfI\x00\x0e\xce0\xe9\xb1\xd4\x0e\xb4K\
+\xa4\xb3\xd7:\xe9,~\xd2\xd46.\xda\x0f\x0f\x97\xda\
+\xf8\xd4.}\xbd\x84\x94\xc8\x014\x95z\x07\xa2N\xdd\
+\xe6\xd0;\xe8uj\xdd\x03\x89\xa8@\xa69\xca&U\
+\x02\x0e\x0e\x0a\x95\x98\xe1/\x05\xc9\xa5'\xfc\x96P\xf7\
+\x9bcK\x00\xad_\xd6\xc5\xae\xffu)\xdd@\xa2\xbd\
+\x1e\xf6\xa1\xc8e\x87\xf7\xb9T\x01\x0d!\x13b\x7f\x90\
+PV\x00\x1a\xfb\xb5[\xc9E\xed\xdfgU]$\x80\
+\xf2\xab\xad_\xc2\x03l[\x05p~+\x7f\x99v\xc9\
+K\xba\xd8\xf5\xf5.\x85+'\xec\x1e\x12\x15\x0a\x84\xd0\
+&3J\xb9T\xd279y\x88\x8b\xfd\xe3b\x13;\
+\x00\xbb#\x5c\x0a\xf9_@\xab\x9cd\xe5\xc1\x8a=q\
+\xa9|\x03\xb6I]\x0a+/\x90H\x91\x98\x04\x1b0\
+\x13\x04\xa4\x13\x83\x85\xdah\x0cl\x22`8\x16\x18\x16\
+l\x0cH\x85\xd8\x08 \x0c\xbe\x99\xfb/\x86\x03\x8dC\
+\xc6\xfb\x81\xae\xb7m\x99\x88\x98\xcb\x80\x8e\xdaD\x0e\xac\
+6\x10@\xc6\x9b\xbe\xcddR\x0eU-*\x11\xf09\
+\x12?z\xa9\xf1\xa7V\x8c\x0dD\xed%\x91\x22\x9e\x8f\
+\xe7bc\x02y\xc21\x9fP\x16\xe7\x8f\xc9\x05\xc8\x91\
+\xc4)E\xbe\xce\xae\x22\xffd\x00\xc9\x90s\xff(,\
+\xbe\x07E\xd1\xd6\xd4s\x80\xc3\xcd\xd0:\xce 3\x9c\
+|\xf0\xca\x8a\xed\x12\x12\xa3\xf5\xf3FOf\xe8\x8a\x95\
+\x82\x823\x80\xcf\xe3\x80\xb8=C\xbe\xc3`\xe0\xf7\x9e\
+\xdfXJ\x99\xa0u\xaa\xfb\xd5s\x05\xb9\x93\x02=q\
+\xb0S\xa3\xae\x0c^(J\xd8\xee\xa9\xc1'B\x8d\x03\
+\x85#\xc38\xb5\xedV\xc8\xb80\xbe@ew\xcb5\
+N\xe1\xb0\x1d\x97KW\xda6-A\x96G-\x11\xbf\
+g\xfe\xc9\x9c\x12\xe9\xe55\x86'\x99J,\x1e\x0e\xaa\
+\xb6\x8d\x17\x9f\xcb8r\xc0\xb0\x9e\x89\x5c\x92\x99j3\
+\xfd\xf4\xf9\x85\xf5\x9b\xef\x9fW\x06(5\xe2\xb0\xb2\xff\
+?\xf5\xcf\xbd]\xfb\x80\xdar\xd8\xd5q,\xee\x16b\
+B\xec\xff\x91!T\xa9\xcf\xf0\x86a\xc7a\xc7R\xab\
+e\xc7_\xceHo\x9e\x03n\xd4\x80E)\x11\xfb\x94\
+\xf1c?\xe3P\xe2\xe0\x13 a|\xd8W8\x86@\
+\xfe\xd4\xd6\xb0r\xf0\xf3\xf8\x92A\x95#e{ \x8f\
+/\xe4\x86BPD\x8dd[\xebN\xa0\x0f\x07\x0d\x07\
+\xf0\x1f\xd9A\x89\x80\x1a\x0e\xe4\x10\xa5\x17\xf9y`\xe1\
+_\xb4!i\xc3\x81c\xff.\xa3\xff/H\x97\xfc\xf7\
+\x046\xf9\x7f~p(\xda\xf5\xc4\xe7\xb5\x90C\x90)\
+\xeb(3K\xad?\x99}\x1c\x16\x1c-\x02E\xec\x97\
+\xb6}+\xf7\xc3\xe7n\xe1R\x90\x06\xec\x93\xe1\xaf\x22\
+\xf5\xe1@\xbdZ\x19I\xbaR0\xef\xe8u\xb5\x8f\x0c\
+\xa4\x11\x90A\xf4!\xf3\xcb~\x07\xb1#R\xcc\x11\x19\
+X\xe9i\xa0{A\xe6J\x86\xf7B\x97\xcaq!\xe0\
+L\x00\x17h0\x8e\x17\x01\x07\xc8d1(\x80\x5c\xd3\
+\x1f\x9d\x80\x11\xfa\x87\x8c\x0ez\x8au\x0dd\x1e\xb2?\
+\x0c\xb7\xb6?\xf4\x09.e\xbf\x0d\xe7\x0e\xe7\x0d\xe7\xa5\
+\x1a\xef\x9c)e~\x09\xf4\xa8\xadk\x04\xee0\x18\x09\
+\x9ci?\x07\xc2\x0e\x87\xb6\x0d$\xb0\x0e\x98\x1fe\x9e\
+\xa2\xf6\x9b\xf3\x1f\xbdC\x80E\xe7l\xd4\x80\x03\x11%\
+\x10\x0e\x8b\xb2 \xf0\xa3\xbd\x5c*G\x04\xf6p\xd6\x03\
+\xe7J\xdbv\x0f\xe4\x0d\xb5\xa2\x94\x026m\x1c\x03)\
+B\xcd>\x9c\x1d\x82\x86\xc6|S\x8b\x0e\xa2\x82\x80\x12\
+\x81\x0f\xf6C\xdb\xde\x96@>\xfd\xaai\xcbG\x80\x04\
+{\x80\xfd\x89\xded\x1d\xaa\xfft\x90\x9b\xc1\xad\x00\xe2\
+\x0e\x87]\xfd\xc0\x03\x11\x01rE\x08>2}\xdd\x01\
+.\xf6\xfb\xc7]L\x1f\xff\xce\xa52x\xd1_\xd4\x0e\
+\x8b|q\xb8\xdc\xa5B\xd8\x11 \xc1Ab\xbe\xd1\x87\
+\x04\xc4xN\x02{\xb0\x9b\xcb\x91\x1f\x7f\xda\xc5\xee\xeb\
+F\x17\xbb\xbe\xcd\xc5\xae\xfb\xb8\x14{r8\xd4\xa5\x94\
+\xa6p\xbeu\xbf\xeen\xean\xaa\xba\x15\xc1\x8d\xa0\xcc\
+\xbd\x19\xcd\xf9\x5c\xc5^\x5cM]%n\x1f\xdd1\xba\
+]\xf6\xed\x85%\xa0\xd0}\xc8%\x05\x0e\xd7O\x81C\
+\xb8_\xe6\x1a\xcd92\xbb\xaf\xbb\xd9\xbe\xef\xe6D\xaa\
+wU\x22\xd5\xc3\x01\x91\x9e\x0f\xc7]]]\xbaK\x5c\
+\x94\xc8\xf9J\xe9\xb3N\xdb=st_\x93J\x004\
+/\xc9\x11>\xa6|.m\xbc\xbb\xa3\x5cl\xbc\xaes\
+)\xeb\xb6;\xdc\xc5\xae_t\xa9X\xfd\xef6\xb9\xab\
+ \xa7\xc6\xab\x9b\xacV!o\xc4i\x11\xe7\x81\x87\xdb\
+\xce\xd7\xbc8\xb2\xe3\x8f.\x85\x9c:\x85\xe7w\x93C\
+\xb2\x93\xf4\xe7\xfe\x82\x22\x9b\xdd\xdf\x9fn\xf2\x8d\x12\xc0\
+#\xf1\x13\x01\x03\xa0\xd5Bp$\xfb\xc3\xec\xda\xc9c\
+\x5c\xec\xd7\x9b\xce\xb1\xe9\xe4W\xb3~\xec8O\xcc\x11\
+\xec\xd76YK\xed\x05\x7fVu\xe7\x82,M\x0e&\
+\xf37\xdeg\xbc\xf7x\xef\x84pH\xfahj]\x17\
+\xfb\xbb\xcf\xb9\x14Dnt\x03\xc2A\xdb\xc3\xa5 \xb7\
+\x22p\x88~\xc7\x0fZ\xd6\xc5\xee\xeb'&\x97\xda\xf5\
+&\x97R\x8b>\xccp\xa9J#@6b\x0f\xab\x8b\
+H\xe8q\xb8\x81\xb0#[}\xfc\xf3\xbd[\x00\x00 \
+\x00IDAT\xc6\xf9\x09'\x07v\x22%Y\x9c\xff\
+\xb4kuR\xbc\xc3\x8b^\x8a@\xb6\xec\xa4\xe0v\x02\
+\xc9@b\x03.3\xec-\x0f\xb7\xefR\xb1\xcb/\xe7\
+\xa2@\xcc\x8fU\x0a\xf0\x90\x10j\xbb\xab$\xc5\xf4\xc3\
+\xf8\xc4\xf1\x09c\x9f\x97\xf7\xba\x94\xf9\x1f\xde\xe5b\xd7\
+\x1d\x5cJ\xbb\xdeTzm\xfb\xd6\x0b\xbe\xbd\xe4;\x91\
+k\xbe\xbf\x0aH\xeb\xef\x935\xf6TU\xfa\xa7@h\
+pk\xa8\x1d\xde\xe8\xec\xbc\xae\x82\xf4\xf2,\x97\xc2\xd5\
+\x11\x88\x04\xcd\x7f\xbf\xa7K\xc5U\x01\x17\x1a\x09:\x10\
+\x88G\xbb\x94\xf5\x11\xe7\xa2\xd6c\x94j\xc2]D\x8d\
+?\x09sHT=a<C\xed\xde\x8f\xa9\x10\xb3\x94\
+\x88\xaaK\x10~z\x04~I\x08a_\x90\xf0\xd6\xb9\
+\xde-\xecR\xce\xd5\xc9\xc9\xcbL./d\x7f\x01\x81\
+\xc2\x81\xdb15|\x0a\x04@D\x1cvv\xa9\x147\
+Pc\xaf\x09\xfaCU\xd3$\xd2\xad\xe1\xa5.UD\
+\x91\x8c\x0b\x90\xb6\x85\x1a\x08\xb6\x22.A\x0aD\x06\xbd\
+\xed\x0f\xcf\xc1H\xc4L$\x1b\xc1\xd6\xfa\xfd\x1c\xc9\x89\
+\x83\x9b@\x00\x06\x0f\x99\x00>\x87\x0d\xc3\xc1\xcd\xfda\
+\x08c\x90\xf1\xf7\xc3\xd0\x0f}z\x9d\xb9\x0f`!\xc6\
+\xf0\xa1?\xe61.%\x10\x10\x07 \x86(\xf7\x83\xc1\
+\x82A\xeen\xdd\xb8B\x08`\xf0y>\xe8\xfe\xca\x80\
+\x85\x84\x85\x83\x99\x88:\x8e\x10W\xfe\x1eG\xbe\xadm\
+&3\x03\x04H\x99@j[hO\x11\xe3BFC\
+\xfd\x98\xe3s\xc5z\x1a\x8e,\x1b\x87\xc0\x82\x9bG\x7f\
+\xaa\xda!\xe2pCf\xc2x?\x94\x1a\xf0LxE\
+\x8e\xd7\xe4\x84\xe1\x87\xe1@\xc4\x15\x03\x93\x0c\x11\x81+\
+\xd5\xf8\x0d\xffp\xa9\xe6\xed\xc5\xfat\xb7\xac\xecm\xcd\
+:\x8avK\x05\x8a@\x82\x88\x0d6\x02<\x04\xa20\
+\xfc\x80\xd6\x92\x81\xe7\x80\xa2\xcd\x18\xe3\xc2\xfa\x84\xbcC\
+\x91\xd0\xe8KN\x84\x0f\x85\xce\xfcaX\xb2>[\x12\
+\x17\x9e\x17\xa8\xa92]p\x7fDd\x1c\x07\x92L3\
+\x81\x00HM\x22\xd5\xd2\xb4O:T\x91q\x0co\x1c\
+(\xbeO\x06?5y\x13\xdf\x16\x09\x97\x0c\xb6a\xd5\
+\x0cy\x9a\xfa\x94K\x82:\xe5\xc0\x0d\x01\x13\x1cu\x22\
+\xf5\xec\x17\x10$8zm\x1b\xc6\xa5\xe4\xf0\x07\xb2G\
+\x08&\x02\x028~\xb4\x13\x82\xcc\x946\xa4\xcf\x08\xc2\
+9\x9f\x02\xa2 &\xd0?\xfd\xf4~\xe3\xf1y8\xe6\
+\xec\x13\xbe\x8f}\xc8z#\xb3\xfbG\xb1\x19\xa3\xe7V\
+S`\x10\x04\x85\xa0a\xb4\xa9\x83\xdc.\x0c\x14\xda\xcc\
+\xb1n\x97\xd7\xfc\xe3h\x13h\xe45z\xb6-i\xe0\
+\xfb\x88x3\x8e\xa5\xbdf\xd6\xbf \x0dp\xec\xd7j\
+J \x9e\x8a.\x12y\x1d\xf1\xfc\xfc=\xe3\x83\x835\
+g6\x9c!\xa9Ky\xb3\xaa\xbf\xad\x99\xb9Y\xff\x80\
+\xf0a]\xf3<\xdc'\xa4\x87\x8bMo/\x18\xcf\x8f\
+!\xc3\xfb\xd9/\xd1\x86N\xdf\xff)\x1d\xe0:G\xe2\
+\xdc\xc2\x81\x01:z\x80K\xd2o9CIm%\xcf\
+\x85\xa3{R\xaeI\x1e\xed\xaf\xbf\xa7f\x9d\xbf\xc7\xa0\
+\x22@A\xe6\x06\xbd\xc3\xf5cIJ\x86\x94@\xb7P\
+\x1d\xc3\x0f\xe5\xd0}L\xd0R\x0c6\xf4\xe3\xbb\x05Q\
+\x85l\x13\x07\xee\x1fB\xf0\xa9\x14g8\xd7\xa5\xea\xcf\
+\x0d\x1b7\xdc\x0cd\xce\x84\x94\xc0@\xf5B\xa3Tj\
+D\xc0\x15\xfd\xa7\xc0h\xd4\xc4\x1e#\xae\x02\xceA\xf4\
+(\x01h\xd61\x81\x0eX\xdcaU\x07\x91\x87A$\
+\xc3\x1bC\x8e6x\xd1N\x13\xf2`\xf4\x17\xe7\x1d\xc8\
+=2\xfd$ \xf8\x81\xc5\x9c\xfe\xe4-90\xac\xdb\
+p!\xf0\xfb\x96$\xb1\x85\xf2c\xc7\xa0\x97a\x19\xef\
+\xb3=\x11z\x00\x88,\x81\x1cAFc\xbc\x09L\xf1\
+\xb9\xb0\x86\xabv\x99\x0cyjO\xfc\x86\x8a\xc4\x8fD\
+\x0c%\x02r@\x82d\x91L\x96\xda\x0a\x86\xa3\x07t\
+\x98R\x02\x02J\x87\xb8\x14\xb2/\x1c\x90\xe1\x22\x17\xfb\
+\xff_\xbbTH\x0ew\xff\xf6\xd4z{s!\xc3\xf3\
+\x8a\xda\xc4Z\xaf\xf5=y\x89\x8b\x99\x03_p\xb1\xd7\
+\xcb\xbb\xd8\xf5M&oN\x99\xfa\xcfz\xa6\xbe\xdf\xd0\
+\xa5jC\xfd\xa7\xcc!5\xde\xc9\xc5\x86w\xb9\xee\x95\
+\xddr\x15\xc7\xd4\xab\xd4^Z\xf6A:\xf5\xe7K\xfb\
+,sE\xbdk\xb4\xfb\xc8\xd6K\x7f\xac\xc9q\x82\xb4\
+\x7f\xbe8\xb8\x9cs\x9e\x8fvG<\xed\xabw\x97R\
+\x96p4@ \x089\xda\xdd\xe1R\x10\x93\x09j\xef\
+\xe4\xce\xdb\x9b8\xcb\xf9\xd3\x19\xa2\x1cm\xf8\xd6\xb4\xfd\
+d\xeb\xb7{\xb2{\xaa\xb3}\xd1\xfd>\xb7\xff#\x93\
+\x18$k\xf7fd\xc2x_\x97\xd2\x15`|\xb0\x8b\
+\xbd\x9e\xd7d\x9eR\x8a\xd1}\xd0d\xafb\xd7\xa7p\
+\x93;\x08S.BVnX\x10!\xc1e\xa0\xf3*\
+\xba?\x81\xbc\xf3R\xbc\xcfT\xc8\x1f\x87\xd8\xcf\xa1Z\
+g\x87\x5c\xcf\xe5\xa2Z\xe9]+\x04\x8f\xce\xdd~\x17\
+\x97\xaa\x9b\x95\xdf\xa7\xe9\xd9\xee\xaf.6\xdf\xeb\x99\xac\
+\x9f\x03\x19\xe3#\xf4\xbd\xa6Wf\x9d\xe4bv\xc3Z\
+&\xceJ\x7f\x98\x8b\xfa\xb9\x7f\xa0\x04n\xba\xbb\x5c\xec\
+s\xbe\xeab\xdfw\xafKI\xf8%;\xc4\xf5\xc8\x11\
+&f\xc7\xf5\xffv\xa9j\xb6\x0fw)\x8eZ\xb4\x87\
+\xd3\xb9\xd1_\xe7R!\xe4\xb0K=l{\x9f\x02.\
+\xbf\xd6y\xb3p\xd5\xf6\x12;\x1b.\x09\xff\xfb\xbfU\
+\x01J\x10Lm),\xe73W\xfc\x16\x02\xd4\x04l\
+\x08\x9c\x12\xa0\xa4k\x82\xba\x01\x108\x0c(9v8\
+\xed\xe5@4+\x00B \x98Z\xf4\x140\xf9|5\
+N\xb4=\x15\xd9)m\xe49/\xbd`\xdbK\xb6G\
+\xdfqI\x81\xe2;R y+\x97R\xe2\x0c\xd2\x07\
+$VJ0\x9eQ\x91\xa9\x1ei\xf2\x19=\xcf\xf2\xc5\
+\x91\x86\xacu\x98t\xa9Hhu\x1e\x81,\xc4\x9e\x0c\
+\xae\x8d\xf7w\x1f\xe8>P\xd9?\x9c\x03B\xc6&N\
+\x8a\x8dJ@5\x02\xa2\x8c/$\xa6\x22'\x0d;\xed\
+bq\xd6i\x1cG\xbdK\x95\xa8U\xe9\x0ez2\x10\
+c\x0aDE\xe9\x1b%(\x04\x9c\x84\x84\x18^\xe3R\
+\xd9\xff\x5c\xd1\xcf$\xfaT\xba\x03w\x05\xe4\xc5\x93\x1c\
+\x04\x90\xacD\x9b22\x85Z8\xd1\xb6\x83\x0c\x0d}\
+U\xd9\xc82P\x9c2\xc17>\xed[\x82d\x81Z\
+\xa9\x05\x5c*C\xb0\xcd\xb8\xe2\xb8\x12\xe9b\xc1\xb3!\
+\xd8(<(\x99^j\xb1/\xce\x0bd66l\x22\
+#L0\x078\x06\x07\x06\x08\x7f\xdf\xb2\xf1\x12ik\
+ \xb4\xa3\xb93)\x0a\xb5$\x01\xb9\xe4g\xe7\xd4h\
+$?\xdf\x22UdN\x19\x87\xa8Ao\xdao\x04\xa4\
+\xd0k\xc8\x9e*\xa5\x00Q\xdb\xcc\x06Y\xddd59\
+,wV$A\xb0\xce\xb6,\xef\xf4K\x86\x8c\x8f\xef\
+\x85\x9c\x09h>\xe3\x83\xa3\xf5\xca\x06\xca\xce\xef\x99\x17\
+\xd6K\x9b\xe1\xc3q\xe0\xb9i\xe3\xc4\xfb\x99\x7f\x0c\xa7\
+\x96m\xfc\xe9\xc4\x17\x9f\x0d\xf6\x05+h2\xf3\xd6\xf6\
+\x87n3\xde@\xe1\xc9\xb8c\x90\xce\x1d\x19\xdd\xfc}\
+\xed\xf7\xf2{\xd6\x01\x90g\x1c\x7f\x90-\xb0\x19\xab&\
+\x8d\x12\x8f0lq\xf0\x08\x80\x10 !\xd3\x85a\x0f\
+\xa4\xabmS\x08k\xfd\xffd\x08\x03\x09\x22\xf0\xc2~\
+\xe4>\xf9|\x0cN\xe6\x0bG\xa7\x81\xdcF\xad-\x11\
+`\xe6\x0b\x03\x99y\xe2\xfd\xac\xcf\x16\xc2\xcb\xf3\xa28\
+q\x04\x9f\x0e\x08r\x1e_J\x09nT kQE\
+\xd6\xd7\x14\x0b\xb8 `\xa1\xb0\xc79C0z\xd0\xa5\
+Z/@\xb0\xc9\xb8\xa3\x8f\xc8\xf0\x97>\xe3\xf9\xbe\xa9\
+E\x07\xa1\xb3\xae \xd2\x05\xb2?\x1d\xe1\xc1\xba\x81\x0c\
+p\x0b=\x1fl\xfcs6\x81\x00\x1c\xb8E\xe4\xf0\xe3\
+\xb8\xe0\x80\xb6\xd0l\x1cP^\xe3(0\x9e\x931\xae\
+Y/\xfd;\xef\xb3\x08\x84\x88{\x84R\x10\x0e\xf2\x08\
+d\xac\xaa>\xe1\xafQ \x0a}\xb8\x8e\xee\x8b\x80k\
+\xe3\x80\x049\xe0\xac&S\xd9\x96\xc2\xcc\x17\xfb,\xcf\
+\x07\xe3\xcax\xb2\x8f\x1e\x96\x01#\x87\xde\xb4N\x22\x9f\
+\x89\xc0\x0c\x01\x12\xf4\xc3\xbaM\x17\x8c\x06\xea\x0c\xb7K\
+\xf4\x09\xf6\x8c\xcfu\xd3H3\xa7#$xn\x02\xba\
+ \xcf(1\x83,p\xef\x04\xea\xf5\x1a\xe7\x8b<\x93\
+\x9e\x1c\xe4=+\x04\x8b\xd6W\xec7\xa0\xa1@\xdca\
+\x07\xbf \x93@\x85^\xc5a\xdaH\x81?\xf4\x22\x19\
+N\x1cjJ\xe8\xc8\x9c\xa3\xc7a\xf9\x87dM\xeb\x0c\
+\x08o\x9cK\xcc\x1f\x089\xf6=\xa5Qb\x01\x1em\
+\xa7L0$\xa5\x04\x94O\x14\xb9\x12dUr\xc8\x82\
+\x1c\x0f=\xcf9\xadL{p#\x80\xc8b>0\x1c\
+)\xd5R[\xaa0L!o\x12\x89Y\xb4\x19\xa3\x9d\
+\x1a\xedE\x19?\xf4\x07\xfb\x9fy\x05\xea\xc8}\xc0\xca\
+\x0c\x92\x8f\x00\x09\xf6\x06z\x95\xf3\x86\xf3\x00$\x00\x06\
+9v\x02\xeb\x8fq\xa6d\x8b}\x80\xa3\x0b\xf9$\xa5\
+p\xdc\x1f\x81X\xf4\x15\xf6\x0f\xf6\xc6\x8b\xb5\xb7%\xd3\
+\x8f^\xc1\xeea}p\x0e\x80\x10#\xa0D\xa0@\x10\
+\xf1\x080C\xfe\xa5\xda\xd7\xd0\xfb\x0aXC\xa2J\x86\
+<\x12)\x22}\x1b]\xeeRq\xb5\xa0\x0f8\xdf\x08\
+\xfc*@K\x8022o\x94\x06\x08\xd2\x9f\xc8\xc1\xae\
++\xac\xe0\xa3\x9b]\x0a\x1b=dus\xcc\xe5b\xd3\
+p\xe6\x9c\xdf\x9e\xd3\x0c\xe5\xc9\x03Ml\xddM\xde\xea\
+\x92 \xc4\xc9\xc1\xf3\xfco\xbfv*\x193I\xdc3\
+\xefv\xee\x99\xf1\xa4\x8b]\x7f\xed\x22v{g\x11\xff\
+l\xff\x99\xde\xc9\x1f\xd73YW\xa5\x01\x97&R\xb7\
+\x9c9\x13\x89c\xb0\x9a\x8fMl\x7f\xf5\xe9\xa7 \xb2\
+F\xffqI]\xaeL\xaa};\xd3\xa5\xd4\xdc\x93Q\
+\xeff\x9ax\x1b\xbf%M\x96\xa8\xc6W\xa4\x5c\x90\x0b\
+v\xcf\xb8\xa4\xfe\xf1;x\xff\xf8\xeeS.v\xdd\xd0\
+\xc5\x9e\xe7\x18\x97\x82\xecI\xb5\xfb\xb6.\xc7s\xba\xd8\
+\xeb\xff\x98<j\xaf_c\xe2\xc8\x81?\x9b\xdc)\x92\
+S\x9b\x87n1\x93E\x0b\xb4<!G\xbe&\x12\xbb\
+\x1f\x08\x09|\xa4\xc8\xb7\xffU\xd8\xde\x87\xedL^\xa7\
+D\xd6A\x9a\xbfO\xcaq>\xa2\xca0+\xb3\x0d'\
+C\x22\xe7\x04B\xef\xe4l\xbb\xbb\xd8\xf5\x9d.\xf6}\
+?u\xb1\xdf\xdfi\xe2\x81\x9b\xaf\x9a\x9cl\xff\xbf\x84\
+\x8b2\xa7\xcb\x96.?S;\xb9\xd86\x9e\xd3\xc4\xf6\
+\xcf\xacG\x5c*v\x7f]APL\x1e\xedb\xf3\xf7\
+g\x97*\xd0&\xe4P\xca<\xdb\xfd\xcc\xfa\xacK\xd5\
+G^\xdf\x17\xfaG\xf6\xcdp\x8dK\xc5V\xafLl\
+p\x9a\x10\xf8\x11\xa7\x03\x09\x91\xa9\xf9L\xe6/\xfb4\
+\x90\x0f8xB\xb4\x06\xc2\xa7%\xefE\x0f\xb7\x81J\
+\xec`\xces\xba\x85\x88\x8bax\x85K!A\x8dD\
+\x14v\xb22\xc5\xc3\xcf\x5c\xaav\xee\x9c\x97\xaa!o\
+\xa1\xf8\xa3K\x5c\x14 9\xact\x0dI\xf8\xbc\xab\x0b\
+\x07F?\xe9\xa2\xe7\x9f\xafp\xc8\xd1\xddb\xd8\xd6E\
+\xfe\xe3\x9cr\xe4M\xcf\xd8.5\xa9\xce\xc7u\x02\x09\
+\x99K\xabi;\x0d\x82\x18\x8e7\x10\x7f\xb4\x8f\xde\xc6\
+\xa58\xee\xa6\x05/KzpE\xd9_\x9a\xef\xd1\x12\
+\xd9\x1f\xa3\x1b\x06\xf6Uw\x83\x8b\xbd\xffQ\x97D2\
+mb\xaf\x8fr\xb1\xeb\xd2.%@M\x80#J\x05\
+(\x9dV@5\xce\x19\xda\xb3\x1e\xecb\x9f\xf3\xcd\xfe\
+\x8c\xfe\x9b\x05\x01\xc2}\x0f\xf7\xb9\xa8\xe4b\x5c!$\
+6v\xa9\x90\x7f\x90(S\x0aG @\xe3\x11\x1c*\
+\xb2\x17&#\xb2\xeb\xddY?[ d\x89,\xe7\xfa\
+\x0a\xb2\x04d\x9a\x08\xa0j\xd4\x88t\x069\x84\xa0\x13\
+q\xa0\xabf1&\x10\xd6Z\x0e\xfaU\x04\x11\x03\x11\
+\xc0\xc1\xd2\xb2\xea\x13\x09{zz\xadr\xb4M\xf8\x83\
+\x02\x00\x0f\x88\xcd\x91\x8d\xc3\xb5e\x83\xe7\xa0\xe5\x80\xc6\
+\x10m\x91\x058<\xbcf\x03\x92\x19xrxbx\
+\xa2D\x80\xc2\x90\xc7\x80%#\xe8\x95\x86\xd7T\x86\xac\
+j\xbd\xc20i\xa1\xffd\xbe\x9cTb\xd9\xc2)\x10\
+\x91\x7f\x91\xa3\x04\x0b\xfa\xca\xeaS)\xe8\xcb\xe8\xf3.\
+\x95\xa2\xa0\xc4a59\x06dDy>=\x17\x90\xb1\
+\xe8;\xdad*X\x07d\xe4\xc3p\xc2\xc1\xc1\xf1\xc1\
+\x11\xc7\xe0\x13\x09`\x18\xfas'W*\x1bXsT\
+\xcf\xed\xb3\x0e\xe9\xde\xa8RP\xccSS\xf3\x18\xeb\x84\
+\xf9\xe45\xf3\xc0\xb86P\xcb\x88\x9cb8\xb7?-\
+$\x9eu\x84c\x01\xf4\x1cE\x03\x09\x22%\x01d\xc2\
+d\xe0\x0d\xb7\xb8T\x1b\x9f\x00\x16\x8a\x98qc\x1c\xa8\
+\x0d~\x87\x02r\x1f\xd0\xb8\x11\x00\x11\x04(\xf6\x07\x0e\
+0\x19D \xe88z\xcc\x0f\xeb\x92u\xc7\xf3c\xf0\
+\xce\xd1te\x18\xeb\xf7\xb3\x22\xc28\xad;@@\x90\
+\xee\xcd\x07Z\xe5H\xe6\xbfg\x1c\x19\xef\x7f+\x92\x0d\
+\x94\x94\xff\x87M\x17\x87\x91q\x14\xab.5d\xb3\xb5\
+qBo\xac\x11\xed\xe6r\xa6\x99\xf5\xa2k\xb0\x9f\xf3\
+~\xc6\x9b\xf1P\xad~\xea\xbd\xf1H\xa5'\xb8?\x02\
+ m\x80\x86\xf5\x08r\x83\xfd\x86cO@\x8c\x00\xc4\
+\x12.\x15G\x00\x81\xb7\x87\x84P)\x86F>\xd0\xc9\
+8\xf3\xf9\x1fT&\x9a\xcc.\x99k\x0cl~\x08\xc8\
+P{_\xc8F\xe9\xe3\x9e\x1d\xf0\x97\xe8ypD\x0a\
+\xe48?7\xe4\x90\x8c\x07\xeb\xf3\x95\xd1\xd6/;d\
+\xd4\xda\x03\x81\xd7s\x04+;\x19R2\xdbp\x12\x94\
+@M\xfe|\x10.\xccc\x8b\xf8\xc2\x11b\xdc1\x08\
+\xe6\xabJ\x86\x96\xae\xf6\x1f\xa5W \x87\xf6IR\x02\
+w\x18\xde\xbb\xdaA\xbfk\x05i?[\x99d\xc6\x99\
+\x1f\xbe\x8fL\x0a$\x97\x0a\x9c\x0d7\xb9T\x88\x19\xd6\
+\x8d\x904m-t<?\xfb\x85\x83\x9a\xcf\xa5\xb6p\
+\x7fqj0?p\xad\xa0\xdf(\xbd\x82\xac\x8cs\x80\
+vz\x9a\x9f\xe86\x00\xcb\xb4\x02\x1cd8b\x9d=\
+\xa4+\xeb\x8b6^\x90\x18RR@)\x0e\x99/\x9e\
+\x97\x92?J\xa2\xd8g e\xd8W\x18\xb6\x9c\xefB\
+\xb2`\x88F{5J\x0f8\x7f\xd1_ jh\x17\
+\x09\x09\x13z\x95\x80\x1e\xf7\x85>\xc7\xc0&1\xc0k\
+\xf4)\x81\x01\x0c~J\xcd@\x1aQ\x0aH`\x88\xf5\
+\xc5\xf7\x12\xf8c~\x09\xc8r\x1f\xf34\x81D\xf4f\
+\xdfp\xac\xa0?\xc9\x006\x9c1\x01\xd5\xa5\xbf\xb7\xec\
+*\xd6y\x90\xfa\xa2\x07e\xb7E\xa9\x11\xe7\x0c,\xeb\
+ \x18\x09$\x81\xa4\xfb\x9dK\xc9\xa8\xd1v1\xd9!\
+\x17\x94\x0c\x5c\x909\xc29\xf0\x99\xdc\xad\x026\xf9\xe8\
+\xb2\xa1y&C\x96\xba\x1d=_A\xe2W\x107\xd5\
+\xf7\xc7?\x18\x9bC:\xfe\xb3\x8b]/p\xb1\xdf\xef\
+\xeeb\x7f\xbf\x90Kr\x80\xefw\x078\xad\xb6w\x96\
+\xee\x1d\xdd\xd6.\xf6\xbe\xef\x99\x9cS>\x9f6\xa3$\
+X\x12I\xdf1\xc5!\xa7fv\xd6F&\x1b+\xf0\
+r[\x0a\x14\x5c\xe2\x1c\x02\xc3n\xc3[\x87\xdd*\xbd\
+\xa7@=\x0e%\x08\x8e\xeec.v}\x8d\x8b\xec\xbe\
+\x85*\x96\xfd\x9f\xbbTzh\xb9\x9c\xa8 \xc3:^\
+\xc4\xa5 \x91\xba_\xb8\x94\x00\xcfxG\x97R\xe3?\
+\xbe\xc1\xc43\xffW\xb8\xd8ud2Q\xec\xc1\xee/\
+.\x1a\x1fs\xf0\xbb\xed\x5cJf\x90\x8c{\xe2\xfc8\
+\xa9B\xb8\x89l\x8d~\xea\xd8\x15\xa3\x83\x14x\xdbJ\
+\x81\xe6\xa3s;\xb7\xe8\x9a5\xe5R\x91\xeb\xfd\xd1\xa5\
+ M\xfa\x9d\x5c\x8a=\xd7\x1dgr|E2\xe8L\
+\x0b\xb6\x8e\xfb\x7f\x99\xd8\xfe\x9c\xba\xd9\xe4\xa6B*7\
+5\x97\x89\xed\x9f\xfe\x87.j\x87vL\x090D&\
+[P\xf5D\xd2x\xbc\xfc\x91\x7f$V\xf8\xb5\x9d\x15\
+~\xea:\x17\x1b\xaf\xbd\x5cJ&\x172\xbbhK\x0b\
+\x17\x06\xf6\xefC\xd3\x91S =(a\x18\xff\xdb\xa5\
+\xea7\xff)\x17\xbb\x8f=M\xdeo\x9f\x7f\xb6\x8b\xfd\
+\xff\xa2.U\xe0\x8fDL\xcb\x85\xd5\x96\x02q\x1e\xb4\
+H\x02\xecQ\xecV\x10\x9e\xd8\xcd\x9c\xb7\x0b7\xf6!\
+\xa5^tK\x91cN\xdbp\x9e\x0b\xc7\x94\xd2\xcd \
+C\xa7\xfd\xae'*< \xf7%\x17{\xce\xad]l\
+\x9c\x8fq\xb1\xdb>\xd9\xe4\x94\xc2\xf1\x00r\x0b\xbf\xa3\
+\xff\x90Kq|\xa34\x8d\x80\xaf\x12!\xc1\xa5\x00i\
+\xefJ.v\xdd\xc2\xe4\xd5\x0aD\xfc\xb4\xb2\x17\xe1J\
+Q\xe6<\xd8\xf6)M~\xa3J\xf6\x84\x04\xed\xfe\xd1\
+=\xd4=T\xbd_\xfe\x0c\xdd\xf2(I\x1dv\xce\xa5\
+`S\xbfw)\x1c\x1f\x046\x03\x11\x88\x1d*\x04\x1c\
+\xddW\xa2\x0d\xe5+\x86eS\xa0\xe6\x8c\x89o:\x97\
+\x89\xe9\x99\xdd\x5c\xcf\x0c\xeb\xb8\x94s\x1dr\xec8\x7f\
+A\xe4\xb1n\xf0\x03\xb0\xa7pk\x08\x00k\xddN\x12\
+\x19\x0b\x88\xbc/\x9b\xad\x05\x99~\xa8\x90\x12\x8c\xaew\
+\xa9jL\x04\xf1\x8fH4\xb5\x0bDt\xc90+#\
+6|c8m8\xad:\x10Y\xd0m\xdb7\x0eh\
+\x1cG&L\x11\xb30T9\xa81d\x80\xdc``\
+\xe8 5\xf7$E\xdc\xed\xb8\xcb\xb5}|.\xdf\x87\
+\x01\xcb\x01\xdc\xb0D\x87A\x8e\x83D\x06[\x90Cj\
+L\xa8\xed\xa1v2\xfa\xa9Rb\xc0\xfb\xd9\xb8\x18\xb4\
+8\xaam\xfb>\xfe\x0e\x83G$)\x91\xf1\x84\x95\xd7\
+\x7f\xfb\xb0\x22|\xcb\x14\xa8\x0d\xed\x87\xc2Pc\x01\xe3\
+\x90`\x80r_ (0\xc4XH\xdc\x0f\x8e\x8aX\
+(\x83\xc5\x95\xf1$\xa3\x01\xd4\x88\xcf\xc5\xc0##V\
+\xf7\xeb\x1eU\x86N\xdb\xd7\x94qY9\xd1\xe8\x94Z\
+B\x02\x17\x18D\x5c\xdbZ\xe6\x86\xed\x7f\xb6\xf9\xc4Q\
+k\x91\x17\xdcO\x0b\xf5\xe49y.\x029 \x0b \
+\xbf\xe4\xf9q4!W$\xf2\xc6\x81\x81\x01\xc8\xfd\xf1\
+\xbc(b\xd6\xc3'\x94i\x83$\x0c\xc7J\xf3\x1b,\
+\xd7\x94\x1e`(\xe3\xe0\x89\xf5?\xbaX\xd0\xae\x84\xf1\
+\xa4\xcd\x16\x01;\x1c\xab\x96\x84\xecY=w\x1b\x10\xe1\
+\xef\x80\x5c\xe3XO\xc6<\xe6\xe7\x80}Y\x86Q\xff\
+K\x17\xbb^\xedRj\xe4p\xc0G\xdf\x1d\x9d3:\
+\xa7 \x89\x22\xa3\xd8\x90\x7fFF\x95\x8c'H\x0d\xe6\
+\x85\xbf{\x95\x14\xe1\x1aZ\xffkOw\xe4\xc2`G\
+\xaf\xcc\xd1d\xf89(\xf9\xc11E\x1f\x11\x81g\x1f\
+1\xef\x04\xdc@\xc8\x90\x89&\xd0\xa2}N\x86\xc8\xcc\
+\xa3;\x86;\xca>\x8c\x8c?\xfb\xefI\x97\x8a\x8c\x94\
+}\xcczc}\xf3\x5c8\xac\xec\xfb\xf5\xb4>\xc8P\
+\xce'\x07\xb2\x94\xc2d\x87\x9f\x1f\x0c\xc0\xa5\xa6\xcfc\
+\x18\x12\xac[\x1c\xad&\xa0\x1a\xf7O\xc0`\x039\x8a\
+8p8\xfa\xe8a\x22\xd8\xca\x04F\xc9\x08\xfa\x8b\xef\
+\xa3\xb4\x04.\x02\x1cP\x02\xae8\xda\x94\xe2\x10\x08P\
+;\xa28\xaf\x80\xe8)\xe3\x11\x0e\xf3v\x0a\xec\xb1\xde\
+\xd1\x8b|?\xeb\x85\xe7b\x1e\xe1\xd4\xa0\xd6\x1f}\xc6\
+9\xc7:\xc5QD\xdf\x10\x98d\x1e\xb9\x7f\xc85g\
+\xe8\x0a\xc4\x13n\x01\x02. \x8a\x04\xe9\x8f\xf6\x85\x94\
+\x1a\xd1\xe7\x9c\x1aE\xce%\x022\xaccuw\xa0t\
+. \xf68\xc8d\x92\x1db\xbbW\xf9\x9c\xd0/\xac\
++\xc8\xdepL1\x10q8_\xebR!\xa9\xd0\xe3\
+\x18\xb0*\x99\x8aR\x04q3` b\x8f\xc4\xe7\xea\
+\xb9\x81\xa0\x064\x9es\x80\xfb\xa7\xa6\x16\x07\x98\xf9c\
+\x9e\xb8\x0fH\x04\x09\xb8\x92yg_\xd1\x85B\xf7\x15\
+\xf3\xc5\xfe\x03\x91\xc2\xba\xe5\xf5\x8b@\xffc}\xb4\xe7\
+\x0c\xe7\x145\xa3\xd8\x03\x04\xe4\xb1\xb3\xc8|\xf1}\x0a\
+\x00\x04w\x105\xc6\x04\xfa\xa9Y\x06\xda\xcd9\xcd\xfd\
+s\x9f|\x0em\xf3d\xff\x8d\xe6u\xa9J, \xcd\
+\x84,\x9aR\x0c\x10\x18 \x83@\x00\xd0\xbe\x0e\x16{\
+\xcd7\x19=\xba2\x8c\xde#\xa8\xfcm\xa3\xdbS-\
+>\x19-\xfa\xb2_\xe8R!F.K|\xd9\x13\xdd\
+[LvVBc\xe9\x0a\xfa\xfe'\x97\xe4x\xec\x9c\
+\xda\x86\xfdg\xf4h\xca\xe0\x93\xc1\xfd\x9eK\x15\x7f\xf9\
+\xb4\xc9\xc1\xa5\xe4\xb2\x9fr\xb1\xebR.%\x13L\xc9\
+\x02\x01\xeb\xee\x1a\x13s\x18\xbb\xdf\x98\xdc\xa2\xbe\xf0g\
+$\xce\x81s\x9d\xa5\x9e\xda`2u\xdd\x9b]\x12\x02\
+ q\x03t\x87u\x87:\x19\x1fvd\xf7/\x17\xbb\
+~\xc2\xc5\xae\xb7\xaa\x14`\x7f\x17[\xbe\x0f\xb9\xd8\xf5\
+\x19\x17\xbbnib\xfb\xba{\x9f\x8b]\xd7r\x11\xc4\
+\xdf\xec\xe2\xee\xeb.e\xf9\x8d\xae\xcd\xed\xda\xba[\xba\
+\x9b\x13w\xc1<y~\xe9\xfa\x10\x8e\xe0\xf1B\x0a\x81\
+\x00\xa2\x84B\xfe\xc3\xb0\xd4\xb0\xf4\xb0t\xca\xc0\xe7\xb6\
+\xbd*\xbd\x1c\xfe$\xc7\xdf\xd9\xf8\xed\xfc\xe8\x7ffr\
+]\xe9v\x15\xa5\xb1?J\x18\xac\xc8\xf0C\x92\x96\x1c\
+|\x1b\x97\xa9k\x5c\xec\xf53\xb9/{\xe2`\xb9\xa8\
+\xaa\x95^2Y\x1c9\xe3z\x8f\xecu'3\xdd\xc4\
+dS\x9d\x1bs\x89\xfc\xf0L\xb1\xf8_b\xe3\xf5w\
+\x97R\xdb\xdd}\xd4\xc5\xbe\xe76\x97\xaao\xfd\x99.\
+%c\x1c%4JTu\xfb\xb9\xd8\xe7-\xe3b\xaf\
+wq\xa9\x1cS\x12v^\x02\xe0\x8e\xf1\xdf\x5c\xec\xba\
+\x99K\x15h\x1428JWY\x90\xe8'\xf4\x00?\
+\x9c\xc7p\x8f\xb8\x95\xbca!S\xe4\xef\x03!D\xb7\
+\x1c\x02\xbe\xecO\xf4!z\xc8\xc3zg\x95qNZ\
+\xa2\xe6\x08\x12\x12\x14Hy\xea\x9d\xe2%0\xf7\xb9\xd8\
+\xf3\xef\xeab\xb7\xbf\xbf\x8b=\xe7/r7\xa7\xa9\xcf\
+\xba\x08\xe1\xf6\xdaJ\xafp_\xee\x8e\x7f\xacB\x1e\x1c\
+\xe8R\xd91\xd8\xcfpSA2\x8f\xa3\xec\xb8\xb1}\
+J\xfb]\xec\xaenK\x97\x0a\x09t`\x7f\x80\x93M\
+\xdb\x18\x9d\x91\xc6i)\x9d\xefp\xee\xfcJ\xe7)m\
+HAv\xa8\xf4oX\xc3%\xd9\x99\xd9\x9eQ\xa9\xf6\
+\xd4\xbe.\xd5yK\x80\x9e\xc4\x04m\x8cE\xa6;l\
+\xeaR\x95\xd4Q\x12\xc08+\x803\xec\xebR\xcd3\
+\x5cVt\xb1\xc1^\xe2|\xc0\x8e\x22\x90r\xa9\xba\x09\
+\x88\x13c2\xda\x1c\x88\xc4 \xfaR\x02\x1d\xdb:\xf1\
+,\x17\x92\x05\xc8ND\x9e\x10\x11\x06\x1c\x01\x22\x14N\
+\xdaple\xe0\xe1H\xa0q\x0a\xf4{z-\x0b\x06\
+8\x07\x12\x0b\x94\xff\xe7{8\x18\xd9\x08D\xc6\x81\xa4\
+Q{J\xcd*\x06<\x8eK[C\x83\x03\xc8\xfd\x91\
+Ya\xa15\x192\xa00dhb!p\xd0z\x85\
+\xe2\x11\xda\x88\x1bW\x91u>\x07\x83\xe0eM--\
+\xbf'@\xc2}p\x7fM\xc6\xc7\x1cD\x97\x02E{\
+\xc0\xa5\xaa\xd9\x81TEmn\xd2\xc2\xdf\xaf\xfa>\xc6\
+\x8d\xf1\xc6`\xc2\x00\xc01\xc00\xe0\xef|\xd4fU\
+\x0e\x16\x8e+\xef\x1f\xa7\xdcq\x9e\xaf\x97\xbd@\xc9\x05\
+\x08\x80\x16Z\xcc\xfcR\xdb\xed\x19\x9dWT\x8e\x0c\x86\
+7\x8e3\xdf\xdb\x92\xde1N\xfc\x1d\xdf\xd3\x06\x90\x08\
+\xb4\xb4\x99\xff\xb6\xa6\xe6\x7f\x91!\xcf\xef\xc7\xd0b\x1e\
+\xf8\x1e\xd6\x19\xed\xd1\x88\x8c\xb7\x19&2B</\x99\
+K\x0cc\xf6\x15\xed\xae\xa8a\xa5\xe6T\xec\xbd\x91\xd1\
+\xc3`\xa5K\x00\x19a)P\x1c\xfe0\x18q\xd8h\
+\xeb\xb4p\x03\xf1/\xfbq\xba!\xfa\x9c\xee_\x88\x00\
+\xd8L\xa3$\x80\xf7\x91\xc9\x22\x80\xc7A\xc6\xf3\x081\
+\x13\xed\x82\xd4\x07\xd5\x8c\x88l\xd0\xb3\x1eX\xa7\x04\xf6\
+\x08\xa00\xee\x1c\x5cp3\xac(\xf24\x1cA~\xcf\
+\xfaYC\xaf\x97\x97!O&W\xe3\x12%0\x04\x16\
+p|Y_@\xec\x17t\xa9\xf4\x01\xed\xf3X\xff\x8c\
+\xef\xaar\x88V\x09\xa4A^\xaf\x93Q\xe2\x92\xc7\x15\
+\x88?\xed\x1a\xd1C\x18\xe8\x1a\xc7`\xa5\xe7\xc0a\x1d\
+q\xc5\xb1\xe0\xbea+W\x9b\xcfh_\xca\xc1)\xb2\
+\xbc\xb8\x1f\xf4\x1dW\x1c\x11>\x1f\x07\xaf\xe9\x07\x1e\xed\
+\xcb(9\xd8X\x0e\x11\xeb\xb8\xd4L\x13\x88\xc8\x81\x10\
+\x026dV\xd7T@cs\xb5_\xddZ\xb5\xd0\x7f\
+\xca\x07\x1e,\xf6\xd1\xc6\x90\xfd\xc9\xfc\xe2X\xcb\xb1\x0d\
+G\x83Z\xe6\xe7\x5c\xaauJ\xa6\x84}H\xa6\x1a=\
+\xc3xr\x10\xb3.8\xbf^,`\xcb\xfc\xb1\x8ey\
+\xcd\xbc\xe0\xe8\x13P\x11\xf9\xdb\x88\xf1\x95\x81\x10\xdd9\
+\x08\xb4+\x90\x15\x8e?\x012j\xfd\x80\xa0\x8b\xdc*\
+\xda,\xa2\xe7y>\xee\xbf\x09T\x86\xa1B\xa9\xc5\xdb\
+\xa7g\x1c\x22\xc0\x81\xbd 2\xab \x8b\xa5\x16\x92\x12\
+\x05\xf4%\xe3\xab\xf3#\xb8}\x08\x10p\x7f\x04\xd8\x19\
+/H~EV\x17\xed\xa8 \xb9;\xcb\xa5\x186\x11\
+h\x83\xd4\x0eR\xbc\xb6\x0b@\xdb\x8f\x9c\xf5\xd0\xb6k\
+E\xcf\x13\xd8\xc4@nIb[N\x89v_\xbeX\
+\xed\x7f\x8btD\x8fb\xf7\x90\xd9\xc3\x8eb\xbdq\xde\
+\x80\xf4Q\x00\x9a\x9am\x0c\xcd\x80\xe4\xca\x9e\x1b\xdd\xe8\
+R9\xde\xd8K\xe8\x03\x90\x02j35\xfa\xabKU\
++N \x96\x925\xc8\xab>\x99$\xba\x18\x04y\x9c\
+\xb8q\x08\x90D\xa0\x1a\xbd \xc4\x02\x8eRtG\x02\
+\x11\xb6\xa2JP\x17p\xb1\xeb=&wW\xec\xd9:\
+\xe7S\x1b\xbb\xa3\x15\x18}\x83\x1c\xf1\x0b\x04U~\x95\
+H\xf2\xde*\xf2\xbd\x1f\x9a\xda\x9e\xc7d\xee\x12\x98\x0f\
+GV\xfa\x8c\xc0\xfa\xe4\xb5\x93?\x9b4\xc7x|\xe3\
+\xf8Wc\x1b\xd7\xa9\x03M\xcc\xf1\x9dZ\xda\xc5\xae\xcf\
+\xb9T\xed\xf4D\xc2\x97\xf6\xcf&\x05\x82\x1e\x19~!\
+\xc0F\xffv)$\x868\xf8 x\xba\x7fv\x0fw\
+\x0fK-\xd8\xbe\x19\x1f\xe9\xa2\xae\x01\xdeO\xfd\x02\x17\
+\xbb^\xedb\xbf\x7f\x9d\xc9vv]\xd4\xc4\xd6Y\xf7\
+\x05\x17{\xbd\x83\x8b\xbd\xbe\xd8\xc4\x1c\xf4\xf1q\xe3\xe3\
+\xc7\xe6\xa8\x8d\xcf\x1b\x9f;>\xd7\xfe\xbf\xf7\xbeg\x22\
+E\xfbnB\x1a\xbc\xcb\xb9\x0fF\xc7\xba\xd88\xac\x92\
+\xb9y\x86U]\x0a\xe2#j\x89\xaf\xce~\x80\xb9\x13\
+G\x0eG\x16\x04\x15\xd0o2\xff\xfd\xd7]\xec:\xb7\
+K\xb1OFK\xe6\xf1\xe8?\xe0Rj\xd1\x13\xd9\xdb\
+\xb5\xca\x8c\xdb\xf3\xf4\xf3\xba\x94\xcf\xa5\xb6?\x02\xb4 \
+\xb0\x1c:\xfd\xb0\xb8R>^e\xec\xf779\xa0@\
+\xd3\x93\x9b\xf6\xae\xd4>\xf8\x94\xce\x1c\xd6\xc9\x7f\x9b<\
+\x92\x02!\xd7\x8e\xae)v\xf2\xf0?\x13\xfb\xfc\xa9\x95\
+L\xec\xbc\xed\x17wQ\xe9\xc8z\x85$\x8f\xf1\x18_\
+\xebRu\x81P \xb8\xff\xa6KA\x18L\xdd6u\
+\xfb\xd4\xed\xf6z\xe1\xf1Bc\x0f\x88<f\xf2\xdf*\
+\xc1\xaa\xee\x14\x9c\xf7QZ\x85\xdeB?<\x9aR&\
+\x85{\x81\xdaq\xd9Y\x01A'\x80\xa8~\xf7)\x03\
+>\xa3*\xb1\x82\xa3\x8a\x92n\xce\x07\x02\xdf\xe2\x9eI\
+\xf6\xde\xcc\x0a\x19\x87\xbeUm~p\xafQr\x80=\
+\xaes\xb0\xdf\xc2\xc4\xf4\xd5\xac\xcd]J`mr\x0f\
+\x17u\x05\xb8\xa8:O\xb9\x0f\x10I\xba_\xd6e \
+\x02\xe4\x00\x13\x98\x05\x89\x17m\xd5E\x06\x19\xa5\x9d^\
+\xb2\xe3m1W5Y-!U\x92\x1dK\xa9\x823\
+\x848GH\x9c#\xcc3\x09U\x10\x07\x04\x1c \x9f\
+\x85+H\xdd\x88\xfa\x95]\x0a\x07KpZ\x09\xf9\x13\
+\x81kq\xb6\x04\xb7\x1e\x1cZ\x90\xbc\x1e\x99\xf7\x17\x9c\
+\x01a\xff\xb2\x1e(\xa9#\xe1\x82\x9dABE\x89\xe3\
+\xe13.%Q=ID3\x0e\x1a\xfa\xb8;@\xeb\
+\x97e\xc0\xe8C\x9f\x1c\xcc\xbfW\x03\x8ba\xce\x01O\
+\x06\x88\x09d\x01a\xa8\x91A\xc1\xf0l#\xe0@\xfc\
+9\xa89(18\xf9\x1c\x0eJ2\xffD\xe8i\x97\
+\xf0\xb0\x22^\xcf\xfb\x16\xaej\xe9P\x18-d\x1c\x07\
+\x87\xfb\x05Z\x88#\xc9\x01\x8f\xe3\x0e$J\xfd=c\
+\x81\xd5\xb5\x7f\xcbW\x0e\x08\xfd\xa1\xa9\xe9\x06\xba\x8c\xa1\
+If\x01\x83\x91H\x1f\x8ek\xdb\x1e\x0eC\x85\xc0\x02\
+\xd0?\x1c\x14A\xc8\x02\x22\x82\x01^C\xf0\xe7\xae\x1c\
+_\x1c\xc86\xb3\x85aHF\x13\xe8\x0dl\xdc\x18n\
+s\x04;\xfa\xfc\xe1\x00-\xa5\xf9\xea\xab\xf1oI\xd1\
+\xc8\xa4\x8b\x04,\x1cJ\xd6\x05\x06S;\x0fdR\x99\
+'\x0c\xaf\xd60c\xa3\xf0y86\x8c+\xeb\x8c\xf1\
+n!\xec\x5c\xa9\x11_D\x9f\x8f\xe2\xc3\x90\x11yX\
+dfUC\x18\x8a\x09\x96TJ;0\x0c\x197\x9e\
+K\x8a4Q\x1b}&\x19b\xa9\xcf}d\xea\x89L\
+r%\x03\x86\xa3\x07\xc9\x12\xb5\xb0G\xe9\xfdj\x8f\x14\
+\x01\xaaB\x9a6\x9d\x04\x8e}\x81\xa3\x0f\x04\xf61\x97\
+\xcaPm\xa1\xb4\x18\xd2\x5cY\xaf\xecg\xf6)\x1c\x09\
+\xaa\xa1\xec\xde\xedb\xcb\xfaH\x97D\x9e\x92\x0f 2\
+\x83\xbf\xcc\xa5\x02\x01\x09.\x0ep\x0e<q?\x132\
+\x8c\xe7iH5\xf9;\xf6[\xc3\xf1\x11]#\x18?\
+H#\xef\x13\x89\xd6\xa2\x0a\x98\xc0i\xc0\xfa\x9d\xa1\x8c\
+\xab\x90\x02Q\xab\xcd:b\x9d\xad\xd3d\xdcQ\xccm\
+\x17\x12\xc6\x09\x84\x02\xdf\xc3\xfa~H\xfbgi\xbd\x9f\
+\xda\xfb\xd5\x95QF\xef\xb2O8\x10@B\xbcV%\
+\x22d*q\x1c\xe8\xe6\xf0\xfc\xf4\x92\x98\x88\x1c;\x89\
+\xd3SU\xed2\xf7\x03I+\x10\xea\x95B\xefe}\
+\xd1\xd6@\xa3\xbf\xa9\x85^_\x01\x895a\xdfW\xe0\
+\x80\xf9a\x7fp\xbe(3\x1d\x99`A\xd1\xc3A\x06\
+\x8aK\xa9\x01\x81m2\xe3\x04Z\x818\xb2\xcf\xdbL\
+\xec<\xd1\xbeqz{\xc26\xa0\xd8\x04\x84BOp\
+ \x13\xf0n\x91\x22\xcc\x0b\xc8\x10\x1c\xcb9\xc4\xfa\xbe\
+\xb1>\x1f\xa4\x00z\xa6\xe5\xf6 \xc0\xf4j\xf5iF\
+\xef`8\x08i\xe1\x15\xbf)\x10x\xa7\x90a\xd4\xf4\
+7\xc8\xad\xd1\xea\xba\x1f\x02coU;E\xf4\x1a\x99\
+d>\x9f\xc0\x10\xfb\x1a\x87\xb0\x09\xb4S\xfaD\xadh\
+\x90\x0e\xa27q\xb4\xc9\xf8\xc3M\x80#J\xffx2\
+<\x22\x0d\xe5\x9cB\xbf\x0d\x07\xb9T\xf7\xd5\x94\xc2D\
+M<\x082\x02*\x9c\x87\x9c\xff\x9c\xa7\x9c\xaf\x90B\
+2\xfe-+\x7f\xcb\xc1\xc0|7\xf3\x14]\x04@\xec\
+\xa0\x07\xda\xd2C\xba\x91\x88}?2b\x04N\x9cM\
+\xfd\xa7U\xcd9\xa5E@\x8f\xff\xe6R\x05D(\xfd\
+\x91#\x1a\xe4\x7ft\xf1Q[\xbc@\x960\xbf8\xf6\
+\xd8\x01\xe8Y\x91\xbe\x81D\xf2|\xafg|!\xaf\x8a\
+\xcfc\x9c4\xcfN\xb1\xe5$[v\x17\xa9\x94d\xfc\
+\xe3\xf1%c\xcf\xbc\xde\xedR2\x851\x1e?K\xe2\
+\xf3\x90\xecRs\x7f2\x09\xe3KR\xd1R\x86\xec\x7f\
+\xb1\x04\x0e\xbb\x97\x98\xcc\x95\xdb\xc39\xd9]\x90\xe3\xdd\
+\xe6R9\x9cd~\xd5\xdd\x86\xc0/\x99r\x90!Q\
+b d\xc10\xff0\xdf0\x9f\xfa\x8a?]\x91\x16\
+\xca\x90\x1f>\xeb\xa2\x00\xfe6\xd5\xb9\x8f\x01.{,\
+j\xc4\x09\xc8\x93Q\xd4\xdf\xd3\x0d\xc0\xdc\xc7%;'\
+'{\xde\xa5\xd4\xc2w\xdfv\xb1\xebS.6~\xe7\
+\x98\xd8s\x8c\xefp\xb1\xebL\x13[\x97\xdd\xbfM\xec\
+\x1c\x1a\x1f\xeab\xd7\x8f\x8f\xf7\x1b\x9bC\xdb\x9d\xe4b\
+\xaf\xd7w\xd1\xfb\xcfId\xa5\xb9\xa4W\xec\xfe\xc1\xe9\
+\xa0\x04S\x94\xee\xaa\xb4\xc7{\x12xW\x02[+I\
+O\x0c\xdfp\xb1s\xfc\xe3.%P;\xbc\xcc\xa5\xd4\
+LO\xdd\xe4R\xda\xfc&\x0a\xb8;\x8a\x83\xd7\x9f\xe6\
+RH\x11\xfbg]*\xf26\x95\xf8D;p2\xce\
+p\xa9\xac\x94\xdb.\x0e\x9f4\xf9D!\xeb\x0bR8\
+\xbaR}<\x93\xa4\x8e741\xbb\xa0\xbb\xd2\xe4*\
+{\xfd-\x17\xfb\xfb=]\xa4'n\xab\xfa\xda?\xe4\
+R\x1c\xc4@(\x81\x90\xa1=\xa5\xc80\xfbK]\xec\
+\xef\x9eu)vv\xb7`\xb7@\xb7@E\xb6\xa8\x12\
+\x98\xe4PB\xa6\xfb\xb2\xaa\xb4\x09\x07\x8e.\x1b\xe8'\
+\xae\xea\x0aF\xe0-\xb8i\xd4\xbf>\xec1X\xe1\xd5\
+\x05#\x120B^L|1II@Rj$R\
+\xbf@\x92\x81\xb8\x81\x04\x94\xd2\x10\xfc\x05\x1cU\x95\x08\
+\xc0\xfd\x90J\x1e\xec\xfe\xfa\xed\x5cl=\xfc\xd3\xa5\xb4\
+\x09\x87\xa3\x22\xe1\x86\xb6\xabJl\x95 \x0a\xa45\xdc\
+u\xe2\xf0\x19\xbe\xe8R!\xd9i\x0f\x0b\xd7\xc4<.\
+\x85l09\xd4GT\xf6\xa2\xec\xb6\xd1\xbc\xa3\xf9=\
+\x91\x91\xdaa\xda>\xedOu)vh\xb0\xfdS\xea\
+\x03i\xa9\xba\xb1\xd1m\x03V\xfe\xa0\x8c\xd3\xfe\x09D\
+\xcb\xe7]*\xfbH\x01\x84T\xba\xb0E\x15\xd8f>\
+@\x962\x1e@\xfe\xf1\xd7\xc4\xe5\x13\x88\xa8\xeb\x5c*\
+;\x8dv\xae\xd8\x15:g&\x1dp\xea\x90\xd3\xa4\xc8\
+\xae\x93\xa1\xb7\x90j\xfb\x0f\xd0\xc1|k\xb5\x80ql\
+h\xbb\x03\xc4\x90\x05\x83\xe2\xe7\xda\x92\x93\xf1\xd3\x1a`\
+\x1c\xa4\x1c\xc4,\xd86\x03\xc3\xdfah\xc1\xdeK\xa4\
+Dm#\xc2\x10'0\xc0\xfb8\xc8p\x80\xb8/\x0c\
+\x176\x14\x11.\x1c\x11\x1cV\xd8\x8b\xd5/\xb6[\xce\
+\xc5&\xf4\xfb.\x15\xb4\x92\x8d\x02\xc9\x1f\x99L\x0c\xdd\
+\xe5\x1bC\x19C\x93\x88\x19\x0e3\xcf\x8d\xa3-\x07\x8b\
+L\x0fP\xf0\xc8\x98\xc3\xc2\x0b2\x80Z\xd2\xafd\x16\
+\xea\x08\xc0`\xc0`\xa8\xe0 Q~\xaf\x8c!\x0a.\
+\x0c\x01\xc6\x81\xf1\xe3sph\x16O\xd5\xe7\xa5\xdd\x05\
+\x5c\x0dj\xc7\x17l\xdf-r@\x1b\xdc\xbbS\xa7\xfe\
+\xd4\x04\x90\xb8\xbf\x17\xab\xd5\xe7>0\xdc[\xe8?\xf7\
+\x8d\xa3\xd5:r\xac\x9f\x86<%\x02Z\x8c?\xd0Q\
+):\xef*\x9b\xfa\xca\x92\xd9\x10t\x90\x03=U\xf0\
+T\xac\xa5|\xee\xe8\xed\xca\x10\xee\xa2}\xb1\x80\xd6\x1f\
+\xdf\x87\xc1\xf6\x85\x0c\x1d\xa2\x16)\x02:\x94x@z\
+B\xdf]\xb1\xe8GFU\xed\x19a_\x0eES\xcf\
+\xd3\xe2/\xd0\x17\x1e\x03\xfai=\xf7\xb3M{H\x1c\
+~\xf6\x17\x01\x14\x22\xd28\x04m[C\x91\x94D\xbb\
+\xc8S\xd5\x86\xe9\xee\xd1=\xa3{\xd2\xba\x98c\xe4\x5c\
+\x09or\x99\xbd\xdfz\xac[\x1c)\xf6I\x09`L\
+/\xe5@\xff\xf0w\xeco\x0crj\xb4q8q\xb4\
+p,p\xe8\x09s\x0f\x86\xde\x00\x00 \x00IDA\
+T4\xf1~\xee\x83\xc0RK*\xf6\xb8\x02\x93@\xe7\
+_\x1e\xd0\xf8\xbc\xdf\x97n\x10\x05C@\xeds`\x8f\
+\xfbg\x9d2_\x7f\xd5:e\xdd\xc2\xc2O{\x18\x22\
+\xbf\xcc+\xc8\x02\xf6\x19m\xfa\x80f\xe3\x80\xf2=\x90\
+3R\xf3\x0f\xa4\x17\x07\x0c\xbd%\x96l\x02.\xa3\x1d\
+\xa4\xb7\xb6\xd2x\xb4\x819JR\xe8\x9e RG\x1b\
+\xf3\xec\x08m\xa0\xbf_]\xaf[\xc7\xb7\xe5j\xa1&\
+\x99\xb6f\xe8'\xc6\xa9t\xbd\xc8\xdf\xc7\xb8\x120F\
+\xaf\xf0w\x9c\x07m\xcd5\xf3\xc9\xf8\xac\x91\xee\xd0\xd7\
+\xcdRi\xdd\xf0}m\x86\xbbm\x7f\xc8<\xb3N\xf8\
+;\xe6\x05\x87\x14\x87\x90\xfb\x05\xe9\xb3\xbdK\x09\xb8\x8f\
+\xf6\x13\xd9(P\xea\xad5?t\x89\x81\xdc\xedM\x99\
+\x84-J\x11T*G\xfb\x1f\x02\xad\xa6]rI\x19\
+\xef\xc7A\x05A!2\xb7p\x18\xc9\xe0*0\x13P\
+zJ\x02\xc9t\xb3/\x19\x07\xf4\x00\x99\x1c\x02\x98@\
+\xfeqXi;\xa8\x80M\x90\xba\x011\xe5\xfe\x14\xe0\
+\x89>\xcd@\xf2\xe5\xe8F\xa6\x032+\xf6\xab \xbb\
+\xd4\xc2G\xa0\x98\xc0?%\x85\xed>\xc7\x8ei\x03F\
+\xb3\x824s:\xc2\x91\x9aO\x0ce\x02=\x9cg-\
+)(\xb5\xb3p\x18\xb0\x1e\xd8\x07p\xed\xa0W\xdb@\
+\x04\xfb\x0c\x12g\x101<\x1f\xe7\x0a}\xb4)\xf9\x22\
+\x80\x00+7\x01\x10\xed\xb3\x80<\xd3}\x85q\xa6;\
+\x06\xa5(\xf4\xdd\x96A\xcc\xdfw\xbfv)dx\xe3\
+\xe5\xc6+\x8c\xedy\xc7\x0f\x8e\x1f\x18\xdb91y\xef\
+\xe4}\x93\xf7\xa5\x9a\xe8\xf4{\xfb\xee\x9c\x89<8\xb3\
+k\x8fN\xcb\xdc\x04\xe3[\xc67\x8fo\x16\xbb\xfd\x0d\
+v\xfd\x8a\x8b]\xe73\x99\xb7r\x88OqI\x1c\x02\
+&\xc5A\xe8\x8ew\xa9J\xe9\xe0\xda\xa0\xdd\x9d\x90p\
+\x09\xaao\xeb\xd8\x9b\x06z\xdb@\xd6m\x7f\x82K\x09\
+\xa8\xb2\x8d\xd3k\xd3KS\x87\x98\x1c\x5c\x8d\x03\x99~\
+\x05d`\xff&\xe3\x0f\xa7B*Ux\x8b]Ov\
+\xa9\x02\x18\xe2\x0c\xe8\xce09\xbd\x90\xf5u'\xba\xd8\
+s>lb\xebu\xbc\x85\x8b\xc8\x0e\xe7H]\x02~\
+\xdf\x99\x1d<\xb9\xae\xf3\xe6\xdb\xeb{\x5c\xec\xf7\x0f\xd8\
+\x88{\x89\xc0\xb6.v\xfd\x8b\x8b\xfd\xfe@\x17\xbb^\
+\xebE\x0bU`c\xc1\xcc\xad\xe0M\x02\xbdM\xa0\x9d\
+\xfdYo\xaa\xdbI\x04\xe2\xef\xce\xeb\x12.\xac\xfe\x93\
+.v\x9d/g\xec\xfb\xbd\xfb}z\xaf\xe1\xdf\xcf\xa5\
+\xd8\xf7\xb1N\x9crq\x8f\xe4\xb8%{:\xa0\xdb\xda\
+\xbf\x89;\xe2q\xb5;|e\xc5\x19\xe1\xa5\x5cn\x0f\
+;\xe3\xc0\xe7U\x1a\xf4\xabJ\x7f\xc2!E`\x0d\x84\
+\x8a\x1c\xb3n+\x97R\xeb\x9f\xba\x04\xdcY\xf6\x99\x87\
+{<\xe0\xd3\xff\xc8\xe4\xe2\xd2\x9dat\x8dKY?\
+\x01\xc9\x96?\xe2\x85\xce^\xeaL\x89\xc8\xd4\xc6.\xf6\
+\xfa>\x17\xbb\x1e\xeeb\x7f\xb7\xbcK\xd5.\x5c\xa5\x1e\
+\xc9A\x9dQ\xb1\xc47\xa4\xc1A\xfa{\x94K\xa57\
+\xc5\x09\x05\xe9bp,a\xaf\x11x\xf7R\x15\xaf5\
+\x7f\xb5Ku\xfe\xb9\xd6\xfdy\x95\x08\xd6\x02\x0fRB\
+\xf44]4\xd4.9\xec|\xf4?v \x09E/\
+\x94\xb8J\xed\x1e}}\xbe\xc2\xc5>f#\x93\x0d\x13\
+\x04\xfeYG\xf6\xf4\xd7f\xc4G\x22\xaf\xfcO)i\
+\x1a>\xe8R\x02=p\xa0\x0d\x97\xe4\x00\x07d\xa1\xf1\
+\x1c\x04\x92E&=\xec\xea\x92\xc6\xfd\x884\xee\xff\xb2\
+\xe7\xc9\xf6w\x0eps^\xd1u\xe9R\xf9}\xb4\xe3\
+\xbdJHw!\x0b\x13G\xc5q\xa5{\x8f3\x04$\
+\x8e\x00\xad\xaf\xf0\xf3\x18\x0fqP0\x8e\xfd\xbb]*\
+\x04\xac\xbahEW\x088\x8a@\xb8\x89\xec=\xba\x1c\
+\x80l\xa0\x04\x85\x80\xec\xaf]JI\xd0\x08\xf2\x0f\xfc\
+[!?\x83\x9bC\x08\x8a\xc9 \x13\xa2f^\x10\xbb\
+D\xf6pF\x951\x80uY%\x02\xfdq.\x05b\
+\x17,\xb1\xaa\x89\x87\xe4\x09R\x93\xc8\xc0\xb4\x90H2\
+\x0e\x1c\xac\x05r\x9d\x1d6&\xb6\x85\xca\x11p\x00r\
+\x09yW[\xbb\xcd\x06@c\xc3\xfe\x0c\x84R\x06\xef\
+p\xd7p\xe7pge`\xab\x8d\xd0\xc4O\x92\x04T\
+.\xfa\xea\x12iW\xbb\x87\xd92F<'\x0e$\xbf\
+\xc7\x80ac\xe3\x80p\x9d\xbb!\xe5\x22\x03\xc6}a\
+\xa0R\xe3A\xed%\x06\x16\x99b\x22}d\x5c08\
+\xdbZg\xc6\x1dC\x81\xef%\x90\x81\xa1\x8c\xa3\x0dR\
+\x83@\x0d\xf3H\x8d\xb7j\xe9\xc2\x00!\xa3\xa8\xda\xbe\
+\xd9H\xe8\x08\x80\xbcX\xd7\x05\xe6\x0f\xc7\xfc\xc5H\xff\
+\xda\x8c6\x8e\x1f\xcf\xfd/\x05\x8c\xe8\xe7\x8ea\xc5\xe7\
+\xe38\xe1\x003.(\x08\x9e\xf7ne<\x99WH\
+\xb2Dv4\xf1{\x19P8\xcc\x8f5\x90N2\xa6\
++\xc8!\xdcD\x19(J\x0cFz~\x14;\x99Z\
+2\xf8d\xec\xa8\xf1U\xbfh\xa0H\xc3\xfa.U\x06\
+\x17\x12(\x027\xecsA\x12CA0\xef%\x00\x90\
+Yd\xff'\x04\xcd\xe3M\x7fx\x0cQ\x02(\xac?\
+\x0e\x10\xa0\xbbwj_a\xf8\xd3\x0da\xb2A>0\
+?d\xe2\xc5\x86<!(\xe2\x88\xf9\x01\xc2\xce>#\
+\x13\xda\x92l\xcd7\x1dz\x16\xa4\x85\x9d\x14\xe3\xda\xca\
+<c\xe8\xb3\x0e\xe7\x0ch~~N\x9e\x17\x87\x8f}\
+\x8cC\xca\xfa\xc0 G\xef\x94n\x08\xf9\xbe\x96\xd5:\
+\x01\xea\xce}\xb2\xce\xdaR\x18\xf6;\xeb\x1e\x88\x1f\x91\
+\x5cJ\x1eh\x17\xb6O\xa2K*\x8e>\x99U\x02\xa5\
+-\xd7\xc9DS\xdbO`ba=\x0f\xcf5\x7f\x90\
+\xf0e\x07\x16=\xcex\xf0\x9c\xcc#\x88'\xa0n\xd4\
+\xbc\xb1\xdf:A\xeeW\xd5\xe7\x13\x18i \xfcaX\
+`\x888\xf4\xf7\x9ej\x9eq\xb0 5# \x86\xbe\
+\xc4\xd1\x87]\x996n\xd7&)dy8x\x04\x9c\
+q\xd4\xd1\x8f v\x166Gn\xe1*P\xda\xdcG\
+\xcc\xe3\x7f\x14\x00\xa0t\x86\xf1[P\xf3\xcd\x0f\xfa\x89\
+u\xdc\xd6\x90\xf3\xb9\x9c\x87\xb4u\xc4\x01\x03\xe9#\x88\
+~\x8c\xdfV\xca\xe4\xbeYl\xed\xbb\xaa6\x9c\x8c\xb7\
+\xf4\xe6h\x17e(\xc9$\xf0\xfd\x94\xc4\x10\x88\x159\
+R8\xfe\x90\x19\x12\xa0\xf8\xa5K\xe5h3n<\x1f\
+\xfb\x81y\xa0F\xdfI\xc6\xbeZ\xd8\xe6c\x1f\x13X\
+\x84\xe3A\xf3\x14\xed\xe9\xbe\xecb\xaf\xcfv\xa9\x12\x11\
+\x04\xa8pT\x81\x04S\x1b,\xfdI\x066\x0cT\xd6\
+3\xfb\x85\xf9\x07\x19 h\xbc\x17\x16\xa5\xd2\x22 \xb2\
+mw\x8f\xb6t\x0e\xae\x16\xb5\xad\x0c\xc7\x9e\x1f\xf4m\
+K\x12\xc8<\xa0\x8f\xf8\x1e\xba\xf7\x00\x91\x17\x947\xf6\
+5\xe3Nw\x18!.\xd8G\x04\xa8\xa3v\x9b\xf9T\
+;\xc5\xe8k\x0d\x12\x80\xc0\x14\xe7+\x995\xd6\x19\xf7\
+#\xfd\x1c\x19?A\x8d\xbb7\xb8TPw'=\xdb\
+3\x91f\xa5\xda\xea\xf1\xb1.\xf6\xfa\xe0\xee\x90\xee\x90\
+\xd2\xben\xf4\x97\x1c\x10\x9e\xd81\xb7\xa5#\xa1\x91j\
+\xea\xcd\xf1\x1ao\xe7\xa2\x1av\xb3;\xc7\x9b\x9a\xd8x\
+\x8d\xdf\xe3b\xd7\xde\xc5~\x7f\xb7\x8b\xbd?\x19\xac\x95\
+\xa3+\xd2\xbb\xd0\xb3Z\xff\x90\xd5\xc5\xf9\xe5\xe6\xfb\xb7\
+R\x00\xe24\x87\xfe\x8e\xcfsI\xc8\x05\x1333W\
+s)\x01\x06\x1cZ2\xcd\x11\xb0\x874Q]\x01R\
+\xb3\xe6\xbf%\xc76\xb5\xdf\x8d\xda\xfc-\x5c\xaaL\xff\
+\x1f\x5c\xec\xfa%\x97\x0a\xe1\xf06\x13\xbb\xdf\xee \x13\
+\x9b\xbf\xf1\xa7]J\x09\x84\x03\xfc\x1d\xe2\x9f\xb8\x07~\
+#D\x80}\xefx\xdd\xf1:\xe3u\x0a\xa9\xa0}\xfa\
+m\x9d\xcd\xd3\xf8\xfe\xf1\xbdco\x1f\xd8\xb9\x14\x88:\
+\xdfO\x02,\xda\xc4\xb1\xff\xc5\xc5@\x80\x08;\xa3\xbb\
+\xce\xc5\x96M\x9a\x08\xbb\x9e\x95I\xee\xa6\xaet\xb1\xe7\
+\xbe\xc8\xa5\xb4%3\xdd\x90\xed8\x1c\x14\x91\xc6%d\
+\xde*\xe2\x98\xb8\xb5\xe2\xb8\xf00\xdd?*\xbduR\
+j\xb0Z \xee8\xce\xca\x88\xe2\xe8F\xc9\xc8\x85I\
+Jf\xd5\xc3\xaa^z\xb0b\xe6,\x18\xdd\xed)\x09\
+{\xfdM\x17\xbb\xff\x83\x5c\xec\xfe/p\xb1\xff\xffs\
+n/\x19\xa4zJ0R\xfa2|\xcd\xc5\xde\xf7\x0a\
+\x17{\xdf\xeb]\xec\xf5J.\x15\x0b\xfd\xef\x5c\x12\x99\
+\xeb\xa1\xee\x7fu\xbbuo\xef\xde\x96X\xdd7rV\
+w\xc8\x12\xc3\xf1\xa6\x14\x10;\x8e\xf5K\xbbb>\x0f\
+\xbb\x9d@4z\x18\xbf\x88q\xf2\xc0\xcb\xfb\xaa\xcf\xa3\
+\x14h\xaa\xe9\xfe\x83\xbd\x8f\xbd\xf7\xc4t;0\xe1\x80\
+\x9e\xccz9\x9d\xbb \x10\xfe\xcf\xa5 m \x9b\x8d\
+\x80\xa82\xe2\xfd\xab\xfa\xcd\xfbWi\xfe7\xd3s\xee\
+\x5ce\xc4\x95\xc1\xef\x7f\xd3\xff\xb6\xffM:g^\x97\
+\xce\x99\x0d2\xc7\x01\xe4\x8c\xdd\xee\xdd;\x1d\xb1\x93\xec\
+\xb6\xa7K\x80\xa5?\xc7%\xb5u|\xc4\xdb:\x0e+\
+9]z\xc5%B\xbb>\x05\x06\xb9\xefaM\x97j\
+\x5c\xbe\x90\xc9-'N\xcb\xf3\x9eJ\x8av\xab\xba\x04\
+a\x071\xee\xe8m\xcd\x1b%.\xe8\x05Jb\xa2\xb4\
+\xe9\x89\x1c@\x0b\x92>\xec;\x12\x1d[\xba\x94R\x9c\
+a\x19\x97\xca\x9f\x12)\xed\xd4).\x95\x1dO C\
+\xdd]\xe2\xdcS\xa9\xc2d\x90\xd5apbp\x91\xf1\
+W\x86\x9f\xda\xb2\xa8)!\x02\xff\x1e\x97r\x03\xc1\xe6\
+\xba\xa2K\xe5\xe8\xb5l\xbcs6\x19\x1a\x0cm\x1cu\
+\x0c\xe2\x17#ik\xc9\x03q(8\xd0[\xd2\xbd\xd2\
+\xf6)\xf7S\x17ti\xe2\xa7b+f\xe3\xb0\xe1\x16\
+\x0dhlVP\x18F\x22\xb7 3\x96\xda\xa2lW\
+\xb1\x02\xbb9\xb0xe\x10\xf0|\x18\xa6\xdc?\x19E\
+2\x8e\x8c\x17\xdd\x05 sh\xb9\x100T0\x00`\
+\x09o\xdb\x88\x01\x19\x144+\xfa/\xd3\xa6F\x11\xea\
+\x98g\x0c\x122^8\x86-y\x1eW\xe6\x11\xb2/\
+\xfa\xa7\xb7%\x04\x18\xb2|.\x9f\xc7\xfd\xae\xd6@\x98\
+[.\x006\x16\x0b\x97\xf1h\xd7C\xd3\xb79\x22\x9e\
+\x9b*\xe3\xd1\x92\x1c\xa9\xcf}@\xc9Z\x87\x86\xef'\
+\xa3\xb6\x8dj\xf3\x05\xbd\x1e\xdd\xe2R \x861\xae\x9b\
+\xa8v\x96\xe7d\x9dr\xff|\x0f\xd0(j\xb3yn\
+\xc6\x8f\xf1!`\x04\x02\x84\xfd$\xc3\x9a\x8c\x05\xac\xe5\
+\xc3\x15\x19\x22\xd6\xff\xd1\xa5b\xd1W\x0d\x13\x90\xd6\xd9\
+ \xf5\xcc\xff\xac\xa6\xf6\x9f}\xc9x3\xef\xa5\xad`\
+v(\x19_j(\x15\xd9\x8c\x03\x87\xfd\xf5\xcf\x86-\
+\x9f\x83\x05C\x1b(3\x19N2g\x1b\xeb\xa0\xc2\xc1\
+l\xdb\xe7\xb1\xefYg\xb0\xfa\x83\xb4a\x5c\x17R\xa0\
+\x89\xfd\xd7r9\x90\xb1\x9fz\x11\xbd\xc4\xfb(\x89\xf1\
+\xcc\xc4\xb2\xd5\xba\x83J\x02\x08/\xddS\xd8\x0f\xb4\x13\
+\x5c\xb8\xa9\x09\x9e\xaf\xe1*\xe1\xe0\x06Q\xa1\xcf\x0f\x12\
+P\xc6\x9f@\xdf\x0eb\xc9]Y\x01\xaf;\x04\xc9\x06\
+:\xc6\xdf\xf3\xb9 \x14\xf8\xbeU\xb5\x0f[\x87d\xe1\
+x\xdfth3\xefc\xffQz\xb4\x9cK\xe5\xd8\xe2\
+0\xb0n\x97\x94\xc34\xd1\x8c'\x07\x1e\x8e?\xf3F\
+\xa0S\xa4Y\x91qn\xba\xb4DF\x17G\xe8W\xaa\
+\x81T\x89V\xb0\x93\x9f\x9edb8\xc1\xa5\xd4\xeaE\
+)\x08\xfb\x16=J[+H\xc7v\xd0\xfa\x81\x8c\xa8\
+\x04J\xb2\xbed\x1f\x10\x00\xe4\xff\xdb\xcc8\xe7\x02\xeb\
+\x022\x9f\x0d\xd4\xa5\x81\xf5F\x00\xe7\x12\x05\xa21l\
+\xc5B\x1d\xed\xef\xd6\xc9\xf3\x90\x02\x15\x8b\xa4s-\x19\
+\xc2\xd1\xf7\x1dv\xfd\xaf\xb8T\xfa\x06\xf6j\xda\x1b6\
+d\x8c\x91\xd9\x10\x99\x1b}\xe8c\xddQ\x22\xa4\xccW\
+ -T3\x1a\x1c\x19J$\x00\x91mI\xe9\xe2\x1c\
+@_\xe2\x00\xb7\xe3I@\x8c}\xder\x0c\xb1\xde\x19\
+7\xf4\x83\xf4\x0c\x81\x83\xe0\x08Q\x005\xda}\xe2\x00\
+cX\xb1\x0e\x99'\xcekJk \xb9c\xff\xb3\x1f\
+(\x85\x223\xc89\xc3>g\xbd\xb7\x01\x0c\xf6Iq\
+\xc4s@l[\x9d? 1\x08\xd0|9I\xb1/\
+(\xc5@_\x83\x00A\x8f|$I\xe1\x8a\xa1\xcb\x02\
+$\x9ar\xc4F{\xbaT\xe3\x04\xb2\x87uI\xcd0\
+\xed,\xe1\x0c\x10\xf9\x22\x1c\x03a_\x12\x00&PL\
+\x80\x90nH\x07\x9b;\xe0\x19\xf4\x1bF\xd7\x8fn\xa8\
+\xda\xe6\xfd\xd3\xc5\xae\xeft\xb1\xe5t\xaf\x1c\xd6\xed]\
+\xec\xff\x17w\xb1\xeb\xeb\x5c\xaa\x0c\xfa\xe7]J \xa4\
+\xfb\x8eK\xb1c\xa9\x91'\xc05\xbc\xd1\xc5\xae\x9fw\
+Q\xa9\xc0\xb7JW\x00\x02\xa7\xd4\xdc{^\xdc3\xe3\
+N\xd5\xe7d}S\x9b\xb9\xd82\x5c\xd1E\x99\xc7\xb7\
+&\x0e\x92wx\xc6\x95\x00J\xea\x22pIu.\x00\
+\xb1\xa7\xe6[\xa56\xc9Q\xd8\xabd\xaa\xbb\xf5M<\
+\xa3\xff\x9cK\xf5\xfc\xfec\xfb\xab{\xb5\xc9\x96)\xa0\
+b\x92\xba\x00\x5c9\xbe\xb2\x04L\xc6\x9b\x8d_5\xb6\
+y\x1d\x7ft\xfc\xb1\xf1\xc7R\xad\xfa\xd5c\xe7\x0ex\
+\xa5\x8b]\xaf\xd6ko\xbf\xf7\xd5\xd2m\x81\xf5\x9f2\
+\xdd\x1f\x91=yz\x15\xe0\x82\xdd_z\xa5\xbf\xc0\xc5\
+\xee\xe3#.6.\x17M]8uaY\x17S\x9f\
+v\xa9\x02\x98\x0a@\x0d\xff\xcf%!Z/w\x84e\
+*={\xba8\x80\xd8\xc7Q\x82q\xa8\x8b\xfd~5\
+\x93\xd5K\xa6yx\xab\x8b\xc8\xd5\x9e\xadJU\xe00\
+ 3\xaaq\xef/31{\xa9\xdb\xd9d\x97\xc2\xa9\
+\x94\xb8\x0c\x9c\x8d\xfe\x13.v\xdf+\xb8\xd8\xeb\xbf\xba\
+T\xed\xfb\xd8\xaf8\xbe\xca\x0cGI\xc4\xaa.v\xed\
+\x5c\xec\xba\xa2\x8b]\xd7tQ\x00|\xb9\x82\xe4\xea\xb6\
+q\xb1\xdf\x7f\xc1\xc5\xae?u\xa98\xd987\x94\xe8\
+\x0b\xb28\xda\xc0\xe1'4d\xe8\xf1\xb3A*\x0e+\
+mY\xb5/\xa3F\x9d\x12!\xf4i\xd3n=>\x9f\
+\x1f\xb3\xdaR\xc9\xae}\x8a\x93`\x06'\x0c\xe7\x82\xc8\
+\xe6\x12\x82e\xee\x120\x0e\x92C\x05\x96\xa6\xde\xe5b\
+\xaf?j\xeb\xcc\xf6c\xf7\x80\x8b\xdd\xfe)&vn\
+\xf7\x7fr\x11\xf7\xd4\xac\xd2&\xaf{\xb9KBv\x5c\
+\xe9\xc8\x0e\xa0\xf8\xe1\x7f\x1dgV\xf6qi\xbe^\xea\
+\xf3\xd5?\xdf?\xd7?\x97\x90\xb3\x09\x01e\xa7Q\xb2\
+\x0b\x86\xe3e\x0f\xc8\xbe\x81\xe3a\xe2\x80\x89\xfdM\xbc\
+]en\xbb\xae\x80r\x94*k\xfcFO\xaa\x94G\
+]\xf3\xba\xaf\xbaT\xfb[\xa5U\xc3\xcb]\xd4^\xf3\
+\x91\x120\x0cd\x03$\xeb\x90\xcb\xbf\xde\xa5\x94\x0c\x10\
+\x10\x8dR\x08\xb8\x1e\x14x\x02\x01\xcfz#p\x10\xed\
+\x14\xef\x97\x1f!\x7fk\x92\x8d\xca\x82\x07z\xcb\x86K\
+%\x02\xb7W\x07\xbf\xa0\x08\x01\x11\x84t\xe6G.j\
+'\xf8\xb9\xca \xc7\xf1/\x06`>\x90q\x84X\xa0\
+d\x0a\xda\xfe\xe2m\xed]\xcb\x9a\x8c!C\xbfa!\
+\x0e \x0b\x01Z\x1c\xed\xb0 \x97\xe1 \xfb\x81jd\
+Z2 \x0evX\xd3\x81Z~Rl\xa5\xb0\x9es\
+`\xaa\xfbA\x04D`\xddT\xe6*\x0c\x0c\x0c\x16\x9e\
+\x93\x83z\xb1\xc8\x14fvj!\x14\xbcwA\xea^\
+\xc08\xb1\x119P\x89P\xd1n\x09E\x00k\xa4 \
+\xd7@\x86\x9c[=\xb1\xabC\xce\xc3x2\x1e\xa5\xa6\
+:\xff\x90\x99g\xde\x80\x1c\xc3j\x8fACD\xad%\
+\xe5\x22\xe3\xc8\xf3\xb6\x19N\xc6C\x7f\x1f\xb5\x92M\xff\
+e\x1c\xaa\x80B2\x0e\x81\xc5\xd3\xb5pJL\xef\xf2\
+\x00\x14\x1fGWP\xc7\xd1{]\xd2:\xcf\x11W \
+\x88@\xf6w\xce\x90\xd9\xd1_\x5c\x0a\xf41\xe6\xf3\xf0\
+\xdc\xff\x16\xf2\x9c0\xa4pP\xc9\xb0b\xb0bp\xab\
+V2H\x1b\x87\x08\x14\xe5\xe7\x12\xfbh\xf4m\xe5\xfd\
+\x18\xc4\x8c\xb3\x9e\xa7{\xa5Ku@=\x9f9;\x82\
+\xbc\x13\xf2\xbd#u\xbf_R&\x8d\x0c=\x99\xac\x99\
+\x0ax\xfdW\xdfC\xe6\x9fu\xc0}\xb4\xeb\xe5\x9fB\
+R\xc8\xe0\x85\xeb\x82\x8c_\x05\x99\xce\xf3\xcak\xd0z\
+d\xfa0\xd0Uk\x15\x7f\x87\xe3O\x86\x0c}B`\
+\x0fC\x92\x80\x01\xefk!\xd8\x94\x5c\xe0\x10\xc3\xe9\xc0\
+\xf3\xad\xd4\xd4|\x13\x00l \xdd ,\xc2@F\xcf\
+\xe1\xa8C\xe6\x03\xcb:\x8e5\xeb\x9dq\xe4\xa0\xc2A\
+d\xbd\xb0O\xe04\x99h\xc8\xbf\xb8\x1f\xde\xcf8.\
+\x22d\x07\x11z2\x16\x04\xea\xe0 ! \xd2\xe8\x9d\
+p|\xda\x1ae\x10> G\xb8\xff\x12P\xc8\xeb\x97\
+\xdan\x9078N-\xa7\x08\xdf\xdb\x06\x16\xb9\x82\x18\
+`]\xca\x81#\x13\x1b\x19}\x02\x088:d2\x09\
+,\x01\x85\xfcV\x86\xe4Q+\x18\x8e\x17\x90A\x05\x5c\
+\xc9\xe8\x85\x01\x15H\x80\xcc\xd6;1S\x90x\xd6\x0f\
+\xeb\x92\xf9m\xfb\xcb\xb7\xfa\xae\xb4{\xcd\xe7\x0c\x9c\x00\
+\x8c+\xa5/\x8c\xd7}\x82\xca\xc3!B\x06]H\xbd\
+p\xac\x81\x86\xde\x9eko\xbd\x89\x9a\xb7Q\xc3a\x8c\
+\x1f\x1cK\xd61\xb5\xca\xb4A\x02\xe1\xa0k\x04\x18\xbd\
+6\xd8\x03/\xfbg\x83(\xd6;\x81H\xda\xce\xa2\xb7\
+\x09\x00\xa1\xf79\xafT\x93:\x9c\xecR\x05X\x09 \
+\xd3\xee\x89\xd2;\x02\x11\xad\xc3N\xe0\x92\x008\xdf\xc3\
+O\xddm\xa6&\x7fe]\x80\xb0\x22\xd0\xc0z\xe5\xbc\
+`?2o\x0d\xf7\x03\x19\xe3\xd1\x96.\x95^\xc6\xc1\
+\xa5\xa4\x00\xbb\x86\xd7\xac+8\x12\xe4\xf8\x04$\x9ay\
+\x87\xd3bF\x86\x94C\xae\x1cv\x89\xce\xf9\xa8\xfdW\
+\xe2%\x10V\xecG\xf4\x9f\x10\x9c\xb1\xff9\x0f8/\
+9\xaf8\xbf\xf8\x1e\xe6\x81\xf5\x00\x12BvQ\x8c/\
+\x01[\x91\x11w\x1b\xb8\xd8\xeb?\xb9T\x089\xda\x13\
+*\x83\xd5_\xd5_\xd9_\x99X\xb5S;i\x0c\xec\
+n_\x97\x921\xeb^\xef\xa2\xef_\xbej\x83\x09\x02\
+\x0d}\xc6\xba$@\xc1z\x04zN@\x5c\xfa;e\
+\xc6\x8e\xad \xb8\xf3'\xccN\x0e\x80\x98}\xd3\x7f\xc3\
+\xc4\xec\xa7\xfe\xbb.U\xed\xae\xec\x90\xc9\xf4c\xc3p\
+\x8dK\xb1#\xa7\xd60YS\x01\xc8KJ\xc6;\xba\
+i\x894.\xf4\x15\x01+\xf4\x868\xa4(U#\x81\
+\xd3\xad\xe3\x22(\xb5\xe9\xeb\xeeH\x93#t\xfe\x9bA\
+?\xfe\xd2\xf8\xcbc{\x8e\xf1\x9c.v\x7f\xfb\xb9T\
+\x8e\xfd\x9b\xc6o\x1c\xdbz\x19\x1f2>x|\xb0\xbd\
+\xef\x98\xee\x8b\x9d\xe9\xc3\xc9\xd7\xbb\xd8\xf5\x13.\xc5\x81\
+\xa7\xa4\xa1\xbf\xc1\xa5*!\xc2Q~\x97\x8b\xfd\xfe\x08\
+\x17\xbb\xfe\xd3\xa58\x1c\x04\xc8\xcd+\xeb\xa6\xba\xca\x7f\
+\xd0:\xeb\xf7r)\x01\x1a\x12j\xc3\xa9\xc3\xd7\x87\xaf\
+\x17\xc4-\xa5\x81\x81p\x84\x8c\x8d\xc4\x82\x17\x8c|\xba\
+\x82\x8a\xc3\xfe\x0e\x97\x84\x12.p\x12\xf4W\xb8\x14\x04\
+\xc6\xd4~.e\xfc#`\xec\x14\xab{\x15\xd24j\
+\xeb\xe9g\x1f\x81\x00\xce\xc3#\xb2}e\xd6j.\x89\
+\xd8\xb9\xdf\xa5\xb7\xf1\xea?\xda\xef\xdb\xef[\x1c\xb7~\
+\x1b\x17\x05P\xe6N%\xc7\x97\xa6\xd2\x8a\xf3G\xe7%\
+rE\xe9\xdbDR\xb7jq\xa4\xfb\xb5\x5c\xaasV\
+\xf75\x1bb\x9a\x04h\x1d\x00\x18*;\x08\x0e\xa4\xdb\
+\xd5]C\x89& \xf3 W\xe2s[\xff\x83\xef\x81\
+\xfc\x95\x92i\xcek\xd8\xe6\xc9h\xbb\xd7\xf4\xc9*\xa1\
+\xe2i\xd7+\x12w\xc2-^J\x0b\xa7B\xff\xfb\xfe\
+\xb6\xfe\xf7\xd2O\xbfJ\xa5\x18\xf3{)\xc6 \xfd2\
+q_\xee\x22\xc1<\x80\xd0\x18->Z\xc2\x03\x0a\xdd\
+\x1a.)\xd0\xd3\xa5@\x0f\x01\xcf\xb9R\x7f\xa3\x89\xe1\
+\xe3.\x15\x87\x90\xfc\x16\x12\x17\xa3o\xab\x14\xea\x8a\xac\
+G#\xa0D\xdbJ!\xdf\xa3\x9d%\xdc\x02\xaft\xb1\
+\xeb\xd8\xa5\xea\xb6\x22\xae\x96\xee1\x17O$\xb8\xd8u\
+k\x97\xaa\x14@\xc8\xfa\xf8>\xb5'\x8c\xd2i\x05\xbc\
+\x08\xb0E\x00\x9dR-\x05\x82 _\xecNu\xb1\xbf\
+\x7f\xdc\xc5\xae\xefs\xb1\xeb\xfd.\x051:IM\x7f\
+\xca\xd3\xfdA\x07\xed\xda\x85\xe4\x0e\xd6T\x1c\x11ws\
+\xdc\xd1\x19\x0ep\xa9\x0c\x1a\xa0\x06@\xc0\xc9(\xb5\xed\
+\x9b0\x00\xf9\x7f\x0cY\x0c\xedv\x81\xb5$e\x18\x88\
+d\x020$Y\xa8\xd4\xb4\x11!\x7f\x9f \xfa@\x87\
+1\xc8\xc9\xf4o\xd0\xb4\x8f*\x8en>\xf0\x80\xca\x01\
+\xc1\x86-\x97\xfe\x97\x9d\x0e@\x0cf\xee\x0f\x85\x8e\xa3\
+\x04\xb4\x91\x0d\xd0\xb6\xbf\xc3\x90'\x13B \x006w\
+E\xde\x82l\x83\x1aJ\xa0P\xf4]\xe6\x8a!\x0a\xa9\
+\x0f\xed\x02\x059!#\x1d\x10N\x0cY\xeeS\xcfA\
+\xdf\xca\xe0\x1a\xe0>\x19o\x0c\x5c\x0c\x1b\x0c\x1d\x02\x00\
+\x0480\x90p\x18Z\x92$\x0c\x0b\x0c\x90\x06\xb2\x1c\
+m\x9dd`Q\xcbE\x0dW\xcco\xe1\xa0\x98\x1ex\
+`\x5cqp0\xfc \x89\xa2\xdd\x15\x86\x03\x8aR\x1b\
+4jh\xbf%\x83Xl\xca\x13o\x14I\x14\x9f\x8f\
+C\x82CE\xc0D\x19\xcc\x80rA\xa2\x09B\x05\xc5\
+\xf9\xdf\xa6mbK\x02\x89\x81\x09\xc4\x9d@\x87\xda\xed\
+\x8d\x9e\x15\xcb9\x06\xef\xce\xfa>\x22\x7f\xd7)\x92\x0c\
+\x82\x84\xb6'\xa5Ow\x1e/J\x12\xc8\xfc\x94Z\xf1\
+<\xae\xdc/\x90'\x1cr\xf4\x81\xfe~\xb4\xb6H#\
+/\x16)\x0d\x81\xb6g\xb4\x7f\xe1V\xe0\xa0\x80c\x83\
+}\xc8\xe7\x13\x98#\xd0\xb7\xaeJx0\x5cY\xbf\x18\
+\xea\x1cX\xada\x05\xb4\x9f\xdf\xcf\xdb\x90L\x82\x1c!\
+\xc3\xc78\xa2\x9f0\xa8qpX\xc7d\x84\x19\x07\xee\
+\xb7-\xe1i2\x89\xb1\x7fp\xb0\xe1\x0c\x81\x0c\xecW\
+\xb9\xedY\xdcw\xc9\x94N\xaf=&\x93\xca\xbe\x84|\
+j\x0b\xad; \xfc\xb0\xe4s? o\xd0_d\xe6\
+\xd8\x8f\xadC\x044\xb8E^\xb0N\x19\x1f\x9e\x13G\
+\x9e\xd7\xb0\xcc\xe3\xf0\xb2\x8e\xd0\x1b|\x1f\xfb\x93\xf7\x13\
+\xa0!0\x07\x19\xa9H\x9e\x220 dK\x94pi\
+\x1c\xcc-N%\x02\xb0\xdb\x0foq\xa9\x02\xde\x1f\xcb\
+m~\xc2\x90\xc1\x80\xc2\xa1\xa0T\xe8\xd1\xa6}-\xeb\
+\x85v\x84\xba\xcfh\xe74\xa7\xf4S\xe9\x12\x92\x03\x07\
+@_\xd13<'\xeb\x01\x03\x8f+\xeb\x90\xf5F&\
+\x06h?\xe4\x86\xec\xef\x96\x14\x92\x92\x89\xf5]*=\
+L&\x1f\x07\x8f\xb6Ep\xc8P\xf3\xaa\x0ce|.\
+W\xf4\x14\xfb\x10\xfd\xa0\x9a\xd4\xd8\xef\xcc+\xaf1\xcc\
+A\xbc\x894,J3p\xec\x80\xf4\x02\xcdf_<\
+\xe0R\x05 x\x1fvC\x13`\x8c\x80M\xc3I\x12\
+\xfb\xba\x81\xb6\xce\x96h\xc0\x0e\xe1|\x84\xd3D%\x0c\
+QK\xce~\xe0\xef[\x04\x03\xeb\x1aD\x05\x01'j\
+\xef\x99\xafF\x1f\xc5:D\x9f\x11H\x11\x046\xb8b\
+>\xe0b\xd79r\xe2#\xd5P\xff\xb7b\xfb\xa66\
+\x95s\xaa\xe9\x9e\x13z\x8f\xfe\xe9*\x85\x08\x12HH\
+\xd7\x18ou\x1b\xa2\x14\x89\xe5\xc0\xfe\x18}\xce\xa5d\
+\xea\xa2;\x84\xec0\x1c\xbc\xfe\xf4\xfe\x8c\xfe\x8cT\x1b\
+\x9f~\x1f,\xf2*\xed\x012\x9b\x02\xe7\x97T\xe4f\
+\xe8\x1d\x91\x9a\x05'\x8eX\xd3\xe9\xfa\x81\x03M\xf7\x96\
+\xe8&\xa1\xc4\xc9\xe8_.e\x7f\xf5w\xb8\xd82\xf8\
+\x8d\x89\xdd\xcf\xack\x5c*\xc3\x9d\xf3M\x81\xaf\x94p\
+\xb3\xf3d\xfc\x88\x8b\xce\x1b;\xb7\xa6\xd2O!-\x8c\
+n>\x9c?p3P\x1aFb\x0dD\x93?\xe5\xf9\
+Um\xbe\x90\x19\x89\xdbi\x0f\xfb\xde\xd3L\x1c\x92\xfc\
+\xa9\xee \xcf\xfcwou\xb1\xfb\xd8\xdcE]\x01\x16\
+Mdw\x1b8\xd9\xdd\xe4\x07\x5c\xec\xf5\xf3.v]\
+\xd9\xc5\xae7\xb9\xd8\xef\x7f\xe9\xa2\x12\x8e7\xca\xe1\xdf\
+Um??\xa8\x80\xd0\xdbJ\xe6\x9e\x9a\xe6\xfei\x97\
+\xf2X\xe6\xf0\x9a\xd8\xf3o\xe4R!\xaedo\x0d\xdf\
+u\xb1\xef\xd9\xd0\xa5j\x87\xf6U\x17{\xff[\x5c\xd2\
+y\xf82?\x0fG\x0f\x8e\x1e\x1ay\x00\xf8R\x93\x9f\
+\x08\xc2\xfe\xdeJ\xcf\xa0\xaf9\xa7p\x8c\xc5\xf9\x01\xa4\
+\x9f\xb6\x8dm\xc2\xb1\xdf\xde\xa5B\x9e\xa4\x1f\x95\xb8|\
+\xd9^?cbz\xa5\xdf\xc4\xa5\xca\xd0\x1e\x90\xbb\x0b\
+\xf4\x1f\xea\xf7N}\xeb\xe10\x92\xbe\x1c\xbe\x97\x03\xb4\
+\xfd;\xfbw\xf4^{\x7f\xb8\x8b2\xbd\x9e \x9c\xc3\
+\xc5\xae{\xb8\xccN\x82NiH$rT\xc2\xd6/\
+\xebR\x91|c\xff\xa0\xaf8\x9f\xf0G\xf8\x7f^3\
+Q\xd8\xdfBf\xe1p\x82\x94\x0b}\x86\xdf\xc3\xb9\x83\
+\xff\xa4v\xe4\x90\x04F\xd7\x02\xb8\x08|\x16~$\xae\
+\x9e\xf3J\xa00\xf4\xd1:\x89&9\xbe\xbf\xdf\xb1\xdf\
+\xa1\xb7u?u\xb2K\xe1\xb2\x9a8kXwX7\
+\xed\xeb\xb5\x9d$1H&O\x18\x8e\x1b\x8eK\xa5>\
+\x89c\xc3\xc3m)\xe0&\xce\x8c\xd1N*\xd1\x11\x87\
+C\x0a\x98\xd9\xba\x9d\xfa\xca\xd4\x89S'Vd{$\
+\x9cH0\x92x\xc3>\x85\xec]\xe71\x01\x81@\x04\
+,\xe7R\x02\x01Q\xb2I\xfbG\xb9A\xc3\xc1.\x15\
+\x22\x8b\x92m\xce'\xceaJ\xc6H,h\xdf\x04\xb2\
+\x80\xf3\x81R[!\xcc\x08\xc0Q*\xdc\xdd\xe9R\xda\
+\x16\x8e\xfe\xe7R\x12\xc3\x93a\xf8\xb9\xd9\xba\x82\x0e\xc4\
+\x99U\xbf^E\x1e\xa8\x95\x00\xaa\x10\x90f\x22\xb1\xfc\
+\xccj \xd9\x1c\x84\xdc0\x86\x00\x0f\x86a\xc3\x86\xe4\
+\x80\x03\x22\x8c\x82o#\xdam-8\x9f\xc3\xf7\x11h\
+ \xa3A;\x07\x19@\xb1@\x95A\x1f}M\xed\x82\
+ppq\xc4\x94I\xaf\xda+\xe5\x88\x92\x1cmj\x96\
+\xcc\x09\xdcQ,\xce\xd9\xc0\xe6\xe0nkE\xa3\xf1\xaa\
+NJ\xfe\x9f\x03\x19G\x82\xf1\x02\x02N\xa6H\x91\xc9\
+ I\x11Dmx\x9d\x8b Q\xabU\x0e\x0a\xe3\xe8\
+\x05\x0a{T\x5c\x06\x8aD\x8e\xfe\xcf\xa5\xaa\xe1c\x1c\
+q\xfc8\xc8iO\x07\xf9\x13\x10\x18\xc6\x1f\xa8w\x0b\
+!-}\xe4\xb3a\xc6\xfcq\x80\xe2\xf0\xbcH?\xf7\
+0\xfc\xf9\x7f)\xfc\x80\xac\xe2X\xb0\x810\xdcp(\
+\xb8\x12\xf1\x84\xd4\xac\xf4{\xcf\xcf+\x88}\xb4\x19#\
+CF\x86\x85\x0c\x0d\xec\xb8b=\xa6}[d\xf0q\
+XQ\x90\x9a\xef \xa7\x84\x84M\x9c\x08\xa9=\xcd\xfe\
+\x15T\x08Cl\xa1L\xc23\xc4:W{\xa560\
+0D\x17\x8bi\xed\xc2\xc80\xd8\xb7\xe6\x03\xef\xdd2\
+<T#\x1b\xe4Z\xbb\xe7\xfe\xc5)\xec\xb7v5\x1e\
+\xb4ck\xc979H\xb8\x8f\xa2\xb8\xf2z\x99\x8c~\
+\xe2\xd9\xc1\xc5\x90g\x9ex?\xfb\xecr)^\x1c\x19\
+\x0er\x9e\x8f\xf9\xc3\x01c~\xa9u\xdfL\x81\x1f\xd6\
+]A*L\xafU\xc7\xc0' \xd4~\x0f\x0e85\
+jm\xe0\x83y\xe0\xfe\xd9\xaf-\x09f\xeb`\xa3'\
+\x19W\x0e\x5c2q8b|\x0f\x08\x06\xc6mi\xe9\
+I\x02\x15m)\x02\x7f\xa7\xcf\x89\x9a\xe3\xb7\xb8T\x19\
+\xdf\xb6\xf6\x9c}\xc8<-'\x8e\x02\x05\xfc\x22 \xca\
+\xef_\x16\xe4\x99\xd3Y\xe8\xdb6\x98\x8c\x0f\xcf\x03\xd4\
+\x19\xd2\xc5\x977d\x818\x92\x18,\xac\xa7\xcdc^\
+s\xa0\x81\xcf\xe3\xf3\x09\xf4\xe2\x98\x10\xc8\x83\x15\x98\xd2\
+'g\x15~\xfd\x0b\x04\x84p\x04\x951\x1d\x0eq\xa9\
+\x10_W\xb9L\xeb\xc2\x90\x1d\xd7\xa27\xb2!\x85\x9e\
+'\xe0\xad\x12\x07\xe7vN\xa5\x1a Vp\xf4\x997\
+\xf6\xd5\x02\xe1\xf0\xe5\xfd\x80#M\x0d:\xddc\x80\x0c\
+\xa3Wi\x13\xd8\xb6\xa5k\x1d\xd7\xb6\xed\x1c\xe7\x09\xe7\
+$W\xf6#\xe3\x08D\xf7\x80$e\xbe)\x85\x83\xd3\
+\xa5A\xbe\xc4~\x00\x99\xf6D\x90\x87\xe5\xcc4\x08\xbc\
+\x96{\x84\xf9\xc7\xd1\x17\x19 \x8e\xc2\xe8\x0a\x97\x8aC\
+\x05\x0e\x02\xda\x15\xe2\xb0R\x02@\x17\x01\xc81\xe1R\
+Q\xdb\xc4\xd4\xdf\xfd\xd3\x05\xd95[I!\xe74\xfa\
+\x81}\x0cD\xb6\xe1<\xa1Ma\xac\x07\xdeO \x9d\
+\xf3\x93\xf9\xa5\xb4D\x08?\x90\x94\x81P\xe0\x1c\xe1{\
+i\xd7J_l%`\xa2\xa6\xf4)\x17\xfb\xda\xbd]\
+*\xf2c\xc8\x81U\x03J\xa0\x95L} N@\xf0\
+\xc9\xa0\x8f\x92\x14\xaf\xc1^\xb3r\x94?\xecR\xc8\xa7\
+\x22#,\xa4#\x065\x88\x9a\xc8\x8c\xbd\xd6\xa5\xea\x06\
+\x81]\x06\xc2LH\x15X\xb0\xfb3M\xbe\xa5q\xbe\
+W\xd0\xefg\xaa\xf9\x01\xe1t\xaa\x8b]\xdf\xebRj\
+\xaf\xbbe]\xaavn\x82\xa8GFY\x0eUt\x0d\
+\xf1Q\x7f\xa0\xfa\xfe\x93\x5cl;=\xe9b\xd7\xdf\xba\
+\x94@\x04\x01\x08\x90\xb1\xb4\xc7$\xf3\x96j\xf4\x0f*\
+\x01\x9a ]\x04\x91#\x04F\x04\x5c\x08\x0c\x09a3\
+\xfa\xa4\x8b]\xff\xe9b\xd7;\x5c\x8a\xfd\x1al\xf3\xf4\
+[\x17\xf4\xbf;\xcc\xa5p\x1d\xa4\xd2\x80W\x17\x8e\x05\
+ \xff\x93\xafvIm\xe8L\xec\xef\xfe\xeab\xafg\
+\x98\x98\x9d<^\xcb\xc4\xe6\xbd\xdb\xc3\xe4=\xf6\xdc\xf7\
+\xb8\xbc\x00w\x82\xf6\xd1\xd4z&\xeb\x17\xc7}\xea\x19\
+\x17\xfb\xfd\xdf]\xec\xf3\xbe\xedR\xde\x9fX\xf7\xbd\x9b\
+\xc0\xa5\xdde\xdde\xf6\xbe\x03\x5c\x8a=\x982\xbaK\
+$G?;Hp\x8ba\x17\xe2Q)1\x97\xda\xdf\
+}\xbe@\xfdC\xcf\xa0O\xc8\x94*0\x94\xba\x04|\
+\xb2p\x13\xa4R\x80\xcb*.\x07!\xe7\xba\x95]*\
+\x12GA\xf4\xbb\x85\x5c\xd2\xf3\x1f\xea\xcf\x1f\x9cI\x0b\
+\xbb\x14\xbd\x15\xebM\xa5k\xc3\xb2&\xbe\x1f63\xd9\
+<A\xcbM*\x0e\x84\xb7\xb9T\xddG\xe0.\x12R\
+\xb4;\xdf\xa5\xe8\x81\xd4fn%\x05\x18\x9f\xd0\xf9\xf9\
+\x8a\x17\xc8\xdc\xb7\xed\xcd\x094p\x0e\xc9\x11%P\xe5\
+\xee\xb6;\xdc\xa3\xad]J\xe9q\xacg\x02\x9b\xee\xe6\
+\xdeQH\xd1\xa3$A\xafS\xe1\xd9u\x1a\xff\x85J\
+\x82g\xb8\xd8\xa5\x90>\x9a\x8d\x92\xf5\x10\x01\xf43\x5c\
+*?K\xa59\x13\xeb\xa8\xfd\x9e\x02\x15\xfd\xae\xfd_\
+\xfa\xbf\x14\xbb>\x1c\xff\xef\xe4\x92\xd8\xe0\x8e\xa0t\xea\
+\x80L\xa2\x0b\xb2%j\xea\xa5\xbf\xf1\x0bG\x8f\xbbT\
+v\x10\xe3)\xff\x8f\xd2;\xda\xe3\xb6\xe4\xc1\x04.\xe3\
+J\x1bl%\x06c\x9c\x14\xe0\xee\x7f\xedRu[\x00\
+\xd9\xa6\x80O\x04\x16\xa4wc}s\xbe\xea{\xa3\xa4\
+\x98n\x01$F\x95\xe0\xa3d\x8a\xd2\x92\xc9p\xf0<\
+\xf2\xb5i\xd5\xee\x83ZIA\x11\xa2\x8f2\x0a\x9cH\
+\x09_\xa4\x83\xd9\xbbpz\x0d\xc3h#\xb5\xaf\xc1`\
+\xc5\xf0ljn\xa3\x7f4\xed\x0a\xa8\x81 b\xdeF\
+\xac0\xe0[G\xa4m\x17\x87\x81I\x9fH2\xe9\xb0\
+\xd6\x0a\xfa\x1dl\x8a\x18\x22\x18^\x184l\x10j\x1a\
+\x89\x84\x911\x85\x95\xdd#B\xdfy\x81\x0c)\x06n\
+Kr\xd7\xb2~\xb7]\x130\xecpl0\xd4\xa8\x95\
+>\xc6\xa5\xca(\xfb\xf1\xb1r\xa9\xf9\x08C\x15\x92:\
+'\xb39\xadrtwr\xb1\xeb\x81.U-\x0d\x90\
+a2R\x8c?\xe3L\x06\x0e\x84\x05\x11\xa8\x1b\x94\xa9\
+\xe4\xfb Y\xc4\xd1\x1a\x9a\x9ac\x22\x8b\x18\xc8\x18\xf8\
+<\xf7\xe6\x22\xbb\xdbA,\xd8\xcf\x092yr\x8e\x10\
+\x87!\xc5xq\xbf8\x10\x18\xa6l\x00\x0cg\x0c\x1e\
+\xd6\xa1\x22\xf2\xc1vM[=\x90\x00\x22\x8d\x09\x05\xb3\
+\x99\xa0\xff\xaf\x94\x03:\x11\x08\x8fl\xb0a\xd0\x80\xd0\
+ \xd3\xc48R\x13\xbb\x82Kql\xa3\x7f\xbd\x02j\
+D2'~\x19\x10\xef\xdc\x1f\x9by`\xfd`\x10=\
+\xd1|/\x07\x87\x14\xde\xf0\xc3\xe1\xc2\xe1\xc2\x0a\xc9\x22\
+Cv8Q\x0al#E\x1e\xb7\x14\xe4\x94\xf5\x0d\x17\
+\xc0\xcc\x06\xb2\xac\x0c\xd3\xf0\x9c8$\x80\xe2\x13\x90\x82\
+\xb4MH\x83\x08\xd8`\xf8\xd1^\xe6u\x19\xf2\x17%\
+Fr\xb4\xc2`SM\x1d\x9c\x0b\x91\x81&\xe2\xad\xee\
+\x11\xb1\x0e\xb8\x12\xd8d\xffPJ\xf2\xa8K\xb5\xae\x0a\
+i\xe4\x0b\x22\x01\xc20C\x7f5d\xa2\xe1\xc01\xef\
+CC\xae\x87c\x05\x92\x05\xc7\x1fG\x8c}\x00\x12\x03\
+\x16~\x02\xb0:\xa8B\xef\xe1\xe0\xe9\xf7\x90\x02F\x09\
+\x04\xdf\xaf6\x8b\x11Pd\x7f\xa0gxn\xf6\xcb\x8a\
+\xdaO\xe8+\x0c-8\x05\x96lJY@\x00\xe0\xa0\
+\xc2a\x82\x81H@\x84\xbf\xc3\x01+\x5c\x0c\xf9{\xdb\
+\x1a\xeb\xc5\xa3\xbda&\x19\xd3\xf9\x10\x19\xdfeR\x1f\
+\x82\xa2\xa7)\x8d\xb8G\x86\x1e\xfaf\xed&\xa0E \
+\x84\xfd\x82\xe3\x06\x17\x06\x81A\x22\xfe\xbf\xc8%\x06\xe6\
+^\xe5L\xa7\xa0\xe7\xf1\xc3\xf9\xc3\xfd\x82\xf8iK\xdf\
+\xe6\x0d\x8e\x07JO\xa6\x9f\x03M\x09[b\x90Y\xbc\
+\xe2R\xa06\x1c\x87\x9fu\xff\xc6$%\x00\x02\xfb\xbb\
+\xce\x83\xe1\x1d\xb9fq\xf4Y\x97i%.y>\x9b\
+\xee/\xb1?\x951\x8b\x80k\xc3~O\x065\xceA\
+\xd6\x17\xfb\x84\xf1`\xdd\x97\xf5\x95k\xce\xd5\xfe,\xd8\
+\xa5\xa5\xb7\xc2Q\x07\xf1\xc08b\x80\xe1\x10\xb3\x0f\x98\
+_\x10\x0c\x1a\xbf@\x86}\xc9\xa5\x22\xcd\xa4\x04\x86\x0c\
+0\xed\x92\xeet\xa9\xd6gId\xe4u\x02\xf2\x0e\x04\
+\x1c\x5c\x17 d\xb0\x83p\xb8y~\xe6\x1fC\x9es\
+\xaf\xb4\xb7\xcb\x01\x04^\x8b\xdb!\x0cMj\xafAF\
+\x81\xf0!a\x81\xbe\xa4\xff\xb6J\x10c\x1d\x82(\x80\
+\xbcY\xed\xbe\xa2+\x10\xc8O\x025\xdc?]\x10\xb0\
+\x1f\xb6\xc9\xedC\xc3\xde\x80\x04\x91\xf5\xc6\xfb\x09\xbc\xa8\
+\x04t\xf8\x9eKA,F\x86Jm\xe2b=(\xf3\
+n\xee{\xe2\x96\x1a\xfe\xe6\xa2\xfe\xef\x8b\xe9\xd4\xbb\xb9\
+\x22\x05\xd3\xb9\xd9\xff\xcf\xa58*\x04\x1c\xbaI\x13\xdb\
+\xef\x93\xaf5\xd9\xa6*\xf58!I\x94\xaaF\x97\x08\
+\xffT\xb3\x7f\xfa\x9f\xbb\xc8\x007\xfbg\xea\x07.\xb6\
+\x0cVq\xb1\xd7wO\xdd5uwU\xbb\xad\x0c\xdf\
+\xe8g.\x09\xb2\xfd\x87\xd1\x1f\xca\xbe\x1b\xff\xc3\xc5\xee\
+\xe7*\x97\xd4F\xd0\xa4B\xa2A\xceL)\x87\x02D\
+\xd1E@\xd0\xf9\xd1\xd5.\x85\xc4\xd1\x9b\xc7\xa5\xf6q\
+\x8e\xac\xf8|E\xf28G\xee\xae\x14m\x0f\xc5\xfd\xd1\
+\xfd\xa8\xbb\xa8\xbb\xa8t\x15\x18?\xe4b\xe3\xb3\xb7\x8b\
+\xbd\xde\xc9\xc5~\xbf\xb6\x89\x9d\x17\x93+\xb9\x14\xe4@\
+7\xafK\x95\xe1\x04\xfa\xbf\xb2\xc9JE\xbf&D\xe4\
+\xaf\xfc\x10\xb7~\x00\x00 \x00IDATl\x9c\x96\
+0YR\x19m[g\xddw]l\xdcvr)\xed\
+\xfa\xa2\xa4\xf2\xf9L\x8e\x18\xa5H\xcahG7\xab\x0f\
+\xa9t\xd3\xb5\xcd\xba\xb2\xcf~T\xe9\xb1\xdf\x9a\xfc\xae\
+\x22\xa9$ \xb0\x86Ke\xcf\xc2\x96\x8e\xe3\x7f\xae\x8b\
+}\xcf\xde.v\x7f\xdft\xa9\xfc\x199\xd8\xa3G]\
+\x0agV\xb7\x9aK\xe1\x9a\x88\xfe\xed\xf7\x0cw\xa7\x00\
+\x18d\xcc\x0b\xba\x14\x0e\xb5\xe4\xf0],\xfd\xb6i\xa5\
+\xd7\x95\xa9\x8dRL\xf9-Q\x0a\xb1P\x86\xbc\xc7\xb8\
+\xe9<\x84\x1b\x03\x08>\xe4\x82\xe1 \xa2/\x17j\xc8\
+g\xb1K\xc8@\xc3\x0d#\xbd\x99\xd2C\xdf\xaf\x02\xb6\
+\x9c\x07\xe28 \xb1\x00R#\xf4\xd8oS\xb1b\xf1\
+\xdb\x0a\x82+\xfbWp\x02\xfc\xc8E\x09\x9f\xdf'\x7f\
+$\xdf\x07\xe4\xb6\x0ax\xc1I@\x06}\xe2\xba\xac'\
+\xa36\x1f\xfbL\x08\xa4\xfek.\x95=\xbd\x88\xec\xa1\
+/g\xd2\xca\x08\xc0*\x90\x94\xba\xdc\x1dX\xda\xb7\x0f\
+\x1fr\xa9\xdaI\xa2?\xb1_\xa4?\xc2\xdf;\xde\xa5\
+\xf2;\xf17\xb1\xc39\xdf\xf17<<\xe3\x5c\x14\xfb\
+\xb8TH\x02\xba\xd8\xe8\x1c\x8b6\x8f\xac\x0f\xba\xdb\xb1\
+\xce\xe8\x02\x80_\xa1\x00B\x94\xc8\x80h@\x8f\xe3\xcf\
+c\xcf\xab\x04k\xf4\xa0\x8b\x93\x00\xfe[\x0a\x18r%\
+\xb1|R\x9b\x16\x06\x1ed1\x8a\xa8\xd0\xff4\x0e\x04\
+\x0c\x01jr0\xc4\xda\xbe\xb8D\xa4!{\x22\xc3\x02\
+;1\x11Q\x1c\xef\x864\x89\xbe\xd4\xb1\xb0q\xac8\
+`_\xda\xd4\xe6\xe3\xa8\xe2(\xb7d68\x10\x18\xfe\
+d\xf0\xda6c|\x0f\xf7\x05\xd9\x0e\xfd\xd29\x10\x9b\
+Z\xc1T\x121_\xd5\x7f\x94\xf7s\x104\xfd6\xe3\
+s\xdb\xf6\x84m \x05\xe8?\xedA\x9cT\xc2\x15\xd5\
+\xd7]*CVmJ\xec\xb7\x89\x8d7\x10\x01\x18V\
+Z\xa0\xb1p0\xd0q$1\xcc\x19W\x0e|21\
+\xd4|\x03Yi\xdb[\xa1\x10p<0\x8c00\xc9\
+,cp\x91y\x80c\xe0\xebb[UI\xcal\x01\
+\x04\x0cM\x0c\x1f \xbd_\x16{\xfc\x8f]\x0a\xebe\
+d\xf8\xa4\x00\xa2o1\x8e*}\xe0\x15\x18\x09\xc7\xe0\
+&9\xe0\xab\xca\xd0-\xb5\xb9\xd3H\xc2&f\xe6\xda\
+\xfbx\x1e\xfe\xbf\x85\x9a\xe2P\xb3\xfe\x8f\x17\x07\x02\xec\
+\xfe2\xbcb<q\x1c\xc6M@\xac\xed#\x0f\xe4\x1c\
+6r\x0cV\x14\x1e\xef\xbbG\x08\x05\xd8M\x89\xe82\
+\xbe\xcc?\x8a\x83\xc0\x8e\x1c\xff@T,\xab\x8c1\xeb\
+\x92\xd2\x15\xb1\xbfG\x84\x14EJF\x91\x0c*\x07\x00\
+}\xedic\xa8q\x08\xd222#\xe7\xb9T\x90\xe4\
+\x1d\xe5\x98\x81<\xc0 !\x93\x8fC\x1b\xf3\xa3yX\
+[\x0er\xe1\x12\xc9\x0ek\xbb\xefZ\xc8\xfe\xbcMw\
+\x012\xe3@\xec\x9f\xd2z\xffO\x9e\x87\xd1\xcb\xe5\xf0\
+\xb3N[r12\xe2\x1c\xcc8\xac8\xec@\x8e\x99\
+_\xf4\x10\xa4top\xa9\x22\xc6\xcc/\x08\x08 \xe7\
+\x04\xda\x16\x94\xbe\xa0\x1d\x1f\x9f\xc7\xbe\xc4\x91c\xdc\xc8\
+l3\x0e\x1c\xbc\x94b\xb0\xef\xd1\x9b\xdcwCv6\
+\x9bc\xc4\xb83\x9e8\xfcd\xe4\xb8\x0f \xb1\xb4e\
+\x04qC@\xf0\xd1\xe1\x91\xe1\x91\xb4\xbfr\xc6!\x90\
+\x0e#\x93d\x88\xe4\xe7c?\xc1\x15\xa0\x0cs\xb4C\
+T_h\x0c\x8a\x84\x83\xab!\x94\xfc\xa0\xbf\x09\xf8\xb0\
+o\x08D\xe0\xc83\x0e\xbc\xe699\xb7Xo/\xd1\
+:b\xbd\x956\x8fy]\xa1\x1fp\xb8\x97\x9d\xde\xce\
+1\x02\x02b\xe1\x1f\xbdf4c4\xa3\xaa\xe1\xc4\x90\
+c]\xa1O\x08\x8cR\x22\x06\xd4\x9e\xefe\xbf\xa0\xbf\
+!\x95}$\x8fw \x00\xda\xd2\x05\xda\xd9AVI\
+\xe0\x95\xc0\x9f\xf4\xcd\xe8\xe3.2\x1c\x7f[\xd5\x9cS\
+:F\xe9\x14\xa4\xa0\xcc\x0b\x10T\x02a\x22\xc7\x22\xa3\
+\x14\xc8)9\x9cA\x92\x08\xc2J\x7f\x0f\x97\x0bH\xa8\
+(\xc9\x92C\x0f\xf7A\xcc\x0b\xdfK\xe6Y\x19\xbe0\
+\x5c\xc9\xbcP\xc2\xc6<s\xdeB\xdex\x9fK\x15\xf8\
+\x90\xbd\x13\x06%\x5c\x17_q\xa9\xceQ\xd6\xd99f\
+\x86\x9fS\xb5Cs\xd6\xf2\xbb\xcb>\x8cZs\x9d\x9f\
+\x81,@/\xc29\xa3\xf3\x97ZX\xb8w\xc8\x84\x11\
+ \x09D\x02\xfa\xf7\x02\x97j^\x05\xb5\x8es\xf4\x90\
+\xdc\xbe/2\x86\x22\xb1\x8an\x0f\xe8?!\xe9fC\
+\x0c\x90)\x03\x22\x8c\xde\xd2\xb9\xde\x7f\xc7E\xe7\xa7g\
+\xbc\x1e\xcbl\xfa\xd1\xc7[\xed\x0c\xfb\xfd]J\x17\x80\
+\xe1 \x97b\xafF-\xf7<&\xde\xaen~\x93\x05\
+\x8a\xe31\xebf\x17\xbb\xde\xe3\x92\xc8\xdbVr\xf26\
+\x02\xd2A~(\xfd\x11\x81J\x87\xca\xefU\x02ZQ\
+\xba(C<j\x82\x05}\x0f\x04&\x01=\x029 \
+>\xfct\xfc{\x09\xdc\x8c\xba\x5c\xdb\x0cky\xf7\x1e\
+\xcf\xd1\x97\x12\x04;5\x8f\xf4sst\xd7\xe8N'\
+)\x04\xc9\xe4T\x84NF\x18\xf7\xe5\x88V\xef\x9ap\
+\xa6\x89\x8d\xd7dob\xe34~\xca\xe4\xc9\x8a}}\
+\x0e\x97\xc4\x19`R8U\xfa\x97\xbaT\x0e#\x81\x9f\
+\x1b]\xec~n0\xb9\xbep9t\x97u\x97w\x97\
+\x97\x9amj\xfeS\xf3\x81qi\xdf\x09GBB\x80\
+9\x12i\x7fel\xbd\x14\xf9\xfbb\xfd?\xa9\xb2\xa3\
+\xd0\xdb\xe8\x03\xd8\xed)\x15\xfd\xb0\x8b]7u\xa9\x10\
+\xac\x0a\x0c@\xc2F\xdb\xbe\xa8i'p$Gv|\
+\x82K)\xa9\xe9~\xe6b\xef?\xcc\xc5\xde\x7f\xa3K\
+\xc5-\x01\xa4\x1e\x84\xa7j\xf0#0\x86c+\x84J\
+\x946=\xe6R\x12SQ\xaa\x06\x87\x15\xfa\x92\xf3^\
+z\xa9{\xadK\xc5.\xef]\x0f^\xa6sg\xbe\xaa\
+\xfd'z\x14\xc7\x90\xfd\x05\x94\xdfqE\x07*p1\
+\x7f\xc5Q\xd1t\x0d\xe3<\xa6\xb4\x22Y\x93w5%\
+\xc2\xcfU\xfaeKq\xb68e\xe9\xb1\x1a\xd7{\x0a\
+\x09yp\xc0\xfcx\xe2\xe2D\x96\xf9\xdf\xd1\xe3>\xce\
+\x90\xfd\xd9\xd9\x97\xfd6\x02\xb2B\xf8\x85\xffD7\x06\
+\xf4\x08\xe3\xce\xba \x80.\xbf\x08\xbd1\xfc\xd0\xc5\xae\
+ov)\xddF\xe0r\x08=\x07B\x1a2F\xec \
+\xc6\x87\x8c<\xf3\xc2\xf9\x8c\xde\xfe\xf5\xc4\x8d)\xc0\xfb\
+\x88i\xcbG\xab\xf6\xc5\xd8\xc3\x04v\x17s\xb1\xdfo\
+\xe3R\x05Z\xd4\xc6=\x12H\xb2\xa7\x86\xb9\x5c\xaay\
+\x90}C\x17\x84\xf8\x7fJ\x1c\xf8>!\xcb&\xbb\x13\
+s?\xd5\xe17\xc3-\xc3-\xb6\x80\x0e\xec\xff\xaf\xff\
+\xbf*\xc2\x8c\xa3\xf6\x91\xa8\xd9\xc8\x03\xa2\xda\xf7`\xf5\
+%#K{\x0c\x1cL\x0c\x18\x02\x09@L1\x08\x18\
+H\x16\x18\x86\x04\xaf\xc9\xc4\x93A\xa3\x86\x91\x85\xd0\x90\
+\xe4E\xdb)\xbe\x1fh\x9b\x22m\xe18b\x10ax\
+\xf3\x03\xb4\x94L\x07\xf7\x03i\x0f\x19\x85\xd2\x9e#\x93\
+\x18\xa9Oq\xd4\x8a\x108p\xf3\xaf&\x11\xe2\xff1\
+(\xc8 p%\x92\xce\xb8\xf0\xfd\x18\xd4\xfc4}\xdd\
+\xa9!\x1b\x9e\xca\xac\xa7\x13\x7f\xca\x07p\xb0\xf9\x12!\
+\x95A\xd3-\xda-\xd6y\xad\xdb1\xfd\xd1\xfd\xd1\xd5\
+\x02'\xb0\x80\xc1\xca}\x14\xc37/h\xc6o\xc1\x86\
+\x15\x1bC\x15\x07\x87\x0d\x8ac\x02\xf2\xe3\xc8\xd1Q\xa3\
+\xa3\xaa\xcc\xcdE9C\x0d\xa4p\xe2t\xb5m\x02\xba\
+(\xb2\x99p\xa4qHJiA\x86\xce\x83<!\x82\
+'R\xa9(e\xd1\xc6\x0e\x03I\x99\xa2\x89\xf7\xc8\xa1\
+\xc41\xa1\xbd\xe3\xa1\x19ZJ_\xdc\x08@q\x00=\
+\xabq\xb9[\x86\xde\xe3:@\xf8=\x064?\x04B\
+\x18W\x1c\xf63\x93\x14r,\xdd\x8f\x1d\xd7\xd3j\x8b\
+c\xdc\xdbL\x15\x01\x85B\x0e\x98\x1d\x97\xf9\xa3=[\
+~?\x810\xd6\xd3\x1f\x15\xb0\xc3\xb1B\xc1\x11\x00\xe0\
+\xfe\xf8~\xde\x87c\x83\xc3\xc0\x15G\x95\xe7\xc4\xf1\xd2\
+\xe7D\xa6\x91\x880%\x17\xecC2f\x1a\x8f(\x15\
+\x11\xe9bD\x88U\x1b\x1f\xa4wd\xf0p4\x09\xec\
+\xd1\xb7\x1e\xd252\xe4\xadc\x8f\xa1\xcf\x01\x86\xe3\xcc\
+\xefQ\xe8M@.\x10LtOy\x5c5\xe9Z/\
+\xb3e\x86q\x98pp\xdb.)\xec;\xd6\xcf\x13\x0d\
+\xb2\xa0!\xc7\x8c\xf1\xc6\xd1\xe0\xef\x09,\xac\xa8\x80\x0a\
+\x0e\x1b\x0e`\x1b0\xe0\xb9\xb9?\xee\x9b}\x8c\x83\xce\
+\x01\xc4\xfc\xe3H\xa2_\xd7\x8cq\xa2\xcbA\x0e\xa8,\
+&\xfdG\x86\x9b\xfd\x84\x01\x00'\x00\x07.\x19^\xbe\
+\x87}\xce\xf3\x82D\x92\xe1\xe0\xdc\xd4\x89\x9d\x1aD\xdb\
+\x5c\x81\xa4\xc8\xe7\x07\x19V\x90\x03\x07M|*\x19@\
+2 G[\x89\xccmoE\xc8a\xe3\x87\x04M\x99\
+\xe7\x80\x08\x92I\xbdI\x9f{[d\x80\xf3\xbe\xe6\xfc\
+\xe1\xfcd\xfe\x9b}\x14\xeb\x87uE\xa0\x9c\xf7\xf3\x1a\
+\xc7\x98\x9aa\x05*c\x7fAJ\x8b~\xa0F\xfd<\
+\x97\xca!\xe7\xf3\x08,\x11@DO\x11\xc0\xe7\xbch\
+\xcfK\xa0\xeb '\xe06a\x1d\x81\xec\xb9%\xdb\x13\
+\xe1\xe8ch2\x1e\xec\xd3\x16\x09\x82^\xe45\xfb\x8e\
+\xc0\x1c\x060$S@)9\x8fe\x88%\x87\xe1\x07\
+\x85\xf4-\x02\xc3\x7fP\xa6\x162(\x1cy\xc8\xa0\xa8\
+\xd5&\x83\x82>\xc51 P\x8f~a\x9d\x91\xf1\x22\
+ C\xc9\x92\x0c/\xa0\xeaQ\x9b,\xbd\x16\x88$\xd5\
+h\x02\x15\x1f>\xe5R\xd9I\x04D\xa8\xa1\x87\x05\x5c\
+dT\xd1\x8d\x84@\xdc\xeeIJ)\x842\xc8\x04H\
+\x80\x96\x86\x1dBF\x1br\xba\xa3\x92\x04\xc9Yd\xd0\
+\xe0\xc4\xe1}\xd8!\xacC\xc8\x05)\xb5\xa1\x9f\xb5\x0c\
+^\x02\x15\xe1\xf8\xab&6\xba\x11\xfdM\xe7\x0e\x89&\
+e\xc4\xbb\x7f\xb9\xa4vz\x89\xec\xb0\xbb\xc2\xc5^\x7f\
+\xc3\xa5\xb4\x1d\x84,\xb0{\xda\xc5\xaeoq\xb1\xebG\
+s\xfbA\x02+S_p\xb1\xeb\x86.\xa5?{\x7f\
+\xb7\x8b\x1d\x17\xbb\x98\xecl\xaf\x7f\xe0R8\x01@\x8c\
+F\xa2\x85\xf3\x97sR\xa5(\xfd\xe6.f`_\xef\
+R\xd9\xbf\x90\xd71?B6L\xfc0\xc9l\xe7d\
+*\x9dZ\xa2\x04V\x022N&\x12\x92g\x91\xa8\x11\
+\xf0\x8a@\xf9U\x19B=:9\xb7\xddD\xdf\x8c\xfe\
+lr\x97\x90\xb0{\x94\xd2\x11\x1c\xf3Y\x17\xb8T\xec\
+\xe3b7\x1f_\xefRJ \xba\x15\x5c\x0a\x07\x04\xf3\
+\x0a\xfb}\xf7a\x17\xbbn\xe6R\x10\x11\x90\xd9\xc11\
+\x12$l\xfa\x9e\x18\x0f\xce\x15\xf4?H.2\xddn\
+}=[\x1c\x9aac\x17\xfb\xfc\xb3s\xfbA2\xc6\
+ty0\xe7\xd6%\x1c\xed\xfeK.\xd5z$\x13.\
+\x92l\x10#\x04f\xba\xf7\xb8\x94\x92,\x90\x0b\xb4M\
+\x1c^6\xbc49\xdep\x19\xe9\xbcN\x88\xce\x9f\x08\
+\xea\xbe\xa5\xf4\xf2\xf9\x05Q\x11\xdcdd\xeei?N\
+\xb7\x05\x9012\x03\xa2\x14\x0b\xa4\xad\xecwJ+\x86\
+\xce\xc5\x9eo\x17\x93]\xedz\xb5K\xe1\xc6\x89@\x1e\
+\x88WJ\xa8\xcc\x8a\xf1\xb6\x8eI\x0b\x9dUe\xecA\
+\xac\x90\xe0\x81\x04\x1b\xfd\xc4\xb9\x06R\x0e\x04 \xb5\xf0\
+\xc7\xaaV\x9f\xc0\xe6\xb5\x13?K\xfa\x87\xf3eK\x05\
+\xfa\xe1\xf2VIK\xffc\x97*\x90py.\x05\xa3\
+\xa6\x9fqr\xef!!\x5c\xe9B%\x84Y\xb4\xf7d\
+\x7f\xe2O\x12\x08\xdc\xc0\xa5:\xdf \x81\x14\x97A\xec\
+\xf3Ed\xbf\x80\x84$\xd0\x09\xf7\x88\x10#Ui_\
+\xb6\xa7(y8C\xfb\xf4:\x91\x17\xab\xa4\x8a\x04\xd9\
+\xb0\x88\x8b]\x97t\xa9\xce{\xec=\x02\x00\xefT\xc9\
+ncoG\x89 \x88lq\x14\xb4m\xcd\xe1Lb\
+_M\xda\xf6\xbbvtm\x95I\xc1\x00TM7\xfd\
+K\x03jH\xdff&\x9c\x88\xfa\xf6\x19R\x1bd_\
+d\xb2\x89\x90\x93\xd9\xc1\x00h\xdby1psD\x1f\
+\xeel\xe8\xb5\x869\x86\x00P\x0f\xd8\x801\xecDR\
+\x135\x9b\x18\x12\xbc\x8f\x1d\x84\xe1\x03T\x83\x81\xe6\xf5\
+\x5c\xd3\xa1\xb8\xb3\xf5\x01o9\x09\x94a\x0eV`\xa0\
+\x8aD\xbc1hy~\xbe\x87\xf6D\xd4\x02\xc2\x96\x8b\
+c\xd0@\xc7g\xeb\x17^8\x06\xf2k \xc4\x18V\
+(L\xda\xc8\x956\x8cy\x9c\x97\xd7\xf8S\x93\xa66\
+)\x18&\xe1\xf03^\x0d\x1bz8R\xdc\x17\x06\x1b\
+\x99\x8b\x16RH\xed\xfc\xfe9\x12\xc5\xf3\x8e\x0eT$\
+\x9c\xcc,\x11X\x19\x22\xb0\x09\xc7\x81\xcb\x86\x04\xd2\xfe\
+\x17!\x128\xa0\x09`\xe9 \x19\x9d\xebR\x22\xe7m\
+\x1bC\xfa\xf3F\xa0I\xeb5\xfas\xaa\x96-\x10\x10\
+(\x14\xc6\x07\x83\x9a+\xf3\x8fF\xc3\x91i3Ct\
+\x8bP\x1f\xdd\xb8o\xad\x1bS\x18\x99\xd4\x8c\x0cs\xdb\
+7\x9e\x0c\xff\x5c\x19\x02\x18\x0e?\x0a\x02\x05\xdb:\xa0\
+\x8b\x86B\x03z\x9e\xd7?\x06$\xa51\x04p\xd87\
+8\xa8\xec\x7f\xfa\xc7S\x93\x8f\x03\xaau\x12\xdd,h\
+k\xa9\xf6\x8b\x81\x04z\xa9KE\xa6%\xd2\xcd\x18o\
+\xf4\x03\xfb\x8d\xcf\x07\x22\x0b\xd9\x9a\xc8I\x03\x11@\x1b\
+?\x1c\x0d\x1c\x1c\xde\xdf\xe8!\xa0\xc9\xf1\xfc/\x9d\xde\
+V\xd0\xcc\xeb\x8cXzYC\x8a\x07\xf7\xc13y}\
+G\xc0\x86\xfd\xde\x06Hp\xacy\xae\xb5\x148C\xaf\
+.02q\xc5\x9d\xd9bM\x07\xe6u\x02\xc2\x81\x03\
+\x8cuE\xe0\x87yb\x9fKoFf\x12\x03\x83\x0c\
+%\xf3H \x01\xfd\xc6:!\x80\x00g\x015\xfc\x04\
+.\xd0\xdf \xaa\xd03\x9b\xa8m\xd9by^g\xab\
+1G\x9f\x13\x98{k\xae\x9d\x0dC\x82\xf5\x88\xfeC\
+\x9f\xf0\xdc\xdcoC\xaeH\x86\xc3\x9bUy\xbb\xaap\
+\x14\xd1C|?5\xce M\xc8\xb8\xbdC\x08.\x1c\
+o\xee\x1bG\x0eR ^S\xe3\xa8\x80\x07\x10N7\
+\xa7G{T\xf36\xc7\xf4\xae\x06\x81|c\xff\xe1\x18\
+\xb7\x99\x7f\x02b\x04lh?\xb7\x99j\xde\x09\xbc\xa0\
+\x7f\xe7\x97>F\xaf\x10\xc0\xc3Q\xc3\x10\xa8k7\xff\
+X\xd5n\xca`\xe0\x9c\x07\xf2N\x06n\xb66\x95\x1a\
+'j\x1c#\xb0\x0f)\x15\xeb\x93\xf5\xc1\xfac\x9d\xb5\
+\x5c&\xe8E\xd6-\x9f\x07\xb2N$\x87\x01e\xa74\
+\x86\xae\x01\xd4\xa4\xc3\xf2N\xcd8\x0e*\xe4p\xd4\xa4\
+\xb3\xbf(\x09|\xd8\xa5BL\xc0i\xc3\xfd\x82x\xe3\
+\xf9\xdb\xd28\x9e\x83\xf1n\xdbi\xb1\x9e\xb0\x1f\x18\x17\
+\xf6\x19\x08\x01\x10\x09\xdaO\x11`\x81Tl?\x97\x94\
+\xa81)}\xb6\xfb[]\xec\xf8\xda\xde\xa5\xdaG \
++\x04\xfd\x0c\x03\xfeY\x97\x8a\x95\x1e\xc8\xb5\xb8\x92\x22\
+\x00D\xa9\x18\x9c\x09 2\x84\x14\x0d\x0e\x1f\x02\x0a\x9c\
+O\xac[>\x8f\x00\xa7^\x939M\xb5\xd0\x9b%\xb2\
+\xaf\x94\xa9\xa6\xe6\x1aGs\xbc\x83\x8b]g\xb9\xd8\xef\
+\x8f\xc8\xac\xf7\xde\xc3\xc6\x03\xf7p~t\xcf\xba\xd8\xdf\
+]\xecb\xd7K\x5c\xcax\x90 \xc11\xef\xf7q\xb1\
+c\xe2\x10\x17\xbb\xee\xecb\xd3\xf5\x0b\x17\xfb\xfd\x94\x8b\
+\xdd\xdfF\xb9/{\xd2\xfaK\xe89\xaf\xa9\xdac\xb2\
+.\xb0\xe7d\xbf&\xf2\xb7\xef\x95\xeeK\xdd\x96.%\
+3=\xba\xdf\xa5\x94nE\xbft\xec\x1e\xec[/\xb9\
+\xfdq\x09\xf8\xa5\xf6\x84\xdfV\xe0\xe3t%*\xde_\
+!5\xd0w\xd8\xe5\xd8;B<\x85]\xb2|\xb2\xfc\
+J@\x8b.\x1dz\xae\xf1f.v\xdf\x9fs\xb1\xd7\
+K\xbaT\xfb\x82\xf5\x0d\x02T\xe7\xbc\xa7_\x12\x19\xa5\
+\x07\x1a2\xa2v\x93t?\xb7\xd8\xa7\xdfR\x10@\xc3\
+\x12.6\xce\xeb\xf4\xeb\xf6\xeb\xdau9\x97\xc4\x02\xff\
+{g\x81\x1f\xfe\xe7\x92\xec\xbbLF\x87\x03\x0aWP\
+KzK\x97\x94#M\x8e\x10\xd2\xe6~9\xc0\xce\xc2\
+?\xb8\xd8\xff\xbf=\x97hL]\xefb\xff\xbft\xbf\
+T\xbft\x95q\x87\xd5\x9fq\x02\xb1\x84]\xaf\xd7\xfd\
+\xc1.%\xc1\xd9\x9d\xe8R\x05,@`\xc1\xf2~\xbf\
+\xd93\xf7\x97\xae\x07 Ab_\x93\xf9\xa7\x0d\x9dw\
+_\xbb\xa3\xea\x9a!\xb29\xdaM\xe3\xb8\x03!\x8fn\
+l\xf2\xc3h\x8b\xe9i6O\xb4M-\xeeb\xdf\x7f\
+\x91K\x09$\x05\x02\x8eu\x03\x898\xe7,\xe3\xec\x9c\
+\xf3\xa7T\x81\xe5\xe5\x86\xe5\xbd$$\xe1>>+d\
+\xed\xae\x15\xb7\x15]5\xd0\x8f\xb4\x8d\xdf\xd6\xa5\x8c\xdb\
+\xb0\x93H\x13\xbf+2\xd1-\xcc\x9f\xdb\xa2to\x1b\
+\x9d\xe4R9\xc6\xdc\x97\xf4O\xb4c\x86\x94\x14\xfb\xe4\
+\x01\xf9U\xe2T\x18Vw\xa9\x90*\xea\x06\x14\xf6\x80\
+\xf4\xf0\xd4\xcf]l\xfc\x16q)\x0e\xf5\xe8t\x97\x14\
+\xf8Hv\x06\x1c9\xc3\x8e.)\xc0aR\xd8\xfc\x03\
+\xd2\x0f\xe9\xe4a\xea\xbaF\xdbE\xe9\xd3@&\xab;\
+X \x15H0\xc1\xc5\xa3\xc0\x957\x1b\xf4v\x83\x11\
+\x88W\x005\xb8\xedd\xa6\x07W\x8b\xec\x06\x90X#\
+\xd9\x97p\xc6M\x0e\xcf\x8a}S\xd0+j\xc5\xa9\x11\
+\x88\x03\xf6\x09\x19\xd0\x18~\x1a\xc8\x80\xca\x893 \x22\
+<D\xbay0\xa0.\x18(-I\x1f\x07\xe7\x7f\x83\
+\x85<ol\x0eL\x0eJ\x0cg\x22\xcc8\xa4D\x9e\
+\x08\x04\x90\xf1\xe1\x00nI\x05g6\x19\xc1\xb6\xb6:\
+\xfaj\xe9\xffu\x80\x13A\xef\x1fvI\x0a3C\x0b\
+A\x1a`\xb8\x12\xd0\xc0@\xc3\xb0\xa4\xb6\x83\x85J\x0d\
+\x0d\x8e%\x11t\x0c\x1f\x0cr\xee\xa35<\xb8\x7f\xc8\
+\x86\xe6\xd7\x04S3K\xfb \xc6\x95\x9a\xc0\x07\xb2\x83\
+5z\xb3jztP\xd9\x1c\xc0\xd2>\xbd\xff;\x81\
+\x19\x0c\xd4\x1a\xe1\xb0\xc84\xc7<C\x83\xa9\xa9\xc7q\
+\x05z\xfd\xc1\xdc~b\xf4d&!\x22\x82\x1f\xf3\xa1\
+\x08h@\x7f\xf8\x1e\xda\x22\xa9\x7ff\x188dh\xe5\
+\xf8D\x04\x19\x03\x8b>\xe1\xd7\xe6@W\x04dX?\
+d\xf6h3\xc8s\xb3^\x98\x1f\x1c\x0e\x1c|\x14#\
+\xd7\x87u\x90\xb2O0hAF\x80\x84i\xc91\xc9\
+\xd0\xe0\xa8\xb1>8h\xd9\x17\xa5_<$n90\
+\x05i\xca\xa3\x22\x7f\x03\x92M\x80\x88\x1ad\x1c\x00\x9e\
+\x87\xf5L\xad\x14\xf3*\x12\xcf\xe1a\xb1\xc1\xde v\
+\xf1{\xf5>\xf6\x1b\x861\x99G\xf63\xdf\x83AD\
+D\x9bv{Oj\x5c!\xb7\x13\xe7\x81\x99C\x89\xcc\
+\x88\x80\xd10\x9fK\xe50\x11\xc1T` \xc6\x0b\xc7\
+n[\xd5\x02\xbfJH\x00\x1c\x09A\xf2\x86\x87\x5c*\
+R\xa0e\xe5\x90q\x00\x82\x5cYE\xf3\x84\xe3P2\
+\xe2y\x1f\xb3~Xw\xf35\xe3\x8b\xfe\xc0am\xd9\
+\xf1\x09\x00P[O\x86\x9e\xfbx\xa9\xd6\xed\x84\x0c\x7f\
+>\x97\xf1\xe6y1\xb4\xf9!`J\xc0\x8d\xfd\x06\x99\
+\x1e\xb5\xd5\xe8G\x1cN\xd69?m{@\x02\xa0-\
+\xf4\x1c\xc7\x15G\x05\xb2\xa0m\x95\x19\xa5D\x03\xbd\x80\
+\xfe\xe0\xfe\x0bYc\xfe\x1e\xb8&0H\xf9^\xf6=\
+dd\x18\x00 \xb2~\xedR\xad\xb3\xf7\x069N\xde\
+\x87\xcc#\x86\x19\xe3I\x06M\xfd\xeb\xa3\xe4H\x0e\xfb\
+p\x85j\xf1\xe8\x06Cw\x1b\x05\x90 \xf5\xb4\xd3.\
+\xb3\x89?!\xc7\x9a\xfbc\x9d\xff7J\x04\xf2\xcf\xe2\
+\xd3K]f\xe3\xaa\xe0\xbck\xb8\x05\xc2!f|\xd1\
+'\x85Lq:\x19j\x83\x14\x8a\xb6\xb8p5p\x9f\
+\x04f\xe1\x86Q&et\xb6KUS\x8f^9:\
+IY\x8f\x0a\x8c\x04\xf9\x16\x06\xba\x02M\x81\xe8\x12k\
+w +\xd0\xbb\xea\xd3\x1d\xeb\xb7-\x09\xc3\x8e\xa0\x9d\
+\xa3\xce\xff`\xcd&\xe3/\xae\x83\xfe^\x97* D\
+\xd7\x1c\x02\xbb<?mgov)\x5cG\xa17Y\
+\x7ftC\x82C\xa8\xe5\xee\x00\xf9\xa3\x1a\xcd\xd8\x97\x9c\
+#\x9c\xcb 6\xd8\x87\x9c\xc7\xacw\x10k\xd4\x9a\xca\
+\x01\x0f\xd2>A\xdb\xe3sh\xb7\xcc\xfa\x96\x83D_\
+m\x90T\x01\xad\xc5\x0e\x012\x0d)2\x8e\xbf\x0c\xf4\
+x\x1f\xe77\x9f\xafq\x80\xf4xt\xb8\x8b\xbd\xfe\x9d\
+K\xa9UO\xbb\xf2\xf9\x8aC\x07\xfdG\xbfj9v\
+ -pX\xcc\xad=stfr\x80s\x17\x8e\xef\
+\xaa]\x1c\x86\xb4\xef\xd3S\xab\x0c\xb9\xb8\x03\x12$\xbe\
+\xabX\xfd\x09D\x82t\x83\xfbE\xc8:\xec\x8a\xfe1\
+\x97R*0\xb5\x8c\x8b]\x175Y\xac\x22\xbb\x96\x9e\
+\x0b\xfb\x01\xfd\xdevq\x02\x81z\xf8\xe80\x1f\x97\xc4\
+\x95\xbf[U\xf3K\x80\x96\x9aj\xe6\x9b\xae\x00p\x11\
+}\xdaE\xf3qT\x81R\x8f\xd6u\x112u\xa1\x8a\
+#\xc0\x0d\xfd}\x12;\xfee\xa3\xcb\x8a\xdd\x88\x83g\
+\xdf\xbe\xf7\xb0wI\xbc\xd0\xc5`\xd8\xcd\xa5 yR\
+\x8d\xbe\x97 \x5c\xe4R \xee\x89Sa\xb2pF\x10\
+\x18\x09{\x08\x87\xea\x92\xccY\xd4\xcfr\xb1\xeb\x87M\
+>R\xb8\x00\x22\xe3\xae~\xee\xc3\x02\x99\x13a\xf4\xdd\
+\xdc\x96\xba;\xd0\xc5\xae7u7w7'\xe4P\xe2\
+0\xa043%b\x1e\xaf\xd8\xdf\xbd\xcd\xdfYj[\
+\xb7K\xa9\xf9O\xda\xe9\x98\x8a\x94\x8f\x12\x94\xcf\xba\xd8\
+\xf7\xcf\xe5\x92>/\xd9{\x89$\xf9\xea\x12\x88b~\
+\xfa\xc5\x5c*=(G\xbb\xff\x9eKB\xce\x9a\xd8\xf5\
+A\x97\xea\xdc\x94\x9e\x8bqS\xb7\x84\xf0\x0f \x11W\
+\x89G?v\xa9\xda\xda\x02Q\x07)\x83\x9e\xe3\xbc\xd0\
+\xf9\x1d\xa4x\x94\xa6\xe2/\x10\xe0%\x00\xce\xeb!\xd1\
+E\xe7}yk5>\x90\xdf>\x9dB\xd6Yoo\
+ \xfd>\xb72\xcf'&\xae\x80<\x0f:/\x03\xa9\
+L\x89\x9e\xb8\x14R\x0d\xfb\x15\xd2\xd7\xbf(\x89\x98\x80\
+\xeccw`\x17Sr\x0e\xb2E\xa5C\x11x\x81\x04\
+\xf3w.\x85\xe5\x1e$\xf6\xf0\x01\x97\xaa\xfd:\xf3\xa0\
+\xf3\xa2{\xbfK\xd5\xbe\xcf\xdb\xdd\xbb=\xbbk\x92(\
+\xd9\x89\xae\x22*1\xe9\xe7u\xa9\xc8>\x85\x04\xc0\x0e\
+\x89R+\x10, \x02\xc5)\xd0\xdf\xe2Ru\xa9\xc0\
+\xbfA_\xc8\xbe\x8f\x80\xef\x97\x93\x94\x80-\xe7\xba\xec\
+\x96H\x0ccW\xe1\xffi]\x10h\x80#`X\xd3\
+\xa5j/\xa8\x80\x1b\xfe6\xc8\x83\xc9a\x17\x97\xc2b\
+\x0aK\xae7E\xf2\xb6H\xa1H.\xcc\xb5\x12\x90\x9e\
+\xd1w8\xa0\x0a\x18$z\x7f\x1c\x94@Mq\x5cY\
+8\x04\x12\x980\x0e\xc2\xb6\xadTa\xa9\xce\x07\x11\x86\
+)\x19\xbd\x16rN\x86\x8f\xcf\xc3\xc0\xc5\xf0\xe4>p\
+lQ\xe8m`\x00C\x84\xd7\x90\x14RS\x01) \
+\x8e\x1f\x06\x17\x8e\xfd\xb8i\x0f\x88\xc1\x01k\xb1\x16`\
+</\x19\x00\xa0\x93D~8 \x88\xa0\xb7\xed\x10i\
+C8%\x83i2\xa0\xdf\xd9\x80\xe1\xe0\xc7\x91\xc4\xe0\
+\x83\xb4N\x86\x06\xb5\xee\xc3\x05.\xf6\xfa\xa7.U\xa6\
+\xa9E\x1c`\xa0\xb6\xf3A\x7f`\xd5\xec\xd0\x06(\xc6\
+\xffje\xe8\xa9\x8dC!4,\xcc\x90\xae\xc4\x0f\x0e\
+\x03\x8eH\x9bI\x85\xbd\x1a\x882\x9156\x0a\xdf\x8f\
+\x83)\xb6\xf48\x98q\xb8\x9f\x0c\xe8u~\x9e6\xb3\
+\xffb\x01\x80\xffM\xcfl\xcf\xc6vN`\x08\x85\xdc\
+f\xd6Yo\x04\x8200\x04\x99\x8e\x8c4\xeb\x05G\
+\x81y\xc6\xe1,db\xf9\xf7\xac?\xc6\x8f\xfd\xa1\x0c\
+\xc3\xf0\x8c \xd8\x1b\xabt\x02\xc7\x19\x16s E\xca\
+\xf4\xc5\xf3\xe2\xc0\xb6\xb5\xf2d\x96K\xc9K\xae=\x9d\
+\x91!\x82q\x7fdN\x04\xa1r\xfcBB0\xd0%\
+\xe1V\x97*c\x07\xab\xfb\x9f\x85\x04\x99K\x0e\xc8V\
+\x0a\x98\x00!c\x7f\x01E\x07\xda\xabLZ@f\x81\
+\xc2\xb6z\x08=\xc3\xebv\xdd\xb5\xfa\xa6iW\x19\xf3\
+F\x80\x07\xc7\x86u\xc8>\xa6\xdd\x1edo\xe8K\xbe\
+\x9f@O\x09\xb8L'\x8bc=3\xde\xac#\x02\x88\
+\xac\xa3M\xe5p@F\xc3\x81\x02\xf2\x82\x9a[8\x05\
+hG\xd5\xb6\xf1\x049\xd0\xd4tGI\x07\x91\xebw\
+\x09\xda\xbarD\xe23\xc7C\xdbF\xb1\xad\x89'\x00\
+\x85\xdef\x7f\xb0\x8e\x19\x9f\xb6\x16Q\xe7\x10\xa5W@\
+\xa9\x87\x8f\xe4\xdaO\xf6M\xb4\xd5\x02\x99A\x09\x8a\x1c\
+\xdcp\xb4v\xd3\xb9V\xda\x94\xe6}L\xcd>\xc82\
+\xae\x8fF\xdb\xda\x1cX\xe0J@\x82\xfbm\x11T\x0b\
+4\xac\xff\x5c\xd9G\x04\x06U\x9b\x1d\xebt\x9ef\xdc\
+@\xd2(\xd0\x15\x81\x0e\x1ct\xf4*\x10Y\xd5\xe8\xc6\
+>\x07\x99\xc7\xfc@\x06\x87!&\xf2\xa7(M\xe2|\
+'\x80\x8a\x83N\xdb@X\xf5\xd5m\xa4\xdf\xd5\xa5\xb2\
+/\xe0ra\x1fAFG\x7fp\x9d3a\x98\xa1O\
+Y\x8f\x05y\x93\xd7\xdf\x0e.\xa5v;\xf6\x19\xc8C\
+2\xd4\xf4\xa9\x177\x08\xedc9g\xc8\x0cF\xffp\
+j\xb0\xd1\x9f\xaaY\x0f.\x0a~\xb0\x1f\x18\xaf\xb6\x0b\
+\x03\xcf\xd9\x06\x001\xe8\x09\xa4\x01\xa1g\x1d(\xd0\x18\
+\x08\x008\x1axn\x9ds\xce\xec\xe3\xdc>QKN\
+F\x8bs\x0aD\x10z\x05=\xd5\xb2\x84\xb7]\x9a\xb8\
+o\x90\x15\x94\xd0\x11\xb8\xe0\x1c\xc2\xa1\x01\xa1A\x1b1\
+JA\x09\x08Q\xe3\x8e!+\xa4\xd5\xf01\x97\x921\
+\x04\xb2\x0bD\x9a6s)\x93\xbd\xa9\x12\x00\xff\xae \
+\xf4 Q\xc4\xf90\xa8[\x0e\x19\xd3\xf1\x87\x5c\xaa\x00\
+\x81\x02X\xfd{]\xec\xfaC\x17\xbb^\xecR>\x07\
+\xf26\xb85\xa8\x15\xa6V=J\xce\x08tP\x12\xc2\
+\x95@\x95\x1c\x93~+\x17\x1b\xfe\xbd\x5c\xaa\xc0\xc2\x8c\
+\xcc\xd9A)\xe2\xe8.\xaf\xde\xaf\x12\x19\x90\x06+\xd0\
+\x92\xac\xe9m*\xbb\x16.\x12\xf6;\xc8$\x90\x08{\
+gr3\x1b\xe5\x5c\xf2r\xbdKA\x1c\xa6\xcf\xb5s\
+\xb6\xff\x82K\xc5e\xa0\xfd\x14\x5c_\x9c\xfb\x0a\xb0t\
+?t)\x99\xc6~n\x17\x8d\xff\xcc\x92\x11\xc5\xf1\xea\
+/u\xb1\xeb\xbf\x5c\xec\xfa~\x97\x14\xd0\xcf\x89*8\
+8\x08\xf8\x82<\xfa`\xfe\xffT\xaa\xe3\x8e\xf8\xd7M\
+N\x95#~\x8e\x1c\xf0\x87J\xc9A\xca\xac\x1eZJ\
+h\x22\xd0A\xffu\x95\xa2P\xf3\x1d\x19bq\x05\x04\
+\xe2E\xa4\xd6\x81\x1cy\xbe\x9f\xd9\xdbsu;\xb9\xa4\
+\xb6\x95&\xb6\xdd?=u\xe8\xd4\xa1)\xf0\x96JT\
+\xbb\x0f\xb9\xa4\x04\x97I!M'\xa1\xda\xcdp)\xdf\
+\x9f8\x95\xe6,\x81,j\xfdi\xab\x18\xe7\x01\xf3\x0b\
+\xd2\x03{\x9c\xda}\xc8\xe4@\x1e(\xd0\xc89\xdf\xbd\
+\xdb\xc5\xfen\x19\x17e\xe2_\xab\x84H\xdd\x16\xd5\xdd\
+\xd5[\x12'\x5c\xee\x92Fi\xd3k\xe4\xc7\xb1\xde\x09\
+\xc82^\x90\x5c\xfe\x5c\xac\xff\xd8\x09\xe8Q\xbaam\
+\xe2Rq\xb5\x80|\xe5\xdc\x86\xbb\x85\xf3\x826\xa4\x0a\
+L\x0d+\x0d+\x0efGO\xad\xeaRuw\xf0.\
+\x10\x9f\xab\xec.\xda\x9c+p\x10\x1c%$td\xcf\
+\x0c\x1ft\xb1\xeb\xd9.\xc5qv\xc6\x09/!\x83#\
+'Hc\xb5\x1f\x82L\xb6\xe1\x5c!a\x0e\x02\xa3\xff\
+\x91K\x09\x04E\xe0\x06}\xcc\xf9I\xfba\xb8j \
+\xa3\xa4$V\xe7\xe9lve\xc3E\x12\xed6\xd1_\
+\x9c\xeb\xe8gJ\x0d\x94\xf0\x9c\x1c]\xa7\x0d\x8e\xe1p\
+\xb7\x0c\xf3\x1d\x15\x09\x86\xa4\x866f\x22\x91\x18\xb6\x12\
+\xdb\xbc2\x8c\xd1/\x98\x08F\x1b\xc9\x87\xac\x0e\xc5\x06\
+\x14\x8c\x9a\xf9\xd6\x81j\xdbcq@a\xd0\xf0\x03d\
+\x17\x83\x8a\x00\x03\xedsP\x94\x1c\xc8\x1cx\x18P\x1c\
+\xcc\x8d#F\xad7\xa4\x0c\xf1\xc3\x86;\xd3%\x19\x94\
+9\xb3\x8f\xc3\x07b\x82\xcf\xe7~9\xf8\x81B\xf2w\
+,\x04\xba\x15\x90\xe9\xc2\xa1\x03\xaaL@\x01\xc7\x036\
+v \xc3d\x84\x01.\xc8\xd0177C\xf9\xdbv\
+K\x8c\x07\xcfM\xa6\x83\xb6Y8@\xcc'\xf3\xc8\xfb\
+\x04Y\x0e\x87\x81\xbf\x7fI\xbe\xef\xd1/\xb4\xae\xa8\x8d\
+\xa1\xcd\x1a\x8e\x1e\x86U[z\xc1k2+:\xd0\x83\
+\x93\xa1\x0d\xd80\xee Ip\xb4!\xa3\x12\xc4.j\
+\x0cY\x17(<\x0cu\x1c\x0f^\xe3\x80\xf0\x9a\x80\xc9\
+\xa32\xac\x08x0\xae\xcc/\x0a\x9b\xd7\x9a\xc70D\
+\xd5\xb6o\xf8k\xae\xe9\x8aq}\xb2\x098\xb0\xfe\x17\
+hJW\x0a\xa4:\xff?\x0a`i\xcd\xc3*A\xda\
+G\xa6\x19\x12\xb1\xac\x90\xa9\x89\x17iY\xd4 \xc3\xa6\
+\xcdz$\xc2O[B2w\xdc\x17\x8e\xc8\xc2\xd3\x1d\
+\x91xn\x1c]2\xff\xd4F\xffV\x11\xd1{Ez\
+B\x1bBe\xd8Q\xc4\x94lP\xb3\x16\xdc\x0b\xb7\xe8\
+\xfd(@\x1c\xf45\x14Q\xe6\xe0A\x81\xb2\x8f\xe0\xf6\
+ #F\x04\x9a\xfdT\xfa\xd5Oc\xc1\xb7c*\xaf\
+\xbbmd\xd81\xbf8$m\x97\x8f\xe0z\xc8\xa54\
+\x13\xea\x8ab\xf7\x9a3\x828l+\xbbT\xfb\x9b\xcf\
+\xe5\xf5\xcb\xc3\xf1\xcc\x07=\xeb}\xe1\x18O\x02CY\
+?\x12\xf8\xe35\x075\x8e\x10\x19z\x10\x00@\xf0\xe9\
+C\xce:\x84\x03\x04\xbd\xdav'a\x9f\xe3H3\x0e\
+ \x01vV\xc6w%\xedCj\x00\x9fS\xe6O]\
+\x22b^\xda\xee0\xec\xa7\x96s\x04=\xc4\xdf\xf1\x03\
+\xf9\x17\x19\x08\xfa\xec\x92\x99\xc0\x81\x82T\x8c\xe7\xa2\x96\
+\x9e\xee(dj\x80Bn\xd1\xf4\xe3\xd6y\x18\x8e\x11\
+\xc86X\xdc\xd1\xab\x18\xca\x9c\x7f\xe8\xb5\x96\xb3\x83+\
+\x0e+\xe7\x1b\xdd4\xda\xd2\x0d~\xcf\xfc\xc2\xa9\xc0\xbc\
+0\x9e\x94\x1c\xf0\xfd\x04\xda@\xfepN\x82Hc|\
+\xd9OmF\x9av|\xb0\x0f7m\xf0\x80\xb2\xa2\x1f\
+\xa2\x1b\xc5\xb1I\x0aI\x9f\x0c\x93\x84\xc4\xed+\x08\xbf\
+j\xa0i\xb3\x15\xa4\x84\xe8]\xc6\x93\xd7\x90\x91\x02m\
+\x16\xa9Q\xd4\xee\x93\xc0\xa0}+$m@DU\xbb\
+I\xe6?\x1c0\x95\x0cD\x00\x00\x87\x9c\x8c-%G\
+\xcat\xc6\xba\xe2\x9c\x98c:\x09i\x04l\xd8\xcf\x9c\
+[\xcc7\xe7\x02\x01k\x12\x02\xd2\xc3\x90\x14\xc6\xff3\
+\xef\x94\xa2`/i\x9ep4\x03qA\x80W\xec\xd0\
+\x18\xd0\xa17`\x97\xa6\xf4\xe3:\x97\x8a$\x0dVl\
+wH\xef\xaa\xd6\x19\x81]\xc84!\x1b~\xd0Em\
+\xd4fV\xf7\xcby\x86\x03\x00\x12\x8b\x00\x9b\x0c^\xda\
+\x04\x0e\xe9\xc7\x86\xeb*\x93+U\x82:\xab\xd8a@\
+\xcd\xfb\x1d]\x14\xb8\xbf\xdd>~\x09\x97\xe2`w7\
+\xba\x94\x8c\x7fw\x89K\xe12H$i\x8bW]\x05\
+\x9cE\xfd\xd6*\xa3\xf6S\x17\xfb\xfb}]*\xfd\x80\
+\x1eB_C\x86{\xe2\xe8\x84\x14`\xd8w\xe2\xa3\xa9\
+\xc4\x11\xc83\xc8\x03\x91jGi%\x06:v\x8b\x02\
+$I\xfblX\x9d+ \x0b\x04A\x8f\x9a\x7f\xbaR\
+\xa8\xe4m\xb8W\xe4\x92\x22\xa5\x1d\x1e\xc9\xdf3\xfc7\
+g\xde\x09\xfc\xc5\xfb=\xa1g\x0eM\x7fe\x7fE\x7f\
+\x85\x8d\xcfc.%`\xdb\xcdt\xa9\xce}8K\x14\
+`\x8f\xcf\x13d>H,\x9d\x99\xe2\xbd\x85[ \x05\
+\xe8\xb6\xaf\x1c\x19\x91I\xe2\xb0\xcf\xfc\xc6\xcc\xd3g\xda\
+\xfd\xf4\xeft1\xc7nS\x97\xd4\xceq\x99~\x99\x02\
+UN\xee\xcb\x8d\xa5\xcb\xd5\xf0-\x97\x12\xb8\x80\xf4\xac\
+\xbf\xd9\xa5 \x1b\x02\xda\xff5\x97*@DW\x03\xee\
+\xff\xe5.e|\xa2\x0b\x8f\x07`m\x7f\xf6\x9b\xf4\x1b\
+\xf7\x1b\x97\x80\xc44\xfb}y\xad\xc7\x1dJ&vt\
+\xbbK9\xefFo\x1b\xed\x96\x906pm\x80(\x13\
+\x227%`6\xad\x90\x08 \xdcD\x1a\xc8\xf8E\x06\
+\x9b\xcc?5\xef\x90x\x13\x00T&:\x102B\xec\
+t\xefpQ\xa9\xc5\xadZ\x97_\xaf\x02\xf8Br\xdb\
+\x19\x92\xcf}!0\x02QM\xc92%\x0a\xd8\x19\x9c\
+#\x0469\x8f\x08\xf0\x92qW\x09\x00\xdc\x02\xa3\xa3\
+]\xca\xfa\x09\x12n\xc8\xef8g)Q\xfeJ.\x09\
+ \xb0\xd2\xbf\xc4\xc5\xae\xbb\xb9T\xfbE]K\x86s\
+\x5c*\x07\x1a\x12I \xf5*9\x8dR8\x05\x0e\xfb\
+S\x5cR\x09\xc2W\xfd\xfbB\xafC\xd6H\xc2A\x1c\
+\x11a\x97\x81$P\xc25\xc8\xa8\xf5\xfdp\x94\xf4\xfb\
+\xbaT\x01v\xb5%\x0d\xfb\x02\x8e\x078\xef\xb0\xb3\xf0\
+_(\x15\x82\xab\x0c{\xecSI\x82\xc4|\x10)9\
+\xa4\x93\xb4\x19$\xe0:\x19\xec\xe0\x22\x91\x18\xd6v)\
+\x19\xd0\xa8\xc5\xe5\xc10\x00`\xe5\x17\xb4\x86\xc8\xe7\xe8\
+9\x97*\x92\xcd\x0dsp\x00A\xa3\x8f/\x91\x0bm\
+\xe88h\x880c\xf8\xe0x\xe2\xd0s\x90\xe1\xc0\xb7\
+}\xbe1\xbc8p1 \xc8H\xb5\xd0\xdc\xb6\xc6\x9e\
+\xcc\xa7\x22\xda\x91)\xc1\xb1\xc7P\x92\xe3\x16\x19T\x0c\
+66\x02\xb5\x96\x90\x14\x91!'\xb3\xc5\xc2\xe1\xb9\x18\
+7\xbe\x87\x83\x00\x03\x1f\xd2\xbf\x85\xb5\xb0p\xa4[\x92\
+@e\x9eF\xaf\x10t\x14vr\xa0\xc1b\x93\x1f\x9e\
+\x96c\x85A\x0a\xb4\x10\xb2\x1f\x91\xa1\xc4}q`\x95\
+\x8ct>\xe8\xa9\xf5\xdbX\x06\xf4CM?\xe3\xc6\xc0\
+\x8dy\xc6\xa1mK1\xc8\xa4<\xd9\xacC\x0e\x226\
+V\xd3N)HR\xf8\x7f\x91\xf8\xd1\xee$\x90\x10\xd4\
+\xc82\x8fm\xbf\xf9bx\xe2\xf0O/!)P\xde\
+\xec\xe8\xb4\x88\x04\x90 \x18:8N\xd4\x94\xd3]\x00\
+\xc3p\x0d\x19\x8cK\xc8\x91n\xfb\xac/\xa3+\x86\x07\
+\xb5O\xb4\xa3\x22\xf0\xb1\xbc\xd6\x0b\x8e-\xf7\xb3\x922\
+\xce@yq\x10\xf8\x9eW4dw\xed\xef\xf9<\xf6\
+\x17\xf7\x05)\x0a\x81\x88\x95\xb5Oz)J\xda\x01\x12\
+0\xc0p]6Jc\xb2#N\xe0\x08\xc3\x9au\xd2\
+@q\xe3\xbe\xd8O(|\x1c\x0a\x91\xabD\xc6\xbb\xd5\
+#\x059\x93\xf5\xc3\x0a\xd1\x86.\x8f\x1bz\x8a\xbf[\
+A\xe3\xca8\x12\xe8@A\xaf\xad\x9a\x7f\xc6\xa9t\x0d\
+\xc9\x0e\xc4\xdf\xc4\xbe\x8b!\xccs\xe1\x882\xae\xdc'\
+\xfb\xbdm\xdf\x87CL\xe0\x8f\xcc0\xef\x03\xd2\xa7\x0c\
+O<\x1f\xf7\xcb~\xc3!\xc1\x80o\xbb\x0fP\xf3\x0f\
+B\xe0\x99\x5c\x22f\xfa&#&(\xf9@o\x81p\
+ye\x03A\x87\xd3@\xeb#H\xc4\x084\xb7P\xeb\
+\xc2\x8e\x9f\xff\x1f=\x0d)\x1d\xfb\x0d\x07\x9d}CI\
+\xc78\x90P\x99{\x02\xc3U\x86v\x046\x97\x94\xde\
+e^\x81&\xcbQ\x8a}\xdf\x96n\x81dS`)\
+\x90&{\xab\xa4\x09R$\x1c\x04\xf6\xc7\x5c\x0di#\
+%\x08\xec#\x9e\xb3EBp\x1f\xec\xe7\xf9\x90\x7f\x9d\
+\x86\x00\x00 \x00IDAT5O\xe8\x93\x05\xf5\xf7\
+\xf3h\xbc\x98o\xf4\x14\xa5 \x9c?8\xfe 90\
+\xd0\x96\x88\xf1\xc8\xeb\x9b\xf5(\xe8\xe2p\xb3\x8b\xbd\xfe\
+b\x92b\xe8\x11Pa>Xg\x04\xb8\xfe\xe8R\xda\
+\xed2\xbe\xf4\xfb\x0e\xb6{ja\xc5\xf5\x12\xe3\x84>\
+k\x90M\x818\x81U\x1d\x12b\x90l\xc7\xaa\xfb\x0b\
+\x06\xb8\xb7'\xbb\xb1\x82\xb8c\x7f\x10\x98\xd6yM\xc6\
+&\x02\x00df\xd4\x066X\xecA*\x90\x91\xa36\
+\xb9\xe56\xe0\xbe\xe1x\xa1t\x89\x1azJ\xf1h\xe3\
+I7\x0f\xce\x0d\x90\x018\x1a\xecs\xe6\x93s\x8c@\
+\x025\xfdp \xe00\x0a\xe1\xd9\xaf\xe7R\x02\xa0p\
+\x1et\xefr\xa9\xce{ebG\xbb\xbbT\xdf\xcbz\
+e}\xa2'\xa5\xc7@\xf4E{7\x05T\xe0\x90\xc2\
+\xbe\x8c\xcc\x9e\x0cq\x07\xfe'\xe8?}\xde\xdf\x93d\
+b8\xd4\xc5\xee{g\x93]J . \xb3\x90\x09\
+\x8b\x141e\x167\xad\xfa\xaf\x0b\xe9\x05rl|\xac\
+K!\x0f\x0c\x07\xd0k\xfc7\x12\xd2\xe1\xa4\x8a\x1b\x02\
+\xc8<m\xb0or\xa9\xec\x0a\x10\x1ap\x0b\xfd\xdcS\
+\x1ev\x9d\x1a\xf5\xa3\xa9*\xb0\x09'\x15\xf6)v\x1e\
+$\x8b\xca\x94G \x11\xc7\x0e\x83~\xadtB\x96\xf5\
+G@\xe8\xe7)\xd7ZJ%\xbf\xa3\x12\x8d\xa3\xd4\xde\
+PPt\xbaT\xf1\x9c\xf4\xa9\xef\xcf\xea\xcf\xee\xcf\x12\
+\xa2\xf5[\x85\x04nx\x8d\xc9\x8c\xaa\xdb\xc7=.\xe5\
+\xdc\xeeg\xb8\xd8uK\x17A\xfd?\xac\xf6\x88ki\
+\x9dyM\xff/M\xae\xd7s\xacU\x05<(\xc5\x11\
+)\xa5\xb9)\x9f\x18>a\xe6\xe77]L}o\xee\
+b\xaf/\x9fu\xd9\xac\xcb\xecsvp\xb1\xebv.\
+B\xeax\xc6~}\x93\xf5\x14Pz\xb0\x22\xfd\x93\xe3\
+H\xb7\x86\xe0\x12\x00\xb9\xf4z\xd3\xde\xaf\xaf\x02t \
+w\xb0\x1f\x95!On\x99#\x0cN39U\xa5\x0b\
+\x7f.\xe3\x11\x01\x03'\xf1;!\x8d\xdf!>~S\
+_q\xb1\xc7\x5c\xd7\xa5iw\xf8|97\x02J\xee\
+\x89S\xe7`\x9be2\xb3J\x88\x82\xe4\xa0\x9b\x01v\
+\x14\xdc\x13 k\xd07$&\xd7r\xa9\x02\x80B@\
+@\x02\x9b\xf6\xe5\xd3\xba>\x9b\xda\xdc\x9a\x884\xd2\x91\
+\x11K\x9b\xd8s\xf5\xcf\x9a<W\xd8\xe8\xd1\xffQZ\
+L\x89\x81\x1c\xd8\x084s\xce\x88\xd4|8\xdc\xa5\xf2\
+\xdf8\x978\xbf!{\x94~\x01\xf9\x10]\x0b@\xd4\
+\xe8\xfb!q\x1d_0>\x7f|~\x85\xe4\x9b\xdb\xc5\
+\xaes\xbaT\x08_\xc6GH\xe6p\x88\xf7t\xa9\xda\
+ \x8a\x14\x16\xbd\x14m\xba\x85\x00\x22`\xd0\x92\x80\xc6\
+\xfbH\x00\x80\xbc\xe4\x5c?>I!\xa3\xd5\xf9\xc9\xb8\
+Wd\xdcY\xaf\xc3\xbd\x82>\xe0|\xe59\x15\xc8\x8a\
+\xee{\x90\x0c\x0a9\x1ez\x99\xf9\x87d\xf0\xe1\x9c\x88\
+\x0a\x84\x95\xd6\xefd,\x1cg\xaf|i\x82@\xe4Z\
+\x9a\xfdtP2A\x90UPS\x87\xc3\x0fTg\xa4\
+\x8d\x8d\x82\xc7`\xc3\x90\xc6A\x84\xf5\x94\xda\xcf\xa6v\
+\x1b\x85\x16\x99\xc9\xc6\xb0\x0b\xb2\x0c\x14*\x861\x0e,\
+\x06$\x0e\x17\x7f\xc7\xe7\xb4\x91z\xae,P\x0cx\x02\
+\x1e\xd4 \x11Q\xa1-\xc75\x0a\x84p\xf0cP\x03\
+e\xc2p\x07*\x8a\x02\xc4\xb0\xc1\xf0R[.\x9b\xdc\
+lP\xb7\x19I\x1c\x05\x22\x92d\xdcqX\xda~\xe3\
+,\xf8\xb6\xc6\xb3\x1d'j\xe3_\x91k\xc9\x86\xbf\x89\
+\xa4\x8d\x0c!\xb5\x9e@\x08q\xc8\x81\x88\xb2 a\x9b\
+\xa4\xcd\x10l\xd3p\x0f\x10\xf9\xe5\xe0\xc3\x11\xe2~_\
+\xe4>q<\xc2\xe0d\x83\xd1\xfd\x01(+\x86oc\
+`\x8f\xde\xeeR\x91sA\x8aA\xdbF6*m\xe8\
+\x88\xa4>\x903\x19\xa6\x8cr\x06\x9c\xf5\x01{95\
+\x98@\xe0\x99\x87\xa5\x9b\xc0\x06\x10e\x1cn\x1c\x1f2\
+\xf2m{\xb1y\x1b\x08?\x86\x17\x0e6\x0eE\xeb\xf8\
+\xe3\xa0\xb0n\x96\x0bv\xfb\xbc~Xg(\x1a^/\
+\xd9\x04\x1ap\xc8\xb9?\xf6\x11\x81\xac\xa6\x1dXDZ\
+\x96\x8buH\xa0 \xbf\x06\xf1\xa3L]\xd4T\x82,\
+\xe0\xfd@CU\xe3\x18\x90\xb3\x15\xa7;h\xc1.\xfe\
+Q\x97\x0a)@\xdb\xa0}\x05E}\xa3\x22\xd9@\x9c\
+i\xab\x82#\xc3\xfdc\xa0\x83\xe0YT\xfa\x88\x00\xd3\
+R\x22\xbd\xdb:\xda1\x12\x08\xc8\xe3\x0ft\x1fC\x1d\
+\xc3\x9dv\x8d\x90\xf6-\xaey\xbc_\xfb\x88}\xcd\xbc\
+a\xe8\xb5\x9c\x02\x18\xb8\xcc3\x07&\xe3\xc7:a\xbe\
+8X\xe8\xb3~\xbf\xcb\x0b@\xee\xdbvm\xe8k\xb8\
+\x0dX\x0f@\xba\xf7Pm\xdb\xee*Eb\x1c\xe0\x96\
+`\x1cy\x1f\x01\x1e\xee\x8f\xc85\xff\xcf\xbc\xb7\x01\x00\
+\xf4\x01\xfa\x94@\x5c\xdb\xee\x8e\x089\x19k\xe6\x13=\
+\x8fc\x04\x8b\xf8\x17\x5c*h\x1d\x81:\xf4!\xe3\x89\
+\xe3N\x9b$\xf4;\x86\x0d\xe7\x03$H^{\xbak\
+\xa5\xef)]\x01*\xcd~\x049\x04d\x9e\xe7\x22p\
+\x81^E/\x13X\xc7\xf1x\xb5\x1c^\xf4\xc5\xff\xa7\
+\xeb\xcc\xe3\xfe\xab\xc6\xf5\xff\xdd\xfb\xf9j\x90\xe6\x12\xa5\
+\xa44*eh<\x9aPH\xa6$\x89\x83d\x88\x92\
+\xccc$\xe31\x97\x83\x06\xa5\x10\xca\x9cC\xe6\x0c\xfd\
+\x0a\xc7pB8'\xa5L9\x14\xe1D\xd2g\xef\xdf\
+\xba\xd7\xba\xde\xd7Z\xcf\xfa\xf2\xdc\x7f|^\xcf\xf4\xf9\
+\xec\xbd\xf6\x1a\xee\xe1\xba\xaf\x8bD\x01\xe3(\xf2\xc9\xb4\
+k\xe5\xca\xea\xb0\xb1\x11k\xe5\x1c`\x9c\xef\xa9q\xe3\
+\xf3\xf8\x7f\x9e\x1f\xfb\x16dZT\x9a\xc4J\xefD\xbe\
+\xa0\xd7\x96\xe7\xfaLXC\x1a\x8a\x9a\x0d-\x07\xaa\xf8\
+R\xf1B\xae\x0c5\x05\x1c$\xb3\xec3\xcfI0\x11\
+h\xa1\xeeC@\xcc\xba\xa32\x04\x87\x06\x81=\x81\x1a\
+\xcf\x19\x88%\x895\xf6\x19]7\x95\xbf\xe1=a\xcd\
+~\x83\xea\x03\xd0o%\x1e\xdc\xb3\xca\xfb2\xcfYG\
+$\xca\x814\xd3\xd2F/\xf0\xc6]\x22\x8d\xf5\xcf}\
+\xd1;\x0a\xe4_\x019\xady\x0e\xe4\xd5\xc3?\x9e\x10\
+\xd6<\x0f\xc6\xe5OaM@\xc1zS\xa2\xdf\x10{\
+d\xe2N\x0ak\xb8\x0a:5\x22\xd4\x15|>\xe1\x9f\
+p\x9e\xc4\xe8\xee\xac\xfd`\xd3\xa6\xd0sKa\xefw\
+E\xf4\xeb\xc3%\xc3%\x95\xdc\x17\x04\xc7\xfc\x16!E\
+`\x93\xdfj\xdaz\xda\xba\xfaQ\xb95\xf5\xb8\xdc#\
+\xfc\x9a\xe8\x11\x1e_\x17\x96\xc9r\x935\x89\x83\x8b\xa7\
+\x8b\xa3\x02\xbc\xf4\xf0\xa5\x87g\xb2-\x0a:\xe2\xc2\xa0\
+\x22?m2\xdd~\xda$C\xde\x0bK<\x89\x10\xf6\
+\x01\x90d\xf8\x8f d\xbf\xb9\xe2\xa4P\x13\xca\xba\xf2\
+/\xac\xb2c\x1e\xbf-3\x06\xaf\x9c\x9f\xdb6\x9c\x0e\
+\x90\x7f\x81\x80U@\xee\xd7\xfb\x845\xe3\x1b\xf5\xf2\x13\
+\x9aVP\xb8\x1ehy\x11y\xa9\x13\x1f\x22\xc9t\xa0\
+\xb3\xc1\xbc\xe1\xbc\xa1\x02\xcc[+\x9b:-\xac@\x82\
+\x17\x7f\x0ak8!\xb4\x9f/.\x0ekz\xfd#A\
+\x90\xae{\xbaO\xb2}\xaaL \xe4}\xd3\xdd\xc2\xd2\
+\xff\xad\xbfXo\x11\x5cY{\x855Pk\xe4\xc6u\
+?\xe3\xbf\x96\x04T&u|c\xfa\xfb_\x84e\x92\
+\xbd\x17Ni\x5co\xfd\x5c\xb2\xcf\xa6\xf7\xfbq\xb2\x14\
+\x80/\x1e\x16\xa6\x8a\xe6\xb6\xcd<;<\xb3.\xac\x88\
+tB$\x14\xd8?\xa7c\xc2\x1a\x04\x12dzb\x8f\
+\xa7%\xc5\x1cX\x8f\xcd'\xdd\x8a\x88\x86\x82\xcd\x9f\xf9\
+\x04\xf2\x87\x806\xc5K\xb7\xcf\xbf?1\xfd\xfe\xc4\xcc\
+A\xb0S\xc4M\x04\xa2\xd3\xbd\xa7{M\xb1n\xbf\x19\
+\xd6\xb0\xb4\x93\xa8\x84\x03#\xd4o6\xa8\x814\xb2\xe5\
+\xf3\xeb\xc2\x1a\xff\x9b\xf3S$}9\x80=J\x01\xe2\
+\xee\xcd\xb9\xc7~&\x04\xcf\xbcFXz\xdfk\x0b\xc7\
+\xd2\xd2na\x151\x93\xfd\xf7s*\x82\x9b\x8ay&\
+\x9bK\xfe\xde\xe2\x1ea\xe9\xe7\x8f\x09k\xce\x01\xceE\
+\xe2\xa3Ou\xe4\xef\x22\x05u\x82\xad\x0f\xf8\xe1\xfa:\
+F\x1c\x15\x04\xda\x22a\x05\x8ao\x7f\x9e\x96a\xb1\xe1\
+\x8f\x0f)\xad\x18\x0e\xccu\xae.\x9e\x18\x96>.C\
+\xca\x1a\xf9k\x12\x8c$\xf6\x9e\x93\x05\x0f\x8d\x94`\x9c\
+\xd2sK\xd6\x9c#\x90\x96S\xc8\xc4\x9f\xa2 \xb0\xbe\
+\xb9\xad\x8a\x7f\x8c\x1c!\xea\x09\xec\x1b :h\x81\x80\
+\x8b\x06\x7fF\xf1\x92\x13\x0b\x92owbN\x89\xe9\xe1\
+\xdf\xc3\x9asG~\xc7xdX\x93\x00\xc2/W\x8b\
+\xed\xf4\xac\xb0&\xb1\xadB\xf4\xca\xe9\x82\xe9\xfc\xe9\xfc\
+\xdas\x9aY4Ojz\xe3\xe8\xfd\xe3\x86\xc5bh\
+H\x1d\xe4\x138\xec8\xb4T\x14\x80\xe4\xd2K\xa1\x8a\
+\x80\xd9.\xe5\xc8\x1b\x22\x0e\xe4\x0a\x87\x0c\x88\x9d\x0er\
+\x1f\xf4:\x10\xe6\xab\xc2\x9a@\x90\x03\x8bLH\x0f%\
+\xed\xd9\x8c\xf9\x9e\x83\x11\x08\x9cz\xd3\xd2\xe4(\xa4<\
+\xbfR\x80\x88\xbe\xe4\x1bT\x11\xc1\x81\xc2A%\xf1\x81\
+#K%\x09\x87\xa0\xd3\xd3\xc61r\x85\x9b\xf7\xe9I\
+\x0b\xd7\xb3Nt\x09Tp 8xq\xb8\xf9\xfb^\
+'\xbeo\xc9\xa0\x12E%fC\x05J\x22\x07\xb4\x03\
+\x80C\xc2\xfb\x108\xf3\xc5\xb8\x13\xb8\x9fV\x0eVC\
+wpt\xff&\xd6\xca\x93K\x86:C\x05o\xad\x90\
+0_7\xcf\x8b\x05\x87C\xd9\xabDp@\xaee(\
+z\x09\xf8\x80V\xa3\x9b\xca\xfb\x80\x5c\xd1|2+}\
+E\x02\x94\x0d\x14Y/\x1c2\xcd\xeba;\xbdo\x9d\
+\xdf%0\x06\x01\xb1\x81e\xcf\xca|\xd28\x93\xb02\
+\xa9\x12\x09\x9b>\xe0\xc3Q_\xd7\xea\x04\xcbz\xf9\x0d\
+\x15%\x80\xa1\xf2\xba\xb5\x03\x7f\x12\x11%Q\xc0\xfc\x00\
+\xa2x;\xe9\xa2\x03\x95\xbfs\xd7\x22@`\xcau\x91\
+p\xa8\xf3\xa5$N\xd0G'\xe0\xa2\xf2\x7f\x17!M\
+z\x87\x10\x96vUd\xe9\xb5v\x02\xea\xe0B\x02\xb5\
+\xe2\xf5J8=\xa8@\x1a\x87o\x87\xd5\x1e2\xff\x1f\
+d\x5c\x1f,\x1b\xa9\x13l;(P\x00\xa9\xd3\x93\xd8\
+\xf1=\xf7\xcb\xfe\xa0\x0d\xd8\xad4\x04B\xbbjc\xde\
+^\x81\xfdV\xee\xd1^\x8e\xb0\xe8\xf7=\xc6\x95u\xc1\
++-:\xbd\xae;\x0e>d\x87}\x00\xc4\xfe\xc9u\
+Qq\xe4}{U\x11\x12\x85TJy?\xb8<H\
+T\x10\xd0\x92\xa0`\x1f'QK\xa0\x08\x04\x90\xbf\x17\
+bc\xd8^\xc8- \xf8\x5c_\x8f\xf0a\xdfc\x9e\
+s=\xbd\xbc)\xcf\xa9o\xc9b\xdf!\xa1\xa4V \
+d\x91\xbc\xbf\xb0\xfe$\x8f\xe6J\x1a\x09K9\x18\x90\
+\x8e\xad\x02\xe5SF\x1eG5\xd7\xd7\xbe\x9e\x1d\xc7\x22\
+\xd3D\xc2\x8f\xf9\x8c*\x02\x09*\x1c\x17%&\x816\
+z\x1d\x03\xcd\x95\xfe4\xe7\x84\x91\x1c\x9csTZu\
+^\xcd\x97\x96@\xdc\xe7&\xe3B\xc2\x14\x87L\x09\x86\
+\xf9bA_\xe1\x86!au@\x81\xba\xaf\x82\x80\x22\
+Pf\x9f\x04qA@NK\x1dH\x07\x90\x14\x82\x1e\
+:\xc0'@\xe6>\xf8\x1cHMQ\xdb\x10\xb7\x87\xd7\
+-r[\x225\xb3\x0c\x17\xd7\xd3\xf5:z}1O\
+@\xbeh>Paw\x85\x87\x04\x8f\xa0\xa8A9\x16\
+\xa4cN\xe4@zH\xe0\xc3\xfa\x84|\x91JM\xc7\
+\x86\xbf\xe2\x99\xd9\x9c\xf8\x1f\x9e\x1c\xd6\xac\x1f*\x8bT\
+t\xf0gX\x0f\xc8\x12\x82\x04c\xdfd\x1d3~ \
+\xd3\xb4>\x87_\x84\xd5@\xc1\xaf\xc8\xa8!\xf3\xa6\xeb\
+\x19~\x1d\xd6|>-]:\x7f\x91I3+\xf7G\
+\xc3*\x09\x97\xc7\x9d\x04\x07\xcfM\x95\xe8\xe1)a\x99\
+s\xa3\xa8o\xd0\xb3\x0b\x82\x00\xa4\x06-\x0d@\xe9E\
+\xfe5\xfdz\xban\xba.s,\x14\x16\xf0\xdf\x15r\
+\xbf\xf9w*\x04}*L=\xc9\x97\xd7\xf1\xb2z\x95\
+\xfc\x89q\xb7d\xf7\x96?y^\x91\x9f\xcb=\xc9\xc9\
+{\x89J\x97Uu\x08\xb05\xafs\xefz\xf2\xdf\xa6\
+''{\x8a\xd6\xf7\x06M\xe2\x91\x84\x13=\xcf\xd2\xa7\
+\xcf\xabz\xfd\x8a`1\x19\x19\x10\xff\xd8\xb5w\xa9\x89\
+\x87\xe9\xada\xe9\xba\xce\x0fk\x90\x0fp,\xa8\xe5\xc7\
+\x09\xd9hm\xf8~\xe3\x07\xd2\xb2Q:$VL'\
+%{Ez==\xd9\x19\xe9}o\x1d\x17\xe3\xa2\xd1\
+\x0fW\x01e^7,\xb7X\x94\x9f+\x110\xdd6\
+\xac\xe9\xa5\x8e\xb0\xe0\xe3\x15\xe12>/L\x88\xa1\xdd\
+\x9a\x84\xdeR\xb2\x95\xe9\xffw\x0bK\xaf7'K\xfb\
+Pt\xc8O\xc9\xbf\x5c\x9c\x1b\x96{\xfe/\xca=\xff\
+'\x86\xa5\x9f?7,\xbd.\xa5\xcb\x1c3\xb26?\
+\xdf\xf9\xff\x89|S\xfb\xdex\xd0x\xe0x`\x93\xb8\
+\x12\x92l^+\xd9\x9a\xea\xd9?\x22\xbd\xef\xb6a\xe9\
+\xf5\xf6a\x0d\x99\x9d\xf6\x19\xef\xb3\xda\xc7 \x1b%\x01\
+\x91U\x02\x92\x1f;\xef\x1dV+\xc1\x0e\xc0\xf6\x98w\
+\x0f\xffb~\x948\x04H\xa8\xfct\xbe2*\xf1\x86\
+\xa8\xabU(\xcd\xaa}b^AF\x98N\x8d\x5cy\
+\x1d.\xd7~\xa7\xd6\xba\xf1}a9\xb1\x9e\xd5bR\
+ \x9bL\x88\x89Kj\xa0\x0eg\x85\x11\x22\xb4\xc4\xea\
+\xba\xedw|=\xd3\xf3\xd5\xd6\x15z\xea\xe5'\xcd\xcf\
+\x0bk\x0ajR\xcdZz~\x98\xc8[wh\x0av\
+:?\xc7\x1b\x93\xfdA\xfbw\xda\xcf\x16\x7f\x0e\x13\x99\
+\xfb\xb3r\xc2\xe4\xa4\x8c4!\xf1\xad\xc2\x9f\x11:\xf8\
+\x0dB\xf4\xf8\xbc\xa1\xe0|qXs\xbe\xe3wr\xae\
+\xb1\xff\xc2E\x072\x0b\x7f\x5c\x09\xe1\xf1\xcba\x95<\
+u\xba{\x98T\x0b\xdeY\xd7\xbb\x91,\xfa\xb9\x13\x8e\
+\x22\x11\x9ew\x09K\xff\xff\xb8\xb0\x1a\xe7\x0c+\xc3\xd2\
+\xeb\xcf\xc2*\xb9#\x08\x16#1\xd4\x0aa\xff\x01\x99\
+@\xfc`q\xc8\x98\xb3@\x1c\x13F\xf4\xb0\xbf\xa2&\
+wyX\x13G2. 1(D\x13g\xe1\xc7*\
+\xce\xf0>\xa9\x82\xf1puX\x13\x07\xcb\xbf_\xe9\x89\
+s\xab\xa0\x01\x0a\xa8}\x10\xe0\x00\xc8\x11\xa7w\xce\xec\
+\xc8\x8f\xd3F\x7f\xbc\x10\x03\x5c(\x818\x0e.=\xa8\
+\xcf-={Y\x1ed\x8fF\xf6\x0b=\xccK\x04\xd5\
+F\x96\x04y66B\x1c\x0c*!T\x9ep(\xf9\
+9\x01#\x99~\x1c\xd8\xfe\x95\xff\xe3\xfd\xe9\x11\x91c\
+\x09\xeb\xad\x07\x8eJ#=\xe4< \xde\x0f\x87\xa5\xef\
+\xb1g\x22\x100m\xaa\x80n\xa3\xe5\x81ZZl\xc5\
+a\xbaX\x10\x10\x0e\x5c\x1c\x03\x1c\x1a\xbe\xef\x1do\x02\
+\xe2^&\xac\xd7\x8b\xff\xbd\xc9\xab\xca\xf3\xc2\xb1\xbdK\
+\xe1|p@N/\xd0\xff\x0a\xcax\x85\xc8\xe0\x08\x10\
+\xe8)\xa7'}(=G\xab\xe8{\xe3p\x7fTd\
+\x92\x82VZ'\x1a\xc7\x88\x0d\x01\x08,\xa4'$\x22\
+\x08\x9cp\xf8\x91\xd7\xa2RJ\x85\x85\x80\x0c\xb6i\x02\
+H\xe6\x03\x19~>\x0fG\x87\x85\xb4\x97\xc9\xe4J\xa5\
+\x16(\xce\x9dL\x16W\x129$dz\x96s6\xb0\
+-\x84\x00@\xde\x90\xe7G\xe0N@\x06t\x96\xd6\x06\
+\xee\x8f\x84\x12\x0ebOV\xb7\xa5+\xf7\xb0\x8a\x97\xf5\
+@\xc5\x90\xebA6\xb1\x0f\xb4\x08\x84\xf9\x1c\x12)\xe2\
+\xfe\xf0\xfcb\xfe0\xefzr\xbb\x1a(\x97\xeb\x02Q\
+\xc0\xbc\xa7uew\xe9\xb6C\xb2\xb8W\xe9YZ\xf1\
+\xc8\xe2\xf8\x0c<g\x1c02\xa3\x0a0\xe6\x9d\xc4\xba\
+\xbb\x93\xe6/\xeb\xf0+\xeaU\x86\xbb\x83\x00\xb8\x93\x8b\
+\xf3x\xa1\x82@b\x84\xca\x1dr\x86\x8c/?\x07y\
+\x01\x1b;$P$:I\xdc\xf1\xcaxq\xf0\xb1.\
+y?*\xf0p~\x90\xd0\xe1\xef\xd8\xd7\x18\x07\x12:\
+\xbbj\x1e!sH\x82\x80\xc0z\xd3NF\xef\x16\xb1\
+r\xef\x98\x9bLje\x1c\x92\xd1{\x09\x12\x0e\xf2\x81\
+V&zvq(\x98\x97\xdc7\x81\xcf\xde\xca\xf8\xef\
+\xa7u\xc0\xf3f\x1c\xe0R`}\xf6\x88+\xe6'\xfb\
+v\xdf\xaa\xc1+\x7f\x0f\x99\xaa\x12b\xee\xf5\xc41\x90\
+.\xb3\x13\xcb@\xf1\xd8\x1fa\x07\x07\xc1\x06\xf9\x12\xfb\
+\xa2d\x96\xe6\xb3\xc2\x9a\xd6)z\xe2\xf5<,?)\
+N\x13*H\xc3\x8da\xcb\xe4j\xcb>\xf6\x13%2\
+\x7f+$\x00\x8e\x00\xd7OK\x09\xc8\x12\x02q\x90\x03\
+\x90\x94\x02\xe1\xa72D\x80\xe8\xde'}\xb1\x7f@\x0e\
+\xfb]\xf5jV\x0e\x8f\x9c\xb8\xce\xac\xcd\x9fm\xe4t\
+\xe9\x01%a,\xe8\xbc\x03\xe1Wd\xabH1\xf6\x01\
+\xce\xdb\xfe\xfcc_\x05I$Gx\xb8!\xac\xa9t\
+\xabb\x04\xbb;\xdc\x01+\xce\xc9V+\xb1\x90z\x92\
+0c>\x92(\x84d\x89@\x5c\x89\x8b\xf1~aM\
+\xe5\x05R@z,Y/\x9c\x0f\x9cG$\xe2@p\
+\x81\x8c\x81\xdc\x96\xfb\x15d\x132+C\xff/\x0ck\
+\xe6\xb1\xc6\xd5\xa4Q$@\x08\x90IT3n$\x12\
+\x98O\x9ck\xac\x17\x12\xf2$dI\xdc\xb3\x9f\xd0r\
+\xb6V\xd9\xe7\x80\xcc[&\xee\xa2\xc2\x1eo\x16r\xce\
+W\xd4#\xa4/\xbf\xe2\xeclU'\x9b\xeb\xc7\x7f\x82\
+;\x84\xf3\x96\xca\x9e\xce\xb7\xe9\xff\x85\xa5\xe7\xb0cX\
+\xfa~\x9b\xb0\x86\x9c\xf5\x16q\x84\x88\x1c\x0c\xb9+\x9f\
+\x17;\x8b\x9cK\x85'\x1c\x7f#\xc7\x84<\x18\x1f\x1c\
+V\xd9\xd9AD\x98\xecM\xac\xfc\xf4\xd0\xe7^\xdft\
+\xaeL\x8f\x0dk\x12w$\x5ch=\x80\x9c\xecp\xf5\
+r?8w\xdf\x17\x88\xf5a\x0d\xb9\xe0\xa3\xc3\xaa_\
+3~<,}\xff\xb1\xb0\xa6r\xca\xf9\xab\xe7k\x12\
+2\xf5\xea:\xb0\x8c\x00\xee\xb9\x95\xac0;\xf8\x0f\xd1\
+\xfd_\xdc@\xaa\xe5\x97\x86\xdaz\xe8\xad\xbb\xf2\x8a\x8a\
+\xc2\x03\xe6\x83\xe6\xf4\xbax~X\xe3WJ\x85\xc7\x9c\
+\x17w\xc8X\xc7\x15\x8b\x8f\x86i\xff\xfc\x85\x127\xaf\
+PE\xf1t\x91\x1aF\x8bIz\xd7\xe8\xe9\x9e\x1e\x94\
+,\x8dG\x16\x09H\xe7\xd0\xad\x07\x845\xaa\x00\xc1\xe9\
+\xf0\x85,\xbfw\xe9\x22\x05>\x8b\xc3\x17\x8fZ\xa4s\
+h\xfazXC\xce\xf7\xd8\xb0\xca-4<\x7fxA\
+\x96i\xd5\xfcrO<\x09**\xab\x1b\x16\xa4\x03\xf2\
+\x98$\xea\xe6\x07\xcd\x07\xcf\x0fj*\xb4p\x9a(\xf0\
+7\xf2b\x9d0\x15\x86~VI\x13\xc7\xfd\x92\xed\x9b\
+\x03\xdb\x7f\x8f\xc0\xd6\xec\xf0*hN\xa7\x86\xa5\xdf\x8f\
+a\x0d\xa7\xc5\x16\xc9\xee\xdc \x9d\xf0\x1f\xa3\xf1\xe3\xa4\
+\xe4^\xbf1\xac\xc6?K\xcf\x08\xab\xe3\x8fZ\x83\xa1\
+\xe3\x04\x94\xdc\xef\x9d\xc3\x1ardZ\x11ay\x07!\
+\x09\x87\x0d\x88&Z\x91~/\x15.\xb8sD\x0a\xe7\
+\xfdS\xfb\x87[+\xe5g\xa5\xb0{\xa7\x8c\xc4:U\
+-3\xc4m\xa8X\xe0\xa7\xe9}|\x1e\xbf(\xac\xf1\
+\xab8oA\x04|\xae\x93_\x85\xfc\x12\xf9\xd1\xb3\xc2\
+j\xc5\xdfH\x12\x10V\xc8\x99\xa2B\xa7\xf1\xf2\xdf\xa9\
+7\x1e5:'z\xd4\x13\xcf~>\x9e\x14\x96\x9e\xeb\
+\xf9\xa50>\xdd\x18\xd6\xac#\x917\xbaUR-\x09\
+\xf6\x97P\xa3\xc0Oy\x84T\xd6\xe4Gq\xee\xa4\xfb\
+\x0ds\xe2\x10d\x83\xf7u\xe2n\xf9+\xe6J \x11\
+\x85\xcc\x22\xf1\x83Z_\xddJ\x0f\x12\x83sX\x9c<\
+\xf3>a\x95\xf4r\xe5\xf4\xb30Ah\x0eo2\xff\
+zc\x1ft@R\xa5S>\xdcQ\x99\x85\x13\x0b\xb9\
+\x84\x03v\x1c\x93^\xf7\x96\x0a\xe3\xf6\xcb\xf5\xb7\x9d\x09\
+\x87\xcd\x97\x03\x13\x87\x82\xca\x19\x81\x1a\x818d@L\
+p*\xdal\xac\xc8,\xc8\xc1YE\xbe\x8e\x80\x80W\
+\xc8-\xc4&9\xff\xb72\x88\xf4\x1a\x13\x08\xd1KN\
+\xc2`G\xf7n\x97\xfbd\xc0qt\x09\x04\xf8|\x1e\
+0\x15Vt\xdc\xa9l\x91A\xfe{\x17@\x10@\x8b\
+Tl\xd8W\x0b\x13\xc7\x0f\x87\x8f\xf7\xc5\xe1 Pg\
+\xc1\x11\xf03\x0e}\xcf+\x81?\x8e\x22_r\xa4\xed\
+(.-\xd7\xb7v\xc0\xb2Iq\xb8V\xac/\xb6\xdf\
+\xf7\xabGH\x8e\xdb\xf8\xd8\xb0\x7f\xc0\x8a\x8d#\xc3x\
+s\x1d\xf4\x9a\xd2J\xc0u\xd3r\x00\xa9`O\xcaF\
+@\xf4\x05\xe9\x9a^\xd7\x91\xfc\xe1\xd8\xe1Pk\x836\
+\xe4V\x95\xe8U*\xc6\xbc\x12\xe8p\xff\x5c\x17\x07\x0d\
+\xf3\x83\xcf]\xd7=\xce%a\xb4\x86\xe6\x89\x02N;\
+\xa28x\xbd<X\xaf\xcf\xce}V\x8e\x80\xa2\x13\x0e\
+\xd9`O.F\xe5\xacrO\x94\xeb\xa9d\x83%\x10\
+\x03\xd1\xc2<\xed[\x02\xfa\x1ez\x90\x01pBle\
+\xce\x81\xe2\xf0s\x1d=\xa9\xd16\xda/\x1e\xa7\xcf\x83\
+\xa4\xf1:U\xf0y>\xf4\xbcq0\x10\xf0s?\xcc\
+g\x024 \xd6\xcc/\x12:\xda_\xd2g\x96\xca\xf0\
+\xff\xc9qg\x03%\xd1C \xc0s\x95L\x9f\xbfg\
+\xbcye|\x14\x88\xbb\xe5\x80\xde\xcc^\xae\x92\xc0\x9f\
+V\x12\x1c\x03\x02\xaam\xad\xfb\x0e\x22\xa3|\x0e\xdc\x10\
+K\xe66)-W \x88n\x0ck\xfe^\x9c\x0f\x19\
+y\xf37\xcd\xb3-re W\x0cW\x9c_t\xd1\
+M\xea$\x16t\xef\x07\x1cp\xccK\x02\x03\xc8\x82\xd8\
+/\xd8\xef\xd9\xe7\x987\xec\xcf\xaa\xec\xfa>y\xae\xfd\
+<c\xffb\x9f%\xb1\xda\xb3\x96s\xb0\x91\x18d\x9d\
+t\x09X'\xdeh\xe1\xe88\x04\x02H\x9c\x91f\x8f\
+Sk\x1b=tr\xe4-C\xc5y\xd5\xabvp\xfd\
+\xcc\x17\x1d\xe8v\xf0!c\xe2\xbe\xfb\x00\xb9Gp\xe9\
+\xfa\xac2C\xcf\xbb\xa0\xde\xf4r\x92\xf17\x1b}\xd7\
+{\xef}\x02\x15\x0c\x02\xd1s\xe4\x18\xec/\xf9\xb7\x83\
+\xc4\xc9\x80*\x0a\x95\x0b\xc8\x13/\x0ckz\xe6\xd1%\
+\x8e^\xd1\xf3\x9b\xf3\x8d\xd66\x106$.\xd8'\xe8\
+\x15\x15\xe4\xd6-\x04T@\x19\x1f\xc6\x93\x04\x19\xfb4\
+\x90gA\x9c\x0d\xb1\xa6\xa7\x9fs\x03\x87+\x02\xb4\xc3\
+\x9bJ\x0a\x0e\x1a\x09\x04~\xce~\x00\x9b<\xcf\x8d\xf3\
+\x87\xeb\xc1\x9f \x81)\x04\x84\xfd\x14z\x9a\xa5\x7f\xed\
+\xfd\x00\xffI\xf2\x84\xf6\x13h\xa9 \xc0\x94\x1e\xbc{\
+K!)\xd58\xba\xb2)\xb6}H\xf2|>\xea\xb9\
+L?\x0dK\x97\xb3GX\xb3\xef\xca\xb1\x1c\x8e\x0dk\
+\xd4%@p\xca1\xf4:\x87\x5cJ\xfb\xae[>I\
+\xa4q\xfe\xb1\xee\x94\xa0\x19_\x13\xd6\xe8\xc1\x13\xf02\
+\x8eJLPq3\xb94\xad&\xb4\x1c\x02Q\x95\xc3\
+nd\xce\x1e\xf3\x9e\xd1\xe3o\x92f\xf5\xa8\xe7\xf3f\
+\xab\xaa\xeb\xed\x84%\x09\x0fZ\x16hyx_\xb2\xf7\
+\xd6\xca{\xaeX\xbe\xb3\xceS\xb3\xb3S\x89\x07a\xa4\
+s2\xf7b_Y\x13P\xd9\x11\x7f\x83\x02\xea\xeb\x1a\
+\x99B\x02'\xfe\x8f\xc0\x5c=\xc3\xe8\x92\xcf\xeb\x855\
+\xbd\xba\xb7\x0d\xcb\xfa\xf4\x9be}\xfa\xebs\x13\x91+\
+\xb7\xe3\x97\xc2\x14\x08=\xaf\x92\xe4M\xfbJe\xe0\xf3\
+a\x15\xb2M\xa5\x1f?\xcc,\xe1\xec\xe7\x22o\x05\x12\
+\xed\xbf\xe7\x9ce_\x06\x01\x0c\x92D\x01x\x86\xbc\x07\
+\x92`\xd3\xb0t\x0c<-,}\xff\xd5\xb0\xf4z\xdb\
+\xc5Z\x8b\xb5r@\x98[\x13&\xf9\xd7\x8b\xa7,\xee\
+\xb2H\xf3p\xf1\x9fa\xb9\xf7\xfb\xff\xa2\xf7;\x1a>\
+\xa2\xe5\xc3\xba\xea\xf2\x87\xed\x97\xffWX\xfa\xbbG\x84\
+5\xaa\x06\x90\xbd\xc1\xb9\xa0\x16^TnH8\x01\xe9\
+7\xb4z\xff\xb0:\xcf\xe7\x13\xc3\x9aV\x10Z\xa2\xc6\
+y)\xe4\xd4\x16\xfb,\xf6]\xec\xa3y\xf4\xbe\xf4\xfd\
+\xea\xc9\xd6\x90L\xe1\x9f*\xeb\xbc\x03;!XQ\x05\
+`\x7f\xe79\x0co\x0dk\xb8\x01T\x99\x1e?\x9c\xec\
+#\xb5P\xb5\xf8^X\xc3\xc9\x05\xf9^\xdce\xa8_\
+\xec\x1e\x98\x85\xdcR\xf5\xd6\xdcR\x85\x0a\x85Z/-\
+sJ\x05\x99\xc0:Hp\xcf\x14g\xc4\x13\x1a\xc4\x16\
+\x88k\xc9\xbc/\xfd!,\xdd\xf7\xcf\xa7k\xa7\x9f\xe7\
+y\x9a\x11\x19N;\xe3\xdf\xb1\xef\x9d\x1eV\xa1\xec \
+\x1e\x9c\x98\xa05\x8f\x04\x18* wU\xef=\xdc=\
+\x82\xf0\xa7]#\x93\xd0\xba\x00\x0d\xb91-\xd1 \xc8\
+\x85\x18B\xf5`\xf1?a\x95,\xd0\xfb\x01\xfb>2\
+\xad\xa84l\x17V\xf7_\xcb\x84~9\xac\xb6\xa0\xf2\
+\x7fp\xc7\xf8\x9c\xa4\xc5C\xe4\x80\xe6d\xe2\x1c\xac-\
+\xd4%N\x90L:\xc8{#\xeb\xa8\xf0s\x8eR\xe8\
+\xc1\x8fP\x8b\x82U.X'j=p\xcb\x0f\xac\xff\
+\xb4\x0cQ\xe0V\x82a\xa5\xa1\x1a@\x19_\x95\xcdz\
+\xeb\xc3Q\x82\x1e\x12H\x08Ba\x994zx\x81D\
+r\x80\x13\x00p \xe2\xe8\xdd\x22GN\x90p;|\
+8<\xea\x11\xb3\xec\xc9\xda\x0aL8\xf0\xaa\xcer\xf9\
+|2\x99\x22\x1dse\x0c6e6r\xa0\x92\x04\x9c\
+=K?\x09\x04\xa0}\x9fZq\xe1\x8a\x0b\x9b@\x83\
+\x84\x02l\x8d8r@pY\x008\xb88D\xb5\x92\
+^\x1ed\x1f\xd0\xe1\xe8*\x83Obe\xbeV\xba\xc2\
+@B\x09(q\xb4\x098q|\x09\xe46wE\xbe\
+\x8c\x1b\xf7\x8b\x03M\xa5\x80q\xec[&x\xce\xdc\x07\
+\xff_\x138\xe5\xf9r\xddT@\x19\x07\x9e;\x90O\
+ \xb7\x04j\xf4\xd6p\x1f\x04lT:\x84\x0c\xf0}\
+Q\xd1\xe0 \xc2\x01\xd7+\xa4=\xae\xa4\xc21@%\
+\xa5\x97M\xe1z{\xf6rHG\xee\xf7\x8f\xe5|V\
+QO\x00\xc2K\xcb\x01\x15=\xb1!\xbb\xf2\xdcC(\
+q\x04I\x04\x5cU\x1cO\xb8\x07\x86C\xe4\x98nc\
+\x9d\xf8\xf2\xf9\xb7\xeft\xc2\x99oTxPI\xb8\xa3\
+\xe5\x01\xcb\xf3\xc7\x81%\xe0\xe0z\x08\xd8y\xce<w\
+\xe6Q\x9f(\xebT\x0d\xfc\xf7\xbd\x1e2\xd0\xf8m\xdc\
+\x22\xb1L/\xdb\xd7\xcf\xdf3\x0fp\xb4\x08\xb4HD\
+\x92!\x16\xdb\xb7\xff\x9e\xcf\xa5\xf5\xe4]\x85\x1cex\
+KX\xed\x095\xb4\x97\x83m;\xedG\xe8\xb3\xb3N\
+\x19\xcf^\x06\x10\x84\x09\x15G\x02\x96\xdb/\x97e\x84\
+4\xcf\xe3Y{\xafK%N\xf3\xc7\xc8\x0a\x90\x0e \
+;x%\x91@\xa5\xb2\x92-.CR8\x00\xa3\x92\
+Mb\x8e\x80\x9cJ\x1c$~r\x88]\xe9a\xffd\
+\x9f$ \xea\x03\xdc\xbe5\xa4_/\xdaOL\xba\xc3\
+>\xca\xfe\xda\xcb\x9e1?\xd6s\xab\x0b\x08\x942\x9e\
+ U\x18?HK\x7f\xa5}\x9e\x04pC^\x99\x9f\
+K\xfa\xabp0}\xff\xc8\x10\xa2\xae\xb2k\x09LL\
+Z\xa4@\xd8\xba\xe7\xc8\x84Q\xf9\xfc\xb2 \x8a\xec\x93\
++\xf2\xec-\xec\xfb\x1be\xc8c!\x19|\x82\xc8\xb6\
+\xe8%T\x0f\xaa\xf73*\xc6b\x9bw\xe2\x8d\xc4B\
+\xbf\xde8/\x81N\x02A~S\xd1\x09\x1e^=\xbc\
+fxM\xc3\x06\xff\xddN\x15\x03n\x06\x12b?\xd6\
+u\xc05#N\x82\xa0\xfe\xca\x09\x01%\xbe\xdc\x22@\
+\xc2\x15n\x1eZ\x14\xa4\xc6\xe1\x96,\x05\x02\xee\xa1\x15\
+b\xc2\x0e\xb4>\x7fxIX\x85\xcc:\x81\xc0<\x13\
+\x99\x91\xd7\x17\xc8\x04q\xb7\xd0\x22f\xae!t\xde9\
+\x87@\x100\xaf\x14\x00X\x95\x08\xce!!_\xf8\xbd\
+\xf5\xebi\x09`?\xe9 \xa8N\xf0p\xbd$\xb6^\
+\x14\xd6\xac\x13HG\xf1G\x98Wb\xdfv\xcf+\x15\
+L\xce\x0fU\xc8\xcc\xa1\x80z\x02\xfb\x05PzZ<\
+\xe8\x0d\x15il\xf2\xcf\x9e4<\xa9\xee[Vk \
+1\xf1\xb8\xb0\xf4\xf3C\xc3\x9aqS%m|iX\
+\xfa\xbb+\xc3j\x82\xc5\xaaO\x92\xf3\xcb\xbd\xee/h\
+\x10\x22$V\x19\x07\x15\x90\x86\x13\xc3\xd2\xeb\x8b\xc3\x1a\
+\xfd\xfaw\x87U$\xd1\xb8ZX\x83<R\xa5\x1e5\
+\x88\xe1\x8a\xb0\xca\xc90\xfc\xb28\xe8&UC\x15\xe0\
+\x03\xc3y\xc3yZ\xbf\xa74\x09\x08\x12\x07\x90 \xbe\
+\xb0\xf4\x94g\xd2\xbe\x0b\xc4:\x1e\x01\xf9\x09\xc9\x9e\xdd\
+\x9cOpp@^\xc6<\x06\xa1\x019\xa6*in\
+\xedc\xfd\xd1\x9a*rls\x10)A\xe4\x1e}U\
+b\xf9\x1e\x16\xf3\xf1\x05a\xb5e C\xb9\xa3\xf2\xb8\
+g\xb2=\xaa\xbc\xdd\xe2\xacd\xefV\xe0\x92>o\xbc\
+9\xacB\xab\x17{\x87U\xe4\xc3\xb8^XrGW\
+\x86\xe5\x80\xa5p\x00\xfc ,\xfd\xfdg\xc3\xd2\xef\x8f\
+\x0bk\xe6;\xfb\xa7\xd61\x9c\x0d\x9cG\xd3Ya\xe9\
+\xff\x9f\x1d\x96\x8e\xe7\x1f\xdc\xfa\xc3[S\x80\xb3\xd8R\
+\x01\xfeU\x8b\xab\x17WW\x19\xc5\xe9\x80\xe9KS\x9a\
+W\xd3!\xd3'\xa6O\xa4\xbf\x7fVX\xfa\xbb\xcf-\
+.Z\x5c\x94\x03\xec}\x16\xf7I\xafg'\x0b\x99\xbd\
+\xeb\xc2\xd2\xff\xdf&L\xfe\xdc/EF\x97\xe6\xc3\xe2\
+\xaea\x95\x04\x105\x01\xc8\x0a\xe1\xc2q\x85_\xeb\xc7\
+l\xfb\xea\x0d\xcf\xad\xbd\xcfiz\xfd\x85|\x99\x9e\x9e\
+\xec\x18\xb5\x80\x5c*\xb6\xff\x14\xef,vJ\xb6sm\
+\x85\xe0\xfdB\xd3(su\x049\xe9;\xb3lq\xb2\
+\xba\xaf\x84\xb6A\xa8\x1b\x90\xc8\x1e\xb7\x0fk\xe4I!\
+/\xdd9\xd9\xdd\xab_a\xb9[\xa9\x1d\xd8\x8f|\xc9\
+\x8a\x17gd\xc0\xdb\xb5\xaf\x05\xa2,\x90T\x9f\x1b>\
+;|\xbe9GiQc\xfe)\xd14\xbc\x22lU\
+u!Z\x88\xc6\xe3\xc2\xd2\xeb\xd3\xc3\xd2}\x9f\x1fV\
+\xcf\xb7\xe9\xd5\xd3k\xa6W7H\x04Z\x9a(\x5c\x92\
+\xf8%\xee!\xf1\xa2\xbfw\xdc#\xbf-\x9dWE5\
+H\xeb6\xf9H\xa5\xa5\xe8\xcc\xb0\x86;\x89V^d\
+\x8c\xe5\x17.=i\xe9\xa8\xa5\xa3\xd2u}5\xac\xb6\
+\xd6L\x07\x8652\xa5T\xd6!_\xc5/=*[\
+Ex\x08\xb9\xc4}@\x1e\xba8:\xac)L\x22\xbb\
+\xc8~N!\xe1\x05a\x0d7\x00\x09~\x12\x9e\xa8\xe0\
+\xc8\xdf\xcbH\x9a\x07U9\xf6y\xf7\xb0\xf4zTX\
+s}\xf8\x9f\x22\xfb\x9c~\x10\xd6 e\x98\xef\xa8^\
+\xa0\xb2\xa2D\x15\x89\x81\x95\xab\xc8\x01I\xae`x\x7f\
+X<\x10M\xe0[t\xb0\xe3\x00\x90ic`\xd4\xbb\
+\x07B\xc0\x10\x12H\x18\x9e\x9e\xad:\xfe\x7f\xefz\x89\
+\xe9\xc1f\x22R\xc1\x10\xc9\x91\xa1\xba\xab)\x00\xbb\xb5\
+\xfc\x7fz\x9cEfk\x90\xe7F\x8f2\xac\xea\x1cx\
+T&z\xf2'z\x01\x91\xa7\x91^\xa2\xf5O\xd7Q\
+\x82B\xbd\xd5\x86\xb2<\xdfd\x86%\xb0\xc2\x11\x80,\
+\x87\x80\x00Hv\xcf=\x00\xb4\x97J5\x81\x0d=\xdb\
+r\xbc\x9c\x08!\x01\xc0\x83\xc7Q\xe4\xb5\x0f\xf0p\x90\
+\xf9\xba\xb9\xd3\xa7\xe6\xfdx\xe5\xb9\x10\x10\xb1`\xf9\xea\
+\xe5\xa2\x08\x84\x81\xf8\x02\xb9&\xb0!\xe0\x15\xd9\x8c\xc9\
+\x97\xdc\xc3_t\xab\xd3\xa4/\x0e\x1f\xcfe\xabR!\
+pE\xa6o\xd1\xe8d\x02\xfd\xca\xfd\xe9\xf99qB\
+\x80\xc1x\xe3xS\x09DN\x8aD\x03\x81\x18\x81\x1e\
+\x95\x0e>\x1f\xe4\x01\x9c\x00\xf4V\xb3q\xe2\xb0\x91\xf0\
+\xe1\xfe\xc9\xe0\xf1\xbc\x18?\x02\x96\x9f)\x00\xfe\xa9 \
+\xa8\xf4\xa0\xd3\xd3\x0f\xf4\x9b\xc0[\x9c\x0dCO\xe2U\
+\xf5\xc1\xcbu\xf7\x95U\xc6\x83\xbf\xeb\xa0\xd7&\xdf$\
+\xa1\xc3\xf3b~\x11\x902\x8f\x09`Ht\x91\xc8\x03\
+\xca\x8cc\xceuB\xb6\xa8\x8a\x88[\x0e\x80\x9e3\xff\
+\x08\xbc\x98\x87\xeb:\xa1Q\xae\xf3\xa5a\xe9\x15\xb9\xbd\
+w\x15\xb2\x13\xb7\x22\xf0y$\x80`K\xa7\x82\xf17\
+\xbd?\x01u\x87\xb00y#\x010\xf3\x87\xd6\x8f\x9e\
+\xeb\x03\x87\x89\x84\x00\x81>\xf3\x9a\xf9HBi\xe7\xae\
+\xb5\x046m*q\xa8\x890~=g\xc4\x0a\xefw\
+\xe5>\xe8\x19\xa6\x82\xcf<\xfd\xd7\x12\x00\x18\x12M\xa0\
+\xcd\xfa\xe2\x15\x19H\xd6)\xc8\x88Nf\xd0\x81?\xbd\
+k\xb0\xee+\xd0p\x00D\xe0\xde\xf5T\xfb\xbe+b\
+\xa8\x8c#\x88\x032\xfa\x8c+\x81\xd3\x8f$;\x04\xe4\
+]\xf7\x99\xd5\xc1o)\x15\xe2\x8c`\xebHN=\xbe\
+\xc8c\xb2\xfe\xb5n#|\x8a\x00\x8aJ\x89\xd5\x0a\xf6\
+Ka\xe6~\xe2\x02\xf8Z\x93\xb1\xe7z/\x13\xc9\x1a\
+\xec\xebb\x03\x9f\xf6\x9a\xf6\x9e\xf6n\x1c\x0a\xe63r\
+\x98$\xa2@\xb6\x81\xa0\x814\x92\x00\x93\x84\x8e\x02\xef\
+\xe1\x85\x0a\xb4\x80\xd0\x93\xd8>D\x09\x02\xf6\xdbo\x15\
+d\xcd\xfc\x08A\x15i\xa1c\xff\xe1\x5c\xe6\xfd\xd9\xdf\
+\xfe\xa2}]\x10\xd9U8\x0d\x90\xe5\xa4B\xcc\xbc\xe0\
+\xf9\x8b\xec\x0a\x08}\xa4)r\xa2B\xe4\xc1~\x1e\xf8\
+\x0f$~\xf9\x9eu&\xa8\xbd+\xd6\xb0\xe5\x8b\xd5\x9b\
+V\x01?g\xe6\x13\xf3\x8e\xfdN\x15<\xc8\xed\xdc\xba\
+!\xc7\xd2\xa4\xb0p \xb0\x0fV\xce\x8e\xb2\xce\xa84\
+\x91`\xe6s\xf1[t\xee\xb8\xc2F\xc0\x08r\x12\xd9\
+\xafC$K(\xb5\x08;\xae\xec\xe7$\x0c\x8e/\xc8\
+\x93\xf9\xf4\xb0\xe6yK'\xde\xa4z\x97\x865\xb2\x86\
+r<\x1d\x80\xc3\xb1\xc3\xb8~$[M\x903/a\
+\x9b\xa6%\xe2\xc3a\x15I\xe0\x0a=\x15E\x12< \
+\x09.J\x81\xc6g\x1b\x7f\xaa\xce\xa7\xb2\xef\xf1w\x9f\
+\x0b\xab\x9c\x01\xb4R\x01\xd9\x85\xfb\xc9\xb2e\x7fV\x0b\
+\xc0wJ\xcb\x02\x05&\x10\x1d\x96\x9f\x8c\x1e\xeb\xcb\x1b\
+6s\xe4\xd5T\xe1\x9b~\x14V+\x90\x04\xecp[\
+\xe5\xde\xf5\xbf7\xa4\x89\xb4\xaa2\x0f\x94\x80\x8e\xc6\xc7\
+\xdc\xfa\x08\x07\x0b\xf3\x19\xce\x83\x18\xf7\x975\x95EZ\
+S>!\x15\x09%T\x18\xdfUZ\x1d\xa9X\xc3f\
+\xae\x0a\xf1\xf4\x86do\x14d\xfb\x0f\x0dR\x8bD\xd1\
+\xc5\xb9Y\xd4\xe4y\x8b\x93\x17\xaf\x5c\xbc2}\xff\xb9\
+\xe9\xb3Sz.\xe3\xe9\xe3\x19\xe3\x19\xe9x\xbe9\xac\
+I\xc4*\x813~z\xfc\xcc\xf8\x99:\xde\xd3\xa7\xc3\
+r\xc0\x92\x91A\xc3\xe1%\xf0\x04bN/\xb19\x0f\
+6.\xe4\xe1\x8b\xbf/n]\xa4\xf9v\xebFa\xe9\
+\xf5\x98\x82\x04\x98\x1e\x12\x96^\xff7,\x8fc\xde\xc7\
+\xa7-\xc3\xd2\xff\xdd\xae \x04R\xb8\xff\x9e\xc5{\xd2\
+\xeb_\x16\x7f]\xa4y3\xfdG\xb2t\x1d\xd3\xf7\x93\
+\xa5\xc0f\xda(\xd9\x86\x15\xa2o$\xae\x0aJ\xd3\x97\
+\xc3\xc4Ips\xe5\x04qeTPp\xcb\xafA\xe6\
+\x19\x89\x95\xbdj\xeb\xc5\xf4\xe6\xb0\xda\xea\x94\x13E\xe9\
+9,n\x08K\xbf\xbf(,\x93\x1c&K\xdf\xdf1\
+\xacA\xc8\x80p\xd2<\x1f\xaf\x08\xab\xfb\xf5\xf8\xea0\
+\x91\x8a?O=\xfd\xd7Tr\xfbEbf\x00\x00 \
+\x00IDAT\xc2\xf9\xc8\x82\xdc\xc8=\xf5\xc5?-\
+\xad\xa8\x14\xce\x90\x8b\xa4`r\x8e\xd4\xdb\xbeV\x0a\x1e\
++\xbe\xa8\xc2\x17~\xf0\xffh\x7f\x15\xe2\xcf\xb2\xac\x92\
+\xf1sb\x0f\x99\xbc\x9d\xac\xcaT\x10O:'\x88{\
+\x86?\x86\xa5\xfb\xb80,W\xc4\x8f\xcb\xa4\xccBD\
+\xb1_\xd0\x22D\x22\xc1\x01,~\x10\xf1\x9f\x10D\xe6\
+Tx\xb8z\xda)\xf0\xbd\xa3\xac\xd3\xe1a\x92\x8fG\
+\xf6\x8e\x02'-IZ\xb7i7\xca-M\xe3\x0da\
+U\x1e\x95\x16\x9e\xc5\x97\xc2\xaaZ\xc0\xb0[\xf1;\x87\
+kJ\x8f?2\xb5^g\xf8\xcb\xf8+\x90\x89Je\
+d\xf1\xd6\xb0\xa6\xf7^\x88dZ\xc1\xc6\xcd\xc2\x9a\x16\
+\x00de\x85\xe8\xb2Z\x02\xc8oH\x0d\x89+@\xa6\
+\xdf.\xacI\x84A\xca\xa9B\x17\x85{suP\x00\
+C\x15\x07\xa4<\x85\xf0/\x94\x84\xf3J\x027tQ\
+\x81\xa8\xe1\xa0\x0f\xd7\x8a\xe4a;A\xd4?*y\x0d\
+\xe4\x0f\x04}\x1c>\x1f\xd6\x04b\x04\x8a\x1c\xa48b\
+\x7f3\x02\xa08\x88@:9\x90T\xf9H\x8f;\xf7\
+N8p\xdf[\x1b\xaa\xd8\xd8I\x04\xb8\xc27u\xec\
+\xc6\xd7j \xbe+\xf6\xf1\xef\x08\x82\x01\xc4\x0f\x07G\
+= ^0Tnp\x88\x0f\x16\x14\x9c\x1eM\xd4\x0a\
+6\x0f\xc1\x8c\x7f\xe0\x10 [\x07$\xe8nr\x1c\xaa\
+L[q\xe8\x09\xa4p\xe0\x09\xa4\x08D\xb8\x0f9\xd0\
+\xd6WVF\xcc\x95< \xecT\x08!\x8d\x03zK\
+\xc0Le\x03y\x08A\xa9|\xfd8\xdc\x9bv\xac\xf3\
+\xfc\x9c\x03\x9d/\x02\x02\xae\x0b\xfdfH\xb8X88\
+d\x8c\x0f\x0b\x7f\xed\x02QY\xb1q\xe9\x0d\xce\xd7\x1a\
+\xb7\xfd=\x1dP\xcc\x1f\x02o\x1c\x0c\x02\xe7\x9e=\x9b\
+\x89\x8f\x8c\xcfm\x86d\xc1A\xa0\xdf3\xbe@\xec\xb9\
+.\xe6%,\xa4<\x1f\x91b\xba\xb2\xde\xcbt\xed\xa9\
+\x84\x01\x09&*\xc78\xfe\x1d\xd9_\xa8\xc9.\xe3|\
+`\xbe\xdf$5\x85+$[tMA~8\x93\xda\
+\xf7\x82\x93 \x22\xc0\xfd\xab\xc9\xf9\xca<\xaa\xac\xec\xc5\
+\x81\xe970H\xc9\xf8y\xcf\x12O\xa0L\x8b\x02\x09\
+\x16\x1c\x22\xee\xff.\xcbe\xf3L\xa2\xc7\xfbP\xf9&\
+\x90$\x91\xc08\x12\x90\x12\xd0\xe1\x08s\xfd$\x92H\
+\xa0\x00=\xbf\xb0 s\x82\x02*H\xa0\xe8\xb96\xcb\
+\xbf\xe4\x02\x93\x1b\x99\xbe\x1ah=\x89/z\xdeq\x8c\
+\xf9\x5c\x12\x17\xb4PTR?Z\x01\xca\xfa\xdd\xa1\xeb\
+\xf5\xef\x03Y\xe6\x0f\x01/\x07\x1e\xeb\x99\xf1\xa0\xc7\x18\
+\xe8\xf2\xbd\x14\xf8w:\xf5\xe93J\xc0\xba\xadU\x06\
+\xca\xf8\xf1\xdcI\xcc\x11P\xfdN\x0e%\x08\x8f-u\
+\x1d\xf4\x92_#\xc84\x09\x1e\xd6\x0f\xefCe\x8f\x8c\
+<-\x09TZ\xa9t\xe2\x88\x90\x08\x22\x90\xa2w\x8d\
+@c\x83N\xdd\x04\x07\x14\xa8 \xfb\x14\xfb\x17\xcf\x8b\
+\xf9\xa2\xebNaS\xe9\x15\x96\xce\xb2\x7fO\x02R\xba\
+\xbffA\x86d\x87u\xcez\xe4\xfca\x7f\xe1\xbcQ\
+\xaf%\x5c!\xc3ea50BN\xca$x\xcf.\
+\x88\x94\xa0\xac\x0a\xd2*\x93'}e\xbc8zs\xcd\
+9\xc2\xf3\x00\xc1\xc2\xba\x00\xe9\xa0Dv\x1a\xfb\xb2?\
+\xb2\xbf\xb1\x9e\x09\x90!\x93C}E\xbd\x97\xc3\xb9\x05\
+Jo\xbdv\x9e+\xeb\x94\xc0\xef{:\xff\xbe/d\
+\xcd\xd7\xd5\x03\x8e\x83\x87\xbc\xd0\x17\xb2U\x07\x9b\xf3\x19\
+(\xbez\xc5qp\xe6O\x845l\xee\x01)\x8d\x96\
+\x803\xb3\x99m\xd8\xbd\xda\xc8q\x81$\x04\xc2\xcf>\
+\xc3\xfcb>\xa0\x93\xad\x8a\xb2\x11A\xac?\x90Z@\
+,U\xb1v\x02\x0f\x95\x019\x8eV\x13\x00\x92\xae\x8a\
+\xaa\xfd\x0c\x12\xc3\x9f-\x81-\x09\x22s\x1f\xf4\x884\
+H0U\xe1\xb6^6\xdc%\x82\xda\x0f_)\xfb\x15\
+\xe76\xe7\xa6I\x85Y\xef\x90T\xbd7\xacI\x0c~\
+:\xacAf\xaaB\x8e\x03\x0dTw\xb8)\xac\xe9\xf5\
+W\xa0c\x87\x93\xfd\x95\xc4\x05\x8e=\xc8KU\xa8\x9c\
+\xd8R\xa5\xdd\x5c\x05\x90_A\xea|\xdf\xe1\x80\xe1\x80\
+&\x01#r?\xd6\xcf\xf0\xe6\xb0\x06\xe9AA\x08\x84\
+\x0b\x8e.~\x06\xf3\x82\x16\xc8\x1e)\xc9\xf3\x16\xc9o\
+\x1a\xf533\xb2\x80\xeb\x97\xdf5\xbd(\xac&\xa2@\
+\xe0\xc0-`U\x84\xae\xe7\xd6\xea\x1bpS\xf1=\xcf\
+C\x5c\x13\x86`s\x1f$\x06h\xed\x90\x9f\xe8D.\
+\xfb#\xad\x06\xe2\xfe0\x99\xa9\xf6\x85\xf9\xa1a\x0d9\
+c\x84m\xe77\xeaGJ\x0c\xd1cNO\x7fh\x18\
+\x04\xc4wziX\xda\x87\xde>\x9e:\x9e\x9a^\xbf\
+>^2^R9y\x8c\xd4y\x5cX]\xaf\xe3z\
+\xe3\xbac\xf2+\xc6O\x96\xc0\xce\xeb\xff\xd7\xe5s\xc7\
+-\xc6\xcd\xc7\xcd+\x97\xcc\xbce\xa9\x84\x0e?\x08K\
+\xd7q\xdf\xb0\xb4\x9dm\x1a\x96\xbe?!\xac\x92\xffM\
+?L\xf6\x83\xdc\x03\x7fR\xc8\x1f.^\x15\x96~\xfe\
+\xa7\xb0\xf4\xbaqX\xfa\xf9^\xc9\xd2|\x98\xce\x0e\xab\
+\x15\xfb\xe9\xc5a\xb5^F`\xe7\xc0[\xfb&2\x88\
+\xd3\x16\xa5\xd2\xee\x8a\xbeHA\xb3\x9c\xe2%5\x00w\
+\xe0\x84\x0e|<\xef\xaf7\xad\x02\xb0\xc6\xd3R!\xce\
+\x02\x12K\x96\x8f\xa5P\xc5yJ\x1c\xa5\x96\x1d\xd6\xad\
+e\xdb:\xe4\x07\x5cR\xc3Aj\xed\xda%\x9d\xc2\xbb\
+6\x9cV\xb4\xdcA\xd6\x0b)%\x88\xd9(c\xfeg\
+n=+r\x86JX\x0d\xbb\xa4\xf8c\xe7\xba\xce\xe1\
+H\xe0\xb9\x19\xd2N\x82\x98\xf7\xa7\xd5F\xef\xe3\x02\xa9\
+\xd6\xbd\x03v\xd6\xa5\xfc \xbf\x1f\xf1\x13r\x97\xf4\x0a\
+\xb0\x1e\xb4\xae\xdd\xb3~\xaaz\xe0{\xd2b\xbdN\xbf\
+\x0dK\xf3\xf0\xec\xf1=\xe3{\x1a\xce\x11\xd6\x93\xe2\x99\
+\x14\x86?lH\xcf#\xcd\xe6\xb5\xc7\xb5\x9by\xfcq\
+\xb5\x16\x89\xab`\xf1\xf1\xb0<.y\xff\x9f>\x1f\x96\
+\xbe\xffbX\xe5`\xb0_\x85\xbf\x8a\x7fCbZH\
+\x8a\x9c(zKmm\x1b\x06\xf9\x9f\xf2\xd7MnK\
+\xab\xd7/\xc3j o\x8e%\x9d\x1f\x90\xe5Z\xfeS\
+\xfe\xc3\xf4?a\xe9u\x8f0!\x98N\xa8-D\x8e\
+g\x88\x97\xd8\x8f!\xcf&!\xaf\xb8v\xa5\x1f<\x10\
+w6<\xc8't0\xcd\x9f-\xa4)\xd6\xa3\x04\x1a\
+tZ\xe9\xf5\x00\xdaa\xc7J\xba\xaf\xe9\xb0.\x99%\
+\xa0\xf5\xc8d}[\x0e%\x81\xdc\xd3\xd4;\xce\xc1N\
+%\x82\x03\x1f\xc7\x91\x0c\x15\x07\x03\x8e-\x99T\x02\x10\
+M\x8ca;\xc9b\xa9\x87p\x95\x1ea\x02LX\xa3\
+\xa90\xf4\x95\xe5*3U\x0e\xba}5\x91\x99\xd98\
+\xfa8\xa68jb#uf\xb9\xef)\xa72K\x00\
+A@Dee+\x91g\xdd[\x0f\x16\x07\x09G\x12\
+\xa8=$[d\xc6\xd80\x18\x0f\x02\x06\x1c\x00\x1cr\
+*\xd5\x04B\x82b\x0e\xfc?\x8e\x0e\x1b\x1b\xf7G@\
+\x84\xde,\x07)\x15\x19*\xe2}\x8f2\x15Y\x1c?\
+\xc6\x97\xfb\x10\xa4\xde\xa4D\x04n\x04(\x04\xa2l\x14\
+\xb0@\xa3\x06\x81#rs\x81\xde\xcd\xbf\x14\x84\x1by\
+B6\x04\x1c\x89\xfb(\xb1\x049XE\x16\x94/\xee\
+\xf7\x9f\xe9\x95s=\x04\xce\x04\x84$nh\x11 q\
+\xc3s\xe6\xff%\xff\xe7\x0a*\x8e\xfa\xa4yu\xb1z\
+\x89y\x8e\x0a\x18S\xb8[\xa0\x9e\x1b,\x9fG\x86\xec\
+2\x1fy\xee\xb7\xd1sf\xddl\xea\xc0\xb5|\xcf<\
+\x5cky\xcf\xab\xe7\x07\xe3\xcd\x17=W\xcc;6v\
+\x02k^I\x14\xb0\xde@\x1a<\xacl\xd4v\x84\xea\
+\x81U\xa0\xdaT\xbc\xc5\xde\x0dI\x8d\xdf\x87\x84\x08\xaa\
+$r\xf8-s\xb4\x8e\x11\x0f%\xd1\xf2W\xcd3\xe6\
+\x07\x95VH\xfd\xf8<\xb1\xdc\xbb\xe7\xbeS\x83p\x80\
+E%\x0e\xa8>\xfbV\x9fX`\x7fc\xdd\x91\x18\x90\
+\xfc\xa0\xc9{ \x19#1\xb0\xbb\xd6\xfb.j\x09`\
+\x5c\xa8\x1c\xffQ\x10\x7f\xd6\xc7\x0d\xea\x89\x85d\x8eq\
+\x16\xc9\x16\xcf\xd1\x01\x1c\x88\x0b\x12-\xeco@\xcb\xe1\
+&\xb9P,\xdc\x1fT\x8f\xe5\xf7\x04-\x87U_\x01\
+\x95\x0f*\x9e7\xfb$\xf3g\xf3\xe5\xf3\xc2\x1c\x08 \
+\xbd6\xb3\xcce\xf9\xff\xd5;9@\x90\x22\x04\xac\xd2\
+O7\xf2\xe4\xe7\xdaO \x9d}j\xa9\xc0\xa4\xbd\xb4\
+\xfc\xbfHr<\xdeo,\x90z\xdf\xe7\x05a\x8d\xbe\
+\xae \xcd\xc8\xfd\x0d\x7f\x0bK\xafo\x1fN\x1dN\xad\
+\xec\xeb\x96\xe3\xd1z\x82[\xc0*2\x90\xd9A\x22)\
+\x07\xc5\x15{\x02~\xf6A\xf6E\xf6\x15\x02oz\x5c\
+!\xc1\x83u\x19\xf9:8\x0bh\xc9\xa3\x07\x132\xc4\
+\xeb\x95H\xd9Y\xf7O\xc0\x0c\xbb\xbf\x10\x7fT\xc8\xad\
+\x06$\xd99W\x0e8\xef\xf0\x1bHhQ)\x05I\
+AB\x86\x96\x1e\xe6\x05\x95QZ\x14@D\xe0\xc8B\
+\xe6H\xeb\x18\xfb\x1e\x90O\xceSA;\xad\x22\xc3y\
+JK#\xe7 \x01=PL\xf5\x98C\xce\xe4\xf1\xa5\
+\xe5\x00\xc8\xaa\xb8\x02\xcc\x89\x00\xfb\xfe\xf3\xc3\x9aD\x00\
+\xd0|\xc6\x99\xfb\xe2\xf3u\xce\xc011\xee\x1f\xd6$\
+6qd\xc5\xc5\xe0\xdey\xe6\x95\xf6\x9b\xf1\xa9a5\
+\x01\x05R\xc5\x15t\xb5\xb0\x0c\xef\x0bk\xcek\xb8\x12\
+H\xbc\xe0\x182\xae\xb0\xcb?*\xac\x16\x0c\xd0\x8d6\
+DV\x8e#\xeaPN\xf8(\x11\x8b>\xb8\x11B \
+\x0a \xf5\xfb\xef\xb0\x069\xaa}{\xde7\xac\x09\xfc\
+i\x85 \x01t[]\xa7\xfc\x22\xcb4^\x93\xc2\xe9\
+p\xc0\xcf\x0f\xcb=\xec\xcf\xcd\x10\xee\xef\x87^@E\
+(\x8dw\x0dk\xceC\xa0\xc9$\xe4HT\xe1\xd8\xf7\
+\xe4\x98J<!\x03\xed\x849\xe7\x82\xaek\xfah\xb2\
+\xf4\xdc\xc6\x0f$;\xaf.\x13\x93\x93)\x81\xe3}H\
+\xfb\xb2+\xea\x14.X\x1f\xf8_\xb7dLk\xa9<\
+^][\xbarO\xf3\xea\xb528\xbd$,}\xfe\
+\x05\xc9>\x9c\x03\x9b\x17\xcf/\xae\xe7\xff\xe2\xeea\x92\
+\xef\xbb\x8f\x02\xf2t\xde\x8e\x97\x85\xa5\xd7\xcdS\x88\x9f\
+\xf6\xe5\xf1YENr~JX=\x17\xc6\xe3\xd3o\
+\x9e\xd5@\x9eA\xea\xe8>\xa6}\xc2j\xef\xff\xad\xcf\
+\x0b\xcb\xc7\xdf\xbcH\x031\xbd}:uz{&\xfb\
+\xcb-0\xf3\x99e\xdf\x9a>\x14&\x08\xff{\xd3\xcf\
+\xf7K\x96\xd6\xc7\xe2\xc8d\x81\xe0\x88\x82\xecT\x13\x02\
+Nx\xa8\xd2L\x0f?\xad+T\x80\xa9\xe0Nw\x0e\
+K\xaf\x0f\x9b\x1e>=\xbc\xf9|8\x19\xa4\x02cd\
+\xde\x9ds\xaadE\xfcu\xfc\xfdtfX=w\xa6\
+\x0f\x84U\x12\xd8\x1c\xe5\x9c\xd3\xcc+\xb8\x12bV\xbd\
+[\x09\x8cck\xc58#\x99\x02a\xf3\x8e\xb0\x9a\xb8\
+c\xfd\x99\x83\xe2\xaba\xcd\xfbQ\x80C^\x0f\xce\x82\
+\x1bJ\xeb]\x9e\x07k\xe58.C\xcd\x87o\x0f\xdf\
+\x1a\xbe\x95\xf7\xe3Ry\x96\x1c\x9c\x13IW\x865\x15\
+iTN\x04q\xf7\xbe\xa8\xd6\x8dy\xed\xb0Z\xa0r\
+B\xe0\x1di\xd5\xbe\xa3\xb6.L\xaf\x0f\xcb\xe3\x9d,\
+\xdd\xe7\xbe\xe3>\xe3>9\xe1Qd\x0du^\xcc\x0f\
+,\xdc\x15+\x0e-~\xb7\xc9\xd6Ah\xca?6\x97\
+\x92\x12\x99A5\x19d\x93i7.\xdc)\x14\xdc(\
+,\xfe\xb7\x12\xb9\x22\xb7\x1c\xfe^\x90P\xe3\x1aaM\
+\x8b\x1e~\xce\xeb\x0b'BhY\x04rdqc\xb2\
+?4~\xae\x12w \x8e\xec'\xc1)\xf2\x95\xb0\x8a\
+\x8c\xb3\x5c\xa2\xae\x9f\x04\x98\xcf%Z.\xe5\xff\x0c\xef\
+\x0a\xab*\x06\xc3ua\xcd}\xc1\xbd\x03\xa7\x89\x0a\xf6\
+\xe6\x06\xfa\xd7\xb0\x86;\xe0\xaeaM\xcb\x9e\xae\x9f\x02\
+\xd9\xb0oXz}eX\xcb\x01\x10\xee\xc8\xdd+\x14\
+\xc9=\xd4\xc8\x99\xa9\xb7\x88\x89:n\x1b\xd6T|\x99\
+0l\x94\x1c\x80\x0aX\x0d\x85\x10\x89\x9d\x03;\x1cj\
+z\x9d\x098q\x88q\xd8\xc9lTHq\x09\xa0\xe0\
+\x22\xa8\xa4\x81e\x83\x06j\x8c^\xbc2?\xdc\x87\x1d\
+P6r\x0d\xb8Io q\xc2\x11S 8\xbf\xb5\
+dzL\xa6\xd0\x93T\x91P`BR\x09\xe3~\x99\
+@\x04\x9a]\xafq\xff\xe0}\xff\xdc7\x15g\x02f\
+\x02\x10\xc6\x91\xf1\xa3\xc2\xccA\x8f\x83\x09\xfb\xb9\xee\xdf\
+\xac\xa0@\xbf\xb7\x94C\xb7\x9d\x0e\xa0\xbb,\xd7uw\
+`\xd3'd\xa8T\xf1\xda\xe9{\x9b\x14\x87\x80\x1dH\
+\x0c\x01R'\x9f\x06\x14\xda\x08\x0d\xc6\x8f\x80\x96\xf1e\
+\xbc9\xe0;\xf6{\x02M/x2\xf5d\xf2\x91\xfb\
+xA\xc9\xf8;\x10&\xe1\x80\x0a\x02\xcf\x91D\x13\x8e\
+:\x09\x1b\xae\x03d\x8b^\x91m\x01\xfai\xc7\x86q\
+]M\x09\x06Z[H\x10\xf1\xfe 8p\x08p\xb8\
+\x81h\xa9\x95\xa2\x91\xbb+\x8e0\x01\x14,\xe07i\
+}\xdc\xacyJ\xe0\xb1\xbe*\xdf\xa85T\xa8yy\
+\xbf5\xbbD\x00\x8e%\xeb\xad\x7f~ S\x08\xech\
+E\xc0\xf1\xa4b\xac/\xeb\xd6\xf3\x9c\xfb\x84\x14\x07\x17\
+z\xb0\xb4X(\x01\xe1\x16\x19\xee\x87\xf9Ab\xa3\x92\
+\xcc-\xe7\xb4\xc0q\x07\xa9C\x80\x0dB\x83\xfba\xdd\
+\xf5\xe4^T\xae\xf9}\xc7\x09\xe0\xff\xaf\xf2\x8ee^\
+\xd1b\xa0\xfbv\x22\xaf&\x16\xcaz\xa2\xf2wo\x91\
+\x82\x11p\xb1\xbf\xd1;wO\x05X\x7fT+\x0b\xf3\
+\x96\x0ar\xa7\x0e\x92{\x0b[\xb2C\xd6/\xd7\x89\x03\
+\xac\x80n \xc0\xdeM\xc8\x04\xe6\xe5\xea\x9a\x97 '\
+\xa8\xacRY\xa4\xd7N\xebr\xd8R\xe3\xb5\x89\xf67\
+\xc6\x0dDE\xdf\xd2\xc4\xe7\xe2\x98\xffR\xad2$\x02\
+\xf6\xd4\xfdBvx\xb5\xa0y@\x96\xa9 |\x5c\x09\
+d\xe6\x1d\x01)\x15\x14\x12\xd6\x90\x07J\x8f\xda=\xee\
+_\x0ak\xe4~\x9e\x92\xcd\xa4NpxP\xc1\x98/\
+\x94\xfe\xef\x01r\xdc\x08\xf4\x95X\x9b\xaf.\x89J\xef\
+7\xc8/\xf5\x88\x11d\x83\x08\xbc\x09,\xd9\x07\xd8\xcf\
+\xb7\xed\x10S\xecO$\xe8$\x8b\xe7\xf5\xa1\x80\xdf\xe7\
+\x03\x89=\xc8x\x91\x9f\xdaZdL\xf8\x01\xb4\x8a\xf4\
+\xdc&\xbc\x92P\xa0Bt\x87\xb0&\xe1\x8bl\x1c=\
+\xe3$b\xa9HP\xc9\xe3|d<\x80T\x13\x88S\
+I\x139\x96[\x05@\x8ep_\xaa\xfc\xbb%\x11\xa4\
+\x22=\xaf8\xbe\xacG\x91K\x19Q\xc8\xef\x09\x10A\
+\xda\xe1\x90\xf3\xdc \xcb\x22\xc1\xc0\xf9GB\x02\xf6|\
+\xae\x8b}[\xf3\xca\xe4`O\x08k\xf6\x03\xf6?\x12\
+t\xf8\x1b\xa8\xd7\x90h\x87\xb3\x89\xe7,\xc4\x859>\
+\xd8\xafy\xce \x14t\x9eY\xed\x89\xf3P~\xce\xf4\
+\x99\xb0\x06Q\xf0\x9d\xb0\xea\x1f\xd2B\x01\xe7\x0d\x89\x01\
+?7\x1c]\xf6\xb9\x0b\x0b\x82e\xde5,\xbd\xde3\
+\xac\xfa/\xd6\xb9\xa6\x22\xfd\x8c\xb0\x9c\x18,\xea8\xaf\
+\x15;\xbf\x12\xe6\xf3\xed\xe7M\xe6\x22\xff\xf6\xd2 I\
+$\x81\x93\xdc\xef#\xc3\x01\x1f\x1f?>a||\xae\
+\xe8}!*z\x86\xfe+\xa0qO>\xf7\xafqr\
+k\x08~\x16\xa4\x8d\x14\x02\x18?\xf6aZ\x00H|\
+\xc4\xec8\xa0V\x04M&\x07r\x0d$\x01\xba\xe4 \
+K\xf0\x9f!\x97\x04\x89J!)8\x05N\xae\x95\xc9\
+\xe9\xa6d\x7f\xa9\x89\xbe,\xb3{O]\xf7v\x9aG\
+\xf7\xa8\xad\x09\xa1%\x10\x09\x92\xf1\xc4\xf1e\xe3\xcb2\
+\x19_fi_\xfaT\xa9\xd8\xd2\xcb>\xde\x14\xd6\x90\
+**\x91\x01\xd9\x99\xf5\xe2!\xe5\xc4\xffD\xed\xe1\x81\
+a\xe9\x98\xdds\xb1\xc7b\x8fJ\x0e\xb8x|Xn\
+M:4\xc8\xcdrE\xfe\xe8\xfa\xf7\xb9\x15\xe3\xd6Z\
+Q_\xbc(\xac\xa9x\xae\x0ckT\x05D\xceF\xa5\
+\xde\xbd\xf8\x0f\x0ek*\xb6\xf2\xb7P\x19\x98\x1e\x93\xec\
+\xb1BV|\xb8&\x00P\x0f2\xbb\xba\x12\x81Yf\
+\xf1\xf4F\xf5\x02\x7f\x9c}\xef\xbf$3\xa8\xb8a8\
+T\xac\xef1\x1f\x7f\xd2$\x1a9\x8fE\xc2\x97O\xb3\
+_6\x1c\x04G\x87U.\x19\xc7]\x92q\x04\xd9\xe4\
+y\xc1<\xfcyN}W\xff\x0e\xff&\xca\xa7_Q\
+b\xe2\xda\xec?\x172\xc9\x08\xb7\x1f\xde\xf8Uj\x01\
+\x22\xb1\x0a\x12,\xcb.\xae\xd5\xc8I\x92\xd0&1J\
+\x82\x92\x16V\xfcq\x15\xd2\xe6S\xe7S\xe6t\x1e.\
+\x9e\x1e\x96\xc6\xe1\x12\x05\xd0\xb4h>\xa2\xa8\x08\xa5\xd1\
+.2\x87\x8c\x0b\xe7\x14\x09\x19\xad\xafy\xa3\xb0\xcc\xe9\
+P\xfc\xe9\x1f\x0f?\x1a~\xd4\xb4BQ\x08F\xc5\x85\
+}\xf9\xa3\xa5\x90=\x9c]T\x04\xc6{\x8e\xf7\x18\xef\
+\xd1\xf89BF\x8c\x9b\x845\x15{\xb5\x089\x11F\
+\xc2R\x85\x87y\xcb0q>\x1c\xd9\xa8\xa5 \xd7\xf8\
+:%<\xf0\xdfAx\xb1\x1fk\xdff\x9d\x8d\xdf\x08\
+kZ@\xf1O\xe1J\xc0_B\x95G\x09v\xd6\xbf\
+\xfd&\x12\x11jq\x98\xafK~\xd8uu\xfd\xb0\x0f\
+\x11\xbf\xaf\xcc\xe1\xcbuM\xe0/\x92\xa4\x10\x05\x0cY\
+@\x93\xc0\x04\xdbh\xe8\xcd\xfeoXC\x1a\xf81\xf5\
+8\x1dXdF ;p/\xd7%aM\x00\xf9g\
+\x05J\x04\x90@\x15\xd9i\x08,\xa8@\x12H\xf0\xf7\
+L\x10\x02\x056b\x02+\x06\x18\x87M\xec\xa9F\x00\
+h\xe2:p\x80]\x1c\x15\x03\x02qz\x80D\xc6\xe0\
+\x1e\x8a\xf7)\xb3\xd2C\xf7qX9(8\xf0\x09@\
+\xf8=\x0b\x94\xff\xe7~\xeeb\xf9\xb4r\x80\x120\xb0\
+\xc0\xf8\xff^\xd7\x9c\x80\xado-\xc0\xe1e\x1cq\x18\
+\xb9>\xe4\x88H\x84\xb0\xe0\x08\x18\xa8d\x13xp}\
+\x8cO\xdf\x12\x80\x03F\xa0\x0cD\x06\x12\x1c*\x91\xf4\
+\xdeJ\xdf\xd3\xad\x03\xdc\x07\x09\x1590FNt,\
+\xdaF\x14\x10x\xa3+\x8f#B/\x91\x1c8\xb3\x7f\
+\x92\xa89C\xf3\xfa\x8b\x82\x14_\xa3L\x9f\xa0Qp\
+H\xa4p\xa2$\x90p\xc0\x09\xb0@8\xc0\xda\x8c\x03\
+\xce\xf3\x02:\xfb\x8b\x120\xb9'Gd.v\xe0\x08\
+\xfc\xa8\x10\xe3\x00\xe2\xc83O\x98\xdf\x90g2\xffI\
+\x14\x91\xf8\xa1\x92\xba\x99\x9e#\x95\xec\x0d\x9d\x18\xa0\x85\
+b\xb9c\xc8\xbc\xe0:\xeak\x99\xdf\xfc\xdfh\x16\xfa\
+\xf2\xb9\xac7\x1cN*\xcf\xa8T\x10h\xe2p\xd2K\
+\xc9\xe7\xf1\x9c!Y\x02Z\xce<f=0\x8f\x19\x9f\
+\xae\xf7\xde\x5c\x00\x8c\x03\xe3\xcb}o\xd4\xb1\xae\xab\x15\
+\x02\x9dWo\xa0=\xd2e\x9d\x8e\x14\x93\xf5\xcc\xfad\
+\x1dn\xdc\xc9y\xb2~hY\x12R\xc3=\xee=Y\
+*\x81\xdd\xe6&\x1d,\x013\x15!\x02\xc9\x8d\x8ch\
+(\x89\x0e\x022\x02\xa7\x9e\xdb\xa3'\xf5\xe3>:\x99\
+\xd6UTRp\x08\x1eZ\x10\x18vX\x09\xfcAp\
+\xc1j\xbb\x85\xd6/\xd7\xbf\x87\x10\x06\x90\xf7\x09\xc9\xe0\
+\xfbe|x\x9e</\x9e\x03\xeb\x9d\xf9\xces\xe4>\
+\xf8;Hq\x94 \x1e\xef>\xee2\xeeR\xa1\xb9\x04\
+\xa2\xf3\xe1\xaa\xb0\xc8A\x1c>$(3\xe4\x9a\x90\xde\
+\x89\xd4\x8e@\x03\xd9\xdaa\xddR\xc9\x9c\xef\x1c\xe0\xdb\
+\xec@\xe6\xc0`\xf8BX\xf3\xfe\xff\x22\x9dq\x10\x06\
+<'\x12\x85[:QV\x10t@\xdbqX\x81^\
+\xc2\x91A&\x9f\xc4\x05\xcf\xf5\x06}\xff)AW\x91\
+!\x84]\x99\xe7\xd8\x93\x5c\xf2\xbcI$2?p\xe0\
+@h\xc0\x12\xcf>\x8e\x83\x8b\xcc\x93\xa0\x9bpqX\
+\xf6\x8dD-\x8e\x18\xf3\x8cD\x13\xf3\x98\x8a\xae\xe4\xa8\
+V!\xe3\xe5\xfai\xa1:@PsH\x00\x19W\xc8\
+\xfdT\x88\xc8\x81\xd0\xbd\x1a\x84\x17\x0e\x938\x0c\x9c\xe8\
+f>\x01\xcd\xe6\x8b\x96\x13\xa0\xea$(\xa8\xf0i\x1f\
+4\xc4\x9b\xfb\x8a\xdd\xfe\xc7\xda\xe7\xbf\xd2\xf4\x94\xcb\xff\
+\xb1\xea\x01\xd7\xab\x04\x94I\xf1N\x0f\xab\x90\xe1\xe9U\
+a\x0d\xa2\x0bY,\xd8\xd1\xb7\x0dK\xff\xf7\xd0\xb0\xf4\
+\xf7\x87\x865\xe7)\x01-\x88\x05 \xb9J\xe4\x80\x94\
+\xa27\xdf\x05\x0f\x129\xccCU\xf6\xc7\xb7\x855\x90\
+\x5c>\x0f\xc8\xeavRo\x11r\x93\x04\x87+\xa8\xaf\
+-P|\xcb^\x8a\xe4\xd5\x95p8&\x90\xb3\x82d\
+O\xfa\xdd\xc8_M\xaf\x0ek\xce\x11\xa0\xd6\x82\xee\xae\
+\xf8\x90\x12g\x82n\x8f\x8f\x0fK\xbf?\xb9@\xc33\
+9\xdb;\x1a\xf92A\x94}\x0e\x03\xed\xe7\xfc\xad\xf2\
+\xcce}\xe2\x7f\xd1\x9a\xa2\x84aN\xc4o\x5c\xc7\xc1\
+\x812,\xec\xc8\xc4\xd1\x92\x01\xfb9\x15_q\x14\xf8\
+\x5c\xd5~\x04\x22w\xfeC\x988\x18^\x9e\xc6a\xf7\
+d\xbb5\xbd\xe5g&;#\xfd|\xfd\xb0F\x1e\xf0\
+\xea\xcc\x02\xe2\xca\xf6\xf8\xbd\xb0\xf4\xba\xf7\xb8\xd7\x18-\
+0\xf7+\xd0\xff\xe1\xf8\xe2\x8f\x0d\xaf(\xa4\x95\xc9\xdb\
+\x7f\xe0\xfc\xc0:\xbfS\xe0\x94\xacQ?\xd8.,\xfd\
+\xfc\xfc\xb0\xca\x012\xdf+,\xbdn6o:G\xe0\
+\xff\x8e0\xb1\xd8\x7fW\xa4\x81g\x0b\xb9\xf1!\xf9\xe1\
+\xdf\xaddk\xd3)a\xe9u\xb5\xb0\xf4\x7f\xa7\x85\xa5\
+\xef\xbf\x1bV\x03\xfd\xe9\x8a\xb0\x8a\x80\x9a\x9e\x11&Y\
+\xc2\x83\x9a}\x0f\x9d\xf4\x977r\x87i_\x98\xbe\x1d\
+V\x11\xac \xbd\x88\x0f\xac.\xa5u\x1c\xb8\x92\xe0\x10\
+HO\xe9\xf1\xf99)\x01h\xf5\x18%z\xe6\xe7\x97\
+\x9ezsyD\xef\xfb\x13\xd5c\xff\xb1F\xf6Z\xad\
+\x8a\xc8;\xa2\x06\xe1\xf7\x95J\x84\x13\x947\x875\xad\
+9\xe7\x86)\xbeyw\x8eS\x0aG\x8a\xce\x1d'\xd4\
+@\xbc\x89\xd3&\xfb\xfb\xdb62\x93$\xcc\x89\x93D\
+f\x98e\x1e\xf7\xab\x89\x00\x07\xac\x90\xca\xa1\xbe\x10\x08\
+\x84\xe0FxEX\x83\xac9\xb2\xacc\xcb}\x8ae\
+\xdf$\x92\xb4\xce\xd0z\x85\x7f\xa8\x02\xad\x13\xc7\x92\xe5\
+u\x02V=\xf2\xd3\xef\xc3\xeax8\xe1MB@d\
+\xb6\x90\x5c\x9a3J\x89\xda\x9e#eX=\xac\xee\xc7\
+ N\xa7\xed\xc3\xd2\xf7;\x845\x89y\xd4Uh\x11\
+&\xf1\xdb\x15\xc6\x8c8\x80;\x87\x04\x838\x1f\xf0W\
+\xe7?\x875-\xe7 \xb6\xe0\x1cxEX\xdd/\xfc\
+\xf7$b\xe0\x82\xe1|#n\xd0<\xa3\xc5\x85\xfd\x01\
+\xb2\xcc\x95\xd9\x8d\xda\xae\xd1+\x94\xec\xcc\xbc\x94ll\
+z\xc2\x90\xab\x80\x95\x15\x88\x9f*8\xf3\xf1\xea\xfdX\
+s9\x14zzbX\xee\xbd\xca\x99\xeea\xcd\xb0\x86\
+\xbd\x1c\x08\xb1\x1cYC>\x08$\xd1\x13\xc7!\xe7 \
+\xe6k\xcb\xaer\x22V\xc5\xf9\xeeaM/\x0f\x193\
+X\xa0\x81\xa2A\x8a\xa1^F\xff\xfe[\xfa\xfb+\xd5\
+\x1bvA\x81\x9a\xad\xc2*\xdf\xbf\xe2`CjE@\
+\x0ad\xb9\x0f\xa4\x80\xfa\xd3\x03\x82#\xcex\xd0K\x0a\
+4\x8eq\xe9H\x03W!+\xc3\xc1a\xdc\x98\x98\x1c\
+0}\xcfx\xafS\xce\xfb\x12\x98\xe0\xe8p\x7f8j\
+\x04\xc4\xbc\x0f\x89\x04\x0eP G\xaa\xe4\x0d\x8f\x94\xa3\
+O+\x03\xd7M\x00M\x82\x84\x84\x07\x81\x1e\x01\x86\x02\
+\x5cCS\xf9=\x15^*\xfa\xf7\x14D\x94\x8c*\xe4\
+!$J$s4\xfc:\xacV&\xa3\xb3.z\xeb\
+\x1cX\xd0\xdaB\x02\x8b\x83\x05r\x0e6, \xe1\x90\
+\x10m\xa3\xc0\x97\x0a\x1e\xe4\x94pM\xe0\xc8\x12 \x13\
+\xb8\xf2\xbc\x08\xe8\x18\x07*\x9f\xf4d\x12\x08\xf4\xd7\x85\
+\x0a@'/\xb6\x0a7\xc1\x86\x1dBd\xe5rY)\
+\xbf\xf2\xf9\xbcV\xf9\xbf\xf2\xfc\xb9\x8e^\x85B\x10\xf7\
+\x14\xbc\x16$\x8f2\xd4\xc3c\x86#\x86#r\xc2\xad\
+\x90o\x02\x1d\xddT*\x22B$\xcdO\x0bk\xe4\xbb\
+\x08\xf8\xb8/\xd8\xf2\xd7\xd6\x86\xf7\xcfZ\x0f\xb8_\xc6\
+\x87W\x12#\x9b:QB\xa0^\x9eCeg/\xeb\
+\x95\xfb'`b\xbe\x92P\xea\xd5>X\xe7\xf4\xf6\xd1\
+\x93\xccz\xea\x11?\x1bu*\x1c\x8cs\xaf\xae@\xa0\
+\xccu\xf4\xb2\x93<\x17\xd6;\xeb\xbc\xbfn\xf6\x078\
+\x07H\xb8\x10x\x91X%\x91\xca:\xa3\x22I\xa5\xff\
+\xc6\xe2\x98:\xc1\x87#]I&\xcb\xbad\x9cAr\
+q\x1f \x99v\xea\xb8R\xb4\xaf \x1b\x96\x82\xdd\x92\
+\xe8\xa0\xd2\xf1'\xed;\x90\xda\xc1\x0e~\xb0\xa0\xe3\xbb\
+\x94\x8c{\x0a\x1f\xf2\xcfA:\xd1\xbboy\xb8\xa7\xaa\
+\xa2q\xb4\xf6\x07!r\x5c\xa9c\x5c\xce.\x0e\x92+\
+\xac\xec\xf7 \xe8\x84\xa4Y\xf1I\xa9\xc7\x10\x08s\xbf\
+T~\xefR\xc8!\xc7\x93\xc6W\x8e\xaf\xcc\xe7U!\
+\xfda^\x9c H\xbb\x12\x0f\xc9M\xc8\x15\x02\xb7\xc4\
+\xb1/\x93\x88\xa1\xa7\x1fN\x9b7\x95\x0a\xd6\xf0`A\
+\xb7\xd9g\x98W\x90\xb2\xa1\xfa\xc0\xfcC.\x90q\xe2\
+s\x80\x90\xab\x97\xd0\xf2V\xec\xd3\xcc7Z\x1c\xa8\xb8\
+\x83\xc0\xc0\xc1\xe3\x5c#\x01\x00\x92\x84\xf9\xc59B\x82\
+H\x81\xa0\xd7?\xeb\x85\xfb\xe1}@.@\xf6\x07\x07\
+\xc0\xd1a\x0d)\xef\xdf\xc3\xea\xab\xaf\x07\x7f\x82\xf5\x02\
+\x14]\xa4\xc5V-\x00\xaaO\xab\x02\x8e\x9azz\x8d\
+P\xfaSXsNS\x01\x06aB@\xce\xfbPx\
+QEn\xfczXu\x94M\xf2D\x02\x88\x16\x10\xb8\
+\x9b\xd4\xe3lG\x0fD\x0e\x88;\x12\x1cBD\xd0\x0b\
+m\xd9azpYoj\xe5!\x91D\x02\xc3\xe4S\
+\xe15\xbdC\xbd\xafkV\x7f\x03r0 \xa6\xd10\
+\x1a-\xa3&\xff\x13g\x01dW\xe6V`\x9fD\xed\
+\x01\x0e\x09d\x10\x15\xe0\x81\xf8t`\xb2\xa4\x80\xfaN\
+J$\xbe\xa9\xcc\xcf\x14\xcc\xe5s{\x18J\x01\xca\xe7\
+3\xfe\x1f\xe4iT\x0c\x09\x00HdE/\xf1\xe5R\
+%\xf8t\x13\x80\x91\xf0a\xde\xb2\xbe\xdb\x1e\xff\xab\x1b\
+\xae\x09Z4\xe8\xf5\x95\xea\xc8\xbcSX\x93\xa0\x02\xc9\
+\x06i\x9d^\xa73\xc2\x1an\x92s\xc3\xd2\xcf\x9f\x16\
+\x96\xe6\xc9\x91\xc9\x1e+2\xc076*\x02\xf7\x09K\
+\xdf\xef\x1aV9\x01r\xcb\xd2\x81\xe9\xfb\x13\xc2\x84\xb0\
+H\xf3{<9\xd9\xab\xe4\x07\xfdJP\xee\x1f4q\
+\xc0\x0bS@\x9b\xe6\xeb\xd2\x1b\x92\xc5\xbe\xf2\x9bd\xd7\
+\xe5u\x96\xe7kz\x0e+\xe7\x95\x95#b\xf1\xac\xc5\
+\xf1\x8b\xe3+Y^\x96){\x94*\xef)\xe0Xl\
+\x16\xd6\x90\x1c^\x1c\xa6\x0a}\xe8\xae_\x1a\xd6\xb0\xf9\
+\xff.,\xbd\xfe!,\xfd\xdd\x9d\xc2D\xde\xb7g\xc3\
+\x09\xb0s\x98X\xfb\xd3}M\x7f\x0bkz\xa5c\x1d\
+}\xadQ\x05P`\xc8\xf3%!A\xa2g\xde;,\
+C\xbd_\x93\xa1\xdeW\x85e\xb5\x85\xbf\x86\xda\x82\x91\
+!*\xa0\xa2{\xef}\xe0\xb0\xe1\x91\x99\xa4\x15\xc4\xd0\
+:\xb9\x94\xe0\x8a;\xd7\xe7\x16(T\x8f\xa4\x1a\xc3\xfe\
+\x92\xef\xff\xb79\xa1S\xc8D\xffs\xf8VF*)\
+\x80u\xe25\x0a\x1c\x1b5\x90u\xe6\xeb#\x95\x10\xdc\
+%\xa7\xe0\xeb\xb9K\xeb\x14\xaa(T\xfaAz\xab\xd5\
+;\x93B~\xa6\xf1?P\xc1\xb8>\xad\xe3\xb4\xbfM\
+\x8f\x0aS\xeb\xc6~y~\xdfm\xbe[\xc3^\xafB\
+2\xd0x\x12\x17\x9c\xf7\xb4\x0e\xb8\xd5\x8f\xd6q\xd6'\
+q\x1d\x5c\x08JT\x0ek\x84Ud\x87\xcf\x87#\x84\
+\xcc\xbaX\xe4\xa6 \x16\xe0j\x11\xf2g\xfcqXM\
+$8\xa0f\x7f\xe0|\x97\x1ci\xfa\xcc\xd2\x1a\x0eb\
+\x97\xdez\xd4HP)\xe8\xc8\xcb\xa3\x11'Zq\x98\
+\x97F\x90td\xf4\x9e\xcfJp\x8eO\x0cK\xef{\
+\xaaZ\x0e!\x17\x14\xa7\x8a\xc9\xe8A\x98\x81\xa0\x83\xab\
+\x89\x96f\xed{\xe3\xb3\xc3jk\xd3\xb4mXrW\
+yPf#\x94\x1ep\xde\xc0\xeeW\x1d\xa5\xf1\xfda\
+\xd5q\x07\xa2\x9f\xb6\xe7\x02Q\xa0RE\x80\x08\xf4\x17\
+\xf2\x99;\xda\xe1.\x90\x9c\xc3\xd4s\xa6\xff\xa3B\x0b\
+\x99\x98{L\xd6\xea*\x90L\x0c\x0eN\xde\x9fJ!\
+\x15~\xb8\x0a\x80X\x01\x8d`\xc2p\xf03P@\xfe\
+\x80z\xc0\xca\x88\x03\xc3\xdf\xe3p\x13x\xf5\xbd\xd2\xff\
+\xac\xe2\x86C\xcc\xcf{\x9dk\xbe\x18'\xc8\xadT\x89\
+q\x82\x82\x00\x92\x89\x86\x03F\xe0E\x00\xcf\xf5\xf1\xfe\
+\x04\x02T\x0c\xb9^\xfe\x9e\x00\x02\x87\x0b\x87\x91\x83\x0e\
+Vq \xe7\x04\x08=\xb2\x00\x19\x1d\xf5\x10\x92\x00\x18\
+\xf8\xbcC\xbb\xc0\x1e\x07\xbb\x977\xdc\xb4c\xb1W\xe0\
+\xe1\x8d\x0d\x07\x11\xa8w%3+\x81\xf3y\x82J2\
+\x9e]/\xa9\x1d%A\xbf\xdd\xd3E\xc0\x8f\x1e\xb1\x1c\
+<\xf7\x9c\xfeY\xb2g?\x97\xa3LB\x88\xf1\x83%\
+\xfe\xc1\xea\x95\xe3\xb9\x93\xf1\xa7\xb7\x90\x0d\x83\x96\x0c \
+\xf8p\x0f,\xba\x9e{\x1c\xfe-4\xcf\x09\x18\x98O\
+w\xec\x02\xda\x8a\x00X.\xf3\x88\x0c\x99\x02a\xabU\
+P\x91\xe5\xb9\xf3\x1c\xac\x8bf\xc5\xd7\xf2\xc5\x06\xc9\xf3\
+\x81<\x8e\xder\xb8!p\x90\x18\x076>%F\x0c\
+ab_\xd1\xf8:!\x89\xba\x88\x12\x85\xd6U\xe5\xfa\
+n\xa3W\xe6\x13\x81\x0b\xebn\xfdNn\x0e\xd2B\xc8\
++\x098\xfa\x04J\xdf\x9aCB\x0f\x92@\xe6-\xfb\
+R\xaf\xe6A\x85\x92@\x89\xeb\xe3\xba\xea\xf3@6\xb0\
+<\xc7\x9a`Y^\xe1\xe7~I4\xe9\xe0q\xef(\
+\x9f\xd7'\x00x\xed\x11V\x04FT\x08\xd8\x07\xba\x16\
+\x1a\x07r;v\xaa*J\xbc\x0e\xebi\x1cA\x00\x81\
+\x18\xe2\xff\x80\xee\xc3-A\x80/H\x9c\xb99p\x84\
+p4\xb4\x9e\xd0\xbbw\xe5\x90\xf1=G\xfb5\x89Q\
+\x9e\x17\xfb\x90X\xf5\xa9<Z\xee\xed\x06\x05f\xcc\x93\
+\xf7\xca\xe1\xf8\x92\xde\xe7\x0b+>\xbf\xe2\xf3\xcd\xbc\xa6\
+\x82\xa4\xf5kH'\x09N\x02AU\x0e\xdd\xd3\x07w\
+\x03\xc8#z\xfc\xbeP\xc8rS\x98\x9c+A\x5c\x97\
+\xf7w\x9e;\xad4\xef\xcf\xe6\xcc\xbf\xe7)\xe3\x8c\x9e\
+7\x90NA\xeb\xddz\x04\xb7\x08\xe3N\xef:\xa4\xa7\
+<O\xd8\x94\x0f\x0fk\x12\x0a\x82(:\xd1\x01[4\
+\xeb\x86\xc0\x1dGW\xf7\xe9\xf3\x18\xf9\xa3\xc7\x865\xef\
+\xcf\xbeE\x05W\xe7\xb5\x11X\xda\xcf\xdc\xb2B\xc2\x98\
+\xfb@\x8e\x12.\x06q6X\x9d\x02\x84\xa2zAM\
+\xfa\xa6\xf1t\x0f\xf3Y\x05\x1a\xeay\xd3Cl\xa9p\
+\xa3j\x10\xbb\xd9\xbe\xba\xff\xe0*8\xaf\xc8\xd0\xad\x82\
+\xb4\xc0OQ\xc5*\x00\xab\x19\xb2J\x8f'\x10U\xe9\
+~;\xb0\x04\x89\x82\xa3\xac\xca\x94\x91e8z\xd2a\
+'\x81\xe2\x9eaU\x8e\x8c\xc0T\x05\xdd\x89?\xfc-\
+*\x88\xcc\x1f\x0a\x07 \x0d\xde\x15V\xc7kz|X\
+e7\xf7~DB\x09\x1ds\xa9\xbf\x80\xe8\xa2rE\
+>\xd9\x15=\xc6K\xad\x99TF\x8dp\x10k\xbe\xd5\
+\x12\xf6(\x89J\xe4\xab\x8c<R\xe5\xd2\xea\x02?W\
+o\xb0\x12/\xd3N\xd3\xdd\xa7\x9d3)\xe2\xb7\xa3\x85\
+\xc1\x15\xfac\xc2\x9a\x8a^\x88r\xbdV\xeaO_m\
+\x12\xbb\xec\xeb\x22\xa1\xc5\x01\xcf\xd7{|&wL\xa6\
+\xd6\xa0 9|dXs]T\x1c/\x96,%\x5c\
+\x0aj\x8d\xf0\xfe\x87\xca\x82X\xd9I|N\xf7Lv\
+\xaf\xba\x9e\xc6;\x84\x09\xd9\xb4\x89\xa0\xec\x17T\xae\x00\
+C\xe3E\x22\xe8B\x1d\xfa\xe4\x22K\x1c?\x17\xa6\x04\
+\xcdg\xd5B\xf2\xd0\x86\xb3\x04\xce.\xf9A\xd3\x7f\x85\
+5\xe4\xbb\x91\x08\xf8Mz\x9f]\x92E\xa1meI\
+\x04L{\x86)\xe0?B\x01\xf8\x9eM /\x19\xbc\
+\xdcbrQe\xe1'\xb13\xed\x15V\x91Z\xd3\xe7\
+\xc2jez\xf1\xcd\xb0\xaaF\xe1\x16\x01\xb5\x06\x80\x1c\
+\x99\x8e\x0d\x13t=\xcd\xab\xe9\xd4\xb0\xf4\xff\xe7\x845\
+\xfb\xeb\xee\x99m\xa7\xb2\xd4k\x1f\x9dw\x0bk\x10\x18\
+$hD\xa2\x98\x19<\x9e)Y\xcc\xb3\x1a\xbf\x13\x12\
+\xd552\x8dr=\xd7D\xc6\x9a\xc7i\xa9iI\xd6\
+\xfb\x0d\x1f\x0fk\xfc}}~\x0eg\x8fXVY/\
+$}\xc8\x9b^\x95\x9b\xdf|^#\x03:\xbc0\x9a\
+\xcc\x94\xc0\x88\xf3\xef\xe9i\xbe?\xbd&x\x86\xff\x08\
+\x13\x09\xe9\x09J \xa5\xc0y\xfaKXs\x9fwO\
+'Y\x90\x08\xae\x11\xd6\x90U\x22+'R^#*\
+\xde,u\x0a\xed\xcf\xe6\x10Pk8\x81\xff\xf8\x8b\xb0\
+\x7f\xd0\xf2M\x5c\xc3}\xb2_!\xd3\x0bB]q\x1c\
+\xfb\xe7\xfc\xc4\xb0\xccQ\x90\xcf=\xfb/ \x1d\x9e\xaa\
+\x82\x92\xb8\x95|]\xb4~\x883\xc2\x5c\x04 \xcf\xc4\
+]2\xdf\xbb [V\x9c\x94\xcd\x08#\x90;p\x91\
+\xb8\xd2O\x22\x08yS\x91\x92\x83\x1c0bI\xad\x86\
+\xb4\x80\xd1r0\xbd3\xac\xee\xabFh\x81<\x96,\
+.d\x92\xf6\x13\x1e\x14\x96\x91\x8a\xa5\x90\xc9~+\xe4\
+\xd1\xf8\xdfa\x95<{\xe5\xb4N\x98\x02\xbf\x83\x9a\xcc\
+P\x5c\xd6A\x15\xb2\xea\xca\xa3\x02n\xf4l\xe7\xe7\x84\
+5\x0e\xdd\x13\xc32\x99M\x99\xd0@\xe9D\xae4\xaf\
+^&\xd2|HX\x03a\x10\xa9\x02\x95\x0f\x07@@\
+\xee$\x03\x03T\x90L\xa0\xa1\xfb8&\xea\x95c\x83\
+wEC\xec\xff\x967\x04\x02\x09\xd4J\x99q\xcbK\
+\xa1B\xf0\xfbN\xbf\x17\xb2@\x1cz&Z\x9f\x00p\
+j\x126\x98\xae\xb2\xca\xef\x81\x8a\xc8\x81\x1fv\xd3\xcf\
+qhUQC\x87\x95^=\xeb\xf4\xa2j\xd0\xb3\xf7\
+\xf7\xf2\x7f$.\x08\x08\x09\xf8\xe8e\x02\xc2B\x05\x9f\
+\x0a\x09?\xc7\xe1\xe5\xbaq\x00q\x04\xb8O\x1d\x9c\xee\
+\xfd\xc3\xf1\x00\xc2\x83c\xb8q\x07\xc9\xae*\x08\xe5\xe7\
+\x7f^^\xe1v\x00\xfeDqN\x08b\x04\xb4\x9b\x8c\
+\xe0*\x89\x15*\xb3@\x1a\x05\xed\xb1.:\xbd\x8au\
+~\x95\x00\x83\xc4\x02\xd0I\xaeS\xd7O`\xe2\xe7\x8f\
+\x03u\xaed\xbb\xe8%E\x9f\x19\x19+\x02\x16X\xbd\
+\x8f\x95\xee6\x01I\xafn@\xa0\x8d\xc3\xc4s\xee9\
+\x19\x18O~\xcfk\x8f\x04`\xbcD\xceDB\xce\xef\
+\x87\xdc\xde:\xe6\x00(\x9f\x8f\x83\x0cG\x03\x89 m\
+\x88\xee\xed\x05\xba\xb4\x8f6t6p \xa2p\x13\xfc\
+\xbdKH\xe1\x98k\x1d\xf8@\xe6>@\xa0\xf0\xf7\x82\
+8z\xddl-\x84\x05\x810\x0e\xdc\xad\x1aO\xd6\x1d\
+\x01;\x09,\xc6}]%\x0a\xd6\xb1\x9cb\x09\xcc\x91\
+\xf5\xdbL*\x0e\xcc_\x1c\xfd\x0a\xdd/\xeb\xb5\x22\x08\
+J\x80\xc3\xbe\xc0|\xe4{\xd6\x0d\xd7\xc3\xf8\xf2\xc5u\
+wj\x18\xc3\x86g\xe1\x1b\xb4\x00\x00 \x00IDA\
+T\xc3\x069Q\xb4W\x0a\xaf\xf7jd\xeb\xb8_\xee\
+\x9f\xff\xa3R>\xfb}\x97\xcb\xe4\x01\xc1'\xa0d\x1e\
+p=\xcc\x9f\xadSX\xbeu\xc3\x81\xb0\xa5d\x1e\xc9\
+\xcc\xab7\xde$>\xdc\x1f\x09\x00\x9e;\x09\x18\x10\x11\
+\x04 \x0bH4p\x9d$^H\x08\x09\xda\xe8\x8a\
+\x09\xfb\x17\xdf\x7fM\xbd\xe5[\xc9\xa1f\xbd\x13hQ\
+\xc1\xe7\xf9)\xe1\xb4\xe2R%VoY\xaeNC\xc5\
+\xc0\xd0=z5A\xf6p?\xec\xcf\xb0\xbf_T\xc8\
+\xa8\x86#Ke:\xb9/\x19A\xe7\xdf\xab\xe7\xdc\xf3\
+IH%C7un\xce\xcf\x98\x8f\x0d\x12)_\xc7\
+zy\xa6F\xa5\xf1\xe8\x5ci|^X\x03\xa9\x94Z\
+\x84\xc9G\x91\xc3\x03\xd2\xcfyI\x82\x8e\xfd\x9es\x82\
+\x04\xe9\x96\x9d\xdc%\xd0r\x12\xd0\xcc7\xa0\xf7Jh\
+:\xb0$!\x00\x84Q\xbd\xbdV\xeb \xc0\x80\xfcN\
+\xbd\x94\x8c;dS\xf4\x86:\x90a\x9er.\x01u\
+\xa6\xf2\xa5\x00\xc7\x8eZ\x87\xd4\x98\xcf\x09K\x7f\xf7\xbd\
+\xb0\x06\x09\xc6\xf8@\x96)h\xaf\xe5<Q\x17A\x9f\
+\xfe\xc2d\x9f\xac\x85\x03\x07\x94\xcc\x7fd9\xe1\x9e!\
+A\xa3\x82\x82\x11\x0a\xf4\xde\x83h\xe0yh?Dm\
+\xc1\xeb\x84\xf5Ae\x0c\xd2bA\x7fM\x06H\xeb\x1c\
+\x10w \xa2\xa8\x1b\x90\x80f?B\x0e\x90}\x8a}\
+\x91\xfc\xaf*|\xe6\xc6\xf8\xf7\xb0\x06r\xac\x9e~\xb3\
+\x9c+p\x1f\x8eW`\xff-\x91P\x0dJ\x04\xc0\xed\
+\xa1\xcf\x9b\xbe\x19V\x13\xe1\xae\xd0\x92H9F\x88\x0c\
+\xb5\x0e\x9a\xfcPj\x07\xc3\x0daM\xc2\xe4\xc0rn\
+#\xeb\xb5\xe2\xa9\xda\x9f \xfd|\xca\xf0\xe4\x9c0\x80\
+\x8c+\xfc\xdc;\xaag\xfe\xe5u\xbf\x19\xbf\x13V\x03\
+\xff\xf1\x9c\xc2Bnr\xc3\x08\xe0\xef\xa5\xe7v\xd7\xea\
+p\x0fO\xd5|\xa2\xb0\xb4[\xf1\x7f\xec\xd0\xe3/\xb0\
+_\x93\x98UB\xc2\x15ez\x87\x85\x80#\xf0\x9a\xd6\
+Lv[\xa9k\xdc\xa3\x814\xc7\xa8&\x7fp\xda4\
+\xd9f\x95L3\xaf\xcb\xf7\xd6\x04\xe5tR\xb2H\xcc\
+\xfc,\xd95Um\x00\x8e\x1dH-Aj\x8co\x0f\
+]\x81\x9a\xb0\x1f7\x0e\xab\xbd\xd9\xd3\xa3\x93\xa5\x00j\
+\xf1o\xc9^\xdf\xb0\xf7\xff&\xd9\xff\xa6\x9f\xff),\
+\xbd^\x1aV+\x90\xf3\xc7\xc3$w\xf8\x86F.P\
+l\xf2 \x8e\x9c\x08\x10\x07\xd9\xf4\xc8\xb0\xda#\xcd\xfe\
+\x82\xfaCP\xc5M\x0f.\xea\x01\x81d\x98\xceK\xb6\
+z\xd3\xdb.R>\xfbc\xac\xa3\xeb\xb2\xeeAE\xc6\
+}8\x85\xed\x1f\xae\x90\xf2\xfc\xbe\x077\xe3\x86\xfa\x80\
+\xb8\x19\xfc|u^\xa2\xe6\x04\xb2f\xde>\xaci\xb5\
+\xa1\xc7\xfd\xc0\xb0\xda\xda\xc3\xbeA\xab2\xadf\xde\x07\
+(\x04\xe8\x5c\x1b\x1e0<0X\xde\xdd\xbbN\xe1\xe4\
+\xeb\xd1}\x9f9\x96~\x14\x1cK\xb9\xa5\xf9\x82\xf4\xba\
+U\xb2\xad\xeb~\xe28I\xe70d\xc1\xf3\xe6\xf3\x16\
+\xf3\xe6M\x0b\x8b\xe2+\xd4K\xe6\x1d\x0b4\x1eN\xaf\
+\xd0F\x0bu4\xc8\x04\xb3l\xe3\xd55\x81\xc3\xb9\xe0\
+\xfd\x02D\xd3\xcf\x8a\x0c\x9f[\x04\x88W8\x97\xd4\xbb\
+\x8ez\x85\xfdd%\xb4M\xa6)\xe4\x91[\xbcY_\
+Z\xff\xc8e\xfa\x1c\xe1\xbcg\xbf\xa3pA\xdc\xa9\x04\
+3$\xc0&I$\x0eR\x02}\xd8!\xac~\xbe\xcf\
+%\xb8\x9c\xf0\xd3 OV\xc2\xd3\x08\x18\x15\xe2\xf3\xba\
+^\xb3Q/9B\x88YZ\xc6\xe0Z\x12R\xc5~\
+\x01\x85H\xb5\x0c\x9a\xd4\x96\xb8\x1a\xd2~\xc9\xad\x92\xd8\
+[\xe9\x03\x18H\xf5\x83\x8b\xae0\x99\x056\x22\xbf\xa1\
+\x1c\x80\xf9\x93\xa5bA/vf\x1fM\x13k|\xf7\
+x\xd6xV>0KF\xe2\x8f\xea\xd5\xc6\x91\xa0\xb2\
+-2\x9ea\x13\x05\x12\x87I.h\xad\x02\xe95$\
+\x83\xde\xc9\x0e\x82;\xbf:\xacf\xf6\xe9\xb9\x815\xdc\
+PA2\xffb\xa5uO_\xdf\xcbL\xa0\x014K\
+\x0e\x92{\xbc\xb5\xb1\xcf\xf7\x0bk\x1cu\x1c\xfe\xdas\
+Y\x02,\xe9\xb4\xfb@\xef{\xa6\xfb\x8d_\x99\xa8\x15\
+\x7f\x14\x09\x04\x13\x9c\xc0\x82\x85\xcf\x01\xac^6;b\
+\x04\xcaJ\xd8\xd03g\x87\x8e\x09\xcb}\xb2\xb0\x08\x04\
+H\x0c\xd0SM\xef!\x09\x17Z3\x08\x0c\xa8`\xe2\
+(\xf6\x90P\x02\x07\xee\x0fG\x9d\x9f3n\x04X|\
+\x1e\xf7S9\x12\xca\xb8\x92\xd8\x00\x02L\xc5\x18\x95\x0a\
+\xdd\xaf[J\xa88\xe3\xe0@:G\x85\xbaG\xac\xfc\
+\xc5$y\xe5\xb9P\x91%P\xec\xf5\xbc\x97\xf4\xbe<\
+\xdf\x07\x16\xe4Dt\x88\xe5\x1e\xb1wg\xabP\xf5\xcf\
+\xab\xd7\xf2Y+NXqB\x03\xb5\x14\xeb\xb3U\x0c\
+\x80\x0a\x13\xa0\xf7\x81+\xf7\xd5\x8f#\xcf\x83u\xd6\xc9\
+B:sH\x05\x9b\xdf#\x17\xc78\xdc\xcer|%\
+!\xb3\xa6e\x01K\x00\xc7<g\x5c\xa9$\xf29T\
+\xa0p\xc4{\xf6o\xde\x8f\x9e\xdf\x9e\xbc\x93\xf9\xc3\xbc\
+\xa2\xf2Eb\x92yA\xa6\xf5\xeeRC\xf8\xad\x1c^\
+\xde\x87\xf1 a\xc0\x81R+\xf3e\x1d\xf6\xad&=\
+\x07\x02?g\xfc\xfbD\x0c\x01\x1c\xf3\x80\xeb&Q\x04\
+Y -,\xeb\xff\x13$P\x9f\x08\xe0\xb5\xe7\xf0X\
+d\xc1\xd3U\xe5\x06Y\x7f\xdc\x1f\x09\xb4?+\x01p\
+k\xd7Z\xc3\xf8\x938\xa27\x1c\xc4\xc3\x0a\xcd;\x12\
+A\xac?^90\x81\x5c\x8b%\x1dh\x9c+\xc6<\
+?\x12U\xcc\xbb^5\x02G\x17\xc8<\x89\x08\x12\x14\
+\xb0\xc3\xab\xd2\xe7\xca4\xf3\x0e\xe4\x17*6\xb0\x97\xd7\
+\x16\x8a\x22\xe3\x8a\xbc!\xad\x0a\xcc'*7@\xfe\xb8\
+N\x12\xa5\x82f\x9a\xcd\x9b\x042\x10v\xd8z\xd5\xfb\
+Ke\xdc\x15m\x12\xd4\x8c\x03\xcf\x15\xe8v\xd7\x1a2\
+\x1f\xa5\x844\x99\x7f\x90j\xb4\x06\x11@\x80,\x80\xbc\
+\x90u\x01B\x8a@\x9b}\x84\x8a4\x10\xf15L\x16\
+Z\xe6G\xdf\xe2\x03\xc9/P\xd1\x80\xf4\x1e\xde\xcc\xa3\
+\x8e\xdc\x8e\xcf3\x1b=\x0e\x0f\x10\xebC\xc3\x1a\xf99\
+X\xd6Q\x91\x90\x7f\xc1y`\xf9$\xed\xa7\xc3\xab\xc3\
+\x1a\xc4\xe23\xc2\x9a\x84\x03-uJ\xc0\x98\xecI\xe4\
+^&u\xe4\x8bD6\xfa\xcb\xb4\x94D%\xf8k\x8d\
+j\x80*.\xae\x18\x83\xdc\x82\xdc\x15RB\x10 $\
+\x8c\xd4\xbb=\x1c\x1a\xd6\xfc?\x0e<\x08\x11\xe61z\
+\xdf\xb4d\x00\x99\xc7\x0fa\xff'\xe1#n\x0es\xea\
+P\x19\x14\xe9\xa1\xa1\xb58\x88T8\x8f\x0c\xab\xc8\x09\
+\x93\x08rN#W\x88\xe3\x0aW\x12\xeb\x83\x0a<\x09\
+\x0f\x90\x83 (\xe0\x80@F\xf5\xf6\x1d\xd7\x13r\x9d\
+\xc8m\x01]\x05\xfa\xaf\x0a\xe8\xb0\x08K\xd3\xf2\x94\xb0\
+\x06i\xc0:Vet\xfeTX\xf3\x9c\x80\xe2\xbf\xbc\
+\xf8\x99\xe1\x95\x86_:\x1c\x93\x02\xf3cj\xa5\x9eu\
+\xb0tyX\xfa\xbb\x9f\x84\xa5\x9f_\x19&\xf9\xac\x83\
+D>\xf9;\x05\xdc\xbb\xd4\x80\xc3\x09\x04d\x1a%\xdf\
+\x95\xfe\xbb\xc8r\xdeX\xce\x1f\xfckd\x08\xddzH\
+\x05\x9f\xc4\xba*\x8an\xd1 \x90\x96\xfbfU\x01Z\
+M\x08\xe0\xa2b~H\xd3\xc2\x82\xc3\x1f~\xc4\xfaj\
+\xe5\x88\x04\xfb\xdb\xb3\xad\x18?\x1c&h\xf1\xeaM+\
+\x0b\xdc%\x90=\xaa\x85azaXeC\x1f\xdf\x18\
+V9\x052\xd2\xe3\xa4\xb4\xfc^\x90,\xed\x93\xd3m\
+\xc3\xd2\xeb\xdd\xc3\xd2\xebFaJ<\xc4\xdfm\x1fV\
+\xe5\xc7\x89#\x16\xdb\x845\x01\xa2\x90\x14\xf4.\x1bZ\
+.(?\xad\x0fTN3\xb7\xc3)9p\xdd|.\
+d\xc6Y%!\x87u\xe7\xd6\x0a,-\x0b\xe9\xd3\x0b\
+\x92\x22\xc8\x5c\xaf\x92\xffs;\xf9\x11k5-VB\
+\xdcL;\x85\xa5\xfb\xbe\x7fX\xe6\x06\xb8<\xb7\x8c\xfc\
+.,\xfd|\xbfq\xdfq_q\xc9\xbc\xaa\xd9\xf7A\
+f!\x1b\xd8\x9f\xef\xf8I\x92\xf54\xd2\x07\x84\xb3\xce\
+k\x12\xa5T\xd2\x81\x98\xbbe\xf5\xdd\xe2\x04\xd8o\xde\
+?C\xf2\x15\xc7\xe5}\xef\x8b\x0a\x10\xdf\xd7\x9c\xaf\xa8\
+\x80(\xe19?\x22L\xfb\xe1s\xf2\xfe\xb1\x8c\xf4\xda\
+\xa4\x84 \xe34O8\x17\xa6\xd3\xc2\xd2\xf7\xc7\x96\xc4\
+\xb5Uu`\xff\x07I!\x84\x8b\xe5L\x95\xd0\xf4:\
+~rX\xb3\xafp\x0e\x83\xec\xa2\xb5\x97s\x10$\x1b\
+\x89W\xceo\x12\xdd\xc4A\xda\xcf\xddb\x0a\xb2\x82}\
+\x8c\x04\xb4 \xf9V[\xe0\x1cb_\xe3s\xf1ch\
+\xf9\xea9j@\xd6\x91\xf0\xc5\x1fU\xa2a\xfc{\x98\
+\x12e\xbfi\x906p\xce\xa9\xd00\xde&,s\x9b\
+e\xf2D\xfb]p\xf2\x88\xab\x0e\xe4\xde\xf0\xb2\xb0J\
+\xbajd\x1c\xe4\xc7\xf2\x87W2A]\xd1\x13\xa4\x05\
+2\x1d2\xbf\x8b\xaf$\xbbX\x13w\xb5\x0ae\x1bo\
+)70\x8e\xe3\xd2\xb8\xd4d\xba\xf7\xd3@\xd0c\x83\
+^0\xa43@\xa2#\x13\xb5U\xfe\xbc\x22k\xc4\x8d\
+\xb0@8\x10\x80x\x90\x98\xb8U:\xf2\x90\xb3\x10\xd8\
+\x03=\x11\x94\xcc7.\xc8\x8d\x03L&\x12\xec\xbad\
+J\x94@ \xc3m\xb6g\xf5\x9e[v\x01\xc7\xadr\
+\x11 +V*cL\xc8\xcd\xdd\xbb^&0\x01[\
+Gb\xb6J@D\x86\x1f\x07\x95\xc0\x8e@\x83\x9ev\
+U0<1\x09t!\x83 \xfa'=\xcc8(\
+v\x00\xf9\x5c\xbe\x90Q\xa2\xa2\xc0F\xc5\xf3\xe1{\xee\
+g\xd5\x0adqX\x09\xfc:\xfdy\x07\x8ad\xe4\x08\
+\x8c8\xf1z\x99D \xa0\xfc\x1dd\x86 \x00\x08\x18\
+\x18o\xae\x8b\x80\xfd6\x1d\xc4\x19\x87\x9cy\xc1s@\
+e\x82J\xf0\xc6&],\x0e\x0d\x0e5\x09\x8c{\x8a\
+|\x0a\xc7\xacSi0i\xe1\x9d\x04-:K\xba\xd1\
+\x17\xa8\x95\x05\xb9Km\x0c@\xab\xc8 {\x1c\x99\x1f\
+}\x22\xa6\x0f\xf8\xbb\xef\xcdEA\xe0\x8a\xa3G\x00X\
+\x13\x1ce~VY\xc0\x92\x08`\x1c\xbb\x83\x8b^b\
+2\xa4\x0e\xa4\xa8\xb42\xce\x04\xac\xbd<\x1e\xe3\xce\x06\
+M@\xa5\xd6\x13\x1cg\x07tr`h\x11\x22C\xea\
+\xd6\x8a\x83\xb5qn\xd0\xb1\xbe\x03U&\x11\xc0\xfc\xec\
+U%\x98wK\x0a\x84\xfa\x84G\x9f\x10\xbaS\xde\x19\
+j \xcb> (\xec2y\xa1;7\x7f\xc7s\xc0\
+\xa1\xef\xc7\x99@\x8c\xf1\x22\xa0\xd0\xf5\x0d\xc7k\x5cI\
+\x0c\xb2\x1e\xb8\x9f?\x99\x1b\xa0\xbcV\xce\x8f2\xaf\x91\
+\x99\xe4\xbev6I[IX\xad\xa1J\x1a\xfbF'\
+7i\x886\x09\x0e\xe6%=t|\x1e\x812\xe3\xc5\
+\xbeX\xa1\xfa\xe5\xf3\xe9%\x86\x0b\x00\xce\x07\xc6CH\
+'Wp\x1f\x1f\xd6\xf48C\xaeF \x01\xcb<\xeb\
+\xe3\x00A1\xd9\x8f;=b'\xb24\x8e\x86\x9e\x0b\
+\x92\xe8\x00\x8e\xfd\x87\xc0\x11D\x96 }\x0e\xe8Hd\
+p_\x1c\xe8\x90\xea\xa9\xf2\xe5J\x10\xe4cr\xe0\xe7\
+\xb7\x97J\x8e\x13\xd8$\x00\x80\xbe?\xba@\xe9\xa9\x00\
+\x0c\xfb\x97@&\x1d\xf7E?\x9c\x80B\x8e\xc7\xf0\x89\
+\xb0f\xdf\x22\x90\xc3q\xe19\xb3oP\x01\xb96\xac\
+\xd1w&\x11\x03t\x99\xc0\x10\xd29\xf4\x86\xa5\x1e\x80\
+l\x9d\xe7\xb3*>\x90\xdd\xc1:m\x87O\x8e%\xac\
+\xd4^\x7f\xecK\xf4<\xf2=\x08 \xc8Uq\xb4\xa9\
+\x14q~\xf1\xfcXg\xcc\x17\x90#8f \x96\xe8\
+Q'\xa1\x89\xae3l\xdc\xc8\xa1A\x06\x07\x0b<\x89\
+\x00\xa0\xe0$>!\xa3\xfdT\x91\xd5t\xeb\x80\xee\xc7\
+\xad\x11\xc86Q\xc1#a\xcb\xfcd\xfe\xa1\x8a G\
+o\xc5\x19\xd9*R\x8eu\x0ab\x03\x12/\xe4\xfe\x98\
+G\xc8j*\xa1f2V\xc6Q\xe4\x92n\xc1\x83d\
+\x8b\xfd\x8b/\xd6\xa9 \xcf\xc3qRg\x10\x22\xc7\x01\
+0\x08\x0a\xc8*\x95\xc8\xb1\xcc\xd5ea\xcd\xb9\x05\x89\
+4\x01\xce[\x85\x94yb\x81\xccZ}\x01\x04\xd1#\
+\x0aRe|zQ\x11X\xdaj\xe9.K[\xe5\x9e\
+\xf9\xc7\x8c)p\x1a?\x12V\xfd\x85\xe1'a\xe9\xe7\
+\xaf\x08\xab\xb2ly\x97\xde\xbc\xe1F\x08\xae\x84s\xb4\
+\x0f\xfdO-\x94\xe1\xe7\x0e\x7f(\x90\xda\xf1\x9ba\xe9\
+\xf5~a\x0dK?\x09\x02\x9d\xe7\xe9\xef\x935\xe4e\
+T\xfaN(\x05\x02\xf6)*\xf1VM \xd1J\xa5\
+\xef\xe5a5@\x079\xb2t^X#\xbfH`\xa9\
+sw\xda7\xac\x92z\xbbe(\x90\x0f\x0f\xd7\xb9\x12\
+\x9f\xf7\x8ddq?w\x0e\x93\xde\xfc\xb7C= \xd9\
+\x85\x22+}Km9X\xdc%,\xbd\x1e\x97\xec\x99\
+\x8d,\xdc9a\x15\xe2\x9f+\xf2\xe75\x15\xeb!\xac\
+\xe9\x99\xbe6\xac\xf1S\x05\xb1\x9eN\x0e\xab\xdc\x18\xe8\
+\xbf\x87\x18^&I\x0c\xae\x8a\x95\x19\x91\x165\xdf\x8a\
+\xdc\x85\xcb\xa4\x93\x95\xcel\xed\xaf\xad\x88\x11\x9f;B\
+\xcc\xa5\xb0\xf6\xd1\xf3\xa3W\xd5U\x9fn\x9a\xfeo\xfa\
+\xbf\xba^\xc7\x8b\xc3\xe4\xef\xa5sa<*\xac\xfa+\
+\x9c\xffFv\x90\xa0c\xdf\xc5o\xa4G\x5c\xe3\xec}\
+\x9f\xfd\x93D1q\x16\xaa \xfb\xe7\x13nU\xee\xa8\
+\xcd\xb2@m$>\xde\x96\x13\x1f\xc4c\x82\x8a\xa3v\
+\x90\xc7\xef\xf7BH\xdc6'\x942B\xdb\xc8\x04\xa9\
+e\x00\x99\xb7\xba\xce\x13t\xddBH8\xa1\xa5}\xd6\
+q\x9b\x90+\xfc~\xfaxX%\xd7\x1e_\x1a\x96^\
+\xff5\xac\xe1h\x03y\xccx\x11\xa0\xe3\xef=5,\
+}\xff\xf4\xb0f\xbf\xa2\x95\xe9\x820qe\xbc\xa9A\
+\x9c\xcb\xefuk!\x09\x00*\xf7\xf8\x07\xa5\x14R \
+\xfc1\xaf>\xaf\x16AZ\x11\xf8\x7f%l,G\x0d\
+\xe9<\xe7+H&\xe2 \x90\xe6 \x8b\x1e\x12V\x13\
+\xdd\x90b\xe2\x9fL\x9b\x855\x1cu\xf8\xc9\xda\x07\x90\
+\xc1\xb4|:\xfb\xa5\x90\xb3\xc3\x1b\xc2\xa4&\xf2\xaa\x8a\
+P^9n\x93\xec\xae5P\xc9$.q \x9c\x1e\
+\xd6\x0c\x5c\xd4\xc5\x0flz\xd7\x22\xc0\x5c+g\xa6w\
+\xcfrL:`V\xecY6\xe2\xe9\xdf\xc2\x9a^\xe3\
+\xfb+\x909\xbb@\xa2\xdcRL&\x1f\xfd`6\xe6\
+[\xc2\xaa\xe3o}E-\xe0L\x82rd&\xa3\xc8\
+\xfa\xd7\xf3\xf3\xc2\x9aJ\x16d\x17@y\x16\x1d\xa4\x96\
+\x85D\x85\x16G\x85\x83\x14h\xa5\x10\x01&c\x10\xa4\
+\x0a\x92Ao\x0c=)\x1f\x07$\x01@\xcf\xa2O\x80\
+\xdaC\xe0\xfb^]\xde\xbf\x97]\xa3\xa7d\xab\xe4*\
+\xbe\xbd\xe91BFF\x90{\xcb\xb4\x10\x80\xe18\x01\
+\xd5\x07*J+\x84\xc6\xd3\x8eb\xad\x14\x97@\x91\x09\
+\xcdu\x12\xa0\xe0\x98\xdcl\xe8u\x09\xa8\x08\xb8\xfa\xde\
+b\x02\xa9>\xd0\xe1:\xd7t\x8bE\x19O\xc6\x11\xc7\
+Z\xdf\x1b\xca\xdf\xcb\xb1\xf5j\x0a\xabw\x90k\xde\x97\
+\xeb\xe8\x03\xc0>\xd0#\x90\x10\xb9\xdf\xb0\xaez\x9fa\
+)\x07\xa2\xce\xfd\x901\x95\x1c\x9a{\xcey_\xa0\x95\
+\x90\x14\x09\xe2\xe4\x03\x00]\xed+\xc2\x1a\x07\x93\x8d\x84\
+\xe7A\xc0\x8f\xa3\xdc\xb1\xd3;\xf0\xaf\xac\xf4\xcb\x10\x01\
+\xcd\xfd\x11\xf8/g\xb9'@\xed\x13I\xac\x1f\x1ca\
+\x021Z=\xf8\xbc\x1e\xb1@\xa0J\x85\x91\xfbE5\
+\x81\xcfEfK\x19\xf0\xe1\xf2RYq\x06\x1fh+\
+\xefK &\x99\xd14Z\xa52G\x02\x80\xc4\x96\xe6\
+\xe3\xfc\xd7\xd2;o\xd6p\xd6/\xaf|1/\xb9\xff\
+\xd5:\xce\x81ur\xd3Dm%!\xf0\xef\xc9\xfe\xba\
+\x04A\xb3\x1e{u\x81\xe5\x89)\xf6\x05\x1cb\xd6\xcf\
+\xb1\xfa9\x81(\xef\xc7\xf5s\xbf\xbc\xfe\xad\x93\x7f\xec\
+\xc9\x06\xe1\xc4\xd8C\xf2z\x907.-\xaf\xa0\xfb:\
+!\x01T\x85\xca\xe4\xae<7Z\x03\xfa\x84\x81\x02\x0e\
+\xe6\xdd\xfc\xd3\xf9\xaa\xdc\xfb\xbdQ`\xa6\xfe\xc1\xfe\xcd\
+~%\x884\xac\xd7\x1c\xf8\x86\xb4\xf7\xfb\x0a\xf3\x8cD\
+\x03\x95q*+\x04*\xf4\xf4\xb3?\xd3\xeb\x0bI\x1e\
+\x08\x06\xce7\xd6\x0d\x89\x0d\x05\xc0\x96\xa7T`\xe0\xde\
+{*\xe8\xb4\x02\xd1[-R\xb9\xf9\x84\xb0\xda\x83\xe8\
+\xc4!\x07\xb6\x1c\x1d\xd6\x89\xc9\xeeph\xa9\xf0\x22O\
+\x88\xac\xe6\xf7\xc3\xfeA\xe2\x10\xe8 \xcf\x99}~\x8d\
+\xe5-\x1a\xac\x1bW>\xa8x\x03\x95\x87$\x0f]x\
+\x12\x80$\xa4\xd8\x07\x08\x94 [S\xc5\xc2dW \
+1@\xfa\x91\x18\xa6\xc2K\x80\xaeJ \x89n\xab5\
+p?\x11\xa8|\xa3Q\x17\xa0\xc5D\x0e\xa79i\x9e\
+\x95\xad\xb6vu\x888\xeb=\xd3z\x82l\xa0\x1cy\
+'\x22;9'\xce7s\xd4(\x91c\x95\x11\xc6\x0f\
+.\x00\xf5\xe0:\x11\xf3\xd4lU\x85\x80\x00\x99^X\
+\x12g\xf8+bcg\x1ft\x22\x8e\xf5\xc6z\xa70\
+@b\x8c\xc2\x85\xc8\xb1\xecH\xabu3\xbc\x89\xf0'\
+\x9c\x90\xe0\xbc\x07\xb2\x8f#\xde9\xb2.\xe8\x88t\xd9\
+\xe4\x7f\xb4N\xf1\xf9\x8c7\xeb\x96\xd6\x12\x9e3\xe7\x13\
+\xdc\x1a\xa8\xc2\xa8\xe7\xd6\x05\x0b\xcei\x15r\x96\x9e\x17\
+\x96^\xef\x9b,\xf9\x99K\xd7.]\xb3\x94\xce\xdf\x95\
+\x17\x84\xa5m\xee\xbba\xe9z>\x98\xec\x03BJ<\
+\xbf\xcaw\x01i\x9e^\x13\xd6\xb4D\xc4\xa7>\xb3I\
+D\x07\xe2\xe3_\xea\xbcX\xda1\xac\x09\x1c@>\xa9\
+\xb0\x84J\xc3\xf0\x97\xb0\xf4\xfd;\xc3\x9a\x96\x16\xedk\
+\x04.\x04\x14\x11v\xe6\xc0\x13\xf2M\x91!\x92`\x84\
+\x9c{\xf1\x9a\xb0L^\x9c\xd5I\xc6K\xc2\xd2\xdf\xfd\
+6\xac\x06\x0c$\x86\x08\xe08\xa7\xdc\x8a\x0b2\xe5\x11\
+9\x85\xe2\xf57~)\xac\xb2\xf9\x8f\xbb\x875\xfe:\
+\x88\x85@\x8a\x1c(\xd5\x87\x08`~\x16\x96\xfeo\xdf\
+\xb0\xf4\xfd\x07\xc3\xd2\xeb&a\xb5W\x1f\x12J\x10\x02\
+\xf8\xd5\xd3=\xc2j\x80\xef\x0a\xb1\x90\xa8Y\x8e\xfb\xad\
+\xaa8\x9f^e\x05-\xd3\xf6\xed\xd2r2?'=\
+\xd7\xe74=\xeb@\xd3!3\x85\xf3\x8b\x8a0\x15{\
+\x90n\x14\xa6\x14\x07\x0d\xd7\x15\xe4\x06H\x80\xb4V\xcb\
+\xfc\x87\x93\xec\xb6\x19;Z\xfd\x13\xfe\x9f\x80^\x89@\
+T(<\x0f\xe0N\xa1B\x0d\xf4\x1fRL\x10\xa5\x8a\
+\x7f\xdcRp\xd3\xfc\x97\xf9\xa6z^\x9a\x14\x94\x82\xe8\
+\x1b2=f<\xdf\x0f\xe5\xe7\xbb~.i9q\xc4\
+\xfeNAe\xde#\xac&\x00L\xaa\x87\x8a\x92\x12\xda\
+)\xda\xca\xec\xf6\xf3\x0ft\xce\xc0\x91\x06\x92\x8f\x96&\
+\xf6Y\xceg\xad\xe3\xe9\xb1a\xe9\xf5\x98\xb0\xb4\x8e\xfe\
+_X\x13\xb0\xfeOA\xd0\x18!\xa6\xf1p\xe1W\xef\
+\x0b\x84\x9eD\xdc|r\x09p\xcd-\xa2}q\xfa\x8f\
+\xb0\xca\x91`n\x18\x9d\x8fN\xc8\x0b)\xe5}\x8b\x02\
+4\xf3\x83\xc0\x9b\x00^\xfb\xa4\xfd\x11\xfcc\xce3H\
+\xe6Y\xbf\xa8}p\xde\xf2E\xdc\xa9\xf3a|nX\
+Z?\x1f\x0f\xab$\x94&\xe1\xe7\x5cB.\x12\xb2T\
+\xc8\xc2\xf1?\x84\xf0\x22>\xb6\xcc\xaf\xe4/W\xe6\xca\
+\xc4!\xd5\x81s\x8f<\xd0`\xa0\x16d\x92\x81\xce<\
+4,]\xe0\x9b\xc3\x1a\x9dX*\xd3T6\xc4B9\
+\xdc\xbed\xb2\xe7I\xf2\x82Tn\xc5\x8ak\x16Y\x91\
+\x0e\xc2r\xebL\x90\x1c\xd1\x00b\x05\xd4\xc6=\xa7d\
+:\x08\xfcp(\x98\x888@\x04\x1a\x1c\xd4\x0a|\xe7\
+\x0f\x845\x0e\x802J\xfe\xff?/\xaf\xa0\x85HJ\
+\xf4\x88QY3i\x04\x81\x19\x9f\xc7\x17\x13\xbf\xd7\x7f\
+\x875\x99\x83\x9c\xeb\xe7\x80\xe4\x80\xe5 \xe7\xfd\xc9`\
+\x02\xc9_C=\x84@e\x08\x94\x09\xe8\xd9\xa8\xa9\x0c\
+\xec\xdfU\xc2p\xf8\xc8DS\x81\xe3\xe7\x04 8\xbc\
+\x5c?\x81U'\xd7d\xd6\xf4Y\x074\xe4x\xfc\xdd\
+zrP\xd6\xd0\xfd\xf1s\x12\x1b80|\x0e\x81.\
+\x8e\xb7 \xc9\xc3:b\xdb\xef+\xac}\xab\x01\xe3I\
+@\xb0\xa6+\xfb\xcb+\xafSG\xba\xc7s\xa3\xc2\x0f\
+B\x06\xd5\x09A\xfe]\xe9\xe4\xfak\xe0X\x02\x11\x91\
+Z\xa6\xf7(\xf7\x03\xd4\x9eV\x0b\xe9\x13\xbbBM\xcb\
+\x05\xbd\xb2\xdf19^\x99\x87\xcc\x07\x12C\xd7w\x09\
+\x01\xc6i6\x87F\x19_\x02\xbe\x1e1PU\x01\x96\
+\xb3\xd0\xdf\xb6k\x81\xe0\xe7\x04T<o\xa0P|\x91\
+p\x83\x13\x84\x0a\x16\x89\x068/\xe8\xf1\xe5~x.\
+\x8cw\xf4b\x9e\xd8@\x9e\xc4\x96\xeeD_\xafgN\
+b\x00\x08\x18\xe3\xc9<e]\x02\xa5C6\x90Lo\
+\xcf\x8d\xc1}\xf3|I\x10\xb1\xc1\x13H\xf3\xda\x93\xfc\
+1>\xbd\xbc'\xaf\x04\xec$\x04\xd8\xdf\xd6\x97\x1a\x08\
+\xff\xd7\xcf\xef\xcd\xddJP>\x87V\x03\x12D$\xda\
+ \xbb\xbb^\xfb\xc5_;\xd9N\x0et\xde\xb7\x97\x9b\
+T\xcf\xaae\xf2\xd8\x0f\xef)\xb2\xc7{\xa8U\x89\xc0\
+\x80\xc0\x8fu\xc4\xf7T\x8cY?8\xfc\xb7+\xeb.\
+\xd4\xabs\x02\x06G\xe9^B\xf0\xdcK\x9f\xcf\xbc\x04\
+Z\x0c\xa4\x98\xfd\x8e\xfdL\xcf\xd7\x90e\x10_\x90\xc7\
+]\x22D\x00\xa4\xae\x04\xc4\xf4T\xab\x22\xec\xf5H\x80\
+M\x22\x95\x00\x9f\x84\x0b\x01\xcf)E\xefx\x15\xae\x0a\
+\xc8\x8c\x94P0I\x1d\x8e\x1e\x15\x5cX\xe6\xf9\x7f\x12\
+2\x8f*\xc8\xb5a=A\x81\x1f(Y.\xc9\x07:\
+\xb0&0\x22Q\x80\x0c/\x15oZ\xe2@\x18\xf1\xc5\
+\xff\xb3~\x99\xbf\x8c\x8bt\xc9\x1d\x08C\x16\xd9s\xc4\
+P\xa9\x14T\xd2\xc8\x03*\x95\xccWz\xa3qhE\
+\xce\xeb@\x13G\x91\xf5G\x22F\xbd\xafN\xd4\xd0\xb3\
+/d\x82\x13\x18 \x0e\x98g \xe34\xdf\x90\x1b4\
+\x97\x11\xeb\x07\x04!\xf3\x88\x0a\xbcX\xca\x9d g\x9e\
+\x90\xd8\xe2:p\xe0\x99/$\xeaT\xd9q\x80\x0fR\
+\x01\x84\x08\x0e=\x8e*\xadi$^h\xb9\x04\xba\xcf\
+\xfe\xd3\xb7\xe2\xe0\x00*qo\x99Q\xf4\xe3o\x0ak\
+*\xccp\x01@2\xc8\xcfa\xb5f\xfeSyd\xbd\
+\x82\xe8\xe2\xfa\xfe\x16\xd6$\xf48wi\x15A\xd6L\
+\x15U\x93\xb8B\xeeL\x8b\x0a\x85\x03\x12\x95<\x7f\xfc\
+\x02\x10M\xbc\x8f\xa0\xd6\xb4\x02\x8c\xf9+\xbd>y|\
+\xca\x98\xfc\xc1\xa5W'K\x01\xc0\xca\xd3W\x9e\xb62\
+z\xd5\x7f\x15VI\xd6\xf0\x87\xa6\x9f\x875\x95s\xf6\
+\x0b\x15R\x5c\xc9\xa4\xb5G-\x16\xe3\xab\xc2\xd2\xeb\x9e\
+a5\xe16\x1e\x10\x96\xde\xff\xa5a5 \x98\x1e\x16\
+\x96\xae\xeb\xdea\x0d\xf9\x9c\x12Q\xc8\x84\xb9\x12\xaeu\
+\xee^u\xce;\xed\x8f\xf3\xfea\xe9}\x1f\x17\x96^\
+\xaf\x0bkZ\x01\x1e\x19VU\x04\xbc^\xa9|Bn\
+\xacs\x12\xd2@#\xfa@(\xe8\xb9Nw\x0c\xab\xd7\
+=\xfe[X\xd3R\xa1\x00k\xbc.\xd9\xaf\xd5\xba\x11\
+\xbd\xf8\xe7\x87\xa5\xd7\x13\xc3\x84\x088\xae\xb6\xe2\xcc\xb7\
+\x0f\xab\x09\xaa\xe9\x01a\xe9\xe7\x7f\x0a\xab\xa4\xcc\xd3\x1f\
+\xc3\xd4\xf2\xfb\x1a\x15V\xae\xc9\xec\xf7\xa5\xe2{P\x91\
+'\x87\x0c\x17\x7f<s\x84m^\x0b(\xf4\xfc\xf3\xb9\
+\x1e\xdf\xed\xe7\x1d\xa2'?\xfd4\xb7\x22\x984\x0d\xe4\
+\x0e\x89{Z\x84\xd87!7\xe5}\xb6\x09\xab\x15\xf3\
+\x14\x03\x1d\x95\xe3 \xc8\xedP\x0b\x089\xf5\xb8\xcf\xb5\
+\xc3\x9a}Hr~^\xef\x0a\x08\x81l\x83\xb0\xb0\x8c\
+$=\xf1O\x08,L\x1a\xa7o\x85\xa5\xef\xd7\x09\xab\
+-W\xec\xe3\xf37B\xd0\xbai\xfd\xe1\xfcRBz\
+>8\x85\xfc\x077\x5c\x1f\xfa\x1c\x10\x10\xa8,\xa0&\
+\xe2sE\x05_\x12N\xe3\xab\xc3\x1a\x0e\x01\xc9\x8d\xc2\
+\x09b\x045\xe4\x92\xff\x12\x96\xb6\xb1G\x84\xa5\xef\xdf\
+\x12V\x0b\xbcN0S\xc8\xd2\xbed\xee\x07\xe2\xa0\xbb\
+\xc8\x9f\x02\x91\xb5I\xf9\xfb\xf4\xe9\xe5\x5c\xe2\xfc\x15B\
+\xd1\xd7\x01\xa2\x8b\xfd\x1f?Dq\x88\xb9\xe4\x1e\x1f\xd6\
+\x14\x22P!P\x02\xb1\x97W\xefUU@\x00\xcf\x9f\
+\x0ck\x12\xdc\xc4i\xab\x855~\xcc\x14\x96\xf6\x8dw\
+\x84\xa5\xf5\xb3kX\x1a\x9f5\xc2\x1a9uHHA\
+^j\x7f\x9f_\x18\xd6\xa8U<6[-\x0c\xaau\
+m%\x0b=8\x22\x83%\xd2\xf2|\x0f+\x99\xeca\
+\x1b\xf5T\x8b\xd5\xdc,\xfa\xf4N\x90I!\x83\xab\x8c\
+\xdaxKX%WJ\xcb\xa2@@\xc8\xe0\x8b\xe4\x08\
+(ap\xaafVU\x91\xc6\x8c\x0f\x0a\xab=\x9d\x86\
+\xb0\xed,y?\xd4\x0b\xa8\x5cI\xa6\xd0\x0e0z\xb7\
+8F\xb0\xec\x02M!\xc0\x22p\xe0\x80\xc7\x81%\x80\
+\xe0 \x95\x9c\x857\x08\x02\x81\x1e\xd2Le\x80\xc0\x86\
+\x9f\xd7\x00\xb8\x04\xdaLh Gl\xd48\xe0}\x80\
+\xca\xe7\x81` \xb0\xe1\xf7\x04\x12\x1c\xa8\x04\x8c\xc8\xf0\
+\xfd*\xac!\xa7\xfbgPp\x02(\x1c\xd1\x9ee\x9e\
+\xc0\xb8W\x13`\xc1P\x89\xe8{I{\x0e\x02\xde\x87\
+@\x87\xf7\xe1\xef\xd8\x18\xb9\x1f6b\x16\xda\xea\x96\xff\
+[\xc6%\xb0Je{\x0b\x93\xb3-\xd7\x11\xef+\xdc\
+8\x92\xb0's}\x04\x86\xbd\x5c\x1a\x8e>\x81\x5c\x0f\
+-\x97\xac\xe0\xc0\xfdq\x1f\xdc?\xf3\xe4\x0fz\x8e\xc8\
+\x04B\xf6vH\x81\x0c\xcf\x1f+\x99\xc9\xf9\xda\x120\
+\xbb\xb2Mb\x05y4*1\x1d\xbb<\x1b\xa4\x1dY\
+\xee\x87\xf9\xd4'\xa8\x18O\x02[\xe6-\xe3\xc3\xfd\x00\
+U\xc4a\xa3\xb2\x8a\x1a\x00\x88\x1a\x1cG\xfe\xff*\x05\
+F\xe8\xec.\x94\x91\xed\xd5\x06\x08H\xa8\xd8\x9f\xa9\x0c\
+\xa7\xf6\x1b\x93\xba\xe9\xf3,\x97I\xa6\x9d\xf5\xdes\x01\
+\xe0H\x93p`<\xa8\xb0\x01u\x85K\x82qb}\
+\xf0\xc5\xfcf\x9cj\x82i99hG\x1e\x99\xe6@\
+Y\xe7p\xa1@\x96\xc9\xf8\x10`2_\xd8\x1fz\xc4\
+\x10\xfb4\xe4\x95\xf4@\xc31@\x0b\x00\x89\x8f\x1b;\
+\x19\xbd^\x96\xad\x92#\x96\xfd\xe4\x00\xbd\x1f\x10\xf6\xbb\
+)1\x08\xb9#\x01\x83\x90Q\xc9\xc1\xf8F8\x18\xae\
+8=vx\x5c\x0e\x98\xd7\xcd\x18\x89Z\xd1'\xe1\xb2\
+\xb9\xd6\x11\xea\x00$\x5c`\xa9\x17\xeb\xb79)\x18\xd7\
+o\xa9B@\x80{\xb0\x02\xb2\xcb\xd4\xd2\xc5}T\xe4\
+V&\x0b\xb3\xec\x1a\xe3\x08\xd2\x00\xc7\x98\xcf%a\xd0\
+\xcf{\x90.\x04.\x82\x02\x9a\xfc\x8f\x962\x9e\xfb\xf1\
+\xd9\x9c\x90@7\xdb\xa4\x998\x16B\x00!;h\x84\
+@\x9fPT%\xd4\x09j\xd6\x01$\xbb@MI\xc0\
+\x83< !\xce\xfe\xc8\xbc\x02\xa9A\x85\x15\xc7\x85\xc4\
+=\xbd\x8b\x90\x1b\x1d\x1c\xd6\xc8\xa2\xa9\xc7\x9fJ\x92\x0b\
+\x05\xec\x03|.PUz\xd3\x85\xf4\x19\xef\x18\xd6\x5c\
+\x17\xfb\xa9\x90<\xc3\xab\xc2\x9a\x16<dd\xe9\xb1\x87\
+\xa4Q\x15\x22'.\x08p\xa8\x94\xd3{)\x0e \x12\
+\x0e\x96yT\x22\xd1\x89\x09\xe6\xa9\x10\x0a\x86^\xc3\xb2\
+O\x02\x9euE\xc5\x8a\x16\x0f\x1cd\x90\x19$ \x98\
+\xafp2\xc01D%\x07G\x14()\xd7C\x22\x89\
+\x9e{\x0a\x01\x9c#]\xeb\x14\x89U\x12\xfe\xeeI\xd7\
+\xfbA\xb6E!\x07\xc4\x83\x11\x97p\xf1p\x8e\xc9\xe1\
+\xf6\xbc\xebX\xb8\xad\xb2\xc4>J\x8f)\x01\x13\x10c\
+\xc9\xca\xd1\xf2@\xa01\x5c\x1e\xd6\xec\xbf<\xd7O\x86\
+5\x08\x06\xfc\x12%Z\x8cD\x01\xa1\x0a\xf2P\x95\xf8\
+\xe9{a\x15\xe9B`\xb98+,\xfd\xfe#\xc9>\
+\x9a^/\x9b\xbe1]\xd6$\xbc\x8e\x10\xeb\xfa\x96Y\
+\xcf\xa7\xa8\xc2\xa4y:\x1e\x12\x96\xfe\xfe\xea\xb0t,\
+\xbc<\xd9\x89\x0dT^\x1d\x22\xc3i\xc3\xe9\xc3iY\
+\xbe\xf3uY\xe7\x1brO\x91L;`Wo/\x1c\
+\x16\xf3\xc9aM\xc0F\xef1\xa4\xa7\xb5U4\xaf\xd3\
+\xe9\xfa\xb0\xf4\xe3\xdb\xcd\xb9\xc7\xddP~U\xb8\xa7\xe7\
+\x84\xd5\xd6M\x90Z\xf8\x89f?\x17\xb4\xdb\xe4\xaej\
+\xc9D_\xdd\xea\x1d\x90+\xaa\x90\xe6\x04\x95\x10z\xe3\
+\xf6a\x95]\x1c\xa8\xfb\xf4\xda\xb0\x5cQ\xce\xfb\xc7\xb4\
+\xcd\xb4\xdd\xb4]\x83\xe4\xd0~k\xfd\xf9k\xc2\x9aq\
+\x88\x806\x9d\x1f\xd3\xe7\xc3\x1ad\xa4\xf6Sz\xa6\xb3\
+\x8a\xc3\xeb\x1a\xbf_\xaa\x22|\x8eI%\xd1]\xbf1\
+\xcd\x87\x1b3\xd7\xd8\x9f\x82k\x0c.\x02'\xaei%\
+e\xde\x91\xf8\x12\x1b\xfc\xbc\x87\xb8\x08\xc4\xddd\xb9Z\
+Z3\x0e\x9b\x0f\x9d\x0f\xab- n]V\x05z\xfe\
+qX\x83$\xbec\x9ei\x05\x09\xf4\xb4\xa6R\x1b\xf5\
+\xfc\xff($\xcb\xb95\x19.\x15\x10\x14Q\xf9=3\
+#)\xce\xcer\x9e \xd6>\xa6\xf3\x0e\xd2r\xad\x13\
+\x17^t\x8eM\xe7O\x17D\xa2\x06\xe40\xea\x0bN\
+\x8c\x82d\xd0y9\xbf\xad$FM\x8a\x8a\x1f\xa6\xfd\
+\x84\xe7f2O\x91D\xce\x1b\xeaU\x09\x99 g\x9c\
+\xe2~>\x14\x96\xbe\x7fpXZ\x9f\x97\x87\xa5\xd7\x1f\
+\x85U\xe4,\xe7\x80\xb9+h\xf9\x15\x996\xad\xe3\x90\
+\x81\xa2>\xe2\xf5%\x049\x81\xf1\xfc\xd7\xb0\x86#\x00\
+\x84\x12\xe3\xa5\xfd\x9b\x84\x1e\x81\xf5\x8a\x1fh\x9f%\xae\
+\x84\xe3\x00Yp\x90f\x14\xae\x89c\x84(\x9a\x0f\x08\
+\xab\x08\x10\xfb\xa5\xc8\x97\x93\x10'\x91\xac\xfb_\xda7\
+\xac\x16>\x16{\x84\xa5q{cX\xc35D\xa1\x1b\
+\x7f\x80\xf3L\xad\xf0T\xfe\xf1/Vz\xc2\x130\x5c\
+1\xffp\xfea\xd3\x0byM\xc9\xb4\x03e\x1b\xce+\
+\x08\x01o\x00;\xe9\x03\xdeR*\x1b\xf3/\x0a9\xc7\
+\x8a\xe7\x94\x03`\xfc\xd5\xf8\xcb\xf1\x97\x19\xea\x98!V\
+\xcex\x0b\xc2>\xbc=\xac\x92\x9e\x8d\xc7\x865P;\
+2Q\xd7\x14\xf2\x08zF`\xc9d\xe3\xf3\x03Pf\
+\xc8\xa4&\xca,\x03\xe9d\x02:3\x82|\x15\x95\x0c\
+X\xa37P%\xae\x97\xd1\xa3bB\x00A I\xe0\
+\xfa\xcf \xc3=\x0bx\xff\xff8B[/\x0f\x10\xfc\
+~=\x19\x5c\xa7\x0f\xef\x00\x90\xca\xb2\xc8i\xfcw\x04\
+B8\xbe\x04\x00}\x80\xcfu\x10`\xaegv\xf4\xe2\
+\xd8\xe2\xd8\xf5:\xf0\xdc/\x01r\x7f\xddd\xf2\x090\
+\x91\xcb[[\xef\xcb\xf82>=$\x15\xb6m\x12\x0c\
+<\x07\x1c\x8f>\xa0\xe7z\xf9\xff-,[V\xc8\xf5\
+\xf8=\x89\x82:\xae% \xdau9ty\x15\xb27\
+\x10\x11\xdb)@#\x90\xf9k'\xdf\x06[8\x0e.\
+\x89&\x9e\x0b\x89&\x1cX\x02W\xc6\x97\xbf\xe7}\xfa\
+^\x22\xee\x9bqe\x1e\xf4=\xfc\xbf\x90cN\xeb\x03\
+\xf7\xbfqW\x09f>\xf52\x81\xfc\x1e\x121\x91\x18\
+\x99,\x0b\xb6nz\x80\x090\xb8.z\x85\xaf\x90#\
+\xab\x9e\xb3\xe4L\x17\xb9-\xc6\x0b\xc7\x9a@\x9e\xd6\x08\
+\x05T+\xfeS\x1b4\xcf\x9d\x00U\x15J68X\
+m\xdd\xcbM\xa2\xa6'\xc5\xe4~\x91\xb3B\xad\x80\xc0\
+\x9b\xebg^\xe1x\xaf\xbb\xbc\x85\xc4\x9c\x1b\xac/\xc6\
+\x97\xff\xab\xe4\x8c\xa5U\x00\x88\x19\xfb/\xf7\xb3\xfer\
+\xf5\x01\x8f{\x8f\xc8\xa1\xc7M\x07\x8eI\xddX\x7f\xcc\
+\x1b\xe6#\xf3\x82\x84\x11\xef\xc7\x01\xc1\xfd\xa2~\x01\x9b\
+<\x09\x0a8]\xd8/\xb9n\xe6)\xeb\x17\xce\x15\xe4\
+\xa4jkS\x19o\x05\xd2\xc1Y<4\xa4aYW\
+\xf8\x86&\x00\x11\xd2\xc0\xf3\xfc\xfbe\xfe\xcc\xa7\x855\
+\xef\xf78s\xbf\x94\xc0\x9d\x84.\xeb\x8a@\xf0\x80\xb0\
+\xea(:!\xa6D\xd6*\x95cd\xe2@h\x11\xc0\
+\xe2\x10\xb2\xfe\x09\xb4!E\xe2\x8b\xfd\x0925D`\
+`_\x072\xa9}\x01rY*d&\x03\xa4\xb2+\
+\x04\x82Y\x89O\x0b\xab,\xf1\xf4\xbc\xcf\xa7\x865\x88\
+5Z\x5c\x80\xb0\xaag\x1c21\x07\xfcz\xa5b\xe3\
+D\x19\x89M*_@\x9d\xd5\xf3\xe9^fz\xf3\xa9\
+\xa0\xe20\xe3p\xe0O\xfcKX\xf5\x1f\xfc\x1c\xd4\x03\
+ku\x04\x90\x1aJ\xac\xd0\x1b\x8e\x0c\x99\xd9\x9f\xa9x\
+S\xb1c\x7f\x04\xaa\xa9\xe7FB2\x93\xb8\xed\xda\xb0\
+\xfb\x93\xa0d\x9f\xb95\xd3\x83F\xcb\xc8\xa7\xb3l0\
+\x8e\x22\xe7\x12\x9c\x00\xac7\xcei\xf6->\x97\x96(\
+\xe6/\xbf\xffj\xb6\x1a\xd8\x92\xf0\xa0\xf7\x9c@\x0fh\
+*\xfb$d\x90@\x94\xfb\x16\x1f\xd4\x808\xaf\x14x\
+\x8e\x0f\x08k\x0a-\x22\x97\xf3\xfa\xc7\xd1d|D\x92\
+\xe8\xf9\x85\xaa\x83\xc61\xcb\xaaEb\xeb\x9ba\xcd\xfe\
+\x22\xee\x17\x12B\xf4\xee\x03i\x85\xe3\xc2\xf2b@\x94\
+Ap\x22;)\xc7\xdd\x0e1\x01\x0f\xd0]\x05\x1e\xc8\
+\xbe\x0d[\x86\xa5\xfb<\xa1\xe8\x5cO\x1b\x84\xc9\x11\xfe\
+U\xb3\xae\xf4\xbe\xd3\x13\xa6'NO\xc8\x81\xfc\xcf\x22\
+\x90\x9fv\x9cv\x98v\xc8\xe4\x81'\x0c'4\xfb\x1a\
+\xebS\x10\xe8\xf9\xa2\xe4\xf0_T\x0b[\x99\x9cp\xaa\
+\xc8\x92\xac[\xff\x98\x06\x09CbZ\x81\xd5\xe2\x0da\
+\x8d\xda\x14l\xe8\xa8Y!\xaf\xa6\x80\xdc\x89!\xf6U\
+\xce\x91\xafK\xcd\xe2S\x05\xea\x9d\xfd\xdd3\x9a\xc4<\
+\x097\x0aWT\x9c\xd7\x0fk\x12S\xf4@G\xcf|\
+\x83\xe8\xa3\x17\x1f\x92A\x17\x10P\xe9 \x91\x06\x22\x88\
+\x0a\xb5\xe4y\xc7\xeb\xc3\xd2x\xbc)\xacQ/\x10y\
+\xdc\xf4\xd2\xe9e\xd3\xcb\xaa\xac\xdc\xfc\xcb\xb0\x1c n\
+\x98\xd5\x04V\x0b\xab\x08\x9c\x5cynH\x04\xf13\xa8\
+\x98\x9a\x9bDr\x9d\x90\x03\x9a#@\x5cJ\xf9\xf3V\
+\xcf\x09\x98\xdf\xe4\x04\xcc\x86\xb9$T\x13\x02\xdf+,\
+\xf6YT\xef\xaa\xe6\x1c\x14\x07\xd4|\xc9r\x92R\xab\
+\x9b\xa8\xf2?\xfdB\x88\x92\xf7\x85\xe5\xc0-\x93/B\
+\xeai\x88\xfdNaRC[=\x07\xe2G\xe6\x842\
+\xfe\xc9\x8d:\xb7\x88O\xd2\xd3\xcf\xc8\x87\xf44\xb3|\
+\xa8\xfc\xa8\xe9\x03\xc9\xceK\xaf\xef\x0e\xab\xfa\xf1T\xe2\
+\xbd\xef\xcb?\x81\xe3a~\xd3\xfc\xe6\xcc\x8d\xa6\xfd\x1b\
+\xd2?\x12*\xc4?.\x0c\x90x$\xc1\x82\xbf\xfes\
+\xb5\xb8*\xb1Fb\x86\xd6\xa5\xf9\xd2\xb0\xc6\x1f\xa4\x02\
+\xfd\xadR vK\xccZa\xf5\x9c\xa5\xb5b\xfad\
+Xz=:,\x17\xa4\x93ed\xcb\x99\x81lYz\
+\xd4\xd2aK\x8fj\x0a\x9a\x14\xa2\x95\xe8\xb7\xec(-\
+L$\xbeYO$\x0e\xd4J\xe3\xc4\x16\x85eZ\xc7\
+V\x0fK\xafW*\xa1t\x83\xb8\x12 \x83\xa7 L\
+\x02\x17.\x12Z\x88(x\xe8\x9c\xa1E\xcc$\xc6 \
+\xc7@rA\x9e\xd8\xcbl\xabek\xe9\xdc\xb0\xba^\
+\x17(/\x83\xa4\x00\x00 \x00IDAT\x9f\x0cK\
+\xe3r\x9f\xb0\x9a\xb0wK\x19q\xc7\x9fsI\xc8\x85\
+L\xd4\x0aV\xce\x7f\x09K?8\xb7\x90+e1\x8c\
+/7,\x96\xc8\xed|\xb8\x1c\xec\xc3\xfb\xd4\x22 \xb9\
+3W\x0aDzC/\x85\xc9\x1f$\xc32\xfe:\xac\
+\xe9\x85\xbcNP0\xf5\xb8\x8d\x8f\x0bK\xef\xa3\x0c\xcf\
+\x0a\xaeK,\x9b\xe9\xb0(\x10\xad7\x97\x0c\xbb3\xd9\
+\x1c\xb8\xb0\xf7S9\x81\xe4\x86^G\x1d\xb4\xe3\x11a\
+\xb5\xc7\xca\xfa\xca\x04`\x0a<\x9d\xa1\xe4\xe7@PI\
+@\xec#\x87\x98\xdeXX\xc5\xfbJ>\x0e=\x8e0\
+\x89\x80\xfe\x8b\x19\xdbA\xa1]\xb1\xea\xe5\xb9\xb8\xcf\x9e\
+3\x80\x0a\x0c\x19|2\x99\xff\x0c*\xcf\x04\xa3\x22\xcd\
+u\xb3p\xb8nz\x18\xa98r_\x04n\x04\xb4@\
+\x85\xd9\xd0 \x1dc\xe1\xd1\x22\x00\x94\xf7n\x9a\xa0\xbd\
+\xa3\xc4}\x12`\x11\xb8\xf3\xbe \x02z\xf95\xc6i\
+-\xb3\xd8\x17\xc7sC%t\xfa@\x97\x00\x98\xff\xeb\
+{\xe9\xfb\x80\x0a\x87\x0fh\xec\x1d\x04q\xaf\xe4\x86%\
+\xf1\xa1\xf1\x9boR\xcf\xdd\xa1\x22\x85\xda\xca\xad\x00\xe5\
+zyn\x8c7\x8e&H\x0098\xee\x81\x82\xfc\x8e\
+^\xf3\xae\xe7\xdf\x01.\x95*]\x97\xafc;\x05t\
+<7z\x95z\x04\x05\xe3\x0c\x84\xedd\xf5\x9a\x9e&\
+R\xa3\x90\xc1\xba\xb0\x81\xf6j\x83vE\x06\xe83\x99\
+U6\xc4_\x0a\xe2FB\x03G\x18\x87\x9f@$\xc8\
+y^\xd7\xe8\xcf\x92\xa09N\x154A~\xcd\xba\x0a\
+\xfb\xf7\xfeau\xdf\x98\xaf.\x19\xfa\xe4\xae\xe7\x9f{\
+\xa3\x07\x1a\xfb\xc2\xb0\xe6\xb9\x82\xa4\xe1y\xe3X1\xbf\
+\x987\xacK\xc6\xab\x92)\x92\xb0*\x7fO\x8f?H\
+%\x90?\xbc?\x95/\x1cO\x9e\xc3\xda\xcb\xd9\xf7\xc9\
+\xa8\x9b\xac\x86\xf5\x0a\xd4\xff:e~I\xc8AV\xc9\
+u\xdd\xa4\x9f\xa3W\xcc\xfa\xe0>D\x02\x98fU\x09\
+\x8cXW$4\x80\xc6q\xa00\xef\xa8|\x03!%\
+\xd0\x06\xeaJbA\xf7cd\x082mp\x91\xbc\xb2\
+\x90\xd8\x98T\x88q\xe1:Q?Q\x02\xda\x883\xf6\
+S8P\x0e-\x10X\xefG\xccs\xe6\x97\xe6\xa3\x13\
+D\xea\xb5\xf7~\xda\xb7|\xb0>\xa9\xc4\xf2>$\x16\
+ G\xfdg\xea\x1b<WH\xdcX\xa7\xb0\xa0\xd3\xfb\
+\xab\xf3\xce=\xe5\x04\xcc\xdf\x0e\xab\xec\xe6\xd6\x15V\xab\
+\x9cU|\xa8\x1ch\xfeX%\x07V`H\xed\x18\x0f\
+z\xb0\xd9\xdf \x13\x02\x12\xce\xfe\x85\x83\xcd\xdfi\xdd\
+\x1aq'\x99A'\x92t_\x995\xfd\xfa\xa6\xc5\x81\
+\xf9Cb\x84J0\xe4\x898\x8a \xc9\x94\x18@\xf6\
+\xc8\xac\xe7\xc8\x1a\xbe)\xac\x81@\xe2\xa8r~\x00\xa5\
+e_\xc6\x81%\x90\x22\xf1\xc1\xb9F\xe2\x8f\x8a\x90\x12\
+]n\xfd \xf1\x8d^\xbb\xb8\x1b|n\xf3\xf7\xf8A\
+\x22\x9fB\xb5\xc0\x95\x5c\xe63\xd7\x09\xb7\x01\x9c\x0az\
+\xde&\xc7\xa3W\x9b\x0a\xa3\x02\x9dF\xed\xa3$h\xd8\
+\xc7\xb9o\x02n!s\xa2a'Zv,\xcf\x07\xeb\
+?l\xd2\xc8\xeai>\x83\x802B\x94J\xbd\x10&\
+T0\xcd\xd1\xf4\xfa\xb0\xf4\xfb\x97f\xab\xa4\xcaj\xe1\
+\xc2\xc1w\xc0\x0bb\x09d\x0e\xd7KK\xa5>g\xba\
+2\xacQo \xc1\x04\xa7\x84\x90\x02\xf3\xdd\xe6\x1d\xe7\
+\xb4\x9fN\xe3\xb44-eG>\xf72OO*\x01\
+\xc4\xf4\x8e\xe9\x9d\xd3;\x1a\xbf\xef A\xb5\xa9@\xcb\
+\xd1_q\x8ed\xfb(T\x9d\x22\x84\x13\xf2bQ\xc9\
+\x8d\x9e\xfbM\xc3\x1a\x993\xb1\x97\xcfw\x0d\xab\x01\xf7\
+\xe2\xc5a\xe9\xf3\x7f\x1d\xd6TV!\xc3\x84\xdb\x8a}\
+V\x5c%\xc3\xeb\xc2r\x22\xa5$\xea 1e\xff~\
+\xbb\xe4\xd8\x1e\x92\xec\xa1U%g\xde7\xac\x22h\xcc\
+\xa5\xf0iq\xa0|7\xed~\xdf\xad\x15\xf7\x9c0<\
+\xa5\xf1\x1bT\x015\xd9\xe39\xc9\xd3?\xb7\x22f-\
+\x0f\x18\x89\xa1s\xb4\x9e#`\xbb\x7fX\xd3\xba\x07\xc4\
+[\x15}*\x95\xf3\x19a\xb5\xb7\x7f: L\xc8\xa7\
+\xd3\xd2\xf7\x17\x85\xa9\x95\xe1\xb0\xdaj\x8cz\x80\xe3\x07\
+Z-h5\x91\x1a\x06\x05\x0az\xdb\xa7\xf7O\xe7E\
+@>?h>8\xeb\xa3\xa3\xff.6z\xcb\xbeA\
+\x8e\xa7\xca\xba\xfdD\xce!\x05\x90 \xb6,3\x87\x8e\
+\xbb\xc8L\xf3\xeeqTm\xe12\xeb?\xfe\xd0}s\
+\x13WE\x223\xdf)\x8ch?\x81\x83\xcd\xfb\xba\xb8\
+\xa7\xe6O\x84\xfeZF\xd4\x94\xfb?C\x5cm\x9a\xc7\
+\xc36J\xa8*13\xbd<\xac)\xe8\xa0\xa2#\xb2\
+Es!P\xb0\x01\xe9\x0aW\xca6:\xbf\xa9\xeck\
+^\x85\x98`\xde\xdf\xd42\x04\xb4\x9d\xf5\x89\xdc\x9c\xa1\
+\xe8\x04\xc2j\x89\x82\x03\x85^\x7f\xc6i\xf8iX\xf5\
+w\x16\xab\x85U\xf2\xc7\xb4'\xfe$s\xc6\x893g\
+\xdc*\xac\x92o\x9a\xd3\x84\xde|\xc8\xf8\x94@\x9d\x9f\
+\x15\xd6\xa8\xd9\x90\x08\xd1\xbcHgTI\xdc\xbdr>\
+)T-\xb2\xbfy\x9c\x0a\xe3W42\xbe$\xb2\xe1\
+L\xa0\x15P\xf3\xd0\xad;\xa88\xe0\xefP\xa1\xa7@\
+A\x01D\xe7\xa0\xfd7\xfc\x1a\xfcd\xd6\xa5\x12\xa2\xe3\
+}\xc2\x1a\xe4\x90\xfc\xe0\xe9\xe9aM\x9c\xaas\xc5q\
+E @o\xaa\xd7\xb52\x0f\xc8\xf1\x95\xe4\xcf\x8e\x85\
+\x06\x22sHn\xd6\xe8]\x22;\xc1\x81K\xe6R\x99\
+].\x90\x03\xc5\x95\x91g\x97\x96\x81q\xf3\xb0\x06\xba\
+\x80\xde\xa1*\x89\x832\xfb\xf3&%1`\x99\x88\xd3\
+tPA\x82\x82\x9c\xd0\xd6a5\xf3gvhA\xab\
+9\xa8\xed`\x90\xb0\x90\x83\x92\xb7\xb7s\x1b\x1dr\xc8\
+FX\xe0\xf4\xb8\xca\x91r\xa5C\x15lg\xa0\x08 \
+\x81\x90\xe2\xe8\xe1\xd0s\xf0\xf3 z\x07\x93\x83\x1c\x07\
+\x8dJ\x93KG\xeaE\xdb%\xac\x09\x98u\xf0#\xe3\
+a\x96\xe9\x1f\x16$\x87\xa1\x87\x04.8\xaa}/8\
+\x0esO\x22\xc6\xf7=KyeK-\x09\x08\xae\x9b\
+\xdfs\xdf8\xc2\x04pT^\xf9|2s\x04\x22L\
+|\x0e$\x1cQ\xc8\xf4p\xd4z\x92?\xde\x07\xb6~\
+\xee\xb7\xca\xd8-\xcf\xa8UR<\x028\x9e\x132p\
+\xe5~\xf9\x9c{\x97\x03z\xb8s\x09\xc8\x1d\xa0m\xad\
+\xcf\xbd\x93\xde\x0f\x12=\xd8\xda\x0f\xd7\xfc\xa0BE\xe5\
+\x90u\xc5\xf3\x07\xba\xd5'\x88\x94\x08\xb1\xec\x8bHn\
+\x1a\x9dT\xe4$K\xc2\x87\xc4\x0f\xefK\xcf\xfbj\x82\
+\xf0\xb1\xc1\x93@\xc1\xb1\xefU\x1c\xa8\x18\x13\xf0\x80p\
+\xc0\xa1\xa0\xd2\xc6<\xd8A\x07\xe5.J\x00\xf1\xbcq\
+\xb4\x09\xbc@\x0eQ\xd1b\x1f\xf9Z\xa9\x8c%\xf7\xa2\
+l\xd8\xb4\x18\x10H\x02\x9d\x16\x04\x98\xcc\xbe\x1d_e\
+\xa4\xcd\xd1\xc0< \xa3Nb\x8c\x0a\x08\x1b-d\x95\
+\xac3\xe6\x07\xcf\x89J4\xf3\x85q\xa0\x95\xa7\xaf\xe4\
+\xab\xc2\xefW\xe6?\xeb\x81}\x81u\xc8\xef\xf9\xbc\x1d\
+\x93C\xb5\xa3\x12Kwh\x02x\x02\x10\xe65\x092\
+\xd8\xfc\x17ZWT\xe4\x99G\xfc\x1f\xf3\xfa&\xabH\
+\x94}\x08\xd9R*\xdd\x90l\x82t\xe8\x13\x22z?\
+#q\xe0 \xa0\xe2\xc0<\x07)@`D\xe5\xf1\x01\
+\xea\xf5\x06\x1a\xad\x84\xc0\xfc\x91\xb0f\xbeu:\xf4\x03\
+-#\xec7\xecG\x04\x0e\xa8\xc7l\xa7y\xf8\x13\xbd\
+\xcfo5O\xf9{\xcb\xae:!Rz\xf5\xe4\xc8{\
+?Gu\x01\xb9\x22\xc8{\x08t{\xa8(\x01\x0d\x89\
+$\xc6\x8fy\xf5\xf7n\x9e\xd1r@\x22\x03\xf2\xba_\
+\x85U21Wd\x15\xf0:\x91\xc4\xb9H\xef<\xe7\
+\x14\xbd\x8c \x89\x90I=\xa9848LV_!\
+1\xa1s\xd0\x15L\xc6\x8b}\x02\x920Z\xffXO\
+\xb4F\xb0\xaf0\xaf\xd9G\x84\xc4\x0b\x08\xeb\xf0\xa2\xc6\
+\xa1&a\x034\x1c\xfdi\x91\x82\x99\xfc\x0e\x99;\x12\
+\x0e\xcc\x7f\x12y*8\xb8\x15\x82s\x80\xcf\x11d\x12\
+\xdde\xb7\x080\xee@=\x91\xcb\xa2r\xcd\xf5\x22K\
+\x88_\x01b\x8ey-\x88\xbd\x13c\xac\x07\xf4\x96I\
+\x88\x80D\x02)\xa7q\xf2~\x08\x92\x04\xe4\x22\x9f\xc3\
+<\x05Q\x83\x03\xc9\xf9\xdc\xefgp\xc8<'\xac\x16\
+H\x80\xdc\xe2p\x12\xb8\x8f\xff\x1e\x96\x1d\xc5\x82\xe8\xf8\
+Y\x91\xb7\x1b\x9f\x19\xd6\xc8,\x0bb:\x5c\x13V\xe5\
+\xe2\x98\x87\x86X\x83\x10\xa1\xe2GB\x82\xfd\x8f\x80\x9b\
+\xc0\x03\xa4\x04\x01\x02\x81\xc8K\x94HP\x8b\x8a\xfd=\
+\xc8\xb6\xe0\x86\xe1~\x05\x85\x9f\xfe\x10\x96\xf7E\x12z\
+9\xc1\xe8@\x09\xb26\xce7\xe6\x19\xa4\x95ps\xc0\
+9\xb1R\xfb,\xe7\xccQ)\xc0{R-\x1cAJ\
+\x96\xcf\xa3\x8b\xe5\xc8G\xe0\xf9\x8d\xb0\xf4\xbauX\xd3\
+\xa2\xc6~\x81\xdfE\xc2\x1c\xd9>\x91|9a\xce|\
+z\x8f\x10\x22\x9a'\x96\x1b\xa55\x16\xa8{$\x04\x1e\
+\xd2\xf8\x0d\xff\xa9\x84\x12\x15J\x12\x99J\xb4\xa2\xdf\xee\
+D=$u\xa8E\xb0\xfe)\xe4\xb4$\xe0m\x82\x9a\
+\x9ef*\xa0\xec\xd3\xda\x1f\xa6\xb7\x85U\x84Rn\xc1\
+\xf8\x88\x12e\xe9yL\xbf\x0f\xab\x08\x138\x04\xdc:\
+q\xef\xb0\xc6\x7fT\xa2\x04\xb2SC\xb5\xa3\xe5\xf8R\
+%\x80vW+\xc2k\x9b\x0a\xfc\x0d\x22\x0d\xd7\xba\x9b\
+/+\x95j\x12>Fh\xf4\xb2\xc0\xec'\x9coJ\
+\x14\x12_P\x81\x9d\xee?\xddoJ\xcfq\xdck\xdc\
+{\xdc\xabA\x0a\xc1\x05\x82\xdf\x06y0\xfe\xe9\xbb$\
+\xcf\x09\xe9*\xfe\x0b\xe7\xca\x7fI%F\xac\xffN<\
+=@\xdc0\x17\xcb\x9f\x92\x1f`\x0e\x08\x90R\xdb\x17\
+\xbf\xd9\xad;B\xbay\xdc\xf0o\xee\xab\x04\xd5\xeen\
+\xc1\xa35\x8f\xf3\xbc<_\x90\x10\xac_HvQ%\
+`>qNrN\xe1\x97t\xad\x9e\xa8q\x90\xe0\x5c\
+:.\xac\xb6.\xddzaX\xe5\x94\x98~\x1cV\xc9\
+\xef\xa6\xdd\xc3\x1a2S\xc8\xb5EZ:|$\xac\x99\
+\x9f \xbe8\xaf\x1e_\x10I\xf3\x0b\xe7\x17\xcc1.\
+w\x0c\xcb\x09\xa5\xe7d\xc4+\x09\x85\xe7\x865\x89[\
+Z\x06\x08\xd4!Ie}sN\xe2\xff\xb2\x0f\xc01\
+\xc28\xd0\xc3\x0fW\x0f\xfb<\xf1\x1c\xdc\x16$ZI\
+\x10\x1f\xaf\xd6y!\xc8\xc6\xc7\x86\xa5i\xf0\x8a\xb0\xf4\
+\xf7w\x08k\x0a\xe6\x9cS\x9a\xc7+s\x8f\xca\x19M\
+F\xf8m\x05B\x09\x94\xc0\x10?6\x9a\xaf\x08Rs\
+\x99z>\xd1W\x06\xea%\xa8\xc2\xb8GXC\xb6\xa5\
+\x00\x85\x03s\xfc\xd1x\xc5x\xc5\xb2\x8aU\x81 )\
+\x93\xe4\x1e\x0b9x\xc3+\xc3\xea\x0d\xa1\x13\xeb\xcc9\
+P@m`\x0e\xd4\xb9aA>L\x9a\xa6\x9e\xeb\xe1\
+\xbd\x05\xe26?\xbf<xo\x94\x1c\xb0 \x0c\x800\
+S!\xbe\x8f\x0e\xac\xbb\xca\xe1\xeb+\xf1\x04\xce,p\
+6\x12\xbep\x90\xf8\x1c*\xc0\x1c\x98|\x0e\x5c\x028\
+\x8eT\x0e\xa8\xe8\xb3\x01\xe3H\xe3H\x12\xa0r\xb0\xf6\
+l\xf6\x04\xce\x04\x18\xfc=\xf7A%\x8c\xcf[\xb7C\
+ \xf0>\x04\xc8d\xb4\xb8/6\xd0\x9el\x8e\xc0p\
+\xd08t\xba\xeb\xae\xf4\xd3\x12\x8e*\x01\x15m^\xb9\
+>\xbe\xe8]\x86\x0c\x04h#\x81\x07\x0b\xbd\x97#$\
+P\xabdx%\x00\xa4\x92O@\x08\xf4\xe9N\xee\xc5\
+.\x7f\xcf\xfbR)\xeeU\x1d\x18gz\xecv\x15\x19\
+#\x7f\xa7\xca\xec\xfc\x8b\x02\x85s\x22\x89\xcf%@\xa4\
+\x05b\xbf\xd0\xe9hz\xc9A\x12\xdcF\xf3\x85\xe77\
+w2oT\xbex^=[+\xf7\xcf\x86\xcf\xf8p\
+=lP\xdfV\xe5\x90\x0a\x22\x1b\xdf7\xb5\x11\xbeX\
+\xbdR\xcc\x13Xv\xa9`!\xcfF\x86\x92\xc4\x07\xd0\
+\xf4O\x17\x87\x93J\xc1*\xbd\xca\x90\x0bj\x1c\xe6S\
+\x04y&\xd0\x03b\xbfw\xc9\xd0z\x1c\xd8\xf8A\xa0\
+\x10(\x138\xf7-6\xdc\xff\x0ebe\x07\xf2\xd8\xb7\
+\x8c\xec\xa4\x8a&\x15\xf3~\xbeS\xa9\x22`f\xdd\xf2\
+\x5cy.$\x14\xb6)2BF^\x80\xc4\xe0\xfd8\
+\xa8\xfb\xe7\xc5x\xf3EbC\x9c\x00\xee\xe1\xaf\x1c\x06\
+\xe5~\xd7_\xce\xb2\xef\xfd\x92\x84\x04\xfb\x03\xa4\xa5 \
+O8\xd8\xe9\xe5\x87,\xb0\xaa\xaf\x14\xf9\xb5\x83\x86\x03\
+\x83\x1d\x1a2X\xc6\x89\x160\xab<\xe0p\x83\x08a\
+\x1c\x09\xe8\x90\x19b>\xb3?\x82\xc4\xe1\x80\xa7\xb2\xf6\
+p\xe9\x19\x03\x0d$\x00g\x9d\xb2\x0f\x00\x9dV\xc0m\
+\xe8\xa2\x1c\x09#R\xc4\xcemu\x18\x02g\xd6\x13\x0e\
+\x13\xe3eN\x119<\xec\xf3\xea\x89\xb6\x9c\x10\xad3\
+\x0ap}\xee\xaa\x07\xd4dl\x90?\xb1\xde\x90\x9b\x13\
+\xa4\xdd\xe4B\xaa\xd4BZf\x1d`\x12\x0e\xcck\xd6\
+\xd1\x05aM\x22\x8f\x04\x22\x81>\xfb:\x90h\x91\x18\
+\xc2\xcdc\x12<\xe65\xf3\x92@\x9bq\xa6\x15\xef\x8d\
+a\xcd\xbe\x02\x00\xee\xd6\xb0\xe6\xfap\x98\x09\x8cq8\
+\x816S!\x83l\x10d\x01\x09\x82^\xb6\x94s\x89\
+\xc0\xe1\xc4\xb0\x8a\x18\xf2\xf3\x02\xf1\xc8\xdf\xf3s\x027\
+\xc8\x0b\x95\x88tK\x07\xe4M8\xb2\x0a\xd8![j\
+\x0a!\xb9R\xeb\xc0N\x95^\xb3w\x0b\xbaoy\xbb\
+^n\x0f\x7f\x00y4Ap\xdd\xaa\xc5>\x8d\x0a\x0d\
+\xa4r\xaa|\xe30\x82\xf80\xc9\x1f\x9c\x19\xaal\xe1\
+\xd8\x0f7\x87\xd5\x04\x9fU\x0dh5\x94\xfcbr/\
+Kb\x00\xbf\xe8\xc9\xea\x8de^\xf0\x05\xd2\x86\xc4/\
+\xfb \xf3\x85\xf3\xe02\xf5\xe4\x0ba4}-\xacV\
+\x8e\x8d$\x82\x8c\x0c2\xccmE\xc6\xf6\x18\x91\x9d\xb1\
+\xfe:96\xcb=\x0b\xa1\xe1s\x9au\xcc\xbc\xe1\xf5\
+\xd7j1\xfde\xe1R\xca\xdcB[4\xe7\x80H\xa9\
+s%\xfc~\xe9u\xffd\x07\x08\x8a\xfe\x15\xb5.\x9d\
+^[x\xf2\xa7\xecQ\xe5\x01\x8d`\xe5\xfa\xd4\x22a\
+d\xdd\x81z>\x1a\xffq\xff\xb0\xaaw\x7f\xeb\x0b\xc2\
+\x1a.\x16\xd8\xc7Qu\x90\xff\x8c\x9fe\x84\xab\x12)\
+V\x1d \x80\x01aG\xeb\x13\xfe\x02\x95a\x90E\x92\
+\x17u\xcb\x00=\xed/\xd2s\x81\x84X\xad\x1b\xe8\xab\
+\xbb\xf2\x0a\x097~7\x88\x10\xe6\xefea\x15Q2\
+=/\xacI\xb4Fa\xf1\xd9\xd9\xbf\xf8V\xf8\x17&\
+\xe1S\xab\xce\xfc\xe7\xb0\xf4\x7f/\x09K\xdf/\xcd\xe3\
+<6\xf1\xcc\xa3U\x09\x069\xa5\x8a\xae\xfd~\xf6s\
+\xce\x0d\xfcR%\x0c-;\xae\x02\xd5\xe2!a\x81\xb8\
+\x1a\x8f\x1e\xd3\xfc_y\xf6\xd2YKg7\xf2\x9a\x04\
+\x8c$b\xd4\xd23\xdfm\xdei\xbe[\xd3\xc2\xa1\x82\
+\xa4[b\xe0\xa8\xe8\x902\xf3\xa6%P\xf5sg]\
+\xe9\xfc\x85l\x90y\x04'A\xda\xcbK\xe0\xbeR\xad\
+\x84J\xbc\xa4g[Z-9\xc79\x1f\xd9_{\x84\
+/\xadJB\x8a\xd1\x12\xe1\xb8\x01\xee\x01\xf6\xa1+\xc3\
+2\x02\xe7\xa0 o$1`\xf2\xc9\x13\xd4\x8a\x03\xb2\
+M-k\xe3\xd5a\x99\x83!Ym\xf5\x9e\xde\x19\xd6\
+\xac\x7f\xb8\xdd\xd8g@\xdc\xc0e\x22\x04\x84\xb9\x8a\x94\
+\xd04\x89\xbd\xf6w\x12\x0c.@\xb0\xbf\xe2\x7f\xd1\xd3\
+\xaf\x16\x16'<Q;\xd2\xba\xe0\xf7Y]o\xdf\xa6\
+`\xcbs\x05\x19)u\x1f'\xdex\xfeje\x01\xd2\
+\xef\xe7\x04\x17\x0b\x7f\x8fz\x8c\xb8;H\xf4\xb3^|\
+\xbe\xe0\x07i~\xaf\x1c\x8f\x18\x1f3>\xa6\xc9L\xbd\
+\xa7@\xa0\x86\xef\x85UGo:n:v:6?\
+\xd8\xe2\x10(\x83\x92\x96}&g\xe0\xc1\x8d\xfb\x845\
+=\x83\xca\x94\x8d{\x96\x84\x00\xf2R\xe3\xfd\xc6\xfb\x8f\
+\xf7od>\xd8\xf8p\x00\x91\x07\xa4\x95\xe0>a\x0d\
+\x84\x8c\x0d\xea\x18A\x1c\xb6\xd5\x86\xc0\xc2\xe5\xfa\xc8\xc4\
+\xb3\x91\xe1x\x00\xa5\xdaQ\x13\x9b\x00\xe1\x8b\xd21'\
+\x90\x97\x03c\x99!\xc9\xbb8S\xa3\x9e\xd3\x99\xc0]\
+\xd0\xd2UH\xc7p\x5c\x15\xb8\xb219q\xd1\xcbV\
+qpQ\x99\xa7\x97\x07Y\xb8\x03\xe5X\x93\x91T\x86\
+2m2e\xe2\xff\xebr\x08\xb1_9p7XN\
+\x167l\xa2\x1e\xd8Q\x9f\x87\xe3\xf3\x17\xb3\x87\x97\xef\
+\xef\xb4\x1c\x11\xe2J\x1d\xd7O\x80\xde\xcb\xfb\xf1\xf9\x04\
+P\x8c\x87\xb8\x16\x06\x1c\xfe\xad\xb5\xb1\xe8\xf3pp\x8d\
+\x08\xc0\xc1\xeb\x03\x81\x95\x9d>=\xbd\xc4l\x5c}O\
+\xf6Z\x1d\x19 \x15\x0a\xae\x93\x8d\x9f\xbf\x93\xfa\x80\x03\
+\x1d\x1cf\xfe\x0f\xb2A\x1c\x9e\xdb/\x87\x86\x0f[\x0b\
+Z\x0d\x14\x96\xe7\x80\xfa\x04\xad*T\xb6\xd8X\x04\xfd\
+\xf2\x01\xc4\xfd\x90!\xe4\xb9\xac\xdd\x91\xa91\xfe\xbc2\
+nd\xb2\xa9\xf4j\xa3w\xe2\x85\xe7N\xa6\x9d\xf9G\
+%\xff+\xaa\xd4\x830!1\x07\x14\x89\xbfg\x9c\xa9\
+\xe0s\xb0\xb1NpT\x7f\xa5\xfb\xa5\x82t\x98zr\
+AR\x90A\xa5b\xa3\xca]\x0a\xd3\xca\x81\xf7QA\
+By\x1e\xac\x87u\x9c\xb0)\xcf\x93\xeb!\x80\x221\
+\xa0\xbfsk\x0b\x0e1\xf3\x94\xff'\xe0\xc5\xf1 \xc0\
+`\x1d\xf0<\xd9\xc76ubi\xb9\xfc\xe2\xa6\x1d2\
+\x80D\x0f\xefG\xc0\xd4C\xf0{\xd2I\x0e&\xb8J\
+\xea\xbc\xa3w\xb1\xdc/\xc8\x17\xd6)\xbf\xe791\xff\
+Idq\xfd|.\xdc\x08\x1c\x80 ,\xee\xa8\xeb\xdf\
+K\x10J\x1c\x03t\xd7\xef+\xd9WH\xfa:\xae\x19\
+\x93\xc6\xf1E\xa0G\xab\x15\xe3\xc180^\x8c\x0f\xaf\
+<G\xf61\x02\xb2+$+\xa9\xdf\xbbR,\xd2B\
+'\x18ha \xe1A\x22\x84\xf9N@\xca\xc1\x8f\x5c\
+%\xf3\x92\xf5\xd5\xaf;\x1c\x10\xd6\x11\x7f\x0f)\x18=\
+\x80\xb4\xb0\xc0B\x0ey l\xec\xcc?=\x8fPW\
+\xcf\xfa\xea\x92\x993$\xf7\x03a\x8d\x83(\xf6a\x02\
+>\xf7^CN\xc4:\xc0\xa1\x87\x0bA\x95n\xcb-\
+\xf1\xbcH\x08\xd0\xc3N\xc5\x87u-\x07\xcc-*T\
+8 Yd\x9e\xe1(AbxeXu\x84M\xf2\
+\x07\x92A\xea\x0c\xae\x94\xf7j' \x9c\xe0\x0e\x80\xa5\
+\x9f\xfd\x02r<\xc8\x16I\xec\xb0\xbe9\xb7\x08\xd0\xd9\
+7\x98\x87\xcc?\xfe\x9ey\xc2~\xc3:c_'1\
+\xc4~\x8d\xdc\xa4\x1cB\xab\x17\x89\xe5\xdb\xf2L8\xa6\
+\xf2k\xe8\xdd\xf6\xba\xa2\x12\xdb\xab\xb6P8`<\xd8\
+'\x98\xc7 \x80\x088PY\x01\x22\x8e\xfe\xb8\x1cn\
+\xb3\x84\xd3zG\x0b\x04\xfe\x91\x12!F\x04\xc0\xa5@\
+\x80\x8a\x0a\xc7\xdeJ8AvJ\xe2\x10\xc85\xe7\x18\
+-\x03$\xb0\xdf/\x99B\x05\xec\xf3aa\x8dz\x82\
+\x12\x86\x86\xdc*Q\x0aY\xa3\x11=\xb4\xae@\xf2\x88\
+?\xc0\xbe\xd7s\xfb\xf4\xaaH\xf8=\x90(_] \
+\xe3\x9e\xaf\xea\xdd\x1e\xae\x0d\x96\xac\x9a\xc0\x0bu\xf8\xac\
+\x93\x9e\xc2\xdb\x8cT\x884\xcb\xfb\xb4^\x03\xb9\xf6\x82\
+Rh\xa2\xa5'\xefj\x9b\xd4\x0a:\xef3\xben|\
+\xfd\xf8\xba\xaa\xee\x92\xb9X\xd2\xbc\x1b?\x9e,\xcd\xa3\
+\xf1ya\xb5\xa5\x83\xc0\xd2\xe4b\xec;\xccc*\xb5\
+\x0a\x14,;\x0a\xc2\x92\x1eq\xb1\xe5\x83\xfc\xc8\xde\xc0\
+\xa8\x02\xe1!U\xad\xc02h\xb4\x8aD\xef\xf9\xef*\
+[\xfd\xbc}\x98\x02\x9d@\x1e}!\xd9\xe7\x9b\x1ee\
+%@\xf2U]\xd3\xc8\xf8\x12\xc8\xa2\xf2\xc2\xfc\x5cd\
+v\x8e8\xff\xbf\x9f\xcf\x7fZ\x9c\x02\xe1wcV\x01\
+\xc8\x5c\x1d\xb4\xde8@\xbe%\xacQ[\xd8\xaf\xb4H\
+XN\x0f\x8e\x0d\xceE\xd6/\x09[\x026\x90I\xf8\
+\x1f\xe2\x06\x01\xc9B\xa5\x1a$\xda\xf4\xbd\xc53\x17\xcf\
+\x0c\xf2\xc2B\x92\xb7\xf4\xac\xa5\xe3\x97\x82\xdc|\xedq\
+\x9dq\xed\xdck\x7fc\xf4\xdaO\xe7\x95^\xfe,\xbe\
+\xf8\x88|_\xaf\x8a\xfb\xa2\x05\xd22t\x92\xa94R\
+O\xfb@DQ\x11G-^\xa2V\x937\x84\xd5\xc0\
+\x9as&=\x9d\xcc\x956\x1c\xaaD\xfb\x8b\x94`\xa5\
+\xe5\x04\x04\x15\x1c>\xec\xdbB0\xb9\xa2\x0f\x12\x90D\
+\x92\x12\xe6\xd36a\x95l\xdc\xe72\xe3\xca>\x0e\x87\
+\x0f\xe7\x10\x88R\xfe^\xd7C\xeb\x8f\x11i\x8a\xa7H\
+\x80\xa5O)\xad\xb0\xf7--\x87\xf3\x8b\xc2\x9a\x84\xca\
+1aMBD\x09dC\xffI\xf4R@\x10\xa9\xa8\
+[\xf1H\xd4\xe8\xf7\xe3Qa\xe9\xef~\x1e\x96\xae\xef\
+\xec\xb0&\xb0\x86K\x062D\x9dCV?\x11B\xdb\
+\x09g\xe2G!\x92\x9cP\x22\xf1\x8c\x1f\xa1\x04\x0c\xfb\
+\xf2\xbcwX=?\xbd_k>\xd0\x8a\x82\xbf\xb6\xf4\
+\xa7\xb0\x9a\x98Z\xec\x1dV\xb9]V\xce\x1f\x9a?8\
+\x7f\xb0!\x97\xd1\x06\x99n\xef\xac\xe9\xac\xe6\xc0\xa7\x82\
+\xa9\x9eI\xd8\x09\xc7W\x8e'\x8f'7\x10\xfe\xdbJ\
+\x0f\x1a\xc8<\x99\xbb\xafL_\x9d\xbeZu\x80\x87\xdd\
+K\xc0\xe3\x84\x01\xbd\xf7\xe81R\xf1 \x80\xd6\x04\xa4\
+\xc7\xce\x19y\xe48 \x1b\x02\xdaG\x05\x9e\x83\x1d\xc7\
+@=\xe1>89\xa0\xe8myKX\x03\x19$@\
+\xe0 \xe4`\xa5\x17N\x1bJ\x86\x01\xc7<\xbeR\x07\
+\x08\x99z2aT\x1c\x99\xe8\xda\xa0\xdd\x8bJ\x22\x80\
+/\x02\x8b\xf5\xcc\xea]\xde\x07\xc4\x04\xd0?\xde\x17\x07\
+\xa1\xd7y_\xaf\xd3u\xefI\xde\x08\xfcz\xf9\xb3\xbe\
+\x82\xc5\xe7\xf0>\xbd\x9e8\x8e\xc7_\xacRP\x12 \
+kwd\x88@X\x91\x87\xdbX\x01\xe9\xf6\xcb\xd9\xcd\
+\xfd\xf7\x1c\xd8U\x05\xa1\xdc?*\x00$\x02z\xd9:\
+\xbeg<p\xa4\xb9\xfeJ\xe2V*\xf5=)\xa0*\
+\xb6\x03\xff\xcfu\xe1\x00\x12\x881nlt\xf4^+\
+ 3D|\x97\xae\x87z39r\xb3\x9e\xf7\x8df\
+\xf3/\x99<*\x1c\x0a\x1c\x0c\xfd'#\xcb+\xf3\x81\
+\x80\x88\xe7\xd6W\x84\x19\x179f\xae\xf4\xd0\xda\xa3\x84\
+\x94\x0f>\x02\x182\x94\xcf\x08k>\x97\x0a\xbe\x0en\
+2\xc9i\xce\x17d\x06\xe3\x81#\xd2\xb5&\xd0\xb2c\
+$\x01\xf2%\xef\xd2\x01A/\x9f2\xc6vH\x08\x5c\
+\x808\xf3\x5cup\xbbRO\xa0\x0e\x14\x9dq\xa7\xf2\
+J\xa5\xe3=+\xceYqN\xf3\xfe\x04\xd2$\xd4\xee\
+\x1a\xd6\x1cT$N\x98\x0f\xec3}\x02\x09\x04\x0a\xf3\
+\x9c\x8c:\x81\x01\x8e<\xeb\xb3\x7f~\x92\x05\xf4\xef\xb9\
+\x1ed\xb7\xf8\x1c\x12\x1e\xbd\x9a\x81\x900\xec\xd3\xae0\
+q\x803\xdfY\xbf\xec\x17\xec#\xe8\xd1\xabw\xd8P\
+\xc4\x0d;D\x0c\x09\xa4\x87)`\xe5z\x1e*\xc4\x06\
+\xcf\x05n\x00\xee\x9f\x00\x0a\xc8-\x09VA\xcd\xed\x08\
+\xb2\xcf\x90H#\xe1\x01\xc2\x06\xb2\xb9N\xf7\xde\xbd\xd7\
+\xe8\xf7\xd2Z@\x82\x199 9\xbe\xc3\x93\xc3\x1a\xc8\
+\x1d\x89V\x02q\x02(t\xbeI\x1c\x90(`~\xb0\
+\xce\xb8n\xf6\x19\xf6/\x02\xc2\xef\x86\xd5\x16\xb8y\xcd\
+\xb0\x86m\x98\x04\x19\x08\x12\xb1%;\xc1\xad\xdf\x83H\
+\xe0\xdcr\xc5\x9e\xff\x87K\x84\x00\x94\x9e}Z\xdex\
+\xce\x92U#\xe02K\xbd\xc8\xe0\xbc\x0f\x89\xb3\xc0\x8e\
+\x0a\xe7!\x81\x96\xa0\xc9Fx\x90x\xef\xe5\x08\xe9\x0d\
+?,\xac!g\xfcqX\x93\x90\xa0B\x8b\x83E\x82\
+\x99\xef\xf5\xbc\xa6\xdf\x84e\x07{\xedp\xb0\x0d\xe9^\
+\xb3\x93\x9be|\x80t\xb3~70gGy\xe5\xfc\
+\x00i\x86\xc3\xc8<\xe8[\xf8DZJ/)\xb2s\
+F\x90|\xb0\xf8Y\xc3Ea\xd5\xff0y)Pl\
+*V\xecs\xac\xcf\x1eYB\xe2\x98\xfd\x05u\x0a\xd6\
+9\xeb\x8a\xd61A\x86\xed\x88\xab\xe7t\xde`^\x7f\
+\xde \xcbv}=\xcbv\xb1/w=\xc4\x90-\x8f\
+o\x09\xab\x88J\xee\x07.\x86\x08\x13\xb3\xac4\xaa\x01\
+\x8c\xafH\x02\xad6%ROH\xd6\x5c\x99\xd4>\x06\
+\xd9V\xda\xcb\xf2yK\xa1\x88^\xe19\x7f5\xa4e\
+\x14\x8c\xd4\xdbm\xa4\x02\xfb2\x09PZB\xe8U\x87\
+\xc3\x06\xee\x0b\x12Z\xf4\xce\x82\xb0|FI\xbc!C\
+=\xfc~\xb8!\xcbJ\xc2\x96\x0fWM\xf2\xfe2i\
+XT\x84Oi\xc8\x02\x95\x80\xc8\x1c\x1e\x9f\xce2\xc6\
+\xeb\x04\x84\x1e\xbfr|wXC\x82\x1dH\xc1]3\
+\xb2\xe9\xc3\x81l\xe2\xfa\x96>\x17\x96\xfe\xee\xf9a\xe9\
+\xf9<9\xacV.\x9d\x08\xe9\xb9\x80\x98\xbf\xc8\x5c\xde\
+PHW\xf1_\xe0\x0e\xb0\xce{\xb4\x06\xa7\xf57\x1f\
+\x15\xa6yv\x07!a\x7f\xd8\xec\x13\xb1\x0b\xdc\xdc\xb4\
+\xac\x02\xf5.\xa5\x89\xca\xad\x10\xb3)\x05\x8a\xe3E\xc9\
+>#2\xbctnL\xdb\x86\xd5\x0a:HA\x93\xd3\
+\xe9sr \xff\xb7\xbc\xde\x0b2\xe0\x9c`-K\xaf\
++\xc3j\xe2>\x98 \x82\x0b\xc2\xef\xb3\x8d8\x19v\
+/\x88a\xff=\x01\xacT\x13|n\xb2/\x5c\xae\xc4\
+\xa1\x02\x5c\xef\xbb\xb4<)\x91\x19\xdafY\xddL\xff\
+7\x1d\x18\x96IVs+\xd1\xf4\xbb\xe9\xfa\xe9wY\
+\x8d\xe4)\xa1F\xb2\xf4\x9d\xa5o/}\xa7i\xc1\xb9\
+!,\xfd\xdd9\xd3{\xa6s\xaa\x1a\x87I\xf66\x0e\
+\xab\xc8j\xab\x91\x89\x83\x0d\x0e\xa3q\xb3\xb0\xfa\xf9\xd3\
+\xcb\x0aT\xdej@g\xcb\xcf\x01\xb1\xc7\xf9\xa5ua\
+.\x1b\xce)Z<\xd9\xbfP\xa7\xc1\xff\x83tQ\x08\
+\x03'|\xc4\x81\xe1\xf8\xaa\x22\x12\xcb>\xc0>\x05I\
+\x1d\x09J\xf9\xdd\xc8\x5cBj;\xbd9\xac\xcaB\x1a\
+)\xfc\xdfBZ\xe1\x87\xc2\x0d\x83:\x0d\xf2\x86\x92+\
+uO>~1\xf7)\x7f\xd0\x091\xce\x0d\xe6\x81\x12\
+\x0f\x90\x13:\xc1xtX\x93\x88B\x9d\x02$\x0d\x09\
+\xfb\xdd\xc2j|\x87\x1c \x88P\xd4*\x1cO\xa0\xb6\
+\xc0~M\x02\xac\xe7|\xa1\x85\x16N\x0c\x12YpM\
+p\xce#\x17x^Xm)\x9c_\x16\x16\x09\x00\xb1\
+ :\xa3J\xe6\x9e\x00\x5co0\x1e\x1a\x96^\xd7\x1b\
+\xd7\x1f\xd7o28\xc8\x8a\x88\xbdt\x9e\xca\xc6l\xa8\
+\x1c\x13K\x13\xc6\x90EM\x18C\xf6q$TaG\
+\xff\x97@{xyaE\x9dO,\x17\x9e\x06\xbbd\
+z\x1e<\x1f2\x1f\xd2T\x16\x09T\x99X\x9bvP\
+mz\xc3\xa8t\x1f\x91\xadB\xf2\xa8@\xfcP\x07\xd4\
+\xd3\xe4\xd8H\xee\x89^4\xf7\xb2\xdeY\x07\xcb\xd5\xca\
+\xb0v\x07\xf4*\xd0x\x12\x00\x1d\xe9\x9d\xc9\xdd\xc8\x90\
+\xf2\xff|\xe1\xc0\xe0\x98\xf0>T:j\x00_\x1c\xe3\
+M;h\xfbz]\xe0\x8e\x03\xcd+\xff\xc7\x81\xc9\xf5\
+\xf1\xf7=\xb4\xbc\x87\x1e\xe3\xa0\xac\xae\x0d\x86\x84\x05\x09\
+\x04*\xf3\xf4\x9e\xf2|\xee\xd4A\x9a\x81\xd6\xf7\x8e\x18\
+\x01\x0b\x81&\x90\xef\xa1#Q\xe4~\xf8\x7f\x1cp\xc6\
+\x87\x00\x87\xf7\xe3\xfdq\xb4\x08x\xb9\x9f\x9d;28\
+*\x05[,\x0f\xf4}\xff\xbd<\x1b\x81(\x89\x03\xee\
+\x9b\xca\x03\xe3\xcc\xf3\x06as\x83\x0epU\xfaQ\xb1\
+p\xc2\x0brL6Z\xde\x87\xe7A\xc0\xbd\x9a\xbe'\
+\xc1\xa0\x9exC\x00A\x12\xd0sHB\xa5'\xb1\xd4\
+s\x9c\xaf/\x1bqP\x84\xe6\x84\x192B\xcc\x875\
+:\x19<\xe6\xcb\xffi\xe3\xe2\xbe\xd8g\xbe\xac\x8a\xd7\
+\xbbU\xa1|In\x22\xa8=\xaf@\x8fq\x88\xab\xdc\
+aI$\xed)\xfdl\x02T\x05\x22\xdeO`aW\
+\x0f\xae7\xdcst \xd2\x12\xc4\x01\xd5\x93@\xe28\
+\xe2 \x90P \x80\xfd\x9b\x9e\x9b\x12R\x96\x0f\xac-\
+\x04\xe5y\xf3\xff$\x22\x80\xb6\xf7\xf2\x9a\xac\x97\xbft\
+\x1b>\x01\x07\xd7G\xc0\xcf\xfb\xf3~ F\x98o\x5c\
+?\xcf\x91\xc4\x01\xf3\x8f\x04\x03\x95A\x91N6\xe4\x84\
+$\xaeJ\x02\x83u\xca\xfb\x91\x88\xa5e\x81\xde\x5c\x1c\
+m\x02\x7f*+\x5c\x0f\xe4\x7f\x04\x0e\xaa\xac\xd1\xbb\xec\
+\xc0\x90\xe7\xc2x\x12h3\xdf\x81\xbe\x09\x11e\xd9X\
+\xee\x87\x00[=\xf0\xab$BIt\x91P\xc5\xc1\xc1\
+a\xa6\xe2\xaf\xd6\x15#\x09T\xa9\xa3\xa7\xd2${T\
+\x82\xa9`s\xb0\x13\xb0J\x8f\x98\xc0\xcd\x95zTj\
+\x90MR%\xcf\x95}\xf6\x9f\x1ei\xc5zg\xdd\xea\
+\x95\xca!l\xda&\xc5\x15d\xdf\xd0\xdd\x0f\x865\xb2\
+pBH\x0ck\x85\xd5\x84`\x864\xef_Y\xad\x9d\
+\xb8\xa3\x95\x00\xd5\x19\xf61\xd6\x09j\x15\x82\x80\xdaQ\
+\xa3b\xaf\x8a\x93\x03I\x90\x87\xea1\xe7\xf3\x9c\xb0\x04\
+IB\xeb\x04\xd0\xda^N\x97\x9ej\x15\x1c\xbc\xff\xa3\
+&\xc2u\xc1\xf1\xf0\xe1\xb0\x0aE6y\xde;\xc2\xaa\
+\xac\x99[\x18\x94@\x04\x81A\xe0nr(8-\xe4\
+\xe8\x12\xe8\xb9\xb2\xc78 \xc3\x07\xf7\xc4?\xe3\x8c\xe0\
+\x5c\xa6r\x09i\x15\xbf\xefZ\xee\x90\x01\xb4#\xca\xfc\
+\xa2BG\xc5?\xd8\xe4?U{\x81\xa7\x8f\x86U\xbd\
+\xfb\x9e\xabd\xfanX\xfa\xfdk\xc2\x1a\xae$X\xc0\
+U\x91s\xef\xf1O\x87\xab\x86\xab2;xnuH\
+\xf7\x5cZr\x1e\xa8\xfdasU\xe6I\x90+q1\
+\xee\x1e&\xf6\xfd\xcfV\xd2VH]\xe7\x1d\xc2j@\
+7}.\xac\xe1Z\x00\xb1\xc0<\xc4\x11\x06\xf2\xbb\xa6\
+\x0aU\xf4,\x93\xa0@\x9eZ\x15AZ\xf6\x92\xff\x99\
+L\x1c\x09?k\xe6\xc5S\xc3\xaa\xce\xbdI+c=\
+l\xdb\xa8o(\xc1\x98\x0bX\x87V\xc4\xc7\xf8_a\
+\xe9\xf5Ia\xe9\xf5\x83a\xb9\xf5\xe2\xaf\xb9\xf5B\xf3\
+m\xbc4,M\xdb3\xc32\x826Y\x0e\x1c\xcf\xc9\
+\x81#\xc8&\x9d#n\xfdy[n\xea-\x81\xf8\x1a\
+\xcd\xba\xea\x0a\x03\x99\xa5\x7f=\xed\xd3\x0f\xca\x90\xf4\xbb\
+\xe5@\x1a\x96~\xf6e]\x0f=\xd2&1\x04!\x84\
+\xdf\x8f:I\xcc\xd3\x90[<\xb6 \x88M\xc2\xa6\xca\
+\xf9\xe2\xaa\xb0\xf4\xfbg\x845\xea%p!\x10\x88m\
+\x9b1\xbe\xe5\x1c\xd8\xa8\x81L\x8b\x13\xc2\xec\xfa\xbc\xfe\
+U$\xe2buw \xads\xcd\xbd\xdc:'\xe9%\
+\xf7y\xcc>\xc6\xdfS\xa8\xa3\xa2K\x8b\xb2\x12\x95~\
+\x0eb\xe1g\xff\x89F\x80h\x05\x18\xb7\x0c\xcb\x89\xde\
+5\x22\xd1;\xde#,\xbd~1,\xfd\xdfI\x85\x04\
+\x17\x84\xd2t\xe3\xf4\xc7)\xf6\xdd\x87\x85\xd5V\x8f\xf9\
+0\x91\xdc\xbe~\xc5kW\xbc\xb6\x22\xdd\x86SJ\xcb\
+\x98\xb9K\xe0.\xa2\xc0#RL\xfb\x81\x14\x14H\x10\
+\xd2*\x02).r\x8ap-A\xb2\x08\xa4_\xc8\x02\
+\x07\xfc:?\x1c\x88R\x00\xa5@\x85_\xae\x16\xa8\xd0\
+\x96\xcb\xc8\x19\xd4%8\xdfH\xe4)@\x9do\x0e\xab\
+r\x8b>G5\xdf\xacB@\x01G\x88\x22d\x02\xcd\
+\x09\xa0\xc4\x10~\x9f\x11\xab \x8dD\xe2\xe9\x82\x16\x88\
+\x19\x02{\x10{\xf8\xc9\xfc^\xe7\xb9\xf7?\x91\x1b\x92\
+\x18\xc8d\x96\xe9z\xa7/\x845\xea $\xd2\x19W\
+\xb8=H\xb8\x93\xc0\xe7\xdc\xc2_\xe1\x95\x04\x9f\x12o\
+$\xdc\xe1\xb00\xb9\xf0}\xc3j\x0b\xa3\xe7\xbbd/\
+W\x22[ar\x18\x91\xccY?Wr{\xe8\x88N\
+\xbf\x0d\xab\xac\xd3\xc3\xa5\x85\xa5\xd4\xd0\xa6s\x8b\xbe.\
+\x15\x05d\x0f\xcc*\xca\xc1K\x0f?\xbd\x9d,\xb8\xd7\
+\x8b\xad\x17\x1d\xdc\x8f\x09*&VMC<\x09\x04\x04\
+qE\xef\xd1\x0e.\x8e*\xfa\xd1\x15\xda\x5c\x02\x92\xfa\
+{U\x08D2uw\x914\xdcO\x99t\x1c9\x02\
+\x19*h\xb0\xd1\x9e\xa1\x04\x86\x0e\x10\x07\xbedDI\
+L\x90\x08\xc0\xa1\xed\xf5\xe7q\xe8{v\xff\x1e\x11 \
+\x07\x8f\x851\xec\x18\xd68\xb0\x04\xc6wR\xa0J\xc6\
+\x0c\x84A\xad\xec/\x87\x00\xf3=\x0ef\xcfF^\xe5\
+\xbc\xcau\x11\x88p\xbd\xbd\x1c \x13\x97\x16\x8a\xc8x\
+\xaf\xf3\x0f \x8c8\x18\x5c/\x01v\x0f\xc5\x07\x82O\
+\xcf2\xf7\xf1\x0b\x05\x86\xf4r\xf7$a\x8c+\xd7C\
+\x00\xc2F\xdf\x8d\xab\xff\x8f\xe7\xc3\xff\x13`\xf5\x81\x1b\
+=\xcd@!\xf9\xbf\xca\x0a_\x10\x05\xdc7\xf7Gb\
+\x80\xfbg<\xa98\xf5\xec\xce|.\x5c\x00\xf7\x16\xe9\
+\xda\xef\xba\x04\x00\xf7\xa3\x0d8\x85\xf9eC\xfe_\xad\
+\x17\xc8K\x80F\xe18r\x1d8\xd8$\xc4hM8\
+J\xec\xd8\xcc\x0f6@2\x91|>\x81,\xf3\x8a\xe7\
+\xc4\xfd\xb0\x1e\x08\xac\xd8P\xa9\xac\x22\xaf\x83\xfc\x16?\
+\xe7\x8bD\x12\xad!\x87\x8b#\x00hqGn\x88\xfc\
+\x95\xc9\xeb \x03\xc5\x91>7,\xbd~Il\xe4G\
+\xab\x12\x0c\x04^d\xa2\x9e\xd7\xaa\x88\x0f@sY\xcf\
+\xac\x03\x02b\xae\x83\xe7\xcf\x01G\xc0N\xe5u\xf3\xb0\
+\xe6\xef\x98o}\xef8\x89\x90\xfe\xb9\x11\xc8\xd7\x84@\
+y_\xc82{\x8e\x07>\x87\xf9\xa4\x9f\x0f\x1b\xab\x05\
+\x88\x04\x05\x09\x00\x02\xda\xbdU\xd9\xe7\xbaIpm\xbe\
+\x1c\x81\xd1\xb3\xa1\x1bR\xc8>\xd2\xcb)\x02\xd9\xe3\x80\
+\x05\x99\xc1\xf8\xf7H\x9e~\xdd2>\x04\xa28@\xe2\
+l\xa1W\xd0dLp\xa2\xb0\xde\xd8\xa7\xa9$\xf0\xfe\
+\xacO\xa0\xfb\xd7[m\xa1\xfc\xbd\xa0\xf6\x96/#\x11\
+\x80\x1e|\xa7\x0a@\x8f\xa39-D\xc2d\x88>\x89\
+\x00\xc9\xe2\xfa\xbe\xf9\x5c\xe6\x19\x90^z\xa5\xd9\xf7I\
+\x04\xd0J@\x0f1\x15t*\x9bj\x1d02\x87D\
+\x9b\xe4\xd8,\xebI+\x0c\x1c;$\x86\x80\xea\x02Y\
+d\xfc\xe1\xd8!1A\xa5\x9c@\x9cy\xce|`\xfe\
+\x8a\xdbcxPXE&X_\x9a\xeb\x84\xf3\x00\x08\
+%r\x92G\x85\xd5q3D\x99\xca.\xd0o \xac\
+\x8c\x1f\xfe\x06\xbd\xf0\x1a\xbf\xe4>\x1d\x1d\x0e\x94+\xd2\
+\xbd<)\x15#\x90\x82T\x92\xe9\xa5\x16w\x89\xa1\xe2\
+ \x86X\xf7\x8c\x0f\xcf\x95s\x96V\xa9\x9e{\x83q\
+\xe2<Tb\xd7\xf3\x8c}\x97q\x22q\xc0>\xcc|\
+g\xdd\xa2z\xc2\xf5J\xf7{\xda-,m;\x0f\x0c\
+K\xdf_\x15\x96\xbe?>\xac\xb9\x0e\xeds\x86\xfe>\
+5,\xfd\xddqaY\xfe-W\xec\xf07\xc6]\xc2\
+r%\xab8\xb8j\x85\x83\xe5\xdbrw\xaa\xb8\xd2\xdb\
+\x0a\xa2b|BX\x03\xe1\xbeg\xd1ag>\x84\xa8\
+\x5c\xc8\xca\xa5\xa0$\x07\xb6\xaed3/\xbb\x16\x8e\xe1\
+\xba\xb0\xa60E\xc2\x9e\xf1|\xb4\x0aBR\x9b\xf2\xf3\
+\xc7ox\xb3\x02 !\x8b\xa6\xad\xc2\xea\xfcA\x06\x8f\
+\x84\x18\x1c\x0f\x19\x7f\xf4\xa3\x9a\xd0\x83|\x91\xfbs@\
+(Y\xb4\xff\xcf\xd9}@\xebvV\xe5\xe2b\xb0\xab\
+p\x00\x00 \x00IDAT?\xdfw\x0e-\x09%\
+\x90\x0e\x04\x08!@ J\xa4#\xd2U\xe0J\x95+\
+*\x17\x81K\xb9\xb4 \x5c\x04\x85\xa0\x22\xc5\xcb\xa5I\
+\x09$\xd2\x8b Mz\xbf M\x8aH\xe8E\xca\x15\
+\x03\xa1*\x04I(\x92\xb3\xd7\xba\xef\x5ck\xfe\xe6Z\
+\xfb=0\xfec\xfc\xf7\x1cg|c\xef\xb3\xf7\xf7\xad\
+\xf5\xae\xb7\xcc\xf2\xcc\xe7\xd9\xfe lITl\x7f'\
+\xac\xbd\x1e\x13\xb6R\xdbJ\x95\xad*\xd8e\x0f\xfd\x14\
+\xe0\xfe\xd1J\xbe\x114X\x81)\xf7\x87\x89\xd4\xfb\x91\
+\xe9\xbf\xbe3\xcf\x8b_\xca\xc2\xdb=Wr\x81\xd9\xb3\
+]\x85B\xad\x03\x99P\x12@\x17\xb9\xb6\xcad\xe8\xce\
+\x9f\x95\x09\x89\x93\x17$\xe1\xf0\xdf\xc3\xda\xebC\xc2V\
+\x15d\x81\x9a\x84$}\xf3\xf0\x16\x90\x11\x1f\xbcp5\
+ \xed\x14h\x95\x8a\x8cud\xff\xce\xf9_\xadD*\
+\xad\x10\x06\x898(\xa4\x9e\xbf\xf3>\x02N\xad9\xb8\
+< Ep\x1d%\xc4}xuX[.\xbf\x1b\xd6\
+\x9e\xdb\xd9\xdbol\xdb8m\x1e\x16\xb6\xcc\xfb\xcd\x9b\
+\xc2\xda\xff\xbf!lE~\x9c\x89\xca\x22\xf3\xe4\x97\xbe\
+-!\xf2H=\x1f\x9c-\x5c\xfc6\xe4p\x19H\xd6\
+\xfaHH\x7f%rB\xe5-\x02\xe0\x87M\xb6\xf8\x1b\
+\x10r\xde\x0f7\x87\xf5\xcf\xafq=)cW\xaa(\
+H\x0a3\xa1Pq\x8f\x84|\xdeo\xc5\x0b\xdeW\xa0\
+\xdd'\xf0S\x9e\xd7\xbc\x93\x18/\xe4\xc6)\xa9\x0a%\
+\xe1 \xa1\xac\xf5;\x03\xec\xed\x83\xc3\x968\xb6\x12\x18\
+\xc8_\xb5\xb2\xde4l\xb9o\xf2\xa3%7\xaf\xd0\x01\
+1\xcf\x9f\xc5\x1d\x92\x08\x02\x9c)\xc5\x89\xa1\x95\x03\xa7\
+\x85DJ\x22(\x04\xfc\xc3W\xc3V-A\xff6#\
+\x8e\xaa\xe53\xb9\x81*\xc1\x9c~L\x15\xe2\xf2yn\
+>\x1a\xb6\x923\xbcX\xd8\x0ay\x98q\xe3\xbe\x22\x7f\
+\xf9l\xd82q\xb6\xcf\xde\x9e\xbe=}\xa9D\x15{\
+\xa4\xc0;\xa1\xfd\xe3\x1b\xe7\xcc\xc9\xe6U\xb3\xdc\xcf\xf6\
+\xcc\xb0\x85\x9cg\xf3\x83\xb0\x15\x99\x89\x07F\x87\xd1\xc2\
+s\xe1\x99\xc9\xda\xf3\x8d$\x07\xf9A:8}`\xca\
+\xc1O\xd6\xe4\xcd\xf4\xb5Z\x98\x0e\xc2\x7f\x9b\xaf\xb7\x85\
+As\xc5\xb3\xff*\xb2\x9f\xf1\xfc\xf1\xfc\xe9}g\xa8\
+\xe8{&[\x06\x98\x1e3\xc7:\x91\x03\xd5\x83\x91\xfa\
+\xa8\xb5\x80\x90\x06r\xd4\x04@\x0el\x01\x81\x83\xbb\xaf\
+\xf0\xf7r\x7f*\xba\x16\x94\x0c\x90\x03\xca\xf7\x9e\x0f\xc7\
+\xf0\xc8\x84\xd4\xb9\x7f\xbd}\x99!\xab\x80\xb9\x97\xc1\x02\
+\x91\xb9d\xa9\x07\xec\xd6)_z\xef\xe7\xc0\xd9\xfb$\
+\xb9XA\x8f92\x02\x0e\x8e\xb1\xe7(\xa0\xeft\x89\
+k\xa3\x11\x88\x0a8.\xda\x91\xf3\x19?\x01\xa9\xeb\x17\
+\xf8\x08\xdcl\xe4\x1c{\xad\x08H\x02\x91\xa2]*\x03\
+\xa4^\x07\xbe\xef\x91\xce\xfb)\x08\xa6\xdf\xe7px~\
+\x1c1\xd7\xd1\xc9\x0bV\xe2\xa0'a\xb4\xa1\x81\xcc;\
+\xb8\xdco\xaf\x1a\xe1\xef=\x17*\x047\xc9\x8aLB\
+)\xeb\xf7A\x97;(y\x05J\x9e\x97\x9e\xde\x13'\
+\xb6\x8cXWs \xa2\xd5\xc6\xfcv\x9f\xc6\xc9<1\
+\x8fl\xf8\xdf\xc8\x83\xf5\xf3\xb9!\xea\xfdG\x8ev\xfe\
+D_W\x09\xa3B:\x18_\xd7\xa5\x15$\xd9i\x8b\
+\x5c\xc9|3\x9f\xcc\x03\xcf\xc5\xb8\xeaa\xccJs\xb1\
+\xefJ8`O\x7f\xdf\xf8\xfe\x80\xc6V\x05H\x00{\
+\xe3\x5c\xbf>\xcfs\xed\x13N\xfe_`\x992\x90m\
+\xfb\x9d*EE\xce\xd6'\xbcz\x15\x0d\xbd\xec\x09\xdd\
+\x94\xb9\xafJl\x07!;\x80D\xf2r\xd5\xbb\xbf\x8b\
+\xa4\xb0\xf63*\x0e\x02s=\xba*\xffz\x7f\x7fm\
+s\xc3\xcd\x0dW\xa4~\xae\xb3O\x1c\xd8\xdf$\x10\xac\
+\xbf>\x80Ohc\xad[\xbf\xd7\xb1\xaa\x1f\x90\x18\xb4\
+O\xda\xe7\x05h\xd6\x07\x84A&\x8c%\x02\x8a\x05\x5c\
+\x8f\xa3\x1e\xdf$\x0f*(0v\xf8\x84\x10V\x0b\x98\
+\xfd[ 'S\xafb\x92-+\xd5:\x80\xdc\x96\xca\
+\x80\x046\xe4Y\xb2\x90\xd7\x81\x0d\x91#q\xc6\x01\xc3\
+Z\x0c\x09\x03\xa9 !\x06!d>AJX\xbf\x09\
+\xe9.\xc4\x9d\x0a\xa9\x04\xa3\xcf\xbb\xe7L\xde&\x00\xe7\
+\xe0Wb\x02\x19\x9f\xf5j~%D\xb6*\xb0\xf9\xf9\
+8\x05\xa8\xd1l\xfe#lE^\x84\x9c\xcd\xf5x\xc5\
+2\x8f\x0c\x0fd59w\xb0\x1eo\xbe\x18\xb6\xe8f\
+o\xce\x0b[H\xfe\x8a\x0c\x98\xde\xb2\xe7\xe7\x1cp~\
+\xe9E?f\xc2\xa0\xadU^\xe6V.\x15V\x0e3\
+\xa8(\x07\x16)^B>+a\xe3\x5cV8\x10\xb8\
+\x18',\xf4\x1cKH\x0d\x09\x17\xfb\x81\xc2\x09\x07\xd9\
+:\xb1\xafZ\xef\x02t\x08\x86\x9c\xb7\xd5\xf3\xef\xef\xf4\
+\xf6*\xc0$\xe9\xe2\xf0\xb1\xb0\x15\xc4\xfc\xb6a\x0b\x92\
+g\xfb'a\xcb\xbapN\x17\xc9\xabu\x9f\xe7\xd3p\
+\x85\xb0\xa9\xd5a\xba\xdf\xed\xbb\xb3\xe2\x99\x81\xd0\xa46\
+u\x8d\x09R\xff\xfd\x80\xd4\xefy\xfb\xbc.\xa7^\xe5\
+;\xaeZf\xbe\xb69+zo\x05<S\xc5\xee\xcd\
++\x7f+\x0b\x1f\xe3\xaf\x86-\x89\xa1\xba\xcf\x8bL<\
+\xf6\xb3\xca\xc2\xff\x9e\xfc\x9f\x19\x01\xe0y\xbc1\x03\x13\
+\xbd\xbb\x12\x02\x02\xe0l1\x1d\xef\x92\xd0\xe4\xbb\x0fw\
+\x1b\x82\xdb\xea\x7f\x86\xb5\xd7W\x84\xb5\xbf\xdb\x86\x05\x09\
+s\xb3C\x96sl\xfb\xf0\xb0\xf6z\xe1\xedE\xb6\x11\
+\xd0\xff\x8f\xb0U\xe0\x7fDX{\xcc\x0f\x08[*\x89\
+\x9eC\xb5\xa4\x22\xffr\x9f\x89D(\xa4\x95\xf5\xd3'\
+\x06s\x9f\x1e\xde\x19\xb6\xd2\xa7\x17\x18\x04\x02\xe7\xed\xb9\
+\x1e\xf6N\x09\xf1fK\xc5\xb5Z-\xf8\xc5\xe423\
+~\xa8\x0aj\xb6\xfa\x8cO\x0a[Uf\xbd\x0f\xd5\x84\
+\xef\x86\xadZRb|\xdf\xbc\xb4\x00\x8e7\x1c\x7f-\
+8\xbf6\x9f\xdb|>T&\xf4^G\x1a!\x90\x0d\
+*\x9b\x95\xf0$\xc7\x97:\xea\x850V\xa1\x85\x0c\x94\
+\x98\xc0u\x80\x83\x05\x09a&J\x8bL\xce\xf9vN\
+\xb5h\xeeVGR\xc1\x15\xf8f\xeb\x18y\xc2\xe1\xb1\
+amY\xde9lJt\xdezJt\x22\x9d\xcd\xc4\
+\xd6\xf6ra+\xbf,\xff\x7f{\xabf\x91\x90\xfb\xfa\
+p\xf6p\xf6\xc2u\xb6\xb9\xd6\xbc\xcf\x8c\xc7\xa7\x0a\xda\
+;\xe7^\xf9\xe1\x9c\xe1\x07\x81\x1c\xa8\xb8\x0ai\xe1\xf9\
+\x19\xdf|b\xb7\x9a@%n\xc5\x17\xf6Y\xc8%-\
+K\xe2\xb6\xf4\xa7\x8a\x15\x1f\xe9\x1f\xbfOb\x16\x22\xef\
+\xc6a\x0bbK@]\x95x\x81\xac\x04\xca\xa5\xc3V\
+\xe7\x82s\xc9>\xa8\x80\x85K\x0d\xb7\x8d\x00\x19\xc2<\
++\xe1\x15@g\x22\xac\xe4\xab\x9d\x03\xfcS\x85<\x08\
+\x97$\xe9\xab\xc4=\xff*\xfd\x17\xad\x0a5\x1f\x9c/\
+\x12E\x17\x08\xdb\x85\x80\x9d\xf7\xe9\xfc\xbc\xcdk\xc3V\
+\xad\xe0\x12&Z\xafN\x09[\xfc\xa4\x22\xe9\xa72\x97\
+\x09\xe3\xf1\x0f\xc2V\xeb9\x13\x1c\x9b\x1f\x87-q\x98\
+\xc4g!:2\xa1\xb9o\xfb\xeba\xab\x8d\x92\x0c\x9f\
+7J\x08\xa5\x8d\xa8\xa0\xc0ge\xaf\xd8\xff\x98'\xca\
+\xf6{\xdb\xefo\xa3'\xeaEa\xab\x03Se\xceA\
+Ln\x88l\xd3w\xe7\x8d\x0a\x89F[\x84\x139\x8e\
+\x00\xa1\x1cR\x01\xaa\x83\x95\xe3\xa2\xc2\x9c\xd0\xc1\x82\xf8\
+&[1\xc7\xa0\x1e\xf8\x22\x9f6W\x00\xfe%\x0f\x10\
+\xbd2\xef\xcd\x0d\x8ec'\xa0\xe2h\xba\x8e\x94\xcf\xaa\
+\xcc\xe2?\x87\xb5\xef\xffb\xd6K/\x12\x09\x99h\x8e\
+\x82L\xb2\x8c\x9b\x0a=\x92-\x88\x03\x8e\xb4@\xd8u\
+HXX\xb0&\x96\xfb\xf2y9\xae-\xd8\x9a\x03\xb4\
+\x0b\xe4DO\xb9;\x1b\xfa\xe6R\xd9S\xcb\xa1\xf6>\
+\xff\x91\xef#\x90\xeb\x17\x22\x87\xdcu\xf5\xd0w\x0b\xa6\
+W\x1f\xe8\x13\x00\xde\xcf\xe7\x08\xa4\x04\xe8\xde\xaf\xabX\
+V\xcb\x82\xe7`\xdc\xfa\xdex\x01\xdf\xa1\xc5\xb2>C\
+U]G/\x93\x96=\x89\xf59\x02\x0e\x0e\x96\xfb\xe4\
+\xa0\xc9\x18\xf7\x95}\xbfo\xdep(\x1d\xc8}E\xd4\
+\xef\xf7\xcfY\xafgB\x0b\xf5\x92V@\xec\xfd\xfb\xde\
+\xe3\x1eI\xd2\x93\xbey\x1e\xd6\x81\xf1r}\xaeG/\
+\xd8G\xdb\xf6\xfc\xd1\xe9\xba~:%\x04_\x1f\xb6J\
+d\x1c\x9b,\xf7\xc7\xe5\xfc\xf6\x5c\xfa\x96\x04\x01\xceY\
+Y\xd1\xfevVT\xf5\xd2\x9a\x87\xc6Y\x8f,6T\
+\x8e\xb4\x0a\xda\xc1\xdd}s@\xcd\x17\x01(r\xc9\x9f\
+\xe4\xfdr\x1cA\xa8<\xcf\xbe\xe5\xa5\x93\xa5\x1c?3\
+\xf7\x9ao\xfe(\x1dX\xf3\xe3\xc4\xaeU\xc4\xfc:\x90\
+Ev\x9eW\x10\x04\xfe\xce\xf5\x1d\x9b\x01o\x17\xb0W\
+B\xcd|\xb9tG\xc6\xb9\xc8\xdb\xcd\xeb\xd7>\xd9\xf7\
+\xa2\xcb\xac\x1f\x15\xb6J\x90\x80N\xdb\x9f \x19\x1c\xf8\
+*G\x09\xdd\xad\xca\xa2y\x8fL\x07\xeb\xb9\x0a2\xee\
+\x18\x157\xeb\xc3z\x17\xf8Xo\xf6\x0d\x9f\xafr)\
+Qf?\xbcd\xa9_\xcc\xf3\xcb\xfed|$0\xcc\
+\xeft4\xabW\x9b>1]u\xf7! \xec[\xb7\
+\xacW\xe3(\xd1\xe0\xf7\xec\xbb\xbe\xe70\xfa|\xf35\
+\x13\x07%\x9b\x88\xec\xcau\xdb\xafr\xfd\x1a\xcf\xcd7\
+\xc3\xdauog\x16k\xbd\xb9\x95(\xe1\xc0\x9c\x16\xb6\
+\x0a\xfc\x05\xe8\xae\x17w\x86V;\x88\x18\xba\xedz\x08\
+\xd3a/h|\x22\xdc\xc6\xc7\x86-\x01xq\x05\xe0\
+\x8a0\xff\xcd\x87d\xf7'\x17\xc7\xf1\xc1\x15\xc0a\xc7\
+\x01P\xdcA\xd6\xa7yi\x1dSE\xb0>\x90\x11\x0a\
+\x9c\xc9\xe4f%m|V\xd8\xaa\xa2\x9f\x8e\x1a\x081\
+\xe4C9\xde\xe9\x88n\x86\xb0\xf6\xfa\xbe\xb0\xa5\x05d\
+\xf3\x94\xb0\xd5\xbcH\x7f\xa6d\x02q\x19D\x00x\xd1\
+U\x82\xce\xfc\x16phY\xc2\x99\x012/\x01\xab\xd7\
+\xd8\xf9\x08\xb9\xd0q\xb3\xd4\xf3\x17\xc8&\xe2\xb2\xf6?\
+\xbfo\xdej}\xb2~:9\xdd\x82\xc6\xa7\xbfT\xac\
+\xe8\x99`S\xb1u_\xdbg\x86\xb5\x9f?!\xac}\
+\x7f\xbf\xb0U\x85\xf8\x83a\xed\xe7w\x0e[\x91\x94%\
+\xf9\xf2\xf6\xf9\xdb\x17l\x9f\xbf ?\xb6\xb7\xdd\xdef\
+{\xdbU\x8bG\xb6^\x16\x12%[&*\xd08g\
+\xf3\x83P\xa9\xc2B/\xc1\xd5\xc2\xf7\xa9\xc7\xba\xed\xb1\
+'M\xfb,h\xef\x97\xf6|q\x92\xcb\x94 \xa3N\
+\xf1\xd3\xb9\x97\x7f\x229\xbd|r\x19\xdcf\x15p?\
+i|\xe2\x14\xd0\xe6x\xe3\xe8A\xe6\x87K\xa9\x10)\
+\xe76k\xd7\xb3\xbdWX{\xbdqX{\xfd\xd3\xed\
+\x9fm\xff\xac\xbd\x1e\xbd=j{\xd4R\xe9\xdf\xfb\xe7\
+a\x0b\x22@a\x01\x12\xb7X\xcf/\x11\xd6^/\x14\
+6\xb1\xda7[\x90O\x85\xbc\x05E\xbf\xfa\xa4S3\
+\xaby\xb5\xf3k\xb8oX{=)li%\x19\xef\
+\x1a\xb6\xf2[\xa9p\x5cpj\x22,\xa4H%\x12!\
+\xb5\xf8q\xd8\xd3O\x0e[\xb1\xfd\xe7\xfe^-S\xb8\
+U\xb2\xe5\xa5\xb8/\xa8\x04dK\x81^\xf7`\xa8\x18\
+\x0f\x9d\xe6\xf5\x1d\xa6ym^jM\x00\x0d\xbf}r\
+}i\xf1\x11\x90#\x83|j\x22:\x9c\x93\x12o\xfc\
+\x0d\x09\x5c\x89C\xeb\x14\xe2\xcb\xefe\xc5\xb7\x12\x04\xfc\
+\xb5L\x9c\x96,\xe5\x17\xc2\xda\xf2{o\xd8\x82|\xd8\
+\xfc\xe7\xac\xaaa\x1eU\xe2\x8c\xbf\xfb\xb1N\xb6q\x93\
+\xfeG\x16<phl\xcf\x09K\xee\x80\x17.-\xd9\
+\x9b\x7f\x0c[q<P\x0f@\x12\xf9\xd2\xb0\x15\x82\x19\
+\x17\x0c\x8e\x97Te\x90\xd8\xaa\xf3\x1fie\xfa\x9d\xe3\
+\x95\xc3\x96s\xb5\xd4d\x04\xf2\xb8\x18\xf2\xbc@\xe2^\
+\x88\xb7W\x86\xad\x10\xa6\x10{o\x0b[z\xf6\x0bq\
+\x91\xfb\xaa\xc4q!E\x9c\x9fT#\xfc\x5c\xab\x00?\
+B\x02\x02\x09\xa1\x84P\xcaK\xf7H\x9f\xe2\xdc\xb1\xbf\
+\x9a\xe7\xfc\x0c\xfb*?F\xa5=\xe5H\x8b\xec\x94?\
+!q\x81D\xf2)a\xab^}\x9c-\xa9\x22#\xf1\
+R\x9d\xd7\xa0\xfd\x107\xc95 Q'\x9e\xae\xd6%\
+\xad\xa89>\x90 \xc3\x05\xc3\x16\x12\xc3}2\xf22\
+\xe0U)\x01%\xca\x03\xba [ >X\x88O\x9f\
+\xa1E\xe3fvLJ\xc6\xa1\x93a(\x92&\x01\xc0\
+\x13'\x8b\x80f\xae\xf4\xffCn,\x1c\x08\x07\x94\x85\
+* E\xea\xe7\x81\x80^\xa4LK\x0bC&\x96\xcc\
+\xf1\x0a\xe3q\xe3q\xab\x80I\xe6\xab\x87\xe8\xfb\xb9\x0a\
+\xf2\xe7S\xc7\xd6\xc4!S\x81}\xf3&\x99\x819\x22\
+\x0ff\x5c\x08)+\xd8&\xe9\xd4\x9b\x83\xc4\xa6\xa0\x8f\
+\x02z\x89\x00\x0e\x9f@\x81\x03*C\xcf\xc1\x16`,\
+\xf2]\xf3\x86`\x22\xf6r\x82*S\xdf\xce\x04\x009\
+\xbb\x85\xd5\x7f\xfe\xfd\x0c\x00\xc7o\x8f\xdf\x19\xbf\x93\xba\
+\xe3G\xae\x1c\xea\x85\xe5|~\x15`z>}@\x91\
+P\x9d\x03\xe4\xf0$\x00\xfa\x1e\x96\xbe\xc2yx\x97(\
+\x00\xf9WY\xeee\x07q\x07\x08\xd8\x05DH\x90d\
+2\x05\xc8\xf4\xcf{H\xa5q\xefI\xa0zD\x82\xfb\
+\xf1s\xd7\xcfA\x15\xd8\x90\x85\xbcB\x06R\x02o\x89\
+\x15\x9f\xef R\xf9\xec\x13#\x1cu\x15J$}\x1c\
+d\x81\x9b\xc4\x96y\xe1\xfd\xfa\x04\x80q\xd4\xfb\xa5\x02\
+\x05\xfa\x9a,\xa5\xd5+\x94\x81\xf7\xc6\xc1g\x5cT\x18\
+\xcd\xcf\x5c'\xe3Y\x01\xf6K\x19\xbb\xe3W\xeb\xe1B\
+\x9d\xec^r\x00\x04\x07\xeeTQ\xf8\x5cB\xdam\x94\
+\x1c^\x09\x0e\xe3\xe5\xe7\xc8<\xbd_\xdf#\xef>\xfb\
+\x04\xc0\xd52\xd0\xf6w\xe69\xddj\xf3[\xc5O\xaf\
+o/\xeb\xf2w\x99\xb1\xd6\xfa\x00\x0ag^\x0a\xf8\x8d\
+\xaf\x80U/\xeaR\x91G\xb67\x07\xaa\x12Q\xd9\xc3\
+\xbf9!+\xf3\xee[\xc0`<!s\xdc\xa7\xc0\x1d\
+9\x1f\xc7\xc4}\xfa\xde}Z\x87=R\xc2~\xfaK\
+I\xee\x07!\xe0 \xec\x02\xb2\x0aXzRL\xef\xeb\
+9\xf6\xefo\x5c\xfa}\xc1}\x80\xf4k\xf5\xe8e\xb2\
+\xec+\xee\xe7\xe0\x8e\xc3\xa4K\x9cV\xe0\xd0\x93dB\
+\xb0Pw\xc1a`\xbe\xdbO\xed\xb3*\xb1\xc9\x16\x5c\
+\x95~\xeb\xaeWo\xe9\xb9\x5c\x04\xf8\x028\x816y\
+\xc1t\x84U\xf6j\x1f\xb3\x0e\xcc;\xf3(\x1d\xd7\x82\
+\x94^'91\x9c_\x12A\x90\x0f\xa0\xd0zN3\
+\xc0/\xb5\x1dd\x84\x02\xd2\xfb\x86-\x8e/RS\x90\
+\xe2z\xde\xf99\xa1\x22\x1f:\xf2\x9b\xf7\x84-\x15\xb5\
+\xcd\x18\xb6\x0al\x12\x82Z\x0e\xa9y-\xa1\x9aH\x07\
+=\xd6*NE\xda\x8b\xcd?+e\x85\xdc +\x09\
+\x19 \xc0\x16\xb8\xf0G\x92%\xba\xad\xb3\x13\xa2W[\
+\xe5V\x82\xa8Z\x15$\x08U`\xb2PR\xd7\x83s\
+!+.\x15\xe8\xe3J\xb0\xcf\xdbW I\xa8\x01\xe8\
+\xd1\x87\xe8\xe1\xdfH\x8c\x99\xa7\xb9\xcf\x15\x99\x94\x04\x96\
+\xf5\x05\xf9\xe3\xb9C$:\xdf@\xaaU\x92\x916B\
+\x08hY\xf8\xcb\xd9\x7f\xd9\xdc`s\xfd)\xf1\xf4\xe1\
+\xb0\x05)'\xc0\xa8\x80\x0er*\xe75\xf6n~\xa2\
+\xe7\x8e\xfc\xaa\xa0\xc8\x17\x8b\xae\xf3\x89\xdc\xed?\xc7\xd5\
+\xf97\xc9<\x1f\xb9\xf4\xcc\xab\x10n\xbe\x12\xb6\xf2\x07\
+!A\xf4\xc8_+l\x22_\x9bZR\xb7\xef\x0c\x9b\
+*\x89\xcf\x98*\x89\xf6\x05\xeb\x9a\xc3\x1fu\xc1\x87&\
+\xf9\xe6\xa9\xab\x96\x04\xfb\x9du\x96\xeaX\x85\x88yg\
+X{}~\xd8\x82\x90\xc1v\xbf\xf7ia\x0b\xb4{\
+{bX\xfb\xf9\xad\xc2\xda\xf7\xf7\x09k\xafw\x0ak\
+?\xffL\xd8*\x81\x93\xebF\x8b\x01$\xc5p\xd1\xb0\
+\xf6\xfa\xd1\xb0v=\xb7\x0e[\x0av\xdbW\x87\xad\xe4\
+\x05s=\xf1\xbf\x87\xc3\xc3:({$\xca\xcel\xf6\
+\xf1\x1c\x9fKM\x89\x92/M\x1c(\xb1j6\xab\x80\
+\xdey\x09\x91\x94\x15P\xebX\xe5sz\xdd\x97\x81\xe6\
+\xdf-\x1c\x1aUq\xfe\xcc\xc4\xb2\xb5\x04j\xb1*o\
+\xb2R!yP\xca\xca\x9d\xd7\xfc\x9e\xf3R\x1d\xe2o\
+\x96y=^?lE\x8el\x9dY\x0f\xfc&r\xc2\
+\xe7\xcc\xfeq\x05\xf8X\xd43\xe0,\xa4\x00\x7fH\x81\
+\xa3\x93\x1f\xad\x02\x93\x16\x1a\x9c\x1e\xce\x09\x09\xe5L\x90\
+L\x1d\x1am\xfe\xef\x9c\x17\xb6\x92\xa9\xcd\x1e\xed\xbd\xd7\
+\xdc{\xad\xbd\xd7\x9a\xae\xfb\xcaq\xdd\xed\xfb_\xd9{\
+\xcd\x05A=\x1e\x14\xb6\xa8\xa7\xe12\x80\x00\xa9\x02b\
+\xae\xdf\xed\x0b\xc2\x96\x80~\xe7\x0ea+\x7f2\xf7\xaf\
+\xe2\x80\xf2\xfc\xc8\xa2\xde-l\x85\xf0\xc9}\xb3\x10\xdc\
+T\xaa\xee\x16\xb6\xe2\xca\xb1.\xf9\xc1\x12\x0f\xce\xd7\xdc\
+o\x86G\x87\xad\x10\x028$\xecw\x90\xd3H\x02\x91\
+\xee\xbdz|\xd5T0>\xbd\xad\x8a\xd3\x97\xf7\xad\x16\
+\x09\x09l\xe7n\xb60\xd4|\xd2b\x92\xcf\xb5Z\x0e\
+\xf9\x9d\x12\xee\xe4\x12\xb5\x84\x0b\xd0\x15\xc2 kA\xe9\
+\xf3\xb5*\xf6\xd4p\xf8\xdfZ\xbb\xf8_\x90#\xf9\xbe\
+5?\xb5 \x22\xc9\xe5\xb7 \x93\x85\xec\xe1?\xe5y\
+P\xc8\xa4,\xe8\x0ew\x0a[\xf9c\xc8\x8e\x13\x112\
+\xbc*\xac}\xff\x92\xb0\xb8}=w\xbf\x9a\xd0\xce\xd3\
+\x12\xd2r\xcd\xf9 \xd9\xfe\xd7\xb0\xf6\xff\x17JR\x85\
+\x0b&\xbbo\xb2t\xd7F\xa9\x87#\xd9\x1b\x8b\xdc\xc1\
+\xc0YH&\xc49\xc5R:\x07\x04\x0fK\x96F$\
+g\x99!\xd9<.\xa1k\xef\xcb^\xc5\xec\xd9\x93\x99\
+\xc7\xa6\x89\xdd|\xfchf\xe68>\x16\xae\x0a\x88\xc0\
+E\x85\xdf\x80Z\xb8\x87\xef\xae\xec\x97\xbc\x1b\x87V\x86\
+\xeb\x9a\xa9GIV\x22\x1d\xf8\xa0\xd4\x99\xa0P\xc8\xc5\
+8n\x0e\x92\xcbv\xbd\xee\xbd\xc3,\xe02\x91]w\
+\xafK\x9b\xf7\x87\x1c\xa7*\x98K\x02`FHp\xac\
+\xbc\xcf\xcfvW\x98\xaa\xc5\xe1\xbc|\x1f\x89\x0e\x0e-\
+\x87\xb5g\x95\xedI\x01\x05`}\xc0)\xd0\xeeU\x09\
+\xfa^y\x01\xb6\x00\xea\xb0\xac\x98r\xf8\x0f\xee\xd8\xfa\
+\x8f\xee*\x86\x02*\xf2q\x02*\x07=\xdd\xe4d\x13\
+E\x92U\x81\x87\x83\xe3\xd2E\x1a\xb9\xbb\xe5A\xa2\x03\
+\x22A\x85\x91c\xb1\xc8\xf4\xcd\xf3\xc6\xff{\x9e\x0e(\
+\xf3\xb2\xef\x8d_\x02\xbb\xd9Aq\xd0x\x8e^%\x88\
+\x04\x94\xe6\x97\x0a\xa3y-\xd1\xd5\xab\x00\xf4\x09\x03\x99\
+\xe7\x84:M={Se>Yy\xff-I\x11\x0f\
+\x09[U\xa2\x04\x82\xc7\xe7\xabu\xf6\xc3ju\x99\xef\
+{'\xef\x97:\xc0\xf9\xf9\xba\xc8\x0c\xce\x1b0\xb5\x08\
+\x0e\xb4\xc0\xc9k\xb2\xf17'y\x17\xd9U\xb1\xfd~\
+'\x13Y\xa0\xd0\xc6]\x0b\xc9\xafd\xc5\x15$\x8e\xbc\
+\x8c\xf9\x9f\x07b9` ct\xce\xb3\xa2\x1a\xc0\xd4\
+\x09\x9ajC\xb7\xaf\x19\x0f\xcf\xd7\xbc6\x0f{\x12I\
+\xaf~\xae\xd2-q\xc0\xa1\x17(\xda?\xac\x9b\x9e[\
+@b\xc7>\xe0@u\x1d=)\xa6u\xe4\xe7\x02o\
+=l\xd7\xcb\xcc\xbc\xc4\x83u\xe8\xf3\x5c\x8f\x04\x8b\xdf\
+\xb3\xafPA\x90\x18\x14PI\x04\xf8\xbb\x8e\xe4\xa6Z\
+r\x8c\x8f\x1ej\x89'\xe3\xec\xf3\x97V\xa2\xf9\xef!\
+\x1b\xfc\xdc>\xc6!\x04\xd1\xc7\x8a\x8f\xdd\xd9+\x15\x00\
+2\x9c\xbe\xacG\x10\xfc\x0eARz\xf6\x99(/\xc7\
+\xd6~\xe6\xb9\x80\x8cz\x0ez-\x91\x85%\x84\xbd\x10\
+\x17y\xde\x81\xbc\x96\x1a\x87\xdeu\xe3\x9c\x0eU%:\
+p\xd2\x80\x18\xbe3l\x85\x88\xc3\xbd\x91*?\xc5>\
+M\x068\x03\xe8\x0a\xa4%dpj\xa8\xbc\xab\x10\xe9\
+\xd9O\xc7\xba\xae+\x11W\xdb\xdb\x85\xad\xe4\xa6\xb4P\
+\xbd#l\xb5\xef\xe4\xfcF\x12U\xfb\xbe\xc0\x01\x19c\
+\x06\x94\xdbC\xc2\x96\xf1+\x19\xc5DL\xd5\xf5|\xa9\
+=\xbd/M\xbd\xa4O\x9bz\x98\xcd?\xfb\x16\xc4\xa0\
+\xf3\xca\xfe\x9c\x5c\x02\x95x1\xff\x04\xd0\xf6\x87\xac\xac\
+o\x1e\x11\xb6Knv\xba~\xf7Y\x0e\xb5\x84\x82D\
+\x15\xe4\x85\x04'\x87\xcf\xf9e\xbe\x99\xf7\xce+j\x0a\
+\xf7Kv}\x09$\xe4\x878\x16T\xe82\x11T\x01\
+zVbk\xbe]\xaf}\xea\xf5\x96\xc4O\xf3\xbf\x1e\
+\x1f\x1c\x12\x9b\xd7\x84--\x19*\x90%\xc3\x08I\x82\
+\xb4V\xa2 [K\x0b\x22+@\xd0B\xfa\xd2\x94\xb1\
+Lu\x93Jt\x87\x97\xf1\xef+\x04\xd1\x7f\x0d[%\
+\x9c\x05\x80\xfcM=\xb3\x123\xc1\xb01\xb7\x94>}\
+B\xa2^m:\x99+1\x05\x1a\x5c\x10e*S8\
+\x95pW\xa4:I!\x0c\xc8|\x1d>\x95,f?\
+\xb8\x9d\x13\xdbk\x87M\x95\xfd\xa3\xa7\xca\xbe\xc0\x7f\xfa\
+Z\xc8\xfe\xf6\x1e\x11\xd6\xbe\xffjX{M\x04n\xa9\
+\xbbd\x80;\x5c$\xacm\xa7\x7f\x1e\xd6\xbe?2l\
+\x22\xbd\xbbo\x90\xde\xed|'l!q\xe4G@\x18\
+ln4\xbf\x1fu\x8c\xfd/\x0bK\xc8\xf6\x09\x0bY\
+\xdeT\xb7\xbe\xd7\xaau\x167\xce\x07fU\x88\xe9T\
+>x\x09\x90\x8b,oM\x96\xdb\xe6\xf9xR\xd8\xaa\
+'\xde\xba\x13\x08>o\xcf\xf3\xdb\xbf\xaaT\x8eO\x08\
+[\xed\xeb\xce\xeb\xd7e\xcbS\x9e{\x02\xec\x22\xdfV\
+\xa8K\xe8\x7fq\x13$\xd2\xa7\xe2\x90_\x0e[\xf5Z\
+\xd3]\x7fT\x16:\x91\xc0=6\xe7a\x06D\x85X\
+\x960\x94\x18N\xce\x22\x95\xfd\x22O\x04\x05\xe7\xffB\
+\xf6!\x97\xbbTX{^\x0f\x0f\xfb9\xe3rJ\x06\
+\x8c/K\x8e\x93\x1bmn\x1cz\xf1{\x1f\x1b6\x91\
+)>$\xc8\x14'\x7f\xf7\xe8\x15\xa9\xe1]\xe7y?\
+\xbe|F\x80\x14y\x9e^\xf0L@@dW\xc2\x10\
+\xd2!9\xdb \x98*1\xa0\xf5#\xef\x7f\xbb7l\
+\xf9\x5c\x81\xeax\xf4x\xccx\xcc\x8a\xad\x1e\x02\xe1\xdb\
+a+\xd2\xc4n]\x97z\x87\xb8)Y\xee!W*\
+\xd1O\x8d\x22\xc9>\xa7\xf4\xdc#W\xe3l\x9f\xcc\xc4\
+\x83\x04v!\xd2\xb4vf|$\x81o\xbd\x17y\xa9\
+sR\xc5\xde\xfe\xaf\x05-\xd9\xf3+\xd1\xe1\xbc\xf7{\
+\x0a\xaf\x9dL\xaa\x04s\xddo\x92r\x8e\x97\x0c[\xfd\
+}\x22\x91\xc67\x86\xad\xfc\x1d\x89\x02\x81>yO-\
+5)\xdf\x8b\x5c\x12\x97\xcf\xf0\xb4\xb0%qZ\xf2\x81\
+>\x17\xd2.\x13\xe5\xfb\xca\xd1\xca\x1e\xe1\xed\xa3\xc3\x16\
+]\xc5P\xf7\x9cdOb#}\xfa\xe4 \xcf\x99\xa0\
+\x0c\xe4A\xfa\xc6G\xcd,\xb2\x9b\xdf\xc8\x83\xc0\x01\x8a\
+L\xc3@A\x00|&+\x7f\x1e\xa8\xcc0=Od\
+\x09\xe4\xac\xfee\xf3\xd5\x89}U/\x9b\x03\xf5s\xd9\
+C\x99\xbdV2\xf1 &EV\x947\x5c\x9f\xe7+\
+U\x06\x86O\x86\xad\x02o\x0e\xca\x95C\x81uqt\
+\xc6\xf3g\x88GA\x80\xc8d\xbc-\xc9\x03e\x94z\
+\x12\xbd\x0bvds\x02\x05\x81Z\xcfB\xdd\x93|\x99\
+0\x12\x05}\x82C\x85j\x81\x02\x0b\xc8\xe6\xf7\xe7\x90\
+\xfc,\xff\xceu\xe0\x048,l\xe5\xe0,\xf3bF\
+.\x08\xb4=W\x99`*\x06\x99\x89%oQ\x01\xbf\
+@\xd3u\xf7\xf2g]@SH\x84K\xef\x96S\xab\
+@\xbcc\xeb_\xf5:\xcf\x95Z\x01\x87\x003U\x1f\
+\x82\x8a&\xc8h*\x13*\x90u_\x02\xe3\xcb\xec\x0e\
+\xcc*\xe0\xf7<{\x12\xc0K\x96\xac\xe2\xaeDF\x05\
+\x22\x02{\xe3\xe0K`\xebs\x91\xbcI\x90I\x9c\x09\
+,\xe8(s\x88%\x82\xf4\x86\xa7\xfcQ\xdd\x9f\xf9 \
+\x81#1\x93\x0ee\xb5\x80\xb8?\x10P\x8e\xa0\x84\x8f\
+\xf5\x22P\x13x.=T\xbb9 \x04\x80\xcb\xeb\xfc\
+\x1c\xfa\xca\xab\xbf\x97\x980?\xce\xcbV\x81\x8e\xf3b\
+\xb3\xe8\x7f\xcf\x8e\x02(\xa6\x04 $\x8f\xe7)\xf03\
+O\xccc\x81\x09\xf6[:\xb9zw\x91\xec\x19G\xd7\
+\xd7\xabG\x98w\xc6Y\x00\xdd\x07\xa6\xe6\xbbu,!\
+\x90\x0e|A\xdb\xfd\xbf\x84*\x07\xdf<\xeb\xe5(\xbd\
+\x7f\xae\x93\xb6OM\x95\xcc\x03z\xee\x05\xec\xe4\xe4\xc8\
+R\xf6\x01\xb8\xf9~\xb5t\x80\xc99I4\x19W\x10\
+9\x89\x0a\x09T\xd7\x8fK\x82|\xa2D\x86\xbfW\xc1\
+U\xa9\xe60\xd9\xdfz\x928\xfb\x83\xfb\xd1\x13\xac\x95\
+\xc7\xf8\x1a\x17${\x9e\x8f\xf9\x0fz/1-\xd1\xac\
+\x82$\x01\x9c\xebp\xf3\xa8\xb0\xd5\xbe\xec\xf9\xda7\xac\
+g=\x80\xd6\xa5\xeb\xe4Pph\xfe\xcbd\xcbx.\
+\xbd\xc9\xf3:\xf0\xbc\xcd[\xea\x15\x09\x99\xac}\x01w\
+\x05\xe4\x85u\xe69\xe0\x16\xc0*\x9c\x81Y\x05\x80_\
+\x9al\xe9\xd1\x17\xb8_\xba\x10Us\x00\x9eP\xc4\x92\
+\x11L\xa8f\xf5.J\x88J\xa4\xe0\x04\xd1#l\x9d\
+%$\xb1*\xeb\x1c\x18\x81 \xd5\x15\xec\xffy\xaeT\
+\x8f\x7fn\x1b\x9e{q\x07pD\xd3\xb1\x04\x9d-d\
+\x00\xa8\x7f\x92N\x8d\xff6~wJ\xfc\xfee\xd8\xaa\
+E\x81\xfc#\xe8>\xe4\x056\xf3\xec=\xae\x0a:G\
+5\x11\x92E\x02e\xbd\xa8\xe4 \xc5\xb4\xce\x1e;\xd9\
+Bv\x08\x99 \x01$\xe0\xf4\xff\xd6\x05\xf2(\xd0U\
+\xf3\x03\x02'I\x08\xc9;i\xbd)N\x09\xd0y\xf3\
+HOi\xde\x97\xcf\xc3\xa1\xd4F\xef\x1e\xd3\xf89\x8f\
+\x93+h\xfb\x8c\xb0\x05\xb9\x81d\x0b\x07S\x91\x8f\x9d\
+\x19\xb6\xa885o\xecG\x9b\x1f\xad \xeaY\xa9\xd4\
+2\xb6\xf9\xd5\xb9\xc5e<;\xd5\x09\x90k\xe5y\xb2\
+=2l\x95\xb0J?\xae\x85\x17gG\x80\x11\x1d\xe1\
+A.W\x81khM\xdcr\x9e\x8f\xc3\xa7\x16\xd6\x7f\
+\xf2cSe\xefBK\x0f\xfe\xf8\xadf\xdf\xce\xeb\xff\
+\xe7e~o\x9f\x1d\xb6\x92k\xfb\xc7f\x91\x08\xf8\xbf\
+\xcd\xbe\x92\x81\xe6\xdf-r\x80S\x0f\xf7\xb1K/\x7f\
+\x0b\xc4\x9b\xadX\xde3\x10#\xfb&\xb1F_\x1e\xa2\
+\x86\x0a\xc8\xf0\xa3\xb0\xb6\xbc/\x18\xd6\xbe\xbf^\xd8\xc4\
+z~n\xb0\x9e#\xd1V\xd1\xdb\x9e\x1d6%\xc4&\
+\x12A\xfb\xc1xlX\x92\xdd\xfd\xd7\x85\xdc\xb1d\xb7\
+%\x06\x9ds\xc7M,5\xf3:}K&$\x9e\xba\
+\x0a\xb0%\x02\x04$\xf6\x9f\xdc\xdf\xa6\x8a\xe6_\xaf\xd6\
+\xf9\x99\xcd;>s%\xa7\xa7\xf2\xee\xef\xed\x1b\xce\x7f\
+\xea\x14?\xcd\x0a4rG\xf2\x86\xcf\x9e\x13\xa8\xc5\x1d\
+$!\x98\x5c\x06%#\x8b\xac\xd0y\xa0\xd2\xfdga\
+K\x8bCq\x15d\xc0W\x81X\x22tJ\xe6\x0dT\
+^\xe1\xd3|\xe4_Hh\x19O\x09\x15*\x01\xd9z\
+Q\xad\x08\xb8\x86 \x8c\xa9\xb3<zF\xa0l\x0fk\
+\xd6\xce\xb3\xed\xc7\xc3\xda\xfb\x1e7^qB4'\xb7\
+G\xed\x83\x12FO\x0f[!$\x12z_\x89M\xad\
+i^\xb5H\x90\x15\xcc\xb8\x03\x92\x0a\xa9_\xc9o^\
+|F\xec\x14\x87\xc2asb\xc3\xfc\xaa\x04v&\x08\
+\x0b\xc1\x93\x08\xae\xe2\x1cJ.%\xb2\x99\xe3\xef\x8cw\
+\x8eD@\xc9\xf5\x8a\x7f\xb4@\x19_\x9c\x00\x02\xfc\x94\
+\xfb\x93\xe0\x94\x80\x1d\x9e\x15\xb6\xb4\x82\x17y\x1f\xff\x94\
+\x0c\xe6\xc9a\xab\x84\xfc\x13&[\xb8\x0f\xa8\xf4\xbc(\
+l\xb5\x8f;\xf7\xad\x17H/H\x01\x85\x9cT\x05*\
+\x84\x83\x04u\x16\xf2\x0aq\x97d\xd7\xc5\x8d\xc0\x8f\xe1\
+7H\x04\xa4?Q\x9c\x07\x19\x87H\x5c)|\xd59\
+ \xde\x86\xa8p\xce\xe0\x0c\xca\xeb\xdb\xb7\xb9i\xf6f\
+\x9a\x002\x9e\x02l\x8e\xb5\x89\x83\x04\x8c\x03\xfb\xbc\xb0\
+\x09\x025\xf5\xfc\xb7e>\x07\xeez\xb2%\x00\x04\x9c\
+d\xc9\xbc\x9f\x80Bo\x9f\x8c\x9b\x80\xddA\x9a\x0b\xbb\
+\xa0\x86{s\x22>,'\xe0\x19)\x17\xf4\xee\xcd\xbb\
+6\xef\x9a\xa0\x19\x93C\xb1\xf9\xbb\xb0\xa9E\xa1\xd9J\
+\x871Ih\x86\xd7\x86\xad\x0et\x0e3\x07%\x1d\xd3\
+\xf1\xaf\xc3V\xbdSw\x9f!0\xed\xf1\xce$\x80\x06\
+\x9cC\x9a\xe3)cX\x95\x93\x0bg@(\xd1\x80S\
+!\x17Z\xf5\x86\x0a`\xfb\x8a\xb1\xbf\xb3a\xfa\xb9\xf1\
+\x15pr\xa09\xa6\x17-\x16\xfd>\xe0\x9e\x03U\x8e\
+\xeb\xe5J\xdenv\xd8U\xb2\xaf]\xba\xca\xbbe\xa8\
+8$\x12\x0f\xbe\x16\xc4\xc1\xfc\xff{r\x01\xaa\xf4\x1e\
+\x99\x01\x0cV\xfbC\x93\x8b@\xe2\xa0\x87\xda\x1fY\x9c\
+\x01\xbb[\x05\x04\xaed\xab\xdc\x87\xcf\xf9i\x92\x81\x09\
+\xf0T\xf0\x8c\x9b\xca9R9\xe3\xe8\xfd\x05~\x02\x00\
+\x8e\xf2\xd1\xd5\x1a\x80]}\xfe}\xe3\xec9\xf5d#\
+;%C\xb9;!\xe0\x80\x12\x90\x08|A\xb0\x8dC\
+'/\x89\x9c\xb26N\x096\xf7\xd9\xcf\x1f\x9f?\xfc\
+\x82\xc0\xbc\x0fp]\xb7\xe7\x22\x90\x13\x90\xda\x08{R\
+H\xdf\xf7\x08\x14\x09\xa7\x8b'\xc9\x1f.\x11\x89\x86^\
+\xfe\xaa\xe7D0\xbe\x121\xae[\x85lY'\xdb]\
+\xaa\x16\x9e\x9b\xde>\xe3\x93rE\x9b}\xf3\xbeS\xfa\
+\xc32\xe6\x10G8J\xfa^s\x01\xba\x0a\xe9\x89\x99\
+@\xc9\xc4e!<\x04\xa2\xbd\x8c\xdf\x9531\x81M\
+\xdf|K\xb2\x9f6\xe7v\xf5T\xd7AzL&n\
+\xcc\xbfk\x94\x5c\xdf\x9c@\xf0\x9a\xeb\x17\xd4\xb9\x02\x0b\
+\xfb\xdc\xd5s}\x9f\x98\x89\x09\xebG\xe0\xae\xb7\xda\xbe\
+d\xdce\xe0U\xb2A\xa1\xeds\x02y\x9f\xe7\xd5~\
+\x02\xea\x8d\xd4\xc6\xbcr\x00z\xce\x90/9/\x8b\x05\
+\x1ed\xd3x\xf5\x89\x17\xf3\xd8\xfe#\x11*`\xcfs\
+\xa9\x12\xca\x10\x00z\x11U6d\xfc\xcd?\xf3\xa6C\
+\x1e\x1c\xc0\x92\x0c\xda\x8d\x9cR\x00\xa9\x92\x99\x0e($\
+RA\xb0A\xfe\xad;\x90s\x81L\xf6\x12\x8e/\x0b\
+[\xfd\xbe}\x01\x17\x80\x8al\xf6zr\xbc@\xa7K\
+\x16\xcd\xf5a\xc9G\xc6{\xc9\xdc\x8f\xb5<\xa8\xb0d\
+\xe5\xaa\xc8\xce\xba\x9eE\x09\x06\x90\xe1H\x8bGb\xbc\
+\x02\xc5|\xce\x9b;\x84\xad \xeb=\xb9)\xce\x06-\
+OH(3\xc0\xdc\xf3\xbc\xc9\x16\x9dd\x90QPT\
+\xf3\x1f9_\x160\xaa\x17\x93_C\x15\xc1\xfc\xc8\xe7\
+\x5c\x89\x81t\x10\xeb{\x95.\x89\x0d\xcf\x15\xf2\x08\x12\
+@K\x07.\x86L\xc8PU\xaa}\xc3z\x83\x8c\x91\
+\x18\xe0\x00Z\x07\xf6_\xdf\xdbW\x9d/\x9e\x1bR\xe4\
+\x94#\xac\x04\x01H8N\x02\x011\xb9,r\x9cd\
+z\x91Cg\x0fz\xb5p\xbc%\x94\xec'\x07yJ\
+\xb4oo\x16\xb6\xdc\xd7\xe6Ka\x0bwK%\x16~\
+\x18]\xf1\x13\xc4~j=\xa9\xfb\xf4w\x99\x88\xb2\xcf\
+\xb6\xddm\xf6K\x9e\x93\x9cP\xb9\x8f\x0f\xd7\x19\xae;\
+\xb4\xc0v8*l\xea\xe1\xfd\x8b\xe8\xe1\x1d\xce\x0c\xcb\
+\xefON\xc7\xfc7V\xf2\x5c\xc1\x16\x1f\x1c\x0e?\xca\
+\x02\x11\x8e\xab\x98\x17!\x9f\xf6\xae\xd9o\xac\xc2\x07\xbd\
+\xf2\x5cW\xa5\x83\x9e\xdfo\x8fov\xa5\x85\xa5^\xc5\
+q\xf3\xf9\xb0\x05I0q\x01\xc4}\xbf=l\xd5\x92\
+J6\x0f\x8bz\x06\x8e;\xe7\x84\xb5\xfb\xb9AX{\
+}e\xd8J\x06.\x03\x86\xe1Fa\xcb\xbe\xbb}D\
+X{\xfd_a\xed}>\x10\xd6~\xef6\xcdn\xbb\
+\x90\xff\x09\xc8\xc6\xcb\x87\xadH %\x04\x91\x94f+\
+\x0a\xa4\x9cD\xd1\xf0\xb6\xb0\x15\x8b>\x92\xdeXeC\
+\xce\xf3\xbbg\xc5\xfcsK\x8bi%\x04\x044\x12\xa9\
+\xe9\xef\x0b\xc4\xab\x90a\x7f\xbd\xf2\xee\xc4\xe8\xd4\xaap\
+\xe6\x0a\x01\x95\x09\x80\x0a\xb0\xac\x7f\x09Q\xfe\x84\x82\x86\
+\x04\x03y\xd4\xdc?\xaa\x15I\xaf\xb9\xc0/+\xad\x05\
+5\xb7\xde\xbc_\xaa/H\xe4T\xe2\xe0\x0da\xab\xeb\
+\xccxfxn\xd8\xb2nJ\x0d\xe1[a\x8b\xbf\x87\
+\x8cs\xef\xd5\xc3\xa6D\xc0\x99\x91\x08\x18\x1e\x1f\xb6p\
+\x9a\x90q\xe7\x97\x14G\xcc\x85\xe7V\xae\x22}\xeb\x0b\
+\xa0Z\x1d\xc8\x89J\x0c\xe3v\x00\xf5\x7fM\x226>\
+\x9c\x5c\x05Ib\x8c\x1bd<!l!\xad\xacsX\
+! \x91I\xc5%\x03\xf1a_\x7fL[\xaf\x8fY\
+\xc9\xfe\xf1g=G~\x8a\xf3\xde9\x85\xf3\x04\xe7M\
+&d u\xac3ji\x95@\xf7~\x89\x84\xc3\xa5\
+S\xfb{r\xd5\xd5\xb9\x95\xdcEU\xf0\x15o\x90U\
+\xa5&\x90\x88\xa4J\xe4\xf3?p!\xf1w\xa8\xe3(\
+@$b\x03R\xa4\x12\x0a\xe2H\xe3\x80\x9b#\xfd\xa5\
+hp\x9f\x12B\xb9\x1e\xca_A\xceI\x05\x88\x1a\x13\
+dK&\x9c\x14\x00\xf7\xd5\xc1\xa5\x97\x1d\xa9\x17vs\
+\x95d\x1bUBn\xda\xa6=g\xda\xde5\xcbgU\
+\x00\xf8\xd9t\xa0RW\xb6 \x16\x0e\x5c\x07\xb5\x8c\x8b\
+J\x9bD\x80\x0dI@\x8e}R\xc0\x94\x1b\xc6\xf0\xc2\
+\x99\xc4\x00\x84\xb1M\xdaI\x9e\xa7\x12\x06I\xc2\xd3\x0e\
+\xc3\x99\xf4\xce\xc6g\xa1\x0a\x04dn\x0c\x90\xca?\x08\
+!R\x8f\x9c\x98HG\x0a\xc2\xf2\xc9$\x0f\xe2\x88\xf7\
+\x95\xd3owr\x80K%s\x97LT9\xba\x028\
+\x1b`O\x96'\xa0\xe3p\x0aplL^\xfd\xdcD\
+\x5cz~\xe7\xc0\xce\xf7\xfe\xffb]e]`'\xe0\
+9\xa7\xc8\x0cwU\xac6\x17\x0a[\xfd\x9d\x0a\xa7\x8d\
+\xc0\xfb\xef\xcb@\x8d\xdc`\x92\xb7m.\x95\xc8\x83\xbe\
+\xc2)\x00]\x90\x02\xf3\xf5^2\x03m\x01\xf7\xa1\xf5\
+\xf3\xddl\xfd\xa0\xfc\xfb;\x15\x05\x01\x88/\xefO\x1e\
+\xd2\xf8\xee\xdd4\x9b\x16\xfc\x1cXy_\xbd\xfd\x97\xdf\
+]Y-\xc7\x1b\x92\xc2}\xf4\x09\x80\x9eL\x12\xcb\xbf\
+\x83O\xaf\xae\xca\x0f\xc7C\x00\xc5Q\x16\x90\xa8$\x9a\
+?\xe6\x99y\xe4\xf3\xdd'D\x01YF\xeb\xaeoE\
+\x10p\xfe\x22\x15\x84#\xa7&\x89%\x00\x94h\xf2z\
+P~\xae\xef\xfbD\x15\xbd_=\xc5Hk\xf6\xe58\
+\xb9\xae\xde\xf1u\x1f\xbe\x97x\x83\x5c\xb1\x9e\xc8\x05y\
+?\xa4\x91*\xb0\x12O\xf7\xca\x80\xe4\x83\x9b\xd37\xa7\
+/\x0e\x1dR\xcfj\x19\xf9\x9b\xb0\x15\xd9\x8fqr\x7f\
+\xb9O\xe2R\xd8\x93-,-h\x9e\x03\x8b\x05a2\
+\x8f+h\xaf\x96\x88C;\xf2\xc9c\xf2\xf7\xf4\x0e\x83\
+\x90\x1b\xffkdF\xb7\x9b\x7f\x95\xb8t\x10\x090\xfa\
+\xc0\x1b\xd4\xec\xe4\x0c\xacN\x9a\x1d\xf6\xe6\xf4\xcdPd\
+\xd0\xdb\x9e\xac\xce\xe7I\x90\xf9\x5c\x01\x97\xf1\xf7yZ\
+\x03\xf2\xf3\x0a9 #\x0d\x99!\xe1\x00\xa9\xd0\xb7\x22\
+y_\xa4m2\xffZ\x1f\xc8\xbd\x99/\xf6/\xeb\xcd\
+\xf9$\x11\xc3\xa1\xcc\xe7[\x08\x1cP\xe0\xecq\xaeu\
+d]I49\x17\xedw\xf6\x8f\xb4\xe7\x8f\x00\x00 \
+\x00IDAT\x17\x09\x02\x89E\xfb\xb4\xf1\xc9\x0a}\
+A\xe1\xb1\xf2#\x9f\xd3\xcb\xae\xc2\x94\x9f\x87\x5c\xacZ\
+\xe3\xb00\x93\xbds\x0ejI\x01Y4n\x12OZ\
+<\x04.\x9f\x0a[U\xecO\x9f\xd7A\x05h \xa2\
+\xd6k\x92\x9d\xf1\x17\xb6o\x0a[\xcd\x07\x89z\x10W\
+\x09\x0a\x88\x08\xeb\xcf\xf3\xe1\xb0\x08@\xf4\xb8s\x5c\x91\
+\xf3Y\xdf}B\xf0\x83\x13{\xd0\xb2n8\x86\x19\x80\
+\xd6z\xe1pi\xfdIG\xaa\x1c?\xd7)`W)\
+\xe7\x07d \xbayq\xd8RiC\x06\x87\xfcW\xe0\
+]\xff\x7f\x9f\xb0\x9f#\xf3\xd9\xab\xfb\xd8\x7f\xbd\xf6\xa4\
+\xbb\xd6\x1d\x04\x0c\x84\x8d\xf5\x9cj\x1aUaO\x84H\
+\x05\xe0\x107\xae\x0b\xe4\xfci\x93-\x81\x7f\x06~U\
+\x91\x04}G\xe6\xf6\xe6\x94-{s\xd8\xaa\x95\x80l\
+tV\xeapKm\xae\x90\xb2\x7f\x12&\x0a=\xd4&\
+\x92,\xba\xc8\x15\x93\x1b\xaa*\x94\xd1\xbb{\xe5,\x90\
+4\xffq8$\xac\xbd\xfeF\xd8\x12H\x8e\x87\xce\xac\
+\xeb\xe5o\xdd![#\x04\xe6Y\x09\xdc^7,\xf7\
+\xdd\xf3W\x09 \xe3\xec|%\x9f\x97\xe4[\xe5\xa7~\
+q\xfe<\xba\xef\xdb\xe7\x84\xb5\xdf\xfbl\xd8\x8a\xc4,\
+\x03\xc8Rs\xd6\xe2a\xdf\x00)O\x12<r\x8a;\
+\xbf\x1e\xd6^\x9f\x12\xd6\xfe\xff\x9ba\xa9\x06\xd2\xfc\xe1\
+a\x7fX{=o8wh\xef\xb3\xf7!a\xcb\xba\
+\x1e\xde\x1a\xd6\xfe\xfe\xd7\xc22\xf0o\xf3}\xe7\x86a\
+K\x00Y\x89@\x89\xeb$[\x9c\xe6o\xfb\xbd\xed\xe7\
+\x9a\xc5\xf5\xfd\xcd\xdc\xa21\xbc>li5\xaa\xc2Y\
+\xb6Z\x8c\x0fL\xb2\xbdOg\xc5\xf1j3\xf9`q\
+Q\xf4\xdc;\x90\xa3\xcf\xcd\x96\x82\x07\xa5\x9f\x9f\x89\xb2\
+\x82n\xfff\x22k\x04\x94H\x81o\x11\xb6jI\xb0\
+\xdf(LI\xf4R\x99r\x1e\xf1k\xac?\x09\x04\xa4\
+xZ}\xecW\xfc+\xeb\xcc~\xa4\xb5\x0a\x87\x80\x9e\
+\xee\x94g\xac\x8a\xb5\xf1\xf8\xdc\x84y\x8e}\xeeV\xb1\
+\xcf\xed\x9c\x1f\xb6\x14nv\x1e\x11\xb6p\x94l>\x9d\
+\xfb\xf3\x85\x12\xb1\xf2\xb8\xb0\xf6\xfa\x97aK\x05\xbby\
+\x05\x132ts\x81\xcd\xbe\xcd\xbe\x95\xec\xdcC3\xc1\
+\x94\xe7B!0\x9c\xb7\xf6O\xfb\xa6\xf5\x96\x89\xa6\x92\
+\xb7\xcd\x00s\xb8n\xd8\x8al/\xfd\xd2\xf1\xcda+\
+\xb2JjU\x10\x10\xc9-W\x09l~\x0f\x95\x9d|\
+\x9f\xcd\xdf\x86-\xcf\xb9H\x00\x0f\x0d[U\xb2%\x5c\
+\xb58\xd9\xdfS\x9e\x152i|U\xd8J&3\xcf\
+\x99b\xdb\x97p\x95\xf0\xc8\xf8\xafd\x84%Hp<\
+@\x92\xa4\x7f\x05a^\xe7\x9d\x96\x90T\xc3(\x99B\
+\xfb;\x7f\x8c\x9f!\xc1J&4\x0b\x0d\xc3#\x9b\x9d\
+\x9a\xf3\xe9\xd4U\x5cJ-)\x03\xfbJ4\xdd+l\
+\x85\x80\x11\xff\xdek\xb2\x85l?\xe3\x89\xcd\xa9aK\
+\x22b_\xb1}\xea\x0dP\x99\xc7\xca\xf9\xfeY\x06\x0b\
+\xb9\x87\x0cU\xbb\xec\xe9\x80@\x8aR\x03\xf9\xa5\xacD\
+\xca\xf0\xe8\xb95Q^9\xcb\x05\xd6@p\xd0\xf4.\
+\xeby\xc0j\xe8\x81\x90\xb7\xc9@A\x22bs\xf3\xcd\
+-6\xb7X\x12\x0b\xc3\xe3\xc2\xa6\x8dbf\xfd\xbd~\
+B\xa7\xf5\x8a\x18\xb0\xff6\xdee\xbc\xcbJG\xbd\xef\
+\xf1N\x07\xb5z9@4~7'\x029 \x88\x08\
+\x0e\xa6\x8d\xae\x97u;\x10\x1a=\xbf\xba\x7f\x99f=\
+\xfd\x1c\x98\x9e\xcd\x9ec\x00\xca\xe1\xe0\xe6\xf8s8\x05\
+\x1c\xbe\xf7\xda\xb7\x22\xf8r\x1f?)V\xf8y\xe2~\
+\xbft\xd0\xe7\xfb\x11\xf0,\xba\xf3\xb3Cf#9\xba\
+\x83\xec\xf72x}\xa5X\xa2\xc2\xef;\x88{9\xb7\
+\x8be\xa0\xe9}T\x04\xf5\x0c\x9f\xd0\xb1\xef\x0b\xd0]\
+\xaf\xc0\xfe\x82]\xa5\xdbxtdb\x1b\xe3u\x8d|\
+]\x10\x14\xf3\xfbs\xac\x05hX7\xfb\x0a\xa4q\xea\
+\xbf@\xf7\xb1\xd8\x22\xd5\x91\x81|{\xd8\x0a\xf1\x02\xf2\
+|\x8d\xdc\xb8\x8e\xefd\xac\xcc\x13\x81\x87u\xdc'V\
+ \x0d\xb2g\xbe2\x9ad!\xdd'G\xb4W\x05X\
+#M.\xb8\x9a\xdf\xbd\x8ce\x1f\xb0\xef\xdd\xddrR\
+\xef\x03\x02\xec\xfe\xb2\xf5\xa1zA\x05`\x10 \x12m\
+\xd6\x9b\xc0L\x22B@\xea`p}\xc8/\x93\xbcS\
+%\xb66\xec\x83\xc3\x16\xa8l\x91re\x806\x1e\x1f\
+\xb6b\xbd\xa5\xff\xcd\xa1p?\xbe\xbfi\xca\x1c]8\
+9\x05\x04\x00\x12`*\x8e\xd6\xb3y\xe2>z\xb2L\
+\xf7\xa5\x02\x7f\x5c\xa9\x06\xcc\x81\x81\xcc\xb6@\xa9\xe7\x04\
+ [&\xf0\xe6\xd0\xe3\xc2\xb8E\x92\xd5t\xc8\x81z\
+\xb5\xbf\xf4\x81\xbe\x80\xfd*\xd9*\x85c\xa5k\x99\xd9\
+\xdc(l\x15`A\xd4\xb8\x1f\xbd\xe4\xc6\x1d\x04\xd0}\
+\x9aO\x19@V\x0f\xb5\x80R \xb9$\x80\xe6uo\
+\x9eH \xf7\xadOO\x0e[\xad\x97.p\xd5\xcbX\
+\xad!\xe6\x1bG\xc6\xab\x0aL:\xf4*\xc0\x1c\xa8\xcd\
+\x1b\xc2V\xfb\xbd\x96\x07\xd7o\x9dI \xd8\xef\x13r\
+\x0a\xf2+\x10\xad\xc4E\x9e\xd3u\xbd\xd4hT\xda$\
+\x06p}\xa8\xc4p\x04U\xa6%\x18!2\x8c\xa3D\
+\x84^\xf2D\x0c \x93\xdb\x9c\x12\xb6\xb0V\x97\x1et\
+/K\xa9\x87?\x1d\xb8\xea\x11%\x13l=e\x00X\
+\xdf/$\x9e3\x92%\xcf\x97\xf1=y~r\xf8\x1f\
+9\xd9B\xb2%q\x97\x08\x1f\xe3X\xb2H'\x87-\
+\xe7V%\x06@s\xf3\xfd\xc6\xe4B\xa9V\x87\xc3w\
+\xef\x1f\x15\xd0\x9a\xcf\xf6\xabL\xe4\x16t\x1f\xc4_b\
+\xcb\xbc\xec\xce\x1d\x95\xc8\x15bp>\x7f\x14*\xec\x0f\
+\x12]\xf6}\xfe\x93J\x97\xe7\xa57>\xc9\xaa\xaa\xa5\
+\x83\x0a\x82\x9e}\x5c\x06\xe6\x83u`~K0?7\
+\x91\x17\xd6\x97\xdf\xc7u\x91z\xda-\x88\x9a[A\xcc\
+\x1f\x95/\xfe\x84\xf9\x99\x10\xe5\xf1\xfea\x0b\xf7\x80\x9e\
+\xf2\xf1\x90Y'{\xfc?s\xa1ix\xdf\xf0\xde\xe1\
+\xbdS\xe5s\x82\xc2\x16\x99\x17\xd9\xd6\x8f\xcc\x08\xd4\xe0\
+\xf0\x8f\xfdas\xc2|\xaelN\x9f\x03\x86\xcd\x8fg\
+\xb6\xff\xf1\xe6\xe3\xcd\xc6\x9b'\x82\xf5\xb9\xb9\x8fEK\
+\xc2\xf9a\xab\x96 \xaa\x09\xa0\xbbO\x1a\x9f<>9\
+\xcf\xe5\xf3\x97^\xf6\xe1\xa1a\xe9'\x1d\x92\x88\xc9k\
+/\x85\xa6\xed\xdf\x87-\x5c;\xc3\x07\xc3\x96\xfb\xdc\xff\
+\xafa\xcd-|f\xd8\xaaw\xf8\xac\xb9uqxI\
+\xb3\x97&\x19\xe0qK@\xb1=\xa3\xd9\xe9\x0brm\
+\xe7\xe3a\xed\xfd\xbe\x11\xd6^\x8f\xdb\x7f\xc5\xfd\xed<\
+\x18.6\x5ct\xb8\xd8\xa2\x1aP\xe4\xa3\x09\x05&\x13\
+\xb6\xef.a\x0bg\xc7\xf0\xe2f/Z\xed\x8f\xe6[\
+\xee\xb7\xc3\x19\xc3\xe9\xc3\xe9\x0b\x82r\xbc\xf7\xec_\xeb\
+i\xaf\x16*\x01t&\xbc\xb5:\xecy\x5crC\xe8\
+\xb9\xcf\x02\xe0&\x0b0\x13\xe7\xc1}W\x88b\xeb\xe6\
+\xdd\x93-\x09\x1c\xa4\xe5\xc8\xfb\x92\xdd}\xfcl\xb6\x0a\
+d\x0bN\xf9w\x99\xa8\x1b\x1f\x1a\xb6*<jaJ\
+\xc4B\xbd\x1f\xce\x01\x05\x19\xeb![\x07j\x7f\xb3\x9f\
+\x0b\xbc_\x95\x01\xd8\x0fr\x1d\xf1\xa3\xee\xd8v\x8d;\
+N\xac\xec\x17\x0aV\xf6\xaa\xa0[\x9foM\xa4\xcd\x95\
+\x92\xa44\x13\xdc-\xda\xb9y\xc4;S\xa2\xf4\xe8\x15\
+WK&\x00&\xa4\xcb?\xac\xfc\x9ag\x84\xadZ%\
+r?+?\xc09D\xb5C\x8bD\xfa=\xc3\xdb\xc3\
+V\xa4\xad\x0a\xbe\xc8W\x15p\x12\x09Pjo\x02|\
+l\xf7*\xe1X\xf0_\x1c\xb6R\x9dC\x1ey\xef\xb0\
+\xd5\xf3\xd5\xb2\x9a-\x0f\x9b?\x0e[\xcd\x17\xad\xa0Z\
+\xbb\xf2\x1c\x94p\xf0\xf9\x10?5\xff3\x01Wq_\
+r\xeb \xd5\xab\xe7\xc9/\xcb@_+O\x15\xb6\xb5\
+,A\xe0\x0a\xf4\x9d\xa3\xe6\x89s\x9c\xea\x83sC\xa2\
+\x1d\xc7T\x5c\xc7\xfdV\xa4\xdc\x89\x5c\xaf\xfd(\xc2\xfa\
+{\xae\xd4.\x14b\xd3\xcf\x1b\x7f-lu\xbfT\x5c\
+ /\xf8U\x99\xf0\xd97\xfcE\xd8\xc4:9\xf7\xba\
+ee^&\x0b\x17@\x91\xebX\x98\xb9a\x8f_H\
+\x87\xc3\x03\xe3\xe8\xea\x99QA\xa7\x02\xe0`\xd1\x13)\
+@\xd0\x1b\xe3`\xe1P\xe8=rpx oH\xb2\
+\x90g\xcc\x99\xb6\xe1]a\xab\x07\x97,\xd6\xedf\xa7\
+\x83p<:lE\x22\xf2\xb1\x84\x92p@{\x96X\
+\x15\xa2d\xbb\xac\xde\x9bk\x8d\xd7\x1c\xaf\xb9\xeai\xe4\
+P\xaa\xf0z\xed\x03\x7f\x99e?_z\xd4wC\xfd\
+9~\x9d\x0c\x5c9\x8e\xfe\x7f\x7f\xd7\xcb\xefU@\xe1\
+}{\x997\x1b9\xc7I\xc0xHUn\xe7\x00N\
+\x85\x93c\xba\xdc\xdf.\xb6\xf9\xf1\xab\xc9\xfe\x9e\x07m\
+=\xcf\xa3\xba\x1et\xe3\xe0}\xfaq\xf3\x5c{\x08\xba\
+@\xe8\x12]\x02`\xbb\xbb\x85\xa2\x12\x14\xfe\xbf'7\
+\xe3H\xf5\x01\xad\xe7\xbe\xb7\x90\x09\xf38H<\xfc\x22\
+\xf24\xdf\x9b\xef\x1d\xe9S\x8d\xa3\xcf\xed\x13?\xae\x9b\
+\xc3\xe8\xc0@\xe2\x22s\x9e\x19\xe9\xe8m\x1co\xb9\xf4\
+\x94\x15\xc4\xd7\xe7\x8f\xf9\xbc\x91\xf0y\xfe\x0e\xcc\x0bu\
+\x89\x17\x01~&\x08\xc6\x1f\x86\xadz\xd2\xad7\xf3\xc0\
+|4\x1e\xc7\x14\xc2bw\x8b\x81\xf1\xf5<.U\x9c\
+\x01\xf38H4\x19\xbf\x1e\xa2\xad\xf5\x81\x83\xae\x85h\
+\x7f\xce\x7f\xe4\x8c\x1c2\x07\xb4yv\xad\x16n\x5c+\
+\x03\xf1c\xa6\x83sV\xe1p0\xffcB\xa9|\x8e\
+q\x14x\x99/\xe9\xb0T\x0f\xb0\x0ab&\xe8@\xd6\
+*\x100\x8f\x04\xda\xc6C\xc2\x02\xd4Yo\xb7J\xaa\
+\xc4\xd5\x05;\x92\xcf>\x81g\xbc$r\x1c\xdc\x0b\x19\
+\xe3\xbc\x8feE\xba*\x97\x02\xbd\x9el\xd0\xf8\xfef\
+\xd7\xeb\x0f\xba\x8e}_o\xb3q\xe9\x10\x06\x95`\xe0\
+P@\x1c\x08\x08 \xc9\x92k\xa5\xc6A\x82F\xa2B\
+\x02H\xe5\x05\x843+\x22\x05\x1d\xf7~\xa0\xdf\x1c\xc3\
+\x85\x0bd7Y\xa2y\xdb#\xa3\xfa\xfd\xd2z\x10p\
+\xe6\xf9T\x01\x0d\x87CK\x80\xfd\x82,T&\xa6\x8b\
+\xab\xc3\xc1\xee<R\x11\xe2\x18\xd1iOhp\xed\x03\
+\x02%\x15\x99\xdb\x87\xad\xa0\x8f\xf6\xb7\x84\xa6\xd6\xd7\xb9\
+%c;\x05\x5c\xc5\xea\x9c$o\x95@\x91\xc0\xe8\xb9\
+\x19\xb2BY\xfa\xe7\xf6?\x151\xac\xf5\xd9\x1b\x8f\x1c\
+\x18\x19^\x91t\xe9\xadO\x99\xbf\x92\xcf\xfbd\xd8\xaa\
+\x92\x97\x5c1\x95\xe8\xe6\xd0\x98\xaf]K@q\x93\xdc\
+:[\x17\xee0#\x1d&\x08\xeb\xdf\xad\x0a\x16\xd9K\
+]\xbd\x90*\x81*\x9d\x8f\x0b\xfb9-\x85\xb8\x0dT\
+\xfc$\xf2\xde2\xd9R\x11N2\xa7\xda\x97R\xf7\x9c\
+\x5c\xb2\x82A\xed\xf3\x0a#*\xd5\xd9\xbb\x5c\xb2\x81\x89\
+\xac)D\x08\x88'\xd6t\xeb\x9b\xbf\x01\xf1d\xde:\
+\xcf\xb5\x86\xa4\xaex\x15Z\xb4\x18\xe6\xfe\xbe\xbdt\xd8\
+J=B\x020\xd9\xab\xb1\xd9\x17\x8bvrGT/\
+\xad\x0a\x98\xca\x98\xfd\xe4\x01a\xab\xf3\x11R\x06\xb7S\
+\xca\x01\xd6~)\x10\x00\x9dE\xae\x1c*\x00G-\x15\
+<\xf2]\xc3U\x87\xab\x0cW\x99X\xd5\xdbW\xfb\xff\
+?\x0c[\x02\xb7R\xaf\xd2\xf2\x97\x09\xf9\xa0\xb6\x9e*\
+\xda\x1f\x0dk\xbfw\xc4xd\xa8\x0c\x08d&D\xe8\
+\x8bV\xad\x9eI\x16\xb7\xbdj\xd8J\xeeO\xe2(\x9e\
+\xdb]W2m*n\xfc\xca\xae\x95\xa4Z>r\x1e\
+\x15d8+\xd8\xfb\xcf\x0dk\xafW\x09k\xf7w\xf1\
+\xb0%`\x1a~\xdc\xac\xbd\xcf\xce\xdb\x9a\xbd}J\x80\
+4k\xdb\xcf\xd7\xc2\x16\xff(\xc4\xe0B\x0en\xf8\xa5\
+\xb0\xf6\xfb\xcfm\xf6\xbc\xf6\xfa\xb8fm\x1e\x0d\xb7\x0b\
+[\xed\xcf*\x93\xe9Wn\x8fm\xd6\xce\xc9}\xa75\
+\x0b5\x83\x83\x9b\xb5}r\xe7\x91a\xabu\xfc\xbd\xb0\
+\x15K\xba\x9e\xf0\xe4p@\xea8\xfedVI\x19?\
+>\x93\xad\xa9@\x8f\x7f\x9c\xf1\x84\xc0Hb\xe0\xd5s\
+\x05\xbez\xd2s\x1f(\x0e\x03\x90\xee\x9b\x86M$\xdc\
+\x93\x1f^\x88d\x091\xfb[\xfaI\x854\xb6\x0f\xab\
+\xec\xe6:\xd1\xbb\xafE(f\xc74?@\xebq\x0a\
+d\x01\xb3\xf6]~Y\xb6dT<#~\xc2A\xf0\
+\xa7\x99\xb8\xe3g\xa7?\x05Q<\xfc[\xd8\x8a[\xe1\
+Va\xabV\x98\x1b\xceH\x9d\xcd#\xe6B\xe8\xf6\xdf\
+\x9b}oJ\xbc\xce\x9c\x1e)S\xb9y\xc8\xac\xbe\xa6\
+\x05\xa5\x12\xb8\xfc\x07\xaa.\x10\x14\xe4\xea$~\xdd\x17\
+\xf5\x15H\x02\xeb\x12WB\xca\xdd\xd5\xef%4\xbe\xf6\
+\x07\xfe\x8f\xf3&\x13'ER\xf7\xea\xb0\xa5\xa5B\xe2\
+\xac\x02U\x09\x95L\xc4T!\x8c\xea\x02\x15\x07\x89\x1a\
+\xadO\xc9\xfdU\x055Hs\xfe)d\x9c}\xdby\
+\x9a\xe4}\xf5\xbc\xccG\x89%\x89g~\xa0VA\x09\
+\xa7\xdc/\x90jN$\x9bWZ\xfc\x08H\x81\xbao\
+-\xbe\xea\x80\x7f\x10\xb6B\xc8gKI\xc5{\x89\x94\
+\x1a\x9e\x19\xb6\x1a\x9f\xf4?$f\xca\x9fr\x9e\xbb\x0f\
+\x09\xdc\xf4\xef*\xc1\x91\xe3\xb9O\x86\x8d^\xe6\xe6\x8c\
+\xb0\x05\xea\x04\x19\xb0}\xf5\xf65\xdb\xd7,z\xe96\
+\xd0\xe1O\xc3\x16H\x9a\x8c~\xe9u~ \x11\x042\
+D\x09\xd5\xd8\x1e\x17\xb6\xb0\x14\x0e\xaf\x08[\x91\x16\x91\
+}Ih]\x05V\x90\x03\xff\x94z\xce)\x8bQ\xba\
+\x8e\xb7I\xa8U\x06\xf8\xe3c\x93\xc4#\xa1n\xe58\
+\x0a\x18\x12*^:\xdd\x1ci,\xfey\x80M\xe9\x86\
+\xd7\xa7N\xec\xe5~\x0e\xdb\xbd\x09\xcf\xd1\xf4\xbd\x05\xe8\
+\xc0\xee\xd9\xf39\x0a&j\xcf\xbe\xdf\xb3\xa1\xf7$\x86\
+\xde\xc7\xc1\x83<NE\xb6\x97\xa5\xea\x02yl\xd7\xe5\
+\xb8\xf6\xf2a^/T\x95\xf2\xf99\x08H\xf6\x1f\xc0\
+\xf2>__\x7f\x1f\xfd\xab\xfb6.\xae\xf3\x17\x91\xc4\
+-\xad\x0a\xf3\xebA]\xcbC\xaf\x12`\xfc{V\xff\
+\xee\xf7\x0e \xf9\x13H[P\x1cA\xa4\x84}\xa2\xa8\
+\x0f\xf0\xfb\xfb0\xde\xc5f\xd5\xc99z?\x891-\
+\x00\x09\xbdE\x86Y:\xdb\xc8}\xde?\xbeo|\xdf\
+\xaa%\xa2\x83\xd6\xe3\x9a\xd8\x5c:\xa1\xd1\xc6\xfd\xdcL\
+\x04\x99'\x1cL\x09\x9dt\xd4\x8a#\x02\xa9\xa2\x00C\
+\x22Ib\xa1O8m\xf3\xfb^\xd5@@\xe1\xcbu\
+\xee/\x04\xcd\xec\x90\xa8\xd4sl{\xbd{\xf3A\xc5\
+\xcbF\xa7w\xf7:\x9b\xebNPW\xac\xac T\x02\
+fH\xa2\xcc\xc4VO\xb9\xc0\xb4oe\xd0*\xc4Q\
+\x7fI\xd8\xea9q\xfc\xba\x16\x8b\xca\xb4\x0a\x9cA\x93\
+qQ\xc8\xc8r\x14\x7f\xd4A\xd4\xb1ks\xb4\x1c\xd4\
+k\xf6\xe5\x8b\xaf\x02^\x95x\x09\x9c_\xc9\x80\xfc\xa4\
+\xfc;\x07\xb3\x0a\xfeU\xbb\xd6\x00=\xd6*\x8f \xff\
+\x0e\x14\x09\x1f-b=\xa7\x80\xc4@\xdf\x8a\xd1sb\
+X\x17\xb8\x0c \x07\x5c\x9f\xfd\x97\x0a\x0b\xb232D\
+zg}\x0e$\x83\xca\xaa\xf1\xe0\x10\xf6\xbd\xd2\xd6k\
+\xbf.%\x80$z\xbe?\xcb\xb8\x16\xd9)\xc7\xd9:\
+8\xa8T.f\xf9\xa0\xe4\x94)9\x22\x89\x1a\x09\x82\
+\x84\xd2r \xaa\xe2*`\xcf\x84@}\x81\xfa\x99W\
+\x02c\x01\xa0\xf1\xf1|\xbaD\xe2\xe6\x8da\x8bLa\
+\xc9\xf7\xea1\xec\xa0\xc8\x95\x80!c$\x81\x91-x\
+\xa1^\x1d\xfa\xd5\xb8\x016\xff-l\xd5\xcb\xab\xd2g\
+\x1e@d\xe8\xa5\xd6\x0b\xeb\xf9\xfb^ \x90\xbcu\
+& \xb4Z\xb9N\x09*\x09)\x8e\xd9\x036\xf7\x9f\
+\x02O\xcfS\xeb\xa0J8Y%\x15\xf6\x94\xdf*\xee\
+\x07\x09$\xeb\x9cz\x86\xe7,P}j\xd8*az\
+\xbf\xb0U\x82\xc8\xba4\x7f\xcd?\xf3\x13\x92\x11ya\
+B\xc4\x03\xbf\x18\x15\xbd\xd2\xd5F\x92\xa9\xa2\x05:n\
+\xdf\xf3%1\x06\x19\x94\x0eq\xc9A\xea\xfd<.\x11\
+jZ\xbe$h \x07!@\xb56I@A\xea\x08\
+\x14\x05V\x02\x99?\x9a\x1d\xef\x16vO2V\xc3\x1b\
+\xc2\xda\xf6\xff\xe2\xb0i~O\xd0\xd6\xf1\xd19\xde\xd9\
+\xe3?>!+\xf6\xf6{\x89\x8b\xbfN\xa4\x04\xc7\xf9\
+\x90\x19\x91\xd5\xd6\xca4\xfe;\x7f\xb8\xf3\xa0\x9d\x07\xad\
+\x02\xe8T\xc5(\xae\x11\xfb\xb0}\xf5\xb7\xf3\xe7\xc9\x05\
+$\xa0\x1b\xef:C\xa7\xdb\xe8O\x15\xc8*\x80\xdd4\
+lQ/\xb0_hq\x9c\x10=\x81 \xd9\x1f\xb6\xf4\
+`\x97\x1a\x15\xff7\xb9\xb36O\x0b[\xf6i\xd0|\
+\x95\xcf\xe1\xbe\xc3\xfd\x866\x7f\xf6?|\xff\xc3\xf6\xb7\
+q\xdc\xff\x9efm\x1f\x18~-,\xb9'\x9e\x9d\x01\
+|\xdbO\x86\xe7\x84\xb5\xf1\xbdZ\xd8\xa2b\x80\xdb\xa0\
+*\xb6\xcf\x08[H\xad\x87\x0b\x84\xadH\xf4n75\
+y\xcd\xf7w\xd0j\xbeh)\x89\xa7\xbe\xe2~\xb8\xc0\
+\xad\xc2\x16\xb5\x82\xfd_i\xf6\xe5\xf4_\xf6.\xc8\xae\
+\xe2&xiXr\xe8<\xbc}\x7f\xcd\xe1W\x86\x16\
+\xa8\x0f\xff\xab\xd9_N\x81\xd8\xdcj#\xc1\xf1\xfa\xe1\
+u\xc3\xeb\xa6\xc0nJ\xa8\xef\xf9\xab\xb9\x108\xfe\xe1\
+\xf8\xa0\xf1A+\x9d\xf3T{\xa8\x9e{\xe4iY\xf1\
+\xac\xf3\xb8\x83XW\x01)\xcf\xb3\xea\xe5\x075'\xc3\
+F\xc7]\xc1\xd3>\x96\x01Th\xff\x84\xfaO\xb1\xb9\
+''X\xb5pe%Xa\xa0d\xd5%\xf2$\xc4\
+\x9c\xa3\x10B7\x0f[\xa9d\xe4>\xb6s\xc7\xb0$\
+\x99l\x01\xff\xf6y\xdb\xe7o\x9f?\x91\x94\x9e\x16$\
+\xa5Z\x00J\xaeO@k\xffr\x9eJ\xd4\xe7\xfc\xb6\
+\xff\x15\xb7FOf\x98\xe7Z%:%\xb8\xec?\xf6\
+\x03\x89a\x15\xefL\x0cO\xa4\x9a\xdfZ\xed\xbfy~\
+A\x1e\x8c\xaf\x08k\xaf\xb7\x0d[\xb5\x1c\xe4\xfeS-\
+7\xce9\xfe\x1brUd\x8d\xc9\xd1Td}\xe4k\
+U\xe6\x131e\xdf\xad\xe7\x22 \xc6\x05\x93\x89\xa1I\
+\xf5\xe2\x03\x07\x92Tno\x11\xb6\xda\xb73\x01U\xa4\
+\xf0\xe6%\xf5\x0b*\x00\xc9-\xa0%\xc2\xfeN\x85\xa8\
+\xfc\xfeDLV\x8b\x06\xa8\xbfy\xf5\x86\xc9j\x9d\x0e\
+\x8f\x09k\xbf\x7f\xc1\xb0U\xe2%\x13\x92Z\xe8\xc4\xad\
+Z\xd0\x86\x7f\x0fk\x7f\xf7\xddD\xa6\xe6\xfe\xb6\xaf\x16\
+\x90\x83\xf9\x83\x09\xed\xf8B\xd8\x04y\x98{\xde\xae5\
+\xf7p\x0e\x87\x0d\x97\x1a.\xb5\x90C\xb4A\x992\x17\
+\xa5\xfbKn\xe1\xb5In\x90d@\xb5\xd1\xdc%\x1d\
+\x07\x0e\xa2J\xe3i)\x9bq\xed\xac\xb0\xbf9e\x86\
+\xd2A\xe0`!\xadk\x1by\xb3%3U\xac\xcd \
+\xe8\x02\x1c\xad\x0d_H\xc8\x07\x07\x92c\x81\xd4\x8eC\
+\xd7W&S\x06\xa8&H\xca\x88\x1c@Z\xd5\x07\xfe\
+\x1c\x00\xff\xcf\x11\x15\xf0\x08\xe8\x05R\x16\x96\xeb\xe2\x80\
+X\x08^{\xf9>Pn\xba\x91\x97\xe9\x02\xbe>0\
+\xed\xc9\x02\x0fJ\xc7\x08d\xf2\x8a\x19@\xe8\xb9w\x9d\
+\x1ceP|\x0e\xbc\xc4A\x1f(x\xbe\xc7T\x00\xbe\
+\x9b\xdc/9\x1a\x9a3>\x07\xda\x17\xe8\x10\x01\xae\xb3\
+oi8\xb8\x12\x10\xb3c\xbc\xb4\x08\xecN\x10,\x95\
+\xfa\x99\xd5\x9a:\xc1R\xd9\x9f\xef\xefJE\xb66;\
+\x9c\x17\xcf\xbf\x830\x108^\xbe\xcb\xb0\x09\xb8Tr\
+\xfb^\xf7.\x90\xab\xca_\x92\x8b\x94c\x0a\x82\xfa_\
+\xc2\x96\x8aR\xf5R\x09\x80U\x8a9\xcc\x1f\xcc\x84A\
+\x9fhr\xdfy}\xa3\x0a\xd7Uw\xb7\x8e\xd4k\x8f\
+\x14\x90\x18\xf1\x5c{Vz\xf3\xb9o\xe9X\x12K\xf3\
+s\xf3<\x8d\x8b\xc0L\xe2\x06\xe7B\x9f\x100n\x12\
+Z?\xad\x0a\xee\xbc>\xcdG\x19P=\xe5~\x8fC\
+\xaf\x92\x9c\x07X\x05\xdeH.\xb5\xb8x^=\x0b\xbf\
+\x80Oe4\xe7O\x91\xad\xf8\xbd\xdc\xa0+#\x9d\x99\
+\xee\x22m\xd1\x8b\xaa\xe2\xd7#' 3\xbe\x93\xcf\xf5\
+CYiV)8/lE2\xd6\x93\x80\x19\xdf\x85\
+\xab\x01\xb9\xe6\x8c\xbc\xe8\xd4\x07\x0a\xa9C\x9f\xd6\xbc?\
+\xae#\xfd\xf4\xbc\xfd\x5c\x05\xfe\xb2\x89\xa8P)\x17\x88\
+K\xc4\xf4-\x03\xae\xcb\xfc\xb2\xdfw2\x94+r\xcd\
+]\xaa\x07EFGV\x8f\x83\xcf\xb1\x91\x18CJ\xb8\
+p(\xcc\xaf\x1c@\xfb\xfa\xd2\xba4\x8f\x9f\xfdQ\xe0\
+\x93\x81\xc4\xe6\xaea+\xd2(\x07\xb7}Z\xe2\x15\x92\
+J+\x86D\x12d\x8e\xd6\x01\x90g\xac\xc3\x99\xf1G\
+\xc2$\x81Q\xec\xc4Z\x1d\xf4\x98[w\xe6\x1d\xc4\x85\
+\xf9\x0b\xd2\xe8:\x04\x88\x1ca\xfa\xee \xe1\x1c\x05\x01\
+z\xd7\xa3\xce\xe1\xadD\x96\xf5\x84\xcb!\xd9\xf5\xf7|\
+s\xcf\xb7&\x08y\xc8\x03_p\x95\xb8S\xf9M\xb9\
+%\xac\xcf\x95\x88\x17\xb8\xd9\x07=\xf7\x94\xf3\xad\xeb\x96\
+\x001\xce8\x17\xfc\xbe\xc0\x15\x021+\xe5%\xfb\xe5\
+\xef\x8cG\x9e+\x15\x80\xf3K\xbe:\xab\x0c\x15\xf9\xa0\
+y\xa3\xe7>\xa1\xdb\xc5v\xadEA\x22f\x91\x81\x9d\
+\x13\x13\xf7\x0e[Z\xbbJV\xef\x063\xeb}\xcd?\
+\x09\x03\x15\xafd\x8dFRV\x89\x0a\xeb\xcbz\xc4\xad\
+a\x1c\x15J x\x12R\xbc9'\x0b2*w\x02\
+\xf9\x84H\x1f\x80\xe8r~\x187\xe4`\xfc\x8f,\x84\
+T\xe5\xfe\xcc\xec\x89N\xc8\xf4\xf0\x88\xb0\xb6\xbc\xbf\x12\
+6\x91h\xcd\x81\xc7\xb3fdF\x9b\xf3\xf3\xef\x93k\
+\xfb_\xa9\xd2\x94\xf7Q\x15\xbe\x5cG\xc3Y\xc3\xd7\x86\
+\xaf\xad\x00\x94\xb8!\x90@R=0N\xc8\xc2|I\
+\x8c\x81@?t\xee-n\x81\xe7\x9c\xb0\xb8\xd3\xf6\xb7\
+\xb7\xbf\x9d--\x0fJ\xff\xe0\xb0Uk\xc1\xc1S\xc9\
+k\xcf&\xfd\x95\xed\x83\xc2\xda\xf7\x17\x09[ZLJ\
+\xf60\xb996\x9f\x0b[X\xe5!Tw\x8e\x0a[\
+\x02\xd1\x9d\xdb\xec\xfc\xd6\xcem\xda\xeb=\xc3\xda\xef\xfd\
+\xe7\xf0\xb3\xa1\x9d\x7f\xc3?\x86\xb5\xd7\xbb\x0fw\x1b\xee\
+>\xed\x9b!\x9c\xbdg{\xf7\xb0\x15\xd7P\xa4a\xfe\
+h\x09\xbc\x87/5\xfbr\xea\xcf\xefYUV\x83\xf2\
+\xec\x15+\x04\x93}4{\xab\x91\xfc\x8d\xe7\x87\xb5\xeb\
+\xf9\x5cX\xfb\xbc\x9f\x86-\xf2\xb8{_\x106\xb1\xd5\
+?:\x12_\xc3k\x9a\xbd:\xa1\xca!w\xf8\xb7a\
+\xed\xe7-\xac\x0f\xce\x80\xed\x09a\xed\xfdN\x0d\x9b\x10\
+t\xe7M\x08:$\xbbI\x82;~i\xde_\xab\xf5\
+\xcf>\xea<q^\xea)O\x16\xf8\xa0\x10\x0e\x12\xe1\
+\x10\xe5\x0eY\xee\xe1\xf8\xb0\xa5\x85b\xf3\xa4\xb0\x15{\
+\xbf\x96\x0e\xfe\x0a.\x1c\xd0u\xc8\x98\x5c\xbf\xa0\xf4\xfe\
+_\xc1\xa0\x85\xad3\xf9\xf8\xf3\xe7y\xe8~\xaa\xd0)\
+\x81\x8b\xd4\xdc9\xe0\x9c\xb3_\xe7\xfbJ\xf0Tko\
+\xca\xc1\xee\xfcRX\x1b\xc7Wn_\xb5\x0d\xb5\x87{\
+\x87\xad\x10\xd8Y\x81/\x84r\xb6\xa0\x95\xdf\x99P\xfd\
+\xe2*\xe0\x879\xb7U\x9e\xc9[j\xa5R1Fr\
+\xee\xab'\x81N\x84\x93B\xec\xf8\xb1v=\x1f[\xdd\
+\x1f\xd2s\xa4\x91\x10\x16W\x0c[!\x0d \x04\xb5\xb4\
+iIP\x902Oq\x99\x90\xeb\xe57\x8b\x17$&\
+p\x04\x91\x19\xcc\xfd\xba\x90E8\x01\xb4<\xe4\xf9\xe8\
+\xba\xb4\x88\x0c\xef\x08[q\xe58\xffR\xed\xa0\xd8\xf9\
+SVq\xbcLX{\xbdZ\xd8\x92p\xd7Z:\xfe\
+\x9f\xb0\x95Z\xc3\xa3\xc3V\xad\x19\xfc\x02\xdf\x9f1\xd9\
+\xa2.\x96\x09\xfd\xf1=a\xed\xfa\x1e\x15\xb6 \x9e\xc6\
+\xcf\x87\xad\x10e9\x8e\x85\xf42n\x89\xa0\xd9W=\
+\x5c\x060\x0f\xde\x92\xc3x^\xf6\xc0n\xb3w\xe2\xed\
+Y\x11Gz\xe6 |\xc2\x0c\xd5\x1a\xdf5\xdf`\xe9\
+L\xaa\x5cd%\xaa2P \x8egg\x8f%\xf2\x17\
+\x0e\xda+\xe7\x03\xab*+z\x83\xf3\xc6k\xa1\x09\x14\
+\xf2\x01\x9a\xd86\x86\xcd!3;\xfc\xf8\xb3\xb0)\x80\
+\x9a+\x15*\xd9\x1c9\x81\x87q0P\xc8\xfe\x9e\x96\
+r\x1a\x1cI\x07\xfe\x02I\xdf-wg|.\x9b\x81\
+\xa7\x03\x96\x03\xdfC\xf4;\x19\xbf\x82dc\x81\x97Q\
+S\xa9\x12\x98z\x1f\xba\xa9z\x16\xe9\xd9\xf6\x88\x81\xbe\
+\x12w\x81\x8e\x0b\xe0g\x1d\x1b;\xf6~\xbf/\xe0\xe0\
+\xc0\x18?\xf7\x9f\x08\x91r\xdc:\xc8r\x05\x96W(\
+Y\xb1\xb9\x82qdAw\xe7\xf1\x95\x90\x11`v\x88\
+\x86\xe6n6[\x1d\x10}\xe5\xb6\xeb\xad<\xa0%`\
+Q\x17\x98\x13\x13*)\xc6\xd5\xfdq\x88\xfc\x1d]y\
+\x89\x16\xf7'\xa0\xceyT\x9c\x11z\x84d\xaes^\
+\xd6\xbc\xcd\x80\xb8z\xd1d\x12e*9\xba\x9fJ\xe8\
+QB\x1c\x0f\xa8\xb4r\xfc9\xa4*\xf8\xe6\xe9\xb5\xd3\
+\x81T\x19G\x82\xd2\x93H\x82X\x1f\x9b\x95]\x01\x87\
+J\xaf\xf5\xec\xf3\xc9\xc7\xf9;?\xbfH\xd7J\xd2W\
+\xac\xfb\x16\x93\x85\x8bb7i[\x9f\x10\xfaf:\xb0\
+\x027\x0e\x1e\x87\xd5\xbcR\xd1Fv\xa5\x82\xc8\xe1\xf6\
+\xa5b `U\xf9\xd4\x93~\xdb\xec5\x97Q\xd6\x03\
+\xf6\x9e\x84\x00\xfeM\xb2\xb1\x83\x84zMh^\x91\xab\
+z.\xae\xdb\xf3\xefI!%E\xf4l\xab\xd4\xa9\xc8\
+\x09\xe8;\x95\x86\x22\xe3t\xfdH2\xcd\x0f\xf3\xdb<\
+\xe1\x88\xf4d\xa3=gD\xdf\xe3/\x10\xe9\x112\xd6\
+\x8d\xc0\x5c\x8b\x81y\xd3\xa9\x18\x1c o\xd8\x7f\xbe\xfb\
+\xb3~\xed\x93\x9e\x97\x04\x84@\x18\xf7\x80\xc4\x85\xfb\xec\
+HT+ag]\xe3^\xd1;\x8f\xecKE;\xbf\
+\xaf^r\x15P\xfb\xb5\xca@B\xeb\x0a\xaa.\x81\x84\
+\x15\x1f9\xa4\x00\x15\xf9Q\xca\x12V\x22\xde}\xf5\xe3\
+\x81\x0c7\x03\x9c\xda\xdf\xcd\x1b\xfb\x9d\xf5\x9a-u\xe3\
+\x0d\xc3\x16\x12\xa3\x92A\x14\xe8\xda\xaf\xfe5[\xb9p\
+c\xe8\xd1\x7fa\x9b\xef/\x5cz\x16+1B6\xef\
+A\x01FM=\xed\xc7\xae\x1c9=\xc6H\x992\x81\
+R\xac\xc5\xe9\xc0\x96<cB\xac\xab\x12\xa6'\x12\x22\
+E\xe2\xc5\x97\xf1U\xf1\xb2\x7fe\xc0\xadB\x7f@\xab\
+\x8e\xf9\xab\x92O\x0f\x9d\x83\x99\xac\xd5\xe5@ZwH\
+\xf6\xe8BCrh\x99\x10\xa0 \x13\x04\x99\xfe`\xd8\
+\xaa\xa2o\x1f2\x9f\xfd\x9d\x96\xa3TU*\x12\xab\xac\
+\x1c\x19\xc7\x9a\xefZ\x1a\xc8AB\x5c\xe4~#QY\
+\xa4\x84\xd6\x1d\xe4T\x07\x01?\xa0\xd2\xaf\xe2\x86\x0cL\
+\x00\xa1\x17\xd5\xfc\xbcm\x8e\x93\xc4\xb1J#\xf9e\xc8\
+\xa7t\x5c\x87o\x86M\x95\xdd\x19\x82\x8f\xf5[\xcb\x1b\
+\xff&\xf7\xf5\x16\xfe\x9f5\x9c\xb5\xe2nzy\xd8R\
+\x81\xafu\xce\x0f\xea\x91>?\xcb\xf9\x9d\xf2YE\xe6\
+\xfc\xfalq\xfdqB\xd5\xa35\xe0\x88\xe9\xfb\x1fM\
+\x95\xec\xac\xc4\x0b\xb4\xb7\xbf\x1b\x96\x89\x94W\xae\x0aR\
+T\x14\x12)\xb7yM\xd8R\x09\x1dN\x0ek\x8f\xf9\
+\xd2am\xb9\xeek\xd6\xce\xbb\xe1\x87\xcdZ\xa0\xbb\xf3\
+\x93\xb0\xf6zR\x0b\xf4N\x9a*\xe6\xd7\x9c*\xe6\xd9\
+\x0a\xd0\xc2\xaf\xbbD\x00\xb6\xbdx\xd8\xd4J0\xcb\xf3\
+\x81\x0a\xc7n\x12\x01\xe0\x9d\x9b\xb5\xeb\x1bn\x19\xb6\x82\
+\xfcKL\x1f:\xb1\x17-\xfbZ&\xc4\xb6\xf7\x09[\
+\x10]\xc3\xdb\xe6\x9e\xef\xe1\x92a\x89\x0c\x0a\xae\x81\x8b\
+\x86--\xc0\x9b\x977k\xeb`\xdf\xa7\xc2\x16\xff{\
+x@\xb36O\x87\xc76k\xebx\xe7\xeb;g\xef\
+\x9c=\xcd\x9b\x99\xa3\x84\x0e\xbb\x04\xd7u\xe7\x80n|\
+q`2\xda\xdf\x9d\xda\x02\x9aSS\xf7\xfd\xd4\xa9\xf5\
+\xf17\xc7\xdf\x9c\x10{\x93?\x15\xb8\x82)\xae\xa0\x1e\
+\x90\x05\x95\x8a\x072\xf0\x84(\xaeD\x0e\x84\x8f\xf3\x84\
+<f&r\x04b\xb5\xff:\x9f\xf8\x15o\x9d\x0b\x92\
+\x0a\x8fm\x8f\x99\x12\xffZa\xaar}\xd7\x84\xbc\x7f\
+d^'\xa5\x92@\xee\xd0\xba\xef\xb8c\xac\xeb\xe1\xd8\
+\xb0%\x81\x84Ls\xe7\xdb;\xdf\xdai\xf3i\xfb\xc0\
+\xed)\xdbSVr\xe77\xca\x9e\xef\x84\x92\x17\x09\xa1\
+un\x1dS\x01@\xa6\x07:o\x7fN\xd5\x82\xcd\xeb\
+\xc2V\xd0\xff}so~\xc9&\xa6\xaaY\x15({\
+\xae\x93\xc7\xedy\xfc\x84\x80K\xc8=9\xbej\xa1\x13\
+\xf8&\xc9_A\xf5\xb5T\x08\x90\xbd\x7f\xb2\xf5CP\
+\x14b\x83\x9f\xb9\xb7\xe3T\xb2/A\x82!\xf7\xcb\xf3\
+{\xfb;aK\x22l<(lEj\x98\x89\xea\xe1\
+\xb4\xb0\x85|\x97\xac\xa9Dg\xc9\xe4jq\xc8\x84q\
+\xcdC\xfb\xb1\x04u\xb6\x14h\xa1\xa9\x16@\x85\x9d<\
+\xf7\xa6\xc4\xd9\xebV\xfbm\xfa\x0f\xc3\x1b\xc3V\xfb\x1b\
+\x04\x83D\xe9\xa7\x86Y\xf6T\x8b\x87V\xb3'\x86\xad\
+\x12=\x12\xf0\x19\xf7\xec+9$,\xae\xc7V\x85l\
+\xaeD\xeb\xcdOH\xf2\xe6z\x99I\xc8\x9e\x11d@\
+\x95!N\xe8\xd5x\x93\xb0E\x16f\xcf\xf3\x12\xea\xf5\
+\xe1\xec\x05\xd2#\x04\x9aD\x96(e\xfblPzb\
+\xb0\x04\xef\xb9ff\x06o\x99\x15\x1f\xbd\x95Y\xf9\x92\
+\xa95\x00\xe3\xfb\xe6\x16\x84\xe6\xb4\xcd\x0bY\xa0\xea\xc0\
+\xd0K\xac\x02N\xf6Af\xe6r\x99\xe9\x03-\x91\x99\
+\xec+\x97\x02\x7f\x01b\xea\xdc\x96\xa3|lGN\xc6\
+!\xefI\xcb\xf4\xce\xaa|q\x9c}\x8e\x83\xda\xf7\xc7\
+\x94\x0c\xdd\x1c\xf0-dq\xf3Fv\x95t\x94\xae\xd8\
+\x91\x87\xf9<\xd7K\x1f\xdc\x02r\x80b\xd17\x1fT\
+\xa0\xb5x\xfc\xcb\xdcsS\xbd\x9c\xe4\x03Ud9\x18\
+=Y\x9c\x0a\xcbRa\x9f\x03\xec\xc3:\x99?\x81@\
+_q\x96\xb8\xe8\x91\x01~\xafW3\xf0\xff\xee\xef@\
+\x88\xff\xee\x00\xe5R\x9d\xca\x80\x00\x02\xd4\xd8\x01\xe1\xf3\
+s\x1d\xe9A\xad\x8c\xa7\x8dYo\x12d\x8au&p\
+\x11\xc8r\xf8\xdd\x1f\x12\x14\x09!H\x86\xa5\xe7y\xbe\
+\x0e\x09\x17\xf3\x07t\xffZ\xd9\xeb+\xd1\xd1C\xd2!\
+j\x04\xdc\x12e\xdf\xcd\xfb\xe4\xa0v\xc8\x82=d\x8e\
+8\xe2'\x97\xae\xfc\xfc<\xfb@\xce\xdf\xf7H\x10\x8e\
+c\x06\xb0\x95\xa8\x13\xd8`\xe3\xde\x97,\xb7\x99\xe1,\
+5\x0a,\xff\x0e6\xcfYba\x09\xac\xe7\xf9\xe7y\
+\xaa$\xaa4Z\x87X\xd2\x7f9l\x15(\x81Bg\
+\x06z\x14\x00<'+kY\x19\xc4\x19\xa2B\xc5a\
+m{\xd9\x5cI\xcc\x80\xe0\x80\x84\x88u\xa9R\x8f\x9b\
+\x00$\xcc\xb8\x19\x7f\x89/\xf3\xdcW\xdfz\x01\xa9\xa3\
+r\x9f\xd7Q\xf7k\xdf\x90h\x00\xb1\xeed\x1b\xebs\
+\x05\xf4\xc6\xcf|\xea\xf6\xa1J \xf8\x7f\xfb\x11\x96c\
+\x95P\xf3\xbfC\x9a\xd4<\xf7w\xf6#\xcf\xd1~d\
+?7~d\x0b%,\x5c\xb7\xeb\xa3\x22`\xfd\xe7z\
+,H\xbb\xfd\xcd\xba\xc3\xc2-1 \x11\xcbA\xc1\xae\
+\x0b\x81\xe6\xfd\xcd3\x89(l\xf3\xaeC\x85<I\x9a\
+@\xa4K\xf6\x07\x19n&&\x8a\xb4M\x0fkB)\
+\x8bC\xc1|A.\x9a\xdc9\xc8\xdf\xea\xfdA\xe1\xb3\
+B^\xa4JY\xf9\x0a\xe0m@o\x9d#-\x5c\xff\
+\xf8Db\xe8\x1c\x17 \xaa$^u\x12\x90\x5c*\xe5\
+\x90\x05\x02s\xf3\x0f{\xf8\xcb\xc3\x16}\xef\xaad\xab\
+4g\x82\xb2\xd6\x1fdG\xcf\xc2m^)`H\xe0\
+\xa9\xf8\xbc3l\xc5\xee-\xa0\xcfV\xc1\x0a\x9c\x9d\xa3\
+\x90\x8b\xb9~\x8b\x95ZB\x16\x02\x82:\x86\x04\xb0\xf7\
+u\xbf\xc8\xfep/`\xc3\xb6?Y\x17\xbe\xecS\xce\
+I\x88\xadL,\x14\xc7\x89yg\xdc{yQ$\x94\
+\xd9\xcaY\xac\xf4I\x0eW$\x86\xbd\x1c\xac\x00\xc7\xb8\
+\xe2@\xc8\xf5\x04\xf9\xa8\x02Lf\xac\xfc5\x8e\xf17\
+R6,\x1dt\xec\xfbu\x1d\x0f\x08k\xcf\xff\x98\xb0\
+\xf6z\x5c\xd8J.\xadOPr\xe0\xf5\xfef\xa0U\
+~\x0a\xc7\xdb\xfe\x91\x15\xd6J$eA\xaa\x10G\xaf\
+\xcf\x9e\xdd\xf47\xc9A\x0fO\x0a[\x10$\x93\xca\xc1\
+\x9b\xd3\xcf\xb8\xc0\x22\x9f8\x1c\x1d\xd6\xb6\x9bC\xc2\x16\
+5\x8f\x9aw\x9e\x7f\xae\xeb\xe1\x13\xc3'\x87\xe6p\xef\
+?4\xac\xbd\xfe}\xb3\x16\x88\xef\x5c.l\x0a\x8c\x9b\
+\xb5\xdf\xbb[\xb36_wn\xb4s\xe3\x9d\x1b/\x15\
+\x5c~r\x9d?\xfc\xbe\x0f\xef\xf9P\x04VTi\xa6\
+\xe7\xf3\xfe)@\xfc\xf6N\x0b\xecw\xbe\x13\xb6\xba\x9e\
+\x9e\xa4\x8c\x0aP\xb6\xaeL$\x80\xf7\xc8\xd6\xa5\xc7\xb7\
+\xeb|\xca\xfe'\xef\x0f]\xf9\xdfo\xf6{9\xbfo\
+\xdb\xe2\xac\x1b4\xfb\xd5\xdcn\xc7%\x01\xb3\xf7\x1ba\
+\xed\xe7O\x0fk\xaf\xef\x0ak\xd7q\xaf\xb0)\x90\x9c\
+\x90p\xdb\xb7\x86\xb5\xeb\xfd\x5cX{\xffK\x87\xa5|\
+\xe8\xdb\x17\x12\xb8\xed]\xb7\xffm{\xd7\x05\x011\xfe\
+t\xfc\xcf\x90q\x1b\xaf\x9b\xb2\xa2g\xcc\xd0\xfbBJ\
+\x99\xc7\x89\xd4\xda~\x22l\x9a?\x13Re\xd8\x0e\x9b\
+!\xd6\xc5c\xc2\x96\x02b\xcd\xafdK\xaf\xdej-\
+7\xbdZ\x87\xf3]\xc2\xca\xf9\xad\xf5\xc0~\xf4\x959\
+\xf0\xaey->\xb1\xbe\x9c/\x02V\xfel\x9e{\x13\
+B\xe5\xa1\x13\xf9\xde\xdb&\xf2\xbd\x5c\xb7;w\x0ak\
+\xf7\xf7\x94\xed\x93\xb7\xed:\xf6\xder\xef\xad\xf6\xdej\
+j\xc1\x9a\xce\x9f\xe1\xaf\xc2V\x094\xbd\xee\xd6\x09R\
+\xc4\xacPC\x9a\xf2\x1b\xa9\xcfT\x81\xca\xf9\xff\xcdi\
+e\x07\xd2g\xe6 \xe1\xbf\xda7\xf9\x1bW\xcb\x02\x87\
+\xf1#\x0b\x9c\xfbF!\x9520&K\x0b\xf1Q\x5c\
+7\x12\xecZ\xc4\xecO\x12\xee\xbd\xba\x19\xe4T\x22\xcd\
+$ \xab\xf5\x0a\xf7\x8c}\x7f\x8d\x9c\x09\x19\xf8\xdf\x0d\
+[%\xc83\x81?|1l\x91\xcb\x1b~;lu\
+>\xa5:\x12\xee\x08\x89\x1ar\xee\x15\x0f\x0b\xfc\xb3U\
+\xa8\x12\x1e\x99H\xad\xd62\xe4\x8f)\xc7\x8aS\xa7\xe6\
+\xb9\x04\x8a\xf3\xe5\x9f\xc2\x96\xfd\xa9\xe4\x1f/\x1d\xb6b\
+\xff\x87\xfc\xc2e#\x81\x9b\xfb\xd7\xbe\xf1\x98\xb0Uf\
+\x8aC\x91\xbdiErs\xf7\xb0i\x80\xe6\xca\x83\x1b\
+\xcc\xbf\x1b.:\xcb\xb3\xd8h\xf54\xd7\xc2{\xd2\xf8\
+\xc4\xf1\x89\xab\xc0H\x86\x18[-\xee\x00\x07\x81\x1e\x15\
+\xac\xebH{\x12Z\xab\xa7\x0b\xe4\xaa\xc8\x06_\x95\xf2\
+\x0c\xcf\xc9J\xdc\x0d\xf3\x80\xe0(\xcb\x80r8,\x18\
+\x95\xe7\xac0\x8e_\x9c\xc9\x1aZ\xf86g\xfc\x0c\x1c\
+G|\xdf\xcf\x878\x17\xe9\x98\x83A\xe0/\xc0t\xc0\
+\xa9\xa4r\xf8\x05\xee\x02K=<}\x0bAG\xe6U\
+\x81)\x87\xc4\xf82\xee={\x00\x00 \x00IDA\
+T]\xb4X\xfbg\x07\x9eCjc\x13\xf8\xab\xc8\xbb\
+\xde%\x00\x9e\x1dy\x90x\x99\xb6^\xae\xc8}\x81~\
+/z\xees\xe0\xd8s\x1c\xec\xef~n\x1c]_\x17\
+\x98T\xa0(p_\x02\x0c\xbd\xf8\xf3\xdf-d\x81s\
+ l\x836\x0e=y\x9f\x9f\x0b z\x16}\xefc\
+\x9c\x04P\xae\xc3\x179\x9b\x94\x17)}]\xe48H\
+>\xb0\xfc\x9f\x9b\x1b?\xb2>\xf3\xa7\x87x\xf6\xaa\x04\
+\x1c\x1b\xcf\x7f\x91\xc9\xdb-\x13i\x1c\xfc\xfdE:2\
+\xc2^\x85\x81\x83~\xfd\xfc\xfb\xef'\xa4\xdeu\xd9x\
+=o=\xcf\xd9[\xd96\xc3\xf9y]5\xe7\xa3\xcc\
+l\x0f\xc1\xee\x12:\xc5\xbd\xe0\xf7\xb0\xb9r\xfc\xcd7\
+\xd7k| b\x0e\xcd^&\x09\xa4K\xe4>\xf1\xc3\
+\x84 \x83\x90e\xe5\xb1Z\x05<?H\x08Pk\x95\
+\xdb\x932\x10\x95\x18\x80\x04\x10\xd8\xf8\xfd;fB\xed\
+S\xd9\xdb\x8a\x94\xca\xfc\xe5\xb0y^\xafM\x07\xf4\xf1\
+\xf3\xbe\xb7y\xe6,\x7fU\xe3\xa3\xa2\xe7\x00S\xb1\xe0\
+\xe0\x22m\xf3\x1c!j$\xa4\xbc\xcfO2\x91\x03I\
+\xe0\xc04O\xbaDCU\xcc=\x9f\x9d.\xe1\xe79\
+X7=\xbb{\xdf\x12C\x0d\xc3\xfb.\x9f?'\xa6\
+<\x87t\xec\x8b-W\xe2\xa5\x97\x09\xf4>\x9e\xb3\xc0\
+\xbd'9\xb2N|\xbe\xf7\xfdE\x88\x05\xf3T\x80\xe0\
+s:\xce\x95B\xa0i\x11 \xaf\x97P\xf7J\x10\xc8\
+\xb0s\x9c\xac/\xef\xaf\xe2\x83\x94\xcez\x02\x99\xe7\xb0\
+\xd9\x8f\xf2y\xd6\xba\x87\xd8\xf1\xf9}\xa2\xc5:\xf2e\
+\x5c\x8c\x13$\x82\x1eX\xe4tz@Ads\x1d\x16\
+\xa2\xe1O7\x8f\x9a\x10~Z\x05\x04\xc2>\xef'\x13\
+k\xc7\xa2\x8b\xacB\xab\xe2-\x81\x95\x0e\xe0\xf6!a\
+K\xa2\xa18\x09\xb2\xc2V\xe7\xac\xf5\x97\xe4\x83*8\
+E&\x07\xc9a\xfc$\xbc\xb2\x17\xb6H\xbb\xac\x0b\xad\
+\x84 \xa4Y\xd9\x06\xed/\xc4\x16\x08fV\x9c=\xff\
+\xf1\xb1a+\xb2;\xf3\xc5s\xe6\xd8\x1b\xe7$\xaf2\
+\x9f+1\xc8A\xe6H\xf6\xe7\xb6\xe7o\x1e\x22\xa7K\
+\xf2\xa8\xda\xa7\xf2\xf9W\xe5\x0e\x84;\x9fo\xb1u'\
+\x89^U\xa2$\xf0\xec\x83T\x22r^\x91U+\x88\
+\xab\x84Q\x8e\x87\x84\x03\xd98\xfa\xf5U\xc1\x7f\xe5L\
+z7<!l\x99\xbf\xc8\xbe\x86{\x84\xadzi{\
+\xd9C\xfe\x81\xc4:DU\x9fP\xccDe\xf9\x7fd\
+\xaf2@+\xa4\xc6\x90\xfb\x99y\xa2\x92\xeb\xf3\x93\xeb\
+J\xaf\xf9p\xfd\xe1\x06\xc3\x0d&\xd9\xc2Y\x8d\xe0\x9b\
+\xe37b}\x0f\x7f\xd6\xac\xad\x83\xe1\xa3\xcd\xfeqE\
+b\x89\xec2\xb90\x86?\x0ek\xdb\xe8\xd7\xc2\xda\xed\
+<\xb3\xd9i\xed\xfbk\x87\xb5\xd7c\xc3&\xc8\xff\xbd\
+\x02\xf2\xbfs\xfa\xce\x19;g\xb4\xbf;j8r8\
+r:_\xe6s\x09)\xe3\x8dg\xc8\xb9\x04\xf8\x9e\x07\
+\xef\xf9\xc3 \xb7\x0bJ\xc4 E\x9c\x0a]\x9fm\xef\
+\xf3\xfd\xb0\xf6\xf3O\x87M\xf3\xed\xee\xd3|\xe3\xa7w\
+-Wz\x87\xa7\xf7\x0dD\xc2Aa\xed}\xfe$\xac\
+\xbd>#,\x03\x8e\x9b/\xe4\x82\xdb\x0b\x87\xb5c\xe1\
+\x8cf\x7f\x9d\xe4\x9d\xa7,rt{\xef\x12\xb6\xb0\xd1\
+O\xd0\xe9@H]\xb5\xd9\x95\xb3\x92\xdc\xe2\x89\xfd\xdf\
+l\xf6\x8d\x9c\xb7\xb7^U\x9c\xb3\xf06\xec\x84\xb5\xd7\
+\xcf\xb4\xfb\xf9\xcc\xd4z|\xf8pX\x22\x0c\x1e\xb0\x82\
+F\xbf*+\xc4X\xfe\x13\xca\xbe}\xdd\xf6\xb5\xdb\xd7\
+.j,\xc3\xa1aK\xe2\xa5H\x09o\x10\xd6~\xef\
+\xb9a\xabD@&L \x90\xc6\xff\x11\xb6\x9c\x87\xa5\
+[O\xbf\xdd\xbe\xc5\xff\xc0I\x81\xe3E\x22\x0f\x89\xdc\
+Bn<\xcfw~\xf3\x87\xa6\xe6\xce=\xedn\x9b\xad\
+8\xc8\xd2_\xdd\x1e\x13\xb6\xb4\xf8\x14\xa2\x05d\x1c\xa7\
+K\x06\xd8\xa5\xaaq\x9b\xb0\x05\x09S\xac\xf6\x12\xd3\xfc\
+=\x95e\xf1\x00\x0e\x80Ll\x97\x1c\xb2u\x0b\xe9|\
+\xbf\x99E\xbf\xc8\xac\x91(\x92[\xcd\xeb)\xa4\xf2\xdd\
+\xc3v=\xc79P\xb5\x7fgo\xfd\xf8\xc8\xb0\x95_\
+.aj\x7fT\xd1\xa6o\x0f\xf1E&\x90,i\xb4\
+\xac<z\xd5\xda\x00\xe1\x96\x89\xedBvv\x05\x8b\xe1\
+\x22a\xed\xf7\xcf\x09k\xaf\x8f\x9b9\xe5\x9cC\xb5\xcf\
+\xe3\xe4xE\xd8\xea\xb9\xf2\x17\xb3\xc5\xac\xf6Q\xa4\xb7\
+\xce'_\xfc@-d\x12\xce\xd9bT\x05E\xe3\xe2\
+\x1c\xa32\xa4\xa58U\x13\x86\xf3\xc2\xda\xff\x7f8l\
+%o\x9c\xf1\xc1\xbe\xa9\x87\xe75\x0bD\x0e\xc4\xaf\x0e\
+p$8\x17M9\x96$u)\x87,u\xa3\xabw\
+M\xe6\xab;\x90K\xc6\x06\xa9C\xf6\xe2o\x9e\x1f\xd6\
+^\xcf\x0a\x9b2\xef\xf3\x00\xfeCf<d\x9e\xb2\xd7\
+\xa62\xe9d9\xb0\xa6\xcb\xb0-z\xc33\xeben\
+\x00\xe5\x00\x0a\xec\x16=hd\x80\xf3A\xfb\xc2\xb97\
+p\xb8y\xd8\x94\x19\x9d7\x96\x1eZ\xca\xb1\xea+\xc3\
+W\xca\x8a\xa8\xdf\xe3 \x1b\xaf\xee\xef+\xb0P\x01s\
+\x9d\xbdLVO2\xc8!\xe5\x88\x82\xe6\xe4AZ\xd7\
+\xe3\xe0\xe3\xc8\x9bp\xae\xc3\xfb\x1dV=\xc3t\xc5w\
+Ch\x05\x00=\x19[\xdf\x1a\xd0\x07\x9c\xfd\xab\xbf\xef\
+I\x0a9R\xae\xc3\xfd\xcbPBD\x1c]\x09\x8c\xf9\
+\xff\x8f\xec \xcb\x87\xe7\xdf;\xe8d\xfc8>>O\
+%\x059\x0bG!9\x11*@\x10\xc0d&2\xa8\
+\xf7&\xf2=\x1bef\xf8\x8a\x5c\x83\xdc$\x872I\
+/k\xde\x0a\xb0\x04\x22\xee\xf3\xca9\xbf\x0e\xeb\xf4\x88\
+\xb7\x1dy\xa0\xf1\xebe\xf6~\x91Z\x82\xdf\xf7\xd5\xcb\
+\xe7\x19\x07\x95|=q\x1c\xb2\x83:\x8e\x8c\x9fud\
+\x8e\x9e\x9b\x00\xf2\xb8\x0cxO\xc8\x04\x17\x12\xc6\xac0\
+o\x5c\x8fye\x9c\x8dGO>\xd9\xb5\xe4l.\x9b\
+\x19\xe1\x8b\xcc\xec\xce5\xffA\xace\xa6\x1d\xc0\xee\xc3\
+x88\x04b6j\xfb\xd5e;Y=Pa\x08\
+\xa1\x93\x93\x1d\xdf\xbc\x930\xd0\x9bH\x0f\x17k\xae\xc0\
+4\x1d\xae\xf1\x88$-\xb5/\x1a7\x15\x81\xbe7^\
+\xe0\x0c\xf2-qh\xbd!\xfb\xfbYAy\xe7\xc0\xbd\
+\xaf\x90\xbb\x7f\x09L\xf2\x95z\xe8\xed\x9b\xbd\xfcf\x0f\
+\xd9\x17\xa8\x80,wrj\xd5\x82`\xdf\xeae\x0d=\
+g\x08\x86LpT\xab\x06n\x82\xbeU\xa1S!\xa8\
+\xf1PY0^\xf6\x0f\x09\x0e\x9c\x10\xf6_\x8e\x96\xfb\
+t\x9d>\xa7'k5_\xf4\xf0[\xc7\x12\x04\xd9\xdb\
+W\xe7\x8f\xfd\xd6\xfbH\x00X/\xf6A\x95\x14\xfb/\
+rZ\x01\x99\xf7\xf1w\x9e\xa7uh\x1c\xa85\xe8q\
+\xf7\x9c\xcc\xeb\x84\xe4\x17I\xd2\x92\x98\x9e\xc7\xd7x\x98\
+\x7f\x12\xe4\x09\xbd\xe48n\x1f\x10\xb6\x04J\xe5\x18\x93\
+o\xc3Z\x0d\xc1\xc7aLv\xfdb\xe5W9\x0e\x08\
+\xf1\xcbW\xec\xcbzU\x13\xd2[\x8e)\x99&\xfb\x07\
+\xd2\xa7\xdco\x8b\xbc,\x13n\xe3{\xc3V\xc8\x06\xa4\
+Q\xfc\x04$x\x09\xed,H'\xb2M_Y9u\
+\x9d\x158j\xa9H\xb6\xef\xd2\xb7\xf7\x9c{\x8e\x9e\x84\
+\xc0Vb\x8a\xe3/A\x99d\x93EB\xdc\xed\xbb\x85\
+\xac\x93P4\x8f{\xce\x1fd~\x89$+R\xb6O\
+\x84M\x95\xc3f\xab}\x15r\xa2C\xd8\x15\x1b:\x99\
+.\xeb\xc8}Y_z\xa9\xd3\x91\x1d\xf7\x85\xb5\xbf\xff\
+lX{=3l\x09\xcc\x90\xd9\x8e\xb7\x0e[\xcd{\
+\xfb\x80\xc2\x84s\x0d\xe2\xa1\x93W\xae\xf1\xcc\x1e\xf0j\
+\xa9\xd0\xa2\x02\x9a\x8f\xb4\xf2\xdc\xb0\x15\xc2\x0e\xa4X \
+\x06\x19\x8a\xebC\xab\xc0u\xc6k\x8f\x81\xf4\xbaPX\
+:\xfa\xefh\xe3\xf9\xbcf\xed\xff\xb77ov\xb3D\
+\xf0<s\x09\xb4[ \xdf\xac\xbd\xbe9\xac\xbd^\xa7\
+Y\x0b\xe8w>\x15\xd6\xbe\xbfv\xfb>\xb8\xb4\xf6\x87\
+\xb5\xd7\x8f\x0fg\x0eg\xae\xf4\xc9?\x9b\xa4\xa3\x90\xae\
+\xb9_\xb7pe\x22kV\x19\xdc\xff\x82\xb0e\xfc\x14\
+\xda\x86S\x86\x07\x0d\xa7,rg\xdb\xdf\x0aK$\xe8\
+U\x16r\xb1\xed%\xc2\x96\xf3~\xe7]a\xed}\x7f\
+o\xff\xef\xef\xff\xfd\x89l\xec\xb1\xc3c\xa7\xf96\xed\
+\xf7\xc3\xf1\xc3\x95\xa2\xb7~\xef\x0d\xf7\xfe\xea\xde\x1b.\
+\x01\xef\x14\x88\xbe\xa9\xfd\xff\xd5\xc3\xda\xff\xdf&\xac\xbd\
+\x9e\x14\xd6>\xe7\xe1a\x0b\xa4y\xfc\x9d\xf1\xce\xd1R\
+\x1b\xe9\xefH\x80\xef\x1c\x1e\xb6\xf4\x82W\xa2+\x13|\
+\x95H\xc8\x84\xce\xe6\xc2\x9b\x8bD\xcb\x85\xc0\xc6\xfe\xe4\
+y\x8e\xc3\xdc\xfb?\xfc(l\x95\xb8\xcbV\x18\x81\xd2\
+\xce\x0d\xc3\xda\xef\x1d\x11\xd6^\xcf\x9c\x9fC\xcd+H\
+\xdf<\x1fB\xfc1\xe4\x1f\xedC\xde\x17\xf7\x86}\xa7\
+\xd4k\xf4\xa2;7\xb4b \x13w\x8e\x08\xa4!\x90\
+T\x90\xa9\x8e\xbcln1T\xe1\xdf91lE\x9a\
+\xaa\xb7;\xcfG\x1c\x0e\x12y\xf5\xa5\x22\xcf?\xc9x\
+a\xe2\x8a\x18W\xd7\x9bqY\xf9\xafZ\x09\xae\x5cH\
+b-\x9e?\x9f\xec\xfc\xc7SJ88\x0c\xce\xdd\xac\
+\xc9\xa6%\x98\x15\x90 \xd2\xb4\xd0\xe1.P\xa9\xe6\x17\
+\xe4\xbe\x5c$\xba]!\xaaHh\xed\x17\xd8\xf9!\x02\
+\xbe\x11\xb6:\x17\xb3\xe0[q\x17\x95\x88l\xd9\xac\x8a\
+;\x84lr\xddT\x02#\x11]\xf6\xa1\x22%Uq\
+\xb7\xaff\x1c@\x1d\xa6Z\xf8z\xb2F\xf2\x80\x99\x10\
+!\xfbW\xa4\x89\xb8V\x04\xf6Tf \xdb\xb4\x14\x92\
+[\x14W\x7f(li\xd5\x1b\xbe\x1c\xd6~\xfe\x99\xb0\
+e\xbe\xed\x9b\xf4\xaf\x0fZ\x05B\x97\x9cj\xaa\xf3\xc6\
+u\x9d\x95\xee5G\xe7\xec\x1c\xe8\x0f'\x09\x19]\xf1\
+ \x1b\xb9\xce\xaag\x0e\xdbh|\xf7\x1bKOH\x91\
+\xa5`\x91FFC&\xe5\x113\x0b\xe7\xe6\xd9\x9bg\
+\x05\xdb\xe5\x9e\x87OV\x07\x94\x83\xc4FV=x*\
+R\x0e8\x10\xad\xcf\xe6B\xf3\xe5\xa0!\x13\xc8\x91\xcd\
+\x8c\xee\xb4\xc1?o%[\x86\x15\xb9\x0f\x089\xe6W\
+H\xd2\xbcd\xdb]\x05\xd0\xbb!m^\xfb\x00\xdf\xf5\
+\xa8Ps\x94{\x99\xba\xde\xf1\xef\xd9\xd8\xf5\xc6bs\
+\xd7\x03\x92\xba\xcd\xf5y*\x15\x02?\x995\x8e\xe6\x85\
+\xf2\xbe9\xc8] T\xe3+\x80?lw\xc0]\xdf\
+\xf7?\xbfx\x05\xa6\x12\x05\xbbe\xb9\xbaJ\xde\x0a\xca\
+>;F\xc6M\xa0a\x9c/\x93\x8e\xbb\xc0F\x00\xdd\
+\xf5\xfe\x96\xcc\x1aG\x80\xa3\xcba\xfa^B\xbb\xb0\xaf\
+_x\xee\x0d+y\xa9\xec\xedi\xee\xc0\xc4\xbe)C\
+\x5c\x89\x17\xef\xfb\xda\x84\xdc\xa9\xacef\xbb\x9e\x97\xe7\
+ \xc0r\xff?\xde\xcd\x01q\x80J\x02G\xdd8\xd9\
+x\xcd\x17P\xee\xa3\xb2\xb2.\xa1d\x1c\x04\x80C\xc9\
+\x05\xce\xc8\x05*\x10\x10?*\xa7\x1c?\xf3\xd2\xf3\x92\
+`\xe9\x11\x1f\x92\x14\x17-\xce\x84\x199\xa1buh\
+&\x16\xae\xd69\x92\xae\xd3<\xeb9&\x042\x9e\xa3\
+\x8d\x5c\x80\x96\x95\xab\xcd\xf5\xc2V\xfb\xc4?\x84M\xc8\
+\x8d\xd9A\xbeF\x06\xca>W`g\x1dX\x17 g\
+=\xf9\xa6\xe7\xfb\xd5\x5cg;9\x8e\x90? \xbf\x12\
+\x16\xf4m\xc9\xed\x90\xd5\xd2\xcb+\x01\xa17\xf0\xc4\x1c\
+o\x8e\xbeu\xd6\xb7\xca\x18/\xf3\x9e\x0a\x84\xf1p`\
+\x9b'\x12D\xd6M\xbf\x1f\xd9\xa7\x04\x86\x1cr\xd7K\
+N\x10\x14\x15D\xff\xeaa\xabJmO\xe2\xa7\x82\x0f\
+a\xe2\xf7\x91\xf9\xe5:(rF?\xf7\xf9}\xe2@\
+&\xdc\xb9!Q\xe5\xf3\xac\xff\xaee\xa7\xee\x8f\x03\x83\
+C$[_j\x5c\xac\xcf\x9e\xd3D`\x99\xfbi\xed\
+\x83\x17)2\xcby\x1eH\x10\x9b/\x9e\x9f\xca\xbfu\
+\xed\xf9\x99\xe7\xa0\xb9\xa0\xe6\xf6\x03\xf2S\x1c\x19$t\
+K\xc2r\xfe\xdc\xabw\x88\x15\xf7k\xdd\xe3\x94I6\
+\xeab\xa3O\xc8c\xe9\xce\xdf&\xb9.\xfc\x9dy\x08\
+q\x97\x8ee9\xaa\x09\xa1\x86 \xc3a\xe0{\xfa\xe2\
+\xdbw\x86-\x81\xd7\xe4\xdf\x8c+\xb2\xba\xd4\x1fW\xa1\
+\xd6*P:\xc9\xb9OVK\x07\xc7\x0c\xb9\x17\x88\xb8\
+\xd6\x85,(\x14\xc7PV\x14\x0b\xc9\x01\x91\x90\x95\xfe\
+\x9aOd\x8b\xd3o\xd8<\x22l\xe5\x18C\xe4\x81T\
+\xdb\x97\xcd\x1b\xf3HeZ\x05\x9d*\x84\x0a\x17\xc8p\
+\xb64BV\x16\x09\x97\xc4\xac\xc2\x01\xb26\xf3\xbaW\
+]\xc1Q\x91\x15\x9e\xfayBFUR\x8b\xdc\xea\x90\
+\xb0UkH&\xf0\xb6\xcf\x0c[\xdd\x0fD\x06\xf9,\
+\xfb_\x9ek\x02\xa6r\xc0\xed\x83\xd9Z!p\xab\xd6\
+\xcd\xcb\x15\xd9\xef\xbc. \xb0\xec\x0f\x17\x0f[\x05\xfa\
+\xc9Iq@\x0b\x97\x04\xaf\xc0\x0at\x16BU\xa2(\
+U\x0f6\x1f\x0d[!F\xf2\xbe .+\x10\x00M\
+N\x96\xf5\x82d_\xac\xd9\xc5\x97\x04\x12\xd6u\xbd\xda\
+\xd3\xae}\x95\x89\xad\xfd\xfb\xd1\xdb;\x91\xf0}i\xc5\
+\xde\xff\xcb\xcd\xae\x91\xc8\x81v\x1d\x81/\x08\x84\xc1p\
+d\x06\x9eGf\xe5\x9f\xbf\xe0\xdc\xe5\xc7\xbc/\xc7\xfb\
+k3\x19\xe2\xf9\x1fo\xf6\x89I\x8d\xe6\xa5\x93\x1a\xcd\
+\xf9\x93@\xee\x9e\xcd\x8f6?\xde\xfch\xd5j\x98\xe7\
+\x80\x82\xc5\xe6\xff\x86\xb5\xe7|\xff\xb0e\xdc\x86\xb3\xc3\
+\xda1{\xca\xfe\x07\xedo\xebg\xe7w\x9b\xfd\xceD\
+\xe6\xf8'\xc3\x9f,,\xe2\x9b/g\x0b\x10\xbf#\x0b\
+*\xdb\xff\x1e\xd6~\xff\xc1\xcdZ`\xb4\xf3\xfba\x13\
+\xe4\xf9\xfd\x01y\xde\xfb\x94\xbdO\xdd\xfb\xd4\xe9\xfc\x9d\
+\x10L\xc3#g\x92\xc8\xe2\xf6H\xa4\xf0\xd4rp\x97\
+\xf6\xfa\x7f\xc3V\xdc\x15\xe6O\xb2\xb3\xeb\xbd\xde~b\
+\xfb\xc9\x80\xfa\x8f'\x85\xadz\xba3@*\x92@$\
+\xa4\xd9B\xb0\xbd\xf1\xf6F\xdb\x1bM\x95\xf1\x89\xebc\
+\xff\xb7\x02\x8b\xd0>\xf7\x89aS\x02\xe5\x94H\xa0T\
+b\x95\x1c\xa1\xe7O} \xc9[\x0b\xe1\x99\xfbC\x91\
+\xf6fKV\xcd\xe3\xdc\x8f\xaa7>\xb9P\xaa\xb5L\
+`K.4[^\x86\x0f\x86-\xfb\xe0\xce\xa3\xc2\x96\
+\xb8\xa8Z\x952\x00\x1e\xf7\x87\xad\x02b\xeb,+\xc5\
+\xb5\x8f)h\xe5\xf5Nr\x85\x7f\xba\xf2\x83\x90\x01j\
+\xd1\xe2\x07\xf6\x85;_~~\xb1\x22\xd1>z\xfa\x7f\
+\xeb\xd6\xfdI\x94\xf2? \xbcN\x0d\x9b\xe2\xbff\xab\
+\xf7\xe1\x0f8?%R|\xe5\xfb\xd5}\xe4\xfeP\xfb\
+\xb7\x16,\xfb)\xbf_k\x99\x049\xce\x98\xac\xf4W\
+\x0b\xd4\xed\xc2V\xad\x88\xfc\xb0\x94\x1fm\xeb\xa2\xd9\xd2\
+\xc22\xdc6l\x85\x88\xca\xc4\xb6\x96\x81\x92\x8b\x94\xe0\
+G\xb2\x0b9qb\xd8\x12oTk\x87\xc2\x88\xe7\xa9\
+`\x00\xf9\x0e\xd9\x81\xf3A\x81\x22\x13\xe6\xd4I\xc6\xe3\
+\xc2\xda\xff\xbfp\xb2=\xfb\xa6\xc0\xfe\x0f\x97@g8\
+8lu\x83\x09a\xdb\xd5\x93~\xcc*\x83E\xd7\xfa\
+\xf4\xb0U\xcf\xe3\xbf\x86\xb5\xd7o\x87\xb5\x0f\xbed\xd8\
+\xea`~B\xd8\x0az\xc1\x01=1\x1f\xf8\x91\x9d\xa3\
+\xc5\x91\xe58#\x93xG\xd8j\xe2\xea\xfdH\x07d\
+\xfcx\x1e\xf4_\xc9\x00h\xe9\xe1\x9c\x02\xa0\xcd\x1dg\
+\xb9\x1c\x10\x9f\xe1\xaaa+9\x90\xbeB\xbe\x04\xaa\xf3\
+\xfb\x09\xe4\x8a\xdd\xbe\x93\xbd\x12X/r_\xb3ce\
+\x02\x088\x04h\x1c@\xef#\x83\xd6\x07\xd2\x07u$\
+k\x16\x9aqR\x19\xb8H&F,\xd8\xa5\xc25;\
+\x0a]\x0fd}\xaf\x07\xdd\xfb\xa9\x9c\x5c*lE\xf6\
+wT:>W\xee\x10\x12^9\xfa\xe4\xc9T\xdc\xdc\
+O\x9f\x00p\x9d\xcb\xfd\xcc\x8e\x0f\x07\xa2GR\x5c\xa6\
+\xc8\xfbv\xf5\xf0WE\xc5\xcf\x91?JXas\xe7\
+\xc0\xbc*\x1d\xb3\xaf\xa7\xbe\xe9C\xc2&\x07~\xde\xb0\
+\xbe\x9b\xcf\xe1\xba\x09!\xc2Fl\xc1q\x90\xfe%\x1d\
+\xf4\x9cw\xf5\xbc9\x88}+\x85\x8a\x90y\x22`X\
+T$\xe6y\xd7'4\xfaW\x81\xc9\x02q\x9e7<\
+\xad\x22\x1c\x8b\x1e\x0am~\x9bg\xe6\xe5Q\xf9\xf9I\
+\xdeY\x90\xfdN\xc6\xad6~\x01\xb1\x1eC\xb2S\x1c\
+X\x094\x1b\xbb\xebv=\xfe\xdf|\xebH\x15\xeb\xfa\
+]_\x7fpZ\xffzhU\x88o\x90\x99\xd6+v\
+\xdc\x17\xc6K\xa5\xce\xc1\xad\x22\xee\xb9x\x0e\xe4l\x90\
+\x8b\x0a\x1c\xacG\xad>\xb86r\x7f\xa8\x0c\xb0\x83\xcc\
+\x97u\xe0>>\x97\xac\xb9\xd6\x05\xe8?\xe8\xb7\xe7/\
+\x81\x04\xd1\xd2;\xd6\xc6G\x85\xf0\xf2aS\x0f\xdc\x1c\
+\xf8\xe8\x91\xc7.\xdf\x91F\x1ePYv\xf0H\xd08\
+H\x05\xbc\xae\xcf\xfb\x18/l\xb9\x12\x08\xb8\x05\x1c\xa4\
+\xdeGbS\xcb\x83\x80\x16\xb2\x0a\xb9\xa4\xf1R\xe9\xee\
++\xf7\xe6\x95\xc0\xbak\xd1)\x92D\x9f\x03\x8am\xff\
+4\xcf\x8c\xa3})\xd7o\xc9\xaaI\x18\xf9=\xbd\xf3\
+d|\xec_^\x9d7\x12Y\x12\xd5\xe6?\xf6z\xf3\
+\x80\x83\xc6\xf1\x95h\xb4\xdfH\xf4e\xc5\xbd\xce\x0d\x89\
+z\x15q\xe3\x9b\x0e\x96\xf9S\x9c\x02\xc8\x87\xfc\xdc9\
+\xea\xb9\xa9,e@\x5c\xb2ww\x0b[\xc9\x91\xaa\x5c\
+Z\x9f\xa0\x98\xd9\x8bn\xbc\xb7\xef\x09[\xfc\x81\x0a\xf4\
+\xa9\xd9&\xc7I\x05b\xd6\xaf\x16\x9cl\xc1*d\xa2\
+^J\xebR\xef4\x07*Y\xfek<=O\xf3\x15\
+\x9b\xbdV\x87LLT\x81\xe2\xfc\xb0Ub\x80\x03\x9f\
+=\xf2\xa0\x9f*e\xc5)@\x7f\xdc\xfa\xb4\xff9\xcf\
+\xf2\x9c(\xce%\xc8!dM\x0a(\xd6\x89\xf9\x06\xf1\
+'\x91\x85e\xbbC\xe8U\xa5\xff\xa5\xf3u\x8f\x97\x99\
+{B\xeb\xfc&[H\xdd(\xf5\xd0\x87\xb7\x85\xb5\xbf\
+\x7fT\xd8\x92H)Y\xaf\x94\xf9\xaa}Z\xcf\xbcD\
+\xc2\xa7\xc3&Y\xc0f+\xfd\xeet\xb4\xabu\x22\x11\
+;\xd5\xeaul\x87\xb8\x92\xe0\xeae\x8b\xf9'Z`\
+\xb2u\xa4\xe6\xad\x16\xb2\x9b\xce\x1cN\xe5Ov-1\
+\x10\xa1\x10\xaf\xdb\xbf\xdf\xbew\x9a\x97/\xdb\xfcMT\
+\x98\xb7\x97\x0f[Ayq\x1d%\x99\xdb\xf8\xeba\xed\
+\xb8\xfbFX\x92\xd9=u\x81\xd6V\x0b@\x90\xfb5\
+\x07|\xe7\xf7Z@\xfc{\xed\xe7\xe7\x0f\xfb\x87\xf3\x93\
+\x1c\xef\xb1SBn\x86\x12g\xa5\xbe\xe6\x97\xfd\x5c\xe2\
+#\xc7o\xe7\x01ay=\x17\x9e\xd6\xe5\xdc\xb3\xfc\x81\
+\xb0v\xdd\xa7\x86\xb5\xd7K\xefm\xd6^?\xb9yj\
+\x5c\xcf\xe6\xb4\xcd37\xa7-\xa4q\xf61\x89\xff\xe1\
+;a\xed\xfd\xdf\xb8\xf3\xa6\x9d7\xb6\xd7'\xef<i\
+\xe7\xc9K \xd9\xc2\xf4\xb9\xd7\xf9\xc4L\xe4{\xee\x0f\
+\x0e\xe5\xf9\xf6\xfb\xef\x0c[\xe4\x1f'N\x85'.\x88\
+\x87\xeds\xc2\xda\xebM\xc2\xda\xe3|W\xd8\x12\x08\xef\
+\xfd\xfd\xb0\xdcG\x9e\x91\x89\xb0?\x9fz\xff\x7f:\xf5\
+\xfegE|J\xc4\x5clE\xca\xadU\xf9\x8c\xcd_\
+\x87ly\x91\x0af\xa1RBl|M\xd8J\xee\xed\
+>\x09\xe5\xff\x8fL\xd4\xe6y\xb5sB\xd8\x12 b\
+W\x1f\x0f\x0d[*\xb881\xaa \x94l\xeau.\
+%\xfb\x7f\xa9\x90\xbcbn\x89\xa9\x84\xd5\xd7\xab\x80:\
+'\xd6 \xc7\x04\xc6\xce\x7f\xe7J~\xfex\x85\xb0\x15\
+\xb9c&2\xb7\x9f\x0c[\xf9\xbbZ\x9a\xb3\xc7\xbd\x10\
+\xab\xceq\x9c\x04\xceK\x90\xfbS\xc6\x07M\xfb\xb5\x04\
+e\x22\x8a6\xaf\xccu`\xdf\x1c\xbbV\x1d\x09\xc7\x1e\
+9\xa7\x10\xa2\xd0\x221\xce\xaf\xa2\x92\xe4\x1c\xce@8\
+\xc4CC>\xb4Z\xa9\x1e\x18\xb6\xf2\xf3p\xb1]\xaa\
++|\xf0{$Z\xb5\xdc\xe6\xfeZ\xf7\xeb\xba\x15L\
+\x05\xd4\x0a'Z\xab\xb2\xa2>^;l\xa56\x91\xeb\
+F\xa2\x8d\x9ca\x15\x16\xec\x9b\x12O\x7f\x1b\xd6^O\
+\x0d[!-\xb5<j\xc1\xd6Z\xa2\xd5$\x9f\x03\x95\
+\x1a\xfb\xc4\xf0\xb9\xb0\xc5\xff,\xb9b\x09\x0b\x1c,T\
+|$\xd6\x93\x9c\x94_a\x1d\xed\xdb\xfb\xf4\xb0\x0c\x84\
+\xda\xc6:|\xb8\xd9GV\xf2\x15\x0e2\x15\x8a\x18\xa6\
+\x90Izu\xd8\x92a\xdd\xf3\xf7\xe9\xc8<>\xe5\x86\
+R\x07\x15\x04i\xb8g\xd8\xaa\x07\xd1\x031\xe1\xc9u\
+e%\xaf \x0c&\x96\x0c\x10\x9dE\x01\xba\xccyB\
+\xfdJ\xf71\x07|s\xaf<X>6\x93\xd2TF\
+\x0b\xd4\x05I\x8d\x0d\xe6\x88\xb0\xd5D\xb5p\x04\x0c\x97\
+Jhy\xb2\xbf\x96\x03*\x90\xef\x039\x81\x95\x05n\
+!\x80.\xab,\xf5=\xb4\x02\xf1\x1e\xa2i\xe2\xfb\x5c\
+\xdfs|\xf5\xe4p\xd0\xaf\x96\x07l\xcf\xaa}\xe1N\
+\x0e\x8bCk\xbc\xf7\xe5\xf7\x99\x88\xa8\x0d\x86\xa3\xd7\xb3\
+T\x0bL8\xf4\x02\x09\x95\x1b\x15A\x07\xb3JU\xd7\
+Jq\x80\x9c\x1e$F\x0fI\xbeL\xc7\xa9\xd0\xb7,\
+\xf8{\x0eT\xea\xac\x17T\x9f\x03\x05\x92\x03z\x9b\x95\
+\x93J\x10x~\xc6\xdfs\xfdjn\x18*6\xde'\
+!9\xe5\xb0\xf4\xec\xf9\x02F\xf3\xff\x90z\x1e\x12K\
+\x12+sEE\xe5T\x00\xd9\xb7\xa0\xf4\xad$\xd7N\
+\x08\xda\xe5s\xde{^*n6\x1c\x7fo^H\xac\
+\x98\xbf\xa96P\x95\x19\x81\x8b\xe7\xdc\xb7r\x5c\xa0\x10\
+\x01\xbb\xe7\xad@\xa8W)\xf0y\xae\x1f\xe9\xdb\x22\xab\
+\x89\xc5y\x97*\x00(~\xf5\x5c[\xa7\x0eV\x09B\
+\xf7\x07Ji\x1c\xcc\x9fN\xfe\xae\x02'\x81e/\x93\
+\xd8\xabu@\x94p\xd8\xae\x99\x81\x86\x8ae\x06P\xe3\
+_$\xbb0\xc4T\xdfb 0\xf19\xa0}2\xd8\
+\x1cC\x01\xdd\xa2\xea0\x07j\x10\x16\xd6\xc7!E\x82\
+8?\x17=\xa5\x02\x00\x81\x1dH\xdaBR\xba\xbbe\
+\xe9\x17\xb1\xf5\x0b\xf0\xfbu\x8b\xcbDK\x80\xf5.\x90\
+\x158x\xed\x910 \xc88\x1e\xcc7\x95\xe0\x8ek\
+\xa0\xae\x0f2\xc0\xbe\xd9\xc9\xbd\xd5\xf3r\xf0\xab\xa4\xba\
+>\xf7\xe5|)5\x8c\xbcO\x0e\x86\xca\x81\xf5\xe1\xfb\
+tH\x8a\xa4O\xc0\x82\x5c6e\x9a*\x11!!b\
+\x7f&\x0f\xe5z9Z\xe6\x1f\x84\x80\x04\x97\x80_\xe5\
+\xc0\xfcH\x87\xaf\xde\xd7\xb8q\xacT\xd4\x04\x96\x9eK\
+\x87\xb8(\xae\x13\x10E\xeb\x9c\xc3\xa4\xa5\xa9G*\xe5\
+<(\xc4\x02v\xe9t\x90Ad\x83Rw\x22\xd5\xc5\
+\x92O\x7f]\x85\xd6\x97}\xc29a\x5c\xb3\xd7\xbb*\
+\xbdY@\xc0B\x1dLD\xc1E4\x1e\x1d\xb6jU\
+\xc0.m\xbf3\xbe\xce\x01\xe73\xf9.\xd0r\xdfK\
+\xc8\xeb\xdd\xa7\x16\xe0\xdcH\x96\xed\xea\xb1\xa4\x1a\x22\xf1\
+d|\xb2rX\x89g\xd7An\x14\x04Y\xc0 \xb1\
+\xcco\x90P\xb0\x1fr\x18U\xb4\x12\xd2\xba\xfd\xc1\xf6\
+\x9c\xed9I\x02{\xadUA\x06\x92\x04\xb2E \x93\
+\xe4\xb5\xc3\x1d\xc3Vd\xa5\xc8O\xd3\xe1\xdc<&l\
+\x95\xb0 \x8b\x98\x05\x17H\xb2\xf1\x85a\xab\xf1\xb1\x9e\
+O\xda\x8d\xbc\xacu&\x01\xc6\xef1\xaf\xec\x8b\xd61\
+\xbf)\x9f\xa7Df9\xe4?\xc8\x0a\xde?g\xa2\xc0\
+\xb9\xe4|\xe0\xa7\xdd>\xd7\xc7\xa3\xb2\xb2\x9c\xa4\x85\x9b\
+\xbd\x9b\xed\xc4r\xff\xb5fg%\x99\xe4\xffY\xaeg\
+8\xbd\xd9\x8a\xd4kB\xc2\xfcG\xfa\x05?\x98X\xfb\
+'\xd94*\x02\xc3\xe1\xc3\x11\xd1\xcb=|$l\x22\
+\x13\x9c[\x04\xee\x15\xb6\xf2\x1b\xf8=\x9e{\xdew0\
+g\x05w\x16Y\xbb\x82\xfe\xf2\xcb<\x87$\xe9\xde^\
+y\xe6\xd8\xd8\xdep\xef\xb1{\xc3\x9f\xfcJ\xd8Jo\
+<{\xde\xad\xcb\x9dsw\xce\xdb\x095\x82\xab\xcd\xd0\
+\xf2\xf1\xa5\xe3K\xc6\x97\xac\xe4\xd2\xb48\x82h\x0b\x5c\
+\xde;\xdf\xff\xf0\xee\xb0\xf6\xf77\x0dk?\xdf\x09[\
+\xe4F\xab\x93\xf1\xfda\xed\xf5\xe4\xb0\xf6~G\x85-\
+$p\xdb\xbf\x0bk\xbf\xff\xe3\xb0U\x05\xf5v\x93\xcd\
+\xf3\xfd'\x09\xb9\x0f2\xbb+\xb5y{\xa5U\x5cb\
+?\xce\x00\xb8\x02_\x08L\xfe\xd4\x1d\xc2\xdav{\x9b\
+\xb0\x09\xf11!\x8d7o\x0f[!\xd1\xd2\xcf\xdb\xb9\
+B\xd8Bj^\xfb\x9eJ.\xb5\x15-3y^T\
+\x81\xc0y\xa3\xe2N\xd6\x0e\x92\x88l0?\xb5'\xbb\
+\xce\xd6\x94\xe1aa+\x155\xe7v\x22\xa0\xb6\x07\x85\
+-qS\x05\x868\xd7@\xfa]/\xb2\xbf$s/\
+R\xbaL\xdc\xd6y\xc1\xef\xcd\x84a\x9d\xbb\xfd\xfe\xdf\
+'\xe0\x97\xc2\xd0nN!~\xb9\xfd !\xf3\x9b\xbb\
+\x84\xad\xfc4~]\xee\xab\xc5i\xe2s\xbd\xdf\xa1\x1d\
+\x07\x18D\xa5/\xcf\x9f\x1f\x9f\xfe(\x15\x02$\xa9\x10\
+6\xd5B\x81\xdb'\xcf\xa9\x22\x05\x96\x00\x82\xfc\xcd\xb8\
+\xb5T\x10 \xcc\x9c\xab \xfa\x99h\xad\x82\xa0q1\
+o\xf9\xc3\x12\xf6~O\x00\x1fd\x99o[\xc9\x00\x8a\
+W\x93\x14\xbb\x10%\x90\x83\xd6\xafV\x0a\x08?\xa4\xff\
+\xf9~\xfb\xb6\xa7\xcc\xba\xa6\x95yU\xa9\x91iU\x91\
+3\x91\x924\xb0\x0e\x94dO\xae\x03?eu6O\
+\x0e[\xc9M\xe8\xf9X \xac3\x89\x152\x12\x90>\
+*\x02\x10\x03zy\x91E\x80f\xe9q\x01\xd9K\xdd\
+\xcc\xea\xdd\x11h\xea\xed:#e\x97N\xcb\xd6\x02\xe4\
+/\x97\x19/;F\x8f\xd3\xadf\xf9\x94\xb6\x89\xce\xbd\
+m2\xf1\x1cB\x01@\x06$\x93\x5c\xcc\x8fVP\xf1\
+\xb3\xd2A2\xc1As9\xec&\xac\x03\xae\x0f\xf0s\
+B\x94|\x0f\x87\xd6D\x91\x01\xb3\x00\xfd\xbc\x83\x0aW\
+\xcf{\xdf\x8b\xcb1\xe4\x80\xf7P\xd1\x9e<\xce\x02\xae\
+\x92n\xde\x97\x1e\xf3_ \x07\xe7\xf36'e\xe0\x8a\
+\x84Q\xa6\xad\x97\xe1\xeb\xc9\xec\x04**\x7f*\x1e\xae\
+\x0b)a/\xe3g\xe3\xc1\x9e\xfd\xd5\xb0]\xea\x09\xf3\
+\xf8\x9b\xe7\x1c\x02\xaf\xe6I:\xb0\xcd\xe9\x9eI\x22\xcf\
+\xce\x00_\xab\x84\xe7hc\xfc\x5c:\xf0\x7f\x9f\xd0$\
+\xcfI\xe5\xa9\x0fxz\xa8\xb2\xf5%\xf0\xcf\xc4K9\
+\x8e\xd6c_\xf1\xfdE*\x06*\xd1\x9eG\x0f\x9d\xbe\
+b\xb5\xaa\xcc\x7fo~\x08\xc4\x04D\x0b\xe4Ret\
+v\xa4lT\x9e\xff\xc5:\x92\xc8\xe4Ph\xc7\xfa\xac\
+Zp\xcd\x84\xfa\x99?\xd6e\xf6\xb6n\xbc\xdfu3\
+q\xe1\xf3q1\xf0 \x90O\xdd({\xc5\xff)7\
+V\x07\xaa\xeb\xd7\xdb)p\xe1hr\xe8UP{\xee\
+\x8d\x9bgb\xf0J\xb9N\x5c\xc7\xd1\x93\xce\xc2\x92(\
+\x80\xacY\x10Ks\xa0\x22\xf04\x1eOOr\x1a\xba\
+\xd4\xe4\xcd\xb0\x0e\x0b\xb0\x04$\x0e(\xec\xc4\x9e\x8f\xdf\
+\xeb\xa0\x97E\x96w\xed<HSO\xf9\x80\x04\x87u\
+a\xbe\x99\xbf2\xe6\x1207\x0a[\x1d\xc0\xd6\x9d\xeb\
+\xcb}\xb0\xe6%\x08\x9au\xe9\xf7\x8c\x87\xf5\x0e\xc9\x00\
+\xbam\xfc\x5c\x9f\x96\x13\x07\xbb\xf7\xb3\x8f\x0bx\xec_\
+\x9e\x83\xe7\xe7}\xf4\xfa['~\xdf\xfc\xee\xb9&|\
+\x7frq(\xcc\xfb\x84\xfbD\xca\xea\xbe\x04\xfe\x19\x88\
+\xd5\xbc\xeb[\x01\xec\xcbH\xa4\x92\xa4\xac\xc8\xd2\xec[\
+\x1c[\xd7m_p\xbd\xe6\x91\xca\xaf/\xad\x0f\xe6'\
+\xdd\xe4\xac\xd0\x16\xe4] \xda\x9f\x03\xa0\xa3\x02A\xd7\
+c\xbdx^\xbf9\xd9\xe2\xa8\x9d\xd8\x91|\xfa9\x12\
+\xdf\xdf\x0a[\x02\xe6\xcd{\xc2V\x95\x87\x0cp\x8b$\
+\x10\xa9\x1f\xc8\xa5\xcf\xe7\xf8\xa8\xd8&\xe2\xa0\xd44\x92\
+\x14\xabZ\x12!\x10\xf3s\xfc~\x91\xfb%+r\x91\
+kJX\x19\x7f\xeb,u\xe9k_\xb3o\x9e\x12\xb6\
+Z\x0f\x9e\x8b\xeb\xb5\xef@\x1e\xe99\xc5A\x93r\xb5\
+zD\xa9E@\x8c\xd4uI\xf4\xd8\x8f\xcc\xfb\x8e\xc4\
+\xb28\x10\xb2\x22\xbdyB\xd8\x8a\xac/!\xb4\x1c\xe6\
+\xbd\x0fhv\xff\xa5R,!U\xfb\x07DBB\xbd\
+\xeb\xdc\xf4\x9c!KR\x9ep\xfb\xdc\xb0\xd5~b\x9e\
+\xd8\xff\xb5\x08\xe9\x99%\xdf\x8c,\xcb\xfa\xc7N.A\
+L\xe6\x8b\x0a\x8c\xc4\xbas\xc8\xfa\xea\xe4\x0b\xc9\x9e\x15\
+\xd9\xe09a\x93\x7f\x8aSj\xe2p\x90\x98\xdc\x5c7\
+\xac}\xecK\xb2b\x9d\x81y\xe9\x84\x87\xea\xd3\xe5r\
+?\xbfY\x8e\xeb!+\x12j\x15\xc68eBe\xea\
+\xc1a+9\xcd\xcb\xa6?\xf9\xafam;x\xcb\xce\
+[w\xde\xd2^o\xbcs\xa3\x9d\xb6\xbf\x0eO\x1f\x9e\
+6<m\xf5\xbc\x17\xc8\xf4<\x0e}!\xa6\xbf\x7f\xfb\
+\x8b}\x08t\xf9\xe9\xb3\x9a\xc8x\x8b\x19\xa10\xcd\xf2\
+\xc3\x96\xe7\xa3\xa29\xfc\xd6p\x9b\xa1\xad\xd3\x9d\xf7\x85\
+-\x81?\xae\x08\x10\xf7=\x0f\xcc\x8a\xf7}\xc2V\xaa\
+\x0e)w7~9I\xb2Ok\xfej\x9b/\xc3\x9b\
+\xc2\xb2\x80\xf8\xe1\xf6\xfa\xc0f\x0fX\xb5>\x5c6\xac\
+\xdd\xe6\x1d\xc3\xda\xeb\xde\xb0\xf6\xf3g\x87\xb5\xf7\x9f\xbe\
+V\xf1@\xae#\x15P\x89\xa6=\xef\xd8\xf3\xceIw\
+\xfe\x09\xe3\xff\x0e\x04\xb1\xca-5\xb2b\xf9W\xc9%\
+\xafl\x1f\xd7\xe2\x99H\xd6\xbdWO\xae\x82Go\xff\
+b\xfb\x17\xab\xf5F\x0d#\x9f\xcb\xceE\xc3\xda\xf5>\
+(l\x85\x88Q\xe8\xa2\x92\xf1\xb4\xb0\x95\xac\xa0s\x9b\
+\x9fO\x1e\x18{\xbd\xc0\xd6>\xef\xb9\x9b\xe7\xe6\x1d\xe8\
+{\xb6$\x0d\xc7\x87eB\xfcr\x89\x8cz\xfcJ\x1e\
+R!D\xc1)\x13\xbfH\xaa+\x80\xbc\xe9x\xb3\xf1\
+f\x0b\xb2\x85\x9c#\xb2\xbb\xea\x99\x7f]\xaa\x88\xdc3\
+e^%L\x9d\x9b\xbdls\xcf\xfd\xd5\xc7;\x90\xba\
+IR\xb8\xe7\x0d{^\x1f\xb2\x8a\x93\xff\x15\xea3/\
+\x99\x13QH\xfe$\xba\xc6\xdf\x0a[\x10\x1fuN\xe0\
+f\xc0\x9eo]\xe6\xf9W\x5cp8\x83\xf8\xfb\xb8\x1b\
+p\x0fX\x97\x12\xdeI\x96[\xf1&\xee/\xfb\x0f\x84\
+\x14.\x08\x05F\xc8\x83;N\xb6<\x0f\x89\xf9\xf4C\
+JUE\xbce_\xe4\xc7(t!c|\xd6d\x0b\
+\x09\xe15\xc2&\x7f3\xac\x12|\xe5\x07K@@\xc8\
+\xe0\xbe\xc9\xb8b\x1f\x07p|\xc3\xccR\xb9\xbdS\xd8\
+4\xf1wC\x95s\x01U\x0fAV\x026w\x98\xa1\
+\x06\x9b\xbbd\x22\x00\xfb\x22\xf2\x9e\x0b\x04\x0f\xe8*\xa3\
+\xe3\xfdl|t\x833\xf31~{\x1e\xd0q\x7f\xf6\
+\x1c&\xdb8\xe8`s:g\x07\xe3%a\xed\xf5g\
+a+\x9d\xde\xc7\x85\xad6j\x90Oj\x02t\x82O\
+M\x16\xcf\xd7fo\xcf\x7f\x09[H\x81\xca\xc1?\xbc\
+#e\x13\x08\xca$}5+\xc5\x1cj\x99j\x10\xd6\
+kdE\xac\x87\x86\xf6\x81uw\x00\x14K%\xe8\xbc\
+\x0a\x91qsPp\x04\xfb\x8az\xd7\x1b^\x8e/\x07\
+Z\xa5m\xc9\xc8\xcf\x8e\x87\x00\x80C\xba\x90\xfd\xed\xae\
+\xa8\x19\x0f\x9f\x97\x7f\xbf\xb9Z\x06\xfe\xd7\xc9\x00@o\
+\xaa\x8a\x13\xf6x,\xe5\x1d\x17\xc0\xe6\x92\xd9b \x80\
+\xed*\x84\xd5z\xe1\xd5\xf8\xc9\xa4I\xd4\xf4\x15\x84\x1f\
+U\xe0>\xcf\xbf>\xa0G\xd6\x96\x15\xb0\xf1\xecy\xfc\
+\xdb&0W&l\x0880R\xf6\xa8\xc8\xab2c\
+X\x15V\x1c\x13\xee\xc3\xf3\xf0\xfc\x04\xfe\x9eO\xf5X\
+%\x19\xd5q\x19\xc0\x08pz\x07<9\x106\xc7f\
+\xc5\xee\xe4\x0c\x98\x16\x8e\x84\xdd\x01~G\xa2V\xff\xef\
+\xf9\xf7l\xf0Z\x00.\x9e\xd7ic'\xbbg]t\
+\xbdQ\xed\xea\xe7\x00Q%ZES \x8a\xd4\xd1\xb8\
+\x5c#3\xa5\xae\xcf<up\xf9\xdcN\xb6\x93\xfca\
+\xe9\xa8\x7f1l\x05\xa9\xf6w\x02\xe6>\x01\x22A\xe3\
+\xbe\x05\xac~n\x1c\xc9\x10\xea\x19\xe7\xa0{U\x89G\
+b\xc7\xf1H\xe8\xe1\xe6!a\xab\xf9\x0b!\x00Rn\
+\xff\xcb\xf95\x82\xc6\xf9\xfb\x84\xd6\xd6\xe7\xe1n\xc8\xca\
+I\x0b\x1ff\xe8\xb1\xf5\x8f\x84\xc8u!\x11\xf3\xdc\x1d\
+@\xf6+\x8e6$\x82\xe7)0\xee\xc9\xf8\xecC\xd6\
+\x8d\x8aZOR\xd7\xa9\x95\x94\xec\x1f6\xf9^&\xb2\
+'\xb34\x1f2\x10\xe2\xb8\xd7:\x90X\xb1\xff\x98\xe7\
+\x028\x90`\xeb\x11\xf2\xcb\xf3\x05!\xd5\x8b\xda\xabc\
+\xa8\xb0[\x1f\x1cq\xbd\xe37\x99\xd9\xb9k\xdd\xa7\x9e\
+tA\xda9\x069\xbe\xe4z\xca\x91\xb5.TvU\
+\xa8</\xe3\x97\x8eJ!\x18@\xdfU|=?\x09\
+I\xa4\xbdd\x00\x93\xa4\x8ecT2j\x12\x8b\x9e\xaf\
+\xf1s\xbf\x9d\xdc\xd1\x01-\x18\x10{\x1c\x0a\x81\xa2\xc4\
+\x83y\xac\x22\xe3ys\x9c\x92$\xb3t\xa7UL$\
+hA@S>\xae\xc6\xfbMa\x0b\xcbq!\x10q\
+V\x9c\x13\xb6\x82H\xde)l\x05\x1du\x1d*O\x0f\
+\x0e[d\xa2j\xbej\x91p\x1f*\xae\xe6\x93\x80\xfb\
+\xac\xb0\xf6\xf3\xdb\x85\xb5\xd7\xef\x86\xad\xf6\x03\x1cB\xb8\
+yN\x0b[\xb5\x1aA\x8a\xe4}r\xac\x8bL\x11i\
+b\xees\x1c\xf4j\xb9\x94\xc0N\xd9\xd1\xba\xae\x94\xd5\
+\x22cU\x5cKy\xdf\xc5\x96\x8f\xc3!\xa1\xd6\x85\xec\
+\xccJ\x7f\xf9eIFV\xf3*\xe5\xc9B\xcc9\xe4\
+\x9c\xab5\xb0G\x06J\x94H\xc0rl\xedg\xe6\xb7\
+}\xdd\xbe\xe4\xfc\xf6e?\xe7'I\xc8\xe1|\xc1e\
+C\x8eSO\xadV>j\x02\x99\xe0\xd5\xf2\x15\x22\x97\
+Q9\x138\x22\xfd+\xbf\xc4\xf5\x08x\xf4\xd6K<\
+\x90\xc1\xce\xe74\xb1\xdd_e\xc5Z\xff\x8e\xe1\xed!\
+\xe76\xbc2l\x15\xc8\x19\xa7\xde\x1f\xac\x0d$\xf7\x1b\
+_\xbd\xff\xc8\xff\xd3\xfb\xfe\x98\xb92\x5c\x95\xea\xa8\x1b\
+\xdek\xd9\x9f\x87\x9b\x0f\xb7\x08R\xeb\x9d\x97\x87\xb5\xef\
+\xffz8c8c5?\xceL(\xfa\xd5\x93T\xf0\
+\xe4\x0c,\xf8\xcf\xce\x93\xf4\xbb\xcbO\x8dJ\xea\xc3\x16\
+d\xcbp\xfd\xb0\x89\xccl\x96%\x13\xb0e\x02\x8c\x9e\
+\xf9\xe6)a\xaby\xdc\xa9\x8b\x90\x19\xac\x84\x1f\x95\x91\
+\xf4\x8b\xcb\xbf\xcf\xe7\x8a\xfd\xdd\xbeX\xbd\xfac\xb0\xdc\
+\xad\xc6\x91<o\x92\xac\x99/\xd6\xeb\xbeG\x85\xb5\xff\
+\xff\xc7\xb0E\x17\xbe8\x00\x86\xf9\xfd\x86_\x0d\x9b\x02\
+\xd77L\x81+\xa4\x90}\x182\x8b\x9fy~\x91\xf4\
+\xce\xc8\x9bL\xe0\x15\xa2\xe3#\x93\x1d\x884\xa4J\x82\
+\x5c\x9d|\xddc\xc2V\x05\xb7\xd8\xd7\xdb\xb8m\x0f\x0f\
+[\xb1\xc2\xdb\xdf\xa9,|/li\xb9\x1a\xff|\xfc\
+\xb3\xf1\xcf\xa6sy&\xaf\xa6\xae\x96\x89\xc5\x92\xa3\xcc\
+BX!\x13\xc5\x09\x0a8\xe7\xa5_\xad\xf5\xf5\x02\x1d\
+B\xb2#/\xad\x84\xc0/\xa7\xbfa\x9e\xb9\x9f\x87\x86\
+--Zu\xce\xd9'\xec\x07\xd9bQ\xe4\x89Z\xe6\
+@\xb5\xad\xae$\x00\x00 \x00IDAT\xf3\xa9\x9b\
+\xe0\x88Ir\xd0:\xaf\x92\xf4\xbe\x10\x10\xb9\x9fW\x02\
+\x06w\x82\xeb\xf7\xbc\x5c\x8fD\xaduM\x16Vb\xc2\
+\xf9\x98\xf3\x02'K%\x22\xa8\xf1\x88c\xc8$K|\
+Y\xefd\x11\xf9G\xe6\x89\x04\xc1\x13'+\xff\xb2Z\
+\x0e\x8cW\xaa\xc1\xb4\xfd\xa8\xd9B\xc2\xb9o\xd87\xec\
+\x1d\xf6\xae*\x16)\xef\xb2\xfd\xdb\xed+\xb6\xafXA\
+\x17@\xda\xe8\xbev$t\xe5X$9_\x91\x10\xf4\
+z\xccz\xacA\xd7T\xf4A\x19\xb2\xa7k\xbcJ\xd8\
+\x8a\x857'pA\x06\xb3W\xa4d`\xb0\xe0r\x10\
+\x0d\x94\x8dT\xa0\x96\xec\x9dA}\x18\xe4\x87\xd5+\xd8\
+\xeb\xbfs,MX\x0bY\xa6\xabw\x84\x1d\x10\x1d4\
+\xba\xb9\x81\xb3\x83xB\x06\xdc\x0e\x16\xaf\x02\x03\x0e\xb0\
+\x03\xc7\xab\x0d\xa5\xef\xd1\xef q\xe5H\xba\x8e\x1e\xa2\
+#\xa1\x03Z\xbd\xb0r\xcf\xf7}BV88\xc8*\
+\x0e*aH\xd4\x8cK\x7f\xff{r\x02\xf7\xe4\x81\x97\
+\xef6\x80C\xf3>w\x8a\xe5>U\x00R\xe6\xe6\x12\
+\x1d\x22a\x91\xf5\x9b_eT{h\xaeqr\xdf\xc3\
+\xee\x9e\xf4Z\xd0\xc6G\xc5\xd5\x02\xe1P\xd8X~V\
+r\x86\xf3\xab\xf1\xferfj\x91\xb9\xa4\xaem\xb5H\
+\xd8\x00\xa8\x14\x5c\xb6\xee{\x17\xdb2\xf9\xc2Z7\xc7\
+V\x0b\xc3|\x10^?\x03\xb6\xbe\x92\x89\xb4\xf2\xd8\x84\
+\xcc\xabX\x0b\x00\x97V\x959\xd0<8l\x15\xe0z\
+?\x1b\xb8\xc0\x10w\x07(|/\x97w\x5c%d\xe6\
+\x84\xc5A9\x7fA\x87\xcd\x93_\xeb\xa0\xc3}\xcf}\
+?\xdf\xdd\xf7r=\xc7O\xd7s\xc4\x84\x09Y\xb7\xac\
+\xcc\xefwN\xces\x0e$H\x22\xce\x0f\x15\xd1L \
+\xd2\xb7mA\xef\x9c\x89=&\xe7\xaf\xeb\xbf\xe4\x84\xd5\
+\x89J\xfb\x9c)\xbeQ\x06\xd4\xae\xdb\xbcq\x9d\xee\xab\
+'\xdf\x94\xb0\x00\xe5\xcd}o\xbc\xf5x\xab\xf1Vy\
+_\xc7\xaf*\xfa\xd9+\x5c\x1c(2\xe5\x1fJ\x92\xd3\
+\xef\xcf\x1c+\x91\x9f\x8f\x0c}\x1d\xbc*\xaf\x12Z\x9f\
+N.\x96+$D\xbeO\xb8\xb8\x0f\x0e\x96\xbf\xb7\x1e\
+\x05\xda\xd6\xad\x00\xde|\x92A\x07\xed\xb7?\x98\x1f\x0e\
+\xfa\x9e\xab\xc5>\xeasz\xf9@\xaf\xfe\xce\xf3\x17\x08\
+J(iq\x90\xb80~\xf6\x17\xfb\x81\x84e\xfe}\
+\x05X\x90\x5c\xee\x1f$NB\xc1\xfbI\xc0\xd9WT\
+\xe6\x05\xca\xd6\x7f\x9f\xb0T\xc1H\xce\x9c\x0a\x149\xb6\
+\x9e\xab}R\x22\x5c@\x22\xe0\xf5\xbe*\x06\xaeK&\
+_\xe2\x1c\xa2\x0e\xb9\xab\xe7\xe19\xe8\xe9L\x99\xb3\x0a\
+\xd8p:\xf4-H\x12;\x10\x1a7\xcb\x1ej\x9f\xef\
+z\xec\x1b=\x17\x85\xfd\xd2\xf8\xf2#\x8c/\x07\xc7:\
+\xe2@\xa9dt\x01q\x91f\xe5\xf8W\xcf2\xb5\x81\
+^\xcf\xde\xfe\x8f\x0c\xee\xada\xedX9+l\xf1[\
+\xa8\x18\xd5\xfa\xc5\x96\x9c\x15z\xf7\x815\xbed\x89\x9d\
+\x17\xce\xbb|\x1e\xc5I\xa0EJ\xa0\xfe\xefaK\x8f\
+y%\x92\x04\xbe\xe9P\xf2;J\xed\xc0<\xf5\xfc\xb2\
+RW-\x8d\xb8\x0a\xde\x15\xb6\x82~\xdb\x87\xc8\x1cf\
+\xaf=\xb6\xfd\xe1O\xc3\xdax\x5c/l\x09\x806?\
+\x09[%\xaa\x8cg\xb2\x8fWk\x0ah\xf9\x11a\xab\
+D\xab\xf3([(\xbcO\xf9{\xe6\x15D\x00\x88\xaf\
+\x04\xa0\xfd%\x03\xa8\x22\xaf3\xde\xceo\xf3\xcbs\xb3\
+\xaf\xf5*4\xe6\xb3\x04SBu\xa9A\x848\xf4$\
+\x0f\xad\xf2\x96\xf3\x0e\xe2\xa1 \xf97\xdfs\x8b@\x94\
+l\x1f\xb1\xfd\x93\xed#&?\xf6'\x93\xa3\xad\xc2\x8f\
+T\xefcaK\xc5\x0e\x89Y\x84\xfb\xe1`\x0f\x1f\x1c\
+>4\x84\xbfy\x8f\x94;CF\xe6\x1c\xdct\xea>\
+\xff\x7f\xbf\x8c\x93D\xec\xbb\xe6\x04\xf8\xf0\xeclU\xf8\
+\xfa\xe6k\x9b \x87{\x7f\xd8\xd4\xea1\xed\x07\xf1\xbf\
+\xf1\xff\xe3m\xe6@i\xf8\xca\xcc\x12>\x89\xd0}h\
+:wf\x99\xc4\xefeB\xea\xee\xc9\xfd!\x01}\x89\
+\xecM\x7f\xce\xf8\xdc\xe89\x1e\xef7\xdewB\x22\xdc\
+8l\xc5\x8e\x1e\x90\xea\x9f-H\x02\x15o\xfa\xe7\xc3\
+?\x87-\xb71\x5c/,\x112\x1f^%\xd2\xfe)\
+\x13q\xcf\x9b\xf4\xc0\xaa\xd5\xb0*\x9e\xce\x9b\x84\xf0\x97\
+\xcc\x5cr\x8aT\xab\xad\x84\xdb\x7foO\xe6\x1e\xcb\xb9\
+\x87\xc3@\xeb\xe3\xbe{\xec\xbb\xfb\xbe\xbb\xafT\xcb\x5c\
+\xa0u\x9a\xf3\x88\x9a\x83\x96#\x15b\xe3]\x09D\xfe\
+&\xff]e\x1f\xc4\x1c\x22@B\x86_l\x1d\x22c\
+U\x99\xb7\xee\x92Km8mx\xd6\xf0\xaci?\x99\
+\xb9E\x12\xd1T2\x95\x99@\xb6\x0epuPKC\
+:(aY\xa4\xb1O\x9e\x135m\xcf\x9a\x121-\
+\x1a|\xf8\xf8\xf0I-d\x961\xbes&\xe2\xb5\xf0\
+ \xcdN\xd5\x8a\xcdM\xd2\x9f\x22{g\x1d[\xb7\x17\
+\xceW=\xf8\xfc\xba$!\xdc\xbc l\x15\xe7x\x0e\
+)\x13?\xfer\xd8\xa2:S\x88q\xe7!\xae\x97\x8c\
+7+\xe1o\x1d\xda\x8f\xb25b\xf3\xe2\xb0\x95\x9a\x00\
+RB\xfb\x0e\xe4\xa3\xd6,\x05<\x89\xd8<\xdfb\x94\
+b\x9cj?\xcf\x04|\x915B(P\xaf@Z\xfd\
+\xc2\xb0\x95\x1f\xc6\xef\x81L\xc8\x16\xa1I^\xf3S\xab\
+\xfdNa\xde8\x9a?\x12\x13\xe2\x1c\x08\xe9\x94\xa5\xdc\
+\x072\xb2yc\xd8\x8a\xcd2\xd4\x01\x0e^d\xab\xda\
+\xb1:W0\x0c,\x87\x8b\x03\xa3\xb2\x01\xd2)\xd3u\
+\xf8\xfc\xf7\xa5\xeb\xf8\xc790\xd8\x1aS\xae\xce\x01W\
+\x0eoBZ&\xa8\xd0\xbe\x05iP\xfa\xa8\xc9\xb2y\
+\x00iJ\xdf\xf3i@\x90c\x98\xa8y\xbd\xe3\x1f%\
+D\x08i\x04rC\xbd\x8e\x0e*=:&\x02\xc7v\
+\xa7\xe4\xe3\xe6\x07f|\x04\x8e\xfb;\x16\xdb>\xa3\xdd\
+\x1fl\x02\xa4E\xc7}w\xaf\xbe\x07\xeb>9@2\
+\xb2*\x12X\xdd\x17\xee\x81\xb9w\xfd?2P\xe6\x90\
+\xfe\xa4\xcb8r(\xdcG\xafB\xb0\xb0\xd4\xce\x13\xdf\
+uZ\xa0\xdf\xceqr \x81\xd0\xffs\xf6\xb6]%\
+\xff^\xe0\x98\xd0\x9d\x16\x86\xcd\x0b\xf2\xa8\x0e\x22\xef\x15\
+r\xc0\xfd\xbb\xaf$sl\xf7\xb7\x1b\x81\xd1\x1f\x90}\
+\xc5\xd2\xf3\x94\xc9\xb30\xbf8\x93d\xed\xf9b\xb5\x00\
+\xcc\x0e\xfb\xf7\xf3\xef\xfeu\xde`Jv\xce\xfb\x0bp\
+\xcc\x17\x09\xa5\xcb\xe6\xfc\xcc\x80\xbf\xe4X$\x0cz\x92\
+>\x10~\xaa\x12*rI\xb2X\x01\xd1\xb5\xb2\xe2\x7f\
+\xe9N\x1f\xbdo\xb1\xe8{\xb0</\xcfS\x85\x5c\xe5\
+QF\xb3\xeb\xd1\xaf\xdeu\xdc\x0b\xb8&8\xc0\xde\xaf\
+'u2\x0e2\xbbZ;d|{}\xe7 \x01=\
+\xf1\xe7\xf4\xd0\x1dVP\xdb\xf9~r\xa3\x97\xd1F\xc6\
+\xd8\xf6\x84\x19j\xf5\x9fI2\x06z\x7ft\xf5z\xcf\
+\xf3\x03B!\x11!\xed\xa0\x9a\xa1\xb8\x02>\xbfo^\
+\xf7\xb2z\xe6[&\x16+\x01\x05Z\xcc!q\x80\x1f\
+\x91\xaa\x16\x09\x15\xac\x8d\xf9\x87E\xda7#\x0d^\x91\
+\x09O\xeb$3\xd5\xe5x\xdet\xae\x84\xee99!\
+}\xdf\x08[\x91\xfa\xe9i6\xfe\xe6w/{(\x91\
+t\xc3\x94ST\xa13\x8f\x04\xd6\xf6%\xcf\xd1\x01\x0d\
+! \xa0\xce\x0a-v\xf9\x82P\x93#\xd53i\xdf\
+\xc8\xeb+\xb27\x89(\x9c+\x02\xce\x8e\xf3\xa0\x1c0\
+\x81\x05r\xda\xfe\xfa\xf4rJ\x88$\xb2\xa1\xee\x17\x22\
+\xc0|\xb7.\xec\x7f\x90R\x12[\xf9\xfc\xab\xb7\xb4g\
+\xf3\xef\xcfE\x15\xfd\x84&\x17{~&\xba\x8b\xfc\xc9\
+\xf3\x92\xd1\x97\x00Q\xe1\x178\xaa\x94z\x7fH\x0f\xe3\
+\xed\xb9A\x1c \x9fLN\x93\x1a\x8f$\xc3\xaa\x8a\x93\
+y\x8d\x0c\x10\xbb\x7fB\xc2\xab\x85\x00\x22\x00G@\x8f\
+<\xeb\x12\xd3\xa5B\xd3\xf5(\x8fo\x0c;\x90\xd4\xb7\
+\xb8\x03\xecC*\x1e\x12A\x19`\xd5\xfe\xa1wV\xaf\
+\xb0sR\x05%\xdfg\xfb\xc5\xb0\x05\xf2Z\x8eT&\
+ j\xbdf+\xe1\xf6\xb2a\xabJ?d\x01\x95\x11\
+\xeb\xd9}#\x1dNvr\x0e \xe4\x1e\xfdi\x15\xf7\
+\xe1\xa6a\xed\xf7^0Y%\x10\xb7\x87\x85\x1dX\x89\
+.u\x85\xbc\xff:\x0f\x1e1\xd9\x22\xb7\x98\xbd\xbf\x13\
+\xb4\xff\x97V\x01q&R\x8a]\x9d\x0aD\xf6\xc0K\
+\x90\xb6\xbf\x9ez\xfe\x91M\x82\xe0\x96j\x83\xc4G\x92\
+\xc9\x91\xb9\xaa\xf9\xd8\xc9\x8d\xd5\xf9a\xfe\xf6\xdfCj\
+%\x0b|%\x88\xfc\xbd\xd7\xbe\x15\xd1\xfe\xdbA\x8ek\
+\x9f\xc1\x09\xd5U\xc8\x8bs!\xcf\x03\x01\x01\xb2\xb66\
+\xea3GE\x9e\xeb\xa0\xec\xdb\x83\xb7\x07m\x0f\xce\x9e\
+\xe9\xb321\xf4\x1f\xc9\x0d\xf0\xce\xd59t\xc1Y\x1d\
+\xc8\xef\x05@=\x02\xb3r\xfb\xdcO\x1f\xf8[\x7f\x12\
+\x85\xae\xbb\xf7\x17\x7f\xd1\x97\xf7E\x1a\x97\xf3\x06\xe2\x80\
+\x0a\xc7x\xb9\xb0\xf6\xf3\xd7\x85M-IS\xa1m\xf8\
+@\xd8\xaa\xf2y\x9d\xdcg\xb5\x02\xa5\x7f9\xfee\xd8\
+j~\x5c<l\x820\xcf$\x86d\xde\xf2\xfcGv\
+8\xb1\xd8\xb7\xf3q81\xac\xdd\xfe\xd9a\xcb\xbc\x1f\
+>\x1e\xd6^\xaf\x19\x96\xd7\xfd\xaa\xf6\xfa\x85\xb0\xf6\xfa\
+\xb4l\x99xM\xf6\xcc\x07\xf0\xfe\xd1\xd3\xfe\xf0\xd2\xd8\
+\x1f\xc6;\x87\xad\x12\xd5\x0fL\xb2\xc9\xab\xce~\xd5x\
+\x87\x19\x09\xb3\xe7\xb6sa\xc6\xf3-\x926\xb2o\x19\
+\xb8n\x7f=lA \xec{\xe6\xbeg\xec{\xc6\x8a\
+<\xed\x9ea\x0bb\xa7\x12\xad\x89t\xa8V\x22\x05C\
+\xd0\xf2\x8e\x9d\xbd\xfc\x0aH'\x09\x03\xdc\x00\xe6=\x04\
+U\xfe^\xf9\xbdZ\xbe\xb0\xc5\xff\xe7\xf0\xd3\xe1\xa7\x0b\
+\x97\xc1\xf6[aK\xab\xf6\xf8\xe9\xb0\x95?\x95\xe7\xfd\
+x\xef\xb0\x95\x9a\x8a\xc2,\xff\x91_@^\xfc\xfea\
++\x84#.\x14l\xfc\xe4V\x1f\x93\x90\xf8\xbb\xa5J\
+B\xcfEC\x1dEb\xe1\xf1\xf3\xfc\x92\x98\xad\x04\xb4\
+\x02\x8b\xfb\xef9\xa8\x9c{\x90o\x02v\x89g\xe3\x9e\
+\xbd\xf4E\xbaI%\x0eB\xcb9\x9eH1\xad#\x93\
+\xba\xddu\x97\xf3\xeb\x00\xf2v\xada\xfe\x1e\x82,\x13\
+\xa1\xd4R\xc8\xa4JH\x89\x93\xab\x05\x012=\x13\xac\
+\xe4-+!/\xf1\x96\x5c-\xb5\x1e\x91\x13R\x9b\xa2\
+\x96\xa1\xa5\xde\xfe\x22\x01%\x01\x90r\xb6\xfb\x0aj\x90\
+\x0e\xd4\xc4\xe2\xf9\xa4eC\xde^&lE\x8av\xea\
+\x9c\x99\x19\x0f\x9d{\xf47\xe7n~\xb8\xf9\xe1\x94\xc1\
+\x9du\x11\xdf4\x1f\xf0\x05\xc5\xe7 \xbf#\xa1\x14\xe4\
+\xa4\xd2\x01+\xf2\x84\xdf\xc9\x9f\xdfo\xcf\xfd'R\x8f\
+\x98\x1e\x8f_\xf5rIP\xe4\x83,\x07\xbb\xef\x95\xe2\
+\x88 k\xb3\xe0l\xac 5\x99\x09-\x07Y\xc6\xda\
+\x01/C\xc7!\xe3\xb8:\xc0<p\xd7\xd1\xf7\x82\x0a\
+p\xf5\xe4\x0b\x90\xfc~\x0f\x09\xe7p\xab aQ\x07\
+Y\xb6 9\xc4}O+(\xad\x85q\xfen\xf2\xb4\
+\x03z\xd7\xbf_\xec\xf6s` P?<3h\xee\
+O\xc2\x84#\xbd\xc8(\xce\xe3\xc0\x91\xf3\xb9C>\x07\
+\xef+#wx\xa9(\xcc\xe3\xe4>\x8c\x97\xbf\xef\xe5\
+\x10Uj\xdd\x8fL\xd6XrvseL\x22\xe0\xa7\
+%g8\xbf\xdf\x92\xe8\x98\x03?\xf7\xef}\x1cpt\
+<_\x91:\xc1\xe6\x95\xf9\x91\xfa\xbc\xe3\x07\xe6L]\
+%\x8an\x94\x07\xe51\x1d\xa9\x9e\xf9\x92\x08\x80\x92\xe7\
+\xd3\xeb/\x80\x10\xf8t\xe4\x89\x95PP\xd1<)\x1d\
+\xe3\x84\xe8\xb5\xb1\x9f\x9f\x87ypL!9\xe6\xc0H\
+\xe0r\xe8\xee\xc4C}\xe9u\xd6b\xa2\xd2\xaf\xf7\xda\
+\xf5p\xdc\xfay\xcb\x11\xbflGJ\xe8\xf7{\x08\xf9\
+q\x1d\x0b\xbf\xeb\x95\xf0\x01\xfdCR\xe8\xefU\x9a\xfa\
+V\x9c\x0c\x9c\xab\x82\x96\x01M\xe9\xa4\xd2\x9b\xc5>\x8d\
+;\xe2_r>B\xbe|?\xf7\x09\xf3Y\xcb\x8a\xcf\
+\xb5\x9f\x987Za X\xcc\x7f\x8e&\xd5\x0b\x1b\xb0\
+\x1e\xb2[\x86\xad\x9e\x17G\x9e\xdc\x93q\xd3ba\x9c\
+SG[ Q\xea(\x12!\xdf\xcay,\xb0\xb1\x1f\
+H(\xf5\xe4v}\x8f\xa9y*\x11\xe5\xf9\x83\xd0\x0b\
+\xf8\xfc\x9c\x03n}\xdb_\xbb\x0a\x7fA\xfe\x05\xda\x0e\
+J\x89#\xa4\x8f*\xc7>\xdf\xbc\xeb9.\x04\x5c\xc6\
+W /\x10\xe9[^\xac/\xeb\x07\x99\xa6\x04\xb5\xeb\
+\xe2\xe8r\xc0\xadw\xfb\xadq\xd4\x0a\xa2\xf2\xde\x93g\
+\x1aW?\xf7\xfcd\xf0\x91\x00\x82\xb2\x22\x07\xb4\x0f\xaa\
+h\x92?\xd5\xa2\x95\x89\xe5\xfa\xfd\x1e\x19f\xbc\xb1\xca\
+\x1b\x07\x8e\x93\xc47r\xd2\x5cW*>\xd5\xe3n\x7f\
+\x94\xc86\x0e\xf6\x13\xe3-Af\x9c\xb5\x8c\x18G\xac\
+\xf9\xce\x8d\xacp\x8dO\x9e{\x907\x0f\xdd\xfc\xd1\x04\
+\xed|\xe1\xf8\x82 \x89\xab\xcf\xe7\x18q\x14\x9f\x19\x96\
+dl_[\xc9\xd7i\x89\x918\xb8N\xd8*\x10V\
+AI\x07s\xfb\xd8\xb0\xf6{\x7f\x18\xb6\x92\xf5\x93H\
+\xf2\x95\x09\x96\xcd\xd3\xc3V$\x83\xfc\x18\xa4\x85\x90\x14\
+\xe6s:T8\x07\xaa\xa5 ?g\xf3\xfe\xb0\x95\x83\
+\x9f\x81\xdap\x81\xb0%A\xb3\xd9\x86-\x0e\xf6\xf0\x8c\
+\xb0\x95\xae\xb4}\x09\xe4\xd3~\xf9\xee\xb0\xf6\xfa\xf9\xb0\
+\xac\x9c=b!a\x1b\xaf\x1c\xb6T\xaa\x050\xb5/\
+=yn\xc5\xe0\xe7\xd5\xb8p\x8c\xb3\xe2U\x89\x19\xf7\
+\xcd\xa1\xe4g\xd9\x07\xbb\x16\x1b\x01D!\x88r\xdfQ\
+!\xae\xfd\xa9W\xff\xb1\x1e\xfbB\x89W\x09=2\xa2\
+\xa7M\xb6\xb4.\xd8\x97zU\x86\x17%\xc7S\x16\xbe\
+\xb0|SA\xf0<\xb7\x1f\x09\xcbJ\xfe\x07'\xa4\xde\
+\xc4]\xb0yo\xd0\xdf\xad*o\xaf\x08[Ur#\
+\xb1r\xfbU\x8f|:\xea5>\x12\xb0\x02\x08\x95K\
+H\x1f\xeb\xc6}\xff\x7f}Q\xc1H9\xbc\xe1\x93a\
+\xab\xd6\xd8$\xc9\x1b.\x176\xb5\xde\xcc\xa4\x82I\xc2\
+W\xebX\xe2\xeew\xc3VP\xf0\xd4\x0d\xdf\xbc,l\
+\x95\x88L?\xcd\xfb\x0c\xd7\x1b\xae\x1f\x95\xfb\x16\x0e\xde\
+7\x02\xc2\xed\x1f\x84\xb5\x9f\xdf\xb8Yp\x1f\xbc?\xac\
+\xfd\xfc\x0da+dQ^\xdfT!\xfd\xedDf<\
+kjY\xb8y\xb4,\x0c\xe7\x87\xadZ\x5c\x9c\x13\xce\
+3\x5cez\xb0\xaf\x9f$\x87gf\xa0\xff/\x89,\
+A\xfa\x98\xfb\xb9\xfd\x80*J\x0b\xa0\x9b-r\xbc\xdb\
+k\x87\xb5\xfb\xf9dX;\x96\x1f\x1d6q\x93M\x5c\
+.5NW\x0b[*\xd6\xc3s\xc2\x96\x02\x8f\x04\xc3\
+\xf8\xb6\xb0\xd5|\xb7\x8f\xab\x1c+\x08X\xdf\xd6\x01R\
+H\xe7-\xb6\xf8\xbf\x09[%\x182\xce\x1a^\x11\xb6\
+\x5c7N\x82\xc9k\xd9;\x05\x947\x8f\x80r\xfc\xd0\
+\xf8\xc1\x09\xda\x8fK\x22\x113u^\xa5lk\x05\xa8\
+\xf6g\xe7M\xee\x8b\xe3#\xc3V\xe74\x0e#\x15z\
+\xe4\xab\xeeG\xebU\xaa\x91\x90\xa1\x05\x89/\x04\xc9\x8f\
+f\x8e\xb5J\xb4\x1c\x16\xb6$Rk_\xc3\xc5\xd0\xc7\
+=*\xf8\xd6\xa7\xf5\x07\xa1\xce\x9f\x85\xc4\xd3J\xe29\
+\xe5|\xaay\x95\x1c\x00\x12)\xe5g*$#Y\xcc\
+\xf5\x5c\xfb=5\xa6D\xd6*\x00T\xab\xfd_MV\
+\xe4\x8b\xb8a 4\x86\xff\x1d\xb6\xeco\xe3\xdd\xc2V\
+\xf3\x05\xa7\x94}-\x91\x0c\xe5\x8f\x19\x8fD\x90\x94\xfa\
+N\xae\xdf}\xc3\xfd\xc3V\x8eBn\xbc\x0e\xce\xca\xd4\
+\xca\xd8=vx\xdc\xf0\xb8U\x05B\xcf+\xd9\x0b\x1b\
+J:\xe4\x9bo\x86Md{\xcdV\x13\xdf\xc4v\x80\
+`-\x8fi\xf7\xaa\x9c\xf0\xff6\x91\x17L\x13\x98\xaa\
+\xc0\x01\xaa\x00\xbd\xcc\x9e\xf7\x07\xd1\xf0\xf3t\xac\x90s\
+\x98hUA\xf0\xfb\xa0\x96\x1c,\x99i\x90U\x95(\
+\x81\xaa\x0a\xab\x8c\x9d@\xfe\x98N\x17[\xa6\xbc'\xbf\
+\xe30.\xac\xf0?\xbf\xf2\xdf\x93l\xf5=\xf2\x1ck\
+$;\xfe\xdf\xf5\xfd\xb4\xab\xf0\xbb\xaf\xe5~gh\xf5\
+\xb9\x15P\xef\xd6\xed\xf4w\xbe2\xe0\xdd\x5c5+x\
+\xae\xfb\xa4\xd2\x9f\x9f\xefwo\x1e\xec\x02\xf3Efp\
+v\x98\x1d\xf4\xc6\xef\xc2\x9d\xac\xe19\xa5\x9a0?\x8f\
+>3\xee\xf9\xbb\x9f\xfd9\xe1%0\xc8\xf7am7\
+\xce2\xaf\x7f5C\xd1@\xc9\x90ZV\x80 \x81@\
+\xb6E\xc5\x02\xc9\xd3e\xb3\xf2\x80\x0c\xc9\xf3\xbfPW\
+\xb9\xd0\xfapB'\x97(\x808\xbe\x12\x01\xb3\x83u\
+BU\xfc\xe7\xf1\xed{'\xcd\x03\x09*\x15K-\x05\
+\xdd\xcf\xeb\xf5\xf8\x92\xa9\x9b\xc7\xa7g=\x07\xf5\x07\x09\
+\xe6\xf8yN\x1c\x98\xbd9\x7f/\x91\xf7\xd9\xab4 \
+\xc7A6\xd5AB\xeb\xf7\x8e\xd9-\xdf\xb8\xe20\x98\
+\xc7\xe7\x06Y\xa1\xb5?p\x14\xcdk\x88\x13\xeb\x5c\xc5\
+\xd2|U\xe9\x94\xc0:)\x0fR\x01\xda\xd7\xd2\xe12\
+?S\xafxs\xcb\xcd\xad6\xb7Z\xcd\x9b\xf3r~\
+m\xf2\xf3\x0f\xcb\xf5x\xd1\x9cO\xf6C\xad8\xee\xe3\
+\xb4\x94\xddyw\x06\x1e\x1cw\x08\x07\x01\xac\xf5j>\
+\xb8\x1f\xeb\x84\x8c\xa1\xca\x02h!\xe4\xcf\x07\x93T\xec\
+\xb6\xc9\xf6\xaaW\x9b#\xe9\x00\x94H1O%\x86\xac\
+_\xad?\x02\x1d\x89!\xf3\xcd>\xd4\x93SY\xbf\x12\
+\x84\xe6\xa9\x00\xdf\xf8\x08\x18\xcd\x03\x01\x85\x84\x88\xde|\
+\xfb\x98Jx\xbf\xbf\xbb\x0e\x95\x02\xfb\xb2\xbf\x87\x94\x11\
+\xc0\x83b\xfb\xde\xfcV\xe9\xcd\x84m\xb8\xed\xe1\xb8W\
+O3\x96i\xeb\x15\x19\x8f}\xb9\x93\x89\xacq4\xae\
+\xf6;\x01\x93u\x9a2hU)\xc7\x82\xefsT\xec\
+q\xc9$i^\x05\x0e\xd6\x1b\x07\xd2z\xd7#\x9e-\
+U\xee\xc7\xbeg\x7f(\xb9<\xbd\xe0d>!\x13\xb0\
+\x05[\xff*&\x1dI]%\x06\xb4L\x18\xe7\x9e$\
+S\xe2>\xc96A\xd9K\x97=\x11\x0bH\xc0\x8a\x8b\
+\x87l\x95u\x0cq\x98\x5c\x08\xd5\xb3\xad\xc7\x1f\xd2(\
+e\xdc\xb0\xb5W\x22\xabw\xac\xb5D\xa4\x83\x0dZ\x89\
+\xf3\xa3z\xfa\x8f\x08[\xb5z$\x99\x22\xbf\x08\x09\xe1\
+\xf6\x0baK\xe0\x09\xca/\xb0F\xee\xbbys\xd8J\
+\xd5\x80\xeaQ&\x96\xb7\x0f\x0f[X\xe0\x8b\x94\xcc\xfa\
+\xe1\xaf\xf9\xbe'%\x14`I\x1cp\xcc\xed3d\xa6\
+\x90\xbbiI@\xdeL\x97^\xa51\xf5\xb0\xab%\xd3\
+\xfe\xb1\x90\xa5\xce~\x8e\x0a\x9d\xef\xads\xd7\xa9 \xb0\
+\x90\xbf\xce\xfb\x8b\xc4\x13j$\xc8\x19\xeb\xc7ye\xff\
+\xcfJ\xff\xe6\xa0\xe4\xde \x17\x99\xe3\xba\xf9Q\xd8J\
+'=\x03\x12\x15\xd6bA\xc7\xa9\xa1U\x047TB\
+\xb1\xfd\xfd\xe6aa\xd3|}K\xcc\xd7*l\xe5:\
+\x19\xbf\xd2B\xfe\xaf\xb4c\xe9\x83am[|\xe7\xdc\
+k[\x95K\xfb\xa4\x84\xd1\xe7\xc2\xda\xed\x5c4l\xd1\
+\x0f\x0f\xb5\xfa\xd0\xab\xaf\xf3\xd2\xfe\xff\x8b\x12\x02\x9e;\
+\xa8q\xca\xc5\xb5\xf0v\xeay\x8ep:\x02\xea\xf15\
+s\x81C\x22\xba\x90\x02_\x0d[\x10\xbf\xe5\xf7t\x5c\
+0z\x8a\xc7;\xcd\xdc\x1b\xc3\xb3g\xc8y\x91\xea\xbe\
+b\xf3\xcaM \x0en\x1a\xb6\xf4\xa8\xe3\x88h\xc1\xf1\
+\xa9S\xe1\xf03-\x80\xfa\xccB*Y\x81R\xb2\xfc\
+\xab\xe0\x0e\x87\x86\xb5\xd7s\x87\xf3\x86s\xa7\x00\xe7\xc5\
+S\x80\xf3\xc6=o\x9a\x90\xba\xe4\xe3\xd2/j\x7f5\
+\xa9\x82\x81\xf6\xb7Q\x98\xc9\xeeR\x9f}J\xdc\xbcw\
+\x15\xc0\xbd5l%\xeb\x96\xbfW\x89\xc2$\x1d/Y\
+\xd0W\x85\xb5\xc7p\x93\xbd7\xde{\xe3\x09r\xdfl\
+E:\x88}\xfd\x1e\xf9\xf9I\x96X\x85&\xf3\xc0\xfe\
+e\x1dH\xdcC\x82I\x00\xe0\x0c\xc9\x04E\x91\x17j\
+-\xd2:\x9d\x9f\x87+A\x85\xbbZ-~)l\x05\
+5\xff\xfb\xf1\xdd\x93\x9c\xac\xdev\xe7I\x97\xd8/\x92\
+R\xc8B\xe7s\xee\xe7\xe4\xedp\x9fTaC\x0f>\
+\xae\x06\xa4\x84\xc8\xe8$\x14\x90\x1ej\xd1@.\x99\x5c\
+\x0e\xe3\x95\xc2V-c8L\xf8\xe3\xfc\xf8,\xd8\xe2\
+\x94\xa9Vo\xd7o\xdd\xda_pG\xf0G \x17 \
+z%\x22\x92c\xa6d'=\xbf\xe4\x0a\xa8\xfd5\xfd\
+\xfe\xe2\xa2z\xc6L\xc6\xb9\xf9l\xd8\x8a\x1c?\x913\
+\x95\xd0\xce\x84/\xc4\xa3\xc4\xc3px\xd8*\x11#\x01\
+L\x95/U\x1b*\xb1\x98\xe7\xf5\xf6Va+u\x18\
+\xaa\x1dTF\xf8\xed\x10\x16\xc9y\xb3\xaf\xc8\xa4\xbe\x1a\
+\xb6b\xb1\x95Y\x91A\x05\xa5M9\x88\xe13a\xed\
+\xf7\xf7\x87\xa5\x03r\xe2\x02\xcdG&S\x19\x8e\x84\x1c\
+\xd4\xc4WA\xcd\x8d\x1b\xb4\xa1\x02q\x10\x89\x17\xcdr\
+26\xb6:\x808\xf0K\x80;g|A\x1c@\x9a\
+@\xc4\xb2\x22Z\xfa\xc4\xcf\xc9\xcc\x8f@?\xaf\xa7t\
+\xbe9\x90\x1d\x0bv9\xa02+\x1c=\x8e\x0429\
+\x95\x7f\x0e\xae\x80\x9f\x03\xde\xb3\xd8\x83\x8c\x22\x1bS\xc9\
+q\x9f=\xab\xa6\x05\xab\x95\xc2\x81)\x03/\xe0[\xb8\
+\x0c\x04\xd6\xd9l\xd5\xe9w\xf6\xf7\xa1w\xbf\xafL\x0b\
+`8D\x1c|P\xf4\xa5\x82\xbf\x9b\xe4\xce\xab\x0a\xf8\
+\x22{7\x1f\xec\x16\xa8\xde\xfb\x1e\xb2\xbc\xe9 \x80\xf4\
+H\x87\xee\xf9\xfb\xfd\xbe\x15\xe3\x88\x94a\x929M\xe8\
+\xec\xa8\xe7\xfa\x7f\xce\x10\xb6b\xa9V9\x06\xfduP\
+}\xa8\xe4\xdc\xe6\x8a\xa4\xfb\x02\x19_d\xec\xe6\xfb9\
+\xbf\xe3\x12\xe08-\x81\xff\x1c\x90\x0b\xbc\x93;`s\
+\x5c\xaa@\x1c\x88\x14\x98\x03\x98.\x01P\xf2b=k\
+\xba\xe7\xd7\xf5\xfeW\xaf\xa6\xf7w]\x17\xcb\xe7\xdf\x93\
+\xaby\xae\x02k\x09\xa2~\xbc\xcdk\x7f\xef:\xcdG\
+\x0e\xe3\xd2\x221'\xae\xae\x94\xdc\x03\xb8&\xaeP\x08\
+\x88\xdd\xbd\xfe\xd6\x95J\xd2\xa7\x93L\xe7\xdb3\x92\xa3\
+d\xa1\x92\xe4\xa7Zy@\xcb\xfbJ\x0c\xc4\x8f\x83\x10\
+\xb2\x02\x97\xc3QUq\x9f\x7f\x7f\x99O\xf3}\xf6\xe4\
+\x8c\xde?\x03\xf5\xaa\xc4%\xc4\xb4d\xb1R\xc7\xba>\
+\x97#\xe7y\xec\xc9@\xe5K\xf9< k\xf6\xce\x99\
+\xfc\xb6WM,\xd4\x05\x85NdC\x1c\xef\xd3A\xf3\
+\xd2$kZ\xc83\xe7u&\x104\x8e*~\x9e\xbf\
+\xeb\xe7\x80\xf6\x90\x7f\x01\x06\xc7O\xa5_\x80g\xbf\xf2\
+|\x05\xdc\xe6\xdd\xa2^0\x07\xec\xe6W\x8f\x00\xe8e\
+\x029\xc0\xf6\xfbN\xd6os\x9d\xb0U%\xda\x01\xca\
+q\xf19TFT$%\x18@\xcd\xef\x1e\xb6\x22\x19\
+T\xf1\xe6\x10\xdb'\xfb}\xdeu\xf6\xb2\x8ed\xcb\x9c\
+G\x12% \x85\xee\xcb\xba\x95\xe8\x03M\xb7n\x9c;\
+{;r^\x0eQ\xce\x83\xba\x9e\xdc\xdf\x0a\x89\xe2\xba\
+\xb2\x17\xb9X\xda\xb58\x19\x07\x90O\x90\xfdtL\xc8\
+e\xd5<u\x1e\xbao\xd7\xe99\xe3\x12IG\xa3\xed\
+6\x13\xa2\x81L\x98\xcaU\xb5\x8e\xf0/8Z\xc8\xba\
+.\x15\xb6\xaaX\xab\xe8\xe4s)\x16}\x09\x13\xe7@\
+VR\x87\xcf\x87\xb5c\xe3\x8f\xc3\x16\x87\xb4\xa0\xabd\
+\xee \x89r\xddn/\x1d\xb6\xf4\xa8\x17\xf7\x00\x0e\x06\
+$[\xe9\x80m\xfe)\xac\xbd~\x22l\xe5hy.\
+_\x0f[\x12*\xc6\x017A!\x9f\x04\x08\x12\xca\x12\
+;\x02\xf8\x0c\xcc7/\x98\xf5\xa6K]\x89C\xef9\
+ \x13\x04\xf9\xd7\xfb\xfc{aK\xe5\xd4\xdf\x17Y$\
+\xce\x08*\x11\x02c\x81\xa9\x80\xc6\xbe\x80\x1bJ+\x8f\
+\x04\xa5\xfd\xc6<\x96x0\x8f\x9d\x7f\xb8g\xb4XX\
+\xd7\xbd\x0c%?\xc9\xf9j\xbf\xa1B\x91\x89\xad\xed#\
+\xc2\x16\x0e\x87J\x88g\x85\xb6*\xd7T%\x9ck\x12\
+;_\xca\x8a2\xe85\x16\xf2\xfbl\xee\x1d-1\xc5\
+\x81%Q\x97\xeb`|\xc0\xf8\xc0\xa9R\xf9\xb2\xf6\xbe\
+/[\xc9b;w\xd2o\xd9\xee\x0b\x9b*\xcc\xd7\xd9\
+^gE\xd6\xb5\xe9\xf4\xd5\x05\x86\xd6\xa7ym\xdd\xd9\
+Gzr@\x05\x9b\xec\xdd\x0f\xef&\xfc\x9b\xe1\xfe\xc3\
+}\x87\xfbN\x95\xd5) /r;-t\xb8\x11n\
+\x11\xb6J\x949\x07\xf2\xfa\x86o\x0d\xdf\x1c\x9a\x7f\xbe\
+}d\xd8BN7\xbc+\xac\xbd\x9e1\x93\x0b\xee\xbd\
+\xd6\xdek\xee\xbdV^\xff\xd7\x97@\xaa \xe2z\xb3\
+\xef\x12\xb6\xe2\x82\x90\xa0\x08\x88\xf9\xab'$\xc2\xec\xff\
+\xe3\x9e\xb0\xff*\x1cj\xdd\xfc\x8d\xb0\xa5\xd5`\xfc\xed\
+\xb0U\x00\xa4\xd2\x0d\xfa\x9f\xadN5\x0e\x19\x9fT|\
+!\x11~\xc5\x19!\xb9\xbd\xf5\x1c`Q+\xd8~<\
+\xac\xbd\x9e\x17\xb6\xf4poo\x1f\xb6$0*0\xb5\
+\x1e\xb4\xec\x8a\x7fpI\x09@%`=G-\x01\xe9\
+/\x97\x9a\x86}3[[\xf4\x94\x8f\x7f\x1c\xd6>\xff\
+\x96\xa9j\x96$\xc3\x9bw\x84M\x08\x8e9\xd1 \x0e\
+\x93X\xc5\x11\x00\x09\x00)e?\x82\x083/% \
+\xd2\x9f\x86\xe8\xab\xf9\xc4\xafr\xdd\xa9\x1eW-h\xfc\
+%$\x9e\x12W\xb8#2A]\x09\x80\x9c/8\x16\
+JE\x06\xc2!9\x06\x0aQ\xe0\xbaq%$\xa2\xa5\
+\x0ak\x890\x1b?\x12\xb6$\x06\x0a\xfa\x9f-.\x15\
+\xff&\x17D\xa9\xdb\xa4\xff \xb0/?\xe4YI\x82\
+\x7f\xfc|\x7f\xb8M|^=\x7f\x5c\x02\x9d\x1a\xc8\xf6\
+o\xc3\x96\xe7(AZd\x88\x990\xaf\xc2D\xee\xb7\
+\xc8q\xf9s\x90\x19\xb5\xbf(\xe4'R\xd5\xbe\xb8\xaf\
+d]Ro\x11{%R\x14d:U\x81'o\x90\
+P\x8a\xf1\xe9a\xab\x9e\x8b\xabM.\xfb\x9e\xe1fa\
+\xcb\x8d\x04e\xc8x\x89Ue\xca\x06\xa6\xb7\xd0At\
+\xef\xb0\xf6\xb9\xbf\x15\xd6\xbe\xff\xd2\xe6\xcb\x9b/\xaf\x0e\
+\x92^NO\x05\x98\xc3e\x03U\x11\xee\xc9\x00\xc9s\
+\xc9\xb8\xe5\xc4\x1e\xbf\x1c\xb6r\xac8\xc4\x1c.\x95=\
+\x0bG\xa0,\x00\x5c*\xbf\xf3\x81\xc5\xf1\xee\x03\xf6\xbe\
+\x97\xcd\xef\xfb\xfb\xbe\x92\xea\xa0\xe1\x98\xab$\xf5d\x82\
+=\x04\x95#\xcd\xb1^\xe4\xe2v\x07\xea*\xeet\xc3\
+\x8d\x13n\x00\x1b\xae\x80\xf7W2\x10\x10(\x9d\xd8U\
+\x9a\x17\x08\xec|\xbd\x97\xe8z\xf9A\x9e/\xd8A\x91\
+=\xafEe`v\xf4\xcf\xcf\xe7\xf9\x8b\xd8p\xbbD\
+\xc8\x01\x10+z\xba\xa9\xc7^\x90\xac$\x9b,y\xb9\
+$\x8f\xaa^\x1b\xbd\xba\x9e7\xa8\x15\x9d\xfb\x1e\xea\xef\
+\xfe9F\x1c\x15\xf3\xc4|\x87P0\xaf\xfc\xbf\x04\x90\
+J\x5cG\x86V\xe3\xdf\xb3\xab\x836\x0bPT\xba\xfd\
+\xbd\xc0\x7f9\xd0\xe6\xc4B\x0f\xbd\x16 \xf5-\x03\xe6\
+\x97\x0d\xdb<\xf3\xbc8&>\x87\xac\x1c\x8e\x03\xeb\xdd\
+\xe7\xf4\x09\x00\xaf=\xc7\xc4\x09\xbb\xc9\x0d+p\x14\x98\
+\x83J\xdfi\xce\x88\x17\xa9Mn\xfc\x95P\xe8\xd8\xe2\
+\xa3\xae?U\xf6\xcd\x1b\xac\xce\xdf\x09[\xf5\xa8\xe9i\
+4\x9e\xe6\xa9y\x06\x12\xae\x82,P\xb4\x0f-d\x8f\
+3\x19c\x06\x18-l\x98[\x99\xee0\xf7\xdc\xb5\xb9\
+\xb7\x0b\x11S-\x19d1\xa9\x03p\x808\xc2\x17\x9e\
+\x9ai\x96\x03e\xc8ub\xffr\x9d\x12\x89\xbd:\x88\
+}\xc6\xbe\xd0\xff\x9e\xe7\xd4\xcfo\x95s\x8e\xb5L\xba\
+\x80\xbd\x9f?\x12&\xf6A\x9f\xdb\xb3\xcf\xab\xdc\x82\xbe\
+\x1bw\xf3\xc3zs\xff}\xe5\xdd\xf5\xab(\xe2\x98\xd0\
+\xc3}\xf9\xb0\xd5<\xce\x9e\xc7R'\xb1^\x9c/d\
+\xdd<_\xeb\xc5\xbav\x1f\xceM\xe3\xe8z\xecc\x19\
+\x88n\xfe l%o\x94=\xee\x15(\x9b\xd7\xe6Q\
+Vn+02\x9e\xce\x0b\xd7\xe1\xfcC:\x0b\xba\xcb\
+\xe1P\xd1\xd3\xc2\xe1\xf7%X\xbd\x1f.\x10\x08(\x15\
+x\xa4\xe4\xb9\xbe\xe8hW\xa2\xfd\xb3a+\x96z\x8e\
+b\x87\xec*\xb9\xab\xec\xb5E\x0aW\xba\xd3*\xd1 \
+\xea\xe6\x9d\xeb6\x1f!_\xbc\xbf\x84\xf4\xf7\xc2V\x81\
+[\xcam\x15\xb42!\xa4\x9b\x8f\x87-\xfb\x02\xbd\xfb\
+\xd2/\x87\xfc /\x96\xfe\x88J1RBd\x7fz\
+\xf1\xabpb\xfdx\xffo\x85\xad\x02]\x15\xa0/\x85\
+\xad\x90\x18t\x9c%b\x9c\xc3\x1f\xce\xd6\xa6?\x9b\xd9\
+\xba\xb1V\xb7\xab\x9c\x13=\xa0\xaa\x9d\xaaEAY%\
+\x96\xb2uH\x8bA!\x1a\xd31\xac\xfb\x84\x8cHd\
+\xd2\xf6\x99a\xab@D\x00\x9d$a\x15\x80hQ\x91\
+`L\xf5\x93*\x14P;\x91@0N\x12\xdb}\x00\
+\xec\xff\x9d\x8f\xd6\xbb\xd6$d^\x0aU\x09\x81\x1d\x7f\
+9\xd9\xeb\xd3OB\x82\xb6}k\xd8TI\x9b\x10%\
+U\x09~\xc2\x1cp\x14Y\xec[\x12\x91\x92\x15_\x89\
+\x9f\xcd\x176\x9f\xdf|a\xd5\xba\xa4\x02\xad\xf2+\xc0\
+\x85t\xb5\x1fJ\x5c\xffCX;\xf6\xdf\xb4\xf7\xcd{\
+\x03\xa1\xf0\xe1\xb0\xb6m?$\xac\xfd\xfc\xc5{_\xb4\
+\xf7ES\x82k&+T\xe9\xbbH\xd8$\xf75\x91\
+\x9d\x8d\xf7\xc9\x1em\xcf\xc9\xf9k\x5c\xc8\x8e&\x99f\
+\xfb\xed\x89|o\xb8\xddp\xfb\xe1\xf6\x0b\xa9w\x058\
+\x12<7\x0a[\xd4#\xea<\x16\xc8A\xd8H$]\
+?lU\xa9\xb5\xde\x92\xfd\x7f\x92\x01|\xe0\x9e=;\
+7\x08k\xe3\xff\x94fOn\xaf\x7f2'h\xda\x98\
+\xbd|j\xb1\x85\x94\x01\xf9\xc6\x15v\x85\x99\xd4L\xe2\
+tx\xe1\xf0\x82\xe1\x05S\x01rB8\x95\x7fi\x1e\
+\x9b\x1fIbY\x89B\xadr\xef\xcfV\xa4\x9d\xb0\xd5\
+\xb8f\x85\x5c\xc5\x14\xa4\x1f\xf2\xa6\x0a\x87\xa9\x0fO.\
+\x17rc\xdf\x93\xc2V\xe7\x03\xb2\xc8\x17\xfe?\xca\xee\
+;\xdc\xb6\xab*\x1f\xff\xdd\xeb\xdc\x00I\xa4\xf7*\xbd\
+\x97\xd0\xbb\x80\x88\x80\xf4\x0eA\x10\x90@\x88\xb4\x00R\
+\x02J\x91\xde\x9b\x94\x10J\xa8\x82\x80\x22\x01\x04\x94\x22\
+\xa041\x01\x14\xe9\x04\x08 Hh\x92\xd0\xce\xda\xbf\
+5\xd6\x1a\x9f\xb1\xe6\x9d\x97<\xbf\xe7{\xc6\x1f\xfb9\
+\xf7\x9e\xb3\xcf\xdak\xcd9\xe6\x18\xefx\xc7;\x16\xe0\
+b\xb8f\xd8t\xfd\xf7\x0akD\x0b%~\xe2\x05-\
+\x84ZA$\xe6\x00Q\xe7*m\xb5\xbf\x08k\xc4R\
+\x93AU\x894m\x8b\x9cV1\xef\x8ec\x13x\xf8\
+ls\xee\x8a/\xb5\x9e\xd0\xcaH-\x03\x9f\xa3\x12q\
+\xf10F\xd3#\xc3\x9a\xfb-\xc1\xe7\x87id\xe8Y\
+'nz\xfb\xd4t\x03\xf4\x11GM\x00\x12`WS\
+\x5c\xb4\xb4\xb9>\xda+Z\x09\x1e\x18\xd60\xc6$\xc6\
+/\x0fk\x0a\x04]+\x91\xf3\xb5\xfe\xae\xffw\x0e\x13\
+\xb3\xcfV\xab\xd22\xc2\xe4\xcbi\x16\xc5\xc4\x13\xd7d\
+\xa1p{\x96\xb0\x86I\x95\x8c\x93\x02(L\x0b\xd0\xb2\
+qlX\x03\x80`Jd\x9cUb\xa6y\x9f\xb7/\
+\x0ak\x00\x11\xfe\x07\x93$\xf3\xf5\x12!\xa4\x15\x92\x80\
+\xd9\xde\x12\xbf\xcb\x0dl\xce\xe5\xbc\xd0\xaf\x9fj\xb2\xd3\
+\x07\x0e\xcd\xfcY5?\x0e\xaaOg\xaf\xc1\xf4\xc1\xb7\
+\xd7\x9d\xeczy@\x9f\xb7\xe9\xa5>z\xae\xb1/c\
+C^\xd7 PA\xacyi\x02\x06\xef\xcb\xc4\xfaG\
++U\x025v\xfan\xee\x0d\x1c\xee\x11\xd6 y\x12\
+WT\x95\x1c\xe7Rj\xbe\x906\x15\xaaL\xa8\x5c\x17\
+\xc7\xb5\xe7\xb0\xec\x9d\x80$:\x98\xfa\xc0\x15C@\xe2\
+\xbd\xa9\xca\xf3\xb2q{\xf5\xe8\xd3\xa2~\xf6\xbdl\x02\
+E\x81\xcdJa_\x0e@\x09\x8aD\xa2\xef\xb1\xbe`\
+\x89\xc5-\x819\x07\xd8\x8b\x09\x0a\xa0U\x1ezj\xa6\
+\xdf[+W\xa8\xd5Kb\xf1?y_\x86\x14\x01\xb9\
+@R)\xa9gR}\xe7P\xce\xd0M7\x00l\xac\
+\x14\xffe\xc1\x1b\x17\xe7\xdf\x01,\xbb\xfb\x8a&n\xdd\
+\x0f\xf3\x81\x89\x91\x9c\xbe\xfb\xfd\x9cW\xbf\xfd\xcfL\xdc\
+?\x94=2o\xcc\x03\xfa\xbf\xb6_\xd8~av\x8c\
+\xcb|\xd6\x04\x08*\xb1D\xe9\xe9\xd4\xb4\xf7|\x22\x1d\
+1\xc7\xa3B\xb7\xce\x83^\x02Q\xc0\x06\x07\xd0S\xf6\
+\xac\x87\xedi\xcc\xf7\xb5n\x88\x1d\xf6\x89\x9a\x04H@\
+$1w\xbf\xacK?\x8f\x19 \x81\x91P_+\x13\
+\xa4^\x5c\xcd\xd8F\xd4}s\xd6%b\x17\xeaz\xfd\
+}>\x9f\xc3\xbfK\xb0\xac\xcf\xbeW\x1aP!\x81!\
+\xc6\xe79[\x87\xfe_\x22\x9c\x0c\x8eb\xd48p\x8d\
+\x15\xbc\xc1\xa26[S=\xb4\x06|:\x9f\xa3}\x08\
+`\x90X\xe4\xfe\xafq-\x12G\x81\xdb\xed3\xe1q\
+\xbf\xadSS/\xaeX\xd4\xb8\xe5}\x01i\xfe\x9e/\
+\xbdZ\x12L\xfbN\xe2z\x91b\x80,\xdfg+B\
+!\xd6\xb7\x0ek\x12\xac\xef\xe4\xe7\xb3\xfes\x8a\xc1\x9e\
+\xe7/\x8c\xab\xba\xcf\x00\x01\xcf\xc9\xfa\xee\x01G@\x8b\
+\x04\x5c\xe2\xe8\xba\x04\x98y\x9f+q\xf6\xff\xd6\x0d&\
+\x12\xe0\xa5\x1fk\xe4::\xcar\x89x\xa9@\xf3S\
+\xd6\x11\xd5}\xa2\xa1\xa8\x85=`\xe4s\xa3\xa8;\xf8\
+]/&\x03\xe0Y\x05\x19s\xca\x97\xeb\xf5{\x80\x0e\
+~\x8e\xdf\xce}Q\x89<\xbf.A\xfe\xca\xa2\x8d#\
+@\xb0\xceP\x0ck_Y\xd7\xc9|\xab\x0al77\
+\xb8\x9e\x9b\xef\x01'\xc9\x1c\xdb\xbe4\xac\x11qK\x15\
+\xe5J\x98\xfa\xe9\x16\xd6\xa1\xfb\xa2\xc2\x9dc\x98\xeas\
+\x0aH\xf9)\x95\x04L\x22\xa2N\x02'\x22u\x02F\
+\x94rT\xe5\x0ct\x0a\x18\xc9y\xe6E\xa9\xcc\xc0\x92\
+\xa8\xd1~b\xb4\x80\xda\x18C\xf6\x88f=a\xb4\x10\
+\x99\xa4\x02/0\xcaBB\x01\x1d\x12\x08\xad\x0b9-\
+\xa7\xee\xff\xd3g\xdb\xb3yqXS\xf9\xcaJU\xf5\
+\x0a\xd3vC\xc5\xcd9\xcd%\x0e\xa8GSB\xa5\x22\
+#Q\xc4\x9c\xa0\x11\x91\x95\xb4\xf1\x22ak \x07@\
+(\x0a?\x0a.\xf11SH\xee\x16\xd6\x00/\x00\x1f\
+\x15n\xeb\xd9\xd4\x14\xe7\x85}\x88\xc1`\x7f\xf99Z\
+\x16\x00&\xcc\x03\xeb\x02\xe0\xa0\xe2\xee|\xb3\x9f\x05\xbe\
+\x9dfM=__\x00 \xeb\x95f\x8d\xf3Ze\xdd\
+\xb9\xf1\xa9\xd4\xb8\xd8\x9b\xfe\xed\x11\x09\xe0\xdaw\xb9\x9e\
+\x8c\x93\xa6\xce?\xa5\x83\xf3X\xb7\xc9\x0b,b[\xa7\
+\xe6T\xab\xd4\xc6\x9a\x99\x16\xafJ\x8d\xaa;7\xc00\
+\xb1\xb0\xd4\xd2\x18\x0f\x1d\xef>\x1e\xda\xb4|\xa4\xe8\xef\
+\xf0\xa0\xb0\xe9\xf5\xc0\xb0\xe9\xf5#\xc3G\x87\xa0(_\
+,lz\xff\xbfX\xc6\xd0\x0d\xaf\x9f\xecus\xa5\xf3\
+\xef\xe6Jg\xae\xc3\xf1o\xc7\xb7\x8eomz\xd6\xb3\
+\x15\xa3\xc6\xfde\xafvM\x95!\xde\xf9\xb4\xd9\xf6\x8c\
+\xf7\x0c[\x01\x9a\xf1\x8f\xc3\x1aJ\x7f\xc4\xef\xd7m\x12\
+\xff\x04\x1e<\xcf\xaa\xa8JLs\x9fmO\xd5r\xac\
+]\x00\x00 \x00IDATZ\xa6[m\xef\x1b6\
+'\x803%|JKg\xa0j\x1e7\xf6\xbeU{\
+`\xbchX#n\x16\xc0\xd8\xf4\xfb\xe3]\xc2\xa6\xd7\
+;Mv\xe7f\xde\xfa;\xa6\xac\xe4\x1d\xcd\xfa\xcd\xd6\
+\xa1\x02\x1cr\xfc[\xf9\xcd\x8c\xdf6_\x0d[[\x93\
+\xc6O\x86\xcd\x95\xea\xe5s\xe8MO\xcd\x04\xc0\x94q\
+\xae\xfc5\xbf\x11\x0ag\xa1q\xa6\xc0YL\xe9<7\
+\x86K\x85M\xe1\xd0aa\x0d\xc0\x90\x95z=\xdc\xc5\
+\x0cJ`\xcd\x14\x04\x0c@\xeb\xba>\xbf\x16\xd5|\x1f\
+\xf1t\xb5d\xf1\xab\x12C\x05\xad\xa4\x8a\xd7T\x8bd\
+ \x0d\xc7L\xf6\x8a\x06\xb8\xccDY\x01\xa9\xc6\x0cf\
+kQ\x01\x88k+\xed\xe2?0|\x14|3\xd1\x05\
+\xa4\x16s\xdb\xba\xa0\x11\xa0\x15\x09\x93$\x81\xaf\x8a\x0f\
+\xb4\xf4`\xe6u\xd3W\xb4\x06\xec\xd7rFT;\xb5\
+[\xaaG\x1e0\x98~\xb2\x98'\xe2Q\x1a\x22\xa6\xd5\
+\x00P\xf3\xfd7\xaf\x0bk\x12f\xcf%\xe3\x82jQ\
+T\xf0\x03\x08\x12\xe55\x1d/\x81E\xd3\xe7\x14\x98\x8a\
+9\xe0\xfe*X&\x00L\xc4\xbd\x80\xb6\xf7-\xda\x13\
+\x05\x94g>^L\xe6Y\xadu\xd5\xc4\xe1_\x88\x03\
+\xce\xe3I/\xd3\x8c\x0dM\xf1\xe8\xbd\xe3\x8b\xc2\xd6\x9e\
+\x8e\xf9\xe0\xf9\xdfT\x1f\xbcqR\xf3\x9e\xd8T\xcc\xf5\
+H<q\x99;Z\x01Z\xe0\xe5\xb1\xf1n\x11\xd6P\
+e^\x1e\xb6.\xacBR\xb2\xf7\x9e\x98B\xcdoU\
+\xc1\xf5\xbe\x1e\xb4\x85\xe2\x03$bX\x01\xb5\x83F\xa0\
+( \xf3\xc0Q\x04\x9f\xb9\xccC\xdcOMV\xa2/\
+\xb1\x01\x0cX\xf0=\x05U\x05\xc2\x01.A\xd0\xbbs\
+b\x8e3\xca\x80ws\x8e\xac\x88\x0a\x80\xcf\xd9%\x8c\
+\x022\x9fg\xff\x8a\xf8\xf2\xf9\x04\xf0=\xc5\xfd\xa7\xa5\
+\x86\xbfo/?\x04\xcb\xcf_\x07 \x90\x89\xac\xebw\
+ \x0b,%~\x12\xc3\x0b\xd6\x98\xba\xe5\xa0\x06<\x08\
+\xd8=\xaf_W\x8f\xf8r\xbfv6\x93\xc5}\xdb\xfe\
+f\xdbT\xf2\xcdi\xdd\x0f`\xf9y\x8d\x15\x5c\xbe>\
+\x95\xf7\xfb\x94\xec\xc1O\x80\xa2z\x89T\xd4\xa9\xb2\xbf\
+z\xb6\x12\xa3\xda>/\xac\x19\xc3\xa3\x97\xa8\xab\xa4W\
+\xa2\xa9\xa2*P;!UDQ\xe3%Lk%|\
+\xb9^Hm?\x06\xcd\xfd\xf2<\xf6T\x22\xb6\xaf\xca\
+q\xdd\xafN\x05\xb9\xefy\xb7.9\xa6\xacdT \
+\x0e \xf0\xfc \xe5\x12^\x09\x8c}A\xad]\x82\xa0\
+\x12\x0a\x18p\x9f\xfa\x8a-\x80\xc2\xf5\x0b\xd0PY\xad\
+\x0b\xbfG\xc5?\x01\x82\x9a/\xde\xb7\xf28h\x00E\
+*H7\xca\x84\x94\xc3\x14q\x0b,\x01\x02\xfe\xee\xbf\
+$\xd5\xbe\x1f\xa3\xe6\xefa&\x00&P\xf1\x1d<\xfe\
+}eH,\x7f\x07Ro?\xfa|\xaeO\x22\x02\xe1\
+7\x9d\xe0V\xd9\x9b\xff\xc8%\xc1*\xed\x03\x81\xf7\xa5\
+R\x13@\xc2\xe9`9}\x8d?\x5c\x9e\xfb:\xd6\x93\
+\x16\xc1\x12(\xa7\x7f+\xd5X\x95R\x9f\x9bX\x92\x84\
+\x87_\xf3\xea\xfd\xba\x1e\xefJ\x941# \xe0\x12\xe6\
+^t\xcf:\x03\x08\x9dV\x8b\x91\xe7\xd0\x7f/\xe1\x04\
+$\x09\xf0\xec+\xc0\x9b\xc4\x1b\xf5\xd8\x98\xa1~\xaa\x85\
+\xc0\xc3\xe7\xc1`\x10H\x00\xfehG\xf8;\xfc\xb0\xf5\
+&Q\xc1\xbc\xe9\xd5\xf0Un%\xe8z}U:\x88\
+le \x22q\xdb\xfesX#Z) \x11H\xb8\
+~\x80\x14f\x8d\xbf\xeb\xbe% [b\x80\xa8\xa4\x12\
+1~\x08\xd3\x00\xd0f\xfdx\xce\xb7\x0ck\x00 ~\
+\xddy%\x0e\xc8\xf5H\x1cx\xb8PX\xb3/\x88v\
+\x01\x96^\xb2P#7\xff\x17\xd6\xb4\xaePm\xb7\xae\
+/\x5c\xe3S\x97\xbf\xeb\xdc\xe6g:\x86U%\x84\xd9\
+\x9aX\xad\x02\xa8\xa1*\xa5*\x5c\xb9\x7f\xc7\x7f\x0e[\
+\x13\xea\xe1\x8aa\xcd\xf5w-J\x95\x00\xfc$l=\
+\xaf\x8a\xba\x8baE\xfd?+K\xd1\xa1\x1e=\xea\xa6\
+\x7fl\xcf\x1d6\xab\x93O\xb6\x8a\x16\x16C\x85\xc8\x97\
+\x00\x9c\x16C\xce\xe5.\xc6\x81\xe7\x84\xa2\xaae\x80?\
+\x12\xe0\x9a\x1e\xe0\xbe\xe4\x18\xb1\xfa\xfd\x04|\xa8]\xeb\
+M\xaf\x804\xcf\xd3\xcd\xf3\xc2\x1a\xaa\xb0\x96M\xfb\x01\
+3\xc4\xdfWXJ\xf1\xc1:\xe7\x89\x1cg\x00\x8dA\
+rZc\xff*!\xb0^\x01U\xce7\x00\x05\xcd\x98\
+\x04\xcc0\xfa\x00\x92\xc4\x02\x87o\x0c_\x1f\xbe\xd1h\
+*<1[O\x00W\x91V}c\x9e\x93\xbd\x88A\
+\x06\x104\xed\xbf\xe1\xc9a\xeb>S\x81\x1d?\x1a\xb6\
+\xc6M\xc3\xab\xc3\x1a@8\xa9\xed;W\xd9\xb9\xea\xce\
+U\x9b\xf3%\xcf\x87\x99a\x1b\xeb\xef\xee\xc3\xa1\xc3\x1f\
+\xaf\xda\x15\x12\x84\xe1\xd2a\xd3\xdfy\xd7\xf8\xee\xf1]\
+k\x5c\xb9\xbdE\xaa\xce\x1b/L\x0b&+\xfb\xe3\x97\
+\xc2\xd6\x0a\xb01\x8d\xb5\xfe\xce\xb6\x88xo\xcf\x15\xd6\
+\x14\xc6\x8c\xbdS\xc0\x01\x8c\xa9pb\xcc\xaa0\xa7\xd8\
+\xa1\x0a\xf7p\xca\xf0\xf3!*\xd4?[\xe6\xcc\x8b\xb7\
+\xb6\x17\x0ak\xc6}gk\xc2\xf6\x1ea\xcdk\x8cu\
+\xbbb\xa3\xce\x9f=\xd0\x05\x80\xe4\xfb4@\xfc\xf2\xd5\
+1\xd76\x1f\x0fk*\xa5\xc4\xe8\xf2<1\x8d\x04\xe5\
+\xbb(\xd9\xb4\xce.\x16\xd6\xbcO\x9e\x13\xc3qa3\
+\xe0\xb6\xb4\xe4d\xdc1\x5c;lz\xfd\xfb\xb0\xe9}\
+\x0f\x0d[[\x9a\xb5\x08H\x04\xf7cX\x12i]\x99\
+\xb9K~!\x0f\xd0\xa2\xac\xc0*\xbe\xd0\x0a\xa5\xd50\
+\x19\x14\x80\xc8Pj\x98\xc7\x03\x02\xee\x01\x91\xe2m\xf9\
+\x03 \xd8\xb9\xa7\xd5\xd5\x14\x99\x04x\xabR\xee\xbct\
+N+pe\x22L\x5c\xd3\x98\xec\xca\x17M\x8b\xd3\x1a\
+\x9e\xeb`s\xc6\xb0\x06\x18\x17\x87*\xccb\x12d%\
+\xbbZ\xdb\x00\x84\x87\xcdV\xcc\x9a\x9a\xd6`\xaa\xdc+\
+\xc2\x9au\x93\xe7H\xb5\x06\x00\x12\xe5\x9b\xe2\x1bL\x03\
+\x80\xb18\xec\xfe\xb3U<T\xf9\xab\xf8\xd3\xb9,\x1e\
+R\x00\xf2\xdc\xe4\x07\xc6;\xa6\xa8\xe4~\xad\xcc\xceI\
+Z{9m\x22\x1az\xe6\x96\x9ed\x00TK\xa1\xcf\
+\x07\xb0\xb5\x8f1t\xdc\xef\x143\xde\xbb{\xa5\xb0D\
+\x0c\x9f\xba\xaaN\xcf\xe9\xcc\x17\x1b$\xd8\x1b\x0b\x88\xfe\
+i\x9e8Z\xea\x89\x90|T\x94\xe1\xdea\xcd\x5c\xdd\
+k\xe6\x81\xf8\x85E\xad6\xa6c\xc7|\xec\xcd\xd1\xf9\
+`^\xb7$l\x9b\xfb.T\xb4Z\xb0z\xa0,\xb0\
+\x9f\x9c\xc6\xb8\xb7\x9ez/\x91\xfdR\x8aR@8%\
+j\x02y\x07\x93\x04\x00\xe2\xf4\xfd\xb0\x86\xf2\xd5\x8b\xcd\
+\x09l-@\xd7\xe3z}\xaf\x87<)F5\x06\xcc\
+\xfb\xf8\x5c\xeb\xd8\xc0\xe5\xc1{\xed\xa7\x1b\xf4sr{\
+\xd1\x0e\x81\xad\x9e\xf4L\xd4\xeb\xf3\x18\x0f(P\x15`\
+\xafc\xec\x96^\xd8\x1bge\xec\xaeY\xe9\x97\x10R\
+O\x97\x00C\xe0\xce\x10\xb6\xaa\xa3\x87\xfb\x9f\x0f\x80\x9f\
+\xe4\x9c\xe1SS\xb4HB\x02x\x91p\xd3~\xf0|\
+\xb7\xd5\xd2\x01\x00\xd8\xf7~iQ\xf8Q\xde\x8fo\xe6\
+\x01\xf5\xf9t\x94\xefK\x87o#\xf8\xe2X\xadg\xf7\
+\xd9x8cCz\x8aV\xf6\xe6\xd7\xfa\xf7\xd5\x8ds\
+)\x87N\xfdX%]\x02!\xe1\xc1\x94p=\xfd\x18\
+\xc9~\xcc\xa3\x00\xd8\xbf\xafS\x0f\xe6\xfbP\xe2ez\
+\xc3 \xc4\xff\x9b\xeb\xba\x0f\xa08\xee\xb3u-\x1a\x12\
+\xdf~]t\x95\xde=\xc9\xac\xd9\xf4@@\xf6>\xd5\
+\x81,\x90>oG\xe5\xf6\xef\xfe\x8e\xfb\xd6\xcf\xa7\x17\
+\x80\xdb\xcf=\x03\x86#U9%\xc6b\xae-\x11I\
+\xf7]\xc0\xd8\x8f\x85s=\x9e\xbfDY\xa0\x090\xc8\
+\xca\xcct\xcf\x97\xf5{\xce%\xb1\xaa\xc4[ F\x15\
+\xd6>\xf7y\x8c\x97<\xa8\xd6\xd1\xb2\xbf\x1d\xfc\xeeC\
+?u\xc4:1]\xc4\xf8;\xf79\x0f\xfcb\xe6x\
+\x1f\x142\x07\xbbq9o\x08\x9b\xde\xe7Or\xbe\xb3\
+\x8a\x9a\x00\x5cB\x93\xf3\xd9K\x04Nbh\xec\x12\xed\
+\x09\xeb*\x01\xe2z\xae\x00\x1f\x00\x15\xea}\xafQa\
+}\xf9<>?fA\x8a\xe6U\xa2\xe3\xb9\xf8}\x0c\
+\x05\x0c\x06\x88\xbc@%\xaf\xbb\x12l\x95b\x81\xbf\xca\
+s&p\xfce%\xe6\xa8\xe1\xfe^G\x05\xacu\xc5\
+\xaf\xae\xfbt\xf1wD\xe62\x90\xa8DL\xa5\x1b\xc5\
+\xd1\xf3\x96\xf0'\xe5\xb4>\x87\xfb'\xa1\x97\x98[\xbf\
+\x12^\xfb\xd1\xbe\x01\x18\x98\x82 \xc0\x02\xb4y>\x80\
+\x12\x9f\x07\xc0\xd3\x03\xd0\xd4\xc0\xa9-g\xa0\x17\xc3\x82\
+c\x5c\xf0\xe6\xee\xd3\xe7\xbc{\x8a`\xbex\x9d;_\
+\xa2\xbb\xde\x87\xff\x15\x10K \x01S\xfc0\xd1U\xe7\
+\xa7\xfb\x84i@\x9c\xd1x==\xf3\xcf\x9cmM4\
+QS=\xbf\xf4\x93\xe3\xd5\xc2\xd6\x9e\xdf\xa8\xfb\xce\x95\
+\xdf\x17\xccVq\xc0\xf0\x89\xb0&\xe1\x15o\xe4\xf9(\
+\x911f\xb0\x12g~\xd3\xe7\x95Xu\x00\x12\x0d\x87\
+\xe1\x0ea\xeb:\x1d?\x10\xb6&\x94\x05\xd8\x99\x9a\x80\
+\x8a\x0aH\x91\xf8\x98\xded\xbf\x12\xc5\x03\x88\x13\xe72\
+'=\x03\xd6\xe1ia\xab\xc6\xc7\xe6/\xc2\x9a\x9e\xd6\
+G\x845\x95\xd8\x0c\xeckjB\xb6\x92\x16\xe5\x15\x83\
+\xe4\xec\x1d\x10\x8c\xa1\xd3k\x01\xd9?\x98\x0a]\xcf}\
+\xf9\x0f\xff\xff\xa8\xd9\xd6\xfbj\xcc#\xff\xf1\xda\xa5\xa2\
+7\xb7:\xdc/E\xb8v\x92\xe1\xf7\x89y]|v\
+^\x17\xc1\xc0;\xe3*\x22X\x1a\x03\xc9\x1c\x00\xa4\xfa\
+\x5c\xe6\xd4\x0f_\x0bK\xad\xa2(|}p\xb2\x0f\xcd\
+\xcc\x81\x05\xc83\xf5*\xc7\x0cO\xbbm\xd6\x98\x1a^\
+0<\x7fxA\x03\x8ceb\xb1\xf9\xab\xb0\xd5\xcf\xed\
+\xdcf\xe7\xd6;\xb7\xc9\x0a\xfb_4c`\xef\x9e\x94\
+\xf9\x04\x8cv/\xbb{\x99\xdd\xcb4c$\x0f\x5c*\
+\x85%\xca\x97\x89X\x10\xf5\x83\xaaO\xecP\x8bL\xf9\
+\xf9<\xb7\xc4/U\xb1L\xffb<\xa5JzQ\xe9\
+\xcf\x9ej\xedAu\xbfv\x93X\xd3\x18x\xd8d\xd3\
+\xba\x1b\xff\x22,\xd5\xdc/\xbd2'\xb6W\x0b[\x01\
+\x96\xed%\xb6\x17\xdf^|\xa5x\x97\xa8)\x11L\xf1\
+\x84\xbc\x85\x96\xc0\xcb\x16\xeaw\x15\x8c\xb2UY\xe1)\
+\x94\x0cB\xcb\xa0\xa6\x5cd\xa5_BXc!\xdf\xb4\
+hE\xd4\xdf\xcd\x96\xaf\xe1\x85\xd3\x93{\xc1\xcc\xc0X\
+\xd6?\xe6T\xb6\xc6\xa1\xa6\xf3\x87\xc3\xa3\xc3\xd6\xf8b\
+|fX\xf3y\xed?\xad\xceD\xa7{\xc6\x90\x04Q\
+<\x90\xfe\x7f{dX\xe3\x8f\x00!9\xadi|w\
+X\xe3\xbf~\x1d\xd6\xe4=z\xec\xe5C\xe2Z\xfb\x98\
+H(\xed\x98\x04T\x8b9\x90-cZ\x94\x0a0\xa5\
+\xc9\x84qb\x1a\x92\xe7\xf6\x8c\xa5 \xbb=.\xaca\
+.\x01f\x14\x84\x00o4\x15\xc4\xaf\x00|ZO\x00\
+,_\x99@o\x9f\x1d\xf6[\xcec\xccO\xe7\x88\xf3\
+\xd3T\x0f\x22|\xe2?y\x0b\xd1Q\x0c,\xcc\xa0~\
+Z\x16f\xc3\x8f\xc2\x1a\xe0\x050v\x8b\xb0F\x5c0\
+\x19\x22\xe3;\xc2\x1a\xe6}\xb6\x8e\xd0\xacp\x8e\xd2,\
+*\x06\x86\xfb\x94co\x8d\xe3\xb4O7\xbf\x08[\xfd\
+\xee^\x94\x1a\xaa\xbc\xf3\x07\xbam3\xaf\x13B\x1f\xc7\
+\xdb5\xf2\x00\xfb\xf5\xda\x83ZcWR\xec\xa7\x16\xc6\
+[\xc2\x9a@Z u\x91<`\xaf\xb1\x04b\x9b\xf7\
+\xe6<U\x0e\x1f\xa0`\x8cY\xa7Z\xcfa\xd5\xbf\xf7\
+br\x020\xe2\x12O]z\xd5\xb6\xe7\xda\x9es{\
+\xce\xe6`@u\x11\xe8\xe9q\x93\xd8c\x1a$5\xa8\
+\xe6\x0f\xfb\x7f\x07\x111\x8f^;@@\xdf\xf7\xc4\xeb\
+\xb9\xdf\x9c\x06\x15\xdc\x97\x00\xce\xcfIX\xfbDs\x15\
+\xf9[~\x1eb\xf6\x83\x0c\xa0 V6\xf6\xffu\x15\
+\xf6\xbe\xc7Z`\xbd\x8eC[6\x9a\xfb\x9c\xe22\xb5\
+Q\xfe}\xa94\x09\x0c\xaa\xa7\xd9\x86\x94\x80\x00P$\
+\xf2T\xfd]W\x7f\x9d=\x00\xd23#P@\xf3\xf9\
+\xec\xf9\xef}\xaf\x07\xe2U\x95\x8f\x7f\xcc\x8aJ\xf6v\
+V@qr:@\xffn\x1dr\x8c\x12\xb7^tG\
+\xa0\xe5\xb9\xf9w\xcfy\xad|\xef+\xfe\xa8\xc2\xd8\xcf\
+\x0f\x97\xc8[o*\xdf\x1c\xb1\x80\xb8g\xaa\x9c=\xdf\
+\xdf}\xea\xe7&\xbbN\x89&j\xac\x84\xb5O\xbcO\
+\xab\x02\xeb\xf7T\xf8/\x98\x89\xc1\xe5\x129\xce^\xf7\
+\xfd\x008\xeb\x1f\xd5;\xc7yUe\xdd\xf5\xa1n\xab\
+\xd0J\xf8 \xb2\x806\xaf\xa8\xf1\x07\x875\xeb\x0f\x15\
+\xf0\xb5\x8b\x08\x9e\xde\xb3\xcd\xa1\xcb\xc1\xb2\xf9\xf7\xec\x01\
+\xc6\x14\x11H\x1aS)\x11\xb1\x0f\xb2\x82\xb5\xb9^V\
+\xc03\xe1\x9f\x9e\xc9\xb2\x1f\xfd\xfc-\xb2r\x9f\xfb[\
+\xc5\x7f\xfb\xee\x14o\xb1\xbePp\xf5h\xf5\xc8\xbb\xe7\
+j=\xb9\xef\x12[\xcf\x05\xc5\xde\xfd\x95\x10\xf5\x09\x9b\
+\x80\xfa\x8b\xdd\xdf\xcd\x0aq\xcd\xf3\x95\x18\xa0j\x9b\x13\
+L\x0d\xdb\x18B=\xf5\xd4\x81Q\xd4\xad\x13@!f\
+\x89\xc4\x12CC\x05\x17\xe5\xces\xc6|\xd0\x13h\x1d\
+\xfa|\x12S\xeb\xc1\xf3\x91\x80[o\xbe\x07H@\xf0\
+]\xafJ=d>E\x03k?\x08\xf8\xf5\x04{\x1e\
+\xc6uI\xe4\xba\xfb]\xcf\xc7\xfe\xc6\x04\x03\x84\xaa\xf0\
+$\xd0Y=\xf0*\xbd\x12]\xfe\xc0\xfd\xf49%\xee\
+*\x13\xf6\xeb*B\xbah\x5c$\x10[\x01\xab\xfb'\
+\xa0\x940\x12ot\xbe8\xa7\xddG\xfe\xcb\xe7\x048\
+\xb8\x0e\xeb\xd9\xfa\xcf\xf1\xbe\xa5\x09\xf4g{\x8e\x88@\
+\x99\xd8\x9e\x8aqUR\x00x\xde\x8f\xdf\xa0y\xa1b\
+\x04\x18\xe1\x073\xb1-\x11?~\x91\x1atR\x861\
+/$\x12\xd6aU\xec%\x8c*'\xa8\xe9I!/\
+\x95x\xa2S/\x0c[)\xc2;\x9f\x0akT\xd2\x05\
+fy~\x0cW\x0bk\x00&\xfb6\x81\x8a\xcd\xd7\xc2\
+\x1a\x0a7J-\xb1\xa9L@\x87\x1b\x845\x95w\xaa\
+\xe0\x00\x1c\x81&\xea\xb6\xc4\x08eX\xeb\x82\xcf\x97\x22\
+R\x00\xc0j\x19X5JfqC\xad\x08\x9b\xd7\x87\
+5\x0c\x91\xac\xa4o\x9f\x14\xf6[\x18U\xd4\xaa\x016\
+\x09T\xd6}w\x9e\x8agz\x80\xd9zVH\x11P\
+\xdb\xcf\xceQZ\x03g\x0e[\x81\x9d\x02,1Pr\
+\x1aQ%\xb0\xd1\xb25\xad\xe7\xf19\xe3s\xc7)\x80\
+\x1e\xf7n\x0f\x98\xe7s\xbf7U\xb5\x89,n\x97m\
+1\x5c+l\xf5\xcf\xa5\x99\x95\xf7\xbb\x98\xae\x07\x0f\x07\
+\x0d\x077\x05\x97\xa4,\x8f\xc7\x84\xcd\x94\xe4'\xcc\x94\
+\xe4\xcf.\xf1\xa2\x8a\xed<\xae\xef\xd7\x8d\xdf8a\xe6\
+\x1c\x96*\xfe~\xda\x07\xdf\xda|3\xc4$gx\xae\
+\x11I\x1b\xff3l\xaet/c\xea\xce\x12\xaa[\xd3\
+\xeb\xfc\xb5\xb6\xc0T%\xfeGa\xd3\xebU\xc3\x9a\x96\
+\xaan\xca\xd2\xac\xca\x7f\xd4\x0a\x00U\x81\x8cX\xdb\xd7\
+\xc3\xd6\xe7*\xf1p\x9eo/\x1d\xd6\xb4\x1a\xfcn\xd8\
+\xf4\xfa\x8b\xc9\xa6xp\xf7\xf4a\xd3\xeb\x1b\xc2RE\
+\xfdE3P\xb2\x8cQ\xbc\xd42\xe7\xbe>\xc7G\x97\
+\xd6\x9a\xe9^.yI\xfa)yLi\xe5\xa4\xc8n\
+\x89\x8f\xf3\xe3\x18\x05\xc4\xde\x14\x221\x97\x9f\x16\xb6\xb6\
+|\x8e\x87\x85\xad\xa2\xd0Z\xaa\x8a\xf9\x92\x80\xf2\xe6!\
+a\xab\x9f\xc4\x10\xc3D\x9ev\xcd\xd5b\xdfD\xb6\x13\
+\xf9\x0e5\xff\xaa\xe8cV`\xd6\xf0\xd7z\xea\x89\xf2\
+)\x94\x89\x1f\xe5\x1f\xf6\x8f\xf5\x92\x80\x88\xf1\x86\xc3e\
+\xc2\xa6\xef\x9f\x1e6}\xff\xae\xb0\xb5r^\x85\x0f\xf9\
+\x04\xf1\xdad\xa8\x19oZ\xda\x03*\xdf\xfc\x03M8\
+\xff\x9f\x80@\x891\xf3\xd3\xfc\x0f\x06o2\xca\xa6\xb8\
+l\xb2\xe6s`\x98\xe5\x94\x9a\x9a.p\xd6e]\xd7\
+~\xe9\xa6\x13\x00,*\x0e\x02\x04\xbbo\xe2\x07\xd7G\
+\x14^\xcb\xc5\x87\xc3\x1a\xe07\xa7\x08\x948\xa2\xb8\x8a\
+\xdfr\x0e\xf3g\xe2\xac~\xda\x16\xc6{\xf6\xde\x17C\
+\x22\xe3\x03y\xe8\xf8\xba\xb0\x99A3\x8b\xf3\x17\xb3\x11\
+\xc3\xd3xZcc\xe5\xe9\x18W\xa9\xe9\xb1{TX\
+3%B\xdc\xf6\x85\xb0\xe9\xf5\xd3a\xd3v\x9e\xd5\xfa\
+\xdf\x92cl\xa6\x04x8\xcbp\x96p\xa8\xd1\x015\
+<!\x0f\xa2S\x9a\xc4S\xa5]`\x99\x07ZQ\x8c\
+2\x10G\xe5(\x0a\x17\x15\xce\x1431\x8f\x90#\x84\
+\xd4\x17\x92\x07\xe9\xb2\x10\xfb\xc4\x9f\xba\x7f&\x00\x150\
+J\xbcQ\xa4-\x18\xe2\x10\x89\xb4T\xe2\xefsI\x9c\
+\xfb\x9e\x0c\x89k/\xb2g\x01\xa8\xcc\x08\x9c\xdc\x9f3\
+To\xf8\xa2Ep\xa9\x0c\x84\x05Z\xfeNG\xa1\xae\
+@\xa8Wu\x95 x\x7f\x01\x99\xf71\x976[#\
+*\xe0\xedZ\x01j\x01\xfb\x1e\x83\x00\xb2\x0f\x91\x97\x90\
+S\x0d\xcd\x0ay\x8d\xff\xf0\x5c\xf5\xc6\x0b\x8c%t\xee\
+\xebIy\x90\xff\xbac6H\xb41\x1fPdS\xd3\
+\xa1~\xce\x97\xc4\xdfu\xd9pz\x1fU\xa4\x12)\xad\
+\xf1,\xbf\x9f\x95\xcd\x8f&\x95I\xa5\xe8L\x09\xd4h\
+\x1d\x10\x80\xbb\xcf\xe6\xb1\xab\xac\xf5L\x0d\xaf>\xefJ\
+]\x5c\x9e\xbb\xc0z\xfd\xff}\xa9\xfd~\x7f\x1dc\xb7\
+\xack\xc0\x94\x0a\xb2J\xacD\xaa\x17\x19s]\xbb%\
+\x9a\xb8\xef\xf5\xd5I^\xaf\xcb\xf3\xb7nN\x8b\xe2\xdf\
+U\xdc+\xf1\x17\xc8\x0a\xe4\x1c8\x0e\x8e^\xfc\xd0:\
+\xf5\xbd\xf5\xed\x0b\xc2\xdb\x8fw\xe9\xdf\x97\xa3u=(\
+\xb3Dp\x88[\x99\x8b\xac\xc7X\xa5\xee\xf0TM%\
+f\xd4QR\x8b\xe1q\xc8\xbe\x14\xd3),\x98\x03\xe1\
+Jt\xdd'\xfe\xc1uS\x9f_\xc5\xcb\x96y\xb9\xc6\
+j\x11\xf3zIR\xe8\x9e\xb6\xf4\x16\xd7\xc1\xf3\x83\xb0\
+&\xb1Q\x99Uy\x96(I\xc8\xf8#\xfe\xd0s\x91\
+\x80\x9f\xae\xd3\x22\x90P\xf6\x01\x84\xe7\xac\x12\x98T\xc5\
+\xcdk\xc2\x9a\xcf\x09\x10\x13 \xaa\x10\xdbO(\xf9=\
+\x90\x881\xe0\xba\xcd\x11\xc6\x1c\x90\x90;\xc0\x89\xa5y\
+\x1f\x80\x81\x8a-\xe6\x86\xf5x\x8f\xd9V\x7f\xe9\xbe\xa8\
+\xfci]\xe8\xe7\xa9\x03V\xb4\x10x\xbe\x98\x03\xce\x93\
+\xbeE\xc1\x14\x01-f\xf6\x01\x913\x09K\xfa\xd9\x9a\
+*\x90\xd3\x1fj\x0a\x89\xe9-Z\x01\x00\x99\xbd\xf8\xac\
+\xf5\x8fQ\xa4\x95\xc4\xf3\xb4O\x5cg\xaa\x99\x131+\
+\xff\x9f\xeb\xa2\xc6;\x0a\x84\xfc\x1e\x7fa\x7fZ\xc7>\
+\xaf\xc4\x0a`\xe6|\xa3Ia\x7f&c\xa9*8\x12\
+1\xa2H*U\xb4\x5c^\xb9\xa8\xd9\xd7\xf3\xe95C\
+\xac\xbfT}\xaf^\xc8\x1c\xf76\x9c.\xac\x01\x90\x88\
+\xd2\x01\x1c$\xac\xd9\x1bZZ!\x8f^\xc6\x86\xd59\
+\x88\xa2\xe9\x1c\xc99\xcbE!Mj\xf6p\xe3\xb0\xe9\
+\xf1>4\xac\xd10\xc8\xca\xd4\xf0\x92\xb0\x06\xd8\xa1)\
+\x22@\xcb\x0aOi\x22\xb9^?\xaf\xc5\x02P\x94\x14\
+\xe4a\x0c[\xc5\x8ak>\xf6E\x17\xb1\xb4\xfa=q\
+\x89\xd6\x09\x899?\x802\x8cy\xa2\x82\x86\x9a\x9fS\
+\x03\x88\xd6\x15\x85_\xdc\xc1\xaf\xd8\xc7\x09d\x11\xc3\xdb\
+\xaf\xa0\xe1\xfc\xcaD\xa9oy\xa9\xfd\xea>\xd9\xef\xc6\
+\xecY\xbf\xfe\x9e\xe9L\xfd\xd8Q\x9aA\xa9\xf2\x1eR\
+\xab\xb3\xd8\xaa\xf3 \xc7\xbe\xfd\xe6\xb6\xbf\xb9\xddon\
+;\xfd\xf9\xb3\xed\x9eu7\xc6\xcc\xdd-l\xae\x14\xce\
+s\xb6M\xd9!\x22\xbbs\xf6\x9d\xb3\xedL\xfby\xe7\
+\x97\x93M\xebd\xe7\x12a\xd3\xff\xbf9\xc7\xde\xfdG\
+\xd8\xd2j1<vIp\xe2\xb9\xec~2l\xadh\
+Ng\xfcw\xe6s\xfe\xf6\x93\x97\xb9\xfd\x5c\xe1\x7f\xd2\
+\x5c\xe1\xc7`H&\xc5|\x7f\xfe)\xe3\xc1\x83\x9aV\
+&~\xbd\x1f\xe3\xba;s$\xd7\xca\xdf\xa3\xb6\x8f\xdc\
+>r~\xce3\xa3i\x9e\xf7\xfe\xb1\xa6\x82L\xdc\xcd\
+z\x8b\x96\xb4G6\x80\x9e\xfd\xf6;3\x17b\x05\x9e\
+2\xe1/\xd1\xcd\xd4\xc8PY\x1d\xbf\x1d6\xfd\xfb\x0f\
+\xc2\xa6\x7f\xbf\xf8R\xb9\x1f\xdf\xbfL\x07\xd8^k{\
+\xcd\x98\x22Q\x80C<\xbd)>\x1f\xff$l\xad$\
+o\x8f\xd9\xber\x9e\xb7\xfe\xe8\x14\x0f\x07\xa0J\xf4\x93\
+\x02>>+l\xcd\x17\xec\x87\x9a&\x22!%Ni\
+\xaa\xc9\x95RL1\xfd\xf0\xf8\xd9\xb0\xe9\xba\x8f\x0a[\
+\xf7\xf7\x0c\xa4\xbc\xbf\xd1\x22\xc8\x96\x87\xdd?\x0c[5\
+\x18\x86\x7f\x0bk4&\x12\x08\xd8|1l\xfa\xff\x07\
+\x865\x05\xc5\x9b\x845\x80\x8bxB\xfc\xc9\xaf\x02\xc0\
+\xbaV\xcf\x02\x06<'\xe7\x03@=\x19c5>4\
+\xdfg\xfcP\xd8t=\xef\x08[\xf7Ii\xb7\xa8x\
+c\x10\x02\x1e\xba\xe9+\xc5\x88\xd6\x22\x90\xc0\x01\x91\xd2\
+:\xa7\x9d\x0b*\xf2\xe2#\x05\xc1\x14\xd5\x9e\x9e\xf6d\
+\x0ds\x0b\xe3\x95\xf6K\xc6\xa3\xd5\xa2\x9e\x00R\x15 \
+\xc5\x0d\x00e\xfe \x99\x14%\xae\xba\xae\xeb\xe5|\xd3\
+\xa3\xff\xa0Ek\xae\xf22\xfe\x90\x7f\x11'\xc8\x8b\xe4\
+%\xe2Z\xcfO|\x84y\xcb\xffa\xa4\xe4\xd4\x91\xf1\
+\x17ak\x9c0\xfe \xacada\xa4\xe4\xf8\xd9\x8a\
+wR\xe3\xa0\xceM\x9an\xd9\xb2Ub\xb2y>\xd6\
+\xf5%\xf3j\xf3\x91\xb0\xe9\xf9\xffq\xd8z\xff\xf7V\
+\xc5'\x8e\xbf?](c{\xa6\x8d\xb59ys\xf2\
+\xdc+\x08\x19\x8ap\xf9'Y\x81\xb8z#\xce\x97\x0b\
+\xc5\x07\xab@&\x1fh\x89@\xb8\xb1z\x85\x8f[\xa8\
+1\xe5\xd0\xba\xcan\x89(\xe5\xb8\x8e:\x08\x04z\x07\
+u\xe3\xe4|\x0f00\xde#{\x94\xaa\xe2\x05\xd9\xb7\
+\xe1 6\x00\x00\x81G?\xdfZb\xd2\x05F\x15H\
+\x0b\xa4\x040\xc4\xc9\xce\x9dc\xfd\x1c\xcc\x1e\x8cDn\
+e\x08,\x01\xa6\xc0\xcf\x81\x0d\x00\xf0\xef~\xce}\x10\
+\x00B\xd8,t\xf7\xb3\xd7\x12\x90\xb0\xd8\xa0\x9f\x9am\
+\xad@\x7fa\x11\xcb\xab\x1em\x08\xa3\x0ai\xaa\x09\x97\
+\x0a\xb0\x03L\xa2\xbc\x8a\x08\xee\xcbD\xe8{\x81\x05\x0a\
+\x9e\x9f\xc4\xf4\xbd)*\xf4\x9bJ\x9ci5,\xd7\xef\
+\xbe\x00\x02T\x88\xcc9\xe5\xf0_2\xdb\x1a\x98\xa8\x90\
+x\x9eI\x0d\x07\x5c\xed7\xe7\xde:\xbdR\x1e\xc0\xd6\
+\x9fD]\xe0\xd8\xbf\xba\xbf?\xcd\xe7\xe0\xdfM\x0f\xf0\
+>*2*6}O.@\xa5\xa7D\xae\x09\xbe)\
+\x18Z\x22\x96\xff_[U\x96\xd6\x13\xad\x1f\x02\xb5t\
+\xf4\xdb\x0f-\x00\xc9\xe6&K/P\xedC\xd7\xeb}\
+<\xa7\xfe\xfa.\x90\xeb\x7fE\x9e\x17\xc7k_\x9c\xab\
+\xd4\xd2\xf7\x1d\x93\xd8O\xb9\xe8U\xde\x0fJ L\x80\
+\xe3\xdfWQ\xc0e\xbd\xfb=\x0c\x95\xcb\xed;\xce\xb0\
+\xd4\x90\x89\xed\x9c\x98\xf7\x190\xc5\xe1\xbb\xcf*\xc2\x12\
+G\xeb\xfffI9\xef\xc7\xc1\xf1\x0f\x02\xa7D\xa2+\
+\xb1\xf5<P\xc6\xad\xe3D\xf2+p'\xe6wr\xae\
+\xe7m\xf54.\xf7K\xa2'\x81\xb6\xdf\xdc\x1f\x07\x8f\
+\x00\xc0u\xf33\x9ec\xa7\x16_\x9f\xdf\x81e\x1e\xb6\
+\xef\xad\x03\x09\x91\x0a\x04\x8a-\xe0\x86\x1f\x03@\x00\x06\
+T\xec\xfc\x1d\xd7\xef>\x0b\xf4\xad\x1f\x00(@\xc3\xbf\
+K\xec\xb4(\xf4S\x07\xba\xb1\x84u=\xd6\x89\xeb\xa1\
+\xaa\x9f*\xee\xe5\x8f\xbd\xbf\x04DE\x14p\x80q\xd2\
+\xfbi\xbd\xd7\xfd\xb4\x16\x7f\xb7\x9f\x1e\x03\xd8H\x91\xae\
+\xed\xd1a\xcd\xdcs\x95q\xd7\xef\xb9\xea)\x94\x00\xf4\
+L\x89N$\xb1\x02\x1c\x88?\x11\x5c\x95\x14\x01\xb2s\
+\x01\xb3\xc2\xe7\xb3N\x9cg\x12\xb4N\x5ct\xbfq\xb3\
+\x98;\xa9\xfe^\x09i\xcey.`T<\x91\xeb\xb3\
+\xd4\xb61.P\x1b\x8da\xb5.\xf5B\xe6|\xee\xed\
+\x8d\xc3\xa6mxBX\xa3\xe6\x9f=\xf5\x05h\x01\x1c\
+P\x91%\xb2\xf6\x95\xfb\xc1o%3\xa8(\xb9z\xc5\
+\xf3\xdc\x1a\xef\x1d6\xfd\xffU\xc2\x9a\xd6\x92L8\xeb\
+\xf3g\xc0[j\xeb\x09p\xd4\x14\x16\x80}\xb6*\x95\
+\x7f\xce\x80\xad\xc4#Qy\xb3bC\xb3`{\xba\xb0\
+\xe9z~\x1e\xd6\x9c\xe3\xc6<ZO\xfc\x96\xe7M\x14\
+K\xe0m\xfd\xe5\x18\xc0\x02\xd6\xec?\xbf\xe7\xdc\x16\x80\
+j\xa5\x01\x08\x89Gz\xe0\x99\x9f\xf2~*v\xfc\x0b\
+\x7fD\x041\xfdg%<DZ\x15\x1c\xfc\xbe\xfd\x0f\
+\xd0\xb0\xaf\xad\x13\x1a@\x7f\x1f6%n\x97\x0a\x9b{\
+\xe9\x8f\x1b\x8f\x9b\xbe?(l\xae`/-\x12\xce\xff\
+CSK#[\xa3\xaa\x97x\x9b\x85\xf1\xa3\x97\xc4r\
+\xe7\x84\x9d\xe3w\x8eo\xc4Y\x0f\xdbs\xd8,\xbe\x15\
+\x05\x8c\x93W\x06\x8e\xc4\x16\xd0X\xda\x0b\x12Z\xd4\xe8\
+\x9c\x1f>k\xb5\x1f\x9b\x95\xd9\xfb6\x15Z\xc0\x9e\x16\
+N\x00\xde#g\x8b\x04\xff\x03s\x82\xafR\xfa\xb0\x5c\
+\xf7\xe2n\xd3\x90\x9c\x874b2\x0e\x99\xc7\xc76c\
+\xc2\xaa\x92\xad\x15W\xeb\xce\xc7\x97\x96\x89\xed\xe5'\xbb\
+\x5c#\xa2j\x8c\x22\x15\xfc\x98\xc6\x10\x89\xf6\xf1a\x8d\
+\xc8^N\xdb\x99)\xf1\x8fJ\x91\xe2\xeb4\x1a\x1e\x9f\
+M\x95\xfa\x8b\xe6\x18\xb5\x03\xb6{\x83\xa1\xb1=\x7f\xd8\
+\xaaUQ\xfb0\xf7\xf7\xf6ea\x0d\xa5\x1a\xe3L\x1c\
+\xa8\xf2\x9c\x05\xb2\xf1\x1aa!2\x9d\xdaT\xc6\x12\x1a\
+\xa7\x06\xb8J@~<5l\xf5;\xa6\x13\x10[\x1b\
+\xfe<l\xd6\x98\xf8FhL\x14#,\x13\xd5\xe1|\
+ak\xabE\xe5!\xf9|\xc6\x9b\x865\xda\x22\xd4\xef\
+1'\xcf\x14\xd6\x882*d\xd8o\x19\xb7\x94\xe6\x95\
+\x96\x1f\x22\x7f\x09\x88\x86\xe4e\x88^\xce\xcc\x8e\xd0\x12\
+\xf9JX\xf3\xbc\x01\x9a\xc6^k\x0dH\x86w\x89\xcb\
+\xe6t\x8cb\x12a\xfc\xf5\x8cL\xeb\x94\xf6\x96\xf8\xda\
+9%_\xc3\xe0\xc8\xe7X\xd7\xa1\x15D\x1e\x98\xcfu\
+|gX\xd3\xfa\x04\xa8\xe4\x1fRl\xb6\xc6\xf5\x01|\
+\xa9\xf1\xe7\xba,?\xe4\xf7\xb4*\xf1k\x00\x89~\xfc\
+n\xcf\xd4\xf4\xef\xb4f\xc4G\xa8\xfd\x18#Y\xd0\x19\
+\x7f\x16\xd60+\xb5\x80\xfd2\xac\xd9\x97w\x09k\x0a\
+7\xe9\xf76\xa7\x845\xd3f\x92\xa1Q\xad;\x18d\
+\xd7\x09[\xa7\x94\x98\x82\x83y\xb9\x17\xc5\xa9\xc6\x83\xe4\
+\x8dA\x1d)\xcaK\x1c\x1bo\x99\xde\xf0v\x93\xdd~\
+E\x1a\x88\xe7\x0c\xe7\x09k\x16Z\x88\x15\xdc*+`\
+\xcfZU\x15k\x5c\xce+\x13 J\x00\xe9\x94\x88\
+\xa2@\x08\xa0\x04&\x02|=\xe7\x0e\x98\x0c\x1c\xb7O\
+\x0f\x9b\xae\xff\x8f\xc6\x9b\x8f7o\x02P\x81\xa5W\x89\
+\xb5\x07\xec\xef\x08\xf0,\x8c\x95B\xbd\xefW_q\xb5\
+\xb0\xf3@\xdb\x9c5{t\x05h\x02\xf2sT\x22\x8d\
+:\xbd\x04^\xf9~\xdbo\x855\x09\xb3\x037E2\
+\xf6\x1b\x0bh\xe1IH\xfa\xca\xb3D$?\xaf\xf10\
+Ua\xfbI'\xc2\xf7\xe3\xa4\xde$5\xb8\x02\xa3n\
+\x9ca\xb5h\x18\xbb%`\x94\x00\x03$$\xaa\xc4j\
+\xf6\x1f[\xb8\xdc\xef3d\x00\xfb\xeb\x1a\xeb\xb8\xafj\
+\xb9\xe7\xef\x80\x12 \x1bK\x93\x1a\x085\xae\xc4x\x9e\
+\xa4`on\x9f\x01\xc2W\x12\xf89\x7fGy\xef\x99\
+\x1b\x02{\xf7\x050e\xfd\xf4\x89\x95\xd7\xd3R=\xf7\
+\xbd\x84qm\xf9X\xfe\xdf\x14\x01\x09\xa3\xbfo]y\
+\x9e^\xd71\x98\xfb\x8a\x86\xb8\x0e\x09\xafi\x06(\xa6\
+~\x1f\xc0\xa6\xf7\x8av\x00\xc7\xd5\x8b\xeb\xf8\xdc\xbe\x0e\
+\xec\xd4\xfa\x05d=s\xc0X\xc3\xf3\xe5\xfb\x5c\xbcK\
+\xb8%\x8a\x90\xce+&%\xdc\x01\xee\xfdT\x1eR\xed\
+\xbc\x12#\xda\x02*\xcd\xf6W\xae\xab\xcd\xb1a\x0d\xd5\
+\xd7}\xeb\xd5\xfeo\x1a6'8\x0b\xa2|\xed|\x7f\
+\x08\xb3\x0a\xaa\x80\xcf>t\x7f\xad\xa3L<\xca\xb1\x0b\
+\xe0\x1c\xa4^s:A\x05~?)Q\xa3e=\x9c\
+'\xef\x97D\x05P\x01h\xb0\x7f\xad+\x9f\x1b\xd2\xee\
+\xf7\xfaV\x13~#\x13\xea\x9a\x13\xee\xfe\x09(\x05\xfe\
+\xc6\xb8\xa5\x88\x92\x03\xb74\x04\xf4\x04Z\xe7\xfc)\xc0\
+\xb4\x03X\x0a\xa0\x90@\x02\x0e\xba1Gu\xe0Il\
+\x89%\xd2l\xe8\xc7?\xf5SUz\x00\xa9\xa7\xd4c\
+nYG\xd6\x81\x80\x16\xe5_\xa2\x0d\x08\xe0\xff\xb4\x84\
+\xf1{>\xafD\xa7\xf3\xdf\x12I\x95b\x09n\x8dO\
+\xb2\xef\x5c\xb7\xef\x89\xdd\x99\xe6\xa1\xd70E\x02\x8b\x89\
+ A\xe3W\x9c7\xb4\x0d0\x11\x00(\xfc\xb3\xfbk\
+\xbf\xb9^~\x9c?\xe4W\xf8\x19\xff\xae\x15\xc7\xf9-\
+\xe0;d\xe6\xd2\xac\x7f/\xee\xd2\x99\x1a\xcd\x18\xfb\x18\
+ \x90TM\x94\xc6R\xe1\xfe\xc7\xb0f\x1ff\xa2\xeb\
+\x9c\xdf<&\xac\x99\xf7l*\x80\x1e\xf3\xf7\x845T\
+U\xc0\x88\xdeOT\xd3\xd4\x08\xa81K\x12\xe3\xa7\x86\
+5cF3`/\xcd\x83\x95\xe2;3\x0dj?j\
+QK\xb1\xbf\xda_\x80\x00c4\xf9O\xf7\x09\xf0\x8c\
+\xc1\x87!\x84\xda\xec~gK\xc2\xe6[ak\x00\x8d\
+\xba_=\xf9\x18&\xa6\xe8\xe4s\xae\x16\x94\xae%\xa2\
+D\x0311\xfb\xe9D\xf6\x99\xf5 \xfe\x11\x08\xf3\x03\
+\xfd\xb4$\x8c\xcd\x04\x18\xaa\x95!\x7f\xbf\xa6\x8787\
+\xec/\xbf\xcf_\xd8\xbf\xf6\xed-S\xd4\x12\xd5\x17\xa3\
+B\xe0\x9c\xe7\xcax\xe5\xb0\xe9\xf8\xbba\xd8\xf4\xfd\x9c\
+\x09\xad\xad\xaa\xc5\x8cI\xa0p8\x7f\xd8\xf4s\xbf\x09\
+\x9b\x19BK\x22\x9dS\xac\x00x\xc3\xad\xc2\xa6\xd7s\
+\x0cg\x1f\xce\xb1\x02\xa6\x18]\x05XeB\xc5\x7fU\
+E\xf3\xbb\xdb\xef\xcd\xcc\xd9|\x9d\xd3\xa2\x83W\xa0`\
+\xfb\x9c\xb0\x068\xd4z\x01\xd0\xfa\xdc\xacz\x14\x0c\xde\
+\xb7m\xde\xda\x8c\x9d\xd4\xc2\x95\xdaW\xd5\xa2\x82\xa9\x94\
+\xfev\x8a\xf6O\x98\x13!Z\x0e\x0a\x13\xe9\xc7\x8a\x02\
+\x9e~q{\x9f\xb0\xf5\xb9\x8d_\x08k\x18\x1e)~\
+7\xf7\xee_b\xd5,\x99E\x07\xcf\x9a\x89\xdc\x8f\x9a\
+\xe9\x1a!\x06y\xc1uZ\x06\xc6K\xa9\xb0\xbf\xb9\xbb\
+.~\xcb\xb9\xf4\x07a\xd3u\xec\x86\xad~\x01\x03a\
+{\xf7\xb0\xa62\xcd\x7f\x98\xb3n\x9f\xe4\xbaW\xe9\xaf\
+\xe9!\x99\xa8K\xa4\xc7\xbf\x0ck\x00\x1eL\xa7\x04\xd6\
+\x00\x88\xc3U\xc2\x9a1\xaeI)\x8f!\x881\x06q\
+{\xf8\xf6\xfe!~^q\x90)l\xbf\x176}\xff\
+\xa0\xd9\xf6l\x8f\x08k\xb4K\xf8u\x050\xad\xb6\xbe\
+\x00\xed\xe6\xc7?2\x19!\xd6\x83\xb1\xa8\xd9\x1aQ\xd3\
+K\xc4\x0d\xceY\xf1\x8b\xc2)-\x11\xc0\xae\xf8\xdb\xfe\
+\xb4\xef\xce\x17\xb6^\x87\xfc\xae\xee\xfby\xc2\x1a&\x04\
+f\x94\xd6\xc4\xb5ew\x99~\xd0iuE4?\xb7\
+Tb\xcc\xa4\x86B\xe5\x05\x0a8\x98e\xce5\x00X\
+\x02$\xb5\x9frzB\xed\x7f\x0c\x08\xf1\x81s\x9f\x9f\
+Spt]\xf2H7R\x9c%>|\xc0\xc2<U\
+\x81W\x80\x1bv\xc3\x1a`\xad\x03\x12\xea\xbcI\xcd\xa9\
+\xcao\xf8W\x05\x08\xf7\xbf\x03\x08\x87_\x85\xadZ \
+\xd5\xd2\x90\xe7\xc3pTX\x00\x00_\x0aKd\xea\x9c\
+Y)}h\x13(?\x7f\xb6e|\xc4\x0fST\xed\
+\xb5M@\x82B\x9dH\xfa\xe6\xfda\x89\x84|cu\
+hE\x01\xf4A \xb5\xa8]\xd9\xd3P\xc8\xca\xaf\xba\
+\xca\xa6\xc4\xa5\x9f\x87\x9c\x01\x93\xde\x8d\xed\xab\x12\xd9~\
+\xcf\x82\xf8\xd5\x8d\xed\xc7\x96y\xa0\x0e8\x0f\xd2\x01\xd7\
+1\x11*\x01r==cA\xe2\xd7\x8f\xb9\xea\x19\x02\
+}\xa5\xca\xfba$\xf4\x07h\x06h\x95\xb8\xab \xf8\
+}\x8e\xc0\xe7\x83\xa8\xbb.\x88\x94J\xde\xe9\xb2\xc7Q\
+\x0f\x0e\xe4O@\x86\x11\x220\x97\x80\x09\x14\xb3\x92Y\
+\x15,\x15Q\x01\x01\xc7 q\xee\xb5\x19<G\xc0H\
+\xaa\xc3\x17SB\xc2\x09!\x04\x18t\xcc\x85\x02J0\
+\x19$x*84(\xde\x97\xe3z \x97\x10t\x95\
+,\x7fO\xa2 \x80w\xddk\xe5]\x0b\xc0\xbe\x09\xb9\
+\x0d\xd8\xbf\x12\x8b\xf3=FD?\xb5!\x9fG\xaf\x95\
+QL\x0a\xfb\xc0\xeb\x0a0,\xaf\xd6%\xe6\x07\x8a\x95\
+\x8aP\x06T%\x12h^w\x8a5V\xc2\xe6\xf7\xac\
+\x1f\x899\x87f\x1f\xad\x7f\x7f\xf9\xbb\xde\xc7sR\xb1\
+2N\xaa\xaf\x0c\xfb\x9c\x028\x95CS\x08z\x15|\
+\xafZ\x13\xbc\x1f\x84Vb)q\x93\xc0k\xa5\xf8\xf8\
+\xf6\x13\xdbO4\x07$*\xa4\xfb\xefs\xf9=\xea\xeb\
+g-`jIt$\x9a}\x0f\xba\xcah~\x9e\xe1\
+\xaea\x8dX\x97\x83 \xe7\xbe\xc7\x14\xe7y\x8e\xf3\xdb\
+31\xcb\xde\xdb\xed\x1d\xb7w\xd8\xde\xa1\xa1\x8e\xab \
+\xe8\x01\x93\xd8\xf6\xf3\xee\xfby\xf0\xee\xb3\x84\x02\xa3\xc9\
+\xe7\xb1\xdf\xf5\xde\x13}\xf2s\x0e\x16\xe3\xbd\xfc\x1e\xe0\
+\x0ac\x8a?\x90\x18`\xe0Xg\x123\x09\x0d\xff\x82\
+\x92l\xffA\xde\xfd}\xad@\xb40\xa8\xeb\xfa\xb2\x0e\
+<\x07\xeb\xb4\x1f\xc7\xea\xcbz\xb5\x7f\xf8U~\xcd<\
+cc\xdf0\x0dTvQx\xf99\xef\x9f\x01Z=\
+\x17\xfe\xd8\xf5\xf1\xc7\xee[\xee#\xe2^*\xb0U1\
+\xe6\xa7=_\xeb\x93\xfa6 B\xef\xa5\x8a9\xd1E\
+\xcf\xc3:p?\x00\x1f\x9e\xa3\x00\xce\x94\x00\xfbU\x02\
+\xcb\x0f\xf2\xb7\xee[\xdf\x1a\x07\xa0\xe0?zM\x9e\x9d\
+\xf9\xa4Xza/\xd0\x88.\xda\xcf\x99\x00TB*\
+\xe1\xcf\xd6@\xe3\xd3\xaa\x02o\xdf\x13U\x02\xec\xa5(\
+W\xad\xc3\xa4\xf2\x1b\x87X\x15\xfeT\xbf\xaey\xf7O\
+\x9cm]G\xae\x9f\xc8&\xa0\x095\x93\xb6Qj\x1c\
+T\xe5\x09\x83B\xe0\x9d\x15i\xbd\x9e\xf5\xb9\xb5\xc8\x10\
+U#f\xe5yIp\xf9\x13\xcf\x1d0\xfa\xe0\xb0U\
+\x95[\x05\xaf\x98m\x02`\xc0E\xb6,\xecy\xcbl\
+U\xb1\xab\x169\x9f\x03\xb54\xfdF\xd4[\xe7\x9e\xf8\
+\x9c\xa7^b\x7f\xfc{\x0f\x00\xf4b\xc6\x9e\x83}f\
+\x1f\xf8\x9eV\x05\x00S\xfc\xb22\xc0\x96u\xcc\x1f\xf8\
+\xbb\xe2\x85>>\xf0\xb9\xff!)\xcb\xdf\xcf\x0a\xea\x1f\
+-\xbd\xdd*\x91\xbb/\x0d\x9b\xdc\xeb\x0b\xc3\xa6\x7f\x7f\
+\xc22\x0e\xb8\x12u\xad\x19D:\xef\x166\xfd\xfc\xb3\
+\xc3V\x8d\x89\xe9\x94Y\x80r\xf7\x1de\xf7\x01\x9b\xc3\
+\xa3RLdk\xde\xed{\x9b\xcfG\x1c6\xa9\xd73\
+\xa3`\xbb\xc61\xe6\xb7\xd7}J\x80\xbaz\xaf\x8f\xda\
+>v\xee\xc5Of\xdb\x1c\xed\xbcfN\xbc\x16\x7f\x9c\
+\x8c\x87:W\xcf\x9c\x1a\x09D\x88\xb5J\x8aC\xf8\x17\
+\x00\x9cs\xd1\xf7\xfc\x18\xea\xfa\xc1\x16\xaf\xd9\x00\x00 \
+\x00IDAT\xdb\xc3\xe6\xf1\xa0\xcbz\xf8l&\xa4\
+ZH\x83\x11p\xf9\x86y\x9bj\xff1\x1cq\x9c\x12\
+\xf0\xf1\xa5\x93\xbd$\x81\x99\xbb\xae\x09\xdc\xdc\xda2\xdd\
+\x87\xe1\x7f\xc2\xa6\x9f\xfbiXS\x11\xcdx\x85\x88]\
+\xb5\x88\xd2\x9a\xb0\x0e\x88\x91\xa6\xca\xbe1g\x80\x97\xed\
+C\xc3\x9as\x1c\x93-\xd7U\xb5\x0a+\x0cx\x0e\xe9\
+7\xaa\xd2\x9d\x1ae\xa51\xf5\xdc\xd9\xf6\x8c'\x865\
+\xf1\x9bD\x9a\x88\xabs6\xf7\xd9p\xcb\xe1V\xc3-\
+\x9b\xc2\x09\x86W\xc6\xdf\xe3)a+\xc0Qj\xfc\xfc\
+`\xfa\xed\x02\x06\xfd\xbf\xf3C^\xa5P\x9a\x95\xefj\
+\xd58K\xd8\x9a\xd8\x97\x88\x9c\xbc\x05\xb3k\xd5\x9a\x9a\
+\xfd\xd2\xf6\xd6aM\x9c \x0eq>\x8a\xfb\x9d\x0b\xc4\
+/_\x1c6}\xff\xd4\xd9\xd6\xfd\xe3<\xb1\xfe\x88\x19\
+{\xfe\x00n\xf1\xaci\x08\x18\x94\x00\x04\xe7\xac\xbf\x9b\
+- un\xf1\xc3\x99\xcf\x96VL\xc6)5\x86V\
+\x82OlX\xfeg\xbf\xc8\xd3\x14(zqz\xfe\xcb\
+4\x22\xfeS\xa5>\x81\xf8\xc9?M\xd6\xb4\xd6\xc8\x87\
+\x89>z\x8e\x18\xc2\x18\x18\x09\xe8\x98\x1a\xa0u\xa54\
+\xa1\x14\xc8S\xb3\xa3\x18U\xc4i\x9d\xa7\xe9\x07\xf6\xd6\
+8\x1ccz\x88W\xe4\x98\x80Ru\x84\xd8%5j\
+s\xd9\xa4\xbaB\x8a\xf5l\xe8\xc9\x0d\xfc\xee\xb5\xd9\x22\
+p\x5c>\xd8\x7f\x9c\x03\xf7\xa5\x22\x84\xa2\x01\xb1\x16\xb0\
+\xfc\xb2*\xc0Kb\xd1S\x91{*\xb9\x0d\xfd\xe5\xec\
+\x951\x06\xe3Y\xb3\xad\x95\xd4\xce\x11\xd7\xfbK\xf0\xfc\
+\x7f\xdfc\xee\xd5\xbf{\xd0\xfd\xb8\xbd\xbe\xf7\xda\xc2\xf0\
+w\x04F\xfdX\xaf\xb5R\xbe/\x92\xdek\x0e\x98&\
+`Ni\x22\x92\xf5\xf9\xf5\x0c\xa9\x88\x9bC\xec\xa0u\
+\xffT\x8c\xbfR\xa2G\x8b\xa8KRo\xea\xc0\x05X\
+8\x88U\xa2\x88\xeet\xe2p\xcd4\x85\xe5\xf3\xfc*\
+?\x8f\xf7\xd3\x1bj\x1c\xcb?\x16\xd5\x7fA\xf6\x12\x90\
+ \x8eR\x81\xad\xcaO_!\xa4\x19\xa1W3\x13\xfc\
+\xfa{\xa8_]\x02[\x88\xb6^\xc2\x8b\xa5\xa3\x93\x88\
+\xd8x\xd6\xe3\xc1y\xc0l\xba\x0a\xc7\xb6K\xf8\xfbJ\
+}\x97\xc84\xc0\xd1\x12Xg\x05\xbd*g\x97\xc8\x84\
+\xb6\x9f3\xee\x80\xeb\x01\xac\xdf\xd4:[\xf6\x87\xf5\xa1\
+\x97\x1ce\x12\xa5[@\xefy\xaaDI\x9c\xf5F\xfb\
+\xfc\x0e\x1ac\xa9\xb2U\xa2(\xee\x17\xca\x80\xcc\xe7\xb2\
+n9\x5c\x81\xa2\x83\xe4\xf7\x12a\xben\x8a\xb2\xa5z\
+r!\xad\xa8\x8a\x02i\x95c\x22k\x9e\xd753\xb1\
+\x95\xf8Ax\xaf\x9b\xaf\x7f\x94=\xe5)\xe6\xb5yr\
+&\x5c\xcf^*)\x05p\x18\x0f(\xa1\xb5\x8f\x1d\xdc\
+\xd6\xa1\xe7\x88*\xe8s\xb9n\xfbY/{V**\
+q%^\x9aT\xcf\xcd\xdb\xc3\x9a\xfb\xec\xe0\xbeC\xae\
+\xf7\xabg\x22\x00\x91w\x1fP\x12%\xd2z\xef%\x86\
+\xd6\x87\xeb\xa3a\x00H\xe8\x9f\xab\xdf_[w\xf6\xe9\
+\xd9\xad\x83=\x13\xf6J\x88$\xa0\x00\x04\x22f\xc4D\
+%\x92\xd4\xea\xfbD\xa0\x17\x89\xf4|\xf93\xff\xcf\xaf\
+\x18[g\xdf;`\x058(\xaa\x00\x19\xeb\xa1gr\
+\xe9\x19t\xbf\x1d\xd0)\xaaC\xc5\xb9\x02\x0f\xfbR/\
+5m\x00\xeb\x19\x15\x8f\x16\x85@\x8e\xbf\xb2/\x00\xdf\
+IE\x16\xe0\x14\x03@\xa2*\x91\xe9\xa7b\xe8\xf9\xf4\
+~\x12 \x7fO\xc0\xea~9g\xb4\xa0\xe5T\x83J\
+,;q\xa5\xaa|\xd0\x98p\xde\x9c\x16\x03\xceuy\
+\xae\xde/)\xb1\x9b\x9b\x875\xd2#\x12\x07L\x91\x14\
+\x0b\xacqm\xc4\x08\x89\xed}#\xac\x11\xd5\xc2\x88r\
+\x7f\x5c\x97\xf3.\xf7\xb1\x04\x19u\xdf\xfbn\xef\x19\xd6\
+\xac?\xcf1\x03\xf2\xcd3\xc3~\xcb\x14\x87\x14\x05.\
+\xcd\x05\x15\xd1<gJ\x8b@%?\x13\x81\xaa<\xfe\
+:\xacYw\xb9\x8fJ\x940\x99\x09%J\xcc\xdfc\
+\x14\x09D\xf9\x17\xebJ\xa0\xab\xe5G\xc5\xde\x98\xe5\xec\
+=V\x19\xac\xf3\xdf9\x9b=\xb1\xb4Qj\x8c\x145\
+\xee\x9c\x17]\x22\xa6\xaf\x0e\x9b\xbe\x7fXXs\xfe\x88\
+\xbf\xdc\xd7\x9e\x19\xd9\x8f\xf5\xeb\xcf\xaf\x9e\x99\xd4\xaf\xaf\
+\xcb\xef\xdb\xd2\xd5\xb4\x0a.\xbf\xef\xf9\xa3v\xa7\xb6\x14\
+ w\xfb\xe0\xb0UE{<[\xd8\xf4\xfa\x84\xb0\xa6\
+\xe2\x88:\x9c\xcc\xc1bv8\x9fT\xd6>\x146\x17\
+\x10\x16\xed\xaa\x1b,@\xc0\xe6'\x8bz\xfc&\xc7\x1d\
+o>\x116\xbd\x9e\x10\xd6\xf8\xfd\x14\x91\xdd~2[\
+\x14\xb32X\xe7\x8f\xe7\xa3\xf2'\x1e$\x1a\x99\x15\xd9\
+YE\xffa\x8d\x9f\xbc\xfe\xbeZH\xd3.\x98{\x9a\
+\xabgY<\x01@\xe9\xe35\x80@\xfa\x99\x12\xa5\xd3\
+\xfb\xec\xbc7\xce\xee\xbdY\x99\xcd\xf8\x0dpg}V\
+\x82rr\xd8,:\xf7\x8c\xf1\x19\xa9\xc11%>\xe3\
+\xcb\xc6\x97\x8e/\x9b5\x01\xae=\x8f\x9d\x0cQ\xe0\xe9\
+\xf9\x0e\x97\x0a\x9b[Q\x0e\x9f[Q\xee\x136\xbd\x8e\
+\x9b\xdd\xcd\xee\x0c\xb4-~\xfdU\x8b\x9f\xa8\xb8Y\xc2\
+\x87i\xa7\xd2/1\x14\xf7$\xc3\xa5\xf2\x03~3\xfd\
+\xeax\x9d\xb0\xe9:\x9e\x15\xd6\xecG\x899\x91\xd3l\
+\x91-\x7f$1M\x8a\xfbx\x8b\xb0L(\x0f\x9f\x99\
+\x11\xd7\x08\x06\xc0p\xe3\xe1\x0fB[@\xa2gJ\xc0\
+\xf0\xb8\xb0\xa6P\x90\xeb\xbcT\xf7s]\x010j_\
+ZWy\xbeWk\x87B\x0eQT\x89\xb7\x845\x01\
+\x9b\xf1Va\xeb\xbe\x9e\xee\xf3d\x0d\xc3\xc0\xba\xe1w\
+\x88\xe9\xfa{\x87\x845\x09*-\x1ey\x03m0\xfb\
+\x95H|\xe6s\xb4\x04J\xdb-\xcfE\x00\x8e\xf8\xc9\
+}\xe0G\xb5*9\xff\x8b\xf1\x91*\xf9\x9b\xbb\x84\xad\
+\x09~\xf9\x9d\xf4\xb3\xc5d4.0E\xa2+\xf16\
+\x85\xc1\xfes\xce\x02\xc6\xb4\xb8h\xd1r_1\x972\
+o.?\xe6\x9cIm\x8c*\x00\xbb.q\x8b\xf3\x9d\
+\x9fs\xff\xd2\xcf\xd5ujm\xca\xd6^c\x01\x9d\x9b\
+u\xbee\xdc\xa1\x85e\xf3\x81\xb0f*N\xb6\x9e\xed\
+\x9d\x7f\xfc6M\xe0\xc41Pq\xcdq\x11\xd3\xf1\xfd\
+\xf8\xcd\xe3g\x04c\xa6\xceUOJ\x22P\xd5\xcb\xf6\
+\xd5\xb0\x85\xda\x1a\xa2{\xb3\x1a\xef\xc3\xd7\x9f\x9f\xc2\xa5\
+\x99\x026\xb9\xcdy<`mP\x95\xc1\x9e\xca\x08\x00\
+\x90`\xf8\xf2\xbd\x1b\xf6\xa2D\x04\xff8E'\x04\x98\
+~\xbf\x9f\x9b\xdcS\xcb\xfb\xc4\xbeK\xfc\xa9\xa6V`\
+(\x81\xc7\x1c\xe8\x12\xfa\xed\x0f3\xc0\xba\x5c\x06\xb6\x00\
+\x81\xdeq\xf5\xe2|\x16\x86@W\xe0\xe6\xe7]\xcf'\
+\x96\xcaf11|\x1e\x07#U\xd6\xa46V \xe3\
+}\x93\x82\x5c?\xdf\x8f\x1bt? {I\xdd\xae\xde\
+\x7f\x0bY\xa2\xec>\xa8\x5c\xb8\xcf\x0ep\x0eS\x85\x84\
+c\x92\xa0\xa6\xe8O\xa9?\x0b\x10\x05\x82)\x02U\x01\
+\xb8D\xce\xfdA5C\xb5\xcb9\xc3UYq\xbd\x19\
+xl\xbf\xb4\xac\xdb\xcd\xb5\xf2\xfe\x0d\x1d\x83\xc2\xf3\x10\
+\xd0\xf4\xe3\x19U\xbe{&\x09\x87\xf0\xcf\x89\xb4\x01:\
+$f(\xb9(\xf7\x90;\x09\xb0\x8a6\xea\xfcy\x12\
+\xe0\xd1\xeb\x0e\xf0\xd1Rq\xc6nn\xac\xe7\xa8B\xc7\
+\xb1I|\xde\x9e\xd3.T\xae\xfa\xca\xa3\xe7\xc5\xb1[\
+\x07\x02`\x88\xb1^F\xeb\x95\xd8\xa59\xe5*\xf4\x12\
+\x9a+\xe7\xe7\x82\x88K@\xbdRc\x97\xb0JL;\
+D\xbb\x02u\x09\xae\x00\xe5\xeeK\x05g:\xa4\x96\xf7\
+\xe1\x88}\xa9\x88gE\xb0\xa8\xc2z\xbe0W\x04\x9e\
+\x9e\x8b\xca\x9d\xc4F \x85b\xec@\x82|s\xdcz\
+,\xdd\x07\x95\xf0\x10]\xfd\xdb\xa6\xb2\x82\x02.\x00H\
+q\x96Z\x7f\x026\x89\xbb\xef\xf93\x075\x00K\xa5\
+Y\xe2\xd7k\x1d\x00X\xd6\xb1\x9f\xcb\xe7\x11P\xfe\xef\
+\xbe\x9a\x1dEE\x06\xa8\xe9\xdd\xce\x1e\xe8\xcdK\xc3\x1a\
+j\xba\xaf\x9e\x22\xdc\x8bU\xf6~\xce\xf58\x87$\xa4\
+\xc6;b>\xd9'\x12U\xf7E\xe5KE\x1f\xf5\x12\
+\xa3\xc3\xcf\xdb\xdf*r\xd9\x13\xa9\xa2[\xeb\xc6A\x8a\
+\x91\x92\x80d\x01!\x12SSr\xf8I\xd7\xcf_\x0b\
+\xcc\xb3b_\x95\x06\xd7#`%\x0a\xe8\xfd\x05Rz\
+\x01\x89\xfb\xf4\xadE(\xed\x98M\xbdx\xa1\x04\xc7\xdf\
+#.i<\x1d\x86\x89\xfd&\xe1\xec\x01\x80\x03;m\
+\x0e\xaf\x80aSKPZ}~c\xd3\x8c\xa9U\x11\
+\xc1\xb4\xd02\x97=\xee\xc3C\xc3\x1a?\xa1%\xc5\xf9\
+f\x9d\xd2\xf2\xe0\xdf\x8e\x9a\xad\x02\xbb\xda\xbf\xeb8\xe0\
+\xe5\xe7\xf9g\xfbKo\xa6\xf1u\x9e\xab\xfb\x07\x00B\
+\xbd\xcf1\xc7\xc6\xcb\x96\xca9U\xf5\xdf\x0bk\xa8\xda\
+\x99\xa0Z\x97\xa5\xca\x9c\x15\xb9\xcdo\xc2\xd6\xf1\x7f\xc4\
+\xea\xfa\x9e\xf9bH\xd9\x7f\x99\x98W\xe5\x08\x90\xa0g\
+\x1e0\x06\xa8\xc4\x0c\xc8\xc4\xd6|\xf8\xcd\xd3\xc3\x1a?\
+\x00P\xb4\xff\xac\x0b\xbd\xac\xf6i\xcf\xb4\xf9\xff;/\
+\xfb\xf8\xad\xa7\xcc\xfa\xbe\x9fK\xce_\xf1K\xe2\x0b\x94\
+b\xf3\xecQ\x81Q\xdb\x8f\x09\x9b.\xebO\xc3\xd6\x8a\
+\xafqr\xf5\xf9\xb2\xf2_\xd312~\xf5>T\xe1\
+\xdd\xff\xcdc\x96\x96\xa9\x9d\x8b\xec\x5ctgz>\xc3\
+\xcf\x86\x9f\x0eS\xfc\xbas\xfe\xb0\xa62\xabr\xab\xd2\
+\x99\xe2\x825\xcf<\xa7\x04h\xc1\xa8\xcay\x8e\xd3+\
+f\xa3\xfb\xe69>p\xb6\xf5\xdf\xbf\xbd\xdc\x8f\xed7\
+\x93I\xe0\xf3\xbd1+\xd4>W\xc6\x89\xc6\xe0\xd5\xef\
+\xe7\xfd,\xed$\x85\x95\xbc\xff\xc6\x95\xd6t\x0a\x1a\x1b\
+T\xd4S\xe3Ko}\x89\xb6e/\xbe\x8a\xfdx\xdb\
+\xf1v\xe3m3\x91}\xc8\xca|@\xd5\x9e/gz\
+\xfe;\xaf\xdby\xed\xce\xb4\xafv\xffi\xf7\xfd\xbb\x0b\
+\xf3'\x22\x9fh\xc9Xz\xe8\xb3G_\x9c!\x81\x1d\
+\x9e\x17\xb6\xaa\xc0G\x03\xf0\xdc\x02L$\x10\xe3F\x9c\
+N\x0c1[ \xc5\x19\xe3\xf5\xc2\xd6}b*F\x15\
+\x141p\x0e\x08[5\x22\xdc\xdf\x8aWs_N\xd7\
+}\x81h%\xd9\xde+l\x9d*az\xda\xe6O\xc3\
+\xd6\xa9%\xb4D\x86\xcf\x85\xad~t\xbceX\xd3\xa2\
+\xa0\x92|\xbf\xb0f\xdf\x12\xd3\xc3\xe4u\xee\xca\xab2\
+\xae\x1b\x1f\x12\xb6\x7f\x9e5<5\xac)T8o\x01\
+\xcf\x09@\xf2c>\x97\xeb/\xbf\x85\x11\xf8\x0fa\xd3\
+\xf7\x8f\x9dm\x8d\xd7L\xf1H\x00\xb5D\x0b\x8d)\xbe\
+iX\xc3\xc0\x030a\xfe\x12Q\x94?\x02\xd2\x00\x8b\
+\xe2\xb9\x04\x82j:\x01\xe6\x86\xfb$oI\x91\xde\x8a\
+Gh\xcf`X\x8a;\x01\x87\x803\xfe\x9d\x9f\xd4\xaa\
+\xe2\xf7\x00M\x0ao\x98=\xfc\xb3s\x0aC\x14\x00\xe8\
+|\xcdsK\xfcS\xfbQK\xc3\x1d\x929\xcaO\x12\
+s\xcc|i\xf3wak\x1e\xaf\xc5\x8d\x88\xe9^\xbd\
+\xdc\x150Ar\xb2WH\xaf\xd6\xf0\xc7\x8b\xe8\xdf\xf0\
+\xb6\xb0\x06\x09\x91\x88\x12\x8fyk\x8a\xcc8\x18?\x13\
+\xf6[\xc6z\xa9x9 :\xe0a\xbf\x03\xa4\xebA\
+\xafW\xbdv*,({'\xa4:%\xc7\xe6\xe0\xb7\
+0\x04\xa0\xbd\xba\xbc\xbf\xdf\x03\x01=@\xe0\xe7%Z\
+\x1c\xb6\x00\xd3\x03T\xf1\xb5\xd0z1\xbeS\xabu`\
+\xd9\x886j7\xce\xb0>?\x84\xcfF\x140\x10\xd1\
+I\xa0\xa5\x12\x19\xe3\xa8$\xdc*\x9d*K\xbe\xfa\xfb\
+\x8b\x12\x89\xe2\x06y\xa4\xcd@l\xe2\x92a\xab\xb8K\
+\xb5\x1aHH\xf6n&\x8b\x802\x06\xbf4\x07\xae\x9e\
+=j\xbf\x80\x08\xf7/\x13\xe7\xa2Rr,6\xa8\x04\
+,\x03v\x8c\x87\xaa\xb8\xe5x\x9aJ\xb4%h\x9e\xe3\
+\xaf\xbb)\x03\xbe8\xcc\xbe\xe5c\x9dJ\x80I\xb1\xac\
+\xff\x93\xb7?\xdc\xfep\xbd\x0f\xd3\xdfX\xd6\xc3/2\
+\x01\xe2\x182\xd0\xde\xdc:\x81\x18\x0c\x07\xe3=\xa8\xd5\
+K r\x1e\xf0~\xda\x0e\x00\x0f\xc8\xa4\x04\x19\xb5[\
+ \xae\xe7T%9\x1d\xf8\xf6\xab\x99\xc0\xebE\x84\x88\
+\xa3@rL\x02\xe7\xbeb\x0c\xb1\xfc\xd9\xb4\xeb~\xb6\
+>\x8f\xaa\xfc\x02\x16T\x90\xb3\x22\xbf\xb9\xf1R9\xd9\
+s\xa3\xdc\xff\x02\x1a\x22N\x1c=\xd10\xfb\xc0u\x9c\
+?\xefc?\xe6\xed\xb2\xe9\x98{M\x8d\xaegT\xe0\
+\xbe\xfd\xab\x0c\xcco\x9b\xaa\xefY\xf9*\x8d\x01s]\
+\x05n\x12*\xebR\x00j\xdfC\xc8\xf95\x8e<\x0f\
+\xea\xfaw\x01\xacDU%=\x03\x00\x89f\xcd\xc9\xb5\
+\x1f\x1c\x94I\xd9+j\x9a\xfd\xa0\x12M\x94\xcbA\xed\
+\xefz~\x90}@\x08M\x03\x15l\xfb\x1f\xc0h|\
+\x0f\x80\x01%^\xc5\x14\x85\x5c\xc2\x98\x15\xd3\xaa\xf8\x0a\
+\x84\xf29\x14\x80j\x8e\xfb\xcfk\x1c\xe8\xbe\xd3V\xdc\
+\xef~\xce\xae\xfd\x00P\x02\x1c\xa2\xb4\xdb7>\xbf\x16\
+\x83\x5c\x8f\xa5\xf1\x80\xe9\x82A\x80\x22+\xd1\xb4\xdf\x00\
+v\xf6\x15\xe0W`\x80\xe9F\xd3\xc0\xbe\x10\x88\xa1\x8c\
+\x1b\xeb$\xc0\x10H\x08\xcc\xad{~\x075^B\x96\
+-M*buN\xda\xdf\x00&\x80\x85@\xa0\xbb\xfe\
+\x02d\xfb\xa93^\x05N\xfc\x9c\xf3\xa9\x1f'\x09\xe8\
+3\x9d\xc2\xf9\x84bi}^zNy\x16J\x7fK\
+a\xe5\x1f\x00\xc2*\xdd\x184\x12o\x81\x96\x00\x8a\xbf\
+\x07tX\x07\x02?\xe7r\xc7$*\x0a\xf1\xc7\xc2\xd6\
+\x9e\xdajU\xb4\x8e}n\x22z\xce\x8d\x8eI\x12\xde\
+~\xdb\x02\x85\x02>\xbd\xdf)\xf25^!l}\x9f\
+\xe1\xeca\xd3\xff\x9f\x12\xd6T\xf2\xadW\xfe\xf5y\xb3\
+\xad\xe7\x021?\xcf\xd7\xf9\xed\xb9[\xc7\x00J\x80\xb3\
+\xfd\xc4O\x00\x00\xf9\xb9L\x9c\xaa\x95\xcf\x18\xbd\x1c\x07\
+Z\xda\x0bc75\x060\xd4\x8b`\xf9\xea\xe3\xb6\x1e\
+ \xe8\xff\x1f\x90 \xde\xe1\x0f\x00\x09WJ`\xedk\
+y\x9fQ\x80\xf3\xdc\x1a\xdf\x1a6\xbd\x1e\x12\xb6\xb6.\
+l\x0f\xdd\xdem\xeeE?wX\xa3v\xfe\x82,\x14\
+a*\x02\x80\x01Vz\xeb\xb3\xa5\xb0\xc4\xb4\x1e\xb3\xf4\
+\xcc\x0e7\x1dn6\xdcl\x1e3{l\xf4\xa8\x0f\x9f\
+\x0fk\x00!\xe3\x06\xc5\x0fz\x8a\xf9W\x13yh\x82\
+\xa4\xa8\xdd\xf6\xdb\x99\xc0o\x17@\xb2\xce7\xeb\x9b\xf6\
+\xc8e\x93\x09w\xa6e\x9f\x94X\xe21\xc9\xa0\xb9d\
+\xc6\xf3Y\x00\xd9|6l\xa5\xb2W\xdc\x9a\xbd\xef\xb5\
+\xff\xdc\x07\xeb\x12\xd5\xb9o\xedD\xd1&\xb2\x99\xc0$\
+q\xba\xf1\xa4\xb0F\xf4.\x81\x81\xed\xc1\x93\xfd\xce:\
+\xdeof\x1e\x7fpZFGL\xf6\x80&\xe1\xce\xc4\
+v\xf8\xbf\xb0\xe9\xf5\x05ak>!\x11\x1a\xee=\xdc\
+g\xb8\xcf\xecwf\x7f^\x89\xa1\xf35\xe3\xed\xf1\x15\
+a\xd3\xef\xfd0l\x05\x0a\x89\xf7\x95J\xfb9\x971\
+\xe1z\xd3\x89\xd9\xf17\x9b\xef\x855\x80\x1bJ\xfc&\
+l\x15\x07\x04\xe4\xd5\x18\xc2#C\x8eq\xfe|\xd7\x9b\
+\x81\xb7\x9cN5\xdc>l\xf5\xa3\xa5\xd2\x9e-\xd9\x95\
+`\x8ac\xf2<\x19o\x17\xd6$\xb4\x0ae*\xdfZ\
+\x83\x00v\xae\xd7~\xe5\x0f0FS\xa4\xb4\xf6O2\
+S\x86;\x855@\x80V\xeb\xd4T\xa8)A\xd9J\
+US\xb7\xc4C\xe2\x1d\xd3\x04L\x03\xe8\xc5\xdb\xfb)\
+F\xceQ\x1a\x08\x00\x0e\x95yb\xc4\x80_\xf9\xc6\xc3\
+f[[-\x9c\x7f\xe24\xcc*yEN\x85)\x86\
+a\xee\xd3\x8a\x13\x14\xc6\x148\xc5\xd9\x0a\x0a\xee\xa7\x16\
+3\xad$9\xbd\x8b\xa6E\xfd}b\xea\xb4\x12\x8c\x1b\
+\x14\x7f\xfa9\xf9\x90s\x10 B\x13\x81\xc6\x99\xf3\xce\
+\xff\xe78\xcb:W\xedgyO\xe6\x8d\xc6\x96\xda\x0f\
+{+@2\x1f0\x1d\x1e\xb5@\x15\x0e=S\xe3\x8d\
+\xc3\xd6q\x1c\xd5k\x90\xbd{\xa8!Eq\xe3\x18!\
+A\xa89*\xa4\x10v\x0b\x03\x00\xe1\x86\x09\xec\xfd\xbf\
+\x00FB$\x10\xb4\xe0\x05<\x1eP\x22\x95\xe5\xf0\x04\
+`\x02(\x0b\xd5\xeb\xb9j\xce\xf7r\x10\x09\xb8\xfa\xef\
+\xfb\x7f\x170\xf5\xbd\xa7~\x0e@\x00\xe1\xee\xdeo{\
+\xea\x12\x18\x04!j\xd3\x8aW\xf5\x09\xb9\x83X\xc5\x90\
+\x03\x87<'5\xa8\x12\xd7\xff\xc8\x00\xe7\xe8\xd9jN\
+l-\xb0\xdch\x9bC\x12\xa0Au7\x06\xcf\xf8\x14\
+\x08\xea\xdfe/\xd9\xef\xa4C\xc8^\xaf\xba>\x14j\
+=\xb5\xe7_Da\xa6\xcd\xb8lP\xc8XG\xc9-\
+Q \x22Q*\x986\x869\xda\x9d6\x00\xcaP9\
+:\x89\xa7\xc4d\xf74z\xe9{\x8d\x09\xcf\xef\x97\xa5\
+N\xbcT&\xfa@\x07`\xe3\xa0\x04\xb0\x18\xabs@\
+\xae\xcf\xa48MI\xfd\x12\xa8\xb9\xdf\xbf(5\xf6\xe5\
+\xfd9<\xc0\x08`\xc0}\xe2\xe0l\xec\xd3{\xfft\
+H*S(\xd4(\xb6\xb9\x8f6w\x0ck\x02L\x01\
+\xba\x84D\x22\x96Z\x0c\xa8{\x95\x18\x9eR\xbd\xfe\xfb\
+\x8aJ\xc6t\x87\x1f4\xc0\x1a\x87\xae\x12*\xc1\xbcq\
+\x06\xec*\x91z\xc0\xcd\x956\x86M\x02p\xab\x0ct\
+/\x5c\xea\xebK\x00\x9e\xd3\x04\xea\x80\xbdb\x02L\x12\
+]\x01?\x8a\xbc\xf7s\xdd*>\x02\xfcTy/\x8a\
+\xb0\x96\x06\xcfY\x22\xe5@s\xbf\xadC\xf7\xc5:\xb0\
+\x0f\xadk\xf7\xd7\x17\x06\x0a@H\xc2\xea:Ub\x05\
+\xea\xc4}\xfa\xde\xda~z\x86\x04\x05 \xe4~\xf0\x13\
+\xd6\x17&\x03\xa0@\x22\xe6@\xb3\xaf\xf2\xf9\x0a(\x0a\
+\x00\x10\xc0\xbb>\xeb\xc8\xbf\xaf\x9a\x16\xcb\xfat@\xf1\
+\xab\x0e\xa2~\x8a\x07?\xd9\x8b\xeaXg\xde\xdf\xbar\
+P\x03:\xf9S~\xc2\xfb\xaeS;\x96\xf7\x11\x10x\
+\x8e=\xb0\x83\xb9\x05\xd0\xfe\xfd\xb0\xe6\xef\xdb\x7f\xc6\xf1\
+\xe9%\x07\x08\xb8\xcfW\xc8u\xf3\x9f\xd93L\xcc+\
+\xb5\x1f\x8a\x01\xe2\xb9\xaaL\xbbN\x01\xbf\x84D\xcfb\
+\x8eg,\xc0\x03\xf0\xc6\xcfR\xcf\xc7 \xf0<\xf9A\
+\xeb\xcf~\xf0\xb9\xbdZ\xf7\x02\xfd^\xdc\x08\xf0\xc8/\
+\xd9\xc7\xd6!\xff&\x9e\x08f\xcc\xe1\xcd\xb9\x9b\xfb\xbf\
+\xd6\x9f^Z\xe7\xb0\xbf\x9b\xad\x00\x05\xb0h\xc5\x01\x04\
+h54\xb6\xcfu\xe6:*\x06Q\xc70\x8at!\
+\x12\x86\x02\xb6<7\x81\x1ej\xaa\x1e\xeb\x04\xf2\xea+\
+\xe3\x8c\xcd\x1b\xc3\x9a\xfbJ\xa4\xefma\xcd>V\xe9\
+Q\xf88\xc3<\x07\xa1D\xa7\xaau&\x13\x85\xbao\
+\x98\x08\x02u@\xa0D \xd75jg\x05\xc8\xd6=\
+*\xadJiR\x8d\xeb~\x89\x7f0/\xb2\x05\xa4D\
+\xe9\x88F% V\xd7\xd3\x17\x0a\xfaVJ\xe7'\xff\
+\xd4\xb7\x02\x00\xcc\x8dus\xee \x04\xf4\xa2\x9a\x9d6\
+E\x89\x90%\xb3JAc\xf7\xd8\xb0\xac >\xabY\
+\xa7\x7f3\xcb\xc7\xed\x99\x1bP\xdf\xd9\x00j\xa7\xcb\xe7\
+v\xe0\xf4)\x0el\x9e?\xc6\x9bD\xfb\xa9K\xe5\x7f\
+\xf8\xcd\xf0\xeb\xe1\xd7\xab\xca\xfb\xce\xd3w\x9e\xb6\x13\xff\
+~\xccp\xcc\xce+\x1b\xf1\xebl\xa9\xd9\xfd`\xd8\x1c\
+\xef\xbes\x8ewo\x9e\x14\xfe?\xd9\xdc3ZgK\
+m>\xc5\xf7&o\xf3\xf1\xed\xc7\x1b\x0d+\x05\x0f\xc0\
+\xb6x\xc6\xfa\x07\x84\xb8\xff\x00V-\x90\xdf\xcaV\x90\
+l\xed+\x91\xef\xbc_\x80\xd8)\xd6\x98\x13\xb2\xed\xed\
+\x968\xbe*\xc6\xee\x03\xff\xc9?$ W\xbd\xf0\xc6\
+\x8b\x1d\x1d\xd6\x00W\xe6\xcf\xffW\xd8\xf4\xf7\x1f;,\
+\xe3\x11S\xab\xa0z\xf4C\x1c\xee_\x17\x11\xc1\x99R\
+?\x9d\x0a3s3\x19e;\x9f\x0dKm\x84`\xb2\
+^(l\x05\x1abX\xe2L\xf1\xber\x8a<^7\
+lm\xfd\x19\xae\x1f\xd6\xe4\x13*\xdf\x07\x875\xf1\xac\
+\xd6\x06S?$\x8a*\xfeZLO\x08\x9b\xde\xff\x7f\
+\xc2\x9a\xf1|\xa8\xf7\x19W\xd4~\xc4\xf4|[\xd8\x9a\
+_\x11\xd7\xae\xe9'\xa9\xf10\xdcj\xb8\xf5p\xeb5\
+_\xd9\x9c\x186\xbd\xfelaJ\x0f\x7f\x19\xb6\xc6%\
+\xe3\x1d\xc3V\x7fY\x80\x00\xe0;\xf3\x87*\xcca&\
+bvg\x8b\x08j\xf9xXX\xb3\xdf.\x19\xd6\x88\
+\x8fk\x91\xc3lt\xde\xd9?\xfc0\xffm\x1f\x03\x00\
+\x14\x04\x9d{\xfd\xd4\x1fL2\x05\xbd\xa4\xf4\x13\xd1\xac\
+V\x0b\xc0/\xd1W~\x01CQaI\x9c\x05X\x04\
+\xa8x\xbe>\x87\xfbb\x0c-\xbf\xa4E\xd4\xb9\x08\x08\
+\xe0g\xf3\xbc\xd5jTZ6\xce\x07\xa2\x8d\x982\xc4\
+3\x01j\xf9y+/\xc6\xf4\xbb\x5c\xd8\xf4z\xa3\xb0\
+\xe9u\x08k\x0a\x03\xce\x03\xe7\x8f\xfb\x0aXHf\x97\
+\xb8\xa1\x00\x05\x22\xc7)~\xa8\x05q/dz\xf3\xd6\
+\xb0i\xe3\xbdt\xe7e;/[)\x82\xe3\xd9\xc3f\
+J\xdbL\xcd\x1e\x9f>>m|\xda\xdc\xc3s\xad\x98\
+\xeb\xb9\xf3\xb8\xb05\xf0\xd8\x1c\x99\xe3\x08<\x88\x1e\xa9\
+O\x84\x86\x1a\xe4\x9ew\xa4C\xbc\xe7\x22R\xb0y\xc5\
+\xe6\x98\xcd1\xcd\xc2\x13(\xe7\x81R\xa2\x16\xa8\xdcY\
+\xe9\xad\xc0\xf2\xac\x19\xe8}5+\xe5\xd4\xf5\x89\xc2q\
+\xf0)\xc6T\x01\xbc\x00\xd6\x02\xb5\x108B\xea\x8cI\
+i\xaa\x84\xab\x9f.\xe0U\xef\xef\xc9Y\xf9R\x99=\
+%\xff\xfd\xe7Y\x0981\x13\x87\x8f%\x05\xde\xd8B\
+\x81\xbd\xeb\x81xy\xff\xac\x84V\xc56\xa9\xe0S:\
+>\xf7\xb0\xf5\xa2\x19\x05(<n\xb65\xe0J\xb1\x98\
+\xed\x9d\xc2\x9a\x85\xbe&\xacK\x80\xde\xabC\xab\xd0\xfe\
+W&\xa8*\x0bWY*bDt\x0a\x91\x15\xe0\xe8\
+M\xf3\x5c\xcc\xbb\xe7(\xf4\xc2y^(\xf1z\xc0\x05\
+\xb2\x0e&\x01i/\xa2'\xa0\xee\xe7\x98w\x22%\x1c\
+\xe4\xe6\xf7\xb2\xe7\xcf\xff\x7f/\xff?\xc7\x8f\xd4<x\
+\x0eC\xa2\xe79q8\x12\xa4\xf3l\x7f\xb9\x8d\x8d\xbe\
+\x93\xe3\x9dN\xca^\x9e<\xf0\x03\x0f\x9e\xff\x1e&\x8c\
+\xdec\x15O\xe2:y\xf0\x94\xc3\xf4\xb9\x13\x18\xab\xfb\
+\x99=nUQ\xbfEX\xc3\x88\xb9G\x06\xe0\xf7\xce\
+J\xa2\xcf\xe9y{\x9e\x1c9JwG\xcd.\xcd\x80\
+n\xfaCQJ\x8dcR\x11K\xe4\xb2\xe6\x92C\xac\
+\x05\xf6wN\xc0\xe22\x99h\xdf4\xaf?{&\xeb\
+\xf9J\xe0\xee\x98\x80!f\x80DV\x82o\xec\x95\x83\
+\xb0\xd3$\xa8\xde|=]>\xb7\x1eB\x89\x97\x9ev\
+\x9f\xd7A\x22\x01\xe3\xc8U|{\x91\xb9\x9eR\xed \
+\xb1O\x12\x98\x91\xd8\x15\x03\xc4s\xe9{\xb1\xbd\x8f\xd7\
+\xbe\xa7\xd6\xba\x97\xf8Q\xf9G\xa5VQR\xe1r\x80\
+\xabd\xba\xde\xbe\x07\xcdA(AWa\x14\x80\xaa`\
+\xf2G\x980*\xed\xee\x07\xbf\xe5\x00\xc5\xa4\x10\x80\x11\
+\xfd\xb3.z\xa0\xc0\xba\xec\xc7\xd7y\xce\xce\x9b~\x8a\
+\x86\x9e\xca\x14\x03\x03T\xd7\xef{\xde\x0eV~\xa3\x17\
+\x81\xb4O\xdc7\x15o-\x07\xeb\x14\x89\xf9z\x0a\xe1\
+\xffTN\x85H\xa0|\xbf\x96\x07\xefo]\x11\xeb2\
+\xd7\xdc\x181\x15k\xd7\xcb\xbfge\xb3\xa8\xe9z\x8b\
+%^\xce/\x00\x91u\xd8\x8f\xb1\xb5\x8e\x00z\xfdt\
+\x19\xeb\x1fp\xd2\xb7T8WQ\xd5\xf9\x1dTDs\
+\xe7\x93\x0aZ\xc0\x8d\x16\x06T\xf4\xec\xa5\xaf\xf5\xe1\xb9\
+\x0a@\x010\xa6\xd0Hh]\x97\xe9\x0d\xb4+Rd\
+ss\xfa\xb0\x95\x02\xad\xa0Q\x09\x82^_L(\x15\
+.-\x0c\xb4c\x00c\xae\x13\xc0\xa5\xa5\xc1\xf5Z?\
+\x0f\xdf\xf3\xb0\xf0\xa3\xdbCS\x8d<\xc2\xceO\xac\x94\
+}\xdaK\x95\xa0\x13\x97\x04h\x01Pn\x9a\x80\xc6\xcf\
+2NA\xf5\x170\xab\x80\x02\x94\xac\x7f\x8c\x0d@\x91\
+8F\xc2\x88Q\x88\x81\x94\x1a\x06\x05d\x88\x1f2`\
+\xae\x9e\xef\xbe\xe5\xec\xc75\xc5d\xdf\x8a?\x80\x1cs\
+\xd0\xfa\xb5\xbe\xac+~Ba\x03\x10\x9c\xe2`S\xf4\
+4S\xbe\xc7\xbf\x0d\x9b\xdc\xdd\x11aM\xc2\xf5\xf1d\
+4z\x1f\xeb2\xb5`\xf6\x8b\xef0\xa1\xec\x1f\x95\xe5\
+\xc3\xc2\xa6\xd7\x83\xc2\xa6\x7f\x7f\xc3\x12\xd0\x0fw\x0c\x9b\
+\xbe\x7fo\xd8\xf4\xfd\xa1\xc3\xa1\x9bSS\xeba\xfa~\
+\xf7va\xf38\xb7\x9b\xc58\xb7RC\x7f\xd0B\xd9\
+\xdf|g\xf3\xbdP\xe7\x1f?\x1f\xb6&X3S!\
+\xc4\x06\x1f\x1f\xb62R\xea\x9c\x02D\xff[\x8e\x87|\
+\xc0\xf6\xf0Y=^\xcb\xa2\xf3\x0b\x95\xf8i\xb3U\xef\
+\xf8p\xd3\xb0U=}\xfcb\xd8\x5c(Z\xc6s{\
+\x8e\x98,\x98K\xc9t)\xcd'\xe7\x0dq5\xeb\x22\
+\x01U\x1aN\x05\xb0\x01,\xecK\xcf\xfd\xeeK\x1c2\
+\xa5\xc1\x8b\xd6\xc0tZ\x053`\x1e\x028\xdd\xe7\xcd\
+\x01a\xd3u?'l\xfaxw\x09k\x0ah\xb9\xde\
+v\x1f\x15\xd6\x0c[IJ\xf3\xe6\xddaM\x82\x9f\x7f\
+os\xd0\xe6\xc0\xcd\x81\x0dp\x81\xd1\xe5\xdc\xcc}[\
+c\x1f\xaf\x1a\xb6&h\x91\x95D^R\xe7\x92\x8a\xf4\
+\x8bg+Q\xb7\xfd\xb4\xc0\xb4\x1cfk*qS-\
+\x0a\xc5@\xbb\xcb\xf2\xfc\x86\xa3\x16\xc0d\xf3\xcc\xcd3\
+6\xcf\x98\xbe\x7fS\xd8:\xc5b\xf3\xf5\xb0\xe9\xdf\x9f\
+\x196\xfd\xfb]\xc2VQ\xbe\xedG\xc2\x1a1a\x14\
+{S\xbd\x00\x1a\xd9;_\xfb \xa9\xf15\xde\x90\xc8\
+\x9e\xb8*\xf77\xcd\xb6b\xd8:\xefM\xbb0u \
+\x01\xde\x12\xdf6=\xe8\xdba\x8d\x96\x80\x96\x94\x5cW\
+%N\x9e\xf7\xb7D\xe33~\xc0\xc8(\xe6\x0bF\x10\
+\xe6C\xc6\xf9%\xd2\xaa\xa5\xd2\xd4\x08S\x09\xd2\xbf\x96\
+\x86\x8au O\xd5*@4O>\xf7\xf2\xb0U\xf4\
+\xb2\xfc\xa4\xf30EW\x01\xaa\xfb\x89\xc3\x03\xd2$\xfe\
+\xa6GhI!1\xf6\xaa\xb0\xf5\xf3\xf3'\x00\xc2\x1a\
+k\x98\xcc\xcb*\x8c\xc4\xd4\xbdg7\xd3\xa6\xe4k\x0a\
+\x82\x99W\x13}\xdc\xbbs\xd4\xcecw\x1e;\x1f\xb0\
+\x8b\xea\xeb\x99\x96\x0d\xbfA\xdd\xce\x03z\xbc\xdcx\xd9\
+1z0\xae\x1e6\xfd\xff\xd9\x961w\xdb\xd7\x875\
+\x89\xcf521\xa0\x12i\xe3K\xb4\xf5zg\xef\x88\
+\xc0{8g\xd8\xf4\xbe\x97\xceD/\x11\xfa\xaa\xe8\x09\
+ \xfb\x1eE\x0f\x5c\xc5F\xc0w\x8f\xa46\x0b\x88\x05\
+^\x10+\x14CH\x92\xc4^\x85\xa2W\xfb\xf7\xea\x86\
+zu\x90\x09T\xfb\x00\xfe\xe4\xe5\xfa\xb6\xdfM18\
+\x07\xf8\x07\x93\xca\xd2\xa9\xfd\xd6\xe7\x82\xc4\xa2bQy\
+\x85p\x03R>\xbe$\x94u\xbd*\x0b\x18\x11*\x93\
+\x12\x96^5\xdeAy\x8e\x9a\xd7\xbe\x04\xf4\x12\xae\xfe\
+\xab\x1fw'1\x85h\xbd(\xc7\x9aI8\x8c\xe5\xb8\
+\xdbB\xc5\xb4\xb0\xebyX\xa8(\xa2\xee\x9f@^\xcf\
+\x5c\x06\xc2U\xc9\xd4r\xa2\xe7\xd4u\x09\x9c ~\xd6\
+\x9f\xc0\xd6\xfd6\x06\xf0B\x95\x88,\x15\xbe\x1f\xef{\
+_\x04\x8eE\xb9\x94\x10%@\xb0\xe7Ry\x9d\xd7.\
+\xf5\xdd\x058\x11\x18Zo\x9fO\xa0\xe4\xa0\x04\xaeR\
+l\xc7\x81\xb5yQX3?Z\xaf\x0f\xe0\xc2\xf3P\
+\xf1G\x85M\xe4s\xf3\xd4L\x00\x04\x80\x0fI\xc7t\
+\x8b\xa4\x1ag\xc5\xc8\xbc\xddjE\xc8\xcaz\xadc\x95\
+f\x07\xbeu\x0ci46\xe7\x9d9\xf7:\xc7dM\
+k\x7fI\xd0vRTR\xaf\x11\x15W\x95>\x89\xdc\
+e\xf2\xbe\xdd,+\xe0*f\xb7K\x8a8F\x84\x8a\
+\xadu?v\xad2Z_P\xb1%\x9e\xd6\x85@\xbc\
+\xfb\xf9z?\xd4o\xd4\xb2d,Ub\xa0w\x0b\xb0\
+\xe0}<W\xeb\x1f\xd0\xe9\xe71\x97$Z\x12H\xfe\
+([\xac\x00\xafz\xb7J\x15V\x8b\x8c\xbf\xe79x\
+\x7f\x00\x05\xcd\x05\x15Y~\xc9~\xc6\x08p\xfd\x80\x1b\
+L\x1d\x0c\x0c\xfe\xc7\xe70\xfe\x07\x10g?a@\xf0\
+\x13\x9ek\xcfLB\xe9\xeb\xd5\xbb\xdd\x8f>!\xb5n\
+\xf9%\x00C_i\x14\xc0\xf3[\x12y\x94z\xa2\xb2\
+\xa8\xb7\x12:\x9f\x13\xa0\x84\x02\x99\x14\xd5\xa2\xe2\xbb\xdf\
+\xce3\x89>\x0a\x9dV\x0c\x89\x99\xfb\x86\xe2\x98\xeb\xaf\
+\xc6H9\xa8\xef\x9f\x15g=\xe7\xc4\xef\x9cW\x02!\
+\xf7Y\xc2u\xf4\xe6\x15\x9bW\xcc\xcfc\xa9\x5c\x5c\xb1\
+\x18\x06\x8b?\x91hG\x1a\xf3\x94\xdc/\x17j\x02\x1a\
+\xebAK\x05 \xb5\xab\x14\xed'.\xd8\x89\xb7V\x82\
+\xc0\xef{\xf5\xfe\xfc\x85\xfb\xees\x0a\x10\xa9?\x03\x00\
+\xf9/~U\x22h\xddX\xbf\x12j\x8c\x80\x1c_W\
+\x15|\x9f\xc3}q>\x88\x1b\xc4\x11\x12z\xe7KR\
+Fk\xbex\xf6NW\xc5\x1b\x90B|S\xefs\xf6\
+|\x96\xe8\xdb_\x875\xbd\x9b\xc4\xf7\x92I9k\xed\
+\x04\x00\xf4\xcfa\xd3r\x7f\xfadMO9\xbf\xb3\xf9\
+\xf7\xb0\xe9\xff\xaf\x16\xd6\xb4\x10\xd1N9\x22\xfd\xb7\xca\
+\xa3y\xe0)\xaeE\x9c\xb9\x12:\x89\xad\xf1S\x80\x91\
+\x8c\xc3\x0a\x80\xd4\xb2\x93@\x09\xe6\x92\xb8\x025\x9a\x88\
+UM\x13\x00$\xeet\xd3nj\xaeX\xd7R\x07 \
+p\xff\xfd\xbbu\xe7\xbc\xb7>\x1e\x96\xd312A\xa1\
+\x0d\xa4E*$\xff\xe69\xf3\x124\x8cAq\xc5/\
+\xba\xd6\xca_\xcd\xb2\xc4+0\x9a\xe7\x9fy\xda(\xde\
+\xc3\x03\xc2\x9a\xd7\x8b\xec\x5c$z\xfd7_N\xc6Q\
+\xec\xc3\xf0\x8b\xb7\x09\x9b>\xf6\x8b\xc3\xa6\xd7;O\x89\
+\xd8\x9d\xe7\x84\xec\xae\xe3]\xe7\x84{\xe9-\xffhi\
+\xef,\x01~N\xa92\xb6q|RX\x93\xa0%\xd0\
+\xbe\xbdnX3\xc5\xc7yJ\xcb\xc99\xe2~^\x22\
+\x99Z\x7f\x9f\xe7\xc6\xedR\x84\xd5}\xe7W\xfa\xfd\xf6\
+\xcd<\xc7\x88\xfdJ\xe0U$\x01\xa7\x007-3\x80\
+\xe0^s\x04\x93*\x81\x19\x22e\xdb7&\xc3\xe4\xa7\
+\xdb\x9f\xcc\x0c\x90\xf4\x07\xdb\xd3\x855\xfe\xd3\x18\xdd\x7f\
+\x0a\x9b\xee\xff\xd7\xc2\xa6\xcb\xfbQX2T\xce0\xbf\
+\xdfdMkY\xfa\xb5\xcd\xf7\xc3\xd6}\xbcy\xeeR\
+\xc8\xdc\xfenX3w\x9e\xf8\x9c\x04\x17c\x08 \xfe\
+\xa2\xd9\xea\xdf\x0bh\x02\x14kU\xcc\x96\x82\xcaK0\
+\xffL\xa3\xbaa\xd8\xfaw\xc77\x84M\x9f\xeb\x9ea\
+\xeb~\x19\xef\x1f\xb6\xc6\xc3\xc3s\x87\xe7\x0d\xcf\x9d\x81\
+\x8a+\x04P\x01\xb0(\x8d\x8a\xcc_j\x5c\x1f\xc6L\
+j\xa9\x14 !/\xc1 R\xf9\xd6\x12\x92\xbd\xf0Z\
+\xa3h\x0d\x00.\x86\xff\x0e\x9b^\xaf\x1d\xd6\x88L\xa7\
+vI1z\x9c\x8f\xcf\x0d[\x01\x8f\x8a\xdf\xb3\xb2]\
+\xa2\xf2\xe2Z\xf1\xb8u\x95\xc0ei#I\xc4u\xcf\
+$C\xaf\xe2U\xf1\xa1\xe9&\xa9\xcdP\xcc\xf0db\
+\x14CBB\xdf3\xab\xb5T\xfb\xbb\xbd\xf8\xad\xf8$\
+\xfd\x93V\xa3\x028\x1f\x12\xb6&\xfa\x0ap5\x8eT\
+k%\xa6Xj\xc0\x14\xa3\xc9t\x90\xcb\x865\x05\xee\
+lu*\x15\xffl\x19\xa8\xc2o\x7f\x9d\xf69\xe6*\
+F\xb0V\xee\x5c\x1f\xdeg/D~\xf8\x9d\xb0\xb5\x82\
+\xe7\x03mw\x16\x0a\x82\xb9\x91E]I\xd5Ab+\
+\xe5p\xbf\x9f\x95\xd3\xdf\xd9\xce\xc8\xde\xe6Ya+\xf5\
+\x0dR3\x1d\x9b3\xf2=\xbc|x\xd9\xf0\xb2T\xff\
+<|\x15-\xa8@U\xa0.0\xeb\xe7\xb0\xa3\xec\x13\
+S\x120\xa2\xd0\xa1\x96$\xa5Y\xe2U\xc8\x92D\xfb\
+\xb4\xe6\xb9\xff\xa2\x1b\xb7vZ\x00@\xdf\x12\xd0\x8f\x09\
+\xf4s\xc4',P\x08\x92\xcf'\x11\xd6\xc3\xe1\xe0p\
+\xd0\x19\xaf\xe5\x00\x95(\xa8H\xa3\x9eX\xb0\x12Q\xa2\
+W\xbf\xcc\xca4\xca\xa4\x04\xa2\x1b\xc3U\x07\x0cH\xaa\
+\x1fs\x07\xe1\xec(\xb4\xe5p|\xfe\x04 \xa6\xe3p\
+\xa1$\xde9+(\x9e\x93\x1e\x16\xd3\x01\x92\xc2\xb6\xe7\
+\xaaIY\x11\xf0\xb9\xff*c\xa9)P\xbd\xe7\x0e:\
+\x89\xbe\x96\x08b3\x10_\x81\xa5\x04\xed\xbc\xf9s\xd4\
+\xdb\xef\x94H3\xca\xa2\x03\xd1\xf3\xd6\xe3\x8f\x92N\xd4\
+\xea\xba5\xb7~\xb9\x8f\x9e;D\xb1\x1f\xa7H\xc5?\
+\xa9=z\x01+\xb0\xe5\xa8$,\x12\xff\x9c\xdb\xbe9\
+0\x990\xe6(\x1b\xa3\xe9\xf9A\x06\xf7\xa4\x98\x9b@\
+\xd0\xfb\xbd8E\xa3\xec\xaf\x95Jk\xec\xe1\xbeS\x0d\
+21D\xd5\xd4\xe3\xb7\xf9\xd3\x14\x05}\xce\xe2\xf8\xa7\
+ n\xfe9\x22\x98\xd3{/T\xb4\x03\xc3\xa6\xd7\xb3\
+\x84\xcd\xebb\x09<\x0eN*\xf3\x95S\x8d\x5c%>\
+{\xb3*\xb1W\xd1\xea\x017\xcf\x11\x03De\x95\x03\
+\xec\xb5#\xec\x1b\x81\xbd\x1e7T)\xf7\x01\x05_\xe2\
+\xe3\xef\xa0\xec\x03J\xf2\x00\xab\x80\x1e5\xbe\x17O\xeb\
+\xc7\xc3\xa9h\x08\x98%\x16\x8f_\xc4V\xf9\xcf\x0a,\
+$\xd2\x02\x14\x9fW\x02*\xb0\xeb\xc7Z\x0a\xd0P\xc0\
+0C\xf8W\x95#\x00\x8f\xfb\xa5\xf7\xfdA\x8b\xaat\
+\x1d\xd0\x00\x15~\xce\xdf\xf1|\x00U\xfcB^\x7fQ\
+|\xado\x80\x84u\x85!\xe5zz\xe6\x87\xbf+\xd0\
+\xf4\xfeD\xed\xbc?\xe0\x886\x82\xf9\xe2\xfe\x9e\xcf\xa9\
+\xa7\xdc\xff;\xd8\x1d\xa0Z\x8a\xf8\x1b\x09\x1e?a|\
+Z\xac\xb2\xcb\xad\xcf\xc5\xf3\xabs\xc3\xe7\xf1\xbe\xe9W\
+k\xbfRs7g\x1b\xd5\xffyI\xfd\xcfqm\xd5\
+2g\x1d\x09\xe8\x9c_q\x17/9'6\x935\xcf\
+\xdd:\x05\xec\xe89\x04\x0ca\xa4\x98\x06\xa0\x12\xed\x5c\
+u\xdd\xf6A\x06n\xa5\xb9\x82\x89 \xa0\x22ZG\x9c\
+V\x80\x86b\xaf\xe2\x95\x95\xca\xd2(\x11p\xdbO\xc4\
+5s\x5cX\x05\x8e\x02\x1a\x8c2\xfe\x1fP\x00\x10R\
+\xa1\x07\xe4\xbc\x7f\x19\x07\x8b\x89\xb4yW\xd8t\x9c=\
+0\xacQ\xf9\x06\xcc&@\xb39]\xd8Jm\xaeu\
+j\x1d$\xa3\xa4\xc6Ie\xa5uxCX\x8e9\x9b\
+\xce\xcb\xe1\xada+\xe0W\x81X\x9e\xef\xc3?\x845\
+\x22YZ\xf6\x8c\x0d\x95\xa0\x00V0\xad\xec\x03q\x80\
+\xe7\x0a\xc0\xce\x1e\xf0\xd2HR\x18\xd0B\x92\xc0A1\
+\x02\x00\x83/\x0fk\x00\xf5\xf4g\xe3W\xc3\xd61\x8c\
+\xa5.\xbd\x8e\x09\xdeW\xf5\xbf\x07\xa2\x9c\x8b\xf6\x01@\
+*\xc5\xed\xaa\x82\xa5\xe0!\x0eJ\xa0k\xdc\x99n\xe7\
+N\xd32\xd83/\xb5\xd6\x89O\xc4/\xe1=/\xb4\
+\x16\xaev\x0e\xdfy\xc0\xdc{N|\xf2\x82a\xd3\xeb\
+U\xc3\xa6\xd7+\x84M\xaf\x0a]/Y\x0a\x1b%\xf6\
+\x98\xd3;\xe6\x84d\xba\xbe\xf1\xbe\x8b\xd8\xe0\xf8\x95\xb0\
+\xe9\xf5\x03\xcbt\xad\xe9^.~\xe1\x0a9G>\x19\
+\x00\x02\xf2\x12\xd1\x93\x90\xa6\x86\x05\xe0\x85\xa6\x91\xfd!\
+\xde.\x8d\x0aLJ\xd3\x1dTV\xaf\x1f\xb62\x13v\
+\xdf\x16\xb6V@R\x94/_\x00\x00 \x00IDA\
+T\x8bb\xadP\xc7\x8f\x03\x14\xec\xf7|N5\x86:\
+\x0bd\xdb\xbf\x0e\x9b\xfd\xcf\xb7f\xffc\xca\x05\xbf\xf0\
+\xf4\x9c*\x91\x15\xf5=\xc7\xcc\x16c;\x8f\x88\xb1\x9d\
+D2\xc7\xab\x85\xad\xda\x135u'{\x9a\xf5\x9co\
+\x1f\x15\x96-\x96\x07\xacS?6_\xcb\x84\x98F\x8c\
+\xb8G|\xe9\xdc\x00\x98\xa76\x0d\xc0\xb7\x12+\xc0P\
+2e\xb67\x08k*\xcb\xfc\x08Q6\x00&\xc0\xcd\
+\xf9\xa2\xc2.Qu>i\x91>2l\xfa\xdcw\x0a\
+\x9b\xd6\xd7\x9f\x86\xadq\xcd\xf8\xe0\xb09.\x8eA\x8b\
+{\x86\xbf\x1a\x9e4\xfc\xd5\xca\x8c\x1b\xde\x1b6\xfd\xdc\
+\xa1aM\xc12\x13\xd2\xe1\xb9a\xd3\xff??l\xff\
+V\xed\x02\x16\xf39o\xff<leD\x02\x00JS\
+ \xef\x0f\xe0\xad\xfcp\xfa\xe5JxM]\xc1\x04M\
+\xad\x1f\x1a\x1d\x18@\xb5\xfeL\x8dI\xed9b\xe5\xe5\
+\xa7s\x8aU1\xb5\x14h\x14p\xe4'\xd6\xadx!\
+\xfd\x881y\x15\x07f\xc1\xa5\x80/\xe7\xb2\xf5\xaeU\
+\x1c0\xc1_\xf1_\xc42\x15D\xe4[\x0aj9=\
+\xaf\xa6\xaaX/\xfe.`(\x81\xea\xed\x13S\x8b\xea\
+3\xc9\x08\xc8\xf8\xb8\xc6\xda\xca[_\x1b\xd6\xecS\x9a\
+\x05\xce\xe5n\x8aH\xb5\xda*0a\xb0\x12+\xc4\xa8\
+\xbf\xe6R\xb0\xdc;\xcc6-\x9c'\x84\xad\x09\xcfx\
+\xa3\xf1\x86\xe3\xe4`\xc6K\x875\xbd.q\x19\x0f\xc9\
+@\xe5cMo_RS\xcc\x81\x9e\xe7\x1c\xbf\xaa\xe9\
+!\x0f\xc4\xf4\xd6\x0d\x12\xbe\x19\xa6\xaf\x19 \x98\x1d~\
+9~\x01h?\xbf\xd9W:\xf6Jd\x1d(\x02C\
+\x07\x01\x8aR\x1eL\xd5\xfb\x94\x1b\xb4\xfe\xdf\xef\xab\xd0\
+\xf5=\xe3\x00\x81\xfe\xfb^<P\xe2\xd9\xcfK\xb7\xc0\
+\x88\xa6\xa84d/F\xf5\xa4\x10\x0d1\xf6\xc2\x83\x15\
+\xe8[\xd8\xa9\x22M\x9d[\xcfvU\xa6\x05\x00\x12\xf5\
+\x9e:\xac\xe2\x0ea\xca\x83\xb4\x10^\x9f\x8fc\xeb\x13\
+~\xdf\xfb\x12\x80\xd8\x90\x124_6(D\x19c\x84\
+\x83\xd6\x02\xf1\xa5\xfc\xbc\x16\xfe\xe9\x16*\xd8t\xa8,\
+\x15F\xf7\xbb\xef9\xee+\xb1\x02\x91.\x11)$[\
+\xe5M\x80,\xd0=G:\xa0\x0f\xe5\x86\xf1\x1c/R\
+\xe3\xbd\x96J\xd3U\xb3\x22\xf3\x84\x9c\x8a\xf1\xd1\xb0\x86\
+i\xd1\x03!\x02!\xa2C\x1c\xccO\x93\x8aI\x85V\
+%\xef\x0a\x190<?U\xba\x7f?\xa9\xa5*\xddY\
+\x89\x0a\x82XP\xc4J\xbb\xe3\xe4\xcd\x8f6?\x9a7\
+\xf6\x12\x00K\x84Uc\xf4\xdc\xbao\x12 \xf3\xa5\xa9\
+\xfe\xa6\xfaj\xb5\x14\xd8\x17\xe9\x98\x87K\x0e\x97\x18\xa6\
+u2\x5c'l\x16\x07\x9d\xacq4\x00-\xf3sS\
+Tg\xbcd\xd8\xf4\xfa?\xe3\xf7\xc6\xef\xcd\xf7i\xb9\
+\x0f\x02\x1c\xeb\x0b\xd0A}^\x8f:\xa0\x02\xd0#0\
+\xb5\x8eT\x00\xed\x17\x81\xecU\xc2\x9a\xe7\xec\xb9J\xf4\
+!\xd4\x10k\xff\xaf\xe7\x1bB\x8di\x040\x03\x04\xb8\
+n\x94@\xfb\xcf\xfa\xc3\x80Q\x81\xe6\x8f\xf4\xae\x01\x02\
+U2U\x96\xb3\x82P\x07\x9b\xc4\x15SB\xa5\x1b\xe3\
+A+\x82\xff\xf7<\x88\xa2Y\x0f\xee\x8f\xca\xb6\xbf\xeb\
+\xc0\xf2y\xfc<`\x01\xc3\x80\x7f\xe5\xefz\x7f\xe8`\
+\xe4/\x01\x8f9>\xa9*\xac(\xe3\xee\xa7\x04\x0e\xc5\
+\xde\xfet\x1f\xf9\x05\x15x\x95\xe6\xbe7\x1d\x00\x82\x89\
+\xc0\xef\xb9>?\xdf\x8d\x99\xac\x0a$\xe6\x12 Jo\
+= R\xe5GK\xd6?\xcf\xa9y\xf8\xbf\x85\x01\xa1\
+r\xec\xb9\xa7\xaas1$$\xc8Yy,\xbf\xe1~\
+\x02\x1e^\xbb\x9c\x9bS\xb0\xb2\xf8U\x019\x8a!\xb5\
+o\x95\x1f\xeb\xdcu\xa3v\xf2\x8b\x12}\x15D\x81\x82\
+\xf36+rUQR\x91s\x1f\xed\x03*\xc3D\xd5\
+\x04\x82\xce;\x89*\x7f\xc3\xdf\xd9\xb7\xfd\xd8P\xcf\x81\
+\xdf\x06\x84\xa7\xd8\x11\x15v\x14S\x09\x5c\x01\xb9\x02\x22\
+q\x08\x00\xa4g\x9c\xe8\xf1\x04\x10e\xc1@\xa2W\x89\
+\xbf\xf7\xd7\xda\x94\xbd\xf4z\xc0\x01_D\x946\xbf\xcc\
+\xb9\xef\x00\xa7o\x85M?\xff\x9fa\xd3\xeb\xb9\xc2\xa6\
+\xd7K,~\xb3(\xcb\xaf\x0fk\x00 \xe2\x984`\
+T\xea\xee\x9d\x81\xdc\xe5\x13\x18\xc8\xeb/\x0a\xefO\x13\
+\x88K\xc0\xa04R\x00\x9a\x19\x7f\x14\xc3,\xe7\xa7\x97\
+\x16A\xae\xcb\x12\x1b\xb4o=\x97~?\x8aKr_\
+R{'\x06V\xe7k\xcf\x08\xe8\x13r\xfe\x98_y\
+\xd4\x02lO\xbes\xa1hK@20\xa6Z\xbe\xdd\
+\x0dk\x12F\xfei\xa81\xbd{\xf6\x19\x17m\xdf\xc7\
+\xd5\x9f\xab\x99j\xa5\xf7:\xe3^S:\xea\xdc\xcbs\
+g|b\xd8\xf4s\xaf\x0e\x9b+\x84o\x8a\x0a\xe1x\
+\xfd\xc9&\x7f;>||\xc4\xf8\x885\xe1\xda}~\
+X3/]\xfcG\x84\xf7\xe8\x04\x12\xc5_*\x93\xa9\
+^\xbfy_\xd8\xdc\xfb\xbb\xb3\x0d\xa0\xe3\xbea\x0d\xf0\
+\x83\x82\xad\xc5\x12 \xa7\xb7\xdc\xdc\xfbL@\xc7s\x87\
+M\xaf\xbba\xd3\xeb\x0d\xc2\x1a\xcd\x01\x09\xa0\x8a&?\
+\x84yj_\xa6\x1f5\xf5KA\xa5(\xde\xa9\x9dQ\
+\x94\xe5\x10\xfd;x\xbd\x9e\xf15\xe3\xab\xc7\xb8\x7f\xc7\
+\xe6\x18M\xa2e{g\xb5\xa95A\x89\xb4\xe6\xbb+\
+3k|@X\xd3\xfb\x7f\xb5\xed\xd5\xe7i\x0fZ\xa5\
+~\x9c\xad0\xc6\x8cJ\xec2\xef\xa8\x0a?\xe0<\x81\
+\x82j9\x024\x19'y\xbb\xb0\xe6<\xb2\xber\xcc\
+_\xb5\xc8\xf0\xe74\xcc\xa8\xcd'\x10S\x95kj\xf8\
+9^\xb3\x0am\xe9\xe7=\x0f\x85\xa4\xe1)a\x0d@\
+\xf2\xf7a3\x03h\xb2U\xb4\x10p\x1d\xad(C\x88\
+\x9c\xbe=l=\x07\x87/\x875\x94r=\xe8\xfc\xb7\
+B#\xa6\xdf\x15\xc2\xd6\xd6\xec\xf1,aMkS\xee\
+\xff\xe1\x88\xb0\xe9\xfb\xf7\xceV@\xaa\xf5\x04\x18\x94\x90\
+\x0eO\x0b\x9b\x01\xb2\xc9\xd6\x04\x9a_\xad\x16H~\x03\
+`\xac\xe0\xa2\xb0\x80*/\x9f\xc0<\x14gS\xc5O\
+\xbfV\xf1\x16\x06\x11&\x1e\xa6\x02\xc06[\xbb*\x0e\
+\x008\xf2W\xf2\x1a\x09\xb6\xb8\xd1u\x8aO\x00\xe7Z\
+\xc60\xa7\xb4,\x10\xf13\x0d\xe6\x0e\xa9\xbd!\xffI\
+\xffY\xef\x07\xd0\xcax\x05#\xa6\xf2\xd3>\xafsn\
+\xf2\xd3\x18\x82/\x9fN\xcd\x97\xcfq\xdb\xa9s\xdc\xb6\
+\xe6ms\x5c\xb6wxa\xd8\x8aD\xee\xde+l\xba\
+\x9f\xf7\x1e\xef5\xdek\x1d\xa3R\xd4\x8fwNv\xdc\
+JM\x18\xee\x1d\xd6\x04\xfcIa\x98\xe7\x86\x7f\xa7\x19\
+\xe3\xf4/\x93}$\xc7b\x5c\xa0Id\x8c\x13s \
+\xf4\xd4B\x95\xa6\xbc\xf1\xae\xa3\x1c\xab\x00T\xa0rj\
+\x06\xa8\xbe\x88\x0e\xb6\xe3\xea~\xd4\x04\x22=\xc5\xf4\xb4\
+Tm]\x97\x1e:\xf7\xc3\xb86\xd7)\xa0\x13x\x09\
+\x80\xa9d\xaa\xf8\xde1\xac\xf9;\x91&\x0e\xb9p\xce\
+\xd5Tx\xbcz?\x01\xbf\x0d\x81\x8a\xa7\x12#\x01\x15\
+\xe8\x0b\xf0z\xf1D\x8e\x8dcO\x84\xb7z\x06i-\
+\xe8\xc9GQ\xed\xc7\x8a@8{Q\xae^]\xba_\
+\xb8\xfd<a\x1b\x1dbGLK '\x91\x96\xf0\xa3\
+\xded/P!\xa1*\xa5\x1d`P\x9a\x12\x127?\
+\xc7!\xa7\x08^]\xbf\xdeH\x1a\x04Tu?\xb2\xf4\
+\xceT\x00\x97\xcf\xa3\x1c\xcc\xfb\x96D\xb9\xd6'\xca\x18\
+1\xbb\xb3$P\xe5\xbe\x00\xae$\xb4\x1c\xf47\xb2\xb2\
+\xe7\xfeHP\xf4\xf2dkB\xb5\xce\xa8lA\x0co\
+\x93=\x94\xd6\xf5\xfbSu\xf8!\x8bh\xc9\xe6|9\
+\xbf\x9a\xd8M&\xe2\xe3\x83\xc2V\x8d\x0f\x95\xe2\xe11\
+\xc3\xa3\x87\xe9\xf3\x0dO\x0a\x9b^\x7f\x146\xbd\xde(\
+\xac\x19k\x93\xe25\xd6\x11\xc4\xb7\xc4\x82\xf2\xbe\x8co\
+[\x90\xe1Jx<w\xebVO\xae\xc4\x17\x92\xef\xf9\
+\xf4\xa2s~\x0e\xd5\x99F\x87\xc4\xd8z\xe7\x07\xecs\
+\xe2^*\x1b\x9e\xa3\xc0W/\xa3\xc4\xde\x01\xe4\xfd\xec\
+\xcf^S\xc1\xfcfs\xb8%\x96\xc6\xf4A\xb8M)\
+\xc9}\x1b<\xa8Y<\xcd~\x16H\xe8\x19\xa6\x11!\
+\x11\xc5\x94P\x91PQ\xd5\xc2\xc0\xffb(P\xc9\x85\
+\xa4\xab\x5cc\xc8\xe4z\x83\xd0\xd7\x01[\x91\xc4i\x8c\
+\x99\x04p:\xe8T\x18U\x0c\x04T\xb4\x05P\xcb\xf9\
+\x13\xc8\xbcDJ\x8b\x0ff\x97\x83\x98?\xf0\xf3\xfcI\
+\xdf\xab\x8fJ\xce\xbf\xeb\xb1\xf7\xfc\x9c\x17*\xe8}b\
+\xea\xfa\xff5,\xe7U\xc7\xdf\x7f\xccl\xeb\xbar]\
+ZG\xb2\x97\xba\x02L\x7fG+\x82y\xea\xb4Q\xcc\
+\xdfN\xe0\xbc\x80\xddC\x17\xf1\xd4\xd2\xaaI\xbf]b\
+TD\x08\x01H\x9e7\xffF\x9b\x80\x98\xa7\xeb\x94`\
+\x9aon|\x93\xfdf\xea\x80\xdet@\x00\x0acV\
+rj\xbf\x18k\x88\xd1\x82\x92\xae\xe7\xdf\xfe\x14\x90\xd8\
+\xdf\x9e\xb3\xf3\xdf\xdf5\x0e\xebG\x09hZ\xaf\x02i\
+=\xa2\xc9|)\x11b=\xee\x80!\xcc\x18*\xf9Z\
+\x04\xed+\x01\x1f\xc0Zos\x8eACe-&A\
+\xaes\x0c\x9a\xcd\xc1\xd3z88\x81\x9aH\x80^\x96\
+\x15s\xe3\x1c\x7f\x126\xbd~7lZV\xcf\x08[\
+E\xc1T\x8e\x8aI`Ntj\xf4\x10\xe7\xda<h\
+\xf3\xc0\xcd\x03\x9bD\x19s\xe9\xf8e\xce\xbc\xfd0\xed\
+\xdeEl\x90\xc6\x0f\x807\x19T\x80\xf7\xed\x9f\x85\xad\
+\x09\x7f\xcd\x97\xf6\x9c\x00&\x09\x1c\x16@\xfc\xd7\xd9j\
+\x86\xa1\x94\x89\xeb\x9c\x10\xbf\xa9I\xc8\xec/\xfe\x19\xf0\
+\xd3MG\xaa\x82\x83\xf7\xbd[\xc6YG\xa7\x86\x86\x1e\
+\xd8\x5c_\xe3\x1f\x85\xad\x22l\xaek\xf7\xcf\xc3\xb2\xa0\
+\xf3\xf9\xa4\xf2~5\xe3\x96\xdd\xe6\xbc\x08X\xec~+\
+p \xc1\xda=W\xd8\xf4\xef\xff\x156=\xa7\xfb\x0d\
+\xf7\x1f\xa6\xc0{\xfb\xfc\xed\xf3\xb6\xcf\x9b\xc2\x8e;\x85\
+\xcd\x89\xf8a\xdb\xc3\xe6\x02\xd9\xffD\x81L\xbc\xb4{\
+\xcd\xb0\xe9\xf5\x80\xdd\xbd\xbb\x93\xdf\x1c\x9f\x1c\xd6\x8c\xf3\
+\xc3\xc4t\x1f\x8eX\x00\xc2\xf2\xaf\x00\x87\x14\xd1+M\
+\x07\xea\xf2O\xc8\x8a\xadB\x11\xe6\x8c\x846\x81y\x15\
+TS(0\x000+k^\xba\xc4\xeb\xaca\xab\xa8\
+f\xcd5\xcf\x04\xb3\x00\xc7\xd3*\xac\xf0\x9b\x12\xe7\xec\
+\xb9\xe7\xf7\xb4H\x98\xc2\xa0wy\xbc\xf9\xf2\x1c\x8d\xb9\
+\x03\xc4l\xcf\x14\x96-\xc6\xd7X{\xd9\xe7D4T\
+\xea\x8f\x1b\xdf=\x06c\xe7\x1c\xe39\xc7\x98\xb2\xf1\x94\
+\xe5>\xd7\xb9\x9c\x80M\xf5t\x03\x84\xf9%\x15Q\xe3\
+O;\xf1\xba\xed\xb1a\x0d\x80\xa6E\x98&\x82\xc4?\
+\x01\xd6\xf1;a\xcdy\x8c\x01\x80\x81\x90L\x9b\xaa\x18\
+\xa7\xc8b\x89\x8c\xa2\xb4\xbf,l\xbd\xbeb$e\x81\
+\xd2\xb4\x80\x8a\xe3\xc5+\x1f\x0e[\xfd\xa38\x0c\xd0^\
+S\xd8~?l\x9d\x1b?>'l\xd58\xa8|E\
+\xc1#[\x88im\x14\xa0\xef<5\x9d\x84\x1f3\x96\
+R~\xe4\xbc\x03XE\xde\xf7/\xeb\xf3\xaeq\x86w\
+\x0ek\xb4G\x14t\xe5[Z\x96\xf2\xbc\xdd>'\xac\
+y\xde\xfe\x8e\xca\xb88\x1ec\x8f\xb8\xb31\xbeD\x1a\
+\xff,\x81\xf3\xf4s%\xda\x07\xb86\xe5B\xa1\x03\xd0\
+\xacp \x0e\x15g\x88\x87ho\xe5\xfb\x016\xc6\x97\
+\x8c/\x1d_\xd2\xfc\x9c\xf3\xd4\x94\xbd\x9c\xa2a\x0aF\
+\xe5wg\xad|a\xd9o~_\x1e$\xaeY\xf38\
+\xa2\xd0\xfb20wf\xb5\x90\x15\x18\xd5\x8a\x9f\x0c\x82\
+\xbd\xb3\xca\xe6\xb4\xb0v\xef\x186]\xf0\xa5\x96J\xdd\
+\xee\x97\xc2\xd6\xb9\xb65\x87=\x13\xa2\xe1\xcaas\xcf\
+\xfed\xcd\xc2\x8f0\xe8\xb5\x0d\xa2\x9e\x15\x1b\xe3=6\
+\xef\xc8\xde\xe1T\xe1\xae\x0f\xea \xee\xc5\xa2\xf4\x14I\
+\xfc\x05r\x9d\x98[\x89\xc8\xa1\x08\x1e\xb2\x04\xf0\x85\xa0\
+\x1a\x13q\x969\x05[\xa9\x9b\x02\x05\x0f\xb4G\x8e{\
+uj\x1b\x05\xf5\x8aH\xdb*:\xb3$l\x80\x09\xc0\
+\x80J\x09\xa43\x1dz\xa9\xe8G\x9a\xb6\x9b\x81\xd0\xab\
+~\x8b\xf8\x9eD\x11\x00\x81\x91aa\x08\x04O?\xeb\
+\xc4/\xcf\xe9\xaak\xe2Z_\x90\xb5~\xcc\x9a@:\
+?\xaf\x80\xb4\x02t\xad\x05}\x0f.\x00\xe1\xcba\x8d\
+\x0a\xb3@\xdas=q\xdf^\xb3\xfa\xfb\x10Z\x95\xac\
+\x83\xc2\xe6\x0a\xe4\xe2pzUZ\xef#\xe1\xb3A\xdd\
+\xef\xbe\x97\xb4\xa3\xfc\xd6A\xe6>\x10\xb7#\xe2\xa5\x92\
+K-\xf5ua\xd3\xc791l\xae\xccO6\x07`\
+\xf3\x94\x8ci\xf7,b)GfO)G\xe5zU\
+\xc0\xdc7\xeb\xddu\xfb\xde:\xcc\x9e\xcf\x99\xd0{\xc9\
+F\x5c\x0dS\xe6Ua\xeb\xc1\xed\xc0\x1dN\x1e~8\
+L\x7fg8zx\xf9\xf0\xf2\xb9\x129\x07\xe2\x02\x84\
+)\xd0Z\xc4j\xce\x96\x07\xffCs\xcc\xdd\x81\xd9\x83\
+|\xe7E\x04R\xe0Z\x0c\x99|%\x1a2\x5c%l\
+z\x1d\x92\xc1\x83B\xf9\xb0\xb0\x15\x08\xe0x\xa9\xd5\xa2\
+\x8a\x0e\x8f\x0f[\x0f\x9a\xa2\xe0Q\x9dVi\x85\xf0B\
+Z\xfbJa'\xf6T\xd4\xe2\x1eHp_%\xea\x0e\
+\x0e\x80\x93\xfd\xe3\xfd\x04\x0e\x12[\xd4\xc1d\x5c\x94\x18\
+\x99\xe7i]\xd1\x1c\xa0j-\xc0\x95\xf8\xea\xad\xb6\xee\
+Q\xecS%\xbc\x12\x1b\x89\xa5\x84NO\xa4\xc0\x01R\
+\xec N\xbfZ\xa2\x8d\xa8\x8c\xc4!\xdd\x07\x89\x9f\xfb\
+)\xc1M\xeaZ]\xa7\x84B%\x95\xbf\x93 [\xd7\
+D4\xb3\x22T@\x17\xff\xed\xe7\xfc\xbbW\x95%\xaa\
+\xb5Ztr\x5c[\x1dx\x80\x0c\x07\x22\x7f\xc2\x1f\x08\
+\x5cT\xa6\xf9?\x15JTL\x94T\xf7\x1be<\x03\
+*\xbdw\x02\xd1\xf2/\x00h\xeb\xe9!\x0b\xf3m\x16\
+q=\xa5i]\xa0\xada\x1d\xa0\xb2\xdb\xd7\xc9\xec\xaa\
+\x96\x01\xaa\xef\xd6\x19\xe0'\x03\xa5\xd2\x82 \x22$\xb0\
+q\xfdI\x8d\x97\xc8\xd5\xfd\x00<\xf0c\x9e\xa7\x96\x0b\
+\x95\x01~\x96\xd8b\x8aXU\x05\x98\xdf{Ej\x0f\
+\x084T\x06\xad{\xe7\x85\x7f\xe7g\x04\xaa\xe2\x01\xc0\
+\x8c\xc0\xc3\xbe\xc2\xd8\xc9@\x0f\x03\xb0T\xc2U8\x89\
+uju\x22&\x8a\xc9\x06\x98\xa0\xe1\xa3\x97]\xcb\x8b\
+1\x9b\xf6\x87\xf1\x9b\xc4\xfc<'\xeb\x99\xff\xce\xfdR\
+\xcf\x0d\xe0\x9c\x89\xd4\x14\xf6\xdf6\x02\x7f\xe3\x197_\
+\x09k\xd4\xd0%t\x80\xb5|\x1e\x15\x0f\x9d\x90\x09<\
+\xd5l\x01/\x15\xf0\xa4*W\xfc\x92\xf7\xb5T\xfd\x05\
+\xb6\xfc\xc0\xcd\xf2\xb9\xeb-\x15?\x00.\x04\xba\xc6y\
+\xa1\xea&0R-\x86Z\x1cn\x98\x22\x8a\xd9\x024\
+y\xe5e\x7f\x12W$\xcawlX\xd3{K#\x04\
+\xe0\xd9\x9fw\xd6\x03\x7f\xfe\xbb\xe9\x8f?\xbd\x003\xf6\
+# k|m\xd8\x9a\x90\xee\xdc6l\xa6\xd8O\xb6\
+\x8a\xe5m/\x1c6\x07\xb6\xdf\xddgZ\x14?O\xe4\
+-\x01\x8f\x1a\x7fk_\xa5\x96\x8d\x0a{\xf52\xe7\xb8\
+\xb0\x12\xed{u\xd8Zi\xdc}\xd8\xee\x91\xbbA\xe9\
+\xfeP\xd8\xf4\xfa\xac\xb0\xb5e\xa4\xa8\xc3\x99\x98U\xbc\
+\x0a\x10\xcbx\xc3\xdf/\xea\xbf\x8af\xc6\x87\xdb\x0b\x86\
+\xad\xc0]\xb5\xf4\x18;{\x8d\xb05^'\xaaZ\xfb\
+\xc8\xbat\xae\xf0k\xfc1?\xe2\x15\x00\xe0>v\x00\
+\xc0\xf6\xa4\xb0\x06@\xcc\x04W\x22\xbd\x9d\xbf\xd6\xc4n\
+\xfcZXj\x1b=%\x19\x14\xd7\x9f\x81\xf6\xc5\x0f<\
+i\xb9_\xbb7\xdc\xbd\xd1\xee\x0d\xe7\xf3\xf0\xc3\xb3\xa8\
+\xe0\xf3\xb6\xcf\xdf>\x7fN\x8c\xffl\x9c\xfc\xdd\xf8\xaf\
+\xcb8\xcf\xf1La\xeb\xd4\x8a\xed_\x865\x1a\x11\x8f\
+\x08[\xefC\x9d\xdb\x00d\xf9L\xfa\x05\xe3m\x01C\
+\xd5b\x04\xa0\xccB@\x01\x9eZD\x1f\x17\xd6\xc4i\
+Z\x9f\xf8ITm\x9a3\xaf\x5c4 \xaa\x15K\x5c\
+`\xeaH\xe6/\xf1i\xe3\xf3\x020\x00\x1b1\x8c=\
+\xc6\xb1WA\xc0\xb89@)\xaa\xb9u\xef\x5c\xe2\xd7\
+%\xa8\xa9\xc1VSc0\xab%\xe6\xe9G\x8a\x11\x9e\
+Z\x15\xf63\x00\x988m\xb5\xbe\xf9{\xfe\xbe\xc2n\
+\xc6{\xb4q\x86\xdf\x0b[5\x04\x0a\xb0\xa2\x0d\x97\xcc\
+\xbb\xd2h{hX\x93(c\xf6&c\xbaZL1\
+0\x00\xa5\xfc\xa8\x02\xec\x1d\xb3\xd5\xcb\xf9\x89)\xfa7\
+a\xcd\xbetN\x89\x17\xe5\x11\x0aq\xce\xbf>\x1e\x15\
+\xb7\xfa\xfcY\x817\xae]\x1cY\x1a.\xf6\xb3\xb8\x05\
+\x80\xef\xfd\xc4\xa7\x9d\xe6]\xe5Q\xfe\xce\x99r\x9f*\
+\xf8)\x04\xa7\x08b\xec\xa2\xd8G\xf5\xef\xc9\xfc\xd8\xbb\
+{\xe7\xdd;\xed\xc6\x82;p<\xc389\xe6\xf1}\
+a\x8d\xda\xe1\x95'\x9b\x02\xe8\xe1\xc9a+RZ\x09\
+}\x8e\xed j2W\xd0\x1e\x93\x1b\xe4W\x8dh\xc1\
+-r#\xa5\xe3\x8f!\x1e1\xc6\xa3\x0e\x9cN\xbd\xbd\
+\xa8\xed\x02P\x14w\xc8\x9c\xc0@e\x80\xb8BR\xdc\
+*\xe0\xb8|R\x5c!\xa8\x11\xa67\xe2t\xb5@!\
+\xd6~O\xa0\xde\xab\xe2K4ml\x01R\xdf:\x00\
+\xc0\x10\xf8\xea\x85'\xda\xa7\xa7EO^\x84\xaf\xdfh\
+\xfe\xbe\x07\xee>\x9e}\xee\xa6\xde\x9fJ'\xd0\xf69\
+N\xbf\x8c\x1b\xaa\x8a\x1cq\x19\xd7Iu\xf9\x9ea\x0d\
+BjA\xf5\xd4j@\x88\x85\xe3\xef\xbb?*\xd9Y\
+Q)\xe0 \xefW%\xf4*P\x904\x15x\xf7U\
+\xaf\x99\xde\xbe3$\xf2l\x0e:\xa0I\x22`cB\
+p\xa9z\xde5\x9f\xa3\xeb\xd2\xeb\x94\x80T9\xb0\xec\
+\xa5/D\x8e\xe3\xbaZQ\xc8\x17\x84\x9d\x83\xc8\xf1]\
+\xd5\xab\x99\xd3*\xc6?\x09k\x1c\x87\xc0\xd4|\xd9\xcf\
+\xa5Z\xe9\xb7\xf3>K\xa40-\xa8\x92\xab<\x99\x9f\
+\x9e\xda\x1c\x058</_\xcf\x96\xd4\xaf\x8b\x87M\xdf\
+\xe7\xb8\xc1\xe1mK\x8f)\x11\xa9\xcd\xe7\xc3\x9a\xfd\x06\
+hJGV\x01I\xf6\x8e\x8eW\x0f[\x13}\xfbv\
+\xfb/\xa9*\xfb\xc2=/\xd8\xf3\x82&\xc0\x14`\x9b\
+\x0b\x9f\xd4\xe7\xaa\x0c\x9a\x87\x9ab\x5csAc\xbbR\
+l7'\x875sT\x89\xd2H\xfc\xac?\xea\xfd(\
+]\x9e;\xa0\xc7\xab\x0a\x19@K\x80\xa4\xd2\xadb(\
+ \xe7\xd0Q\xa5\x01\x88\x000\x951\x8c\x0c\x00 \xaa\
+\x97\x0afV\xf2+\xc0\xb5/\xf4\xd8\x0b\x84]\x8f\x00\
+X\xe2\x9a\x8e\x1e`P=d\xb7M\x11'\x09qW\
+\xe95\xc6\xa5\x18@\xb9\x8e\xab\xe2\xee9\xb9_\x12@\
+\x07\x08\xff!@G\xf9\xd7\x12`\x9f\xfb\xf9\xd3P\xf1\
+\xaf\x84\xb3\xef\x9d\xe3'\xed+\xe3N\xb5\xe2\xa04\xf2\
+\x03\xfc\xa0\x00\xd4\xc1\x86\xba\xed\xc0\xcfq[\x15\x08d\
+\x00\xbb=>\xac\xa1R\x0b\x5c\xdd\x7f\x15n\xf7Q\x80\
+\xcb\xdfz\x1e\x02\xf4~\xfe\xb5\x80\xe2\x8d\xa1\x0b\xde\x00\
+\x16\x00C\xfe\xc6\xd8\x9f\x1c\xc7\xaa\x02\x5c\x89\x13\xb12\
+\x80\x94\x83>\x03\x0e\xbd\xae\xd4\xc6\xeb~\x9a\x1b\xfe\x07\
+a\x0d\xa0\x93\xe7c}\xee^\x1c/\x03\x12\xbd\x96\x05\
+\x00\xa9\x88\x1d\x15\xb6\xf6\xe8\x16\xd0\x94\xd4\xd8\xa2\xe0\xf7\
+c\x13\xf91\xe7\x06@\xc6\xfdu\xbe\xf5\xe3p\x9d\xe3\
+\xc66\xb9\x0f\xd4\xb4\x93\xf90\xde'\xac\xb9\xce\xdc\xff\
+\x80)b_\xd53\xe9\xdc\xf5\x1c=?\xebK\xe2\x9f\
+\x09{\x15\x0a\xb4d\x103%\xea\xe5>\x0a\xacQa\
+\x014\x1f\x9a\x02\xca\x0f\xadZ\x0e\x15H\xeb\x89\xa5-\
+\x92\x81z\xc51\x09\xf0m\x1e\x1e\xd6\x14\x10\xdc7~\
+\x06\x10h\x9cj\xee\xf7\x127\xd4\x12s\xc1\x04\xf8\xd3\
+\x8fV\xeb\x8fs1\x03?@k]g\xfa#bs\
+\xf5\x9cM[2\x0e\xfa\x80E\x0cz\xf3\xa1\xb0\x06 \
+I\x7f)\xfe+ H\x00\xdaU\xae\x9cS\x15'\x01\
+&\xb5`\xdd6l\xee\xb5\x9f{\xcbK\xfc*{\x96\
+\x87\xbb\x84\xad\xe2i\xb4\x14\x8a!\xf0\xc8\xb0\x86\xb9\xf6\
+\xc5=_\x9a\x99Fq\x97\xce5\xb7\xa6\xcd\xd3\x15\xc6\
+\x8b\x8d\x17\x1d/63d\xfepf\xc8\xd0\x9c2\xce\
+\xf1\x84\xc5\x8fT\x22\x9f\x9aM\xf3\xbe\x7fC\x93\x10}\
+c\xfc\xfa8]\xf7\xf8\x99\xb0\xe9\xf5\x0ea\xcd\xb4\x03\
+\xfb\xcc4\x9fL\x88+\x8e\xa2\x81\xf0\x9d\xb0\xe6\xdc\xd1\
+3\xef{Tz\x94}Z$)zV\xad\x95\x9eK\
+R\x871\x10\x8a\x89\x90L1\x09r\x8d\xd3T\xe0\xb2\
+?=G\xfe\xd1\xf3\x94\xe88/$\xd2\xc68\x9bV\
+\xf2\xca\xb0\xc6\xaf\x89\x87\xf8\xff\xf3l\xcf\xbb\x9d~o\
+\xbc\xdfx\xff\xf1~s\x85\xf7\xa8\xa8\xf0\x8e\x7f3\xbe\
+y\xfc\x9bu\xea\xd8\xf8\xae\xf1\xb8\xf1\xb8\xb5\xa5\x90\xe6\
+\xc0x\xc5\xb0\xf5\xb2\xaaW_\xbe\x92\x00\x0d\x86\xec\xf6\
+\xe1a\xab\xd8\xe5\x9c\xcf\x5cym\xa5*`@+\x91\
+\xe7\x92\xadRUIN\xc6]\x8dU\xd6\x22\x94\x89i\
+\xcd\x97\xd7\xe2\xaa\xc0\xd43`\xa8\xc0\x13\x8d\xc30\xe4\
+_\xd2_\x14\xd0\x00\xa0=5lm\xd5\x1a\x0e\x0f[\
+\x99gZ\x920\x9e7g\x0f\x9b\xee\xd3\x11a\xeb\xe7\
+$\x1e7\xdc$l\xcd\xb3\x9c\xcb\xf5\x9cM\x15\xc8\xd6\
+\x00\xe7\xc8x\xfe\xb0\xe9}\xfe#\xac\x014\x01\x1f\xc9\
+p.\x7f*^\xd2cO\xe4\x13\x83@+Y\xfaq\
+S\x8b\x14\x14\xc77\x86\xadq@\x01.\xf22\x0c\x1a\
+\xd7}\xc0\xbeS?j_\xac\xadKK\xbe\x81\x11\xe0\
+s\xa7\x88p\xc5\x1b4\xd2\xc4\x8b\xbd\xe6Y\xc7\xf0.\
+\xbf\xa6P*\xde\x88t\xfe\x8f\x9ai\x05\xc9\x1c\xda\x9e\
+-\xac\x89\xdf\x00\xe14UzF\xb9\xdf'\x12\xad\x95\
+\x01\xd3N\xdcl\xaa\x12\x11\xcel\xa5\xc14\xa88/\
+\x99\x87{w/\x11\xd6\xf4\xeeF\xba\xf7\x7f)6\xf2\
+\xca\x0c,\x0fm\x02z\x15H\xf3L\xb3'k\xcf\x9b\
+f[\xa90'\xcd\x83\xcf\xd6\x9eB\xc8\x86\x83A\xef\
+\x12\xc4\xb7\xef\x19S\x89A\xc5FE\xd1\x1bg\x9a\x80\
+\xb1\x0e\xa8\x1b\x10\xe8\xf3\xe4\x06\xbcq\x222\xa8X\x12\
+N\x09\xbc@\x06%G\xaf\xaa\x80I \xeaz\x1c\xe4\
+\xfd\x18\x1c\x81\x9a\x03\xbc\xfb\xf9\x9a\xc7)Ql\x91\x9c\
+\xbdMb\x1b\x8f\xfb\xeb\x09\x1c\x9c\x94\x81\xb7\x84\xb1\x15\
+k\x13\xb8r\xc8\x16\x80\x03\xc6\x82W\x01\x95\x08X\xc0\
+\xaeW\xc2\x8fzcAKd\x04\xfc\x02c\x1bA\xe0\
+'\xa1\x17\x80\x01\x14\xf2\xf3\x14\xf2\xa6\xb7\x1b\x15\x19\xf2\
+)1r=\xbd\xd8\x98\x00\xde\xf5\xfby\x95\xa6\xd2~\
+\xc8\xb1\x8a\xc7g/,J.\x8a\x8c\xf1Qz\xa7s\
+\xbdNa\xfc\xa2\xfe}X\xaaEC2\xb3'n\xf3\
+\xb5\xb0\xe9u\xb3\x04z\xc6\xd3TO*\x111\xcf\x1b\
+\xf5\x1d\xc0\x85J\x9ac|jC\x03\xa6\x8c\xed\xd1\xc3\
+&\xf0\xce\x00l\xf8v\xd8\xdcjs\xafa:\x80\x86\
+\x0f\x86\xad\x14\xe09\xfe\x9c\xf6\xcb\xf0\xc6\x14\x9d\xba\xc0\
+\xd2b3\xfc$lM@\xb6\xef\x09[\x1dOU\x08\
+\xa8\xb8f\xa0\x5c\xe2F\xc7,\x81\xc6\xe6e\x19\xe0=\
+c\x01(\xa6`j\x1f\x15\xf5b\xe4\x00\x80\xae\x16\xb6\
+:\xd6\xa2r\xde!\xac\xa1p\x11#Q\x09\xb5\x8e8\
+>\xeb\x8e?\xe8\xc5\xfez\x0d\x07\xef\xd3M\xa5p]\
+\xc5L!\x12\xd6Q\x84\x0b\xa0\xd2+\xadB\xfa\x90d\
+J\x98\xae\xa1e\xa1\xa7\x92\x0b\xd8{\xd1:\xeb\x15e\
+\xd3z\xe5G\xfc\xbc\xfde\x9d\xe6X@\x15\x95\xea\x11\
+\xd5\xea\x92H\x7f\x89A\xa1\xe0:\xc0\xfa\xfbd\xbf\xf2\
+\x1b\xfc\x96\xfb\xda\x8b\xcb\xf1\x13\x9e\x83DN@\xc3\xcf\
+`b\x01\x22\xfd\x9c\xe7\xe8\xef\xf0o\x00Q\x0c\x93\x04\
+\x08\xf4\x8en^\x18\xd60\xa6$n\xf7^\xc4&\xeb\
+\x9c\x00\xec\x00({\xb5z\x95s\xcf\xc9\xfa6n\x10\
+\x03MK\x02\xe0A\x00\xec~f/zi&x_\
+=\xcf\x09\x88\x97x\x97\xca\x22\x00\xa6\x1b{Vb]\
+\x803\xfe\xcd\xfd\xd6\xb2\x91\x80c\x01Z\xe9W\x83\x88\
+\x1cT\xe4Z\x9f\xfc\xb1\x96\x02\xcf]\x0b\x0a\xa0\x02\xd0\
+\x86\xf1d\x1d\x09\xbc\xb4&\xe4\xe7\xae@\xdeX2\xd4\
+\xf7l\xadQq\xac\xcaQ\xaar\xd7\x988\xbd\xf6*\
+&\x12\x7f\xe78`6\xc7F\x956\x8e\x84\xcc\xf9h\
+\xfd\xb9?\x99\x90W\xcb\x99\x80K\x5c\xe09y\x9e\xf6\
+\x19\xa0\x100G\xacS@\x84\x81t\xe4\xa2>_\x95\
+(\x158\xcc(\xd3b$\x10\xd6C\x02\xa9\xc6\xc9m\
+>\x18\xd6$\x06\xc4\xb7\xd2\xefTba\xbd\xdaGy\
+\x9fL\x17\xa8D\xcb\xb9\x9a\x95B\x9aK\xb5\x1f\xdc/\
+b\x80\xf9\xf9K4\xd8\xbcp\x15\xe1+&\xf0qD\
+\x02\x89\xa6,$\xd0^\xe2|\xd6\xb1D\xc9\xfev\xdf\
+=\x97\x1e\xd8\xef\xd5\xe1%\xc4\xfc\x80}\x8bB\xae\xf7\
+\xf8\xd9a\x8d\x96\xc9\xc1a\x93\xfb\xfa\xef\xb0\xf5\xf9X\
+';\x97\x0b[\x01\xd3\xdd\x9b\x87\xcd\x95\xd6E,O\
+\xab\xdb\xa7\xb3\x00\xe4~}{\x89O\xb7\xd7\xda^{\
+\x06\x0c\xb2\xc7{\xf7\xc3a\xd3\xfb\x9e7l\xad\x08\x13\
+\x83\x1b\x7f\x126\xfd\xdc7\xc3\xa6\xef\x7f\x1c\xd6$\xe8\
+\xf7\x0ek\x0aNz\x82\xcf\x15\xf6[\xa8\xc5\x00+\xc0\
+\x90\xe9\x0cT\xeeM?\xb8v\xd8\xfa9\xab\x82h}\
+\x89/\xf9\xd3\xa7\x855@>15q>fm\x8e\
+9\xae\xca\xb1xP\xc1J\xcb\x0fF\x99\xeb6\x9d\x80\
+8 &\x94}\x88!\x9b\xad\xae\xc4#w7a\xf3\
+\xef\xcdc\xe4\xc6W\x86e\xe1p\xf2\x1b\xe3\xc3\xc6#\
+\xc7#\xd7\xdel-\x9e\x01\xb7\xcd\x8c\x80\x9c\xaePZ\
+c:\xd3\x8c!\xa4A\xd0\xcd\x91\xa7mT\xe32\xf9\
+e-C\x09\xb0\xd2\x82\xa8\xc4^\xc1Lk\xd6\xc3\xc2\
+\x1a@ \x01\xf7\xd2\xe4\x00\xcc8\xe7\xf8\x07\xfb@\x5c\
+M\xe4Y\x1eD\xb4\xcez\xc88||JX\x137\
+;\xaf0\x7f\xf2\xb9\x18S9\xbcyx\xcb\xf0\xe6f\
+\x9d\xe5\xdf\x1f\x8f\x0e\x9b\xfe\xff\x95a\x0d\x90\xf5\x88E\
+\xc3b\xb8t\xd8\xdcj1\x03/\xa5Y@\x84<\xc6\
+]\xb6\xdak\xfc\x05q\xc2\x98n\xf2\xf4\xe6~\xe5\x94\
+\x94\x02X\x15\x0a$\xea(\xf8\xc6\xd7\x02\x5c\x01!(\
+\xf5D\x02=\xef\x1b\x875\x05\x03\x05c\x8ch\xfeJ\
+\x9cv\xa5\x8c\xf3P\xe3\xc5\x01\xd9zYSMh\xd6\
+\x88\xd7\x14\xcehC\xe5\xb9Q\xadd\x9e\xa38\xc7\xbe\
+\x00\x04x=\xf3<h\xbdZAi:T\xfe#~\
+\xed\xb5\xd20\x17_\x90\x857\x85\xee\xcf\x845\x0c\xc7\
+\xbc>\x05\x00@\xdc6\xf3!\xc0Yi\xe0)x%\
+\xa0\xb3\xb7z\x96\x82\xfaq\xa75\x90\x98U\xd6\x9b\xf9\
+\x8c\x9b1lup\xc4\x01K\x8cL \x84zx\xeb\
+\xa5\x07\xb9T\x8do\x9d\x95\x92\xbe\xa2,\xe1\xec\xe7\x0c\
+\x0bX\x1d\x90\x02\x08\xa2\x15\xe6\xc7'\xf5h\xbf\x03\x09\
+r\xdf\xcfSWy\xa5\xa2\x0b\xa9A5\xf5`\x1dt\
+\xfd\xdcZ_\x07tj\xb3>\x0f\xca\x17*\x8a/\xe2\
+\x12\x02_*\xe3\x12z\xd7\x9d\x07\xf7\xfc\xa0\xff\xe3\xb7\
+\x88\x1c\xa2\xac\x11\xc3\xbaPQ\xe8\x16\xe0c;\x0f\xbe\
+Y\x02\xd2;4\x95N\xd4^H<\x0a\x98\x00\xc9u\
+\xf4\xd4\x13\x81\x09\xc0De\xc5}\x92\xe8\x08\xb8$4\
+\x16\xb8y\xf5\x17\x0ak\x024\xc8\xa7\xd7^\xa5\xfd\x22\
+I\xa9\xd2cE\x14C\x80\x0c\x99\xf3wl@\x01\x9e\
+\xcf\xad\x17)\x03\x07\x09\xeb\xe6\xa3\x8b*\xfe\xe6\x9e\x8b\
+\x0a\xb2\xeb\xab\x9em\xbdp\x7f9\xdbZ\x11\xc9Jm\
+\x8d\x07\xcc\x03w|oXC\xb13\xf6\x0a\xa0\x01`\
+\x91@}.)F\xb4\x1c\xb2\x17\x7fJ\xb7\xe7\xde\xdb\
+\xcd9\x17fL\x10M\xe3\xf3\x0f\xc7\x84M\xaf\x87\x0c\
+W\x1a\xae4\xbd\xfer\xf8\xc50\xad\xcf\xe1\x94\xb0\xe9\
+\xf5\xc1a\xd3\xebc\x979\xb2\xa1q<\xab\x1cgO\
+\xdb\xf6Fa\xd3\xeb\x07\xc2\xa6\xd7C\xc2\xa6\xeb>_\
+X3\xde3+D\xa5\x01\xa12\xb8\x93\x95.\x89\x81\
+\xf9\xaa\xf6\xb3}\xf9\xe2\xb0&\xe1\xf0y=g\xeb<\
+\x99:\xa5\x1eK\x8c\x85x\x95uf=A|=o\
+\x09<\x7f!\x90\x17\x80\xa2\xe2K\x14$Z\x12G@\
+\x80^\xff\xf47u\xa0kM0\xb7\x5c\x82\xc5/\xd8\
+\xef\xf6K?\x8e\xac\x0b\x88K\x93\x00\xa0\x08x\x14 \
+f@W\x07\x22\xa0P\xcf\xa7\xbfk\x1f\x13\xf5r\x9f\
+Q\xd2hV\x00\x06\x00`\xd6\x9f\x84\x0aP\xe2s9\
+\xf8\x1c\xd8YAp\x90\xd4\xbe\x14X\xf0K\xfdT\x94\
+\x1e(\xe8\xc7\x8dZ/\x00\xb3\xbe\x12/\xc0\xb1^\xf2\
+\xf9\xa8\xf0\x0bhT\x0a\xf6\x03\x90\xdc\x07\x89\x06?\xad\
+\xe5\x81\xe8 ?\x01\xc8u\x7f$\xeaZ\x1b\x04\x06\x12\
+k\x81\xba\x04\x1c\x85T\xcf\xba\xd6\xae\xab\x845\xcf\xd9\
+\x01o\x9dZw\x12e-\x05\xd9rT\x01\xa2J\xa0\
+1`\xa8\xaa\xcf[z\x94\xcb\xef\xf6@\x86/\x07>\
+\x0d\x82\x07fOy\x8a\xc6\xedWi\xce\xbf\xbfyO\
+X\xe3/\xf5\xc6\xba\x0f\xcey\xf7-?\xf7\xe6\x9ba\
+\x8d\xb6DN\x17(Ul\xe7\xb4\x0a6\x95ub\xb4\
+\x00\x04\xe3\xf1\xec\x07S]RcB\xe2P@\x89\xde\
+X\x80\x87s\xcd:\xf5\x1c\xecW\x8c \xaa\xdf\xcek\
+\xf3\xae\xc5\x07\xf6u\xb6\x10\x02\x02J\xc4\xe9\xa8\xf4\x0f\
+\xc4\xfc\x12X*\x8a\xac\xf1]Y1\xabJ)\xcd\x02\
+\x0c\x19\xfb\xcb\xb9K\xfc\xd4X\xacL\x90U\x886\xef\
+\x08k\x181\xc4\x1d\xedO\x0c\xb4\xec\xbd\xae}\x0e\x00\
+J\xd1Hb\xa4\xc6$b\xa8\x002\x04\xa0\x95\xc0\xea\
+m\xce\xe7Pc\xdc\x88\x8d*D\x5c;\x01^\x22\xb4\
+*\xac\x02^\x80YW\x09\xa5\x0d\xa5\x82\xa5U\xa3>\
+w\x02\x84U\xd9\xd6\x03\x8f\xd2\xeb\xbe\xf9\xfc\x99\xe0\xd2\
+j\xda~3\xac\xf1O\xfc\xb1\xf8\x22\x13\x91\xf1]a\
+\xfb3\xc6\xcc\xff\xd63_*\xfe\xc6}\xa5_\xa9\x16\
+\x1e\xcc \xf1\xa88R+\x86^\xec\x04\x14K\xdcS\
+\x85\xd2\x189\xbd\xfa\xe9\x070UL\xe5*\xf1X\xe7\
+21<\xf1\x87\x84\xd49\xea\x1c\xc9\x16Q\x14\xe5\xfa\
+\x7f~\x1c\xc0\xdf\xb5\xc4\xd5y\xc1\xbf;\xc7\xf2s+\
+\x0c*\x00\x8c'\x855\x85!c\xea\xee\x92\xe3\xac\x8f\
+\xcf1h)\x9eX\x95z\x0c\x80T\xb3/M\x81d\
+\x8c\x00\xe8\xed\x03~{zJW\x98\x9fS\x02'\xee\
+c1\x05\x92\x19\xeb\x9c\xa3]R\x09\xbb\x9ep\xdf;\
+\xd7\xed\x1f\xda\x1aZt\xba\xc2f\x15\xe0\xf8\x1d\x00\xbb\
+<\xc7\xb9\xd7\x9d\x93\xdb[\x855q[2\x17\xea\xfe\
+&0iZ\xc0\xf0\xf7a\xcd\xf8\xd9\x8c36\xbf\xda\
+\xfcr\xf3\xab\x06\xa8N\x8a\xfb\xf8{ak\xeb\x8ex\
+q|lX\xc3\x10J\x00\xbe\x80Pc\xf2R\xeb\xa1\
+\x80$-\x0b\xc9 \xad\xc4\x9c(k&\xd8\x0a\x1a\x05\
+l&0S\x80.&\xa5<#\xfd\xf3\xf0\xe6\xb0\xe9\
+\xfd_\x1f\xb6\x026\xe2\xd5jQ\xd7\xe2\xa5E\x85\xa6\
+\x0e\x8d6\xff\xef~\x8b\xaf\xe4\x87\xa9\xd5Pb\xabW\
+\xc9s\x0e C\x0b\x02\x95_AIaGK\x96\x82\
+\xb5\xf5\xf0\xadyN\xc6:\x85%\xf3\xb5\x9a.\xd6\xf5\
+\xe4c\xb4T\x0b\x04f\x1cf\xb4\x02\xa2\x02\xa8\xb1\xb0\
+\x09\x18\x16s#\xa7m\x150vPX\x13\x17%\x10\
+\xbf\xb7zY\xe2\x80\xfed\x8e#\xbbVs\xf0\xa5#\
+\x99\x11\xb5\xeb6\x95(\x22\x14\x1c\x0fq\x1d\xbd2\x10\
+\xb7\xfc\xc3\xdb\xeb\xe5\x5c\xd3\x9c\x13^bA\xc6|\xa9\
+\x14\xa8@I,;\xcafQ\x97!\x96z\x9888\
+\xc0\x81\x83\x15p\x10?\xf5\xa5\xfc\xe0\xff\xb5\xde\x98\x1a\
+7$\x10\xe4\xa0\xf4\x14\xaa\xf0B\x8e\xfb9\xe9z\x03\
+\xf5\x1a\x09\xc4 P\x1eT|\xf7\xe1D\x08?\x90\x81\
+\xc0?\xe4\x02\xfbf\x93\x90K\xb8\xddO\x0eE\x82\x8c\
+zD\xc5W\xe0\xdb\xf7\xb8\xc6Sm\x01\x0c\x8e\x9dC\
+\xf2w\x00\x18\x16\x06\xe4J\xa0na\xa6\x88H\x05\xfa\
+\x09\x00\xec7FPk\x85D\xadS\xf1\xae\xef\xddO\
+T\x1b\x89\xf7\x85\xf3~I\xf00J|N\xf7\xdd\x01\
+D$\xcc\xf7\x00\x07\x09\x90\x8d\xa9b\x9f\xaa\xa5*\x1c\
+\xc3\x1b\xc3\xa6\xd7\xb7\x875s\xab=\x8f\x0c \xa9\xaa\
+\x0e\xaf\x1f^7\xbcn\x16\xe7Z\xe6\xcc\xdec\xe9\x9d\
+\x9d\xee\xfa\x1c\xf0\x8d_\x0e\x9b^\x7f1\x9e:\x9e:\
+\xf7(-\xe22\xa8\xfe\x9d\xda}\x01P\x97M\x95\xff\
+\xaf.\xbd\xa4\x9b3.\x89kQ3\xff=+q\x9f\
+[\xc6:\x0d\xef\x0c\x9b^\x0f\x08\x9b^\xaf\xb4\x00\x03\
+;\x97\x0f[)\x93%\xe2\xc4Q\x98?\xacu!\x11\
+\xd3\xf1\x84\xb0\xe9\xf7n\x18\xd6P\xa7T\xecL\xf3\xc8\
+\x80Mo\xad^\xbb\x02X<\x07\x8eJ\x00\xee`@\
+\xe9\xd7\xcbl\xac(Q*\xe3 \x05\xf0=\xc0c\xfd\
+8P%\x1aD\xe3\xac\x1b\x81&\xaa\xb4\xc0_E5\
+\x13\xa3JP\x8c\xa1\x91p\x0bH\xb5\x1e\xa8\xcc\xa1p\
+\x0b\x1cQ\xc0\xb5\x8a\x98\xcf*P\xf2sZ\x14\x5c\xb7\
+\x840\xf7\xd9\xe6\xb8\xb0F#\xe4A\x0beUe\xb2\
+\xa8\x8d\xf6\x83DW \x07\x10\x04|\x09\xb8\xad3\xeb\
+N\xa2\xd1\x05\x82%\x9eh\x0c\x19&\x02Jq\x8fl\
+\xf7\xe3R\xf9\x15\x09\x08\x0a2\x00\xc1\xdf\x97\x90\xdb\xc7\
+\xfc\x90@\xd3T\x08\xa2N(\xdb\xfc\xa1\xf7\x01\xb4\x01\
+<TH$\xd6\xee?\x86\x83\xf5\x030\xd5\xab'a\
+\xb1\xdf%\xa6\xc6\x0a\xa6\xdaq\xd3\x1a\xb1\xf8{\x01C\
+R\xf0\xea<\xa4\x01\x80:\x9c\x80\xab\x16\x98\x02\x840\
+\x8dT\x8c<\x17\x14Q\xe2QD\xe8h]`\xe0\xf9\
+\x5c\xd9k_L:c\xaa\x04T\xb9\xbfk\x7f\x98\x0f\
+\x9f\xbd\xd3\xe5\x17\x89\x1dfOg\xcd\x8b\xffbX3\
+\x0e\xcf9- &\x22\x8a)!q\xe7g\x89\x82J\
+\x84<\x1f\x00\x9a\xbf\x93\x95g\x89e\xf9\xef\x0c\xd4*\
+\x11K\x7f\xb9\xfdaX\x13h\x1e\x18\xd6\x8c\x93{t\
+\xa9\xca/\x8c#\xcf_\xeb\x0eq\xc4\x0cdk\x9c+\
+?\xa7\x17\xd8~\xa4q\x10\xbb\xe2\xdas/\xfe\xa2u\
+\x92\xcf\xbbD\x19\xb5\x16`\x12\xa5\xb8_\x01\xccz\xf8\
+=o\xf1\x02\xbf\xe9<\xa0\x8d\x03\xf0\xb6\xbf\xd7\xe9.\
+K\xeb\xd0\x9b\x96\xc0~zj\x8bJt\xee?\x95\xa2\
+j\xb1D\xc1\xa5F\x9f\x09\xabV\xb1\x02*h\x19\xa4\
+\xdf(\xe0X\x00\x89*+\xae\xbaoN\x9dP(\xba\
+\xc9/7\xe5\x89\x00\x00 \x00IDAT\x22bW\
+s\xe2\x15\x16\xc4c\x00\xb6\xcf\x85\xed\xef\xdfj\x1c.\
+*6\xb1]\x8c\x0d-6\xc9\x5c\x1b\x0f\x09[\x01\xed\
+\x12U\xed\x0aM*\xc9\x15\xa0wb\xa6\xf5\xbcU\xcc\
+U\xda$\x1c\xa6\x1d\xa4\xdf\xd8^(\xaca*\xa1\x1c\
+\x0b\xc4\x01\xd9\xfc\xa2q\xc7\xc9\xc4+?j\x1fk\x89\
+q}\xe9\x8f\xaa\x92o]\xe4~+\xa0\x1d\xe3\xe3\xfb\
+U\xa8Y\xe2\xbd^\xbc\xd59\x04\x10t\x1e:G\xec\
+K\xe7\xa7xMA*\xcf\xc7\xd2\x86\x91\xf8\x88\x07%\
+\xb6\xee;\xcar&\xb4\xe3\x15\xc2\xd6\x04\xc7s\xab\xf5\
+\x018\x19\xc3\x9a\xb1\x88*\xc24::\xc0\xa84\x07\
+\xce\x10\xd6\x00%\x87\x85l\xe3\xf4z\xfe\xb0U\xa3b\
+{\x81\xb0\xd5\x9f\xfb{\x15\xa7(\x04j%\x06\x0cI\
+\x1c3\xcf\xa8u\xe6<6\x0d@~ /\x01\xf8\xf4\
+\xa2\xd0\x12\xcb\xbee\x093*\xb5P\xf8\x15\xfe\xbd\x12\
+wS\xdb2~2\xa6\xbd(\xf5Z\xa72\x01\x1e\xfe\
+6\xacYw\xc9`R\xb8\x1a\x9e\x1a6\xfd\xfc\xc5\xc3\
+\xa6\x7f\x7fZ\xd8Z8-\x7f\x91\x05\xb0\xf1\x8ba+\
+#m\xbb7\xac\x99.\xe0\xbcJ\xad\x13\xd3Qj*\
+\xc9\xf7\xc2\xa6\xd7\x7f\x0c\xdb\x9f\x89Y\xf1\xa7\xd6\xd8/\
+\x855\xeb\x14\xa3(\x0bT%R\xae\xc0\xaae0[\
+*g\xf1\xfaw6c\x1di0X\xaf\x19\x17n?\
+\x96\xe3\xe1\xedKS_\x00\xac\x18o\x09$\xd5\xcf\xd1\
+\x80\x12\xe7)\x00\x1a/,\x8eu\x7f\xc4;)\x06\xeb\
+>\xd6\xbfc\xae\xf0K\xe2a\xfb\x17 '\xaeN\x06\
+|i\x81$S\x82\x18d\xf9\x7fqg\xe6\x93{\x8b\
+\x8a\x1b\xc7P\xa8G~z\xb2O%5\xf0\x81\xabH\
+U%\x88\x81\x83\x1f\xd9\xa8S\xa7\x83\x18?\x1a\xb6\xce\
+\xa7\x9c\xb7\xc1\xaf\x9b\x03N\x8f\xed\xb9\xb3b\x97\x0e\x86\
+C\xac@S\xe2\xdf9\xa0zU9\xf2=\x04\xb2\x1b\
+\xd37\xbd\xdbL\xd5\xd8\x1c\xb4\x04\x06\xe5H\x03F\xf8\
+J&\xaa\x97l\x10\x18\x8eH\xa2\x09\xf1\xa1\x8e\xdaU\
+\x88\xcaq\x0ad\x1d\x88\x02@=\x90*\x17*\x9c\x01\
+o\x5c=\x91\xb9\xc77\x94\xab\x9b\xcc]ik\x82\x83\
+B\xf6\x83y\xf2\xfc\x128\x13c90\xefS[Q\
+\xf2\x1cU\xda\xbe?\x1f\x09+u\x10\xe2\x9cT\xb1\xea\
+%\xe4\x98|\x01\x84P\xa5$r\xa8]6\x8c\xc4B\
+@\xad\xc2\xea\xfeqh\x00\x08\x0e\xd4\xef\xbb\x8fkb\
+\xb0\x5c\xb7\xe7\xefK\x0f6uc\x00\x91\x85\x0fY\x87\
+\xcc\x0a\x1c9\xee\x87d\x80\xf7\xe8\x85\x0a)P\xd7\xfb\
+Z\xbdLYy\xd8yC\xd8\x0c\x10,T\xc8\xdb.\
+\xc8% \x8c\xd8\xde\xf4.KOd\x88\xda<\xb9\xe9\
+y\x22~\x95\x01\xddx\xd9\xb0u}U@\x06\xf9\xd4\
+\xdbu\x96\xd4&8\xebR\x11\x1b\x9e\x1f\xb6\x06\x12\x9b\
+s$R\x9d\x07U\x89\xff\x1d\x1f6\xbd\xde<l\xfa\
+\xf7\xcf,\xe2\x84\xc6\xc9\xcc\x8c\xbb\xdd\x95Bm=\x97\
+\xe3MU[-\x03\xdbK\x85\xcd\x08\xf2\xaff\x04Y\
+\xe0\xd5\x8b\xcb\xe4s/\x91\x1c\x8e\xc5\xd4\x0d\xc0\x9d\x03\
+\xc7\xfe\xf0*\xe0\x95\x10g\x22V\xbd\xcc\x90`_\x87\
+\x14\x95k\x1fQ\xa9\xd2\x86P\xd1\x15\x98\xf4\x896 \
+\xcd\xefIt\xfd\xdd\xac\xdcU\x02\xa2R\xda\x01U\xa5\
+\xbe\xdfS\xe7{\x00\xd3~\x90`KH\x01\x82\x0e0\
+~\x0b`\x01\xd0@\xddU\x89\xa0\x92>\x7fM\xafo\
+XzR\xcbOZ\xef\x9d\xe6A\x1d<\x02Q\xaf]\
+Og\x89\x16\xba\x8f\x9eO_Q\xc7\x1c\xf0%\xe1\xef\
+\xc7\x01\x12\xb7S)_Ui\x17\x7f)\x01\xd7z\xc1\
+\xef\xc4\xf9\xf3\xe9F\xf4L%\xd2\xc1\xefyH\xec\xba\
+\xf1\x87u\xdf\x01=\x12\xbf~\x5c\x0e\xa0\xd0\xf8<\xad\
+\x1e\x98!\x80\x85\xac(\x07\x918\xa8\xc4\x15\xb8\xe8\xb9\
+\xa4}\x91\xad6\x9b\x7f\x0f\x9b.\xf3Sa\x8d\xf8\xac\
+1\x9e/\x0ek\xc6Ty\x0e\xbe$\x00\x02Q\x01\xbe\
+\x8a\xbb\xebD\xc9\x06\xfc\x12\xa9\xe4\xa7\xb5\x82h\xbd\xf3\
+\xf7\xbau\x5c\xd7\xad\xe2\x9fL\xb5\xfaw\x9f\x1b\x85\xd3\
+\xfd\x14\xf8'\xd0]\x95H\xeb7\x99\x0a(\xdcU\xf1\
+\xce\xe7O\xe5\xbb\xd6\x03&\x9f@*\x13\xab\x9a\x82\xc0\
+\x7f\x12\x1d\x93`%\xd3\xb0\x80\x12\x957-^\xa8\x91\
+\x17M\xb1V\x09\x0d-\x0ac\x1aU\xb01\xd4\x00\x87\
+ZB\x9c\xa3\x00\xfbL\xf4\x0b\xf0\xc3\x14\xe2\xd71~\
+0\xfd$D\x19\xd8\xd7\xfe\xc8}\x5c\xc4;LE\xc0\
+8\x8d\x06=\xdb\xcf\x9fm\xcf\xf6\x0da\x0d\xf0\x04x\
+\x7fx\xb6\xae}v\xf3\xb9\xcd\xe7\x1a\x7f\xa8\xd7>+\
+\xb4\xd5\x02CkF\xa2m\xff\x00t\xfa\x16\x16\xd7\xef\
+\xf9\x10\x17\xbcs\x02\x1f\xbf\xcc\xf5\x85\x91\x88A\xa3 \
+\xf2\x8a\x0c\xd8_\x9d\xada\x12i~'\x01\xb1\xe1\x15\
+a\xcdx>b\xc3\x99\x88\x98B0>!\xac\xa1\x00\
+\xf3o\x00'@S\xdf\x8a\xd4\x7f\xa9\xc8\xe6\xfd\xad\x8a\
+\xa1\x02\x88\x84\x8c\xa8\xb2\xf8\xcc>3\xfd!\xe3\x88^\
+\x83\xa2*\x80\xe2\xb5Ll\x0a\x98\xd7:$\xd1\xe7\xaf\
+\xb2\xc7\xd9\xb8\xbd\x02\x86\xac+\x8c\x9a\x9321\xfd\xcd\
+B\xd5\xae\x96X\xa2\x9fY\xd8(\xb1Y\xe7\x8e\xebN\
+@\xac\x80\x85^3\x06\xf3\x03\x10@\x5c\xd3\xfbXg\
+\xfc\x96s?\xd7W\xf5\x22'\x83\x02\xb0\xce\x0f\x14c\
+\x82\xc6\x17`\x05\xf0\xca\xef\xe4\xb9\xa9\xb7\x9f\xbf\xdb\xde\
+2\xacQ\xbf7\xdeP\x22.QO@\xb7Z\x98h\
+\x14X\xaf\xceu\xfb \x13\xb9\xf2Wz\xdas\x7fn\
+\xdf\x15\xd6\x00\xc5\xfcb?NQ\xdcC\x0c\xd0\x18\xe0\
+\x5c\xaf\xc5\xcc\x15'\xfb\xb9l\x1d*\xff\xab\xa5\x98\xc8\
+\xe1\xc5\xc2\xd6\x96\x87\xf1\x02a\xd32\x7f`X\xe3\x8f\
+rz\xc6\xf0\xa9\xb0\xa6\xe7<\xa7\xdb\x8c\x8f\x0e[\xa7\
+H\x14\xd0E\x84\xf2%a+\xe3axYX\xc3\x88\
+\xc1\xe80\xae\xfcfY\x00\xceu]\xcc.c\x0c3\
+\xfe\xd2*\xb0\xf9D\xd8oa\x14\x0240\x1d\xc5\x0b\
+\xe2@\x85\x12\xcf\xcb\xf9\xad\x15\xc0\xd8\xdcd\x94TB\
+\x9cZ\x05\x0a\x0b5V\xd4z\x17\xaf\xd0\xb80%\x82\
+\xc8\xb5uO\x8b\xce\x97\x02\xb2\x02\xad\x96:\x05\xae`\
+\xd6\xffbe\xd8\x8e/\x0ak\x00'\x05\xe5d\xea\x02\
+r*\x7fv\x8e\x8b\x17\xf3\xfe`\xe6\x17\xf5\xff\xbc\x8b\
+\xd6F\x15\xa8\x9c\xfb\x00\xb5\xfc\xfd\xbdn\xc0<\xb6\xe3\
+\xd6M\x8fa:\xde\xcdI\x93E\x0f\xf2\x8f\xc3\x9a\x0b\
+\x88\xf0\xe3\x91\x0dR\x04\x09\x8a1\x80\x11\xe8\xbc|\xb2\
+\xa3\x1b1#\x8e\xf5\xa19\xef\x5c\x82\xe0`\x85X\xf6\
+\xe3\xfd n1V\xf0\xbbk\xefCm0\x1b\xa6\x17\
+cX\x03\xe1%p\x8cw?\xb9\xeb\xe1={3\x86\
+!Ey*\x80\x15\x98Ip\x05\x9e\x1c\x94\xef}\xa5\
+C.\x91\x8a\x08\xcb\xcf\x91\x09\xf4\x89\x8d\xa8\x97\x83X\
+\x8f\x87\x8a(\xf5b\x89\x81\x85\xe5s:\xb88B\x8e\
+Q\x80/0wp\xb4\xe3\x05\x1b\xa6B!\xa9\x1c\x10\
+\xe6\xc3\x9e\x1c\x13\xf1\xf3T\xb9F\x91\x81\x8cz_=\
+\xd5(\x92\xe6I\x0bP]\x9f\xebFm\xfa\xfa\xd2\xf3\
+\x85\x0aT\xd7\x93\x14\xc1\xea5;kV:T\xc2N\
+\xda~{\xfb\xed\xb52\xb8\xb9_26\x1c\xf0\xee\x1f\
+5s\xc8\x1e\xaa.Q\xb4\x17&0\xe3\xfe\xba^\x15\
+\xb3T\xa1\xa6&o\xbdO\xe9\xfe\xff\x0e\xff;\xaf\x83\
+\xa5r\xa7\x92\x96\x8e\xa7\xd4\xab\xf5(I`>\xb4\xac\
+S\x09D\x89\x13I\xa8\x7f\x7fA\x0a\x87\x9b\x0e7\x1b\
+n\xb6jUH\xcc\xf58\x0e\xef\x1b\xde;\xbc\xb7q\
+\x00\x02A\x95Cj\xb5\xdf\x08k*\xff\xd4\x8cS\x84\
+Q\x0f[\xed\x97\xdc\x8f%2H\xeb \x03\xc1\xda\xff\
+\x1f\x0dkT\x84\x89\x96\x18c\x95\x95\xe4\xea\x99\xb3o\
+T*\xa8z\xa3$\x1d\x11\xd6\xcc\xb9\xe7\xc8$p\x9e\
+\x8f/@\x00\xa0\x88\xe3\x074I\xb0\x01R\x12W\x15\
+\xddnz@\x010\x90Y\xc0Y'6\xa9w\xaa\x00\
+G\x80\x1e@\xc188\x81\xbc\x03\xdc\x1cv\x07\x91\xc4\
+\x9f\x88\x1c\x86\x89\xebU)\x17\xe0\x09\xa0\xa8w'\xa0\
+U\x15,~\x11\x92,\xc1\x93\xf0ge\xb6\x185\x02\
+9@#?k\xdf\xf3\x1b\x90e\x00\x86\x8a\x9d\xfb\xdc\
+\xf7\xfa\xda\x7f\xfc\x83\xfd\xec\xe0v\x90zn\x18\x07\x12\
+p_\xab\x1fX2 \xd7\x95\xf7\xbb\x02\xef\x1c\xf7V\
+\x01\xb7\x9e<\xf3\x83%\x82\xf65\xa0\xea\xcc\xdd\xd8M\
+\xd7\xe3\xcb\xe7\xa4\xa2O\xe4\x89\x1f\x01\x80J,%D\
+\xee'\xff'\xd0\xc2\x10\x01p\xf4\xe3\x1d\xb3\xa2\x5c\x89\
+\x84\x03?\x03\x03\x01c\x05\xc8\xb9\x0e\xab5%E\xdd\
+\xaaWU\xebH\xfe\xddJ \xf3\xbaK\xf3\xc4\xf4\x08\
+\xcf\x0f\xc0\x92\x95\xefj\x95\xd1\xf3\x9f\xda%\xeeG\x8d\
+A\x94P\xe4\xdfG\xc5\x1f\xae\x1b\xd6T\xa22\x01A\
+\xf1\xaf\xca1\x80 \xfdf\x050\x99\xc0\x15\xb3\xe8\xc1\
+\xcb\xb8\xd2RIO5~s\xd2k]\xe7\xfa\xad\xd6\
+$-\x15\x12A\xbd\xbd\xff\x16\xd6\xf8\x9b\xae\xa5ms\
+\xb7L4\xaf4w\x8d\xae\xbd\xd4\xd4\x93\xed\xb3\xfc\xbd\
+\xfa\x5c\x00{\xbd\xc4\x00\x04\xe7.?\xa9\xe5\x02\x10\xaf\
+\xa2\x9c\xc0v\x9c\x02\xf39`\xbde\xa2A\x93\xa5\xd6\
+q20+\x01\xa5\xf2\xfc\x91\x9c\xa7-\x01\x15\xff\xfc\
+\xed\x92\xc8O\xab\xe0\xe6\x9b\x9b\xafS\x14j\x1d\x19\x9b\
+\xe6\xbe\x89O\x8c\xf9\xfbv\x9e\xbf\x12\xcf\x8c\xff\xea<\
+\xe1\x8fO\xc9\xb8\xc9\xf9@TO\x22\x96\x09\xc7\xf6R\
+\x8b\x9a~Q\xd5i\xe6\x9c\xb8P\xf3\x87+\x0f\x87\x0c\
+A\xfd}w\xd8\xf4w\xfe/\xacI\xe0\xb5\xd8d%\
+\xd88\xbb\x0a\xb8\xfb\xf8\x87_\xf1zZ_\xfc\x02\xff\
+\x99\x9f\xaf\xc4\x1c\x8d\x17{AX3\xf6V+\x16\xff\
+\x92\x8c\xd8Z\xdf\x09\x88\x8f7\x09[\xa9\xbd\x950%\
+\x13\xb6\xe6\x97\x9bf\xa3\x22\x891@\xecL\x85\xffk\
+\x09X\x88\x8f\x15lT\x94\xad?\xf1\x18\xe0\x01`\xdd\
+W\xa2\x01\xd3\x12,\xe7\x82}d\xbd\x89;\xf9y\xcf\
+\x1f\xa0H\x142\x81\xbc\xf1\xdf\xc2\x9aB\x8d\xb8\xff\xf0\
+yN\xd1\x9e=\x8f\x9em?\x8at\x01\xbb\xceQ\xe7\
+y\x02\x94\x18\xc6z\xe0\x89\xd9Q\xcf/5\xfb\xac\xcc\
+o\x9f\x1d\xd6\xb4\x02h\xd1\xb2\xee{\xad!\xe7\x15\xa0\
+\x19\xf0\x86\xe1\x91\xfbZ\x1c\x5c\xffn\xffZ/\xa8\xdb\
+}\x8bOWx\xac\x16)\x0c%\x14\xf3\xccGJ[\
+\x02\xd0\x90\xe7\x8e\x84}|G\xd8\xda\xb2j=\x0d\xd7\
+\x0e[\x7fO!hxDX\xa3\xbdr\x95\x85\x89=\
+\x1e0\xee\x1d\xf76\x1a\x10\x19\xb7\x9a\x16'\x0f\xab\xb1\
+\x88D'\x93\x91\x85\xf1A\x03k\xbc\xefx\xbf\x10{\
+\xac)\x16\x09\xd4n\x0f\x0fk\x00\xde\x5c\x07\xc5\xbc\xc4\
+\xe0\xca\xf3\x0aP[\xfe\x90\xf8\xab\x16\xd5l\x15+1\
+`\x80\x17\x11M-:\xfe\x0e\xed\x80\x07\x855\xf9\x15\
+\xcd!\x85\x01\xfbH\xe2\x9c\x85\xb0\xf2\x8b\xa6\xb8`\x1e\
+\x88\x7f\xb5\x94\x00\xc8\xb5~i\xbdJ\xb1H\xa2\xdb5\
+\xc5\xc0\xf9-\x0f\xd6\x0a\x90\xeb\xd4\xf3r\x7f\xeb\xcb\x14\
+\x09\x00\xfe\xb3\xc2\xa6\x9f;2\xac\x11s\xec\xf6\xfb\xde\
+\xaa\xac\xd8\xf8\xc6\x97\x98\xef\x1ec&\xbe\xd8P\xe1\xa3\
+\xdeqD\x22P\x0f\xcf\x9e\x9d\xa0\xf8\xbci\xb2\xbfI\
+$'.\xe0\xe3aMb\x81\x22\x9c\xbd\xdd\x15\xc8\xaa\
+\xfc\xa0\xdc\xa3r\xaa\xec\xa3>\xb8!\x10]\x01\x98\x83\
+\x1c\xc2\x01\x00\xd8S\xd4\xa7\xa5\x12\x14\xe1\xe8\xc9\xab\xfa\
+a9l\x8e\xb1=X!\x81\xe7i*p\x12\x81\xa4\
+v\x16E,\xf0\xd7\xe3\x1b\x87\xaaw+\xe7\xadV\x05\
+[@\x0c\xa8\x88\xf4\xfe?2\x819_s]>\xaf\
+\x048EV\x8a\x12\xe7\xfe\x08\xa4\xfb\x00\xd7\x01\xc8\xa1\
+9\xd8\x00\x1b\x1c\x14\xca\x96\xdfw<J\x100\x228\
+$\x14v\x0e\x112\xd5\x8d[\xab\x8a\x9d16zw\
+\xbd\x1fJ9\xc7\xfe\xebdV|%\xd5\xbc!\xd4\x00\
+\x84d\x90TEVE\x81\x0a\xa6\x7f7\x8f4\x13\xb0\
+\x1a'w\xbd\xa4\xf8B\x08=G\xef/A\xb3n2\
+\xd0\xdb\xfcl\xf3\xd3\xcdO\x9b\x009{|k\x1fp\
+|\x02\xde<\x10v\x9e\xb1\xf3\xf4\x9d\xa7\xaf\x89|\xf5\
+\xa4\x19\x93d\xce\xfa'S\x84\xe4\xccas\xa2\xb70\
+`~\xb8\xac\xef\xe1\xe4\xb0\xe9\xfd\x1e\x1d\xb6\xfe\xfd\xd2\
+\xd4\xc0\xacA\x99\x16\xa0\xa6\x83\x93p\x14\xb53\x03\xe0\
+r\x5cY\xe1\xda\x9e=l\xedE\xe4\x98\x86\x8f\x84\xad\
+*\xc5(\x97\x95\xe8\xa2\x98\x0b\xc4%\xc8)b\xe8\xbe\
+\x94X\x91\xfda\x9f\x9a\x07\xad2\xa82\xa7\xf7Z\xa2\
+m\x1d\xdb\x1f\x02~\xad'\x90}\x81\xbd\x00BO\xae\
+\x96\x18\x15\x0a\xebV\x80\x812\xaf\x92\x8e\x92\x8fz\xf7\
+\x94\xb0\xfd\xc7\x8f\xf6\x07T\x1d\x10zm\xa9\xafcP\
+I\xf8{q4\xe3y\xb2rl\xff\x1a\xc3\xa6\xf7\xb1\
+\xa6vx\xde\x80\x8e\x04\x94j\x7f\xfa\x5c\x02F@\xa5\
+^P\x81H\x02\x18\xf59\x88\xcc\xa8\xf0\x11\xe9\x11\x88\
+\x08\x88$<\x12u\x00\x00\x7f\x8dr\x0b\xb0\xcd\x83\xb5\
+z\xf1\xfc^?n\x95_\x14`\xaa\xe8\x02|1\x86\
+\xf4\xca;\xa0=\xcf\x04XK\xbcUK\x92\xfb\xec\xef\
+\x01\x8c\xf8=\x95yc\xe1R\x0cL\xafq\xd4Q\xe7\
+J*\x06\x0c\xff\xec\x15\xf0\xc2O\x1d\x1f\xb6\xf6>\x1a\
+OU\x81\x8d\xeb\xe3GQ\xb9\x05\xb2\xd4zMu0\
+\xc6H \x99\x8c\x83\xf2\xcb\x80ks\xa6S\xab\xa4*\
+\x8c\x9e\x1bJ:\xa03\xcf\xe5\xaad\x1b\xe7d\x9d\xd9\
+\xdf\xd6Y&\xb65\xbe.\x03\xd0\xe1\xef\xc2\xd6\xde\xdc\
+)\xe0\x9bl\x16\x0f\x9d\xac\x01@\xb2g\xbd\x9e\x93\x00\
+\xcdt\x12\xcfE`\x0c\xc8\x01\x98\xf2\xfb\xf6\xbb\xfd\xea\
+\x1c\x04L\xdbG\x80\xd1\xac\xb4T\xab\xcf1\x8b8\xdc\
+~S\x08\xce\x96\xfb8\xc6\xdf\x85\xb8\xd5K\x16-\x96\
+\x02\x08\xf9\x15\xfb3[\x0e\x9cw(\xe8%Z\xa5\x82\
+\x030\xc2\xcc@\x15V\x81#.\xf6\xd2e\x1e\xf8\xe4\
+\xa5\xe7\xb8\xa9\xf6\xad\x96$\xf1\x99\x0a\xa4\xc4\x0e\x03\xe7\
+\xf8,L\x00\x06\xf9;\xd7\xff\xe4\x04\x22\xb4\x9a\x11\xb3\
+rn:\x9f\x158\x5c7\xe6#\x11_\xe3\x22\x89v\
+ab\x8a\x17\x01\xee\xbdj\xbc\xc4M\x05\x8e\xa8*\x80\
+\xe7c\x0b\xd0<y\xeby\x1f\x94H&\x06\x8d\xeb\x10\
+7\x0a\xb8\xb5\xa0\xf4\x22\xd3\xff\xaf_\x98u\xc9\xec\x19\
+\xde\x12\xb6\xf6,\x170u\x97\x14k\xcb8p\xf8\xf3\
+\xb0\x95qRb\xa6G\xe5\xfc\xf2\xd7\xe4\xbe\x13`\xb9\
+\xbf\xa6\x97\xdc'\xac)\xcc<n\x01^\xea\xf3\x8aK\
+\x8d\xfb\xcb\xf7\xaf\xf8\xd7yj\xac\x1d\x80\xdf\xfe\xe9\x0b\
+l\xd6\x15\xbf\xe0\xfc\xf2j\x9du\x15\xcd\xa2\x1c\xabd\
+;\xbfS\xfd\xbd\xa6s\x10U\x93\xf0'\xd0>>7\
+\xac\x01\x22Q\xdd\xb3w\xbf\x18[\xce\x11q\x9c\x9et\
+\x1a\x0c/\x0ck*\xd4D\x8d1\x0c\x8e\x0ekZ\x05\
+\xb4xa\xe8`\x0e\x99\xf6\xe1>\xba/\x18X]\xef\
+wQ\xa8\xdd\x0f\x0c\x8c\x04\xa4\x15JJ\x13@\xbc\x03\
+8\x17\xf7\x02T\xec7\xcf\xc7\xcfY\x07D\xd7\x89/\
+b\x04\xa4\xa6\x07Q\xd6\x12[\xcc\xa93\xd5\xcb/n\
+\xfb\xcf\xb0\xe9\xb2\x1f\x13\xb6\xfa\xadb\x02\xa4\xbf\xd5\xba\
+\x0a\x086\xa5\x07\xb3[\x82Z\x9a$\x0a\xbe\xa6\x9a\xe5\
+\xf9P\x85\x9e\x14\xaf\x0c\xe1\xa8\xb8]\x98\x0as\x9e\xf8\
+\xa6\xb5\x05h\xfc\x5cXS\xf0tN}*\xaci-\
+\xba\xc6\xe6\x9a\xf3}p\xdf\x9c\x83\xc6\xc3j\x8ds}\
+\x185\xfdxb\x00\x94\xbfg\xaa\x0b\xcd\x09\xfb\x80f\
+\x0e\x11o\x80H\x02\xad\xe5g1cL\xe7\xb0~\x14\
+\x00\x9c_(\xfd\xf6\xafV\xfa\xd4^)\xa0!{\xfe\
+k\xdd\xf9\xbc\xf2\x94\x04\x04j|4\xc6\x86<S\xbc\
+\xe3\xfd\xf8\x7f\x1a\x12\xa9\x81\x82\x01\xb3wFb\xee\x9f\
+\x14\x84\x17d\xef\xc5s\xd7\x1b:S\x01\xbf\xb7\x8e\x07\
+*u\xef\xa4\xfc\x8d\xcf\x0c[)\xc3\x12\x9a\x0a\xe4P\
+l\xae\x90=\x83\x02{\x08#\xcf(\x90\xb4\xf1$J\
+z\xcf%<~\x8eC\xeb\x01\x00\x1b\xf9|\xd9\x1b\xfb\
+\xd4\x14\x11\xca\x83f\x0e\xb0\xde\x9f\xd4\xd4;\xa6c\xb9\
+bR\x7f\xdf\xd3$\xd0\x0b|\xb0\xdexS\x04\x5c7\
+m\x04\xa2,\xdf\x99\xf5\x81W$\x15\x90\x22\xf0\x16\xe8\
+\x02\x1c\x1c\xd0\x10@\x89o<\xbeK%\xb0\xf0\xd9\x86\
+\xe2\x15w\xf3\xb2M\x00\xcd\x81s\xd8\x0e\x5c\x0f\xbe\xbd\
+\x9f\xdfl\xfe\x1fP`a\xb9\xdfq7\x7f\x9c\x07\xe8\
+\x99\x9bJ\x8f\x04\xca\x01\xeb~\xb8\xdf6\xe0\x19\xc3\x1a\
+\x0a\xa7^\xd7\xfb\x855\x07\x87\xe7\x83\xf2)\xf1\xee\xd4\
+\xbac\xd8\xd6<n\xebt\x9b\x036\x07\xcc\xbf\xbf\x1c\
+\xf8I\xb1\xaf\xde\xf8\xa3\x17\x07\xb1\xe7\xf69^\x84\x1a\
+-u}cE \xa8D\xf7\x5c\xc7\x99\xf3>f/\
+c\x1dd)z\xb7\x9f\x98\x0bj\x1d\xb5\xd3D&g\
+\xa6\xccI\xeb\xe7\x18n\x106}\xbccw_\xb3\xfb\
+\x9af\x1cT\x1eH\xc4D8\x8e\xcd\x83s\xderV\
+\xd6\x86C\xc3\xa6\xd7\xef\x87M\xff~tXC\x89$\
+\xa2g\x9c\x9e^X\x09\x1d\x15Uc:s\xbc\xd8\xf8\
+\x9e\xb0y\xec\xe7d\xd3\xeb\xc7\x96\xb9\xba\xdb\x9b\x87\xad\
+\xa2\x82\xa5\x1d \xf0\xd3c\x9b\x81\xc6\xcc\x18\xbaMS\
+\xc9\xc9\xca\x0fj\xde\xe6\xcba\xeb\xdf\xaf9\xb2\xe9\xf8\
+\xea\xa0\xec\x0e\xc2\xea1\x14\x10H\x0c\xf48AH9\
+j\x01\xa6\x84.+wU\x01\x074q\x84*\x09D\
+\xcf\xb4\x028`%Z\x00#\x95=\x8c\x85\x9e\xf2\xaf\
+r\xaeG\xdd~\xe2'$\xe4z\xc3\x00\xae\xee\xab\xbf\
+\xaf\xa7\x9a\xff\x91\xe8Kp\xf4\x1a\xab\xe8&\xf2\x5c\x00\
+\x0a\xd1\xa7\x04\x22P\x93K\xdb \x03\xca\xcd'\xc3\xd6\
+V\x11\x07mQ?%\xdaZ\x99\xf8\xb1\x1e`\x04,\
+\x0a\xa0\x00\xb4\x19\xc0\x18\x13[\xfe\x1d\xf0\xd1\xfb\x7f\xfe\
+\x0a \xc9?\x0a\xdc\x04^\xee\x83\xe7\xa9\x15C\xe5^\
+Bc\x9e\xba\xfb\xc9\x1fyn\x0a\x83z\xaa\xb3bR\
+\xeb\x10\x03\xc3\xe7\x91\xa0c\xd4$U\x96\x18\x5c\x8d3\
+\x920\xbbN\x1a\x0a\x9e/\x06\x1c\x7fb=\xfaRa\
+\xe3\xd7}\x0e\xfe\x96?\x97\xf8f\xe5\xb8\xc4I\xdf\x1d\
+\xb62\x85J\xb5Y \xe4\x1c\x02dI\xa0\xac\xf3L\
+\x88\x0bPp}\xe6M\xa7\xaa}\xad7\xe3(\xf3\xbe\
+\xd7\x5c\xf6\xac@[W\xc3k\xc2V \xa7\x02Z\x1a\
+\x0fy\xdd\xdb3\x87\xa5\x1a\xf8\xa3\xd7\x9e\xcf:\x17\xf9\
+\xb7\x1c\xbbW\x89\x84\xf5\xf6\xe4E\x93\xa5\x983*\xfe\
+\x189z9\x01:'f\xe2\xea<\xb0\xae\xc4\x15\x18\
+&Gn\x1e:O\x05x\xe3\xf6Ms\x85\xcf\xf3K\
+@\xbf\xfc\x22&\xc7\xef\x865\x7f\x8f\xc8)\xa6\x86\x80\
+\xd29\xa0B\xf3\xaae>\xf8f\xefr\xdem\xae\x98\
+\xc0\xe1or\x9f\x99: \x8ep\x1e\x01\x1eO\xedD\
+\xdb<_L\x18\x81\xe9u\xf2s\x0a\xa01`$(\
+\xb4\x0e\xacg\xa2z\xfc\xac\xca/?*a\xe3\x17\x92\
+)\xb6_\x85\x8c\xbf4\x05!\xc7=\x0a\xc47\xaf\xdd\
+\x1c\xbb9v\x06*\x16\x7f\xc3\xff\xd8\x87\xfc\x03M\x04\
+@\x96V\x1c\x01\xf7\xff\xeb\x17\x7f\x07\xb0\xcd\xf5A\xab\
+\xa1\x18\x12\x18\x15\xe7N\x8d\x90?\x08\x9b\xcf\xef\x05P\
+\x02la,\xe4\xfa\xda\x1c\xbc0_v.\x1c6\xed\
+\x93\x83\xc2\xa6\xd7\x8b\x875\xad\x8c*\x8b9\x15\xa3\x9e\
+w2\x0a\xb4|TEP!\xcc\xbaK\xd1\xc4\xa24\
+\x1f\xb3\x8c)\xae\x0a\xb2\x82\x94\xf5.n\x94x\x02N\
+|\xdf\xf9\xf3z\xe5\x87\x00\x98YH(M\x11@7\
+\xe0VE=)\xf6\xe3\xab\xc3\x1a\xff\xed:\xbc:\x1f\
+P\xfd\xb3r_cR\x01H\x12z\xe7P\xb6$W\
+k@\x9e\xbb\xfc\x89V\x93\x02dMy\xd1\xfaa_\
+\xf9\xdc\x12;\xfe'\x9f\x7fM\x01\x10\xffi\x85\xc88\
+a\xf3\xe7a\x8d\xb6Q\xfa\xff\x1a\xc7\xdd\xf9\x8f*D\
+\xd9\xcf\xfdsM\xe6_\xf9MS\x03\x8c\xf7\xc4T\x04\
+0\x8a\xc7\x9c\xcby\x8e\x98\x02`\x9d\x0dG\x87\xad\xfe\
+\xa8\x12\xf5\x93\x97J\xbe\x96\x83*<e|`\x0c-\
+\xc0\xb3\xd4\xf2\xb5\x22\x10\xb1\xc3\x185\xbd\x86\xe8\xf4\x19\
+\x96q\xf3\x01w\x06\xe09>$l-<\x95\xf8r\
+\x16t\xb6g\x0c\x9b\x0bUg\xdb6S\xa2\x8a9@\
+C\xe6\xa1a\xd3\xebG\x16q\xef\x1a\x0fI\x1cT\xfe\
+\xa1\xa5\xce\xfd\x96\xa0k\x01\x01\xf4\xcb+\xc5\xa1\xe2\x94\
+\x13\x128P\x00\x90\x9fe\xe1\xabZ\x80; \xa9\xe2\
+0\xfePk\x02-\x14\x9a\x01Z9\x8d\xc5&\x1eO\
+\xa4\x1a\xf3/[R\x14@\xabU\x9dx\xb0\x82\x1c\xbf\
+h\x1f\x12E\xcf\xd6\xbe\xbd\xe3\xe9\xc3R\x84\xe5\xd8\xa4\
+\xea\x85\xe3?b\xb6u\x8e\xaa\x0a\x8d\xde\x17\xe3\x11\xb2\
+\x15\x00\xc2T\x01C\xf4|<\xb2\xa1\xd4q,*\x86\
+.\xa8\xedY\xff\xfeJ\x15\xaf\x03\x05Bf\xc3\xd8\xa8\
+^\x05n\x12R\xef\xf7\xd3t\xec\xa8\x18\x0e4\xc8k\
+V\x1agD\xfb\x1e\xcd\xf5\x08\xe0\x05\xe0\xa8<(\x17\
+*\xe8\xd4\x99\x89\x8f\xc4\xe3\x19\x9a\x83\x0a\x959\xc2\x88\
+kd\xc5\xe6\x22\x8d\xd8V\x884\x1d\xf2[\xc6u\xc5\
+\xbb\xfe\xa8\xe9\xe1W\xd9\x14\x08r\x90\x02E\x81\xb9\xcf\
+\xed@\xe3hN\x99\xc9y\xfb\x8f\xeb\x13p:\xf8%\
+\xf8\xe1\xe6\xae\xd5\xfc]\xef\x9b-\x01TIK\x14\x8a\
+\x88O\x22K\xd5\xf3k\xe3\xa8\x9c\xe8\xb1\xf4\xa5\xc5\x80\
+\xc3\x95\xb8\x1d\xbfT\x98\x86\x9f\x85M\xdf\x1f\x9b\x08\x99\
+\x04\xcfX\x0c\x95\xdb\xd7eK\xca\x87\xf3\xc0\xc9\xcaa\
+\x1d\xdcT\xac\x05\xec\x9f\xc9\x0a\xd1\x11\x0b\x85h{\xe1\
+\xb0F\x85\x97\xa8\xca\xcf\xb2\xe2-\x90t\x00J\x04\x05\
+^\xfe^R\xf6\xa9`S\xbf-\xe0\x8a8\x94D\xf6\
+\x9b\xdb\x13\xb7'\xce\xea\xa9W\x1b\xaf\xb6Vv\x8az\
+\xd8U\x1eU\xb2\x88\xf4\x05?af(d\xc5ix\
+|XS\xa1K\xe4t{\xa6\xb05\xe0B)\x1c_\
+\x15\xb6\x8e\x85\xdayi\xd8:\x8e\xd0\xbc`\x01VU\
+\x98!\xa1I\xd1%\xca\x89IP\x81a\x02U*\x83\
+%V\x97\xa2bu_\xb2\x12T\x14@\xeb\x13\x80(\
+!TIv\x10\x02\xda\xfc\xbf@\xd7>q\x1d\x12A\
+\x897\xf1?c\xd0Pvi\x1a$E\xb6z\x10U\
+v$\xc8\x00\x09\xc0\x97\x1e`\x80\x92\xcf\xa5\xc2\xa8b\
+\x89!\xa3\x05F\x82\xcb\xe1\xabXK\x1c\xff0\xc5\xb4\
+\xf2\x80\xaa\x03W\xc0\xa5gN%\x0euMe\x00%\
+SkQ\x1e\xd4\xd5\xd3.a4N\x08p\x94\x95\xe7\
+JX\x05f\x0e\xc0n\xecX\xac\xe2m;\x1e\x95\x9f\
+\x86\xb8\xfb\xe2\xb7T.\xf9\xaf\xdc\xd7\xa5I\xc2_\x08\
+\xd0\xb4N\xa9\x0c\xb8\x7f\xf6\xb5\x8a\xbaD\xc6}\xa0\x06\
+\xef>Kh\xf9\x0d\xe2n\xce5\x95\xa1nj\xc0~\
+j\xcd\x9e\x97\x00\xd8}A-Ty\xa6\xd2\x9e\xfb\xaf\
+*G>\x9f\xeb\x01\x18XOz\xc7\xf5\x8e\x0a\xcc\xf9\
+\x1d\xeb4\xf7\xd1\xf0\x92\xb05Q\xabq_\x02\x1e\xad\
+5\xd6\x89s\xd6\xf8\xa0\x0cX\xab2\x8dy\xf0\xe9\xb0\
+F]:\x01\xce\xaa\xa8g\xc2]\x14\xd2l\xc1*\x80\
+\xc0\xe7L\xe0}\xf8\xdd\xb0\xe6<\xf6\x5c\x00\xbe\xa9\x8d\
+@\x83\xa4\xce\x1b\x14N\x81\x92\xeb\xf9EXSqV\
+\xf1\xcc\x16\xa9\x9a\xa7,@\xa3Z-\xb1O\x80\xaa\x18\
+G\x02B-u\x9e\x0b\x06\x03`\xd2\xbeN\x0a*\xf1\
+\xba\x02z\xf8G\xe2c\xc7-c\xcb\x5c\xef\x0c\xb3\xff\
+\xb8\x89#\x92\x89\x13\xc4\xf8\xa0\xc6\x175\xf6\x1a9E\
+ \x01\xf4([\xcc\xe2\xa8\x1f\xc9\x16F\x89\x03\xbf\xa7\
+\xd5I\xfc\xd13\x01\xb3el\xf3\xf6\x04\xacT\xe41\
+\xca\xb4\x12\x10Y&\xbe\x95\xcc\x98\xd20\x12wa\x5c\
+`\xf6\x88C\xeco\x7f\xb7\x137$2V=\xc1\xf6\
+\xf5;\x17\x11\xd4\x02>\x88\xf7\x02\x1e\xec\xcb|\xce\xa5\
+.\x9e\x89x\xf9\x17\x0c\x01\x00\xe3\xb6J9\xbf\x9d\xf2\
+\x9f\xfej\xb8M\xd8\xf4\xfa\xb8\xb0\x99\x018Y\xf3\xb9\
+\x15^\xb4\x06Y/m\x0b\xe5\x9eF3\xe8\x05\xd9b\
+\xa7\xf5G\xdc\xfc\xd1l\xfd\xbcL\x02\x22\x12\x02\x0c\xa1\
+?[\xc62\xd6>\x16\xd0\xbb\x8f\x0a\x10\xc6p\xff\x7f\
+t\xdd\x0b\xfcuk56\xfe\xbd\xe6\xef\xe9\xa4t\x8e\
+$\xa4\x13JE\xe8,\x89r\x96\x88\xa2TN\xa5\x10\
+r(\xe7C:I\x84W\x8a\x7fo\xc8\xcb\x96\x0a\x11\
+\xca\x9b\x94$\x85\x9c\xa2\xa4\x92v\x07\x1d$[\xda\xd5\
+\xdek\xfd\xe7\x98\xf3\xfa\x8ey\x9b\xdb\xfb\x1b\x9fO\xab\
+\xe7\xd9\xbfg\xad\xb9\xe6\xbc\xefq\x8fq\x8dk\x5cC\
++\xa7\x04\x84\xd8`\x12\xac>\x1f%&\xc6u;_\
+\xf7c\x98%\x8e\xfc\x1e \x09\xe0\x15\x7f\xe1\x5c\xe9\x04\
+X\xc2\x12\x80\x86\x88iS\xbf%8\x98~\xceS\xe7\
+\xac\xf8\xcas\xdc\x8d#\xbc\x14#V\xfc\xcaO\x12g\
+\xbbK\xd9\x10\xe7\xfb3M\x8f0\xbc\xfa\xf3\xfc{y\
+\x04\xcd\x07-%\xe2B\xa2t\xce\x89\x00\x85\xa7\x07\x95\
+\x0d~Z|\xea\xfe\xf1\xd7\x18H\x0a\x86\xbe\x9fsS\
+\xe2\xef\xfc\xb4n\xad/\xbf\xef\xbcI\x9e%\xf1n\x7f\
+I\xdc<S\xd9\xb4\x84\xf68\xc0\xbb\x97m-\x14\xd3\
+\xd7\x96m\xad']\x91\x0e\x10xv\xfd\xb2\xa1\x87\xfe\
+\xcfO/\xaf\x16\xd7\xe3C\xcb\xb6\xe7e\x8caS\xcd\
+\xc3\xd8\xc4\x10hF*f\x5c\x98\x8d\xb4\xae\xf8\xf7\x9e\
+\xaeq\xad\xb2AD\xfe\xeee[\xab\xe9\xf1\xaf\xca\x86\
+\x049\x9a\x1d\xd3K\xca6m\xaf\x06t1\x09\xf8\x8d\
+0Y\xb5\xec\xf69-\xbe!\xa6J+\xc6>\xc6(\
+0\x15!\xfe\xbd\xd5\xf7\xc5\xfdZt\xe5\xaf\xf6\x9f\xca\
+\xbe}%\x0e\x01\x98)4k\xcd\x7f\xca\x0a\x0c7P\
+\x08XI>\xd7\x22\xcb\xfc\xd1~\xdc\xbb\xfdc\xaa\xc2\
+e\xcb6 \xfd\x1c\xf5\xefE$\xefQ\xc3\x17\x8b\xfa\
+\xe0\xf1\xa2\xb28\xfc\x1bm\xa2+\xc7/\x9d\xed\x1e\x09\
+D^\xb5\xcd\xff&\x92\xb4\x10\x1e\x9e<\xf4D\xfa\x11\
+\xb8\x0b\x88\xf6T&\x81\xa3\x00Q\xe0\xb5\x9f7\xed\x0b\
+\xef\xc7\xfc\xa8\x90d\x03\x1d\x9eTj\x04[\x0f\xe9\xe9\
+5\xb3\xfd\xe3\x90\x80z\xa0E\xe8xq\xbe\xff\xeb\x07\
+\x95\xc7\x04\xd2\x8dDV]\xf9Qq\xbc\xaf\xcf\xfb\xfc\
+\xdd\x1088\x08\xeb~UB{\xbf\xd9\xee\x9f\x80\xe7\
+\x0e\x09\xfcn?h\x0fT\xc2\xf79\xdb\xfd]\x8e\xf1\
+\x1b\xc6q\xdf`\xa0\xbcV\xef\xf9\xf5\x93 \xdcz8\
+\x18\xcb=\x5cn\x00$\x1c\xe0*W%\xc2\xf4AY\
+X\xaf\x19\x02\x04\x0b\x8d\xe3\xcf\xbc\xcav@\xf9\x1e\x90\
+\xb9N\xe8\xa9\xfb\xaa\xdc\x07\xc0\xe8\x8a\xab\x00\x9bC3\
+/\xf4\x17\x0f\xbft\xf8\xa5\xa1\x12xQ\x0e\xea\xd7\x04\
+)\xfb\xec\x15\x80\x98~|\xfa\x89i^\xe0\xd3\x9d\xcb\
+\x96\x80a\x1d\xbb\xa7\x97\xfe\x99e\xdb\x81szo6\
+\x00\xc7\x98\xc0Ho\x8d\x83\xa3[\x02$\x82\x12\xd2\xef\
+]\x81\x82\xd3\xbf\xads2O7-[\xa85kB\
+\x0b\xb8\x00\xd4\xf8\x918\xfd\xdfU}\x19\x03\x02\x12>\
+}s\xd9R\xd9X\xbf7\xcaX\xae\x0fU\xb6)\x94\
+?\xbbX\x8f\xdbl\x11\xbf\xbc\xdf\xe1\x5c\xd9\x16\xf0N\
+7.\x1b\xa8]/[\x13\xc2\xf9\xb7\x97u\xde\xbd\x8b\
+*\x00\xb7>\xdd\xaa\xd4\x95\x05\x98\x12\xd3\xb3_)\x9b\
+\xdf\xe7\xd9e\xdb\x98\x17c|\x1a\x00\xf8\x87\xb2-1\
+j\xca\xef}\xca\x86\xcaB\x90\xf1\x0e\xe4\xb5$\x10\xd9\
+\xd3\xea\x13\x04\xb2\xc5U\x8cwzT\xd9@\x8d\xdf\xf7\
+\xe4\xf3\x13\x9e\xf7n\xfaD\xb7(h\xddQ\xf9\xf5\xdf\
+\xcd\xb7V\xf1#\xba\x04(\x00\x04\xf2#D\xf2\x88\x8f\
+q\xa8\xfc\x91\x8a\x87D\x1f\x00!!u\x9d^\xfdw\
+\xe2,>?\xfb\xcd}i\xc0\xcbu\xa2`\x1b\xd3\x18\
+?\xabw\xb0ET\x89W\x09\xa0Q\x96\xd3\xab\xd8\x09\
+\xb4\x80\x91\xdf\x02|J$P\x83Q\xdc\x1d\x8c\x02&\
+\xda\x19z\xe6\xf7\x1a\x03\x80\x1c\xdf{\xaf\xd9\xc0\xbf\xbb\
+\xcf4\x15\xb6J\xdb\xfa\x1c\xdcG\x94R\xa2I\x02O\
+b>\xd6\x05@\x07UZ\xa5\x99\xe8\x99\xfb\xb9\x9f\x12\
+\xc3o\xbbN\x0c-\x89\xa5@\x8d?\x0e\xc5]B\xd3\
+\xe2|*\x9a\xffU6\x04\xf2\x9e\xbb\xfb\xa7\x82\x84B\
+\xae\xa5\xcc\xf7\xf7yZ<2\x16\x0a\xe0t\xf8@\xd9\
+\xbco\xefP6\x04b\xa94\xb5hS\xe69\x9f\x1e\
+X6\xccw\xa6\x92,\xc0P\xe9\x95@\xeb\xa97\xfe\
+.\x80\x80\xd6\x0b\x9a#\x98\x05\xd3'\x95-=\x99\xeb\
+\xbc\xf9\xa8/\xf7\xf9\x1c\xe6PW\xf0\x01qz\xc9\xa9\
+\xd3_\xaelcp9'\x8f/)\x1b\xa8\xc1\xa8\xd9\
+\xd4\xfc1\x22\x88\x92Z\xc7\x00\x1b\xbd\xd9\xfe\x9d^k\
+\x09\x92J\xb6u,.\x90\x18\xa3~\xff\xc1\x9a\x90u\
+\x05\x1bU4\x15\xa9\x16S\xb4\x1e$8\x00\xf5\xeb'\
+\xfe\xe1GUn|\xae\xf3\xf3\xcfR\xd1K+OS\
+\xe2]\x8fD\x08\x80\x068R\xf1\x11gI \x00\x1a\
+\x11\xe1;\xef\x19\xf1\xd7{\xcd\x0e\xfbHBC\xb3\x01\
+\xb0#n\x13\x0f\xd0v\x90\xf0\xe7<\x03\x08uK\xcb\
+\xbe\xa7\x1c\xe0o<X\x80\xddf\xf6\xa5\x95\xb2\x13B\
+\xd7/\xae\x0b0\xaf\xc7y\xfa\xac\xb2y\x9d<\xae\xec\
+\xd2\xda/M\xa9\xb7\x1e\x01\xca(\xd1\xe9\x89\x9e\x9eQ\
+604\xcc=W\x11\xe4\xaf\xef\x14F\x17j\xfc\xef\
+\x84y\xf3C\xeb~o\xea:\xe6_\x18`\xd3\xcd\xcb\
+\xe6\xeb\xfc\x8d\xb2-\xb1\xa1-\xd4\x8c\x1d\x00\x0e?\x11\
+\x00\xaa5)0k\xf5\x84K8=o\x09\x85\xeb\x16\
+W\xabl\x8b\x03h;\x00~1\xf4L\x15Q!\x0d\
+\x80\xd8\x85\x0e\xd2\x0a\xa6\x86`\xd8\xa2B\xd3j\xf1\x1c\
+TX%(9\xb7\xbb\xa7;\xf1O\xafC\xeb\xd2y\
+\x0bx\x8a?\xee\xf8\x5ck\xa0<!\xdf\x838s?\
+G\x15xq\x98\x0a\xadB\x99JuZ\x09:aS\
+\x08\xa4\x1d\xe6\x8b[\x97\xee\xb3}\xbe\xd7\x22s]\xce\
+\x17\xe7\x0e\xa6\x8e\xef\xc5\xdf\xff?\xc6mw\x81\x8d\x98\
+3&\x02 \xc4\xfe\x02le\x1f\x1f_W\xb6i\xb4\
+4U<\xeb\xe6\x92w\x94-\x0c\xee\x0f,\x0c\xee\x14\
+\x10Z\x046-\x80Z\xba\x01\xa9\xd3\xcf\x94m-U\
+\xdd\xa3\x1fm\x85f\xb6&q\x06\xf8`\xd6t\x85^\
+\x0f~\x80\xdd\x1e\x03i|)\x11\xc60\x8a\x8e\xd7(\
+\xdb\xfc\xde\xf13\xca\xe6\xd7\xb7\x96m\xe7\xae)>\xd3\
+\x8f\x96\xcd\xff\xfd\x93\xca6u\xfc\x9e:\x11&+\xa0\
+J\xebe\xc7\xe5Zv\xb4\xe2x\x1e\x807\xeb\x04\x03\
+\x14@D\xf3\x05\xf3NA\x0a\xf0/\x0f\xc9\xbe\xe8\xf5\
+J#\xc1\xf9\x99s\xb2\xf3O\xc0S\xc6\x9b6\xf0\xa8\
+5K\xdc\x92<\xb9\xcf\x05\xcc.q\x5c\xe2\xa4s\xcb\
+\xd7\x1c*\xde=\xff;\x8e\xeex~\xd96\x9e\xcb\x18\
+\x8d\xe5F\xfd\xdcP\xb1\xacy\xbcO\x1f\x02,\x07\x9a\
+\x0a\x12\xf5\x7f\x8e\xcd\x01\x0bys\xe0\xd8\xf8\x90d\x1b\
+\xc4\xfb\xd9P\xc6\xae\xfcG\xc6\x85\xf8\xc2\x1f\x1d\xc0\xc1\
+A%\xd1\x0b\x85z!\x9e\xbf \x88\xd6-7\xaar\
+k\x11d\xbc\x87\xf9\xb6\x0b\x85\xe8a\x03\x12[\xc4\xc7\
+\xfb&\xc0\xfc\x9a \xa9z\xedn;,\x1c\x14\x16S\
+\x0eT\xe6\xae\xb3\xa8\x12l\x0e\xd9\x03\xa9c\xed\x18\x07\
+q\xc3\x81\x22\xac\xa7~\x0c\x8c\xc7\xfbXi\xc8;\x12\
+\xc0\xfc\xc7nL\xe1\x14\x95\xd2\xdf\x1d\x10\xc5\xbd\x1a\xae\
+^_\xe3\x18i%8\x18\xf6\xaa\xa6\x98\x02\xc47\xa8\
+\xc9C\xb2\xdf\x9d^\xba\x1fX+\xc9\xe7=r\xdd\xc0\
+\x87\x17\xac\xaa\xf9\x8d<;\x98\x05\x02\xcfK\x0fj\x02\
+\x00\xea\xc8\xd3\xa3\xcb\x86\x04\xde\x01\x0e\xf0\x08Eh\x91\
+\x5c\xbc\xe6@\x11sP;P$,7\xcb8)\x09\
+\xd7\x95\xd7\x96\x95\xd3\xa3O\x8f9=f\x11;Y\xd5\
+\xa2\x1f\x1ef\xc3\xe3\xd7\x8dW0\xce\x02\xe4Xg\x09\
+\x88\xcc\x91U\x89\xd4;>\xbd\xbfl~\xbdr\xd9\x86\
+\x14\xb7:'\x8a\x0e\x95\xe0$\x00\xd3w\x97\xcd\xaf\x0f\
+/\x1bz\xf1C\xc9\x9f^\x5c6?\xde\xef+\xdb\xde\
+\x7fv\xdf\x17\x1f.\x1e4\x0bP\xffC};\xbc\xaf\
+l\xfe\xfd\xbb\x97m\x07z\x8f\x7f\xa1\x02\x1c\x87\xae\xe7\
+\x1fs\x86\x08W\x8b\x13\xa5\xd7\xcb}8\xfeN\xd9\xe6\
+`!\xcd\x02p\xaa\xf6\x0b\xbe1\x1f\xa0\xa7\xaf)\x1b\
+z\xb7\xf8\x01\x89/\x87*!\xd1\x0b\x0d\x08Pi\x97\
+`\x0a|$\x8e\x80\x01\xe2{\xa6\x05p\xc0\x02\x13\x15\
+4\x9a\x01I\x0c\xf4&\x1bC\xd7\xa2B\x0ev\x81\x89\
+\x83\xda\x14\x0a\x096?\xe8: \xbe\x02g\xd7\xa5\x82\
+\x0d\x80 f\xe7\xfb\xa9xB\xce\xdd\xb7\x88O\xb5J\
+85\x5c\xe3\x7f\xf4rc\x22\xa9\x80\x06\xa8\xe9\xcao\
+\xae\xbbU\xdc\xa9\xe3'\xc06\xae\xae\xc5-\xb3\x1e\x9a\
+j)\x00\xe6\xa7\xf7\xe2\x7f\xfc?\x86\xd3^\x9c\xcf\x7f\
+\x07\xd0\xb8\x1f\x12&\xfb\x9d&\x80\xc0\x89\xfa\xfd3\xca\
+\x06@T@f\x1c\x9cV\x04\x80\x86V\x0c\xd4\xf7\xdd\
+XD\x95\xc9V7\x07l\x01L\xad7\xd7o\x7f\xb8\
+n\xea\xc3\xa9\x146\x93C\x00\xcc\xef\x00\xaa\xd2\xba\xd1\
+\x14Z\x01\xa6\x00\x95\x1a\xbc}\x82Rh\xce\xb1\xb9\xed\
+\xb9\x0f\xa7\xeb\x94m\x09F\xaf#\x09Cz\x97\xfb<\
+5F0s\x95{\x1d\x85\x01\xd8\x01`\xc6\xd8M\x9f\
+Y6T\x22\xec\xd3\x04\xf6\xd3\xdfL\x7f=\xfd\xf5\xfc\
+\xf9\xaf(\x1b*U_Z\xb6\xed'\x80\xe2\x1e@\xe9\
+qM\x80\x89\xdc\xb7\xf9}g\x1b\xc6\xc4%\x91\xe9V\
+\x96JL\x9e5\xcc{W\xb1K\x0bK\x8bob8\
+D\xc4\xafE\xbc\x00\xcb\xfc\xb2\x80\x9ch\xdfSB\xf5\
+V\xe9\x89H^S\xadUf\x89\xc8\xa9@\x09\xc8\x00\
+\x86\xd9\xdf=\xde\xd2\xbe\x0f\xe3\xa5{mi\xbd\x82t\
+C\x00\x00 \x00IDAT\x9d(\xa0`N\x18S\
+\xe9\xdf\x03\xd40<v\x09V\xc7\x19\x80\xfa\x17\x1e^\
+tx\xd1\x02\xd0\xae\xe7\xa4J\x95\xb8\x85?\x03\xcc\xd1\
+H\x00t\xee\xfd\xac}'>\xf0\xef\xc5s\xae\xc7\x14\
+\x84\x88\x89a\xc4M\xb7)\x1b\x98*\xf6\xbdJ\x19\x7f\
+\xc1\x7f\xd8\xaf\xa9\xe8M\xff2\xbdq\x9a\xf7\xc3\xd9\xad\
+\xcb\xb6\x02E\x8f-\x94\xf0x\xee\xe6\x90\xa7\x07\xbc\xcf\
+iSt\xb4\xc0H,\x03\x80\xd9o\xed\x1f\x01M\xee\
+\x0f\xa6X\xd4\xe8\x9ba\x06@$\x86\xac\xa2\xa8w>\
+\x95\xda~\xee\xfc\x8b\xf8\xe8\xb2\x89\xf3\xc4a\xfe\xde\xba\
+\x91P\xf2O\xe2\xbf\xfd\xd4\x1d\x15Ebxz\x9e\x01\
+\x08\xb4\x18hw`\xf0\xa5b\xedz{\xec\xb2\xc4\xc8\
+40\xc0\x14U|j\xf0\xd9\xafM\xa5\xe7\x0f\x8c\xf1\
+\xd4\x82\x15fM\x8b\xdd\x02|\xf8A\x22g\xa6\x88\x10\
+\xd1\x04\xf0K\xe4\xe5\x15>G\xe2/1\xc3\x08\xca9\
+\xb2\x14\x04_3\x9c+\x80\x14\x95[\x09\xb9|D\xef\
+7\x06\x81J\xb7\xf3Q\xe1k\xaf\xbd\xb5\xab,\xf7\xbe\
+\x15G\x00\xc6\x00\xf1\xfc\x85\xf3\xd1\xf5\x06\xd8\xed\xc2\xc8\
+_\x94\x0d\xc0X\xc6\xbf6\xe5<\xd7s\xfc\xf9\xb2\xad\
+e\x94\x18r\xfb\xdf\xec\xd7\xd3\x9f\xa5b\xbf\x8f\xc7\x1f\
+\xbd\x9bre\xca\x8a\xc2\x8d\xe9\x22\xbf\xb8\xb6\xf2h\x99\
+\xebVQ\xbd\xf7\xc4\x98Q\xd9\x892b\x16\x07x\xd6\
+\xb2\xd2\xe2\x96\x98\xd39\x1f\xa6\xcb\x95m\x80\xfb\xf1\xdd\
+e\xf3\xebe\xcb6\xa0\x0dS\x0b \xd0\xf9\x9dV\x86\
+0\x17\x1aH\x96\xc7\x00T<\xdf\xdc\xf7\xde_\x98`\
+Zw\xaco\xeb\x14\xd0\x96s\xa2\xd7U\xa6 \xf4T\
+\x89\x00\x05\xdd:\x11\x0d\x00b\xa3\xcd\xd8\xfb\xd4\xb2\xf9\
+\xcf\xdf\xbeNyiF\xa0\xf3)\xda\x18\x87O-\x1b\
+\x00\xe6\x14\xf2\x9aA\x80!\xf4\x1be\xb5\xcd\xaa\x93\xe6\
+\xbb\x87\xb1G\xa1v\x1f^[6Pi\xa2Z\xba$\
+\x18\xdf6\xa8\xfc\xff\xcd:\x97\xfc\xf0\xb6\xd9\xde\xbe%\
+*\x1d\xd0\x10{\xb9GzT%\x9e\x0eX\x0e\xcd\x81\
+b\x83\xec\xc7K\xed)2\x80\x00\x89\xc3&F\xb5\xfe\
+\xbd\x03\xcc\xc1D\x9c\xac\xa8Q?;\xf4\x1c&\xa0n\
+\x0ae\xa8?-^W\xb8\xde\xaf\x0e\x81\xff\x07\x16\xd9\
+\xbam\x83\xd7r\x18\xe7c;\xb08\xf2\x7fZ\xe4\xed\
+V\x07~a\x02\xc0\x0f\xcaA\xf7\xa1C\xc5\xbf\xc2\x84\
+\x9b\x0d\xf7\x87C@\xe5\x10pr\x8c{5\xea\xfd}\
+\xf1\xef\xbc\xba\xberc\xd7\x18\xa8\xaa\xe6\x9c\xabt\xa3\
+J%P\xee\xc0I\x05+\x8e\xd6\x18:\xc8\xd2\xbcj\
+.w\xb8\xdc\xb6\x81\x0fw\x0c5\xdaF\xb1\xa1P\xc9\
+\xcc\xd5\xd4\xabN\xac.\x95\xadNd3\x8eozQ\
+\x12\xe1T\xdc\x9b\x82|\xff\xb2\x8dip\xfa_I\x10\
+\x13x\xf4X\x98PI\xe7\xe4`\x9dS\x1dQJc\
+\xf2Z\x14$\x07\xc7\xf1Ye\xcbs\x5c\x9f\x879\xef\
+q\x88gw*\x1b\xc6|\xe4\xba\xa6\x0b\xca\x06\x06\x00\
+u\xee\x88\xc9\x11\xdf@y\x9e\x9eV6 \xfb\xa9\x94\
+\x9d\xdd\xabl\xfe\xef?U\xb6\x05\xc04\x0e\xa6\xdb\x95\
+\xcd\xbf\xf7\x95e[\x02\xd0=\xa6\xc6\x91\xdc\xbbl\xe8\
+mN\xc22=\xb5l~\xfd\x84UuY%\x98h\
+L\x03)\x1c\x97@\xc1\x1c\xe6\x17\x96\xcd\xf7\xe9\xd7\xca\
+\xe6\xf7\xf9\xbe\xb2\x0dq\xa6\xca\xda\x94\xc6\xb4Z\xf4|\
+u\x22@\xe6\xa9\x87\xe1\xd0\x88\xb6\xcf\x13\x18G\xe4\xa6\
++a\x02\x10\x15+\xc8;\xa6\x86\x00\xd4\xba\x95\xf0\x03\
+\xa0vS\x02P\xf4\x9a\x82\x9f\xf5\xd8\x80\x03q?\xfb\
+\x9eX\x99\x03A%\xd1>\x92h\xea}\x15\x08H\x04\
+U\xca\xf7*\xb3\x00\x828\xea\xae\xbcm\xf3\x8dW\xf1\
+\x9d\x88Gu\xc5L/\xbc\x84\x13\xf0\x92\xf1?]\xb1\
+5>Ne?\xfea\xbaj\xd9@\xd9\x948\xa5\xa5\
+\xa5\x13%\x01\xa1\x8a\x15\x11ITY\x81\xa8\xe7\xc2\xaf\
+S\x9dO\x22\xd9\xdf\x93\xbf\x92X$\xc1\xea\xc0\x99\x16\
+\x09\x0a\xb6\xdeo\x01\x01\x06\x82@X\x22\xe6:L\xcd\
+\xe0\xcfT\x9cUJ\xad\x07\x95N\xaa\xdeZ\xc6<w\
+\xd4c\xda\x01\xae\x93_\xa5\x05\xe1\x1cM\xe2\xdc\x14Q\
+\x80-?\xe8|\xc2T\x01\xf8\x06\xb1\xef\x00N@\x8b\
+\x22l\xac^\x02-\x22Z\xd4\xf1\x05v\xd3K\xcb6\
+\x8a\xe2\xf1\xaeeC\xe5\xc8\x14\x0c\x89\x05\x91\xa2\xf4\xa4\
+w/=\x7f\xaeR\xfb\xca\xb2\x01\xf8\xa1\x91!\xc0\xe0\
+_\xdeP6\x8cy\xc3D2\x05\xc4\xf7\xa1\x19\x10\xd5\
+\xe2N\x90\xc3\x9cju\xe9\x8c\xaf\xed\x00N\xc0\xadB\
+Z\x00\xccm3\x9e\xea\xc9\x9b*\xb8\x04\xa0[a0\
+\xe3\x88%Z\xe7\x80\xbf\x8c\xdd\xea\x84\xc2>|Q\x12\
+\xe7\xa8\xda\xb7\xa81\x15\xf3PZ;q'\x1ak\x8a\
+\x82q\xafzP\xb3n\x00l\xed\xf7\x00\x87a,\xa8\
+\x84\xb7\x06\x13\xa0B\x82\xb0c@\xb5\x1f\x14?Id\
+\xf8\x17\xf1\xc31\xeb\xf6\x1dy\x1fs\xbb3\x0e\xb4[\
+.0\x09\xf6@\xab\x0a\xa8\x1f\xfeX\xbc\xc5O\x02\xb4\
+T@\xdd\xff$\xc8\xa7\x9f(\x9b\xff\xfcM\xab\x06N\
+S\xd2]\xb78\xc7~\xf1\xbe\xf9\xde\x0dL}\xf6\xca\
+\x000\xf5\xa6\x01\x00\xf1g\x02\xeb\x9e\x1a\x92\xf8s)\
+\x5c\xfd\xfa\x0607E\x1d\xb5\x17\x10\x10\xcd\x8b\xa6\x9a\
+\x9b\xdb\x8d\x01\x11\xe0\xb1\xcf\xc5\x07\x97\x0d\xcc#\x94b\
+\xf1H\xe6\xdc\x0b\xf4O_T6\xc4_\x12\xf77\xa7\
+2M,\x0fs\xcbs\xa0q\x22>\x96\xc8\xeeE\xca\
+\x12\xf0\xf7T\x0a\x89\xb3\xca\xb5\xca\xffw\x97\x0d\x89\xb2\
+\xf5,^S\xa9\x0f\xf3\xaa\xa9\xd3\xda,L\x05\xa2\xd5\
+\x93\xfb\xc3\xef\xb4\xc6A\x98<Uv\xa9\xc2K3\xbc\
+\xf8oq0Q\xd90%\xda\xef8\xbf\xf8/\xf7W\
+b\x05H\xf7\xfb\x80P\x7f\x16\xef\xf9{\xe7\xb2\xfb\xea\
+s\xf9a\xf7\x15p,\xef\xc0Hs\x1e\xd2Z\xe0?\
+\xf6\xcc\x22\x7f\x96\xd8o\xfbq\x15\xcd\xa6\x9d\xa1%\xcc\
+\xf8?\xe3\x95=\xa7O/\x9b\xff\xfb\xe3\xcb\xb6V,\
+@L_\x8f\xd6J\x89i*\xd2\xdd*\xf0Oe\x9b\
+\x7f;\x5cce\x9a\x9d\xce/\xdbZ\xcd:\x9e\xff\xe5\
+\x00>\xfc\x01\xb1\xe1\xfd\xf8g\xc0 \xe0\x91\xc8-f\
+Z*\xe8\xcdd\x22J\x1d&\xb9\xc2\xb3\xf5}\xba}\
+\xd9\xa0q\xa0\x90\xf3\x9a0\x9b\xaf4\xa7\xc1W\x1a\x0a\
+\x1d\x80\xc2\x1f\x9e\xbd\xfb\x0f\x0f\xcc*\xd3I2\xc5\xa0\
+E\x8e\x89\xcc\xda\xcfZ}\x00\xe6\xf21\xebR%\xde\
+\xf4\x06\xfbH\x9e\x191\xca\xd6\xc62U\x05C\x1b \
+\xaf\xf0\x0c\x10\xc3\x08\xc0\x8c \x82\xba\x9fJ\xc4\xcf\xca\
+\x0b\x89G\xfeB\xd9\x10g\xa4P\xdb~L\xbc\x9a\xfd\
+\x7f\x8e\xfaw\xcfY\x0c5~y\xf0\xff\xb8-@\x94\
+w\xad\x01K\xb8\xf0\xb3I\xe0\xaf8TdBa\xee\
+\x9e8\x15\xa8\xb7v\x8f\xe8z\xe0\xfc{6B*\xb7\
+s\xf0\xb3:\xfe1\xb1\xbex\xa8X\x0b\x98\xf7\x89\xae\
+\xc4\x9f\x98\xde\xdb2\xe7\xfe\xa6\xa1>\x08\xc0\xbf\x22\x22\
+\x1d?X\xb69\xdc\xe3\xf7\xcdV\xd4\xc1\xcfY\xc7\xe4\
+,\x14\xc9\x9bd,\xd7/\x0e\x0b|lA\xf8\x8f\x81\
+Y\xa0r\xee\x80\xd2\xf3/!\x10\x00\xdb\xf0\x90@\xad\
+\x0c\xc4\x039\x5c@\xc1^%\xdb\xdf{\xf0\xae\x87#\
+2\x0f5\x0bl\xa90]/\x09\xd0u\x87\x84GE\
+B\xa0\xa1\xf7\xd3\x01'!\x97H\xa8\x9c\x01\x0c\xa8\xee\
+?m\xb1\x16\xbd\x99~\x7fz\xe6\xf4\xcc\xa1\x15 c\
+\xed\xce{\x5c\x02\x19\x08~\xbe\xbf\xf7?\x5cP\xb6!\
+pMiG\xa5\xbf~\xd9\xfc\xfa\x11eK\xe0\xb0\xf6\
+\x80kQx\xf0\x1a`\x1f\xbf\xbdl\xa3@\xb7\x0a\xbf\
+\x0d\xa7\x95\xc3\xbcY\xaa\xc5\x01\xb0T\xa0N\xdfU\xb6\
+U8Q\xcd\xb4\xca\x9c\xbd\xb1l\xdb\x88T\x80\xa7/\
+-\x9b\xff\xfb#\xcb\xb6\x9e\xd7>8\x01\x0b\xcb\xcf\xfc\
+\xf7O+\xdb6\xe2\xf19e[O\x90\xc4\xfc\xec\xf9\
+e\xf3\xeb'\x94\xcd\x7f\xffae\x1b\xf2>]\xa5l\
+\xe8\xa9\x14\x08Z7\xa1B\x03\x10\x1a\xe9\x17\xa0\x06p\
+\xe9D;\x8e\xbf\x1d\x9a\x04H\x00\x1f\x07\x8d\xba\xef \
+?^\xb1l~\xbf\xef,\x9b?\xef\xd7\xcb\x86@\xc9\
+z!\x16\xe9\xfe\x87A\x81\x0a\xdbc\x15!\xa0\xc4O\
+2\xae\xf0\xf4\xec\xb2\xa1re\x1f\x08\x18}o?Z\
+^\x04<\xa8Wz\xf2Un\xf5\x9a\xef\x81HT\xe5\
+j\xe5\xb9\xdf\x100\xe8\xa5\x04 P\xa5O\x0f \x7f\
+\xd2\xfe\xc7\xc1\xa1\xa2`\xdf:p\x04,\x12Y\xcfQ\
+\xa2\x10\x91\x9b\xf6+~\x04.*\x80*h\xc4^\x00\
+\x00\xc6\x1fJ\xd4\xcc\xf9\x06\xf0P\xd3G\xf9F\x1dC\
+eN\xa5\xab)r\x02u\x07\x8d^\xc9j%{\xf4\
+\x10\xc0\xb8/\xfc\x8dsF\x05K\xe5Q\xa0i\x9e=\
+\x80X\xa2\x11\xc4\xbb[b\x9c/Z\x07\xbc\xbf\xde\xfc\
+\xdc\xd7\xbeoZ\xbe\xf6b\x8a\x12#@\xa9y\xbc\x98\
+\x04D\x86$\x0e\xee\x93\xf7\x07h$\xc0\x02\xd8\x98\xd3\
+,Pn\xbf(\xc0U\x99\xb4\x0e\xad\xaf\xdc\xc7fh\
+\xe8qt\xdf\xae\xb3S\x15W\xb1\xcfy\xd9\xad<\x19\
++\xd9-\xd0\x02\xde\xf4v\x1b\xdf\xdb\x81n\x02\xc2\xd3\
+\xa1l\x18Kh=\x87\x91\xd5\xcc/\x14\xe0\x00\x8e\xc7\
+\xaf.\x1b\x00bS,\xcc\xab7\xd6\x90\x0a\xbf\xf3\x1b\
+%\xd7\xf4\x15\x94b\x94\xfe\x14\x14P\x92\x01N\xc7\xb7\
+\x97m\xef\xd3\xd4\xe4\xccs\x9e\x1eR6\xf4\x1a\xeb\xcd\
+WA3\xee\x94H\x1f\xca\xa9J\xb7\x00\xd7s\xc5\x80\
+\x02(F\xc4\xa9\x01MZ:\xe2\x11S6\xa2\x89\xd3\
+@\xb3@\x8e\xba\xbf\xdex\xe2\x9cZ\xc9\xde\x18\xe0\x0d\
+pa\xec\x98i\x0a{j\xb1\xc4_\x00.\xf1\x93\xc8\
+\xab,\xaa\xe0\xed\xc5Q\xf9\x01\x8c<@\x99\xc0\xd7>\
+\x17p\xba?\x120\x15J-(\x80\x94\xfdz\xd7r\
+\xc4\x9f\xfc\xce\xe19\x87\xe7\x0c\x15\xcd\x14f\xfa}\xc5\
+M\xbe\x9f\xeb1\x05(\x0c(\xe7`W\xf6\x002D\
+D\xe3\xcf\x9b1%\x9et\x1f\x05\xf4\x80\xa5\xf8\x9b\x06\
+\xe6%\xbe\xfc\xc8\xde\x9f\xa3\xb4G\xabEe\xd3:\xeb\
+J^\xf6\x15u\xf5\x1eg\x86\xe1\x09\xf0s}\xee\x83\
+\x84\xc6}\xc0X\x02\x5c\x85\xa1\xdb\xdf\xc7\xb9m}a\
+\x08%A\xd5\xa2p\xba_\xd9P\xf94\x96\x93\xe8\xa0\
+\x96\xa5l\xf8\xa6P\x03\xd8\x01\xbd_\x12\xe0;\xe3\x92\
+\x9b\xa2\x0c\xc8\x8d\x1f\xc1\xcc\xe9\xcfME\xb4\xfd\x13\xe6\
+\x87\xf8\x7f'\x16\xde\xcc \xc0\xabuh]\xc8\x0f$\
+J\x80s\x89\xb5s\x1d@\x8c\xa2\x0d\xc0\xf2\xb9Zk\
+P\xab\xed\xa7\x00\x8b\x9d\xd0c\x06\x00\x0e\xc4\x17\x00=\
+@\x8eu\x22~p\xfd\xf2#\xd7\xe5\xf7\xb4$\xbc\xa0\
+lP}w\xbe\x02\xfe\x88'G\xa3\xa9\x0b\x9a\x00\x08\
+\x8e\xda\xfd\xc0D\xc4\xd8\xf0\xfbab\x1c\xdeQ6\x14\
+\x82\x01\xce4\xa7\x88Pk1\xe4\x0f\xedS\xd7E\x8d\
+?\xad\xa0\xcd\xa0I\xfcr\xba\xb8l\xd0\x16\xd0\xa2\x16\
+\x06[k\xc1a&\xbc+-\xba\x89\xcf\x8f\x9fW\xb6\
+\x88i\xde`\x11\xd3|\xee|\x8a<w\x03X\x1b`\
+\x88\xd6\xc1\xe9V\xa7O\xa9\xc2[3&\xdco\xf1\x8d\
+\xe7\x07\x00\x94\xc0['~\xacG\xc0\x0d@NK2\
+\x7f\xa1\x85\xcdxH\xad\x99\x18C\x98w\xa6Z\xa4p\
+\xd4\x00\x12f\x9d\xf8\xce\xba\xd1\xa2\xff\xf6\xb2!\x8e6\
+\x06]\x9e\xc7\xdf\xf8|\xe7\x1a\x06S\xe2\xbbs>\xc0\
+\x01\xad\x97JO\xdf\x12\xd0|fDj>&j\xf9\
+\xcf\xcd\x05\x7f\xc9\x90\xf8\x0a,\xf5\xdc\x09\xb8\xa9Y^\
+\xb0\xf6\xb0t\xe2/\xf0\xd3S\x19\xd1\x9b\x0e\xc4ll\
+7\xda\xc1*q\xbe(\x1b\x9ec\xdcT4\xd7\xca\xf0\
+\x05\xa77\x9d\xde\xb4\xcd\xd1\xa6\xd6\xbc\x88\xa4\xfd\xd5\xa0\
+\xb2\xac\x17\xe48\xdbix (Cul^\x90\xc4\
+\xe2?\x07\xea\x8e\xc0^\x05\xc9\x0d\xf6S\xdb\xe2#\xa3\
+\xa2\xff\xc9A\xc2>yp\xe0\xf5m\xde\x9d\x0d|\xc1\
+\x80\xe0\xa2\xae\xc7\x01q\xa4=]\xa1\xd2\xe8\xb7\xe4\x00\
+\xf8\xe0\xfc\xfb7\x0f\x15\xb8h\x19,\xe2F\xaf\xca\xf7\
+\xff\xb4!qP1\xa9\x80\xf4\xe6C\xef\x97\xe7\x90\xfb\
+\xd5\xa2u\xd4m\xa9lg\xa1\x1e\xbek=H\x0fw\
++[\xa8\x85\xb3\x0d\x95F@\x85\x05\xccaH\xa8\x22\
+.\x84\xb24=xz\xd0\xf4\xa0\x85\xea\xbaT\x9c\xce\
+\xbe\xa1l\xfe\xfb\x0f-[T\xf5\xef8\xddq\x987\
+\xad%E\xcf\x99\x8a\xdd\xb7\xae\x95\xb9\xc3KV\x0a\xf3\
+\xf1{\xcb\x86\xca^\x02\x9e\xe3\xcd\xca\x86^%T~\
+b(T\x80\x9fwx\xee\xa1\xe6\xa9\xfe\xdf\xe9\x0f\xa6\
+\xf9\xf3J\xa1\xa04\x0a\xf4z\x0a\x80\xcf\xeeX6\xff\
+\xf7g\x95\xcd\x7f\xfe\xa8\xb2\x01\x00\xc8F\x9dNe\xdb\
+\xd8\xbd\xe33\xcb\xe6\xbf\x7fU\xd9\x90x\xc4\x81\xa0:\
+\x9d=\xb4l\x98\xb3\x0b\x90\x91\x10\x01\x00 \xcc~\x00\
+s\xc4]\x8c\x11\xc9\xfb\xf4\xf4\x82\xac\xcbfJHl\
+U^\xb3.1\x04.yq\xd9\xd0\xfb\xba\xfcl\x0c\
+\x88\x0e\xa0>\xbel\x11;\x9cmK\xb0\x8e7*\x1b\
+\x12V\x89@*\x91}\xe0\xab\x18H\xb8|O\x88&\
+&\x88\xb1s\x1c'\x07\xcf\xb1;\x98\xacs\xc0\x9d\x0a\
+\xac^G\x8c$\x09\xbaD\x17E\xd5\xfb\xf1o~\xdf\
+\xbe\xe6\x80U\x84\xfd;\x81\xb3\x1f\xd4X\x80\xdb\x17\x95\
+\x0d\xfe\x85\xea\xb1\xf5\x9d\x00\xbeE\xcf\xf8\x0b=\xd1(\
+\xc1\xf6\xab\xca\x93\x00SEH\x8f<\xc0\x03`\x22\x90\
+@\xf5t\xbd\x80\x08\x08:J&\xa6\x93\x00O\x22+\
+\x01\xc6\xa0\xe2G\x82\xccw\x00!\xc1\x978\xf1\xe3\xc6\
+\xd9\xe5\xf94\xd5=\xd4\x5c\xfe\xa5E\xe9B\xa1\xbd\x14\
+0\xea|\xc1\xd0\xa1\x91@\x13\x81V\x8d\xca<M\x02\
+?\x18(\x02R\x95\xd0\xdc\x87n\xb1\x08\x13\xa0\xbf\x97\
+\xe7N\xb3!\xc0\x95\xcaj'bzj\xb5\x8c\x98Z\
+b\xfa\x06D_\xc2\xec\x5c\xd0\x0a\x81jn|! \
+7\x09\xe1\xf4\x9e\xb2!`\x17\xf8\x09\xe8\x93`w\x82\
+\x18JuW0\x12\x18\x9enW\xb6\x9d\x87\x87\x07\x96\
+\x0d\xe2\x97\xe9\xb1\xed\xf5\xa6r\xad\xe7\x19`\x99u~\
+Z~\x86V(\xeb\x11@\x8c)\xa2e\xcf\xb4\x81\x00\
+\xa6\xd5\xa0\xb5\xb4h\x05\xa0l\xca\xb5\x9e\xf0\x00\xb2-\
+F+ \xcc\x14\x98\x0e\x9c\x9cc\xc4V\xa9\xae{\xde\
+\xf65\x7fIm9\xe3\xfd\x0ege[\xab\xd4\xf4\x80\
+\xb2a\xfcq\x00\xd6\x06\x0a%\xa0\x12z\x09\x1cQ\xaa\
+0+\x0e\xd7^[\x18\x16F\xe5\xdb\x96\x04z\x01\x84\
+\x0f\xdf\x13F\xa5u\x8a\x19)\xc0\xcf\xfa\xef\x80\x8f(\
+\xa5\x84HO*F\xde\x0f\x84z\x8d\x11$\x0e\xd0\x02\
+!P\x15oIXT\xf6$~\xbb\x8aX\x17X\xee\
+[6\x8cE\xa6\x09\x93V\x86\xe9X6\xbf\xfeC\xd9\
+\x96`\x08\xec\xfb\xfa\x89\x81\xa2\xd0\xd3L\x90\x18\xdb\x97\
+\x9e\x9f\xc2\x8c\xf3\x9e\x9f\xe6\xff\xdd\x07\x81\xbd\xf3F\xc2\
+\xb6\x17\x09\xb4_\x88\xeaJ@\xc5\x9b\xee\x87}iz\
+A\x00;\x9a7D\xf9:\xf1M\xa2\xdd\x15i~\x8b\
+\xdf\x15_f\xdf\x1e\xaeu\xf8\x90\x1a{{\xfa\xf5\xd3\
+\xd3O\xbf>h\x95\xec\x99\xa1\xd6\xc5\x9e\xf9)a\x95\
+\xf0\xfa3\x80|?\xb5+\x95\xcb>_\xc5\x05\xbeW\
+\xc6\xec5#\x8ff\x03Jt\x12\xd7\xa6N\xcb\x13L\
+\xabQq\x05\xe4\xfbw\x12?\xad\x96\xc4a1u\xc2\
+\x14iF\x03\xe0_\xe2\xbe\xab\xa87\x90B\xbbj\xaf\
+y\x01\xd0q_\xfc\xbe\xf5\xc2/\xf1\xfbZ\x8cL\x0b\
+r~\x88\xb30h~\xbcl\xb8\xcfZ`\xd2\x02\xd2\
+Z\x19\xa9\xd4\xf7\xfb\xf8|\xebS\x22\x97\xa9Q\x1d\xf7\
+\x88\xab\x03\xe86\x85\x5c\x1eb\xfdHX\xf7c\x1d\x9d\
+oT\xef\xb3\x9e\x1b \x12\xcf\xfd`\xd9PX\xbcn\
+\xd9V\xe8\xe9\x96\x8c\x8c\xfdk\xa0!\x9f\xdb\x8c\xad%\
+\xf0\xdd\xe2\xa9\xd6zR\x98\xcb\xfd\x14/vKZ\x9e\
+\xe3\xf1Qe\x1b\x93\xed\xf8\xcbe\xc3\xfd\xe0g\x03D\
+4\x83U\x0f=\xb1\xbf0\xd2\xa6[\x96\x0d\x85Oq\
+# H\xfc\xb0o5u.\x88\xd3\xb4\xe4)\x889\
+W\xf5\xec\x07\xf0mM\x0db\x99{\xcd\x00\xebx'\
+\x0a\x0c\x10l\xa6\x81<\xdb\xf7\xc5H\xc2\xa4\x11\x7f&\
+\xae\x22.\xdb\xeb\xcc\xb8\xc6\x00)\xe7\xda!W\xcf\xc4\
+-\xe6\xd7\xcf\x9dmv\xc0\xd3S\xca\xb6\xb9\xc6=\xaf\
+\xd7\x98\x97\x1a\x1b\xf6\xb99\xd8\xef\x92\x0a\xe7\x13\x87\x0d\
+\xae\xf4`\xa1B\xcaP\xba8(\xbf\xf7\xee\x1d\xa5\xdf\
+\x86\xf0{\x1c\x9b\xd7)\x0f\xc4\xef\xb9q\x02\xff\x0b\x12\
+h\x09\x0c??\xbdK\xf5\xbf\x83\xba,\xcaV\x07\xa4\
+\x10\xe3\xc2\xed\xfezp\xccD\xfa\x8c\xd9B=U\xc1\
++7\xf1aC\xc5\xca8=TW\xc8\xb7\xdf\xab\xbb\
+q\xad\xe1\xd5A\xe2@\x07\x0cd*@\x8b\xe9H`\
+\xa8X\x86\x1a\xd9\x0b\xaa\xfe\xf5\x94\x03\xe2\xea\xf9\xfd\x8f\
+\x1d\x16\x06\x07\xe1\xe0\xf4\x5c|>j\x95\xb18*\x01\
+\xc4\xb4$\x92o\x0cRM$\x055GbJ\xfc\xce\
+A%`\xbdnD\xce\x22\xa2\xd3\xe3\xe2>4\x94\xf8\
+\xfbO_5}\xd5\xe2\xa7\x96D\xf9\xecG\xca\xe6\xd7\
+{\x9c\xbd\xe2\xec\x15\x03%*\xbdh\xc7\x97\x95mc\
+\xa3\x1aY#\xa2q\xef\x884=?\xad\x03\x97K\x02\
+\x17\x95\xde\xd3E\xab\xc8O\xcf\x95\x8f\xf6\xc1\xf4\xb0\xb2\
+\xf9sOg\xc7\xb3\x0aT\xaeQ6\xbf~\x5c\xd9\xfc\
+\xfa\xabe\xf3\xeb-\xca6\xbfZ\x1d\xb0\xd5\x03+`\
+\xed\xf1a\xd6K\xd6\xab\x0d=\xfd\xef\xb2\x0d\x81\xed\xb9\
+\xaa\xa5\x9d\xf0\xc8\xa5\x22\xfa\x98\xaa\x88\xa2\x9c\xa2\xda\xb7\
+\xa32f\x0eU5ba-\xb6\x97\xb1(\xf6\xc7\xf4\
+\xc2\xb2-\x10k\xd1*\x14d\x09\x85\x83k?\xde,\
+\xd7?\xdd\xa4l\x9b\x1b?\xbd\xa0lh\xad\x09u\xae\
+[ \x88\xfd\xe9)N/W\x07\x1a\x09<!\xdcz\
+\xcb:\x81\xd6\x8b\x99q\x86M\xb5W\xa1}\xf2*\xf6\
+\xd9\xc8\xb6\x9e2\x9a&\xa6\x9a\xf07\xfb\xc0G%\xcc\
+\xfeU\xc1&^h|\x90\xbf\xa7\x01AT\x10\xc3A\
+b\xa4\xe5B\x85\x19\x90\x90\x03\xaa\xa9g\x00\x08\x89:\
+\x7f\x91\x83T\xa2\xd9\x07f\xa6n\xb4\x9f\xd4\xf2\x90\xfb\
+\xd8S\x12\x88\x12\x0ax$6\xa8\xb3\x00\x07\xeb\x11e\
+S\xe0\x13@\xa3\x01\xac\xf8\x89\x0e\xbc\xac\x0f\x09\x1bJ\
+:Q \x091\x11H\x14o\x1a\x044Q\xa8.\x87\
+\xd9\xd1\xea\xfd*\x12\x12$=\xe3z\x18\xc3\xb0\xe81\
+`z\xf5\x9d\x17_\x9e}\x9f\xcaI\x8b\xa9E\x8b\xa2\
+\xd7\x83\xf5\xc5\x0fb&\x00.T\xa8\xacS\xeb\xc3\xba\
+!vE$\xca\xe7\xd3\x94H\x0bL30~1S\
+K\x04\xa4\x12Q\x8c\x04\x89\x0c*|\xe61\xb7z5\
+\xa6Hz\x01\x89\x1e\xf5\xf3I\xa0\xd5\x1a*\xa1\xe2w\
+\xa2\x9d\x84\xb6\xb4\xc8\x175rj\xfc\x00Z\x9a\x10\x09\
+\xc0\xbau\xe9\xdae[@\x87a\xd5b\x84I\xbc\x8f\
+\xf7*\x1b*\x0d\x980\xbeg\x02\xf8\xe3\xff-\x1b\xb4\
+,.\xb7\xb6\x905P\xe5\xfe\x99F\x90\xb8\xe3\xf0\xd0\
+\xb2\xa151TI\x95\xaaV\xbb'\x06\xf5we[\
+\x82\xd2\xd3O\xb2\x9f\xf8\x19\x09\xe8\xe9\xb1e\x03\x15\x1a\
+P\x97\xcaz\xfbq\x22\x93\x97\xef\xf3dU\xff\x06\xe0\
+\x1aSfl\xdd'\x97\x0dTY\xc0\x19?\x04\xb8}\
+w\xb72\xae\xe3\xae$\xfe\xc4\xe4\xacOb\x8aD\xea\
+\xb2\x1f\x0f?\x5c6\x88TarI\xa01;~4\
+\x1a\x15\xf6\xa9\xb8CB\x04\xd0D\x99E\xd5\x95P\xfa\
+\x11\x8fI\xc0\x88M9\x9f\x00b)\xb8\x9c\xbbc\xd9\
+Vh:\xfck\x80\x0e\xcc\x1d\x9a8*\x87\xa8\xb0I\
+X0i\xf8w~\xb0[N\x89\xab\x8aK\x5c\xaf\xfd\
+*\x9e;?\xd3g\xbe#L\x1d\x09\xa0D\xd5>\x07\
+\x80\xfa\x1e\xfe\x0cH\xc1\x10u\x1f\xf83\x15\xf40\x07\
+\xba\x15\xc6\x9co\x15\xe5\xec\xa7nU\xe0W\x05\x14\xfc\
+\xd2\xe5\x165\x80-\x11\xf1\xdf\xf7\x8cRL\x0eq0\
+\xad,\xf1\x90\xb1mZ\x93\x8c\xcf\x8bVUW\xac#\
+n\x89\xc9$\x9e\xe8\xf87\x85\x8f\xd6\xca\xd1\xc2\xa1\x90\
+\x10\xa0\xa3\xd7\x8d1zZX\x92\xb8\xf6\xd8\xd2\x00\x06\
+\xcdP\xb1^UT\xb5\xdc\xf1#\x00\xbe\x14\x0e\xba\x97\
+\x1fcJb\x85!\xe3~\x01z\xdcg\x00\x8f\xe7\xf1\
+\xe6\xb2\x01xP\xa1\xb7\xbe\x01\xd5\xe2!\xfb\xdf~q\
+\xde:\x9fs\xeev\xe5\x19\xe0#\xb1\xe7\x87\x9d\xfb\x00\
+\xf6-\x8fY\xe3l\x89\xae\xfd\x99\xc4\xb4\x0b$\x18$\
+\xfc\x89\xb8\xdb\xfa\xf0\x5c\x8c\x8f3\x1e;\x80f\xfb\x8f\
+\xb4\xfa\x89+\x8f\x7fW\xb6\x89\xfcu\xeb\x07\x86M\xce\
+\xbd\xd3\xb9\xb2a\xfdIL\x13\x1f\xf6\xd8\xef0\x90O\
+\xb7(\xdb\xf2\x92n\x8d!Z\xfb\xfe\xb2-?kM\
+\x00@\x83\xfb\x821\xa7\x85S|\x14\xc6Q\x03n\xc4\
+Z\xd3\xf2\xd0\xe7\xa8\xb8\xc8u\xefD\xe6\x9bA\xcc?\
+\x03T\xf6S\x82\x02h\xf5\x94\x07\x8c\xe2_/\x1b\x80\
+.\xc0\xce^\x03\xcf\xfa\xb1\xdf\x15X\xf6c\x08\xad\x0f\
+\xcc*\x8c/\x85\x1c\xffN^,\xe17\x15\x04\x80\x9c\
+\xf8\xf2\x9c\x00\xb3\xc5\x1b\x12\x80M__6\xcc\x1bW\
+)|D(B\xd5+Xb87\x9f\xed\x16\xdb\x18\
+\x9f\x167\xe20%\xd6(>n \x87\xef\x8b\xbf/\
+\x1bk\xbf\x81l\xb0\xce\xb0\xf2\xea\x8b\xa8 Z\xe86\
+\xaa\x07\x08\x91z\xc80\x86\xe9\xa3\xe2\xa8\xffu\xb8Q\
+6\x18\x84\x85\xc3\xf1\xfbzH\x8b2x\xfbMD\xa6\
++c\x1e\x5c=\xae\xeb\x0e\x94\x0c\x94 \x14\x99J\xb3\
+\xaf:lP\xdf\x03\xc3\x81\x83\xa8\xbbt\xf9\x04\x94\x97\
+\x1b\x16\x1cq\x87:\xe0_;,$\x88\x91q\x84\xee\
+\xb3\xc4>\xbd\xff\x1d\x88\xaa\x18\x19S\x82\xf2kC\xa9\
+\xe8P\x87N\x00z\xf8\xeb\xcc\xc9\x8d\x03i\xaaP*\
+\x93\xbd\xc1\x04\xfa*\xb6z\xab?1\x94`\xeb\x03u\
+\xec\xaaQ[\x7fFz\xf2Ra\x81\x5c\xa1\xfcN\xaf\
+(\xdb\xc6<\x9d]\xa3l~\xfc\xe7\xca\xe6\xd7\xe7\x96\
+\x0d\x085\x91G\xe3\xf7\x92`\x9f}}\xd9\x10\xc0\xdf\
+&L\x90\x0fY\xc7\x8ft\xc5\xeb\xf3\x92\xc0\xbf\xbel\
+\x13\x0b\x9a\xbe\xbclS\xe3\xa7\x950}C\xd9\xfc\xe7\
+\xe7\x869p\xb3\xb2\x81B\x98\x03t\xfa\xe2\xb2\xe1\xe0\
+A\xfdA\x11}\xfb:\x06R\x02C\xf5|a\xe8\x9e\
+\x86\x80\xc3\xba\xd1B\x22!NOW#\xf6(\x89\xd1\
+\x10\xe8\x83\x11\xb5\x14\xe5x?\xe6-\x15\xff\x0e\xc02\
+\x96\x0a#\xc4~7u\xe1t\x87\xb2\xa1w\x97XV\
+\xa8\xdd\x10\xe4\xae\x0c>n\xb1M\xe5;~\xc2\xd8M\
+\xdf\xbbEfr_\xfb\x00V!2\xae3\xaa\xeb\xcd\
+\x5c\xe0@!\xac\x90Q\x88v\xc6\x99\xb5\x08\x8c\x84\x10\
+bO\xc4E\xeb\x8c\xfdf\xdf\x03\xbcTr\x01\x82(\
+\xb6*\xa4\x80\x01\x15\x85\xcc5\xbfTo:J]\xfc\
+ *\xad\xfb\xde\xd4a@\x86\x9e\xceTH:q\x95\
+0\x1a3\xa3\xd2\xae\xc5@\xafi\x02\x87\x16\xc7R\xa9\
+7\xb6H\xc2\xafR\xb0\x137\xec\xf9\xeb\x02m\x223\
+\xa8\xd6\x99\xbe\xd2\x15\x1c\x15n\x09\x12Q\xb30nP\
+\xfe\x1a00\xc7]\x82o,[4B\xba\xb7Q\xa5\
+\x0c#\xe9\xae\x19[I\xa3\x04\x85=\x09f'>\x00\
+Q\x07\xa8\xc0!\xda\x19\x1d(\x03\x86\x9d\x17\x02AL\
+\x0c\x89\xa2}e\xdd9'\xb4>\x19\xeb\x06\xb8UI\
+$2\x1b\xa6V3)0@\x00B\x80\x13\xbd\x91\x09\
+\xa4z\xfd\x86y\x83\xe2\x7f\xf6[e\xf3~\xbbU\xd9\
+0f.\xe7\xb99\xd9]yR\xd9U9O\xafd\
+S\x22%\xe8\x01\xae\x1a@Lec\xfa\x82\xb2!\x90\
+\x02\xb48\x9fR\x91\x9d>\xb5l\x08X%\xd8\x11;\
+\xb4\xcf{\xfa\x08`:\xfbfz\xd2\xf4\xb3\xd3\xecO\
+\x8f?S6$\xe0\xff'j\xcd\xd6\xb1\xd6\x00\x14\xd6\
+\x00\x9c\xc7\xb7\x95\x0d\x00\x83\xfb\xf6\x88\xb2%\xd0^{\
+~\xdf\x92\xa92(\xb6*{Z\x85\xc4#\xf1\xc7\xdd\
+\xd3OcB\xc1#\xeb\xa0\xc7\xb4&\x11\x99\xc3\xea\x05\
+\x08m\xaa\xed\x1fE,W\x02\x9b}\xdb\x0c\x1f\xda\x22\
+\x1f\x9c\xfd\xfd\xbaUt\xb6)\xf8\xd4\xdd%\x94D\xdb\
+r\xdfZ\xd4\x94\xd6\x83B\xc0\xad2\x1e\x11\x15\x1f\xd5\
+9\x15\xe1>\xc7}\x1f\xdf[\x22\xf2\x92\xb2!n\x22\
+V\xe5\xfa\x8d\xab\x05\x9c\xff\xf1*f{\xf8\x8bU\xc4\
+\xf1\xbc'%>\xfc\xe4\x88OS\xf3\x7f\xc1\x9a8\xb4\
+\x08k\xe2\xac>\xaf\x8c\x87\x0b\xf3\x01\x10\xd0\xe3\xc70\
+\x9a\xf8o\x14\xda{\x94\x0d\x01\xb5\xf8\xcfy\xa2\xa0\xa1\
+\x07WA\x84\x16\x03@8\xd4\xf9\xde\xa7\xd6\xbd\xf7\xb3\
+\xaf\xc5[[\xc1kM(\x04\xf0\x00-\x89,J>\
+*7\xe0\x82\x9f\xdaOY\xc1\x04\x10Wb\x1aat\
+\xd0\xee\xc1\xcc\x02\x5c\x00\x9aT\xae\x93\xa8R\x81o\x91\
+1\xe2\x8d\x01r\x00\x82\xde\xa7[7\x00\xde\x0aN\xc6\
+\x02F;\xa3\xe3\x11\x15S\xa2\xd2\x80\xd1}\xc5\xd5\xf7\
+\x10\xcf\x8a\xf7%\xc8\xfc\xae\x02\x9b|\x01\xe0\xee\xcf\xfc\
+\xb6|\xc0y\xa8\x82+\xce\xd1#\x0f\x10w\x1e\xfb\x91\
+\xcf(,\x02\xce\x9c\xd7D\x0c\xf9}\x9f#n\xd8\x8b\
+\xe6\xba.\xdf\x87\xff\xf5<\xb7\xfch\x8d\xf7\xc4\xf3Z\
+\xb72\xc6\xb9[\xedLw1}\xc6z\xb3o\xed\x17\
+\xbd\xe2\x98\x184\x08R\xb8im(\xe7\xb4B\xaex\
+\x13\xd0\x0dx \xfa\x08P\x00TXg\x89\xa7\x9d7\
+\xbd^|n\xc6\x19\xb6\xa6\xd0\x85e\x03\xe3\xebcV\
+@\xf8\xf4\xc2\x88\xed\xa1\xd4\xfb|\xf1GZ\xd4\xba\xe2\
+\xfe\xa0\xc5z\xacu\x17J\x9c\xa3\xd6U\x80\xaf\xd3\xdb\
+\xca\x86\xefG\xfb\xc1>t\x8e\xd9\xbf\x00\xa4\x00Y\xdd\
+z#\x1e\xb7\xde\xecs\xeb\x8d\xa6\x87\xe9\x02\x9e\xab\x02\
+\x0c`>\xebD\xdclJ\xd7\xa5\xc6\x10j\xfd\xe1\x97\
+\xad\xfb\xfdt<\xeb,\xdf\xef\xdc\xb9\xef*\x1b\xc6\xf4\
+P\x1b\x96\xa0A\x1a\x88L\xe9e\x14\xe8\xe8\xdd\xd3\xdb\
+\xeb\x80\xb2Q\x88\x94\xa0F\xa1N\xd8\xe0\x1e\x9c\x0bu\
+cwc_.\xb5\x91\xe3\xe8\xf4`\xce\xe1\xd4\xfa\xe0\
+l\x94\xf7\xe6\x8b\xbe#\x94\xbfg&\x11\xb7\x11|?\
+\xef\x97@\xb9\x13\x8f\xa8\x04/\x84\xf9[\x069\xbdq\
+\x90\xe4\x9b\x0cc\xf3$\xe6\x02\xe2r\xa47\x1e*\xef\
+u\xbc^\x7f\x08\x08\xeb1_}xP\xa8H\xe5\xf6\
+8\x8a7\x0e\x81Q\xb9\xbbk\xe7\xf3o0<\xe8\x8b\
+\x96&\x88\xadg\xa8\x96\xc9\x7f\xe5\xf3\xae\x17\xb1\xaa\xab\
+\x0d\x09\x01\xad\x06\xcf\xad\xe0\x88+\x0e\x09\x09q\x13\x01\
+\xbe\x00\x06\xf5\xfa\xe1\xa9\x9c}Y\xdeo\x03Z\xd6\xfb\
+\xfc\x90\xa88?9\xe3\xb1$`q\xf85l\xaf\xc6\
+\xed\x9d\xf7]\xa9\x08^}\xa5\xdc\xcf\xd7\xbaV\x10\xa9\
+\xeafC\x1c>3\x15V\xbd\xea\xe6\x07G\x9d{z\
+N\xd9\x10\xe0\x07p\x99\xfe\xb4l\xd3\x04 \xf2s\xba\
+L\xd9P\x19\x07,\xe8U\xfd\x82\xb2\xad\x02\xbd?\x00\
+\xba\xf2\xa8\x12\x1f&\xc0\xd9\x17\x95\xcd\x7f\xfe\xb9\xb2\xf9\
+\xf5\x1f\xcb\xb6\xde\xe3\xae\xf4\x0a\xec\x01d\xa8G\x09\xb4\
+\xa7k\x95mT\xaf\x16\x7f\x13(\xfa\xb3}\xc1\xc1X\
+\x0f{\x80\x0d2k\xac\x10\xc7B\xfc\x0b\xf5\xfc'\xca\
+\x06\x0a>G$p\xa3r\x8d\x12\x15d\xb8[\x19B\
+\xe5\xd5\xdb\xa7\x07\xb7\x1ap\xaa\x05\xe7\xf8\xe7e\xcb\x98\
+\x99\xf7\xd7\x98\x99\xe9\xfee\x1bu\xfa\xf8\xfc\xb2\xad\x82\
+\x08\xa1n\xaap\x10\xe1v\xd8*\x9d\x7fZ6\x04\x0c\
+*Oz\x18\xa3\xee\xda~\xc5A\xca/\xa1D\xc71\
+C\x9c;aE\x89\xd5*\x04)\xdeU Z\x84\x0f\
+#A\xc0M4NK\x8d@\x07 \xa8\x97\xdb\xc1\x8d\
+i!\xe0ppl@\xd9\x1a@:\xc0$\xe8\x90]\
+\x00\x87\x03\x09\xb0(A\x05l\xf2\xbf\xa8\xeb*\xb4\xfc\
+\x91D\x1f\x85\x9d\x88#j *\xb4\x00\xc2\xba\x89\x06\
+IO!0n\xed\x05e\x83\x9fT\xd9\x97\x80;\xe8\
+h\x98\x98\xcb\x8e\xaa\xff\xe5e[\x00\xd5\x94\x7f\x94L\
+\x89\x91\xcaT\x002\xe3\x14\x89\x95\xa2\xfc\xf7\xd8\xce$\
+\x84]\xf9\xa6q\x11\x11DS\x11\x8e\xbfU\xb6Q\xfb\
+ZTP\x00\xe2\x00\x07\xb4\xe8\xf9\x8f\xbf\x03 t\x82\
+N\xbd>S9\xfa\xb9X?\xce/\x81\xb9qb\xce\
+\x03\x9a,\x80K\x09\xb9\x1ek\xf7s7>i\xba\xa8\
+l~\xfd\xf4\xb2A\xebD\xa0Ed\x0b\x058\x09d\
+W\x00C}\xee\xf9\xf6\xd4\xc4U\xd2\x1f^6\x04\x8c\
+\xb4\x14\xf6\xd3\x1e\x9c\xb3\x02n\xa2\xb0a\x045c\xc9\
+u$0;\xbc\xbcl\xdb\x8f\x0d<\xf9I%\x86\xf6\
+\xc1|F\xaf\x15\xc7\xf4\x8ev\xeb\xc83\xd7\xf1\xa8g\
+O*[\x18*\xab\x86\xc4o$\xf1\x0b\x00{\xfc\xd1\
+\xb2\x0d\xa0\x9c>\xbel\x08p\x01q*\xc2\x12\x10\x89\
+\x07M\x0ecDS!m\xd5m\xd3=\xfe=\xe7\xdb\
+\xc5\x99\xe2b]H\x88P\xc5%\x10ZwT0\xad\
+?\xfeI\xbc\x04\xb0U\xa9\x0d\x93\xa3\xa9\xcaT\xba\xc3\
+\x14hf]D\xaf\x0e\xe7\x97\x0d\x94V\x09\x9b\x04@\
+\xa2r~\xa8\xa8Z\x96\x88R\x12\xc1\x0c\xa5\xb7\x01\x98\
+\xf7G\xe47-\x99\x1d\xc0G#J\xdc\x85\xf9w|\
+x\xd9\x22.\xfb\xda\xe3k\x87\xf3L\x1c\x17\x7f\x05\xf8\
+\x03T5#\x80\xff\x16\xe7Y\x8f\xce\x81\x00\x88\xad\x15\
+a\xca\xc37\x94\x0d\xe7\xa5\xc4Z@N;\xe2+\xcb\
+\x86\xb8\xd5\xf3P\xc0\x92 \x0a\xc0%\x16\xfe~\xd7\xea\
+\xaa\xf2\xdc\xc0\xab\x04\xc4\xe7{\x1f~\x5c\x85z\xd72\
+\xd0@\xbaDc\xa7}\xd2s\xee%6\xb4;\x00X\
+\xb4\x82\x9e^6\xf4(S\xf9\x07<GK\xa6\x19'\
+\xfc\x16&\xa2\xd6T\xe3Z\xf9IS-\x5co\xfcX\
+3\x11v\xea\xf7}\x9d{\xd1X\xf7S\x22k\x1fx\
+\x95\x98\xb9O\xde\x0fp\x95\xf1z\x0d\x04\xf1\xbf\xceS\
+\x05I\xcf\xcb\xba\xf1\xfb>\x87\xd8\x9a\xeb\x16\x97xn\
+\x0a\x84\x120\xefc?9\xa7\xf7\xe2\xdd\xceq\x00\xa8\
+\xe7L\xdb!\xd3\xb1.\xd5\xca\x95\xd6f\x85\x05\xa2\x81\
+\xcd\xcc\xc1\x94\x0dp\xa7\xf0\xdbZ-\x0a8\x19\x8bm\
+|kkI9\x7f\xc4\xa3Z\xd4\x00\x1f\xbe\x0f\x06Q\
+*\xe1\xd4\xec\xbb%\x00e\x1fCF+&\xc0\xce4\
+\xb5\xcf\x8aFK\x80\xc5\x8e\x93\xc3\x90k\xa6\x81s2\
+~\xac\x99%\xce\xc9T\xfe[\xdc\x193\xc8\x7f\x07\x98\
+\xd9_\x9e\x0f@C|\xc5\x1f\x03^\x89O\x9a\x8aa\
+\xff\x03\xd6\xe5ioo\x0d\xbcu\x1d\x03\x14LG\x88\
+\xff\xeb\x02\x81x^\xbe%N3&\x9b\xd8#\x11A\
+\xbf\xe7g\xaf5\x018\xcc\xcf\xb9\x9e7^\x95\xb6\xaf\
+\xdd\x0e\xdeV\x0bV\xc1\x8a\xaaw\x8f;\xc8\x86\xd3\xfb\
+\xdd\x88\xaf\x0d'\xb1\x95P\xee\x10\xe3\xdeX\xc6\x8d\xfc\
+{\x0e\xea\xa8Pv\xc0\xceq\xef_%*D\xb2\x88\
+1m\x07\xd4\xca\x00xQ\xd9\x96\x104\xa5\xec\x11Q\
+\x874N\x0eU\xa3\xd2\xa6?\x1e>\xbf\x96\xc1\xb5\x87\
+Wc\xf8\x88\xa0T:}\xa5l\xd4\xab\x0c\x08e\xa5\
+[\x1f>,\xa4\x0f\x8eJ%\x07Cl\xa2\x90\xaa\xbf\
+\xdcz\xd0\x97\xc7z\xcd \x9b\x1f18\xbazl\x1f\
+\x18D\x08\xeb\xeeM\x03\xe2~\xbd%\x95^{\xf7>\
+eH4\xb4\x1cH\xfc\xdd?\xd3\x0b0\x0d8\x0c\x14\
+\xe2'\xac\x14\xf9\xeeY|b*\xd8(Z\x12\x98\xdf\
+-[\xc4\xf9\xd61x7X\x03\x9c\xe9\x95\xd3\xdfM\
+\x7f7,\xc0'\x84\xc2\x99J\x02\x84Q\x0f\xd9\xe9e\
+e\xc3\xfc\xe0\xd7G\xc4#\x89d;\x22\x22I9`\
+\xa8PS\xffE\x01\xeb\xa9\x02\xa8\xe4\x1c5d\xde\x0f\
+D\x9b\xc8\xc8]\xca\xb6\x83\xa8\x13\x9d \xbe\xc6N\x95\
+\x22\xc0\xa2\x09\xf0\x97eQ\x9f~\xd2\xa6i\x80QA\
+\xdc\xa9\xc5\xca\x04\x86\xa8\xd1o(\xdb\xa8\xe4\x9d0J\
+\x04\x89\xb5\xa1\x0e:\x10\xac\x0b\xeb\x10\x90c_\x00\xee\
+\x00\x0f\xa8]{\xe6\x00\xd17\xd3\x03B\x95j\x87\xe7\
+\xc0\xf4\xbe\xd4\xe5i=\xc4\xb1\xf5\x18@=|\x01 \
+\x88\xfa\xf13]a\x89\x1f\xd0bt\xfc\xee\xb2\x0d\x80\
+9>\xb6l\xf8~\x10T\x15\xeb\x001]\xc9A\xb1\
+\x12\x98J\xe0\xedcS>8~\xf7q_\xc9\xb5?\
+\xa2J\xdc\xe3\x07\x1fP6T\xe2\xdd'\x09\xb0J>\
+\xe0\x0b\xb5\x1f \x91\xdfO\xdf\xc0\x18\x90\x00r\xd4\
+\xdeW\x0f+\x06\x8du\xef\xfa\x02\x9c\xb5_\xe6\x0fP\
+!\x1d\xf8\x02L\x9a\x11o/\x1b\xbe\x87\x83F\x02\xd1\
+*s\x993\x1b\x86C31T\x12U\x1a\xa8\x9b\x13\
+\x91\x05\xa4$\x911\x0f\xb8\x03\x9bP\x9a\xbb\xc5\xc0s\
+\x92 '\xe1\xeb\xf9\xc3\xf6\x03U\xde\x97\x9d\xf7\xf2\x05\
+p\x00P:\x87\xf4\xe2Z\xbfZ\x972?\x99\xe8g\
+\xd5\x8f\xab\x82|xI\xd9v\xdf\xac\xc3\xe3m\xca\xe6\
+\xdf{\xd0\xaaMb\xbe\xb1\x8aB\xdf/\x95\x1f\x00\xc9\
+\x9f\x95\x0d\x9a)Z;\xecC\x01\xb5@\x0e52\xd4\
+\xff>\x9fT\x88$H\xf6\xb7q\x93\x126\x89(\xbf\
+f=%Q<\xbd}N\x00\xde\xbeT\x5c\xae\x5c\x15\
+\x17\x00\x9c\xf1@\x02\x8d\xe3\xaf\x96\x0d\x14\xc6\x04:\x12\
+\x9d\xe3\x05e[K\xcd\xf41eC\x85\xc7\xb8\xa5\xdf\
+)\x1b\xae\xdbs\xa3\xd2\x9d\x84\xe0p\xb5\xb2\x81\xd1\x11\
+\x86\x86^~\x80FS\xf91\xcb\x04P\xd9\xefg\xf7\
+)\x1b(\xe3\x09\x84\xdb/\xc4\x1f\xd02\x98\xeeYV\
+T\xfc\x95\xd2zH %N\x98O\x9f\x95\xa1t\xf5\
+\xb2A\x1c\x90\xff7\x8e3\x00Q3\xdfh\xb3D\x03\
+\x81\x86\xc1\xe1\x8b\xcb\x86\xc2\xc8\xd7\xac\xad\x03\xcd\x98\xfc\
+\xfb\xb4\xb6\xe4\xdc\xedi(\xfc]ZP\x0e\x8f_\xfd\
+\xa8\xfd\xd4\x22\xa9*z\x02P\x01\xf6\xa5\x05\x00\x00 \
+\x00IDAT\xfbM`\x1c\xa0\xa7\xe3/\x80E\xfc\
+R\x03q\x0a5(\xa4\xe23\xda\x1e\xce\x0f\x09+\x11\
+^\x95\xf0\x000\x9d\xf8\x19W\xfa\xac\x15p9<g\
+\x8d\x13<'c\x22\xfb\xf9\x86q\xd8~#\xe7\xb5\xb1\
+\xce\x87cD\x14\xbf)\x00\xd8?\xa6bN\xd4\x97(\
+ \xd1\xc8P\xb9\xfb{H4\xf9)\x81\xb7\x84L<\
+\x06\xe82\xbe\x0c@'\xd1q\x1f\x010\x18{*\xc2\
+\x18D\x00j\xe7\x11j\xbd\xca\x9d\x84YB\xbc\x07\x0a\
+\xb4 \x00\xee1\xceT\xd6\xc53\xa6\x19\x00\x5ch@\
+\xd0\xf01\xcdFK\x02\xed\x09\x00\xa5\xbfw\xfd\xb4G\
+h\x1dH\xdcM_\x91\x88\x02\xba\x14\x0a\xb2\x9f\x1bP\
+\x94\xf8cD\xf8w\xc4^\x8d\x813\xa6\x0f\xb0\x12\xa6\
+g\xb7BZo\xee\x8b\x84\x0aC\x06\xf0\x9c\xfb\xd0\x15\
+x\x09\x9d\xf3S\x1c\xe3\xdc\xf7\xbe\x12}\xaf\x123\xd7\
+\xed\xb9x\x1e>\x97\x06\x09@\xd0\xfd\x90\xe8i\xf1\xc9\
+\xfa\xeb\x96\x85\x14tZ\xb3H|\x87)\xa0\x15\xc5\xf5\
+x\x9f\xdd\xb8\xc9\x06\x9c\x88\xfd\xa65\xa9\xc7;&.\
+nF\x90\x82\x1em&\x09\xb3\xb8\x09 !\xces\x7f\
+\xb4fj\xc5H!\x13\x90\xdcq\x96\x0a\xbf\xf8j/\
+z\x88\xc9\x87!\xa2\xb7\x9d\x18 \x8d\x89\xc4M-\xe6\
+y\xf5\xb2\x8d\xc1\xda\x00\x9bs\xd7\xbf\x0f\x83\xa0E\xca\
+U\xfei\xd8\xd8\x7f\x12s\xf18\x00\xc0\xba\xf2\xbc\xed\
+7\xf1\xa7\xfb\x0dXS \xc4\x8c\xd0\xba\xa7\x05U\xeb\
+\x0b\xad\x85\xbdh\xbb\xf5\xc5\xffh\x99\xc0\xbcR\xd0\x02\
+\xec\x8b\xd7\x01J\xc9\xd7z?+\x10\xbaNq>\xff\
+C$\x1f\xe0\x95<\xf5\xdcR!y\xecPA\x84\xe4\
+\xaa\x08\x08H!{(\xc4n\x8c\x1bK\x04dW\xc1\
+\xe8^\xfb$\x06M\x95\xdd\xf7:\xa1\x82\x00\x02\xae\x93\
+^q\x1bV`\xba;\x80.\x85t\xb8\x91\x17f\x8e\
+9\xf1!s\x14\xe3\x88\x96\x07\xf8W\x03\xf2t\xfe\xd2\
+\x15\xb6\x05,\x1c\xaf\x84\xbfp\xe3\xab\x0e\x95\xf7z\x1c\
+\x17\xe6\xba\x8e\xc3\xc1-\xf0\xa9\xc7\xfb\x9f\xa1|\x98\xaf\
+{Q\xbe\xf7(RE-\xb3\xa8Y\x7f=\x8c\xdd\xab\
+\xbbv\x95!A\xa9\x84\xfd\x03y\x9f\xf7\x0f\x09\xa0\xcf\
+\xc9}\xec\x9ed\x15f\x1b\x8e\x08\xa0\xf7\x8b\xa3\xd7\xd2\
+\xd0\x95&=4\x80\x8b\xaf\xc8\x06W\xc1\xb4\xa0C\x99\
+\x9f\x9d\xd3\x1a\x90\xfe\xcdJm4\xde\xe7\xf0\xcb\xe9A\
+Mew~Vk\xcf\xdc;\xd7\x85X3\x03\x96\xa9\
+\x01\xdf\x9a\x9eN\xc0\xd1\xd5S1\x09\xe5\xbe\x03\x92\xcc\
+\xd7n\x8aP\xd4\xe5\x9br\x9a\xdeK\xf3\x97U\x0e-\
+\xafN\xdc\xac\x07cE \xd8;\xb5\xd2\xe3g\x94m\
+S\x00Z\x0b#=\xce\xdd\xebn\x0c!\xaa[\x80\xa4\
+\xee!\xb3\x01\xc7)\x12\x17\x0e\x15|TC\x09\x9b\xc4\
+\xc2\xfe\xd1\xb3F\xfbA\xc2d_\xeeUI\x1d\xe0\xc6\
+m\xe9\x11w\xd0\xa0\x5c\xa3\xa4\xdb\xf7\xe6$K\xec%\
+\x12;1\x9c\x06(h\x08\x08\xe4S\xd9=\xde\xafl\
+\xab\x00\xb6\xe6\x00\x00\x03\xb2+p\xd0\xdb\xfd\xaa\xb2\xf9\
+\xdf?\xb9lP\xed&\x16\x06\xd9\x0cS\xa9)]\x10\
+c\xc8\xabqn*\xf3\xc4\x85\xb2n\xbaW[\x8f\xa0\
+}\xc1\xc1B\xf6\xf9\x19\x15w\xa2\x81\x121\x07\x85\xe7\
+\xe0\xa0V\xc97\xd6\x08\xc5\x5c\xab\x0d\x80\xcd\xefy>\
+\xa1\xe4w \x17\xcd\x8f\x9e\xeb\xabbC[\x00\x85\x1f\
+%\x16C\xc2\x81b\x9f\x13\x13M`\xa6u\xa6\x03\x1d\
+~\x5ce\x0c\x00\x22\x01\xd5\xb3fLX\xe6\xcc\x1aC\
+\xd8\x01Q\xa8\xae]\xd9\xe3/\xac\xa3T\xa4\x89Fv\
+\x05\xcf<y\xaa\xe0\xc6\x8b\xba\xcf\xa8\xd3z\x10_\xb3\
+\x8eU\x9d\xbd\xedY\xf9[\xea\xea\x87+\x95m\xe2D\
+\xdd\x9a\x14m\x90\x9e\x86p\xff\xb2-1k\xed\x8f\xac\
+\x9b\xe9/\xca\x06\xbf\xfc\xbf\xcb\xe6u\xf9\xbf\xca\xb6\x0a\
+x\xefO\xcf\xdd\xf9\x83\xb1\x83Y\xe3\x5c\xf4\xbch&\
+\x04\x18\xeb\xf3*\x95\xfa\xee\xf9\xa7I\x01H\x12@\x0b\
+h\xb5x\xe81\x8d(\xaa\xef\xd7=\xff/\x9e\xc3\x87\
+\x17o\xd3;\x88!\xb6\xb8S\x02\xac\x9e\xa7\xfc\x07e\
+C\xc0\x90\x9exL\x15\xe3\x80\x891adt\x22\xf7\
+\x83i\xe5\xb8_\xf6\x8d\x96\x87\xbf,\x1b\xa6\xedH<\
+T\x5c\xado-L\x99\x06\xd0\xe2\xb2\x01VZD\x16\
+`\x99\x0a-\x7f^\x0d\x5cK\x0b\x17\x7f\x13 \xfbt\
+\x9b\xb2ATW\xc0w\xb5\xf4\xe6\x03\x16\xc3d8\xbd\
+\xb8l\x98\xaf-\xc1\x078\x03\xc6=\x0f\x9a\x0d\xd1<\
+A\xa1&2h\xdf\x1d\xee\xb6jo\x10\xf5mM\x14\
+Z\x16\xc48\xbf7\x8c9\x0c\xbb\xc7-\xf3t\xd6\x04\
+\xe0W\x86\xb9\xee*\xa6\x02E\xfb\x16\xc0\x84\xb9\x99\xeb\
+\xad\xd9FK%_\x5c\xa52\x89\xa1\xa3\x05\x8c?\xe4\
+\xaf\xf99~O\xab\x14\x06\xcd\xc3\x03\x04\xf9<\x22|\
+\xb9\xff\xd3\xdf\x97\x0d\x9a\x15\x12r\xeb\x18\xe0a\xac$\
+\xd1\xc4\x17\xad\xcf\x7f\xfa\xdd\xb2\xf9\xf2n\x7f\xbc\xc3\xf1\
+\x0e\xcb\x98\xbf5ap}\x18R\xc6\xf5\x12K\xe5\xff\
+\x8dCs\xfd\x97\xcf\xb9i_\x893\xb4 \x11{S\
+\x00\x10\x90K\xcc\xc4\xc9\xf1\x0fM\x85\xd7\xd3\xed\xdc\xf6\
+\x9a\xf3\xfd\xf4[eCK\x93\x16&\xf1\x80\xfb\xce\x1f\
+\xbb.c\xf6T\x1e\xc5\xcf\xfc\x8e\x04\x15@\xc0\xbf\x9a\
+\x92A<Ob\xae5A\xfcn\x8c\xa1D/\x9a6\
+\xfd\xbe\xfc\xb9x\x00\xe3\x05\xb0\xa5\xc5\xc9T\x0cqt\
+\xe2\x92nqt\xbdI,\xbb\xd5\x0b\x03,\xf7\xa7\x19\
+(\xe2~\x00\x85D\x93\xbf\x908;\x07\xb3O\x9b\x99\
+\xa1\x10\xe6\xba%\xa4\x985\xee\xb3xW|f=b\
+\xe2\xed)\xf4\xe6\xd3c\x18\xd2\xfa\xa0\xd6\xff\xd6\xb2!\
+\xbe\xe2o\x88\x1b\xa6p\xd6\x9f\x0b@\x00d|E\xd9\
+&^\xda\x95g\xbf/N\xd1\x83\xae\x80As\x82f\
+\x1b\x06\x92\xf8\xdeu\xdcb^\xf5\xb7X\xfc\xc6R\xf0\
+l5\xfe\x88\xc9\xc9g\xb4\xfa\xee\xc7,\x1e\x7f\xa5l\
+`\xe4i\xe9\xd6\xfb\x9e\xf1\x9e\x1d\x97Fl\xb4\xa7k\
+\x19\x07\x18\xe0\x15\x03\xb9\xc7b^\xb5l\xf0/\xf67\
+\xff\x8b\xa9n\xdcu\xfc\xfb\xf1\x95e\x03\xd3%\x8c\xee\
+\x16]\xccz\xebiv\xfcE\xe2\x87.\xe0\xda_\xf2\
+\xb9}\xe5~\xdfJ\xe2\x95\x7f\x00\xa8x\x1f\xebGa\
+\x9c\x9f\x96\xa0\xf0\xbf{m\x09\x09\xbf\xeb\x10o\x88\xfb\
+\xadk\xeb\xc3:\x10\x07\x8aS\x88\xb4\x9af\x94\xbc\xe4\
+\x5cW\xf4\xd2\x83\xd6\x0b\xdbF\xd9S\x89!\x1e\x10%\
+\x15&7\x08\xb2*A'.&\xb1\xb5\xf1T|\xdc\
+P\x8eA\x85h'\xc6p)\xf1\x99\xbd\x88\xe0&\x16\
+\xb8&\x5c\x1c\x1ajw\x10\xb7\xa6t\xdex\x19<\xb8\
+\x8a\x22\xfd\xd8\xb0\x01o\xbf\xa4\xb4\xdb\x01\x8a\xba\x7f\xf5\
+%5\xdd\x1eT=\x9e\xa1\x92~\xfa\xaf\xd9\xde3\xf4\
+\xd8C\xc0P\x820\x08h\x0aT'\xee\xf5\x07` \
+\x95\xf8\xd3{\xcb\x86\x84#S\x9c\xfa`v\x80y_\
+\x0b\x16\xe2\x09`\xc8\x81\xdd\xe3\xfc ]\x127S\x11\
+\xee\xb9\x22\xb1\x87\xcfO\x02\xf1Ayn\xc6\x1f\x09\xe8\
+%\x0a(\xbc\xc6\x14\xa5\x82\xa6\xe25\xddz\xba\xcdt\
+\x9b\xad\xe7\x94j\xbf\xc4\xfc\xf4\xbd\x99\xe7\xfe[k@\
+\x7f\xf6Egw;\xbb\xdb@\xe53\x17\xfaIi%\
+H\xa5q\xbaK\xd9\x96\x10\xf5\x01\x13\x15_c\x9aT\
+6\xbb\xf2.0\xa2\xe6\x1c\x8az\x8b*\xa1\x8e~p\
+\xd9|\x9b_Z6PL\xf5\xe2\x85\xdaz\xb8\xb0l\
+HP#\xc2t|Z\xd9\x90X\xe7yM\x8f.\x1b\
+\x80\x15\x0e\x19b\xfb#eC \xa9\x12\x8c\x82g\x0c\
+\x0d\xc7\xadgSb\xe0\x00\x138\xe8U\xce\xfb\xe99\
+\xed\x0a\x8e\xc4\x8acq\x80\x04\x19\xee\xca\x8b\xc0U\x85\
+\x88\x03B\x89L\x02\xdb\x81\xb9\x84SO\x7f\xc6&\xb6\
+\xe6A\xc69\xb6\x08\x16\x91\x9f\xa8\xd7v\x02k\xbf\xb9\
+>\xaa\xa9\xe9\xf1=\xbe\xbalHD#>\xe3>v\
+\xc2\x1c\x11/\x07N\x8f\xf5I\x0bI\x8f;TA\xf0\
+y\xfc\x98\x83\xdb\xfd\x22~C[B\xcf\xbc\xd6\x9f\x00\
+_\x8d,c\x04\x00\xe48\xea\x04\x0a\xed?\xd3R\xd1\
+\xc0\x0eq7\xea\xe4\xfc\xa4\xca6\x95\xffh#t%\
+N\x80\x05P\x0208\xe0B\x91mum\x81%\xb1\
+\xb5\xf4\x98\xf5\xc1\x12\xff\xdbH\xb7\xe7\xeb\xa0\x91\x00h\
+\x1dB\xe9\x0c \xd3\xeb\x8d\xbfG\x9d\xdf\x8b\xf7\xa4\xa7\
+\xb6\x0f,\x15\x92\x04\xa2\xd6_3\xa4>n\xbe\xda\x8f\
+\xdb\x02\x14\x95\x88\x1egIk \x94\xea\xe9\x9ae[\
+%\xb2+\x11\x9e/Jy\xa8\xe7\x87\x17\x97\x0d-*\
+ia\x99~\xadl\xfe\xf37\x96\x0d\x01\xa9J\xea\x0d\
+\xca\x06\x11\x5c\xf3\xce\xe3\xf7\x1a\xa02u\x876IT\
+\xc9\xf9\x9bN\xc81@\x04\x0e\x12\x09\xeb\xd4\xe7\xa8\x00\
+\xf1;\x02r\xeb\x1a\xc0\xf9=\xab\xdf\xedq\x9b_\xb2\
+\xfa\x9f\xe9E+@wzC\xd9\xe6g\x9bRH\xb5\
+\xf9\xf3\xca\xb6\x00\x1d5\xbb\x19\x14\xe9\x89\x9f\xee^\xb6\
+0\xa0\xd6VA\xe7MD\x03;A\xcc86\x81\xbc\
+V\xa3\xa6 \xc7\x8ft\xe2Ed3\x0c\x83\x06\x883\
+U\xa8\xfdi\x80\xe1\x16\x1b\x03\xc4\xa1\x92^g\x05\x14\
+\xbbuD\x9c\x82b,\x11\xbb\xd2ZA\xea\xd6\xb3\xaf\
+\x8e\x06K\x18h]YO\x22\x84\x190}Z\xd9\xc6\
+d\x03\x90\x1e\xae\x97\x963*\xda\x00(\x89\xbf\xf9\xdd\
+\xafX\x19f\x0b\xe3\xe1\xb59g\xde0$\xb0\xaeO\
+\x8b\x11m\x02\x80\x0a\xc0\x99\xe8U\x02e=\xd8\x87o\
+\x8bv\x86\x80\x95_:K \xfa\xeaPvUR1\
+\x97\x04\xb6\xe2\x10\x85\x9eOIeR\xc1\x81\xff\x8a\xe8\
+\xe1\xf4\xf4\xb2\xa5\x85b\xd1\xc2\x99\xbekzx\x8d\xf9\
+\x95x\x1f\x9fZ\x16f\xc4W\x0f\xfb\x89&\xca\xf3\x03\
+,\x02`\xc2H\xbd\xe4\x81e\x83\x16\xc3(\xc6|\xed\
+\xe1<\x14\x1f\xba/\xdbx\xd85~z]\x12\xbd\x9b\
+'0WY#\xaeK3Eb\x85\x9a\xaf\x10\xa20\
+\xa1\x15\xcb:BE6\xcd\xc6z\xe4\x070~$J\
+\x7f\x90\x84\xdcubZ\xa2P\xff\xc2\xe9\xa9\xa7\xa7\x0e\
+\xe2y\xf6\x85\x9e\xe2\xf7\x94\x0dq'`\x07@\x22\x11\
+0\xe5\x83\x98\x1a\xe0\xe2\x97\xcb\x0618\xe3X\xb3\xce\
+Z\xc4W\xa5Q%\xd3\xb8:\x1a!*\xed\xce\x17\xc0\
+\xb0\xb1\xad)@\xb4\x16\xc1\x9e\x19`\xcc%\x80\x08\x83\
+\xc74\x01b\xac\x12(\x09\x93\x84\x1dp\xe4\x5cq\xde\
+\x8a\x97\x00B\xd1\x94\xe8s\xca\x7f\xb7\xce1\xa1U\xb4\
+\xb5\x18\x00\xaaM?\x10\x17\x8b\xbf\x9d?\x80n\x15v\
+q\x9aB\x06f\xb4\x9eq\xeb\xc5\xdf\xab\xc4cv\xe5\
+<j\xe0\xc5\xba\xa7Y\x00\xb8\xf9\xb1\xe43\xee\xbf<\
+\xe8!e\xc3\xfaz\xc3\xeaW\xfa\xbc\x97_E;\xe5\
+t\xab\xb2A\xd47\xf1H3W\xb4\xc0a\xa2\xa8\xcc\
+\x9b{\x9f\x7f\xdfb\xb7\xf6\x15\xf1T\x9a\x5cZ\xfeh\
+\x17\xdc\xb9l\x10}\xc6H\xa3\xc5!\xde\xb0\xce1\x97\
+\xaf\x5c\xb61\xd1\xec+@kO\x0d\xbbu\xd9\xa09\
+\x84q`\x7fb\xea\x01L\xc4%\x98D\xe2\xc3}+\
+\x94\x84\x9d\xff\xf1<\xc5M\xd6+\xffi\x7f\xca\xcb\xf2\
+~\x87\xcf,\x1b\x00h\xcf\x05\x93$qf\xef\x1f\xeb\
+\x0a\xa0+^p]\x00\x07\xf9\x83\xeb\xc8\x9f\xcf\xf5\x1b\
+\xa8\x00>\xbflPut\x01\xa8c\x029s\x89%\
+\xfc(:zA\x8c\xef\x11\xa8\xfa}\x15/\x17\xba\x1f\
+\xbb\x031\xc4\x04\xb8a\xc6'9p\xdc@\xc8\x09\x07\
+\x90\x9f9lY)\x14\xb7]7\x16*\xd7\xf1\xdee\
+A\xcc\x7f7H\xd3\x13\x86\x04\xda\xc6\xa6\x1a]u6\
+\xe3\x89>tX`z\xf0\x00\x13\x16F\xe1=o\x1d\
+\x02f\x0c\x01\x15\xd7\x88\xebt\x02?N\x09\xb8n\xee\
+\xf3q8\xa0\x88\xf9\xf9\xbeZ\x00\xfc=1A\x09\x02\
+\xa0\xa6\xa8\xec\xefL \xfb'C\xaf\x10\xea\xbc\x84\x1f\
+u\xf1uk u\xb8b(\xf4WO\x80\x09\xe16\
+\xf6H\x82\x22\xa0\x8bz\xef\xe1\x01\xebX\xa8\x1e\x83\x84\
+\xca\x1e\xea\xfd\xf4S\xd3ON?\xb9\x04\xd0\xe7O\xe7\
+/\x0ej\x09\xecN\x97/\xdb\x12\xb9\xd6x|W\xd9\
+\xd2\x1b9\xdb0\xfe+\xf7\xaf\x19\x06Y\xa7\xed 9\
+ \x01\xbd\xde\xe3$\xac*k\x0d\x0c\xd0\x0eP\xa1J\
+\xcb\x8b\xf9\xf5\xc7_+\x1bzs\x8c\xfd#\xca\x175\
+\xf1\xe9+\xca6\xf5\xe5~_\x147\x0c\x02\xd4`\xea\
+\xf7\xe9\xd5*\x09\xa7E\xc4I\xef\xaeJ\x8bu\xe9\xf9\
+\x02\xa8P51;\x00!\xd6\x15M\x0ec\xce\x04\x8a\
+\x9e\x9f\x0a\x01\x04\x93\x83\x93\xd0x\xbe\xa1\xfa.T\xe3\
+\xcf\xce\xe7\xddy\xa8\x8cKDR\xd9\xec1\x85\xa9\xe8\
+_\xf2\xe7e\x9b\x83>>\xbdlc\x16uon\x80\
+\x9e\x0e\xa8Qh\xf5X\x06 \xc0\xcc8\xbbk\xd9 \
+6\x17j\xfe\xf1O\xcb\x86V\x1e\x0c\x1b=\xed\x02\x8f\
+P\x0e;\xc0\xa1\xf2\xce\xff`\x14\xd8\xd7~P\x9c%\
+\xd2\x80\x10\x15\x12\xea\xd3\x80\x91\x1a\xff\xf9)\x03b+\
+\x90\xe4\xf0\xedK\x22U\xfe\xbd\x04\xc9\xe7@\x92\xf5\x9a\
+\x11\x9b\x92\xe0E\xe3\xa3)\xd2\x80\x1c@\x90\x03X\xa2\
+)\x10\xd3\xa2\xb1\xd7 \x10x\xa8TH0\x04`\x00\
+\x1a@D\xc4\x1f\xcd\xa3o5^\x07\xa4^f\x80\xd4\
+\xaf\x95\x0d\x07ez\xcd\xbb\xa2*\x90\xb7\xee\xf9\xdb\x00\
+q\xcb\xb4\x9a\x9b\x0f\xe3]\x8d\x7f\xbbC\xd9\x10hh\
+\xb5H 6=\xafl\xab$\xb4\xa8\x98V\x04c\x8d\
+B\xf9=\xfb\xac\xb2\x8d\x9a\xdc\x15\x8f\x00?\xc7[\x97\
+\x0d\x07+\xad\x15\x01\x8e\xd6\x89w\x97\x0d\x94\xf4\xdc\xbf\
+\xc3\xb1l\x98\xff\x9e\x8aWu:/\xbd\xce\x12\x0d\x80\
+\x85\xfb%\x00\x0e\xa0\xd9\x89r\xee\x7f\xaf_\xcf\x09\xf3\
+'L\x8d\xdew\x17\xae=\xd9\xc6\xb0\x09 .yy\
+\xd9\x06d\x19\xb3G\xa5\xf9x\xcb\xb2a\x7f\x98\xb3\x9d\
+\x04tN\x03\x16\x7fw\xf6\x8deC\xebJ\xb4X\x1a\
+8\x22\xaa\xf6/\x01\x923>\xae5\x14\xf8S\xcc(\
+~<-f\x87\xc3\xe1y\x87\xe7\x0d\x81\xd6-\x92H\
+\xdc=\x1a\x1d\xa9@\x9fnQ2\xc5\x03\x90+ \xbf\
+b\xfe\xdd\x033\x8e1\x09~k\x8e\xe4\x1ck`1\
+\x80C\x03z\x80I\xd3m2\x1e\xb1\x99\x07\x12\xe2+\
+\xe4\xfc\xc8\x94\x03-(=\x9d\x80\xc8\xde\xaf\xad\xcf\x7f\
+a\x0a\xbc`x\xbe*7\xc4P\xd3\xab\xee\x1c\xe9\x96\
+\x0aZ\x19\x12\xb3\xac\x97\x06,1\xe0\x88\xaa\x9d\x12W\
+8\x07\x00~\x98\x1a\xb4_v\xaa\xea\xad\x8a\x9ds\xc6\
+\xd8\xe4\xc3\xfd\xca\xe6\xd7G\x95-\xe3s\x17\x06\xc7t\
+\xbd\xe9\xa3\xa7\x8f^4n\xaeY\x1a7\xf3j\xfb\xfb\
+e\xbd\xed\x80\xa0\xe3\x0f\x1c\xbf\xff\xf8\x03K\x82\xbc\xce\
+\xd5\xfe\xf99\xdd\xfa\xb9\xa5\xa00[\x02\xf89\x91\x9c\
+>b\xfa\xc8\xe9#\xb6\x16\x96\xe3\x83\xca6?\xde\xd3\
+\x01|\x1f\x95X\x9a\x12\xe2S\xebPB\xaee\xc8T\
+\x14\x09\x81D_AJa\x0c\xf3\xc9\xb9\xc9\xaf;\x8f\
+\xfdw\x89\xac\x84\xc5\xfd\x17\xff\xf2s\xd7\xc89\x02\xe8\
+\xa3\x95!\xb1K\xc2\xd5-\x0f\xfb\xa9\x01D0\x15\xd4\
+\x00\xadI8\xbb\xe2\x1a\x06L\xb72%\x81lm/\
+q\xbe\x02\x18J:&X\x12\xc4\x8eW\xb4\xf2a\x98\
+\xa0\xee+\xc8\x01\x98\x00\x11\x12\x19\x85\x05\xe7\xb4<\x02\
+\xa3)~\xaa[\xa4\xc47\xee\xa7|`\xafz\xae@\
+\xc2o\x02rvc\xbb\x15VZ<R\x0b\x99\xf8\x88\
+_W\x99&\xfe\xe9\xb9J\xdc\x15P0\xfd\xac/\xcf\
+Y\x9c\x84R\x0e\x00\x10\xe7\xf9\xb1\x8e\x00\x104\x9a\xd2\
+R\xd8\x22\x8a*\xff\xbe\x8f\x96\xb0\x14\xceN?zz\
+\xec\xd2\x9adZ\x0a\xa0)-K\x1d78\x9f\x15\x12\
+]\xb7\x04\x17\x00\xf2\xc0\xb2m\x9f\x1c\xff\xacl~\xff\
+\xf7\x96m\xcc\xd8\xd6.\x01\xb8\xb8o\x89\xf3\x97\xf1\xf1\
+\xbf?h\xc3\xd0\x8a\xf9\xce\xf3\x1eV\x85\xb1\xd3\xfd\xc2\
+\xa45F\x16\x00.A\x97\x10k\xa1\x957:\x87\xc4\
+\x19;\xad\x0d\xdaT\xbd\x8e\xa3]A\xe3\xa3\x0b\x9c\xd6\
+'\xf1\xeb$\xd8]\x88\xc54\x08P\xde@,\xbf`\
+=\x8a\x8f\xedk\x7fv~'\xff\xed\xc2\xac\xf5n\x1a\
+H~\xbfE\xff\xc4\xb3\x80\x9f<\x9f\x9e\x86BK\xc7\
+\xfe\x01H\xc9\xdb\x01\x00\xee\x93\xf5\xd7\x00\x00\xc7\xa4G\
+4\x09W\x07\x9a\x12]\xe3M\xcc%\xb6\x11\xf5\x1a9\
+\x80T.Q\x11\xf5\xc0\xeeU\x08\x05\xa6*1*\xa0\
+\xfb1]\xff\xb9c\x02@T \xf7n0\x87\xf3\xcf\
+\x11\xf5J\xe5\xff\xf8\xe0\xb2\xf4\x16?j\xd8\xc0\x0e\xe8\
+\xcb/d\xb0\xf5\x81]v\xa7\xb6\x7f\x85\xbc\xff8_\
+\xb5\xb6\xe9[\x86J\x18\xe4g\x7f\xc3\xdf\xbb\x90\xf7\xb6\
+\x0a\x0a\xea\xa1\x0a\xf6\x9e\xd1\xf0\xff\x004\x1a\xb1qP\
+g,`W\xb6\xab#\xf6\xa9C`Y\xe3\xbd\xee\xbe\
+1\x11$\x22\xd3\xeb\xcb\xe6\xd7O*\x1b\x12\xc2gf\
+N\xf6\x1fG5\xfeuqhzb\xafZ6\x00D\
+(\xb5Q\x91\xee\x048=\xd9\x1c\xc2\xf4\xc5k%h\
+\xfa\xb7\xb2\xf9\xf5^e[ \x04I\xec\x9eWc\xc7\
+\x226\xa2\xa2\xd3@\x00Jo\xe6\x93.\x22\x87W\x1d\
+\x00\x96\xe7\x94\x0d\xbd\xc3\xa8\x86\xc4\xc1\xe2\xa0\xba\xb5Y\
+\x82\x10$\xd7\x5cP\xbd{\xd3\xfd\xca\x06d:\xbdE\
+\xc6\x1bv/5\x0a\xbc\xf1S\xbf\x5c\xb6U\xb4\xbb\x92\
+a\xecH\x0e\xf2N8Td\x1d\xbc\x1c\x1b\x87\x85\x02\
+\x0d\xd16']\xe2h_\x09\xf8\x01\x04;J[W\
+H9\x00\x08\xb2\xb1R\x02G=\x8f(\x8a\x00\x16\xd4\
++\x95N\xbd\x94\x1c]\xfe\xfd\xf4ee[@|\xfa\
+\xa2\xb2\xad\x22{|h\xd9\x10(Q\x09O\xa5\xf8\x92\
++\x96m\x00\xcf\xf1\x01e\x83\x7f\xf0}Q\xb4Q\xa7\
+s\x7f\x8e\x9fY6\xbf~S\xd9 \x8a\xa3\x02\xc2\xe1\
+~c\xd9\x10@\xf0+\xa8\x8e\xfe^ob\x18.=\
+\xfeF\xe5\xc2\x01j\xff900&\x04\x14\x9e\x0b\xf1\
+:@\xa3@\xca\xf3\x07\xfc\xa8|\x14\xb3\xe8\xbf\xb6D\
+\xaf\x03'\x94c~\xd7\xf8,\x95\x18\xad\x0e\xfb\x83\xca\
+\xf7\x140\xf9|\x15\x10\x07\x8d\xdf\xf3|\xf9[T:\
+\xe2\x96\x01\x1c\xec\xbf\x0e\x98\xf7\xd44\xfb(\x89oW\
+LPn\xc3\xcc\xb8\x14\xc0%\x012}\x22\x00\xc6\xe1\
+\xf1e\x83\xf8\xe6\x15\xca\x06\x06P\xa8\xd8\x02\xb1\xc3u\
+\xca6@\xa3\xc7\xd9\x1a\x03\xabRE\x15\xfe\xa5\xeb\xba\
+\x9f\xfeiz\xed\xf4\xda\xad\x82\xdd\x12\x09\xf9\xbe\xc7O\
++\x1b\x806=\xdf\xa6\xe7\xa8h\xa7\x05\xc4\xdc\xf8\xe5\
+\xae\xfdB\xf6\xd3\xf5\xb7\xd6\xba\xb37\x94\xcd\xbfw\xb9\
+\xb2-\x81C\xad\xd4\xd3{|^\xd9\xa6\x8d\xd2Z8\
+(\x9b\xa8\x93\x18E\xf6\xb9\xb9\xcb\xc4\xd9\x00\x10\x97)\
+\xdbZ\xb3\xec\xab\x9e\xcb.@2\xb6)\xf7\x01C\xa2\
+[\xa8$\x00Y\xc7\xd3\x07MW\x9c\xae8\xf4\x82\xbf\
+\xb9l~}b\xd9\xb0\xafi5\xd0\x00@\x85\x8f\xda\
+\xfb\xfc\xbf\xab\xbf\xd4b!\x81\x8e\xe8$\x86\xd5\x9c\x86\
+\xaeq\xc7\xab#\xf2\xa5\x97[\xc0\xfb\x0dk\x0f9?\
+vxK\x80R\xe3=3N\x94\xf8\xa1\xeb\xed\xca\xa8\
+\x02\x89\xc0\xd2\xb9\xad\xc5\xc54\xa5\x9c\xaf\x87\xa7\xad\xe7\
+A'$\x00\xa20'\xe7\xd5\xf1\xfd\x87\xef\x0f\x93\xe2\
+O\xb7\xf3\xae\xe3#\xe2h\x11]\xec\xd6&\x89k5\
+.\x9e\xbf\xa9C7p\x1a\xe0\xb9\xe3\x19\x01\xb7DD\
+\x1cf\x7f\xab@\xa5\xf5\xa2\xa7@<\xadl\xabtw\
+\x0f\xfb\xf9\xd1\x021\xb6\xf3_\xb2\xcf\x8aq6\x9f\xff\
+\xe7>\xfd\xdc\x9d\xce\xddy[\xffs\x98\xfd\x8c%\xd0\
+\xfe\xfa9\xed\xfc\xfa!\xce\x03\xf8`\x88\x84\xd1\xb7\x94\
+\x1f^\x19\xbf]@\xd5}\xcaV`l9w\xbe\xf2\
+\xbc\xfbV\xfcF,\xf6\xf8oeC\xc2\xb8\x1f\x7f*\
+\xa1I\xa5\xde\xc7/S\xacn>\xb4\xb8\x12\x0f\xcd\xf9\
+\xaau\xf5\xf4Ye\xc3\xb9\xcaO\x11\xe3\x0a\x90\xd1j\
+\xfe*\x97D\xc5\xb4\x9a)\x80\xf1kz\xde18n\
+0\xef\x86\x1b,\xfe\xef\xce\x8b\xff\x93(\xaatR\xeb\
+\xa7\xbd\x80\xc9!\x91\x0e\x90\xd1@\x08\x8d\x01S;\xd2\
+\xe2\xd7\x9a\x11Z\x01\x9c\x8f\xde\x07\xb3\x97\xd86\x80V\
+<\xca\x9f\x99O\xaf\xf0\xa0\x07\xdb\xefQW\x07\x1c\x89\
+c\xe5\x0f\xe2\x0by\x80\xf8Y\x02\xed\xfc\xd6\x12\x95\xf8\
+\xa5\xcfA\xc0:\xed\x85Tz\x9b\x99\x07\xb0\xf3\xc0i\
+~\x85j\xde\xda#\x19\xdb\xdc\xe3\xf9L\x09\xd2\xb2D\
+\x13\x01p$\xef\xd0\x83m\xac.\xa6\x11\x0d\x08\x00\xc1\
+n<l\xfb\x0d\xff\xdd}\x17\xf7\xa9\xb0\xcb\x9f\xc4\x1b\
+\xcem\xf1\xda\x0eP\xd0\xe2\xd5\x89*\x00V^\x07\xd8\
+\xb2n\xea\xe9^3\xeb\xee\xfa\x99z\xf2\x96\x01\xb8\xf0\
+}\xbe\xb4l\x98\x9eV\xab\xea9\x03\xb0\x06\x980\xe6\
+/@\xa2\xeb:=\xbdl7\xe6\xfcM\xc3\xbezX\
+\x18\xb2\x0a\x1d\xd6\xaf\xe7\xaf@\x22\xd1\xc5\xdc\x0d0\xd2\
+\x80y\x00\xef>\xaf\x8d_\x94\xe7\x86!\xd7c\x081\
+\x11\x89\xcf*\x88\xdbG\xbe\xc7~\xec\x9f\xf7C\xb9\x07\
+\xb8y\x8e\xf6\x93\xb8\x5cK\x9e\xca<\xa0\x8evJ\xce\
+\x8b\xe2\xf9,L\x1f\xc0\xab\xb8\xd0\xbfs\xff\x9c\xf7D\
+\x003V\xbc\xe3Qy\xa4}h\xfd[/\xb9\xff\xe7\
+ZL!\xa2-=oZE\xd5\x82\x83L\xed)\xe8\
+\x90O\x95\x87,8\x01\x84\x0bo\x8al6LS\x8e\
+P\xab\x89D\xf9\xa2\x9b\x9a\xff\x9a\xf8\xef\xc7d\xec\xc7\
+\xa0\xa0\xb2\xe4\xef\x97\x9e\x90[o\xe3n\x96\xc0\xfd\xee\
+\x03R\x0aI\xf2\xbd^\xbd\x84\x0c\xdb\x83,|\xf6m\
+COND\x1d\x96\x83\xe1vC\x05\xdeu\x16\x5cq\
+\xe5\x01\x81\x11\xd8\x5cn\x99<\xff\xdf\x13\xfd\xc3N\x05\
+v\x1a\x1c\x84?S\xf5\xe70Q\x97 a\xd4\x93+\
+\xa0>\x0dT\xc3\xea-z\xce\x06\x00L\x7fU\xb6\xa8\
+\xd3\xbffz\xcd\x86t\x1ac7\x1fwK`\xdc\x01\
+\x8a\x03>=Dg\x9fpv\x8b\xb3[,\xd4\xc9\xb5\
+\xf7U\xe0.\xf0\x82\x9cK\x98\x8ceym\x1c\x82\x85\
+\x17\xd5P\x01\xca\xf4\x13e\xf3\x7f\xbel\xd9 \xc2\x13\
+\xb5\xe2\x1e\x17F}[\xc54\xd4\x9cNhm\xe0T\
+\xda\x04*\x0dp\xe4{\xa1\xeew\x02b~0$3\
+\x89[S\xfc\x05\xd0\x025\x07\x85\x8a\xa7\xd6\x16\xe3\xc5\
+\x88e\xfa\xef\x12\x00\xcc\x11\x00\x0ajQ\x02\xc1\xeeU\
+\xb4oP=\x1d\x80*\xb2\xae\x83\xa8!J\x9a\xfb\x9e\
+\x80\xc4\x98\xabf\xb4HHU(U\x94\xadSS*\
+\x1c<(\x8c(\xdd\xf6g\x98\x1a\xadB\x8e\x91\xc01\
+f\x9f\x1e\xfe\xa2l\x03b\xba\xf7\xd8\x18\xc7\xff(\x1b\
+\x12R\x09\x89\xb1Bz\xc2\xa9\x16\x07H\x91\xa8\xb5\xd8\
+g\xfcRSH\xc3\xbc@u6mA/}WJ\
+%\xce\x123\xa2y\x0eT\x95s\x81\x1ef\x8du\xaa\
+\xa2\x0f\x88\xd8\x8b\xbb\xecEX\x04\xd8\xa6I`\x06\x08\
+h\x1c\xec\x80\xd4P\xd6\xf4.JTz\xdc\x8b\xcf\x95\
+`K\xccS\xd9&.\xd6\xf3\x91\xf5\x10\xa2\x8c\xeai\
+\x0e`G\xcc\xa8\xa7S\xd8\xbf\x01\x88:\xd0TYA\
+\xc1\x03d\x19\x03\x99\xa9\x1e=\x0f\xda\xd4\x17\x0c&-\
+7z|\xf5\x0c\xaa\x84\x19\xbb\x99\x00\xa6\x03%\x81\x8a\
+^a\x81:-\x19\x15\x85T\xb4z\xfd\xe9\x1dWI\
+\xd6\xeb\xaae(\xfb|\xbaZ\xd9P\x09J\x0f\xeb\xe1\
+MI\xfcJ\xbc\xb4z\xc8\xafT\xb6\xf4\x98\x7fH\xf5\
+\x987\xc0\x90\xe7\xd4@\x8d\x03_\xc2-@\x90\xd0\x99\
+\x13\x7f\xbb\xb5\xd5\xac+\xc2ZJ<w\xe3>U\xde\
+|\xce\x15\xca\xe6\xff\xfe\x9e\xb2-\x10\xe8\xe7\x8c:l\
+\xcc\xa4i\x0e\xfc\x8cqM7+\xdb\x18\x19\x00\xbb\xe9\
+X6?\xb6'\x96m\x896-\x80\xe9)eC\xe0\
+q\xdd\xb2-\xb1:\xfe}\xd90\x867\xbd\x96\xd3\xdb\
+\xcb\xe6\xd7o,\x1b\xd4\xe8U\x0e\x89I\xa6Be\x8a\
+J\x03\xf6Dg\xa3z\xed\xfb7\x83\x85\x98e\xc4\x7f\
+;@\x0c\x83\xa8\x03)\x8c\x08b\x93\xa9\x5c73@\
+o\xf2\xc3\x028\xa4ec??\xdbsk\xc0L\xc1\
+BB@\xf5\xdesM\xbc\xd4\xbd\xff\x19s;\xc7\x18\
+K\x9c\xb10\xd4\x1e4h\xc7D,\xb5\xfd\x99D\x04\
+S\x8a\x9f)-\x9e\xdb,@\xf6c\x17J\xf2\xef\xa6\
+\x95\xe0\xb7k\xc0\xe0\xe2\x07\xfe`\xa9\xa4\xa9\x14\x0b\xa4\
+\xf7j\xf4\xefN@j\xec\x9e^\xe0O^\xcf\x8f9\
+\x9a\xba\xed\xe9\xb6\x83\x08Y\xe2'\x00\x0a\xed\x84\xb3{\
+\x97\xcd\xaf\x8f(\xdb\xfc\xc6\xe9A\xa7\x07/\xe341\
+\x94$|\x9e\x9b\x00\xb9N\xeb\x07lqZ\x17\x00\x00\
+6O8,\x9a\x02\xe7\xdd\xeb\xbc{N7Z\x80\x81\
+\xaf\x5c\x80\x81h\xf14e\xdb\xb9\xa4\xa2NTR\xa2\
+\xc6\xef\xd3N\xb2\xefQ\x9d\x89\x15^\xe3x\xcd\xe35\
+71\xb1\x8e+v\x9a>\xcd40f4\xcc!\xf1\
+g\xef?\x89\x85\x84\xd2\xfa\x16\xb0\xbfs\xf6\x16\xef\x5c\
+\xfc\xfa2\xa5\xa9\x99\x8c\x80\x05\x1aC\xf6\x0d\x0d\x02\xcc\
+\x84$&\xc4\x14\x9b\xc2M[\x05\xd3K\xdc\x1c\x7f\xd8\
+\x15Z~\x12p\xed\x1c\xf3}%@\xe2>\xf1\x82x\
+PA\x0c\x80\x90\x04\xbd\xd5\xe8\x01\xae\xc6\xe1Y\x074\
+-h\x14\x04\xd0\xeb\xf5.\x11\xc4\x5cPi\xa6\x1d`\
+J\xc5N\x14\xb1\x81\x1a\x05L\xad-Z2\xc59\xc6\
+9F\xc3\xe1tV6$V\xf2\x18Sq\x14B\x01\
+M\xceE\xfe_\x5c\xa6\xf2+A7\xde5\xe3\xf6\xfa\
+|\xf0\xefi\x05\xd1\x90q\x1f1\xbf<\x87\x9c\xa7\xfc\
+r\x03*\xe2]qb\xe27\x9a=\xcd\x04\x12\x07\xa2\
+\x8e\xd3`\xfb\xd3\x00\xb84\xc2\xd2\x22!\x0ehq\xcd\
+\xc4S\xa7\x9f-\x1b\x000qP\x98\x17\x0d\x84\xc8'\
+\xedG\x09p\xee\x7f\xf7\xea\xbb\xae0\xa0\xfa\xf9\xab\xf0\
+\x03\x08\xd2\xd2\xd0\x80:\xbfD#\x093+\xad\xc1]\
+pu}\xe2\xa3\xcf)\xdbD[\x1b \xb5\x0f\xe4\x9b\
+\x00\x11\xcf\xcb\xfb\xec\xc6\xea\xb5\xff\xc7 \xc3\xb8\x01\xf8\
+\xf8\x01d\x8cc\xdf\xaf0h\x17`z\xb9\xff\xf6\x8d\
+\xeb\xc1\x18\x91\x1f*\xe8\x01\xec\xd2\xd2\xdf\xf1'\x86\xbc\
+\x16\xff\xac\xa3s\x8d\xb8\xa1\x5c\xd8\xf0\x16\x86qq\x12\
+q\x8e\xc3\x81V\x15\x89\x9bE\xec\xe8\xa1\x83#\x8a\xf8\
+\x0b\x84\x11R\xdb\xd4\x9aPS\xba\xe2\xa2\xb5\x00\x02\x93\
+\x1b\xd2=\xf1\x1f\x96D\x95\x83q\x1d^]7\xea\xfa\
+\xb5O\x1fz\xfa\xd0\x88\x03\xdd.\x0b\xe4\xfc\xf4\xfe\xfe\
+\xda\xf0 i]\x07i\xee\xc4_\x02\xc6\xe1U\xb8r\
+\xad$\xc6\xaf\xcc\xf7\xbe\xc5\x00\x18\x08\xc8\xcb\xbd~\xe1\
+\xee\xba\xde\x9f\x05x\xf1\xd0\xd3\xef\xb5\x96\xcd\xe5\x86\xdf\
+/w\xf2\x9e\xa1R\xe9`\xa9\xb4\xe4\xb7\xb7\xe7\xd4=\
+\xaeo(\x9b\xff\xfc\x8c\xb2\xa1R\xabR~\xd9P\x0f\
+_\xb0\xce\x17\xeeqH\x01\x5c\x88\xf3tbga\x87\
+\xe2\xd8j\xf8W=]\xed4\x8e\x15$.\xc6a\x06\
+i\x9b\x97\xd7\xa22y|\xfc\xf1\xc7\x8f?\xbeT,\
+\x16J`#\xd19\xf0\xcf.,\x9b?\xff\xef\xd6i\
+\x01]y\x90X\xa2X:\xa0\xc3\x00 \x02\xd7=\x8e\
+\x7f8\x7f\xb3?\xdc\xc6\xcc\xf5\xc6\x02\x04\x84\x0a\xda\xe2\
+v(oT\xa0\xa9\xf0o=\xa5\xabh\x0e\xc7\x01a\
+V\x81C\x8d\xff\xfe\xb5r\xd3\xda\x02\x90o\xd30\x88\
+\xf6\xf9|L\x00\x15o\xa2SZC\x1c\x1c\x02\xc9\xac\
+s\xe3\xc3\x1a\xd9\xa6\xda\xafb\xaa\xa2\xe0\xf736q\
+~\x86\xeb>S\xb1\x05\xc0I\xc88,\x81:\xf1\x22\
+H\xae\x8a\xb6\x8a&\xc6\x8cq\xa1\xc4\x00\xad{\x80\x02\
+\x84\x91\x18\xdf\xf3B\xd5\xd5\xf3\xe5{8\x00B]n\
+\xff\x90\xca\x93\x04\xbd[w\x88\x88\xa6\xc2\x8b\x9a\xdc\x09\
+\xb4\x8a\x84\xb1/\x80\x84T\xb6\x8e\xb7*\x1b*\xe3\x00\
+\x0f\xeb\x85\x83\xd73\xe7}\x048\xc6\xd2\xe9\x81\xe4/\
+\x01\x06\x02;\xe3i\x04\x8a\x12Y\xfe\xd3\xe7\x10'\xd2\
+c\xab\xc2\x8a9\x80\xba\x18@\x93x`\xcf\xdb\x16\xb8\
+\xabl\x0a\xec\xac/\xd4z-&(\xd0\x80\xb8P\x06\
+[\xe5\xd9\xb8,\xc0\xae\x83D\x85O\xcb\x83J\xad@\
+Z\x80\xe5~\xa4\xc7\xf4pQ\xd9\xc6\x98\xe9\xdeF~\
+U\x05^\xe2*1\x0ec\xa1\x995*.\xd6\x0b\xc0\
+\x00\xc0\xa6gT\xc2+\xd0\xc8y\xd2\xbd\xff\xf6A\x12\
+\xd7\x9e\x16B;D\xe5\xd6uc\xf2\xbc\xe1\xf0/\xe5\
+\x1f0\x95ZlO+O\x12\x89K\x1eQ6P\xd5\
+\x93\x004\x95\x13C\x02\x10\xf2\xe29\x0d{qDO\
+\xaf>\x009\xfb\x8a\x8dy\xc6I`;\xe0\xd7k\xab\
+\xf5\x82\xff\x91\xe0\xa9\xc8\xa1\xa6kMQ\xc9\xe3\xefi\
+\x92\x00\x0a\x01d\xf1o\x0dt\x00<\x03`\x9d=\xab\
+lI\x8c\x16\xf1\xbdK^Y\xb6\x05T\xc7\x8f*\x1b\
+\xd4\xc3\xb3N\x89\xaa5\x00\x1d\xc0g\x0e\xbf\xd6q\xac\
+\xbf\x1a \xe67\xca\x86^z\xadb\x8f\x9e\x1e3=\
+f\x08\xe0Q*1?\x9e\xbf\x8ey\x5cf\xfc<b\
+\x03\x84\x1a\xd8J\xc1\xe2\xf4mk\xcbW\x8f\xbd\x0aP\
+\xd1\x1a>\x9f\xb3\x02\xc0\xf3\xdf.j\xd9\xdd\xd3\x8bQ\
+\xa3\x12\xa9\xe5\xc5\x180\xfe\xf9\x8f\x02@\x19\xb3\x99@\
+\xac\x81\x84\x9b\xae\x9f+P_\xd6\xdd\xfb\xb6\xfd\xd5~\
+E\x02!>p>K\x181<\x04\x90yn=\xd6\
+\xee\xab\xe6\xb4\xec\xab\x06j)\xad\x95[&\xe1\xc0\xc4\
+\x22\x1e\x1b\xe6\xa7\xe7\xdc\xf3\xdfw\x8c\xc5f\x8e\x84y\
+5\xbdnz\xfd\xf4\xbae:\xces\xa7U,\xef\xcd\
+Ka\x85_\xe0\x07\xf5\xac\xd70\xde\xff\x0cPx\xb3\
+\xe1\xdcO \xdbc\x13\xd3R\xd6\xfb\x1b\xc3\xf4?\xcb\
+\x86q\xbbW\x09\xd0\x9e\xa9\x18-\xd6)>\xcb>\x9d\
+\xbe\xbel\x13\x89\xebi\x0a\xd4\xcc%\x10\xe2L\xe2c\
+\xf6Y\xc6\x88vE3\x89G\xb7\x94i\x950F\x90\
+_\xde\x9d\x8f\xfcrOK >\x89\x0a\xcc\x0f{\xee\
+\x18\x86a\x0a-\xfe\xe8\x1b\x87\xf7q.\xf0\x0b\x98\x91\
+\xc4\x18U\x94\x01A\x00]c[\x01n\xd67\xed\x01\
+S}$D\x12P\xbd\xf6\xd6\xb7\x82\x97\xb8\x958%\
+\xa0J\x1c->\x908)\x10)\xe0\x89\x83\xac\x1b\xc0\
+\x02\x86M\xb4%z|\xa3\x04Q\xdc\xc4\x8f\x02\x94\x14\
+P0\xd1\xe4'\x18o*\xd6\x00\x10\xcf\x8b\xb6\x0a\xa6\
+)\x7f)o\x89\xaa\x7f\x03\x0f\x0a\x03\x80J\x22\x92;\
+\xe0\xb0\xfd\xb0D\xdc\xf3r\xae)\x8c\xa0\x9cc\x0ec\
+<e\x1d\xf5\xd4,@G\x00\xaf\x16G\xa4\x19\xe4\xfe\
+*8`\x18\x8e\xe2\xe2\x17\x0f\x80\xceG\x07\xd0\x14\xd7\
+9\x8fr\x1e\xf6\xf8W\xe3V\x03\xf4\x9f\xeeP6\x14\
+\x8c%\xf2\xfc\x93\x84uk\xd9Z\xe3\x1f\x85G\x85>\
+\xf1\xa8\xf5\x8c1\xa5\x85-\xfb\xaa[\xf8<\x17\xf1\x85\
+\xfcD\x5c\xb2\xd7\x9a3\xdd\xc6\xf4\xb1\x14\xa80\x81Z\
+\x93\xc5:\x07\xf0\x00t\xc4\xcf\xfe\xde\xfd\xb5\xbf\x9d3\
+\x98Aa\xec]\x8a\xe1\xed\xbe+|\xf2'\x189\xf2\
+Y\xfe\xcb>\xda\x17\xbc\xe5\xe1\x80c\xdfW<\xb9\x1f\
+\x07\xedz\x03\x88\x9d\xeb\x00\x92\x18]]\xe6\xd9p\x81\
+\xc6\xc59\x00\xf6\x94{\xbf\xe7BC\xe9i$V\xe5\
+\xc9\xbf\x93\xf8$\xd0j\x87\xeb\x829\x06\x9f\x97\x0b?\
+]\xb0\x22\x17=\x1d\xc0\x0d\xca\x17:\xbd\xb6l\xb9.\
+=Uk\xa0-q)\xbc\xf0\x8e\xc3km\xe3_\xcf\
+\x82\xbd\xecv}\xcb\x9c\xf8\x0b\x930\xdd&\x08\xcb\xeb\
+\x87\x8a\xbf\xb1\x85\xc6\xf7U\x05\xeczC\xab@m\xa3\
+\xbf\x1b\x16\x88\xc0\xbf\xd2\xc8\x8f\x06\xc3\x0c\x9f\xeb\x81\xd9\
+\xf8I8:Q\xaa:\xef\x93\xe2\xb8^=\x1cT\x18\
+\x17\xc6\x83\x18\x07%\x01\xbd\x5c\x0e0\x08 \x15\xf0T\
+\xce\x1d$\x0e\xfa\xa6\xe0atH\xac\xcc\x93\xfe\xf0T\
+z\x22\x06\xd5\xaa\xf0qL\x87\x7f+\x1b\xa6\x06\xa4\x97\
+\xb7{\xe0\xbf*\xd4L\x14\x9c\x04\x16\xed\xd8$~\x00\
+\x0a\x95R\x95?\x22 \x12\x1f\x1b\xf1f\xf3\xaa\xb9\xd9\
+0~,\x14\xcd\x0e\xb8U\x22\x9f\xb8N!\xe8\xf1\x5c\
+\x0e$\x09/\xd1\xaeP\x8b\x0f\xaf,\x1b\xd4\xbb!\xc0\
+\x19\x03\xd8L\x04b\x22*\xa9\x90~\x95&\x8e\xd4\xc1\
+\xf1\x0be\x03%\x0fc\x00\xf0e\x1d]iu\x94\xad\
+\xaa\xcbq\x020\x8c\xdb\xd2\xbb\xe5\xc0OO\xedy\x7f\
+\x9b\x03\xfbE\x09\xf0$\xbc>G \x99\x83\xbe\x9f?\
+@P\x05\xc0t\x06\xe2(\x12[\xbd\x80\x027\xa2&\
+\xfc\x02\xed\x84P\xaf\x89%\xf6:\xe1\xe8\xd3['\x90\
+<\xbbg\xd9\xb0.1\x09h\x92D\xfc\xac{\x04\xfd\
+9\x89\x929\xaaM\xa1\x92@\xa7\xa5D\xa0~\xfa\x81\
+\xb2\xa1\x92\x05\xb1E\xb5M\x8fVS\x88}O\x8e\x97\
+\xbfJ\xc2\xdb\xe2{y\x1e\xcd\x18\x22\xe2\xe8\xbe\xfaA\
+\xed\xa4j\xae%\xc0\xfe6g\x97\xc3\xe6\xa7\x89\xf6a\
+\x0a\xa8\xa4:h$\xf4\xa8\xc3\xc6\x95\xd1\xd2xG\xd9\
+0\xbeM`\xee\x80S9\xfb\x97\x85\xd4\xbb\xf5\xee\xeb\
+\x09\x06\x0ca\xb6\x08\xa8$\x9e\xa9@\xdbg*\xf0\x0d\
+\xd0\x11?\x04\x0c\xa7\xc7\xb5\xa9\xee\x0e^\x1a\x0f\xa9D\
+\xf6\xe7`\xda\x84\xb2)\xe1\x99\x9eU6\x88\x06\x9a\x03\
+\x9e\x80P%\xad\xc7\x01J\xd0UN\xf4\xa4g\x1a\xc5\
+\xf4\x89e\xc3\xe7\xbdhm\x91:=\xa8lP\xaf\x8f\
+Zq\xbfji\xd2\xaa\x13\x86\xd1\x1c\x8c\xae\xd3G\x8c\
+3\xdak\xdf\xf8\x91x\x08\xc8\xf8o\x81J\xa8\xfb\x9d\
+X\xab\xa0\x12\x9fTi\x92\x98~\xc7|\x1a|\xc7\x92\
+\xf8\x7f\xdd\x92\xf8\x0b\x8c\x05JZ6$\x04\xc6\x16\x02\
+\x14\xa9U\xab\xdc\xb8\x1fa~Lo\x9d\xde2\xbde\
+\x13I\xbb\xe4\xc1e[\x22y\xfc\x94\xb2-\x81\xa0\xa5\
+\x82\xe29]\xb7lk\xfdjf\x9b\x9e\xfb\xdc\xf7\x06\
+h_\x92\x0a\xeb\xffLn\x96\x00\x00 \x00IDA\
+TS\xd6\xf58=d\xfa\xe6\xe9\x9b\x07\xc6\xd0\xf7f\
+\x8c\x5c\x9d\x16\xdf6\x009\x18/D\xd4J\x1a\xb0\xc6\
+d\x15\xd1\xa2\x02\xed\xef,[\xb4m\xd6\x96\x00\x89\x92\
+\xfb|\x9d\x95\x114\xdd\xa3l\xfe\xfd\x87\x95-\xf1\xcc\
+\x9a(<|\xd5\x84\xc1`;\x9d\xads\xae\x8d\x8bm\
+\x86\x0b\xea\xf2\xb5\x12\x88\x9b\x12a*\x09j\xa9\xcf\x17\
+\x0f\xa9\xf0\xec\xa7I(\xa0x\xae\xd1\xfa\xe8\xb1\x85\xd5\
+\xe3\xfa\x8c\x81q\xf3\xc2yU\xbep`\xdax\xff\x0a\
+\xaf\xff4@\x5c\xb5N^T\xb6\xf4\xd6\xaf\xa2\xad\xbf\
+\xb7\x02\xf8\x00\x96R\x00*\x0d \x22\xd2\xd3\x03\xa7\x07\
+L\x0f\x5c\xb4g\xde\x5c\xf7\xaf[\xacPP\xb5\x96\x19\
+\xdbYZ\xdc\xd7[5\x13\x96i\x18\xd6\xaf\xeb\xd1r\
+\xe0\xbeH\x90Pl\xf9w\x89Z4yN?\x95\x84\
+\x1e\x90\x08`y\xc2\xc2\x1d\xe8\x8as38\x00\xc54\
+\x17\x88\xe2\xbd\xbblK<\xa6W\x96\x0d\xe7Y(\xc7\
+Mmw^J\x94%\x1c\x12\xd5\x88\xd2v\x9c'A\
+\xc1D\x958bp9\x9fi\x01`\xc8(\x18\x01\x8a\
+\x03\x9060\x1d\x7f\xd6\xbd\xc1\x00$\x89\xa6\x96(b\
+bZv\xb4\xbe\x11\xf9&V\x0a@\xce\xf3\xebDY\
+|\xe8\x5c\x02\xec\xfa~\x12\xcd\xdd\x98\xc5\xce\x13\xc4\xef\
+\xae\xcf\xba\xf7\xbc\xf3\xdf\xbb\x80\x00`\xd0#\x1e\x7f\xd3\
+Th\xf1\xa2x\x88\xf8\xa7s\xc6\xfd\x00\x04\xa8\xf4\x8a\
+\xbf\xc5\x93z\xac}\xae\xf8\xd1\xf5\x06xnf\x87\xf3\
+\x1d\xf0N\x13(\xa2\x84\xce\xdd\xf6\xb7\x80\x02\xc0\x84s\
+M\xa1A\xde\xe3\xfb\x1b\xe3\x08\x18R1\x96h\xfb\x1c\
+\x00\x03M\x16\x8cJ\x8cA-\xa8\xfb\x9ep\xe2\x89\x0a\
+_9\xd7\x9bR/au\x8ebN\x9a\x86@\x1c\xf6\
+\xfb\xca\x86\x16\x1c-\xca\xee\x87s\xcd\xab\xbc\xcf\xabs\
+\xdfy\xac`\xb1cp4\xc3\xcd\xf3\xf2\xefMa\x88\
+\x88^3\xbe\xe4\x0b\x00\xadg\x97mq\xa3\xe9@\xa7\
+\xf7\x97\x0d\xa2\xae\xcf-\x1b\xee\x93\x04\xdc\xf7\x91\xf7\xee\
+\x0a\xe2}]\x9e\x8f\xfco/\xe2\xee9[\xd7\x0ay\
+\xf6\x8f\x82\x991\x93\x98\x90\xce\x05\x9f\x0f\xf0\x12O\x8a\
+'\x00\xbb\xe2}LB\xeb=\xefs\xae/\x10B\xe0\
+\x81\xfb\x87\xfe\x81\x9e\xf8\x9dJ\xff\x82D\xbd|\xd8\x08\
+\x12*\xd4\x04_\x18\x92\x94\xb9\xda\x9d\xf8\x98\x9f\xb8\xa7\
+\xf6;8\xdcx\xc8\xd7\x9b\xd2\xf3K\x8d\xf7me\x0b\
+\x12\xb4\xaa?\x968\xcc\xc5\xc3\x03-i\x98\xdf\x8c\x98\
+\xd4\xdd\x07\x07\xa4\x22_\x8f\xef\x0a\x03\xf5^e\x1e \
+\xe2\x81p\xe8\xef\x5c\x06\xd9]zz\xc1^\xb4O\xc2\
+f\xa3\x7f\xd0\xa2\xaf\xbf%\x10^9H\x1b\xbb\xdc\xfe\
+;\x87\x07\xee\xc1\xd56\xf8\xa4 L\x1f\x91J\xc1\x97\
+-\xd4\xfc\xd9\x86\xb9\xe0*AZ\x17~\xbal\xfe\xfb\
+\x0fZE\xfe:p\x17\x10\xe8\x917v\x89\xda\xae\x03\
+\xe6\xd3\xf2{?\xbf\x06\x16\xa7\xf7\x9e.:]4T\
+\xb2B\xdd*m\xe1R\x17\xf6\xfe\xd3\xa3\xca\xe6\xe5t\
+\xd3s797\x1f\x8cg?Q\xb6Q\xa8\xf6\xa2\x92\
+\xddS\xaf\x07/\xe3\xbd\x9a\x12k\xdc\x17j\x93J\x89\
+\xde\xcdT\xca\xdb\x81D\x8c\xa9\xc7\xcc\x01\x04\xf4\x1cB\
+\xbc#\x0a\xd2\x88\xe4n,K\xf7\xa4\x9a\x87\x8c9\x90\
+J\xbb\xfb\xda\x14o\x81\xac\x0d\xea \x14\x90\xfd\xc5\x0a\
+ to\xb9\xd6\x85\x91\x1a\xf4\xfea\xec\xdam\xd6^\
+\xc4\xee\xed\x848\xebu\xd2\xbb&\x91\xc4\x94\xb0.\x89\
+\xbep\xbc\x00\x09\x01\xbd\x1e<\x09\x89\x7fg\xdf90\
+\x00\x1a\xa8\xd6\x99?\xdf\x07\xcc~j\x87\x1f@\x80\xf9\
+\xf5(\xcb\xa1\x8e\xf5\x5c\xeb \xba\xdd\xb3e\xacP(\
+\xff]\x99\xcbs\xb9\xe4UeC/g\xa8\x83\xa7+\
+\x97m\xd3*:\xe1\xdc!\xc5\x1c|\xf7\xd0s\xc0\xa9\
+\x9c\x9f\xbe\xb0l\x00\x129~\xeb\x11\xa3\x82\x86\x03Q\
+&\x8c\x82}\xc5a\x87\xec[g\xf3\xf3\xbd\xcd\x024\
+\x0a\xecU\xe8\xb3\x9fZ\xd5\xdd\xbfs\xc0\xfa~\xbb\xb1\
+E*\xda=F\x90_\xf6\xfb\x00CL\xac\xf2J\xf5\
+|n\xb0\xb6\x82\x9c\x8e\xb9\xa1\xde\x97\x9f\x10P\x09$\
+\xa8}K$T\x8e\x04B\x98J\xees*7=\xfe\
+.\xeb\x9f\x9f\x96P5\x150~ZKK'\x5c\x10\
+r\xa2\x86\xce\x13=\xd7\xa1\xbe6\x10Wi\xfa7/\
+\x94\xeag.\x00\xe3\x13\xe6\xfb\xf3\x84\x01(\x8a\x9fn\
+\xbf\xe2@v\xdf%\xd8\xd9\xff\x9d\xb0\xaa\xa4\xba/Y\
+\xc7\xc7\xc7\x95\x0d\x80Q\x12\x8a\xc3#\x02\x84\x00\xbe3\
+\x16\xa9\x13R\x07;\xf1\x22\xf3\x80%F\x12\x04\x01!\
+\xea\xe2\xe7\x1c>{\xa9\xc0\xddz!\x83o\x010\x86\
+\x04\xed\x10\x8c<\x8c\x0a\xebYK\x17\x80/\x95L\xea\
+\xf7\xf6\x0f\xf5\xe4\xa5\x8et\xdbaZH\xfc\xe1\xf4\xea\
+\xb2\x8d:k*\x8a\x04\xc3X\xd5\xe9Ae\xdb:6\
+6\xf4\xf0\xd2\xb2\x81\xc2\xac5\xcb\xba\xe1\xd7\xe2W\xa7\
+\x9b\x94\xcd\xff\xfeG\x8e\x8f<>r\x19\xe7\xb8\xfa\x97\
+\xac\xf3\xe9\xf2eC\x05*@fk\xc3D[\x05\xb3\
+\xee\xf0sk\xef\x7f\x9f\xc7(\xf8\x11]k\xb1\xc2\x1f\
+_\xa9\xb9\xd3\x8d\xa6\x1bN\xf3\xfd9\xbe\xa4lX\x97\
+(\xefY\xc7\xc7\x1f.\x9b\x7f\xff5k\x0b^3i\
+\x88\xc5\x9a\xde\xb0kq\xe9\x84C\xa2b\xfa\x8e\xc4D\
+\x80\x89\xb1\x01\xb0\xbcm\xa8\xfa\xe2*\x0c\xb6k-\x90\
+\xc3Z\x11\xba\xca\xd0\x9b\x1e\xe0z\xb9\x0f\xcfY\xbe\xff\
+\xa2]d\x1f\xd1\xc2PPX\xf6\xfb\x9d\xd3\x8b~\xc3\
+\xa5\x10q\xd7\xa5\x10!\x81q\xde8\xdf\xc5\x83\xce\x09\
+\xf1`\xe2\x9b\x16\xb9B\xedF\xc9&\xe6\xe9\xbe\xa0\x8a\
+\x9b\x1f\x1e\x8d\x86E\xb9\xe92\xc3\xf7\xf4\xfe\x98U\x00\
+\xda\x00\xbf\xddRE\x0c3b\xabz\x91\xbb\x07\xf7\xf9\
+i\x05y_\x18A\xdf\x93\xb1\x8c8\xa3\x17\xa4u\xf4\
+\xc7\xc3\x00\xd4\xaaF\xb4V\xc2.\x91\x8b\x98[3 \
+B\xc5m\xe6@4\x1d\x9a\x1a.\x1eT9\x05\xb0W\
+\xc7\xf65\xb2_o0$\x94\x12\x01~\xc2\xe7a\xc4\
+z_q]\xe2\xf3\x06\xc6Tl\xb5\xd2\xa9\xe0\x8b\x87\
+\x9c\xe3(\xca*\xcd\x18u\x12%\xd7!\x0e\xa6Ro\
+J\x0d\xaa\xb6u\xa2`\xa8%\xd8\xba\xe5\xdf\x9d\x83Z\
+\xa8r\x9e\x9e\xbe\xbcl\x88\xb3U\xeeQ\xe5]7f\
+\x99\xb8\x06\xd0\xbdg\xd0\xf1\x83\x80\x0d@v\x18PM\
+\xe5v.\x02\xce1R\xf8\xd9\x5cOk@8g\x01\
+x\xce\x17\xe7\xb9\xeb\xf1\x5c\xdc7\x85\x0a\x95a@-\
+\xf1^\xcc\x18\xdf\x1b\xe3\x8fh`\x0a\x19\xcd\xd4\x10\x07\
+\xec\xa8\xe3\xa7?*\x1b\xe2\x1c\xf9\x1d\x00J\xe2\xcd\x1f\
+I0\x89\x22\x03\x88\x15z\x01h\xc6g\xd2\xbe\x10_\
+\x12eNa\xb1\xff\x1c\x00\xa0\x0b3\xd6\x07\x80H\xfe\
+\xe7{)D8\xe7]/@O\xbc\xab\xc5\x9bf\x95\
+\xfc\xd6\xf5\x00\x10\x88\x7f\xd2\xe2\x90\x17\x99r#\x9e\xf7\
+\xdc\xbc\xbf\xfbe\x1d\x02\x04z\xfex\xd6\x99\xfb\xf7\xff\
+\xd2|s\xff\xadG\xf1\x94<\xd3\xb9\xb0\x17\xa7\xde1\
+\xe6\xfb\x15\xa0\x0f\x08\xc0\xf4\xc3\xeczx\x19\x11\xc0\xb7\
+\xe4\x83\xde=\x1c,.\x0c\xb5AerG=\xe8\x05\
+\x0b\x11\xa2\x82\x0fI$.H<L\xc0#\xf1\xd0\x8b\
+\xc5\xc1\x01\x02\xfc\xbd\x04\x98\x83\xf7\xa0\xf4\xe6|\x7f\x10\
+\xaf\xdb\xaf\x14\x94\xe3W\x96\xcd\xafW)\x1b\x90\xdcZ\
+\xae\x0fN@{\xc7\x01\xd8\xa8\xc73<\x88%\xa1\xbb\
+\xc2\x80<y\xb0n4&\x80\xc4\xbe\x8e\xb5k\x0e\x0b\
+\x15\x05\xe4\x1a\x8b\xae\xebz\xe0~\xf0\x008\x8cc\x1d\
+\xde\xb3%\xd0\x8d\x90V\x18\xff\xbaa\xe3q\xf4\x1e$\
+\xd1\x8eJ3.NE\xe9\xd3\x07\x84\x17\x85J\x8f\xbb\
+@\xf5\xf3WGq\xba\xcf\xe9\xde\xa7{/=n\x8b\
+\xaas#\xb7\xa9\xe8\xce\xe9\xee:\xd6\xef/3\xbe\xea\
+\xc3\xf2\xbdn\xb9&H]\xe1J\xcf`\x8fe\xba\xf1\
+*N3\x87\xfbK%y\xfa\xd8\xb2\xf9\xf5%e\xf3\
+\xebo\x97\x0d\x08y>w\xfa\xac\xb2!q\x86\x00\x03\
+\x8cv\x15\xa0\xc3\x15\xca\x06\x0a\xaf\x7fG\x04\x0a\x10\xe0\
+{Y\xcf\x09Dz\x1e\xb3\xf1\x5c*\x05qd\xadV\
+-pA\xe5IeP\xc0@\xbd\x1e\xe5\xb8)\xd5\x90\
+s\x81\xddM\xff;\x15\xe7\xf0\x9aUD\xd1\xf3jQ\
+B\xd4G\x07\x1e\x07%1\xbc~64\x87\xaa\xd7-\
+\xd7\xd5\x00\x1e\x8a\x93\x8a\x80\xfd\xc4\x81Y\x1f\xbe\x9f\xe7\
+!qwA\xd6\xe5\xbe\xe7\xc9\xba\x84\xd0Zwzh\
+1X\xec\xbb\xfd\x5ci\xe2R\x17\xad@\xd2\xe9ze\
+\xf3\xebG\x95\xcd\xaf\x9f]\xb6\x05.\xcd\x80H\xc2h\
+N\xb91~Zd\x1a\x81v\x9f\xa3*\xdes\xd5\x89\
+\x02e:B\xb7PP\xf3\x0d\x83\x86x`\x07p\x80\
+&\xc8\xb0\x04\x16\x00\x83\x0a/\xa1\xd3\x83GUYe\
+h\xdf\xb2\xe4 \x15\xa8\xd0l\xf0\xdc\xe2'\x9baB\
+e\x98\xff@\xa1\xd7\x22\xa4\xc5F\xa0\x96\x16\x9f\xeeU\
+\xe4\xaf\xf9s\xd41\x94\xf8\xdb\x1b'\x97\x83\x89\xdf\x05\
+\xc8\xde?\xd35 \xec\x025\x81\x99\xdf\xb7\x8eS\x91\
+;\x5cP\xb6\xcd\xd9E\xb9n\xe6Ez\xb0\x8d\x8d\xec\
+\x03*\xa2f\x9d\x00\xa10J\x94\x89K\xa1\xe6g\x0e\
+|\x03\x9d\xa1\x847\xa3\xe9\xce\xeb\x14\x8b9m\xf8\x8e\
+E\xdc-\x15\xf2n\x01\x00\x08\xd0\xd2P\xb9\x11\x18\xeb\
+\xe9\xcf\xba\x9c>\xbf\xec\xd2-;\xd6\xc9\xf1Qe\xc3\
+\xc1\x0d82\x0d\xa4\x12\xa8\x1b\x0f@7\xff\x04X\x13\
+\xc8\x02|\xa2\x95\xd1\xe3\xff\x9c\xb7z0\xb5j\xa8\x04\
+\xa8\x88\x98oL\x5c\x0d\x00\xc0\x1fX\x7f\x02IS%\
+\x9e^6\xb4\x82\xd4>\xfa\x86\x058\xfd\xe6\xd2f)\
+\xc2~Q\xf6{\x7f\x00,\xafU6\xdf\x9f\x7f.\xdb\
+ZK\xe6\xab|b]\xe7\x02 \xbfw\xa8\xe4\x008\
+\x5c\x97@\x19\x90f\xffP\x9d\x0f\xd3\xef\xf4\x9a\xb2e\
+\xbf\xd1R\xb9\xef\xe1\xbe\x9bX\xd5\xf1}\xc7\xf7\x1f\xdf\
+\xb7LuyzMu\xb1\x0e\x1b\x00\x15O\xfc\xd82\
+8\xab\xc7J\x9e^:\xc7\x15/]\x988\x0b\xe5|\
+\xfa\x9e\xb2\xad\x17\x7fzg\xd9\x22Z\xba\x02\xc7\x18\x1a\
+\xc4\xf2\xec\xef$0\xa7\xaf\xc8y\x9b)&\x87G\x96\
+\x0d\x89\xec\x0bO/\xa8\x00\xfc\xf0\xb8\xf8\x15\xebL\xcb\
+E\xa8\xe1Ktr\x96\x7f\xf7\xa6\xc1\x7f\xd0 @\xf1\
+\x96\x80\xd9/\xb4A\x8c-\xc3\x04\xcb\xfd>}d\xd9\
+\xa0\xfd\x04\x10\xb9\xe4pq\x01\xee\xa7[\xaf\xf3\xb5\xe7\
+5\xb7\x14\x1c\xa6\xcf\x9d>{\xfa\xdc\xa1g\xd6:\x05\
+\x14\x03\xca\xb5\xc8\xa5\xe7\xbf)\xf1\xce\x19\xbd\xcd\xfc\x96\
+\xd6\x19@\xbd\x84\x1f\x80\xeb\x1c\xab\xf4\xab\xa8\xff\xf7]\
+\x9f\xf7\xe1\x11\x87\x1fYZ3n\x1e?A\xdbAK\
+\xa1\xf5MT\x94\x0a\xbc\xdeZ\x05\x14\xeb\x0d\xe3-\x15\
+\xb8f\x0c)89g\x14\x1e0!T\xa4\xc5-\x19\
+7\xdc~X\xe5\x11\x93\x90\x98#\x86\xc0\x7f.M\x11\
+\x1b\xf3\x0b\xe59\xcc\x94.PX\x17u\xfd\xf7\x08U\
+\xfaO\x86\xef)\x81\xc5p\xc4\xb8\xa5\x0dD\xe3\xe9U\
+eC\x02#1\xb4~\xc5\x01\xbb\xb9\xe7\xcd\x18\x00(\
+\xd2\xc81w\xde9\xa0@\x04\x18\xb7\xbfs\x7f\xbb\xb2\
+\x098\xe2\x8f\x14nP\xdbQ\x98\x89\xc6\x89\xfb\x9d\xb7\
+\x18s\xbbi\x04\xddr\x94\xde\xf5\xd6\xd0\x00\x5c\xb8?\
+\xe2\x17\xe7\x84V\x1e\x94zc\xeaT\xb41\xfd0Y\
+\x8c\x13\xe5\xc7\xb4\x0a\xd2\x16\x11\xff\x00\xc0\xecO\x8c\x16\
+\xf7\xf5\xedeC\x81\x92\x1f\xf4*_\xe1\xb7\xe4\x1b~\
+<\x7f-H\xf6\x9f\xf8Wk#\xe0\x0c\xa0\x00\x80\xd8\
+\x03\x00\x12\xcd}\xfc\xe8\xef\x01\x1bz\xed\x89\xa7\x9a\x0a\
+B\x83\x02\xf0\xe3\xfe\xa9\xd8X\xf7\xd6\xb7\xf7\x15\xe7\xf8\
+\x01,\xb8\xaf\x98\xaf\xc6\x85\x02D1\xe6v\x0c\xd7f\
+N`\x0c\xb9\x1f\xb4\x16\xc4\xdb4\x0b\xfe\xb6l~l\
+?[6\xfb\xbb_)\x1b\xc6\x87\xdb\x0f\xf2U\xe7\xbf\
+\xf8\xca\xfd\x03$\x8fL\xfa\x8b\x87}\xe5>\xf0;\xe2\
+cy\xa5\xfd\xbeg\xd2\x8c\xad\xf9W\x1a\xd6\x93\xf5q\
+\x99\x1d\x03\x1e\x10j\xff\xc9#S\xd88\xd7\x0b.\x09\
+e\x1f,n\xa4\x83G\x80\x03\x18\xf0\xc5Q\xf0kl\
+\xc2+\x06\xe4\x92\xa3w\x80{\xb0\xfb^a\x1b\xd1\xdf\
+[X\x10u\x07\x81\xc0F\x82\x0d\xd9\xcc\xc1%\xe18\
+}F\xd9\xfc\xfa\xaf\xb3\xbd5\xc8\xf9\xf7\x0d\xea\xd8\x90\
+\xbe\x821.?|.d|\x0f\x80\x00\x08\xc6\x07v\
+\xf1\xb01<8\xea\x98\x1c\x8a\xd6\x09\x89\xbeW\x89\xa9\
+\x07Y8\xd7\xcb\x07\xc7\x16&A\x07\xca\x0ex\x1b\xde\
+\xbf\xb3P \xc0\x18\x03\x09\xac p\xe6a\xf6\x98&\
+\x89\xd6\x9bV1\x8fN\xa4B1\x0d\xff\xa1\x80\x83\x05\
+\xe9\xed\x0d\xf6\x9c\xb5'\xf1\xf4\xf5\xebX\x90V\xc3\xff\
+\xaa\xd5\x01N\x0f_E\x93\x0e\x97[+/\x0e\xf2\xe9\
+\x13\xca\xe6\xd7/*\x1b\x9e[\xc6\xd2\xb4(\x9fD\x1a\
+\x13@BNL\x89\xe8U\x02\x86N\xc83\xe7\xb8\xa9\
+\xcd*S\xa6\x02d>sO\x01P\x81\x03 \x84\x1a\
+xxu\xd9\xa0\xca\xe9\xdf\x85\x22\xa4\x17\xac\xc79\xa9\
+$Ad\x7f5\x09e*\xa64\x18\xce\xfb\xc4\x1c\xc8\
+\x00%\x22f\xa8\xd1z\x94\x89\x0e\xaaDKL\x05\xac\
+\x12l\x0eH\xc5\xf7\x8fVm\x87V\x8b\x95H\xe6\xba\
+\xdb\x11\xec\xe78\xdbO\xd6\xfb~,\x8cD\xdf\xef\xdb\
+\xff\x02\xbd$~=&f7f\xac\xa9e\x12\xa8\xc7\
+.\xb6\x89\x86%\xf1oQN\xcc\x0c\x8c\x06~ \xfb\
+\xff\xf8\xba\xb2\xf9\xf5\xdf\xcb\x06\x0a^*s\xe7\xae[\
+6\xff\xf7;\x95\xcd\xaf\xef)\xdbD\xb8L#\xe8\x00\
+\xd0\x14\x05\x22_D\x7fP\xe6\xfd\xbb\x04J=\xeeF\
+e\xd4\xfd\xd0k\x17*l\xb7\x98`\x1c\xf0W\x80\x1b\
+\x0e\xda\x81\xb7\xbf\xcf*\xb3\xfe\x9d\x03:\xfe\x18\xa0\xd1\
+\x81\x8d@\x03e\xd6zA\x0dM\x22\xde\x81\x99\x00\xc6\
+s\xe6O$\x1e\xae\x13B\xcd?\xea\xc1\xfd\x84$\xb2\
+(\xf6;Q\xc8\x0e\xdc\xacW\xe2\x95\xf6cz\xd2\xdb\
+\xaf\xf8\xde\x02\x14\x14y\x89\xbe\xf3a\xd7\x12\xd6\x01\x8f\
+\xc46->\x9d \xdb\x07\xe9\xc5\xec\xc4\xda9\xb4S\
+\xe9\xc5$\xe81\xa2\xa9@/\xd3c\x1e=P\xeb1\
+?\x04\xf2\x12\x840\xa7ZL\xf4)e\xc3\x18C\x07\
+\xb1uR\x09\xc5\x95\x86\xd6.\x95J\x01\x151E\xd7\
+I$\xca\xf7\xe6\xef\x052\x182*\x80\xa6\xcd\x080\
+\xd2\xb20P\xe9\x97\xfd\x8a\xb1\xb0\xaf\xf8wE\x0a\x05\
+\xfeY\xe7\xfd\xc6R\x11;\x7f\xf6t\xe7\x0f\x89\x92s\
+\x92\x16J\x80\xd1\xd6\x140~3\xea\xd3\xa7\xab\x9c\xae\
+|\xba\xca\xb2\x8f\xdfu|\xd7r\xdf\xd6\xdf\xb7.^\
+W6\xf8#S3~\xa4l8\xaf\x92pwB-\
+\x91PQ\x12\x87<5Sr\xfc\xe4\xfe\xf7>#\x1a\
+\x8cYx\xf3\xc3-\x96V\x9a'&\xa1\xb3\x0f\x14,\
+\x02D\x00\xae\x05j\xfcR\xc7\x09\x803\x01\xfe\xa7\x9e\
+\xeex\xba\xe32\xa6\xf8\x9d5\xa6\xb7\xcf\x89;E\xb5\
+;\x0c\x97\xd6\x96\x00\xf8\xd0\x90\x10\x0f\x88\xbb\xc4\x05(\
+\xe2\x9f:\xdb\x1d\xf2\xfc?|\xf0\xa3\xfc]\xa9\xf3\xff\
+\xf5\x96`\x1d_S\xb6\x89[\xf6\xd4\x05\x00g\xad\xf6\
+\xeb-\x00\xc6l\xcb\xe7-\x7fn\x11M\x9a:\xce)\
+\x15S\xcf?\x22\x87]\xd1\xb3^\xf9u\xd7\x8f) \
+\x1e\x04\x0c\xa9`\x89\x1f\x9dc\xb4\x87j\x0a\xc3\x8f-\
+\xd3\x84^\xbf\xcc%\xff\x87$\x80\x0f\x89v\xc0k\xd6\
+\xb1\xa8Z2\x9a\xc2\xfcSaH}\xe3\xae\x90aj\
+\x8dJ9@+\xf1E3-T\x1ci\x14\x89\xe7\x1e\
+\x9b\xc2\xd6\xb5\x92\x18`\x5c\x19\xabK\x0b%\xfbY\x5c\
+\xd6\xcfSe9qP\xb7\x9e\x89\x07\xf8\xe1OK \
+\xffI\x01*\xefz\xb8\xcb2N\xac\xa2\xcf\xa1u\xe4\
+R\x858\x80\xbe\x02\xc5\x8d\xcb\x06M\x11\xf1\xbesM\
+\x82\xaa\xe2\xfe\xe7e\x03c\xc4\xf3t~\x89\xf7M\xa7\
+\x00\xf4G\xc3\xab\x0b\x1a\x00bc\xea\x14\xfa\xf6-\xc5\
+\xf2\x90\x00\xa3-~ml\xaf\x04\xdcXg\x09\xb8\xfd\
+-\xc1\xb5\xce\xf8U\xadv\xae\xc7\xfdw.H\xb4\x14\
+2\x88\xa6I\xc4\xac#\xef\x83\x01\x08\xb8\x11\x9f\x01R\
+\xaco~\x01\xd0\x22au?\xb4 \xd2|!\xdeJ\
+\x5cO\x1e\xb4\x9b\xe7~\xfa\xa7\xb2\xe1s\xb5\xb8h\xb9\
+\xdb3h\x02\xdc\x18\xc7\xacw\xbc\x0b\x05\x00\x87jA\
+\xbd\xd2P\xb9\xf6\xea\xba\xc7\xd6\xf1\xf7\x0d\xebw7%\
+\xe3\xf0\xf1e\x83\xaa\xbf}\x0c\xa0\xcc\xb9\xd6\xd3\x1a\xc4\
+\xb1\xde\xd7\xf3\x10\xa7*X\x89\x0bh\x04\xf0\xb7\xf22\
+\xa2\xd4\x18>\x99\xde\xd4\x00\x91\xde{\x0c/Z\x19\x01\
+\x22\x01Z\xa7\x1b\x96\x0d\xf9\x85}\x22\x1eq\x8eXG\
+\xfc\x81\xfd\xa1p\xe6G\xfc\xe7\x5cv\xdd\xee\xa7<\xcf\
+\x98e\xc0\x15qL\xdfO\x5cm\xbf\xd8\xaf\xf6\xa1\xf8\
+Q\x8b\x14\xd1^\xcc\x8c\x14\xf2\xcf\xb5\xe8\x9d7\xe2h\
+,x7^\xc0h!\xefU\x10\x05r\x12\x0d\xbd\xa3\
+\xa5\xd2\xfb\x89q\xa0w\x1bn\x94\x1b\xa0\x12ic\xb8\
+\x81\x90E\x08\x8e@\xc3\xbfK\x02\xd7\xf3\x89/\x9c\xed\
+?6\xaa!jf#\xb6z\xdcZ\xc5&\x89\xbd^\
+|\x80\x80\x8d\xebg\xd7\x93\xd3\xe3\xfd\x04\xf0\x1e\xdc\xbb\
+\x97\xa3dk\x11P\xd9\x19\xe7AN\xc3F\xe5`$\
+\xfe\xe5\x96_>8\x8cz\x0aW\xcb\x82\xf8\xd0\xa1\xe7\
+\x9e8\x96\x00\xc1\xfd\xf0\xfe\x90FT\xc4\x04\x16=N\
+\xed\xf5\xa1~\x05!<~_\xd9\x10\x18\x9a\xc3\xfeo\
+\xab\x18\xc6\xf4\xe1e\xdb\x98\xb6\xeem\xa5\xe6\xff\xacu\
+l\xd4\xe1\xd9\xab\xc3\x99\xc3\xec%p\x9e\x9e\x5c6\x8c\
+}\xb2\xf1\x04T\x1c<Q\xb9\xfd8\x16b^\x10.\
+\x88\xfb\x1b\xcb\x86^r\x07N\xa8\xfc=\x8fX\xa2n\
+l\x98\x00\x88\x16\x80\x96\x07j\xe1\xa8\xfez\xe4\x00\x0f\
+^\xb5\x12\xa4'\xbdU\x85Q\x03\xffv\xd5~8\x5c\
+0_\xdf\x05\x03\xb5[ c\xdd'\x81\xe9\x16\x18\xda\
+\x07\x90d\x08\xbe\xc0\xca\x81l\xfd\xd9\x9f\xee\x07\xa0\xc1\
+:0\xf6/\x22\x91}\xb0\xf9\xf7\xd6\xed~\xaa\x86\x83\
+\xdczWa}S\xd9\xf0\xfe\x9e\x9f@@%\xcbX\
+!\xbd\x9e\x10\xd7\x88Y\x95\xe4V\x89nu\x85\x1f\x15\
+0\x89eS\xb0\xdf\x919\xacU1\xa9\xb9\xceW?\
+]\xedt\xf5\x8d\xd90\xfd`\xd9P\x814\xd6G\x0f\
+/\xd5w\x94O\xd3ETh\x8c\xc3\xca}q0\x1c\
+?P6\xbf\xff\x0d\xca\xe6?\xff\x9f\xb2A\x8c/\xd4\
+\xf6N\xf0U\xdc\xecg\x0e\x99V\x85\x04T\xe0\xee`\
+\x94\x08\x8e\x8c\x9ek\x0c\xaf\x9e/\x7f\xc7\xa1\xdb\x07\xd1\
+\xfe0o\x9bC\xef\x1e@\xf7U\xe5\xdcA\xe9\xf9c\
+`\xa1\xd8\xf2\xbb\xd6\x99\xef\xeb\xe0H\xa0\xd8\x80\xac\x80\
+\x07\x22\x1f\x15y\x81E\xb7\xc8\xa0\xfe\x87\x1a\xd9\xad=\
+\x804\xe3\xd5R\xa9\x9e\xfe\xb8l\xbe\xef?S6\x5c\
+/J8\xb16@\xae@OE\x93\x9f\x15\xf0\xea\xe5\
+\xa4r\x1f\xd1\xb0\xbe\xbf\xfe;-\x05\xd3.\xcc\x83V\
+Q\x8a&H\xdf/\x81\xe5\xcf\xa7R\xf4\xa4u]I\
+\xf81Kz\x8a\x89\xf3\xd0\x94\x87$\x10K\xe01\xef\
+\x9f\xe9\xfee\x1b\xb5\xbf[R\xcc\x93Oe~\xfa\xc8\
+\xb2-!;~k\xd9\xf69]\xe9\xd7\xd2`N\xf0\
+-\xcb\x86\x16!\xaa\xf4i\x95\xea\xcf\xd3B\x86\xca\x1a\
+J\xf6\xf1\x8f\xca\x16\xe6\xc7g\x14\xf3\x83\x96@?G\
+\xadT\xb9/\xc6\x94u\x00CU\xfd[N\xdfz\xfa\
+\x96%\xd0|J\x05\x9a\xc7\xcb\x1c/{\xbc\xec\x00,\
+\xe5\x1ch\x00\xc8\x5cw\x22_a\x1cMO+\x9b\xff\
+\xfes\xcb\x86\xf1\x83\xb7I\x8b\x02\xb10\x15\xde\xe7\x9e\
+\x9eW\x15\xbf\xae\xd0\x8bK\x1e\xb7t\xa1o\x89\x04u\
+\xef\xfa\xbc\xef\xde\xb4d\xce\xfb\x930\xd2\xecO\xc0T\
+\x12\xf3\xb3\x1f={\xec\xd9c\x97\xf5\xbd\xccm>\xde\
+\xf5x\x97\xe3]\x86\x80\xd8\x98M\x8c\x8d\xaf-\x9b\x7f\
+\xff\xef\xcb\xe6??\xe3\xf4\xcc\xd33\x96\xe7p\xaf\xe5\
+9HX\x888\x02\xa6\x00]\x12\x03\xe3\xe0\x02\xac\xb4\
+_BiUy\xc5\xf8R\x91M\xe5T`\xde\xd4{\
+Sj\xb4\x98\x84YS\x0d&\x8bz{\x12\x93R6\
+(m\x83fh\xe5\xfc\xeb\x84\x13\x93\x91\xbfr\x9eI\
+\x1cT\x02\x89\x16\x12\xf1\xe4\xaf\xdc/-\xa4\x80(\xfe\
+\xf3\x7f/v\xde\xe9\xbeeC\xafr\xfe\xdd\xf4\xae\xe9\
+\xdf\xa7\x7f\xdf\xfcPIA\x97\x18t3i\xf8\xbbW\
+$!\x9a\xd6\x8a\x5ck\x16\xf8\x5c\x22q~\xc4\xc1Z\
+\x9f0\x08\x03t\x9f~)\xady\x18\x83\xf6?\x95\x7f\
+\xcf\xc5\xf9*\xfeq?\xb4>\xd0pQa\x070\x13\
+i\x8d\x7f\xa7\xea>\x7f\xe7;.\xf7\xcb9O\xd3'\
+\xc0dO\x8f\xe1O%\xbe\xfc\xa5\x84C\xdc(\xcew\
+\x1e\x88\xeb\xc5\x0b\xce#\x89\x10\x80)\xfe\xbd\xb5\x0eh\
+\xaa\xa8D\xf3\xbb\x00\x0d\xe3\xe1\xa8\xd8k1\xd4\x9aH\
+\x94\x12\xf5\x9e\x9f\xa7\x9d\x94q\xae\x985-\x16\x08p\
+u\xdf\xc5]4\x0eT\xfa\xf9e\xc0\x83\xef\xeb\xfe\xec\
+{\xb9\xfdwq\x99\xf5\x8d\xa1\xe9s$t\xfc\x9a\xfd\
+\xacp\x82\xda-\x8e\xc2\xa8v_\x15\xf6\xe4\x01\xb4=\
+\xc4\x0b\xaeOk\xa1\xf7\xc1\xa4\xf1}2%\x8a\x88\xea\
+\xecg\x9eQ~\xa6\x81\x00\xd7\xa9\xc0\xe0\xf3\x8c\x9b\xbc\
+\xd7\xe1\x9e\xa5U\xb2L\xa5\xfa\xadA\x0b\x0d\x80\x15\xed\
+\xa6~?\xfb\xc6\xf8h\xc0\xd1[\xca\x86\xf8\xc1\xfa\x12\
+_\x88{\xed{\xf9\xa5\xef\xa1\xd2.\x1f\xddM{\xeb\
+\xf8K>\xba\x1f\x8f\xc8\x0f\x13/\x8e\xdf\xd7\xa2\xd5b\
+\xbb\xd6\xad\xb8-\xd3eN\xcf)\xdb\xce\xd1\x8e[\xf8\
+#\xfb\xc7\xfd\x13\xb7\x85A\xd4\xeb\xcc~\x97_Z\xdf\
+\x988\xee\xa3\xef\xc7\xef\xb9\x1eb\xe0\xa6*\xf8\x1c\xd3\
+-\xecsSthu\x19C\x1fFe3\x9e\x92\x97\
+\xf4\x18\xc0\xbeQn\x9c\x85\xa1'\xdeB\xe3\xc0\xf6*\
+\x92~$\x12nH\xe1I\xd7\x1e\x90\x12\x1bJ\x82l\
+C\x04\xd9\x22\x9e\xd5\x81\x5cz\xf1\xfa}Q\x81\xe28\
+\xa8\xa8\x1e\xef1\xdb\x97\x84\xe2\xf3\xfbC\xaf4Jy\
+m\xdf+\x0c\xbd\xf8\x16\x1a\xc7\xe6\xfb\xa0h\xd4\xed\xbd\
+\xcc\xff\xe0 <\xc8\xdd\xd8\x9f\x1e\x03h\x03\xfb\xbe\x16\
+\xaeD\xb0\xd2\xad\xf7-\xc8\xf5\xeb\x16\xe4\xda\xf7t=\
+\xee/\x07\xed\xba9\x1c\xaf\x97M\xef\x9b\xe7W\xee\xe5\
+]\xd9\x10\xef\x1a*A_S6\xf4v-\xb2G\xf3\
+\xfd\xfa\xe2\xb2m\x03\xea)\xa5\xae>\xa7]\x8b\xa8\x15\
+\x86\xc1\xd9\xd7\x95m\x95\xa5\xee\xf9\x0f\x95M@\x22P\
+\xf5\xdc\xf4\x8c5\x92\x9f\xef\xd5\x94Ds\xc0\x8d\xdf\x03\
+0\x10\xf3{M\xd9\xd0\x02\x10\xca\x7f'\xd0\x80\x11\x15\
+E\xc8<\x07\xee\x80\xca\xc6\xefV\x14\x81\x91\x83B@\
+\x93^\xd4\x1aj\xb6\x8c5\xf3\x0ap 6\x98\x8aT\
+\xf7\x08I\x88P\x9d\xf5\xf6{\xff8\xb2\x16\xe7\x22\x22\
+'a\x16@\xabh\xd9\xe0{@J\xef\x99@\xe3c\
+Sq\xbdI\xa8~\xc4p2\xb5\xa0\x13%\x81\x99\x9e\
+=\xc0\x9b\xca\x19\xd18\xbd\x7f\xc6\xeeH\xfci+@\
+6\xa9p;\x98\xec\x0b\xd4N\x0c\x81\xdf*\x1b\x18\x1e\
+z\x1e\x01`\xc5\x1c\xfa\xabAm\x99\x18\xe3\x93\x0fO\
+ZzrSy\xeb\x80u'\xc2\x07 47\xbd\x03\
+]\x95\x94\x8f+\x1b\x0eL\xfb=\xc8\xf8\xf1\xe1eC\
+\xef\xac\x83\xdbz\xa5y \x81\x0d\x15\xb4\x99\x03a\x1e\
+\xb5:\xb1\xb9\xb8\x1c\xb8\xfb$\xf1\x17\xa8\xb9_\xf6\xb3\
+\x00\xcc\x81\xe7\x80\xf1\xf7\x10]\x7f/\x80\xd6\x82\xe0\xfd\
+U\x16\x93\x10t\xcf\x1cu\xea\xeb\x97\x0d\xebB\xe2'\
+\xd1\x95\xa8~V\xd9\xd0\xb3\x8c\xda+\xe14\xbe.\xe3\
+\xea\x9a\xba\x9b\xde\xff\xe97\xcb\xb6\xfd?=\xb4lH\
+\xa4wT5\x94\xfd\xe9\xc5e\xf3u~J\xd90]\
+\xe1\xdb\xca\x86\x8aAT\xe2\x9b\xdaf_\x08\x98\x13H\
+\xf6\x9cj\xff\x8e\xc8(\x8a0\xc0\x8cv\xc01\xdfG\
+\x22\xa4'XkE\x80\x96\x9auR\xd3N\xe6`}\
+i\x1d\x99\xee\x9a\x8a\xb0\x00\xd7\x18\xab\xc7\xe5\xfecf\
+x\x9e\xee\x031\x22*\xcb\xa6\xdeh\x15\x00\xa8\x18\xb7\
+\xe8{\xab0j\xf9\xc9\xfa\xec\x04\xf1\xa5\xeb\xbf?\xbd\
+v\xad\x10\xb5*<\x91Xb\xa2\xc4N\xf9K\x01\xda\
+nJ\x07&\xc5\xf4}e\xf3\xeb\x7f\x95m\xdfg\xfa\
+\xda\xb2\xf9s>\xa9l\xf3\x13\x80\x1b\xe2\xa9\xc6\xdeM\
+\xf7.\xdb\x187\x18P\x0dX\xd0\x92\x88FL\xef\xd3\
+\xec\xe7V\xa7W1\x0e >}\xfb\xf4m\xd3\xbcN\
+\x8e\xdfP6\x04l4)\xdeR6\xa8\xcc\x03\xa6\x01\
+@\xc4\xe2\xb4\xfa\x89W\x00\x9a\xa3\xb8\xde3\x87\xc4\xea\
+\xf7\x02\x0c=>\xe3\xb12\xae\xb1\xfd\x0d\xbf\xa9\x12\xbb\
+\xcd\x83\xff\xb7\xe5\xbc\xe6\xff$\xe8\xa6\xfa\x00\xe4\x8by\
+r\xab\x00\x01O\x1e\x98sY\xefz\xa8\x1b\xc8H\xab\
+\x04j\xae\xe7\xde\x05\x87T\xe0\xfa\xf9`\xc8\xd0\xae\xe0\
+_\x7f\xa4l\xa0\xf8F\x5c\x8cfK\x8f\x1f\xd6K\x9e\
+sK\x8fi'\xfea\x80\xf5\xb9\xcb\xcf\xf9\xa1}\xf2\
+Ok\xe5\xbe\xff]D\x12{\x0cY\x98_}n\x99\
+\x96\x90sg\xfa\x90\xb2!\xe1K\x00\xdd\x80Q\xd4\xbe\
+\x01\x19\xa7\x7fH\xa5\xcf\xb8X\x9aD\x98\x82\x180\x18\
+R\x12@\x81\xbdx@\xa5\x16\xe3\xe5\x9e\xa7{\x9d\xee\
+\xb5M\x93\x98\xef\xe9\xea\xf71\x0c\xd3\xa2f\xdaLS\
+\xf4Q\xfc\xb3\x0e\x8f_X6\xf8\x93\xddX\xc1n\x85\
+\x11\x87\xeayW\xd8;e_\x03\xa8\x9d\xbb\x12g\x80\
+&m\x02\x09\x89q\x8d\x0a\x5c\xd6\xb1\xf5\xbeO@\x8c\
+\xd7\xe3O\x01\xdf\xfc\x09\x7fo\x9ci\x12\xab\xd6\x14 \
+\x1a.\x11\xd6\xc2\xea\xdc\x17\xbf\x88\xc3\xedK\x22\xbf\xb9\
+\xff\x00\xfd\xfe\xf7\x01\x0az\xbd\x11\x83#\x1a\xee\xf3\x14\
+\x1e\x01E\xd6\x9f\xebWa\x15\x7f\xd0~\xe1\xd7\x8d\xd7\
+\xd5\xfa\xe9\xef\xe5\x13\xc68\x12#\xe4o\xe5\x1d\x80n\
+\x89^\xa8\xe8\x97\xa2\x8e\xfb}Sm\x02\xc4vb(\
+o\xd3\x02\x81\xc1 .\xc3\x90\x93OY/\xf2\x14y\
+\x8d\xeb\xff\xd89\x8a\xf9\xd8A\x9b\x0c\xe3,\x0c\xca\x8e\
+\xefh\x1e\xd9\x97\xe2-\xeb\xc7\xfd\x07\xf4I\x9c%\xec\
+\x9e\x83x\xd3\xf7\x15\xf7\xb8\x1e\xdf\xdf\xfe\x93/\xf9w\
+\xee\x17\xa6\x04\x0d\x84\x00b\xdd\xe2\x96\x16\x22\xe3C\x9b\
+\xe1gZ\x17\xed\x9b\xcb\x97m@\xab\xb8\x98\x98m\x7f\
+\xaex^\xde\x0bh\xc4\xb8\xb4\xee\xc4#\x98j?\xbc\
+\xd8\x96\x0f\xbb\x1f\xf2H\xcf\x13c\xd7}\xdbk\x19\x04\
+\xf0i\xff\xa8\xe5\xc9u\x89\xef\xafX\xb6iW\x9ck\
+\x07L\x03\xc0\xc2t!;\xb5\xfdK\xfd\xec\xb5\x02<\
+8\x0f\xc0\xdc\xfb\xdd\xfc\xc3^\x98\x02`\xc8\xba\x84\xdd\
+\x81)A\xa6B\x9a\x9e\x1c\x94\x95\xe3\x1f\xce\xf6\xfc\xa8\
+\x93\xfe\xdeRi\xf8\x96\xaa4,\xb8\xec?\x0f=\xf8\
+\xae\x8f\x0a\xbf\x05\xa7\x02\xeaA\xfaQQ/\xb7u\xee\
+\x7f@\x02\xbdb\x0e\xecE!$n\xde\xb7\xdc\xef[\
+\xb3\xb1\xfff\xa0Hs,\xee\xee\xbe\x05\xc1\xfb\x8c-\
+\x09\x87\xad\x17\xae\x13\xb9\x8b\x96\x09\xc8\xeb\xf3;\x0dL\
+\x01\xbdl\x09\x08\xbb\xb7\xff=+p@l\x8ajs\
+\x8f\xf5\xbb\xdb*\x82\xe6~\x1e\xbf\xablA\xd8g\x1b\
+\x12\xa4\xf4<O\xcf(\x1b\xd4\xd69N=y\xfbq\
+\x18\x09\xc8{\xbe%&@\xd4\xc6;\xf1'\x06\x98\x9e\
+\xa1\xa6\x80\xa1t\xa1\xda\xa2\xb6\xa1\x1a'\xb0\xed^V\
+\x09\x12\x91,j\xd6\xf7_\xa7\x13\xf4t\x84\x8c\x01\xe9\
+\xf1T(\xbd\xc6a\xa1X\x09\xc4\xdd\xdf\xa7\x1d~i\
+Q%7v*H\xa8\x83\xbe{\x96\xf4\xfcs\x94\xf6\
+\x15\xa0\xc2u\xd020u\xe2>eC\x8f8\xc7\xf8\
+\xa85\x019\xdc'\xd4DTa\xeb\xfb\x8f\xb3\x9f\x04\
+\x00\x00\x07\x09\xac\x84\x9f\x0a\xf2n\x9e\xadu\xd4\x14.\
+\xa2}\xd4\x801C8\x9c\xe3\x7f\x0f8\x00\x1e\x1dp\
+\x10\x91#\x1e\xa9\x17\xd2\xfdHEDEF\xe2\xd1\x15\
+w\xeb]B\x97\x9e\xf4\xd3\x07\x97\x0d\xbd\xe5QS^\
+Z\x81\xfeu\x1b3\xd3L\x84\xf4\xc2u\xc5\xd7\xfeu\
+\x9frpUcK\xb5\xb6L\xef/\xdb4\x09\x04^\
+\xdd:\x22\x10\xe5\xaf\x04\x8c\xd4\xba\x01\x04\xa8o\x0e.\
+\xad\x1f\x9e\xa7\xfd\x81\xea\xeez\x1c\x04*S\x0e\x02\xc0\
+\x0cD]k\x03\xaay\xa8\x96\xddk\x87\x1a\x17\x8a.\
+U\xeb\x06\xc0\x1c\x80\xe6,S/\xd6*&q\xa1\x19\
+\x92\x96\x84^\xd7\x00]\x01$Q\xa4 \xd0\xc6'\xed\
+\xc5}\xf6\xea\xbb\x9d\xa0g\xbfA\xec{\xcc\x22\x15o\
+\x01\x01\x7fc\x1c\x90\xf5$q\xa3y\x10d\x1f\xd06\
+\xfdN\xd9\x06\x94J\xbc\x01I\x0d,:\xa0\xd3\xf2\x80\
+\x81\xd2\x15\xee\xbf_\x03;\x15\xc9\xe9\x1f\xca\xe6\xed\xf0\
+\xe0\xe3\x83\x8e\x0f\xda\x12\xbb\x9e\x8a\x82\x02\x9b\x0aR\xaf\
+#\xc0@\xf6U\x03\xa5\x8fNe0\x81\xc9\xbc\x1a\xdf\
+7\xbdoi\xfdX\x80\xac\xc3o\xc6\x1f\x01\x1c\xbf8\
+=\xd5\xd1\x90\xe8J\xc6M\xca\xe6\xd7\x07\x97\x0d\xcc\x8a\
+\xfc\xb9\xa9\xa0\x80\x02\x95a\xc0\xc9\x85\x87\xff,\xa0\xd6\
+8T\x95\x9d\x1e\xaf\x16?\xd1\x15dL\x1d\x15m-\
+\x90\xa5\xc5\xf0\x1d\x1b\xb0\xd4\x09@\x00\xb7\xd3\x93\xca\x86\
+\xa91i\xeds\x0e\x1c_\x5c\xb6\xb5\xac4\x13 ~\
+\xe0\xf0\x0bi\x0d{\xc9\x0a\xe8\x1e\x7f\xa4l\xbe\xce\x9f\
+)\x9b_\x7fw\xfa\xbdi^G5T\xb0\xc6\x0a\xb6\
+\x9fv\x1e{\xde\x0a#\xfc\x1a5\xff\xf4\x84\x02<\xa6\
+\xf7\x06\x10\xc9\xf9\x7f\xc9o]\xf2\xecK\x9e\xbd1\x05\
+N\xcf\x88\xd8]\xfe\xdc\x95\xbd\x8f_Tb\xb6\x00\x94\
+\xa8%M\x0a\xfb_\xe2\xef<\x92p\xa3\xecj\xc1\x0a\
+ :]\xb1l\x19\x87X\xd6\xa2\xa6}_\xb5\xa2\x19\
+\x17\x9c\x16\x92\x06B\x01^i}Z\x94\x07.\x18\x12\
+\x95k\x1d\xaeQ\xa2\x8b\xf3\xaa\xfd\xc7Z\xb7\xcb\xba\xff\
+\xcd!\x81J\xfc\xb7|\x9f\x87l\xe2\xc4\xfc\x909\xde\
+\xcd\xb4\x89x\xd9\xe1\xdf\xcb\xb68G\xcbbO#J\
+\xc0>{\x81\xdf[\x02\xe9\xb4\x5c\x9e}\xcb\xd97\x9f\
+}\xcb\x12\xe7,L\xbe\xd3\xb5N\x1fr\xaa\xefs\xd9\
+\x15\x18>}\xcdZ1?]i\x0d\x80k8t\x8d\
+\x87\x9e\xbd\xca*\x1e\x9b)5\x1dP\xef\x80\xe0N$\
+\x93`\xf4\x982q\xae\xf5\x91\x82\xc9\xe1\xd9a6\xfc\
+\xf3\x7f\xaf\xd8\x9e\x1e\x93\x96\x22L\xc0\xeb\xae\xcc\x11\x15\
+\xc8\x16s\x8c\xe8\xa6V\xc3\xd6^B\x91\x96\x88\x01x\
+\x00AZ.\x0a\xfe\x5c\xa9\xff\xebyDl\x8f\xc8\xaa\
+J\xed^l\x90\xf8\x9a8A\x22,\xc1S\xa9\xf4g\
+\xebHk\x94VG\x8c\x05\x89\x9a\xf1\x80\x12 \x0c\x15\
+\x09\x9b\xd63\xe7\x9e\xb8Y\x22\xe4\x9cs\x1fM\xd9\x09\
+0\xda\x8e\xc5\xefy?\xd4|\x95x\x85\x08c\xf8\x88\
+Q\x9a\xba%\xce\x96\x17\x00>\xc4\xe1\x98\x0d4~\x00\
+\xf2\xe28\xd3\xb9$\xacZ\xb8\xb4\x94\x10\xa1\x04\x98\xec\
+\x13<j\xfc\xc4\x07\xb5\x04x>\x12j\xf7\xf3X6\
+\xac[\xf9\x1a\xa0\xc2\xf7\xd1\xa2g\xca\x04 \x08\x90j\
+\xdf&\xc1mQ\xc6g\x05`\xf5\x5c\xc4\x95\xee/@\
+l\xcf\xecU\xa0RH\xd0\x0a\xf5\x86\xb2\xc1\xafQ\xff\
+\xf7\xbd\xbc\xff^\xcd\xdezp\xae\xbb\x1e\xcc\x0a\x80\xb5\
+\xf7\xb1\x1e0\x900V\xbc\xbf\xe7\xba\x17\xf5\xf3|S\
+\xd8\x98\xbe\xb0l\xde\xde?Y6\xf8+\xf1\xbf\xe7\xa6\
+ \x13\x06\xdd\xa5Zk\xb4\x9e\x03@h\xe3`0\xf9\
+=\xd7#\xff\x95\x0f*\x1c\xd8\x0f~\xf8\x1f\xf7\x11\xd0\
+\x90\xf1\xca\xc6\xe7v\xfc\x1d\x86\x91\xe9J\xe7\xfa J\
+`\xdf\x0b\xdf\x1bC\x8a\xf6s\xcam\x08\x07%GQ\
+\xc4\xe1\xbf\x1ez\x09\x8d\x15\xe4 m\x08_p\x8f\xd8\
+X\xe8zV\xf54I\xfc3v\xe5\xf8\xa4\xb2\xf9\xf5\
+ze\xf3\xdf\x7f\xc1l_8\xdc(\xaf\x90G\x88>\
+`c?\xbea/\xe6$\x91\xf7\xef}\x0f\xaf\xa3\xda\
+\xe3\xd9\x00\x18\x8cc\x1e.\x1e>\xaf:\x9d^;\x00\
+-\xb5\xac\xaf;\x8cu\xa1\xb5`\xe3\xee5\x17\xf6\x88\
+\xa1\xfbn\x81\xb8\xdf*\x8c\x90=\xf7\xf1\xcbW\xd1\x87\
+\xc3\xfd\x92\xf0\xbe9\xa2H\x1f\xc8\x81v\xbb\xf5@<\
+>\xb0l\xab\xd4\x16\x01\xa8\x10\xbe\xc3\x0dW\xc75\xfd\
+\xfe\xf4\xdci\x0e\xd0\xa7;\x96mc\x8e \xb0\xd3e\
+\xca6\xeaQoT\xbd\xde\x98\x10\xa9T\xfa\xfd\xae0\
+R[N\x22\xd2\x95-\xa2y\x19\xa3\xd7\xe2w\x90P\
+=\xda\xc6\xf4\xbd\xa1l\xa8\xf8\xa8\xa8\xa0\xc8\xa0\x9c\x9b\
+\x02\xe0\xd5z\xb0\xb1%r*\xa3\x11\x0d\xc34\xf0\xbd\
+\x05\xf0M\xbdO\xa0\xda\xa2%_\xbe\xd8\xf6\xdf\xfd\xd8\
+oz\xcb\x12\x88\x09\x0c\x1aQt\x90Ap\xa9vS\
+a\xb7~\xa9\x13;\x086\x86\xc3ZIM\xcfS?\
+\x17\x00\x1c\x86\x02j\xa9\xdf\x83l\x133\xd2#\x1f\xea\
+\xaf\x80\xbf{\x1cQ\x14Qn\x89\x10\x11IT\xa9\x08\
+\xe5\xef\xf4\x94\xb2a~3\x8a\xb7\x16\x10\x08)\xc0\xc9\
+\xfd\xb0\xaf\xb4\xc8|\xf9\xb2\xc2\xab\x028\xdb6=\xe0\
+t\x8b\xb2!\xa0L`e<YS\xd4T\xee%\xe6\
+\xf6\x8fJ\xab\x8a\xbe^W\x09\x83@I \xaeW\x98\
+\xda\xbeW-\x08\x80\x1e\xe2\x86\x02$~q7\x87\xb8\
+_\x03\x5cu\xa5(\xcf\x17\x80\xd6\xeb\x05\x05\xda\xf3J\
+\xef&1\xcd\xa6\xea9\xc0M#\xc0\xcc\xb0^\x8cW\
+\x22\x92c\xfd\xaa\xe4R\xc7\x97\xd0\x00p\x01m\x98&\
+\xce\x15\xe3\x5c\x7f\xa8\xec\xd2\xadJ\x1d(X\x87\xae\x17\
+%\xd6\xc1\xa7\xc2\x9d\xb1\x95\xad\x86,0\xd8\xf5V6\
+\xe2\x9f^@\xcc\x989\x8dZ\xd5\xe5\x03\x80\xb4X\xa1\
+\x84\xd9\x81i\x1f\xed\x02\xde\xf6\xcf\x00\x9c\xacS-$\
+\x02\x84@B\xa1\x00\x00 \x00IDAT\xa0\x16\xcd\
+r\x8ex\xdeZ-Bi\xf6>\xb4JJzm\x11\
+_C\x1dFU\x7f\xfc\xda\xa3\xdd\xbd\xda7\x8fX\xd0\
+\xe3\xba\x07y\xbd\xaf\x802\x14U\x1a\x09\xa8\x89\xa9,\
+\x13\xe3j&\x13`VKM\xe6\x9e/u\xed\xc7\x0d\
+T\xdd\x04*\xd3C\xca\xb6V\xa6\xe3\xe7\x96\x0d\x81\xa9\
+J>&\xcf\xc7\x96\x0d\x9f\x17\xc0F\x85\xb6\x03\x19\x0c\
+\x8eT\xc2T.Zc$\x94N\xe2i\x97|U\xd9\
+\xa0\xe2\xac2\x9b\xf3dz~\xd9F\x1do\xcd\x91\x87\
+\xae\x89tk\xce`\x88\x85Y\xd7\xbd\xcf\x09\xe0\xa6\xbf\
+,\xdb*\xe6Z\xa4N?yzB\x8d\x9f\x9b\xbf\xc5\
+\xe7\xd5\xf78\xbc\xa9l\xd9Gk|\x03\x88\xa5\x02\xce\
+\x0f\xd6*\xb8\xfd@\xe1\xb5\x8fPV\xa9\xf1\x13u\xb4\
+N\x01\xa7\x98<\x02Hc\x14\x014\x01\x92|\xef\x85\
+\xf1\xf05\xf1c5\x86\xf1\xbb\xca\x06 %b\x9a\x1d\
+W\x10\xf9\xbc\xfdy\xb7[\x12\xdb\x1a\xdb\xfb\xb7a\xe8\
+\xfd\xe1\x00\xb8a\xe0`\xf4`\xa2\xa1f\xf3\x9f\xe6\xa0\
+kY\xb2O\x03\x8c6C\x89\xb6\xc1=\xcb\x06\xd1\xd5\
+\xdf\x886\xcf\xd5\x0fW\xab\xca\xe7\xd9\xc3\xce\xbe\xf3\xec\
+a\xc3\x94\x88\x82\xc3~h\x11\xe1|t\x89p\x12\xc9\
+\xac?-\xa2\x9c\xb9\x0e\xfb\xab)\xe8\xc6\xa2\x9a\xfe\x91\
+}\xd7TZ\xfb\xdc\xb9#\xce\x930\xa7\x97\xbdU\xd1\
+i\x1d\xfd\x7fka\xe5\xbco\xc9\xb8G\x8cV\x94\xf6\
+\xec\xa3\xc3c\xca\x86^wq\x01\xa0Tk\x0f\xc6J\
+>\xb7\x194\x12!\xf1bE1W\x1c\xfc\x8d\xc4\xd8\
+\xf5\xee\xb52hWI@\xf6\x22t\xe2]\xf1\xa7\x8a\
+\xae\xbc@\x5c\x07 \xf6c\xda\x84\x84O\xcf\xbf\xbc\x02\
+\x83S\xcb\x92\xc4\x98\x1f\xb3_v\x1a\x10\x12\x1b~\xb5\
+\xf7\xa9\xc2\x1a&\x0d\x91[\xad\x82\xa6\x0cI\xbc\xf7\xad\
+\xba\xbe\xdf\xee\xa7\x99\x08\xd6\xb9u\xb2O0]\xb7\xe7\
+\x000\xc1`\x10\xdf\xdb_\xae\xc3\xba\xb2\xff}\x0fy\
+\x88\xeb\xd2JT\xd4\xfc\xdf\x1c\xcek\xe7\x92DX<\
+\xe8\xb9\xec\xa7@\x01,05\xc3\xb0\xe9\xf1\xce\xf6\xbd\
+x\x01\xd3X\x1e\xb2\x074\x8c\xc3\x94\xb8\x8b\x9f\x01\x13\
+ZS\x88\x92[\x0f\xbe\xb7\xd6\x02\x9a\x11>\x07\x00\xbb\
+oet?\xbc\x8e-\xda\xef\x1d\xce\x11\xcf\xc5u\x01\
+N0~0\x93\xfc\xf8\x9e\x98\xa8\xd1\xc6Q\x88\xc2\xe0\
+8~I\xd9\x06\xd8\xf1\x13\x0d\xc0\xed\xc5-=wq\
+(\xe6\x04\xa0\xdds\xf1\xdc<O\x85\x17\xf9\xb1\xef\xe9\
+\xcf\xbb\xb1\x9b=\x05\xe2\x11e[\x8b|\x8b\xf5\x8a\x8f\
+\x92'\x9e\xd33\xdbs\xb6\xf5\x90\xba\x91\x10q\x0bk\
+\xdf\xa3\x8a\xd2\xa6'\xd8\x81\x8fz`\xa1\x0b\xac9$\
+\x0e\xcb\x17\xf0\xea\x8bS+\x0d\x92\xd2\x8e\xfc\x87\xca\xe6\
+\xd7+\x95-\xa2t\xb3\xe5\x06\x0c\x01\xe5\x7f\xa3\xe6\x7f\
+\xf0\xf0\x80!D6\x16\x07\xcb\xa1\xed{\xa0$\xe8#\
+ pnW\xa1?\xb7\x03\x08\xc6q\x80\x1eX\x85c\
+\xaf\x1d\xae\xd3\xfdu=\x1f\xbd\x8e\xe1\xea\x83S\xa5\xd0\
+\xf7p\x1f1\x18T\xfck\xf9\xbfos\xbc-.G\
+\x9d\x96\xf8\x13\x91\x0d\xaa\xa9\x90;\x01\xbc^\xed\x97\xae\
+T\xa2\xe3\xbb\xcb61\xb9\xe9\xfc\xb2\xa5\xf7\xe7\xf1\xa7\
+\xc7/\x09\xc0\x92\x10L\x9f^6\x04j\xb7*\x1b\xc6\
+\xbe\xa9\xc8F3@ \xdb\x94y\xcc\x00=@\x0e\x1a\
+\x89\x8c\xeb\xde\x1f(z\x9c\xd2C\x88\x9a\xdd\xa2_^\
+\xffqU\xdd\xef\xc0\x0eR'\x117\xefZ\xcf\xa7^\
+K\xcf\x1b\xa2m\xbd\xa2L\xa7\x05\x00#A\x02F{\
+\xa0+\xc8>\xc78\xa0k\xa7\xa2\xfd\xf1\xe9E\xc3|\
+\xf8\xe3\xb2A\x9d>=\xaf\x1d\x18|\xc8Z\xd1h\xf5\
+}\xebK\xc2\x15\xd15\x88\xf1\xa5\xa8d(\xb0\xa9|\
+\x9e\x1ep\xfa\xba\xd3\xd7m\x01y'\xe2\x12\xbd\xef(\
+\x1bz\x8bTh3\x07\xb6)|\x02\x9e\xec\x7f\xa2\x9c\
+(\xb6\x8d$sd\xee\xe3\xfe r\xf0\x01\x00\xedK\
+\xcfa?\x86\x06pQ\xe1\xc1\x8d6`\xa8\xf7\x15$\
+7*\xdaM!G\xb5E\x89\x8d\xff\xe8\x1ej\xa22\
+\xbe\xef\xc3\xca\x06J\xa39\xc4>_ \xb3Gd\x13\
+(4@\xe3{B\x82\x03xt\x85U\xef\xb5\xdf\xd3\
+\x03n\x8c\x9c\xca|\xf6s\x03\x02\x12`\xda\x15~O\
+\xa5\x1a`\xb5\x17\xa11M\xe5Ee\x1b\xa0\xa7\x02\xd9\
+\x14^\xd3\x08\xac\xcb\x9d8\xab\xb1W\x1d\xd8\xabL\x86\
+b\xd6\x95\xa0\xb4\x5c\xa8\xfc5\xb3#\x15\x13c\x93Z\
+\xd4\x90\x9av\xb49\xf4\xdc.bg\x9f:\x1cxQ\
+o'\xda\xd9\x01\xd7\xfb\x12@\x0b\x1c\xf4\x8e\x12\xf7L\
+K\x8fV\x9d\x9e.\x82\x0a\xae\x02c\x1a\x81\x84:\x94\
+\xd9\xae\x00f?\xaal\x9c\xeeR6\xbf\xfep\xd9 \
+j\x07\x10\x91@c\xda`4\xa1\xe4?\xb1lhe\
+\x01\xe0Zg\x12\x03\x95\xa7\xb4 4\xa0\x09\xb0\xdc\xcf\
+\xd5\x06\xf8`@\x01\xd8\xac\x93\xec\xd7\xe3\xbf\x96\x0d\xd4\
+g\x00J\x98Y>\xff\xb4\xfcl\x80\xd8t\xa7\xf5\x1c\
+8\xdc&\xf3\xc51\x01\xa2\x0a\xddTH\xcfU (\
+\x81\xe5\x17\xf4\x00c\x1a=\xa8l~\xbds\xd9\xb6_\
+\x88\xd7\x1d\x7f\xa7l`09?\x00\x1c\x9fY6h\
+\x039wn\xb4\x06v\xd3\x97L\xf7\x98\xee1\x88\xf6\
+\x86r\xde\xd4b\xe7\x96\xe9\x22\x95\x08\xcc~{\xfa\xf3\
+\xd9\x0a\xa0\xb8\xf7\xaa\xf2_\x8a\x06\xa5i0{\xf1\x17\
+-~\xfc=\x87\xff*\xd1\xda\xd3#\xa3\xae/n\xc2\
+\x8c)1\xcdO\x184\x5c\xc2\xa0j\x15m\xe3|\x05\
+\xb0\xce\xeb\x88E\xf6\x981Z\x0e\xa1\xceK\x10i\xb2\
+tB\x05\xe0\xaeS\xe0\x0f\x86\xc06\xc0\xf5\xd2*\xf4\
+\xb8A\xdc/\x00\xf7\xe9\xeae\xf3\xf7\xfd\xc9\xb2A{\
+\xa94Zn60\x9f\xea4\xbad\xd0\xbe\xc1 \x92\
+\x10\x018\xf8}\x14\xeaL\x11\x10/\x9c~\xa5l8\
+7\x12\x174\x057\x8c\x86\x8e\x0b\x9c\x1bz]\xf5\xf2\
+\xfev\xa6\x19\xfc\xc9\xe1\xc5\x87\x17/~tm\xc5R\
+\xd1'\xb6\x98\x04\xacE\x89\x15\x1cT\x1c\x01\x03z\xc7\
+1\x8a\xfc\xa0\x8e\x03\xe8\xb5P\x00,\xbe?\xe7\xa5D\
+\xdd\xbe\x14\xe7:\xaf\xf8\xe5\xdc\xafnE\xc9z\xee\xf3\
+8\xd7\xd9\x85\x1e@\xc0\x9bWQ\xe7\x9e\x03_\x95\xf6\
+\x91\xd9\xe7s\xc5\xa7\x12k\x09\x8a\x96\x90\x00\x8b]\x00\
+\x00\xe8\x10#\xc3\x18\xdcW\xc6\xc5\xcf\x9e\xaf\x04oG\
+\xed\xc6`t\xee4\xf5\xdc\xfe2e\x06`\x8c2\xbf\
+\x17\xeb\xe3\x8f\x03dt\xa2/.\x17/\x8b\x93\xc4\x0d\
+\xfc\xaex\xc4\xfb\x8a3\xf8U\x8cM=\xea\x80y~\
+T!\x02\x00\xa6u\x03cR\xab\x0d\x8d\x07@\x83<\
+\xc8\xf5\xed\xa6vu\xde\xe1\xf7\xf6b\xe3\xf2\xa7}\x02\
+\xbdoaPq\xc7\xb0\xf5\xf9\x18\x0a\xf24\xccC\xcf\
+\xd3\xf9)\xbe\xf1\xfc$\xb4\xbb\x1e\xfbe\xec\xfa%C\
+\xe2\xecy\xee\xc5\xa3\xf91\x80\x87\xf5(\xbf$BJ\
+\xb3\xc0z\xf6\xbd\x00\x22\xfb\xca\xbdW?\x9e\xa3\xeb\xb7\
+?LY\xb0\x7f\xb5\xb8\xfa\xb3\xfd\xce_I\x943u\
+\xa1\xa7\x80\xa4\x87\xfe\xf8\xcfe\xf3\xc7\x7fZ\xd9\xd0\x0a\
+\xaa@\x998\xd9\xfe\xe8\xd6\x1a\x8cJ\x1a\x00D\xf9|\
+N\x80\xdb\xbe\xaf\xceE\xfe\x02\x80\x08 \xd5B+\xff\
+\xb6\xce\xe3\xe7\x9a\xf1\x93\xa94\x1d\xdf&_87}\
+\xe1t\xb7i\x0e\xd4\x8e\xaf>\xbe\xea\xf8\xaaE\xa5\xf7\
+*\xa5\xd2\xdb7\xc4\x83\xdd\xf7\xfeH\x94!z\xab\xb0\
+\xdeV\x89\xf6\x008\x08\x00\x02\xc4\xd1\xc2\xde\x8b\x09\x0a\
+0\x8a\x8a\xfe\x92M\x0c\xec\xf8\xdb\xb3={~=\x9b\
+m\x1a\xc4\x82\xea_\xbd'\xd7\xf3\xd1\xffC\xa2`C\
+\x13\xfd\xf3\xbd\x0a\x8f\x1b\xd4\xf8\xbb\x22W\x8f\xe1\x86C\
+\xe2?V\xfa\x0f\xbb1\x0e\xe7\xedZ#N=%v\
+\xfb\x1c\x89\xba\x0dx\xde\xb2\xc8\xd6\x03\xfd\xb6\xc3\xbcs\
+\xbd\xbcE\xa8\x7f\xc0\xe0\xa0\xaf\xbf\x0c\x80\xdb\x1cE\xd5\
+\x95\xae1h\x038\x00!uU\xdfz\xc8\xb2\x10\x7f\
+q\xa9\xc8^+\x1b\x12E\xfe\x9e\x11\xe5\xd2\xdb\x1ed\
+\xb3\x03\x82T\xd6\xe6\xc5\xbfV\xdc\xaf\xba\x8ad\x9d\xdd\
+\xe7\xec\xdegs\xa0s\xf6\xf2\xb3\x97\x9d\xcd\x1b\xea\xec\
+Fe\xf3rxI\xd9\xa0b-\x80\xa2A\x80\xf2\x1b\
+\xf1\xb0\x1ek\xe4\xc0{\xf6|L?{I<\x1e\xb2\
+\x88\x1dA\x16Q\x999\xe2\xa8l7\xf5\x9f(_\x90\
+\xe3\xa6\xceK\x08\x92x\x131k\xd5~\x01\xa0\xc4\x5c\
+\xe5]\x05U\x8f\xa7\xf7\x0f\xc5WE\xa7\xa9\xc9Y\xf7\
+\xd3\xb5\xcb\x86\xc4\x08r\x98\xc0\xbf\xa9b\x02\xdf\xdb\xe5\
+{\x19\x17\xa7\x97Z\xef#@A\x8fQ*\xd3\x8d0\
+\xea\xe5\xe5\x10\xf4\xe0e\x1c\x5c\xf7\xf4J(Ba\xef\
+\xc0Z\x82\xfa\xae\xb52\xd8*\xa8\xa1@wo\x1c\xaa\
+\x5c\xd6\xa5\xc0\xac{\xfc\xf4P\x09\x08\x9e\xbd\xd8\xb6?\
+\x042\x12\xa9\xb4\x96\xb4\x8a\xab\x8a\x84\xebQ\x89\xf6=\
+\x8d\x15\xf2\xb3\xd7\x1c\xb1\x9fv\x0e\xaf\x0f\xe2\xb4\x86\x08\
+\xd0;\x01\x0dE\xb8\xc7.\xa1\x18\xab\xd4\xaa\x94:H\
+\xa8\xeb\x07\xd0\x04\xc8t\x00\xe0 \xdek\x9f\xf0kO\
+[l\xebAKB\xea\xfbu\xcb\x0c\xe4\x1dR\xec\xe0\
+\xd3Z\xc1\xaf\xe6z\xf7\x89r\x07\x0c_\xbd\x02J\xdd\
+\x03\x1bU\xea\xd6.\xe0_\xa9c\xdb\xb7\x0el\xbd\xb8\
+\x11\xe5\xec\xef'QD\x9d\xa4\x96\xafUG\x85D\x00\
+\xa8\xc2\x94\x7f\x7f\xbak\xd9V\xc1\xa7\x82\xdd*\xdb{\
+\xcd\x14\x89\xafs#\x8c\x0c\x22\x90]\xb1\x0a\xb3h\xf6\
+v\xb3\x0d\xeb}\xcf\x94\x92\x80[\xd7\x11\x89\xa3\xe6\x0c\
+\x080F\xcek\x8f\x9b2\x17\x1e\xb3\xe5Y\x99+\x0c\
+`\xd0\xda\x02h\xf3\xfe\x01\x96\x9a\xc1\xf6u\x01\xde2\
+\xbd\xa3+\xe1\xbe?\x11&\x81xZ\xb4\x88>v\x05\
+(j\xe5]\xa1O%\xe3\xf0ue[+FS\xad\
+\x01\xec(\x95\xb4-\x88\x95\x09\xd0\xf3\xefO\x97-\xdb\
+4\x08\xa6\x17\x94\xcd\xaf\x8f/\xcb\x98\xb8\x8b\x17j\xfe\
+\x92`\x1f>y\x05\xae\xa7\x7f,\x1b\xa6j\xfcA\x02\
+\x90\x9f^\xac+\xaf\x87\xd7\x06\x18yu\x9e\xf3\x17d\
+\x9f\xab \xbe/\xcf/\xe7\x9e9\xed\x80\x1c\x95\x8d\xe9\
+\x11e\xdbt\x91\xa6V>\xa0l~}}\xd9\xf6}\
+\xb4\xee\xa8\xb4\x1e\xdf~|\xdb\xf1m\x19S\xfb;\x11\
+\x8b\xfd\xaba\xfc\xae8's\xaf[\x13C\xe2m\xfd\
+K\xc0\xafX\xb6\x00\x0c7^\xc4\x101`T\xc2\x88\
+\x9fUK\xc3\x9d\xc3\xe8\xb9\xd7F1\xa7\xca\xdd\xbd\xe4\
+\xa1&73%\xe3I\x0f\xf7*\x1b\xf6\xbf\x80\xde\x98\
+0@\x03\x06M\x98/\xd3\xad\xcb\x06\x15s\xe7\x84\x96\
+\x94\xf8\x91\xe3\x9f\x96\x0d\xcc;\x80\xb7\xd6\xad;\x94\x0d\
+-\x11\x19\x13\xd9\xfeJ\xfc\x22\xd1\xe1\xef\x01w\x0f*\
+\x1b\xce\xb1\x00\xa2\xcb:\x7f\xe4\xe6w\xbbU\x14c\x8c\
+6Hy\xcbo\x1a\xe2:\x89\x06\xe6\xc7\xc5\xb5B\x17\
+\x8d\x90U\x13\xe5\x8f\xd6V\xaf\x06\x1aoU6\xc4o\
+Z\xb7\x00\xf7\xcem\xd7-\x90\x0fu\xb6\x81s\xc0\x84\
+\xc4T\xdc\xbb\xfb\xde-:\x99D\xf9\xf4\x09e\x03\x00\
+(\xd1w]\xde'\xe7\xce\xf4\xcde\xf3s\xf9\xea\xb2\
+\xf9\xf5o\xca\x06Q/\x0c\x1d@[\xe2\x8b\xae\x84\xa2\
+d\x13\xc7\xbc`\x9dz\xd1\xf1\xfb.\xd1k\x00\x1f\x10\
+\xac\x95\x13#\x85\xbf\xdak\x03\x88{\x89\x08\x9b3/\
+.\x10\xdf\x11\xf1\x93\xa0\x88\xb3\xddG=\xfcw*\x1b\
+\xfc\x99\xf1\xc2\x18\x8c\xfc3?\x9fu\xde\x89\x95\xf1\xde\
+W.\x1b\xaecW\xb1\xc7\x04k\xc0\x8c?\xdf\x03\xb0\
+\x0a\x13\xe2\x15\x05,\xfb\x10\x00D[\xc1\xb8\xdc$r\
+\xa7\x0b\xcb\x86\xf8@\x02+\x1e\xf6=\xbc\xee{\xe3\xed\
+\xab0h;\xfe\x97O\xd9\x7f\xf6Y\xa8\xea\xa7\xff*\
+\x1b\x80_\x00H\xe26c\xba\x97B\xf0e\x86\xd6\x03\
+@\x0cm\xb6=u\xdfz\x03P\x88\xe7\xfc\xde\xbe\xe0\
+\xeb\xb9\xd9\xf7*\xff\x18w\xb4\x03\xecG\x05!\x80\x8f\
+\xcf\x1d\xf3\xab\x8b\xfe\x07&\x00\x7f@D/\xd3\x89\x9a\
+!\x06xp=\xfb1\xd9\x18\xea\x12kZe\xaf-\
+\xdb\xfc\xd1\xf1\xcb\xca\x86i\x0aa\x94\xf6\x94$\x80e\
+Z@[\xcb\xe4\xa6e\xc3\xfb\x03T\xbe\xb7l\xfe\xf3\
+w/\xb6\xdd7\x00\x88V\x1e\x0c\x02\x05\xcb\x00?\x0d\
+<)4\xf8\xf1~\xe3\xf8\xfay\xdd\x9f;\xdd\xa1l\
+\x09\x14\xd6\x1e#\xbd\xb6\x16\xa0\x07\xeaF\x0bP+\xbd\
+\xfb\xb0aC\x15Lp\xe1\xb0\xc1UT\xdcP\x14\x18\
+\x0fH`\xc8\x11\xf9\xe1\xf8n\xbeLv=\xef\xf8W\
+\xb3\xcd\x1b\xff\xf8\x11\xb3U \xf0\xf4\xd9~}\xd8\x98\
+\xfb\xf9\x94*\xf2\xae\xb7\xb6\xd5e\x93\xe0WO\xd8\x07\
+f\xbb8\x09\xc3M\x87\xf1I\x1f\xb3\xc8\xb4\xac\x01\xd2\
+G\x0e\x94#=\xfe*\xfc\x0e\x8c \xde\x1d8\xef\xc7\
+\xffTX\xf8\xbaa\x83Z\xb0\x18\x0aU\x1f\xfc\x988\
+\x90[\x041\xbf\xe3\x80$C\x9c\x1d\x0c*\xea*\xd2\
+zE\xf5\x04\xdb\xd0\xb5\x0c^\xb8\x05BM\x89\xa6\x86\
+\x9f9\xcdz\x80\xa7\xef/\x9b_/*\x9b__R\
+\xb6!q*\x0a*!*7\x1e{\xab\xe4\x9b\xb3\xac\
+\xc2\x099W\x89%F\x18J`W\xdcmP\x95\x87\
+\xf4j_\x8a\xca\x04\x08\x085\x18@@D\x86\xca?\
+\xca}S\xf2#\xe6\x03 \xe8J \xd1A-\x04i\
+\x15h\x91\xc2\x8c\x01\x13\xa0\xf7\x94\x80$\xfa\xc6\x82t\
+\xaf\xa6\x9e\xc7h\x00\xb4\x18`Daz\x1c\x1b\x91!\
+\x95\x12S\x00\xa2u\xd0\x81\x9dD\x22T\xe5\xd3\xe7\xae\
+\x22\x8d(\xe0\xa7\x97e:F\x02\xbd\xee\x85\x83EI\
+h\x8d\xb9\x82\x14\x1a[\xa8R\x9b\x00\x97\xa8SS\x9d\
+Q\xf21\x00P\xc2\x8ck#.G\xd4'\x89\x0dj\
+xS\xf2T\xac9T\x08\xb3\x80\xd8\xbe\xd9\xb5\x86\xb8\
+?}0p\xfc\x0e\x0e\x07\x05?\xb5\x17I\x19\xb52\
+.\xdcD.\x8f\xdfT6$z(\xa0q\x90]A\
+\x92(ZG\xc4\xb2\xce/\x1b\xd6\xa51E\xf1c\xdd\
+\xeb\x1f\xe6K\x1f\xec\xc4\xcaT\x16Q\xe9SA\xeb\x80\
+Z`\xe2@\xd5b\xa0\x12K\xed;\xe2l\xad\xe2\x9d\
+\xfb\xd0\x0c\x22\xfbH\xcf(\xaa\xa0\x80\xd3\x14\x91\x00v\
+\xc7\xc7\x94\xcd\xee\xe6\x91e\x83\x8av\xd6Q\xab\xbb\x1b\
+\xf7&q4U\x00\xb5\x5c\x05\x826\x86}o\x1c\xd1\
+W.\xb6\x8d\x17K\xa0\xd8\xc0\xa0\xebv\x80\xc5\x9f\x10\
+\xbd\x92\xa0\xf6AL\xcd\x7f/ff\x1d\xe7<;|\
+P\xd96\x0d\x00C\x0a\xe5\xbe\x19G\xa1\xf4u\x05\xa5\
+Z\xcb\xbe`;8M)\xc1,\xf2\xef\xf4\xfe\xf6\xfa\
+\x8a8\xad\xe7v\xc9c\xca\x86\x0a\xbc\xca\xb7\x8a\x03f\
+\x13 \x17\xa3\x22\x94\xbe\xfe{\xad\x19_Q\xb6\x8d\xc1\
+\xa2m\xd0\xcc\x01\xbf\x0f\xc8\x22\xca\xaa\x15*\x09m\xef\
+[\x95\x19\xcfI\x0bSZ\xad\xa6\x7f-\x9b\xd7\xc7\x05\
+e\xc3\x1c\xf8\xcf\x0b\xa3\xeb9y\xde\xaf\x0ap\x1af\
+PI\xc9.b\xb2\xd7H\x85p7\xfe\xa9\x03\xff\xdf\
+\x8b\x7f\x01\xac\x00\x92\xbe=\x01\xbe\xf3=\x00\xd7\xe9\xe3\
+\xcb\x06\xeai\x98=\xa7w\xac\x95\x1e\x01\xeb\xf1ae\
+\xf3\xebS\xcb\xb6\xde\xee\xd6\x1c\xb0\x8f|\xfe\x8d\xcf\xbb\
+\xd1\x12\x07T\x1a\xf21\x01\xf4n80\xd9$@\x12\
+V\x1a\x18\xd6_\x18?\xd3\xe3\xca\xe6\xcf\xfd\xfc\xb2J\
+H\x22NKM\xff\x900\xe2\xa6\xb3\xcd\xdf\xe3\xeck\
+\xcb\x06\xe0N\x80*\xd1\x02lJLQ:\xc5\x09\xa8\
+\xda\xe9\xednq\xab<\xcf\x16\x93\xbc}\xd9\x00\xb0K\
+\xacB\xfd\xef\x04\xcb\xf8A\xc0%\xea\xb3D8\xda*\
+\xc4+;\xd0\x177\xf1\x8f\xe29\x1a\x1c\xf7)\x1b\xae\
+_|\xa8\x90\x83\x11PL\xb5GmS \xda_f\
+?/\x22\xcf\xbf4$\x9a\xd5[\xff\x98\xc5_\xbel\
+\xf1\x977Ydq[;\xa3\xef\xdbuR\x10\xc2P\
+\x12\x8f:\x97\x89\x99\xaa\x10\x8a\xdf\xcc#\x17\xc7\x89k\
+\x00#\xe2b\xd7c\xfa\x14\xa0R\xa2\xbc\xd7pq\x8e\
+Y\xdf\x0aVZ\x04$(\xfe\xbbD\x1fsS\x02\x09\
+\xa8\x00\xe0\x06X=\xdd\xa3l\xa0\xaa\xe7\xbe4\xc3\x80\
+\xbfV)\x95X\xd8\x97\xfc\x93\xfb\x05\x08O<8\xc7\
+!\xb3\x0d\x05\x06~G\xc2D45\xadF}^\xd3\
+@\x88\xa6E\x8bb\x8b\xfb\xe4\x0b\xceO\x15\xd2\x14\x1e\
+\xda\xafa\xb4j%\x8a:}\xc7k\xe3\xd8\xef+\x0c\
+\xf9\x02\xa0L\xc2\xae5/\x9aP\xdd\xb2\x82\xe1\xacp\
+\xc9OZ\xe7\x12n\xf1\xb88\x09\xa3\x16\xd5\x5c\x9e\xe0\
+{\xf9\xb3\xe7*\xbe\xd9S\xe8\x01\xb6\x80q\xad\xa8\x01\
+\xf0:Q\x07D\x8b{\xec?\xfe\xd6\xf7\xcc\xf9\xd0\xe3\
+\x03G\x8d\xb2\xb7\x0c\xcf\xaf\xa2\x8e\x97\x0e\x09\xa5ul\
+?\xf0O\x12t\xff\xde\x9f\xe5#\xceQ\x00\xc2^\xcb\
+`?\x0d\xc3}\xde3%\xdc7\x9f\xbf\xd3\x94k\xa0\
+\xc4\xf3\xb5~\xc5S4\xa3\xd2j\xd8c8\xdd\xb7\xbd\
+\xd8\xa0D\xd9\xfd\xc4\xe8\xd4\xfa\xf9\x13\x8bm\x95v\xda\
+s\xf1\x0b\xc7\x17\x95m@\xc0\xf4\xd6\xb2\xa1\xd5\xd4\xba\
+Ne\xbe\xef\x8fua\xdf\xfb\xde\x0aB\xe2\x87\x8c\xbd\
+\xec8\xdf\xf3\x1179oh\x88\xd9_\xfcJ\x80\xa4\
+ss:\xfc\xfe\xd3\xfb\x87\x0a\x9e\x8ab\xc6o4\xd5\
+\x0a\xb5\xd0\xc2\xaa\xc7w\xe1\x10\xd8\x96;\xba\xcb\xff\xd0\
+{\xbfS\xf5\xec\x9e[\x09\x811n\x1et6\xf6\x82\
+\xfc^0\xcc{\x8dx\xd7\xf2\xb5~q8\xf0<`\
+\x1b\x5c\xef\xd38\xb5`\xa4zW ;\xf6\xe0U\xfa\
+\xf9ICe\x9d\x03\xaee\xf0\xe1\xff\xc3\x86\xf7\xfd\xeb\
+j\xc7\x1e}<\x80:\x06\xdf\x9c\x0d2\x8eUs\xff\
+\xbc\x7f-\xe3\xb7o\x88r\x8fi\x92\x08V\xc0{\x9f\
+\xe1\xf7\xab\xf3\xfbK\x87\xcf\xad:\xe0\x9dR\xa9~\xd5\
+0\xf7=\x07\xa8q\x7f\xf3\xb3Y\xa9h(\xaf\xff\xb1\
+&\xbe\x87\xf7\xaf\x81\xef\xf4\xbf\xca\xe6\xd7E\x16w\x0b\
+\xf4 \xd1\xd3-\xa7O\x9c>q\x18\xe7\x85\xeaN\x8c\
+(\x01\xc0t,\x1b\x10,\x1bZ\x0f\xe0\xc7.z\xa2\
+k@q\xffA$.\x07\x15\x15\xf0\xfe\x81\x00\x87\xfa\
+\x86\xd2\xde\x15\x96ld\xcc\x0d\x09J'\xdc*3\xb9\
+/=\xee\x8bhM4\x02\xbag\x12@@\x84\x05\x00\
+\x10FA'\xf8D\x06%\x12\x19K\xc8Q\x1f~3\
+-\x09\xef^\xc5\x8c\xfa~\x05(\xf0}\xcc\x99V9\
+\x9b\xff\xff:\x9e\xf0&\x01jn\x93\x00\xed\xd6A\x96\
+Uvo\x16\x06D\xc6w\x99\xe7\xda\x8e\x95\x08\x1b\xaa\
+\xa6\x8a\x07\x84\xf2ze\xdb\xfe>\xfeC\xd9\x00\xc4%\
+aiq\x12\x8e%\x07!\xb1\xc8\xee\xc1E1\xf3\xb9\
+\x18 (\xa7\x1c\x99\x84_\xc0\xa95\xc1\xfb\xf3\x13\x0e\
+v\xfe`?}D\xa0A,\xacT\x9c\xffa\xa1\xea\
+?\xbc\xa8\xfaM=\x0d\x85\xb9+\xaf\x12\x868\xfe\xe3\
+\xcb\xcb\xb6^\xe5f\x14\xa9\x9c98U\xf4%\xcc\x02\
+7\xc0E\x0e\xf0V\xd1'\xde\x86\xc1\x01P\xe5\x17\xf5\
+|\xaa\x1c\xe8\x09\x13 \xf9\xde\x90_b\x5c\xd4\x85\xd3\
+\xa2\xd1\x22\x7fD0\xf5\xa8\xa2D\x0a\xdc\xbd\x9f\x00]\
+k\x81\x96\x1bT\xb4<\xff\xe37\x96mj\xef\xed\xff\
+\x1c\xa8*\xc9\x12lSY\xc2\x04i\x80\xc4A\x85a\
+%\xe0L\xa2{xV\xd9\xd6\xab\xd6=\x95\xee7\xff\
+,\x81P1\xb9\xe9\xd2<\xd3\xe7R\x8f\x0fM\x8f\x7f\
+\x8b\x03\x02\xfa0\x19\x12\x90MO,\x1bz\xa4\xd3\x83\
+\xdf\x81A\x00\xf1\x06N<?\x01+\xb1@-F\x98\
+0\xe9\xc9\x9c\x9eU6\x8cM3\xa6\xd1\xb4\x84\xa8\xc7\
+7cI\xeb\x89D$\x80\xa0\xf5\x0b(m\x06\x0e@\
+M\xa2\xe8|p~\xab\xf4\x01\x1c\xadW\x14\xf3\x1b\x97\
+\x0d\xbd\xb7\xa9\xf4\xb58\x11\xcd\x00\x09n\x02\x18\xdf\xdb\
+xW\x9f\xd7~\xe3o\x13\xb8%Qh\xe0\x95Z\xbe\
+\xcay\x02\xac\xd3O\x97m@t\xef7\x81\xa3V\x8c\
+_><mI0?r\x0e\x87?r\xa08\xe7s\
+\xbb\xb2\xff\xc6\x5c\xc7O\xaf\xeb\xbb+\xb37M\x80\xf6\
+\x9eT\xc0>|'\xce\xf57k\xe2t\xba\xef\xe9+\
+\x17m\x80\xfd\xf8\xbcZE\x9f3\x00{\x12Y\x80\x18\
+\xe6\x0e\x80 \xe7\xc3\xf4\xff\xd3u'\xe0\xda\x95U\xf9\
+\xc0\xbfw\x7f\x1f\x0e\x88\x80b\x0e\x88c*\x88\xe6\x08\
+N\x19h\x96\xe6\x90\xa6\xe6H\xe6\x00\x8ah\x81S\x9a\
+3\x99\xa9Y\xe0l\xe6\x08\x9a\x82b\x99\x99\xa6\x19\xce\
+\x16\xce\x9af\x8e\xfd\x1dp\x224\x09\x9c\xd0o\xbf\xff\
+\xbd\x9e\xbd~k?l\xe8\xac\xeb\xe2\xbd\xce\xc79\xef\
+\xd9\xef\xde\xcf\xb3\x9e\xb5\xeeu\xaf{}e\xf8\xf2\xf0\
+\x95.\xb1\xcaDv{x\x06\xceT\xba\xdf:\xaf\x9b\
+\xf1\xb3\xe3\xe7\xc6\xe9:v\x1e\xb2\xf3\xa6;\x0f\xe9\xd4\
+\xa6\x9d\x8f\x1f\x0f\xeb(\xa0=\xb3q\xd3\xc5[Z\xc4\
+\x00\x03\xd6\x11qM\x00@\x02\xe5m\xde\xfc]\x17 \
+\xa5\xee\x9b\x04\x13\xf5\x99\x86\x0f\xca\xacJ\x94\x04\x93?\
+\xc1,\x11\xbf`Rx\xbe\xd7i\x10\xcb\xec\xcf\xc7\xce\
+\xcf\xa9D\x8b\xb3\xb2\x15\xb5DJ#\xdc>qa\x06\
+\xd0v\x100o\xff{{\xf6\xf6\xacE\xcb\xa8\xa8\xae\
+!\xc2\xf7\xb5n\x5co\xc6\xab\xdb\xbdR4\x16\xa0\x06\
+\xd8\xe3\xc7\xd3O\xd7\xfd\xa0\xd5A\xd3\xc5\xe7\xe1\x07]\
+\xbfsN\xc0\x8eA\x82:\x9e\xfb\x00\xd0_\xe3\x07\x01\
+\x89\x00v\xe7Aj\x11\xd4zwn\x8a\x9b\x01\x0a\xeb\
+\xf84+\x86\xa5}bZ\x8a\xf1\xd0\xc6kJ\x98\xec\
+;\x09\x888HaAaK\x01*\x81\xdc\x12=\xa3\
+] \x81s\x8e\xe7\xfb\x17`\xb0\x9eg\xae\xe0\x82\xfa\
+\x9fq@}N\xe7\xff\xea\xe7k\x1fjysnd\
+E\xb4\xc6\xe4\x02\xfa\x9f=\x8b/\x0e\xfb\x86-\xc0\xc5\
+\xf6\x91a\x1d\xf0\x90@n\x9d_\x18rY\x90\xa98\
+\x9e\xa8 \xbf\xbd\xd2(*\xa0P\xc1\x03\x03\x8a\xe6\x8a\
+\xb8R+\x1em\x02\x091\xe6\x02f\x821~\x12^\
+\x15a\xebL\xfc\x87\x89\xba\x1e\x87g\xac\xa4\xfb\xe4y\
+\xa7\xdf\x1f\xdf\x1b\xd61\x143n\xaa\xe7i]\x8b#\
+\xd6\xaf\xfe\xfej\x9c\xfb\x85\x12O\xfb\xc4\xdf\x97h\xbb\
+\x8f\x001\x00\x03?\xe7{\x05\xe9u\x8b\x87\xf8\xd0z\
+\x11\x9f\x01\x9c\xe4\xb5g\x87u\x05\x0b\xad\x9e\xc48\xed\
+\xbb\x15\xd3\x02\xd0WS;\xb4\xea\x11\xf1\xcd\x169\x80\
+\x0f?\xbb\xfb-a\x0b\x13m\xf8\xe3\xb0Nk\x85\xc6\
+\x14\xe6\xa9u\x88)+\xae\xa6\x85g,\xa6V\x02\xe7\
+> C\xdc\xafp\xa7\x853\x0b\x06\x0a\x5c\xfe\xfe\xae\
+J@S\x94\xa8(;z\x0c8@\xd4D\xe3\x91\xf2\
+FT\x22\x97sm\x89o\xad\xe7\x957\x8a\xf2w\x96\
+\x1e\xb4R\x9bD\xa9\xf4\xa0\xf4\x96\xc6\xd7\x98=\xa6\xb7\
+\xe9\xc6;y\xe0k\x91\x92u\xc0\x08\x10HU\xfc\xda\
+\x08*\xf9\x01\x1b\xec\xdb\xf5\xe4G\xd8t\xb9\xee\xfb~\
+>\xf7\xe5\xba\x1e\xa7\xf8T\x97Y\x12\xd1\x12\xf3\x0b\xfc\
+\xee\xac\xee\x01:\xe0 o\x11F_\xb9[\xb8\x91\x1e\
+\x7f 7\xc2\xb7\x96\x83\xa7U\x10n\x93\x15\xf8\xabv\
+\x14\xcfDx\xabb\xf9\xc2\xc9^\xb4T\xc2\x88\xa2\xd4\
+\xb82\x95p\xbd\xa1o\x98\x0f\x8c\xc9-\xb5\xb9\xac5\
+/7UAK\x15<{\x12\x87\xdd\xc3/\x86\xe9~\
+\xed\xbcj\xd8\xc2\x0c\x18\x0e\x0e\x9b^o\x176\xbd\xfe\
+w\xd8\xd2\xf3R=Pz`U\xde\x1c$\xd4\xc6S\
+\x9d\xbf\xd4\xfa\x05T\x1c\xab\x83\xc6\xab^6\x8e\xd6x\
+\xaal\x0d(F\x00@ +\xc8\xa8?S\xf8\xdd\xc6\
+&m\x1e\xbbyL\xcc\xfdl\x95\xab;w\x8c\x15\x07\
+\x89J@\x1e \xc5,P1\xa1=\x90\x095\x84\xbb\
+z\xc5\xdf\x91\x89\xdf#sn<\x00\xc2u\xdd)\x19\
+\x14IY.\xca\xa1\xcf\x91\xc0E\xf5,~#\x1d\xbc\
+\x0a\x8c\x00\x8c#\x14\xe0\x9f\x9b\xa2U\x12*\xc0XR\
+\xe2h:\xd8\xb7\xa8n\xa5\x8a/\x90K \xaa*w\
+\xc6\x8b\xbc \xac\xab$K8U\x0c\x1dD\xa8Z\x90\
+_\xe3\xd28(\x88&\x15\xe2\xf5A\xe2}P\xee|\
+N\xd3\x01\xae\x15\xd6\xf9\xa9\x13&\xafpB\x02\x85'\
+,\x95t\x89W\x05\x12\x02)S\x01RL\xb1\xb4\x0f\
+P\xa40M\xcc7W\x81S\x11\xb0\x1e\x89Vf\xeb\
+L\x05x\xd4\xbcU\xacT\xdc\x05.\x10}\x9fK\xc2\
+\x9e\x14\xdf\xa2@R\x8f\xfeF\xbe\xba\xdf*\xc3*!\
+\x18)\x12l\x7f\x87H\x1f\x119\x07\xb3\x16\x0e\xad,\
+\xa8\xfcZ\x0a\xd2\x7f\xa2\xda\xd6\xbeX\xf5\xbc\x96\xf8 \
+&\x89\xf7\xcf\xf5A\xf4Qez\xf8\x87\xb0n\x1d\xab\
+\x90\xe49]\xe3\xdfLk\x10\xf0X\xc7\xa8\xc6\xd1c\
+~\x8b\xa5\xc7\xb94\x0e\xbc\x11\x80%\xefg%\xea\xa9\
+R\x1d\xde\xb5QJiA@\xd2\x89\xf7` \xe4\xfd\
++\x11D\x15?\x8c'-A\xc6\x92\xde;\x999\xd6\
+g\xf6N\x0b\xec\x04\x16%\xca\xb3\xa6\xe8\xa2Rz>\
+Yip\xde\x96\xe8&\x00N@,\xb1V!>2\
+\x19[\xc9P\xaa\xcaT\x02\x07\x95xK\xfcQ-]\
+\x07\xb5\xfe\xf4\xdbU\xf9S\xc1|@VhQ\xf8?\
+\x95\x81\xdd+v\xbcr\xc7+\x17J2\xcd\x88)|\
+\x9d\xef\xff\xc76\x1f\xdd|\xac\x03\x1a\x1e\xddd\xd1\xe2\
+\xfcn\x95\xad\xed\x9f\xcd\xe3\xe6Z\xb4\xf0\x8b\x06\xd0\x5c\
+<\x00\x9a\x12Y\xca\xca\xba\xfb7\x9e<\x9e4\x9e\xdc\
+\xad\xcf\xeb\xcc\x81-\x8d\x08L\x8c\xcdS\xe6\xc4\xaf\x18\
+_\xbf\x9f\x89\x8b\x00\xee\xfeYA<m\xc7\x9bZ\xe5\
+<U\xf4\xab7_\x8f\xafD\x95F\xd2us<\x96\
+\x96\xbb\xa8\xb0\xbf\xadk)\xb9\xecf\xbf\xc6\x0c\x0b\x98\
+~\xba\xee\xf11\xe3c\xc7\xc7t\x15\xac\x1b\xcc\xf7a\
+{\xbf\x99\x09\xb3}\xf9\xf6\xafC\xfct{\xe5\xb0\xee\
+\x1c\x00\xa0\x13\xbf\xc4\x00\xb2\xcf\xf3\xb9T\x8f\xab\xd6\xbb\
+\x97\x85-s\xd1%X\x0d0|\xe52E\xa8i,\
+M\xfbt<2\xac\x1b\xef\x87\xe9G[E\x859\xfd\
+\xe3\xf6\x97\xc3\x96\xc0\x9eV\x831\xc1%>zZ\xd8\
+E\xf4\xe6\x02|%\x04\xc4S%\x02\xd6%\xf1\xd4\x1b\
+\xce\x9a\x09\x05\xdc\xf89\x14\xee\x0f\xa4\xf6B\x8a\xd1\x8e\
+7\x08k\xeb\xe1\xb0X\x0fDQ\xab\x10u\xe8\xf6\x90\
+\xed!\xcbx\xbeP\x0ahZ\x01Z&\x00\xa5*\xba\
+\xfc\x0a\x15u@(\xc6\x85x8{\xac+a\xa0z\
+O|\x98h\x1a\x86\x90\xd6\xae<\x07L\xa7\xa9);\
+\x12Qba\x00Y\x15\xc9l\xc9\xaa\x04R\xc5\x1bC\
+VA\x88\xdfM\xc0\xab\x12+\xe7\x918Z\xe5Y\xa2\
+(\xe1\x5c\x8b\x80\xbb\xffD~%\xf0\xc4\x0f\xd3?W\
+b\x06h1\x9eVK\xa0\xca\xab\x84\xc7\x94\xa5l\xb1\
+\xb8P\x22\xa7\xe0f=a\x12a\x08\xbc1\xac\x03\xc8\
+\x8f\x0e\x9b\xbe\x7f\xe5\xec\x9f\x8aA\x96\xcc\xaa\xf1\x94\xb0\
+\x04\xc2\xee\xd6%\x84\xe6\xc0\xcb\x7f|\xee\xf4\x075=\
+E\x85<\xfdZ1;\xc5\xf9\xces\xe7= \xc1\xfa\
+\xd2\x22$\xf1\xd7\x02\xa5\xd0\xb1\x16#\x07\x90H\xd0\x15\
+R}Y/Z!\x1e\x18\xb6\xb4\xf0mO\x0d[*\
+\xd1\xe3ya]%\x1b\xe3\xd2\xfb\x8a\xc3V\x89}\x01\
+\x02+\xc0\x8b(j\xc5y\x0a<\xe2B\xeb\xd2\xfb\x03\
+\x00\xe4k\xfc\xec\x9aI\xb0\xae\xc8\xf3\x1f\xbew\xbf}\
+\xbffX\xac\x99\x0ak-\x01\xf7_\x1ei\xbd{n\
+\x98\x9b\x8f\x0d\xeb\xfc\x96W\x89\xf8\xaa\x901\xdc%l\
+\xba\x9c+\x85M\xdb\xe0\xd7\xc3:m\xb6\x9c2T-\
+\xe8y\x1fJ\x83C!\xd5\xb9\x81\x01\x04\x90\x93o\xd2\
+h\xe0G\xf9\x01y\xa3V\xaa\x04\xd6\x01\x0f\xbb,P\
+\x09\x9b\x9e\x85zc\x89pRP\x9a\x18\xcfm\xbbq\
+0\xe6\x15\xeb\x0du\xe3<PHT.\xb8\x12\xf3\x81\
+`\xa2\xb6\xf8\xf9\x14\xb5+\xf1%\x223q\x15\x97\xed\
+\x10U\x00\x83\x03\x85c\x88\xff\xee\xd1}\xef\x01\x13\xf9\
+\xb1p\xbcrP\xc4\xfd\xfa\xf1~\x97\xec6\x9e\xde\xfe\
+x\x9f\x9f\xb7\x8a\xc2d]om\xfe{sW\xe6W\
+\x1e\xd0m`\x1b)\x08\xd8\xef\xcf\xeb\xde\xabSu\x8f\
+\x03\xee\x06\x99\x18\xbf9\xc5G\x1e\xdc\x8d)\xd3\x83K\
+]\x18\xb2\x98\x89\xcb\xf0\xe2y\xbc\xd1\xe6\xaaI\xdd?\
+{\x1eg\xd7\xea&WmH\xd2\xec`U\xf2R$\
+ks\xf7\xb0Ethx\xfe\xf0\xbc\xe1y\xd3\xeb\x1b\
+\xc3\xa6\xd7\xa3\xc3\xa6_;/lz}J\xd8\xf4\xef\
+7\x0b\xeb\x12\x7f@\x03q2S\x04\x00<\x1cp\xf6\
+\xc2U\x85\x9e\x88\x99\xb9\xd1\x99\x98\x103,DVE\
+.\x91\xec\x12\x11\xcb\x03z\xf3\xa7a\x8b\x1ap\x01\x1a\
+\xc1\x1c\xb8F\x13\x89\xb9f{=0\x0f\x96\x877\xab\
+\x83\xaf\xb4\x03\xf2}\xf4T\xea\xc5\xad9\xdcO\xbe`\
+@Y\x1a\x04\x00\x18\xbd\xbf*\x0e\x8fi\x16\xcfe\xfe\
+\xfd\xeci\x1b\x1e\x1c\xd6\x1d\x8c\x80\x1e\x95\x17\xe3{8\
+N\x8e\x16\xc2g\x9cXRPkL\xd0'r\xbc_\
+\x8e\xa7\x12HLn}\xee}\xcd1`\x9eG\xa9\x8b\
+S\x15GEN\x07nnr\xed3\x0e\x15\xa0\xf6\x7f\
+\x8c\xd3\xdc\x9e\x15\xd6\xcd\x9f%\xaa\x02Q\xe68\x1d(\
+*\xd1(\xa8\xf6\xcb\xf3\xe7\xca\xd3v\xef\xb9b3\xde\
+#\xacK\xdc\xdf\xd6l\x09\x8c\x1c\xa8\x0e\x00\xc8{2\
+%*P\xc9J_Q\xa2\x8d\xb5\x93X\x13!\xcd\x03\
+\xb1z\xbb\x00V\xf7\x08[D\x1cK\x1cR\xe55\x13\
+\xcbV\xb9\xbcZ\xa7\xdel\xbf\xaf\xb5R\x1c\xfc\x02\x9d\
+\x9bd`\xf3\xc3<\x80T\x86Q\xbc\x92\xc2]\xc0\x1a\
+`*\x99!u`fbY\x01%\xbf!a\xf4y\
+\xf3\xe7K\xcc\xd3\x01$\x00\xce\xfbZ=\xf6\x98\x0b\xc6\
+\xfb=/\xac\x0b4\x1d\xfc\x12\x10\x09\xb3\xb1V\x02.\
+\xe2\x98Y\xe9\x1c_\x1e\xd6\x1dT\xfcg\x02\x1d\xe3\xa7\
+\xc2\xa6\xfd\xf3\x9ba\xd3\xf7\xfb\x85-\xfb\xaa\xc6\xa8I\
+\xfciyd\x222\xdc=\xacQ\x88_\x1b\x14b\x0c\
+\x8a\xe9\xae\xcd\xad7*\xc4\xc6\x8eR\x037\xe7\xdb\x01\
+\xeb\xb9\xfdOV\xca\x12h\xd4\xf3\xb9y\xe7\x0c\x04\xb6\
+\x96\xb5\xe9\xfb\xf1\xadaKE\xdd\xf9\xb1\x9e+\xbd\xf9\
+\x9f\xb0E;\xa5(\xa9z\xbci\x82$cJ\xc25\
+\xbc>\xac\x1d\xfc3@G[\x86*p\xf6>\x96\xbf\
+EU>-\xc7\xd3e\x00=\x5c/li\x0d(J\
+0`\x96\x8a\xf8\x893\x05\xb2*\xa6'\xe5\xbe\xcb\x80\
+m{\xcf\xb0L\xf4\x1f\x95L\xb1\xd7/\x22\xa9>g\
+\xf36\xef\xed\xb48~'lI\xe4\xec3\x0c*\xbd\
+\xd3z\xe7K\x842\x13\xb1\xf1\xa5\xe3K\xc6\x97\xb6\xfb\
+svc\x94\xd9\x07(\xed\x80v\x158-\x05\x00P\
+-#\xdf\x0d\xeb*\xdf\x02V\x95\xa3\x04\x8a\xda\xb9\x19\
+@\xc38\x03\xcc\xc5\xb4x\xde\xf6\xc4`\x1a\x0d\xef\x0b\
+k\x95\xe3\x9bF\xe5x|\x7fX\xbb\xaeyJD\xf6\
+\x04G\x1a\x1eb\xc7\xe3\xe3\xc7?\x1a\x1f\xbfT\xd4w\
+\x1e\x1a\xd6\xf9\x0d\xfbA\xc2&\xbe\xe2\xef\x00\x96\xb4G\
+\x00\xcb\xce\xd3L\xf8\xc6\xef\x84M\xaf\x0f\x0f\xeb\xc6^\
+f\x80[\xd3\x1ar\xcex%\xbc9\x8f\xbe*\x85\xa9\
+EQL/-A\xeb\x16>q\xa4\xc0U\x9c%A\
+\xd2kL4\x12\xe5\x9e\x1f5\x95Eb\xe1<\x14\xbf\
+\x99\xc2\x94\xd7W\xe3\x7fUlQbU\xd4\xf8\x7fS\
+\x15\xbe\x90c8\x7fg\x06\xd4\xa6U8\xfb'\xd7\x87\
+Y\x86\x22\xdc\x03A\xd7\xed\x12B\xfbE%V\x02C\
+CD\xeb\xc9\xc3\xb2\x05\xc8\x97\x84\x0f\xe3\x22\x0b\x1e\xdb\
+\xab\x84uS5\xfc\x5c\xc6\x83\xb5\xae\xcde\x07\x9cJ\
+\x5c\x88q;W\x96\x96\xa9\xc6\xa0\x9a\xd2\xdby\xbc/\
+\xc6\x80\xde|\x95P\xf7{-\xb6&Q\x03 \x00\xc0\
+\x8d'\x5c\x8b\x06zN\xfc\x12\xad\x1f\xd4g\xe7\x86\xfc\
+\xc1\xfb\x03\x00\xacs\xeb\xdf\xbe\xf6|\x00\xe3Z\xb8\x88\
+\x80\x1e2\x03=\x0a9\x05\xf0x~\xf9s5\xadI\
+\x02(\xae\xd1\x9ah\x8c\x9e\xe9\x15k\xf1^\x80\xb2\x82\
+\x08Q;\xc0m2*kzG\xfa\x11\x1a\x0b\xb5~\
+h\x1f\x01\x1eiJa\xa8=9\xack\x91\xfc\xb7Y\
+\xb4\xbb\xc4^3N\xa8J\xef/\x85u\xefg\xea\x1b\
+\x7f\x86A\xa2\x00\xb3.\xbc\xd8\xf7\x12f\xaf\xd6\x93x\
+\x100'Q]k\x00\xd8\x07\xde_\x0b\x00&\x03\xbf\
+%\xaf[\x8f\x1d\xf4\x5c$\xf8\xfd\x14\xa8+v\x09<\
+\xc0j\xa5\x09\xb0\xfd\xdf\xb0\xae\xa5\xc3u[\x97\xce\xe1\
+\xf5t\x0b\xd7)\xbe\xf5\x8aQ\x9e\x00S\xb5*Y\xf7\
+\xa1]\x17\xda\x0a'\x87-\xad\xcbM\xcb\xeemK\xa1\
+m\xfc`X\xc7\xb0\xc6L\x96\xef\x88\x93]\x9f\xcf\xe9\
+{~U\xc1MK\x80\xb8m\xcdPr\x7f\xb2Uh\
+W\x9b\x8f\xfb\xa7\xc9\x00\xf8\xb5\xdcHw\xc9\x8a\xecu\
+\xba?\xc8\xf1\xa9\xbcRQE\xb52\xaeKB\xaf\x17\
+9\xc7zU\xc51D\xc6\xfe\xabC\xeeb{]=\
+\xbf\xbf\xc9\xb2\xe1\xa9\xc97\x11\x9c\x7fN\xc7\xf7\xc9\xac\
+\x08\xf5\xaa\xf8\xa8\xf7z\xf2\xd7@\xc0\x9a\x12\x22q\xb1\
+\x90\x1dT\x0e\xa4\xbe\x15a\x8f\x95\xe8\x9f\x1e\x7f\xe2\x88\
+?\xeaD\xd3\xe2\xb7/\x9e\xe2z\x97\xeb\x00\x87X\xc6\
+\xff\xdd!\xa6\xa8%*\xd9\xa8\xc1qL\xee\x95H\xef\
+c\xbb\xca\x06\xca\x99\x00\x11\xc2\xa9\xd2\xf6\xdcL\xa8%\
+\xa0\xc6\xde%\xd2\x5c\x89\xea\x1ea\xdd\xfbfe\xa7\xd4\
+)3P/$\xf5u\x19\x80%\x15}xa\xd8\xf4\
+\xfa\xcc\xb0\xe9\xf5g\xf3\x1c\xea\xaa$fOLQ\x95\
+9\xe4\xec\x15\xadqq*\xf5\x18\x14\xc6Ca\x90\xa8\
+\x98\xa7(WQp\x88\x06\xd9\xb0*\x04\x1c\x94\x83\x0a\
+5VBu\xd7\xe9*\xee\xdaz\x0f\x1b%\xd1\x5c\xfa\
+Ru_\xf5N\xd6\x5cd\xe2\x85z\xec1-P\x8f\
+\xa9\x87\x13\x19L\xb1;\xda\x17\x9b\x0fm>?\xa8\xa7\
+\x02\x00\x00 \x00IDAT\xbc\xf9\xf0\x02\xb0\x14\x10\
+@\x9c0)\xc1\x85\xec\xeb%\x93\xc8\xda\xa8\x09\x00\xf8\
+\xfc\x11&\xb6\xf9\xa2\x97\xca\xde\xfd\x0c8$\xce\xdb\x8f\
+\xcc\x0e\x80\xc3\xab\xc0_/\xf1Cs\xbf\x02\xb6\xeck\
+\xe2b\x80@T\xde\x044J-\xd9<y\xa2jz\
+\xc6\xec\x1f\xbd\xe8\xd9\xb3mZ\xc0\x85\xc6\xa090\xd2\
+A\xa1H\x15B\x0c\x10\xb8\xce\xf6\xda\xdbkO\xdb\xfb\
+\xbaa\xa9\x09\xf2\xe9\x0ei^O\xcbP\x11JG\x5c\
+T[\x94\xa8\xdcw\xc3_\x86-=\xf6T\xa7U\xb6\
+P\x98Q\xfa\x8b\xc1\x80\xb2\x07\x10\x00<Q\x0bO\x06\
+IU\x82$p\xa8\xc2\x19(l\x8e\x08\xeb\xd4\xb0\x05\
+@\xd65\x0a/\x91\x1c\xf3\xd9\x01\x01\x02/\x80\x8d\x03\
+!\xd7YUn1L\x88\xbb=!\xac\xbb_4G\
+hq\x10\x91\xcc\x84\xaf\x12\xa3\x04\x18*\x80 :\xf7\
+\xa2\xb0\xee\xb9\xa9\x00Q\x81\xcf^\xc3h4\x8bV\xb3\
+R\xf5\x97\x90`Td\xa25\xbc!lQo\xaf\x0a\
+\xa8\x80D\xe2\x9a\xff_\xafs\x01\x8b\xfb\xce\xe3\xc1\x86\
+\x13\xc3\x96\xfb\x06\xa8\x160\x95\x06\x80\xde\xedd2L\
+\xe9\xd2\x5c9\xc5\x042E\x22\xa9\xab\xd5\xda\xe1~_\
+%\x01VT\xeb\xd4X\x99\x0e\xf7\xb9\xf2\xbe\xf7\xcc`\
+ ^8\x1e\x1c\xd6\x05\x9eI\xf1\xc4\x90\x18\xae8\x5c\
+i\xb8\xd2\x02\xec\x95\x18\x95\xfbDo\xf77\xe6@}\
+8\x22\xac\xf3\xab\x09|V+VV>\x86\xa7\x0dO\
+\x1f\x9e>\xfd\xfd\xe3\xc6c\xc7c\x17u\xedJ\x94\x92\
+\x01\xb8\xb9\xcd\xec\xbf\x87C\xc3&w{B\xd8\x05z\
+\x07\xe7\xca\xa0\xfd\x9e\x95\x7f\x22[\xd3U\xdc\xa2]\xc7\
+;6ooc\xf5h\xecde_\xe5\xa1\x18\x0e\xce\
+\x8bl\x1dj\xe2H\x07wc\x11sjI\xf9\xd9\x00\
+\xc4?\x90\x00J7\xa6O\x80=<+\xac\xed\xf7\xb7\
+\xc7~\xe7\x0f+\x11\xbdG\xb3\xa5\x12\xfa\xf3\x0c\x14\xdf\
+\xb1\xe3\xed\x8d\xf1\xf8\x86\xed)\xad\xd5\xe2O\xa7h\xe6\
+O\x97s\xb3\x12\x8f\x04\xeeP\xe6\xa9\x84\x0b\xd0\x1b!\
+d\xb3\x8c\xbb$:X\xe7L\xc6O\xdbkl\xaf\xde\
+\xe6o\xf3?Z\x93\xee\x1c\xd6\x98|\xfb\x07\x93o\xdc\
+?lz\xdf\xf7\x84u\xa2|\xfc\xb2DI`M\x9c\
+Lo\xba\xfd\xa3w\xde\xbeI\x0d\x0e\x80\xcb\xf0\xfba\
+]\xc2\x9d\x85\x85\xf2S*QZ\x92\xb25e|p\
+X7.6\xb5|J\xf4S\x00*A\x5c\x8f5\x16\
+p\xa3\x82\xa7\xbf\xac9\xda\x09\x1c\xf3\x1f\x18_\x05\x00\
+8\xff\xfb\xc0x\xcfn\x9f\xfc\xc9\xb4\xce\xfe\xa4\xcd\xc5\
+~H\xcc\xc5\xdeq\xd2\x8eW\xb7\xf3<)\xff\x95\x18\
+\x01\xdeS\x1d\xbbI1?\xac\x89\xa8\xb5V\xa5\x8a\xdf\
+\xcc\xd9V\xa0\x92\xd8\xe49ZS\x18\x00\x9c\xe2\x12\xcc\
+\xb0G\x865\x95\xef_4-\xaa\x04\x220\xeeL\x17\
+Q\xb9\xd5\xbaV\xea\xed\xa8\xbf\xee\xa7\x04\xce\xb9G\xcc\
+\xd1\xdf\xcdx\xa9\xd6\xa1\xc4\xed\x9b\xa9}\x14\xe7\xc2Q\
+\x09\xa8\xbf\xba+H\xd0x\x91\xd0\xadD\xdb\xaa\xf5K\
+\x0b\x90\xfb\xe0\x1c0\xb6\x90\xea\x7f\x9e\x07\xf5\x05\x80\xa6\
+y\xe4\xdc\x90\x00{?\x09\x98\xf5\x82\x11Fc\x80\xf8\
+\xac\xeb\x02\xd0\xd1V\xa2-\x83B\x9e\x89<\xca{1\
+\xdf0\x02\xb5H\xf1S\xb4#h\x06\x98\xee\x80A%\
+!\x94\x80\xab\xb8b\x94%\xf5\xbez\xf6\xb5@`\x12\
+\xd0\xc2R\x98\x93\xf8\x1a\xa7\x9c\x9a\x06\xd5j\x0d\xd0W\
+\xc9\xcf\xd6\x94\xd2\x9c\xc8\x84\x9ax\xac\x16P\x09i\xdd\
+\x1f\xe7\xb9)=\xe2\x01~\xce}\x96`\x8bG\xd7\xe2\
+{+`\xa9\xe2<\x9fG\xbe\xe59zu~zU\
+ R\x88\xc0 !\xd2\x0dh\xc9\xbfS\xe7\x97\xb8\x96\
+_q}>\x87\xa9_\xc4x%\xc8\xce/@\xbe\xf5\
+d\x1a\x091H\xeb\x86\x7f\xe1\x07\xc4\xb1\xf6\x87\xfb%\
+\x1e5\xe6\x17\xe0\x95\xcf\x7f\xe7\x03\xc2\xba\xa9 \xc6\xaf\
+f\xa1\xa9i\xdd]\xa5\x13\xe3\x14\x07\xc8g\xc4}+\
+\x91\xd0:\x07\x96\xb1\xdfs\xa1\xcd\xbe\xf0\xf3>w\x02\
+\x07\xbb$\xaa%\x9et\xfd\xb9\xc7\xb2-\x8b\x87tT\
+7\x144\xa2Nz#!-nx\xdeH\x89\xc7\xf6\
+~a\xdd\xb8\x1e\x15\x04@B\xb4\x0c\x5c\xa5SG\x8d\
+\x84\xe6\x1f\xba\x9e\xb2H\xff\x0e\xef\x16X\x8a\xf7\xd5\x07\
+\xb1\xd0L! \xda\x17\x8f\xeb\x92\xddu\xad\x13y\xda\
+\x00\xae\x1f `\x81F\x98\x7f\xb1\xaee\x80\xda,\xb5\
+\xffx\x97\xb1c\x06\xb8\x1e\x80\x83\xf1|6\x88V\x82\
+p#\xd7\xec\xdeW\x0fzT\xee\xee\x9b\x8c\x82\xbd;\
+`\xc2\xfd\xca\x00\xb9\xe63s\xd0\x12\x86\xfd\x13\xb1B\
+\x15N\xb1\xa3\xa2\x90JL\x93\x0a;\xdc1\xacKP\
+\x05\xfcw\x0ek\x8ex\x1e\xbfB$F@L\xb5^\
+\xa2\x9c\x89;\x84\xbe\x02&\xcfo\x8d8\xea\xa5\x86\xa0\
+\xaa\xb0g/=u\xec\xaaHh\x15\xa0q \x90\x83\
+\xc8\x9e\x18\xd6m<\x0e\x88C\xb9q\x8a\xdfx\x0e\x0e\
+\xce\x04\xae\xea\xef\x01>R\xf4\xaa\x18\x01\xe6\x93'\xc5\
+G\x8bE(#4m\x84\x1b%\xe5\xf3\x80d^|\
+3\xc5\x10S\x05\xb6\x80\x0cL\x05\xf3\xcdU\xd48X\
+\x01\x88\x0d\x0d\xdazwV\x12$~\xc4\xaa\xd6c5\
+\xbf\x9aL\x01T\xb4\xfc\x1c\x15\xe0\xfcv\x8auq\xf8\
+^3\x81\xd4\xc3\x5c\xc0\x87\x9e\xa9w\x85\xb5qF\xad\
+u\xa4*(\xd4m!\xaa\x12\xed\xa4\xd0VeW\xa5\
+<\xa9o5\xbeJ\xc0\x0a\x01^\xab\xdez\xce\x094\
+\xd4\x81\x96\x81\xf7x|XG\x0dGE\xcfD\xb1\x12\
+~\x81\x91D\x04\xf3\x08\x05R\x05\xc1zL\x8a\x22\x91\
+\xb7\x020sl\x11\xc0LOm\xf5\xf8ReW\x09\
+\xf7|P)\x01\x02\x09\x8c\xd4s\xb1\x8e\x8d\x0b\xe4\xa8\
+\x05\xb8\x0e\x1e\x0e\xde:P\xc9\xc7\x0c\xc2\xa8\x899\xdd\
+\x9f\xeb\x98\x15(\xba\xc9\xc4)\xea3?\xa8b\x96=\
+bD\x1d\x0b\xd8E\x99%\x86\x97@H\xb5\xb0\xe4\xbe\
+\xae\xc0\x06e7\x0f\x18\x01\xddx\xe5\xb0\xae\xd2\xfc\xf2\
+\xb0\x8e\xa2\xa9\xa2\x03\x88\xe4\xc7T\xfe\x00$z\xcf\xb3\
+\xc2\x5c@\x93\x00($\xe3\xa6\xcf3\xde0l\x19\x1f\
+X\x01eV\xf6\xb7\xaf\x09[\xa8\xeeS\xda\xf8\xec\xe1\
+\xd9\xcb\x9c\xf9\x1a+\x08\xa8\xb5^\x05h\xce\x95[\xcd\
+\x0c\xa5\x9a#\xef@\xe0\xf7$L\xd9\x138\xbc2\xac\
+S\x83N?Y~\x10#\xe5\x8c\x04F1\xab\x0e\xc8\
+\x83\xffU\x99p\x7fd\x16\xff\xab\x80\x0e\xc51\x99M\
+5\x0d@@\x0fX=e\xd6h0N\xb7\xa6aX\
+G\xbf\x92\xfe\xec\xb3\xf3:\xaa\x8ay\x06Z\xe5\xff\xdf\
+\x13\xb6\x00\x97\x80\x94\xe1\xcd\xc3i\xc3i\xd9{\xfc;\
+\x8b\xa6M\xed\x87\xf4Oz1U\x02KE?\xbe\xbf\
+k&\x8e_\xea\x02\x1fSd\xb4R\xa5\x7fk\xcf\xfd\
+)\x0b\x93a\xbceX\x178\x87W9o\x01\xce1\
+P6OLF\x87i\x15\x9fl\xcd\x0c\xb1\xbf\xfe\xae\
+\xed/\x800\x80[\x5cc\xfe\xb6s>\xfd\x95\xf3X\
+\xc20~\x22l\x01\x90\xa9l;\xaf\xc7\xbb\x85uq\
+B\xf0'NZ\xfc\xc9\xf8\x99\xc9>\xbd\xc45%\xca\
+k,\xd9:\xee\xe2'T\x8e\xf4\x22k\x9d0\xa62\
+\x99b\xa6*\x94X\x1am\x0e\x9a\x22Y)\xad\xd6<\
+\xf1\x88\xca[\xee\xa7\x02Z\xf5\xb0K\x90\x9e;\xd9\x9f\
+'\xa3\xf4\x99\x17Q\xa9\xb3\x1e\xd6\xe3\xd1\x00\xa4\x18\x84\
+\xc6\xcaj-\xa4yC\xdc5(\xd8g$3\xee#\
+\x9d_\x13?\x00\xa6\xbe5\x9d\xcb\xdf\xea\xc4(\xf9\x13\
+b\xb7\x12z\xd4\xf1\xf4\x93[\xd4^\x89\xc3i\xc9\xf0\
+1\x1d\x07\xf5_\x85M\xcb'&I\x02\x5cZ\xe8\x0a\
+h6\xef\x9chn\x02@\xce\x17\xa2\xb5\x0aF\xce!\
+\x89`1\xbd\x88\xd0\x12\xdd\xc5,\xe3\x0fLE\xd0\x83\
+\x0f\x90w\x9f\xae\xbf\xe3k-^\xc8\xc2P%^\xe2\
+\x0a\xfe\x8e\xff\x04,d\xafv\xc5\x0b*\xaa*\x91\xa8\
+\xf3\xae\x03\x83B\x81\xd0\xfa]i\x03\xd5\xf8K\xe7\x97\
+\xebp.\xa2\xb8\xfb\x9e\x98$\xf1Cq\x80\xf7\xf7<\
+h\x0f\xbd,\xac\x1b\xdf\x96\xda\x00\xdb\xdb\x86u\x89\xdc\
+gW\xad\x12I\xa9\xdf\x9c\x11\xd6\x8d\xd9\xb6\x0e\xdd7\
+\x05\x10cs\xf3\xfb\x1a\xef\x99\x00P1\x0c\xb5\x88\x00\
+\xb2\xb4\x82\xe4\xd8\xf3j\x95K\xff\x86\xd1P\xccJ\x9a\
+/\xcecqm2!\xc6\xbf\x0a[\xce\xe5\xede\xc2\
+\xba\xbcA\x01RKc2\x0a\xc5[\xb5o\x01\x98~\
+^\xa5\xbegn\x9f\xdf\xb5\xb8|&\xac\xdb\x17\xeb\xe9\
+M\xd6\x9f\xf7\xcf\xfb^\x0c \xcc\xef\xfc\xbb\xe2\xd0\xf2\
+C\x12]\xcfI+\x89\x03X^\xb8f\x96J\x8c\xe5\
+\x09\xeb\xc2\xaf\xdfs}\x12\xfe\xf5\xb4\x0b\xf1.\xbf\x80\
+\x99)\x7f\xf49Q\xf3\x01\xa8\xae\x1f\xe0N\x84\xd8z\
+\xc8\xf8YK\x97V\xca\xda\x87\x00\x00~\xdf>q\xfd\
+\xce3q\x0e\x91\xdc\xb5\xd6J\x9eK\xbb\x88\x22A\x80\
+Z\x8f\xf9s\xbb\x1f\x84\xac\xe8\x8d\xf7\xf5\xd5\x96r,\
+=C(\xa1)\x82@\x15q\xbc{X\xf6\x8c\xbe/\
+\x0f\xf4C\x12\xa1\xfe\xd3\xec\xdd=1\x1d\xc1\xd7:\x84\
+\xfd\xb7&\xbbCWyC\xfdW\x99\x87\xf4\xf6\xd4\x91\
+\x0e\x19\xb4\xa0\xda\xc1\xb1o\xf7s\x12\x0bb\x81\xa8\xf8\
+\xf1=\xd5\xda=\xbb\x83\x0a\x90\xe0\xd5\xdf\xed\x7fo\xaf\
+\xd5\xfb\xeeu\x11\x94\x0d\x0f\xec{\x9d\x08\xd0\xb9y\xdf\
+/\xdd\xdd\xb7\xe8Q>k\xd5z\xb0\xe9\x1c)\x87$\
+0\xe5\x10\x1d\xf8\xc4l\x88\xd8\x0d\x99\xa8\xab\xa0\x10\x19\
+\xcc\x80\x7f87lz}\xd7\xf0\xceaJ,\x87G\
+\x84u\x89\x97\xc0\xdf\xfcs@\x90J\x1eJ)\xc7\x97\
+\x94\xe2\xeai\xd6S\x9e\xc0BUH9Z\x9f\xcf\x86\
+Jds\xf3\xc1\xb0N\xbd\x96\x1az\xb6\x04\x14E\x94\
+CF\xa1_\x8dW)\x8a\xb4D\x0fR+\xf1\xd43\
+\x99\x01V%\xb4\x9e\x1f5\xf3\xacX\xd6t\x8b\xa4\xe2\
+\x09\x80\xa6\xbf2\x8b\x14\xba\x1fz\xcaQ\xce\xae\x9b\x01\
+\x87qt\x99\xa0\xd6\xf8\xb2\xa4\xde5)\xcd\xdbw\x94\
+\xc6L\xb4\xb7\xf7\xd9\xdew{\xdf\x16p\xcf\xbd\xc8\xf7\
+\xc8\x0a\x90\x00\xd9\xba\xb8a\xde\xaf\x9be+\x86\xf9\xc1\
+\x12\x1eH4\xea\x8c\xfbo\xff\x03\x02\xa85k\x11\x92\
+@JH \xdd\x12\xbf\xd4\x0cA\xb1\xaf\x80\xc5sv\
+ c\xfe\x00hT\x0c\x1c0\x02\x8d<\xa0J\xd3\xc0\
+\xf8\xac<\x08\x1c0\xdbK\x84u\xd4U*\xce\x1c\x22\
+\xa0\xc3A\xa2\x05\xc9X/\x08\xae\x80^o\xe5K\xc2\
+\x16\xa6J\x89\xc3A\xe2U\xce\x1dD\xc4\xb9\x04\x8cz\
+\xef\x1d\x00\x12\x5c\x01\x9a^k\x8c\x1c\xc0\x18\x80\x8a\x1a\
+vV\xd81\xaeJ\x8b\x81\x8a\xbc\x04\xf2\xfbs\xcbO\
+\x8d\xb7TQ\xc9\x9eq\xd4\xfd\xa2d\x12y\x02H`\
+p\xf1#\x02;s\xc7s\xcc\x1aq\xbbR\x81\x17\x10\
+\xda\x9f\x12\xd2\x1co\x13D\xfb\xa0\xda\xebA\x1b\x9f\x16\
+\xd6\xf5vg\xc0W\x22\xa0\xfc\xa8\xf1Y*4\xc9\x88\
+\x88\xbaYT\xce\xb6\x07\x86uS\x0a\x00y\xfb\xe4:\
+v\x9f\xaco\x94D\xbd\xf6\x0e\xe2\x14M\xa3\xd6\xde\x12\
+\x97\xe7v\xfe\xf6\xbf\xf3\xe0UY\xd0\xda\xe0\xf7\x0f\x9d\
+\x99\x13\xd3\xa7\x9b\xb5.\x1e=30\x86;\xcd\x00\xab\
+\xca\xfd\xe6\xf5\xb3Xj\x01\x9a\x09$n/\x15\xd6\xbd\
+? \xf5\x84\x19\xd8\xac^~\xcc \x95\xd2L\xc0\xb5\
+j\x19\x03Z@\x05\xb5a\x81rVl\x86\xc3\xc2\x96\
+\xf5K\xf4q\x0a3\xe6^o\x8c\xb3Ge\xc0k<\
+\xec\x1ff\x82\x0bh\xd2\xea\x92-6Ey\x8e\xfa\xf1\
+\x93:f\x03\xa6M\xb6\xb8\x95\x96O\xfa\xad\xf2\xdfq\
+^\xfd8+z\x07/\xe3x\x8b\xd2\x9c@\xd3p\xff\
+\xb0NC(\xa8\xd1\x93#\x1bo\x16\xd6\x01G/\xd9\
+\xf1\xd26\x0d\xe1\xb8l\xed\xc9\xf3a\x0a\xb7\xce\xdf\x9c\
+\xdf\x89.I\x10\xbe5k\xf1L\xf7\xec-\xadU1\
+\xfde\xf5j\x02\xb6Wj\xef\xb5o.5\xc7\x13\xa8\
+\xc6\xc3k\xc2\xba\xb9\xf6\xb7\x0c[4\x19J{)\xea\
+\xb9\xbf\x9b\xcf\xed{\xed\xfc\xf9h\x0b\xcc\x7fc\xf2\xf4\
+\x1d\x03f\xfcVX\xa7\xb1\x94qDi\x0e\xa8T\x02\
+\x96i-\xf0\xb7I\xcd/\x91<\xadt\x02L\x9a!\
+\xfc\x02\xed\x0b\x15f\x15X\x01\xb2\x84![\x00\x89\xcb\
+\x16\x90\xade\xc1\xf9d_\xfb\x92\x10\x08L\x15x\xf8\
+Is\xe9Q\xa3\x7f%\xac\xa3\xf4\x8b7\xa22x\x9f\
+\x85q\xd0\x94\x08\x8e\x99\x19W\xdb\x97v\xcf/\x00\xad\
+\xcfv-\x85\xce\x1b\xfe\xca\x18.\xe7\x96\x8a\xfd=\xe6\
+\xf8w\xfb\xa6\xdc\x17\x02nb\xc2Zl\x8c\xb3\xc3\x88\
+\xf3\x05\xd0N\xf1\xd6\x1aK\x9b\xfb\xa5\x98\x12\xa6\xc6`\
+D\x00V\x01N\x00_=\xfd~\xceT\x1f\x893\x86\
+\x82\x04\x0c\x80j\x9aT\xfa\xf5j\x09\xd32\x97\xcc\x98\
+j\xf1ZO\x1f\xf8B^\xcf'Su^+\x94x\
+\xcb9O\xf4\xcf\x14\x90L\x5c\xab\x10\xa0\xa5\x11\xc5\x9a\
+\xe6\x97^z\xeb\xcc\xbap\xfd*\xc1\xb4y\xb2\xf5\xa2\
+\xe2\x15S\xb2\x88\xaa\xd1>\xb1_\xd3\xff\x01\xeeKK\
+\xc5u\x03j%dD\x8c\xb5\xb4$\x00P\xbd\xfb\xc6\
+\xfc\x01z\x00\xeb\x12@\xd7/\x1f\xc1\xe4\xcbBB\x01\
+f\xfe\xfdJa\x99\xf7\xfc\xd6E\x88\xc1I\x18\x13\x18\
+\xab\xb8){\xbd+\xd1s\xde\x01\xf6O\x09k\x09\xec\
+\x8fZ\x02\xfb\xed\xe9\x14\x9c\xce\xb5\xedaa]B\xbc\
+j\xc9\xa91\xa1\xe26\x05!LM\x9fK^\xe3k\
+-\xde\xace\x05\x90\xb3fb\x8b\xf7\x9c\xcf\x80\x10\xe7\
+\xaf\xc2\xa1}e=\x9an\xa5\xa5F\xe1\x02\x03*\xe3\
+\xf4\x12\xcd\xb3o=\x17\x95\xf1\x153\xa1\x80\x02y\x80\
+\xf3T\x9c\xa3\xc0DL\xd0\xf9\xa7\xf5\x02P\x01`\xf1\
+\xb9\xc4\xcb\xd6\xb9\x96\x11\xf9\x8d)D\xc9d,\xf1\xea\
+\x9b\x87uy\x85}\xb9\xce\x0b\xe57\x00A\xa2\x9c\xd6\
+k\xc6\xa9\x0a%\x98.\xbbj\x9c\x01\x91\x92\x10\xbf\xb8\
+q\x87\xe0\xb9a^\xdd\xb0\xc0C~\xd2m\xb0\x5c\xb0\
+\x12\x82\xf1s\xb3\xaam\x13\xfb\xf8Pw\x00$\xe2\xda\
+\xdc\xdf\xe9\xe9\x00>\x937\xeccK\x80\xde\x00\x84G\
+'\xa5\xf5\xd1y0H\xe0\xf7\xee*\xf4\x02\x1c\xc8T\
+V\x9eZ\xc7`?Wz\xf5\xff\x1b\x1cp\x99\x0e\x18\
+\xe0P{\xd1\xbf\xfd\xba\xff\xdf\xff\xde~\xab\x9f\xbfl\
+:\xa0^4\x10 \xb1\xa6\xd6\xa4\xf8N\x01+\x90\xa5\
+\xa8\xbf\x042\xbfOX\xd7*@\x0dYo\x93\x0a\xca\
+c\xc3:\xaa\x9b^\xde\xf33\x90\xbcAn\x88?O\
+\x15H\xc0@\x06\x10\x9b\x8fF\x0d)\x0f\xfa\xe9}v\
+\xfeR\xd8\xa2\xf2<\x1c\x196\xbd>%\xacC:\x93\
+2X\x1b3\x0fz\x94C\xbd\x935\x1e/7Hi\
+\x17$\xe2W\xf3\xa0U\xdcSL\xab\xc6\xf2e`Q\
+\xc8\x1a\x07 A\x12\x888\x88T\xa2\x8ce\xca\xc4\xa1\
+z\x8f\xb5@|x\xa6\xe6Wo'\x84\xd5\xbc\xed\xac\
+D\x95\x83\xe5\x80\xc7t\x5c\x10G\xe2x\xd9\x8b\xdf\xc2\
+\xd5k\xb5\xc4l\xae\xc0\x19\x1fHS\xc0\x81\x94c\xb3\
+J\x9d\x97(\xcc\xf9m\xf2\xf52\xdf\xf5\xd2\x09$q\
+\xfc\xa7g\xc5-\xdc\xdb\xfe\x1d\xf0\xa3\x17\xd0:\xcf\x83\
+\xd5z\xd9>t{\xd4\xf6\xa8\x0e\xd95G\x19\x10\xe5\
+K\xa2\xf3\xbeD\xa0\x1d\xdc*\x89\x80,\xc8b\xb6\x1e\
+\x94\xda\xee3S\xc4+)\x9f\x98%\xd5\x13\xa9\xf2\xce\
+aq\xc0\x0e\x0a\x81_&\xccEU\x8d\xb9\xb4\xbb:\
+\xca\x94^N\x88\xe9~a\xd3\xeb\xd1a]\x85/\x13\
+\xe6\x0aP\x05\x90\xee\x17Q?\x14k\x81\x10`\x02\xb0\
+I\x9b\x82\xba\xbd\x80\x07\x19(+\xb9\xc5\xf4\x10PJ\
+4\x89\xb1@\x84\xad[\xbd\xd2\xa9\x92[\x957\x08\xbe\
+\xf9\xc7\xd9\x22R\x09\xb9\xf1\x9a*A\xfcBVB\x0a\
+\x00@\xfduP&%\xbc\xe6\xd3\xa2\xf0Q\xcbG\xa5\
+\xa3\x02\x9f\x89\x8d\x0a\xa8Dn\xfch\xd8R\xa1\xa8\xb9\
+\xe5\x00\x00\x81kRY\x8d%,\x000\x0f\xfe\xf1\x1f\
+\xc2\xba\xb9\xe4\xd9\xbb?\xbc\x22l\xfa\xff'\x85u\xd4\
+z\x89g\xf6\xf2o\xff(lz\xbddX\xa3\x94\xcf\
+\x80\xe3ms\xff\xf8|\xe6\x1e'\xf0g\x9dV/\xa6\
+\x04\xd0\x81\x8f\xb9$\x10\x11p\x98\xcb\xae2\xe3\x00\x7f\
+\xf3\xfc\x1c\xc6g\x85M\xd7\xff\xa0\x99J]\xa2\x86\xfc\
+x\xfa\x9b)Mk\x94\xd5\xe9\xae\xb6\x84t\xfb\xb3\xb0\
+\x0e0\xe4Osl\x1bM\x8f\xcd%\x12x\xa4\xfd\x00\
+\x80\xfd\xdd\xb0\x8b\x004\x01'\xc6\x00Ilr\xac\xdd\
+p`\xd8\xf4\xba_\xd8\xd2\x1a\x82\xb1\x17u\xfc\xa8\xe4\
+k\xc5\xc3\x88\x99V\xdbo\x0e\xb7\x9f\x13\xeaX\x87D\
+\x0f\xeb>}oNdU\x9e\xab\x02\x1b=\xb6o\xef\
+\xee\x87\x96(\xe3d\x83\x01vf\x16\x02\xbe\xb1\x9c\xaf\
+u>\xd0\x9a\x09\xe0\xe9\xaf\x93j=\x9dO\xe3\x1d&\
+\x8b\xf5\xfb\xa3\xb0\x14\xc7}a\xdbom\xac\x9c\xc4\x08\
+ \xe4~\xd1t(\xf1L\xd7\xf5\xb9i\xf7\x7f\xae[\
+\x0f\x0a!46\xf8\x01\xf7\x99\xd6D\xae\xf3\x06\xec\xec\
+\xdf1\xa4T\xb41sh\x96$\xa0\xbe\xfb\xc8\xc9\x8e\
+\xeaDW\xff9\x13\x0b\x15jL\x12\x01j&\xf0\xe5\
+\x0f\x9c\x8b\x18E4I\xc4\x17\xd9\xc2T\x00&f\x9a\
+\xca?\xaa4\xd5r\xbd\xf8Zp\x8e\xd81\xb7\x00L\
+^\xafU\x04#]\xf8l\x17\xcf\xe4\x18\xabj9\x22\
+\xa2j\xac\xa9\xf8p-\xceE\xcc\x8c8\x95\x7f\x17\xa8\
+\xf3#\xd1\x02\xfa\xee\x0eP\x15\x7fF\x98\xfb\xe5\x0e\x90\
+\xe3\xcf\xa7x\xb2\x8d\xbb\x0d\xde\xe2\xb3:Q\xb3`\x06\
+\xcdb\x9es\xab\xdd\xbe\x99\xf8\xf1\xf3\x00\x0d\x15L\x94\
+u\x09\xd0Y\x09P|o\xd5\xc3\xcc\x9f\xfb\x9c\x12\x85\
+\xf4\xa3\xe3s\xc3\x16\xff[\x09\x80sn\x8f\xb0\xe9\xf5\
+\xc6a\x1d\x93)\xfd|1\x1c\x01\x84\x12/\xf1\x98\x0a\
+\xb2\x961\xc0\xa9\x9eq\xf7\xcf\xfd%2\x9a\x05\xa1\x02\
+.\x005\x80\x98\xb5FV\x00\x00_X\x18\xc0\x05 \
+\x98\xd6\xa4\x95'\x86\x0c\x1e\x9c\xadO{w\xad\x02w\
+\x0a\xeb\xf2\x00\xeb\x9b\xa6\x89V\x00\x009Q9Tz\
+\xf1\x8d\xb9\xe7ZLi-\x01\xbcr\x1f\x17SY\x82\
+eNzj\x9b\xd0\xc6\xa8x\xce\xb9\x07\xa0\xd4\xf2\xa4\
+E#\xc5\x8c\x0b \xb9\xc5<\x9dI\x8bR\xf9?\xf7\
+\xcd\xe7N\x00\xb0\x0ab\xa6)\xd1t\x00\x88\xd0\x14\xb1\
+/%\xc6\x18\xc0Dc\xb5\xc0\xa5\xe8q\x8d+N\x00\
+\xb0\xf26\x80\xd1Z#\xc4\xf9\xc6\xdf\x01\x1a$\xe4\x0a\
+\x8f\xe2=\xffN\xec\xdd<{\xe2\xca\xbe\xf8\x1b\x09\xaa\
+u\xb4n\xe5\xe07\xfc\xfc\xba\x80\x8a\x01\xab\xb5\x11\xe3\
+T|a?\x02\x1a\xd6\x22\xa2\x19\xff*<T|\xed\
+\xef\xb9\x0e\xf1\xa7\xe7\xe6\xbc\xf7\xff\xdd\x17\xd7\xaf\x15\x89\
+\xe6\x09\x80\xddT\x91d\xf6\xd4\xfa\x94\xf8[\xc7\x18\xa9\
+\x19\xdf\x13\xb3-\xe0\xd4\xba7\xfd$\xf3\x96\x1a#)\
+.\x14'\xf2\x07\xaes\xdd\x92\xa1e%_\x0bx\x14\
+\x17&CjW}\xe0\xbc\x11\x8d\x82\xf0\xf1\x0e9\x10\
+\xa0KxQ l\xe0|\x80\xe37&\xfbz\x13\xe1\
+yiPN\xc6\xc7\x86\xe5\x8dzkG\x15G\xa53\
+?T\xe0\xf2\xd0\xd6\x9d\xbcPVPP\xfd]\x15N\
+\x89{\xdfCr\x89\xae\x22\x0f\xd1\x9b\x96\xd3\xc6T\x80\
+\xfd\xba\x05\xad\xf2/1\xe7P% \xc4\x06\xfd\xdd>\
+\xd1\xef\x13|\xd4\x9b\xfdR\xedw\x0d \xc4\xbb\xed\x9b\
+\x7fg\x9f\xee\xfd\x01\x0b\x11N^\xbe[\xf0A8\x9c\
+\x12\xdd\xed\xb1a\x0b\xe5\xb1(N)\xd6Vbe\x19\
+\xe0I@\xabg.\xc7\xff\xa9\x88\x19\xe7'p\xae\x8a\
+\xce\xbfN\x89\xf0\xbf6\xb5\xf2O5\xb5rb]\xa9\
+~\xba\xf3;a\xd3\xeb#\xc2\xba\xc4*\xa9\xac%\xf6\
+\xa7GEEE%\xc8\x98)\x95\x97T\xbb,\x0a3\
+\xaa\xba\xc4\x03UZ\xa2h\x01\x0b\x98$\x96\x19HU\
+b\xad\x87\x1a\x22\x9b\x00HQ\x9a!\xeb\xee\xbf\xb9\xe2\
+\xae;\x1d}\x0c\xefk\xe3\xfb\xf4\xfas\xc4T\xdcU\
+v\x89\x13Yg>\x0f j\x9f\x5cO\xa9\xf2\x5c\xf3\
+e\xf5\x8cA(\xaf5\x05\x1a\xd7\xca\x1e\xd4\x9fw\xbd\
+`*\xd2\x00\x03\xeb#\xee\xe6\x95\x16$}\xfb\x90\xb0\
+\x5c\x07\x0f\xca1v\x87\xe7\xf4\x8c\xedR!m<\x93\
+s\x1b29\x8f'\xb9u>?T\xa2\x05\xe0\x98\x0f\
+\x88L8\xda\x8c\x8a\x0f,b2\x15Hg\x80\x12\xc3\
+\x0ac\x5caM{\xd0;\xf5\xb4\xb0\xce\x91f\xebC\
+Q,\xadk\xc8>\x7f\xe2\xa0\xa2-\xe0\xb9s\xa0z\
+\xd9v\x87u\xafIiS\xa16^\x0e\xe5\xb1\xc4\xe1\
+\x1c\xd4\xb4*h\x98X7+\xe4\xb4\xa6\x17p\xbc\xa9\
+\xb1Qb\xa6y\x00\xd6x-\xe3\xe6\xcc-\xdf#\x0f\
+\x1c\x81\x84\xfb\xa1\xc7\xd4\x01\xed+\x81\xad\xea\xe1\xcc1\
+K\xe5\xf7\xb2\xf2U\x81\x84\x80W\x00E\x9cH@\xff\
+\x9c\xb0\xae\xe2\x85\xca\xff\xfba\xdd\xc1N\xe4\xc8\x81\xab\
+\xd5\x07\xf0\x83j\x98\x81\xe0pPXGi\xcdJ\xa6\
+\x83\xa9\x98-\xa9\x1e^\x1a\x02\xc6\xe5P\xe3\xa6\xfd\x90\
+\xd3\x1c\xb6\xef\xc9\xf1:\x19\xc8\xe8y\x96\x98\x16#E\
+\x85\xda\xf5\xbb\xee\xa4\xd8m\xee\x94\x22<\x10t\xe3c\
+\x05l*5\x80(~\x07\x05\x1a\xa5\xd9\x1cp\x89\x9e\
+\xf9\xbf\xeb}\xc9\xef\xa1n\x1e\x98*\xf5'\x865\x86\
+\xc5|\xdd\xa6\x0a|b\x9e\x0eQ\x89\xa7i;\xd9\x93\
+]\x00\xd4\xdd\xd2\x1fch\xd0h@\xe5\xe7\x9fTJ\
+1_\xf6\xccs\xd1\xf9M\xe4\xd4\xdfK\x86P\xa3D\
+\x9f\xd91I\x88b%\x13ex\xdd\xf07\xc3\x14\xd0\
+\x8c\x0f\x1d\x8f\x1a\x8fj\xd3\x16\xda\xef\x0f\xbf=\xdc%\
+D\xfc\x9a\x08\xec\xbf\xb6\xfb\xfc\x85v\x9f\x8d\x0d\xbd\xd3\
+\x8e;F\x05\xbe(\xf8T\x8bM\xbb0\xbeM\x055\
+[\xa2j,\xa6@\x10\x80f\xbcj2|\x86G\x87\
+-\xfe\xbc\x98\x1f\x98fA\xe9}\xd6\xe2\xf7&/0\
+Oo\xf1~\xc4\x14?\x9a\x09>\xcd\x98kN\xbb\xe0\
+\x9a\xdd|\xe7\xbe\xd0\xf1\xe3\xee|\x07\x8ca\x84a\xde\
+\x04\xe0}\x99\xae\xc5\x0b\xb5?:\x80\x9f\xb7\xc4\x0b;\
+\x0f\x9b\xec\xf0e\xacm\x8d1\xa4\xe1r\xef\xed}\xb6\
+\xf7YZ\xd0\xaaU&\x13\x0f\xfe\xad(\xbd\x7f\x19\xd6\
+\x8d\x97\xa4\xf5\x91\xd3\x1eT\x90\xf8\xcb*\x18$\x83\xa4\
+4J\x8c\x87K\xf1\xd8b\xa2\xc4_\xbb\xe7\x9ch\xc7\
+\xb9Q\xfb\x99\x9f\xb6^1\x03ME\xb1\xaf$\x14\xe2\
+H\x81\xab\xd6G\xe7\x06\x15{\xe7\x81\x0a|\x8e3u\
+\x9fP\xc6[\x22\xfd\xd1\x0eh\x01\xe0\xf2\x9b\xc4\xf9\xb4\
+\x08\x9d\x92\xda\x0e'\xa7\xb8\xe7m\x93i\x9a\xc0q\xb5\
+\xa8}2lI\xc0k^\xf8kr\xbc\xa2\xfb\xae\xa7\
+Z\xc2cz\xc9\xa5S\xac\xf6\xd7\xc2\xa6\xd7\xef\x87u\
+\xd4f\xad\x9c*\xb6\x18$\xc6\xcdIDU4%\xf6\
+\xebB\x12\x0a>m \x89\xc2j<Z\x89\xc5\x11\xfb\
+\xa4\xc9\xa0%\xcdy#\xeeP\xe8C]\xa7\xb5\xe3\x1c\
+\x8bV\xd3\xfdS\x84\xf3>\x99\x80\xfd\xbf\x8ei\xa7\x15\
+\x13\x13\x80\xbf\x97\xb89o$*\x18t\xfcj\x02X\
+\xa6\xf5\x94\xb6\x8e\xc2\x08\x06\x08f\x0b\x7f\xe1\x9c\xc4\x00\
+\x92\xd8\x01\x8eT\xf4\x9d\x9b\x00\xbe\x04\x0c\x87\xc7\x86u\
+~+\x19\x11*\xf3kF`\xc5M\xc4\x94\xe51\xae\
+\xc3\xfe\xa0\x0a\x8f9(a\xa4!r\x8d\xb0N\x94:\
+\x19\xa3\xc5\x10\xca\xf3\xa1\xf6\x8ds\xcf\xfd\xa4\x8dc\x9a\
+\x95\xb8\xec\xc79\xf6T\x02\xab\xf0\xaa\xd55\xe2\xd1?\
+\xc8\x96\x90wt\xf7C\x9c\x0cpY\x01\xe05~\x11\
+\xe0\xa0W~=v\x90f\x0dM\x91\xb5\xf8\xb3u\xb8\
+\x1e\xef\xe7\xf7\xe5[\xfc\x86VF\xd3Nr\x9dW\x01\
+b=\x15\xce\xf5\xfb<\xe2uL\x875U_\x02\xed\
+\xbe\xba\x0e\xf7\xdd9\x80\x11\xc0\xef\x89\x8f\x14~\x12@\
+\xd2JX\x0c\xf6\x8c{\x15.J\xab\x89&M26\
+LW\x13_\xed>&\xac\xd3.\xca\xf3\xa6>\xa7\xfb\
+\xe3\xba\x88F*\xf8\x89\x8f\x01\x10\xd6Y\x16\xd2v\xb5\
+\x8f\xf1\xb9\xee\x83\xc41\xf9\x8fIe\xf8\xe7\xae\xc2D\
+\x04\x0cE\x1b\xf5)?\xd0x\xb5\xc9\xae:\xbd\xde6\
+lQ\x01\xdf\xbc3\xf4\x90\xbb\xb1M*B\xa8$\xa1\
+u\xfa\x97\x99h<y\xe9]\xaf\x1b\xdf\xf7J_\xa1\
+;\x88=P\x08\x92^\xfc\x1f\xcdT\x97\xea\xe5\xcc\xde\
+\xb1\xa59\xb3\xfa\xea\xe6\x9e~\x08n\x1cS\x17[\x89\
+C\xec\xd5\x89\x17\xf9\xfdlAh\x8e`\xcfncp\
+\xd0\xae\x0bc\x01\x10\xd0\x03\x0c\xfbu\xe2k\x90K\xc0\
+\x06\x04Q\x80\x1ai\xe7[\xd3q\xbc\xb9C\xf0 \x87\
+\xd4F_\x9fc\x97\xb2W\xbb\xd4\x93\x89\x00>;\xc7\
+\xda\xfdW\x8eo\xb2\x01\x8d\x19\xd32\xa1\xe2\x92\x01\xbc\
+Db\xe7ia\x0b\xd2[\x9a\x11\xe6\x1fc\x00H\xac\
+ `*9z\x9f\xb2\xe2Z\x22F\x12x\xf3\xcd\xdd\
+\x17_z\x0dS|\x0f@P\x9f\x83\xc8\x87\xc0HO\
+]&\x00\x85L\xdb(\x10E\xe3^0\x05R$\x04\
+\x05\xac\xe6.\xa3Z\xd2<\xc8Dd\xf3\xff\xc2\xba\x04\
+\xf0\xcb\xd9\xc3\x0a(\x91x\x12\x19#V\x13\x12\x8f\x8f\
+\xebD\x04\x1d\xc0\xe6\x1bcr\xf4S%\xb6\x1d\x05K\
+%\xdcAc\x9c\x1e\x8a\xd7\x8e\x5c\xe5\x1c\xf7\xc9Y1\
+O \xa3(\xf0\x0e\xe2\xf58\x1d@\x06\xc7\x88i@\
+\xd4\x040c\x9d\xea\xb1B\xb5\xca\x8a\xed\xf6\xd3\xdbV\
+\x89\xd9\xee\x0c\x9b^/\x1f\xd6%\xa4\x1c#$:\x0f\
+Rc\xa8J=\xfdKaK@\xb0\xbdFX\xf7\xbd\
+\xcaB:T-\x01\x12\xaa\xea\xcd\x16@\xe7\x94\x88R\
+\x87mj\x8c\x8b\x98\x5c\x05x/\x0d\xeb\x188\x80'\
+\xbd\x9fZc2\xf1\xa8\x96\x9c\xbc\x8f\xc1\xa3\x0a&U\
+\x8diS\xf1Q\x11Hq-\xfb\xa8\xa8\xbd\x99\xa88\
+\xc8+\xa0Rq6\xb5\x81v\x87\xb9\xf0I\xb9\xaf\x8a\
+\xb6D\xe5\x8b\xa9n-\x01rpdB\x5cL\x17T\
+FTM\xd3`\x1c\xa4\x98(*{(\x8c\x12yZ\
+\x11z\xd8\xf5\xea\x1b\xab\xf6\x96\xb0\x8e\x01\xe4\xfe&2\
+?>j<n<n9\x87\x86\x9f\x86M\xaf\x97\x0a\
+\xeb\xa8\xc8\x8b\xfa\xfeL\xc5\xcbi\x10\xf5|\xf5\x94\xa7\
+\x16CUZ\x04\xc6\x02F\x95C~P\xefj2\x15\
+\xf4\x92\x96\x98\x9eJ'\x86MVLU\x5c\x0a`\xda\
++\xaf\xefI\xf3\xba\xd9>ffj\x15u\xf3\x88\xa4\
+Z\xbft^g\x9b=\xe7\x80\x92\xbf\xb0>*\xc0x\
+P\x22\xf6\xbf\x9c\xcc'\xe7\x1d\x06\x96\xc0\x0f0t\xf3\
+\x5c\x8fq*|\xbb\x0b\xc4.\x96\x89\xd8W\xa6\xa7=\
+W\x9c\x9e\xd4*N\x98H\xfc\x85\xdeK\x94[\xfe+\
+[4\x86\xcfN6\xed\x83\xe1\xef\xc3:\xd1^\xe3E\
+\xed#c\x851\xbd\xb2\x95\x01\x10\xb1\xf9tX\xb7\xbf\
+Bt\xf3']B\xa0U,\xbc\xfd\x94\x18\x0d\x0f\x99\
+\xecA\xd9\xa2\xf1\x17\xad%\xaa%\xca\xd3=\xf8|\xbb\
+\x0f_O\xe6XR\xc2\xa7\xddq\x8f6\xdd&\x13\xd2\
+\xed]\xc2\xda90\x9f\xf7\x00\xb8\xecMn\xe3\x13\x8f\
+l\xfb\xe8\x94\xb6\x8f\xc4\x05\x18i\x00\xe3\xa8\xdb\xffE\
+'\xe6\x9a\xe7P\x03\xd8\xdf\xb4\xac\xdf\xcdya\xddt\
+\x95|\x9f\xf1\x8c\xc9\xfe-\xd7\xf3\x1d\xbb\x80ZeG\
+\xcb\x88\xf3.+_\xc3\xc3\xc3:`[@\x1ai\xe7\
+\x93s\x8c\xdd\x87\x97J.\x06\xca\xf8\x80\xb0\xae`\xe3\
+UA\xc1\xb9\x0b\xf0\xd2\xab\xfd\xe3\x99AQ\x00\x9b\xc4\
+\x9c?\xe0\xb7\x9d\xbf\xb4r$\xae\xe2(\x957\xf1\x93\
+J\x9b@\xdb~v\x9e\xadE}\x01\x08\x98\x10\x97\x9b\
+\xa2\xad\xcb-\xcc\x8b*|\xa0\xb8\x1bS\xad7\xb7\x1f\
+/\xf6\x83\x04\xcac\x9f\xbd8lQ\xd9\x17\x87\x84\xe4\
+l\x88\xce\xd6\xf4\xa4{eB\x8e\xc2+\xe1I\x00p\
+\xfcXX7\xbe/\xfd\x8d1\xa9\xd5\xfa\xf1G30\
+\x5cb\xae\x123\x0c4\xa2y\xd6\xd9Z\xbc\xcb}\x00\
+\xe4R\xe9\xf7{\xa9\xedT\xaa\xf0*\xf7D\x84%\x86\
+\x80\x16\xe7\xbau\x04\xc8\x90\xc8\x01h\x00\xaf\x18T\xb4\
+\x060c\xb5T\x02\xe4\xc4\x85\xc4\x07\xc5+y\xbf\x0a\
+pR\x99\x97\x10Z\x874u\xd2oT\xe2\xaf\x02\xae\
+\xf0dL\x1f\xd1@L\x84d\x12\x10\xa3,\xc0(\x81\
+\xb2\xaa\xf8c|(h\xd1hr\xbeg~Rb\xd1\
+>\x9f\xf1\x9c\x0aC\xce\x0f\xf7-\xd7\xbf\xf5U\xcf+\
+\xd5\xfb\xf9\xa1\xf2\x0bD\x86\x13\x88(\xe6\xa3q\xb2\x18\
+\x1e\x00]L\x0dq\x16\x80J\xde\xe4+\xff?\x91\xc0\
+\xda\x87\x12\xce;7.j\x89\xebM\xabb~\xae\xe7\
+dbl\xbfJ,\xd7\xe3\x06\xf3\xbc(\xc6\x0c@\x8c\
+\xff\xa2\xc5`\x9d[?\x18'\xe2\x11q\xa4\xd6\xc3\x04\
+D\x8a\x81\xe3\xfcr^\xd3\x8c \x06\xe8\xef:\xd7\xe5\
+c\x80c\xad\xbd\xf2/\xfb\xc99\xea\xb9\x01 \xec;\
+\xfb\xc2\xcf\xbb>\xd36\xb4\x88\xf1w\x80%\x8c\x22\xfb\
+\x09P\xb4j\x05\xaa\xc2\x82VJL\x05\xad(\xa6\x02\
+\xa46\xdaxH\xd82>\xb3\x18o\x0a\xf7Y\x10\x14\
+\xa7\xb8/\xe3\x17\xc2\x16\xa6\xec\xe6\x15aK\xbc\xb3\xab\
+\x1d\xbf\x81\x5c> ,\x91\xd6=:\x04K\x0f\xeb\x8a\
+\xda\xda\xd4?\xa7\xc4s\xdc\x1d6\xbd^j\xb2\xbd2\
+\xf1\xff^7FLOD\xa6&\xe5\xb8\x8cYrc\
+RU\xfa\x02j\x9f{w\x0f6\x8e\x93K\xaeT\xfa\
+\x05\xf2\xe7w\x09\xf3\xd8\xc8\xda\x95x7\x8a\xd97R\
+\x04\xec\x0a\xdd\xcfs\x90\xc4\xfcL\x13\x884q\xd3%\
+\x8c\xb1mvvc\x02\xa9\x80\x07\xf5\xf7\xbc\x8e\xf2\xe7\
+\xbaW@\xc1\x05T&/\xd3\x05\xe0zm\xc2\xc1\x5c\
+\xaf\xdb\xc0\xb4\x16\x00\x0a\x97kG\xde\x12\x00C\x88Q\
+\x7fTP\x8c\xa7#\x16\xc4\x11~\x22\xac!\xcf35\
+\xf2\x8bs\xc0\xbf\xf9\xc7\xa4H\x9bco\x9c\xa3\x03\xc8\
+u\xa3\xd0fe\xa8\xc6\xec\xa1PI$,|\x1bV\
+\xe2\x9f\x95\x8cR\x01G\xc1'RhA\xea\x09#\xc2\
+#\xa0\x80\xe8s\xdc\x90e-\x05\x1c0u\xe4\xec\xa9\
+6\xbe\xa8\x80&\x894\x84\x8c\xe8\x9a\x84\x16\xf0\xc01\
+\x18\xff\x95\x89\x04 \xc9\xc6\x8b\xa9\xd61\xd7Z\xa0W\
+\xeb\x8fCQ\xc1\xb8\xe3t=\xd1\xeb}\xd3\xe9\xc0\xba\
+\xe9\x22.VS\x03\x88iI,~\x1e\xb6L\x99\xa8\
+\xc4=55j\xdd\xa3v\xebu\x96\xb0\x7f\xbc\xd5\xf0\
+\x17\xc4>+\x05S:>\xf7\xcc\xff8\xc7\x8f\x09\xb8\
+T\x18\xacK\x22Rz\x8dS\x04\xaaz\xad\x04b\x80\
+9\xd7\x0d\x10LQ\x9dz\xffD\x1a\xb7{\x85M\xaf\
+?\x0f\xeb\xa6\x1e\x08\xb4!\xa2\x99\x80\x8f\x7f\x14\xd6\xcd\
+Ow0&\x22_\xebB\xa5I\xe0(\xa0H\xaat\
+S\x15\xbf^\x07p\xaa\xf0\x99w/q\xd9\xb9\x1d\x1a\
+Pq\xcd\xed/o\xaf\xb90=*q\x11\xf0K\xd4\
+\x01\x5c\x0e8@\xdeOr.7\x913\xbdt\x98F\
+\xc4j\xf4\xfe%\x05vs\xa7\xb0.\xb0\x16\xf8\xd8\xef\
+\x803\xad\x01T\xa1\x13\xc8\xa9\xc0\x8aX\x9aq2\x9e\
+\x17q\x18\xbf\xa7g\x0c\x80\x94\xeb\xa4(bz\xce1\
+ur\x9f\xa2\xbaU\xa0\x0dP2v\x86\xd8\x0djr\
+\xefGwu\xfbDB-\xb0p\xa0\xdfw\xd6\xba\xa8\
+}\x9b\xd7=\xfcnX\x97\xa8$\xd0\xa1\x85\xa0\x00\xcc\
+\xdc?\x00<T\xc9\xd2\x92H\xa6S}/\xe1%F\
+\x94\xfe\xce\xffo\x00\xf6;\x17\xc6\x1a1\xc9\x1a+\xf9\
+\x82Y\x13c\xfcvX\xdb\xe77m\xfb\xfcY3 \
+:<{x\xce\xf0\x9cN\xf5\xff\xcff \xb6\xd5\x87\
+{\xea\x7f\xb6\x0e\x153\xe7\x88\x04\x1a\x8d\xab\x13p\xaa\
+t\x06\x5c\xf8\xb4\xae\xd7z\xaf\x04\xac\x01\xc4\x02\x5c\xe3\
+\x09o\xd2\x06K.\xe7\xad\x8a\x1b\xd1\xb6|\xbe\x9b\x13\
+\xa6\xc0t\xba_\xe3?\x8f\xef\x1e\xa7\x80dxu\xd8\
+\xd2\x0a\xd64\x04bJ@\xfb\xeaZ\x8d\x9e\x1f6\xbd\
+^6l\xfa\xfdW\x84-\x95\xd1b\x86\x11\xbd\xc4P\
+\xcb\xd6\x8f\xc6\xcb\xfaP\x978\xc6\xee\xe8\xa6\xf3\x10\x07\
+\xac^w\x89\xe7+\xe7\xb9\xf6\x8d\x01\xf1\x8e\xac\xacO\
+~wx\xd5\xf0\xca\xe1U\x0d\x08\xfeR\x13U\xd3\x02\
+q\xe9\xd4\x88\xb8jXw\x8e<lN0j\x1a\x84\
+s\xd1\xf8W\x0c\xb6 \x9a\x9e\x91=\xa6\x97H\x80\xf9\
+\xb0\xec\x11>\xb6\x13\x8f\xb4\xdf\xf3\x5c\xda>\x22,\x13\
+\x99\x87-\x15b\xf7\x0b\xd3\xcf\xf4\x8a\xe1aa\xcb\xf9\
+>\x9c\x1e\xd6\xf9/\x81p\x9c~_\xe9\xce\xe9T\x1d\
+\xaf\x96\x02Z%\xae\x07@H\xa3\xc3T\x90\x14e\xae\
+s6\xeaa\x01\x90>,\xac+\xbc8\xdf\xf8wq\
+\xc2Z\x940\xa7\x22\xb5h\xe9\x12]A\xc7\xfeWi\
+\x96\xd8\xf2\x0f\xcei\xffn\xec\xa0J\xaa\x8a\xa2\x04R\
+K \xff\xeb\x1cSh\xe1/\xa2\xf2\x7fr\xd7\x22\xc2\
+/\xe5\xfb\x97\x86\xc0\xc5fJ~U\x001\x8e\xf2\xe7\
+\x8b\xb2\x9f\xea\xf7\xc6\xea\x8e_\x0d\xeb\xce\x99\x04\x86\x15\
+d\xb6\x7f\x16\xd6\x01=*\x9f\x80\xc7\x93\xc3\xbasU\
+!I\xc5[Baj\x92q})\xb6]\x8c\x1ab\
+~\x189\x80D\x85\x0c\x05\x06\x80\x0e\x7f\xa0\xc5\x84\xf8\
+\x9b\xe7$\xf1\xb2o\xfd>\xc6\x93\x84\xce9\xee\xfc\xc0\
+(\xc8\xd6\xc2b\x0c\x88\xfb\x9do\xc6\x06f\x01\xa9\xc6\
+\xa9\x01\x1e\xc4\xfb\xd6\xa5\xeb\x02pg\xcft\xc5?\x0a\
+J\xcf\x98\xd2\xdfgtq\xa8\x96/\x09\xeeC\x92\xb1\
+@\x83 [\xf1J\x1b\xc3\x18\xd0\xfc\xbe\xce\xa9\x04r\
+*^\xb5\x0f\x9d\xeb\x98\xb4\x18\xaa\xa6+\xd1\xe2\xc9\x02\
+\x91\xbc\x06S\xba\xc4\xb7\x156\x8c\xf1\xfb\xb5\xb0n\x7f\
+)\x08\xf0\xdf\xc9\x08\xc6\xf8Yk+\x99F\xc2/\xd4\
+\xefIp1\xc4\xf2\xbc\xa9D\xd8\xfd\xd4j\x99\xda?\
+\xdd\x18\xf1\x0b27%\xc2\xe2\x13\x81\xbe,\x00\x00 \
+\x00IDAT\x06\xef/\xaeXMg\xaau\xc3\x1f\
+a\x08\xe4:\xafs\x85h%\x0d\x01\xf7]k\x84B\
+\x92\xebX\x89\x1a\x96\xe6\x11\xbf\x00\xd8N\x0d\x9e\xda\xd7\
+4t\x00\xd0z\xf8\xc51\xf6\x09`\x12\xf5^\xbc\x06\
+P\xd5*A\xa4]\xcb\x86B\x08\xe6\xdejj\xc5\xf6\
+^a\x1d\xc3T\x8bejxa \x8e\xa7\x87uc\
+\x89\x15B\xb2\xa5\xa0\xa6\x0ad\xe1\x8d\x1f\xd9\xf9\x9a\xb0\
+\xc5\x9f\x89\x8bv\x8d\xff/,\x91\xc1\x8f\xe5\x1b\x18\x83\
+\xf5\xb3\xa5\x92\xd7\xd4\xb1o\x97\xdf\x7fj\xa1\x14\x8c\xfb\
+N\xb6OR\x90\xde\xd5\xf5jp\xcc\x1fo)\xc9\xb2\
+`$\xd8n\xa0\x7f\xa7\xae\xdf\xf7\xf6\xef\xd5Q\xf7\x1d\
+\x08\x12\xed\xac\xf4W\xa2\xa4\x82\x81\xca\x11\x8f\xfb\xf2\xcb\
+\xcf\xb7\x07\xfc\x9d\x0c\xe0\xaex\x11\x09\xbe\xb1\x81\xfd\x14\
+\x01H\xd1\xb9\xb9a\xfb\x1e\x91\xf8\xf7\x1f^\x04R+\
+\x81\x8c\xe5\xb2w76\x10\xd0\xe0K\xa0\xe3 \xe5`\
+U\xfe\x22\x1c<\xa6\xab\x98d\x05\xba(\xf2I\x0d\x1a\
+\x0e\x9e\xe76\x0fg\x0c\x1f\x19>\xd2\x0d;\xc8\xf9\xa2\
+z\xb5\x8a\x22\xfa\xb3t$\x07db \xf1=\xa6Y\
+\xa9\x03W\xcf4\x8a\x13\x95\xe8\xcf\x86u\x88)\x8aV\
+\x8ai\xd5Ac\x1cU\xce\xbb\xae\xb9\xcf\x0ef\x95`\
+\x0eT\xefk\xf6(\x03$j\xdc\x18Q\x22\x0e\x06u\
+\xd3\xf3\xd0\xfb\xe6\xfa \xc6\x1c\x16\xc4\x9acr@Y\
+W\x1c\x87\xe7\xe1\xbexN\x00\x0e\x80\x94\xf7\x13hg\
+\x85S\x820\xdc0\xacQ\xe0\x1e\x16\x14\xb8\xcdm\xa7\
+\xfds\xdb\xc5\xb1\x0d\xbf\x1e\xb68\xd8\xc6\x90xD\xd7\
+j \x10XS\x04\x89\xaa\x00\xb0\x8c}I*u\xcd\
+\xbdO@o|_XK\xdc\x9a\x88\xdf\x94\xe0^\xb3\
+%\xb8\xa6>\xe4\x81\xbb\xe3~Y\x99\x04L\xe9\x9d7\
+u\xc2\x81&P@\xad\x96\x88KPQ[o\x18\xd6\
+\xad\xa7\xacl\xee~oX7\x8f\x98\x08\x95V\x0a\x15\
+\x00b\x7f\xa8\xe6I\x99Cm\xdb\xfejX\x87\xb0f\
+`P\xc8=\xd1.\x08)5\xe9\xa4\xf2\x19\x93H\xad\
+{<(\xac\xab\x00\x9b\x9f\xfd\xca\xb0n\x0c% \xcc\
+x8=\xd0\xb4\x09\x00\x1b\x09 l\xff\xbe\xe6\xff\xce\
+\x94|\x09\x9e\x80A\xcf\xab\x03PE\x1e\xa0\xa1\x95\x06\
+\xc5\x1fe[\xe5H\xc0m\xfdz\x1e(\xd7\xe6\x10\x13\
+kT)\xa3\x1a\xac\xb2\x85\x99\x008\xa3\x89A\xac\xee\
+\xdbaK+\x8b\xfbY\x01\x89\xc0\x0e\xc3\x86*p\xf6\
+\x80\x03\x0a\xad\x8b\x0a\xd8%\xac\xc6h%pY\xe2N\
+\xa9v\x0d\xf9\x1e\xde\x11\xb6\x00\x9d\xe3;\xc2\xbau\x9c\
+\x01\x7f\x89\x7fJ\x14$N\x00\x10\xf7_@\x91\x81k\
+\xad\x13b\x96\xc4/\xb3\xb2\xb5}[\xd8\x22\x16\x18J\
+5M\xab\xe6\xa8\xa4\xae&\xe5\x0e\xe3g\xfb\xafsE\
+n\xf8IX{\x9f;o\xee\xdcU\xb2\x9e\x96\xbd\xd7\
+oO\x11\xcd\x17\xa7\xe8\xe3M\x92:\xfb\x84\xd4\xb4Q\
+\xa9\xb1\x9er\xfd\xb5\xf7\x0b\xc6\xc3\xab'{U\xa7\x99\
+\xa2\xd2\xab\x05J\xe0\xc7\x7f\x06l\xf5\xcdT\xf9\xff\xcb\
+l\xd1\xfb\xcf\x8e\xc1\xf2\xd6)\x91}\xeb\x12\x80\x0f_\
+\x1c\xbe0|qz\xfd\xe5\xb0N\x1b&\x99 \xc3C\
+\xc3\xa6\xeb{d\xd8\xf4\xfb\x17\x0f\x9b\xbe\xff\xcd\xb0\xce\
+\x9f\xf6\xe3\xcb\xee\xd0\xf9\xfb\x04\xc0T\xeaT\xf6Li\
+\x10\x08\x0d\xb7\x08\x9b\x9e\xfb\xdf\x86u\xe35c\x17\x9d\
+\x99T\xdfg&\xe3\xe2\xb9\xed\xf7\x1e\xdf~\xef\xde\xc3\
+}\x86\xfbt\xda\x0c*B\xf7\xdeq\xafv\xeeP\xd7\
+\xcfs\xcc\x5c\xf0\xea\xdd\x07\xe0\xfco\xd8r\xbd>g\
+i\x1d|;\xac\xf3;\xb9~\xea\x0b\xd0\x19\xc4\xf5\xb3\
+\xb2g\xf4\xaf\x96\x04e\xb8z\xd8\xf4\xfa\xd5\xb0d>\
+<$\xc5W_\xd0\x89\xc3\xd2\x5cR\xd1\x15B\x01\xe4\
+\x00\x87\xceG\xfb4\xf7\xdb\xf6\xf8\xb0\x851S\xfb1\
+\x9e\xd2\x95;?\xe5\xfc\x94\x80t-\x96\xed\x1ct\x1f\
+\xfb\xc4}WW\xb0\xe1\x9f\xc4{\xe24\xf1\x92\x0a\xbd\
+\x9fs\x1e\xaf(\xb8\xe5\x97\x8e\x9a5m\x9a\xd7\xea[\
+\xd7$j\x12\xbe\x0c\x98Q\xe3%\xa0S\xba8\xef\xdb\
+\xdb\x85u\x01\xfe\xd9\xd9\xb3,\xde\xccV\xad\xaa\x1cK\
+\xa8\xb2\xe5\xad\x98f\xff\x92\xe3A1\x9f\xb4\xfc%S\
+\xaa\x80\x1f\x801\xa04\x13y\xd3\x19*>[\xb7\x9c\
+\xa0\x96k\x1d\xa0\xfd\xe4y\x89\xa3$l\x9e\x93\xe7\x07\
+\xe0W\xe8\x10\xf7\x88\x1fV\xd3\xaf\xa6he\xb2.\xae\
+\xcd\x04\xabZ\x0cT*imekN\xf9\x9b\x8c#\
+\xab5c\xcc\xbf\x13e\x85;u\xa2\xb7\x80O\x9f\x13\
+\xc3MK\x1b\x86\x10\xea\xba\x82\x06 @B\xa6@\xa9\
+\xf5\xe9\xf0\x04\x16~g\xc7\xdd\xdb4\x99\x15\xa0\xb49\
+5E\xf1\x0e\xcbs'\x19H\x05,\x10\xe3\xfdd\x8e\
+\x1d\xc7\x80\x11\x07Z\x1f4\x05\xb2\xb2_\x95[S7\
+\x003\xb9\xdf\x86_\x0d[\x9e_\x8d\x1b\x06\xfc\xcb[\
+\x00\x1e\xfc\xb5\x04\xf2\xa7a\x1dp\x97\x0c\xd7\xda7\xd6\
+\x95\xd6J=\xf1\xa6\xf2h\x89\xa1\x01\x04\xe8\x96\x88\xab\
+`\x03\xe6$\xd4\xc6\xd1I\xdciX\xd8\xbf\xa6\xcc\xe4\
+\xb8\xc7\xb5\xc8\xe7\x85\x18)\xc4;%\xf8Zn\xf8\x19\
+\xcf\x81\x88w\xfa'\x8c\xd0\xba\xbf\x0aM\x0a\x0e\x12w\
+\xf7C^a}\x88\xdf\x89AkA\x07\x8c\xda\x9f^\
+1\xc4\xc4\x97\xe9\xef\x8a\x01\x93\xf9P14\xe4\xbd\xfc\
+\xd1J\x0c\x9e\xe6F]_>\xef:\x1fM\xc13\x05\
+\x003)\xf7Qk\xb9\xbb\xd9\x028\x96x(Q\xf4\
+\xf4\x8f\x98\x22!u\x1bb\xb7\xa5E\x96\xe7\x99\xe7\x87\
+\x91\xbdk\xdc;,\x1dM8\xa2}&\xdb\xb7K\xb0\
+\x03_\xf8a.\xb8\xff\x5czq\xc7\x0f\x86-\xaa\xcc\
+\x95\xe8K\xe49\x10\x07\x81\xc4\xdf\x86\x5cUd\x0b\x01\
+\xa6\xb2Ou\xdf\x81 \x81\x96\xf0s\x00nx\x9fh\
+o\x97\xebn\xcb\xaaC\x96[e\xee\xbf\xdb\xd8\xb6\x03\
+\x1a\x02\xe4\x00\xb2\xa0#\xec\xbetwPq\x90\xfe\x9e\
+\x8d\x8aB\x9c\x1b\xb3Q\xd2\xf6_\x01\x13\xe7]\x84\xc8\
+D/\xa6xN\xf7\xf9\xb4\x00\xc42\xbdzG-V\
+\xf9\x17 \xa3zr\x98*+OH$\xfbe\xb3&\
+@\x89u\xa8\xa0\x9a\x97\xac\xc7y\xdf\x1c\x07\x220O\
+*k\x89RQ?\xd5{\x9c\x95-\xbdBu\x1d\x09\
+\x10\x14\x22\x85\xaaDl&\xa9Zz?-\xcc\xaa\x08\
+$\x82U\x220zF!i)2W\xad\x1c\x12\x7f\
+\xc8\xb4/\x08\x9f\xdfS\xe1\x07T8\xa0U\x04\xac7\
+\x011$\x92\x83_\x1f\x94~\x1e\x80q\xf5\xa4\xd0\xa7\
+\xd8bQ\xfe\x1f\x9f\x88\xdd\x0d6\xbf\xd2\xc6/^g\
+s`\x9b\xbe\x90\xff\x7f\xb8U\xd8\xc2p\xa8\x0d\x1a-\
+\x05_\xeb\x12}\xaa\x9d\x99\xa8no\x14\xd6\x89\x09\xa5\
+\x9a\xec\xf8\xe5\xb0\xe9\xfb\xdf\x9b\xec\x88\xe9\xfb\xb7\x85-\
+\x89\xec\xf8\xc7\xe3\x13\xc6',\x8e\xaa\xc6\x0bI\x0c\xbe\
+\x90\xd4\xf4/\xa7X\x92\x04\xce\x01\xf2\xbd\x95J>`\
+E\x8f!\x07\x9d\xaa\xb2\xe3\xe7\xc3\xa6\xd7\x8f\x84M\xaf\
+g\x87M\xaf\x8f\x0e[(\x94\x80\x88\x12\xcf\x03\x04&\
+\xb0R\x00\x00J\xa5y\xc8DM\xf44\xa9\x5c\x11\x9d\
+\x11\xa8\x19\xcf\xa4\xc2\x90\x81M\xcdY\xce\xc0\xbc\x80.\
+\xeb6+\x08Z_\x8c\x0f\xab\xde)\x81T\x1e\xac5\
+\x15\x01\x12-\xd0\xd5\x12 QG\xf9\x02\xf0\x9d\xd0l\
+\xd1\xf2\xf8J\xd8\x02\x88\x94\x88\x1e\x86\x0c\xff$\xc0\xb4\
+\xbe\xf58\xa2\xf0\xdb\xa7\xb4\x06\xa8\x01S\x93\xcf\xf5U\
+\xf3\xec1q\x04\xd8\xb9\xaej\xbf\xf8}\x09\xb1\x1e\xb6\
+\xac\xe0\x94\xd8\xe3\xa3\xe7DX%\x18\x00c\xcc\x5c]\
+\x17$\x9f\xdf\x03\x00\xe4\xbe\xad\xc4\xef\x09a]\xc0\xef\
+\x80L`k\xe7~a\x0b\x05q\xf7\xfd\xc3\x16q\xa8\
+\x9aV\x90\x0c\x1e\xe2\x82\x15\xb0\xa12{\xeeZ\x99\xf8\
+\xb1\xdc\x7f\x9b\x1b\x85u\xeb\x02\x10D\x0b\xe4\x7f2P\
+R\xe9\xe6/hW\x9c7\x8bD\xd6:{\xd3\xcc\xb8\
+\x18\x8e\x08\xeb\xb4?\x9cC):Uc\xd0\xb2r\x88\
+b\x8c\x22\xb9\xd9?\xc5\xe7rJD#v\xde\xb3[\
+w(\xb7\xee\xbb\x00]\xab\x8f\x8aj\x84\xbb\x0f\xee\xc6\
+\x9cf\xe0m\x8a\xcc\xb4\x86f\xb1\xde\xa7N\x9f\xee\xa9\
+\xd3u\xef\x1f\xd6\x01\x9e\xe6\xc4ge\xb5Df3\xd0\
+\x1c\x0f\x0c[\x98w\xad\xb0\xf0\xd3\xbc\xae8\x17\xee<\
+\x03\x22\xa5\x01\xa0\x02\x95\xfevJ\xdc'k\x15\xf0\xa6\
+\x09Q\xadZ\xa6c\xe8\x89\x0cX\xe7\xb7\xba\xc4?\xc5\
++\xed\xa7j\x19#\x12\xe5yH\x88_\xb1}yT\
+\xe8*\xe1\xce\xeb\xaa\xf3\x17\xc0\x99\xad\x0a\xc3#\xc3\xba\
+s-\xb4\x80\xf6\xeb\xa8\x99\xe9?'\xff;Y\xe7O\
+\xe3\xb4|U2O\xde\x96\x9a\x0eg-\x81\xfb\xf0\xf3\
+\xb0i}\x1f\x1b\x96\xc0\xff\x8e\xce\xef\x8a#b\xd5}\
+?\x13\x94\xd3;\x0aq\xf4\xe8\xdf\xab\x0b`\xd7\xf3\xa3\
+\xd7\xd4X\x94\x7f\xc0w\x16\x80.\xc4\x88[\x8f\xc5\x92\
+h\xba\x1e\xeb^\x80\xeb\xf7\xd6\xd3\x03$\x16+q\xe5\
+\xd2\x02\xc8\xf9\xdek\xf5\xedj=\xcd\xf5\xd6\x00\xc2\xb7\
+t\xf3\xc1%\x0e\xa8\xed\x9eW2\xa3\xc6k\x845\x0d\
+\x9b\xa75\x91=@\xe9\xc53\xb1\x13\x07\xa8d\x02T\
+Up\x89\xe9\xadDw\x87;\x87\xb5\x84s\x16A4\
+\x0d\xc6}w\x1fU\xcc\x13x\xa9\xb1w\x18\x80\xa6\xc2\
+\xf0\xeb\xa6\xb8\x5c7l\x89\x03\xea\xfd\xa8\xf6kq\x04\
+\x9cgBUbu\xe2C\x0c\xab<g.\xa4q!\
+.\x95\x00IxQ\xbd\x15`\xb2\x00U*\xfa\xe2[\
+\x22\x94\x9e\xbb\xf3\xd8\xb9)\xc1\xbc\xee,\x12\x08X\xaf\
+V!\x80\xcc\x8a\xaa\xee\x1c\xae\xf1\xc2*\xdc\xe23\x09\
+\xa0\xf8D!)5{\xaa\xb2\xff\xaeL\x90\x9f\x9c\xc0\
+\x83\xbfC\x13\xc4\xfd\x0f\xcd\x89\x87t\x22\x95ZIR\
+\x94ys\xeb\x04\xe2\xbf\x96\xda\x07\x98u\x12M\xe7\xbd\
+1\xc89\xf5\xa5\xf6\x99\xf3\xc6\xf9C\xeb\xcc~Up\
+\x03\x04\x98\x86D|\x1b\xd0@$\xdb\xd8\x5c\xaf\xa9\xe5\
+\x22\xd1\x1b\x0e\x0e[\x98\xb9D\xe7\xaaE\x12c\xc4\xba\
+\xe0\x7fW\xf1T\xc5Q\xce{\x05'\xf1\xb2\x04\x1b\x10\
+%>\xd4\xdaF$\xcf\xbe\xb6\xae\xb2\xd5\xa9\x98\xe1\x98\
+\xcf\xe2\x03\xad\x87)\xde\x8a!X\x1a<\x187\xee?\
+\xc0\x0c \xa0U\xda\xfas\x0eZ\xb7\x80\xcc5#F\
+\x9c\x8f\xf1\x8d\x89\x80bOdPAFa\xce\xfa\x97\
+'*\xd0i\x1d\x12\xffh\x9d\xcc\x96\xa3\xed\xd5\xc2\x96\
+\xf7\xaf\xa9H\x80>\xefO\x93J\xcb\xb3\xc2\x0b?l\
+]\xad\xa7\x1f\xad\xa7\x07\xa4\xc6\xc9\xae&Z\xb2W\x22\
+\xdb\xe7d \xf0\xb6\xa5B\xd0\xf0\xea\xc7f\x828\xfd\
+\xc1\xf1o&{}&\xfe?\xef\x10T7\xd0\xc6r\
+ \x08\x5c\xd7\xe3!\xfc\x9c\x7f\xef{\xef\xf7\xec\x80\x03\
+\xbd\xfaII\xab.g\xef\xb3\xfe\xf2\x01\x7f\xd2\xc8\xb8\
+K\xa2\x8d\x11\xb0V\xb9\xcc1|\xb5\xf00\x0f\xd6\xe3\
+-$\xac\xae\xe3\xff\x00\x04\xda\x7f\x7f\xda\xfd\xbb\x9f\xb3\
+1L1X\x03 \xee\x83\xe9\x01\x16\xb8\x85\xe8+\xd5\
+\x22\xeb\xe0[zG\xf4n\x1b\x931; \x94e\xd7\
+\xa3\x97\x05\x12(\xd05%\x80\x9a\xb1\xc4=\xb5\x00\xca\
+!\x9b\x0b\x9cs$\xab\x87]eC\x80\xc9\xe1\xad\xef\
+\xa3\x9e5T}s\x96\xcd]\xce\xc0\xbfD[8z\
+\x95\x00\xe3n\xee\xd5l\xf9y\xea\xe86\x98\x83M\xe0\
+\xa5e\x02\x85\xcd}\xb518&\x15\x0e\x7f\x17\xe5\x87\
+#\xc9\x9e\xee\xcdQ\xb3\xd8\xd2\xe6\xa0\xb0n\xee\xf0k\
+6\xafn\x15\xed\xbf\xd8\xf1\xdc\xd6+\xfa\xb0\xcd\xd1\x91\
+xVOOT4\xef\x9b\xcc\x89_\xedD\x19\xcd\xf5\
+5\xe5!{i\xb5N\xa8LB\x96\xc7\xdb\x8d\xbf1\
+N\x07\xe6\xf8\xdd\xf1{\xe3w\xdbA\xf7\xb5\xa8|\xc7\
+w\xed\xfb\x93\xb7'mOZ\xa8\xca\xbb\x1f\x1d\xd6\xa9\
+HK\x0c\xf2>n\xf7\x0c\xebD\x0a\xb3\xc2\x19\xc3\xcb\
+b|YQ\xf6\x04\x0a4\x09$()\xa64>5\
+\xac]\xc7d\xd3\xeb\xfeaK\x22\x80\x91RH'\xb1\
+B\x15*\x81\x22\x87\xa7\xd7\x1c\x92\xbd\xd6\xfe\xe0\xf8\xec\
+3\x01&Q\x1b\xaa\xbb\xaes\x08[\xc6)\x19\x87B\
+\xbd\xb5ZOPj\x05\xc6\x80*\xcf\xdb\xd8\xd3\xac\xe0\
+T+\x8a\x00E\xc5\x01\x05[O\xbd@U\x05!\x0f\
+\x96R\x17Gms\x9f\xb5\x18X\xa7\xf6\xb1\x037\x03\
+\x98\xeaA\xcf\x03\xa1\x00&\xcc\x0d\xfe\x0d\xd3\xc0\xef\xe5\
+\xfe+\xcd\x14\x80\x87\xd6\x13\xaa\xc2\xfc3\xd19\xe2\x5c\
+\xa8j\xa8\xdc**DR\xb3r[byk`4\
+\xf7M%\x14*o\xc4\xc80\xa3 \xdcy_\x1d\xc0\
+\x12\xc1\xe1\xeba\xd3:\xbboX\xd7RE\xf4\xd1>\
+\x13`[W*<\x12\xbd\x93f\x8a}\xa9\xd3KL\
+\xf9\xff\xdc/\xe5\x8f\xf6\xc9\xebJ\xe0Ae\x09 R\
+\x1a\x19z\xd6s\x8ex\xec\xce\xd8\x9f\xd1H\x14\xadD\
+\x05\xb4\x1asuD\xb3\x85\xba\xea|9q\x06\x8e\x8a\
+\xca\xfa\xe9)\xfc\xf9tW\x09P\xd1\x05 \x1b_%\
+1\xd2\xb2\xa3\xd2\xe7sK\x80\xf4\xa4g\xcb\xcb\xf0'\
+a\xdd8\xbe\xac\x98\xb4\xc0\xed\xa0\x04\x82\x8f\xcfD\xeb\
+\x81\x0b\xc3\xa2\x01to\xef\x12\xd7\x08\xd3\xfe.+\xed\
+\x0fN\xf1\xa6+,\xe7IM_\xa1\xf9\x92\xda\x04\xd5\
+\x9a@\xb4\xee\x9f6\xef\x08\xe0js\xee\xe6\xbc\xd0\xb6\
+) .\xd6\xdf\xa3:\xa6Y\x06\xd45\x0d$\xc6\xe1\
+\x0e\xddXO\xad?\xc4\xf2\x22@\xfbLGY\xcd\x04\
+\xd1y3<5lz\xbd\xe7d\xd398| l\
+\xd9\xc7\xc3\xcd\x86C\x87C\x1bp03E\xbe\x1f\xb6\
+\x00\x18\xe3\x13\xc3\x161d\x8c\x8b\xcdw&\xfbn\x06\
+\xb8\xd3\xba\xda\xf9\x98\xc9\x1e\xb50\x00\xaaR\xaa\xb5\x89\
+\x7f\x90x\xf0C\xc1\x88\xbau\xe7\x07\xc5W=%\xff\
+\x12\xdd\xab\xca=-\x18L\x19\xaf\x02I?o\xfd\xf3\
+\xb7\xceW\xdf\xfb\xff~\x9e\x7f\x16\xf7\xa8\xe8\xfb=\xff\
+\xaeP\xe4\xbc\x15/\x02\x08\x00\x99Z|\x22\xa1zc\
+\xb6\xf8|\xa2SC\xf7\xb9\x01`\x99\x18\x8c\xa7Lv\
+j;\x07\xef\xd1\x12\xa8d\x0a\x10Y\x9b\xce\xcd\xafn\
+\xbf\xdaM=\xc8\x8a\xb3\xfdY=\xbb\x18C\xd9\xcb\x5c\
+ZA\x18<\x18{\xce\x1d\x95C\xf7\xe5\xbf21\x11\
+\xf7\xd1r\xb9qj\xc5db\xafU\xa5\x12\xff\x04P\
+U\xd6\x8b!\xa5\x07\x19\x00\x8c\x89hj\xc0\x19\xcd\x16\
+\x0at~_\xe2\xb0\xd6\xb9\x04A\xfc#\xf1\xc3\x9cu\
+\xbe\xad\x0bnZ\x8fTt\xb3w\xde\xba\x22\xfa\xbb\xf9\
+\xeb\xb0N|.\x98J\xaf\xee\xa60\xa1\x86\x13\x9du\
+\x9f\xf9\xe5Lh\x87\xcb\x84u\x15k\xff_|\xe7\x0b\
+\x90\x9a\xadR\x05\x90\x12\xe1S\x19\x16\xff;w\xe4\x05\
+\x07fk\x9cV\x80\x17\x87uq\xc9\xd3R\x9bD\xde\
+c\x9c0fB\xfe{i\xc8h5#\xb2jl\x9c\
+\xbf\xab\x12\x1f\xe3\xd7\xff\xbc+P\xdc \xac\x9b\x82`\
+?\xf0w\xc1\xdc:\xa1\xd3P!\xfe\x99\xbf_\x8c\x00\
+\x09\xbc|\xc9~\x05\x9ch\x1d\xa1\x05\xa3\x80\x81a\xf4\
+\x85\xb0\xceO\x00\x10M!1\x86\x90:\xbeB\x08\xc6\
+\x868\xdb\xef+\xb4\x89\x83\xc4\xeb\xe2\x19\x05\x16\x80\x08\
+\x00\xc4\xe7\xf2\xf93\xae\xaas\x09\x93\xd2u\xe7\xf4\x8f\
+\x9a.\xe6~{\x8e\xf6\xe5\xba\xa5\xc1\xfd\xe17\x8d\x85\
+\xc6\xe8\xcb\xd6\x8cb\x0e\xa4?\xab\xcf\xbf\x16\x11T\xa8\
+\xa4\xd1\x84\x19\x9a\xcc\xda:\x7fii\x18\x07\x18\x05\xea\
+\x03:&\x05&\xb7\xa9[\xb4DL#\xd0\xb2o}\
+\xfb<\xfc)@j\xc5\xf0\xdc\xd5\xc4(NH\x87O\
+\x1c\xea\x96K\x0f\x97\x0f6\xfe\xc7d\x81H^|\xb2\
+\x8beB\xf4\xa5L\xf4\xc7n\x81\xad\x13s\x0e\x83\xe3\
+\xf3\xff\xdd\xe05\x00`c\xea!C\xd1\xc7,\x18\x1b\
+\xa9\xe8\x82\x94\xfa\x1e\x10\xd0\xcb\xef\xe7Q\xf9\xb3\x07\x1f\
+E\xdb8\xa452Nm\xbd\xb9\xa5\xcbu\xbd\xfb\x12\
+\x0f\xd7\xbb\x9eg\xeb\xc1c\x22\xf4\xdf\xff\xac\x13\x13t\
+\x1f\xd6\xaa\x9eC\x93'Z\x00\x8fo\xb5\xc9\xc4\xcbF\
+\x81H\xfbz\xc8L9\x1d.6\x5c|\xb8\xf8\xe2\xc0\
+K<\x888\x98\xf9\xa7\xc6\xe3\x11\x1f\xbbx\xf6\xf2\x13\
+\xb1\xcb9\x93\x95\x00\xa1zg\x02)\xc1+\xea\x12\x8a\
+\xb5\xb9\xbf*\x89\xc4\xfeT\xf2!r\x0e\x1c\x0b\xd2s\
+F\x85\xa5\x16+\x11\x13\x08\xeb\xd1E\x11G\xa9\xc9\x8d\
+P\xaa\xfe/\x08\xebz\x9b%<(\xa7y\x1f\xabB\
+C\x1c\xc5\x06\xd2\xeb\xb7\x1eW\x94\x01^\xf5\xf4?$\
+\xc7\xcb\xb8\x1e\x81\x09j\xdb\x9b\xe7i\x0e5\x86\x86\xaa\
+z\xf6\x12\xb7J\xec\xf7\x17F\xc3p\xa5\xc9\xae\xd8\x1d\
+d_Jd0\x02\x93\xffZz\xc9\xc7W\x855U\
+\xe1\x1f\x84\xaa\xb0\x9eC\xcc\x80\xf1\xef\xc2\xa6\xd7\x9f\x84\
+u\xe38\xffx\x0e<\xb7\xbf6\x8f\x81\x1a\x7f;\xac\
+\xa3\xbay~\x02\xa3\xd4\x1a\xd0{\x8c\xe9Q\x15d\x09\
+\x9a\x03*\xc7\xaaUO\xeb\xe1a\xcb\x98\xb7\xf1\xd2a\
+\x8b\x18R\x8d\xf5#\x16fL\x1e\x8a\xb6@\xd0z\x17\
+XYG\x10W\x01\xac@\xd7zZQ\xac\x8a\x9a\xc5\
+\xc1b\x08\xac\xe6r\x17\xd5>E\x03\xab\x82\x04(\xc9\
+\x83\xb6ZZ\x88\xf798M\x11\xa0\x9al\xfd$u\
+\xb8\x12\xd7\x14K\xac\xca)1\x9c\x1c3V\x9f\xdf\xc1\
+\xadW\xd4\xba\xe4'\x01yD\xfbP\xbf0f\xf2\x00\
+\xb1\xbf\x8b:H\xd4n\xa510\x5c%l\x9e\xa3\xbd\
+=\xa6\xab8\xab$9\xc8\x88\x19fB[*\xec*\
+\xf8\x7f\x18\xd6U~\x00\x01\x09,\x94F\x89\xca\x97\xe7\
+h\x9fI\x08\x00\xc8\x00\x18\x89N\xf6H\x96\xea\xb4\xe7\
+v\xe6,\x96S\xaa\xca\x02\x02\x09{\xb6\x12\x0do\x09\
+\xeb\x98D\xee\x8b\xf5\x08H\xdc{\xde\xd7\xa5\xc6\x9c\x15\
+\xaeR\x1d\xf6|\xf2\xfd\x8b\x12\xff\xc1\x14;\xfaj&\
+\x16\xc6eeBT\xa2XW\xcbu\x0d\x80\x05\xe8\xde\
+#\x01\xc6\xec\x1dn\xa7\xd4\xb5\xf3\x5c\xbey\x0b\x8cf\
+\x86\xce\xfey_\x00D\x02_\x958\x00H\xee\xef\xaa\
+\x14\xd2\xcc\x00d\x0a\x90\x054*T\xc6_\xaaD\xa8\
+\x88EK\xcf\xed\x17\xa0a\xf8\x9f\xb0\x8e1\x90\x81H\
++\x14\xbc\xaei L\xd6U\x90\x8c/t\x0eQ\xd1\
+\xbfBXw^%\xd5\xbe\x98\x12\xa6\xc9dk\xce\xf8\
+/\xe3\xe9\xe3\xbf\xb4ss>/\xa3\x81\xe2\xed\x09\xc0\
+}\xbek\xe1I@\xa0\x8d\x0d<j\x01\xbeM\xcf\x19\
+_;\xben|\xed\x12xMi\xcb\xfc|<\xdfL\
+\xe8\x86;\x86-\x0c\xae\xe1Ua\x9dh\xe73f\xa0\
+\xad\xb4w\x12x\xa8\xd6\x9b\x0c\x14\xc7\xbd\xc2\xba\xf1\x80\
+\xd9z`,#\xd5vSi\x8a\x91e\xffi\xf1R\
+\x11\xb4\x7f\xbe\xd1\xe4|\x97J\xd7\xaaw\xbd\xe2\x8c>\
+\xde\x18\x12\x90\xdf\xab\x9bBb\xda\x89}\xc7\x8f\xda\x97\
+zNs\xfci%\xf2\xe2\x19\x00R\xb4n\x98\xc3}\
+N\x17\xd7\xac\xd5\xcb\x01\x05\x02V\x80;\x7fo<u\
+\x02D\xc3\xb9a]\xa1!\xc5s\x89LK\xac\xc7\x9b\
+\x86--\x12\xc6\x8a\x1ak\xb9\xbdT\xd8\xf4\xba\x7f\xd8\
+\x02\x94i=\xc2\xd0\xaa^z\xda\x03\x12V\x22\xcb\xa6\
+\x18\xb9^\x95\x7f\x89\x84\x04{\xaf\xac\xdc\x8a[\x8c\xfd\
+2m\xe0\xa8\xed\x91\xdb#\x1b :\x03\xa5\x98\x8a\x00\
+R\xe7c\xb6\x9a\xd9\xcf]\x85\xfa\x82\x22h\x99\x88\xd5\
+\x1cx\xad\x85Z\x0f\xcc\xa3_\x8b\xd8y\xdey\x0e\x15\
+\xe5\x1a\xd5\x99\xfa\xba\x04P\xc2\xa8\xf7?\x01\x98\x9ag\
+N;h\xa5\xf5@\x04\xba(\xd5\xe9\xcf7\x1f\x0d\xeb\
+\x18\x0a\xcem\xf1\xad\x82\x14f\xc3\xba\xe2\xaaW\x1f\xa0\
+\x91\xfb\xa7\x80\x22\x00\xb8\x96\x11\x1a#\x09\xa0\xd7\x94\x1c\
+\x80\xa8\xca:\xff\xca\xdf\xf2\x8f\xc7\xe6t\xa73St\
+5\xa7\x17\xb5\xc4\xff\x19\x1dP\xa2\x22\x8eAF\x03\xc8\
+XZ-H\x0a\x7f\x80P\xad$w\x0d\x9b\xde\xe6\x99\
+a\xcb\xdf)-.\xcc\x01\xc0\xb4\xfb\x94\x85\x07\xe7[\
+i\x12\xa5\x9f(\x0d\xa9\x04\x88\x0a\xa0\xd3\xc2'\xbe\xa1\
+eb\xbd\xd1\xcc\x11\x17\x9bN\x05\xa0\xb1\x1f\xf8\x83\x8c\
+Gj\xdd\xd9\xe7\xd6i2\xa8\xaa\xe0\x80\xd1\xeb\xb9Z\
+?\x00J\x15\x7f~@\x81\x04\xf38\xcf\xe9P\xbej\
+\xc0\xae}K[\x82\x1f\x92\x8fY\xc7\x80;\xc0\x85\xb8\
+\x12s\xc0\xb9\x89\x91\xa0E\xd6\xfb\x8a\x8f1O\xacO\
+q\xabq\x8fZ3iC\x00\x9a\xc4y\xb4\x9b\xf8}\
+\x9f;\x0bW\xc5\x1c\x05\x808\x07\x00/\xe2F\xfe\x99\
+\xbf\xb5\x8f\xf6\x0f\x0b\x00\xc0\xbcaT\x8b\xa8H|4\
++0\xd3\x012\xbe1l\xfa~\xef\xc9zj\xbcy\
+\xe4\x16\x8c\x80\xcd\xc1\xe2\x81I\x98/\xea\xf5\x12\x17A\
+\xc1\xf7\xfd\x1a\xb1F\xe5_\x03\x0d\x12g\x09\xdf\xba\xa7\
+\xccF6~\x0f\xd5\xde\xb8>\x22{\x10o\x07\xdf\xff\
+5u`\x9d\xc0\xfa{Z\x1c\x00\x14\x80\x11\xf7\xc5\xbf\
+Sw?\xa7\xd5p.\x1c\xe8F\xfaz\xed\xee\xfe\xfa\
+\xff\x16\x92\x9eU\x017j\x9c\xdef=\xaa\xe6@\xfb\
+\xbaL\x22\x88\x12q\x88\xd4\x99\x89\xc0\x9d\x91\x07C\x06\
+\xf6\xe3#\xc2\x96\x9e\xc6\xe1\xf9a\xd3\xff?r>\xa8\
+\x86\xdf\x0c\xeb6p\x22\x90\xc6\xe8\xd5\xc1\xe2\xe0\xe4\x90\
+m8\xc0\x86\xcf\x07\xb9\x97\xc0C\x04mTT\x1f\xc8\
+\xab\xfb\xee\xb9\x99\x83~FXG\xc9\xb5\xde$\xd8(\
+\xb6\xd4\xe1\xa95\xe7AY\xdf\x13O\xcc\x04\xb2\x126\
+\x14\x9dt\xd86\xd2\xb4)\xe7\x8a\x91\x0a\x1cU\x7f\x14\
+T\x07\x9b^R\x80E:\x9e\xe1\xf6a\xdd\xbcN\xbd\
+\xadzz\xb37u{\xec\xf6\xb8\x18\x13\xe9\xb9\x8f\x0f\
+\x1a\x1f8>pq$\xdb\xc3f\xd1\x98\xddCXC\
+\x90\xdbX\xbe\xf1\xa1a\xd3\xeb\xbf\x86u\x07e\x06\x1a\
+\xe6\xbb\x17\x02\xf9\xc3\xb0\xd6\xa36St\xcf\x9e\x13\x01\
+\x15]*\xad\xdb\xcb\x85M\xbf\xff\xb9\xb0\xe9\xf5\x06a\
+]e-\xc5\xffZB\xf07KE\xb0*\xef\x02\x93\
+\x9e\x01\xb3o\xf7\xbc\x05\x86T\xc13P+\x07\xa8\x17\
+\xca\xfa\xe2\x08Q%9\xc4\x04\x92\xb6\xff\x99\xaa\xc1\xef\
+\xcb\x0a\x9a\x9e\xe7\x0c\x00J\x15\x18\x03\xe0q\xcd\x16\x84\
+_o\xa3\x80\x8b\xf8\x0b-\x07\x07\xf9\xda\x91;(%\
+:\xc4\x8a\xf4\x0a\x9b\xab\xeb\xe05N\x8c\x9f\x11XY\
+_* \x10j\x00\x1a\xc0A\x05X \xa9\x02\xe3@\
+7\x96.\x91\xedb\x0aA\xe0\xf9\x09\xf7\x81\xdf\xc9D\
+\x8e\x9av\xa9\xf6&E\xb5\x800\xcf\x13C)\x03\x91\
+b$\x18\xd7DT\x89H\x91\xbf'\xc0\x00Py\xee\
+*\xf8\x12\x12\x07bTR\xbf\xb3\xf4\x22\x12W\xdb\xfe\
+V\xd8\xe2v\x8c\xe91^\xad\xc4gU\xfeR\x8c\x07\
+\x85\x12\x03\xa7*\x11\x09\xf0T\xcfc2\x95\xb6\x0f\x0e\
+k~\xb1\xedc\x89u\x0c\xd5\x8d\x007\xd2\xccH4\
+=\xff\xd2\xd0\xb0~T\xd2^\x99\x22a'\xcd\x0c\xab\
+\x96\xc6\x1d\xda\xadK\x15\x0e\xbd\x93\xf1\xd7\x9f\xd5\x05\xb6\
+\x02HTAc\x0d\xcd\x15\xc7\xfc\x8a\xd5w\x9f.\xa0\
+\x15\xb0I Q(\x05\x0c\xd9\x8b\x0f\x10o\x14\xd2#\
+r\x1d\xddo\xfa\xdc\xbf\x16\xd6\xfc\xf1\xcc\xb4\xcb}L\
+c\x03\x004\xfcq\xd8\xc2\xf0i\xbd\xf9\xf7\xeez\x95\
+\x1f8=\xcd\x07v\xd4\xff+\x86M\xaf/\x08\xeb\xa8\
+\x92\xefo;xI\xc4R\x1c\xb01\x0a\xae\xd3\x89\xda\
+\x12\xadM?m\xecm\x89\xb7fB5\x9e\x15\xd6z\
+\x95\xef\xd4DPU\x00\xb3\xb2\xd9zV\xa7}<|\
+<\xac\x03.R\xc5\xb9\x80t\x22\xae\x19\xb8\x8d\x1f\x0f\
+[z8Kd0\x00\xb0\xd3\x97\x04wxaX2\
+\x8c\x0e\xec4\x7fTt\xf4\x02\x9b>\xa2\x82\x07\xd0\xa1\
+\x95\x13\x81\xff\xc9K\x8bFM\xdb\xc0 \x10\x08z\xfd\
+\xdf60q\xf9\x12\xe8\xa2\x9e\x0a\xd4\xf9W\x22Z\xfc\
+\x85\xf8\x0f\xb0\xc0\x7f\x9b\xc7N\x13&\x00\xb1\xaft\xad\
+\x0b\xe2\x99U+`\xadG~;\x81'\x09'\x15\xee\
+\x1aC\x86i\xf3\xba\xc9^\xbb\x9c?\xe3u\xc3\xa6\xd7\
+\xc3\xc6\xc3\xc7\xc3:\xcd\xaa\xff\x0ek\xfel\x8e\x0b\xf9\
+s\x0c>\x8c\xa8L\x18k\xff\xf0gZ\xb70$\x01\
+5\xfc\xad\x04\x5c\x22!\x0eN\x7f[b\x9e\xd9\x8a%\
+\x01\x9c\x92\x86\xd9\x9f\x13)t=\xce\x01\xe3\xe1hJ\
+\xf0\xfb\x18[}\x0b\xeb\xb9\x9d\xeazN#\xa8\xfd\x85\
+\xc1\x90\xe7TQ\x93{\x86\xebO\xbbu\x07\x18\xcaV\
+\x8a\x024\x9d\xcb\xe28c\x05M\x1b\xc8\xf7-\xc6\x81\
+\xe7)\xae\x01\xa8\xd2V\xc1TH\x7f^~\xc7T\x01\
+\xe7 f\x1a5t~X<\xa3u\xc2\x18\xb6\x1c\xf3\
+\xab\x85\xa1~\x0f\xc0\x8a\x19\xe5\xf3Z\x87\xfc\x9f\xbf\xeb\
+\xbc!\xd2F\xa5^\xe2\x88\xf9\xf1\x99\xe9\xa9\x7f\xa6k\
+\xd9U9\xce\x0a\x7f\xe5O\xfcK\x88\x89^\xb2\x03z\
+Vc\xfd\xea\xe0\xd2\x8b\xff\xc1\xb0N\x1c\xd3y\xad\xc0\
+\x05X7~Y|d]\xf8\xbc4\xbd\xb20Xb\
+\xed>\x8fB\x84D<[c\x8a\x81b\x1d\x88\x83\xc4\
+-\x09\xf0\xeb\xd9\xafs\x9c\x9fR\x90\xf3\xbc\xc4k\xf2\
+9\xf7\x19p\x86\xd9b\xdc\xa5\xa9\x1f\xa6[P\xe5\x07\
+\xb4\xba\x7f\x00-qK\x16\x16\xb7o\x0d[\xc6\xa3W\
+A\x88\xa6\x02\xa6\x08\x00\x95\x08\xa7\xf5n\xffz.\xf2\
+\x16S\xb2h\x22$\x90{\xa1\xbc'\xd7\x13\x06Z\xdd\
+\x7f-\x05\xee\x0b\x80\x03\xa0\x11\xad\xf9\xfbt\xad\xad\xc6\
+\x02\x03\x02\xb5(\xc9S\xadg\x0c\x0b~\xd5ud\xbc\
+\xb1\xabm\x8fwf\xc5\xf2\xa8\x5c\x18\x8fL\xb5\xed\xfd\
+\xf3\x0f\xbe\xa7C\x22\xa2N~\xd5\x8b\xa8\xdc\xaf\x01\x80\
+\xb5\xb8^,\xe7\x8bw\x95}\xbf'\x91\xeb_\xf7\x5c\
+\x01\x00\x97\xec\xa8\xf1\xfd\xef\xedy\x11\x89\xb1\xca\xbd^\
+\x19s;U\xf2\xfd\x1c\x84\x87\xea~,\xf3+f\xe2\
+}\xc5.!\xe7\xd0s\xac_\x89Z\xd1(\xb0Q\xdd\
+x\x0e\x7f=vPE\xd0A\xe9A\xe8\x0d\x168\xeb\
+\xc5\x8c\x03\xfc\xef\x165\xeb\xa6V\xfc\xed\xa5W\xae\x0e\
+\xc2\xd7%E\x1bUmEi\xd1\x0b[\x1a\x00TF\
+\xcd\x8b\xbfB\xd8ty\x7f\x12\xb6\x5c\xcfp\xcb\xb0\xa5\
+R\x5c\xf3rU\xd6T\x1cQ,\xff#l\xd9 \x95\
+\x90\xd8\xf8\x128\x95>\x08.G\x03\xf1EAs\xb0\
+DX\xfa\xb5\x0b\xf7\xa8\x95H\x19\x91&\x81+\x8a2\
+\x06\x01\x00\x88C\xe1(\xb37k\xf3\xde\xb0\x0e\xb0p\
+\xff\xcc\xd9\xfdLXGa\xa6\xfayn:r\x0e\xed\
+\xd8\xa4\xda\x9e\xd9 \x95\x05\xb1C\x89\x82d\xfbZQ\
+\xccP}\x05\x14D\xee\xc6?\x0b\x9b\xfe\xfd\x89a\x8b\
+\xc8\x5c13\x8e\x98{\xb9\xc6k\x85M\xdf\xff\xc1\xac\
+\xd1\xa1B\xb4\xfb\xc5a\x0d\xa9\x9c\xc7u\xfe\xcex\xb7\
+\xf1n-\xe1\x9aE\x85\x120*\xaa\x9a\xebE\xa1\xfb\
+\xc5f\xf7fw\xa3\xac\x8e\x9b@\xb0/\x1d\xd6\x8dA\
+\xfa\xfb\xb0e~\xeex\xe7\xb0n,\x92\x83\x80\xda.\
+je\xb6\x88\x94\x0a\xb5\x00\xc4\xfa\xe2O<w\x89O\
+Vp\xaa\xd7R\x82\xadu!+\xf6\xb4.*\xf0u\
+@\x9f\xd5\xe4\x9e\x96\xf7U!\x86\xd4;\x00\xac\x17\x8e\
+]e\xc7\xefY\x9f*\xe9\xc4\xff8\xdc5\xb0\xe9 \
+\xb5\x1f\x1c0D\x05s\xbcW\xa9\x8d\xa3\xfa\xfa=\xf7\
+E@\xa6\xa5\xe4\xac\xb0.`\xa42m\xdc\x8f\x8a\x00\
+&\x80\xf1L\xa1\x19\xf1{\x17\x16\x91*\xf1\xcd\x0c8\
+k\xbf\xba/\x02\xfb\xd7\x87uZ\x00z\xf6=_c\
+\xaf\xb2\xd2Z-A\x005\x00S\x8a\xa8\xd5}TI\
+\x02\xbc\xf2\x0b\x00!S-\x88g\xed\x98\x13%\xe2t\
+\xee\xef\xf8?a\x17\xae\xe0\x08\x0c\xf5\x80\x038Q\xe3\
+\xdc\xcf\x12\x9f\x14\x18\x98\x1e\x90=\xca\x9b/\x85u\xa2\
+K\xde\xff\x9e\xf3\x9ct\x14\xe1\xe1\xbc\xb0\x85\xfa\xb8\xbd\
+w\xaa\xfd\xd2\xdeH&\x0d\xe0r\xf3\x8d\xcd\xd7\xa3\xa7\
+\xbcz\xc5Oo\xa9\xc1\x22\x06\x9a\xe7FQi\x89\xbd\
+\x09\x04U\xb4\xb2E\xa3\x00\xbd\x08x\x9f\xda\x05\x92!\
+\x02yR\x07$iq\x12\xa8\x03\xd4\xbd_\x8a\xab\xd6\
+\xfaL\x11Z\x9a.\xc3\xb7\xc2: V\xc5\xfd\xee\xc9\
+Py\xfc\xbc\x1e\x86\xfb\x87u@\x0e\xe0!\x81b\x00\
+\x11\xca\xfd\xce/\x87-\x22\x98*\xb9\x95X\x18\xa3\x15\
+i\xea7\xbb\xca\x97\xfd\x99\xfb\xa6%J\xa7v\xda,\
+\xfcDR:K\x8c\x14 %\xe0\x8b\xf4\xf0\x8d\x1d\x80\
+\x97\xe3\xd6v^6l\x01\xb86\xef\x0f[Z\xe9\xca\
+\x8f\xe6\xb9\xb2\xfbua\xdd~\xcb\x8a\xf8\xf0\x84\xb0\xe9\
+\xf5z\x93\x1d\xdc\xb5\xa8\xd1\xf8\x91\x90{N\x02n\xfb\
+2\xa9\xd4\xc3]\xc3\xa6\xfb\xf3\x9e\xf1\xbd\xe3{;\xc0\
+G\x82E%\x9c?\x12\x8f\xa8\x9c\x09\x10%\xfc\x00x\
+\xf1\x8d\xc4^|\xd3\xb7<\xfe\xac{?\xfb\xd6\xefe\
+\xdc\xb7\xf9\xa5\xb0\x04:?\xd7%Vk-\x1e~T\
++U\x9eC\x00\x92\xe1\xf8\xb0.\xe0}t\xb3\xb9P\
+\x15\x80\xf8\xa1\x93\xdd\xac\x1b\x9b\x95\x0c\xba\xd2|\xc8)\
+-\xd3n\x9f5\x85n\x99\xadg/\xcc\xf3\xd0\x986\
+L\x08\xeb3\xc7\xaa\xc5\xac\x89V88q\xd6\x16\x99\
+\x92\xde\x19\xa0\xfcQ\x02!\xfb\xe7\xe7>/+o\x97\
+\xccx5\xe3\x1c\x9a&\xc4\x011)$\x005\x15\x86\
+\xe8\x9a\xc4L<\x12\xe3&O\xbb0\xe5\xb94G\x8c\
+E\xc3\xa4\x94 '`Tj\xee\x80\x15\xea\xfc\xe2\xea\
+\xb5\xfa;\x11\xb7,\xb4\x94\x18\xa9\xca11_\xd3\xa3\
+\xf4\xc0\x8b\x9bQ\xbf\xb5<\x10\x8d\xd6{\x9f\xfe\xbe4\
+\x01\xfc\x9ex \x01\xdb*\xec\x10y\xf4\xb9\xf2\xfc\xaf\
+\xcar\x02\xb5%r+a7G]\x5c\x88y\x9a-\
+\xac\xdb\xaf\x85u\xe3Z\xc5\x0b4 N\x0b\xbb\xb0\xc6\
+T1\x18\x9c\xd7\xdf\xcd\xb8A<i_\x19G\xf8\x9d\
+\xb0\x0e\x10\xe2W\x8c\xf7\x94\x00\xaf\xc6\xd5Z'\xd5R\
+\xa1\x87^\xeb\xa8|\xc5:\xf0|0\xc0\xf4\xfag\xbc\
+U\x00\x90\xef=\xbf\x15\x03\xb1\xa8\xed\x0a\x02\x18\x1c\xf9\
+\x1c%\xd4u~\x00\xa0M\x07[W\xe6M\xd1\xc1(\
+\xe1/\xbcj\x011\x8d\x0a\xc0\xa8\xe5\xc9\xe7\x04P\xda\
+\x9f\xfc\x15?\x05\x90\xc8\x96\xcd\xd2\xde\xa0y\x16\xd3\xee\
+.\xb6\xf8\xa9bn\xca\xe30\x17s\xdch\xb5\xc4\x00\
+\x96\xc43Z-\xc4\x8bk1S\xf9\x848\x06\xc0&\
+oM\x7fW\xe3'i]\xf8=\x0c0\xfba\xc5\xb4\
+\xaa\x96\x8c\x1cWY\x85\x01~U\x01U\xdc\xbab\xe8\
+\xef\xaay\x94\xa8\x8f\x02\xe9L0\xeb\xc0Z\xf7\xb2\x0b\
+p\xd7c\xf9|\xf0\xf5kO\xf9\xbfD\xa7\xb6\xcf\xf1\
+\xc4O]\xac\x9b\x02\xe0\x80\x90hs$(\xfan@\
+$\xe6\xfb$\xc2\x7f@\x97\xe0\xef\xd5\x06#\xcd\x89\xd6\
+\xe1\x171\x9eF\xa2/\xc0\xf6\xbd\xdf\x87\xe0\xa9\xd8\xc5\
+r\xd0\xcbr\xf5\xees\xf8|\xfd\xf8\xc0\x9d\x17\xf1\xb9\
+$\xfe\x0e\xccHW\x0f\xea\xc4\x98\xf2\xe7\xaa\xe2\xd0\x06\
+\x94g\xa2\xfc\xee%\x10\xdc\xfc\xc5\xfc\xbc\xa6p\xeb\xdb\
+\xc3\xb7[\xc03W\x98\x0f\x9e\x91\xd76\x0f\xf8C\x9d\
+*q&\xe6\x1c_U>~/Ep\xbe\x9a\xd4\xe5\
+S\xb7\xa7lOYD\x0dU\xce\x8a\xcaoA\xe6\x81\
+\x0b\xe9-J}\x8e\xb3(\xe6\x01\xb5\xed\xbb\xcd\xe28\
+\xd5\x1a\xa0\xd2'1\xd3#kL\x86\xde&\x81h\x5c\
+\xdd\x97;5\xda\x0f\xccT\xbf\x12u\x82 r \xd6\
+\x8d\x96\x0e\x15B\x01\xa7\xe7\xa2\x17\x8b\x88a^\x9f\xf9\
+\xb15\xef\x95C>\xff\x82=\x8eS\x1a\xd0\x1c\xa3^\
+Z\x01\xce\x8eGN\xc7\xda#\xbb\xe7M\xcc/{v\
+\xea \xf3\xff\xad\xf7L07g\x86M\xcf\xf7\xa5a\
+Kb\xa3\x129\xdco\x0a\xa0'\x87?\xfey\xd8\x82\
+x\x8e7\x0c[*N\xe3\x15\xc2\x96\x1e\xed\xf1\xc4\xf1\
+y\xe3\xf3\x9a\x08\xd2SC\x04\x09\x93C\x22\x15\x0d\x02\
+\xad\x87TKD\xf6\x9en>\x90\x81\xed\xd7r\xac\x9c\
+\xc4=\xa9\x91E\xa5\xcc\x9e\xed\xaa\xb4B\x9cU\xa0\xed\
+_cORu\xbez\xbdU\xaeW\xbdZE\xedt\
+\xc0\x00\x5c\xa8\xee\x1bOJC\xc0\xc1\xee\x80\xce\xcf_\
+\x80\x0c\x86\x89\x0a\xa2\xf1y\x02X\xd4L\xe3\xef\xa8\xef\
+\x03\x08 \xc2\xc4\xeb\xd6\xf3\x8f\xd7\x22J\x02x\xebR\
+\x0f\x9c\x80*\x13\xa5b\xcaX\xf7\x10`\xdfg@l\
+*K\x05\xea\x02\x01\x00\x9c\xfdytX\xd7\xea\xa1\xa5\
+!\xc5\xfc\x00(E\xf1\xcf\xcaV\xb5\xb4Hd\xecO\
+\x89/\x11:\x14\xd0\xac\xe4\x12\x07\xf4\xefZ\x0d\x8a\xda\
+G\xe4\x87\xca3\xbf\x81\xe2\xfb\x8c\xb0n\x0ch\x8a\xdc\
+\xd4\xf5\x19\xdb\x98*\xdc\xd5\xca\x85\x02x\xc7\xb9\x97\xce\
+\xe7\xe3\x1fJ\xb4\x10\xf3\x84\x7fC5\xd4k\xff\xb7a\
+-\x01\x9f[\x09~%\xa9\x92\x9f\xcb)\x09\xc7\xcf\xe3\
+\x94J,\x09\xc0\x92\x81\xc7p\xf9\xe1\x0a\xc3\x15\xba\x1e\
+\xc5\xd4t\xa8\x1e\xf2?\x0fk\xad;m\xeaN\x8dA\
+\xf4\xdc\x05|\xd6\x97\x0a~\x8e\xfb*&\x84u\xa4\xb2\
+\x00\xe9\xa7\x99aL\xa0u\x01\x88M\xbf[\xaa\xdd*\
+\x99\x02\xe9\xb5\xd6\x8c\x80\xcf\x98\xa8\x10\xab\xfb^\x07 \
+D\xa2\xfe\x8c\xae\xa5\x83\xa6\x8b\xb1\x89ZH\x92\xe9d\
+\x9c\xd5pV\xd8\x02`TOc\xb6\x0e\xf1\xe3\xc3\x8f\
+\xc2\xa6\xd7\x9da\xcb\xfb\x9a\xfa\xe0sl\x0e\xdf\xdc&\
+* Q\x9f\x0fU\xe9Fd\xfd\xb7\xc5\x8f\xd68\xcc\
+,\x18\x10]\xd5\xa3_\x22t_\xdc|i\x13S\x0e\
+\x8e\x19\x8e\x1e\x8ei\x95\xfdWDe_k\xccpx\
+\xd8\xf4\xfa\x17a\x1d\x83LO\xff\xb9a\x1d\x80\xf4\xe5\
+\xb0N\xc3\x01#-[\xc7\x86\x9bNv\xc8\xa2\xa53\
+\xfcx\xb2\x1fuTP\x01\xad\xfd\x9f\x09]%f\xc9\
+T)F\x0dq\xcf/\xcf\xc0TK\x14\xdf\xdcQ\x8c\
+\x89\x95\xf2\xa3Z\x9f\x00\x024]$JZF\xd6\xd3\
+p\xf4\x22\xaf\xb5\xfb\x03\xac:\x00\x00 \x00IDA\
+T\x91\x14<$\xf2\x02M~U\xa2*\x80\x17\xa8\xfb\
+\x9c\x12!\xc0VVr\x8dM+`3\x81\x91\xed%\
+'\x9b\x9e\xe7x\xcb\xb0\xd6\x1a\xf7\xfd\xf1\x07\xd3\xeb-\
+\xa6\xef#\xc0\xdfl\x87\xed\xa6\xeb\xa1O\x00\xc59]\
+\xe3\xd8h\xc4\xa8\x94\x02\x1e\xb2\x85\xa9\xb4U~+E\
+\xe2\x12\x00\xafD\xfcV\x19\x1f;\xcf\x13\x90B\xd9\xae\
+\x164\x8cK\x9a\x06z\x9c\x15\x14\x12\x90/\xe6!\xcd\
+\xa5\xcb\x86u\xf7W\x5c\x85\xe2\xab \x92\x89\x7f\x89\xb4\
+\x11;]\xab\x99;\xa0\xc5\x9d\xeb1\x8e\xe2\xd3\x04\xb2\
+K+\xc4\xf8o\xd3b$\xd2~\xffi\xcd\x96\x96&\
+\xadR\xae[\xc2\x9b\x09}\xb5\x04a\xa4\xad\xd7\x03\xc6\
+\x82\xeb\x06\x0c\xd3B\x90\xb7\xb8\x7f\x181\xe2J\xfe\x0b\
+@M\xac8\x19D\x0a_\x00\xd4\xd2:J-\xaa\x9a\
+rC,\x99\x88cj\x1bL\xf7n\x8e\x130KU\
+v\x8d\x933\x8eM\xfc\xe2\xf9'pZ\xad\x7f\xeb1\
+\x83\x0aYy\x0e\x14cA\xe1\xc5\xf9 \xae \x1a\xed\
+\xb9ek@\x9d\xf7\x09Xno\x1c\xd6\xdd/\xe7&\
+\xc0\xc6\xdf\x05X\xe4>\xa8\xfb\xa6\xc2.\xbeQ\x81\x97\
+x\xaaLg\xe5\x1dC\xa6\x0a\x02\xce7\xd7\xed\xd5\xf5\
+db\x0e\x00-\xed\x01\x096`'\x99G%*(\
+\x0f\x94\x87\xf2/\xd67\xa6L\x8a\x1a\x97Xq\x8a \
+\x16\x80\x9c\x80C=?\x09\xb4W\xfb\xdb}s\xbf\xb4\
+\xb0\xf2\x8b\xf2\x03\xd3\x12\xf4\xe6\xcb\x97\xe5\x9b\xf6\xa5\xf3\
+\x1b\xd3\x81\x96\x83\xb8\x15\x93#\x81\xccz\xbe\x9e\x13\xbf\
+\xea\xfa\xec7\xdf\x03\x1c\xd6b\xf4\xf9{\xbb\x0a\x81\x80\
+\x88\xe7x\x846W\xf0\xc0\xae\x17\x0ee=>\xc6\xf7\
+W\x09\xd7e\xb2b\xb0O\x97x;0$\xden\xa4\
+\x8a>\xb1?\x89%\xa6\x8017~\x1f\x22(!\x8f\
+\x05w\xbd\x8e\xfa\x0d\xb1A\xc1\xe2@P\xfd\xdd\xf8\xf5\
+x\x19\x8e\x0b\xd5\x1eUEE\x9eJ.U\x5c-\x01\
+*#>O\x7f\x10\xfe\xa2\xd3\x1e &\x88\xb9`a\
+&\x05\xaa*>!\xb6\xf6\xe7y\xb0\xfdn'\xee\xa2\
+\x12\xff\x1ba\x19x}\xa9%\xc2\xb3\x83\xd3sO\xac\
+\xe9EI!\xbc\xc4L)\x1an\x1b\xd6\xc6a\xb5\x0d\
+3\xfcGX\x17\xb8\xdch\x0ep\x89\xc6\xa8\xf8\x0f7\
+\x0a[\x0e\xc0\x1a\xda@\xb4\x82#\xb3\x90!t\x9e\x93\
+\xfb\x221\x22\xa2\x95*\xe5\x95\x00\xd90\x16\xb0\x1e\xa4\
+\xac\xa8\x95\xe3\xd3\x93m\x9d\x18\xf7\x22\xf0Pq\x854\
+\xba`L\x02\x951b-\xa9\x1a_\x80\xc4\x8b\xb2\xe7\
+\xf5=y0'e\xac\x90\xb5\xec\xf1\xabJ\xe1\x9e3\
+\xa3\xa4\xa6\x19P\x91\x06`\x1c\xb6\xf9\xb5\x960Bn\
+\xef\x17\x96\x01\xd7\xcd\x16\x0d\x85\xaa<\xc7v\x0c\xad\x85\
+[\x84u\xbd\xdd\x81<N\xebq\xe7\xdd&\x8b\xca\xce\
+\x87\xc2:\xf5m\x89\x9c\x03\x00\x95<\xafc<.\xac\
+\xa34\xff\xee\x5c\x99\xdc\x1e\x10\xd6\x89\x0b\xeaUNd\
+Z\xa5\xa4z\xb9s\x1aDi\x18\x18\xb3\x88RE\xa5\
+?\xd5L\x1b\x15\xf3u\x1dE\xcc\xcf9x\x0f\x09\xeb\
+\x12q\xd39\xcc\xab\xe5`\x05\x9e\x98#\xf6;\xc7\xcb\
+\xff\x00\x16h\x05XO\x12\xfeT\xbf\xadJ`&\x0a\
+\xdb\x87\x86u\x07\x90\xaf\xf5xH\xfbVo5Q5\
+\x01\x93\xf5\xbe>P\xed\x0b\xdf\xbb\x1e\x88\xae\xeb%c\
+\xa2\x02i\xaa\x81\xbfO\x8bC\x02\xfe\x86\xb0\x0e\xf8\xe0\
+\xd0\xf93\xe2v\x02j\xef\xcb5\xe5\xf8\x1cc\xe4J\
+\xbc\x0e\x00%!\xd4+\xea\xeff\xe5\xb7T\xfa\xb3\xc2\
+\xb2}xXG-D\x05M\x0d\x8cj\x0dHm\x91\
+J\xbcs\x9dT\xa2\x91\x9a%\x9bGl\x8eiZ%\
+\x99\x80\xed8\xbeY%\xb6*\xb6\xe37\xc2\xba\x844\
+\x01\x8f\x9a\xde\x80\xba\x9b\xcc\x05T\xcb\xe9_g\xa6U\
+j\x80\x14\xe0(\xc1\xde/+L'd\x80ydV\
+\xa8\xceOj\xf7\x83\xe6^\xd5\xfa\xdc\xef\x9d+\xb1(\
+\xa6\xd5\xe3\x99\x89\x9eJb%\x9e*\x0d\xfe\xde\xfd\x93\
+\xb9u\xdb)L\xbdm\xd7\xeb\xab\x12\xa2\x97\xbf\xa3|\
+\xc6\xd4\x838\x8f\xa3\xb7\xba\xc6\x1d\xa6\xf8lM\xcb\xe0\
+\x173\xb0)\xad\x88li\xd1[Zc\xb6\x04\xa2\xfc\
+*\xe0\x93Hn\xc0\x14O\xca\xa9\x0a'.\x00uU\
+\xe2%\x0c/\x0d[\xeew\x89\x97\xdeaN\xb0\x86'\
+\xce-\x00%R\x99\x22\x80\x98=\x98\x15\xd6\x0f\xa0\xc8\
+\xfa\x93`\xebe\x9dN\xe9\x03\xda9\x9d\x15\xb7\xd6\xca\
+u\xear\xee\x0c\xf7\x0a\xeb\xa6\xa8\xa4\xda\xb8\xc0|\xfb\
+\xc6\xed\x9b\x8215<gx\xf6\x10\xeb\xe6\xc9\x9b\xa7\
+l\xa6\xc4i8v\xb2i\x1f\x0e\xf7\x08\x9b\xfc\xf0\xcb\
+\xc2\xa6\xef/>k\xee\x0c/\x09\xeb\x80\x11\xd3f\xb2\
+W\x1d\x00Q\xea\xe6\xf9|\xab\xc5,\xc76n\x1e0\
+\x05\xbc\x0f\x98\xdeo\x08\xb5\xaa.10\x87:\xcf\xb5\
+\x8a\x0b\x8e\x9c\xb5\x7f*p\xcd\xf8\xaa\xce3\x80M2\
+\xc9L\xfb(\xea\xb8xn-\x9a,\x90V)\xb2~\
+$f\xe2\x1e\xaf\xe2:\xf1\x94/\x00\x80\xc4_\xe0\x89\
+a\x94\xad\x18EM\xf7w\xc5]\xc6\xa2a6|b\
+\xb2\x8f'c(\x98;\x0f\x0c\xcb\xf3\xe9\x0f\xa6?\xf3\
+\xa8\xb0\xa5\xf7x{\xab\xd4\x9a\xc9\xf1\xac\x95\xf8H\x04\
+_\x16\xd6ZM\xc2\x16?\xb1w&(\xd7(F\xdf\
+\x1c\xa7]:\x19\x9f*\xcf\xa9\x85S\x89\xb9\xf1^Y\
+\x81\xd6\x1a\x85!\xb9=.\xac\xf5N7`E\xeb[\
+\xf5J\x13\x8d\xcb\xf5R\x95\xe7<w\xa7\xb4k\x06N\
+\xaf\x92\xe7\xe1\x152N\xfd\x97\x9cB\xa2\xf0\xa2\xf5\xe9\
+Na\xdd\xf9\xea|\x04\x08fbV\xf1\xb2\xe7\xb8\xea\
+\x196N\xb7\xa6\x22\x88K\xb4\x00\xe6\xf3\xdb\x5c3\xac\
+\x03\x8a\x13\xf8+?C\xf3\xc0\xe7\xc2\x5cA\xd1&b\
+\xa8b\x8cj\xaeB\xadbN\xfb)\x99g\xf2\x95J\
+\x18s\xfcj1=\x14*\x01c\xcf\x0c\x9b\xd6\xcb\x09\
+a]\x0b\x9es\x00\x13\xc0\x98d\x00\xbc\x84[|+\
+\xbe<'\xe3\x0c\xcc\x11S\x89\x9e\x91=\xf7\x80\x02\xf1\
+!\xd5\xfc,0l\x1f\x12\xd6\xc5G/\x0b\x9b^o\
+\x1e\xd61$\xf8\x01\x09\x22\x8d\x1b\x05\x08\xd7\x99\xc0s\
+\xb5\x90z\x9e\xf2(\xad\xb3\x00E\x00\xccz^\xbd\x9e\
+y\xe7\x8f\xfb\x9e\xfe4\xca\x84Q(\xac<\x8b(\xb9\
+\xa9\x0b\xfc\x0c \xcd:\x13\x9f\xf3W9]\xa7\xe2D\
+\xc0v\x9f\xe7\x1d\xdc\x01\x08\xe20\xeb\x15\xc0\x08\xc0\xd5\
+j\xa1\xa5E|\x05X\x11\xcf\x03\xfa\x13\x18\x17\x9f\x03\
+\xccL-\xa8\x82\x8b\xf1\x97\xf2\x13\xf1!?\xe9>\x89\
+\xff\xb2\x00S\xcf%[\x81\x8b\xa9\xa00I\x03B|\
+\x05\x98\xd7\x9a\x91\xc0?\xa6o\x89\xf7avh\xf9\xd3\
+\x9ahz\x8a\xf8\x92\x9f\xf7w\xf9\xf3|\xc5x\xd9\xd5\
+.\xffjK\x02l\xfe`Q\x8f\x04\x96\x0e\x0aH\x93\
+\x8d\xd0\xab\xca\xee\x9b\x0f\xe4\xb2\x9d\xda}\x7fP\xec\xee\
+\x00\x02\x15t\x07\x88\x84\xd0\x81@\x9c\x86\xc8S\xa4\xe3\
+\xe6\x9a^%\x91\x9d\xebv\x94\x7f\x14\xfeH\xf7\xae\xd9\
+%\xf6\x16\x96\x80\xdat\x00\xd7\xaf\x82\xec\xefP_\xbc\
+F;\x0a\x96\x8ac\xfc\xf7\x1a\x9df@\x10i\xa9\xda\
+\xf6\xd3\x00$\x06\xeb\x83\xcd\xd8\x22\xaa\xc6!\xaetv\
+\xe7\xf8\xee\xd8jX\xf3\x9c\xedc\xb3\x22\xfa\x17\xcbx\
+\xc5\xe1\xe93\xf5M\x85}\x0a\x9f\xe6\x8a\xcbUR\xec\
++\xdfw\xb8X\xd8\xf4z\xce\xf0\xc3!z\xcb_7\
+\xfc\xcd\xf07K\xcf\xe2\xf0[\xc3\x1d\x86)\xf0\x1a\xbe\
+\x10\xb6\x8c1\xda\xf9\xba\xb0\xae\xf2r\x83\xb0\xe9\xf5\xc6\
+a]O\xa29\x9a\xd9\x83^\xe2\x1a\x10z\x88\x97\xb1\
+#?\x09\xebz\xae\xdc\x1f\x15\x07\x95\x12b&\x10U\
+\x15-\x01iV,8\xfc\xa2\xe6K\xd8!\x93ku\
+b\x8eBB$\xf0E\x8d=:+\xf8\x99X\x97Z\
+\xab\x0a+G\xba\x8c\xd7\xb8\xa0\x9a**\xde\xf1)F\
+t\xb7\xb0\xee\x00\x0e\xc9\x90@\xf2Ck\xe3\xad\xdd\x01\
+\x9bb`\x95\x10=y\xae\x10\xc5\x90\xca\x18SYS\
+\x15\xb2BT\xd4g\x89\xf9);Nm\xd7\xf9\xabY\
+\xf9\xb6\xf1\x93\xaa\xac\x07i|W\xd8\x22\xb2S\xbd\xfb\
+Y\xc9\xd4\xc3\xef\xe0+\x00\x90\x88\x89\x1e\xe7\x1c\xbfR\
+\xc0\x87\xf1L?\x0e\xeb\xc6\xb5%\xa3\xa2\x90o\x09\x8c\
+\xebO\x00\x82\x83\xae\xb1\x84z\xbf\x05\x8c\xfc\x8d\xc4R\
+ \xe39`\xea\x00\xf8\xf8\x11\x15\x00=R(\xb0\xe6\
+\xbe\xe6\xc1\xe9\xfel\x1f\x16\xd6\x01\x0e\x90U\xeb\xd4\xdf\
+\xf7{\xc6\xf8Qo\x05\x84\x09\x10\x040T\x8d\x05\xcc\
+\xfc\x0d\xa4:\x0f\xc4\xaa\xd0\xe6\xba\xdb\xbc6\xac\xeb\x91\
+\x14\x18J\x00Q\xe5%hYa\x82\x5c\x97\x0a4\x91\
+1\x00\x80\x8a\xb5\xb16\xe6\x14\x9bn\xa0'\xce\xdf\x01\
+\x0c\x1bc\xc4?\xa6($\x0a\xee\xb8;\xacS36\
+\x1eJ%@\xe2\xff\xbc\xb0\xa5%\xa4(\x95\x12\x05\x95\
+-\xc0\xceA3C\xca\xe7\x91\x00\x15p\x81R\x9b\xa2\
+]D'w\xde!\xac\xf37\xd4\xaf\x93\xba:\xdcw\
+\x9e\x07\xbfy[\xcey\xa7YB\x8b\xe2\x1b\xf9\xfc\xb5\
+:<1\xc7\x02jm\xd2RvJ\xae\xd7\xcb\xe5s\
+\xff\xab\xb9E\xa8\xc4\x08\x9f1\xdd\xa7g,Z\x07\xdb\
+\x07o\x1f\x14\x1a\x01\x9b\xe3g\xd5\xfcR\x1d\xffh\x06\
+\xc6q^\x9d\xb9TZ\xaa\x12\x88\x91g=E\x9a~\
+\xfc\xbc>\x1bp\xac5I\xa0&\xa1!\x92(at\
+_\x05\xbeD\xbePH\x05\x9cD\x8ar\x0aH\xcd1\
+wN\x06\x5c\xf0\x9cd\x06\xde\xaa\xa3\x08\x9b\xb6\x90=\
+\xcb*V\x18G\x054e\xc0;\xbc2l\x01\xc2\xc3\
+\xeb\xb5\xf1\xbc\xe9\x9f=\x97\xba\xdf*R\x98\x03\xc6\x0d\
+&\x15uz\x9as+Z~\xfe\xe16a\x0bc\xa0\
+Z\xe2T\xb2\xacs\xbd\xbew\x9d\xae\xee\xae\x9d*{\
+\xc0\xd0\xef\xe9\x02\xc6/\x84-\x89\x02\x15\xea\xd2\xc2!\
+\x0a\xb63\xac\x9b\x1b\x9d*\xdeD\x0ck\x1ex&,\
+\x95\x80\x00\x90\xf4tJ|\xfe6[\x9d\xb2W\x1dS\
+\xa2\xa8\xca\xfcM^_\x89n\xe9@D\xb1\x06\xec\xf1\
+\xaf\xe2\x13\xf1\x9ds\x12UU\xc5\x8e\xbfZ\x8b\xcc\xad\
+{\xf8\xc5yz\xb8%`96n=6\xb0\xfc\x8d\
+\xdf\x03\xd4\x13\xeb<zx\xf8\xf0\xf0\x96p>\xae\x05\
+\xc6\x09\xa8\xb5\x96\xb5\xe8\xe5\x7fkX\xc7DK\x86\xc9\
+v\xd7v\x8f&2{\xf9\xb0\x8e\xc9\xe7<\xc8\xef\xeb\
+\xdc\xb5\x7f\x9c/\x18\x81\x00o*\xe2\xae\x1b\xc0\xe3}\
+\xb3b\xbc\xe3y\xb3_*?GL\xee\x88\xac|\x03\
+F\xb22\xa9u\xb2\xce/\x09F\xb6F\x12\xf7*f\
+\xa1\x0a\xfc\xfd3\xc1s_\xfd\xbb\x04\x14\xb0\x8a\xdaO\
+\xbbFK\x9d\xe7\xa9\xb2N\xdc3[\x0fjz\x06\xff\
+I\xd4N>`*K&\xd4Z#$z%\x06\xf7\
+\xed\xb0E4\xad>\xbfVH\xd7e\xfd8oP\xd1\
+\xb5\xd6\xa4\xb6KQ\xb2\xf3\xbe+\xc8\xd4X\xbf;$\
+\x03L+\xadV\xa4L\x0c\x0b\x08M\xb1\xeb\x02\x1e\xc4\
+\x8f\x80s\xe7!\x91\xb7l\x01\xab\x96\x10\xeb8\xaf\xaf\
+46\xc4\xb3\xf7\xcf\x84\x12#\xf2\x8aa\x9d(\xae\xc4\
+YK\x06F\xa6y\xf0)N[-\x8cZ\xaf\xf9\x09\
+Z0\xc9h\xa9\x84]\x8b\x9cJ:\x8d$\xe2\x87\x12\
+\x7f\x80\x86D\xd4>%*\xe8\xbc\xf6\xf7\xf9\x0b\xcc!\
+\xad\x8b\x0a-\x0a\xb0\x12L\xd4x\x80\x13\x06\x81\xf3\xfe\
+\xac,\xccY/Y`+\x80d=\x0dD^%\x1e\
+\xf7\xef\x80\x85\xb5\xf8\xa8\x82\x82\xe9\x04>\x87\xdf\x97g\
+\xdaw\xe2(\x8c(\x05&\xf1\x80\x82%\xff\x81\x81 \
+\x9e\xcc\xd6\xbc*\x08`\xa2\xb8Ny\x00@B!\xc8\
+>L\xa6m1(\xc57\x9e{2[\xabp\x00\xf8\
+\xa5\xf1A\x94Q\x8b\x84\xdf\x03\xf8\xc8O\xc4\xeb\xff\x19\
+\xb6\xe4Y\xbb\xda\x07\xbaZ\xd7\xb3o\x0c\x19\x0a\x8cq\
+lk\x11\xbf\xbe\xa7\xbf\x1f\xfb\x22AF)\xec+\xe6\
+\xfd\xbc{\x0f\x1a\x95Q\x22\x1f\xb7\xfb\xa0n\xc3\x87\x03\
+\xbc\x5c^\xd7\xfe\x19\xa8_\xb5K\xcc\x1d\x1c\x10\x22\x00\
+\x80^\xd9\xa0\xc2\xef\xd3\xf5zDE\xea\x9ct|?\
+\x9d\x03\x95v\xdd\xd32\xde\xa0 ]=_\xaf\xda\xbd\
+_t\xb6\xfcJ\xc7\x04pP\x12\x9d\xb0\x10%\xa0\x09\
+H\xb4\xb9\xd2O\xcc\x80h\xef\xa57\x13\xd5\xbc\xc6\xd9\
+E/\xec%\x92:zJS/\x9e{d_0S\
+\xf7\xf4\xaa\x0fo\x0dk\x0ee\xa6&]6\x11\xb0D\
+\xa6#\xdd\x8f\x84\x7fxZ\xd8\x14\x10\x7f0\xac\x89\x0f\
+5\xca\x96\x84\x9e\x9a\xee\xf0\xb0\xb0\xe9\xf5\xeea\xd3\xeb\
+\xeb\xc3\xa6\xd7/\x0d_\x1e\xbe\xd4\x18\x08\xb7\x0b\x06B\
+U@\xa22rl\xe7XQN\xf5\x0cQ9G\xdd\
+\xd5:\xe2\xfe\xb8oz49\x92\xffk|\xd1\xba\xc5\
+DB\xb6rtu\xa0\xaczX\x8b*\xec\xa0\xb6\x11\
+o\x9a\x8e\x0c2)\x81\xe4\xc0\xbc\x1f*\x99\x8d\xf5\xb9\
+D\x06\xf5\xd2a\x1aH\x1co:\x03\x1f\x0dX8\xba\
+\x9b\x02\xa1g\xc9\xfbf`VsM\xf3~\x8c\xc7\x8c\
+\x0f\x1f\x8f\xc9\xf7\xfft2'\x1e\xd7\xf5\x06E\x9d)\
+*:{\xc4<\x8e6.\xe8\xa0\xedA\x1d\x85>\x03\
+\xb9:\xb0!\x84\xe6\x98\x12eC\xcd\xf7\xb90\x128\
+\xf8< \x8a\xf9\xe1\xc0\xcb@\xab\x10\xcc\xab\x86u\x07\
+>G\x93\x95\xfeJ\x5c\xf2\xe0\xab\xcfk\x0e\xb3\xf9\xd5\
+>_>\x87\x8d\xca\x8a\xe7%\xb1\xe7OT\xac\x89\xce\
+\xa4:\x7f\x01}\xbe\xf40\xa3\xda\xa3\x9e\x09\xf8\x00M\
+\xd4[\xd3\xb1\xd7\xd8\xb9\x5cOU\xc9\x90\xa8\xd2\x1e\x00\
+\x04\xb8\x8f\xeb\xebL\xe6\x0b\x80\xae\xd6\xafu.A5\
+\xa5#+\xc5\x15\xb0\x9c\x13\xd6\x05l\x1c;\xca\xa5\xfd\
+\xa7\xd5$\xc7\x1c\x16\x82\x9c\x01r\xa4\xa5-1M\xb1\
+\xd0\x02\xea\x5cw\xbe\x1f$\xdaAQSE\x04\xf6z\
+tS#\x00\xf0\xb7\xdd/\xac\xeb]E\xe1\x03LY\
+\x17\xc9\xf4\xd8\xfd\x92\xb0\xc9\xaf<1\xac\x0btU\x8a\
+\x04Hy\x80WK\x82)\x04*PZ\x1d2@\xa7\
+:\xcdOU\x05\xd0\x14\x87\x8f\xe4\xc1\xed\xbcR9&\
+\x9e\xf4\xf9\xac\x18\xe4\xdc\xe8\xed\xe7\x12\xa1\xa7r/ \
+\xf0\xf9?6\x8b{6 \xe7\x98\xae\x85Ae<\xa9\
+\xac\x02\xd3\xf15\xe3I\xe3k\x96\x8at\xb5&\xe4\x98\
+\xca)l\x9f\xa7\x01dO{\xb5\xe0\xa1\xc4Z\x7f\x12\
+\xbfC\xc2:\x0a\xaa\x0a\x8c@G/\xba}@\x05Z\
+\xc0\xeb}\xbe\x1b\xd6\x8d7\x8b\xc0\xec\xb7\x93\x81\xf1\xf4\
+\xec\x05\xfd\x8f%\x10i\xa2V\xcfY\x00\xde\xf1\xe0\xb0\
+\xa5\x82\xbb\xf3ca\xd3\xebC\xc2\x16\x00\xa24\x0f\x92\
+\xaa\xbc\xf9dX\xb7?\xb4\x1e%0]\x80\xd3\xbea\
+\xdd\xfa3\xc5\x01U\xfaR\x9b\xbd6{-\xad\x16\xad\
+W\xf3\x07K|1^)\xac\x03F|\xee\x04\xdc\x8c\
+\xdd\x1b~\x106\xbd^;\xac\xfb\xf9\x04\x0c\x00\x14\xc3\
+\x89a\x0b\x03`8 \xacK\xd4Q\x8c\xd3\xcfn\x9e\
+=\xad\x87g/\x15\xd0\xaa\xf8|%{\x85\xff&\x13\
+7\xad#D\xd7\x0e\x9a\xfd{\x05\x88)~7\xc5\x1c\
+?hq\xc7\x15\xb3u\x91vP\x8a<\xd6\x18E\x9a\
+2\x18f\xd6/\x84\x00\xa0\x0a r>\xa1\xa6ZG\
+\x128LI\xfe-\x99yz\x93\xab\xd5\x0e\xb3\x0b\xd0\
+\x1d*\xe4\x0f\xec\x02b\xfb\x0fC\xf2V\x8dL\xbfc\
+\xf3\xcb\x9b\xc6pi\x09\xec\xbd\xdb\xff\x9f\xc7\xca\xbd`\
+\xfb\xc2\xedtN\x8c\xaf\xcf1\xd4*\xee4=2\xee\
+\xd8\xee\xbf\xbdrhWm\x8e\x0fk=\xfb\x93-\x80\
+v1\xd8\xb2b7\xfeWXW\xb1\xce\xf5@\xf4\xb2\
+\xc4#\x13\xa8\xad\xd6%\xad~\x01\x87M\xcfu<=\
+l\xfa;\xfb\x84\xb5\xf3\xbe\xf5BWo\xba\xd6,\x9a\
+C\x12\x0f\xf1\x22Q\xc0\x14\x8b\xab\xd6\x83\x8c\x0b\xb6\xb7\
+\x0dkb`\x8d\x91P\x14\x7f\xf1\xe3\x9b\xb2%a=\
+\x86m\xcd\x88\xcb\xcae\xb5d\xd1\x02 R\x9c\x05\x87\
+\x9a~`<\xa9q\xcf\x00\x81\x9c\xaeP\x89\x97\xb1l\
+\x09\xe8K\xfcJ\xc4\x10\x95\x9b\xff\xe2\xd7\x00\xd3y\xfe\
+V+[\xae\xcfj\x81\x92\xf0\xd1\x5c\xa1z\x0f\xa8\xcd\
+\xa9\x02\x05t(\xd0\xfcu\xb6Z]>\x0bUD\xf7\
+\x00\x9e\xc90\xc4\x08\xb4oJ\xe4O\xc2\xfe\xc7\xcd\x0a\
+h\xab\xd6\x9a\xf4c\xa5\xf1B\xf3F\x5c\xe8\xfe\x03 \
+Ss\xa9\xf6\x978\xcc\xf5\xe69\xb9\xb9DX\x17\xcf\
+\x00\xe0\x14\x12\xc4\xd1\x0b3\xf6\x82c\x0d1\x07\xc4\xd9\
+*\xf5\xfc\x0e\xad\x00\x85\x1a\xd7\xe9\x9c\xd0\xe3\x0f(s\
+]\xcew\xf1\xa4\xc4\x1f\x80\x83\xc2\xaer\x0fP!\xd6\
+\xf7\xc6Y\xa3j\xca\xbd\xe6x\xdf\xdfK&[\xdd?\
+\xcc#\x85\x19\x1aL\xc6\xd0\x9a\x8e`\x9d\x02@\x001\
+\x80\x11\x00\xcfZ$\xd2x\xc5\x5cOUx\xf1\xff\x9f\
+6\x8bg_HL\xddy\xe3>\x8aW\x007\x17\xcf\
+\xb8\xfc\x01a\x9d\xff\x94\xc7`\x0ax\xae\xa6C`D\
+\xdc9\xaccL\x9b\x82\xa6\xa5\xc1\xf9\xe2\x9c7\x8d\xcc\
+z\xc2\xbcP\xf9\xcfBL\xb5\x10\xc8g2\x1f\xda\xa5\
+\x22\xdf*sWn\x222\x93u\xbd\xa3\x90\x12\xe3\xf4\
+z\xb5\xfe\xbe\xc7\xddB,u\x81\x0cpU\xc82\xe0\
+.\x11\x88\xa4 4\xfc\xe9\xc7\x0be\xbeU\xd8\x0e\xce\
+\x0a\xdf\x01\x9d\xe3\xea\xd5\xf9\xbb\xf1\x13%\xaa\xe5\xfd#\
+q\xb8v\x87\xe4\xc4\xb2\xfc\xf5\xe5\xfa\x1b\x92wX\xa7\
+F\x1b\xb8\xcf\xbe\xb9\xc1\x0e\xe9Z\x19T\x18i\x0e\xec\
+\xdf\x06/-*\xfd\x116\x7fa5\xde\xa4ka(\
+\x046p\x963\x16\x80\xa3\x89\xb9=i\x19\xafT\x8e\
+\xf26\xf3\xc1ILk8$\xac!\xe1\x93-\x0ei\
+\x0a\xcf~\xba\xf9\xe9\xf4\xef\xb7\x98)\xfb\xb5\xd0\xa9\xf3\
+\x1a\x9f\x94\xbd\x8a\xc3wR+ \x0f\xbe\xe1\xd6a\xd3\
+e\x9e\x1a6}?\x86M\xff\xff\xdf\xc3\x16\xc0\xa0\xfe\
+\xfe7\xc3\x96\x80(:][\xaf\xab\xca\xae\xe7\x82z\
+\x88\x92\x9a\x15\xecJ\xc0\x13\xb9\xaa\xc4.)\xf9\xa5\xa2\
+\xcf\xa1K\x90\xf4b\xa3:K\x80<o*\xe2\x18\x08\
+Ie\xd2;\x5c\x22f\xa82~\x0feg\x1d\xc88\
+8\x00RD]\xf25\xc2\x8f\x08@\xa8\xf5\x96h\x0d\
+`\x83\x83&\x1aw\xf3\x04(T^0\x0b\x92B\xde\
+z\x16\xcf\xce\xa9\x1b\x1f\xcf\xfd\xf6\xc0L\x9c\xa6\x04g\
+\xf7c'{\x5c\x1e|!ft\xf2d\xa1r\xfc\xb6\
+\xf1\x1f\xc7\xe9\x00\x19\x8f\x1a\x8f\x1c\x8f\x5c(J\xdb'\
+\x86u\x14{@\x1eJ\x145\xfb\x0c\x0c\x1c\xe0\xe6\xa5\
+\xea\x8d.1I\x95fc\x9fhBd #\x91\xdb\
+\x1e\x1a\xd6\xa9\xfb\xaa$\x99\x07\xae5\xc0\xc1D\x84E\
+\x8f\x94\x83\x9d#%\x22#\xe0\xb4\x0f!\xcd\x80 \xf7\
+\x9b\xba\xbdu%`:3\xac\xf3?\x0e\x10\xc0\xa4\x1e\
+\x7f\xd4\xd95\x22.\xe0'\xca\x85\x9a\x9d\x9f\xafZ0\
+\x8cwY\xf5\xf6W\x85\xc6\xfd\xb0?T\x5c=\x0fj\
+\xfc\xa9\xf2ZH<*y\x8e\x07\xac\x83\xc8\xfdQ\x91\
+N\xd5\xea\xa2\xdeK\x98P\xd7r\xeel1h\x04X\
+\x0eF\xf7C@\x9e\x07ii\x1ax\xae\x02d\x80@\
+\xb66\x04\xcf(\x98F\xa8\xe7\xd6I\x89V:\xf8\x1c\
+\xd0y \xf2g\xe3e\xc3&\xbf\xf3\x9ba\xdd~'\
+v\x97\x14\xf1j\x05\x118g\xa2\xb2}~\xd8\xf4z\
+VX\xfb\xbc\xad\x82V\x94\xff\x04\x16\xc6\x8f\x84-\xd3\
+4\x8ai\x94\xc0\xdd\xf6\xb4\x14\xab|\x7f\x02#\xa8\x8a\
+\xa8\x88\xdf\x08\xeb*x\xc4\x85\xfe!E\x90\x12\x08\x8a\
+\xa9\xe0Ml\xcf8;=\xddy\xf0\x0f\xa7\x0f\xff2\
+\x9c\xbe\x88bU\x82\x90\xcfy{\xabY\xfc\xb3y\xc7\
+\x1b%\x80\xfc\xe4\xae\x95\x05\x95\xd1\xf9\xa2\xb7\x1c\xc59\
+\x99^\xd5\x1a!\xb0\xb9\xfe\x05\x13\x92\x12\xf3[\xf9\xbd\
+\x96\x80]\xb3\xab|\x03\xc2\x22\x5c\x9c>\xff\xf8\xa9\xf1\
+\xd3\xe3\xa7\x16\xaa\xb3\xe7^\xe3E\x89\x8f\x99~\x92\xeb\
+}\xe7\x0b\xc3\xba\x8a\x92\xcf\x0bh\x22ji<\xe0?\
+\xce\x0c\x8d\xfa\xdc\x18(Z\xb1\xae\x156\xdd\xcf\x07\x84\
+-\xe2m5m$[,\x86\xc7\x87\xb5\xe9(\x87\xb5\
+\xca\xb9\x16\x1a\x94\xfd\xa4D\x97\x18\xdf-&\x9b\xf6\xc9\
+\xf0\xea\xb0\xa5b\x0fh\x1an\x12\xd61\xeer\xfc\xa3\
+D\x13PS\x1a+\xe9\x1f\x1b5\xfdV\x1d\xe0tz\
+\xd8\xe2\xc7Z\xeb\xc1<\x1e\xea\xb8\xcdq]\x22G\xc5\
+<\x99\x09\xed\xfd\x0ei\xe7\xce<n\xf8J\xc90L\
+\xad\x09Tbj\xe1\x12\xb0bh\x11\x17\x94x\x0a\xa8\
+\x93iQ\x95d\xbd\xeb\x12\x0e\xe7& [\x81\x05\x90\
+\x03\x18\xf9\xecd\xff\xbe\x00\x98\xe3\xc3';\xba\x01\x19\
+m\xae\xfd\x94\x94|\xac%&\xe27\xe3\xdf\xb2 \xd2\
+\x80\x94+\xe7x\xb5\xa0\xf8_e\xb2\xe9\xe7\xc6\xaf\x8c\
+_\x1e\xbf\xd2\x9ds\x98g\xbf\x1e\xd6z\xcb\x9f\xd7z\
+\xcb\xb5\xac}8l\x09\x98K\xb4\xd39\x821C\xa3\
+$+x\xfc\xd6\xf0\x83\x1co\xf9\xd3\x19\xf8\xdb\xec\xb1\
+\xd9\xd5\xc6\x1e\x13C\x8d\xa1\x93\xef\x98~\xef\xe7a\x1d\
+\xa0\xed\xdc\xd5\xc2h\x1cY\x16\x0cT\x96\xeb\xf9:\xaf\
+$L\xee/&\x80\xfd\x0a\xe8K\x91\xca\x02^sz\
+Lc\x8e\xfeaW\xb8\x93\x10*l\xe8\x1d\xe6\xf7<\
+\x7f\x1aO\x09D\x97\x96\xc0\xd3\xc3:\x11=\x09\x9f\xf3\
+\xf6\xce\xf3t \x80\xf4\x85D\xf2\xb2\xf5\xa4\x0aE\xc4\
+h}\x0e\xe3W\xcd3\xcf\x96\x8c\xf2\x9b\xe2cj\xea\
+\x1854*\x8c_L\x0d\x97b\xd2bN>{\x15\
+\xff\xc9c\x00\xb7\xbf\x1e\xd6\x0a(\xf3\xba\xcc\x16\xb4\xa2\
+\x82\x03\x96\xc5A\x0a \x12N-\x97\xa9J\x0f\x007\
+\xb5\x09\xa3\x07@S\xc0\x0e\x86\x04`\xef/\xc3\xbaV\
+\xceu\xa1U<!\x9f\x02\x14\x00\xf0\xe4\x1f\xb4%h\
+e)\xa8\x000\x8d\x19\xa6i \xa1\xa7\xd9c\xfc\xa5\
+x\xd8s\xc0\x94\xe4\x170a\xf4\xf8\x13\x01T\x88\xd5\
+\xfa\x0b@xyX\xc7\xe0\xf2{\x80\x10\xcc\x02\x9f\x93\
+_\xc04Y\xff}q\xa4<T\xe2\xbb\x9eza\x9f\
+R\xed'\xe6\xa8bN\x8c\xd89\x93~\xa1\x80\x9d,\
+\xd4\x16\x00\xa2\xf0\xa2p\x0dPX\x0a\x7fsA\x0a\xf0\
+\x8fQ\x90\xeb\xb3\xc4\xb0i\xff\xac4\x00\x88\xb2W|\
+\x0b\xe8\x06\x84d\xbe\xb4=6\xack-\xd0\x8a\x00`\
+\xca\x96\xde\x02\x02\xf8o\xcc\x1b\xad\x0d\x09\x80\xec\xaa\x83\
+\xf33a\x99h\x9c\xdc9\xa8\x9e\x92\x7f\xe9\xee\xfb\xbe\
+\xb7~WG\xe5\x94\xd0\x07\xfeu\xf6E\xf4\xf2\xab\xcc\
+\x9a7\xaf\x17\x88\xc3R\x81\x94\x00P\xef\x87P_\xb9\
+\x0dpY\x02\xfb\xc0\x87\xae\xbc \xc7\xcd}^\xbf\x0b\
+\x1cbH\xc3\xf5\xf2\x01\xef\xdd\xa9sF@#A\xb8\
+|\xf7\xf7\xf4\xf2\x1b\x1b\xe8\xe0#.f\xec\x15\xd1\x0b\
+\x07J\x02\x16\xed@\xb9l&R\x11\xd8\x1f:\xd9!\
+\x99H~l\xa1\x88\x15\x92\x9f\x14\x92\xcd\xbb\xe6\x80l\
+8!\xac\x89\x11\x1d\x13bDM\x1c\xe8\xc7\xdd\xf8\x16\
+\xe2Gz\xfc\x1c((\x96\xa9\xb6\x5c\x15\xf5\x9b'\xd5\
+\xc6\xdc\xf9w\x87M\xaf{\x86M\xaf\x0f\x0d[\x80\x80\
+\x9d\xf7\x0c\x9b\xbe?c\xf8\xb7\xe1\x8cED\x89\xda>\
+\xc4\xd0\x81S\x0ei=/\xd8z\xb0NPH=7\
+\x89\x1dG\xe7}\xf4\xceX\xc0\xd6\xdb\xaf\xe7\x86\xd8'\
+\x1d\x94\x7f\xb7\xae\x04\xb2\x1c\x89\xbfk\xbd\xe9\x9d\x92H\
+p$\x1f\xc9\x04?+\x87\xc64\x11\xbb)\x912\x81\
+=*\xd1^+\x8a\xe4\xbdg\xca\xd9\xb4\xd9\xe6\xcf\x0d\
+y\xe50T\xba\xb3\xc5\xa6\x0d#|SN\xdb\xb8\xd2\
+2.\xcf\xff\x1f_<\xd9\x8b\xda\xf8\xbe\x87\x8d\x0f\xcb\
+\xf9\xe2\x1fL\xe0`\xda\xf0\xe3\xd9a\x0b\xa2\xba}d\
+X'f\x02\x81\xcc\xc4\xa4\xa6\x06\xfc,l\xe95\xaa\
+\xe7\x82Rv`\xd82e\xc1\xefa\x18l\x7f)\xac\
+\xab\x00\xa0@q\xbc\xfc\x86@\x1f0\xe8~\xa3$\xa1\
+\x0e\xfa\x02\x04@|\x1d\x04\x0e\x16\x096\xc4?\xd7s\
+!\xa3+\x11\x98\xa2\xecA\xca3\x10*\xaa#\xc7\x0d\
+\xc82\x0e\x90\xb8\x93\xb1<\x80#\x81\xb2y\xed\xee\x1f\
+-\x0e\x09\x99\xde<@\x96\x03.\x0fjj\xcf\x95`\
+\xa5\x88\x97\xefk\x1fd\xef{\x89\xe3Q]Wq\xd0\
+\x8a\x95\x89\xb0\xfd\xa9\x12S\x07\x1f\x86\x82y\xd9\xc6\xd8\
+\xe9\xb5E\x85t@\xf0g\xc6\xee\x11[\xf2\x5cR\x9d\
+\xbez\x9f\x13\xd8\xa3\xee\xbe\xfb\xaf\xc2\xbai\x1b\x90\x7f\
+Tq\xcfQ\x85?)\xe6*q;?\x11\xb6\x88\x87\
+\x16\xe0\xe1 \x04\xb89@M\x83p\xd0-\xe2\xa2m\
+\xdf\x0dg\xce\xea\xf4S:\xd4\xc4Q\xa7\xb0hnq\
+qPz\xffw%3\x06\xa2\xfe\xa9\x9cZ\x81A\xb1\
+\xea\xed\xafD\xeb\xa9I\x95M\xc4\xbd\x01\x09\xa7u\x09\
++\xbf\x91\x89\xfappX\xee\xcf\xdf\xeb\x12-\x22\x96\
+D\x85RK\xf3B\x1a\x0f\xfc\x1a\xe0Ue\x07uP\
+/?@-+\xf8\xad7\xff\xaf\xbaq\x95\x02T\x80\
+\x8b\x04 \xc6\x19>\xa8\x9bv\xa3\x22\x9f\x80\xca\xce\xef\
+\xed\xfc\xee\xce\xefv\xd4E\xf1\xc3AaK+\xc8\xee\
+?\x0b[*\xbe\x00\xda\x9d\x9f\x0d[\x122-$D\
+\xea\xf4\xec\x97X\x16\x86J\x8a\xef\xb6\xc4\xff\xda\x0b\x00\
+S\x9a6\xb9N\x87\xd7\x86-\x09\xd8x\xeb\xb0\x8eq\
+\x85\xaa\xa9%l\x8f\xb0\xe9uwN;\x89\xfd}\x9f\
+&\xea8\xd92\xbeOKA\xf5\x1e'0T\xad\x08\
+A\xfd\x1f\xba);\xc9\x5cAm\xad\x1e\xcd\x13\xb3U\
+Bb\xc4\xff\xfcA\xfa\x97\xe7\xa5\xba<`'\xc7g\
+V\x05\xf2}a\xcd\x7f\xceS!\x92\x1a\x5c\x80F\xb6\
+\xccT\x02\x15\x9a\x09\xdf[\xbe/`\xdb>\xb2o\xb2\
+\xe7\xbe\x18@\x19\xa7\xd4y\xae\xb5\xcc\xbck\xfe\x1a@\
+A\xd3 E\xc7J\xfc\x90\xdf\x0bj\xf4\xfd\xdb\xf9\xf9\
+\xf5\x96xh\x15\x89\xb1\x89\xe7w\xe2\xc7\x09`\xa1V\
+c4\xb5\xde\xe3S\xbb\xb1\x7fT\xf1\x01\x1c\xef\xda\xbe\
+\xb31\xdeve<\xfa\xd4le\x89\x04\xfe\xa7\x8d)\
+uR\xd3\x10\xd9\xb5\xdd\xb9\xdd\xd9\x80\xc1y\x9aR\x16\
+`\xc6\xff\x0d[D\x9f7\xc7\xcf\x09\xf0\xf0\xac\xc9\x9e\
+\xdd%\xd0D\xb9^1%\xae\xafh@\xf3\xb7\x02h\
+\xde^=\xac\x0b\xf0\x8f\xceD\x0b0\x87\x11\xa9\xd0\xa1\
+\xb0e\xde{\x02\xd1\xe2\x10\x09\xdf\xf0Ka\x19G\x1e\
+\xdaQ\xf6\xa9\xb7\xa3\xe2k\xf5\xd0\xd3\x8d!C$\x10\
+\x93O\xe2/><'5f\x88\xfb%\x83\xa4\xe6\x8b\
+kEK\x11\xb5\x1a\x97\x9a\x89s\x9d\xfb\xfc]V\xae\
+K\xfb$E2\xeb\xbcL\xc0|\xb8U\xd8\x02|l\
+o6\xf7\xbe\xd7~\x22\x22\xc8\x9f\xa94Kt\x15\x94\
+\xac3\xf1;\x11\xbf\xd7\xa7H\x1c?\x99q@}\xbe\
+\x14um@Z\xc4%\xafm\xb6$\xd6\x0a\x024|\
+\xf8i\xcf\x8f_\xe6\xb7\x01\xdc\xb4\x9f\x00\x22\x12\xb5L\
+\x18\x8by\x91\xcc/@fQ\xca\xfd}q\xa6\xe7\xe5\
+{L?\xf7\x1d\x83\xe1\xc5a\x1d\xa3\x02\xb0\x9f\x85\xb2\
+*d`\x80\xfckX\x07\xb4\xab\xecKx\xb5\xd4\xba\
+\xefkU\x7f\x14\xff\x07\x84u\xd7#!\x05d\xd1X\
+\xc2\xe4\x94Oy.^\xd7c\x02\x15\xe8\xe4\x85\xfc\x94\
+<C\x85\x1b\x83\xd3\xbf\xaf\xb4\xdc\xea\xf7\xc5o\x0a)\
+\xfc\x9f\xeb:o5\xd5\xcb4\xb1,\xf4\x14\xa0\xe2\x5c\
+\xd2K\x9f@d1W1\xd9\x00-\xe2\x16\x8cK\xe3\
+\xbc\x8d\xbdT\xd84\xdeRK\xaa\xf5\xa6\x97\x1f\x83\xdd\
+\x18X\x0cV\x05&\x9f\xd7\xb4\x18\x7f\x0f\x13%\xe3\xd0\
+\x9a\x9e\x92\xe7\xc9\xae\xf1\xd8\xc9\xa6Dn\xfcRXw\
+\xf0H\xdc\xf5\xf2\xa3jEx\xb8\xefE\xa8/\xba\x10\
+\xbd\xf1)J\xd4\xc2\xc0\xef\xe4\xf7\xe7w\x88&Q\x22\
+\x94\xa0\xcb\xb7\x09\xc2KBBK@@\x9ac\xf8.\
+\x94\xf8\x07~\xbb_n\xd8\x03\xba\x05fAa\x02\x08\
+\x9c\x5c\xa7V\x05-\x09\xb1L\xaf\xddQ\xb6Q7\xf4\
+~\xc4\xc1v\x8bn|\x9b^\x1c\x00\x85\x0a\xa3\xb1L\
+I5n\x09\xc7\x99Y\x99;>\x91\xbe\xd7w\x88\xe0\
+O\xe7\x8a~Q\xf8\xa8\xf5\xe7\xfc\x5c\xa2\x14%\x86D\
+u>{\xa3\x04\xb85w>+\xe0\xc3\x1f\x0d\x8f\x1b\
+\x1e\xb7P[\x877\x84u\xe3\x99r\xec\xc8\xcec\xc2\
+\xa6\xff\x7f\xa9\xb0\xe9\xf5\x9f\xc3\x9a*\xf2\x17C\x15\x19\
+2Z\xe2-\x02`\xf34\xb3\xb7\x91\xa3\xa2\xba[H\
+\x98\xc4|\xed\xc8 r\x10\xddLtT.\xabr%\
+\xf0\x05\x00qH\x1c\xc0j\xc1\xebm.\xb1\x1f\xc8`\
+V\xf0\x8a\xca\xfd\xbe\x14\x1b|\xe6<\xfe\xae\x02b\x09\
+\x85\x0a\xa9D\xdeW\xcf\x88\xd9\xb3s\x1c_J\xe0\x02\
+\x80\x11a\xf6W;d\x15\xc2x\xe9\xb0\xce1f\x0f\
+b\xa9\xe9\xa78\xcc\x14\x8e\x9c\x1b\x01\xc9\xeeg\x85%\
+`\xf0\xc6\x05\xa1\xa4\x82:\x9e\x1a\xb6 zz\xc1\xab\
+\xb7,\x11C\x15\xf1\xa2\xf0\x12IR\x19\xd2\x83\xa8\xe2\
+\x0f\xe9\xceu]c\xa4\xa8\xf8: i$\xa8,x\
+\x1f\xff\xee\xb9;8\x00\x22\xf6\x97\x04\x15%7\x03\xeb\
+BP9j\x95y\xeb\x00\xd0#1\x05(\x09X\xfd\
+\xfc\x22\xda\xd3\xfe\x9d\xc6G\xcd]\xe5H=\x0fb\x7f\
+\xfe={*\x0b\x90\xe2\xd0%^\xfc\x18&\x00\xe6\x0a\
+\xd1$\x94k\xcf\x1fpHLS\x85\x01`\xa9\xb5\x80\
+\x1f\x91H\xe7A\x8b\x12\xb6\xf9\xfb\xb0N\x8c\x0aPB\
+D\x06\xa0\xa0\x07S\x05\xc0~B\xc1\xd4#\xee\xef\x12\
+\xbb\x02(`\xe8|4\x0f$\xfbC`\x98cJ\x8b\
+R\x98\xbd\x8cE9C\x89\xb7\xbf<\xa7\xdc_\xb5\x1e\
+S\x5c\x10\xc0\x84\xc9T\xfbM\xe0k\xfcg\x8aD\xd5\
+8Q\xf77+X\x15\xc0\xbe%\xa7\x0e\x18[(\x01\
+6\x9f\x1c\xa0\x99\xa2s\xd3!<\xf7\xfe\xa5\xdatQ\
+\xef\xad\x0f\xcfK\xcb\xcc7\xd3\x9f\x9d\x9c\x01$\x8d\x19\
+\xada\x02,S\x13\xf29\xd7\xd8\xdd3\xa6\xbbzF\
+w\xeeE\xa7\xe8\xd1\xed<xk\xa3\xda\xd2>\xc8\xca\
+x\xad\x0b\xd4k\xcc\x17\xe7\xb6J\x9a\xe9\x06\x09\x94\xa1\
+\xf6\x17\xb0\xa2\xe2\x9f\x89\xbd\xf1j\xad\xd1\xe3\x01]`\
+\x85\xb2mL\x1fj~\x02\xc3%:\xa6\x179\xbf\xdf\
+\xbdgXGE\xd6S\x09\x08I\x8d\x19\x0c\x8d\xe1\xfc\
+\xb0\xe9u\xbf\xb0n=E\xc2\xf7\xa8\xac\x94|ca\
+\x00\xe8\xbd\x1fo\x166}\x7f\xc5\xb0\xe9\xfbs\xc2\x16\
+`Ge\xde\xd8\xc3\x96@\xbf\x7f\xa1\xac\x0fO\x0a[\
+\xe6[7f\xd7+R\xd5\xff\x7f\xbb)\x07\x99x\x03\
+\xb4\x86\x0fO6\x9d+\xc3/\xc2r\xbf_'\xc7M\
+\xc59v\xd9\xb0E\x13\xa6\x9e\xc3\x9a\xe1 \x816\xde\
++\xf7\xe1\xf0\x07a\xd3\xe7y@X\x8a\xe1}\xa2\x9b\
+&\x93\x89\xd2\xf8\xe6\xb0\xa48_~ILK\xed>\
+\xce\xc1\xbf\xee\xa8\xcf\xce+\x95Q\x8c7\x81\xa6\xc0\xdf\
+\x10c\xfeZ\xa2\x1a\x8c\xb5\x8fu\xbfg\x9d`\x8cb\
+\x06d\x81b\xb8zX\xc7\xb8\x8cF\xa3\xa7v\xcf%\
+\x19r\x80\x8f\xf1Ia\x09\x84_\xb5\x8b\x17\x22\x8c\x0d\
+@\xef.\x93\xfd\xf6\x22\xa67>a\xb2)\xb1\x1d\xf6\
+\x09\xeb\xe2@\x15\xce+Ov@R\x8b_\x96\xa2\x8b\
+\xbf\x9f\xbd\xe4S@<\x9e\x19\xd6\xe2\xd3\x16\xf7m\xbe\
+\xb0\xf9\xcf\xa0x\x9bV\xa1UR\x8b\x14\xbfFsd\
+\xfb\xef\xdb\xcf6\x86\x1d\xff\x8f\x89\x99\x89\xa9\x04\xb7\xc4\
+\xf2n\x97\x80\xeb\x97\x13\x18~\xdd\xec7\x8c\xfd-F\
+H\xc6m\x80\xe5\xcd\xad\x13\xd0\xe6?\x0f\xcdB\x99\xf3\
+M\x9cb\x7f\x03\x18P\xe6\xc5g4)\x00\xbb{d\
+e9\xcf\x15\xe3|+\xb1v\x9eg!\xa5\xa6\xa0h\
+mI\xc6\xaax\xb4D\x9f\x1f\x91\xa2\xcb9\xcd\xa4\xf9\
+\xb9\x8f\xb4\xf58k=%cbx~\xd8\xf4\xbe\xf7\
+\x08[\x00\xc4\x9a7\x9fS_\x0a\x083\xd5I\xcb\x18\
+&\x9d\xc4\x8f\xf8\xaa\xf8\xd3\xbf\xa3\x86\x07\xc0\xf9\xe0.\
+\xae\xc0\x88\xc1|\xb4?\x14\x22M\xddH\xf1\x5cL3\
+\x85\x94\xd2|J@\xb4\x00e\xf1-\xd1<\x00\x88s\
+W\xbe\x90\x7f\xb7\xb4z\x9cg*\xb5\xc6\x0c\xd2*\xc1\
+\x5cI\xc6O\x152$\xdc\x0a\x03\xfcq\xb6\x96U|\
+A\xe3\xc1\x94$Trb\x94\xa9qT\xe2|\xc6<\
+\xae+\xf1Z\x06P\xfc\xc5U\x80\x8f\xf5\xd8\xd0u\xcb\
+\xb4\xbc@\x81h\x15\xa7\xd5}\xd7\xc3\x8f!\xa1p\xa0\
+uAe>\x0b\x19\xe5G1\xcch4\xf0S\xfe.\
+\xff\xa7\x90\xc0\xcf\xb8\x9e5\xe3|}\x9d\xd6\x8f\x04^\
+%\x1fP n\xc8\xb8\xbd\x18\x05\xces\x9ag\xce\xc7\
+\xb5\x86YN)+\xb1H\x00\x07F\x8f\xbf\xafe\xcb\
+}\xc0\xc8\x01(i\xc1\xf49\xb5\x16$\x90\xb9\xab\x02\
+R\xc8\x9a\x84^\xa0(\xf1\x97\xe8J\xc81\x02\xfc\x1c\
+u\xff\xf5\xfcC7\xccAB\xf5<\x90\xf1\xf7g\x22\
+z\xbf.a\x8f\xfa\xd0u:DC\xa2\xd03\x01\xf6\
+\xcb\xc0\xf4\xca\xb9\xb0\xf7\xcfJ\xf0u;\xf1?*\xfc\
+\xae\x93\xe3t]\x11\xcem\xbb\xf77.\x22\x02\xea\xfd\
+:\xca\xbf\x0d\xcd\xb1\x02\x100\x17\xbc? \x03\x82$\
+A\x01\x94\x10\xeb\xfa\x83\xb0\xae\xd2\xa8G8EW\xca\
+\x91~f\xf3\xe9\xcd\xa7\x1b\x22\xdd(\xf4\x12\x80\xe1\x9e\
+a\x9d(\xd1\xe7gJ\xef\x14\xbe=}xz\xa7~\
+\xfc\xe2\xb0\xe9\xe3>'l\xfa\xfe\xaf\xc3RU~\xfa\
+\x1c\xc3\x0b\xc2:&\x81\xeb\xe1\x10SU\xb4>\xdf:\
+\x11\xb3\x10\xf5T\x1b\x1f\x06\x18\x11@\xa3\xb4\xa4#1\
+\xa7\x12\xf2^\x1bE\x22o\xdc\x9a^\x15\x0b\xdbs\xd3\
+\x03\x9c\xe3\xeb\xca\xa1R\xc3\x85\xf0\xa2\xdc\xa0J\xeb\xed\
+J\xcaV\x8d\x9f\x81\xf0\xaa\x8c\xa0@q\xa8\x10B\xfb\
+\xe2\x9b\xe9p\xad\x1b\x07/\xa4\xed\x8b\x19H\x11\x87\xe4\
+\xb8U\xb2\x00\x15\xa9\x12\xbb\xbd\xfe\xf6z\xdb\xebe\x82\
+\xfe\xf3\xfe\xa7\xeb\x00\x00 \x00IDAT\xcdE\xbc\
+h\xf7\xb1\xbb\x8f\xdb=%\xee\xe3S\xc7\xa7\x8c\xf1y\
+\xae\x97\x14\xeb\x8f\xcc\x14\xa6\xf1+a\x0b\x12?\xfeS\
+\xd8\xf4\xfa\xa2\xf1\x85\xe3\x0b;\x0a\xd1\xd9\x89\xc8b\x02\
+\xa4\xc3Gu\xa3\xd2^\x1a\x09\x0e\xa4\xa4\x9c\x8e\xdf\x0b\
+\xeb*\xe7T\xea\xf9\x01L\x0f\x8eL\xaf\x1f*Z\x8a\
+{ql5]\xc3\xbe\x82\xb4\xaal\xbbn\x0eX\xc2\
+\xef~C\xb6\xf9\x07\x80\xa0u\xc4\xc1[\x9f\xa8s*\
+\xf1\x02W\xbf\x87B\x86\xc2\x95\x15\xbeZg(l\x02\
+\x03\xefk]\xa8\x84I\xec\xf4,J\x14\x05\x86z\xc1\
+?\x15\xb6\x04\x04\xc5\xdc\x00P\x00\xae\xf8Q\x9f\x9b&\
+J\xbe\x7fi\x03\x00(\xdc'\xcc\x09\xef\xa7Ue-\
+*\x09(\xc8\x96\x81\xda\xdf\x80\x0d\xd7\x09 \xb0\xef\xdd\
+\x07\xcf?+MM\xa5\xfb\x87\x0b\xb3\xa9z\xb6\x1d\xe8\
+\xf6\x89\xf5\xc2\xdf\x12\xe5\xa4)\xa1\x07\x0e\x85\xcf\xcfc\
+\x8e\x00\x00Qg\x8d\xb1\xd4;\x98@RQ3\xf7\xd9\
+\xee\xbd\xdd\xbb\xa9\xcfO\xb6\xb4:m\xbf;Wj\x05\
+\xa6m(\xe4\xfb;1P\xda\x0a\x80O\xc0\x87@#\
++\xd0%\xee\xe4s\x1a\x17\xab\xf2\xf6\x98\xb0\x85\xa9U\
+\xe2q\xa7\x86M\x1f\xef\xf8\xb0\x8eY\xb2B\xfcQJ\
+\x0b(\xa5E\xa0\xd2c}\xbb.\xcc:j\xc4\x02\x0b\
+\x0c1\xeb0)\xe8\xc5\xe4\x08i\xc0\xfbt\xc0Q2\
+\x96\x0a\xd8['\x8c\x077\xdb\xb1\xb9XX\xc7\x14H\
+q:\x95\x8c\xf1\x94\xb0n:H>/\xc7\xe8\xf0\x96\
+\xb0\xc9\xbd\xffS\xd8\x226\xbb\xf3\xa5\x93\xbd\xa4S}\
+O`i\xfc\xdd\xb0e}V\x02\x92\xe2^\x12\xce\xf1\
+\x89a\x1d\xe3\x0f\xb3\x8f\x7f\x03dx.\x09\x887\xd1\
+\xb7\xcd2\xff\x19SFa\xae\x18q\xc7\xcdT\xfd6\
+N\xce\x18\xdcwf\x01\xe2*I=\x7fc\x07\xcce\
+\xe5\xa7D'\x9d7\xd4\xf1\x01\x0c\x09\xec9\xd7\xb4\x06\
+\xed\xfcP\xd8t\x1fv\xce\x15\xecb\x08\xe5\xfd\x9f\xd2\
+\xa7{F\x02UTr=\xc9\x01H<=E\xd1\xee\
+\x9d\x05\x91\x83\xbbD\x88(s\x02\x85\xc50H\xa0\xa6\
+\xdd\xff\x07u\xc0\x948J\xa5\x0f\xe0\x1d\xf5\xcc\xa3\xba\
+\xc0;[\x13\x01\xa4;\xbf\x136}\xff\xfc\xb0\xce\xff\
+$\xb3\x86\x86L\x89$\xa7_\x1a>\x18\x96\xe3X\x0f\
+_\x00\xeb\xd2\x9c\x09xo:\xdf\xc7;\x87\xb5}4\
+S\x9a\xcf\x9f\xa9\xf9\x18-5\xc5\xea\xebS4\xf1\xf5\
+\xee\xdc\x07l\x1d\x13\xf3GR\x03b\xfa\x5c;\x1f\x1f\
+\xd6M\xa9\xc8\xb1~U\xe0H\x0a\xfcf\xdcl7c\
+'v\xa9EL\x0f\xff\x0b\xe7@~\xf3\xd0\x1c\xa7g\
+\xbff\x02\xbd\xfd\xfe\x0c(\xa8\xd0\xd3\x08\xa0yR\xd3\
+/$\xbc\xf6\xdd-\x93b\xad\xc5\x0f\xa0`\x9f\xa6\xdf\
+\xaa\x82\x88\xd63\xe7\x11m \xaa\xf7\xc6\x1ej\x9d\xa0\
+\x85\xe2\xfcq\xdd\xeb)K7J\xe6\x5c\xb6:\x01\xae\
+T\xd4\xb7W\x9aE\xf0j\x5c5&J\x8a=\xd6\xe7\
+\xc4\xe48&l\xf9\xfd\xa2\x92\xa7\xba\xfd\xe6\xe5a\x1d\
+0\x01\x98u=\xce\x0b\xeb\xd3\xb9c\x9d\xfa\xff\x19g\
+\x16\x10\x22AW\xe02\xbdC~\xa3\xd0 \x81\xc5\x00\
+\x90\xa8aX\x98\xaabz\x82\xf8BAD\xdc\xa1\xa5\
+\x0eCN\x05\x1de\xdf\x18LSj<O\x89\x1d\xa6\
+\x18\x86j\x02\x08\x98\x99\x058;W\x931RLL\
+L<y\x97\xfb\xe8u=u\xc9\xfd\xb5\x1e\xc4S\x12\
+P\xf7C|\xe6sJ\xfc\x8dQTx\xd1\x9aH\x1b\
+HeZK\x0a\x06\xa3\xfc\xc2t\x14\x00YN\xa3\xb8\
+\x90\x88\xbc\x1e\xfel\x85i-tO\xea\xa6n\xa8\xac\
+\xcb\xdfh\x97i\xe5\x01\xc0(\xf0y\xfe\xde?\xd7O\
+1\x1aM)\xe2\xcf\xf9\x15y \xa0G\x81\xd6\xf5`\
+\x18\xfb{\x18\xde\xa6'\xc9\x93R\xcb\x04\x90T\x8cP\
+\xe3\xb4\xb5\x80\xbb_\xf2\x0d\xc0\x90\xe7\x22nS\xd8\xcf\
+\xf3eW\xf5\xf6\x0a\xdc\xf7j\xe4\xe6E\x85_O<\
+\x0a\xbd\xb1@k\x15Y\xaf\xd4\xfd#|\xd9\xa3\xbb\x91\
+NP-\x02\x10\x09b\x15*\xf7^!H\x10\xe5<\
+\x90+\xd0\xbd\xee\xac\x12]S\x0c\x1c\xbc\xfb\xb5AN\
+\xcb\xc1f\xc1\xd0\x16\xe8\xc7H\xec\xbc\x88qb\x12`\
+Hr\xfc\x9d\xeb\xa5\x18\xca\xf53\x00\xfa^.\x9c/\
+v7TB\x13a\xff\xe1]e\xc6B0U \xb6\
+\xdb\xb5\x96\x8aqH\xc5\xb5\xf1U9V\xa9DAT\
+\x1c\xf7I\xeaJ:\x02\x01\xe0\xe6\xd4\xcd\x1b7ol\
+\x15\x88V9\xd1cI\xbd\xd9\x98\xa2\xe1\x91a\xd3\xff\
+\xbfu\xd8\xf4\xfa\xb3\xb0T\xd9=:\xa9n\xc7w\xd4\
+e\x0b\xd9\xc2A\x9dN\xaaK\xf5v:\x00\x8d\xc5\xe1\
+\xd8U\xc6l\x18\x95\xdf\x8fuj\xd7W\xea\xc6\x89\x19\
+\xe3B\xfd\x1a\x85&\x1dD\x89\xb1\xac(P%\xfa\xe2\
+9\xbf\xbfu\xefV\xc2\x06P\xa9\xca\xb5\x1e$*\xcb\
+z\xf2NN\xa6\x81\xc4i-B\xe7>88|}\
++\x0f\x16\x94w\x811\x95U\x8e6)C%\xda\x93\
+\x8e\xb5\xc6\xf0=gf\x82\x8c\xe7\x8e\xe7\x8d\xd3\xdf\x19\
+\x7f1\xd9\xe4\x88v\xdfu\xf7o\xef\x0ej\xe2\xa5\xc7\
+\xbd\xc6\xbd\x96\x04\x07\x83@\xa5t\xbcM\xd8\x02,m\
+\xef\x106\xfd\xfb\x07\xe7\xb1\x81D\xd0jz\x00\xc7\xa7\
+\xf79E\xbcj\xddA\xec!\xeb>\x1f\x04\x16\x05*\
+\x91\xe8B\x84\x89\xac\xe9\x15\xfc\xf7\xe9X\xf8\xf7\xe6\xa8\
+f\xbfr\xad\x0c\x84\x1d\x10\x0e\x1a\xf7K\xe5\xdc\xbf\xdb\
+W\x98\x06z\xc2\xb2r[Z\x0b\xde\xcf\xfeUI\x95\
+@\xcb4\xb4\x8a\xa8\xd0\xa4(\x9b\xeb\xad^C\xe2@\
+\xc6\x06r\xc0(\xbcz\x1c\xb5\xde\x98O\xec\xef\x0a\xf8\
+\x01\x82\x12d\xc0\x18 \x11\xa0e\xac\xa0\x83V\xa2\xa9\
+\xa7\xd4\xf3\xf2\xf3\xe9\x17U\x22jl\x9a\xa9\x18\x0ev\
+\x07\x91\xd6\x81o\xe5\x5c\xf4\x0f\xcdT\xf8\xaahEB\
+\xf6\x8d\x85\xf9T\xf3\x86\x05\x22\x9e\xff\xf7\xeb:\xe6\xfb\
+\xb9fV$\x808\xfcg\xd8\xa2\x81\xa0\xd7\xb1\x0e \
+\x95|\xbd\x8f(\x9e)J'\x80\x19\x1f\x196\xbd\xdf\
+\x95\xc3\xba\xc4\x94_\x04\x08x\xcd\xde\xd8\xf1\xc3a\xdd\
+\xd8\xa77\x84-\xcc\x9f\xe1:a\xdd\x18>\x152\x15\
+\x10\x22]\x00(\x01N&\xe2UY\xe1\xafTRR\
+\x8b`\xf3\x96)\x81{KC\xde\xe7\xf3-\x81@\xbd\
+\xcb\xa6h\x10K\x1a\x1e\x13\xd6}.\xcf\x0d\x10\x098\
+3665U\x8a\x92k}Y\xbf\x00:\x9a\x0fZ\
+\x03\x88\xfe\xad\x010\xfb*\x12\xb1\x87/\xbd\xe3\xd6_\
+U\xc0\xf9[\xbf\x97@[\xcd\xcfV\x09I\xad\x13\x89\
+\x00\xff0\xde=l\x09\x9c\xa8\xa4\x8fo\x0c\x9b\xbe\xbf\
+gX\xc7\xa8\xc9\xcf\xbd\xf3\xb4\xc9\xde\x94\x15\xf9s\x9b\
+\x86\xc2\xe9\xa1\xa10\x9e\x1c\xb6\x88\xf7Y\xa7\xfc\xe1\xe6\
+\x05a\x1d3\xe2\xfc\xec\x99O@K\xab\x97D\xbei\
+Y\xfc\xcfr\x8e\x0e\x87\x85u\xad\x06\xce]\x14\xe5\xa0\
+\xaa\x87\xe8\xeeAa\xcd\xdfN\x96\x9f\xeb\x81]\xaf\xa6\
+\xfbdz\x8a\x04\x1a\xc0\xa2E\xc2\xbe$\xfa\x94\x00\x14\
+`m\xc7\xf3\x9b\xd5\x14\x04\xbd\xefz\xb5\xab\xc5\xcb\x14\
+\x0e\xe7n\xfa\x1b\xe3\x82\x9b\xbf\x8fJ\xf0\xefMvD\
+\xe7\xc7\xd2\xefT\xe2\x1a<\x92\xdf_\xe21\x15\xef\xd2\
+v\xb1\x7fie\xa4?\xd5\x1a8\xbc\x22l\x01\xbcj\
+<g\x02/\xd3\xb9\xf7\x9c\x10\x91,M\x9aL\xa0K\
+\xec8\xa7D\x8co\x0aK?\xf3\xc3\x8c+.\xb70\
+\xd1j\xfa\x01\x7fE\xb4\xce\xb4\x16\xaa\xd9\x12\x05\xbd\xe4\
+W\xdd^\xad1\x0c\xde\xd0\xe6y\xec\x18\x9e\x196=\
+\xffCw\x1e\xb2\xf3\xd0.\xf1\xa6\xa9\x01\x90D\xedU\
+\x89~\xde\xe6\xf9\xc1\x5c\x18\xde\x1f\xb6\x00\x04%J\x9b\
+\x89_\xa9\xd6\x03H\xf6\x08k\xcfaNl\xb3\xd2?\
+\xc5s\xbb\x87\xdd]\xc2Cs\xe4\xdb\xa9\x86\xbf\x9e\xce\
+\xc0?c\xd8\xfcc\x8a\xf4%\xc5\xb8\x12\xe8\x5c\x8f\xa6\
+\x18\x14`\xaa7\x9fX\x9f\x16\xaa\xcf\xe6~^\x03\xee\
+\xe2y~7\x13u\x0c\x95\xe1\xebaK\xc2Ub\x94\
+\xa6&`\xb0\xa9(\x7f?l\xf9\xbcU\x19\xcd\xe7V\
+S\x82$\xcc\xc9\x0c\xa8\x02\x0d\x00<\x9fO%\x92+\
+\x91\xdb\xea\xfd\x96\x88\xdd\x7ff\xe2l_6\xcf[\xaf\
+1r\x09\x1c\x17\x90\xb2\x1a\xdbV\xf9\x89\xfb\xe0\x15E\
+\xfb\xdc\xb0\x8ey\xa7\xf0c\xea\xa6B\x87\xfc)\x19?\
+\xc5\xb8\x90X\x1b\x87\xedz\xc4\x9f\xf2\xa8\xd4f\xa8\x84\
+v\xad\xbd\x96@Q\xb56fkKQ\xfc\xc5C\xe2\
+#\xf1\x12`_\xfe\xe5\x1c\xc4\xc8T\xc8\xcd\xfdW\x09\
+\xbd\xfbC\x05\x1f\xf0\x9a\x95w-Y\xc5\x94\x90g\xa8\
+P{\x7f\xad\xa8\xc6P\x8aK\x01\x12\xa6t\x10\x9d\xc4\
+\xb0\x95\xf8b&h\xc1\xd4\x82\x93-4\x18\x82u\x8e\
+\x11\xb1\xdck\x16\x91\xadi\x04\xf2\x17\x0c\x00\xaf\x0a(\
+\xe2S\xcf\xd9\xbe\xa4\x9d@\x0b-\xbf\xaf\x96Y\x05\x16\
+c;\xc5\xcf\x80\xa5\x153\xaf\xb4\xdf\x8c\xc5L\x86N\
+15\x89=cD\x88OM\x97\x92\xef\x02\x0c\x92A\
+\x89)\xb2\x8bHJ\x05t\x11\x1e\xefy\x11=\xff\xeb\
+\x84?\xc2\xff=/\x82\x12-\x10\xee\xa9\xfc\x97\xeb\x1c\
+V\xb8\xe1\x9fw\xbf\xef{\x88\x05\x07\xa4\xc2&\xa0\xf5\
+\xc0\xfc\xbb\x8d\xd9\xab\xf6_\xad\xeb\xe9w\x9d\x12\x8a\xa4\
+\xe8\xd5\xef\xfb|\x16|\xfc\xeb\xd5\xf2\xf5\x1a\xdd\xd8\xbf\
+\xa8\x97\x5c\x7fI\x08/0o\xf1\xd3\xdd\x86$B\x18\
+j\x8e7\xeez\x93S\xdd\xd6t\x83\x868>7\x03\
+\xdf\xc3\xdb\x9c\xd8G\x05\xc51$\x82B$HBV\
+\xbdQ\xa9\x9a\xdc\x0e\xec\xdf\xeb\xc6\x81\xfcQ\x8e\x0d\xba\
+KV(r\xfc\x90\xb15\xa5\xe6l\x9cM\xf6\x1aU\
+E#\xc7\xd0\x14\x95V\xef\xab^\xa5\xa4\x8c\x97\xe8\x97\
+\x04\x9cCS\x81\xa3\xea\xe9\xa0[\x8d\xf3Sq.\x0a\
+\xb3\x84\x0f\x22\x8a\x9a\xc3\xa1\xe9\xb1\xd3\x0a\x90\xe3\x13+\
+\x11\x8f\xed}N\x22f\x1f\xccD\x1a\xe5\xe9\x1d]/\
+\x9d^k\x15\x07=Zz\x81Tj\x1d {^\x90\
+j\x5c\xebP\xe0\xc0\xf1qX*\xde\xff\x9e\x09\x02\x87\
+\x01y\x86D\x12\x03J*8\xe4\xcf\xdc\xeb\xed\x81)\
+\x06\x13\xcf{r,\xbb_\xb8\xfb\x05\xbb\xa7\xc0\xb5\xb5\
+\xe6\x04\x03`\xff\xb0e\x9c_\x89\x85d\x808\xde<\
+,E\x01\x8fj*\xfb\xf7\x0b\x95}\xf3pk\x1c\xcd\
+\xdes%\xb4*H*\x8d\x18\x09\xb7\x0e[(\xaa\xd5\
+\x02\x80\xaa\x0e)%\xda\x03Y\xa7\x1a\xfc\x8f\x99\xf8G\
+\xaf\xe5I\xdd\x01 \xb1\xbdI\xaa\x9f\xda\xc7\x807\x0e\
+\x8a\xe3\x06\x9c@\xdc\xed+bp\x806\x81\xb4\x00E\
+\x85\x5c\x0b\x81\xf7w\xb0A\xb0\xf3\xfd\x1d\x1cUqW\
+\x19\xa4v\x9c\xef[@\x91\xfdtRX7uA\x00\
+\x9fH~\x1d\x08\x0e^c\x89\x8c_K\xf1\xb7\xd2\x14\
+!&\x97T\xc7b\x08\xa1\xd6\xfb\xe2\xb78~\xe3\xd2\
+L\x0d0\xd6-\x01\x8bb\xce\xa0\x84k\xddB\xd5\xcd\
+^\xd5V\xf1{o\xc7\x00\x80$;\xe0\xec\xbbHg\
+?\x93\x07\xf4\xe9\xdd\xfd\xf4y$VZ\x96\x12\x98\x88\
+\xa9\xdc1\x97\xbb\xfc\xb8\x84\x88?\x10\xc0f`M}\
+W\xaf\xdb\xf6\x9cm\x9bwO3\xa2Q\xb9O^\x18\
+>(\x7f\xc5\x1cH\xe6PHd\x86H\xa6\x1e\xfc\xf1\
+\x96a\xad\xc2\xd5\xee\x97\xc4\xaf\xd6\x07u\xdfT\xa5\xaf\
+\x80C\xa0$\xd1\xc1\xa8xZj\x89\x08\x0c\xde\xded\
+\xc1\x22p;\xbd\x050\x11\x88\xfeK\x87\xf0\xfb;4\
+,\xac\xa7L\xe8\xc6\x1f\x87u\xeb\xcf\xf9\x96\x89bU\
+\x9eS\xb4\x0c\xe0V\x94O\xe7M\xc0\xd7\xf7Xz\xb1\
+w<\xa1\xd9\xd2\xfaD\xad9\xefK\x05\xe8\xef\x9f\xec\
+}\xc9\x04|Ownd`T\x8c\x07\xd3W\xb4~\
+\xd1\xa0\x00\x98>3\xa9\xba\x12\x83\xdb\x85-\xfe`\xfb\
+\xd8\xb0\xe9\xf3\xfemX7>V\xe0B$\x98\xb8T\
+\x8e\x0f\xdey\x5c\xd8\x02\x08\xed<>\xac\xf3\x1b\x09\x90\
+5\xb1\xbf\x00\x94Nh\x16\x8c\x88\xdbon\xdf\x12\xf7\
+\x16\x90\x0d/\x1d\xfejxi[_w\x89\xf5\x058\
+\x1b^6\xd9tn\x0d\xe7\x85M\xaf\x9f\x0c\xcb\xf1\xad\
+\xff\xb0T8\xabe\xe1Na]\x22d_\x85\xa4\xe7\
+\x11]\x0b\x10qC\xe3\xa9\x04\xb4\xceS\xebB\x0b\x14\
+`\x22\xffn1\xa2\xc4g\x00X\xfe\x0f\xe3\x89\xea>\
+\xca\xb4\x1e\xdd\x1f\x84M\xd7{\xc7\xb0\xc6$k\x8c\xb3\
+\x12y\xa3-\x90\x00\x8f\xe7\xddN\xe7\xef.\xadf5\
+m\x05s\xc0\x18E~)\x01\x8a\xe1]s\x0b\xe1\xd0\
+\xbe:&\x91\xd6*\x8c\x14\xbd\xcb\x09Po\xfe-l\
+9_\x01BDH\xdbT\x85+.\xbd\xcb\xe33\xc3\
+\xa6\xd7\xdb\x87M\xff~\xfb\xb0n\xbfa \x02\x96i\
+t\xdc+l\xd1\x8a\xda|kN\xccw\x1d\xb4\xeb\xc0\
+]\x07-\x00\x13\x11\xe5:\xd7\xd3\xdf\x85\xf4r\x13_\
+\x16HS\xe1\xbf\xe1\x14\xf7M\xcfo|\xf7\xf8\xcf\xe3\
+\xbb\x97\xd6\x1e\xfb\xae\xb4~\x0e\xcc\xd6\x85\x97\x8f\xaf\x18\
+_\xd1\xe2\x8d\x06t\x0d\x97\x0d\x9b^\xbf5\x8b6\x97\
+?>u\xa6\x10WaE\xa2\xc0\xff\xe6:7%\xa2\
+ZT\x8f\x9c[=Q\x88\xa3\x5c\x14\x05#\x1a_\xc5\
+\x80\xcc\x0av\xf9yL\xafU\x01\xaeD\x9b\x89\xcc*\
+\xe0\xe4\xf96|>\x81_\xe3_?\x9f\xe3\xf6\xc4O\
+\x00\x1ac\xe0\xb2e\xaa\xfc\xdd\x8b\x9b-\xc0\x92\xf8]\
+\x02Gs\xca:\xb2\xef%\xbc\xeb1\x96\xf6\xa58N\
+|{Z2\xaa\xde\x11\xd6\xfc\xf5\x9cp\x1a\xcbj\xbd\
+\x00\x88\xed?\xeb@O\xbf\xeb\x03`\xeb\xb5\xcfBe\
+\xb5t`\x02`d\xb9\xee\x8c\x8b\xf8a\xe7^\xc5S\
+*\xd6\x80g\x895\xc6\x81\x0a2\xe6\xa6s\x14\xb3P\
+\x8f9\xe0\x0a \xe0\xba\x89\xd8\xd9/\xa6CaJx\
+n\xe2]q2\x0d\x01\xe3T\xe5\x8f~\x8fh6\x91\
+?\x093f\xaf\xc2\x0d\xaa\xbb\xe7\x04\xd0q\x1f\x93\xc9\
+[\x85\x84\xfb\xcd\xe3\x15+\xeev}\xf2O\xf1\x0e\x00\
+\x05e^\xde)O\xb3\xaf\x00*\xfe\xbf|U^(\
+\x9f\x05\x10\xd0~\xcb8\xba\x0aN>\x0f\xad\x13\xcc\x11\
+\x05\x0fq\x0f RkH\x8aw\x16\xc3n=\xa6s\
+[*@\xf3\x97xD\xfc\xec9\xda\xafZ\xa2\xc5#\
+\xaeK\x01\x09\xf3\x0f0\x9e\xfecW-\x1c\x17\x80\xca\
+\xdf'\xf6\x97\xec\x02\xc2^\xa5\xf2b\xdd\x14\x00\xaf\x18\
+\x03}b~\x95\xec\x81\xdb\xaf\x03\x18T8\x82@{\
+\xf3\xee\xc2}\xec\xb3\x1byyA\xb2Q\xf8\xfc^\xa4\
+\x07W\xe9\x12u\x00@\x1eH\xd5\x22\x00\xb1C\x11\xf6\
+\xea\xef\xd9\xd8~?\x08'\x07f\xc0s\xddnlC\
+\x06\xbaUA\xce\xf16E\xf9\x0a\xea\xfd\xaf\xe4\xcf\xdd\
+5\x03\xa5[v\xf3H\xf5\xf6\x87\x18\xd5\x87s=n\
+\x96\xc0nJ\x06f*qRu\xb7\xc7\x85us\xd9\
+\xb3\x824\x9e\x16\xd6\x10\xeawm\xde\xd5T\xdf\xe7D\
+\xf2\x92aMM\xf8\xc9M5\xdaB\xb1\x00\x8c\xb7S\
+\xa1\xe4\x10T\x9e\x1c,T\xb2\xb5,\x08\xac9B\x89\
+\x9f\x0d(\x00U\xb9p\xbf\x04\x16\xa8g\xaeGE\xc2\
+\xbce\x81\x0cDP\x85J`\x81\x02$1\xb41?\
+\xda\xba\x92\xe7\xc4\xff\x9f\xba\x1e6\x15\xddT\xa1\xad\x0d\
+/\xa1tp\xa2fmW\xbd\xfd\x90\xdc\x14s*d\
+\x5cbDd\x06%\xde\x81Fl\x90\x98J\x22\xd1\xe6\
+\xa8W/R\xd4\x97\x8fi*\xfas\xc2w\x93\xb0\xe5\
+\xf9\xa2\x22W\x85?z\x1c\x9f\xb0\x88\x1fIH\xb7c\
+\xd8\xf4\xff\x9f\x92-\x02D\x93\x92\xca\xb4\xdd3\xacS\
+\xe1\xcf\x03-\xf0\xee@\xbc\x1d\x10\xb4\x07j\xec\x9f\xb9\
+\xb1\xd4\xfe\x93\xdaVTu\x07 \xc8+J2f\
+\xcf%\xd3_\x5c!\xc7f\xae\xf7\x1b\x7f\xc2Q\x0b\x0c\
+\xadK\x15o\x00\x81\xe7n\xffs\x80\xfe]\x00\xc0\x91\
+[7\xd6\x9d\x9f#V\xa4\xe2\x86JgJ\x83\x83J\
+`\xa7W\x97\xdfH\xb1\xac\x12\x1bL\xeap%d\x00\
+\x0a\xfb\x80H\x10\x11-\xc0\x93\x1eC\xe3\xfe\x88\xccq\
+\xfc\x80\x17\x07\x9b\x03\xc5\xab\x03'\xd7\x81\x0ai\xf91\
+\x15\x5c\x81\xd3\xdfM\xe1\xcf\xdf\xb5\xfd\xfb\xdd\x96h\xf9\
+\x5c\x00\x1a~\xd6\xfd\xf6\x9c\xdc\x1f=\xfbY9\x04@\
+\xfd\x7f\xb6\xce\x04\xec\xberj\xe3\xff\xb3\xcf+I\xb3\
+4\x0fJ\xb3\xd0\xa02\x84J\x9f\x14\xa1$\x94\xea\xa3\
+T\x142\x16\x89&\x91\x90\xa9\xc1\x90\x92\x94(\xa2P\
+\x94\xf9C\xa3PJ\x92\x06\x19RI\x91\xa8w\x9f\xef\
+Y\xcf\xbe\x7f\xf7\xb3\xecj]W\xe7\xfaO\xe7=g\
+\xefg?\xcfZ\xf7\xba\xd7}\xdb\xef\x1a@\x83\x0e\xb5\
+\xc4v,v\xaa\xef\xefQ\xa0wF\xa4\x04\x03\x0a;\
+\x94H%@\xfd\x03\x11\xe5\xf6\xbe<\x22\xed\x1f\x8c.\
+\x90H\xf0\x5ckt\xc9Z\x1a\x07\x0f\xcfOx\xbf\x84\
+\xfbK\xff\xcc\x88\xb2\xbc\x9e\x12QU\xdc\x0f\xe9\x0eI\
+\xfb\xb9\x0e\xfc\xee+\xdd9\xddW*\xf0\xf5\xdb\x0a|\
+\xed1\xdb\xbdv\xfcB\x9b\xfcc\xe9\xfe\xde\xa7\x99\x7f\
+F\x98\x98%\x05`\xc3=\x82s\x93\x91\x17\xa8\x9d\x00\
+O\xdc\x0f\xdcSn\x8bH\x9d|D-a2\x01`\
+0\x02\x05\xa0\xc3z\x04\x90\x89\x8e\xfe\x0f\x93\x9f6\xcf\
+\x03be\xdf\xd0\xbe\x19\xe2TA=\xfeGDJ \
+HT\xa1\xa6K\x13\x86\x11\x14k\x13 \xea\xc9\xfa\xc1\
+\xcdB#\x17vm\x81aC\xc1\xa1\xe7\xb5\xdf#\xa2\
+\xa4!\xbbD4\x11N\xdb\x04\x0a(\xe9.-qI\
+\xeb\x8c\x90\x882r`\x1fv\xed\x93\xf3g\xcf\x9f3\
+\x7fNb\x02\x06\xf0\xb4G\xda\xcf\xa1\xfe\x06\xdf\xec\xdb\
+\x15\xa8\x1b\xee\xc7\xf7\xd5\x89~SDZ\xcfQ ?\
+:\x8d\x0aqN.\x5c\x22:6+\x0d6ttv\
+\xcc\xfc\x92v\x03\xdf\xc3\x85\x12\x1dwD\xfc`\xd8\xa9\
+cgJ1\xe7#\xf6\x9f\x12\x11sB\x89\xfa;\xae\
+!\x01\xe8\xfc \x15\x08\x8f\x18\xeeK\x0c\x0av\x89\x8a\
+j_t\xfe\x1d#0\x00\x9czn\xfb\xab#\xca\xeb\
+\x9b\x22\x92v\x0b\x9d;\x9d\xcf\xdd##\x92h\x9d\x0a\
+43\xde\xe4\x8b\xce6\x87\x98&\x09n\xff\xaf\x88\xf2\
+\xfa\x9e\x88r\xff\x9eU\xa2\xe4-\xfd\xad%nQG\
+\xf4di\x00D\x07\xf0\xe4\x88\xa4\xb5\x01pJ\xbe\xc2\
+y\x02P\x89\xd8V\xb8O\x5cW\xf6\x81#\xa6\x87O\
+\xcb9\xdc\xfd\x22\xa2\xbc\x9e\x15\xd1\x9e?\xcfp\xd3\x00\
+P!\xd1\xad\x1eQ>\xd7O\x22\xea\xf3sq\x88\xbb\
+M\xfa\xc9|\x8c\x04,\xd8q\xb8n\xb3\x7f\xeb{#\
+\x0e)\x00`r\xda\x00dv\xb7\xc8e\xe9\xef\x11\xf5\
+\xf3\x0f\xae@\x1a\xbd\x9d\x9d>P\xf8}?\xd0\x0c\x12\
+PlW\x00\x12{\x00\x01\x015\x93\xf7k$G\xb3\
+\xe4\x93\x83\x07\x97\x03\x18\x00f&\xd0\x08\xe3\xfc\xa2@\
+\xe2\xdc\xa2\x11\x03#\xf4\xc0\xa1q\x05\x03\xa3\x1c\xbe\x93\
+n\x92\x1ay\x14\xb2\x1f\x18F\x1d=\xd2I\xa1(\xaa\
+w)\xf7\x87?\xa7\x10\xa5\x00#o\x87IG\xfeF\
+>K\xfeF\xe1\x03\xa0F>K\x07\x9d\x8e)v\xab\
+\xdfT\xa3\x02F#\xea\xfe\xb8\x22\xa1E\xc3\xfd\xda9\
+\x22\xd9\xbbI\x03\xc2\x85\x1e\xe7;\xe7\xb1\xfe\x9dGK\
+4\xa2\xe4|\x86\x8e\xb8\x5c\x90\xfc\xf9\x10U\xa5\xa3\xad\
+\xfb\xec|\x93\x99|\x80\xcd\xb0\x0d\x7fd\xda\xf7\x0e\x8e\
+H\xe76\xe2\xa2h`1*\x22[w3@p?\
+`\xd4\x11`\x00\xa0\x91\x86\x1c#.0\x97\x10\x99\xa4\
+\xe1A\xe3L\xf9 ZeV\xd5\xa7\x0e\x10P^\xef\
+\xc37\xd3\xf9\x02\x03BL23\x15\xd0\xb2@\xac\x98\
+\xeb$\xf1`\x8b\xd8\xd2p\xa2~\xa0N\x19k\x86\xd1\
+pd\xb4\x8fQO\xd9\x84\x9a\x11H>\xc1z\xe3\xd7\
+\xb8Ca\xd3\xca(\x92\x1aF\x00Z\x06\xe4\x18u@\
+\x83\x81u\xcdH&\x9f\x0f`H\xaf\x16\xebF|\x14\
+\x86\x1dL\x07\x80\x16\xdc\xb4`\xd2sn\x93o\x90w\
+\xa3\xf1D\x9d\xaf\xe7q\xce\x9dX\x0a\xef\xb1\x0f;\xf6\
+v\xfc\xfe\xf8\x15\xb1\x18v\xf4\x91oe=\xc8VH\
+\x89&\x05\x1f\x89\x08\x1d{\xa8&A4Z)\xcd\xe0\
+\x93\xd8\x93\xf8\x02\x04@\xfd\x1e\x89\x03V1\x8aU\x92\
+]\x1f\xd4\xfbH\x8bWM\xaf\x14\xc2\xfc<\xec\x95P\
+\xe7\x0dB\xfc\x16\xa9\x90\xe7\xf3\x03|\xb0Q\xf2\xdf\xe6\
+\xd5\xf8m\xe8\xc4l\x99\xa8=\xcc\xe2\xa8 .\xdfa\
+\xb0\xd1\x10BZ\x96\xcb\xa0\xea\x8f]\x0c\xb6.\xea\xbc\
+\xc7\x04_\xcc\xf0U;\x9d\xfd\x92\xfa\xedE\xb2\x11z\
+\x916h\xd9\x9ax\xf6\x98\x8e\x82|\x85\x83_Pm\
+\x88@bUxx\xe1)\x81\x83q\xe0\x99@\x12?\
+\x0e|\x16 \xf7\x99\x19h\x1e\x14\xee\x03\x1d>\x0a#\
+\x01M~\xd0\xa1\x98\x8f\x0b7-\x5c\xdb\xbc\xa0\xc6\x8e\
+J\xf9\xd8\xae\x86N\x09\x1d~\xd6%\xeb\x89\xffx\x80\
+\xc7v\x7f\x00\x04\x00a\xcc\x96\xf1\xe0\x01l`\xcb#\
+\x91\x13\xd4\xa7\xeb \xc94m\xbc7\xab`\x0b3\xa2\
+cT\xe0\xfc2]\xbf\x80Y\xeen\x1d\x8a\xfe\xd8\x88\
+JU\xfeB\xf8\x1b\xf7\xcf\xed\xb7\xed\xb7\xad\xb6\x83\x1f\
+\x9d}\xb4\xa9\x0b3\xd3\xea\x04J\xb3\xf5tHg\xeb\
+G\xb4\x83\x89\xd1\x9e\xf1\xc8\x00\x89?\x85\xbe\x19' \
+\xcel\xe4\xba?>\xe8\xe8\x140\xcb\xcb\x81\x04\xf5\x8b\
+\x82\x87\x7fOg~\xa9A\xbb\xc3\xaa\xe2\x14\x02\x1c\x88\
+\x00H\xdc\x1f\x80\x00\xfe\xbd\x0aS\xfc\x9e\xf1K5\xd3\
+\x82\x7fG\x01Ka\xc1\xfa\xa4 \xa6\x80\xe7\xb9g\xff\
+\xa1\xb32f|\x90\x10\xf1\x1c\x93\xf0#\xb2\xa2\x0e\xa5\
+;!\xcc$\xeb`\xb0\x86\x06\xcf\x19\x087\x093\xa3\
+\x00t\x1c\xf8<\x88\xfc\x1c\x1b\x91f\xcc)\xb0`\xde\
+0\x02 \x0d\x0f?GtR\xa1R\xeb\x00\x0a\xa2j\
+0aH\x90\x0d<\xd2\x19!\xf1\xe2\x80\xe4>\xb1\xef\
+\x85\xa4\xdc\xae\xa9\x80\xe3@\x12U\xd4\xeb\xb1\xce2\xb5\
+\xefGBm\x91\xcb\xd5\x22R\xc7\x9a\x0e;\x89:T\
+S\xee\xef\xa9\x03\xa3d\xf6\x9b\x88\xf4<r\xa0\x81\x8c\
++Q\x80\x81\xe0\x82i\xa4\xbd\xc2\xf3\xdb\xbf\xac\xdf\xa5\
+/\x85\xe6t\xb3\x88\xf2\xbaq\x84\x80\xd7\x03\xa5N\x1e\
+\xd4\xd8\xb9\xc9t2\x97\x0e\xd4\xf8t\xc7\xa5\x82\x82\x8e\
+\x13\xc0\x06#G\xcc\xda\x8a*\xec\xe7\x83\xfbM\xc1r\
+\xd5\xa0\xf5\x82\xb6\x8b\x13w\xd4\xb3Q\xa7\x86\xfa\x08e\
+\x9b\xfb\xfa\xba\x88\xb4\xce\xa1F3S\x1e.\x13G5\
+\xb7\x89\xbaK^\x99\x80%\xd6#y\x00\x1d\x19\x00W\
+\xa8\xc5JTl\x8f\x05`\xa6\x0e\x06\x8c\x01\x9f?\x5c\
+\x17%^\x9e\xb5\x97\xda\xbfG\xc1\x9e\x1c\xd1^\xfb\x8f\
+G\xb4\x84\xaf\xdb0\x22\xd9\xb0j\xbdN\xd7\x8bH\xfb\
+\x03\xda&0\xe7TpN\x9f:}\xda\xb4\x9c\xcb\xfd\
+\xa6\xfdS\xfaMew\xbcr\xfb\x9e\x8c\x84Hz\xa0\
+\x89\x9bI[\x87}\x0bJg\xb7c\x89\x17'Q'\
+Q\x8bg\xbbFT5\xfa\x0b\x83\xb9\xd6\x1f\x1c\x91\x18\
+\x12ZO\xd6Z\x82\x09\x02\x10\xaes\x94D\xd96\xbc\
+b\x1a\xa0\x86\x1f\xa7D\x9c\x13\xa6\xd2\xbf,\x22\xed\xa7\
+\x00Fh\x1a\xe8|\xe4\xfaYK\xe8'\x11\x9ay\xbf\
+\xab\xf9\xc0\xbbc\x0f\x13Pv\xcd\xb8:t\xaf\x8aH\
+\x9d-D\x82a\x86\xd0i^1\xa2|\xdeC\x22\xca\
+\xeb\xdd\x11\xe9|\x8a\x0e\xec\xb7\x92\xfb\x8d>\x1f\xa2\xb6\
+\xfd\x07\x22\xca\xeb\x91%\x82\x0a\xfe`\x89y\x8d\xb2\xbc\
+/\x158P\xd8afA\xf1\xfe\x83F\x9e\x0084\
+\x82\xd8/\x17\xa1\xfc\xeeY\xe5\xb2\xadVb\xd5v=\
+\xfc\xdc1\x93+\xa6\xa4\x81a\xce+\x15\xb8\xd6t\xe0\
+\xfc9N\xd4\xe8\xa3fG\x87\xf8\xdal>\x22=\x97\
+\x8c\xf20\x92\xb4\xf7\xe0\xc2Tv\xf1!\xcf\x0a@\xee\
+\x1b\xed\xf9\x9b\xec?9\xa02\x1a\xd5\x88\xf1>(\xe0\
+\xd4#8t\xd0\xd5\x08r\xc1\x84;\xc0\x99\x11\xa9\x83\
+:\xd1y\x01PN#\x84\xf3\xef%\x02\xac`\xae\x88\
+\x89\xc1u\x9e\xad94\x16\xca\xaa\xae\xa3%aV:\
+I#\x8e.\xc4\xc9\xcb\xa0\xe8\xd3\xe8\xc06u\xa7\x81\
+y2\xdbE\xcc\x0c\xceA\x18tr\x87\xb0]*\x85\
+\x0e\x85\x13\xf9\x07\xf7\x85\xc6\x00L\x01\x15\x5ch.\xb1\
+o\xcd\xde\x1a\x91\x1a\x16\xdc?i\x13\x18XEt\x15\
+\xc0\x17QT^\xa1\x9a\x03\xec\xe2\xe7N\x07\x9c\x91b\
+\x0aT\xf2a\x80=F\xcc\xc8G\xd9\x97\x95\x7fZ\xdd\
+\x1f \x0f\xb19\xf2/F\xc6\xc8\x9f\xd5\xa0p\xc3\x89\
+\xe7\x14w(\x80B\x80\x22\xb4\x07\xc8\x03\xf8<\x00\x01\
+4x8\x9f\xd9_\x006\xd8\xe7\x016\x18Y\x00\xd8\
+F\x0c\x93\xcf\x83m\xb74\xc0\xacY\x02p\xc4\xfd$\
+/\xd0\xfd\xf3\xfb \x8aG]@\x03\x89\x0e\xffX\xb3\
+\x0c\x0d\x04\xe5\x8f\x0608\x8f\xb3+\xdc\xad\xa9\x1e\xa2\
+\xb1\x00\x85\x1fQc\xf6oF\xefp\x17\xe3\xb9!O\
+\xc0\x0eT.9\xd8\xe3Z\xc4\x90\xc2\x1d \x8b\xfbO\
+\x1d\xc5\xf7c\xbd\xc2\xe8\x80\xa9\xc1u\x14\xd3\xcf\x0dK\
+D\xa1\xa9\x83\xf8\x8fz\x1e\x06\x87\xce\xad9?8\xfc\
+\x05^I\xa0\x99\xe5\xcf>\xf7S]\xf0.\xfd\x80Y\
+5@k*\xfa\xdc\x80\xd8f&I;\x80D\x85\x19\
+~\x0ap\xec\xfd\xd4\xd9g\xd6\xce\x80\x01\x89!\xef'\
+j\xa0\xff\x83\xb9\x80V\x01\xa3\x07\x00\x09P*\xd9`\
+\xf8u\x94\x03k&\x95V\x16:T\xf51c@\xef\
+\x0b\xa5\xde\xd7\x0b?R\xfc\xc5c\x81\xbf@\x09\xf3\xfe\
+iC\x19Q|fK\x0f\xfe\xa1F|\xf4 \xf5\x1f\
+\x89\x90\xf8\xcd\xb3\x9a}T\x7f\x5cD\xa2\xf6\x88J\xe7\
+\x83\x00\xca\x14Tn\x90w\x0e\x90\x8f\xca7\xfbGR\
+\xd7\xa4\x80\xa7C\x87\xba7\x1dR(\xd8\x022\xf0\x11\
+G<\x0a\xf5O\x17\x1e:h\xecs\xcc\x0c\x9b\xa8\xbb\
+\xf6\xe9\xa5\xc0\xe7\xc1\xc5fD>\xad.x\xc6\xd44\
+\x5c%\xe8 \xd3\xb9\xe7\x15\xea\x1a\x14\x1d\xd6+\x08>\
+\x0f\xc6]*0\xeeP\x01\x09R\x0a\xb0@\x87\x8e\xd9\
+\x19f\xda\xd4\xd17 \xb5\xac\xd6\x13\xe2c7\xc8^\
+\x8c\xf5\xaf\xe7\x08\x06\x88\xed\xd5>19\xbe\xfa\x83\x9f\
+=l\xect\xfa\xfb'G\x94\xd7G\xf7\x8b\xf4\x8b\xa4\
+\x8e\xffS#\x1e\xda\xb9\x07\xd8\x99=>B\xa2O\x87\
+\xa5\x0e\x1f\x14#Dd@:AN\xd9p98\xa1\
+fbW\xc3:;sP\xe7\xf5\x8c\xe9\xc9\xb2\x9f\xc2\
+F\x87\x8d\x8f\xce\x01\xaf\x14\x12l\xd4\x00\x04l\xb4l\
+\xfc\xcc\xdcA\xdd\x07\x00\x00\xf9\xe7\xfeq\xf0\x03\xb8P\
+\xa8C\xd9\x97\xbd[\x10\x7f\x83\xfa\xeb\x03\x90\xcf\x07@\
+\xc5\x8c(\xa3M:\xc8|}H`8\x08Anw\
+\xad\xd1\xfc\xdd\xd5\x99\xf1\xf3Bg\xb1\x1b\xcd\xca\x8f\xfd\
+k\x11\xf9\xa2\x83\x0a@\xc4\xfe\xa4\xc4\x81N\x9d\x0b_\
+\x010\x1e-\x80\x82\x07\xc2\xcd\xba\x83\xba\x86_3\x00\
+\x17\xf7\x85\x99wi\x8fXu\x99\xf5\xc3\xf7\xd6\xf5\xe7\
+y\xb0\xaf\xf93#\xeas70+\x00R@\xb6I\
+\x1c\xf8\xdePr\x11\xcd\xc1\xd7Vj\xfdvK\x80j\
+\x0as\x00\xd5Z\xed\x03t\x14\x0c\xe4Q\x982z\xc4\
+\xef\xb3\x7f\xb3\xbe\xe8\x94\xd21\xb9c\x98=-i\xda\
+0\x83wa5\x02l\x1a\x01\xcc\xaa\xd2\xb1\x1d\xfb\xff\
+B\x8d\xc5\xf7X\x85\xe2\xec\xee\x88\xd4\x91\x81\x02I\xa7\
+\x04\xa0\x09\x95~ur|\xee`3EBI\xa7\x1f\
+\x8d\x16\xc4\xe4$\x9e\xe5\xd9X\xf6W\x00+Q\xcf\xbb\
+\xf7\x958Z\xebk\xdb\x04\xdcP\xf0K\x1b\xc0\xda\x0f\
+t\xd2H\x88aV\x89\xba\xefN8\xa3\x03*h\xcc\
+L@D\x0e\x00\x99\x04\x89\x84N#\x09^\xff\xda\xfe\
+gWG\xa4Q7\x00\x02f\xa5u\x8e\xf9\xba\xdfR\
+\x0d\xe5\x06\x11\xc1R8Mo\x8dh\x85\xe7\xfc\xdb\x22\
+\xea\xfd\x19\x5c~^V\x8dZ\xadQ\xe4u\x1f#y\
+\xc7\xb6\x19\xf9\xee\x95\x11\xe5\xf5\xcf\x11\xe5\xf5\x9e\x88\xf2\
+\xfa\xfb\x08=\x8f\x874\xbb\xdfz\xbf\xff\xae\xe7\xeb\x86\
+Z\xc8\x94H\x9d0F%\x10\x85D\xa3F3\xd0\x14\
+\xaa\xa6\xec#~w]D\xd2^\x10\xa3c\xbarD\
+\xd3\xe4a$\xcb#\x15r\xef\xf1\xc8\x86\x00\xb4\xfeu\
+\x11-\xf1\xee.\x88(\xef\xf7\xbb\x88d\x07\xbciD\
+\xa3\xf4\xd3\xe1F\x83\x03\x06\xa2\x19?\x14<:\x17\xbc\
+?@Q\xdeK\x9a2\xb7\x0f\xeb\xcd\xa2\xb2\x02\x02\xfb\
+\xed\x22\x1a\xa0\xd6\x9f\x18Q^\xcf-\xf1\xb5\x968W\
+5\xff\x95\xd2:\xd2\x08`]\xd7\xdb\xa5\x11\x171$\
+\xbaK\x22\xd2\xac\xed\xcb#\x9a\x9a|e^\x1c\xd5l\
+'\xbb\xa5J,\x99\x98\x03q\xd5N\xd1\xfb\xbd\xa7\x01\
+-\xcek\xd8o\x11K\xd4\xba\x9b-T\x22\xd6\xeb\x96\
+\x11I\xd4\x8e\x82v\xc7\xa1\xa0\x9d\x9e6\xfd\xfc4\xf6\
+\xf1\x1b'\xbf\x9b\xe4\xf3\x18\xc0MyN\xed$\xbe\xb5\
+^\x9f\x81)\xa6\x8e\xbe\xf794I\xa0\x9cs>a\
+\x8b\xcd9;\xb6k\x86)\x8b\xea;\xea\xfe\xb8=\xc0\
+HC\x8b\x82|H\xa3\x9a\x93S\xb5\xdf\xc0p\x05`\
+$_\xc2M@\x22{0\xbe\x00\xa6\xddp\xa0\xf0\x81\
+*O^\xc7s\xae|\xc1#\xb8\xcc\xf8s\x9e\x93\xcf\
+q\x8e\x93\xa7\xb3N\xc8o\x04\x5c\xbb\x93\x8fK\x0c\x05\
+7\x0d=\x00n\xcec\xceS\xf2K\x80\xba\x17JT\
+Z\xb6\xa2\x06\x04\xdf\x15\x91\xae\x07\x00%\x1dv\x1aK\
+\x00\xfb4\xb6\xa0\xf8\xc3\x98aV]#|.\x18i\
+\x900\x83\xcf\xc8\x04\xd4\x7f\xf26\x18\x8f03\xc7\xae\
+\x1db\x04\x07\x1f\xa42B\x0e\x97-\x22\xd7\x0f \x97\
+\xf5DC\x02F\x023\xed0)h\x0cR\x08\x93\xbf\
+qnQG\x91\xdf,\xac\xfb\xc7\xfd\xe1\xbc\xa1\xf0\xa6\
+\x90'_\x14\xb0df\x01\xcc*\x98#\x00\x11c\x11\
+z\x1a\x8a\x9c\xcf\x88\x83\xc3\x88F\x13\x0a\xad\x8c\xab\x22\
+\x12\xa0\xc4h\xb3\xeaQ\xcf\xec\x93\x97\xe6\xf3\xe8\x96\xd4\
+\x90\xc2\x85Fy\xbf\xef?\x85;#\xc1\x88\xf0\xf3\x9c\
+\x02\xd0\xf1\xca\xf5\x811\xca\xf5\x03\xb8\xa7\xbe\xc2e\x89\
+Q\xd3\xb1[\x00\xd7\x15\xc0A\x9fo\xee\xbfT\xfc\x17\
+~\x18\xbfa~\x7f\xe1z\xcbZ\xc1\xcb\x05\xa6 \xe7\
+\x07A\xdd\x8f\xaf\xf3\xb7$\xfa\xc7\x9f\xf3\xc0\xb2@@\
+ %\x8eWUo\x97\xd4\x82Y?\x15\xce,L\x16\
+\xc4#\xe4\xf7\x0a\x03!\xde\x15\xca\xf0#G\xa3\x06K\
+$\xdb?\x10Jfi\x11\x17\x04\x90\x90\xdfp\x85\x07\
+VM\x80\x05\x0br<\x1bE!Bg\x11UM\xa8\
+AR_v\xc1K\x22,\x8a\xef\xec\xfe\x88:\xe3}\
+A\x7fACT\xfdsTHx\xc6\x8d\xc4H\x94p\
+f\xc0\xad\x02{\xce03d\xbfb\xfc\x8d%B\x16\
+}\xe5\xe8,\xf7\x8bE\x94\xb7?7\xa2\xf9\xffr\x90\
+\xba\xb3\x88\xed\x1b\xd7\x8d\x03\x92Y\x1b:o\xf8k\x0a\
+\x91\x9c\xfd)\x22\x1d\x1cP\xbfH\xa4)\xdc\xa0t\x03\
+4@u\x85:\xcbu\xe4\xdfi\x03\xb3z8\x1b\x00\
+\xb3\xc5\x9bE\xa4D\x9b\xfbv\xc3\x7f\xab\xe4\xce~6\
+l\xa8\xd8\xa9X-\xf7\xc2a\xb4\xc2vxA\x15\xbc\
+6\xb9$P\x18RH\xad `\x8a\x83\x04\xbb56\
+\x02\x12\xfb0\x05\xbc1\xad\x13\xa8\xdf1\xdb^\xd6}\
+\xf7\xfd\x88\xf2\xb6\xdb\x0e\x0c\x00\x8by\xb1^\x84\x08\xba\
+\xd3$\xaa\x98\x0f4\xb4\x224\xfbo*2b\x7f \
+\xe8\x88\xcc\x81x\x82\x80r\x00S\xb0r`p\xdd~\
+\xa7\xeb\xf9G\x1d@\xf3\xda`x\x1e\x01hx\xbeI\
+P(\xdc\xb0o\xdb\xa6$d\xdb$J\xa06h\xcf\
+\xda3\x9b\x88z*@\x0b\x09\xb4:R.,\xf2\xe8\
+\xd2\xc2m\x83\xa5\xa00\x10\x00\xe0\x070\xc4s\xcb\xcf\
+a\x94GL\x1ak}\x8cUf\xa1\xf2\xe2\xd7\xcd\x9f\
+\xd3\x11f\xe3\xdf8\x22\xed\x93\xec\x0bt\xfe\xd9\xd0\xe9\
+,@\xb5\xc4\xaf\x97B\x10j\xbcf\xa5M\xd1e\xc4\
+\x06\x15\xf4\x91\xc8\x92\x19\x07g\xa8S\x8b\x9d\x8f|m\
+]h\xbc!\x22ur\xd5\x01\xf4\xac\x1b\x9d04D\
+\xa4\xa9\xc1\x9f\xf7{F$j\xa1\x0a_3sP[\
+\xfeUD\xf9\xfb\x1f\x8ch\x1a\x18\x16E\xa2\xc3\xc4L\
+8\x22X\x00/\x9a\x05\xf4\xbe\xc1\xba\xa0\xf3 Q1\
+\x12a\x8f\x00i\xbd{\xf6W\xe7\x9b52\xce\x1e\xa8\
+\x86!\x8d\x16L\x98\xee\xa0\x88\xf2\xef\x97\x8cH@\x0e\
+b|\x14l<\xc7<G0\xb3\xa4\xa2M\x82I\x87\
+\xb3\xf6\x95?\xa5\xfb\xbcc\x1a\xb5\xe2}\xe9\xb4\x91\x88\
+J5\xd96q\x88\xf9\x91\xb8\xb3\x1f\xe1o\xcd\xe8E\
+\xa8\x04\x1f\xde\x0a\x13\x7f^DX\xd9\xa7H$\xf8}\
+\xd4\xe8Q\xf5\x1f3k\xee\xd3s\x0e\x00\xf78\x9d\x93\
+\x9c\x8f\x9c\xa7J\x84\x9d\x18\x02\xd0\xc0p\x83J\x0a0\
+\x8a\xdd\xe4\x8d\x11\x09\xd0\x14e\xb9\xbf.\xa2<\xe6\xbf\
+\x89h\x09m\xed\xdc\xae&\xa0\xa3\x14 \xd3\xf3J\x94\
+\xf56\x7fb\x89\x93\x1a\xd0dun\xeds\xb6\x89\x8a\
+~i\xd9O\xa7_\x8b(\xaf'E,\xa8D\xe6\xa0\
+2w\xff\x8aH\xee\x02\x01\x0c\xad\xa5\xfbp\x90\x00\xb8\
+m\xb5\xee\x8fN#\x82\xa1\xb1\xf3\xfc6\xcbo\x00\x96\
+\x19Z\xce;\x125\xf6\x0b\xdcx\xb4\xeelc\xa6s\
+\xb0\xdaX\x9e\x9e\x0a.\x01\x80\xfd\xdf\x22\xd2u\x94&\
+H\xb7WD+\xbc\xba\xf3#\xca\x9f\xbf2\xa2\xd9\x17\
+bs7\xbd&\xa2\xbc\xdeT\x22f\xe5\x8f,qD\
+\xea`\x22\xee\xb8{D\xf2\x11\xd7\xb9\xdc\x1f\x1f\xd1\xce\
+\x19\x8f\xac\xcd\x86\x11%?\x7fzn\xe9<2\xc24\
+\xfb\xdf\x08i\xcf\x9c\x9b\x1a\x03\xa8\xc13\x8a\x07\xb5\x17\
+1`\x01_\x16%>\xa3D\xd9'\xbak\x22\x94\xbf\
+\x94\xfcc\xfe\xe2\x88&\x1a\xd9}+B\xc0W\x00\xa5\
+\xcbD\xa4\xfd\x85\x0e,\xc0\x01nM\xcaO\x85\x93\xe5\
+v\x00\x00 \x00IDAT\xd0\xd2a$\xa2\xbf\xa8\
+\xbf\xb8\x8f\x91\xa5]#\x92\xc8\xa1\x00/l/\xbb]\
+\x22\xca\xeb\x92\xb2-D[G\xf6`\xee\xc0\x22b'\
+M\x09\x8b\xa0.%\x11X\x01\x12\x1e\xcd\xd3>\xd8\xed\
+\x17\x91l\xa8)\x08\x19\xb5b\x9d\x8a\x19j\x00\x91\xe7\
+~;\x15\xbe\x9f\x16\xe3Hb\xaa\xe5\x8c\x1c\xce+\x89\
+&\x96\xfd`8\xef\x7f\xaa\xc2\x0fF\x06\xcc_\x89\x9c\
+\xda\x86\x8e\x99z\xce=\x80Y\xea\x8c\xe7\xebs\xed\xa5\
+B\xfa\x18\x8dd\xb1_Q\xd0\x93\x17\x8f5\xc9\xf8\xf5\
+\xa8\xd3\xe9\x82W\x85\xac)\xe6\xca\xf7\xc8\x07f\xfbF\
+\xb4\xd1\x06\xaf3\xec\x07\xc7v\xc1\xeb\x97\xab\xbb^\xda\
+\xcf\xb1\xd7C\x94\xf3\x8b\x11\xa9!\xc09\xc1\xa8\xed\x8a\
+\xa3\xbc\x11@\x89\xbf\x07@\xcb\xe7 /\xa3!\xc3\xf9\
+\xc0\xf7\xe6\x9c\x822O\xbe\x0d\xe0\x8a=\xa2\x5cE\x18\
+QpA(\xc0\xcf3\xf7\xb8\x0d\xb0\x0e)\xe497\
+xN\xc8o` \x8c\x1b<cJ>\xbf\xdf\xeb\xfb\
+\xf0\xefh\xf4\xc2\xe8\xd1\xf3\xe8\x82\x9d\xf3\x9e\xfbO\x01\
+\xcf}fT\x11\x80\x8bu\xc0\xdf\xa7`'\xcf\x050\
+`\xfd\xd10\x91\x8b\x9aG1\xc8\xfb\x00T\x00\x9e\xf8\
+\x1e\xb8]\x01\xa0\xc1,`\xc4\x00`\x80\xff\xf8\x1c4\
+Z\xc5\x00\xf3sJ}\x05p\x03s\x1aM\x04\xea\x1a\
+\x1a\x1a\xb8\x00\x90\xc7\xb3n\xc6\xc0\x1f\xe7\xb8\xcek\xce\
+\x81\xb9Z\xd6-\x97\x0aj\x1e\xa8x\x8c\x17\x7f\x98\x07\
+\x8d\x02\x1bf@\x95\xb6TA4/\xe4\xe4\xfeD\xbd\
+\x08\x84\xfco\x0da\xa9\xe9\xfa\x83\x89A\xc0\x85\x0f\x84\
+e5un\x9e\xf80\xb3\xf9\xccP\xf0\x85\xf8\xb9\xd8\
+\xfeQ\xe8\x8f5\x0b2\xb0\xb1\xc8\xc3\xa8\x5c\xf2\xeb\xb1\
+x!\xbfO\x02\xca\xbf\xe7\xc1%\xa1\xe7\x15j\x0cj\
+\xdf\xd8\x22\x91\xe0*A\xa6\xd06\xe2\x0b\x02x\x93\x1e\
+Df\xdf\xa1\xbe\xe8\xc63K9ytDJ\xf8\xa1\
+\x9aj\xe6\x17\x8a`=6v\xab\x09\xf0\xb0a\xe0\x1b\
+Mg\x08\xea\x9f\xeeK\xf7\xba\x88f\xc3d[=\x89\
+\x8aAUu\x07\x0c\x9b,\xa9\xc6CAw'\x97Y\
+\x5cf\xcd\xe8\x0cQ@\x89\xc2h\x9fp\x89\xf79\x91\
+\x94\xd8\x96\xfd\x82\xa1&\xa2\x22J\xe2K\xc1HBM\
+\xa2\x07e\x1bJ?\x1b(\x94/uN\x99\x89\x7f\xc8\
+\x03\xc6\xf7\x94/\xad\xbf/\x07\x17\x1b\xdd]\xda\xd0\x01\
+\x04\x00\xba\xd8\x80\xe7$N\xf5\xdb\x127$\xe6\x08\xcf\
+\x95:4\x93\x0d\x06$\x1e\xa4\xdb\x94Z\xd4\xbb\xd9\xf0\
+Y\x97$\xee\x00\x03\xf8\xa9#\x9a\x86Z<\x09\x02\xdf\
+\x87\x99$\x0e\x1a\xa8\xd2\x14\xd2 \x8e<g\xbc\xb2\xa1\
+\xae\xad\xf5\x8e\xff9\x1b3\x9d^\xde\x87\x83\x8e\xeb\xb9\
+\x8a\x9e#\xdc\x01\xee\x19\xec@}\x1dy\xce8\x08\xd9\
+\xd0\x18\xe5\x00\xd9\xc5\x86\x05\x0a\x1c\xb3\xf8/\x88H\x1b\
+:\x00#\xeb\x91\xe7\x94\xef\xc7\xe7#\xb1\x00\x08\xc0\x9e\
+\x0e_x\x0e<f\x11)\xfc\x94\x88\xbb\xf0g\x9f\xe2\
+@\xe2>1\xab\x0b3\x08\x9b6\xee\x1f\xcc\x1b\xde\x17\
+\xc0\x8b\xf7\x07\x00\x05\x11\xe6\xa0c\xbd\xc1p`\xbf\x00\
+\xc8C\xbd\xfa\xf8\x81\x1a\xea\x0e?\xb3\x80:(\xe8X\
+v\xbbE\xa4\x8e\xac\xec\xa1f[E\xa4D\x06q\xb3\
+H\xb4C=\xfb\x98\x88\xf2q\xae\x8fh\x80\x19\x05\x8e\
+\x9fc\xa8\xdf$TJ\x18\xfb\xf3\x22\xd2\xfd\xa23\x01\
+\xd3\x86\x11\x04\x80b\x0e0:\xd0\x88\x9e\x82\xe0K\xdc\
+\x09ui\xfb\x12s_\xf0\xb3\xc6>\x90\x91\x80\x0fE\
+\x94\xf7\xb9dr\xe9\xe4\x92j?\xf6\xc3\xae$>\xdd\
+\x9d%\xd2>9\x99\x8bh\xcf\xa3\x99\x0b\x02\xa8Y\x97\
+\xbc/\xcfe\xfd\xe9w5\x0a\xfal\x9d\x88\xf2\xbaW\
+D\x03\x8c\xcc\xa8b\xdf\x82r8\xbe\x9e\xeaX\x03\x04\
+\xd4\xfb\xfefQ%\x8fN\x89/\xd7\x15f\x05\xe70\
+\xa2q\xcc8k\x1f\x86\xba\xda-\x13\x91\xf6\xcb\xd8\xe7\
+\xeeJ\x1a!\x00\xb2J4,\xbe\x0a\x90\x87(-3\
+\xed\xeaH\x9aI\xc2\xba\xe2\x5c\x94\xef\xb9\x13;>\x8f\
+DL\xe7C\x1c\xbd\xab\xb6\x8e%T\x80\xcd5\xdb\xbf\
+Z\xc8\xfe\xa3\x89z\xa2\x05\xe0\xd1%\xce\x1d]\xe7\xe9\
+v%J\xa13\xb7BD\xf9\xf5\xf3\x22\xca\xeb\xa7#\
+\xca\xdf;!\xa2\xbc\xef\xa7\x22\xd41\x0e\xca\xf6\x99\x11\
+J\xa0\xf6H#5\xd8`\x8a\xd1aqQ(\x97\xba\
+.$\x88<\x8fht\xd8e\x00\x80\x82u\x1e@\xdd\
+aI\xc4X\xeeD\xa6\x06S\x98hV\xb7{{D\
+z_1\xf6\x18\x05\xe3s\x1a\xf8\x17\xb0\xd0mUb\
+kQ\xf8\xbf\xa8\xe7\xf5\xe3idG\xd4\xd9\xfeS\x11\
+M\x8c\xb8??\xa2Q\x8b\xfbK\x22Z\xc1\x0fc\xb1\
+\xce\xf0\xdf\xda4i\x10\xf9\xab\xee\x19\x1fM\xfb\x0bb\
+\xc9\xb8QD\x99rp*\xbc\xe8\xa0\xa1\x99\xa1\x91\x8d\
+n\xcb\x88\x06 vG\x97x\xaf\x80\x89\x13\x9a&\x14\
+\xea\xd8\xd5F\xec\xad\xc9\xde\xf1\xfe\x88\x94\xb0\xff\xb4\x96\
+\xb6\xc3H\xce\xabS'W@\x05@\xbd\x81\x8eO\xcf\
+>\x13\x0c\x08\xd4\xfcK\xf61\x00\xc0\xa1\xb8\xf2\xe7\x06\
+\xd0t\x7f\xea\xfe\xd8\xfd\xa9\xb9\x1d\xd4\x7f\x7f\xa0\xa8\xf5\
+\x9fK\xe7\x1e@\x1b\x0d.1\x94j94\x88v/\
+\x08[7\x8bu\x9e?9o2\xb8\xf1\x0c\xf9\xd1u\
+r\x99\xe2\xbca&\xfeZ\x8d\xac\xbda`\x16\xcd\xb6\
+\x99=\xa7\x8a\xdf\xe1\x9e\xf0\xcf\x88T \x1d\x5c\xca\xc7\
+\x83+3\xf0\xddU\xf4\x94|u\xdd\xe1>\xd5*\xe0\
+\x11u\xbf\xaa\x9aL\xa6\x98\x93G\x03xQ\x98\x91/\
+\x8c\xdc\x05x.m\xdf\xa6\xf3\xdc\xeb\x1c`\x84\xf7\xa5\
+\x90\x1a\xdb\x85\xf3\xe7\x8c\xf4\xc2\xe0b\xfd0\x92\xa4\xe7\
+m\xf6\xa2\x88\xc6\xd80P\xc1\x88\x1a\x05:\xff\x9e\xef\
+\xf1\xa4RF>\xa9\xe5\xf7u=\xef\xd4\x18`h3\
+X\xa3B\xe7\x1d\x0c\x01\xbb&12\x86\x0b\x1b\xd4o\
+~>?\x8fB\x9aF\x0by\x09@\x22\xea\xf1\x14\xce\
+\xec\x7f,p\x1a\x0a4\x068\x0fa\x1e\x90o0\x9a\
+\xc6\x08\xb2D@\x9d\x97\x91\x87\x92\x873\x1aC\xfe\x07\
+\xd0\x02p\x00\xd0+&\xb3\xb5v`\x10q\xfd\xa0\xb8\
+\xc3p \x8f\xe3\xbe\xc2\x0c]\xd8\xdaR\xc3\xf7g\x1d\
+\xf0\xf7)\xd0\xa9\xefX\x1f4\x18a\x92\xa0\x9a\xcfu\
+E|\x14\xaa?L\x0d\x0ai\x0ak\xae\x83\xd6\xa3\x19\
+\xa3\x5cg\xd6\xf5h\xf6\x9e\xbc\xdf\xa3!0\x22p\x9b\
+\x82\xd1\x89\x06\x19\x22\x81\xe4\xd3\xac?\xf2iF\xc8\xb4\
+\xdf\x98\xe1I\xc3\xef\xcf\x11\x0f\x03\xc0pn\xeb\xf9\x9e\
+\xab\x1fs\xb9\x84 \x8d\x10\x11S\xeb%J\xf2_T\
+\xfc.mT\xd1\xc7\xf8O\xb2\xdb\xb9\xb5:\xa6\xb7\xc4\
+\x9e\x07?\x96\xf3\xbf\x13\x100\x9eQ\xe0@#\xe1\x03\
+y!a\xa7c\x06\x15?\xc4\x05\x97J\x17\x1c5\x7f\
+T\xaf\xf9\x1e#\xdb\x8eZH/\xaa\x9f\xb3\x9e\x0a|\
+\xfe\xde\xa2\x09\xc9\xc4v\x0c\x95aT\xd0\x03\xc7\xdc$\
+Q1\xa0\xd2K]\xd66\x82,\x0c\x16\x10\x1b\x0a\xd7\
+\x8d\x8d\xf6n\x15&\x5c\xa7\xb1=\x073g\xa2\xc6\x82\
+\x08c\xb7\xd3\xdd\x11Q\xa9 C\x01\xa0\xd9)w\xf4\
+\x8f\x8fH\x05\x13\x9d\xc3\xcb'WL\x22Q<K\xa2\
+c$\xf8\xa2\x06Y\xf4\x0c\x15Kl\xed$6\xd7\xff\
+'\x22\xcd\xba\xd2\xb9\xe3\xf3\xab\x13\xe4\x03\x16\xaa#\x1d\
+:\x18\x04\x12=b\x86\xd0\xd4\xcbHL\xb6j\x1b\xb9\
+\xc5n\x98\xa9\xc1=\x80Y-\x1e\x10\x1eT\x0avf\
+\x1a\xa1\xf2\xa3>\xcb\xfa`\xd6\x86\x99$!x\xf8\x8d\
+\x9a\xfaC\x87\x8e\x19\xbd\x0d5\xc3\xc9\x86C\x87\x83\x0d\
+M\xee\x02.\xc8X\xa7P\xc7\xa1.\xc2\x14\xc1\x17W\
+\x8c\x91\xee\xe9\x11\xe5\xfd\x96\x8ah\x89\xbc'o\xb0K\
+a=Q K\x0d\xdb\xa3\x01\xfc\x1a\xbb(\xec\x8a\xd4\
+Qgv\xd2\xe2\x86P\x11\x1f\x94\xe6\x06\xeb\x10 \x85\
+Y%6\xc8\xd1\xc8\x83\xff\xa3\xd3O\xe1u\xc1\xec\xc2\
+Z\xb8\xaf\xa2Q\x1f\xc4a@\xe6U@Y,\x8f\x7f\
+?\x1e\x09\x80\x91\xa2\xfb\x01E\xce6AZ\xc7\x1e\x09\
+\x80J\xab\xf5a\xad\x0d\xa8S \xc3\x14\xdc\x00$\x00\
+\x02r\xcfpA\xc6:\x80\x12H\xc7\x9f\x7f\xc7>F\
+A\x0bP\x05U^\xc0\x80\x993$.\xa2\xfc\x19\x90\
+\x02x\xc0~\x8a\xeb\xcf\xf3\x05#\x85\x83\x93\x84\x0b@\
+\x92\xef\x8dH\x1c\xd4N(\x83\xa2\xf2\xd7\xd9\xe5\xe84\
+\xff9\xa2u~\xcc8\xd0,\xa9\xa9\x88\xac7lm\
+\xd4ABu\x9c\xe7\x8dB\xc8~\xe6\x1bF\xb4\x03\xd0\
+\x94N\xad7\xef\x03\xb7G\xb4\x03\x0cu\xf3\xc9\xc2\x11\
+M\x03\xc1\x14\xbe\xbd\x07\xd5kF\xb9\x98\x95\xed\xf7\x89\
+H\xd4f\xd4\xc0\x11\x19\x94\xcb\x86\x81.f\xf4\x04\x80\
+T\xaa\xf6\xd3\x92\xff\xae\xfc\xd4\x19\xf9\x80\x1ai\xf7\x05\
+\x1d\xf8\xde\x1f\xbf\x1b\x91\xf6\xcde#\x92x\x1d\x14a\
+%6\xd60\xa0\xe3(;2w\xe4\xa1DK\x8d\xbe\
+R\xba\x9f\x9f\x0aO\x98\x0b\xd8\xab\xbd9\x22\x01Z\xac\
+_\x5c3`<\xf1\xfc2SJ\xe2\xf6\x86\x88\x9aX\
+\x0e?\xef\xe7\x93+\xebyqF\xed\x05\xb6}\x82\xce\
+\x07\xe2Q$\x1c$\x96tr\xc5@\xf1y\xbafD\
++P\xdc\x89$A\xd2\xe7\x82\xea\x0a\x93\xc83\xe5b\
+\x9a\xd5\xa7\xf6\xe9\xe9\xe7\xf2<\x053\xee\xb7i}(\
+\x113\x05\xfeI\x11%\x11\xba!\xa2\xaa\x99\x97(\xaf\
+\x1f\x8a\x90\x9dn\xf8\x9b?\xa3\xc4\x16\xe5u\x85\x081\
+.\x1e\xab\xf5\xfdI\x8d\xc8\xed\x9c\x80\xdf\xf8\xff\xf5\xea\
+\xac\x1d\xd7\xecy\xbd\x7f\xe1\xf3\x0d#\x87\xfb\xc6\xfe.\
+&\x15\xe7\xa1\x13\xff\xc8~6Ny\x834}\xfc\xfe\
+\xa2\x16\x87\xb4e\x88[\xda\xb6O\x85\x09\xe7\x0a\xeb\xc1\
+v}\x91\x88\xbf\xb8\x15\xde1\x98\x18\xa3\x89\xb5\x93\xbb\
+w\x1a\xcd\x83\x918\x17Q^\xf7\x8e(\xf7\xe3{\x11\
+M\xab \x94\x8bB\xbb\x08F@\xff\xc2\x884\x03\xae\
+\xfb]\x81\xc7]S\xa3\x00\xa0P\xfbJe\x22\x84\x06\
+\xc02\x11\xc9\x05\x88\x825\xce\xcbp\x9bxj\x89\xcd\
+\x05\x80\xbc-\xd9'\xc2\xb8\x02\x08\x8eo\xf1\xbed\xbf\
+\xa9N\x9a\x0b\xc2\xf7E$\xfbR\x15\x1a10\x19n\
+>\xe4\x7f<Wn`<B\xc0`HI~G\xe7\
+\xca[\x9ao\xbd\x9fO1\x84\xfeK\xccz\xe5\x94\xc7\
+\x8cl\x87\xeb\x08\xc36\x95apQ0\x0c\xeaO\xf9\
+\xca\xf0|\x07\xa3j\xf2\xdb\xc9\xf5\xd1\x08\xf2>\x0dE\
+\xfb\xbd\xb3\xa3j\xe7}a\xd9r\xaf\xa2Q\xaeh\xc4\
+\xfc@\xb6\xb0\xb7\xa5\x02\x15\xca\xf31\xe5\xfa\x1cS\x01\
+\xc4\xcb+\x80\xc8\x88\x03\x05e\x98C\xee\xd9\x98u.\
+T^;\x88\x1b\xe3jP\x07tnN\xe7\x13\x9dM\
+5\xf2\x0c\xd8\xca\x95\xc0\x9a\x05\x1au\xa8|\xa9O\xa5\
+\xce%\xe2\xbdb~\xda\xae\x8d\xf3\x96\x9f\xc3\xf5\xa4\xee\
+@\xac\x8e\x0e3\x00\x80\xf6Y\x03\x16\x8cp\x0a\xd0q\
+\xc3\x07\xaa:\x8cT\x0a1\x00\xf8\xe0w\xae\xf7\xd0}\
+\xd0L'1\xf5h4\xf9\xf9\xa6!\xc3y\x8e\x18!\
+y#\x056\xe7\x1b\xf9\x90\x0aB\xf2>w\x90\xb1{\
+\x86\xb9\x08p\x0b\x03O\xc0\xb2\x01i\xae+@\x89\xf2\
+\x04\xe7\xb94f?\x1c\x91:\xf1Z'\x16\xe1\xc5\xdd\
+Eb\x9e\xe4sv#\x19\x8d6\xb8a\x01\x10q\xc3\
+\xb0?\xd7jn\x99\x87\xb1\xdf\xa3\x01\xc4\xebx\xc4c\
+\xec*E\xe3\x85\xf7\xe1\x95\xfc\x91<\x9d<\x15\x06'\
+\xfb\xadF\xe1\xdc`\x22\xcfd]Q/\xe8\xe7X3\
+\x8e:\x0f\xe60\x9a\x03\x00zj\xdc\xb0\xdf{\x84\x82\
+\x02\x9f\xf5OC\x8eB\x9d\xfb\xa3\xf3\xde\xf9:\xd7\x93\
+u\x0ep)F\x87\x99\xaf\xa3z\xd3\xb6\x9b\xba\xffs\
+\xf5r,\x95\xa8\xfc\x00\x00Ym{\xd1T\xf8C\xe1\
+\x89c\xf6\xb6D!\x811\x90\xfdV\x17M7 \xdb\
+\x1b\xf4\xe9\xefq\x01`\x10\xf0\xc5\xd0\x06\x80\x92\xcf\x0d\
+S\xc7\xdf\x17\x1e\xca\x0b?\x87\x05\xc1\xe7\x8de\xb2\xcc\
+\x88:\xb4Xb4\xc4\xff\x1f\xce\xf5\x80\x05\x87\xd8\x07\
+\x1b$\xef\xcf\xc8Alg\x9b\xa4\x99bf-qE\
+\xa0\x00\xc5\xdf2\xc4n>\x9afj\xe8\x80\xbeET\
+,\xa8lsC\x07e\xc1\x11\xea\x98\x91\xd0\xa3\xbaZ\
+\x8e\xbb\xee\xa9\xc9\xa6\xe8\x0b\x83\x06\x00\x9d\x98\xe9\xc1\x11\
+\xe5u\xdf\x88\xf2\xbayDy]>\xa2\xbc\xde\x1bQ\
+}\x8c\xd7\xe9\xc2\xf5\xe0\xbe\x88F\xddr\xc1\xc1\xc8\x81\
+F\x07L\xa9]2\xa2\xa9]2\x0b\xe5\xf5\xc0\x063\
+\xf25u\x87CT#'fR\xa9v\xa2\x8d\xfd\x95\
+\x0e6\xcf\x90}:\x22i\x06\x90\xa8\x92@I\xbc\x8c\
+Y\x1ek#\xd0Qc6\x99\xfb\xa2B\xd6\x05\xe4\xbb\
+#\xd2\xfd\x07\xc1\xa3s\xa0u\x17\xd2`\xf5\xc0\x07\x81\
+\x85\xeaO\x87BbY\xa5\x9c\x19\xa8\xb9\xf7\x94\xb87\
+Q8\xf1\xb5\xfe|D\xda\xc0\xaf\x8bh\xe2\x7f\xcc,\
+\xbb\x93&-\x06\xcf*I\xfc\xc7\x09!\xeb\x9a\x83\x05\
+\xea4\xe26\x00V\xack\x12m\x12\x0f\xd69\x1b\xcb\
+\xd3JZ\xfd\xb4\xa4vN\x87\x9aB\x82\xeb9\xb6U\
+aC\x84\x22\x06\x05\x91D\x0c\xd7\x0b\xd6\x07\xaa\xf7t\
+*@\xcay\xaeA\x8c\x99\xbd\x17`\xe2Yi\x0a'\
+\x0ax\x9eg\x0ae\x90\xf4\xf1\xf7\xe4`\xc0\x0f\x1d;\
+?\x90S\xf6\x1df\xdb\x11\xbd\x02\x90\xe4\xe0\x01\x00\xa4\
+\xc0'\xd1\xe1\xe0\xc6\x8e\x0fQ@\xae#6B\x1a\xf5\
+0\x93\x81YU\x00\x0a:\xffh|\x00`a\x93E\
+\xe2\xc2\xfdV!\xc7\x0c\xa6\x0f^4(\x00\xd4\xa4\xd9\
+\x01%\x12\xbb\x1d:\xb2\x1e\xb5@\xa5\xfc=C\xa1;\
+\xdb_*\xbcz\xae\x98-\x9e\xfc>\x221\x9c\x98\xa9\
+d\xb6T\x0c)\x00K\x17r\xb2\xc92@\x88\xab\x01\
+\x09\x04#W0*\xe8\x18\xaa\xd3\xd2\xdf\x1e\x91\xec\xc7\
+\xe8(\xc9\xff\xba\x7fsD\x1a\xb1`]\xc0\x88\xf9\x94\
+Fw6\x16\x13\xe4\xaaR\x16\x94\xe7\xeb\xc1\x93#\xca\
+2~~Dy\xbd\xa0\xc4\x85\x02T?\x91\x00il\
+\x04\xc3g\xfb\xb7I\xe4+F,^\xaf\x11\x9d''\
+j;bwP\xe5\xd9g\x18\xf5\x00\x80E\x95\x98\xfd\
+\x94\xe7N\xe2\x8bu&\xf8\xfdit\x82\xc2\x92Q*\
+\x0a{|\xb6y_\xf6\x09\xd6/To\xf6El\x5c\
+5k\xe9\x11\x84\xb7\xd4\x93\xaa1\xd2D\xdd7\xf3\x04\
+\x17\x02:C<\xf7\xb87\xd0\xd2d\x1fB\xe3\x81\x84\
+\x10\xa0\x1ef\x80\x00\x084pX\x17NT\xc5\x9c\xe9\
+O\x8fh\x00.\xb3\xdff\x14\x1c\xb4\xe0\xed\x95\x8a\xbd\
+uDy=4\x22Q\xb2_\x18Q\xee\xef\x13#\xca\
+\xaf\x97\x18(\xdaU\x04\xb7\xac\xb3n\x8f\x12\xbb+\xb1\
+\xfa\x9f\x94\x9fDZ\xb8R\x02\xb2\x05\x18\x03\x84y]\
+\xd3\xd1G<\x0b\xb1O\xce]\xce?5\x1c\xec\xda\x00\
+\xb0\x8e\xf80b\xc3$\xc00=\xf4\x5ctGF4\
+`\xc7\xe7\xe7\xeb#\x9a\xa6H\xf7\xec\x88\xf2\xfa\xab\x88\
+\xf2\xfa\xcb\x12\xbfHb\xc0\xc7G$\x91F\x9d\xef\xb3\
+{\x22\x9a\x9d *\xd8\xa6\xf2#\xf2\x87F\x8d\x00\x02\
+S\xf5iL\x88!bqN\x89{\xa1\xf2_%\xca\
+>\xac\xc4\xf6\xd6tN\xc0\xe4\x88\xeb\x14\xa2\x8c\xa7E\
+\xb4\xf3\xb1\xdb?\x225\x00\xe2\xaa\xec\xdd\xf6Kk\x17\
+\x89\xe1a\xc0P\x80\xc7l\xe9\x08\xcd\xf4\x97\xfb\xda/\
+Ub\xe9\xf4\xbd\xe2:\x1e\xd0\xec(\xfb\xbd#Z\x1e\
+\xe3\x86\x09L\x06%\xe2U<r\xc7\x91K\xc8o\xd2\
+s\xa7}`\xf6\x94\x88\xe4\xba\x225t\x03\xd0t\xfe\
+`\x02\xa1\xdd\xc1\x88\x09>\xe47E\xa4\xeb\xc6yN\
+\xbe\xcc\xbe\x03PM\xe7VT\xf0:b\x90D\x0fm\
+\xa7\xcc9\x12\xa7\xcb\x0e\xa9 z@\x8d\xbf?\x8bY\
+v\xb7\x98\x88bZ\xba\x03\x0c\xe3\x88\x8e\xb1\xa8\xc8\x0b\
+\x1e\xa5\xef)Q\xec\xd9k\x22\xd2($\x94\xea\x11P\
+\xec\x0e:\x85\x0e\xa2\x83\xe4\xa1*\xdca\xa6\xcdv\x1b\
+4Ff\xb7\xcen\x99\xdd\xd2\x98,\x06>\xcf\x1al\
+\x17g\xebE$\xc6\xe0Fb 3\xeav\xf5\xecW\
+1b\xb8\xe0\xd8\x05\x1f\xacn\x06\xdc7\xee\xff\x88\xc2\
+\xed<\x9f\xbcR@\xa5;\xc3\x8c*q.Qx\x02\
+8P\x10\xd2H\x84\xf9\x89\xb8\xa1\x18\xc0\xa5^\x88\xf0\
+h\xab\xef7\x80(\x0d\x1b\xea\x18\x18\x88\xd8\x19\xe3\xf6\
+\x80f\x94\xee\x975\xacp\xffA\x8cR\x05\xab\xc5\xe8\
+\xa4\x85\xe1s\x8a\xcfK\x83w\xa4\xd9T\xb3\xbb\xc7\xd4\
+\xef;\xecg\xd4m\x006\x9cO\xac3f\xfa\xd9?\
+\xe4\x06\xe3<\x8d\xba\x95\x83f\xcc<!O\x86\x01\x01\
+p\xcd+?\x07qG\xf6\x11\xd6\x15\xfb\xeeX\xdb\x80\
+\x7fO\x9eF\xfe\x08\xd3\x93zJ\xff\xce\x0c\x17\xec\x14\
+\x01x\x01\xfe8G\xc9\xaba\x88\x92O\xf39\xb8N\
+\xac\x13\x001>7\x9f\x0b\x8d6F\xa7\x05L\xcc\xf9\
+\xc2e\xf5\xffG\xa6\x1b\x15e\xcd\x13\xdaL~\xed@\
+?I\x88\xc2\x1fZB\xe3\x05&\xc6\x80}\xbb\xe9\x94\
+\x07\xa1e\xeb\x94\xc81z\xc0\x05\xe7\x95\xcf\x83h\x01\
+74\xd2\x83@|\xd7\x89H\x1b\xd1\xb2u\xe9,0\
+\x90A\xc1\x0fR\x14\x97g\xe5\xf4\xf325i\xb1\x11\
+C\xe0Q\x0f\x15\x8f0\xf2\xc3\xf5a\x14 \xb6\xaf\xc5\
+\x12\xa5\x1b\xca\x0e\xf6\x87\x5c\xbf15\x1cF\x05\xef{\
+\xf4\xa0\x06\xdam\x1bQ\xde\xef\x98A\xe4\xc5\xd4V\x00\
+\x014\x04P\x81\x14\x05i\xc1v\xa5\xdc\xdd\xae\xf9\xf6\
+zD@j\xad\xdd\x8f#\xca\xd7\xfabDy]&\
+\xa2\xfc\xfeN\x11\xcdW\xda\x891\x07\x01\x1b\x11\x05\x05\
+\x0f\xbe\xa8\x84\xfd+#\xda\xec\x8aE\x80\xa4>\x0f\xa5\
+\xdabU\x88$\x82t\x91\x00\xa1Up\xc7\xe4\xaf\x93\
+\xf0\xd9}B\xc4\xc3Pp\xb0?\x92zi\xb7YD\
+C\x1e\xd9\x90&}D\xf9\xf3U#\x92j,\x07\x08\
+\x09!\x05\xa4\x1eL\xd4\xdbM\xa9\xc5o\x9b\x83\x05\xc0\
+\x8au9\xaf\x07\x95\x8e\xa5\xd6\xa5\x99\x0e\xccXq\xb0\
+\xc7l\xe3W\x93+\x04j\xfc\xd1\xd9:\xb6\x162\xd5\
+^\x04\x00\xc0\x07\xb6\x0a<'\xccl8\xd8\x8e\xe9@\
+\xf4}\x80\xfaLB#$\xd2\xc8!\x07\x1d\xaf\xa3\x02\
+\xc0\x07=\x05\x00H(\xb3\xc7\xd8\x1cb\x0f\xf9\x1f\x15\
+\xd2\x0b\xab\xe0\xe6\xf9e\xe3\x1d\x89\xa9\xf8\xe7\xa9p\x9a\
+]\x16\x91\x10q\x9e\x17\xfc\xca\x9502jbq\x1e\
+:\x02\x1ai\xb1h$\xebN3\xc7\xa6\x90\x03\x181\
+\x03\x095\x90BC\x05\xac\xdf\x9f\xe7\x97\xf5G\xc2B\
+g[\x85\x89\x138\x0a|\x0a\x18\x0a\x1a\x12,F{\
+`\x0cP\xe8S\xf8\xc3\x04`\xdd\xf0~P\xffU\x08\
+x\xb6\x18q\x1a\xc4\x86P\x09\x06@\xd96\xa21@\
+\xec\x0a\x80\x0a=\x07\x87\xd4\x88\xcd\x10\x02\xc1\xd6\xec+\
+\x14=\xc4\xe8PG\x07\x80\x82\x0a\xcb\x0cz\xf7\xc6\x88\
+\xd4i@\xa3\x03\x00A\x94T\x12\xe3\xc9\xd9\x11i\x06\
+\x0e\xb5\xe2\xef\x88\xa9\xf3\xf9\xc9i\xd1\xe1+\x7fk\x98\
+y_U\xa3\x16\xac\xff\xed\xcb\xdf\xde>\xd9\xa7\x02\x8c\
+\x91pA\x19\xa4C\xa4\x82\x9fN_\x7fBD\x1a!\
+R\xe7jv\xd6\xecK\xb3\xb3\x9a\xbb\x81\x9f?%\x16\
+\x14H\xdd\x85\x11\x0dx\xb5\x86\x00\xfb*vk\xf2Q\
+7\x95?\xec\xf6\xeeU'\xfd\x0b\xe9\xe7s_b\x15\
+o\xac\x83\xfa\xfa\xf4\x5cD\x19\xfd\xc2T8\xc2D\x80\
+\x81\x82\x1d)\xe2\x82t\xa4\x01\x0aE=\xad\x94\xe8\x15\
+\x13\xd3\x8e\xe7U\xeb\x9e\x11\x093&\x10k\x14\xa0\xe4\
+\x82\x15\xe0\x07W\x14f\xfe\xe9@\x90\xc0\xb3/h6\
+\x9f\xf5b\xb1F\x0aODX\x19\x9d\x83\xa9\xa2\xfb\x05\
+\x13\xcdZ\x03\xecSk\x0f\xf6j\xd5\x86o\xa5\x06\xf8\
+[\x03G\x8c3\x0a\xc1n\xe1\x88\xf2\xbaMD\x03\x00\
+\xba\xd7\x978@\x0c\xbb\xf2}\xbb\xbf\x96\x08f\xdd/\
+\x22\xca\xeb\xdf\x22\x1a\xf0_w\xe7\xd7\xeb\xb9\xfb~\xa2\
+\xc8\x02\x8c\x090\xf6h\x16Z5\x02\x1a]\x90BE\
+\x8f\xe7\xec\x0d\xea\xc8\xed\x9c\x98\x92Q\xc6\xdd*\xea\xe9\
+\xd5\x1a\x85X\xbc\x8dR\xf0s\xba\x7fG4;`\x8f\
+\x16\x84\xdf\xf8\xbb$\xda\xb7Q\xd30\xa8\xc0\xd6\xf6J\
+\xfc?\xd1\x00\x8b\xfe\xc6\x88\xf2zi\x89\xcb\xda\xcf\x99\
+m\x10Q^\xff\x10Q\xfe|\xe3\x88\xf2:\x17Q^\
+\x1f\x17\x91T\xa9\xa5m1\xfdJD\xd36\xf0\xa8\x8c\
+\x00\xa6\xbe\x8b\x90\x8d\xef7\x93\xdb\x8aFi\xe6\x7fY\
+\xe2Wb\x5c\x9c\xa8\x99\xfa\x00jV\x8bH\x80%\xb3\
+\xe7\xcc\xc6Rh\x89\xd2\xdc}.\xa2\x15F\x9c\xb7\xfd\
+I\x11\xe5\xf5\xeb%\xcek\xda\x13t\x9am\xb3\xfc\xef\
+\x88T\xe0\xa1\xc5\xa2u\x81V\x01\xbe\xee\x00\xa2\x16c\
+\xa5\x93\x0c\xf5W\xf7\x89\x06\x80\x0bp\x01+\xac;\x03\
+\xd0<\xdf0\xb4\x18A\x02(\x05\xf8\x070\xd4\xbe\xe7\
+\x99f\x18:\xd8_F\xf9\xf7\xa2d\xbb\x06\xd3#\xbe\
+\xddK\x92\x0b\xd6\xa8\x83n;\xe0?\x0f\xb6\xb2\xb5\xdd\
+\xf5\x88$v(\xe0\xbb\xec\xa3g\xc5>\xca\xe7a\xf6\
+\x18\x97\xa3RK\x0c\xe2\xcb'+\xdfa?z\xb1D\
+D\xc5X\xf3\xe8\x11\x05\x15\x0d\x0c\x0aI\x0a\x1d\xf6Q\
+\x18Pa\xcf\xb9p\xd3l\xa8\xd9\xf2v\xa9\x10Gd\
+P\xccZ\xdb\xf2\x01\xf0\x93\x87\x22\xde}Z\x84Fl\
+wM\x85;\xfb+\xea\xf0|OiA \xfaiq\
+X\x98J\xd8\xb6\xb1\x0f\xb2_\xd3XA\xb3J.'\
+|?\xab\xe1#\xbe\x07\xa3P\x1a\x04\xce\x97)\x1c\x19\
+\xe9e$\x84:\x88\x86\x08\x1db\xa8\xe3ZO\x1e\x1d\
+D\xd3\x02\xfbR\x80\x0b\xb4\xa5\xa8\xd3\xa8\xa7hpp\
+\xfe\xb2\xef\x01\x04q\x1d\xd9/9\xaf\xa9;\xa8\xbfh\
+\x10\x93G\xaaP\x86\x09\xc6\x08\xad\xaf\x17\xeb\x80\x8e8\
+LU\x0a\x7f\x80\x00\xde\x97|\x0d\xe0\x01\xc0K\xf5\xab\
+E\xafY\x0f4\x96\x18\xfd\xa4\xae#\xcf\x01\xb0\xe7{\
+SOQ?\xc2\x14\xc1\xc5\x83\xbcS\xfb\x81G\x13\x00\
+\x80\xc8\x8b\x19\x11!\x0f\x85\x19\x80\xb6\x0e\x8c\x03\xeaJ\
+\x00\x1e\x80\x02\x00\x09\x9e_\xe5\x13s>`\xd0\x00\x18\
+\x03\x01Q\x0ewJh\x96I\xf6Kt\xa2\x02\xd1>\
+8]\xd0x\x1c\x97\x16\xb2\xff\xe6\xc4\x18x\x5c\x95\x0d\
+j\x1dRl\xc1X\x88\x91\xeeo\xad\x8dy\xa3\xd4\xf9\
+\x83\x02C\xc2\xf2d\x15\xbe\xcc\xf4\xf2\x85y\x1f~>\
+\x85\xc6r\xd5\x89\xbc\xa9Y\x07\x15f\xa54\xb3\x9b\x01\
+\x81%\x92\xbd 7\x96W\x1eT\xde\x0fF\x01\x1d<\
+\x16<\x88\x1b\x00\x05?\x87\x0e@ \xb7A\xb9\xdbj\
+\xb2ut(\xf0\xb7\x86\xfa\x86(\x0f\xfe\xac\xa6\xd0R\
+\xd83\xf3\x81\x7f\xa6\xb4\x00\xbawG\x94\xd7OF\x94\
+\xd7\xb9\x88\xf2\xbaXD\xa3.\x1a1\xe7}\xd8\xc8)\
+\xd0I\x049P\xb0\xdd\x93\xb8V\xbfuDy}l\
+\xbfl\x1f>\xf5\x1f\x8b(\x7f\xbeSD\xb2Y\x92\x0a\
+twFD\xdb\x90&O\x89h\x07\x0d\x1b\xa8;\x87\
+,P6T\x10U\xa8F\xcc\xd0B}\xc7\xe6FT\
+\xa5\xe9e\x11\xc9\x07[\xaa\xa1\xf6\xaf\xc6\x9eP>\xab\
+$\xee\xb6\xfba\xd6\x8c\x82\x85Yc\x10uD\x08\x1f\
+\x1d\x8e\xd0\x09hb\x03\xd5\x03L\xe2\xe3\x19\xca/\x95\
+\xf2\xecK5\xa19\xbb\xce$\xe3\xf7)\xb1\x95\xfe\xbb\
+\xfd\xc5\xfd\xc5m\x9d\xcc6\x8fhH\xb8EF\xb0\xe7\
+\x93\xaa(\x07\x9c\xef#\xa2S\x14\x9e<\x07\xfc\x1a\x04\
+\xf2\xa7\x11\xa9#\x87k\x00\x09\xc3A\x11\xa9p\x17#\
+\x03\xca\xa0G#\x0e\x12\xa5\xf3\x8f\xa2\x84s\x80AA\
+\x1b\xfb\xa9\x82\xac\xf2\xf7HTd\xd7\xe6\x0d\x99\xe7\x0d\
+\xb5p\x80?:\xecl\x90\xa8\xfaSp\x80\x84\x93\xc8\
+\xb0\x11r0\x03\xf0\xe8\xfb\xbb0\x97\xbf\xab7x:\
+z\xd8\xae\xb1\x1f\xf1\xbe0\x12\x94\xc0YC\x80\x11\x14\
+\xf6CF\x0b\xf8\x8f\x83\x84\xce\xc0\x88\xf2i\xe6\x00\x05\
+\x10#\x01\x00t\xfa\xf9\xb6U\xc3g\x1d\xad\x08\x00*\
+l\xa1\xa0\x22\xe2#M\xa7\x08*\x223\x7fPH\x85\
+\xd4\x9b\x22\xf9\xabAL\xb1$yC\x22\xad\xef\xdb\xfd\
+!\x22\xdd\x07\xb9{\xf4GE\xa4\x0e\xd6\x9e\x11)\x91\
+ \xc1`\xd6M\x94G\xbb\x1d zy\xb5\x9eC\x0a\
+o\xae#\x80\x0e\xe7\x14\x09#\x1d\x12ut\xdc\xb9\xc0\
+\xa6\x0b*\x1e\xfb\x08\xf6<\x9a\x8d\xb4\x1a\xb9\x12\x8f\xee\
+\xe0\xa1\x90\xef?\xdd\x7f\xa6\xffL\x05\x0a\xf7\x0d\xa0\x10\
+7\x8e\xe99\xd3\xb3\xa7\xe74&T\xf7\xbc\x88&n\
+\xd6-\x1bQ^\xef\x8f(\xaf;G4\x80\x90\x8e\xb6\
+\x13\xd4\xa7E$\x80\x82Q\x9c\xf3\x95\x80J\x84\x0b1\
+1\xf6\x17\xdb\x15*\xf1\x03 \xa2C\xeb\x8e\x00\x22O\
+\xac7\x80d\x00E\x00\xceE\x87\xf3\xb6\xdb\xb8\xdb\xa4\
+\xdb$\x01a\x02\xc6f\xbbE\x94_\xbf\xa9F+|\
+\xa4\xd5b{\xaf[#\x92\xb8$\xc0\x22\x9d\x0e\x807\
+|\xc8\xe9\xc8\xd0\xb9c=3\xb2\x87\xaf<@.\xc0\
+\x19\x05\x10bW\xf8o\xc3H\xb8c\x18\xbd\xa2\x83Z\
+\xca\xbfS\xbbS[\x07\xd7\x94\x7f\xb4\x04\x028\x8e\xce\
+\xf2\xbe\x11\xcdnp\xbavD\xf9\xfd\xf3J\x9c_\xd6\
+\xc5kK\xec\x97l&\x83\x22\xfbe\x9dK7&\xe6\
+\x0dTZ\x9d#\xb8\x1cTF\xd8=M\xb4\xb6v\xd0\
+6\x13\x00\xbe\x81\x18@G\xb4}\xa9\xae\x8f\xa7\xa7\xc2\
+f\xbb\x12\xcfk\x80@\xf7\x8d\x88\xf2\x1aut$\xda\
+\xaf\x8e(\xbf~k\x84\x80\xea\xe5\xa5\xa6\xbf\xa2\xce\xb3\
+\x9b[g\xban\x03e\x1f\xe8\x7fQ\xe2\x97\xda\xe7c\
+\xc6\x7f\x85\x88\xf2\xfa\x95\x88\xb2\xad\x1d\x10Q^w\x89\
+(\xbf?\x8dhj\xd6\xdd*\x11\xe9<Rg\x8a\x19\
+}\x8f\xf4\x08`\xec?\x19\xd1\x12Z\x03\xd5\x123\xed\
+_\x11!\x17\x86\x1b\xc5\xb0\xb9\xa1\xb95\x98Y\xa0Q\
+\xbcr\x95w\x88F\xc9l\xcb\xd9Vu\xa6{9\x01\
+\xc5\x88+\xca%\xc1\x0c;f\xb6a\x14\xc5\xdd\xbc4\
+1\xac\x18\xc5\xc1&2\xee\xcbQM|\x99N\x1d\xe2\
+\x91\x06h\x01\xac\xe5w\x8f\xab\x83)\xbe\x88\xda\x8a\xe1\
+gW\x14\x156\x00\x89\xces)t\xa3\xcc\xb9\xa6\xad\
+\x1f\x9f[c\xf1/\xce\x01^\xc9k\x18\xe5zv\x84\
+\x0a\x99\x1d\xd2\xfa\x94\xbf\xba59\xc8\x7f9\xffc$\
+\xe3\xc8t\x1e\xc2\x84Y\xa1\x5c\xe5\xcc\x98e\x94\x94\x99\
+k\x1a\x85\x9c\xfb\x00\xb9t\xd8\x01\xbaa\x0c!\xde\xcc\
+y\xb8\xbd\x1a\x0f'\xcbf\x8e?\xa7\xa1C\xa1C\x81\
+\xa8sg\xb6\xfa0\xca\xe5u'`\x86\xfc\xd0y;\
+\xc0\x05\xe2\xaa\xbc\x8f\x983\x06\xee\x11\xf9\xd3H\xa5\x99\
+T\xec\xa3\x8c\xc6)\x0f\x81\x12\xdf_\x1bQ~\xff\x7f\
+k4`\x84\xf3\x0a\x9bn\xd6\x0d\xe2\xb6h\xf6\xb0?\
+\x92\xc7^\x16\x91\x0aW\xe5[h&XT\x16\xa0\x83\
+\xbc\x8e\x11\xbe\x91x\xad;\xf9\xca\xb3<\xabN\xdeH\
+\x9e;M\x9aV\xbfM\x8c\x09\xec\x04\xb1\xe1\x14C\x85\
+\xc2\xdc\xdf\x97B\x9f\xf7\xa5\xde\x00\xd0\xa7\xee`\xbd\x02\
+\x94\xb0N\xf8\xf7\x9cW\x5c\x7f\xee?\xeb\x95\xff\xc8\xe7\
+\xc6\xdao\x5c\x17\xea5\x12a\xaeKc\xb6\xfcW\x1d\
+\xe8\x91U\x001\xf2x\x006\xb4\xc9\xb0\xe7e\xdd1\
+\xda\x01\x00\x81M%\xcf\x8b\xd6\xbf\xc5\xda\x7f,\x976\
+\x0aw\xce\x11\xb4\xcd\xc8ka\xc0\xc2x\xe4>4\x1b\
+\xee\xa1\xbe%?\xe2z\x08\xe8\x98\xf3\x0d\xc8\xea\xdd\x0f\
+\xa6\xc4\x1d1\xbf\xe8\xd4]*j\xf3~\x09\x08\x88\x8f\
+\xb1l\xb2\xe5\xe3BG\xf9\xbb\xb6\x0a\xbeMu\xa1\x9f\
+\x9c\xd4\xf5cRm_m\x84\x7fI\xbf\x8fm\x1fL\
+\x01\x16\x0a\x9d~\x12Nn\x00\x09 \x0b`i\xd9\xfe\
+\xe8\x020;\xe1\x05\x1c\xef\xb6FR\x05\x87!\xc0\x05\
+\xe5\xc2\xf1\x1f\x88\x12\x14\xcfPO=3\xb9\x1b\x80\xa4\
+\xd2\xb1\x05h\x10\xe2l\xaa\x08\xb6O\xb2\x05\xea>\x1b\
+\x91\xfc~Q\x1f>?R\x8c\x86\xf8N\x9e7l|\
+\x95\xf2\x1f3n\xb7F4\xb5\xd7\xeeo\x83\x98\x1f~\
+\xc9\xdd\xba\x11\xe59}UDy\xfdGDU\x9d]\
+\xb2\xda\xdc\x80\x88\x83H\xa3\x0a\x0f\xb2\x04\xd5\x05;\x12\
+fUE5\xc2\xa7\xba\xbf-\xa2\xbc\xbe&\xa2\xbc\xee\
+\x16\x91\x0a\x0c%n\xee\x1c\xa93\xefB\x06\x84\x0f\x04\
+\x13@\x00\xd5X\xa8\xd2\xcc\xf0\x81\xec\xea\xbeQ/1\
+\xeb7\xfd`D\xdah\x10!a\xe3\x00\x90\xc1\xaf\x18\
+\xaa7.\x07\xa8q\x8f\x91z:W qt\xdc\xb1\
+\xb1YJ\x07\xe1\xb9\xf2Q\xe5\xe7P\xc8\xf2\xef9\xf8\
+\xc4`\x80\x9a\xe7\xc4\x9f\x82-: \xdf\xa8\x85\xe2 \
+\xae\xc5F\xae\x84\xd9\x1b\x12\x9dl!\xaa^\xbfB>\
+\x99\xb5\xc4?\xd5\xd4u\x0eLD\xe3\x84 b\x8be\
+$Z\xcfA\x7fxD\x1aQP\xa2\x07\xa3\xc1\x0c\x8b\
+K\x04\x14\x01\x1c N\xc9\x06x}D: \xa1\x84\
+q])\x1c.\x89HTe\x0aW\x10d\x01=N\
+0HT\x04\x8c\x98JMg\x9cB\x05J4\x22t\
+ \xe2\x14\x16\x00u$6 \xc1\x8c\x1a\x910\xf0\xe7\
+\xec\x97\xd8\xe5\x00DRh\xb2\xe1\x8ef\xdal7*\
+\xea\xba\x191\x12\xb3\xf2\xbf\x03 \x00P\x80\x99\xc4\xcf\
+a\x9d1\x02\xf3\x13\xcd\x96~x(\xf4&OT\xe7\
+Q\xc0\x9c\x0f:l\x85H\x00\xb5\xce\xfbOD\x94}\
+\xe2]\x11i\x04\xe10%<\xb2\xdf\xb3\xbb\x82\x18\x0b\
+\xddB\x11\x09\x08\x85\x92\xff\xb6\x88\x84\x5c\x0b\xb81u\
+O3\xb6\xee\xf0@Qf\xbd2\x83\xfa\xfd\x05?\xa8\
+\x05\x9fD\x94\xac\xa5\x00\x10\xb0\xcchv\x10\xfb5\x9e\
+\x1b]_T\x99=Kw\x8b(\xa0$\xcc\x00o\xcc\
+\x9aC-\xd4\xcf\xe9\xdf\xd3\x1f\xd6\x1f\x96\xc4\x94\xd8\xaf\
+b\xe6y\xd2\xc4\x83\xa0`[\xb46`\xa2\xa7\xb4N\
+EwJD\x13\xfd\xe9\xbe\x10\x91\x00D\x181:\xf7\
+\xfa\xdfE$\x11W\x01\xbe\xb5\xa3{h\xdb\xd7\xbb\x1d\
+\x22\x92\xdd\x95f\x0c\xad\xf5\x01EU\x05\x89\x13n\x00\
+\x17\x808:l?\xabOt\x00}o\xad\x94v1\
+\xd3\xb0\x03t\x22\xad\xf5j\x9b6\x00Hl\x01u\xde\
+\xc1h\xf3(\x00\xa3V\xdcGFV\xd8\x7f\xd9\xb75\
+\x83\xcc9\x85m\x9b\xdf\x0f\x06\x8e\x12H\x03\xb5|?\
+%\xd8\x88\xd0\xda-A\xd4\xe9\x80\x03\xe2~\xf8\x5c\xfd\
+\x9f\x88r\xb95\x817\xdd\xb4\xc4f\xed<\xb5\xb6H\
+P\xe2_\xdb\xceC\xf6s'\x88t\xa0\x0025\x9a\
+f\x06\x85\xec\xe4\xd0\xb4\xe9\xde\x19\x91\xcec\xdcS\xc2\
+\xf5e\xb7\xe6\x9e\xc1\xac\xb8\x0b\xaaH\xb7\x0f\x13\xd3\xef\
+GIm>:\xdd\xa7\x89\x9a\xbe\x97\x0a\xe7\xdf\xb5\x91\
+\xa2\xee\xe2\x12\x17\x89\xa1\xf1\x06\x8dT\x9c\x97f\x96u\
+\x9f\xd9\xdf\xfa\xcb\x22Z\xe13\xb9-\xa2\x5c\x97S\x22\
+\x1a\xd0\xd8\x9d\x1d\x91:\x9fP\xed\x19-\xd4\xfd\xeaw\
+\x88hL\x0e\x98t\xfd\x81\x11\x12\xd5\xfbL\x05j\xab\
+\xab\xc1t\xc5\x88D\x85\xff\xf2\xe0v\xd4\xad\x15\xd1\xec\
+\xf5\xea\xba<\xb4\xee/\x03\x85\x1b\xa6\xde\xad\x12\x1d\x86\
+\xfa\xce\xba\x15\x03i\xb2ZD\x13\xd3\xac6\xcc\xc7i\
+\xa6\xfa\xd7\xad\x83\xec\x99yf\xc9CD1\x5c\x07\x1e\
+\x1bQ^?\x1e\xf1P\xa0\xbc\xae\x8b\x97'\x8d*l\
+\x87%\xd2;\x7fMD\xd3\x08\xf0:\xc5^\x96\xfd\x04\
+\xaa\xf6\xa2j@0B\x83\x1d \x00+\xf6\x9d\x88\x00\
+\xab#\x09s\xc3L0\x0a@\x5c@p\x07\xa0@b\
+\xbd\x01TP/0\x02LA\xc3\x88\x0ay0\x8cX\
+:\xec\xca\xb7\xdc a\xe6\x5c\xb6\x91\x06\xe2\x11\xcb\xc5\
+\xbe\xf1\xbb\xa2H\xb3?\x01\x88\xd0\x99g\xdf\xa4PF\
+\xc4\x8f\x82\x19&\xdem\x1am\x92K\x13\xe2m\x00\x1e\
+\xb3\xad#Z\xa3e\xb6}D\xd3\x86r=\xb4\x92\xce\
+_:\xbc\xe4\x01\x14\x96t\x9a\x95\xe7\xf5\x0fD$Q\
+f4\xc4h$\xe0\xb2#\xad\x08\xd73\x5cW\xa8\xf4\
+\x00\xa3\xe4M\xfc\x87f\x0d\xa3\xa2\x8cH\xc2\x08\x04\xf0\
+\xa5\xc0\xd7z\xe4\x5c\xf6l?#\xb2\x00\xb440\xc8\
+7\xf9^\xe4o\x14\xe8t\xb4i\xcch\xd4\xd4\xf6\xc6\
+\xe4\xef\x00\xef\x02\xde\x5c\x7fe\xa6\xf6J\xa9\xb0g\x14\
+\x0d`\x8b\xef\xc1\xe7\xa1`\x1f\xdb\xd6S\x7fR\x0f\xf2\
+\xe7\x00a\xd490\x0a\xf8>4\xa0x\x7f\xf6o\x0a\
+pF\x0fiH\xb0\x0e\xe9\xe4c\x03\x89h%\xa3%\
+\x8c\x04\x90gP\x0f\xf2\xf3\xc9\x9f\xf95\xf9\x1f\x00\x04\
+@\x17y9T\x7f\xeaT\x18\x13\xb8\x10\xc1\xcc\x80\xb9\
+H\xde8\xd2\x08\xe3\xf7\xe7\xfc\x85\xb9\xe1\x14\xf2qy\
+\xb3X\x1f\x17\x84\x99\x22\x0e\xe8H\xb7\xb7i\x1d~\xcf\
+$1\xbb\xaf\x83\xcf\x1d2f\xe6xp\xf8`P\xe3\
+)\xc8\x03O\x8bY\xeb\xf5K\xac\xa7\x8do\x9d\x94\x00\
+#^\xc8\xfb\xa9\xb0\xb7\x9d\x0b\x89!\x17\x8e\xce=\x85\
+\x12\x0bn\x85\x8a]\xb6\xf7]y\x10'\xf3\x88@l\
+\xf37\xa6\xce\x03\x08\x1d\x1d@\xa8\x9d,\xb8\xa5\xaaQ\
+K\xfb\xb9t\xfe\xa1\xe4\xd1\xb1Q\x22\xd0\x1d\x18Q^\
+\xbf\x19Qg\xf2\xae\xee\xa2\xe3\xb6\xdc`O\xd8m8\
+t8\x98\x8d\xef\x9e\x13Q\xee\xdf-\xd3\x9b\xa7eC\
+\x98\xee\x1a\xd1D\xae\xba\xbb#\xca\xef_\x1a\x91\xd4q\
+%\xc2e\x11\x0a\xa9{2\x13\xd2\xff \x22=(,\
+D=\xa0\xfd\xe3#\xca\xeb\xfd\x11m&\x90\xce\x19b\
+[u\x86\xef\xb3\xadP\x83\x1a\x8ax\x97gQ\xb1\xeb\
+\x83r\xcd\x82\xc7\x9f\x9c\x19{\x1e@uv\xb0\x1f\xf2\
+,\xe3\x07#\xca\xeb\xde\x11i\x86^>\xc9\xeelR\
+@s\xd04u\xd0\x01h\x82\xc2\xc4\xf7\xa6`\x17@\
+\x01E\xd9\xea\xfc\x00C\xb7Ju\x13\x8a?\x08\xaaD\
+\x92|\x90\xb2\x11\xa16\x0a\xb5HTw(q\xfe\xf9\
+\xa2FY\x1c)T\xa8\xdf\xdb\x0a\xa8n\xd7\x88r\xdd\
+\x7f\x16\x91\xec\xeb@\xf0\xb5\x01g>>_\x00\x00 \
+\x00IDAT\x1bYf\xf6\x90\xe7V\x94\xf2\xee\xcb\
+\x11M\xb3\xc0\x94\xda\xf9\x88F%\xb6\xef\xb4:\xab\xfd\
+\x93#\xca\xaf\xf7\x88H\xf69\x00;P\xd1u\xd0\xa2\
+\x96m\x9b:%4\xb3\x1d\x22\x12\x10C!)J0\
+\x09\x09bh\xd8\xb4\xf8zJ\x5c\xcc\xcf#\xb3S0\
+8p\x91`\xa6\x9c\xd9t\xae3\x142!\xf8\xa6R\
+c\xbf\x87\x9a6\xaa\xd40T\x04\x08\xd0\x11fv\xd4\
+\x00\x00\x078\x89\x0b\x058Z\x11JT\xb8\xaf\x9e\x95\
+\x14\x15\xd1\x07\x1a\xe2~ \xd3\x00t\x88\x06\x01\xb8h\
+\xe6\xba{ID\xdb\x87'_\x89h\x1dt\xab\xc0\xf3\
+<\xb0\x9fS\xd8\x00Hq \xa2\xd2,\x911\xdbu\
+-\x12\xd1\xdcD(\x9c\xe8\xfcSh\xf6\xbbG\xa4\xfb\
+\x04 \x03\xb3\x89\x84\x05QO\x9eO\xae\xb3\xec\x8b\x8c\
+\x98\x03\xf0\xbc=\x22\x1d\x88<\xbf0\x1aD}\xf6A\
+L\xc2B\x01\x8a\x88\xea\x17#\x92\xa8\x9e\xae\x97U\xea\
+\x05\xc0L\xb4\x0f\xdb.*\xa8\xcbe\xff\x99\xfdt\xf6\
+\xb3Yy\xfe\xfa%\xfa\xc5\xfb%\x92V\x0a\xd7\x17\xb1\
+H\x8d\xb0y\x9d\xeay\xedn\x88h\x80\xb0\xb5d`\
+0\x01\x84q\xfe\x92\xd02\x02\x82\xcf<v\x81\x02f\
+\x0ct\x88ae\xea6TN\xfc\xbc5\xdaAa\xe1\
+\x0e\xd1o\x86\x19\xe5\xc9\xed\x93\xbf\x84\x18#v\xb9\x16\
+\xa5\xa3\xb3\xc3\xf7\xa5\x80\xc0\xae\x0d[,\x9e[:\xf5\
+b\x86!^\xe5\x8e\x0e\xfb)TN\xf6\x03\x00u\xed\
+g\xd6\xae\x80\xda\xcfl*TY\xc4\x22\xe5R\xe1\xe7\
+X\xae3\x1e\xcd\xa0\x03\x1f\xb3\xe4\xab+\x9f\x9c\x09\xa0\
+)\xef?]?\xa2\xbcn\x11\xd1\xec\xef\xfa\xa7D\x08\
+\xe0\xdc'\x01!P2\xc5|\xf0\x0c?\xc0$\xeb\x9b\
+N\x8f\x80\xd7n\x83\x12\xb1\xef\x5cQ\xe2\xcaTHH\
+t\xb92\xc8\x1e\x97\x18\x1b\xb8O\xa8\x93\xdd\x9d\x1eQ\
+>\xe7\xd3J\x94}\xa8{dD\x12\x05\x8e\xd1\xc1\xb2\
+\xbfv\xef\x88\xd0}x\x92\xae\xff\xc6\x02\x8a\x0f\x16`\
+s\xb5D\xd1\xde\x9f\x80|\x98\x86\xa20\xe3\xe6\xc0\x08\
+\x05\xc0q\xbfSD+\xf0\xbb\x8fF$\xed\x22\x01\x0f\
+h\x8c0:\xe3Q\x13\x01WP\xa7\xed6\x00\x13\x10\
+@\x92Q\xbd\xbd\x06\x86\x83\xb5\x92\x10\x83]d\xd0\x1e\
+\xf0h\x9f\x1a\x0e\xb6?\xdc8\xa2\x8dd\xd8~\x0f\xfb\
+X\xb4P\xb0\xd7\xd5H\x1d@\x86\xedJ\x014\x18I\
+\x11\xe5\xdd\xcc\xcd8/\xcas0Y\xba\xc4RI\xa3\
+\x03\xdb\xdb\xad\x06\x86B\xbd|\xc1\x1c8\xad\xc4\xe7\x95\
+'\xbeSy\xef\xfa\x0d\x181P\xc6(\x9e\x98_\xf6\
+o\x07x\x93\xc6K\xd5\x1cy\xa2\xce\xdb\xf3R>\x1c\
+\xa7\xea\x11\xa9\x81\xc0H\x06\xa3\x87t\x5c\xd979\x7f\
+`\xf0Q@\xa1qE\xde\xa6\x06\x1e\x00\xde\xeck\x11\
+\xa9p\xe4\x5c\xe4{\x8c\x98]f\x88I\x8c\x16\xeaz\
+\xf9\xddAT\xee\x85\x11\xa9`:{\x00\x80\xbc\x7f(\
+\xdf\x06\xb8e\x04\xd2\x1dV}nF\x8c\xfa\x8d\x22\x92\
+v\x85&'\xea\x80\xd2\xe1\xc9\x85d\xec\x0b\xafB\xda\
+\x1a\x050\x95\xb0\xf5\x06@\xa6\xb0\x86\x82OCr\xac\
+\xfd\xc5\xf5\x84)\xad\xbfW\xdd1>\x92\x0av\xcei\
+\xdc[\xde\x18\x91\x1ah\x02\x1c,\x92M\xc1I\x1eI\
+\xc3\x86\xfc\x1e\xed\x1b\xae'\x22\xb5\xa8\xdaS\xd8\xa31\
+\x02P\x04\x10\x92\x19 +\xa6\xe7\x01M,\x8d\x9ay\
+\xffF\xf4\x11\x11n1\x81\xb1\xb3\xac\xca&OML\
+\x1c\xf6A\x0a\xe0G\x8dFL)|y\x05\x10\xa0\xae\
+\xe4\x86r\xdf\xa8\xf7\x10-\xd6H\xb5\xed a\xe6\xa8\
+`\xb7\xdd4\xcc\xd3\xb1\x8d\xbd\xd6\xb5\x1bv|\xbe\xd1\
+\xc8\x83;\xf7:\xef-\xd2\x0d\x80\xcb\xfa\xe0\xbaJ\x0c\
+\xdb\xdf\x9fF\x0fu\xebX\xac\x1f`d4\x82\xe1\x91\
+q\xf2\x5c\x00\x98_\x0f. |\xce9\xd6}\xc5\x03\
+\xe6\x1e\x06Q\x01\x00\x18\x17\x86Q\xa6\xfd>\xa9\xa1G\
+b\xfe\xc4\xa4Z\x0d\xc2\x035F\x1a\x02.\xf0\xb1\x11\
+\xc4\xdeF\xd4\xfbz\xc0\xac)$l\x9d4\x12@\xa2\
+\xc7\x05#Q\x5c~\xa0\x1eY\xad\x1f\x04\x8d\x0b\x06\x93\
+ p\xc9U\x12\xd00V\x99\xe4\xcfW\xad\xe4\xa4&\
+*\x87\x9b\x00\x89\xb7\x12u/,(\xbd\xb1\xad\xad\xdb\
+\x80\x0b\x17\x98 \xb7\xa8\xd4/9P2L\x91\xa1C\
+\xb1\xcf\xf0\x00M\x16\x92Z\xec\xae\xc3\xc679S\x9d\
+\x1e%\x8a\xd3\x0f\x0d\x9dn\x8b\xfa=9BvUw\
+\x0a\xd9\xbf\xb8\xcd\xc8O\xfe\x13\x91fWw\x8fh\xb3\
+)\xfd\x1b\x22\xd2\x8c4\x14\x1fm@P\xbe@\xb4g\
+\xff\x89(\xff\xae\xb6\xf4[\x01\x88\xc8\x96\xd5\xd5\xe5\xfb\
+m{\x12\xf9){&V\x80\x80\x13X\x8d\x08\xcc\x9e\
+\x1bQ\x96\xddw#\xd2\x86\xc2A\xa2\x0dk\xf2\x9d\x88\
+\x96x\xf6\x7f\x88h\x88\xbcG&\xd4\xf9\xed^\x14\x91\
+:\x92\xcc\xea\x00\xdc\x08\xd9\xb6x\xa0T\x92-*u\
+bD+ \xcd4\xd0\xec\x0f\x89\xbb\xc5cx^(\
+\x88y@y.\x84\x90\xcf\xd6\x19fW=+\xcb\xcc\
+\x10\x09\xba:k\xdd?#\x1a\x85\x0cj\x8fE\x13\xa1\
+xQ\xa0\xa8\xc3\xeb\xd9j\x90?:\xed\x12{\xe9\xfe\
+\x1e\x91\xd6\xbb6\xc0\xfe9\x11\x8daa\xb1\xa7\xe5\x22\
+\x92\xaf\xbb\x125(a^/R\x81\xc6\xdf\xda\x1d-\
+\xad\x17#\xdb\xf8\xa8\xfeix\x7f\xa8\xe4N@@\x90\
+A\x86\x01f@`\xb5!\x1a\x18\x90O.\x85\x93E\
+'QOG\x05\x1fm\x076\x5c\x9eS\xd6\x97T\xe8\
+\xd1\xe6\xa03\xe6\x83Z\x88w\xb7QD\xf3{wG\
+\x03\xe0\x08q>f\xc4\x10\xbfD\xa4\x0cJ?\xa3)\
+\x14\xca\xb8uHs\xc1\xa30\x88\x82\x91\x00\xc1\x14\x10\
+\x15\xac\x8a\x8c~\xac\x15\xc8\x06PPs\xd7\xcc\xb1;\
+\x10\x00\xb3\xd8b\x92\x80\xa1B\x0c%s]%n\xba\
+>\xfe\x9eJ\xd0\xbb\x97\x0c\x14w\xabw\xeb`\x07\xf0\
+\xb4\xbd\x11\x9fW\xd4U\x00<:\xddV\x0f\xbec\xc1\
+\x9d\x158\xa1\xf0Y[\x07\xe1\xd2\xa2\xb4\xe1J\x82\x08\
+\x1f\xf6\xa1\xd8\xb0\x22\x86\xc7\x88\x06\xfb=\xda\x17t\xc2\
+\xa1\xa2\xdf\x1c\x91\xf6\xad\x91X\x90\x13\x05u\x80f\x8f\
+\x8d(\x9f{\x8d\x88\x87\xaa\xf0{t\x88\x04{\xf1\x88\
+\x94\x18\x8a\xf1a\x80D\x14S\x80=k\xb8\x84\xf8\xdc\
+\x1e)\x01\x87\x12.\x1b5\x8b+2\x13/\x80\xcdn\
+\x22h?\x90\xe0\xf1\xef(\xac`\xd4i\x7f\xea?\x1d\
+\xd1\xf6#\x17\xb2\x02P\x5c8\xffu\xd0lYph\
+\x8d6\x8b\xae\xce\xa4}\xe9\x7f\x10\x91\xc4S\xd1V\xd1\
+ue\xf4\xcd\x8c\x10\x8d\xb6\x98R\x09`\xcc\xbf\x17\x00\
+a\xed\x15\xb44\xb4_N\xf7\x88(\xe7\xc7\xffF$\
+\x0d\x1a\x80xlpa\x12\xe8{T\x11\xb9\xcf\xca\x8e\
+x\xd5\x06\xecO7*\x91\xf6\x85\xdao\xfba\xdb\x07\
+\x00\x1c\xcd\x80`\xb4\x8c\xef%f\x88;3\xa8\xa6\xb3\
+\x9f\xe9\x5c\xb6\xfd\x1av{G\x968\xaa\xdd\xf7\xee\xb0\
+\x08\xbd\xff\xf1\x02\xd0\x83\x11\xf8\xda\x08\x15\xfc\x7fm\x9d\
+\xd5z^\xfc\xa3\x01A\xb5q\xb0\x8d\xf6\x99=\xd4\x08\
+(\xfb\xcf\xfc\x0d\x11\x89)$\x06\x02\x85\xbd\x0bZ\x00\
++\x89l\x02\x1c\x9biA\xde\x88\xea\xb8\xae3\xaf\x16\
+\x09\xa6\xc3\x08\xf3D\x80\x18b\x84.\xc4$f\xe6\xc4\
+[\xcf\xcbd\xab\x88\xc6\xa4B\xc4\xb4_$\xa2\xfc\xfb\
+\xb7F\xa4\x0e\xfc\x8a:?\x7f\xd0}\xbf\xfb\xbeD\x1d\
+\xcfM3\xda\xea\x88\xcf\x16\x8aH\xaa\xf0\x14\xbe\x00\xb5\
+\xa7\x0dZ$<\xf7~^\x05tT\x97\xca\x92\xf0w\
+o*\xf1\xc6V [\x8b\x03;J4\x81\x96\x8fH\
+\x14^\xf6I1\x8c`\x84\xd4s\xe8/i\xd6\xfe\xdc\
+\xca5\x1c\xf6\xa3\xd3\xf5|\xef(\x00\xfa1I\x8bI\
+\x00\xbe\xc5\xda\x04\xe8\x90\x1f\xd9G\x1c\xf1c\x9d\x97\xb3\
+\x9d#R\xe1\x88\x1f<L<\xea\x02\xed\x1b</V\
+5\xd7Dayz\x06\xd5\xf9\xa3\xc4\xe8\xa4\x80e?\
+\xa7\xc3K\xa1\x08\xc3\x0fF\x18\xe7\x10\x85,\x85\x15\x1a\
+5?\x8dH\x8cF\xa8\xe00?\x11\xb1\x93\x8d\xe8l\
+\x9b\x88\xd4\x18 \x9f\x839\x81]\xec\xbf\x06\xb1ck\
+H\xa0\x99@\xc7\x1c5\x7fi\x99\xb8\xd0\xa3\xde\xe0<\
+\x17\x80c\xa64\xdf\x1f d\xacq\x86{\x80\xdc\x16\
+\xdc\xd0\x81\x0aN#\x01\x97-\x18\x89\x00%\xe4\xf9\xcc\
+\xd4S\x97(O`\xe4\xd7\x80-\xf7A\xd7\xcd\x94~\
+\xce{\x98\x05\x00\xc2\xe4c468\x8f\x18\xa1\x80\xf9\
+\xc1\xa8\x1e\xf9&\xeb\x08\xb1;\xd6\x0fy1\xcc\xa8W\
+\xaaa\x05 @\x9eG\xfdF\x83\x96\x11r\x9d#\x00\
+:\x06\x0a\xc6\x22\xd4\xd4\x8d\x00O\xec'h9\xa9\x1e\
+1\xb3\x87\xf5\x01\x83\x94\xce?\xd7\x9f\xfb\x07S\x8e\xfb\
+\x88\xa6\x19\x0d@\x18\xc20\xd8i\xa8\x90\xb7\xb1\xd1Q\
+\xe0s\xbf\x18i\xd5\xfa\xb1\xcb\x0d\xcc\x9b\xb1\x1b\x17\x0d\
+t\xd6\x11y\x0e\xcf\x17\x9f\x17\x97\x03\xce!1f\xe6\
+L\xddA\xdc.S\xecWL\x14\x02\x10D\xd4\xfd\xb9\
+ 7U\x07\xfb\xa1 \xfe\x8f\x12\xe9\x8dR\xa7+\x96\
+\xe7\x9a\x89\xba\xa4\x0d\xc3\xef\xc3\x17\x812\x1d\x04\x89-\
+\x92f\x00\x05?7\x92\x05!*U\x9d\xe9_E\x7f\
+o\x8dD\xf1\x87\xd2\x0b\x00\xc1\xbf\xc3\xed@n\x02\xfc\
+\xbbJ\x01{\x5cB\x8a\xe8D\xb2\xb1\xb0\xa0\xb2\x7f\xe6\
+\x0f\xb5\xb0/\x12\xf2\xf9\x82\x04p0\xbb\xcc\x8c9\x9a\
+\x07gH\xed\x1c\x9b\x11m\xcc\x88\xce\xd0\xa9\xa7\x80\xe8\
+\x9e\x19Q;\x91U\xd5\xd3\xb3\x8c\x07D4\xbfl\x0a\
+lf\x9dgO\x8c\xa8\x08\x7fU\xcfw\xa7U\x85\x97\
+\xed\xe1\xfe/\x22\x15\xb4'\xd6h\xb6p\xea0\xe2\xdf\
+9\xab\xff\xb5\xceG\xff\xaa\x88\x86\x94\xf7\xcf\x8fH\x9d\
+3\x89\xe6\xd0!\xb4\xc8\x13\x00\x00\xb6\x86RG\xee\x1f\
+\x15\x91\xec\x1d\xd1 `\x86\x86\x83\xf7\xcf\x11\xcd\x0f\xbb\
+\xdf\x22\xa2\xcd\xdc\xfa\x01@\xfd\x9e\x07\x00\xb5^\xee/\
+\x00\x10\x09?\x05!\xc8\xaa\xd6\x8d\xc5a\xd8p\x95\xf8\
+y\x16\x1f-\x83u#\x12E\x87\x8e\xe8j\xda A\
+\xcc7Q\x07\x9c\x83\x87\x07\x98\x0e\xa7:i$\x16\xfc\
+\x1cf\x0c=\x83\xcf,\x1a3\x97\x1aU\xe9\x9f\x1b\x91\
+\xee;\x07(T/\x12pD\xd6\xb6\x91h\x8f\xd6\x8d\
+\x99.\x88\xcb\xc0t\xd1hJ\xf7\xf8\x08u\xae\xaeH\
+>\xd0\x87\x0dT\xe9\xd9\xbf\x22\x92\xea?\x1dk\x8d\x84\
+\xe0\x1eaD]\x1de\x90mw\xf2)P\x19m\xc0\
+n\x86\x19y\x12I\xee\x0b\x1dM:\xfb\x1cX\x00\x09\
+P\xe9T\xb8X\x93\x02\xa4Z@\x02\x14W?\x0f\xdc\
+\x17\x10|:cJ\xfc\xab\xb8\xd6\x86iV\x92\x03U\
+\x1d\x02\xcf\x9c+A\xb6H\x1e\x1dO:{\xd8\xf6\xd1\
+\xf1\xc2V\x8f\xeb\xa8\x02\xda6W0:H@\xe8\x00\
+I\xfd\xde\x9drf\xfe\x19E\x80b\xaa\x04\xda\xc0\x82\
+\xae\x8b\x81T\x01N\xf69G\xfd]\xb3h\x9ei\x96\
+FK\xf7\x87\x81J\xed\xcf\xc3\xf3\xcb:\xa5\xa3\xaf\xfb\
+c`\x82Q\x0bD\x109w\xf6\x14\xe0\xf5\x171\x81\
+z%\x5c\x14\xa80\x89\xa0\x9c\x8a\xfa\x080\xc6H\x89\
+E\x91\xf8\xfep\xbc\x19\xb1x\xc6@\xd5\x9e\xdc\x11\x91\
+\x12S\x9e+\xd9\xad\x91\x00B\xc9\x06\x88,er-\
+\x94\x10W\xe5\xe0\xee_\x1d\x91\x80?\xd9\xce\xe2C^\
+;\x92e\xdd\xf4O(\xb1AK\x14\xad\xe6\x8e\xc8\x9e\
+|\xcf\xd14\xe0z{\xd6\x1f \x83\x82\x9b\xfb\x8b\xfd\
+\x13\x05\x11\xeb\x09\x00\x85\x91\x01\xed\xf3\x1e)R\xc2\xdf\
+\xbd-\x22\x01\x00\xda\x97l\xe3\xaaN\x106\xa5\xb3\x17\
+G4`\xcc\xa3_0\x98\xb4\x8fx\x96Q\xfb\xcc\xe4\
+\xb8\x88\x06\xcc`\xab\xc8\xfe\x05\xc0:Y$\xa2\xbc\xfe\
+,\xa2\xbc\xfe=\xa2\xb9\xe1\xe0\x1e2\xfdIDb6\
+\xa9\xb3\xd9m\x1fQ^o\x8eH@\xdf9%\x82R\
+\xfe\xb3\x12e\xbdt+\x97\x88\xc2\xf1\xda\xee\xba\xee\xda\
+\xd61\xed\xffU\xe2\xbe\xc4\x08\xa4\x13\x03U\x98\xd1\x1e\
+\x89k\x22R\xe7\x06\x00\x00\xe3\xaf#\xc48\xdaH\x0c\
+\x97\xa7'\xe6\x83\xf6\xad\xee\xac\x88FU\x07\xf0\x8c\x81\
+\xc0\x0a\xf0S\xd0\xc2\xf0\x13\xd3\xa1\xbb\xb1\xc4\xef%6\
+\x19\xef\xb3F\x84\x0a\xd2\x85$\xfa\x16\x9d\xd2\x7f\x97\xb8\
+_\xcf\xcd\xd9*\xd8_&f\xcf\x9d\x8d\x11j\x8d\x1f\
+\x89\xe2y\xdf\xd49k\x06K<\x0f\x175w\x083\
+K~\x1e\xd1\x80\x1e\x0aS(\xeb\xee\xcc\x1e\x13Qm\
+\xf5J\x94\xf7}oD\x1au\xd2\xfd\x82\xb2\x1f\xfc\x9b\
+`\xe0\xf8\xfc9-\xa2\x15\xec\xd3\x13#\x9a\xeb\x03\xc0\
+\xad\x818\x15\x90\xee\xf4*\x0f\xc0~\x98\x04\xbe\xa4\xcb\
+\x03p\x83\x0a\xb9\xb4<p\x19\x0a\xbeb\xec'\xf5\xb9\
+K\xfb\xb0\x99\x8f\x8c\x18i\xb4\x02\xe6Jx0\x85\x0b\
+\x93\xf3\x15\xf2\x90\xab\xab\x0aJ\xdb\x8f\xc8K\xb1\xf9\xdb\
+d\x18\xe9\x99]6t\x12g\x0f\xcc\xfe\x13\xb6\xa3\xd6\
+(\xe2\x1c\xe1\xdc\x83y\x88j\xbc\x00Ywf\xe5r\
+\xe0\xc2\x06\xc6\x19\x9f\x87\x02\x87\xce\xad\xceq\xe7U\xd8\
+\xf3\xa1\x11@AF~\x05#v4\x8aF>\x86\x1b\
+\x84\x01\x22\x0aQ\x18\x83\xcfV\xbe\xb6\x8c\xf2*F(\
+\xc4\x80\x98\xdd7\xe4\x1b\xe4i\xfd\xae\x11I\xdb\x88\x02\
+\x8c\xba\x84z\x80\xfdG\xfb\x13\xe7\xb4\xcf\xcd\x1fj&\
+\xfd\x11\xea\xfcR\xa70b!\xc0\xdd\x8d%\xf2^\xed\
+\xd7\xbe\xaf\xfc\x07S\x83\xeb\x83m\xb4\xf2p\xb4R<\
+j\xc7\x88#@\x04\x0c\x22\xd6\x05y\xdd\x195\x1ap\
+\x0a0\xc7\xef\x03, :\xc9h\x08\x0c\x1d5\xca<\
+\x82\x0b\xc3L\xcc-D==\xaa\xa5\xfd\xf6!\xb6u\
+:'\xbc>\xc8\xbf\xb9\xee4\x1a\xb1\xbd\xc6\xa5D\xcf\
+\xa35#\xc4\xf8\xe0\x1c\xb3He\xb6{\x7f\x5c*\xb0\
+Yg\xcc\xbc\xf3\xe74\x06\x00\x9e\x19\x85A\xfb\x03\xb1\
+i\xdc\x0fp9\xc3N\x11F\x0c\x0d`\xf2-\xf6}\
+\x80\x0f\x0ay\xeaM~\x9fF#\xda>0\x0b\x10\x8f\
+\xc7\xce\x1b1E>7\x8d-:\xf9<\x17\xd4\xa1<\
+\x97\x88\xf4\x92oR\xbfs\x1d\xa8\xaf\xf9\xfb\xdc']\
+\x979\x7f\x11\x90\x13\xa8\xf5P\x15\x03\xd1X7Qi\
+\xb0\xf7\xa1s\x0aB\x17o\xfb\x97\x87\xb9A\x14\xd8\x91\
+\xe0=!Q\x7f\x00\x14$2\xe8\xce\xfc2\xf5\x11o\
+T|F\x09\xe2qEM{\x8d\xd4\xf1\x8fm\xe5\x89\
+I\xe5\x7f\xb5Zj5\x00\x80\x1b\x01u\x92\x04\x10j\
+\x15\x7f\x8fY\xbd\xf1l\x0aT\x0c\xae\x0f\x9d\x7f\x10\x99\
+('ni\x88\xa4U\xcb\xf9\x9ePv\xa0\xae\xaf\x22\
+\xc4\x14\x11\x1af\xb6Th\xf4_\x8e(\x97\xe5]\xd3\
+C\xa6\x87\xa4\x05H\xc7\x92\x8e\xa9:\xf9\xb6\xe1c\x01\
+\xa9\x03gU\xdd'\x0e\xd4O#rP\x5c\xf8\xf9t\
+\xa6d\x93\x02Be\x8a:\xb3V\x14p\xb2_\xc2~\
+\xa5\x7ffD\xf2\x99\xc7\x1eHTb\xcf\x96S\xd0\xd0\
+\x11\x13\x90\xe0D\x12$P\x1b\xf1t\x97\x88\xf2\xfeg\
+E\xa4D\x90\xce\x04\x88'\x14\xaa\xd1,(\x94w(\
+Q\x93\xeb#\x92]\x1b\x858\xf7\xf1z!eB\x90\
+\xf9\x9e~\x00\xd14`\xe3\x04\xb1\x83\xd2\x8a\xca\xab\xc4\
+\x12\xffK\x14\xf31\xe9\xe0\xe0\xe72;\x0e%\x9d\x07\
+\x9e\xc2\x96uy\xa7\x90\xd65T\xe0\x0aP\x01X\x82\
+R9\x1e-0@\xb0VDy\xdd,\xa2\x89\x0b2\
++\xd5\xaf\x1cQ\xc5\xc8\xaa\xca\xf1\xecw\x11\xe5\xf7W\
+\x8b(\xbf\xde0\xa2\xbcn\x1c\x91\x00\x05\x0a\xe0\x9fG\
+4-\x0c\xcf^Sh3\xd3JGE3xt\xb6\
+\x0d\x18\xf1\x9cJT\xc6\x149:\xfd \xd0\xa2\x90\xfb\
+y`\xf6\x0c\x8a\x9a\x00\x1c\x12D\x1f8\xd8\xe5\x89\xb2\
+\xef\x04\x12_j\x80\x06:\x08$\x5chw\xa8@\xa1\
+3a\xd1$Q\x01\xcdH\xd1\x81\xebN2\x07\x1d\xbf\
+\x16\xd0\xc3\x01\x83\xa6\x82\x91]\xd6'L\x10\x00)\xec\
+#\x19\x19@\x5c\x0d\xb11\x90v\xde\x8fN\x09\xa2\x9c\
+Jx&\x1f\x8aH\xef/\xdf\xf0\x92\xae\x0fj\xd5\xb7\
+\xab\xb3+\xcd\x0dS_I\x94\x00\x1e@\x96\xb9\xaf\x88\
+\x1eA\xadW'\x9bN\x17\x89\x99\xa9\xf5J\x80\xba[\
+\x22\x9ax\x0d\x09\xbd\x018\xae\x07\x1dF\x12\x0e\x12\x1c\
+\x0e8\x9e\x17\x18h\xdcGl\xc3dg\xc8\xec\xfcD\
+\xaa^\x14\x0a\xd6\x96`\xbd\xf0|\xc2T\xe1\xfdHL\
+\xd5\xe9u\xa2p\xd4\xb0\xbf\xf5[\xf6[\xf5[\xd5\x7f\
+\xff\xec\xf8\xf7<O0\x9b\x10W\x82\xb9\xd5\x1f\x1c\xa1\
+\x0e\xcd.\xed\xe7\xb2\x8f\x84\xf4[\x8c\xf0t\xbbM_\
+\xd9\x95u8}\xc1\xe4\xf9\xd3\x17\xa4\xd1\x14T\xcfI\
+\x00\xb8\xcf\xef\x8aH\x05\x01\x1d/\xce%\x98Uh]\
+\x88Z\xed\xce\x0bT\xee\xc3#Z\xc7\xd4TvF\x8a\
+\xb4\xce,\x8e\xc5\xa8\x01\x8c\x00T\xcc9G\xd1v\x11\
+\x00kq@\xdc\x11\xc4|\xe0\xfc\xf5(\x17.\x03\x02\
+\xce)\xa0\xbd_\xc0\xfca\xbf\x97]\xae\xc52\x19\x1d\
+\x80\x11\xa1\xfb\xdc\xad\x19Q^\xffX\xe2\xb6F\xf5G\
+\x14\xb0^\xb7\x93\x12\x80\xf6N\x01T\xecG\xea\xd8\xd6\
+s\xf8\xed\x89\xf9\xc2\xe7\x90=\x9d\xedI\x19m\x8a\xf7\
+=!\x89+\x1fS\x1d\xd8\x07`\xf0\x0f\x0d\xe0\xafT\
+\xf9\x0bF\xa2]\xe5\xfeL\x1f\x88\x10\xb3\xed\xc5md\
+\xc0\x1dd\x01Q\x88\x19VQ\xaa\xfd\xc5\xd0(\xcf\xdd\
+\xfc\xa9%NI@\xb3\x18\x86\xb5\x91\xb1\x9dF\xc7\x9e\
+\x96\x98I\x88\x8c}3\x22i\xd6\xc4\xf9\xb2\xa6:\xe1\
+\x1fI#\xa0:\x17a.\xe1\x1a\xe3Q\xb2\x13\x22\xda\
+\xf9n1;\x01 \xac\x03\x03\x0d\x12\xb1\x0cI\xc7*\
+\xea([\xca\xf9[#\x1a\xc0\x00\x03\xc8Z\x07\x1a\x91\
+\xe8>\x14\x91:\xfe\xda\xc7Q\xcf\xee^\x15Q\x99Z\
+5Q\xef\xf7\xe9\xf7\xed\xf7m\xe7r\x7fe\x84\xf6\x8b\
+\xcf5\xcd\x0d\xec@\xbbOG4\xe0\xca@\xd7A\xc3\
+\xe7\x9c=XJ\xf4\x07R\x01!\x86\x95\x19\x02P\xaa\
+\xd9_\xc8\x07\xb4\x8e<\xa3\x8e\xcd\xda\x9dj\xc05\x97\
+\xac\x0d\xea\xec<j\xf6\xa2\xe0\xe3\xeeb-&\xddO\
+\x9f{\xe4w\xe4\xbdt\xd4\x99]&\x8f\xa7\xb0\xc1\xff\
+\x5cL\x02\xc4\x1c+\xaf\xed\x8cTX\xb3o\xa35\x00\
+SI\xe2\x94.\xe0Q\xd1G\xf4N\x85\xaa\xed\xf6\x18\
+q8@v\xb2P\xa0\xc9\x8b\xc9K\x05\xb8\xcen\x18\
+\xd9R\xab G\x14\x90\x06\x09y\xdc\xecE\x11\x89\xb1\
++\xa0\xd7\xf6\xb5\xec\x97\xec\xab\xd8\xe6\xcae\xc7\x00\x85\
+\x1a\x85\x88\xbb\x9a\xb17.\x8c\xd1B\xa2\x13\xcd\xc8\xab\
+\x80[\xe7M\xcc\xb2\xd3\x00%\x0f\x82\xf1\x86v\x10y\
+(?\x87\xbc\x09\xdbqFS5\x1af\xf7\x00\x98-\
+\x00@0\x80\x00\xd2\xe9,\xcb&\xd0\xfb\xefXD\x8f\
+z\x02-\x05\x1au\x02\x90\xddX\xc4}\x86Q T\
+\xebu\xde \xba9\xdbG\xa3\x154 \xb4N\xbc\x0e\
+a`\xe2F\xa0\x86\x8dG\x1c\xb0\xbb\x83\x11\x0ae\x9f\
+\x11B\x00\x01\xb4\xc8\xd0\x90\xf8\x5cD\xea\xc0\xa3Q\xf1\
+\x9d\x88\x04\x00\xd0\x00\xe6\x95\x06\x13\xf7\x81\xfbG>\xca\
+:\xe5\xb9\x01`\x17\xf0`\x80\x88z\x93\xfc\x83z\x14\
+\x0d\x04~\x1e\xeb\x86\xdf\x87\x09\xac\x91:\xaf/\xea=\
+\x98\x1a\xfc}\x80\x1d\xe5Cs\xffe\x83\x97\xd4\x14\x99\
+\xf5\xaa\x1d\xf9g%\xf5n\x1e\xec\xe8\xc7?\xfea\x0a\
+c\x12&\x1eT\x10*\x18\x02\x00\x07\x14\xe4,t\x0a\
+$\x90\x0b\x16\x98\x10\x9e\xfay\xd6H\xcc\x00\x12v.\
+\x1c\xefK\xc1\x85h \xb3yt\x98\xd8\xc8X\xe8\xd9\
+wre%\x92\xab$\x00\x02D\x05&\x00\xdf\xeb?\
+\xd5\x00\xad!3\xa2\xf4\xf9 \x92\xc8\x13\x9d\xf3n\xc5\
+\x88vc\xcb\xf63\xf8\xdf2K\xc4\x8d\xa7\xb3p\xc6\
+\xd0Q\x98\xbdE\x94\xb6%\x86B\xbd\x7fE\xff\xf2\xfe\
+\xe5)qb#\x95\xda\xbcg\xdd\xb0\xa3\xd2\x81\x09\xf5\
+\xc7\x89%*\xd3\x88\x82!\x12\xc5,]\x88[ui\
+\x03\x84\x12\x0c\xf3C\x9d\x8e\xd9\x19\x11\xe5s\xfd(\x22\
+\xf9\xf9B\xa1\xd2\xf5e\xd6\xcf\x08#\xaa\xd4\x14\x8eJ\
+\xd0\x10\xd3\xb1\x1a0\x0f\xbc\xa8\xeb\xb5SsNJL\
+\x10u\xa3 \xc0O\x1e\x0a\x93\x122\x0a_:&F\
+\xc4\x16\xd2L\xde\xf74\xe3\xbf\x81f\xb0\xf5\xe0\xd2y\
+w\x82J\xe1\xc7\x8c\x16\x9d*%4^\xbf\x14Fl\
+\xcc\xac\x1b\xd6\x1b\xc8+\x1d:6N43x\xdev\
+\x12\xc0\xb0\xfa\x00x\xcd\xf6\x8aHH,\x949\xd4_\
+\xf1\x11\x97\xc8T\xff\xee\x88*\xbeS\xa9d\xb3\xeb\x06\
+\xa0\xa7\x7f]Dy]8\xa2\xd9\xb2@QE\xf5y\
+\xb6LDZ\x17\xa8\x8cr\xddQ\xcbG\x05\x1c\xaa\x16\
+\x94Y\xae\xb3\xd6\xbd\x01 (\xe4$D\xd8\xb4\x014\
+\x22>Jg\x80\xebIb9\x16/\xe5\xa0G\xfd\x9d\
+Y8\xfe\x9c\x8d\x90\xfb\xa1\xe7\x0c\xaa\xae\x01O:\xdc\
+t\xf6\xc5\xb8\xe1\x80p\xa7\x83\xfb/13:+V\
+\x81F4\x94\xcfA\x82\x8b\xb8'3\xc9\x9aU\xb6=\
+\x10\x94P:\xa4$d\x5c'\xee;\x1dn(\xce\x1c\
+D\x12\xcb\xe3:9\xc1a\xf6T\x9dZ\x00\x80\x92\xce\
+\x0c\xa2O\x07\xaacu\x9c\xb4;\x04|Y\xe5\xfd\x03\
+b>0\xa2AA\xf2\xc0\xb0\xef\xa1\xce\x0d\x92\x1e|\
+\xa8\xca\x88\xda\x7fx\xbe\xfb5#\xca\xeb\xfb#\x9aO\
+1\x9d\x5c\xd4\xa9=\x03\xc9\x8c\x1c\x09\x00@\x08\x94<\
+\x00\x1d:Z\x5c\x171\xa2\x0c\xdc\xfcl`\x00tG\
+G\x94_\xff!\x22u\xfc\xafU!Ib\xb8JD\
+\x02\x16\x98\xe1F\x8d~\x8d\xe1\xe0\xf4,\xa1\xee\xbfE\
+\x9c\x9e\xa5\x8e\xe2\xd7K\xa1\xff\xf5\xe4\xa7\x0e\xe5W#\
+ \xb3c\x22\xd2,\xa6\x00\xa0\xaa\xba\xbeb\x9a\x89\x85\
+2\xfe\x85\x05\xc7\x07u\xb8\xac\x89\xbfT\xdbT\xdd\x17\
+\xab\xd9\x7f\x7f\xa08\x9b\xe2\x89\xd8)\xcc0\xec\xf74\
+\xa2\x00``\xd7\x00\x01\xd8\x88\xc6\x1a@c\xb6\x1f`\
+\x0f\xa0J@\x9e\xcf\x03fa\x19\xe5z0\x22%z\
+\x00\xb2\x129s\x874:\x5c\x17'\xe0?\xca\xeaS\
+T\xc0_\xab\xefyw\x02\xc0\x10o\x85A\x17\xfc\x92\
+\x9f6-\x09:\xda\xb6\xbf\x14\xe3\x81\x82r\xfa\xa5\x88\
+\xa6\x9dc\xf7\x9d7\x94x}y\xdd\xab\xc4\xde\xe5\xcf\
+\xb7\x9an=\xdd\xba\x01\xc7\xfd\xf9\x11\xb5\x00\xae3\x9f\
+\xf5\x5c\xf8\xa4:c\xb7\xa7\xf3\x85\xd1\x8b\x85\x22\x12P\
+\xad}\x0d\xad\x9cz:\xfd8\xad/\xb9\x10\xd9\xcd!\
+\x0a\x8d3\x12u[\xcfIwA\x89rNL\xdf\x18\
+\xd1\xb4\x83\x9c\xe0\x05\x7f\xe7\xdd\x899\x80]\xdc\xf7\x22\
+\x12\xb0\x1d\xe7\xc4g\xca\xfb\xd4\xff\xca\xdf\x7fF\x84\x9e\
+\xa7\x0f&\xe0]#[\x15\x08:,1\xae\xe2>\x9d\
+\x9c4^B\xbc\xf3\xfd\x12\x9b}cr\xab\x09@\xfa\
+S\x09\x08\xf8\xcf\xd0\xa9f\xb4\x0e\xe6Q\xb55\x5c\xa2\
+\x9d\xdf\x8cH\xd1\x11\xf4H\x09\xe7\xadF\xdd\x0c\xb4\x0b\
+0\x040\x98~'\xa2\xbc^\x17\xd1\x80@\x03\xa2\x1a\
+\xf9B;h\xf2\xe7\x88\xday\xac\xfb\xe5\xe4]\x1a\xbd\
+\xbc\xb1\xfb]\xf7\xbbVHw\xb7E\xb4\xf59\xbb'\
+\x22\x89\xb9\xe9~\x97\xdd{\x00.&:\xf7\xafR\x01\
+!\x80\x12&\x8a\x0bM\x15H\xce7\x04h\xf9\xfb\xc1\
+\x14\xc3}K\xaeE\x16O\x85\xda\x8b\xf8\xafT\xc8\xd9\
+\x0f\xec\xea\xc2\x08\x10y3\xaf<\xd7c\xbb4\xfe\x83\
+\x91\xc59\xca\xf9\x0e\xb3%\xe0\xad\xa7\xa7\xc2\x06\x11\xd0\
+M\xc5\x188E\xf7\x9bs\x1eM\x16\x80v\xce\x13\x1a\
+\x5c\x9f\x18\x1aL\xb6\x85U\xa3\xc3b\x8cO\x8e\x90\x1b\
+\xc6v\x8dyg\xa6\x82\x80\xf1\xd9.\x11i\xc4\x8d\x99\
+m\x01\xb8\x1e\xfd\xc3\xed\x01\xcd(\x0aX\x89\xc72\x82\
+2[6\x221\xfa\x18Q\x12\xc3\x17\x11P^-\xea\
+\x0a\xa0\xfd\x88\x91\xf81\xdf;\x06\xb0\xa7\x899\xccL\
+=\xf5\x00ZXt\x80\x01H\xc5\x1cp]F]\xc3\
+\xbe\x22\xa6\x97m\x9b\xd1\x90 \xef\xe4\xfa\xe0\xb6\x00\x80\
+\xc4h\x08\xe2\xc94h\x10uF\xe3\x81\x0e<\xc0\x03\
+\xdf\x8b\x11F\x01\xd5v\x15\x10`\x0b\xb3\xcdy3u\
+\xe0\xd6Z?\x8c\x16|e`\x0c:\xefV}\xe5\xd9\
+w\xb4\x82\x10\xd7#/\xa4^c]S\xe7\x02`P\
+ \xc3\xc8b\x84W\xf9\xa3\x9f7F\xb5r\xa3\xfb\xf6\
+$\xa6\x09\xc3\x97\x02\x9d\x9fG\x1e\x0c\xf0@\x83\x82\xcf\
+\xc1}\x84!\x00\x90\x070\xa3\x11f\x03\xfb\xfc|\x00\
+\x00\x98\x8b\xd4\xdfh\x1f1\x92se\xc4\xc3\x8c\xba\xf3\
+\xbc\x09\xb0\x983U\x93\x1b\x99\xed\xeb\x1e\x97\x0a}\xc4\
+\x8c\xa2\x1c\xdb\xa4m(.\xd0\xa2<<\xa4\xf9\xd1\xd7\
+\x89\x96\xdf\xaa Z:Q\x1f\x94\xd8\xd4\xdb\xbdx\xa2\
+\x86\x8c\xd4\x9c\x11\x1d\xf2\xe7\xda\xbc\xcaD\xb4\xcf\xc3\x17\
+\x8a\xcb\xb9X*\xd4y\x1f~\xcd\xec\x07\xff\x0e\x04\x0d\
+D-\x03\x00+&*p\x5c\xc8\xd5\xd2\x05\x03\xa1\xa5\
+\x90#A\x8c\xff\xf7i\xa3\x8c\xb2\xf1O\xda\xb8\xfb\x96\
+\xb8\x1a\x81\xddO3\xc8|\xfe\xb1\x0d\x98\x90\xcf\xfe\x8f\
+\x11\x8d\xba\xd2_\x11\x916\x02\x1d$P\xad=\xf3\x0e\
+\x22\x86\x0f-\xd4mQ\x12)\x5c,\xfa\x87\x8a,\xd4\
+\xb2oG\xa4\x07\x99\x0d\x12\x91&\x16.\x89\x9ef\x1c\
+An\xfb\xb5\xfa\xb5\xfb\xb5\x9b*i\xf7\xc4\x88\xf2\xfb\
+_\x1d\x0aJ\xd4\x98\xe9\xc4z\xd6]\x1b\xaf\x13.\xd9\
+\xa6\xd86\xeb\x7f#\x12`\x82m!\x8c\x05\xdd\x0e\xd4\
+\xc7\x8d\xd8#\xda\xc7\xcc\x9a\x90=o\xb0\x88f\x9c \
+\xa4\xfc\xe3\xa2t!\x1e\xc5l-\x089\x07$\xa2\x5c\
+\x88\xa5 \xe2\xc1\xc6\xc3\x03\xcaF\xc2\xac\x10\xcf\x9b\x90\
+]\xcf<iF\x90\x8e\xa1]\x08@\x80\x01\x16\xee\x17\
+\xd0\xc6\x86\x02p\xc4\xf3\x89\xfd\x1e\xc0\x8aD1Kz\
+v\xf4\xe4\xe8&R\x83\x86C\xff\xb2\x88\xf6\x5cxV\
+\x0e1\x16f\xe9@\xe2\xf5\xfb\xb6\x97\x832\xa5u\xe0\
+\x19'F~\xb0\xf9b\x86\x10-\x00Q\xe7f\xf7F\
+\xa4D\x05\x11!\xa8\x84\xdcX:\x22\xfc\xf9\xffD\xb4\
+\x04\x19`irxD+\xa8\x11g\xb2=\x8d:\xf1\
+t\x82\x0d\xb8\x8c\x5c@\xfc}Q!\xa7\xc3.\xfbI\
+\xdb\xd6\x91(\x81\xf0\xeb\xa0\x83\xc9AgbrMD\
+\x02\x08\xd87)T\x19\x9e\xa4\xe0\x85\xca.\x8a\xbc\x99\
+\x14\xa8\xd0\xa3v,j\xa55E\xc4\x90\x98\xad\x1a\x91\
+\xa8\xde\xdc71\x87``\xcc\xf6\x1e\x00%w\x86\xa0\
+\x22\xc2|a]\xbd^\xe2W\x14\xba\xb2]3\x05\x19\
+\x9f\xac=\x16\xec\x1e\x09\xbdE\xd8\x00\xe4\xe84i\x7f\
+f\x1d:\xe1\xd82\xa2\x15\xf2\xf3gE$\x910\x00\
+ \xec\x03_\x1b\x91\xecv\xd0\xc0 !V\x87\x10\x00\
+\x04\xa6\x92g\xfb`\xd4h\x84e\xc1\xdbe#w\xaf\
+\x9eo4\x1b\x10W\xba/\x22u&\xa0z>]\x9a\
+\x03\xec//U\xc7\xf99\x83\xd8\xea\xe4\x0b\x93\xd3\xab\
+J8\xb6\xac?\x8aH#P1\x83~{\xea\xc0\x07\
+<p\xba:\xc5\x8751\xab\xfe\x97\x11iDL\x09\
+/\x07\xfe\xf4\xae\x88\xa6U\xd1\xbf=\x22\xa9\xce\x7f:\
+\xa2\xadg\x00j\x9f\x0f\xa8\xa3k?\xf6\xf7\xa7\xe0P\
+a\xe5\xc2\x02W\x10uH\xdc\xd9S\x02d\xfbS\x12\
+\x22F\xa9TP\x1a\x18[\xb2\xaa\xe24\xb5s5\x10\
+*P\xb1D\xb2;\x8b\xf2\xf1#\xc962\x12\xee\xc5\
+ZBW\xf3\x91g\xa7D4\xf8%\x8b7\x1b\xda\xe9\
+9\x11\xe5\xf5\xd1%\x16i\x9d\xf5\xb9\xcd#\xca\xef\xbf\
+\xa4D\xb9o\xd3\x1fGTw\x9d\x12\xadP\x9b\xff\xf2\
+\xfc\x97\xe6\xbfTG\x0c\xaao}\x15Y{\x92\xc4\xe4\
+\xeei\xc0\xa6\xc5\x0a9g\xf4\x1c\xf5{E$\xbb\xdb\
+Q\xbeU\x01\xb1\xfd\x93\x86\x90\xce\xdb\x0a\x04\x86K\xd0\
+R%\x96l\xe2yu\x04\xae\x14\xfc\xdd\x03%\x1e\xd4\
+>\xb2ks]2\xd3\x05m\x02|\xabu\x0euk\
+\x97X\xa71q\xc2,mV>\xcf\xfc\x96%\xb6J\
+b}/\x8bh6\x96\xb3-J<S\x14\xda\xbf\xb7\
+\xc2\xa2\xda\x0d\xbe\xa5\x9d\x83\xb3\x15J\xac\xd8\xec\xf2\xaa\
+\xc8\xdco\x12\xd0\xbczD\x9b\xbd\xf7h\x93l{}\
+\xee\xbf.\xa2\x89I\x9a\xa9\xc8h\x9a\x1a!\xdd\x9f\x22\
+Z\xde2\xdd3\x22i\x0b\xb0n^\x1a\x91\x98v\x14\
+\x5c\x8c,0zy@\xb7\x7f\xb7\x7f\x13\xcdB\xeb\x06\
+\x95\x7f\xf2\xbc\xfe\x9e\x12\xf7&qQ1\xf4\xdc\x11\x94\
+\xfa<\xcf\xdf\xe4\x88\xb2\xff\x1cQ\x81\xe07\xd5\xbck\
+-\x8dH\xe0:B>\xca\xe8\x18@!T~\x98\x8e\
+hP\xc4\xfe\xf9\xa4\xd6\x91\xae\x1d\xd6\xb7\xe9\xfc:,\
+5\xc6x\xa5\xe0\xd4~\x8ch\xb3\xf3p\x0a\x14\x98\x95\
+\x14\xfc\xe4\x7fq\x8a\x9c\x9b>\x17\x85\xe6\x18`\x8f\xec\
+\xe8\xe6\x9a\xcf\x0c\xa2r\x88J\xaaC\xea\x02R\xc0\x9e\
+\x0b\xd86\xcb?4p\xa4%d\xc6\xaaF\xe7\xea:\
+\xdc\xa2\xae\x83*\xf6X\x15\xb8\xd6M\xf91\x057\xf6\
+\xa0\xd2\xd6\xa1\xf3K#\x051Z\xef\x1bP\xfb\xe9\x88\
+\xd3I\xdf1\x22=\x970\x90\x01\x82cde\xa1\xf6\
+\xfbt\xba\xd1\x18\xf1\xe8\xcc2\x12g=@LR\xf2\
+BF\x0c\xc3u\xe7\xb0\xb4\x1e6[\xb0i\xbd.\x8b\
+\xab^\xa2\x13M\xa3U\xdf\xcbv\xbb\x14\xdc\x02@\x9d\
+\x0f\x92\xc7\x03\x10 \xbeM\xfe\xc8\x88\x06y\xa3F[\
+L\xe1\x87q)\x86\xa3\xef7\x055\xa2\x92\x8ctH\
+\xbc\xda\xe7\x22\x80\xb6F\xb4\x9c\xcfR\xd0\x92G\xd1\xb0\
+e\xf4\x00M\x0a:\xdd\x8c\xa0\xa8\x8eq\x03\x0a\x91=\
+=\xff\xce\xa3\xc9\xd7i\x04\x01d\x8dEg\x19\xc9\xe0\
+s\xd1\xb8&1\xe3s\xd2\x88\xe1\x95\x863\xeb\x17\xd7\
+\x0bF*\x10U\xe4y\xa2~D\x13\x82<\x02\xa6\x13\
+\x7f\xce\xf7\x12\xb3\xd8\xa3\x22\x00\x8e\xfc=\xf2\x22\x9e\x1b\
+\xbe\x1f\x7f\x0es\x12\xa6?@\x83G\x006\x18\xa8C\
+\x88\xf4y\x96\x95\x0e$\x07U\x94\xcbk6D\xd6\x0b\
+\x89/N\xa1\xcd\x8dd#\x80\xfa\xf0\xa8\x08Qb_\
+\x90\x0af\xd9\x08z\xd4\x00\xc4b\x5c\xa8g\x11\xc05\
+\x92\xaa?_\x8c\x8e?\x05<\xda\x00Y\x04b\xdd\xf4\
+k\x18\x040\x0c\x22\x11Z9\xd9\x11\xe6\x91\x80\x95\x9b\
+\xd8\xe0CT\x1e)P\x00\x1e\xb8\xd1P\xd1YX\xfc\
+\x5c!\xde\x93\xad\xb4`\xd5\x11\xac\x8fwP\x83\x9f\x17\
+\xd1\x90\xac\xfeG\xfd\x8f\xfbHH\xbe\x17\xd1D\xdd\xfa\
+\x17E\x94_\xbfs\x98\xf1\xefv\x89h3\x91\x9e\xf1\
+R\x22\x8c8\x87\xa9:\xeah\xb2\xc1\xfaz\xf3\xc0\x03\
+L\xa8\xd3\xc2\xac\xba\xa9\xb20\x1e\xc4\x14\xe8/\x8a(\
+\xbf^3\xa2v~\xaa\x9f-\x89h\xf7\x9an\x9fn\
+\x9f\xba.\x06\x04q\x15%\x88K)\x81\xc3\xc7R\xf6\
++\xfd\x9b\x22\xca\xbf;6\x22QK\xd5\xc1\xe8?\x1e\
+Q\xfe\xddZ\x11-\x11\x98\x5c\x1a\xa1Df\xcb\x9aP\
+\x0f\xa2;\xda\x10,\x82\xa3\x990(]\xa6\x82\x22\xb6\
+\xc4\xc6v\x8b\x0eL6j\x1e,\xa8C\x02L@T\
+\xf9sSq(\xe8\xa0\xfa\xf0\xa0\x02(@\x99c=\
+1KJ\xe1\xc4\xcc\xdc}:\xa0\x96\x1e1dx\x1f\
+\xd6\x1f@\x12\x00\x85\x98\x06\x06F\xb6\x8fHv40\
+9\xd0z\x00)\xe6\xf9\xe7?\x0e\x10\x10|\xa8\x8a\x1a\
+]A|\xc9j\xb8h=\xf0\xdc\xd3\xd9\xa7P\xd3\xdf\
+\xb7\xaa6\x80\x12*\xe5\x1c\x1c\x1c\x04\x14\xe4\xf8\xe0B\
+\x85g\xc3c\xa3\xc3N\x8f\x9f\xc7\xfbhTa\xac\xa1\
+\xe0\xfb\xaa\xfb\x89\xba\xb8\xaf+\xb3\x83\x88\x14)A\x85\
+\x1ag\xbb+\x80\x22\xa8\xf5P~a\x08\xd1\xe9\x85\xa9\
+2\xf6\xaf\xa5\xc3)\xaa\x1e\x8c\x01\xd6\xb77nf\xf2\
+a\x5c@5\x13P\xd4}'\x22u\xd6\xde\x17\x91\x0a\
+o\xf9\xce\xe3\xdeQ\xca\xce\xe1s/=\x1cd\xd8\xd4\
+\x99\x8aO\x22\xfb\x0bu\xe0\xb9\xff\xec\xb3P\x9ca<\
+0\xab\xad\xeb1\xddq\xfa\xe2\xe9\x8e51Z\xbd&\
+F\xf2\xed\xc6v\x10\xd9(\xc4%m\xd7\xc79\x03\x15\
+\x9f\xd1\x0f:Gb\x00\xb831\x12\xa9E\xac\xd4\xa3\
+H0=\xe8\x14!V\x06\xf0x\xca\xc0@\xf2,=\
+\x05\x88|\xcd\xbboG\xa4\xfb\xf6sQ\xa2\xd7\x18\x0a\
+\x99\x05\xdf\x18f4\xc3e=f\xf3\xadBN'\x93\
+\x99M%p\x8c\x8aU\xf1\xc1\x9b\xeayqq\x15\x13\
+\xbdx\x98\xf9DL\xc8\xd4Kux\xfb\xf7F4\x11\
+\xb8~\xad\x88\xf2\xfa\xd2\x88r\xa0\x1f\x18!M\x95\x83\
+\x93\xf6\x81\x18\x16\x9eu\x95\xa8\xa7]ip\xcf\xa1\xb3\
+/\xc6\x13\xb3\x97u&zK\x01G\xdb7f\x8eG\
+\xdfpO\xa0#\x07#\x80}\x94\xce\x9c\x80\x02\xbb\x13\
+\x84\xa8\xda2:\x7fWM\x1a\x06\xa8\xfc\xefWb_\
+%\xe6\xdfPB\xf7\xf7\xd4A\x85\x11\x02\x10\x0c\xb3h\
+R{\xaf\x0b\xa6\x17D\x94\xeb\xf2\x9a\x88v\x1f\xb1\x8d\
+\x9d[\xb8D\xf9\x5cs?\x89\xa8\xb6v\xa7N\x83)\
+\xf0\xd3\x88\xd6\xe9\x83\xca\x8a\xb6\x86;?zn\x01\x0c\
+\xea\x88\xcc\xdfD\xb5\x7ft\x15y-!&\xc3]i\
+\x94\x82}Z\xeb\xc4\xd4\xd4\x18\xa19[\x1d\xa5\xbb\xda\
+\xba\xa9\x1d\xf6r=\xbbC\x22\xcakL\xf8\x85k\xc1\
+\x9b#t\x9d^[54\x06j\xf9\xe5\xf2\x09\x7f\xb9\
+F5\xa0\x1a\x9f4\x8c\x82\x00\x8c\xf1\xf9\xeal\xfe:\
+\xed{2B\xd2=7\x221T^Yb\xb7\xa6\xfd\
+S\xc5\xea\xde\x91\x80&\x9d\xe3\xf3\xdf\x8eH\x1dQ1\
+\xa7\x18\xed\x839\xe2\x06\x82\x00\x15\xa8\xe0\x88\x1b\x1a8\
+d\xd4\x0b\x11\xdeG\x0fj\xff\xb6\xcd\x13\x80\x14e{\
+\x14\xee\xd3\xff\x8bH\x8c1\x00U\xec\x1f\x05lP\x10\
+\xc3\x9c\x9b=\x22\xa2\x89\xdf\xf5O\x8d\xa8.2\xf7\x84\
+\x8b\x0c\xcc%\x03\xddt\xea\xc5\xecqg\xf9\x81\xca\x8d\
+j\xa2\xa3q\x0ao\xa6\xb3t\x92:\x8bc\x8d \xf6\
+\x17\xc4\xb5\x05X\x8d\xce\x22\xc4\x00\x00 \x00IDA\
+T\x98\xf1@\xe1\x01c6\x06\xb3\xf6j\xf6\xa9\xf5s\
+_\x96:\xd9P\xeb\xa1\xfcS\xc8\xc0x\xd3s\xdf\x7f\
+>\x22\xed\x8f\x14(\x14\xc6tV\xc9\xeb\xe39\xfcG\
+\x02d\x83\xf1\xf9\xcb\xba\xdf\xbc\xa7\x8a\x82~@\xcc,\
+\xae\x07\xb3\xe8\x88\xb6\xa1=\x22\xa0\xde6\x83h\x0fQ\
+wP\xd8\xd3\x01\xa5\xc0\x87\xe1y\xa8\x0a\xcaSj\xb4\
+\xbc\x05*6\xfb\x1e\x851\x0c\x10\x98\x0a\xe45\xe4\xed\
+td\xe9,\xd3Y=Rb\xcb\xdf\x97\xc8\x1ey\x1b\
+\xa2\xbe\xb1\xae\x16\x95\xad\xe8\xa9I\xcc\x17\x06\x95\xb4\xa1\
+fK\x8b\x81G\xe7\x96\xc6\x06\xdaE\x8c\x86l\x1b\x91\
+\xc4\x0ea0\xc0\x88\xbc\xb2\x9c\x22W\xa6Q<}\x7f\
+\xbb\x92P\xd0\x0b\xa013\x8e\xe7\x8e\x06\x0a\x9dz4\
+\x97XW\xcc\xa6#\xde\x87\xe8!\x94v\x1a\xc5P\xfb\
+\x11\xc9\xbc \xa2i\x5c\x98\xd1\x02c\x84\xf7\x1fS\xe8\
+\xa9\xa3\xb8.4\xbe\xc8\xa3\x18\xb5\xe0?\x1a`t\xd8\
+i\xe0P8\xa3\xf5\xc5\xf3\xc2\xbaW\xc1\xecF'\x8d\
+]\x0a\x7f\xf21F\x01\xe4\xd6b\xad\x07\xce1D\x1e\
+\xb9Nh$\xb0\x8e\xd0\x0a\x91\xf8\xa2\x7f>\x0c\x0a\xae\
++\x8ct\x80r\x98\xf4\xacw\x00A\xe5\xf3\x88\xecb\
+\xa7\xe9:\x0d\xc62u\x07\xa3\x92<\xc7<7\xe4I\
+\xfa9st\xe2M\xf9\xa3\xa0\xa7\xf0\x1e\x8b\xea\xf1`\
+\x92x\xd1i\x872\x8f\x98`\xdc\xd6\x7f\xea\x86?*\
+Q\x22\xb8\xe0\x14\xee\xf1\xf7\x17M\xef\xc7\x8dG\x95\x9f\
+\x8e\x0b\xd4\x7f\x12s>\x0f\xf6\x1aR\xbb5\x80@\x87\
+\x8d\xc2\x1b\xb7\x01\xdeO\xaf\x1e\x0d\x08\xc2\xc93\xd2\xcf\
+\xcf\xb6\x80\xf9s\x83\x90.\xf0f> D\x00\x03c\
+q\x08D\xd7\xa0\xce-*@`\x1d\x15(\xf8\xca?\
+3\xa2l\xc4'D4\xaa;\x9du\xdb\xd20S\x0a\
+\x05\xf9\x07\xc3\x0c\x1f\x88!\xaa\xd1\x16\x8dCdO\x9d\
+:k\x07@-\xd5\xac\xafg?\xe9\xfc\x83\xd4\x0ai\
+\x05\xa9G\x85\xd7\xb3W\x88\x0d^)\x91\x9fW\xea\xfd\
+\x995G}\x1a\xf1\xc0]g\xbb\x85\xaf\xf1\xecyC\
+\xa2\x18\x04\xd0\xa0\x80\x22\x22h\x1fMm\x84\x16\x1f\xd2\
+F\xc8\x83c\xbb?}\xae\x98\xd8\xab3{\xa8\xe43\
+\xa3{\xde\x00\x18t\xef\x8eh\xd4k6\xc2\x92\xde\xaf\
+\xda\xadZ\x0b\x9da\xa6h\xbd\x88\xa4\x96\xfeOmP\
+l|ldl\x80z\xb0\x8d\xa4S\xf0\x91 0\xa3\
+J\xe14\x16\xc7!A&!`\xa6J\xa3#\x16c\
+D\x85\xfcSJ\xd0A6\xd9p\xd8`\xa0zK\x0b\
+\x80\x0eL\x7fKD\xbb\xbe\xb3\xf5#\xd2\x0c\x1e@\x03\
+\xa2m\xcc\xc8i\xf6\xd0b:t\x08y\xbe\xd80y\
+\xceX\xf7\xa8\x1d\x8bR\xe5\x04F\x09\x13\xeb\xc3\x05?\
+\x856\x8c\x14\x12\x0df\x86\xa1\x84\xa93\x89\xea\xb0;\
+\xe4\xecC\x8c\xac \xf2\x08\x10\xc7\xf5\xa1\xa0\xe5\x00\x22\
+A\x10\xb5\x94\x84\xd3\x0c\x11\x80B\x0e(\xfc\xec\xf9s\
+4\x1c\xa0\xd4s0`\xe3\x86*=\x89\x1e\x88-\x85\
+-\xae\x0c\x1c\x14\xcc\xe4\xab\x83`\xf7\x02\xd4\xb4\xd5A\
+\xf3\x08\x03\x1dG\x0a9:\xb5P\xfc\x18\x01`=\x8e\
+\xc5.\xb5>\x99\xd9.\xe9I\xb53\xec\x0f\x8d(\xef\
+s\x99\x0a\x091\x08\xba\xa5#\x9a\x96\x80\x19\x05\xea\x0c\
+{4\x87\x0e\x83F\x18\xba\xe3\xbbOt\xc7\xd7\x84\xe1\
+\xd0\x9a0H\xbc\xcf\xbe\xc0\xea \x90@\xb0n\xe6\xbf\
+\x16\x91\x0eru(|\x1d\x01f\x98\xed\x86Z\x8e\xab\
+\x05b~\x8cV\xe0\x0a\xc0L\xa74\x0b\xbc\xcf\xc3\xe8\
+!q%A\xe1\xe7<7\xa2\xceN\x0f\xb6\x90<\xb7\
+\x00\xac\x9a\xd9\x9fl\xafBY\xd7\x071@D\xec\xfc\
+\xbehD\x1c'\x00Sv\x99f\xaa`\x97\x080\x84\
+\x18$\xf6\xbb\xdc?i\xc0\xf4\x87D\x94\x02\xe8{%\
+\xbe\xdbF6\xac\xa1\xc2\x0c5\xf6\x82\x12\xdd\xeb\xb6\x88\
+h\x9f\x07@\xc7\x89\xa5:\x0fhB\xa0:_\x13\xfa\
+\xf3Rb\x0f\xe0\xa6\x82\xcf\x05.\xa2\x8d\xb8\x07\xf0\xbc\
+\xc4>\x1bb\xae?\x19\xfc\xdek\xc2\xb5\x5c\xa3\xf4\xd7\
+s\xebkb\xbc\xfcOJx\xa4\xc9\x80\xbd\x1d\xaa\xe7\
+\xfd?J\xfcS\x1a5!\x06\xf8\xa9\x88\x92\xe8\xbc,\
+\xa2\x15\xfe\xd3\x8fDHd\xee(u\xd8\xcb\xba\x9e\xfe\
+)\xa2=\xc7\xf3\x1b\xcdo8\xbfa+\xac*\xecy\
+\x95\x12\xea\xb3\x92\xa8\x22\xc0$\x1d\xec\xe8X\x7f\xa7\x89\
+\x05\xd7\x8e\xfc\xbb\x9bo}\xa5v^\x9fD\xf8\x82\xb7\
+q\x90\xf6\x85gkT\xe5\x96\xc6\x0c\xe8~\x1eQ^\
+\x7f\xdd]\xd3\xfd\xba\x8a\xdd\xfe\xbb\xfb\xb7\xc4\x0aW\xae\
+\x00\xd7 b\x85\xdb\x06\x1d:DG\x11\x9be\xffz\
+\xbb4b\x96\x15\xf0\xa6\xce~\xfc\xeb\xa0^W\xe6\xd6\
+N\x8d\xb1\xe2\xf3X6\xa0\xb8\xd2\xb0o\xb9C\x8fm\
+-.\x00*d\xba\xedJl\x9flF\x05\xe0\xf5\x97\
+D\xa4\xefO\xe2\x0d\xb3\x87\xc2S\xc0T\xff\x8e\x88\x06\
+4L~\x1a\xd1f`)<\x18\x91\xf1zQ~f\
+\xd1S\x00\x01=\x0f\x16A\xc5.\xebU\x11\x0d\xb0\xed\
+\x0e-\xf9\xc3\xa1m_\xedO\x8fH#\x85\xccL\xc3\
+h\x0c\xb7\x8a/\xa6s\x1f\x86%\x1a-\x17\x0d\x80\x9f\
+\x996\x8c\xech\x1f3\x15\x19*=b\x96\x9c\xf7\xe4\
+\xb9\xcc\x9a\xd3\xc0QC\xcd\x9db\x80c\x1a\x02\x14\x14\
+\xb8\x9bH\xc4\xd5\xd4\xfb\xd1\xf9bq\xbb\xacZ\xbfD\
+\xd2\xe4\x02\x08^}\x00x\xabH\xea\x09\xa9s\xce\xcc\
+9\x9a\x11\xb2_4SH\xa3\xa2\x88\x10\xce^!M\
+\x01\x9d{%\xeb\x1d~\xcd\xe8\x19\xee-\xe4\xdbj\xac\
+8\xaf\x91\x08\x9e\xef\x1f\xc0\xb7D\xe5\x5c\xc8\x91\xbe#\
+:'\xca\xbbGe\x1f\x90f\x83\x1a\x1c\x93\xbf\x8b\x89\
+D\xfd\x00\x10E\xfe\xc4\xe84b\xa7\x88\x9ab\xab,\
+\xed\x0b\x8bY\x0a\xb0q\xfd\x00\xa0=\xa6js_\xb0\
+s\x06\xa0\xf8\xe9\x82\x9fT1\xc1\xc7W.[+8\
+7\x8fh\x05\xe2\xe4\xca\x88\xf2\xeb\xcfG$\x97\x00\x80\
+5\xea9\x00\x0b\xd6\x07\xbf\x06\x08\x81i\x09s\x83\xfc\
+\x81:\x11\xa6\x1c\xdaT\xe4\x1d\xe4\xb70\x08\xd0\x12a\
+\xe6^\xff\xce\x85*\xeb\x94|\x0b \x03F-\x80\x1d\
+\xdf\x93\x0e;\x0d6\xf2tF\xd3\xc63\xfa\xe4\x99h\
+\x0ad[\xf9\xe5S\xfe\xca+\xdf\x8f\xbc\x92\x91\x17\x18\
+\x04\x00\xab\x12-\x87\xe9\xe1\x06\x14\xfb0\x9f\x8bQ!\
+1\xdcm\xcb\xc7\xdf'/\x05\xd8\xc9ZsQ\x8f\xfd\
+3\x221@\xb8^0\x19\xa87Y'\xfc>\xfb \
+\x0c\x09\xad\xdb9\x7f0\x90>\xa8\x12\xccd\xc4\xb2^\
+F_piQ\xa3\x9f\xf3P\xca\xac;\xa0\x88\xf0\x91\
+pC\x85g\xa1\x89\xf2\xe7WF\x01($\xb8\xe0\xf9\
+\x06\xad\x926\x9c(3\xd6J\x1a\x05<( \x7f|\
+.\x1e$\x0a\xfaq\xe1Og\x8d\xc2\x07$\x10\xca+\
+\x0b\x17dh\xe4\xb3h\xc4\x86\xeb\xc5+7l\xdc)\
+>*\xa2Q\x84M1\xbaC7\x9c\xeb/\xc4\x0eq\
+(\xdf\x07\x12wD\xd4\x04\x5c\xcc\xb41O\xe8\xd8-\
+\xa1\x8e\xba:\xa7>\xf0\x10\x0d\xc1w\xfe1\x9a\xed>\
+T\x94PD\xa2\x04`@\xb5+ie\xddHJ\x99\
+6P\xbe\xb0!\xd9@\x1a\x0e\xd8\x821\xe3\xaf\xc2\xcc\
+v>B\xa0\xfb\xa3\x22\x12\xe2\xc5F\xae\xd9\xd0\xd9\x09\
+\xc3\xac,H\xf4\xf4\xbd\x11\x09\xd9\x123\x82\x03\xaa\xbf\
+:\x22}\xeeQ\xe1i\xed\x01:\x81\xa2n\xc3p\xb0\
+\xdf\xfb\xf2\xc3:1\xe5\x8f\x82\x86\xc4\xe0/*D\xd1\
+Z`f\x89\xc4\x9d\x99T\xee\x0f\xa3\x000\x01\x98u\
+d\x03d\xc3\x01\x08\xa0\x90!\x81\xc0\xaf\x96\xf5\xc1:\
+\x93\xf8\x947`(\xe1tD\xa1\xf6\xa9\x83`\x11\x13\
+\xdc\x1b\x00(\xa0\xf6\xa3n\x8e]\x1d\x07'\x1d\x19\x90\
+r\xc4\x80@Z)\xf4\xd9\x08Ip\xa0(j\xc3\xa5\
+S2\x9b\x8bh\x80I\xff\xd9\x88dC\x07`\xa6\x11\
+\x15S\xca\x7f/J\xe6\xab4\x1b\x1e\xc7\xf8c\x13\xa5\
+\x0dD\x5c\x1a\x14\xa6\x14\x03\xc0\xc0\x88`6\x8c\x03\x80\
+\xf5\x81M\x9c\xd4\xa6)(l\xcf\x87F\x09@##\
+!\x88\xb8\xd0\xd9A$G\x85\xb8\x7f\x9f\xfd\x04\xd5{\
+\x0a7\x9e\x1f\x90pD\x92\x00\x1a\xf8\xbczN\x5cH\
+i#\xb7-!\x07\x1c\xb6;\xcc\x00\x03(\x88\xc2\x87\
+\x0a\xb955X\x9f\x12#\x9b\xfdY\xe2I\xa8)\x0b\
+\x88\x04I\x9e\x5c?\xf9\xed\xe4\xb7M}\x1e`(\x06\
+\xa4\x020F\xc4\xd3\x1d\x8b`\xfe\xfc-i&\xbc\xae\
+$\x04\xaf\xab\x09\xce\x1b\xeb\x08\x01#\x10|o\x15\xda\
+\xdd\x99\x11\xe5\xb9\x7fFD\x13M%1\xeb7\x8bh\
+\x05\xbc\x9f_\xb9\x9eX\xb3\x81\x99E\x0eH\x98*\x8c\
+@i\x9dC\xe9gt\xc2\xcc&1plozg\
+\x7fW\x7fW\x15;\xab\xcc&\xd4\xd4\xbb\xe3\xbb\x13\xba\
+\x13\x9aZ?@\x96ER\xe9\xb0\xee\x1e\x90hZ\x8f\
+\x00#\x01\x1b<\x90:4\xea\xa0O/\x99^:\xbd\
+4\x8d`\xd0a\xa1\xc0AU_\x09\x87\xddR\xd8\x9f\
+\x18\x85\x89\xeb|\xa0\xd4\xeeoi\xcc\x1fD\xdf\x00\x14\
+\xad\x19\x82(b0\x0e\xbe!&\xd5%Z/w\x08\
+\x10zW+P\xba\xd7G$Jw\xec\x1bw\xb6\xf3\
+\xb4\xfe\xfe\xe7\x94\x1f,\x93\xf6;:u\x1a\x15\xac@\
+R\xb9\xee\xdd\xd3\x22\xf4\xfcm\xadQ\x97\xf2\xb9\xba\xd5\
+#\x92\xfd\x19\xd4N\x0a\x91\xe8s\x5c\x92\xd4\xb5\x83\xff\
+\xf3\x99\xa6\xfaNa\xda]Q\xa2\x9cSs\xcf\x8e(\
+\xd7y\xe1\x12\xd1\xf9\x7f{\x89Rxv\x97\xc7\xdf(\
+\xbf\xff\xb8\x88\xd4qb\xbf\x91\xc8c\x85\x15\x9f\x994\
+'\xfe\x15\xd1:s0b\xea\x88\xc7#\xdbs\xd7m\
+\x12!\x8d\x8c\x8f\xd5\xd9\xe8M\x83\xaa\xdf\xef\x16\xa1\x0e\
+\xe9\x99\xa2\x8a\x7f\xaai\x01\x98\xf2\xff\xfb\x88\xf2:)\
+\xd1\xb5\x99\xfd\xee\x9b\xdd\xb7B\x13\x00\xca\xbf5~^\
+\xaa\xd9\xde\xef\x08\x80!\xf1=]\x89\xfc:R\xe3\xd7\
+\x08a\xb5\x85\xbaj\xd8\x1fC\xc3`\xba\xdat\xb5\xee\
+\xd5m4\x05\xe6\x10T\xden\xdd\x884\xab\x1a#=\
+\x1f\x12\xd0\x18\x8c\x91\xff\x94x\xa01\x18*\xfe_\xd6\
+m\xbfm\x89\xe7j\xff\xbaSL\x9b\x7f%{\xd0\xc8\
+\x0a> \xa0b\x97\x06\xac\xf4\x9f\x89H\x8d\x18\xfe\xbe\
+\x9eo\xdbS\x8a\xc1\xca\xc8\x95\xff>\x22tz\xce\xb9\
+\xfe\x14\xd6\xb3\x95\x22Z\xa3\xc5\x9d_Fe\x04|\x01\
+\x80\x18\x98\x85Q(\xe0\x10\x86\x86\xdd\x1c\x040\xbb\x10\
+\xa6\xd0\x80:\x0cuZ\x1d`\x18\x9a\xee\x18\xa3q\x02\
+\xc3\x8ds\x17M\x22\xad?3\x0du\x0e\xc4\xdd\xa8#\
+Vo\x98\xbc\xbe\x02\xe4hy\xa1A\x02c/\xf8\x9d\
+\xa7\xaa\x10\xfbp\xda/\xc7\xd4oD\x90\xd1\x8e\x02\xb8\
+P\xden\x1b\xe0+fW\xd6\xfcO\xdf\x17\xcd\x97\xd9\
+\xda\x12#f\xbd\xbd^\x0c\x22\xbd_\xd9=\x07\xa6\x9a\
+\xce=\xbb.q\x9f\xb1\x85\xa4\x8e\x801\x89\xdb\xcf\xbe\
+5\xda>\x0c\xa3\x04{g\x8d\x86\x01\xc4X\x0d\x1e\x9b\
+D\x9d\xbf\x16}Cd\x17J\xbf4\xaa\x5c\xb0\x93\x17\
+\xd1\xa8\xd0\xbe>[2\x22i\xfc\x008s\xee\xc3\x94\
+\x86AM\x81H\x9e\xc1(\xa1\x80\x11S\xdb\x19\xe1Q\
+\xbd\x83\xf8\xac\x19\xbe\xec\xaf\xd4\x11\xe4\x9304\xc5l\
+q\xde\xc7\xcf\xa5\x9e\x00@\xa7@\xe4z\xd1\xb1F\xac\
+\x9c\x82\x9d\x91\x0e\xea#\xe5G\xb6\xd3\x83y\xc3h\x09\
+LE^\xb9\x8f\x14\xfe\x14\xae\xe4\xd1\x8cF\x09P0\
+s\x14qr\xe5\xa1fT\x8d:\xdd4\x14\xfd=Y\
+\xc7\x00\xf9\xd4O\xbc\x1fLp\xc4\xa1\x01\xc2\xf8\x1c\x00\
+\x0e\xac\x0f\x98\xa7\xe4u\xba\xfe\x16\x81\xc7v]n\x0e\
+\x06^\xb8^h.(or\x81\x8f\x1b\x09\x80\x06\xeb\
+\x9c\x06\x08\xf7\x15`\x06\x80\x08 \x01m\x1c\xf2|\xae\
+\x9b\x80\x03\xdb\x9d\x0a\x90\x9asG\x1dJ\x1a\xd4\x03n\
+\xc4}\x95|\xdc\x0a\xfaX^\xf7\xa7\xbfGB\x19\xdb\
+\xd3#R\xa1M\xa1LB\xce\xaf\x97\xaa\xa4\xef6{\
+M\xa7&:\x1a\xcfM\xd4\x1a\x0a\x0d\x10)u\xf0M\
+\x0d\x8de\xb5\x9en\xdc\xe3\x93{\x01\x00\x00\xaf\xd9~\
+i\xdd\xd6\x11w\x82\xcf\xe7\x05\x81\xe1\xe7rp\xf0`\
+1k(\x0a\x86\x11H\x0a4]?\xfb6\xb21\x08\
+\x101\xc5FH\xe6dg\xcd\xa2\x89\xf2\xe8\x1b\xa3\xd9\
+;'\x80\xd8<\x1c2\xcc\x1ez\xb6\x13U\xe37\xe9\
+\xfb\xac1t\xea\xfaS\x22\xcaA\xb4LD\x9bY,\
+\x9b\xe4@\xe5\x7f\xf50\xfbT\xd2\x84\xda\xd9\x9f\xfca\
+r\xeb$\x10\xb5\x0b\x87D\xc9j\x92\x17\xa9\xd3.j\
+.\x88\xb7\xa9\xe9\xd7\xeaA\xbeV\x08\x93\x0a\x14\xfb\xcf\
+*a\xae\xae\xc5\xc7'j4j\xcaB<\xdd\xd9D\
+UU\x1b\x06\x09\xaa\xedi\xb4A\xf6\x1f\x8dh\xb3\xe0\
+U4k\x85\x04\xb80\x83\xa8\x19u\x90\xe1\xfe-\x11\
+\xed\xfbM\x8f\x8b(\x7f\xbe\x9b\x18\x09\xccx\x81\xf4\x81\
+T\xfeL\x14WTE\x7f\xac\x8d\xff\x94\xe1\xe0\xf1\xc8\
+\xc3\xe7\xb4a\x1c.\xaa\x14\x1a\x05t\xa6wV\xe7e\
+\xc3\x01\x98)O\xde\xb0n\x10\xaf\x83\x91\xc1A\xaf\x04\
+\xd3\x22/\x14\xca\xcc\xdc\xc9\xae\xc7\x1b\x0c\x88\x1f\x1b\x0f\
+L\x0f\x00\x80>\x22u\x16x~\xe9\xe8spp\xa0\
+\xc2\x0c\xe19\xe1\xf9\x87\x8a\x0d\xb2:\xb6\x09\xe5yU\
+'\xd6\x00\x1d\xff\xd1\xd1\xa7\xc3\x0a\xa5\x9d\x0e'\x89\x13\
+\x098\x07\xa76Z\xec\x9e<\xdb\xcf\xf3\xcd\xc1\xcc~\
+\xc4\xf5\x00\xf9d\xe3\x1dQ\x04\xf1\xd9%1\xf4\xf5Q\
+a\xcd\xfa\xf4\xc1\xcd\xfb\x00\xe4\xb0_p\xa0\xf1\x0ar\
+=\x02zf7D\xa4\xe7\x1b$\x1d\xca'\xda'\x5c\
+?\xc4\x13\xb1\xcb\xa3\xe0\x83\xc2\x88\x9f;\x80)\x80!\
+\xf7\x0b\xdbF\x89]\xb9S\x04\xd3c\x0b\x15\xfc\x1c\xf8\
+\x00tt\x90\x16\x11%u\xa4]Q\x0e\xfb:\xb3\x88\
+x(\x9d9\x03\x117\x96]\xeb\xc6t_6,?\
+u\xc3\x04X\xa1N\x8f\xfd\x8e\xc4\x0bK\xd9\xf6\xae.\
+:\xb7+G\xa4\xfbEG\x08\xf1%\x008l\xe0\xd4\
+\xc9\xc7\xde\xcf\x1d\xc4\x91\x8d\xabg\x0aQ\xbfW\x01P\
+m\xbc\xe6R\xc1\xad\x99]\xef?\xea\x88\x18\xc0\x9a\x0c\
+\xcb\xb9\xbb\xac\x94\x8e\xa5\xb0\xec\xee\x8bH\x9dDiK\
+`{\x86\xa6I\xf7\xc1\x88\xd6\x91\xe9\xae*\xf1\xf3F\
+i\x9f\x9e\x15\xd1\x0a\x98\x90d\xab\xe2\x92gN\xce\xa8\
+\xa3J\xd1y\xbf#\xd9\x171#\xc8\xa8\x9dF\xa0\x5c\
+\xa8\x85H\xdc\xb7\xe4\xfb\xbeM\x1b\xed0\xc3ddW\
+f\x8d\x04\xd4\xf6u=\xa7\x9f(q|\x13\x1f\xabi\
+\xf4\x974K\xbe\xb6\xfc\xb6\x9f\x92(\xf2\xc2\x7f\xcd\x08\
+\xd4s\xee\xd9\xd0\x8b\xaa\xdezc`\x04,\xf0\xd9D\
+\xe9\x96\xcd\x94\x13hfC\x83P\xfe\x8a!\xa1\xa9\xe7\
+16l!v\x17\xee17\x97\xb8I\xcf\xc5\xf1\x9a\
+]\x8fY\xfcc\x22\x94\xc0\x86\xbd\xe1r%\x96\xaf\x9a\
+\x00\x8bN\xcby>\xb7eD\xf9\xfd\x17D\xb4\x84\xc9\
+\xf6\xbd\xec\xbf\x00\xa1\x8c\xec\xc0\x90\x01x\xc5\x16R\xa3\
+\x0ea\x8aYm1\xb5/1\x02C\x01f\xfb\xe1\xe0\
+q|Q\xc0\xeeW\xd5A\xfcp\xd3\x22\xa2\x01C\xa1\
+\xdf\x1d\xd4\x1d\xdc\x95\xc4?\x9e\x96x^\xdcQC\xf3\
+\x03 \xeb(i\xa9\xbcW\xbf\x0f\xe0\xac?GD\xb6\
+\xb6\x01\x0e\x91\xd8\xde5*xOl\x80\xc4l\xd1\x88\
+\xf2\xf3^Yb\xf7t\xdd\x83\xfa\xff\xa1V\x18\xd7\xf3\
+\xe8\x1a%\xaa\xb76{\xc3~\xbf\x12\xafm\xeb\xb0\x02\
+\x07Ae}vD\xa2\xd2\x06\xe31\xb4\x1en\x8f(\
+\xff\xee\xf0\x12\x87\xb5Nu\x7ffDy\xbd-\xa2\xcd\
+\x84\xdb\xcdC\xaa\xe6!mZ;\xf0h\xce\x088\xc2\
+\xbe\xd6\x8c\xac\xb1\xff:\xf6|a\xb3\xb8y+\x84g\
+\xa7D\xa4\xfc\x8e\xbc\x8f\x91\x85\x97D\xa4s\x09\xe6\x05\
+ZGZ7e5U\x0d\x8f\x80\xc7\xea\xfd\x02\x08\xa6\
+\x93\x07c\x92\xc2\x84\x82u\xa4Bo\x17\x0e\xee\xb3\x80\
+\x1f\xb4(8\xdf\xab\x88\xf4[\xea\xf9P5\xbd\xd0z\
+\xa0\xa3<;\x22By\xdd\x99:\xcf\xe7\x92M/y\
+\x01\x05\xeah4\x80\xd1\xcc~\xdfr\x7f\xcb>\xda\xaf\
+\x14Q^\xffo\x18]\xc5\xf6\xd0\x22\x8f;\x88\xe9\x05\
+U\x99N\xaa\xf2B\x8b\xe6i\x14\xcb\x9dv\x0a\x9c\x03\
+\x06&Q\xc9j\xeb\xe8\xabm\x1a\x11K#\x7f\xe1\x9c\
+\x160\x83\x1b\x89\x01\x1c1\xc2\x00l\xad\x05\x81\xad,\
+n\x1d0B\xaf\x8aHy\xd7\xde\x11I\x8c\x9b\x11$\
+\x9dO\xfd\xd6\x11\xadpd\x14\xc6n2\xfc\xa7\xf5\xe3\
+\x82\x8d\xcfO\xdeC\x83\x81}\x97\xbc\x09@\x06\x95\x7f\
+\xb4t`\xd8P\xf8\xc5\xfd^#\xb9@\x91g\xaa0\
+\xf6:\x17\x03\xd8\xa3\x184F\xd5\xf8\x9c\xac\x11\xd1f\
+\xf8=\x9a \xed*3\x0a`\xacR(S\x90R\x80\
+\xa3]\x81&\x00\xee\x0c42\x01\xe4\xc8{G\x0dX\
+\x8f\xb6\x90g\xc0DV#\xc8\xa3\xbdh|\xf0\xf7h\
+\xc4b\xffI\xdeE>C\xfe:\x16\xa3'\xef!\x8f\
+'\xbf\x22\xaf#_\xa2q\x0d#\x90\xc6:@\x1fy\
+\x08y!\xefK\x03\x8d\x86\x0e\x9dS\xde\x07\x00\x80\xfa\
+|D\xf9w\xe3\x0f\xc6\x00#?\xack\x1a\x85\xca\x0f\
+i\xac\xb0\x0e\xe7\x8cX0kA\xc2\xce\x81\x87\xc8\x9d\
+4\xaa\xdc\xe9f\x03\xe4\xa0_\xa8\xea\xa9\xb7N,\x89\
+0\x94%\x5c\x00(\xacI\x0c(\xa4\xb9\xf0t\xda\xb9\
+p\xa8V\x86\xca\xe9Zi\x96\x9f\x82\x1d*v\xb6\xef\
+[.\xd9\x02\xea\xd7\x951\xb0f\xea\x98\xb1\xc0\xa5}\
+P?\xf5ji!\xe8{L\x96\x8eH7\x9e\x1b\xcd\
+\xe7\xe5\xf3SP\xf1\xfb\xdcH:\x15\x5c\x17fp\xe8\
+\x0c\xd3\x01\x97\xdd\x9a\x13O\xa8\xd3P\x99(\xbc\xe9\x88\
+C\xb5c\x06^\x85\x03\xb3p\xa8O\xdbW\xf4\xab\xc3\
+\x88@\xf0\xf0\xeb\x0d\x13E\xb9\xbb(\xa2\xa9\xf2\x1b\x11\
+\x95\xad\x97)b*\xdc\xfa\xdfE4\x15\xf2\xb2\x0d\x0c\
+\x0b\x0a\xb5[u\x82gk\xcd\xd6\x9ee\xdb\xc8\xd3\x84\
+\x18j\x01\xd3\xb9\x9f\xbd9\x22\xa9D?c8\xc0\xfb\
+/F\xb4\x02\xab;?\xa2\x15l\xfd\x96\x11\xa9\x90A\
+%6fr\xd7hv,0/\xba\xcd\x22\xca\xf9\xb6\
+~D\xbb\xae\x16\x95\x89\x03\xe97\xad\x83\xd6_\x1e!\
+\xea\xe2v\xa9\xf3\xcf\x83\xcb\x86&\x91\x99\xfe\xae\xfe\xce\
+\xfe\xce\xd6\xf9\xb3\x1a\xb4\xc42\xedS\xcd}G\x0d\x16\
+\x7f\xf3\x13\xb5\xb1C\xd9\xc5-\x81\x8e\x1av*\xac/\
+\xd6\x13#\x0ft\x16T\x98\xd2\x91*\xc7\xd0s\xfa\xe7\
+T&\xc7\xa0\xdeO\xe2\xc3\xa8\x00\xf6~\x9a\x15\xb7\xb8\
+\x0f\xcf)L\x18f\xf6\xc4\xa4@\xc4\xcdL\x1b\x98/\
+0y\xf89\xda\xc0L\xbdC\x94\x87D\x14\xe0H\x9a\
+\x04\xb6/dd\x80}\x89\x82\x5c\x94z?\x17\x88\xe8\
+q\xa0\xc8\x9e\xd2\x9f\x9f\xe7\x99\xd9-!\xeaN\x1c?\
+\x19\x91\x0e2\x90W\xc4\x894k\x08\x00\xe0\xd1\x03\x90\
+i\x12$6x~\x1e\xeb\x84\xfb\x04UR\x09\x05\x94\
+h\x17\xf2\xf8/\xb3\xef\x01L\x02\xc4r 0k\x0f\
+\x03\x8a\xce\x00\xfb\x83\x124\xbbzH4\xca#\x02\xf8\
+\xcf\x0a8\xb0\x0b\x81\x12AFz\xe8P`Se_\
+d\xad\x87R\x0e\xd4\x19\xdc\x98\x1c\xae\xb3\xc3'\xceN\
+\x9a\x9d\x94\xa8\xdc0s\x18\x1d\x01(!\x11>@\xd7\
+\xef\x1f\x02\x88\x11\xf9\xb9v\xb0o\xeb~\x10Q;\xba\
+\xc3\xbf\x17\x02>\xbfCDK\x8c\xbc..\x19\xd4\xfe\
+M\x99g\xdf\xe6\x1c\xe3z\xea\xe7xV\x1d\xa0\x89\xfb\
+\xce\xe8\x06\xb6L\xb8\x13\xe8>\xce\x16\x8bH\xc0\xda/\
+\x06\xc4\xbe\xceB\xbf3\xbd\x9f\xde\xc7\xd4\xd6\xaf\xc8w\
+\xfd\xcb%\x01\xf9rR\x1f\x8e\x0e^\x88\xb2-\xd6-\
+\xde-\x9eF8P\xaf\xff\xcb\xe4\xcf1\x8a\xc4\xba\xf5\
+~\xcd\xb9\x88O4\xeb\x80\xd9^\x01 \xdd\xc2%\x1e\
+\xd9D\xaf\x5c\xc8\xc4\xebgS\x01\x1a\xa7\xcam\xc9^\
+\x0fU\xf5?E$\xdf\xe7\x807\x0fO\xa3TQ~\
+\x04\x03\xe7\xcb%\xce\x16P\xf2\xb9d\x0b\x1cO\xd5'\
+\xb4O\xed)\xd1\xcf{\x1a\xd3\x84\x8e\xafg\xc8\xe5\xd2\
+P\x81\xda\x0d\x938\x12>\xd8%}\xaa\xd4\xd9/,\
+\xf8B\xa5\xb8\xde\x14\xd1\x0a\xd8\xe9\xfd\x11\xcd\xbd\xa3\x16\
+d\xdb\x88\xea\x7ft\xa2x\x87\x88\xe4\xeb\x9a\xe6\x04\x8c\
+\xb7\xc9o\x22Z!8\xfdkD\xeax\xc7s\xf4`\
+[_f\x8a\x09P\xa4#\xdb=\x18\x91\xf2\x03\x9ec\
+DF\xc3%a^\xeb\xee\xd6t=\x02V\xbf6\xd9\
+-j_E\x0c\xb0v\xba\xefMb\x5c\xccv2R\
+\xc4\xb9\xad}\xca\xfe\xf3{\x0e\x8c\x16\x18F\x9e-?\
+0B\xeb\xfd\x87\x0d D\xc3\xc0\xf9\x98\x80\xdf\xda\xe1\
+~W\xd2`\x89S\x7f\x9a\x18K?*\xf1C\xd9z\
+\xbdI\xa3E[\xa6\xf3R\xcf\x85\x01nF\xfbPw\
+\xa7\x83\x1b\x05\xdf5\xfa\xf3\x9f\xb5?\xb7\xcb\x09\xd7S\
+\xfb\x8b]1>\x1c\x91T\xf1\xc9\x83X'\x00\xab$\
+\xfe\xa3\x02\xd1\x22\x99\xd8\xe7\xe1\xaa\x01\xd3\x95\x82\x10\x97\
+\x07\x18\x02\xb8\x81\xc8u\xc3\xb3\xd8P\xc35\x1aR\xb2\
+\xbc\xaa^\xef\xbc8\xe0\xd0\xab\x9b\x9b\x8aG\xd78\x17\
+\xd8\xf7\xc7\xfe\xe0\xca/l\xcb\x8b[\x0c#\x9ck\x88\
+\x1a~\x81\x0a\xe88\xe77I~\xea\x00r\x12\xb1\xac\
+\x00\xf0\x1b\xda\xb9h\xe0\x1f\xe6(y\xb6\xf6\xb7\xfe\xd8\
+\x12\x1f\xa8\xaf\x1f\xec\x8f-\xaf\x8f\xec\x17\xea\x17\xaa\x85\
+x-\xecg\x0b\x8bI\xa1\xeb\xec:\x03&\x1e\xff\xd1\
+\xf0c\xdf\xc2N\x14\xcd\x82\xefi\x14\x01@\xfa\x1eu\
+B\x01Xb\x84\xe6\xdfiF\x1dw%4r`\x5c\
+\xf1\x5c\xc0\xacT\xc7\xdf#\xadb\x92\xb9`\xa5\xc3\x8c\
+\xdb\x0e\x22\xa5\xe3\xf3\x1d\x06,6\xdc\x02\xdc-n,\
+\x06*n[\x1eIC|S\x8d=\x03\xe30\x01\xb1\
+k\xe39\x93H\xa0\xc5\x7f\xb9\x1f\xaa\x83\x98\xe9w#\
+Q\xda\x5c\xb8\xb1\x90'\x87BMh\xd4\x18\xf8S~\
+e\xfbE\xd6\x1b\xf5\x0e\x05%\x0cZFgp\x8f9\
+i8\xf7=\xda\xc9\xa8*\xe7\xe0\xa8\xe3\xcfh\x97\x0b\
+l\x1a\x12\x00Y\xa7G$\xa6 \xf9\x13\xccH\xd67\
+\x8d\xb2q\xfe\x89\xd81\xee\x0dW\xab\xc0\xbeL3\xf1\
+\x5c_\xf2\x11\xf2[\x1aZ\xe4s\xfc\xc7\xfe=\x12\xcf\
+s\xe1\xcf\xaf\xf9w\x00\x0e\xca\x1b\x19\xf93\xe0\xc5\xf7\
+&\xdf\xe3\xfa\x982=\x1a-\xa7\xc16~\x05\x10\x80\
+\x190\x02:\x0c\x10\xd0\xc8T\xfe\x0d@\x0a\xb3j\xce\
+\x89\x14\xe2wq9\x11\xd7[$]`\x10\xc0 .\
+l\x94:\xa5c\xaa,\x7f?\xd2\xe5\xf5\xf5>\x0b\xa7\
+\x0b\xc4\x81\x81\xed _\xfc\x9fu\xdaz(\x90\xff\xaa\
+\x82zy\x15\x10\x0f\xeaF-\xfe0\x9d7\x1e\x046\
+t\xa9\xf9\xd7Y\xc2\x15\x928 \x1d<\x0a\xf8\xec\x0e\
+\xb0V\x02>\xd4\xc1\xb4( @\xc6\x98\x11\xc0\x82@\
+\xb4B\x9dz:\x06FZ\x00JXhWH\x04l\
+[Q\x86P\x13\x86\xea\xc5F\xa1\xcf\xd9\x9f\x1a\xd1\x12\
+j\xec3<{xh\x8df\x03'\xf1*\x176t\
+\xa2_&Q\xa7G\x0d~\xef\xb6%\xd3\x81\xd8\x1d\x13\
+\xd1\x12\x7f\xdb\xe7\xdd\x12\xd1\xec\xe3\xa0\x02\x95\xc7t\x98\
+)b\xd1\xe2K\xcb\xac\xb66T\xcf\x1e!\xa6\xc7\xcf\
+\xd5\x02\xb6\xe8$\x221\xeb\x0d\xb3\xe9\x9em\x15 A\
+ab* \x07\xb9\x80\x17\x8be\xa1\x9e\xab\xce\xfe\xf4\
+\x8f\x11\xa9\x83\xf8\x8f\x88\xf2>{F4\x95\xfa\xf97\
+\x97xK\x03lj\xe2\xbcp\xeb\xa8X\xb4K\xd4\xbc\
+\xfe\xdb\x11\xe5um\xb9\x1e\xd0\x01\x91\xdf7\x14\xe3\xe9\
+^\x11I%]*\xdd\xee\x94k\xc6\xd0\x1dX(`\
+B\xce] \x8b\xfa\x0fE\xd0\x80\x13\x9d'\x89\xdc\xf9\
+\xf3\xa2\xfd \x17\x04\xfb\x85C\xe5\x12\x85\xde\xff\xf1\xef\
+P\xd1g\x96I\x9a \xb5\x13sx:\x88\xa1xQ\
+X\xf1\x5c\x8a\xf2\xee\xc2G\xd7\xdb\x9a\x0d#\xaa\xac\xa9\
+\x8b0!\xd8\xa8\x10q\xa10\xe39dD\x87_\xa3\
+\xa1\xc1l!\x09\x06\x9dc\x90Q1\x8e,\xca\x85\x1a\
+7\xd7[\x07\x8f)\xe5t\x1e\xb9\xcel\xb0|\x7f(\
+\xb5hgd\xc6\xd4}i\x03g\x9f`\x7f\xe4\x95D\
+[j\xfc^\x17_/\xc7\xd7\xd7S\xa7\x91\x0d\x9f\x9f\
+\xcb\xaf\xf9\xf7\xa2t\x1b`\x02\xd8\x12\x85\xd2#\x0dP\
+\xa4E]\xec^\x1c\x91\x0at\x9e\x0fu\xac\xa1.{\
+_Q\xc2\x00Uu\xf2\x19\x89f\xfdK\x05\xca\xee\xa2\
+\xdc#v\xc8z\xe0\xfbS \x88\xb9S=!>\x94\
+D{\xd49\xed~,\x95|\x128\x89R!\xfa\xc5\
+z\xeb\x97\x8c(\xbf\xff\xc6\x88\xb6\x8fB\xb5\xa6\x93b\
+\x86\x91F[\xdc\xa1\xe5\xf7\xe5\x07\xee\x8e7\xc0\x8e\x00\
+!\xdb\xb8\x09Igd\x00\xed\x82\xfe\xc8\xfe\x88\xfe\x88\
+\x0a\x14\xd6\x0e~\xf7\x9b\xee\xba\xee75q\x1e:\xf4\
+!\xc6vyJ\xb44z\xd5_\x15Q\xf6\x9dM#\
+D%>\xbd\x89\xd4uGE\xa4Q.}\x8e\xee\xed\
+\x11i\xbf{\x87|\xe9\xf5\x9c2c\x8fH*\x85~\
+-\x8c>\x94\xec\xb3\xd4a\xb5\xe6\xc4\x0bJ\xec\xa0\xce\
+\xd3\xf9\x89\xf9\x02\xd0\xc0\x88E\x00\xca\xc7%\xc6\xc46\
+\x95\x0b\xd2:q\xcc\x9a\xc3\xb8\x8b\xe7\xfc\xb3i\xd4/\
+\xee\xf6+\xdb\x8c\xad)\xd7\x9c\xcb\x8c\xce\xc4\xe9\xb8\x9d\
+4\x02nO\xe2`Q\xce\x5c\xa0\xfbp\xb2\xce\xe3E\
+S!+\x1b\xcf:\xd3\xbfT\x1a\x19\x09\xb1\xb3\xc76\
+\xa0\xc83\xed\x1b\x0fn\x06\xecg\x8c\xbaT \xb2\x5c\
+\xe7\xe97K\x94u\xd8\xbd/\xa2\xbc\xee\xd6\xed\xda\xed\
+\xaa\x0e\xcby-\x81\xc3\xb5\xc7\x85n\x00 \x7f\x95&\
+\xcfS\xb4O\x5c\x9f\x98G\xec7J\x08\xfb\x8d\x22\xda\
+\x88\x12\x1d\xb7\xc9,\x221\xbf\xe6d\x17\xb6\xa7D>\
+\x19\xcd\xa3c\xca\xfew\xbeT\xde\x8f\x1b\xf6\x01\x9f\xfb\
+$\xea\xb2\xa5\xec\x9f\x1b\xd1\x0a\x99:*qE\xd2$\
+!?\x90\xc8p}\xca\xbf\x9b\xc4\x1c)\x90\x19\xd1\xa4\
+\x11\x14\xa7\xdbJI\xbc\x8f\x86\x0f\x85\x05\xfb\xb6\xb4h\
+\x00\xf4\xfb[K\xdc\x92D\x8e\x99%\xd6\xfa0\x10v\
+CD\x03&\x01D=j\xa1<\xc9\x00\x09\xe7-y\
+\x1c\xa3o\xa2\xc2vKF\xb4\xd17\xbb\xe1p])\
+\xbcE\x1d\xc6\xf6\xd4\x9dy\x8d\x86U\x11\xc8\xbbS\xa1\
+\x86F\x10\xa2\x9b\x1a=\xf0\xb9\xf6\xf3A\xcc\xadd9\
+\xf5|\xf4H\x01\x85\x0f\x85&\x94s\xed\xd7\x1e)@\
+\x03@\xda\x0f\xb3]#\xca\xeb\xb3J<S\xd4\xf8}\
+$\xf2\x1bb{O\x88H\x00z\x5c\x9d?\x8df\xea\
+oM\x8d\x9f\xcb\xca\xaa\xb8\xac\xde\xa7'T\xcd\xa0\x1b\
+K!X\xce\xe9\xfe\xb4\x88\xf2\xfa\xe6A\xac\xd9\xda)\
+\x9bK\xcb`e\xb9O0\xb2\xc0(\x0d\xcc<\xb9\xd9\
+\xd8\xd6\x18\xed\x0a(\xd50\x87i1R\xd8P/\xa8\
+\x80\xa1\x00b\x9f\xf49\xcc(+\x0d&\x00m\xa8\xfc\
+\x14\xdc\xe4\xabP\xdb\x11O\x83!\x06#\x00&\x06T\
+u\x0a?\x8d\xb2\xce\xe6\x07@\x8f}\xc8\xa3N\xfc9\
+\xaeF\x9c\xe3\x14\x9c\xd2Hq\xbe\xa5\x02\xdcZB\xe4\
+148\xa1\xf0\xd3@A\xeb\x0a\xad,^u\x8e\xc3\
+\xe44S\x89\x0e4#\x08\x1a\x0103\x8b\xba\x88z\
+E\xa3\x17\x93\xdb\x22Z~\xe8\xbc\x94\x917\x8d>\xd8\
+]B\x9aB\xde\x8f\x00\xb6\xe4^\xe6\xd13\x5c\x03p\
+-\xd2\xf3\xe6\xfb\xc6~\x81[\x01\xef\xc3z\xa0\xc1\xa1\
+<\xd7\x8cN\x18_hO\x08h\x01\x00\xa1\xe1\x85\xcb\
+\x9a\xdd\xc5\xc8\xafh\xc4\x8c\xb4\x01\xb8/\xd6\x1e\x18\xe7\
+\x87\xac_D(9\x07\x119\xc7\x9e\x8f\xba\x11 \x83\
+\xd7\xb1[\x01\xccf\x9eO\xf6\x05>\x1f\xf9\xe6X\xf3\
+\x80\xfc\x8b\x91P\xdc\xf7\xb8\xff\xaa\x97\xe7\xb8!\xb8\x01\
+\xd4\x0d\xee\x09*\xbcgz\xc3{\xf5\xe7\xb9S.Q\
+>?xAT}f\xb2\x0f\xa40\xe7A\x81I\x00\
+5\x15\xfb>:\x9a\xb1\xec\x99u\xb8G\x17\xf6\xefi\
+#@U\x95\x0b\xc7\x05`c\x07i\xa4\xd3\x0f\xb2\x04\
+ Agr\xac\x9a\xce\xab\x00\x00l\x95\xac=0\xfe\
+\xf7,H~>H\x0c7\x02d\x88\xc2\x08\x0a\x07\x9f\
+[6SP\x88\xdc\xa1\x02\x88a\x96S\x05\x93\x0b\x8d\
+\xb1F\x03\x85\x04\xbf\xffu!_;\x0cb'\xd5\xa7\
+\xf6\xbaD-\xd2\xe7\x9b\x1d\x16Q\xfe\xfc\xc1\x88$\x16\
+w\xea0:P\xd2\xc7afO\x949T\xa6\xcb&\
+6\xf8\xa2\x22>\xc8\x83\x83\x1f&#\x0f\xf2\xadwg\
+N\xa3\x0f\xee\xf0b/\x82\xcf\xbb\x0au\x8b|p=\
+\xf5\xc0c\x9f\xd8\xef\x1d\xd1\x0ejS\x8e\xa1H\xb31\
+\xe9\xd7\xd3\xcfG4\x8aa\xff\xa5\x88\x96\x88c+\x88\
+8\x9e)A\xdc'!\xdfu\x86\xf6\xe6$\x9a#\xfb\
+\xb1~\x93\x88r{w\x8a(\xbf>)\xa2^\xefJ\
+\xa9\xef\xae\x8eh\x94G\xcfZ\xd1\x99\xa4\xe0\x92\x8b\x03\
+\x9dEw @\xc2up\xf4\x17G\xb4\x11\x0foh\
+\x88r}%B\xe2C\x89B\xdc\xfd%\xa2\xa9\xae\xe3\
+\x0b\xcd\x01a\xd16\xadC\x80\x0d(\x9f\xdc76V\
+'t$R\x1c\xc8\xd8\xe41;\xc5\xec\x99\xc4w\xfe\
+K=\xf8\x9eD\xa9b=\xb3\xc1Q\x00 \xf6\xc6\x8c\
+\xf4\xce\x83\xbd\x9aU\xda\x8f\x1el\x0d\xddQf\x96\x9f\
+\x8d\x98\xd9{\x0a|\x10q\x01Z\xee\xf0BiD\xf4\
+\x06\xdbN\xc4\x09)\xac\xd4\xa1\xf4\xf3\x89+\x06L\x18\
+\xdc \x10%\xe4`\xe0?\xf6\x19:9\xbcR\x18o\
+3t*+\x0c\xf0\x8e6\xaa\xe2YK\x80\x06>/\
+\x00\x0e\xc0\xa7\xae\xaf)\xd9h\x82\xe8~\xd9\xf6Hj\
+\xc8\xa5h\x1f\xecj6\x1f(\xe4\x93\xd5\x87\x82\x03\xbb\
+\xc6\xfe\xcc\x81\x81\xd3w\x83]$\x85\xb2\x0b*\x0a\xa5\
+e\x05\xe4\x1c\xa9\x04\x8b\x04V3\xf7\x0b\xbe3P\xf4\
+\xf0\xf1\xadfn\x1fi\xd7\xcd\x00\xa5\xce\x19\xa8\xcf\xa5\
+<Ya\xb6B\x05\xbe\x06\xcd\x94W\x89*\x08\x90\x01\
+\xa5_\xf6\x81P\xa0q#\xe9\xbe\x1e\x91f\xb5\xa1P\
+r.h\x1d2C8\xf9ZD\x12ke\x14\x85\x0e\
+\x15\xe7\x06#,\x00J\xa2\xac\x02t\xce\xde\xa6\xd9\xda\
+ \x0e\xbf\xbf&@wG\x02\x04\x15\xbd\xda3\x95\xf3\
+\xe9\xc1\x0dJ\x94\xfb\xde?;\x22\x89\xef\x01|\xca\xef\
+x\xee_\x11\xe5\xdf\x9f\x14\xd1\x9e\xf7\xe9\xce\x11\xa9\xe3\
+\x04p\xc6L\xa8\x0a\x9f\xfe\xb2\x12\x97'{8\x89\xee\
+U8\xf8e\xa9\xd3\xa4\x11'\xab\x9c\x07\x8f\xeb\xc5\xda\
+\xa7\xefn6i\xb5\xd3\xffeQ\xf5\x7f\xa2\xeb\xf0h\
+%\x94['\x1fb1\xaa,\xc6\xc6yE\xa7\x8eD\
+\x93B\x10\xc6\x13\xa30\xea\xa4W\x06\xcaBi\x14\x11\
+\x95d\x1a\x0f\x02,\xec\xfe\xc1+\xa3\x1c\x88\xf1I+\
+\xa0\xe6+\x1b\x96\xeb\xf9\x9c\x12\xb1\xbf\xff;\xa6\xd5\x93\
+\xf8\x22~\xef\xda\xbf\xe7\x0f\x89h\x85_\xb7BD\xd2\
+\xbaQ\xc7\xab\xab\xff\xa5\xd9\xe2\xd8\xcf\xcb\xfa\xe8\x7f\x11\
+Q\xfe\xfc#%>\xda\x12_\x80\xfb\xfa\xcf&m\xfd\
+W\xfb\xbc\x15\x12\xe0\x8f\x8d\x9f\x00\x8b\xeay\xb0O\xed\
+\xe8\x0fTf\xf6?\xf6q\x1a\x14\x14\x5c#\x06Q\xdd\
+\x8fwH\xb6u\xcc\xce\x0b8\x99\x5c(\xdb\x5c\xeeS\
+\x94Yoj\x1dn\x9eW3&\xb0_$_:\xbf\
+B\x0f\x83h\xe4\xbd\x09\xc8\xd4:\x81\x12\xdf\x1f\x18Q\
+;\xc7%\x1a\x00^\x19h\x1fHj\xf44D\xc8S\
+\xc9+)\xbc\xc58\xe2\x9c\xebn*\x11\x8d\x98\xbdJ\
+\xbcZ@\xd3\x83Il\x90sW\x00\xbbGc\xc4\x14\
+0\x05[\x85*\x85\x99G\x12\x01\x90q\x1d\xd2\xb9c\
+\x86\x0c\x0c-\x9dW\x16?F\xbc\x99Ylf\x95\xb1\
+\x87C\x14\xee\xb35Z\xc7\xf3'\x83\xd8[\xa5\x96?\
+?\x8d,\x0a\xc0\xf1\xb9\x86\x8b\x0a\xe7\xb64\x19\xaa\xdd\
+s\x88\x83.\x1e\xd1\xa8\xd9fz\xd1\x91\xa63)\xed\
+\x94\xca\x9c<\xb22Q\xbf\x18L\xd4\xfes\x11\xc9\xf6\
+\xf7\xb0A3&v\xb5\xd8\xd787c\xb0\xa3\x8ev\
+\x88\x9an\x86%\x9dp\xdcW\x00\xd8\xb9\xce\x00\x130\
+\x10Ygr\x85\xf2(\x16\xe7\x1f\x9a\x00P\xe5)x\
+\xe8\x88\x0a\x98\xb3\xd8\xac\xf2\x5c\xbb\xf8\xc08\x93\x86\x8d\
+mJU\x88\x9aBM\x83\x02j;y\xb1l!\x19\
+\xc1d\xf4\x95F\x8a;\xe3\x00#\xd8 \x03 \x88\xba\
+\xed<\x9fF\x05\xe2\x88\x00\xa9t\x88)\xa49\xefY\
+g|~F)\xe8\xe0\x93W!\xeaNAJ\xc3\x09\
+*\xff\x9b\x22\x9a\xbb\x18L\x09\xd6\xa7\xcfyF\x18`\
+\x1aq\x1e\xd2\x88\x19\x8b6\x03|\xc1\xc8d\xe4[\x9a\
+!\x14\xee\x1ea\x85iG~\xc7\xf7\x82a\x01\xb3\x80\
+\xef\xc9}\xa6\xeeb\x84\x03\x9bZ\x1ae\x1a\x110\x90\
+F\xe3\x98:-\x03\xce\xcfK\xb3\xf5\xe4g\x9c[\xe4\
+\x01\x8c*\xd0I\xe79\xc6\x9e\x94B\x9c\xeb\xc3\xba\x1c\
+\x89\x16\xbb\xc0\xa7QD\x1e\xcd\x9fS'\xf3\xfd\xc8'\
+\xa9\x87\x19u\x86Y\x80\xa6\x13\x00\x03\x0c\x0cFNh\
+`\x84[\xcc~\x0d\xf8\x9f\x83\xa2l\xdb;\x12\xa0(\
+\xc3f\xfaA\xb7\xa7\x83\xf7\xb6\xeal:$\xa4\xd7\xa5\
+\x1b\x01bD\xc1L\xe7 \x90\xec\xd5u0>*Q\
+\x9fX\xa0A`YG\x0b\xe9q\x09q\xa1\xe0fc\
+\x1a\xd9f\xf8\x02\x0a@\xb0\x8dQt\x18\x9e\x9c\x18\x08\
+\xdcp\x0av\x0a\xeel\xf7\xb0lC\x86\x1e\xa2\x0e\x09\
+\xc0\xc0\x02\xa2\xf0\xe1\xdfs]\xf8<\xa8MS\x90\x82\
+\x04B\xa5b\x16\x03J\xf4\x8ft\x83\x1e+\xb5R\x89\
+\xb5M\xce\x8fx\xa8X\x8c\x0ft|\xe3\xf1;\x17b\
+?[{8\xa0@X+%\xefG\xa9c\xcb\xfbQ\
+\xd0\x22\xaat\x936\x08\xd4[Q-U\x87)\xb4X\
+\xab\x1a\xab\x12\xaf\xd9\x8fT\x10\x8a\x92g?{\x1e\xc4\
+wp}_\xf2\x00\x00 \x00IDATI\x94\x08\
+[/\x0e86>f\xb6\x98\x81\xfa\xb5\xa8:\xb7k\
+V\xf2\xa5\xea\xd0\xbdQ3\xa5\x00\x02bV\x98\xaaJ\
+g \xec\xb4nN\x057\x1b\x1dvs\x02\x00\xa0\x08\
+3\x0b\xd4\xef\x10\xd1\x98\x03PjM\x01<\xb9\x14\xc0\
+'7Q\xbd~\xb1\x88\xf2\x9c\xee\x1cQ^_\x17\xd1\
+f\x8b\x9d\x18>_\xb3\xca \xde\x12\xdf\xe9\x8e\x88h\
+\xf6w$@f4\xe8\xbeu/\x8fh\xaa\xe3\xccr\
+\xcd\x9f\x17\x91T\xb9\xe9\xf8]\x11Q\xfe\xdd|Ds\
+\x83\xa0\x83\xd4=6\x22\x15\xfe\xba\x1f\xfdk#\xca\xfb\
+\xbe4\xa2\xd9\x00Z\x0c\x8e\x83\x0c\xb5{\xa8\xeb\xac#\
+l\x0b\x11\x8f\x81\xf9\xc2\xf3\x0dR\xcf\xfe\xa0\xc4w\xc1\
+\xabj\xb4\x0e13\xcd\xef\x8cH\x09\x15\xcf=\xbe\xf3\
+\x88\xbe \xc2\xc4\xec7\x9d=D\x95(d\xa0\x9a2\
+\xfb\xc5s#*\xb4\x13-FU\x10g\xd1\x0c\x99\x0f\
+\x1e}\x9f\xc9[\x22\x92\xba*bsl\xd4#\x1b'\
+\xef\x0f\xa3\x8d\xdbv\x80\x1c\xfcKhTh3!\xfe\
+\x1cP\xec?\x1c\xb4\xec\xb7h\xaap\xe0\x08Avg\
+\x96\xcfE\x87C\x9d\x84\xd9\xe5\x11m$\xc8\xf6\x88\x88\
+\xca\xdd.\x95v>\xaf\x98=\x00\x0a\x1eMR\x01\x02\
+\xb2\xdd\xed\x16\xd1\x90q\x0e\x9a\xc9r\x93eC\xd5\xbd\
+\xf6\xb9~\x9e\x90n\xd9a\x99\x12\xa8\xeb[\x13\xe2\x1f\
+\xb4\xd9\xc9n\xae\x9bv\xd3FY\xa6c9\xbfOD\
+\xf9\xf59\x11\xc9\x17\xfa\xa9*86\xd1\xc1\x8eO3\
+\x1d\x01\x12\x1cF\x8e\xd8g\xd9\x1fqiA<\x0a[\
+\xb45B\xe7\xba\x9e\x93\x03\x85\xfa\xc7\xc3\xac\xfal\xc1\
+\x90\xe0\xcf\xff*\x22\xd9k\xbeR?\x07\x0a\xde\xdeC\
+\x87\xa1\xecN\x03#\x83\x045\xf6\x9b\xb2?\xf4\x0f\x94\
+(\xcf\xed\xfc\xc7J|\xbc\x02*G\xd6\xce\x8b(\xf1\
+\xd3\xcb#R\x02\x85\x9a0\xaa\xfeA\x11\xdf$\xcdX\
+k\xd6\xdc\x9d\xf9\xd5J\xac\x9a:\x95\x00\xf7\xea,\xb2\
+O\xd8\xa5 N\xd9\x89\xce\xf3\x15\xd5Q-\xcfU\xf7\
+\xd4\x88\xd4\x89\x87\xc1\x15We\x0bu\xb6?\x9fFM\
+\xe8\x84r\xfe-Qej\x07\xd7\x8d\x92P\xf7\xdf\x88\
+H\xd4\xea\x10E*\x89X\xf7\xc4\x88d\xab\x05\x15u\
+\xadAL\xacN\x92n\x92:v4\x14X\xb7\x02\xfe\
+\xcc\xe0\xc0\x05\x03\xa6\x1e\xcc\x0a\x8d\xd0u\xcbG\x94\xd7\
+E\x22R\x07N@\xd9t\xc5\x88\xf2y\x0f\x8b(\xaf\
+\x1f\x88(\x7f\xff\xff\x22\xca\xe7\xfak\x89;\xda\xf7\xab\
+\xbb\xd3'\x93O7\x05\x1b\xa2\x80o,Q\xce\xb5\xee\
+\x92\x12\x97\x8aY\x13\xaa\xf8\x17\x96\xf8\xb6\x0a\xa2\xf5\xd5\
+Y\x8b\x91\x95\xbb\x06qM:\xe30\x22\xa6;M_\
+2}I\xeat\xd3q\x1d\xdb8\x03\x94k\x84\xca\x00\
+\xc3\xe5\x93+&W\xb4\x02cv\x8bD\xde\xe8\xb0!\
+\xa2\x85\xa8\xadF\xbfXo\xb6-f\x9fa_\xfbT\
+\xf5\xabi\xf6\xbd1\xd2\xb5OJ\xc8\xa1\xa8\xa2.\xfe\
+\x92\x12;\xb7\xc2\xce\x94d\xf20:}rk\x09\xe5\
+\xa2\xd0.\xe2\xf3MN-qJ\x12\xc5;\xa5\xaa\xf4\
+4\xe0\x04\xb1,\x80l\xf2\x09:\x9f\xe4\xbdz?\xbb\
+Z \x0e'J:\x0c&\xf2\x01\xbbg!\x82+\x11\
+=\x8b\xec\xc1\xb0\xe2\xfc\x03\xc0\x00\xd8\xd6\xfb\xcd\xf6/\
+\x05\xcb\xfe\xa9q\xa2\xbc\xbc\x94\xad\x9f\xa9Z\x00\xec\xfb\
+\x14\x0c\xec\xa3\x5cw\x98q\xe4\xa5qu\xff\x94\x18\x94\
+\x8cT \xd6\xa7|\x02\xc6\xd6\xeco!\xdf\x9a\xec\x9c\
+\xef\x1f\xa8\xf5\xf6\x93\xa7\xf3\xac\xfb7\xdd3\x22i\x1a\
+\x5c3\xcc\xe8[\x8b\x82\xd1\x87-E\xb1?R\x22\x9a\
+b\xc8\xd8.\x0e7\x1d\xf2g\xf2O\x18\x18\x5c\xbf\xb1\
+X\xaeFR\xcc|D\x94\x0e\xd5}\xbd\xbf\x0bn\xce\
+cu\xe4=\xc2!\xbb\xda\xfe\xc4\x88\xfa\xbd\xef\xaf\xae\
+\x1cb\xa6\xf5gE\x94\xdf_1\xa2\x8aE\x0e\xe2\xc8\
+[\x0d\x85\xb0\x19\x17\xd2\x5cr\xfd\xc0H\x81\xf6y\xe7\
+\xd9\xe4\xbb\xb8Iq]s\xa3\xf3\x814\x93\x8f]\x1c\
+#\x95\x884r\x9f\xc9w\xa4\xf6\xef\x02X\xe2\xb9\xb6\
+Kd&_\x0d\xa6\xf0\xfa\x09\xb7\x1fk\xf10\xe2\xc0\
+\xf3F#\x0e\xe6\x03\xeb\x8c\x06\xa8\xea \x80C\x8f\xa2\
+\x8e\x98+\xd5\x1db\xf5\xd4\x18\x82\xc9D\x03\x03&\x8c\
+\xea\x0c\xdb\x09\xc2\x88\x96\xb8\xa3G\xc0\xb8\x0et\xba\xc7\
+\x8cK\xb4\x08X'w\x098YV\xf5\xdbht\xc2\
+\x8dZ\xf2-F5\x97\x8b(\x9f\xe3[\x11i\x1f\x85\
+\xd1MA\xaf\xfb\xe4\xbf\x8f6\x02\xf91\xd7k\xdc\xe1\
+\xa7\xd0\xe7\xbe3\xdb\xcfs\x0e\xe0\xc3+\xfb0#\x10\
+\x8c\xa62\x92\x89\xdd\x22\x8dL\xb4#\xc2\x0e\xf8\xa0\xc4\
+<\xa1~\x95\xe6\xc8\x5c=\x9e\xb7M\xa2z \xf3P\
+\xb9\x98\xfd\xcf\x22\x04\xffH\x1b\x1a\x9d\xbbx|\xbb\x94\
+\x88R\x90s\x10A\xc5g\xd2\x81\x072\xca\xde\xc7$\
+\xe6\x00@\x00\xa2?a\xef\xb7lz\x1f:\x0eQ\x16\
+,\x94n\x08\x178\xd2\xb7\xc5S\xe2\x0c\x00\x00\xb0@\
+\x82\xae_W\x95\xcf,\xde\x05r\xc3+\xef3f\x02\
+\xd0\xc1\xe4F\x8e|)M\xa1\xc3\x97\x1a\x1b?\xd9\x9f\
+MV\x94\xd8\x17\xc8\x0e\x0b\xf8\x5cQ\xa8\x8fRG\xe4\
+rm\x18P\xa6\xb0\xf7\xd0\x06\xb6\x80\x03\xe9<\xd9\xcb\
+\xf0y\xd8`\xa0\xe42\xdb\xcaL\x11\x0b\x8d\xfb@\xe7\
+\x02\xf5\xeb\xe5#\x1a\x22^\x13\xc8\xd5R'\xf2<!\
+\x9bZ\xc0\x00\x04~\x7f\x16\x1c\x1b\x96\x125'\xd4\x88\
+M!b\xf1\xad\xf2x\x7f\xab^\xc7\xc7\xd5\x99E!\
+\xc1\x91&F\xa2\xe8\xfb\x00\xf2\xcf\xcc\x9d(D\xcc*\
+[4\x91\x99f\xbd\xa22\xdd\xef\x12\xd1:E\xf69\
+\x165\xa6\x1e\x84\x7fk\xea\xf5\xfd\xef\xfb\x9b\xfa\xdf\xb7\
+B\xb1?7\xa2\x5c\xe6\x8fG\x94_\xef\x1aQ^\xd7\
+\x8dH\xcf\x0f\xc8\x22\x1b\xa8\x90\xea\xfeg\x11\xe5\xf5\xfe\
+\x88\xf6\xea\x83C\xeb\xb9{LD\xa3d\xf6gG\xa4\
+Q\x88\xb0\xbbJT\x1f\x12Z\x8f\x12\xa9\x004\x85\x0d\
+\xa6\x08\x09\xd7R\x83\x1fm\xbfrDy\xfdkD\x12\
+\xedA\x9c\x85\x84Y\xc0\x89\x11f\xa8m\xb5rHv\
+\x81t\x9e(\xb4P\xc7\x95*\xabg\xd7\xf1\x09\x87\x9a\
+\xc7\xf3\x02`@\x81\x0d\xf0\x06\xf2\x0cP\xc9\xf37F\
+F9\x88\xc4 \xb08\x93\x18+\xdeG8\x888\xa8\
+\xb1;B\x5c\x89\xd1\x0a\xf61>\xef\xc8\xad\xc1\xf7\x99\
+\xf5\x89j1\xe2.0[\xf8w0\x14\x00\x86t\xa0\
+U\xe0(\x0a\xbc\x0f\x9486%H\xcc\xa6\x02\x5c\x92\
+ \xb0\x0f\x918q\x1d\xd4\x19\xe8\xf6\x8aHj\xf4\xfb\
+\x0d\xcc\x15wL^1\x88rF\xb9]\xb5!4c\
+8yTD\xf3\xc9\xf6\xcc(\xfb\x0a\xd7\xe1>=\xf7\
+\xa2\xb6\xb2o0z4\xb9o\xf2\xcf\xc9?\x93\x1a7\
+\xd7\x81}\x97\x19\xf7\xeb#Z\x87\xa8&\xf2\xa7\xb6\xf5\
+\xda\xad\xdf\xadW\xb5<\xa4U\x81X\xe4\xe4\xe3\x03p\
+0\x7f\xd6\xfc\x17\xe7\x83\xa9\xf0\xd5\x88\xf2\xbaJD\x12\
+q\xc2\x1d\x02\xd7\x11\x00ZT\x8f\xa1\xfa\x8bqS\x92\
+\xa9\xc1\xc5\xe1\xa5\xeaT\xa9\xc0\x9d}S\x89\xc0\xdaR\
+\x05\xdeO#\x11g\x0dbc\xa1\xb0\x19\xc7c\xbfW\
+D\x15g\x1bT\xe8\x99\xb5T\x81Qg\x83\xcb\xefO\
+7\x9an<-\xdfg\xba{\x89r\xdd\xa6\xbf\x8f(\
+\x07\xf2Us?\x9f\x0bQ\xc0\xc5\x07M\x00\x17 \xd2\
+8\xb18'3\xb3\xa8\x9a\xc3h\xa1\x00\xa4\xe0\xfdu\
+\x85V\x07M\x88M\x95p\xbe;i\x9b\xd0\x19\x030\
+\x13c\x0c \xae\xde\xed\xf75U\xfbz\x7f>\x97\x0a\
+Nf\xdf\x83\xe1\xf1B1s\xde\xd7\x98M\xfe\xbc*\
+H\xdc\xc1\x0a8\xef`u\xda\xaf\x11\x83\xe2t\x8d\xc4\
+<\xaf\x89\xfaasWa\xe6\xdd\xc4@\xfbhS\xfb\
+\xf7HC\x00\x96[\xe8\xf3\xad\x9cF\x00c\xb0\xec\x0b\
+\x8d\x11T\xed\x15\x7fY\x81\xab\x010yBD-h\
+\x07\xad\x01\x00\x0b%H\xdd?\x22\xca\xfdyLD\xb9\
+\xbf\xdf\x8d(\xaf\x1b\x8b\xb2\xaf\xe7\xbf\x16\x0e\x99\xa1@\
+'\x8c\xd9T\xce\xcd(\xef\x9e\xa4\xc2\xe6\xd3z\x0e\xca\
+y3]\xa5\xc4\xaa\x8d\xa1\xd3\xdfS\xe2\xef\x0d\xe0\xaf\
+\xe7\xc6%\xa2\xfc\x1e\x9f\xf2,5\x1a\xba\xc3\x22\x92f\
+\x80\x9e+\xdb2\xee$W\x98e\x86\x11\x14\xbb\xad\x9c\
++\xe6\x0b\xc0\xe7\xd2b\xf6it`\xc1\x07\x87D|\
+\xb6\x9f\x12n\xce\xb7\xb1m3@\xed\x9d\x152l*\
+\xf0\x1bD\x94\xd7GG\xb4\xf3\x12f[uE:?\
+\xd9\x00\x07\xc0\xb3\xb6\x98,\x07%5vu\x04\xab\xd8\
+\xe4&\x09\x88\xe6\xbaF\x9fs\xf3\x94\xefh\xa4\xa76\
+&v\xf9o\x0d\x89z\xfd\x05@\xbb\x80\x81!\x81\xd6\
+\x0f\x09\xb7\x0ak\x17\xfah\xa7@\xf5\x07\xd8R\xa7\x0d\
+&\x98m\xe5\xd0\xcayM\x8dV\x00\x02\xd0RH\xc4\
+\xac\xf2\xd5\xc9\xad\x07;05\x0e\xca\x9f\x0dZ\x01\xe4\
+\xaf\x00\x980\xe3\x10YF\x9c/\xce\xe5.1'`\
+\xda\xb2\x1e\xb5?\x22NZ\xae\xd2\xcb\xa3\x81\xd3o\xd9\
+o\xd5o\x95\xf6\x11\x15h\xe5)\xb8\xb7\xbb\xb7\x02\x8e\
+wT\xc0Q\xa3kV-\xd7\xb9\x82\x08\xa9G\x13\x10\
+\xf9ef|\x91\x88\xf6\xb9\xac\xf5\x03\xa3G\x05\x9a\x99\
+\x0e4\xb8\xd0\xa0\x81\x02\x8eF\x06y\x08\xa3\xa6\x00(\
+*\xec\xd1\x5c\xe2y\xe0<\x85A\x88}\xb4\xdd\x09T\
+\xe8\xdb^PZ1\xce\x87`:Rpa\xdf\x07\xb0\
+/QeT\xfa\x9d\x0f\xc1\xc4\x85\xd1\x0b\xd0\xf1\x03\x9d\
+\xbf\x14\xc2\xdc\x1f:\xd104\x18\xdd\x11\xe3\xd6\x1a\x17\
+\x14\xca\xd8\xf0},\xa2\xf9\xd7\xd7\x91\x9a[S\x87\x9e\
+s\xe3\xf6\x88\xd4\xc0\xa1p\xd4\x88.La\xd7U\xe3\
+\xce5\x9fSu\x91\x99MhW\xe0F\x01cX\xa2\
+\xb3\x06\x02\xd0\x02C\xbb\x09\xf1GF3x.\xe8\xf8\
+\xe3\xae\x04\xa0rQ\xc4\xc3\xe4[hN1\x22\x83\xd6\
+\x1b\xdf\x8f\xfbD>L\xfd\xc8\xfeE\x1d\xc6\xaf\xa9\x03\
+\xc9{\xc76\xf6\xd4Qc\xcd\xac\x11Pb\x06(\x0d\
+/\xde\x0f\xc0\x11qQ\xf2B\xee\x17\x8dZ\xec\xff\xb0\
+\xe5\xe5\xfbSo\x1e\x1b\x91lw\x01\xc6y\x8e\xc9\xbf\
+`^k\xbf\x9d\xf3\x85\x8d\xb42w\xe6)x\xe3\xe3\
+.\x96.\x88f\xf7\xbd!\x82\x0ca\xf7\xc0,\xfdX\
+5\x9aB\x9c\x05\x05r3\x16s\xe0B\xc5e_9\
+\xfd>L\x00\xb4\x09`\x14\x00\x04\xe0B0\x06\x04\x00\
+(\xb8\x11\x00\x0bP\xeb\xa0vp\xa0\x8d\x01\x00\x101\
+>\x07@\x02\x05\x08\x0b\x01{\x89gG$\xb13\xf9\
+\x9a\x93\xb8Z}\x15\x06\x003\x1aP3\xf8\xfe\xdfJ\
+\xe2-\x1b\xab\x13\xfd\x99\xf4\xc0P |L\x1d\xa1o\
+\xaa\xc3\xc5\x81\xb4\xa2>/\x14f\x12<\x0e\xa0w\xd7\
+h\x1b464k\x0e\x88/3`P\x94\x10cr\
+\xe7\x1eQ\x0d\xddw\x100:\x13t\x1aIh,\x9e\
+\xb6GD\x12M\xa1c\x80\xad\x9b6\x08T\xcbg\xab\
+\x0c\x94,\xa8\xeb\x9eyE\xbc\x87N1To\x1d\xe0\
+\xb3M#\x1a\xa2XU\x88\xf7K\x89\x13\x94I:\x1f\
+t\xbe\xa1xu\x11\xe59\xfd`D\x9b\x99\xb6\xea\xf9\
+\x8f\x22\xcam\xdf1\xa2Q==\xeb\x0bc\x02\xc4\x12\
+\x15S\x89\x06\xd1)\x9d\x7f \x22m`*p\x8d\xd4\
+_0\xbb\xb0\xfa\xa2\x9f\x142k\xe5\xe7l\x1aQ\xfe\
+\xdd\xf2\x11\xa9\xd3%\xd1+\x03\x18\xea\xccPh1s\
+\xdb\xff0BvL\xdb\xb6\x8e\x9a\x11n\xcd\xec{$\
+\x05\xc6\x06\xa2r\xc7\xd50B\xef\x03\x08{=D\xf9\
+\xf0\xc1Ub\xe0\x99)\x0a\xeb\xff\xa7\xebL\xe0o\x9d\
+\xaa7\xfe;\xfb\xfc\xcc\xd7<\x94y\x9e\xa7\x94\xcc\x95\
+)*\x19B\x22\x12\x912eJ\xc9\x5c\x0a)\x22Q\
+25\xe8\xaa\xcc\x85\x882\x15\x22I\xca\xfcW*s\
+\xa6B\x8a\xf3\x9e\xff^{?\xdf\xb5\x97\xf7\xca\xfa\xd4\
+\xf9\xdc{\x7f\xc39\xef\xbb\xdf\xbd\xd7z\xd6\xb3\x9e\xe7\
+:\x8b\x80\xec\xf7g\x9b\xd8\x00I\xf0x\xe5\x80`\xdd\
+@!\x14R\xcehK\x99i~\x7f\xb0}\x14\x85\xcd\
+\xed\x9f\xb4\xcf\xfbL\x18\x9d!\x80*\xa8kRsw\
+\x0a\x1d*\xbc\xcc$\x93\xa0b\x07\x092\xcd\xa8\x80\x12\
+A\xa7\x98\x034\xb2o\xd2\xb9\xb8\xb2\x02`.Z\x05\
+E^\x94p\x07\xdaTp\xfb\x01\x8a\xed\x1d>\xf4h\
+,(\xc1A\x8b\xa2\xc0\xa6\xb3\xb4}\xd8;l+U\
+\xe4\xbb;\xae;\xb6;\xb6\xa8g\x97\x11\x12\x10\xe6\xf4\
+V\x8b2BRf\xca=\x91V'\xdc\xa9\x91J\xe4\
+\x9cJ~}\xbe\xbf\xd7\x87\x04\x1b\xffc\xdc\x0f\xb8~\
+:\xc0\xcdl\xd0\xec\x06=\xf1\xe1\xbc\xa0\x80\xc1fp\
+^\x8b\xa6\x19Rl\xe4Nl\xcf\xed\xe8\xf8\xd1q#\
+c\xb6lc\x11:\x0d \xff\x140\xac\xbb\xad\xd4\xf9\
+\xbfY\xf7q/\x15\xec\x14\xde\x0f\xd5\x9f\x8bo\xba\xfb\
+u\xffD\xf7S\xe7G\xb1g\x1b4`\x85\x84-=\
+mQf\xf7\x0f.\xb3\xfb\x97\x0c.\xb6\xc2kx\x91\
+E~\xfd\xbcE>v\xef\xca\xf1\xfb\xe2W\xbf}\xf1\
+\xabW\xc7\xdf\x995J\x9c\x195\x1a<a\x11\x12\x09\
++/v\x17s\xe9\xf4F\xa9tQD\xa3\xec\xef\x1c\
+\x00v\xed\xffi\x0b\x8b\x90\xc8\x00\x88\xe0&px\x8e\
+\xc3\xd4Y}E\xeb=\xba\x08<_G\x1cHh\x19\
+\xf9\x82YQ\x00\xcbUB\xe7\x97\x04\x91\x11\x0c\xfb\xfa\
+\x1d\x02\xc0lW}\xf5\x06\xe8\xa6\x07-\xcc\xe6\xd6\xa2\
+i\xac0B\xd7-o\x11\xec9\xa5\xa5Q\x18$k\
+5\x0d\x8c\xa2!1\xb3\xce\x83\xef\x17FC\xd9\x1f\xd2\
+\x19\xe9\xdb)'\xf2iv\x8b \xe2w\xa7E\xbe\x0f\
+\x97Z\xb4D\x1fq/\x0a\x98\xd1.\xa3]G\xd6A\
+\xdc\xa9\xdb\xd1\x0a[W\x8d\xc7m\x82\xcfm\xa7\xc2:\
+\xea4\xad\x14\xc4\xcb\xb4\xcf\xba\xdd\xdfi\x16\xf9\xe7m\
+o\xd1\x9e\xe7\xf1\x07\xcd\xd8O\x09\xf0\xfdm\x9f\xf0N\
+\xe9\xf3\x9a\x85&\xb1\xa7\xe3\xff>u\x98\x01\x90N\xae\
+\xfb\xb77t\xa0\xbeRh \x92LG\xfbL\xb9\xdf\
+\xfc\xa5\xda\xe4\xb9\xaa\xb4\xa5\xe5\xf7kT\x06\xea\xf2d\
+\xa3\xc8\x17\x8d\x89\xa7\x1b\xe0\xdf\xedk\x11\xce\x1f\x1b-\
+\x5cFZ\x15_o\xfb\x5c\xba\xc6B\x0c\x8c\xe5\xb5\xef\
+\xfe%h\x92\xc8\x1e\xcd;xP\xae\xe9h\xdbi\xfb\
+\xf3\xc6\xb8(\xe5\xe1W\x83\xa8\xa5l4=QV\xa3\
+\xc2;\xa2\xb8\xdch_s\xed\x0bu\xd2\x9cI\xc6L\
+>\xc0\x1e\xae;0\x1ea\x98h$l<\x9fEP\
+\xf7\x07\xf0\x07\x10\xdd,\xaf\xc7\xcd\x82-\x1e\x00\x1a\xb6\
+\xc044D\xf9\xf7\xd1\x08\xf2h\xfb\xdc9O\xe8\xee\
+\xce\xf1\xc7\xfc\xbaT\x8e\xa5\x1b\xc3\x8fB\xd0\x01[\xa9\
+\xf2;\xf5~\xcd\xf1Z\xa51E\x01\xc9h\xc8 \x9f\
+\x93\x83&~I\xa1i\xfc\x94\xa2\xd5\xb4\x96D\xf7V\
+\x11\xa3\x88|R\x00\xa2\x8b3c\x17\xca(\xc5\x0b\xe3\
+\xe7\xc7\xcf\x87\x0e?y8\x1dU(\xe7\x1a\x89@\x5c\
+\xd1\xcf\x05\xdci\xf8\xfc\x00\xeb\xda\x87\x9c\xe2\xcf\xa8\x01\
+y\xba\x1a\x0b\x8cRv\xebY\x04qc\x1a\x1a\xe4\xb9\
+\x00M\xd6\x98\xbb44\xacx\x05(\x82\x91\x07\xd0B\
+\x01K!\xc6\xfbB{\xe2J\x8b0\xea\x02P\x00\xc0\
+\x0f\xa0\x0f\xf3I\xc0\x92\x03\x01\x88Is\x1eAI\xc7\
+\x85F@\x98\xdb\xa8\xaa\x1e\xc3\x86\xdc\xdf\x1f\xf9\xa9F\
+~`\xec\xf8u\xa5\x9e\xa2\x13\xcd9\x01\x10\xd5\xa7\xb2\
+\xc3\xd0n\x1a\x0e\xf5?\xce)F8`&P\x07P\
+\xa0\xd3\xa0\xc0\xbd\xe3:56aR\xd3)\xa7\x8e\xc1\
+\xc5\x0a\xed\xa9\x13\xc7'\x15;R\x1aI\x00\xd5\x00\xb3\
+0.a \xf1\xf7|N\xee\xa3\xf2\x04\xf2:\xa7\xda\
+3b\xc5\xf5!/\xe4\xef\xb9\xff\xfd\xd9~^\x01\x1e\
+\x00|x?|\xfe\xbe\x86\x00\xeb\x0c`\x00 \x09\xc6\
+\x02b\x95\xd2\x8c\xf1\x91+1\x8a}\xbf\x81\xc1\x0b\x00\
+\xa5\xcf?\xe9\x85,7\xd0\x1e\x9b\xb9\x02\x85\x03[*\
+K\xcb\xe7\x0a~\xdc\xa8s\xd3\x01\xd3\xc1\xe6\xd4BT\
++\xa1X\x00\x04 \x0a\xc8L\x1f\xbf\x17\xe0\xc0\xca\x80\
+\x85\x9b\xfd\x8d\x7f?\x857\x85|\xbc\xd03\x84\x1b\xc8\
+\x82\xa4\x15J\xa7\x0e\x11\x17f\xb09@H\xc8{j\
+\xdd\xfeg\xde\x17\x00\x00\x88\x17\x05/\x05{_\xd5\x94\
+\x82\x05D\x08\xe4\x18\x1b\x8b(\x02sg+,L\xc1\
+\xa0 {\xcfH\xb4j%\xd9\xfc\x81\xe4\x90@\x81D\
+\xca\x97\xdbg=@\x9eV\xd1A\xfe;\xfd|\x80\x01\
+i\x05\xa4\xf5\xd3\x06i\x83 \xbe\x07\x85\xfd\xd2:\xbb\
+\x95\x8b\xb8\xaa\xb6\x0b\xe5\x9f\x02\x8e\x85|\x8b\xa8U\xd8\
+\x91\x80LRxa\xeb\xa3B\xcaG\x11xP\xb8\xef\
+0\x04\x00f~U\xbf\x0e\x84sp\xbb\x10e\x0a-\
+u<J'\xe7\xee\xa0\xa6*`\xc5\xd5\x91\x11\x95b\
+C\xc2\xeeGv\x83P\xf4\xbb\x13\xba/w_\x0e\x0c\
+\x0b\x15\xb4\xe3\xb9-\x1a2Gg\xd1;2\xa2\xdc\x8f\
+^\xb1\xc8\xafg[\x04\x9b6\xec\x1e)PPQ\x05\
+\xc1\x14\xf5\xb0\xfb\xb7E\x98M\x97\xb8\x90\xdb\xb6\xa0\xde\
+\xadDot\x8eE~}\xc6\xa2}\xbe\xe1\x8a\x16M\
+L\x0a_\xe3b\xeb\xf4\xc7\x060\x14\xaa\xb1\x01\x01\xef\
+\xb0\xc8_\xf7\xbc\x0eb\xdc\x07\xb0e\xe2>3r\xc2\
+z\xc3\x8d\x80Y[Q\xa7\x9dr\xc6l\xd2Q\x16\xe1\
+\xb9\x97&\x80\xff\x5c:\x1c\xfd\x03\x95\x82G\x07\x83\x8b\
+9\xc1P\x11\xc0\xe3\x052\x07\x93\xd6\xa9\xaf?:.\
+\xecoP\xfdU\xf8\x00\x88\x81\x9c\xa6\x83,\x02\xe5N\
+\x1d\x12\xdfGp\xdf\xf8|\x9d}t\x1b\xa1+,\xc2\
+u\xa2\xc3D\xa1\xc9\xdfCE\xe4yG\xbd\x97\x11\x03\
+u\x0c\x07\x9f\xb3h\xcc\x912\x1b}\xac\x9e\xef\x1b\x1a\
+\x80\xe1*\xf4\xcc\x10\xd2\xb9\x04\x08{\xbe\x8a\x22\xba\xdf\
+=\xe2G\xec_r\x1bqM\x07]\x97\xee\xa1\xea\xf2\
+\x91>_;\x8a\x00h\xe9*\x8b\xb2.\x0b\x83\xc9\x19\
+\x13\x88\x09\xf1g\x12\x17\x13\xfd\xfck\xd3\x020\xa2q\
+\xa1\x1ak6\xcdm\xba\xd8\xb7\xfb6k\x02\x9c}\x96\
+W\xf6D\x83o[\x94\xce\xfe\xc9\xd6\xd9\x1f_S\x13\
+\xa3\xee\x05\xeb\x99\x96D\xb5P\xbe\xbb\x93\xba\xafu_\
+k\xe2Dn\x7f'\xean~\xaf%\xf1\xc1\xe7\xdcG\
+R\xd8/\x10\x11\xd4l\xb8\xefw\x0f\xa9\xe3\x00\x10\xa5\
+\xf3\xc6;\xae\x8cx\x09\x00\xc5=#\xa7\xa1\x87Z\x22\
+:\xfc\x9eE~\xfd\xb7E>\x80\x8f\xc9\x91\xd7\xf1\xf0\
+\x00\x0b\xd9\xd3\xbd\xa9\xd9\xe1\xe5}:G;\xa7\xdc\x85\
+\x05\x9b<Qh\xd3\x03\x16\xa1cg\xae'o\xd7s\
+\x7f\x8f\x00\xa9\x9b\x04\x0c\xbeW\x89\xc0\xada=\xd1\xa9\
+\x91\x8d\x19\xa3$\x0e\x98\xa1~o\xe2\xb8\x0b\x87u\xde\
+\x03\xe6\x07W[\x04\x0a&\xc0\x0b\x09\x0e\xe7\x1eL\x9e\
+5\x8blX\x1b\xc12\x00\xe3\x1bM\x04\xd1\x81\x85\xe7\
+\xab\xddc\xfa\x9eE\xd1\xa4\xa8\x9dV\x01\x9b\xa8\xbc\x17\
+W\x8b\xf3\x8b\x08\xd9B\xf6>\xa1\x8c\xbb\xfa7\x8d\x89\
+#\xb4\x0f|Wn-\x88\xee\xbd\xb7\x02\xb4\xa9\xab\xa3\
+T9\x9b\xa9\x050\xd4\xd2\xf9\xc5\xf4\xd1\xbag$b\
+\xb4\x8d\xb4`>\xdb\x1d\xd2\x1dR\x0a\xb6\xb2O\x00\xe0\
+{\xfe`\xe5\xf7\xc9b<m\xd7\x98\x8f\x83\x0b-\x0a\
+`V\xce\xb5t\x9bEI\xf4\xcb\xa8R\xb7w\xb7W\
+\xb7\x97F`\xde-q\xce\xd3$\xee\xf6\xd9\xd21-\
+\x80\xbd\xbbQ \xaa\xc6\xf5f\xbf\xe5~\xdd\xa7Bk\
+\xde\xc1|\x85a\xc9\xcc(\xa2\xc2\xbb\xeb\xdc\x11C\x88\
+\x913g2\xca6\xd7E^\x17\xb7\x083\xe6\x02\x02\
+J\xe1\xbfO\x03l\xca\x8c\xea\x9d\x1a\xf5\xb9N6\x93\
+\x93\x8d9T\xec07\x0bL#\xd6\xfd\xca\x16A\xb5\
+]\xfb\xa5\x8b\x8f\xe1n\x003\x92\x0e;\xb6c\xd8\x82\
+\xf5\x18\x8b\xec\xdf>K\x0f\xf3\x90N6\xe7\x17\x85\x09\
+\xebY\xe7\x8b3\x97\xd4\x10K\xef\xb2h\x85\x8e\xedB\
+\xb6\x0f\xb9\xfd1\x0c\xa4\xd9E\x9d\x97KQ\xbe\xda\x1f\
++\x9aP\x06W\xfe(4\x80\x10\x07\x16\xf0\xceyV\
+\x00\xa1\x0f\xb6s\xb6\xbb\xcc\x22\xaf\xc3\xc7rX\xbe\xb2\
+G\x8e\x8f\x87Bw\xd1n\xb1n1Q\xd8\x17\x0c\x8c\
+M\x1b\xf92\xed\x98\xf7\xa4M\xd3{\xc2\x88\xd0\xdb\x8c\
+#S\x0a\xabbK\x99\xef\xe6r\xc6\xcc(\xdf\xb7C\
+\xeb\xf0\x03\xcc\x96}h\x8f\x96\xef\x99\xb4f\x11\xd7\xa4\
+\xa0EcK6o\xae\xe5r|\x05\xcc&\x0e\xd5\xa8\
+\xe9o\xe5^\xa1|-\xcd\x92\xa6\xa4)a\xa4\x0b\xd1\
+X\x80e\xc4\xa6\xe7\xab\x1a\x08^\xf8q\xfe\x0a\xe0\xf2\
+\xd1\x9d\xad-\xf2\xeb\xba\x16\xad\xb0s@\x84\x91\x07\x5c\
+\x06\x18\x81\xa4\x00\xe39R!\xef\x0dF~\x1f\x8dC\
+\x1a\xa6\x14\xbc=\x86\x88\xff<\x00\x01\x0a]\xf2 \x0a\
+t\xf6M\x0a`\x00r~\x0f\x1de\x1a\x0a\x14\x84\xb8\
+\xb4\xc0\xa4\x04\xb8\xa70\x97k\x84\xe7\x99h\x1e\xc1h\
+\xa0\xc0GU\xff6\x8b\x00Tp\xee\x93_\xa1\xadA\
+\xfeH\xe7]\xf5\x88\x03\x0f\x00fZ\xf7.~\xccz\
+\x97\x88\xa2\x8fT\x907R\xf0S\xd0S\x80\xd3\xa0\xba\
+#\xef+w\x14@\xe5\x94\x02\xa8\x90\x17\x0a\xa8s@\
+\x07 \x02f\x01#\xe40*.\xb5\x08u\x1b\xeeQ\
+\x1aQ\xf3s\x9d\xfa\x0e \x95u\xce\xcf\xe7\x95\x86\x10\
+\xcc\x03\xec>\xb1idd\x00\xf7\x09\xe5\xd9\xced\x86\
+\x19\x80F\x15\xa3\xf50p`\x18\xa1]\x12G\xe2\xa6\
+\x04\xa0\x91\xcf\x03\x80\xa3\xeb6Y\xf0\x94\x7f\x86B\x96\
+\x8e\x8b\x15\xfeonb\x7f\xa5,^0\x14\xc4l\x8c\
+\xcc\x1e\xb11\x82\xd0\xc1\x08\xe0\xcf\x0b\x94\x9et\xa3\xe8\
+\x93h\xf1\xa0\x008\x88\xba\xe2o\x5c\x80\xc04\x05y\
+\x1f\x10\xe0\x03\xf3@\xc2d\xe8\xdb*P\x80\xf0\xe0\xb0\
+\x80)\xfc\xa1\xf2\xf3\xe7\xbe;\x00\x80\x08_\xc7\xf7s\
+\x81\x9b\xd8_E\xaa\x98\xd1\x05\xb1\x81z\x0c0\xc1\xcf\
+\xddK\xea\xd3\xda\x18\xd3\xd6\x12W\xe9\xcf\x5cS\xe0\xf3\
+\xbe\x10)!\x81\xe5\xba1z\xa0\x07m0\xabE\xb0\
+\xb3:\xac\x8a\x80\xe4\xc5XU\x89\xa5\xa2\xce\x02g\xc3\
+\xccIb\xf5\xd5DM\x9c\xce\x19\x07\x22\x00\x0d\xe21\
+\x97\xebA\x9f\xa1\xde\x07\xc4\x93|\xc6N\xd4p\x0a\x1d\
+\xfcU\x99\xd5d\xb6\x96Dr\xb0c\xed(a\x0b\xe6\
+\x85\x1f\x94=u\x06\xbc\x83N\xe7\x18 \x86\x0d\x0f\xff\
+VQi\xba\x9d\xba\x8ft\x1fi\x05c7\xb6(L\
+\x83c\x8aH\xdec\xf9\xc1{\xacQ\xb9L\x1a\xb1\x88\
+#J\x9c\xa5[\xc5\x22\xbf\x9ef\xd1\x18\x01\xd3\x887\
+iCu*\xab\x00\x8b\xee\x8b\x16A\x8d\xf9b\x8b6\
+\xab\x8c\x9d\x8b\xa5\x93\x96P2\xd2\xd1\x9dg\x91_\x17\
+\xab\x07\xba\xab\xa3\x22z\x05\xe2\x8d\xda\xbb\x89\x8fm\xdb\
+\xd6G\xf7N\x8b\xfc\xfa\x92E\x10\xaf\xe1\xf99\xb8\xc4\
+D\xf7\x94E\x98\xd9g\x7f\x00q\xe5\xbe\x03\xa4q\xa0\
+p\xbdxN(\x14\xd8\xa0\xd8\xc0\x99a\xe2\x80\xa3\xa3\
+\xc2\xf3\x8bZ\xb6\xa8}\xa8N;\xf5\x8c\x8d\x0c;\x1f\
+\x805\x89\xe6\xf9\x8c\xa6D\xa2\xfcy\xc7n\x06\xbbF\
+\xd9}\x91\xa0\xa5\x1d,\x0a\x83\xe7\x90\xa29\xb0\xef`\
+\x9f\xc2`a\x86\x8f\x8e\x13\x09-\xb6j: q_\
+\xf0\x03\x80\xc2_\xcf\xbf\xfb\xf6BAg\xa6\x8bu\x8a\
+\x0f\xb4D\xe0(\xc0\x1d\xe1\xd6\xef+\xa3\x02'4\xd1\
+0\xdf\xef\xb4\xef\x16;\xcc\xc5\xc3\xcc#\x14H\x89\x83\
+\xfa\xc8\x05\xd7\xe5\xcc\x0a\x80\xf9L\x22\x1a\x22\x8b\xd5\x19\
+\xbetf\xfav:\xb3\xd9\x95\xe2w\xec\x80\x1b\x89\x81\
+\xf6\xe3\xf1\xdd\xe3?\x98\xdf\xb0\xdf7\xd4\x7fe;\xe8\
+*\xda\x8cF\xb0\xbe\xb4\x9e\xf2s\x9f#\xecW$j\
+\xa8\x8e\xa3\x89r}\xb5\x89J\xfb\xa7\xfd\xd2\xfe\xad3\
+\xeab\xa1\xdf\x95Z\xf5}\xa2\xba\xfe]\xf6\x8f\xeaT\
+\xfbl\xf1\x81U\xdba\xf0\xcfZh\xfa\xbeK\xa2\x01\
+\xf5\x14\x04\xbf\x8d\x82\xd4\x83\xff\x05%\x1c$F\x14 \
+\x9c\x0b\x9cW\x8c&\x08(O\x07\xe68 \xd8\xf9\x91\
+0\xe0F!m\x8b\xe1\xc7-\xf2\xe7x\xc2\xa2Q&\
+G\x8fZ\xb4\xcf1\xfc\x81\x85\x00\xb4\x9b\xe4>2\xd1\
+4?|$\x22R\x17\xe7n#\x04\xce\xa0\xb1\xffR\
+\x03\xc8p?\xf1\x82R\xc0\x18\xb3\xe0~\xbe\x92\x80H\
+\x05\x9eu\xea\x85\x18\xfb\x13@\x18\x80\x15\xe2_\xf8\xd1\
+\xdfa\xd3\xe9%\xcf\xa8\x09\xad1\x11\x0eo\xda\x00t\
+\x0e\xbb\x0fv\xdbv\xdb\x96\xe7\xa5\x88\x1f\x99\x19\xa1\x15\
+\xd2\xe9\x80\x1c\x07j\xc6\xfa}md\xa3{\xb9\xee{\
+\xf9wV\xd1\xb2\x87%r\xb5\x9ef\xe3\xd1B\x10\xa5\
+5\xfd\xc2\xa2\xa9Fcg\x0b\x10\xfd\xda\xcf,\x0a\xc0\
+_\x0bn\x98\x02G\xd6\xc2l\xbc\x8e|\xb9\x05\xb0N\
+\x5c\xa4\x0e:\x9d|\x137\xdb\xb8\xec\x8f\xd5\x85B\xe7\
+tz\xde\xa2\x01\xd5\xe3\x1d\xea\xacq~w\xa5\x83\xed\
+v\xa9\xf2k\xcf\xcf{-\x5c\xc4\xaca\xb4m|\x84\
+E\xa0L\xf3\xfb)\xc8\xa4\xa1\xe2\x94\xe4\xadja\xef\
+\xa2R\xb2\xb3\xa3\x83\xcdsZF\x11oT\x81\xb5i\
+\x032JB{\xb3D\xe3\xf2~\xdf\xbd?\xc7\xe6A\
+LV\xb3\xf5i\x1f\x0b\x01N\xf9}\xa6\xaf\xe6\xf8J\
+\x00L\x8f/a.\x1b\xc7\xd899\xb8%\xc7\xcdM\
+\xed\xbb\xec\x86\xf9\x1c\xea\xae\xc9\xf1\xf3\xd0!\xc6\x16P\
+\xf7\x9d\xfd\x91\x02\xbf\xfb\xaaE\xd8\xb7\xb1=\x16 \x95\
+\xbeo\x11\xa8\xf80\xf2\xd4\xc1\xf6\xc2\x93\x82\x0f\x15z\
+\x8dTx#\x81\xc2\x9d\x11J4{P\x11\xa7\xd3\xca\
+\xf3B\xe2\xdf\xd7\xba\x82J\x8d;\x8b1\xf6\x96\x123\
+$\xaf\xb3\xd1\x99\x16b \xe6\xf7\xd5=\x97#\xaf\x9b\
+\xee=\x16Adt\xfb\x89\x1d\xcc\x05j\xb0S\xdeW\
+w*\x22\xb3o1\x91\xd9\xf4Zz5\xbd\xda\xc4E\
+\xdd\xc5\x82\x02D@\x833\xf7\xe84\x93\xbf\x92\x7fr\
+\x8e1R\xf7R\x19\x12kbr0\x96\xb0?{T\
+\x80:\xe2\x9fW\x08\x18\xe6<\x06\xa8{\xa4\xbe\x9f|\
+j\x14qYg(h\xdd\xfay\xd0\x89\xa2\x8e\xd6\x83\
+\x18\x1d\xdd\x03\xdd\x83].\xfc\xba\xdb,\x8a\xf6R\x11\
+o\x1e?i\x11\x18\x10\xaco\x8d\xd0\xb9($#L\
+\x14\xc20\x05)\xd4a\xb2A\xb1f\x14\x90s\x83B\
+\x8f\x02\x1fF\x1a\xfb\x1f\x85(\xf9\x0f\xaf\x88\xff!J\
+L\xa7\x1c\xe0\x19&+\xcf/\x80koT\x99\xeb\x09\
+\x93\xa8o\xbb\xcc\xa8\xa43\x94\xc5@a\xf4\x11\xa0\xcf\
+\x19\xc0\xd2\xc2\x18\xafk\x11\x5c2\xd4\x00p\xe6+6\
+\x93'Z\x04\xed\x01\x80\x00\xd9\x8e\xbbF\x8a43`\
+\xe2:\x00H\xc1\xccz\xe4y\x05\xd0h\x9ar\xa9\xe4\
+?}\xb1?\xcea\x18\x1806\xfa\xf5 \x8d`\xea\
+4\xea\x08^\xa9\xe7\xc8\x97\xc8\xd7`\x12\x00\xcc\xf0~\
+\xf9=\x8cN\x00\xbc\x02\xac\x00\xf0p\xbf\x11\xd7\x04`\
+\xe0\xfbXg\xec74z\xa8;\x19\xb1Uc\xd3\x19\
+\xa1\xe4S\xd4A\x5c\x17\xfeS\xe3e\xd2\x91\x89\xbe\xc8\
+\x9d\xc4\x7f\xa6Q{\xb4\x8d~\x91\xf0gf\xb2\x0dq\
+_(\xcc\xea\xd2\xe9\xa5\xc3\x838\x0e3\xcbsX4\
+\x1b\x1f/p\xf9\xa0$L\xbd\x02\xbc_\x98{\xa1\xd5\
+\x17A\xe1sp\xc3x?t\x9ax\xe5\xef\xf9\xfa\x9e\
+\x9f\xbaw\xa6\x11\x09\x04\x88\xe0\xfd\xf0\xfbx\xf0\xf8\x1c\
+\xdc\xa0\x05\xf5y)\x0c\x96V\xc1\xc4\xf5VbD\xe1\
+\xe5\xa2\x0d\xd8\xb2\xa1\x9e\xcd\xfb\xa1@\xe2}\x83@q\
+\xc3\xf9:\x12Iu\xe0|\xa6G\x1d6\x7f\xe0\xe8\xfc\
+c\xfb\xf7\x89\xdai+\xea\xd5\xcf\x87Q\x86\x0fK\xad\
+\x1b\xc6\x073t\xea\x18y\xa2\xcb\x83\xc0\xc2cF\xe7\
+wB\xf0\xe8\xa0A\xbd\xd3\x86\xe3\x0f(\xea\xdaP\xcb\
+gT'P\x1b\x94\xcfhC\x1d\x13\x12\xed3`\xa8\
+\x9er?I\xd8\xb5\xe1x\xe7\xfd\xbf\xdd\x7f\xba\xa0&\
+mZ\xe8\x852\xba\xe9\xe0=\x86h\xa7#-\xdaA\
+\xe1\x05+\xb3s\xef\xb6h\x05\x1d\x7f\xa6\xb3\xea\x050\
+6fR\xe9u\xa4S\x07\x0cv\x84 \xd2\x83\x7fY\
+HT\xea\xe9`\x1f\x08\x22\xadD\xa4\x1bZ\x84\x19\xf2\
+\xb5k\xa2\xc9L\xa0S_Q\x95\x96(X7\xa7E\
+~\xdd\xc2\x22\x14\xd4zN\xdc\xf6Q\xb6i&\xc1X\
+D\x18\xb5\xbe\x5c\x84\x0f\xe4\x155e\x89&\xfa>\x00\
+\xe0\xa3\x0e33yP,\xbd\x10\x06\xc9\x94\xdb\x83\x8f\
+\x94h6\xd7\xd5de\x83\xe8j\xdd\xbdB\xc6\xb5 \
+(\xa48Xa.\xe8s9\x00!\x84\x18\x11\xb9\xf4\
+\x0e\x8bv\xa0\x0ff\xcb\x89\xf8lA+bM\x8bf\
+\x7f\x8a\x1b\x04\x9d\x03W\x11f\x86\x94\x8e8\xfbk\x9f\
+r' \xc5g8\x01\x0a\x10\xbd\xe1\xe0!1Wg\
+\xcd\x19\x02P\xc78\x88\x00Xx\xae8H\xf59\x9d\
+I\x01p\xcb\xe8\x91\xa8\xd5\xde\xe9\xfd\x9d:\xf5\x12\xf7\
+\xcc\xe5\xfb\xaeV\xc0\x93H8\xc3\x02\xe0f\x91j\x1f\
+\xeb\x22VR\xa5/\x93\xab\xe75\x91$\x072\x00F\
+H\x988?\x8e\xb7h#\x17>\xb2$\xe6\x93\xabu\
+\xcb~m<[\x8e\xd9\x95\xf0>\x17:\x80JPK\
+y\x9c\x13\xcd\xe1R\xc3\xa5\x0b\x93\x88\x19T(\xa9\xf8\
+g\xa3>\x0c\xd3\x03\xc4\x9f\xcf\xb9o.\xe7\xf6\x0d\x9d\
+\x1f:\xc1$\x18{O\xecU\x80\xdb\x0b'.*\xeb\
+\x97D^\xaa\xfe\xe6\xed`\xfb#\x05\x8fi\xce\x9b\xea\
+\xfcp\x8d\x1co\x0f\x80&\xfb\x18\x22\x8d\x7f\xb0\x08\xe7\
+\x80\x5c(\xa6\x9b\xc3\x22\xe7\x07\xd7[\x84Yj1W\
+\x98Y-\x0c\x805\x94\xc8\xcd\xad\xfb\xf9\x11\x01/\x0f\
+\x86Yi[m&\xd6x\x7f\x8e\x07\x9ahS)g\
+OW\xe7\xe5\xb7\xcd\xd6\xce\xf7a\xa8\xbe\x12_\xf5\xeb\
+sk\x81\x8c\x1d0\xf1\xc2L\x89/vR\xaeE\x22\
+QI\xd6m)\x14\x9e,\xcfs\x15\x07\x93k\x8e\xfb\
+*\xd3\xe9\x97\x86\xcc\xe4\x9c\x93sM\xe6}>\x1dc\
+\x11\x0a\x16\x89A\xba\xb8\x9f\x18>yU\x16\x00\xd0\xc5\
+<E\xa5Fdr\x90\xea~K\x07\x1e\xc0\x01\xbbI\
+|\xd5]\x9c\x95}\x12\x06\x94(\xba\x9e\xa0j\xffp\
+\xb191\xfd\xba#\xbb\xa3\xba\xa3\x82\xd8\xdc\xf6\x9a\xe9\
+F\xe4\x0e\x06\x9c\xf69\x003\x989n\x9bJ\xc7M\
+\x00\x82\x8fV \xdeDA\xc9\xfdB\xf4r95l\
+v\xd2\xb9~\x8a\xa8\xc8\x12kCl2]d\xd1\x18\
+\x80\xdd\xaf-\x9a\xf8l\xf9\xfb?\x87BO\x22\x83~\
+\x1e\xf7\x00\xe4tO\x8e?\xb5\xd1\xa2\x22Z\x96\xf7\xd1\
+\xf4\x83\x1c\xe7\xb5\xfc\xaf[\xc3B\xa3\x91{J\x9cr\
+&\xbd\xbf/\xb6Nm\xd9\x97\xd7h\x85[\xb9\xbb?\
+\x0c\xcc\x1f+\x10OV\xa7\xfe\xd5 n\x8cF\x12\xfb\
+0\xe7\x86\x00E44|\xdfE\xc4\xb8\x0f\xc4\xd2\xc8\
+\x10\x83\x83Yq\xa7h\xa3j.-\x10\xf7\x87\x17`\
+\x5cF{f\xd2\xfb\xfaw\x10\x11\xd6\x88\x16\x1d\xe3n\
+\x11\x0b\xed[[6\xed\xa0\xd1\xb3\x16\xf9\xcfg[\x84\
+\xfd\xc3\xf2\x8b\xd3\x83\xab\xc6c\xf9\xb93\x1b\xc2er\
+\xe4\xfb\x9eV\xb2\x08\xe7\x11\xf6k\xa6\x0d4Wp#\
+\x10\xa5\x1c@\xdd\x19\xa7\x14,\xdf\xccqz\x18\x0d\xd4\
+\xa8\x823\xac`z1\xea\x06\xb0\xb1\xa3F\xa5\xf8\xef\
+>1\xff\xd8\x0f\x10\x05~\xba\x8e\xb4\xa4/\xa5c\xd3\
+\xb1\x01h@\xb4\x95|\x98\xe7\x81QG58\xbas\
+\xeau\xe9v\xb5\xc8\xff^:=a\xc4\x91<\x15\x91\
+\x5c\xf2\x10Fd\xd9\x97yN\xa1\xec\xc3\x5c%\x7f\xa2\
+\x10e_\xa5n\xa2\xd3\x8f\x9b\x0f\xfb\x02\x22\xd5t\x80\
+a\xe0p~\xc0\x0c`_\x81qI\x9e@g[\xc0\
+\x12#6\xe9V\x8b\xe0bC\xfe \xa6\x90\xefO\xb8\
+\xefp\x1d8\xf7\xa4\xe1\xe5\xcc*\xec\xebT\xb8\x0f~\
+l\x11\x18\x8a\x00\xf3\x00fZ7\xe3c-\x02\xa3\x88\
+?\xd3\xe9\xd6\xf5p\xb7\x22\xf2\x06\x5cz\x00\xa2\x18\x81\
+\x80\x81L\xa3\xa1\xef\x8a\xf4P\xbe\xfb\xa1\xae\xf0\x11\xcc\
+{\xaa8%\xc0\x9c\x17\xdc\xdc/\xf2\x11(\xf7\xe4S\
+l\xa0\x14\xec\x14\xf0\x14\xe6|=\xa2\x9f\x88_S'\
+\xf0\xfe\x01\x02`\x08\xf0~\xf9\x1c\xecC\x02\x0e\xbc\xce\
+\xa4\x9e\xe4\xfbi\xe8\xc2dP}\xc79\xe4u.\x0d\
+\x08\xd5\xa1\x9e\x0fq\xfe\xa0\xf5$F\xd4\xa4\x7f0:\
+\xff\xf3\x89\x12\x86(\x07\x058\x0b\x1a\x1b\xc0\x05Ki\
+\xeb*\xfa^\xf8\x22\xd2\xc7\x05\xe4\x821\x03jb\x5c\
+s\x85YD+\x9f\xe7\x0b#\x06\xf1\xcf\xf3\xa8 \x7f\
+S(\xcc\xfb\xa3\x09 6qF\xffM\xe1\x86Q\x98\
+\xf6\xc5\x19\xfa3;} \x80\xdf\xc3\x0d\xf9_\xa2\x80\
+\xbcR\xf0S\xd8\x0b \xc9iu\x15a\xdbT\xb3v\
+\x14\xd0tP\x85\xe80\x83\xef\x14&\x0ay\x98\x15\x00\
++\xfc|\xae77^_\xe7*\xf8\xcc\x88\x09X\x98\
+\xd8\xa2&\xa4\x14l\xdd>\x16a\xc1C\xb5\xf9\x8c\x80\
+\x08!\xad\xfe\xb9\xa1\xe6r?A8A\xc6@\xee\xf9\
+\x8f\xfb\x22\xbb\x09\xdf\xf0.\xae\xea\xe3\x14h\x83\x1b\x06\
+\xd7\xdb\xac\xb0\x8f0P\x00\x1c[7\xa22Z\x9bZ\
+\x87\xd9G8\xa0\x12!B\x83x\x0cbt\xbco\x0a\
+|l\xf5\xb0\xe5\x91/2>\xe7\xe9\x03\x16\xa5\xd3\xff\
+L\xe9\xf4\xab\xc3\xe9\xf6Hh\x19\xe8`wUt\xd9\
+\xf7u\x1f\xb0\x08\xb3\x7f\xd8a\xe9\xc1\x1b\x5ck\xd1f\
+\xc1\x99e\x86\x22Xf\xf6\x96j\x1b\xf7\xf85\x8b\xe6\
+\x0b\xcel)T?\x0ayf\xf3}f\x0f \x03\x95\
+\xdbe-\x82\xd8\x9a6\xec\xee\x19\x8bV\xe8\x8c\x7fm\
+\x11\x12\x136v(\xf1lh\xdcWF*4\xbbK\
+\x81\xe5\x88*@\x0c\xeb\x97\x0d\x17\xea\x1c\x89\x00\x1b \
+\x85)\xb6`\x02\x80\x5c\xcd\x1cm\x81\x03-\xdaA\xeb\
+\xeb\x14\x95ju\xac\xd0\xde`\x1f*\x89\xcf\xb3ZY\
+u\x00\x00 \x00IDAT2\xe1\xb9\xd7\xf3\xc5\xc1\
+\xd6\xfd\xd4\xa2Q\x81\xd3Fi\xc3\xb4QI0f\x8a\
+\x8c\x84\x89[4K\xbaFU\xa9\xf7B\x18Uv\x00\
+\x1b\x988\xb2\xffq \x85\x03\x8a\x19~\xd63\x89\x08\
+\x09\x0e\xfb\x09\x1a\x04\xccn\xe9\x00\xf1\x84\x04\xaa\x1b\x1d\
+\x03\xf6]\xc4\x0e\x01v\xb0\x9f\xe29\xa5\x93\x80\xbf\xed\
+\x86b\xf8Ht\xca\xef\xe7\xac\xd2\x80\xd1\xefw\xf10\
+\x0a9\x00B%&\xaeQ\xc0L\xb1\xc1}\x0f\x17\x0d\
+\x93\xb3\xcdM\xc3\x01Al[\xd1(\x10\xa5\xd6\xbcC\
+\xcc=\xc4U\xb2\xb1\x03\xe2\xf3 B{h!\x8dN\
+\xa4\xc7-\x82;\x81%\x1a_\xaa\xd4\xfe2\xda\xf4\x81\
+\xf1V\x06\xd0\xa6?U\xb1\xb9\xfc\xbb+5W\xb3\xe3\
+>;\xcc\xfde\xf6_\x05\x0c\xe2\xa1\xc5\xe5\xdc\x00\x9e\
+G*\xe3\xa8\x88\x90\x1e\x15\x0a\x1e\xe3\x05\xadS\x0a\x93\
+%\xac0\xc9\x9f\xe2H\xfb\x1c\xe9\xf0tX:\xbci\
+b\xa4/\xe78~bb8\x8bE\xa1\x9a\xe7\x08#\
+R\xd8[q\x9fxEKf\xbb\x1c\xb9P\x9d\x5c\xc9\
+\xa2m\xb7P[\x11I+\xfb\xfc\x81M\xfc\xd2\xed\x9c\
+\xf4\xfc\xa4\x9d,\x1a\xa5\xdf\xd5\xb4\x19\xd9\xb82\xc7\x15\
+E\xcb\xe1\xfa\x22.h}\x9a\xefj]/\x1aFH\
+x\x0e\x11;\xa4c!\xe6\x8f\xbbA\xa8\x03\x98\x0b\x91\
+\xc7\x07\x8f\x87\x8e\xea\xc5\x16\xf9\xfd\x7fD\x8c,\x89\xab\
+\xb9Z\xfd\xb9\xd5f\x92B\x02\xaa5\x1a\x17\x93\xa7X\
+\x04*\xfa\xe5\x95\xd2mn\xf2f\xef\x0a\xa3*\xbd`\
+\xd1\x80\xb3\xee63H\xcc_\xbf\x8b\xc4\xbd\x00\x90\x96\
+\xd4\xf3\xbf\xbcE\xbeO\x9b[\x84B\x5c\xf9\xc0h-\
+\x8b\xd2\x81/\x1d\xf6\xd2\x89\xb6\x99\xdb+-\xc2\xfd\xd2\
+\xa8\x9a\xcf\x80k\xf6\x7ft\x9eE\xfe\xbe\x15-Zb\
+\x8c\xbb\x0d\x94S\x9e\xbb\xd2\xc0\x1e\x97\xcfY\xc5\xa0\xba\
+\x0aXu\x1bY\xe4\xaf\xbf\xc2\x220\xf4(l\xc5\xa8\
+\xf4F\x02\x09\xe5,\x02\xd2\xcfR\x87S\x9d\xb8\xee|\
+\x8b\xfc\xfb\xee\xb6h\xe7\x8b\x8f\xf8i\xfd\xe4OS\xce\
+\xaf\xc2\x8cz8\x00\xda\x12\xa7M?\xb4\x08\xfb\x81:\
+\x80\xe9`\x8b\xfc:\x93E\x1bu)\xe5\xe1\xf74*\
+i\x0c\x9ek-\xday\xc6l,\xaa\xdc\x88\x09:\xf3\
+O\xb3\xbc\x05\xb0\xcf\x89\xb2\xf5}\xbb0\xf2Wx+\
+\x8f\x86\x06\x0b\x8d,\x0aG\x01\xba\xde1\xa4\x83\xaa\xf3\
+\xd3\x99\x144\x5c`\xd0\xe0\xe3\x8e\x1b\x02\xe7\x0e\xbe\xf2\
+\x88|\x01<\xcaN5\xe4\x99%\xaf\xb5\x81\x08\xeb\x10\
+\x8f\xdf=~w\x97\xf3\xb7n\xe6n\xe6R\xe8\x7f9\
+\xc7\x09\xf9\xf5\x1e\x8bf\x7f\xcc+#\x89\x0e\x00r\xce\
+X\xb9h#\x15'\xe5\xf8ZS\x87O\x9f\xca\xb1o\
+(@\xa0\x88S\xb8!6&M\x07\xf6cg|)\
+\x0fsq\xe0\x1d+\xa3\xc0\xed\xd1\xc8{\xbe\x9b\xf3\xa4\
+\xef\x96|\xe6[%\x9f\xe1>\xc0\xa4\x82\x19K\x81z\
+\x9e\x00#\x156<\x7f6X`\xa3\x05\x833\xea\xe8\
+\x17Z-\x8ch\xa2=\xc4\xf5\x87\x19\xd9\xbdl\x11\x1a\
+_\xec\xab\xb8\x02\xa1\xa9\xf0N\x8b\x02\xfc\xd7\x91A\x0a\
+D\xc4\xfc(\x9ch8\x91\xf7\x08\xa8\xf1\x99m\xcem\
+\xf2#1\x07\x9c1\x00\x85[\x8d\x80\xa2\x91\xf1T\xf8\
+\xbe\x9e\xdb\x99S\xbf\xd1\x00\x02\xa8\x91\xa6H_|\xd1\
+\x19\xbc+Tm\x86\xc1\x8d\x16\xa1!\xc3\xe7b}\x92\
+\x8702M\x1d\x01\xd3\x83\xfb\xb8\x95Eh\xcc\xd2h\
+T\xc1\xeey\x15b\x95b\xee\xb8\x0b\xc6\x0fK\xb4\xfa\
+\x81\xf7K\xfe\x02\xc3\x82\x06\x09u\x1a\xda\x5c\x00$\x14\
+\xd6t\xd8\xe9\xbc\xd3`yI\x0dO\xea\x22\x1a\xcf\xac\
+3\xf6=\x18\x10\x884\x92?\xf1s\x01b8\xc7\xf8\
+=\xfc;\x00\x0c\x1a\x06\x12e\xf7\xcf\x0f\xc0\xc3}F\
+\xb3\x84\xbf\x07\x10A\x03\x82F\x11\xa3\x98\xd4\x97\x00\x13\
+0\xab\x1f\xb1\x08y8_\xc7\xfd$\x7f\xa4!M\xbe\
+\x0d\xb0\xa3F\xad\xdbK\xaa\x0e\x9d,\xdf\xb6d\xa0\xda\
+\xc7Bz>\xfd\x99N\xfc\x02\xe1\xeb\xf8s\x9c\x01\x9c\
+Q\x89\xf8\xb0m \xaf\xa34\x0dDU\x8d\x0b\x0e\x80\
+\xa1?kO\xa1\x8b\xe6\x00#\x04\xfdB\x9f\xf7\xc7\x05\
+\xe1\x95\x85\x80]\x05\x8c\x03F\x13(\xf8\xfb\x0c\x01\xc4\
+\xdaH\xcc\x99%\xe7\xf7RX\xf6G\x11x\xbf0\x1c\
+V\xaf\x1d5\x9f\xbd\xe7`f\xf6\x11\xea2\xd4z\xa9\
+\xf4;Ur=\x8b\xe0\x0f\xcd\xc6\x8bo8j\xea\x8c\
+\x22\xc0\x808P\x226\xb2\xa1\xf2\xd9\x16T\xd8\xe9\x04\
+\xbe_?\x97\x07\xfbS\x95\xf2\xea\x1dI\xa8t;\xab\
+\xe3\xc3\xf5\x14R\xeb\x1d\x9fu\xf5y6\x91\xe6\xc3\x07\
+\xe4O\xba\x81\xec%\x0f\xae\xaa\xa2\xbe\x01\xf1}<\xb8\
+\x1b\xe8\xba\xbcO3\xd0\x96x^Y\x12\x9a\xf2\x8a\xdd\
+\x8a\xcf\xd2\x9eg\x11|\xe2\xf5\x00`\xdf\xe2\x1d{\xee\
+\x0b\x9d^Q\xee\x07\xa7Z4D\x0eJ\xb2\x8b\xa7\xa9\
+c\xe5\xb6aB*\x8b]\xd3o\x82X\x22\xb3\xf9\xf2\
+\x8b\xa5\xd3Na\xed\x05\x0e\x94Z\xcd\xbe\xd1I\xc6f\
+ot\xbbE\x10\x85D\xcc\x06\xa6\x00\xb3Y \xa1\x1c\
+\x5c\x9a\xdd\xc7\x9f\x97B\xdeg\x91\xe9\xa8i\x1d;\x90\
+B\xa27\xbdE[o\xe3\xe5-ZG\xa9;\xc9\x22\
+\xd8>\xc9f\xc6\x11cT\x7f\xf1A&\x01\xa5P\xa3\
+\x93\x82\xea\xa8\x0a\xb4\x5ch\xe6\x08\x89\x91\x10w\x17\x87\
+c\xe3\xe3\x00\x100\x01\x80\xe2\xc0\x13\xeb\x1e\x15`\xb9\
+k8\xb3\x87\x02\x9aN3\xcc\x1d\x00\x00\x0a_lj\
+$\xdeD'\xbd\xa8!\xaf\x1ff\xe9\xf4s\xb0\xa5\xcb\
+\x87d\xfd9\xb8<@%\xc7\xbf\x1c\xffs\xb4R\x04\
+\xf89\xd5Ybk\x9e\x00\xd0\x81f?b\xa3g\xff\
+D\xedUT<\xff~\xae\x136\x9c0\xa3\x00J\xd4\
+Aw\xd1P\xdc\x22P\x1f&q\x9eb2i\xad\xc3\
+\x81=[\xfa\x5c:$\x1dR\xeek\x05t~\x9fW\
+U\x14+B\x8dZ\x1dY\x07l\xd8\xe7H\x98\x95\xb8\
+\xf8\x08\x80\xa8j\x5c'\x7fN\x00\xae\xf6\xd6H\x14j\
+\xea\x00E\x00A\xb2\xc7\xf3N\x89\xd6iw\x9dEX\
+\xb7\xcc\xb8\x9b\x8d\xda\xb3\xed:\xe5\xf2\xe2\x1a+0\xc6\
+\x8f\xdaP@x\xfe\xae\xd4h\x13\xf7\xf3\xd9\xc13\xe5\
+>\xae=\xb1V\x01\x84g3\xe3\xab\xc6\xd0\x01h\xc5\
+m\xa2;\xba\xfb\xbcuvs\x12S\xed\xeeD\x9dO\
+\xe7[\xe4|\xeb7\x16\xe1z\xe1\x9a\xa2\x0e\x19@\xe3\
+\xe0\x17\x16AT\xcef\xc9Wk3\xfc\xc37\xe5\x98\
+\xafQ\x88a\xb0t\x7f\xb7\xd0\xfe\xf0B\xeb|\x02|\
+\x03@\x96\x19\xe7\xdb\xc3\xfa6\xb8\xe6p1/\xf6\x95\
+\xcd\xda_\x05\xcc\xde\xd4\xf6C\x9b\x98/\xfb/\xe2\x5c\
+\x14\xfeZ7N\xe1U\xe2\x94\x9f\xda\xf29\x06Wi\
+\xa4\x8b\xce6#;M\x9d\xb8\x02\x1d0\x80\xf6\xae\x0c\
+\x90t_\xba?\xdd_\xc4\xe1JA\xe8\x1d\xd5\x1f\x88\
+\x12\xac\x19d\xcfC\xf4<v/t\xcf\x17\x15}\xb4\
+\x1f\xce\xb2\xc8?g\x1e\x8b r\xa7\xc2\xdf;Lo\
+\xaa\xfb\x86\xbb\x0d\xbf<|i\x98\x0b\xa24\xa7E\xd0\
+\x12\xd1(\x9b\xfbh\xd3\xe1\x92\x8a\xf6\xe0\x1a\x01\xbe\xf8\
+\x90+Q\x1c\x1dk\x11:r\x00\xf0\x88\xef\xa9\xa0@\
+;\x06\xe6\x97\xbb\xc1\x1ch\x11\x98\x0b\xa7\xc8\x8f~\xea\
+\xe0\xfc\xa2}\xc0H\x1d\xcf!\xd4\x7f\x1a\x02$\xda\xa6\
+\xb2ob\x89\xcc\xd2k\x1f\xc6F\x16fL\xf7G\x8b\
+F\xa9\x1e/\xa9\xd1\x06\x8d\xde\xe52|\x87n\x876\
+\x92R\xd6\xdds\xe1>\xe9}\xa4_Y\xa8\xf3\xb4\x95\
+\x80'\xdb\x7fG9\xba&\xfeX\xe0\xa7\xe3\x03\xd5\xde\
+\xfa\xaf'7q\xb6n\x05\x8b\xd6\x91\x87\x094\xde \
+\xc7\x86\x8d\x89W\xe0\xa7U[\xbeY\xce\xbfA\x9b\xed\
+w1=\x18z\xf8\xcdK\x0b\x03\x0a\xb2S\xccy\x0e\
+\x11EF\x04\x1bF\x22\x85\x99\x18\x95N\xbd\xd6\xa8\x99\
+\x8f2!f\xa8\x91\x12\x5cC\xba9,$\x8a\xf8\x8d\
+\xfcz@\x8eW\x0bS1\x87\x98&\xcf\xb4\x11>D\
+W}\xdf\xd7\xb9F\x07\xb8\x14\xe66:y\xa2E\x10\
+\x87\x83\xb9\xab\xf5\xe0b\x83\xd8)\xe7r\xdb\x987\xc5\
+\xd5\xe5\xa3\xa1c\x0b\xa3\xe7\xe79\xae\x0ey6\x05$\
+\x14p\x01\xbd\x83\xd3\xeb(\xe4xO\xf3\x9f)\xf5@\
+\x15\xe9Ft\x0d\xbb\xbeOiT\x02\xa6\xd3\x9f-\x9a\
+\x18-n4^P!z\xf9'\x01B*\xa4m\x15\
+\xda:$\xaf\x81aXFl6j\x0cI\x9fq'\
+\x8f\xe0\xfd\xdf/\x00\x1d\xdbV:\xef0\x018\x8fy\
+~\xf8~\x0aL\x1a\x01\x9cS\xeck\x9c\x93\xe4+\xca\
+\x03\x5c+\x0d\x0d-\xb4|\xd0\x94Y\xcd\x22P\xf5\xc5\
+<\xf4F\xaa\xb4k\xfc}\x22\xe2\xa7s\xcf5O\x94\
+G\x02@\xc3\xa0\xf2z\xa3/z\x0e\xb0E\xa1\xaeQ\
+G\x1f\x09\xd2s\xe2Z\x14\xe43\xb8\x070j\xc0\xa8\
+$L\x18\xdc\x06\x10E\x85\x89\x00\x13\x0c\xc6\x10\xff\xce\
+\xcc?b\xcf\x8c\x8e0\x82F#\x01\xa6$y#\x1b\
+7\xcc\x10\xea6\x80\x05\x98\xd14@\xfa.\x02\xfc^\
+FI\xee\xb6\x08\x0dJD0\x19e\x10#\xc8\x19!\
+0\xa0\xc9\xe3i\xcc\x00`\xd0\x90\x14s\xc8\xdd\x0f\xfa\
+\xael\xbc\x0f\xad#\xea=\x07\x02h\x0c\x91\xd7\xf2\xb9\
+\xc9\xb7\x00<\x18\xd1E\x14V\xf5]\xd1b\xf9\x9dm\
+\x8f\xa8\x1db\x87\x17)\xf8o\xd4\xe9\xd6l_\xd9F\
+\x96\x10\xc2\x1c\x0a_\xb7\x03\xb4\xc7\xfc\xbf=q\x84Q\
+\xb0\x01df\x15\x8a\x05L\x82\xc84X$\x00\x0d\xf8\
+\x11\x1b\x02?\x7f\xfb\xfde\x19F\x86\x00\x80\x01H\x15\
+H+\x9d\x7f\x0a}\x0a\x01^\xf9w\x12\x89>\x95\x9f\
+\x9f\x1f\xafCd\x06@e]A\xd4e\x12`\x0a\x00\
+:\x0c\x14\xfct\xf4\xb1o\x01\x10@\x5c\x10\xd1\xbf\x15\
+\x05X\xd0Q\xc1e\x00\xca\x1b\x05\x97\xd4X\x11)r\
+\x80\x00\xd1\x94M\x94(\xb1Pg\x7f\xbd\xc8\x85\x17\x22\
+{T\x0a\xf2`s\x15d \x97 K\xa8I\xf2@\
+@\xd9\xc1\x1f{]\xcd\x88\xa1\x86\xcd\xbf\xc3\x1c\xb8N\
+\x88\xef.\xe3]\xc7\xbb6D\x9e\xcf\xed\x1b#3M\
+z\xbf\xcel`\xc6\x0c\x91\x9dc\xabz\xb9\x1f\xe8\xcc\
+$#\x96Ha%\x11F?\xa0\xe5\x02\xe0\xaa\xbd$\
+\xdcP\xde\xd4\xe1tf\x866\xcc\xf4\x17\x8b0c\xf6\
+\xe5*\x22\xe83\x85\xa2^\x8f\xd6\xb3h\xc0S\xda\xc5\
+\x22\x88\x0e\xc9\xb7\xdc\x13v\x89\x9c\xf9\xc1,\x11\x1d\x0e\
+D\xee\x93S\x5c\xe5o\xecTt\xec\x9dH\xe8QW\
+\xe7\xba\xd2a\x14U\xaf;\xcb\xa2\x1d8\x1c\xac\xdd\xf5\
+\x16A\xfc\x11qB+|f\x0b\xd4<u\xb6\xdc\xaf\
+\xd8\xa8\x80\xdf|\x03 \x8c\xf5\xae\x99iT\x94\xa1\x96\
+\xb9\xe8\x9f\x12i\x9e\x0b\xdc.\x5cu\x9a\x0dY\xd7\x8f\
+\x99`\xb7\x85Rb\xc1\xe8\x80kCp\x80\xb0\xee\xe9\
+|\xc04\x10\xd2\xee\x22u\x1c\xec\x885\xfe\xd2\xa2\xfd\
+\xben\xd3\xee\xbd\x9d\xcdf?\xa9\x99FF\x1c\xe8\x88\
+\x82\x103\xc3\x0dEZ\x88rZ\xc1\x22\xff\xdc{-\
+\xda\x88\x8a\xcfn1\xf2\x80\x18\x8d\xde\xbfw\xc2\xf0\xed\
+\xb5N\xb0\x8d\x84|\xc6\x22\x00\x11\x02\x9e\xb0\xb1\xf4\xce\
+\xba\x0aN\xa8\xa5\x8cr\x00du?\xb7h\xebdp\
+\xaeD\x03\xaf\xaf\x94\xc4\xc1De6\x0c^\xac#*\
+\x83\xc7\x8cT\xda\x12\x1f(\xc1\xbe\xaf\xcb\x17\xbe\x88\x0f\
+\x9e\x1b\xdc:H\x8c\xd8\xbf\x10\x0b\xd2>\xe1\x85\xa6u\
+\x9e\x0e\x0f*\xe5vJ\xcc\x1c:\xc2\xd6\x91=\xb9u\
+t\xba\xc7,\xda\xbeGG\x96u\xd1\xfd\xc4\x22t\xbc\
+(\x88I\xb4\xb6\x1coQ\xec\x12\xd7\x1f\xbfk\xbc~\
+Q\xd1\xdd\xdfTtK\x1a\xf4S\xcd\xba\xaf\xde:\xc8\
+|\x1f\x0c\x08\x00\x8b\xe1G\x87;\x0fw\x09\xefGZ\
+\x03t\xfa\x87KY\x14`%GK\xec\xbcS\xae\x8e\
+h\x11G\x1b\x86s\x06Q]\xec\xb3d\xcf\x98>\x9c\
+c\xc7\x06T\x0e\x17\xb2\xc8\xbf\xff\x879~\xd4fO\
+\xbb\xd9-\xdaL\xbbSW\xd1f\xb0\x82\xeaX\x8d\xd8\
+\xdc\x1e\xdc\x00\x8cB\xb8\xae\x00\x5c|\xa2\x03\xb3\xca\x99\
+n\x02v\xa0\xb0BMt\xed\x89I\x01\x85&\xea\xb8\
+[(P\xe9\x1c\xbeb\x91\xdf\xe7\x0f,JbX]\
+E\xf4<\x0df\x1dL\x19Li\xeb\xde\x0b\xcby-\
+4j\xb1qIx\x96.\x1a\x12\x8cR\xa9\xe3\x9ew\
+\xfb\xea>\xf3\x99:3\xcf\xb9\xe6@/\xff)QM\
+\x7f\xb2\xc8\xd7\xf3\x06\x8b\xc0\xbc\xd1\xfe\xce\xb9c\x13\xd4\
+6C=\xf9\xe7\xc9\x87'\x1f.\xcfq\x01\xee\x1dH\
+\x9fR\x13\xfc\xee\x8b\xdd\x97\xba\x5c\x10w_\xb7\x08\xa3\
+EZ\x07\xa5\xb0\xfay\xebl\x96\xe7+t\xb8\x00r\
+\xe9\xac\xfb\x8c-\x8c\xa7\xab\x958\x93\xe8\xe2\xab\x0dS\
+\x87\x04\x13\xd1+\x18\x06?\x12\xe3\x83\x82\x1af\x9c\x80\
+\xe0\xb4\x91E~\xdfwZ\x84Q4\xdcc\xb0\xfb\xd3\
+h@\xd1\xae\x99N\xe7\xc2\x06\xf9\xfa]b\xd1\x98m\
+\x05\x98<H\xda5\xeb(\xcf\xd9F\x00\xf6\xe6a\xfd\
+\x19\xac\xffiu\x12\x0f\x16\xa0\xf4hs\xb5q\xf10\
+5\x06\x0a\xdc|]\xd1t\xc8\x11\x5c\x82L\x8d\xfes\
+\xb2\x95\xdb\xa9\xd95\x96\xc2y\xfb0\xe2\xa9s\xcc\xf7\
+_\x5c\x04\xc4dr \x80\xc4\x1aW\x011g|\xa6\
+\x9f\x11\x01\xc4b\xc9\x7f\xb4/\x8e/\xab\x9d\xcf\xc2P\
+0&\xca\xda\x169_x\xc0B\xaa\xdd\xf9\x5c\xee\xbe\
+c\xd1\xfe\xddg\xab\xd9/U\x90\xa5\xbd-\x04\x0c\xbf\
+\xad\x89\xf1\x15{\xd0\xaf\x85\xc2I\x8d\xa8\xf1\x8c\x16!\
+\xef\xe5\x5c\xd69WN\xf7\x0d\xc5\xdc[.h}\x00\
+HQ\x88\x92\xf7B\x81\xde\xc5\x22\x14\x1c\xe4\xcf\xf8\xb0\
+[\x961\x08\xe7\x03\x1dh1\xe4(\x5c\xd0\xc6Iw\
+\xa7?\xa4?\x04\xd7\xa4\x1f\x8c\xa7\x8e\xa7\x16;\xdb\x1c\
+\xf9\xcb\x17W\xa7\xff\x93\xd5\xe5\x80\xfb3\xde\xcb\xa2\x15\
+\xc0.F\xa8\xd1:\xb7Oc\xd4\x8e\xce4\x94r\xf2\
+\x05\xf2o\xf2k:\xcaP\xaf\x01:\x19\xb9C\x0c\x98\
+\xbaCu\x06\xcc\x1b/\xf4\xa8k(d\x05(\x00(\
+9\x00\x05\x10*\xad\x1eol1b\xa0\x02\xdb\xb5h\
+p\xc7\xa2\xd1\xb0\x94E\x98\x9dg\xfdh\x7fp\xcd\x0a\
+\x1a\x0e\xdc\x17\xde\x17LB\x01\xa5.\x86\xa8\x06\x90\x7f\
+\x1e\x80\x1c\x98>h(lg\x11\xecw\xc9\xf3\xe8\xe8\
+K\xa4\x94\xd1N\x17-\xa5 '\xcf\x07\x18E;\x01\
+1ED\xb5\x1fV\xc1M\x01O\x01L]\xcb\xe8 \
+\xf9%\x852\x1d}\x9e\x0f\x1al06\x00t\xa8'\
+\x00v\xfav\x82\x5c7\x1a\xb0\xdc\x7f\x01\x00\xacg\x0a\
+w\xd7V\x00Hd\xa4\x02\x86'\x9f\x03\x86\x01\x8d\x1a\
+\x80\xa3y-\x02`\xd4/\xf8\x01\xa8\x00 \x00\x98y\
+\x1e[\x9dZ\xb4H&K\xe1\xbf\x98\x12\xc7%\xc2\x01\
+\x1fg\xef\x17\x0c\x94\x7f\x15\xe4PD\xbc\xa3\xceh\x00\
+\xd4~\x0aj\x12\x0d\x0a\xb1\x19\x8a<\x5cChx\xc5\
+\xde\x8f\x03\x8c\xc2{\xe1:c\xea\x88\xeb\xd2\xf5\x80\x9f\
+\xc6\x9e\xaf_\xe8\xd3\xf9G\x95\x1d\xe4\xb3_\xf8\x03\x08\
+\x90\x10\xe2\xfb\xcdF\xdb\x1f\x81\xe8\x03\x00P\xef\xb1A\
+\x81\xfa\x0c\xd5\x9fWf\xfd\x01\x06Hl\xf1AW\xa7\
+\xca\xbf\x9f\xeb\xbaB\xaf\xe3\x8f\xf8\x15\x00\x82\x00\x06\x17\
+c\x82\xb1\xb0y\xaf\xc3\xff\xa2\xa8\xfa\x88\xb2\xa1F\x8b\
+\x9d\x13*\xa2 \xb4\xcc\x08k\x03\x06\xa8\xf1\xd9\xd4Y\
+u\xfd8@)\xe8@\xa6\xd6\xd3\xfb\xdaP\xaa\xbd\x8c\
+@\x90\x80\x90 \xaa\xa39\xb8B\xb3\x89$* \xab\
+P\xa0\xd4\x91\x18/d\x11T\xe1\xe9\xec\x89\x1a\xe8\x1d\
+e!\x9e\xe6fl~\xc6t\x0cI@\x9db.F\
+AN\xfc\xd7/\x89?\xb38\x9aI\xf6\x82_\x89\xa4\
+\xab.3\xfb)\x91\xc5\xee~\x8b`\xfb\x86\x0d\x1b\x14\
+,!{i;\x8bF\xc5A\x5c\xcegy\xd9\xb8\xf1\
+e\xd6\x83\xea\xfe\xe8t\x9eH0@^\xf9\xbdt\xc4\
+D\xbd\xc2\x87\xdd\xa9\x9bb\x1e\x8c\x87\x16\xcd\x8e\xaf\xfb\
+\x93E\xbb\xbf^\xf8J\xc4\x91\x91\x00\xa7l\xab\xf0u\
+\xca!~\xc9\xd8\x91h\x1d@u\xf2\xd9a\xcd\x8a\xfa\
+A\xa7\x03\xc6m\x19Y\x9f\x8c\xe6\xb0\x0e@\xe0U\x98\
+\xb8\x9a.\x89\xa5\x18\x02\xd8 \xbaz;\x14+\xbe\x0f\
+\xd5}m\x8c\xce\x90\x81R\x87\xa8\x22\x08,\xc0\x95\x0e\
+\xfe\x9c\x86\x94\xef\xb7~[\xe9\xb8I\x85\xdd\xd5\xa3\x99\
+Q\xd6\xbarQ1\xb42z\x14\xadB\xb1\xbe> \
+\xf4\xd8|B\x01d\xb6\x9f\xefct@\x05u\xa1t\
+~* \xbc'V_\xf8\xf1\xfc5\x81\x05pq\xa6\
+\x8a\xdc\x03<\xa1\x831\x80\xe8&\xef[\xb6|hW\
+\x0cnVazV\x15G\x1b\x5cX\xc5\x87J\x07o\
+T\xa8\xcb\xf7\x1au\xb9\x00\x7f;\x94\x02\xfe\xf0B\xe5\
+\x87\xa1\xa1\xd9K\xd6\x0f\xea\xe9\x8c\x08\xb9(\x22>\xce\
+6\xf3\xfc@\xbb\xce\xaeI \x8a\xb4\x17\x86\xd2\x90(\
+3\xec\xf9@\xb4\xc9\xea\xee\xc8\xb6\x0f2\x13\x9b\xbea\
+\x91\xff\xfdP\x8bp]\x19\xc12J\xff\x91aFw\
+\x85\xf1\xf2\xc5\xe6\xaa\x0a\xc8z\xa1\xe9\xc0'\xfb\xbf\xc4\
+\xa1\x06\xd7X\x04\xc4^\x85\x08\xfbg\xe9\xac\xef\xdd\x0a\
+;\x00\x19O\xe4\x94\x880\x9b\xc7\xec\x9e\xbb7`\xff\
+C\x82n\x09\xf5d\xb0!\xbc\xd4\xa2\xa9E\x17@3\
+?\x0f\xdd?r<\xd3:\xe1\xc5\x0e\xec\xaf*x\xac\
+\xc0;6\xc7qb|\x9d\x11\x80\x1c\x83U\xb6\x14\xc3\
+\xe0\xf6p\x0eH\x03\x01\x9fv_73Y\x14\x00\xb5\
+v\xa6\x1f\xa8\xeb'\x97\xe1/\x0e^\x0c\xa2\x9c\x02\x9e\
+\x00\x06}\x1dB\xfd\xdd'\xedk\x14\xe5\xd1\xfd\x16\xe1\
+\x9c\x14p\x93.\xb6h\xae\x14\xe9Y\x8b\xfcza\xba\
+ ] \x9b\xc43\xca\xf3\x7fG\xd1\x0a\xc1\xcd`\x1b\
+\xad/\x9e;[/\xf7\xb7\x11\x04\xd7\xa0\xe0\x5c\x91Z\
+\xfa\xc4\xdfjB\xec\xe7+\x80\x9f\x80\x88\xe1\x99\x16\xf9\
+\xf5!\x8b\xd6\xd9\xc2\xad\xa2[\xcb\x22\x7f\x9e;,\xc2\
+\xe8\x83\x00G\xf6\x0f\xf6\x0d\xef\xe8\xa1\x09\x84v\x8a\x80\
+\xa72\xa3=gHH\x05Xw\x07Y\x94\xc2\xb8\x02\
+R\xec'\x00-$\xfa\xcc\x86r\x9f\xc9\x83h\xc4\xd0\
+\x81\xa2\xa3\x0d\xc0(`\xb1\xfb\xbeE~\xdd\xac{_\
+\x97\xf7\xf7\xd1\x9f,\xda\xfbH'X4[\xba\x22^\
+\xb7|\xd18\xd8\xbet\xca\xf9\x1c\x1aq+\xd4\xf5k\
+\x1b`\x07\xf0W\xce\xcd\x05\x9b\xf6E\x01\xb6\x1fi\x9d\
+\xcf\xb4\xbdE\xfe\xbe\xefU\x91O\xb7}\x83\xe1\x04 \
+oZ\x00s\x86\x0e\xe6a\x16\xe1\xfd\xa9\xa0\x84B\xee\
+v\xb7$\xf4$\xce\x5co\xce\x05\xf29\x01\x10\xd8&\
+c\xd3\xdb\xbd\xd9\xa20Q^0&J\xbe^9\x8a\
+[\xd0Y\xa3\x5c\xe0\x8fN\xb4\x90\x08\xddJ\x1a\x05Y\
+)\x00\x97\xe4\x8d\xe4i\xca\xaf\x5c\x8c\x93\xff`\x8c\x0a\
+\x88\xc0>\xcf\x19-\xd8\xb4\x8a\xe1\xe46\xaa\x06\x18]\
+\xdd4\x1f|\xf4\xc1\xb2\xc5\x15\xc2\x8c\xfdGzL\xd2\
+\xa9\xb5\x10\xcf{\x85E\x9bIF\x13\x05W&\xc4\xe2\
+\xc4\x08\x19\xcf]\x1b\x14>\x0a#\xf7\x84|\xd5v\x1c\
+\xef\xd8\xf6\xdf4W\x9a;\xe5\xeb\x9d\xbe`\x11\xb4\x10\
+\x94\x17\xe52\xf8\x89\xf1\x13\x05(\xf9\xf6\xf8\xdb\xa5\x10\
+*@\xbaIZ\x17Qk(\xe5h?\x09\xb0r\x06\
+*\xee=\x88\xc9\x01\xf0 \xbe\x06\xa0\xcb\x08\x1c6\x8c\
+\x8c\xae\xa2\xbd\xc3\xc8\x18\x8d\x0e\x89\xd6:\xc5\x9a<\x5c\
+\x0d\x07\xec }\x06\x9c\x86\x86FP\xbdP\xa3\xfe\xa1\
+N\xa0\x81G\xde\xcaH\x03ZF\x00\x00\x9cK\xbc?\
+(\xe10\x80\x98\xb9g\x84U\xa2\x92^0\xf65\xd0\
+\x10\x15\xe7\xfd\xb2N\xf8\xf7\xedK\xb8\x88\xa3\x17\xe4\xd4\
+%\x88\xfb\xe99\xf4\x82\x99\x02\x97\xf7\x8dk\x10\xf9\x0d\
+\x0d$>_O\xbc\x0eqd\x1f\x89\xe0\xfd?+f\
+1\xf9\x22\x85>\xf5\x0cb\x9a\xff\xb6\x08\x0cJ\xf2J\
+\xb4\xa4\x00\xf6\x01@\xd0\xbabd\x03\x91\xe9\xad,B\
+\x1eJ\xc3\x92\xcf\xc3\xfa\xc0\xa6Q\x1aY\xbe\xbe\xc8\xc7\
+a>\x00\x0c12\x8b\xda\xbfD\x94m\xb5\xdbz\xf7\
+|\x96:\x97z\x89\xebI\x83\x03@\x8b\x86\x0b\xf7\x11\
+QI1\x1b&_G\xf1_\xb0\xf7\xba@x\x95\x0b\
+\x80\xdb\xf3\xf1F)\xc8I\xdc)\xb4)\xac\xf9y\x9a\
+\x1d|\xdd\xecz\x9c\xc5g\x84\x80Wi\x09\x94\x0e\xea\
+\xec:\x80\x96\x0a\x89\x17@\xc3\x12e:\xf3\xf5\xa2|\
+\xf3\xbd\xc1\xec>\x9d}\x0a\x0b:\xdf}\x91\x07\x16\x1c\
+\x94\x1d\x1edf\x94\xfbj\xd5\xab\xa9\xf0\xc5\xa6d%\
+uF@\xae@\xa2\xd8\xb8A\x16)\xdc\xdfb\x11\x0e\
+\x146~\x0aw^\xb9\xdeh\x07Pp1\x83C\xe1\
+\x02\x80\x00RK\xa7\x86\x05\xc3\x83\xc8\x9f\xe9,\xa93\
+\xec*\xb5\x9a]\xf1\x8e!\x89\xac>\xc7\xf8\xe6J\xcd\
+vd\x14\xa4\x9b\xf7\xb1\x84\xae\xd7\xda\x02\x16D\xa9\xf5\
+\x82\xef\xccJ\xc9t\xf1\x19D\xef\x0e\xd1\x8c\xde\x85\xb5\
+\xa3\xe9\xfe\xf6$\x22\x00Jl\x18\x9a\x15\xc6\x06\xd0}\
+f\xd5\x19A\xdd\x9a\xc4\x18\xea\x9c\x8fz\xbcd\x11\x0a\
+\x01\xa9\xaa\xba\xdd\x15n\x03$\xd0\x8fZ\x04\xb1\x99\xd2\
+\xdak\xe28t\xf6\xa1\xc2y\xe1\xf1+\x8b\xb0\xb1\xb0\
+\xd1#\xd2\x88(\xa3(\xff\xc5\xb7z\x960s\x8d\xa8\
+\x13\x8c\x11\xec\x1b9\x80\xe9hc;\x85\xed\xa5\xd4\xa2\
+\xdd\xd6\x8e\xfbOa\x0b\x15\x16W\x07\x12\x06%\x10N\
+\xc9&\x11\xc5vG\x1b\xbf\xbb<`\xf7\x02\x15\x9fY\
+b\x89\xbfq\xd0\xf9z\xe5\xf7j\x7f`6r\xf0E\
+\x8b\xf0|\xa2)\x00\xd5\x9b\xce8\x9dGF\x1e\x00\xe2\
+4\xb3\xe93\x7f0?\x10/\x22\xb1\xe1\xf9\x142\xed\
+\x94,idx'\x9f\x03\x0b\xc4\x18\x84\x9a\xd91F\
+ZH8\xb4\xbf\xd1i\x80z\xec\xd4wS\xb3\xbe%\
+\xd8\xd1\xc1\x10\x02\xf0\xc4~\x8eYU=_\xa6]_\
+\xd4\xeb\xd5\x11p\xbb&1\x1e\xdc\xeeO\x85\xce\xf8\x14\
+%|\xd7V\x11+\x9f\xbd\x04\xd8\x83i\xf4\x7f*X\
+)\xb4\xb1\xb1\x83\xd2\x0c\xe2\x8ek\xc2\xa3\x15HK\x1f\
+O\xbb\xa7\xdd\x0b\xd0T\x00\xbaB\x0d\xff~I\xa8\x0a\
+3\xa5\xecZ\xcb\x85\xf5~ay\xa2]L\x0e\xea*\
+b\x7f\xbe\xee5\xaaPf\xba_j\x9d\xc0\xc1\x8c\x16\
+m\xfdx\x81\x03\x80(\xb5\xfc\xd2\xf1\xfc\xbb\x80\xad_\
+\xaaC\xb9[\x98\xb5\xd6\xfa\xc5\x06\xb3\x94w\x7f\xd3\xbe\
+\xb5vc\xfap`3j\xc3\x0c4\x1dv\xdf\xef\xa0\
+\xd6\x8a\x81\xc1(\x00#_\xdd\xe6\x16\xf9\xfb\xb7\x10\xc3\
+\x80\x02\x84\x91\x08\x98FrAa\xa6\xd5g\xb6\xe9|\
+\xc0\xa4\xbb\xb8\xdar\xf9z\xb34\xe9\xf1\x96\xb0\xa5\x0f\
+Z\x84\x8e\xd4\xc3\xa5G\xe2\x0c\x80\xd29\xb87\xb8M\
+\x18\x80y\x8c\xa8\xbf\x9fh\x00\x03\xf6\x8ber\xfb\x88\
+\xe0W\xbeJ\xb5\xc5s\x7ft\xc4m/\xae\x9dOw\
+;\xd1\xba\xa1\xb0\x06\xe0\x01\x10\xf5\xef\x170\xe8\xcf1\
+\xe7\x1a\x00.\x80\x95\x00\xc2\xf4{\x8b\xfc\xbae\xda\x22\
+mQ\x98 U\x15\x9cQ\x84\x17\xcb4hs5\xa0\
+\xc0\x7fj\xf0\xa4\x89\x0bN\x1c)\x7fw4\x11\xa6T\
+f\xc1\xf0\xfc\xe1\xd4a~>\xd3\xeci\xb64[\x13\
+\x99C|m\xf8\x8f\xe1\xd3\xc3\xbcn\xd3\xf1\x16\xf9\xcf\
+\x8bZ\xe4\xd7\xfb,\x82x\x97\x98C\xdd\xb3\x16y\x9b\
+]\xde\xa2\x9c\xa3\x15\xf0\xd4\xf9\x98\x1e\xb1\xc8\xaf\xe7Z\
+\x04[;\x00\x80IQ}\xa5u\xe4\x9d\xa3?Z\xb4\
+\x99r\xdf'\xb5?\x8d\xffV\xd7)\x1d\xec\xf4o\x8b\
+\xfc\xfd]u\x0f\xf0\xfb\xf8+\x8b\xa0Z/\x06\x193\
+\xc4\xeeB3\x83E\x13\x9d3\x97mS\xf5\x1e/b\
+\xd1\x80\x04o`\xa0zn?g\xc5\xc0H\xb2\xd1\xb5\
+cD}\xcf\xe7\xc6\xe8\xd0\x1c\x9f\x0b\xa3t\xd6\xf9\xb6\
+\x04\xf7C%\x5c\x0b\x22-\x98c\x01\xb9\xeb\x9c\xde\xa8\
+\xbb\x9c\xd3\xe9-\x16\x81\xea\x8d]\xa1\xa9\x94\xaf\xa3\xe7\
+\xe3\xc9\xb0\xae\x01\xac\x9e\xac\xeb\x81\x82\xd6\xed@\xb1\x09\
+T'\x10 \xdf\xb55(H%\xf6\xc7\xfb\xed\xb6\xb4\
+\xc8\xafkZ\xe4\xd7\xc7-\xf2\xeb\x12\x16\xf9\xf3n\x9a\
+#\xe7\x17\xdd\xc3\xd5\xc6\xd3L\x1d;\xcb\x17\x16\xb6h\
+\xfb;\x85\xb5\xaf\x93;-\x1a\x93h\xf0\x0d\x0bi5\
+Lm\xfb\x8e\xe71\x00\x89z\xeehX\x94\xe7{\x8f\
+p\x0e\xfca\xe2\xaeR\x08\xc0\xa8\x93\x0b\x00\xb6\x82\xb8\
+\xc5x#\x8a\xfc\x00\x0a\xb5\x11\xa1\xbf\x1a\x00}\x1a#\
+\x1f\xd6\xbaD\xdb\xe0\xf1\x5c\xb0?&W\x95O\x85|\
+\xf42iT\xc8\xd6\xd1\x14w\x8ci\x92\x9e\xb2\x08\xe2\
+{\xf7\xd6N\xe7\xf8\x92\xcax\xea\xce\xb1(.\x07\x85\
+\x897^u\xbc\xca8\xefG\xf6\xff\xe5ue\x8b\xa6\
+\xcd\xe4LI\x01\xe0\xe4%\xd3P\xbf)\x9c\x01\xf8\x00\
+\xce\x10\x13f\xd6\x9a\xce\xac\x1aN>\xea\x085\x1f\x86\
+\xae\x98M<\xaf\xd3\x88\xd7\xa9P\xf3\x11T\xf2l\x0a\
+K\x9d7\xae\x01\x83f\x16\xee\x1f\x8cZ\xc0\xec#\xaf\
+EL\x1b\xdbI\xea\x06:\xfb\x88\xc4\xc1\xbcP\xde\xe8\
+\xa3\x0fOT\x80\xc5\xeb \x0ad\xf2%\x0al\xea\x07\
+\x80t\xb4\xc6\xa8_8\xaf\xe8LKT\xd3?\x0f?\
+\x87:\xb1\x0f\xb4\xf1\xf5\xe4G\x14\xfa\x7fR\x81\x8b\xa8\
+\x22\x05.\xfb\x1fv\x85\xfc\x1c\xea8~\x1e\xd7\x85z\
+\x8f\xba\x15\xc0\x04\xed&>?\xc0\x801\x89\x0e\x0d\x0c\
+\x9f]\xc5`ft\x95<\x15\xc0\x81\xcf\xcd\xf3B~\
+G#U\x9a\x1d0\xff\x10\x8b\xf4F\x14u\x1c\xa39\
+\x00\x01\xd8\xf5B\xe5\xff\xaeE\xb8\xaet\xfeYg\xba\
+\x0e>\xca\xc0:\xd4\xf3\x5c\x8f\x99\xe9\xf5\xc6\xa6\x04U\
+~\x0acl\xfb\xac\x5c\x99\xf3\x0dT\xefA.\xfa6\
+}\xd8\xdb\xd1\x01\xe5\xc2\x02\x10PHS\x08\x01\x08\xf0\
+>f,\xf2[\x8d1\x00C\x00\xc0\x80\xef\xe3\xe7D\
+\xeaq,\xfc\xa1$\xfd/\xbb>^Y\x88 \x5c\x14\
+\xde,\x906\x9aP\x16TN\xbbK\xa1\xec\x14!\x10\
+c6L:Y*\xa8\x1d\x19\xe3\xfa\xb0\x00\xf9\xb9\xfc\
+>\x1e4\xbe\x1f\xaa\x1e\x94\x98\x1eBT`\x90\xc5\x02\
+@\xc1\xcf\x019\x94\x98\x92\x7f\x0e\x1e\x5c\x10G\x00\x0e\
+\x16\x0e\x0f.\x89\x07H\x1a3C\x14\xfc\xcb\xebsB\
+\x81\xe1\xe7\x03l\x00x`\x93\x22\xea\x90\xab\x81\x938\
+CU\xa4PR\xa2\xe7\x07\xaf6Z\xefD#\xc6\x03\
+\xc2\xc8\x8c\x113v\xd8\xad\x80 \xd2q\x80\xe2\xc6\xdf\
+\xb3a\xd3\x91#\x01\x90X\x91w\xda\xd5)\x1f?d\
+\x11\x90>\x1d$\xdd\xac\x16\xad\xd3\xe3#\x12\xda8\x10\
+[L\x87Y4\xa0\xc2\x13Vf\xd0H\x00m\x96q\
+\x83F\xb9b6\xdfg\x84%\xe6\xe3\x9a\x12\x88\xd3\xf0\
+\x1f\xf7\x0b\x1b=\x0aZ\x15\xbe\x14\xd8~p\xa0Z\xac\
+\x04\x07q4\x0eF\xef\xccc?\x02uN\x1b\x0c*\
+\xef\x0e`\xa1~~\x81E\xb0sA\x0d\x1bF\x00\xaa\
+\xca\x9a\xad\xf4D\x14\xaa%\xfb\x87\x00\x10D\xa6\xfc\xba\
+!>\xc9~Db\xc1\xfdE\x8cF\x22I\xae\xf2\x8c\
+\x08at;\x99?\x1c\x90\xbaNt\xda\xb0\xfb\xf2Q\
+\x91\xb5-B\x02\xc0s\x86z.\xae\x08\xea\x18\xba}\
+\x18@\x92Ti]\x14\x92\x0e%\x0c\x15:\x93\xf2\xc5\
+\xf6\x91\x0e\x00\x07\x9e{\xf6)\x00\x08|\x95\x85\xf4\xa6\
+9r)3{\xd8\x97A\xa6\xd9w\x00\xfe\xce\x95\xda\
+3\xfb\x063\xf6b\x8e8\x85\xef\x0eQ#\x99\x0d\x14\
+@\x90\xb6\xb6PAy\x85\xa8\xdc\xffQ\xc12o\x10\
+E\xb4wwkP\x05G\x15\x9a\xf3\x80\x03\x0fj\xa0\
+:s.\xf2\x88}*\x09\x19\xfb\xa0\xd6c\xba\xc9\xa2\
+\xdd\xaf\x22\xb6\xf7\xe5\xa2\xe5\xb0~\xb1\xc128\xe8\x98\
+\x00p\x89\xba\xec.\x00JP]\xb5\x1a`nA\x8b\
+p\xbd\xb4?\x00\x88Y\x7f\xbbt\xb8%\x96\x05\xe3\xa3\
+\x1c\xff\xcf\xb4\xe7\x81\x8e\xcb\xe8\x9a\x1c?o\x05\xffp\
+\xd2\xa2%\xf0t\xf0<\xa1`\xb6Sn)n\xcf\xb9\
+AQG\xa9\x80\xde?\x04H\xbc\xb5u\xf2\xd2\x1e\x16\
+\xf9\xe7\xafm!W\x93\xa3D\xd5|4\x8c\xa8\xd8\xf5\
+=5\xd8\x05\x1as\xe1\xcf\x0dpq&\x9d\xecM'\
+~(\x15\xfdm\xabj\xbe\xab}\xc3P\x928+T\
+E\xc4\xdc|\xffB#\xe3?\x16\x81A\x82\x86\x09\x7f\
+\xcf\xf3\xa3\xd9o\x17\xe7\xfcC\xa5\x06;\xf5\xff\xfa\xca\
+`r\xe6\x19\x8c\x16\xed?n/\x0b@\x85\x96\x8e\x80\
+\xc1|J\x15\xc00}\xda\x22_/\x93\xf8\xc8\xfbg\
+Z\xca\x22\xbf\xce\x96fMf\xcb\xb7Y\xf5\xa7\x1f>\
+\x98\xe3\x81\x00\x883\x8b+\x91\xb3\xeei\x8b|\x9f\xff\
+b\x11f\xac\xa5\x19\xc2(\x9e\xab\x9b\x9fg\xd1\x0a\xbe\
+\xf16uD\x8dN\x8f\xfb\xc5o\xa6\x19\xf5;\xea\xec\
+\xa6\x03r\x02\xc8\xa1\xfavo\xb1h\xeb)}\xde\xa2\
+\xd9 \xfa\xba\x82\xda\xcb\xf9&J/\xfb??\x07W\
+\x09\xa7\x82k\x9fb\xf4\x81}b\xfc\xf1\x1c\xbbk\xf4\
+\xc5\x0a\xdf\x99r\xcc\xa8\xf3k9\x8d6\xcc\xa3Q\x01\
+\xd3B\xb8\xc5\x22\xf8\x90\x0bP\xf0\x8e\xe9\xed\x16\xf9\xeb\
+\xb7\xb3\xc8\xbf\xefr\x8b\xa0\x0d\xc2\xfd\xa6S\x09\x83\x11\
+\xea\xf4g,\xc2\xfe\x08\x83\xcb\x80\xd9\x90x\xa3=\xe2\
+@ #\xa4h\x00hd\x90\xce\x99\x03\xf9P\xa1e\
+\xcf\xd6Mg\xd1FCF\xff\xb1\xc8\xaf_\xb2h\xa3\
+\x0cnC9\x93f\xbf\xe9\x18\xeb\xfd\xa3\xf5\xc0zw\
+f\x14\xf6\xaao\xb7h\x80\x9dk\xfbP\xa0\xe7\xdd\xbe\
+0s\x9f\x9ax\xca\xf6O?\x07u\xaeb\xc3\x89}\
+d_E\xdf\xed\x00m7~{\x10E\xa3`\xc4\xed\
+\xc6\x00\xa8\x0f\x87}\x11\x06\xed[\xf5\xdcZ\xc7~I\
+\x15\xac\x9f\x09\x05\x0e\x0c\x0b=\x87i\xd2\x22?W\xc7\
+[\x94\xfd\xbf<\x97\xdd\xecU\x13\xc1GL6\xb4\x08\
+\xa2\x87\xf2\x89\x07hq;c\x98\x08P\xd1\xc5\x80\xf3\
+\x99t\xfe\x8c\x0d\x1d6\x86\x9a\xedv\x8d\x2243^\
+y=#\x96|\x01\xd7\x10\xff\x5c\x12\xe1\xf3\x82O\x8d\
+\xaa\xc1\xa9\x15\xb0\x99\xb8@@.\x8d\x04\x0a`\xea\x07\
+\xf2w4\xbe\xd0\x90\x10\x00\xea\x9aP?\xb2\x08\xccC\
+\xe5\x89\x0e\x0c\xe0N\x81\xbb\x0cL\x0d\x8d\x8c\x01P8\
+\xa5\x9f|\x1e \x04\x9bg\x00M(\xeft\x90)l\
+aJ\xa1\x85\xc3h\x02_\x0fc\x8d\x86 \xa3\x15\x88\
+\x8132\xc0\xdfS\x7f\xd0p\x00\xc0F;\x80\x11\xce\
+\xa7{\xb6|\x5co\xe5W\x88\x9e\xba\xbb\x00\xccs\xc4\
+\x0da\xb2@\xa1\xa7\xa1\xca\xd7\xc1,\xe7?\x981\xbc\
+/1a\x01\xea\x19\xc5\xf2|\x92\x06%\xd4|^\xf9\
+=\x8crc\x8b\xc9z\x05\xd0`}\x90\x0f\xe3\x86\x86\
+\xed\xa3\xf2\x7f\x9e_\x00b\x17\x17\xe5\xf7q]\xc8\x87\
+\xc9\x9b\x18\xbd\xd1\xc8\xc1\xa4_x{|g\xd3/\x9a\
+\xae7\xa3\x1f\x0bnD\x17(\xb8\xad\x5c\xfco\xd8H\
+\xa2J\xfcK\x8d\xea3X\xda\x22t\x84\xf8\xf9\x1cH\
+|?\x7f\xe6\x95\xafCD\xd0[\xa1\x95\x9a\xe9\x1f\x98\
+\x8e\xa7D\x9a\xfc\xc1\x02\x00 \xd1\x041g\xe1S\x80\
+\xf1{\xa0\xca\xf1\xf5\x14\xc8\x88\x86-\xa3\xc2vU\x8d\
+\x08\xa0\xfaI\x01\xdc\xa8\xfb\xf5\x95\xc4\x9a\x07\x9c\x82\x1f\
+\x80\x85\xcfMb\xbe\x90\x12\x98\xa5D\xf9\x87:\xcf\xcf\
+\xa3\xd3I\x87\x9a\xc4\x99\x85\xbb\xa8\x12\xfe\xc5\x84|-\
+\xab\xcf\xcf\x01\x093\x80\x04zv}^\x890\xf9L\
+\xf4|\x1a\xf1x\xbf\x1e`\x0e\x5cf\xc05\x13\xed\xbf\
+\x17\x80`\x0d]w\xc4\xbb\xe8\x94\xb1n@L\x111\
+\xc26\x0f&\x04\x9d\xea\xa5\xf5`hc\xc1\x7f\x1cD\
+\xd2\x13x(1\xb8\x07\xa8`E\x1c\xcf\xedPH\x14\
+@H)\xa0P\x17\xc6\x9f\xf8\xeb\x16\xf9\xfbw\xb4h\
+bU\xbea\xb0!\x08\xb8\x80\x92\xe5H\x1c3\xe4 \
+\xca\xcc\xdc\x7f\xd6\x22lT3X\xb4\xceK7\xbfE\
+~=\xd8\x22\xcc\xae\x81@\xea\xc0qQ\x16\x90M\xb4\
+#\xb0\x87\xa3P\xa2\x93F\x87\x0e\xbfm\x1d\x9c\xfe9\
+\xf4\xfcP\xe0\x02\x08\x0c7\xb1\x08L\x1a=\xffn\x87\
+E\x81\x0e3\x80N\x04\x14*\x1d\xf0\xfe\xf5\x88\xa1\xf0\
+{\x95`y\xc7\x9f\x02\x9e\x82\x9e\xce\x82(R\x1c\xcc\
+\xfe\xfe\xd1\xac`\x86\x8b\x0d\x8e\x0e\x07v'\xa2\xe22\
++\xee\x80\x86\xd6\xab\xab\xc0\xb3o\xd1\x81\x82\x12\x8c\xc8\
+\x9d\x00)FR\xa0\x00;\xc5\x8e\x03\x14J\xa8f\x22\
+A\x8e)\x98\x9d\xd1\xa2\xce\x97S\xf7\xa0\x8c\xa1>+\
+\xc6\x8a\xef\x0b\xa8\xc4\xb2\xef2\xf3\x8f\x1d\x904\x05\xa0\
+b\xbb\xab\x85\xa8\x8c\xdeae\xdd\xf0\xca\x01\xcd\xfb`\
+\xc4\x00\xe6\xcc\x9e\x12\xdf\xc4\xe6j+\x89\x0bQ\x98J\
+{#\xad\x96#\x17\xa0i\xba\x9c\xd0M\x17DL\x8d\
+Gq\x8bFS\xde\x13\x12r\x01\x12n\xb3\x85\xa6\x81\
+\x10p\x17}\x94Z7\x14Kg\xc0p]HPU\
+\xd0\x16q\xbc7\x05\xc0H\x1d\xde\xd2?xT\x22`\
+\xbf\x91\x88\xe8\xbey\xf9/l\x11:\x19\x9c\x0bt\xd8\
+Y\x97$>Pnu=L\xa2\xceD\xeaJ\xc2\xbe\
+\xb8:!\x9f\x0e\xf6<\xba\x8f\xddl9f/\x14\xe0\
+\x1cZg\xdbIlk\xe7|\xfc<o\x91\x7f^\xc9\
+\xe8\x9b\xb8\x9f\xab\xdbK\xa3\xc3\xc5\x0aEu5\xa9,\
+\x13\xcbr\xc0\x90\x91\x0f\xa3\xda\xe6\xeb\x90v\xb3\x90\xcf\
+zN\xe0G\xff\xb5\x08\x80\xb5\x00\xda\xf2}\x17h\x1d\
+\xa1B\xbfB\xb0\x89\xa4@\xbf\xad\x8e\xd6\xa4Y\xd2\x94\
+4%\x004\x9c'\xea\xe4\xe02`_\x95\xa6\x84\xeb\
+\x01@\xc0\x88\x14?\xf7U\x8b\xd2\xa9/\x85\xb1k\x93\
+\xa8\x93\x0d\x80\x87\x18)\x00E\xfe-;\x9a\x06\x02j\
+\xdeia\x8b\xa6A3xn\xf0\xcc\xe0\x99\xd0\xc1\xa3\
+\xe3E\x82.\xc0\x8d\xe7\xda\xd5\xc5\x05x\xfah\x8f~\
+\xef\xe4\xb2\x16*X\x17m\xfb\x7f\xb4e\x11\x00\x00 \
+\x00IDAT\xed\xe8\xfd\x16\xf9uv\x8b@\xb9\xde\
+\xdf\xa2\xed\xfb\xe9\x84\xf4\x95\xe2w\xcf\xc8\x8e\xf6\xa7\x5c\
+\xae\x17 \xc9\x99j\x17\xcb&\xf5\x13\xb5s\xdb\xad#\
+\x9b\xd8\xc3t\xee\x22\xe6\xfa\xbeJ\xc5\xf7}V\x00\x1b\
+\xe7\x0b\x80J\xba\xad\x8a\xd8\x22v\xd6me\xd1\xec\xd1\
+\xba\xe5,\xc2H\xcb\x09\x16\xf96\xec`\x91\xff\xfdB\
+\x8b\xaaR?\xce\xfbjw\x8cE\xd1\xa4)\x05\xb2\x17\
+\xc0V\xb0[G|\xc1\x1c\x0b\xb4\xe7y<C\x8e\x19\
+%b\xf7\x8e\xa0N\xad\xeb?\xde\xc4\xa21\xe1\x8a\x08\
+\xde\x81\x01`\x10#-\xbd\xc7\x22\x14\xc6\x9c\xef:W\
+\xbc\x10:\xcf\xa2t\x88W\xb5\xbc\xa1\x00\x8a\x9f\x08\x1a\
+\x1aP\xd9\x95\xbf\x99g\x84\x8d\xc6xao\xdf\xb7j\
+;\xf7\x8b\xd8\xe0l\xed\xdc\x1b]:\xbadd\xf6\xbf\
+swsus\xc9_~\xf56\xdb?\xfa\xaa(\xfe\
+\x12\x19\xc5\xddip\x91\x18)\xa2\x84{\xfec\x05\xdd\
+\xeem\xa4\x8f\x19|\xd6\xf5xq\x0b\xad\xe3\x03\x1b\xd3\
+\x07\x0d\x8b2\xaa5\x9f\x1a\x17;\xd5FB\xc9\x0bi\
+\xe8\x90\xdf\x92\xc7\xee\x5c51\x1c\x10'_C\x1c\xcd\
+`\xdf\xafJ\xbcwj\xe8\xc0\xb2\x1f\x02\xb40\xda\x07\
+E\x9cF\xda\x86E\xde\xb9\xe6\xc9\xab\x84\xeb\xads\x0e\
+-\x92b\x8b\xfaj\xd1 [\xd4F\x91\xbb7\xd7<\
+\x08`\xa8{w\xb7qqE\xd0\xe8\x89\x03\x00\x00\xb3\
+hA\xa8^pQ:f\xca9\xd7($WQ\x83\
+\x0d\x86\x1f\x00'\x1d^\x9dk\xdeH\xf9\xbd4\xa88\
+\xb75r\xea\x9dt}\x7fZ\xc2\xa24\x14k>\xff\
+O\x89\x1fkT\xc1\x0bC\xec\x06U\x90\xb3\xcf\xa5\xf9\
+,\xc2\x88\xa2\xf2z\xc4\x95a\xc0\xe2\xd2\xe6\x9aW\xb8\
+\x19\xf5\x98,\xcex\xd4}w@AZM0\xac\xbc\
+\x91\x06P\xa9<\xc9\x81\x0d\x8d,\xf9:a\x1dp\x8e\
+c\xdf\xd7\xd3L\xf2\xf3\x05\xb1?\xf2O(\xf30\xdb\
+\xc8\x9bh,\x08\xe0p\xd5|\xf2\xc6\xd6\xb0\xac\xf5\x0c\
+\xe74\xf5 \x8d\x5c\x80,\xf2.\xceK\xea-f\xe0\
+\xd1\x98\xe2sPo\xd2`\xa6.@\x84\x1b7\x00\xde\
+\x07\xda=k\xca\x0d\x8az\x82\xebCa\x0f\xe3\x9c:\
+R\xf9\xa5\xd7\xa10\x06\x18a\x12\xc3\xce\xf3C\x5c\x14\
+\xa87X\xdf\x88\x8f\xb2\xae\xa9[\x01\x22\xf8\x1c<\xf7\
+\x911\xf8DkxM\xbeN\x9cb\xe1\xe0\xbfm\x93\
+/\xaf\x86\x07A\xea\xfeP\x09\xbc\xb0\x80A\xc0+\x94\
+|l\xfc\xb8Q\x14\x80\xbc\xd1\xbe\xd8\x9e=.\xcf\x07\
+\xe4\x827l\xef\xe3?\xe1B\xf1 Qh\xbdPJ\
+\xd7\xe6\x93(\x1b\x13fC\xbd\xc3\x07\x10\xc0\x9f\xfb\xff\
+\xf1sI\xf4x\xe5\x86\xb3\x91\x22c\xc8\xc2\xe3\xf3\xb1\
+\xc0\xb0\x8f\xc1\xa6\x90\xce(\x9f\x93\x05\xc1\x8d\x01y\x02\
+\xc8\x98\xd0\xcf\x9d^\x0b\x9a\x8e}\xdfm\x80?\xf7\xdd\
+\x0f\xde,\x84r~\x15n}\xfb@\xd4\xe9\x11\xdb[\
+X\x80\xc1,z_|\x0e(\xdaPz\xa4\xf2o\xda\
+\xbd\x05\x18\xe0\xfaspp}\x10\x0d\xc4\xb6\x0f?o\
+\x10ju\x14\xddO\x9e\x19Xl\x08\xe5\x93\x5cD{\
+v\x0c3w\xbcB)\xd4\x01\xe0>\xec\x88\xb9\xd0\xb9\
+_\xa9R\xc1\xf2g\xa8\xaa\xf5P\xdf\xff\xa2BK\xd7\
+\xc97\x04\xb9#\xb0q\xe6\xe3<GP\x0d\xd6\xba\xa2\
+\x00\xf5\x0d\x06\x9b\x14l@\x00x\xf4\xfbHD\xd2{\
+-\xf2\xcf=\xd9\xa2\x15Z\xdd\xe7-\xda2\xe0`q\
+\x84t6\x07h\xea\xac\x0f\xcc\x05\xcd\x0a\x93PC\x99\
+s@\x09*#6~\x8c\xac@%\x92Z\xec\xc4\x09\
+%&\xbaO[\x04\x7fl\xddw?ha\xa0\x90@\
+0\xf3\x86\x98\x89\xec\xda\xf0CE4\x90Q\x09\xb7\xe3\
+\x93(\x9e\x8f&P\xc8 \xaa\xc3l\xfe?,\xc2\xc1\
+Cb\xca\xec4\x85\xb7\x006\x07\x88H`@\xf8\xa1\
+B!&\xc8~\xc6z\xe5\xe0\x00H\xe0\xfdP\xd8\xf0\
+\xfd\x007\xa2\xe0\xf3\xf3\x1cxAs\x83\xc2Z3r\
+N\xa1\x03\x90\xe4\x155q\xec\x0b\xb7\xb1(\x09h\xed\
+\xcc\x1d]5\x1e\xe8\x84\xb9\x8d%\xa3\x17\xa8\xa0\x0bX\
+\x85A\xc3\xc1\xd0]n\x91\x7f\xfc\xaa\x16\xad\xe3\x80(\
+%\x85\x843\xb4\x00xv\xac\xb3\xac<7EL\xea\
+\xa4\xa6\xf9\x82(e\xf7\xdd:{;\xfeu\xa5\xca\x8e\
+\xb7\x938%\x94q1S\xca\x8c\xf9\x97Bg\xdc`\
+\x9a\x07E\xf5\xffY\x98\xe5\xa3\xc3\xc0l\x1e\xa2\x80\x9a\
+\x9dw\xb1\xc1\xdd-\x82\xbb\x05\x8c\x09\x18\x14\x14>\xcc\
+\xa4\xef[\xddM\x9c\x89\x84J/#\x22v\xca\xbc\x12\
+\xecz8g\xd8O\x01xA\xe8\xd9Oa\x0e\xb0>\
+\xac\x7f\xf4\xbb\xb6na\x84\x0c\xcf\xb6\x10\xe5\xfa\xd7\xe1\
+\xe0\xd7H]\xf7\x90E~\xfd\x85E~=\xdc\xa2\x8d\
+F\xb9[\x89F\x1c\x9c\xa9\xc2\xcc\xb5f\xe1\x0b\xc0\xb2\
+I\xe8 P\x10\x19\x03m\xc5\xc2\x08\xc9\xd1\x00\x17\xd7\
+L!A\xb24\xce\xeca7\xb0h\xeb}\xb8\xbdE\
++\xcc\xd3\xdf\xd3\xa3\xe9\xd1\xe6#\x8e\x8b\x86?\xcf\x88\
+yI\xb3&\x1dd\x114\x04\x00\xba\xd4AIGY\
+\xb4N&\xa2H\x83\x9fT\xb7\x02\x00c\x93\x1a.#\
++\xff\xae\xe7N\xfa\x82:\xdbz>\xdc\x95\x84\xe7Q\
+\x89\x9d\xef\x17\xe4\x07\xdbT\x00+\xaf\xea\xaa=\x80(\
+\xad\xa8\xd8\x14\xba\xa3\xf7Z\xb4\xcf\xc1u\x98\xfcl\x8e\
+\x5cp$\xfbo \xe06\xaf\x93n\x8b\x1c[\x8a!\
+15\x88+J\xbb(-b\xd1\xdc\x00|\x1f\xbc\xa4\
+\x16\x84\x0e8\xa0\xbd2)\x11H:\x93\xff\x1c\xbc0\
+x!\x14\x88j8\xa4oZ\xb4\xc4\xda\xb5a8\xc7\
+\x1f*\xc6\x97\xa6\x09qM\x01\xd4`\xf2\xb0\xae\x99\xf1\
+V\x22\x0bs\xc0\xd5\xea\xe5\xae\xc3y\xe3\xae\x00\xd8\xfe\
+}\xd0\x22\xbf\x9e\x90\xc3\x0a\xd1S-\x04,\xae\x19\x1a\
+GJ\xe4\xd3\xa19>\x17\x00Fu\xc6\xba\xab,\xf2\
+u\x9f\xcc\x91\xcf\xb7\xd7\xdei\x91\xff~5\x0b\x9d\xbb\
+;5\xdbA\x1f\x8d`\xf6]\x80E9eRc\xd2\
+\x95\xac`\x1d\x15\x946\x9b\x7f\x91Ec\xec9e\x5c\
+L\xbb\xee\x16\x8bF!\xa7\xf0\xea.\xb0h.\x03\xa3\
+\xe9F\xd3\x8f\xa6\x0f\x85\xfe\x07,\xca\xfb\xab\xb3\xf7r\
+\x13)\xcf\xc7\x12a\xf4@\xea\xfchp\xb8f\x8f\x0a\
+\x03W\xf7\x07@B\xe4\xd6x\x95\xeb\x84\xe7\x8e\x11%\
+f\x839\xef\xad`\xfb~\xd0\x02\x91\x96\x8b\x03\xe4:\
+\x17\x99yw\x86\x16\x05\x98FP\x10\xd3\xf3\xfd\xbc?\
+:H>\xcbH\xe7]\x16!\x1f\xbeu\xe27\xc5\x16\
+\xf6\xad\xe3\xd5m$\xd1G\x0d\x96\xb4\xd6V\xfe\x1cG\
+\xa4\xc3\xd3\x11\xe5\xb9\x1f\xd8s_\xc4\x11\xcd\xde\xb8\xfc\
+\x97\x7f\xcd\xd5\xa3\xabFW5\xc6\x05\xb3\xdf>k\x0e\
+5\x1c\x97-^i\x00\xd0hP\xe1\xe6\xb6o7\xa9\
+\xe3\x0fs\x81\xba\x00\x86#\xfb;\x00\xfbL\xca\xa7\xb6\
+,'bk\x04\x90\x9732@>\x0d\xc3\x17\xf1\xce\
+\xdd\xd5\xa9\xd7\x0c\xb9w\xa8a`\xd0\xd9V>\xe3\xcc\
+\x15\xf6q\x18\x17'j\xf4\x86QX\x18\x040\xfbP\
+\xd3W\x83\xc8\x1bF\x88!3\x8bN^\xc3H\xe59\
+\x16\xa1\x91\x03\x95^\x9aT\x00U\xce\xcc\xecS\xf4Y\
+7\x88\xfb\x01\xa4\x93\xb7\xf1{\xa83\x01`\xe9D\x93\
+\xafq\xfe\x93\xef\xf6\xea\x15g \xedXGa\xfcs\
+s\x9e\xea\x5c\xf4\x82\x1d\x80\x17\xf5|\xc4\xfd\xc8\xcf8\
+G\xa97\xc9\x03aZ\xf2\xca\xd73:E\xa3\x92z\
+\x8d\xc6\xa8\xf6{_O4\xa0\xd0\xae#\x7f\x07x\xe2\
+sR\xe7\xea\xb9\x82\xc1\xec\xe2\xe3<\xd7\x8c\xd0\xca\xbd\
+\xc5g\xf9\xd5\x08u\xb1C\x00\x14\xee\x13\xbf\x87\xe7\x92\
+\xfaS\xf9\xcdd\xd9\x96\xef\x0dvz<\xd8JP\xbc\
+\xa0\xd1\xcc}I\x03\x17\x16\xa21\xaf\x0a\xf99\x82\x8a\
+?\x9a\x00l\xfc\xd1\xceo\x9e\xd0\xe1\x03\x00\x90\xba\xb3\
+\x17\xc4\xf4\xf7\xb1u\x00\x88\xe0\xcfl@\xf1\xdf\xff\x1b\
+\x0aR\x128\xfe\x9d\x9f\xcb\xfb@M\x11\xb1?T_\
+\xa1\x10\x81\x90\x08\x01s`\x00\xf1\x90?\x0a\x00Y^\
+\xd4~\x90#>/\x859\x0b\x14\x00\x81\x9f\xc3\x82\xeb\
+\x03\x1d\xff\xeb\xf3\x8d\xb5\xd0\xf8\x5c\xfc<\x0a\x196\x22\
+\xae+\xafs\xf7\x5c\x10\xe6\xee!C$\x08\x0b\x05\x8d\
+\x868\xa2\x01\xa3aeu\x92\xd7\x97\x98\xdf\xc7\xd4I\
+\x9f\x22\xa4\x17\xbb,\x1dd\x14\x80\x8e\x043k%\xaa\
+\x8cop\xfc=35\xd8\xd9\xe0\xab\xca\xfbGE\x96\
+\xeb\xc5ue\x16\x1d\xbb\x17\xcd\x8a\xf9\x03\xa6\xfb\xe0~\
+\x9b\x5c\x07%\xee\x9e(\xce\xa3\xf5.?_\x0a-\xf7\
+o'A\x10\xc5\xc6U\xf7\xcb\x7f\x01\xa1\xe4\x00b\xc3\
+`\x03\xd4l\x8e\xab\x823\xc3\xf7\xb0Ec\xc883\
+\x01\xfb>\xd4\xf3E1\xf7N8\xbe\xc9\x88\xc4\xb0\x01\
+\xb1!\xf3\x9c\xb1\xa1a?\xa2\x7fw\xb5^\x1d \xee\
+\xef\x0bR\xac\x0d\x8e\x99:W\xd7\xd7\x0c\xa9\x8b=\x22\
+\xde\xc6\xa8\x07\x89)\x9d{\x89\xf1\xb9\xca\xbd\x00\x02f\
+h\xdd6\x8c\x9f\xa7\x11\x01\x07\x02D\xed\xc6\x16\xcdU\
+\xc9)$\xed \xbf\xa9 \xc9\x17\x14$\xf9\x95Z\xc8\
+9u\x8fB\x0f\xb1\x1d\x0e\x5cf\xac%\xa2G\xe2\xe2\
+3\xb2\x00)P\xe7a\xac\xa0b\xab\x83\xcc\xa9\xa3}\
+J>\x0c\x1dQ\xa0\x9d:\xc8\x01\x87X\x0b\x8c%:\
+\x9b\xa2\x90\x17\x09\xbd\x1d\x02\x85\x8e\xe7\x1b\x00\x0d\x0a=\
+\xeb\x8c}\x85\xbf\xc7\x16\x13J\xafD\xef\x00.\xd2q\
+\x16\xe5\xf7V{\xb6;e\x1b\xa6\x02l\xbc\xab\x985\
+t\xda\xe9D\xe0\xe3\x0e\xa3\x02\x9fc1\x1b\xc6\x0b\x8c\
+\x17\x1c/\xd0\x00\x1f\xee+\x89W\xe9$\xffF3\xfc\
+K\x17[\xb8\xabl=\x94\xb4\xe5\xbc\xd01\xc0\x1d\x00\
+\x7f\xed)\x16\xa1C\xc3~\x80\xdd\x9aD\xf2(\xb8]\
+=_@Z\x9a\xd1\x22\xff\xfd\xcc\x16\xcd^ntR\
+M\xdca\x10uw[\x041P=7\x9eh+\x01\
+s\x86\x86\xa5-\x7f\xd0\xe7}M\x0c\xa3\x8f5?s\
+f\x03\xd9\xa6\x99\xed\xf4\x91\x0a\xc4_e\x83\x08\xe3'\
+\x17\x16\xd3Y\x01\x04\xb3g\xf8\x80ExN`\x86\xb0\
+\x8f\xd9\xea\xb9V\x0c\x8cO\x07\x1b-FG\xd0|P\
+\xe20\xdc)G.\xf8F'\xe7\xf8Z\xeb\x1c\x17\xe0\
+\x7f\x85\x90\xc0\xda\xae\xbem\xe9\xe4U\xc6\x17v\x86{\
+\xa6O\xa6O6\x91?l\xc6\xa0\xf2{gp\x16\x8b\
+\xfc\xef\xc3j\x9b\x89\xa8\x97\xdb\x88\x22\xde\xc9\xfa\xd7\xfd\
+\xa1\x83\x02`A\xe1\xe4\x9d\x22\xd4\xfb\x05\x04\xa5W,\
+z\xa3\x84\xa1\xc1\xe0\xefK\x00\xe4x1\x8b\xc6t\x02\
+\x10\x1d\xdcl\x11\x00o\xf6\x01\xed_\xf8\x81\x17\xd1\xb6\
+\x95\xb5/\xed\x13\x0a\x11K\xb7no\xa2\x81\xbe\x9fj\
+t\x8d}\xcd\xa4nM\xec6]m\x11\x1a)\x07T\
+\xfb\xde\xee>\x8b\x90\xcf\xc0\x5c\xa3#\x85\x18\x19\xe7\xb6\
+\x9eS\x9eO\x18l\xb8*\xf8\xbe\xa2\xe7x\xbcq\xed\
+\xe0sn\xa4\xe9,\xdas\x86\xa8+b\xbb.\x0a{\
+\xad|\xe6\x054t\xff\x91&\x80]\x8f\x15\xd5\x01]\
+R\x1d\xe1]$\x9a\xfbJ\x1b\xa5*\x05\xf2\xd6\x121\
+\xde\x5c\xcc\x8f-\xda\xbe\xd9}\xc1\x22\x88\x0d\x8a\xda=\
+\xba\xccB\x9a\x01\x875u\xf7\x02\x80N\x0d\x0d\x05\x03\
+(\xb6\x0e3\xd5V\xc0#z8\x97\x80\x91/h\x94\
+\xef\xc1\xe0\xe6\xf0O\x8b\xfc\xf3\xffl\x91\xff\xfc\x7fu\
+F\xdf\x01\x81)\x16\x0d\x18c\x96\xbc\xdb\xd7\xa2uT\
+}TQ@D\xfa\xadE\xdb\x8f\x0b\x03\xe6\xdda\xb6\
+\x9e\xfb\x09@\xaf\x06\x86\x8b\x122\xbb\xcf\xf3,f\x1d\
+\xb3\xfc>\xf3\x0d\x19vn\x0b\x01\xcck\x84s\x86\xfc\
+\x1713\x18tb\xee\x16\xd8k\xe1\xca\x80)\xe2|\
+\x00H\xe45\xa2\x0a\x8f\x0f\xb4(\xfb\xfc\x02\xb6\xcf\xbb\
+=\x9e\x1a\x19^`\x03h\x03\xc8\x7fg\xe2\xbbE\xd3\
+F\xfbt.\xfb\xcb(d\xd1\xeaY\xae\x896c\xbb\
+\xdbM\xb5\xc8\xaf\xdbt[w[7\x06\x8d\xbb&]\
+b\x11\xf2q1\xa8\xe8(#\x1a\xe9\xd7G\xf9Wp\
+\xe5(\xf9\xafw\xe0\x05\xe0\x22\xb2\xe7\xcf\xbf\xec\x0f\xbd\
+ c4\xcb\x06\x04\xb7j\xa2\x85.\xd6\xacF\x91\xe7\
+\x03\xdc\xdf\x97-\x82;\x85\xec\xab\x07?\xb5\x08\x8c7\
+\x0aU\x1b\xa5\xf9x\xa3\xe2\xbb6\xd2\x01\xca\x8bh \
+P\xa0\xc2\xc0\x85\xe9\x00\xa3\x99\xff(\xb4\x050\xa0\xb1\
+\xe3y\x9dF\xb7\xbc@\xc7\xa6\x0e[g\xf6s1\xfa\
+|\xff\x81\x12\xcf\x88\x10\x85:y:\x859\xae\x03\x14\
+\xa8\xd2.\xf0\x91lD\xcda\x1e\xc2\xbcD\xbb\xe9\x0e\
+\x8b\xd0\x81\x07\x18\xe9\xd7U\x88<n\x94\xb3\xf0\x8d\x02\
+\x03\x97\x86\x95\xf2i\x1fY\x80\xf9N]\xc5A\xcd\xba\
+\xa7\xe1\x88\x9b\x18\xa2\xf0\xd4k\x00\xf30\x918\x07\x18\
+\xe1\x10\xf3\x10\x0d!\xcf\xe7\xfbu\xa5\x98\x04n\xd3\x8c\
+-5\x1a#4\x96hp\xc2\x8c`\x94\x8d\xbaC\xb6\
+\xbc\xfe\xbc\x937\xd2\x10\xa4\xf0'\xcfR\xfe8Y\xca\
+\xe27\xeb\x00\x9eE\x0blu\x15\xb63\xb4/t\xff\
+iK[\xd6V\xa1\xbfa\xa3h\xf6E\x04]\xec\x8b\
+\x05\xca\x0c\x04\xd4\x08\x0aM\x1e\x18\x12nT\xe5\xa1\x1e\
+\x93\xe8\x02\x18p\xd0\xf75\x00\xf8>\xc4\xad\x98\x91\x06\
+\xf9\xd0\x85\xf0\x9f\x0b\x02N\xc7\x1e\xd1%(0\x88B\
+\xb0\x90)(\x00\x0c\xee\xac\xb3x\x83\xf7\x88i\x00\xc5\
+C\x9d\x07\xa8BN\x85\xed\x17\xfe\x14\xb2,\xc0\x81w\
+\xfe+\xa0@\x01\x97\xf4@s#)\xdc\xf9\xfaq\x8f\
+\x91\xe0\x19\xa7\x8fI@\x91a!\xd4\xcf\x03\xb2\xc9u\
+\xe4>\xa0A\xd0(.\xc5\xc78/\xb2\x8a\x98n\x22\
+\xa4\x8b\x8d\x8f\xeb\xa9\xf7\xeb\x9d\x1e\xfcG\xe9L\xfeX\
+j\xfe\xdb\xc8\x97\x5c\x9d\x10_\xb8 \x89\x14\xbaB\xa6\
+\x9d\x22*\x7f\xe3\x89\x8f\xab\x937\xd6\xe7\x13\x92\xe5\x85\
+\xf9+\xb2}b\x06\x8a\xc4\x11\xaa\xbc\xec\xd4P\xdf\x1f\
+\xfcNj\xccPPq'\x10\x22\x8a\xbao\xff\xd55\
+\x0c\x10ud\xd4\x01\xe6\x08\x07\x09\x1b\xb2\x90\xe5\xee\x0c\
+\x8b\xa6\x82\xcc\xf3\xe0\x1d\x02\x18\x13*\xb0];A\xaa\
+\xa1n\xb7\x85?/# <W\x00\x1d\xfc^f\xc3\
+A\xb4\xd5\xf9\xf4\xcf\xc3\xf2\xd1L\x19\xc0\x87\x8b\xad\xe1\
+\xd7.\x0a\xac\xfb;#^\x22\xaa\x9d\xffY\x08\xb0#\
+\xf5\xccj\x89\x22\xe8\xcc\x06\x0e2\x10t\x0a<\xf6\x0b\
+\x9e\x03\x9e\xbf>@\xf5f\xed[<\xb7\xdc\x0f\xb4\x0b\
+\xb8\xffb\x96x\xe7\x1e\xdb(\xd6\x1d\xef\x83\x8e0\xb6\
+F\xea\xe88b\xad}\xc6?\xa7\x18\x03N\xf1\xe5\xba\
+sP\xa0>\x0cr\xcc\x01\xc4\x8c\x1e\xd4miXP\
+`\x0d\xfe&\x7f{\x18\x0c\x008\xfb\x95h\x80\x05\xa2\
+\x7f:h\x9cQ#\xdb?\x1f=Bl\x08@\x82\xcf\
+\x83=\x10\x8c\x0d\xd9\xfe\xd1Q\xcc\xc5Y\xe9<\x96O\
+5\xb7\x983\x7f)\x1a\x1eE\x1c\xc9\x13\x04:\xe1\x02\
+\x94\xdc\xe6\x0c_j\xf9\x7f3\xc3Na\xca\xaciY\
+g\xcb6[\xbfb\xaf9\xa7|\xc0\xef\x0a\xf7\x89\xce\
+1\xeb\x19\xc0\x8c\xf5\x00\x02\xaf\xe7\x82\x0e\xabi\xca\x9b\
+\xaa<\xa3:\xe9\x12\x8bF%N\x0fY\xe4\x02\xe05\
+\x8b\xfc\xfe\xaf\xb5hb\x9fnC\x8a\x9d\x0f\xe2`7\
+\xe6\xb8I*\xf6_\x0d\xebG\xd7\xdfU\x83\xb5\x1e\xd3\
+\xa5\xe9\xb2tY\xd9w\xca>\xc5\x8ce\xba\xab\x8a\xda\
+y\x82\x88\x0b\x89\xdc!\x10\x11Mo\xb7(vr9\
+\xda\xba\x1b\xdd4\xba\xc9\x18Dv\xf7\xd2sAtO\
+\xda/.\x82\x87\xd6\x841\x14\x9e\x16\xa5\xf0\xd0\xd6Y\
+\x85\xca\xc9\xa8@\xda\xd5\x22\x7f\xfdt\xfa\xbe\xeb\xd5\xb1\
+\xbd\xa8\x02\xb6hT0c\xee\xa3J\x9a\xb5O7X\
+\x14\x86J\xd9G|\x86[\x22\x98~\x9e\xae\xaa\x99\xc8\
+\x95U(\x7fN\xfe\xf4C\xcd6+At\x06\x04\x9d\
+;f\x92\x11\xaf\x95\x9b\xc0p?\x8b\x90`\xa2\x0a\xae\
+\xe7\x11\xea;\x1a\x0f\xee*\xb0\xb1\x85\xdc'\x1ej\xeb\
+\xccN?\xeb\x8c\x97B7'\xc2\xa3Ss|#$\
+rP\x86\xed\xa7\x7f\xa8u\x96\xd0\xbaI7[\x04\xc6\
+\x0fR-\xbbW\x11Mwa\xc2>Q\xd7\xb5\xaf\xcd\
+\xe2\x1a50\xeeH\x88\xf5\x1c\xa4\xafY\x84\x11>\xb9\
+\x0a\xa4\xcd-\xf2\x9f7\x93V\x80\x0a\x90\xe1m\x16\xad\
+c\xd4\xbdl\x91_o\xb0\x08\xaa\xdb\x00\x02\x14T$\
+\xde\x00l\xb2\xb7L\xdf\xb7h\xae\x0f\xb9L\xaf\x1dq\
+\xdc^\xfe\xad\x8e\x1c\xccH5$P\x85\x1f\xbd\x9c\xe3\
+%\x15\xe4/\x141\xc6\xd9\x8b\x18\xa3\x8d\xa6\xe4\xf77\
+\xba\xd6\x22\xbf\x1ee\x11\xecU\xe9\xa0\xc2pc\xe4I\
+y`\x11\x8d\xb5\x06\xc1\xcc\x16\xa2XOm\xa3_\x0e\
+\x00\x5cR)\xfd\xa3\x8d,\x1a@\xe0\x05\x8e\xfc\xe3\xdd\
+~\xf3\xe3\x16a\x84\x0a B\x05\x15\x89\xbc\x17\xe2\xe4\
+\x05h\x8bP \xabS\x8d\xa8\x18\x8c-\x5c\x87\x1c8\
+\xe6\xf7\xb0\xfe\xd1\x9eQ\xfeU\x1a\x0c\x8f6-\x90b\
+\xaf\xf6\x93 \x92\xfc\x8cE\x03\x18\x00ZK\xd6\xb3h\
+\xdd\x0f\x0a@\x85\x18\xa9f\xe3\xfd\xfe\xd1h\x10\xf3\x8d\
+\xf7?\xde7\xc7\xa7\x1a\xf3\xcc\xc5\xf8d#\xc9\xf9:\
+\xfc\xcc\xf0\xe0\xe1\xc1m\x06\xbb\xfbH\xb7S\x97\xf7\x9d\
+\xd1\xf6\xa3\x1dF\xdb\xe7\xd7dQ\x80\x80wuuF\
+\xbd\x00+\x85YrB\x03D\xc8\x8bp_\xa2A\xe3\
+\x89\x0c\xd4|\xa9\xfb\xfbsJ\x83BL g,i\
+\xd4\xca\xf3\x07\x00h=\xd7\xe9\xad\x16\xa1q w!\
+\x17\xe1E\x5c\x91\xfdB6\xb50\x7f\xdd\xedI\xd7\x1f\
+\xca6\xc0\x9a\x8b\x0d\xf2\xbe\xfb\x05\xb1\xf6\x07\xef\xb0c\
+o\xa9FU\xf7\x8c\x85\xce\xcfS\x02\xc3KZS\xde\
+\xf8\xa4.cD\x13\xc6\x1fb\xd9\xd8\x15J[\xc4\xed\
+Ea~0\xfa\x06\xb3@\xa3\x18\xfe\xef4(`\x9a\
+\xc0\xeccD\x11\x97*F\xfbX\xd7\x8c\xa0\x8aQ\xe4\
+*\xf6\xda\xe7\x06\x9f\xb0\x08\xcf\x91\x00b\x18\xb9}\x17\
+\x832\xaa\xb1YiL\x14\xa6\xa4\xd7K\xd8\xcd\x92/\
+\xf65\xcf\xc8\x97\xb1\xc54\xd1\xd2/\x14\x0d\x87SM\
+#\x87\xe7\x1f\x06%\x22\x8d6`VF\xcc\x00\x0e\x04\
+\xe4\x226\xe8n\x12\xd4\xa30\x01\xf8\xfc4<\xd5\xb8\
+D#\x0a-\xa6\xbe\xb6\x9a\xffG\x83\x95\x86/\x801\
+\x9f\x17&\x0c\xf7\x01`b\x0d\xd5sj4O\x96\x89\
+\x89\xff\x93\xdf\xe0\xf5\xe1\x02a\x07H\xe1\xde\xf3W,\
+x\xc4Z!\xf1\x05\x00\xc8\xe5\xfa\x00u\xfee\x9b\x8d\
+\x9f\x17\xf80\x0dZ\xa7\xbav`y\xa5\xa0\xef\xbfR\
+\xa8\xf6l\xfb\xa6\xf9\xfd,\xf8>`@A\x1d)\x98\
+\x0b\x85\xd9E\x0a(>\x1f\xc0\x03\x88\xca\x8b\x8e8U\
+\x04h\x1e\xbd\xff\xbeV\x00\xea\xe4\xcc\xe83s\xcf\xfb\
+\xe4\xfd\xf1\xf9\xfb\xef\x0f\x06\x00\xc0\x00\x88\xd3\xcb\xfa\xfd\
+\x14T,\xa4\xbe\xaa&\x89\x01\x14\x17\x16:_7t\
+\xa6E\x05\x0a\x00$\xfe\xa9\x9f\xcb\xef\xe5}\x00\x1c4\
+@\xa2\x02\x0a0(\xe6P\xa2\x05\x13\x83\xfb\x08`\x01\
+\x95v\x0e\xdd/\x90(l9@\x9cq\x09\xa0\xf3\x09\
+U\xed*!\xeb\x8f\xc8^m\xceJ\xfduq-\x89\
+\xac\x8d\x1fp[\x97\xaa\xfa\xba\xbb\x90T6>D\xa5\
+t@\xb9\x88\xcb^\x9aI\x15\xc0`i\xba%\xeaP\
+\x8c\x99mt\xb1%u\xaesZPD\x99\xa6Y7\
+P\x85\xb9~\xbf\x16\x05j\xde\x9a\xe8\xf8\x8c\xfe:\x12\
+KTg<\xaf\x96J\xc5F4\xaf\xe7\xd7\xe9\xb3^\
+\xeaD\xe2\xd7\xce:B]\x9c\xc4\x1fq>\x128T\
+\x939\xd0\xa1v:BJ\xc2\xc2\xcc\x16\xeb\x9e\x8d\x89\
+\x99$\xee\x13\xb3IP\xf0)\xec\xa1^\x09\x11w\x11\
+Jm@\x06\x9b\x15\xe0\x0c\xb15\xae'\xd4Q\x00\x11\
+f\x1b-\xc1\xd8\xb7\x01 \xd8\x90\xb9:>\x94YD\
+\xd8\x98\xf9F\x1c\x91\xc4\xa0\xad\xff\xba\xd1C\x09\xd6\xcc\
+\xa9\x8b\xd7\xf4f\xbb\xbc\xf3K\xc1\x09\x13\xa0?\x0a\x05\
+B\x0bp\xa8\x0d\x9f\xc2\xc4)\x97\xb2]t\xea8\x85\
+\x10\x85J\x8fb\x89\x06\x85\x8b,\x91`0r\x828\
+\xcc\xd1\x16\xe1\xe0\xd1\xfav\xaa\xad\x12!_\xc7h\x0a\
+\xe8\xe7\x8cwVGT\x07.*\xdc\x14\xba\xbe\xdf\x98\
+rB.\x5c\x86\x9b\x0e7\x19\x9a\xe8\xd9\x0e\xdd\x87\xbb\
+\x1d\x02Sf\xa6\xf1,\xe6#\x9e\xcb\x88\x1bK!q\
+\xfa\xc4i6\xd2\xc3\x81\x84\xdf9v~\xa5C\xfbZ\
+SEw\xe0\x8b\x03W\x09\x8b\xfb\xa5o7\xf8P\xf1\
+\x81Gd\x92u\xaa\x02\x16`\xcb)t\xd8\xe9\xe8\xa0\
+\x06\xd0J\x17Z\xe4\xd7O\xd6\x8e6\x22\x82\xa3[-\
+\xf2\xfb\xff\xb0>\x17\x9dP\xa3\x14\xaf/[\xaf\xe7\x1b\
+\x15\xb4|\xdf\x8d\x8d\xd9\xe3\xcf\x01\xe2K\xcc\x90\xa3:\
+\x7fb\xedP\xf9\xf9\xa5\xd1\x04\x00\xa2t\xa6E\xb3\x0b\
+u\xe6\x8d\x12\xc5\xe1\x1d\x16\xc5\xe61Gs7(\x1a\
+&\x97\x89\x91\xf1\xa50S-\xc6OI\xd8\xed:\xde\
+j\x91\x7f\xce\xae9vQ\xe7\xec\x82\x96\xc0\x97\xc2\xff\
+c\xf9\xdf7\x1cn4\xdc\xa8u\xbe\x06\xb3Z\x14@\
+\xb7\xda\x12\x02\xc4\x9e\x5c\x0bp\x0aP\x80\xc3\xb4LZ\
+:-]\xd4\xd6+sd\x8d\xaa\x12\x0f\x03\x0c\xe0\xd5\
+\xa9\xc1J\xac\xd3\xa6\x16a\x84A\xcc\x05\x7fnX\xf7\
+\x00\xf1PbQ\x87G\x9b\x06\xc0N\x1dY:\x8b\x83\
+\xbfY4\xfbL\x07~\x99\xc5\xd7\xe8\x08\x00b\x11\xf7\
+\xdb\xa4ilx\xe7Gb\xa0\xddy\x16a\xe4\xcd\x98\
+A\xaf6\xe6HZ\xd1\x22\x9c\xf3\x02\x8aqK\x00\xd8\
+q\x0a\xb94\x08\xdcu\x06\x11<\xa3\xce\x1f\x1a(\xe1\
+\x88\xd2\xed\xdf\xed\xd7\xed\xd7Fy\xd2\xcd\xe9\x96tK\
+\xd1\x00\xd9*mU~\xfe\xeai\xf5f;\xe8\xa2\xab\
+\xda'\x1c\x90\xc6]\x00M\x1b\x80\xf8\x17\xea\xe8A\x11\
+\x91<\xb2\x01[\x14F\xe9z\x8b\xc6\xd8\x80\x99\x96\xcb\
+\xb3:\xaa\xc4(\x22\x9d4\xce\x0b\x15\xe0n\x83+\x91\
+\xbc\xf4\x0e\x8b\xbc\xfe^\xca\xf1\xa2\xa8\xc7\xa6\xc9\xb3n\
+\x8eu\xa4Uc\x80\xc5\x7f-\x82z>@\x90D&\
+]\x94\x0c\xc6\x8e\xc1/\xeb\xc9\xee\xf6\x9ef\xcf7\xda\
+\xcf\x22\xff\xf9\xe7\x16M\x83(=h\x11F0`\xf0\
+0\xbb\x8c\x9a<\x89=\x9df\x00z\x00\x5c18\x5c\
+\xed\x7fi\x8b\xc0\xf0<\xb8\xe6\x03\x83\xdf\xa8\x83\xcc\xf5\
+Q\x01bYF\xc93\xc8\xe7\xd8\xe7\x18\x11`\xb6\xde\
+\xca\xca\x1f\x06\x06\xa6eQ?\x09\xae9\xd8J\x02\xb4\
+K<\x94\x91)o\xfc\xa0\xb9\xc4\x0c9\xf9\xf7o*\
+\xa5\xdf\xf3]F\xe6,\xdb|4\xb8\x85!^\xads\
+\xcf\xc57\x0f)\x06\x95U+\xc9\xb4+\x8e\xeb\x8e\xef\
+\x8e\xcf\xd7\xff)\x8b\xfc\xe7\xcfu\x87t\xf99\xefV\
+\xb1\xc8\xaf\x9f\xb0\x08\xae\x0b\xb2\x15\x841\xea\x1dl\x18\
+\x8bP\xd4\x19\xb9\x83\x19\x83m,\x1dW\xe5\x974\x8c\
+\x9c\xe1\x0c\xd0\x88]\x1f\xfb\xb2\x0a\xed\xc1\xb3\x16m\x06\
+\x9f\xc6^\xfa\x89E\x189\xa6\x81\x08\xe3\x12\x91H\x13\
+\xbf\xfcu`\xbej\x1f\x18\xafd\xd1\x00\x0d\x17\x1dF\
+\x1c\x12\xd1A\x01\x80\xdd\x99\x16\xadS\x9f~-\x80Q\
+\x8c\x80\xee\xa3\x16\x81\x81\x04P\xaf\x82\x13\x1bhoL\
+ \x06MA\xcf\xe8\x1d\x80\x80F\x01\xbc\xc3\x0f\x83Z\
+\xe7+\x9a n\xeb\x08p\x00 \xcfsH\x01O\xa1\
+,f\xa5\x03\x03\xd8\x91\xd3\xf9gt\x01\xa6\x03b\x8d\
+\x00\xe4=[E\x17\x0dT>\xe5\xdaR0T\xd4\x80\
+\xc89Pet\xde\xa3\xc6 \xf9\x16y\xa2\x1a\xb3\x9c\
+;\x007>Jv\x86F54\x82\x09\xa0\xea\xf5\x1c\
+@\x1fu\x1bu\x10\xf5\x19\xf9\x1en\x120\x94\xd5\xe0\
+\xa1\xa3\xef\xa2~\xda\xafq\xb7\xf2\x86\x13\xccLD\x1d\
+%\x0e\xea\x22\xe5\xe4k\x88\x0e2\xda\x8b\xc8\xb9\xea\xbe\
+I\xb7\xff\xb1rwaQ/?\x11(\xfd\xf8`B\
+e\x81\x02J\xe1\xc3\xac\xbf\x0a\xdb\x92~3\x0b\xff\x9f\
+p\x03\x11\x17D\xcc\x0f\x1fc\x0aK\x0aC\xc4\x08)\
+ty}\xa5\x94\xde\xad\xd0\xa4P\x05\xf9\xe0\xef\xe9\xf8\
+\xf7E\x04\xf93\x1dr\x80\x00\x80\x03\x80\x00\x0a\x7f\x0a\
+\xc7y\xd49\x83:\x0f\xb0\x80(\x1f\x07\x1b\x85\x83D\
+\x1c|CEs\x00\x00\xa0\x8f\xdc\xb0\x00\xd9\xe0\x85\xa0\
+\x99\x14S\x11c\xdaB\x80\x0c\x94\x96\x15E\xe1\xe0\xba\
+B\x89\xe9\xd9\x1cr\xa0C\xbd\xf1\x02\x15\xc4\x0c\xfb\x0c\
+\xae\x1b@\x00#\x07\xa8|By\x86\xc2\xe2@\x8c\xec\
+\x8a\x9e\xae\x1du/\xc8\xae\xb7hL\x006\xb2\xc1N\
+\x12\xf1\xe2?\x80\x8a\x9bD%\xa2\x10\xd3\xe7p\xbf\xe4\
+\x15\xaa&\x85S\xd7PG\xa6#\x07\xd2,\x11C\xef\
+\x94\x22\xf6\xc6\xa8\x00\x08#\xf7\xf7\x00\x1d\xa4\x88\x92\xdc\
++\xe4\x91\x03\x06\xe6\x84\x90\xe3\xf1Z\xb2\xb7\x132\x07\
+%\xd2\x115\x1d$\xccT\xf9\x06\xb0O\x9dA\xf6\x0d\
+n\x19\x01E\x123\x19\x1f`\x11\xec\xd3\x0e\x12b\xbf\
+\xd8x\xd1\x222\x85X\xe2\xc5*\x04\x8f\x10\xf5n;\
+\x15p0\x1ct\xdf\x07\x13\x959\x91\xd3\x80\x8a\x18\xff\
+L\x22\x89\x14\x80R\x01v$\x96N\x19\xaf\xa8\xfb\xcb\
+\x17\xd9\x8ee;\x98\xfd\x80c\xb6\x89\x0e\xa3\x5c*\xdc\
+\xf7\x9c\xd9t:v$P$\xd8\xda\xb0\x06\xff\xb4h\
+\xd7\xdb;\x5ct8\x10\x1b\xe2\xf9\xa1\xf0F\xcd\x16\xe4\
+]\xeb\xd8\xc5\x11)\x9c9 \x10u\x02\xe9\x16\xa2\x0b\
+\xf5\xd0\xfdX\xb1uAD\x07J'\x85\x00\xf6m\x88\
+\x98\xbd\xdb\x22\xacw1K\x5cE\x17d\x99\xd1\x00\x18\
+\x0ct\x02\xf9w13H\xb8\xe8\xe8\x0c\x1e\xb7\x08\xd7\
+\x89\xfd\xee[\xb5\xb0\xe4\xef),]\xf4L\x1b=\x85\
+\xb6\x1f\x98\x88\xab\xc9\x87\xd6Gx\xd8\xb7e\xcb\xe6\x1d\
+\x10{*o\x12\xa5z\xd6`\xdf\xa6\x9f_\x00\xe3\x5c\
+\xe0\x0f\xf7\xb6\xd0h\xd4\x1f\xd5\x91\xfb}\x99M+\x80\
+Q\xf7d\x8e'\xd4\xc1\xb8\xb5\x01~\xc3\x0b-Z\xc7\
+\xb2\x00V\xf9\xb9JW\xe4\xb8<\xd8^\xa9\xb3\xe1\xfb\
+\xac=\xa7\xf7\x96\x83\xf4/\x85\xc1\xf0\xfb\xf1\x9d\xe3\xdf\
+\xbf^\x05\xbb\xb8\x81\xe8\xc0w1@\xae\x07\xae#\xa2\
+|b\xdb\x97\x8e\xb6\xc8\xafgY\x04\xdb<\xad\x8b\xd1\
+\xa5\x16A\x1b\xc3\x12\xd3\x93\x82f\x85\x00\xad\xb4\xb8E\
+p{\xa0\xc3\x83_\xb4:\xb3t\xb0\xbd\xd0\x17\xb0\xe3\
+\xda\x06\x8cJ\xc1\xa4\xd2\xbf\xa7\xe9-\x04\xc4\xe5\xfb\x94\
+\x96\xcc\xb1D\xb35K\xfbX\xb4?\xfb\xfe%q)\
+\x17\x1d37\x8d\xbd\x8aH\x5cU\xc9\xb7\x02\xf1w\xe5\
+y8\xc8\x9e\x87\xb4vZ'\xad\xd3F\xe5\x06\xebX\
+\x84\xf5$\xca*\x09\x9d\xfb\xb5\xc3\xa0\x92=\x5c\xfaq\
+\xfaQ\xfaQ\xd0\xf4\x90\x0b\x03\xcf!\x9dT\xb7q\xd4\
+\xf3\xe7\xa2\x8f4\x0e\xc4 \x02\x10\x05\xd0\xed\xd6\xb0\x08\
+\xe7\x92:y\x0e\xac\xa2Q\x80F\x09\xcc+\xceM%\
+X\xe9\x0c\x8b\x22n\x98\xa3\xa9\xef{\x9ep\xee\xc4w\
+\xcaL\xb5\x80IF\xc8\x109D;\xa0\xb8\x1e\xe4\x84\
+wx\xaaE\xfe\xfb\xa3,\xda\x88\x81\x8b\x182\xb2\xc2\
+\xe8\x8dD\xbd\xf0\xa9vJ\xae\x0a\xc9\xf2\x1c\xd9\xfd=\
+\xdb\xa2\xed#>\xf2\x82\xf8\xae:\xc3\xe9\xb0\x0a\x18\xa4\
+\x0d,\xc4\xa8\xf9CH\xc8\x11\xbf\xd2H_\xb7r-\
+\xbc\xdc\x95An+NIU\x82\x89\x0b\x05\xf7m\xf8\
+6\x8b\xa0\x9e.\xf5j:\xa8t|\xdd\xe5\x86\xd9z\
+\x8d\x0euo\xb5\xc8?\xef\xf4\x1c\xdfT\xe7\x7f\xf6\xc2\
+\x8c\xc9\xd1FL\xb0\x03\x1c\xaf\x9dc\x9d\xf6|\x8ef\
+\xb5\x90\xcd\xe6\x16!\xef\xa2\xd1B\xc2m\xa7\xdb\x9bZ\
+\x02]\x00\x85|~u\xbbY\xb4\x02`x\xa4E\xd1\
+\xba\xc8\x11\xf2\xaa\xde\xf9H>XF\x99\xae\x0a\xff\xce\
+\x0c\xb5|\xe9\xfd}Q83\x1a\x88\x88\xae\xf2\xbb\xf1\
+\xc1\x15\xc8\xf2\x99l\xdd/\xa7^\xcb\x16\xb8\xfb\xb1E\
+\xd0LB\x9b\x07-\x07\x98\x92r\xf3rj\xb9\x5c\x8c\
+\xfc\xcf\xf8\xb3#\x9eL\xe3\x00\xd17\xf2B\x0a\x09\x00\
+u\x1ag\x88\x1aj?\xf1\xd1\x0c\x03\xe0\x8e\x08\x22\x9e\
+Z\xc7\x00\x1a\xa3\x0bF\x17\x8eLKa)\x8b\xfc\xfa\
+C34\x0cZ\x12\xd2^\xe2\x9c\xa0\x81\xe1\xa2\xbf\xd8\
+j\x0b\x98,\xf6\x91g\xbe\x81m\x1f\xf5\x04\xcc1\xee\
+\x0b*\xfa\x12/t\xa0\x8b\xfcF\x1dz\x1fa\xa2\xc0\
+W\xfe\x96\xb6\xb7\x08\xfb\xd7\xb8\x96\x13\x8c\xac\xf9L;\
+\xf6\xc6\x88\x98j\x7f\xeck~a\xb7\xe9ZK\x88\x5c\
+K[\x8a\x11\x1b\x1a\x1d\xc3\xe5,\x02p\xc0\x8f\xfb\xa9\
+E\x00X5\xe2\xe8\xa2\x83\xfa9\x9e\x870\x12\x85\x9d\
+ \xf9\x17\x8d\x08\xfe\x03\xe8\xa13\xaf_\xe8u\x01b\
+\xc8\x00(4\x18p\xdd8\xcb\x22<\x1f4^$:\
+\xe8b\x84\xeaT{c\x05&V\xdf\x0e\x9a\xd9w\xc4\
+\x12\xc50\x80\x99\xc9:s\x00\x82\x06\xc0\xdd\x16\x85!\
+X5\x0a\xe8\x8c#F\x8c\xfd!\x0cI4\x5c\x10\xaf\
+\x85\xd1\xb9\xb2\xf6\x97\x19U\xb7\xc2\x88\xa2\xc0\xe7?\xea\
+9\xea\x1c\x98\xa5j\x049\x93\x11\xe63\x05?\xf9\x17\
+\xff\xa1%\x05#\x82:\x02\x97/\x8d\xe6x#\x0f\x97\
+\x03\xea)\xec\x199G\xb9\x8ej\xc0N\x82\x9c\xfa\xc2\
+\x80Z\xc4\xc6\xff\x88EH@\xa1,\xb0\xc1>[\xa6\
+2\x9b\xef\xa5Q[\xee\x0a#\x04\xf8\xad+\xb1\xf17\
+\x02\xb3\x00\xbb$\x0aP\xfd\x1e\xfc\xcd}\x94\x80\x07\x1a\
+\xc0\x81\x0b\xffR\xf5\xfd\x9df&\xa4\x0f\x14\xf0\xf7$\
+\xde\xbc\xf6U$gPGM\x1d\x8f\xbci\xbf\xde\x1f\
+\x92\x0e\x1f\x1d\x7f\x901\x0a{\x98\x12\xbc\x1f\x0au\x90\
+!\xfe\x8c8\x09\x14\x5c\xc4\x22x\xbf\xcc*\xdd&\x84\
+lk\xf9\x86K\xb4/_\x9dbG\xe1Z\x04|^\
+n0\xb61\x12\xb7\x1al\x5c\x0b\x16/\xec\xe5S\xee\
+3>P\xf3\xf8\x8f\x0e\x95\xc4\x01]\xbcH\x1d4\xae\
+g\xdeN\x8bz|.\xd2j\xa7\x1f@\x86W\x80\x06\
+\x12\x8e'\x04@\xf0\x00p\xdf\xfb\x0f\x906\x0c\x93\x16\
++\xe2b$x z\x8c`,$\xa6\x05#\x1d\xba\
+/n7\xc7\x06\xc5z\x05\xb8\xb9W~\xc5\x8c\x0e\xa0\
+V<\xa3E\x13#\x84\x82\xd6Mo\x91_\xdf\xa5Y\
+@\x0e6u0\xfc~\xcf\xa5\xd9S:~t\xa4\xa0\
+\x84I,-?U\x7f\x1d\xff5P}\xee\x92?'\
+\x8c\x8b\xc9\x1eS\x03\x91\x18Q\xc2\xf2O\xaf\x1b$\xe2\
+.\x12i\x1b\xef,\x91B:\xec\xf8\xc7\x92\xb8j\xb9\
+\xfb\xfd\x86\x1a\xa7\xd7\xee:\x8b\xe0S\xcf\x81\xab\x0e\x08\
+\x85S\x7fv\xd7;\xb20\x04H\xd8\xd9@\xe9\x98\xd0\
+\xc1G\x95_6\x7f\x14ftL\x98\xcd\xf5\x0e\x04\xbe\
+\xe9t\xba\x99\xf5\xe7y\xb2\x89\xec\xbb\xc3\xcc\x22\x94s\
+(d\x00\x89h|\x90\xd8p\x82\x92\xe8ac\xc8\xef\
+\xe7\xbac?\xa8\xce4\x9a\x05\xfe\xfe\x98\xf5\xc4F\x09\
+\xed\x00\x10\xe99-\xc2\xac\x1a\xb3\xcah94@\xac\
+\xce\x9e#j'\x9fx\x7f\x8e\xe8\xd4\xcei\xd1\x18'\
+9\xed+bX\xfe\xbe\xd4\xf9B\x8c\xd1;\x9d\x003\
+\xe7\xea $\xb1b\xdf`t\xe5\x83\x13\xdb\x16\x80I\
+\xd7\xdd\x01\x19\xcd\xa0\xa7wZ\x84}\x0a\xffh~\xbe\
+\x90\xf1\xa2b\xffR\x10\xb7\xd2\xe5\x1e\xcdb\xd1:o\
+\xe9\xc5\x1c\xff\x12\xd0\xb8\xa1\xd4\xc7?\xac\xfb\x9b\xf7\xcd\
+\xb4\x9fE\x10'U'\xc5\x0b{\xbdO\x12o\xa8\xf2\
+\x0e\xf8\xe0\x9f\x8bj\xb5\xf6kf1Id'\xff`\
+\xd1:o0@\xd2O-\xda:\x1fM\xb1\x08~\xf3\
+0\x1aT\xb8\xba\xb8\xe2\x9fkB\xe7be\x9a\x01w\
+\xa0F\x22]\xe9a\x8b7\xa0\x8cCee\xa6\x1d\x97\
+\x07+\x04\xcfi\x1d\xe4R@\x9d\xd6f\xe2\x0b\xf5\xff\
+\x12Q\xeeon\xd7\x8f\xfb3|\xc0\x0c\xed\x82\x9a\xf8\
+\xab\xea\x5c\x0b0v-\x0e(\xa9\x8cB\x00\xf8\x1dQ\
+\xf7\xb5t\xa3E\xd1\x80\xa9\x85\xbf\xd6k~\x97E\xa5\
+\xdf\xed\xf8\xa6\xb7hZ1\xfes\xa0\x1ck\xb6\xd1\x81\
+-F\x8f\xd0\x00\xd1\xfd\xf2\x8e\xf39\x16\xf9>\xcfh\
+\x91_7\xb1\x08\x22\xb4\x12\x97\xf5\x91\x16\xb4X\xfec\
+\x11\xdc'\xf4~\xd3\xfc\x16\xad\x03\xed\xfb#@=\x9a\
+)&\xba\xb4[K\xec\x87\x8f\xe4\xf8Kp\xb1@M\
+\x1b\xd1M\x98D\x8bV@\x97\xce\x1a\x1dy\x07\x10q\
+\xd9\xd8\xf6\xf5\xaa\xfaN\xd9_\xc2\xa2\x8d\x16\xd0Y5\
+\xc2t\xb1\xb9D;F\x80%\xa3\x1f\xc3\xafY\xb4\x0e\
+\x92'\xfe\x02\xde\xba=,\xc2\x88\xe4\xbduF}x\
+\xe1\xf0\x22\x03\xe8&\x96\x99X\xca\x80\xea\xd1^\x16\xc1\
+\x8e\xf1\x05\x8b\xfcu\xe5\xbf\x06\xd89\x10\x0b\x13R\x1a\
+\x08\xe4{<O\xa3_Z\xe4\xdf\x7f\x8fE\xfe\xf3\x13\
+\xa3\xc7G\x8f\xe9\xfb?\xde\xec\x09)x\x11I-\xe7\
+\xd3\xb1\xc1\xe6\x8b\x0e.\xa3\x97\x00(\xd8\xbd\xd1QT\
+\xa1\xe8\x22\xc3\xd2|\xc2\x068\xado\x91?\xcf=\x16\
+\xa1@\xa4\xd0\xa2\x91\x01#Ebn>\xe2\xa9\xd12\
+/\xd0aX\xe1\xbbM\x9eH\x81\x0aP\x09#\x8e}\
+\x8c}\x18f\xdc\x1c9\xe6\x94\x06\xc5\xb7\xc2L7n\
+L\xea\x18;0\x8f\x8f\xfc\xaf-\xc4\xf4\xd8K\x9d\xe0\
+\xcb\xc3\xc8\x9b\x01\xbc7\xb4\x02\x83\xe7\xa1\x949\x1ft\
+\xa9\xeb\xd60\xe1\xbc\xfe\x8aE\x98=\xc6\xb5b{\x8b\
+\xfc\xf9\xcf\xee\xce\xe9\xcen\xbf?g\xaf\xb7Y\xfe\xda\
+\x1dg\x91_\xef\xed\xee\xeb\xee-\x8d\x85\xe2\x8a\xd4\xfd\
+\xcb\xa2\x00\x08\xe5\xfe\x8e?'\x95\x7f4\xa1\xc8\xd3\x99\
+\x85\x86\x0a\x8d\xcb\x91\xf2\x1c\x00}\x1f\x99\xa3^\x80\xf1\
+G\xfeA\x9eL\xc3\x0e\x1fw\x80C\xd6\xc3\xdd\x16M\
+C&}\xd6\xa20\x9b\x96M\xcb\x96\xf3\xef]\xe9]\
+\x81a\x8b\xca\xfd{42\xb2\x85\xde/\xd4\xebk,\
+\xa6u;r7+\x89\xd5\xc2xt\x11N\x80l\x89\
+\xff\xfa:\x06H\xc2\xce\x14 \x0a\xe0\x0d\xf1j\xed;\
+0O\x5c\x1cW\xdd\xfao\x07\x00\x00 \x00IDA\
+T\xcfA_\xed\x1f\xe0\x00\x80\xdf\x99\x97\xca3\x1cp\
+Q\x83\xcd\xc5\x02i\x94\xf0\xdc\xc1dE\x14\x16q7\
+\x18\xd1\xfc\x85\x185>\x0a)\xa0\xd6\xeb\x02:\xda\xe4\
+Y\x8c\x1c\xd0ha\xa4\x15\xbbg4\xbc\xb8\xefP\xe2\
+a\x8c\xc1$aT\x93<B\x007\xc0\xa47\x84\xa9\
+\x17`>\xbcS\xf5\x0f\xae\x13\xf7\x1b\xf780\xa8\xf9\
+\x5c\xd4\x814t\xe52\xe6\x0c6\xb4\xcaxe\x04\x85\
+Q\x0b\xf2f\xf2T\xd6\x0b\xef\xaf\xef.@\x1eL~\
+\xab\xe7\xdc\x1b\xb74\xeci\x80\xe3\x02P\x1e\xe3\x8d\xa4\
+b\xf9\x96\xb0@\xa1\x922\xc3\x0d\x85\x96N6T\x1b\
+\x0a3n\x18\x17>\xaa\xe4O\xb6\x05\xe5o\x0cM\x01\
+\x12ofM\xedc\xce\x13~\x1e.\x00}\xaa\x06\x05\
+\xd2\x94\xd2\xcb\xaa\x05\xfc\xf4\xe1\xc2\xf3\xa0\xd3\x89\xd5\xfb\
+\x9ff6\x9f\x07\x98\x02\x9d\x0b\xfd\x9c\xc4\x1bH\xe4\xf8\
+\x5c}\xb7\x00:\xea\xcc\xa6@\xc1\x82\x0a\x05#\x80\x8d\
+\x9d\xc2\x9a\xf7\xaf\xc4\xc6\xa90P\xcdXx\xf7\x09q\
+\x86\xa2\x0c\x02\xcb\x0c\x0fH\x1cj\xb2}w\x02(^\
+C\xa9\x9b\xb2\x00\xa0\xa6P\xc8k\xe6\xcc\xaf\x0b\x9f\xef\
+)=p\x14(P\x98\xb8o\x93\xba.\x14\xae\x5c'\
+>/\x88\xe1\xd3\xe3\x7f\x8c\xff\x11\x00\x1d\x00#(|\
+\xb2M\x19\xcc%1\x1b\x90|6\x004\x076\xb3\x08\
+\x07\x193\xf8\x1c\xb0\x5cw\x00\x95\x0f\xea\xdfy\x80\xd5\
+\x81\xce\xc5iu\x1fP\xc7x<\xa8\x1d\x18\x90\xe9B\
+}\xbe\xb1\xd9\x1d1k\xd5\xad\xa9\x8e\xd3\x92\xa2\xaao\
+ qD\xc4\x10E\xcdw\x11.\xc4\x97\xe4\x0f\x8f\xc8\
+\x10\x0f\xaa\x8b\x02}_3f\xa8g\xaf\x90\x96O\xcb\
+\x97\x0d\xae\xda\xeb@1\xdcM\x85)\xaa\xb5\x88\x89\xd1\
+1\xd5,\xf7\xc4Oj\xa1\xed\x0c\x10f\x89(TQ\
+MFLD\xeb\x80\x0e\x18\xfe\xc1\xeeW/D\x1c\xf1\
+\x1d\x0a'/T\xf0E\xa5\xb0e\x06\x89\x83\x9b\x8d\x1f\
+D^*\xa5\x14l~P\x22rD\x87\x1e*!\xa3\
+\x10 \xed\xac3\x10\xe27\x15U\x80\xa6Y\x82\xcd\x11\
+\x05;\x85-\x1b>Z\x15\x88\xe7\xf1<\xf2|\xb1\xc1\
+\xa2\xae\xcb\xfb\x04\x09\x86b\x0cE\x1f\xb10D{d\
+3\xe3\xc8\xae\x80\x1e\xa8\xe2}F\x80#\xbb\xa8\xe0\xd3\
+qa\x1f\xa6\x80\x5cI.-O\xab\xc0\xb8\xa1\xce\x8a\
+{!\x85\xf4\x87\x9e\xfb4\xb3E\xe8\xd8\xeeW;7\
+\xdc\x07\xf7{\xc7NO\xf7\xbd(\xc1\xe0\xd7\xfc\xce\xd6\
+As \x0d\xd5u\x012\x0et\xd1\x19\xa2\xb0\x16\x00\
+C\x87\xc8\x08\xcbFY&\x01q\x91+\x0a\x05\xddO\
+fs\xcbs\x93\xaf\xcb\xe4\xa9\x16\xf9\xb6\xbfl\x11\x80\
+\x16FQ\xa0<\x02\xf80\xfb\x09\x05\x18\x86\x00\x094\
+\xebA\xfb\x9cw\xde%V\xe5\xe2x<Wg[L\
++zD\xe2\xcb\xec\xb3k3\xd0\xa1\x82\xb2'\x800\
+}\xc4\x22hl(\x81OO[\xe4\xd7\x97,\x82\xeb\
+\x02\xd4\xc3\xbd\xca\xb0\xd2\xc4x\x9f\x1c\x96 .\x99c\
+\x89f#\xca\xec?\xc0\x10\x80E\xfa\x9b\x85\xdc\x18\x8e\
++bmK\x9aX\x9b\x8f@\x94\xe1\xdb\xa65\xe0\xd4\
+\xf5\x81:[_\xa8\x94\xe8\xf1=\x95\x02\xef\xe7\x14\x8c\
+\x83\x8b,\xda(\xc5`\x97Z8q\xbe\xc3\xac\xc0\x86\
+\xd2\xd5\xfe\x01\x22\xe94\x0b\x18\xf1\x84Q\xfbN\x01\x86\
+^l\xfe\xc7\xae\x09\xb3\x9b\xdc \xce\xb7\x08\x9dg\xf6\
+\x19\xe5\x0f|\xbeB\xfc\xbdT\x85\xd5\xa9\xad\x13\x9d\xbe\
+h\xd1\x1806Aj\xe7K\xda\xd9\x22\xcc\xd8?f\
+\x11\x984vU\x8enb\x81fFhv\x84\xc3E\
+,\x82\xc8\xde)9l\xe4\xeat1\xd0v\x16p\xf9\
+\x81\x12\xf6\xfd'\x17\xb1\xc1krz}M\x1b5\xc0\
+\xd6\x11`\xc2\x0boiZ\xf8\xec\xb2\x80\xcd\xf4\x1d\x8b\
+v}\xcb\x88\x87\xcd\x94\x9fk\xd1\xce\x19\x0a\xd9\xeeR\
+\x8b\xa6\x0a\x9e~fQ\x0a\xe3n\xdc\x05Um\x89f\
+u_\xe9\xf6\xec\xbeRl\x0cs\xe4\x9f?\xd5\x22\xff\
+y)\x8b\xf6y\xc6\xd3Y\x04M\x88\xfb\xf5{5\xb2\
+\xe2\x1dO\x8d|u?\xeb\xae\xec\xae\xcc\xe9\xddA\x16\
+\xf9u\xa9\x1cy}\x8e6\xb4P\x03`\xdb6\xc3\xef\
+v\xb3\xf7Z\xe4\xdf\xff~\x8b\xc0T\xa5p\xd2\xefq\
+@\x1a&\x00\xe7\x01\x89\xb8\x00\x96t\xa7ES\xedg\
+\xdf\xf5\xfc\x0em\x07\x0a9\x1a>\xe4}\x88\x95b\xef\
+\xcb\xbeOG\x95\xbc\x89\x82\x84\xfc\x0c\xb5z\xdc|`\
+\x18\x1ea\x11\x0asF\x07\xc9\xab\xd0\x1ca\xfd\x1dc\
+\xd1\xc4\xcb\xc8C\xdcN\x98\x91\xca\x0d-B\xa3\xed~\
+\x8dNJ\x94\x93\x11\x0b?\xd7u\x0e\xb9\xd8/y8\
+\x1a2\x14\xb0\x889\xabS=\xfa\xc0h\xeb\xd1\x07\x82\
+\xf6\x82\x8d\xea\x1c\x1c\xb4&\xe4&\xd1\x9dmQ(\xe2\
+\xb5c\x8a\xdb\x8f\x001\x07x8\xe7\xe9\x00#F\x87\
+X0\xa3\x06\x8ch\xc0\x1c\xe4\xeb\xb7\xb3\x08\xf9$\xf5\
+\x8c\xd6\x8d\xef\xc3\xb2\xe3K\x9f\xb0h\xf9P\xda3\xed\
+\x95\xf6*Z\x069\x82\xad\xde\xa4\xc5\xb4y(\xb3\xf4\
+^\x08\x038#\x0e'{\xd7\xc1\x1f-B\xbe\xc4(\
+!\x0dR\x00#\xce1\xf2'\xd6\xd1\x87*\x80\xc3\x08\
+\x1d\x80\xd2\xc4N%\xda\xf9\x80\x88,\x80\xbdl-\xd9\
+O}$E\xf9\x8ek\x94)\xaf\xf3\xc2\x93\x8e\xb44\
+K\x1c\x08\x22\xaf\x82\xb1\x22\x06\x87\x03F\xbc_\xb4\xab\
+p\xbd\x80\x99\xc6u\xa0!\xc1\xc8\x00u\x0f\x8d\x1d\x5c\
+\x90\xd0\xe8B\x9b\x84\xbc\x0c-.\x1a\xa9\xcc\xda\xeb\xfb\
+\xdd\xce\x11\xd7\x1f\xf2\x04\x00[5\xbe\xc6\x7fS\x83N\
+u\x8d\xab\xff\xf3\x5c0\xca\xf0d\xce\xe2\x9f,\x7f\xae\
+\xef\x9bF\x8d\x18\x13\x88\x94\xbbx/\x8d\x0a4\xd0`\
+\x22\x08\xf0\xf3\xcf\xcf\xf3%\xad\x08\xff\xb9\xdc\x1f\xce\x0f\
+\x1a\x8f\xacsioy}\x8d\xe8.\x00\x00\xf5\xb1~\
+\xfed9\xf8\x16R!\xb1~X\x88v\x19\xdf\x12\x12\
+?\xa9\xa9\xfa\x8d\xfcg\xc1<Zg\x8d7\xf2r\x99\
+V\x8f\xb6vU\x90\x0e&\x00\x89(\xa2&t\xd4\xa3\
+F\xc0\x02\x812be\xe6\x5c\xa1\xb0\xe0\xf7S\xf0G\
+\xc4e\x1c\x0a~\x10\x116\xf0>`\xf1;\xd9\xe1P\
+\x10\xf3~y\x10(\x8c\xef\x91\xba)\xff\xf5\xc4\x16\x0c\
+6)\x0b\x03\x8a*\x00\x05\xbf\x07\x80\x81\x0e8v\x88\
+ ;|N\x0a\x8f\xbe\xe6A\x9f\x82\x06\xe2C\xa1\x8b\
+m#T0\x0acfn\xb9\x9f\xeb\xd5\xc2\x8d\x07v\
+\xf0\x0e\x15\xfas\x0a\xd0\x99_T\xe5\xd5\xf5\xfd\x00\x10\
+0\x04(\xc0\xd8@\xd9\xa0VVa\x09sD\xc88\
+\x85\xa2\x1f\x18 aWK\x85\x94\xebpM~\x1c\xae\
+\x11\xb3a\xe1\xb0q\xaf\xab\xef\x7f\x97\x80\x0b(=l\
+8\x00U\xd8n\xf0\xfba(\xf0\xf5kj\x9d\x01(\
+0\x13\xc3\x88\x00\xb38\x93\xb5\xe3\x80\xb8\x8d\xdb\x05\xed\
+T\xc5j\xba\xb9\xbby\xbay\xda\xe7q\x8d\x07\xcd\xcc\
+\x93\x10S\xa8\xd1\xa1\x86\xb2>\xba\xdc\xa2l\xb8%\xc1\
+\x1c\xdc%\x8a\x9f\x0e\x1e\xa7\x86\xce\xa0N\x19\x9dq\x90\
+\xf7\xe9,\x82\x0f-\xb3\xdf*\x1c\x01,r2Q\x12\
+V\x17\x85\x93\xfb\x82\xcf\x00\xaa\xa0&\x01\x82\xca\xee\x9d\
+>f\xa0P\xc9GE\x1a\xb17\xbeN\xa3\x18\xd3\xb8\
+J\xf0<\x02\xc0\xf1<P8\xc2@\xc1\x8fVb:\
+~\xb0\xc8\x8f\xdb\x11Z%8P\xc9\xfc\xa0G\xfc\x90\
+D\x8c\xe7\x83\x91\x00|q%\xa6\xe63a\x5c\x0f\x0a\
+\xc0\xddJ\xb4\xce0\x22n\x1f\xab\xd4\xef\x89o\xcan\
+\x10\x91Q\x00\x0a\x00\x01f<9\x88p\x01\xa0p\x84\
+\x99!\xb5g\xae?\x85\x87S\x05\xf1\x1fg\x94F\xfe\
+\xcf.\xceH\xc2\xa7D.\x97\xcdu\xe4\xe2_\x16\x8d\
+\x82\x8b\xb8Q\xfe\xf7\xaa\x99\xf1\xb6z\x108\x15\x9a\xfb\
+\x0f\x03G\x07JZ9\xad\x94V.\x9d\x95\x95\xcb\x88\
+\x11\x89\x87\xf6\xf9\x82$o\x1c\xb4\x05\x048\xb8\x08\x0e\
+\xf6IP\xf2Tp\x000\xf0\xfb\xe9\xdc\xa2\xaanD\
+\xf4R\x00\xfelpe\xa1l\xe3\xc6 1\xda\xee\xed\
+\x16\xf9\xf99\xc6B\x89\xccj\x05`\xa9\xb3\xe9\xcfW\
+\x15}\xa7 \x02Hp?I\x9c\xb5_!Z\xe7\xb3\
+\xed\x88\x86I\xd5\x19\x0a\xb2\xcf \x0a\xd0\x18\xeel\x11\
+\xc4\xb9P+\x17Pas7\xa5\xa0\xc5\x96\x11\x9b2\
+\x89\x99\xd29\xc1\xa6h\xf8\x0e\x8b0\xf2!*\xb7\x03\
+7\x14\xf2\xfb\xe7\xd8O.\x0a\xb7*a\xb9>\x00\xd1\
+\x1a\xa9\x03(q\xb1*4\x05\xe6Ls\xa5\xbc\xbfO\
+nk\x91\xff\xbct\x9d\xcdg\x9d;\xc0\xa7\xeb\x95f\
+\xb2\xc8\xef\xef#\xe6\x17P\x0a\xdd\xdaa\xf9G\x9d\x85\
+t\x00\x13@X\xcfO\xfe\xae\xea\xb6\x80\xbb\x0a\xcf/\
+\x89\x15\xeb\xe1[\x16\x01@X\xc0\x22h@\x90\x08\x89\
+\xf2\x88J\xbd3Y>k\x91\xff~\x8d\xf4\xf6\x94\x9f\
+\xff\xd1\xfe\xa3\x03F\xf9\xfe\xa4\x0b,\xc2s-f\x0d\
+\x0c\x02T\xd2\xcbu\x9el#Ai\xf1\xb4XZ\xac\
+\xd8\xa1Vw\x061\xde\x9c\xb2/FGzs\x8e|\
+?\x87{Y\xa8`\xce\x85k\xfa\xab\x85F4\xcei\
+\xc0\x0c\xcc\x8a\xd1s\x16\xb2\x09\xdc\x22\xec\x87h#A\
+\x0d\xbfm\xe2v+\xe8a\xc4p\xae3\xb2\xe5\xb3\xf1\
+?\xb6\x08\x00\xb0\xf2\x18\x07p\x94\xa8\x1a\xbf\xc3\x18\x1e\
+n\xf3\x86\x9d\x98:`\xcc\xee2R\x02\xf3\xc0)\xb2\
+\x1a\xa5\x1b}\xaa\xce\xc8\x03\xb0\x0cO\xb4\x10\xf3\xe1\x91\
+P\xf0BE%\xd1\x84\x0a\xfd\xaa\xce\x01\xc4\xe8\xa4u\
+\x80\xed\xe5h\x95\xd1\xaa#\x9b\xf9\xbe5\xc7-m\xc4\
+\xa0[2\x87Q\xc4\xbf\x9d\xe3\xcc\xe6VSF\x84\xae\
+\x08LT\xad?\x07\xc8\x044\xba\x0d\x1e\x9dQ\xcd\x10\
+; \x09\xf3\x02\x11c\xfe\x9d\x99\xf2\xd3\x0d\xb2\x09\x9d\
+O\x0a=F\xfdT\xb8twX\xb4\xf3\x86Y\x7fw\
+c\x11\x90\x83J>\xfb\xc7x\x05\x8b\xe0\xbe`\xe7\xc3\
+\xb5\xe5\x9c-\x9f\xa7t\xfe\xe7h\x05\xb5\xc1$\x06\x94\
+\xb8j\xb8\x0ayW!W\x01\x0a\x80\xe9\x9dU\x01\x99\
+\xe3\xd5s\xbc\xad\x89\x1b\x96\x81\x81\x9d\xf5\xf3\xd6\x0a\x00\
+\x05\xa3\xba\x9c\xf3\xe4\xe9\xe4\xf7\x14\xe2\xfa|\xec\x07\xdd\
+\x8e\x16\xf9u\xd9n\xb9.\x9f\x7f\xdd^\xdd\x9e\xdd\x9e\
+M\x03\x05\xa6d\xb7\xb4E\x10\x9b\xc4\x9e\x15\x11i\xc4\
+\x86\x19Y%o'\x7fT\xe1\xef\xe7\x18@\x06\xb3\xe7\
+\xd4\x13\xe4\xa7\xea\x90\xfb\xf9\x80\x084\xf6\xa7\x14\x8cP\
+\xa8\x95'\xc0\xd0JOY\xe4\xf5\xbe\xe5p\xab\xe1V\
+\x81\xa9\x013\x08-\xab\xfb\xa4\x11\xf2Q\xe5\x17zu\
+\xc0\x1f\x00\x0a\xe6\x026\xc9\xb2Qv{n\xce{:\
+\xdd\xd4!\x0f\x88\xf1\xab\xbc\x0e1U\xdc\xa8l\xf5\xd8\
+\xfaa\xc4\xa9\xbb\xd7\x22\x00\xa7b\xaa\x8d\x97\xb2\x08\x9d\
+\x7fF\xd5\x00\x8cT\xb02\x12\xe1\xa3\xb7=J\xbc\xdb\
+\x0d\xe2\xf6C\xa1\x0b\xf3P\x8cSg:c\xc3\x07#\
+\x06\x11J\x89\x9ez#\xaa\xff\x9f\xf2\x14g\x84\xd08\
+a\x9f\xa11\x08\xd3\x17\xea=\xa3\x14\xd2`\xf0\xf5\xcb\
+\x88\xa8\x1a\x89\xe3\xf3-\xc2\xf7\xb1\x0e?&W\x08\xea\
+0\x18\xa7\x00G\xb8\x04<\xa4\xe7\x06\xc6'\x94\xfe\x9f\
+Z\xb4\xbc\xdb\xed:i\xc4\xd1\xe8\xa1!\xa1\x9f7\xbe\
+\xcd\x22\x00\x83h\xb6\xf0\xef0,\x10\xb3\x06\xe0\xc4m\
+\x01\x91j\xfe\x9d\xfa\x8f\xfa\x9az]\xfb\xe7d9\xee\
+f\x0a\xd4z\xc4<\xac\xdc\x9e\xbd\xcd\x80\x96\xaf\xa3\xf0\
+\x9eQ\x09\xfd\xcc!\xb1\xa7\xd0\xb3\xff\x7fM\x89\xc90\
+\x14\xfeP\xd0xCv\xdbVS\xc2\xbc\xdc\xb4@\x80\
+w\xdey\xe3$\xfa \xa0\xfd\x82\xdc\xca\xe90\xcb\x01\
+\xc5\xd0;{ B\x02\x06\xfc\x06\x91\xb0\xd3\x99\x06\x11\
+\xa2\xc0\xa0\xb3\xdc\x9f\xe1\xa7\xe0P\xe7\xba\x5c\x9dY\x82\
+\x08^_\xe4\xb0_\xd0\xcf\xfbz\x11Af\x1a\x1dH\
+\xa0cM\x81\x8f-\x17\x85\xbdD\x95\x5c\x9d\x95W:\
+\xc2\x14v\xa8\x06\x8bZ\xe2@\x03\x85?\x851\xc0\x02\
+\x89\x9bf\x0a\xfd\xf7\x00\x0c\xb0a\xf6\x0bp:\xee\x8b\
+\xeb\xef\xb9>\x00 P\x96\xfe5\xf1\xa24\x1d\xaam\
+\xdbb\xa2\x98\x99[\xef\xda!\x81\xdb@\x22j\xd8\xb7\
+\xb0>\xf8\x1c\xfc^\xc40@\xbcX_|\x1d\xd7\x11\
+J'\x07\x0e\xd4\xb2\xa9%\xbcc\x00\x95\x94\x84h\xb4\
+\xf4h\x99\xd12\xad@\xa3SR|\xbd\x7f\x15~?\
+\xe2?\xdc?:\xa8\x87j\xb6\x1f*\xef%\x95\xba\xe4\
+b2\xbf\x90\x1d\xdb\x8f*\x95-\xff\x94j[\xa5Y\
+Y\x9f\xf5A\x1d\x14\x7fO\x80\x184,@\xca\xf93\
+\x07(T7\xa8@P\xc4\x10\xafc]\xc1` \xa1\
+`4\x88\xc2\xbe\xeb\xd9Qr_\x01\xd8\xe8\xc8CA\
+\x22\x01\x91H\xa3\x1f\x08\xba\xde\xeeo\xba\x87\xc5\xb4v\
+yt\x94}&\x92\x8e\xaa\xd4p\x1d \xa1\xe3\x07\xa3\
+\x80\x8e\x07\x09\x0dL\xa2\xde\xf5p$\x95\xe7S\x88\xb4\
+#\xceGI\xdd{=\x8952k{H\x896\x8a\
+\xc0>\x81j\xef\xc9\x16af\x9e\x99K%tPC\
+]\x14\xca\x12\xcd\xd3\x9b\xe6@\x9a\xd7\xa2Q\xf6\xb9>\
+P\x86]\xc3A\x1a\x07\xaeFL\xe1\x89\xed\x18\xa3\x19\
+\xff\x90\xf8\xdd\xbfD\xad\xfe\x8fE\xd0f\xf8\x9df\xbf\
+\x99\x01\x84q\xa0\x9f\xc7\xc8\x81\xff\xc7,\x1a\xc0\x15\x94\
+B\x00H\x80W\x89U\xb9\xe8\x0c\xda\x1c\x14\x80B\xfc\
+\x07\xbf\x1d\xdcV|\xdc\x0d\xb6\xca\xcf\x81M\x9e\xdb\xec\
+9Z\x05\xec\xe3\xcc\xce\x01\xa4p=\x07'Y\x04\xbb\
+LD!\xc5\x00!1\xf0\x0e\xaf\xa8\xd1i6\x8bf\
+SW\x80\xb4\x83D!<\xba!\xf4\x9c'.\xd2$\
+\xdb\xbe\xc9\xcf[\xe4\xc7bq\x8b\xd6\xd1q*\xaeD\
+\xe2\x06WZ41.l\x06\xe9\xc4\xa6\x03-\x82X\
+\x15\xae\x15*t\xcbhBN\x1c\xd2\xf9\x16\xba\xeeG\
+7@6M\xe6\x98N\xb3\xaa\x97\xe9\xf9\xdd&h\x0a\
+l\xa3\xfdS\xa2T\xee\x12\xa0\x99|\xff:\x89\x5c\xf9\
+H\xd0^Z\x07\xd8\x8f\x01 ]\x94\xaf\xdfEEd\
+\xf0\xdd&\x8e\xe7\x14\xd1\xef\xcb\x9e\x0f\x8a?\xa2Y\x88\
+J\x0a\xa0DL\xce\xb5\x05\xf8\xfboY\x14m\x84\x13\
+\x8b\xba\xff.%\x85\xf6\x0eU\xfa\xafEs\x95\x18\x9c\
+\x22?k1x\x0a\x13k\xfd@q\xb7Y\xf1\xb5\x9b\
+\xfb\x01\xda\x0e\xfd\xd9\xe4\xc2$9M\x14\xd0ue\xdb\
+\xf4\x5c87\x10\x054J\xedo\xb4o\xcf\x1b\xec\x0d\
+5\xbaA\xe25\xdc\xd0\xa2\x00\x0a'X\xe2\xe6Tl\
+f\xbe\xe9\x90!\xde\xa6D\xb6hJ\x9c\xac\xfb\x7fz\
+c\xa4\xa4\x9d,\xf2\xcf\xfd\xacE\xfe\xf3n\x16\x81\xb2\
+\xab\x8e\xff\xe4u\x16M# \xfd\xd9\x22\xd8\xbf\xadj\
+\xd1F\x06\xe8\x9c\x8fg\xb7\x08\xb3\xb3\xda\xbf\x8b\xb8\xbf\
+1\xe2>[\xa9\xda\xf9)\xabL,\x01<\x83\x9bk\
+\x012\xd8C\x05\xcb(\x9f\x0e\xa3\xe6\xceb\x9e\x09\xa5\
+\xc0}\xb4\x8ab\xc2\x0c\x80\xda?:\x7f4u4\xb5\
+\xa8\xc1\xe7\xc8\xaf\xa7\xe40\xad\x83\x8fY\xa8S\xf8=\
+\x01\xa8y\x9f\x1c~\xd3B\x9d\xe8e%j{ap\
+\xdb\x80\x81&\xaa\xb73\xeb\xac\xecz\xb8\x89\x19\xc2\xcc\
+sqGS\xcb\xbfT\xc0\xf3\x0f\xdbu-\x1d\xdc-\
+d\x07\xb8B\x181\xe8\xab\xdc\x03\xe0J\xa5\x9e\x82\xce\
+\xeduU\x98\x8f\xcf\xb3\x08\x9a'\x00\xbe\xd8ri}\
+tW[\x84\xd9m\x89\x8a:\xa5\xdel\xe2\xf6h\xcc\
+I\x17w\xfcB\xe1\x0a:\xe0LG\x94\x11\x86\xc2+\
+\xd8)\x00\x19v\x1a\xae\xf0\x06L\x07\xec\xfd\x00\xbc\x99\
+)\x86\xe2\xbf\x9aE~\xfd\x89E~\xdd\xc7\x22\xdf\xcf\
+\xcf\x8f\xbe0\xb2\xfdpo\x8b\xb0\xde.\xb7\xc8\x7f^\
+\xae\xda*\x8e\xaf\x91\xe6\x12\x05\x14\x22\x8a4(.\xb3\
+h\xcc0\xb7ETa\xebZ\x16\x14x'X\x84\xc2\
+\x19\x8d\x06\xd4\xdcq=\xc0\x9eX\x0c&o`\xd0q\
+\x17\x13\xcc\x0b\xc63\xc4|\xe0<\xc7EE\xa2z\xc6\
+\x93)L\x19>\x07u\x023\xf34\x16\xa9O\xe8\xfc\
+\xd2\xa1\x87a\x0b0\xa0\x8e2\x9a\x04~\xeeH\x5c\x97\
+|\xd1\xeb\x07i\xc3xA\xca\xfdF\xbd\x9ezF\xa2\
+\x96>\x22Kc\x8c|\x8d\x9f\xc7\xfb\xc0\xc6\x11\x8d\x08\
+D\x08\xdf^\xeb\x00\xb7\xa7D+\x89\xd1:\x01\xad\xfe\
+}\xdcW\xe5S\x8cZ\xc0\x84u\x0d/Fy\xc8\xcf\
+pC\xa0A\x8a&\x17\x0d\xe0\xbe[\x1aT}\x98\xa6\
+\xaccu\xd2]\xccP#\xbe~\xbf\x10\xab\xc6\x9eP\
+y\x83\xd7\x9b\x000\x5c\x1f~\x1f\x8d\x13\xfe\x83\xb9B\
+a\xbdJi\x89\xb6\xd1\x19\x98\xd6\x00\xa2r\xc9\xf2u\
+A\x1d\x02#\x88\xc6\xb4\x5cE\xd87\xfc\xfb\x01\x0e\x18\
+u\xa1\x1e\x05(\xc0&\x17\xe69\xeb\x84\xfb\x8dh\xa2\
+\xf6\x93\xc9R\xb0wa\xc1R\xe0Gq\xbeY\x02\xe5\
+\x15q\x1c(\xb2 \x86\x88\xfaE\x11\xbe\xe9\x02E\x9f\
+\xc2\x91B\xd3\xca\xb9%C!\x87\xfa7\x1b\x18\x08\xcf\
+\x9bE\xed\xa5\xa0\xa4\xe3\xc8\xef\xebt\xf0\xb0``\x00\
+\xf4\xc5\xfe\xb8P\x14\xe2\xfc\x9c\xfe\xdf\xb3\xd0\xe8\xc4S\
+ \x83(\x82\xb4PPb\x8fG\xc7\x9a\x82\x0b\xca\x0d\
+\x055\x9f\x93\x02\x9c\x07\xab\x0f\x8c\xb0\xa0##b\xfe\
+P\xa8p}g\xd1\xfbo\xae\x0cu\x16\x9c\xce\xbeD\
+\xc1\xfc\xc1X^\x09\x0d\x1b\xc9r\xfa\xbe\xbe\x8a\xfd\xb2\
+z\x9fh\x1f\x00T\xf0{aH\x80\xcc\xb2\x91\xfdS\
+\x1b\xe7=\xa2\xc4\xb3\xf0\x01\x86xpY\xf0\x14\xaa+\
+\x97\x9ec\xa3\xeccc\xc6z\xe9\xcd\xf6{\xc7\x84\xef\
+\xef\xbb0,\xa6?\xf7\xde\xb7S\xae\x98\xd5\xc4&D\
+\xbe\xcd\xb9\x0c+\x1d\xe9|-\xaa\x86\xc0\xc5\x15\xd1D\
+\xfc\xa8Ph\x8f\x0dL\x0e:\x8b0\x12\x98m\x7fV\
+\xff\xfe\xf5\xfa\xa0\xba}\x8df\x96<\x81bv\x8f\xc2\
+\xe9O\xeah\xe0\xafzn\x9d\x89b&\xce\xfdQ\x99\
+QGT\x86\x8d\xaagw9\x8dm$\xcf3\x1bA\
+\x14\xdd\x9c\xfd\x0d\xecD\xe8\x00C\x05C\x04\x06us\
+u.H\xc0q\x1dp*8T}\xd6/\x14.\x0a\
+tf\xddU\x90\xf9\xfb\xc7~\x08\xf5Y\x98\x04\xba\xee\
+\x88\xc3\x90(\x00,9\xd5\x1a\xaa\x14\x07\x00j\xad\xea\
+`\x0d\xce\xca\x05\xd5Y\x81j\x08\x05\x0e;/\xdc\x17\
+\x98\xcdV\x87l\xf0'\x8b\x00`\xa8\xd0\x1dln\xd1\
+f\x07]\xad\x5c\xf6u\x9exj\x84\x02\xe0\x85\x82\xcf\
+\x99\x03\xa2\xb2\xe3\x07\x8b\x1a\xb2\x1f\xcc$j\x02l\x5c\
+\x0cL\xb63\xcet`\xa6Q#\x02\xd3\x8cf\xbdZ\
+\x9f\xdf\xc1\x19\xb9\x10?C\xaa\xe8\x7fW\xe7\xe5\x8e6\
+c\x8c\xbd#\xcf\x95\xdb\x1f1\x12\xc6>\xc5\xe8FT\
+\x97~:$&\xcc\xaa\xd2i{\xa2\xa8\x80x\x22U\
+l\xe2\x96\x0e\xcc\x1d4+\xe4Z\xe1\xb6E\xd7V\x8a\
+4\xcf\x19Z\x1d\xc5m\xe0\xc6\xe6\xa2\xe1\x1d$\xad\x03\
+43\xd2?,\x1a\x95\x9f\xc2\xc9;\xb8\xd2\x0a`\xa4\
+\xc3\xc5\xa8\xf0\x99FUZ\x89N\xda\xda\x22_\xd6[\
+,\xf2\xd7\xbf\xd3\xa2\x8c\x12\xe5\x08\xa3+\xa2@v\xe7\
+X4\x06\x80S~9/\xa4\x11\xe1~\xd2\x02\xc4\xb8\
+?\xc3\xc5,ZG\xd3]/lto\xd5\xe0?n\
+\x94s\xa3t\xdfg\x91_O\xb6\xbfi\x09\x9c\xaf'\
+:bh\xdd\xb0\xae\x01\xba\xef\xae\xfb\x91\xbbA\xc0\xbc\
+a?\xbf \x17L?n\xfb\x953=\xe88\x09\xa0\
+J/[\xb4\xf7\xe3\x8c\x03\x00+D.\x11\xaf\xbb=\
+\xdd\x96n\x0f\xe7\x1d\x22\x8b\xb6\xbe\xac\x13\xbe\xb7Ex\
+_\x88\xf1it\x02\xc0\x8c\x0e\xae\x8f\x1e\x98j\xf5\xfe\
+at\xceD\xd5\xa6\xe8\xe7\x1e\xde(\xce^\x10rN\
+\xc3`4\x1e\xc8~\xea\xcc\xfc2\xf8\x87\xab\xc3\xc7z\
+\xa5P\x1d/n\x11ff\xd5\xf1\xf3Yx\x89\xb29\
+#Jj\xe7\xdd\xe69\xde\xdf\x80\x05\xf67\xc4%\xd9\
+/\x0b\xd3`\xc9\xa6\x01\xc1\xa8\x08\xda\x1c\xe5\xba\xdal\
+\xf5\x9aU\xbc\x161L\xc4\xc5\x5c\xa5\x9es\x1f\xf1`\
+i>u\xebv\xebu\xeb\xb5\x042=Y;\xa1\xa5\
+\xd0\xdaC\x9d\xae\xcb\xcbl~\xed\xb8\x8b\xa9\xe5\xcc?\
+\xf6\x07\xf6gD\xf1\xe8HK\x8d\xdc\xedV\xb5\x9f\xa6\
+\x8fZ4`\xb3\xb8\x0d\xac\x16l\x81\x19E\x13\xb0\x0e\
+%\xb8\xa4\xd5f\xff\xf9\xa2Fq\x0cx\xbbB\x05\xdc\
+)\xca?\x8c\x80qR\x8e\x13\x9bjx\xb9?\xdf\xd6\
+\xb9\xf4\xd6f;X\xce\x9f/4&\xa0\x8f\x8e\xc8\x0d\
+\xc7g\xa0\xd1\x12\xd0~N\x9eP\x00\x8dS\x82v\x8d\
+\xf6U\x17\x05\xd4s\xdf\x1dm\x11:\xb9\xd2H\xe0\xeb\
+\xdc\x0d\x80\x7f7\x97\x86\xb7h\x7fzk\xc8\xa3\x195\
+`\x04\xcb\xde\xcf\xbd:\xcf\xff\x1d\x80 c>\xdc\xa0\
+\xbc\xc0\x00\xe2W,\xc2\xfd\x83\xdaM\xbe\x86h\x9b\x00\
+\xab\xd1\x9e\x16\xc1.\xf5\x1d\x16\xf9\xf5\xd0\xees]~\
+\x0eG\xbf2c\xd2\xa0\xf9\x02\xf0i\x80\xcb\xa6\xe5\x5c\
+,\xef\xd3\xcf\x11\xddG\xf6\x17w}\xd1HC\xf7\x19\
+\x8b\xa2\xa2\x7fsws+p\x9cA\x08\xa3C\x85\xb3\
+\x17<P\xef\xc9\xff\xf5y\x18\xcd\x9b\xa6\x90\x84I\xa2\
+<\x1c\x00g\xfc\xd4\xf8\xc9\xf1\x93\x05x\xa9@\xbc\x98\
+b^'\xd0\x08\x01\xc8\xdb\xbf\xae\xef\x89#5Z\x88\
+x\xb1\x18'>\xbbN\x1e\x09\xb3\x01\xbbE\xf2%\x98\
+\x17\x8c\xe4\xad\xdak\xcc\xc1\xcc\xe4\xbe\xa9\xf0u\xad\x22\
+\xde\x1fn\x03r\xddp\xbb\xc2\xbd\xab\xdd\xb4\x17\xc0b\
+\xe493\x97|O\xe2\xe3\xfe\xfe\xd0\xe0\xc1\x85Ab\
+\xa6\x8c\xf48 \x0c\xa0\x81\xd6\x18\x1dv\xea\x11F\x06\
+d\xcf\x8c\xe6\x9b\x038b\x82:\xb3\x83<\x9f\xbc\x1b\
+\xd1k\x00U\xd9\xf2y\xfe\x87\xf82\x0d\xe8\xf5-\xc2\
+\xfba\xc4\x80\x11\x10\x18\xb3\x1a\xad\x02\xa8\xf3:\x92Q\
+\x02\xf2e\x98\x08t\xf4\x07\x12\xb7\xd7\xffX'.\xb2\
+\x08@\x22F\x8c\x8b\xb1r\x9d\xd1\x02\x90\xe6\x94\x8b_\
+\x8aa\xea\x0c\x86\xc6\xa4\xae#F\xca\x1b\x9d\x11Cc\
+\x96uF}\x86X8\xee:\x02\x88&\xbd\xb3\xd7W\
+\xd9\xe7\xef\x958\xfa\xc6\x8b\xad\x1b#\x01\x14\xf8\x14\x1a\
+\x14\x1e\xf6\xf7\xfcy&!)s\x84B\x9e\x82C\x8c\
+\x03f\xdc\xfc\xe0\xa0\xc0\xe3\xeb\xfa\xb6~\x14\xee\xd6\xdf\
+\x9f\xae1\x0e\xbc\xc0EM\x9cN0\x1dS(\xe0P\
+\xda)4\x11c\x83B\xbf\xaa\x17\xee5\x01^\x5c\xef\
+\x8f\xc2\xfc==\xca=>\xf3\xcc\x8a\xd0\x19\xe4\xe7C\
+\xa9g\xe1\xf4}\xcd\xf9\xdc}\xed\x00\xa8~\x5c\x0f\x0a\
+\xff~\x81\x07\x13\x83N9\x94x:\xbd\xdc\xb7\xa5\x02\
+\x00\x13?O\x1bA\xa8\xd7\x1b\xaa\xa2\x0a\xe4\xbc:j\
+\xe7\x97\x07\xe7_J\xf0\xfb#\x0c< PTyp\
+(\x08f}\xbd\xfa8j\xb5\xd3\xd8>\xf2\x00s\xbf\
+\xf9z\xae\x1b\xeb\x82\x9fG\x01\x89]\x22\xb3R\xbc\x0f\
+fj\xe8tP\xe8\x22\x86\x22$\xd8\x0f*\xc4\xd6d\
+o\x05u\xc9GX`V\xd0\x91\xd7\x0c538l\
+\xa8\xdd\xfd\x16a}\xdco\x11\xd6#\x07\x884\x09\xba\
+]\xbb]\xba]\x0a\x22y\xdd\xf8\xba\xc0X\xb8J\xb3\
+B\x88\x8d<\xa0\x8dR\x85\x9a\xab\x86s=\x98Q\x82\
+yAg\x9b\x0d\x8d\xe7\x1c G\x8886P\x0eX\
+\xb1\xee\x98m\xc3\x0e\x90\x03\x0f\xb1\x18T\xbb\x11\xbd;\
+\xce\x22\x8c\x90\xa0\x02\x0eu\x18\x84\x94\x83\x00@C3\
+QnG\x0a\x80\x06\xf0\x86:\xbe\xd9m\xbd\x16\x10|\
+\x0ex\x0a~\x98\x17\x1c\xa4\x1cd\xfb\xe6\x8du\xdf\x90\
+\xf0K\x1d\x97\x84\x8e\x03\x85\xc2\x9d\x99\xaf\xf1^\x16A\
+\x1c\x90\x02\x05\xc0`\x1f\x1d\xa8\xf2\x9ffC\xf7Yu\
+\x00?\x00\x01\x01\xa9i-\x8b`\x7fy\xbe\x80\x00\x89\
+\xf4a\xf3\xe53\xfaR{\xf6Q\x94Wu\x1d\xb8\x9e\
+\x9a\xe5\x1c<\xab\xce\xffz*\xac\xd9\x07Ix\x9e\xd6\
+Ao\xc7\xc9\x83AD\x89\x99xl&W)\x98v\
+\xeb\x1cH%\xb7P\x09\x97,n\x159ZG\xd7\x81\
+\x8f\xbd-\x02p\xc1\xbek\xeb\xff\x810\xdaBB\x85\
+\x8d\x17#!Praz\x88\xb1\xe0L\x17D\x97V\
+\x91\x0f4\x09\x86\x01\x98\xcb\x06\xe0M\xbf\xa7\xbb\xdb\xa2\
+\xcd\x10#R\xc9\xfa\x1f~\xd2\xa2=G\xe9\xd2\x1c\x97\
+4\xc0\xc1\xca!+\x88H\x14\x86\xdf\xb1h\xaa\xd1\x14\
+\xb8\x9e\xb0\x01dj\xe61=g\xd1\x12~\xdf\xef\xa1\
+Vj=\x02H\x14&\xc8<\xf2Y\x1f5\x9b\xb5\xf4\
+h\x8e\xc7\x82V\x0b\x80\xa0\xae+*\xe0\xcc\xa8\xa6\x07\
+\xd2A\xe9\xa0\xfc~\xffh\xd1\xc4\x8e\xfcU.\x0b\xe9\
+m\x16\xa1\xe0\x96\xdfq.\x9f\xca\xe8\xc1`U\x9dG\
+\x9a=tf\x96\xf6i\xd7\x1c\x90\xb6\x80k\x8d\xe8\xfc\
+!\xa1w\xd1A\xce{\x80\xc2\xe6o^m\xf2\xee\xb7\
+h\x89\xa6\xbb\x05h68}\xc8B\xfb\xef\xed*H\
+\xafl\xf6p\xdd\xb99\xce\xd1\xa8\xd6\x22\xed\xf3\xf8\xac\
+\xe4\x1d\x16\x8d*\x99\x8e\xb3\x10\xa0\x9b\xdfG\xf7x\x8e\
+'\x82\xc8\xaai\x14\x5c\x11\xf6cK\xaf.k\xc0j\
+Z\xc6\xa2\x89\xc0\x99\xf9\xa1\xd9\x1f\x16\xe0\xe9i\x9d\x83\
+\x0f\x06J\xf4[s\xbc-0\x12_\xb0\xc8_\xff\xb1\
+\x1c\xbb\x05\xc0\x0c\xbb.\x15FP\xc7\xe9x\xfa\xba0\
+\xf1\xc8[\xf49\xe7T!\xbe\xae\x98\x8ey\xdf\xe8\xe6\
+\xb4\x08\xfb!\x1d#\x0ati[\xb8\xfd\x98\x9e\xb3\xb4\
+\xb6E9_\xeb\xbeA\x83E\x80.\x14\xd6\xa2M\xb1\
+O\xc8\xabt\xeev\x8fX\xc8\xfe\xed\xbbA\x8c\xecg\
+\x95\x19\x03\xc3\xa1\x00\xf3\xc6\x8c\xda\xdcB\x9d\xdb=\xf5\
+~\xd7l\x85\xbd'\xe8\x88\x8b\xaa\x10\xf4Yx\xad\x9b\
+\xf2\x1c\xdc\x15\x0a_+\xa87\x0f\xb6\x9e\x12W\xeb\xbe\
+f\x11\x0a\xc78\xb2\xf8\xa0F\xaa>+1\xb5EB\
+\x03\x83\xbcK\xfb\x16y\x036\xa4\xbe_SPqN\
+\xc1TR\x9e\xe0\xfb>.O|=\x1dEF\xf24\
+\x92\x82\x8a}\xc9\x92\xe6n\x0d\x8a\xf1\xbc\x16\xe1<\xc3\
+\xe6X\xe7\xb8\xbf?\xb4\x114\x22\x93\xd6\xb3(#5\
+k\xd8H\x8d\x8b\xa8\xa9P\xec\xd6\xca\x91\xdf\xf7h\xe3\
+\x1c\x1b\x15\x1b\xba\xb3l$c\xf4\xe6\xd1\xfc\xa3\xbc.\
+\xbb\xb5\xeb\xbf\xe3\x8a2\xfe\xaaEc\x00x\x81\xa2\x91\
+G\x1f\x15C#\x03\x97\x0alFit\xe0\xd6\x82\x9b\
+\x87\x00?\xb7\x97D\x5cS\xc0\x99\xdb\xa1agG~\
+\x83x*\x85?y%\x14i\x98\x04o\xb2h\x85:\
+\xb3\xf3\xe3'\x04\x00\xb0n\xf8{\x80\x1a\x1a\x1a\x88O\
++O\xf0sV\x1a\x05\xde8\xa1QA\xe1G\x1e+\
+\x0a\xfc\xf8+\x16\x01\xd0\xe1\xdf\xb7\x94\xbd \x0d-u\
+\xd2=\x8f}\xa2\xe6\x91\x83]\xc5\xe4\xa3\xae\xa0\xa3\xcc\
+\xe8#\x1d\xe4\xfd\xa4\x85A\x1e!\xed\x17\x98\x07e\xff\
+<\xb7\x01\xbc\x0e\xec_\x5c\xa2}N4[\x04\xfcz\
+\xc7\x1aw'\x0ao\x01\xdf4\x5c\x9c) \x80\x86\x06\
+\xa0S\xdc\xa1\xd4s]\x01Li\xb41\xa2B\xfeE\
+#Gy\xbaS\xe9{#\xa9>\xe2\x83\xfb\x17\x807\
+u\x05L-\x5c!\xfa\xcc\x11\xea&\x98\xbf\xbbH\x8b\
+@b\xed\xae\xcd\x82\xc6\x12\xf6}h\x17\xa0\x0d\xc5\xe7\
+\xa7\xa0\xe7s\x03\x90\xa8\xb1\xe3\x8d;F\x05x\x7f\x1f\
+\xb0(b\xe89\x82\xdb\x0a\x80\x17\x9f\x0b\xf7\x0b\x03\xb6\
+/\x0b?G_7\xe9\x85)\x22|\xff*\xa5]\xdb\
+\x80\x223`\x86\xd09'\x01F#`\xae\xa2\x7f^\
+\x0b\x90\xd9\xc2\xe8\x80\x95\x83\xb1\xe3\xce\x1bc\x16\x83\x03\
+\x0b\xea77\x82\x02\x04D\xac_\xf0\xf2A\xfb\xb3\xf1\
+$V\xfc\x1c\x12F\xc4\xc1\xf0;\x07\xb9\xe1\xeby\xa5\
+P^@\x09\xfbb\xfaz\xa8Z\x14\xf4,\x04\xa8?\
+\x14\xc0\xff\xab3M'\x9bY\x1f\xa8\xfd\x00\x05} \
+\x80\xef\xa3 f!\x0fu?8\x88\xa0\xdcb\x83\xc7\
++\x0b\xf7y\x89\x19\x02L\xcc\x15D\x17\xa3\xa6\x03\x9d\
+}\x0a4(o\xa2\xdc:\x00\x03r\xf9\xb8\xben\xcb\
+*21\xf8\x91E(\xd8)H@\xa0\xe8D\xf6U\
+2\x11\x0f\xe4\xef\xf9\xfd bP\xb9\xb9\x9f\xbcO\xbe\
+\x9f\x0e5\x05\x00\x09\x0ab\x1a\xac\xdb\xd7t\xbd\xfe\xad\
+\x99*6\x08%\xf0n\xc3\xa6\xcf\xe1\x07\xe1\x14]\x1f\
+!\xe3<Hn\xffG\x024\xd7x\xce\xa2\xd6+\x95\
+\x7f;\x16\xed`t\xd5t\xec\xbe\xa0\xd8C\xe1\xf9U\
+\xfe\xff\x5c\xe8t?\xb2h\x94\xc6\xc1\x97\xe43\xfeQ\
+\x89Q\x1d\xad\x91\x80{\x84(\x1f]U\xd7\x01\x10\x0c\
+\x7f7\x04\x9e\x02\xd5\xfd\xb1\xb1\x07\xd2z\xc3\xf6\x8c\x04\
+\xd8;\x83P\xa3(\x94\x85\xe8\x8e7\xb6\x08\xcf\x85\x12\
+\x14f\xe1Q\xc7\xa5\x83\xe8\xe2\x82R\xe1\xf6\xaf\x078\
+\xd9\xc5g\xe4\xaa\xbd!*\xdft.\xd8x\xd1V\x10\
+\x85\xda7xl\xc4\x98\x15\xc7\xb7\x16\x0d\x05!\xca\xfe\
+\xf3T@zb\x01psB\x89f\x8bF\xc1\xaf\x03\
+\xd2;<:\xb0]4\x90\x11\x02Q\xb4\xd0R@\xf4\
+\xc6\x0b:\xc4\xc9\xd8\xb0ew\xe3\x0c\x06\x0a,\x12\x1f\
+\x12\x9d\xabdW\xf6>%\xe4\xd7\xa8s'5\xdf\xee\
+\xd3\x16-1\xc8\xe9y\x01\x10\xa0\x16R \xf8,\xa9\
+\x12\x15\xdf\xbf\x00\x86T\x98\xe3\x17\x9f\x9f\xd9\x02\xd0\xfa\
+\xf5\x98a0\xa3\xcd\xf6\x96\x0e\xf6W\x83h'\xf6;\
+\xac\x17\x10{F\x07P!\xd7\xc1?\xf8\xb5E8\xa8\
+\xb9?\xa8\x1eO\x1d\x9f_\xb4\x1a63\xf9\xb56\xa3\
+\xec\xb3\x93t,\x98\xe9\xa7\xe3AG~\x01\xd9\x17\xf2\
+\x9c\x9e6\xf1\x8d\xc2\x5c\xd0>\xe1>\xe6{X\x84u\
+(jn\xf7W\x8b\x06\x08\xa4\xe3-T\xb0?\xabN\
+\xd2q\x8dz\xdeMZ\xb4\xce^Z\xcd\x22\xccRj\
+d!-l!\xd7\x8c\xfc<v\xb7X\xe4\xb7\xf5\xad\
+\x1cg\x04\xd5v\x15\x8a\xccB\xa6\x1b,DY\xcf\xf7\
+!]f\x11l\xd1H\xd8eO\x856\x07Z#\x00\
+h\xe9\x10\x8b\xfcz\x9dE>6\xf6\xb3\x08\xbe\xd6\x88\
+J\x8aI\xc31\x8f(\x18bH\x88\xe1\xa5\x87,B\
+\x22\x0b\x85^\x9d<F\xb0|\x1d\x8bI\xe1\x1d~\x01\
+\xc3\xde\xd9Em_\xf7\x99\x91\x18\x18D05\xd2F\
+96n3\xac\xc3M,\xf4<n*\xcd\x89\x9b5\
+Z\xb3mcV\xa0\xe5R\x0a\xea\x8f5Q\xaf2j\
+se\xe8\x04\x09XF\x05\xbe\x9c\xc6o\x0f\xa2\x8f\x0b\
+X\x04-\x03\x80\x8f3\x8a#t\x05\x8a\xb7o#w\
+\xee*\xf0K\x8b\x9603\x82\x85\xa8\x9b\xff~\x00&\
+\xd3\x08\xd82\x7f\xbe\xce\xa2\xd8\xce\xe6P\x01\xfb\xf7:\
+BSD\xc7r9bv\x80\x00\xcfi\xc3\x1c\x1b5\
+`\x04M\x90\xf1L\x16A\x8a\x89s\x10\xc0\x9a\xfc\x05\
+q1\x9e\x17i\xcd\x18\xfcd\x00T\xfe\x8ce$\x85\
+\x91\x8a\x89\x0b\x05\xa0]\x5c\xf7\xe7|\xcaT\xa0M\xcf\
+\xcfx\x11\x8b\xfc\xba\x9eE\xd0,\xd1\x88\x04\x00\xd0\xf0\
+\xd9\xe1s\xc3\xe7Zc\xa1\xccd\x7f#\x00\x8b\xd8\xc0\
+\xd9\x9f\x97\x0e\x22_v\xca\x9c\x1f\x12f\xfe[\xbep\
+\x1c\x9b=-\xd7\xfb\x87r)b\x81\x1b|yY8\
+\xc7\xef\xb2\x08\xe7\x1b\x09\xb9>Gi0\x0d\xc39#\
+\xc6\x97\x03\xe1t\xd6\x00F\x19\x11\x90\x0d\xb3\x8f(\x00\
+\x84JS\xc0\x1b\x0b\x8c\xacH\xec\xab{\xc0\x22\xbf\x1e\
+f\x11\xf2)\xfd\x1e\x00\xe6t[\x8e\x87[G\x8f\x91\
+(\x00\x97\xee%\x8b6B\x00\x80:\xde1\xc7\x87u\
+\xfe\xdby\xf1/\x8bP\x08\xea\x5c\x82\xf9\x04p:Z\
+s\xb4\xd6(\x9f{\xa3\xe5G\xcb\x8d\x96+\xcc\x88\x8b\
+\xbb\x8b\xcb\x08\xd4b\xddb\x81\xd9\xc1\xac6\x0c9\x89\
+&\x0e^\x123\x03\x8a\xff\xd4|>N-\xe2\x9a\x8f\
+\x1b\xa0\x99w\xed\xc3l\xdfvf\x08\xa3\x02\x14nb\
+h\xd19\x1d\x7f\xd4\x22\x9c\xc7\xdc_\x15\xbc\xde!\xa5\
+`\xd4\xe8\x9e\x03\xe10U\x04\x80QP\xb98\xa9F\
+\x10\x5c\xf4\xed\xb7\x95\xda\xef\xcf%\x0c\x03\x8d\x9c\x8c\x1f\
+\x91f\xccH\x0f\x1c\x852\x80\x04#\x00\x88\xc8\xd2(\
+\xa3\x11D\x03\x92\x02\x8dz\x85|\x11\xdbR\xf2_F\
+D\xd5\xf1eD\x81\xbc\xb6\xdb\xd8\x22\x8c$\xa02O\
+c\x8f\x0e4y6u\x84\xd6\x89I\x1e\x9a\xe8!#\
+:\x9e7\x008\xa0!\x00\xa0Ac\x10W#4:\
+hHQ\x87\xc1t\xe6\x95\x9f\xcb\xcc;\x0d;\xde'\
+u\x22\xfb.\xeb]v\x81\xfes\xa9\x93\xd8\xe7\xb8\xae\
+=\x11x\xa7\xfe\xf7\xdd2\x18]\xa5\xee\xa2\xbe\xc5\xe6\
+\x96\x86\x11\x22\xef\xb8\x96!\xe6-\xa6\xe1\xf8r\x8bP\
+\x9f\xf5D\xe3\xbd\xee@t\xd3\x18I'\x85\xc6\x19\x8c\
+\x1c\x80\x9eoX\xb4\xf5\xe4u\xb2\xae\xaf\xbb\xf5\xb0~\
+`zR\xa7\xbd\xe0#\xea\x95\xf1\x8bX\xb5\x00\xc8I\
+G\x1c,=\x5cQ\x85\xf5\xcc\xe1\x82\xc6N\xfe\x1bQ\
+\x8b\xe9\xec#\xde\x07b\xf5\xbff\xde\xf9\xb9tty\
+\xa5 \xb5?\xcd\x17\x0aH\x00\x00\x0a~~\x1e\x0b\x03\
+\xa4\x9c\x03\x0d@\x83\x82\xbc_\x98\xb7\x02\xbf\xbe\xf2\xef\
+\xed\xf7\xd5\x84\x1d\x8a\xffj\xba\xe0\x14\xe8\xbc\xd2\x19\x10\
+\x05\xd3\x7f>7\x88?\xf7~\xbf\xcf\xd6\x02@\xb0\xe0\
+X\xc8,\xe0\xbf\xe9\x81\x7fI\x853\x07\xb5\xfe3\xb3\
+\xc5b\xef\x07\xb2\x09e\x1b\xc4\x8e\xdf\x8f\xb8\x06\x1b$\
+\x9a\x08cmTt\xa0A\xf8\xa6W'\x9d\x8d\x0cD\
+\x9c\x02\xfcFQ\xc4\x1e\x16\x95tY\x8dF0\x1b\xce\
+udcfc\xe1\xfd\x00,\xf5gk\xe8D\x83\x88\
+3\xab\x02E\x1a\xe0\x05f\x83\x10`(\xc6\x8e\x88\xb2\
+\x833\xda\xc0}\xe6A\x84\xd2\xf6\xb2E\x13\xe9\xa1#\
+\x85*\xb2\x8b\xaf\xec?>`|@\x13\x91rJ\x15\
+H\xbf\xee\xcfx\xc6\xf12\xe3e\x8a\xc8\xcf+\xe3W\
+\x82m\x16\x85)\x94o\x89\xb0\x8cg\xb0\x08\x1b'\xb3\
+\xef$J\x97\xa4\x8b\xd3\xc5Ad\x0d\x00\xedP!\xe3\
+\xcc\xc2\x01\x18\xc1p\xe0`D\x04K\x9f\x0b\x0a\xe1\xe8\
+\xef\x98\x16\xeb\xf0\x00\x00 \x00IDAT\x16\xc5'\
+:G\xf0?\xa5\xf3\xa0\x8e\xa9\xab\xbc\x0b\x99eV\xd7\
+\x13M\x0a;f\x96\xb1\x0dT\xc7\xd3\xdd\x078@5\
+\x0b\xee.\x0el\xc4P\xeb\x99\xad\x12\xf5\xcb\xdd0\xd0\
+,Pb\xc7l\x99\x17\x88\x5c7\xec\xd8\xa0\x80\xe3b\
+\x00uT3\xf1tb\xbc\x10*\x9c\xed\xf0\x5c\xc2x\
+\xa2PT\xa1\xea\x9dOF\x16\x10-d\xa3\xa6\x90f\
+V\x8b\xef\xe3}\x90\xf8\xa8s\xe7\xaa\xf3\xd8\x03\x8a\xda\
+\xe6\x09\x13\xbf\x07_ZD\xb4$ZC\xe2Fa\xd9\
+\xdf\xf8\xd3\xa7k\xe7\xd7\x11\xf9\xeb\xf5\xdcj\xff\xf5\x0e\
+\x14,g\xb9Y@\xd5EK \xed\x9avI\xbb\x06\
+\x80\x0d\x9bA\x9eO4\x1e@\xd6\xa1\xbcI\x0c\x94\x99\
+e\xee#\x9dN\xdf\xa7\x1e-St\x95\x8a{\x96\x00\
+\xa1}B\x87\x1e_\x5cl\xca\x1e\x1c<`\xa3\x19\x0e\
+\x9cL\x0e\x86F\xe5\xcf?\xe5\xb12\xf3\xb9\xfex\x03\
+\x9b\xb1\x9f8\xbb\x90M\xdbl\xb0\x00\x8b\xe1\xca\x16A\
+t\xee\xb4\x02\x19\xf8,\xe9\xf89\x8b\x96`\x15\x11\xa8\
+'\xa5\xee\xbe\xb0\x0e\xfc'\x05\x1cNm\x8c\x19\xec\xa8\
+\x985\x1f\x9ef\x91_\xa7X\xe4\xfbt\xb2E\xeb\x10\
+t\xbb\x1a\xd7'\x7f\xfd\xbbr\xbcS\x00\xc5'\xa4\xaa\
+\x9e\xd7\xdd\xf0\x08\x0b\x8d\xa0\xcc\xd0F;\xd2\xe19\x0e\
+k@\x9e\x8b\x11.\x90c\xc1\xd6\xf9C\xb5>\x1d\x9f\
+\xbe\x9c\xbe\xdc\x0a\xf9\xe1\xea\x16%\xd1,\x89\xb2\xdb\x95\
+\x1e,\x17\x8ay\x94\xf8\xac\xaa\xf3I\x94[\xfc\xee\xd9\
+\x07\xe9\xbc\xf9\xe8\x0f\x85\xe3\x99\x16!\x91A<\x89\x91\
+\x12D\xeb$\xe6Vf\xfbM\xeb\xe2\x15\xed\x9bjD\
+\xa4\xabs\xfc<\xf8\xc0+!Mf\xd6\xd25`\x8f\
+\xc2\x09\xe0\xc9\xf3\x15\x80F\x15\xa0\x05\xa8\xfcL\x03\x98\
+\xba/[\xe4\xef\xbb:\xc7U*0\xbe\xde\xf6\x01\x07\
+\xd4>U\x19CE5\xfan\xed\xb7\xcb\x04\x8a9\x0c\
+\x1f\xed\x9fi\x86*\x86H\x82\x9f~`\x11ft9\
+w\xf8\xbc\x02\xbcK\xc7\xfa\xce\xb6_8\x05\x15\x91R\
+;\xefn\xacb{f\x83H\x07\x0c\xd1\xca\xf2\xdb\x9f\
+\xd4~\xbb^\xf8|\xb8b\xb0O\x1b\x10z\x5c\xd0\x0c\
+\xd2L*\x9a\x0d\xe9J\x8b`\xe7'\x06\x22\xf6z\xe4\
+=^\x80CYeV[\xcf\xd1\xc4'KL\xa4\xd7\
+,\x02S\xe5\x11\x8bV\x90\x99\xa9\x9a\xd9\xaaQ\x90\x17\
+\xd7\x1d\xf3\x8b_\xcfBT\xfd\xcb%b\xb7z\x00\x8a\
+t\xfe;\xa0h\xefr\xd3\x90GQx\x00<\x1a@\
+\xf56\x15P\xa3&\xeeF\xa1\xde\x1d\x94\xe3\xd3af\
+\xdc\xf8c\x87\x85\xfc\x8c<\xd7\xb2\xb9\x05\xa7\xd5~\x81\
+\x1a\xed\x85\x05y\x0b\x8d\x1f\x9d\xdf\x0eD\xd3\x01\xee\x8d\
+x\xba\xd8%\xe7\xbe:\xa1\x8c\x94\xf8s\x8f\x0d\x19\x1d\
+w\xd6\xd3\xe2ex\xb3u\x94/\x1d_R(\xf8\xb2\
+\x97s;4\xf3\x9d\xcf\xd7\xa9{6\xc73E\xd3`\
+}\xd34\xc8\xa7\xfc\x0dELX\x0c\x86n/\x8b|\
+?f\xb6\x90\xcd\xdf9Atn\x89\xfa\xbe\x00\xfc\xd1\
+H\xe1\xbcM\xdbU\xa6N\xda*m\x99\xb6,\x22\xa4\
+\x85)3XH\xe2\xe3\xffWd\xd4|$u\xf4\x90\
+Eh\x84\x08\x90\xf6\x0e,\x850\xf5\x02#,+\xf7\
+\xb4\xa7\xc8s\x1b\xa3\xb72k\x99\x8d\xe7:\xe0&\xc0\
+('\xdfG\x1d\x01C\x09\xd7\xa8\xe3j\xe1?\xbeJ\
+\x00\xc3\xa7+\xd3\xa9H*\xee\x5c(\xf0ET\xd6\x0b\
+;\xd57>\xca\x81v\x04#W4\xec\x86\xfa\xbd\xd2\
+\x08B\xeb\x87\xfb\x00 \xe9L<i\xba8\xa3\x155\
+y\x18\x16\xe4\xcbt\xa4\xf5\x9c;\xc3\x95\x91f\xceW\
+\xb4\xd0$&\xec\x9a\x0c\x12Md\xffp\xd1l\xdc`\
+\x10U\x84\x89\x81f\x0f\x9f\x9f\xf5\xcd\xfda\xe4\x0dm\
+\x09F\xe2\xf8\x8fF!\xf7\x17\x06(\x9f\x1b\xf1ki\
+\xa6\xf9h\x05\xf9\x0f@\xa6\x98g\xae\xb6\xdfo@2\
+B\xa0\xc6\x98\xe7I\xfc^\x0ah~\xae\x00\x09\xef\xe8\
+\xb3\xff\xf1\xf3\xa8\x7f@\x5c\xa9\x97\xe4\xc6\xe0\xf5\x0fn\
+\x00bxx\x9e\x87;\x09\x1aS\x88\x94\x93\xdfs\x1d\
+\x01\x88\x00B\xf8|4N\xa9\xd7\x00~\xd0D\xe0:\
+\xb2_)\xbf\x9f\xf4\xc2\x90\xce=\xbfH\x0f\x92'\xa8\
+\xb6\xf1-\x1c\x00\x82\xfe+\x05J\x9f\xc2-\xaaR)\
+\xff\xe7\x938\xd6\x82\xba \x0b\xbd\xc1\x07\x9c\xa3\xf4\xa2\
+\x1a\xc0\x00R\x06P\xc0\xfb\x82j\xcb\x06@'\x9e\x9f\
+G!\xaa\x02\xdc\x81\x02:a\x00\x14\x14\xa0\xdch\xfe\
+~\xf6\xde\xa8\x01\x08\x0a7\x5c\x0b\xcag\xcb\x99Ue\
+\x03\xe2}\x88\xc9\xe0\xb3\xfe=&\x80\x7f.\x10/:\
+\xb0?\x91H!7l\xbe\x0a\xa0\x0cv\xd4\xac\x0a\x07\
+\xd3\xb3\xea\x80\xabS\x0e\xd5\x8e\x84\x03\xea\x98\x17\xfa\x5c\
+\x17\xa8\xfd/\x0a\x81\xc3\xce\x0f\x80\xe7\xbfB\xb0X\xd0\
+\xb2C\xf2Y!\x01\x06\xccz\xbaM\x08\xc8\x19\x85\xb7\
+:\xb9\xbe0I8@\xae\xb0\xef\xf9`\xed\x9c\xfb\x8c\
+/\x22\x8d\xa8\x86\x82`\xcfY;\xed\xbe1\xdeQg\
+\x93\xcb\xf1\xbfi\x98\xf9\x91H\x9fS\xb6\xf9\xfdl\xfc\
+R\x0b&!\xe1`\xe8o\x5c \xab\xdd\xed\x16\xe1~\
+\xa0\xca\xf9_\x8b0\x0bK\x07\xf04\x8b\xd6i\xa6\xb3\
+\xc6\x8c7\x0f\xbe\xcf\xce2\x1b\xbeb\xa5P:\xe5\x11\
+J7\x89\x8e6\x0a\x9f\xb5B\xe4\x05D\x95u,@\
+\xc5\xa9\xaf\x02\xd0\xc6WZ\x04\xe4\x1f1\x1c\xec9{\
+j\xf1n\xb3$\xa6\x84\xab|\xb3\x81\x89\xfa\xe5\x1du\
+\x90Z\x0e\x16l\x03%\xe27\xf1\xa5\x12M\x14\x90D\
+\x1d\x0d\x10\x89\xa7\xf9\xf7\x83\xd83\xd3\x04\x02\x0d\xc0\x03\
+\xc0E'Z\xeb\xdc\x0bz>\x1f\x1dj~/\x9a\x0c\
+hO\x00H\xb0.\x01,\xb8Ot\xf4\xa1\x9e\xf1\xdc\
+\x02\xe0\x00\x98\x08pH\xabX\x041E\xde\x07\x07\x0c\
+\x9f\xafg\xcb\x89=\x0d\x94L\xbe\x8f\x19\x7f\xf7#G\
+\x14J3r\xd8\xfa\x8c\xbf\xa5\xd1\x93\xa7\xbb\xd2)\xcc\
+OU\xb1?J\x7f\x96\xcf<\x8c\x0d\x89\xec\xe5\xe4\xa6\
+R\x14\xb5\x8e\x5c\xbb\x84N\x8a\xf9oo-5\xe0\x9d\
+CGB\xfbjI$\xc3\x88\x88?\xf7z\xdf\xdd:\
+\x16\x01\x80\xf9\x7f\xc2\xce\x04\xfe\xd6\xa9l\xff\xbf\xfd\xec\
+}\xcc2\x14B2dV2'R\x88\x0c\x0dTf\
+\xcd$\x95!\xb3\x14\x07\x95(\x0d\xc6D\x19\xa2\xc1P\
+H\x992\xa7\x88B!\x09\x87\xb7x\xbd\x99\x87d:\
+\xfb\xd9\xffu\xad\xe7\xfa\xdeky\xfc\xdf\xff\xdf\xfdy\
+\xdb\xef\xef\x9c\xdf\xf9\xfd\xf6~\x9e\xf5\xacu\xdf\xd7}\
+]\xd7\x8d\xb9\x14&qt\x8em\xe6\x97M\x98~[\
+\xa8\xe4\x99\xa2\xfe\xddj]\xd3\xb1\xb8m\xea/\x02\xd8\
+\xe2\xdc\xb26;(\xc5\xb8\x9fS@1\x96n?\xc5\
+\xd4\xd4\xb4w)lBtC\xda\x1e\x8eM\xa1\xb1d\
+?P\x94\xc2\x84\xe78\x17rgY\x9a\x92\x12\xfc\xf6\
+8E\x95x\x83\xe0\xe3\xea\xafD\xf8\x89L\xc1O\x91\
+\x01\xbd\xf3\xb3\xa4\xc0\x80\xc4\xcc\xa5\x15\x15\xb1K\xee\xee\
+g\xa7\xd7\xcbR\xa4\xc2w\xb4\xaf\xa22\xa9\xb3\xc4$\
+K\x0d\xd2:\x1f~mx\xc4\xf0\x88b\xda\xa7\xf4Z\
+\x09v0\x9f\x9e2\xf2o\xf3Q:s\x83\x17\xbb\xc2\
+\xbc\xf9\x9d\xa2\xb8\xf13_;\x9e?\xce/\xbc3\xd0\
+\xf4\xbf_Qu\xb8\x9an|\xea\xe0{\x8a\x8a1p\
+T\x07<\xc4\xf3\xcd\xfeD\x81\xeb\x0ek61\x13 \
+p\x9b\xa2J\xe0L%\x1f\xee\xad\xb04c\xbf\xca\xf4\
+\x92)%GtL)\xdc\xe8\xc3\x5c\xd4&nQ\x98\
+\x18\xa0@\x1a\xd4\x9c\x9d\xe2gE2\x14S-`\x9a\
+\xc0t\x80\xfa\x8bv\x13\xb7u\xa6\xc0 \xed\xfaqg\
+\x02\xdb<\xa0\xa8\xf6\xc9\x13<\x87\xfePw\xb4\xf7U\
+d*vg\x8a\x87\x89\x99\xaf/\xc0x\xee\x84\xbe\xc3\
+\xf7\xfd\xf3U\xde\xa1\xdd\xe4\xdb\xde\xff\xf7*c\xecB\
+s\xebB9?\x0fWT\xd4[}\xfeQ\xd5\xb1\xc6\
+|x(\x08-\xbd\xef\x97\x15\xa5\xa0\x84\xba\xccX\xc2\
+`\x0c\x99a\xd4\xce\xa6(&\x82\x01\xfc\xba\xa3\x9e\xcd\
+\x13\xe7\xa8\x12w\xf6o:\xa7.\xe48\x17\xda\xd7(\
+r\xfe\xd3\x01\x8b\xcfw\xcfU\xfb\x85\x14{\xf9\xb9\xbf\
+\xa1\xa20\x8b\xf9q}u\x0e0\xfd\x05\xc6\xe21y\
+\xc0b\x99\x9f\xce\x1cn$\xab\xf6\x04\x08f\x07\x92\x1a\
+\xc6\x85\xb2\xbf\xbbsK>\x90M<7\xa8\xdc\xfb1\
+\x0d\xb4K{\xdawST\x92\x07\x80\x14\xc6q\xe1\x01\
+\xc1\xfb4\x93)K\xfe\xae\xca\x9d\xf7\xbc\xcf\x06\x10\x8d\
+\xf7\x86\xf3\x80\x18\xef\xc6\xfcu\xceU\xcc\xd6\xce\x93M\
+g\x01^\xda\x03\xda/\xb6\x07\xd8\xa5\xfeo\xc5T.\
+K\x01\xa6\xe5\xf5\xd1IR\x06i\xdf\x1d\xe4|z\xc5\
+\x9cO\x8b\xb8\x9f\xce\xbb\xf6\xe5vf\x9b\xd6E{^\
+{n{n)\x98\xa3\x90%o\xbd8GHF\x9a\
+\xbd\x9b}dn::lt\xf8\xe8\xf0,\xd9\xd9F\
+@\xc0`\x87\xf4~w\xa8\x80\x22\x03Ci\x17\x19h\
+\x1fi\xcePd\xa9V.p\xd3oOQ\x8d\xb9\xa5\
+c\x8c\x97\x09\x8d\x1a\xa6X\xf0<\x92/\x01\xc8\xd3\xf1\
+g|\x1a\x00\x0c\x9db\x1aDL\xb1\xf1\x98\xc9hP\
+8\x0f\x11\x9c\x92=B`\xb01u\xe2\x80n\x1f\x8e\
+\xe7\x85<\xc4&\xcfa\x8a\xc7s\xea1\xa4\xb8\xc3\xe3\
+\x95\x10\xf9*\x8c)>\x07\x00\x91\x01\x96\xe8\xec\xba\xfe\
+i\xf7V\xa4\xd7\x0d\x15\x15\x83\xe3m\x8ab\xd6\xc84\
+\x06$vQ\x90z}\x0e\xaeRT\xd3q8\x1fx\
+\xdf\xce\xf3\xb3\xa7\x8a\x18\x1fk)*\xc6v\x9fQ\x8d\
+\x04\x94B\x9b\xfa\xa1\xdf\xf8\xe5\x95\xfc\x01\x13V\x00\x06\
+\x9e_\xf2?L\x97\x91~\xd8$8\x0a}<\xa3\xdc\
+\xa0\x8d\xbf\xa7\xc1J}I\x03\x04\x09\x83\x9f\xe3`0\
+\xe0\xa5@}\xcb\xfa\x83yL\xbd\xc64\x07\xd6\xd5\x1b\
+\x0dD\x92\x97\xe2\xb9\xc2\xefe=\x98\xa9\x1a\xfb\x18S\
+\xb0`,\xb8\xe1\x82GR\x5c?\x00\x0c\x1aj\xd4\xa3\
+6\xc9\xa6\x01\x19\x8dw\xd7qx\xd2\xd0\x98\x1b\xc5\xc2\
+\xc7d\x80\x0b\xa4\xf2w\x9e*\xc1\xe2\x8d\xeb\x7fg\xaf\
+\x0ab:\xf35C\xa0\xbe\xc0.\xe8\xa3\x83\xca\x0d\x06\
+(\xe8\xbb\xe5Sp\xd7&\x84sTZ\x1e\xc6\xcc\x81\
+\xf4\xa2a\x87\x01\xc0\x85\xe4\xcf\xfb\xd4\x10(!\x14\xc4\
+t\xa2Y\xc0\xad\x0bE\xfe\xe3\xfb\xe9\x80\x81\x10\xa2\x81\
+\x872f\xaaFP\x85\xb7v\x01\xee\xb1\x19\xf19(\
+\x1cM\xd9\xa4\x13\x18\x094\xd4\x11\x80\x8f\xdeuF#\
+\x17\x9a\xb2]<\xcei\xa7nlE\x98a\xa0\x81\xc2\
+\x8d\x9d\xf9\xe4\xe7(\xaaB\x86\x07\x86\xcfIg\x0e\xca\
+\xfb'\xbbqhP\x8a\xe8\x5c\xf3\xe0q \x85+8\
+@\x87\x13\xad\xf67\x8a\xbc\x90;WU\xcc\xbf0\xc9\
+r'\x16\xcay\x148t\xd2\x91\x10\xb0\xa0\xf1D\xc0\
+%\xdc&OhG\xa1\xd8\xd1\xa1m\x16UT&/\
+\xb8\x98\xa3\xc5G#\xb8\xd0d\xc1\xc9\x82\xf9}wn\
+\xfd\xack\x0a\x0e\x10[\x0e\x1e60\xc6`\x9d\xa8(\
+\x09jP\xe2p\x07\xc7C\xc0\xda\xea\xd0\xb03o\xd9\
+\xe6K\x91pl\xdf\xbd\xff\xa0\xba\xb3N\xb9_\x14\x8e\
+\x14\xee\x1c\x1c0/X\x1f\x98~@\xcd\xc6\xb5\x9d\xe7\
+\x83\xeb\xca\xf4\x08\x5c\xd3\xcd0\x88N\x1e\x9aQ\xc6\x8e\
+\xd0A\xe2`\xe5\xf9c\x1f\xe0y\x03\xf9\x04qf\x9d\
+\xf3\xf7\x1cd\xdcw\x005\x80\x04\xbf?\xb4\xa91\xe6\
+\x04O\x03\xd6-\xc0\x1d\xa6\x9d\x8c\xdb\xb1$!\xbcA\
+<\x16\x08\xed3\x05\x14\x9a\xe8XWL\xd1\x80r\xce\
+\xbe\x84\xa9\x1d\x1e\x05\x8cG\xe4\xe70\xee\x0c\x86\x04\x07\
+\xa1\x0f\xac\x18/'\x85\xdc/\xbc\x9e\x1e\xa8\x0ar\x03\
+-\xedg\x14\xd5t\x09\x17R\x8c\xd1\xe3\xcf\x03\x08x\
+\xbd\xa2\x8c\x89\x0c\x8a*\x09\xa75{\x98\xe7aJ\x15\
+\x00!SL\x00\xf6<^24f\xf2\x12xG1\
+\x1f\x8b\xfd]\x9f\xfe\x93\x9e\xb3\xbcu\x05\xc8\xba\xe3\x1b\
+\x09\x83)\x9c\x14@A\xc97\xd2\x1ds\xb81wT\
+\x99\xf8\xf52%!LnL\xb9\x0c\xc4\x1b\xe0\x05\xc4\
+\xdc\x85[\x00Jx\x0c\x18\xd0\x88\xf5\xc0\xf8DME\
+x\xa9\x14\x8a\xed.\x8a\xca\x84R\xf0\xd2;Kb\x9a\
+\xe7^\x7f\xd2\x12\x98O\x17\xe0%4\xc4\x22\x94\xdeP\
+\xcc\x0e\x01H\x9a\xb7*\xa6\xa6\xa6-\xaaH_?\xab\
+(c\xcf\x9aM\x15\xe9x\xd9I\x91\xbe\xfe\x95\xa2\xea\
+\xa8\xdb\xccl\xb8z\xd7\xc1g,`\xb3\x92\xa2<\x9f\
+\xed\x82\x8a\x8a\xa1f&K\x8cC{{\xf7\xbc6{\
+)*\xa6\x8e;\x16\x83\x03\x15\xc5|\x08)\xc7\xf0Z\
+E\xfaw+(*\x80\xcc\x85?@C\x00\x15\xbco\
+\x006\xa8\xabx|P(\x8a\xc9\x91\xce\xb9\xe1\xb3)\
+\x9e\xa9\x12%w\xf2\xb3t&\x15>\xcd\x9b\x14\xd5\x18\
+.\xa6-x\xaes0\x00Lqo\xcfPXS{\
+\xb4\x0b\xd1\xf7\x14\xaa?@2\xfb[$\xfc\xdewH\
+\x80q\xfbnOP\x14\x97t\xe6P\x03\xe0\xc2\xa8j\
+\xceR\x143\xbb\xd0`\xfe\xc1\xd4\xdc=\x14\x058\x12\
+\xbf@\x9d\xd9\xf6\x1aEa:E\xc7\x16\x00\x9d\xf5\xcb\
+\xfe\x87\xb6\x17\xad\xac\x0b\x9d\xf6@E)\xc8s'z\
+\x17\x03\x99\xe7W^\x13\xbf\xe8\x18f\xe9\xdc\x5c93\
+\xea\xdc\xe8\xa1\xa0\x09\x13C{\x83\x84\x8b\xff\xc2\x8a\x8a\
+R\x0c\x05\xf6NO\xb1\xe0| \x9f\xf4\xfb\x8f\x8e!\
+\x00\x0b\xfb\xa1\x99i\xed\x99\x8a\xaaCI\x07\x93\xfc\x14\
+Wl(\xed\x9f\xc8s\x22\xf2>\x9a\xcdz\xf5\xd3o\
+*\x0c\x88\xc9\xa6\x0aK \x9f.\x1d\xca8\xbf=\xdf\
+\x9ei0\x93\xed\x15\x15\xc3\x87\x0e\xba\x00\xd9\xdb\xcc\x98\
+z\xa0\xcc\xb5\x8f)2\xe4#t\xee\x90\xc0\xf1s]\
+\x88\x85)\x9e\xd7]\x00\x08\xd6\xf4O\xee\xf0\x98\xc0\xbb\
+<\xed\x87\x0e$\x0c8\xaf\xcf0\xe93\xe3\x80\xfa\x9b\
+\xf3xp\xaf8R\x95\x14\xcd\x12\x9c\xd8\xef0\xc54\
+P\x99\xca\xc1\xac\xad\x0e\xe0\xc2\x9e.\xe9\xdeu\x92\xaf\
+#\xbb\xfd{\xb2\xae\xa2j09oa\xffh>\xd7\
+\x99s6\xb7t\xfb\xf8\xf0\xef\xc3\xbb\x87\xe9\xf7\x0c\xe7\
+\x1d\x1e4\x9c/\x9b{\xde\x9c\xcd=\x01\xb8\xac\xe9\x0e\
+\xcf\x071\xe86\xce\x05z7\x1e\xee\x0f\x8a\xaa12\
+\xa3\x1b{\x1b\x8d 7R\xc2c\x8a\xc2\x9f9\xee0\
+9`\xce\x92\x0fq\x8e\xbb\xa1\x15LR\x17\x5cq>\
+\xd8$6\xf2K\xcc\xa5=\xcdf\xb2\xba\x5c<2\xe0\
+\xb6z\xf6\xf2\xc0\x9b\x07j=y\x08c\xb7\x99\xd6@\
+c\xd4\xbf/=\xff]\x9eh \x15`\x00\xa0l\xf0\
+\xa0\xa20H\xa3ad&IL\xaf\xbaHQ\x8de\
+\xbcZ\x91\xfe~\x03E\x05\xdc\x1cmI \x00?\xc0\
+\x09\xcc[\xf2\x1f\xa4\xb0\x98\x02\x93\xc7\xe1\xd2\xcf\xc2\x83\
+\x91A=\x06C\x9a<\x8f\x86#\xf9+\xf5\x18u \
+y(\xf5\x17\x0dZ^\xb9\x8e0\xab)\xbc\xe9\xb8\x03\
+\x94Q\xe8\xa3\xed\xa7\xbes\xbe\x8cd7\xcc\x06\xfb\x12\
+h\xbc\x08\x18kh\x89[\xfc\x1e\xf63\x9eK\xcc\xaa\
+/\xf1:\xa4p\xbf\xd7^\x1eH\x82,-\x8e\xb1\x93\
+Hm\xa8\x0b9\xef\x90\x92~VQ\xf2\xfb`x\xc3\
+$\xefK\xd0\xb9\x8ex}\xc1\xa4&?\x82\x19\x8e\x04\
+\x86\xba\xd2\x9f\xa7\x89\x1bF\x07\xbe\xaf\xb1\xe7\x95\x84\x1d\
+\xb35\xb4Q\xfc\xc7\x85z6\x0fz+\x08\x86\x13\xfc\
+\xa0~B\x09\x87r\xce\xab\xfe\xf4\x89j\xc3\xe7?\x0a\
+\x9di\xd9\x86\xe6\xd5^\x04$\xfe\x14\xca\x14\xe8t|\
+\x99\xd3\xe9\xceZ\x8c\xf9\xe0A\xe5\xc2Q\xe0\xf39@\
+\xdcYp 9WX\x83\xc48\x97\x93;D\x06\x97\
+\xccT&\xbf\xbb\x95Y\xcac\xdd\x86\xda\xe6\xff\xd2\xdb\
+\xb9m|\xeb8m\x8c\x9a\xaa\xab\xb9\xba\x98\xbd\xe5\xce\
+SZ\x18\xe3\x1b\x14\xe9\xcf\xff\xadH\xafKk\x12n\
+\xd1\x8c\x84I\x09\x09\xbe\x91\xe5\xf6\xaf\x8a\xf4\xefoR\
+T\x1b\xc0,\x8a2\x9f\x95\x0d\x91\x86~{\x88\x22\xfd\
+\xbb_+R~\xb6\xee\xccuf\xa6\xc4p\xe6\x01\x8a\
+\xf4\xfa\x95\x99\x87\xcfL\x09\xd5\xcb\xfb\xceL\x91\xbe~\
+p\xe6?g\xa6\x8dt\xbc\xd8\xf8\x0d\xe3\xb4\x10\xc7\xef\
+\x1c\xaf7^/\xbd>\xadH\x7f\x7f\xe8\xcc\xe93S\
+!?s\xc3\x99\x1b\xccL\x1b\x84~\x9a~\xde\xf8\xc5\
+\xf1\x0b\xe3t?\xc7\xd3\xc7\x87\x8e\xd3A6\xbeL\x91\
+^?\xa7H\xdfw\x8c\x22}\xfd\x90\xa2r\x99\xbd\xa9\
+\xeb\xb8G\xe1\xc2\x1cx\xc6G1-\x02\xb3\x1d\xc6\xb8\
+\x19\x89\xc6\xe4\xa5]Q\x91^\xff\xa8(\xd7\x07m\xfb\
+d\xbb\xee\xe0\x9f\x5c\xdc\x8dac\xdcMt~\x9c\x08\
+\x85\x19\x93\x0b\xf2\x18+\xe6\x82\x9aqut<\x03\xe1\
+\xc7\x9c\xce.\xd1 \xd0\xb113>\x08m\xa8\x0b\xdd\
+\xc9\xbcN\x14\xbcq\xa0\xa9D\xbb?~J\x91~\xdf\
+*\x8a\xca<\x86\xe7\x13\xca\xa1\xdfgl\xa4$\xce\xb8\
+q\x8f\xbb\xb1\x83\x83\xdb\x15U\x87\x9c\xe7\x07WU\x90\
+W\x00\x19\xbc\x19@<\x99^\x80F\x8a\x7f\xc7\xf3\x0d\
+\x15\x09\xc0\x8c\x0d\x96\xe7\x0f\xe0\x86B\x0aJ\x1b\xda0\
+\xa8l\x06dBC\x8b\xa6\x95\x0d\x17)\x08\xff1\xd6\
+\x8c\x02\xc5s~\xfb\xf3\xe1\x83\xb9\x03C\x07\xe6\x01R\
+\x1d\x0a$\xc6u\xba\xf0\x8f1A\xd6\xfeF'\x12\x0a\
+\x1d\x1dJ\xff\xbb\x18W\xa9m\xff\x98\xea\xe0\x03\x08\xc1\
+\xbc\x12\x13 '\xaa\x9182\xe6\xd4\x00\xc4\xf0o\x8a\
+\xb4\xed\xfdT\x91\xbe\xfe\xa5\xa2t\xf4\x18\xd7\xc5X#\
+\xc6p\x010\xc8jRf\x93\x9a\xf2\xae9\xef\xb1\x8f\
+\xfdTQ\x12\x98x.\x98c\xfd_\x93\x7f\xe4\x84\xf8\
+\xe5n<S\xfa\xa9y\xbcTJk\xe7\xce\x89\xad\x12\
+\xc9\xc5\xf3\xfc\xf8\xc7&\x8f\x16m\xdcd~EUP\
+\xb8\xc0\xa0p\x09\xea\xf5:\x8a\xaa\xe3\x85\x89\x0e\xee\xf7\
+H\xb4\x00h`xx>r3\xb7\xa2tj\x9b\xdd\
+\x15\xc5\x5c*\x7fN\xcc\xa3\xdeY\xdc\xea\xd1\xf2\xc1D\
+\xca\x00\xc2\xf4r\x10g\xd3\xc6\x94H\xa6\xf46\x855\
+\xe9)\xd1\x1e~]Q:\xd6H\x0c\xc2\xad\xd9\x059\
+\x94\xfei/\xa7H\xd7m\x969R\xa4\xf3v\xb8\x9a\
+\xa2\xac\x17\x18\x03\xcdS\x8a\xf4\xf7\xb7)\xd2\xd7\xfb4\
+\xfb6\xfbVR\x06\x17\x9e\xa3g\x15\xe9\xe7>\xabH\
+\x7f\x7f\x9e\xa2\x00<\xcd&\xcd\xa6\xcd&\xd9|\xb2s\
+\xa3\x87\xb2\xec\x0eO6\x17L\xeb7\xa5\xeb)\xd2\xeb\
+\xf1\x8a\xf4z\xa4\x22\xbd\xbeW\x91^\x9fW\xa4\xdfw\
+\x8d\x22}\xbd\x99\x22}\xfdVE\xf99\x8c\x81$Q\
+\x1d\xee\x9e\x22\x15\xbe\xa3\x1f\xa4H\xebzx~\x8a\x0b\
+\xfc\x5c\xacf\x17\xfbt\xde\x0c/L\x91\xfe|\xf8C\
+E\xfay\xdb)\x8a\xfb\x7f\xf3AE\xe5\x16o\xb3\xd1\
+\xe6\xb7\x8aJBc\xa6J\x06\xf6\xde^Qh\x01\x86\
+\xefS\xa4\xdf\xf3\x06E\x06VR\xa4\xd7O\x0dw\x1a\
+\x0a\x80\xf9\xa8\xc2\xc0\x84\xae\xe7\x1c\xc3\xd9\x87i\x9fo\
+\x8eS\xa4\xafOT\xa4\xd7\x9f(\x0a\x00?\xfc\x88\x22\
+}\xce\xc7\x14\xe5\xbe\x0d\xd7S\xa4?\xff\x94\x22\xbd~\
+Z\x91\xfe|[E.\x98\xee\x19\xdeS\xd6\xd1\xe8\xde\
+\xd1}\xa3\xf4\xfeF\xd3\x15\xe9\xf5\x96\xd1\xad\xa3\x94?\
+\x8cV\x18\xad8J\xe7\xd9\xe8dEz]]\x91^\
+\xefT\xa4\x7f\x7f\xbd\xa22\xc3\xbbY\xe1i\x122\x97\
+\xdc\x5c\x91\xbe\xef_\x8a\xf4\xba\xddp\xfb\xe1v\xb9P\
+K\x91^\xbf\xacH\xdf\xf7ZE\xc5\xa4\x22q\xc4\x8c\
+\x13\xaa\xb2\x01#\x00\x11L\x12a\xd2M\xde\xad\xa8\xc6\
+\xdaY*\x15\xfb\x90\xe7\xdb\xe32\xdf~\xbf=\xa9=\
+)\xefGi\xe7\xa8\xa4N\x8f)\xa3*\x8c\x07:\x82\
+\xed\xe2m\xf6F\xc1\xe4\xaf]W\x91^\xefM\xa1<\
+h\xd3\x14\x9b\x14\x8a\xef\xf8\x08Ez\xddC\x91^\xff\
+\xa3H\xdf\xb7\x92\xc2\xcc\x07\x01&\xe7\xa68\xa7Lw\
+\x09\x09\xa7\x01\xae(\x84\x90\x82\x91?\xc3\xb0\x80\xaa\x8c\
+\xc7N\x1f8&\xff\xf4~\x94g]-T\x01\xc8\x9e\
+B\x13\xc0\x16?\x9f\x82\xc9&\x9b\x14\x0e\x8c\xa9\x85\x19\
+Cc\x22\x0a?\xbc,\x5c\x08L6\x9dl\x96\x01\x92\
+%;wx\xf6[\x98\x98y\xccg\xca\x13&\x07M\
+\xbe4\xf9R\xa6pw&\xae\x1eO\xdb\xacl@s\
+\xa9io\x9a\x96\xf2\xd4i;N\xdbaZ\xca3\xa7\
+=1\xed\xf1i)?\x18}LQ1\x8d\xd8\x07\xdd\
+9\x07 \x8f\xe98\x0b(\xf2x\xd8\xdb\xf3xX\xc6\
+8\x92\xd7\x1bp\xd2\xbb\xc9\xef\x87\xbc\xc3\x85\x1c\xc0V\
+\x5c\x1f\x1aS4\x9c<\x8d%\xcc\x8a\x19okF\x16\
+\xccM\xa8\xe9\x83\xbb\x0chm\xe2\xf1\xc4\xceG&\xef\
+\x9dl>\xd9<{\xf2t^\x17\x06\xc4'\xcb)\xcc\
+<\xda\xa2\xcak(xi\xecQ\xe8a\x92x\xbb\x1b\
+0\x14\xe4HD\xb7\xe9\x98{\xed\x9d\x8a\xf4z\xbc\x22\
+\xad\xd7\x19\x8a\x947\x1f\xac(\xd2\x8c\xf1%\x8a\xf4}\
+\xcf+\x0a\xa3\x06\x0f\xb0\xd0\xccojF\x0e\xe7\x9b\x01\
+\x06\xea\xc0\xf0\x1000\x8d\x97\x04S\x1f\xc2\xe4\x96\xba\
+\x8c\xfa\x91\x86\x18\xcc\x22\xce\xd1~\xa7\xbf\xf6\x8e[\xb0\
+\x02D`\x06\xc2\xec\xe6>\xd2\xc8\xe19\x02\xc81c\
+-\x1a^\xe4\xb7\xe4o4^(\x98\x91\xc4b\xae\xce\
+\xfb!\xcf\xa5\xb0\xc7\x0b\x00\xa6/\xf7\x0d\xca\xbd%d\
+\xdc\xc7\x90D\xdfdST\xbc\xbdhX\x9bQ\x81\xc9\
+.@v\xe4\xbb\x5cw3\x84#\x0f\xe4sp\x9d\xdd\
+\xe8\x0a3~\xea\x1d\x18\x044|\xf1\x0a0s/\xa6\
+7\x00\x901m\xc8\x8c\xccQ \xc9\xb8\xc3\xfa\x86e\
+\xca\xd8,\xd5\x0d\x03\xc1\x7f\xde\xf3\xdb)\x8c\x19#\xf8\
+\x9f\xec\xbf^\x0a\xf8>r\xe2\xef\x8f\x85\xe8\xce\x7f$\
+r\x14\x0a/e\xf2\xf9+\xbd\x05\x16\xf6\xcf{\xa1*\
+D\x84\xeb<\xf7\x7fI\x9c\xf9\xbd\x00\x0d\x14\xf2\xdch\
+:\xe9\xd6\xd2BMd\x83\x88\x05\x09\xc2\xe2\x7f7\xf9\
+aW\x80\xe2\xde8\xfe\x94\xa2\xd2.{\xcc\xde\xd4\x8f\
+:\xe4=\xbf\x9b\x07*\x93C\x0a\xa0\x03\x8d\xb0Y\xab\
+9\xf8BG\xa5I\xff\xb6[\xb0\xdf\xf6\x01\x8b\xd6\x7f\
+\x93\x0e\xc9\x8eN\xed*^\xe8P\x97\xfen\xc4\x09\xd3\
+5\x16$\xe6o\xb3\xb9\xe3KAed\xb8\xfdy{\
+^{^\xe5r\xceX<\x03(\xcc\xd1\x9e\xda\xab{\
+\x10S\x9a\xd8uFvPd\xadu6\x91\x8a\xff(\
+\xd0\xb8\xce~@\xa5l\x95\xb6\x15MJl\x0c\xb8>\
+\xa39\x07\x81}t\xf0\xc8\xe0\x91\xcc\x94\xe8:\x1e\xd6\
+X\x86\xbb\xfb\x1d]\xa7c0\xbf\xb5\xa8F\x92C\xdb\
+\x05\x22\xff\x16#\x88\xbf\xea:\x84\x8c?\x02\xb1\x8e\x83\
+`\xa3\xee`\xe6\xdf\x0d\xbe?8Ys\xb7\xd1\x00\xe7\
+qQs\x96u1\xd9OQi+\x0d\x98\x05\x95\x14\
+\xc4\xddZ\xaa\xe8\xcc\xe3\x86K\xa2\x846~!KZ\
+\xfe\xdc\xb9wO\xedi\xed\xb8\xef\xe3d\xdcu\xa0&\
+\xef\xf7\xf8\xa0?\x9bI\x80\x86\x0ai\x01\xd4 O5\
+\x88\xf9\xa72\xfd\xd9\xb1:\x80\xbd\xaec^:\x9a/\
+?\x8f\xcc\xa3\x0fJ\x945\x92\xcc\xf7\x8e\xce\xbb)R\
+\xd1\x997%,6f\x90w\xa6\x0b\xd8\x8c)\xdc\xe1\
+\xd1\xc6\x19\xf8\x08/\x0d(\xbc\xbc\x0f\xa8\xb1$\x5c\x00\
+\x8b\xec\x17\x98\xb1\xb0\x0f@\xc9:FQ\xb4\xec\xd1\x99\
+&a\xa03\x89\x99\x1dT8(\x83H\x02\x98\xa2\xe1\
+\x8dv\xf2\x9c\xa2\xea,\xb3A3\xa5\x80\x8e\x82\xb5\xd3\
+A\x81\xfbF\xda_\xbe\x91;\x0a\x9d[\xfb\xa9\x8aj\
+\xee2\x1b<\x80\x8c\x994\xd9}\xfcWEk\x1b\xfb\
+(\xeb\xf9,\x85\x13\xd6s\xabu\x0d\x13\xcan\xf4\xa9\
+\x5c\xef\x18&\x1cd\x1b*JA\x1f\x92\x22\xf6\xff\xe9\
+\x83C5o>\xe6U\x9b\xc2\xcb}\x89\x03\xce\x85O\
+$\x5cHS\xdca\xc9<\xa3\xf7WT`\x17\x12x\
+\x0d\x04\xa0KG\xcb\x8c\x83\x00<%=\xf8h6\xbd\
+\xca\x1d\xa4\xe6\xb3\x8a\xc2\xe8\x80\xf268@QMc\
+\xa0\xd3i\x06\xd0\xf0]\x8a\xf4\xfa\xb9\x14\x9f-s\x8c\
+\xc3\x8cR\x09\xe7]e\xde|hC\xbd\xdeR\x01\xbd\
+\x89\x0a\xe8\xb8\xdf\x98\xeeX\x13L\xc7\x98}\x10\x93\xbe\
+X\xd7\xea\x87,\xed\xc4\xff\xf2\xf4>\x0eMqX\xd5\
+\xe1\xc5]\xde\xc0Ph\xde\xddQKw\xb7s\xbf_\
+EQ\xcc\xf6\x9a\xed\x15\xa53>\x5cI\x91\x13\xb5\xa3\
+\xb2\xf7\x04\x8c\x9f\xaff\x15\xab\x00\xb6\x0e %Q\xa0\
+\xc3hFRt\xc0\x19\xa7\xe6\x84)\xcc\x07-\x09\xc2\
+\xd44\x9fF\xab\x94\xfd\x5c\xfd\xb0\xdc\x11C\x22dM\
+s\xb3\xb7H\xc1\x15c\x81\xf3\xe0Q\xed\xf8\xa5#\xcd\
+\x18\xbd8\x1f@\xac1S5\x90\x83wK$\x8e\xfe\
+\xfc\xd1\xc9\x87\x99@\xfe\x82\x99\xa4\xa5a\xcd\x1f\x14\xe9\
+\xb8\xdbH\x91\xa5^\x9dD\x00\x8a\xf0\xc5\x06\x22W\xee\
+\xce\xdbf\xc7NZ\x92Vef\xda\x0c\xce\xe8:c\
+\xc3-\x14\xe9\xef\xafP\xa4\xd7\xd7(\xd2\xeb\x0d\x8ar\
+\xde\x05\x05\xf7eE6OK\x91\xafo7\xc6\x91\xf1\
+\x9d0\x8a\xe8\xf8\xdce\xca)\x09,\xde(\xe4\x03\x8b\
+w\xc0\xe4\xe4\x84\x8e)\x03\xe3\xaf\xddAQ\xcc\x183\
+3\xe1\xc7\x95)\x9f\xa4^KTf__W\xa4\xd7\
+\x05\x14\x05\xf8\x8e\xfd\x13\xa6\xcdE\x8aJ\xa2f\xa0s\
+\xb2lW\x00\x85\xb9\x15\xde\x09\x92\x08\xcc[\xf67\x0a\
+\x93\xf6\xd7\x8a\xca\x94\x95D\xfb\xbf\xec\xca\x8e\xb6\xf9\xe8\
+\x1cQ\xc8\xb1_Dg\x9f\xf3\x0f s\xc1\x14z\xff\
+\xa7wct\xc3\xed\xdd\x05E\x98\x14>\xa3\xa8$\x85\
+0\xfdv\xc9\xa2\xa8\xae\xb0X\xab\xd2\x86{\x1f\x9b,\
+\xaf\xc8\x85q\x8aj^;c\xfbF\x06B%\x15X\
+\xbf\xf2\x0ab\x1dR0\xd1XC\xaa\xc9\x94\x1c\x8f\xff\
+\xccV\xa6'T\x0c\xa8O\xf6\xe6\xae{\xdfGR\xd9\
+\xee\xa4H\xe9\xd7\xef\x15)]_3Ez\xff\xe3-\
+\x14\xe9\xdf\xcdHq_>\x87\xcf\xd69\xdc\xde\xa1(\
+\xa6\x85\x9c\x9b1u\xe5\x1d]~\xd2\x1c\xa40S\xea\
+\xc5\xfc\x5c\xe6<i\xb8~\xdaO\xd7\xf7\xd8\xd1c\x8a\
+\x87L\x8c\xa1\xa3\x00\x83\xc17\xd3@1\x1dX\x18\x7f\
+\x98\x15#\x11\xd1\xdd\x9d\xa5*\x84\x7fm\xe0\x18\xaa\xb9\
+\xc7\x0e\xc7s\x0a@\x0f\x13\x10\xc9/\x9dk\xf2s\x0a\
+3\x9b\xd7\xc5\xfbD\xa2\x0b#\xc9\x80\xe8\xe0wf\xc6\
+\xfd\xce\x9d^\xa6dP\xf0?o/\x8f\xc7:\xa0*\
+\xf2\x12:\xc1H68\x87\x8f\xcd!\x0f\x85\x14U\x03\
+\xc8\x8d\xf4\xc9a^\xef\x98\x0a~UQ:\xf21]\
+\x0afZ\xdfs\x0bI\x1e^\x1d\xe4G\x9co\x06\xc2\
+\xc3\x83\xc2L\x06\x1aF\x00g\xe4\xe3xI\x85W\x10\
+\x1de\x1a\x16\x5cW\x80w76b_\xe6sS\xe8\
+\xf7\xcd\xbf\xa1\xb0\xbb\xa1\xc7:\x0f\xef\x05:\xfe\xbd\xf1\
+\xee1\xfd\x81F\x13\xfb\x06\x9d~$\x01\x98@r^\
+s\x7fh\xf4\xc2\x9c\xe2\x1c\xc4\xa4\xd1\x0d\x88\xd0\xda{\
+\xdf\xe3y\x0f\x06\x0e\x926\x98\xd4}\xef\x00n,\xeb\
+\x92z\xd4\xf5+y7\x92\xad\xc8\xe7\x9d\x0fG\xc3\x19\
+)\x02y7R\x10\xa4\xb7xP\xd9\x1b%\x1a\xa00\
+#\x00\x04\xc9\xbf\xa8\x93}\x1dF1\x1f\x12\xa4Es\
+\xac\xaf*fH1'\x98\x1b\xc7\x05\x07\x00\x80\xf2\xcb\
+\x06\x07r\xc2\x07f\xe1\xa0\xa5\x80\x82\xe3\xd7H(A\
+X\x8d\xc4\xc5\x02\xb6iK\xde.g\xab:`P\xcd\
+\x87\xd9\x17\xbft$\x01\x0c@\x9eX@\xdc\x18\x10E\
+\x12O\xc6\x021\xe6\x0b\x0a\xd1\xd8\x1b\x16\x14\xa5\x15\x14\
+iC\xbdXa*\xdaC.\x10\xde\x5cQ\xb1=\xce\
+,S{\xf6\xf0\xc6{\x7fEi\xa6\x03\xa5\xb9\xa5?\
+2\xb5\xf5\xdb.\xd8>`\xaa\xd8\xae\x85B\x9a\xcb\x91\
+;\x0aB\x0e\xf5\x92\xb1Bq_\x1e\xf2\xc2V\xdfr\
+\xf5\x0a\xc9\x16U\xf8\xa79\x91\xe8\x10\xd3\x8b\xbaN)\
+\x14\xe2\xc1\xe9\x8aLq\xfdQ\xf3\xa3\xcad\xcf\x9a\x93\
+\xc1e\xa6\x5cR\x10\x19\xd1J\x87~\xd7Y\xf5}\x0c\
+\xad\x12\x0f<\x85\x14\xe3@~\xedB\x06M4@\x11\
+\xda\xb89| 6^\xb8g(J\x01\xcd\xfb\x9c\xfa\
+\x86\xdd\xd7\xdd\x19\x0dM\xaa\x1154q\x93\x83\x15\xf9\
+\x01\xc9\xf79\x95\xa7\xb9\x90\xc4\xf4-\xdd\xab\xae\xc3\xcb\
+\xd8C\xc6\xf0h\xec\xcf~J\xc8m\x06F\xe2@'\
+\xe3rSX\x99\xbfm\xf7\xee\xa93\xbb\x82O\x16:\
+\xd9D\x87\x8d\xd7n\xf9lhY\x03\xb7}\x99\x13;\
+8\xca\x94A\x9b&\x05b\x8c\xcb\xa7\xb5\xdfyl\xd4\
+jvK\xdf\xbc\x9a[JG\x84y\xca\x98M\xd9C\
+\x81\xc2(\xd6\x09\x00\x0f\xf3Sm\xe2\x05\xc2\x1eZ#\
+w\xd2\xd1\xb2\x86\xe9\x09\x1e\x0bv\xcd\x0d-\x13\xdac\
+\xc64Q\xc0\x03\xf80\xee\xca\x9d\xfb(\x14\xa1z\xa1\
+\xa5g\xa3\x03\x89\x05H`#d#\xe7\x00d\x1f\x22\
+\xb1\xe2\xcf\xfd\xbe\x90\xac\x80\xdc\xd2A\x8c\xfd\x81\xfd\x09\
+\xa4\x98\xcf\x03\x10\xc88\x22\xbb\x93G\x87\x07\x8a\xadM\
+\xbd\x90\x14\xc48,Kb\xe2?\xdcq\xef\xe9\xc6K\
+\x85\xc6\x0d\xca(ce\x9c\x08\x06\xd5\x8f\xf1z\x00\x09\
+\xac\xcf\xddm\x1aC\xa7\x01\x0f\x0aSl\x07\x0bX\xf2\
+pnW\x10\xc4Aw\x86\xe7(\x9f\xd9u\xc4\xdas\
+\xba\xe9\x13A%3P\x92\xd2\x9d\xf7N\xde[\x15\xe2\
+_\xea\x0e\xc0\xc1\xd7\xcc\xa0\xf8\x84\xe7\xd3Z+\x1cR\
+\x11\x12\x8b\xf7\xa5\xb4\xfe}\xd5X:\x80C\x9bI\x86\
+\x16\xdc\xfb\x1a\x9d\xc4\xcc\x078\xaf\xfa9\xeac}\xca\
+\x05\xe4\xde\xd9\xcb Ee\x0e\x05r\xee\xfd\x1c3B\
+y\x98\xcb\xc5|\xf4\xb0\x22\xbd\x9e\xa2\xc8\x85\x5c\x0a\xe7\
+#\x832\xfe\x08/\x9bl\xe6\xf7S\xaf\xdb\xc5K\x87\
+9:\x13\x14^x\x84@UU\x87\xf5\x9f\x85\x02\xcd\
+~\xdf,\xac\xa8\x9e?'\xf8a\xea\xf73Ee\xf6\
+\x85&\xdc\x9d\xc7\xa0\x98\xaf\xa3(\x00\xcf\xe0\x0ekS\
+1\xa9\xe2|3\x95sx\x88\x22#\xfe\x1d\x00\xbd\x87\
+\x81E\xef\xaf\xb9\xbcY\xab\x02L\xbco\xb2\xbe\x9a=\
+\x15\x95\xab?\xd2%kZ\xf3\xe7N\xcf\xf9\xe0\x1f)\
+\xfeY\x99\xfd\xe9]<Q=\x97\x82\x9fv\xb1\xe7\xc3\
+\x93\xd6\xf6\xaf`\x86\xc4\x03\x05x\x08\xef\x80?*\xaa\
+\xb9\xe9Py\xe9\x88\x180i~\xa2\xc8\xc0e\x07\xa0\
+\xaego\x00'V\xcd7\x15\x95I\xa0\xd7!\x00\xcf\
+p\x05Ez]n\xb8\xfcp\xf92\x963\xf2\x1b\x80\
+l\x03\xeb\xd1I\xf3\x985<\x0e\x9a%\x15E\xe3\x0a\
+\xf00\x9a\x7f4\xdfh\xber\xae\xe0\xfa.\xab5i\
+\xa7\xc7G\x8e\x8f\x1a\xeb\xdf\xaf\xa8H\xcbceEU\
+\x18z\x9fMOG\x9e\xba\x11\x9e\x07\x00\x97t\xbc\x0c\
+,#)\xc4\xe3\xa5\xd9CQ\xa4\x5c\x8c\x8f\x0c\xe0\xce\
+\xf7\xbd=YQ1\xb3>\xad\xa8:\xd0\xee85\x1b\
+)\xd2\xfb\xbeVQ$q\xc1L[\xb1\xbb.\x93S\
+'\xa7\x89\x09\x17\x1d\xa8\x07'\xff\x94$\xb1\xddL\x91\
+^\x17R\xa4\xd7+\x15\x15\xe0\xe7\xd78G-Ec\
+\xaaC\x06\xe8\xee.\x85\x09\x92\x99\xbc\x1b\xdf\x91\xb5\xea\
+/K\xab\x0e\x856\x9b\x07\xfe\xbaL\xe7\x08O\x031\
+\x9d\x1e\xf3yv\xae\x19\xa1\xd7\x1a\xc8>\xcf\xe3\xcfN\
+\xaf\xcc\x0f\xed}\x82\xd7O\xfb\xb8\x22\xbd\xce\xadH\xaf\
+_V\x14 2\x5c\xde\x19\xe3\x05S\x95B\x00\xd3Z\
+\xce\x07\xa4\x890\xeb\x9c\xdfI\xb8\x22\xe9J\xca\xb6R\
+F\x9e\xf3\x85\x0e\xa8\xf39\xd3\xbeK\x91\xbe\xef6E\
+\xba/\xeb\xa4X\xb7L\x19\x19_\xa7H\xdf\xf7\x8d\xf6\
+\x9b\xed72\xe0\xdau\xce\x1f5`\x8e\x94egE\
+\x19\xaf\x9b\xb2\xc03\x94\x07\xe6\xbc\xef\xb2\x0c\x14-\x91\
+=\x81\xd0\x82\xcbyE\xeb\xe9\x0d\x8a\x8a\x22o\xc0;\
+\x0a@\xa4\x18\xd3=\xad\xc8\x92\xd0\x18G\x86\x87\x88\x01\
+\xe6\xb8~\x92\xb4]\x9f\x19\xb0\xcb\xb4\xcbTL[\x18\
+\x92\x06X\xc2C\x07)\x22&g\x00*HT1\x81\
+\xc5$\x19\xd34\x9e\x1f\xcc\xda\x98\xf2\xc0T\x08\xbcK\
+\x0c\xa8\xc5\xfezx\x8e\x92?x\xbfE\xea\xc1\x98Y\
+$\x13\xb1\x7f\x18\x90\x0a3K7Ba\xc4\xc5\x187\
+\xa6E\xb8\x80\x03@\x22\xaf\x88F\x1fR\x08\xc6v\xd2\
+\xc8\xc3\x84\xd7R\xe4\x18\xf7\xcat%\xc6F[J\x14\
+\xa6\xd1\xae\x8b\xda\x9f(*\x0f\x94\x7f(\xcaT\x95(\
+L\xb9~P\xce)\x88\x91\x84\x92\xd7!\x0d\x18\x84\xeb\
+F\xf7\x1f\xd2o\x1a\x0f\x009\x98\x04\xba\xe3\x1f\x85<\
+\x85;\xcf\x0f\xc0\x01\xf7\x13 \x84:\x16\xa0\xe0zE\
+Uo q\xa6Q\x84&\xde\xde\x0f\xd1(\x85\xc1\xca\
++\xd3\x16\x90\x22\x92w\x19\xd8\x89}\x18i\x0a\x00\x03\
+u)u1u-\x12\x053S\x03\xc8vc1\xc6\
+\xd4B\xe1'\xefD\xf2\x82\xa4\x82\xeb\xdf\xf7\xe0C\xea\
+L~\x83\xf4\x093H\x9b7\x8f\x22\x81\x12\xa1ho\
+\xdf\x90e}\xf0_Z\xe6|G\x81KBJB\xc3\
+/\xeei[\xf2r\xaa\xb5\xe8\xc2)F\x06\x0cf7\
+23\xa8<\x06\xe8\x08BY\xe0\x81\xa4\xd0\xc0\xec\x0c\
+\xea\x0e\x9dB6x\x12\x0e:X\x98N\x99\xb9\x00\x02\
+\x19L\x06\x1eh\x95\x8dW\x96\x0d\xa4]CQ-|\
+4p\xa2\x9c]X:\xbe\xcda)\x0eu'\x7f\x9b\
+\x8aj\x84K\xb2\xc6c\xecUuv(0\x7fm\x84\
+\xc6\xd4U6\xf0\xf6\xf6\xf6/\xed_2\x10\xd0!\xfc\
+*\x17W\xad\x1e(4\x80h\xd7\xd1xZ\xdb\x19\x09\
+(\x05\xf5\xcdS\x7f\xcc\x9d\xcd9}\x7fx\xdf\xcb5\
+\xcb7\xcbWT\xda}\xec\xfel\xcdZh,\xa1\xb6\
+m\xdf\x99\xd4Da\x06\x90s\xad\x178?\x1f\xf7v\
+\xc6\xe3\xb1!c\xf6\xe3\x8eb\x5c\x7f\x5c\xd5\xd1J\xa3\
+Q1Cbr\xb8\x91N\x12n\x80\x1c\xa8.\xc36\
+\xb7\x00\x00 \x00IDAT\xa5\x00\x18\x14\xf4\xcc%\
+\xe6s<\xa0\xc8\x89cW8\xb9\x93\x11.\xc4\xf7\xfa\
+\xc1d\xbe\xf1\x12\xde@0Gy\xc1n\xf2\x98\xeb0\
+&\x8e\x8e?\xe3\xaf\xce\xee\xdc\xbf\xa7\x8e\xeaL\xf0\x02\
+\x11t'#}\xba\xdcqJ\xf7\xbd3-\xc4\xcc\x0d\
+\x8d\x94\x0f\x1a\x0a\xef\xa08\xe1\xe6\xea\x82\xa2YF\xfe\
+\xe0%!\x0a\x97y3KbC7eR\x8aBi\
+\x0a\xa3\x80f\x1dB\x99B\xe3\x8b\xe6\x17\xc6\x89\x99\x04\
+Pi\xe3~\xf3s\xe8\xc4C\xd1\x22a\xe5?\x12g\
+6\x5c\xcc\xdb\xd8\x17\xd8\x88\xd0\x8e\xb1?\xf0\xb9\x19\xdf\
+\xe7\xc2+\xb4\xa6\xbe^\xe1eA\x07\x17\x06\x00\xd2%\
+\x17\xb0\xb9\xb3\xf8h\x19\x07\x15\x1aq\x7f~\x0el\x5c\
+\xf9\xc3\x93\xc3\x05\x16\x94\xf3\x90\x18p\x90\x19\xa1\x1f\xcc\
+\xa5\xa8\x10u\xf6%\xc6\x03r@\xc0$\xbas\xea\xaf\
+554(\xb50_\x0e\xed\x9e\x8f\x98Fa\x134\
+\xe6\x1f\x879!\x07\xce\x1b\xac\xc9c\xae\xbd\x0b\xf8\x18\
+\xe3\xf6\xe9\x0ex\x1a\x5c\xec\xfd\xe1\x12w\xd0\xe8\x5c3\
+\x9d\xe0\x80t\xff\xd3\xf3\xd6>\xe0y\xdd.8B\xeb\
+\xcb~z\x97\xa9\xa9\xa7t\xeb\x1e\xcf\x00\x0a\xff\xe6\x02\
+E\xa6\xa2f\xedd\xee\xdb}\xab\x5c'\xcc\xf9\xe2\x00\
+\xe6\xc0\x06\xe9g]\xa4cT\x9a\xc4|\x0elk\xa6\
+\xd3j%\xb1\x01XDS\x19\xae\xe5\xd6Ls\xbd\xf8\
+}\xc3\x03R\xec_1t\xb4\x1e62\xa5\x7f\x9b\x8a\
+\x8a\xebu\xdc\xbcW\xe1\x84k\xf7\x8ajg\xd7\xe5p\
+\x93FB\xa3\x82l\x09\x9b\xf1\xbc\xcf\x85\xd1\x8f+\xad\
+\xb3v\xab}*\xea\x9e\x01\xa6f3Ez\x7f[*\
+\xf2\xfd\x5c,\x03\x8dH[\xf6\xb7'\x04\xeb\xda\x09t\
+<wc\xef\xa3t\x86\x0dDF\x81h\x8ab\xb3u\
+\xb3U\xb3U\xe9\xbcMvQT\x9d'K\xab\x00\x98\
+\x00H\x9a\x87\x15\x95v\x98\xb9\xe2\xac\x1f\xa5\xa1_+\
+\x00\x19\x9e\x05\xd9Dpm\x03rKT\x14[\x9d\xc7\
+\xb3\x97\x0e>\x05es\xa8\xa2H\x1dB\xbab\xe6@\
+Pk\x9d\xe8\x0d\xee\xeb\xb4\xc0\xcc_\x06\xb0\xa0\xb3?\
+Y\xcbs\xd1\xdd\xc0\x98<\xa4\xa8(\xd8nh4C\
+Ez\x9d_QI\xb48\x9f\x9c\xe8\x87)\xaa\x99\x10\
+\x01\x8cjz\xc0e%ac\xbc'R\x05:1\xc3\
+}\x15\x05\xa0n\xcfQ\xe4B.K\x87\xdaK\x15\xe9\
+\xfb\x8e\x1b\x1e;<6k\xaesbF\x9e\x80\xe4/\
+\x95_\xdd\xb8H\xf2/\x98\x80\xebt\xfb&\x8c\x95v\
+.Ez\xbd\xc7\xe3\xe4\x8eQT\x1aW3\x8a\xda\xe5\
+\x14\x85\x92\x9f\x0b\xb9\xb4o4\xc7*\xaa\x8e\xad\xa5:\
+\x91\xa0\xb3_3\x96\x0f\xf7p_\xa7\xe6\x87\x8aj>\
+\xba\x01\xd6\xf6;\x8a\xea|d\xfa\x94;\x8ea\x96\xb6\
+\x86]\xdb?i\x89\xd5\xaeN\x88\xfd\x5c@\xb1\xce?\
+\x7f\x95\xca\xbd[\xe5\xd0\xd1\xd5si/\x9e|\x9a\xec\
+\xe5\xdf\xffm3\xd1\xce\xae:\xf3r\x5c\xf9Y\xd5\xe0\
+\xf0}n\xb7Q\x14\xc0\x82\xf1o\x91or\x0eS@\
+\xe2\xba\xeds\x02\x86]L3)\xdeF\x1d\xe3\xca\x1d\
+i\x80\xcc8\x0f\x9cw\xc1\x0c\xa5\x03N\xe3\x861y\
+\xc1\xb4\x90\x06|\xd6\x8a\xd9\xe0\x86^\xfbX\xfbx\xfb\
+X\xf1\x9c\xd1\xd3\xa7|8\x03\x87w\xe4\xfd\xe2\xa4\xbc\
+_`\x96l\xf3\xcf(\x18\xc8\xf7h\xac\xa0Ew\x83\
++<\x8c\xc8Oa\x9a\xe1\xa5 \xb8\xfe\xcejJ\x04\
+RG\xa4\x956%e\x5cezZ\x9f\xd2\xf3:>\
+:E:?\xdb\xed\x14E\x22\x12\x1a{\xa6\xd0`\xe3\
+H~\x08\x83\x81s\x12`\x85\x86\x1f\x8d*\xb4\xe2L\
+\x19\x00\x98\xfe@\xc7\x98\x8c\xfd\x93\x82\x16\xb3?:\xc3\
+\xf6\xe8\x09f\x08\xe7\x01\xd3C\xec\x99\x15\x9e\x09h\xbf\
+\xcd\xcc\x0cf\x13\xe6\xce0\xac\x90\xdc\xe0\x95c/\x80\
+\xf6#\x8aJ\x9a\x01`\x82$\x8eN\xb0\x0b\xe9\xd8\x97\
+\xec\xad\xd5|HQ$\x130xh\xd4E\xc1\x8a\x09\
+\xb0\x81\x03\xa4\xa5\xed[\x15\xd5\xe7rC\xa0\x0f\x84\xc7\
+\xfd\xe1\xfa\xd0\xc0\xe9\x15\xe6\xaf\x9a\xce\xc6\xf3\x03\x10\x00\
+\x03\x80\xc2\x97\xc62\x00\x82\x1bE0~\xe2\x5c\xa6@\
+\xc6S\x0b\xaf\x10L\xc4\xa9\x0fi$\x01`\xf0{h\
+\x04!!\xe7\xef\x91\xd4\xd2X\xe2\xfbl\x06;\xb5Y\
+\x8e\x22I\xa1!NC\x8b\xeb\x00\x13\x81\xc2\x9d\xe7\xdc\
+\xccs\x9e\x8f0/\x84Y\x09`\x00\x80E^O^\
+\x0a \x80w\x13\xcc\x17{\x98\x00\xdc\x07\xe0a\x0f&\
+\xf2\x9a&\x17\xbc\xab\xfb\x82=l\xc4\xed\xbf\xabq5\
+\xba\xe1\x0bV\x0b\x18\x17u_\xe0\x98s\xca\x8d\xf1X\
+\x06\x12\xb2@\xbc\xd8\xa0d\xa22{\x99k\x9d\x17\xf6\
+V\x15%T\xbf\xe5\x84BUC\x0b\x13\xd4\x1b#\x81\
+\xed\x06\x8aB}\xe0\x81k\x1bE\xdaH\xeeS\xa4\xaf\
+\x97U\xf8\xdf/\x95\x0f\xc6\x14\x95\x06~\xce\x14\xe9\xfd\
+\xcc\xbcE\x91^?\xa5H\x7f\xfe\xc5\x14\x07\x16*N\
+6\x1b\x92\x06\xf2\x07\x8at\xe1>\x90b\x8b2\xb7\x19\
+\xe4\x9fB\xae9Y\x91\xbe\xff\x22\x85\xb5vic\x1c\
+\x9e\xacH\xeb\xec\xc1\xd1C#i._T\xa4\xaf\xef\
+\x1e\xfd}\x94\x16\xe2\xe8\xc5\xd1K\xa3t\xc0\x8e\xe6\x19\
+\xcd\xab\x0e\xc2\xe8\xdd\x1dEq\xda\xd1\xd3\xbe5-%\
+\xd4\xa3_\x8c\xce\x1f\x9d\x9f\xbe\xbe\x7f\xda\x03\xd3\xd2\xc6\
+>\xfa\xf6\xe8;\xa3t\xb0\x8e6L\xdf\x99\x12\x9c\xd1\
+\xe6\x8a\xf4\xba\x96\xa2zmF\xc3QJx\x86\xefV\
+\x14\x8d#\x89^J\xdf\xb3\xe6t\xf0\xben\xce-\x14\
+\xfb\xc1\xddN\xfcOR\x14\xaa\xf7\xe0\xd4\xc1i\x83\xd3\
+\xaay\xcfN\xa0\xd0r\xe1\xea\xdc<\xa1(Z\xd4\xa0\
+`\xfeTQi\xaffQ\xe4\xc23\x1f\xe0\xcdc\x8a\
+L\xb5\xce\x1bYP\xf4\xdcY\x08M\x16\x0c\x92\xdf\x1b\
+\xc1\xe3\x81\x00 \x01\xb1\xfb\xb2\x916:\x9d\x14\xaa<\
+\x98\x8b\x98\x81\x02u\xff\xa3\xee\xb4\xd1Q\xb5\x0b|\x14\
+~Ow\x85\xc6\xd4\xa9\xa6\x8ec\x02\xe4\xc24:\xc6\
+F\xc6c\xdc\x07\x9a\x1d\xb4\xf8\x8cY\xe1 E\x12A\
+g\x95\x02\x13\xd7z\x98\x11 \xf7vO\xc7\xbc\x04\xb3\
+\xb1fcE\xd1\x06\x82D2\xc78\xe6\xdc\x82@\xc2\
+X05=\x12\x01\x10iL\x85x\xbfl\x90h\xe8\
+\xa1\xd8\xd3\xc9\xc6\x9d\x14f\x83\x13\xf0(h\x90\x06\xb1\
+ABM\x82\xaa\xe4\x0dn\xf0\xbc\xa2Lc\x88N\x04\
+\x12\x0a~\x9e\x91\xcd\xe6\x1eE\xe5\xe2n\xf3\xa1f\xac\
+(.\xf8\xc3o)\x0a\x851L\xc6\xbe\xa6(c\xdd\
+\x82\xca\xe8u\x83&9\xcc\xc7\xb8\x1fP\xfa\x9d\x08\xc5\
+\xc1 \xc9\xc6\x9f+S!\x03+\xbc/\x9e\x97\xa0\xd0\
+\xa3\x8d\xb4\x97@\xb8\xf1\xfa\xf9\xe2\xb9 a\x88\xe7\x88\
+\xef\xbf\xc2\x894\xf7u\x1f\x03f/v.\xca\xcd\x99\
+\x8aJ\x0b\xfc\xc2\xf0y\xed?\xc39\x14\xe9\xf5\xca\xe1\
+U\xc3\x94\xb8\x0e\xa7\x8b\xa4\x9e\xff>\xefO\xc39\x15\
+e\x1e\xfcpqE\xde\x0fO\xc9\xfb\xe1T\xf60\xea\
+4\xc7\x7f,\xdf\x97\xb7\xe3\xb6$\xe6\xa1\xe1\x9e\xd1M\
+%\xc8\xe3\xf5\xd2\xb9\xd0<\xa9H\xaf\x97(\xaa1\x97\
+</P8)@a\x9c8!l\x16Q\xa4\xd7\x91\
+\x22\xbd\x1e\xafH\xaf\xb7\xa7\xb8\xa3|\xde\xdc7\xfa\xa0\
+\x91\xf2\x05\xcaz\x8eBN\x12\x8c\xb6\xecG\x9a\xbb>\
+\xf9W1\xa7\x9c|OQI\x1ct\x5c?Vi\xfc\
+WM\xa1\xe7\xf0y\x85\xc7\x02\x9eR\x80%(\xf4\xe1\
+6\xfc\x88\x0fn{I\x0co\x18\xde8\xbc\xb1h\xbb\
+\x87\xffP\x94\x82\x12\xb3\xc7,$\xb8\xbc\x14\x10!\x1d\
+1\xe5?\xa8\x7f\xb8s?\xa7(\xcc!4\xc1QX\
+\xd9\x8cm\xf2\x09E\x91\xe65\xefI\x91\x9e\xc7\xe6F\
+\x85\x9f\x93\xa5\x8b\x89\x11\xa6\x94\x98\xeb\xa1%\x1f\xed\xa5\
+H_\x7f?\xc5IU\x82\x0b\x85\xdc\xfbPs\x8e\x22\
+}\xdf\x9b\x15\xf99\xcd\xeb\xa5\xd9\xba\x93\x184ol\
+\x16o\xd2:k\xbe\xaf\xa8\xe6\xa0[\x82\x10\xe7\x0b\x1d\
+\xfe\xf5\x9b\x0d\x9a\x0d*3\xbe\x1d\x14\xe9\xf5rEz\
+\x9dCQ\x9dc\xec/\xee87\xe7*\xd2\xeb\x12\x8a\
+\xe2\x010m>\xc5\xd4\xd4,\xcb\xcd\xb2\xec,)\x9f\
+\x98v\xeb\xb4[\xa6\xa5|at\x94\x22\xbd\x9e3:\
+{\x94\x0a\xcbf\xf6n\x0c \xe3d\x07\x07)\xd2\xcf\
+9S\x91\xbeo\x1bE\xfa\xfa\x9b\x8a\xf4\xf5\xcc\xd1\xcb\
+\xa3\x94O\x8d\xde\xa8H?\xf7c\x8a\xf4\xf5\x8d\xa3\x1b\
+F7\xa4\xaf\x7f1\xed\xe7\xd3\xd2s?\xedW\x8a\xfc\
+\xfd9?\x98\xf6iEz\xddx\xdaF\xd3R~0\
+\xfc\xb3\xbd\x06\xf0\xa08\xa4\x99\xdeL\xcfS%.\xd7\
+T\x89\xec\xadpa\xfa\xf3\xfdS\x1cPiR5U\
+\xe2o\xee@.S\x5c\xe9#\xc1%1\xa7\xd0\xc7\xd3\
+\x04\xc9\x91\xa7+\x84\xc6\x9as\xf2\x94NJ\xc7\xf8\xc8\
+\xe1Y\x8aj\xfd\xc0\xacY\xd1\xe7\xbf\x1b\x1b\xe4\x19\x9c\
+\xe7\xe1\x01\xf0\x0b\xcf\x9d?R\xe1\xbcr\xcdJ\xd2\xa5\
+\xf3\xf0\xd3\x85q#'\x87\xec\xe5\xf0\x0dEz\xddP\
+a\x93\xc5wTce\xfd\xfcF\xc7\x0d\x06\xa4\x18+\
+\x8f\x97\xfc&\x18\x8d0uH\xc4\x01z\x01\x8c`\xe8\
+\xd8{\x01\xe0\x9d\x84>\x1874\xb6\xf0\xa2qG7\
+\x98?\x8c\xdf\xfd\x8c\x81}\xcc\xe2\xc6\x8a\xf4\xfa-\x9b\
+\xb9\xa9\xedqcU \xba\xb37\x9c+\xed\xd7\xba\xee\
+\x0b\x0d\x17\x1c\xa6\xe7e\xb4\x85\x22{S<:J\xfb\
+\xcd\xe83\x8a\xf4\xba\x9d\x22\xaf\xb7\x14U~(\xaf\x93\
+\xb5\xab\xbc\x0c\x8a?\xf9\x14\xfb\xaf\xa5\xb9\xd1IU9\
+v\xae%x\xdf\xed\xc6VfO\x1e\xcc[\xbd\xaeX\
+\x7f\xf99\x14Sv\xf3N[?\xb5~\xd7`\x00\xd8\
+\x093^\x98 \x14\xf8\xdb\x1a\x80Z\xcf\x85\xfa\xae\x06\
+d\x9c7\xa53\xa2\x1b\xbfF!O\xde\xc7\x1413\
+\xb0\x02\xb8:\xa39\xbd9\xbd\x9a\x9a\xe4B\x10\x93\xc6\
+\x90\x08\x02\xb8\xe3\xf2o\x00\x01\xe0\x1f\x09E\x98.\xd3\
+\x10\xa3a\xeaF\x01\x0c\x22\xc6\xc5b\xae\x1a\xf9'\x0c\
+1{\x8e\xc0P\xe2\x9c`?\xa6\xf1\xd7|Z\x91~\
+\xdeo\x15e\x7fi\x96R\xa4\xaf\x8fQ\x94s\x97\xf1\
+\xaf\xc1d\x83\xe1\xc6\xd4\x1c\xa6\x1f\xd9kK0\xb2\x80\
+d\x80\xf70\xa7\x83\xd1\xeb\xe7p\xb2\x80\xa22\x17D\
+*@\x87\x9b\xf1\xca\x00^t\xc6)\xc4)\xd8\x19\x8f\
+\x8a\x87\x15\xd2\x83\xbaq{Ei\x88h\xc6J\x9e\xb2\
+\xc2XAKx\xa3!\xe3\xc6a0Th\x1c\xd1\x10\
+#\xff&\xdf\xa3\xb1\x050\x08\xc3\x99|\x97:\x83B\
+\x9f\x86\x16\x8d2\xcc\xba)\xf8i \xc1\x90\xe6s \
+5\xe0z\x00\xa4\xd0\xe0C\x12\xc6\xf8k\xd6'?\x9f\
+\x06\x1b\x8d\x14\x80\x1e\xf6\x1f\x80Z\x80m\x80\x22\xaf\xb3\
+\xd1\xf8\xeb)\x8e4\x12\xf5\x96jA\x5c\xddQ\x8f\x82\
+\x12\xe8\x8eE\xb3`\x8a\x05\xac\xfd\xda\xb7\xa2\xf2K\xf3\
+\xb5Gq{\x0d\xb7T\x10/\xcc\xfa\xb4\x1c~\xef\x82\
+a\xc5\x8a\x22mJ\x0fcU\xe2\xc2\xd9\xb5;'*\
+\xbf\xa9\xcce\xd0J`\xc6\xa0\xfe\xf0\x93\xd64N/\
+\x94\x8c(``(\x90\xb0A\xc9\xed\xb0D\xb7?\xab\
+\x02\x9e\xf1M\x1a\x17tv\xe5\x9ejm\xe9`\x0e\x9b\
+\x97\xbc\xabsI\xc65u\xf0+w\xda\x16s\xa7f\
+\x86\xc7CA\xf1a\xae\xb7\x91\xa2\xe1\xaa\x9d\xf9S,\
+,\x0a@\x90(>\x07\x05&\x854\xe64hR\xb8\
+\xd1##Vl8/\x98z\xe6\x8eQ\x14~Py\
+<ov\xb0jg\x0a2\xf5\x97Wj\xa0\xa3\xf3\xce\
+Bc\x9e\xa7]\xa7\xd3c\xd1Q\xf58\x10\xa0\x22\xa3\
+\x89Ec\xcd\x83\x816\x08\x17Vw`\xc3\xf5\x127\
+v:\xa7\xbf\xef6\x90\xc9\xee\xa6@Q\xe8\xb3\xae@\
+ \xe9\xe8\xc3\x04\x802\xca\x83\xf9\x82\x11<\x1e\x1c6\
+\x80\xbf\xfb:\xb0\xde\xe8x[\xeb\x16fp\x14\xc0t\
+\x927\xb3V\xafG!K\x0fi\xd7!\xc7\x95\x97\xa9\
+\x10\x98\xf6\xd0\xf9\xe7~\xc3\x94\xa0\xc3B\x02\xc286\
+:\xf7l |.(pt\xb6L}\x0es&\xa8\
+\xe5\xcc\x1d?\xd7c|\xa0L\x91\xd0\x99\xb1\x12\x92\x02\
+\x0a,\xa8sP\xa2@p\xb9\x7f|\x0e\x90\x5c\x90\xda\
+\xdex\x14: \xf1\x9c\xf3\xef\xf8\xbc<z\xa6\xc4\xd1\
+I\x8bN\x03\x89\x07\x07\xbf\xef/\x1dO\xc6\xe0\x05E\
+\x9e16\x007v1\xcf\xe3G\xdfPi\x9d\x0d\xd0\
+P\x98F\x82\xe0\x0dy\xf2>E5\xde\x8d\xa9\x15.\
+\x8cB\xd2\xc3\xe7cn/[\x8a\xa8\xd1\xff\xc8T\xe9\
+\x9b2E|\xb5\xc1\xaa\x19\xa0qa\xca\xc1\xcdA\x1a\
+\x00)\x9e\x0b\xaf30pw\xa7\x01\x0e\xaa9\xee\xe3\
+vE\x16\xff(3\x90v\x1b\xec>\xd8\xbdrg\xbf\
+?\xfd\xfd\xfdE:\x13\xa6\x95'\x0eN\xc8\x9e\x1a\xa6\
+v3\xdf\xb7\xd9\xad\xf9|\xb3[~\x0e\x07\x19\x10\xdb\
+9\xa5\x01;\xe7\x84\xf7\xea\xcc\xf4A\xebw\x99\x19\x05\
+\xbf\x1d\x5c7@Sy\x95\x99H\x97\x15\x8a\xbf\xf83\
+\x99A\xc3\x186\x12\x06\x80\x11\x5c\xfaEM\xdc\xb4B\
+\xc4Mq\xc5<jtX\x0a\x01\x11W\xa7\xb8\xa6b\
+\xf6\x00(\xf9\x00&\xf1j\xde\xa9H\xdf\x7fU\x07d\
+4\xafO\xb1\x90\xd7\xd5=^/\x07;\xf1\xde\xaft\
+\x88Cb\xa4U\xb4\x92\x01\x88?W\x8c\x05:\xed\x98\
+\xa2\xa1\xf9\xb3\x99Rx]\x080x\xc4\x0d\x8bI\x01\
+~\xb2\xd6\xfa\xf3\xd5\x01o)@{\xb0\x22\xbd\xdfK\
+\x86\x17\x0f/\xae\xdc\xf9\xdd\x09\xa2\x13\x8e\xe4$\xbc&\
+>\xe5\x82\x02f\x03\x85\x18\xaf\xef\xea:\xa0\x14\xc0\xc1\
+LSB\xbew\xc5\xd8\xa1\x93\xe3\x04\x0b\xb3\xde\xf6!\
+Ez_\x7fM\x91\xf6\xf5\xe1\xcd)\xfeXI\x18\x18\
+\xfb\xf7\xd7\x14w\xba\x90\xbc\xab\xea\xf0\x7fQQ\x8d\xa5\
+\x03\x084\xd0E\xe7?<>\xc66W\xbdf\xb0\xcf\
+`\x9fR\xc0G\xa3\xe1\x22wB\x1f\xb6\xeb<\xc03\
+\x80,\x9d_{\x95\xa4\xa7!\xff\xdc\xf1\xb5\xe3k\xc6\
+\xd7\x14\x06cs\x9f\xc7a\xbe\xab\x03,\x908)\xfd\
+\xcf\x05\x00@\xa3\x19_\xc3\x13\x9d\xa0\x1f\xd6\x15\xd4\xcd\
+\xa5\x8a\xc20\x9c\xdc\xd0iQC\x02\xc3X>w\x8e\
+\x9a\x9d\x14\xc5+ $\x09\x00\x99.lb\xce\xb9M\
+P\x83\x99\xe9}2\x12t\x9b\x92\x0dN\xeb\xd6+\xe3\
+\xad\xdaw*\xd2\xef\xfb\x8d\x22\xfd\xbe'\x15e\x8aA\
+\x9e\xa90\xa7\x13\xe3C\xcc\xec\xbc._\xa7n\xdf\xa0\
+#\xaf\xf4\xfbV'\xcc{eI[\x8aj\x5c'\xfb\
+\xe8M\x8a\xf4z\xab\xbd\x80\xdcQ\x82a\x01%\x1f*\
+||\x9f\x98A\xdf\xac\x12\xf7\xf3'\xd9\xc5?\x0a\xfb\
+\x89=op\x89\x7f\x9b\xa2\xd2n\xe3\xbdc`K\xd9\
+K\xd6\xce\x03Tx\xbc4\x1a\xf20\x85\xd4\xfdy\xbe\
+\x98\xddf\xcf\x83#+w~3cd\xbd\x9c\xcd\x97\
+\x97Qx\xdf\xdb\xad\xda\xcf\xdciD\x9a89PQ\
+\xe5;\x00\xd3\xb8\xa6\xdb\xc3\x00\x13U\xbcN\xa2\xc0\xc1\
+\xd3\x81\xfc\x18\x97\xfc5;&K\x1e\x83\xf8\x85\xac\x19\
+\xef<\x05h\xcc\x19@\x0cF\x83\x19\x0a\xcd\xd7\x14\xe5\
+\xfd\xe6\xa9OgW\x0c3\xa4\x1d\xd6\xc0S8\xd1\x00\
+\x00@\x08\xe9\xa6\xf7\xdb\xf0`\x22?p\xa1\x16\x0d>\
+Q\xf8o,\xfbjP\xe89\x8ft>\x1eTM#\
+\xa1\xc1\xc1X\xcf\xab\x06Wfi\xa9=\x99\xf0\xd8\x89\
+\xf9\xf2>o\xe9D\x87\xa4\xd2L\xb7\x94cv\x1dQ\
+\xf2\xb7y}\x1d\xaf3\x83\x99\x02hK3O\xf76\
+\xb0\xeeFG\xe4\x05\x97\xf8\xfdQ\x8f Ab\x0c\xb6\
+\xa4\xbbgVu\x89%\xc9\xe1\xa2O\xc7\x9b\xfc\xc7\xd2\
+\xc7\xc8K\xc8o\x00\x8a\xfe\xa7c\xf6\xc4\x986\xa4\x9c\
+0\x05\xbd?#\xe5d\xdf\x8c\xbc\xcb\xe7w<\xc7\xec\
+?\xe4\xe7x<\xb9S>Y\xd4\x0c\x8c\x0fu\xbf'\
+\x1a\xa8^o\x0011&\x9a|\x9a\xc2\xd1\xfbV\xec\
+c\x1e\x7f\xce\xfa\x8b\xf3\xd2\xd7':\xe2\xdc\x17>\x17\
+Tu(\xec0\xf1`\x8c \x09\xa2\x03\xcf\xf5\x87\xd1\
+\xc5XR\x1a\xd0\x9cc\xd4M0U)\xa0i\xb8\x99\
+\xf9\x1cR;\xf28\x03\x0a1F\x0f\xaf9\xf2^\xa8\
+\xfc\x5cG3F\x03\x18\x82\x810\xb7?'y\xceK\
+\xa9\xeax)7\xce\xc7YZ\xf6X\x16\xe1\x14\x00\xc1\
+T\xbc\xfet\x14\x00G\xbc\xb3b\x9a\x9b\xaf{\x98\x9f\
+s\x7f\xecuBC\x0a\x86o\xd4o\xd4\x83n\xd0\x01\
+(\x8cf\xde\x94\xe2\x0f\xa5c\xc7\x18\x16MWW'\
+\x87\x03zx\x8a\xa2h\xf5\x029\xf7k.\xbc\x0f\xab\
+\xa8\x86\xd2\xa6\x9cSQ\xbd\xd1\x22\xa3\xe5\xf7\xc6\x1b\xd2\
+\x03\x95\xb7_\xb4&\xe5c\xee\x00\xde\x5c\x16H\xb8/\
+r#eR\xf7\xf1\x8a\x12.\xc4\xfd\x98\x0a\x91\xb2\x86\
+4~\xaf\xa5\x0dyyL\xb3\x1b\xe2\xbc\xbe`?\xaa\
+:IF\xd2\xc2T\xca\x85\x95\xd2\x12%&1\xc7\xdc\
+\xd4s\x0eD\x16zP\xd2)\xf4\xe9\x14\xb9@\x8a\x1b\
+\x08\x15\x05\xc0\x05\x13 :\xa9\x14\x98\x14\xf4S\xe6l\
+^\xd5\x1d\x84Y\xf9vG\xb5\x11\xd0\xf1f\x8e3\x1a\
+\x1b\xb8\x9e\x8b\xba\xc0\x01\xe1{\x8fM\xdd\xdei\xaa\xf9\
+\xda\xfe\xbd m\x1c`hj0=\xc3d\xce^\x09\
+\xe9\xbdw?\x17\x0d\x1b\x05+\x9al\x00\x03\xa8\xf8\xeb\
+\x18y\xf7\x98;\x1e\xf8\xa0\xbc0\xd7\x1d\x8d\x15\xf7\x1b\
+\xb7\xd2\xf9\x9cx3\xaf\x17*\x0c?\x87\x0d\x8f\x8d\x08\
+\xe0\x073\x9a\xcbM!\xdf\xd2\x08\xfc\xcb.\xdc1S\
+\x92g\xc3\x8c\xaa\xd0\xe7`\xa6@d\x83\xe1@\xc1\xcc\
+d\x11\x9bY\x22\xc1\xa0Pf\xe3\x83\x02\x8f\x16\x90\x9f\
+\xc3\xcf\xe7z\xf3{\xf8s\xee\x1f\x1b)\xf7\xbb?\xef\
+\xd6f^\x01\x8c\x000x\x03\xe4\xe0\x08\x0a\x1e\xa6:\
+h\xadA\xd8\x9d\xd8\x87\x86\x1fJ\x19\x85\x08\x1b*\xe6\
+9F\xd0\xe3s\xc3\xac\xc0c\x83\x8d\xf0\x1b\x96H\xb0\
+\xf1\xb3\xee)\xac\xcdh@\x82\x81\xe9P\x144F\xd2\
+\xc3\x15\x19\xa4\x13\xcd\x1e\xae\xf9H\x1b\xe8\xa0\x98Z\x9a\
+\x12\xfe\x14N\x18\x1f\xaf\x10|:\xe7h\x06\x01\x9e\xa0\
+|1\xff\xd6\x85Q|^\x7f\x9e0?D\x02\x03B\
+\xee\xf7\x89yZ\x8cWDCm\x93\xcd`r\x18\xd0\
+\x0b\x8d\xe3\x87\x0d\xf0\x00\xa8\x00\xf41V\x08\xa6\x0e^\
+\x01P\x1956\xed;\x198Y?\x03'\xda\x91\xa6\
+\xb2\xe4\xe8;\x92\x1c\xb1_\xe5\x82\xe7\xb4\xca\xcc\x8b\xf5\
+\x05\xa0\x85\x97\x03^%\xdaW\xd6)\x7f\x1e\xd4w\xcd\
+\xa9>\xab\xcc'N\xa7AN\xb4\xc3\xcc\x8a}P\xe5\
+\xdfg\x5c\xc8\xfe\xa8\x92\x94\xa9\xd0z\xc6\x8c\x90\xf4>\
+\x9aGR\xc8\x9d|\xff\x14)\x91\x1c]\x99\xe2\x0aw\
+\xf2\x8e\xaa\x12RL[\xe900\x96\x0b\x00\x15@\x14\
+\xc0\x0f\x8a#To\xc1d[U\x85\x15L\x1d%R\
+\xbbU\x09*@\x9a\x0b\xb3\xd0\x8a\x93hQ\x983\xbe\
+\xd3\xe3\x0b\x91\xb6Q`F\xc7\xfc\xb7\xcd\xf5\xcd\xf5\x99\
+9\xa4(\x80\x0e\x0c\xab\xfb\xbb\xcfG\x87\x1b`.:\
+qx@p\x9f|\xf0c\xae\xd7\xdck\x06\x0c\x8c\x88\
+;\x15\xd5\x18^4\xc6\x9eZ\x12\xee\xdb^\xd7x\x87\
+\x04\xd0\xee1\x8eY\x88#\xed\xf5\xc1\x0a3\x93\xbe^\
+\x98\x99\xa1Q7\xd0\xdd\xdc\xa4p'USknT\
+T\x8c\x97\x8b\xba\x04\xa6\xb9N\x91^\x91t\x5ca&\
+\x1a\x9d?:3\x9cohZa\xea \x89C:\xe4\
+)&h?Czb`\x8f\xce>\x9d1\xa6\x01\x00\
+\x1c5?W\xe4y\xe6\xb9\x03\x0a#ex\x83\xa2P\
+j)\xb4\xa7\x1e\xc9Q\xd6\xa3\x13\xc5\xd0\xcc\xba\x80o\
+\x8eVTfO\xa6\xde\x87\xf4\xd1\xa6w$\xb4\xed\xaf\
+\x14\x95D\x08\xa6\x8a\xaf3\x00\xe5\xf8\x1f\x8aJ2i\
+s^4\xbf\xd1(0\xf0\x92\xb2\xa0\xee\x5c\xa2C\xe6\
+\xf3\xb19RQ1\xe2\xd8\xcf\xdd\xd9\x8e\xc4\x1bm?\
+\x92)\x00T\xa6\xc0@\xad\xbf\xc5@\xaa)\xc6x\x1c\
+\xc4\xf4\x22\xc6\x96yZ\x11\x05I\xfb\x8c\xa2\x9a\xfe!\
+\xad\xfe\xd9U\xc3\x86|\x80\xc6\x01L4\xf6\x17\xdf\x0f\
+\xf6\x850\x09\xa6\x00eZ\x8b\x19\x1a\xd9e\xfd\x8e\xca\
+\xc4x\xfd\xdc\x83.\xc0\xca\x11\x8a\x8a\xd9*i\xe7\x17\
+\xaa\xe7\xa2\x97\xef\x84\x16\x1cI\x18\x94f\x00r\xae/\
+\x1ao\xcc\xcc`\x16`\xce\x8a\x97\x81)\xf51&\x0e\
+\x09\x00\x0d\x05\x9f\xa7\xc3\xcf+\xbcOL+\x05!\x1d\
+c\xa6`e\x1e\xd5u\x15\x93\x00j;\x05\x93\xa7{\
+\xe5u\xf3P\x95\x87\xd8\xec1\x0a\x0a\x00\x0c\x9f\x03\xac\
+\xbf\xb8\xde\xf5\x14\x8eu*)\x84\xcf\x99\xf6\xbb\x8aj\
+\xfa\xc0|\x93\xf9\xf3\x94\x9bou\xde\x07\xc1\xf4t\xbe\
+\x14\x00\x19\x9dQ\x98\x7f\x1f\xb7D\xf0\xfd\x96\x96P0\
+\xf2\xfe\x98\xbaC\x01\x84\xe4\xc4\xd2&:\xdb\xcd\xdb\x14\
+\x19\x98:n\xea\xb8\x0ah\xf8\xaa\xd7?\xd2,\x8f\xe7\
+c\xbc[Lq\xe0\xb9?\xda\xef\xdf\x00BH\xf80\
+'\xb5Y5\x12R\x00\x95\xf0bCz\x81t\xe1\x90\
+\xee9m\xb6l\xb6\x10\xe38\x80/\x982x\xce\x9c\
+l\xf3j\xbc9\x98\x86\xc4\xf4\x04\x8f\x0bn7\xee\xc6\
+y\xb7[+*\xef\x10\xc6\xfb\xe2\x81D^O\xdd\x00\
+\xc0\xc7>\xc7\xef1c,\xcc\xb7\x91\xa8\x91?\xd84\
+\x1d\x80<\xf2C\x17\xceQ\xe8\xbb\xae\x8a\xf5\x06\xc0N\
+\x1e\xcft(7\xb8\xa2\xe1Cc\x89F_\xdf\x0c\x9a\
+z\x8b\x06\x1a\xef\x13\x09\x07@\x0d\x0dQ\xf2m\xa8\xfe\
+0\x12(\xc8\x91\xf6\xd0\x18c]\xd9\xfc:\x95\xf1\x9d\
+y:\x85<\xef\xc7\xf5Q\xec\xa3H\x1e\x1f\xce\x90\xf6\
+T\x1e>\xfa?y\xff\xea\xbc\x01\xb8\x0e\xd4\x09\xe49\
+\xd4\x93H\x1f\xc8\x97i\x90\x01\xb8\x22)\x06\xd8%\x7f\
+d\x0a\x88\xef\xdb\x88\x82'S\xa0n\xa94\xb0l\xe4\
+\xc2\x055\xae\xee\xdf\x0a\xcf\x19^\xa0\xa2\xcc}WQ\
+ikM\xc1\x08\x13\x0c_\xa0L%Y\xac\xba\xf0$\
+PZ\x16\x97\xb8`}]\xf5\x80c\x16hWV\xb4\
+\xb1P,\xf3\xf29\xd5\x09\x99\x0a\xf9\x97:\x8a+\x1d\
+\xd2\xdc\xf9\xdb\xa0\xea4;\x11\x03\xa1\x0d\xf36\x9b(\
+Eb\xcf\xdc\xf4;\x14U\xa7\x95\x0e\x15\x05\xff\xd3.\
+\xe8,\x89\x88i\x06l\xf0P\x9bA\xbc\xe8\xa8C}\
+\xe6A\xa00\xe4\xcf\xb9\xf1ku&\x16\x03:F/\
+\xb9 Y\xcaZ\xe8\x9ftS\x0c\xd8h\x03Y\x86\xc2\
+\x02\x95\x1a@\x81\x83hI\x178\xa6LG\x07\x9a\x0e\
+6\x05\xbb;\xd0\x03\x1e\x18kP\xa3\xd3L\x81\xcb\x83\
+\xca\x03F\xc1\xcbF\xec\x8eo\xda\x86\xbb1\x1e\xe5\x01\
+\xec\x0er\xc6{@\xd5\xe2\xa0\x04\xd1\xa7\xc3\xcf\xfb\xc7\
+\x5c\x12\xa0\xc0\x07`\x004$\xe2$\x06\x14r\xdc'\
+\x0e\x04:\xe9\xbd\xe9\x10Q\x08\xd5S/\x9e\xaf\xee\x13\
+L\x86\xfbl\x0e\xb2\xa27\x8a\xbe9]\xdf\xf5\x94?\
+\x07(\xc1\x04\x84\xcf\xc3\xef\x81i\xd1\x1f\xc7\xc9\x81\xc0\
+\xfa\x00 \x01\xb0\xe1\xf3\x18\x81\x8e\xa9\x08\x00A\xfc\x87\
+\xfb\xb6\x0b\xc5p\xb7e,\x0d\xa6w\xb8\x01\xb3\x01q\
+\x9f\xf9\xfd\xac+(T\xb8\xffSx\xc1\xe8\xc0D\xcc\
+\xe3\x83b\x9ds@S\x08C\x99\x83\xca\xbc\x93\x0b\xe3\
+#\xed\x05p\x5cw0\x07\xd2n\xcaTtn\x01\x1a\
+M-&\xd1D\x0b\x17\xde\x01xA\xf8\xfb\xe2\xe7Q\
+ \xa2\xc9\xc4l\xd3\xd7\xb9YKQ\x8d\x9d\x83\xf1b\
+\xb3\x9c\x18g\x84\x1b\xb9\x81\xb8\xe6\x13\x8aBi\x0fs\
+M\x8d=\xfbJu\xbd\xe9\xf8\x22\x89\xa1\x93\xeey\xbc\
+\x00\x01\x83EL\x89\xe3y\x81\x0a\x87\xa7\x08\x09\x18s\
+f\x9fN\xff\xea\xe9j_\xf5ud\xdew>\xd0\x8f\
+\xae\xb4\xde\x8c\xc9\x01\xb0\xa1\xc0\xf18<\x0d\xa1\x93\x9b\
+;\xd3.\xf21\xf6\x80;\xb1s\xe6\xf7}\x96:\x86\
+\xaf\xa2\x002}E\x1d\x86\xcd\xcaX\xb2\xc1\xfc)\xe6\
++\xeb\x0c\x89\x95\x08\xd5\xa2T\x87\xb4\xea4K\x8e\x90\
+\xd2\xf8s \x99\xa0\xc0\xa4\x90j\xf7I\xb1\xb7;\x88\
+k\xbb\xf3\xf7\x97\x0a!\x7f.s\xb6\xca4\x15\x12\x81\
+{3\x97\xa8P\xea|N\x05p\x03\x83\x0a\xca\xae%\
+89\xfd\x9b\xe1\xf5\xb2\xa0\xcf\x9d\xab\x8b\xc6\x9e\xf9\xc4\
+\x5c\x97p\x8f\x7fSW\x88\xc2\xf8\x81*\x8e;{L\
+\x15\xe1\xf9q\xc27\xd9K\x91\x19i\xd9\x0cW\x023\
+I\xcc\x9ai\x8a\xca\x95\xfe\xdf\x8a\xca\x05\x1a/\x02\xb4\
+\x9a\x98z\xfa\xbc\xe3<\x8712y\xb3\x22]\xcfy\
+\x15\x9e\xa6\xa0B\xf9\x0b\x8a\x8a*\x0au\x15\xca&\x92\
+\x9c[-\x05;\xa09\xb090\x03\xf6]\xe1\xc29\
+`\xa9J\x00\x01\x1e\xdf\x18SYL\x19\x0d31\x03\
+\xf5\xb1O\xb8\xa3\x16\xe7\x17&Q\xbe^\xe1\x15c\xef\
+\x15\x12\xfd\x90\x8a\x98\x22><B\x91%\x083\x9b\x99\
+e]\x0d\x9fR\xa4\xd7]\x15\xe9\xef\xff\xa2\xa8:z\
+t\xc8\x9d\x7f\xf0\xdc\x85\xa6\xdd\xef\x07\xedl0\xf80\
+Wu\x82:\xb9@\x91\xae\xf34E\xf9\xdcA\x1d\xf7\
+:\xc0\xa4o|\xb0\x22}\xff\xeb\x15\xe9\xf5\x1d\x8a\xac\
+\x99\xbe\xa4\xd58\xb0\x0f)\xaaN\x15\x80\xa2\xc7\xcde\
+\xe9\xe25\xa5\x13\x9f\xaf\x7f\xfa\x1c\xe3\x1dS|\xc4\x00\
+\xdefv+_?\xfd\xbc\xdd\x15\x85\x19\xda|UQ\
+\x01ENlq\xd7o\xb7o\xb7k\xd3z\x9cy\xc8\
+\xcc\xe93%\xb5\xcc7,\xbd\xde\xa5(\x9d\xad\xc9\xdb\
+\x15U\xc1eO\xa9\x90\xa6\xa2)\x87\xa9IB\x0e\xa0\
+\x81G\x8cN\xa7j\xdaR;#\x85\x0a\xb2\xd9R\xcc\
+^\x15\xd6\x8c!u\xc7\x9f\xe74\xf6\x81\xa7\xf3\x8e\x19\
+\x85\xb9,\x1be\xda\x88\xe6\x9a\x8e4\x0c\xd7\xd0P#\
+\x81\x9dKQ\xb9\xb7\xf7\xdc\xde\xe3\xf9\xc5\xab\x07\x13E\
+3!\xa20\xf7\xf9\x15@\x88\x99n\x93\x0f+\xaa\xdf\
+\xe3<e8SQQ\x84uZ<Y\x99\xc4aN\
+\xa7\xf3A\xd2\xd8\xd7)\x8a\xc4\x09\xc0\x22\x189\xee\xe0\
+\xe2-\x14\xf9\x06?\xf7\xc1\x14\x0fUR=\xe6\xd4\x9b\
+\xf1\xc8\xb4\x8b\x90h\x92\x870\x85\xc6\x85_Z\xbd\x0b\
+\xe7\xf5{b\xfb\xbd\xf6{\xd9\xfb\xa4\x93DP A\
+\xb1\xe6k\xe7Q\xd1\xe8b\xcc8\xde\x0a\x14n0\xb3\
+8'i\x04Q@z\x1c^*\x9b\xb2\x19q4\xc4\
+\xe8D\xdb,\x0f3\xe9t*g\xe6\xefd\xd5\xce\x8c\
+9\x0aZ:\xb1\x14\xa0\x98+\x1aX\x0eo\x053\x02\
+\xa3 \x83IA\x07\x19\x09$\x8d3{\x22\x0d\x1e\xb2\
+\xf7\x02\x8dE\xaf\xff\x90\xa6\xd0\xe8q\xbeO\x037L\
+/5\x85c\x9e\x02\xb8\xc5t\x0a$\xd5\x00K67\
+ejTH\xbe\xc9\xeb\xc9_\x91\xe2\xe2QE\xde\x8a\
+\xb9(\x8cF3'Br\x86\xd7\x0c\xd2D3L\x82\
+\x11\x07\x05\x9e\xc6\x80\xaf[xn\xb0\x05\xc0\x04\xc1\x1c\
+\x90\xfc\x93iv4\x04\xc9\xeb\xc9_1\x11d}\xe0\
+e\xc2\x7f\xe4\xfb\xe4\xe3\xac;\x1aVLU\xb3\xa4+\
+\xa6\x04\xf1{\xf9wP\xfba\x18\xf3\xfb\xdc\xc8\x86\x91\
+\x0ac \xa4D/\xe6\x0ao*?]OV\xdez\
+\x00)H~\x00\xc6\xa8#\x00j\xf1*\xa2.\xe3z\
+\xc2H\xf1u\x8d\x06\xa3\xcf\xfdQ\xf3f\x85\x17\xd4/\
+lN\xf1-\xbf\xc1\xbf\x9a*qT9\xa02\xd5\x7f\
+OS\x8c\xfeTi\xf7\xa1H@m`\xee6\x09\xf8\
+N\x8a\x0e`\xc8\x0b\xff\x9a\xa9k2%\x15J\xad:\
+~/U\xc8\x18\x144Q\x8f\xce\xaa\xcc\xdb@@p\
+\xbbW\xdf\xef\xd4\x0aqT\x87d\xdf\xca\xa4\x84\xb1\x1c\
+\xcc\xed\x06\x91\xe4\x02\x99*\x13\x9dC\xc6h\x19\x91\x8d\
+\x8d\x81\x03\x02\x93\x1a\xc6rY\x9b\x1aHW\xcft$\
+^\xf9\x0f`\x80\x02\x8f\xce/\x1d\x1dw \x07\x14\xc0\
+\xd3]\xc8\x83|[\x93\x13\x09\x1c\xe6ilp>\xe0\
+\x83\xea\x01u\x9d\xa9\x09l0t\x8a\xd7\x8e9\x9a\x1d\
+\xf5\x9c\x02\x7f=\xff^\xc6\xe4\xd1y\xe6\x81\x07i\xa7\
+`\xa6\x10]\xcd\x89\xd8\xdcA\xc5\xea\xae3\x07\x08\x1a\
+\x18\xfe\x1d\x0f\x0e\xd7\x85\xdf\xc3u\xa3\xb0\xa5clJ\
+\xed\x04\xea\x0c\x0f(\x12\x09\xc6\xbb@1g\x03\x00\x98\
+\xc1\xad\x9aN/\x80\x03\x88\x22\xd7\x09-$\x14{L\
+\x85@8\xd9@8\x80\x1e\xeb\xe6\xa8\x0f>l@\x86\
+\x84\xc0f\x92A\xf5cCE\xf3T#\x81\x0fW\xc8\
+!\xeb\x88\xcfM\xe7\x11*-\x00\x03\xeb\x98\xb1\x9at\
+4A\xf4\xb9\x0el\xd0.\xfc\xc3\xcc\x10j#f7\
+\x8cS\xc2\xcd\x98\xe7\x0d\x00\x08*:\x85\x22\x8c\x1bw\
+\xea\xa2\xe3\xe9\x82\x22\xe6\xea\xba\xe0\x0df\x05\x1b\x18\x85\
+;\x8c\x1a(q[xc\xe3\xfe\x01\xa0\xa1\xb9d}\
+s\x1fX'\x8c\x99\xf3T\x0f:O\xb1\x1f\xf8\xfa\xe5\
+N\xf3#\x155\x15\xed>\xa6\x8c\xeeH\x86\xc9\x0f\x9e\
+\x06$Jt(\xe9L\xc2X\xc8\xffU\xe6d\x14\xca\
+PC\x197\xe3\xc4\x11jf$\x00\x00\x0cN\x5c\x82\
+\x02i\xa6\xc3\xe4\xab6\xc7\xc4|\x13\xed!\xe3\xdb|\
+@\xa5g\xf7=\xf9\xf9\x05\xf9\x85\x22\xe7\x83\x9d\x0eA\
+\xbb\x97\x22]\x8f\xaf(*\xc0\xceT|\x00\x88\xc1\xc5\
+\x8a\xf4}\xdfNqt\xa1\xe8\xe3\x9e\x1b\x1e\x08>\xb8\
+\xc2,\x88\xc2\x1fSE\xdf\xc7fKE\xfaw\xfbv\
+&\xa4h\xc3\x87\xa7**\x8a\xe4\xfb\x14\xd5\xba\xc0\xec\
+\x89N\x1e\xfb!\xde4N\xcc\xb3\x19Z\xda?f\x1e\
+\xa8H\xcb\xe8\xac\x142\xc5\xfb\xbd\xc2\x88\xf9^\xd5:\
+d\xcc\xa1:\xab\xef\xad$\x1d\x1c\x98\x98\xf0\x1c\xa7H\
+\x7f\xffUOCp\x01\x82\xb6?\x17\xf2\xab\x96s\x89\
+\x0e}\xcc\xd5>\xaa\xa3\x1e\xb6\x17(*\xcd/\xc02\
+\x14y\xa8\xf4\x87+\xf2T\x82\xcchI\xa7pW(\
+\x00\xb0\x7f\xcf\x89\x1a\x09\x8b\x13\xca\xc1\x7f\x14\xe9\xdf?\
+\xab(\xd2\x85\xa0\xc8\xf3\xfa\x16K\xff0\xfb\xb2\xe7\x08\
+\x00B\x98\x9f\x02\x08Y\xd2\x15\xe3Y\xbd\x1f4\xbb(\
+\x8ad\xa7YH\x91\x0b\xe9\x1b\x067\xa4\xfb\xfa\xb0\xa2\
+\xea Au\xcf\x0f~\xe5\x1d\xe3\xf1y\xd1iF\x0b\
+\x0c \x09\xb0\xe8\xf1\x9c1U\xc2\x8c $\x84\x01|\
+\x5c\xa8\xa8\x00\x00S\xf8\x87\xe7(\xf2T\x89N\x12\xb0\
+i7\xe6q\xf86E\xfa\xfa\xc0\x0e\xb0\x8095\x5c\
+PQ\x0a\xf8l\x02|\x98\x01\xac\xf9+ c\xba\xa5\
+\x02\xcc{v\x87\x98\x8e1\x05!\xc07\xd3\x03\xda?\
+)\x0a\x93\xa6\xb9LQ17\xdc\x19\x1co\xaf(\x09\
+6\xa6N\x93G&\x8fN\x1e-\x89\xfc\xe0\xf5\x8aj\
+\xca\x8f\x19\x0e\x98xNf\xf7s\xf2yE\xfa\xb9\xd9\
+$\xa508\xdb\xb5\x15\xd5\x14\x0fk\xfeCz\x03\x80\
+\xed\x82\x891\x87\x12\x94JR:\xf3\xb0\x99\x87\xcfL\
+\xd7g\xbc\xb6\xa2\xb8\xe7\xc7\x982${+\xbb\xe1\xe0\
+B*\xc6\xe9\xd1\x81\xc7\x84L\xa6q\xdb\x999y{\
+5\x8d\x88\xce?\x14Y\x99i\xed_u\xbc-e\xa3\
+\x10\x8a\xf1l4\x86\x94o\x9e\xe2\xe7|a\x03u\xbf\
+)\xf9\xd5\xf0\xdf\x8aj\x0c\x9b%ZH\x1c\xc6\xb3*\
+<]\xe0\xf1\x8a\xc1\xe5s)\xee\xcf\x9e\xd6\xf0{\xce\
+z6\x95\xfee9\x8f\x98\xde\x10\x92\x19K\x08\xc3\xfc\
+\x14\x86\x13\x0d.\x17\xe6\x1a\x9a\x9c\xc7&c\x12\xea\xfd\
+\xb8\xddCQ<K\xf2u\xdd\xd2\xcc\x94U\x0b\x03\x88\
+\xfc\x84\xc6\x00\xd3\xaeb\x0a\x11R<\x9f\xf7\xe1\x95b\
+s\xdd(t\xfe\xd5u0\xb3\xc4\xf0\xfa\xaa\x03\x89k\
+>\xcf\xbb\xef?\x05\xcd\xe4>K=\x9e\xb3\xc7\x8a\xcf\
+\xa5`(\x92\xafR\xe8\xd2@D\x9a\xc9T#\xc6-\
+\xf3{\x98ZD\xde\x87\xf4\x90\x82\x91\xf7\xbd\xb8\xf39\
+L\xdc\x00\xacy%\xaf\xb6\xa4 \xf2?$\xa3\x00\x0a\
+\xbe/!\xc1pGvp\x8e\x9f\x1b\xc6/\x1b\xb8\x0d\
+\x13G3\xae\x02\x10\x85\xd9\xc99\xcet&\xf6a\x1a\
+\x160O`\xb8\xc1\xb4\xf39\x16\x1d~3<B#\
+\x0f\x83\x84\xa9@\xe4U\x14\xcc\x98\xa63&\x1d\x06\x96\
+\xf3\xd2\x90\x90\xd2\x18%\xbf$\x1f%\xbf\xa7aG~\
+\xce}\xa4QD\x03\x85<\x9c\xfc\x17\xc6#\xd2\x09\xcc\
+`oVT\xe6v\xae\xe3$\x0c\xcb\xd20\xcc\xbb\xf9\
+\xb9\xd4'\xd4W\xac\x1f\xf2}>7\xd7\x8fN}_\
+[O!N\xbdB\x1dF\x1eK^E\xbeo\xd3\xcd\
+`\x14\xa0\xf1G\xea\x00\x13\xe0\xd1n\xbf\x0e\xc6\xc7\x0c\
+\xef\x87\xdeO\xc3S\x83)?\x06\xa4\xe2:\xd2\x18\xe5\
+\xba{\x9d\x86I,\x8dC\xe7\x87\x01X\xc0\xf8uc\
+r4\xed&E\xa1\xd4\xa1\x0d\xcb\xfd\xe4\xb4\x11\xb7K\
+(\xd2\xeb\xd5\x0ao0\xbf\xaf\x16\x0as=M\xc5o\
+\xe6U\xa4\xd7\x7f(\x8aY\x16\x88\xd1`\x7f\x85\x13\xc6\
+\x7fy!\xefTu\xec\xb9\xc0F\xee3^xU\xd5\
+\xb1\xf3\xf8\xb7\x8c\x00]^LP\xa2\x83\xa6\x03\xf4\x89\
+\xca\xfc\x81\x8e4\x9dq\x108:\xc4,\x10\x0a\x07o\
+\xd8\x98\xd4\xa4t;w\x944\xac/wz\x00\x14\xb8\
+Qv3\x0df\x01\xdam\x16\x1c\x05:\xd4\x9a\x1e\xd5\
+;\xc6\x1e2\xce\xa4_(S\xb8\xd1Y\xa13\xe5\xc2\
+#(\xc1t\xd21\xef\xe9#`s\xba\xa0\xa4\xb0\x84\
+Q\xf0\xb8\x13`\x1e\x80\xdeF\x10\x7f\xee\x8e7\xda\xb3\
+\x98\xb2\xc0\x03\xcb\x03o\xc9\x02\x89Ml\x00$\xd20\
+\x03\xfc\xa0E\xc7ruE\xb5\xb1\xf29\x19\xefeW\
+\xf4\xa0p\xed\xec\x9f\xbb\x8b\xaf\x17\xd7\x03\xcf\x84>\xb0\
+\xc2\xfb\xe0\xfa.\xedBgY\x17\xfc|?\x9dmo\
+\xf4q\x90mn*\xfbB>\x10\xfc\xef\xc3u\x9eD\
+\x10\x0f\x006\x12\x5c<A\x88)\xfc\xfd\xc0j:\xbb\
+\xe6\xb3C\x05\x8eD\x9e\xebNa\xc3\xf7\xe1\xc6\xcd\xc6\
+\x01\xb2\x09B\xdb\x97\x0c\x00$\xb1qr\x1d\xb9^ \
+\xb0x7\xb8\xa3G\x87\x81N1\x1aL\x0a~(\xf3\
+\xa1\xc9\x04\x11\x06\xe1\xe5}\xf4\xd3\xe7\x7f\x97\x00\x00 \
+\x00IDAT\xdcY\xc3\x93\x03S\x13\xf6\x07\x0a_\
+\x80-S\xa1&'(J\xe2\x1d\x077\xd7\x89\x0d\x1f\
+ \x80\x83\x1e\xe4\x93\xf5@\x87\xdc\x9a\xd8\xc9\xa1\x8a\xb4\
+O}]Q6\xf4\xe8\xb8C\xd1\xc6\xb4f\xffn\xec\
+%\x92\x84\x18\xf3\xc4s\xdb+\x90\x82\xda\xe6\x8e@\xcc\
+\xe9u\xa2\x18R\x046x\xef'\xe1R\xec\xce\x1a\x05\
+r \xc6tTpC\xc6]\xda\x12\x85\x00\xb2\xbc\x1f\
+Nm\x99\x9e\x96-\xaa9\xda\x1c\x94\xacG\x7fNL\
+W\xe3\x80\xa6\xc3\xd1\xbf\xce$\xfeF\xbe\x87\xeb+\xca\
+X\xc9\x18\xf7\xb8\x84\xa2\x8c\x99LisF\xba'\xb3\
+\xca\xb7\xba\xea\xe02=\x85\xb9\xb8w)*/\x18\xa8\
+\xdd\x9eV\x11ZV\xb4\xdfh\x92\xa1\x82C\x15\xf6\xfa\
+\x1e/\xae(\xf7=k\xd9S\x22\xa1\xe1o\xc3\xe5\x0a\
+\xa5=\x9b\xcdn[\xed\xef\x96\x08d~\xc6A\x95&\
+\x16\x93=:\xb9\xf2\x84\xd1X\xbb\xc7\x15ve\xfe|\
+1\x0d\x84\xba\xdf\x9c\xde\x9c\xd1\x9cQ\x01\x8c\x8c\x19{\
+q\xf2\xc2\xe4\x85R\x10\xb4\x0b+\xd2\xfb^e\xbc\xea\
+x\xd5\xca\x83\xe7\xa7\xdd\xd8\xbb\xe6EE\xfa\xfb\xcb\xc6\
+\x97\x8e/\xcd\x09vG\xad\xe5y\xc6[\x81\x8e\xbc\x0b\
+r\xccgcj\x0c\xd2\x17\xb4\xe8\x00\xbb\x98\xaa1=\
+C\xe7\xf4ie:Btn\xec\x01\x84\x064L)\
+1\xd3<\xbe\xd3\xd66[+\x0a0:\xfc\x9d\x223\
+\x08\xf3>\x96\xd2\xfcN\xe3\x8d\xfb1\xe6\x8fPLm\
+&\x1c@'\xa6L\x06~\x02\x18\x058\x86\xd1@\x07\
+\xe99E\x01\xfa\x9aY\x15\xe9\xf5\x96\xe6O\xcd\x9f\x0a\
+01\x5cVQ\x5c\xfbc\xec\xa4\xc74b\x1e\x98\xcd\
+\x7f?P\xeeC\x00P\x06\x96\x9b\x0b\x15UAb)\
+LP\xc3\x01<=v-\xa6\x95X*\xd1\xfcBQ\
+\xad\x7f\x03\x9d\xed\xc7\x15\x95\xbb>\xde$\x14\xfa\x9e\xd2\
+\xd1\x5c\xad\xf0x\xbb\xeb\x8a\x14\xa0\xfd\xb0\x22\xbd\xde\xaa\
+H\xaf\xff\xddy<\x84\x19%\xfb\x01\xd3\x1dzT\xdb\
+\xd8\xc7\xbc\xce\xda9\x14i\x1d.\xa7H_\x7f\xa2\xfd\
+d\x9b\xce\xafvOE\xe94F\xc7\x9e<\x86\xf1\xb3\
+h\xcf\x01$\xc5@[\xb92\xd9\x9c7\xb7\x0e\x82\xb1\
+3\x99Sa\xcd\xb5:\xfc'\xa48\xbe\xbc\xaf0\xc1\
+\xa33n\xa0\x224\xbd\x00\xd5x\xce8\xcf\xcd\x0c\x81\
+\xd9\xcc\x5c\xdb\xb6\x92\xfe`\x02KG\x0f\xe6\x89\xcd\xb5\
+\xc2\xcc\xd2\x05xP\xb8\x19\xb3\xe5B\x0b@&\xa6\xb7\
+\x00\xf0\x93\x7f\x92\x8f\x99)\x1a\x0c'(\xd7\x9a2t\
+v\x01\x8e\xe2\xb9`N\xbc\xf7\xf3\xf8\xfc\xa2\xca\xcb\xf3\
+g\xff\x14\x07\x94\xf1\x85\xf9\xb4\xdd\xa0\x92\x9ap\x0e\x1a\
+\xd0\x8c\xb1\xc9\x14\xbeP\xae\xb5\x1e\xbeR\xc6X\x02\x8c\
+f\x09\xed|\x15\x15\x9d\xcf\xc5\xb8?\x99\x00\x1eS\x80\
+u<E\xda\x15\x15\xe9\xf53\xed\xaem\xba\xce\xedq\
+\x8a\xcc\x18\xe8\xde'\xd21\xe7\xf9\x91\xbf\xf6]\xfd)\
+|h\x1c\xe1Y\x84\xb7\x91\x9931v\x18\xef\x163\
+e#\x9f\xe0\xfe\xde\xd5I\xfd\x22Od\x5c\x1e\xd3\x18\
+`\x5c\xd1\xd8\xb0\x096\xf9^\x98Z.j \x97N\
+,\xe7>^E\x8ca%\x7f\xa3\x11h\xc6H0\x05\
+\x90x\xb8^\xa1\x81\x12\x9ap3)b\x1c\xb1=\x94\
+\xf8\xbdLOi\x0fUTSQ\xe6ST\xd25\xf2\
+1\x1axh\xdf\xa9o\xcc\xac\x0b\xc6\x0dR\x07\xa4#\
+\x98\xf4RP\xd3\xd0#\xdf\xa3@f\x9c\x1e\xf5\x18\x12\
+R$Q\x14\xf2\xdcW\x004\x8f_\x8d|\x84B\x9a\
+\x863\xd37\xf0\xe0\xa1p&\xef\xf4\xd8\xd8\xf8\xfe\xdf\
+\xf5\xcc\xc2\xbd~\xc2\xcb\x81\xebB\xc7\x1cF4\x80\x00\
+\xff\x8e\xf5\xde\xeb\xd4\xc7z%O\xc5<\x94\xeb\x89w\
+]\x9f9\x82$\x1c\x89%\x0d\x01\xbc\x17\x18\x8b\x08c\
+\x87\xf7\xc1\xcf\xe1\xf7s\x1f\xc9\x17\x19\x83h\x001\xa6\
+\xfa\xb9A8\xca\x07\xf2\xefMI\xf9H\xe5\x06,-\
+Z:\x98\x86\xbfH\x91.\xe0\xf0\x87\x0a_\xf0?\x1a\
+\xe1\xf8[5w\xd2c\x03\xa1\xf0\xe16K\x07$L\
+\x098\x10t\x9c\xcf[\xdd\x90\xb9\xb2M\xcd\x94\x86P\
+i\x0cU$`\xccS\xe4\x83\xb93\x1b&V~\x1f\
+a\x06\x08\x92\x07B\xe2\x05M\xc7 \xc6o`J\xe5\
+y\x89\x81\xac\x00\x1c\x90P\xad\xe6\xce?\x0c\x02\xccP\
+\xa0v\xb3\xb0q\x07\x85\x8aHA\x09\xc2EbN\xa1\
+\xcb\xef\xa3p\xa2P\xa3\xf3\xfd\x92\xe7\x113\xd6\x82q\
+.\xb8\xb0C9\xa7\x90\xa6\xd3\x0c\xc3\x81\x05\x8b\x86\xea\
+\x8a\xc9\x95\x93+\xab\x84e\x86\x0b%\xcc\xf1\xbc\x11\xa5\
+4\xbd3![\xdb\x14+6\x5c\x12\xac\x05\xba\x0d2\
+\x12\xab-\xba\xf1)\x91\xa0Q\xf8\xf1\xef\x00^\xf8\xbc\
+t\xc0\xf9{\xfe\xe3\xfd\xf2\x00Q\xd0\xb1!\x81\xe4r\
+_W7@\xb0\xbc\x0bv\x80\x16\xae_\x1f\xf8\xc1\x83\
+`q\xcf\xa5_\xd2\xc0\x00\x1au\xee[\x9fR\xcf\xef\
+\x07\xa1\x5c\xc5\xdf\x87\x84a\x0d\xdf\xcf\xf5\x5cx\x00\x5c\
+P\x88\xf2~y\x1f\x00\x0c \x91P\xe2\xd9\x08|0\
+\xd0\x11`>7\x7f\x1f\xda]Lr\xfc\xbc`f3\
+\xb9OQy!\xf0y\xe8\xdc\xd09G\xa3h\xc0h\
+\xb0\x91\xa2\xeax\xbb\xc3\x1a\xe3\xa0<\x8d\x831N\x9a\
+\x12\xafNix\x07\xd0!\xe2s\xfb`U\xbf:w\
+\xac\xf1J\xa0\xc0\xc6\xec\xc8\x89nt\xf88\xd0\xb9\x8f\
+}\x06\x07\x92\x1a\xae\x1b\xeb\x04\xe0\x08$\x94u\x09\x83\
+\x81\xc2\x86\x8e3\xdaX\x0e\xea=rLM\xde\xa2\xa8\
+\x0aA\xe6\x82\xe3.l\x09NJ\x17;\xb3E\x8f\xe1\
+\x89\x0e7\x07\x0d\xc0\x13\xae\xc3\x14\xe4Hu\x90\xaaP\
+\x90\xa3YuG \xc6E\x02\x04\xb1\xaf!A!q\
+\x01\x105\x956\xfd]\xde/D\x04\x16\x15\xb8\xf9\x9e\
+\xa2*\xfc\xd87\xd9\x9f\x0cl\xb0\x8fQ\x90\x00\x8c\xf0\
+{\xc23\x80\x04\x90q\x85H\x1d\x98\xdaa\xa6B{\
+\x99\x22\xbd\xaf\x83R|\xc9\xe7\x84:\x8fK**\x80\
+\x13\xc9\x08\xcf\x1b\x07\xf9\x96\x8aj^6\xc0$TR\
+:@tL\x00\x80\xfd\xbe\xc2lv\xd7\xec\x0f\x1dR\
+\x0b\xe6\x9e\x93 \x0dwVTT>K?\xb2\xeb\xfc\
+I\x15 \xadD\xf7{~n\xb6\xf3\xbe\xfcPeF\
+gSI\xbc&&\xdfTT\x9d\x12<'~\xda\x15\
+\x16\x83\xcf+J\x82\x11c\xa3\xa0x\xffl|\xf6\xf8\
+\xec\xbc\x9fv\x12:\x17\xda\xa3\xfdG\xfb\x8d\xf6\x9b\x9a\
+\x92\xf7\xbb\xdc\xdf\xa1\x80\xe3\x09\x93\x0a\xdb\x14\x95\x84\xcd\
+\xde h\xe3\x9b\xe7\x9a\x7f\xe7i\x00\xf3Yzq\xf6\
+\xd4\xcf\xb2w\x85\xc7\xc3\x85y\x9d\xa8\xf2k\x97NV\
+s\x8d\xa2*\xf0\xc5\xb8\xfb`%Q\xf0~\xd3\x1c\xd1\
+\xad\x1b9\x1d\xc8\xeb\xa0Y\xb6Y\xa6Y\xa6x\xc6\x00\
+$\x0c\xe7\x1f\xce7\x9c\xaf\x9c\xc7\xed[\xac\x11g\xbf\
+@:h\x89P\x14DW\xbb\xf3{\x84\xbdx\xacq\
+\x9e\x9a\xb5\xdb\x17\xe8$\xca\xd2R\xa6\x96H\x19c\xfa\
+\xc4|\x8aBa\xe7\xf9\x18\xfeT\x91^\x17UT&\
+\xc0\xffT\x94\xb9\xe7\xcd\x92\x8a\x02$\xe0\xc1\x92\xcd\xd6\
+\xce\xa9\xceg\x9f+\x5c?\xcc\xe2&\xb3*\x0a\x10\x0b\
+\xd0\x80\x04\x01fHP\xea1YC\xd2\x04\xc3\xa87\
+U\x06\xc6B:\x83:-\xaa\x81\xeb\xf1)\x8aB\x81\
+\xa7\xa3\xd7n\xeb1w7*\xd2\xeb\x99\x0aw\x8a\xce\
+/\x89f\xfbsE1\x0bk_P\xa4\xd7\x1f*\xaa\
+\xb1\xa8\x96&1\x85%\xbc$\x9cO\x06E\x99\xf1o\
+\xafQT\x85\xb5\xcf\xaf\xe1\x95\x0a\x03\x13w\xa7\xdf\xf3\
+\xaf\x14\x8f\xb8s\xf6\xa4\xbd\x136-@_\xfb9E\
+\xe5\xa6\xaf]w\xc9\xea\xf3`J\xed}'w\x86\xcf\
+u\xc2\xfc\x07\xaf\x8f\x8f\x1a@}\xa6\xa2Z\x9b\x91\xd5\
+\xde\xadH\xaf\x7fU\x14fY\x8cw#a\xc7\xa3\x08\
+\xe9%\xf9\x0e&\x8fH\xae<\x05 \x98\x08\xfe\xbe\xc1\
+\x9c]C\xa5\xf9\x91\xa2\xa2\x0c;_l\xafm\xafk\
+S\xe2>\xf3g\x8aJ\xb2\x87\x04\x02\xa6\x83:\x8b\x8f\
+U\x05\x13T\xf6\xc7\x14\x15\x03\xc1y{\x00+\x96:\
+p\xbe\x04\x00e\x93\xb1voE\xf1\xfc\x82A\x07\xe3\
+\x85s\x81\x02\xa3\x9d]\x91\x81\xa6\x14\xe9\xcf7\x16\x07\
+*\xad\xc7\xaf\x8d\x8f\x18\xa7\xe7\xb6\x9dG\x91\x01\xe2N\
+\xe2\x01\xe3\x8d\xf1m\x00\x00x[`\xb2H\xdeH\xc1\
+\x09E\x1aww\xa4\x8a\x8cY4\x00\x16\xe3'\xf10\
+2\x107up\x8e\xa9\xc9\x19\xfe\xbcL\x9b\x81jm\
+o\x81\xf0\xc0\x22\x9f\xbf\xd8\x9e0\x8f)\xf2\xdc\xf9\xce\
+\xa3\xc3\x8d\x84\x18_\x8a\x84\xc0\x92\xe9\x94\xd3t\x0c9\
+\xef\xf3\xe11C\xc1H\x9e\x88\xd4\x92B\xd6\x85iH\
+\x87\xbc\x0eC\xba\x86y1\xc0\x0b\x1au\x18\x0c\x14\xb6\
+H\x22\xdc\x09\x9el\xaa\xa8<\x03\xecq\x10\xf9)\xf5\
+\x1a\x0d\x00\xde\x1f\xf9\x16&t\xe4%0\xea\xc8\xcfh\
+D\x91\xc7\x91O\xd1@\x86\x11\x04\xc3\x85\x82\x9e\x82\x98\
+\xbc\x1b\xc0\x84\xfb\x0d#\x80<\x8dF\x1by\x05@\x04\
+\xd7\x15\xd3J{!D^H\x9eIc\x03\x066y\
+\x07@\x04\x854\x9f\x13\xa0\x88\xeb\x02\x93\x17\xc0\x03\xa9\
+\x04\x8c\xcf>\x93\x07\x00\x81F+\xd7\x07\x00\x0c\xf3A\
+\x00\x08$\x10?4\xd3\xf2\xa6\xee\xba\xd3 \x8bF\x8e\
+\x1b\xb2\xe1\x99a\xcf\x88hH\xf2\xeas~\x84YP\
+\x14LN\xc4&\x17*\x9c\xd8\x9fW\x15\x0e\xdc\xf8U\
+r)T\x10\x96Zk\xbeR\x95\xd8R\xe8\xcf\x9a\x8f\
+\xe8RPQ@\xb3@\x8c\xfc\xe4\xc4\xe5v\x9b\xd4\x1c\
+Z\x8dK\xe1\x81\x86\x1aC\xc7\x82\x0b\xe6\x1b\x15\x1dR\
+\x16>\x9dg\x106\x0a\x7f<\x08\xd8\x08@dy\xdf\
+\xb8>\xdfn\xc4\x0f\x97_:vt\x1ap\x036\xc2\
+\x16\xc8\x177\x94\xc2\x07j6\x05?T$np\x8c\
+S3#`\x1e\x17l\x5c/:q\x98DP\x18\xb0\
+\xc0y\xf0\xfa\x9av\x16\xaa\xa7\x00\x80\x08C\x01\x8d\x8e\
+\x99\x11\xa1\xc1\xba\x06\x10\xb8\xaeP\xae\x18Sf\x0du\
+\x5c_\x0a^\xbe\x96\xc5\xe3\xecUG\x9a\x02\x8d\x8d\x9b\
+\x04\xbe\xc7p\x88\xf5\xc7k\x7f\xc3\xe0\x81\xe1\xbe\x83\xa4\
+\x16\xea\xfb\x82\x83\x053p\xd3\x01\x01\xb3\x98i\xe0\x8d\
+L}\xba|]\x01v\xb8\xde\x14\x1e$\xfaP\xf5\xb9\
+/\xefu\x87\xf7\xb5\xbe\x8e\xfew\x01\xe4 \x91\xe0\xe7\
+\xf2\x9cP\x98p\xbd\xf8{\x9e\x13\x18#h\xf5)h\
+8\xd8`\x0a0E\x81\xebB\x07\xe3DE\xa5Y\xc7\
+u\xd5\x05\xf2\xe4tE\xd5\x89\xa2\xb3\xdbc\x16\xc4\xf5\
+\x04\xc0\x01\x88\xc2\xd4\x84N\xd5\xdb:O\x0a\x12\xd1\xa0\
+\x9a\xe2\xbd\x00\xd0\x01 \xd6Gj\x91\x18\xd8D)\xc6\
+$\xc2 \x81Z\x07U\x1ef\x0b\xcf?&\x87\x00\x00\
+\x1cd<\xb7t\xfc9\xe8\xb9\xbe\x8c\xe5q\xc2\x1d\x94\
+Z\xc6\xaai\xec\xe9\xc3\x15\xd3\xc4\xee\xfa\x01\xb80\x9d\
+\x00M/\x94\xeb\xc7|\xe0\x00\xfc\xf1{90\xed\xce\
+\xcb\xc6\x8cF\x11W\xea8\xd8]xF\xa7\xc2c\xb6\
+\xa2\xe0\xe7\xb9\xe2@\x85\xc1\x02p\xc9\xcfy\xd4\xfb\x00\
+\xeb\xc7\x07P\x98HQxp?\x19\x83\xc4\x5ct\xbb\
+\x95G\x87\x1d\xaf\x02u\xea\xd3\xbe\xd1\xdc\xa5\xc8\xe3=\
+o\xcd\x9an\x9b\x9aa\x0e\x15\x94M\x0eP\xff\x9e\xfc\
+\xb4,Wu\xd0\xd1\x94\x02`06\x12\xb3G4\xdb\
+P\xd8\xefVT\x80\x0d\xc0\x05\x1aO\x00G\xf6/\xc6\
+2\xea\x1c\xd8\xca\x09\xc29\xd5<d\xa5\xcb\x1f\xad\xc6\
+\xc5\xae\xa4\xf0\xef\x9f\xa50>b>\xfb\x9e\x8aj\x9d\
+\xad\x9dw\x98\x8e\x81vi\xd1\xe4\xa6\x04\xfd\xda\xf6\x9a\
+\xaap\xf5\xfe\x10\xf7\x13f\x0c\xe7\x03\xc0\x00\xd2\x19\xa4\
+g$\xb0'w\xde\x12\xdc\xbf(h\xbe\xd9I\x08R\
+\xa1\x9d\x22m\x93\xe7*\xd2\x9f\xcf\xab\xa8\xcc\x8aLY\
+\xee3\xa2p\x1b\xe6\xba\xe6\xd3\xa2\xb5w\xc5oJ\xc7\
+?L\x1e\xcd\xd8k6J\xf1\xee\xd2\x09l\xde\xa8(\
+\xaf\x01\x80\xfcV\x91\xae\xdb\xd2\x8aL\xadOQ\xae\xff\
+`\xa7n?b,'\x8d\x81\xa0D\x1a\x08FKO\
+b.\x87\x89\xec1\xf1\xa1n?\x08\x0a\xf2|N\x94\
+m\xe2Ha\x19\x09\x22SC\xae\xb2\x19\xe8y\x0a\x8f\
+\x87L\xd7i\xb8\x99\xa20Y\x86\xf7(J\x1e\xd1|\
+Y\x91\xfe\xfc8E\xfaz=E\x19\xb3*^\x86\x98\
+\x19Q\x98\xdf\xa9\xa8\x12;\xf2#?'\xed\x19\x8a\x02\
+\xb8\x04S\xd2\xae\xfa\x93\xfd\x15\x05\x08\x98y\x85\xa2\x9a\
+fb\xe6K\xb8G3\x1et\xc3n\xfc!\xe7\xf9d\
+K\xbb\x89\xfb\xb9\x8b\x82~\xaf\xceU\xbe\xddPQ\x0a\
+\xb4\x0c$\xa5\xfd\xbb}\xbf\x22\xbd\xae\x9eb\xb5\x8ab\
+\x8f\x04\x12\x13a\xc68\xee\xa8\xa8\xcc\xb1\xcc\x00\xcc\xf3\
+\xe9g\xa9\x0a\xc9\x1b](|\xb6\xa3\xbc\xa7O\xdf\xcd\
+#\x7f\xb0\xcbk0c\x0b\x0f\xa9\xe9\x1dC+\x15\xf5\
+\xb9\x13*\xd8>\x03\xf7\xec7\xd3\x14e\x1f\xcb\xcc\x88\
+\xd5\xdc\x99\xfcSit\x00$\x8e\xffKa\x09\xd9\x0d\
+E\x92\x9aO\xd7[\x8aI[P\xa9O\xceO`\xc9\
+\x1b1\x1b\xa3@D\xdb\x8b\x04\xcb\x92\x84`>\xe1\xad\
+\xb5\xb1\xa5?O(\xaa|\x8ds\xc3\xc0\x05f\xacx\
+S\xe0-\x13\xf9\x09\x0c\x193u\xa3\xb0\xb0+}t\
+d\xd1nS\x888\x8f\xe0\xf7\x87T\x01\xa9\xc5\xca\x8a\
+\xc2h\x9b|WQM\x058^Q\xf6\xd7,5y\
+\xc4\xa6\x8d\xe9ynWRTS\x11\x00\x8a\x1eL\xf1\
+O{\x87\xccSy(X\xfa\x06\x13\x8c<%\xe6\x98\
+\xfb\xbc\x0f\xcd3\x9dX\xf6y\xea\x06\x1a&t`1\
+\x7f%\xef\xc0\x84\x18\xef\x1b\x03\xcdq\xbe\xc1\x00\xe0<\
+\xf1\xdf\xa7r\xbd\x9343\x86\xf2\x18_\x0f\xa8\xf8\x06\
+n\xd9\x1f\x82y\xe6u\x13\xde\x11+**\x09\xd0i\
+]\xe3\xa6\xdf\x80\x0c\x13H\xcew\x0aR\xce\x01\x18\xb3\
+\xe4\xc9\xe4\xe3\x06\xa8b\xec\xddGm\xf6\xf7\x8d\xc9Q\
+\x92l\x07\x80\x02\xe0A\xa3\xc6\xf9m0\x89X\xcf\xaf\
+\xf14\xb73\x14\x15U\x9c\x86\xdd\x13=\xa60\xfb\x1b\
+\xaf\xe4\x1d\xfc\x07\xb3\x01 \xa3\xc7t\x89\xff\xa8o\xa0\
+\xec\xc30\x80\x99D\xe1O\x81\xdf\xff\xf9\xe4\xd30\x83\
+\x0d\x18\x07\xa3\x80\xe7\x19\xc9\xab\xf3\xc0\xb8\xeeL\xd5\xc1\
+\x84\x9c\x8e\xbd\xf3Q\xbc{\xa2\x90F\xaaI}\x03`\
+\xc6\xd4\x16~\x1f@\x05&\x844\xa8a8\xb0n{\
+ub\xdcg\x00D\x00\x17\xf2\xc0\x9b\x0c\x90\xdc\xde]\
+\x97\x90H\x00Hr\x9fx>\xd8\xa7(\xfc{\x12\xe3\
+Qv\xbb\xdf\xdf7\x1am\xcb\xbc\x95\xcb*\x9d<L\
+\x1c\xe8\xd8\x0b\xc7\xf8\x91\xb5\xf0\xdf/\xee\xfe\x91\xc8\x93\
+\xa8.\x99m\xe7\x8af\x1f\xe0\x00\xaa\x0e\xe6{$\xf0\
+|p\xcc\xe9\x18\xbb\xc2\xfcQ\x12)\x0a\x5c:{P\
++)H\xe9\xe8R\xe8Q0P\xd8\xf1\xf3y\xd0\xb8\
+p\x14\xf6\xaf\xb7\xa9\x1f\x7fN\x87\x9aB\x013%\x7f\
+\xce\xa0\xbc\xf7)\xd8\xdc\xd8~\xa7\x9fW\x10N\x0a\xef\
+u\x9c\xd8ob\x93\xbb\x0d\xfc\xefV\xf4A\xf0\x16k\
+n\xea\x84t\xed*!\x22\xb1\xc4\x1d\x94\x82\x16m\xfe\
+\xd2\xfe\xbdt\x22q\xf9\xa7s\x86\xe6\x87\x0e&\x9d\x7f\
+\x0ay\x16>\x1b,\x1b\x00\x0b\x8b\xf5b7\xe3\xf0\x14\
+\xe0\x01\xe7\xfb\xd8\xc8y\x00\xf8\x9a\xc2\x94\xdfC\x81\xca\
+F\xc1\xd7}\x13\x0f\x00\x01\xfe\x9c\xfb\xc5\x06\xca\x86\xc1\
+\xe7\xe1`\xa5PG\xba\xf1Ak\xcfW2\x02\x07\x80\
+\xc4\xba\xa6\xc0\x7f\x93\x91\xe0\xe2}\xd0\x8d\xa5A2\x80\
+\xe4c\xf3\x00\x10:D\x95y\xa8\xee\xe8E!\xc7u\
+\x07x\x82R\x0ds\x86\xce\x82\x0f\x880\x9d\xb4y\x1d\
+\x14&Y\xda\xc8\xd4&\xae#\x9d\xf3~\xc1\xcf+\xd7\
+\x9d\xf7\xd7\x1fK\xc8\x7f~\x9f\x14h\xcc#\xa7C\x15\
+\x089\xff\x8eD\x07F\x00\xd7\xc9\x85<\x07ML1\
+\xb0\xdb~\x00]\x98\x8a\x9a\xc2\x89F\x981fA\x89\
+c\x0c\x13H:\xf3\x98\xd1\xc43v\x87\xce\x5c\xdf\xac\
+\x85\xc4\x81\xfd\x84\xbf\x87i\xc4|k\xdc\xf2a\x02P\
+\xf0\xa3I\x07xt\xe7\x80\xc4<\x12W{\x17\x04\xa3\
+\x03\xf3>L\x00a\xee@\xb1f\x7f0\x90\x81\x0bu\
+\x98\xd0\xb1\xa1s\xa0\xf2\x1ca\x82\xc3\x7f~\x8e&\x07\
+M\xbe89\xa8blaV\x86\x07\x04\xe6\xa7$\x98\
+\x9bg\xd1Ky\x9e\xaci\x9b|{\xf2\x9dl\xfa\x85\
+\xfb\xaf\x19\x04x\xa0\xc4xB\xb4\xd9\x06\x04\x9a}\x14\
+\x95\xa9\x9e5\xa5\xd1\xb9d\xcc\x17\xe7\x0e\x9f\xc3\xcc\x0c\
+\xc6&F'\xfd,Ee\xbe\x88I\x1e\x89\x8b\xe0\xac\
+\xd7d*\xfa\xf1\x99\x19 \xe6\xc7>\x95;\xba;Y\
+\xed\x9fS\xfc\xa5\x98\x9e\x0dnLqC\x01\xbc\xda?\
+(<Vl\x19\x03\xd0_,s\xb2syM\x07\xe2\
+13e\xb6.&y1W~\xd4\x99\xf3a\x92\x15\
+\xd4m:\xe8~~\xf0F\x08@\x1c\x97u\xaf\xcf\xf1\
+\xef\x14\x05\xa8\x18\xcePx\x5c\xdf_+\xc0\x17\xad<\
+\xe7&\xfb\xaf\xd7I\xd6\xda\xdf\xe8\x9f\xb3t9\x17c\
+*\x80:\xfc\xea\xd8\xef\x99b\x8f\xe2q\x10.\xf9t\
+\xc01\x0f\x9c\xee\xb1~\x96\xaa\xc5\xe7\xff^sb\x93\
+\x0a\x92\xe1\xfftT{\x98\x22\xcd\xe6\x8a\xd2A\x16\x81\
+\x5c\x14\xf2\xe8\x90\xb2\x9f\x9e9\xf8\x91\xa6\xf4\xc48P\
+\x98'<\xcf\xb8=\xbbC\x03\xc3g\xf2^\xcf\x157\
+s\x00\x80\xab\xb9_Q\x0a\xbe\xe1g\x15el\xde\xf0\
+W\x8aBm\xc63\xa09@\x91^_P\xa4\xd7\xed\
+\x14\x85\x0a\x1e\x00\x1a\xde\x1f\x00\xa3P\xbf\xbd\xaf1\xa7\
+\x1e\xa6\x13R\xaa\xe6_\x8aB!\x9f\xf9oEz?\
+K*\xd2\xf5\xd9T\x91\xbeo\x0dEz}X\x91\xfe\
+\xfe$E\x91\xa6DA`I\x12\x8c\xb1\x00\xfaI<\
+\x01\x98\xd1\xa8Z\xc3\x1d\xe6c\xfey\xcd\xcb\x8aR0\
+p\xff\xe8@\x8f?\xa4\xa8L\xa8^t#\x06\x89\x89\
+;\xfb0Hb\xbe\xfa[=%\x01\xa0\xf2\xca\x8e\xa1\
+\x18L\x1c'\xe2HW\xc2\x8c\xefS\x8at=~\xaf\
+\xb0\xf9\xdc]\xc5\x5c4\x98\xa3\xde?b]`\xfa\x0c\
+\xb5\x9a\x82\xcb\xfbD\xdeev\xf7\xf3\xf3\xda\x92\x0f7\
+k*\xd2\xcfy\xc1R\x1d\x12}3/&\xafS\x14\
+\xe9R\xfb\x94\xa2\x98\xbc5'(\xaa\xfc\x99\x82\x88B\
+\xc0\x05U\xb8\xc4#]\xa1@\xf7\xef\x0b\xc9\x04\xc0\x00\
+\xcf\xb3\xfa\xfb\x92P\xec\xa7(L\xd00\xe1\xa3\x10u\
+\xe1\x18n\xf60s]\x18\x06\x90LG\xd9y\x1a\xd3\
+e\x18\xf3\xdd~\xac\xfdx\xfb\xb1\xaa\xb11\xc8\x83c\
+K\xa7\xf4o\x8a\xf4}7)\xaa\xeb\xfdcK\x17\xce\
+1\x85\x9d\x86\x05\xd3\x05\x0c\xe0E\xfe\x8d7\x0e\x85_\
+\xcf,;L\xe00\xc5s>4\xf9\xb5\xa2\xca\x8b\xe9\
+\xbc\xfb\xbc\x0c\x8f1~\xbf\xaf\xe7d+\x9b+\xaef\
+\x93?\xf22{K\x05\x83\xd2\x1a\xfc\xf0\xfc:\xcdf\
+\xda\xac'\xf2,\xc6\x08n<\xd9h\xb2QaR\x06\
+\xe3\xcd\x92\xe9(\xd4\x00j\xc9{1\xb9\xe6\xe7!-\
+\x04\xd0G\xc2a`\x7fr\xca\xe4\xe4\xc9\xc9\x95\xb7\x83\
+\x99\x1d1\xed\xc3\xf5\x07\xd7m\xf2ZE\xc5\xb8\xc0\x94\
+\xd0^\x1a1e\x8b|\x90\xfb\xc0\xfb\xa1\xe1\x03#\x82\
+u\xdd/\xfc\xfb\x8d>^i\xdcY\xc2\x15@\x10\x8d\
+\x1b\xef\x8bQ\x80\x93\xaf\x22\xcd\xa5\xb1\x05s\xd2\x8c\xd9\
+\x00\x80\xe8\xc8\xf3\xef\x90~\x93?\xdb[(\x0ad\xd7\
+\x09\xec/\xe1\xb1\xc3}\xe1\xe7P\xcfQW\xf0\xca}\
+\xeb\xbdF\x81\x0e@G]\xc5z!\x8f\xe3\xdf\xf5\x81\
+\x00\xea[\xa6\xf4\xc8\x13\xe7\xc7\x15\x00\x84\x04\xdf^v\
+\xe4\x89\xc1\x08\xb0\x07T\x5c_<\x89\x0c\xc8\x8d\x22\xc1\
+\xa3\x13\xc7\x0d\xa6\x90\x05\xd9\xa1CHB\xdf\xe4\x92\xab\
+\xa3\xfc\xd4TU-\xdb\xf5}`\xaf_\x15 \xfe~\
+\x0e\xa0\xa0\xa2\xd3\xf9\x84\xc2\x8d\xe9\x1a\x14^\x1e|\xb4\
+\xcat`1;\x00\x19\x01)\x041\xe1k\x0al\x8f\
+\x11\x8bB\xaa\xef\xce\xce\xe7\x9d\xe9\xcf\xcfu\xc0t\x0c\
+m2\x0b\x05\x8d'\x9aj\x90Dn\x1c\x0fH\xff\xc1\
+ A\xe3\xc1\x01a\x03\x00\xa10]\xc7\x1d[\x17\xfc\
+!a\xe0:-\xef\xcfIa\x05\xd0\x01u\x84B\x0c\
+D\xf1)\xdf\x1f\xa8)w\xb9\xc3\xe8\xc2\x1a7\xca\x18\
+\x87\x06\x80CaHg\xd9\xdaf\xc6\xac\xc5\x83\xc1\x83\
+\xc0\xef[\xd0n\xd8\xac+\x16:\x0b\xbfO\xed\x070\
+\xe9\x9bs\xf0}\xdc\x97\xa1\xbf\x1fO\x036\x18\x0a\xfb\
+\x85\xbd\x1e\xe6\xf2\xfb\x00\x08\x80\x19\xc1\x7fs\xf4\xfe=\
+\xaf\xb3\x18\xd8\xa0\xb0\x02\x00\xc0|g9w\xec\xe9T\
+\xf7=\x1b\xb8\x9f\xdc\xdf\x15z\xe3\x15\x01n\xf8{\xd6\
++\x07\x96\x0b\x84p\xf7\x849\x80+6T}\xc6\xa6\
+0\xff\x93\xc2\x1f\xa4\xb7gZ\x17\xef\x97\xdf\xcf\xfb\xe2\
+\xfdr\xfd\x00\x84\x00\x8ex\x7f\xac\xab\xbe\xab.f6\
+\x1bu\x07\x1d\x1a\xc9\xa0Tq\x1d1\x83\xa3\x90ub\
+\x18\x1b\x19\xa6H\xb8\xddC\xf9\xf3\xfbE\x0b\x1c\x1d|\
+:\x9a\x98\xc4Y\xe3\x97\xa9\xdbr\xe5o\xbb\xb9\xe2\x00\
+$\xaf\x02\x98\x98\xe7ji\xcddyEe\xe6\x87\xb9\
+\xd2cUg\xfd\xc5B\xa5\x8e\xeb\xc2\xfa\x02\xd8\xe1`\
+\x82Z\x0f\x03\x02F\x01\x1e\x1a6Q\x0bm\xd8Q\x1d\
+r/%\xaf\xb4\xbcQ\xb8\xb9\xd3\x83\x99jh\xf9\xbf\
+o\x84\xbf\xb83\xbf\xf2\xf9\xe6yD\x1bf\xd7\xfa\xc9\
+\xdb\xa4\xba.\xa6]1\xfd\x00\x00\xcc\xeb w\x1c7\
+\xb4\xeb\x7f*\xa8\xda\x0dRl\xe8\xc4~\xb6\x8a\x0a\x07\
+p\x80K>\xe3\xea\xd6\xf4\xd8\xc6\x8d\xbb\xf5\x9a\x0b\xc9\
+=\x0bP\xcb:n6ST\x0c.wTb\xec+\
+\x09\x12\x1e\x15\x8cg\xb5\xe7Fh\xddm\x92\x94\xef\xfb\
+\xd8&\x8e\xb7T\xd3\x14\xe8\xb0\xb9cI\x01\xd9n\xa5\
+H\xaf\x8f\xa4\xf8W\x01b\xe8d\xe7\xe3\xf3\xbaR(\
+\x0d\x16\x11\xd9\xd9\x8c\xa1\x8d*\xb3,\xe6Y\x8b\xd1\xb3\
+\x5c\xd9o&CE\xeeXfs0\xb4\xa0\xb1\x8e9\
+\x8f\xd8\xf7\x9d\x80\xf1>Sr\x99M\xfd\xda\xf5\xba9\
+\xef\x83];\x93\xd3\xf6^E\xfa\xbe\xcf(\x0a`F\
+a\x8d\x869\xa4@\xcc\xe5f\x5c\xaa\x13\x8a\xdc\xd9\xdf\
+\xa8$:\xc1\xbc\x10E\xfe\xf0B\xedmNUT\xde\
+\x1f\xf6\xb0hno\xeeh\x04\x00\xcc\xae(\xc0\x09\x89\
+g\x8c\x13\xfe\xa1\xa2h\xec\x87\xcb(J\x22\xdb\xbc_\
+QIY\xe8`\xba\x83\xd7\x9c\xa2\xa8\xbc\x17\xfc\x9c\xc6\
+\xf89S\x9cI\xe8BZdm}P\xfb\x9fP\x94\
+\xfd\xa9\xf9\x9b\xa2\x98\xee5\x87(\xca+\xcf\x0d\xeb\x1d\
+\xd3<\xb4\xa61udAE\xfawW**\x8d8\
+c7]H\x02xN\x16QTTSk\xa5c\xda\
+\x01S&\xfc9\xf1*@\x03\x0eu\x99}a\xe6\xe7\
+\x14e=\xc4\xf3\x81W\x0f\xccF$V\xad\xcfC\x00\
+H\xcc\x98\x17L\xb1P5\x17\x9d\xf1ytL\xe9\x80\
+\xc1L\xa3\x01\xf0\x90\xa7\xbax,)\xa6\x834\x0aB\
+{\x8a9\x16\x9eP\xbe~\xed\xdf\x14\xe9uKEa\
+^\xc5\xb8h7,&S\x96\x14\x90g\x01h\x0cr\
+)\x1a\x8c\x0b\x98V\xf1\xbe\xc5K\xbb\xbfj\xf8\x00\xf0\
+\xfeV\x91~\xee2)\x96\xad:\x80\xaf\xcfv\xca\x92\
+\xcc<'\xc9L\x98\xd7Q\xc8\xd3Yw\xc7\xbc\xbdE\
+Q\xbcM\xa2c\xcc4%3\x9f&\xdb)*\xa6\x18\
+\x00\x00\xfb\x81\xa7M\x91\x17\xb7\x07)\xd2\xeb\x07\x14\x06\
+\x22\x97\xae\x12\xfe\x05\x14\x15\xe3B\x05SZ\xc7\xed\xd7\
+R\x1cQ\xf2\xe0\xf6\x9e\x14\x7f/yJ\x98\xb9q\x1d\
+\xc9\x1b|\x8er\x9eG\x03l67\xf8\x0c\x5c\x847\
+\x90\xcd\xe4\x02\x800 \x1f\x85$\xe7?f{\xe4=\
+\xef6\xc3\x0f\xad>@\x15\x85\x1ay%\xeb\x96\xf3\x9b\
+\xbc\x82\xbc\x8c<\xdb\xf9\x12\xe6\xb5q.2\xae\x17\xe6\
+/\x051\x9av:\xe5th\xf1\xbc@C\xcd\x14\x05\
+\xea\x03:\xe6\xe4e\x17\xba\xe3K\x81\xcc\xe7\xa4qs\
+\xb0\xa7\x09aR\xea\xf1\x8eQ/!\xbd\xc5\xfb\x82s\
+\x95\xba\x81|\xdau\x10\x05;\xd4}\xc6\x1f\x07\xf3\xc4\
+L\xc3\x00\xa6\xec\x0d\x14\x0c1\xea\x22L\xc0W\xef\xd6\
+Y\x98f\x02l\xe15@\xc3\x06\x86\x0f\x80\x08\xd4|\
+\xea'\x1a(\xd4\x0b4\xcc\x5c\x87p\xee\x87\x06\x1e\xa0\
+\x09\x09&\x8ch\xf2\x16\x00\x82u=6\x9c\xcf\xcfT\
+\x00\xf2.\xdeG\xcf|=\x1aq\xbe/\xc1(\xa0\xf1\
+\xc3\xfb\x06\x08e_c_p\xfe\x19\xf7\x1fIB\xdf\
+\xec\x9e\xfc\x84\xffx\x9e\xa8\xc7h\x18\xd3\xf8\xc1,\x10\
+\xe6\xa9v\xa5\x19\xf9\xf7?\x90\x7f\x7f\xdd\xa9\x7f\xa6j\
+\xbc\xc0h`,\x22\xcc\x08\xeaS\xcc\x9e\x01,\x5c\x1f\
+L\xbe\xaf\xa8<\x87\x18Si\xe0m\x84V wj\
+W\xf5Bo\xab\xb1\x1aN|\xa33\xc6\x85\xf7\x0d\xcb\
+\x08\xdb\xb6\xde`\xef\xab:\xf8kd\xbf\xfcR`\xf4\
+\x0b\x0d6\x02\x0a\x12\x90\x1f\x0a\x7f\xa8+\xb8c\x92\xf0\
+Sx\xd2\xc9\xe7\xf7\x01L\xb0\xf0\xd0\xdc\xb3\x80\xe8\xf4\
+QX\xd1a\xeb\x99\x07\xa5\xc3\x91\x07\xaf;X\xb8\xd0\
+\x98nPP\xf1\x1f\x00\x0a\x85,\x0f\x00\xef\x87B\x81\
+\x02\x91\xdf\xc3\x02\xc7dl\x0dS\xec\xfa\xd4\x9f\xbe\xa6\
+~\x0e?h\x13\xff~6\x92\x7fx\x01\xdf\xec\x84\x1f\
+\xa0\x02S\x0c\xde\xc7\x22v\x95\x7f\xad\x01\x947\x1ax\
+\xf0\xf5\xe0\x01\x1b\xbc\xc3\xd7\x8d\x0d\x08\x00\x03\x97o\x0e\
+\xae\xb7\xfa\xf7\xd3\xd9/\xd4\xffW\x02)\xbcr\xbd\xd8\
+\xe0y \xd9\xd8y\x808x\x00\x00^r\xa2\xc1\xe7\
+\x1e\xf5\xa8Qe\xdaB\x87\xacs\xfd\xfa\x1dR\x80\x80\
+\x9e\x16\xe9Uc\xff^\xf0\xab\xa5\x13\x01P\xcc\xdbC\
+2\xd9\xa8\x01\xc8x\xe5~q\xbf\x19\xcfg\xd3\x93(\
+\xa49\xc8(\xa8\xfb\xae\xa5\x00^\xb8\xee\x03\x841\x96\
+\xd2cV\x02\x08\x80Y\x00\xd2\x8c\xb4\x01\xd7z$,\
+P\xaf\xe9\xa41\x0e\x13I\x02.\xb3t\xbaI\xd8\xa0\
+\xa2\xda%?\xc6*!90\xf5\x99\x04#\xb4\xfd\x1c\
+\x9c0\x88\xd0Nq\x1d\xb9\xee~\xeesGgs\x9b\
+\x10I\xab\xebi%\x99\xb9\xddV\x1d~#\xac\xe1\x8e\
+\x0b\x80\x84\xc4\x07f\x85\x11\x7f\x5c\xf5\xc3k\xc1s\x88\
+9\x18\xd1p\xc7\xbe\xc2\xfeCg\xca\x94\xf6\xc1q\x83\
+c\xd5YN\x9f\xfa\x8c\x8c\xac\x9a\xf2\x8f\xa9R$\x08\
+\xcc\x03f~\xbb\xcd\xb5x\xdft\xa2\xb9_\xcd:\x8a\
+\x94\xef\xdc\xa1\x09\xd5Y\xbb\xdcu\x84\x01\xb6\x18;\x88\
+y\x18@\x87\x7f.\x94\xf4@\xf0y.9X\xd6J\
+\x9fr\xad\xb2O\xb5\xd7\xa4\xb8\xbaP\x9b\xdb\xf7),\
+YZ\xd0\xebr\xe1bR\xd9\x1c\xaf(\x9aX\x12\xfe\
+X\xcf\xecG>\x981y\xcc\x09\xf62e\xac\x1f\xeb\
+\x1a\xe6\x0a\xe6jq\xbe \x15\xe2\x9c`\xbd@}\x05\
+01\xa5\x1d\x8akx'\xb8\xa3\x94\x7f\xdf\x89\xa6\xb6\
+\xff\xd0\x05\xd0\xbf\x0c$\xec\x9f~\xdd\xad)$i\x98\
+\x91\xe2\xbe<^5E\xe9Dg&\xce\xba\x150\xe4\
+D=\xb4\xff\x1a\x9f\xf8L\xc5D\xb0\x17F.\xa4\x16\
+\xacL\x1dM\xedF*\x11\xe6\x96HKp\xb3\xc6$\
+\xd7\x8c\x96f?\xb9\xe9\x14\xb3\xbe\xe80\x03\x04\x014\
+\x01\xe8aV\xb9\xe1`\x83\x0c\xe0\xb8c\xaf>z\xee\
+\xa4\x03\xec\xcd\x9bw\xb2\x0e\x08PG\xe2\xe8\x14\xdf,\
+\x9d\xef\xdci_\xb2tn\x07\x07+J\xc1\xa4\xbek\
+\xeeX:\xb1c\x0a\x00\x05\x13T\xd9fWEz\xfd\
+\xa4\xa2h\xefa,\xb4\xdb+\xaas\x9f\x8e9\xc0\xbf\
+%\x13\x8c\xd9k\xceTT\xd35\x18\xab\xb6\xba\xa2\x92\
+.-\xdf\x8d\xed\x8a\x0e=\x1d{\xdc\xd3/S\xa4?\
+_]a\xa6\xc8\xf1\x95\x96\x9b\xf3\x84\x0e\xa1\x81\x9c\xa0\
+\xa0{z\x01\xe7\xd3\xf8\xb7\x8a\x8a1p\x81\x22\xbd\xbe\
+CQQT}\xdf\xc2\x8c\xcf\x80\x02R\x05\xa6*\xcd\
+\xbcM\x91\xfe~\x07E\xa5\xa1w\xe7\x1d\xe6NL3\
+\xf1>\x1e\xe3\xc7\xccHd\x9c$\xda\xf2\xe6\xf5\x8a\x0c\
+\x84d\xd3\xca\xf6<E5\x85E\x1eG?\xa9LN\
+\xfb\xee\xd6\x9c\x9b\xeco4$8\xbf\xed\x99\x14\x9e\x13\
+\xa6\xf6\xb7'*\xd2}\xff\xae\xa2*P|~P\xf0\
+\x02\xf0a\xd2\x8a\x09X\xbb\x80\xc7\xd6\x01$p\x9f\x91\
+\xa8\xc8\xa3aQ{\xb8\xac\xec\x0e\xe7\xeb\x0a\xd5\xbe]\
+KQ\x01\x06\xe4G.H0\x19\x8d|\xc3f\x88H\
+S\x82\x99\x02U\x9c\xb1\x85HH\xe9\xec\x01\xb0\xb1\xcf\
+y\x9f\x8d\x82\xdb\x9e;\x14\x5c4v(\xa8\x19\xe3\xd6\
+\x9e\xafH\xeb\xea\xbe\xf1\xbd\xe3\xfb\x8a$\x09s\xd8\xf6\
+;\x0aO\x17\xf8BE\xd9\x97\x87\xc6\xe1\xe5<\xcf\x1d\
+\xedU-U8\xba\x14\x08\xcd\xb6\x8a\xc2\xbcC\x12\x01\
+0\x15\xd3\x8d\x00<\xde\x96\xe7E\x95\xfb\xf3\x8dN\x8a\
+\x14R,\x1a{\x5cG:\xd6\x7f\xb4\x14\x87\xfc~\xff\
+\xee\xdfG\x1e\x00 e\xef\x9a\xa9\x0b\xcc\x80\x03\x881\
+\x10\x18.\xe6\xf66\xc8@\xec\x22\x05\x18\x88\xf5\x89\x04\
+\x0bSf\x1ak\x98\xc9\x9e\xa9\xc8\xf5HW'\xc0\x98\
+\xa5\xb0\x05\xa0\x22\x1f\xa10t>\x84\xb7MP\xcd=\
+f3\x80\x7f\xf2.\xbc\xa5\x98w\x8f\x97\x87\x99\x22\x91\
+\x871\x1d\x00\x86\x87\xcd*1k\xe4sb\x96\x0d3\
+ $SH\x08\x0d\x94\x85\xe4\xe4K\x8ab\x1eM!\
+\x18\x8d\x16k\xe7\xc3\x83\xe1\xa8\xa9#\xf344L \
+y\xff4\xec\xa8\x83\xb8oH\x11\xe8\xa0\x03\xd0`\xf6\
+\x89\x04\x87i\x024\xb8\x5c\x98GG\x9a\xc6\x1af\xd0\
+4J0Q\x06 \xc0\xd3\x82\xfa\xa8\x9fo\x03\x04\xc1\
+X\xa0n\xa2`'\x8f\xa0\xee#O\xa4\x1e\xa1\xa0\x07\
+\xc80s7$F0\x11\xa8\x83\xf9y0\xd50\xe9\
+\xe3}S\x07\x22\x89\x05h\xf0ud\x5cg0\x03\xa8\
+?h\x98r]\xf5\xa7wW\x8c!\xa6\x11\xf1{\x18\
+7\xca\xfebF]\x8cE\xf6>\xcbt\x88Xw\xbe\
+\xce\xa3\x8c\x8c\xdcS\xe6\xb7\x86\xab\xb7<\xb3\x8f\xad\x0a\
+\x11\x95\xc9\x8b:\x91|\xaeJ\xdc\xa1\xc6\xd0\xc1\xa0P\
+\xa4\x10'\x91C\x8bM\xe7\x9e\x7f\xc7\x0d\xa6\xc3\xa8~\
+}MA\x86\xf2\xc1\x03\xdf\xef\xa8R\xd8\xf2>\xf9y\
+\xfc=7\x9c\xef\xe3\xe7\xe1\x9a\xbf\xa6)\xddl\xe0\x14\
+\x9e\xbco\x0e\xe6\xda\x13\xe1\xdc\xde\xdc\xd8\xa7+\xea\xc9\
+\xcb\xd1\xa9\xee\x12Y\x90H\xa8\xe6NL2\xd1\xec\xb5\
+\xd5\xe7^\xc6\xef\x97\xc2\x83\xf9\xf6H\x0d\xf8},\xec\
+\xff\xf8\xc1\x04\xe1\xba\xaf\xd3\x9cE\x018\xf6\x03\xb9\xb5\
+M\xde\xa0\xe2c~G\xc2Na\xc1\x03\xcc\x01\xf8\xb4\
+\x13\xb0\xa7{\x05>\x9d:>\xdf*=\x93\xb6b\xe6\
+\xd7\xbd\xf25\x0b\xb8h\xb9\xbaB\x9c\xdf\xc7\xc2\x07\x10\
+\x80\xe2\x86\xa9\xc53\x1d\x92\x19\x9dm\x10W\x1e0\x1e\
+t\x0ex\xee\x03\xbf\xb7\xff>\xf8\xbcl\x00\x14H$\
+\x9e\xcf\x86iFw\x9d\xd9\x08\x01\x06\xf8\xf9\xfc\x1c>\
+\x17?\x1f\xc0\x81\xaf\xf9\x0f@\x82\xe7\xa4\x0f\xb0 \xad\
+\x00\xc0\x00H\xe0s\xb1\x01\x02\x14\x00\xac\x01D\xb0\xde\
+\xfa\x7f\xbf\xd4+%\x0b!\xf9\xe0\xc0b\xdd\xf1\xef\xf8\
+\x9a\x8d\x1b\xa0\x00i\x0d\x00\xc2}\x8ar0\xe0v\x1d\
+\xc8\xbe\x9f\x9b\x002l\x96\x15T:\x98'\x98e\xf9\
+\x00\x8b\xa9\x05\x1e\xb7\x16\xda\xd0U:\xea(\x9d\xbd\xb8\
+\x9e|~\xdc\xecAFm\xf6\x12\xd4X\xcc\x07\x91\x0e\
+x|]\x00\x09\x14\x9a\xac/:n \xb1hZ\xd5\
+\x17\xbe\xb6P!\xb3\xeb\xf2\xfe\x15\xf5\x8a\x84V\x85\xd7\
+\x99\xe5\x00@s\x1f?\xc7c\xa0\x06\xe7)*\xf38\
+\xaf\xb3\xf6BE\xd5\xe9E\x82\xc2\xfdD\x22\xe51\xa8\
+\x81\xa4\xb3\xde\x19{Y\x98:\xa3<\xa5\xc3\x9dn\x0a\
+\xe8\xdc\x079\xc5\x12\x00\x01.+)\x8a\xa6\x1e-\xf4\
+\xe0\x81\x14\xf7\x97)1\xaf\xf2\x1e\x99a\xea\xdd3N\
+ \xcd\xdch\x97S\x14\xd7\xee\xe6\xb3\x8a\xd2q\x0e\x93\
+\x1cL\x80\x8e\xcbQ\xc6qB\xf5\xb3\xf4\x84\xceS\xbb\
+\x9e\xa2\xeaXz\xbdD\xa1\xc7z\x13\xfct\xbd\x13\xb5\
+OV\x80\x0e\xae\xec\x14P\x9e\xff\x1e\x07\xf5\xe1\x0a\x9b\
+#}\xbd\xa2\xe0\x22\xf1Y/\xdb\x7fv\x05\xe2\xa8J\
+\x80\x90j`\x12\x86D\xed\x04kt\xd9g\x163\xe3\
+\x02\x13C\x03:!q\xb0\xc9]3\x9b\xdd\xeb\xcf\xe8\
+\xa6\x094'\x9b\xe9\x82\xf4\x86y\xdcL\xb30\xc3\x82\
+\xf3\xbcYQa\xd3\xc3O\xa7\xaf\xf3\x7f\xe9\xefwO\
+\xb1[\xe5b\xedy\xde\xd9\x04\xf0m\xd5\xfd\xb7\xe6}\
+\xb0c\x078\xe2\xd6\x1f@\x94\x13b4\xed\xc3\xb5\x14\
+\xe9\xeb\x0d\x9a\xf5\x1bi\xeb\xd7TT\xe6\x80^O\x00\
+\x83\x01,\xed\xac\xa8\xccM\xe9\x90\xc34\x01\x18\xf9\xb3\
+\xa2\xa2\x9e\xdb\xbc\x91\x840\x183\xce7\x9as\x14\x15\
+\xa0\xe1\xbfo\xeeU\x94\xf1\xb2\xd1\x01\xa4 `_'\
+\xf1\xa3\xf3\x8b\xb6\x93\xc4\xce\xf7\xb9\xddIQ\xbc\x08\xda\
+\xe5\x15\xe9u1E\xa5\xa5\xf6\xb4\xa1<\xaf~F\xa1\
+j\xb7\x07+\xaa\x7f7R\x94N0\xdaw\xb4\xed\xe4\
+5\x937*\xaa\xb9\xe3\xben1.\x8fB\x06\xe9\xc1\
+\xb6\x1d5zp\xd1\xe0\x97\x83_V&\x86\xf2\x82\xb8\
+\xbcH\x9ab\x8c\x18f~0\xcf|\xfe\xe1\xfd\xc0\xb9\
+\x8c\x09h\x00u.\x000\x95\x0d`\xd6\xe7v\x14\x98\
+\x00\xe5tf\xdd\xc9\x9f\xac\xa9H\x9f\xff\x08\xf5\xb4\xf3\
+\xcf\xeb:\x93\xee\xe42\xa6:\xcc\xcbV\xcb\x10D\x97\
+o\xce_\x9d\x7f\xe4'\xbd\xe9-1]\x0a\x00\x033\
+:\x03\x0d\xd1\xd1\xe7\xfcGZ\x81)\xae\xf7=\x9e\xf7\
+\xd8\xdf\xe9\xb4Y\xd2A\x811\xf9\xb8\xa2\x00\xd3\x93\xb1\
+\xa2xH\x85y\xde\xb9\x8a2\xf6\xb1=]Q\xfe>\
+\x00{3\x9fb\xae\xbb\x0a\xcd53\xa5}+I\x91\
+8\xc7\xc2\xb3\xe3\xa3\x8a\x8a\x19\xb0\xa6\xa2\x9a\x22CA\
+\xfeh\xca\xbe\x1e\x5cg_I\x00\x00 \x00IDA\
+T5\xf3\xf5'\x95\xcb<\xf9\x02\x9eB\x14\x82h\xa8\
+\x97\xb0\x94\xc3\xf9\x18\xd3\xb3Ry\xdby:\x90\x0f1\
+e\x82\xba\xc0\x80\x5c*B\xbb\xeb\xcb\xef\xe3<X\xce\
+\xf9=\x8c\x00\xce5:\xccH\x00\xc9\x7f` \xd0\xa8\
+<\xad\x1b\x879\xd8\xb8\x93\xbe\xc5s\xcd:\xf5\xf3\x18\
+\x0c\x04\x98p~.\xc2<\xce\xd7\x13@&\xa8\xde\xbe\
+\xefq^\xd0x\x81j\xceu\x9a\xbd\xcb\xe74\xfbD\
+L\xbc0q\xe3\x1cu\x1e\xc3\xfe\xc7s\x1d\xd267\
+\x8c\x00\x8a\x00t\x82\xf2\x8fw\x17\x14x\x1aK\xdcW\
+\x0a_\xea\x09\x00\xbe='_\xd0\x98\xca<^x\xce\
+\xaa\xe3M~\xe5\xfa&$$\x98Xr\x1d\xfb\x12\x08\
+\xf2X\xeaD\x98\xcf\xe4\xb9\xdc'\x18p\xe4-\x98\x11\
+\xdb4\x16\x8f\x8bx?\xe4\xbf<\xd7\xe4\x95f\xda\x04\
+\x05\x9e\xdf\x83\x14\x0ef\x0bR#\xea\x0d\x98\x08\xec?\
+}&\x03.\xfc\xae\xab\xc2;\x00\x06\x0f\xf5\x0b\xd3i\
+\x18Oh\xb3\xcd\xa8+\x00\xb4`\xbczJK\x865\
+.\xf1\xcfy\xfe\x15\xf5WWw\xf5\xa5\x17\x000\xd4\
+\x8d\x98 \x225\xe6ss?\xd8\xaf\xc9Kix\x1b\
+\xd0\x1aMvQ\x14\xcdK\xd6\xfa\xec^u2LI\
+\x0d\xa4l\xf1Lr)\x09\xe8\x9c\x99\x8c].\xe8K\
+\xb9\xf7[\x16\x007\x8c\x02\x86W\x16\x06\x9d}\x0a\x12\
+#\xfa\xf1\xef\xf9@}S?\x16\x10_\xf3\xc1\x98c\
+\xcd\xd8\x0f\x0et\x0a=\x17\x96\x93g\x15\xb9\xf3\xd0u\
+D@\xb2a\x16p\xb0\xa3\x8d\xc24L\x1b\xebV\x85\
+\xd219[QQ\xa7)\xf0y\x00y\xf0f\x8f\xce\
+}\xf7\xc0\xf0\xbe\xded\xc0\x82\xeb\xd9\xef\x08;A\x8c\
+\xc2\x8c\x8e=Z~\x104\x0a|\x90y\x1ep#\xa0\
+1~\x0c\xed\x16\x00\xc7\xe2\x06\x04\xec\xee\x1f\x05)\xf7\
+\x09\xaa=\xef\x1f\x0d\x1ff\x82\x98\xe1Q\xf0\xd2)\xe7\
+\xdf\x83\xd0Q\xa0\xb1\x1e^o\xc4n\x09\x7f\x1e\xbe\x8f\
+B\xa5?\x97\x13\x00\x82?\x7f\xd2\x1b&\x89\x19\xff\xcd\
+\xfd\xbfP\xff\xfb\x1e\x06\xfc\x1e4e\xee4\xbcj\xca\
+B\xef\x01\x7f\x15C\x80?\xef\x9b\x1e\xf2u_\xeb\xc3\
+s\xd2\x9bw\x1a\xc0\x07\xaf\x1c\x08$&P\x8d\x00\x9a\
+\xd8\x18\xf8\xfe\xfe\xef\xe1\xef\xd1\xd4\xf3{z\xde\x19\xf1\
+\x9c\xf1~\xfb&\x81\xdc\xb7\xbe\x07\x02\xc0\x1a\x1a%p\
+\x0e'\xceA\xc1\xe5\x00d\x9a\x05ce\xf0\x00\xa1C\
+\x0c5\x0e\xb7o\x17\xb4A\xc1\xf2}\x9d\xec5\xd9[\
+\xe3x&\xcbv\x94\xcdH\x1c\xa0\x222n\xc7\xeb0\
+\xcc\x06\xd1\x9abr\xc4\x86\xed\xc216|\xb4\xe7v\
+\xa7\x86rIB\x17\x1ay\xe6V3\x9e\x09S'#\
+\xd1\xe1\xf2\x0e\xe3\xe8\xc8\x1c\x058yNQi\xae=\
+]\x04\xad*\x05UP\xf3\xf16\xc1\xbb\x83\xe7\x01\xa0\
+\x8fi\x03x\x1e\xf8\x00\x1d\xccjJ\xfe\xb4\xc1(\x9b\
+\xec\x91\xa80\x17\xde\x9d]:\xb5HI\xd8'r\xa7\
+h\x9b\xe2\x19\x10\xfb$\xee\xbf_\xf1\x18:\xae\x1f\x8c\
+\x09\x9e;\x90{\xdc\xa4\xafPT\x00\xa4\x0f\xa2\xdc\x81\
+\x9fQi\x11A\xc4]0\xc5\x81\xcf\xb8'Lv|\
+\xd06?P\x94N#Z\xfe\xc9;\x14\xf6\x10x\xb0\
+\x92rq~0e\xe6\xafS\x1d\xb5\xf0\x92\xa9<%\
+\x01\xd7\xf80\x91S\x82\xbbs\xa5\x0dU\x9a\xb5\x89\xa9\
+\xd8\x87T\x1d.\xa4-P\x919G\xed\x92\x9e\x19\x03\
+\xcf\x16S::b1\x9f\x9dqD\xab\xfa~\xb3n\
+\x963p\x87\xb6\xda\x0c\x1c\xa4\x0dxN@%\x0f\xb3\
+\xaaCR\xa1+\xc0e\x98\x22\xed\xcf\xc3\x1b\x15\x1e\xcf\
+\xb7U\x05|\xd8S\x03\xaa?&yPg\x03H\xb8\
+\xad+\xbc\xa3\xb3\xbc\x8a\xa2\xd2\xe6C\xf9\xdf\xdd\x0c\x0a\
+<!\xdc\x99nvW\x94u\xc6\xf8\xc4\xe1\xfb\x15\xd5\
+\x5c\xf4\xab\x15\x95\x19\xe8\x1f\x14\xd5\xfe\xc0:\xa6\xe3m\
+\xe0'\xbc\x0c\x0c\xa8`v\xc8\xfb\x0c\xf3>(\xfe$\
+Pxop\xdes\xfeR8?\x1f\x8c\xb0W\x9a\xec\
+\xb2\x8e\x98\xb6\x03u\x9d\x82\xca\xcf\xfbd3E\x95g\
+y\x1c\xd7\xf8\x1cE\xa1\x86\xb7\xf7+*\xf7}M\xd1\
+\x10\x05<#C\xe9\xf5\x9d\x9d\x14\x04 \xac\xfd\x9d\xa2\
+\xd2\xf6\xda\x1c6\x5c\xcc1U\x84i\x08\x13k7\x9b\
+\xa3\xad\xe3\xe7Y\x9e\xe1\x97V\x9du<L\x04\x0c\x1d\
+Q\x80:\x98\x18\x01\x18\x19@m\x8eQ\x94\x82\xaa]\
+_\xa2\xa1\xf4\xe7oWT\x1df\x0a\x9f\x07\x15\x15\xb3\
+\xe8rE\x19#\x18\xf9\x1b\xd4\xe9E&\x0bO4\x1e\
+s\xc7\x14;\x94\xf5A',:\xf2\xb8\xde{J\xcd\
+\xe4\x00EU\x88\xbb\xf0\x8d\xa99t\xe0\xb4\xdb\xcb\xbb\
+\xe5\xd8\x14\xc7\x98i\x92\xf6\x99\xf6'\x8a\xf4}\x1fU\
+T\x8c\x14\xb4\xf1\x9c7P}=\x15&\xbc[\xccd\
+\x88\x8e\x9f\x99K\xd1\x11\xb6\xb6\x1e\xe6\xd8\xf8\xe9\xf1S\
+\xe3\xa7\x8a4)\xe6\xc6\xc3\xa8r!\x12\x1dV\x5c\xfc\
+\xf5>\xa6\x97Nt\xac\x7f3P\xb2\x04e\x8d\x8ai\
+\xe3\xc2`<w\x8a\xd7\x14O\x97\xc9;\x15\x95t\x8c\
+\xfc\xa0x+uy\x1ey,\x12[\x0a\xf2\x9b\x05)\
+V\xf9\x03y\x08\x94x\xf2\x14\xa4uHx\xec\x8a\x1f\
+\x05 f\xdf\xe4\xd10\x85\x91\xbaQP\xf1J\xde\x07\
+C\xd4f\xd0\x83\xefv\x92\x80`h\x99\xe139B\
+Q\xa44!\xfd\xe4\x5c\xe2\x5c\x80Zm\x80q\xb0\xb3\
+\x22\xdd\x9f}\x15\x95\x06\xdf\x1dX\x1a\x18\x00\xfa\xc1\xac\
+5`\xc7s\x1f\x80\x1a\x92\x0c\x00E$\x16s+*\
+\xe6\x83\xf7\xa1\x0c\xd8\xee^<\x04b*\x05\x80\x09\xe7\
+3\xf5\x0bLj\x1a9~\xff\xd41\x91\x17R\xa7\xf0\
+y\xed\xc9\x13\x053\x9e\x054\x86\x00\x04\xfe\xa8\xa8\xf2\
+\x1f$X\xf6\x00\x0bf&\xf9+\xf9,\x8d$\x0aY\
+\xf2O\xf2/\xf2Z\xea\x14\x18\xd3\x96T\x85\xd7\x03\x8d\
+^\xf6}\xd7A\xc1\x14\x22_\xa6>,f\xe5\xdd\xfe\
+M\xdd\x01@\xb1x\xd4W]]\xc6uA\x9aj&\
+n\x00B\xacc\xf2i\x00\x13\xd6?\xd7\x97<\x9c\xf3\
+\x043`\xb5\x95\xfe^1\x10\xa8\x0b\xb8\xbe\xe4\x030\
+\x02\xd8\xbf\x19k}r\xe7\xfd\x10\x0cT\xa44\xde\xef\
+\x06\xf7(\xca\xfb\x0dO\x0c\xaf\x8f\x86\x8d):B\xa2\
+\xc8\x9c\xe5\xce\xd9\xd5^\xe0\xb3Tf\x22P\x89\xd4\xc7\
+8\xa1\xa2\xc6\xeb\xb1\xfeOu!\xea\x02c\x96 f\
+\x97\xffF\xb9G\x5c\x1e\x5c.<\x1d\xfe\x85\xac!\x07\
+\x99\xe1\xc2\x82\xe4\xb2\x91P\xa8q\xe1\xb8a\x5c0.\
+4H\x0f\x1d>Lb\xce6\xa2|\xb1)\xb3 \x7f\
+\x1cp\x17*\x8ay\x08\x9d\xca(x\x8f\xceQ\x90a\
+\x5cY]\xb8\x84\xab&H\xe3\x1d\xdd\x98\xbd|\xb5\xfe\
+\xf3\x8a\xb9\xf4\xdd\x82\xa3\x80p\x82\x13\x94\xf3\xe2%\xf0\
+J7M4\xf1\xe3\xe8\xa8w\xd7\x85\xeb\x01\xb5\x8a\x05\
+\x85\x89\x0d\xd7\x89D{Z\xaf3M\x01\xff\x9a\x1e\xd5\
+\x86?\xe7\xf7\xf1\xef\xfb\x0f\x14\x05\x01\xd2\x07\x00\x8c\xc5\
+_)9\x08w~\xee;\x85e\xcf\xcc\xaa\xcc\xc1\xf0\
+Jj^i\xca\x18\xeb\x84\x8e\xb9\xc7gE\xe2\xd6_\
+'\x14\xd8<\xc0\x1cT<\xb0\x14\xfe}\x0a5\x05\xff\
+\xcb\xfe\xdc\x5c\x87\xb6\xf7\xfb\xfa\x85=\xc0\x93\xc7;\xc5\
+\xc6\xd4[\x97\xa1\xc5Bc\x09\xc5\x0b\x0d\x10\xd4n\x90\
+p\x10A\xdc\xbf\xf9\xf7\xd6\x96\xc7x 4]\x98\x82\
+`\xfe\xc2\xfb`\x9e0f*\xfdy\xf1\x5c?\xee?\
+\x89\xb9\xc7\xd2\xc48\x1cw\x06\xd1\x8e\x87\xf6\x08\xb3\x12\
+\xd6\x09\x9f\x8b\xf1y\x14:\x98\xe3\xb1\x0e\x01$\xd8\xf0\
+\x9e\x98<\x9e\xdd\x8c=\xf6\xa7}@Q4n\x009\
+\xb8\x80O\xe6PTfJ\x1a\x03\xa5\x84{\xe1.\xa1\
+\x0c\xcd\x9c==H\xc4\xda/*\xca\x01G\x22\xd7\xbe\
+C\x91^\xe7S\xa4\xd7\xb7)\xaa\xb1\x88\xb8\xd8\x82\xf0\
+RXP\xb8r\x90\xfa\xfa\x86\x1b?\x1d\xdb\x0b\xba\xfd\
+\xa6\x99(\xd2\xeb\x03\x8aj\xec\x12s\xc8\xad\xddf\xce\
+:\xae\xfcP\x9a\x9b\xa5\x9b75ra\xbf\xa8\xf9e\
+sQ5\xd6L\xe3\xfcN/\x05]\xcc\x1d&\xc1\xb3\
+&\x98\xceC{A\xc7@\x88\xcf\xbb\xa8\xa2 \xed\xed\
+m\x8a\xea:\x00\xf0`\xb2\xe4D*\xc6\xbb\x19\x10i\
+\xbf\xa9(c\xf9b\x5c\x14\x1dG:\x1c\xa6\x22\xe6\xf1\
+_\xef)\x89\x7f\xcc5\xa70zBa\xf7i\x8dA\
+\x9c\x9e\x22\xdd\xaf\xf1w\x15Ug\xf5\x1cE\xe9\xb01\
+\xfe+\xa7\xe1{T\xfb\xd3\xaa\xb9\x04\x0fM)\x14`\
+y\xad\xab\xa3\xdd\xbcUQ\x99\x02\x9e\xa6(\x7f>\xfa\
+\xf0h\xabQJ\xb0\x86\x07+\x8aIks\xb2\x22\x03\
+/\x9d\xe9\x1f\xf7\x03\xe0f\xb6\xae\xc0\x9f\xda\xc4@\x0a\
+\xe3\x9d\x98+\xce\xf3I\x07\x0e7x\x00\x01?\x87\xa1\
+\xe9\xbf/\xfd\xdc\x19UBjI\x0d\x14Y:\x82\xcd\
+Q\x8a\xc2(\x80B\x1en\xf8\xffl\x1el\xd2um\
+~\xacH\x9f\xeb\xbf\x15\xe9\xf5'\x8a\xf4\xe77+\xb2\
+D/\x17&h\xcf\xa1\xaa\x0fnUT\xd3|,E\
+\x18\xce\xa6(n\xfc1f\x0f\xa6\xc3\xc1\x8aJR\x81\
+\xf4\xc2S&(<\x9b\x0d\x15\xe9\xe7,\xa7H\xd7\xff\
+u\x8at\xac]\xa8H_?\xa7H\xaf;)\x8a\x07\
+A\xf3yE\xb9\xfeQ\x10\x90\xa0\xf6\xbd|\x18\xdbF\
+!\x06\xf0\x0e\x10\x8fT\x8b\xfd\xcb\xeb\xb7=MQ\x80\
+x\xc6\xe8\xb5\xb3)\xd2:\xdd]\x91\xbe~V\x91^\
+\xdf\xaaH\xaf\xb7+\x0a\xe5{<S\x91\x8e\xdd\x93\x14\
+\xe9\xeb\xdd\x14\xe9\xeb\x87\x14\xe9\xf5\x18E\xfa\xf3\xad\xc7\
+\xdb\x8c\xb7)\xd2\x88\xa0\x88\x92@\xfe\xbc\xf3@\x09\xaf\
+\x05)\x89O\xad\x0a\x07\xce;\x000\x7f\xae\x90\xc6\xc0\
+\xb0\xc1{\x03 \x09\x93\xcd\x1d\xbb\x02y\xf0e\x8f\x0d\
+5\x13#\x03s2\x9f\xbcXQMI\x80Yh\xe0\
+\x17\xe9\xcap^Ez\x9ds8\xd7p\xae\xe2\xd5\x10\
+\x1d\xde.'(\x80\xa0\xa5F\x8c\xc3\xcd\xe5\xc7\x05\xa5\
+3\x1a\x12\x97\xab\x15\x95W\x80\x80\xe2/\x15\x00*\xdf\
+\xedy*m\xbd\xa7j\xe4\xf3d\xf6\xaa`EZf\
+\x808\xc6\x1c\xa2\xf5\xe7\xfc\xb3y\xedd)E) \
+\xdb'\xbb}k|\xb8\x22\x9b\x16v\x85\x05\x0c%3\
+\xda\xf0\xd0h^\xab\xa8\x98\xa16\xbdmfQXb\
+\x91\xd6\xc9\xe8o)dr\xf9\xf5\x14\xa9\xd0\x1d\xfe1\
+Ez>\x87\x87(\xca\xf8\xc9\xe6\xeet.\x08 [\
+\xbfc\xea\xe0\xf9\xf1\x0aO\xb0\x99\xf9\xfeu\x1e\x05\x1e\
+\xbf\x1c.\xf8\x02L\x8e\xad\xe6\xc9\x7f\xd9&\xddh\x91\
+\xdd)mVST\x9e\x08\x00\xe0x\xc7\x5c\xdbI\xb7\
+\xf0\x10\xc2\xf45\xa6k\xd8L\x17`:\xed^\x9d\x14\
+\xeb\xdf\xfe9\x0b\x1a\x08\x94G\x8a$G\x7fR\x94\xfd\
+mx\xd9\xf0\xd2\xe1\xa5\xd5y\xf9\x95\xe6\xf0\xecq2\
+R\x14\x13\xd9\xc1\x7fu\xe7\xe1\xe0z3\xc1\x9c\x97 \
+\xe5\x0a\x93L\x9b\x9f\xc6\xf3\xcf>m\x5c$$,6\
+\xed\x8b\xeb\x01\xa3\x8d\xe9'\xce\xcbhHF\x9e\xc28\
+b\xbe\x0fs\xc5\x8b\x14\xe9\xeb\x7f*\x8a9g\x8ck\
+\xa6a\x81\x04\x80i\x17\xaeS\x82\x92\x0f\x10\xee\xf5C\
+~\x15\xa6\xaa6_\xe69\x8b\x82\x97\x02\xb6?\x86\x99\
+<\xbf\xdf\xe9\xa7N\xe1\xfb\xfcux\x94x\xaa\x09\xfb\
+{\xec\xbb}I7\x0c\xed\xbew\x1a_\xf3Z\xc6\x95\
+w\xc0A\xaf\x1e\xa5\xe1\xf2*):\xfb:\xdet\xd4\
++|\x9e\xd2\x10}\xa5\xc9a\x1f@\xe87\xbc{\xa6\
+\x87\x01@\xf4?\x1f\x92$\xc6t\xca\xec\xef\xac\x8a\x09\
+I\x07\xdf\xf7-\x98\xb5\x06j\x028\x83\x89\x85\xa9(\
+\x8cB\xaf\xdf\xd8\xa7\xdd8\x1b\xf1\xff\x04r\xa2\x02\xe5\
+Aw\xb8~]4>\xb1\xc0@4ef\xb3M\xd5\
+\x91\xe2\x83L\x8c\xc1Q`\xa9l\xc0\x1d\xfe\x89\xffG\
+\xa7\x93'\x87\x0b\xc3\x0d`\xa1A\xf5\xa6\xe0z\xaeG\
+\xcd\xe6\xe7A\xb1@\xb3\x01E\x88Nu<\xa1~5\
+\xb2\x9a\xca\xf5\xf3&\xe7\x15\x8dc0\x01\xf8|hK\
+\xe8\x5c\xda\xc59\x0a:(!,t\x12\x07\x0a\xd6\xfe\
+X\x86\x1e\xb2\xc4\x18\x8eX\x98\x00\x03\x14\xb6,\xa89\
+z\x0f\x16\x05r\x9fj\x0e@\xd1\xf7\x1c\xb0\xebf$\
+\x90\xdc\xb1\xc6\xae\xd3\x1e\xc7\xc5<\xe1\x00h\xfa\x8c\x8d\
+\xf9\x14\xd5u\xa2\xe0G\xba\xc0\x03\xdd\xd7\xba\xfbA\x1e\
+,\xa6\xa8\xae+?\x87\xeb\xc6\x83\xc4\xef\x85\x12\xdf\xff\
+\x8f\xebM!\xcf\xf5}\xc8?\xc7\xd7\x991H\xd1\xe1\
+\xa7\xe0\xef\xbf\xf2s(x)\xe4y\xedo|\x14\xfe\
+\xfc\x07\xf2\xc7\xbf\xe7\xfd\xc0\x8c`\x03\xe0\xcf\xfb@\x15\
+\xeb\x9c\xc4\x8c\xeb\xef\xe7$\xa8\xb1\xee\xdc\xa2\x09\x8cy\
+\xd9P\xd5\xbf\xae\xa8\xd6+\x94|k\xe0e%&3\
+1\x10\xc4\x90\x8e y\xf1\x01\x12\x9dE\xccix\x7f\
+|>\x10a\xa8Xt\x18`\xc4\xd8\xcc.\xb4\xe9\x00\
+\x00 \xbdL\xf5\xb062\xae\x0f\xbf\x0f\xb3#:!\
+.\xb0\xdb\xb7(*\xea;sr\x8fV\x94\x03/\xa6\
+)\xb0\xae\xb8\x1e{(\xd2\xcf\x19+\xca\xf8\xa1(\xc8\
+1\x8f\xe2\xfd\xf8\xfes\xdd\xe3y\xe4\x00\x01\xe1e\x7f\
+\xe2\xf9\xeb\x9b\x8cb.\xe4\x0eDx\x06\xb8Pf\x1c\
+\x5ct\xb4\x00,\x0d\x10\x06\xd5\x11\x97\xe0_\x19\x10\xea\
+\xbb\xc7\x02\xec<\xd1\xbd\xef\xb8\xfe\x00XP\xea='\
+=\x12 \xcc\xec\xd6P\x14\xa9\x05\xe6\x7f\xd9e}\xbf\
+j\xdf\xc2E\xda\x07S\xfb\xbc\xa2PT#\xf1\xa3\x83\
+\xcbA\xb9\x8a\xcd\x1d\xddY\x9b\x5c\xa2\xa8:\xe9>\x97\
+&\xbb*\xd2\xcf}T\x91\xbe^AQ:\xa3a\xd6\
+\xf3nE\xd5\x09!\xb1\xf9~\xb6K\x0c\xea\xf1\xe4\xab\
+\x0a\x17\xba\xd3m\x0a\xf7x\x95\x90\xba#\x99%\x09\xa7\
+V\xd3\x0c( \xfc\x1c\x85\xc9\x90\xa9\x99\xcd{\x14Y\
+k\xbe}\x93\x12\xbef\x05E\xfa\xbe'\x15\xa5\x83\x14\
+\x09\xbc\xf7?\xf6[$\x1e\xcd\xc6\x1d\xb0\x83\x09\xa5\xfa\
+\xf4\xea\xd4\xe3>\xff*)\x8a\xb5\xad!Y\xe0~\xcd\
+\xdf\xed\xcf\xd9\x94q\x9a\x13\xe9\xc6\x85\xf3\x7fW\xd4}\
+:\xfc6\x05\xec\x03\x11\xcd\xd5\x8a\xf4\xfab\xf3R\xf3\
+Re\xb2i\xca|\x98&2\x1e\xf0\xc3\xdd\xb8?y\
+\xff\xcb\xfd?\xc62\xda\xdc1$\x1a\x97*\xd2\xf7m\
+\xa1H\x09\xfa\xef\x14\xe9>\x7fUQ4\xf2\x9c\x9bx\
+\x9d\x04\x83\xcd\xe6T|\xde\x98.p\x85\xa2\x024\xd8\
+\xd70\x91\x9bMQ4\x91\x937+*\x0d.\xf3\xa1\
+\x01\x96\x916\x92\x8f\xf4)\xaftfY\x0f0\xcf\xfa\
+\xdaO(\xdf\x06\xb6\xc2\xa5\xdd\xcf\x7f\xc6\xfb\x9a2&\
+0\xc6\xf3\x1d\xaf(_\x8fWP\xa4\xaf\x97T\xa4\xd7\
+\xed\x14\xe9\xf5\xaa\xf6jyy\xb4\xfb\xb7\x07\xb4\x07\x14\
+\xa0!\x98\x09$f\x8c%=\xa4\x9bO>\xd9\xc2n\
+\xf3\xf6B\xc9\x9a\xfc\xd7V\x85\xa5\x0a\xa6T\xd0\xb6\x0b\
+\xa5X\xa0\xf2\x98\xc0\x8c\xd1\xcf5\xd4\xffXG\x98.\
+\xfby\x9f\xbcm\xb2\xf6d\xed\xec%\xd31z\xe80\
+{\xda\xc0\xc0\xf9I\x00\xc5tB\xd9\xb7\xc8W\xe6\xb7\
+w\x854\xf6'\xd9\xb3\xe3\xc7\xbe\xee\xa3\x8a9f\xa0\
+0L\x8d\xf5\xd3\x17\xac\x12g3\x05\xa2#j\x13X\
+\xce\xef\xf0\xecp\xe1\xde\xae\x9bb\x9d\xaa\xc0\x7fC\x8a\
+\xc5*`\xf2|E\xfa\xbe\xc3\x14\xd6\xe6\xefY\x18H\
+\xecs\xed\xb2\x8a\x0a`\xfd]7\xcd \xa4\x09t\x02\
+\xdd\xb9\x0d)\x06\xd4f\xce]\x9f\x0bH~\xf0\x8e\x19\
+<\xa5(\xfb\xce+$M\xb7Wn\xf84\xfc\xec\xf9\
+\x93;\xab\x8bU\x00\xac\x81\xf3\x18kff\xd6\xe0\xa6\
+t\xbfo\xca\xe7^7\xdd\x8b|o\xef\xb4\x0f\xefm\
+\xe9\xe4\xb3\xb9\x91\xb3tn\xe4P\x18\xfa|\xe7<\x8e\
+\x0e\xed\xd3q\x8etS\x09`>\x95\x8e~\xf6$\x0b\
+\xc0\x88s\x87\xbf\xc7\xdc\x94\x0e\xf7\x9f\x067g \xf4\
+\xc9\xb4/<\x99\xff\xdd\xaf\xf5\xef2\xa3d\xd9\xcc\x90\
+\xdaY\x0c)\x00\xe1(\xcc\xc8\x9f\x91\x0c:\xff\x99z\
+\x9f%\x01gxJAO\xb2\x17@\x0d\x0d\x1e\x9fK\
+\xb1?3\xdd\xc8\xe3\x1ec\x1c\x22\x8d\x07\xdc\xfc\xa1\xfa\
+\xd3Pd,#cM1\xf1\x83\xe9\x88)\x9f\x01\xbd\
+\xe8\xb8\xe39\xc0yj\xa6b\x14\xd6\x9c\x83\xf6\xba\x09\
+\xc60\x926\x0ak\xf24\xea*\x1a1=\xd3\xbf\x90\
+\xe4\xd2\xf88FQM\xb3\xa0\xf1\xc4~H\x83\xcc\x12\
+M$\xa0a\xe6GA\x0b h\x86WH\x01\x183\
+l@1\x98b\xfdB\x9d|\xbb7v0\x98Y4\
+\xce\xfaLe\xf2(\x1a\x9b\xd4i0\x91x\xbf\xe4W\
+}\xa9.\x124\xde\x1f\xcfm_\x82\x8b\xf7\x07\x92\x0a\
+\xbc+\xf0\xf4B\xda\xb1\x8f\xa22\x8b\xfe\x93\xa2z.\
+\xa9C\x00Hx\xdf\xd4\x9bH\xb5\x90\xe8p]\x9c\xa7\
+\x8e(\xb4\xc2T\x82\x8e'T\x12(a\xff\x93\xe2\xe1\
+J\xab \xab\x81#\xab_L\x82\xdd\x9f\xd3\xc9<k\
+\x16\x12\x07\xa4\x96\xc1\x0b\xd5\x85\xbdHQ\xb9\x99S\x90\
+\xa1\x89\x01\x91\xe2\x02R@R(P`\xe2\x05@!\
+FaJ\x01\xc7\x05\xeb%\xa2q`\xf1\x00\x92\x00P\
+\xa0\x82\xf0\x83\x10a2\x08\xa5\x82\x85\xcdI[L\xe9\
+^9\xb7\x92\xeb\x81\xa6\x85qr\x98\xac\xe1\xda\xdb\xbf\
+\x9e}\xf3\xbc\x17\x9d\xc8\xb71v\xb0{\xbf\xf3\xf4\xc6\
+o\xc0h`\x1c\x19^\x08\xb8\x952\xdf~\x9e\x9e\xeb\
+\xe8\xffO\x93\xdeG\xe4\xfa\x88[o\x8cE\xfc=\xf7\
+\x89\x8d\x86\xc4\x8aW\xbc\x1f\xe8\xc4\xf1\xfeM\xfd\x09\xb3\
+D\xae\x0b\xee\xa0P\x0aI\xf8\xf8=\x14\xf4\x00M}\
+\x0a>\xeb\xdd\xafh\xf1\xc2#\x82\xf5\x83\x17\xc1\xcb\x1d\
+\x10\x96\xca\xc4N;\x08\x00\xc3F\xc3\xf5a\x9d\xf7\x0b\
+\xc0\xbei\x09\x054\xeb\x89\x0e\x12c\x9bV\x8a\xf1\x8f\
+\x1d@\xc2u\xe7A\xe6\xfe\xf0\xf3y\xce\xb8>$\xaa\
+P\xb6\x99\x97\x8d\x89\x9a)\x8b\x01\x18\xe0f\x8f\xbb\xb5\
+\xdd\x8fA\xf8I\x98\xa2\x80\x07\xf8\xe2\xf7\xf0>`r\
+\xd8]7\xb4\x94\x8c7\xc3\x0b\x04\xe4\xd5\x9d\xa1\xb8^\
+v\xe7\xa5\x80\x08\xc9\x0cH6\xe6&h\x09I(\xd9\
+H=6,\x5c\xa4\x99_\xfd\xedN\x93\x18\x07\x02\x09\
+&\x055\xae\xdf\x96\x00\xc4\xcfEk\xbf\x82\x19+\xfc\
+Gb\x0a\x95\x0df\xc4\xd3)\x11{\xba\x98\xfcEG\
+\x94\xc2\x89\xce\x01\x07\x1f\x0c\xa2\x95\x14\x85\xc2\x05\x93\x01\
+$\x17\xca_\xb3\x8c\xa2\x00HA-\x7f\xca\x1d9:\
+m\xa2\x96\x9fbJ\xe4\xda\x99\xc2\xfbr\xa6\xf0\x92\xa8\
+\xdb\xfc\x0c\x86\x12\x9d\xd4`v\xb8c\xd3<\xab\xa8L\
+\x15\xd1\x00\xb6y\x07\xea\xd6\xf5\xbcUAC\xc7\xda\x9a\
+\xe5\xe6\x19E\x01X\x9a\x19\xdd8\xb6\xf0l\x80BJ\
+af`\xb5\xddZQL\x07#\xe1b\xcc\x92\x99\x05\
+\xcd'\x14\x95;\xfe\xba\x8a\xf4\xf5\xa9\x8aj\x0a\x82\x99\
+\x1f\xd9\x1c.\x1d\xa0\xed\xdd)R\x816<5\x85:\
+l?S8\xc1;\xb7\xeap\xaa0\xbe\xc7\xcf\xcf\x19\
+\xee\x84\xee^$r\xc3S\x86?\x18\xfe '\xe2\xf9\
+\xf72&\x90Nu\x98\xfc\xd9sA\xfdtu\xd4\x87\
+\x17)\xd2\xeb\xdc\x8a\xf4\xe7\xb7*\xf2\xfd\xc9\xfbu6\
+7\xd3\xfe\xb7\xa7\xa2<g\x01|y\x1f\xc0C!\xa6\
+Z<\x97\xe2\xdff\xc4<m\xe0d\xc5\xca\x0cHO\
+\xd7\xc1\xe5\xf9\xc7$4\x00\x1bwF\x03\xd0`\xec\x9f\
+\x13\x17\x80\xa8\xc1m\x8aj\xae\xfd\x0f:\xb7\xfe\xe8\xe4\
+\xbf\xa8(\xe6xQ(\x93p\xdb\xf4\x0a \x87\xb1s\
+\xd1\xe98\xb8+T\xa3\xf3\x87\x19\xa2\xd7'\xa6\xa0\xc3\
+\x7f)\xd2\xd7w)\xaau\x8a\xa9\x15f~v_\x86\
+\xf1\x13\x1d-^9\xaf8'\xf1*\x02\x08d\x9f'\
+!F2\x80V\x99\xf3\x13)\x8c\x195a\x1e\xe8\xe7\
+\x19\xa9J;\xab\x22\xbd.\xac(\x9e\x00\xb8\xca3\xee\
+n\xbc\xab\xa2P\xd2S\xf9\xbfT\xbbT\x1e\xb7\x96\xc7\
+T\xa6U\x9e\x19\x06\xe3\x03\x14\xe9\xeb\x0f)J\xde\x13\
+\x1e\x03\xd7*r\xbe\xd1\xedwPt\xe9hI\x18\xb0\
+\x87\xcf\xd5\xa7\xede\xb2Z\x99v\xd4|OQ%\xc0\
+\x9cg\x9cK4.\xdc\xe9\x94u\x9f\xcc\xfb\x06\xbf\xe8\
+\x98\x1bLK\x08\x86\xd4\x99]\xa7\xbe\xbd\xad\xddPS\
+F\x00\xfa\xda\xf5\x15\xe9\xf3\x5c\xaaH\xafk)\xd2\x9f\
+\xff\xa0=\xb9=%S\xa6o\xcf\x94i\x0a[\xc6\xff\
+Q0j\xaa\x81\xb4\xd2\xbb)\xfc~\xb6/\xa6\xd0\x98\
+\xac\xd1 \x81a\x17s\xdcM\xc9\x0e\x89'c\xea(\
+\xb0\x0c\xd0\xb2\xcf\x85\xf7\x83\xdd\xf3\xdb/+*\x06\x9a\
+\x81\xf7pk\xb79\x1b\x00{h\xbe\x05\x0c\xbdT\xc6\
+\x10\x06\x93\xc0\xeb0\xde\x8f\xf3\xde0\x05\xc5\x9c\x94\xb1\
+\xda. \x01t'K*lZw\x9eM\x06/(\
+\xef\xbb=ZQ\x0a#\xcc\xf2B2\xa7\xa7\xe9\xc0\xe2\
+\x9d\x11\xf9\x80\x01S\x0a\xd3(\xa8\xb8^\xe4!4\xe6\
+\x1e\x98\xdc\xaf\xfd\xa9Y@Q\xed_:\xcf\x17\xa8\x9e\
+C\x80N\x9b\xd6\xa5ll\x8d\x9c\x9f\x7f0\x0fj\xee\
+\x98d\x1f\xac\xdc\xec/O\xe5\xd1\xe59\xffyL\xf9\
+O\x8c\xef\xe5\x9c\x85IF'\x9b|J\xd9\xe6[\xf2\
+s\xdf\xe5y\xbd\xc21\x00\x22\xbc,\x8e\xe9<Y\x00\
+\xa6\xa3N\xb9,G1_dL R\x1c\x1a\x9b0\
+\x01\xc9\xff\xf8\xbcP\xd9\xcd\xd0\x9al\xa1(\x92.\xa4\
+r\x91\xcf\x98\x99@>\xc0\xd4\x89\xfe\x18\xee`\x0c\xf3\
+\x9c\x92W\xf2\xbe\xa8\x83\x00\x08\xc8G\xc8\xd7i\xe4x\
+\xff\x05\x18\x8b\xbc\x17S:3\x14BjC\xbd\xc5\xcf\
+\xe3\xdc\xa6\xc1D=\x87\xe4\x80q\xa4\xec\xa7\x00\x0aH\
+t\x00f\xa9\xeb\x00(\xc8\xb7_\xed1\xd6\xad\xbb\xfe\
+ko\x9cd|\x7f\xbf\xb1\x8c\x07\x19\x0d\x1b$\x07H\
+\xc6h\xf8 i\xe8\x8d/\x8dF\x04L^\xea\x10\x98\
+\xc5\xd4\x07\xd4i\xe4\xcb|\x1e\xce\x17\xea\xa2\xbey9\
+\x8db\xbc%8\x7f\xa8+{\x12\x84WMa\xb1\x14\
+j\x94\xf1\xc6{*\xe4\x80q)P\xf4g\xcb\x03@\
+\xca\x05WY7\xaf\x1f\x90Y+\x13\x0f\xdc\xcd\xf9@\
+\xbc\x01.\x10\x1b\x03Z \x16\x1c\x9e\x02|@\xa8\xcb\
+\x14h\x14@\x5c\x10\x0a>\xcc\x18\x5c\xe8\xd1\xb1\x8a\xef\
+gas\xa1\xfa\xd3\x02x\x9f\x0b\xf8\x95\x7f\xc7\xfbd\
+\xe1R8\xbas\x16\xf3\xd6\xd1\xd4\xf1\xef\xa0\xf0\xffo\
+\x85oo\xbe=T\x9f@\xa8mr\x12.\xfc\xa6`\
+F\xc2\xd1_\xd8<\xd0K\xf9\xf3<o@\x80\xef+\
+\x12\x81W\x9a\xf1\xf5\xe7q\xce\xe5B\xbf\xdfa\x87\xe2\
+\xce\x03\xc1\x03\xcd\xc1\xcfB\xe2s\xca-\x7f\x9c\x0b\xd2\
+W\x8c}{\xd5+\x05\xeb\xfff\x92\x07\xf0\xd03\xdf\
+\x88\x02\xado\xf6\xe8\x84#\x18\x09l\xa4\xfc\xdcA\x8f\
+1P$\x04e<e\xcd\xa0\xe09\xe0\xcf\xeb1C\
+\xd5\xbc\xdbW\xbdr}\x01\x1ex\xa0y\x9f\xdex#\
+\x01FK\xccx?\x12zL\x900E\xc1\xc4\xc6\xd4\
+\xca\x98B\xe1\x02\x0c\xednP\xcc,\xa5\xe0\xe0\x8f\xe7\
+\x8cqoh\xeb\x9c #q\x81z\x1f\xd2\x00\xd6\x0f\
+\x1dF(\x96~\xeeH\xc0AfS\x82\x97\xe2\xff\xb2\
+\xc1a\xba\xc9\xf8BL\xbb\xbc\xa13\xb7;\x90h\x10\
+^\x0a\x13\x96\x07\xfb\x02\x0c\x92E=\x8em\xd7\xa9\xcf\
+fD\xde\x9d\x90\xe8\xa4c\xc2F\xe7\xc1\x1d\xff@\xf0\
+q_\xe7\xe0!a\xa7\xe0\x07\x80\xf2\xc1\xcb\xf3\x18\x05\
+:\x94+\x5c\x8f\x0d0\xc4\xbe\xa2\xb4\xf4/\x95\x87\x01\
+\x9d\x00\xf6\x03\xae\x0b@\x08&f\x5c7\x0e\xea\x13m\
+\x1a\x87\xc9\xe2\xf1\x8a\xe2\x0e\x1e\xeb\x02\x06\xd1\x0cK}\
+v\x9c\xec0\xd9!\x17z\xdd\xd4\x00\xa4Lh\xc6y\
+\xbdsp\xc7\xe0\xce*\x11\xb6\xe6PS\xeb5\xb7\xbe\
+\xf9\x88\xa2\x9a\x96@\x22\xea\x04~p\xa4\xa2:\xb8t\
+\xb5\xb7\xf6\xe7\xbd\xab\xd2(;\x01\x85z\xca\xfaBK\
+\xde\xae\xac\xa8L\xd6\xe8\x9c\xa9\xd3\xf6\x06w\xda\xbfP\
+\x01\xd3\x96\x9e5#E5n\xed!E\x01\x1a\xc2$\
+\x0d\xad.\xd2\x16?\x7fy\xea\x83\x18\x0f'+\x0c\xe8\
+\xac\xe3D\xe5f\x1f\xdc\x8f\x1b\x99\x97\xb9\xdew\x14\xe9\
+\xf5\x06E)\x80\xc3S\xe2\x976U\xbb^Qy<\
+`\xb2\xe6\x84\x1f\x13\xbc\xe1\xeb\x14\xe9\xeb?476\
+7\x16O\x8a\xe6\x5cEqm\x97\x85\x95L\xac\xc2C\
+\x02\xd3C{h\x84y/\xfb\x0fc[?\xaf(\x1d\
+\xa9\x0c\xc8\xccR\x0a!\x18:\xcd%\x8a\xf4\xf5\x11\x9d\
+\xf4\xad9\xba\xf9V\xf3\xad2\x15\x03\xad>\xee\xee\xec\
+W\x83\xeb\xcc\x98s\x823\x98\xc3\x1d]\x9f\x8fa\x1e\
+\x08\x05\xd1\x9a\xc40\xd9s\xc2\xcaz\x1c\xbe]Q:\
+RAa\xc5\xb4\x8d)\x04W(\xaa)\x04\xfb)\x0a\
+\xe5\xb7]@Q\x8dA\x82\x09\xd7;G\x19\x7f\x17\xfb\
+8\x05\xac5\xc7\xb1\xafPhp\x8e\xd1x\xe0\xb9\xa4\
+\xa0\xa5\x13\xc9\x18O\x98]\x8c3\xb5\xd92\x14\xcf(\
+\x08\xed\x8a\xdd\xde\xa0(^\x19!aA\xba2n\xd3\
+\x7fY\x9asA.\xe0^T\xa4\xef\xbbE\x91\xbe\xfe\
+\x9c\xa2\xca{\xf7l\xf7h\xf7\xc8\x1d\xe9Nk\xeeq\
+\x89\xc1\x84@R\xe6s%\xc6\x1a\x93pS\x00\x88\xf2\
+|{%\xe5\x80\xd9GAC\x1e\xc4\xbey\x8d5\xc4\
+vI\x9f\xbcK\x91\x0b\xed\x9cH\xe3\xf9\x12\x05\xe8\x9b\
+\x15\xe9s\xac\xab(\x80\xdf\xf8\xb2\x0e\x00hgmg\
+iE\x91\x1di\xa0f\x05$\x08\xa0\xfe\x8f\xcf\xe9\xb9\
+m\xce\x96\xd6\xf1d\xf1\x14K\xf8\x5c\xfc\x89=\x91\xd6\
+\xa8\xa4t\xe41\x9c\xd3*\xb3v\xb1\xe4\xeb\xe6RX\
+\x05\xa3M0\xd2\xef\xbd\x1ew\xae\x0a\x00\xf6s\xc6\xe8\
+\xf1|\xcfTT\x14mL\xfa\x98z\xc0t\x80}'\
+\xfb\xc8|.$k\xea\xec^]\xcc\x0f\xe9(\xc7\xd8\
+J\x8f\xcb\x84\xf1\x16\xe7\x1d\x0c^{3\xc1(\x09\xa0\
+\xc2R\x90\xf6>EJs\x9eO\xf1B1\x01D\x92\
+\x15\xcf\x01\xe7\x9e=o\x06\xb7+*f\xa7\xf34\xce\
+\xef\xa0\xe8[\xda\xc3\xfb\x0f\xa9\xad:\xb5W\xb9\xd1\xb5\
+A\xb5\xde0\xa9\xc4\xbd\x1c-\xbc\xc7\x7f\xc6\xfd\xb9\xb4\
+\xf3\xa8\x18\xbcG6~\x9en\xb0z\x91\x02\x06\xf0\x89\
+\xc6\x1ei!\xf9+\x0d\x1e\xce\x93\x8b\xa6~\x95\xa7\x17\
+`\xa6\x88\x19.^g|?\x8d\x12\x98\x8c\xf6J\x88\
+q\xa7\xd4#P\xf6\xc9\x8b1\xd7\xf3\xf3\x1e&\xd5L\
+U\xc2\xdb\x86|\x17i\x00u\xd0A9J\xe7\x9b\x02\
+\x92\xce\xb9=$\xa2Q\xc1x?\xcc\xab9\x8f\xff\xe4\
+\xc2\x94\x8e\xb2\x99*Q\xdf\xd0@\xa1\xa1C\x83\x86\xb1\
+\x89x'\xc1Ht\xa3\x12\xc0#$\x7f0\x0d\x5c\x80\
+\xc6\xb4\x03\x80\x06\x1a\xbd0\xa6iH\xc1\x90\xe2\xf7\xc0\
+l\xc0\xc4\xd9\xdav\xce\xfb\xa8\xfb\xc8\xdb\x904Q\x80\
+\xc34\xa0\x80\xa7\xc1\x87T\xce\x8d\xe3\xd8\xaf\x91\xe0\xe2\
+]`iE\x8c\x85\xe4:Q\xc7\xf2|P\x98\xf7\xa7\
+U\xb0~y\xff\x00\x00\xbc_\xa4\x22\xb7\xd8\xc5\x9f\xef\
+\xe3\xf7p^0\xee\xcf\xa6\xc9\xd1\x08\x85\x81\xca\xf5\x07\
+H\xe1\xfd\xf1{\xa8_\xa8\xb38\x10\xc8\x0flR=\
+\xcai\xff\x95Frf\xb8@}\xc9\x09\xeab^\x90\
+\xad\x0b\xe8%\xfc\x03\xdf\xe4\x02rZ\xd5\x91\x060\xa0\
+\x13\xa62dE_\xa8E\xaa\x7f\xafc\xa2B\x94^\
+U@C\xdd\xe4\x8d\xf6\x0bE\x0ai]\xa6\x7fV\x0f\
+\x0c\x086\x1b\x06\x85\x10\xa6|\x1c\xe0t\x06p\xe9F\
+\x83\x8e\xf9 \xbf\x07*\x96\xcd\xffb#\xc1\xb4\xe3z\
+E\xfa\xf6O(\xaaN \x8c\x81\xfe\xd87\x0aS\x0a\
+L:\x05l\x080\x01@\xbe@\x90\x18\xdb\xf7\x063\
+\x1e\xe8H\xa3q\xa7@\xe5 \x02\xf0\xe8S\xe9)\xe8\
+JaL\x01\xfcJ\x80`\xd8\xd3\xdc\xf7\xdd\xfd\xfb\x1e\
+\x01|=\xf1\xff\xbd\xf4J\xa0#(\xc7\xff\xf6\x83\xd8\
+\xa7\xeas\xdf\xe8\xb0\xf4M\xe8\xfa\x8c\x03\x0aZ\xa6*\
+\xc0\xdc\xc0$\xcd\xd7+$)}m\x12\x89 \x80\x07\
+\x05\xeb\xff\xe6\x05\xc0\xfb\xe6\xc1\x84\xd9\xf2\xb0\xa9A}\
+)\x0b\xdaI\xae7\x05-@\x06.\xad\xac\x13^Y\
+\x97$V\x98\x15Aa\xc7\x9d\x16\xc0`\x13E9(\
+B\x9bf\xeaU\x00\x0cvY\x0d\xa6\x0a\x897\x7fO\
+\xe1\x0a\xf5\xfa\xef\x8aj\xbc\x1c\xda#\xee3c\x90\xdc\
+\x19\xa0s\x18\xee\xc6\x1c\xec\xa6\xf8\x06\xe0\xc5|`\xcc\
+\x92\x9chJx\x93\xa576\xad\x8b\x82\xcd\x85.\x1b\
+;\xe6xy.\xfa\xe9\xb9\xa3\xb6\xbf:j\xe1\xf2~\
+I\x8eB\x91wb\x0aU/\x0a~\x12T#\xcf\x01\
+\x0c\xf8z\x90\xe00\x16\x0f\xc47\xc6\x839Q\xa1\x13\
+\x1a\xeb\x08\xaa\xbe\xcdp\x98\x86\x10\xe3s\x000Xg\
+<\x1f\xa6\xa2\xc6s\x8b\x94\xc2\x09W\xb8R\x7f\xcbR\
+\x0fk\xc91\x15\x0b\x00\x06M\x1d\xf7\x8f\xb1:\xd6\xdc\
+O\xa6{\xfe\xbc\xb5\xa3\xcdr\xcd\xf2\xcd\xf2\x15\xc3\x80\
+\xce\xce\xb1S\xc7i\xfaK*#>\xdb~\xb6B\xb4\
+]HA\xd9\x0e\xef\x00<\x0d\x5c\x085\x8b*|\xb0\
+\xdf]\xf6\xd90M\x84\xd2o\x0a3Z\xdd`f\xf0\
+\xbc\x02\x80\x8c:jo\x86\x8d\xb6\xa9\xcc\xc9\xa0\x1eb\
+\x12\x05u\x10\xd3Ak\x17\xa3\x10w\x82\x07\xc3\xa6\xb9\
+HQ\xa6\x11\x0c\xcfR\x14\x0d\x7f\x86U\x97r\x22\xbb\
+F\xa1\x02C\xf5\x8fm\xd4\xe3\xe8R\xe1|\x84\xcc\xd2\
+\xb2\xb2\xfa\xbcj\xbf\xf0\x9c\xe6\xa0\xca\xe3\xe9\x00\xee\xf8\
+\x91N\xf2\x11\xf3\xd3\x0d\x90\xc48\xc0\x9b\x14\xe9\xcfw\
+S\x94\xf5\x84\x17\x04\x8c4$,\xcd\xf9\x8a\x8a\x0a\xbf\
+D\x8a%\xed\xbe\xff\xbbb\x22\xc8~\x15\x9d\xfek\x9a\
+k\x9bk\x8b\xe4ax\xbb\x22\xfd\xf9\xa7\x15\xd5\xf8=\
+K\x13B\x0a\x81vw\xe2\xfd\xc2\x92\x9d\xd8\xdf\xdd\xc9\
+\x07(BB0<SQ\xb4\xfeQ\xe8\xa0%6\xf0\
+\xd5\x1e\xa8(\x09b\x14ZL\xe3\x01H\xb3\x19]t\
+D\xd0\x88\x7f&G9\x0fh\x180w\x1d \x9ds\
+\x80\xc4\x91\xfc\x03\xa0\x15f\x22T_\xa8\xa7^\xd70\
+\x18\xc2\xcb\x85\xce\x15\xe7\x02\x89\xb1\x01D\xbc\x80\xe8,\
+\xb5_R\xb8p]\xbc\xf2\xb8\xb0G\x80\xfa\xfd\xb9\xe3\
+\x7fe{U{U\x99\xaa\xd1\xbe\xa4(\xda\xf7\xf6$\
+Ef\x0ed\xe0\xad]C\x91^wU\x94\xc4\x97\xe7\
+\xae\xbd<\xc5e6)\xfb`EI\xc6\x84L\x1d\xd3\
+\xeb\x0b\xb57\x15\xe0\xa3\x5c\x80\xfb\xfd\xb7?U\xa44\
+l\x7fE\xfa\xfaiE\x96.\x9c\xd0\xcad\xefS6\
+\xff3\xf0\xd0~P\x91\xbe\x7fe\x85\xe7\xd3\xa7\x04\xbc\
+\xddDQM=\xb8Y\x91\xfe\xdd<\x1d\x05:\xceM\
+\x00\x98A\xce`b:U\xfe<\xf7V\x9dg\xad\xbe\
+\x87-q\xfa\x98\x19V\xdf\xec\xf2SI>\xb4kg\
+WoL\xb0u\xaa\xff\xb3H\x04c]\x9a\xaa\xdd\xbe\
+WQ\x18\x1d\x01\x1c\xf9\xfe\x07C\x0aJ\xb6\x99e0\
+:(t\x03\x00\xc2[`\xc7\xf4\xfev\xac\x1a\x19\xec\
+\xef6_\x8b\xe9\x02\x1eg\x19\x8c\xba]R|\xda\xd7\
+U\xf9\xc7\x1eS\x9d\x87\x89\xff>\xa6Ex\xca\x00\xcf\
+Q^g_N\xaf[(\x8adKB\x10IA\x82\
+\x01\xf0\xb8\x22\xbd\xbe\xa0\xa8\xf6O\x80?3\xfa\xc87\
+\xd8GS\x11\xbb\xa3\x0a\xd9\xc9\xce\x06J\xe8\x8c\xebT\
+[\xa1\x00\x22\xf1\xdcz<i\x00\xbb\x00\xccx,\xd0\
+\x91o|\xbf\x9dW\x85\xa7\xc6\x0e\x06\xba1\xbdFJ\
+\xb2\x9c\xa2*D1\x1b\xfc\xe1\xe4\xd4<m\xe6\xdbf\
+\x84Y\x02\x14\x9d]\xa8\xd5\x00_n,\xe2\x1d\x14\xf9\
+'\xe7\x1a\x0cX$\x1bf\xba\xa4b\xbb\x93\xc4]\xaf\
+\xa8$\x1e\xe4\xb5>\x00\xc2\xb4\xd3\x80\x07\x8c\xb6\xf0\x0e\
+\x83\xb9\x00\xa3\xc0\x05^\xb3\x8d\xa2\x00\x8e\xe9|\x9f.\
+\x13\xc8\xf0R\x82\xe2~\x83\x0bk$16e\x0e@\
+\x9f}\x95\xc6\x1c\xf9+\x0d\x19\xf2|\x03\xb2\x8c\x81\x06\
+P\xe7\xdc\x89\xf1\x82\x00\xba\x8c\xbf\xe5\xf3!\xc5\xe6\xcf\
+\x9dwD~\xc4\xfe\xdb\x97\x9aR\xa0\xf3}\x9c\xf7\x00\
+\xb9\xec\x07\x98y\xd3\xc0\x02\xc0\x04\xa8C\xea\xcd\xdf\xe3\
+5E\x9d\x07 H!M]\x8bt\x9a<\x17/\x15\
+\x00\x0c\x98\xcc\x8c\x99\x944~\xdbJb\xd1\xaf/\xf8\
+\x5c/\x1bH\xa0\xf0'\x7f\xe4\xfc!\x1f'\xef\xc5K\
+\xc9\x80WHy\xdc@\x86A\x14\x85>L\x0a\x98\xab\
+\x00:\xdcO_\xd7\x11\x89s\xee\x8b\xfc\xd6\x0f\xe6\xe2\
+U\x81JanS\x94\x9c\xd6<\xe4B\xb6v\xc3\xf5\
+\x06\x1a\x89\x0fTn\x1e$\x5c\xa4)t\x98g\x0e\x15\
+\x87\x02\x90\x05\xc8\x85#S\xea\x17\x8a.\xe4\x82\xf2\x84\
+\xdb6\x9d\xed\xbe\x06\xa4\xa7\x05\x09\xca;\x85;\xef\x8b\
+\xf7\x03c\x80B\xbag\xf6\x10\xbf\x97\xce!\x0f6\xbf\
+\x97D\x96\x05\xc2u\xa4\x90\xb5\xabs*Z\xbb\x8dd\
+y\x7f=\x0e\xaa\x0a\xe3\xf7\xf2\xf5\x08\x97z\x0a9\x5c\
+K\xf9\x5c\xdcX~\x0f\xee\xac\x98^P\xf8R\x90S\
+\xd0\xcf\xd53\xb5@\x12\xc0\xfb'\x11b\xc3\x86\x8aO\
+\xc1Mb\x05P\xc3}#\xf1AC\xf3\xa0\x1fD\xcc\
+\x08gxl!@\x10\xbf\x07\xa0\xa5\xef\xb6\xdf\xa7\xd2\
+\x03\x0cP\xd8\x17\xc6\x07\xd2\x82\xee\xe7\xcd\xd9\x1b\x0b\xc8\
+\x03\xc7\xbab\xbd\x951i\x9d\x19\x87\x01\x98(\xa8q\
+\x97\x85A\xf2\x90\xd79\x0f,\x09/\x080\x05\x1d\x05\
+'@\x15\xf7\x01\xd7v:\xc0t\xc6\xfb\x0c\x89\xde\xf7\
+\xc7:\xe4}\x83,\xb3\xd1q]8\xa8@\x9a)\xa8\
+@\x12m\xfe\x09\xa51:\xf1<Gl\x90\xac#\xe6\
+\xd1\xb2\xa1\xe3\xeao\xaf\x8dpG\xc5\xbc\x84\x0d\xd5\xd4\
+\xb4\xffC\xd7\x99\x80m7\x95\xed\xff\xb9\xf7\xf3\x98\xdf\
+\xccCf\xe1%\x1a\x88\x10\xa1A\x83P\xc8P\xa2B\
+%\x0d\xa2\xf0\xa1d\x88P\xa4\x22T\x12\x0d\xc6\xfaD\
+$%eh\xd2\xd7@2$S\x83y\xaa\xfe\x91x\
+\xef]X\x88\xd7\x00\x00 \x00IDAT}\xff\xd7\
+\xb5\xf6\xf9;\xd7\xb2\xde\xbc\xd7q\xbc\xfbx\xa6\xfb\xde\
+\xf7\xdak\xb8\x86\xf3:O#f\x90\xb1\x01\xda{z\
+X\xb5\x8fp\x9f\xda\x00\xad',\xb9\xa8\xd1.\xa3\xb7\
+e\xf5\x0d\xf5\x96\xa5\x00$Y\x95HA\x05\x84\x0c=\
+d7\xfc\x5c\x19~\x93\x9d\x91\x18\x10\x17\x01$\x86\xd6\
+\xed\x96\x0c\x9b9\x06 \x8d\x82KB\xd0u\x93 \xb2\
+>\xa8\xf8S\x89\xbd(\xac\x0a$\x14(\xb9\x95\x09\x04\
+\x87\x0e\x12\xa0\xa4N\x90>2\x1c nu\xd1A3\
+\x97\xfc\x0e\x99\xfe\xcb\xc3\xaa\x80\x19\x0e\x14e\xaea\x8b\
+\x1d\x9d\x17VA\xf9B\x16\xf6\xb6\x1c\xb0\x0e=|\xea\
+y5\x04\x90\x03\x88\x0a\xe9\x96a\xe9\xeb\xb7f\x1b\xf6\
+\xc3\xd7\x96\x16\x0c'\x0a\xb4\xdf[\xed\x81D/\x0e\x08\
+\xd0\xbc\xf9s3S9\xd8Ta0\xa2\xa3\xe6\x9a\x99\
+T--\xf4\xe6\x12P}:\xac\xea\x1d\x87\xe3 Z\
+\x1e\x82\x1d{\xbfd\xfb\x16\xb9;X\xef3[\xf6\x86\
+\xd5s\x8f\xd3\xebEJP\xbd\xb9\xea\xa1\xa4B\x88\xae\
+\xf1\xb6byF\xb7\xfc\x81\xb0J\xdd\x00\xc7\x88D\x0d\
+\xf3\xe7)\xedk\xdf\xc8VzmUiu\xe5\x1c]\
+{\x91t\xd1\x13\x0b\x89`wSX\xba^\x18V\x90\
+\x10\x99\x05?\xc8\x1fWK\x16\x89\xc8\xe9\xb0j\x1c\x81\
+\xba\x8a\xd4-\x93\x86\x1d[\x12=\x06J\xed\x11VU\
+\x00iu\x81\xf5\x9f\xf1\x05\x99\xa0\xe7o9At\xe1\
+\x854 \xc0\x9a\xde&\xac\xf4\xb6\xc3Q\x03\x87\x82\x03\
+xt\xa9\x81\x1e\xabw\xd9\xb2r$\xf0\xb5?\xd2\xca\
+eG\x0d\xc7\xa8\x90\xde\x0e\x89;\xfc\x05\xcey\x12p\
+@\xab\x91o\xa4\x92\x05)\x9e\x90\x01&ed\xdfR\
+\x02\xdbj!J\x08\xd1\x13nRP\xb5N\x11\xf0\xc3\
+q\xd2/\x1aV\x02\xf7\xc92b\xfb\x874p\xd7\xb0\
+\x8a\xfcRP\xf3\xf1\xdf\xc6\x7f\x1d\xff5\x07\xd8\x19\xfa\
+?>j \x95\xeb?\x15V\x02%\xc8:\xfb\xcf\x85\
+\xa5\xeb\xfa\xc96\xd0\xba|\x7fE\x82\xaa\x16\x82\xf1\x19\
+\xc9\xd2\xe7\x1e_\x1aV\x91wr?\x0a\xe8a\xad\xef\
+\xbf\xd9\x9f\xdd\x9f\x9dIT\xb3la\xbfN\xbfn\xbf\
+n\xf5~\xc1%\xb0L\xd9\xff\xfb\xa3\xc2J\x00aY\
+\xb4HC\x9eT\xe9\x9e_\x17V\x12)\x99\xe5\xfe\xa4\
+*\x11\x80\xc3\x1b8\xb7#\x0a\x22 76E\x82c\
+\x89dK\x0edky?^l\xb2X\xbfx\xc5m\
+\x15\xd0\xe6\x03\xc5\x15\xb1]\x09p\xf2}]\xac\xde\xfd\
+H\xb8\xcc\x09\xab\x02\x1e\x9d\x1bN\x98(\x906W\x09\
+,\xea\xf8\x93$(i\xf9\x04\xf9G\x80B\xaf7\x05\
+$%\x9eG\xdd@\x867\xd9)\xac\xa2\xb2\xa2\xc7\x98\
+}_\x95hz\x95\xfb\xc3\xc2\x94\x98\xf9g\xd5bq\
+Z\xb2S\xd5\xa2\xb0PU\xe8\xd2zc=w\xd7\x87\
+\x15y;\x93\xd1\x1e\x19V!\xc9\x82s\xe0\xd1\x9c\xb0\
+\x1f\xce\xeb\x19A\xd5c5.\xac\x02F\x04\x9e\x87\x84\
+U\x85\xb9\xc0\x19\xbcK\xebs\xac@\xef\x86\x8aTQ\
+\x85\x05Z\x1f\xd8WiQqBS\x5cc \xf5\xfa\
+\xcb\x92}/#\xda\xbe\x13\x886\xfc\x94\xcc\x8d\xf1\xb0\
+d\xef\xf6\xab \xf6\xf8m\x04\xf6\xc8PR1G\xed\
+\x86\x848\xc8\xbe\xaf*\xc1\x0bBK\xad\x8b\xfc\x1d\xb2\
+\x9a^\xe7 \x9ax?\xfc\x04*\xd9$r\xe06 \
+1\xc49M\xfc@e\x19\x19J\xa9\xbe\x98+\x89\x84\
+\x19?\xd7\xdf{>\xe2\x97SyG\xb6R\x9f\xcfj\
+\x16\xf8\x9d\xfc\xc3\x1f!\xee\x81\x03E\xfe\xd6\xe4\xf4\xb0\
+\x8a\xd4\x9bx\xa4\xe5\x16h\x91\xca\x14*\xf1\x9b\xf1_\
+\xf1w)\xc8\xb5\x88\x5c\x10\xc1\xb4h+.3\x07\x02\
+q\x81\xe2\x1b\xce\x17W\xce)\x18+ \x9eK.\x90\
+x\x09\xce\x038,\xe4\xcf\xf9\xfe\xb9?>'-\xab\
+\x14\x0ci\x95\xa5\xc0I\xbcAa\x8dqf\xbcZu\
+\xaeV\x06\x9c\xf8K\xdf7\xc7\x17\xf7\x0d\xb2\x8b\xf8\x83\
+\xf3\x9e\x04\x8b\xe2\x85\x99\xfc\xe7\x0bU\xd0(\xdep\xcd\
+\x0cJ\x1f2\x1f\xafQ`\xf7x\xf9~v\xff^\x5c\
+\x1d\xb8\xca\xf0Z\xce\x8f\x00\x86^[\x02>\x0eF\x1c\
+F>0P\x0d \x11\xdc(\x196&\x02l\x8e\x04\
+\x14\x04\xec\x1c\xe8\x04BZX\x90\xca\x90\xa92\xe9\xc8\
+\x93\xcf\x0c\xf8\xac\xdfL\xaf<\x90\x1c /d\xb0D\
+\xfe\xe7\x8d\x82\x01&\xa0f\x22\xf0\xe0\x09\xd0\x08\xe4\xf8\
+\x1c\x04\xfa$Z\xe6(@,\xbd\xe2C@N\xef0\
+\x0f\x90\x0a1\xcf\xe9\xef\x96\xf1x&\x84\xe4\xaf\xc3\xfb\
+\xe3\xd0\xf3>\xeem\xe7~\x17|\x96\x8a>\x0b\x95\xdf\
+\xe3yr\xe5y\xb1\x91\x14\xfd\xd8\x5cAw/=\x15\
+l&<\x8e\x18\xea\x02$t\x18\x17>?\x01\xcd\xe3\
+N(\x0c\x95\xf6\xfb\x14h3\xbe\x5cI \x80\x84\xa0\
+B\x0f\xd2A\xe3\x84\x5c\x92\x03\xe1\x86\xac\xc8\x9f\x0b\xcf\
+\x17yD^\x97\x859\xa7\x91\x17\xc4\xb1\xe4k\xfe^\
+\xdf\xf7x\x10\xb8A\xea'\xee\x0d'\xc8\xd8\x08\xa8\x9c\
+\xb3n\x80\xf8\x16D\xc5\x90\x00 #\x0a\x84\x8b\x0d\x86\
+\x16\x0a>\x9f\x02Z\xaf'6X\x90\x00@\xb1\x04\x09\
+sk\x0a\x99y\x1dH\xceH2\x1f\xe5\x98{]\xd0\
+\x0b\xc8\xeb\xeayB\xbeb\x96a\xd8\x96y\xdedF\
+\x09\xa8\xd1A\xff\xc3\xe8\xa6\x0cQGm\x04\xddX\x0e\
+N\xa0_d\x88\xe5`;a \x0e\x81\xc9iaU\
+\xa5\x9by\x8e\xc3/\x88\x9f+\x1e\xf46\x07\xf7\xc9\xfd\
+\x15\x1b0Pq\x1d\xc0\x90.\xe5\x80r\xbf\xd2\x8bo\
+H?\x95o\x05\xee\xaePQ\x11\xc0\xe1\x82\xc4Q\x09\
+\x1c\x93R\xa9\x02\x09\xf9\x8b\x13Rr\x8ca\xb5\xf6\xfb\
+\x80\xa8\x00\x09A\xef\xa5z\x02G+k\x7fc\x9fb\
+<5?\xba\x97\x84\xe5\x84\xc1z\x910\xa0\xb5\x03\x16\
+l\xcfo2\xee\xb7\x87\xa9\x97\xfbs\xea%\xfd\x8cT\
+SN\x17K\xf6)r\x8c\xb7U`\xfd\xf9\xaa\xe7\xfb\
+\xe4\xb0\x0a\xd2\xaa}\x8a\x0a\xb7\x9f3\xf79= \xcd\
+\xa2\xfe5\xda\xab \x10\xa8\xb0\xe1\xa8\x9aK\x05\x04G\
+T\xe8\xd3\xb9\xd3=\x16\x96\xaeo\x08K\xd7\xa7\x06r\
+;\xf7\xd4\x86c\xba\x96\x12C\xe9\xf5\xba5\x92\xc5:\
+:7\xd99j\x11\xf9\xbf\x5c\x09\xcf$z>\xc76\
+\x90<&*.\x9a?\xdd;\xc2\xaa\x04\x0c\x89$A\
+v\x0d\x99\xbfet\xf3\xe8f\xb5\x8e\xdcX\xc8 }\
+\x1e\xd1\xe3\xc9|\xe5\xe7pL(\xc3\xef\xc0\xfa\x07\xc9\
+~X\xa9F\x04\x99_|\x9eYa\xe9\xe7\xdf\x0d+\
+\x90\xfc\xe4\xbe\x0d\x09\x09\xb1\x0e\xbb\xc7\xfe\xe6\xb0\xc2M\
+\xd0=2\x90\xedM\xed/\xe4\x87\xf6)zzA\xae\
+\x98\x04P\x15M\x02i\xcemX\xcd\x0dq\xd4\xfe\x03\
+\xf2\x01\xa4\x11\x88\x08\xf7B\xeb|1Y!\x09@\x90\
+\x87$\x08DNg\xa8,\x90eZ\xc5p\xd4ph\
+\xd9\xf7D\x8e\xea\xdex\xee\x8b\xcal\x03\x1due\x85\
+\xf3\x18\x04\x00\xb2_\x07\x86\x95s'\xc2\xe3\x08\x90A\
+\x08\xb97\xffua\x22\x9b{y\x09@\x09\x9c-\x1f\
+G`\xb7KXr#N\x0aK_\xbf),}\xfd\
+\x91\xb0\xf4\xf5#a\xe9\xf7\xd7\x0dK_\xbf,,]\
+\xbf\x14&\xbf\xe0O\x95\xca\x89 \xdb\xfd\x89aEn\
+\x8f\x1e~8\x0a\xc67\x86U\x9c\x05T\xeaEF\xdb\
+\x1f\xd0\x1f\xd8\xa7\xcf\xdb\x9f\x17\x96\xaeO\x0f\x08\x85\xfe\
+\xbe\xb0\xd2\xc3l\xddu\xce\x0b*`$\x9eI\x10R\
+Y\x83;\x85\xe7\x1di\x80\x9b*2=\xdd\xf7\xe8\xc8\
+\xb0\xf4\xfdu\xc2\xb4o\xa5se\xb2M\xb2\xadK\x82\
+\x01\x12Y\xfbq\xf2\xff&\xc7'\x8b}\xf3\xfd\x03)\
+]n\xc9H\x01R\xbfWX\xba>7,\xfd\xde\x1b\
+\xc3\xaasZ\xd0~\x02\xdc\xa9\x83\xb2MM\x16\x08\xab\
+>\x1f\x88O!\x83,\xabK\x01j%q\xf0Hm\
+\xc1l\xf2\x1b\x8b\xa4q\xcf\xb0\xb2\xef\xf6\xdf\x0b\xab\xce\
+\x15\xf9S\x93\xeb\x93\xddP\x9d3\xb4@D\xa0w|\
+\x05\xf5\xa6U\x10n-\xc8\x03u\x1e!\x87\xda\x9d\x1f\
+\x96\xae\xbb${\xab\x90^\xcbU\xe4\xbd\x14\x12\xa9\xf8\
+\xe3\x0f\xe1\x8f\xd3*\x8c\x5c\xa7Z\x0c\x5cq'\x11\xc7\
+\xf7\xe1\xe0\x10\xd9g\xee\xc1?\xaf\x9a\x07\xb1\xee\xd2\xfc\
+\x0f\x8d\x9aP\xa91y\x1fr\xbd\xa1&\xf0k\xc9h\
+\xaf\x98\x13\xe2\xdf\x8f\x84\xf8d\xcdt\xae\xae\x999\xc7\
+\x86\x84\xd3\x99\x92M\xbbR\x15cZ5\x95\xa0\xc8\xad\
+\x06\xebe\x04qNx\xc6,\xcaj?$\x1e\x91\xbf\
+# \xa3\x85\x80\x00\x19\xa4\x15\x09e\xe2%\x10\x91\xf8\
+]\xf8o\xc4\x13\x14N\x94\x884\xb2\x10\x88<\xd0\x7f\
+%&\xcd\x0d@\xa2r\xab\xe4\x95m\x95\xcf\xbf\x01\x09\
+\xf5\x80\xfca\x9dW\x961\xd7}P\x00\xb2:\x12\xad\
+\x12\xc8/\x1e\x93\xad@\xcc\xdb\xd6`\xce\xe9\xb6\x82\x8e\
+\xbf\xaa\x0a\xb8I>\xf1\xdb\x88\x8b\x08\xe0_\x1dV!\
+q\xf1\x87D\xde\xeb\x80\x9b\xc2\x01\x89?\x90\xb8\xfc\x9c\
+\x82&-]@\xf6g?S>}.59\xae\xac\
+K\xee\x9f\xd6\x0bH\xf8\x88;(\xf86\xdc\x15\x8e\xfb\
+H@\xd3\xa3O<\xb5\xd1\xd4\xcbr\x8b/q\x0f\xe3\
+\xd7\xca\x7f\x13\x07\x83\x9c\xe5\x1c\x02\xd9B\xfc\xa4q2\
+2\x92\xfb\xc5\xef$\x9e\x02\x19!\xffu&o\x7f\x1b\
+\x08\x01\xf03=\xb8'\x14P-\xaf^\xfc\x7f(@\
+Z\xaab\x8bd\x81\x02\xfd\x87=\x15\xf9\x15e\xfe\xb2\
+\xe3\xf3\xd2*c\x13\xd3\xf8\xdbU\x00DE\x91\x8d\x9f\
+\x00F\x81\xae\xd96\x09(4\x80\x93'\xc2\xfe\x0b\x99\
+\x16\x13\x8f\xf7c\x80Xh\xe8\x98\xf2\xa0\xe9\xe1\xd0@\
+;P\x91\x83\xe5\xca.\x10~\x02@^\x9f\xfb\xa5\xe2\
+\xd9\x90\xaf\x01\x953d\x98\x09\xc0\xc4\x01\xd2O\xc6\xa8\
+\xc9\xf4\x8c\xb8\xff5\x94\xf9\xe3\xe78\x1c\x0fk\xe2\xdf\
+\xa1\x00\x0a(,\x01\x8e\xd8\x8f\x93\xe3\x9f\xac\xea\x15\xe2\
+u\x10hd\xa2\xf3y\x80\xac\xb0q\x10H\xe0\xf0\xab\
+\xd29Z[\x7f\xcf\xfd\xd3j/v_W\xa0Y\x90\
+,\xf8\xf9\x9b\x96\x04&(\xdc\x0fT\xd6\xef\xd1\xf8\xdf\
+\xae\x055K\x09\x136\x86\xdf\x0c\x0eL\x0aW34\
+\xc9\xffHH\x90`Y\xa4I8p_\x04\xea<\x07\
+2\xefk\xaa\xc2\xb4\x95\xe6\x1d\x1b\x06\x19\xd8%\x94\x89\
+c\x9c\xa9\xbc\xb7\xac\xa2\xfc\x9c\x8d\x86\x8d\x03\x87\x80\xca\
+\x00\xe4\x1d\xbc>-\x0e\xa86\x90\x19\x06\x81\x80\xc3\xa0\
+\x8a\xbd!\xf4\x92%2Y_\x93\xc8\x82U\x98\x83\xc2\
+z\xf5\x22\xa1s\xc2\x80u\xae\xde[\xb7$\xb0\xde\x08\
+|h1X8\xacJL@vIB\x8a\x8dZ\x95\
+:\x07\xdc@\x0090\x19G\xd6\xd1\xdf\xb4\x01\xb2\x1f\
+\x1c\x11V\xcd'2\xc6\xbc\x1f\x89\x0d6z\x10\x00$\
+b\xd4\x0b\x8d\xfc\x0c\xa4`F\xf6\xa8Bk\x87\x84\xfb\
+\xa0\x05\x83L0\x1c\x05TD\x0f\xcfV2\xe2bY\
+w\xa5_\x1c\x08\x93]\xc3*H\xac\x1cs\xb35\x8b\
+,\xcc\x81\x05\x89'9\x04\xae\xa0\xc3U\xc0s\xa0\x05\
+\x84D\x0c\x8e\x09\xa4q\xc8\xb1\xc1\xee\x8f\x8e\xfa\xf2\x83\
+>}\xb7UX\x86\xa8\xdf\x15\x10\xf5\x5c\x81;\xb9\xc8\
+\xa1R\x99\xf6\x01\x052c\x9909\xc4\xdbT\xebv\
+\xab\xbcr\xca\x95V\x18\xe4\x9d\x22@\xbe!\xcb`=\
+\xd6\xff\xbd$\x10L\xb2\x08{-\x0e\x9f*\xd4&i\
+\xa4wS\x90u\xe6_\x97\xff\xa5\xeb\xfca\xe9\xfa\xfb\
+\xb0\xb4\xed.\x91,d\xe1\x0e\x0c\xab\xd4E\x09\xc8%\
+\xf3\x9aW\xc9+\x14\xb0\xce\xae\xa0\xa58\xcc\xc8\x02n\
+/(\xec\x0e\xa3\x1dG;V\x8e\xb3\xd4\x04,\xab\x85\
+,\x0f\x01?\x9c\x1b\xe7\x08\xcaK\xa5\xe5\xba\xe1y\x8e\
+\x0e\x0a\xab\xf6C\x1c\x08\xe6\x91*\xebv\x94Y/z\
+>\x99\xa3\xe6\x01\xe9\x9f\x1f\x5c\x91\x0f\x06\x12\xe3\xcf\x95\
+\x0c\x1a\x9c\x04_\x1f\xc8\xbe\xec\xb8p.B&\x05\x9b\
+\xf5-\xc3\xfa\xea\xf6\x0c+\x15x\xa0\xb1\xdd\x8b\xc3*\
+\xb2?H\xfb\x84\x90\xe8\x0e\x09\xabd\x89P\x07\xd0\xf8\
+\xd0\xb2\x00\xc4\xdc\x08)\xc9\x8c\x19\x9a\x0e\x92\x86\xf3G\
+\xe4\x83f_\x86dq\xa1\xb0\x8a\x04\x92\xd6\x02\xf6\x0b\
+\xce+\x10\x80$\x98H@\x82\xb4#\xb0\xc1qV\x02\
+\xd3rZ\xf27\xac\x0b\xaf\xc4\xe3d\xcb\xb0\xa2\x0b>\
+>/\xacR\xb3P\x85\xd0\xf2r@~?1p\xb5\
+\xb8\x07\x5c\xf2`\xfd\x95a\xe9u\x16\x0aK_\xcf\x0a\
+K\xd7\x97\x0c\x15v'\x02\x9e\x0c\xcb\xac\xfb\xc9\xd2\xd7\
+'\x87\x09\xb1\x12\x15\xc2\xfd\x92}\xb8\xdag\xee\x0e+\
+-*\xf8I\xfd\xad\xc9n\xa9\x90X\x04( U\x90\
+\x0b\xa35\xe0e\x03\xcb\xbf\xe5TQ\x15\x90\xbf0y\
+2\xac\x90\xe69\xc0\x87\x13\x0a\x87\x9f\xf3\x9fV\x0d\xb8\
+K@\xae\xe8|!Aj$X$\xe8\xce\x15\x14\xfa\
+\xb0\x12\xf0\x1a\xb1\xa5\xd6\x95\x9c\x08\xfe\xa2\xc8M_R\
+%\xfc\xf1{B\x042\xfd\xfd\xf8\xf0\xb0\xea}\x84\x08\
+\xec\xdf\x12V\xc8qM\xbe)N\x02Z\xea@\x5c\x98\
+d\x96\x02\x05\xebK\x89\xc2\xc9\x1aaUe_\x09\x1b\
+T\x228w!\x83\x9c|&\xac\x92\x83\xc3\x1f\x93:\
+\x03$\xdd\xfd-\xfd\x10 |i\xeaK\x93\xcdE\x0a\
+zm\xe5\x97Gb\xf7;E\x1d\xa1\xfbuX\x85\xd8\
+\xd9|(\x00\xa4pc@\xf2L\x84\x04z[\xb2]\
+\xca8\xb9\x17\x192:\x02\x16\x02C\xbe& \xe29\
+\xe3\xa7?\x92\xb1mC\x81m\x9dJ\xcf\x1d\xd5\x98&\
+\xa1\x1ax\x98@\xc40\x0e&\xcd\xd3\xb9h\x92Oq\
+\x1e\xd8o\xf9\xca\xe8\x8c,\xe3M\xeb\xd0;\x86u>\
+YL\x89\x9b\xa7\x86V\x8f\xa9\xd3\x86\xd6\xa34\xab\x86\
+\xf5\xbd\x80\xfct\xfc(\x91\x962\xef\x0d\xc1\x07\xb1\xa7\
+\xc4\x0f\x08C?o\x02:\xfc~\xfcm\x90\x17\xf8)\
+\xda\x87i\xfdb\xff6d\x9f\x82\x0f\xeal\x0a\xe0Y\
+\xef>\xd8\x8e\x18\x900\xd6\x85\xa7\xa7\x9c\x04\x01\xff(\
+8\xe1\x87\xd2\xe2\x84\xac1\xdf'n`?\xa0e\x82\
+\x82\x9f\x90o\xde\x1f\xf0w)\x18B.M+,H\
+\x0a\xa9s9\xaeb^\x00\xfd\x07Q\x0c\xb2\x93\x16\x06\
+Z2\xf0\x9by\xbd\xdf\xa9\xb7\x9e\x16\x08\x02kH%\
+\x09\xe0\x19G\xfe\x11\x97\xb9b\xad\xc2T\x8bl\xe6\xfd\
+\xf0gi!@\xe6]\xad\xe1~\x7f\xceqZ\xd3h\
+=\xdf&\x9d{\xdbT$\x83p\x07p\x0e\xf3\xf9y\
+\x7f\x0a\xe5\xc4\x05:7\x8d\x00j9\xdfH\xb8\x89\x93\
+\xc3\xfb5\x85~\xc5A3\xae|\xea\x83XnC\xac\
+\xce9?w\xb1&\xfa\xc6\xd5\x07\xc3\xd1F\xc6\x8b\x83\
+4\xf2\xf9!/\xf3\xe9d\xc7+s}\x9c\xc8{\xa2\
+\x97\xec\xb8d!\x7f5_X\xd5j~nX\x95!\
+\x85\xe5R\x10\xac\xbc-\xbcP\x8e\xf0\xeeU\xa0\x8b\xbc\
+ \x0e\x122\x0a\x0c\x08d\x1eT\x00Y\x98\x04\x10,\
+P\x02\x17\x12\x09dl\x08\x00`\x81\xa7g\x16\x92>\
+\x1c\xde\xbf5\x90p^\x97\xc4\x08\x89\x00X\xde\xdb\x1e\
+{\xde\x87J\x06\xcf\xa5\xd5\x8d\xc4\x81Y\xc8z\xf7\x13\
+\xf5\xde\x0f\x959\x12\x03@\x87\x80\x18\xb3\xd0\x09\xb8\xd9\
+\x88\xff\xac\xc4\xc5\xa2\x0aX\xefR\x22\x81\x00\x88\xf7o\
+\xe5\x1bW\xd0\xfd\xb7\xc8\x06\xbe\xc61\xe5\xf3\xb1\xb0\xd9\
+\x08o\xd5D\xbfY\x0b\x89\x8d\x91\xca\x0c\x09\x87[D\
+\x8a\x089\x11\xe3\xd4\x90\x5c\xc0r\xe9\x0d\x86\xd7!\xb0\
+\x07\xe9A\x80\x0d\xbb3?g|\xf8\xf9\xca\xba.\xa2\
+\xcf\xb3d\xd3\x1a\x01\x14\x87\xcf\xdb\xb2\xf17\x99O'\
+\xa08\x08\x99/l\xa0$\xb4\xe4H\xce5\x9e\xbc>\
+\xf3\x16DJ\xf4\x02\xeeU2~\x0e0\x9a\xde}#\
+\x0c\xa8\x98\xbe'\xac\xea\xd1\x05\xa9\xc1\x06\x0f\xb2\x86\x03\
+\x14\xe4\x82\xc8\x04\xa9\x90\x98$\x0br\xc2F\xd6\xd1\xfa\
+\xb9\x8c\x1f\xcf_\x07%\xeb\x13}o\xb7\x1c\x90\xc0 \
+\xd1\xc1\xbc\xa5\xc2G%\x9e^~U~hU\xf0\xef\
+\x03\x85\x22\x13Oo<\xe3\xc9\xc1\xa8\xf5\xe5V\x1b\x02\
+Q\x12H\x8c;\xc8\x072\xbe\xac\xc7\x96d\x92\xcf\xc5\
+z\x87\xccQ\x95O\xf4z\xe9u\x9e\xbc;\xac\xaa\x00\
+\x80\xd8@\x07\xfa\xd4\xb0\x0a\xb2H\xc6\x5c\xe3\x04\xd4\x90\
+@\xca\xbd\xe1@\xc7\x7f.\xd2:d\x9f\xc4^\xef\xca\
+\xecJi\x9fX)\xeb\x22O\x87.\xb2\x0f.th\
+\x8f\xcfVz\x11\xa9\x08\xb0\x0f\xd3\xfb\x0eK6\x10H\
+\xc8\xf8p\x0c\x04\x81\xcd\xe7\xc3\xa7\x87\xd6\x97\x98W\xa3\
+\xef\x8f\x06\x0e\x07d\x08\xa5:3\xbdwXu\xf0\x89\
+\x04g\xf4\xe7\xb0J\xc7\xf9\xfc\xb0\x920\xee\x8e\x0b+\
+$\x83\xb9\xc7?z\xce\x1f\x0aS\xe2\xeb\x83Z\x17\xaf\
+\x97\xdc\xd0\xd2U\xc0\xcf\xbc\x8f\xc0\xe8\xe5e\xbd\x8c\xbe\
+9:{\x94\x02\xf7n\xaf\xb0\xac'\x9e{\xe0\xbb\xf7\
+t;t;\x14\xc4\x8a9\x06\xf4~\x96\xcf\xd3\xf9\xea\
+sV\xf2P\x9e\xbfO\x84U\x951\x02!\x90(Z\
+?\xa3=\xc3\xaa\x8az \x1e\x16\x12B\xe7\x8b\x052\
+Ke6(\xe0\x82\x04\xceH\x1b\xce\xeb\x7f\x0f\x8e\x8d\
++H<G\x10`\x90\x16\x89\x04*Ck\xd3}O\
+_\x1d\x96\xae\x9f\x0c\x1b\x9e_z\x82S\xd3o\x0fK\
+\x9f\xf7\x13\x83\xcev\xb7LX\x85 @\x1eQ\x09\x97\
+\xee\xa3a\x15W\x85\x02\xeb\xc9\x15aU\xcf%\xad\x84\
+\xaa\xa4\xc1\x19\xe1D\x19\x89\xa1\xfd\xb3y~\x22?\xe8\
+\xd6$t\xe7Y\xb7\x142\xd8\x0f\x08@\x09\x089g\
+\xe8\x89\xd5\xbe\x07I\xa69O\x94`\xef\xaf\x09K\xef\
+\xb7UX\xfaz\xbd\xb0t\xbd)\xacT(\x0d\xc5\xdf\
+*\xac$ PC\xca\xd0\xe5\x90\x95\xdbL=\xfc\xdf\
+\x08K\xd7W\x84\xa5\xeb\xc2\xfds\xfa \xbd{8\xac\
+R\x13X(,]\xff\x19VH\x8b\xd9_\xac\xce\x01\
+\xa2\x02u\x14\x10H$h\x91\xfd$\x81\xc5>\xa3D\
+&\xfb>$\xa8N0\xd2\xba\x82\xaa\xcb\x17\xb3E\xc2\
+l\xbb\xdc+\xfc\xc0\xe4\xc1\xec\xf0o\xa7\xc2\xc4[\x86\
+\xe7\x87\x0a\x0d-anQR\x02htoXf\xcf\
+\xff\xcb$\x90\x8d\xcbO\x96\x9b,WU\xb4\xe4\xf7d\
+n\x87%\xcb|\x9c\xbc2\xac\xf2+\xe3i\xbdU\x09\
+\xb1%*\xb2]\x1c|zf\x95H\xca\x9c\x04\xd3%\
+\xc0\xea\x9e\x08\xab\xb8\x14\x90o#\xa0\x00\xa9\xd6\xfa\x09\
+\x9a\x97\x9e\x87JP\xbb\xe2\x8a\xec\x1e\x15W\xed?&\
+/\xc5\x1f\x00\xb1\xa0\xc4\xe5\xe4\xd1d\x8f\x09I\xf8p\
+i\xfd\xcal\xf9\x1f\x13\x09\xe8[\xab\xd6\x80\xc0\x9b\xac\
+] \xc9\xe6\x84\xd9<,]\xdf\x19\xa6\x16\xa2\xbf\xe5\
+\xc4\xcay\x91X\xf1:\x8bUul\xb5\xefK]\xc3\
+-\x81py\xa06B\xe5\xfa\xd0\xb0\x92\xf81\x990\
+\xeb\xf97aU\xa2\x9d\xe7\x82\x1f\xcfsF\x16X\x10\
+\xef\x9c\xe8<H\x81\xed\xe9B\x94|\xa7B\x1e\x0a\x01\
+\x14\xa2\x8d\xb9\xa2\xcdsQ\xc1\x112\xd7t\xb6\x0d*\
+<J\xdc\x19\xc1\xa1\x84\x9e\x03=\x02[\xce\x09\xbe\x86\
+\xa4\x9a\xc4\x22*\x0c\xc8\xbdIu\x82D\x95\x13_\x9c\
+\xb3\xec?\xbc\x8f*\xfc>o\xf1+\x1bR;\xef\xd3\
+\x04\xea\xf8\xff\xf8;\xf4\xec\xabE\xce\xc8&\x90\x19\x14\
+\xa4(\x18\xe0\x87\x13\xc7\x800\xa0\x92La\x8d\xf8\x00\
+\xbf\x9e\xf3\x0a\xd5\x15\xe2\x0b\xe6--\x01\xbc/\xa4|\
+*\xa0X.\x90\xf1\xc0\xff'\xa0F]\x00\xbf\xab-\
+\xb8\xd1bK\xfc\xd6\xca\xb0\x12X\x93\x90\xe2\xfb\xfc>\
+\x09N\x0aI\xfc=\xe3\xc3\xe7\xa5\x15\x0d\xbf\xb0\xe5\x96\
+An\x0f\xd2l!x}\xdf$$\x18\x17\x05\xec \
+\x04\x8d\x90h9\xd1Z\xc4/\xe3\xa7\xc4\xad\xc9\x11I\
+\x00P8\xe2s\xe2\x97\xb2\xbf\xe8y\xccP\x81r\xaf\
+\x14\xb2\x1bb\x97\xce\x99\xb8_\xaa\xe2\x92\x1c\x84\xfe7\
+a%C\x99\xc9\xbe\xbe/\xf2\xa98hOJvr\
+\x05]Te\xbc?$\xd9\xc1\x95\x1e\xa726\xc8\x1f\
+\x01\xbdecA&\x05(\x06\xba\xcc\xd9\x8d\xfcf\x09\
+d\xb2N\xe2\x875A\xceT\x0f\xc4\x8f\x95p\xb8F\
+\x03\xb1d\xd5z\xc0\x81N\x00H\xc0\xc7\xc2!SD\
+\xef\x0f\x1b\x10:\xdcb\x85E?\xddP\x112T\x04\
+\xa0\x04\xaa,(\xf4p\x95!7\x1b<\x0f\xea\xc5\xea\
+\xa9}\x81\x02]\x02\x01\x1e\x18\xbd.\x04f@Z\x08\
+t\xd9\xd8\x08\x18!\x13\xa4\xd7eu\xdd\x1f\x81t\xc3\
+F\xee\x80\x15\xc8<\x1b\x0b\x13\xb5\x09\x90G$$\xd6\
+\xd7\xdf\xf39%Oh\xc81\x01\x10?g\x5c\xd8\xa0\
+u\xa0\x07\xb7k\x0eP\xd9`X(Z\xd8@\x1f=\
+\xbe,|\x16\xe2s\xc4bN\xcb\x07\x90[\x02|\xc6\
+\x05\xb2E2\xf2\xfc\xbcM\x04\x00\x1d\xe2\xfb\x04\x80$\
+\x04\xa8\xec\x93\xa1S\x02\x06\xfde\xf7\xf8\xf2\xb95\x9e\
+\xf9\xc0~\xb4\x0a\xf4\xd9\xc8\x99\x97\xccC*p\x22\x93\
+\x82\x84\xc4\x07\x0c\x8e\xb9\x107\xee\x99\x05\x0a\xcf\xe7\xc5\
+\xa1eCa\xde0\xef98\x98\x07\x04\x06\xcck\xc6\
+\x09\x87\x99\x8a?\xf3\x17rM\x05\xfeN4p \xa2\
+\x22\x00R\x81\x9eqA\xfb\x8c0\x10\x07\xc2\xe8{a\
+\x15\xbb1\xea\x01bo7b\x80\xc0\x18\x19;*J\
+\x04\xa6\xb4\xf4\x88\xb5\xdd\x01\xe4\x1da%1\x00\x02\x82\
+\xd6\x18\xcfW\x10\x10\xb0\xdb\xf2\x9cy\xee\xcc\xe3\x96\xe4\
+\x85\x0dW\x81\x9a\xd7;\x89G\x109T\x12\x09\x94\xe9\
+!$\xd0A\x7f^\xbd\x9d\xa3\x13\xc2*\xf95\xa0\xdf\
+jA\x98^1\xac\xf4n\xe2\x90%\xf7.#\x1d\x1c\
+0S\xe9V\x85\xc6\xe3#\xe4\x08l\xcaQ\xd7\x8e\xca\
+\xb69\x0c eT\x02\xc2\xac\xc0d\xc4q\x84\x98\x9f\
+8\xbc\xb0(\x9f\x92\xec\x0br\x84\x8e\xaa\x12\xb5gL\
+\x9d\x11j(\x11^\xe5\x00\x9c\x84m\xa8\x00lV*\
+dF\x88\xbd&\x831\xa7\xcc\xca\xa1\xcal\xf7\x83\xb0\
+4\x0e\x1f\x0eK\xd7\xcb\xc2\xd2\xf5\xc5a\x82\xf4G\x85\
+\xf9Wa\xd5\xfe\x16\xb8\x8d\xc3\xaa\x83\x96\xd6\x94H\x8b\
+\xc5\xb8\x9f\xad\x80\xff\x8e\xa1\x97\xdf\x81}\xf4\xd4\xaf\x96\
+\xc7)#o\xd2\xe9\x9a{t\x81\xbewW\x85\xa5\xeb\
+_\xc3\xd2u\xbb\xb0\xaa\x02\xbf\xd8\xc0\xc1a\xc7\x1a]\
+o\xe9\xa9O\xef\x1cV\x12]\xee\xb5}*\xacB\x14\
+(\xc1\x9b\x03\xa4\xe8\xf9\xbf \xd9\xb7J\x00\xe7\xcaR\
+t\x84F\x80\xb9sX\x91\xd1\xb4^\xf9\x09\xaa,n\
+\x19V\xf6\xaf\xd19a\x159\xdd\xd2aUe\x96V\
+\x19\xc9\x86\xbaUF\xf3\xcc,\xe1J\xa8\xe1\x10w[\
+\x87e\xf9\xc4d\xe9\xfb\xfb\x85\x95}\xb4\x7foXU\
+\x19\x81\x1cL\xba\xc9F\x02Q\xb1g\x5c\xc5\xc5a\x87\
+\x8e\x84+=\xfa W\x04\xad\xb6C\x087\x8dz\xe0\
+\x9d\xcfc\xdf\xe5\xdc\xa3\xc5\x07d\x0d\xdc\x14\xc8-\xd1\
+\xcb.\xc7/\x05\xea\xc9\x0a\xb4\xbf_;\xac\xb4\xea8\
+a&\xbd\xef~\x95\x81\x1c\xb3\xffKX\xba\xfe9\xac\
+\x82\xdc\xaf\xde\xaf\xd6\xafV!\x0024\xa2\xa8w\x98\
+M^\x8esN\xd8|\xbf$\x98M\xd6\x8aC)\x7f\
+\xc2\xea\x00\xb0\xf6\xc7<\xd9\xa9\xe2F \xb1K\xe5Q\
+=\xee\x0eT`;\xbfH\x01\xc6\xd1C\xcf4*\x22\
+\xfd\xe7\xfb\x93\xfa\xcf\xa7\xaf\xaf\x08K\xbf\xff\xea\xb0,\
+\xeb\x97,\x8d\xe3Ea\x05\xeaku\x95\xd7\x8a\xf4\x96\
+\xf3\x86\xc4\x8e\xb8ZL\xfex|\x0e\xe1\x86yq\xa4\
+*\xc2{\xab\xc2\xfa\xbd2.>'y^\xd1\xaa\xb1\
+my_Z\x05\xe6\x9c\x1b\x96\xeeo\x8b0\xb5\x5c\xbc\
+\xad\x9c\xefNh\xf2\x0f\xae\x02\x12Vja1\xdb?\
+\x81?rn \x04`\xadG\x86\x10\xee\x01Z\xc0\xd4\
+z\x17\xe1k\x04\xb0\xfd\xec\xb0J\xe6Q\x09U\x10+\
+~.\x04\x8ab'77E\xa4S\xf6\x1e\xd4\x86b\
+?\xe9\x0e\x08+\x5c\x04\xf9\xf9\xa4}\xb4{wX%\
+\x8bM\xe0A\x02M\xcf\x81\xc0\x1e\xb5\x11\x07\xb6\xf8\xf1\
+\xac'!\x18]\xb9W\x01#\xab#\xac\xae\xc2\xde\xdb\
+K\xa2\xc7\x05\xc0`\xf3?FH\x8a\x1d+h:\x09\
+3\x91\xadA\xe6\xe8\xdf[*,]'\xc9\xbd\x9a\x94\
+\xc4\xbe\x91\x1a\x14,\xd6\x92_Mb\x05\x0e(Z/\
+\x98\xd7 \x81(\x90P\x00\xc5\x8f&@\xa5\xa2\x8f\xff\
+\xces\xa0@\x07\xb2\x09\x84\x91\x9e\x8b\xf75!\x8f\x91\
+\xdb3\xb9,~\x12\x09\x94 \xb7\xdc\xadB\xfe\x810\
+d|\x09@\xa5.\xc2s\xb1\xaa@C>G\xa2\xd0\
+-\x9f\x04\xba \xfe(X\xd1jB\xa2\x02\x7fU~\
+\xa7+\xd2\xbc>\xfe\x01\xfe\x12~\xd1\x0da\x15\x94\x9f\
+\xd6\x11\x90\xd8 [HX\xd0\xe2\xc1\xeb\xcb?4\x92\
+\x96\x82+\xe7:\xfb\x16q\x8a\xfc`s\xf6@\xd2\xca\
+\xfb\x92@\xc0\x0f\xa7`\xd8\xa8|q\x8e\xe5\x16\x9b\xeb\
+\xab\x84\x06q\x08~\x22\x90|\xc9(\x13\xbf8\x10\xe7\
+\xf7H\xfc\xd0\xcb\x0f\x12\x8b\x84\xda\xdd)B\xba[\x08\
+\xbc[\xaa\xfb\xe1\xf3Q0\xe3}\xf8\x5c\xc4GM|\
+\xe2\xcf/\xae\x80\x999\xeb&[\xa7\x82\x22\xfe5w\
+\x8f\x0f\x95\x95\xe9\x02m\xcco\x17\x01\xc4'\xb3\x0d\x95\
+\xac\xaf\x149\x99\x0c-K\x07x\xf7\x8f\xb0t\xbd&\
+\xd9\xb5\x05\xe2\xe1\x1e\x18}0\xe4\x81\xc8 \x01\x11\xb3\
+<\x0f\xbdz<\x10\x0er\x0e\xe6\xa8d\xcd\xd6\xc0\xde\
+\xac\x8d\xee\xf7\xba\x9f\xf9$\x832R\xc0\xf0\x8dj#\
+\xd2\xc2\xa0\xf2\x95I\xad\xbe\x94{\xae\xf6\x89\x8a\x903\
+5\x0c \x13\x8b@\x87\xaf\x09\xdc\x98\xe8L<*\xe4\
+\x1c\xb0L|\xc8\x96\x80J\x13`\x90Y\x9aW\x13\x8e\
+\x00\x03\x12;\x027\x02P\x1e<\xe4P@\xd3\x09\xd8\
+ _$Q@\xe2\x02n\x06\x10\x06$\x0e\xda+\x01\
+b\x1b\x00?[e\x9f\xf1`\xdc\xf8<\xf3(p\x90\
+\xc3m\xd2&\xc6\x05\x15\x03\x02\xee\xbbu\xc0\xd0\x1a\xc0\
+\xeb\xb2`P_xt\xf2X\x0e\xa0_\x16]\xab9\
+\x00\x1b\x02\x0f\x16\x06\x0bjI\xddwK\xca\xb1\xb1\xe4\
+\xefV\xd3x\xbcY\xe4Qp$\x88\x8d\xdb\xbd\x5c\xa3\
+F.\x102@6>\xee\x93\x00\x90k{\xff$\x02\
+\xc8\xd0\xb5H\x016Z\xc6\x91\x83\x9b\x0d\x13\xd2< \
+\xafT\x98\x91\xbf\x94\x1a\x80+\xe0lh\xf4\xe2qP\
+!\xf7wqX\x15h\xd2\x0aC \x0f\x14\x99\x83\x91\
+D\x10\x1b\x0a\x1b\x1e\xef\xc3\x95\xe7\xcf<SB\x01\xe8\
+V\x96s\xdb\xb7\xaa\xe4\x13\x08j_\xc1\xc14Y\x9e\
+\x1c\x09'\x06\xe4x9\xb0\xf8IX\x05QS\x80\xed\
+\xf9@O\x1f\x88\x01m\xf8@J\xad\xaf\xce\xba\xa1\x82\
+\x83.=P*\x12\x03 \xa0p\x04\xc8t3\xaf\x81\
+\x86\xf1\xfc\x08D\xd8\x07\x04]7BG\x88\x00\x1c`\
+\x8f\x0b\xbd\xc8\xb4n\xa0\xbf\x0e\x1b\xb3*\xeb\x19\x92\xf9\
+\xb6\xe2pL^\x1cV!\x1d@\xb2 \x7f\x07\x14\x0f\
+\x8e\x87\x03R\x98~@E^D @\x85\x90\x7f\xb4\
+BQ\xf9 \x81\xc4~\x05\x17\x04\x95\xbfF\xdf\xdd\xb2\
+\x8f\x22%\xa4\x12gN\x0a\x12\x088\x16\xc8\x8b\xc5_\
+]Yq\x99\xa8RA/\xb0\xe5\xf2\x1e\x1ez\xd33\
+\x0b~\x90\xe0\xdd\x90\xec\xf7J|\xdc\x9d!\xf7\xe7d\
+90\x12E8zd\xceq\xf0\xd8?\x90\xa1b\xff\
+\xb8Dl\xef\x9a/\xa3\x9f\x87\x15\xd2 \x93\x1e\xaa\xa2\
+a\x88;\xf3\x18\x04\x0c\x15\x85\x17\x0c\xfb\x91\xb9sx\
+\xfe$N q\xbc'\xac\xe2\xf4PB\x02N\x9b\xd1\
+\x03aR\xa3\xd9\xa3\xec3T\x9a\xf2\xefmW\xce3\
+\xf7\x10\xef\x18V\x1c\xc2\xc9|b%\xd78#\xa3\xe7\
+\xca\x1c\x09h\xf6\x89}\xd4\x03\xcb\xbc\xd7\xfe\xd0}7\
+,\xbd\xce\xab\xc2*H3\x01\x96\x1c?\xcb\x10\x8aD\
+p\xe6\x8a\xb0\xf4\xf7\xb7\x86\xa5\xedd\x81\xb0*`F\
+\x15\x87\x04\x14$L$\xfa\xee\x0b+\xf3a\x92\xff\x95\
+\xc0\xdb2Opd(\xe0A.\x0c\x127\xf6+\x07\
+RR\xe9\xe8.\x0bK\xdb\xf7\xc3a\x05!8^4\
+,]\xf7\x09K\xd75\xc2\xd2uvXz\xffk\xc3\
+\xb2|_\xb2\x22oi\xd5\x11\xc8\xd0XG\x87\x0f\x9c\
+\x08\xae\xdco\x1c&\x12\xbb%\xca<\xe8o\x08\xab8\
+\x09Pw\xe1\xbc\x08\x8e\x81w\x96q\x87#\x00\x998\
+\xf7\x94\x92\x88\xbe;\x9f\xc0C\xe0qP\x85\x9c\xfa\xec\
+\xd4\x89\xb1\x8es\xa3\xe8K+\x12C8\x96\xd0\x97\xe6\
+\xf7I\xd4)al\x19Fz\xde97\x997 \xbc\
+X\xff\xc8(>=\x90Iz\xff\x13\xb7\x07\x95\xdft\
+\xcae\x16~\xd6W\xaed\xcf\xaa\x02\x17\xf6]!Y\
+3\xc2\xec\xc2\x8a\xdc-z\xfd\x8fW@\x91\xee\x7f\xbc\
+LX\xba\xfe;L\x09\x80\xf3\xd2\xd7\xefK\x16\x5c\x00\
+\xbf\x0a\xabZ<\xd0i\xa7'\x9a\xf3\x11?\x90s\x9d\
+\x0a\xa9\xf6\x17\x90\xa8p\xff\x80\xcc1+\xff\xfb\xa4\xbe\
+\xa2\x16E\x12;\xa8_\x10\xf0v\xc7\x87\xa5\xcf5o\
+X\xfa\xfe1\xc9>YA}\x81p\xc3&\x8e\xdf\x00\
+\x12\xed\x1bC\xebO\xe6\xdaI\xd7\xe9\x95\x93\xad\x94^\
+\xf7\xf9\xc9BVs\xc3\xb0\x12\xb8\xd0\x8a\xe2\xe7\xab\xc2\
+\xc1\xe8\x07a%\xe1g\xce\x8b(\x90\x9d^\xb8WL\
+\xaa+\x99T8\x14\xfac\x93\x1dW\xed/\x0a@\xb3\
+\x0a\xc0^%\xa0u\xcb\x8d\xd6\xa3\xf7\x03\xfc\x09\x029\
+\xc6\x1d\xff\x8dy\x8b?\x0b\x92m3\xc9\xcc\x0a\x89\x87\
+\x1a\xc0\xe4uaU\xc2\x90\xd6;\xce\x09\xfc4\x10\xac\
+\x04\xa0 \x1bo\xd3\xf8K\x95\xc3*9j\xb1\x04\xd9\
+\xe4y\x81\x9fH\xa2\x96\xf3\x01?\x1b\xff\x98\x04\x1c~\
+RC\x9amh7\x09\x02\x90\x03$\x9c\x84@0\xc2\
+\x0b\x889\x89\x1dZ\xacy_*\xf6 \xe1\x848\xcb\
+\x05\xde\x93\x0aw\x91IP\xf1\x8bx\x1e\xf8\xc1\x14\x98\
+\x16|&b\x99\x16.\x12\x8e\x8e\x9bZ9<\xfc\x0e\
+\xfce\x105\xec\x17\xfc\x1dl\xfd\x90\x11Ry'\x01\
+@K(*\x17\x04\xf2$b\xf9\xbc\xc8\xd9\x12\x1f\xb2\
+\xbf5\xc8n\xabC\xd0R\x80\xdf\xce\xfaoT\xd9(\
+\x88#\xff\xee\xe7\xcf\xe7h\xf7\x0b\xde\xef\xb14\xdb\x1e\
+\xab\x10\x09\xf8\x95|n\xe2\x0b\x90\xbeR\xb71\x92\x80\
+V\x1c\xde\x07RH\xf9\x873\xd3\x8f$K\x13\xba\xfb\
+C\xb2\x9bJ\xc5<\x03\x13\x0f\xd4D\xb9\xadd\xea2\
+9\xd0\xc1\x05jE\xe5.g\x02?\xa6@o\xcd\x01\
+\x12\x92\x91\x04\xc1B\xbfH\xb5\xd1\x13\xf8\xb2@\xa9\xf4\
+\xe2\xb0S)W\x05\xd9\x90\x1022\x04\xa2q|T\
+\xb2|L\xfcn\xcd\xb0jC\x16\x1b\xacIaD\xca\
+\x02[4$\x87\x93-\x92\xbd&Cr\xf3\x06C&\
+\xd2\x95i\xc8N\x080 \xe3#s\x83\xac\x10\xbd\x1a\
+m\xa0\x07Y\x0c\x10\xe3\xcd\x95\xd1\xa6\x02\x01\xe4\x85L\
+\xd5\xba\xaaH\x11`\x90iba<O=73r\
+\xe4\x1b\x16\xe3\x14\xfc\x0f\x10qZ\x00p\xb4\xa9\xf4\x92\
+X `\xc3\x01\xe1\xbe\x09\x1c\xdb\x1e&9\xe8\x93[\
+\xc3*\x95\x01&\x1a\x81`S\x195\x9b\xf7\x86\x22!\
+$\x80\x5cN\xac\xe4\xbf\x1aX~S`?\x90\x9c-\
+\xa0\x0d\x83\xd7#\x812k\xb4`>\xe8#\x90\xdf\xb8\
+\x22\x13\xa4\x87\x1b\x16\xf6W\xaa\x02]T\x17\x06\xa8'\
+\x5c\x0e+4-\x02T\xe8\xe5 Yf\x8f\x0a:\xd7\
+\xc7t\x00\xf0y9\x10\x9a\x05V%\x22\x06\xc7\x9f\x03\
+\x88\x00\x1a\x07\x88\xe7J\x0f\x13\xfa\xea\xa8#\xf0\xdcH\
+`\xf0\xfa\x92#2T\x8e\x8dG\x8e\xa03\xba$\xce\
+p\xbc8\xb8a\xdf\xc71\xd1F\x0c\x14\xd9\x01\xbcz\
+\xec\xfc:\x04h\x82\xdeW-!\x03B\x80u\xcc\xf3\
+e|\x99O\xf4\xea\xaa\xf2i\xc7\x84\xbf\x87\xf5\x1b(\
+\x16\x19iH\xf7 \x89\xa1\xc5\x81@\x9a\x1eq\xd6\xa9\
+\xf6\x15\x93\x0e\xe9\xf7]I\x17[\xac\xe5\xf6x\x1eT\
+\x06`k\x16I\x953\xf4 \x08 +\x05\x9a\xc8\xe7\
+D\xf7\x18\xf2F\xc9\xd0Y\xb6\x05D\x03\xf3\x91\xe7\xa9\
+\xf9\xd5\xad\x1cV\x05\xe8@\x8f\x91\x9bZ6\xacb\xf9\
+%\xa1C\xcf#\xfb\x12\x07\x10\xeb\x90\x1ef8U4\
+?I\xa8e\x08\xea\x02\xf9\xf7\x07\x0e\x98P\xc5\x0e\xc8\
+\xfbij=\x00\xf9\xa1\x80\xdePv\x02~}\x9e|\
+\x1eM\xaa\xf1\x14D\x14\xe4\x94[+\xd4\xb3j(1\
+\x89\x01\xcd7WZ\x05)\x8c\x06\xb2,\xe7'\xa4\x06\
+\x95\xc4n\x81\xb0\xc2!A\x0f \xe4M\xb0rgr\
+\xb9\x03+v\xe0\x22\xc73\x9c/\xcc7\xed\xd7\xfd\xb7\
+\x93Eba\xd7d\xbb\x15\x07\x81\xd6\x85~\x8f\xb0R\
+\x016Y\xdd\xaa\xd2\xfb\xbem8\xe8\xfb\xab\xfb\xab\xfa\
+\xab32\xe0\xb4L\x8aGo'\x09^\xf6#\x10?\
+\x92\x1b$p\x22\xc1nh\xae\x90\x07\xdd\x1da\x22\x05\
+zM\x81Z[mA\xd0\x7f\xe6\xbf!\xd6\xe20\x98\
+\xbc<\xacp\xf0\x98U|\x8b\xa1\x97\x15=\xe4\xfe\xe8\
+\xb0\xca\x91\xe29\xab\x15b\xb2\x95\xe4(\x81\xda\x02\x8d\
+\xde<\xac\xb0\xb7\x9b+B\xba\xf7\xfd\xbb\xc3\xca\xefw\
+/\x08K\xdb\xe3\xb5a\xe9\xebk\xc3\xd2\xf2\xb8=,\
+\xfd\xfe\xd7\xc2\xd2\xf5\xd5a\x95#\x8b\xe3D\xa5R\x89\
+;\x02v\xa0\xa9 \x17H\xc0MV\x0c+\xb2|\xfd\
+_\xc3\xaa}X\x01\x22\x0eW\xff\xeb\xb0B\xe2\x87\x03\
+=g\x1c\x96\xae\x17\x85\xa5\x9f\xbf#,]\x7f\x1fV\
+\x05\x18\x22\x9f\x83\x05\xbc;:\xac\xac\x1f\xf4\xdd\xe9\xc5\
+Na\xf9@\xf2\x08\xb2A\x81\xd3\xd4\x16R_ \xa1\
+\xaa\xf3\xcd~\x0d\x10\xecp\x1f\x1f*P\xfa\xdczy\
+\x9c\xe6\xd5\x17+\x99\xb5\xaff\x1e\xf3\xe2Wi\xff\xcc\
+\xfe\xd0\x169`:!\xcb\xe7\xdd\x91YxJ\xab\x16\
+2\xab \x85H|n#\x087\xe7\x0d\xfb\xa1H\xff\
+hE\xe8\xdf\x16V\xb1Vk^\xc1\x9d\xe1\x8a'\x15\
+R\x15\x98\xacw\x7f\xe9\xe0\xbfu\x1f\xea\xf6\xe9\xf6)\
+\xadJ\x93YaJ\xe8F\xc2\xf4\xd1d\x8f\x98\x13\xe1\
+\xfa\x00\x00 \x00IDATU\x95\xf8\x08\xa8\xd3\xfd\
+\x8f\x0f\x0bK\xcf\xed\xb3\xc9\xd2:\x99ssX\xfa\xfe\
+\xb7\x92\xa5y\xd5\xff(\xac\xb4j\x80\xa4t\xa0\xc5\xf9\
+\xa6\x80\x8d\x0a\x9cI[\xe9E&`!\xc0\x22Q\x02\
+\xb2J\x1c\x11\x19y\xb0ME\x86\xaa\x82\x0e\x9c\x22\xa3\
+?\x84U\x09`q\xa3\x18\x81\x81\xdf\xa2\xd6\xa9\x8c\xa0\
+\x89D\xf3\xe7\xb3\x19Z\x9f\x13\x98\x1f*\x89\xb7\x8c\xc3\
+;<\x8d\xe3\xc7\x93\xa5\xf1\xe8\x8e\x18\xd8\xfd3\x92\xe3\
+\xa2\x0a\xd1G\x01\x83\x8a\xb6H\xf0 \x0bM{\xce@\
+R\xaaDO\xdeWNQ\x22m\xed\x0aq\x01\x87\x8d\
+\xd6/-]\xfd\xcea\x159\xa8\x02\x1bs\x1f\x08Y\
+a\xd9>\x05\x9a9\xf1qL\xa5\xc2\xa0\xe7\x9fv\x9f\
+W\xc4\xfec\x9d{\x0ax\xf8!\x8b\xeb\xbc>}H\
+|gR\xb6\x97UHNz\xe7\x09h\xf1\xe3\xd4\x02\
+\x99\xeef\x80\xa6\xab\x85\xca\xaa]\xe2\x0c\xc8\xf1\xd2j\
+\xd5\xf9N\x85\x5c\xf2\x8fN\xa4\xe2_\x13\xc7\x90x\xc6\
+/\x13\xc7\x84\xfd1\xe2 \xce\x7f\x02l\x0a\x18p\xc6\
+\xa8\x05\xc3-\x0c\xe2\xfc\xb0\xfa\x88\xfcq\xb7:S\xd9\
+'q\x06I\x1f~\x9f\x0a`\xae \xef\x12V\x05\xaa\
+T\xf2\xf9\x9c7\x0f\xad\xbb\xfe\xfb\xf6\xf3\xe2\xe7\xc1\x8e\
+\xcf\xf7\xd9\xcf[R\xbe\xa6\x12\xef\xc4<H\x0c\xe2K\
+%\x0c\xdcB\xca~Nk\x0c\xfe*\xfe\x1a\x85^\xe2\
+ \xbe\xcf\xf3&\xae\x02\xd1A\x82\x82\xc4D\xdb\x22\xca\
+\x95\xbfo\xe2\x8b\xb6\xa5|\xaeV\x8c\xf6\xf5\xf9\x9a8\
+\x83\x83\x1a?\x5c\x7fg\xc4<\x5ct Q\xdbD\x0f\
+\xef\xa7\xe763\xfd\xaf\xb0\xaaw\x8e?\x08\xf7p\xfe\
+\x8a\x14I\x1bQ\xeel\xf9\x88n\xa4\xafX\xb3\xa3\xe2\
+p^\x15\xe0D]\xfaHm\x80\xebT\x81L,\xbf\
+\xa7K\xa5\xcf\x81:\x03\x0c\x09\x9b\xc8\xa9\xfc\x81\x0b{\
+\xfcpP\x01\xc9\xa3\x17\x9f\x80\x0b\x07^\x10,H\x10\
+\xcc\xa6\xb9\xb9\x02CX\xf3W\x10K\xa8\x1c$6l\
+W0\xaeS\xe0J\xcf&\x81&\x01\x22\x10-!\x18\
+,\x0fH\x06\x8c\x00\xbf\xd5\x9f\xa7Wf\xd4\xc8\x1c\xae\
+\xa4\xcc\xd5\x9d\x22[{\xd2\x95\xe6a\x83\xc1a\xe5\xf5\
+x\xa08\xfa\xe3\x86\x9d\x9e\x05\x85\xeed\xc3\xe2\x8d\xbc\
+\x98+$w\x0f\xa4D\xc1\x85\x9d\x1d\xf5i\xd8\xb2\xf4\
+\x8f\xf7gCG6\x8c^o2}-\x0b(\x0b\x8c\
+\xcf\xc38\xb0\x00IL\x90\x89\xc31f\x01\xb2\xa0\x16\
+\xcf\xf4{s/TH\xf9\x18G\xb5\x04\xa4\xf7|\xe6\
+\x82\x5c\xea\x99\xb2 \xbe_6\x96v|\x08d\xcau\
+\xf8>\xea\x04\xad\x0a\x00\xe3Of\x8ey\xdbr \xb0\
+\xce\x98\xff\x8c+\xe4\x98\x82:\xb9\x95`\x95\x86\x04\x92\
+\x84\x0d\x1b+\x81\xa0\x1c\x7fW\xb0\x19g\x1dd\x0e@\
+\xd1\xa5\x07\x1a\xaf\x84@t4GO3?'ps\
++\x0c\x9f\x87\xfb\xe1\xf5\xd9\x90\x1b\x19?C\x9ah-\
+hZ\x13\xd8\xb8\x0c\x91g\xe3#1\xc8?\x9e\x13\x9f\
+\x1b\x84\x0b\x0912\xf1p\x1c\xc0Y r>CJ\
+\xe9M\xa4\xc2\x0c\x87\x00\xeb\x1b\xc7K=\xa4\xb9\x97r\
+\xfb\x8a\x04\x92\x8d\x94\x83\x96\x96!\xe9-\xb3\x0e\xbb\xa5\
+\xc3\xaa@\x93\x03\x1aG\x99\x96\x08zh\x09\x84U\xd9\
+\xb7\xce:\xcf\x03\x99@\x1c\x12 \x95\x90\xa61\xefH\
+,\x08Zl\x87\xed\xa1a\x9d\xf7\x8f\x87\xa5\xfb\x9b/\
+\xacJ\x18\xc0\x01s\x82\xc8\x19a\xd5_J\x89^\x1d\
+\xec\xaep\x8bL\xd2\xad\x05\x221\xcc\xbd\xd0\xabT2\
+q\xb4\x1c\x81,\x89^\xe1\xdf\x146\xdb\x9c\xd6\x09\xf2\
+\xa9K\x93]\xa2\x9e\xed[\xe5\xf0\xdeXZ\x1d\x18\xcf\
+n&L2`'W\x81\xfb\xb1\xd9J\x02h\x81\xec\
+\x8a\x0d\xf3s\xa6B\x8aE\x98|Z\xe9\xbd7\x02M\
+P\xcf\xee\x9b\xc9\xce\xae\xf4\xd3\xa3\x82\xbc\x89Z\xc8\x8e\
+\xc9\x0e\xf8\xee\xa3\xdd\x8b\xdc\x11d\x96\x93\xcf\x86U:\
+\xd7r\x90\xbb[\xba[\xbb[J\xe0\xe7\xc0\xfc\x9d\xea\
+\xb9\x86\x14HPO'\x8cx\xce\x90=\x82\xcc\x22!\
+\xc4\xbc\xa6\x027\x09\xab\xe6\x89\x1cv\x02\x9e\xcc*\xfe\
+\x81\xaa\x82\xa9\xca\x85\x1dgU&\x92[;8\xda\xb0\
+\x97\xc3\xd2N\xe5\x8f}\x8b\xfd\x1a\x0e\x0dX\x87\x91\x89\
+To9\x8e\xa4\xa1\x9br\xc4\x8d4\x90\x0eywP\
+X\xban\x12\x96\x1e\xdbG\xc3\xd2}\xff#,m\xaf\
++\x84\xa5\xdf\x7f\x7fXu\xce\xb3\xcfj\x1f\x03\x1aK\
+k\x0bl\xd7 \x0e\x1c\xd8R\xb8\x90>\xb6!\xf2$\
+F\x14\x90\xb9\x07\x9b\x80\x96\x8a\xa0*\xb1\xfdZa\xe9\
+\xfa\xd6\xb0t\xfdcX\x96\xc3K\x96\xae\x07\x0e\xac\xf8\
+f\xfd\x96\xdf\x93e\xe5\xd2\xf96\xfd\xee\xb0B\x9ak\
+d\x12\xc8\xcbSG\xa7\x8dN\xcb\x90\xed\xa1r\xa5\xf9\
+a\x84\xc7f\x92\xa5\x02\xfa\x8f\xfca03\x1dZ\xad\
+3\xed\x0b8\xee8\xc4\xe6\x22\xd1:r\x85O\x89\xbb\
+\xfe\x17)\x00\xfbE\x91\x1dD_\xdd\xfb?\xe7\x0a\xbd\
+\xaf\xcfW\xa2\x0c\xae\x01%N\xa9\xdcZ\x8e\xebCa\
+\x19I\x93\xf7\x8d\xc9\xb7T\x89\xa3\xb7\x9c\xdeqZ\x12\
+\x94\x00\x98ZO\xe7\x152\x8c\xbb\x0cH%\xb76P\
+`\x22\xf0\x8b]q\x8e\xce\x8dYJlEk\xc5\x06\
+\xc9\xd2\xba\x1b?\x15\x96\xbe>+\xd9\xd7\xa5Vpo\
+i\x85r\x0b\x1b\xc80A\xa9\xfdyA\xd6\xa0\xd2B\
+\xab\xe9i\xd9\xca~O\x00\xadD\xd5\xe8Ga\xe9\xba\
+zX\x9a\xf7\x9f\x09+\xef\x0b\xc4\x18\x19@#\x9f\x94\
+\xd0\xb3|\xb0\xc8\xd8@\xd6t\xdf\x0bK\x9f\xe3\xdc\xb0\
+*\xe0a\xdfC\xeeV\xdc\x0a\x96\xd3F]\x06n\x9e\
+\xef+\x01N\x05sf4\xcfh\x9e\x8c4\x1c\xfe>\
+X\xf6\xff\xaf\x9a_b\xc1\x9f|br\xe4\xe4H\xf9\
+OO\x14RqC\xba/\x10+}|\x9a\x0b4\xae\
+?)\x89\x93\xf1EaUk\x9a\x10\x1d&\xcd\xd4>\
+\x02\xa7\x96\x912\xbbM\xde\x9e!\xf1\x8d\xfc8Pz\
+\x93T\x12\x98\xd3\xaa\xf0\x1a\x91\x0fo\xaf\xf3X\x9cJ\
+F>\xa0\x1aEb\x15\x99\xbbcT\x89\xd7\xfegR\
+@\xfc\x03!\x1e\xdc\xfa\xd1\x90};\x11M`GA\
+\x8e\x96_\xf9Y\xa8K\x10\xe8\xa7O\x99,]\xdf\x1c\
+\xf6_z\xd2\x89;hi\xc3\xef\x05!\xcc\xfd!#\
+x\xf6@F\x8b\xbf\x07w\x8c\xe7/\xfe;du \
+R\x1a\x8e)\xc7}\xb48@:Nb\x9b\x82.\xe3\
+\xa2\xfd\x93\xc4\xbde\xa8\x89c\xf0\x97\x19\x1f\xe61\xfe\
+\x0c\xfe9\xcf\x9b\xb8\x01\x7f\x94\xd6\x03\xfc\xa0Y\x8d\x1c\
+8\xfe~](\x9e\xf5_\xfc\xcc\xd2b<\x5c\x1b\xff\
+\x1b2e#\x01\x18o\xee\x97\xf7\xe1s\x910!P\
+\xa7\xa2\xafx\xd0\xa4\xd4\x14~o\x1b\x0a\xf0sqE\
+\xe8\xdc32\x12?\x01\x7f\x88\xc4\x0b\x89\x80\x96\x0cQ\
+\x05\xdc\x99\x5cw\xbe[\x0e\xf4\xcd\x0ad\xc6\xffE\x1e\
+a\xf5\xdcE^*u\x0bf\x019\xb3\xf3:\x03J\
+\xa5\x92\x80\x00\xe8\x05\xbd\x0a\xf4\xd4\xd1#\xcc\xc0\x00\xe5\
+C\x9f\x9c\xbf[\x22+\xd3O!W\xe8\x07\xc4\x03i\
+I\xe8\x98\x08\xb0\xbcS)Uo\xa7\xe5\x8e\xa8\xd4\x13\
+\xc8\xcdh\xe2\x00\xc5\x91\x83e\x96W\xe9\x88\xa2\xd7i\
+=n2\xb2T\x12\xe9ag\x02\x01\x1dg<\x09|\
+.\xd7\xc6\xb2\x9e\xc6eS!\x02$w\x07D\xdb\x13\
+\x5c\x81l0(d(=\x09\x13&\x06\x0b\x1eR=\
+2\x99\x92\xf91T|^M\xa060e\x1c\xc8\xb8\
+C\xd2\x02D\xf1QU\xbc\xdb\x8a8=\xfa$\x02X\
+\xf8\x04\xc4+5\x1c\x01-\xd9\x1e\xd0\xd6e\x07H_\
+\xda\xa4\x86\x8av\xe9\xb9\x1f\x9e+\xcf\x9d\xd7\x99O\x01\
+)\x1b\x0f\xd0|\xe4\x1d\x19\x8f\xc7t\x9f8p\xbd\x12\
+J8\x8e\xad\xec \xf3\xb1\x85\xe6\xf05?\x7f\xb2I\
+p\x90 `\xe1\xb3\xd0\xf9\x9a\xde|\x16.d\x92$\
+N\xb8_^\x8f\x8d\x86\xd7\x05\xf2\x05\xd4\x88\xdet\xf5\
+\x9c\x01\x15\xf5?\xc8\xa9\xd0\xe9\xde#\xacT\x04,\x97\
+\x16\x5c\x19\xd7\x96\x9eJ\xb7\xc8\x00]\xc6\xa1\xe2\x00\xe3\
+y\x12\x90\x00\x11\x93\xce\xb7\xa1\xdf\xc8M\x22\xa3\x09d\
+\x9e\xbf'qE@\x0eD\x94\x1e09\xde\x0e\x80\x19\
+\x07\x0e\x04\xae\xfc\x03\x89C\xe5\x5c\x1b?\xd05\xa0\xab\
+\x86n\x0b\x09`\xbd]Z\x8f\xe8E\xc6\xb1\xd581\
+\x0e\xaeT\x13\xa0\xf1>\xd2#\x86\xe5\xdc\x07\xdb>a\
+e~\xb3\xbf\xb9w:8T.\xaf\x0eh\x12\x90\xec\
+;\xaa\x9c\x91p\xb4C\xad\xf95\xfa\x9e\x12\x17r\x8c\
+\xa7\xd6\xd0\xbe\x09G\x04z\xf5\xeb\x0d\xdc\x19A\xc5\x95\
+\xa1\xe3\xd7\x0c\xcf\x1d\xa8\xa7\x1d\x8f\xdb\x15\xe0\xa1\xaf\xfd\
+X\xc6\xbc\x84L\xdd-90\x8f^\xfeS\x8a<\x1c\
+\x0ej\xf7\xab\xb0\x12\x98\x8f\x1eI\x16P\xba\x8f&;\
+\xa4\xea\xd5\xfe\xce\xc0>=Zw`\xe1v\x0b\x84Z\
+A\xe0\x88\x80\xd4\x8f\x80i\xfa\xec\xb0\x5c\xa1JV\x91\
+\x0b\x82x\xda3\x9b\xf7g\xf4\xaf\x0d\xf9_<\xa7\x0e\
+\x1d\xc8\xe7\xe36*\xaf\xaf\x09S\xa5\xf0Q\xf5\xde\xae\
+Y\xb1M\xcb\xe1\xe2\xfc\xe8\x17\xe8\xe7\xef\xe7\xcf\xf3q\
+h\xc193,\xbd\xce\x1ea\x05\xe2\xdd\xff \xac\x22\
+}R\xc2\xc7dd8\xde$\xdeH\xa00\x8f\xd4\xe3\
+n\xa4\x0e\x01\xda\xcaC\x05}2\x1dV\xd4z@\xa6\
+\x00\x857\xfbyS\xe9\xb3\x1a\x0dPR8\x17\xd0\xdd\
+\xfeXXv\xd0\x87\x0a\xbb*\x8c\x0el\x90\xed\x13\x12\
+nr\xcd\x00\x91\x04\x92\xef\x96@\xc8\xb9\xf4\xdc\xe9\xdd\
+\xa5\x82\x0e\x82\xa3_\x22,\x1d#\x9f\x18t\xeb\xe1x\
+\x012\xd9\xfd+\xac\xb4xP\x18\xc8-~]\xe5\x90\
+k\x5c\xc7G\x87\xa5\xd7=8\xacJ,\xaa\xc2E%\
+\xb5\xffIXq\xf0\x09P\xc6W\x85U\xd0\xfby\xc2\
+*$\x1b\xc8\x00!\x18\xfb\x1f\x87\x15\xee\x84\xfe\xd0\xb0\
+Ra\xef\x8f\x08+\xeaBN\xec\xee\x1fV\x1c\xfb\xe9\
+\xbf\x85U\xf3_\xfbq\xb7\xe5\xb0\xee\xfb\x03\xc5\xf9A\
+\x02\x80D!\xbf\x0f\x99\x99T\x9b&{\x87U\x8ev\
+\xcc\xf7\x9f\x97s\x01\x8e\x00 \xe8\xec+\xd6K\x17{\
+=\x89\xab~\xfb\xb0t=.,\xaf\x83d\x05\x91\xd1\
+_\x1eV\x12\x22\x13\xa0\xfc/\x17{?*3z\x1e\
+p\xd7\xa40f`\xc9'\x00\xb9',\xbd\xce\xa5a\
+\xa5\xb7\x1c\xe4\x0dl\xeb\x93\x93\x87D\x05\x10d\xb7\x84\
+\xc8\xeft\xa5\x19}u% \xfaU\x93\xa5\xf1\x1e\xbf\
+;L\xad.KW\xbd\xd3T\xe0Id\xe3\x87\x80\xe0\
+:.,\xfd\xfe>a\xda\xdf>Z!\xc5t\xae[\
+UB\x89\xe6\xeeea\xd5\xb9\xa9s\xbe\xdf-\xac*\
+\x90P)$A\x8d\xac\xdf\x0e\x0a\xf8\x08\xd0iyc\
+\xdf\x93\xdfM\x22{\xfaUaU\x00J\xc2\x93\xf1h\
+T~\xfc\xf9a\xb5\xff\xaa8\xb7\x14\x98sn[\xfd\
+\xe4/C\xe2\xd7$\xe0\x9c\xe3\x0f\xa9\xc0\xb1\xbd\x10\xbe\
+\xec\xcf\xf8\xeb\x14\x8e(\xb8\x814\xde#}\x8a=\x8a\
+\xff\xd0o\x1eVq=@f\x07\x12C2\x9a~\xfd\
+W\x0c\x85J\x93\x9f\x22\xd3\x88|*\xfe\x02\x89C\x10\
+\x11<\xbf\x87\xc4~\xaf\x9ey\xef\xbb<WH\x1a\xe5\
+?M\xce\x0e+\xec\xef\xde\x0f\xe9\xcdG\x16P\x05\x04\
+\x9f\xdb\xa8\x05\xe1O~<[y=\x0a \xc8\x19C\
+b)\x04\x89\x91;\x22\xebt\xc1\x07\xb9D!\xaeL\
+\x8aJ\x81\x0a\x7f\xb7\x9dg\x90P+N0\x97\x01\x89\
+\x04T7\x90\x1f$\x91\x07\xd7\x01\xeaT\xf8\xd7\xc4\x1d\
+T\xa4\xf9<\xf8\xe9\xbc?\x89j\x12\xc4$\xf8(H\
+\xdc\xfbL\xb9o'\x90\xa8|\xf3\x0f\xbf\x90B\x0bq\
+\x1d\xfe<\xdf'0\x06\xa1@\x0b\x09HO\xfcQ\xfc\
+p\xc6\x8d8\x89\x7f|\x0e\x0ab\x5c\x09\xcc\x89O\x88\
+\xfb\x14/\xb0\xff;\x91\xce\xfbq\xae_\x9c\xf6\xaf\x8b\
++d\x1b\xf1#H\xe3\x16\xca\xcf}\xf0\x1c\x89\xe3@\
+\x12\xd0\x9a\x84\x1f\xc8\xe7\xa5P\xa6\xf5:\xa3\xf0\xa7l\
+tq\xdb\xd3\xd5\x07` \x91\xe3\x88^\xd8\x17\xa9\xa2\
+\xbfZ\x15\xc8E\xbdg\x0bU\xca^\xa4\xef\xaf\x5c\x91\
+\xe3\x01%\x8aN\xe5C\xb4a\xbd\xa0\xca\x98\x10\xd0\x12\
+\xe8P\xf9%\x91\x00\x84z\xf1\xa6\xd2K\xe6\x8c\xbf\xd7\
+\x06\xebJ<\x0b\x1e\xa8\x0b\xbd\xe68\xbc/\x10\xe9\x16\
+\x95\xce\xc2\x968@\xe8\xd5\x03\xe9\xcc\x17\x19%\xe9\xcc\
+{\xa3Q\x0f-\x95A*\x0fF\x00\x90Ha\x82P\
+!\xdbL:\xack\xaa\xe2\x8d\xbe\xfc\x1d\x0d\xc9\x06\x95\
+= !\xed\xf3\xa1\xc7\x97\x8c\x12\xd0\x18\x16\xf0MC\
+\xc64\xbd\xc7\x00\xe1\x84\xa4\x91\x09\xce\x04f\xa3f\xfc\
+\xc7Me\xfb\xa9\x06I@\xa0\xcf\xfb\xd0C\xb3\x91~\
+^\x9e\xd3\xf0\xfcx^$nPI\xb8o\xc8\xe4Z\
+f\x8e\xe7\xce\x84g\x82\x97\x00}\xb8\x96\xc0p8X\
+x\x1d\x12\x1e\xcb\xea\xfdX@\xfc>\xaf\xd3f\x1c\xdb\
+\xde\x9c\x16\xc9\xd0&L\x08\xf0Y\xd0\xca\xb0\x02\x81\x82\
+L\xd3\x01=\x1b\x122\x86p$p\xbf\xac\x07\xe4X\
+\xd4{G\x00\xef\x0a\x0d\xcf\x1f\xa4\x04\xbd\xdd\xcc;\x10\
+6$\x5c\xf8}\xd6\x09\xe3\xcfsTe\xce\x013\x09\
+:\xe6\x1d\x099%\xd8\x9c\xf0\x83\xad\xfe\xa4l\x85M\
+z}\x07\xa4\xc3\xfd\x09\xb2\xe6\x00\x1d\x07\x8bL7\xe4\
+\x8d\xaa\xd4\x19b\xcf\x86L\x02\x85\x1e\xf9\xf7\x86U\xd0\
+/\xc6\x9f\xfb\xc5\xc1A\xeeJ\x07=\x09\x0f\x1f\x5c\x04\
+4l\xbcdNA,\x01\xb1\x03\x02\xcd\xf7A\x06\x90\
+Y\xe5\x80\xc1\xd1`\x1fa]\x01\xc9g}\x01%\x14\
+t\xdf\xbd\xb28j\xf44Rq\x22 T\x8f\x1b\xbd\
+\x8c^\x7f K@\x16\xb1O\x82\xbc\xd8T\x5c\x0cb\
+\xe9\xf6\xfe@\xc6\x5c\xf2G\xb9\xf2\xf2\xb9*AA\x8f\
+\xbbH\x0b\xa7\xdf\x1b\x96Y\xef\xdf\x13$Q \x052\
+\x14\x7f~U\xa4/\x97\x9cb:\xe8\xbbC\xc3*D\
+\xd6\x12\x81)(\xec\xfdY\x9f\xfe'\xa5\x17\x99\xf7u\
+O>z\xcb@\x06\xe9-V\xef:\xbdl\xf4V\xf6\
+\xc7\x84U\x8e\x8dX\x9d\xbb\xc5\xc3\xd2u\xc9dKT\
+r\xb71\x0b\xf6\xa9\x9e\x13l\xc8\xb4\xbe\x08a\x83\xee\
+:\x95\xb7n1\xbd\x1e\xf2w;\x0c*\x00\xdd\xe1a\
+i\x9c\x16\x0e\xab*x\x92\x91\xb2\x0a\xc3h\x98\x1e\xe6\
+\xb6\x00\xe2\x09\x22@\xd3\x87\x807\xab6\xdc\x92!\xe3\
+\x83\x9a\xc3\x95C\x051\x7f\x8e'K\xa0\xe4\xc0\x92D\
+\xf8\x13\x99%\xc5\xe7\x9f{\x5cQ;R%\xcd\xfb\xd6\
+\x87\xc3\xb2\x03:8\xf4 _\x80.S\x89\x22!\x8e\
+J\x04\xfb\x22\x8e\xb0*o\xfdo\xc3J\xebN\xbfr\
+X:N>\x1aV%\xd0\xc5u0~(\xacp\x15\
+X\x8eW\x8eZ\xb7\x5cXz\x9d\xab\xc2\xaa\x80\xe1\xde\
+\xb0\x8a\xdc\x92}\x10RB\xf4\xe1\x09\x14\x91aS+\
+\xa0\x91\x00\xb4B\x80\x08\xd0\xfe\xeb\xdf[5\xac o\
+`W\xef?\x14\x96\xbe>*,}=\xff\x90(\xea\
+\x9f\x08S\xab\xcdc\xb9\xd2\x9d,\xefc\xc3\xbcV\xab\
+Zt\xbcG\xcf{\xb7MXr\xcc\xbe\x16Vz\xfd\
+\xbb\xa3\x86\x96\x81\xc9\xa2a9\xd16\xb0\xe3\x8f\xc3\xd2\
+\xcf\xbf\x18\x96~\x7f\x930\xad\x97\xbd\xab\xf3W\x8e\xbd\
+\xc9\x19\x91\xcd\x13\xd7\x81?\x878\x13\x90%\x04Q`\
+\xd2\xc1\x9b\xc3\xd2\xf5\xb9aU\xa5\xff\x05\x034\x9b\x0a\
+u\xb7\x96\xf6\xd1\xe7\x0f\x89\x8a\xc9\xb9BL\x1c\x1eV\
+\x05\xb8\xf4d#g\xa6\x8agK\xe2\xdb\x7f\xa9\xffr\
+\xff\xe5\x1c\xd8g\xb5\x8a\xc9\xca\x03\xfb>\x09\x9c\xfe\xae\
+0Ud\xaf.\xe4\x91\x99c\xe3!A\xed\x93\xbf5\
+~c\xb2t?\xfd\xab\x92E@\xf9\xfa\xb0\x8a\x14\x12\
+\x7f\x88\xc4\xfa\x91CE\xdbj\x04\x82\xac{\x1eh\x9e\
+\xfb\x1c\x95\x7fc\xe8\xbe*\xeb&=#\xb0\x93\xec\x9f\
+\xd5A\x94H\xf4\xbe\xcf\xbe\x0d\xdb\xff\x99C`\x1a\xda\
+\x07Y\xfd\x80\x80\x90D\x04d\xb8 \xfah\x95\x10\xd9\
+ \xcf\x1f\xd2O\xf7\xd2\xcb\xafu\xcf\xb3\x0az\xc9G\
+\xb9+\xfb)\xf87\xbf\x16y\xe6\xfb%\xb7G@|\
+\xae\x029*\x90\xec#G\xaa\xe7\x5c\x014\x89\x13\x17\
+\x0cnNv\x8b*\xed\x7f\xc8~J\x96#to8\
+2\x96z\xae\x90\xdbZ~\x97D \x90\xfak\xd4\x92\
+\xc8y\xc6y\x0b\xa4\x1d\x04,\x88A\xe2\x09Z\x03\xb6\
+VbV\x81\xbb9B~\x16V\x9d\xef\xc4\x11\xf8\x8d\
+\xa8\xf8\x88\x14\xd7j*\x04\xb0 \xab\xf9}\xc8#A\
+\x8eh\xdf1\xd2D-K\x86\xfe\x1f5\x90i\x9ae\
+\x9f\x80\x18V\xffS\xf4\xfe\x90\x96#\xf3G\x8b&\xe7\
+\xa8\xf6o\xb3\xea#\xe3\xc7|'\xce\xc0\x9f\xc0_%\
+\xe0&p\xe4\x1ca\x5c@\x92\x82D\xc5\x0f\x01i\x00\
+\x82\x0c\xe4\x18\xf3[~\x14\xfbLV\xb1Y\xf0\xbf\xa8\
+\x07P)\xe7\xf5\xb8R`#\xe0\xc5\xaf'!\x03b\
+\x81\x16#\xd4*hm @\xa6`[Z|\x878\
+\x81y\x8f?\xd7\xaa\xc5\xb5\x08a\xfe\xbe\xe50\xe0k\
+\xde\x87\xf1\xc1_%\x1e\xb8>Em\xd7W\xe3H\xfc\
+\xc5\xf3\xe1>\x98W\x90z\xaa``\x04\x02\xfb=\x85\
+Y\x90\x17\xcc\x03\x90\xabB\x80\xcc\xe4@|\xad*\xe3\
+\xb0@\xee\xbe\xb6N6\xba\xa1\x96\x05\x8c:\xde\xe6\x82\
+t\xa2\xdb\xf9b9\x0ak\xcb\x91yQ\xd9P\x9c\xf1\
+\xa1\x92\x1d\xcb\xae\x0e\xd8\xc9,\x12\x90\xe2h\x93)\xa5\
+b\xc8\xef\xb7\x90p\x12\x13@M\x81\x06\x83\x00 p\
+!Q\xb1\x92^g\xb6\x02\x13z1\x09\xa4\x09t\x09\
+Tu\xdf\xddj\xdd\xea\xdd\xea\x15\xf4\x85\x9e\xf1]\xc4\
+\xe6\xfa\xce\xc9\xee\x93\xdd\x8bLI\x0a:\x06y\xa7\xcf\
+\x0crEN\x04p\x1fd\xaa8\x08q\xc8\x81\x00\xe2\
+\xc0\x93\xe9a\x5c$/\xe2\x9eT2~\x90S\xb4r\
+nlt\xb3Dr'\xa8\xe1\x5c\x10{2\xa9\x0a\xa8\
+\xcc\xba\xfbz\xf5\x1a\xad-\x87\xf2y\x0a\x80Zd\x87\
+\xe4\xa8\xd2k\x0d\x15|\xc8\xe3\x08\xa0\xe8\xd5gA\xd0\
+;\xcd\x02b\xe3f\x03h{\x80\x80\xfepeA\x90\
+\xa9\xfc\xbb\x16.\x01#\x89\x8bi#\x04\x06\xcf\x8e\x0d\
+\xae\x95M\xe4\xda&\x06\xf8=\x1c\x5c\x10\x1c\xaaT\x8c\
+^\xa4^}6,\x16 \x15\xf3\x96$\xa8kZ*\
+\x94X \xc3i6m>W\x93)4\x84\x8e\x8d\x8f\
+q\xa0\xc2\x08\xb4\x1ch\x1e\x8e;\xeb\x85\xf1\x83,H\
+\x0e\x94\x13t\x04\xb8\xac7\xd6-\xe4A@\x05i1\
+\x10\xe4\xda\x81)\x811\x818\xf3\x83\x8a\xedn\xd9J\
+\x85D\xec\xdeN\xfc\x10\x08Q\xd9`\x83\x84;@:\
+\xbe\xb9\x22}K\xf5\x5c\xa8@h\x9c\xdcz\xd0\x90\x0b\
+r\xe0\xba2\xc8z'\x13\x0dI\x98\xa0\xdd&\xb7!\
+S\xcc\x01F\x8f*\xf3\x95\xfd\x82\xf9\xb1kX\x95\xc8\
+\x80\xe3\x83\x0a)\x88\x19t\xe5\xe9\xad\xdfz\xe8\xedu\
+K\x80\x90\x03T\xaa\x8d\xc0\x82\xf4k\x97\xa1\xb7\x1f\xc4\
+A:,\x07\x84\x88\x12\x19\xee!>\x7f\x08\xb0F\x17\
+H\x07\x99\x03\xe1\x85\x92\x13\x8c\x8a\xc7WJo)$\
+\x90\xddya\xa5'{\xba\x0fK_\x9f\x18V\x12'\
+\xdd\xfea\x95\x0e\xfb\xc1\xd2}\x87\xac\x11D\x89\x9e\xeb\
+\xe8\x95\xd2\x99V\xe5{\xfa\xada\xe9\xeb?\x85U\xa4\
+GT,\x15\xf8\x18\x92\x8a\x1a\x04\x8e\x1eH\x139\x08\
+\xdd}a\xe9\xfa\xd2\xb0t\x9d\x13V8'\xba\xcd\xc2\
+\x94\xa8X\xbcZ?p\x1d\x88L3W*\xef\x94\xc3\
+\xbd\x958O\x96\xce\xcf-\x07\x04\xc8\x01N\x1f\x1e\x96\
+\xbe>9\xacJ\x0cl\x11\x96\xae\x7f\x09\xcb\x01l\xe6\
+p\xa0u\x8e\xcc<\xe4\x8d\xfd*aU\x02K\xeb\xbd\
+{*\xac\x9a\x97\xaaxg\xc8\xf2}\xe2xH\x0ea\
+\x7fzX\xfa\xfdu\x92\xad[H\x22sb-\xc80\
+\xe7I6S\x12\x0c\x04\xd0\xd3{\x84U=\xe0\xcfU\
+\xcf\xfe\xf3\xc2\xca\xb8r\xbe\x18Y\xa0D^\x0a#3\
+ky\xdf\x85\xa5\x9f\x1f\x15VT*\x1cP\x01i\x05\
+\xba*\xf2RW\x1aI\x08\xab\x95\xc0\x89FX\xc5\x09\
+\xa4\xa8\x9cP\xb9\xd4yf\x08+\x09C\xd8\xb0EN\
+\xc6\xe7\xeb\x7f\x17Vq\x02\xe0p\xeb\xdc4\x0b\xb8>\
+?,\xfdT\xea\xe0j@\x9e\x0f\xb2\xa8~\xdf0q\
+HD/\xf9\xbb\xc4u0\xbfz\xf4\x17\x9d,2Y\
+\xa4J\xd4#\xeb\xa9\xf3}\xfa\x96\xb0\x22\xcf6\xbdS\
+X\xda\xa6~=\xfe\xcd\xb8\xe2@\xf1sxj\xf4\x9f\
+\xd1\x7f\xcaz\xc8\xbd\xdc\x1f/\x90\xfd,w\x17\xf3n\
+\xdbdi~\xf7W\x86\xa5\xaf\xf7I\xf6\xc1\xca?[\
+6yA\xcb\x16\x87\xbe?*\xac\x22\x0f\x03J\x0a)\
+*\x8e\xa7\xc6\xdb\xf2\x80\x8b\x84\x15G\x13\x12D\xb7\xc0\
+\xec>\xf8IN\xb0\xc0\xa6M\x05\x1b\x04\x16\xa4\xbf\xbc\
+>\xe4V\x87\x84\x95@+\x1a\x16\xa3e\xd1\x90\xedH\
+d\xbcX\xba\xe9\x1b\x17\xf2\xc3\xfe\x8c\xb0\xb9\x13P\xfd\
+:\xc9\xd6\x15R\xe2l\x91V\xbe\xa4\x14vr\xeb\xcc\
+\x07\x0b\xc2btxX\xfa\xbb\x0f\x84\x15\xbf\x05\xc4\x12\
+\xaa/\x96S\x04\xda\xac\x84z\xff\xd1\xb0J\xdd\x05\x19\
+VZ\xf3(4\x90X&\x91\xa9\x163\xfc\x0e*\xfb\
+\xf4:C\xf6\xe8\xf3F\xef\xc7<1d\x1c$\x0b\x01\
+\xa3\x12\xe4F\x9c\x81$$\xb0\x0b\xef\xe12!_>\
+]\xd8\xfas\xc0\xbbg\xf6\xb7\x86\xc0\x07H=\x88+\
+\x02\xe5\x86|\xcd\xfe\xeb\xf2\xd9\xf3.\xfe\xc6$c3\
+\x8b?!(~\xff\xc6\xb0B\xee\xcdya6{T\
+,\xee\x9d\xdc7\xb9\xb7B \xcb\xef\xb5z\x0d\x016\
+\xe3\x0a\xd9*\x95\xed\x1fHM\x81}_2\x9e\xcfh\
+]\xae\xc8\x94\xad\xc3NA\x06U\x10\x15\x1e]\x99'\
+ \xc5\x8fT\xaf\xbc\xb9$Hl\x0by\xec@\x0eh\
+\xbe\xe6\x89\x11\xc1 .v\xcd\x16\x09\x9f!a\x112\
+\xb6\xcb\x14\xb2\xe8\xb9\xe4\xc8\xdb\x16\xd5V\xb6\xb8\x95\xd1\
+#\x80m\xe5\xcay]\xc6\x91\xc4\x0f\x81+\x014\xfe\
+4\xdf\xa7\xa5\x07\x12D\xe2(\xdd\x9f\xb9\xaf %%\
+\xde\xc1\xcf%\xe0\xa6@\x83_H\x82\xa0\x91a7\xeb\
+>\xfe\x1a\x5c$\x90\xf0\xd1\xbaF\xc1\x99\xf1\xe1\xf5\x89\
+\xbb\xf8>\xf1@\x13\x87X%\x82D\x13\xbfG\xa0\xcf\
+x\xf25~=\xad\xbeR\xd3s\xc1\x8e}\x96x\x91\
+\x7f$$\x1ayB\xab\x92\x90\x18\xc1\xcf\xa7E^\x1c\
+pnQ\xe1>5\xee3&\xed\x8bps\xb1\xaar\
+D\x85.\x96\xd1\xd2:(\x16\xaf\x1c]\x02\xfe\xf52\
+\xf8\xb4T0\xf9;\xc8,\x08|\x08\xcc\xa8<\xc2\xba\
+\x0ek9\x0b\x8d\xc0\x9f\x07\xd3&\x02\xb8\xe2\x08B\xfa\
+F@K\xc0B\x05\xf2E\x0a(\xd8\x18\x08\xc0\xe9\x05\
+\x07J\xc5\xebZ\x7f}`\xeb\x1f\x91\x89\x95L\x96\x03\
+4zZ\xd5{\xc9\xc2s\x05\x81\x8d\x87\x85\xb5Q\x03\
+m'\x03\x87\x9c\x19\x8e\xd2\xd1\xca\xf4~C\x1b\x0d\x07\
+\x22\x15Y\x02j\xc83X\x00T\x16I,\x1c4\x90\
+lM\xa9e`\xc4\xdf\xf1y\xa8\x10\x91(\x00\xb2G\
+ \xcf\x02\x1c\xb9r<\x8c\x1b\x7f\xaf\x84\xcd\x08\x07\x9c\
+Js+GH\x80\x86\x03\xc7\xc6\xc8\xf8\xa9\x17\xd0=\
+{\xcc\xafVm@\x0b\xd12{k\x8b\xa3\x80@\x95\
+\x83\x93D\x02-\x1d\xad\xec\x06=9\xed\xc6\xd7\xb2\xb2\
+>\xd6\xb4<\xb0\x80\xc9\x84R\xb9\xbe^\xac\xd6\x90\x1b\
+\x92H\xd3\xd5\x1b\x1b\x813\x1b\x00\x1b)\xefK\xc0\xcc\
+Bg\xbd\xf0u\xab2p\xd33[=\xfc\xb9\x17l\
+\xc8\x13[]T\xf4P\x99?:\xa0,\xd7\xa6\xden\
+g\xc6\x997\xfckd-\xbd\xaeH \xb1\xbe`o\
+\x96\xae\xbbe7\xe1\x06 !\xa0\xde:\x02\x00\x0e~\
+\x93\xfb\x89\xb4nt^X\x95 \xe0y\xab\x92\x91\xd9\
+\x8c\xbf\xf9_dsH0\xd1[\xcas$\xc3\xadL\
+y\x96\x13\xdd??\xc7dU\x82D\xec\xc3T\x1e\xac\
+\xe7{|XE\xd6\xf3\x85\xc9\xc9y\xbd\xef\xa3\x8a2\
+\xadBkg\xe5\xe5\xe2\xd8h=[\x1f}\xde0\x91\
+\xd4\xa5\xf5\xda\xbd7,\xf7\x00gH\xba!\xd8\x92\xbb\
+\xb2\x9a\x0a\xfb\xc9\xde\x03;t\xa85g\xa89\xc8\x19\
+\x02\xe2-\xc5\xce\x0fD\x5c\xe34\xbd\xe2\xf4\x0a\xd3+\
+\x082\xfa}\x91\xf3\xad\xad\x80q\x97\x92`\xc9H\xeb\
+\xb4\xa1M\xef\x96,9\x1c\xdd;\xc2\xd2\xf5\x9cdg\
+\x97\x03\xde\xf7\x7f~X\xba\xae\xdf\xad\xd7\xadWZ\xa3\
+ ]\xc31v\x02\x88u\xc8A\xcf>L\x22\xeb\xa6\
+\xb0J&\x96\xd6\x17\xb5vY\xbe\xea\xa4\xb0\x8a$\xef\
+\x87\xc9~Pz\xf4\x98W\xb95\xe1\x11\x91\x97\xedP\
+\x12\x03A}\x95\xc9\xaf\x94p\xe8\x16M\x16\x08\x86\x9f\
+\x86\xa5\xeb\xd9\xc9\x82}\xfb\xd8d\xc7\xa5\xebNa\x95\
+\xaa\x0b\x15\xf5\xc7\xc3J\xa549\xa6\xf7f\xc7\x14H\
+\xe6F\xe2\x98\x90\xbc\x1e\xf2\xaf\xc8z\xa1V1}L\
+X!o\xccz\xe43\xd5\xb8\x118k\x1d\x8c\x1e\x0c\
++\xaa\x18\xfd\x9d\xc9\x22\x11r\xe7 _\x98!\xb4\xe9\
+\xfc\xc8\xf1y<\xcf\x97$[\xb7\x9cw&\x8b\x02Z\
+\xfa\x89\xa1\x92=\xf9\xb5\xb8\x02n\x09\xab\x020\xc9i\
+\xd1\xe3>u\x86\xf4\xa2\x05\xd56\xe9\x14\xe7\x12\xe71\
+\x09\xd1C\xb3\x15((\x0e\xaf\x12\x03\xfd/\xc3JK\
+\x0dH\x0a'\x82\xd8\x7fXg\x22\x97#1\x02)\xa1\
+\x03\x22 \xe6\xc8\xf4\xd1C\x0c\xf9)\xaaC\xb4\x04\xf1\
+w \x1c\x90\xadEv\x0c\xf5\x04*\xe0\xda\x17\x18\x0f\
+\xe4\xfchere\x9d\x8a\x14\xe7\x07,\xd4\x97k\x1f\
+9\x7fr\xc1\xe4\x82Ry\x9e\x5c2\x04\x0a\xccs\xef\
+\xb7\xec\xff+\xab\x80\x02\x82F\xfeI\xf7\xb7\xb0\xc2\x06\
+\x9e\xdd\x94Qi\xcdr\x8bU$rB\x1e\xef\xfe\xb0\
+\x5c\x89\xfejT\xa2-;\x097\x81d\xcb\xf8\xba\xff\
+EXQ\x91\x81T\x0c\x0e\x0cz\xfa\xe1\xa8\x80}\xbf\
+{\xed\x90\xc8\xec\xaf\xee\xaf\xe9\xaf)\x1cNT\x02I\
+|\xf5+\x84U\x81\xbdZ\x12'\xfb\x0e-\x0bV=\
+\x81\xf4\x0d\xd9\xc3}\x92}P\xad\x17\x87\x17\x8e\x83\xfe\
+\xefa\xe9X<%\xd9\xa9E\xe5\x82V\x84<K\x17\
+\xae\x12, \x914\x9f\xdc\xda\xa5\xc2R\xb7}X\xc5\
+\xed \xb9\xb2\xfe\x81\xb0j=\xaae\x03N)\x93\x80\
+\x22\xf7\x8al+\x01\x11-~\xb0\xb9\xc3\x19\x02\xe7\x14\
+\x09`\x0a]\xf8GJ\xc4\x82,`\xbfqb\x8by\
+\x8d\xbf\x84\x9fK/\xf3\x97\xc22\x22\xe9\xd2\x8cHz\
+z\xe0\xea\xca\xf3\xf3[\xf9\xdc\xc9\xc8\xb0\x9cH\xd8\xa1\
+\xec\xc3\x90\x0fZ\xa5\x02ro\x0228\x07\xc4\xc1\x05\
+\x92\x06\x12X#\x8eoV\x0b\xf2\xe5y%\x14vx\
+\xb8\xa9 E\x8d\x04\xe2b\xa55\xc7\x050\xd4\x1d\xa8\
+L\x13\x87\x90\xf8\x87\xcbC\x057\xb7Fl#$\x05\
+\xaf#\xd6|Z\x04\xbc_\x11\x08\xf2>p\x03 \xc3\
+(2L\x12]\xe6\xa2!\xf1IK\x14\x08=U\xea\
+=\xef\xf1\xb7\x80\xe0\x93\x10@\xc6\x0f\x841\x5c\x14p\
+\xac\xe0\xdf\xe0wm\xa0VB\xe2\x05H\xcb\xa9\x18\xcb\
+\xbf\x8b]&\xf6\x19W\x84)X\xcd\xfb\xcc\xd6Z\xcb\
+\x88C&\xd9\x16\xe4h\xd9TK\xb4\xfdK\xfc-\x9e\
+\x1f?'\xd0\xc5\xaf&\x1e\x02*O\xdc$\x84\xb4\xdf\
+\x8f\xc0\x15\xff\x97\xc4\x02\xa4\xe4\xacc\xd6\x0f\x05F\xee\
+\x03D\x04\xaf\x03\xb2\x01\x7f\x96uE\xe1\x12?\x91\xf8\
+\x13\x7f\x91\xf8\xa1\x913\x9f\xabE\x80\xdf\xe3\xca:m\
+\x90\xa1 \x0a=o\xf1\xf7\xe10 \xb0\xe7~\xf9\xbc\
+\xa8\x1c0\xde\xac7\x9eK\x91=\x7f\x06y\xaf\xe3l\
+\xfd|\xc6\x816\x8e\xe3r\xca\x04G\x18\xb6lU!\
+\xe6J\x80\x07\xb4\x9f\x1ef\x1cR\x02D\x0e|\x1c\x00\
+2B|Me\x9a\x00\x92\xc0\x8f+\xef\xc7\xfdqm\
+\x11\x03|0>(\x0f\x92\xdf_F\x90\xac\xa5\x87\x0c\
+\x997\x06 \x9fp\x0fP\x81\xa45`%m\x98o\
+Q/\x0f\x13\x83\x81e\xa0\x950\xb1\xacJ\xe8M_\
+Y\xd8\x8e\x0d\xb1\x22\x13L\xc6\x0f2\x10\xe4G\xc8\x1c\
+S\x81W\xaf\xb0\xa1\x90 \x03\x80\x8a1\x01\x81\x84\x90\
+IS\x8f\x90e\xa8\xce\xd1\x03_W\x9f\x8b\x04\xc1\x8a\
+\x1a'&$\xbd1\x97\x84\x15d\x84\x11\x05 \x00\x80\
+\xb8\xf1\x9cF\xba\x0f6\x222h\x04h<w\x1c|\
+\x02Q6X\xbe\xcfs\xe3J M\x80\xcb\xefQ!\
+\xbaa\x80\xf8YW\x1eG\x98yAE\x94\xf9\xda\x92\
+\x95\x10 \x93Y\xa4\x92\xcb\x86\xa5\xca\x82\x03\xc2\x02\xc5\
+y\xa6\xcc#\x8e\xbf \x87\xe9\xb7\x87J8\x1b)r\
+cb\x05v\x22\x80D\x1b\x1b\x04\xffx\x9fV\xc6\x8f\
++\x1b\x0e\xf7\x09W\x83\xe4\xc1\x1c\xd0\xcaqr\x0f2\
+\x1b\x84\xc6\xdf*\x0eb\xcf\xb7\xa3\xfa\x8f\xb0\x8a\xdc\x0d\
+\xb2#\x1ck\xcd\x0f'\x0a\xe8u\xe3\xf9\xb0a\x83\xa8\
+\xc1Qg\xde\x11\xc0\x03-&\x11\x04\x8b?\xac\xefT\
+\xfa\xa9\xd4+Qf\xc7\x97^F\xde\xaf}n\xcf\x0d\
+\xab\x1c\x15A\x5c}\x80\xf0\x8f\xf1'\xf0\xa4B\xf2h\
+X\x05\xe1\xa6G\x9f\x0c3H\x01A\xd9]i\x91\x83\
+\xdf\x9d\x11Vz\x10\xad'\x0f\xcb7\x0e\xb6\xa0\x91\xdd\
+\xe7\xc3\x8aC\x9d\xf5\xdc/\xc8\x9fc\xe0\x0e\xa0\xb7{\
+,G\x94\xc0\xff`\xc95~R\xfa\xd8\xe2Xq\x85\
+D\x89\x19C\xfaW\x1a\xad\xd8\x85\xdc\xd3\x03\xdd\xfd\xa1\
+'?\xbd\xd8\xf4\xe2\xd3\x8bW\xa4bz\x0e\x04\xb6\xb9\
+\xd7?\x8dw\xf7\xa6\xb0\xf4\xfd\x1d\x06\xdd{\xeb\x0fS\
+\xe9\xd5\xdfw\xa7\x84U\xaa\x99\x04<:\x1fL\x12G\
+\xaf\x1f\x10{\xb1\xa7w\x17\x86U\x07!\xc8&\xed\xab\
+\x04\x8e\xa3\x0b\xc3*\x87]\x08\x16CMa\xc5\x8f\xdd\
+\xefy\x82^_P\x91\xa4m\x9dA\x9f%\x90{\xc3\
+\xc0f?\xb3TXz\x9d\xbf\x86\xa5\xfb\xf9~X\xfa\
+\xfa?C\xa5\x15u\x04ZH\xfa\xcd\xc2\xaa^k\x10\
+\x0eZ?\xd3\xef\x0f\xab*\xa6o\x94*\xc1\xbf\x95\xd0\
+Pb\x99V\x89\xd1\x05a\xa5g0\x93\xcc\xcf\xa9\xb8\
+\x5cT\xe9\x81\x9b\x85y>\xfa@X%w\xa9\xc4Q\
+NT$Gt\xfa\xc80\x05\xfagHG\xf9j9\
+\x86\x7f\xaf\x1c\x12\x12[\xef\x15g\x8eH\xf8\xc6\x9f\x09\
++\xf7k5\x91\x13\x85p\x03\xa2\x7f\xcb \xe3\xd7\xcf\
+\xeeW\xefC5\xe8\x87a\xc5\x91\xe6\xbe\x81&{\xbf\
+\x91\xbc\x22rz\xdd\xf5a\x85\xb3\x83\x04\xb19\x84H\
+0\x90h\x15\xe2\xc6\xbd\xa4\xe8^C\x1e&(\xa49\
+/\xd8g\x84\x901\xb9\x1d\x90[\x12\x0b\xc8\x17j\xbf\
+\x9cz\x7f\xb6\xc2j\x0fG\xf1ja9\x00\xdby\x12\
+z\xec\xaf\x08K\xdf\xdf)\xac\x90\x04\x9aC@\xd0w\
+#\xed\x08|7\x1d\xe6S\xff\xbe\x81\xecp\xf2\xde\xa1\
+\x97\xdf,\xf6p\x09\x88t\x18\x12<\x10\x07\xe8\xc7S\
+\xa1\xec\xceJv\xa6\xb8\x12\xbeR\xe9\xcb\xef9\xf4\x5c\
+O\x16\x0a\xabZ\x18\x80$\x0brl\x8e\x8a\x95\xc2\xaa\
+\x96\x14q58!'\x8e\x8c\xc9\xb2a\x99\x0bcH\
+\x8c|=\xac\xac\xa7\xd1b\x03\xe2\xc6\x01\x13\x89\xa4\x7f\
+\x85\x15\xee\x0e\x10\x02>\xb7)t\x808\x11\xc7A\x0e\
+_~Y9\xd8\xb4\xa4q\xbe\xe0\x07\x12x\xe1'(\
+\x107wB\xcc\xae\x1d\x0b\xe7I\x0e\xbf\xce\xd19>\
+\x9f\xfc\x9ee*d\x89\x909\x19)\x15$s\xaf\x0e\
++\xea\x13$Z\xb9o\xf4\xb9MNIbK\x9c*\
+\x9e\xbf\xf8\x8dj\xc5!P\xa5U\xd0Pfz\xc7\x91\
+\xb7f?\xe5<\x86\xb5]r\xa1\x04\xb8n\xad\x80L\
+\x14YoZ\xff^\x9e\x9b\xc5\x0a\x07\x96\xe4\x0e\xad.\
+\xc1?\x10\xab\x04r\xf8ej\xb1A5\x83\x82\x92\xfd\
+\x11Z\x22\xf1\xdb\xe1\x16\xe3\xdc\xa5\xa2\x1e\xa2\xad\xe7V\
+-\xb8\x8c\x83H<\xa9\xdc\xa7Q\xdf\x22\xc6\xdd\xad\xbe\
+\xdc7\xad6\x14\xf8\xf0G)|\xac>\xc4\x0b\xae\x14\
+\xa3*@\xe2A\x89W\xb8+\x1c\x88i\xfd\xfb\xbc\xa7\
+\xc5\x82x\x06\xe4\x05\xf3[\x89<#!@\x1c\xd1s\
+O%\x9dD\x05\x01?\xf7MB\x80\x04\x0f\x08'\xd6\
+\xc3\x22\x0a\xa0\xf1'i\xb5U\x82\x88s\xd1\x9f\x8bx\
+E\xe7&\x89S\xcb\xe2I\x16\xd5\x85#\xfc\x22\x0aK\
+\x5c\x89\xdb\xa84\x13\xaf\x90\xe0\xa1\x82ME\x9cx\x8b\
+\x80_\xeb\xd2q\x97\x0ak>G) \xe3\xbf\xf3\xfc\
+\xf0\xdfXW\xac\x0b\x10'<'\xfcD\x10`\xc8\xa5\
+\x92\x08\x80\x04\x11?\x9bB(\xf1\x07\xe7\x1b\xad&\xad\
+\xfa\x07\x05\xb7\xb6\x15\x9b+\xdf'\x0e\xa0W\x9f\xbf\x7f\
+6\xd5\x01\xc6\xa7\x95\x0f'\x01\x0d\xe2\x80\x04H\xcb\xf6\
+\x8f\x9fO\x02\x03\xb9p\xc51V'Q\x9c6\xe3\xcc\
+\x06\x01]8L\xab+S\xb8\xd2\xb3T\xe0W\xac\xd8\
+\x9e\x81j\x128\x93\x89j{\xc9\xa9\xf8\xab\x22\xe3\x8d\
+\x99\x8c\x04\x0b\xa8M\x0c0\x01\xa8\x08B\x16G\xc0\xcf\
+}\xf1\xbed8\xf9;\xc9\xcc\xcd\xd5:\xc0\xe7\xe6\x01\
+\xf15\x13\x80\x05H\xe0\xdfB\xf2\xf9;<\x006B\
+\x1cc\x05\x0el\xc0\xae\x80\x92q\xa5\xf2\x0d\x94\x87\x8a\
+022@;\xd8\x98`?\x85\xa4\x84\x00\x8c\x8d\x98\
+\xfb\xd78s\xa0$w=oD\x96\xeb!\xe1\xa1^\
+@C1[r=\xe4\xf9T1\x19}a8\xa8\xfc\
+\xb9\x9b\x83\xd9\x0e\x12\x908\xb1\xdb:\xb0\xe6\xf3\xb5=\
+\xd2d\xba\xa8\xb8\xb3\x80\xa8\x8c\x93P \xd1\xc1\x02!\
+\x90E\x17X=\xd2\xfe{\xc6\x83\xdf'\xd0#\xe0\xa7\
+'\x87\xd7o\x7f\x9f\x1e}\xe4\x0bii\x99\x9dV\xc7\
+\xec\x8a\xaba\xbef\x81\xb3\xa1\xc3=\xc0\xc6\xcf\x06\xc6\
+\xef\xb1\xf0\xb9\x92X\xe29\x14$\xc30\xdf\xda\x0c\x22\
+j\x14r\xcc8\x98\x9c`i{\xcf\xf9\x9a\xcf\xdfp\
+\x168\xb3\x0c\xc7\x05\xec\xb6\x92\x093k0\x10wU\
+\x96L\xa6\xc7\x06\x0c\x12\x80\x03G\x0a\x8a~\x00\x00 \
+\x00IDAT\x9e\xe7\xca\xfb\xb7\x09\xbe6a\xc7\xe7\
+\x04\xe2\xab\xca\x8e{\x1c\xe9e\x93\x9e2\xe4d\xc8\x8c\
+\x19\x92FB\x93\x80E\x0e\x92\xd7\x1d\xf3\x98J\x0c\xe4\
+\x95jQ\xb0\xce\xba*\xd0Nl\x02\x81U%\x9f\xc4\
+\x1f\xe3g\x04\xcdg\x84h\x104\xd7$\x80\x0a\xd4\xba\
+o\x87\xa5\xebua\x85U9W\xd6\xa3\xd2\xfc\xdb\xb0\
+\x5cQ\xcf\xba\xe6\xe9UW\x1d\xc5>)\x87h\xf4t\
+\x16.*\x95\xbf\x03F\xfb\xe7\x04\xe3\xeb\xa7^\x97+\
+\xc4!otz\xa9\x00\xd0\xc3\x9f\xc5\xb1~+y\xbb\
+uJ\xc0\x98\xb9]^\x5c\x02\xca\xa8\xdfw/\xa9\x1c\
+696\x90\xe4\x99%\x18\xf2\xc5\x80\xc0\x9eW\xd6\xd9\
+d\xe5\xb0\x8au\x1e\xf6uH\xac\xd0{\x16\xebz\xff\
+XX\x99\x07\xdds\xc3\xaa\xc0Q\xe3\x0a\x12\x0492\
+\xc8\xa1L\xe6\x14u\xd4\xcb\x8a<^V\xd1\xd8\xa8\x04\
+ $\xd2\xc6\xbf\x0b+\xb2cYO{\x9e\x22\x17\x9b\
+W\x7fT:7\x0eK\xbf\xb7yX\x99\xdf\xfd*\x03\
+\x94\xd8\xeb\x07\xf9VUH\xa7\x97\x08+\xc8\x9a\xfe\x8e\
+\xb0\xaa\xc5B\xf3\xb6\xbb2\xac8>\xe3\x87\x87\x1e\xf8\
+\xf1\xfaa9\xe0\x1f\x9e\xc7\xed\x83\xec\x9f\xb96H\x14\
+\x1d\x13V\x91)\xaa\xf5g\xf4TX\xba\x8f\xd7\x85\x95\
+\xf3c\xfa\x82d\xe7k\xfc7\xa9z\x86c]\xec#\
+\x95\x86\xdf\x96\xc4\xab\xe7\x17\x15P=?*\x7f\xdd\xbe\
+a\x15\x89\x95\xf6\xfb\xd1\xb7\x06H4-\x09\x04:\xf4\
+\x80\xc3Ear\xc0w\x86\xa5\xd7{UX\x09\x94\x9d\
+\xd0P/i\x7fPX%;\xa5DO\x7frX\x99\
+G\x90\xdb\xd9\x91\x05\x82\xaaJQ\xf7\xa9\xb0\xa2\x16\x82\
+\xba\x05j\x13T\x1cY\xe7$\x88\x5cQ\x15\xd2\xd0\xf2\
+~\xd7\x0d\x8e\xa8\xa1\xfe@\xb5\x15\xd09\xe1-\xc7\x8c\
+\x84\x7f\xff\x9d\xb0t]?\xacB\xcc@\x22(2C\
+\xe4\x83+R\xc5\xe5'\xcbWz\xef\xb4\x12\xc0~\x8e\
+\x9a\xc1\x86\xc96\xaa*c\xe1\x0e\xfe\xb3@B\x09\xb8\
+\x02\xaf\x90\x11\x0b\xe20p\xa5Id\x98p.8P\
+\x7fOX\xa5> 9\xbb\xfe#\xfd\xfe\xfd\xfe\xd5:\
+\x82\x9b\x08\xce\x12\xfc*\x90SJ\x9c\xb3?'\xeff\
+@,\x8c\xd5\x8b.\x0e\x87\xa9\xf3D\xceL\x0f5\x01\
+\xfeC\x99\xbe\xcd\xe7u\xf6\xbb\xee\xa9\x02\xcf\xe8\xf1\xdf\
+R\x01\xc9_\xb4\x1fl\xa2\x96\xaa-\xe4/\xcd\xaa\xfc\
+\xacH\xf8|R\xe7\xe8]\x95\x7f\x03w\xc4\xc2\xb9\x99\
+q\x80\xa2\xffT\x01\xc9#U\xc5\x92J;-\xa8\x22\
+\x9fd?\x9bl\x97l\xfb\x22\xc7\xe8\x0a%\x08\x18\xfc\
+#\x05(\x96\xa3\x03\xf1\xc0\xfc# \x80M\x1e\x7f\x81\
+\x16T\xfc\x0e\xcd\xd3\xd1\xfb\xc2\xaa\x00J*\x18F\xe2\
+Q\x98\xa2\x12M\x85\x9a\xd6\x02\xb8Q\xa8D\xae\xa4\xf8\
+`\xcfL\xdfWZ\x93P9\xf8gX\xd5\xf2\xc3\xbe\
+\xcf\xeb\xe3o\xc0\xb5\xb2A\xae]\x97\xcf\x0fg\x01\x89\
+v \xee\xcc\x17\xfc\x18~\x1f\x7f\x82\xc4\x86\xfc;\x17\
+\xb4h\xc1\xbbW\xeb\x92\x82\x9b*\xeb\x93\xf3\xc2\xd2\xf5\
+?a%\x9027\x8f\x90\x92pn\x90\x004\x92\x96\
+y*\x8e\x07'\xb0\x09\xc4\xe1\xaaQ\x82\xcc\xcf\x9d\x9e\
+\xf4\xab\xb2\x95\xca\xb5\x10%F\x08\xe8yy?\xc3\x0f\
+\x14\xa7\x99{\xfbu>x}\x810\x82\xe3\x888\x05\
+?\x11?\xdb\xc8\xe7\xa6\xc0IA\x0a?\x8d\xb8\x0b?\
+\xae\xa8\x8c\x0d~w\x8b\xe0nY\xf6\x89\x1b\xf0s!\
+\x1d\x87\xfd\x9e\xf9E\x02\x81y\x87\xdf\xcc\x15\xff\x1d\x7f\
+\x1b\xff\x13\x7f\x9e\x04\x09\xaf\x03\xa2\x96\xcf\xcb\xf3!\x11\
+\x009\x1fq\x02d\x95\x92\xc3u\xc0M\x5c\xdb\x22\x94\
+\x19\x87\xf6}\x18\x17\xc6\x91\xe7\xc6\xfb\xe0\xdf\xb3~\x19\
+/\xc6\x91\xd7A=E\x85\x19\x07\xf2\xbc\x1e\x05I\xc6\
+O-fF\x0a\xb4\xad\xc4\x9ao3\x1eP\x1e\xcc\x12\
+\x92Y\xe3\x06x\xe0dD\x22\xb0[\xad\x82\xda\xe3\xf0\
+\xc7\xffkV\x13\x85\x0fB\xcf\x0c\x81;P}&P\
+[\xf9\xe5\xba|\x13\xb8\xb7\x08\x81\xf6\xda\xb6\x0c@\x06\
+H\x8b\x00\x99Q\x02\x22\x02/\x1e(\x13\x92qh3\
+25GB;^K\xfc\x17\xb6z*\x9e\xcd\xc6d\
+}\xcas\xb2\x05iZ\xee\xf5u\x22D\x13\xc6d(\
+\x04\xd6g)0#\xc3\xcdAJ\xef*\x8e\x1c\x99<\
+\xf4\xa4\x17\x0b\xcb\x0bp\xb8_\x90\x02@\x1f\xd1I\x17\
+)\x19\xb2\x89\x0e\xa0`\x91\xfcrX\x91\xe5r\xcf%\
+\xd0Q\xc8\xbap@\xd0\xddT\xc6\x9e\x1e>'\x8cD\
+\x0a\x07\xc4\x88\x9ecC\xde\xb8\x0f\x12B$Z\x18O\
+z\xdb\xc9\xec\xeb\x00u\xa5\x9d\x80\x00\xf9\xc4\xbfi#\
+\x18\xa9b\xaf\x8c\xbc\x03@*\xfd\x04\x86,dm\xb8\
+\xae\xb4\x83x\x99'\xfdV\x0d\xb9_b\x98/\xc9M\
+\xcb\x15F\x1f\xac-4\x9f\xcc\x1f\xf3\x90kKn\xc9\
+F\xcc\x95\xf9\xc6\xebq\x90B\x12\x87\xec\x1d\x15Hz\
+gi5a>\xb3!\x91)\x04B\x04y\x0fd\x97\
+\xc7\xa8\xa2,\x16|;\xc4\xef\x09\xab\xee\x97D\x81z\
+\xbbLB\x86C\xd4=S\xe6\xd2\xfb\x00\xd0\x7f\xf6\x0f\
+\xd6/\x0e\x0a\x0e>\x9f\x1f\x99\x14\x90\x0bB\xb88c\
+\xad\x0d\x8e@\x83L\xbb\x13]$\x10u\x10\xbbB\x03\
+\x92@\xefg\xd21\x1c\x13\xa0\xca\xb4(\xc8A\xc7\xc1\
+\xb1\x8c\xa02\xea\x86z\xe3\xd0QqP\xa0BEc\
+\xb4\xf7\xe0\x90\xd1\xeb\xeb\xca+\xe4d\x87\x87\x15\x04\x90\
+{\xd6\xaeO\xf3;*\xa3\x07t[uo\x90\xfc\xe5\
+\x12\xa5\x22M\x82a.\xddYA\x1b3\xe4\xff{\x95\
+\x1a\x84\x9e'\xfb\x0dH\xa3\x9c\xde\xea\x05\xe9]\xaf\xea\
+\x89%\xe1\xc3z\xd7s\xa3\xb7\x8e\x9ehZ?h\xad\
+\xf0}\xa8\x07\xd4\xf7I\xc2V\xf7\xeb\xc0v\xdd\xb0L\
+\xb6\xb7X\x86\xe2\x8f\xc3\xaaV,\xb1\xb9\x1b\x11\x00\xe4\
+\x16U\x05\xf6\xf5\x18\xb5k+\xd2\xba\xed\xb3\xe0\xd3\xa0\
+\xe6\xf0m\x05\x14\x91\xa096Y\xb0{\x7f.\xd9g\
+\xcbz\x99\xccI6.\x01|n\x018\xb6\x92\x89<\
+a\xd0I\xcf\xbd\xf5i\xdf\x98\xdek I4\x04\x17\
+\xb2\xa7=\x07\xb2Gsi\x08\x1a=\xb9k\x90\xfd\xea\
+g\xf5\x0b\xf5Q\xc9\x9e/\xac:\xbf\x94\x98\x1am\xad\
+y\xbb\xafZH~7$\x88\xd0)g\xbf4\xa9\xe2\
+<\x92\xed\x22!C+\x82\xce\xa5\x5c\x89_S\xad-\
+\xe99\xf4\x97$\xbbTP\xf9\x1fV\x15\xfd\x0d\xc2\xd2\
+\xcf\xff\x14V*\xb8\xfd'\xc2\x0a\xd2\x8aD\xd6\xe49\
+\xea\x95_H\xd0\xec%\xc3\xd2\xf5/aU`,\x12\
+1*\xf6A\xe9\x96I\xdd\x1a\xc7\xdc\x09<\x02x\x91\
+\x9e\xf5\xff\x0c+\xfa\xe0\xe3\xf5\xc2\xaaD \x9c\x1d\xb4\
+L\x00\x85\x15\xf4x\xfc\x91\xb04<?\x0cK\xf7?\
+\x1dVd\xc5\x90\xe1\xa3\x05\xc9\xd0{X\xaea\x1b\x87\
+\x95\x9e\xcfu\xff\xe4\x81\xc9\x03\x15\xb2O\x15B\xc6\x9f\
+\xfd\xb5\xbf,\xac\x92\x0fEUD\x81\x8a\x7f\xfe\xaea\
+\xfd\x1b\x1a{\xf5\xe0\xb8\xf9\xe7B\xb4\x98\xacP\xe7_\
+F\x0a\xfcS\x81\xcb\x15U\x8b\x83\xd4 |\x9e\xe0@\
+\xe3\x88\x83h\x08Y\xbc\xb3J\x85\x1e\xc8\xb0[ \xa4\
+B\x11\xd4|\x99\x9cO\x15bz\xa7\xfb[\xfa[\xfb\
+[\xd4\xa3\xbc~\x1e\x87A~p\x13%&\xa8\xe4\xc2\
+\x0d \xf5\x8c\xa9U\xd4r\xa6\xe7\x94fMv\xc0\x1d\
+8\xd1\x82\xa7\xfb\xeeOJ\x16\x89\x9f-\x92\xbdZ\x1c\
+\x07?\xaa\xc8\x0d\xdf*\x99@q\x0f\xb8\x80%\x12\xd9\
+\x9c\xb8:G\x0e\xf4\xe3%Q\x9a[\xbf\xce\x11\xc2\xe1\
+{\x15\x07\x01\xcf\x81q#P\xc2o\xe5\x9f\x02\xb8\xdc\
+\xf9\xfe\xd3\xca\x9f\x8a\xf4\xc0;\xab\x848\x01\x19\x01\x06\
+\xfe,\x08\x9e\x0f\x85\x95\xcf\x03\x12\x0ed\x0b2\xb2\x93\
+\x1d\xc3\x8a\xdc\x1d\x89N\xabw\xe0/\xa85\xce\xfe\x02\
+-~\xf8\xa77\x84\x95\x16\x18#\x14\xa8t\xd3S}\
+\x998d\xbe\x9d\xf5BJ\xa2\x80\xf7\x85\xe3D\xe3\xde\
+\xef\x97\xec\xc3\xe2dY\xbf\x22_\x95L#\xfe\x9f\x9f\
+\x8b\x0a\x0c^opQp^\x93\xd0\x0f?\xeb\x8d\x95\
+Z\x0e\xe4\xc0\x04\xf0\xc89j<\x1d0m&$\xb0\
+\xfc;\xcb*r\xfe\x0a1h\xbf\x10n\x10TG@\
+\xa6\xa9\xf5\xd9\x89>t\xe7I\x1c\xa8e\xc0\xe7\x112\
+\xc5j\x99sb\x09?\x89\xc4\x0d\xff(|\x11\xc01\
+\xdfX\xa8\xf3\xaa\xe06\xaf\x10fR\xc7\xf0?\x12$\
+\xac\x1b*\xe2\x9c\x87\xf8) u\xf1\xb7@Z\xc3i\
+\xa0\x04\x89\x0b;Ma\xd7\xfe-~\x1c_\x13\x18s\
+\x1f|\x8e\x16\xcaN\x05\x1b\x7f\x14\x0e\x10\x12\x9f o\
+\x08\x9c\xf1\x83\x81\xf4\x93H\x81cA-ks\xb5\xf0\
+\xe2\x7f7\xb2\x80\x9c#\xf6\xd7H\x98\x82\xb8\x01\x89L\
+\xe2\xa1U\x09\xe0\xf9q_\x86\x067\xaac\x04\xfc\xac\
+\x7f\xf6a\xe2G\xfc\xea\xb6\xe0\x8c?\xc7\xfe@\xc1\x9b\
+\xcfG\xa1\x95\x84\x07\xaf\x0b\x02\x83\xc4H\xd3:>\xf3\
+\xac\x99\x99\xa6\xd2kr\x97\xd6ag\x03Y6\xd3\xc8\
+\xcc\xf5\x81\xdc#\xc9\x06\xd9\x06\xfel\x8c|\xdd\x06\xfc\
+\xe8J\xb2@\x0b\xa9\xdc3\xb8\x04|e\xa0\x18x&\
+`\xdb\xa3\xc1}2Q\xf9\xbcm\x8fxK\x82\xd1\x06\
+\xfe-\x84\x83\x80\x95\xcf\x81\xcc\x1dPz\xa0Jdl\
+\x98\xf0\xf4\xda\xa3gO@/R-C\xc0\x99\xc0l\
+\x0cd\xf6 m\xa1\xe7\x0a\xb93\xf5^\xc1V\xea\x0d\
+\xe6NU\xae\x08\xd4\x14\xf0\xb8\x87\x89\xef\xe30\x8a\xbd\
+\xda\x1b*\x8e\x15\xbfG\xcb\x07\xe4m\xdc'\x10\x1b\x02\
+[\xc6\x85qg\xc1J\x16\x06\xdd\xfb\xc9n\x22Q\x93\
+j\x81\xd9\xb1\xd1s\x86\x1d\x9f\x83\x196Q\x91\x8dA\
+\x124:4\xac\x82p\xffQ\x90\x995\xb4P\x98'\
+7\x09\x89\xc0\x82b\xfe\x91)\x04j\x1a\xac\xc2\x0fW\
+\x07\xc3=\x0a\xa4\x81\xa2w\x9a?\xad<H[\xc9o\
+\x12N&\xdd\xa4R\xc4\xbad>3^ ^x\x1d\
+~NO \xbd_$F\x18\x7f\x12\x1a\x04\xd6z>\
+\xd6/\x96\x5c\x9d{\xde\xe8u\x93\xe3\xe7\x1e\xfcV\x0d\
+\xa1=\x98\xd8\xb8Z\xc8\x18\x88\x1c\xe6\x1f\x81\x10d\x85\
+\x82\xdez\xbe#\xdf\x89\xe3\xde\x92EBbG%\x00\
+\xc8\x1e=\xe6\xdc\x1f\x07\x0bP) u\xac\x17\x12\x86\
+\xa8XPq !\x05\x0b\xb4\xa0\xef\xd63g<y\
+\x1e\xecK\xdc/-Q\xc8\x0b\xea\xf9\x9a\xd3\x03\xd9C\
+ i\x04\x18\x04\xc4_\x94\x0e\xf7\xb7\x06h\xaf\x1d\x8e\
+\xd7\x8c^\x1b\x95m\xee\xab\xfb{\x98\xc8^\x22\x80?\
+$\xd9\xc1J\xb4,WA]\xd5\x82`\xa8\xfc\x9d\xc9\
+\xee\xaa\xa0\xd4\xc7f\xab\x03\xbd!`@\xe6\x90\xca\xfb\
+\xc3\xc9\x1e\xd2\xfc\x09\xc8\xdf\x06a\xa5\xc71\xcbl\xad\
+Z\xfd\x1dz\xd7A\x9e\xb7T\xc5nO\x8f\xad\xe6C\
+wyX!\xad\x83lpz\xdd\xb0\x8a\x1b\x02\xfdv\
+\xb1\xb0\x9bD2 \xfaO\x16\xb2\xda\xfe}aU\x0f\
+\xaf\xc8\x05\xb3\x5c_\xda\x9f\xba\x15\x93\xa5\xf1\xea\x1e\x0c\
+\xd3\xeb\xee\x5c>\x87\xf5\xa2i\xe1\x08\xf2\xaf\xc32\x1b\
+y2q\x02\x9c\xad\xf1>D\xf3\xf7\xe8L\x06wU\
+\x96\xc5{K\x0a<\x82\x94\xef\xac\xf1\x1b\xc6\xd1\xd3~\
+\xa1\x12@B\xb2\x90\xa8h\xf5\xe9\x8d\xb8Q\x22\x97\xc0\
+\xb7{IXI\x1c\x04\xc5_N\x90\x1c6\x90\xbeu\
+G\x0c\x1c\x06Y\xbe+\xcd\xab\xee\xe2\xee\xa2\xee\xa2B\
+\x8e\xeb^le\xfe\x1d\xc0F\xc2a\xfe\xaa\xf2\xc5\xfe\
+-G\x82\xca/=\xc8\xe8\x8b\xd3\xca2Y/\xac\x22\
+wC\x97{q%\x9e!q$\x80Df\x8e\xca \
+\x95G\xc8\xae\xd4z\xe3\xf5\x8c\xca\x07~\x07\x9c%\x0a\
+\x08\xc7\x0b\x86UPP\x12\x06m\xe5E\x09\x01\xc6\x97\
+\xf5\xd4\x7f-\xac\xc8\xa6Mo\x1b\x96~ogA\xf9\
+\xf5>\x96K\x95\xcc\x9ae\xed\xd4\x02dr\xb3\xcf\xaa\
+Uiv#\xc7)\xf5\x05\xcb%\x8a\xcc\xb0\x9f\x1d\x96\
+\x9fGv\xb0\xad\x1a ]\xfb~\x8d\xb0*\x00Y`\
+@\x18d\xf9\xc4%\xb5\x8f|U\xfe\xc0}\x92G\x1c\
+\xe5}\xe3[y\xdf\xa0\xf5F$\x88Y\xa6\xf3\x0bZ\
+oi\xff\xecO\xedO\xebO\xcd\x89\x9c\xd7\xe6\x969\
+\x1c[\xd8\xea\x059u\x02\x87\x84?\x88\x97\x97\x0d-\
+o\xe9\xb4\x1e\xe4\xcft\xce\x8ev\x1d\x90#&\xfb\xd3\
+9\xc3<s\xc2\xe2\xa1\xb0\x82D\xa0\xe2=\xf9\xe5P\
+\x18\xe8\xe7\x84\xa5\xeb\x8f\xc2\xaa\x1en\xb1\xa0\xc3\xc6\xdf\
+\xbf%\xd9\xceU\x22\x02(=\xad_\x90\xd0\xc1\x05!\
+d\x8e\xfd\x9e\xe0\xae\xf8TI\x10\xe4\xd3\xe5rU\x16\
+\x7f\xa5\xfb\xff\xb5\x12\xe3\xc7VdkQ\xaf\xfdI%\
+\xab\xa8\xfd\x90\xfd\x14$\x84\x03\x12\x1ctZ\xda s\
+&\xc0e=\xe0W\xea\xfe\x9c0\xe5\xef\xa9\x14\xa3\xae\
+#\x19\xde~\xf7\xb0\xd2B@k\x88\x13\xa4\xa7\x86\x95\
+\x00\x9f\xf9\x08\xc7\x83\x11\x95\xb4\x1a\x81d\x85\x1c\x8f\x16\
+\x11\x0a@p3\xa0&B\x8b\x8cTI\xec\x87D\xa3\
+\xc6u\x05Q\x95\x11Y\xf7\x08ip\x86\x0a\x10wW\
+~4\x01\x11\x5c6$\x5c\x1a]\xf3\xcc\x99q\xbe\x12\
+F\x07U2\x8c\xa8l\xc9\xaf\xb1\xfa\x09\xdcapO\
+\x00\x0d\x07\x02\x0e\x82W$\xc2\x0e\xf8I\xe8p\xe5\xf9\
+\xe0\xcf\x22\xef\xca\xfd\xe3WH\xfd\xc6\xb2\x87T\xfa\x97\
+iT\xb1\x88\x97Pc\x10\x09\xa9\xef\x93J>\xfe\xcc\
+\x8f\xe4\xbf\xfcB\xfe\xdc\x22\x8a\x7f(t\x82\x0c\xe6>\
+\xf0\xc7\x09\x1c\xb9O\xfcR\x02E\x02I\xfc`\xfc\x7f\
+T\x11\x84\x10r+\x17\xea\x19 }@|\xb2\xef\xe2\
+\xe7\xf2>\xadl9\x89\x01\xde\x97\x0a5jb\xf8\xf7\
+p\x16\x00\xed\xe7_\xc3\x95e\x92?\xfc;\xe2\xa4\x16\
+\xa9\x8d\xbf\x8e\x9f\xd8\xa8\x99\xf9>H,\x10\xf8\x93(\
+\xe1\xbeA\x00\xb6\xe4\x87\xfc\xc3_m\x0b\xc7\xc4\xaf\x14\
+\xc6h\xa1\xf8\xb5\xf6\x99\xf9\x9b\xdf\xe7y\xd1\xc2Db\
+\x86u\xc7\xfbS@\x03\x89\xb7\xea\x80\x1cu\x82\x03\xe4\
+\x87\x9eKA\x00D81\xaa\x06\x84\x17\x8c\x8f\x1d\x07\
+\xcb\x03Cf\xdbl\xfb8\xf4M/\xb4\xff\x91YQ\
+F\x1f\x07\xb0\xaa\x98\x0e\x0b\xa8\xcd\x94<\x1b\x1b;\xef\
+C\xa0\xd1\xb2\xb4\xb7\xba\xf6d\x00E>a\x99\xbf\xb6\
+\xc7\xba%q\xe0\xfd[28\xde\x0f\x0f\x96\x07\xc8\x06\
+@%\x97\xaf\x09\x08p\x5cp\x08X\x88\x0a\x5c&\x0f\
+\x0e\x07\xa0\x1d>\x02\xbfe\xf4{\x0b7\x89\x8d\x05\x9b\
+\x09\xb4\xb4\xdewU!5\x80|\xe9\x00N\xceA\x0e\
+4F;\xaae\xa0p3\x0c\xefs\xa3\x02_ \xf5\
+\x90\x9e\x01\x89\x06\x99\xc0\x04D\xbe\x83\x8c\xa7\x12\x18d\
+|\x0d\xb1neE\xd8`\xb9\x22;\xb7\x97*\xca\x07\
+\x8a\x14\x06\x1dz\xd8+UY1\xf4\x89\x80\x19\xd6y\
+\xe6\x13\x905\x91\xed\x18\xb9\xc2x\xeb\xa0\xb4\x1c\x17l\
+\xa3d|98T\xc9w\xaf\x1c\x1b\xaa>\xb7\xdf\x97\
+\x80\x9b\x0d\x96\x8d\x9c\x16\x97\xf9u 4\xa4*\x9e\x7f\
+\x04\xae\x8cS\x0b\x11j\xd7\x05\xf3\x9c\x8d\x87\x0d\x89\xf5\
+\xd0Tr\xdc\x93\x0f'\x00=q\xb0-S\xa9g~\
+\xf3>-D\x9f\xfb\x83\x8d\x98^>\xe4\x90T\xd9\x82\
+D\xc8\xf7\x01\x04\x8b\xf5\xc8\xbcnXJ\xbd.x?\
+\xc6\x09V]As\x0d!\x14\xc4\x0d}v\xb7~\x10\
+(\x00\x81\xe2\xf7p\xac\xe8\x91\xa4\xa7\x0f\x04\x0d\x0e\x17\
+\x15h\x12F\x902Q\x19#\xa1\xc4\x81\xa4J\x17=\
+\xf0N\xbc\xf0\x8f\x0a$\x07\xbd f&\xc3\xe3\xf1\xd2\
+J\x01\x87C\x13\x88\xe3\xf0\x846@\xa8\x03\xb0n\x90\
+\xfd\x1a\x9d\x14|\xf4\xe9\xfa\xc7\xb0t\x9d?\xd9\x02%\
+\xf1:\xba(\xac |H<\x18\xa1#Vg\xcbs\
+\xf1\x5c\xf4\xdc\xdc\xa2\xf0\xcb0\xc9[\xde\xa4\xca\xe02\
+\x0a(\xa2\x027oX\xc5\xdd (9\xcf\x8f\xf92\
+\xbdIX9\xa0!m\x84\xdb\xa4\xbb$\xac\x1agA\
+\xb6\x8d\x1c\x99\x95\xb1L\x83\x03\xff\xe9\xc2Z\x9d\x13r\
+Q\xa9\xfekX\x95PV\xa2r\xfa\x88d\x87W\xa4\
+\x82\x22C3\x89\x11\x01\xce\x07\x93\xedS\x91H\xc2N\
+/\xc7c\xfa\xf9a\x85E~t\x7f\xb2\xfb4\xde\xc9\
+\x81\xeb\x97L\x96\x02\xdb\xf1f\xe3M\xc7\x9bfGw\
+\xe0\x90\xa0\xf5J\x15\xbbn\xcd\xb0j\xfe\x93\x08\x96\x83\
+\xe8\x96\x0c!X\xd2n\x9b\xd9\xe8A\x8cL>\x1fX\
+\x85\x5c)\xffR\xae\x94\x9f\x991bS\xd3o\x0a+\
+\x10i\x02^*\xe3\xf9\xf3}P\xfc\xcfS\xb9\x82\xb5\
+~\x1e\x07A!\xb3\xe3\xbbqa\xb57\xc9\x97\xe4\xc7\
+L\xba\xb6\x95\xa0\xe7GH\xd7\x1aH6PLH\x01\
+\xd9w\xa8\xe0@\xae\xa7}\x91\xdeJC\xf1\x91\x83\x22\
+\x81\x86#\xa7\xc4|N@=\x5c\x9dW\xec\xdb$\x04\
+9\xd79/\xf9G\x0b\x1a\x08\x1d\xed\xdbp\x03\x00a\
+\x9f^0,]O\x0fK\xdf\x7f\xd3\xc0\xd9\xe0\xf1\x10\
+\xa9\x9c\xe5\x1b\xa5\xa2\x90\x19\x93\x96-\x90c\x90w\x0e\
+\x00\xe5\x07y<\x85\x98\x9a\xfc\xef\xe0\xd8\xd3\x02\xd1\xbf\
+7,]\x1fJ\xf6`!\xaf\xeb\xcf\x0cK\xd7\x0d\x92\
+mXZ\xa0\xd0\xbb\x1f\x9d\x15\x96\xee\xe3}\x037H\
+\x0a\x9a^\x95\x03'\xd4\x8a '\x8e\x00\xfb\x0c!\xf1\
+\x22\xa1\xf4\xc4\xe8\xf1Q\xf2kF\xdf\x1d]<\xfan\
+\x0eXr\x22\xccz\xdf\xda\x07'\xdb\x84\x15\x92G\xc8\
+\xe6&7\xca\x01\x95\x5c]:\xbb\x87\xe7\x1f\xdeS\x04\
+\xf8\x9c\xff\xe7\xe8\xfb8\xd4$\xd6i)\x83\xd5_\x10\
+\xf7~\xc3\x01\xd9\xd2\xff\xa1\xff}\x9f\xe6M\xff\xb2\xb0\
+\xe2wfR\xcc\xe9\x8a{A-\x93\x90\xae\x86\xd6B\
+\xa8-\xa0\xae1yAX\xa5\x1a\x10\xf3y\x85\x8aM\
+;\xf6\xb5[\xe4\x90/&N\x86W\x95\x80\xd0\xad\x99\
+$\x0e\x94\xf8\xf5\xfb\xa90\xe0D\x97\x10 \xfd\x0ea\
+U\xe2\x98\xc0\x16\xff\x99\x1e|\xb8\x9d\xd8w\x84`s\
++\x00\x09\x12!\x1a\xfc\x9c\xe9\x0d\x97\x9a\x82\xb9\xa6\x98\
+\xdf\x0a<\x1d\xe8\xe27r^\x89\xb4\x0f\x0e\x03\xb7d\
+\xea\xf7\xe0\x000\xd9\xab\x02\x0a\xfc\xe1\xd1\x8b\xc2\xaaJ\
+\xff\x0f\x92\xfd\xb0 ]|\xdf\xc8`\x86|c\xf2+\
+\xbbE\x92-Z8\x00\xbc.\x04\x057\xa9 \xbd\xe0\
+@\xb5\x99\xc8\xf8?\xb7\xa5p\xf8\xb6\xaauE-\x10\
+\xb4\xae\x9a\x94\x90\xc0G\x89\x13\x93\x02\x0a\xe9hrP\
+d\xd3\xe0*B-\x00.\x1b\x90\xcf\xc8\xa1\xd2\x92A\
+\xeb\x05\x1c^\x92!\x9dl\x1fVZA&\xc7\x84U\
+\x9f\x8b\x80\x16D&\x9f\x8f\xc0\xb1\xad(\x13P\xaf\xa8\
+\xf9w\xb4\x10\x90T\xc2\x19'\x0a\x0f\x90~\xd2\x9b\xcf\
+>OAC\xadF\x0e\xcc\x19W\x02[\x02h\xee\x03\
+d3HnZ\xbf\x19\x17\xe65q\x0f\x1cO\xcc\x13\
+\xb8\x89H,\x10\xa0\x820\x00\xa9\x00\xe2\x13\xe4\x1a\xad\
+\x9d\xc4\x01\xf8\x99\xf8\xd1|\x9f\xcfA\xe1\x0d?\x98\xc4\
+\x09\xfer\x8b@ AHA\x0b\xbf\x17\x95.\xc9z\
+;1\xc0\xb8\x90\x88\xe3|\xc1\xef%\x10g\xffk+\
+\xf9m\x81\xac\x90\x87/\x98\xaf\xe1\xe5\xcc\xaa\xe2d\x0a\
+o\xc4\x07\xac?Zc@4S@j\xd5\x07xn\
+\x8d\x1a\xc1\x0c=ay\xfa\xdd\xa37\xfaO5P\xe8\
+%\xc7p<UA\xac_(\xf93>\x18\x8en\x1b\
+\xe8\xc0\xee\xa8L\x85I\xda\xa8`\xf2\xfb|\xc0\xc7\x1a\
+97\x02e\xa0\xbf\xf4\xd8\xf2w\x04x<x68\
+-\x10\xf7n\xd3\x93\xd5d\x18\x8dl`\xa3\xa7R\xdd\
+\xeav\xf3\xe0\xda\x9e\x0d\xde\xffY\xd4\x0b\xacr@ \
+I@HB\x81\xcfK`G\x00\x06\x12aI\xdd\xc7\
+rM\xa2\x81\xeb\x0a\xd2\x7f\x87\x94G,\xd3)\xd8\x19\
+6\xf8\xa74.Ll\xc8\x005>Y}u\xe9\xe2\
+\xc0\x99\xf4\x0dn\x022\x89\xaaL\xa3G\xef\xca'\xd0\
+kA\x9a\x0c\xf1\xe7\xa0c\xdc\x08\xf0\xd4Km5\x85\
+C\x85X\x10\xcb\xba+\xf5\xf4bS1e>\xaa\x22\
+\xe7\xf1a\xc3\xa3\x17\x19\x96\xdd\xb5\xb4\x01!;'\x99\
+\x17o\xb08\x8ad\xd4y\x0e|.\x12@\xcc'9\
+\xe4S\x9b\xa9B\x86\x8c$\xb2\x88\xf4z\xf19_\xa7\
+Jx\x0b\xe1o3\xa1-2\xa5\x9d_-I \xeb\
+\x02\x19)\xc8s\xd4\xabd\x08#\xdc\x0d\xb0G\x13\x80\
+\x93Qg\xde\xb6\x5c\x16$\xdaZ$L\x9b\xb1e\x83\
+c#l7\x1c~\x9f}\xa0%?\xe1\xe7\xd7ic\
+\x17D\xcf\xad&\xea)$\xa3K/\xba+\x16\x1c\x1c\
+\x90\xa3\x09\xf1bVf\xa0m\x1c4B\x1aPYs\
+\xcf\x17\x90E*#$\xb8`\xbfEW\x5c\xc8\x04#\
+Uh! \xd0\x04Z%H\xb4I\xaa\xb4\x9e\xfbS\
+\xc3J\xef<\x15\xdd\xdc\xa9\x7fz\xc5\x1a\x0c\xa9\x96Z\
+$2T\xfd\x7f\x8b\xfeywk\xf7\xc7\xee\x8f%\x10\
+\xccP\xcc\xcb\xc4\x8e\xbdo9\x88\x0cM\xc4\xd1\xe1 \
+S\xa0c\x073\xc2\xb2\x1bu0\xa7\xcf\xd3\xdd\x15\x96\
+\xae\xff\x0a\xcb-J\xc9\xd2\xfd\xdf\x16V\xe9\xb6+c\
+\x9d\x9f\xea\x0b\xab\xe7\xcc8P)9@r\xa8\xda7\
+\xd8oq\x08,_\xb6jXq\x84-\xb7\x86\xba\x0a\
+P\xe1\x90\xe9Z\xb7\xe8YS\xa9\xcf\x89\x94\xb3*r\
+7\xcd\x9f\xee\x8daJ<nZH\x8fr\xc2b>\
+\x05\x02\x95\x8c\xec\xe8\xad\xc9v)l\xd3n\x1dQ\xcf\
+z\xc6\x8f|\xad -\x1cH\xc5}\xa7@\xa9\xbf1\
+\xac\xea\xb1\xd5\xfe\xdf\x9d\xd6\x9d\x9a\xc9\x11w\x0b\xcb=\
+\xc8Y\x1e\x90D'\xcf\xab;3LP\xed#Je\
+\x8fD\xae\x1d,\xf6\xd9HX.Q\x05\x0a\xd1c\xbc\
+]Aj\x19\xb2\xfd\xef\xb0*`\x01\x9aN@\xa8\xc4\
+\xa8Y\xbe\xd9W #\xd3z\xb0\x1c\x9ez\xc3'[\
+\x86U\x10f\xf6\x19\x1c3\xe49Y\xff\x9c[p\x0c\
+h~\x8d\xae\x0b\xab\x1cY\xf6%\x1cd\x1c>UN\
+y\xaevp\x919\xc3\xe1#\xa1\xd2\xb22\xf3\xba\x5c\
+iQ\x94\x1cg\xf7\xfa\xb0r\x1f\xfd9a\x15I\xea\
+\xb1a\x05\x09\x10Z\x1d\xa1\xd6a.\x96\xb3\x14\x08#\
+\xff\x85\x83\xa8\xfb!A=\xb9_\x81\xce\xcf\xc4^\xff\
+\xcb\xfe\xba>*\xa4\xd7$\x0b9\xc1\x9f\x86\xa5\xeb6\
+aB\x06\xa4\xe7\xd7\x1f\x10&\xb9\xc5\x91\x10\x18/\xa9\
+X\xcdI\x84\xd2\xca!\xce\x00C\xc1\x83j\xecb\xed\
+\xebS\xe5\xdc\xef\xde\x1c\x96^g\x8d\xc9\x9a\x935\x0a\
+\xa4\x9c\x9evZ\xca\x8c\x8c\xa0\xf5\xe1\xd2!\xb0\x98\xac\
+>\x99=\x99]A\xd1\xff<$\xd4\xa6\x16V\xeb\xc3\
+%\xe2,\xf8sX\xba\xce\xd6\xef\xab\xa7\x1b\xc4\xdf\xf8\
+\xde\xf1}\xe34.\xe3\x0d\xc6/\x1d\xa7\xf5\xd0\x7f>\
+\xac\xaa8\x07\x07\xc9ZE\xa6\x90\xe7\xe1\xc4$P\x7f\
+X\xd2\xd9\xe7\xfe\x98\xb1\x7fE\xf5\x22\xde\x7f\x8dJ\xfe\
+u\xf9\xe1\xfe<\x8fIX\xc5W\xbf\xd7\xf98U\xb1\
+\x8d\xeb|\xee\xff/\xac \x1a\xf0\xf3\xfa\xa3\xc3\xd2u\
+\x99\xb0\xaa\x97X\xad\x9f\xad\x9c,\xf3\xc8\xf2\xae\xb0\xe4\
+s\x1e3\xaf\xb5/\xb8\xc5A\xe7\x99\x0b%\xc8\x0b\xd2\
+\xaa(\xce\x04'\xbaH\x18i\xbe;\x11\x00\xf2\x10\x7f\
+\x1d5\x07!kL\x96\xc7}\x90\xf8\x82C\x0a\xf9]\
+U\x86sK\xd1%e\x9c}\x1e\x0a\x8a\x9c\xe5K\xef\
+\xad\x021\x123$\x82\xb4\x9e\xddB\x04\x07\x87\xf6\x9b\
+\xc9\x8a\x93\x95\x22\x91\xcey\xe0\xc4\x1e\x1c\x11\x04<$\
+4\xe0\xf2\xdaP\x89\x7fZ\x10\x89Ch\xf5\xa3@\xa6\
+\x00\xd2-\x1f*\x18Pxpk\xa5\x12\xe5F\xc6\x08\
+\xe2\x0fw\x94\xfd~\x0a\x82<O\x90\x7f\xc4\x1d\xc4\x0f\
+\xdc\x0f\x85\x07\x02\xbb\x16\xb9H\xc5\x1c\x04\x1fH\x0b\x91\
+w2\x9en\xd5\xc3_\xc4\xcfc?\x96\x7fg\xe4\x15\
+\xea2\xec\xd3p'@>\x08\x82\x81\x82\x14\x9f\x8bV\
+_q\xf2\x18aB\x02\x98\xc0\xb9U\x8b\xe2<#\x10\
+V\xe0\xedu\xc6\xe7\xc2O\xa7\xa0\xc4\xd7\x90\x07\x92\xb8\
+!q\xd1r\x8f1\x0fH\xf8\xa9\xa0\xeds\x82\xc4\x07\
+\x89\x02\xee\x97\xf7i\xc9\xc2\xd9'\x80\xd6\xf3>\xc4Y\
+\x8c\x9b\xf6;\xaf\x1b\x12\x0b\xf8\xf7\xc4\x05-\x92\x1dn\
+\x12\xc6\x85\xc4\x0f\xf1)\xe3F<\xcb\xf3j\xb9\xf4\x14\
+\x8f\x10w\xdb\xaf\xd5\xe7\x9a\xf1\x00\x84\xfb~\xbf^p\
+\x89\xb9Y\x98\xf3W\x8fVP\x8b\xc8(^]\xd4\x02\
+\x80$\xb8\x12\x10\xf5\xb6\xcd\xf4\xc0\xd7\xaa \xc7\xca\xb8\
+\xb8\x02C F\xe0\xc0\x8d\x13`p\x1f\xe8&\x92H\
+\x90\x03\xe9\x01\xa4\x95\x80\xcc\xd4T\xd3\x02\xc0\x83\xe1\xf5\
+\x08\xc0p\x0c\xda\x0a%\x81<\xac\xf7@b\x81\xea\xb6\
+2\x0f\xed\xdf\xb7\x0f\x88\x9f\xb3\xc0\x99\xc8l \x82\xc6\
+9\xc3Z\xf4\xec\x87\xf1YL\x01%\x90x\xd87\x19\
+w6\x9a\x97\xab\xb7\x89\x1e'2s\x85]\x7f\xb8\x0f\
+\xc6\x0b\xd6\xd0't?Lp\x02x\xbdNr\xfb\xb3\
+\xa36\xf5)A\x1f_1\xe8x;`a\x5c\xf8\xbc\
+/T\x85|\xa9f\x82Jw\xdc\x1b\x80Z\x1f&Z\
+0\xa3-E\xaa\xd2\x22*X\x00l\x94<w \xbe\
+J\x5c\x8c\x1eQ\x85\xa8\xe5l\x10\xd2!9\x1ay\x03\
+'\xc0\x18\xed\xa0\x00y^e\x0c!w\xa2\xf2(\x07\
+|\xc4\xeb\xbdO\xcf\x81\x8d\xef\x05\xc3\xfd:\xd1\xb4\xb1\
+Hh\x98?\xcc\x032ym\x8f?\xe3L`\xcc\x15\
+(=\xe3\xc0\xb8\xb2!\xb4\x1b\x12\x99G\x02[\x1c\x1d\
+\xd8\x87E\x12\xe6@\x8d\x84G+;\xc8\xc6\xce\xbc\xe3\
+\xc0\xe2\xe7\xac\x1b2\x9b\xdc\x07\xf3\x9by@e\x93\xcf\
+\x87\xac\x1e\xe4}\xe2H\x98\x1c\xad\xcc=\xb2\x81\xe8\xb2\
+o=\xc8\xf3XE\x81\x9e@\x90\x1e\xb7\x87U\xbd\xe0\
+\x90\xc5\x10\x08\x01\xdd\x17\xf9\x91\xe5\xfb>\x1dVz\xec\
+Id\xc2V\xcd\x01\xe9\xf9\x0dB\x04\xdde\xb1\xcf\x13\
+\x98\x18\xfa|\x5cX%[(\xbdy \x80>\x10\xa8\
+\x0c\xfd8\xac\x92\x09R\xef7\xf7;\xfd\xe3\xb0t]\
+nz\xf9\xe9\xe5\xab\x00I=i\x04\x06\xfc}rF\
+.\x08\x87\xc4\x01$\xa4\x85\x1f\xc8f\xee\x90I?\x99\
+\x04\xb9\x16\x90\xe3L>\x98\x02\x9dn\xd3\xb0\xaaWR\
+=\xa1\xe3_\x85\x95\xfbb\xbf\x19\xfd8,]wK\
+\xb6\xabz\xe8\x8f\xad2\xd0\xb0\x1d/9Yj\xb2\x94\
+\x9e\xd7\x9fT\x91\x0b\xf2\xc1\xab\xc3*\xce\x05 \x94r\
+\xcc\xfa=\xc2*\xc4\x82\x12\xc0\x0eh\xe5\xc8\x02\x05f\
+\xfeuW\x85\xa5\xd7\xbd\x22\xac\xe2:\x08n\x83\xae\xcc\
+\x0f*s\x99-}\x9b\xd2s\x9eIjgUP\xbb\
+\x1ay0\xab\xb0[[\xd6\x88\x96\x19Z\x99\xa2\xa2\xb2\
+Wq\x5c\xf3\xb8\xa6\xe70sSX\xfaz\xb3d\x9b\
+Wj4p\xaf\xa0\x1e\x02\xa7\x0b\xfb\x16\x8e\xc8e\xe2\
+<9op<\xd1\xa7\x1f\x7f9\xac\x92\xb5\x03\x9aL\
+\x22dGUz\x90\xc9\x83,\x8e}E\x10\xdc\xfe\x82\
+\xb0\x82\xd4\xe8\xfe'Y\xb4t\x5c\x11V='zC\
+\xfbA\xfe\xd6\x8e\x0c\xbd\xa1\xf4NBz\xcb\xfe-\x96\
+{s\xb3\x100\xc0AA\xa2\x04\x19\xc7\xe7\x87U$\
+\xba$\xf4\xb4/\xba\xf2\xcf>J\x00\xc3\xb9\xda\xfe#\
+\x91\xc9\xbe\xa7}\xad\xfb\x7fai\x9d\xad\x12\x96\xbe>\
+0\xac\xea\xfc\xbb',\x8d\xc3\x09a\x15\xa2E\x08\x15\
+\xe42G\xab\x8ff\x8ff\x97V\x01\x9f\xc7b%\xc7\
+Qt\x22fW\xa9 H6nr\xea\xb0/\x02\x91\
+&A\x95\xe7\xe9\x8e\x8d\xec\xe0\xa6\x85; \xb4\x16B\
+m\xc1\xfb\x81\xd8\xf8\xfb\xef\x86\x15n\x01\x90R\x91>\
+\x8c\x04\xa2\x0b\x0d\x82\xa0\xc3i\xe2\x84\x19~\x93\xce\xb1\
+\xf1\xa7\xc2\xd2\xcf\x0f\x08+\xf34\xb9\xd1C\xcbG\xe8\
+\xb4\xcf_*\xa5pS\xa0\xfa\x11LG\xc1ud6\
+r\xfcJZR\xa4\x8e\x01\xb2f\xfc\xded{Ud\
+\x8e\x8ff\xfd\x9d\xa1\x92y\xa9\x12`\xebT2\x87\xea\
+\xe5\xcf\xf2\x8f\x1b(\xd1q\xa9*\xbc\x9f,\x81H\xbf\
+H\xb2t\xfe\x8e?\x14V\x12(y^\x1eR\xee\xd3\
+\xe7\x0e\x1c&\xad\x03O\xcb\x07P~H\xb7\xe0\x5c\x22\
+\xa0$\x90W\xc5\xde\xc8.*\xc2\xb0\xb0\xa3jBK\
+\x1c-0\xf8\x11\xf8K\xac3T*\x04\xd9\xef\xd7\x0b\
++\x89-\xf7\xf8\x13\x98h=\x12\xd0\xb2/\xbb\x95\x05\
+\xee\x17\x02*\xb8\x13@\xaa\x80\x10\x80\x1b\x00U\x1a\xa9\
+\x84d\xce\x97Wh\xdf\x9a\xbf\x22\x01\x04\x89!\x04\x8d\
+!\xfc\x9c[\xda\x9f'\xcf\x09\x13i\xe5\x86sC\xb0\
+Q\xbd\x98z\xdb\xd4\xae\x91\xa8\xcc\xb3\xf6\xf9\xd5\xfaV\
+B\x05RN\x12\xed\xa8f\xf89\xac\xafVR!\xea\
+\x18\x0f#BA\x16\xa9\x85\x81\x16/s l/D\
+\xc1\x93M\xcf<-3\xa8\x90@\xa6LA\x09D\x01\
+\xf1\x16\x01=\x95\x7fZS\x90\x83\xa3\xf7\x9c\x9f\xff<\
+\xed\xe6?\xaf\xb8\x05\xe0B ! \x7f\xcd\x95j\xb5\
+\xca\xb8@FB\x8b\x00\x93\x04\x04H\xd6\xd2\x22;\xdc\
+\x1f\x88\x09~\x9f\xf8\x8cyG+\x08\xb2~\x04\xce\xfc\
+\xc3\xef\xc3\xdfm9\x89\xd8\xa7[\xb50~\x0f?\x94\
+\xc4/\x017\xeb\x102U\x12\x1d\xed\xcf\xf9;\x02{\
+\x10\xe1$T\xe0T\x22\xc0'q@\xdcI\xa2\x00\xb2\
+=\x10\x08\x14\xbc\xda\x16n\xfc[\x12\x11\xdc\x07\x09m\
+\xceE\x0ae\x5c\x19\x07\x10\x0b\x04\xfe\xf8\xd3$\xb0\xf9\
+=\xc6\xaf!\xc7w\xbc\xc0\xb8\xb7W\x9ec\xf3\xfd\x19\
+\xb3j.\x96C\xcc\xd2k\x1f\xc3\xfb\xa0n\xfc\xeeJ\
+\x160\xa6\xc5\x1d\xd5\x07\xc3A\x8e\x1e\x83kT\xe9\xd9\
+S\x95\xb4\x9a\xa5\x9f\x80\x81J\x14\xd0|6\x1e\x1c\x09\
+>H\xdbcCbA\x95`\xcb\xae\x91H\xe0\x03\x12\
+\x90\x93\xa8\xb8Bd\x17\xab\xa9\x12H\x8f\xb12\x84@\
+\x8e,'\xc7\x83mY\x1c\xdb\xca1W&\xee\xdc\xac\
+\x8f\xc3\xcfy`\xfc\x1e\x81\x14\x13\x93+\xa4\x17\xc8\x98\
+A^\xc8\x02\x22\xa0\x02\xaa\xcc\xcf\x09\xb8\x80\xea3~\
+\x0b\x98\x84c\xb8/*\xe8\x04\x8c \x10VlT\x14\
+Xx\xdc\xe7\xd2\x9a`lx\x04,\xf4\x8e\x13(\xb5\
+2u+(P\xa7%aY\xc9\xb2\xadb\xd2\x99\x01\
+\xe2I@\xdb\xb6`\xf0\x1cI\xe8\x00\xc1\x07A\xd2\xca\
+R\xee\xac\xde\xe0\xfd\x86\xca\xa0\x1dV66\x1c\x1dH\
+\xe1Z\xae\x02*B<\xff\xe7i<\xd88\x09\xc0\xf9\
+\xfd'\xcc\xa6?\xc8\xcf=98vfMo\xc8\xfe\
+,K\x07\x14\xbd%\xafd!\xf3yH<\xa9B\x98\
+\xc9\xcb\xb6\xaf\x10\x19\xea\xb9\x9a\x5c\x16V\xe4\xf2L\xee\
+\x88\xea\x03\xcf\x15\xbdm\xc6\x13\x16^H%\x1bh\x90\
+3\x9bl\x5c$\xd08\x18\x9a^<\xf7V5z\xa9\
+@\xcf\xdcR\x82\x9c \xd0w\xd8\x89A\xe8\xf0\x0f(\
+\x18\x09\x0a2\xc1$\x0a\x98wr\xc4 \x07\xb3\x0c\x0f\
+\x08\x02d\xa8\xd4Ci\xae\x08\xd4\x03`Y&\x80 \
+S\x0c\xe9\x1f\x953\x8d\x97\xc9\x8e\x98\x9f\xb0\xb2\x8b\x95\
+\xde\x07\x18-\x06@^I\xcc\xb0oB\x0e\x87\xae9\
+\xf3Drq@\xeb\xe8\x95\x8e\xce\xde\xe8\xed\xcd\x10\xb1\
+\x05341W\x1a\xbc\xee\x04\xd9\x05R\x9c\x82\xd2\xa1\
+\x12\xff\xb1\x8c\xb1\x99\xea\x8fO\x01\xcc\xf1%Q\xd4=\
+\xaf[\xb5{^\x96\xb3:?\x93\xab\xd1S\xab\xca^\
+P\xd2\x05)\x1d=\xeaf9&\x01\xa3\xf1f\x9dQ\
+\xb91\x84\x15\x16fX\xc6\xbf\x92\xec\x8c*q\xa0^\
+x\x02\x07\xf61C\x9e\xdf?\xc8\xa0\xd1Z2\xd9#\
+\xac\x90\x8e\xb9\x12\x81\xac\x91\x02uH\xb0\xe8\x0d\x06\x9a\
+\xdc\xdf\x1fVd\xc62\xb2\xe8\xc3%`\xebnL\xf6\
+\xfb\xe2\xd8\xe6\x0e\xd2\xd7\x16V\xeb\xdc\x22\x90\x1c\x85\xf1\
+9\xc9R \xda\xbf>\xd9\x96\xda\xdf\xc7z\xae\xbf\x91\
+#\x1b\x89\x88\x95\xc2\xd24yQX\xfaz\xbed\xe1\
+\x18\xdf\x9e\xec\x8e\xea\x5c\xa4\xa2G\x05l\x13\xb54(\
+\xf1\xc8:\xe9N\xe9\xbe\xd0}\xa1@|\xad\xdb.\xf5\
+\x88\xd1W\xc3\x8az\xc3\xf4\x99\xd3_\x9dN_\xe7\xe3\
+5\xcd\x9b\xe9\xbb\xc3\xd2\xcfg\x85\xa5\xeb[\xc2\xb4\xce\
+\xef\xac*\x868\x1c \xb0\x82\xed\xfcg\xd5\xfa\xc0\x11\
+:@\x95'\x1cu\x02\x0d\xce\xf1\x8dD*&\xa8\xbc\
+\x13)Z\x0f$\x8c\xdc\x12\x11\xdc\x0c\xe9\xf9v\xeb\x87\
+\xa5\xeb\xcf\xc2\xca}\x98u\x9b\xca\x1b$\x81\xec7p\
+\xd1\xb0_\xc0:\xcfyB\xe2\x1d\x04\x93\x12x\xa8%\
+\x98\x8b\x81\x8a*\x01\x0b\xfb\x10\x08/!T\xe0\x940\
+\xf4}\xdf\xa9\xfd\xa6\xf6\xab\xc8i\x15\x00\x182O\x85\
+\x99\xca\xd8\xfb\xc3\x04\xd5\x7fU\xc5\x01\x11\xa4~\x7f\xaf\
+\xe6\xc3\x0eai\x9a\x1d\x9a\xecc\xaa\xa4\xbe\xaf\xf4\xac\
+C\x9a\x0b\xd4\xbd_6\xac\xaa\x8c\xef6\xf4\xe6w\xa7\
+\x85UP`\xfc\x15\xe4\xe2 \xb5\xd4>oD\x01\x08\
+\x18\x91s\x1aY\x06\x19(\xe3\xadsir\xc8\x80\xc0\
+\x1am2\x8c\xa7efAr\x01u'QKo\xb6\
+\xf6\xc7\xd1\xa7\x95p\x17gJ?N\x16\xaa\x1d\x9fK\
+\xf6\xf9\x82\x00t\x0b\x93\xd6\x8f\xcf\xad\xa8\x03\x9fP!\
+\x85\x02\x11\x96\x02\xb8\xf1\xa9\xc9N+\xea\x1ay?\xfa\
+J\x95\xd8\x15\xd9\xdd\xf4\x8f\xc2\xd4\xca\xb8o\xe5G\xa2\
+\xfb\x0e7\x13\xaa8p\xb9\x90X\xd2\xbe?\xfapX\
+\x91s\xed\x8f\x0bK\xdf\x7f(,}\xfdhX\xc5\x09\
+\xc1\xeb\xd3\x1a\x86\x0a\x06\x1cZ\xb4\xc4\x00i\x07\x09\x09\
+B\x16\xee\x03\xb85h\xa5\xd4\xfb\x91\x80s\xc2\xe5A\
+\x91U\xd2\xa2\xab\xe7kH\xb7\x10i$,\x80\xe8\xfb\
+\xf3*\xe1n\xd2@\xd6\x19d\xba\xf2\xd3Ln\xab\x02\
+J\xff\xcb\xb0\xca\x1f\x15B\x0c\xa4\x89\x11] \x8c@\
+\xecQ\xc1&\xd0$p%\xe1\xdc\x9c\xdbn\xfd\x834\
+\xf1=J\x80\xaa\xe5\xcf\x01,r\xb1\x04\xa2\xf8m\xcc\
+Oz\xef\xf7R\xab H=\xda4A(\xd1\xf2\x07\
+9\xa1\xe43=/\xf9\xbc\xac\x7fqy\xf8\xfc\xc7\xff\
+\x04Q\xc1\xd7\xb4\xd9\xe0\xf3\xbe\x00\x00 \x00IDA\
+T\x0a\xac\x9a=\xe7\xf0\xb7\x86\xfdH\xad\x0bNl\x12\
+w\xb0O\xe3w \x8f\xcc\xfcb\xbff<y\x9e\xb4\
+\xc86\x08.#\x1b\x08\xf4\xf1\xf78\x7f\xcf\x95:\x87\
+\x90\x7f\x93?\x85U\x010\x89\x0a\x12\x19\x04\xdc\x90G\
++\x8epB\x88\xb8\x84\xfd\x9ax\x85\xfb%A\xd5\xb2\
+\xf3\xe3\x8f\x12\xc8\xf39A\x98P\xf1\xa7\x05\x8d\xbfc\
+\x7f\xc7\xdf\x85\x0c\x1bD\x0d-m\xbc>\x01?\x9f\x03\
+\x95\x10q\xba\xf8\xf7\x09\xf0\xf1\x9f\x9b\xd7\xf7\xf8pn\
+\x92\x10\x8dQ\x7f\xa2:G\x99\x07\xcc\x1f~\x8f\x04\xfe\
+\xb3q\xd8\xb5\x08^\xe2P\xe6\x89\xc6y&/\xa7\xdb\
+\xab\x808*\xf4w\x14\xc8\xbf\x17\x86*\xc6\xd9\x91_\
+\xa9\x92\xbf\x88<\xf0\xf6\xeaY\x5c\xa7:x\x91\xe3x\
+2\x87\xa0fYu\xa0\xc0\x83d\x02\xf0>8 @\
+\x17\xc4&\xed@\xa6\x85L\xb7\xb2i\x0c\x04\x99\xb9\x22\
+\x9f6\xfc#\xc0\xe3>\x08t[6E\x1e \x81\x1a\
+\x95\xce\xf6A\x94\xbf\x07\xca?\x1c\x88\x8fh#i+\
+\xea-$\xbc\xd1yto\xd9-jy\xd8^l\xf8\
+\x0d7\x02\x19Q\xebh\xf2\xf7, \x02\xba\xbb4A\
+\x95\x19\x8c:ET*\x8c\x08\xe0@#@\xe5\xb9\xb6\
+\xd0s\xc8\x099\xf0\xb5 \x80\xb8\xd0\xb3\xea\xf1\xc5\xb1\
+ \xf0\x93C\xe8\xe7\xb8\xba\x12\x1a\x04>\x8c\xcf\x06z\
+\xdfF\x86\xc4\xafCe\xa5\xd6\x91]\xbdb\xb1\xe5\xf3\
+q\xe0\x11X\xaf\xaa\xc4\x03\x89\x12\x02j6<6j\
+66\x91$z\x03\xd4\x06\xef\x9eo\xc6\x89\xcc.\x09\
+\x026:\x1c\x02\x024\x16,\x018W\x02\x01\x12\x01\
+\x0d\xf2\xc4\xf7\xcf\xf7I\xf80o8\xf8\xc8\x04\x83\xb4\
+Qo\x1a\x157z\x00\xd1\xedv\x05]:\xd8\xde\xd0\
+\xa8T1_H,\x80\x88@\x15\x00U\x04z\x0e\x05\
+\xf5\xa5\x02\xe4J\x1f\x99q\xb8% ?\xa3\xb2'\xc8\
+\x99\x13\x16\xb0?\xbft\xb2\xc1\xe4\xa5y\x83\xcc\x89\xc8\
+,3w~U\xd1&q&\xc8\x9d\xe7\xc1'\xb2\x95\
+@\x05G\x81J-\x1b4?\xe7\xc0\xc6\xd1\x82,\x93\
+\xfb\xc6A\x84C\x04\x87\x83\xcc:\xfb\x04\x89\x11\xf6!\
+\xa0\xf0kf\xccN\xe9\xed\xe2\xe0\xc1\xd1\xc3\xb1\x82\x84\
+\x10r\xb3\x9f\x86\x95\xde[\xd4\x1e\x1c`\x13H\xd1s\
+\xaf}~\xf2\x1d\xe90\xdf\xd5\xdf\xd9\xdfY\xfd=\xbd\
+\xa6\xa8\x15D=5TH\x1e\x08+z\xed<W\xee\
+\xc7\xad\x11\xe8\x14S\xa1\xd1:\xea\xff\x10\x96~\xef\x92\
+\xb0*1I\x05\x0d\xfdf\xcd\xb7~\xe1\xb0*!\xc2\
+:\x95c\x87\x8c[\x7fG\x7f{\x7f{\xc5\xa2L\xcb\
+\x96t\xe0\xcd\x1a\x0d\xe2B\x9c\x1d\xe6\xb6\xa0\x22\xaf\x96\
+\x92\xf1\xf6a\xb9\xe7\xf9\x89\xe8y\xee\xae\x0dK\xd7\x9f\
+&\xbb\xb6\x92\xa5\x0b\xc7\xf0*%\xc6\xde\xa8DD\xb0\
+\xe4\x7f0\xd9\x07\xa4\xeb\xbesU\xc9U\x00\xc6\xf3F\
+\xe5%\xf7d\x7fM\x89\x88ph7O\xb6Y\x81\xd2\
+NNHv\xbc\x02\xe4\xcbr\x00>\xf4\xfc_\xa0y\
+\xbe\xfb\x00\xdd\xeeN\x0c+$\xac\xdd)a\xe9\xfa\xee\
+\xb0t}yX\xba>',]']\xdfM\xcas\
+\x1e}.,}?\xff+\x81 \xadA\xdd\xeea%\
+\xf1\x9f9\x0d\xd2\xba\xea.L\x162\x95\x8b'\x0b\x15\
+\x86\xcf\x87\xa5k\xc6\x9e\xa7\xebC\xdd\xc3\xdd\xc3\x95\x03\
+\xa8\x0a\x1cd\x8d&\x11\x93|\xe5\xe8\xde\xb0t='\
+\xac$6\xbb\xc7\xc2\xd2\xf5\xdfaU\xe5_\xfb\xb8I\
+i\x09\xfc\xe5\x80\x8eN\x0b\xab\xd6\xc1k\xc2\xd2\xef\x7f\
+,\xac:g\xa9\xd8\xe0\x00\xf1\x0fYK\xb5L\xf4\xa7\
+\x84\x95\xf5G\xa2h\xbcr\x98\x02\xf0C\xd3\xf5\x95a\
+\xe9\xfbg\x87\xa5\xaf\xdf\x11\x96\xbe\xde.,#)\xbe\
+\xd5G\xa5\xf9\x03C\x02\xcb\x0e\xf1\x9e\x82\xa4\xbfT\xe7\
+\x17\xb2\xad\xdc'\xfe\x84\xa0\xeb\xb0\xf0g\xe8\xff\xe3\x95\
+\xbe\xfa\x83\xc9\x1e(\x01\xb5\x13\x84\x0a\xa4\xfb\xd7\x84\xa5\
+\xeb\xf7\xc3J I+\xc3\xcc\xc6a\x95^\xba\xf4\xd4\
+\xddB\xf7\xd3\xb0r\xbed\x96\xfd\x934\x7f7/\x15\
+n\xcb\x06\xd2\xdb\xce\xf9\xf9\xb8\xfc\x13*\xc8\xa8!\xc8\
+a\x0f\xef2\x10\xa0@\xa4IH\x98\xd5^\xa4g\xdd\
+<\xddL\x97\xfc\xbb>\xd4\x00'\xd5\xfd\xec\x96l\xd7\
+\x0a\x92\x1d\x89\xa1\x03\xab@F\x89\xd0\xfe\x8c\xb0t\xdd\
+3,=\x9fk\xc3\x0aW\xd1\xf4\x85a\xe9\xfb[\x84\
+\x89[a\x83\x92\xc8E}\xc4jE\xc8/\xd3\xdb\xcd\
+<\xe3\xdc\x04\xc9#\xe4\x97+\x87\xb4V\xde\x11VZ\
+E\x9c@\x22\x80\xc8\xff\x0a\x02\x82\x84x\xbfmX\xd5\
+\xe3\x8e\x7f\x8b\x7f\xa5}\x1b\x7fh\xb2IX\xd5\x22$\
+H<\xe76\xad\x06<w\xe6'\x086\xb3\xc3+\xd0\
+u\x02\xab\x97,#\x08 %\xaaI0e\xbc\xdeV\
+\x95\xaa\x92\xd8\xf8!O\xcd\xfb\xd5^\x05J\x9eU\x1b\
+\xb6\xd09pE%_}[X\xfa\xf9\x1f\xfb\x81\xcc\
+\xed\xa8\xa9\xa3\x22!\x9d\xc6\x22s2LN\x13\x89\xe7\
+\x85\x92\xdb\x03!\x80\x5c\x1e$\xdb\x14\xe8\xe0\xfc\xf9\xd4\
+\x90\xc06\x07\x8a\x90P&\xe7#\xf0;9\xac\xf2#\
+\xe8E'\xf1\xbf\xb7\x12\x08$\xa0h1\x91?9\xba\
+2\xac$\x8e)\xd48aFk\x01\xba\xf2\x14:\xf5\
+~\xbe?\x0aq\xb4\x8a\x5c\xaa\xc4\xe2\xf7T\x80\x03\x99\
+\xc2?\xfc\x12H\x9e!=\x85\x14\x8fs\x14\xae\x14\x10\
++?\x0a\xabZS\xd8'\xf1\xa7\xb8?\x10\x8f \x14\
+h\xb9\xa0\x10%5\x12\x9f\xeb\xd7e+\xcf\x87\x96\x08\
+\x90\x095\xc7\xdc\xfd\x15\x82\x95\xc0\x98\xb8\x89q\xa0\x22\
+Ob\x16\x7f\x8e\xb8\x8c@\xbb\x09\xecM\x92G\xa0O\
+!\x0b?\x9d\xc0\x9e\x04\x06d\x9d$P\xf8=\xe2<\
+\xfc<\x15\x06=\xbe\xf8{\xbc\x1e\x7f\xd7\xcam\x830\
+\x91?\x94\xd3\x13wTr\xa6\x8c\x1bq\x03\x8e\x1d\x85\
+%>'\xf1A[\x98\xe6\xef\x187\xe2j\xc6\x89q\
+W|8\x93\xd9\x8b?\xa1\x85\xb3k\xd1\x89\x9d\x8b\xec\
+N\x81\xc8\xe4\xc6\xb0\xc2\x0a\xecL\x11\xe4`\xd1C\xf9\
+\xd6*Pl\xd9\x10[\xc8B\x0b\x8d\xe7\xca\x84\x86\xcc\
+\x8d\x0d\x0d6xX\xd8\xe9a\x02RI\xc5W\xbd&\
+)l\x1c*\xc6k>\x93M\xde\x99\xbe6\x81\xd0f\
+L\x90!\x11\x9b-=NsAW\x18\xf0\xa7\xf5\x00\
+zXw\x1a\x19\x08\x02\xeb\xf9\x05\xf9 \xf0\xe5\x81\xea\
+\xf3:\xe0\xa5\xa7\x8f\x07\xfc\x90\x0eZ\x16\x0c\x13\x92\x09\
+\x02\x94\x84\xabu}\x86\xcfCf\xcb2u\x1c@\x90\
+<\xca\xc16\x84x\xad\x06\x92\xdf\xea\xd8\x13\xa83\xb1\
+\xda\x9e\x96\x96\xbd\x9e\xf1g\x83\xa1\x15\xa1\xd5\xb9\xe7\xfe\
+\x99\xd0\x5cy]\x12\x09\xb48P\x19g\xde@r\xc8\
+\xf8\xae\xa3\xf9\xc3\xbc\xd3\xeb\x9b\xd4\x92\x00\x9b\xe7H\x00\
+\xf1\x8e\xb0*\xc3K\x22\xa9\xa8a\x0cH\x84V\x07\xb4\
+\xed\x95o\x13\x02$6B\x7f|\xde\x0a\xf2\xd7\xaaI\
+\x80\x08`\x9d0O\xdb^(6\x1eH\xf0xnz\
+=Xm\xad\xd3\xab\x80\x82\xc0p\xae\x0c\xe2T\x930\
+ccf\x83e\xe3\x17\xc4\xd3$]\xb0\x09S)\xda\
+7\xac\xfa<\xa8)\xc0%\xf2\xc1\xb0J\xcf\x18d\x07\
+\x81:\x19q\x02\x0cU$\x81\x82{\x1dh\xfc\x080\
+\x9cY\xe5\xf9\xf3\xfe$\xc6\xc8\xc8\x02%\x13T\xd0\xe4\
+\x868\xa4\xc7\x85U\xf3\xb8e)f\x9e\xf2|\xb9\x7f\
+\xd4\x08\xc2-\xda:\x1f\xb0\xe7\xc6\x01\x9be\xe5\xaa\xd6\
+\x09W\xc48P\x90\xc3\xc2\x01\x5c \xacRI\xb8q\
+hypK\x07\x19y%\x82&\x8f\x0f\xfb\xd4\xf8\xac\
+\xf1\x99\xe33+Gl\xa7\xe1\xb9X\xa5\x00\xc7%\x8e\
+\x9d\x87\x0a$\xb0[>\xac:h\xe0\xd0\xe0\xc0\x8d\xd9\
+]\xe9\x91{\xbe(\xa0\x19A\x82\xa9\xe7bn\x10*\
+\x8b\x04\xce\x22\xa7\x1bo\x1cV\xe6\x0b\xbd\xcfS\xc7\x0a\
+q\xb0\x92\x12\xcf\xe2\x0c1\x22\x86\x8a\x04\xbd\xf2p\x97\
+h\x9c8Hy\xbf\xd1O\xc2\xaa}\x9f\x1e^\x052\
+\xfd\x8b\xc3*\xd9\xc5_\x0e\xac\xd5\xd9\xc1}\xbbzz\
+?\x99\x03\xbb\x0fD\x22`\xb4{X\x15P\xdc\x16\x96\
+\xc6\xef+\xc9N\xd7\xfcI\x01\xdb\x9c\xd9aJ\xd4\x5c\
+PH\xf6\xba\x15\x92\xadXZX\xa8\x94vgu_\
+\xeb\x92#\x9b\xfe\xffz\xf7\xf5\x22\xc3\xd7\xfd#,]\
+\xdf\x1eV*\xe6\xd3k\x87\xa5\xaf_\xd0\xad\xdd\xc5\xf5\
+\xdbC\xc51\xb9\xfb9Q\xe9J\x94\x12-\x93\xff\x09\
+\xab\xf6;\x91\xb5\xf9\xdcd\x9f\x8fzzp\x14\x5c\x1c\
+VZ\xd3\xd2\xabf\xd9\xd8\xd1w\xc3\x0a\xb2\x06}l\
+\xf6\xa3\xd1\x02AG\x99\xae\xf7\x04\xdfw\x85$\xd0y\
+evq=\x17\x93\x1e\x0a\xd9\xd3}9,\x8d\xf7\xbb\
+\xc2*\xf23A\xa7\x09T\xbb\x83\xc3\xd2<:s\x98\
+\xef$\x0a\x9c\xb8\x83<\x93\xf3_\x88\xa7\xee\xc7a\xe9\
+zPXzN\xbb\x85\xa5\xd7Y+\xacB\xc2\xbc:\
+,}\xff\xcda\xe9\xfa\xea\xb0t\xfd`X\xfa\xbb\xc3\
+\xc3\xd2\xd7'\x8c?3\xfeLi\x991g\xc5\xd6\x03\
+Yb\x7fC\x7f}\x7f}\x86\xb4\x0fH%\x12\x8c\xaa\
+\xf0g\xc8q\xec\x83\xbb\x0cry\xdd\xfea\xa52\xdf\
+\xff0Y\x0a\x94\xfa\x05\xc3\x0a\xa7\xcd\xe8\xb2\xe1\xe7&\
+\xb7\x84\x0c\x10\x128Ux\xfb\x83\xc2JO}\xb7d\
+X\x15\x98\xabBH\x22\xb4\xfbaX\xd5#,\x84P\
+N\x80\xed\x94\x13\x11\x0f\xf5\x0f\xa9\xa5hR\xe9\x9f\x13\
+x\x90\xf8P\xc2\xde\xb2\x81\xcf\xed\x97\xed\x9f[Z\x0a\
+\xd2\xb8$+\x09\xe6\xc9SR\x09\x987\xd9<B\x08\
+-\x90\xf7\xaf\x9d\x22A\xcc\xfc0\xb4<\x128\xdb\x16\
+9\xd8\xfe\xa9dO\xab\xb5\xe2A\x05\xda\xe9<\x9c\xe7\
+\xe5\xc96Q\xe0\xf6\x83\x82(\x02\x01\xd6\x1f\x18\x96\xc9\
+;\x93edT\xd8\xd4(\xff+\xc8\xb5\xfe\x91\xb0\x8a\
+\xd4\x1a\xff\x0cr\xe3Z~\xf4\x9a*\xf0\x02\x99&\xae\
+\x1aZ\x95\x088Q\x1f\xf1y\x04\xa9\xa1\xd4\x1b\xe8\xe5\
+\x86\x842\xb7:\xbc\xb4Bf\xb1\x1f+\xa1n\xb29\
+\x12\x10\x92o\xb6\xbc%\xdcTJ8Q 05\
+\xd9g\x04\x88WV-\x00 \x1c@\xfa\xea\x9cf_\
+\xc9\xfe\xf1ZB,l(r\xb5(\x14|9Y\xa8\
+\xa7,\x1cV82\xfa\x8f$\xdb?\x07\xf4\x17\xe6\xf5\
+\x80\xcaT\x0a\x9fb\xbedo\xe9\xf4\xaaG\x9d\x02\x99\
+\xc8\x18!\x815i \x9c# \x86\xdf%\xa4\xe7\xbf\
+\x14\x00\xf1\xf7j\x11t\xcf>\xaa\x05p\xa1\xd0\xf3\xce\
+9\xb9\xadZ\xb3\xf0+\xf0\xf38\x7f( P@\xe2\
+9(\x81\xe2\x80\x92B\x15j\x22*\xe8X\xc5\x04?\
+\x05\xb5\x1b\xb5L:\x00\xd7~a\xa4\x11\x95n\x90\x11\
+p\x07\xa8\xc5\x95\x96 \xfbm\xf8\x09\xc8\x8b_\x98\xad\
+$\x06x=\xe2\x06\xfce\xfcz\xfc}\xfcu\xe23\
+\xfcC\xfc6\xd4Z\x08\xd8Y\x07\x8c\x0f\xbf\x8f\x7f\x89\
+\xff\x8c\xff\xdd\x92\x88\xb7\x81>\x89\x03\xee\x83\x00\x1b\xae\
+\x158+(\x90\xb5\x15\xff&\xe1\xe0V\x02\xee\x9f\xf1\
+$\x90\xe7kH\x83\xdb\xd6\x03\xe20\xfc1\xbe\xe6s\
+J\xe5\x22\xefs\xb7WHP\x10$\xfc\x1eqg\xcb\
+\x15\xc6\x15\x7f\x9fx\x80\xc41\x85\xdf6\x1em\xe3\xa7\
+\xa6\x90<\x90\x00\xa2\xbb\xfb\xa5\x0a\x12\xbc\xde\xa0\xdf\x9a\
+\xc3\x8f%\xe5\xf8.\xa5\x0a\xcf\x8aUo?\x81\x07\x10\
+Y\x0e\xde\xd8\xa87\x17t}\x8d\x0a\xc2DE\xee\xd9\
+\x12\x01\x0a,Mj\x87~)\x01$\x95k\xaeTR\
+!\xef\xd0\xd7\xa3\xd9\x0ap\x08\x0c\xdb@\x116tz\
+\xe8I \x10pqm\x03#&\x1c\xff\xc6\x86V\x0c\
+\x01:\x0f\x0a2\x0b*\xf5\xab\x87=\xa3\xf7ex\x10\
+,4\x02k\x02`\x1e \x13\x90\xf1\x99\x98-~\xa8\
+ \x92x\xa1\x02\xcf\xfd\x92\xd8 p!\xc1\xc0\xeb\xb3\
+\x90\x99\xa87k\x22\xde\xae\x89\xdeV\x9a\x05\x0d3\xf9\
+#\xcf\x8f\x16\x05 \x98<\xdfU\x14\x88\x130\xb1\x81\
+,\xdd\x90\x0e*\xe3\xef\x80\x95\x00\x9e\xd7'\xd1@\xe0\
+\xcb\x02\xe1s\xc2\xae\xbd\x84z\xc77Q\xe2bY9\
+\xb8\xe2 \x08\x91\xb4\x5c\x99\x5cO\xf3\x84\xf9\xa3\x8d\xd6\
+r:\xb4\x82\xf0~dFI\x84\xbdA\x15X\x02)\
+\x12M\x22I\x9az\xfd@\x02\xe7\x04\x0a\xf3\x0e\xc7\x1a\
+\xa4\x09=\xe1@\xf0hMi\x13f\xbc/\x81\x0b\x1b\
+C\x9bX\xe2\xf7q\xecY\x0fd q@h\x8dh\
+e\xb6@V\xe8jU\x0az\xd89\xf0\x08\x9c\xd9X\
+Y\x97:\x9088}\xc0\xf1\xfe\xfc\x1d\x07\x0d\x19\x7f\
+e\xbc\xdd{\xc9|\xe3\xf9K\xdf\x1e\x87\x8c\x00\xc0\xf3\
+\x8dD\x0c\x1b!\x07\x0a\x09\x18\x12\x5c\x90\x05B\x92H\
+\xab\x8d\x02~\x1f \xcfB\x02c\xc4\x04\x81\xa4\x12\x13\
+nAb\x9e\xb0\xfei\xb9 3\x0c\xd2\x05yN\xb8\
+\x0bH`\xf2\xb9!\x05\xd2\x86\xed\x96\x05U\x90\x8c4\
+\xbaH\x01\x84Z@\xdc\xbb\xaf\x831\xf7\xe6\xefV\x91\
+x\x11h\xd1\xe2E\x85\xe3\x7f\xb2\xfeFqhcU\
+\xae]\x02\xd5\xec\xce\xff\xa0BF,\x95WT\x81\x8a\
+\x12\xf8\x07\x14\xf4\xfa\xe2\x80\xa1\x0e`\x194A\xe4 \
+i4\xf2\x8b\xfd\x82J\x07\x10F!\xc9 At\xeb\
+\x81\x12\xd0\x8cK\xb7kX\xda\x16\x8e\x0c+\xaa\x05N\
+@K\x05\x80DU\xae\xbc\x9fP\x1c\x01\x10.F\xac\
+\x11\x08\xf3\xfc \xa7\x04\xe2\xb7S\xb6\x12\x80\xae\x1c\x96\
+\x96\xe5&\xc9\x22\xb0\x7f*,\x07\xc0\x0b\x84\x1aC\xf7\
+\xe9d\xd1;}BX\xfa\xfeU\xc9\xae.\x95{\x9e\
+\x939\x14\xb6\x1a\xb8/\xa8p\x9b$P\xac\xcd\x96U\
+T/:\x8e\xecd\xbe\x08\x99JB\xaa[\x22,]\
+\xcf\x0d+\xf3\x8e\xf1\xc5a\x9e,\x94l\x96\x02\x91/\
+\xa8\xc5fs\x05\x02\xdf-\x09)HZ\xd1%\x1f-\
+\x1fV!H\x84D\x1b]\xa8\xe7\x85,\x14\x8e\x96\x9e\
+swhX\xba\xee\x15V\xb1\xfa\xeb\xf9C\x06\x092\
+\xc0\x90a\x1c\x1c\xb8o\x04\xb1\xb6<\xa5\xe6\x89I\xbb\
+H\x08\x92\x98\x90\xa3\xde]\x19Vdy\xe7\x5c\x15\x96\
+\xae\x1f\x08K\xc7\xf9\xeda\x85L\xab\xffc\x7fk\x9f\
+\x1c\xba\xf1-a\xe9zuX\xfa\xfeg\xfa\x13\xfb\x13\
+\xd3\xd7\xbf\x08K\x7f\x7foXz\xff\x95\xc2J\xc5\xb4\
+?=,'0\x86\x00\xfa\xa5a\xe9zQX\xba\xee\
+\x18V\x90*y|\xf7\xa9\x12\xa7\xb1\xab\xa5}\xf7\xe9\
+\x9f\x86\x15\x7f\xc9\x81\xf3m\xaa\xe0R\x89\x02\xe9#\xae\
+\x13#\xaafO\xd6\x082\xb6~\xd3~\xb3>\x05\xaa\
+s~:\xe7\xda9\xd7\x96\x9e\xe8\xc9\x16C\xc2c\xf4\
+T\x08j\xa6\xfbX%,}=\x19\xb8\x1e\xf2<\xfe\
+t\xa9\x0cG]7#\xc3.\x1c\x12\xa5F\xb6(P\
+\x9bl3yc \x8f\xfa\xb5\xc3\x0ai\xe7x\xc7\xb0\
+\xf4\xfe\x9f\x9ds\xe2\x9c\x13+$\x01\xe4\x95OL\x1e\
+\xcf\x09\x8b\xbd\xc3\x0a\x12#\x93'\xbeZ\xebs\x83\xca\
+\xdf\x5ci`\x95\x1f\xef\x1cV\xce\x85\x99e\x92\xa5\xf5\
+\xd1}.\xd9\x89b\xe9O\xfb\xc1\xf8\x82d\xe7W\x89\
+\x96\xc3\xc2\x92{\xf7\xbe\xb0t_\x97\x85\xa5\xeb\xff\x86\
+\xa5\x9f\xdf\x10V\xf9-$\x02n\x1d\xe6\x85\x0bB@\
+\xb2\xf1\xd3\x98\xaf\x90@\xe2'\xb1_>\x1dV%r\
+\xd97\x95X\xcb*+\xc15\xf1\xfb\xb0\x9c\xc09\xb8\
+?8W\xee\x07\x8e\x05!O\xdc\xe3\xae}\xa9\xffx\
+\xb2\xc3\xf2\xdfg\xd5\x8f\x14t\x0d\x01\xde\xe6\x99\x16\xba\
+\x90\xb0\xceI6.-YNX\xe0\x17\xaaPC\xab\
+W.\x84\xbc\xb3\x1awU\xea\xdd\x22\xb9Q\xc6x\x16\
+\xf9U\x15\xac\x9c\xf8C\xae\x15$\x02-K\xeb\x0er\
+\xa6\x90[\x82\xb0h\xc9\x87\x19\xa7\xfeJq\xe7\xfcB\
+\x5c\x04p\x81\xa9E\x16\xf2BW\xfe\x09\x14O\x19\xe4\
+A\x8d4$\xf0\x83\x14\x11\x92\xe0\xbd\xc2\xca8M>\
+7\xf9\xec\xe4\xb39\x01\x95\xff\xce\x1cFJ\x8c:.\
+\xa0\xb5\xe2\xb3\xc3\xef\x9b\x04\x14\xff\x08?\x16\xa4\x80\x12\
+\xf3. \xf0s\xfc[\xfc\x17\xfc\x10\xe2\x01\xfcAd\
+S\x85\xf0\x81<\xd2\x1c\x08\xb4>\xd0\xc2\x00\x14\x1f\xff\
+\x88\xe7\x86\xbfC\xcb\x1e\xa4up{\x81\xf0\xa2\x22O\
+\x82\x8bB\x07\xfe7$\xa1\x14\x84\x08\xf8\x81\xcc\x13\xf0\
+R8\x82\xc3\x05.\x02\x02[\xfcc\x02~\xfc)\xfc\
+[\xd6\x17\xf7\x8d\x1fJ\xc5\x9fyI \xce\xfb3\x8e\
+-B\x80D%?\xa7\x90C\xa2\x01\xff\x0d\x84\x08\xe4\
+\x84\xbc\x0e\xbfG\x00\xcf\xd7\xc8TR\xe9\xbf3c\x8a\
+\xcb\xfd\xf2~|\x0d\x92\xb4\xe6\x02xNu?\x1a?\
+sU5-\xc6.\xfc\x91\xa0\xe293~maU\
+\xfb\xd1\x8c\xa1u1\xdc\xffRFguA\xf8\x96\xd6\
+\x1fv\xd5D\xd6F\xe3\xaf\xb9\x91\x08\xbbg\x17\x1d\xf6\
+\x0c\xc4:\xb5\x0aX\x98\xe0\x91\x97^N\x13yQ9\
+2K\xfd\x97D\x00\x99%\x02\xd8\xb629n\x02\xee\
+Vu\xe0^U\xba!Wb\x02\xb1\x11\x13\x98\xb6\x19\
+.\x06\x88\xdf'!!\x87\xc7\x01\x07\x95\xebe\x15X\
+/\xa6\xd7\xe5\xef\x0b\x92`\xb8O\x160\x0f\x86\xca0\
+\x018\x9f\x13Y\x1c\xa06 \x026T\xa01\x8f\xc6\
+sQ\x8d;\x1c\x0c\xd2\xeb\xb5|]\x0b!a\xfc\x0a\
+\x94e\x08\xc8\x98\x88 <~'9\x99\xed\xd4z@\
+\xe2\x80\xc0\x9cq\xe6\xf5\xa8\xe4\xe38k#\x06\x02:\
+\xb5\xa92\xe3<\x7f\xc6\x99\x89K%\x1fR=\x9e;\
+\xe3K@\x0b\xa7\x00\x7f\xc7<\xe1\x8a<b\x0b\x99\xe1\
+\xf9>G\x1b'\xf3\x96\xfb%\xf0%\x00\xa0\x17\x1d(\
+\xdb\x9f\xc3\x0a\xe4/\xfbC\xe9\xf5G_\x0b\xab\xe6\x09\
+\x1b6\xf7C\xa6\x5c\xba\xeb\xee\xb1\x22\x11\x86<\x0a\x08\
+\x04\x02\x1fm\xf0F\x06P\x01ouFI\x00\xb4\xc8\
+\x09\x02a\xe6\x15\x81\x10\xe3A%\x8c\xcf\xcb|\xc6\xc1\
+a|Y'\xfc\xe3u9P\xf9\xbc|~\xfe\x9e\xf9\
+A\x8b\x886z \xdb\xee\xb9\x07\x99\x80\xee-\x19x\
+\x1dd\x86\xcc\xf1\xb9\xc8\x80Kf\xcb\xec\xe8\x04\x90\xcc\
+\xc3\x96$\x91\xfbf\xdc\x80\x04s\xe0\xf0y\xf8=6\
+\xf2\xe6`\xf1\x01\x0a\x99\x99z\xd8\xddkI/\xf17\
+G\xdf\x18}\xa3\x92\xd1\xa2\xe7\x8c\x16* \xea\xe2.\
+0k.\xcf\x8bD\x04\x9c\x1f\xec'@\xfb\xd4\xb3h\
+\x04\x05j\x00J\xdc\x8e\xb6\x0a+\xd7\xee\xab\x03) \
+$G\x96\xfd\xbaC\xbd\xe8\xc8\x1dj=d\x88\xffF\
+\xaa\xd0\xa7\xfb\x1f\xfd\xbfd\xff\xaa\xd8\xaai\xe1\xb85\
+\xd9\x1f\x05\x05\x9d\xb7z\x1eJ\x8cY^H\xe4m\x19\
+\xb2\xf8\x91j=*\x01\xe1@N\x81\x06\x89\x14\xd4\x01\
+\xccb\xfd\xc5\x81\xfc\xc8\x0e\x8ezG\xfbu\xc3\xd2\xe7\
+\xfcmXa\xadw\x80\xadD\xcb\xf8\xd00\x91\x80U\
+z\xcb\xa3\xa9\xa1\xc0\xe7@\xfb\x1bz~ \x0c\xd4k\
+;\xba+\xacT\xb0\xdc\xb3\xbeu\x98\x12+K\x14\x87\
+\xb4\xfb\xbf\xb0t\xbd3Y\xfa\xbb\xe9C\x92\x1d\xacJ\
+\xe6N\xe5\xb9Y>S\x88\x11\x12\x90\x86\xe4?\x1eV\
+9\xac\x22\x0d3i$\xeb\xe4\x95J$\xa1\xca\xa2\xca\
+\xf1h\x9e0\xc9\xc0\xee\x98\x13=K\xe4\x04\x10$f\
+\xe1\xb6^\xad}\xe79\x85\xbc\xcc\x15>*\x5c}X\
+F\x02dd\x1a\x09#\xc8\xbe\xa8D\xd2\x022z\x89\
+\x12\x02p,<\x1a\x96\xae\x8f\x87U-\x0b\x7f\x0bK\
+\xd7\xef\x84\xa5\xeb\x0ea\x15d\x1a\x04\x89\xc8\xc2|~\
+\x91\xe8?0\xac\x92-\xa3\x12\x08\x1b\xb8 \xbcFP\
+|5,\x1d\x8f;\x85\x95@o\xce\x85a\xe9\xfap\
+XE\xcew\xf2\x90P\xe8\x97\x0b\xcb\xb2hC\xcb\xc0\
++\xc2\xd2\xbc\xda%\xac\xc8$\x1a\x82\xfff\xc9\xbf\x1d\
+'\x19\xb6\xfb\x07\xb2\xbc\xfeUaUO\xbc \xe3\x90\
+\x0fv\xdb\x86\xa5\xf9\xf2\xbb\xb0\xf2\xfas.\x0e\xd3y\
+\xff\xdcR\x11\xee?\x11V\x05\xcaJ$x\x9f%\xf1\
+\xab\xf9\xde?\x1cVZy\x0c\xed\xd7\xfd#g\x98\xc2\
+\xf2U\xfbh\x95\xfb\xf8\xd4aS\x01\xe1^\xaa[\xba\
+\x8b\x80z\xcb\xee\x0d\xdd\x1b\xaaD\x1a=\xd5\xc8\x12\xee\
+0\xb0\xb7G\x9d?\xb8\x08\xc6\x1b\x85ev\xff{\xc6\
+i^\xce\xb9f\xce\xd5s\xd2|\x1b\x9f\x14V%\x06\
+\xa3\x82\x7f\xb48>N\xaf \xf4\xb4Z!\xeb\x1a\xa4\
+t)\xb0\x1a\xcf\x0eS+\xc69\xa5\xf5\x86q\x9c\x9e\
+\x95l\xa1\xb2>\xc6\x17\x87\xa9\xe2\xbb\xbf\x10\x5c\x7f/\
+\xa4\xa3\xddYa\xe9\xef\xb6\x09+\xe3>\xfeRX\xa5\
+\x16\xa5yn\xee\x12\x91\xcd9\xe0g^\xaa\xa7\xde\x09\
+.\x05\xd8p^\xb8u\xa2ie\xeb\xce\x0b+\x90|\
+\xfbKp\xc2\xac>\xf4\xc8G\x9a&\x125\xb4\xdc\xa1\
+\xf3\x9d\xc9AW)\x89\xa0\x9c \xf8gA~\x82\x9c\
+\xf0>\x0b\x92G\xadB\xe9y\xc7\x13/\xe4\xab\x11\x10\
+\xc7\xf3\xdd \xac\xda\x17\x91\xa7Em\x06\x99L\x90\x09\
+\xf3g\x8c\xeb\xc0\xe1\xd0Wr\xb4\xe2^\x02\x09\x17i\
+\xa9\xac\xc6\xc0y\x09\xc2\x07$\x0b\xa4sR/\x19\xed\
++\x99\xe9\xd3\xc5\x01\xf2\xe1\xa9\xfd\xf2>\xf6@n\x16\
+\x9c\xcaa~\xac\xd7\xeb\x06U\x8d\xe4K\x0c\xf2\xc1\xe7\
++\xa1K\x0b(\xe7\x99\x12m\xd6\xb7W`\x0e2c\
+t\xea\x90\x88ua\x83\xcfA%\x1d}z*\xf2\xc4\
+%p8\xa9\x90\xe2\xc4\x01-\x93\x9c\xe7\x14\xa2\x08\x1c\
+A\x92\x00\x05\x87,\x92B\x09-\x9d\x87\x84U\x08\xca\
+#\xc2J\xc2\xdf~=\x05G\x90\x11\xbc\x0f\xfeh+\
+OG<EE\xbe\xe5\x0c\xc3\xbf\xe5\x1c'\xdeB\x05\
+\x03$\x10~6q\x16~\x0c~\x18\x05<\xde\x97\xef\
+\x93\x80\xe2\xca}P i\xd5\xd9 \xf7c\xbf`\x5c\
+\xeb\xca\xfb]ssW!\x9b\xe9q&\x00\xe7|!\
+N#\xf0\x87<\x10.\x826\xf0o{\xfb\x0b27\
+\xcbT&\x1f\xf2\xe6\xecG\xb6\xc8\x00\x0ad\xfc>\xfe\
+<\xe3\xcc\xf8s%AB\x82\x06?\x1d\xbf\xb7U3\
+\x00y\xf9\xf7\xb0*\xf1\x03\x09`\x9e\xaes\xaa\xde\x1e\
+\xa0\xe7Q'_O/\xbc\x80\x06|\xe1\xaa\x82\x0e\xc9\
+UCZ\xe6\x0d\x0b\x07\x9c\x00\x8e\x00\x10$\x01\xfa\xde\
+\x04zL\x98\x96\xcdp\xba\xe9\x09'p\xe6\x81\x81@\
+\xe0\xc1\x93\x01\xd1\xfdLn\x14Y\xe0\x1b\x05y'\xd0\
+lU\x0e\x98\xe0,\x18\xee\x9f@\x9a\x09\xc8\xe7\xe0~\
+\xa9\x94\x13\xb8\xc2]\xb0\x9cH\x8fVR\xe0\xdc\xfe\x1e\
+\x01\x0b\x01\xf0\xc2\x9a\xd0}C2\xc8}\x14\x1d\xc8a\
+\x82\xf0\xc0\xc9\xc01\x9e\x04vl,\xad,!H\x04\
+\x02?>\x17\x09\x0a \xd2\x04>Tb\xb5\x90\xdd#\
+\xccA\x07G\x03-\x1a\xad\xbc#\x0b\x9dyA\x06s\
+\x9e\xa6\x92\xcd\xf3\xe6~\x09\x98\xe8)\xa6u\x80\x9f\x93\
+\x81\x94\xc3R!C\x86D\x01\xaf7K\xe3\xca\xfb\xb3\
+\xb0\xf8\x5c\x92\xf1\xf3\xf8A\xd2\xc7\xeb\x93\x08\x88\xca\xdd\
+U\xa5\x87\x89^9\x02x\xb3\xcc_<\x1c\x10N\xa0\
+\xa8\x02\xd9\x92\x16Z5\x00\xf6s*\xf1 Q\x18O\
+\xe6\x07\xf3\xee\xd9Zg\xd8@A\x8cPq\x07\x09\xc0\
+\xb85\xac\xb1\x0et\xe9\xcd\xd2|\xb0\xec\xa6d\xbaX\
+o&\xefD\x9e\x91\x03\x15.\x04\xee\x8f\x0dH:\xc5\
+v\x94\xd88\xe9\x81\x87=_\xac\xf0\xbeO\xd69\xf3\
+\x91D#\x9f\x07d\x10\xb2\x92T\xe2q0\xa4\xcb\x8c\
+\xc3\xe5\x0d\x9d\xccp+/\xa6@\xde$\x8a\x90\x13\xd2\
+*\xa2\xcaD&\x87\xfaP\xa5>\x81j\x87*\x86\x99\
+9\xe5\xa9\xc2\xdao\x07\x8b\x0a>\xeb\x96}\x8f\x8a\x00\
+\x95$\xd4\x0c\xc8\xe8RI\x80\xb4\x11\x96g9^ \
+:\x0c\xc5\xee\xc2\xca\xeb\x8d\xa6G3\xa3\x99\x02\x11\xb6\
+l\x90\xae$\x0e\xfb\x17\x85Ul\xe1\x1b&\xdb\xa8\xb4\
+zY\xb6O\x15_\x93Q\x81\xfc\x10+\xbd\xffA\x9e\
+\xb5U(\xc6k\xde\xdc\xa3\xf1\xb8\xa4\x0a\xb4q\x00p\
+\x5c\x80\xee\x8b\xcc\xcf\x07\xa3\x0e@\xb7\x10\x00I\x052\
+;\x13V*\xb0\xfd\xa2ae\x1d\x8c\x1f\x0cK\xdf\x9f\
+\x1dV\x9eWr\xcf\x1f\x0a\x07\xbd{\xb0{\xa8K?\
+\xef\xce\x09+\xb2\x8b\xd33a\x05*\xce\xd73/\x0f\
+K\xdf\x7fO\xb2w\x97\x8a\x96\xefg\x85\xb0\x92H\xc9\
+P\xeb\xbf\x95^\xc8\xfe\xe2\xb0\x82@\xebfwkt\
+kT\x15\x12A\x7f\x9d\xf0\x90\x83A\x00\xdb}\xaa;\
+\xaeK\xebfz\xdb\xe97M\xa7sm\xfa\xdba\xe9\
+\xbajX\xfa\xf98\xac \x14\xba+\xba\x1fvW\xe4\
+\x16\x81o\xe7\xde\xfe\xed\xc2\x04\x85\xffI\xba.\x18V\
+8BF\x17\x84U\xf2dG\xabU\x08.\x06%2\
+L\xa2\xc5y*\x08m\xda-3\xe2\xa4\xfbSX\xba\
+\xfe'\xacT\x96\xadr\x91\xff\xa5\xeb%a\x15\x09\xe0\
+\x93a\xa5\xc5\xc2\x89p!+,o\x09\x84\x15\x84\x10\
+\x0e\x90\x02\x01W\xa4\x95\x18\x1a\xaf\x18V*\xf0\x04\xc8\
+\xd3\xab\x87\x95\xc4\x0a\xaf\x0f\x97J\x0a\xd7r\x80c\x92\
+\xca\x17\x86\x15?\xa3\xbb=,s\x95\x0c\xe3v\xea@\
+*\xd7\x9f\xdf\x9f\xd7\x0f\x81G\xbe\xffn\xb7\xa1\x85c\
+\xf2\xf6\xa1w\x9a\xca7\xb2j\xdd\x8a\x03yd\xb7\xeb\
+ \x17Ieq\xfa\xb1d\xe9}\xa7\x9fN\xf6\x94d\
+\xd4\xee\xabH %\x8f\xdc\xdf\x1d\x96>\xe7\x9c\xb0\xca\
+q\xdcZ\x01\x8f\x90\x1a\xe6\xf2`?\xa6\xe5\xed\x15a\
+\xe9uN\x0e+\xe7\xc1\x9c.\xac$0\xcdV\xff\xf1\
+lS\x91.\x88\x84A\x0a\x93r@\x04T>W\xdc\
+\xd3\xd7s^6g\xe39\x1b\xa7\xaf_?~\xdd8\
+dR\xd7\x1c\xe4\x06\xcd\xe6\xces\xc3\x0f\xe1\x5c\x8a\xdd\
+\xf0\xdb\x82\x8a\xa7\x00y\xfc\xfb0\xe9\x86\xa7\x80l\xe6\
+\xdd\xc9\xde\xa5y\xb5\xb2Z\xdbf\x97\x84^4^D\
+\xeb\x85\x03\xa2\xbds\x17\xf7P\x99\xbfJ\x01\xcb\x85U\
+\x22\xe0\xf2\xb0\x82X\xc8j\x0c\xf3\xaa%a\xde\x12\x08\
+\xe6}m\xab\xca_\xa4'\x9a\xf5\xa1VX\x12]\xac\
+\x93\xb9\xfc^\x02\x02\xf6\xb9\xa2\xb2\x91\x13npn\x80\
+\x80\x0af\x97\xe0v\xc9\xb3\xe2'\xf9\x5c\xbe7Wn\
+\xa5j\xd3M\x87\x95\xf3\xba\x7fKXI\x10\xf5\xbb\x87\
+U\x1c\x0a\xda7s\x9a\xe7\xb0\x92\x8047\x83\x02+\
+Z,\xd2>\x10\xe6V\x02\x17P>6\xc89;a\
+\x0bd_\xe7]\x7fHX\x15\x08.\x94YqL\xda\
+\x98\x91\xa0/,\xe7\x97Uk\xba\xb0* W\xc2<\
+\xb7\xe6}*W\xe8?\x97+\xee\x22\xe14RO\x08\
+\xaa\xfe\xec\xb0\x0aa\xf6v\x91'B*\x0c\xe4\x1b\xf5\
+\x15\xfcgT\x88\xe4W\x99TX\xaa\x08$H\x1c\xe0\
+\x8b\xd4\xd3\xf2\xc4\x22\xbf\xb5\x9f\x8f\x7f\x84\xdf\x81_\xa3\
+\xf1t\x9c\xc1\xf8P\xa0\x22\xbe\xc2\x1f\xc2\xdf\xa3\x10K\
+AC~\xe6h\xcf\xb0\xb2\x7f\x99\xa4W\xc8\x06'Z\
+.\xac\x90!\x9bW\xfb\xab\x90\xc4\xae\xe4\x13\x7fP\xf0\
+\xe1k\xfci\xfe\x0e\x999q\x958\x1e\xc4\xef-\xfe\
+\xfa\x7f'\xbf\xc6\xef\x94\xba\x89\xfdF\xde\xaf%Y\xc7\
+o\xc0\x0fn!\xf2$\x0e\x09\xcc\xdb\xde\x7f\xbeO%\
+\x9f\x02\x1b\xef\x03r\x8dx\x12\x7f\x96\x04@\xe1X{\
+f\xe0O\x8f\xff\x9d\x93\xbb\x82\xeb$\x87\xff\x7f\xaa\xd6\
+9\xefG\xfc\xda$\x10\x8c\xe8!.j[!x?\
+\x0am$\x9e\x987|\x9f\x82\x01\xad\x10\xb4\xa0\xe0\xef\
+j\x1cf\xd0\x81vF%\xfdY\x86\x80\xa4\xb0#\xb3\
+l\xc7\xe3]U\x81\xdb\x22U\xc0\x88c\xdc\x06\x94\x5c\
+9xx\xc0z}\x93\xcd\x11\xd8\xf0s\xe4\xdd\x9e\xd7\
+\x90\xb5\xb5l\xef\x04\x90\xad.:\x0f\x8c\x81\xe0\xf7[\
+y;\x0e\x1a\x02\x1a\xc96\xb8\x12\xc7\x04h\xf5\xd8y\
+\x10-4\xa5y?;\xf2\xf4\x9c\x93( \xf0\xa7b\
+\x09\x84\x96\xcf\xc9\xeb\xe0\xe0\xcf?\xf4Pz\xc1\xf0w\
+-Y\x1c\x07\x09\xe3\xb6\xba\xde\xe7\xf9\x0dI\x1e\x01$\
+\x812\x01\xf5\xfa\xda\xc0\x91\xed\xe3\xf9\xf1{\xfc\x1d\x1b\
+\x0f\xe3G&\xae\x95\xb5\xc0\xf1\xff\xe7\x90\x11Ln\xc2\
+@:\xc6xi\x5cG\x8b\x09\xb2OE\xba%w\xfc\
+\xff\x84\x9d\x07\x94-E\xf5\xf5\xa7\xfb\xce\x03\xc9I\x14\
+$\x0b\x82\xe4\x9c\x05\x89\x0a*\x22Q$KN\x02f\
+\xe1\x0f\x86OI*9\x09\x08\x92L\xa0 Y\xc5\x00\
+\x82\x22\x08J\x0e\x0f\x05D\x11E\x04\x89\x0ao\xba\xfb\
+\xabS\xb5\x7f\xa7\xea\xd5c\x96o\xaf\xf5z\xdd\x99;\
+\xf7vWWW\x9d\xb0\xcf>\xccG\x22\x88\xf5\x02\x92\
+k\xe4\xa7\xcfX\xcf\xaf\xfb\xce|\xe2}\x9co\x19\x88\
+J\xb5\xf6\xd3\x97|\xc0\xe4\xc8b\x85i\xfc\x08\x14\xd1\
+M\x00\xd5d\xc4\x04\xd5\xd6\x05j!\xb5g\xcd}\x86\
+\xe2\xba\xa0v+#\xe4\xedg\xc8\xfcSbA\x89\x01\
+\x01\x01Q\x1b\x9dQ\xc0\x86E`\x89\xf9\xc0\xb8)P\
+\x07u\x17&\x83\x8f\x03\x94\xf1_G\xe4\xda2\x98\x0b\
+\x12u\xabE;=b\x0a\xa5\x0bG\x95\xebc!\xa3\
+\x06\x11\xe6\x08\xe7\x8bz\xf0\xc6\x86\x22\x12Mf\x9d\xc0\
+\x095|\xcck\x02:\x04\x940\x5cY\xd0YH1\
+\xf4\xd8\x00\x10\xa5\x81\xe1\xa2\x0d\x0aub\xc4||\x5c\
+\xd9@X\xe09?\x9eW\xa8wP\xef\xa9u\x87\xaa\
+\xae\x8d\xba9#9\x00\xcd\x90\x0c9\x1f'm .\
+\xc6G{\x22(\xe7P\x09\xd1 `ce\xbeP\xc2\
+\x81\x0at\xcd\x94a\x1d<!\x22\xd7\xe8\xb2\xa1\xc8p\
+\xf0\xf6yk\x84\xbb\xbdFv\x18]\xe4J*\xc5~\
+\xffQq\x96X\x1a5\x8fP<c[4\xcbX\xff\
+\xd6\x10\xfe\xfe\xad\x01\x0b\xe4y\xd0\xbc\x1c\xf0R\x16\x89\
+\xf3\x12\x0ej\xb6\xdf*\xca*\x1b\x15\xea\xd0\xaamE\
+4\xaa\xff\xb1!\x97\x92 \xa6EMh\xbf\xa5\xa1\xe8\
+\x03N\x9b)D\x9b\x14\xe8j\xe77\xc4y\x9e\x02\x12\
+\xb3\xab\xfd\x9f\x98\x09\xed\xee\x069^&R\xf7\xb8!\
+\xbc\xbe\xde\x90k\xb4\xa1\x10{\x9bF\x02\xe38\xf2\xaa\
+\xa5\xed~\x18p\x85\x22\xf1\xcf\xe7\x0cj\xfb\x9b\x80_\
+\xab\x04\xe0\xf8,\xa6\xd4\xdf\xd7\xdf\xdb\xdf\x9b\xaf\x13\x15\
+\x7f\x1c\xef\xf6\xa5\xf6\xe5\xf6\xe5\xf0\xf3\x9d\x0d\xe1\xb8\xbc\
+!\x1c\x7fi(\xdat\xa1U\xf0\x8c!\x8bo\xba\x98\
+\xe2\x9d\x01wISg\xcd\x82\xd1\x01\xb5\x7f\xaa\xa1X\
+_\xa16\xd2]\x83y\xcf\xfe\xb4\x7f\xaa\x99m\x1eS\
+\x06_*\xe4^2\xc0\xf7\xe2H\xca\x80\xf6vz\xa2\
+\xe6\xb7\x9b\x1b\x8a.A2\xc4\xc8tz@L%\x5c\
+\x04*\xda;\x0dEf\x11\x15h\xda3\xa9\x1d\x1bv\
+\xcb\xe8\xf3\x86\x19K\xca\xc8tN<1\xf1\xf8\xc4\xe3\
+q\xfdJ\x81\xba\x9f\x18r\x09H\xb0f\x92\xd8\xa1\x1c\
+\xf1\xe0n\xedh\x22\x91\xfd\x9b\xfa\x99\xad\x8d\xdfpR\
+\xa2\x04\xe3h\xa1\x06\xef\x01Z\xda\xf2R\xfaA\xfbJ\
+(\xb9\xcf\x0c\xff\x1c\xc2\xf8\x8d?5\xfe\xd7\xf1\xb0\xce\
+u\x7f\x0f\xf8G\xd6 \xe8\xdfc\xc8\x01*\xc4\xca&\
+\x161D\x0d\x91\xa4\x19p\x8e\x025\xdfR\xd7\x02\xa8\
+\xdc8\xb4\x0a|\x8c\xed\x12\x91\xc7[m\xc7\xa8Q\xef\
+f2\xe4~\xd2^z\xa0@\x00?\xef\xb6\xec\xb6\xe8\
+\xc2\xba\xd9\x8dw\xa3n\x94\xc5?c\xa6\xf8\xa6Bl\
+\xda\xf2\x9b\xc1a\xeco\x0e\xb8\xa9p\xb8\xe5p\x0e\xb3\
+\x06\xbcI\x01\xf6/\xeby\x08\xcf\xdf\x94\xa5\x03\xde\x91\
+\xef\x9f\x07\x86T\x12\xd3\x7f\xc8\x10\xde\xbfOD*)\
+\xb2\xe7\xed\xc8\x80#r\xc0\x9d\xf3\xf56\x98\xdf6\x14\
+\xeb\xba1\x9d\x1e\x96\x18\xa3i\xab\xecg(\xec\x1d\x95\
+*y\x80@\x81I\xef6DI\x9d\xd6E\xb7\xbb$\
+\x1a\xe8\xfb\x89\xd6//1R\x80\xd4\x19<*\x11$\
+ O\xbb\xd1\xb1y\xa3<\xb3\xadW\xbb\xd9ze\xb3\
+\xc5\xe6\x0bTt\x02S\x9eh`=}\xc9P\x88\xd0\
+\xca\x0e\x8b%\x04G\xe7\x80\x80S\xda\xaf\x8a\xc8\x1a;\
+t\xe3\x9a\xd3P8\xd4\xb2[\x22\xf3\xc1\xec\xc0\xe5\x0d\
+\x05c\x02J\xf9\xe9\x11i\x7f[\xa2(\x89C#\x08\
+\xc7E\x8eg{\x88\xa1\xd0L`\xbe\xc2\xcc#p\xa2\
+}\xd5\xd7'\xf6y\xd6\x03\xd5\xc4\xbb\x83\xae}3\x06\
+\xa4\x96\xc9]\x04\xfc\xfeb/!\x16\xac\xf6\x8a\xae\xa5\
+\x82\x1d\x89\xdd\xd5U\x8c_\xfc\x13\x1cI\x1cD\x18 \
+\xa8\xdfS\xfa\x87}\xcb\xf7\xb2\xbfW\x89\x0f\xbf.\xc4\
+\x00\x19\x87\x9a\xd9\x88?\x83\xa3\x8c\xa3\x0d\xa3A\x9aM\
+3\xb4\x99\x86y\xc9\xfa\xc9\xf9\xa2\x85\x05\xb5\x1e\xfb\x80\
+\xeb\xae\xda\xffa'x\x1bg\xc6\x09\x7f\x80\xc4\xee$\
+\x22u^*\x8b\xea?%5\x5c'\x81\x89Z\x93\x8d\
+\xf1&\xe0\x82\xb85\xed{\xf99\xdf\x8b\xdd\xc8}\x87\
+q\x8a&\x05\xf6$\xf6\x15\x8e<\x81\x05\xba-\xfc\xcd\
+P\x88Lc7s]\x8c+\xe3\xc6yQ\x8a\xc0\xe7\
+\xd6\x01\x0f\x02\x00$\xaa\xf1o\xf0'H\xccr\x1f\xf8\
+{\xee\x13v\x15\xe7\xa5q\x1d\xd7\xe9$\x07\xafI\x11\
+\x881Q\xc9cd\x89\x89\x88\x83\xc4\x0d\xc41\xc61\
+\xc4@x[\x94E\xcb\x7f\xc7\x84 b\xc4\xfb\x98\xe8\
+8Z8xU\xc6\xdak\xf5\x11-\xc3!\xa3v\x16\
+\xaa,\x116\xce\x93\x89\xcc\xf91\x90\xdc\xf0Z\xac\x8d\
+\x09\xc3\x04`\x02\xb2\x11\x12Y\xa4-V=q\xf9\xfc\
+\x5c\xc3\x9c\xce#;\xe6\xe9\xbc\xd1,P\x8d\xbc\x8bZ\
+\xe1\x98\xf2\xa0\x12\x01d\x5c\xf8{\x8er\xd0\xbd\xbd\x12\
+\x91\xbc\xcc8H\x0e\x14\xb5\xf6\x8b\x8b\xd9\xa1\x9a?\x1f\
+\xf7e\xe5@\x8a\x9a\xee\x99T\x1c\x1f2\xadd\xa8q\
+\xf4*qH\x9f\x0f,|\xafz\xd7\x84\x94y}i\
+\xfa\xae\x09\x03\xb5]\xabW\xa5\x1cu\x1fz\xbe\x8fq\
+a^A\xb1\x22\xa2\xbe\x9a\x98)d\xa0\x09\xc8 v\
+\x83\xc3QiH8\xc3\xa0\x16\xc1Z@\xed\x8f\x18\x8f\
+\xccDI\xd7QE\x1e\x87{\xd4Ns\xaaDH~\
+\xa163z\xed\x81\xb2\xba\xc6\x8b\x88\x1e\xd7\x99\xefK\
+\xd2z\x0b\xebS\x00\x00 \x00IDATD\xa0K\
+C-z\xc9\xe7T\x81\x176rj\xdd\x5c\x5c\x06\xad\
+\x03\x0c]\xc6\x97\xefc\x03 \xb2\x8aF\x00\xff0\x00\
+$\xb6\xe6\x8c\x076DD\xff\xbe\x92D\xc2|\xe1\xe3\
+yT\x04\xd5\xdb\xdc\x89\xf2\x08\xd5\xafy\xd2P\x18\xe0\
+\xdcG\xd6\x03\x9e+\x9eK\x22\xf7Z_\xa0\xbczm\
+\x9d\x9e36.(\xa2\xfe\xfc\xb1\xa0\x1f\x17\xe1\x06\xd8\
+\x0c\xed\x01YpY\xb0e\xb0\xd1\x1f\x98\xc0\x8f\xcf\x13\
+\x98H\x94\x920\x9f\xb9?P\xf8U\x9b\x87\xca\xbe\x7f\
+\x1f\xed.\x09\x10h\x9d\xf1q\xa3$\x84\xf3Q\xad#\
+\x94@D\xba<\xe3\xa4\xee\x09a\x1bN\xb5\x9fr\xa8\
+\x5cE\x9f\xf6\x88f\x90\x07\xc3\xa4\xfbp\xb7S\xf7\xe1\
+\xa2\xbb\xc0S\x86\xc2\xe1\xc7\x01\x82\xa2-\xb5v\xa7\x88\
+\x9b\xa8\xe1\x85\xd9phn\x91\xa3t\x89(\xfd\xb6}\
+\xff\xbc\xa8eS\x0d\xe0\xb0\xa7\xa1\xa8E\xa5M\xa26\
+F\xcb\xa3\xf6\xdf\x17\xf3\xe6\xd2\xa2{\xc4<\x06\x05 \
+\xe6-\x1c(\xda\xd8\xbe-\x95\x9c\x85\xbb\x13\x19\x13\xa3\
+\xd5\x0c\xe1\xf8'C\xa4\xa4\xbf\x1a)\xe93\x19\xb2\xe1\
+>\xba\xceP\x18H2\xc48\xcf\xd8\x86\xf6\x9e\xc2\x00\
+C\x9b\x02m\x1c{\x9a\xa7\xc8\xc0\xbbN\xcf\xc3\x83\x85\
+*\xfa\x15\x01?T&\xe9\x82\x9c\x91\xed\xbfa\x88\xa5\
+$\x019\x80\xe7\x81S\xed?\xed\x0f\xda\xcb\xdb\xcb\x0b\
+\xe6\x8a\x1c\xbf\xfedC.\x81\xf0\xc0\xb2\x02\x1f1\x00\
+\xb0\xad\xe6\xfd\xf12\xc4\xcfP\xcd\xe6\x15E\x09\x1a\xb5\
+\xa0\x04bd \x0d\xd7H$\x0c\x15q\x95$8\x13\
+\xed#\x12\x01&\xe0\x87a\x86\x96\xc2\x0e\x86\xac\xc9A\
+f\xde\x1d\x07J3\xe8\xee\x00\xe5V\x81J\xcf\xf4\xb3\
+~\xc28@$\x12\x86\x0e\xfb?\xda\x15b\x04\xb0_\
+\xb6;\x1b\xf2y\xa2\xad\x80\xe3\xe3\x01E\xcd\xcfn\x95\
+n\xe5n\xe5\x18\xa89\xb696\xcc\x8f\xdb\x0dQ\xf4\
+\xf1<\x13}\x1c\xfbd\x84\x05\xa8\xa2\xfa\xbe\x85\x01,\
+\x10\xc0\xfe\x1d\x1f\x8f`_\xf57\x1a\xf2\xe7\xe2\xb82\
+\xef(a\xe8\xcf6\x84\xe35\xfd\xd5\xfd\xd59@7\
+\xbe[@p\xf4\xfa\xf5\x03l?6\x82\xb3\x89 \xfe\
+\xc4\x90\xdb%\x8e\x1fb\x08\xcb\xcf\xbb\x0d\xc1N|r\
+\xe2\xaf\x13\x7f-T\xd2\xe9\xa6\xa2\x80\x08\xed\xc6\x9c\xf1\
+\x80X\xa9\x98\x090\x86\x9c\xd2N\xa9\x0f\xdd=\x14\x88\
+\xe8\xee\xee\xfe\xd0\xfd!g\x9aM\xd2\xcfD\xfd\x5c\xd3\
+@\xd4\xf0\x98\x8eyV\xe2\xc3\x7f/\xc4\x0d\xc5\xe0\x8a\
+\x8c\x9aoi=\xfe\x8a\x0c\xe3\x07\xf2|oo4\x88\
+\xb9\x12\xec\xcavcC\xf8\xfe}\x02\xf6\xce\x14\xf7a\
+e\x83\xce\xf3\xd1\x82\xa1i\xcf\xd5\xc1E)\x1f\x193\
+Q\xe4\xbd\x8b\x0d\xea\xfa\xaa\xfdE\x94s\xd8\xc8P\xb4\
+\xe1U\xc9U\xec\xd2`L\xa3/\x18\xc2\xf15\x93%\
+\xcc\xa5080\xed\xe1\x86\xacu\x85(\xa1?\xf7\xec\
+W\x88\xdf*!\x84\xa8g\xfb\x1eC\xee\xee0<=\
+\xfc}x\xbaX\xf7p\x00e/\xc2\xa4\x89\xcf\xd3\x95\
+a\xfe\xeei(\xb4*\xd4\xee/\x86\xf7\x1e*\xda3\
+\xc2hBtQTv\xba\x908s\x0b{\x82\x0c\xba\
+\xec\x17o\xbf\xc6\xfd\xa0\x84\x8f\xc06\xed\xfa\x08 \xd0\
+\x15\x86\x1a~\x18F\x9a\xb7\x1eHQ\x1bPj\xf8\xc7\
+n\x0d\xab\xc3\xad\x85\xda\xbc\xeeg\xb8\xbbi\xdfY6\
+%\xb6\xfc\xba\xe4 \xb9}D\x97\x1d\x1cC\xec/\xfc\
+\x02j\xc6\x15\x88\xa7\xcd\xa7\xfb\x010sYo\xf9|\
+uS\x1a;\x22\x22\xdb\x1d\x94^\xc3\xc8\xa3$N\xcc\
+J\xef~Rk@\x91\x18AL\x10\xcd\x88\xc3\x0dE\
+\x02\x8a\x00\x0e\xe2\xcah\x04\xd0}\x80\xc0\xbb\x9ewO\
+\xfc\x91\xa8\x10\xe3\xc4\x1dGj\xf5k\xf1A\x98y\x04\
+lH\x10\xe1\x10S\x1a\xa0R\xc0\x19D\xee\xf8\x87\xc3\
+\x8a_F\xc2\xb6\x16\x9f~\xc0\xb5\xca\xd2yr$\xa0\
+JB\x08\xc6\x04\x81T\x02\x95d\xf0k*>\x8e=\
+\xa5\x1dt\x03\x802\x8f\x9d^\x97n#\xde,\xc6i\
+\x0cK\xfc\xb5\xb0\xcba\x0e\xc0@\xc5_D<\x9f\xe7\
+\x83\xef\xe1\xfc\xeb\x12\x08\x02\x00\xd8}$$\xabR\x0c\
+\xd7,\xe0{8\xdf\xba\x14B\xf3z<\xf6-\x7f_\
+\xe1\xb8\x9b\xfb\xb8\xb8\x22R\xebdM\x00\xcf`\xe3\xd0\
+\xd6\x19b6\xdcYb\x07\xfa\xbc `\xf8r\x828\
+Ru-8\x99\xc2:\xa3\xc5\xe7\xe3h\xf2>\x1eP\
+2sd \xa0\x8e#vE\xdfy\x0c\xff:\x80A\
+f\xac\xae\xd1'\xc3\x88\x03S\xab`N\xd6\x16\x90\xd7\
+\xaf\xcb\xa1\xad3\x0bYE\x9c\x8c\xf5\xf4\xb5\xf0|\x1f\
+\xd7M\xa0\x84q'\xe3K\xe0\x03\xb1\xbd\xb7)`B\
+\xc0\x80\x1akJ:\x18'\xc6\x8d\xef[D\x91S-\
+\xc8\x1eH \xe2\xa8\x0c\xb4))D-\x85\xba\xcd\x22\
+%!\x95#\xe95sh\x00\xcc\xa4\x85\x91y\x01E\
+\xec\x1f\x12/d\xfc\xb8\x1f\xcc\x93\x9a\x89Q\xd7\xf6\xe7\
+\xcc}z\xcdx\xd6G\xde\xc7\xbc\x85\x99\xc11S\x95\
+\xd2\xbc\xc3\xc1G\xe5\x9f\xf9\xc5u\xf3~\x8dk\xbbV\
+2\x0c\xdcq>W\x06\xaf\xfa;\xfbF\xc6FCw\
+\x09jAa\x0a\x90!`\xbef&Kz~\x10\xd7\
+\xa2\xb6\x9cR\x17\xc4lh\xdbG\x9fi\x16z\xd5\xd8\
+\xd3\xfe\x8b\xdao\xcf\xe0\x89\x1a\xe6\x81\x06E\xa4\xfd\xef\
+\xe8\xb3\x0ee\x95\xc0\x1e\x0b\x1d\x91s\x22\xa2\x88\x1a\xd1\
+\x07\x98\x00\x1d\x1b\x07\xdd\x07X\xd80DY\xe0\x99\xaf\
+<\xf7l\x1c0\x16T\xeb\xea\xa2\x8d\x88n\xaa\xa6\x14\
+\xb1?\x8fxrT\xed\x1f\x01\x0b\x16\xd8\xd8\xae\xc8\xda\
+b\xddn\x90j\xf1\xb9\xc5\xc6ED\x98\xf6\x88\xbf7\
+\xe4\x0d\x98\x0d\xd33\xdc\xb4\xf5#P\xb2\x8e!\x8b\xdf\
+5\xb7\x19\x8a\x0d\x95#5[D\xcc1\xa8\xd8\x909\
+*3\xec\x99\x8b'\xa5\xbeN\xa6\x08\xad\x01\xfa\x19\xcb\
+\xd0!3\xdc.\x93(\xe7\x88\xf2\x91\xe9\x85\x82\x1d\xee\
+\xd5\xf2\xf1~-\x19\xc9\xcby\xfe\x11\x18\x5cs,\x06\
+<\x5c\x1b\x05&\x8c\x0c\x0dw\x1c\xe4`\xf5\xf1\x9f\x0c\
+\x98\x15e <\xad~\xdfs\xa8\x96\xf8\x80\x223)\
+\x15v\x0c\x182U\xc3\xce\x86\xdc\xad&\xce\xdf\x1f\xa8\
+F\xff\x09\x95$\xbd;\x8bMQS;:\xdd\x10\x8e\
+\x8b\x1a\xc2\xcf\xef2\x14m=\xc9\xf0(\xe3\xe6\xa2R\
+\xf4og]$\x00E\xc0\x90\xda\x5c\x0cK[-\xd7\
+/\xba\xe9\xd8j`\x01\x15\xdbg\xb7T\x06\xfc=E\
+\xed\xba\xd6\x012\xa0\xec_\xa3\xc3F\x87\x8f\x0eS&\
+<\xbc\x7f4\xbf\xa1\xa0\xf8\xfeN\x8e\xbfjsa\x14\
+\xf4\xdb\x1a\xc22\xfb+C\x16\x17l\xd75\xe4\x0cX\
+s\x85\xa1\xd8\x8f\x08PX`\xe2\x8a\xec\xa0\xf7\x8b\x1a\
+\x8a\x0c\xbd2\xdf\xb4-#\xe3\x18\xf3\xca\x17E\xcd\x8f\
+\xe4\xd8?\x91\x02Jau\x8b\xa2L\x04><\x10K\
+\x00W]0<0\xc5:#1/\xa8\xcd\x9e\xd9C\
+\x15]\x06\x13\x19[/\xd1a}\xc3~ \x10\x85x\
+\x22\xfd\xc9\x09\x5cI\xc3\x80\x92\x0f/y\xd2\xfa\xe8\xf7\
+_\xfb[\xbb\x87!;V\xed#\x86\x1c\x90\x80zK\
+I\xcd\xb0\xed\xb0\xcd\x10\x9e\x8b\xfe\x03\x86b\xbc\xa4\xf9\
+\xd2,\x9fJ\xc8\x9a\x1b\x92hj\xbfp\xbfH\xbfH\
+\xa4\xcc\x07\xc4\x0c\xf4#Qk\xe3\xf1\xe6\xb1\xe61\x89\
+9\x86\xf5o\xfc\x9b\x86B\xa3H\xf3\xc9\x03vdv\
+^\xd7\xba\xb8\xc6\xb0\xda\xb0\xda\xd8\xd8\xb4\x8b\xa6]<\
+\xed\xe2\x82QD7\xa0\x8d\x222s\x86\x00&\x86?\
+v\x08\xe2\xa1\xb41\xc4\xbe#\xc0\xfb\x5c\xa2\x86\xb7\xcb\
+\x1b\x8a\xcc\x9d\xd6\x8d\xfe\xbd\x06=\xef\xfb\xe5R\xb7\xd1\
+\xaf\x02n)\xe6\xd1\x22\x01\x8b\xca@\xff\xb3\x12Gs\
+\xe5n\x02P\xc3\xfb\xbb\x02\xee,(\xe8\xd87\xa2\x10\
+\xb3>\xc6\xef\xddB\xfb\xf6\xdb\xb2C9l\x1e\xf0\x9e\
+\xa2]\xa2\x18\x08\xdd\xf1\x86b}T\x8d\xbc\x97\x96Q\
+\x02G\x82I\x01\xea\xf6jC.\xfd\xe9\x7f\xdb\xdf\xde\
+\x87\xe7\xb4_R\x9a\x0aZ\xcf\xfb\x8f\x19b)\xcf\x09\
+&\x12\xeamf\x15@\xee\xbfj\x08?\x7f\xc1Ph\
+qH\xd3`X\xccP0\x05\x09\x0cc7\xe00I\
+\xc5\xdezqX7\x8e\xd1\xa1\x86\x22\xb1e]*\xde\
+\xa7v\xa0\xc6\x0c\xb8\xd4 \xe6\xd6qq>\x06\xe4\xee\
+,8\x98&Ih\xa2\x84^\xda\x86#\x0b\xa3\xd5\xdc\
+\xac\xbb\x0b\xa6!\x89+\x95 z\xb7\x152\xfe\x88\x87\
+\xbf\xdfP\x04\xfc\xf9\x5c4\x92H\x88 :\xaa\xc4J\
+\xd8-6\x8f\x22\x96\x88\xfav\xca\x8c\xeea(\xda%\
+\xb2n\x13 \x11C\xd0\xdb\xfc\x11\xf0\xa1\xa6\x9e\xc0\x04\
+\xf6(~\x10\xb5\xe7\x04\x10h\xabI-\xfa9\x11\x99\
+\xa2\xcf~M[ii\xb0\x10\xb0#\xd0\xca8\xb8}\
+\xc4\xfa\x8c\xfdB\xa9&\x0e\xb2\xf6w\x18#.V\x0b\
+\xf3\x11;\x1eG\x19\x07\x90\xe7\xfa\x97\x119\xe1\x8a\xfd\
+\xa6\x84\x8f\x9f/\xf6+]\x1f$\xc6\xeb\x8e3L\x06\
+\x1cl\xba\x06\xf1\xbd\x8c\x03\x0e~\xad50Y\x17\x00\
+\x02\x03\xf8\x07d\xfea& \xcaGi+\xa5C0\
+\xd5\xc8\xe0s>8\xe48\xc4\xf8y\x042j\x87\x9c\
+\x12s\x9e'\xae\x87\xc0\x02\xdf\xcf<!\xd3\x8f]\x8c\
+?\x88\xdd\xc0x\xf1\xb9\x04\x988\xf2{\xde\x8f\x9f\xc9\
+\xb80\x1e\xfc\x1e\x07\x9f\xe7\x85\x00\x01\xe7_w\xbd\xe2\
+\xfc4\x9e\xe3\xd3\xd5\x1a/V8\xfc<\xc8\x1c\x99\xf8\
+\xa8\xf0\xa2\x9e\xcf\x82K\x04\x09G\x09G\x9d\x8c\xff|\
+\x89\xaa4\x83\xaa>\x8e]U\xd3\x8e\xe1\xef%\x038\
+\xbc|\x1e\x8e\x18\x8e\xa0\x1cC#\x96Gj\xf9Jr\
+ p<p\x9c\xab\xf3t\xf5|\x0cm\x8ePr\xb2\
+\xd8_r\xf88_&l5Ai\xdf\xe2\x8e\x14\x03\
+^3\x05\xb8\xa18\xbc\x5c\x0f\x8e~\xfd\xbd8\xd8d\
+x)5\xe0\x01\x87\xfa\xbf\x90\x0c\x1f>\x8fc]b\
+\xc1Qm\xb6\xfc\xf78\xc8u \x85\xf1\x80\xb2\xcf\xfb\
+\xf8\x1c\xee\x8f\x22\xad\xe1|\xd2k\xde\xcf}XW\x91\
+\xcbet\xfe\xdco\xee?\xc7\x5c\xb3\x9f\x8e\xbc\xe6\xf7\
+Lx\x02\x04\xfc\x9e\xf9@\x00\xa5>\x92\xf9G=v\
+\x0d\x8d\x1f\x81\x82,Z\x92>\x1f\xc7\x13\x83\x92\x0d\x04\
+m\x00\xda&B5\xc4\x90\x92H\x93g\x18\xfe\xa0H\
+*\x0b`\xdd\xf5\x81q\xe0\xb9\xa9\xda\xcb9\xc5\x87\x05\
+\x08G\x9a\xf9\xc8\xdfi^y?\xdaZ\xa4Q\x99\x1e\
+\x17\x09C\xd5\x9e\xf6i\x12q\xf1\x0c\xb0(\xc4\x1e(\
+a\xa1\xa5\xef2\xf3\x82\xe7F\xcf\x83wE`c\xa8\
+j\xd8\xa2\xe37{!\xaa\xa4\x8d\x90vh\xee\xf8S\
+\xaa#*\xaa\x07\xa2\xc8<\xe0\x982\xcf\x090\xb1 \
+\x13hQ\xdb9Ds\xdc\xc0\xe5\xfc\x89\x04\xb3`W\
+%9\xd44\xe28\xd1\x1e\xd23\xa5\xcc\x1f\xc6\x81H\
+?5\x92\xdap\xa0p{\xdb'\xd6A\xc4!\xa1\xf8\
+q\xff\xa4\x9d\xe0m\xc5\x10UT\xbfv\x18,\xed\xc1\
+\x86\x1c\xd0\xa1\x8d\x9a)\x00\x98\x06\xc0\xd8\xf7\x94q`\
+\x1d\x14S(\xf6\xa1\xbf.\xbc\x7f\xd5v\x95v\xd5\xd8\
+\x8f\xfd\xd5\xd8\x8f\xfd\x87\x86\xe8(-\x15\x1d\xa5\x9f6\
+7\x9a\x01\xc5\xfd\xf1\x8c\xbf\xad\xb7+\x17\x19Z\x22\xe2\
+\xa2\x5c\xf6+\x1br\x9b1s\x87L$\x8c\xe7\x15u\
+{\x7f~\xb9\xdf\xea\x9eB\xc6\xd83@d\xe6\xa2\x80\
+\x84\x02H]\xa6\xfa\xb7\x1f4\xe4\x80Z\xa4\xe6\xffV\
+\x19\xfb{\xf3<\xf0\x08\xbf\x0258N0S\xbc6\
+S\xea\xd5\xb4M\xa3t \x16\xc0\x98!\xb4R\xc0\xca\
+\xc5zi\xf7wGu\xcf\xd8\xa1`\xec`\xc0\xd8v\
+\xfc\xf7\xdc]\xa3\xff\xa8!\xafK\xb1\xfd\x9ae6\xdf\
+\x1d\xb0Q\xe1\xa8\xcbp\xebw6dG\xb6\xbd\xdf\x90\
+\xe7a\xbb\xa1!\x8b\x04\x0d\xd7\xa5\x8cOl\x8f\xf6z\
+f|\xb4\xef\x0d\xd8\x22gdc&\xe8\x82\x22Pe\
+%(Wd\xea|\xbf\x8e\xa1(-8J\xdd4\xd6\
+\x1b\xd6\x1f\xd6/\x02\x83\x88I~F\x1a\x06\x12\xef\xf2\
+\xee\x03O\x1b\x0af\x01\x22_\xab%\x07\x15\x8d\x07\xa7\
+B\xd3\xc6\x12\xc7\xf6(C\x0e\x0c!\xb6\x86\xe3\xe5\xed\
+\xef\xe60\x14\xedOE\x85\xc4\x11\xa0\x1f;\x99L2\
+\xec\xec\xcf\xfd\xff\x19\xc2\xf1\x05C\xeejB\xc6\x14\xc6\
+\x0e\x01&\xba\xd9\x0cW\x192\xa3\xc6\xdb[J\x1cp\
+\x98\x18\xa6\x0d\xd3\x0a\xed\x0f\x95H\x8c\x1d\x161\xd6\xad\
+`\x08\xef\x1f\xef\xa7\xf4S23e\xb4\xe2h\x85\xd1\
+\x0aY\xcc\x12Gc\xf4\xa1\x80m\x14h\x0b\x8e`\xfb\
+1C8nk\xc8\x0c\xad\xa2;Q\xb4[^\xdf\xd6\
+\x10\x1e\x9f\xcd\x0cy\x9di\xfee(\x1cOQ\xd5\x9d\
+\xe9\xc2sA@\x8cuW\xfb\xb1\x8bB\xa29$\x11\
+\xc7aqC\xa1\x9eN\xe0\xc0\xf2U\xf7(\xe3\x7fa\
+\x11\xd0\xba$\xe0\xe2\x82jM\x9b;(\xf72\xec\xbd\
++\xc8\x06\x86\xdc%\xc0\xc5 \x09\x94k\x9f\x89\xed>\
+W\xcc\x8eR\xff}C\xae\xf9\xee?n\xc8\xa2_^\
+\xf3Mi\x8f\x02\xc8\xfc\xf3\xeb\x83\xc9\xa2\xfb\xda\xfe;\
+\xe0\x85XZ\x16\xed\x83\xfe\x0cC8\xeea\xc8\x1a \
+<\xa7\x88\xfa\xb9\x08\x1e\x8c+\x18m\xec#Z'x\
+\xde\x83\xdb\x9aJ%vV\xe6\x17\x11P\x02\x9b\x04l\
+\xd1\x22\xa2-#\x8c\x03\xb5U$\xf0\xca|\xf3\xf5\xda\
+2\xcb\x87\xa9\xcb\x8b1\x9e\xf6\x0f\xd8O\x01\xbaU\x94\
+\xf1\xbd\xa3X\x97an}\xd0P0\x0f\xa1\x22\xab\xf6\
+\xdc\xfb\xdd\xe3\xf0\x04\xab\xbe\x99;\xd9\xb3\xc3\xa1\x85\x9d\
+\xce~\x8cH*\x01v\xec/\x05\x0e\xdb\x8b\xac\x81j\
+\x18\xd7\x8d\xfa\x8d\xfb\x8d\xd4\xdd\xe6\xd39cN\x9bC\
+_\xe7q\x90\xc8\x98\x12(W\xc0\xc7\x03*$P\xa8\
+\xa1\x17\xf3\xc0\xedI\x05f\xdc\xa1F\xeb\x081<1\
+\x94\xdc\xfe%\xb1\x81\xddG\xbb<\xd97\xbe\xdfK\xdc\
+\x91\xc0\x02v\xc2p\xb4!\x1c\xe7\x19\xe6\x1e\xe6.\xba\
+< \x0aw\xb8\xb4\x10\x98\x8f\xd8i\xd8C<w8\
+\x8a\xb4\xed\x84\xf1C`\x81y\x03\xe3J\xe3\xe4\xe2\xe4\
+h*\xc0\xf4\xc4\xb1\xc6\xf1V\x00\xd9)\xfb\x04\x06x\
+_M\xf5\xaf\x1dZ\xecd\xec;\xfe\x910\x82\x01\x86\
+\xddV\xd9\xc5\x94\xf6x\xe0\xa4\xce\x80\xf3\xba\xd6\x08\xe0\
+\xfb\x19'^\x13(\xe0\xf3\x1f\x1e\x1e\x19\x92\x96\xd4\xfd\
+1a\x85=\xcey\xf0\x8f\x8c>\x7f_\xb7\x11d<\
+\xf8\x1e\x02%8\xec\xdc'\xfcL\xfcF\x98z\x12\xf7\
+\xf4\xf3\xc7\x9f$\xc0\xc5\xb83\xde\xd5q\xdco8\x8e\
+5\x0f\x1c_\x88\x03\xc4\x02?w\x93\x1eT\x1c\xbb\x9a\
+\xb2Of\x10\x07\x87H\xbfQ5\xe7-\x1c\x15nd\
+\x1d\x01b\xa3\xe2_\x9d\x09\xe6\x1f\xefc\x22P[\x03\
+U\xff\xdd\xaa\xe9\xe7\xfckG\x18\x87&g\xc2\x93#\
+L\xa4\x9b\xcc+\x11^\x1c\xf8\xff\xd5oq\x9aGj\
+\xd2\xfb`\x140\xa1\xb9\xc18\x18\xfc\x9c\xeb\x9cW\x8e\
+ \xe7E\x00F\x8e\xb6S\xc9\xa1\x02\xd5\x81\x1a\xde\x07\
+\xf5\x9d\x8d\x83\x05\xab\x12m\xf4\x12\x02\x1c\x17\x1c`\x1c\
+\xd2\xda\xf1f\xdcV\xac4\x03\x10\x05$0\xb1\x92~\
+O\xe0\x88\xda\xf9\xe5U\xe3\xbez\xd5\x8e\x8fvyP\
+\xa09\x7f\x0c\x0d\xce\xbf\x9e_\x99\x91\x90\x98\x1dsL\
+r$\xa3\xcf\xdfs\xbfabdm\x8b\xf4y\xdc\x9f\
+\xbat\xa4n\xb7\xc7\x91\xfb\xc7\xbc\xe0\xef\xca\xb6\x9a\xab\
+\xcdX3\xe4\x0b\x0d\xea\xbal0\xfbF\xe4\x9a9\x16\
+\x5c\xee\x1f\x11q\x02B\xa8\xa9\x8b\x8a\x88\xe1\xe3]\x06\
+\xd8\xf0\xc8\xe0\xa0.kbJ\xdf+D\xef\xb8\x0fD\
+<\xb9>\xfa\xe1\x92\xb9\xa2\x9d\x0e\xd4Z\xdaN\xc1`\
+\x90A\xe5ba\x88\xba\xd0\x96O\x1b\x89G\xec\xa9i\
+\xc7\xd0b\xc1\x84\xc2\xcb<QI\x85?W\xb3V\xed\
+%\xa1r\xca\xd1\xf3u\x0b\xb5\x5cD\x07QO\xa7O\
+.\xf7\x95\xc8,\x1b\x05\x0b8\xf7\x95\xef\x115\xce3\
+\x9bP\x16\x99Wh0\xe0P\xc9\xe1\xc7\xb0Bm\xbd\
+\xdd\xc4P\xa8\xd0+\xd3\xe4j\xfe\xd4\x96\xa3\xb9@\xa6\
+\xda\xda8\x85\xf5\xa6\xdd\xcb\x90\xc7\xbf]0e2\xe9\
+\xf2\xe1%.\x1bKc\xe1\xf9T+M\xa9F\xfb\x7f\
+\x86p<\xa0\xdd\xbf= S\xaf\x11\xc3\x83\xd9A?\
+\xf5\xe6o\x86p\x5c\xd7PP\x0f\xa5\x19\x80\xa1dZ\
+\xe0\xd1\xd1\xa7\x9f\xb1jE#u\xf6\xddE\xa0H\x01\
+\x05\xefK\xcc|\xa3m\x0e\x8c\x0fj6\x95Y\x81a\
+4\xba\xcf\x90K\x13\x5c4O\xf7\x81ZW\xaf\xa5\x95\
+8\x14\xd7\xd5.c(\xee;\xcf\xab2(\x1eh9\
+\xd5P\xccK{\xd7\xd69\xc3\xe4\xcf\xeb\xd6\xb1ct\
+R\xef\x7f\xb9\xa8\x05Vf\xa2\x7f\xd9\x10\xfe\xee\xd6\x80\
+[\x0aG~vC8\x1e\x13`\x14\xf3)\xa3\x99F\
+3\xe5Zx\xd7\x88\x80!B\x00c\xbf\xf4\xbd\xdeM\
+\x00&\x8e\x9e\xdfaA\xa9\xd3o\x924\x14\xc8\x14u\
+\xdf4\xc4\xe72\xb6kj?e\x08\xef\xfb\xa0!;\
+\xc6\xc3\xfd\x86\xf0\xf3\xeb\x0d\x99\x19C\xd7\x0b\x0f\xe0!\
+\x1ew\x87!\x9c\xff\xba\xa3uF\xeb\x14\x0c\x1a\xa8\xf6\
+\xa28\xf3|\xf6'\x1arm|\xff\x16C\xd8\xee\xb7\
+6d\xaa~\xd4J\xf8Mv\x08\xdb\xad\x0c\xd1\x10\x0e\
+\xc8\xa2\x8b\x9e!%\xb3\xa6\xfd\x1a\x91F\x02\xf3\xde\xcd\
+\xe1+\x86\xac\x0aM\xa6\xb4\xfd\x82!\x9c\xc7)\x860\
+^w\x18b\x9b\xba\x80\xa2\xb4N\x0e\x14\xed\x11\xb17\
+\xbc[\x83D\x9dL\xd1\xc14\x1d\xa8\x89\xc6\x10\xb4\x82\
+\x02+)\xf0\xc0\x82J^`\x16\x98\xf4\x9f\x89\xff\xd1\
+\x06n\xfc\xde\xf1\xfb\xc6\xef+J\x15\xf4\xbc\xc4\xd2\x87\
+\xc3\xd4Vp\x07\x89\xd9\xdd \xb1\xb4\xe3\xe3\xfb\xbf\x10\
+)\xc18\xd8\xcb\xab\x14\xe5\xcb)\xf3\xd9\xfd\xa8\xbb\xb2\
+\x0b\x0eK\xb7\xa9!;0\xed\xb1\x86\x82a\x05\xd3\x8c\
+\x92\x0b\xba\x9f\x10H\xc6\xe1V\x00\xdcK\x0dp\x8c\xd0\
+\x88Q\x9f\xf2~A\xeb\x17\x10\x8e\x07\x07\x1c\x94K\x09\
+\x86)\x013\x15\x813\x1cK\xa9\xb5Gu\xf9.;\
+8V\x88\x11K1\xe8k\xbfE@p\xe0\xfa\xd5\x03\
+\xcc\xe1]\xd6\xa0@\xc6\xa7r\x97\x87\xfe5CA\xd9\
+\xa6V\x1c\x8d\x09u9\xe8\x0f1\x14\x01,\x0cm\xec\
+.\x9e\x03\xb4t\xd8g)U\x22\xf0\xa4\xf5\x9c\xf5\xb0\
+\xffg\xea\xca\x10\xf6\x8a\x98\x88s\xb5{J^\xd5v\
+\xd1\xbb\xe3\xa8\xe4\xd1\xb59h\xd3{|*e\xf3}\
+R\xe3\x00#\x06-\x16\xef\xce\x22\x87\xdak\xc1\x11\xd7\
+SI\x15b\x92\xae\x09!G\xdf\xed\x0eQ\xe0]\xac\
+U\x9a3\x1ehPI\x0c\xa5\x12.\x9e\x0c\x83\xcb\xc2\
+$\x1fR@\xfb\xceTje\xd7\x11\xf9>\xfb\x17b\
+e\x88\xeb\xe28\xb1\xaf/\x13\xac\xcde\xa2\x18\xee\x9a\
+V\xdaEf\x9a\xf5\xbc\xffT\xffik+\xe8\x8e\xb6\
+\xecU\xdf\x97\xd0D\xd0\xb8\xbb\x06\x18\x01r\xc4w\xb1\
+\xbbH\xc4\xac\xaf\x80\xa7\xf6=Op@\xe9\xe6\xfe\x93\
+\x18Cl\x8f\x8cp]\xfb\x8e_\x82\xa6\x02\x22z\xea\
+z\xe1\x0e\x22\xf6\x04\xed_/4( \xb3\x7f\xa1n\
+\xbf\xba!\xdb\x17\xae^\x8fF\x00\xcc\x00\xf9[^\xd2\
+\xa0\x8c\xbf;\xd4\xd8\xa3\x04h\xc9\xa4\xd3\xde\x0f\xe6\x00\
+m~\xd9\x8f8_\x1c\x7fJ\x22a\x0eP\xa2A\xa9\
+\x00\x99y\x1c\xde\xcaQ\xf7\xef\xe5~\xd4L\xebZc\
+\x81\x80\x12\x09\x18\xbe\xa7v\xe4+\xea\xbfg\xf29\x8f\
+\xba\xb4\x96\xef\xcdZ\x0e\x7f\x8a\xf6!\xea\xfe\x040\xf0\
+G9\xc2X@\xcb\x00-\x1a\xcec\xb2\x00\x08\xe7\xc7\
+y\x90`VI\x95\xfb#\x04\x1c\xb0S\xf1\xe7\xf1G\
+\xeb\xd2\x0a\x98jJT\x8fGC\xe4\xd6\xc2Q\xe0\x0f\
+xpJ\xca\xf3\xdb\x8a\xdf\xe3\xf0\xe0\x88\xcd\x1c]\xa7\
+\xbc0\xe2\xb0\xebHF\xc7k\xb6\x89D0\xc0\x1c\xab\
+\x01\xf4\x8c\xba({30\x00p\xdc8\xdfY\xd3\xf9\
+\x0c\x0f\xa6\x9a\x94f=\xd5\xec\xf3\xfe\xda\xa1%\x82\x85\
+#\xc9\xe7p\x9d,\xf0,\xacL<\xae\x8f\xefg\x1c\
+\xe6H\x91\xdb\xe0\xac&\x87\xba\xd6:\xc0\x81\xc6\x91\xa8\
+\xfb\xdd\xcfR\x94R\xccR\xa8\xca\x92\x89\x87q\x013\
+\xa0\xee\x9a0\xcf$\x19p\xae\x1f\x878\xbf\x7f\xfa\x9a\
+k~\xceu\xe1\x181>\xfc\x1cC\x1d\xc7\x1f&\x05\
+\x8e=\x11O\x18\x01u-7\xe3\xc2\xfba\xa2p$\
+\xc0T1O<\xd3F\xdfr\x1cV\xce\x9b\xf1\x9a\xc3\
+\x903x>\x9e\x04\x9aXh\xf8;\xae\xbf\xd7\xfc\x9d\
+E\xe7\xc9x1\xdf\x09\x00\xf1@\xb10\xf0\xb9\x04\x8c\
+\xa8\xbdc#g\xc1\x15\xc5\xdc\x0dz9\xb8^\xbbE\
+[6\x9e\x0fm\xa4\x1e\xf8\xa1\xbf5\xfdr\xd9\x18\xa8\
+U\x86\xf2\x87\x98 \x99\xee\xf7Dd\xe6\x0e\x19\x156\
+X\x02\x0d\xa8\xdf\x12\x00 r\xaf\x05\xc6k\xdd\x15\xa8\
+\x88\xed\xc2>Z\xfc\x1d\x81!\x027l\x18d\xe6q\
+\xac\x09\xcc\xa1\xe2/\xea\xbao\x9c\x8c\x0f\x01C2\x1f\
+\x0f\xa6\x8d\x06\x11\xc1\xe1\xeb\x89\xba\xe9\x94\x7f\xe6\x0b\xf3\
+L\x9f\xef\xd40\x16J\x16rEHQ\xbd\xf56\xa6\
+\xcc\x0f\xadC\xde\xaf]\xa2P\xce\x84`\xa3\xa6\x96]\
+\xea\xd1\xde\xa6G\xb5\x9f\xc3n\x860=6j7\xb6\
+\xccn{k{K{kA\x81\x16\xc5\x19\xe6D\xf3\
+]C\xce\x946'\x1b\xb2\xa1\xe5\x0e\x1f5\x93\xb4m\
+b<f5L\xd7%\x22\xcdO\x021\x18\xd4\x88m\
+Y\x1f\xf9\x99\x8b\x8d\x0aGd\x03C\xf1}\x0aD\xa0\
+.\xed\x06\xb9\x1c?\xcf0Yf|%Q8\x8d\xda\
+\xb8n\xc0z\xc5}g\xde\xa3\xfa\x8bA\xaa\x0c\x87o\
+\x80\x1f\x1b;\xd4\x18+\xd6\x1c\xac?7w\x1bh\xe7\
+1\x14\x9a\x04v\xdf,\x00\xf6H\xc0\xd4<?b\xbb\
+\xbdYE\xc1\xdf\x22\xf6\xeb>&\xf6\xeb^$r\x9f\
+\xbc;\x82\x07\xc0\x98\xf7\x18jP7\xe7\x0e\x98\xab(\
+\xad\xc1\xb1Y \xaa\x85$&\xc3\xf6\xb9\x1dn\x5c\xfd\
+\xd7Uf\xe6\xba\x9c\xb9\xa5\x1f7\xaa\xf7\xa3\xd5\x0d\xe1\
+\xb8}\xc0\x0e\xf1\xe7\xd7\x8e\xae\xcd\xeb\x16\xed\xe7\xfc9\
+G\xa4\xec\xf80\x0b\x8e\x8f\x86\xcb\xa3\x16\xf0\x86j\xed\
+\xdd\x10\xb4\xce\x0c[\x1b\x0a1\xae\x8f'\xc3\xb5\xbf\xc8\
+P\x18\x9e\x12\xe9\x82\x993\xac\x1d`\x81\xab#\x0da\
+\xbc\xbfd(\x1c\xe47\x8b\x09\x01u\xd2\x1c.S\x0f\
+\xbf\xdc\x90_\xb3\x7f4\x7f0\x14\x94_\x89PB\x09\
+\x87\x22\xdfon\xc8\x94\xee\xd1\xd9\x86B\xad\x5c\x19i\
+k\xb2\x17\xdb\xec\xc9 wC\x8f\xfd\x84uZ\xfb<\
+\x99\xf0\xf6\x1cCQ\x9bo\x14\xf2\xbbr\xcd\xbd;N\
+\xf4)\xff\x9b!\x07\xb2\xfa\xbd\x0dE\x86\x13m\x081\
+\x18\xda\x07\x0c9\x03\xef\xa2\x9e\x18\xb2\x0a\xd08\xc3E\
+5\xea\x13\xfb\x18\xf2\xfaJ\x7f\xf6\xd1\x1a\xa35G\xe1\
+u\x7f\xaa!\x97\x80\xb5w\xa66\x93\x13\xe7\x19\xd4\xd5\
+ 8\xec\xfdR\x01a\xfd\xeb\x1e\x0b0G\xfb\xbb\x86\
+\xe80O\x98\xc3<~\xa1!\xfc\xfe\x01C\x0c\xe0\xc7\
+\xfd{b\x9b\x89m'\xac}\xdf\x1f\x0d\xe1\xf7\xef7\
+\x84\xd7\xef3\xe4R\x90\xe1Wj\xf7F\xb7\x14\x98d\
+\xd22\xf1\x92\x98K-\x87\x1f\xfe\xee\xea\x94\xe9\xa6\x8d\
+nl\xc7\x17\x1c\x9c\xee\xcc\x803\x92\xc3\xd2\xaf\x9e\xc4\
+=c\x00\x90\xee$hKX\xc1\xc8\xa6\x99\xc9\xe4\x89\
+\xa4_\xab\xe6\xdbJ\xe8\xc2\xf3>q\xbfAm\xd6\xec\
+\xef\xcfH\xed\x1b\xe9\x0b\x1e\x03B\x9f\xce\xe7\xe1\x01U\
+\xee\x07\xcf\x0d\xa5-Z\xd7(\x01\xf1\x9f\xb3^\x911\
+^\xd1\x10\x8e_5\x14\x8e\x11\x0e\xe1{\x0d\xe1\xf8\xb2\
+!\x5c\xe7)\x86\xe2\xf3\xc8\xbc\xe2\xa0\xfeR\xdaAZ\
+\x0f\xdd1`\xbf\xd6\xb1\xbd\xc4Pd\xa8U\x1aA\xe9\
+\x93\x97`\xee\x1a\x91\xa8\xfe\xef\xcf\xfb\xa3;\xe2\xac\xbb\
+tUQ\xc0\xc2K\x0e\xac\xfb\xd1\xcd\xb9}\x1dZ\x02\
+.\x0e\x89\xe3\x87\x16\x87\x89\xbd\xbe\x5c\x94\xfa(A\xe4\
+\x8c9\xba'\xa05\xb0\x5cX\x97\x96\xcbb\xb4\x94,\
+\xc5\x82\x8f\xb9\x0b\xed\x00\x1c\xeb+\xc7~\x143\xeb\xa3\
+\xb0\xab\x8d\x8a\x12J\xc4\x94a\xf6\xa2\xe9\x01S\xcb\xb4\
+\x07\xae-\x18\xa00\x1b\xefP\xd7\x99mR\xa9\x8e\x07\
+l\xa8\xc5W{C\xda\xdf\xba\xfa>\xf7\x05\xaa<%\
+\x04\xdcw\x18\x0e\xf8\x11d\xd4\xa1\xfa\xeb\xf9\xf1\x00K\
+\xad\xe9D\x17\x13\x05\xca\xdc1E\xf4Tv\x833*\
+\xd63\x14\xfe\x0av\x13\xfb\x18\x09'JHq\xcc\xf1\
+\xbbpHa2\xe0\xd8\x8b91\x83\xe3\x8f\xbd\x83=\
+\xab}\xd2\xedE\x0280\x02\x09\xf0\x13P!P\x88\
+\xfdE\x8d\xbe\xee\xb7\x97\x82\xd6vh-\xe6G\xa0\x82\
+\x00\x8d\xba\x1a\xb9\xc6B\xdd\xd5\xacj\xbf\xe7\x19t\xec\
+=\x02\x18\x1cy\xbf\x1csg\xa8\xdd\x16F\xef\xb6h\
+G\xfe3\xda\x918\xeeu\xa9\x02\xf6\x14\x19\xff\xaa\x06\
+\x7f\x86\x80\x01G\xc4\xd4\xd97p\xec\x19\x0f\x12\xcfu\
+\x8d?v.\xdf\x8f\xbf\x0bi\xf2\x15C\x9eg\xadS\
+;\x9e\x1c\x92\xfa\xbfM\xdf\x97\x8bL;m\x00\xcdM\
+\x9a\xf3\x0d(\xd68\xb2\xf3F=\xd2\x19\xa9\xd9L0\
+\x22\xbf\xa8$\xd6T\x0b.\x90\x1b\xc6\x83\xc0\xc4\xad3\
+\xa7P\x1c\xf8\xfb\xac\x02\x99\x06\x86\xbf\xffg5\xd08\
+V\x88\xd11 \xb5\xda\x22\x0e\x0b\x0e \x0e,\x19r\
+2\xca\x95C\xdd\x10\xa0\xe0}\x04\x0e*\x87\xd63s\
+d\x9a\x998\x9c7\x0f$\x13\x88qc\xe2<[\x05\
+L\x9e\xd5\xf8\xf1\xf7PG\x18\x97\x9a\xb9P\x07j\xea\
+@F\xcd\xb8\xa8)\xfa\x18V\x04&Xp\xa8A\xc3\
+\x11\x5cM5[8\xa48x01\xaa\xbfC\x15z\
+lyEb\xab\x12\x13\xff\x9cZ%~ae^\xcb\
+\xf98\xef\x1b\x04~\x08dd\xc6F\xba\xef\x8c\x17\x0b\
+\xf1\x1cU\xad?\xf7\x8f\xef% \x81\x83\xc5\x03H&\
+\x91\x07\x94\x8c8\x14f\xb5\xa5\xf3\x8d\x8e\x05\x9by\xc9\
+\xe7\xe9>\xa3\xda\xed\x22Y\xb4]D5\x9f\x0c;%\
+\x18Y\x842\x05\x96\x98\x7f\xf4\xc9F\xac\x84\xc8\xab\x0c\
+!7<\xa0rc\xe0\xa0\x9e\xce\x86\xc1\x86F\xe0\x84\
+\xf3\xe5y\xa1\x9b\x81(\xb6~\x1f\x18\xe7Z\xdc\x91Z\
+D\xc4\xa7\x94\xb9\xc3\x80sC\x0d\xaa\x1e\xfd\xa0\xc9\xbc\
+\xaa\x14\x00\x83\xc6)\xa3<O\xdc/\x028l\x14\xd4\
+\xeeQSG\xc0\x01\xa6\x04\xf3J\x91t\x17y\xe3~\
+\xaaVu\xec\xeb\x11c\xc3\xa1\x86\x5c\xe3\x8f\xf6C\xbf\
+\xae\xa1\xa8\xa1[$\xceT\xd7\xecpGM\xa2\x80>\
+O\xe9\xaf+\x0d\x06\xc4\xc3|\xe3#\x92\x7f\xb1\xfa\x9d\
+c @iW\xdb\xd3f\xb5(\xe7\xea\xea\xe8\xed\x9f\
+\x0d\x91\x11q\xb01\x22\x9a+\xa4\x01\xc1\xfc\xe7z\xe4\
+\x88\xf7\x0f\x19\x8a\xb6XS\x125\xb9\xff\xa9!\xdc\xce\
+\x97\xbb\x97\xba\x97\xa2\x01\xb9\xa9\x19\x90\xdd\xa3\x86\xf0\xfb\
+G\x0c\xe1\xb8t\xc02\x91\xd2{\xa99\x04\xa6\xe5\x1d\
+\x03\x06\x0f\x87\xdf\x9b\xba\xf6\x9b\xfb\xf9\xfb\xb0~t\xbf\
+\xe8~\xd9\x05\x87\xa7k\xbbQ\x17\xe6\xd3\xc4\xdf'\xfe\
+1\x11\xd6\xf7i\xd7\x19\xc2\xcf\x0f0\x14\x81\x05\x19\x9c\
+\xd1\xf0\xfarV\x93.De\x93\xa6\x8dJ\x03\xbc=\
+\xe2\xcf\x83c\xf5s\x19\x9ckf\xed\x89\xe1\x1d\x86\xec\
+\xe0\xf7'\x182\xf5=\xb6\xc5\xba^\x14\xcb\x8f\x17\x91\
+w\x1c\x16\xeb\x7f\xbd\xba\x02i\xdfS\xa6#\x18\x08\x13\
+7\x06\xd88-\x13\xb0\xb4jK\xbfP\x18Vrt\
+1\xf4\xdcQZ\xa9[\xb1[1\xd7\xf2\xc7\x84\xa7\x89\
+u\xfd\xde\x10\x8e\x17\xf4\xe7\xf7\x17\xe4>\xedN\xf5D\
+K\x83\xe7\x8b\xd2\x12\xa8\x9e\x0b[uu\xf8\xfb\xdd\x0c\
+\xe1s\xaf0\x84\xe3\x9d\x86\xf0\xf3\xf9\x02\xe6\xcd\x0eg\
+\xf8\x96\xf8=\xfdQ\x01F=\x9d\x96(\xec\xc1\x8c\xdf\
+\xd22\xac\x1ex\xa4\x0d\xda@u\xc6\xd0\x0cM\x0eH\
+\xfax\xea\xfc\xbb\x8b\x0c\x85\xf8#%\x02[\x19\x8a6\
+\x8e\x0a\x14\x8f\xb61\x84\xe3\xbd\x86pyK\x1a\xc6\xc6\
+\xa6\x1cc\x08\xcb\xfa\xc3\x86\xb0\xfc\xedi\x08\xc7\xf3\x0d\
+a{\xdd\xc5\x10\xde\xf7\x92!\xcc\xff\xe3\x0c\xe1\xf3\xe7\
+7\x84\xf38\xddP\x04\xb2\xbef\xc8\x06|\xffIC\
+8\xfe\xc4\x90\x19D\x8c_\xff+C!\xda\xf7\x94a\
+\xc6\x8c\xd9\xe8\xc7\x86p\xfc\x8f!\x1c\x8f0d\x07\x0d\
+\x83>\xaa\xd4\x07\x07dt\x87!\x06\x14b\x89\xc7\xf8\
+\xcd\x86p\xdc\xc0\x10\xaf\x7f\xa9\xf1\xa5\xc2\xf1\xa8\xf1\xa3\
+\xc7\xc3}i\x9f2\x88y\xf2JbX\xc5u\x1c&\
+\x98\xd4\xdb)\x0d\x9a\xb2\xa1!\x1c\x173\x84\xf1[\xd3\
+\x10\xc6\xeb\xeb\x86p\xdc\xdd\x10~\x7f\xa4!\x1c\xcf2\
+\x84\xf3\xba\x7f\xf4\xc0\xe8\x81\xa89\x10\x1d\xc2\xf0T\xee\
+\xdf\xed\x1f\x9e\xd3\x8fM;dZ\x18\xafiS\xa6\x8d\
+O\x0b\xf3n\xe2\xf2\x89\xcb&\xac\xfd\xdf=\x06u%\
+\x08\xfbP\xf7vCQ\xc3~\xd3Xl\xaf;z\xc6\
+\x10\x8es\x06\xcc!\x91\xd5\xcf\xe5\xae\x18n\x88\xdbj\
+g\x14\xf9/\x19r\x80{\x987`>\xadO\xe3Y\
+T0j2\x1c\xadn\x02\xb3\x16\xf3\x14C\xf9\x94\x88\
+\xccl\x83)\x22\xbb\xa6\x9d\xdb\x10\x99U\x01\xd9\xc1\x1e\
+;6\xc2K\xfe\xbck\x13\xcc\x1bJ\xbc\xd0&@\xc4\
+\xf3\xaf\x86\xf0yK\xb5K\xb6K\xc6\xef\x89\x89\x0c\x98\
+5\xedY\x86\xf0\xfa\x0eC\xb1o\x8b\x19\xd0\xbf\x12\x10\
+\xf6\x85\x89\x13\x03N\x0a\xe3\xb9E@x\x0e\xbbu\x0c\
+Q\xac2 \x1c/0\x84\xe3\xbb\x0c\x99\xb9\xd1\xff\xd5\
+\xa0\x80\xe6\xdcY#\xc1\xdb\x94Zi\xcd\x8f\x8b.1\
+\xda\xaf\x9b\x93\x9bS,\x00\xdd\xeed\x08\xc7\xdf\x1b\xc2\
+qGCx\xff\x96i=\xe8\xa7\x19\x22\xb3\xe1\x9f&\
+\x868\xbc\xd9P$&60\xc4}8\xed7\xd2\x98\
+\x22\x00\x1fE\xe3^\xd4>\xf1\xff\x0a\xfb\xef\x09\xf9\x0f\
+Z\xff\x87\x9f\x0e7Z\x1b\xe6\xe1\xbc\xe1\x9b\xc3y\x85\
+(\xeb<a\x1e\xccS0\x1e\x8c\xd9sO\xc1\x8c\x15\
+\x93\xcdK6\x8f\x17s\x81\xd2\x0e\xec_\xec@\xfc\x0b\
+D\xab\xd5\xa5\xa49\xdd\x10\xe7Sb\xc8\xa9\x94\xae\x99\
+f(J7\xb0_\xb03`\x04\xe0\x88c\xa7\x10\xe0\
+E\xfc\x17\xff\x01{\x8cR\x032\xf9\x94\x96}6\x22\
+'\x12N3\x14\x01\x19i\xcf\xb8(+\xed\xbc\xb1\x7f\
+P\xf5\xc71\xc51F\x95\x1eG\x9c\xc0\x80Dz\xbd\
+\x14\x00\xa6\x0c\x01\x00\xb4\x8c(A\xc3\xaeD\xb4\x19\xfb\
+\x0a\xfbR%\x8d\xfesj\xfb\xd1\x0e\xc1\xdf!q\x83\
+c[\x1f\xf1\x0b\xf1+k1q\x02\xd5\x0a4P\x12\
+Xw\x09\xa8\xdb\xf9y\xe0\x81\x00\x02~\x99y\xc9\xaf\
+\x14\xf3\x05\xbf\xa8\xa6\xe8\xa3\xf9\xc2u\xd4~\x02\xe7]\
+\x8b\xfb\xe1\xaf\xe1\xdf\xc1l\xe0|Y\xbf8o\xec\x11\
+\xce\xb7\xf6\x8bk\xa6\xba\xfc\xc0q\x17mC\xcc\xc9*\
+_\xde'\x87k\x99\x82bL\x06\x1e\x03\x18\xc7\xad\xce\
+\x90\xe3\x80p#pl\xaa6\x14\xee\xe8c\xf0\xf2\xf3\
+\xda\x11\xa5m\x85\x1c`w\x10y@\xa0\x02s\xa3q\
+\xf02\xe5{z\x87\x1c\x87N\xe7\xef\x94u2\x96\x1b\
+H\xb4n\x95\xe9\xdb\xf8y\xe6\x14\xc7\x96\xcf\xc7\x81\xc7\
+\xe0\xc2\xd1\xc0\xc1\xc6a\x22\x80A$F\x8e\x02}\xeb\
+\x9b\x95\x9a\x95c--7\x8c\x7f\x8c\x87j\xe1\x07\xda\
+\xd3\xac\xa8\xc0\xc3\x9cUF\x7f\xae\x94\xd1\x0f\x8f\xcf\x93\
+\xc3\x93\xb1\xd6>\x8d\x17\xe7\xab~\xc4a\x92\xa5\x0c6\
+\xa5\x0a\x8c\x1f\x0e\x1dG/v\x133\x82\xeb\xe5\xc8}\
+\xc2\xd1\xc6\x01'SO\xe6\x9a\xf1\xc4\xb1\x22\xa0\x82Z\
+\xff[S;%\xaf\xc9\xa6\x9b\xc1\x92\x9a_+\x8aQ\
+\xc0\xf8S\xdb\x8e\x08!\x8e\x1e\x19`\xe6#\x8ep}\
+\xffk\x11@\xe61\xa5\x11D\xd0?(\xca\x1b\x9f\xa7\
+\xebp\xb1\x1aDx\xb8\xef8\xba\x04\xb4\x1872\xd1\
+\x04\x12\x94Ao\xd76\x14\xd4q\xae\x83\x05\x08\xa6\x84\
+\x0c\x17\xcf` \xba\x06\xc5\xdd\xec\xed\xa1\x98\xa7\x8c3\
+\xb5I\x95\x1a=\x9a\x02.f\xc4yVb\x94.N\
+\xc4\x86\xc9\x86VG\x1c\xb9\x1fl \x8ax\xbaH\x1f\
+\xef\xe3\xefpH\xb67\x14\x144\x98\x0a\xda\xc8<\x10\
+\x80\x18\xe5\xcazND5tUaj]\x09\xc8\xb1\
+\xe0b\x90\xa9f\xd6\x0d8\x16N\x9eK\xe63\x14F\
+(\x82\x18\x020%\xd8\xf0\xa0\xb4QkG\xe0\x8b\x80\
+\x0ab\x81\x94\x1aP\x1b-C\x8c\xe5\xc1)\xc3\xba\xaf\
+P\x9a1\xe4\x9dJ\x0aS\x82ZQ\xad\xab\x8c/\x81\
+\xa1v?CA)^$9|^\x03(FI\xbb\
+\xa5!Ru?fT\xdd\xa8q\xf0|A!\x94A\
+\xd4\xdcl(>G\x19\x0b\xcf\x8c\xcd\x91\xa8\xac\xdd\xf3\
+\x01\xcfE&\xc0\xef\xfa\xdf\xc5\xe7\x22\xd6${_g\
+\xee\x83\x1c\xc8\xfe\xac\xd4N\xd07\xdc]\xe4\xd0\xa3\x05\
+1U\xe2g\xd7\xcb\xb0\xfa\xb92\xa2\xfb\x18b\xff\xf8\
+\xd6\xfa\xc7\xb7\xff\x0ax.\xb7\x87s\xa6\xc4Q\xc1\xec\
+>*\x8b\x9c\xd1\xdd\x81~\xe5\xcd\xdcz\xbe\xa9\xb1T\
+\xad#%\x0e\xed*\x86,v\x163J7\x16\xb5\x9d\
+f\xfe\x1fW\x88L\xd9\xfc\xdb)g\x14\xfay\x03\xe6\
+S\x9b\xc7\xcf\x8ar\x1e\xe6e\xfb\xd1\x80=\xa3z\xfc\
+7\xdb\xf3\xf5\xf9\x07+P\x12\xe6O\xb7x\xb7X\x17\
+\xd6\xbd\xf6hC\xf8\xdc\x8f%U{\x9f\xf70\xb2\x08\
+\xa8/i\x88\x0ek\x0c\x14\xf9>\xc4\xfc\x16\xb3g8\
+\xd5P\xf4w\xc6\xf0`]\xc0\xc0\xa4\x14G\x0c\x04\xda\
+\xaa9\xd5\x98}\x1d\x83\x8f@<\x01\xc2\xdbuDL\
+\x8b\xee\x12\x9b\x1b2\xa5\x19\x8d\x11\xda?\xa2N\xdd/\
+c\x08v\xcaO\x0c\xe1>\x7f\xd1\x10\xc6#\xaa\xbe\x85\
+\xcb[\xc3P\xa8\xb9\xab+\xc9\xe8XC\xae\xd9\xeeV\
+5\x84\xe3\xd3\x86L\xf5\xee\xd60\x84\xe3M\x86\xdcV\
+\xcck\xfeU\xa3\xdd\xbd\xc5\x10^\xbf\xcb\x90q\xca{\
+`\x00\x00 \x00IDATK \xb8\x9e\xfe\x97\x86\
+\xa2\xc6R\xa2\xa7^\x9b\xae\xc4\x02\x0e7\x81P4L\
+\xba\xe5\x0c\xe1x\xbe\xa1P\xc1G\x83\x021>Je\
+`8)\xb3\xea\x81\x94k\xbbk\xbak\xb2\xe8\xe0\xc4\
+5\x01a\x1c\xbb\xfb\xbb\xfb'\x0e\x8a\xcc\xb2\x9d\xe2:\
+\xf4P\xf3`\x13\x8e\xa3\xcd\x0c\xd9\xc1\xc4Q\x19\x1dm\
+\x88\xcbQX8\xc2y\xff\xb7\xfdO\xd4\x02\xf9\xba!\
+|\xde\xd6\x06\xcd\xdf\x8f\x86\xf7\xbf\xdf\x10~\xfep\xf7\
+Hg\x81\xbe\x03\x0d9\x90\x16U\xd9\x7f\x1d\x99O1\
+\xf3\xdb\xcf\xde\xcf\xd6\xcf\xa6\xfd\xe79\x05\xa0\xef.2\
+\x81\xa2^w\xff2\x84\xe3\xfb\x0c\x1a\x87}\xb4\x9eu\
+E\xc9\x96\x99\xe1Oj\xbf\x5c!w\x01\xe9\xffl\xc8\
+\xa2\xd6\xc3\xa2\x01\x8bIKd\xc7\xa2]\x9f\xd6!g\
+\x8e`W\xd0\xaeZ\x01\x00\xda\x8e\xf6k\x19\x8aL\x9e\
+\x02\xa5\xb4!u\xc6#\x86<\xf3\xa2R\xe1w5\xf6\
+c\xd4\x1eUmT\xdda\xf8\xd1p\x95Q\xc0\xa3v\
+\xc7uE\xad\xbf\xa8\xd3\xfdI\x06\x05\x1e6.j\xc5\
+-\xbc|\x8e\xf6\xcb\xb3\xd4\x85\x82\xd2\xbb\x1fF\xf1\xd8\
+\xd8m$\xae#\xabd\x11\xba\xc8\xdc8\xbb\xc8`?\
+\xa4\x1a\xe7\x0f\x18T\xcb\xfd\xbb\x18`\x09\xaeu^G\
+\x5c\xdcWv<\xf6Gd\x0e\xad\xad\xbf\x7f\xbf2\xea\
+G\x88\x09\xf9\xce\x82\xd1H\xf7\x1b1T\x86\xa9\xc1\xe1\
+\x9c\x1a\x03\xa9q\xffi6m6k6\x8d\xddb\xa2\
+\x16D\xb3q\xb3Ql\x1bl\xab\xe9g\x0a\x91\x5c2\
+\xea\xa7\xa6\x121k\xbek\xedw)\xc9p\xbb\x8e\x12\
+\x04\xba\x19\xbc\x942\xc5a~\xee:\xecZ$P\x94\
+\xd8\xf4\xb6\x8c*\x01\xf1L<v4\xf6\xc0 \xfb\x80\
+R#\xba7\x10\xb8@\xd4\x12\xbb\xad\xf2\x0f\x86\x9f\x19\
+\x0aF\x9c\x983aOH%4\x94\xe6b/\xa1\xc5\
+\xc1>\x04#\x01\xa6'%\x94\x04~q\xdc\xeb6\xd1\
+\xd8\xa7\x04$\xd8\x87\xf1W\xb0\x9fX\xdf\xd9o\x10\xff\
+#p@\xd7\x1e\x98N*\xc1vG\x19\xbb\x03\x07\x9a\
+\xe7\x02G\xb5\xce\xf4\xf3>\xec2\x1ca\x1c\xe3\xba6\
+\x7f\xb2\xc41?\xafKr\xf9{\x1cp2\xfdU\xd7\
+7\xff~\xc4\x1ea0PZP\x07\x1ep\xd4\xeb\x12\
+z^\xb3.\xf0\xfd\x044p\xec9o\xbe\x1f\xbf\x16\
+\x7f\xb0\xee\x1a\xc6\xf9\xe2\xb7\xe1g\xd7\xe7\xc1u3^\
+|\xae\xf6\xfdq\xef\xbb\xad\x05\xc5)t\xcb\xc6\x06q\
+)S\xbbp1q\x868\xe5s\x0d\x82]\xd6\xf3:\
+\xf1\xd9\x8a\x08\x03'\x88\xc1R\xaag\xfe\xa50\x90q\
+\xe81\xc0\x09\x08\xe0P\xd6\x19\xf5\xbaT\x80\x81\xe5|\
+x\xc0j\x0a{\xad\x22\xcf\xf5\xcc]\xa9\xf1\xd7\x14}\
+2\x98P\xe5\xeb\xd2\x03\x1c\xe5\xber\xf8\xb9!<X\
+|/7\xa6\x16\x15d\x22\xf1\xfd\xb5\x16\xc2\x94\x14\xd8\
+h\xf8\x9c\xd5\xe5\xf0s\x9e\xa8\xd5\xd3\xc7\xfe\x15e\x10\
+\x9fJ\x19Cj\xf6\xc2\xe7\xa4\xf1A\x95_\x9f;C\
+\x00\x83#\x8ea-\xda\xc8y@\x95\x9f\xd5\xc75-\
+\x90\x9c\x07\xe3V\xf75\xadE\x0e\xf9\xfd\x8c\xe2})\
+@5\x9f\x98\x06\x04h\x18'\x1c/\xdaE2\x9f\x98\
+\xc78\xb4\x8bUm\x17\xa1\xa8\x11\xc8\xaa5\x0d8?\
+\xce\x8b\xbe\xa6\xaa\x91\xf3Za\x1cz\x16|\x02\x0el\
+(\xcc\x072\x00P\xe8\xa1\xf8\xc9\x90\xf06\x8b\x8c\x17\
+\xf3\x9ay\xc0BA\x80\x8b\x9aES1\xde\xbcP\x8d\
+\xc5Q\xa7\x9d\x92\xd4r\xfd\xf9!\x80\x87\xc1\x02#E\
+L\x02W\xf5%\xa2H-\x17\xe7\x87\xaa/5\xf08\
+\xd62\xc4=@\xc0\xf9\xd1\x8fw\xa7\xd4\x1e\x0c\x83\xdb\
+\xd5\xb6\xa9\xb9#\x82J\x80\x0c\x95\x7fD\xff$\xca\xe3\
+m\x97\x10\x03\x12%-2\x98\x9e,\x1c@\x16\xf6\xba\
+\xf6\x8e\xe7\x92\xf1\xe5>#\xfa\xc3\xc2\xcf\x91L?\xda\
+\x02P\xf7h\x8f\x03\xd5\x8c\x1aHQ`\xa9\xf5\xc4q\
+\xf3\x00\x97\x02\x8d\x1e\xd8P\xa0\x07\x95u\x8fT\xabV\
+\xcc\xc5\x9c4\xef]\xe5\x9c\xfb\x01\xd5\x8e\x8d\x92\xeb\xa4\
+4\xe61m\x18PE%\xaa\xd7/\xdb/\xd7/[\
+0A\x9e\x08\xdb\xf5\x13\xc5F{^0\x19\xc3}n\
+\xfeh\x88\xb5\x86\x07X\xad!m\xe9\xfa\x8b\xfa\x8b\x8d\
+B\xdeo\x1d\x10\x9e\x83\xee\xb3\x86\xf0\xfa\xd3\x86\xa2+\
+\xc2\xc9\xcdI\xcdIE&\x00\xa6\x05\xcf\x09ba*\
+\x01i\xdf\x9e2cq\xb9\x09\xebN\xfbp\xaa\x85\x0e\
+\x8ep@x}[\xaa\x05\xa7\xcf\xb4k(\xa0\x82n\
+\x86\xe6;$\x86f\x0c\x87\x7f\x07<\xaf\x9a\xfb[\xe5\
+\x18Z\x89\xc5L\x86\xa2\x06[Z\x188\x9a\xa3M\x0c\
+\xe1\xb8\xb2!\xbc\xef\xca\x80\x1f\x15\x0c\x122L\x12\x9b\
+\xf3\xc0\xda*\x86,\xc64Z\xdc\x10\x1e\xff\x83\x02\x82\
+\x834\xbe\x88A\xa5\x15\x1b* \xf5\xa5\x22\x93\xb3x\
+\x0a\xe0\x19\xf1\xdb\xa8\xdf\xa3\xfbF\xf7\x8f\xee\x0f\xc7\xf9\
+\x0c\xe1\xef&\x0cEw\x17\xba\x80(S\xdaol(\
+\xb4D\x94\xd9l\xe75\xe4\xcc\xb6\xd7p+#\xd9\xbc\
+\xdd\x10\x8ew\x05\xfc>\xd7\x18\x93\xe9\xf2\xb6}F\xcd\
+\xde\xbbpXV7\xeeC8~\xcc\x90k\x82\x87\xf5\
+\x13%\xb5?\xa5\x1f\xf5\xa3\xbc\xbf\xb7\xa7\x1b2\xb3\xa8\
+;\xc1P\xac\x1f\x88X\x91\x11T\xc6\xa6=\xdf\x10\xc6\
+\xe1\x1d\x86\xac}1Z\xc2\x10^\xafc\x08\xe6\xc79\
+\x86\xf0\xbd\xb7\x19\xc2\xe7\x9fb\x08\xc73\x0c\xe1\xf8\x9a\
+!\xb7=\xeb\xbfl\x08\xc7#\x0d\xe1\xf7\xdf0\x84\xd7\
+\xb7\x1b\xb26@\xff\xa2!\xb7y\x1b\xbec(\xd6\x1d\
+i\x0bPc\xed\xdd+$6GW\x03\xda\x81M\xac\
+`\x08\xc7i\x86\xa8\x16\x1f\x90\x19(\xdd;\x0c\xe1x\
+\x9f\xb9\xf2\xe1x\xa3!\x1c?f\x08\xc79\x0c\xe1\xb8\
+\x97!<\xf6\x9f\x0c\x08\x8e\xd0\xb4\xd5\x02\xc2\xf7L\x9c\
+k\x08\x9f;G\xc0\xec1\xa3\xbb\xd3\xb0Sv`\x08\
+p\x8f?h(D\xf1\xd4\xbe\xaf\xfd\xaa!\x8c\xefo\
+S\xbb\xc3\xee\x19C1>_7\xc4\xf9\x1e\xc5\xe0&\
+\xee5\xc4@\xd8\x8e\x16\x88m\x0eo>n\xa5T0\
+$`ZDQ<\x0b\xf0^\xd6\x5c\xde\x5c\x16k\xcd\
+\xa3\xc3\xde=\xd2M\xed\xa6\xc6\xf6\x92?3\x87\xb6]\
+\xa4]\xb4]X\x9a\x06\xdb\x17\xedM1d)}\xb2\
+\xb0\xe1G\x0a\x8d!\xd3P95g\x9e\xa3\x98\xe5\x95\
+E\xa0\x1e\x87\x00{\x13;\x15M\x1c\xb4\x1b\x94!\x1d\
+.2\xe4\xcc\xab\xb7\x1d}\xaf\xa1\x08\xcc\xc0\xe4Q \
+\x8by\xe3%\x02\x04\xd2\xc8\xe0\xb2\xce\xbeI\xe7\xa1.\
+<\xee\x10a\xd7q\xde\x0a\xbc\xb6\x8f\x1b\xb4?\x9eS\
+\xd8\x93\xb4\x835\xc7\xf5\xf8\x22\xe0\xaa\xd2\x94\x18\xe6=\
+\xa4(]\xc1N\x87\xf2\x0f\xb5\x9b\xda\xeb\xaf\xa6R\xb2\
+\xe8\xfe\xfdC\xb5\xf9_\xc8\xf6P\x0c\xac,Zhm\
+\xa8\xbb\x11\x01\xe9\xf8\x1c\xec\x17k\xe5?\x1ek\xe5\x7f\
+=\xf6\x1b\xcbx7/J\x5c\x12F\xe4\x13\x01\x8f\x17\
+5\xeb\xb4\xc1T\xa9\x84\x8b\xe7\x0e\xc1\x0c\x1d\x8a}\x8e\
+\xd2\x0dJ\x17T\x1a\xe4v95\xe3\x04\xde\xd1\xe0\xf9\
+E\x0a\x98\xe0\x7fP\x9a\xe1\x99Z\xda^\xab\xd4\x92n\
+\x00\xdcG\x9f/\xf8\x0f\xb4\x03\xa4K\x10\x8cI\x89z\
+B\xfdg\x7f\xf3\xb6{$\x16\xa0\xb4\xdf\xa4\xd2\x1a\x95\
+bE)\xf6\xa5\x8a6\xc5h\xdb\x10\x908\xd9\x90E\
+1\xfd\xfea\x0fc\xb7\xe2\xaf\xd4btU\xad\xbc\xb7\
+\xf1\xc3\x0f!\xd1\x81}\xc1\xcf\xf9\x1c\xecC(\xfc\x94\
+\x02\x90\xe9\xe7}8\xda\xcck\xde\x8fC\x8d}\xc9\xf9\
+\x10\xb8\xe6<\x09@@\xc1\x97\xa6\x8a\x8b\x1e\xd6Z\x00\
+8\xb8u\xed\xfbd\x0e5\xe7G@\xa2b\x8a;\xe3\
+\xd2\xc2\x94\xb7\xc5\xe7\xea\xde\x18\xa8x*\x8cF)\x1a\
+X1\x14(]\xf7D\x1e\xe7Y\x1f\xf1g\xd1\x22 \
+\xc0X\xdb\xa1\x9c?\xe7\xc7\xf8\xf3<\xe0\x87\xf2>>\
+\x0f\xcd\x1a\xfc\xe3\x8a\x01?\x8ejj\x9c6\xcb\x14\x13\
+\xe6\xd5\xd8\xc9=S\xd0\xb5\xa0\xb9\xc1F\xdb8\x22\x12\
+8.8\x8c\x18xd\xd6y0_\x89\xae\xe9\x8c\x22\
+z\xa4\xc4f\xaaD\xd8*&\x80\xff\x1c\x87\x94\x85\x8c\
+\x88\x0f7\x94\xf3 R\xc3\x83\xcb\xfbj\x95I\x0c\xe7\
+\xaa\x0d\x1d}z=\xc3Y\x978\xe46\x82I$G\
+}/Q\x05\xf6\x12\x04\x02\x09o\x96c\x8b#=\x83\
+\x86\x80\x16\x16\xdeO\x06\x98\x0c4\x11M\x1c8\xc6w\
+C9\x08\x8b\xe9\xbe\xd4\x01\x0d\xd4\xe9\x97\x93x\x11\xcc\
+\x07\xa8D\x8by;\xc1\x14)\xe4~\xd65\xf28\xe6\
+\xfc\x1e\xcd\x81\xb9\xfd\xfd\xc9\xf1\x9f]\xd7Q\xab\xf4\xd7\
+\x0c\x01\x0cY\x22\x979sO{\xbf\xf4y\xb5\x18#\
+\xf3\x84n\x11|\x0e\x0c\x02\x16B\x8e\x8c\x1b\xa5\x07t\
+\x17\xe0:\x98\xd7\x94fl\xa4q\xe1\xfd5\x93\x80\xbf\
+\xe3\xfe\xe1H\xa3\xaa\x0b3\x81\x08.\x81&\xc6\x83\xf9\
+F\x80\x08J\xff{\x0c\xc5x3\xdfq,\xcf7\x14\
+\x14D(Sj\x1f\xe3m\x8a\xe4`\xe3p\xfb}\x85\
+\xc1p\xb1\xfa\xe32\xae\x04L`\xfc\xa0\x09\xc2\xbca\
+\xa3\xa2&\x0e\x0d\x02\x98\x0dl\x10\x188dv\xa0\x8c\
+i#E3\x80\xf6^^\xda\x00\xd3\x00\xca\x1b5f\
+\xaaQG\x1c\x8f.\x06>\xff\x15\xe9vq\xc9\xcf\xc6\
+\x9ck\x9e\xf7t?\xd0u\xa2\xd2\xed\x81O\xd6\x07\xe6\
+\x07\x94Rj:\xe5h\x0f'\x19\x0a\x83\x89\xcc\x11\xd4\
+=u+i\xdfo\x08\xc7\x93\x0c9\xd3B\xfb0\xfa\
+\xb8{?g\xfaA\xab\xb6\x9a\xcfm\xee5\x14\x0c\x02\
+\xfaA\xff\xc3\x10\xd5\xd0\xa3xb\xcc\x8cl4\xa3\xc3\
+\xd6<\x93\xd4\xc5\x9b}\x9a}\x9b}c\xedh\xca\xec\
+\xd2\x86ieQ\xe9\xff\xa8\x0d\x97\xc0\x10\xeb'\x81\x95\
+\x8d\x0d\xb9\xad \x86\x14m\xaa\xbaO\x18\xc2\xebw\x1a\
+\x8a\xc0\x18\x94\xbe\xcf\xc8\xb1U?w\xafa\x17\xe3\xa3\
+]\xd8\x10\x1e\x8b\xf5\xc6\xd7\x1f__\x0e\xb8-\xdf'\
+\xa5\xc0A\xfb\xa8!\x1a|'F\xaa\xe5F&\xefZ\
+\x88\xf2\xd1\xbe\xd2\xd4\xc5\xaf\x96Z\xf5\xddE\x06\x8b\x0c\
+\xef=\x06\x05\xc6\x82\xa3\xd9.n(\xba^H\x8c\xb2\
+\xdd\xccP\xb4\xe9c\xbdQ@\xcdk\xaa\x1f4\x84\xf7\
+\xad\x9eJ,\xc8\xa0\xc5\x9a\xe8\xeb\xc3\xe7\xfc\xc8\x905\
+\x06\xa2\xc8\x9e1/\xe6\x0b0j\xf1G\x0c\xe18\xd5\
+\x10\x8eo5DQ\xbac\xdac\xa2\xa3\xbb\xf4hi\
+\xb5G\xfbU\x0c\x8c\x04\x14%@P:\x0f\x8d0\x87\
+'\x19\xce{\x19\x0a\xf1H\xe67\xfb%\x1a#\x18\x1e\
+0^\xd8gl7,\xb5oX?)\xbd\x11u\xd2\
+\xa9\xefr\xa4\x99\x7f\xfd\xf3\xfds\xfds*\x09\xd94\
+R\xf9\xe7\xea\xe7\xcaL\x96nw\x83\xda\xd9\xfd\xa6(\
+\xb1\xa1\x16V\xcc\xa5\xd11\x86\x1c\xe0\x1c\xcdc\xc8\xeb\
+\xc6\xe8YC\xa1\xea-\x11F(\xf8\xdd\xc9\x86\xf0\xfa\
+\x1b\x86,j\xd6\xaff\x08\xc7\xff\x18r\x02\x05\xa6\x00\
+\x8ec\xbf\x9f!S\xa1\x87w\x19\xb2\x88\xa3\xff\x9e\x00\
+\xc0\x9f\x0d\xe1\x83\xb6\x8d\xc8\xd4\xf1o\x19\xc2\xf1iC\
+\x0e\xc4M\xdcg\x08\xdf{\x9c!\x1c?n\x08\x9f\xbb\
+F\xbff\xbffn\x13\xd7\x9dg(\x1c\xfe\x0b\xbbo\
+u\xe1\xf3\xfa\x83\x0c\xe1\xf5\xcf\x0c\xe1\xf3n1\x84\xe3\
+s\x86p\x9c\xc5\x10~\xff\x87\x00\x0b`\xacj(\x18\
+V\xf7\x1b\x8aL0b\x97\xd2\x0e\x99\xb2\xa0!\x1b\xdc\
+\xdd\xb1\x86p\xdc\xbe\xdb\xae\xdb\xae\x10}\x5c\xb6_\xc6\
+\x9e\xfb\xd1i\xa3SG\xa7\xe5}\xa9\x19%\xe6O\xbf\
+e\x80\xb5\xff\xfb\x90!;FP\xf2\x11\xe3s\xe6\xd4\
+U\xc35\xd65\xa1\xdb&\xc0\xdaY\xdeb\x08\xef;\
+\xce \x06\xc9\x0e\x85F\x944*\xa24\xe8\x01E\x22\
+\xcbv\xb9Us`\x89\xae\x02\xd1\x0dy\xb0\x10MC\
+DMv\x90\x97\xb8\x88Y\xe3]R\xc4\x98j\x7fe\
+(\xc4\x11\xc5\xb0C\xbc\xb2\xdb\xccPd|I,\xe0\
+hI\xeb\xc7\x1d\xf1\x0f\x8cmeL\xb3\xe0\xce\x9dd\
+\x0e\x9d\x15R\xc5\xb6\xc1V:\xb9Z\xb1\x8f\xa9\xd4\xcd\
+\xbbb\xb1/C\xa1\xb7\x12\xb2\xcbs\x89!\xed\xb8\x87\
+S\x0c*u8Y\xfb\xe1\xda\x99\xd9D\xe0k\x86\x84\
+\x07\x0e\x11LB9\xa2\xd1\x1a\xfa~.]\x89\xc4~\
+DH\xcf\xcd\x8e\xaa\x07\xfc\x8d\xb2\x1f\xae\xbf\xdf\xc6\x10\
+\x03&\xa9[\xc0+\xf2/nV\x06\x19\x86\xa8\xf6\x05\
+\xbaw\xf4\x0f\x1b\xc2\xe7\xbc\xd3 \xd5\xf5\xfb\xa3\xe3}\
+a@n\x0f*\xad\x052\xff0\xbe\xb0#\x10\x7f\xf5\
+@\x0c\x01\x17T\xeee\xcf\xc1$\x83\x11\xe5\xf3\x03\xc6\
+\xa5\xa8\xfb0\x81\xdc\xa1\x22\x81@\x8d;~\x91(\xf1\
+\x04\x0c\xc9\x9c\x13H\xf7v\xcb_\x15\xe3@\x19\xf3a\
+Ki\xaa\xa8[\x83/T\xca\xb4\xfby\xf3\xfeK\xc4\
+\x1c \xa1D\x02\x80\xfd\xbc\xd6.\xc3\xcf\xc3\x9e\xc5\x8f\
+b\xdf&\xa0 f\x97\xab\xfa\x93\xf1\xc7n\xad\xc5\xac\
+qxq\xf8a\xa0\x12\x90\x82zO\x02\x85y\x86\xc3\
+J\xa93%\x8eu\x9b<\x1c`\xfc7\xf6\xe7\x9a\xea\
+\x8e\x7f\x85\x1f\x88c\x5cS\xecI\x04U\x22\xf2\xfe\xfe\
+\xdc.0\xb5#\xe5\xfd\x04&\x18\x07\x1c\x7f\xed\x07>\
+\x0e5C\x80\xf3\xae\xcf\xbfv\xd0\x09(\xf09$\xb2\
+\xf8;\xae\x97q\xaf\xda\xd8\xa31\xe3~o\x1dx\xf0\
+\x00\xc0\xb3\xb1\x9a<\xfd\xe2\xae\x82\xaa\x8b#\x8a\xc3W\
+epQ\xa1\xf4\xcc>56\xcb\x18\xa6SYO\x0e\
+$\x06\x06\x99XJ\x0ep<k\xc7\x8a\xef\xe3\xef\xf8\
+<\xbe\x8fL-G~\x8e\xa3I\x06\xf2\xd1$\x02\x13\
+\xdc\xaa\x18\xb1\xf5\x8cm\xad\xbaX3\x0a\x08P0\x81\
+*QCw\x9c\x08\x00@\x05\xe25\x11\xbe1\xfd\xfd\
+L\x9a\x90sN?\x1eN\xd9\xc6\xa1\xa9\xd5\xe5Q\xf9\
+e\xbcppkQ\xbc\xb7\xe9\xf7\xa8\xcd\xbf]\x0b\xf7\
+2\x1a\x9f\xdc\xb7:-\x0cP\xcdy\x8d\x03H\x9fU\
+\xee#\x8elU\xea\xe1\xdd\x03\xd8\x88\xc8\xe4s\xbe\x04\
+\x88\xf8\x9e\xba-!\xf3\x82\xfb\xcc\xf52\x1f\x96\xf0\xee\
+\x06\xe9\xbe\xd6\xe2&\xfc\x1d\x9f\xc3<\xc5ag|p\
+\xcc\x974\xbcA\x89An\x83\x98\xbe\x7f~\xcdC\x1c\
+p\x9e\x03\x024\xb5\xda?\x0f\x22\xf7\x1dG\x9f\x8d\x9f\
+L\x05\x94,\x1c-\xe6\xadkG\xa8\xbb\x06\x14P\xfe\
+\x8e\xf1\x869@\xcd\xa2(\xba\xa8\xdb{`\x80\xfe\xa4\
+j[\xe7\x0bUE\xc9\x1av1\x145\xfb\xd4\x8a\xe9\
+\xf9\xf7~\xb4\xb4\xa5\xa3m\x22\xa2.2,\xc8P{\
+\x84\x9a\xebf\xa1\xe1y\x97\xca.\x99B\x1c<\x0f0\
+\x92I bN\x97\x01\xda\xe8\xc0\x10\xe0z\xd8`\x10\
+\x9d\xfaiR\xd7\xa7&y8\xcePP\x151\xa4\x14\
+P\xf1ZBT\x90\x9fO\xfd\xab\xbd\xdd\x9f\x0c\x08j\
+\x1b\xbd\x86\x9f\xc0\x0d*\xd9\xbfKb\x5c\xb4\x83\x8a\x19\
+\xe7\x7f\x17\x94\xfd\x07\x13\xf5\xd6k\xd1\xe9O\xafv]\
+\x18\x02\xae\xd6-\x0a\x5c\xf3\xa4\xa1\x98\xb7jg\xd3~\
+ \xa9\x9f7\x9d!\xbc>\xc8\x90K9\x82{\x1dk\
+}\xbd\x9d\xd7b\x89\xf1\x12k\xd4\xd7(\x1c@4\x15\
+X\xc7.L\x06\x155\xce.~\xb7\x8d\xda\xbb\xfd#\
+\x8d{\xff\xcd\xfe\xbc\xde\x1c\x92\x9f\x18\x8aH>\x99\x10\
+2(\xe7&\xa6\x88\x07F\x16k\x17m\x17-\xbaT\
+h\xdd\x0a^B\xf8W0:\xa0\xf8\xa2>\xac\xae\x02\
+\x04N|\x83<=\x22\xcf{Q\xd4\xa3\x83h}\xd8\
+\x8f0\x88\xa2\xffQ9\xb0\xa7\x17\xed\xded8C\xbd\
+lT\xb2\xde\xceb\xc85\xbdd\x10\x11\x8b\xf3}\x8f\
+\x8c\x85\x1c[\xcf\xa0[\x89F\xd8\x88\xdb\xdd\x03v\x0b\
+\xcbET\xe7\xd2|1j\xef\x89\x86d\x98\x0e7)\
+\xe05\x7f\x14\xc7\x8d\x0c\x91\xd8\x06\xf0\xa79@\xd5\x1c\
+f\x08\xef\xdb-\x22_\xbf\x02\x00\xfd\x0d\x86\xbc\xde\x8e\
+\xde3\xda|\xb4y\xb1\x9f\x92A\xe0\xfe\xaa\xe4\x06\x07\
+\x0e\xa6\x86\xb7\xe13\xe6\xc9?\x8b\xcc\x07\x9fCF\xcc\
+\x18\x0e+\x17\x8c\x00\x89s\xf5\xdf\xea/\xecM\x5cn\
+=\x83\xc4.7\xce\xeb\xb0\xd7\x8c\xf2\xfc\xea\xfey\xbb\
+6\x02\x11Z\x0f\xc9\xccY\xc5\xb9\xd5\x9c\x13\xd8\x1c\xbd\
+\xd9\x90\xf7\xf9\xd8\xce\xf0\xbd93\xea\x19$\x026t\
+\x1b\x103\xa2\xff\xa1\xa1h\xb7\xf7nC\x0e, \xba\
+\xd8\xdfi\xc8\x19\x14\x17SD\xdb\xe3\xc2t\xbd\xde\x9d\
+\x02\x03\x9a\xae\x15\x882\xaa\xd6\xbd\xff`\xbfUo\x1a\
+\x07\xbb&1\xd0\xee\xc7\x86p\xdc\xb9\xdb\xa5\xdb%j\
+i\xbc\xd2\x05\x03\xb0;\xa8;\xb8;\xb8\xd0\xda\xf8\x8a\
+!2WRm\xf7i\x86\xf0\xf3g\x93z\xfcDo\
+\x08\xcb\xd2\xe3\x86\xf0z?Cx\xbd\x83!3,\x9c\
+\x9a-\x8d\x85\xf6\xba\xf6\xfa\xf6\xfa\xa2\xc4\x91@\xd5\xe7\
+\x0c\xe1x\x81!w#\x18?\xc1\x10^/a\xc8\xa5\
+B\xf4\xcd\xee_\xeb\xff\xdb\xff7jP\xa4\xe7\x97\xf9\
+r\x85!\xfc~d}C%V\x18\x9e\x83\x89\xa9\x86\
+l8\x8fV3\x84\xf3\xfduwkg\x22\x87\xab\xb5\
+\xabZ[\xd2\xd1y\x01sg;\x22\x96n\xdc,\xd5\
+\xee?J\xf4\xeb\x85\x82RMM;\x0e6\xcf\xf9y\
+\x91\xd3\x94\xed\x94J#\x89n\x1704\xdag\x0d\xe1\
+\xfbO0\x84\xeb\xbf\xc5\xa0y\xf6\x98\x02B\xeb\xe7R\
+(\x0fx\x93\xd9\x16c\x89\xee(.r\xf9kC\x0e\
+dSZ\x82C\xeeL\x04D4\xb1\x07\xb0;9o\
+\xf6C\x12\x0c$\xa8\xeeU\x86\x92}[\xe2}\x88\xf0\
+y`\x17\x0d\x12\x1c<\x9d'\xfb\x94g@o2\x88\
+\xb2\x7ffQ\xe3M \xdc\xa4\xea\xce,\x98\x7f\x88\x01\
++#\x8f\x98\xe5\xd8W\xc7\xbe\x16\x19\x0a\xb3'\xc6T\
+\xd4l\x98\xb7(%\xa2\xbb\x8d(\xf4\xae\x95 \x8d\x81\
+X\xd2\xb0c\x0c\xbc\xed\xdb\xef[\xd8C\xea\x02\x84V\
+\xce\xd8\x89r\x80\xc7%>\xaa\xeeH\xce\x88\xbc)\x95\
+\xb4y\xa2\x02\x06\x1f\xfb:b\xba\x8c\x7fU\x13\xee\xed\
+\x98\xb5\x9eb\x07\xc0\xf8q\xbb\x90\xee'\x88\xda\xe1P\
+*\xb3\xee\xeb\xa1\x02+^b\x8d#\xa7}\xc5E\x22\
+\xf59\xcd\xef\x0c\x856\x06\x99z\xec_\x12\x9cu-\
+<G\xecW\xfc)\x12(b\x8a\x0e\xe7\x19\x0a\x8d4\
+\xb4\x00\xf8\x1e\xec\x061,\xbd\x8b\x00\x09\x11\x1cU\x18\
+\x98d\xfc\xc50\xf2y\x02\x95\x1e\x06b-\xd2\xc7\xf9\
+\xe3\xf8s]\xb5#\xcd\xb82\xeed\xfe\xf99\xf7\x15\
+\x7f\x8c\xd7\xbc\xafj\xe3\xee\x09\x91?)\xc3\x8e\x1d\xfb\
+\xb8\x1c\xf1\x97\xa5\x91\xc7\xdf\xc9\x8f\xf4\xc0E\xa5\xdd6\
+C\xa0\xa4\xee.\xc0\xf5\xf0\xfd|.~E\xdd}\x80\
+\xbf{\xb5\xea2W\x076\xd8\x8f\xb8\xef\x8cW\xc5\x80\
+\x1d\x8f\x94\x95\x1b\xf4\x01D\x08^\xf4\xba\xef\xe4\x80,\
+\xa4L\xc7\x1a\x85#\xc3\x80\xdb\xe37k1\xa1p\xf0\
+\x14\x81\xac\xd5\xd1c\xad\xd6|\x85cH\x86\x01\x87\x8d\
+\x0c0\x8e\x17*\xc23\x1b\x0aG\x96\x85\x1c\x0a1\x0e\
+\x15\x91\x1f.\x98\x1bW\xb7K \x00\xc0\x80\xd6}\x12\
+\x198\xfe\x11\x81\xab\x1f\xa8Z\xdc\xac\x0e\x18d&C\
+\xdd\xbf\x9e\xb6\x7f\xc9\xd1\xc4A\xa9T\xcf\xfd\xc8\xf8J\
+3\xc0_\xe3\xf0\xe6>\xf7\xe9\xf5\xb2\x1a\x17\x1c2\xd4\
+Q\xdf!Uz\x98\x03U\x0d\xbc;\x1c+U\x81\x02\
+(\xedD\x84\xf9;\xbe?\x9foz\x8d\xe1\x88cO\
+ gng\x08L\xaf\x09Q\x97\x80(\x10\xd4\xbc\xcd\
+\xdb\x14&\xc7\x9d\xef\xcfb_i\x1e\xf0}\xf5\xf7\xd6\
+\xed\x1ey\xff\x12\xdef1\x05\x08j&\x02\xe7K@\
+\x8a\x0d\x17G\x9f\x88]\x1d(b\x81\xc5\xb1\xa2\xdf9\
+\x9fO\xa4\x98\xf1\xe5>0\xaf\x19g\x18\x018\xe6\x88\
+{\xf1\xb9,$\xccc~N\xc0\x00&\x02\xf3\x10\x0a\
+;5\x5c,\xd8P\xefp\xf8\x11\xaba\xbelj(\
+Tm\x09<@iS\xad\x1c\x86\x86?\x87\x15\xb3\x80\
+\xccilWuh\xce\xc4\xbb\x01\xba\x86\xa1\x08(!\
+\xca\x83\x06\x88\xda\xe3 \x8a\x88\xd8\x9f\x8b\x90)\x22\xee\
+\x99\x00\xe6\x15\x11T\x02*\xcc\x03e\xea\xc8\xc4[%\
+`\xac\x05d\x83\xa3\xc6\x0eqJ\xf5\x1b\x8f\xaa\xf2\xb3\
+\xe5vj\xb4\x97\xf3H6]\x01p\xf8i\xcf(G\
+\x95\x80D\xf3EC\x9e\x17\xb4\xd5sC\xe8BC\xa6\
+\x16\xd3n\xab\xddP\xaa\xfc\x0b\xca\xb1F\x9cja\xb5\
+\x11|\xb9y\xb5y\xb5\xb8\xef\xa8\xe4J\xb5\x1e\x0a\xa2\
+\x97\x86h\xdd\x22\x83=\xcc/\xea\xacD\xde\xfa\xc3\x0d\
+\xe1mw\x1b\x0af\x04\x06\x95\x1c|j\x5c\x9d\x89\xf0\
+j:\x8f\xf6\x87\x86\xac\x02\x1f\x0c\xfb\xd5\xdb\xd5\x0b\xc7\
+\xf4\x13j\x17\xa5\x0c\xeb\xb0@\xc0[s\x7fu\xef\x82\
+@\xa0\xf4\xe4\x08\xbfon \x8b\xea\xde\xedg(\x1c\
+K\xa9\x88GF\xc6\x89\xb9_\xbak\xdf\xe8\xb1\xf5\x00\
+\x9c\xfea\xa8\xf7\xcb\x1a\xc2\xdf\xff\xd1\x90\x03ad\xf0\
+\xfd\xef\xb9Oj\xfb\x18\xd5\xb3\x7fY\xac\xd3\xb6+\x8d\
+\x17\xa5?G\x8f\x1dmb\x84\xb1\xed\xe2u\x91\xe1\x92\
+\x18\x0d\x94\xd8\xe0@\xa9\x14\x04\xf5yo\xbb\xa6\x0c.\
+\xda\x17\xce\x5c\xbaE\xe2R\x8dJi\x94\xf1\xf2\xf6R\
+\xf4\xc5\x96\x83J\x06\xd6\x9a\x05Z\xbb@\xafm\xd5:\
+\xd5\xdef\xc8\xf3>>5\xdb\x14\x81B\xc4\x9a>\x98\
+\x98<\xc3\x9fS\x06\xa4?\xbd?\xad\xb7\x9a\xdc\x97\x0c\
+E[P\xa9s7\x97\x192\xa5\xba\xfb\xbe\xa1\xf8~\
+\x95\x02\xf8~\x88\xfa\xb5\x98k\x04\xb8\xfa\x8f\x1a\xc2\xf1\
+1C\xf1\x5c\xa3\x86\x0e\x93\x09\xb1Q\xb5\xedd^\xf7\
+K\x18r\x0d~\x7f\x9f!w#p\x8d\x05\x95z\x10\
+\xc0\x81\xaa\xdbw}\xf8\x17_'\x07J\x01\xd6~m\
+Cv\xb8(\xed\x08\xf7=\xae\xb7\xfd/\x0c\xe1\xba\xf7\
+\xe8\xf6\xec\xf6\xcc\xe2x8\xfe\xdd.\xdd\xce\xdd\xce1\
+\x03\x1aE8\xbb\xf3\xbas;\xa3\xf4\x9f\x99\xb43b\
+\xbb\xbe\xcd\x82\x9dwS@ph&\xb62\x84\xe3\xe2\
+\x86p\xfc\xb3A]\x01\x82c\xd8\x9f\xd3\x9f\x1b\xbbh\
+\x5c>\x5c6\x5c&\x91\xd0\xadr\x0d{\xfb\x0bC\x0c\
+\xe4\x04\xe4R\x93\xd1V\x86p\xfc\xb6!\xfc\xbcM\x01\
+;\x1c'\x02\x9e\xc1:\x8c\xddK\xfa+\x93\x83\x0fE\
+9\xb6\xf3\xb3@\xc6%\xfd\xa5\xfd\xa5\x91\xf9\x10K\x05\
+`\x02L\x9ce\xc8\xfb\xcfh\x91\xd1\xa2\xa3\xb0\x1f\x8c\
+?n\xc8\x01\xd4(n\xb7\xaa\xd4\xfe\xef\xcbZ\x0e\xe6\
+\x0e\x9aCH\xfbC\x18\x5c\xb1k\x8bi\x95\xec\x94J\
+\x1f\x9c\xf1\x86\x9a\xbe\x0ce/I!3)\x83|\xf4\
+5C8\x8f\x9d\x0c\xe1\xf5'\x0db\x84\xad[\x94\x84\
+H\xb3\x82\xed\x8e}\xac]\xd7\x10~\x7f\x9d!\xbc\xde\
+8\x05\xc4\x10\xb7$\xf0\x14v\xb3\x0f\xd9~\x86\xd8$\
+\x81\x01J\x89\x9cI \xa6\x86\x97\xa0\x11p\xa5\xb4P\
+%f\xb1+\xc6\xbb\x0a{\x82\xfd\x18;\x10\xca8v\
+\x10\xfb\xa1\x1c\x14\x0fxk\x9d\xf5R\x08\x0b\xf8\xac\x91\
+\x19d&\x1dk\xe2\xb11\xd0~l\xe1\xa0(P\x0e\
+s\xc2K\x12/\x19\xbb(\x8a\xd5v\xc1\x0d\xeb\xb2\xfd\
+\x83v\x843\x8cD\xb5w\xa6\x03\xa5n;)\xb0\x22\
+M)(\xfb\xde=\xe9$i$\xa1\x05\xf3\x9b\xe6\xb6\
+\xe6\xb6(\x8e\x97\xdaSbo\xd2\xbd\x87D \xf6\x1d\
+\x8e\x17\xe3\xc1z\xb5\xbb\xec\x1c\x95\xf6\xb8\xfdA\xe0\x9b\
+\xeb\x86\xb9\xc8\xf5\xe2G`\xc7I\x8b\xc6\x19\x0507\
+\xcf6\x14\xf6\x0e\x81\x1c=\x1f\x88E\x13\x90\xa4\x0d\xae\
+\xfb7^3)\xbb\x94}\x95\x0c>\x0e7\x19wj\
+\xf0\xd1l!\xd0N\x1b<\xd6_\x1cf\x8e8\x9a\xd8\
+\x9d\xd8U\xb5\x83\x8b=J\xed<L\x09\xbe\x8f\xef\xc7\
+\xf1GK\x89v\x85\x9c'\x0et\xed\xaf\x11\x08`|\
+i\x8f\x87\x98;\xf7\x17\xbb\x1c;\xbdfx\xd7\xe3\x86\
+\xc3\xfc\xaa\xde?U\x01\x0c\x89O\xfa\xfc \xf0\xcf8\
+\xe3?2\x0f8O\x02\xdd\x8cK\xc5\x14\xf0\xbf\xd7x\
+z\x09\x0a\x9f_w\x17\xe3\xfbq\xf0\xf99G\xba\xf9\
+\xfc\xdbP\xcc\x8fZ\xec\xbc\x0a\x1c\x8c;\xd5\xa2n\xf3\
+f\xff\xcfR8Rd\xd8\xc9`\x92I\xad\x22H1\
+\x8f\xbd\xbc\x1c\xd2y\x8b\xcf\xe3\xf3\xeb\x1as2\xabP\
+\xc3y\x008\xe2X\xe28\xd6\x22{\xfc\xc3q\xc4\xe1\
+k\xb4\x223\x008\x98\xdc0\x227\xb4\x19D\x1d\xb4\
+z\xb0\x9c\xd2O_z\xce\x03\x07\xb1\xae9Q)\xc0\
+\x0c\xdd\x04\xea\xf3\xac\xd5#kM\x029\xf4\x1e0!\
+\xf0\x22\x91?\x7f?\xe3\x9bot:\xf2{\xc4\x92\xa8\
+}_W\x11c4\x03\xdeZ9\xe6\x9c_]\x82@\
+f\x9fq\xd8@\x91\xf5\xaa\xa6\xdf\x1d\xdd\x95Rf\xd6\
+\x17\xd8\xbat\x80@Q\x1d\x08\xc0q\xc1\xb2~\xdd'\
+nz0[\xfd\x9cZ\xc6y\x0dE\xbb?\xa8\xfa\x94\
+\x06,\xa4\xf3}\x97\xb4\x03\xb8ni\x0b8\x93`A\
+\xcd\xf3\x1chI\xf3\x8e\xf9\xcf\x86\xb9P\x15\x80a\xc3\
+`\x9c&c\x0ep$@\xc5\xf9c\xa0\xca\xc0\xf5q\
+Dk\x00Q.Q7\xfds\xe8\xcb\xacH\xb032\
+jQF\x9eW\x02*8\xa2_0\x14\x01\x0f\xa9U\
+\xa3\xf6\x8eC\xe1\x1a\x03\xca4\x90\x91\xa4\x0d\x10\x99|\
+\xa8\xfa~\xfdtm@\x0d\x97\x00\x06\xf7\x1bC\x84\xe7\
+L\x1b\xa1\x8b\xf8\x90\xa9\xa6m\x1d\xed\x8b\xf62\x84\xf7\
+\x1dl(\xd4\x8aq\xf01\x00\x95!p\xc7\x9e\xcc4\
+\x99y\xfa\xb3\xa3\xeeO\xe6\x9dvwZ\xa0\x9d\xba\xae\
+@\x03\xcc\x84\xe6\xb7\x86\x5cC\x8e\xa3C\xc6\x83\x0cP\
+\xb3vr\x08-\xdff\x197\xd7>`\xc3@E^\
+5\x89\xed\xfb\x0c\x05\xd5_L\x84vWC\xce\x144\
+g\x18r7\x10o\xbf\xf6\xebT\xeb>\x1cT\x89\xc2\
+A\xfdU\xfb#\xaf!D\xcbA\xf7yx\x7fj\xd3\
+4\xf1CCX\xbe\xben(\x9e/Q!c\xbb\xbd\
+G\x8a\xeb\x95\xa1\xde^g\xc8mA\x9b\xae\xe9\x9b>\
+jL\xa4@\xcdH\x81\xe0\x85\xd2\xfc\xf2vF\xcap\
+7{\x05\xec-*\xff=E\x80\x87\x8c\x96\xfd~\xaf\
+\x82\xe9\xa4}(j\x11\x04\x07\xd4\x08\xe8FA'\x93\
+\xe7\xed\xa0(}\x11c\x05\xc6\x05\xa2f\x04f\xfa\xfb\
+\xfb\x07\xfa\xfb\xa3\xaa\xf6\xda\xa6\xaa\x8dc0e\xaa!\
+\xbc\xff\x10C\x91\xe11\xf7t\xd1\xac\x0e\x1d\xcd\x8f\x9f\
+\xa9&\xf7\x84\xac\x15\x10\x9f\xca7I\x5c\xf2\xfd2\xd0\
+n*\x0c\xb0\x9de\xc8\x8a\xca\x8e&\x00\x81\x08\x0f\x08\
+\xa1\x95@\x00B%\x01\x94\x22\x10\xd8\x1c\xden\xc8\x99\
+\x09\x0f\xfc\xa9\xbdT\xff\xaa!\xfc|AC\xf8\xbc\xf5\
+\x0c\xf9\xfe\xb1\x0eD\x02\xed\xaf\x0aM\x0b\x9b\xef\xc7\x14\
+L\x1ai'\xf4?\xe8/\xef/\xcf\xa58&Mg\
+\xe2t\xc3\xe2\x86p\xdbo0\xc4\xfb\x9c\xa8\xc3h_\
+\x88i\xc6\xfcin4\x14\x9a&<\x9f2D=\xd0\
+$\x83\xba{\xc8\x10\xbe\xe7(C\xf8\xf9E\x86\xa2?\
+\xb7\xf6\x91aMCQ\xbb\xae\xb6h\x04V\xa0\x1a\xa3\
+a\xe15\xfc\x12a\xa3\x94\x00\xd15\xfa\x80\xf7\x1b\x89\
+Y\xa0\x80\x82\x1b\xde\xbfH\xc7\xfejCn#\xd6<\
+\x91J\x05\x10\xcfD\xd4\xad\xfb\xad!\x1c\xef\xe8n\xef\
+n\x8f\xdd0\xc2\xa3\x13~\xbf\x8aA\xea\xef/g*\
+u\x1c\xdfk\xe5\x18\xaf\x5ctqP\xb7\x05\x02\x16\x13\
+\x8bO,1\xb1D\xfe\x1e\xda\x91\xd2\xf6\xb2\x99\xb3\x99\
+\xdd\xda\x16\xb7\x1f6\x84\xe3\xeb\x86|_]\x5c\x0c\x0d\
+\x12\xd9I\xcd\x84!\x1c\xbfa\x88\x0c\x9fXR\x83\x06\
+O\x14\xc1\x9c7S\xcc\xdb\x9b\x0da9\xba\xcc\x103\
+\xbd\x91\x9aO\x17\x12g\x06\xc1p\xd3\xf7\xc6\x92\x19\xd3\
+\xbe8\xd1\x10\xe6\xd1~\x01\xfb\xc6.\x19\x01\xe1\xf8\x9c\
+A\xf7\xedS\xb9\xebJl\x17j\x01\x95/\x05|Q\
+\x86\xb6=\x07\x1b\x06l\xa0\xe3\xbb\x0b\xb1J9 0\
+\x1fF7\x05\x84\xfb7\xbe\xb1!\xefk\xd2\xba\xcb\x0e\
+$5\xd20\xd9`\x0cY7\x890\xcf\xda\x0b\x0d\xb9\
+\xff|s\xad\xa1\x10o\xa5\xc4T5\xf4\xccc_\xcf\
+U\x13\xcc}CD\xd0\x99{\xa2\xca\xc7\xf5{39\
+\x02\xaf\x14\xe2\xc0\xb4\xe9\x85j\xbe\xb4!\x97\xdcD1\
+\xe3\x0f\xc8!_\xf1\x0d\xf6c1\xd4<\x10\xa1u\x95\
+y\x1d\xc3@\x97\x15LL\xecY\xe3\x81\xec/\xbb\x7f\
+\xe6\x22\xf0\xad\xe7`X\xca\x90\x03\xe5\xfda\x86\xbc_\
+\x0f\xd7&q_\x17\x7f\xfe\xad\xc4\xe4\x08\xe4)\x83\xce\
+:\xe7\x22\xc2\xd8\x15\x88\xca\xe9\xba\x9b\x87\x93\xc6N\xb3\
+\xa9T\xf6\x95hp\x11\xe2:\xd1F\x22im\x05R\
+`\xa6!\x12I\x02\x84\xf5\x1d;\x10F\x22\xdd\x88\xc8\
+ \xf3\x1cA\xd1\xaf\xa8\xeb\xc3{\x0cE{\xc8\xf1\x14\
+8\xf3\xf3S ?\xb6\xd3]7\x07~}\x1fW\xe0\
+\x18\x11T\x0f S\x9bO[A2\xfa\x94tT*\
+\xf9\xee\xb8\xe2\xd7\xe0W\xf0\x8f\xd7\x9c?\xfe\x12\xcc\x94\
+\xdc\x95,e\xf0\xf9<\x1c_\x18Z\xb2\xb7\xd0\x90\xf2\
+\x84\x14L\x00\x18\x04<W\xb4\xeb\x83\xb91\x19s\x9b\
+\xf1\xaeJ\x02\x9cI\x81(a-nN\x04\x0f\xff\x92\
+\x04m\xdd\x9d\xad\xd2Bp\x06D-\xce\xc7u\xff\x8f\
+\x80\x80\x07\xd0\x09\x08\xd4\x81\x8e\xc9\x18\x02\x15S\xc0k\
+\xfd\x19\x97Z\x1b\xaf\xee\x02\xa0\x80\xc0x\xdc\xc6\xdfT\
+\xd4\xfe\x9a\xe1\xb6\xa22\xc2K\x16\xd4p\x1c\x14E\xe4\
+\xe8W\x1d\xf3\x09\xcb\x155<D\x1a\xc9\xd4\xe2\xd8\xf3\
+@\xb1P\xd4\x8e_]\xfb\x8f\xe8\x1a\x99\x1f2\xfdP\
+\xc1q$\x99\xc0\xa8\xe5\xbeE\x91\xc3w(\x80\x80#\
+\x84\xa3\xc3\xf7\xd75\x14\xdc`\x220\xd4\xce\xe0h\xd1\
+\x85\x00\xeaQ]s\x82\xa3\xfa\xba\xb7\x13\x9c\xbe\xad\xe0\
+X\xa5q \xea\x92G\xd8jJ\xf9kU\x84'\xdf\
+\xf0tdb0\x11\x9f6\x14mD\xf8\xfb\xc6K\x10\
+\xd2\xf7f\x87\xb4f$L_\xda0c7\x05\xba\x0c\
+\xa4\xe3\xdc\xae\x010}\xc9\xc6[\xe4\x80\xe3\xf0\x13X\
+\xe0\xef\xd8\xb8\xe64\x14\xf7\x05\x87\x99\x0d\x84\xef\xaf\xbb\
+\x11x\xd1\xa6\x8e\x95f\x83__.\x09\x98\xae\x0d^\
+\x8c@\xf7oP{SG\x08\xf9|\x0cO\x89\x86y\
+\x8d3\x81\x00\x02,\xf4]\x87rXw\xa7`\xfe\x13\
+H\xe3\xef9/\xe6\x11\x91x9\x1e\xdem\x80q\xa4\
+$\xa3b\x9c8\x85\x91\xd2\x12Q\x92\xfd{q\x80\x09\
+\x08\x10a\xc5\xe1`\x9e\xa0\xe2O-\x9c\xc6\xc3k)\
+e\x00\xbbh\x1d\x19s(]0\x1bP\xb1\xa6\x06L\
+\x0b<\x14j/ia\xdd\xe0\xba\xa1\xa0\x131\x85\x1a\
+\x8c\x03\x8b\xe3O\xed'\x8e!\x8e\x22\x0b\xab6B\x18\
+\x0c\xfc\x1c\xaa\xbe\x8b\x04a8(3\xeb\x99e2\xc4\
+\x12\xc1#\x83\xed\x8e\xbf\xd4\xe2\xcd\xbd\x8d\x0e.\x81:\
+\xbe\x87\x12\x07\x05\xdcx>\x87\xab\x0dy\x9c\x9cQ\xf0\
+\x8c\xa1`\x8c\xa8\xafq\xbbSr\xf4\xfa]\xfa\x9d\xfb\
+\x9dsf\x9dL\x80S\xc4\x7f\xad\xda\xc4\x0b\x0c\xb9V\
+\xb1\xf9k\xd2\x16h^Q\x7ff\xc6s>\x05j\x9e\
+Q T\xa2k\x13?N\xea\xeb\xdd\xf7\xba\xefv\xdf\
+\xcd\x14_\xd6a\xdaU5\xcf\x192\xb3\xa0\xd9\xccP\
+t-\x80JI\xdfpi(\xb4\x9f1d\x11'\xd6\
+=JY\x86\x13\x87\xafG\x8a<\xa2N\x0a\x80\xe1\xc8\
+#\x0e\xe9\xa2[\xea\x9a\x80\x8a\xbb3\x14\xe8\xb2q\x93\
+\xa10\xbc\xec\xaa\xe7\xc9\xeb\x9a\xd7\x82\xcb\xa1p\x0a\xf8\
+\x03\x16\x0a\x08\x7f\x7f\x9a!g.\xd0\xe8\xc0\x01\xf7\x9a\
+H\x89\x12\xc5\x80\xde\xb2\xa2\xce\xde\x5c\x94\x18X\xc6\xfb\
+\xfb\x85\x18\xa4T\xbb}\xfe\xff9\xcd\x9b\xfeo\x86\x9c\
+\xa9wf\x8c\x1c\xe6\xf6C\x86B\x84L\xa5 d\x9e\
+\x86]R;\xcc~\x01C\xec\xf2\x90\xc4\xbf$N\xd5\
+\x1eh\xc8T\xd2\xd1\x81\x86\xa2[\x07Z\x13\xb4\xb9\xa2\
+\xa6\x1aq'\xd9\x0b\xb4\xeb\xea_2\x14\x06\x0b\x99\x1e\
+\xb4e0\xc8\xe8+\xfe\xa1\x94Ac~S\xe3N\xb7\
+\x02\xdf\x07`\xd2p\xa46X\x0e&\x1a\x0d\xd3\xae5\
+\xe46w\x88qZ\xfe\xcf2\x80\xde\x96O\xed\x06Q\
+S\x1f\xd62d\xe6\x03\x22\x91h^\xe0\xa0\x90 p\
+1@ep\xbbC\x0d\x91\x92|@\x1f\x1c\x83~\xaa\
+\xda^J\x85>\x98\xb5I\x04naC\x11\xd0\x17S\
+\x04fQ\x7f\xba!\xf6\xf1\x8e\x86\xbd)&\x98fB\
+w\x95\xa1H\xc4Y\x80\xe2\x11iO<\x1cE\xf5N\
+3Q\xbdX\xea\xf2\xb9|>\xdd\xec\x86\x98QOm\
+%\x95I\x8e]:\x9e/2m\xba/\x94\x10\x0d\x0b\
+\xa5\xf3\x1cf3\x84\xcf\xfd|\xff\x85\xfe\x0b\xc5s\xa5\
+\xe7\xae\xfd\x8b!w\xc9\x18\x8e0\x14\xeb\xbc\xee\x1f\xcc\
+\x19\xa8\xef.\x96)\x07kt\xb6!\x8c\xc7n\x86\xb8\
+\x9e\xa4\x92%\xba\xd9\xa8\x96}bIC,\xb5\x8am\
+L\x83\x1b\xf07[G\xfb\xdd\xfb=L\xac\xb0{\xad\
+\xfbo\x17\x9e\xdf\xfe#\x06\xf5C\x0f\xe3\xd8\xbd`\x08\
+?\xff\x8c!\x1c\xc3]\x8a]\x0a\xacd\xe3T9Z\
+c\xca(/\x99\xc5CM\xa2\xceD\xeaF\x8f\x06L\
+\x8d\x1a+\x1b\x9b\xfa\xfc\xf0\x0b\x83\x98k?*\xec&\
+\x1c\x17\xd9\x11&ehb\x860\x5c\xbc\xa4\x8d\xc0\xab\
+\xd6+\xdf\xcf`\x92i\xff\x8a\xed\xf3\xfe\x99\x18B\x01\
+f\x97\x98E9\xd6\xed\xdb\xed\xd7\xed[\x94\xee\xa1Y\
+\xa4\xfd0j\x09l%\x15\xff\x87\xf2>\x15\xd6\x84}\
+cF\xfa\xed\xb1\xa82\xd7\x9e\x93i\x15\xb5\xdb\xf8\x19\
+\xfd%\x05\xc3E*\xfb^\xeag\x8c\xa6\x9b\x8aZ\xe7\
+m\x0c\xb1$, 2\xc6b\xe0\xb8no\x1d\xdd\xa3\
+\xbf';\xd8\x1c\xb0\xe6zC8>\xde<f\xe2\x7f\
+\x91\x01\xf5\x83\xdc>\xcfEp\xf7L\xb5\xefa\xd6\xcc\
+>\xcc^\xac?\xb4\x0bElU\x81`o'\x87}\
+\xa4@\x12\xa5;^b!\xbb\xc4\xed\xb9\x17\xb5>\xd1\
+V\x96\xae>\x94\x18\xe2\xb8\x8b\x1f\x0ffT\x00\x00 \
+\x00IDAT\x89\xe6\x8e6]\x08\xc8\xf8#\x02\x5c\
+\x89F\xa3\xd1\xe2\x8e\xa8\xb5\x93\xbd.\x07|\x9c\x91\xa2\
+\xc0A\xec\xca\xf5\x9f\x18\xc0H\x99r\x89\x01\x12\xf8\xf6\
+\x12\xa4+\x0d\x85C\xc9\xe7\x10\xf8\xc4n\xc6\x0ef\xbe\
+r^$\xb4\xb0\xef\xf9y\x9dX\xac\x1d\xe37\xb9\xe8\
+w\xb2\xd3\xf9\xfbJ\xc4\xd9\xfd\x16\xeck\x1cX\xfc\x96\
+\x8a)\xe0\xaf9r]\x1ck\x0a\xfcd\xe2~u\xc2\
+\x15-\xb7qCQ\xc2A\x22\xae\xd6\x9a\xc3/\x9a%\
+\xca\x9ag?\x04\xfb\x9c\xd2r\x18\x078\xfe\xecs\x5c\
+'\xe7W\x07D\x103\xac3\xfeu\xbb\xfb\x9a\xe1\xcb\
+u\xd7T\xff\xbad\xa0.\x81 \x10\xc0\xeb\x8aA0\
+\x1e7\xe2\x8f(\x82\xb5D~\xc0\x22\x11y\xe9\xa26\
+\x1d*x\x9d\x99\x7fKt\xf9\xf2D\xc3\xe1\xe7X?\
+\x10\xf5\x11\xc7\x90\x89G\x06zfW\xa9O7\x8a\x09\
+\x86CC\xc4\x0dG\x8a\xf7\xe1h\x93\x09&\x80\xc1k\
+\x1c]\xce\xaf\x9e\xe8\xb5\xca=\xed{\xc84c\xb0\xd5\
+\xe7Yg\xae\x87\x8abR\xb7\xa1 \x22\xf6\xb4n|\
+-J\x88\x8a\xbf&\x1a\xd4R\x0f\x140\xd1)\x91\xa0\
+m\xdd\xfa\xa2LM\xabj@r\xc9\xc2\xf4\x94\x10\x8e\
+eW\x87\x7f\xbf\x818#\xff\xea\x05\xa1\xee\x16@\xc0\
+\x03\xcb\x85\xf73>\x99i\x92\xc6\x8d\xd7\xf98}\xd7\
+\x06\xee\xcflZhT\xdb\xe5\x0b\xea\x8b\xa9\x9d\x8b;\
+ <\x88\x8c\x0f\x7f\xcf\xf9\xb1\xe0\xf0\xfd\x8b%\xc6\x88\
+\xb7M$\xb0\xc5}%\xf2O\x00h;CAAb\
+\xc3BE\x15\xcd\x01\xfa\xdd\xb2\xd0\xf2~\x02&L\x0f\
+\xd5Fy\x0d\x18\x8e9\x141Du\x10\x07\xa4\xe6\x8f\
+\x0cD\xad\xfa\xca\xf9B\xe9\x97\xc3\xef\xa28Z\xb0q\
+\xb4]U\x9e\xb6wdJ77\x14\x0e=\x948\x18\
+\x1el\xb0\x12Mq\x86\x09%\x0c\xfc\x1d\xcf7\x99\x12\
+\x02y\x88\xea\xc8\xd0\xf1Z=\x98\x14\xd4x/\xad\x92\
+\x15\xd6\x1b\xee\x0bbyd\xf2+*8\x11\xfa\xd8\xe4\
+\xed\xf3\xe1\xf5\xad\xcd-\xcd\xadE\x06^\x0b\xa2\x8ba\
+\xf1<\x8az\xec\x99\x19\xda\xc4\xa1\xf2\xae\x9aV\x8fP\
+S\xd2\xc1\xbc\xa7v\x0e\x95a\xd5H\xfb\xfd'\x93\xa6\
+\xe7\xb9\xbd\xdd\x90\x1d\x1a\xefs\xaf\x9aR\xd3\xd87\x95\
+}\x0c\x80\xe6\xf7\x86B<\xa9\xeefA\x9bP\xdaS\
+\xe1\xd0\x89\xc9\x80\xf8\x11]\x08\x86E\x92\xe1\x1f\xbc\xc8\
+\xb6kcMq7a%\x01G\x1b\x0a-\x82\xef\x1b\
+\x0aq\x1e\x9e3=\xa7^\x93\x88J\xb1jpY7\
+\x9b>9\xaa^\xfb\x88\xa8\xa4Q\xfe\x17\xc8\x86w\xf3\
+\xf5\xe6D\x13=4\xe2f\xa4n\xee\x12\x1b\x04z\x06\
+m\xa0X\x9f\x00\x015\xb3_\x92Z\xf3\xb7\x93\xd8\x12\
+\x94_jG\xbd\xfd\x94\xb4(b\xa6\xf8\xe2\xcc<\xe8\
+\xec\xb2'\xb2\xb8!\xa2mS\xd61\x14\x0c\x0c\x02\xd2\
+\x88W*\xf3\x8e\x03\x11\xcd\xaf\x1b\xd4\xbdb-1\x1c\
+.\xc8\xf7\x9d\xb6\x95\xd1\x00x6\xab\xbe\xf7\x7f2\x84\
+\xef\xf9l\xaa\xc1\xc61%\xb0\x14fy\x0aL\xb1\x8e\
+\xd1\xb6\xef\xa7\xe9\xfe\x0e;J\xacn\xd9\xd4/\x1c\x86\
+\x06\x86a\xbb\xb4!k\x07\xb8\x08\xa2\xda\xd7\xf9>g\
+\x0c\x98o\xe89]\xbe0(X\x8f\xcd,\xbd\xbb\xd0\
+\xec\xa84<\xfa\xbb\x0d\x05#\x09\x0a\xbc\x028\xfd\xae\
+\x86\xa2\x0b\xc15\xcd\xd5&\xde\xe85\xb5\xacCz\xee\
+X\x9f\xa8\xb9G\xb5\x7f\xe2\x0aC\xb1\x1fR\xb2\xa4\xfb\
+N\xa0\x9eL\xb7\xd7\xb0*\xe0\xec\x8e\x0e\x0e>\xea\xed\
+\xea\xb7N;;j\x81\xfb\xbd\xc4\x14xHL\x81\xab\
+\xfbk\xfap\x1f\xbb\xdbS\xe6\xbe\xff\x83!\xdf\xc7\xfe\
+\xe5\x14\x18\x19&$*w\xb4\x18\x0a\xf3\xab\xef\xfb\xd7\
+\x92\xb8\xa7wK\xf8\xa3!3Y\xa2#i]\x0a\xc2\
+\xb7\xf4\x96\xe9\xbf\xd4\x10^\x9fo\x08\xd7\xff\xf3\x800\
+\x9e\xd3\x8e\x99v\xec\xb4\xb0\xaeO,0\xb1\xe0\xc4\x82\
+q\xdb\x8b\xcc\x01\x18$\x04r\xfbk\x0d\xe1\xf7\xbf7\
+H4\xf3\xaa\xecPxw\x12\xa3\x90\x1bC\xea\x9fI\
+Dt\xf8\x8f!S\xcaG\xdb\x1b\xc2\xe7]e\x08\xf3\
+\xe8>C~_\xbb\x82\xa1\xe8\xbap\xa1!\x8b\xc0:\
+3\x0f1T1\xd1\xda\xe7\x0ca\x9a\x9db\x08\xaf\xb7\
+j?\xd0~ f\xe2o\x1e\xdd\x1cE\x08\xa3Xb\
+\xbf\x89!S\xa2\xbb\x7f\x18b\x7f\xfb\xa7,p\x16\xc5\
+\x1e\xc3|\x1c})\xc0D'7\x0e\xd8$\x8b\x11\x22\
+\x96\x17K\x13\xc6cI\xd5\x86\xadQ\xf1\x9f\x0e\xf8\xbb\
+\x02vg\xcbA\xdb3\xf6\xa3\xff\x7f\x03mc\x1f\x93\
+\x9d2\xa5\xd8\xc7\xd9\x87)\xa1D\xdc\x92\xfd\x04\xfb\x19\
+\xfbSv\xac\x85cc@\x96\xb6\xac\x12\x0d\x1d^7\
+d\x11Y\x98+8\x8e\xaeE\x22\xb5T\x0f\x5c\xcdn\
+\xd5\xf5\xe1\xf8MC\x0e\x5c\xb7\xeb\xa5R\x84\xe1\xfc\xe1\
+\x82\xa8>/\xc6R\x0c\xc8\x9e\x98K9\xda\x87\x0c\x85\
+\xe6\x05\xcc!e\x8c\xbd\xfd\x1c\x8e\xb8\x1c\xed\xf6o\x86\
+\x5c\xbaB\xd7\x0ewh\xcc\x0a01\xe2\xbd\x87}\xcc\
+\x8e\x89m!w\xcb\x99\x7f\x17k%\xe1\x80\xb8\xe0v\
+\xa9\x94gl\x0b\xed\xaf{K\xd3\xe35C\xd1\xb6\x95\
+\x00z\xc5$sf\x07\x81<\xd5\xb6C\x91\xf6\xae%\
+\xb2\x83\xbc\x0d\x22\xaa\xf4\xb5\xfd\x8a\x9dK\x82\x07\x11f\
+\xecf(\xfc\x95\xb8\xaa\xefw0[`zp\xbd*\
+\x1d\xa0\xd4\x93\xf6\x84a\xd5Kv\xe6\x1c)A\x04E\
+\x1f\xfb4\xce\xe3\x1f\x14\xfb@e\x7f\xfb}\x80\x12_\
+\x89\xed\xb9C\x88_U;\xaeu-y\xedX\x93\xb8\
+\xaa\x13Y\xb56Z\x95H\x9b\xa1T\x16?\x8a@\x02\
+~\xd7d~U\xad\xc5\x86}\x8f\xff\xc8s\x99\xbb\xa3\
+\xa1\xed5\xbdf\x18\xdf7G\xd5N}\x8e\xd8\xc7,\
+\xbd.\x19\xca\x5c\x1f\x0c\x10\xd9\x87^:1S\xd5M\
+m\xb2\xc4e\x1d\x18\xe1>\xd4\x01\x03\x02\x1e\x04\x02\xf0\
+\xcb*\x06\x80?\x0fu\xdbC\xdeW358\xca~\
+\x1b\x8f\xc3\xdaj`\xe6\xac(\xe8\xf3\x16\x03\xc0\x05\xf2\
+\x0f\x07\xb1\xce\x5cc\x18\xd6\xea\xfa\xf5D\xe8+\xd1\xbc\
+\x89I\x1c\xd6\xfa\x82\xea\xc8G\xdd.\xefe}?\x03\
+\x8b\xe1B\x00\x83\xc0\x01\x996(\xed\x944T\x8e\x95\
+gRi\xf3\x86\xa1\xcd\xc4\xc7a\xa1o:\x99@\x16\
+\xfe\xb9*\xd1;&v\xa6d\xa4q\x81r\xc2\xef=\
+\xd2\xa6\xcc\xf2\xecr\xecs\x06>\xdd\xa7\xc9\xda\x1d2\
+\x11\xebZ\x97\xbe\xba\x0f\xfc\x9c\x09\x9b\xdb\x1a\xa6\xdfO\
+8\xb3a\xfa\xfb\x5cSQ\xea~\x9dD\xbc\x98p\xdc\
+\xc7<_\xd2\xb1\x16\xb3x\xa9*\xa9\xa8\x17 \xe6W\
+\xad\x92\xc9\x91\x08\x1a\x86\xe9m\x86B\x94\x90\x00\xd6\x22\
+r(\xd9\xa8T\x934\xdc\x9c\xc4q\x9a\xb5\xc4\xf4`\
+\xe1@\xed\x9e\xf1g\x9c\xea6\x228D\xa2f!\xce\
+\xe6\x94yQ\xc6\x9d\x0a\x85\xe8\x956nog\xb8\xaa\
+\xa1\x10Q\xf9\xb2\xa1\x88pk~yF\x89\x12\x11~\
+\xcf<f\x9e\xb1\x10\x90\xd9\x16E\xdb\xdf\x87F\x06\xf3\
+\x1aQOQ\xb1\xbdv\x99Z79\xfa\xcd\xe7\x0d\x05\
+\x85\x1e5\x7f(\xd2\xca\xf4\x92\xe1\xf5\x85\x0a\x03_\x99\
+r\xaf\x19dA\x86Y@;3(\xdf\x18\x90P\xb9\
+)\x95\xa0\xd6\x8dL\x9b\x0c \x1c\xd2\xe6\xf1\x80'\xf2\
+\xc6\xec]0\x94\xa1\xf1\xe7X\x14B\xc4\xbd\xb8>\xa7\
+D\x1e`\x08\xaf\xbf\xa66I\xcc;6VQ\xfa\xfb\
+'\x0dy\x9e6G\x18\x8a\x8c-\xa2\x82\xdc\x179>\
+8\xbe\xde\x8e\x91\xcc(\x86\x05%\x03d\xfa\xff\xa8@\
+\x84\xc6\xa7\xb9\xc2Pd\x1e\xf4<\xf4\x8b\x192\xf53\
+\xb87\x91\x0a\xda\xafa\xc8j\xe2n\xf0bX0\x9f\
+\xd1`\xa0+\x01\x19\x15j7\xef2\xe4\xccLs\x81\
+\xa1\xc8\x8c_\x9d\x1c\xbdae\xd5\xb6NK\x86.\x14\
+bg\x18\xd0\x17{\xbe\xd8/%Q\xff\xfeVdh\
+\x8c\x02\xb9^\xcc\xd4nb\x99\xda\xd8\xdf\xfa\x9bE\x80\
+D\x14p\x0clg\x16(c\xd5\xcdo\xc8\x9a\x03\xce\
+\xd4\x10\x83\x05\xaa1L\x90\xe6nC\xd1nO\x81\x11\
+7`L\x12\xeb\xdaH1\x0dPI\x841d\xee\x0c\
+\xf8]a\x90\x99!\xf8\x9b\xec G\xb3\xc42x\xb7\
+\x18\xa2\x8a\xfaiQE]b\x86\xb1\x97\xc5g\x0a\xd5\
+\xf4\x17S)Z\xbf\xbf\xa1PU>)\xad3\xb1\xad\
+\xe0\x069S>\x1a7D\xc7;R\xea=\x90\xa6\xda\
+^2\x5c^\xba\x22FA\xac4>\x5cL\x8a\xaf\xe5\
+\x00\x12%>\xfd\xdb\x0d\x0a\x10n\x165\x1d\x02\xb2\xba\
+\xbe)<\x98\xc6\x83\x97\xde|9\xc2\xdb\xe01~P\
+g\xfb\xed\x0c\xd9\x80\xc6\xb0\xa2T\xc9k\xa5\x95)\xee\
+F\x86p|\xd2P\xacS\xdcw\x05\x16\xda\xd7\x0ca\
+\x1c~i\x08\xaf{C\xae\xcdf\x7f\xa7\xc4\xcf\x1d*\
+eh\x09\x10t\xa7\xcb\x91]\xd6\x10\xce\xe7_\x86,\
+\xc2\xe7\xa2\x8a0\x04\xb6\x15E\x7f#Cv\xec\x19\x07\
+\x7f\xae>\x90\x02\xaa\xc3\xf7\xd4\x07]bk\x88\xfeE\
+G?<?\xdd\xe2\x86p| \xe0\xfe\xf0\xf3S\x03\
+\xac\xad\xe1E\x01\x17\xe6\xb6\x87\xdd'\x0d\xc1\x1c:c\
+\xda\x99\xd3\xce\xcc\xeb8\xcf\xa3\xb7E\xdc\xad\xdb\xb5\xdb\
+Mm_\xb7\xcf\x81\xc4\xe1\x09C.-\x22#M\xcd\
+?Z\x11t}\x18\x9d9:kd\xb5\xfb\x9d\xa8\xb5\
+*\xd9\x80\xc2\xdc\xbd\xcd\x10\x8eK\x1b\xc2\xdf\xbd\xd9\xa0\
+\xe7\xf5\xfc\x18x\x8d\xa2\x83\x1c\xdbs\x0dY\xbbf\xfc\
+\x05C\xf8\xf9\xa5\xed%\xed%\xe1\xfb\xd6\x1e\xad3Z\
+'\x96\xe8\xdco%:\x91x\x15\x1c\x82n\x16C\xbe\
+\xfe\xfe\xabF\xbe\x8f\x01\x8a\xa8E\xd0~\xae=\xa2=\
+B%\x14\xaf\xaa\xa6\xfdw\x85\xb8\xa8\xb4:hS\xea\
+5\xef\x88\xe6\x91\xe1\xc7\x01\xc1\xfe\xb8$\x22\x06\xd6\xed\
+\xba\xd1p\x89L\x9a-e\x0f<\x5cd\xcc\xa5E\xe0\
+ZX\x04\xa8\x15\xe8\x1dN5\x14\xcc\x1e9\xb6\xed]\
+\x86X\xb2\x92\x1ce\xfa\xd3\xcb\x115I\xd6\x98\x81\xa7\
+}\x8a\x02\xfe\xfd\xef\x0c\xd9\xcer1\x5c\xec(\xe3\x8f\
+\x9d\x9b\xc5\x0c\xc7>\xab\xd2\x02\x12H$\x02\xb1\x0fQ\
+\x87\xa7\x86\x1b\xc6\xdf\xf6\x11\xdef\xb4?\xd6P\x88N\
+\x1e\x17\x1c\xec\xe3r \xc3\xf7;\xd9K\xc3\xadr\x84\
+\xb1\xdb\xb0\xf7\xf8|izx\xc9\xc2:i\x9c\xdb\xed\
+\xdam\xdbm\x8b\xdf#f*\xa6\x0f\xe3\xd3\xfc\xc7P\
+\xd8m*ap\xedn\x05\x02\xba\xad\x0dE{O\xba\
+\x05\x90Q\xaf\xed\xbc\x9a\xb9\x8c_\xa0\xc4\x87\x8bPR\
+\xc2\xa8u\xd9Ed%\xea\xeb\x89SJ\xd6\xaeI%\
+\x22.b\x8c\xf8\xb2\xd4\xff\x87O\x1br\xc9\x94wS\
+R \x09;\xd3\x03\x0e\x88<^\x96\xb4?\xdc\x9eR\
+\xe0\xd73\xe2\x9c'\xf7\x19*>\xd7[\x8b\xfa\xd1\x15\
+\xaej\xd37\x83\x88z\xed\xe8\xe3\xb7\x10\x10c\xdcH\
+\x90\xe0\x0f`\xef\xc0\x04\xa54\x83\xd7UI.\x8cR\
+g\x82\xe0\x87\xbc\xe25\xfd\xe9\xfe\xd5\x01\x80\x1c\x08H\
+~\xda<\x91\xdb\x9c\x13\xcd\xd8\xff\xb5\x03]1\x9a\xfd\
+s\xb8\xceY+\x865\xf3\x04\xff\x8cq\xa9K+\xea\
+\x00\x01\xc7\xc9\xfc\xdf\xc9\x18\x00\x9310\xaa@\xc3\xb8\
+\xf7IU\xed\xbe;\x06D ^O\x14\xa4\xe8N\x8e\
+\xf2\x85P\x1b\xe7j\xf1s\xfa\x00N\xdf>\x8e\x9f3\
+1\xb8\xb18\x02u)@U\xc3\xec\xd4v\xce\x0bC\
+\x9d\x09\xc7D\xa2/1\xef\xdfR5euD\x0b\x8a\
+4\x99^\xa8\xd1LD\x1cp\xce\x8f\x1bS\xab\xd6\xd3\
+\xa6\x8e\x89\x98'd\x8a8\xd5j\xf4j\xbf\xe7\x19P\
+\xae\x83\x8c\xe9\x02^\x9b>]\xad|\xc3\x03\xb3\xde\x0c\
+\xcc\x894\xae\xf5\x04\xab#QuD*3\x14\xa6\xcf\
+\xec\xd7Z\x04\xbc\xef\xbf\x95\x98\xc6dG\xc6\x89\xf3\xa9\
+\xd56+\x86\x81S\x8b\xb9\xafD\xec\x18\x17\xa8\xe8R\
+\xa3\xf6~\xf0\x9c7\xf7U\xf3\xc5\xe7\xa3DZ\x9c\x8a\
+\x8a*\xfeO\xa4\x12O\xfb\xb7\xe7\xb4\xe0\xdc%*\xdc\
+\xe3r\xe0t\xc4\x10\x88\x86\xd2\x0e\x05\xc5\xb1n\xd3\x81\
+\xe3\x89a\xc0uP\x9b\xa3\xcc\x92\xd7\x8cQ\xcb\xa7\xcc\
+\xad\xab\x9b+C\xe8\x1b#mc\xa0\x10\x22\xea\xc7\xc2\
+\x8a\xa3\x0f\xd5\x161A\xbd\xf6\xd2\x01\xdak\xc9\x00\xf5\
+\x00\x84(\xda>\x9fY\x90\x98_0]\xa0\xaa\xd3\xef\
+\x98\x8c3\xd4{>\x8fy\x87\xc3GM2\x99\x7f9\
+\xd6~\x7f\xa0N\xd1\xd6\x0fJ\x22\x99~\xae\x8f\x9a~\
+4:p\x90\xa0\x06\xd3oW\x99\x03/\x81\xd9X\x9a\
+\x00\x88\xcc(\xd3\xea\xb5sP)\xe9\x1f\xad\xda~\xcf\
+\xa0\xa8-\x1c\x94r\x0c((\xc4\x9eQW[\x1fo\
+\xaf\xf7yC\xc1`\x10\xb3\x81\x0d\x93\x9aL\x1ci\xab\
+\x98\xb6\x9ai\x98\x09\x04\x18\xda\xab\x0cE D\x99w\
+2>\x8c\xbfo\xe0D\xbaE\x99\xa7\x86\xd7\xa9\xabs\
+\x19r-#j\xe0c\xfb\xc7FN\xb9\xc6\x8e\xd2-\
+\xd6C2\xc4hDP\xa2A \x88\xc0\x1d\x99\x17(\
+\x91\xac\xb3r\xf0\xbd\xbf\xed\xf5IE\xdakBUJ\
+\xd2|Jm\xf7\xb4Na\xc0\x0e\xf7\x0e\xf7Eq\xae\
+\x87e\x88PBD)\x82\x1c>JsplF+\
+\x05\xac\x5ct\x17`\x9e)\xf0F\x1b7\xbe\xdf\xdb\xf6\
+Y\xa0\xe2\x1a9\xd4\x96\xe9\xf9J\x84\xcf\x0b\x1c\x1c\xda\
+\x22F\x0a\xeb\xe5Y\xfd;J\xe3=\x90\x0d<\xc6\xcb\
+\xc5\xd5\xee\x0c\xb8\xab\xc8\xb8\x8bQ\x04\xc5\xb6YE\x81\
+?\xce\x93\xc0\x0d\x01\xb3A\xcb7\x0e\xcc\xa5\x86\x98\xf9\
+\x0f\x08\xd7\xfd\x8c\xa1\x08\xccl\x9d\x0c\xd1\xe1\x00C~\
+\xfe\xa8\xb5wm\x0a\xd6'cr\xfc\xbb0\x1cq\xd4\
+\x8db\xbdsQ\x0a!\xf1K\xc4\xb0\xf8\x1cJ\x8a\xda\
+\xb9\x0cY\xe5\xbc\xd959\xf0\xfdY\x86\xa2\xd4\x06\xc6\
+\x8e\xdaU\xf6'$\x06Fsa\xca\xe8uk\x19\x8a\
+6`\xec\x9fWD8\x03\x88\xb6\xa4\xa3}\x0cEm\
+\xac\xd6\x07~N\x00\xc0\x19\x12\xdao\xc9\xf4\xd3\xe6\xb2\
+\xdb6\xb5\xbb\xeb~j\x08\xe7\xb5\x9b!\xd7\xda\x13\xd0\
+\xa0\xbd\x1d\xa5\x10\xae%p\xb3!\xff\xdc\xd5\xb5\xc9\xf0\
+\xd0\xdf\xdb\x9e_+U\xf8\xb1!\x1c\xef5\x84\xe3\xf7\
+\x0c*\x118-2t\x92&\xc0\x8a\x86p\x1c7\x14\
+\xf6\x83\xe6\xbfg\xfa\xd5\x8d\x81>\xe9\xce 8\xbe?\
+\xce\x1c4_\xc7)\x9d\xd4:\xe4%mjc\xdc.\
+d\x08\xc7\xcb\x0c\xb1\xdbJ@\x0e|\xb4\x97\x1b\xc2\xe7\
+n\xd0o\xd8\x87\xfd\xa7\x9d\xb9\x9d\xa9\x9d)R\xa9?\
+1X{\xd0\xef\x1b\x22\xb3!\x8d\x93\xa8\xcb\xcd\x97\x0c\
+\x99\x12\xdev\x0a\xd0,\xd9.\xd5.\x15\x1d\xe1\xc4x\
+\xa3T\xf7\xff\xe9\xfd\x1b\xa6}\xb0]\xceP\xa8\x8b\xc3\
+\xe8\x82R.\xd1\xe8f\xa3D\xe1\xef\x8e\x17\x83\xe0\x07\
+\xa6V\xa1\xda\xdb\xbf\x8a\xb9\xf0\xdf\xdc\xfe1je\xdc\
+\xabn\x05W\xe5L9]2`\x88\xc1\x94\x88O\xd5\
+\x81\xaa\xf9\xfeN.\xf9q\xfb\x07\xc6\x14\xed\xe0(\x05\
+Cs\xe5\x22C\xd6\xa4\xf0\xc0*\x99f\x05\x8c\xda\xbd\
+\xdb}\xda}\xe2:\x1c\x1d5\xe6A$\xa4\x9f\x9b_\
+{\x80\xd2x\x82\xc1^\xea>g(4i\x08\x98\xeb\
+\xfe\x1b\xbf\xcc\x18f\xc1&K\xaa\xff;\xa7\x12\x22\x18\
+Nv\x17\xed>z\xc9\x9cJ\xa9\x9a\xa3\x0cEm\xba\
+i\xf1\xec\x98EJ\x9d\xaa\x7f\xc2\xf0\xb5\x18\xb0 \xc1\
+\x00\x83\x00\xa6\xe3z\xd2\xe4!A\x80\x16\x8c\x02\xe0\xe1\
+)K\xe3\xbe\xba\x98\x8ctg\xd1>\x8bC\x0cC\xc0\
+\x03\x14*}r&\x22\xa5\x81\x12\xf3s\xca>\x09\x0a\
+J\xeb\x08< \x9eK`\x8b\xf5\x1f\x91a\xba%`\
+g\xd2]A\xa2\xad\xce\x18\x86q){\xd2\x03\x0a\xd8\
+K$n\x08\x80b\xe7h\xfePZ\xe1\xfe\x04v\x1a\
+\xccC\xecN>\x8f\xc4\x1d\xddH\xb4\xffc\x97\xf9\xf8\
+\xe3\xe8\xe3\x97\xe1\xb8\xd6]\xae\xf8\xfcZ\xe4\x8e#\xf6\
+\x1d~\x1d~\x04\xfe\x10v\x04\x81\x82\xaa\x16\xbeY\xd4\
+Ph\x01\xd4\x09\xbe*\xb1\xea\xcc\x09\xfc1\xce\xbb\xd6\
+\x98\xab\xff\xf1\xf3\xc9\xda\xcc\x93\xd9\x97\x18\xb0\xdf/\xfc\
+\x11\xfc\xc1\xba\x14\xbav\xfck\x06C\xed\x97\xd5\x89\xda\
+\xfa|s\xe25\xf9S\xf5\xf1\xb5I\x12\xb1\xf8\xb7u\
+\x80\x80\xd7\x8c+\xf7[~\xcc\xb8G\x06,\xceyG\
+V\x19\x8d\x86\xc9\xf6\x05\xc5\x1f\xc7@\xa2\x1e\xeeP\xf2\
+ \xd7\x91\x9d:BA[\x11\x1c?2\xefd(q\
+8\x09\x18T\x8e\xbd_@]\xcb\xc0\x80d&\xc0\x1b\
+\x8b:\xd4Tw~\x8f\xa6\x00\x19F(\xd5\x88\x99M\
+\x16\xa0\x98mz\x0a\x89S\xf0\x11-\x99L\xfc\x0e\xc3\
+\x0f*)\x9a\x095U\x85\xef\xafksr\xcd\xce<\
+\xd3E\xaa&{ h\x8fC\xc6m-9\xd25\x05\
+\xa5\xee\xa7\x89\xa3\x9bkSR\x8d\xb6jW\x82\x9b\x95\
+j\xab_\xd2\xfc\xa9EC\x18'&4\x0b\x04\x91^\
+\x16F(\xe4\x88Hr\xbd\x5c?\x81\xa0\xdb\xe5x\xa1\
+\xa6\xcc\xf7\x91\xc1\xa6\xaf\xaf\x02Z\x9e\xf1\xc2`\x14\x85\
+\x11j<T`\x0f\xd0pTM\xb4\xdf\x07DCt\
+^\xae\xe2\x8a\x83\x0c\xf5\x8f\x00\x05L\x12\xda)\x8a\xf2\
+\xe9\x11u\xee\x0b\xf3\x9b\xfb\xcex\xd5\x8c\x16\xee\x07?\
+\xd7\xc2\xe2\xfd\xc0/\x8apj+5\x8b\xd4f\x8f\xed\
+\x10\xe1\x062\x91f\xd7\xf2\x90\xa1\xe7\xe3\xc8uQ\xcb\
+\xad\x8d\xd2\x03\x228\xf6\xba\xaf~\xff\x10\xcf\xab\xb5\x14\
+xn1\x80nN5\xe1\x9e\x91\xe0>\x12\xd0\xab\x17\
+:\xe6\x0d\x1b\x16\xeb\x15\xa26\xa2\xea\xba\x96\x04]\x04\
+x\xbe\xd9H\x08\x18\x110\xc1\xa1\xfa\x84!S\x1d\x9b\
+\x9f\x1a\x8a@\x04\xe7\x8f\xa1\xcc\xf5\xd3\xf6\x09M\x07\xee\
+;\xb5xD\xaca\x1a)\x03\x0e\xa5\xde3\x00<_\
+\xd4\x18\xde\x98\x0c\xad0\xdf\xd3x\x8bA\x82\xe3\x14\xc5\
+\xe5\xbeZ\x04b\xbf\xadZ_\x8d\xeb\xb0\x88\xa10\x8c\
+\xe8\x0aA\xbfd6Z\x1c{\x1c~\xc4\x92\xc8x\xb3\
+\x9e\xb0~\xd7\xe2\x97\xca$x\xc0D\x0e\xa5\x8b\x8b\xa9\
+/\xba\x97\xc6\xa0\x9d\xa1\xfb\xe3L\x8acS\xa6\x83\x1a\
+\xde\xb0\xc9&\x91\xa7\xc7\x140P;SWu\xa7\xbf\
+=\xeb\xaa\x9e\xbf\xf6\xc5\xf6\x856\xcc\x8b\xf1\x8d\x026\
+.\xfa\xc4\x07\xb72\xb6\x95\xb2\xeb2\x86\xcf\xc5\x01\x17\
+e\xc6\x02\x86i;[@0\x5cF\x97\x8f~0\xba\
+<g\x8cM\x9b\xdf\xd4\xf9\x87\xeb\x0dy\x1d\x89\x99\x99\
+\x95\x949\xb9\xac\xd0b\x81\xd2z|\xca|\xc5\xab\xf9\
+g\xd6L\x88\xeb\xdc\xca\xe1\xf3\xb7\x0d\xd8\xae\x98\x0fz\
+^\xc8 \xfb\xba\xb3\x87\xfa\x7f+\x93\x85\x06\xc0\xb0\x90\
+J\x04\xf6V\xdb,\xbaIH$o\xec{\x11vL\
+\x0c\x12T\xfbE\xc5\x1eN7\x14\x14\xf15S\xffy\
+\x0c\xad\xf6\x94\x80p\xdd\xdd\x0f\x0cY\xebb80\xc0\
+\x02T\x8f\x06\xd8\xb8}#\xe0\x1c\x05\x98\xe6,\xda\x9e\
+)\xf3M\x80\xc5\xa9\xf5\xa2,\xe28{\xed\xb3\xda\xf3\
+5\x9fN\xddD\xa0\xfa#\xae\xd8\x7f\xde\x10\xfe~\x1f\
+C\xf1<*\x90\xd0\x1en\xc8\xf3\x7f\xd4\x18\x0a\x07\x12\
+\xa6\x12]N\xd8\xf7\xd9\x87$\xc6\xd4]b\x08\xc7\xf3\
+\xbb\x0b:\xcb\xc0\xbf\xd3\x10\xbe\xff\xb3\x86\xd8\xee. \
+\xb7\x9b\xeb\xa7\x19b\x17\x81Yz\xbb\xee9\x0cY\x83\
+!f\xce\xad\x8b\xc3;\x02\x96.J\x8adW!\xce\
+\x18KO\xc2:\xdb\xdf\x13\x10\xd6\xb9\xeeC\x01[\xe7\
+\xc0Qw\x84!w\x01\xe0{a\x04E\xd5\xfb]\xe3\
+\xfa\x145#\xe8b0\xb1\xe9\xc4&\x13\x9b\xc4u\x22\
+\xee{\xb1\xdb\xc2eY\xfc1\x06\x18\xc2:j\xeee\
+t0\xb5\xbeP[N`r4\xd5\x10\xfenVC\
+\x16\xa9#S\xd8~\xc9\xa0\x12\x81\xedD=_?k\
+\xd9\xb8\xc6\x80T\xe6\xfb\x83\x0c\x85\xca\xf9\x0e\x86\xf0w\
+\xb3\x1ab\x1b\xcd=\xda=\xa2\x03\x9c\xc6\x0b\x11_\xad\
+\xdfts\xf0}\x8b\xae\x11\xdfU\xdb5D}\x11e\
+D\x13\x8av\x98\xda\xcf\xd0P\x80\xf1\xd5\x1f\x1cp\x88\
+T\xef\x8d\xd9r\x8c\xa1\xe8\x92A\x89\xdd\xa1\x01\x87\xe5\
+\x00\x87\xb7%\xb4\xf6\x9a\x1b\x16]#\xa0\xe6\xeb9s\
+\x8a\xbd\xb4\x16<\xb0%\x11[\x02P\xce@\x80\xc2\xbd\
+\xaaJ\xf3\xd0\xa0\x81\xfa.\x11\xc0\xf6bC\xd6l\x88\
+a\xd8\xbdsF\xb8\xdb\xcdP\x88\xf2\x22\x96\xa7@C\
+<\xcf\xd9\x0b\x87\x9fRC\xf69\x12R\xec\x8f\x04\xfa\
+)\x11#\x80h\xfb\x8b1a\xbek(\xec\xdc\xcf\x8c\
+}\xd6\x18MCo(\x02(\x1b\x18\xa6k\xcf\x9cD\
+\xbcq\xbc\xd0`B\xa3\xa4\xb6\x97\x1eV\xa6\x1aq8\
+\xb5\x15\xec\x7fk\xc8\x0c:\xda\x9e:\xc3C\x22\x9e\xf8\
+\x1f\x9e\x18\x82\xa9\xc3\xbe\x8e\xc3\x8e\xd8\xb9J;\xfd\xf3\
+P\xf1'\xd0\xa3\x00\x09\xeb\xab3G\xb1?\x18O\x8e\
+\xd8c\x88\xecb\xe7\xf3\x0f\x07\x1a\xa6!v\x12\x8e7\
+\xf6}\xdd\x16\x10\xbf\xa0\xd6\xc8b\x1f\x87\xe1\xac\x04\x9c\
+\xef\xd3\x04P\xea\xb6\xdbUW-\x18\x94\xd8\x7f3$\
+\x0e\xe5\xb75o1d\xfbd\x06G83\xb7\x93\x1d\
+\xc8\x11\xbf\x90.E\x9a70!\xdc.\xa9\xd5\xefy\
+\xdeadR\x8a\xc3\xfb9?\x1c\xf4Z\xcb\x00\xffc\
+\x9e\xc8\x05\xb0\xe3t~H]\xaa\x8e\xf6\x97w\x85\xe0\
+s\xeb\x00@\xed\xf0\xd7\x09\xd9\xc9\x8eu\x895\x84\xee\
+\xceP\xcc\x87\x9aa_k\xa4M\xf2\xf9\xe3\xee\x98r\
+ad0\x19\x18\x1cC\x1c\xb7Q\xd4q\xf6\xcc\xb2g\
+\xdc\x11\xc7\xc3`\xae\xd5!\xc9D#\xaaGFL\x11\
+ \x1f\xa0\xbaOkM\x81\xa8\x1d~\x8eZ\x10\x5cd\
+iC\x19\xfau\xa4\xa7r\x8c}\xa2\xf1s\x1ch\x16\
+ \x8e\xb58F}\xa33u?}O\xae=O7\
+\x9a\x89M\x06\x80\xeb\xa9\xc55\xfe\x17e$G\xb2R\
+\xed?\xed\x99\x08\x5c\xfcG\x0e\xe3\xb3\x95\xaa\xe7\xdf'\
+Q\xa7\xa4\xc6\x84\x9a\xdc'U\x0b\x8f\x03\xcdDb\x9e\
+\x90qxJ\x8e\x15\x94\x1cQ\x91\xa9}\xf6L,\x13\
+\x14*Q]\xd2A\xa4S\x86\x90;X\xb9\x06(]\
+?\x0e\xe7\xd3\xaa\xc5Wd\xdf\x1fpe\x84\x08\xa8\xf8\
+y\x909g>a\xa8?8<4<\x143\xf0q\
+\x03-4&\x92\xe3\xcf\xb8O\xab\x1cR(|d\xee\
+q\x98\xd90q\x10\xd8\xb0\xa8u\x87\xc2\x86\xfa>\xe7\
+M\x06\xbb\xaeQ\xa2\xa6\x15\x8a?\xdfC[<Ev\
+\x9b\x13\x0d\xc5\x82\x02#\x81\xcf#\xc0\xc4\x82HF\x19\
+G\x8e\x05\x81@\x09\x0e\x1a\x81\x01\x182\x1a_W\x87\
+V\x86\xbe9\xcdP8\x94\x9a'\x9e)f\xde\xe0\x88\
+\xcaA\xa4\x96\xde\xdb\xea@y\xc3Pg\xde \x1eH\
+\x9f_~N\x09\x05\xcf/\xf3\x19\x83\x10\xea?*\xfe\
+\xb4)$\xe2O\xe6X\xed\x95\xa85\x8e\xd4\xed;\xb3\
+\xb8\x9b\xb7a\xa4+\x01\x1b\xdb\xc9\x86p\x8c\x9eF8\
+\xdee(T\xeaE\x99k^4\xe4\xc0L\xf3\x98!\
+\xdc\xaeM\x0c9\x03F\xe6\x07\xaa:\x01\x82~\x1fC\
+8\xfe\xc6\x90\xa9~\x8c'm\xfdP\x07\xf6uZ\x14\
+U7,P1\x16S\xc2U\xde)\x09\x91*\xbe?\
+\xcf\x184\xac\x0fZ\x8f\xdc\xa0\xdb/1\x07<p\xc6\
+\xf3B[\x1e\xddO\x0f\xd4\x22z\xa5\xfb\xdd\xdfd\x08\
+\xaf\x7fb\x88\xfbG\x12\xbb\xc3\xb1W\xadzs\xa6\xba\
+\x1dP*\x85\x01\xa3\x8c{\xfb\xf6v\x896\x18*\xe3\
+o7\x84\xe3\xce\x01\xf6\xf3}\x03\xf6)j1i\x0f\
+\xa5\xccu\xb3\xb2\xa1`\x5c\xbcd\x08\xcb\xebE\x86<\
+\x0f\xdc`\xd5\xfa\x04\x93\xc8)\xad\xacct\xcd\x91\x96\
+N\x9c\xaf\x87DG&@\x01\xaf\xaf\xe6u\xc6\xa9\xef\
+j\xe7\x85\xc1j\x92\x8d&\xda\xd8\xfe\xca\x10\x8e\xeb\x1b\
+ri\x02\xfd\xc9\xdb/\x18\xc2\xf9\x9eo\xc8\xea\xe2\xce\
+\x0cQFqxk\xd2X\xa0F\xdb\xcf\x7f&C\xf8\
+\xde\x95\x0c\xc5<U\xa0%:\xea\xaf\xeb\xe7/\x88R\
+o\xea\xfbO\x05X x\x0dC\xc1h\x82\x81\xd1\x1a\
+\x8ayH\xa6{J\xfa>\xcf\xdc\xa1\xae\x7f\x86!\xab\
+\xc0\xf7\x1f7\x14\xedCQ\xb1\x96V\xc8\xf0_C\xc1\
+\x9cP\x80uX\xd9\xf0\x06\xfd\x97\x11\xa9TM\xfb\xf8\
+R\x86p=\xdf2\x14b\xb4\xec\xcf\x9aW\xc3\xbc\xa9\
+\x8d\xa4S\xc3\x158CD\x8f\xf3\x0cn\xf8\xeb}\x18\
+\xa7~I\x83\x02$\x07\xe6\xda\xe3~/\x83\xa8\xda\xe7\
+\x15\x81:\xb5/\xe3y\x8f\xfbU0\xc0\xfb\xff\x06\xfc\
+'\xb7\xdd\x84\xda\x8e\x88_\x7f\x89!\xf7Qw\xb1\xbd\
+\x95\x0d9c<\x5c\x90D\xca\xfa\xfb\xfb{\xfb{\x14\
+\x90y4;.\xb1=\x9d1\x05\xec\xdfDv\xe0i\
+w\x1a\x09\xd5\xe7\xe5.5P\xee\xfb\x85\xfa\x85{\xd3\
+\x0c\xf9\x8b!\xfc\xferC\xf8\xfb\xcd\x0d\xb1\xc4\xe5\x1e\
+\xfb\xbe\xd1\x19\x01\xc1\x01j75\xe4u\x17\xc7\x16\x8a\
+4m\x02q\xec\xe3\xe36d\x86T\xbb\xa8\xa1\xe8\x1a\
+\xa1\xc4\x91;\xd0\xca\x90\xbaA\x0c\xf3\xea!\x95\xe4\xc0\
+0\xd8\xd9\x90\xdbS\x22\xce\x88xn\x7f\xb4!3\x01\
+\xfa\x93\x0d\x85F\x04j\xfc\xe6\xb0n(\xb1\xc1\xf5d\
+/\xfdY]n\x0e\xd2\xfa\xf7\x82\xd4\xfc\x8f\xce\xed\x22\
+\xfd:\x11\x7f\xa3\xb4J\xd4l\x0fHJ\xa3\xc53\xd7\
+\xb4Kc\x7f\xeb\x83\xd5\xda\x17\x1a$\xb4\xd5E+\x88\
+\xb6\xbd\xb6\xbe\x1f^0=d\x1ft\xbb\x07\xecV\x94\
+\xa2\xd0v\x90\x801\x012\x95\x5c\xc5B\xe0\xf9\xa2\xfd\
+6\xd5\xec7g\xae\xa9t\xc9\xdb\xe0\xd25G\x8c\x1c\
+\xd6)\x18\x19\xfd\xf6i\xbd\x1b>\x9a\xba\xf8\xf4\xdb\x1a\
+\x0af\x85\xda\xcaZ\xf8$\x8e\xafT\xf1q\xf0=\x91\
+B\xc9\xde\xff\x8d\x1d\x19`\xf3<\xb5\xe9\xfc\x90!k\
+\xcap\xc4n'\xe0\xe5]\x16$J;<g\x08\x9f\
+\xff\xac\xa1\xb0\x03)\x05\x84R\x8f\xe3\x89\xdd\x043\x93\
+\xc0:\x011\x1csi\x14\xb8v\x92\x18/>\xef\x15\
+(\xf6\xc0\x0a\x22\x7fh\x91H]~X\xcc\x90U\xec\
+y\xed\xdaf04\xc5\xecpF \xf6\xa3\xeci\xb4\
+g<!\x02#\x03\xbb\x10\xbf\x02\xc7\x9f#\xfb;\x01\
+\x11\x12\x06P\xea\xf1\xabp\x9c\xb1\x93a\xde\xd2\x06\x10\
+m\x05\xc6G\x8cZ\xff=\x01\x11\xe6;\x22\x8c$H\
+HH\xb2\xdf\xd6\x0en\x9d\xf0\xad5\xe4j\x06@\xdd\
+\x85\xad>\xce\x16S\xbcY\x1b\xa0.\xe1\x9e\x8cY]\
+9\xea3\xfc\x9b\xec\xf7\xff\xeb\xe7\xf5\xef\xeb\x9f\xd7\x1a\
+v3&\xac\x93_[\xb5\x0f\x1c\xaf3\xd5^+]\
+\xf5\x07\x9d\xe1\x04,^2G\x91)c\x03\xe5D\x18\
+0\x06\xbc\xce\xe0S\x1b%ub\xa7.\xa3\xe6M\xad\
+v\x95\x81\x9b!#\xca\x91\xc8\xc7\xccU;\xc3\x9a\x82\
+\x91E\xe5\xa6\xaf\xd5x\xa36\x88oz\x83\x89RO\
+\xacz\x5c:\x17\xd9K\x8eI\xae\x8dO\x01\x11\xc4\xc4\
+\xf4\x80\xbbX\x1c\x0e*\x81\x93\xbaf\xa3\x0e\xa8\xc0\xa8\
+\xa0M!\xaa\xea/zF>\x8d\x1b\xf7\x81\xfbD\x00\
+\x00\x03\x8d\xc8b%j\x88\xc1\xe3\x01\x1a\x023K\xa6\
+\xee\x10lX&u\x15\x1d\xd4\xc1kYR\xc4\x8e\x8c\
+\x19\xa2x\x9c\x1f}i\xb9\x1e\xc6\x11\x87\xf5o:\xaf\
+g\x14\x09~\xa1\x0a\x04\xa1\xda\xcau\xdc)J\xd3R\
+\x0aL\xec\x956X\x9fGP\x93\x890#rG\xfb\
+\xbd\xb5\x949\xc6q\xe4}\xfc\x9c\xb6\x89\xa2\x5c\xb9\xa8\
+\x14\x8e\x18\xd7\xa3\xe7\xc5\xef\xa7\x16~o\xdf\x87#\xad\
+\x9aZw\xb8\x09\xa8h\xbe\xd3\xe7\xd6\x1dw\xbaoP\
+\x22\x00\xb3\x80\x12\x16\x16f\xd4iq\xbc\x88X\x8b\xaa\
+\xe7\xcc\x08\x19\x0c\x1e\xd1e# @C\xad\xf3\xaf\x92\
+\x16\x82\x7f\x1f\xcc\x82:B\x8f\x18\xa3\xa8\xe9\x1ep\xe1\
+\xf7\x04\xa6\x94\xa9\xf2\xe7G5\xf0\xc3:\x86bc%\
+C\x8f\xe6\x00\x1b\x0b\x7f\xc78q\x7fQ\x89\x97C\xe7\
+\x8e.\x1b\x95\xda\x0fz\x1fh\x02\x07rpa\x00x\
+\xcd\x9c\xd4\xe5}c\x91C\xe0\xed\x94\x08\x04\x10\x10d\
+<(\xb5\xf8N\xca@\x91IG}\x96\xbe\xf6\x88&\
+\xa1a\xd0\xaea(\xa8\x8d\x88=\xfd(\xd5\xb0B\xe9\
+\xed?\xa1>\xd1\x94N0/`\xca\xf0\x9cK\x9c(\
+f\xbe\xf7\xcd\x94Fg\xae\xb0\x1e\xa1\x8a\xaf\x1aN\x9f\
+\xc7\xdc7\xda*\x12\xa8\x92X\x94\xdfg\x9e\x03\x1c\x0e\
+2V\xac?\x18>\xf4m\xa6\x06\x91\xf3\xa7M\xd3\xf1\
+\x11Y\xccT\xaa\xf70\x08\x9a{\x9a{\x9b{s\xe0\
+\x8an\x14\xedj\xed\xaaV{>\xbe\xa1\xa1\xc8\xf8^\
+\x1ep\x994\x18\xfe\x123\x8f\x0bE\x15v[\xe5\x1e\
+\xcf\xed\xe3|\x1e)\xc3\xec\xea\xf2\xb4\xe9:\xdbP\x88\
+\x0c\xc2\xac\xc0\x81\x91\xf8h\x0cSl#\xa6\xc0)\x9a\
+g\x16@x\xde\xa0@P0\x94\xfa\xf7\x1ar\xa6\x80\
+\x0cx\xbbb\xc0\x0a\xe1\xfc\x9f3\x84\xe3|\x86\xa2\xa4\
+GL\x17\xef\xff\x8c\x8a\xf5\xa7R\x09Bp\xf3RW\
+\x0d\x1ca\xdaq\x8a\xf9\x13\xdb\xa1-\x11\x19.S\x87\
+\xa9\xb9V\xdf\x99\x07\x1a\x87v\x1bCVuw\xc7N\
+\xd4o\x02\xd7\x91\xfa\xbd]d\x94M\x8b\xb5\xdf\x0a \
+!J\x15\x03\x03\xab\xe7\x8c)\xd4v\xaf1\xed|\x9f\
+NL&=\x7f\xd4\xbe\xb3^\xf5\xbf4\x14\xf3v\x8a\
+\xf6\xe7/&\xf1\xc7f\xaeD\xd5l\x0e\x96\xc6\xc3\x7f\
+%V\xc7\xf70\xffN0\x84\xaf=\xdcPdLO\
+0D\xb1\xb9\x80p\xfc\x8f!\x1c\xdfl\x88\x01\xb1\xf8\
+wd\xc4=\x10\xa4}\xcd3\xdb\xcb'f\x83g \
+\xe9\xde@\xfb\xc9\xf5\x22\xc9\xd9\xff.\xb6\xf5[9\xab\
+\xea\xf7\x9b\x05l\x9a\xa9\xe0P\xb2q\xe8\xd1\x12\xe9v\
+2d\xb1J\xd6\x89\xe1\x12e\xf6\xcf\xee\xbe\xd1Y\x17\
+\x8fm\x0d\xe1\xef\xf6M\xa2\x85Q\x84\xd4^?f\x08\
+G\xfb\xd7\xe5u\xae;+ \xcc\xf3~\xa7\x80\x0fg\
+\xa6\x883V\x148\xed\xcf5\xa8\xcd\xdezYkd\
+\xb4\xb0!\x8c\xdb\xc7\xdaC[\xeb\x8a\xf0\xb4A5\xf7\
+\xafd\xe6\x00\xf3\x8b\xcf\xf5\xc0\xe6\x16\x86\x5c\x92\xe6m\
+-\xa5\x95\xd2\xbf`\x88\x81\xd66\x06ZQ\xbd\xc7N\
+!\xd3.\xd1\xb3\xfeSj\xe3\xd8\xa8\xc2\x11;V\x81\
+PJ\xbb\x5c$\x15\xaa=\xda(\x0a\xa8:\xe5\x1dG\
+\x04M!e\xc8#\xd5\xfe\xa8b~By7\xe6\xc0\
+\xea\x99\xd2\xed\x19g\xf5\xb7'c:\xccm(\x1cp\
+\xbaT,j(J\x0eY\x8f\xb1\xbfd\xef6\x07(\
+\x90\xfe\x9d\xc4\x00\xf3\x0c\xbc1\x19,\x00\xf2C\xb5W\
+T\x09Z\xbb\x85!k\x0d\xc4\xedm(J\xc4\xee4\
+\x14\xb5\xdeWFd;\x8b6\x8a\x16\xe0:\xa8`\x22\
+\xc8\xf1\xa4\xc4`\xec\xf3\x11\xb9K\x8d\xba!\xb4\xf3\x18\
+\xe2\xf5-\x12\xafo\xa9\xa8o\xef\xeb,\xe2\x87\xfd\x89\
+\xa9]\xa5\x97\x9c\xc9\x01\x1f\x9e\x95j\xfaU\xaa]W\
+\xe0\x91D\x8f\xaf\x8f\xac+\x042\xd5\x85\xa69\xb99\
+\xc5\xd6g\xf612\xfb\x04>\xfa=\x0c\xd9\xdf\xb0^\
+bMYj\xcc\xe7\xab\xbb\x8e\x8b\xd0\xa2)$F\xa9\
+\x078\xd1\x10\x12\xa5\xdfK3(\x19\x90C\xea\xf6\x0f\
+\xfb\xac\x02Xq\xf5\xde\xb1\xf8~\xf6M\x1c_\xf6q\
+\xba\x07\xf0{\x12\xb8\xd8%\x04\x08\xb4\xafz\x17\x02\x02\
+J$\xb4\xe8vA\x97\x229\xea\xbe\x7fK\x03\xc8\xfd\
+2\x12I$`j\x8d\x084\x04\x98\xc7\xfc\x5c\x09\xaa\
+\xe1g\x86\xc2\xf1g\xdei\xfd\xf1\xd2M\xba[\xf1\x1c\
+2N\xf8\x0f\x1a\x0f\xba:x \x8d\xe7\x06\xff\x15?\
+\x0e\xc7\xbd\xce\xc4\xd7\x14|\xc6\xb9\x165\x9f\x8c\xaa?\
+\xcd\xb5\xd2\xa6\xd7\xb0\xab\xb5\xecf\x14eO\x7fWk\
+\xa4M\x96\xe8\xee&\xd1p\xab\x03!\x5c'\xfe\xd5\x8c\
+b\xeb\xf18\xee\x8e-T\x92\x97\x0d\x99\xba1]\x84\
+\xa1)\x06\x12\x8a\x09\x14\xddRto\x5c\xbf\x9f\xafX\
+\x80\xb9\x00n\x1c\xff\xa8I\xc1A\xc5\xb0\xae\xfb\xb0\x93\
+\x19\x82\x8aQS,r&\x9e\x0c\xfd\x1b\xd6^x\xc4\
+\x12jN\x9d\xc1G\xa5\x15\x15p\x1c\xb5Z\xbc\xb0\xbe\
+1\x04&^\xf5\xda\x8b\xe9K \xb8\xa15\xc5\x99\x00\
+\xc7s\x1a\xc7\xac\xfe\x98(\xf7d\xe4\x11\x85\xc3!\x82\
+\xb2\x22\x86\x01\xb5\xc9\xde>\x11J\xfa\x8aZ\xc0\xd9\xc0\
+d\x80z\xed=\x13\x87\xf3\xe7\xc1\xa85\x11\x88\xdc\xf1\
+\xbd\xd6\xa5\xe0\x95\x98Q\x8a5\x81\x18V\x1e\xe8\xa0f\
+\x866*\xbc\xe6\xfcq8\x98G\x1cs7\x89D\x91\
+g\xfe\xe0\xb8\xa39A\x84r\x09\x1di\xe3&\x83\x10\
+\x03\xd83\xf2\x8c\x07\x8e>\x22\x8d,h\xbc\xa6\x1d\xe6\
+r\xca\x80\xbfW\x0e<\x7f\xc7\xf3B$\x15\x07\x97\xeb\
+\xa1v\x9d\x08>5\xe6\xa8\xe4\x13Y\xaf\x98'\x1e \
+\x115\xdf\x19\x05r\x04\x9cQ\xa0\xfe\xae\xdeF\x8d\xe7\
+\xa4\x0e q\x1f\xc9\xe0\xb2\x80r\x1f\xb5\xe0z\xa0\x07\
+\xa6\x01\xf7\x89#\xcf?\xcc\x15\xfa\x0b\xd3\xee\x07\xf5\xdb\
+\xcb#\xdc\xc0p\x07\x8b6|\xba\xae\xd8F\xc9\xday\
+\xcdn\xc8\x99I\xcf\x5cH|\xc7\x1d|\x1c!9\xaa\
+\xb4S\x22\x80@&~\xec\xea\x88\x5c\xda \x0d\x04\xd4\
+\xe5\xd1\x0e@m\xdf)p\xac\x07lD\x18\xa2t]\
+@+\x81\xeb\xdeG\x94k\x02\xb0R\xf3\xf7\x9aV~\
+\xae\xf53R\xa4\xbfQ8\xfe\x88\x01\x12\x98\xd1x`\
+\xc8D\xe6\xb9\xd5\xc0\xafm(2\x01\xcb\xa5\x1aoo\
+kC;Cj2i\x07HM\xb36z\xef\xf2p\
+\xbc2\xb1\xe7$\xc7\xc3k\xb0\x09\x5c\x10p\x92!\xe1\
+\xf3\x91\x8c\xa8\x0cc\x1c\x02\xef\x0bM\x06C\x14dT\
+\x8f\xa1\xf6\xfa\xfe \xc3\x09\xc3\xb79\xd2P\xa89\xcb\
+\xe1o\x7ff\x88\x01\xad(\xea4\xf6\xb5\xf4\x9c\x90\x09\
+lO7\x84a8.\xe0\xd8\x1c\xb8\x8a*\xdf[\xaa\
+6\xf34\x05tN\xcd\xea\xfc\xed:\x01\xeb\xca\xf19\
+2\xb7\xc1\xc3!h\xd74d&\x84k\x07@\xc1\xa5\
+o1\x19A\x95\x1e\x09@\xf0\x00\x00 \x00IDA\
+T^\xb8\xa3oOa\xd1\x05c\xd8\xc8\x90\x03\x11Q\
+u\xfd\xeaBk\xc7\x1c\x90\xa99\xe0\x1e?\xa7\xa8\xbd\
+\xf7\x8c\xf7\xf1I\xf4\xcb3\x9e{\x1b\x0a\x0d\x03=G\
+\xd4\x1e\xb7/\x1abF=\xce\xffHU>\xb40\xf4\
+\xa9\xe1~(1\xa0\xfc\xf3\xd61\xe4\xf9\xd5^d(\
+\x18{\xca\x94\x0d\x87\x18rF\x0a\xca1\x99\xc1\xc8\xec\
+\xfbC!\xa6%j\xbd\x97F\xac\x93\x98*\xfc\xde\x0d\
+o\xd6y\xf6#\x18O*\x1dr\xea\xb1J#\xbc}\
+\x9a\xc4\x17\xdd\x90\xc51\x11\x13\x10\xa6\x85I\xc1\x99\x18\
+\x1c\x22Q\xedF\x86B\xd5\x9e.\x03j\xc3\xd7\xfe\xa5\
+}\xb2}2\xd7\x06\x0f{\x18\xc2\xef\xe71\xc4n\x00\
+\x0f\xf6\xf6\xbc\x1ej(\xba\x90Pr\xa5\x00\x0b}\xec\
+\x11\xcf\x8b\xcf\xe5\xb5\xb9\x1f{\xbf\x96!\xdb]\xfdz\
+\x86\xfc\xb9\xfd\x0a\x06\x05\x0a\xacf\xfb\xb4\xd46\xb0{\
+\xaf!\xbc>\xc5\x10\xcc\x8aE\x0c\xb1\x8dg@\xf8\xfd\
+\xdf\xbb\xa7;s\xc4\x977\x84\xe3'S\x00\xb1\x7f\xa7\
+A\xf7\xd3\x18\x05\xb3\x07\xccV8,\x16\xc8:M\x0e\
+\xdd!\x85\xc3\xa9\x00Y\xff\xa6\x80`\x0f\xb4\xe7\x19\xc2\
+\xeb+\x0c\xe1\xf5\x1f\x0d\x85(\xe4\x8b\xd2>P{\xd1\
+\xd1\xa5\x86\x22\xb3J)\x884\x01\xccm7\xc7\xbdY\
+A\xda\x03\xdfn\xbf\xd3\x86\xf9\xd1~>1]\x9ai\
+\xaa-\xd7:O\x97\x1a\xc4\xf5\x10m\x0c{Q\x0c\xd4\
+3\xbe0\xa3\x9c\xe2\xac.Q\xee\xe8\x18\xef\xea@\x05\
+\xa8?#m\x91s\x94Q\xdeF\x99\xe2\x93sil\
+\xcc;\x1f\x19\x03?\x01\xb2\xbbn/\x02\x07\x04\x8c(\
+U!\xf0\x8d\xe1\x8e\x88\x9a\xe6!%\x11>.\x04\x0a\
+\xa41\x01\x93m\x86.BR\xc9'\xd0\xebmo\xc5\
+D\xf3\x84\x04\xf3\x17F\xd2\xa7\x0d\x991\x13\x99\x13\xc1\
+\x9e\xed~l\x10\xc3\xe1]Q\xeb$\x05P\xd6\x1a[\
+\xdb\xec'\xb7\xef\x9f\x8a)\x9a\xb1\xe6\x01\x93o\x8c\x01\
+\xee)\x16\xe0\x0ekn\x5cw\x9d\xc1\xa7\x12B\x02\xaa\
+..\xab\xc0\xaf\x8b\xb4\xde\x9e\x9eW\xc6\x13\x11a\x1c\
+9J\x09\xc2\x1e\x92\xec\x0fi\xee\x0c\xbb\xa7\xe71\xac\
+\x05I\xabDv\xb2\x97>\x11\x98\xdeLZ\x0b\xea\x22\
+S\xb7k\xf3Rd\x12\x1fjs\xccz\xc8\xbe\x86\x1d\
+\xe9\xa5&\xec\x0bu\xdbl\xec:DZ\xf5\x5cG\x89\
+\xc5\xcf\x15b\xe40\xec\xe4\xc8\xfb|\x81!b\xd6\xdc\
+\x0bJ\xf4\xacZtu\xaa\x12!^\xba\xac\x80\x95S\
+\xfaI\xe0`\x0f\xca\xaf\x80\xa9\xcd|q?\x84\xf7a\
+Or\x9e\x04\xeaI4\x11\x88\xaak\xde+\x91L/\
+I\xd0\xfa\xed\x81\x8c\xba\xcd\x1f\x89'\xb4\x17(UC\
+\xdb\x03\x11N\x02\x08\x04\x14\x080\xb0/\xa3a\xc4\xef\
+k\x11\xc0\xfaX'X\xeb\xd7U\x97/?\xd6m\x07\
+kG\xbev\xf8_\xfb\x1f\xe2\xe9\xf5\xb1>\x8f\xda\x7f\
+\x9c,0Pk\x05\xd4\x1ao5s@\xfb\xfc\xb8;\
+\xb45\xa5\xa1\xae\x99\xb7\xe1\xf8w\xd5\x9e\xa0\xe8[\xe8\
+\x19mS\xeb\xddU\x8e\xf2\xf0\x06\x22\x0aD\xca\xb90\
+\x1c j\x9a\xa9=F\xe5\x1cF\x02\x91.\x0c\x05&\
+*\x0b\x22\x8e%\x01\x82\xc9\xd4\x18'\xcb\xe0\xd7\x03V\
+\xb7\xb5\x9b\xac\x1b\x01\x0f0\xd4D\xc4t\xf8\xbc)U\
+\xbb\x8aZS\x80\x7f\xafi\xe2\xbc\xec\x01\x81\xe9' \
+\x19{\xae\xb7\xae\xb1g\xc2\x22*\xc2y\x12\x99\xab\xba\
+88E\x9eL2m\xf1x\xd0\x09\x08\xe9\xc1\x22C\
+\xe9\xe3K\xe6\x9a\x8dm\xe6*\x10C \x07G\x98\xcc\
+.\x8er\x9d\x91G\x03`59\xd0dpQ\xf9\x94\
+\x01\x12\x9c\xbb\xf4w+\xc8aY_j\xaf\x1f\x96\xc3\
+(J\xb7\xd7*\x110 \xa3YwO\xa8\x19\x12P\
+\x8c\x11y\xe4\xfdDl\x11y\xa1\x04\xa0n\x87\xc2\x02\
+\xc7sS\xab\xf0\xe3\x90\xb3\x00\xe2\xb0\xc9Pv\xc7\x13\
+\x07\x9e\x0c/\x01\x92\xba\xdd\x0a\x9a\x12\x94N\xd4]\x22\
+\xe8^\x81(!b\x89\xb43\x84\xb2\xaf\x8d\xcf\xdb\x06\
+\xb2\xf1\xe1\xf8\xb3 \xf1\xbccP!\xf6\x86\xb8\x10\x1b\
+\xa5(r\x9e1V\xdfo\xa7\x86\x11Q\xe69\xe1\xf9\
+\xe6z\x99G\x04^`P\xd0\xdf^b~8\xee\xee\
+P\x12\x99\x86J)\x8a\xb5\x8b\xe8QzDw\x0de\
+\xa0\xbd\x06\x10\x03\xe1\xec\x88\x9c\xe9\x86\xb9A\x9b2\x02\
+\x97\x95x\x22]C|\xfc(\xf1 3B\x0d+\x8d\
+\xa8\x11c\x92\xa1C;1\xa7\x02J5\xd8\x19\x0e'\
+F\xe4\xefe]@D\x91\xe7^\x06\x01\xb5\xd7N\x8d\
+\xc6p\xb1|\xd5\x07\x8b\xc0\x1d\x01\x146`9\xb8.\
+\xc2C\xe9\x06\x19b\x98$j7\xe6\xfb\x87j\x10\xbd\
+\xc6\x12\xb1@4\x06\x94\x11\x22\xf3\xde^i(j\xe9\
+\xe4\x186\x87(\xa3\x84\xa1c\xfc \xcb\xcc\x9e\xd5\x9c\
+\xd9\x9c\x95\xdbrE\x0d\x88\xa5\xd5\xe7\xfb\x80\x9cqi\
+/4(p\xf6^\xd5\xbe\xee\x97\x19\x19.\xc6\xf8E\
+CA\x0d\xa5\xdd\xa02\xbc\xde\xb6\xed\xb3\x86\xf0\xb93\
+%\x91\xb3vkC8\xdeo\xc8\x01,\x02\x09\xed\x13\
+\xed\x13\xd6\xe7\xda\x9ev3\xc0#\x83:\xac\x93\xed\x8e\
+\x01;(\xd0pB\xd1~\xac\x8b\xdc\xb1L\xdd?\xd2\
+\x10\xe7}\x9c\x1fP\xb7=c\x88\xfa3L0\x8dw\
+\xffmC\xbc\xbf\xa9\xab\xc4~\xc9A\x08fy\x12\xb5\
+<#\xd5\xa6\xf6\xef1\xe4y\xe3q\xfeCS&\xd7\
+\xc5Z_0\x14\x19lQ\xd0Yg\xa2\xc1n\xe2n\
+\x97\x19\xe4\x00\x1c]\x04\x90\xa1tJ\xab\x84\x12\xa8a\
+v\x054TS\x1e\xfb\xdb\x9bC\xbdM\xd2@@{\
+\x81L \xf3\x0f\x11?\x98o\xed\xc8P\x94P\xec\x9e\
+2\xa1\xed!\x86\xc2!PW\x0cW\xb7\xff\xb8!<\
+F\x7f2\x84\xe1\xbf\xcd\x10~\xffWC\x0c\xd0\xc4.\
+\x2284\xb4I\xc3\x91\x1e>\x9d\xda\x1e:\xd3\x8d\x12\
+(\xa8\xbf\x94\x16\xa9\x9b\x81\x07\x0a\xd5\x8d\x84\x0c\x18\xeb\
+X\xbf\x88!\x06\x16\x02\x8an\x07\xdb\x1b\xd4\xde\xee\x89\
+\xac\xe6\xdf_n\x08\xbf\x9ff\xc8]<\x9cj}p\
+\x12=\x8d\xab\xe6f\xea\xf3n\x22\x80\x9f3\xe8{\x1e\
+TI\xd7\xf7\x8b\x04\x97\xd6\xb1\xf6\xf8\x80\x13T\xaa\xb0\
+\x932\x88k*\x807WfJ\xb4w\x1b\x14\xe8\xb0\
+\xd7\xefJ%+\xe1\xde';\x0d\x86\x18mt\xa5\x15\
+\xd3\x9fh\x08\xc7\xa5\x0cQ;a\xf6~\xf6\xa2\xf4\xe9\
+\x99\xd4u\xa0\xb9'1\xa9\xdao\x1b\xc2\xeb{\xc5\x08\
+\x22`+\xe6\x1b\xdd\x05|?]1i\x04\xf4\xfb\x1a\
+r`\x92\xbe\xf6.\xda\x8a#\x04\x93\x05\xca7\x1a:\
+\xb6j\x96\xa5s$\xa4\xea\x9a}\xfaz\xa3\xd6\xfeV\
+C\x161& \xe8L\x22\x95,\xf8s\xbb\xbd\xa1\x08\
+hp\x1e\x0a\xd8\xf7\xd7\xf7\xd7\xf5Ids?\x13\xd9\
+\x1c\xce2\x14\xe2q\x94\x02\xe2(i\xbd\x8f\xeb\xdc\x9e\
+a\xfc\x0e\x0c8 ?\xa7n\x87i\xff\x1d\xedaP\
+`\xf0\xe1\x22p\xb4\x91\xa1\x10/T\xa6\xde\xb5\x8f\xd0\
+\x008\xbc\xf9\xb8i\xd54\xf7\x19\x0a\x91M\x1c\xe1\xf1\
+!\xed\x0f\xc1}\xb7R\x08\x17\xa55\xb7\xf0_\xd1~\
+~-\x8a12nh5\x1dd\x88\x0c\x80g\xadm\
+\xaa\xef\xaf\xeaVA\x86\xd8_\x13\x98\xc1\x1f\xc1\xc1\xc7\
+\xef\xa0= ]\x9a~n(4\x99Hhh\xff\x1f\
+66\x14\xf3\x8d\x84\x84\x18x\xde.\x19\xfb\x1a;P\
+\x8e\xb9g\xa4%&\xe8v:m79\x8f7\x1bb\
+@#}\xcf\x8d\xb2W$\xee\xea\xfb>\x01%\xecI\
+\xbe\x8f\xf3& \xaf\x84\x17\x09\x86\x19\xfa\xcc\x93\xd8\xc4\
+.@\xdc\x95R\x02\xfe\x0e{\xac\xf67p\xe8a\x88\
+\xe0/b\x07I\x04q\xb8\xc1P\xd8\xaf\xf8\x83\xec\xeb\
+\xd8\xc3\xcc\xdb\xba\x0b\x00%\x0a\x04\x22\x10\xd7e\x5c)\
+yU\xc9\xa6;\xd00=\xf9{\xfcV\xecY\xee\x03\
+G\x98\xd9\x0a\xf0\xbbF\x13\xd7\xc9\x91\xf3\x22\xd0A\x9b\
+T\x02\x19u\xd7\xb2\xfa8\x19c`\xc6Dr\x1a\x07\
+^O\x16P\x98\xecX\x7fn\xcdd\xd0s\xdf\xc6\xb7\
+\xff\xa7\xb8q\xf4\xef\xc5\x81\xa3\xe6\x9f\x13\xe2\x86C\x1d\
+\xe6\xc6\xe0hZe\xc8\xa3\xc5\xef\xd9\x18\x8d@\xf3\x8d\
+\x22\xf2\xc5\x89\xaa\xf6\xc7\x0dk\x1c\x1bMX\x1ed\xff\
+~\x1c{\x1c6\xa8.D\xa6jM\x83:\x100e\
+\xfa\x9a\xf2\x19J\x088r~D|\xea\xc8L\xdd\xee\
+\xb0\xce\xf0\xe7\xbe\x97\xe9zf\xf6~\x951\x00\xe0\x0e\
+\xd3\xdc\x95\xba?\x0f\xdc[\xaa.\x03P\xa4q\x8cy\
+\x80Y\x90\x10A\x93%g\x84O\xa3|\xfa\xc4\xc5@\
+\xc7\x81\x9cW\xe3D\xd7\x022\xe9U-\x8f/\xa0D\
+\x04q\xe8q\x14e\xc8\x07##9h[\xa7\xda]\
+Woga\xe3\xbap\xf4p\xfc\x97n\xde\x11\xfbg\
+\xd7\x19t\x8e\x04|r\x89E\x1aW\xc6c\x19e\xe0\
+\x17\xd0\x02^E\xf4\xbcO&\xf7'\x07z\xd2\xb1\xbe\
+\xffuM\x0d\x0fn%:2CI\x8b\x162\xef\x0b\
+J\xa6]\x99w\x8fh\x92\xe1C\xe4\x8b\x05\x8c\x0d\xea\
+\xe6\x88\xbc B\x8d\x82\xfa\xc4\x82\xcd\x82\xceF\x00s\
+\x82R\x01\x98\x02\x94\x22\xc0l\xc0\xf1\xadKi\xb8\xfe\
+\xccHI\x0b%\x0e;\xf3\x89\x85\x16C\x97\xf66\xaa\
+\x95\xf5\x8d\x12J\x1a\x0b,\x81\x11\x9e\x17JC\xe4\x10\
+\xd0\xfe\x8d\x1aB/\xb1\xd0\xfa\xe0\x0e?b\x8a0;\
+\xd0\xaa\xa0\x1d\xd8\xe7\x0c\x05\x95\xfbtC!\xfa\x87\x03\
+*J\x9c/\xdcP\xfdU3J\x86\xd1U\xcaE\x1d\
+o\xae4d\xb15kbe\x99\x10\xa7\xb6\x91!\xad\
+j\xac\xfb\xa9\x86L\xc1\xc6\xd0\xa7/:\x99<\xab(\
+\xb6\x9abj\xce\x11\x15\xf4\xf9S\xcfS\xd4\x8d\x95\xd1\
+\x82\x02\x8e\x9a3}\xbe\x9d\x82\xc8z0\x12sH\x99\
+`j?]%\x19\xc7\x1e*\xe6\xb7RM\xb1\x8b\xec\
+\xb0\x0f\xd4Z1d\xaeQ\xd5V\x8d\xb3\xf7\xfb\xc61\
+W\x0d)\xfd\x97\x09(\xb9\xa8\xa12aQrvf\
+\xad\x1b\xab\x14\x99\xf0\xcd\x026\xcd\xeb\x00b\x89\xfe\x1c\
+\x90)4j\xa3i-\xdc`(D\xee>\x90\xfa\x8c\
+C\x11\xb7U\xc8\xd6!oK\xf8mC\xee\x97\xee\x8c\
+\x12\xbd\xa6\xdd\x1d\x14\xc9\xf6L\x83J\x8b\x96M?7\
+5s2\xa5\xedO\x0c\xeaW}\xa1JB\xac\xff\xf6\
+u\x06\xd5\xca\xfe\xb0\xd0\xb0\xe19\x223B@\x87\xfb\
+\xa96\x86Pu\x11\xd7u\x0a\xa5\xf6]\xba[x\x89\
+\x95J\xa2\xbc\xb6\x1d\x87C\x06\xb9\xcf#9\xd8\x88\xb3\
+E\xea\xf7\xbaE)\xc7R\xe9\xf9\xa5\x1b\x01\xebW,\
+\x91\xd8#\x07\x1a\xdd\x01\x92X\x96\xf7-W\x0d6\xed\
+\xe1&\x0e\x98\xd8\x7fb\xffp<\xd8\x10\x8e?\x9b\xb8\
+q\xe2F\x89\xe2Y\x0d\xfb\xbf\x0da9\xde\xdb\x10^\
+\x9fm\xc8T\xf2\x81\xc0#L$\xbe\x8f\xf6vjw\
+\xd8\xfe\xc9\x90\x1d\xca(Y\xd0\x14\x81\x9d\xf7\x19R\x00\
+\xa7}\x22\xb6\xa1\x0bP_\xf9/e\xc6\x88gze\
+\x00\xf6\xb7\x18\xf2\xf9zm\xb9\x02-\x91\xb1\xb1o.\
+5b~\xb57\x1a2\xc5\x98\xe7\xd4\xcd\x91Y\x0d\xe1\
+\xd8\x19\xc2q~C8^c\x08\xc7\xab\x0d\xb1\x8bA\
+R'\xd7\xfe\xea\xa5hZ\xe7\xdbs\x0c\xf9:\xc6\xb7\
+3\xa8\x04i\xf5\xaceB\xd7\x86\xd7?i\x08\xdb\xc3\
+\x02\x01\xc1\xfe\xe8\xae\x0d\xb8F\x81\xb6\x03\x8b\xc0\xc3!\
+\x86p\xbf6\x08\x08\xf3q\xe2\xd1\x80\xb0\xceM\xbba\
+\xda\xf5\xd3\xc2\xe7L\xbbo\xda\xbd\xd3\x82]8m5\
+Cx\xff\x92\x86\x82\xba}\xbb\xf6C\x05Ba\x80\xf5\
+\x8f\x1b\xe2\xfa\xb8K\xbfK\xf8\xbb9\xbb9\xba`\xcf\
+uo2\x84\x9f\x7f\xc1\x90\xcf\xb7\x9b\xa9\x9b\xd2\x05\xbb\
+\xae\xbb\xc1\x10>g\xe6T{O\xe9\x1e\x14\xf28/\
+\x9f(4\x05`\xd6\xc1\x08\xc5\xc0\xd7\xf3\xe2mj\xef\
+0\x84\xe3\x84!\xff]l\xdb\xfa\x8b\x1c\xb8\x87I\x81\
+\xc3\x8ax%%@\xdcG\x1c\xcb~6C\xd1\xfdA\
+Z\x12\x91\x19\x12\xec\xb9~+C\x0c\x04_d\x81`\
+D }\x9d\xdcP5\xf3t\x99`]\xa6-\xecN\
+\x86\xbc\xefz\xe6\xfd\xbb\x86\xac\x81\xe2mL\xc5$k\
+\xcf2\x84\xf9r\xb7!\xbc~\xd9\x90\x19OP\xf0\xfb\
+\xa7\x0c\xd2\x16\xd8=\x1c?o\x08\xc7k4_\x10%\
+\x0c\xee_\xd4V\xf8c\xff\xa7\xfeO1\xb0\xb0\xb1\x05\
+\x16\xfai\xfdD\x14\xd141\xc6#\xd4\xa5\xe1\x07q\
+\xbfK%6\x94x<\x95\xd6\x11\x0f\x80\xdd\xab\xe7\x8c\
+\xfb\xfa\x92J\xb2p\x84\xe9\x82B\xe0\x07\x916\xec2\
+\x12\x0c$\x86HD*\xe0\xe0]f\xd8W\x14\xd0$\
+!fJ\x06Q\xcb@\xeb\xa3w\x07`\xdca\x0a\x92\
+\x80\xc2\x01e\xbdV\xe0\x88\x92=J7\x87\x83\x92\xd6\
+\x11\x81\x16S80\x8d\x03\xb7\xd7\xb0\x93\xf9\x1e\xe6/\
+\xa5,uW\xb2\xcc\x94\x9d\xbe\xbb\x0f\x81,\xfc\x0c\x8e\
+\xb5\xd6\x19\xccG\x18\xd1$0\xf9\x1c>\x17\x06-\xcc\
+-^\xe3\xa7p\xde\xd8i\x94X\xe0\x8fp>\xf8u\
+\xecW\xf8o\xf8U$Da\x00`?\xe3\xb0\xd7m\
+\x0c\xf5\x1a\x91g\x0f8\xd4\x81\x00\x18\xb4\x1c-,\xf5\
+l\xf1}\xf8\x7f\xbc\x9f\xbf\xafE\xeak1\xf5\xdc\xee\
+\xfd\x8dK\x09\xfe\x17\x85\x1f;\xaf.M\xe0s\xeb\x80\
+\x01G\xce\xa3\xee\x0aP\x95\x22\x8c\xc7\x88\xd9\x0a\x8a\x84\
+\x95\x8e9\x13\x08\xea?'X\x0f\x80\x99\xf5\xcf\xe8\xf7\
+}\xacI\x0b(\x0c\xc3%U\xebc\x86\xd6\xf12\xdc\
+\xd7.D4\xa0\x08\x13\x11B\x5c\xa2\xd6\x12\xe0\x01b\
+ \xab\xbe\x92\xeeh\xae&q\x8cz\x22s\xfe\x0cL\
+\x9dY\xe7\xa8\x07\x86\x1aO\xa7:\xe3\x18s\xfd/V\
+\x0e\xe0\xcb\x15\xc5d\xb2\xb6\x0c\x88\xf4q>YD\x83\
+6\x83\xc9\x91E4M\x11O\xcf\xac\xf2\x80\xb1a\x89\
+\xd2\xd3\xf0 \xce\xed\x0c\x81t\xdd\x04\x08\xf8{\xc4\xdb\
+VU\xe6\x1f\x87\x91\x0c+\xf7\x85\x9ao\x16\x16\x1c\xf1\
+\xeas<\xf0\xc0\xf9@M[S\x94r\xa8\xc5\x18\xe6\
+u{D\x16\x12\x8eKj\x1eP{\x0eu\x7f\x09\xbd\
+\x1f\xa6\xc1d\xd4\x196@\x1cP\x16\x042\x91P\xf6\
+\xa5.>\xe9\xfd\xa2\x84\xa3R#\xf5\x07\x92yE\xc0\
+\x89\x0d\x85\x85\x80\xf9\x84\x03\x0f\xc5\x0c\xed\x04\xf5\x0d\xae\
+K0\x9cB\xad\x8d\x88\xc0\x8bg\xae\x11\xaf\xab\xc7\x8f\
+\xeb~\xa9\xd2~\xa8K \xb8_\x04r8\xc2\xb8A\
+\x83\x80\xfb\x8cA\x84V\x04\x0b.\xf3\x96\xf1\xd1\xf3\xe8\
+\xa2\xa0\xa7\xa4\x9a;\x0f\x10\xa1\x85\xc0\xf7(c\x0f\xf3\
+\xa3y\xcd\x903v\xceTP\xe6\xccE\xfd(\x01\xa0\
+?\xba(\xa6\xd4\x86\xfb\xba\x85\x16\x00\x1b;\xa2Ej\
+\xf3\xe2\xd44\xe6\x0d\xe3&q%/\xd5`\xdda=\
+R\x06\xb6\xf9\x8d\xa1`\xfc\x90A\x87\x19C{@6\
+\xfc\x91!;\xf4P\xf3\xfb)\x86\xac\x1e\xee\x81\x0f6\
+n\x02\x9c\xfc\xe3>H\xed\xd87\x06\xe6\x01\xf3\x8e\x0d\
+\x90\x0d\x9b\xee\x04P\xe4\x10\xcd\x9c9r\x7f\xdc\xf1 \
+#\xee\x01\x5c6p\x02x\x88\x85\xd2F\x91\xf5C\xb5\
+\x90Q\xb3~\xcf<\xdf\x9a]\x0c\x99\xe2O`p\xd8\
+\xd1P\x9c\x87\x98\x181\xf3x|<\x8fXR1\xda\
+\xd7\x10\x8e\xb7\x07\xdc\x11?\xe7\x09\xcb\xa0\xd2\xb6\xaf=\
+\xcaPhz`\xe8\x92)z%\xe0e\x05\x98\x1e\xcf\
+\xed\xc1\xe2(\xfd-\x8a1F\x91\xb2fE\xddG\x02\
+g\xf4\xf9\xa6\xcd\xdc\xef\x0d90\x02c\x80>\xcd^\
+\x1b\xac\x1a^\x17%\xc3!\xbb\xd0\xa0\x00\xc4\x9bs\xdf\
+\xea\xd84o\x9f\x22\x90N\xc9\x94\xc4C\xbd\x14\xe1\xc8\
+T\xb3myg\xcb<S\xe3\xea\xd4\xcf\x8b\x0c\xc5z\
+\xc7~J\xe0@\x99NW\xa7\xa6\x8b\x842\xa2\xedz\
+\x86\xe2\xf9\x13\xc5\x9f\x12\x93~gC,]IL\x82\
+\x93\xd4f\xcf\x9e\x92\x8f\x14Th\xec\x19\xd3\x00X(\
+\x8b\xd5\xe1\x88\xf7\x9b\x18\x8a\xeb=e\xec\xe4\xb1\x93c\
+\xdb\xb8\x98\x09\xa5\xa4\xa1\x99j\x90!\xf6/e0\x0f\
+\xcc\xf6\x85S\xffeg\xb4\x7f1D;#\x89l2\
+?\xf6Hj\xf2.r\xa8uf\xb4\xa0!\x07\x88\xc9\
+X5\xb7\x1ab\x09Klo\xda\x9c\x96\x02\x88\x18\x90\
+h)\xb8\xb8\x9b\x98\x7f\xc3M\x86B\xf4U\x01\x98\xe8\
+\xf8m\xa1Z|k+x\xb5!v\xcfH\x0e\x1b%\
+^\xd2\x04i\xfee(\x1cd=O\xd8\x0d\x1e\x00\x92\
+C\xe3b\x8c\xd7$\xc6P\xbc\x1b\x1f)Db\xcdp\
+\x0f\xe79\xfe\x13\x83\xe6\xc9\xc5\xd2\x14\xf8Ha\xe0\x9b\
+\xe6\xc3ebN\x9d\x95\x03\x0b\xdd}\x86\x5cJ\x12\xd7\
+\xbb\x15\xb3v\x02\x1a\x05\x04\xae\xda\xbd\x0c\xe1\xe7\xcb\x19\
+$\x82\xb8w\x9c\x1f\xb7\xc5v\x87S\xfbG\xfaG\xc2\
+\xf8\x1f::ltX\x5c/\xe3~\x8c\x16\x14Z\x08\
+d\xdc\x87\xef\x1a\xc2\xe7\xdf\xaf\xcc2\xda&\x7f\x92\x03\
+/&\xdb\xf0\x8f\xb4\xef\x04'#1\xc6`^!\x02\
+\xb7\xa35\xaa\x8b\x8e\xd7\xe7\x06S\xfd\x7fK\xc0\xfcY\
+\x143\xbaS\xab\x17\x01O\x02a\xca\xec{)\x8b\x02\
+f.2Yu\x91\xa2\x94\x0eM\x02\xf6\x1d\xda\xa3z\
+\x0d\xb6D_\xdd\xe1\x94C\xe4}\xe2-_|l\x0e\
+\xec\x91\x09\x1ef6\xe4\xf5r\xf8\xa4\xa1\xe8\x96d\xa5\
+\x10'\x89\xa1v\x87\xba\x9e\x5c\x9c\x1d8o\xfbMf\
+^\xcc?\xc4\xe3\xb03\xbc;\xc1\xddc\x7f\x88\xda+\
+\x1a\xe7\xf60C\x0c0mh\x01\xa6\xee[\x86|\x9f\
+lTm\x5c\x9b\xdb\x0c\xb2\xa3^\x8d\x01\xfc\x9db\xfb\
+\xdd\xff\x0b\xeb\xe6\xff\xc5\xf51\x89\xda\xa9\xcdh\xd8\x8b\
+\x93\xda\xbe4N\x86\xef\xa5\xcf\x1b\xbb\x5c\xda3Z\xa7\
+\xe8b\xe2\xeb<\xa2\xbb8\x92r4]\x93\x86@\xb6\
+\xd6a\x98u\xde\xf7}Ae\xa4\x09\xe8A\xb5\xa7\xd4\
+\x08;\x0c\xc7\x141dJ\xa8\xc4\xe4\x83\xb9\x10v\xad\
+\xb4.\xb3\xbec/aga\xffb\x17S\xf3\x8f\x03\
+\x0b#\x93\xfd\x83D\x0b\xe7#\xe6)\x81&g\x22\xe2\
+\x0f\xb1\xdfc\x97\x92(\xc3>\x80\xb1\x89f\x0c\xa50\
+\xd8\xe7\xf8M\x9c'\xf6\x0cG\xaeC\xfb\xbek\x1f\xc0\
+ %1%?\x8e\xc0\xba\xcf;\x1c}\x18\x178\xfa\
+\x9c\x9f\xbe\x07\xe6\xb73E\x09P\xd4\xdar\xfc\xc3\xb1\
+\xc7n\x91\xfd\xef\x81\x9f\xba\x04\x16f\x00\x89\xa9\xda\xa1\
+\x7f!\x95`\xd4%#\xce\x8c\xa3\xc4\x01\xfb\x1e;\x99\
+\xcf\x99$@0\xbcb(\xfe\xae\xa6\xf4cg\xe2_\
+L&6Xk\x18\xb0\xf1b\x0f\xd6\xcc\xe3I\x12\x97\
+\xe3\xb1\xd6em-|W\xc4~\xac];\x91k\xee\
+\xa0^s\xe2\xde'Q\x0bb\xbc\xecg\xb5\xf0\xad]\
+8Z6\xbdW\x12\xa5\xffK\xc5\xc4d\x02\xf1\x1a\xaa\
+\xc6K\x95\xb8\x1b\x8e\x18\x13\x92\x9ak\xfee\x95v\xda\
+\xa3M/\xde\xc7@p\x03\xc8\x941!j\x8a8\x81\
+\x05>\x97.\x078\x22\x9a\xc8Naya\x06\xd1>\
+\x98\x01\xd3\xd7\x9e\xd4\xd4\x0c\xce\xb7v`\xff\xeb\x91\x19\
+\xde\x87\xe3\x99\xcek\xac\x8a\x10q\xbe\xca\xd4\x8c\xb5\xa2\
+\xd0\x93\x11_^\x86\xfb\xf2\x8a\xc4Q\x8b\xbe\xa4\xa1P\
+\x11\xe5A\xa7\xff\xaf2dd\xf8\xfdz\xa1\x92\xcb!\
+\xa0\xed\x94\x1b\xfe,\xc0\xafWm\xe0\xb8\xdf\x04.\xc8\
+\xd8\xc14\xa1\x14\x80\x85\xe0-3\x1c\xd3\x83\xcf|\xa1\
++@\xa6\x0a\xc5\x8cf\xd8\xfe\x13\xe5\x0b\x87\x93L\xb9\
+\xfe\xde\xdb\xd5\xa1\xa5P\xb7\xab\xac#t\xfd$\xd4\x9d\
+:\x03\x9b\x99\x09\xd33\x05\xea\x9a\xa3\x9a\xca\xc3\xdfs\
+\x1e,\xb0\x8c7\xef\xc3\x01eA\x83\x9aL\xbfX\x22\
+\xd3\xfc\x9cR\x1a6,(\xf4|\x1e\x1b\x05\xe3M\x1b\
+K2\x8fh\x0f\xf0w|\x0e\x01\xb0\xbad\x82\xf7\x91\
+1\x81\xaa\x8e\xa3\xc9\xfdc\x83\xc1AG\xa5\x96~\xc2\
+\xea\xb7\xee\xea\xf9\xbb\xa5\xbe\xe1\xd4\xce9\xe5\x5cm\x09\
+=2\xcf\x06\xa9\xdaL\x17?T\xc6\xd6E\xfb`\x5c\
+\xe0\x98\xf3\xfc\xd3\x8e\x10\x87\x1f\xaa2%)8\xfc\xd4\
+\x8c\xa3\xfe/\x87\xcb\x1d\xb4\xa3\x22\xbc=\x1e\x19u\xff\
+=5\xc2:\xe2\x08x\x9fwQ\x0e\x11\xe7\xf2R\x10\
+\x0c\x056\x0c\x98\x06P\xf4\xf9=\x01(6B\xcd\x0b\
+\xd7\x00 \xf0\xc3\xfc\xe4\x1f\xcf'*\xc7\xb4\xf7C4\
+R\x8c\x07\xe6\xf1\xb0\xab\xa1\x08\xe4(\x93\xf4\xff\x09;\
+\x13p]\xc7\xb2\xfd\xaf\xe7y\x97!\x193%dH\
+(3\xf5Q\x88d\xaa\xc8\xf0\x99\x87\x0a\x89\xd4\xa7\x0c\
+Q\x19R\xc8\x98\x22D\x86\x06\x99\xbeJ\xc6\xf0Q\x84\
+\xc8\x9025\x19\x922\xa7\xbdml\xd3~\x9f\xf7\x7f\
+_\xf7s\xfe\xae\xfb^\xd7\xb6\xfe\xed\xeb8\xf6s\xac\
+\xb5\xde\xe1\x19\xee\xe1\x1a\xce\xeb<\xfd\xf9okV\xe6\
+\xbb\x93[\xa1\xab\x8b~1\xf2N\x92\xf5s\xf2\xbf\xe3\
+\xfb\xe7\xd1\x8c\xcc2\x0b\xfe\xfb\x0dR\x9cv\xbb\x9c?\
+i/4\xab\xb8\x1d\x18\x0f 3\x80\x5c\x1b\xe2\xe0\xf0\
+\xaa\xc2\xae\xf5\x06\xee\x0489\xac#;;\x84$\x92\
+a\x9bF\xae\x8d\xd6%\x90kT\x96\xa4\x02@\xe5'\
+\x93\x9b=W\x91\xf4i\x1e\xb6\x0f$\xfbc&IK\
+\x96\x8e'\x9aU\xf7\xc1\x18\x18v\x91\xee\xb4\xb5|\x5c\
+\x9c\xec\x22\xb1K[\xa0w\xa4Y\xe1\x8e\xf0y\xa4q\
+\x8d\x9a\x03r\x8c\xeeh@\x8av\x8eY\xfa\xde\x8b\xcd\
+rE-\xcb}5W\x99\x15D\x83Wh\x04}v\
+r3\x1cS\xadC\xdd\x8f\xba\x1fvi\xdc\xb7G\x99\
+\x95@1\x7f\xeb4\xcd\xd3\xcf+\x91yKE\x9e'\
+\xf5\x10\x10\x00\xce\x9a\xaf\x84\xa8\xf7\x00\x0bR\x0bB\xc3\
+\x1d\xb5\xcd\xa52@\x8f3\x8e\x98 \xd4@\xc3\xdb\x03\
+\xda\xfd\xdb\xfd+\x12>\xd6mZ\xf5\x14p\xcc\xd8\xd4\
+,\xcd\xc3if\xe9|^4+\xac\xfb\xddqfU\
+\xe2\x82\x8a\xf3J}O\xbes)(\xa0\xe8\xce6\xab\
+\x0a;\x96h9\xb5B\xfa\x18\x02 \xdd\xcf\xee\x97f\
+\xe9{N\x1e\x9e2<\xa5\x22\xb7T\x02\x00\xb6l_\
+\x97\x98\xd7\x1fSb\x12\x7fIr\x99\x04\x04\xed<f\
+U\x02\xf3\xa1\xac\xcb\xd3\xef\xd7+\x14\xb2JT\x03r\
+Z\xe7\x84\xa2\xe2\x92[R\x8eI\xf3l\xe9dK\x09\
+\x81c\x10\xfa\x83\x92\xa5\x00j\xf8L\xb2g\xcb\xfcn\
+_2\x93\x9fx\x9dT)*\x99F\x0b\xf7-\xe0\xcf\
+-\x12W)\x80\xfbV!\x05\x1c\xfby\x1fH!\xdf\
+\x08\xb9_F\xf6l\xa8\xcf\xd9\xa3r\xac\xadC\xdfd\
+\xe4V\x1d\xad\x9e{\xe3\x85\xdcj\xe62\xcb\xeb\xed\xf9\
+c\xe7W\x81\xeb\xf4\x9e\xa3\x88\xf1\x92\xa1\xbdV\x91?\
+\xd6\xac\x22\xf1\x93\x0c]~~F\xa2\xbb\xb9Y5^\
+\xb5\x0e\xba\x8a\x06\xcf\xdd\xd8\xcb\xffV\x15\x92H\xc8\xa3\
+v\x22\xc4Is\xbfY%\x8b)\xf2AZ\x22\x1c\x1a\
+\x8d\x9c\xe3\xe9fZo~\xa9\xc0\xfa\x82\xca\xe1Wb\
+\x0fD\x98\x9f\x97z\xbe]NUj/ \xe2\x5c\xc5\
+@\x08E\x7f>\xb4\x9a\xedg\x96U\x1e\x92eD\xc1\
+\xd9\xa3\xea~4757\x9b:\x84_\xd7\xdd\xe9\xbe\
+\xde\x9d\xfe~\xa2Y\x1a\x1f;\x9ae\x95\x8c~>\xcf\
+\x92A\xff\xf6\x9cz2\xb9\xff\xd6\xbe\xb0_\xdfC\xef\
+\xea\x0d\x8b\x88\xad\xff\x8fj={J\x89\x1c\xfcv%\
+\xd4\x5c\xa6\x90\x04\x11\xe4\xac\xe7\x9aU\xfe\x00\xfe\xb1\xfc\
+Z\x90\x18\xbe\xbf\x92\xb8\xe1\xf3A\x0cP\xb1f\x7f\x04\
+\x91\x03\xe2\x89\xd6dZ\x0aY\x87)t\xea<]\xbe\
+T\x1c8.\xd7x\x85Y\xe1\xaa\xf0\xf1\x0e\xe7\x03r\
+\x82\xc4O\xa8\xf8\x90@\x10\xf2\xceY\xfeE6\xec\x05\
+\x01\xd6I\xe2(\x12{\xc8\xf0\xe1/\x10PR\xc0\xc1\
+og\x1c\xe27\xc8O\xf6\x82.\xfe)\x054\xfc>\
+\xf9y\x9e\xc0\x82{\x00\xff\x10\x7f/\x92Y\xf2w\x0a\
+\x97 \x13\xb9\x1e\xfcF\x0a\x0f\xb1\xd5\x9b\x9f92?\
+\xf49\x8c\xf7\x99\x02~\xd6O\xfc)\x0a\x1a\xc4\xb3 \
+o\x89\xebb\xa5=\x22\xc2#2<\x90\xb4\xcf\x94\x10\
+`=+\x85\xe4\x89\xf1\x22\xdf\xf7\x9fz\xf8c\x22 \
+\x92\xd8\xf39\xc4\xb3|\x1e\xe3\x9b\x04\x80\x93\xa9\x1c\x9f\
+\xcc\xd8r\xff\x99\xec\xf1B\xea\x02\xa41\x87)\x0b\x95\
+\xdeC\xef\x1dU%\x18\x99\x89,\x9b\xb5\xa9~\xbfz\
+\xd5\xbbmy\xaeS\xab\x00\x0a\x15\x00\xa0\xad\xb5\xce\xe2\
+\xdc\xaa\xbc/Z\xf58j`\xf9\xc6\x18\xf5\xe6G\xa1\
+7\x85\x81D\xe0\xc3\x03 C\xc5\x83\xa7G\x99\xc0)\
+\xb2j\xeb\x86\x8d\xb4\xd0\xa7\xcdv\x22+?\x0f\xae\xf4\
+\xc2OT\x0f\xe0A\xbd:1\x11\xe0\x9c\x01T\x82\x0b\
+\xc7\xc0DH\xc7\x8b\x81\xb4\xa2\x0c\xb0\x89r\x82\x0cL\
+\xfe\x8e|]\xec\xc9\x8f\xad\x06\xfc\x1c3j\x9cwl\
+\x1d(\x81x\xff{\xce\x93\xc0#B\xd6I\x1cD=\
+\xca8\xc0\xf9\xb9\x04\xbe\xfd\xc6\xfa\xa0\x10!o\xd5\xc2\
+\x01\xa7BT\x05`B\xf1\xfc\xd9\x98yN|.\x13\
+&.\x84s\xe8X\xe4\x1c'rF\xc4\xc4\x0b\xf7\x9d\
+\xcfg|E\x1dS\xde\xc7F\x11\x03a\xee'\x5c\x07\
+\xc8i\x22wC\xcb\x04\xec\xd2 BH\xa8\x80t\xd0\
+u S\xe5\x95\x12 \xfcp\x17\x908`\xbcF\xf9\
+\x10\x16jZ>h\xf5\x00A\x00d\x8e\x0c0\xac\xea\
+\xb0\xd2\xabW\x9e\xde:6>\x7f\xbe\x8c\x0fX\x97\xb5\
+\xc1\xba\xc3\xce\xc2\x0f\x99\x16\xa4B\xb0\xdb\x8b\xd5\xd8\xc9\
+\xe3 \xf5Sf\xd9\xd9\xfea\xe3\x87,L\x8e\x10$\
+>\x04\xd8\xd6\xe9k\xbd\xbe\xfe\xdc\xb6\xee\x11,\xce&\
+\xac\xcao\xae$\xbfT*\xff\xae.!\xc7\x0d\x07\x1c\
+H;\x89\x04O,\x88\x03\xc0\x03\x0cA{\xdd\xe1\x17\
+b\xc2\x03\x1b\x91D9w\x02\x15S\xa0\xe1\xac\x07\x8c\
+g\x12\x8b\xb0\xfe^dV \xf9.\xeb(\xb96\xce\
+\xd3\x03\xf6\xd5\xd4\xb3\x08\xb9\x9d\x9e\xab\xf7b>cV\
+%\x0aIP \xefC\x82J\x8e\x9d; J\x08y\
+\xcf\xa7\xd8\xb8\xdb\xa9f\xe9\xf47\x1cl4H\xfb\xcf\
+\xe0\x80\xc1\x81\x83\x03s\x8f\xf0\x19\xd6#\x9c\x13.w\
+d\xb2\xb6\xf5\x8c\xac\xad\xbd\xc6,\xfd~\xaaYAx\
+\xb8\xbc\xe3\xb7\xfaJr\xeeIO\xe7\xdd\xde\x9e\xec\xb7\
+\xe9x\xabY\xfa\xfd\x13fU\xcf0\x08# \xbe \
+\x08H\x141\xaf\xa8\x10\xf0\x9c\xaeIvu\xd5\xfa\x81\
+#\x06\xa9\x94UD\xd6\xabHHqtV\xcbJ\xde\
+=\xa9\xe4P\xea*\x8b\xeb{\x1e-\xac\xd4y\x9cM\
+\xaf\xc6\x0f=\xd4S\xfb^\xfc\xe6h\xb3R\x81r\x96\
+i\x91l9\xc9\x93*\xaa\x9e8c\xbd\xa7%\xe8j\
+\xb1`\xc3\x0a.\xb9\xbd\xcc\xf2\xbfMi\x85\xf0\xfb\xa0\
+\x16\x19\xde\xefl\xe7pD\x1c\x92\xec\xd0Jv\xd2\xdc\
+\xc2?I\x8eka\xe9\xd2o\x5c\xd6\xff\xe6WfE\
+\x0d\x01y+\xd43\x5c-A\xac\xf2\x83#\xcc\xd2\xf3\
+\xfci\xfb\x93\xf6'\xf9\xb9\xfe\xd6\x9e/-I\xbc\x7f\
+x\xaeY\xfa\x9co\xf4\x15|\xc8!\x87\xf3\x99U\xeb\
+\xb5\xd6W\xa0\xd93^7K\xaf\xdb\xc0,\x07\xbc\xcf\
+Z\xc0;c\x17\xb3\x9c(x~\xf8|\xc5\xce/\xf2\
+B\xc8\xf9r\x02\xf6\xbeBr\xd9-m\x96\xde\xb7\x5c\
+\xb2\xe40\x0f\x176K\xbf?\xc2,\x1d/2+$\
+\x8c@\xb5\xbb\x85\xcdJ\x8fw\x0ax{28Z\xf2\
+\xa4\xb2\xd2~\xd7\xac q\x084QU\x18leV\
+A\xd1\xd73+\xe4\x9d\x04\xce\xed(\xd9\x98\xe6\xc5\xf7\
+\x04]\xde\xb3$\xc0\x86G\x99\x15\xf2\xc0\x19G\x99\xa5\
+\xf7e\xb6\xd2t\xdc\xc3L\x5c\x0eoV\xcb\xc9\xb6U\
+\x0f5\xb2\xb1Z\x97\xfcg\xf3\xae\xe6.\xaa\x17.\xeb\
+(.\x16G\xacX%t\x86Z\x03\x8e\xa8\x12\xc7\x96\
+\xe0;\x22\xb7>$\xab\x12\x94\x0aHs\xfd\x7f_\x91\
+\x88U\xac\xeb\xb4`x+\x91*\xd7\x04v\xb4 \x8c\
+\xa6\x9b\x95\x84\x82\xf7\xf0s^\xc8B\xaa0\xe6\xf2s\
+p\xae(@\xf5\xc2\x8bd.\x1d\xd9B@\x0a\xb7\x0c\
+\x81\x1e~\xd4[\xb2\x00_\xe1\xea!@\xa5U\xed\x00\
+\xa9\x80\x90p!\x907\xce\x86\x9d\x0aYcV\x95\xd8\
+\xbc$\xb2s\xc3\x9e!S.Kvy\xf1\xab3\x22\
+b\xa1*\xf1\xb1S\x1aW;U\x89\x02\xad/\xed\x0d\
+f\x19\x89\x97\xb96\x9a\xd5\x9b5\x9aJU\x04\xb2L\
+\x0a=\xb4,\xa4\xdd\x22\xc7\x19\xcd\xbc\xcd<\xcd<U\
+\xeb\x10\xe4\xc0\x92\xc5t.\x06\x100\xa8=,g\x96\
+\x8es\x9b\x95D\x00j\x14\x1e8G]\xf7=\xb3\x15\
+\x99>\x10\x1b\xf8W\xf8\x85T\xa6I\xb0\xa0\xa6\x02\xe9\
+\x1f\x95v\xc8F!\xdd\xd5\xf3\xf5\x849\x15q%\x96\
+\xf2\xdd\xb6\x04\xeb\x0f\xd2j\xfe\x83J]\x81\x842\x08\
+1\x0a\xad\x90Y\x92\x00\xa0\xe7\x9d\x16K!T\x9c\xd3\
+HH\x9fL~{r%\x9b,\xff\xc1[K\xaf\xcc\
+V>\x0fv}\xf6;\xe22\xb8\xae\xa6\x9aU-\xdc\
+\xf8\xcb\xb1\x22=\x1e8\xce\x22\xd7\x19qCP\x9bs\
+\xd5\xb9y4\x1e\x84|\x9dTu\x8d\xef\x89\x057\xfc\
+\x1e\xfcW^\x8f\x9f\x1e[P)0\x13\x07\x96\xd6\xda\
+>1\xc4\xcf\xcf\xe8\xf5EU\xad\xf7\x0f\x89;b\x22\
+ V\xd8\xe31&\x0c\xe2\x91\xcf\x8b-\xe5\x81\xf5\xdf\
+\x91!\xc49Q\x15 \xca\xca\xf3\x1cbk\x80\xbew\
+\xbc\xfdk\xb2\x07\xab\xdeU\xcbD\x9d^U\xc0YP\
+mz,ZX\xfe\xb3N\xe7F\xd5\x82\x0fT\xfc\xac\
+\xcc\xdf\x5c\xc8;`\xff|>\xd7\xcc\x0b\x0b\xa8\xc8B\
+\xdca\xe0\x01w\xb9\xf6\xda/D\x17*C\xb4tE\
+\xd6$H\x88\xebV\xcb!eAN\x83\xac'E\xa3\
+b\x0f\xb4$\x90\xaeyF\x0b\x07\x8d@\x15\x08(\xef\
+\x83d\x8d\x0c\xd9\xaa\x1a\xa0\xf3\x85\x1ez\x02'&\x06\
+\x03\x8d\xc0\x9b\xc0\x86\x07KE\x7f\xb2^\x8e\x17g\x1a\
+h\xfd@*,\x95SkR\xc6\x99\xd4\x02\xc8H\x93\
+q\x02\xa1\xc0\xe7G\x92\x08\x8e1 \x0f=\xee$V\
+F\x7f\x91\x9a\xc0\xda\xaa\xb8\xc7\x05Td\x1a\x9eX!\
+\x03\xa7\x8d\xc1I\xef\xd6\x11\x99\xde?5\xf1\x1e\xd1}\
+\x9cC\x90\xf2\xfb\xfb\xde`\xef\xf5fA\x89\x13'N\
+\xa0\x98I#\xc1\x81#\x0c4\x8a\xe7&HX3\x87\
+z\x9dh\x9d`\x02\xc5V\x13\xc6;\x130\x9eO\x9c\
+\xc0LL*\xf0a!\xf4D\x0c\xe3\x84\x0c+\x81\xb6\
+\xa0\xd4N\x02C\xe6t22C\xc6\x1d\x0bj\x84\x14\
+E\x19\x11\xfe^8\x22\xfa\xfb\xc4\xf9-<\xb15\xc5\
+\xef\x1f\x0b/PV\x02\x0e6\x0e\xc8e\xa4\x07L \
+\xef\x0b#\xf3\x05\xf9.\xcd?\xc8\xba\xa8\x04\xd3\xdb\xeb\
+\xb2~\x22\x93B.\xca\x03R*\xc2\xb0\xd8#\xd7\xc3\
+\xba\xa3\xcc\xbbC\x14E\x06\xe5\xac\xfa\xdco\x02~*\
+\xff|\x8f\xe9\xa0?^*9l\xf8\x04\xea\x04\x94\xf4\
+\xf4\x03\xfd\xef\x0e4K\xc7\xcf\x9a\x95\xfb\xde\xfc\xd8\xac\
+\xe8\xe1z\xc2\x83\xfb\xcc<\xa6\xb2\x8b\xc3\xca8\xe7\xf9\
+\x11\x98\xefhV\xa0}N\xba\x86^;\x09B\xd6C\
+!\x03\x1c\xaa:\xa3_\x07\x1cz+\xce\x04\x02T'\
+\x09\xfcl\xdf\xab\xe8\x1b9\xf2ZT<\xb4^C\xf2\
+\x87\x9c\x1c\x10\xef\xc1c\x83\x7f\x0c\xd2|\x1f,3x\
+\xe7\xe0\x9d\x19\x22\xff\xfd\xe6\xfb\xa5\xf2M\x0bR{\x97\
+Y5\xde\xe8\x89gc?\xa8\xaf\x0c\xe6\xe7\xfd\xb6R\
+\xf1\xf0D\x0d\x90z]7l\xf5\x8e\xf4PO\xabs\
+\x04\x08*\xeb\xcf{+\xb3\x02)\xa7\xa7>\x93n\x9d\
+T\x12\x12\xed&f\x22\xfb\xab\x1d)H\xfd\xc4\xa1@\
+\xcfr\xfbm\xb3\xc2:N\xc2rtB\xb2\x13+u\
+\x07\xe6\xcd\xadr\xd4\xa8h\x08\xea\xe8Po*0J\
+\xe0\x00\xd1f? 1\x90\xc2\xe2\x9c@ \x01b\x1c\
+\xd9\x99%[\x95M\x12\x1d\xec\xfb\xed\xd3f\xe9\xf8\x82\
+Y\xc5\xd1\x012\xc7\x02\x9a\x07K\x82\x89\x84\x1b\xfa\xde\
+\x90\x9ee\xf6q#;\xdb+\xd9\xa7E\xea\x97\xfc\x03\
+S\x95\xb7\x8ac\xb7Y\xb2\xcdE\x1ah\x15\xf1s\x93\
+}\xbf\xa8gd.\x81\x7f\x94\xc0w\xb0\xd3`\xe7\x81\
+\xad\x87\x9f\xce6\xd6\xbclVZ\x00\x1d\x09\xa6\xf5\x00\
+R\xbe\xe1\xb2f\xa55\xa2;\xd3\xac\xc8\xe4yo\xef\
+\x1d\xdd\x9d\xdd\x9d\xb9\xe2\x9f\xac\xaa\x1c\xdflV\x90\x81\
+\xc8\xfc\xb9\x1f\x03\x82\x0a\x87\xdb\x18]n,\x09\x93\xee\
+u\xb3\x8c\x00HV\x05\x9a\x82\xf6\xe7\xe1\xd3d\xce\x85\
+\xac\x060\x5c\xc9,\xfd\xbc\x88\x99\xc6\xc7\x09% q\
+rA!}\xe00q\xb2\xbfe\xd4S\xfe\x9c\x99X\
+\xf1\xd7\xaa\xa0\xd4\xdc\x1f\xfc\x1d\xd4$v2K\xf7y\
+\xe3d\x96 \xb9\xc5,\x1d/5K\x9fw\x96Yz\
+\xdd*f\xe9\xb8\xa3Yz\xfd%f%\x01\xd4^\x9d\
+\xec\x9a\x0a\xa9F`\xa2\x841z\xef\xe3\xc7\x9aU\xeb\
+\x08\xfb,diBbd\xe8\xf3\xc9\x92[;L\xaf\
+?\xbc\xe8\xba\xc3-3\xda;\xd9^\xda\x97_\xa8*\
+\xae\xbf\xeee\xe12\xe3\xc0\x87\x94\x109\xb4\xb0\xfc{\
+]\x82@\xcb\x1a\xb2\x0eT\xe2\xeb#\xda?g\xd1\xf5\
+,YZ\xc9 ;#\x91\xe6\x89_!W=1\xcc\
+>\xa4\xe7\x05\x09\xe6L\xbd\xc9\xd3\xe5\xff-\xa6u\x8f\
+\xf1\x85j\x8b\xf6iO(\x88$\xae\xdd8\xd9F\x0a\
+\xfcnQ\x0f\xfe\xa1\x15\xb0\xf1\xbed\xf7\x97\xc4\xbe#\
+\x88\xe0\x10\xb0\xf0\xf0\xf6\xea\xbcQ\x97R@\xda-d\
+\x96\xbe\xe7\x1bf\x19\xd1v\xa0\xb5\xac\xb5+\x98\xe5\x84\
+A\xdfJ\x80n=\x95\xd8\xadU\xc9\xa75\xc2\xd6\xf9\
+\x0d*h\xb8\x90+\xa3m\xcd*\xee/\xce\x03\xae\x03\
+\xd4\x11T\x00\xe9\xfelV\xad\x93B`\xb9j\x10\x10\
+t\xcd\x1b\xff>Z\xa5\x80\xea\xe3\x7f\x81\x8c\xa5\x05E\
+\xad^\xee\xcf\x91\xf0\xc6\x0f'\x91\x0c\x07\x84\x10\x09\x04\
+\x92\xdd\xaef\x15\x07\x93\x15H?\x5c!\xae\x02\xb9 \
+\x9cE\x8e\xb4\xa3\xa5\x8f\x00\x16Y_\xc6\xb1\x90\x86\x8e\
+xF\x0e\xc4q\x00\x00 \x00IDAT\x05Y'\
+\xff\xc7\xd5+\xf0O\xf9<\x10\x9a\x81}\xdf\xfd\x82\x88\
+@\xe5\x18I\xf1b\xa1-\x22^\xa3|]@\xd4\xba\
+\x9c.\x08\xc4\xc8\xb2\x1f\x11\xd3\xfc=\xb2\xf5\xf3\xbd\x14\
+\x18\xf1Kc\x81$p\x5c9B\x84\xca?q\xdb3\
+\x81\xfd\x1fdA\x84\xfe\xff\xa7\xc0\x1f\xbf\x0d\xa46-\
+\x0a1\xa1\x10[\xc5\xff\x13\x89_<\xc6D\x00~u\
+\xeb\x1ct}b$\xc43\xe3@\x1a!\x07\xf3J\x08\
+\x81#7\x94@\x02\xf6T]\x90\xf7\x14*\xe3J\x06\
+\xd2Y\xb0w\xcf\xca\xecc\xcd\xe5\xc9\xaeH\xe7s\x82\
+Y\xa5\xb3\x1a\x1dR\x02mA\xb8\x5c\xbe\xee \xb3\xb2\
+A8Y\x15\x0e(\x13\x0b\x87\x9f\xf3'\x10\xe2\x81\xc4\
+\x0c\x12\xbd\xec\xdc zP\xe8\x85&\xf0\x092q\x95\
+.k\xff`\xe4\x98y&\x8b\x09\x0fR\xe2\xf9\x10\x80\
+\xbf\xae\xefg\xa2\x95@vB\xc6\x08\x16\xe6\xe6\xbfT\
+\x19\x8e\x90\x93\xc9X-#\x04\x05\x07\x93\x1em*\xcd\
+\x5c\x1f=\xea\xb0\xf5\x12\xb8\x93\x11c@r\xfe\xdc/\
+ UL\x94\x08u\xe1\xf9\xf29$\x02\x08p\xfe\xa6\
+\x9f\x09|\xe7V \xcb\xe7\xd3[\xae\xf1\xe6\xaa\x051\
+\x13\x17'T\xfc{$md\xa2\xb1\xf1\xb2\xd1<\xad\
+J\xf9\x06\xe2@\xe0~\xb3 \x11 3\x0e\xd88\x98\
+\xa0\x91\xf4#\x90{\xa0W\xea\x95f\xde\xcfxb\xfc\
+\x93`\x02\xaaO HOv\x80\xe8\xbbZ\x06\xb20\
+\xf4f3\x0e!s$\xb1\x113\xac$&\xf8\x99\xeb\
+\xe5\xb9\xb1p\xe1\xe0r^$B\x08\xd0\xb8\xcf\xac\x13\
+b\x8d\xf7\xeb\x07\xeaME\x9e\xf1\xc1\x86H\x82I:\
+\xd9\x5cG;O;o\x86\xb8J&\xc7\xc9\xd9\x1e\xe9\
+{~\xe1F\xa0\x82\xe8P/\x02c\xb1\xbf\xbb\x1c\x0f\
+,\xdd\xc8\xf7\xd1S\xacy\xe5l\xe0\x04P \x05T\
+i\xf6\x0dQ\x89\x12\x02\x07\x12\xa9\x90uA\xc6G\x02\
+\xc0+\xd5\xb06\x03Ad^p\x9fU\x19rV|\
+\xe9<\xbb\xe3\xc2\xf5\xf1\x0f\x0e\x0f*\xb6\xe8\x1c\xd33\
+\xfd}\x05\xd8\x0aXI\xa08\xb7\x02\xac\xcd\x22\xe3B\
+\x1e\xd1\xc7+\xac\xc7p)\x10\x08\xca1\xc9\xadc\xc6\
+r\xbf\xa8Y\xae\x0c~\xaa\xfdT:~\xc0,\xed\xc3\
+\xb7\x0en\x1b\xdc&5\x917e\x99\xb9\x1f\x98\xcc\x5c\
+\xba\xab\x0f\xe6\xfbJ\x8f\x1e\xf3S\x89\x09*j\x04b\
+\xed\x9ef%1\x94\xc9\xd4\x92\x03\xd4\xde\x99\xec\x8e\x8a\
+T-\xca\xf8\xc0\xd1\xa0\xfbD\xc5\xd4+\xed\xaa\x8c8\
+\xb9\x97t\xad\xdb\xa3\xcd\xca\xf3\xf2q\x01W\xa8*\xa0\
+\xc8\xfa\xf9\x86\x8f\x1c\xa6\xd6\x01S\xb76}\xeb\xe6u\
+3\xc9\x96\xa6\xf9\xdf~:\xd9^\xa5R\x9e\xa1\xda\xc9\
+\x11n\x1eN\xf6H\xd1\xad\xb6\xc6<k\xcd\x1bm`\
+VH\xa6\xbc\xf5\x04\xe8&\x8e0\x5c\x12\x0a\x0cF\xa7\
+\x9aU\x0e\xb0T\x02\x98\xf7@\xde\x9d\x05\xfe\xab\x92_\
+\x13\x07\x8e\xb7\xd4\xa0\x1a\xc0\xb8\x80\xed\xda\xd4\x13\xfe\xbb\
+\x04\xb8\xd6qm=\xd7\xe8\x91{\xa2\xc9\x123\xb7\x15\
+\xa4\x92\x07\xaa\xffN\xf6\x5c\x05)U\x22!\xb3\xcd\xef\
+/\xd2\xc0\xb4\xbe\x0c\xa6\x98eR\xb6\xbeud\xb1\xde\
+\xd1\xedn\xebU\x00\x90\xcf\x9b\xf1\xdc\x8c\x7f\xcf\xf8w\
+N(\xf6\xc8\x85\xeb\xa5~\xf1\xb9l\xbe.9\x94\xfa\
+\xfdf\xe9\xfd\xc7\xf4\x81\xfe\xf0V\xb3R\xc1\x1c\xdbX\
+\xf3\x0bY6\xe4\xba\xac\xce{^\x99\xf7\xb9\x95\xe3\x8a\
+*\x01`\xe9\xa7\xf5\xd3\xf1|A\xd4_7\xcb\xa4\x81\
+7u7e\xa4@f\xc1\xb7\xcet\xebM\xef\xfe\xd0\
+\x93\x9b\x0dw5K\xd7\xb1\x83Y\x09\x08\x9cK\x04\x07\
+Zd\x90\x1epARv\xa9\xa0\xeb\xfa{\xf7N\xb3\
+\xf4\xb6\xf3\xcd4\x8e,\xe1\xf0T\xb2'\xab\x02\x90q\
+\x22\xbc&\xee\x86\xf9\x0b9\xb3\x8f+\x05F\x99C\xc0\
+\xce\xeb\xa7f\x95Z\x83Z\x0a|\xff\x85d\x95\xc43\
+l\xe6\xa8\xf5\xcc\xc8)\xc7\xb1\xf6f\xb3\xf4|\xe74\
+\xab\xe4Y\xe9m\xb7\xca\xf2\xc7K\xef<\xad7\xb0\xa8\
+\xe7\xf4\xd8\xad\x99D-\xab\x1f\xe4\xc4S\xa5\xea\x93\x13\
+\xab_\xd5x\x9f\xa3ZG\x17\xc9]\xe0e\x1c\x8c'\
+\x9b\xa5\xfa\xd9\xe4+?ZU\x8c\xd5J1\xf6\xe5d\
+_\xaa\xd6O!Z\xe8\x11G\x1e\x91\x1e|\xfcRG\
+\x1eh>\xba\x9c/\x8e>\xfb\xed\x0c\xf9\x87\xb3\x07D\
+bt\xf8\xb9\xafr\xecM\x04\xd9\xe4\x1b\xdb\xdf\x9b\x15\
+\x04\x182\xb8$~\xba+\xcd\xaaJ0\x9c?V\x08\
+\x99\xab\xf8G\x14^\x5c\x9df~\xb3\xf4\xf7\x03\xb3\x95\
+\xb8`\xfdlc\xcd\xbf\xc4a\xc1\xfe\xad\xd6\xbc\xee`\
+\xb3\x0a\xf1\x8a\xdfC\xc0\x85\xdfC\x80\xaaD\x94\x93\xd9\
+\xfe\x97Y\xf6\x9b\xb2\xdc\xb3\x8f;\xf9#&\x8ei\xf2\
+\x98\xf8{\xde+\x8f\xfc\xa8\xe2\x07\x12\xabN\xb6\x8c\x9f\
+\x85:\x0e\x81\x1d\xadu\xf8A\xb4\x1aB\xe2L\x22V\
+\x09\xc8X`I\xbbu\xe6*\x1a\xfdIH\x06\x15.\
+@*\xf9~\xfd\xe5l\x05a\xc9\xfe\x07\xd4\x1e\x04(\
+?\x13\xc0q\xdf@&\x90\x00`\xdfc|\xe0W\x92\
+\xe0\xc3\xef\xa6\xf0\x85\x7f:\x89L\xb4\xb7^\xf3}\xec\
+\xa7$$\x90\x93V\x8b\xad#Y\x88\xe7x}\x84\xbe\
+\xc7\x1e\xf9X\xa9\xe7\xef\x93\xc9\xf9\xe1gG2\xf7\xd8\
+j\xcb}\x88\x85\xcd\xd8#?5\xc4S\xcf\x05Yv\
+\xce\x8b#\xbf\x8fq\x0f\xd73Y\x5c\x12\x7f\x1f\x13\x06\
+\xbc.\x90\xf5M*\xf7\x17\x03\xff\x88\xac\x8e\x89\x00\x12\
+\x22\xf2\xf3\xc7\xb3\xdb\xbeX\x91U\xf2\x1b\xbeP\xee\xc2\
+.\xd0Z[\x90g\xad&\x8c\xe4}\x9c\x8cHz\xd9\
+\x90\xff\xe4\x0e\xc5sJf6'\x00.\xafn\x98*\
+\x99\xa3\xb5\x92\xad)h\xd2\xe5\x85\x8c#;`\xfbV\
+\x0e\x0b$V\x90h\xa9\x12\xe3=:\xe8\x82?m\x96\
+\x03\xf1\x0c\xed\xf7\x0a&7\xe5\x15-l\x1f\xec3\x90\
+.\xff\xa0\x0a\x99\xf7L]d\xdd\x98\xb9\xa2\xd6\xb3\xa8\
+\xb2 0P\x99x\x90m\xd1K\x0f\x09M\x99\xa8}\
+\x80\xc9\xc0\xe1\xc1\xd3c\xfeJ\xc8l\xbd\xe8\x19\xb4\xa8\
+\xff\xf8\xc6l\x92\xf1\x01\x8f\x5c\xc5`\x229\x9e\xc8\x94\
+|\x22\xb3`P9& \xd4\xd1[.\xe0\x0c\xa0\x22\
+\xcc\x00\x82\x9c\x8e\xc0\x1c\x07\xf1\xc5\xc0\x22O\x80M\xa2\
+\x80@\x16\xd6|\x12\x0e,\x80o\xcb\xe0\x1b[\xa8\xa6\
+\xe4q\xf9|h\xb9\x98\x1e\x16\x02\xbe\x07$\x04\x9fG\
+\xe2\x85\xc0J\xa4$\xa3\xbb\xcc*\xdd{&2\xf7\x93\
+\x05\xf3\xb1\x00\x09\x22\x11%h\xaa\xb3\xaf\x22\x9b\x18[\
+>\x22I\xc7d\xad\x0f\xc3\x90\x08\x8al\xa0\xfc\xccs\
+d\x1c\xd1\xc3N\x0f$-\x01 18\x1f\xa0\x91\x22\
+\x13\xf2DYlE\x00!\xc1\x06\x0c\xdb\xbf\x1cr\x97\
+\xa3CnO\xd0:?O2\xaa\x22\xc3B\xcf\xd73\
+\xd6\xaa\x04:9\x13\xeb\x88\xe6\xbb\xcf\x1f\x1c\x99\xb9\xcd\
+J%r\xb4\xcc\xe8\x1d\xa3e\xaa\x1ep\xfd\xdd\x9f\x0f\
+\x81\xbbZ\x00\x80\xc2\xfa\xf3e\x9c\x93\x10\x14w\x85\xeb\
+\x8b\xab\x12\xe0H\x02\x1c'\xc6\x01rfp\x89h\xbd\
+\xf0\x0a\x87\x12\x0b\xdd\xd5fE\x05\x80\x04\x9bC\xab\x81\
+h\xab\xe7\xcf!\xf8\xb4p@\xda\xb4\xa1Y\xd5\xfb\x07\
+4\x10G\x89\x8c5\x9c\x07\xaa\xfc\xe18Y\x98\x9d+\
+\xd9J\x88\xc0E\xd0\xeemV\xc6?\x8e\xab\x07\xc4\xf4\
+\xf6\x8b\xeb\xc5I\x13!\x0f\x05\x91!\x07\x1a\x04D{\
+A\xff\x5c\x06\x0f\x0e\x1e\x1a\x98\x1e\xf8/\x92\xa5\xfb\xd0\
+\xbe\xa3]\xbaM\xf3cp\xe7\xe0\x8e\xc1\x9d\xf9\xb9\xcf\
+;\xa1w\xcf\x80\x9b\xb7\xa8\xb2\xf7\x9d\xaa\x03\x09\x92E\
+\x12%T\xac\xe4\xc0\x0ev3K\x9f\xff\xc1d\x06\x89\
+\xfe\x96Y5.\xc4\xf5@\xe2\xc6\x91\x1c\x90\xbd\xe5\x7f\
+\x15g\x00\x09\x0fA\x90\xfd\xf5\xdaO\x9a_\x9bU\x9c\
+\x0e\x90\xc5\xae\x9d\xec\xfdE\xcd\x81\xf1\xd3\xae\x9bl\x9d\
+\xaa\x12\x81^1j\x07\xba\x0e\xe4\xdbr\x18\x7fHa\
+o\x1f\xdc\x9b\xec\xber~<W\x02'\xf4\xc3\x81\xba\
+\xe7\xc0d\xcb\x0a\xe2*\xae\x09*\xbf\xed\x87{v\xfb\
+\xee\xc7\xbd\x8c_\xbb\x91Y\x0e\x88\xfa\xf5\x9e\x8a\xdb\x0f\
+{\xe8\xb2s\xfd\xccb\x96\x8e`\xc5\x85\xd0\x81\x9d{\
+\xb8\x9fY\xe5`[:pmAR\xbf]A<-\
+`\xdbX=\xd9w\xab\x82\x9c\x02\x84\xee\xff\x92]\x9b\
+\x8e\x7f\xe9\xc9\xe1\xa8p\x02u\x1f\xfc\xaf\x99\x02\xcb\x14\
+0\xb5\x7f3K\x9f\xb7\xb2Y\x95(\x129\x22\x81\x8d\
+'j\x81v\xdf*6p\xb8\x1b\xe0\x1ex\xb7d\xc3\
+\x1eS\x0f(\xeaCp\x17\xc0\xadt\x87Y\xd5K+\
+(\xb6\x07r\xaa8fY\xcawV,\xef\xcf\x9bU\
+Pr\xbd\xbe\xdb\xbe\xdb\xa13\xc8\xff\x92f\x85\x0ct\
+\xf8K\xb3\xf4\xf3\xedf\xe9x\xb4Y\xda\xf6\xef2\xab\
+d\xdf O\xa6ED\x88\x8b\xae\xed\x11\x04\xc3\x8d\xcc\
+\xa4\x16py\x91\xc9\xe4zf\xfc<\xd9%\x95\xfc\xe8\
+\xa9\xc9N\xab\x1cy}O\xb7\xbfY\x95\x98\xd1:\x01\
+\xa9!*\x07N\xdeH\x22\x95qh\x09\x90\x0d\xb4_\
+-^!\xb9@z\x08a4|K\xb2\xf9*\xb9\xc7\
+\x9f\xf4\xad\x1e\x1e\xe0Z\x1a\xf8\x03e>\x8d\x966\x13\
+g\xc6\xc5J\xc8\xec^\xfc\xc3\xee\x063\xf9\x9b\xcf\x88\
+\xf3c\xb1\xaa\xb5E${NB\x0b\xb2\xcb\x12[\xb3\
+\x89\x93\xe2\xdd\xe2.\xb9\xb3T\x9e\x9d\xd4\xf2M\xc9\xe6\
+P\xa2m\xf7J\xc7\x1d\xe4\x9b\x0ak\xa8\xe4d.\x85\
+\x83J\xaf\xbd\xcf+%\x8e]]\x85}\xf9\x05Uf\
+\xa7j\x1f'0\x03\xfaM\x85X\x89>\xdf_\xe5\x87\
+{+\x98\x12\xbb\xed[\xcd\xca<\x01q\xd7\xcdg\x96\
+~\xff\x193\xc9\xb8^_\xb1\xa7\xbf.2P\x02S\
+%pH\x18z\xa1\x88@\x95D\xbf\xf6\xa3\xd1/{\
+\xb9\xcb\xb13{n\x19\xe6\xa7\xab\xf4\x80\x04\xc6\x0f@\
+\xf7]\xadj\xde\x82\x88<\x1d\xd0\xfa\xd8\xc3.\x84\x82\
+\xcb\xb8r\x7f(,\x11\xa8\xe3\xe7i\x7f\x80;\xc9\x91\
+\x00p\xa0\x14r\xc2\x9e,X\x89bG\xe0\xe1wR\
+A\xc7\xaf&\x1e\x90\x9f\xce~\xe1\x05K\x91\xf7\x8e\xfe\
+\xc7\xac\xb4\xea\xb9\x9c(~\x06\xdcET\xc6\xf1\x7f\xa3\
+j\x18\xd7\x83\xffE\x01\x92\x96AdPI\x5c@\xb2\
+\x1e\xb9\xd6\xb8\x9f\xf8\xad\x04\xf0\xbc.\xf6\xacG\xbf\x9c\
+\xc07B\xec\xf1\xff\xf1+\xe3\xe7N\x86,\x88\x81t\
+\x0c\x88y\x1d\xbf\x8f\xaa]\xb1`\x19e\xf5J \x0d\
+\x22a\x22\x12\x9a\xd7\xd3\x82\x8e\xcc'\xf3\x90\xf3\x8f\xc7\
+p=\xdeJAa&V\xfc\x09\xfc\xb9^\xfe\x1eY\
+\xfb\xa3l`L\x04L\x96\x10\x88-\xdd<_\x1d\xc7\
+s\xa5\xfb\x9d\x85\xcc/\xb3\xdd>T\xf5\xea\x19k\xf2\
+\xecU\x80 U\x00\x97\x17\x81\x04N\x0f\x0a\xe8a\xd6\
+\xb95(\xe1\xbf\x93=Wz\xb1\xd8\xe8\xfc\x02\xe7\xc8\
+`\xef\xa2B H\x0d\x8et\xbe-S\x0a\xc4\xcf\xd4\
+]\x8d\x9c\x86\x8cc\xce\x07\xfew\xb5\x80\x01\x91V\xa6\
+\x9f\x05\xd2\x11\x098\xda\xdb\xf4\x1b\x98WL\xe7\xd1B\
+BO\xcc\xbfT1\x7f\xa4'M\xb1\xce\xcc\xac\xe7\x8c\
+\xac\x12\x0f\x86\x89\xc8D\xe0\xc6\x8b\x0b`tO/\xe7\
+\xd5l\xa2\xc0\x82\x85\xb2\xb01Ndi,=\xe4\x13\
+!\xf9\xb3\x06\x08\x07\x0e4\x01\x81\xa0\xafc\x0b\x0a\xa9\
+0O mCe\x00\xf9\xbf\xb7\x06H7G\x10\x01\
+\x04J\xb1\xd7'\xc8*\xa6\xed\xb2\xcf\xd4o \x88\xda\
+K\x1a\xd8S5q\xd0oEv-\xcam\xcc\x9c\xe1\
+{1\x1f\xb9\x9fOj\xc1\xf8\xbb6\xc6\xc7\xf53\xd0\
+8\x02@\xbf\x0fZ\xf0C\xcb\xc1L,\xe9|/\x9c\
+\x02L\xb0\xc9z|8_\x12'T6\xf8\x5c\x9eG\
+\x84\xda3\xe1\xe4yA\xda\xe3l\xfe,d,\x10d\
+\x5c\xf9=\x01?\x15_\x16v\xd8b!7\x84\x1b\x80\
+\x05(\xf6\x8c\xd3kG\x0b\x0drV\xf4fJv\x8e\
+\xca\x9e\xeb\xd4\xb3~\x88D\xcdIl \x87\xe3{B\
+\x0f\x1e:\xc6@\xfd\xbc\xf7\xfcX\xb3\xdc\x13gV\x12\
+G\xb0g+\xd1\xe6\xac\xda@\xfd\xa4GL`\x0ci\
+as\x96Y\xa9Tx\x05J\xe3\x82\x00\xd5\x135\xf4\
+dBV\xc8\xefE\x9a\xe4\xcf\x0b6tA$\xfd\xf9\
+\x00)'\xa3\x8f\xc3\x0f\x94w)\xb3\xcaA\x80\x94\x0b\
+\xb9\x1f*\xf2\xf4p\x0a\xca\xe7\xeb\x93\xe6\xa1\x07\xfc\x90\
+n.eV\xe9\x1e+\x91\x83cD\xe0\x0b\xb4\xb4\xfd\
+q{^{^\x9ew=\xf4\xfb\xd1\x9e=\xdfe\xac\
+\xb8\x7f\xaa\x94@\xea\xe9\xe4{\xffeVA\x8d!\x85\
+\xa5\x85\xe2$\x91!>,\xd6uU\xfe\xc77\x1f\xdf\
+l|\xf3\x8a,\x0c27\xc6\x09\x15\x02\xc8\xf4\x0c\x1a\
+{tE~E\xc2\x19\xb9*\xc8\xef\xe8}\xd5\xf7\xe7\
+\xba\xc3_\x15\x90n_A?\xf9|\x1068T\xaf\
+i\xbd~H\xf3\xe8\x96l\xa5\x07\xf3.\xb3\x8a;\x03\
+\x12C\xe9!#\x83\xd9}\xcf\xac\x90\x10zB\xca\x02\
+\xa3\x07\x94 \xfbr\x81\xba\xba\xc3%\xc7\x16\x96y\xd7\
+\x01\xb7^\xfd\xab\xcb\xf3\xcd\x09\x87g\xaauL\x01\x04\
+\xd7\x83\x1c\xde`\xb1\xc1\xa2\x83Es%\xbf\x1f_Z\
+\xaf\x9c\xc4\x0c\xae\x9e\x8f\x9bed^\xcf^\xaeu\xd5\
+T\xd6Mg\xddecW1K\xd7\xf3\xdb\xbe\xb7\xbe\
+}\xde\xac\xaa\x0ci\x9f\x03\x02OO\xb8s\x12\xa0\x13\
+\xfe\x15\xb3\xd2\x0a\xe4\x0e\xae\xd4\x11\xf8\xbcn5\xb3\x92\
+X\xf4\xdeF\xed\xab\xed2m\x96Qd\xbf\xcf\xeb\xc1\
+\x0d\x0a\xe8\xcf-\x0e:\x95V\xc8\xc9\x1c\xf9r\x89Y\
+A\xb40\xaf\xba\xb5$g\xb8e/O\xe9-\x1a\xeb\
+\x99U\x95u\x91/z\xc2Z\x95p'\xa9\xa3\xd7\x9b\
+y-V\xeen6\xb3t\xfc\xefd\xf6\xbc\x1e\x96\xec\
+\x19rnB\x864\xd7*\xf1(\x12\x5cz|\x91A\
+\x1b\xcej\x96\x8e\xfb\x8b3d\x9dn\xed.\xcd\xd3\xe1\
+\xcf\xcc\xd2\xf3_\xd2,'T\xf2\xb8\x85\x15\x1fR\xb5\
+\x1c\xa0\xa6}h\xb8\x99Y:~\xd9L\xfa\xee+\xea\
+<Lv\xf4\x95d\xaf\x169\xc5nS\xb3\xf4\xf7/\
+\x9a\x15\x04b\xfa\xfed\x15BL\xfbT\xb7\x9cY\xa5\
+\x02\xc4x\xa2W{\xd5d\xab\x14VzOT\xbf\x92\
+i\x8f\xfb\xc4\xd6u\xd5:n\xbd\xd0\xcbW\xfb\x19\xf3\
+\x98\xfd\x95\xc0\x9a\xd6O\xb5\xd6\xd0\x83\xefl\xee\xc8\x9b\
+\x8a\x5c\x96\x96\xa5\xe6\xb7fUo\xb71\xb9\xecR\xed\
+\xfbdH\xd8\x87o\xcd\xcd7\x8e\xac\xf0D\x898u\
+\x1c\xe9&\x88\xba\xf7\xda\xb3\xee\xb3\x0f\xa0.@ \x08\
+\xe9-\xf2\x99 \x0eH4h?vRC\x90\x7f\xf8\
+\x97\xc8\xb6\x8as\xc2+\xe4Gd\xeb\x13\x93k\xe7\xc4\
+y\xbf?\xedfVZ\xb3\x9a5\xcc\xca\xfa\x95\x0bw\
+o\xd3\xf8\xfb\x99\xd8\xf3\x0fJ\x7f_\xd8,\xfd\xfe\xb7\
+=\xc2\xc6\x91.J\x04v\xab\xf6\x9c\x18\x1eX\xdd\xad\
+\x80X\xf7\xb3\xb9\xa7'\xe7t\xd5\x01\xe4\xed\xe0P@\
+M\x85\x96^\x90K\x90\x13\x0b\x89\xe5\x88*\xcd\x17\xff\
+\xbd\x10\x1f\xb1\xd2\xcd\xbc\xf6\x84%\x5cC\x90\xe2\x12\x07\
+\xd0\xfaDE\x9cx\x00\x8e\x22T\x22\x18\x0f\x14\x22\x03\
+\xeb\xbe'\xce\xe0tXR~\xa1\xe6\x85\xb7|\xe0\xff\
+h_\x1d-jVZ\xd0\xfc\x9f\x02v\xe7\xcc\x803\
+@\x08,\xf7OA\x82B\xe6K<\x82\xbfHbI\
+\x88\x07g\xeb'Q\x052N\xfe\xacs/\xfc2\x9b\
+\xfb\x9f9\x8e\xfbw\xd5\x0aH\xbcRZ\x9a\xfb\x7f\x8c\
+O\xfd\xde\xa1\xefp\x1fD\xbf6\x22\x85\x09\xb8\xb5\xee\
+\xf8\xfd$\xc0\x8d*\x5c\xc4C\xacK\xa3IZ\xab_\
+z\x03.5\xc8\xdb\xa7UqXl! .(\x85\
+\xd4\xfe\xfc'K\x00p$\xf1\xf1d(\x00\x93H\x99\
+\x8c\x1b`fr\xf8\x89\x88\x86\xc9\x02\xfe\xfft\x8c\x08\
+\x01]\xe7x\x1e\xf6\x0b\xab\xa2\xfb\xee\xca\x11\xe5\x0b \
+\x0db\xc0[\x1a`\x16\xbd~\xc5\x8a\xac\xeb(\xb3\xe2\
+\xb0\xb4K\x9b\x15\x87\xc3{\xd7N\xcbV\x1c# \xf8\
+\x17&\xbb\xa8|Os\xb2YU\xd1$\xb3)]p\
+'\x1f\xa2\xd2\xa8\x00\xa7Y\xde\xac8\xe8^\xd9\xbe\xb2\
+\xcf\xe4%w\xb9\xafl(3\x93\xdc\xde\x1e:\xcd\xf7\
+\x90\x09\x12\x97\x00=r\xa3\xf7j\x81\xe5~\xa8\xc2\xd2\
+\xaclV=\xa8\x99+\xd6=\xfb\xb0\x16\x12O \x00\
+\xb9W\x05\xd1Y\xc7\x81B\xf3\x8f\x81\xfd\xa6@JG\
+B\x86\x85\x92\x00x%\x87\x90\x93)\xec\x03\x7f\xb8\x11\
+T\x01K\x8bh\xbe_\x1e\x00\xb1\xb0\x92\xd1\xe5<t\
+_\xdd\x11\xa2G\x8a\xc0\x97\x04C\x90\xb3sU\x83\x19\
+\xaeb\xf0\xc6\xba\x97\xfc\x9d\x05\x8d\x0c\xe1\xb8\x021\x06\
+>\x9c\x14\x90_!\x0f\xc7De\x03\x88,\xe7\xdc/\
+\xc6\x01\xe7\xcb\x82\xbf\x84\xae\xab\xc8(N$Ed\xe2\
+\x84\x05\xc4\x03y\xc6\xdfd\x997\xae\x8f\xf1\xc0\x02A\
+e\x99\x84\x04\xbfg!\x88\xf2{d\x1e\x81\xdc\x07\xae\
+\x09\x1cs\x7f?\xe7\x03\x04\x92@\x9bJ\xa4\xc8z\x9c\
+\x14P\xcf\x17\x88\xb1\xcbO\xa9\x22\x1c\xd9v\xdd\xc1\x82\
+\x9c\x10\x16^\x16rz\x94#g\x07\x09&\xfe~\xb1\
+#mr\xef\xba/\xdc\xaa y+\x8e\x1c\xa6\xee\x0c\
+\xb3\x02}n\xcf6\xabte5\x1eX?\x9a\xa7\xcc\
+\xaa\xe7\x07\x09\x1c\xb2\x84l|\xe8\xdc\x03\xf5c\x5c1\
+\xce\xa9\xbc\x08*\xec\x95\x1c\x91\x13y@\x89\xa3J\x22\
+Rl\xef.W\x04\xd4\x92\x0d\x81\xf1\xce\xf8\xa0\x05\x80\
+\xe7/2\xae\xe4h%\xab\xd8\xfcia\xa0\xe5\x01N\
+\x13Z\x0a\x80d\xd2\x1aA\x85N2xT\x8e\x9d\xf5\
+\x1e]l\x02|\xf5\x10z\xa5F\x01]{C{c\
+{c\xd1Go\x16J\xef\xb7\x9e\xd05\xdb\xffj\xd7\
+,\xfa\xc9\xed^fUE\x04\x87\x04\x87X\xeb\x8b\x07\
+\xa8b\xa7&\x10\xf6\x1ex\x93\xef\xfbMIL9\x0b\
+<rQ 1T\xb1\xf5\xd6\x04\x12a\xd7\xa8\x95\xe2\
+\xc3\xa3\x8f\x8c>\xaa\x0a\x8c\x05\x88\xe7\x98\xa5\xd7\xff\xc3\
+\xac8x\x0e\xd8\x11\x82\x84J'\x95\xfb\xe6x\xb3J\
+\xbe\x897\xd0B$\x87\x92\xcfu\xa4\x05\x9c4\xda?\
+\x86\xa7\x9b\x95J\xdc\xe0gf\x15\xa9\xa01\x1b\x1c\x9c\
+\x9e\xfbuf\xe5{\x9b\x97\xfbD\xf4h\xff^\xfe\x8b\
+\xc0\x8d\x84\x15\xb2\x88\x8cKWi`\xbd\xd3\xb8D\x7f\
+\x1cr3X\xf4\xd3\xb7\x1c\xd7\x1cW!\x1d sS\
+\xc5j\xf8\xb8Y\xf1\x13\x9c\x15\x1c\x99G\xc6\xfd\xa9\xd9\
+\x5c\x9e\xcf\xe5\x13!\x1b\x14\x94\x9d\x84\x81\xab.P\x09\
+$\xf1e$\xc5\x1b\x97\x16E\xaf\xa0\xcdg\x96\xaec\
+)\xb3\x0a\x91\xf6\xed\x1e\x12>Z\xd3\xb0\x85U\xc5\x18\
+\x08\xbd\xb81\xa8\xb0{\xa5_\xd0| \xbb\x99\xa4\xf1\
+\xed\x05\x19\x90V\x93^\xd6\x14$#P\x7f\xe3\x06?\
+\xb2\x92\xb3D\xa5\x83D\x9d\xb8B(\x8c\x0c:\xb3\x8a\
+\x04\x0e(<\x888\xf9%\xdd\xd3\xdd3\xdd3\xe2L\
+\xd8+\x17D\xae\xc9\xc8\xa2\xc5R\xc0\xb0X\xf2K\xf3\
+\xbf\xf4\xb9[\xb7[\xb5[g\xb2\xb8>\xc00\xe4^\
+r\xf4\xbb\x8b\x93]&r\xb8\xabJ\x00\x9c!\xd1\x9b\
+\x97\xfd'\x93\xaa~\xa1R\x83\x00Q\xa1\x0a5\x09\xaf\
+n\x1b\xb3t\xfc\xb8Y\x15hni\x96~?\xddL\
+\xdc\x0d\xe7\x16\x84\x13\x09\x93\xdc\xaa\xf579\xd4\xaf\xe9\
+>\xdd\xa9\x00\xe5\xc6\xa2V\x91[A\xd2\xfa\xd0\xbd=\
+YZw\x07\xc7&36\xf5\xef&;\xa3\x0aP\xf4\
+~\x97g\xa4\x15\x02R4\xf9\xa1\x99\xc4\xf4|\x05\x0c\
+\xb3\xa9g\xfe/\x15\x12\xce\xc2\x9f+\xb4^\xaeW\x12\
+\x91\x9eH&@\xa2\xd0pd\xb6\x82,\xa1\xf5B=\
+\xfe\x907z\x00$\xb2:\xe7\x8cP\xc2\xb1{\xd6\xac\
+\x04:^a$\x00F\xce\x1a\xb2lH!\x975\xcb\
+\x89\x9edU\xe0\x072\xc8\xb8\x0f\xf6.,\xf6\x8e\xd4\
+\x93\xaa\x80C\xd4\x8d\xa5\xfe\x1b\xfa\xfc\x7f\x96\x046\xeb\
+m\xde\x85_\xcfrz\xbbZ\xebE\xb3\xb7YQE\
+\xf1\xc4\xf8\xce=\xd7\x81'\xbe5.\xbc\xe0\x81\xdf\xaf\
+J\xb9\xfb\x0f\x90&\x0a\x89\xe3\xea9\xefW\xc0|z\
+sZsZ\xd5zK\xeb\xdf\xea}\xe2\x22\xcd\xe6^\
+\x86\x96\xc4\x13~\x1f\xfeE\x84\xb6\xab\xe0\xe0\x08\x02\x0a\
+\x88\x22\xe7\xf5\xca9\xfe!~\x08\x89?X\xfa\xd9\xdf\
+\xf17)\x94A\xc2\xc7\xfbb\xab(\x09\x1cZ\xd0\xa4\
+\x12\x80:\xceh\x19\xb3j\xffF}\x86\x96\x19Zx\
+i}\x10\xe2\xd9\xfd\x05\xfc\x07\xce\x87\x16MH\xc7\xc5\
+\xa1\xe1\xeb\x16\x08f\x0ae\xfc\xc3\x7f\xa4\xe0A\xc1+\
+B\xfa\xf1\x83_4\xab\xee3\x05\x94\xa8\x92\x15\xa0\xfa\
+\x90\xa0;\xc2\x82\x8ax,\xb8q]\x059\xdd\x7fN\
+\xe4\xceb\x1f\xfeO\x81?H\x09C\xbc=\x99\x13#\
+=\xd2\xf5\x01q \x10\xe0\xc7\x00\xbcp\xb3\xf5\xe7\x81\
+\x1f3\x09\xe2\x81\x84\xb8\xdf\xc7H:\x18\xfd\xfd\xd8\xc2\
+\x10Z\x95\x91\xab\xf5\xfb\x11\x03\xfc\x18WEY\xc0x\
+T\x5c2\xee\x01\xd2[3\xcfzM\x8a\xd6\x0f$\x02\
+\x7f\x06>?\xe3\xc0Q\xe1#3\x06\xe4\x176r\xf4\
+\x98\x8f\xeb\x1d\x0b\x0f\xc4\xb8\xc1L\x1c~\xc6\x91%\xe0\
+\xe4\xc1\x92\xb1\xd2\xeb\x9bk\xcd\xb2c\xd1\xf7\xf4J6\
+\xafy\xa6y\xb6y6C~\xfa^=2E|\xce\
+\xa7\xfa\x05\xb1\xb9\xb8\x87\x9e\xd9\xab\xf3\xeb\x91\xf9P\x85\
+\x0f}g\xd7K~O\x0f\x1d\xa4\x97\xcf3\x9a\xc7\x98\
+U\xbd\xd1\x0a\xa8\x1d:\xcf\x04\xe3\x01\xffQ\x13\x85\x01\
+\x81\x83\x1c'\xe2l\x81\x95\x9f\x81A\xe0@@\xc8\x82\
+GF\xe9i9\xbe\x8fi\xa0\xcd\xeb\xcf\xad\xcfT\xe2\
+\xc8\xbeO\x10y\x12\x1f\x90B\xa9\x12\xe3\x89\x0d*Q\
+<\x0fZ\x01\xd8\xe0\x8c\x9c\xe9\x9f\x99\x04\xaa\xd7\xd1f\
+ad\xa0r\xdf\x09\xa8\xa3,\x05\x0b\x09\x01\x00H\x06\
+\xc9\x1c\xa5E\xa4\x7f?\x90\xc2A`\xd5\x9fK\x19@\
+\x12 \x8c_~\xe6u\x9cG\x84\xf8p\x8c\x19\xc5N\
+\xe7\xc7\xfd\xa6\xe2\xcf\x82C\xe2\x84\x05\x83\x05!\xf6\xf4\
+\x10\xe0\xd3S\x05\x22\x81\xcf\x05z\xc5}e\x01c\xa1\
+ \x13,6^H\xe6\xfc\xfeQ\xf1\xa4\xe7\x94\x85\x9d\
+\xfb\xa0\x1ez\xcf<\xab\x02C\xe2b\xf41\xb3J\xbe\
+\x08v[\x12\x0d\x90cR\xf9f\xc1\xa1\x97N\xb2u\
+\xf4\xb0\xc2\x8e\x0f\x89\x9b\x07\xb2\x0a\x00]\x15\x84\xcaN\
+\xe4\xb2\xe0\x1f\xcf!pT\x8c\x9d\x90m\xac\xfb\x81Y\
+\x05\xa5T\xc5\x95\x00\xbd\xfd\x93Ya\x09\x06Z\xed\xb2\
+6\x0a$\x9c\x8b\x84\xe7I\xe2\x83J\x80\x02\x99\xecP\
+_\x5cA\xfe\x81\x5c\xb3\xd1Q\x81V \x83#\xec\x9f\
+\xcbsg\x1e0\xef\x91\xdd\x93>4\x9c\x04N\xce\xa6\
+J\x13\x8e\x14H\xa8\xe6R\xb3\xf4\xfe\x8fg\xf3\x1e\xff\
+\x14\x0e$K\xc7\x97\xcd\x0a\x09 \xeb\x91C\xeb\x91\xdf\
+\x13i\x1d$\x93\x04\x8c\xe9\xb7\x19\x090x\x9fY\xe6\
+\x98\xc8\x81y{\x88\x99H\xfb~P\x90=\xed\x87\xcc\
+\xaa\xf1)\xddk\x9eWN\xf0^X%\xf4\xd4\xba\xe0\
+\x95}*\xfdr\xb0\xbd\xd5$\xc8Of\xd5\x87\x03+\
+\xfdlH\x0a\xa9\xc4\x90p\x92\x83\x8fN\xba\xaf;o\
+\xc9\xa9P\x1fo\xa8/8\xfb7\x0e\xbbt\xa7\xdbc\
+\xcd\xaa\xc4\x08\xf2y `\x0e\xecI\xb02\xb0\xf9\xa7\
+}\x02\xc3\x12\x89\x8c\x7f\xd65\x87T\x1b+\xf7\xc7D\
+\xda\xfa\x0f\x91\xa4]\xadD\xd8\xff\x96\xf5\x17\xce\x08\x90\
+\x159\x80H\xfb\xc3`\x8dd\xef\xc9\xb2X\x19\x82\xcf\
+\xba\x82\xaa\xc4\xe8\xcc\xd1\x19\xa33re2'\xac\x1c\
+\x19\x22\xce\x07*\xdd\xdd\x01fe\xde\xc3\xe1\xd0\xfc\xd1\
+\xac$\x9cs\xef}\x0a8\x87\xcb\x9bU\x01>d\x9d\
+j\xdd\xe2}Y\x0e1\xdd\xd7v=\xb3\xf4\xfe\xad\xfa\
+J\xfbp\x0e\xb3\xd2\xa2\xc5\xefq`\x9b{\xcc\xaa\x0a\
+\xadz\x87s\x22b\xaf\xd2\x92\xd4\xd9\xbfQ\xe5@\x09\
+\xb9\x03\xb4\xbf{\x9bY\xbaO\x17\xf7\xad\x03T\x9e\x5c\
+g\x1e=wz\xa1\xef\xe9{\xee\xd1\x1d\x1f\xdd%\x92\
+:\x02\x81}TH\xa0\x05F\xb2\xc1\xb0\xa1\xe7:\xec\
+y\x22\xf1\xdb\xb0pD\xa4\xc0|k\x0b\xcc\xbd\xb5\xe8\
+I\xb3\xa2F\xe1j&\x04\x92\x0a\x84\xda\xc3\xcd\x0a\xc7\
+A\xbb\xa0Y\xba\x7f/\x0d_\x1c\xbeXz\xde\xbb\xf3\
+\x93\xfd8\xab/]i\x81\xbe\xb9\xb9\x99\x04Q\x89\x10\
+\xc39\x18\x89`wJ\xb2\x93\x85\x08xSi\xc5\xc8\
+\xe4\xccGV\xea*B\x12\xb5\xeb\x9b\x95@;\x9d\xc7\
+\x1d\xa6\xc6\x012\x12yH\x10Z\xb9g~\xbc\xb0\xe3\
+S\xa0i\xcf5+\x81O\xf7\xddd\xa7\x17\xce(G\
+|(\x90\x19\xde\x95\xecw\x85\x0b\xc0\x91\x19jM\xf1\
+u\xef\x95d/\x17\xe4'd\x8f\xc6\xa8\xd0\xdd\x5c\x12\
+ \xd9\x0b\xbd\xbb\x9c\xdf\xd81\xc9\x8e-\x15l\x12\xd2\
+\x99\x0c\xf6V\xf9?\xabW~\xa8\x12\xc5\xae\x03o\x80\
+\xec\xefW\x81\x1d\xc8\x0f\x12K\x227\xb4\xd9g\xf3/\
+\xabj\x1d\xafV\x83\xa3+\xddv*\xd4\x0a\x80F\x9f\
+\x1a\xed\x99Y\xfc\x85\xc0\xf1\xc48\x10t\xfcR\x02}\
+*\xb0$\xb6@\xd0\xa8\x05$\x87\x8d\xebW\xe4o\x86\
+\xcb\xbb\xb5\x9a\xaf \xe2\x08\xf0IT\xdddV=g\
+\xd3\xf4\xba\xa2\xf2cLf\xf1\xc7\x15\x97\x87T\x0d\xdc\
+?\x86\x04qa\xb3\x8a\x1b\x84q\xc1~\x89\x0e\xbd\xfc\
+wo]\x11\xb2\xa9\xd9\xacOX\x8f\x0e\xe8[\x15\x9a\
+\xaf\xf7\xfb\xa1\xfb1\xa7\x08\x09 n\x14\x0f\x80!\xc3\
+\xa3R\x0e\x195-;j=\xf4\x04\x0d\x10{\xfc\x0b\
+q<8r\x0b\x7f\x83\x00\x1e\xae\x06\xfc\xee\xd02\x9b\
+\xc3\xbe'\xb4\xafL\xc9\x88\x80~\xdd\xbfT\x95o^\
+\x87\xbf\x80\xca\x12H\x16\xb5h\x92\x90p\xd5\x15\xb8\x16\
+\xf0\xab\xb9>8\x0c\xd4\x0a\xe8-\x5c\xf8\x83\xf8\x971\
+\x00'\xb0\x06\xa2.\xf2p\x1f\xf7\x04\xfc\xf8\xc5\x04\xfc\
+\xf8\xb1\xf8\xa5\xa8\xa2\xa9un\xf4\x07\xb3\xff\x0f\x19w\
+`\xa9\x87l\x97u\xd9\xef\x0bqN \xeb\xf3\xf3\x85\
+\xb4\x0f\x84\x02\xe7\xc7uE\xb6\xfb\xd8k\x1f\xae\xdf\xc9\
+\xc7\xa9\xd4s\xfd\xba^G>\xc0\x19\x12?\x1f\xff\x95\
+\x16d!\x85<\x9e\x8b\xdc\x01\xc4} J(TD\
+\xce\x03\x10}R\x19\x99\x09q\x119\xc6\x22\xd4?\xfe\
+\xe3uA=a<\x9f~\x9d\x81`\xe3\xa3\x22\xcaD\
+`\xa2(\xb0r\x96m\xf4\xe2\xf9\x82pc\x9c\x0d^\
+\xba\xcb3\x91\x8d\xd1\xfb\x8b\xa3G\xa0G\xcf=\x0b\x1f\
+\x15~d\xbf\xc4\xfe\xcc\xc56\xf3\x8b5\x96\xca5\x01\
+ \x81+\x0e8\x01\x10\xbd\xbe \x05`\xff\xa67<\
+\x04\xbc\x9e!\x87\xdd\x19h\xe6o\xd4\xfb\x182<\xde\
+k.\x99E\x9f\x98o\xd3\xf5*3\xeb\xf7\x05h\x1c\
+\x81\x0f\xa4\x14\x0fkC@\x16L\xa4G>\x11U\xe9\
+wG\x13\xd23*Np\x0dL\x9f\xc8\xceI%\xc6\
+\xcf\x8f\x05\x09\xb2\x1b\x16,2z<W\x16@&\x8a\
+2\x7fl\x00\xde\x1b\xaf\x05xl\xf3l%\x81\xc4?\
+&.l\xa4\xf4^\x92\x11\xc6\xe1\xa2B\x0d\xd2\x01\xc4\
+\x06\x99\xd2w\xeb\xbc\x17W\x0b\x03\xd0{\x02O\x90&\
+\x8c7\x8do2\xf2\x0e\x09c\xa1\x82\x13B\x10<g\
+\xff\x7f\xbb\x9e\x13\x10\x1e\x12'\x5c\x07\xcf\x8d\x89\xcb\xc6\
+\x0a\xb2\x83\xfb\x08i\x1c\x0e\x16\x0e\x06\x10}\x12* \
+Y\xd8\xe0\x90\xadT\xe6\xddYg\xa9\x88\xf0\xdc\xe9i\
+'\x90E\xb6\x8f\xf9\x1b\xb8\x01\xfc\xbe\x8au\x9f\x8cl\
+\xb3\xbdY5\x0f\xd43\xe7\x08\x1c t\x82.\xfa\xfb\
+!\xf1\x13\x84\xd4{\xf9\x08\xa8I4@\x02\xc8\x82\xc7\
+s\x8b*\x03<\xb7\xf0|\x1cB'\xf9\xa0\xee\xda\xee\
+\x1a\xeb%\x06\x82IE?\x93\xce\xcd^\x02]\xa0\xdc\
+\x9e\xf0Q\x80\xea\x08&Z\x11\xe4`xo'\xdc\x05\
+l\x00\x22U\xf2\xca\xc4\xc5f\x15\x89\xaa\x02{\xafh\
+#\x93Ho\xe5\x01}\x05\xd7\xe7\x13H\x04\x1cJ\xf5\
+\xb8r= w\xda\xef\x98\xa5\xe3\xaf\xcd\xd2q\xbaY\
+:\xeeg\x96\x86\xd9\x8ef%\xa0vvv\xc9\xf8!\
+\xd7\xe4\xc8\x08A\x04\xf9}{\xaaY:\xce\xd5\xce\xdd\
+\xce\x9d\xd7\xd5d\x15D\x11\x95\x94\xa72\xbbI\x81\xea\
+\x22S\xa3\xd6\x11\xdf\xa8\x99?RU \x81\x9ae\x1f\
+\xafSE|\xb3*\xd1\xc8\xfe\x00b\x00r&\x12p\
+\x04\x86 <N5\xab\xa0\x82\x90\xde\xc1.\xcc\xfb\xac\
+\xfe\xf3\xfd\xbc\xaf-i\xfbZ\xbbN\xbbv\xee\xd1\xbf\
+?\xe7\xfe\x0bBf\xdflE\x96l7\xb3t\xfc\xbd\
+Y\xe5\x08\xf6\x9bj\xdf\xea\xb0]q\x14s\xa7|\xdb\
+s\xd7X%\x93\xca}\x86P\xaf+\xf2\xb9t\xfe\xed\
+\xbd\xc9\xd2\xbci\xdfg\xa6\xc0\xf0\xf1\x0a\x12\x0cy\xdb\
+\xcf\x93]\x92\xcf7\x9dq\x91C#\x80\x1b\xed\xda\x8f\
+\x17Z2\xda\x83\xdb/\xb5_\xaa\xb8\x06\xd4\xbb\xef\x90\
+X\xc8j\xe1J\x11r\x06\x19\xce\xe6\xf0\xbe5\xa8\xfb\
+@/\x1b\xd7\x0d-\xe2.\x89&g7\x87$L\x09\
+\xf4v[\xb3\xf4\xf3uf\x15BB\x88\x1a\x87\x84+\
+\x80\xf4V\x0fz\xc6\xe5\xd8\xb6;\x9b\x95\x04\x0b\xd0\xdf\
+\xee#f\x15;\xb7U\x1c\x97\xac\x10HjEp\xce\
+\x86\xff\xd5|\x5c\xaa\xdf/P\xdf\xf0J\xcac\xe2t\
+\xd9r\xb4\xc5h\x8b*\xc1'n\x03\xc8:\x1dZM\
+\xe0\xc78C^K-&\x90]z\xcb\xdb\xb4d\xd6\
+\x22\xb2\x8dY\xd1go\x8e4K\xbf\x9f\xbb\x9f_\xed\
+|f\xe9x\x86Y5\xae\xd7\x97\x0a\xc6\xd7\xcc\xd2\xb1\
+m\x07\xed\xa0\xc8\x93\xe5\x8a\xf9\xd9\xc9\x9f\xbb|xy\
+w\x85\x02\xe9\x872\xf2aM;\xdfn\xbbd\xdb\x97\
+DV\xb7[\xb2\xdd\x0b\xa7R\xf7\xeed\xef\xca\x9c\x01\
+\xc9\xe4?\xa4u\xbb;\xd9\xac\xe8\xd6wS\xcc\x0a\x97\
+\x84\xb3\xd8\xabW\xdf\x91cw\xf4\xfeD\xb7\xa4\x10\x19\
+8\xacBt\xcc\xf8\xa6Y\xba\x8e\x9b\xcc\x0a\x14\x9cq\
+G\xa2\xa3\xfb\xaaY:\xbe7\x99%\x16\xdf\x9cl\x8e\
+\xb2.\xe1\xf87\x7f2\xabH`\xad\xb5\xe6\xe6*q\
+\x0a\xd9\x9eX\xec]\xcdJ~\xad\xcb\xd4\x1a9\xec\xa0\
+\xf2[\x94Xp\xd25\x1b\x05\x86\xfc\xd85\x99\xcd\xb3\
+W\x93\xbdV\xb5\xa2\xb2o+\x01\xee\x10w\x90a$\
+\x0a`m\xa7\x12\x8c\xa3~k\x1f\xa0\x8f6\xef\x91\x19\
+ \xcb<\x80\xd0z\xe7\xfb\x0fPn\xa0\xd5\xaaP;\
+'\x89A\xc6/\xae\x02\x5c\xf6m\x0aT \xc8\x14h\
+\xa2v\xc2\xbc\xa2\xe7\xdc\x98arB\xcb\xf6\x855r\
+b\xf1{\xd6\xd2\xe7\xfe\x11\x15s\x121\xec\x9f\xf2;\
+\x90\x05w\xbf\x98\x02\x1e\x01\x0fd\xdb\xf8\xd5\xac\xdb\x92\
+\xa9t\xbf\xf7l\xb32\xcf\xbcU\x87\xf9\xa8\x02\x04\x9c\
+\x0f\xae2\xa1J\xbb\xcb\xff\x11\x9f\xd0\x8a\xa8\xc4\x89\xfb\
+C\x04V{(q\x8d_\xfa\x90H\xee\x08pI<\
+\x169\xed\xde\xaf}!\xb3_\xf5\x81\xde3\x99\x93\xa0\
+\x97\x81\xe4\xbeF\x92_z\xfb)\x84\xe0OP@E\
+\xa6\x97x\x07\xc4b\x907w\x0e\x03\x12\x03\xf8\x13p\
+8\x11\xb8\x12\xe0\x12\xe8G\x88;\xea\x06\x5c7\xe7\x1b\
+\xa1\xea\x04\xb2p!\x11w\x80\x00\xe0\xfeDh\x7f\xe8\
+mw\xe4\x00\xf7\x01\xff\x8f\xc0\x96D\xc0\xcb\x81\xcb\x8c\
+\xcf\x8d\xe4\x82\x04\xd0\x04\xe4\x91\xab`Jh9&1\
+@@\xcc|\xe4\xf5\x5c\x7f$9\xe7z\x22i\x1f?\
+s>\xdco\xc6?\xf7-\xaa'D\x12A\xe2f\xee\
+\x0f\xe79\x19'@\x94W\x9f\xec8\x89|\xe2\xb8\x9f\
+\x10\x81\x0d_\xc8\xdb\x18\xe8l\xd8\xc66\xbe\x84\x16\xb2\
+wU\x81\x10\x8ez\xec\xd1\xc0\xa1\xe3s\x80\xa6\x00\xe1\
+\x00i@\x80\x22r3_(\x158\xd0\xab\xea\x991\
+nh\xd1\x99\xec?\x9f\xc0\x9f\xc4\x02\x81-\x88\x05X\
+\xe4a\xe1\xa4B\xc7\xc0c\x80\xf0~\xce\x8f\x0c\x1c$\
+<\xfb\x00\xedV\xef*\xf7\x8d\xc0\x19n\x04A\x8f\x1c\
+1 \xfdS\xd7/\x1d:\xdbk\x7f\xbf\x80\x8c0\xa0\
+\xfe*\x07\xf6\xad\xca\x14^ y.\xa0\xe7_\xd5B\
+\xfe>A\xe2y\x8eT\x1a\x7f\xef\x0b\x10\x99\xad~@\
+\xd2k\xa3LqlM\x80\x15\xdb\xcf\x83\xde\xa3\x98Q\
+\xe2\xf5\x826\xbbn\xf8\xa7\x9a=\x9a=\xaa@=\xb2\
+\xee\xf33\x8e>\xe3\x83\x04\x0e\xe3\x83\x05\x85\x89\x19\x11\
+)\xdc7d;\xd0AUB\xc2\x11\x19\xeay\xf3\x05\
+\x9f\x0a7\xcf\x97\x00\x93\x80\x81\x85P\x89\x93\xe4F\xf5\
+\x99gAx\x9b\xafI\x96\xf2\x96\x9el\x92\x9e4\x1f\
+G@\xf3\xaf\xefIp\x9c\x94\x90\x85\x8e\xf1\x05\x89\x0c\
+\xad\x16\xe8\xe0\x929ga\xd0\xf3$\xf3\x0etw&\
+\xce\x0b*\xf3TV\xe1^ \xa0f\xfe\xe1\xd0\x93\xa0\
+\x81$\x86\x85\x97\xfb\xcf\xe7\xc3\x0e\xbf\xa2\x90\x1e\xcc+\
+H\xfb\x14h{\xcf\x98\x1c18\x08`\xf3E\x8d\xc0\
+e\xef\xb4\xc1y@\x02\xd9\x1a\x10M\xb5\xa6\xf8\xf9\xf3\
+\xbc\x81\xfa\x93@\xd3\xf5t\xff\xec\x1e\xef,\x81rc\
+sCsc\x05!\xe7\xfeC\x8aC\xc2\x06rG\x1c\
+\x7f\xc8\xffx\xfe\x8c\xffc\xb3\xf9\xf9y\xeb\x13\x95\x10\
+\xe9K;\xa2\x80\xf9\xc7\xf7P\xe9\xc31\xc2\xe1\x91\xfc\
+\x17\xdf\xe3\x15P\xad\x0b\xb9\xe2\x95\x9eG;\xabY\x0a\
+\xf0\xbf78s\xf0\xbd\x1c\x10f\x92\xb9\xf6q\xb3t\
+<\xde\xac\x90\xbb5\x7f3\xabz\xfe\x81\xa2\xf3\xfc@\
+v\xa0J@\x80.Vbt\xa1\xe9\xd5\xe6}\xed\x96\
+fy\xfe\xe6DH\x0el\xd7V\xcf\xe4.3;\x16\
+N\xba\x05R\x81V\x10\xd6ok\x08;\xbd\x04\xda>\
+\xae`Y\xd7\xbe\x92\xd9\xfe\xcf\xd7z\xb3pE\xe2D\
+\xc5_\xe3\xdcI\xde\x90\xc7\x13Y\x1a\xa4r\xe9\xee\xde\
+\x9e\xef/\x89\x08H4\x03Y'\xbd\xa9@\xcdA\x06\
+\xb8\x03gnV\x0a@Ld\xcdX\xdcq,\xe9\xf1\
+\xf7\x0a/\xfb\x8c5\xb0\x1c]\x12t\x99\xbc\xd13\x09\
+\x81\x00\x00 \x00IDAT\xd0\xc8\x13o7\xab\xf6\
+5\xd6#\xe3\x0c\xffz\x95p\xb2t\xef\xe3%\xc1\xd2\
+=\x99\xec\x89j|h\x1c\x80X\xf1\x16\x15*\xeej\
+e\xf0J\x85\xa0\xd3\x9e\x08W \x97f\xcf\x13\xf6\xb9\
+\xdd\xb6\x16B\xe6\xfd\xe8\x11\xdb\x8f\x9a\xaf\xa7\xc0\xb5\x97\
+1\xeb\xa1\x92\xacG\x92!# i\xdfmV\x90>\
+\xdd\xcefU\xe2\x84\x04\xbc\x10v\xcd\xbf\xcc\xd2\xfb>\
+n\x96\x03\x8f_fR\xcac\x9b\xe3l\x9c\xa0sO\
+\x82\xc8e\xb6t\xbf\x86\xfb$\xfb\xac\x12b7\x89|\
+\xf2\xaar>\xdd\x0f\xcdJ`\xe6\x89C!\xf7\x5c\xd7\
+\x9d\xd6\x04\x15,F\x87\x99U\xf3\xc1\xd6\xaf\x9d\xb5\xee\
+~\xb0\x04\xdaN\xc6i\x01\xf8\x99\x157\x848\x142\
+\xf7\xc1\x12U\xcf)\x90\x7f\xad\xc3Y\x1e\xf1\x8b\x05A\
+\xd3\xe6\x7fi\x9e\xdf<\xb8epKA\x8c\x0c\xdem\
+\x96\x03\xcd\xac^0\xd86\xd9v\x0a\x14\x8eL\xf7\xe1\
++\xc9\xd2\xef\x87\x03\xb3\xf4\xbe\xf5\xfa\x04N\x96\xd9\xdb\
+\xa4R)Q\x85\x96\xd6\x02*\xf2\xdd\xb7\xcc\xd2\xf1\x22\
+\xb3\xa2b\xd2}\xc1,\xbdn\x0b%J\xce\xebI$\
+]\x7f\xfe\xe3f\xe5\xb9\xe4\x9e\xffUK\xe5\x9b\x96\x96\
+\xd1\x82f\x15\xf4W\x08\xa8\xe1\xaf\xcc\x0aWHV]\
+H\xe3wxJ\xb2t^\x83\xb7$\x9b\xbfBV\x19\
+i\x9c%\xecn0\xab\xb83D\xde\xd9\xbe\xcd,}\
+\xceN\xc9v\xceH\x99d\xe98\x9bY\xc5U\xa3V\
+T\x02D\xe6-\x05\x10\x0a\x0f\x90\x03\xa2\xf6\xe0\x15x\
+\x12@\x9a7\xbe\x8f\xc1=A\xc5Y\x08;*y\xa8\
+\xba8\x02\xea\xd9\xcc6U8Rh5\x03b\x8f\x9f\
+\xa5\x96S\xefe\x17\xe7\x8d\x93a\xb2~IU\x81\x96\
+4G\xfe\xa1^C@Hk\xa0\x10\x14\xf8)\xee\x1f\
+Qa~*\xad\xd2OUP|\x0a?\xf8\x83\xf8\xfb\
+\xab\xaa`\x83_\xaay\xc3z\xe6\x1c]\xec{T\xe6\
+\xf1\x93I,\xc2\x9d@\xab\x81d\x01=qIb\x99\
+\xc4\x8a\xc6\x9b\x07\xf4J\xe8\x8f\x0e6\xab \xff\x04L\
+VV\x5c\xb9*\xc8Pp<e\xec;\x99\x93\xe6G\
+i\x9d\xffQ\xe5\x0fAJ\xc8~\x84\xff\xb6\x8c\xe2\x86\
+\xb7\xabE\x10\x7f\x96\x80\x0f\xbf\x96\xf3\xa6E\x13\xff\x80\
+\x82\x0d\x9c3$\x92t\xde<OWS!\xd1M\x9c\
+\xc5x!AN\xa2\x81}\x95V$\x91y{\xc5\x1c\
+\xb9?\xfcJ\xfc^\x02Q\xfcQ\x12\xad \x22\x18\x0f\
+1\xe0&\xee\x01!\x10{\xdec\x22`2\xee\x80\x08\
+Y\xc7\x8f\x8e\xe4w\x93\xb1\xe3S\xd8$p\x86\xfb\xa0\
+\xb4\x12\xe4\xa3\xcb\xf8\xdd\xd8\xcb\xb3\xce\xa4\xf2E\x01\x8f\
+\xca?\xf7y\xb2V\x08Z\x0a\xe0,\xe0\xfe\xf2w\x0a\
+\xb5$\x12\x8a,\xfb\x84\x96\x04O\xacA\x1a\xc8\xef9\
+\xafx\xfd\x11\xfa\x1f\xb8\xc6\xfc\xef\x91\x84<\xa8\x88\x8c\
+\xe7\xc7AF$\x92\x12\xbcP\x0dl>\xd8\xdc;\x1c\
+\xdb\xb9*\x07\x17\xc7/d\x1e\x9aA\xb2V\x19\xd5\xe5\
+\xaa\x00\x9d\xdeZ\x02\xff(WA\x86P\xe4T\x1e \
+\xf1\xc0I\x5c(0N\x17\xd9\xdf\x00\x1co&\x0a\x81\
+\x22\x89\x05*\x9aou\xbd\xf9\x89\xd0\x1cn$\x89\x05\
+*\xd9,\x80\x9c/\x81(\x0fdaq\x12\xec\xae\xc0\
+\x97\x85,BE\x90a#\x00\xa7RJe\x15vw\
+\xb1'{\x82\xe5\xed\x0a\x80VPO6\xbd\xd3\xfb\xf6\
+\x90\xed\xd1\xf7\xb5\x00\x12\xe0\xe18r\x1dp&\xd0\xda\
+\x10\x07\xbc\xa0kc\x1fR\xc5\x98\x8dn]\x05\xca+\
+\x8b\xbc\x90J\x1d\x90u\x10!r\xb0\x9d\xdb\xe0Z\xf5\
+\xc2\x0aZ\x0c\x09\x8dg\x8c%\xaf6S\x02(\xf4P\
+\xb9#\xaf\x0d\xde\x13\x16@\xd5\x19\xaf$>x.,\
+\xec\xea\xb9\x03j\xe4\xe4{T\x9a\xc9\x94r\x1e\x05\xd2\
+\xff\x5c\x9e\x80s\xe6&\x83\x99[\x08\xa8\x04)a\xe1\
+\xe4x\xe8O\x83\x5c!S\x8aZ\x05\xb2J\x92u\xf3\
+\xdezd\xde\x80\x86\x13\xe8\xf2\x1c\xb9\xaf$X\x08\x90\
+\x05\xb9\xf7\x84Y\x94\xd7\xc4\xd1\xa0\xe7\xadp\x1f\xf4\xb2\
+a@\x02\xf9\x1c\xe6'd\x95\x82\xee97\x08\xc8\x1b\
+80T\xa9sD\x10\xbd\xe9\xcf\xf5r@^\xd1\x84\
+,\x8f\xf3\x17\xf2\xc1\xd9\xf0\xa5\x7f\xeb\xe3\x17\xc7\x00d\
+\x0c\xeb\x03\xf3\x09=zH\xf4\xa8@\xc0\x06\xac^Y\
+ \xe5d\xca\x9b\x0b\xcc\xaa\xf5\x8c\xde]\xee\x17:\xcb\
+r\x5c\xad\x131\xf7\x22\xb2\xfe\xd0\xebO\x85\x08\x0e\x13\
+6L\xf5\xa4{\x86\x1e\x19Dz\xd6\x15`x\x02\x0a\
+(\xbaz#\x9d\xd3\x00\xf6~\x93\xaf:<-K\x9b\
+\x98\x95\x8ab\xbb\xafY:\xfe\xc5,\x1d\x8f2+\x09\
+\x09g\xbfW\x0f2\x81\x16\xd7;\x9a\xdd\xac\xda(@\
+\x5c\xd1JB\xc5\x01\x08$\x0e\xc9\xfefU\xc2\x84\x8d\
+q\xf9\xb1w\xe5\x04+*\x0cb\xef7\xea\xb6\xac\x0a\
+A\xa5Y\x95C\x10\x19\xed\xa6fe\x5c\xb9<!\xb2\
+|\x96\x10\xb9\xad\xbc\xde[\x86\xd4\xea\xe1\xf7\x9f\xc4!\
+\x1c\x0b\x1a\xef8\x86\xed\x16f\x82\x02\x1f\x93+R\x97\
+YEj\xb4\xa9Y\xe5\xe8A\x8a\xb9V\xdfC\x9e9\
+\x11\x9b\x02\x95\x84,\xcb\xcf\x97y+\x96h\x90-N\
+\x0eh\xbd\xf5\xf7U\x01\x05\xaa\x0aJ e\xf2\xa8\xba\
+\x82b8\x11\x83\xea\x1ebV\x91Xq\xdf\xad\x07\xf8\
+\x9d\x22uL\xf7}\xfc\x08\xb3\x5c\xf9\xee\x11\x1dr\xf4\
+2r\xc0\xe6\xe5\xc1f\x15\x82\xcez\xa9\xab\xdelH\
+\xa8\x8cb\xce\x129\xa6>o\xd0\xf1\xb4~\xf7\xeb%\
+\xbd\xd0T\xc6\xb4\x9f\x22\xef\xe7\x09\xf5/h\xde\x8b+\
+\xa2\xbb\xd7\xac\xba\xae\x1f\xf5\x15\xb1vW\xb3\xea>\xad\
+f\x96!\xe3\xe7\xb4\xe7\xe4\x16\x96\xad\xad\x85\xc5!\xad\
+\xda\x17\xba\xcb\x93]\xa6\x16\xb1\x85+\x99@\xf5\xd6w\
+\xd7'\xbbN2\x97S\x0a\x17\xc3pk\xb3B\xb2\xe7\
+\xfe\x85ZT\x08l=P\x83\x13\x80\x96\x22c\xe7\xbe\
+\xba\xec\xb7\x0eu\x06Q\xb1d\x8f(qYF\xfc\x09\
+\xcd\xa7\xf6u\xb3t\xfcJ\xfb\x95\xc1Wz\x95\x8f.\
+\xdd\x87\x19\xbb&\xdbE$|\xafdY\xcc\x1f\x9a,\
+\xe6\xe0P\xb3\xdc\xe2\x94\x13\x17\xdd\xb5f\x15\x92\x83\xa3\
+\x12R\xed\xf2\xc9\x96\xab\x12>\x90\xcci^tG&\
+;\xaa\x8c\x87\xee+f\x95J\xc0~f\x85\x1c\x8c\x80\
+!\x93\x18\x1a\xcb\xff'\xcd\xc4\x8a\xbfB\xe1\x82\xe8~\
+bV\xf9\x03\xacw\xfc}\x11\xb3\x82\x10\xcbr\x97\x9f\
+\xae\x10A\x22\xa1E\x16nx\x9dY\xfa\xb9M\xd6(\
+\xc0M\xe3|\xd8\x99U\xc86*\xdebu\x87\xab\x03\
+N\x92\xee\xd7f\xd5zC\xab\x93\x0a.\xf9zv\xab\
+\xb8/P\xd90/\xe0f\xa99l[\x05\xa8\x0f\xe7\
+Zt\xbf\x9e\x9d\xa8}\xef\x80\x8a\xcb\x8a\x1ef\xaeK\
+\xad\x93\xae\x1fO \xc2\xbe\xae\x04\x84'\x18\x8d\x0b\xa3\
+U w}\xd5;O\xcf62\xa5\x04z I\x09\
+\xd4I\xd4\xaf\xa2}\xd2\xc2\xd2\xa5+?\x98\x8a2-\
+\x05$\x00\x94\x90\xf3\x84\x04\xc8_\x12\xb5\xc8\x9d\xca\x7f\
+kW0K\xf7\xef\xebi<}='P\x7f\x9ce\
+--\x11\xb6f\x85\xf0\xc3Of\xbd\xc1\xdf\x22\xce\x93\
+\x1a\x8e\x9f7~\x1b\xe4\xdb \x17i\xc5\xdd\xca\xac\xcc\
+_\x13\xd7\xcb\xf2zp P\xe0\xa1u\x8e\x84\x0e\x05\
+-\xfc\x84\x0d\x94h7\x86\x82\xaf\x16\xe4\x80\x9f/\xfe\
+\x1a\x81\x1b\xa4\x8d\x223\xf6\x0a;$\xc2\xb48\xd2\xb2\
+Le\x9b\x16A\x02A\x12\x84<G\x02A\x021\xfc\
+1\xfc4T}\x94\x10'\x81\xe1\x893\xf69H\x8b\
+i\xa1&0%\x81\x0dG\x13=\xff$\x00\x18\x7fJ\
+\x00{\xa2#\xb0\xd8\xa3v\xe5$\xd2\xac\xe3\x14L\x08\
+x\xd9\xff\xb9\x0e\xe2(\x12\x03\xb1b?\x99, \xf1\
+Q\x0cp\xa3\xeaY\xe4\xf6\xc2o'n\x8b2\x99\xf1\
+s^\xef[_r\xd4\xfbB\x85H\x89-\x04\x91\x93\
+`\xb2V\x88X\xe1\x8f\xd7\x15U\xd7\xf8\x9ep_\x9c\
+T\x94\xf3!>#\xde\x88=\xfcQ\xde\x90\xc4T\xac\
+\xf4\xf3\xfb\xa8\x16\xe7$\x803\xb2\x10B\x7f\xe3_\xab\
+\x02~\x12\x02\x91\xb5=\x92\xdc=\x9fs+\xe5\x81s\
+\xc2d4\x04-s\xddy\xfeQ\xf1\xa5\xb2G\x80\x0e\
+\xf9\x972\x9c^\x11b\x80\x11\xd0\x93xh\xf5y1\
+3\x14\x8f,\x88,t\x04\xc6,\xa4\xb1W\x9d\x8d<\
+\x9e'\xac\xd1\x90\x93\xf1:\x90\x04\xe8z\xeedV-\
+t\xb4\x0e\xb0\xb0\x13@\x12P\xa8B\x08D\xcd+\x85\
+J@\xf8\x82F\x86\x1a\x92&\x16.2\xb2\x04n,\
+\x8c\xf4\xf2\x83\x90\xc0A\x86<e\xc3\x9e\xbd?\x85\x0d\
+=\x04\xf6\xd0~a\x84\xfc\xcb\x07\xfa\xcd:O&x\
+d\xab\x04\x19A`\xce}\xa37\x8b\xf1C\xcb\x802\
+\xa2~\x1f\x09\xc8\x02y\xa2\x8f+ 9\xea\x19t\xf6\
+W\xae\x83q\x03\xe4\xfaQ!)\x98\xb8\x03\x91\x08\xb2\
+\x91\x00\xa1\xc7a\xc2\xb1\xe0\xbeI\xff\xda\x17\xe6\x80t\
+I\xcbk/\x07\xb8E\xf3\xb1\xe6c\x15{\xb4X[\
+=\xb0\x8e\xbdT\xdc?\x02Od\x9c \xc3\x82\xbc\xed\
+c\xfa\x5c*\x88\x90/\xb2\xd1\x12\x18\xd3\xbaBo=\
+:\xd5L|\x1c^\x90\x0b\xb4\x86\x90` 1@\x8f\
+ \xe3\x8c\xdeP*\xdcB\x02\x10PP\xd9\xf5\xc0\x12\
+(\xf9\xddfUf\x1b\x12A9\x1a\xdd\x9ef\x15T\
+\x8d\x8a%\x81\x98\x02xo\x15\xb8\xc6\xac\x9c\xaf\xf76\
+\x92A\x17\x9b?$W\xc9\xe9^1\x07\xb2z\xde>\
+\xffq\xd4\x98\xc7\xacSb\x95v9\x22d\xc8\x80\x84\
+\xc3\x22\xae\x0a?$L\x90\xea9\x09\x14\x8e\x10\x89K\
+\xf5\x96{F\x9c\xc4\x06=\xf1\x82H\xb7O\x9a\xa5\xe3\
+\x1cf\xa5\x12\xdaN1+=\xb1\x90\xaa\x82\x04h\xef\
+7K\xc7\x95\xcd\xd2\xf1_f\xd5FDB\x8d\xf9\xa1\
+\x9eVw\xe4\xe9\x855\xbd\xf9\x87+\xe8+\x09\xb4\xeb\
+\xe50\xb0\xbe\xfd\xa0w`\xba]\xfb\x8a\xeeh\x15U\
+\x9e\xae\xee\x13\x85\xcd\x89\xcd\x09\xcd\x09\x19\x12\xde\x8f\x07\
+\xa0\xc27\x9ae\xe8\xf3Q\x06}\xce\x7f\xb7\xde\xc1\x83\
+\xcc\xca\xf3\x18\xfc\xd8\xacp\x05\xb0n\xe5\x8a\xea4]\
+\xcfBy~\xf6\xbd\x9dj\xfd\x00\x99\xe0\x89B\xd4\x12\
+$w\x05\x97\x80W\xf0\xdf\xa5D\xd9\xf5r\xb8q4\
+\x19g\xb06\xab\xd7\x9b\x84\x88\xb3\xd8\xa3\x0eA%N\
+\xe3\xc6\xc2W\x0b`\xf3>\xf7\x9e\xaa\xb5L\xfb\x92#\
+q\xf6Nf\x95\xd7/\x98\x15\xd9\xdc\x5c\xd9J\x1b\x7f\
+{I\xb2K\xabu\xc6\x10c{\xa9%d)%\x10\
+\xe6\xabX\xfa\xe5(t\x17\xf6\x95\xdbt\xee\xbd\xe3-\
+\xce\x82\xee\xeffU\xe0.\xce\x9e\xee\x0ffU\xc0\x01\
+y\xa1\xd4>\x90\xb5k\xe6h\xdel\xe4{YU\xe0\
+\xf0\xc2\xb9\xe0d\x8f\x82\xa8\xe7\xf9\xb7Oi\xc5q\xd9\
+Q\xc8\x10I\xf8J\x06\x0e.\x89\xf6\x08\xb3\xb2Nz\
+\xe2B=\xe9\xcc\x9bn\x09\xb3\xc25\xd0~\xcfL\x10\
+\xfd\xf7\x8a\x9b\xe1\x17\x05\xb92\xfc\x82\x99\x12\xd9\xc8n\
+}\xaejyR/\xbe\xcf\x0b9\xbc^!7\xd9\xbc\
+\xcf\x08r\xff\x8d\xd2[N\xcb\x95\xcbv\x81\x944\xca\
+\xb53\x94\x88<\xba\x92%=\xa1\x9f\x17\x83\xfd\x93\xa5\
+\xfd\xa4]\xb6]v0\xbd$\xe2s\xa0yA\xb5\xde\
+\xaa\x85a\xec\x0b\x82|\xffA=\xbe\x90\xdd\xc1a \
+\x07?;\xe2\xd3\x0a\xb9g{\x85Y\xba\xfe5\x92\xbd\
+G\xaa\x01\xc6M\xb1G_\x98\x18\xbe\x92\xec\xe5j?\
+\xd6\xba\x8d\xea\x80;\x9e Z@\x12\x09*\x0e\xb4\xde\
+\xc9$Mf\xf0\x8ar\xfe \x1e\xbb\xab\xcc\xd4\x0a1\
+\xadJP\x87\x02\x07\xeb]\xb7\xadY:>!\x04\x8a\
+!\x11.N\xe7\xb5S\xb24\xcf\xdbk\xcc\x94\xf8\xfa\
+\x9b\xe6\xfb\x0d\xaa(N+\x09%*\xf1\x8e\xf8\x01i\
+bP\xffY\xca\xf5t/\x9b\xa5\xe3Jf%\xa1\xe4\
+GHi\x81\xd0C\xba&2A\x0f\xa0\x80\xd6SH\
+\x81\xec\x8f\xc0\x0c\xff\x09\xff\x06\x84'\xfe\x04\xbd\xcdG\
+\xa4\xf9uDE\xf2\x072LP~\x97\x85\x95\x7f\xe2\
+\xac\xf8\x04\xcc \x0a\xf1\xe7c\xeb&\x886\xc6;\x09\
+\x0e\x10o*@\x81\x94\xa4R\xea\xc8\x88\xc5\xb3\xee\x92\
+\xa9\xc7\xe4\x04\x9c\x07\xc6J\xec\xf9\xfe\xc6?\xb8\x0c\x08\
+$y\xfe\xb4\xec\xd0\xfaH\xc1\x81\xd62\xf6\x1b\xfe\x81\
+TXY\xf3e\xd3^\xfe\xd4\x0b<\x5c7\x01\x0f\xba\
+\xf4\x22\xfb\xf4\xfb\xa6\xfb\xee\xf3G*\x1e^8\x00Z\
+\xff\xb9\xb1\xcff$%\xf1\x05\x81\x1a\x09\x18dy\xc5\
+\xd9\xe3\x05B*\xdb\x22u\xf5\xca1G8\xa0b\x00\
+Mb\x88\x82\x83\xf6\x1d/\x0cA\x168\x87YI\xd8\
+\xfa\xfd\x86\x9b)\x14\xfa<\xd1\x03\x12\x81\xe7\xa1\xd6T\
+G\xb0\x90\x00\xa0\xf2\x0f\xc2-\x06\xba\x9c?\xe3\x88\xfb\
+\x85_\x8e\x9fCa\x93\x84\x05\x05\x05\xfcx\x0al\xbc\
+\x9e\x80\x97\xfbL<\x11\x03\xdf\xd8\xeb\xce\xdf\xa3L`\
+\x84\xf4G9\xeeYDbO\xe2\x80yH\xc5=\x22\
+\xd9\xa3Lw \x01t\xee\x06\x12$\xf1\xba\xa2\xdaY\
+L\xb4\x90\xe8\xe6}\xbc\x0e\xbf5V\xf8c \x1f\x13\
+\x00\xf1\xf7\x5c\x0f\xfe~\xad\xe6\xd7\xda\xdb\xf8E\x94O\
+\xb0\xed\xf8\xe5\x99\xc9\x18`+u\x92\xbbZ\x16\xee\xcd\
+U@\xcd\xfb\x08\xe8x\xc0l0<\xd8\x98\xc9d\x00\
+\xf3`\x98\xe01\x01\xc0\xf7\xce\xa5\x81\xcf\xcf|^\xb8\
+P\xff\xbe(g\xc7@`\xe1\xe1\xfd\xb3\x07\xd6}\xfe\
+\xaeJ\x7f\xaew-_\xf5\xa0\x93\xa8\x00\x1a\xc4\x03#\
+\x10V\x00\xee\x90K\xce\x87\xfbC\xa5X=\xe08D\
+\xb9\xe5b\xc9\xc2\xaej\xd4[F\xbe\xc5\xc2\xe1\x01\x1d\
+\x13\x96\xc4\xc2\xacBdPI\xa5\xe2M\x02\x00H\xb7\
+*\xeb\x0e\xb1\x03\xca\xbe\x8eW\xfe\xfb\x04\x03\x0b]D\
+\x00HN0\x85a}\xaf\xbb\xa0o\x1e\x00\xd2\x03\xce\
+\xfd#@a\xa2\xf3=\x9c\x1f\x9c\x12\x1fRb\x02\xf6\
+Y\x91\xb69G\xc3m\xcaL\x16\xce\x87\x89\x95c\xee\
+/\x95\xda5\xd4JBF\x1a2I\xc9\xb1y\xa6\x16\
+\xee\x0b\xc8\x9f\x9e\xd7\x84d\x81%\xc0Co|\x03-\
+\xc0\x8c+\xc6)\x95I\x05\xe8>\x9e\xd9\xb8\xb8\x8f\x8c\
+{\xa0\x84\x9b\x98\x95\x0a\xbb\x07\xfel\x9c\xaa\x98\xb8\x1a\
+\x05\xf7\x97\x05\x1d\x1dw\xf5~g(\xf1\xd7\xaa\xdet\
+\x90&,L,\xa4\xe2J\xa0b\xea\x1b\xbf\xc8=a\
+W\xcf\x88\x9eAE.\x06\xc4\x5c=\xd3\x1e\xe0j\x9e\
+\xe7\xde\xc9]\xab^qA\xe9\x09\xd0F\x1f1\xabX\
+\x9b\x974+z\xbc\xee\xb0\xd3+H@N\xc2\x85V\
+\x086Dt\x83\xd5\xf3\xee\x8e\x05\xe3\x15(2\x1b/\
+duld$\x82\xb4\xd1\xd13\x1b\xa1\x9f\xde\x8b\xc8\
+\x86(G\xc8[\xae\x80\xd8C\x02&\xa8\xb4q\xb8\x1b\
+\x8b;d[\x04\xfeTf\xdb\x87\xcc\x0a\x9b{{\x8f\
+YI\x04Pi\xcc\x81\xa2\xf5\x86\x9ffV\xe6K&\
+\xf9\xda\xa4\xaa\x10,\xa5\xde\xd09z\x120*\x19\xce\
+\x05\xa0J\x0f\xef'\xf12\xda\xa0\xd71\xf7\x80\xfb\xbd\
+\xa35F&\xcf\xba\xb8Y%\x07%\x95\x83\xc1\xef\xcd\
+\x0a\xd9\x99\xaf\xdb8R\x97\xe5\x9a\xbb\x91\x7fu\x99d\
+\xd4\x12g[T\x90l\xf5\xe8B\x22\x07G\x8a\x93\xc5\
+\xc1M\xb2\x83*\xe4V\x81\xbeD\xa4mw\x94ub\
+4k\xb2\xd9\xc4\xc2\xfbT\x95\xf0#\x91E\x85\xcb*\
+\x8d\xa6W}\xb3Y\x86\xb8'+\x88\x0a\x10\x14\x1e \
+\x03m\x06) \xc7\xba}\x87Y:^d\x96\x8e\x7f\
+M\xf6`%k\x08\xf4\x96#\xfb\x8b\xd6\xa5\xeeP3\
+\x9d\xffg\xaa^W#\xdf[\x5c\x0e\xde\xfae_\x1e\
+\xec\x9b\xec\xf3\xa5gy\xf4I\xb3r~\x8e\x0c\x82\xfb\
+\xe9\x85\xee\xc5\xee\xc5\xd2\x0a\x90\xc6pN\x84u\x1f6\
+K\x9f\xb7\xe0`\xa1\x81\xa98\x9chV%^~h\
+Vz\xd7a\xf1oN4K\xaf\xff\x81Y\xd5sm\
+\x15hS%\xf8W\xb2g\x0br\xa5\xbd\xcf\xacpX\
+8\xa2F\x89Uz\xf2\xe1l`}#\xc0n7o\
+?f\x15\xfe\xe4\x84\xf5\x81\x8d\x10)\x1e`\x1arf\
+\xbf\xf4\xf3\x9cf\xe9xY\xb2\xcb\xab\xd6\xabo%\xfb\
+\xb6\x12\x97_\xaa81,0\x5c\xb18\xc0\xdd.\xc9\
+v-\x0e\xb6;\xdc\x86\xd0;P\xad%k\xe8u\xbb\
+T\x8e\x1f\x08\x1e]o&\xd1\xbcH\x89\xfd\x9b+$\
+\x94\x8d\xba\xb4\x8e\xb6\xb3\x9b)!\x99\xaeo\xfc\xa3f\
+b\x01\x7fG\xc5b\x8f\x9c\x1cd\x8c\x92\xa3\xcc\xd7\xf3\
+\xad\x12\xd0\xb3\xfe\x0e\xb7\x1dn7\xdc>\x1dw\x1f\xee\
+6\xfcd\xe5\xb7PX\x80\x15\x1e\x04$\xb2|\xfb$\
+\xfbl\xc5\xb9 $\x04\xdc\x00.\xb3\x8cL\x9d\x10[\
+\xdd\xcdf\xe9\xfb\x167+\x89\x80\xe1\xebf\x15\x09\x9c\
+\xcd\xc7\xe4\x87u\x9b\x99U\x88A%\x9a \xaft2\
+?#-49\xc5k\xcc2\x17E\xb2Je@\xeb\
+zV\xb1\x98\xa3jQ\x83\xd4\xf5\xf4l\xc5\x9f\x05q\
+h\x95\xe3O\x88\x8c\xda\xd44>\x97\xcc\x12d\xbfK\
+vw:>h\x96\x9e\xcf\x95f*\xb0\xec)\xe4\xc1\
+\xb5\xf2S\xd6\xad\xfc\x17\xdb5g\x94\x1eug\xfdf\
+\xdf\x82\xfb\x82\xc4\x0d\xe3I2\x8d\xbe\xae\x8a\xb5?\xad\
+\xb6\x1b\xd8z\xdb\xedoV\x90G\x90\xf5\xe5\xb0\xec\xe1\
+\x0aZOK\xc0qf\xe2\x9c9K\xeb\xf8\x86\x95\xfc\
+)\xeb0\xfe\x09-\x10\xacG\xa8k\x91(\xd6}\xf3\
+\x82\x02\xfe\x98\x12\xb5\xcd\xf2)@]>#8\x0e7\
+\x04\x87sz0\xde\x08|h\xa5\xa42~\x96Y\xf5\
+\x9c\xf0\xe3\xd5\xfb\xee\xfb\xa3\x90\x1a\xcev\xcf\xf9n\xa6\
+VE\xed\xfb$l\xbdB\x0e\x09\x22\x01\x1b\xc8\x07Z\
+2 ]CFR\x09N\x9e\xbb\xb7\x18\xe3\x1f\x10\xe8\
+QPc\x7f\xd4:\xe8\x7f\xd7\xfe\xe7\xf1NTm\x82\
+\xa4\x0fN)~O\xa1\x83\xf3\xe2\xf7Q\xd5\x0a\x8e\x00\
+\xb8 (\xa8\xa1\x16\x81\x7f\x88\x9fN\x81\x83}\x97\x80\
+3\x06\xd4 \x11(\x1c\x82\x0c\x10g\x86'\x04\xe0\xd0\
+\x22>\xa1RM\xe2\x00\xe4\x06\x85L\x8e\x11:O\x01\
+\x8c\xca8\x8eR,\xfc\x11\x00G\x12\xc1\xc9\xe4\xedb\
+\xc5\x9e\xb8\x22\x16\x10#9\xf7\xcb\x13\x11\xd0\x1e\x97\xf2\
+o\xb2@\x9b\xef\xe5\xbc&!\x03\xf4x\x8c\x9fC\x1c\
+\xec\xeb\x05\xaf\xe3\xfe\xf0:\x10\x0b\xc4\x911\x1e\x0d\xad\
+\xb0\x1e\xefr_\x99\xef\xa1\xe7\xdf\xef\x8b\xaew<\xbb\
+#uf\x80/\x8c\xec\x91\xb17c\xb2\x07\x22r$\
+\xcf\xec1 \x09\xb8\xf9\x9c\xd8\xd3\x00\x89!\xbd\xc4@\
+s\x82\xee\xbc\x9fg\x84\xfaG\x99\xb7y]\x06\xaf?\
+2!\xb8q\x1c\x09\xec8N\x96\x10\xa0\xe7x\xf6\x9e\
+\xbd\xd2\x03\xbb%\x84\x5cXU\x0b\xc5\x12\xae^\xd0\xdf\
+G\xee'\xb2\x82\x04\xba\xb1\x85\x80\x8a\x01\xe4k\xfc\x9e\
+\xde#\x02>2r\x0c\x5c\xae\x83J/\x01\xe6\xfc\xfa\
+\xbe9\x03\xc4^\x8e\xa7'p\xf8\x5c\xc8\x04_\xec{\
+\xd5\x9a5\x04\xed\xe4\x1f\x08\x07-8NRG\xa0\x8b\
+\xc3B\x00\x0e\xe4\x89\x09\x84\xe3A\xc0\xce\xc4\xe7\xfcY\
+\xf0\xe8\x11%\xd0\xd5\x86\xea\x15\xa4\x0f+\x10`\xc1[\
+H\xd7U2|\xfd\x84\xe0z\xe1\x90 \xd1\x01D\xdd\
+\x1c\x80*\x80\xf1\x84\xce\x22\x0a\xd4\x19\x07\xc8/\xc2^\
+\xcby\xac/\x99\x16\x16`\xce\x9b^sz\xec\x19'\
+T\x1a\xc5F\xef\xf2<T\xde\xf72K?\x7fI\xaa\
+\x16 \x0f CD\xb7\x9e\x9ex\x12$@O\x09\xf8\
+`\x07\xa6\xa7^PK\xffY\x19e\x1f\xd7@\xd5\xc8\
+\x14s\x9e\x22\xf5\xf3\x96\x11\x02`6\x14\x12MpE\
+P\xd9\xa0\xf7\x9b\xc4\x95\x1cP*+\x83\xef\x98U=\
+\xa4\x82T#?\xe8z\xced\x92\xa5k\x8eC\xe3\xd7\
+\xcb?\x12)1s]\xe4('\xc8\xaax\xe0\xfaO\
+\xbdN\xf3\xc4e\x11\x055\xf5J\x0e\x89!\x12\x0b\x0a\
+\x14\xbd2C\x85,\xff+\xbd\xf4\x0e\xbd\x96\xa3\xd5~\
+\xc3\xac$x\x9c\xfc\xeat\xb3t\xfc\x95Y:nb\
+\x96\x8e\xaf\x98\xa5\xe3'\xcc\x0at\xdc\xc9\xaa4\xae\xba\
+w\x9b\xb2w\xce\xd0\xf7\x09\x1c\xc9\x0a\xf9:\xf3E\xb1\
+\x08\xc3\xda\x1bu\xb0!\xe1\x81\x84\xf3{f\x85\xfd\xdb\
+{\xeaU\xf1\xe961+\xe3\xa0\xf9\xa9Y!Y\xa3\
+ek\xb0\xa6Y\xae\xf8fG\x18\xd2\xc1f\x98\x02\x96\
+a\x81\xfa;\x19\x17d\x99\x8c_A\xd4}\xbd\xa3e\
+\x052>HM%o\x95\x11\x01;U\x1c r\xac\
+\x91_\x1c\x9dj\x96\xee\xe77\xcd*\x15\x01!}\xda\
+]\xcc\xd2\xf1\x18\xb3\xaa\xb7\x1d\x1dn\x1cc\xc9\xa4\xb6\
+\xb7\x9a\xa5c\xce$(\x11\xbb\x8c\xa0\xdf+V\xe4M\
+\x9a_\xf9z\xcfP\x82\xc5\x02\xe6\xf9\x93-\xa0\xd6\x91\
+\xbb\x8b\xac.\x10m\x12\x1aT^\xdb\xe3\xcc\xe4\xb0\xfd\
+\xae@\xc7]5A\xcf\x81\xca|s\xa8YU\xd9\xd3\
+\xe7\xa13\xef\x81\xfc\xf4^-\xa2\xdb\xdd\xac\xc8\xfa\xe1\
+xz\xe0)\xbf\x02\xc8=d].\xc7\xf7\x94YN\
+ \xefk\x09\xe4\xf6\xa8\xf6\xc8\xd6\xc8\xea~\xdf#\x0d\
+\x90\x854\x06\x1b\xe3\xb0\xe9\xee0+l\xe9\x90\xe1\xf9\
+\xbe\xa8\xfd\xa6;\xb6;\xa63\xee\x8d\xd7\xcd\xd2\xebN\
+1+\xfb:dv\xf9<\xe6\x15\xf9\xda\xb2j\xb5\xf9\
+W\xa9\x10\xb7\x7fHvO\x91[\xcc-\x1a\x17\x09!\
+\xf1X\xc5\x09\xa0\xde\x7f\xc8\xe1P\x0b \xd0\xa2r\x9a\
+Y\xed\xbf[%\x18\xd5Z\xe2\xeb\x1e\x1c!\xfc,Y\
+G\xf6;\xa3,6\xd2\xe2\xe6@\xb3t>\xab\x98\xa5\
+\xf3;\xdbL\xad\x0cSK\x82t\xf4\xe9\x1e\xa9\xc6\xfc\
+E\x9d\xa2\x1d\xeb\xc7\xdf\xebg\x9b\xe5\xf1\x99\xf7\x97\xe6\
+\xcdfU\x05N\x15&81\xbc\xb5\x07d\x88\xcdw\
+#\xf1[\xd1\xac\xf2\x0bH\x8cR9F\xdd\x09\x84\x06\
+\xec\xee\xbc^\x89\xee\x19\x07\x9b\x95\x16(o\xc1\xa0U\
+F\xebe\xb7\xa8Y\xba\x8e\x95\xccJb\xa7[9\xd9\
+Je\xbcv\xe3\xc9f\x91\xfa\xc9e\x05i\xe7$\xb8\
+\x91\xbc\x1a\xe8\xb3]\xe5\xf2\xe59:\x04\x1c\xf2W!\
+A@\x98\x0c\x175K\xe7sW\xb2\xdf)auz\
+im\xf1@\x9b@\x1c\x95\x09\xc6\x07-C \x86x\
+\xdd\xdb\xdc\xaf\xe8\xd5JXWQ\x0f\xa0\xe5D-m\
+y\xbf~\xb2\x92\xd5\xb3p\xea\xde\xca\xef!\xf1o\xe9\
+\xf9O\x16\x95 \x12=\xa8\xdd\xb8\xac/2\x9c\x9a\x7f\
+N\xd6\x07+>\x5c\x0d\xf4|\xd3\x12\x087IdQ\
+\x0f\x88I\xaf\xec\x92\x10\x07\x1a\xcf\xf8\xc1\x9fFE\x0b\
+\xff\x1eD#~\x85\xe2\x02\x0a\x16\x8e\xcc\x99\xa6\x8a9\
+\x89\x03\xfcz\x8do\xe7r!\x00$\xf1A\x02\x8c\x8a\
+\xabZy\xdc_a\x5c\xa3\x16\x13e\xf4(h(\x8e\
+\xc9-[\x0f\x95\x00\xd8\x0bf\xf8\x9b\x04\xb0\x14TD\
+\x06\xee\xad\x99T\xe6\xf1W@&P\x99\xc7\x9f\x22\xd1\
+\x1c\xfc*Gl\x82(\x16\x87\x07j,3\x15\xd4x\
+^\xdc\x17\x02L\x9e\x17\xfb>-\x03\x9c'\xad\xb1J\
+\x10\xf8\xf9\x91\xb0\xa0b\xcd\xfe\x0cI5\x88\x0f\xfc\x0a\
+\xb8\x09\xf8\x1cH\xbe)\xc0\xe0\xaf\xc1\x1d\x85\x1c&-\
+\x0b%`\x9fH\x82\x17\xd9\xf0\xe3\xef9\xf2>\x02u\
+*\xfd\xa8\x8cE\xb2>\x12\x14\x04\xca\xf1{b\xbc\xcb\
+s\xe1u\xbc\x8f\xfb\xce\xe7\x81\xf4\xe1\xfa\x82\xda\x80'\
+\x16y\x1fqrT'#N\x8d\x88\xf5(\x0f_\xb7\
+\xec\xcf\xf2\x06\x5c\x00\xf2\xff\xc7\xf3\x8fm\x15\xa8\x929\
+\xe0\x8d1\xe3PW\xce\xe7\xac\x16^\x02~\xabg.\
+P\xbd\x9e\x09\x1b\xa1=\x93\xf44\xcc$C\x17{\x1e\
+&#\x89\xe0\xe7\xa8;\x8f\xec\x84t\xa4]_\x93\x1b\
+\xc5\xf5\xc6\x1bI\x80\x14\x13\x01\xdc\xc0\xd7\xf4\xc0_P\
+ >ebo\xc7h\xaa T\xda\xe8\xfd<\xdf\xac\
+\xcf[V\x1b\xf0BZhD\xaaU]O\x7f\xbd\x91\
+#\x81\x81\xc3\x02A&\x8f@\x88\x04\x80*\x7f\xbe\x10\
+\x93 @/}1\xfd\x9e\xf3\x99\xa6\x89\x06t\x9e\x89\
+\x0dr\x83\xfb\x8an\xf8\x0a\xe22 P%\xd0%\x01\
+@\xa0\xcf\xc0\xe5\xfc8\x8fH\x0e\x89\x83Ob\x01h\
+\x1d\xa4x\x82Ly\xef\x15\xcf\x8d\x0d\x88\x0d\x16\x87F\
+:\xce\x1e\xa0\x13\xe8\x13@/\xe2\xdc\x11pV\xf4\x13\
+\x84\x8a\xfc\xbb\xd5\xeb\x05\x07\x05\xf7\x15G\x07\x08>\x09\
+\x10\x16^\xee7\xf7\x8b\xf3\x01\xb9\x00)\x22\x01<2\
+\x9a\xc8\xc8\xf1~-\xe0\xde\x0a\xc3\xe7\x93\xa9\x07\xc9\x81\
+\xbc\x1a\x0b\x18\xe3\x87q\x8b#\x84\xfa\x81z\xd4=\xa1\
+\xc0\xf3Cw\x9b\xc4\x08\xe4\x80\x8c3\xf5\xc4yf\x9f\
+\x1e\xb9=\xcc\xaa\x05\x9d\xf7!\xef\x85\x5c'\x1b\xbc\xc8\
+~\xdao\x9bU\x88\x04\x8d\x07H~\xbc\xc7\x9bJ\x92\
+H\xacx\xee\x0e\xc1e=\x00A\xa1\x9ed\xc8\xa9\xa8\
+\xc0\xfb\xfa\xc1\xf8\xdcJ\xdc\x06$t\xe408\x97\x83\
+\x02!\x02pz\x06\x1d\xf9\x80l\x9e\x1ca\x87\x9a\x82\
+<\xd0\xbcA\x9e\xaf\xb9\xc8\xac\x0a0Uan\x974\
+K\xc7\xeb\xcc\xc4\x0e\x7foEn\xa8\xf1\xea,\xea\x92\
+es\xc8\x99\x9e?\x0e\xb1\x93\x8c\x11\xe03nX\x07\
+E\xc2\xd8~\xd6\xaczn\x8b\xa9\xc2sq\x7f\x9e\xa3\
+\xa7\xfa\x0ag\xf7%\xb3\xcaA\x10\x14\xb0\xfd\xb3Y\x05\
+\x89\xc7\xb1\xa2\xe7U\xe4\xa3)\x5c\xdc\xcc\x02FZE\
+\xe8\xd9\x051\x82\xec\x99\xcbIJ\xd6\x91\x84\x96\xcb\x90\
+\xc1\xc1`\xe9\x94\x93\xa4\xf2p\xae\x10<\x07V\x88\x92\
+{F\xf7Z\xa5\xc5:vsK\x82H\xbc\x5c\x06\x11\
+\xe4\x83\xe4\x10y\x1e\xedSf\x15\x04\x13]o8G\
+\xf8\x1cA\xe0\xdb\xbd\xcd\xaa\x8a\x94\xa9\x01l[\xb5\xc4\
+X]k[\xcd\xd7u*G~\x8f\xdcM_\xc8\x8a\
+l\xb6/\xab\xe73^\xc8\x872\xe9\xd3i\xe9\xd7\xa7\
+&\xfb\x8e\xd6\xd3w\xa9\xd7\xfd\xfa\xc2\xd6\xce\xbc\xcf\xdc\
+\x11g\x15n\x88\x9c\xaeZC\xdf\xff\xfe\xaarD\xef\
+\xdf\xa3f\x19\xba\x9d\x03Wg\x8bW\x22\x87\x84\x9f\xb3\
+\xfa+1\xd9\x1daV%\xca`Y\x17$9\xdf\xbf\
+es`\xf1\xdd\x91\x9d\xffJ\x83\x15\x07+eh\xff\
+%Y\xcd@\xbd\xee^\x11\xd4\xba\xd0\x9diVq'\
+\x08\xa9\xe5\xea2p\xab\xd0\x83\xfbq\xb3Bv\xe7\x81\
+\xe2YfJ\xd0\x9d\x93\xc7cf\xb7\xee\x96\xef\xde\x95\
+\x13\x05W&K\xeba\xfb\x9edkh\xbf\x9f\xb5\xcc\
+\xfb\xbc:\xedX\x90'\xa8u\x98\xc8_\xe6L\xd8\xa9\
+o=\xf1\xc0\x13\x07\x139O\x108\x04\x98\xda\xafr\
+K\xd8ze\x1f\xf4\x84\xc7/2&c\xac\xfd\x96\x99\
+\xc8\xd2\xf6.\x89\xa3\xc1\xdcf\x99\xcc/#-\xe00\
+i/j/n/\xae*G\xdf\xcdf\x7f\xefe<\
+\xafn~a-\x11\xdcG\x02\xff\xe1\xfafUe\xdc\
+\x12\x1di\xdc\xcd\xf8{\xb2G3\xf7\xc3\xb5\xb9\x15D\
+\x099\xf4\xc9Y7\x90\xef\xf2\xf5\x1a\xfdw*\x95\x1a\
+\xe7\xedRf\xea\xe1\x1f\x09\x91\xf1\xcb\xd2\x8a\x93I\xfa\
+\xd2>\xd0\xfd\xc3,\xbd\xee\x1ff\xe9}\x03\xa9\x1d(\
+\x81\x97\xe5\x0c\xdf'RB\xbbo\xaf%{\xb5\x90\xc8\
+v\xcf\x9b\xa5\x9f?`Vz\xf8\xb37\xf5R\x15\xc0\
+INmtR\xb2o\x15\xa8}\xde\xc5.)\xa4\x85\
+$\xd6\xf8\xfb\xe0=f\xc5/\x18mmV\x05(\xaa\
+\xf4;b\x0c.\x05\xf9\xb1\x90vz@\x06r\xcd\xe4\
+\xc2\x9eP%w\x7f\xad\xf3k\x95\xf5`\xf4\x16\xb3\xaa\
+\xd2{e\x1a%W\x16\x0e\x95\xdc\xd3\x7f\x8c\xd6\xef?\
+W\x09;\x91\x12\x83\xb4s?\x87D\x10\x89p\x05\x8e\
+\xec\x8fp\xf38\x82\x82}~\x9a8\xc2n\xca\x8a\xe9\
+\x96P\x7f5'\xd4\xf1C\xf0\x9bQ' \xa1\xc0\xfe\
+C\x82H\xd7\xef\xac\xf5$\x02~+\xff\xe2\x1eq\xe8\
+(Q\xeb\xaa\x01\xf2\x17\x5c\x1d@\x81\x9c\xb3\xcfS\xa9\
+\x864P2\x99.\xa7\x07W\x84\x12\xb2\x90M\x82\xe0\
+\xa1\x85\xaf{\xd6\xac\xacsp\x16\xd1\xaa\xe7d\x90\x14\
+>\xf4\xf9\xee\xff\xc0\x99\x03\xe2\x94@\x1b\xf2<\x8e$\
+\xa8\x09\xa8\x81\xd6#k\x88\xbf\xc5\xef\xf9\x19\x04,\xdc\
+\x00\x90\x05\x8ak\x84\xfd\xcf\xe31\x127\xfcL\xdc\x00\
+\x02\x83DM\xd4\xb1\x07\xc1\x00\x12Mr\x9f^\x08\xe1\
+\xbc\xf8\x19\x84\x00\xf1\x02\x15\xef\xc8vO\xa0\xcb}\xc1\
+O\xe5{\xa3\x1c\x1e\xaf\x8bl\xfb\x14tb\xc0\x1d[\
+\x92'\xfb}\xfc;~!\xe3\x0a\x12>\xae/~\xff\
+\x7f\xfa\x5c\x8e5\x92~zE>H\xa1-\xdew\xee\
+\x0f\xd7O\x9cI\xfcD\x1cM`\xcf\xbc\x8b\xaaz$\
+\xb0b\xcb;\xbf\xe7\xa8\xdf\x8f\xcfD\x92\xf0F\xc77\
+\x0a\xb0#\x0ba\x84H\xc4\xdf\xf3/\x06\xee\x91\xe5\x91\
+c\xa8\xdc\xf9\x83 \xa3B`\xca\x0d\xe2F\xb2\xe0q\
+\x83\xc9\xbc\xe8\xc1\xba\xec\x1d\x03\x88\xef\x89d\x13\x91\x95\
+\x12\x96Id~\x80T\xc7\x16\x04\x12)\x0a\xe8]>\
+D\x09\x04\x0fp\x91\x03\x5cq\xa2\x1e\xa8'\x1a\xf8<\
+\x05<\xde\x9b\x89\xac\x1b\x90\x1c\xc9=y\xa5\x96\x8d\x86\
+L1,\xedK( ^I\x01\xf1j\x82\xf4/\x16\
+\x10\x1a\x91\x03\x81\xfb\xf0\xa2\xee\xff\x8b\x92\x9f\x19\x0a\xaa\
+\x1e!'\xdc\xd7H\xf6\xc1s%\xb3\xaa\x0a\x04\x8e\x85\
+#\x04\xc8p\x02=S\xa0\xeb\x014\x81\xf8+\x8e\x1c\
+\xe9\xcfO2\x80\xe9\xa9\xf4\xd0w>\x07\x08\x17G\x12\
+\x05<o\xe4[\xd8\xf0\xc8\xb0\xad\xe0\xf2\x82\xfd\xfd\x89\
+d1!\xf0w\xe8-=\xfb\x90\xaa\xb1!p\xdd\xb4\
+\x08\x90h 3\xc7\xf8\x8d\x09\x9d\xd8\xe3D\x86\x90^\
+79T\x9e\xf0\xe0>\xb2\xf0\x9cfV\xddoq4\
+\xc0~\xedz\xeb\xfcC\xad\x82\x8a\x82*\x03^q\x00\
+\x09\xc0\xbc\xd5\x06\xcbuxO\x1d\x81%\x15\x10\xb83\
+\x18\xa7$B\xb4\xf1y\xe5\x12\x0e\x096\x10\x02`\xa0\
+\x92\x223r\x1diH\x18\xc9<\x0bR\xce\xfdu\x92\
+\xa7\xa3\xb2\x95V\x05\xddG*\xba8r 4\x5cf\
+J\xfa\xd3\x0e\xd1c#\x86\x03A\xac\xdf\x04$\xae\xe3\
+\xad\x80%\xf7\xac>Z8P\xda9\xcdJ\xef=\x09\
+\x1e\x0f\x1c\x95\x81\x87\xbd\x9c\xf9\xee\x95}H\x0e\x8f4\
+\xab\x1c;6b\xa0\xf2\xf4\xf0\xd2\xe2\x02BE*\x06\
+\xee\xd8\x0b\x9a\x9d\x82\xc0\xbe\x07y59\xfe\x1fV\xaf\
+%=\xbb\xaa0\x0c>i\x96\xae\xe3\xa3fU\x02\x09\
+\x07[$b\xe9i\xf4\x09\x03s\x0b\x1eS\xe2e\xd3\
+\xaa\xf2!\xe8g\xee\xc9|\xacJ0\xc1\x8d@\x80\x84\
+#\xa2\xd6\x90\xdc\xe3\xbd\xb06\xcc'*\x88\xa8*/\
+\xcd\xbc}o1\xf7\x9bD\x8e\x8f\x032\xed\xaa\x9c\xfb\
+z\x07i\xa0\x12)\xdd\x96f\xd5\xfa\xcbs\xfe\x9dY\
+\xb5\xdei\x1c3\xcf\x9c\x93\xc2*m\x17\x14(mN\
+`\xedV\xedc\xb6\xca\xccU\xf5\xf0\x0a\x22\x0eG@\
+C\xa2U\x8e\xf6h\xf1d\x8b\x15\xb6\xf6\x1c\xa8]3\
+!\x91\xd9\x934\x1a$\xf7\xd3R\x03\xf9\xa6X\xb9?\
+\xa6Jer\xa8\xc7/7K/_\xb1\xaf\xb8\xb2~\
+u\x9b\xf7\x10\xed\x14\xe6\xf6\xbd\xc7\xaa\x8c\xd1\xe2\xe0\xac\
+\xe2j}\x01\xc1\xc1u{\xa0n-\x1cS2\x9b}\
+cl\xf6\x5c\x87\xd5S\xad\xa2J\xa5\xb4\xdb\xca\xac\x22\
+\xab\xa45K\x8eL{\xa0Y\x85d\x80\xeb\x04\xa4\x88\
+\xd6CH\xea,\xbd`\x09\x86\xee0\xb3J\xbe\xef_\
+B\xbe\x08\x81D\x05\x8f\xde\xe0\xe6\xabf\xb9\xb7y\xe1\
+L.\x08'\x06\x156\xb5\xe4\x8d\xde\xd1\x07\xba\xce\x19\
+\xa3@\xd7+\xacT\xc6\x90\xf3T\xe2\x80\x16\xa8\xb1\x1f\
+\xaaW\xfaD\xb1\x94\xabB\xeb\x89\x5cA|\xa9\xd0\x92\
+\x00e]\x1f\xdcd\x96\xae\xef\xfb\xdd\xc1\xdd\xc1E\xae\
+\xb4]\xdc,\x1d?e\x96^7\xafYi\xc9\xf3\x1e\
+|\x90 w\x99\x15\xc4\xd9\x8c\x1b\xcc\xd2\xfb\xd66K\
+\xdf;\xddLP\xf4\x03\x0a\x22\xc8IC\xe9\x85V`\
+F\x22\x08\xb26\x13\xa14\x19J\x906\xae&`H\
+\x8d\xe4/u\x87'\xfbj\x91\xcf\xcc\x88\x03k\xc9x\
+\xcd,\xb9\x15O\x9b\xa5\xf7\x7f\xd5L\xfb\xd0o\x8b\xec\
+\x5c>\x8f\xd9J\xebH\xba\x1f\xc9*\xd6|+_<\
+Z!\xf0\x8c\xd1e'\xb5\xaal\xac\xc0\xf3\xbc\xea9\
+\xc1N\xcf\xbe\xafV4\x12\x0f\xa8\xeb\x18wC\xbbl\
+E*\xb7\x9aYA\xa8\xc1\xad\xe2\xfb\x1d\x85\x0ed\x12\
+!\x8f\xe4>Z\xba\xe1(!\x81\xe6\xaf\xc6\xab8+\
+\xe0\x10\xf1\xbf\x8f\x8f\x06\xa3qA\xe4\x7f^U\x8a#\
+\xa2\x94\xca=-\x81\x9a7\xbe?R\x10\xc1\x8f\x0a\x01\
+\xa6't\xd5\xeaAb\xc9U?\x8eW\x0b\xc5\xe1i\
+\xde\x1c^\xf6I\x0f@\xe7\x90\xff\x0a4\x5c\xaaD\x8e\
+|$ \x81\xad_\x88\xd3\xb4\xba/aj\x19\x1e\x98\
+S\x00\x00\x92\xaf\xf3\x86\x1b\xc1\xb9\x80\xf0\x9bH\x04\xb0\
+\xff\xc1=\x04)/\x01\x12\x09\x15\xfc\xb75\xe5_\xd2\
+z\xa0\x96\x0e\xe4\xa1\xf3x=\xbc\x92\xad\x14G\x92\xb7\
+\x06\x820\xc5\xef9.[\xf1\xe39?Z\x07Q[\
+\x10r\xa4\x92\x1b\xec\xf7E*\xe6\xf4\xec\x13?\xc0\x19\
+E\xc1L\x052\xb8/\x1c\xc1\x84\xda\x05\xfe,2\xe6\
+pZ\x05\xe8=\x894/\x14\xb1\x9f\x92\x08 0e\
+<\xf1\xb9\xf8C\x90\x1f\xd3\xe2\x80\xff\x05rA\xeb\xa2\
+'\xbc!\x15d\xbd\x8cq\x02\x08\x8a\x18\xf0\x07\xb6\xff\
+\x99Z\x03bB \xca\xf3\xf1\xb9\x14l#2\x22\xca\
+\x0f\xf2\xfe('\xa8\xcfs\x99aZm\xf8\x9e\xd8R\
+\x10[\x05\xb8N\xfc\x90 \x1f\xef~o\xe4\xca\xe3\xfa\
+x~1\xe0\xa7`\xcf\xf3\x06\xa1\xc5sF6\x94\xf8\
+Y\xdf;\xee'XgF^\xaa.\xc4\xfe\xaf\x7f\x9e\
+\xac\xe7\x22\x927pC\xffS\xa6$~^\xbc\xf1d\
+D\xc8\x10\xb1P\xe3\xb8\x81\x1c\x90\xc3\xd9\xac%\xe88\
+\x81\x1e\x90\xb0\x08\xb1\xe0{8O\x02\xdd\x18h1P\
+C@\xec:\xef\x0441P\x0c\x0bl\x93\x00\x00 \
+\x00IDAT&\x90\xa3\x82\xcf\x82\xcb@\xe1s\x19\
+\x10T6H\x10\xf0z\x16L\x02K\x12\x06,\xfc|\
+>\x08\x8c\xa8\x92\x00\xcb$\x89\x0b\xc8\x18q`\xe7\x9a\
+\x04Z\x12'\xd8k\xfa\xdci\x139!|\x02\xc7\x00\
+\x96\x04\x0c\xbd\xd7\xfc\x1e2\x18\x10\x22\xa55\xa0GD\
+,\x17\x8e\x5c\xdf\xebA\xf6\x83\xfb\xfc\xa4\xbe\xe7i\x9d\
+\x07\xe7\xcb\xc4\xe0\xbe\xf0}\xdc\xef\xdf\x8f\xdd\x9d'.\
+\x13\x1bG\x9a\xf3E6\x11yA\xc6\x09\x1b-\x13\x0d\
+Vo\xd4\x1d8?\xbe\x8f\x8d\x80\xfb\xc9s\xd1\xc2J\
+&\xdb\x03Q\xdeG\xa5\x1b\xc8%\xcf\x8d\x85\x19\xe8>\
+\x19e\xd8o!\x1fd\xdc\xc4\x85\x82\xe7Eb\x8b\xcc\
+\x22\x89\x0a]\x87;\xae\x0aHq\xc4M\x1f8\xcbt\
+Q\xf9\xa6WP\x1bTs\x9bYI\xb4y\x05W\x1b\
+\x96\x07\xb2r\xb4\x1c\xb2(\x96sw\xc4\xd1\xad\x17\xab\
+|;\xc3\xacJ\xbc\xb1\x10\x0bj\xe9\x0e\x01\x95\x03\x91\
+\x0b\x02\x19wd\x00\x1b7\x15Q9\xd28\xda.O\
+\x08t\xf7\xd0l\xde\x8a\xe3\xbd\xbe$\x08\x84,\x82\x8b\
+\x03\xa8(\xf7\xa5\xbd\xc0\xac\x90s\xd1Z\xe1\x09!A\
+\x87]\xb6\x0b\xb6fq/L\x80\xae\x1eQ\xcd;\x02\
+\x07*\xe3@2Uy!!\xe5\xf7Ud|\x0e\xf1\
+'\x11\xf2\xf5l\xde\x9b\xedrC\x1a/\xcebN\xa5\
+\xfc|\xb3t|Y-\x0a\xcb\xb4\xefl\xdfYU\x9e\
+\xd4\xab\x09\x94zx\xfb\xf0\x8e\xe1\x1dY'~\x9b\xac\
+\x13/G\xa9\xbd-\xd9\xadZ'\x9e\xae\xa0\xe7\xb0\xd8\
+\xef\xd5\xedm2e^\xc9a\xfe(3\xefl\xf2\xf3\
+\x9bU2\x85\xc6\xad\xb0^q\xd4P#\xf0\x04\x9d\x9e\
+\xb7\xcb3)\x00\x80\x9d\x9aD1\xa4\x92\xdez!\xa8\
+\xb6\xab9\xf0:U\xd2\xda/\x9b\x15\xd2=o=\x10\
+Y\xa9\x07\xcc\xc8\xefY\xc0\xbbY\x05U\xb5U\xca\xae\
+\xe3/fUE\xf25\xb3*q'\x96u\x02t\x12\
+m\xce\x8amn\xf0\xddU\x22\xc1T\x08\xeeM\x01\xde\
+\x15\xc9R\xe0?\xf8\xbcY\x197\xc3\xfb\x86\xf7\x0e\xd3\
+\xdf\xbb\xfb\xcdJ\xc2\xa1\xfd\xa3YN\xbc\xf5\xf7\x079\
+-\x1c|*\x19@h%\xc7\xd8^kVZ\xf9\xba\
+G\xcdJ/.\x08\x06\xd4\x13\xbc\xc5a9\xb3\xf4\xf7\
+\x1b\xcd\x8a\x5c\x18\x01\xae\xebT\x8b\xa4\x93\x80\xa3{\xc0\
+,]\xc7t\xb3B\xee\xc6\xbc\xa5R\xcf\xf8\xa6\xd5\x01\
+\x04\x07\x09\xd0\xf6\xbbf\xe9\xe7o\x98\xe5\x8a\xe2\x072\
+R\xf0\x8a\xb1+\xcd1\xb6\xb4SN<i\xbex\xa5\
+\x97V!\x022\xd6Q!\xce\xba\xdf\x9b\xe5\xfb\xddW\
+L\xf7\xeb\xe7g{K{\xb3\xc9\x16\xe6\xd5\xfc\xe1L\
+\x0a\xd9\xb3\xf8\xdf.D\x05-\x16J\xc4BN\xe8\xb2\
+jS{D\x5c\xf77\xb3\xf2woe\x12[z\xfb\
+K\xb3\xb4\x9d\xec>\xbe\xc7\xf8\x1ey\x9d\xeaIw\x91\
+Q3\xe4C\x0a\xb0\xba\xf3\x93] \xd2FC\xc8\xdc\
+\x9f\xec\x81*p\x05a\xc4\xbe\x82\x9a\x06j\x1d\x7f6\
++\x01\x82\x93 \x8b[(?\x8dC\xc4z\x9f\xf6\xb5\
+n\xb1d\x8b\xe6\x04\xd1B\x96 j\xa66\xcf[\xcb\
+Cw_wow_\xe1\x14@\x95\x22\x93\x04nS\
+\xb5\x1a\xa2\x8ea\xea\x1c\xff(\x09%\x97\xcfTkP\
+>\xbb\xdb\x0b\xcb\xfe\xe8p\xb3BF\xe9l\xfe8\xe0\
+$2\xffj\x96>\xf78\xb3JfW\xc8$d5\
+q\xfb\x08\xe0\x8di%s\xad\x808\x04\xc9\xc8<g\
+|\x10xs\x84\xdc\xcf\xc2\xf4\xbf\xc8\xdf\xb6D\xd0\xad\
+f\xa5\x82\xd8\xceoV\xb5\x86\xe2GS\x18\xa2\x00\xc5\
+\xf7\xeaz\xbc`\x04r\x85\x0a6\x10u\x12\xb2\xa8\x15\
+\x89\xd3&\x93`\x1e]\xb5B\x91X>\xb5\xf9\x8e\xed\
+\x13\xc9+8\xcc\xfc\x02\xe4?\xd3(\xcc$\x9c\xa3]\
+\xcc\xde\x80]\x9dJ\xab\xc8\xf8\x1cy\xf9\x7f\xaa\xac\xcb\
+\xcfE\xc5\xa1\xfb\xb3Y\x95\xc8@\xb6S\x88\xd0\x8c\xe8\
+8\xa9\xec\xfb\xae\xf6\x04\x92\x0b\x04\x06\x05%*\xe1\xf4\
+\xa8\x7f~l\xdf\xb1}3\x22\xb3\xe7\xc4B^\x11N\
+\x9as\xcd\xca\xe7z\xa2\x86q\xcd>LK\x00\xfe\x10\
+\x9ci\xa8\x8b\x90\xf0\xc3\xef\xa0\x92\xcey \x1b\x0d\xd2\
+\x0e\x84\x1f\x019\x015\x03\x8e\xc0\x90\xc2\x22$\xb3 \
+-D\x86\x0a\x14\xdfI\x8a\xdf\x9b\xad\x14\xa8@\xec\xc1\
+\xc5\xa3\x16\x14\x0fl\xf179O\x02|\x12h\x8c'\
+\x12\x17\xe1\xe8\x90\x7f\x10\x10\xb1g^-\x22>\x1e\xe0\
+\x16\x88\x9c\x011^\x8b\xdcn\xfc>\xb6\x96\xc7#q\
+Dl\x1d\x88\xb2\x82\xb1@\x1c\x0b\xd1\x9c?\xe7\xc71\
+\xc6\x97\xc4\xcd1!\x81\x1f\x17\x13\x01\xc4M\xc41\xf8\
+\xe7\x9c\x07\xcf\x9f\xeb'\x1eQ\xbc\xeb\x05\x1d\x90\xc4 \
+?\xe1\x8a#!\xa3\xf5m|\x02\xcb?\x1725\x90\
+2<\xff\x06$\x0a$\x06\xb8\xb0x\x81Sg\x82\xc4\
+\xf7\x15x \xb7\xf1\x06\x11\xf0\x07\x92\x04gu\x8f\xdc\
+\x04\xdc n\x0c\x15\x10\xb1\xec{@E\x06+f\x98\
+x\xa01QA\xa2\x81\x09\x1a38\x81\xb3\x80\xcc\x97\
+\xf7\xd43\x10\xc84\x11h\xab\x92\x06;f\xb3\x95z\
+\xd2\xe9Ey6\x04\xb0$8\xd88x\xa0\xb1\xa2<\
+\x8b>\x9f\xcc\x90\xf4.\xfd\xbaI4Py\xa6\xf7\x99\
+^w*\xdc\x5cWl\xcd\x88\xe4\x11e\x00O\xe8m\
+\xf1\x81L/\x0f\x90} \xecd\x0e\xc9\x8c\x03\xddg\
+\x9c\x90`\xa8\xf5lgL \x95\xe9+\x9c\xb0\xbb\xe3\
+\x880a\x1eR\xcf\x95\x16P'u\xe1u\x8c\x1f\xd8\
+zoL\x0b\xdd\x8dUe\x9a\xd6\x02\xbew\x8a\xc6\xa1\
+*@\xcdz\x1aO\xa1\xe7\xcd!\xbb\xf4`\xd1\xf3F\
+\xe2\x81D\x0e\x19S\x16n\x02r\x12\x0e,\xf8$b\
+\x98\xf8@\xeb\x08pU\xf1\x86\xad\xd7\x13\x0c\x913\x83\
+\xf1\xc2\xc6G\xa0\xc8\xf8\xe1{XP\xe2\x82\xc8s\xe1\
+\xf7@\xf5\x81\xc2\x8b\xa3\xc1\xc9\x065\xde\xbc\xa7\xdb\x1c\
+\xc8\xfb\xab\x1e?t\x91\xe5\xd0\xf8<$\x00?\xde\xac\
+\x9ao\xdc\x1f\x02T\xc9\xfc\xf0:\xaf\xa0\xf3> \x99\
+$r\x08\x18\xb8/l\x8c\x82pZ\xbd!W\x1cP\
+_\x90\xbc\x92\x93\xd0iA\xf6\x84\x0a\x1c%$@\x04\
+\x9duh\xacH\x0a\x9bY\xccJ\x8f\xb8\xf7\x082\xfe\
+\xe5\xe0\xb8\x9e\xbb\xa0\xdc^i\x84=\x175\x07\xe6\x15\
+\x90]\x05\x96\xae^\xf0\x88Y\xc5\xaa\xac\x8d\xd7e\xda\
+T\xf1G\xd5\xc0\x03\x7fU*\x9c\xedZ\xad\x1bN\xea\
+\x08\xd4}]\xb3t\xbc\xd3,\xab\x0e\xe4^\xe5\xf6z\
+\xb3t|B\xfa\xf3\xf3\xa6Y6of\xcb\xfenf\
+\xcb\xfe\xd4\xd8\x9e\x19\xea\xbe~_1F\xf5#m\xf3\
+\xff\xcc\x1b\xbd\xb9\xdf?-\xa4[8\x1a.\xcf\x05\xdb\
+\xbc\xd4N\xda\xdb\xcd\xd2q-\xb3\xd2SOb\xa7]\
+\xc3\xacp\x0dP\x01\xa4\x22\x09\x82\x88\x84\x94s\x00H\
+\xed\xc4u\xe3\xe9\x91\xa7\xd2,h7\xf3\xd6\xa1\xc6\xcc\
+gZGh\xcd\xd08\x1c\x1ddV\xce?\x93Z\xfd\
+\xa4\xda_W\xcd\xca\xd9\xbd|\xe6bB\xd2\xecY\xd6\
+\x95ns\xb3\xaa\xb5\x85\xca4H\x1b\xc6\x1f\xfa\xe3\xf3\
+\x98\x15\x07\x17\x12\xcfv\xaaY:nlV\xd6{\x02\
+\xe5\xe1}f\x0a\xe0\x7f\x9e^\xf7\x96d\xf3W\xeb?\
+\x10\xd3\xd3G\xa7eh\xae\x05r\x96\xd8\x19\xef\xf5\xe6\
+\xd3X\xeb\xb99DN\xe7\x15-\x90!<W*\xa5\
+\xab\x98IEb\x95\x0a\xa1\xa2\x8aW\xfb?f\x82H\
+?^ \xbd\xdcO\x12\xa6\xc8i\x0e\x972K\xc7\x17\
+\xcc\xd2i\x1fmV\xed\x87\xe2\xe0\xf0y\xa2\xc4\x04-\
++\xed\x09f%1\xd8\x1efV!\x9fpxA\x5c\
+\xa9\xf5\xc8+\x94\x0a\x0ca\xed\xf6\xfd\x8aJ$*\x06\
+\x22\xb3#QcT\x95V\xa9\x83C\x04Vr\xef!\
+G\x86R\x8e\xbb\xff\x1d\xe83\xea1$V\xde\xd1-\
+\xd3\x19g\xc2\xebfU@1\xa7Y9O\x10\x19$\
+\x82\xf2\xfb\xd3u\x0f\x17J\xb6\xa0Z\xb3N\xae\xe6\xc7\
+/\xfaV\x82n\x0b\xb3\x0a\x19\x06\xc4<\xfaq\xc8\xab\
+\xc1\x05sR\xb2o*A\xb9y\xa9Pv\xb3\x99\xe5\
+q<\xc8\xe3x\xeef.k\xad\xea\xa6\x98\xa5\xe3\x8b\
+=y%\x5c\x11\xdd\xc7\xcd\xca\xbe\xee-\x1b\xc8\xfc*\
+\x01I\xa51sK\x1cW9\xda\xb4\x18\xa2\xfe\xc3\xb8\
+\xd2}u\xc4\x9d\xd4^\xe0x\x81|\xd0\x91j?\xe8\
+I\x98\x0d\x87aH\x0c8e\xfc\xf9HF\x92}\x9f\
+V4\x97\xc1\xd5<\x1d\xbd\xcf\xac@\xee}\xbd~\xb2\
+yr$H\xb0%\x02\xf3~z}I81\xcey\
+.YM\xe5\x8b\x15B/\xfd\x9f\x11?iw\xcd\x15\
+J\x10\x08RM\xc9\xcc\x14\xdb\xa8`\xf0\xd3R\xa1w\
+D\xd9\xbe\x0a\x88\xf1\x97(\xa0Q\xc1V\xab\xd0\xd8.\
+c\xbb\xe6\x16-\xed\xf7\x0e\xf9\xff\xbb\xfc\x1f\xb8\xb0\x1e\
+Q\x8f;\xaaO\xfb\x99\x15D\xdeL\x852\xfc5U\
+\xe8\xdb\xdd\xcc\xaa\xd6\x0b\xf6w\x9e+\xfe\x0e\xdcN\x0a\
+t\xba\xbf\x9a\x15\xe4\x9b\x93\x15\x02\xed\x06\xb9x\x89*\
+\xf1T\xc0\x19\xcf\xc4\x03\xba?\xfe<\xd76\xab\xf6M\
+%N\xf07\xe0L\xf1\xf9 \xbf\xc7\x03m\x12+\xa8\
+H\x10g\xe0G\xa3:\xc1:\x8a\xdf\x002\x93\x80\x1b\
+YB\xee\x03~\x1a\xad\x19\xf2+\xbd\xd5\x0a\xb2?\xe4\
+\xc0E\x22\xea\xf1\x05\x08B\xfc>\xb8\x0a\xd8\xe7\xe0*\
+\x10\x19\xa8\xcbQ\x92\xa0\xa0 \xc5\xef\xf9>\x12k|\
+.\xaf'\x81\xccz\x19+\xe1\xf8\xd1$\xae \xcd#\
+A@|\x1a+\xee\x11\xa9\x8e\x7f\x1bU\x01\xf0\x9b\x89\
+\xcfb\x02!&\x02\x22\xa7\x00\xdf\x1bI\xeey\x1e\x93\
+\xa9\xe7\xe1\xf7F9@\xfc<\xe6\x03\xe7\xc1\xe7\x05\xf2\
+>?\x9fXH\x05\x11O\xbc\xc7\xf52O\xb8.\xf9\
+\xff\xe3\xce\xea\x8f\x1c\x1b=\xfc\xc8\xfb=\x9fy\xd0\x9d\
+L\x87#\x0e\x93W\xac\xb9\xc0:\x910\xa5\x0axb\
+\x0f\xc5\x8b\x01\x8a\x01\x19\x03\x81/\x1b\x9c\x06\x9cC\x9c\
+co\x08\x9fG\x85\x9e\x89\xc3@\x89\xec\xf2\xf1\x01\x11\
+(\xd3k\x0eDP\x95H\x1f\xa0\x5c\xcf\xcc\x19\xa8\x1e\
+\x81\xc0\xfb\x80\xaa3\xb0\xd8X\xe8\xe9\x06\xda\xb9\x9e*\
+\xc6\xd35\xa0\x08\x9c\xa5#\xea\x99\xc4\xd9B\xaf\x07P\
+\x0f\x1ed\xa3D\xc4\x03\xaat\xbcCl\xeb\xdcw\xae\
+?\xb6B@\xb2\x17\xc9.\x22\xeb\xe4X\x90Y\x8c\xcf\
+-\xcaz0qK%\xbd\xff\x99\x80\x93\x01\x8eC\xa5\
+L\x94\xebIGH\x0b\x89\x1d\x91\xd387\xc4\xdcz\
+]\xa9\x98\xf7\xe7=\xb7z\xdd\x95y\xf4\x8a1\x09\x16\
+\x9e\x7f\xe4\x10\x18\xea\xb92A\x9f\xf4\x1e\x9d\x89\x89\x14\
+\xae\x87\x8c,\x09\x14\x16.62^\xcf\xc2}\xbbY\
+\x95\x98`\xa2\xb2P\x0b\xea\xe5\xcf\x85\x05\x8b\x05\x82\xfb\
+\xcb\xefyn\xcc\x17>\x8f\x0d\x94\xf9 \x04\x80#\x15\
+\x04\xdd\xf4\x85\x84\x85_\x1b\xcf\xe8kf\xa5B\xef\x01\
+#\xf3\x17\x07\x8f\x05\x9c@\x81\xf9\x00d[\xec\xe0\x9e\
+Y>\xc1\xacr0\xd4\xb3G\xe0\x0c\x19\x92\xcfG \
+nT>\x81\xda\x22\x17\x0a\x94Q\x8e\x07rx\x0e\x05\
+\x84\xdd\x98L=\xe7\x8f<\x1b\xf3\x11\x99 \xee3\xf7\
+\x97\xfbH\x0f#\x0e\xb4\x12\x92\x90tA\xea\x07\xc9Y\
+{\x90YF\x1e\xfc\xc1\x90\x07 \x85\xa8<Q\xb1 \
+q\xe8\xec\xecp\x15H\xb5\x81\xcaMs\x8fY\xa5k\
+\x0dK;$qp\x11\xa8W\x1b\xe8,\x89V\xd7\xc1\
+\xa6\x87\x11\xf5\x0b\x12\x16\x90'1\xee\x09\xc4\x961\x93\
+\x03\x7fR\xfe\xfe\xdc\x82D+\x12\x9c\x06\x9e\x10\x22\xf1\
+#\xe4D\xb3V\xb3fc\x01\x8cz\xcc\xc7\xfe0\xfa\
+p&3{f\xf4tf\x11\x16\xe4\xbe\xfb\x95Y\xd6\
+\x7f\xdf\xca\xf4\xdf\x9b\xcd\xccJ/x\xfb\x92Y:\xce\
+\x96\xcc\xe4\x0f\xa7%{\xbeps\xd0k\xec\x9c\x09\x8f\
++q\xf3\xb9^\x06\x8f\x04N\xf3\x1d\xb3\x0a\xba\xcc\xf9\
+k\xfc\x02\xe9\x05I\x81\xae\xba'\x80pPX\xff\xd5\
+\x0a\x04\xa2\xc3+\xa4$\xd8\xe8\xf5e}\xe3\xfe\x98\xa3\
+\x7fR\xc5\xdd\xc1\xfa\x8c\x8a\xc3\x5cf\x0a@/\xac8\
+\x1cl\x97\xe9*\xd6sK\x9bm\xad}\xee\xb6\xca\xc1\
+d\xde\x90\xf1g]\x12\xeb|w\xafY\xfa\xb8\xaf\x9b\
+\x95\x8a\xbb'\x96\xc4v\xee\x09\x1b\xa0\xbd\xe8\x86\xab\xb2\
+\xe7\xc8\x12\x8d\xcf\xc1nf\xa5\xa7\xd79F\x14x\x81\
+P\x1a\x9e4\xfc\xd6\xd0\x02\xf2\x1d\x92m\x9f\xb9/\xfe\
+\xcf\xb8/ \x8b\xeb\x0e1+\x08\x08'\xdb\x14\x12\xc8\
+{tE\x22JK\xc4\xf04\xb3\xf4\xf3Bfe\xdd\
+q\x0e\x0e\x10I\xea\x85o\xb73+\xa4w\xcdO\xcc\
+\xd2\xe7\xbe$H\xb2*\x9f@\x99i\x15p\xc7\x8c\x0a\
+\x19\xc8<\x05\xfc\xee \xc7\xfdT2\xa4NjFb\
+\x19\x7f\x01\xd5\x10!\x1fF\xdb\x9a\xa5\xe3nfU\x82\
+rj3\xc5Z,@P\xa4{\xd3\x93\x9cq>\xfa\
+\xde\xe1_\xcdr@\xd8s\xb2l)\xe4\x0b\x880\x0b\
+\xe7~\xa3y\xb3\x98dG\xa7\x8ad\xef\xe7Z/l\
+\x1e\xfd\xc1\xac\xf81\xdd\x22f\xa5\xd7\xdb9lt\x1f\
+\xbaOw{\x19r'\xb7\xa8\x5c\x9b!\xbf\xbd\xc3\xaf\
+\xeb\xf2J\xae\xf6\xf3n\x9ddk\x17U\x94\xeej\xb3\
+\xc25\xc1x5\x06\x07\xe3p\xc8\xc8\xab?\x17\xa8;\
+\x10\xf9\x8c\xcb\xd9\xbd\x92eU\xc2\xc8\xc9\xcc\xf0\xafH\
+\xdc \xd3\xa7\xc0\xcfeh\x05\x81\xf7\xf5\xc9\x90\x0a\x8b\
+\x15\xa4\x19\x09K\xd4r\x80\x86{`\xcf\xban\xe3\xe0\
+^A\x9e\x7fS\x90+3\xf9\x8f\xec;\xa8\xfc\x80\x10\
+\xb3\xce\xfe\xbf\xe4\xf3~2\xfb!\xaa\xdc\x22\x0f\x0dY\
+n^W~UH\x1f\xb3\xb8\xeaA\xf2\x8bN\xacX\
+\xd9Y_L\x8e\xf7\xc2\xd2B\xe1\xaa:\x04\xf8\x1f5\
+\xd3~tVQ\x19qn\x19+S\xdc_\xfc\x99L\
+nyP!\xbd\xf4\xebS\xe2\xc0\xfd\xbau\xfbu\xcc\
++\xeb\x1a7^\x10P\xa2\xacY\xa3\xafd\x8f>\xa4\
+\xfd\x1e\x92dZ\x84\x08\xa8A\xba\x81\xdc#1\xa1y\
+\xe8-$\x8aS@0x\xef=\xa4\xb8\xa6\x0aq\x5c\
+\xe5g\xfe\xde\xac\x92G\xc4O\x84;\x08\x7fN\x09'\
+\x12\xec\x1e\xc8\xb3\xae\xe3\x9f\xe3\xcfP\x88`\x7f\xa0\xe0\
+\x03\xb4?\x06\x82|\x1eH5\xb8\x13h\xc1\xa4\xa2.\
+H\xbdC\xf0IX \x17\xaeu\xc2\xc9\x1f\xe1\xda\x01\
+\x99\xb6\x8bY\xd5\x22\x02\xa7\x05d\x80\xf8\xbb\xf8\xcd\xec\
+'$FA>\xc1\x81\x01\x82\x80\xc4\x05\x08\x02Z\x1c\
+H\x0cp]\x8aw\x1c\x09C\xbc\xc5}\xe0\xfb@n\
+p\x1e\xa1\xd0\xec-\x06\xcc\xf7\xd7&V\xfa=1w\
+\x93Z\x19b+{L\x1c\xfc\xa7D\x00\xfes$\x19\
+$>\x05\x01\xa2D\xb5'R\xf8{D\x10@R\x89\
+\x0a\x1c\xfe\x18*X\x0b\x99U\xf1\x16\xef'\x91\x81J\
+\x1b\xe7\xcd\xfa\xc2\xf8\x8d\x5c\x02\x8a\x9b\xc6}\xe0\xd9i\
+\xfc;d,\xa6U\x08\x00~\xae\x7f?mBo\xc5\
+\x0b\xde\xbb1\xbd\x0a\x0c\x0ai^\x7fbQ\x0f\x91@\
+\x8f\x1b\xc8\x00 \x80\xa2r\xae\x09\xe0\x09\x87(\xd7\xc0\
+\xc6FK\xc0\xad}\xcfX\xf3\xc9\x9e4\xc3\x1f\x08r\
+Cr4}\x80s\xa3\xe8\xf5g\xc2)\x90\xf2@\x92\
+\x1bN\x80@/\xf7\xb2\x1a(\xfc\x9d\x1b\x1e\xd5\x08\x08\
+\xcc\x86\xba?\x0c\x00\x068\xd0oZ\x0c\xb8\xde\xa9z\
+\xe0L\x08\x1e8\x01 \xbd\xfc\xb1\x97%\xb6\x5c\xbc:\
+S\x0f\xcdD\xd2\xc48p\xc8\xa0\xf1yz~\xa3g\
+{9\x90f%\x0f\xc8\xfb\x00?\x06\xb6\x9a\x00\x1e\xf8\
+\xf2\xfc\xb9\xde\x18\x00Syc\xe2\x8d&\x8e\xa3\xf4\xaa\
+\xbc@\xfb\xf7\x92@\xe1s\x81\x94\xe9\xfd\xfe\xfa\xf7\x89\
+\x9d\x9fLYD6<\xa1\x00\x9b\x80\x98\xf1Db\xe8\
+\xb1\x1e\xa2\xd4|P\x01A@X\x00a\xf2\x0d\x8f\xfb\
+\xc0\xf8\xe6\xb9\x82\x18\x81\x8d\x99\x84\xc1d\xf7\x01\x07\x92\
+\x8c^$\xc5\xe4\xb9\xb202o\xb8\x0e!\x01<\x81\
+\x22\xb22\x0f\xd4E\xe2\xe5\x19m\xee\x8f\x02Q'\x0b\
+\xc2\x91\xd0B\xdd\x9dmV\xc6\xa7\xf7\xb0\xc3\x96+v\
+o\xef\xe1\x83\x0c\x11\x19.\xc9\xc5y\xc5\x1drF\x02\
+nZ\x1bV2\xab\x1c\x04\xc6\x11=~\xea\xa9\xeb\xce\
+1\xab\xf4\xe5y\xae{g+\xac\xf3\xf4r\x8b\x05\x1d\
+H\xe1L=V\xb4\xe4\x08\x22\xcc\xf3h^1+\x89\
+\xbc\xe6\x14\xb3J\xffW\xad\x07\xdd\xaf\xcd\xd2\xf1\xd5\xee\
+\x95\xceH\xab\xce1+\x95\x1a\xd7\x91g\x1c\x00\xadT\
+\x85\x09\x04\x05z\xee\xedg\xccJ\x05\xc3\xe5\xeb\x14\xa0\
+\x22\xe3\xd6^jV%(\xa8\x14\xbf\xa7G\x8c\xb8\x8c\
+\x98\xd4\x0a\x5c\xbf\x9by\xaeu\xd8\xcf\xe3)\xe9\x92\x93\
+\xc8\x94*\x87\x93\xf51OT!\x81\xa4\x0a\xc4B\xfb\
+\xf3\xbeg\xb5Y\xa5\xbd\xa3\xbd\xa3b\x9b\x06\xaa)\x07\
+\x04\xae\x05\x12U\x8e\xa00\x84\x85%\x1cri4\x1d\
+o0\xabd\xd0\xe0\xf0\xb4J\xfa\xa2Y\xbe\xae?o\
+\xc6\x15\xe3\x88\x0a-\x15\x0fZOp@Y\xf7\x14\x18\
+\xb47\x9a\x15\xd2\xba\xe6Y\xb3J\xdeK\x01\xa8\xb7\x88\
+\xa8\xb5\x09\xee\x04\x02\xca\xacO\x7f\x95Zk\xd6\x15d\
+\xf4\xbdU\xe2\xd2\xf0\x02\xd7\x17\xb6\xf7\x0c\xe1\x9b_\xcf\
+\x03\xee\x99\x97\xab\xdeTA\xbb\xe9\xc5\x1e\xfd(\xd9y\
+%\x91\xd9\xfc\xc6L\x89\x9f;J\x02,CP\x7f$\
+\x15\x87\x8dE\x06\xb7^\xa9D\xc2>O\xa5\xd6I\xb1\
+XG\x84\x10\xf1V\x00!s\xdc\xa1<\xd4\xacT\xd6\
+F+\x9b\x15\xf2\xca\xee\xa3\xddG\xbat}\xed\x8f\xda\
+\xf3\xda\xf3$+\x9a\xe6\xc3h\xe9\xbe\xb7\xbe[\xdf\xac\
+\xb4\x82x\xa5_H\x00g1GvPd{\xc3o\
+\x9b\x95^\xf0nn\xb3\x9c\xd0\xec!\xc5\xbf\xe9\x1d\xe4\
+\xf6K\xed\xc1\xad\xc9\x18vfe\xfft9\xc8?\x9a\
+\x95qH\xcb\x9cC\xbf%\x17\xea\xad?w\x9bU\x81\
+\x01\xfb\x0f\x09\x0f\xd6M\x90z\x90r\xe1(\xc3a\xa2\
+\x8a\x1d\x898O\xdc\x00QG\xae\x0d\xf5\x1d\x90\x0cB\
+\x9c\xb5\xb3\x98\xa5\xe3o\xcc\xd2\xf5\xcfjV\xf6\xcd\xcc\
+\xa6\xbfr\xe6\xaa\xc8\x90\xf4\xe6\x04\xad{\xd6Z\xf6;\
+%f\x8f\xaf\x10\x0f\xebg}\x1bW[q\xf2N\xe4\
+=\x81\xc0\x8b\x94\xb5\xfb\x9aY\x19\x97\xa3Kz\xa4Z\
+Z\xfd\xfb\x84\xaf\xf6)\xe6\xf5\xe8e\xb3\xd2\xaa\xd0\xbd\
+\xcd,\x1d\xff \xb5\x88\xd5\xcc\x0a\xa2\xc6\x03l\xc9\xe8\
+\xe1\xe0\xe7V\x18\xab\xbco\x97l{%\xec\x8e.\x01\
+>j\x0d\x8e\x14\x80\x95\x1cN\x13\xf5\xa4\x8f\xbe`V\
+\xf5\xa4\xd3\x0a\xa4\x8a\xb9\x89\x9f\x9a\xfc\xa3\xcfwz\x98\
+\x09,h\xbd\xe0\xba$\x93\x96\x03\xcfiU`M\xe5\
+V\x90\xf1Qk\x96\xb9%\xde\x91\xe5\x1f\xed{\xb7U\
+\xa5{\xab\xfc\xfei\xb9\xc0\xb6\xba\xe91\xcd\xcc\x0e\xef\
+\xfa\xe1\xb6K\x1f!\xee\x94S\xab\x16.\xad\xcb\xb9\x10\
+b\x15\xd9\xcb\x93]Q\x15\x92\x08$\x09\xf4 u$\
+!M\x8b\x87\xfcU\x97\xbd\x14I\xe6\xd8]J\xb4\xc3\
+\x11\x80\x9fCA\x04h<\x85\x19H\xaf\xa3L\xb7\xfc\
+Fz\xd4\x1dbO\xa5\x9f\x80\x99}\x86\x0a3\x88\x07\
+\xc8'A\xdc\xa80\xc3\xbe\xec\x88`\x158]}\x08\
+\x04\x06\xc8\x10\x12\x96p\xb20^\x98\xd7\xccs\x02\xd8\
+\xe3\xb3\x95\xc4\x8c\x02_O\xcc)@\x1b]eV%\
+\x96\xf0\xbb\x89\x03x\xae$\xf0@@\x13\x18\xb3\xfeB\
+>\xc8\xf8\x03\xda\x0f\xc4\x9e\xf3\xa5PD|\xa0\xd6\x10\
+8\x0dF\xa7\x98\x15\xff)\xf9'\xaf\x9a\x7f\xc2\xfa\xe3\
+\x95v\xc8\x9c9_\x9eW,\x80\xb1\x0f\x91\xf8\x84\xfb\
+\x81\x04\x07\x05?~\xd6\xf3\xf3\xd7S\xb0\xe1s\x89\x0b\
+\x09\x88Y\xffA<\xe0\xdf\xe2\xefF\xe8}Dx\xc7\
+^\xfc.p\xd4q\x8c\xf2~1\x01\x10\x8f1\x81\x10\
+e\xe6cKyD\xbaGD=\x01=\xd7\xcfsD\
+\x15\x89\xc4\x14~4\x9c\x0e|\x8f\xe2\x03\x1f\xef\xe2d\
+q?\x83\xd71\x8f\xe4\xef\x8c\xcf\x04e\xb6@w\x85\
+7H\x04D6\xc4Z_\xb1N\x04D\xd22n\x0c\
+z\xa0d\xbe\xe7\xe9\xc9\x9a\xfcBq\xcc\x08@8a\
+\xa0\xd4,0\xb1\xb7\x9b\xf7\xb1`P\x19Fv\xef-\
+\xcax0\x809\x1f*\xc2\x90\x95\xf13\x81)Pu\
+\xf5\xa2\x93ar\xa8x\xac|\xc6J9\xf7\x83LV\
+\xd4{\xe4A\xf3~\x06r\x18\xc0\x90\xdf\xf8\xc6\x05\xe7\
+\x00\x15v\x06b\x94\x7f\x98\x1e\xa0*\xe5\xb9\x81\xc4\x00\
+\xea4\x91d#N\x0c&\x12\x89\x22&4r6\x04\
+\x96\xf4 E\x88V\x84\xc8P9\xe692 \x09\x90\
+\xe9\xd9dA\x1e\xb8\x1e\xe7\x04d\x82#\x19\xd62\xab\
+\xbe\x0f\xe4\x07\xc8\x09 lq\x023\x9e\xc9\xa8\x91X\
+!\xb1\xc3F\xb9\xb4\xde\xcf\xf3\xe2\xf9\xc5\xe7\x08T\x89\
+\x8a\x1f\x09\xa3X\xa1\xa7\xe2\xc7}\xa0\xa2\x1d\x13\x01$\
+\x14he\x09\x89\x1d\x97\xf5\xa3\x82\x0d9\x11\x9c\x01\xc8\
+\xc5\x91\x98a#G\x1f\x1b\x08\x18j\x061\xa1\xa1\xde\
+V\x02\x19g\x9b\x87\x8d\x97\xcc\x7f\x90E\xf1J=$\
+\x7f\x82D\xb7?3+dl\xb9\xd2tiE\x9a\x03\
+r\x87L)\xe4v8\x0cdzUIt\xd27A\
+\xf2\xa9P\xb8\xe3\xaeLx\xbb\xa3YE\x8a\x82\x0e\xb0\
+6\xf0\xe6&\xb3\xea{\xf5\xdc\xd90\xd9\xe0\xb8\x9f~\
+\xdeT\xfe\xb8\xef\xea\x81\x06\xba\x0d9\x19\xcf\xc3\xc7\x8b\
+\x1c8w\xd4\x98/\xb0\x86\xabw\xb1\x1d7\xcb\xa4s\
+we\xd29\x90\x17@\x18a\x9f\x07\xb9%H\xa5#\
+\x91 ;e\xfe\x89u\xd93\xf4\xe8\x10\xf3\xfc Y\
+\x13\xb2\xc0\xc9\xce\xce\x15\x92bA\xad\xb7\x91\xedw\xe3\
+\xe4\x16m\x9c\x13;+\xda\xbe1\xdaa\xb4\xfdh\x87\
+j}dc\xd7\xbcr\x19=\xb5\x10\xb8\xea\x84 \xe3\
+.\xd7\x09\x94^z\xd0\xd9\xb1\xfax\xd5\x1ava\xcf\
+v\x9e\xd5\x00\xbe_\x91\x14)p\xf2\x8a\x87z\xe3\xba\
+\xd3\xcd\xaa\x8dQ\x8e\x87\x07~\xe2\x08`>\xb5\xb7\x98\
+\x95D\xc8hA\xb3\xca\xe1U\x05\x8a\xc0\xd7\xe5 \x95\
+\x88\xf0\x0a6\xb2\xabV\xf1\xde\xb1$fX\x17r/\
+\xf16Bv\xac\xa2@\xe6\x0b\xd5>\x08y\xa3%z\
+>X\xf4\xe8\x1d\xd9#\x92Izz\x818;D[\
+\x8er7\xbfYI\x00x\x80#\xf22\x10\x01\xd9\xe1\
+\xfa\xa7ZwV\xab\xf4\xbfa\x7f\xb7\xd9s\xb2\x1c\xc4\
+\xf4\xb9\x83\xf5\xccr\xe0\xb6z\xbbzf\x9fOVU\
+\xe8H8\x09\x99\xe6\x1cT\x1f4K\xc7\xd7\xcdr\x0f\
+y\xe6>h\x9e\xe9\x13-$\x86\xbc\x12&\x07\xa7\xbb\
+\xd0\xacJ`\xee\xdeW\xc8\xbb\xbd\xbb}\xba}\xf21\
+Y\x81\xaaCz7\xfa\x92Y\xfay y?\xado\
+m\xfe\x97\x8e7\x99U\x15j\x91dz\xe0\xa6}\xbd\
+\xdd\xc8\xac\x8c\xb3\xe6\xe7fU/+\x95FU:}\
+~\xd3{\xcb>\xcc\xf8\xe6\xbcP\x05\x11\xf7\x82W\xa8\
+\x19\xd7\x0a\xc8<\x01r\x8aT\x17\xd6\x16\xd9\xe8@\x89\
+>*\xc1\xc8}\xaaE\xa3\xdb\xd0,'.z\x12K\
+[-\x8e\x94l\xa2q/\xec\x97,=\xafn]\xb3\
+\x22\xa38:\xc3\xac\x82\xca\x93\xc0S+Lw\xabY\
+\xd5\x93N\xab\x95\x1cQ'\xa15\xa6\x88\xb3\x0b\x14\xdb\
+\xef\xab \xf0]\x9blPZ\x03\xb2\xec\x9fq\x05\x5c\
+iV\xf5\xee\xb3O\x09\x09\xe3\xea(\xf4\xa8S\x19%\
+\xe0 @\x93\xaa\x83\xeb\xb2\xd3kM\x82\x9f\xc4\x81\xd6\
+\x13\x0f\xdc\x94\xc0\x06)\x02\x22\x06\xf9\xc0\xd1\xc7\xd4\xda\
+r\x83\xe4\xfb\xd4\xe2@+\x87\x17L\x14\xf0{k\x86\
+\xd4\x13\x5c\xeet\x9f\xb1}\xb2\xfa\x83y1\xdf(\xfb\
+\x1f\xa4w\xce\xb9\xa3D}\xe6R\xb0\xfb\xf5\xa1d\x1b\
+V\x08?\x90\x22\x22\xb5\xcb\x8c\x09\xfbV\x08\xa5-\xb2\
+\x95\xfdZ\xad&\xbe\xae\x0bq\xe3\xeb*\x88\xb4\xc52\
+\xcd\xb2\xb7\x22\xfa\xfb@P\x81\x14\x80{\x00N\x01\xf6\
+k\x10 \xd1\xef\xc6\xff\x0f\x95P\x0f\x8c\x85\xb4\xc2\xaf\
+r\xbf\x1c(=\xe7\x89\xdc\x1fHF!y \xe7\xf5\
+\x040~\xa7\x12\xfc\xee_S\xf9\x96\xff\x0f\xb9\xb6?\
+7\xf9g\xec\xf3\x1e \xe2G\x88k\x86\x96\x1c/\xcc\
+\xc0I\xc4|\xa7\x10\xa0\xf3\xc7_\x85k\xc3\xfdXZ\
+\x01\xf0KH\x04\xc0\xf9\x02\x02\x83\xf1\x8e_\xc0}\xe5\
+\xfc\xf0;I\xc4ARk\x89\xb3\xed\x0aW\x05\xc8\x19\
+WI\xa3 CB\x87\x02\x14\xeb\x97\x9e\x9b\xf7\xee\xd3\
+B\xc1\xfc\xa4`\xc4:\xcd|\xa7U\x80J=\xd7E\
+\x9c\x84\xbf@\xa0\xcf\xefc\x80\xccxe\xfc\x84\xc4\x81\
+\xfb\xf5S\x84H\x9f\x16\x02\xedH\xf6\x1e+\xfd\x91K\
+ &\x06b\xe0\x1fI\xef\xbd2\xa1cl]\x8f\xa4\
+\x86\x11\x19\xcf\xf53\x8eb\x9c\xc48\x04\x89($\xa8\
+s;p\xfd\xc4\x89\xfc\x833BjV\xe3y\xb8=\
+'\x07\xfb\xf97\xc8PD\xb2>\x90\x02\xe8G\x8a\x84\
+%C\xd6\x97W\xa5{\xbe\xaa2\xbeP\x16\xba\xeb\x1f\
+\xd0\xdc\xd5\xc0\x81\x0c\x8cJ\x1b\x15O.\x94\xcc9\x81\
+/\x5c\x00d\x16ac\xe7g\xc8\xe5\xa8D\xbdW\xd0\
+:\xe49\x98\xf8,4q\x01\xe2\xfb\xc88\x02\x95\xc0\
+qe\x81\xe5\xfb\x98\x08@C\xc9\x88\xfdM\x90\x17\x02\
+;\x1e$\x95\x01\x02W\xd8\xef\x19\xc8|\xdf\xd3!\xd0\
+d@3p\x18\xc0\x0c\x1c\x16\x0c \xf5d\x80\x08\xc8\
+\x99@\x05\x02\xdf_\xff\xf3!a\x13\xa1\xfd\xbc\x9e\x09\
+\x19e\x13gOOi\xf6*\xd1\xf2L\x08\x8c9\xf2\
+\xbcm\x9c<V\xb56D\xf9\x0a2\xa2,XF\x8d\
+\xf4Hu_X\xf85\xe1<\x81\xf4~-T\x11\x12\
+?\x0c\x5c\x06\x8cc&F\xc8\xb4\x91\xe1\xf6\xfb\xf6\xaa\
+#(\xfa\xe3\x0b\xa1w\x87\xfb\xcas\x8f-\x13@\x9e\
+HT\x052J2\x9b\x1e\xe0s}\x8c'\xc6%\x09\
+\x97\xc8!\xc0}c\xa3\xa4BK&\x90\xd6\x19\x02*\
+T\x0d\xf8\x1c\xbe\x87qL\x22\x8a\x8c<\x90YA\xf5\
+\x9c\xe3\x02\x88*P:\xe4k\xe8-\x03\xea\x8c\x5c\x1e\
+\x15^\xc8\xf3\xe4\x98\x22\x077\xf6\xc1l3\x93E\x22\
+#yy\xb6\xd2;\xc6\xb8' Ve\xcd\x1dn=\
+\x9f\xf6Wf\xd5|\xd1\x02\x9d{\x9c\xdfR~\xdf\x1c\
+kV}/\xe3\x9b\x0c8\x1b\x14\xe3G\x90\xbd\xd1\xa2\
+f\x95\x03\x0a)\x98\xa0\xa7\xdd2fe\x9c\x81\x5c\xa0\
+\x92\xec?S\xe1\x97\x0e6\x89\x01\xc8\xd1\xbc\xf2\xa5\xd6\
+\x09 \xa2N\x16Ge\x80\xf5P\xad\x1b\xf4\x18\x8e\xce\
+4\xabH\xba\x90{|Zr\x85\x04\x98?4\xab\x12\
+u\xac'\x90K\x02\x81\x16k\xf2\xd8\xfe=\x9b2\xe4\
+jY\xa5\xe13Z\xafj\x08#\x95\x8d\xdfg\xda\xcd\
+>P\xd8\xbd\xe2P\x11I\x92\x07T\xd6\xc3\xffd!\
+\x9dl\xb75S@\xbcD\x85\x04\x92L\x97;T@\
+/\xb5^\xfay\xe9\xfa\xa9\x9c\x909\x8f\x01&\x81\xce\
+`>\xb3R\xf1u\xbdq\xa0\xc3r\x14\xdb\x0f\x98U\
+\xf7\x8d\xe7\xa0\x1eb \xa9\x04x\xccK\xc8\x183t\
+\xf4F9\x8e'\xc9A=G\x01\xfc&z\xfd\xc2B\
+\xa8\x5c_X\xb9s\x0f\xfbl\x15\x92f\x8a \xe1\x03\
+\xb3t|\xce\xacb3\x9f#\xd9\x9bT\xc1\xda\xb8@\
+!i\xfd\xeb\xbe`VHF\xbb\x07\xcd\xaaV$%\
+\xc0\xda\xfd\x93\x1d (\xf1\x06\x82l\xa7y\xdb\x9e\xd2\
+~\xa75\x12\xc4\x0f\xb5\x1b\xb6\x1b\x96\x0a\xee`\x1d\xb3\
+t\x5c\xc4,\xfd\xfe\xdf\xeds\xedsy\xfd\xca\xeb9\
+\x95c_\x07A\x80\x80\xacy\xa9\x99\xdeL\xaf\x1c\xef\
+\x1fI\xed\xe4\x9e\x9e\xd4\xd0\xe5\xd0\xa6\x0b\xb2\xbf\xc8\xe8\
+m#K\xf4\xccc\x96~~\xb3Yz\xdd\xabf\x15\
+\x04\x176\xf33\x9a3Mud\xf0\xf9\xc1\xbe\x83\xff\
+I\xc7\xb7\x9b\x95V\x14\x87\xd6\xaa0\xe2\x8e\xb7\x02\x1d\
+\xc3\xc5dd\x0c\x10j\xb8^\x84\x00\x02\xd1\xe1\xd0r\
+ \xb3\x14\x18@\x04\x10\x18\x89\x15\x9c\xf3\xf7uY\x0e\
+\xfe\xf0N\xb3\x02\x85\xef66K\xbf\xff\xc9\xf0\xa7C\
+\x93?\xbc\xcb\xac\x9c\xa7\xe1\xdd2\xe2\xedZ\x05D\x9a\
+\xc7\x19r\xbfNU\xa1T`\xe5\x01\x81\x1c\xc4\xcc*\
+~\x5c\xb5\x7f\xc1\x0e/\x95\x00Z\xba\x1c\x92\x0e\xe4\x9f\
+\xc4\x15\x81\x00:\xed\x86L\xb9\xa5 \x97|\xfe\x8a4\
+\xaf[\xdd,\x1d\x1fI\xf6p\xba\xae\x1d\xcc\xd2s\xf9\
+\x99Y\xfay?3\xb5\x00M+\x89/8CF\xf3\
+\x99\x15\x95\x0aOp\xd1\x12@\x05\x8d\xfd\x06\x84\x05\xa4\
+\x82\xcc_8=\xe0\xac\x10\xd4~\xf4+\xb3R\xa1\xf6\
+\xd6\x0d\xb5`x\xe0/\xe4\x8b#\x82\xa4\xd2\x03\xd7\x8d\
+'@L\xd5c\xf1\x0aQc\xf5\xcd\x0f\x09\x9am\x01\
+\xf6\xbefe\xdd\xf7\x84\x05\xadb\xec\xe7\x90\x92*\xf1\
+K\xeb\x8e\x07p\x90)\xc3\xa2O\xe0\x88\xca\xc0V=\
+\xe2\xc0\xc9\x02\xaf\xcc\xb4\x97c\x99\xe9\xe3\x90<\xef~\
+l\xc8\xa1\x9cF\xdc\x22'*2\x02,\xdd\xbb>`\
+&P%\x11\x00\xd9\xdd\x9e\xfd\xfa\x99\xc3\xaf)U\x02\
+\x87D?\xfb,d\xdd\xf8\xcb\xb3\xca\xaf\x89\xea\x06\xf8\
+\xa1\xf8\x87\xec\xeb\x0a\xc0]\x05B\x09Z\xf7O\x08\xc0\
+\xb4\x8f\xb3\x8fu\x0f\x99\xe5}l\xff,\xc3\x08g\xc9\
+>\xd9Ja\x02\x0e\x14\x12\xca\xf8?\xc8\xc3\xd2\x22\x19\
+\xd9\xf2\x99\xbfT\xb8\x99\xffj\x05r\xf2TCp\xfd\
+\xa8\x22\x07$0\xe4\xfd\xdc/\x0a\x0d\xf2\xa3\x9d\xe3\x08\
+\xee#\xc8\xf7 \xeb\xe3\x08\x14\x9f\xf7\xf3\xfcIP\xcb\
+/\xa5\xa5\x8b\x80\xd7\x91\xa2p8\x91\x08\x00\x91\x0a\x12\
+\x82\xe7\xc2}f\xbfg\xbdD\xc5\x80\xfb\xc2\xfb\xb8.\
+\x12u\xac\x8b\x8a\xcf\x1c\x89\x10I\x10\x89\xa7\x1479\
+b\x85\x84\x03\xe7\x83\xff\xf1\xb7\xccBQ\xfc]\x0ao\
+</\xe2\x86\xd8ZN<T\x90\xd3\x90\x08NT\xad\
+\x8b\xdc\x00\xd3\x83\x9c{(\x90\x15\xc7g\xa2\xca\x9c#\
+\xc2\xb8?\xc4\xe1\xc4\x87\xb1\xd5\x80\xfb\x00\xe2V\x1c6\
+\x14F\xbc`\xc8<\x0b\xfe=\xfb\xd5x>\xcd\x19\x81\
+\x8d\x9f^\xfd\x97g\x96\x1d\xf3\x00\xca\xdc\xc4\x7fW\x15\
+I*\x9fV\xa1^\xb9\x0a\x88\x98\xc0\xf40Ra\xd5\
+B\xdb\xcciV\x91\x94Q\xd1ga \xb0!\xa1@\
+@H \xc4\xcf@#\x16\x96\xce==u\xdcHz\
+Q\xe8\xf5\x91\x5c\x95\x9f\x07\x15[\x16\x22\x0647\x8e\
+\x1bO\xe2\xa0d\x98&p\x1d8\xa7\xc2F\xaa\xc4p\
+\xff\x0aY\xddDy\x0f\xfe!\xd7\xb7|_\x01\xf4\x0a\
+~\xe8\xf1\xf0\x16\x06t\x91c\xc0H\xa0Ib\xe0)\
+\xfd\x9e\xf3\x8d\xa4\x14\xcf\x87\x80\x16\x87\x98\x00\x92\x80\x9d\
+\x89O\xa0n\x15\xc1\x05+\x12\xc3\x7f\x052C\x12\x17\
+\x9c\x17\x13\x8e\xf3%\x80\xe5sy\x9ez\xde\xc9\xed\x9a\
+\x92\x11)82\xdc\x0f\xb5B8\xf2@\x15S\x0f\x18\
+y\xee\x0c|\x9eO\xcc\x14FN\x00\xc6\x09\x13u6\
+\x8d\xdf\x19\xce\x0d\xd0\xb3\xce\xabU \x8d\xf1>0\x8c\
+\xa4\x85\xc8G\x91\x88\xa1B\xcfBA\x80\x15\x9f[\xbc\
+O \x0aP\x09\x00\xe9\x108\x12\x9c\xf4P\xac\xe73\
+e\xd4Y8bF2\xea\x89\xb20\x90\x00\x83L\x86\
+y\xa8qO\xc5\xcceP\x04\x09o\xee3\xabz\xc0\
+\xd5;J\xef\xae\xf76\x02\x85c\xc3\x85\xbc\xe7\x08\xb3\
+J\x1f\x98\x00\x9f\xeb\x84\xed\x97\xfb\x0d\xc9\xa1\xc8\xf2\x1c\
+\x12/\xe8\x1f=\xe1~\x1e\x81]\xbd9\xcc\xac\x92\x8b\
+\x94\xe3\xee\xeb\x13\xe3\x00Vht\xc1a!\x86\xccL\
+\x0b\xafW\x1e\xd1!\xa6e\x81\xf5\x8d\x04%\x09\x16A\
+f\x9dkD\xea\x0b\xb02#{\x87<\x9e\xd5Os\
+\x05\x15\xc4\x02\x15A9\xa8^\xb9\xa4r\xaf\x8d\xb5\xf9\
+\xabY\xd5R@\x225@\xc9<\x90&\xe1\x81\xc3\xc2\
+\xfaC\xef%d\x8f\xeb7\xeb\x99\xaeyr\xe3s\x05\
+\x11V\xec\x9c\x98\x9b;\x07\xaa\xb3\xe5@\x95\xe7 \xe8\
+5\xaa\x0c8\xdc.\xc3&$\x83'\xf6DV\xe5\x90\
+ic\xe5\xdf\xa7\xa8#t;\x9bU\xeb\xf1G\xb3\x8d\
+5\xc7\x98\x95\xca\x15\x811\x01\x9e\x93\x92\xd2\xfa@\xef\
+\xad\xbd\xefX\xdd\xaf\xbfT\xfa\xf6_7+\xa4z\xae\
+V\x00\x12\x80q\xaaV\x00\xe4\xce\xbc\x02\x0dI\x96\x1c\
+\xcd\xf1\xc3\xcc\xaa\xc0\xd4\x98i\xd6\x90\xe3b\x95\xa7\xff\
+3\xab\xd4[\xe6M6\x8f\x12G\xcfT\xb2y\xfa\xd9\
+\xf7mZv\x80\x14\x1b\xf4\xd9zm\xf74\x13\xa9\xdb\
+g*\xb22\x80^\xb0\x8c\xcbq\x87\xfc\xcd[T\x8c\
+$\xf1*\x05\x9e\xcb\xab\xc5\xe42\x91\x0anRZ\x0e\
+\xda3\xcd\xd2}\xbe\xc8,\xfd\xbc\x8dY!7\xc3\xa1\
+\xb6:\xbdU\xea\x87\xc7\x98\x95V\x92\xf6\xf4\xf6\xb4\xd6\
+\x10\x1a\x874\x876\x87\x14\x99I\xc8\xe7\xd2\x1e\xdd\x07\
+\x04\xab\xf4\x09\xabv\xa7v\xe7v\xe7\xac\xfb\x9e[M\
+\xc66\xea\x13\xfdTV\xbbg\xccJ\x0b\x8cW\x0cg\
+5+\xeb`\xf7=\xb3t\xdc\xd4,=\x9fs\xcc*\
+\xb2b\xb8\x83(x\x10`)1\xe1\xea\x1a\x90\xbc\xe9\
+\xbey@\xc6\xbc\xa2\xd7\x97\xf5\x17\xc7\x1a\xf6v \xd8\
+_4\xab\x9e\x13\xe4\x94J\x98tK&3\xd2\xc3\x0d\
+\x87\x1b\x0d\xad\xe7\xfe\x09\xb3\x12\xd0t/\x98\x15\x88\xbd\
+#\xa3\x84\xcc\xca\xe4\x87\x17\x95\x0an\xb7\x94\x99\xc6\xcd\
+2\x0a\x10\xee\xa8\x1ce\x12\xd3\xec\xab\x04\x1c\xe8\xb7\x93\
+\xd0\x96j\x06\x1c\x0d\xbe\x8e\x12\x80l\x90\xc2\xee\x0d2\
+R\xa5\xe7dQ`\xe4\x95\xec'\xcd\xd2\xf1w\xc9\xde\
+\x92\x8e\xff2K\xd7\xf9\x9aYz\xde\x0b\x9a\xa5\xe3\xd5\
+f9\xf1\x94\xacj\x11\x10\x89\x9d\x93\x1e\x92\x90\x01\xd2\
+\x8dz\x82\xee\x8b\xb70\xd1\xe2)\xae\x14'g\x83S\
+\xe3\xbe\x9e\x0c\xcd\xd5Y\x14p\xbb\x7fAk\xe9\x0ef\
+e\xfe9\xe2U\x08\x0b\x0f\xb8\x90'\xc4?\x92_\x9b\
+!\xe9\xef\xaft\xc8\x85\x08s\xbf\x81}S\xfe6\x1c\
+&\xdcw\x12U\xc8`\xb6\xd7\x98U\xe3\x17\xf9F\xed\
+\xbb^qV\x0boG\x86\x93\x00\x00 \x00IDA\
+T\xc0h\xbb\xd1\xb69\x01t\x9b8E \xfd=C\
+\xadRj\xed\x18;O\x81*\x08\x15\xf6\x0b\x12a\xf8\
+a\xcbh\x7f\xc6\x8f\xc2\xdf\x11\x02\xcf\x03\xce\x1fd+\
+\x05A\xfc\x0e>\x97\x00\x1a\xf2f\x91w\xba\xdc!P\
+w\xc8M/\xea.\xee..r\xb2\xa33Gg\xe4\
+\x04\xb0\xa5\x9dw+-!\xce\xdd\x22?\x9c\x04\xbe\xfb\
+\x85$\xc8$\xe7\xc9\xfe\xea\xe7\x83\xdfH\x81\x89\xc4\x04\
+\xfbf\xe06s\xf2L\xad\x83\x8e\xc4\xa3\xd5\x82\xf5\x01\
+?\x8c\x16\x0e!\x11\xbcb\x0e\xd2\x01\xa8\xbd\x8e\xde\xb2\
+L`MO=\xf3\x18\xbf\x90\xf9H`)n\x0a\x90\
+q\xceQd\x5c\x11\x17Tj\x1e$\x18\xf0\xc7@Z\
+\xd2B\x02\xf2\x16\xf2@\xbe\x87\xc2\x0a\xcf\x93\x82\x15\xdc\
+P \x03H\x040Nhu\x88\xfe2\x08\x82(S\
+\x88_\x1f\xe5Xi\x91\xb8G\xe7\x1f!\xf7\xc4c$\
+V\x08\xc0#\xf7\x1b\xe3O\xad>\xfe\xbaH6\x18+\
+\xfd\x11)\x10\x13\x01\x90\xfa\xaa\x15\xcd\xe3\xc2@Z\xee\
+\x09\x12\xae\x97x\x9c\xc2\xf5\xf6\xd9\xca?\xfcv\xe2\x85\
+\xd8\x0a\xa1\xf15\xee\x17@\xcf\xf44\xf5\x1eA\xaa\x04\
+\xc4\x9f\x05\x9d\x8c\x22\x01y\x9d8x\xf9\x0d\x12\x09\x5c\
+\x00'B\x86\x18\xf252Kd\x9a\x03dy\xa6@\
+1Vty\xf0l\xa0\xf7i\x22h\xa3\xf5^\xf1H\
+\xa6\xc6\x06\xc1\xf53 \x22\x99\x03\x90-H2\xf8G\
+\xc5\x93\x9e\x1f \xe7\xb3\xcba\x8e$ l\xfcL<\
+\x02\xde\x05t\x1f\x05\x15L\xdbO\x0f\xe1%\xc0\x9f\x1a\
+d&X\xa0\x08\xd8\x9f\xd1\x91\xeb\x223\x06\x84{]\
+}\xce\x14\xaf\xfc\xf7Pjz\xf3\xa9x\xab2\xe3\x1b\
+\x1b\x89*d\xd1\xe8M\x9c-dh\x9f\xf5\x16\x92,\
+S\xe3\xe7]\x12\x10\x13!\xf2\x8f\x8a\xe4p\x19}\x1e\
+\xe3\xaa\x9c_$\xc7\xe8\xaf\x97\xfb\xf6\xa0\x16\x927\x0b\
+\xd2\xfe\xa0\x12O\x1f\xe8\x03\x92\xf4\x8c'\x92\x12\xf2\xfc\
+\x22\x17\xc1d\xac\x9a\xf1\xf9?\x1b8)\xe6U\xc5\xe4\
+\xde~\x83s\x8e\x06\xee\x1b\xcf\x15\xe8'\x0b\x15\x95w\
+\xc65\x90*\xce\x93\xcf\xe7}\xfc\x9d\xf9\xc1\x86\xc2\xf8\
+\x0f\xbd<3%\xacbb\x22\xb2\xfa\xd3R\x13{\xf2\
+\xb8\x0f\xdc\x7f\xf4\xd9\x09\xcc\xa9d\xd2\x93\x0d\xe4Y\x01\
+\x11\x0e\xb1\xf7\xce\xb2A\xb0\x11\xbd\x90\x05\x1c\xcb|\xc6\
+aPE&9\xf6\xc9\xaa\x8a\x0e\xa4\x84l\xb0\xf4.\
+\x82<`\x9e\x91yf]aa\xa4\x07\x93\xde7\xe4\
+\xd3\xa8h\x91\x11\x17\x14\xd5\xc9tX\xd0\xd9\xb0\xa8\xec\
+\xd2\xe3)\xb6\xdf\xee\xc3fU\x85@\xe4A\xb0\xae\xbb\
+\x8c\x9c\xe4\x84 'tH\x22\x8e0,\xf2\x5c\x97\x12\
+y\xed\xacf\xa5\xa7\xde\x11\x01\xb42P\x01\x82\x0cK\
+\x1b\x9a\x070$4Yw\x81\x80\x92X\xe5\xfb\xd8\x90\
+\x91\xbfSE\xd8\x03x\xa0\xfa\xf4|\x03\xf9|PH\
+\x17*\xac8Jd\xee\xe7\xd5\xfc\xc7\xb1\x03\xa2*\xa8\
+xs\x8dY\xc5\xb5`\x1b\xe1@\xad\x16\x97U-)\
+V9\xdb;\xdd\xef\xb5\xba\xf7uki\x83[T*\
+\x0b\xfbV\x81\xd4\xdc\xb9\x09\xac\xb4~\x08\x89\x92\x1cY\
+\xb3\xb1\xf6~\xb3\xf4\xfb\x93\xcd\xaa\xd6\x03\xb1\x95C\xb6\
+\xc38\xb00\xd3\x02\xcd\xe6A\xb3\x8aDR\x89#\x9e\
+\x07\x01\x02\x01\x8d1\xcfd\xee\x19U\x18]\x0d\x82\x8a\
+#\xeb\x04\xeb\xa4\xcd\x8e\x87\xb4A\xbf\xaaJ\xe2*r\
+\xd4\xaf\xa9ZR\xcc\xed\xb6\x9e\xf7\xdd\x92\xed.\x87b\
+Fa\xcfw\x12\xac#\xcd\xca\xfc\xa2\xe7\xd5+\x99J\
+0\xb9CC\x85\xc5:I\x7f]\x9d\xa7\xad\xba\x8f\x95\
+\xf5\xbf]\x22Yz\xdf`e\xb3\xdc\xdasI{I\
+\xd1\xa1o\xf6\xec{\xc7\x93s\x9e\x03\x9dnU\xb3\x0c\
+\x09\xde6C\x825\xee\xb3\xac\xdb\xb6e<u\xa7\x9a\
+\xa5\xcf\xd9\xde,\xfd\xfc\xdb\xee\xb6\xee\xb7U\xab\xd1\xe6\
+\x99\xce\xce\x12\x15\x99\xf3`p\xa9YAP\x11\x08;\
+\x84\x1bvv\x05\xd4$\xbc\xfc\xfaI\xe8\x9d \xe4\xd0\
+\xe9J\xe8\x9c\xdc\xcf\xf3\xc1\x1afU!\x83D\xa5z\
+\xe3\xbd\xe2\xcd\xf9\xfd0[\xa9@Z\xab\xc6{\xab\xf5\
+\x84B\x85z\xe8\xe1J\x00\x19\xe5\x01\x82\x10O\xdd\xb7\
+\xcd\xd2qN\xb3\x9c\x08\xd9\xb2\xdb\xb2\x22\xd9S\xe5\xd8\
+\x11*j\x95\x19\xfe|x\xc9\xf0\x92\xdc\xf2\xb1@\xb7\
+@%\xeb\x06\xd7\x84*\xdb$\xd0\xba\x81Y\xc5\x16\x8e\
+\x83\x0d\xb2\x8a\x0a:djj\x8d\x18\xfb\xba\xa0\xe1$\
+\x8cE\xae\x09K:\x95\xee\xe6\xa0\xe6`\xd3)\xcf\x94\
+\x96i}l\xae\xe8U7\xfc\xbe)\x11\x98[\x1b\xd2\
+z\xd9\xddbV\x12N\xc3\xd5\xcc\xd2\xb8\xf8\xa2YQ\
+\xf5\xf0y\xc3\xba\x8d\x0a\x86\x12z.\xef\x09\xfb;-\
+\x0a$t\xdfc\x96\x8e;\x9b\x95\xcf\xf1D\xb0\x12\x00\
+\xa3cF\xc7\x8e\x8e-2u\xc8\xf19\xf4\x9c}\x02\
+\x95\x9bw\x99U\x81\x06\x95zd\xfe$\xcf\x96\x91\x14\
+/+\x81\xbbH\xa9\x00\xfa|\xa4\xf2\x0c)\x1f\x81\x15\
+\x01\x15\x90o\x90j\xdb\xf4\x09\xd3n\xc7n\xa7n\xc7\
+j\xbf=2[9\xcfm\xb2\x15\xff\x86q\xfb\xd7\xec\
+Y\x8d\x8df7\xab\x10\x9b\x90\xef\x01\x91\xbf\xa4\xf7\x07\
+ \xed\xf4}\x99\xfd\x17\xbf\x85\xc4\x03~6\xf1\x02~\
+\x12\xf7\x87\x16\xa3-\xcc\xd2\xe7naV!(\xb5\xaf\
+x\xc2\x1e\x04\xd8\x0df\xe9\xc7\xd3\xcdJ\x80\xdc\x1c\xd2\
+\xef#\xdez\xf7\x97\x9eLq\xb4\xe9\xe8\xc3\x19\x89\x03\
+w\x89H\x11]\x95g{\xb3r?\xfc<H\xd4\x11\
+_(@vD$\x85\x8c\x88\xa8\x04\xfa\xaeB\x90W\
+\xf8\xe10\xe0\xf9\xe1\xaf\x13\xf8\xe1/\xe2\xa7\xf1>\x02\
+p\x02~\xd6\x0b\x12\x0e@\xf0I\x88\x83\x00\x80l\x0f\
+$\x13-\x09\x8c#\xfc>\xe2:\x9e\x1b\xfe\x0e\x09O\
+\x9e3q\x07\xcf\x07?3T\xd8}\xdd#\xf0\x7fv\
+\xa2\x1f\xef\xa4\xcf$\x14\x09p\xa3\xdc!~\x22~2\
+\xd7Cb\x84\xf3\xe0\xfb\xe1\x0e\x90\x9f\xe6\xdcL \x10\
+\xf0\xb39O\x90\x22\x8c_\xbe\x9f\xfb\x13[\x0d\x88#\
+\x19\xbf\xf8\xcb1\x01@\xa0\x1d\xe3\x0b\xfc\xd5\xc8\x91W\
+\x90\xd5\xfd~C\xbcL\x01\x9d\xcf\x8f\x1c\x07\xf8\xf5\xb1\
+\xe0\x17\xef\x1f\x9f?>Q5n<\xe7I\xfe,\x08\
+\xee|z\xa0M\xe5\x18\xc3B\x88\xdc\x17\x0e;'F\
+\xc0\xceq\xde,\x08UZ\x01\xf8\xfddd\x09\x93\x91\
+&0\x91&\x93M\xe0\x81\xf0\xfe\xa0+\xc9\xf7\xa6\xc7\
+\xdb\x93\xae\xad+\xa85\xff\x08\x80\x80|\x01\xcd\x87\xf5\
+9\xb2r\xf2`\xa8\xe0\x89\x0d\xdb\xe5\xba\x16P\xc0\xc1\
+\xf9\xc7\x81\x8f\x03@\x80G\xe6r\x15Aw\x17\xd6\xc2\
+Yd+\xc8$MLx0\xf0\xb8/\xcf;\x19\xe3\
+D\x99\x89Br\xd7\x0f@\xae'f\xc8\xa8\xf4\xc3\xae\
+\xcf\x84\x0e\x01\xa2o\x08T\xe4\x0b\x1b\xe7\xc4V\x02~\
+&pfb\x13\xb0\x12pr\x1d\x9cg$\x7f,\xa4\
+\x16}\xc2\x00\xd9;\x12EA]\xc1\xc7\x03\x9c\x0f<\
+\x0f\xeeG\x9c\x80\xb1\xe7\x87\x0c\x9f2\x9b.\xeb\xa7\x04\
+\x87o\xa8<\x9f\x97\x03\x8b>\x10v\x02.*\x03p\
+k\xc0\x1d1\xcd\xefO_\xe1\xa3\xf5\x80\xef{2 \
+6\xb8\xaf\xcc\x1b\xc6!\xf7\x93\x85\x82\x80\x17.\x016\
+\x5c\x16n\xfe\xb1\xe0\xf3\xbe(;HB\x06h\x12:\
+\xd7_\xc9\xe6\xec\xcc.\xdfFo+\xe7\x05\x19\x0d*\
+\x1eK\x9bU\x1b\xfd\x1d\x22'3U\xe6\xeb*H\x9c\
+\x12\x0d\xddQf\xd5\xbcc\xbe\x81p\x10\x19\x98op\
+\xbc\x0e\xf219\xc4\xb0\x89{\xa0\xa7\x8d\xaf\xb9\xde\xac\
+J\x04\xf0<\x84dp\xd2D\x05\x0a\xae\xe7.G\x91\
+\xc0\xb7;\xc5\xac$\x02\x80\x9c;\xe2\xe3\x80\x1e\x22\xef\
+$9\xf4\xc2\x92\x00\xa2g_\xa4q\xcco')\xfc\
+\xaeY\xa9,y\xe2\x80\x8a\x12\xf3\x00\xd9*Ul@\
+h8\x12\x086`\xf5\xb2{B\x8c\xcfa]\xd93\
+[\x81\xc8\xab\x92N\x05\x1d\x12\xa4fZ_\x01\xf7^\
+mH\xd1\x90i$\xe1\xa1@\xba\xd9\xd8\xb0P\xe98\
+G\xb27U\xa4k\xf9_:^l&V\xf6m+\
+\xb9;\xb8>4\x7f\x08\x5c\xc6\xbe\x9cm\xac}\xd8L\
+-%\xe6\x10mf&\x87\xe9\xfc\x12\x004g\x99U\
+\xbd\xe98\xd2\xb0\xc4\xa3j\x007\x80t\xc1\x9d\xfd\x5c\
+\x89\x05\xaf\xe4\xcaA\xecn0\xabX\xf9\xe5(:)\
+$\xf3N\x15\x1b\x97';\xcc,\xbdn\xb6\x1e!\x91\
+\x81\xc1[\x8aK\xe0\xb0\xaaG\x19\x9dk*\xcb'\xf7\
+=\xdf\xc3\xdd\x92\xed\xae\xca\xe6'*\xf2/\xd3o\xff\
+Giyk\x8eN\xf6\x8d\xb2~t\x9f0+\x08\xb5\
+\x0c\xdd\xbeRl\xe0\xafi\xfd}\xa4\xec\xdf\xae2!\
+\xce\x99\xc1\xa9f\xe98w\xb2\xf4\xf7\xb6\xb3\xe6\xd8t\
+\xfc\xb5Y\x95\x08\x15i]\xb7\x87Y\xb5\xce\xe8\xbe{\
+`\x0e\x19\x97Z$\xdaM\xcc\xd2\xf5mgV\xd6S\
+\x9f\xbf\xcb\xa6Y\xb9l\xc5\xbd!rO\xbe\xdf{\xc7\
+w1\xab\xe4\xf0\xe8\x91%\xd0$\x90\xa5\xc7W\xcf\xc3\
+\x03\x83\x1f\xaa7\xf7\xed\x22\x07\x9b\xdf,\xb3\xe2\xe7\x9e\
+\xef\xee\x00\xb3\x8a;B\x89\x11\xe4\x1e=\x11\xa5\xc4\x1a\
+\x88\x04*\xbfp\xa0x\xe0\x16\xb8\x83\x08LS\xf8\x9b\
+\x91$\xdd\x91f\xe98\x8bY\x91\x95\xb3:\xa7U:\
+\x1d)\x80l\xe0'\xb4>=\xd0\xdd\xd7\xdd\x9f\xe5F\
+\xc7Ln\x14u\x09\xb8\x00\x5c\xae\x8c^d\xed\xf7p\
+Q\xb4w\x99U\x899\xd4\x14\xd4\xb2\xc4z\xe1\xe4h\
+T\xa8A\x86.\x93k\xc0e=?\xa0G\xc0\x8c\x16\
+0\xab\x02\x19\x91\x81:BD\xba\xef\xc3\xbd\xcc\xd2y\
+|9Y\x1a\x1f\xc3\xe5\xcd\xd2\xcf\x0f\x98\x89Sc\x87\
+\x22\xebI\xcf\xb7\xef\xe3\xac\x07$&\x08\xe8\xe0\xc6\xd0\
+\xf3\xee\xe6\xee\xe62\xd2\xc8\xd1b\xa3E-\x01\xeb2\
+\xa28\xf07\x08j\xcd\xf3! \xa7\x22\x0b7\x0d\x81\
+\x12\x81\x18\xdc\x02T8\xd9\x0f\xad5e\xce\xaab+\
+\x12;\x97\x17e\xbd1\xb9\xc9\xab*\x92QK;\xee\
+\xad\xf94g%\xb3h\xf3\xfc\xe8\x8c\xf0\xf8`Fx\
+,0Z\xd0\xeeowgwWwgN\xdc_\x90\
+\x13\xf7\xa8\x83\x5cn\x96[hzD\x90*\xe4i\x14\
+\xad\x90\xc7\x11\xcf\x07\xd2M\xf6\x1f*\xb4\xfcS`\xea\
+-N\xf4\x1e3\x8f\xd4\x82\x94\xc5\x02wy\x83B\x04\
+~;\x89i\x05\x9e\xcd7\xcc*\xbf\x8e\x00\x9c\x80\x87\
+\x7f\xf8]\x22\x87\x8b\xea].{\x18\x02!'O\xd4\
+\xfa\xe12\xc4?6\xab\xfcZ\x12I\xc8E\x8e\x9bU\
+\x09w}\x0e\x885G@\x0ba\xe7\x09\x22\xe4\x0eI\
+\xb0+q\xe1l\xfd\x8c#\x8e\xdc7\x12\x01\x81l\xdd\
+\xc9\xf3x\x1d\x88\x04*\xff\x04\xb6\xb4\xbcP\x89\x07\x22\
+\x8f\xdf\xc4\xe7\xe2\x8f\x83\x08TB\xd5[\xe7@\xfe\x11\
+\xe7P\xc8\x8a*'z\x1e\xcebO\xc0\xcd~K`\
+]\xb7\x92O\xa9~\xcf\xcf<W\xe2\x86@\x1a\xee\x01\
+;\x09\x11\x12\x1e$\x02\x1eW\xfc\xc0\xfbl\x94\xcdR\
+\xed\xc7\xc4\x1d|\x0f\xef\xe3~\xf3\xbd\x04\xfe\xa5p\xd9\
+'r\xf8\xbe\xc8\xe9\x16Z\x07\xd8\xbf\xfd<\xa7\x84B\
+\xeedr\xf4\xc4_\x11A\x8f\xdf\xc8\x91\xf8,\xb66\
+\x83\x0c\xe0H\x9c\x84\xdf\xcf\xfb\xb4>\x8dg\x95\xe3\xb3\
+\xaa\x1bby\xcae*\x07\x92\xcc\xb9\xa0\x82\xdeSl\
+i\x80\xe5\x0aKq\x0e\x17\x86\x15\xd4\x9f\x0b\x22\x90\xc7\
+Q\xe7\x02p\x0c\xb8\x915g\xc0B\xd5\x91\x1e@e\
+t\x1c\x92\xce\x0dbA!\x90!\xc0&\xf3\xaa\xc0x\
+\xa4\x07\xda\xac\xaa\xef!P\x8a\x81V\x80r\xfb\x03\xa0\
+\xe2\x0f\x09\x1f\xd0a\xce\x93\xc0M\xd7\x9b\xb6\xb5\x1eb\
+\xb5\x90\xa0\x82\xcb\x09z\xcayG\xf6~\xc8\xa2\x96U\
+e|5-|T\x8ab\xa5\x96\x07\xc9q01\xb3\
+\xe3\x09\x84\x9740\x99h\xdc\xff@^\x01\xc2\xc1\x03\
+Q\xee\x0f\x19\xdc\xc8\x9a_\x02\xe9\xfe~q\xff`\xd3\
+\x9fK\x03p\x102[B<x\xab\xc4\x8af\xd5\xc0\
+'\x00\xe5\xbe\xf2<I\x10\x90\xc8`\x02q\xbf\xd5\x9b\
+\x98\x9eN\xffyd\xdeB\xaf\xcdL*\x09\xb1\xa7\x9f\
+\xcc\x1f\x0b\x01\x815\x09,\xbe\x17\x84\xc43\xde\xf2\xd1\
+\x07~!\xc1\x04)\x13d+~_yN\x91\xd4\x04\
+\xe8\x0e\xe7\x13\x91\x11\xf1\xfa\x0bYa\xff\x9c\xc8\x98\xe3\
+\x90\xc3\xaa\x0f\x04\x9dy\xc7\xfd\x05a\xc0\xfb\xa3\x9e(\
+\xcf\x85\xf3c\x83\xe7\x1f\xec\xac@\xddV7\xab6p\
+\xc9\xf8\xf8BI\xe2KH\x19g\xa7\xdd\xc3\xacld\
+\xc8\xff\xf9\x86C\xaf!\xe3\x03v\xf3\xe8\xc0S\xd1\xa6\
+7Pr7@\xb0\xd1\x01w}u\xd4@\x80l\x1e\
+lVA\x13\xc5\x0aM\xc5\xcc\xe5d\x08 %\xbf\xe7\
+2}\xfb\x9aU\x819\x0e\x00\x09\x06Z\x85\xb8O8\
+r\xea%\xf4\xcc>\x95\xb8\x00\xed\xc6\x01!\x80l\x1e\
+0\xcb\x95\xb5d\x95J\x80\xc8~|~\xd1+&d\
+\x85sO\xa0\x92 U\x04Z8<!\x04\xc9\xccn\
+}\x22\xa49\xc3\xac\x04<\xa8.\xc01\xd0\xfc\xbdy\
+\xb4\xf9{\x15X\xabW\xd6\x18\x072\x84]\xdc\x06\xb9\
+%\xc0\x10$G\x99\x95^\xf7\xccB\xff\xd1\xeay\x82\
+\x00Poo\xf3m\xb3\x8al\xd2:\xa7/U\xe2m\
+\x89\xdc\x0a\x92[$\xda5\xdb\xb5\xda\xb4\x8e\x0dV5\
+K?\x7f\xc4\xac\x0a\xf4\xa9\xe4#'I\xe5\x8f\x80\x9d\
+@\x19y@UfA\x92\xe0\x10\x02\x91D\xb6\xd0\xa1\
+\xb0\x8cW![\xba\x97\xcc\xaa\x04\xb3\xe6es\xa0\x99\
+Z}\x1e)\x5c\x04.w\xa7Jr\xbemM\xd5s\
+\xaa\xf1\xd1\x9elV\xddOZD\xb4Nt\x9b\x99\xa5\
+\xe3\xe1f\x0a(\x8f\x12\x8b\xfb\x1eE\x97\xde\xb9\x0cl\
+\xf5K\xf3\xbc\xdd4\xd9&\xea\xfdO\xf3\xc64\x1cL\
+\xc5\xa1=#\xd9\x999\xf0\xcd\xfb\x99\xeb\x9c\x03)7\
+\x88\xfa\x92\x15T\x15}p*w\xaa\xccu\xcb\x99U\
+-/\x90\xe7\xc1\xb6.$\x0dH\x8a\xf6\x13f\xc5\xa1\
+mn5K\x9f3\x9fY:^o\x96\x8e\xab\x99\x15\
+d\x8e;\xec\x22[s\xb6v\x917\xb6_3\xab\xd8\
+\xf6) \xe89\xb6\x0b\x99\xa5\xe3\x9b\xcc*\xb2O\xc9\
+\x0d\xba\xfa\x04=\xe9\x22\x15\x03j\xecPZ*\x98T\
+\xda@*A\xc2\x8a#\x07\xe2j\x15AS9\xef\x7f\
+\xf6d[\xbe\x0e(p\xf1\xca\x97\x12\xb4\xec\xcf\xdd/\
+\xba\xab\xba\xab\xf21Yi-\xf1V\x00z\xd5\xc5=\
+\x90U\xd7WW\x02\xec\xd4\xd2\xa22\xf8J\xb2/\x97\
+\x04\x18\x89\xc3\xd1\x8af\x95\xa3\xcb\xfe`\xc0\xd8\xdf\x95\
+\x00\x172=G\x0e@*GBd\x81dFNy\
+\x7f\xb2\x07\xaa\xfb*\x12\xbb\xe1\x85f\xe9\xe7\xe9='\
+D\xfbw\xb3J\x05A\xf3\x9a\x82\x95\xcb\xcd\x12\xf0h\
+\xff\xf1D\x0c\x81\x17\xbd\xf5\x9f\xb4\x94IN\xec\x1c\x98\
+\x13;j\x05H{ZFL\x8cm?\xb6]\x86\xd6\
+*\xf1\xe8\xfe\x12\x882H\xb4\x95\xd8\xca^\xc3c\x15\
+TZ\x88Z/ 3*d\xa5\x17\xdc YD\
+\xf6\xf3\x83}\xcb\x84#\xcb\xac!\xe0\xc4\x8a\x83\x0a\xe4\
+EA\x00X3\x8c\x91\x04\xe6\xf5\x88\xf5\x09\xb2M'\
+\x0f$a-y\xd7<\xca?\xa4\xeb\xfde\xc5\xad!\
+\xf5\x1dT\x12h\x91\xf5\x00\x9a\xc0\x10\x7fA\x89S\xef\
+\xc5\x0f\xf2\x97\xee\x07\xe0\xbf\x80(\xa4\xc5\x04\x99L\x90\
+(\xc8\x0eFvv\x12\xdf\x1c\x09p\xa9\xf4\xf2O\xad\
+b\xeeG\xd1\xb2\x03\x09\x1ed\x8e\x22\xf7u\xa4\x90\xe6\
+?\xdc@$\xce\xbb\xe3\xcc\xd2\xf1Of\x85\x0c\x98\xf5\
+\xc0[\xa7\x90\x0f\x85tW\x5c\x01\x9e@\x81\xd3\x88\x9e\
+|z\xd8QK\xba:[i\xd1`~\xe3?\xff?\
+\xc2\xee\x03\xec\xb6\xab*\x17\xf0\xd9\xfb?\x84\x12Z\x10\
+\x08M\xe9EB\x09R\xa4\x83T\x95\x16A.\x02\xf7\
+\xd2\x14Q\xaf\xf4*U\x01\x0d\x04\x01\x81D\x94\xd0\x0c\
+\x08\x88J\xbbT\x0b HQ\x0ch\xae\xf4^\x12Z\
+B\x09\xa1\xe7\xac}\xd7\x98k\xbcc\xcd\xcc\x93<7\
+\xe3\x81\xfd\xfc\xff\xd9\xff\xdek\xcd5\xcb\x18\xdf\xf8\xc6\
+7\x94\x0a`\x12\x00\x00$\xf4d\xbeQ\xf2\xfd\xbb\xf9\
+\xa7\x8d\xa1\x1a{\x9f\x87\xe1`=\xf3\xe7i\x15\xd8w\
+t[\x18\xbb\x9d\x8d%\xd2\xfch\x01\xb6\xeb\xe5W\x8b\
+[\xf8\xa1\x80\x97\xb1db\x14\x05\xb4\xae\xdd\x0f\xe0C\
+\xa9\xe0\xc7\x93\xa9\xfd\xd1\xf4\x9f\xb4\xa57\x8f\x9cC\xfc\
+8@\xc5\x98\x80\x14\xf8+\x0dp_\x030p\x90X\
+\xa18p\x14#\x1c\x99\xdb\x9e\xab\xd22\xcf\xcd\xf8\x8c\
+\xed\xd9\xcd\x7f\x1a\x09\x80\x96\x5cg\xc504\xaf0\xc0\
+\x93Y\xd3\xc5\x89\xcb\xba\xcc8`)\x01\xf8i\xf7 \
+/\xdaB\xb4\xf5B\x04\x182\x13\xc4\x88\x02\x99\xff\xb3\
+D\xee\xae\xdf]\xe0\x88\xf0\xb8q\x01:\x043\xbf\xaf\
+T\x9d\xb5O\xeb5\x06N\xeb^Q;d\xa2\x13\x99\
+?(\xf0\x17\xb0\x98X2\xb8\x9f\xcf\x0d\xf7\xa3Y3\
+\x8e\xaa$\x90r\xfd\x06HFW\x80$\xb3K\xa3@\
+`\x09\xe1\xb1\x11\x0120%nP\xe2vK\xe0u\
+\xa9\xbcN\x9fg#[k\xca\xce\x8a\x8c\x09\xcc\x5c\x9f\
+\xffd\x80\x05D\xdb\x0c(\x05\x8a\xd9\x0f{\xf7\x99\xac\
+!\xd76\xc2\x84\xf2}\x1c}\xf7% \xf6}&\x0e\
+ bP\x15\xad\xe7\xa5\x96FM:\xc6\xc8\xa1\xf9~\
+\xcf\xe3\xb4\x5c\xe8\x16\x88W\xd7\xe1\xfb\xc7\xb6\x1e6\x98\
+\x95r3%\xb2\xbbm\x0b@`\xc7\xa1w\xbd\xe6\x83\
+\x80\xdf\xc6\xe6{m0\xeeS`\x9f\x14\xa5bF\xa8\
+\x81<3\x81\x8f\xc3\xf3~Vu\xcd\xb3\xb6\xdb\x10P\
+\xe6\x86Z\x0b\xd1\xf5{\xbe\xd4\xc03#U\xe2B\xe6\
+\x9d\x0d\x023A\xc0:\xb4W\x92\xd9(\xad\x00\x81\xbf\
+Zyb\x9bj\xba\x04\xc4\x9e\x93\x8c\xb5\x03\xd9\xf3\x1a\
+5\x1a<\xef\xcc\xacU\xc0b\xdd;\xe8\x92j\xd8\x02\
+\x89_\xee\x98\x01\x19XS-\xdf\xfdvX\xd7\xd6\x07\
+\x85<)\x99\xdb\x07\x84u\x14A\xe2Z\xda\xeed\x0d\
+yu'\xc0\xfc\xa1\xc1\xa0\x8f}\x96\xba\xc8\xa4\x96\xfa\
+\xaev\x9bIu\x17\x90\xd4\x81\x9a\xfd\x9f\xa7\x1b\x87u\
+\x9f\x97H\x7fe\xb2\x95>\xa0\xf8jW%\xa0q`\
+R\xdbOu\xe2\x0a\x90\xac+\x80\x87\x80\xd3}>,\
+l~}EXG\xd1'*(\xb3\x9e\xd4\xc4\xd2\x16\
+0\x0f\xb3\xc6\x92#\xb7yG\xd8\xfc\xfa\x95\xb0N+\
+\xe1Ka\xab\x08\x9cq\x9f\xff\xff\xce\x9b;wZ\x0f\
+\x98\x02\xaf\x0d[3mU\x9b(\x00V\xcbH\xcb\x82\
+\xf8\x1e\x0ap23\x8aR\xfa\x8dV\xf4\xb3\xf6WV\
+Z\xa0\xfd\x18\xd1\xc5\x04j\xb6M><E\xf9\xe6q\
+\xdd\x9e{\xb6y=\xed\xbd-l\xfe\xf9\xbaa\x1d\xf0\
+\xa2\xf64\x81\xb6rh\xb3\x16\x938e\xcd'm\xff\
+\xfc\x9cZ\x03\xdbK\x85u\xe3\x9f\x8c\x8d\xca\xb0ph\
+\xf5\x8bN&\x09\xf1\xb6\xea\xc3\x9c\xda\x17\xa5\xd2m\x7f\
+\xca\x8c\x18\xc0F\x80Z%g\x19(n\x7f#,\xe7\
+\xd7y\xd6\x0cd+\x11\x08u\xfc\x07-\x94\xf13\xff\
+~\xb6\xa0\x86\x1f\x11\xb6\x96\x1al\xaf8\xdb\x95\xd6\xb6\
+h\xdb\x93\xc3\xe6\xd7W\xce\xf6\x8aT\xf9\xbf\xe5\xfa\xfb\
+F\xe4~M\x0b\x00\x97\x00!\xba\x16\xcc\x8e\xfa\x81\xe7\
+\x87u\xfbxf *\xa02\x0f\xb4?K\x0d\x91\xdd\
+O\x97\x1a\xee\xca\xd0Ss?%\xb5&\xb4\xefJ1\
+\xb5\xbd\xa3\xc3\xbavY\xd9\x86m\xbaW\xd8\xfc\xfa\xe5\
+\xb0Nl\xedGa\xf3\xefo\x9e\xea\xf6\x02\xaf\xbf\xce\
+\x0c\xe6s\xb2&\xf8\xb0h\xc0\xd8\x95r\xe4\xf3)&\
+\xc6\x9bg{K+\xf1X\xae?\x1d\xac\xaa%W\x0b\
+\xff\xe7a\x1d\xe0Fk!5%\xb6?\x17\xb6\xce\x9f\
+Z\xef\xd4\xea\xf3\xefK\xed?K\x14v/[J'\
+v7_\x80\xb0\x12\x11\xe4\x80:\xc7\xfa\xdf\x7fy\x05\
+\xf6\xa7\xdf\x9d\xedA\x9d\x9az\x02,4L\xdas\xd9\
+\xebj\x92#\xdc}|\xae\xab\xe8\xf2p\xb3\xd9\xa2{\
+\xc7?\x86\xcd\xafo\x0ak%\x09\xb3\xb5\xf5\xb9\xd4d\
+\x07O\xe9\xa5]\x22\xc1\xb9\x99\xe7\x02fH\xd5\xeeG\
+\x89\xd7S\xbb\x8cr>\xff\xe9Va\xf3\xeb\xabf\x9b\
+\x03\xe0\xe9#\xb3}x\x9eg\x87\x1f\xb8\xc4\x81Kt\
+Z&\x80\xa6\xf4\x13\xa6\xa3\xc3:\xc6Y2\x17\x8a!\
+Ac\x83v\xc7%\x9bGV@X\x05\x86\xff+\xac\
+\x03\x16\xac\xc3\x175[\x81\xaf\x08x\x1f\xd6\xf9C\x00\
+\xfe\x04$\xab\xed\x9fZ\xe4A\xfb\xa6\x95r\xdc\xbcc\
+\xca\xa5\x16L\xf9\x9f\xc9\xb4\xa8@R)\x83\xef\xa1\x09\
+\x90\xcc\x92V\x9a\xf2\xf6\xb6\xbf.\x19|%J\x12x\
+y\xfe\xef\x9e\x12\xd6Dg\x1bs\xad\x02n\xfbq2\
+\x8f\x8a\x22\x7f\x9d\xdd\x91\xbb#;\xc6\x93\x0c\xa3s\x8d\
+\x1f\xfe\x89\x14\x7f{j\x96\xee\xe9\x1e\x93%X\x02\xe4\
+\xca\xe4\xaa\x89w\xee>8\x81\x19\xe7t\x02\xd4\xf5\xb3\
+Lt\xfa7%\xa2\xc8\x9f\xa0\xede\x1f\xb6\x1f\x8d\xea\
+\xea\x18\x98\xa8\xea\xc6U\xc9\x1f\x06\xa7q\xf7w\xfc\x9b\
+\xac\x9d\xafv\xc4\x09<UBC\xff\xf7l7[\x19\
+{\xdfK\xf3\x80\x98\x1ff^\x02\xcf\xd5f0\x01\x81\
+\xba\x0f\xf3L<\xe6\xfa\xad\x7f~\x96\xc0X\x89\x80\xc0\
+\x9f\xc6\x85\xcc\xbc\x04\x14\xffM`\xeb\xef\x00\x0f\xae\x93\
+\x08%\x00J\xbc3\xb6\xa56^\x00\x80\x1c\xb7Z\x07\
+(\xf7\x12\xc0\x02\xeb\xb1+\x97\xf7\xad\xa2~\x8b\xdf<\
+\xb4#,\x91\xcc\x8fdm\xbe\x80\xdd\xfe\xea\xefe\xfa\
+\xc5\xa5}7\xbb\xbe+\x98\x00}\xe8\x8eU\xd7\xe5\xd5\
+\xef1\x14\x00\x06\xc6_\xc0\xbf\x96l/q\x87\xe7\x0d\
+\x88\x19\x99\x0f#\x13X\x1c$\x8e\xf1\xef\x12\x9b\x12F\
+\xf9=\x0dX\xbdh\x07\x10\x8a\x17\xc5\x1f\xf99\xfb\x9b\
+;z\xf3l\xffp\xcb.`0\xc0cf\xd6\x849\
+\xac\xe9\xbf\xaf\x8e+\x0d\x80ou\x01\xde\xd7;\x00\xc1\
+kO=\xbe\xd0\xd9\xf4q\x1ck\x1a\x0c\xdc@\x1d\xaf\
+\x9a\x99\xcc4\x96\xb8\x93\x09\xe9\xc1\xf8;\x8e\xf0\xc7\xb3\
+\xcd\x5c\x22\xa5\x07\x89#\x8cm\xf3\xdc\xbf\x8161L\
+\x00\x19e\x99M\x01\x8c\x80)\xa9\x84\xad\x89\xcae\xba\
+Z{\x9fgBBv\xd2Q\x00 \x14\xe3\xe2*\xf9\
+\x5cF\xf1\xbao\x15\xb5\x7f\x99\xa8\xfb\x12\x08\x18\x90S\
+\x0b\x7f\x0eg\x17\x06\x03`\xc1}\x8em\x00]\xdf\xa8\
+v\xe9\xfbM\xf0\xb1\xd6\x5c@\x0b\xd8\x11\xd0\xae\x01\xfd\
+Y\xd469\x02\x15h\x9fS;\x0e\x9f?\x95\xba\xff\
+\xee,\xafc\xfb\x8d\xd3\x07\xe6\x03&\x896\x94j\xb8\
+~X\xe2\x82\xcb\xf5\x19Wm\x18\x93J\x15\x0a\x03M\
+c\xc0\xc1\xab\x9d\xe2\x9a\xc9_\xe6)@\xc8\xf8\xbb\xcf\
+\xac}\xad\xf1\xc0P1\xffr\xa3\xb1A\x0a\x18\x0e*\
+\x95\x18\xe7#F\x08\xe6\x80\x0cd\xb6\xe1)j\xdd\xaf\
+\x86\xad\x99\x8cj\x03\xe8 \xbbv\xb3}\x9b\xcb\x86u\
+5\xaf\xa8\xca\x991)\x07!)\x8bj\xc3\x0b\x91\xcc\
+q\xd4~\xab\x80\x04\x1b\x1c\xf1:\x99\x02\x19hm\x0b\
+1k8\x14y \x97\xca\xbf\x8c\x03\x0a\xaaL\x9a\xfd\
+\xc9\x81i\xde\x0b\xc0!\xef2^\x9e\x9b\xefQs\xa9\
+=\x13\x871\x03\xb8\xaaU\xa3\x16\x8d\xeaIu_\xc9\
+\xc0\xed\xc3\xba\x00\x9e\x86\x86\x8c;F\xc9\xd8\x97u(\
+\xbd0\x0f+#\x8fia\xfd\x19O@\x1e\x91\xa7\xcc\
+\x1cO\x8f\x08[\x03%\xb5\xb3\x02\xfc\x02Le\x088\
+\xc4\x10v\x0c0\xe3\x9b\xe2\x9b\xf35.\xfb\x9a\xfb\xbb\
+WX\xe7\xd8Z\xb7\x18 I1\x06\x5c\xa1\xe6W\xe6\
+SF\x81Ju\x02<\xae[\x0dj\xa9K\xe7A\xb8\
+\xfd\xf9\xb0\xb5\xa4c\xfb\x94\xd9\x9e\xdci\xd7\xa8a\xbe\
+lX\xab\xfd}t\xab\xfd\x8d\xfd\xff\xe3k\xe0\xaa\xed\
+\xd1\xe6\xaf7\xaf\xdc\xfcu\x0b`Z\x1b\xacF\xcc?\
+\xaak\xd3\xf5\xb4\x85\xc9\xb1y\xf5\xfc\xce\xbfn\xfb\xd5\
+\xc2\xb0P\xda\x83Q #\xf8\xcc\xb0\xeey\xda\x7f\x92\
+\x9a*\xb3]b\x80j\x901\x9a\xd4\x04\xbb\xce\x14-\
+\x04\xd8m\x1f\x1a\xd6\x05Lw\x0eK \xfd:\xc9\xa0\
+x\xda\xbcm>|\xb6y\x1e\x1c\xf8\xa7\xb0\xb5&x\
+{\x93\xd9n<\xbf\x1e\x98\xed\xcc\xd4\xde\x98\xafk\xef\
+~\xb3\xddw~\xfd\x8f\xb0\x0c\xc0\xaf\x9c\x8euhi\
+\xbc;\xac+M\xc8}\x8dC[\xdd\x122#]]\
+\x90\x9e\xbdd^\xe7\xabm5\xd2\xbb''s'\xf7\
+\x9d*\x09\xb8\xd4\xa2\xe6/\x80\xdb\xbe<l\xcd\xa0\x97\
+8cR\xc7Q\x94KD\xee\xd8\xe9\x05\xd3\x0bR<\
+\xf1\xc2\xeb8\xb66w\x0f_\xbbw\x94\xe6\xc8\x97\xc3\
+\xba\x80;U\xfb\xa7\x8b\x85u\xea\xe1\xc7l\x9e\xb59\
+\xa6i\x07\x1c\xb5;\xaa\xfb|\x8e\xa7\x80\xe4\x7f\x86\xad\
+\xfbT1\x1c\xf2\xbe\xa2\x19d\xcb\xc4\xa6\x18!1\xd0\
+\xe9ya]\x9b\xb53\xb2\xbb\xc1\xd3\xc3\xd6\xee\x0c\x02\
+\x9d\xda\xb7eXs?*\xaa\xfb\x0bs>\xedo\x9d\
+\xd8\x97\xda\xfc\x9bv\x99j\x22a\xd9\x0e\x14\xa3\xa2\x9d\
+\xdb_\xcb}\xedM\xb9\xdf\xcf\xfbe\xf4p\xd8\xce\xfb\
+\xd1\xf6W\xc2V@H\xc0\xb3\xf9\xde\xe6\xf4\xcd\xe9\xdd\
+\xf7sHe\xea2#[\x22\xa0\x02\x92\x14\xd9\xac@\
+/\x99|\xd3\xf5g\x9b\xcf\xc9\x03\x0f\x0c\x9b\xff\xee\x0f\
+\xc2\x92\x22\x7f\xcb\x15\xe0\xa8\x12\xb1\xd4\x1e\xf2\xf7%n\
+Ge\x9d\xc3\x9dm\xcb\xaad\xf7\xee\x8b6\x05\xd1\xd1\
+\x0aPi\xcf\x00r\xf3\xbe\x1a`\xfd\xc0\xcc8\xff}\
+\x07\x10j3xX\xe7\xdf\xed\xba\xfd3N\xcf\x07\xaf\
+@gui\xa1\xfeM\x04VI\xc4\xe8we\xe0\xab\
+\xebB\xed\x97\xd6_\x9e[\x9bK-\x8c\x14\xa5.\x05\
+\xa0\xe5>8\xbdw\xd1X\xd8\x9cwI\x98\xec~'\
+\xb5\x1a$\x160\x1dt-\x00\x98:g\xc4\x07\xfc\x16\
+b\x802\xc97LM\x95\x0c@\x0a(\xc1<\xb9k\
+X\xd7\x16\xcf\xb9\x9e%|M\x81\xe4_Zi\xc4\xc2\
+p\xe1'\xc9\xf0\xe6|\xa9R\x9e\xcc\x14W[B\x0c\
+\x13q\x09\x7f\x5c\xa9\x0a-\x1a\xe7\xad8'\xfd\xf0\xaa\
+MW\xd2\xe2\xbah'd\xe0\x8b\x01S\xcc\xdd\xa7\x85\
+u\x09\x11\x8c\x04}\xef\x03@|s\xe7?`\x06\xca\
+\x8c\x0b\xdc\x9d\x87\x02[\x80\x15\x7f\xd2u;\xff\x01\xee\
+\x02m\xaf\x02^@\x81\xc0\x9b\x7f\xe4\xef\x01%\xe2\x19\
+\x1b\xb6\x00\xda:&2\x87a\xc9\xdf\xe0\xdf\x01\x0a\xc6\
+\xdaw\x0c>\xc0#q?\xdfk\xfc\x01\x04\xb4\xd6\x00\
+1\x02p\xf1\x86D\xab\xe7\xf5\xf9\xa5D\xb8>o\x0c\
+\xfc\xc5W\xda\xb4*i\x1d\x01\x88!\xae*\x91CZ\
+\x0d\xe2\xde\x11\xb0p\x7f\xae\xc3\xf7\xbb\xaf\xff_\xbbB\
+\xf1\xed(b82\x1fF\xe6\xaf\xbf\xf3\xdf\xc8,\xf0\
+\x1c\xc5\xbf\xe7\x19\x12\x94\xf9\xfb\xfd\x95\x91\xf7\xe08,\
+(\xc3\x1ednd\xd5\x1e\x22\xa9L\x150\x11w\xd0\
+\xbf<j\xe3\xae\x94\x81\xff\xf9;\xc0 \xdc\xa0\xd3\xcf\
+\xa6\xa6]\xc0?\xd6\xf8\xcb\xcc\xbaq\x19s\x99J\x01\
+\x90\x01\xb5@\x00\x0d\x90T\xef\xb7A\x8f\xa2\x0a\x020\
+T\xf8l\x7fV\xdf\x07\xb9\xd37\xd4\xdf\xe7\xbfW\x86\
+\xd7\xf7\xa4\x03]H\x0c$\xdc\x83\x16\xd0z\xd0\x18\x01\
+\xd7i\xb6>@\x80\xc4\xa9\x03\x13B`!\x83{\xea\
+ N\xe1?\x01\x0e\x87|T\x81\xdf\x0d\xd4xH \
+\xe4\xc9\xf5\xd9\xc8\xf4\x99\xd7\x7f|TA\xc5$\x18\x81\
+\x9d\xb5\xbd\xe4r?c)\xc19\x01\x0ej\xef\xf2\xfd\
+s\xf0\xfc\xad\xbe\x0dem\x94\x02u\xed$\x7f\x92\x9f\
+\xfb\xb5|\x9f\xe7\x98\x01Xm\xf4\xa8\xca\x97\xcf\x05\xe4\
+z0D\x8c\x8b\x85\xe4\xf7\x02n\x99\xe4\x97g\xbb\x9f\
+\x0c$\x0bh\x01@\x08\x0c2\xa3\xa0\xefxm\xc42\
+\xed\x02|\xe3\xb9v\xb7X2\xbaT\x8dQ\x01\x05j\
+J;\x00m(o\x99\xd9+\xf5bm1\x95$\x8c\
+\x99w\xcc\x15\xebfd4Dmb'\xc2W}\xbc\
+\x13P\xe0HV\xe0\x9e5\xad\x95y\x10\x90'\x85P\
+M\xa9\x0c(u\xe3\xda\xb0\xb3\xedR\x05\xe0j\x02\xb3\
+\x04\xa0D\x8a\x922^\x0eK\xde\x97Lv9\x1e\xe6\
+W:\x5c\xe5 \xa5\x06\xc8\xf4\x8a\xb0\xae\xe6\x8b\x06\x8a\
+@\xcd\xfa\x91\xe1\xe5\xf8y\x1e\x0e\xca\x0clj\xfe\x1b\
+O\xefK1\xaa\xca\xd8\xa3`\x9b_\xbe\xc7Af\x1f\
+6\x8f\x13h\x92\xb1*f\x85\x83\x13\x1e\x96]\x08J\
+\x1d?\xc7\xad\x1c\x0a5\xcb\x1c-\x81\xc1X\xba\x05\xd0\
+\xe4\x88\x09\xd4t\x05xBX\xd7G\x98\xca\xbe\xf9C\
+TN\x9b\xb4T\x1b\xaf\x0c\x0b\xd1\xd6\xa4\xf8W \x9c\
+\x8ex\x01NJ\x0dR\xdd~\xfb\xb7\xb3\xbd\xb6\x03\xf4\
+d6\xa9i'\xe5\x9a\x9a\xf3\xee\xeb\xbb\xaf\x85\xe6\x86\
+\xccm\xa9i\xdfnw\xfb\x10!\xabZu\x19\x9a<\
+O\xb6/\x0d\x9b_/\xbd\xbd\xcc\xf62\x9dC\x08\x10\
+S\x13\xfa\xa0\xb0.\xf0\x91\xa9N\x95rL\x9d\xdd+\
+\xc3\xe6\xcf\xbbaXW\x02\x93\xf3\x87c\x5c\x80\x01\x00\
+)\x01\xac\xcaTg\xc6x:|\xb6\x8b\xaf\x80\xf1\xf4\
+\x90\xd9\xe6\xf5u\xe6=\xc2Vq\xba\x12\xeb\xbb\xdd\xd2\
+\xa5\xa61\x1e\x1e\xb9\x02\xe8\xd5\x8d#\xc5\x00Q\xd81\
+\x86\x1aS)(\x86/Z\xa8\xba\xd3\x95\xc3V\xed\x95\
+9<n\x81\xd2\xe6\xfeK`\xab=\x1f&\xcd\xee\x17\
+s=g\xbb\xad\x02|>\xdaH\x9b\xeb~\x98L\x0b\
+\xcfQ`m\xdcJ|3\xc5\xef\xa6\xbf\x0a\x9b\xa7\xf5\
+\x0b\x92\x89@3#5V\xa6\xcb\x84%\x93\xe3\xf1\x1d\
+\xc3\x04u\xf9ZK\x86\x93&\x87\x9a\xf9\xea\x92\x90m\
+\xf2j\xbc\x7f\xb0\x94t\xf8\x9e\xbd\x1b\x86\xcd\xbf?o\
+\xd8\xfc\xfa\xdcE\xc4/\xf2\xc3\x91!\x9e\x8e\x9e\xfe\xa4\
+e\xa6\xf3\xbe\xe6\xab}\xf9\xf4\xf2\x06\xc8-\xda\x0d(\
+\xb8\xd7YJ\x83\xaa\x1b\x00\xc6\x0bq8\x998\xe7\x09\
+\xd1=\x81\xe1\x8f\xd2\xaf\xca6\x96\x0d\xce{\xef\xca\xd8\
+\xd1\x85\xa1\x05\xa2\x8f\xef\x80\xd1\x5c\xa7m?\xbcb\xee\
+kw\xcdy~\xf7\x15\x18\xdc^-\xac\xa3\xe4\xdfr\
+{\x8b\xc6\x10\xf8\xce\xf6\xbb\xdb\xefvm\xf9\x92\xd9\x85\
+\x82^\xe7\x0du\xf9\xdc\xaf1\xaa\xd4\xf0\x97(_2\
+\x8a\xa6g\x84\xcd\xcf\xf5Na\x19\x00|\xa2\x89\x0a\x86\
+U@\xb8\xff\x97\xc3\xba\xfd\x12`J-^\x97\xa9\xa4\
+Z\xeb\xd61\xbdv\xb6\xbf\xe92\xe5\x12Kq\xba\xbd\
+&\xaf\xe3\xde\xeb9W\x8c\x8fG\xb4F\xa8%\xc2Y\
+\xebW\x06/\xd2P\x17\xe9\xda\xb3:w\x89\xb9\x12\xa9\
+\xb3?%\xf0d\xde\x95\xbf&Q\x935\xfc%\xc2\xaa\
+\xad\x1e\x11\xbfC\x9b,\xf2\xbe\xdd\x8b\xc3\xd6\xd2\xc3\xca\
+\x10\xcb\xe8\xbez\xa1\xa6O\x9fI@\x89\x0a\xf9I\xc9\
+\xec:e\xd1\xba(\xad\x0d\x9a;\xfc3\xfe\xa4\xc0\xe7\
+oSd\xf2c\x99\x19\xff\xc3fk\x06\x5c\xbbE~\
+\x94\xfd\x0f\xc0\x92\x19\xcay\xf4\x16\xbf\xc0\xf7\x00\x14<\
+O\x19\xd6\xd7\x85u\x0c\x1f\xe3\xf6\xbf\xc2\xd6\xf5\xb2\xef\
+\x1a\xa9I\xe0y\xf0\x8b\xf9I\x02W~\x1c\xbf\x07\xd0\
+\xc1\xaf\xcb\xae?\x18\x0c\x80\xeb\xda\xcfQ\xed%Z\x9c\
+\xe3\xbe\xc7y,\xe0$2\xa8=\xa4\x00S\x89\x84s\
+\xd2\xf5*Y\xb1\xee\xc5\x03\x98\xbe\xee\xcfyC$O\
+\xa6_\xe0<\xb6\xe1\x13\xa8j\xd7g\x9e`\x068\xff\
+\x05\xc6c\x1f\xfa\x7f\x0a\xeb\xfe\x9d\x7f ^s\xfd\x9e\
+\xe7\xa8\xf2\x0f\xa0\xe0\xc7\x10\xf5\x93\x90\xf0\xfe\x91j\x8f\
+\x99\xf9\xb1\xf9\xfd\x1f\xeb\xc6\x7f`\x04\xd4\xe7\x8f\xb5\xfe\
+>\xef\x9c\xbao\x8d\xdd\xb9\xfc<\xb6S\x1f\xdb\xa4\x03\
+\x1a<\x07\xaf\x03\x00Q\xebF\xe9\x87\xf9=~\x9f\xeb\
+\x19^i]\x14\x003t;+\xb1\xc7\x5co\xe5\x97\
+y~\xfc\xdf\x12\x01\x14p\x08@\x04\xf4\x1ed\x22~\
+U\xfbn\xa1\x98H\x02W\xa5\x04D\xe3\x82\xcarj\
+\xd7^O7\x81\x98Vg\x1c\xac\xb6N]\xb52\xf9\
+\xaeG\xe0(c%\xc0\xb6\xc0\x88\xad\xf8{\xdf7f\
+\xb4\xc7\xda\xef\x11I\x19k;L \x88\x95\xff\xa8d\
+\xd2\x04\xa0I\x80rm\xe3\xb6P\xd2\x01)Q#\x94\
+m\x8e>\xe6\x00\xe6\xc2\xc8\x98\xf0\xc0<\x97R\xa3O\
+J+\xc0\xc2\xf3\xb1\xb1\xb9o\x13\xc4\xf3\xdc\x9f\xaf\xfe\
+\xddx\xd8P\xc6\xf1\xb8\xe8p](\xd6!\x1e\xf5\xe3\
+\xae\x0d\xdfX\xab~\xfa \x0e8Rm\xbewVq\
+\x93\x83\xde\xe7\xf3,\x08\x99\x96\x13\xb3\xa6\xd9\xf5\x1f\x18\
+\xbaX\xe4FVj\xff\x97\xce\x9a:\xe3\x07i5\xde\
+WI \xe0KI\x9d\x07\xd4X0\xde\xe7\xb9\xa2\xfa\
+\xff\xdfDF\xbf\x94\x1b0`\x89X\xcb\x17\xb3T\xe5\
+\xee)^\xa7\xff\xba\xcc;\xca\xb4\xf5\x07I\xcevo\
+Eu\xf3\xbd\xe6\xbf\x0c\xb2@\xf2W\x9b\xadb|(\
+Z\xe6\x89\xf14\xffdH\xd5\xf0\xe5\xfa-QK\x8e\
+\x0a\x874U\xa0\xab\x8d\x9f\x00\xe9\xf1a\xf3\xef\x1f\x1b\
+\xd6\xdd?\x84\xdd\xbc\xd577\xc5tJ\xccO[\xa6\
+\xac\x11-\x95|\xaa\xfd\xda\xe9e\x86\xaa\xe6\xf1\x1f\xef\
+{zk\xe3\xf7\xf0\xb0\x95JX\x99\x04\x07X:\xac\
+\x1c\xba\xca e\x8d%\xf1\xa4\xe9\xa4\xb0N]_\x8d\
+n:\xac\xda\xae\x15r\xae6;E~\xd4\xce\xd7\x01\
+C-\xd9x\x8c\x80\x9a\xd2\x8d\x1c\x07\x14\xf6rX\x1d\
+\x14\x03\xd5\xae\xc4\xb7d\x0c8\x06\x00\xc5t,9T\
+\x9b\xef\x87\xad\xa2\x82\x15\xc8\xe5~S\x80\xa5\x92\x05\x8e\
+Dvo@\xd5/1<\x94y\x19DL\x8fC\xc2\
+Vf\xc1\xf6!\xa9F\xff\x92\xf9\xea_\xb2\xd6HV\
+[\xa6\x07\x87\xad\x19\xa7&\xfa\xf4\xf4\xce\xd1\xbe\x7fX\
+'Fe\xde~'l~\xfdV\xd8\xfcz\xae\xb0\x04\
+L\x8f\xecj\xb8_\xbad\xf01R\x88\xa5\xd5\xbc\xca\
+\x8cj\x01\xcd\x00\x0b\x14\xd5\xac}\xb5/n\x7f\x1a\xb6\
+~\xf5\x02\xc6F\x00\x00 \x00IDAT\x7f1P\
+\xd4j\xfea\xd8Z\xd2Q\x01\xed(\xda\xe3\xb9\xbf1\
+l\xdd\xa7KL0\xfb\x93O\xff\x106\x7f\xef%\xc3\
+\xbaLr\xd6\xc6n\x9f\x1c\xd6\xf5SOGB;\xc8\
+3\x1f5\xdb#\xf3\xbe_\xbbjW\xec} \xaci\
+\x95\xdc6\xb4J\x9a\x86\xc3\x03\xb3\xf4\xe7\x11\xabXb\
+\xfb\xf9Q\x09\xf4\xbdm-Ai\x14\xf0\x9b6q\xb1\
+\x0f\x85\xb8\x18J|s[\xef\x91\xeb\xeb\xf1]{-\
+\xc0\xce\xab3P{\xc7\xfc9\xef\xce\xda\xe4\xbd<'\
+\x22\xb0\xbfiX\xae\xb7_^Ki6o\x0d\xeb\x02\
+\x8e\xa4\x88O\xef\x0e\xeb\xba\x18d&\xfd\xc0\xad\xc3Z\
+\x1b\xb9&~\x86\x99R%\x07\x11 \xbf)3\xcd\xbf\
+\xbb\x96P(M\x99\xae0]q\xbab\xd7\xa5\xc2>\
+\xcc\xcfIM\x8f\xe9\xa9a\x09t\xbeo\x15\xa3S\xda\
+q\xe0\xfda\xab\x98\x1d\xbfdz\xdf\xf4\xfe\xe9}\xab\
+h\xda\xbc\xdb-\xa2z\xdae\xca\x98F\xe0<\xef\xfb\
+\xd3\x09a\xab:9@\xb2j\xc2\x89\x88r\xf4\xed[\
+I\x81\xad\xb6\x9f\x01\xfc\xfdI\xe7\x9fx\xbdmk\x9c\
+\xb8/\x9b\xb9,\xcc\x8d\x9bt\x01aj\x9a(\xf9\xac\
+\xfd7\x03\xef\xed\xfd\xc2\xe6\xd7\x8bl\x7ff;\x9f\x8f\
+\xdboo\xbf\xb3\xfdNWR\x10\x80I\xcc\x8b\x17\x84\
+u\xed\x17\x83\xa7\xf0\xa6u\xbe\x17 @\xfb\x00\x93!\
+\x18\x19\xf3<\x9d.=\xdbe\x92Yu\xbbn}g\
+w\x8c\x06\x1c\xbfz\xcdX\xebNQ\x1a\x22\xba\xd0\xa0\
+\xee\xe7\xfe2\x1d\x12\xb6jcT\x9b;\x09\x96d\xbc\
+4\x80\xec\xe1\xc9x\xb9J\x03\x0ao\x17L\x91\x12\xeb\
+K\xa0F\xc9\xc3\xeeg\xc3\xba\xd2\xa2\x0ff[=\xe7\
+f0,N\xc9\x0c\xfe\xf5\xd6\xf9\xb0\xbbsXW\xbb\
+\xee\x1cK\x00\xb22\x97\x80\xd1\x04Vj\xbf\xdc\xcbu\
+\x95\x80\x01 \xa6\x02\xe9\x14\x1b\xec\x12`K`\x96\xda\
+4m\x1et\xc0v\x01\xed\xd7I\xa6\xd6\xaa\xdd\xb3\xf8\
+?2\xcb\xb4$\xf8'\x12pc\xe9\x03\x7f\x87\x7fp\
+\xfcr\xbe9\x0f\x0a(zJR\xf9\x89\xd8\xe5\xfa\xdb\
+\xdd:l\x05Nh\xe8T)\xd1\xc5\xc2\x1a\xd0\xb9\xec\
+\xe3\x1fH\xe0\x0e\xe3G{J\xddi\xfc7\xf6\x83\x17\
+\x88\x01\xc2%\x1e2\xc3\x8c\x09Z]D\x8e\x08\xeb\x80\
+\x18\x81\x9f.H\x98n\xc46\x05\xb8\x09\x1c\x16\x83B\
+\xe9)`\xc8\xf7\x0a\x10\x05\xc4\xfcW\xd7;\x8a\xe4\xd9\
+\x0f\xf8\x13\xe2\x18\xf3\x09\xb0ALP\x80L,u\x0c\
+\x90\x05\xf0\xe2)q\x00?^\xbbL\xf1\x95\xb8f,\
+\xb9\x95\xd0\x10\x10\x0b\xe4G\x15~\xd7\xe9g\x0c\x04\xed\
+\xc9%f\xfc;`k\xd4\xf0\xc20\xc2<\xe0W\x0d\
+\x80R\xfd\xddPj^\xfe\xb3\xeb\x05\x98\x8c\x1a\x01y\
+~\x1c\xc4x\xf2j|\x013\xde\x0f\xa8\x18\x01\x871\
+\x0e\x1d\xb5\x03Ff\x81\xd2:%\xaf\x09\xe0U\x09\x16\
+f\xe2\xd8V0\xfd\x91\xfd\xed >\xfdl\xc4&\x04\
+>2\xb1\xe3\x84\x10\xc8\x0b,e\xb8Fu\xc3\xb1\xdd\
+Z\xfc\x7f\x97\xd9-&\x80\x8dwP\xf3<(\xa3\x0d\
+ir#\xfe~\x10y8\xa8\x1f\xa3\xf7\x8d\xda\x042\
+t&\xb8\xfbW\x83m\xc3B\xad\x96\xd9\xbfTX\xb7\
+Q\x0a\xcc\xb2\xcd^!{\xda\xd6\x11SLJ\xe0\xe6\
+\xc8\x85BZ\xdfc\x5c\x8d\x8bq[\xdb\xe9\x9du\x82\
+\xd8\xc8\xc7L\xb5\x83\x9a\xe3\xd9k/\x5c\xa0\xbb\xbf}\
+\xd5u\xe1,\xa5\x0f\xd5\x0dA\x1b\xb1o\xe7\xfdx\x0e\
+\x80\x1b\xafc_M\xd7-c\x9c\x99\x8b\x9a\x90\x18\x00\
+\xdf\x1aJ<\xcc/\xf7%\x03.\xd0G\xe9N\xaaM\
+Q\xf2\xa9\xf1\xaf\xf3p\xf9{\xe3\xea\xfeQ\xa5<o\
+\xb5\xc5\xe7K\xc0\xea\xc7K\xad\xe8\xe6\x0eI\x85\x1b\xdb\
+\xe1\xd9\x80\xbfR\xa5\x1fg\xad\xf9\xf3\x9a\x00\xd8\xec>\
+-\xf3W\xe6\x9d\x83&\xe07\xff,L\x8c\x1b\xf7o\
+>\x01\x00d\xfa\x01O\xa8\xe1\x19\xb8pD\x8b\xb2\xe6\
+\xe0\xb1\x8e\xcd\xaf\xb1\xcb\x83\xd7\xb1\xad\xa0\xe7\xe8\x80\xb4\
+\x01*q\xc0\xf40.\xe6\x97\x0d\xd6\x01Gm_\xc0\
+\x9f\xed\xb3*S\x0aP\xd3\xa7[`\x9d\x01{1\x00\
+\xb4\x1f<6lU7\xae@\xe0\xa8\x85\x9a\xdb\xa8\x9c\
+w\xef\xe6\x1b\x15\xe8p\xdcn\xd7\x95\xa8h\x9f\x95\x99\
+\x9d:\xb0Q~\xb3=\x9dLH\xd5\xd8S\xe9G\x99\
+D\x89\x03xp4r<\xab\xb4!\xc7\xa3j\x04\xf3\
+`\xaa\xb6{\xc4\xf1^\x14\xd6=7\x01\xfdIa]\
+i@^O\x89\x19F@\x7f\xd4\xda&\xae2\xfa\x9e\
+\xaf\x03IW\x82\x0c(Ku\xd9~!\xc0\xc5\x94y\
+y\xd8J=.M\x80g\x86\xcd\xd3\xe5\xfca\xab\xfa\
+\xfd\xee\xba\xb3cv\xdd\x16 \xbe\xa5Q\x1e\x93\xaa\x1c\
+Z\xd3A\x8d\x0c\xa2pP\x85\x05TM\x9c\xea7:\
+\x84;T\xb2\x0f\xed\xda\x19&\xa3g\xf3\x81\xb0N\xcc\
+J\x0dvP\xd2\xdf\xd5e\x9c\x887F\xb7\x86\xfbv\
+}\xc1\xad'\xeb%\xfb\xd3\xef\x1e\x12\xd6\x05\x1eG\x87\
+\xcd\xf7\xf5\xc6\xb0\xf9}\x8f\x0ck\xcf\xa9\xd5\x84O7\
+\x0d[\x9fSe03\xf0\xa9\xdaH@\xac\xccQ2\
+>\xec\xdf\xa5ys\xa3fk[\xb7\xf6\xdf\xfc=\xc7\
+\x84\xad5\xb7\xda\xa0m>\x15\xd6\xb5w\xcby\xd5\xba\
+\x03\xdc?\xc5\xd6\xae\xbc\xee\xe3\xad\x86\xfb\xe6\x19\xf8\xdf\
+6\xc5\xaa\xfewS\xb5?\xb9i?<7\xac\x0bh\
+\xb4\x93\xcc@k\xf3\x96\xd9\xde\xdc\xb5S\x8b|\xe0\xe3\
+:Q\xb9\xa0F\xdfy\xcd|afl\xce\x0c[\x99\
+X\x00\x8a\x12\x83\x03\xe4\xf7\xb5\xb1\xdf\xc8}\xf2j\x9d\
+\xc8g\xd6FO/\x9d^6\xbd\xac\xd3\x9c0\xaf.\
+\xbf\xac\xff\xe9\xa1a\xf3\xeb\x0bf{~:D_\xcc\
+\xb6\x8c\xdbt\x88\xff9\x01\xc7\xf9~\xb6\x7f5\xdb\x09\
+kW\x13\xfb\xc2\xe6\xa9a]\xbb\xb7\xac=\x9e\xae\x1d\
+\xb6\xd6\x86\x97z{f2\xa7\xd3\xa6oM\xd1\x87\xfd\
+7\xa6{F\x1b\xb6\x03/\x0b[\x19\x1b\xda\xdb\xd5\xf9\
+\x7fz\xee#oZ\xc4;7\xa7\x86%\x83\xe3.k\
+\xe9\xc7\xa4\xd4\xe1\x84\x044\x94\x08$3\xa42\xd3Y\
+r\x12\xb0N\x1b\xff\xec\x9eP\xda?\xc9X\xb1\xef6\
+\xe0\xe5&\x09L\xc6\xbay\xf3l\xff'k\xed\xffs\
+\x0d\x80\x002\xdb\xc7\x87uL\x90\xdc\xbf\x883n/\
+\x1d\x96\xeb\xe4\x7f\xb7v\x9d7\x9c~\xb1+\xdd\xd0\xfe\
+\x8ex^\x06v%\xb6\xa64\x898\x1f -\x0aV\
+B\xad\xff\x1ba\x9d\xb6\x88v\xb0\xfcM\x00e\xf6\x89\
+\xdf\xde4l\xfe\xdc\xd3\xc2\x1a\xe3\xa1\x01\xd6\xa5\xa5\x90\
+T\xff\xe9\xeba\x1d0\x22\xc1\xa1\x16;N\xbdO\xac\
+\x89\x96\xaa\xd5\xf7\x9f\xf3E\x1fy\xa5 \xa8\xdb\xd67\
+q\xc2\xe0\x1f<\xb7\xebrBd4\x01\xdd\xdd_\x87\
+\xad\x80E\x05\x024A\xb4\x8f%\x02\x19\xe1\xfe\xe5\xbb\
+\xee5\x98N\x00#\xe2m2\xf9\x00\xde;,%\x81\
+Jh\x94\xee\x14 \x97\x01\xfc\xe6\xc5a]I!\x7f\
+%\xfd\xf9bZ\xf1\x1bd\x22\x89\xd8a\xa69Od\
+\xee\x93IQ\xea\xfa43\xcc\x13\xc0\xb1\x12\xbb\x04\xf2\
+J\xbd\x9f\xffa|t\xcbzS\xee'WK\x7f\x8b\
+_, \xcc\x92\x90\x12\x85L\xca}1h\x12H\xae\
+\x9fS\xab\xc6y\xa9Mb\x05\x904\x1a\x12\xe0\x020\
+WB\x030o~\xd1Z\xc2P\xd2\x0dBI!\xe6\
+\x9c\x84\x83\xb8\xca\xb8f\x09V\xf9\xdd\xee\x8f?)\xf0\
+\x1f3\xdf\x98{cI\xe3P\xc3^\xe3I\xd5?\xf7\
+\xc1\xda\xa7\xf9\xd3\x98\x13\xfcU\x99x\x9f\xe3}\xae\x83\
+\x7f\xe4:Q\xf9]\x1f\xbf\x11\x00 ~\x0a@\xf3#\
+)\xee\xf7\xf1\xee\xf7\xfe~`\xa0\x97\x08\x1e\x00\x09\x03\
+\xc3u\x8d5\xfd\xfc\x22\xe2\x83D\x10\x01@\xe2\x93\xa1\
+\x9d\xf7A\xdd\x08\xdc\xe7\xa8\xc2\x0f\xb8\xf8dXw\xfd\
+\x02\xf91\xc0\x1f\x9f\x87\xb8X\x89\xad\xeb\x1a\xdb\xcb+\
+\xdd\x14\xdfI\x08J\xd8\x8f\x8c\x82\xfc\xdc\xfd\x07eZ\
+\x95\x04\x10\x15\xa2\x9a(\xd3,\x83\x08\x09\x12\x08\xa6\xa8\
+\xd0Am\xd6\x04\xe0\xa3\x8a\xfcH-\xf1>\x13])\
+\x81\x0c;\x00a\xac\x05?\xa7\x9au\x01\xbf\xeb\x03\x18\
+\xa0\xf2g\xe6\xe4 q6\x9f\xefsmlc\xcd\xae\
+\x89\xef\xfd\x02$\x13\xd3\x83\xe0x\xca,\x13\x03DQ\
+w\xbd\xdf;k)\xc2\xec<.\x7fg\x9cP\xfcO\
+\xcd\x9f\x01\x0d\xeesd<(\x8d\xc8@\xba\xb5\xe1:\
+_GM>$\xef\x03Xb\xfc<\x873\xcf\x9aY\
+\xaf\xeb\x1ck|F\x0a\xff\x99\x83j\xeb\x88T~k\
+h\xafH\xe4Nm>\xf5z\xd7\xe1U\x00-\xd0\x04\
+\x10\xec\x1f\x98\x22\x9fHd\x11\xd5^[\x18\x9fo>\
+\x8d\xb5\xcd\xa7\x16\xd0\xb2dTm\x846N\x94'\x81\
+\x92\x92\x185\xdf\x02'\x8e-`\xc6\xfbG\x06\x82\x0d\
+K\xed4\x06\x03\xb1?j\xf2\xe6\x19u`\xaf\xbe\xcf\
+\x06`\xbc\x8d\x0f@\x02`f\x1d'\xd5\x92\xa8\x5c=\
+?\xebc\x14_\xc1\xe8!\x22w\x8f\xb0n\x1e\x99\xef\
+\x10\xd1\xdc\xe8J\x157k\xf4J\xbd\x5c\xad\x97\xcc\xa9\
+vw\xe90U@\x95\x14g\xe2}u\xf0\xff\xf7B\
+\x15\xc6@\xa8\x0c\x9d\x0cGR%Q\xec*s\xaef\
+\x9dH\x17\xaab\x06\x80j\xb9\xb5\xa5+\xc7\x94\xba\xaa\
+\x0d\x1bb\x9f\xed\x99\xaa\xdf\xbb\x0c\x08\x80\x09\xf5.\x19\
+D(\xc7\xa5\xb6O\xb5\x9f\x83`\x9fI\xcajT\x9a\
+\xb7\x9a\xf4\x9c\xf7\xb4\x16\xaa\xcbC\xb6\xe3\xac\xef\xcf\x1a\
+\xd3R\xb3'.\x08\x88H\x8d\x8d\xcd\x0f\xc3\xba\xfd^\
+\xad\x22 Cf'\xa9\xb8-\x00|K\xb7\x8f\xe5\xe7\
+GEt\xd4D\xcfNb\x9b\xbfj\xfb\xa7OL\x1f\
+\x8f\xccg\xeb\xfe\xb1\xd7j\xa7\x1bPP\xd4\xf2\xe7\xa6\
+\xdaq\x02\x1c-\x83\xf5\x80\x8eR\x99\x07\x99u\x8a\xa9\
+\xd1*u\xef\xde\xd5H\xa2@\x07\xb5<j[_\x9e\
+\x94\xeag\x87em\xed\xae\xd3\xae\x08\xbc\xfd\x0b\xb9/\
+\x9f\xbb\xab\xd5\x0c\x82\xee\xb5\xbb~\xd2\xda(\xa5\x08\x5c\
+#hl\xd7\xfd\x05u~\xfb\xe2\xb0U\xbd\xbb\x98=\
+Ji\x94\xc0\xbc \xac+Q\xb0O\xa1z\xaa9\xd4\
+7\x9e\xe8X:\xca\xdbO\x85\xad\xebpj\xffu]\
+\x11\xcco\x19\x1c\x9a8\x09\xb4\x14P\x91%G\x8d\xd1\
+\xf2\xe9u^c\x12pL+\xa3\x16\x81\xe6\xdfu}\
+\xd73\x93HT\xaf9\xbaO\xeb2,\xa9\xfe\xbe\xfd\
+\xc1l?\xccn\x01D\x11O\xeaj\xc3\x93\x09\xd2N\
+\x97\x03\xc9\xd8:im\x1b\xbc\xfd\xc5\xb0.S\xf5\xb7\
+a\xf3}\x7fl\xfah\xa8\xc4\x17#\x08\xc0\x9c\xfb\x8d\
+\x80\xa3\xed\x9f\xa7\xad\xcc\x84R\xa3\x0f\xea\xf0\xdfw\x01\
+\xf9\xa3\xc3\xba\xe7z\xeb\xb0\x95\xb1w \xdb\x08n\xf6\
+\x96\xfd\xc0\xbe\x15\xb3>\xe6\xfd\xf6\xbf\xc3Z \xb1\x04\
+\x84\xdb\xe5\x1c\x0aByc^|f\xfa\xec\xf4\x99\xb5\
+DG\xfb\xafj\xbf\x97\x1a\x15%\x92x\xfd\xa4\x10\xa7\
+\xa8h\x05\x88\x80\x9eo\xe4\xfe\x9a\xf3\xb6j\xab\xf3\x5c\
+\xd2\xeex\xf7;a\xeb9\x0a\xe0\xa1\x191\x9d\x18\xb6\
+2\x11[&\xf0\xa4\xd4\xa08.3a\xa76 \xef\
+\xba\x01\xe4\xd59\x99\x89\x05\xc0\xb3}a{\xcf\xb0\xf9\
+\xf5\xb9a\xcdo\xfbJ\xf8m\xdb\x13\xc2r}\x1c\xd1\
+i\x168\x8f\x04B\xce\x9f\xdcW\xcd\xd79,\xbdg\
+\x0bL\xffy\xf7\xce\x08\xac[I\xcbC\xba\xc0\x87#\
+\xaeM\xdb\x85\xc2Z;\xbf\xcbD;\xbf\xfd\x87\xec?\
+\xd7\xfes5\x80\xf2\x02\x01PV?u\x8e>&\xc5\
+]f;\xaa\x01\x88\xdf\xdai\x93|\xf2\x0aT\xb50\
+\xfa\x0b\x0b\x10\xd1\xda)\xca@\xf2[b\xf6gms\
+\xdcw\x01\x80\x02(\xd4f\x01\xae~\xf3\x80h\xe3,\
+#\x98\x8c\x88j#'q\xe1\xbc\x05|Ew\x9a\xbb\
+e\xfb\xbe#\xd6@\xbf\xb4)\xa8\x9c\x13\x1b\x04@<\
+}\xd1\x00\xa9RV\x81=\xbf8\xba\x83<\xa0c8\
+\x1d\x1b\xd61\xf7\xeco\xb9\x0e\xed\x07\xe5\x87\x02b\xce\
+\x1d\xd6\x8d\x87nP\x18\x86w\xcf\xef\xbd\xfa\xe2\x17W\
+\xd7\x8c\x04\xf41\xb3\x00.\xf5=\xc9xtn\xef\xae\
+\x1d\xd61\x16]?\xe6\x07\x7f\xc9\xbc\xc1\xa0\x1bE\xae\
+\x05\x5c\x18\x02\x12\x7f\x02T\x81\xb5v\x8a\xd9&\x95\x18\
+\xed\xeeFa+@U\xfeM\xb6\x17\xdc<9,\xe7\
+\xdb]\xd6\xebq\xce\x95\xf6\x83\x126\x8cF\xf1\x8b\xc4\
+^\x96r\xd5x\x8f\xb5\xf7\xe2\x07\x01(qn\xd4q\
+\xf7\xaff\xde\xbc\xf3:\x8a\xdda.\x8a\x8f\x94\xc2\x8e\
+\x8ce\xdf\xaf\x9d\xe1\x900\xac\xf980\x16\x0ej\xe3\
+'\x90\x16\xc8+\xc9\xf9@\x02\x0c\x9f\xcf@|\xa4\xd6\
+\xd3\x04\x00\xa8\xf0_G\x91\xf6\xb1\x06_\xa9\xa9\x00\x1d\
+ \xe0\xdf\x8d3\xff\x8c\x7fg\xbc\xc6\xeb\xf6=\x18\x0e\
+4\x0d\x8c\xb7\xeb\x928\x13Gy\xce\xe2\x04\xfe\x0dm\
+\x01\xcfslS\x08\x90C\xf9\xd7\xe5\x88\xc6\x84\x12\x22\
+\xf7-\x9e\xca\xef\xdb_7\xd8S\xc0\xbf\xd1}\xf0\x8f\
+[\x8e\xb8\x10\xfa\xdd\xc9\xb3}\xa5\xab\x91\x17\xf8\xed\xcb\
+`r\xac1w\x83\x10~\xbf\xef)\xe3\xbd\xea\xbc\x81\
+\xf6s\xa9\xb5\xe0\xc8\x14\xf5\xfb\xec\x03\xcd13=f\
+\xa8}\xef7\x866kc\x86\xdb\xefM0\x03\xc8\xd1\
+\x1f\x11\x1a\xc8Q^O\xa9\xd4\xda\xb8\xd5\xee\x028\xf4\
+\x7f\x97\x09Z\x17\xd4\x12\xd8\x12\x0d\x14\x88\x9b\x18\xa9\xee\
+?o\xb2g\xad\xb5\xf7\x1c\xa7\x1c\x97C\xce\xda\xef\xb1\
+\xa8Y\xe7\x1aJ\x00\xc6\x80\xff\x9c^\xbd\xcf\xdf\x09l\
+\x1d\xe8+2\xbc\x5c\x87\x85\x8eZ\xf3\xcdR\xfd_\xc6\
+\xdd\xc6\x82\x09`\xdc}\xce\x08\xc0\xd8xlD\x16\x00\
+ \x80(\x9f\x8dAm\x91\xb6,(\x80\xc4\xda\x00?\
+\x00\x1d\x07\x95\xcf\xb5\xb0}\xaf\x8d\x11\x85Z\xe9\x83\x9a\
+o\x1b\xb1n\x0c\xae\x13\x90\x90\x81 J\xad\x0c=\xf1\
+\xa2z\xfe\xc6\x13P`\xc3\x80d\x1aw\x88+\xc7\x5c\
+\x06(\xdb\xb4U\x97\x0d\xea\xbf\x02H\x1b\x0f*\x1aj\
+\x22Ds,m\xf1\xfc\x01\x1b68\x0e\xce\xd0\xff\x98\
+J}\x05\x98Y\xbbV\x01{\x8e\x8b\x8cn=_\x07\
+\x97\x8c\x81\xf5\x0c\xe9\xbf|R\x1b\xef\xb7P\x1e\x0b\xb8\
+\xf2\xfc\x8d\xdf\xbd\x16\x07)\x08\xa3\x11\xa8\x95\x88[\x06\
+\xba\xd5\x97\xd9<\xa3\x95\x90\x01\x7fQQm\xd8\x02\x96\
+T\x9b6\x8e\xfa\xdc\x17\x85^[\xb7\xcc\x18W\xc6\x9c\
+\xe8c\x96B4\xf1\xb5\x9btb^\x00>\x14I\x99\
+-\xeb\xd9\xba\xcd\xda\xe1bL\x00\x22\x00|\x99\x19\xae\
+\xc0\x1f\xa2\x9e\x0eW\x95\x22a\xa8\xa4\xfa?\xa0\xb5\xc4\
+\xb40\x02\x8c\xcb\x13\xc3Z)\xcbR\x02r\xa3\xc5\x01\
+\x9a^4\x1d?\x1d\xdf9\xd6\x87eIR\x04:\xef\
+l\xed\x01[i\x88\xcc\xd8\xf6\xce\xdb\xbbl\xef\xdc\xe6\
+\xcdr\x90]r\x01\xc8\xaa_s\x96\x88m\xdf\x156\
+\xbf\xfe(l~}{\xd8\xdao}{\xe4\xf6\xda\xdb\
+#\xd7\xeb\xe2\xd8\xaa\x0doL\x80o\xad\xda\x13\xb5_\
+\xd3\x84H\xc7\xad\x02\xfflgX\xa5\x22j\xc3\xb3f\
+\xb8\xa8\xb1\x09<h[8}/l\x0d\x1c+S#\
+3\x22\xb0\x170'\xe0,\x10\xab\xae\x14\xa9Z=\xdd\
+!l\xfe\xf9\xbca\xf3\xfb\xfe0\xac\xeb\xf3\x9d\xb5\xad\
+\xd3\xe7\xc3\xd6\xf5E\x03\xa3\xda-\x9e\x106\xff\xfd\x13\
+\xc3\x1aP\xd3\xc4\xeb\x00\x00\xdb+\xcc\x16\xdd\x07^\x1f\
+\xb62\x0e\xaa\xfd\x16\xcd\x8b\x14k\xab\x12\x03*\xdd2\
+\xb4\xc9\x94\x88|wd\xbc[\x9e\xf3\xc6\xe9\xf0|\xbc\
+\xd3\x8a\x89s\xf0\x0aI\xd5\xfc\x8f\x8eivF\xc8\xdc\
+e&\xec\xc5+@\xa3o|T\x96Gm9\xf1\xbe\
+Zo\x1c\xfb\xec\x8b\xdeT\x97\xbf\xbc\x02\x16\xed)\xdd\
+\xbe\x0b\xa0\xa2\xe2\xf8\x99\xd9\x17\xfe\x0e\xdd\xfe\x15D\xe7\
+7gi\xcc\xabW&\x80\xb6\x8c\xfb\x1e\xb7\x94`\x1d\
+\xb8fv'xF\xd8\xbcm\xdc!\xac\xcd\xff\xd9V\
+\x07\x1f 0\x9fm_k\xdd\x00\x8e\x9e\xdf\x7ftj\
+3\x1c\xdeeZ\x89\xfcR]\x07\x14\xa7\x8fSZ#\
+\x80\xc0\xec\xd6a\x1f\xd8\xbc*l\xad\xf5\xae\x80\xe1O\
+R\xbc.\x81n\x81Q\x03\x8an\xb9\xd6\xa27`f\
+>\x1f\xa6w\xcc6\xaf\xab\xed\x9f\x86\xcd?\xff\xaf\xb0\
+\xf9\xe7;\xce\x16\xf7w\x97\xd9\x8eZ\xc5|\x0b\xb8\xc8\
+}q{\xd9\xb0\xf9}\x7f\x146\xff\xfc\xcc\xb0\xf9\xe7\
+\xff\x136\xff|\xfc\xf6\xc5\xdb\xe330\x8fy{T\
+\xd8\xba\xde\xa6\xe7\x84u\xe3@\x84\xf6\xd3aM\xeb\xa6\
+Q\xe1\x05\xf6\x00\xb3\xe9\xa3K\xbb@\xe7C1\x1c\xec\
+\x9f\xf6\xbf?\xda\xf7\xd4\x10\x83\xdb\xfbv\xd8|=o\
+\x0b[)\xe7\xa5A\x11\xe7\xd2\x13\xd6uX\xcfG\x82\
+b\x0e\x07\x03\x80j^\xca\x07\xbaR\x06\x89\x01\x99\xff\
+8\x8d\xdf\xd5u\x83p\xdd\x19`\xab]\xafn&(\
+\xec2\xe0\x1cu\x22\xb8Y\x9a3\xcf\xe2\x97\xb7Z\xf1\
+we\x0d8\xe0\xf4\xfa\xc9\x8c{~\xb3U;\x8a_\
+E$\x10\x13\xe1\xe1\xcb\xb8\x14\xa3+\xb5\x10\xaa\xa6\x9e\
+\xa8]\x96 T\x00J\xc4X\xbb;\x9a:\x11\x07\x9c\
+\xdc1\xfd\x00\x15Jz\x13\x90\xa8\xaeD\xe9\x9f\xd5\xbc\
+M \xa2\x98w\xc4\x05e.\x8d\x83\x80\x12\x80\x7f\x5c\
+X\xd7\x8d\xc0x&\x93\xae\x80\x02\x9f+`\xe3\x1f\x88\
+\x03$<\xc6nc\x00)~Ej:\x95\x88e\xfa\
+\xebJ#\xeb\x5c\xf9\xd7\xb0n?\xcd\x12Y\x0c\x22\x22\
+\x81\xc4\x91\xa3\xa7Nt\xd5\xa9s9E\x07+\x10\x95\
+\xf0\xe0\xe7\xf9O\x80\xca\xbfT\x9a!\xee\xa29\x03\xa8\
+\x128\xfa\x1c~\xadL4\x7f\x10\xf0\xcd\x1f\xc0\xc8\xf5\
+~\xe3F\xab\xe7\x82a\xf3\xfb\xdf\x14\xd6e\x9as\x1e\
+\x00\xb2+\x90\xa6A\xe0\xbaG\x8a\xbd\x00\x9a\xa6\x97n\
+-\x02\xff\x93\xf2z?;\xbf\xfb\xb3\xd9%\xe6\x94N\
+\xc3\x00\x10\xed\xbe$`\xf8q\x80\x00\x81{\xce\x8bb\
+\xfa\xf8;T\xfe1\xb0\x07\x14x\xbf\x8c\xbb\xb8P<\
+8\x02.>\x8f?\xe6:F\xad%\xf1\x0e\xf1q\xcf\
+a\xfc{\xf7\xe5\xfb\xc6\xb6\xe9\xa3v\x1f\xbf\xda\xf3\x1c\
+J%\xf6w\x22s\xcb\xc6A\xb4\xef|\x8d\x1c\xbd\x04\
+H\xe7I\x87y\x9bH\xd4\xb9\x06\x0a\xf1\xfen\x82\xfa\
+b\x08\xa9Z\x93\x5c\x80\xc5 \x08\xdc\xefj\xdd\xc2\x14\
+@\x09p\xb6K{\xb7s\xcc\xec\x8f\x81\xfd\xf8:\xd6\
+\x94\x1b\xe81s}Nb\x84\x1c\xf3\x91:\x81\x22\x06\
+Au]\x1eh:\x82\xc5`\xb8nX\x17Xz\x90\
+\x10`\x94@\xfd\xeb\x87\x92\x87:\x90\xae\x95\xe2r\x87\
+/\xb5y\x15\xe8'B\xbf\xfb\xf6\x22\xfePj\xef\xdf\
+=\x87\x1a{@\xc2*\xce\xb7|\xdf\xd8wrdr\
+\x9cSi\xc2\x1a\xe0/\xe3e\xc1\x8f\xdd\x0a\x5c\x0f\xca\
+\xfe\xda\x8eb\x19\x7f\xcfeP\xcd.\x07\xde\xb8\xa0r\
+e`[\x1a\x15\x1cD\x0c\x8bCs\x1e\xd9\x18\x05\xb0\
+\x0e\xca\x0b\xe6\xfb\x04\xb8\xe6\xab\xb6p\x9e\x9by\xe3 \
+\x80\xe4+m\xb8MX\xb7a\xe4\xf7\x94\x03\xfc\x0b\xf9\
+9#SC\xe0k\xe3\xb9@]\xf7\x82\xa8\x8e*\xad\
+D`\xa8\x89\xcbp\xa7CU\x8e\x94\xef\xb1Q\x08L\
+\x06\xb5YT\xd2B\xf6\x1d\x14\xdaQ\x01JP^m\
+\xcc\xbaI\xf8;\x88\xb9\x0c\x22\x8agf\xb6+\xa0\xb4\
+\xce1\x1a \x94\x9e\xb7\xbe\xb9\xd9o\xba\x80\x0c\xf3\xed\
+\xdf\xf2 \xf8\x9bT\xe7\xb5\xe1\xd9\x08i\x91x\x8e\xc4\
+\x00w\xf9?\x99n\xfdvSL\xa9D{R%\xb8\
+\x80\x0fj\xc2ki\x0f\x15\xfce\xc3Ub\x02\x183\
+\xbf\x92\x9a\xb9\xf9\xad\xb0\xce\xa1!\xeev\xfb\xb0\x95\xca\
+^\x22Q\xf6\x1d\x01\x8a\xf59jt\xd8\xc8\xbf\x94\xa2\
+\xaboO\xaae>\xef\x16\xf0=k\x15\x01\xdb\xbc3\
+l\x15\xedBI-\x0d\x01\xa5%\x98\x19\x99\xc9\xa8Z\
+\xf5\xbfK@\x84x\xd5\xdfd\xe9\xc4\x03\xc3\xda\x01\xb5\
+\xccO\xed\x0d\xb5\x17\xdc\x0b\xeb\x02\xc6\xc3v\x17nm\
+\xb4\x1c\x9c\x09tl\x1e\xb6yh0Q\xaa\x9d_\xb6\
+\xb5\xdb~,l~\xfdt\xd8\xfc\xbe\x7f\x0fK\x87\xff\
+\xd2\x9d\x03\xae\x86\x14R\x8e\x19\x93baM\xa3\xe2q\
+\x9d\x83\x92\x00[\x89\xeaiG\xe89S\xfd~R\xaa\
+\xd4\xeb\x12\x90\xe3\xb8\xef\x8f\x9b\xed\xdb\xfde\xd8<}\
+\x9f\x1d\x96]\x08\x9e\xd2i\x0d\xc8\xb8Y\x87\xbe\xdf\xfd\
+\xe7>9]>\xacc\xcah+\x09\xa8\xd0w\xfc\x17\
+\xc3\xd6@\xb22\xf7\xe9\x08W_\xf4;\x85\xad\xed3\
+\xb7\xc7\xcev\xdc\xfa\xfc\xed\x1b\x959MJ\xe9\xf6\xf0\
+\xb0N\xfd\xfd\xb4\xd6\xb05\x02\xae\x96y\xdf|1l\
+\xcd\x0c\x1e\xf8B\xd8\xfc\xefo\x0e[\x01\xc5VS=\
+\x8f[(A\x84\x16\xc4\xf6\xcc\xb0\xf9\xf5\x12a\x1d3\
+\xcd9\x9a}\xc6[\xc0z\xadl\xe7\xda14Z)\
+\xda\x91\xab\xf8\x1c\x7fcwLX\x024\xdb,\xd1\x8b\
+\x12\x87\x8b,\xed\xfcZ\xf8\xf0K+\xa5\xbaD\xe6r\
+\x7f\xda^<,\x03\xe1wt~\x8f\x1a\xe8\xdc\x977\
+?\xdc\xfch\xf3\xa3\xceQ\xd6\x9e\xf4\x93a]\x00\x9a\
+L\x9d\xe9\x22a\x1d5\x9f\x88\xa0\xefGq\x16\x08\xad\
+\xe2X\x8b\x98f\x02]\xd5\x05\xc6\xf9\x93]\x15\xaa\x84\
+\xe4ma\x1d\xf0\xfa\xaee~Vf4\xa9\xdcMK\
+\xe3gr}\xde4\xe7\xe7{:\x86@\x00iO\xca\
+\xe7r\xae\xf5y\x16u?\xfc\x93\x13;\xca\xb9\xd29\
+\xcc\xa2d\xf6(\x19\xdc~(\xac\x01\x0f7\x0f\x86\x8a\
+.\x15{7\x98\xed\xfa)\x96\xf7[\x9d\xc8c\x04\x10\
+o\xec\xc4Is|\xab}\xdf\xb9\x17\xcau\x01z\xba\
+y$P6?\xb3\xf6\xdc\xa6\xef\x86u\x14}\xfbw\
+\xe4\x7fo\xd2\x89\xdd\xda\x87\x89\x9e\xc5\xe9\xf2\xfd.\x80\
+M\x00\xa1\x02`\xe7\xaf\x8c\xe4\x9d\xc2V\xbf\xa4(\xe1\
+\xfc\x1d\xfb\x07\x07\x1e\x83\xc2\xfe\x99\xfbfQ\xff\x93\x01\
+\xd8\x02\xbfOt~\xb0},\xd2\x04\xd7\xee\xbaK\xfc\
+W\x0b\x85V\xe0@\xf7\x1a\xa5LJ\xbf\x04\x14oO\
+*\xb9R<\xfe\x94\xc0\x9d\x7fHd\x10\x00-\x11\xf1\
+\xfaE\xe4t\xdf\xa53\xb3\x7f\x85,)H?kw\
+\xfc\xeeE\xbb\x17u\xe7\x22?-\x99H\x8d\xa9\xf0\xeb\
+\x9d\xff\xf4\xda\x14\x0f\xd6%EiB\x02\xe4J\xe6\xaa\
+[\x0c`D\xa9-\xff\x81_\x09\xc8\xb7>\x94\x0e\xa5\
+\x86\x0cf\xdf\xd8\xad\xa3J+]\xafq\xf0y\x00\x00\
+\x1a4\xc9\xa0\xabRB\xfe\xb4\x80\xdc\xbeNTw\xd0\
+d*\xa6\x87\xf3\xdby\x90\x01[\xf9\xb39\x0e\x05x\
+\xa4FR\xf9\x07\xa3\xba;?ddr\x9a\xcf\xa38\
+\x9d\x84&?z\xd4\x02\x00\xb8\x88W\xc4=\xa36\xc0\
+\xd8n}l\x97..\xe2\xdf\x1a_q\xe3\x080\xc8\
+\xe0\xab\x91w\x1d\x1f\xcf\xf3S\x5c\xf1\xb9\x06\x01\xac\x09\
+(\x19v\xa5\x03\xe2\xab\x91\x91-\xd1\xe5~\x05\xc2c\
+\xb7\x01\x9f\xe3\xdc\xe6\xf7\x02\x18\xf8\xc9\xe2\x1e~\x9a\xf8\
+y\x04\x04\x00\x0eC\xc2\xb8\xe2\x1f\x808\xc0\xc6\xf3r\
+]#\xb3\xc0}\xd9o\xc6Ri\xfb\xb3\xebr\xbe`\
+v\x02r\xb3\xa4c\x7f\xd7W}\xa5\x8e\x9f+?\xf8\
+lT\xf4\xab\xf6=\x96\xb3\x80\xf5\x8c\xbc\xd1\xae\x9d]\
+[\xa6\x17\xce\x0c\xdee\xba\x09?R*\xce\xa9O;\
+\xd1\xc0\xb1-\xa0\x85\x7f\x0e*\xf3Eq\xa6\x8e\x7fN\
+\xd4~\xafc_xb\x1a\xa8\xcc\x02<\x99t\x0f\xd4\
+\xf7C\xf0e\xe8|\xae\xebt\x7f\x02<\x1b\x98\xcf\x13\
+\xb8^*\x03S\x99\xe8\xab\xe6\xab\x85\xfd\xf9D\xa0r\
+\x02G\xb3\xa7V\xa3\x7f\xbd\xdch>\x97\xd7\xe5\xd5\x84\
+\xc9\xeb\xab\x12\x0e\xe3\xe2\xfbm\x80\x9e\xcb\x08\xb4\x18\xdf\
+\xd3\xaa\x04a\x99\xe8\xa8t\xda\xfd\x11_\xfc\xceP\x9a\
+0j3x\x0eJ\x18\x06U\xcd\xfa<\xd7)@\x1c\
+\xdb\x93\x18w\xcfK\x9b\x95\xf1\xf9\x9a\xb7\xf7\x0e\xeb\xc6\
+\x9f#\xea~d\xdc\xf3\xfa*\x80\x17(8\x90\xc7\x12\
+\x16\x0b\xd6:\x11H\xa4\xd8b\x01<7\xcbL\xff\xd0\
+7\x17\xe5\xb6\x1c~\xd43\x07\xb1\xcf\xf3\xbc\xfc\xbdy\
+\x91\x817\x04Z\xdf\xd9Z\xa7\x10\xe2\xf1\x005>\x9e\
+\xbf\x00]&&\x1d\xd1\x12k\x1a5\x11ltj\x9c\
+\x88\xf9e\x97\x90:\xd0\xac\x03\xa5\x0e\xd4\xa0G\x0a\xde\
+\xad\x9bU&\xbeT\x823\xa3\xaa\xdfzQ\x7fS|\
+\xa9\xae\xdf\xfcp\x10\x99g\x0e\x92D\xd87\x1f\x0b[\
+\xa9\xe2\xa5\x82m\xbcQ\xed2\x83\x22\xb3\xa46\xb8\xda\
+\x00\xc9\xa4\xd0\x04Q\x9b\x9cT\xec\xdd\x9f\x85\xad\x99\xea\
+\xa2\x10\xe6\xf3\xd1W\xbe\x80\x14\xcfY7\x83\xaci/\
+GX&\x01\xa0\xf2\xd5dXx\x1e\x9eO>/\xa5\
+\x1a\xba/T\x97\x86\x8f\x875\x0a\xe6R\x13\xfc\x909\
+\x00\x8f\x8c\xf4'\xc3\xe6\xd7\xd7\x85u5\xe1Y\x0a0\
+]c\xe9\x1f_\xa5\x19\xf9\x9c\xdd\xf7\xde/\xec]w\
+o\x1e\xaf\xedU\xc2Z\x0d\xe4KZ\x0d\xa4y\xc2\xb1\
+\xfe\xf9h\x04\xd72}\x9f\x8aL\x9fL\xef\xf6aa\
+\x1dP\x91\xf3\x01\x95\xb2D\x04\x95\xe2\xc4\xd3\xdef\xad\
+\xf1\x0d\xd7u\xb8\xf9hX\xce\xa3g\xae\x8e\xcb\xe6\x1f\
+\xc2:\x07\x8b\xe31\xcew\x8c\x0e\x19W\x0c\x9dt,\
+\x89\xbb\xe9\xbb=\x87\x17\x0b\xf0\x91\xb5\xd2\xe5`d\x89\
+I\xd5^g\xc6]fk\xbaM\xd8\xfc\xfa\xb9\xb0U\
+-;\x94a\x9a6\x8c\xd2\x9b\x0c\x18\xa7\x7f\x0e[K\
+f6'\x86\xad\x99\xe7\xed\xdd\xc3\xe6\xd7\xbf\x09\xebD\
+\x12e\xc8\xa2\x0d\xd8\xe5R\x9c\xec\xab\x9d\x16G\x02$\
+\xd3\x07\xc3r}|<\x81\x86\x98??Z\x02\xe0\xa2\
+t\xdf-\xac\xd5\xe4\xbf4j\xf2\xa7\xb7\x87\xad\xccA\
+%\x06\xadm\xe3+3\x80\xb9Z\x07T\xbck\xb6w\
+\xa7\x7fq\xe8\xdaV\x0d01\xfdz\xd8*J\xda\x00\
+\x8cc3\xc0yh~\xce\xa3:\xf12\x80\x15QC\
+\x00j\x8c\xf2-\x12Xy\x7f2\x1c^\x9c\x00\xdc\xec\
+\xc0O7\x08\xeb\xf6\x958\xcd\xbe\xd6\x89\x8b&\x95x\
+\xfad\x8a\xf9e\xd7\x0b}\x9eK\xbb#\x03`\x01]\
+\x89\xff\xdd=\xac\xa3\xa6\xffcfbOH\xc6L\x8a\
+\xb0\xed\xfe`\x11\x81+\x0d\x8a\xcc\xe4on\xb8dZ\
+\xe3i\xc4\xf3\xd8<\x7f\xa9\xe9/\x15\xf2\xac\xd9\x9e\xde\
+:\xbdezK\xa7\x86\x1e\xfd\xdd\x9f\x9c\xe2y\x97^\
+\x99\x112\xfe\xd3\xf9\xc2\xd6\xfd\x08\xd3\xa3J\x8a\x82q\
+\x12\xeb\xfb=\xb3\xbd\xb7+I\xa1Z\xae\x16=U\xd7\
+\x89\x80\x01$\xb6'\x85\xcd\xff\xfe\xc4\xb0\xae\x9bB\x8e\
+\x9f\xb6\x8b\xd3%\xc2\xb2\x94\xe1\xbe\xeb\xfeV\x01\xbc\xfd\
+7\xfc\x9e\xcf\xaf\x0c\x1f\xe2\xb5\xe6\xc9\xf6~\xdb\xfb\x86\
+\x18!\x0a\xb5\x12\xb2rx\xb3$\xa2i[\xcc\xe7\xf3\
+\xde\xd3\xc2\xe6\xf7}8\xac+\xdd\x09x\xfc\xc4\x8e\xa9\
+\xa6M\x9d\xeb\xe1\xef\x84T\xdd/-L\x93V\xda\xa1\
+\x96\xdc\xf9,\x01\xa4\xfd(\x87\xdc\xb9\xa1\x14F\xdfz\
+\x22\x8b\xb9/T\x8d\x7f\xb4[\xbdP\xd3\x10ZJ\x02\
+R\x9ct\xf7\x99\x14y;.\xdb<\x12\xc9\xa3~\x9f\
+\x1a@%v\xfa\x84%0.\x8d\x12\x00\xa6\x9f\xb5\xfd\
+s._1\x03n\x19\xe1\xfb\xed\xee\x1b\xcf\xa7\xfc9\
+\xfe\xc0\xf73p\xa1\xb1\x22pv\xfe\xf2\x87\x00\x12\xba\
+\xa6`L\x02\x80\x88\x1ff{\xd2\x0a\x0c\x05.\x00\x00\
+\x22\xca\xc9<\xaeR\x17~\x93}\x9d\xf6Q2\xdfZ\
+\x97\x87\xd7v\xdaH\x02s\x19\xf7\xdc\x07K\xc4\x8f?\
+\xc7o\xe1\x97b@\x0d\xcc\x83\xcd\xe3\xc2:\xca\xbf\xf3\
+<U\xfdu\xc3(\xed\x1d\x00\x02f\x858#\x19\xc3\
+\x95a\xc6\x1cV\xab\xcf\xff\xe6O\xf3G\x05\xea\x02\xec\
+\xb1\x9b\xda\xa8\x8aOk\x07`.\xd0\x1cK\x02\x04\xac\
+^%V\x04\xaa\xceO\x7f'P5n\xae\x93\x9f\x8c\
+\xc9:jL\x01\xd6\x04\xfeC\xe0}P;<\xa5\xa6\
+c\x97\x831C\xee\x15P \x80\x97\xb0r\xddc\x89\
+\xfa(R\xe8\xef\xc4\x1d\x80\x14\xe3\xee\xfe0\xbbi\x11\
+a\xd8\x8e\xaa\xfe\x9e\xcb\x18\x1f\x19\x97\xa1\x9bC}\xef\
+\xd8\x15A\xa2\x1c\xa0g\xffQj>\x96^\x8bs\x88\
+6&#z\x7fe\xfa\xfb6b\xe7\xeb\x90\x85<\xa8\
+i\x02T\x7f\xd1\x0b\xcdv\xc1\x1c\xb0\xcfw\x01\x84\x89\
+\x09\xf1\x0b|\xa8\xaf\x85\x16\xc0(\x19\x18U\xb2}\x0e\
+*\xcb7\xc2\xba\xcc\x9c\x1b\x15hB\xc8\xc7\xccu_\
+\x9a\xd0\xf7\x87\x17px\x1fG\x1a5c\x10\xe3\xd3\x06\
+\xa4\xa8\xfa\x1c\x0c\xd7\x09Q\xf4\xf9(\xb9J\x00 \xe7\
+\x0e\xb4\x0c\xf0\xe6\x03~\x11)\xbbA\xd6\xb4\x1e\x95\x99\
+9\xaa\xd4\xd7]\x02\xb6\xca0\x5c\xb8\x02\xd7\xe5\xfa/\
+\x97\x99;\x00\xc6\xa8\x22i\xe1\xc8\xf0e X\x81\x85\
+\xda\xea5\x13\xbf\x000jO\xbe\xb4\x88lm\xae\x91\
+\xdd\x05\x12\x01\xae\xf1>'\xd1\xc5\x11\xd8Q\xdb\xaeM\
+\x16ue\x07\xc6\xf9\x86\xae\x07\xc4e\xb2\xdd\x5c\xf5\xd9\
+\x06\xa0\xd8\x90\xdc\x97\x0dGw\x03\x1a\x03\xaeS{\x15\
+\xa2$\xae\xf7\x94\x1c/\xb5i\x00\x05\xe3\xf1\x93\x018\
+\x1a\xdb$\x9a\x7f\xe3\xab\x85z\xee\x04\x18\x94r\xd8\x08\
+F\xca\xd9(\x068R\xee\xbe\x10\xd6\x01LD\xe1\x1e\
+\xba\x04n\xc5<\xd1n\xc7}\xa3\x22;\x80\x1d\x8c\x0e\
+\xd2k$\xe3D\x17\x01\x01(`\x04\x95\xc8:\xd6-\
+\x808'\x87\xa1\xba)$`\x85\xb2o\xa3M\xea\xfc\
+A@\x83\xbe\xc6\xe9\xf0T7\x01\x99\x09\xed\xce\xb2\xcd\
+U=\x7fm\x10\x89\xaa\xf9O{\x15\x227y\xe0\xcc\
+niS\x13\x17\xa0\x95\xba~\x1e0\xb5\xaf\x10\xdf\xb1\
+?\xc9\x10\x187\x8eO^W\xd5\xf6\xdb\x172\xe3\x84\
+y@E_\xedoe\x22\xd4\x84\xd3>\xc8\x80\x02s\
+Gf\xb9\xc4\x9786C\xe9F\x01\x81\xde\x07i\xd7\
+\xbeI_y\xc0kR^\x0b\xe8|N~\xae\x83\x9d\
+\xe8Q\x8a\xf3\xd5A6j[\xa0\xdef`\xbcw\x9b\
+\xbd\xdb\xee\xcd\xdf\xb7}ZX\x0b`\xaf\x15\x01\xac\x0c\
+b\x1d|\xe6]\x96*\xb4\x1a\xf5\x10A\xfb\xbb\xb0\xee\
+\xa0\x16\xc8\xe8\xd7\x9dm\xd9J\x859\x99\x05\xda\x1b\x02\
+\x18\x9a\xa8[0b>\x18\x96\x8e\xed\xe3\xba\xee\x152\
+\xa5\xc4C\x83\xefq\xbb.3\xea>\xed\xa3\x19 \xed\
+\x9e\x13\xd6\x9d_\x1c\x0bmo\xaf\xb4d\xc4\xa6\xff\x0c\
+K\xc7\xfc\xb8\xaeV\x96f\xc3\x97\xb3\xdd[2u\xa6\
+/\x86e\xe9\xc1\x7f\xa5Z\xfa\xf3;\xc7/Kad\
+d\xab\xdd\xa6\xae\x0c\x18\x14\x18:\xa8\xb7\xd4\xb2\x93\x9a\
+\x5c\x1a\x06)b[\xcf%\xf2\xa1wYk|\xb7\x7f\
+\x14\x96\xeb\xf1eM\xbd?\xac\xb4H\x1a\xa0\xf5\xdc\x14\
+\xef:\xa4\xab\x08C\x05\xd6\x96S;\xc1\x14\x89,&\
+\xca\x1b\xc2:Ub\xfb\x00\x8ac\xee/\xd3%g\xbb\
+Tf\x02o\xbf2\x146o\x9e\xed-]\xb7\x1b\x14\
+\xe7\x0c\x84\xb7/\x0b\xeb\xf6\xb3\xdc\x7f\xa6\x0b\x85\xcd\xaf\
+\x17\x9b\xed\xa2\x1d\xd0g\x7f\xcbu_m\xfe~>l\
+~\xffWg;%\xef\xef\x94\x06\x844\xed\x8c\xddm\
+\x96\xf1\xb5\xce\x0e\x9c\x18\xb6\xaa\xeeO\x1f\x0b\xeb\xa8\xf3\
+\x18\x00\xaf_\xf6\xf3\xd9\x9d\x5c(\xbe7_\xe6\xc7\xee\
+\xb0\xb0\x06\x90\xde\xa0\xf5O\xd7f\xf9\xdc\xa9\x01\xa0d\
+\x89\xdfC\x0c7\xdb\x1f\xeen\xb4\xf4?\x0f\x18 \x80\
+\x80\x06\xcc\xbc4\xfd\xb4\xd3\xbb\x1aj\x00KP\xfb\xef\
+\xb2\x96\xb6\xd4\xf9\xaa\x94Q_z\xfb\x08\xc6\x99\xf6w\
+\xf7oV\x22\x9cU\x22\x94\x0c\x91b\x00d-\xbev\
+\xbbD\xdc\x9a\x98\xe0\x1cp\xee\x1d2\xdb\xb9\x92\xa2\xfe\
+\x8f]\x06\xfb>\xcdV\xa0\x0f#\xc3>\xa5\xfdh\x96\
+>L\x8f\x9c\x1e5=2\xbb*\xbc\xb4\x01\x96\xf7\x0a\
+\xc0\xb2\xf5\x85\xff\xc5\x8eJl\xde\xa5\xc3\xbc\xbd\xd8l\
+\x17\xcd\xf9\xf7\xd1n}\xfcm\xd8Z\xdaT\x8c\x0a\x1a\
+%1\xbbNN\xa0\xa0\xeb\xaa\xd0DG\xef\xb7\x9e\x7f\
+\xad\x96\xfd\xb2\xdd9o?\x00\xc8e\x09\x0d\xaa\xf7\xee\
+)s\x00\xf9\x94\xb6_/\x0e\xbc\xf3\xce\xb9\xfc\xbe,\
+!\xbc\xfb2OG\xe6n\xcd+]\x91n\x90\x81\xae\
+L\xa7\xda{\xfb\xbf\x00H\xc0\xc1/\xbaRR\xf1\xed\
+\xdbj\xfd\xf9\xc1\xce)\xb5\xef\x98\x0eJs\xf8\x012\
+\xc1\x98w\xfc#\xa2\xc8\xba\x04$\xa0X\xccL\xfbp\
+\x9eC\x80\xe0Z\xaf\xfcc\xb5\xf42\xdd\xc9lC\xad\
+wno\x7f%l\x15o\x15\xbf\x94\xffO\xcc\x13\x15\
+?\xe7_i\xe2\x08\xc4\x04\xca\xba\x82\xe9\xc2d\xdc\x5c\
+\x97\xd2\x05\xe7\x05\xffK\x00\xcc\xaf\xd1\xc6\x11cA)\
+\x5cj\x0b\x15p.\xd0\x16\x1f\xb9n@\x0b\xa6\x06\xbf\
+\xef;Cb\x0dpe\x1d\xf0C1\x16$\x0a]\xdf\
+\xd0\xc7\xbe\xfe\xce\xbcY3\xf3\xcb\xfb\xf8\xdf\xa3\xea\xfe\
+;\x96\xd2\xa9\x0a@\xcd3\x81<\x06\xb4\xee\x16\xe3\xf5\
+\x8c~\xb5\xf3\x96\x18\xde(\xa6w\x0e\xea\xfb\xc5\x10p\
+\x7f\xfe\x9d?e\x9c\xc4+\xfcH%\xb1\xbeG\xe0\xed\
+\xfb\xc6\xb6\x82_\x1fJ\x9bGq?q\x99\xfbp\xdf\
+\xd6\x99\xf8sd\x10(q\xa0\x85\x90\xf1Q\xc5o\xd6\
+\x1b\xa6\x91u8v\xedp`K\x98&\x00\xb8\xbf\x85\
+\xbb}\x9b\xbc\x98F=\xc5\xdbD\xf6 >\xbbP0\
+*\xe3\x9a\x81[s\x08o\xd6!v\x10\xc0\xf8\xff\xbe\
+?\xa4@\x13Ruj\x93\xb5;8\x83\xaa6\xdbF\
+\xe8\xfb\x05hc@?\x8a\xa1\x8dj\xf52\x9e>_\
+\xad\x85L%\x87D\x00\x7f\x93\xcc\xfc\xa0\x80\xa4zh\
+9t\xd4\xbd\x05\x0c\xfe.\xfb\x8a\xd7\x86\x86\x22s\xfe\
+\x0cp\x8d\xe7y\xf2\xefR\x85\xbe>g\xbd\x8fe\xa1\
+\xbb\x7f\x0fX\xad\x94@\xcb\xefm\x9c\xbe\xcfx\xa2f\
+\xa12\x09\xe0 E\xc6\xd3D\x94\x01u=k?\xcf\
+e\xfc\xfc^\x86,\xdb\x05\xd5s7\xd1,\x04\x07\x8d\
+\xda8\xb5\xb6\xda\xf4\x09\x949\xde\x16B\x8e\x98p\x8d\
+\xa2\x00\x00 \x00IDATs\xd5\x12\x09h\xa9\xb4\
+s\x5c \x8f\x00+\x0b\xceu\xa6\xc3R\xc0\xcb\xf5\xc3\
+V\x07l\x1e\xcbe\x01\xa9\xad6.?\x97\x01\x8f\xf1\
+\x04 XP\xe6\x9d\x8d\x03p$\x907\xeeJ\x19,\
+H\x084q\x1a\x81\xa6q\xf2\xfcQ,\xef\x1b\xb6\x22\
+\xc8\xc5H\xc9\x0cX\x1d\x08\xd4\x911\x0b\xd4\xfe\xeb\x16\
+`\xe3WZ\x92\x8e\xa5\x0cq=\xafq\x9d\x8d\xa2/\
+\x80\x12\xd7\xed\xb9\x00\x0e\x86\xb6\x95%\xbe(P\x01\xec\
+)\xb5xtXG\x95\xe3h9H\x8d\x1b\x0a\xa7\xf1\
+UCo\x9cQ\xb7\xb4O\xcc~\xc3E\xe1=v\xe9\
+\xf7\xadf\xba\x00\x04\x07:\xe6\x05\xb1/\x0c\x0a\xea\xb7\
+\x1c\xef\xd4\xfa\xa8@\xcc\xfaDAt\xdd\xe6\xa3q\xcc\
+\x7f\xdf\xfcS\xd8Z\xbb\xa9+\x00\x87c\xf3gaM\
+\x1d|\xb6.3r\xf3f+\x00\x94m\xe9\xb6\xff;\
+\xac\x03\x1a\x95x\x10GR\xfa\xa1mh\x8a\xaaUF\
+\xdc\xe7j+& \x11`\xe6\xf5n\x0e\x0b[E\xda\
+\xb6\xb7\x0e\xebT\x92Qr?\x90m\xaf.9\xcf\x8a\
+Kf\x0d\xec\xdd\xb3;\xc3\xffXk\x98Q\xcc\xd5\x10\
+N{a\x8d\x1azLPCK\xbb\xe1\xcb\xad\xefF\
+1\x5cZ[\xaeG\xcc\xd3\xe0\x0da\xf3u|8\xac\
+\xab\xe9\x03\xa0D&\xf7aY\xca\xf2\xae\xb5\x06\xb3\x98\
+*\x99\xb9\xa9\xe7\x9a\x7f7;yK[\xa1C\x1b4\
+\xb9\x1c\xc8_O\x87\xf6g\xbb\x1aq\x07t\xeewT\
+\xfc\xe7=\xeb\x88\x96\xf1\xc3h\xc9n\x03j\xbaw\x97\
+\x0c\x9b\xef\xf7\x11a\xd9^\xec\xca\x9dj>\xed\x01\xfb\
+\x9e\xcc\x95\xefA\x8d\x05\xa0\xe5~J\xa4s\xfb\xac\xb0\
+\x95b\xbe\xbbj\xd8\x1a\x00m_\x17\xb6R\xaa[-\
+\xfe\x19]\xfb\xa9\xb8\xfb\x7f\xef\x02\xa2\x18\xb7\xa7\xa6f\
+\xc7\x07\xd7}E\xcdx\xcdo\xd4\xd7\x0b\xb6\xe2\xaa\xca\
+,\xaa\xad\x9fn\x1f6\x7f\xff\xcf\x86u\xfb\xce%\xdb\
+LY\x1c\xcc\xaf\xa7\xa6I\x88\xf4\xfd~\xd8\xfc\xbeo\
+\x87\xcd\xbf\xbf\xe3lw\x98\x7f\xbe\xd8l\x17]\x03n\
+j\xcf(\xd2\x02P\x99\x9c\x16\xc8\xcf\xe7\xca\xf4[a\
+k\xbb\xc9\xed\xed\xc3\xba\xfd2\xb4\x0e\xe2}7\x99\xed\
+\xc6\x19(\x9c\x91\x0e\xd5\xec\xc8\xee\xdd5l\x05D7\
+gl\xbe\xb7\xf9^\xa7\xde\x9f\xa2\x8a\x07\x1e\x15\xd62\
+\xd5\x8b\xf8\xa4s\xef\xaa\xbb\xab\xb46r\xff\xbah\xa6\
+\xa89/\x0d\x8dK4U\x8cu_W2\xa9\xadb\
+\xb6\x1d\xab\xb6pw\x08k*\xe4\x0d`\xa9\xcc\x1e \
+/z8\xbcd\x05\x84\xac\xaf\x906\x9c\xcel\xcc\x86\
+O6\xb1\xce\x04.[\x89\xcb\xbbV y\xf7\x98\xd9\
+\x1e\xdd\xed\xe7\xce\xe3\x9b\x87\xad\xc0\xa6R\xa2\x127\xd5\
+U\x02\xe3k\xa8\x09\xde;!l-y\xd9~v\xb6\
+\xcf\xad\x99\xe9\xe9\xe2aYk~\xc3\xc64hb\x87\
+\x05P\xe4\xfc\x97\xe1\xde^+\xec``\xd9}LG\
+N\xd7\x99\xae\xb3\x96\x98\xd5\xf9\x91\xcc\xafb\x82\x01\xba\
+\x05\x9c\x00\x10\x8e\xbb\xf3I\x89\x9b\xfe\xf5\xb9Oa\xf2\
+\x95\x1f}\xa9\xa6\xd2\xb4jC\xf1\x13\xd2\xc1o\x94\xf0\
+_H\x06\xd1M\xd7\xf3A\x09\x5c1\xc6\x00{\x9e7\
+`2\x19d\xfb\xde\x99L\x05\x81\x11\x7f\x05p\xcd_\
+$JJ\x83\x08\x83&K\xfd\xf6=\xabYig\xec\
+~\x12\xd6e|\x89\xef%\xe0W%.\xce\x19\x001\
+\xb1f~\x83\x80\x09\xb0/\x90\x07\x5cP\xf7\xa7\xb1\x92\
+\xa5)\x95\xe1%\x0e\x99~\x0c\x11_\xe7s\xb5\xd5\xcc\
+\xd2\x1f\xdd3\xecG\xc4v1@\xab\x9b\x83\xd2\x0d\x81\
+;\xad\x1f\xfb:m\xa5\x04\xdaJ\xb5\xdf\xf31\x1e\x18\
+_\xe6\x17\x7fA`\x8eyI\xac\xd8s5\xcf\x00%\
+y\xceK\x08\x1c$\xb2\xce/\xe3_\x8bc\x8c\xb3\x8c\
+\xf2\x98P\x15\xb8\x0b\xc8\xdd\x9f\xcf\x13p\xa2\xc8\x0b4\
+\x05\xe2\x18\x08\x02Z\x9f\xef\xdf\x05\xd2\x83\x96@\xf9\x9b\
+C \x5c\xf1\xd6O\x8a\xd9\xbcd\xfa\xf9\xed\x00\x971\
+\xb1\x098\x18_\xc7\xc0\x5c\xbcf\xde\x8a'0 \xac\
+g\xf7OL\xd4\xfa1n# b\xdcF`F)\
+\xe2X\x220\x96B\xfb\x5c\xf7\xe9\xf3\xc6\xd2\x8c\xb1\x1b\
+\xc3\xc8\xc8\xe0o\x8a#\xfd\xacD\x14\xe0(\x1e3\x7f\
+\x5c\xb7x)\x81\x82\xfd\x07\xa9\x0f\xc6c\xf9\xc9\x90Q\
+\xfeR\x22N?\xd7MX\x14\xff+5\xccpA\x22\
+\xae\xdcQ\xfe1\x0bL\x18\x8e\x7f\xa8\xf4~33\x05\
+W\xcd\x07\xfd\xfd\xb3\xa1\xa0\x0b\x84l\xd8\xb4\x08\x00\x03\
+\x02.\x13a\xa0\xacC\x9e\xd5\xeeT\x80\x22 \xf3\xb3\
+\x80\xc6uR\xdf\xf5\xf7\x10E\x81\x9f\xf7\xbbN\xe3\xa4\
+\x86E\x1b=\xd4Q\x80\x87Z\xfb\xb5day`~\
+o\xc2{?\xc0\xe2\x5cy\x9d\xa8\xdb\x97J\xca\x07j\
+Y\xaa\xa8n\x8eH\x0a\xfe/d ;\xaa\xc0\xbb_\
+\x01\xbe\x83\xca\xc4\xf3\xfd\xfa\xc3\x02\x14\xceI\x8c\x11\x15\
+[f_\xc0d\x9c8\x862f2\xf6\xc4\xe9\xd4d\
+\x09\xac\xf3\xf3\x89\x8b\x8c\x07\xd7\x08\xec\x94\xda+\xc73\
+\x03/\x19(j\xb9\xa5\x92m\xe3\xf5y\xc6O\xc0\xcf\
+\x01\x00\xf0d\xfb\xb1bn\xc8\xa4\x0aH\x1dx\xc6\xd9\
+\x86\xec\x80\xbb~\xb6\xd1\xb9Q\x8a\xe0`\x22\xa0\x04\xcb\
+Lf\xedy\x05\xb4\x0e\xae\xbf\x0c\xeb(z\x164\xe0\
+\xc7\xfa\xb0Q\xd8\xe8\x00B\x02\xfd\xac\xf9)\x15~\x81\
+\xee\xd8Fs`\xb0\xd4|\xe1\xb8\x8c\xc0\x90y\xc5\xe1\
+p`y\xdfX\xf21jJ\xf8\x8f\x83\xa3TB{\
+@\x1b%GF\xbfW\xd7\xe3~\xad\x0b\x1b/J~\
+R\xe7\x0bh1\x7f\xec\x1f\xaeWfM\xe9\x07\xed\x00\
+\x00W\x02\x14\xd5\xbf\x9e\x83\x92\xfbC\xa9\xf8'\xc5\xbd\
+T\xbd]G\x06\xf2E\xb1'\xd6\xa7=\x1c\xb1\xc0T\
+\x17\xafL)\x8a\xa1n\x00\x90\xdf'o\x9e\xb2yJ\
+{\x9e\x0bp\x90\xe2>\xda\xbc\xd5\xfaJ\xaa~Q.\
+\xad_\x07R\x02\x0e\xadM\xda^\xd7v/K^\xaa\
+\x0bB\x06\xa6u\xdd\xfaL\xebO\xfe\xeaE\x13`\xf3\
+\xa1\xb0\xd5\xe1\x89|Vd\xb4J\xa3\x22\x1d\xe2\xa2:\
+_e\x09\x88\xa6\xf3N\xe7\x9b\xe6\xf9t\xe0\xa8\xb0\xf9\
+\xdf\x9f\xd9\xac2\xa1{w\xd9\xbb\xf3\xde]\xe6\xd7g\
+\x86\xad\xcf\x7f\xfb\x9e\xb0Nk!\xef\xb3\xba[D\xf8\
+\xf5\xd0\x0e\xa8\xcdLT\x01\x801\xba\xf7^\x81\xb5F\
+\x88;\xbe[/\xfa\xa0\xa7\xd8\x13\x00\xa4\xd4\xe4\x058\
+4320*J^\xcekj\xeb\xa5\xaa-\xd3\x93\
+\xed\xa3J\xd5;\xff~zXXf\xbc\xdf\xdcQ\xc8\
+\xb3\xdf6\x87V-\xf2\xf4\xea\xb0y<\x1e\x1b\xb6\x8a\
+XN\xc7\x85u%\x10YZA\xb3\xa0\xfa\x94gf\
+\xf2\xc0#\xc3\x92B\xfd\xdcU\x0c\xb1\xda\x92\x05\x0c\xf1\
+\xa0.\xc0TcM\xf4\xf6\xad\x0b\xd3\xa6\xf6\x9d\x8b\x84\
+\xad\xeb\x02\xe0Q\xc0\x0b\x8av\xa8\xe4\xcf\xebk\xba\xd2\
+lW\x5cE\xf3\xea\xfbB\xbc\xef\x8e\x1d\x80\xb6?l\
+U\xa1\x9f\x8e\x9e-\xe6\xe9\x13f{b2WNM\
+ \xe5&k\xa9E\x01\x8e\xbf\x1b\xd6e`\xae\xda\x8a\
+\xed\x96\xae\x00\x8fZ\x81\x14\x80\xf0\xf6Ja-\xe0?\
+c\xf3\xfdN+$\xbbF\x10\xf5\x8c&\x85\xad$\xe2\
+\xfd\xd3\xfb\xa6\xf7u\xe7\x00Ut5\xffJa\xc2O\
+\xf8\xf6\xd0\xb5\xe5\xe2\x9d\xa3\x06(\x1e3\xc1\xce\x9b\xff\
+\x935\xc2\xda\xbe\xa9\xedT3\x9e}\xe0K\x03!J\
+\x03\x02\x88\xf9\xf7\xb0\xf9\xf5Ma\xa9\x85\xf2\xc4n\x1f\
+\x02\xac\x04\xe5<\xfc\xa6cf{f\xb6e}\xfc\xca\
+\xac\x10\xa0U\x86\x103\xcau\xda\x0f\x1f\x1f\xb6\x02?\
+M\x03\xe07\xe7\xf5\xfc\x9a\xb0N\xc3\xc19'\x10I\
+`p\xf3\xab\xd1\xb0\xae\xa3N\x03l\x01\xcc\x029\x8e\
+\xaf\xc4\xcb\x89I\x8d?!\x8aQ\xda\xcf\x8d\xe2\xbf\xf9\
+\x5c\xd8\x9a\xa8\xd9>(\xac\xd5\xa6\x87\xad\xe3\xaf\x06;\
+\x99Pu\x9f\xf6M\x0c\x0c\x9a\x0e\x11\xe8\x7f\xa7u9\
+\xf9\xb3\xd6\xe6/N\x95\x9f\xc9\xf3\xf8\x0a]\xfb\xb6\xab\
+\xef;\xa2\xcd\x8b;&\x80\xf0\xd4\xb0\xd5\x9f\xadZ\x7f\
+\x81\x0a\xb1>\xc0\x1f?\xe1W\xb2}\x1d\xb1\xcb\xa3\x9b\
+\xad\xfb\x0c\x112\x01#?O\xdb:\xa5\x0eDw\x05\
+z\x09\x9cWB\x84?l\x9e\xd1~9\xa6Y\x95x\
+\x1cT\x83. \x01x(!\x11\xb8\x00\xcc\xd3\x9f\xa3\
+^^@\x07\xa6I\xb6u,\xbf&\x99mU\xc2 \
+0\xd7\xce\x17\x95\xffr\x8d#\xbb\x9e\xf7\x98A^e\
+\x88\x93\xa2_\x9a<\xba\x09(9Q\x92\xa7\x1bG\x8e\
+O1\xe4r\xdeVi\x07\xf1A\xc0\x9e\x00\xd2\xf8\x8e\
+}\xe6\x01\xf3\xc4\xff0\x14G\xd1n\xfe\xb4\xe7\xc9o\
+\xe6\xa7\xf1\xe3FQw\xdf' Gq\x1f\x02\xfa\x0a\
+\x98Q\xd7e\xbe]\xe77J\xc4{y5~2\xe5\
+\x02Y\xfe\xbe\xbfs\x1dcw$\x81\xbeD\xa5x\xce\
+}\x89\xab0\x110M\xf8}\xff?@\xc0\xeb\xd8\xd5\
+\xc0\xcf\x80\x02\xe3\x8eI\xeb}C\x5cW\x80\xc70\x0e\
+\xf5\xf7\x12P\xc6A\xc0.\xf0\x17/a\xa0\x18\xe7A\
+<\xb0^\x95\xd6\x02\xc2\x8c\x97\x84\xdbP\xba\xbf\xb9t\
+X\x02\xe5w\xec\xfc]\xfe\xb5\xfd\x00\xc3%\xe3\x9a\xfd\
+\x07\xb5y \xea\x17n\xf5E\xbav\x80\xa8\x89\xd9F\
+\xa9\xe5\xff~6k'\xaf\xd4\x01\x01\xdfo\xd5A\xcb\
+\x00}3\x0f\xb0\x0b&B{\xd1\xae\xab\xc0\xd8\xaeN\
+`\xc1171\xfa6f\xbb.0\xb0\xe1\x0b\x08\x04\
+\xac\x026\xd4\xf3\x14{\xa9\x80\xceF\x95mx\xea\xfd\
+j\x8d/\x9f\x14\xf5^\x84\xe5\xc8\xeeg\x07\xb0\x85\xb9\
+\xb6\xb7[\x00\x94\xf1\xe7A\xa3\xe0\xa0\xc0\xeb\xa7\xf9\xa0\
+,\x00\x9f;\xb6\xf7\x18\xbb\x1b\xacb\x87K@|z\
+\x96f\x5c'\xef\x13\x15\xde\x84E=I\x04\xb7\xdaR\
+\x8d\x99\x7f\xcf\xe3Z\xcb\xf3\xde\xa1\xfc\xde6\xaf\xdb\x01\
+iA\x10\xb1H\x04\xac\xc6\xd9\xe7\x1ao\xe3(s<\
+\xb6\x17\xa4\xe1\xf0\x82D\xd8\xf7e\x009d\xd27\xb7\
+\x0c\xcbL\xdb\x11]\xdb\x0b\x1b;\xaa\x9f\xd7,\x99(\
+Q\xbf;\xe5\x02\x11\xc8'U\xae\xc4\xfa \xd8\x00\x01\
+\x81?*\x97\x9aa\xf7y\xa5<\x98\x06\xb1\x9a\x0a\xfc\
+\xb3/}\x89\x89\xc9\xe0k['\xe0\x17\xa0\xa3\xc8%\
+\x22_m_Pw\xb2\xcdI\xeb\x17}Tw\x9d6\
+*\xeb\xc3<s]\xc6\x9d\x83&p\xb6\xe1:(G\
+1N\xaf\x80\x01\xebq`\x04Ti\x07\x80\xc1\xe7\xfb\
+<@\x9e\xf5\xdaw\x19\xf9q\xb7\xd1gW\x81\xfa\xbc\
+\xacY*\x8a(\xc7\xda\xf5$ R\x81\x1ej\x1eD\
+\xda\x81\x91\xf7QT\xc6\x04\x86\xb4\x83j\x01\xc4\x13\xba\
+}N&\xddx\x0b\xcc\x01\x066d\xa5\x11\x19X\x14\
+\x13\xe3\x84f+\x85\xdf8{.T\xf7\xd5\x0c\xaa\x19\
+\xcf\xebl\x94\xf0\x17t%\x0a\x99\x91\x98\x83\x95\xb6\xcf\
+V{&\xaa\xc4)J*\xe0\x16\xa0\xb4Z\xde\xf7\xac\
+\x8e{\xa98\xe7\xc1]\xc8w:X{\xff\x16\xb6\x22\
+\xe05\xee2k\xe9\x18\x12\xe5\x9b\xe7\xe4\xf2\xdc\xec\xb3\
+j\xd8\xdf\x9a\x8e\xe8K\xb2\xc4\xe3.\xa9z|\xadT\
+'\xff\xfb%\x90\x9e\xbd\x99\xdd\x81\xdd\xda6j{\xef\
+\xb0\xf9:\xb6{\x9b\xbdy\x9e\xec?5l\xfe\xf9\xb0\
+\xd9.\xdc\x95\x5c\xa0\x8e\x9bg\xc7-\x0c\x8f\xea_\x9f\
+L\x01\x99\x0f%\x19\xb5\x8e\xc3\xfd9\xb5\xeb\x16\x92\xfd\
+\xe1\x1b\x9c\xf2o\x9d\xca\xb3y\xa9T#\xa8\xce_\xe8\
+\x18-\xb9_\x978X:V\xa5e!\xa3f\x9ee\
+\xa6T\x0df\xd5\x88\xda\xdf\x01\x824\x07\x88\xd4\xe9\x0b\
+\x0d\x08\xca\x92\x96\xcd)a\xddy\x97\x0c\x83&\xdd\xf5\
+\x86\xee\xbc\xc0 \xc8\xf6\x86(\xdaE\x9d}_X\xd7\
+~/\xd5\xb6\x0b\xd0\xca}\x08E\xbe\x00\xdd\xdcO6\
+\xaf\x09\xeb\xa8\xda42r?\x98\xce\x1f\xb6f\xead\
+\xf6\xab\xd6\xfe\xdaa\xab\xb8j\xa9}\xcb\xccefm\
+\xf33a\xeb\xf97\xfdx\xb6\x1f\xad\xcfy\xfbwa\
+\xf3\xeb\x9b\xc3\xe6\xcf9\x22\xdb\xa4e\xe63\xe0\xaa\xf6\
+\x1c\xb2\xc6}\xfb\x91\xd9>\xdc\xddw\xb6\x7f\xab\xe7A\
+\xcc4\x1c\xac\xcb\xac\xa5\x0d\xbb{\x85\xcd\xdf\xff\xc6\xe9\
+\x0d\xd3\x1b\xd6\xeb\x9d\xae3\x1d9\x1d\xd9iId\x80\
+\xb5\xbbDX\xb7\xaf\xff[\x935]\x80\xa4h+\xf6\
+\xf5\xb0n\xbf\xccy\x5c\xc05\xbf\x88\xe3)\xa0|\xc4\
+l\x11\x98\xddw\xb6\xd9\xb1\x9b\xde3\xdb{\x9b6\xc0\
+[\x9b6@\xee\x13M4noe\xba\xc8\xbcV\xfb\
+1%S\x00t\x01}\xc0\xe3W_)\xc7\xe6[\xb5\
+\x11L\x80fzZX\x97\xd9\xcc\xf9f\xbc\xb6\xff\x15\
+\xd6\x18/W\x09\xc6\xcb\xec\xce\xb7\xee\x0d{\xbf\x1d\x96\
+\x19\xf7\xdbu\x00\xf0\x9b\x9bUI\xd7\xbck\xdd\xb8\xed\
+[\xd9V\xb1\xba\xfad\x1bN\x9a1\xa5\xe9\xa0]h\
+f\xba\xaa\x0b\xc1\x03s\x7f\xbcz\xb6\x19\x05p\x12]\
+\x94a\xcfs\xa2\x02'\x8c\x9b\xfbg\x17\x1a\xcf7\xcf\
+\xcd\xdd]ww\xdb\xdd\xb5+\x8d\xe0\xa7\xd8\xf7\xaf\xbe\
+\xec;\x98\x0fU\xea\x98\xa5'\x15\x98\xe4z\xa9\x80\x19\
+\x05\xf8\x86K\xa9\xc7\xbe\xdb\xe4\xf8\x12qu\xfe[\xff\
+T\xd9\x89\xec\x0a@1\x00\xb4?\xc4\xdc\xd2\xc5GI\
+_\x06\xbcu\xce\x02\xd0\xf3\xdc\x22\xb6\xac\x94\xadj\xdb\
+1\x12F\x7fW\xa6\x1f\xb3\xcc>\xed\xfc\xe6\xa7\xd9\xf7\
+\x92\x01U\xfe\xb3n\x0d\x80\x12\xf7\x0385\x9e2\xf0\
+Q\xb0pB\x17@\x11\x1b$.i?\xe3\xc7<\xae\
+Yuw(f\x0e\x862\x06i\x8a\x06\x97\xb8+ \
+(\xe7\xdd\xee\xdba\xdd\xbc\xd3^QW!\xf7\xabd\
+X\xa9'\xe0\x00 \xe2\x5cs}\xe6\x8f\xf8\x80\xdf\xdc\
+\x8b\xa5o\xcfF\xa4[|!\xbeCmW\xfb\xcf?\
+\x07(\x08H%R\xc6@}\xc8\x5c\x1fTS?R\
+\xe3\xc5\x07\xce\x83\xec\x8aP\xa5\x15c\x80=\xc6\x03\xbe\
+\xe7\xff\x17\xf8\xbb\x0f\xf7\xc7\x9f\x11\x90\xbb\x1e\xdf7\xc6\
+g\x80\x10\x80\x81\xbf\x93y\xf7\xf9\xd4\xfd\x8d\x9f\xf8k\
+l\xa38v!X\xbb\x9d-\xdf7\xb4??(\xd3\
+O{@\x82T\xe2\xcb\xfd\x8e\xf3\xa1O\x90\xf7\x89-\
+\xf3\xc1\xf7\xf9{\xe3\x9c\xe7\xf7\xfe\x86\xfc|~\xcd\xb0\
+\xd7\x01K\x04\xf0\x87M\xb7}\xbd@%\x02\x90\xc1l\
+\x13T\x07\xc7\xa0\x9e\xd9\xb69\x99\xfd\x1fw\x0f\xd8\x85\
+\x8c\xed\xe5\xc6\xcc?\xe4$\x06\xfe\x0b\x07\xb7\xa5+\x87\
+\x10b\xce1\xa1\x0e\xcf\x81\x16\x80\xca\xf8r\x1c\xf5\xb7\
+\x15p\xa0\xc4B@\x05t2\xfa\xa8aY\xdbX\x81\
+\x95@uh\xe7p\xd0\x82\xb4\xf1g\xbb\x92\xfa\x5c\x0e\
+\xc7H\xe50qe\x02\x8c\xef\xa1\xf5\xba<p\xbf\xff\
+l.\xa8\x0b\xe4D\xc1 0\xf1\x89\x9a\xd889\x1c\
+\x02l}\xde\xab\xcdb\x22\xab_\xcf\x00\xd9\x06eB\
+\xabEr_2(&\xa4\xb6cjV\xfc\xbd\x05\xe0\
+~\xc7\xfe\xa5\xee\x9b\xc3\x8e\xb2-\xc0\xbc[\x8a\xcad\
+m\x5ce\xf41\x01R\x15\xbb9H\x8f\xe8\x16\xfa\x97\
+s!\xe4\x81\xdc\xc4v.|\x96\xcc\xfd2\x8f\xae8\
+\x04\xf6\xda\xff\x99O2\x80\x00\x02T\xaf\x9b\xe6\xf5Q\
+\xd5u\xa0\xa9!G9\xa3\xfen>\xfa\x1e\x0c\x13\x07\
+)\x07\xd0\x81\x84\xc2\x03\xb14\x1f\xad\x0b\x01\xaa\xfe\xf1\
+\xda\xd0A\x06\x01\x00\xe7\x94\xe97\x7fG\xed\x83Q\x8c\
+\x11`d\x9d\x8e\xa58\xe3\x86>\xae{\xdfc\xde;\
+\xd8\x05T\x90\x7f\xeb@\xe0\xac\xcf9\x0a\xb1Z\xf7\xa4\
+dj\xd7S\xb5\xbd\xba\x19\x10\x0bB\xf9\xa5\xa6~\xff\
+\xb0n\xbcSd\xca\x01T\xe2\x91\x90\xf9\x1c\xf7\x02l\
+|\xbf\xfb0\xbfs\xdeU\xe6 \xe7S1\x92d\x1a\
+2\xa3Z\x00\x04\xd1\xc1l\xe7&#^\x07l\xae\xbb\
+\x12\xa7\xcc\xda\xceZ_\xf6%%\x13\xaeG-\xaf\xd2\
+-\x19h\x8eH\x96\x06\xd4\xbe\x80\xea\x8cz\xa9t'\
+3\xe1\x9b\xdf\x0bk\x1a\x0fK\x06\x89\xc3\xa5\xc4\xc0x\
+\x13\x93\xfa\x9f\x8bh\xd8\xee\xf0\xb0y{9>l\xfe\
+\xf9\xb6\x0b\x85v{\xea\xf6\x9b\xdbo\xaej\xefQ!\
+\xbc7\xcf\xcb\xbdG\x85\xcd\xbf?4\xac+9\xe2\xa8\
+b\x14\xa0Hg`0:\xb2\x05P\xd0\x0e\xb0\xefa\
+\x5cEe\xe3{;F\x80L@\xd6\xd8\xcd\x81\xc3\x03\
+Cdn\xf3\xd5\xd9N\xe9\x1c\xd0\x1c\xcfr\xa41.\
+\xd4\xc4g\xd7\x9b\x0a@\x93\xa2\x0a\x90\x9c~;\xacc\
+\x0e\xa0Zg \x0f\xb9\xaf\xae\x0a(\x87\xd9\xb6O\x89\
+\x90\xd2\x19\x01uu\x83q\xff\xa8\xba\xf6Y\x8e7\x00\
+\xdc\xf7fm\xf2\xe6~a\xdd\xb9i\xfeh\xa3\x96b\
+\x97\xf6\x95\xcap+e\xcay\x5cm\x1a\xd3\xa1ij\
+\xed\xa7'\xa0\xf1\xf65#1\x1d\x1b\xb6\x02\x12\x18A\
+M\xcb\xe0\x9d\x19\xa8F\x80\x7f\xab\xb0\x15\x88h\x00\xdd\
+\x7f'\xb3 J\x0e\x9e\x1f\xd6i\x85\x04\x0c\x18@\xd7\
+\xf9\xc2:\x8a\xae\x92\x19\xcf1E;\x9b\xf2\xc1k2\
+P?&3\xe7O\xc9\xfe\xea\x87%\xe0w\x99u\xff\
+k\x22b!\xae\xf7\xdfa\xf3\xebcg{L\x8a\xd8\
+^#\x9f\xdf\xa7;\x8d\x16\xe3\x7f\xc9\x85\xf2O\xb4\xae\
+JE\xbcO\x0dz\x026u\x1e\x13\xcdJ\xf1\xb9&\
+>xdf\xc8o\xdb\x05\xeejr\x05(\x97\x0e\xcb\
+\xfd7\xf6\xf3W5+q9\x8efi\x94\xd8\x8f\x9c\
+G\xba\xb4Di@\x04\x8e/Z\xd4\xdf\xa3\x19]k\
+G\x87\xe2\x9b\x19\x5c\xa5\x07\xa5\xf1a\x9e\x11\xad\xcd\x12\
+\xa4\xedG\xc3\xd6R\x14m\x04\x95.i\x83\xa9\xbb\x06\
+\x0d\x88Ph\x08\x8d\x86*\x91\x02t\xa1\x9a;o\xd4\
+\xc4\xe6|8\xf0\xa5\xb0\xf6\x1c\xbe\xd2\x9eC2\x06\xf6\
+\x1e:\xdbC\x12@\x0e-\x86\x7f\x0e\xeb\x18_\x02\x5c\
+\xddn\x0e\x0d\x9b\xaf\xe3\x1f\xc2\xb2\xdd\xf0\xd3\xdb\xbe\xbb\
+d\xf6\xb3\xcd_\x9d\x9f\xd6-\x00Mb&\x03\xef\xdd\
+\xb3\xc3:\xbf\x09SD\x1b\xe3[-\xfeC\x05\xc2y\
+\x1d\x95\x81\x06\xe4d\x06\x1cU\xbej\xf0u\x7fA5\
+\xd7\xf6\x13\xa3\xe0\xa4\x5c\xb7\xda\xb5\xe5x\x15\xc0l\x1e\
+a(8'\xbd\x8a\x0fd\xcc\xb5\x1f\x94(\x10@\xab\
+\xf9\x17h\x09\x80\x04\x82\x80\x15~\x9fsY\xb7\x03\x94\
+\xfc\x0b5\xcfm\xdd\xe7\x01FO\xcd\x12B%8\xfc\
+9\xfb\xb9\xeb\xc9\x84Q\x13%}W\xa79\x91\x09\x18\
+\x22\x9f\xe5\xdf\xd0p\xc8}\x03\x93\xa5\xb4\x15\x00\xfd\x02\
+\xfe\xb1K\x96\x9f\xbd\xa6\x08a\xad+m\x22ex%\
+\x16\xf2\xbc-M2q\x03\xa6,\xe6\x88\xf6\x87\xce3\
+\xfb\xc5PC_@\xb2\xc0p\xd4\xec\x1a\x03a\xfb\x88\
+\xd2\x04\xff\xce\xff\x14\xe8\x8f\xa2}\xfc\x01@\x81@\xdc\
+x\x0ad\xad[\xfe\xfe\x18\x18\xfb<?\x8f\x99|\x81\
+?-\x1a\xe7\x8f\xf7\x0dm\xab\x8b\x91\x92\xdarU\x9a\
+a\x9c\x5c\x87\xf5*\x03o\xdf\xe6OI\x84\xfa;\xd7\
+'~\x01\x9c\x88\xb70\xee\x00\x19\xe3}\x19\xbf\xb1\xfd\
+\xa0\xcf\xe3_\xda\x1f\x86yR\xe3*q%a\xc1_\
+2\xceC\xf7\x88\xfdEY\xb0\xa0\xbe[\xd4\xf4%`\
+\x94\xc9W\xdb\x17\xe1\xc5\xc5r\x82Mk-geT\
+0\x07F1\x04\x1b^,\xbf\xaf\xa5H\xce))F\
+v\xcd\xb3\x09pG\xd16T\x09\x0bH\xc0$\xe0\x11\
+\x88\x1b\x10?s\xacP\xa7Q\x96m\xcc\x1e\xe0\xa8\x86\
+/\xa0\x19k\x9f}\xbe\x00\x11\x15\xdc\x81\xf3\xa3\xa1\xcd\
+\x1d\x00`\xcc\xdc\x9f\x96\xf7\xf1\x8d\x1c\x1f\x13\xda\xc4\xc9\
+\x059\xbbM\x8b\x08P\x8a\xb3\x14\xe0a\x9cz\xf1\xc6\
+C\xbbL<Uk\x1b\x90\x85\xe5:L\x18\x01\xb3\xcf\
+\x85\xe0\xdb\x10\xbe\x9e\x0b\x86\xe8X\xd4`^\xac\x9b\x80\
+Tc\xc7\x8d\xc6\xb8\x08\xac]\x87\xfb\x03\x5c\xb8.\x13\
+\xdfx\xc9\xd0\x0b\xa0\x05\xba\xb9\x80\xaa\xff6D\x15\x10\
+\xe1{/X\xb51KI\xc8G\xc3Z&r\xb6\xee\
+\xc0\xb1\xe0\xcd3\xa5\x07\x02\xf8d~l\xae\x1a\xd6\x1d\
+L\x10\xda\xcb\xe6|HG\xa2\x021\x88\xba\x92\x02\xa2\
+{J\x01\x04\xe8\xba\x1d8H\x04\xe8\xe6\x8f\x0d\xcc|\
+3nC{F\xfdgKL\xcf\xf3\x1d\x01\x22\x19\xe6\
+h\xb7u\x9e\xce\x11\x1eJ;:1\xc4e^{.\
+c\xdbP\xcc\x92\xa4H\x96\xe6\x00\xc6\x8cu?\x1e\x84\
+\x00\x0d\xcf\x1f\x02\xed`\x020\xb8\x7f\x1b\xb5LA\x02\
+0\x9b'\x87u\x8c\x1e\xfb\x82\xfb\xc8\xf6\x89\xd5^P\
+\xe0n>Q{\x8e\xd2\xa4\xa8\xe5}uX\x17(8\
+\x08\x89\xe89\x08l\xc8\x80N\xf3^\xdb\xbb\xcc<\xd6\
+\xe7\xc8\xc0fMve\x12\xad\xd7\x03a]\xe6@\x06\
+'\xf2\xb8\xaf\xcf\xfd\xf8{\x1d\x80$\xd3\xc0\x01\xf8V\
+\xb6\x01\x95\xe9\x96\xd1L\xb1&\x00m\x1dD\xfafs\
+\x00\xf5\x7f\xf6\xef\xc4~\xd2q\xdc\xde<\xac\xd3\x10A\
+\xb5\xb5\xafB\xbe\xa9+\xa3\xac\x9a\x87\xc7,@\xc6t\
+\xc8t\xee\xe9\xdc)\xcav\xb1\x95)\xb1\xb9Y\x96\x1e\
+\x1c\xbb9ns\x5cs\xc0\xff)\x1c\xf0\x02\xce\xd4\xd6\
+\x07\xb3\xe0\xad\xdd|\xb2\xeeS\x14\xccyP\x14\xfe\x5c\
+\xf7E9\xcf\xf6r5\xbf=GL\x1b\x07\xb4\xe7L\
+|S&,\xdc\xb5Wv\xed\xbc\xb2\x94\xa1\x80\x18\x8c\
+$\x99\xda\xcc@m\xde\x1f\xd6\x95\x0a\xe8:\x22\xe0}\
+\xdb\xd2\xce\x110e\xff\xa1\x86_b\xa0\xd6\xb1L\xa1\
+\xfe\xdd\xc4\xd2\xa8\x90\x0bhQQ\xdd\x97y\x9f@\x89\
+\xfdp\xf7\xd0\xb0\x15\x18\xd7\xdda{\xbd\xb0n\x9cu\
+\xb9@\xd1N&T9\xc4\xd6\x83\x00\xe21a\xf3\xbf\
+\xff\x5c\xd8\xfc\xdcO\x0b\xeb\xfc\x02\xed\xdf\x12\x10\x95\x11\
+\x93\x19\x9d\xae\x11\xd6\x89\x8e\xe5\xf8\xec~?\xac\xbb\xde\
+\xd4*\xd8\xee\x85u\xaa\xeaY\xd2#\xc0\x04\xf0\xeb\xca\
+P\x9f\x03\xe8\x08\xf8\xe7\x1fV\x91\xceb\xe6X\xbf\x01\
+8\xfc\xdfU\xbd}\xfapX\x96\x10<&\xc5\xc9\x8e\
+\xea\x02\xe3\x5c\xa7\xd568\xbb\x80TA\x1d\xa0D{\
+\xd5\xa3\xc3\xd6\x00\xbb\x12\x0b\xe6\xab\xfdZ\xa0\x12\xffM\
+\xb9Nn\xd5uqr\x1e%\xc0\x09pjj\xff7\
+\xe9\xda\xa0\xa6\x9fPj\xf9\xc4\xfb\x88\xdaq\x84\xff \
+\xac\xcb\xbcg H\xc4UM~\x01Q)2\xd8\x98\
+\x09\xf7\xed4=\x94\xcc\xa4\xe6\x846q\x8d)\x83)\
+q\xc9n=&Sb\xf3\x95\xb0\x0e`\xbc\xcc\x02\xac\
+M\xffw:i\xea\xdb\x7f\x9d\x9c~\x94@@\xbb\xbe\
+\xdf\xcb\xae\x0d\xday\xa2|\x7f\xa5\xa5\x04\x96\x84\xcf|\
+]\xdb?\x0e\xeb\xda\x9a&c\x85v\xc6\xf4\xd9\xb0\xf9\
+\xf5n\xd3\xafOwk\x89\xa9/\xb6\x04\xda_dw\
+\x97g\x84u\xa5\x0a\xa8\xd2\x1crm\xb0e\xc6\x01\xc4\
+\x12\x1c\x09XT\xa6\xfe\xf7\xb3V\x1f\x10\x90*\xf4\xa5\
+Y\xc2\xe1O\xc0\xb0\xba\xc4\xd8\xaf</\x019\x86\x1b\
+\xf1\xb9\xbf\xcf\xc0\xf3\x83)\xa6\x97\x00\x86\xeb\xaf6\xd4\
+4b2\xd3]\xfb\x94\xc4\x8b\xd2\x02\x8c1\xfb\x13\xaa\
+<\x7f\x1ee_\x9b\xcf,\xc50\x7f\x8aA\x96\x89\x95\
+\x02V\xf9\xebJ\xe7\x94\x8aP\xe7\xd7\x9e\xf9NY2\
+\xf4\xb5\x14\xbf;*\xac\xd3.\xc8}H\xe9F\x950\
+\x99\x17J\xfa2#?\xfdeX\xa7\xfeo>]1\
+\xdb!\x02\xb60\xf4\xb4\x81\x05\xc8\x00\x9a\xf9;\xfcN\
+%\xd1\xbai\xc8\x8c\xdb?s\xff\xaf}\x83\xbf\xe5|\
+U\x8a\xc5/\x03\x1c\x8e]\xb0\x8c\x1b?\x8c\x9f-\x80\
+\x1d\x135\xfc1\xc0=\x11=\x01\xff\xd8\xde\x8e\x7f\xe6\
+U@\xae\xc4\x8a\xdf&#>\x96\x1c\xf3\x07\xa9\xfb+\
+\xb5\xf1>\xe35\xd6\xc6\x8f\xaf\xfc\xaf\x91R?\x88m\
+\x17 !\xc06.\xae\xc3u\x89g\x06@\xe3 \x91\
+u\xcfe\xecR'\xb1\x82\xc1\x80\x91\xea{\xc7\xda\xfe\
+QtQ\xe6_|.\x0e\xe5\xdf\x8a\x070%\x88X\
+\xd2H\xa3yd}\xb8\xfe\xa1\x8d\xe4\xfev;_\xc9\
+\x89r\xa0s$\x83\x22~\x85.\xd0\x09\x07\xf4\xa2\x83\
+x\xdfi]w\x00\xd4r%\x01&~\x9fa\xdc\xdf\
+\x05\x1a\xf1}?\xcd\x8c\xf1\xbf\xe5\xdf]\xa5\x0b\xc8\xbc\
+\xa2d\xa3\xde\x1b\x00\xea\x87\x02z\x01\xc3\xd8\xc6n\xac\
+I:\xbd\xfa\xd1/\xff>j \x08\xc4=(\x99\x0f\
+\x01\xa4\xc0\xd3\xc1,\xc0u\x1d2\x98\xf9=\x9bk\xe6\
+\x04\x1b\xa8*\xb5\x91d[\x97y\xdb[(\xe5\xeec\
+m\x0f\xb1<\xb0C\x12\xf9\xf1\xf7\x02\x7f\x0b\x9d\xa3\xad\
+\xbdP\x8a#\xd5\x86\x8a\x19!p\xff\x85t\x10\xb4\xef\
+s\x1f\x00\x02H\x97\xf12\x0eDd\xd48c~|\
+/\xc7\x99\xa3\xb2wVd\xb1j\xbce\xe6\xb5\xcd\xd0\
+\x06\xc5\xe78\xb8\xbc\xde>\x1dk\x99w\x01V\x1eD\
+\xe5p\xa3\xa2\xbb_\x99x\xa5\x04#R\xc7a\xb0\x11\
+\xfa\xcf<Cu\xd6n\x11\x10q\x9e|\x0e\xdf\xcc\xe7\
+\xfa\xf1\xfc\x9c\x9b\xe4\xf5bf\xf8\x1c\x00\x95\xe7d\xfd\
+\x00\x988\xd6\x18\x01y\xdf%rHT\xce\xab\xc0\xcf\
+\xba\xb0\xa09\xd4\x1c\xfd\x0c\xc0K\xecO\xbb#T\xc1\
+)\xac+%\x00\x5c9P\xac\x8b\x912e\x03\xb4\xa1\
+\xd9\x1f\x88\xa9%E\xaa(\x95\xc6\xd7\xdf\xd9\x88\xf2@\
+\x81|\x17`ec\xc38\xf0\xdc8\x10#E\xd0\x06\
+n}\xabQE\xb9&6)s\x96\xd4\xe4j\xdf\x95\
+\x14m\x19\xf5\xca\x90\xbb\xef\xdc\x88K\x0b@\x86\xdc>\
+d<\xd5bz\x0e\x02\x8d;\x84um\x99\xb2\xd6\xb4\
+\xd6\x01\xca\xa9q\xc8\x8cYQ&\x0fi+\x7f\x01>\
+n\xdc\xda\xbf\xfdG\xb4\x7fkbu\xff\xdeeb\x01\
+W\x0e\x5c\xfbM\x06\x0a\xd3\x89a\xdd>\xa1T\xc2\xc1\
+x\x9fEl\xabjm\xcd\xd7d\xa8\xecn\x156\x7f\
+\xce\x8b\xc2\xe6e}\x8f\xb0\xb5\xff\xb7\xc0\xb2\x02I\x81\
+\xea\xf1\xe9\x80^bqP\x0f\xbc\xe8\xc0_\x1c\xf8\x8b\
+\xd5!\xdf\xfe8l\x9dO\xdb\x9f\xdd^\xa6\x89\xc4)\
+\xe9H\xf1\xbc9\xec~U\xa3x\x9a?\x17N\x0d\x1a\
+5p\xfa4\xe7\xf9UbC\xa8\xd42\x81\x03\xd0X\
+\x99\x00\x19!\x80\xdc\x08\xb8\x11\x0b\xcaZ\xd8\xaa\x81\x8f\
+]\xf0\x0a\xabVLe\x922\xf0\xaeZ\xfa\xcc\xf0\x15\
+\x10\xa3&\xcf\xe7j\xe3\x95\xaa\xdb\xba\xc8X\xde\xd5\xf7\
+=\xfbfW@\xa0]\xa2n\x1a\xda\x13\xa6\xc8\xa4Z\
+\xef\xcd\xcd\xc2\xbav\x84\xb9\xcf\xa8\x11/-\x85\x07,\
+m\xc7\xec_\x9ew\x89\xc8\x0a\x8c}\xaf.\x1d\xce\x0d\
+\x0e\x9b\x00\x07\x03'\x03\x1f\xa54\xa5\xd1\xe1\x1c\xe70\
+\xa5#Sm\xe4R}\xbee\xd6\x03\xc8\xfa\x95\xb0\x15\
+\xe0\xaa\xee\x0e\xc4\xe72\xc0i\x22f?N`\xe5\xad\
+\x9d\x86B\x88l>/K\x8b\xde\xb9\xb6\xa1k\x15\xdf\
+o\xccu{\x8b\x14=\xfc@\xd7\xee\xf2\xa4\xb0\x04\x9c\
+\x7fm\x05\x000\x03j\x1c\xe2\xd4\xb8n\x9e\xe3\xe7\xea\
+\x1cjT\xe6\x98?\x8fJ\xa0\xf3k)\x1e\xf8\xfb\x19\
+8>\xb3\x03\x8cST\xb0\xfc\x10\xffatD\xa9\xc4\
+\x0f\xd6.\x12\xd5\xb5 \xba\xc7\xbc1\xaf\xe7\xc6]\xa9\
+@2:\x89in\x7f5l\xfe\xbb\xdf\x0c[3\xee\
+\xa59\xa1\xed\xa1\x8c\xaf\xb6m\xc7\x84u\x99f?\x13\
+/\xcc\xdapb\xa6\xc5\xcc1_\xf4\x85\xc7@\xc9\x12\
+9%Y{\xf7\x99\xed\xbe\xdd:\xcf@\xafu\x1bx\
+\xc2\xcap<\xf0\x1ba\x1dP\x99\x00\xe3\xeeJ\x8b\xa8\
+\xe6\xee\xee\xf9=\x02\xf9\x87gI\xd0K\x97\x00tz\
+\xdf\x81\xdf?\x10\xc0\xcf\xed\xe7\xf1\xfbH\x07l\xa5H\
+\xe8\xf6\xb8\xb0\x8e\xfa\xfe\x8e\xb0\xf5\x9c\xaay\xfc\xee%\
+\x83<}$lM\xd4\xec\xde\x94\x9a\x0cJq\x12\xb8\
+\x8d6\x82\xbb\xbe\xadn\xde\xff\xeeU\xa9\xb5\x81Q\xf8\
+\xf0d\x00<7\xac\xd5\xf8/\xb5\xe7\x09X\x15\xa3G\
+\x00j\x9f\xfe\xd5\xb0.`\x03\x84\xd0\x08\xf8\xd3%S\
+\xbd\xfb\xcb\x04B\x1f\x9c5\xeb\xfc=\xb5\xd1\xa8\xceY\
+*P\x22}\x7f\x11\xb6\xb6\xcf\xab\x1ah\xda\x1fJ\xa1\
+\xd4\xca'\x83\xa6\xfcK\xcc\xb4\x04\xd6\xcc\x1f@~\x9d\
+\x1f\xf6\x05]\x84\x04J\x1fL\xbf\xe1\xed\x0b`Z\xa5\
+v\xc76[\x03\xd0\x8b\x85\xad\xc0\x7f\x01\x16\x18\x82\xba\
+b\xe5~^\x8c\xc2\xec\xd2R\xfe\x15QVm\x89\x05\
+nD\x14uk\xfa\xb9\xb0\xd5\xef\xaeR\x07\x016?\
+P\xe0\x08 \x02\xc0{\x8e\xee\xc3\xf9\x0d\x90\x10\xc7\xd8\
+O\x5c\x878\xc9\xbf\x8fLNq\xc4\xa8\xc6\xcf\x1f\xa3\
+\xa9\x05 \x1d\xba\x07\x94f\xd69\x04\xac\x07\xa9\xd4\xf3\
+\xaf\xfd\x9d\xef\x1b\xc4\xc0\xeb\x15\xd0\xa0\x0d\xe0\x18 \xfb\
+\x1e\xafC\xa0_\xda\x05c\x9b\xbc\x91\xc2?\xaa\xf2\xfb\
+=\xff\x94\x1f)\xa0w\x9e\x197\x9f\xeb\xfaF\x00b\
+hW\xcf\x0f\xa9\xfb\x1e\xefc\x00.\xea>\xf8o\xbe\
+\xc7x+u\xc5\xd0O?\xae\x804\xdd\x8f\xf8\xcdJ\
+30`\xc6\xfb\xc9\xeb\xdc_\x0f\x9ac\x18y\xd3\xf3\
+\xa7\x83\xfd\xed\xbc\xb1\xbe\xaf\xe4\xd7\x1a\xb6\xb6\xbe\x8f\xd8\
+\x9f\x09\x1enU/\xe6\xd7S\xfc\xa7\x0e\xf9\xce>\xce\
+\x07\xd5\x04\x0b\x8c\xfc\xdcS#\x8f\xe8\x1c.j\xfb\x1c\
+\xd9\xa1\xed\x5c\x054\x02\x19\x0b\xc4\xab\xdf\x0b\x5c\x92\xea\
+^\x94i\x03\xd6\xdf\xf7\xd7\xba\x09=\x8a\x09\x0a\xc8}\
+.$\xe7\x13\x999\xe6H*=\x00 \x5c \x1de\
+\x8e)&\x84\xf1\xfca\xde\x87\xb6\x19Yr\xe1~+\
+\xe3<\xd6\xf0_<\xaf\x8f#\x0e\xa0\xf0\xb9\x07r\xa2\
+\x98\xf8\x00\x11\xaa\xe1\x00\x03\x07\x92\x9f\xafp\xd6\x8c\x7f\
+\x89+\x11\xd7\x92\xc1\xf6\xdc\xdf\x9d\x01\x8aL5\x11\x19\
+\x01\x12\xe6\x81\x1a~\x19\xce[-\x19\x8d9,\xbbE\
+\xa3:\x13\xfb\x1bj!\x0b\x10q\x9f\xa8Z6N\x14\
+{\x07\xcaa\x19\xb0\xaeT\xa4e\xbc\xcd3\xd4\xab\xa4\
+\xfe\xcdW\xb1\x04\xde\x97\xcd\x8c\xf6\xfe\xfc\xbb\x9f&\xb2\
+z\x85\xa1T\xe0\x22\xf9|\xcf?\x94h\x98\x1f\xbew\
+lSi>\x00\x04 \xf5\xe67\xc6\x00\x80\x03\xe5\x1d\
+\x02?\xf4!\xae\xf5\xe0\xc0\xb0\xf0\xad\x8bQ5v\xcc\
+\xf0\x9b\xef\xa3h\x8a\x8c5-\x03\x19`\x94q\xa2g\
+\xda\xf48\x90O\x0ck\xed/\x17m\x04\xf3\xcc\xbc\xd0\
+\xee\x8d\x83\x90\x81_\x95\xc8\x00@\x942\xa8I\xd6\xff\
+Y\xcd\xa5L4J*\xe0\x89\xfa\x7f\xd6\x0a\x17\xd5U\
+\xe0\xa6$ \xfb\x0c\xd7u\xe7\x01\xaf-\x91\xdao\x19\
+\xc9\xa2\x8c;8r\x1e))*@$D\xc4\xce\xc8\
+\x1a\xe4\xd7t\x81)\x91\xb0{\x87\xcd\xd3\xe2O\xc2\xe6\
+\xc7wfX\xb7_\xc8\xe8=>\xc5\xb8>5\xbb\xc7\
+\x9fZkb90\xd5\xad\xc4<\xa2\xfe\xab4\xc0~\
+\x97\x01i\x05\x8e\xdf\x0a\xeb\xba\x10\xfcQX\xa7\xf6\x9f\
+\x14\xcb\x0a\x00\xd5\xb4\xa2\xb4f\xa6\xbe\xdaSb&d\
+Fp:WX\xeb\xc3\xde\xda\xfc\x01&6_\x0bk\
+\x0c\x83\x9b\x05\xc3\xa02)\x19\xc0V)E\xf6U/\
+18\x9a\x0b\xee'\xdb\xaeU\xc6\x9b\x88\x97ZZ\xeb\
+K\x1f\x5c\xeb\x85\xe8\x15`\x09\x90\x02\x90\xb3\x1f\x0f\x8e\
+\x896{\x95\x01\xbfu4\x88K\xed\x86c\x93y\xf2\
+\xcf\xd9w\xfe\xf6\x9dVJ\x06D\xd5O>k#\x95\
+F\x94\xf6\xc3\x0f\x97\xb6s\x9eK\xd5\xb8\xaa=\xcd\x0c\
+\xe0\xf4\x81\xb0\x14i\xfb\x83\x0e\xd0\xc9\x80tze\xd8\
+\x1a\x00\x94\xe8\x99\xf5\x95\x1a\x14\xa5\xae\xfd\xd1\xb0n\xdf\
+Ju\xf6*yB\x09\xd5\xdd\x83\xfa\xb6\x9a\xff\xecZ\
+\x00\xc0!\xd6\xb7\xf9nX\xa7:.\x80\x97\xf9!\xaa\
+\x16\x01u\xd7\xadb:&l]\x872\xd3\xd5\xbf\xfe\
+\xc4\xb0\xce\xe1\xcd\x12\x0cb\x82Ml\xef\xbb\x1d\xb5;\
+\xc7\xa9\xcd\xfb\x97t\xfe\x88\xf6[\x1c'\xd7w\xe5\xd6\
+'f\x15\x15\x0bo`^\xe7\xd3\xc7g#vur\
+\xb6\x97\xbc\xf9\x0a \x94_d\x1f\xb2\x8fdw\x85r\
+|\x03\xe8xR\xd76\x94\xe3h\xfd\xc6iz\xd1\xae\
+mr\x94(\xbcj\xfe\xfe?\x9a\xed\xa9\xf3\xebCg\
+{XR\xc3\x9f\xd6\x8d\x93\x12\x81`\x9c\xdc,\xa9\xc9\
+\xaf\xeb\x1c\xe0PVx~\x02?\x0f\xec\xb4\x0f\x04&\
+^\xad\xbfd.\xe9ZQ\xe7L\x02\xe5\xc58\xc1\x5c\
+\xd2n\xefw\xc3\xba\xf7\x0fb\xc7\x98-\xdb\x87\x84\xcd\
+n\xc3G\xc2\xe6\xdf\x1f?\xdb\x8b\xe6\x9f\xffe\xb6\xf7\
+\xe4\xbe\xf6\x8a\xf9}\xd7\xdc^k{\xcd\x8e1s\xbd\
+\xd0\xd3\xef2\xbb\x18\x1d\xce-\x8c\xcd\x0be\xe9\xd7\xbb\
+\x12\x90\xca\x80\xbe\x02r\xd4w\xe7j\xee\xcf\xdb_\x0b\
+\xebJA\x12(\xa5\xa1\xb49l\x99\xff\xd5\xfe\xef\xe5\
+\xcb~*S]\xcc\x89\xbfM\x91A\xe7\x04*\xef\x95\
+3\x10\xc5\xe4\xb1\xcen\x9b\xf3\x04\xe0\x97\xa5C\x05\xc8\
+\xe4~\xae\xff|\xf9\x1d\x17\xcc}\x0eS\x0ep\xaet\
+\x01\xa0 \xa3o=\x0em\xc7\xea\xb9\xa7\x86D\x95\xa2\
+\xd14\xca}qw\xa3\xb0\xae\xdd\xdc\xf7\xc3\xba\xee\x07\
+\x18\xa5\x12\x05(\xfeJ\xab\xee\x18\xd6u\xff!~\xcb\
+\xcf\x91H<%\xbb\x5c\xbc3\xbbO(\x8d\xc4\x80\xe0\
+o'\x80Z~\xc5/\x86u\x8c\x09\xda6\xe6\x0b-\
+\x14\xe7\x15\xe0\x00\x83\x8d\xbf\xcf/\xcdyQb\xc1)\
+\xea\x5c\x00A\x02\x92\x80\x8b*=\x13W8\x87\xf8e\
+2\xf4\xfc(\xd7\x9d\x00\xe3\xe6ua\x9d_-N\xb0\
+?a(\x0e\x22\xe6\x15\x07\x09\xf0S\x9c\xfc\xa0v\xe1\
+\xe2\x1c\x0c\xb2\xb1=\xb5\xf9z\x0e\xd4|\x1aI%r\
+\x08\x00V\xf2-\x8e\x14\x90\x0fZU\x95!\xc7 \xf0\
+\xef\xde?\xb6\xf7\xf3\xbdj\xfdG\xed\x02\x7f70N\
+\xcb?0\xbfGf\xba\xfb\x1c\xda\xcfW@\xee\xf3F\
+\xad\x03@\x02\xc6\x1f\xc6\xcb\xf8\xefc\x89\x83\xd7s\x12\
+14\x0e\xfe\xdeuIl(!!\xea\x87\x19\xa3\x14\
+\xd9}\x19\xb7\x91\xf1\x9e\xf3b\x7f}\xb1\xc0[\x9b\x19\
+\xfd\xe2e\xf4m\xe0\x81\x1b|\xa7\xd3\x06\xe8k\x85\x0f\
+t\x9f\x03 \xf0w\xe7@\xa1o\x81\xd6\xcfw\x81\x0c\
+\x8a\xf5\x11\xa9\x96\x8aJ\x1c\xd3~{\xaaV\x00\x00 \
+\x00IDAT?\xda\xc3\x5c4\xacC\xe8F1\xb1\
+\x11\xe9\xf0\xb3\xc0\x5c\x00\xe4\xbaG\xca\x8c\xc0\xc9\x06=\
+\x8a\x9fq\xc8\xfd,p\xf4z\xc8Yk\xeeQh*\
+\xd0\x15\x88{\x7f\xf6\x89\xaf\xf6b)\xd2U\x01\xb4\xeb\
+\xfe|N\x88\xb1\x96\xc9\xc4Z\xfb\x84R;?\xab\xea\
+\xbf\xfb\xe6\x00@\xee\xd4\xecK5\xd9@\x92\xda>\x1f\
+s\x0b\xd0\xe2{\x92R_\xe3e\x1cN\x1b\xda\xfe\x8d\
+\xa2\x83D\xf8l\xf0YS[\xa5\x1a\xe3\x06F-\xf7\
+\x0e\x09\x0c\xdc!\x03\xbf\x0c\x88+\xe0SS\xf8\xbbY\
+s\xfc\xf4\xc5a-*4\x00\xc0\xf7\xdc?3\x5c\xc4\
+\xaf~93Jj\xeaP\x9b\xd7.\x0b\xcb|\xb4\xb0\
+\xccc\x8c\x83#\xf3\xa0z{\xf6\x97F\xb1\xf5\xbd\x18\
+\x17\x9e7\xa0\xc0\xef\x01\x03\x02r\x0b\x1e\xa2\xe9\xfb\x1c\
+\x106\x16\x8e\x14dP\x7flTu%\x0c\xee\x83#\
+\xd0\xb7\xfb\xec\xdb\xcb\x8cT)\x0e\xfe\xed\xc2\xba\x8d\xcf\
+\xf5a28h\x00\x1a>\xd7\x06d\x03\xb5A>:\
+\xac\x03\x18\x00\x07\x19x\x0a\xf0K\x1c\x0f0$\x93\xa3\
+\x94\x22\xfb'\x97\xb8\x91\xf6n\x1c\x07\xf3]M6\xf1\
+-\xeb\xc1>\xe5\xe0\xc8\xb6w%2\x95\x9f\x8b!Q\
+\xea\xc4Y;[5\xf4\x02)\xb5\xfd\x09<a\xca\x08\
+Tj_A\xe1\x03@$eszM\xd8\xfc\xb6+\
+\x86u\xaa\xe9\x02\xee\xbc\xff\xe9)\xd3\x1fNQ[~\
+\x81\xb0\xf9\xf5>a\x9d\x98\x10f\xcf\xd1\x8b\x08]9\
+`\x00K\x8e\x1e&\x09G\x11\xc5\x91\x1a\xb6}3\xf7\
+\x8b\xedo\x85\xad\x99\xe4\xdd\xd1\xd9e \xf7\x91R\xa7\
+\xbfkX\xa7F\x9d\x8e\x07Q\xad\xca\xb0e\xed\xaf\xf5\
+\xd72\xc2/\xef\x10k\x14\xcfp\xe8\x1f\xbc\x06BD\
+\xf4j\xbf\xb2\xefe\xa9G\xb51\xc3\xc8\xc8L}e\
+\xa2\xb4\xb7\x1b\x19\x06\xd6\xf7\xa0\xedQ\xe7\x0d\xb1-\x8c\
+\xa2\xc8s>k\xa5\x98\x96\x88\xde\xfb3\x80T\x03\x99\
+\x99l\x94\xbb\xca\x94\xd0\x98\xa1I\x91\xe3R\xc0\xd0\xd3\
+\xf7=\xad\x05R\x98\x1e\xcfmV\x94\xdc\xfa\xdc\x17\xce\
+\xc7\xfe\x0b;G\xea\x8eM_|\x09\xd4\xae\xb4\x8a\xeb\
+\xd9\xaf+\x809wX'\xca\x87qD3\x05s\x0b\
+C\xcbs\xa7\x05\x91\x7f?\x9d\x1a\xd6\x01{\xee'\xdf\
+\xb7\xbdkXG\xbd\x04dk#'\x93#\x00\xa5\x09\
+\xf0\x8c\xb0\x96\x19\x9d\xad\x0b|8\xe2\xd6\xb3\x92\x87d\
+\x84M\xbf\x166\xff\xfc\xb0\xb0\xb5m\xa3v}\xa8\xd0\
+\x80\xc5\xea\x96!\xc6~\xfblo\xeb\x80\x808\x95\xbe\
+\xbf\x96<6\xf5\xf4?X\xcf\xf7V+\xff\xf8N4\
+.v\xdd\x1b\xa5_\xb2\xcd\xf5\xf3\x8d5\x83>\xfdk\
+XW\x8a\x14\xb3\xed\x06\x9d:\xb4\xf3\xd9\xfe\x7f\xab\x06\
+\x85\xd7\xe7\xb4\xfd\xf31\xf3\xe7<j\xb6\x08\xe8\x1e\x14\
+\xb6\x8e\xe7t\xcf\xb0.C\x1b\xda\x0b\xb3\xff1\xbd>\
+\xac\xa3&\xbf\xb5\x15\xd3\xac\xfbpj!\xd4\xbaM*\
+w\x95\x04\xc8\xe4\x0b\x1c\xf3{+\x00\xa3\x96O\xec0\
+\xcf\xc1\xed7\xc2\xd6\xd2\xb0\x12a\xd3f43\xa7\xce\
+\xa1\xedO\xc2\xba\x9a\xef\xf0O>4\xff\xfe\xe4\xb0\x96\
+\x88h@L\x01\x98\xc1d\x9b\xfd\xa4\xe9[\xd3\xb7\xa7\
+owj\xf0\x18:\x02;@\x9c\xf3\xcb\xbe\x90\xeb\xb7\
+\xda(\xfe\xc3\xee\x9fb~\xec\x9d{\xef\x5c{\xe7^\
+E(K\xf4\xd3\xf9\x9d5\xfa-\xdd\xf5\x83n}\xe4\
+\xbc#\x12\xb9\xbbz\x02\xa4\x03\x80Vm\xa1o\x97\xfe\
+\x02\xe0\x92c\xafV\x19\xd3\x87\x08\xab\xf3_\xdf\xf4,\
+1\x8b^\x1a\xed\x5c\xf59\x02\x08%T)v\x87\x91\
+\x00\x90\xaf\xf7+I\xc2\x94\xc3t\xa3}s|\xb3\xd5\
+\xdf\xcb\x0cx[/o\xef\xb4A\xae\x99\xfeF^\xdf\
+\xee\xada\x9d\xa6\x83\xf3;\x01X\xeb\xaf\xb4\x1e\xf8\x1f\
+\xda-\xd2h\xcaR\xd4\xd24\xc0p\x10\x00\xf37\x9c\
+\xef\xd6Q\x02\x17Urr\xb5\xb0N\x1c\x90\xdfI\xe4\
+M\xe9\x9e\x9a~\xdd\xa40\x04\x93\x09W\xc0Ljt\
+\xd4\xf5\xeb\x82c?O@\xa2\xba\xa9\xf0\xc3\xf8]\x02\
+_q\x8csA7\x03\x1a\x0b\xb4.\x8c+-\x04\xfe\
+\x95\xff\x00\xdb\xe2!~\x1a&\x8aq\xb2\xeeGqr\
+\xef\xe7\x0f\x0e\xd4\xf6J@\x0a\xb4\xdf\xddR|\xcb\xf3\
+\xfdP\xc7\xcc\x1c\x13K\x03\xb3\xba2\xde\xa3\x86\x00\x7f\
+\xcc\xab\xf5B\x1c/K5\x0f\xaa\x99\xc7\xe8\xf5\x0a`\
+U\xc3\xef\xf3\xc6\xf6\x84C\xe0\x7fP\x89\xea\xf8{\xef\
+\x07D`\xf2\xb9?\xcfcdR\x18\xef\x01x(\xea\
+\xbe\xc4\x95\xf7\xf9;\xfb\x95\xb6\x84j\xf8\xf9G4\xf8\
+\xf8E\xe2\x17\xfe\x9bq\x12\xafy\xde\xe9?\xedo\x1f\
+/\x83\xda\xab\xef\x0b0W\xb5\xf9\xb3\xaa\xd7\xfby\xac\
+m\x0f\xb7\xfb\xc7\x9dF\x80\xff\xb6\x8d\xcc~\xb0\xe8D\
+q\x1c\xf3\xb5N\xe2d\x08\x08, cIU)\x15\
+{\x13\xdauC\xcaL\xd8\xec\xcfZ\x01\xa8\x09)p\
+Y\xdb\x94\xfd\xe4l\xbb\x13X\xb0>\x172\x0f\x80\xb8\
+\xde\xd0vo,A\x00\x04\xa81\xe6x\xaebh\xeb\
+\xf8l\xcfF\x1cm\xacU\x07@\x5c/)C&\xaa\
+\x05/3\xad;\x00U\xea\xebe\x00\x07\x81t\x9dc\
+\xbb\x11\x1b<j\xb3\xdaDm\xfel\xb0\x18\x06\xdaL\
+@`\xbf\x9a\x13X\xa0a\xbc9\xf62k\xfe\xb30\
+-dL\x03\x0b\xe1\x229\x0f\xd5\xd8\x12\xb7zp\xb3\
+}\x9bgm\x8e\xd9<\xabe8^\x17\xe2+E\x9d\
+\xccR\x81\x12\xbfI\x8aU\x011\x1c<\x1b\xac\xc0\x13\
+R+@\x92\x11\xbcn\x8aA\xa2\x08_-\x9f\xbf\x9a\
+m\x19D\x99Z\xf3\x13\x10\xe0:\xac+\xe3l\xdc\xcd\
+\x17\x1b\x94\x8d\x91\xa6An,\xc4\xf1\xaa\x1f\xb9\xcf\x1d\
+\x91F\xf3\xc7\xfc\xf6\xbc\xc7\x8d\xde\xfa\xf1wc\xbb\x17\
+\xd73R\xa3\xbc\xda\x18e\x00\x12i\xad\xcc\xbd}\x01\
+\xc5T\x89\x11\x06Of\x96Q\x8f\x8b\xe2\xeb\xbe\x8c\xbf\
+W\x80\x1c@B&\x80\xda\xac\xf6\x9dY\xe39\xcf\x8f\
+g\xc5\xfc\xd8|'\xac\xdb\xa8=\x07\xa5&\xf6\x19\xb5\
+\xf3\xcf\x09\xeb2\x15\xd9\xce\xaa2\x034\x08\xa8\xbd'\
+\x85\xad\xda\x9c]\xb8\x1c\x97\xc5\x111\xbec\x86qh\
+\x1bCd\xab\x90{]\x08\x9e\x17\xb6\x22\xde\xbb?\x0d\
+\xeb\x02\xd4t\xcc7\xafN5v\xe3\x93\x0e\xab\x00\xaf\
+j\xfc\x1d\xa8\x1c0\x14\xcc\xcb\x85e\xa6\xf1\xd5+E\
+S\xad\xbb\xfb\xad}*3\x07\x15(<v\xb9\xfe\xcd\
+S\xf2\xf3n\x1c\xb6\x02\x1a\x1c\x1b\xf3c\xfb\xdba\xf3\
+\xcf\xdf\x9b\xed\xf4\x15\xd0(\x87\xe8mY\xf3\xafM#\
+\xca%q*T\xd5\xa4\x14W\xed4&\x01\xc7\x96\xb8\
++&\x89\xf5\xaa\x0b\x07QE\x8e\xbd\xfd\xdd\xbe\x9f\x80\
+\xf5\xeen\xbb_\x0f\x11\xab\xdd\xfbv\xff\xda\xba.\xc4\
+\xb9r\xbd\x15\xa8k\x22Ww]\xa9\x9c\x9bc\xc3\xd6\
+\xf9f<h\x97\x94\xa3\x98\x19h\xed\xfaJ]\x5c\xa0\
+\x95\x99\xf8\x12\x85\xc3<\xf1\xb9\x09\xac\x95Zxj\x8d\
+\x14\xf55\x19\x04\x07\xfe<l\x1e\xf7\xa7\x87\xad\xfb)\
+G~\xfb\x97a\x1d\xc3,\x01\xb5\xca\xa0h\xcf\x95\x0e\
+h\x95^\xa4\xe8\xdb\xb8O+e\xc1l\xd9\xbc\x22\xac\
+{^\x19\x98U\x8d\xb2qL5\xeeb~p\x80\x05\
+\x08\xa8\xce\x02\xa0\x04\xd4*\x13\x9d5\xa7\xa5\xaeo\xff\
+#\xba% \x04x]\xa9\xf5s\xd9\xb7y\xefl\xff\
+\x9am\xc6^\xb7f\x94\xa7'\x84\xcd\xc3\xf2\xc6\xb0\xf9\
+}\xff\x11v6\xeda9x!\x8d\x19\x19\xc0#g\
+\xbb\xce**\xa6\xbfz\xed;\xe9_L\x9f\x0e[\xc5\
+\xf1\x9a\xdb\xf6\xb9\xd4&xx2W\xe6y<=2\
+l\xd5\x18\xb0\xae\xa6\xdf\x0d\xeb\xb4\x09N\x08[\xc5\xe8\
+Z\xe0\xf2K\xeby\xdcJ\xf4w\x1ds'\xee\xfb=\
+kW\x81\x83\xc4\xc4\xf8gJ\x14t}\xc0\xcc\x03p\
+e\xc9Yk\xcfx\xf4\x0a\x1cl\xef\x19\xd6\x02\xf4\xa5\
+\xbf|\xecC_\xed2\xe7\xda\xfa\xe6\xf3ib\x9b\xf3\
+\xbfoo\x186o\x07\x17\x0d\xeb\x980\x80;\x8c\xbf\
++f&=KF\xf8[\x15\xe0\x03\xf8\x94\x9a\xfc}\
+\xd8Zz0}3\xac1q.\xd6j\xc3_\x9cb\
+\x82\xc1\xf8\x9b\xfd\x9d\xedk\xc3\xbas7\x88\xdbOZ\
+\x19\x14M:\xf2\xd5\x1dCL\xed\xbas\xdcu\xab\xad\
+wN*\x05\xcb\xc4X\xf0\x19\x1a\xa3\x01P\xce\xaf\xc4\
+\xc8I\xca8m\x05%\x17\xe5'\xf8w\x89\x97\x0c\xb8\
+1&JkH\xcd9\x0d\x1c\x80)&\x84\xc0\x9f\x86\
+N2\xd7*\xf3\xca\xaf\xc86\x85%\x1eMK\xc3}\
+f\xc0\xbc\xbbY\xd8\x0a\x08(U\xda\xfcUX\xe7\xd7\
+h\x8f,\xb3+a&\x10\xa3\xe5\xa26\x9d_\xf2\x81\
+E\xc3\xa0\xda_\x02\xc6hQ(U\xc0\xc0\x91H\xc3\
+\xd4\xb8sXW\xf2\x80\xc2n~\xad\x9aO\xcb8+\
+)\x03\xd4\xfc[X\x97\xb0t\xfe\xf0\xb3\x00-\xfc\xed\
+\xaa\x99\xc8s\xd4\xdf9\xa7\x92\x09\x89\xa1W\xfb\x0a\x0d\
+\x10] \xf8\xcd\xfc\x19\xfb\x11\xbf\xfb\x9c\xfc:\x9f7\
+&H\xc5+\xba\x1a\x8c\xe2\x85\x18\xbd_\x19D\xf6F\
+\xd1\xc3\xb1F^\x9c\x00@\x10\xf0\xba>\xd7\xc3\x1fR\
+\x92\xc2o\x04H\x0d\xddp\x0a(\xf5~\x9a%\x00g\
+\xffn\x9c<\xf7!s_%k2\xf8\x02n\xf7\xc5\
+\x8f\x1d\xe3F\x9f\xa7\xf4v\xbc\x1f\xf7?\xfa\x81\xc6\xc9\
+\xeb\xa8%0\x8a\xa3\xfb\xbd\x00^`?\x96\xc6\x8a\xbb\
+\xc6.\x0b\xfes?\xe9\xef\xeeo8\xd4ws\x22\xf4\
+}\xe8{\xb5n\x01\xea^\xd7&P\xa6v\xdfY&\
+\xf3\x8a|\x0bh\xfd\x07\x10\x88c\xb8\xa7\xe8\x8f5\xfa\
+\x90\xb1139P\x97!HE\xd5\x1e3\xf2\xe3@\
+\x8e\x13}\xacq\xf6:\xfe\xfb\x18\xe8\x8cm\x1cLt\
+\xdf\xe3\xa0\xb4 \x93*\xb594\xac\xcb\xc8\x09\xfc\xd4\
+\xf8sP\xdc\xef*R\xb1|\xdf\x853\xf0\xe7\x98~\
+7\x17*U\xd0_\xca\x8c\xb8q\x13\xe8\xe4\x81\xbc\xef\
+?3Ci\xc31\xe1F\x918\x19g\x13\xdcx\xcb\
+\x08\xdf4k\xaa\x87\xae\x02\xfb\xde\x91\x0b\xe1c\xb9\xe0\
+P\xe69:\xc6/\x1d\xae\xddqI-;O\x22Z\
+\xc9\xfc\xa8\xdaq\xd7\xff\x83|\x0e\x90M\x1b\xb8\xf6,\
+\xf9\x9c\xeb\x00\x92\xc9\xd7\xbeIm\x17\xeaZR\x83\x0b\
+H\xa1ep\xb3\x0cX]\xaf\x1a`\xaa\xf3\x97\x0d\xeb\
+6h\x19\xf6A\xed\xbf\x00\x06\xd79P\xe4\xab;\x05\
+\xb1<b\x81\x98/2\x052\xdf\x0el\x07\xc4\x08\xcc\
+\xc94\xa2\xd8\x0b\xa0\x1c4\x80\xac\x11\xf9\x1c7\xa4\xf1\
+\xf5\x9cj\xa2\x00k\xda\x1da\xac\x9c\xbb\xb4\x11\x16\x07\
+\x9d#\xee\xfb\x5c\xb7y\x96\x07\x1c\x0a>G\xa2\x10\x5c\
+\x8e\x0f@\x08U8\x0f\xda\xd2\x0c\xe0\xd8\x99\x1f\x1c\x86\
+\x14\xdb*\xed\x03\xa5\x05\x02K\xcc\x0b\xfb\x85u\x90@\
+\x15\xf15bYu\xdd\x18\x0b\xd4US|\xae\xfa\xb0\
+\xe6\xc1\xbc\xb9mX\x97\xd1q\xe0ynC\x1f\xdeb\
+\x84\xd8\x0f\xb3\x8bA\xd5\xaa\xa3Hf&F\xe9\xcf\xee\
+Ia\xeb}\xee~+\xac\x050\x8b\xa6\xc01\x0b\x00\
+R\xd4\xd6\xac\xc5\x9c\xbe\x11\xb6\xb6\xdd\xd2\xd6O`\xb3\
+}V\xd8\xfc\xf3?\x855J~\xcb\x84\xed\xce\xc8L\
+\xa5\xeb\x96)\xd6\x0f[\x86\xf82a\xad\xdd\xd8\xe2\x80\
+\x1d\x97\x14\xf3\xf3/\xfb`Tb7@\x83\x0a\xf6{\
+R[$\xe0\xb3_\xe8(\x9b\x00\xc7\xdc\xdfK\xf5\x9e\
+\x98\xdf\xd8\x06G\xe6\x86c\x17\x04\xfb\x1f' \xf8\xae\
+n\xbda\xa2y\xb5\xbe\x00>y\xfd\xb5.\x05\xe4\x97\
+\xdf].\xa8\xd5\xfb\xee\xb1\xef\x7f4f\x89\x0cE\xac\
+\xd2'\xb6L\xdb\xd2\xcf\xfcR\x8b\xca{\xa9Fc \
+d\xc0\xb4{r\xd8\xfc\x1c.?\xdb\x15\xb2k\xc2\x83\
+\xd6\x12\x87]tG<\xb0\xde\x8fvh\x05\x1ce&\
+\xac(\xc0\x09DN\xff\x12\xd6e*1<PS\x83\
+\x7f\x15\xa5&w\x9a\xed\xce+\x13k\xdb\xfe\x9b?\xef\
+\x9ea\xdd\xb8\x9a\xa7\x1c_@\xbb\xcc\xa2ue_T\
+\xbad<1\xa2\xec\x7fC\xb7\x13\xe3@c\xa7\xda\x98\
+e\x86\xad\x1ca\x01\x95\xc0\x808c^\x8f\xcc?&\
+\x0a E\x0d<M\x85\xcaHf\x89\x12\xe0A\xa0y\
+\x96\xbe\xd4\x07\xb2\x94b>\x0f\xa6\xeb\x87\xadm>\x8d\
+\x17\x15v%\x1bT\xf6\x8bb\x1c\x81\xdc\xa3:\xaa1\
+\xc7\x9d\xa3\x1b\xf0\xc5\x1b\xd2\xa1\xfbB\x06.\xbf\x93%\
+\x15\x7f\x95bj7^3x\x8dq\xf1\xcd\xb5\xff\xfa\
+t\xd5\xb0u\xfc\x0a\x108eQ\xc9\xc7\x18h\xcc\x85\
+'t\xe7\x8b@1\xb4'.\x90\xb5\xcf\x8fH \xee\
+{])\x88\xf1\xb6Or<\xedSJ\xd4\xbc\x02\xea\
+\xb4\xb1\xca\xfb\x9d~/\xac;\xd7C\x22r>\xbf\xa7\
+{\x85u\x01[j\xd3\x94\x16\xc6\xf3g\x9b\xf7\x89\xed\
+o\x86\xad5\xb0\x07\xa6\xb0n\xdd\x03`\x1e\xb50\x99\
+\x0e\x5c,l\xd5Xr\x1eT`\xc3\xcf\x12`\xe4<\
+\xdc|:\xac+!t.%c`\xfb+a)\xda\
+:\xad\xe2\x84\xdbkm\xaf\xbd\x9d\xfd\xab\x03'\x865\
+\x00t\xb6\xe6\x80/\x99H\x99e\xdf\xcb\x0fR\xcbO\
+<\x8e\xc8eR\xd1\xab\xb4R\x02\x8c\xe8b\x96dT\
+\x00\x96\x01{Q\xfaiN\x5c$l\x9d\x8f%\x02\x9c\
+\xd4\xfb\xf2\xf3\x00\xf1\xdan\xf2\x17\xf8\x09\x128\xc6\x9b\
+Hi\x94\xbe\xdc\xa2\xd30\x11p\xd0n\x92\x19\xcfq\
+\xd4^\xb5\x00\x8ed\xfcl\xfe;\xac\x03D\xd3_(\
+\xd1D\xf7\x9fb\xd4\xa5\x0d@K \xdd\xda\xe9\xeda\
+\x1d\xe0\x81\xf1\x95\xa5i\xbb\xeb\x85u~\xba\x9am*\
+\xfc\xa3h\xb6q\xe1\x9f\xf3\x13\xcc7\x00\xf1\xa8\x02\x8f\
+\x99\x00@S\xf2(\x10u\xae\xf1[$<$\x16\x1e\
+\x12\xb6\x02\xa8\xbb\x1b%p\xac\xed\xb48@)\x0d\x06\
+\xa8.Y\xfc\x0c\xf1\x89\x04\xc97v\xdf\xdc}\xb3k\
+\x13\xce\xaf\x13_I\xe0\xbe7\x19&\x98\xbdcfZ\
+|\xc4\x0f\x10\xaf\xc8\xbcc\xa4\xf1#\xed\x17\xae\xc7\xe7\
+\x08\xdcG\xd1x\xd7+\xc3\xee9\xd0\xfc0n\xde/\
+A\xa6$\xc1x\x9b\x8f\xf6\xdbQ\x13`\x9c\xe7##\
+`\x0c\xa4\xfd\xfb(\xb2h|\xf8\x03>w\xd0\x18(\
+\x06\xc3XR>\xc6\xab\xba\xaa\xd1f\x10?\x0d\x89\xa5\
+\xa6\x8d\xf2\xc4\x8e)\x9ab\xa2\x98\x05\xd6g\xad\x1f\xcf\
+%5O\xf6\x1f\x14\xd0s\x8c\xd5>z\x15P8 \
+9\xe8\x11\xdeP\xdb\xef)\xcd\x16\x98\x01\xea\x03\xfe\xd3\
+Wm\x81\xb3\x94\x1a\x5c\xb9\x0b\xcc8\xdcjI|>\
+`\xc1\xf7\x18H\xd7\xe3\xc1\x8d\xfdHG\x00`T\xfd\
+\xcf\x8cyM\x8cQ\x0c0\x07\xbe\xfam\xa3\x1a\x9bP\
+\x1c\x1bb\x1e\x02i\x1b\xa6q\xf4\xb3\xff\xbe\x9f\x0b\x08\
+\x92\xa8\xc6Z-\xb5\xf1\x16\x90\x0a\x14\xc6\x12\x06]\x05\
+\x04P\xc3\xb8W-\xd25\x93\x82\xe5\xfelh\xbe\x87\
+C\xec\xef\x95\x12Xp\xfe\xce\xc2\x86\xb0\xd9\xf0L\xe0\
+\x0b\xe6D\xb5!\xaaENu\xd6F\x94\xbcQ\xe7 \
+Z\x00\x90\xb7\xcf\xe4\xdfe\x1b\xc3\x1a\x8fl\xfb\xc2\xa1\
+\xab\xcc\x90@7\xef\xa7\xfe=k\x897/\x0a\xeb6\
+\xceQ\x8c\xef\x16\x99\x19\xe4\xb8\x1ao\x01\xfca9>\
+\x1c!\x9a\x026l\xdd\x058\xdc\x16\xaa\xd2\x03\xcc\x00\
+\x00\x01\xc4\x8e8\x8e\xcc\x8a\x03_\xb7\x00\x8c\x09\x0c\x06\
+\x0c\x04\x07\x86\x03\xc8\xfd;p<W\x08\xa1\x8dz\xa0\
+&\xc9\x08on\x1fv6H\xa3\xf5a\xbd\xd8\xc0\x89\
+\xedE\xa6\xec\xf5]\x80\x8f\x89\x92\x818\xf1\xbc\x1a\x7f\
+\x99\x1b\xaf\xa8\x8c\xa8a\xd6\x17J\xb2\x83\xd2zF\xd5\
+\xcb\xd2\x95\xaa\xed\xff\xca\xa0\xfe\xac\x8d\x16\x8a\xb6\xef\xb7\
+^\xadS\x19,\x22p\xda\x9f%\xc3\xa4\xb4\x0c\xcc_\
+\xcf\x8b\xc3\xcb\x11\xb0\x7fB\x92\xadc\x99{m\xb7\x88\
+\xa2E\x8d\xeb\xf1\x1d\x95QFW\xed`\xb6\x9d\xaa\x8c\
+\xbbu\xc9q\x97\x19V\xe2@<2\xd5_\xcb!L\
+Q?5\xd5EQ\xc3\xa0\xf9\xdb\xb0\xf5\xf9oo\x12\
+\xb6\xd6\xb6\x17%\x9c\x08\xd5\xb1\xd9\xff9\xd7}Q\xb9\
+\x05\xc8\xc9 \x98\xdd\xd3\x85j\xa9\xdf\xf8\xf3\x16@\x08\
+%\xbc\xd4\xa6\x13\x00l\x99\xb3\xfbt\x01\xa5\xe7\x87\x89\
+\xa1\xedlh/<n~\xff\xa7f\x0bj\xfa\xcbg\
+{Y\x97\xf9\xff\xb9V\xbc\xb4\xf6\xd7\x8e\xa7{r\xce\
+\xdf\x0ft\xc0\x9b\xe7\xca1\xf1\xfc\xc6\xee3\xce\x13*\
+\xc6\x99q+\xed\x09Trj\xce\x80\xc9\xd8-\x7f\xa6\
+\xcb\xa4'\xb3\x85\x03;]w\xb6\xeb\xad\x0e\xfa\xe6\xad\
+\xb3\xbd\xa5s\x94\xd5\xde:\xe7\xac+\x81w\xbeo\xba\
+eX\x97\xa1\x97!J\xe0\xa9\xda\x98%5Z\x86\xb6\
+\xb4\x1dP\xa4\xb34\xa0\x98S\x09\xbc\xd5<\xb4\x1ee\
+\xf8\x5c\x0fU\xfb\xecw\xefz\xa9\x92\x17\xd0\x17\x81\xdc\
+\xf3\xd7\xfd\xb0\x02\xbe\x5c\x0fj\xa0K\xb4\x8e\xc3\x05\x80\
+\xb1\x1e\xed\x17\x80\xd7\xa1v\xb9\xfa\xc6\xdb\xcf\xf4)\xcf\
+.)\x05P\xeaZ\x80\xf2\x9e\xcc\x8aj\xdf\x86q\x81\
+\xda\x1f\xabt\xdeo\xa6\x0b\x86\xad\x14\xe2\xed\x0f\xc2\xe6\
+\xd7\x97\x86\xe5\xfe\xff\xcbk@\xa4\xfd^\x05\xb6\xc90\
+iL\xb5\x87$ \xf1\xf6\xae\xb4!\xf81/\xcf\x92\
+\x9e;\xe7\xf9\xf5\x82d\xe2<+\x8f\xfb\xdd\x0a\x00\x84\
+\xa2FhjTW\x8al\xb3\xd6\xc4L\xe7\xf94=\
+ l}\xeeD\xd6*S\xfd\xdbak\x7f\xfb\xdd\xcf\
+\x86u\xa2\x8f\x9f\x0c[\xb5\x1c\xaa4 D\x08\x7f\xb8\
+\x06p>\xbf\xda\xf0\x11\xa1\xbc]X;\x8f\x9b&J\
+i6\x00\x92Stu\xbaY\xd8\xfc\xf3\xcf\x84u\xa2\
+s\xc4/3\xc1$\xd0\xd9\x9e7\xac+\xe1\xd0\x15\xe1\
+\xc4\xdd\x87\x03\x08\xa7\xd1\xb1\xfbA\xd6\xa4\x9f\xb4\xf8?\
+\x15\xd0+\x1d\xa3=\xa3\xc66\x03\xef\x02\x12\x7f>E\
+\x17\xf3\xf3\xf6\x9e2\xdb\x93[\xdb\xd2\xd9\xd6\x1a\xed\xed\
+\xe5\xb6\x97\xdd^\xae\xbb\x9f\x1b\x85u\xa5I2\xd7\x19\
+\xf8\x16\xa3\x8c\x98dj\x05\xec\xce\x13\xd6\xd6\xeb\x12(\
+\xab\xd9O\xc6P%\x92\x00\x85J\x04\x9c\xcb\xc4\x19\x01\
+\xf0\xba\xa3\xf0\x8f\xadOm\xee\xf8\x172\x98\x98aY\
+zS\x00\x10\xc6@\x8a\xe4\x15\x10{\x8f\xb0\xb5\xddg\
+\x01\x05\xba\xf2\xf0s\xec\xb3\xce%m)1u07\
+]\xafL4\xea<\xbfL\x09C2\xfd\xa6\xff\x08\xeb\
+\xba\x88d\x9b\xc4\x12\xa7\xc4\xb4J\x86R\xa9\xff\xdb\xb7\
+\xf8\xab\xfc\x07\x1a1\xc6\x93_\xcbop.\xf0\xf7\xf9\
+'\x80Y\xff>t\x93\xa9\xd2/\x8c4~\x95.S\
+\x12)\x006\xd7\x15\x05]wl~\xc5\xe2\xb7\xbd-\
+KM\xf9\xe3\x09\xcc\x96\xd6\x11M\xb0\xf0\xeeNI?\
+dQ\xaf\xffRK\xd0\x01\x1cOo)\xc4\x88?\xce\
+H\xa6\xe8\x81\xe6\xef\x8b\xafh\x84}k\x00D\xf8\x8f\
+\xfcf\xe7\x93\x04M\x96ZT\x00>\x8a4;7\x9c\
+\xab_\xae\xc4\xe1r\xbe\xf2\xf3\x04\xda\x98\x99\xfc[\xe3\
+F\xfc\x18SYm\xbc\xf1u.x\xaec\x97\x80\xa1\
+\xc4\xa1\x98\x09C\x97\x86\xb1\xdbUi\x00\x09\xa41E\
+\xc4\x95\xe2Q\xfe\x91n\x08\xae\x03\x03\xd4x\x8c\xcc\x89\
+\xb1+\x9d\xfb\x177z\x0e4Z\xac\x17\xdf\xcb\x7f\x19\
+E#}\x9f\xfb\xcf\xf7\xef\xaf\x07H\xb4\xe6<M\xe7\
+|m'\x03 \xf0\xc0\xa9\xdb\x9a\xf8\x88\xfb\xdfoS\
+iUg\xa7.\x0fY\x01 \xb8@\xaf\xa9N[\x17\
+:\x06\xc8\x80\x03L\x04\xffn#\xcb\x07Q\x81\xd5\xd8\
+v\xcc\x80\x8e\x0c\x83\x91\x19\xf0\xed<\x90\xbe\x9c\xedZ\
+\xae\x9b\x0bi\xcc\x5cR\xf9\x17P+-\xf0\xef\xae\x17\
+b\xe8\xf7j70+ K\xc6_\xc0\xcdA\xf9\xe8\
+\x22\xae'\x93^\x81\xdf\xc9\xa5\x02\xbaL\xd4\x9c\xb0\xde\
+_\x812\xb1\x8b\x1f\xe7\xf5\xd0v\xf8\xafD\xc8\xd6\xcc\
+\xff\x120_\x223\x9e&\x8eq\xbeD\x01=\x8b\xe3\
+vj\x026\x90%\xe3\xf9\xef\xd9\xb6\x82\xfa\xbf\xc0\xf7\
+\xf0%\x10,\xca\xdb\x9d\x12y\x168'\x05\xaf\x80\x0d\
+\x81\xea\xa7\x13)\xf5{\x80\x8a\x8chf\x846\x8f\x0c\
+\xeb\x1cr\x99\xd0W\x84\xa5c\xddQ\x88\xebyp\xf8\
+\x05\xf6)\xc6S\x00An\xacU\xa3\x98\xb5\xd5\xa3\xa8\
+_\xf5c\x951\x00\x10p\x943`\xac\xf5\x80a\xe0\
+\xdf\x01\x0d\x0eh@\x91y\x92\x99\xb8\xcaHc\x16@\
+z\x8d\xa3\xcf\x97\xe14\xaf\xccC\x81\xbd\x83\xcc\xab\xf5\
+9\x8a\x04\xaa\x19N\xc4\xbe\xd4\xf4mx\x0e\xc6\x91\x12\
+\x85\x82\x96\x0eJe\x9eQ\xe2|\xbe@\x19\xc5]F\
+\x22\x01\xc0\x02\x02P$m\x94\xf6\x09\x19D\x19g]\
+\x22\xac\x1fj\xc2j\xdf\xec_\xb4\x03\xf2\xb5\xfa\xd9\xab\
+\x9d\x12\xe0gF\xb5\xe6'\x87F\xe0\xbf\x8a\x13-H\
+\xb5\x038\x1d\xa3\x9a\xffj\xd2S\x1d~\xf3\xa6\xb0\xae\
+\x7f\xbdn\x05\xa8\x90\xda\x15&\x15R\x00\x0c\xe9\xad@\
+-\x03\xff\x0a@\xb5\x93\xf2<\xfe\xbcY\xa8_\xcf\xd6\
+Q;\x950\xa95\xd7\x0e\x8a\xe3\xa9\x1b\x81\xeb$\xf6\
+\x84y\xf1\xc4\xec\x0f\x8e\x22*\x80\xcc\xe7X%\x04'\
+/\x07S\x1d\xac\x80I\x8c\x8a\xcf$\xf2\xcdq\x92i\
+P\xe2\x90\x8e\x5c\x01b\xd4\xdd9\xca\xd9\x87\xbb\xd4\xd9\
+\x01C\x198\xcfn\xf5\x9f\x87c\xcd\x91\xab\x1a^T\
+\x5c\x8e\xed\xb0\xdeKM\x1b\x85P\xcd\xa9\x0c\x83.\x09\
+4N\xd4\x9ag\x1f\xf7\xcd\x9f\x87\xad\xed\xcb\xcaq\xc6\
+\xd4\xd1\x96*\xdbH\xd5\xf7\x18G\x8e+\x80\x11@%\
+\xe0\xe5\xa0\xe5>\x86Y0\xbdb\xb6\xe8:\xb0\x9dm\
+o\xcd\x94\xfa}e\xe8\x22\xdf\x12\x99\xe2\x17\x84\xcd\x1f\
+\xf7\xec\xb0\xae\x84 \x19$\xc5\xc4Rc\x9f%'%\
+\xde\x9a%6\xc4\xc9\x0a(w\xee\x02\xac\x9c\x97\xc4\xd9\
+\x883\xe6z\xa96}T\xf4s?\xab\x8c\x1c@\xd3\
+\xfe\x92\xa5\x03\xf5\xfdY\xeb\xbe\xef\xf5\xcd\x8aQ4}\
+=l\xfe\xf9saM\xad}\xb6N\x13%\xf7\xdb\xcd\
+\x97\xc3\xe6\xcf\xb9f\xd8\xban\x8a\x92\x9c\xcc\xb2\x12\xf9\
+J\x06\x80uM\xab\xc0\xfe\xb4\xf9\xf8l\x1f\xeb\x1c\xd4\
+\xb1f7\xf7\xef\xe6'}'\x81\xe2\x0b5\x80\xecy\
+-`\xcb\xcf/\x87\x16\x93%\xd4\xd5\xef\xb8\x9es\xd3\
+s\xc32\xa09|\xedV\xb2\xdb\x0b\xebj\xd0\xb3d\
+F\x17\x055\xd0\x9b\xbd\xb0\xae\x8f|2\x14\xa6\x0f\x86\
+\xb5\xf6s\x8b:<FSvM\xd9\xfcF\xd8\xbao\
+\xc9`W\xd7\x86\x5c\x97\xd4\xfeK\xa4\xf2\x0f\x97\x8c\xb8\
+s\xca~\xa5\xc4c\xba\xdcl\x97\xef\xc45\x1f\x16\x96\
+\xfb\xf1\xcfw\xc0g\x06\x9c\xa8\xda\xdb\xaf\x86%c\xe0\
+\x84\xf9\xb8|\xc6\xde\xd1{\xcfh~\xe9Rr\x9a\x14\
+\xf7\x03o\x0b\xeb\x80\x02b\x93\xe6\xe5\xa0\xca\xcd\xef\x9e\
+w\xb3\xcb\xee.\xdb\x80\x81\x8b\xef:\xf1d\xa5\x1c{\
+\x8f\x0e[EI\xb7w\xd9\xdey{\x97U\xa4uz\
+OXW\xd3\xfdk\xd9\xb6X\xa0\xc9\xdf\xa1\xad`\x9e\
+\xbd*KU\x88B\xe6\xf9Ym\xf9\xac\x07\xda-\x18\
+f\x02\x16\xfb\x86\x9a~@}\x06\xf8\x00\x88b\xd0\x09\
+TQ\xfc\x01\x0c\x18F\x808}\xee\x05r\x98Y\xc9\
+x\xab\xf6x\xfcp~E\x8a\xe5\xd5>\xab6>E\
+P\xa7\xe3\xc3\xe6\xcf\x99\xc2V?\xa6\xba\x93\xf0\xf7\x13\
+\xf8o\xe2\x97\x0f]\x81\xbcjS\xcdOv}\x00)\
+\xe3\xec\xfc\xd7}e\x14%\x15\xf8\xcb4\x0b\xe4\xa8\xfb\
+\xf3k$*%\x88\x9c+\xfc)~y\x8adW\xc0\
+&\x00\x14\x10*\x81\xf9\xeb\xa1\x0b\x84}\x8f\xe6\x90\xb6\
+\xbd\xf6\x7f\xa5\x8f\x02\xf2\xdc\xd7\xaa\x14Af=\xb56\
+\x0eR\xab\x1fk\xf4GM/\xfe\xffP\xe2Y\xafC\
+\x09w\xa9\xf8\x1bG\x01\xbd\xf7\xf3?\xc76\xe9\x02W\
+\x81\xf5X\xda!`\x05\xac\xf0\xcf\x94L\x02\xaa\x88\x18\
+Z\x07\xee\xd7\xf3\x90\x81W\x02\xe9\xf7\x02w\xfe\xc9\xa8\
+- >\xe4?\xf2\xa7=\xbf\x91A0\xb6\xc9\x1e5\
+\x0a\x86\x00\xfc\xa0\xee[\xd6\x8d\xcf\xcbq\xda\x1c\x16\xb6\
+\x02_\xfc\xbc\xd2\xce\xc2\xc0\xe3\x97\x12i\x07Tx\xee\
+\x12d\xf9\x5c\xf7\xd7DC\xfd\xa0\xe2\x7fF\x22CJ\
+\x03\xd6\xfe\xf5g\x15E\x00\x04\xb8a\xff\x19H\xff.\
+\x00\x1e\x99\x05\x87\xb6\xc6i\x8b\xa3xr\x06\x5c\x97\xed\
+&\x98\xbf\x07P\x0c\xfd\xcc\x0b\x19\xf2}(\xc3\x83\x98\
+C\x01\x13\x10\xb2\x91r2\x8a6|5\x1f\xac@i\
+\x14\xef\x1b\x11\xad\xb1\xef\xba\xfbs\x1f\x90+\x0f\x00B\
+(\x13)\x00\xe18\xb9\x0f\x0b\xd1\xfd\xf9\xbc\x1f\xe5\xe7\
+\x9d\x9a\xcfC\xdf\xd0\xf7&U\x14\xd5\x5cM\xd5H\xdd\
+3\xa1\x896\xfdW\x06R\xc4\xcc\xc6\x0d\xeery=\
+\xc6\x8d\xc3G\xd4\xe9\x8bY\x92!`\x06\xd9\xc8$\x5c\
+=\x03\xb4{df[\xe6\xd4\xfdB\xe6o\x98\x01\xed\
+\x8d\xa2cq\xa7\xea\xca\x91\xb6\xd09\xe4jQ\xdf\xb5\
+\xb4\xe3\xa9\x8dg\xa4\xf8\x1d\x1d6\xbf\xef\xf7\xc3:\xed\
+\x06\x8e\xf6\x15\x13\xd1\x15\xb0\x1f\x91\x01\xf5\xf5\xf3}6\
+\x1e\x01;\x04\xd6s\xb7`-l\x00\x81\xc0\xd4\xf3E\
+\x85u\xf0b\x06(eA\xf97\xcf03l\xcc\xe6\
+\x7f\x0f\xa0\x9d\xbf\x9b\x17\x9e\xaf\x0d*\xe7-\x8d\x86\xaa\
+uv\xdf\xae\xd7su`\x8f\x9a\x01\x98\x1c\x0eH\x1b\
+*\x910\xe2>\x09L\x14\xa3'3\x062i\xf5\xfd\
+#\xd3\xc8\x019\x00i\xd5\xef\x16\xe5\x90\xb6\x80\xe7\x00\
+HH*|\x89\xb7\xa1\x1e\xaa\xe9\xe7\xc8\x10\x91\xa4\x9a\
+n\x1e\xdbg\x1cT\x0eD\xf3\xd4\xf8s\xe8\x05\xe6\xd6\
+\x97}TF\xff\xae\xcd\xea\xf7\x05\x0c\xa4C]\x9a\x01\
+\xc4[\xec\x07\xe6\xab\x80[\xa6.\xfbt\x170\x05 \
+0\xaf\x13\xa0)U~\x80\xab\xae\x16Y\xb3\xbb\xfbA\
+\xd8<].\x18\xd6e\xfa3\x10F\xdd\xd5\xfem\xf3\
+\x8fa])@\x96 T;\xbct\x0c\xb5\x0d3\xbe\
+\xd5\xb7=\xbfo\xf3\xc5\xb0\xce\x01:\xb14-Z \
+0=rz\xf8\xf4\xf0\x1c\xd79\xb0\xd9\xbe\x22\xac\xcb\
+\xfc\xca,\x01\x88\x92\x1a\x18\xcd\xb6Z\xdb3\xb5\xf5\xcf\
+h\x5c\x85\xca\x846\xaa\xee\x81U\xe3\xc0\xfe\x5c\xaa\xf7\
+4\x1b\xb2\x96\xbc\xda6f&\xb42\x92\xe6cR2\
+\xab\x9d\x1e\xa6\x02\x07T\xc9\x11\x91\x9eG\xef\x1e\xd3\xa8\
+\xae\xe9\x10N\x97\x99m\xfe\xdc\x03?\x99\xed\xa7\xab\x06\
+B\xdb\x05\x8e\xec\x006\xc0L\xf6\x15\xaf\xe7\xc4Q\xc7\
+\xac\x88\xeb\xb9\xc8\xaaeR}\xd7e\x003\xe3\x0c\xc8\
++\x80\xd0\xb9\x98\xb5\x952\xef\xf6\x09\x99\xe5\xcd3\xc3\
+:\xe6\x81\xfb\xca\xcce\x01NT\x88\xf5/N \xa5\
+Jpr=\xec\x1e\x17\xd6\x05\x98\x00M\xe7,G\x08\
+`\x95\xb5\xbd\xf5\xef\xe6\x9b\xee\x1a\x8f\x0d[\x99\x0a\x1c\
+ \xda\x185OQ\x9bed\x89\xaa\x01(\xfd;\xc7\
+2\xb5\x83\x0a\xc0\xfaq\x83\xd2WG5\xa8\x9c\xf3\xf9\
+\xb2\xdd\x9bm~\x0e\xd3\x9f\x87\xad\x01)?c\xf3\x89\
+\xb0\xb5\xed\xe1trX>\x9f\xe7vm\x94\xb5O\xbb\
+_\xb35p\xe4\xc8F>\xfa9\x19\xf0<`\xcd\xe0\
+\xc6\xaa\x89uS\xa2\x94(\xe2Y{?\xfdMX\x97\
+\x01M\xb1\xd0V\x12\xf0\xf8u\xbf\x9a\x1e\x13\xd6\xb5\x99\
+\x03\x04\xfdN\x8a\xeb\xd2\xee \xde\x8b\xf1\xe1<Sb\
+\x97\xe3Y]I\x92\xd2>\xfd$\xacc\xc8q\xd4\xf9\
+o\x09\xfcL\xef\x0f[3\xa2\x18T\xb5\x7fEW\x83\
+\x9bw\x8c\x8e,\x15\xd9>'\xac\xdb\xbf\xcf\xb3\x8ck\
+1b\x22l\xdf\xad\x8c\x84\xe9\xa7a\xf3\xe7\x5c!\xac\
+\xeb\x06\xe0\x1c@\xa5\xbdm\x02~\x01\x9b\xfe\x5c\x0b \
+\xdb\xbc\xd9=`y\x0e(\xbc\xdb\xdf\x09\x9b\xaf\xf3\xfe\
+a\xf3\xcf\x17\x09k\xc0\xc5S\x1ap\x91\xc0\xee\xf4\x9f\
+a\x1d\x80\x93\xfbV\x01t\x18\x8d\xe7?kw\xa8\xe9\
+\xd5a\x9d\x7f\x95@F\xf9\x15\x80i\xe7vv\xad\xa9\
+\xc0?\xbbsT\xa6\x9e\xbf\xe5\x9c\x128\xd0@\x01\x10\
+c\x18R\xbf\x07\xccY7\x18C\xfc#~\x8b\x00Z\
+@Hd\x92_\xab\x9b\x08\xc0\xc0y\xab\x942\xdb;\
+\xd3\x9e\xa9\x80\x1d\xc0\x8c\xa1\xe1y\xd1\x02\x01\x08\x0a\xdc\
+\x89\x5cSK\x97\xc9u]\xee\x93_\xce\x1fRK\x9e\
+Z$\x05\xc0$0X%H\xe6\xafn4\xde\xcf\xaf\
+\xe0\x0fH\xc8\xd9\xdf\x9d\xf7\xfe\xde\xef\x01\x94\x9e\x7f\xae\
+\x7f\xfeT1\xee\x22*\xfb^+%\xf9\x9b\xa6a\xa2\
+6\x9e_\x8b)\xc5\x0f\x1c\x13\xa2\xf6Yq\x89\xff\xf8\
+c\x83\x98y\xf9Y\xa9-qP\x977~7\xffP\
+i\x0a\x8a\xbb\xef\xe7O\x0e\xed\x09\xebs1\x80}\x9e\
+\x00\x1a\xa0\xe1\xef\xc5'\xfcX\xf3\x8d\x9f\x8a\xe1#\x03\
+\xcf\xbf\xe5\x7f\x88\x0f\x87\xae$\xc5\x00\x00\xe0\x8a\xf3\xf8\
+\xd7\xe2X~\xff\xf8_!\x87\x83\x96\xdb(\xee=j\
+'\x18o\x09N\xa5\x02\x03\xa3\xb44R\xde\x1c\xd6i\
+\xb9\xd0\x22\xf3\xbc\xccs\xd7\xed\xb9\x03,\x0a\x00\xa0\x01\
+\xd0\xab=\x9e\xb6\xb6\xbb\x89\x8a\x91\xa8\x19\xa9\x0c#\xc7\
+\xf2\xec\xc4\xcc\x0e\xc9\x0b>m\xadI\xab\x1ak*\xc1\
+\xde/\x80\x11\x08\xa0\x90\xa2$\x13Q\x1bK\x0fFj\
+\xf2\x80\xec\x94\xc8\x9e\xfb9'5\xc7Q\xd5qP\xc3\
+,\xb1\xb2\xeb$\xb3`T\x87\x84\x0c\x99@\xe3\x00{\
+\x00\x102\xc8\xea\xa0\x92Y\xd4J\x81\xfeH\xf9\x10`\
+\xa3\x14g\x1f\xe9\xda\x98\xbd\xda\x80\xc7\xda)\x00\x83\x0d\
+\xe9s\x05\xcc,\x13\xe3\xb0\x1a\xd7E\xa4C`r\xe3\
+\xcc\xf8\x0a\xd0\xdd\x8f\x8c\x10J\x93\x0d\xf8\x87\xb9\xa1\xd8\
+\xe0\xaf:\x88#]&3\x8f\x027\xed\xf8,<\x14\
+\xf7w,\x22H\x8d\xe2\xfb\xa9.\xf3\x9a\xa5\x03\x95I\
+M\xb1>\x99\xf1r\xb8R\xed\xb9\x18\x03\xb9\x01\x97\xb8\
+\xdf\xaf\xa6\x03|\xb1\x04t\x5c\xcfU\xb2\xcd\xde\x1a\xb0\
+/\x19z5\xad\xc6\x97\xc3\x83:g\x03r\xdf2\xac\
+c\xfb?\x07#\x04\xdc\xebXr\xe0\xf7\x80\x17\xeb\xcc\
+\x86i\x9e\x01\xaa\xa8\x91\x0a\xf0\xad3\x7f72n \
+\x91\xae{@\xfeK\x9d\xda<v\xf0:x\xfc>\x9f\
+{\x01\x17\xfa:\xab15\x8f\x1d|\x90\xee\xdc\x17J\
+\xec/\xa9t\x15\xf0\xa2\xc2\x8d*\xa8\x00+\xbf\x07\x18\
+\xa0\xb4;h\x04j\xe9pQ\xeb\xd7\xd6\xae2|\x1c\
+!\xfbS\xf6\xc7\xae\xcfs\xe0'pP\xc0!FJ\
+:\xb25\x1f\x9f\x14\xd6i#<a\xc9\x94W\xa9\x82\
+\xfb\xca\xfd\xac\x80\x0c\x01.\xe4\x97\xc3\xa0\xcfkf\xc2\
+\xab\xdb\x83\x8c\xbfL\xbd\xb6fY\xc3Z\xda\x17\xc9\x5c\
+\xa8vE\xda\x1f\x1d\x17\xb6j\x0a\x08\x18\xabF2\x03\
++\x19\xae\xed\xe7\xc2:\x95\xffG\xe6\xe7\x99\xd7\xc4\x02\
+e\xe6r^\x15\x92\xff\xbcfk\xc6\x9dc\x82\xd5\xfb\
+\xec\xe59\x1c\xf8\xaf\x03'\x1d8\xa9\xa9}\x9f\x12j\
+\xdf\x00\x8d\xcd\xc7\xc2\xba\x83\xd8y\x905\x81\xd3\x0b\xc3\
+\xba\xf6o\xa9J_bt\x18\x04\xc4\xffd\xde\xf4\x83\
+\xd6\xe7\x9bh\xdd?.5\xe1\xbb{\xef\xfeg\xb4e\
+\xdc\xdd&\xac\xdbG\xf3\xb5\x0eh\xed9_\x1b\xb6R\
+\x80[\xdf\xf1\x87\xaf\xcc\xa8\xe6\xe0\xcc\xebf\xfa\xd8l\
+\x1f_\x03\xc9\xcd_\x86\xe5\xfa\xbfB\x97\x19\xcb\xf9\xd9\
+\x9e\xe3\xef%E\xfb\x01]\xc65\x9e\xff\xebS\x03\xe6\
+\x87\x9d\x0a\xb7\xf3\x88\x83\x91bU\xbb\xab\x87\x1ey\x07\
+d\xe7\xfbZ\xad\xf8WS\xdc\xec\x91\x99\x99?q\xfd\
+\xdc:w\x05\xec\x18\x00\x8f\x09\xeb\xe6)\xaa{\x96b\
+T\xf7\x0cb}2\xf4\xd9\xf6\xb12\xaf\x1cF\x19l\
+\x99\xb6\x0c\x18\xaa\xbd \x80^\xf7\x165\xb2\x99\x01\xa4\
+eQ\x19t\xa5#\x19 \xd5\xfb\x88\xc8\xe6>\xbd\xf9\
+|\xd8\xba\x0eK\xcc03\x9d-\x80\x8eR\x8a\x9f\xce\
+vf\x02!\xb7\xcasb\xde\xf7\xa6\xaf\x86u\xe2\x8d\
+\x09Xl?\x16\xb6\x9e'\x9b\x7f\x0e[\xd7\xc9t\xf3\
+\xb0\xb5\x86\xdc\xf5*\x15\x00\x00\xb4R\x83c\xd6\xf1\xd4\
+\xce\xb1\x05\x90s\x807]<\xacsLs?\xad\x00\
+3EE\xa7w\x87u\xe7\xcc\x8b\x9aU\x00\xa6\x0bI\
+\x01\x88\xb4*r\xff\xb0\x7fU\xa9\x8b\xd2#\xfb\xae\xae\
+8)&\xc9\xff\xd8<=l\xfe\xfc3f\xfb~W\
+\x92\x84\xc1\x13\x0c\x8d\xcfw~@\x06\xa4\xd3o\x86u\
+m\x04\x05\x0a\x09dM\x8f\x0b[\xe7\xf3\xf6\x1ea+\
+si\xef\xc9{O\x0a\xaa\xfe\xbeW-m\x13\x1b\x93\
+cv\x90\x0f<8\xac\x95\x00-\x99\xf8\xc7.L\x02\
+\x8c\x91j\x1b'\xf0\xfc\xce\xe2\xefM\xb7\x9cn1E\
+\xad\xfbu\xc2\x1a\xd5yQ\xd1\x8f.\xf4\xc1\xdc\xbal\
+p\x05\xe6\xeb\xb8\xd7\xf6\xde\xdb{%S\xea\x89\xeb\xb9\
+\xcf\x7f\xc3|\xa9v\xb1\xc9\xac\xa8\x92\x94\x5c'\xf5>\
+~Qj\x10\xd5\xfb\xf8\x03\xfc\x13\xfe\x87s\xd2~\xa7\
+]`2B\x04\x98\xb4B\x00\x16\x05<\xa4\x18o1\
+\x14\x13\x18\xdb\x1d\x1f\xb6\xbe\xaf4XP\xec\x130\xaa\
+\x921\x0c\xb8\x81\xaa^\x8c+\xc0\xa4R\x04\x0c\x01L\
+H\xf7\xc5\x1fOF`1h\x88\x0a\xd2\xc6\x91\xd9\xa7\
+\x09\x90\x0c\xddb2`0\xd1F\x90\x10HFZ\x9d\
+W\xfcn@\x80\xd2<\xa2\x7f\xc6\x95\x1f&\x10\xe4o\
+\xfa\x19\xa00f\x96\x95*}`\xf7\xc1&j\xf7\xf9\
+\xe6\x91\x97\x1f_\x8cb\xfe\x9f\x00\x90\xa6\x81Zxq\
+\x8b\x80w\xecZ6\x00\x19\xa3\xf8\x5c\xd5\x96\x8b\xa3d\
+\xd8\x05\xa2\xe6\x91\x04\xa7\xfb\x05\xdc\x89\x83\xc6\x04\xb0\x00\
+\xda\xbe.\xe0\xe5gjG8\x02\x08\xde/Cn_\
+q\xfd\x00\x1d\xdao\x87\x84u\x81\xb6ye\xbde\xdc\
+Z\xed\x09\x8d\x93\xfb\xf0\xbd\xee\xcf\xcf\xa7\x9eU\xf3\xa0\
+\x12\x5c\xe7\x09\xeb4D<W\xe3f\x1c<\x07\x80\x9a\
+W\xef\x1b\xa8\xf8\xc5\x9c\xc8\xbf\xdb\x9c/\xac\xfb<\x01\
+|\xfaY\xa5\x95\xb6?\xac\xdb7\x8d\x9f\xef\x13g\xfb\
+o|>\xf9<\xf6\xd7\x00x\xd5\xde\x0fB\xb4R\xe4\
+\x97\x07>\x8a\x88\xf9;\xc8Q\x02\x07g\x11\xb9\xfa~\
+\x17@\x1e\xdeH\xd3\xa0\xd3\xc4\x00\x00 \x00IDA\
+T\xe1\xab#7f\xcc9\x1c\x90\x13\x13tU\xb9_\
+2\x0e\x1e\x98\xc0\xc6\xe7\xa0F\x8d}\xcd}\xde\xf8\xf3\
+\xf8\xba\xaa\xa4\x9fU\x84\xd0\xeb\xa0\x9a^\x0e\xff\x8d3\
+cm\x03\xb3\x80\x5c\xaf\xeb\xf1\x9f\xc0\xdd\xb8\x9a\xf8\xee\
+c\x9c8~oB\xd8XG\xad\x81C\xf2{\xbdz\
+N\xdf\xa9\xcc\xe6Y\xd5G\xc7\x00\xf3\x12\x19\xa8\x8em\
++d\x22\xbc\xcf\x82\x92\x91\x1c\xd5\xdb9\xa0D\xf7\xbc\
+?\x0f\x96\xcd\x9d\xb3f^\x1b5j\xe6\xcf\xccZ\xe3\
+\xa4\x18\xd6}\x9f\x985EI\xbd\xacya\x1e\xd90\
+s\x83\xdf\xfc]X\x17\x80\xde-\x91n\x9f\xe7>/\
+\x9d\x01\xdd\xc8\xd8\x18D'k^\xe5sE\xb1-Q\
+G5a\x0e\xba\x91!\xe09\x0a\x9cr\xden\xce\x1b\
+\xd6\x8d\x9b\xe7\xee\xf9\xc88\xa9m\x15Hr\xf8 \xa1\
+\xda\xea\xd8\xb0\xae\x13\xd6m\xe8\x80$\x94{\x99k\x1b\
+\x02\x80\xc8\x86;\xf6M\x07\x5c\xe9\x96\xf0\xdc\xb0\x0e\xb9\
+6\xaeT\x96m\xd4\xda\x08\xda\xa0\xcdG\xf3\x1d\x12\xae\
+\xc6;\xd5\x99\x8b\x89\x91\x19Y\x81w\x89z9(\xdd\
+? 0kQ\xabO\xbc\xda\xcb\xb5M\xd1\x22\xe2\x97\
+\x8eW='Te\x815\x11?j\xc6Yk9\x87\
+u\xb3u\xf3\xc2\xba\x06x\xf8\xd9}\xfa\x8f&\x02m\
+\x0a]&\xf4\xc35\xdf\xd5\xf2\x03V|\x0f\xa0\x80\xa3\
+\x97\x88w\x95:\xa0Lj\x0b\xc8q\x7fv\xd8\xda\x17\
+\x5c`#3*\xa3V*\xed\x09\x5c\x10\xbb\x12\x90\x95\
+(\xdf\x13\x17*n\x13\xb9\xbbd\xd7\xae\x89\xa3\x84\xaa\
+O\xad\x9eH\xda\x1b\xc2\xd6u5}(lm\x9b\xb7\
+9aQ\x87\xdf\xdee\xb6\xa3\x1au\xb9e\xae\x8a\xf2\
+\x9a\x8c\x99\xcd\xbd\xc3\xe6\xbf\x7f[X\xb6\xa3;$3\
+\xfe\xbf\xbe\x06p\xe5 (U!N\x96\x8e\xde\xee\x8e\
+ak&\x07Sa\xfe\xde\x85Q@\x0d8)\xb62\
+\x14\xd55\xe16a]f\x0b@\x88\xca{\xdb\xddm\
+v\xb7]\x1d\x97\xe9\xcda\xf3\xf6yZ\xd8|\x9f\x8d\
+\xab\xdf\xed\xdf\x91?\xbd[\xaaf\xdf\xba\xab\xb1&\x9a\
+\x9b\xc8\x7f\x0b\x1co\xb12\x03Z\x9e\xef\xb9]?v\
+\x0e\x16\xa0\x96\xea\xbc\xcc\x12\x00@f\x88\xcaw\x02\xba\
+Uc\xee\xfe\x9d\xbb\xf6]\x0c\x9aT\xab\xe7h\x13\x0f\
+,\x07)\xcf\x89\x9a7\x98(\xc4T\x01\x822\x1b9\
+O\xec7\x18$\xf5{\x00}\xae\x0f\xaa\xf1\x9b\xa7\x86\
+uL\x1fL\xa3,\xed)\xc7\x1ee\xd69n_N\
+fI\x95\xb0\x98\xcf\x09\x5cW{J\xb5\xd1\x02\x89\xbf\
+X\xda/6\xb8\xf0#\xf9|^9?\x9f'\x87\xad\
+\xebS)\x856\x87M\xf4\xf1\xf2k@\xaf\x1b\x83\xda\
+dby\xd3\xb7\xa2\xb1\xddZ\xeb_\x22_\xe7n\xaa\
+<k{D\xda\x09Jx\xac\xd7\xd4`\x00\xa0\xec\x0e\
+\x0f[\xb5\x06\xea\xef\xb4\x0f\xfc\x83\xb05\xa3[\x01\x17\
+\xa07\x01\xaebXe)@\x05\x8a\x80z\x19\xf7\xac\
+\xb1\xde\xbej\xfb\xea\xed\xab\xdb\xf75\x11\xbc\xe9\xf4\xd9\
+\xbe\xbb\x02\x17\xd3\x11\xd3\xd5\xa7\xab\xb7\xb6\xbdK\x89N\
+\xb6w4o\xa6\xdb\x86u@\x1em\x06\x1a\x0bY\x12\
+T\x94w]\x0d>\xb0\xf9\xe0f\x0e\xb0\xf6\x9e\x19\x96\
+m\x83\x7f\xa9KxD\xef\xab\x93\xdb\xf3}y{\xbe\
+\xf7\x5c\x98\x89\xd6i1a\xb2\xad)\xe0t\xf3\xc6\xb0\
+\xd6\xee\xb0\x8d\xa7\xc0w\xfb[\x8bH\xe1\xde'\xf6>\
+\xb9\xf7\xc9&*y\xa3\x10\x95\xac.%9\xff\x88\x8b\
+\xce\xd7\xf7\x81\xb8\xbe\xdd\x99\x8b\xd8\xa7\xee\x02\xbbk\x85\
+u\x01\x92W\x81\xa7RN\xdd=\x9c\xdb\xd6\x87\xfdD\
+\x82\x22\xdb\xf5U;<Z)\xa9\xa5\x84)Rmw\
+1\xad\x88\xb9\x11\xe5\xc3\x5c\xc3\xb4\x13\xf8c\x02\xd1.\
+\xb1/\x09\xc8\x95\xd2\x01\xe0\xf97J\xb3\xb2\x9d\xad\xee\
+%\xb4J\xb4y\x064*e\xa9R\x9a\x13\x9a\xad\xf3\
+%\x99`\x80-~e]_\xd6JW\x97\x9d\x04\x1c\
+<\xd7R\xe9\xe7\x07\x8a{0\x05\x04\xbe\x12 \xfc{\
+\x80\x1a\xc6\xd3U\xc3\xbaR\x0e\x09\x05\xf1\x0f\xbfZb\
+\x83\x7f\x85\xb2}l^\x8f\xc4\xd9Or\xff\xe5G\xfb\
+<\xfbd2\x0e\xcaO\x92\x80\xe2_\xf1\x1f\xb5\xc3\xe3\
+\x97\xa8\xd1\xe7_\xf07\x05\x9ec\x86{\x14/v\xfd\
+\xde/\xce\x01t\x88\x17$\xa8$\x84%8|\x9e\xbf\
+\x17\x7f\xb9n\xe35\xc4Y\xc5\xfc\xc5\xf4\x90\xd1w_\
+\xfc\xac\xc3\xc3\xba\xe7/ad\xbd\x88{\xc4M\xae\x7f\
+\x5cw\xbe_\x97\x1a\x09\x0c@\x82\xf8mdT\xf4\x22\
+\xfa\xbb\xb3\x11\xc5\x1f5\xdc\xf8\xcdJ~\x9c\xbb\xe2\xa6\
+L\xe0l\xbe\x14\xd6i\xa9\x88\x1b<\x17q\x81y:\
+\x02\x0f~\x9f\xe7\xff\xfe\xe6\xb6w\x19\xf8\xaa\xf9\xd7\x86\
+\x8f\xba?\x07\xf7@\x8aE\x9c\xder\xc6\xeb\x83\x1e\xd5\
+\xb5!\x10I\xf1\xaf\x07\xfc\xed\x16Z\xaf\x7f/\xd02\
+ >\xdf\x00\x8e5\xc61\x5c\xd3\xc1\x81\xb1\x8d\xa4\xa8\
+\xd5c[=\x81\xab\xcf\xf3\xbd\xaek\xcc\xf0\x7f3\x03\
+\x0a\x81\x8c\x03\x18\xe0 \xf0\xf0\x0a\xb1\xe2`\xb9>\x13\
+S\x80\xa8v\x9bx\x05*#\x87\xdf\xf8\x8dH\x8e\xf1\
+\x1f\x17\x1c\x8a\x8c\xe7Gd\x09c\xe0\xb0\xa5\xcfs\x01\
+\x02j\xbb\xbf\xbd8\x8a\x9b\x0b\x85\xad\xb5\xfa\xb5\x11e\
+_\xe2:xm\x80\x16\xb8\x83F\xfb\x1fTI\x1b\xa3\
+\x0d\xb4\x9f\x07\xf1\x9c\xce\x08\xeb\x16\x98q\xf8Ri/\
+,\x8c\x8b\x9c\xa0\xd5\xbe\x05\xa5\xfe!\x8bXL\x1d\xac\
+>\x070#\x10A\xad\x8f\xf6F\xef\xed\x02\xd0\x03C\
+\xbfzm\x0b9\xacj/e\x88\x88&\x02\x86r\xfc\
+k|\xc7\x8dwl\x1b2\xb6\xcb\x1c)U\xee\x9b\x86\
+\x85q5o\xad+\xed\xbe\xd2\xc1+\xd1A\xdfk^\
+z\xbe2\xcfy\x90\x16\x03\xc1z\x1d\xfb\xae\x0a\x943\
+\xa3]\x1bdnh%z\xc9\xa1\x00\x108 W&\
+\xc8\xb2\x01\xfa\xd9\xf7\x0d\xda\x03\xc5X\xf0\xb9\x0eF\x1b\
+l:r\x02@\x94\xc0\xca\x1c\xa7CP\xeb\x1c\x02j\
+\x9e\x12\x15D9\x06<\xfdvXW;\xe69\xa3\xb6\
+\xca r\xf4\x89v%\xe5\xaa\xa8\x8f\xe9\x90\x15cD\
+-&`OF\x8c\x9a\xbc\x1a\xef\xa4\xae\x17\xa3@@\
+\x020\xe3\x98\x08\xa0s=n\xde\x13\xd6\xdd7&\x01\
+ *3\xde\xbb\xeb\x87\x9d\x8d\x98NR@\xdd\xff\xf6\
+\xd3\xdbOmc\xfe~8l\xad1\xab\x0c\xb4\xb6P\
+\xb9\xbe\xa6c\xc2\xba\xe7\x0a\xf8B\xd5\x16\x08\x9b\xf7(\
+\xaay@\xa9}\x9f.\x11\xd6\x98L\x8d\xd2\x08\x10Q\
+\x8b=\x9dk\xda?\xed\xb5\x80\xf8\x7f4Jq\xb4\xdf\
+\xbc\xee|\xbdw\x0f\x9b\x97\xe9g\xc2Vq0\x80\xc0\
+\xee~\xb3\xdd\x7f-\xfd\xd8\xfcd\xb6\x1fw\xe3\x82\x02\
+M|N\x9b\xac\x7f\x09\xeb(\xff\x02\xa6\xb0MWk\
+/\x90\xd4\x0f\x9b\xc6Bf\xce\x1ba\xf8\xd1+c@\
+\x9b6%K\x07\x0e=p\xe8th\xeeK\xd1e\xe0\
+\x83a]Mr\x9c3_\xcas\xe4s-C\xb58\
+\x90\x91\x9f|l\xee\x1b\xdf[\x9922\x95M\xca\xf0\
+\xa8\x0c\xb0/\xdb\xd5\x8ajog\x7fN\x91\xb7\xaa\x15\
+tn\xe4\xf9N,\xaa\x05\x86G\xac\x8eH\xcd\x83\x0c\
+\xfc\xb7\x17\x0b\xeb\x98\x22\xb9?\x0b\xbc\x05L%^\xa9\
+\x9d\xa5\xcc\xbe\x1a\xe4\xcc\x0c\x97\xe3\x93\x81E\x89\xd0i\
+c\xc8\xf1\x93\xc1\x02\x0c&\xe0\xbe;!\xaccr\x08\
+\xd0\xf4\xf9V2\x80\xf2>\x88.\xa1\x14O\x97\x0e[\
+\x1d\xc5\xedaa\xddz\xc8R\x09\xfb)\xf1\xc6\xb6\xeb\
+|1\xcf\xddK\xafT\xe4F1\x0f\xed\x94\x93g;\
+e-%\x99\xae1\xdb5;\x95x%\x00I\xd5n\
+%\xd0QR\xf0\x86\xb0\xf9\xf7\xdf_D\xech\x19T\
+-4\xc0\xc5\xb8\xa76\x80sxw\xdb\xb0\xf9s^\
+\x1e\xb6\xb6/\xc5P\xa9R\x83\xd7\x87u\xe7\x1e\xff\xe1\
+\x90\xb0\xb5TB\x89\xc3\xe6%\x9b\x17o^\xdci\xd2\
+<c\x01\xec\x95\xe0U{\xc5\xdc\x1fw/\x0e\xebJ\
+\xf7\x94\x0a\x04!\xfb\xbe\xf3\xe7\x1e\x1e\xd6\xd5\xb4\xaau\
+\xcd\x0c^\xa9Y+\x81I1V\xeb\x99\x08&fD\
+\xed\xe3\xf6\xa7\x0c|\xb7\x7f\x1a6\xff\xfc\xc2y\xd5\xbe\
+\xb0\x9d/\xb7j%-\x01\xa0=\xaf\x01\x88w\x8d@\
+\xd8>v\xe0?\xc2:\xd1O\x00K\xde_\x95\x00\xbd\
+05\x1a\x1e\x15\xd6\x02\xe3\xa5\xbb\xc4K\x97u\xd3\x9e\
+\xff\xc9\xab\x08f\x05\xc2I1\x9e\xbe\x1dP\xcf\xaa\x82\
+\xcf\x8f,\x86\x8b\xd2\x04~\xc0X\x92\x97\xc0K\x89g\
+*\x81\x91\x00\xc8@\xb2\xfe]\x86<\x01\x96\x1aoL\
+1\xb5\xfe\x02\x1aT{%\x1f\xb4w\x9c\x9f\x11\xf6?\
+weB\x94?\x07\x08HF@e\xdc\x9d\x0bc;\
+p\x9a*W\x0e[k\xf7\xab\xfb\x89@\x0f\x00\xa8+\
+\x08?N\x80\x0c\xe0VSO\x03\xc0~\xa8\x84,\xd7\
+K\x01\x9b\xfc\x07\xfb\x03Q;\x00\xa5\x8c/\x919\x89\
+\x15~\x15&\xa7\xf3\x9f\x1f$\x00\xc6\xa0\x14\xffD\x18\
+v\xf2\xd9P\xe8\x9d\x9f\x9fJ\x7f@ \xa84\xd0\xfa\
+U\xca$\x11\xa0T\x12\x803v\xfb\x92\x89\x17`\xf3\
+\x0fFJ\xbey6\x96`\x8fq\x92\xcf\xe1\x7f\x8b?\
+\xf8\xe1\xee\x1b\xb5\x1f\x03\xd0}\xf2\x0b\x07M\x9b\xf2\x03\
+\x01\xd4c\xad\xbdsKbo\x0c\xd8\xc7\xaeS\x98(\
+\xa3\x88\x9e\xc4\x97\xef\x1d\x02\xf5b\x10x\xee\xe6\x878\
+o\xec^\xe7|\xd2\xee0\xe3\xa7\x02l\xc4kc\xa2\
+\xc8\xabq\xf79\x02y\xa5\x08\xbe/\xf7\xb9\xea\x923\
+>G\xdf#\xee\xf4}\xe6\xe3\xd0m`\x7f\x0b\xab\x89\
+\xec\x08\xb4\x0ft\x816\xf1=\x1f\x04\x18\xf0\xaa6\xce\
+\x7f\x11\x86\x5c\xa0\x0b\x84=\x08\x81\xadR\x01\xaf\xda\x06\
+\x0a\xf0\xbf\xdft\xf1\xd7\x004\x11\xb5\xb3db\x0f\x0c\
+\xa2\x84\xfb\xbb\x80{\xac\xc50\xb1\xd5\xe8df\xa5j\
+\x96-\x10\x01\xca\xd8\xde\x10\xf5L\x8d\xe7\x8d3\x03\x0b\
+)Tc=\xf4]\xad@O\x80\xe6:m\x10\x98\x0e\
+\x0et\xd4{\x01\xf7@\xd5,G)\xdbx\xcc\xe1\xc3\
+\x92\x01\x95y\x1d'\xa4\xb6\x0f\xda\xf1\x1c\xc8\xf1\xfdq\
+.\x94\xb1[\xc0&\x17\xe2 \xceQ\x01\xa7\x00\xe1\xf0\
+\x0cP\xaf\x9a\x14r\xe3ka`@\xa8\x05\xa7)\xa0\
+=\x1fJ*\x91%\x144Z\x04OX\xc4\x84\xf6}\
+(3\xcbwX2\xce\x15\xe0ZP\x16\xb0\xbe\xce\xe9\
+\xf0\xd4Fe\x01\xa5C\x5cT[\xe3\xeey\xf8\x1c@\
+\xc5\xd0Nn\xf7\x96\xec[\x8b\xe1\xe0}\x02uH\xaa\
+\x80xh\xa78?\xaf\xd9Z\x9b\xc1\xd9\xba\x0d\xcc\x86\
+c~\xfd\xcb\xd2\x06\xad\x80&\x07<Q\x18\xc0\x91y\
+e\xa3\x18\xbb/\x0c*\xfc5/\xcc\x13\x07\xa0\xee\x1b\
+D\xf6\x8c\x87\xef\xb5\x0e\x12\xd9\xae\xcf\x91iC\xb1\xcd\
+>\xb9UrB\xacL\xa6\xda\xba\x1a\xfb\xbb\x02RR\
+\xf4\xa9\x9e\x8b\xc0\xd6\xbcPr!\x83\xe7:\x1c\x00\xc6\
+\xc1F*\xc3\xa5\xdf0\xf1\xc2\x9c\x972|\x9bw\x84\
+u\x01\x7f\xd6\xe06\x11\xaf\x8fw\xfb\x89\x0d\x15\xf5_\
+\xa6\xd7\xab\xe7\x93\xff^\x019\xea\xa5\x00f\xa0|W\
+\x8d\xb6\xf5\x22\xd3F\x0d\x19\x00\xf6\xdd\xb0U\x0c\xa8\xe6\
+\x07\xc7\xeeFa\x1deR\x86\x8e\xe8\x1dja\x02\x0e\
+{\xbf\x146\xbf\x9e\x14\xd69\xe6\xeeO_i\xd4}\
+\x1a\x0ew\x08\xeb\x1c\x1f\xedMuW\xb0\x0f\xa4\x83\xc4\
+!\xae\x9ax\x94c\xf7c\x1f\x94\xd9\xfeN\xd8\x0a(\
+\xcc\xeepkC\xb6;\x22\xc8\xeb\xf36u\xde3\xcf\
+w\xe6y\xd7\x00q{\x9f\xed}\xb7\xf7\x99\xef\xe3\xc4\
+\xd9>\x9c\xdd\x13^\xbe:\xdc\xa5\xee\xado}f\xa6\
+\xa7\xe7\x87\xcd\xef\xfbBXG\xe9\x95\xf1#\xa2F\xd3\
+\xc0zxm\xab\xb6\x5cK\xe1r=6\x80)\x18\x0e\
+\xc7\xcdvlj\xaf\x5c\xa5\xfb\xbeC\xa7\x16\xf8O\xb7\
+\x0a\xcb.\x087X5M\xa6\xe3\xc2\xe6\xbf?%l\
+\xfe\xf7k\x87\xcd?\xbf2l\x15\x19\xac\xee\x10\xfa\x9a\
+\xebW\xcd\xb1\xe3\xb0r\x10\x95\xc2\xdc4l\xa5\x00\x17\
+\x95\x9c\x03\x96\x94\xdfR#\x7f\xf6l\xd1\xb6\xed\x8da\
+]Mn\x06.%\x96'\xa3\x96\x81\xb1>\xf6E\xd5\
+\x94y!b\x95\xaa\xf0\xc5\xe8@\xcd\xbdh\xd8\x0aP\
+\x15\x10\xeb\xef9\x9c\xf6i\x99Hm\xdb\xacc\x0c\x07\
+\x19\x22\x80\x0f\x0d\x80\x1co\x99\x1c\x01\xf5\xf4\x96\xb0\x95\
+\xf12]3\xac\x13WU\x8a\x12\xe7\xdf\x85;\xd1>\
+L+\x89\x07\xfb\xd9_\x85%\xc3\xea\x1e]\x17\x90\xc8\
+\xc7^\xfb\xff\xd1u\x1f\xe0\xb6\x9dU\xb9\xf8\xf7Z\xe7\
+\x10\x08\x09BBob\x08\x10P\xe9M\x90\x1e\x8a \
+E\x05T\xda\x9f \xc5\x0bB\x08\x0a\xa2\x80\xa0\xf4\xce\
+\xa5)^\xef\xa5\x83@.\x0a\xe2U\xaf \xed\x02\x82\
+4A\x10)\x89t\x08 \x10Z\x02d\xcf\xf5\x9f\xe3\
+\x9b\xe37\xe6w\xbe\x13\xf6x\x92\xf5\xec}\xf6^k\
+\xceo~e\x8cw\xbc\xe3\x1d\xd9\xdes\xf6g\xf6\x7f\
+7l\xfe\xbc{\xcdv\xcfU\xa4\xb0\x05j\xefXE\
+\xf9\x00\xb2\xb5_\xc8\xe4\xea*\xa0\x8f{f\xf4e\xf2\
+C\xba\xae\x89\xd7e 6\xfdQ\xd8\x0a\x84\x96\x88_\
+\x8a\x9451\xb6\xb3\xd7@\xc6\xfb\x15P\x9d\x00\xc5\xee\
+\xf1\x0b\xe5\xba2Q\xef\x0f\xeb\xa8\xb7\xe6[d\xe6\x1f\
+\xb5fX\xa7;\xcd\xf6+\x1dc)\xf2\xa6WHq\
+\xd3G\xaf\xc0G\x9bm\xbf\x98\xe7\xe8Q\x9dX\xe5\xa3\
+\xc2\xd6\xe7]\xe2o\x19\xd8N\xb7\x0f[\x999\xdbk\
+\x85\xcd\xdf\x1f\xbb$@\x9a\x7f\xf6\xc5<\x87o\xd2\xa8\
+\xfaw\x0f\xaa\xfe\xee\xcaK\xc9\x03\xd5\xfd\xf2\xb3\xbc\xef\
+\x0f\xc3:@\xef\x9e\xcdj\x1f\x9b\xb6q\xe5\x0d n\
+]\x12\x94Fh7w\xe0\x1ea\xf3\xbf\x7f;\xacK\
+H8\xe7\x94\xba\xe6\xfa\xde^5l~\xdfW\x86u\
+\x01\xbe\xf3\x96\x1f\xac\xf6_\x00*\x00\xd6\x1e4\xc5\x15\
+\x8bi\x96\x9a\x06\xa5\xa9\x84I\xe0\xfcP{\xed<\xd2\
+\x9d\x89f\x08\xf1\xe2l\x87X\x9f\x1f\x05/\xef\xc9\x8c\
+\xec?\xae\x0c\xa8\xf2\x8f\xf8\x15Y\x22H\xbb\x84\x16B\
+1\xafr\x1f\xae\xf3Fi\x80\x04\x9b@\xd1\xb9\x91\x0c\
+\x84\xba^\xe7\x0fF\x22\xca\xbe\xf3\x9d\x16\x00\xd5t~\
+\x92@\x16\xb0$S\xcd\xbfp\x1e\x8e\xed\xef\xfc=\xbf\
+EI\xa5\xfd\xf89\x0b3k\xf7\xee\xdd\xbb\x1a\x93f\
+\x14\xc7\x1b\xbb3\xc9L\x0bP\xf9k\xf6u]6\x88\
+\x1a\xaby\x1f\x13NJ\x0f\xc6\xf6\xde\xee\x93\xff)\xee\
+\xe1O\x09\xa0\x07q\xbf\xc3\x98\xcc\x02H\x19z\x01\xe8\
+\xc8\x00\xe5\xf7\xf8<\x81\xfd\x90p*?\x98\xbf*n\
+\xc3\x8c\xf4>\xeeK`;\x06\xe6\xde\xc7uzN\xe2\
+O\xcf\x87(&\x00h\xac\x95\x17\xa7b\x0c\xf0\xb7=\
+o\xfe\xac\xe7e\x1c\x8d?\x00\xc4s\x19\x19\xc4#\xa3\
+[\x22\xda\xfas\x9f\xeeK\xf7\xa9,\x8d*\xe6\xaau\
+a\x5c]'\xbf\x1d\x102$Z+\xe1T\x00\xc0\x07\
+\x1b\xb9\xba\xfa\xdeV\xc6\xbe\xa7\x16_t\x15\xc5\xa9\x1a\
+t7\x14\xc3v\xa0s\x0c\xa9\xfa\x13\x7f\x8b\x0d\xf8\x98\
+\xcc\x80\x1f\xdf1\x0c\x5cXj\x06\xb4\xcb>\xf2p\x07\
+s\xbc\xe0\xca\xa4Z\xf0\xfa\xd4\x13\xf9C\x0d\xfeIT\
+\x7f\x13\xd6\xc0A\x86z1\xc4\xb3\xbb\xbf\x87\xecy`\
+\x1f\xcf\x05|\x91\x9c\xb0\x02\x00\x08&\x0a2\xb1\x16\xf7\
+c\x03\x19j\xa2\x0b\xa1\x1a2\xc351m\x14\x02O\
+\xaa\xdc\x00\x09\x80\x83\xf1\x1c\x17\x82\x0d\xd8\x84\x10\xe0\x12\
+\xe3\xb10\xfc\x9d\x89mc\x12\x08\xa3\x04j[r\x85\
+<\xb8\x5c\xef52\x00\xe10\xaa\xb5T+\xa8\xcd\x91\
+~\xd4T\xbbex\x05\x90\x02g\x08o^\xf7\xe6\xbe\
+I\xa5L\x8a\xf8\xe6\x16a\x9dZ\xf8\xaf\x85\xad\xe2\x87\
+\xf5\x95\x14\xaa\xdd+v\xaf\xdc\xc5\x81J+\x000\x83\
+\x99q\xa9\xa1\x14\x00\x22\x87\x0a\x07\x08\xf9\xf5\xcd]7\
+w\xed\x020\x0c\x0e\xf7k\x83\x1c3\xff2\xee\xc6u\
+D69Z\x09\x04\x94\x03\x8a\x8an^\xca\x5c\xe9B\
+\xa1t\xc2\x81l\xbe\xda\x80lH\xe6\xbd\x0d\x96*\xb9\
+\x1av\xa2}\xe69\xc6\x04\xc0\x80\x16\x88q\xb6\xb1\xaa\
+\x01NuR\x19\xd9\xc3\xda\xe1\x01\xb6|\x8d\xed\xd5d\
+\xf6\x8c#\xc7\x83*\xbc\xf9\x07\x10\x18\xa8T\xf5\xfec\
+\x97\x0d\x07\x18\xd1\x1ebf\xe69d\xda~\xe0\xbeG\
+\xaa\xb4\x03\xd7s\x1c\xf7\x09\xdf\xfb<\xfb\xa7\x0d\x9fc\
+\xf2\xc2fk\xa6\x84v\xc9\x93\xc3\xba\xb6c\x1c\x09\x81\
+\x0b\xf5y\xd7O<MfD\x8duf@\x05\x0aU\
+\x13\xfb\x07a\xf3v\xfd\xad\xb0\x8eb\xc8A\xa0\xeao\
+\x9f\xc5XP\xeb\xe9>\xa9\xd2>=\xac['\xd6\x1d\
+Q%\xfd\xeb\xb3\xcdX\xcdC\xe3\xc31\xa5\x1dA\xc4\
+\xe8\xf2\x0b\xa5r\xf7\xc0\x85\x01\xb1\xff\xd6\xfd\x7f\xda\x0f\
+\x15\xefG\xee\xff\xfe\xfe\xef\xaf\xf3~{\xff\xb0\xf59\
+\x1f88\xdb\x81\x04~\xfe\xbeeB\xae\xd7\xa8\xdd\xf7\
+\x98\x03\xdf{\xac5\x94M}\xfc\xd4lk\xf6\xb7\xeb\
+>\xd8\xda\xf2Em\x7fS\xd5\xe9\x1c6L\x0e\xcc%\
+\xe2ZI\xa5U\xd3\xbd}y\xd8\xfc\xfd\xd1a+S\
+a:\xfft\xd4t\xfe\xc3\xd5\x81\xa7\xf3\x85\xad\xe3\xbd\
+}_X\x07P\xc9\x10\xbf\xa0Y\x89\xb7\xd5\xfaM@\
+\xac\x98*\xf6\x95\x9c\x07\xa3Xje\xb2e\xa2t7\
+\xf8^\x8aI\x09\x5c\xa2\xc6\xfb\x9e\xddy)\xf0\x06\xa4\
+df\xad\x05\xee\x17\xed\xb4`\xec\xa3\xf6\x0f\xda7j\
+\x9fC\xe5\xfe\xb9\x9d\xe8Wf\xca+\xa0M\x00\xb7\x02\
+\x17\x80\xc0\xe8\x08g)O\x95\xe28\x7fdnR\xdd\
+}\xba\xc2t\xfct\x85\x8e\x99\x03 \xe3\x90%\xd3h\
+\xbaV\xd8\xba\x7fn\xff)\xac\x0b\x8c\x95\x04\x10\x85\x0b\
+\xa0\xbe\xeb+]\x14\xf4|\xff\x06\x04\xfdi\x96\xa6\x9c\
+7kG\xe3\xf5\x8c\xd9\xbe\xb2\x06l\xd3]\xc32\x80\
+\xb9D\x97\xf9\x0d\xc0\xe0y\xa9\xd9\x10j\xf9\xfb\x0bE\
+\xbc\xce\x95lWZ\x00\x00\xd1(\xeb\xf41\xcd\xea\x1c\
+Qk\xef\xfe\xa6\xd3\xc2:m\x84\xacuo\xfb\xcb\xad\
+: >5aJ\xf4-kP\x89\xb8\xca\xcc\xd7~\
+\xe1\xdcTC\x0e\x00Nq\xcaj\x0b\xf8\x99\xd9>\x9d\
+\x00\xc4kR\xdc\xf4\x81\x9d\x1a;\x06\xe2\x05g\xfb\xa9\
+n\xdd\xd2\x82\xb8LS\x13Z\x02\xb5\x8fu\xb5\xedQ\
+\x00s\xed\x14\xad|\xc6\x0a\x9cU\x09L\xc0u7\xca\
+u\x1d\x1a\x0d\xcf\x9f\xed\x05\x87tkxwc\x9ea\
+\xfc\x9c?\xac\x03.\x93\xd2]\xa2}\x09\x88\x16\x10\xf4\
+\xe2\xb0\xae\xab\xc5w\x17\x7fY\xe2\x05 ]]\x03h\
+\x18\xe5\xf9\xbd\xbd\xde\xf6\xfa\xdb\x10A|\xda\xd2Ub\
+\xfb\x87a\xad\x9d\xe0\x0d\xa7\x1b\xe6\xfc9\xa3[7I\
+\xa5\xaeR\x00\x00\xccH\x85\x97 \xe0\xf7\xd9o\xb5\xe3\
+\xcbuY\xdd-P\xa8\x9d\xc3\xf6i\xddu\xa8\x90+\
+\x8d\xd2}\xc6\xe79w\x95$\x02\x08s\xbf\xdb\x1d\x0c\
+\x9b\xbf?6\xac\x0b\x04\x13\xd0\xc48*\x8d\x1c\xa5\x0f\
+\xda\x0e\x9b\x8f\x03\xe3\xb5\xfcc\xcf\x93\xa6\xc7k\xc2:\
+\xaa\xfd\xa8\xbe\xceo\xe7w\x11\x9b\xb6o\x02\xd8h2\
+\xf0\x13\x05\x8c\xeeW\x89Y\x96T\x14\xb0i?\xe6\x8f\
+\xb9_\x81\x1a\xa0\xdf>*>p\xaeZ\xf7j\xc0\x89\
+\xa2b\xdeY\x7f\x12,\x12Q^\xf9\x83\xce\x1f\xfb\xf9\
+\xa8Zo<|\x8d\xb5\xed\x03\x95\xbc\x18\xbf\xc6\xd3\xfd\
+8\x9f\xcc\xbb\x91\x01\xea\xf3\xc4#\xe2\x9c\x91Q-\x00\
+\xe6o\xf1\xc3F\xed6\x01=\xb5{q\xa9xh\xd0\
+.+\xcd\xa7\x8c\x9bj_\xe1\x9f\x19w\x09\xc41\x80\
+7N\xba?a\x06\x1aO\xd7\x87\xd1i|F\xad\x85\
+\xb1\xbd\xb5\xe7J\xcc2\xcf\x9f\x8a#\x89\x83\x03\xd6$\
+h\x8c\x03\x80\xc2\xf8\xfb\xf2\xb9~\xee\xf32\xde<X\
+\xb5\xc5\x02\x8dcZ\x95\xd4:`\x1c}\xaf\xa8\xfb=\
+\x12\xd6\xb7\xbd\x93\x87\x17\x18DM\xcf9I\x19\xbbD\
+7 .\xe8\xec\xa6g\xbf\x06\xa0k{\xb6C\x03\x0f\
+\x81\xae\x05\x07\xd1\x1a)+\x06\xc4\xf5q\x8c,$\x0f\
+\x0e\x15\xf7\x12a\xddB\xf2j\xe0\x06\xf5\xc7\xca\xd4\x0b\
+\x84\xdc\xcf'\x0f\xa5\xec\x94c\x8f\xe2l\x02\xbbO\x13\
+j\xa0\xfa\x17\xe2E\x14\x02\xe0b\xc2\xf8}\x19\x07\x80\
+\x83\xcf\x19\x90\xb8z\xe0\x80\x08\xfdd/\x1a\xd6=W\
+\x88\xa9\x80\x08\xb0q\xa5t\xec\xafT\x14\xfa%C\xa3\
+\x1d U\xf7+\xe4\xef\xd9 ]\xaf\xeb\xe1\xf8\x0bx\
+Q\xbd!\x86\xa8\x82\xe6\x11\xca\x99~\xdd\xdf\xcd\x8d\x83\
+\xa3\x9a\x14i\x19\xc8j\xc3\x96\x14\xe7\x12\xebJ*\xed\
+<\xbb\x97\x9a\xdd\xab-\xb5\xa3\xbb\xa7'\xc2\x0dY\xbb\
+i\xde\x07q@\xd7M3\xe1\x079\x9f\x005\xe6\x95\
+\x857\xce_\x80\x12\xca\xbb\xf6,9\x8f\x0a\xf0\x18\x91\
+e\x7f\xef`\xb3\x81\xda\xe0\x1d\xe4\x1c\xa5<\xf0+\xb3\
+G\xac\x8c\x83 \xc0\xcf\xda\xf0\xc3\x90Nm\xcf \xa2\
+\xa8\x98\xda\xf2\xa1\x0c\x9b\xbf6f\x1b\xb8\xf5'\x13a\
+]Ch\x89{\xa6\x83W\xa5\x0e\xd6\xafL\xba\xf9\x0f\
+h\x14\xd0;\x10\xcc'\x81\xbb\x8dT\x0d\x14\xa0LF\
+\xc0Fi~'\x95\xb5T\xa5\xf5%Gq\x949\x11\
+`(\xb1\xc0\x1c\x92\x89\xcd\xfb\xab\x1ah\xa2o\xcf\x0e\
+\xeb\x00\x08m\xc6\xac3\xb5\xb5\x99!,\x07\x03S \
+)\xbau\xbd\xd6\xaf\xd2\x85\xa4\xb6\x96\xea\x7fR<[\
+\xc6\xf6Y+\xb0\xa0\xf6\xad\xc4\xf92\x93\x22\xb3\xa1\xd6\
+_\xa9\x8c62\x9b\xd7\x86\xad\x8ezi=X\xdfT\
+\xa6e^\x5c\x1f@\xc6\x01\x95\xd4\xb4\xaa5%J\xaa\
+\xd633\xed\xe6\xfd\xe6\xcf\xc2\xe6iy\xeb\xb0.P\
+\xb8JXS\x05\x7f\xf74;~\xd3\xd7\xc2\xe6\xdf?\
+)\xac;\xa0\x01Y\xb7\xd8\x9d\xd8\xc4\xfa\xf2\xba\xabT\
+\x22)\xfb\xd3}\xa7\xfb\x85\xa8XH\xf3\xb5\xc01\xf7\
+#\x14\xe8\xfdm\xd8\xba\xde\xb6\xe7\x0f[\xdb\x9d\x0a\xe8\
+\xac\x03m\xa8Pj\xe7w\x9fm~\x9f3\xf7\xbf\xb3\
+?\x9f\x1f\xfbw\x0c\x9b\xdf\xe7\xe2a\xf3\xeb)\xdb\x87\
+n\x1f\x9a\xb5\xcb\x17\x5c\x81\xd0\xcd\xc5\xc2\xba\x00\xfd\xda\
+a\x1d3H{\xbe{\x84u\x14m\xe3\x98@f\x95\
+\xd4\xfcLXW\x9b\xff\xfc\xb050\xde\xdc3\xac\xa3\
+,\x9f\xd0\xe4Z\x97L\xf9\xc3\xbbL\x9e@\x80\x96F\
+\xeesT\xe5\x0b(\xb3O\x03T\x05\x16\x00;% \
+)\x12\xa8F\xbeD3\xb5CD\xfdE\xf1Uz \
+\xf3\xc81\xce\x12\x9c\xa6]q\xe3\x0eX\xd6\xff\x1cu\
+\xfc\xc6\xf9\xef\xf6\xe5\xa4\x9eWW\x0d\x1a\x03\xdau\xe9\
+\xaa\x905\xdd\x18A\xe6\xe1\xf6\xa4\xb0NM\x9cv\x02\
+fLj\x994\x86\xc8U\xd6v\xbc\x02\xc3\xcd\xd7g\
+\xfbF\x02%\xc7\xadm\xf8\xf6\xdf\x12\xd6u\xf9\xc8\xfd\
+\xbd\xda\xa1\xd9\x0f\xf8/\xf6\xd9d^Ee}+\xd9\
+\xc8\x84@\xf5\x85\x1fJ\x10\x03\xfen\x008\x00+\xc5\
+\x19i\x83\xb4@\xfa\x1e\xe9\xcf\x9c\xd1i9$\xf0S\
+\x01\xa0\x12\x0f\x1a2\xe6\xa9\x92\x14\x09\x19\x81w\x8a\x92\
+\xb6\xf9\xf0\x9e\xdc\xcf\xae\xb9\x9e\xdf\x02\xaf\xe9\xc5a\xf3\
+\xfb>e\xb6'w\xdd&.\xb4;\xa6\x01:W\x0e\
+[oK)E\xd3\xe6\xbfl\x9b\x1f\xff\xde\xe6\x87\xc4\
+F\xec\xb6\x0fYK)\x8ccS\xeb\x7f\xe0Zs\x7f\
+\xe0Ua\x9d(W\xf41\xff`\x9b\x97\x97o@\xd5\
+3\x13\xc8\x94\xb9\xce\xf9P\xcc\x99\x9co\xd3\xbf\x84u\
+])\x94\xdc\xf0#OY\xf6\xff\xcd\xfe\xa2\xda\xbd\xbd\
+l\xd8ZZ\xb6=f{\xa1\xed\x85V\xe6\x91\xf6\x9e\
+\xa5i\xf0\xd8\x04\x04\xf9\x0b\x029~\xc6\xaa\x95\xb4\x00\
+\xe6J\x85h\x9d\xf0\xcb\x94\xb0Q\x8bW\xd2$p~\
+\xd3\x222W\x8c\x03\xe2|\x02\x1b\x81\xce\xfb\xe6p\xe9\
+}]\xe0\x9f\x9a\x0f\x95\xb8!\xee\x8bYt\x89\xb0U\
+\x9b\xa2J\x1a\x95&\x00\x5c\xd5\x5cg[\xc9b\xf6(\
+\xe9\xf0y\xfc\x0e\xfe6\xed \xe3b\x9f\xbcYX'\
+n\xcc_\xe3o\x090Q\xfb\x01,\x98\x8e4\x10r\
+\xdd\x14\xd0\x0d\xe0\x12\x10\xda\x9f$\x0a\xfc\x1e`l\x0c\
+\xb0\x13\xf0.\x118\xfe\x00\xbfx\xcc,\xf3\xbftO\
+\xb0\xbf\xf2G\xeds\x02\xecL\xec\x956\x19\xff\x1b\x90\
+\xaa\x1d\xde\x18\xef\xf0\xdfF\xed*\x7f\xcf\xef\x15\xe0\x0b\
+\xec\xc53\xfc0~\x22?P\x1c\x02pq\xdf\xe2\x0d\
+\x9f\xebs\xdc\x87D\xc8\xa0\x09P\xfb\x0e\xad\x1a\x01<\
+\xff\xd0\xe7\x01\x8a<o\xebD\x02\xd6\xab\xfb\x90\x90\xe2\
+_\x8c\xed\xff\x5c\xe7\xd8\xc6\xd0\xf3\xf7\xbdu\xe2z\x07\
+\xf1\xf7\xc3j\xf3=W\x89\xc6\xf3\x84\xad%3\xb5\xdf\
+\x8e\x09\xf1\xf1\xfdF\x0d<\xf7m~\x0cq\xcb\xc1\x12\
+\x19\xfav'z\xf7\x8d\xae\x1b\x80\x0f\xeak\xf5\xf7\x07\
+D\xa4\x17\xe7\x1b\x07F\x0d` \xa5\x9f\xea\x1c\x1e\x07\
+\x9a\xdfW\x12 #\xe5\xe0\x93\x89s=\xe3F\xc4\xe1\
+\x1f)\xff\xae\x87\xa3*\xf0\x1c)\xee\x90=bv\x02\
+n\x0f\x1e\xe5\x88\x83\x83J\xef}Mt\xbf\xef\xd5u\
+\xf9\x5c\x81\x97\x07\xe0:\x056\xa3\xda&$^\x86\xf9\
+\xc4\xb0s\x11\x03\xf4\xf76\x08\x1b\x0e*\x89\xe7\x84\xb2\
+\x7fzf.\xd4\xfc\xb9^\x94\xb4\xac\xcd\xad\xf7Y\x03\
+\xfaeC\xe0\xa0\x103\xbbY:`\x02\xae,\xc3(\
+d\x1c\x05;\xc5R\xe6\xe3a\x11-\xb9v\xd6@C\
+D\xdd\x87~\xe0WN\xea9d;\x91f\x0e\xe9\xe6\
+Ea\x87\xd7\xd6W;\xa5\xcc<T-\x1dJp\xd6\
+\xe8m\x9e\xbfyA\xa3\xec\xa6#U\x00\x09\xe0\x0b\x00\
+\xa2-\xe1\xe5\xc3\xba\xcc\xb4\xc0\xd4F1\xb45\xa9\xf9\
+i\xe1Y?j\xf4\x05\xc4\x02,\xf3\x9d\x88\xa0\x0c\x13\
+$P\x17\x03\xf7;\x88\x984\xc7\xe5C]\xe0jc\
+%\x02\x93\x81\x80\x1a\xb1\x0a\xb0\xef\xd8\xac\x17\x81\xf4\x1c\
+\x97\x0d\xc5\xe7\x8d\x1a\x19#\xc3\xc0\xfcCer\xbf\xfe\
+]\xdb1\x19nm*1v\x1c8\xc4\xf8\x94D\x10\
+[s\x1d\xd6\xb5\x8c\x1e\x00`TM\x1d\x99\x0c\xf6\x91\
+A4\xb1\xfa\x92\xa7\xaap9\x90JV2@\xdf\xdc\
+!\xac\x13!\xd4F\xd0|q@\x8d\xb5t\xe6\x91\x0c\
+)J\x9c.\x03\xd9\xad\xa02.\xe6\xbb@?\xfb\x1a\
+\x13\x9f+1\xc7\x14\xc1\xa9}!\xe7e\x05\x00\x80\xa4\
+'7\xdb\x9b~#l\x1e\x9e\xa7\x87\xcd\x7f\xf7\xd6\xb0\
+\xaeV2\xaf\xa7\x0e\x5c\xfbi:^\xd5\x0e\xce\xc1\xac\
+\x061\xdb\xd5Q\xafU+\x5c\x99\x0f\x19\xb5\xa8\xd1?\
+i-\xb1\xd8\xfer\xd8\xfc\xfa\xa3\xb0\xce!D5\xce\
+\x80u\xff^ak\xdb\xaf\x83\xf7\x0b[U\xd61{\
+\xa6\x97\x87u\xed\x0as\x1d\xcdw\xfd\x9bq\xdf\xbb;\
+-\xd4\xf9\x03\xf7?p\xbf\x03\xf7\xef\xd4\xacs\xbc8\
+D\xdb\x1f\x87\xcd\xaf\xff7\xac\xa3\xe2\x87\x83\xf9\xbf;\
+\x8d\x80l\x07\x08\xb8\x99\xbe6}=\x00\x8as^}\
+\xce\xab\xceyU\x9bO\x8d\x0a]\xc0:\xe6F\x94\x12\
+\x9c\xbaR9\x01\xc9\x9e\xb7\x9at%G\xd5>\xd2\xba\
+\x1a\x1c\xa3\x0a\x14\xb4\xf9\x02\xa4*\xc5Hq\xad\x0aX\
+0\xa8r\xde4*\xf3|\xdeL7\x0f[\x81\x9c\xed\
+\x9b\xc3\xba\xd2\x19\xfbo\x06\xee\x95\x99\xf3\x9c\xf5\x03\xcf\
+\xb6\x8a\xda,V\xbfw%Z\xd6+\xb1Dj\xeb\xd4\
+\xb8\x89u\x86\xd2\xc8\x83\x92\xa9r\xc5\xb5\xedU\x05\xee\
+\xdf\xcfs4\xa8\xf5W\xedj\xe2\xbf\x985\xa7oJ\
+J\xf4\x9d\xe7\xf0\xe5\xce\xad\x9f\xf8}\xa3\x9fx\x05\xb0\
+/\x0f\xeb\x1co\x0e=10\x99\xaed\xdeL/\x0b\
+\x9b\xff\xee\xd5a\xdd\xfa%\xc6\x97\xf7\xb9\xbdUX\xa7\
+^\xae\x8d\xa3R\x00\x19\xff<7\xb6\xb7\x0b\x9b\xe7\xf9\
+\x83\xc2\xe6\xcf\xf9\x9fa+\xf5x\xfb\x98\xb0\xee\x9c\x02\
+\x98\xd2H\xc8\x8c\xaa\xc0\xab\xb4\x00\xa2\x8b\xc3\xd9\x1d\xa3\
+B\xe9\x84\xdfK\xbf\xa7\x02\xf7\xd4N*Uum%\
+\x95b\xe4\xbeZ\x00\x92\xd2-\x0c$\xfb^\x02\x9d\xd3\
+#\xc3\xda\xfa\xfb\xf5\xe9\xd7;F\x81\xf9\x8a\x81B\x14\
+,*\xb5\xe7\xfb\x9e\xde\x1a\xd62\xf6\x0b\x10D\x8b\xe2\
+\x96!\xab9\x7f\xfeG\xc3Z\x97\x8cg\xb6..\x7f\
+\xd6lo\xf3\x9e\xcd?o\xde\xd3\xce\x9b3\x9avS\
+\xee\x8f\x95\x89\xcds\xae\x18.1\xcbo\xb3\x8a\xe1\x01\
+X\x0f\xfc\xef\x03\xa7\x1ex}'V\xad\x0d0\x86]\
+2\xaf\xa6/\x86\xad\x00L\x93F}\xec\xca *-\
+\x16\xeb\xe3\xab\xe9\x0f\x9c\x93\xe7\xd7\x1b\x97\xf9\xb9\xbdR\
+\xd8\xfc\xf9\xdf\x0dk%d\x8d\x11@\xdc\xb2\xbaG\xe4\
+\xfe9\xef\xe9K@#\xd0\xd4\xa5\x09P\x90\x00D\x95\
+r\xfcBR\xfc\x7f+\x19<\xd9}C\xf7\xa9\xca\xa8\
+\xf3\xf3\x88\xf2\x12\xedLQ\xd8\xa2\xc8\x13\xf5\x0c\xd1\xc4\
+\xbb\xad\x00`\xb5\x1f\xfd\xe0\xd2\x1dA\xc0?] \xac\
+c\xfe\xd8\xbf\x88\x14\x0a\x90\xf8\xab\x00e@\x22\xa0S\
+@\xac4\x81?.\xf1\x96\xfeD\xcd/~M\x8a\x88\
+\xee\x9e\x1e\xd6\xads\x09\x12\x0c\x86L\x10T-=\xbf\
+\xde8\x0f\x9a*U\x1a)\xf3O\x9c0\xe7A\xf9q\
+c\x22\x92\xff\xc1?\xa2R/p\x15X\xbb/\x09\xcb\
+\xd4\x8a\xaa\x00\x15\xa3A\xe0\xce\xdf\xb4\x9f\xe9\xe2a\x9d\
+\xf2\x17\xc5#JW\xc7\xb6\x80\xa3\xff2v\x07\xf0\xef\
+\xfc:\x09*\xfe\xe0\xa8\x81\xa0\xe4\xd3\xe7z\x150;\
+\xd7\xbc\x9fx\x85\x9f\xe7}F dd0\xf8|\xef\
+\x0bPr\xbd\x12j\x02\xfdQ\xd4\xdc\xfd\x01\x84\x93Q\
+P%^\xe2$\xcf\x1b3\x8b?g\x1e\x03<|\x8e\
+\xe7\xe8z%\xde\x5c\xf7(\xca\xc8\x8f\xe4\x7f\xb9\xefL\
+|V\x97/\xe2\x93\xe2\xb4\x91\xb9a\x1c\x8d\x1f\x00\x83\
+\x1f]%\x00\x97n:\xe8\xeb\x85\xa1\xf4\x0b\x5c\xbc!\
+\xc7\xda\xc4\xf0\xef\x02W\x0b\x94#\x1e\xef\xf6\x8d\xceA\
+N\xaa\xa1\x80\xa6\xc4\xb7\xd4T\x9a\xa0\x16\x8c\x09\xd0S\
+&\xce\xd39\xb6\x16\xe2\xd8n\xcd\xf5\x8d\xd4\xeb\xb5?\
+\xec\xf2\xf7\x80\x06\x0bu\xcc\xdc\xab\x8dv\x1d\x90$\x0b\
+f\xc8p\xd6\x04\x12X@2\x89\xd5\xc9\xa8`\x1cx\
+\x1f\x99T\x80\x81@\x85\xc3\xe8>,\x14\xdf[04\
+\x04\xbe\x12\xd6\x1d\x10\xf9{\x9b\x9fN\xd5e\xe3\xf4\xf6\
+\xdc\xd0L\xac[e\xbb,bf?\x9b\x220(\xc2\
+W,\x06\xc0\x02 d\x86i\xbe\xc7\xe5`<P\xfd\
+\xd3\x97\x05\xf8\x1f9\xe1\xcf\xcey\xf1\x89\xdc\xb0\xde\x97\
+\x0b\xd2\x02zEXw\xf0(\x19\x01\x18@\xe60!\
+\x88\xa6\xbd\xa6\xd9\x9aA\xcb\xf6\x1cU#\xaf\xf6\x95\xa8\
+M\xd6|\x15c\xc3\xc1\x03\xf0 \x96C\x9c\xc8\x01\xe1\
+\xf7\x88\xe2\xf8\xb9y:\xb6I\x19\x99 c-\xceW\
+\x0f\x15\x1b,\x8a\xb5\xf6{\x99i\xac\x83p\xaf\x98\x07\
+\x0b\xc5SM; \xc2\x01$\xf3J\x05\x1feU\x97\
+\x01\x99\xff\x9eqsv\x87\xd4j\xdb\x87\x82\xaf&\xd1\
+\xcf\xad\x13\xeb\xd0Fb=Y_\x182\x98\x0e\x005\
+\xe3kC\xf2w2S\x10O\xed;\x05\xca\x0e\x12\xf3\
+\x1e\xb2o\xde\xa2\xfc\xd9\x97\xac\xc3\x91\xb2f\x9d9\x18\
+P\xac8\x0a\x99a(\x8d\x07\xb5\x91T\xff\xa93\x13\
+U|}\xd8\xea(\xa8\x85-d\xdb\xfd\x9c\x13\xd6i\
+P$\x82+#S\x94\xc3\x0c\xd0\xcb\xf1\xb0\xae\xb3\xd6\
+rw\x97\xb0n>z~T\xca\xd5(g\xa0*p\
+SR`^m\x9f\x146\x7f\xff\xa7a\xeb}\xd5|\
+V\x9a\x93\xa2H\xd5\x8eFF\xc2\xab\xfe\xe9\x19\x80T\
+-|\xaaWW`,\x90\x05lx\xfe\xc4k\xb2T\
+\x083\xa1\xa9\xdf\xdf\xa2\x03>/\x93\xa2|7\xc8\xb6\
+\x5c/[\xc4\xde\x04\x80\xbb\xb3\x96\x00'$\x03C4\
+\xb0\xda\x80\x9e\xb59{sVjw\xfc\x9f\xf9\xf5\x89\
+a\x9d\xd8\xe1\xb77\xdf\x8aZ\xdcj\xbb\x06\x90\xe2\x88\
+Q\xa7\x07\x8c$\x05\x7f\xba\xc2lW\x5cK\x96\x1a\x05\
+{?\xc5\xc1\xe6y\xbf\x7f\xd5\xfd\xab\xed\xff\xfc\x22\xf6\
+\xb7\x7f\xd4\xea\xe0\x97\xf8\xe2\xc3\x92y`|\xf3y\xd5\
+\xba\x95\x11\xc9@\xad\x9eK\xaa\xaa\xef~q\xb6\x1b&\
+\xe0\xf2\xc7]@\xadf\x16PH\x93\x81c\x90\x01m\
+Q\x9a1\x84dv\x9f\xd9r\x9c+\x95\x1a\x83C\x9b\
+\xadG\x87\xa5\x9a\xfd}\xd3\xb1\xf9\xe2\xb9t=\x91\xa9\
+\xe3\xe0\x01t\xa2\x96\xfd\xd2\x87\x97\x10\x16U:\xe7I\
+\xcb\xa4\xdf.3\xc6w\xe9J\x1b\x9cC\xdag%5\
+~\xfe\xd9RC~\xc5\x80\xac;m\x09\xed\xcc\xacw\
+\xfb\x12`\x01\x13 \x03\xd9\xe8=\x11\xdd'Z\x9b\xbf\
+\x1fw\x94u\xe2`\x02\x88\x1c\xbf\x12\x1dD\x8d\x96\x89\
+\xcf\xeb\x9dN\x09[\x99*%2\xf9\x9c\xb0.\xb0N\
+\xf5n\x81\xfa\xde\x1f4[k\xf3\x89\xdfb\x8c\x11\x8f\
+K\xed\x04\x14`\x80\x81n\x01\xd5O^\xc9F2\x84\
+\x002\x05p\xd8\x87\x89\x88a>\x5c+\xac\x03j\xac\
+W\xdd\x12\x92\xf2Z\x22x)JU\xaa\xdc\xd6/F\
+\xc5\xf9\xb3\x04\x01s\xc2\xb9\xa7\xa6\x99\xe6\x07\x80u\x93\
+\x99\xf6\xeb\x84\xad\xb5\xf4\xb4\x84t3p\x9f\x05\x08\x9c\
+\xbe\xac\x9fVS~\xd6\x1aP\x17\x83M\x00\x17\xb0[\
+\x88->e\xb6\xa7v\xfbX\x9e\xdbJ@\x0aX\x7f\
+\xdd\xee\xd4\x16 ~)\x031\xfb\x9b\xf5\x96\xa2\xa3\xc5\
+\x04\xa1\x8e\x9f\xe7p\x89L>7l\xfe\xfd\x97n^\
+\xb6yY\x1b\xb7\xb6\xef\xef=iy\xdd^:le\
+\x8c\xec\xbd$K\xa98\xf0\xe7\x19\xba:\x090\x9c{\
+\xbaT\x9c\x1a\xb6j\x0al^\xb70\xbbv\xf7\x0c\xcb\
+\xb6~/h\x8c\x9c\xa61!\xa0\xd6\x05\x83&K\x05\
+P\x80D\x89\xb2l\x0bX\x09\x97d\x10\x0b\x80\x0bp\
+\x14p%@|\x98H,@\x0b\x90\x08\xa0\xfc\xf5\xb0\
+N,\xd0>\xc5\xdf\x16O`\xfeHp\xb8>%h\
+\x00j\x81\x1e\xff\xdc\xef\xa7\x86Hi;\xe49\x5c\xa5\
+p\xfc6%\x0048\x04\xe0\xfc\x13\x8c\x1c\x00P\x02\
+ N[v\xc2\x00\x00 \x00IDAT\xc5X\x00\
+\x1c\xf1G\xc4I\xfc(\x81\xab\x84\x0d\x00\x00\xc0\x9bL\
+\xe5*\x91\xf3{\x00\x03\xf7\xc5\xbfs\xdd\x12k\x00\xa2\
+\x11\x00\x10h\x8e\x89X\xd7\xe5\xcb\xbc\xe3\xcf\x8a\xaf\x86\
+vv\x87% \x8d\x0f\xff\xd5~f\xfc<O\xfe\xb2\
+\xfdz\x14\xb3\x1b4\xdcF&\xc1a@\x00 c\x15\
+S\x5c\xc6i\xd0\x8a\xc2\x98\xaay\xe2\xef\x07\xe0\xa2\xfc\
+2\xfe\xa6\xf5\x06(\x1b\xd5\xff\x8d\x83D\x8aRg%\
+\x0a\xe6\x01\x80I\xa9d\x9e\x07\xf5s_y\xfeo\xbe\
+\x13\xd6\xc5a\xfcaq\xf8\xd8\x95j\xac\xfd\x177\x8a\
+K\xb3\x84\xe3`\xcb\xc8_\xbc\x0b(b\x9a\x1c\x9b\x1b\
+\xf9\x05\xf3\x00\xd2\x97\xf0@\xe7\xc8\x8d\x08F/\xe2\xf7\
+\xfd.C\xc7\xa1\x15(\x08p9\xea#\x02#P\x1d\
+\xfb\x97\xf7\xb5-?u.\x81\x89\x1b\x95\x815\xd1\x0c\
+\xe8\xd8'Sm\x0c\xe0\x80c\xedz\xbc\x9aH\x02\xb8\
+\xbc\xbey:/\x07\xa1\x00\xc7\x04\x11\xb8\x9a\xa0\xc6E\
+Mt\xd6D\xd5BJD\xb02\xea\x9e\x83\xfb\x91\x89\
+P#'P\x16\xb0\xa3\xe6\x9a\x90\xdf*$n\xa9\xdd\
+\xa72\xaf\x96\xc4B>.\xdb\xf5@\x5ce~G\xea\
+4\xa0e\xca\x89\xc6\xd1\xfaB2%\xfc\xfb\x9a\xe9^\
+6\x12%\x0a\xa7%5\x15\xd0sz\xce\x03\xed\x832\
+\x10\xd8\xbbcR\xd3tq@Q\xcb\x9aG\x8e\xf1\xe6\
+5a\x9d#d!h;\xa3Ot\x8a\x8fm>\x12\
+\xb6Ru\xab\xb6\xd6\x86\xff\xa1y;\xfdP\x87\xcc:\
+`\xcc\xc3q\x1e\xd8H\xcc+\xed\xb6\xb4\xd7\xbbBX\
+G\xd51\xcfm\xf4\x9e\x97\xf7\xb5 \x05\x98\x00\x22\xc8\
+\xa2\x83\x1ec\x85\xf6\x83\x80\xd5\xb8\x13W\xb1\xf0e\x9e\
+\x07\xd5\xeb\xc3\xbab\x8c\xc8\xf4Ojg8je\xd8\
+\x88mx\xees\xa0\x1e\x95V\x81L\xbf\x8d\xc8\xf8Z\
+\xf7\x0eJ5\xa42\xe1jM\x89\xe4Q\xd5\xb7~\x01\
+H\xa3X\xd0(\x16\xf8w\xcd*c'\x00\x10\x10\x14\
+c\xe56a\xdd\xfdC\xb0\xfb\x12\xa7MG\x9dtP\
+d\xa0Y\x1a\x19\x11\xf0=l\x0d0\x0a\xa8I\xf5\xf8\
+\xaay\xf4\xb99_\xeb}\xa8\xf9\xa2\xf2\xc9 *\x89\
+\xe1 %\xd5\x9fJ\xbe\xcc\xf5\xf6\x95a\x9d\x16\xc0\xbf\
+\x87\xad%/U\xeb\x88!\x91\xeb\xad\xc4*\xb5\x9dI\
+q\xba\x02\x1a\xde\x17\xd6\xed\xcb\xf6\xb9|\xee\xfa\xb1\xab\
+I\x16x\xf8\xbb\xcah\xc9\xa4\x0b\xf4d\x90_\xb00\
+s\x88\xb1MGMGO\xf3~\xbd\xf9\xaf\xb0\xb5]\
+\xd5\xee\x05a\x8d\x0a\xde\x02\xd5\xcd\x19\x9b\xafm\xbe\xd6\
+\xfa$7 \x03\xe5|s\xc7\xb0y<\x8e\x0dk\xeb\
+b\xb9_%\x122\x85_\xdf}\xa3Q\xc7e*\xaf\
+\xb2;\xa1\xd5`\xa7\x03\xb6\x7fVX\xb6\xed:\xa79\
+\xaa\xad\xf6?`\x80\x00\x02\xf6\xbf\x1d\xb6\x06\x5c\xdb7\
+\x86e\x06\xfa.m\x9d,\xe3\x84\xc1! \xc7\x90\xd0\
+\xe6*\xd5\xf0\x95\x8e\xc8\x107\x86\xc0\x93\xd3\x01\xfcP\
+\xb6\xb3zD\xb7\x0e\xb53L\xaa\xb7\x1a\xdaV\x02\xf4\
+\xe6\xd4\x10\xf8\x95\xee\x5c$\xd6\x99\xc0\x8eL[e\xba\
+1\x84\xa8\xf6g\x17\x8e\xc6\xc8\x09F\xc8\x83\xc3:-\
+\x0a\xe7U:\x9eJ\xd2J3 \xc5P\x0b\xe8\xb1\x9f\
+\x115$\xaev\xd7%\x00\x00\x18\xcc\xc1\xea\x22\xf2\xfa\
+\xa8\xac\xb5\xcf}\xbc\xd4\xd9o\xb6\xbbyP|\xcb\x01\
+W\xf3+\x13\xa6\xdf:\x00\xd9\xf9*c\x9a\xedb\xab\
+o}jfx\x9f\xdd/\x85u\x9a\x0a\xfc\x17\xc0D\
+\x02D\xf5s\xed\xc00w\xb2\xcdfe\x1c9\x94\x19\
+ \xd0 \xb0\xff\xdb\xef\xe6\xc0\xb3\x89\xe4N\x97\x99.\
+;]vm'\xb8yw\xd8\xfc\xf3O\x84uT~\
+%7\xba\xa7\xc8\xb8\x12k\xc4\x90\xb8\xe9<b7m\
+\xedr\x1f\xd8\x18\x16\x1cU\xe7\x02&Ff\x8a\x01\x13\
+\x05$\xdbgQ\x98\xf5\x87W\x13\xee~\x05\x8a2U\
+\xceq@\xba}9\x034\x81\xef\xf6%\xdb\x17o_\
+\xdc\x95r\xe4s\x98\xfe1\xace\xc2Z[\xb9\x90\xec\
+k\xa5\xa5\xaf_\x9e\xdf\xfc[m\xbc\xec\xef\xdb\xb7m\
+\xdf\xbe}[\x03F~\xaa\xb5Q|\xd3\xe6o7o\
+J\x86`\x97\x19\xaeR\xa4,\xe9\xe2\x90\xf3W\x0e<\
+\xf9\xc0S\x0e<y-\xb1\xda\xddw)!\xac\x04\x0d\
+\xc0C\xa9U\x8a V\xe9\x91\x92\x99\xe74\x0b\x95\xfa\
+\x85\xf9`\x1e\xf2[\xf2\xdf7\xe7\xdf\x1c\xb59j\xd5\
+\xe4\xd9|#\x8aG\xe6\xd7\x1f\x86um\xf8\x9cC\xce\
+w\xeb/\xbf/\x0a\xbf\x04N\x96b\xccg\xf8\xf9\xda\
+\xfe\xf3\x9al;K\x93F\xe0+pK5\xfd\xe9Q\
+a\xddu\x0a\x881\x01\xf2\xfc(\xf1\xc7\xec\x82R\xda\
+O\xfc\xac\x91a)\x01\x98\x8c\xe0\x02\xd4s\x9d\x96\x06\
+F\x06\xea\xe5\x0f\x11\x1d\x06,\x8b7\xc6\x1as*\xf4\
+(\xfc\xf6=\xcc\x9d\x04\x96\xf6\x1e\xdcl\x0d\x9c\x95\x9e\
+\xa8\xed\xc6P\xd1n\xd0:\x93`\x93\xb0\xe2\x17i\xc7\
+\x8a\xa1\x97ZUun\x032\x05\x84\xc4\x1b\x07\xb5\xfe\
+\xd2\x04\xe0\xd7\xf3C\x003\xfc\xd1\xb1k\x18\xff\x8b\x7f\
+j\x9d\xf1\xdf\xc6\x0c\xb8\xf7\x19k\xdc\xed\x07\xfc{q\
+\x93\xe7\xe8\xf7\xf8\x9d>\xcf\xf5\x88\x83\x00\x0c\xfcO\xfe\
+\xc2(\xe2\xe7\xfe\x94\xccj\x83;\xc6c>\xd7x\x09\
+\xf0\x01\x11\x83&L%H1!<g\x22\x7f\x12L\
+\xc6=\xcf\xa9J\x08(-\xe0\xff\x89\x8f\xccc\xeb\xce\
+\xfb\x0a\xc4\x9do\xbaHx\x8ej\xfd\x95\xeah\xff\x0c\
+\xb8\x1aD\xc8\xa3\xe7J\xeb\xba\xf2Sa\x1dCU|\
+f\x1f\x18\x81\x9csJ\xf4\xfd\x10fy\x95\x98\xe7\xb8\
+\xafm\x00\x03\xb79:\x07\xec\xa8\x01Y\xda\xcf\x85\xf5\
+\xfd\x1c\xa03\xb2\xa6\xffR\xe7B]\x1f/@\xa0k\
+\xe0\x04\xf0\x0eL7\xec`\x11\xe8\x0b\x10\xb2MN!\
+Q\x07Z\xce\xf90\xeaz\x89\x0e%\x15\xba&\x80\xdf\
+\xd3\x86\x8e\x8a6\xe4n\xa4\xba\x8c\xd4\x09\x13\xc4\x02\xb0\
+ h\x1c\xd0\x0481\xa9\xca\x00\x11\x0b\xce\x06=\xaa\
+i\xbao\x01\xef(\xde0\x8a\x18\x8e\xfd$\x05(&\
+\xbc\x8c\x85\xeb\x14\x00B\xdcOK\xcd\x83\x9bd\xa6\xd9\
+\x84\x19\xfb\x92\x8e\x1b\xca \xa6W\xd4F\x94\xf3tt\
+j\x1c=\x0f\xd7%\xc0\xcdq\xd9\xdc$\x1dp\x14.\
+5\xce\xd7\xca\x00\xd1FI\xbd<\x1d\xd9j\x17\x96\xfd\
+s\xeb\xfa\xf5\x99\xcd\xbe\xcfu\x90\x0aT0\x03\x00R\
+\xfa\x15C\x90\x9f1\xbb\x91\xcf\xe8\xdeol\x93rF\
+.\xe4\xb7.\xe2Y\x9b\xeb'\x15\x7f\xec\xe3\x89\xe2.\
+\x13\x220\xb5a\xc9\xe4\xa8\xa9\x05\x8cq\xc0r\x9e\x15\
+\xe52\x1d\xeb\xa2\xf4;\x98\xdd\xc7\xf0\xb9\xb5\x91s\xb0\
+\x04\xd4\x1c0H\xb0yo\xbe[\xafc;N\xef?\
+0}\xf4\x19\xaf\xb6L\xe6\xcb\xa8\x85\xe0\xe7j\xced\
+\xc6i\x1f\x00\xcc\x5c\xbf\xfd&\xe7\x91Z\xe6\x9aO~\
+?\xc5}J\xcb\x02p&\xa0\x19\xda\xc5\x14\xc3B\x0d\
+ \xca*$]f\x1d@\xe9\xb9\x8cj\xae\xfe=\xd7\
+\x19\x87\xba\x0e@]\x00\xb2\x9d\xa7vQ\xd3'\xc3\xe6\
+\x9f\xdf`\xe9\x1e\xa2\xbd\x16\x0ai\xad\x93<\x18v?\
+\x1d\xd6\xf5\xd3\xb6\xd1\xff\xedR\x9bIEz\xf3\x0fa\
+\xeb\x81Pm\x99d\x0a\xd2q\xafL^\xfe^\x01L\
+)\x16V\xf3\x12\xf0\x91m\x936\xf7\x0d[k\xab\x0b\
+\xd9\xc7\x04\xf0\xdc\x00\xae\x0e\xf8\x5c\x8f\xa5\xe9\x90L\x8a\
+\xe9\x09a\x1d\xa3\xe2\x1ba\x9d#E\x05=3{\xfb\
+\xd7\x0a[\x03\x8b\xed\xe9ak\xc01\x1d\x11\xb6\xce\x9b\
+9<Yj\xbb\xf3\xc0\xdd\xbe3l~}tR\xa8\
+1N\xde\x92m\xd3N\x9e\xed\xa1\xad?\xfb\x15\xa3?\
+{1\x18\xb2\xf4@\xfb\xd7\xe96\xd3/M\xf3\xb8\xec\
+o\xf6\x0f\x84F\xc0\xee\xe8%\xa3\xb9{o\x8a[\x9d\
+\x146\xff\xfb\xf7\xc2V`r\xf3\xcc\xcd\xb36\xcfZ\
+3\xc0{\xaf\x9e\xc3\xd8Ww]K\xa2\xc6\xf5\xd1k\
+`^m\xeaP\x01\xd3A\x9a\xfeWX\xce\xe7\xd3\xba\
+\xfd+\xdc\xf6?]K\x07\xca\x91\x07\xe0\xa5\x16B\x0b\
+\xc7?\xdaiO\xd8w\x01H\x99!\x9d\x1e\x12\xb6\xee\
+/\xdb\x13\xc2\xd6\x92\x0cTt\x8e~\x03\x00\xa2\xa6\xf9\
+3\xb3}zm_X\x0e\xd7\xc3\xc2\xba6\x8cY:\
+S\x01\x12\xe6\x83@_\xc6\xf5\x8c\x85\x817\xfd\xee\xf4\
+\xb0\xe9a\xab\x03\xb6\xbbz\xd8\x0ad\x99\xafEa\x97\
+a\xce\xccg\xads\xa2\xb9\x19\x08T\xffd\x00\xb4s\
+^\xa6\xd3\xef%\x90\xeb\xfd\x8b\xd2\x0dXH\xc7S)\
+P\xedW\x09\x0c\x14\x95?\x01\xb8:\xc7\x9d\xd3\xc4n\
+\x93\xd95\xfdTX\x8a\xe4\x85x\xe4;\xa6\xff7\xc5\
+:\xff\xfe\x22>\xb9\xbdI\xd8\xfc\xfd)akFY\
+iL1 \xae\xb2\x9c\xfbs\x98\xbf\x00-o\xdc\xfb\
+\xeb(5A\xd1\xb6\x8f\x14\x10\xa5[@\x02]\xf5|\
+\x5c\xb7\xd2\x92\x14\xdb-\xff\xc3\xba}hX\x97\x01N\
+G\xbb\xc4\xe9P\xa2s\x1dWw\x17L\x9bl\xa7\xd8\
+\xba\x10,\xb5\xdc\x8d\x92\xee>7\x07\xc3\x9a\xb8\xda\xd2\
+F\xf4?\xc3\xba6\x85\xb9?oo\x1e\xb6\xce\xd79\
+\xe8=\xa1e\xca\x9c+D`\xdf\xdfl\x15\x9b\xbb_\
+\xd8Z\x1a!\xd0&\x96\xb7\xb9T\xd8|,\xbd\xe3\xc0\
+\xdb\x0f\xbc\xa3\xf3K\x7f\xb3\x91\xe0#\x93\xf6\xa5\xd6v\
+1\xe7\xcd\xf4\xbd\xb0U\xcb\xa3\x18\x00\xcf\x0c\xeb\xe6\x9d\
+\xf6x\x98\x12\xa91\x03\xf0+\xed\x88\xcc\xfc\xf1\xb3\xcc\
+\xffz\x1e\xf6g\xe7\xa3sw\xa4P;\xd7\xa3`\xe6\
+j\x1d\xa3\x22\x98E\xc1\xe0\xba\x7f\xd8\xfc\xef/Z\xda\
+\x1a\xd6\xfc$\x8aj\xdf\xca\xf3\xbf\xfc\x5c\xa5c2\xf5\
+D(\x9dG\x18\x18D\xec\xf8\xc5\xfc\x94\xdc\x1f6\xff\
+-l]\x0f\x98\x97\xa5i\x82\xb1\x97%\x1fJ\xe7j\
+\xbfs\x9e\x0f5\xe2\x15p:\x17\x05\xdc\x18<\x18\x01\
+4\x04\x04h\xb4\x06\x9c\xefD\xf70$\x04\x8c\xb4\x81\
+\x00\x82\xfc9\xdd6\x94\xa4*]p.\xcb\xd0\xf3\xbb\
+\x89\x02\xabi'\xca\x98\xf3\xb5\xae\x83\xbf\xce?\xe5\x1f\
+\xf0\xeb$b\xec\x7f\xf6{\xfe\x9e\xf1\xe0'y\x1f\x01\
+\xee\xa8U \xde\xf1\xdc\xbc\xd2\xfa\xd05\x81\x7f$n\
+\xe0/\xf0\x0biX\xf9\xbcQ\xccO\x9c\x90\x09\xa3\xba\
+\xfe1\x9e\x1c\x13\xcd\x12P\x00\x9e\xa1+\xcea\x80\x01\
+\xff\xc5\xf5\x02H0\x11\xbc\x02&\x04\xee\x12\x8d\xc6\x13\
+\xb0\xc6\xdf\x1d\x99\xbe\xa3V\x00 IW\x0a\x09]\xcc\
+K\x9f\x03(\x95`\xe1\xef\x9b\xd7\xde\xd7>\xf4\xc3C\
+\xe3\xb2\xc3J\x8e\x01\x82\xe9\xcf\x8c\xcc\x84\x835aF\
+*\xc1\xd8\xd6\x80z\x7fL\xd3\x1fu\xc8\x06\xa4\x82\xd8\
+\x15\xc70\xde\xe5\x07\xb9\x01\xdc\xb4\x0bHd\xb4d\xf2\
+d\xa0\xc7\xeb\xe8\xa9\x1f?\xee\xc4\x06\x7fR_\xf5q\
+b\x0d\xe2z\x951\x1c\xfb\xab\x8f\x99\xd0\xb1K\x80\xc0\
+\xcb\x04\x00dx@\xc6\xc9\xdf\x99x\xaeo\x0c\xa4-\
+\xd4\xa1\x9fq\x1dP2\xdf(\x95~\x0f\xf5\xdb\xc4\xb3\
+\xf1\xd9\xd8<7\x14\x11\x0b\xde\x81\xa0\xc4\xc0DJ\x11\
+\xb0\x12\xf5\xa3\x09p\xc5\xa4\x16\x1f\x97\x9f\xb7\x22K\xcb\
+\x84\xda\xe6\xb8\x19\xd7\xef\xe5}Z\x98\x80\x8ec\x13\xd0\
+\x11\xc8\x0b@o\x99\x1b\xe5\xe5\xf3\x00\xf0s\x01\xb3\x05\
+\x06a\x13\xc0\xdf3)dwI\xaa\xbeyI\xac\x85\
+\x18[f\x0aK\xec&_\x0b\x89M1\x97\xca\x08\x99\
+O_\x9b\x97\xef\xd7:\x00\xc5\x02s=\x9fM\x91\xa0\
+w\xa6\xa3\xa0\xf6\xdaAk\x83\x06\xec\x18\x1f\x1b+\xa6\
+@RA\xeb\xefez\xcd\x135\x9eY\xc3U\xd71\
+f\xccm\x04\xe6\xb3\xf1B\x0dG\xe5\x97y6\xce\xe6\
+\x81\x8d\xddF\xe19\x8f\x01\xb0\x83\xc2Ae\xfe\x8e\x22\
+D\x0e\x06\xcfq,\x092\xcf\xd2AT\x83X@\x0c\
+\xa4ul\xebb\xbe\x03\xb4\xac\x0b\xa5$\x18.\x18&\
+\xae\xd3\xf5[\xaf\x80<\x0e \x11\xd0\xdf\x09\xeb~\xdf\
+:\xf2e?A\x95\xcdZ\xc2R\x91\x8d\x9a\xd2{u\
+\x9f\x83\xc2\x0d\xd1\xd6\xc6I_r\x81\x1ajd\x1e\x00\
+\xbb+\x87u\x99\xe1\xcc\xacT\x0d\xa6\xfd+\xfbwW\
+?\xe7\xcc\xb8U-\xfaYak\xa6\x7f\xfb\x8e\xb0n\
+\x1eX\xf7\x9e\xbb\xfd\xc0~\x88\xba\x09\x08\x13\xd0\xa3\x98\
+fF\xae\xc461q\x1cT2\x83\x19P\x9f\xf3\xf5\
+\xb0\xd5\xb1\xad\x12\x97\x0c\x0c6G\x87\xad\xb5m\xc4\x8d\
+\xb4\x0f\xdb\xfe[\xd8*\x06\xa7\xa6t\xf3\xae\xb0u\xbd\
+\xce\x01\xf7l\xf3\xef?7l~\xfd\x8f\xed'\xb7\x9f\
+\xecD\x1e1=\xbe\xbd\x04J\xfbG\xed\x1f\x1dT\xfd\
+\x02r\x88\x22\xa6\xd6Fc\x16\xdcd\x05p\xa6\xfd\xb0\
+\xf9\xf5\xcea\xf3\xeb\xd5\xa6\xabOW\xef\xd4\xac\xd3\xf1\
+\xdd\xdeb{\xe2v^\xd7\xdb_\x98\xed\xfaMt\xee\
+\x9e\x919\xc5\xac\xc0\x00+\xaa\xb6\xfd\x83cj\x1e\xa9\
+EL11Z!\x9b\xd3\xc2:J\xa5Lx\xc0\x86\
+\x7f\xb60\x83Z\xe6\x0b\x15\x17\xe5;\xde\xf5\xe2-\xf3\
+\xb1\x00M7\x9d\xef\xf0\xa6\x99!~L\x02WWY\
+3_\xd3\xc1\xb0\x06\x90\x5c\xa1\x01$Y\x8b\x8dr\xbd\
+}\xe9l/\xe9\xf6\xdf\xbc\xaf\xed_\x87\xadm\xec\xa6\
+\xe7\x84\xcd?\x7f\xea\xf6i\xdb\xa75\xea\xf7\xe20\xe6\
+>'\x00-@ \xdb\xe9\xaaE/\xd5q\x8e\xae\xfd\
+5\xef\xab\x80+\x01\x05\x87^f%\xf7\x1d\xcc\x12\x8e\
+\xf8\xe6WS4\xf5\xb8\xe5\x1c\x9d\xde\x1b\xb6\xfa%\xa1\
+\xc5\x1e\x14\xf1\x12\xb3\xd3>\x0c\xa0\x9a\x80\x03@z\xfb\
+\xbc\xb0n\xdd\xcb \xb9/\x14|\xeb\xce\xfa\xcd\xf1V\
+\xbb\xafM\xe5t\xad\xe9\x9a\xd35\xd7\xf6w\xda/R\
+\xff\x9f~gz\xd0\xf4\xa0.p#\x8e\xa8t\xc5\xf5\
+F\xd7\xf1ou\x81\x1b\x87Q\x80\x92b\x7f\x15\x80\xdf\
+1\xac;\x7f\xac\x7f@,?\xc7y\xf7;\xcd*@\
+\xaan\x0e{\x0d\x97X\xba\x80\xfcv\xd7\xce\x8a\xb8h\
+\xb4C}Q2!n\xd91\x19N_\xba,\x14 \
+'\x93}\xf5\x04j\xb5\x95\xcc\x00\xca\xfe\x8bI\xb1}\
+F\xd8\xfc\xfd\x1d\xa6\xdbOwX3\xfd\xdb\xfb\x86u\
+\x22\x9b\x01\x8b\xfeB\x03\x0e\xef\xdd\xd6'*?Q\xca\
+\x04|6/Z\xaes\x0e\xbb?\x1e\x81\xf7\xf6\xb6\xf3\
+>\x16Z+w\x0ek\xc0\xdaK\x03X\xab@>\x9f\
+\xc7\xe6%a\xdds\xcb\xf6\xa2\xfb\x9f\x0d[\x9f\xc7\xee\
+\xa2a\xdd\xbe\x97@\xd7\x81O\x87u\xfe\x8f\x8c:\x7f\
+[\xa6\x5c \xe1\xdc\xd5\x15\x07\x03\xc8\xf3L\x80\xbc\x02\
+m\xcc\xab\x0c\x841Ji7\x94(-\xbf\x0e\x85\x1f\
+\xb0h\x1e\x8d}\xeei2\xe4:\xaa\x8c\xb9\xf3\x84\xbf\
+\xce\x7f\xb6\x9ed\xf8\xf9\xbb\xb9\xbf\xcb\x84\xd7\xfba\xe4\
+\xd0b2>\xba#\xc9\xf4\x8emR1\x123!P\
+\xfb-\xbfK`,\xf0&\x8a8\x96\x18\xd8O\xf9?\
+\x02O~\x11\x86\xeec\xc3V\xd1C\x80X\xb5\xc5u\
+^\x02\x02\xdc\xbf\xf1\xe1\x8fYg\x18D\x98\x03\x12%\
+\x99p\xa8s\x1bp\x93\x0c9\x00]\xdd'\xd1\x5c\xe3\
+\xc0O\xe3\xf7\x8c\x00\xc0\x18\x97\xf1g\xc5K4\x12\x8c\
+\xc7(\xfe\xed\xfd\xbc\xff\x18\xb0J(f\xdb\xf7\x0a\xfc\
+=7\x81\xb5q\x19\xdb\xe9\xf9\xb9\xcf\x97\xf8Qb4\
+2U%*\xc6\xdf\xa7\xb1\x00 \xf0\xef\x09\xc4W\xc2\
+\x13\xd0\xebs\xc7.o\xba:`\x12\x8c\x00\x02?\x94\
+\xbf;\xb67\x14?\xf1\x030\x8d\xc4y\xe2\x13~\x83\
+q\x14\x0f\xf8\xb9R\xe8dR\x15@6\x94^\x1c<\
+D\xb4\xeckyC\xe7\x1d2\xe2?>\x97\x1a\x83\xbe\
+-\xdfw\xba>\xab\xda\x89\xc52\xb8p\x17@\x998\
+\x9fhU\xe1\xd5\xc6\xa5e\xc6n\xd8\x89\xae\xc4t\xec\
+\x03\x08\xaf\x06Hi\x82\x80\xc3\x00\x8cT\x11\x0b\xd2\xc4\
+\xb7\xe1\xc4_\x1d\xd1M\xc41\x13\xae\xfb@R%\x0e\
+k\xb3' 0\x11\x0d\xbc\x00\xc2\xfb\x8e\xda\x04\x16\xa8\
+\x9ar\x1b\x1f\xc7\x05%\x0c#@\xc0\xe6\xba\xdd\x97\x09\
+\xa6\xd6(\xafgsBX7q\x86\xcf-j\xba\x8c\
+\xa7\x89k|\x05N9^jD\x8a\xba}\xe6\xd0\x0f\
+se,,\xf3d\xd4\x8a\xb8@^7f\x87\xbf[\
+\xb5\x1d\x0e\xd5\x940\xf1!\x87\x80\x10\x01\xc5%\xb3/\
+\xb7\xfb\x82\xe0\xe6\x010\x1fk\x8dz</\xf6\xa5d\
+\xe2\x03\xd9\x96\xee\xc1K_u\x22x\x95\xb1\xe08q\
+,\x05\xec\xe6\x0d\x91:Z\x10\xee\x97\xba\xac\x83\xe9\xb2\
+\x09d\x99\x8f\xee\xfb\xc8\x9cw6N\x94(%\x1d\xd4\
+\xfb\x7f3\xac\xcb\xec\x01,\x04\xf0\xe6\x83\xf56\x8a\xef\
+Y\x97\xc6q\xbd\x8e\x0b\xf4\xed8\xcb\x81\xb3\x1e\xc6\xbe\
+\xae\x0e\xd0\xcc\xcc\x16@2\x8a\xb7\xa0ha\xbeX\x1f\
+ci\xd0\xc8\xa4\xb0\xbe\x88\xfc\xe5\xfc\xdd<*l\xd5\
+\x0e\xa8\xdaR\xf7\xe5\x80\x1c\xbb!`\xc0\xb8\xee\xec\xef\
+m\xbc\x0b0\xb3\x9eu\xcb\xd0>lTi\x1d\xdb\xcd\
+\x10\xdf!\xd2w\xb7\xb0\x8e2\x9d\x01}\xd5\xd2\xdb\xe7\
+\x00,J\x03N\x08\xeb2\x082o\xff_X\xb7\xbe\
+Q\xc2\xf4+\xfen\x93=[\x196\x80\x90'5\x8b\
+\x00\xee\xa6-\x80#\xd2\x96\x8e\xc1\xf4\x91\xb0y\x19\xfe\
+eX\xf6\xd9\x8e\x00\xef+a]\x09\x82\x83@\xc6c\
+\x10\xcf\xa9\xb6\x8e\xc9\x98j\x94\xf3\xdf\xefD\xde\x8c\xe7\
+\x7f\x86u\x0c\x96\xbf\x09\x9b\xb7\xab7\x87\xad\x0e\xed\xf4\
+\x92\xb0\xae\xe4\x09\xf0\x92\x0e}1]\x00XG\x86\xad\
+\x0e\x96@T\xfb;\xda\x0a\xdb;\x84\xad\x14\xff&\xe6\
+\xbf\xbfv-\xa9\x0c\xc5y\xb2$\xe9\x22\xbb\x0b\xef.\
+\xdc(\xfc\x8b8Z\x060\x07\xee\x1a\xd6\x95\x16\xa4C\
+\xb2\xff\xc4\xfd'\xed?q~}\xed\xfek\xf6\x83\x8a\
+\xfc\x0fa\x0d\x88h\x19\xdb\xbd\xc7.\x81V\xf3\xff\xe7\
+yw\xe0\xb2a\xf3\xeb\x95\x0f\x9cp\xe0*\xe9X_\
+yU\xb9W\xe2\xb1;r\xb6\xf3\x95p\xcf:\x9f\x01\
+\xe5\x02H\x81\xdc\xbd\x9a\xad\xe7\x04\x8d\x08\xfd\xb2Cz\
+\xed;KF\xaf\x9d\xa3\xf6q\x9a\x09A\xb5\xbfS\xab\
+A?e\xef\x94\xae\xe4#\xa9\xfa\xd3wg\x9b\xff~\
+{\xe7\xd9\xee2\x7f\xff\xf1\xb0U\xcd\xbe\xae\xcf\xe7\xa6\
+\xe6L\xab\xd9\xbdk'\xa2\x95L\x9f\xd6\x0e1\xfa\xb8\
+\xbf{\xe9\xe2P\xe7R\x9e?Jd\x88\x90\x95&@\
+\xce+\xd4\xe36\x0f?\x90\xa2h\x7f\xd2\x95\xb4\xec\x16\
+5\xf5Z\x17\x18\x85\x1cr\x0e\x93\xbe\xd9\xe9@\xd3\xc0\
+\xd8\xbbS\xd6jg[7]\x18\xa6\xb7\x85\xcd??\
+oX\xb7^r\xddU\xe0\xff\xe6\xb0n\xfde\xc0Z\
+\xfb4\x80\x15\xf0\x9b\xc0a\x05^\x9ecR\xaf}\xee\
+t\x9e\xb0\x5co\x8fL\x0a\xf4\x1fu@Av\x83\xd8\
+\xbdx\xc9`Ww\x085\xd5\xda\x04*\xadp\xffD\
+\xd2h0\xe9\xbe\x83\xf1\x02\x08\xcb\xfb\xab\xf6\xbc\xba\x0b\
+9\x17i*\xa0\xa2\x03&%J\xee\xddl-U\xc1\
+\xa0H@\xa8\x00P\xc0/\xbf!f\xfb[\x1a\x03\xa9\
+Qa\xab\xb4\x80\xd8a\xb6\x03,\x8d\x07\x99g\xc0\x03\
+\xc0 E\xff\xb4\xf5\x0c\xe2\x7fP\xff\xa7\x9f\x0dk\xfb\
+y\x13\xc9\xdc\xfc\xd9\x22\x22<\xefB\x8d98\x9f\xe2\
+\x0b3MW\x9c\x04\xa26\xbf\x176\xbf~as\xbd\
+\xd0z\xe9\xda~\xbeb\xfb\x8a\xa6-q\xf2\xee\xe4\xb6\
+o/\xaa\xfbD!S}\xbe\xc4Y\xf3y``\xe9\
+jR\x8c\x9f\x04\x5c\xec\xf7\xd3\xfb\xc3V\x00\x88\x1f2\
+\xff\xeb\x02<c\xaa\xe8\xde2\xf4e/\x06\x06\x7f\x22\
+Kv\xca\x0f\xcaR*\x9aJ\xba2\x14\xc0L4\x12\
+\xf3\x85\x1f\xa1+\x07?C\x17\x10\xdd>\x9c_\xde\xc7\
+\xf9\x02\x08\x13\x18\xe9:%Q\xc6\xff\x1cD\xf06\xb7\
+\x0e\xeb\xe6\xa7\xd29\xe2\xa12\xea\x02E]j\xf8;\
+2\xf3c@\xcd\x9f\xe1O\x0d\xa5\x9eU\xaak\x1f\xc9\
+\x92\x881s\x5c\x22\x85\xe2\x22\xa5\x8a\xba\xf1diS\
+\xf9\xb1\x12@\x18\x89J\x83\x01\x0c\x18F\xc6\xc3\xf3\xa4\
+\xf1e\xbe\x8cm\xd2\xf9K\xae\x0fsJ)\xc21a\
+]\xe0/\xf0\x1c\xbbP\x8d\xfe\xfd\xa8\xfd4&^\xc5\
+\x0f>\x97\xbf+\xfe\x19\x03U\xef7\x96\xd6\x1a?\xbf\
+\xe7\xba\x00\xaa\xfcI\x9f?v\x87\xc2\xf0S2\xca\xdf\
+\x02\xac\xf8\xbb\x911\xcb\x0f\xf4\xea~\xfc\xde9\x87\x8a\
+\xbe\x17\x93U<% \xa7\x89A\xf3\x0ds\xc3\xf3\x94\
+@\x01\xdc\xdb\xbf\x00\x04\xa3\x9f\xedz18\xf9\xcf\x00\
+p\xc0\xca\xc84\xf0s\xcf\xcbs\x1a\xfd\xdc<'\x0f\
+\xb6@\xf7\xf3Iu\xba\xe4\xb9\xbc\xd1\x88\xe0\xfc\xa8\x91\
+\xc1\xd7\x07\xebA\x0b\x07\xe3\xbb\xa3\xbb\x80\xce\x07\xba1\
+\x99\x88\xcc\xec\xd7\x80FF\xf4\x16\xdd\x0d\x0e\x81Y\xa9\
+\xe1\x07\x02s\xdc\x0a<T\x0d\x88\xc0\xc6A\xe5\xd5D\
+\xc9\xeb\xae\xfbEa\xe6\x80{\x906\x0e\x07\x9a\x89\xd0\
+wI\xf8\xaf\xc3\xfb>\xee>\xb3\xfb\xf4\xee\xd3\xdd\x83\
+S{(\x90\xbb\xfc \x227v9\x18)\xdaC-\
+s\x89V\xc8\x90B\xc8dDmt\xbe\x1f_\x05\x92\
+6p\xb5\xe8\x1c\xa8\x8b\xe7u\xe4A\xb8\xc1$\x00\x5c\
+\xb8^\x07\x81\xf1:o\x02\x09#\xa5\xdc\x84\x13\xb8\x8d\
+52~o\x04\x96\xbe{(\x02\xba\xfb\x83\xb0n!\
+\x02\x00\x04\xe8\x0f\xc9\x00\x1fu>U}\xf7N\xcdZ\
+;\xf3\xc3\xfdC\x8c\xaf\x96\xcc\x93\x9fK\x118\x81\x16\
+\xf1;\x19\x155\xf7I\x15\xac\xfb\xca\x85\xbd{K\x22\
+\xf0S\xd5\xdc,\x0b\xcf\xfcW\x13~\xbb\xac\xd9w\xfd\
+\x1c}\x81\xbf\xe7\x01Q\x971\x92\x09\x16\xb8\x12\xd7\x12\
+\x809H\xc6\xf9\x0e \xb0\x01\x18g\x1b\xbdy\xed~\
+\x1c8\xe6\xbd\x0d\xc7\x86h\xde[\xcf6^\xaf6\x22\
+\x01\xba\x0d\xde\xba\xf4\x0a\x081\x0e\x10w\x07lRx\
+\x8b\xca9R\xcf\xf4q\xd5\x15\xc1zu@\x10\xe3\x13\
+\xa0\xa3Rj\xfbw\xfff\xeb\xf8\x0c\xb5\xc2\xa5\xc5\xe0\
+y\x13\x0d\xcc\x00\xd8<*\x0a2\xed\x87\x7f\x0d\xeb\x02\
+%\xfb&\x91,}\xdc\xf3\x00G\xdd\xad\x92\x17\xcfO\
+;\xbf\x1fm~\xb8\xf9Q\x0bx\x9e\xde\xa8\xb8\xc4b\
+R\xe5]\x86\xa1\x98\x14\x99\xe9*\xa0\x82\xb8S~.\
+\x91\xaa\xed\x0b\xc3:-\x80g\xee=\xa39z\x00\x98\
+l\x93V\x8c\x0d\xb5\x99O\x08\xeb\xf6=\xed\xc42\x80\
+\xd3\x16o\xff!ak\xe6wzu\xd8\xfc\xb9o\x09\
+\x9b\xbf\xff\xefak\x8d\xf1\xf6Zak\xa6\x7f{\xd1\
+\xb0\xb5K@9\xaaD:s?\xdc|.\xac{\xee\
+\x99\x01\x9b>\x14\xb6\xb6\xb1\xdc|j\xf3\xc9\xcd'\xb3\
+]\xd8Ow\xfbV\xce\x7f5\xb7\xa5Z\x9f\x94\xf4\xa2\
+f\x1f\x156\xdf\xd7-\xc3\xe6\xef\x7f\x14\xd6\xc4\x83Z\
+\x80\xbe\xbdO\xd8\x1c\xf0\xbf/l~\xbd\xd9\x81\x9b\x1f\
+\x98\x9f\xc7\xf6\x01\xdb\xfbo\x1f\x90\x0c\xb7\x9f\xef\x02\xda\
+3\xe7\xf7?\xb3\x9b\xf7\xd6\xcf\xb1\x8b\xf6\xce\xe6:\x9b\
+\xeb\xb6\xcc\xde\x13wOh\xe2\x85\xd9\xa6\xb1\xf6\xf1\x1e\
+0\x88\xfbyj\xb3\xea?]\xf7\xc7\x11{y\xb3X\
+\xb7\x9fm\x99,\xdd$\x92y\xb1\xf7\xb4T1\xcf\xf5\
+>])\xac9\xf0\xf7\x09\x07\x9e\x83[\x0c\x8et\xa0\
+\xa7'\x85e\x80\xf3KyY\x9b\xe5\xbc\x9e.\xb4\x02\
++\xdb\x03a]\x863\x81e\x01QQ\xa6#0\xfd\
+xR\xc2c\x7f\xbb\xc6l\xd7\x5c\x99\x86E\x81\xce\xcc\
+j+A\xbc\xe4\xfa9T\xd3\x0b\x10\xa1ZNSA\
+\x1b%\xcc9\x9a \xc4\x14e\xc6\xb4MLFN9\
+R\xf63\x0e\xf8w\x16\x07\x92\xb6NQ\x97ex\xd2\
+\xb1\xab\xfe\xf1\x00\x93d<T\xeds\xaaIOw\x88\
+\x9c\xf5\xfcz\x8b\xd9N\xcc\xfd\xf2\xbc\x1d\xe0\x92\x00\xe7\
+\xeeG\xd1X\xb9\x89\xd1-\x81;\x113\x8e\xb2R\xad\
+d\x0a\x00\xb4\xaa\xddm\xf6\x9d\xaf\x12\x1c\xb5\xf0\xe9?\
+4\xed\x8e?\xcfL\xec\xcfu%\x017k\xfd~\xd6\
+\x00*\xc2\xc6\xd7v\x81\x98\xf3;\xae\x22\xda\x8d\xbe=\
+l-\x85*\xc6\x8b\xb6\x80\xaeK\xc0\x96\x0c\xbc\x0a\xf4\
+u\x89xY\xf6\xe9\xa6\xb5\x90b~Ur\xa0\xe43\
+\x9fg\xf4\x1c\x88\xae\x03\xdavn\x1f\x1c\x96]\x03\x9e\
+\xd9\x89<\xa7\xe8\xe3\xf6\x19\xdbgn\x9f\xd9\x8d\x9bZ\
+\xfe\xe3\x16\xea\xfe\xfc\xaf\xcf\xda>+K\x86N^\xbb\
+.lO\xde>d\xfb\x90\x15\xf8\x9b\xf7\xe6\xa5F\x5c\
+\xdb\xbb,\xb9\xc1\xac\x9c^1\xbd|zEw.\x1d\
+\xbf\x00\xd4\xbb\x1b,\x00Tug\xc0\x00C\x05\xe6\x8f\
+\x5c\x22\x81\xe5_\x5c4\x93\x88\xbb\xee\xfe8\xac;?\
+P\xcdS\x05\xbfJ\x90\xf8gDA\x9dg~\xee\xfc\
+\xe5\xd7\x0b0\x9d\xc7\x02\xc9\x0b\x86u\xa2\x90\xcei\x00\
+\xd9)\x090\xf27\x00\xf4\x02\x5c\x81\x19\x00Z\xe0f\
+>*Q\xd1\x9dG\xcd\xb2\xd2N]\x93\x00\xe17X\
+\xba\x1c\x94\xb6\x88\x80\x9d\x9fp\xd7\xb0n?\xe4\xbf8\
+\x871_1K\xf8\xa9g\xb6TR\xfc\xfe\xe9\xed\xf7\
+\xd5\xdek\xd7\xe6~\x00\xb5\x00\x18\xdd\x9bn\x1e\xb6\xae\
+\x7f\xfbt\xf9w\xb4@\xf8\xc1\x80\x12\x09\x0f\xeb\xcc\xf5\
+\xa2\xa6[\xe7\xb4\xc8$b\x92\xe1Z\xcf\x83\xb8e\xd6\
+\xba\x97\x88!\x06\xa0\xaf\xb1\xa4\xc0~\xc7\xdf\xb6\xef\x8d\
+\x09\xd3\xf1\x95\x9f\xef\xf7\xc6D\x93\xf90\xc6\x8d~\x9f\
+\x7f9\x02\x01\x122\x00\x97,u*\x80\x05 \x99\x80\
+]\x01H\xfcP\x818?w(\x09\xd8}/\xac\xdb\
+\xd7G\x11D\x89A\x09\x1e\xed_\x8d3\x7fV\xbc\xe6\
+\xf3\x01\x0f\x9e\x97\xebq?\xc3|\xa9\xf8X)Z2\
+\xd86\xef\x09\xeb\xc6K\xa2od\xea\x8f%\x99\xee\xd3\
+s\xe5\xc7\xfb\x9cd$\x1cl\x97\x19\x07\xdf\x1c\xbe6\
+J,\xb18\xb5\xff}\x1f\xc8\x83]\xc0\xbc\xcb\x0e\xe9\
+\xc9\x18h\x99\x025\x0b\xd7\xe8\xda\xf6\xb9P\x14%\x0e\
+JL\xab)\x07\xa4\xef\xef\xe8\x02\x01\x01n\x5c\x8d\xbf\
+\x1a\x91x,\x17\xec\xd4\xce\xd5\x16\x0b\x08\xc6~\x88j\
+\x14\xb5-4a\x05\xe0\x02]\x01\x12\xc4\x07\xf5\x11\xb3\
+\xc1\xfd\x0b\x84\xdd\x97\x071\xaaI\xca\x9c\x1f\x99\xf7A\
+\xec*\x11\xb9r\xc4}\x09L\x04\xae2s\xde\xdf\xc1\
+\x90\xa5\x13\xd5\xb6Pf_\xa0\x9e\x1b\xf8\xe6\x02\xe9\xe8\
+\xa1\x928(\xd4\xa2)\xc9\xc8Z\xb79\xa8^2\x09\
+7M\xca5\xa6\xc2@\xc1\xae\xcc/\xc7\x94ce\x1c\
+-\x18\x19\x02\x80\x82\xeb[\xa9\xe1\xcbs\xfaN\xa9v\
+.\x1b\xdf\xdf/\x07\xfa|\xf0-\xd7+\xf0MG\xa8\
+\x02\xb0\x14\xa3\x91\xd9\xa9v/\x02}5m\xe6\xb1\xb6\
+nj\xf1\xb5\xcb!z\x94\xb5l2\x9dU\xc3\xf6\x9d\
+\xa1$\xc6F\xb67\xd4\xdc|.\xe7\x95@Z\xe0\x02\
+\xb8\xc9\x1a\xeb\xda\xf0 \xe8(:\xfeN)\x80\xf9i\
+\xbez\xb5q[7C?\xd7\xda(S\xbc\xeb0F\
+\x8d\xfb\x10\xd09\xf8\x00/I\x0d-\x06\x84\x8d\xcb8\
+\xca`Y\x9f6<\x88\xba/\x81;`\xe2;\xb5\x1e\
+\x96\x8d;\xa9\xaf\x00\x0e\xb5\xd0\xd5\x15@@\x0d\xe0\xd2\
+\xce\x09\x03CM\xa9\x8d\x17\xc5\x1f\xa5\xcb8igG\
+}=)~\xa8\xe6E\x0d\xce\xb6k\xd5\x97;\x9f\x7f\
+Q\xe9R\x0c\xac\xe6\x9d\xb6s\x0e\x10\x22I7_\x1c\
+\x92B|\xb3\x06\xb6\xee_\xcd\xb2u\xe39\xa0\xd4z\
+>\xfa\x12C\xec\xed\x8b\x1cg\xcc\x81\xcb\xa6j~R\
+b\x05NE\x09\xce\x12\x80\xe9/\xc2Z;\xb3Wm\
+^\xd5\xc6\xe5\x96m\x5c\x82B\xff\xac\x8e\x99\xa2]k\
+:\x86\xb3;|\xb9\xa6\xd6\xae+A\xce\xdb\xe9\xc9a\
+\xf3\xeb7\xc2\xe6\xd7S\xc3\xe6e\xfd\x8e\xb0\xd5\xef\xaa\
+LT\x22\xe7\x18K\xda\xee\x1d\xb8FXG\xb9L\x87\
+\xdb\xbc\xda\xde)lu\xd4*\xa3\x98\x99\xe5\xe9\x82a\
+\xdd\xf3xq\xae3\x19\xef\x0f-\xe3\xd4(\xbf\xf7^\
+\x03\xc6\xea\xbf\x8d\x02}\xe1\xa5&y\xff-\xfb\xff\xb4\
+??\xc7\xfd\xd3\xf7O\xdb\x9f\x0f\xe8\xfd\x9b\x84\xad\x01\
+\xcd\xf6Ka\xf3\xeb\xa5\xc2\xe6\xeb\x7f\xf9\x81W\x1c\x98\
+\x1d\xfc\xed\xff\xdb\xbek\xfb\xae6\xee\xafn\xe3\xfe\xbd\
+\xa4\x9e>gv\xc0\x9e\xd31B\xac\x07\x07\xb4\xfd\xf8\
+qY\x1a\xf1\xa9\xcd\xa77\x9f\xca\xf3\xe2\x98N\xa5\xff\
+\xc9M?\x1c\xef\xaa\xa8\xd3\xcd\xdd\xfb\x8d|\xdfc\xbb\
+\x0c4\xa0MI\x94~\xd6?^jjw\xbf[*\
+\xd1m^\xcda\xd2\xb3\x22P\xda<\x22l~\xfd\xcb\
+\xd9^\xdde\x94\x01}D\xcd\x88y\x05\xe18\xfa\xb5\
+\x9f>-\xa2\xaf\xda\xec\xd1\x00xh\xd8\x1a(\xa3\xf2\
+N\xff1\xdb'Wu\xfd\xe9]a\xebs\xdd\xfe^\
+\xd8\xfc~g\x86\xcd\xaf\xef\x0d\xeb\xee\x87\x03\xf9\x9c\xbd\
+g\xef=\xbb\x13\x0dL\xc6\x05Q\xbbR\xb3\x07\xe8\x1d\
+\x17\xd6\xad\xbb\xdc\x9f\x01T\xed\xdd\x9e\xdd1\xf48\x82\
+2\xea\x09\xac`\x0al~9lu\xfc\xfd\x9e\xc0_\
+\x9b\xca\x12\xb7\xc2\xe4{m\x8a\xfd\x05C\xe6\xa5YS\
+\xfc\xb0\xd5Q/1\xcdk\x86u\xdd\x08\xd4\xf4?\xbc\
+\xd9\xde\xee\xc4\xb0.\xb0#\xbe6\xa8yW\x22!\xf7\
+\x8d\xcd_\x85u\xfbx\x02\xa2\xd3c\xc3\xba\xee\x03j\
+\xa29\xb4DP\xdf\xd4:\xc7\xaf\x01t\x06\xf0%\xa2\
+\x08\xf0\xa1Q\x90\x81}\x018\x09|W \x9f\xedW\
+\xabd\xea\xb9{\xcf\xdb{\xde\xba\x9e\x89\x5c\x96h\x96\
+qRB\x90\xe2\x9f\xdb\x9b\x85\xcd\xf7q\x9f\xb0\xc68\
+i\x9a\x02\xbb\x8f\xe6\xfd\xe798=q\x01\xb2\x88l\
+\x05\xad\xa4\xedW\xce\x87\x8b%E\x1f\xa0\xf2\xa4d\xf0\
+$CA\x9b\xda\xd9\xfbm\x81\xf1\x81\x97\x86\xad\xdd\x14\
+\x04\xe8\xd3\xe7\xa6\xcfO\x9fk%\x8cM\x14\xb4\xc4^\
+\xb3\xeb\x12M\x83*\xa10^\xee3\x19+\xa5.O\
+\x94\x92_\xc5\x9f\x10\xf8\xff~\xd8\xcal)1=\xa2\
+\xaf2\x8b\xce\xe7\x04f\xaa{M2\xadJ\xd4\xd19\
+C\xa5_\xc0\x91ZE\x05\xe8\xf0\xbb%\x96\xeco\xfc\
+\x1e\x81\xb4@\xd7\xf9,\xb0\x19U\xe6%\xd4F\x8d\xa9\
+\x04\xce\xeb\x5c&B\x09hwn\x19g\xa5\x0b\xcei\
+\xfb\xa2\xcf\xc7\x1c\x120\xfe\xcb\xfc\xff\x7fi\xfe\xcc\xb7\
+\x9a?#\xd1\xa7\xcb\x11\x119\xf7\x03\xd0\xc0XS\x9a\
+A\xf3\xc3\xfd\x8e]\xbf\xf8\x8d\x00\x00\xef\x831\xa1\xd4\
+\xda\xbe\xe3\xfa\x004\x18\x8e\xb9\x8fT[F\xe2\x87y\
+\x9f%\xee+N\xe0W\x8e\xa5\x9fc7\x80\x91\xf2o\
+\x9e\x09\xa0K\x14<\x03Z\xf1\x0f\x00\xc0\xfd\x89\xab|\
+o\xfc=O\xfe\xa3\xeb\x18\xfa\xdb\x97V\x0cf\xa5\xe7\
+\xe0}\xf8\x7f\xa8\xf6\xe2H\xc0\x09\xe0F)\x94yz\
+\xb8?\x7fh\xf7\x03\x1aI\xc7\x86\xadZ6\xc5`\xf1\
+>\xe2Bq\xdf\xf0\xf9\xe5\x8f*\x85\xe2\x07J\xf0\xea\
+\x02\xe4y\x11\xe1\x95 \xe2'\xba^\x09;\xe3..\
+\x00\xb8aB\x98Wc|\x9d\x7fw\xb0\x85[\x9f\xe9\
+2\xf2Y3\xd0\x02\xcb+v\xb5\xfcS\xd3\x81?T\
+M\xff\xa8\x81Z\x7f\xbe.\x00\xf0\x00u\x150PK\
+\xc8thFc/'\x14\x95\xc8/\xe6\xfb_\xa0\xcb\
+x\x8cT!\x81\x92\x00s\x18\xd0\xbaa\x07\xb7\x0c\xbb\
+>\xec\xd9~\xa72\x89&\xba\xbf\xb7PQ)e\x5c\
+\x89\x8e\xb9?\x0e\x04\x8a\xa3\x80\xd9\xf7\x0eV\x0b\xce\xc2\
+\xb7@l@\xfaz\x9aX6*\x01[\x1e\xf4%v\
+\xe6\xc0u]\x0eT\xe3\x94\x81B\xf5\xb3\xbcm\xaa\xa6\
+\xda\x90\x8d#\x86\x05\xca\xdb\x08\xa4`\x06\x8c\xed. \
+\x83\xa8\xee\x02\x13\xcfC\x1b8H\x9d\x8d\xa7\x07\x90v\
+\xed\xb9-\xd7\xfb\xf9\x9c\xc8\x02\x1d\x8e&\xe0\xc1\xefs\
+\x9c\xc7\x9a\x1a\x1b@n0U\x12\xc1\x81\xf3\xbe\xd9\x97\
+\xb7\x1c\x89D\xb2\xab\xd4\xc1\xe7\x0d\xe2|{\xef\xca\xda\
+\xa4c\x12\xf8\xb9X\xce?\xf3\xce\xc2\x04\xf8\xa8\xa1\xfc\
+hn<\x1c\xb3/\xe7\xbc\xbcV\xb6\xe3r0\xa0\xb6\
+\xca\xf8)\x81\x00d8P\x05\xc4\x90G\xeb\xc0<[\
+\x99\x19\xcb:\xf55\xaa\xbc\x8e\x8c\x00\xf3\x7f\xd4\x02\xb1\
+\x9em\xd0\xe6/\xa0\x07U\x1e\x15\xce\xfb)11\xcf\
+iA\xa0\xe6{\x7f\x1b\xbc\x80:\x01\x8b\xa20\xda'\
+\x12\xd1\xd6\x86O&\xab\x9eW\xae\xd7\xaa\x19\xce\xf5\xb4\
+\xfb\xed\xb0n\x83L\x07\xac\x02~\xa2x)\x8aV5\
+\xfeJ3\x00\x812\xef\x007\x01x\xaa\xe9\x13\x03*\
+\xb1\x22\xcf\xc1\xbc\xe0p\x99O\x90\xdf\xbc~\xc0\xab\x9a\
+\xffR}Us(s\x02\x10\xcc\x8c\x18\x87w\xef\xcf\
+\x9b\x15@Z\xfd\xc1usM\xb12Z\x19M\x1a\xec\
+\x0d]-\xe5\xcb\xf7^\xd62\xc5!\xb1\xf8\xe0.\x80\
+\xa4r\x9dj\xda%n\x96\x01\x12GGF\xb8\xfa\xd9\
+\x03\xe2d\x22\x92y\xb1\xd9\x86\xad\x81s\x95P\x10\xb3\
+2\xcf\x89`fm.\x11@\x22\x88u\xff/\x0e\xeb\
+\x982Y\xba\xb2\xbdcX\xd7?\xf7\x87\x9b\x1f\x05\xa3\
+b\xfb\xd1\xb0\xae-cf\xce\xa7\xe3\xc2\xe6\xd7\x07M\
+\x0f\x9c\x1e8oo\xaf\x0f\x9b_\x9f\x1f\xb6:\xf4\xdb\
+\xd7\x85\xcd\xfe\xe8U\xc3\xe6\xd7\xaf\x86\xcd?\x9f2\x13\
+\x98\xfd\xcd\xa3`\xa9\x95,=o\x09`JlK\xa6\
+*3\xbbU\xc2\xb4\x1f\xb6\x06\xe2\x15@\xdegwR\
+\x0b\xf4\xe2T\xf8\xbf\xad;\xc1\x95wW\xe9\xa8\xe5\x0f\
+\xdc=(ju7O\x9f\xedi\xdd\xfa\xfcj\x93/\
+\xddk\xdd\xceo\xdd\xe6qk\xc3[\xcc%T`*\
+\xd6\xa8\x88\xe6\xf5\x17r\xbd\x9c\x9a\x19\xd7\x08\xe8^\xbb\
+\x9eO\xbb\xdf\x0b\xcbZ\xee?_\x993\xdb\x8b\x87u\
+]\x05R\x5c\xb0\xd5`\xff\xd6\xdae`\xf7?R\xcc\
+\xf1\xf2a\xf3\xeb_\xcf\xf6\x865@.\x06\xc8\x9bf\
+\xfb\x9b\xae4e\x7f\xe9\xc2\xc0?hb\x8a\x8fY\xcf\
+\xe5\xa0\xd5\xb4\xda\xf3\xa7\x86uj\xf4\xb9\xbfb\xc2\x00\
+\xf6\xcb\xb1B\xd5\xbdNf6\x7f/\xdb\xc8\xda\xa78\
+\xca\xf6Ym\xf6\xb2\xc6\xbb(\xe7D@1Jr\x9c\
+\xa7\xdf\x09\xeb\x00\xce,y\x89J\xfe\xa8\xe5Hos\
+o\x00\x00 \x00IDAT\x9f>\x1b6\xbf\xdek\
+\xb6(1\xf8\xfa\xa2\xfe>]\x22\xacS\x95\x1e(\xff\
+\xad\xc6\xfe\x01+\xd0\xdd\x02\xee\xafd\x86\xfc\xf5\x19\x08\
+>\xa2\xcb$\xc6l|\xfe\xda\x8e\xb49\xb6\x17\xce\xfd\
+rvl\xa7W\x85u\xcc\x08\x81\x17\xc7\x11\x90-@\
+\x93\x00\x11\x88\xa2\xecg\x8d\xfc\xf4\x96\xb0\xae\x0b\xcf\xb5\
+\xc2\xba\xfd=\xe0\x987\xb4\x84\xc0\xf29\x00\x06\x8e\xf2\
+\x87\x93\xa1\xe5\xfcr\x1e\xc8\x94\xd1\x8a\xc86\x88\x80\x8a\
+\xe9\x95a\x9dv\xc6\x0f\xc2\xce\x85\x91\xf8\x9a\x14\xa7\xcb\
+\x9a\xecR\xb7\xcf}C\xa01\xdd%,\xdb~\x9e\xaf\
+\xb5\x1bm\xef\xb7\xfd\xde\xf6\xbb\xdby]m\x9f\x1e6\
+\xff\xfc\xef7\x7f\xb7\xf9\xbb\xf9\xfb7\x84\xcd\x7fw\xf7\
+\xb0\xa6\xe6?\xdb:\xbf\xe7]\xa0\x016\xf6e%\x11\
+\x9b7\x86u]~\xf8{\xa8\xe5\xba\xac<\x22K\xb2\
+\x9c\x97\xb9\x1e\xab\x9d$m\x87l\xe3Y\xf3$\x19i\
+\xad\x07\xc4\x83\x9a\x7f\xb4\xf8kcW.~\x02\x91\xe5\
+\x1c\xc7\xdd\xaf\x85u\xcc\x83\x07-\xefC\xb5\xbf\xfc\xe9\
+\xd4&)\x7fZ\xbb[\xed\x06\xf9\x13\x02\xaf|\x9e\xc5\
+\xc8\xf3\xefC\xad}\xd5\xf8\xfb}~>\x7f\x8bV\x81\
+\xf9c\x9f\xf5\xc5_\x1aK$\x05\x92\xfc \x09\x0f\xfb\
+\x22\x80`\x14\xcdv}\x00\x12%g\xa3\xd8\x1c\x7f\x8c\
+\x1f\xca\x8f3>\xfc}\x01#*9\x80A\x82\xc8\xab\
+\xf7\xe3_\x01\x06\xd2\xbf\x1dK\x1f$\x026\xb7\x0a\xeb\
+\x80\xa0\xa1=\xdc\xc8\xd0-\xc0\xd2\xef\x0d\xa2}\x15\xaf\
+\x8c\xed\xf8\xc6\x12m\xe3\xe6{q\x80q0\xee\xf6\x17\
+\xfb\x8duo\x9e\x0c\xcc\x91\xf23e\xe0\xfb\x92\xf6\x8e\
+\xda_\x89c\xf3\xc6\xfe5\xd6\xce\x8fq\xe4X\xf2 \
+\x0e\xb2\x7fx\x9e?\xa9M\xa2\xfb1\x9fF\xb5~_\
+\xd6\x9b\xd2\x0dm\xcc\x89kb\xd6H\xa0z_\xfb\xd9\
+X\x02a\x9c\xf8\x99~_\x82%E\x01\x0f\xd6\x85\xec\
+\xb7\x5c\xec\x1a\xa0S\xdb\x17\xd8\xf7bdGw?'\
+\x0a\x08\xe1\x80\x98p\xd0\xbdo\xe0)Gt\x81e\x84\
+\x09\x1d\xd5\xa3j\xce\x83\xe2\x7f\xb9\xc3U\x0c[\xb8q\
+\xe9\xcc8\xfct71d\x86\xbf?\xdb\x0f\xba\xcc\xb4\
+\xbf\xf3*\x00\xf7\xe5\xc1\x8f\xb5\x12\x16\xf6\x88\x10\xa1\x16\
+'\x95\xb1\x1c\xf7TS\xad\x8d\x05\x00p\xcd\xa4\x9c\xaf\
+m\xf6\x0eA\xfc\xaa\x86\xdf\xdf\x8db\x12\x19\xa8\xa3\xb2\
+\x96\xa3\x22`\xf4@s\x01A\xa6\x0a9r \x8fm\
+w\x04n\xee[\xa0\xabF\xf0\x9f\x17JT\xdd\x17\x84\
+\xe9\x139\xa1\xd4\x80g\xcd\xdb\xe6vK\xe6c\xdel\
+\x16\xc7\xdd\xb8\xb9\x1f\xaf\xe7\x1d\x16\xea\x18\x90\x8e\xb5G\
+c\xbbF\xf7oc\xb1a\xfb=\x0b\xcf\xfb\xfb\xb9Z\
+C%\x00\xcfm\xb6n\xb8cfz\xecO\x7f\x8f\xb0\
+\xae\xc4 \x19\x18\x9b\xab\xe6<\x93\xe1CUK\x07\x9c\
+\x08O\x1dh\x9e\xb3\x80\xf5\xba\x19\xe0\xbf{9(\x8a\
+\xa2*`r\xe0\x98O\x10\xc9\x04Z*\x10U\x1bL\
+[\x82\xe6C\x22\x96\xc5\xfcp\xc0\xfbr\xd0\xff\xa4~\
+\xab\xc6\x03\xc5\xda\xdf\xdb\xb0Q\xc4\x89\xff\x00\xb0D\x9c\
+~\xdfs\xca\xfbG\xb9\xab\x1a*\x1be~ne\x12\
+\xd4\x82kwi\x1d\xa3\xeab(\xa4\xf8h\xed?\x0e\
+\xcc\xa1\xd6\xafj\x08e\xb2\x1c\x10\x98\x01\xd9\x9en\xcc\
+H\xe9O]@\xc5\xa7\x97R\x1f}\xbew\xf7\x0d\xeb\
+\xf65\x14F\x81'J\xbe\xf6B21\x19\xe0m.\
+\x1c\xd6\x8d\x0f\xf5t5\xda\xd9\xd7\x1du\xdb\xfb\x95\xf8\
+\xa0u\x9e\xfd\xdd\xab\xbf}\x02\x9c%\xa2\x85\xb9\x93\xc0\
+F\x05\xa2\xe9\xc0\xcf\xa3\xfe\xc2&\x1at\xff\xb0\xaeV\
+9\x01\x9d\xe9\x01a]&\x12\x05\x8e\xc3}L\xd8\xfc\
+\xfa\xe9\xb0\xb5\xc6\x7f\xd3\xbe\xe6\xd77\x84u\xa2|\x98\
+\x122\xa4\x7f\x1c\xb6\x066\xdb\xaf\x86\xad\x81q\x84\xef\
+\x11\xc0c\x86T{\xc5tX\xb4G\x9b\xdd\xec\xa5]\
+\xe0\x1d\x97\x00k\xf3\x90lWw\xbd\xa4\xd2\xe6>3\
+\xfdM\xd8\xfc\xf9\x7f\xb8\xb4\x97\x9bn7\xddv\x9a\x1d\
+\xee\xe9\xc6a\xf3\xf4\xbew\xd8\xfc\xfd\x0f\xc3V&\xcf\
+\xf6Va\xf3\xeb\xad\xc3:1\xc2\xf7\xa5\xa8\x0f\x15l\
+\x19L\x81+FC2\x90v\xb7\x0e[\xdbPm\xfe\
+OXG\x11}\xfc\x12\xd8\xcc\xcfv\xd9W?6\xef\
+\x06A\x91\xbfmj?`\x86`\x90].\xf7\xc9\xeb\
+e\x00{\xeb\x85\xa9P\x19\x5c\x00\x00\x87U{8@\
+\x0dq6\x80L\x02D5\xbfC\xb3e\x93m\x5cO\
+o\xc0\xc5\x8d\x1a0\xc9\xf1\x14\xa0\xca<\xe9w\x9fZ\
++\xbb\x03\xbbm\x88\xa05\xc9\xa8\xe8_\x7f\xc2t\xa5\
+iv@\xa7\x9b\x86u\xf3\x91C.\xc0\x8eu{\xf7\
+\xae\x168\x01\xbd\xe9\xdba\xad\x96{\xb6\xf9\xf5?\xc2\
+\xd6L\x8a\x1a\xfa\xed\xf3\xc3:J\xbf\xe7#S\x9f\x81\
+_\xf0a\x1a#\xe6\xda\xcb9Q\x0c\x13\xfb\x22\x87t\
+\xa8\xc5D)7?\x88\x09\xaau\x9e\xfe<\xac\x1b\x17\
+\x80\x04\xa6R\x8a\xc0M7\x0c\xcb\xda\xe3\xf7\xaeTS\
+\xc0H\xf9\x1fW\x99\xedgW\xffl\xdeM\x1e\xd7\x02\
+\xb1\x08\xaf\xff\xa4\x0b\x5c3c]\x09\x94\xc8\x93\xbf\xa5\
+SsO-\x80\x1a\x97\xe0\xd9E\x09\xcd\xe7\xc3V`\
+ms\xe9\xb0\x8eY\xe3\xbc\x0c^\xd4\x8dW\x00Q`\
+\x01X)\xad\x0b\xfb2G\xda>\x9a\xfb\x0bfL\xf3\
+*\xbe\xdc\x01\xe8\xfc\x00\x8e5`\x10 +\x93GS\
+\x85\xe8\x97/m\xed\x1e\xd6\xacj\xdc7\xa7\x86ef\
+\xf7[\x1d\xc0\x0a\xb8\x93i\xcc\x00r:%l\x15\xc5\
+\xdb\x1d\xb10>\xaa\xe4\x93_|\xf7,\xe5\xc3\xf8\xd3\
+fU\x89aj\x09\x94\xdf\x81\x09@\xcd\x9f(\x18\xe0\
+\x9f*|&p\xaa4\xe1\xeaQ\x1c\xd3\x02\xb1%\x00\
+\x91!\xc4\xa8\xbb\xf1\xd2\x16u\xbaMX\x07\x14f\xa6\
+\xb6\x98<\x02\x81<ov\x97\x08[KD\x8b\x82\x9c\
+\x80\xad\xdf\xb7\x8f\xa3\xb0\xef.\x1f\xd61$\x9cK)\
+j\xcd\x1f\xe5O\x95_\x03\xf0\x1d\xdbe\x13]\x8b\xf6\
+\xa5o\xe9\xa8\xf9\xfc\xa8\xa1]_\x89\xf5\xe9r\xf3k\
+a+\xd0]\x89\x17mjs\xbf(?M)\x0e&\
+ f\xe3\xb5\xf39\x8c\xea\xf5\xfc7\x00\xc5\x98\xf9\x15\
+\xf0\xfb;\xfb\xed\xd0\xa6\xb1J.\xc4%\xfc\x1a\x81*\
+\x86\x01\x00\xc2\xbc1\x0e\xa3H\x9f\xd0\xed\x1da\x9d\x08\
+\xa2\xdf\x07\x04(qL\xd1\xe4\x12\xdf\xb3\xbf\x09p]\
+\xaf\xfd\xdd\xfd\x8b\x87\x04\x9e\xeeW\xdc\xe2\x0b\xc0b\xdd\
+\xfb=\xf7\xcf_2\xde\xfcw\xe3\xe5\xf30N\xc7\x92\
+\x01@\xc8\xd8E\x8a\x9f\x8c\xa9\xe0\xf3\xcd\x1b\xe3)p\
+w=\x80L\xe3\xe9\xfe\x88\x04~\x22\xac{\x0e\xdeW\
+\xa0-\xf1e\xbf\x02\xa0\x08\xc81\xba\x7fR\xbb>\xaf\
+\xae\x87h%-\x14\xfb\x09\xa6\xe0P\x82^\x9f\xef9\
+\x88\xf7\xac7\xeb\x0a\xa3$\xf7\x9b\x835\x01e\xca\x05\
+N2\xfccF\x91(`\x1c\x83_\xe9\x90\x92^D\
+\xed\x12k;\x8bR\xfb\x07($u\xb1\xda\xfb\x99\x08\
+\xda\xd5E@\xf1\xf6\xae\x9f\xae@\xd4DHJdM\
+P\x07\x85\x01\xec\xa9+?<\x97\x1a>\x01\x8a\xbf\xff\
+ne\xa0\x0f\xed\x8bi\x02C\x5c\x04\xa0&\x98\xc0\x0c\
+\xa5>\x1d\xf0\xa2\xd4\xcb,Ry\x17\x90\x98\x08&\xbc\
+\xc0p\x0cd\xd5\x88\x9b\xc8\xa8\x9b\x0e`\x22+\x90<\
+\x01T\xaa\x16Wf\x07\xc5=k\x96\x0a \xb0AA\
+\xd4-Dm\x93\xfe='|\x8e{\xa9\xac\xcb0}\
+?7\x0a\xe3>\x06\xde\xc6\xcf\x828\x98\xe3v\xc4\xa1\
+\xd4\x9a\xfa}\x8e\xdf \xc2W\xc8\xb8\xf6\x8d\xe6\x9b\x83\
+\xd28Y\xc060\x0ba\xd4\xb4\xb0p<\xef\x11\xa1\
+s\xb0d W\x8e\x90.\x022hO\xc9\x0c\x93u\
+\xa1\xf6L@\x955\x8aUS}\xd5\x1c\xe7;$E\
+OmZ\x06\x04E\x15\xb3aCpG\x8a\xfew\x06\
+\x07\xc9\xba3\x8f\xac'\xf3tl\x9bB\xe4F\x00}\
+\xb3\xb0n\xde{\x7f\x0e=1L\x81\xb0\xfd\x02\x10e\
+C4O]\x97\xf9\xe09\x0f\xc8e4c\x8bvl\
+\x15\x98\xca\x1c\x8c5\xf9\x02\xd1\x14\x19\xf3|\xd4\xf4\xab\
+A/\x8a\x9c\xbf7n\xc6\x11%\x90*\xb2\xeb\xca\x8c\
+A='\xf3\x060\xe6\xfd\xac;\x19q\x8c\x80Q$\
+\xd4s\xd0\xd6\x06\xa0\xf1/\x87\x06\x88U\x13H\xcc\x92\
+\xb8\x95\x83\x8c\x83tr\xb3\xaa\x05-F\x83\x0c\xb9n\
+\x12\x1c]T\xeb\x14\xf1*\x00(\x81\xc8\xaa\x19\xc6 \
+\xb1\x0f\xaa\x99\xa6b\x1d\x19\xe5.0\xc4\xa0\x9an\x1f\
+\xd6\xd5\xf4\x0a|\xf4\xe9NM\x8b\xcd=\xc3\xe6ip\
+\xed\xb0\xf9\xfb\xa7\x84u]:\xb4}\xcb\xccx\xf5\xbb\
+\xcdR\xa4\xcdw\xc3\xba\xc0\xe7\xb6a]\xc6+)\x8f\
+\xda\x7fm\xa6\xb0n\x1e\xbf4)\xda\x7f\xb0\x04\xf8\xbb\
+\x9f\x8d\xd0)\xfb\x81\xffm\x03x\x1a\x00;\x87?\x8d\
+\x92/3\xbc\xff\x95\xb0\xf9\xf5\xed\xfbo\xdb\x7f\xdb\x9a\
+\xa1=\xb0\x09\x9b?\xef\x94\xb0uz\xcf\xabg\xd1`\
+xxRP\xd3\xa1\xda=7\xac\xa3\x0a'#iw\
+\xcb\xa4j\xdf/l~\x9f\x0b-%\x08\x80\xa8\x0a\xb8\
+\x95\x8a\x9d\x94%.\xe6Sj\xa2\x10\xaf\xdb\xbc?\xac\
+\x9b\xe7\xb9\x9f*\xe5\xa8\xc0\xe7\xec\xb0F!?\xb2Q\
+\xc8\x1f\x12\xd6\xa9R\xcb\xa8\x02\x04\xec\x1b\x1c\x0e\xfb\xcc\
+{\xb3\x9dQ\x8a\x1f\x96\xa3\xaf\x0d+Q<\xb5\xcc9\
+\x7fdN\xf7\xee\xbd\x9c[%\x8a\x98\xa5<\xd3\x8bg\
+\xfb_\xf9\xdc#!\xf0\xba\xb0\xf9\xe7\x8f\x0b\xeb2\x88\
+w\x9d\xed\xd7\x93\x02=?\xc7\xed\xc7\xc3\xd6@`\xba\
+S\xd8\xba\xae[\xc9\xc6\xad\xd7\xcf)\x86\x8c\xda\xdf\xdc\
+\xcf\xaa[\x06\xd5{\xeb\xd4>:RO\x9310\xfd\
+fX\xc7\x88Qz\x93\xe38\xfd\xc5\xc2\x98!\x1eW\
+\xe7r\xae\xdfb*\x05\x00r\xe2Z\x0a\xe1\xf9\xb5\xd5\
+\xff\xd0\x0e\xf0\x01\xe0\x13\x91\xda\xe5~\xfb\xc6<\xaf2\
+#^\x80\xac\xbe\xe7(\xf9\x02\x04\xda\x10\xdaAJ$\
+\x00\xb2Q\xbb\x95B\xe58l\x1e\x19\xb6\x06\xca\x9b\x93\
+g{H\xd7\x85\xe4\xe8\xb0\xf9\xf5\x8c\xd9\xbe\xdaJj\
+.\x1c\xa2|MC\xe0f\xdd9\x89\xc2\xce?@\xe5\
+\xd7\x9f>\xa9\xeb\x05\x9c\x0a\xf0s\x9c\xb5Um\xf3\xe6\
+\xc5\xab\x9fP\x80\x03\x06\x0d\x11\xd7\xd4\x8e(\xff\x02U\
+\x96\xc6\xc9\xeb\xb3\x14\xe2\x09\x8b\x86\x90\x8c\xf9\xe6<a\
+k\x0d<\xc0\xa6\xda1\x02nR\x945\x14GBs\
+\xa4\x80\xde\xb7\xe6\xf3\xfd\xab\x85\x91Q\xdd^\xbc\x7f\x8e\
+g\xf91\xfc`\xeb\x03Ph\x7f\xcf\xef\xab\xe4!\xdb\
+\xac\xda'\x95Fb\x98hCX\x01\x98sP[P\
+\x22\xac\xcfZ\xda\x96V[fm\x94\xf9\x13\x18\xa82\
+\xdd\x00\x9e\x93\xc2:`\xf5\xc1a\xebya\xbc\x88\xb6\
+\xd6y\x04\x00\xcb\xf9^\x81\x17\xff\xc3<\xe1\x879\xcf\
+\x04n\xf6\xa3\xa3\x0e-\xad\x1d\xfb\xd4\x17#G7\x06\
+\xe2\xb9YjR\x8c'Ti\xefsB\xb6\x91\xc4\x5c\
+M\xff\xa94?r=U\x82\x83\x1f(C>\x8a\xcf\
+\x11\xab\xc4\x80\x10H\xf3c\xdd7\x06\x0c\xffJ\xa0K\
+SD\x09\x0f\xe0;\xd7A}i772v\xc4\x1f\
+\x02Z%7\x12&\xfc%\xfe3?n\x14\xfb\xe3\x87\
+\x8a\x1f\xbc\xaf\x7f7\x0e\x83\x08\xa0\x04o\x05\xf6\xf9{\
+\x95\xc8\xd2V=\xbb3\xd5\xb8\x89\x0b\xc6\xee\x04\xae\x17\
+\xa3\xd2\xb9\x0f\x90\xc9\x03\xba\x02\xf0\x11\xc8\xe0\xc7\x8b\x8b\
+\xc47\x12\xa6\x12\x9d\x98\x18\x83\x98_\x893\x12U4\
+\x0e\xe61\x07\xc1\xefK,\x1b'\xe3\xcao4\xde\xc6\
+\xcf\xfb\xa7\xc6\x0a\xe6\x8d.@\xf5\x9c\x00\x05\x00Q\xf7\
+i\xfe\xb8n\xe3\x04\xb0\xc8\xf8\xe7`\x05`j\xe9\xcf\
+\x1f\xb2H\xe9P\x1c\x7f.\xea\xf7.4\xdc\x91^\x95\
+P\xcd7\xf1\x1a\x8eH \x98!\xbaw\xd4lGw\
+\xe2}\x90\xe9\x83-4\x5cn\xe8\xfby\xc0]\xb6s\
+L\x01\x07&\x94\xc0\x92\x03o\xa0]\x17\xc6\x81\xbf\x1f\
+3\x9c\x02B\x03(\x10\x84D\x8eb\x82\x02d%\x04\
+y\x1d\x95\xb9S\x8b\xe8\xc19X>\xb5\xd4\xfe\xd6\x04\
+'\x1e\xa1\x1fc\xd6\xbeo\xae\x96*\xbb\xda\x82x\xcd\
+\xf1\xacL\xb4\x00\x98C>R\x96\x00\x1b\x99\xb1\xad\x83\
+M\x0d8\x84\x98\xc8\x8ev+\x00\x01\x81\xbd\x8c\xaf\xfb\
+\x96a<\xdf@\xf5G\x81\xbfh~o\xa1R\xf9>\
+\x7f\xaax\xfftf\x8c\xd7\xf6\x14\xe7\xde}a\xacQ\
+\x11\x90[\xb0\xee7\x91\xdeB|\x05\xb0\xd4\x87GJ\
+\x97\x8dC\x80\xea\xfe \x812\x08\xa8\xd1\xdeW\x0d:\
+\xe4\xec\xe9\xbbg\xec\x9e\xd1\xa8\xe3K\xe0%`\x15H\
+\x99\xff\x80 \xc0\x8c\xfb\xca\x8c\xc3\xe6\xda\x0b\x05\xb22\
+\xa1j\xbe\x89\x1cq\xf0\xb4m\xe3\xd8\xfb\x82\xe4j\x7f\
+\x97\x81\xd6a\xa2\x99\xb91Ui\x83\xc0Ti\x8aL\
+\xbe\x8d\xc9\xb8\xdbX\x8d\xdf(\x82\x02H@\xa5\x02\x00\
+\x8c\x00\x9b\xaf\xb1/\xac\xeb\xb0\xbe\x1cH\xd9\x97\xb9\xd6\
+\xb5u\xe6\xfe\xb4\xc9\xd46/\xa9\xf6%\xe6i\x1fp\
+?\x00C\x07\x96\xfd\xcbz\xc7,\xa1\xea\x9f\xaa\xbf\x9b\
+\xbf\x08\xeb\x1c\x1d\x1a\x05\xd7\x0c\xeb\x0eT\xd7\x9d\x14\xe4\
+\x02\xa6\xd4&\x0a\xacRE\xbcJ\x0b032\xf3[\
+\x8e\xc7\xa8u\x90\x94\xf9\xa2v\xaa\xd1\xb4\x9e]w:\
+b\xd5\xdd\x22\xa9\xb5\xd3W\xc2\xd6\xc0^{\xb6\xda\xaf\
+ \xc3\xf6C\x14\xcb\x04\x10\xb6?\x08[\x19H%j\
+5\xd4p{\xdc%\xb6&\xc3\x92\x99\xe9X5m\xdd\
+h\xfb'c\x9b\x8e\xea\xf6\x9da\xf3\xf7\xdf\x0e\xeb\xfe\
+\x9e\xd6\x09\x8ai\xb6\xc3\x9bn\x12\xd6\x1c\x9f\xd6>u\
+\xba\xc6\xd2\x8e\xaf\xc5\xe7\xd1\x16\xe9|a]\x1f\xea\xa4\
+\x10\xcf\xc7\xf8R\x9b\x9e\xe2[4\x18\x88\x06V\xa0\x03\
+\xe0\xb9[R\x94\x8f\xca6\x83\x9f\x0a[\x01\x8f\xea\xff\
+\xfe\x84\xcd\x137O\x5cj\xdf\xa7\xd3\xbbZ\xd7\xe7\xa6\
+H\xe2.3c\x99APS\xbc\xb9oX\x17X\xdc\
+p\x11\xf7\xda;'\x81\xc3\xccd\xd5\xba\xca}\xb8\x1c\
+z\x8e\x04\x06\xddy\xc2\xda\xe7\xb7\xcc\xe7\x1c\xf6.\xed\
+\xb2\xbe\x96\xeb\x99\xa8\x16\x87\xfb\xa5\x0b\xc0\xb4{^X\
+'Z\xfb\xff\x85\x9d\x8b\xb8\x9c\xfd\xec\xbe{\xbf5[\
+\x88P>n\xf3\xb8\x06\xd0-\xcf\x17%=\x99!\xa8\
+\xeb\x98\x1bJ!\xb6\xff\x1a\xb6\x8a\xcf\xed~>l\x05\
+\xd4JM<\xba$\x1c\xb9RL\xa7mX\x07p\x87\
+\xc8\xdb\xf9\xba\xfb\xba\xf2R\x1a\xd1\xe6\xe9\xcb\xbb\xcc\x89\
+s!v\xad\xef\xad\xcc\x11\x99\xd7\xdd+\xc2\xba\xdai\
+\xa5t4\x03\x04\x22\xd6wR\xb2\xa7w\x84\xadT\xed\
+\xa2\xa2\x13%\xcb\x0cf+\xa9\xfcF'\xbe\x18\x85d\
+\xc1\x80\xfalX\xaa\xad?k\xbd_\xa5\x0b%\x8a&\
+\xa0\x110'\x10\xbay]X\x9e7\xd7Z\x19\x92\x15\
+`\x08\x80\xb5\x9b{V\xd8\xaa\xe1Q\xb5\xff\x023\x99\
+Vm%\xb3/z1#\x04 \x18J\xba\x0d\xa8\x09\
+\xc7lL \xadJ\xd7d\xc2ti\xe1\xc79\xdf0\
+$\xbf\x97\xfe\xdfw\xd2?\xa4\xd5\xf0oy?\xce\x19\
+m\xce0\x1c2\xa0\xdc]'\xac\x03:\xb3\xcbJ\x14\
+>F\xe9c\x95\x84\xa4\x88`\x9dw\x1c\xf7\x97e\xed\
+\xb4\x9a\xe6\xdc\xaf\xb4%+\xc6\x02 I\xe9I\x96L\
+n\x7f.\xac\xd3lHF\xcb\xf4\xcd\xb0\xf5\xef\xaa\x94\
++3\xc9\x80\xc2\xfa\xbc_m\x16Z!\x0b3\xe3a\
+\x0b\xf5\xb7\x98\x02\xc4WuW8'\xack\xa7I\xfc\
+N\xe9\xa5\xf3\xce\xfcqN\xf2\xeb\x8c\x03\x11b~\xa0\
+@\x8a\xbf\x84\x19\x99*\xf6\xd6\xfb\xe69a\xf3\xdb>\
+'l-\xa1\xa8v\x8a\xda\xf6)\x09\x10\x80\xac\x22\xb4\
+K\xdb\x5c~\x06\x7f!\xcfE\x89\x94j\x0f\xe7\x95\x88\
+'F\xae\xf9;R\xd9\xf9\xcb\xb9\x7f\xd5\xbe\x96\xf7S\
+ZP>_\xa0\xf4\xa5\xd9\xfb\xfc\xd2\xb9\x88\x7f\x0b4\
+\xf9A\x83fX\xf9\x1b\xee\x93x\x1d\x00C\xe6\x7f\xcc\
+\xf8\xf2{\x00\x07\x02\xecL\x18\x16\x00\xa6\xb4@\xc9\xa3\
+\x9at\xfeUvu(\x00\xd0z3\xaeC\x97\xa3z\
+\x1d\xbb\x09\x98'\xe2$\xebdh\x1f\x5c\xb5\xeb\xeec\
+;t\xf7\xe2\xf7\xf37\x866\xed\x05D\x18\x8f1\xc3\
+>\xb6Q\xf7<\x00\x0b\xba#\x00\x86\x9c\x97\x83\xa6\xc9\
+\xd8\x85j\x04\x8cv\xef\x0a[\xdb\xfcYW\xc5H\x18\
+\xe3\x15~\xb2\x9f;']\xb7}\x9b\x83\xe4\xba\xc7\xee\
+\x13\xce\x15\xe3f\xdd\xb9?\xcc\x1d\x89H\x09u\xfbj\
+&\xda+\xb1l\x9c%\x9c\xb4\x8f\xc4\xc0\xf1{\xf9\xbc\
+\x0fVF>\x86\x7f?\xc5\x90\xce\xce\x83\xf0R\xe7R\
+\x83\x1f\xd3\xec\xe8t\xe4/\xd69\xdaq\xd9\x17\xc8\x1b\
+\xfb\xa9\xee\xef\x04\xc4\xc4\xf4\xae\xbb\xa8\x1cW I\xcd\
+X\x80}\x5c\xeb\xcc\xbbl`\x17[\xd5h\x7f\x22u\
+\xfc\xdc\xba\x15\x9c\xdd\x95\x18\x18\xe8Q\x5c\x90\xc8\x06\xca\
+\x0d\x87*3\xb8\x85\xac\x99\xc8\x02\xa2#\x06\xd5{\x0b\
+\x06\x80\xe0:dZsbu\x1a\x06\xcb\x02\x94\xb1V\
+C/\xc3h\x03\x16(\x090\xc7\xf6\x81\x00\x8f\xb1]\
+\xc7\x18\x88\xd9\xc0-,\xe3\x08!\xa3\xb2,\xa0\x15H\
+\xde)\x1d\x22\x01\x96\xee\x01\xaeo]\xe0\x87f\x98m\
+\x0c_^\x16f\xd5\xe2\x1b\x7f\x7f\x07\x01\x83`i\x0b\
+'\xa0\xf7\x9c8\x02\xe9\xa8\xa1\xe4WM5\x00\xcb\x82\
+\xb6\x11\xf6b\x93}\xfbD\x99\x1f\x07%\xe4\x0feF\
+\x0dV:\xc6\xf3\xd54\xb5\xddB\xd0\xcfLd.\x03\
+!\xfd\xcb\xeb\xf9\x8d\xcc\x11\x1b\xe0\x0fr|\xd2a\xa1\
+\xe2^\x07\x86\x830\x99&5\xee2p\x1c*\xef\xeb\
+ r\xc0\x0b|\xbd:H\x1cD\x90|\x81\xb7\x8c\x8f\
+\xee\x1a\x18\x0e\x98.\x9e3`\xcb\xc6\xe4 \xf0\x5c\x1c\
+@c)\x8b>\xb5\x19\x98\xd5s\x1f\x19\x0b\x10\xd7Q\
+\xecP`\x93\xa5\x17\x9b\xcf\x84u\x88\xb5\x1ap\x19\xcb\
+a\xe3\xac\xf77\x9e\xfa\xb7rt\xacg5s\x10S\
+\xc8\xbc\x0d\x9b\x8a\xae@\x89v\xc0\x0d\x97\x00\xb4(\xad\
+\x894W-\xf2\xc5\xc2\xd6>\xc8\xa5\xa2\x9f\x19\xb7\x02\
+\x061\x0d0@dz8\xd6\x19\x00\x175\x9f#\x88\
+\x19#\xd3\x93\x01\x88L\xac\x12\x80\xe9*a\xdd\xc1/\
+\xf3HdRfU\xbb'\xc0T\x8aum\x1f\x1d6\
+\xbf\xcf\x15\xc2\xe6\xdf\xfbq\xaa\x90'r>\xfdIX\
+\x07|\xa4\xd8\xd0tB\xd8\xfc\xfdo\x84\xcd\xefs\x5c\
+XW\xab\x99%9\x95\xc1\xca\xfe\xd1u\xa0\xca\xe0\xea\
+\x86\xa1\xfd\x1fF\xc0\xd7\x17\x8a\xf5\xf6\x92\x8b\x96\xc0\xee\
+\x9da\xad\xe6\xb9\x89\xd7\x15\xd3D\x06^&(\xd5\x90\
+k_\xce\x0c\x8f\xc0\x1a\x93\xa1\xb4$\xcc\x7f%\x1d\x9e\
+[f4w!\x1b\xb6\xe9\xdeO\xa0\xc4\xb1\xa1\xf6\xcf\
+a\xfb\x85\xb0\x0e\xa9\x7f\xd0\xde\x03\xf7\xc2\x01\xbdn\xb6\
+%\xbd\xe8\x12\x08\xec\x9e\xbd\x04l\x9b\x0fl>\xb8\xf9\
+`\xa7rO\xa3\x87F\x05\xa6\x8eu\xf8\xc5\x5c\xff\xbf\
+\x9a\x99\xadc\xb3DN\xe6\x0b\xd0`>(\x91\xc20\
+Q\xaa \x93a\xbd\xd9OQ\x8e1\xdb.\x94\x80o\
+\x94\xa6\xfc\xc2\x0a\xcc\xed~\x10\xb6\x02\x1d\x9b\xef\x87u\
+\xed\xecr\xbd\x08|\xf7\xbf\xb4\xff\xe5\xfd\x10U|\xf2\
+\xf6I\xdb'w\x01\xae\xccYfT\xab-!Q\xae\
+\xa0*\xbff\x15\xe3\x9b>\x19\xd6\xb57\xcb\xb6p\x1c\
+\xf0\xc6$\xf9\xa5dj|/\x99\x09G\xae\xe7\xf8\xf6\
+Ga]{R]h8~\x09\x00\xed\x8e\x0a\x9b?\
+\xef\xfe\xb3=\xa0\x13\xfdJ`\xaf\xcd\xeb'\xaf5\xcb\
+\xd3\xaf\x85\xadb\x81(\x9dUB\x020s\x9d2\xbc\
+\x18P\xb4K\xf4\x19\xcf\xeb\xdb|x\xb6\x7f\xed4\x9c\
+\xa2\x14\xf2\xfb\xeb\xf8\x97(h\xb6\x83l\xf3\xa6\xeb'\
+_\x01\x03\xbf\xca\xbc\x00|\x00\xdc3\x81\xd1\xb4\xee\x9f\
+\xd1\xb5\x01\x94\xb9\xe6p\x03vN\x9d\xedu\xb9\x0e>\
+\xdc\xcd/\x8ev&PZ\x89\xd2\xb3\x1ac\xa4\x8dg\
+\xed/\xfb\xe9\x80cJIH(\xd9\xd0\xfdDI\x00\
+m\x04\xe74`\x83\xdfc\x9e;\x17eV9\xf8\x02\
+5\x81:\xed\x0e\xc0\x14\x7f\x110\xa3\x94\xd0s\xcby\
+\xa6$\xafD\x1fu\x95HM\x90\xdd\x1b\xc2:`\x8a\
+?\xf6\xb1\x0c`\x5cG\x8e\xef\xee\x96a\xdd\xb9\xa4\xa4\
+\xed\xc2K;S~a\xa9\x99\x0b\x84u\x1fJ?\xc2\
+\xe7VbC 42\x1f%<r\x9dV\x00&s\
+\xcf/\xc8q+\xc6\xd9\xb1\x8bxj\xb5\x9b%\x9e\x9c\
+\xfb_k\x96\xb0\xed\xc4L\x01?y\x1e\xd3\x86(\xff\
+\x03\xd0>R\xbc\xf9A\x9e\x1f\xbf\xdb\xbek\xdf6_\
+\x13\xb0S\x92\xb6\xfb\xdb\xdd\x9bZ\xa2'\x01>\x9a5\
+\x95\xe9\xe7?\x09\xa0\x04T\xeeW&;\x81\xc7\x8ao\
+\x92QY\xe78\xffu\x14#\xf7\xfe\xfc2\xd7/\xfe\
+q\xbf\xe6\xe5P\xbb]\x01\x9cW\xfe\xfd\xc0\x04.\xa0\
+\x0c\xe5\xff\xb7\xc2\xba\xdf\xb7\x9f\xb9\x0eq\xcb\x9805\
+Od\xc4\x95<\x89g\xf8\xcd\x02\xe2\x12\x1d\xcax\xc4\
+\xfb~\xe7\xd0\xee^\xe5\x0f\xfa{\xef\x07\x081\xef\xc4\
+\x0d\xae\xcb\xe7x_\xe3j\x1e\x1b'\xd7-\xfe\x1b\x13\
+\x8aJ\xd5\xf3<W\xca\x0a\xc0+\xa0pH\xec\xd6}\
+\x8c]\x13\xc4\x8f\xd6\x91\xe7\xee\xef\xfb\xc4\xf9W:\xff\
+\x04\x80\xe1\xbe\xdc\xa7}!\xafczgXW\x0a\xa9\
+=\xeb\xd8%\xc2\xba\x00\x5c\x0a\xfc=g\xf7\x91\xd7}\
+\xb0\x0d\xcf\xb7:U\xfe<\xf8\x89\xf8l.\x10:\xf2\
+\x19@\x5c\xa8\xcb \xca\xdc\xc7qtL\x0e\xf4\xb7\xf2\
+\xc1os\x80\xbe\xd5\x05\xb0WhU\xe2\xab\x86\x00\xa6\
+@OM\xee\xfa\x15\xb6\xc0\xe4\xb3]\x86\xda\x815\x22\
+p\x10\x94\xb5\x1d_\xa3\x90\xb4\x03\xe6\xd8\xc3\xfb\x97\x1f\
+\xf6w&J\x9f\xe1\xbep7\xb1LX\xef\x93\x01J\
+\xb5\xdf\xc8v,];\xa7%\x03m\xa32\x01\x06\x84\
+\xa7j\x9bo\x92\x07\x93\x00\x1f\xf5\xdd\x06N\x9d\xdfA\
+;\xd6\x12\xb9>5M\xe9\xe8\x96\x83/#=\xb6\x19\
+\xcc\xef\xcb\xa1\xb5\xc1{^\xa7g\x8d\x18\x91\xc1[\xe4\
+\x81\xfb\xd5\x9c\xc0\x1c\xcd5#\xba\x04\x86\x80\x0d\x99h\
+\x08\xe1\x85\xd3q\xb9h\xaa\x8b[\xc0\x02@\x0e\xa6\x83\
+C\xffk\x07\x0eJ\x0c\xa0 \xd5\xdf\xabV[\x9b<\
+\xcfym+\xb8l,\x16\x88\x0dG\x1b\x15\x0e\x161\
+.5\xdb\xfe\xfd+\xd96H\x9fr\xef\xebK\xe0o\
+|\xa9bg\xedd\xb5\xf9{a\xf6\x93\xfeH2\x0f\
+\xb2\xbdN!\xe9D\x7fh\x15\xa8\xed\x170\x99O\xb9\
+\xfe\x0a\xe1\xb7\xf1\x8f\xd4\xa3\xdc\x80\xd4\xa2\x16U]\xa6\
+\xd9s\xf3j\xdc8\x1a\x9e\x8f\xf7\x05tqP\xf4\xfb\
+u\xd0\x8e\x1a\x1b\x19`\x17\xe0b\xdd\xd9\xe0{\x00\xf0\
+r\x9d\x0a3@\x0e\xd5?\x1d\xbd\xda(1Ld\xd8\
+\x87\xf5rH)\xd2%;\x87F_{\xa5\x17\xf6\x0b\
+T>H1\xa6\x83\x0ct\x1eh\xb5\x0f\x09\xb88\x86\
+\x0eJ\xed\xd8P6\xb5\x19\x22v\xa5\xd4\x00\xc0\xe5\x80\
+\xa7\xb6\x8c\xba\x9b\xcf\xaf4$\x94\xe4d\xa0\x5c\xc0\x90\
+\x1a\xd2\xa4J\x17\x95\xf4\x9d\xcdV\xf1\x9etH\xd4\xb6\
+o\xee\x18\xd6\xa9\x07\xa7*=\x07\x95\xc8\x9e\x1a\xeb\xa2\
+b\xffa\xd8Z\xaa\xa0\xb6\x190X\x19k\xed\xc6\x92\
+R\xba\xbdC\xd8\xda\x8e\xab\xf6\xef\x074[K\x06\xfe\
+(\xac\x03d\xb4y\xca\xda\xd4\x0a\x1c\x92\x9a\xba\xf9x\
+X\x0b\xc4\x16\xaa\xb9\x03\xf5\xc4t\x98\x1f\xd7,jf\
+g\xebjW\xdd\xaf}\xe9\xb7\x96\x8c\xb6\x92\x8b\xe9:\
+ak\x06\xb7(\xff?\x1f\xd6\xa9\xbds\xec\xb5\x7f{\
+C^\xf7\x81\x5c\x7f\x09\xdc\x95\xd8h\xaa\xa6C\xecK\
+\x0b\xe3_\xc2:`I`\xf3\x83<\x9f>\x96\x00\x91\
+\x92\x89\xd3\xf3\xba\x01e\x02#\x19\xf8\xdfN\xb1/\x80\
+\xa3\xf5\x0e\x00t}\x97\xcb\xfdJ)\x19\x86\xc9\x11a\
+\xab\xd6\xc5\xde\xef$\x00\xf5\xa2E\xec\x0fPf\xdf\xac\
+\x8c\x89\x8c\xec\xef\xed=\xbc\xa9\xb8\x7fn\xf7\xd9\xa0\x92\
+o_\x1b\xd6\x89\xc2]9le\xc2M\x8f\x0ckT\
+\xe1\x8b5\xb5\xf5\xb7\xed\xde\x1e\x8e\xd8\xf4\xb6\xb0\xd6N\
+\xf1\x01\xad\x9d\xa2\x9aV\xd7\x99m \x05B\x1c\xb7\xe9\
+\xdea\xf3\xbf\x7f\x22l\x15olb\x83\xc7g\x008\
+;\xce\xd3\xbf\x85u\x01&-\x90/\x84%s\xe7\x85\
+]\x86\xdez\xca\x0c\xa1\x92\x145\xf3\xd3\xa5\xc22\xd0\
+zc\xa7J~\x8d\xa5f{wLX\xb7\xfe\x13H\
+\xd5\xbd\xa6\x02\xdb\x0c\xd0\x94H\xb5\x1a\xff\xc76\x07\xf1\
+\xab\xcdA\xe4\xf0\xf9\xe2\x8fe\xc6\x94\x98\xe0\xee\x8f\x17\
+m\x80\xb6o\xf6\xed\xa5\xb2\x04\xa0\xc4TS\xc4\xb1\xad\
+\x96?^\xf7\x7f\xda#\xc5H4\x7f\x9c\x8bw\x08\xeb\
+\x00\x0d\xf3\x1d\x93&`\x9bwu\xcc\x22][\x1e\x13\
+\xd6D\xecfK\xa0\xf1I\xed\xba\xde\xd9J\x13\xd2o\
+\x99\xc3\xcf\x851#\xb0V\xcb\x9e\xfb@\x05\xc6\xce_\
+\x99\xbc\x14\xf5,\xc0/\xc5Y\xa9\xf5\x17\xa0\xe8\xfc\xb5\
+\x9f\xebOo\xdf\xb6\xdf\xa4\xf6\x04fO\x01i\xc9\xec\
+\xaav\xc1\xb4\x0f\x94Z\x00`\xc6\xf6~\x0f\x5c\x00\xbf\
+\xda\xcf\x13HV\xab>]?lm\x7f\x8a\xf1R~\
+\x0bm\x03m\x1b\x01\x01)\xb2(\x91P%v\xfc)\
+\xfe\xdd\xb3[\xbf\x8c\xbd\xe0\xef4\x06\x8f\xfdI\xc68\
+\xfd0\x99F\xc0j\x01<\xf6\x9b<\xef\x8b\x09\xcb?\
+URB\x5c\x16\xe0b\x5c\x13\x88*qC\x014\x80\
+\x8f\x06\x89\x00Q\xc0\x22\x10\xc7\x5cH@\xb6\x00m%\
+-\xfca\x81\xd0(F\x1c\x0ab\x97\xed\x02\xe8\xd4*\
+)\xa0K\x8d\xbf\x80\x8e\xdf2\xb6Q\x1b\xdb\xb9\x8d\x19\
+u\x01\xa2\x84\x90\xc0x\xd0:(&\xeaP\x82[L\
+^\x8ca\xcc\x07\xd7!\x11\x03\xa8\xb0N\xad\x07~!\
+\xbfN\x80i\x1c]\xbf\xef\xf9{\xfc\xc6\xec\x8a\xd3\x98\
+\xdb}\xfb9~\xf4O\xeaF5\x96fc\x18\x1a\xc7\
+\x91I.\xfe\xf2\xf9\xff\xad\xd9z\xfd\x806\xcc\x0c\xef\
+o^x_\xe3=\x02\x0a\xfe\x9d\xa6\x82\xf1\x13o\xf8\
+\x5c\xf7'!G\xcbi\xd423\x8e\xde\x97\xff\xe7\x15\
+\xc0\xc2\xbf\x1b3\xfb\xa3\xea\xbfy0&\xec<7\x80\
+\x83y\xe2\xba\xdd\xbfy`|\xac3\xfe\xb9\xe7\xeb\xbe\
+\xcd\xbf\xbc\xdf\x83u\xa1\x97h2u\x8b\xc3\x7f\xa0\xa3\
+\xfc\xa0\x9eDXx\x99\x14\xef:\xbeS\xf7\x8f\xcb@\
+\xfd8\xd0\x0d\xbc@\x90h\x1fD\xc8\x85\xc7\xed\x9e\xd6\
+\x01\x0f^\x05\x1a6\x9c3[\xce\xf5p\xd5r\x0f\xc2\
+\x0d\x1905\x88q\xdd\x9f\xe84\x04\x04\xe6_h\xfa\
+\xc6\xeb\x03\xb1\xa1\xf4m\x99\xce\xec(;2\x882\xe4\
+\x1cX\x14\x8c\xdch+@\xb0!\xad\xb5\xefK\x00e\
+\x03\x00<\xa8\x89\x1f\xbb\x09XP2\xd6\xb9\x01\x94\xe3\
+\xbfR\xf0\x0f\xd5n\x183\xb0~\xcfB\x92I\xbe\xd6\
+\xb2QW@\xe8\xe7\x16\xa2\x00\x10\x05I\xcd\xfeG\x12\
+\xd9\xbaL\x06H2\xc8D\xd18\xae\x02\xf6\x0b\x0c\x0b\
+\xccs\x91q\xe6\x08Y \x17J\x07\xe3\xf8D\x80\xd5\
+\x86\xa3\xbc@\xda<7H1U\xeaW,\xd4\xd6\xcd\
+\xaf\x84\xad\xd4c\x19\xa8\xa6h\xb1\x88\x88,\xefc\xdc\
+0*\xcc\x0f\xd7\x03 \xc1`@\x9d\xe6P\xa3\xea\x9b\
+\xe7\x1c1\xaf\x02\xd0\xa4:n\xfe6\xf4\xacW\x95\xdf\
+\xb1f\xb7\x00 \x945\x81\x95L\x9f\xdaT\x8e\x98\x9a\
+x_\x9e3\xf18%#\x18\x03\x9e\xaf\x0djP\x0f\
+\xadu\xe9\x00\xb5\xde\xbc\x8e\xc8\xab\x8d\xd2|\xb1\x8f\xd8\
+\x08\xc7v\x9c#\xa5\xcbu\x11\xbf\xd1\x17\x97\xa8\x0f&\
+\x06\xd5\xec\x04T\xaa\xdfkR\xe4\x050\x150\x9b\xf7\
+}-\xdf\x09\xddx{^\x99\x09\xad\xc0\x95C\x98\x99\
+\xef\xca\x80\xa5c\x83\xda\x5c\x0e\xaf\x0d\x19\xd0\x91\x81r\
+\xb5\x1d\xcb\x80\x92\xa3\xb5\xf9\xb7\xb0\x8e*K\x83A\xe0\
+\x8e\xda\xa7v\xd2\xe7\x01\x9e\x04\xf6\xa8\xa7\xa9\x8e\xbfw\
+\xbb\xd9\xcd\xba\xdd\xba\x8f\xc8P\x95X Q\xb4\x04&\
+J\x0d\x9bCMS\xc0xY_\x098M\x8f\x08\xeb\
+\x1c_\xe2}4\x10\x9e\x1d6/\x9b\x17\x87\xad\xed\xf1\
+\x8c\x93\xb6\x8a\xf6\xe1\x12\x9d\xc2\x98P\xeb\xaf\xf6Ui\
+\x81\x9a\xda\x14\xed*\x11\xb8l\xd7Y\xed)\x89ne\
+\xfb<Tg\x07\x9e\xd2\x02\x0e\xa3\x9a\xed\xba\x0e\x19\xde\
+|\xee\xd3\x03\x97\x9a\xff\xdd\x15wW\xd8\xcd\xf3e{\
+Z\xd8\xfcz\xdb\xb0N\xe3\x83X\x18\xea\xa1\xf9e_\
+\xb6\xef\xabM\x96)K\x11\xc5:\xdf\xd4:\xe7\xdfU\
+\xc6\xe6\xe8l\xdf\xea<\xb1~P\x843\xa0\xaes%\
+\x81Y\x94\xfa\xca\xb0aJY\xb7\x1cc\xa2^\x8fJ\
+\x15\xf2\x7f\xcd\xc0\xf6f\xcb\xb8G\xcf\x87PU\xc7<\
+\x99\xd7\xfa\xd2\xf6\x89\xb6\x89\x00%k\xfb\x01w2\xd3\
+\xad\xfb\xc9G;\x07\x15U?\xa9\x95(\xf4\xd3\xad\xa7\
+\xdbL\xb7n\xfb`c\x16n>\x16\xd6\x89rr\xf4\
+9B\x021Z\x1ey.L/\x08\xeb2\xc1\x18$\
+\x19\xd8\xed\x0e\x84\xa5c\xf7w\xf9<NYk\x94\x8b\
+\xe1\x93\x0e\xe4\xf6\xa1\xb3\x9d\xdc\x89\xc4\x85t\xdf\x0b\x1a\
+\xb5\xfc\xdeA-o\xbf\xd5\xb5\xeb:\x04@\xban2\
+)\x1e\xd2\xb5q\xc3\xf4\x11h\xa9A\xd5f\x0d\x10\x9a\
+Z\x16T\xa0\x8b\xda\xfe\x9e\xa5t\xa0\x02i\x801-\
+\x00\x81T\x94\x94\xfcC\x8aH\xa2\x8c?'\xe7\xc1\xb5\
+;G\x13\x90\xfc\xb5\xb0N3\xc9>\x93\x01zu\xdd\
+\x90a\xa5\xa1@dT\x89Td\x18\xef\xd31\x89\x04\
+\x82\xfa\xd2\xd3P@\xc5\x97\xa1\x0cQ\xbd#\xd6\x92\x9c\
+\x12\xcf\xa4y@\x0b&\xf7\xd7\xca$\xa7\xaay1_\
+\xcc\x0f\xda\x0c_\x0a\x9b\xaf\xeb\x19a\x1d\x03 \x03-\
+j\xed\xe5\xb7\x08`\x01%\xc4N1\x8b\x94\x86\x01^\
+\xed\x87\xc9\x88\x98\xf6\xc3\xba\xfd3\x9fw\x95^\x00\x04\
+\x128\x01\x80\xc6.\x13\xfb\x0c@p\xbaYX\xa7q\
+\xa3\xcd\xe4\xc3\xc2\xba\xf6~Y\x12G\xe3\x003\x87\x08\
+\xa0\x12\xa8\xddK\xc3V-\x83\xda\xf7WQ\xc1\x05 \
+\xbdsXw\x8e\x10\xf7U\xb2@\x03\x82\x86\x05\x0a\xb7\
+\xb6\xb0\x98A\xa9iS\x89\x14\xfb\x0e`;\xf7\xfb\xea\
+\x16\x83jMM^\xc2\x8c\x06\x8e\x00&\x19\x19\xf5\x1c\
+3\xb1U\x19\x5c\xda)\x12_\xe9\x7fT\xb7\x82\xf4\xf3\
+6?\xb39\xae\x01\x96/\xd9\xbd\xb8\x95\x1c&\xa0\xb2\
+\xbbgXW\xea\x07\xa0\xb6\x9f\xf3+F\xd5v\xfe\xbc\
+\xb8@ \xca?\x1ak\xe7\xfd\x9e\x04D2\xe9\x0e\x13\
+w\x168\x8f%\x9aC\xe2\xaf\xf6]\xa2\xca\x12Q\xe2\
+$\x01\xa5s\x8a\x7f'\xd1:\xb6K\xe6\xbfY\xaf\x18\
+1\xbeF-\xb3\x11\x00\xf0\xb9\xce\xa5\xb1\xe4z\x14\xc1\
+\x1bK\x05\xcc7\xe7\xa7q\x13\xc0c\x0c\x9b7\xee\xcb\
+\xb8\x03d0:%\xb4%\x90\x8c\x87\xebs\xbf\x12a\
+\xfcw\x00\x05 `(m-&\x90\xf7\x137\x10\xc7\
+&\xb6\xe7\xb9I\x0c&\xc0^\xf3@B\xcc\xbc\xe7\x97\
+c.\xa5\x9f\xbc\xf9jX\xd7\x05\xc4ss\xbe8O\
+0`\xec\x9fc7\x05\x9f\x97q\xe2\xc1\xf6q\x9f\xeb\
+\x02\xc7\x1f7R\xf7\xfa\x07&\xbe?\x94\xa9\x170\x08\
+,\xb4\x0b\x14\xf8X8D\x03Q \x05\x80\xd1\x0e\xec\
+\xb8n\xc34!\x22\x0c\xef\xa9\xdc\xae\xc3D0Q<\
+h\x81\x18\x04\xed\xb8\xd6\xd8dos\xc5\xb053\x82\
+\x82V\x01\xbfL\xb7\x81\x17`\x8e\x88\x9f\xfb\xf7w\xd7\
+:T\xdd\xbf>\xc7\xcf\x01\x09#\x82\xe3>QN\xbf\
+\x95m\x88\xd4\x22\x09\xf0M\xb4\xa1v\xba\xda\xf9\x01\x22\
+\x042^\xf5\xe5\x94\xf1%\x0ef\x82\xaf%\x02\xcb\xc4\
+\x1e5\x10\xc6\xd2\x0a\xe3\xe2\xa0\xf6\xbe\xa8\xe2\x9f\x1b\xfa\
+\xd2k\xe3wZ\x06\x82G\x1c*f\xd1\x0a;.\xdf\
+\xdd\xd7i\xe9\x88\xa8\x9d\xd1e\xe0\x9d\xb9\x01\xe4\x01@\
+t\xa9\xfa\x98\xca\x88\x0b\xc4\xcd\xbf\xff\xcc\x05\xfc\xc1\xcc\
+\xe4\xda\xd8!\xce\xf7\xc9@\xf1\x97\xd2q2\x1e\xc6\xcf\
+\xc11\x8a\x22^&\xe7\x89\xf5! \xb6\xf1\xff`\x10\
+Ct\x7f\xda\xeb\x08@?t\xa8\x98K\xfd=\xe4\x16\
+p\x92\x0e{\x05\x9a2\xd1\x1c)\xc8\xb9\xeb\x11\x18\xa8\
+\xe1\x05Dq\x9c\xdd\x9fye\xdd\xd8\xb8\xad;\x9f/\
+\x10t_\xe6\xefOh\x13S\xf71\xaa\xf4\x8e]\x07\
+\xc6\x0d\xc8z\x00\x14\xf8\x02$\xb8/@\x93\x8cI\x02\
+\x1b2\xb4jTeZ\xea}s\xdek\x0bW5\xa7\
+6v\xeb\x19\xf5\xcf|\xe3\xd0\xa4\x03P\x8c\x01L\x02\
+\xfd\xb7\xed\x0b\xe6\xb7\x80.\xdb\x0e\xc98\x13\xbf+\xca\
+\xa0\x8d\xd9\xb8\xca\x0cG{\xb3\xfeze\xb41\x03d\
+(\x93\xcaW\xcc\x97\xd7\x84u\xcfO\xed\xe4\xc5\xc3:\
+\xad\x06\x99C\xcfK\xbb\x99l\x17H-^f\xad\x1c\
+kTj\xd4G\x07q\x0252\xf1\x02t\x22XU\
+C\x9d%\x05(\xa2\x1c\xf7\xfd\x0f\x85\xad\xef\xb79\x18\
+\xd6Q)}\x8eL\xea_-5\xc9\xfaf\x0b\xc8\xf7\
+\x1f\x1c\xb6\x028\xb4\x10\x8a\xe9\x90\xf3\x91X\x976g\
+\xfb\x1f\x08[\xd7S\xb5m\xfb\x95\xa5\x8f\xf4\xf6\xac\xb0\
+\xf9\xf5za\x9d\xea\xbb\x00\xd3\xbej\xbe\x03\xfa\x00\x90\
+\x19\x18\x95\xf6K\xeec\xc6\xbb\x00\xb5T\x1fW\x22R\
+\xb5\xbd\x09\x90l?\x16\xd6\xf5wV+\x9e\x01\xda\xf6\
+\xa9a\x9d\x98dR\xb0\xeb\x15\x85\xff/\xb3\xddY\x06\
+xUj\x82\xa1c>k\x9f%\xa3H4\x0cS\xe6\
+\xf5\xcb\xf5\xd6\xbe\xef\x5c\xe5\xb0\x00\xd2\xb4\xa5S\xe3\x7f\
+\xfd\xdd\xf5\xda}\xe5\xfa\xda\x7f]X\xa3\xe4\xfe\x9f\xa0\
+\xe4n.\x16\xdc\xb0\xf9\xf5C\x9b\x0fnb^\xbf2\
+\xac\x03F\x9f\xd3\xacD#\xab\x0f\xbd\x8c\xbcvg\xda\
+\xfb%\x15Z\xa6^&\xa9\x02\xfe\xacqG\xd1\xdf\xfc\
+MX\xa7\xbe\xff\x8d\xd9\xfe+\x99\x04\xf3\xba\xdf\xbe:\
+lm7Wm\x1e9\x9a\x00d\x99\xe8\x00\xb2n\x9b\
+m5O\xces\xe1\xc8N3\xfb\x17'\x89\x00\x00 \
+\x00IDAT\xc4>\xae\x04\x120\x93\xcf\xa5\xf1*\
+\x8fm\xfb\xce'\xdb\xb9(`\x90\x01\x8f\xfd\xf0\x89\x1d\
+@\x08\x98\x0a\xe6\xe6i\xc9\xa8\xb8X\xa7\xc1\x93\xaa\xe6\
+\xb5.\x00N\xa9Y\xb0y[X'z\x955\xe9\xa5\
+\xfd\xf1\xc9E\xd3\xa82LD@\x95&\xf0\xc3h\xb4\
+d\x97\x85j\x8b\x1aM\x18\x9f\xda\x01\x9d\xf6\xf7l\x03\
+\xb8{o\x8a+^?K\xb4\xec\xd3\x80,\xa5+2\
+\xcb\xce\x89dpl^\x1a6\xff\xd9\xff\x9b\xde5\xbd\
+\xab\xd3\x92\xc8@\xb7D\xd30$u]\xb9ZX7\
+\x9f\x01\xd2\x80\x19~\x10`\xc4\xbe\x98\xed\xf4\x04\xb2\x9b\
+\xbf\x0c\x9b_?\x1f\xd6\x01\xbb\x18j\xce\xdd\x04\x94J\
+{\x22\x03\xe7\x86\xfbl\xd6\xae*U\xea\xa8\xcdl\xce\
+\xfb\xed\x8b\xc2:&\x94}\x83\xc6\x84}%\x01\x0d\xa2\
+u\xd3\x17\xc2\xd6\x00\xbe\xb4\x1c\x120)F\x06\xbfG\
+ \x96\xda\x01\xd5\xf5\x05\x13)KT*P\xc60p\
+\x0ezn\x12\x1a\x99\xd0\xaan'\x02\x13\xcf!K\x18\
+\x00y\x05t\x10\xe3\x1c2\xf5D\x89k\xbejo\xa8\
+\xb4O\x17\xa1\xd4\x9a\xb1?\xcc{\xe4m\xda>\xa9\x14\
+0\x13]\xc5\xeczxX\x07\xc8=5\xac\x8b\x0b\xec\
+\xf7\x02>\xf7;&8\x05\x82J)\xd4\xfe\x0b\xdc\x89\
+\xb6I48\xb7%B\xf8m\x12q\xe6\x8f\x04\x8e\x9f\
+;\xc7u\x19\x91\x18\x13\xa0\xdb\xe7u\x03\xc2\x08\x11\xdf\
+`p\x8e\xe2\xd2\xee\x8f\x7f\xed\xfb\x91\x81`\xddx\x9e\
+c{\xbd\x01\x00\xa8\xfb6\x9e\xfcD~I\xee\x9f\x05\
+4\xf9;%u>W\xa2hd\x16\x88\x83$\xae\xf9\
+\xab\xfcY\xfe\x1a&\x83\xbf\x1f\xc5\x0f\xcds\xcc \xfb\
+\xbc\xdf\x07\x0c\xf0\xa3\xbd\x8e\xdd\x08\xd6\xf6\xe0KI8\
+?jl++n\x1c47*\xce\x04\xc4\x8f\xdd\xe0\
+\x00\xec\xd6+M)\xa5\x08\xc6\xd5\xbap\xce\x17\x03\xc0\
+@\x10\xf5s\x90\xf9 \x019\xe4%\x06\xe4\x8c\x8e\xe2\
+\xdc\xab\xee\xff\xb8s\xe8\xfb~\x89\xdf8\x97\xday5\
+\xfa\xa3X\xd8\x11-t\x5c\xa9\x12\x19\xf8*A(u\
+\xfd\xab6]\xf5\x15(\x80\xdc\x8c\x80\x85\x1b\x170B\
+\xc88p\xe3\x83\xf7~2\xd0\x02^j\xa1\xa8\xc6\x80\
+\x0e\x01\x93\xfbB\xad\xf1\xe0\xfd;\x0a7\xc4\x0bre\
+\xfcl\x1c\xfe\xce\x84\x1e\xfbR\xba\xde\xb1fg\x14_\
+s=\xfe\xdd\xc6\xe5\x80\xb3\xa0\x04\x8e\x90G\xe3e\x03\
+Z\xafk\x99\x904\x0cLx\x0b\xee\xcbKfv\xf3\
+sam\xe1\x1f\xda\xc6\x91\xf8\x1fd\xf6S\xc9\x1cH\
+D\xab\x9e\x8b\x80[\x86\xd8\xab\xe7g\x1c\x7fm\xc9\x84\
+mn\x92%\x18\x10h\x8e\x94\x0c\xbe\x9aQ\x01\xc5M\
+S\x8d\xf8\x929_\x04\xdc\x00\x06\x07\x9a\xf1\xd3.\xe8\
+\xfd\xb9\xd0\xcc\x1b\xf3M`e\x03\x5c3\xe3\xcb\xab\x0c\
+\x8d>\xed\x9fOU}\xed\xb986\x16p\x06zU\
+\xc3H\x957\xc5\xb9P\xa3\xeb\xb9\xca,\xf9^\x1f\x5c\
+\x8e\xb9\xbf\xcfR\x92\xa2\x949\x90\xac\x13\xa2<\x1cS\
+\x1b\xb7qP\x03i\x03\x17X\x9cg`\xb2\xe4\xbc.\
+\xf5\xd5\xb1K\x84\x0d>\x03\xber\xb0\x88\x9e\xc8\xf0\xa3\
+\x22\xaa\xb5\x07D\xa5\xc8\xd0\xe6\xc9a+\xf5\xb7\x1c&\
+\x99\x1c\x81\x03d\xd7u\xc9\xac\x13\xcd\x1b3\x04\x99\xd9\
+\xb4\xfe\xcb\xf1\xb1\x0e\xc7~\xbc\x0e\xc0tl\xb7'\x86\
+u\xed\x06\x01<\xe6\xad\xe7\x9c\x07\x7f9\x1cJ\x08d\
+\xd6\xcdG\x07\xbf\xf1\xf3\xf7\x1cC\xb5\xb8(\xd2\xa9\xa6\
+]\x07H\xf6\x85.\x07_\xa6\x13`CLI\xed\xb7\
+\xfb\xb2\x0f\x08\x90\x8f\x0e[32\xdb\xdf\x0d\xeb4\x1e\
+\x04\x9c\xa9\xd2]\xe7G\x06\x92\xc5\xa8\x02\x80f\x006\
+\xdd2\xac{~\x0e.\x801\xa0\x07S#\xc7\xad\xb5\
+G\xfb\xeb\xae\x9db\x96\x90\xec\xbd\xb0\xd9*\xfe\x95\xed\
+\x1f\xa7\xbf\x0f\x9b\xa7\xe3\x8b\xc3\xd6~\xf4u\xa0\xe7\xb8\
+n\x9f\x176\x1f\x8c\xb7\x0e[\xa9\xe45.\xceG\xda\
+\x09\xc4\xc6\xb2\xe4\x01\x95\xb5\x02D%3j\xd1\xf5\xcb\
+&Z\x98\x0c\x89r\x04\xae\x96\xfd\xc8\xffG\x8ai\x11\
+u3\x9e\x09\x04P\xe5\x9e^\x17\xd6e:3P\xde\
+\xfc{X\xc7P\x11 \xa8=\xd7FqpX\xab\x9b\
+\x06\x07H\xc9\x15\x87[\xa0}rv\x11 \xda\x88\xd9\
+\x92\xd4\xd1\xed\xed\xc3r\x1f\xf9\xd1\x9a\x81\x9f\x1e?=\
+a\x0a-\x83k\x87\xad\xfb\xe3\xf6-a\xc9|8\xaa\
+\xcb\x04\x13\x13\xa6}\xf0\xfc\xb0Uu~szX\xcb\
+\xa4\x1e\xdf2\xa9\xc4\x16\x950r$\xd3\xcf\x99N\x0e\
+[\x19\x1f\x05\xccxn\xa9\xbe\xee\xdc\xde>2l\xfe\
+\xf9\x85\xc2\xd6\x00TiA\xed\xdf\x02\x95\x5cO\xc43\
+\xa7o\x855\x91\xc1P\xd5\x89\x00z\xd1~p\x9e\xbf\
+\xbf\xfd$\x98\x15\xa7\xeeNm\x00\xe6\x05[\x89\xa0\x9a\
+\xddc\x96\xaeG\xad\x14\xed++\xb0\xd2$\x9a\x8f\xcf\
+s\xf5\xecN\x9c\xed:\xad\xc1l\xb4\xb7l\xcc\xa9\xf2\
+W\xf8EYbS\x22\x7f\xff9\x8f\xdf|~mO\
+\x0a[\x03\x04\xd4r\x81i\xb5\xa9\xb5\xce\xf3\x1c\x9a\xfe\
+2l\xfe\xf7/\x85u\x14~m\x163C\xbe\xf7\xf2\
+d\xba\xfci+\x86[\xa9\xc6\xf7\xdf=\xa0i_\xd8\
+'\xf2\xb9W\xfb;j\xf8\xa8\xfd\xda\xbe\x02\x82h\xb4\
+\xc8\x88\xf1\x1b\x8d\xc7y\xd2\xef\x04\xf0\x8f\x22g\x02\x16\
+\xc0\x18\xe6\xd9\x0f\x93z\xcf\xbf\x010\x13\xb3\xe3\x97\x8c\
+\xe2j\xee\x83f\x11\xff\x11\xa0\x9b\x19\xfa\x02\x9c\x93\x81\
+4\x9d\x19\xb6\xfaK\xc5\xe0\xfb\xb9\xd6Hp\xf1g.\
+\xbbv\x85)\xff\x81?\x99Z1\x9e\x0b\xed\x95R\xe9\
+\x07\xc8eW\x90R\x8b\xe7o\xca\xb0\xf3\x03\xec\xff\x00\
+r@\x1b\xa0@\x9bN%\x94\x98X\xce\x15@\x22\x0d\
+\x1b\xe7\x99\xaf\xb1D\xd5u(\x91 \x1e\xc8\xffH \
+\xb8\xba\xc0\xd0\x8eq\xde9'\xedg\xce?\xcf[b\
+`\xe8\x12P\xfb\xbfqM\xe0\xd1>V\x99^L*\
+ZM\xae\x8b\x9f\xc4\x0f\x12\x17\x98\x1f\x98\xb9>\x7fL\
+8\xf2\x8fi\xc2`<`\xe6\x8e\xd4v\x99{\x19m\
+\x0c%\xf3\xcf\xe7)\xd5\xa2\xfd\x80\x09\x0d\xa8\xc5<\xfd\
+I]\xd2\xdc\x9f\x00\xdd\xabq\xfbB%\xfc\x0e\x01(\
+J\x94nL(\xf2\x0f%\xc0\xf8S#\x85\x9e\xc6\x05\
+\xbf\x0c\xb3\xceu\xf3;\xf9\xbb\xc6Y<\xe2~<\xe7\
+1p\x17x\xbbn\xfe\x1b@r\xd0l\xd8\x1c\x13\xd6\
+1<]\x87\xe7\xe4\xfd\x8d\x1b\xf1\xea(\x9d\xbf@\x17\
+g\xb9\xef1n3O\xb5\x0b\xc6\xa8\xa2A\x97\x80\x17\
+\xed\xa2J\xac\xdb\xaft\xc9\xd06\x13\x93F\x5c`\x5c\
+\x87\xc0\xdf\xe7\x1f\xac\x89\xa7\xbd\x9e\x05I\xe4\xc7\xc4\x1e\
+\x10\x9e\xca\xe4\x13\xd7\x12H\xf4\xfd\x22\xcf\xe86H\x1b\
+.\x80\x00\xb5\xdf\x00@tm<C\x80Y\x08\xb3@\
+\xbdo\xbf\xd1\xab-\xc6c;\xabkC(\xa3f\x81\
+X\x88~\xdf\xfb\x08\xfc!\x872\xa9\x16\xbe\xeb6\xa0\
+(w(\xfa\x80\x09\xf7\xe1\xf7\xd5\x14\x8d\x13\x8f\xc3'\
+P\xb9|\x1e\xe8\x1e\x14DH;\xa8\x9c\x88\x15\xa0\x01\
+\x168\xa44\x00\xfc\x9e\xcf\x1d',\x84\xf7*\xf9\xef\
+WNJ\x1c\xd5\xf8_\xcc\x80\xcbs\x5c\xfb\x82.\x0b\
+\x03\x85\xde\xc6\xba\x22\x82\x8bZ\xa9\xae\x05\xc7\xe5\xbc\xf0\
+w\xae7\x0f\xe8\x0a\xec\xd2\xf1\xa6&;\x07+\xcd\xc1\
+\xa8L\x85\x80\x0e\xf2O\xd4E\xfb\xad{f\xc0{\xb7\
+%`.\x91\x1b\xe3\xef\x00[\xdb\x14.\xe3.\x03\x0c\
+\xa1\xb7\xe1\x19'm\x89l\xa0\xd4\xf41\x1b2\x13y\
+\x18`#S\x8e\xd9\xe0@8+7\x14\xd4M\x99\x0b\
+%\x06y\xa0\xda8\x8aB\xae\x1d[\xce\x1fT\xc0Z\
+\xf8\xba\x17`\x9c\x08d9\xbe\x00\x85t\x00*\xd3E\
+\xed\x19\xe2<\xa8\xef\xd7\xbaE\xf5\x83\x5c\x8e\x1b\xa6\xbf\
+s\x9f\xd6\x13\xa4\xd6\xab\xf1\xd5\xeeE\xfb>\x1b.\x87\
+83H\x95A0\x9e\x0e\x0c\x9f\x8f\x22\x98L\x1e\xed\
+\xf66\x7f\x1c\xd6e\xa6\x1c \x0e\x06\xeb\x13R\x9a@\
+\x09\x87\xbd\xdaU\xd9\xb0}\x9e\xfdC\x1f\xed\xbf\x09\xeb\
+\xda#\xca\xe4k+\x93\xd4\xf8Z\xef\xe6\x95\x03L&\
+\xcc\xc1n\x1er@Q7\x07\x95\xe2\x12\xb5{HX\
+G\x9dW\x83\xad\x16\x0cc k\xb7\xe7Y\xbc\x00\x1f\
+\x1cR\x8e\x12 +\x03\xc7\xda\xe7\xd5\x94\xdf,l\x15\
+s\xda|$\xackOh\x1e\xa8=M\xea\xb2\x1a\xe3\
+Rc\xe7\xf0fW\x03m\xe8\xec\xeb\xa5\xbe\xad\x06\xd0\
+\xfa\xb4\x0fq\xd41\x0b\xf29V\x0d*`13\xe4\
+\xd3'\xc2V\x80n\xff.a]\xcdyv\x9d\xd8~\
+;l~\xbd\xfb\xf6n\xdb\xbb\xcd\xd3\xf3\xcda]`\
++\x83\x05\x80\xfc\xcbdD$\x05\xb8j\xc3\xcd\xcfd\
+2\xed^\x94\x01\xbcZ<\xd7\xad\x9d\xd6C\x9aUI\
+\x83\xf3\x88H U\xff\xe9>a\xf3\xf5=7\xac\x9b\
+\xbf9N\xe6a\x9dg\xce\x87\xcc\x0cT\xa0 \x93\xa2\
+6\xd8\x17`\xdbyk\x9fN\xe6QQ\x91\xd5N\xa7\
+\x06\x84\x00\xbc\xf6\x89K\xe4\xf9s\xd1\xcdE6\x17i\
+L\x99\x16xLI\x81\xde\xdch\x0e\xd8n\xb4R\xc0\
+\xa77\x85um\xfc\xc2[\xf8Z\xd7\x8f\x1d#\x03\x15\
+;\x01\x04\xc0\x9dy\xba9>\xac\xed[\xe7\x8f}\xab\
+\x89%\xbd\xa3\xfd\xbc\x95*N\xd7](\xf9\xba\xad\x94\
+J\xf9e\xc2\x9a\xff\xd1\xfc\x94\xd0\xea\x0f\x80\xa12\x99\
+\xa8\xe29^\xd3\xc5\xc3\xd6\x00\xb4\xf6Q\x80I\x06\xfe\
+\x05\x84\x04\xa3\xe7\x9c\x8e\x01\x82\xb2\xfa\xe1\xa6\x02\x13\x8e\
+c+\x91 \x12Z\xcc7\x01\xc5\xe0X\x16\xa5\xd49\
+\xf6\x1f\x99\xb8\x01\x94\x85\x18\xe5^W\xcb\x9c\x80\xf3\x98\
+\x00\xd1~\xae2\xe22\xa4\x98MJNr~N_\
+\x0e\x9b\x7f\xefea\xd9-\xe1\x0e])e\xb8\xa1\xef\
+X\xc5\x07KS\x80X`\xec\xcb\xcf\xcf\xf6\xb7\xa1\x19\
+\xf0\xc1\x90\xb5l\xfb\xdc\xa7\xda\xf5\x7f\xb8\x15\x9f\xac\xed\
+Ro\x90\x80#5}@K\xb6m+J2\xeak\
+\xce\x97V\xa2\xf1\xfc\x0e \xca>\xf6\xb5>\x9d\xcf\x09\
+\x88\xd6\xb9\xe3\xefe\xde\x88\x15\xde%Kl\xd2Q\xde\
+\x5c0\xec\xf0\xda\xfa\x12\xd9#\xda\xca\x1f\xb0\xdf\x13\xc3\
+\x05\xa0(1#\xbeHD6\x99E\xbb?\x09\xeb\x80\
+\x9b\x81a8\xdd9,\xbbu\x9d\xbfK\x9c\xf0w\x94\
+*\xf2gi|\xdc~\xef\x97\xdb>FC \x01\xe9\
+\xba\x1f\x22\xab\xa8\xf5\xc9\x1c\xa8s\x1b\x00\xe9\xbc\x90y\
+\xd45EW\x0d\xf3\x88h\xb4.8J\xa6$j\x9e\
+\xd6l=\xf7~8t\x87\xe2\x7f%#J@T\xa5\
+\x9d\xd9\x86\xb1\x12\x1d\xce\xbd\xb1\xc4q\x107\xacs\x5c\
+@k\xff\xf2\xbc\xac\x7f]\xb8\x00\x7f\xfc\xdc1\xc1\xc0\
+_\x07\xa8H88\xb7F\xc6\xa4\xf1\x1c\xb5\xc1F\x11\
+\xe7!#^\x89&\xf3\x98?#\xe1\x04p\xf1s\xa5\
+>\xa9%U\x81\xe5\xd8\x15\xca\xfb\x1b\x8fM\xc9\xc2/\
+_C\xe2\xa6\xce\x19\x8c$\xb5\xec\xaeObs\xbc\xef\
+Q{m\xd4r\x13\xd7y\xfe\xfc\x0a%\xba#P\xc7\
+\xaf\xe4\xdf[\xcf\x9e\xbb\xcf\x15_\x9a\x07\xc6\x87\x9f\xc3\
+O\x1f\xb5\xaf$\xa4R\x94\xb4\x18\x07\xae\x0f \x96\x0c\
+\xb2\xfa\x1c\xc0\x968\x93\x1f\xc9\x0ft~\xf3\x9b\xf9\x7f\
+\x02w\xa5\xbe9_\x89WV\x09%`,5\xd2:\
+f\xde\x92\xd0s\x9f\xd6\x81\xe7f|\xc4\xf39>\x07\
+K\xe4-jH\xae\xd8\xb5\xe9\x13\xc0\xc7\xe3\xef\x91 \
+\x01\x02\x87\x0b5\xdc\x86\x91T\xb7j\xdfg\xc2\xf8{\
+\x94v\x22z\x91y>\xa1\x9b\x00\x1e\xc0UZ\x88\xba\
+~\xd9\xe0zU\xc9\xefv\x1a\x04c\xad\x8d\x07bA\
+r\xb8-\xa0\x9f\x19(\xda(\xb4\x02\x19\x0b\xdb\x01j\
+\xe2\xa2\xd6\xf8<\xc8\x17\x15h\x818uy\x7f\xe7\x81\
+\x08\xd8\xd3\xf1\x8d^\x0bM\xe4\x0f\xd00R\xfb]\x8f\
+\xeb\xf3\xf76x\xcf\x03\xf5\x10\x05\xd2\x836a\xd5p\
+\x09\x90M\x8cKe\xc6=\xdb\x12\x16\x8b`\x9b\x1b\x81\
+\x0d\x92ch<\x1cL\xa7\xe7\xc4\x86h%@P]\
+\x1fn\x94\xc8\xaf\x05\xa1\x86&\x03\xa5\xed\x83\xc2\xe6\xdf\
+{OX'\x02&\xb3\xa2\xe6K@\xa3\xb4\xc1\xcf-\
+$\xcf\x01\x12F,\xeeb):8\x22\x86\xe6\x85\xeb\
+\xc9\xf6\x88\x95\x01F\x113o\x8f\xae~\xb3\xcb<<\
+O\xd6\x16\xa1\x9a\xdf\xf3\xd0\x9a\x22\x8eGe\xce\xce\xcc\
+\xbe\xc9\x073c\xaa\xd6P\xc67k\x0c\xf5y%j\
+Hdl{\x97\xb0\xae\xf6\x1d\x90\x82\xa2\x0e\x915o\
+\xb2\xadUe\x9em\xa46t\x0c\x17j\xa2\x10|\xf3\
+\xca\xc1l\xbd\xd9pG\xca\x94\xdf\x07,\xd9\xb8\x89\xe9\
+q\x8cm|\xe6\xa5\xdf\x13\x88\xfa\x1c\xeb\xf1rC\xfb\
+H\xf3U\xf7\x8aT\xa3\xad\xfe\xf2\x97\x0b[\xc5\x80J\
+\xe3\x025Z\xd7\x07%;6Z\x19R\xfb\xd8\xe5\xb3\
+M\x9c\x03\xc7\xbc\x97\xc1\xc9\xae\x04\xf5\x05@ \x96#\
+C\x0b\xd1\x05\x14<qi\x17W\x81\xaf\xf5<\xdcw\
+\x017\x1c\x10\x077\xc0\xcc\xc1\x839\x80)\x02(A\
+\x00\xe2\xd8\xffa\xd8\xfc\xfd#\x16u\xfc\xdd\xed\xc3\xba\
+uf\xbc\x95H\xfcsf\xd4 \xf0y\xdfU\xd3\x09\
+PR['\x10\xce\x83HF\xbb\xf6C\xed\x0a3\x83\
+\xa7\x86}\xf3\x9fa]\x8dv\xaa\xaaW\xe9\x86u\x93\
+\x99\xeb\xa2p\xe69\xb1\xfd@X\xd3$X(\x8c\xff\
+=\x01\x0c\x99z%@)z\xc6q\x16@l\xdf\x18\
+6\x1fS\x17\x08k@B\x0b\x5c\xabT\x09\x80\x84J\
+,\xe3(p\x7f\xcd\xee\xb5\xbb\xd7\xae\x22\x84E\x89\x96\
+\xb9\x91a\xbe\xff\xee~\xbb\xfbu\xfb\xb6vs\x18,\
+\xc9P\xa8\x1aN\x19S\xa5\x13\x09\x10h_\xb5ys\
+\xd8\xfaw\xd5\xd5 \x03\x9e\xcd\xff\x0e\xeb\xa8\xda\xda0\
+\x12\xbb\xe3\x90`\xa8(I\xd1\xd62\x198%\xb2\xaa\
+\x8f\xb7R\x00\xed:\x05\xbe\x9eg\x02\xb8\xd5\x06\xee\x8c\
+\x14WS\xeb\xff\xe6\xbd\xeb\xc6~\xba;y\xf7\xd0\xc6\
+41\x8e\xa9\xf1!\x80\x9a>=}j\xfat'6\
+y\xaf\xd9\xee\x99\x00\xef\xdd\x12h\xfetG\xdd\xff\xe6\
+\xe6[\x9bov\xa50\x7f\xb2\xf7\xf8\xc8\xc06\xd1\xca\
+G\xb5u\xb6dLR\xb3h\xf7\xc2\xb0F\x11\xfdD\
+\xa3\x88^}~ZW\xef\xa8\xe0\x18[\xa9\xa5\xb2\xbb\
+\xd4\xee\xd2M\x1c3\xe7\xeb\xe6\xb4\xcd\xe9\xd1\x87y\xfb\
+\x98\xb0\xee|\xce\xfb\xa9\xfd5V\xcd\xe7r=\x9c\xd4\
+\xa8\xf67l\xed\x01\x13H\xd5\xfe\xb1\x02)%b2\
+\xd8\x023~\x83\xcc\xaa@\x0cc\x08\x93B\x89\x87s\
+\x8b#\xca\x1f\x91\x01\x04\xa4\x03\x14?\xb8\xfbPcx\
+\xdcu>\xf7\xee\xda\xf9\x13\xf6oTw\xa5\x22\xb1\x1b\
+\x87\x0a\xf5Kf{i\x07\xec\xbdb\xf7\xcaFi\xff\
+\xfc\x02\x0c\xec.\xbe\xbbd\x88w\xee\xdd2K\xd7|\
+\x1e@1\x03\x86\xdd\x1b\xc3\xba\x9aym\xf1\x00f\xc9\
+\xa0\xb2\x8f\x15\xd5\x9bx0\xf17\xe7\x93\xf9\xa8\x1b\xca\
+\x09\xd9G{\x9b\x1a\x10\xd7kE\x06%:\x0ah-\
+\x86\xa0\x80\xc0>\x879\x96\x80\xdc\xee\xf2a\xdd\xb9\x07\
+\xa8\xb4_\x00\xae\x05\x84\xfc\x0d\x997\x80\xad\xf6v\x80\
+\xe8\x0c\xac\xa7\xdf\x0f\x9b\xa7\xd1=\xc2:\xc6\x81\x92U\
+\xf3\x93?\xeby\xf13\xed3\xceM\xe7\xec5\xe6\xb0\
+\xf5\x1a\x0d\xb8{P\x03\xee\x00\x10\xf6\x05\xd7!\xb1\xe5\
+>\x9d\xbb\x02v~3\xbf\xd2}b\x12[\x0f\xceA\
+\x9a\x17\x80u\xef\x87b?\x94d\xd4x\x11\xbd\xcb\xef\
+k}*\x91Q\x1b\xfd\x7f\xc3:\xf1`\x81\x90q\x8e\
+n\x1f\xdf\xed\x983\xfc\x17\x81\xe0&\xff\xcb\x00\xaf\x00\
+[\xe3\x22\x0e\xa0\xee\xcf\x9fQ*\x9a\xfb\xc4aZ^\
+\x80\x86/\x0e\x8cY\xaf\xfc\x8b1\x03\xef\xdf\x01\x1a\xfc\
+f\xdd.\xf4\x9d\x17\x90\x02\x9e\xed\xdf\x002\x80\x87y\
+MTPi\x9aL\xf2 \xeeY\x00\x80x\xcc\xbc\x05\
+X\x8c\x94}\xcf\x1d\xe0 \xb0\xf6\xef#\x03`\xa4\xe2\
+{\xf5{\x02\xf7\xb1\xa6_\x1cB\x9b\xeeca\x1d\xe3\
+\x18C\x1d a\x1d\x1b\x7f\x19qq\x9b\xeb\xe0\xd7)\
+q\xf2s\xcfedj\x8f\xcc\x0e\x09&\xcfA\xbbM\
+\xfb\xaf\xfb\x02L\x00\x02\xac\xd3\xfc\xbb\x12\xdd\xcd}\xbc\
+\xe2\xf2\xbf\x0e\xeb\xdaAZ\x07\xf6\x1d\xe7\xb8qr\x7f\
+>\xf7\x82\x15\xaf\x1c*v\x0f\x00\xa8\x80\xd9\xc0\xdb0\
+\xe2m\xfe\xab[\x00\x16\xae\xf6~\x83\x9ac\xb5\x93\xe3\
+@\xefe0\xd9\xf7]<\xa6\x1b(Z\x03\xe1~\x1f\
+\xd9MH\x03j\x00c\xb8/\xd2m,c_\xc8\xf8\
+\xf4\x9eBb\xe3[\x03\xd2\xe5\xbe|\xaeW_&6\
+\xea\xc6\x91\xd9\xbf^\x00b\x01\x99\xf82\xf3\xfe\xddu\
+B\xa2\xdc\x07\x8a\x8d\x83b|\x15Hz\xbf\x0b\x0e\xdf\
+[\xf8\x16\xa6\xcf7\x11m\xc0\x10C\x81\x8a\xe7b\xe1\
+jwa\xa3\x85p\x9a\x80^\xd7\x8d@\xbb\xc3e\x9c\
+\xc7\x0da\xec\x0b\x8a\xea\xbfI\xc7\xc7\xc1|\xfe\xbc\xee\
+QCA \x8fa\xa1\xb6\xcb\xc6l\xbe@XQ\xa8\
+\x89\x03R\xb1\x16PB\xb68J\x17\xcd\xf1W\xe3H\
+\xf58U\x80k|\xfd\xdd\x88\x1c\x0bd\x1f\xbcd\x8c\
+* \xbbj>\xdf\xbbf\xe0Hl\xcf\xfd\xfdj\x02\
+\x11\x80\x07\x94d\xda\x10\xd4\xde\xf5\xaf\xcf\x00@_\xdf\
+\xcd?\x86u\x07\x8c\xfb\xcf\x03\xb4\xfa\xbd\xcb\xb0x\xbe\
+\x1c>\x07\x92\xfb\x93\x09\xe48@8\xd5\x9c\xd9`\xa9\
+\x19[_\xc6\xc5\xfa1\xcf\x1cl\xa3\xba\xed\xd8\xaeR\
+\x9b\xaa\x0c\xb4\x8br\xe8\xc0\x02\x08\xca\x5c\xa1\xeaff\
+\xad\xe6\xcbX\x8b6\x00\x0d%\x02\x97\xd4\xc0\xfa|\xe2\
+\x9c\x00(\xd4\xf1\x5c72\xcd\xf5\x5c9\x0c2\xef\xda\
+\xc0\xe8\xce\x90%$EI\x06\xbc\xdc3\xac\x13\xbb\x82\
+\xe0\xda?\x87\xf1\x96\xd9)m\x07\x0c\x1d\x8e\xb6\xccS\
+R\xbe\xd5\x92C\xd2\xf5\x81\xad\xfd\xc0\xbe%\xc3\x94\x94\
+\xcf\x12\x89\x03\xb0\x9e\x14\xd6ep\x01\x05\xae3\x01\x04\
+b\x93\xe5\x90'#\x05C\x0c \xa5\xd6\xb5(\xa3y\
+\xff\xa8\xeds\x983[\x07\xec\xa4\xe3H\x94k\xfb\x83\
+\xb0\x8e2\xec@\xcf\xeb\xdb<7\xac\xa3\xae\xaa\xdd\xe6\
+\x90\x0aH\x88W]c\x01\xb0\x8aZ;\x96V\xe4|\
+j\x04\x89\xc8\xa4\xbev\x09\xdc+SF\xd4Ki\x88\
+\xcc\xbf\xfb\x97\xc9\xfc\xc7%`+*\xde;\xd3a\xa4\
+z\xae\xf4A\xf7\x81\x7f\x0e\xeb\x1c\x86\x04\x9c\x0a \xa1\
+zM\xdcP\xe6\xff\xfeK;\xc0*\xb9\x00\xec\xa2|\
+\xaa\x99\xa5:\xfe\x1ba]@\xee<w\x0e=\xaaY\
+\x01>D\xdd\x88\x84\xd5\xbe\xcbAJ\x86B\xb5\xeb\xb2\
+^\xb5\xcd:.l~\x9fg\x86u\x19\xef\xd4v\xa8\
+\x12\x15\x0c\xa5\x0b,\xc0\xc8\xee\xfd\xbb\x0f\x848\xd1\xee\
+W\xc2\xe6\xe7\xf1\x84\xe9\xf1Q\x0a\xb0\xf9t\xd8Zk\
+\xbb}MX\x02\xd3\x97j@R\xeb\xf3]\x22]\x09\
+p\xec\xceY2\xec\x95\x91\xbfO\x8a\xd0\x05@\xf1\xe2\
+U\xbc\x8d_b>\xed\xae\xb2\xcc\xd3\x02 \xb2\xc6\x1d\
+\x13\xa2\xfa\xd5c\x02f\xfbQ\xfb\x80\xcc\xeb\xee\xe5!\
+;\xbb\x96RT\xfb\xb3\xdc\xcf9f\xd1\x0c0\xa8\xca\
+2\xa3\xd5\xd5B)\x8e}\xed\xac\xc1Q\xb6\x7f\xc8\xa4\
+I\x18d)X\xcdo\xddr\x00\xbaj\x96\x05\x5cc\
+\xe9Tf\x94\xd4~W\x89\xca_\xec\xfegc\x16=\
+~\xf3'\xd1n\xb2\xf6\xcb\xb3\x97\xb6\xd0\xed\xfa\xe2:\
+~3\xbb\xda\x9c\x7fa\x5c\xb4\xa6\x87\xc1\xac\xb8\xeb\x02\
+\xe0`\xf8T\xa9\x83\xf9\xa3\x1b\x0e\xffM7%\xeb\xe3\
+z\x09P_m\x09\xa01\xd3*sL4\x8fx]\
+f\x86\xab\x9bB2\xa5\xa8\xfe\x17\x80\x9dL\xbd\xf9\xb9\
+\xcf\xd6\x80\xd9\x7fn\x0c,\xfe\x92\x0c\xb9\xf3\x99(\x1b\
+?k\x04\xa2%\x1e\x00\xc7j\xe1\x05\xc6\xb9\x0ek^\
+\xa1\xb4\x13\xffs\xbe\x09\xa8\x9d\x1b\xd6Qv)\x99\x1e\
+\x166\xdf\xd7g\xc3\xba\xf3\x8d?\x801\xe1s\xd3\x7f\
+\xdb<:\xac\xebn\xe2<\xd0\x8d\xc6~\x8d\x99\x93\x0c\
+\x9a\x0a@\x5cO\x8a\xbd\x1e\x06\xcc'\x83BM\xb9\x12\
+\xa8\x0a\x84\x05\xa2\x00\x0eL\x14\xe2\x9d\x18\x879\xee\xbb\
+\xdf\x0a\xeb\xf6o\xe2\xc6\xce\xd5\xdcw\xf8\xaf\xba\xcf\xc8\
+\x84n?\x1c\xd6%\xe6\x00\x9c\x027\xe7\x1d?fL\
+\x14\xeeg\xfc\xe0>\xf9\x03\x80\x8b\xb1;\x96\x9a\xfb\xbc\
+\x8f\xcdM\xc2\xba\xfb\x17\xf8Z\xbf>\x9f_\xees\xf9\
+\xed\x02C\xbfo\xbd\xc8\x0c+\xc5\xfa\xdcR:Z\x00\
+7\xe0\xd0:\xc2t\xd1\xbe\x0e@d_7\xef\x04\xe8\
+cbqdF\xf3\x03\xc5\x1d\xfc\x0d\x09\xb71\xc3n\
+\xfc\x05\xa2\x00\x8eQ\xbc}\xd4\x962\x1e~\xee\xf3\xad\
+?~\xb9x\xca\xfb*\x85\xb0_\xfb\xc2h\x1f\xda\xed\
+\xd5\xab\xae$\xc9X\xaay\x010\x18\xc5\xe5\xc7\xf8q\
+()\xa9\x12\x01\xa5\xb5\xe2d\x9aO\x9e;F\x97q\
+\xb2\xafH\xa8z.\x9e\xbbyG\xfb\x0b\xc3\xc3\xf3\xb7\
+\xce\x00B\xc6\xc5\x97x\x16C\xd2\xf8y\xcd\xfb;X\
+\xc8\x12\x0a\x17\xca\xbc\x05!\xa3\xaf\xed\x9f\x07sFR\
+\xf68zb\xfe\x10q\xfav\x97\x81\x8b\xc79u\x03\
+\x13\xc3&p\xb8H\x1el\x97\xed\x02\xff\x14\xf1\xab\x89\
+\x19\xc3t\x5c'\x1ax|\x0b\x05\xd7\x7f?&\xc5r\
+\xc6\x80\xd9\x84\x1d).#\xd5\xa5\xd70\xf8Q7\xa0\
+\x02\x1d\x13D\x061\xfa\x95^\xfb\x5c\x90]\x1b\xb0@\
+\x065ih\xbbW\x19\xda\x8b\xe7\xcf\x05Pc\x1fy\
+\xefk\xe1\x98\xd0\x02d\x07\xd2X\xdb\x02\x900\x9e&\
+\x9a\xc0\xd6\x81\xe1s\xf3\xf36\x07S%V\x09\xc8\x8f\
+\x07QDm\xf8\x1c\x14\xfeN \x96\xa5\x04u\xddj\
+\xbc\x0fff\xb1~\x9e\xe3O\x8c\xc4\x86\xed\x15\x85\xd1\
+\xf3\xb5\x10\xff5k\x9a^\x95\x8e\xab\x8d\xc2s\x90A\
+\xd5^\xd1\x86\x8cr.c\xacm#\xca\x97\x8d\xd88\
+\xa9\x05\xfb\x83T\xc7\xfe\x9d\xa5\xafsi\x0a\x9c\x1c\xd6\
+\x89\x11\xa6\x1aoQ\xe3\x04t\x02<\x81<Q\xc0\xcf\
+\xe7\x86\x96\x0eg\xa9\x0b\xfff\xb3\xb5\xdf\xb8\x9a9\x1b\
+\xb8\xcf#\xb2\xa5V\x0f\xf0\xc4\xa11\xdf\x01;\xd6\xa7\
+L\x9f\x83M\x80\x83i1P\xbb\x0a9\x15(\xfa\x1e\
+\xe2\x0b\xd01\x9f\x94\xe88\xb0\xa8\x13s\x80\xb2\x96\xb8\
+\x80:\xe3\x9e\xd7\xa5\x86\xb3\xa8\xed\xbe\xc6yc}8\
+\xd0\xfan!gv\x1b\xac\xf5\xe2u\xc8\xa4U\x09\x82\
+\x0d\xd8\xfaU\xd2D-\x99z8q\xa6\xd3\xc2:\x87\
+V\xa0\xe5`\xa0\xb1\x01\x105\xdf\xfc\x5c\xed\xa2\x12\xab\
+|~E\xcdG\xf9\xcd\xf6L\xc5\xd8\xe1\xb8p\x14\xac\
+\x97\xa4\xec:\x08Q`7\xc7\x85u\x9a\x16\x0e\x105\
+\x83\x90\xe8|\x8e\xbb{-\x8e\xdc\xee\xa6\x99\xa1\xcb\x0c\
+\xf2\xf6\x81a\xeb\x81\x84\x19\x80y\xa2\x1d\x1e\x87qz\
+lX\x17\xe8R\xa5\xce\x921\x99\xcf*\xd1zpX\
+'\xbeh\x1c\x89\xb7\x12M\xca\x9adT\x5c5\xd7\xd5\
+\xce\xcd<\x15\x10\xb4\xaf\x95q1=.l\xfe\xf9\xdb\
+\xc3\xd6\xfd\x91\x96\xc0\xf6\xdea\x87w\xb9\x10\x88\xefN\
+M\xf5{\xf7\x8d\xe1`~\xfdL\xad\xef\xc5!k_\
+\xddz\xe3`\xc8lf&W\xe6\xa1\xdan\x09XS\
+\x1d\xbc\xb4\x0c\x00\x0d\xc4(3\xa0\xd8\xfdLX'B\
+\x88\xaa\xcc\xe1\xcf\xf5\xbf\xb9_X\xe7\xc88'8`\
+\xd6\x05\x06\x92}\x94:;\xe0\xe4\xa4\xac\xfd\xd5\xfe\xd0\
+|\xb4\x0f%5\xbb\x00\x95\xa4\x9cNO\x99\x9e:=\
+\xb5\xab\x1d\xff\xdc\xd2\xaen\xf3\x8e\xb0\xf5>k\xbf\x07\
+\xe0f\xb7\x83j\xaf\xa6\xf4@\x00\x91%&\xdb\xbb\x86\
+\xb5\x9a\xdd\xa5\xcd\xe2\x91\x0b3czn\xd8\xdaN\xad\
+\xb4I\x04\x1a\x0f\xdb;e\xef\x94\x96\x19k\x0c0\xa5\
+l-\x8f\xfd\xf9\xa6)\xf1\x82P\xffo\xbd\x81z\x07\
+K;BZ\x0a\xd7\x98\xef\xfe\x1a]\xa0J\xfd=\x00\
+\x8cw\xad\xebF\xe9C1\x90~9E^e\xca\xbf\
+\x92\x8e\xa0}\xec\x82\xe9\xd78\xcf\xae\xbd\x00\xca\xbb\x13\
+\xc3\xba\xd2\x9d\xdcgK\xbcT`\x97\x9a-5\xbf\x00\
+\x01\x008L%\x00'\x07\xff\x84\xf9\xf4:a\x05\xb6\
+\xaa\xd6\x1b\xf3\xe7\xcas@}\xe5\xb5\xc4\xaf\x00\xab\x17\
+\xe4x9wi5\xe8Z\xa2\xf6?\x19A\xbb\xdb/\
+m\x9b\xa7\x7f\xca.\x0e\xf7[\x183T\xfa\xf7~)\
+5\x17\xee\x98\xf3]W\x93d\x0cMW\x0d\xeb2\xc0\
+\xd6\x155l\x80\xf7\xe3\x9b\xad\xa5\x1f\xfc\x1c\x99{\x89\
+\x8bd\xd8U\xa6T l\xbft\xfep\xa4\x13`\xa3\
+\x1e_\xda\x05y\x1f\xe5\xf7e\x89B\xa9\xf5\x03J\x94\
+R\xf1\x0be\xe2\x93\x01T\xe7r&\x12J\x149\x19\
+e5\x8f\x5c\xcf\xd8\xee\x1a3\x05S\x03SI)\x0f\
+1B\x00=\x00#\xe7I\x01\x8b\xbax87SK\
+\xa4\xc6ol\xcf\xa6\x94\x0f`\xebyf\x80Z]Q\
+Fm\x0d\x22\x99\xf6I\x8cGL>\x09\x95<\x7f\x9d\
+\x1b\x05Lg\x80T\xfb\x15\x11\xdcO\xb6\xa2\x99U4\
+0\x01\x89\xc3\xfa\xa3\xf33\xf8)\xe6\xc5\x988C\x81\
+\x07\xec?-\xac;\xbfi\xb7`H8\x9f\x00\x04\xbe\
+w~\x00\xc2S\xeb\xa4\x9e\xa3\x80\xda\xbc@\xb5\x97\x80\
+s\xae\xf0\x0f\xf8A\xfe\xdd\xdfY\xd7\x02\x5c\xfe.`\
+c\x14]\x17\x17\x0dm\x9dG&\xef!]\xdd>\xd3\
+%\xe6\xc6nR#\xe3Ab\xc3\xfd\x8e\xaa\xf8>\xcf\
+\xdf{\x1e\xfcATw\x1a\x10c\xfbA\xf1\x9b\xfb\xa5\
+\xe5\xa1\x94J)\xe6\xc0\x04\xa8q\xf3\xb9\xa3\x96\x81\xf7\
+s\xce;O\xfc\x1c\xc0)\xfe\x04|e\xa2\xcb\xba,\
+\xe6\xad\xb8a\x04\x00$v\x88\xc3\x03\x02090\x1d\
+\xf8\xb5\xd6;\x7fX\x9ch\xbc\xc7\xae\x159O\x0f\x1e\
+\x22\x9a\xf1\xd5s\xa1L\x1c\xd1\x1a\xc1\xad\x99\xf8\xb1\x8f\
+\xb7\x00\x17\x22\x92\x22>\x15p\xba\x10@\x80\x0b\x82\xac\
+\xec7\xf2\xf9\xb2\x81\x1d\xd5\x05\xf4&@|\xda\xf9\x86\
+\x8cd\x1f\x98\xf7\x81\xfa7\xbb\x00\x06\x95\x09\xb5\x97\xc8\
+\xdd\x85Z\xee}]\xc8\x168\xea\x8d\x89l#@U\
+\xc2lp\x10[@6n\x81\x80\x052Nd\x19v\
+\xedw.\x94\x8e\xecU\x87\x1a\xf5qA\xa1\xb6\x08\xa0\
+\xf2\xf3\xaa\xe4\xc2\xc2\x01h\x08\xec]\xf7\xf9\xc2\xba\xeb\
+\xee\x9f\xc7\xae\xabu\xc9\xb6>\xd5\x06e\xa4h\xdb\x88\
+<g\x22\x902\xd0\xee\xd3\xb8\xa9I>;\xdb\xfd\x99\
+\xe06D5g\x02h\xd4F\xe3\xc01\xf5\x9c\xc7\xc0\
+\xd4\xab\x80\xd7\x01\xa2-#u\xe4\x01H(\x8a\xe1\x91\
+\xcbB\xdd\xdc!\xb5\x06NY\x1c\xc1\xbdc7\xb35\
+\x84\xb5\x1d\xc0\xd5F\x10\xa5>\x1d\x09@@9\x1eT\
+\xd1Q\x92\xd4\x0e\xbb\x9f\x8b\xe4s\xb9yff<\xa7\
+\xcc\x18\xb9\xae\xaa\x1d\xb7\x91\xa6#P\xa2P\x1c\x17\x01\
+\x87L\x87\x0d\xdcFi^@\x82m\x94c\xc0n\xa3\
+3/\xcc[\xf3\xd9A\x8e)a\xa3\x14\xd8\xd8p\x88\
+\xb7$\xe5XF\xb3\xc4\xb18\x18>\xc7\xf5\xd9\x98\xc6\
+\x8d\xcb\xb8\x99O\xbe7o\xbd\x9e=\x88M\x8e\xaf\xe3\
+~f\x1f\xb1^\x1c\x00\x0e$\xed\x9d\xec\x07\x09\xbcl\
+\xde\x12\xd61\x0bd\xe8\xb5\xc7RB\x82\x19\x00@\x90\
+\x09\x02 \x0a\xe8\x01PD\xf1\xd2a)\xaa\xbd\xf9\xe1\
+:\x94\xb8\xa8\x19\xb6\x0f\xd0<p\x90`@$%\xbc\
+\x1c&\xe3\x0b\x98\xf2\xbe\xf6o\x99\x9a\xfb.\x99\xa3\xcd\
+\x19a\xddu\xa4\xe8]e\xd8\xef\x156\xff\xde\xdd\xc3\
+\xba~\xd2\x0e\xbc_\x0b\xeb\xb4\x1a\x12\xb0\xda]2l\
+\xde\x1e\xfe&l-U\xd0\x16t\xf7\xd6\xb0\x8e\xd2m\
+\xdez\x9eY\xcaR\xb5\xcc2!\xf7k\xb6\xb7\xf7g\
+\xcd\xcaA\x98^\x1b\xb6f\xac\xaa\x0d\x0f@\x0d\x90\xa5\
+\x16W\xa0\xa9\xdd\x99\x8c\x15 \x82\xe6\x0bQM}\xb2\
+}a\xde\xe4\xfa/\xe6\x85\x03\xdczs~\x0e]6\
+\x046\xb5\xafp\xe0\x95z\x98oY\x1b\xad\xb6|s\
+\xaf\xb0\xae\xad\xa3s\x89(\xa8sW@#\xa37\xd6\
+\xfe\xdf=\xdb\xe7\xc9\xa4\x0a,S\xfc\xad\x9e\xbby\xaa\
+f\x9c6\x86\x12\x80\xdc/\xf6\xdf\x196/\xdf\xdf\x0e\
+[\x03^\x14N\xc0Te\x02\x7f\xb0\x9cC4S\xcc\
+\x97\xdd\x11\x0b\x05{\x9e\x9b\x0b\x00\x81\x02\x9a\xfd\xea\xa7\
+7\x87\xad\xf7=\x9d\xba\x88#n\xef\xbf}\xc0\xf6\x01\
+\x0d\xe8\xf9\xabi\x0e\x5cB\x1b?\xd4\xf1\xe7\xd9\xd6\x80\
+\xb9\xd2\x9e@\xdd\xc4\xfc!\xa2&\xd3\xf7\x94\xcc\xac\xd3\
+F\xd0\x061\xcf\xcd\xbdG\xec=\xbcu\xab\x08f\xc7\
+\x1f\x1dB]_\xc4\xf8\xf2\xdc\x98\xd7\xd8\x22\xc6\x86)\
+\x03\x88\xb9Yf\x96\x05\xfe\x80\xbacR\x03\xe82\xd9\
+\x06\x15\xd3&\xa9\xedsp\xd42\xa5s\xb8\xbf\xf8'\
+Y{]%3j\xbds|k]\xa1\xe4\xa3\xd6c\
+r\x06\xd0u\xea\xea7\x08\xd0\x0a`L\x0d\x9a\xaa\xd1\
+\xcf\xd2\x94\x0a\xa8\x042D\x15\xbf\x94\x09\x15\xe7\xc7.\
+\x1d\xf4\x5c\x7f\xd6q1#R\x0d\x9e\x96P\xe3\x87\x1e\
+\xb9\x02jDCu9\x01\xacT`w\xe2\xfc\xae'\
+v\x197\xebQ\x89A\x02\x5c\x98oJ;\xaa\xbd)\
+1\xd4\x04\xd4\x0a\xe8r.Y\xaf\x1c}\x9aX)r\
+Z\xfb\xbb\xcc{\x96\x9c\xd4~#\x83'\xf0\x03P\x0c\
+b\xd4\x05\xc8`\xe8\xf9|_\xfc^\x81B\xfa\x1d\xba\
+\xc9\xd4\xbc\xb2_`\x0cH\x0c\xd10\xa0a\xc3\x8f\xe3\
+\xbf:w\xed\xe7\xb7\x0a[\xc5\xf1\xcaOP\xf2`\xbe\
+\xff~X\xb7\xff\xf1\xb7\x88\x99\xb9\x0e\xdd\x8dh\xcdh\
+{\x09\xb8\x14\x88)\xa5\x22\xeah~\xd1>I\x7f\xa6\
+J\x97\x1e\x1e\xd61q\x94\xcc)a\xf9\xe7\x0c\xfc\x04\
+\xce\x00\x03\x00\x05\x06&@\xc5\xf9\xe7U\xbb\xbe\x046\
+; k)\xad\x13\x17$\xc0R~\x8a\x00T\xc0\xa8\
+\x94C\x80\xe9\xf3\xf8}\x02T\x00\xab\x00\xcf\xf7\x98\x03\
+\xfcr\xc0\x00\xbf\xdd\xbc\xf4yD\xedhN\x8d\xfe\xbd\
+\xf9<f\xea\xc7\x12\xcc\x91\x89m=\x00\xc8P\xd5\x95\
+\x22\x0b\xc8\xc7\xd2\x8b\x91I\xec|7\xaf\xbc\xff\xe0\x9f\
+\x1d\xd6N\xdd\xab\xfd\xc5\xe7\xf8}\xd77j\x09y\xfe\
+\xe2\x0c\x9f\x0f\x10r.\xba~\x9f+\x11\x9ab\xb3\x05\
+D\x8c\x22\xee\x9e\x0b\xc0B<GL\x9b8 ?[\
+)\x93\xcf\xe7\xc7\xf1\x87\x94&\x8f\xfe\xeb\xd8\xcep\xd4\
+l\xf0{#\x90\x91??X\x13'\xdc\xc3\xa3\x13\xb9\
+\xfaH\x17`B\xa2\xae\xd6\xc8Y\xcbFq\xfdt8\
+/\x9e\x0e\xd4\x15\xbb\xda\xda\xf8\xfe\x84\x5c\x98\xc7\xe5\xc2\
+\xb9X\xa7\xee/\xf0\xfff\xd3W_\x99\x04\x11>|\
+\xb5{\xa0\xba\x0a\xa4\x03\xdf\xda\xaf\xbc-\x1d\xeb\x8bd\
+\xa0z\x8dn\x22\xc74\xf9\xfe*\x02\xd8n\xb3\x13\xa1\
+\xa8\xbe\xaf}\x9f\xcd\x1e\x19\x01\x04\x08\xa8\xb4_\xd0v\
+O\x8d>\xaa\xb5W\xb5\xd5\x16\x06`ad$\x8c\x07\
+\x86\x1a\x8f\x9bg\xe6\xcf\xefA\x92\xbc\x8f\xf7\x95Y\xce\
+\xeb\xac\xbf\xff\x85\xb0\xce\xb1\xf7\xe0m(\xbe7\x11\x8b\
+\xaa1L\x1c\x13\xeb'\xf57\xb5\x90\x5c\x7f\x8e\xeb\xe6\
+\xc4<\x98\x5c?\xf5v\xa5\x14j\xd0W\x84x\xd9\x08\
+=\x0f\x19_\x13\xd5\xc2\x1b?_\xe0\x89\xfa\x92}u\
++\xd3iC\x94!\xd3\xc7\xf6\x22Y+v\xde\x04B\
+\x00\x0e\x1c\x16\xe2{2\xb0\xefY\xdew\xef\xac\x14%\
+\xf4|3\xc0(\x11>\xfdn\x93:]\x011 \x03\
+\xe0\xf3\x95\xbc\x9ft\x90\xabdB\x8d.\x91\x1b\xed\xed\
+dB1\x0e\x92\x82Z\xb5\xc1\x9e\xeb\xaaM\xb0|?\
+\xb6\xdb\xb3n\xa9\xc1\xea\xbb\x9e\x01W1'\xfc\xfe\xda\
+&r\x99\x0f\x1c\x0e\xaf(\xf2\xef^(\xb9\x85<\xda\
+\xe8\x86vv\x15\xf8\x99g\x00\xa0\xf1@I\xc7cs\
+\xf1\xb0\x8e\x9aj\xbd\x0c\xf3\xea0\x00\x0b@\x96j\xbd\
+\x02\xd2\xc32\x9aj\xe8\x1dT\x0e\x08\xfb\x0b\xb5_\x07\
+/\x00\x0d%\xdcA \xf3\xce\x91s_\xc69E\xce\
+\xd4P\x97#\x9a\x94\xf3\xd2\x04\xc04\x00\xe8@\x8c\x1d\
+(\x0eF\xcf\xd9\xfa\xcb\x8cJ\x89ri\x87f\xdd\xa4\
+\x0a~\x89/\xa9\x09\xa4\x01\x92Z\x00\xb5NP\xe82\
+\xa3\xba\xd9\x86u\xfbjf\xf4\xca!\xb5/&\xf5\x11\
+\xb5\xb92\xfe\xda\x0d\x01\x98<g\xfb~\xb6\x17+\xe6\
+I\x06\xc6\x15h}9\xac\xcb f\xcdt\x958x\
+_\x07\xaa\xf6Iy \xa3\xc0NW\x0a\x9b_o\x1c\
+\xb6\x02\x1c\xa6\xf9\xe6\xaf\xc2\xba\xf1\xca\x0cQ\xd5\x82\x0a\
+lPIQ\x7f\xed\x8f\xbe\xd7%A\x7fs\x8e4\x11\
+,\x22c\xd4\xd3\x05\xe02w2F\xd9\xef\xbb\xda\xbc\
+i\xe3\x08\xd8\x11\xa0kG&s6\x9c_\xd5\xf6,\
+?\xa7\xa8\xfa\xfa\xa9\xfb\xf7\xd1!2\x0f9h\xd6%\
+-\x89SS\xa5\x9eJ\xbc\x92$Z%YK]Z\
+\x0eJ\xc2\xd2\xb1\x99\x8e\x0d\xeb\xc6\x8b\x96@\x026\xad\
+f\xff\x0f;`\xd8\xbc\xd0\x962\x81\x80\x0a\x8c\x95\xfe\
+`\xb6\x00\xb2\xcf\x5c2\xdeD\xd5\xa6\xff\x16\xd6Q\xf0\
+\xbd\x9f\x9aO\xeb+\xf7\xb1\xda?2\xe3\xb7\xf9\xe8\xe6\
+\xdf6\xff\xd6\xd54\x03j\x94\x96\xe9&\x92\x0c\x15\x0c\
+\xb5\xddI\xbb\xfb\xec\xee\xd3\x05\xf4\xda\xb2^6E/\
+\x89?\xa2j\xda/\xd4<g)H\xad\x1f\x8c!\xeb\
+&_\xab-\xa5\xe7\x07\x08\x16\xf0~0EI\xffj\
+\xa9%\xad\x80W\x00\x06\xe0U\x13\x9e\x0e\xea\xf4\xd1\xb0\
+\xd6\xbdb\xd1\x80xb\x0644\x9cn\x13\xd6\x98)\
+\x0dp\xd2\x0eo\x9es\xcb\xf3\xa3\xfd\x91@`\xd5\xfe\
+\x0f\x8c\xcaR\xf1\xbfcX\xd7\xa6\xf1\xd2a\x1d3\x13\
+\xf0\x91\xcf\xcd\xfc\xab\xf9@{\xe7>9\xeej\xb6\x05\
+b)\xdeV\x9a\x22\xe9Xo?\x13\xd6e\x94\x93)\
+X\x80?\x00m\xd0\xec\xa9\xfdX@\xa8\x94Gf\xdf\
+\xb9\x9a\xe2\x85\xf5=f\xe8\x83\x93Y(\x10\xc4\xecs\
+\xee\x99\xcfJ\x07\x88\xfb\x12\x03\xbb\x5cXW+o\xbf\
+\xe6\xe7e\xe9T\x95\x10e\x1b\xd6\xf2W0\x0a\x92J\
+_\x22\xcc\x00\x13\x88\xcf\x1a\xe4\x00\x00 \x00IDA\
+T\x01\xaf\xe7\xe5<\xc2\x04\xe0\xa7\x98?\x02\xa0<\x1f\
+\x0a\xf8\xcc\xfb\xaa\xf3\xc3\xfe\x91%F\xbb\x1b\x85\xad\xeb\
+\xb2\x9e\x17`\x10\x13\x03#\x22\x99;\x00\xc8z_\x80\
+:?\xdd\xfc\xfe\xc2|\xba\x7f\xa1\xab\xe9\x17 JX\
+\x00\x840$Q\xc8\xc5E\xfcq\xf7'P\x04\xac\xe7\
+\xe7\x948\x1b\xff\xc1\xfeN\xb4\x9a\xc6\x0b\xffAf\xde\
+\xe7IT\x18o~\x95q\x1f\xf7k\x19h~\x8bR\
+e\x7f\xef\x8b\xdf4\x02\xd8\xe2\xa0\xf1\xf7\x87\xc4j\x89\
+\x97\xe69U\xf71j\x04\xa4\xbfY\xfb\xaas\xf3'\
+u\x03\xf0\xca\xcf\x1f\xafC \xcbo\x18\xbb6\x8c]\
+\xdc\xdc\x1f\xe0\xdcx\x8d]n\xc6R\x0c\xc0\x81\xdf\x97\
+a\xd7F\xd0\xe7\x8e]\x13>?\xb4A\xb7\xcf\x9b7\
+\x02\xf9\x11h1O}o\xfc$V\x00\xdb\xdf\x0a\xeb\
+\xfcU\xd7-\xf1s\x91\x14\xdb%\xce\xcd\xb1\xc1\xcc\xa6\
+I\x05P\xf150;\x0e\xb6\xe9\xf8\x91\xce1?\xab\
+a\xef\xcbD\xf9\x5c:\xce7\xe8\x0e\x16\x08\x97\xc04\
+\xf0\x8b\x8b'\x95\xe42]\x00\x8d\x12\xe8{\x19\x89\x14\
+\xe3)\xc7^\xe6\xfe#\xa9\x8e\x8bq\x10a\xe2\xd7;\
+F@|\xfa\xd1\xdd\xe7\x09\x04t\x01\x88\xd7\xf3u\xbf\
+\x97\x80\xc6a\xb5\x0f\xeeC\x80\x06\x81\x19(\xdbE\x81\
+D\xe1\x1ekf.vh\xadyQ\xff!\xaf>\xc7\
+\x01>\xaav\xfa\x1a)\xca\x16\x96\xf1B!\x93\xb1\x11\
+\xf8\xb8\x9e\x11\x11\xe2\xd0\x8c\xd4\xe9\x111\x1ak\x5c\xc6\
+\x059\x04\xfc\xb5@\x5c\xbfR\x89o\xa6z\xba\xf7\x15\
+\xc8\x9cw\x00\x1e\xce\x97?'Jtlv+\x90\x81\
+\xa3jl\x03\xe7\x18;p\x89\x96\x09l\x1d<6\x0e\
+\x19^\xd7\xeb\xf79,\xa8s\xaf^\xfa\xc6\x175[\
+\x0d%\xc7|T\xf3G\xc91_\x5c\x9f\xe7\xea\xa0$\
+\xae4nX4\x0b\x92\x02X\xfdw\x8d\xa3\x0c\xb9q\
+\xb2^\xf2\xe7\xdb\xeb\x86u\x07\x14\x84x\xd4d\xb0\xc1\
+98\x04\x92\x09\x1c\x15\xd2\x0f\xa0\x18\xd4@\x0fk#\
+\xe9y\x9b'\xae\xcf\x81\xe8\xc0\x11\x80\x11\xad\x92\xb1P\
+*`=\x08\x98Q\xd5\x940\x98\xdf\x17\xeb\xc4\xba.\
+\xdc\x05<\xf6\x09\x0c\x93\xb5=\xe3\xa1\x19~\x07\xa5\xeb\
+2>2\xfb\xfa7\x0b\xa8\x5c\x87\x00B\x86;\xf7\x81\
+\xcap\x9a\x1f\x83:w\x05\xce\xc6%\xa9tU\xa3\x9b\
+\x99\xffz\x9f\xb1v-\xfb\xf6F/\x8b\xd6\xcdB\xdb\
+\xc1\xac\x1d\x97IB\x81\xae~\xcc2{)\x0eU*\
+\xef\x00\x9a\x14U+\xe0\x81\x98\x95>\xf62)\x0e(\
+\x99\xe5\x14\xcd\xab\xae\x03\xd9G\xbd\xd6\x15\xaa1j\xb6\
+LY\xaa\xab\xd7\x17*\xbavMjA9>\x00\x1e\
+\xcf5\x9f\xc3\xe6\xb2a]F6kQ\xd5\xc4\x8e\x00\
+L9\x5c\xc65\x1d\xf8\xe9YakW\x04\x00\xe3\xf6\
+\xc1a\xf3\xeb\x11a\xdd\xbc#\xf6v\x8b\xb0\xaek\x8a\
+\x0c\x81\x1az\xe2\x842?\x98\x18\x98\x0d\x1cb\xfb\xbe\
+\x03>\xe7W\xb5\xe9K\x06\xd4\xee\xf8\xb0\xce\xd1\xcf\x80\
+\xa4\x1c]\xe3\x9d\xeb\x1d\xf5\x96\xda\xb6u\xbe\xbdNX\
+'\xe2\xa9;\x80\xbe\xd0T\xab\xd5\xb4c\xa8\x98\xc7\xda\
+\xa7\x0d\xda9Dl\x0b0\xa0\xce\x9f\x8c\x87\xcd+\x97\
+}t\xf7\xd3a])\x02\xc6\xc0\xfb\x13\xe0\xccv\x86\
+\x15\xe8\xd0\x8eP\xf3|\xdf\xb0\xb5dh\xbayX\xa7\
+\xfdr\xd2\xde\xbd\xf7\xee\xdd\xb4D\x96\xebH\xc0\xa62\
+\xd2\xff\x15\xd6Q\xda1o\xae\x94\xe2o\xf9\xbe\xbb\x1b\
+\xa5\x88\xe3\xffL\xe0\x17\x93M[9\x0c\x16\x22r\xba\
+](\xd9\xd2\xbd!\xbba\xd4\xf8\xdaw\xff%\x9f\xeb\
+\x85v\xc7\xec\x8e9\x04\x08Y\xf6+%^\x8f\xcd\xfd\
+D;\xdd<\xf7\xaa\xc4\x03\xf0/\x83\x9a\xeb\xa7J*\
+\xf4\x83\x16he)\x8dn0\xdb\xeb\x85u\xeb\x11c\
+&\x01\x9cb\x02\xfc\xaf\xb0.\xf3\x9d\xda\x0c\x02\xca\x22\
+Z}83U\xd9vw\xf69\x16\xbf$\xdb\xbb\xe9\
+\x12P\xfe\x89\xfd&\xcfy\x81j\x01\x04\xda\xea^.\
+\xd7\x9f@\xccsJ\xad\x0bT\xfdr\xe8\x89\xbf)\x19\
+#\xa6\xea\xfa=o\xa2\x95\xc6\x1b@`\x9fH\xa0\xc3\
+\xfa\x9b~9\xac\xab\x95\x05\x14\xd0\xc8p_\x12IJ\
+{d\xde\x93\xca[\x99:\xedz\xed\xc7\x8f\x0c\xeb\x00\
+\x84\xd4rQ\xe2\xb7\xbbSX\x97\x11\xb4\xdf^\xba\xc4\
+\x99\x97}'\xbb\xd4T\x06\x9d\xdf\xc4\xbf\x03\x8c\xea\x8a\
+\xf3\xf2\xb0\xee\x5cJ\xcd\xa5\xda\xa7\xec\xbf\xa8\xec\xba@\
+\xfd]X\x07\x5c:_\xf9\xc1\xceu]50\x8e\x9c\
+\xa7\xf2K4[t]p\xff(\xd8J=\x9d\x0b\xfc\
+_\x01\xb1\x00\xd2~\xec\xdf\xf9\xdf\x122\x8f\x0d[\x03\
+U\xc0T\xcd\xef;\xb4\xfe\x13+\x03\xd1\xfb\xf0o\xf9\
+S\xfc<\xfb\xb3\xb6\x8fJ\x08\x88p\xf6\x09\xd3\x00\xee\
+~/\xack\xffx\x9d\xb0.\xd0\xa3-B-\xde\xfd\
+\xd1\x12PR\xeb<v\xee\xb8>\xfe\xee@\xad\xafv\
+{~>f\xecs^\x94f\x89\x8c\xb5yIS\xc6\
+\xd7X\x9b\xcf\xbf2\x1f\xd3_\xac\xd2\x06~\xe1\xc0\x00\
+\xad\xfb\xe6?\x8f\xe2~\x02x\xdfK\xc4\xf0\xe3\x9d\xf3\
+\xbeF\x0d\x81\xb1\x84bH\x04\x95_m\x9e\x8e\xed\xb9\
+\xc7\xb6\xd5\xfceZ(\x98\x0b\xe6\x83}\x83\xff\xdf'\
+\xb0\xbf\xd9%&=?\x9f\xcbO\x010e7\x98\x1a\
+\x1f\x80\x81\xf1\x96@\xf4\x0a \x95h0\xef\xc5\x85\x09\
+\x90\x14\x131\x99\xee\x87\x95j\x00RF&@\x95\x00\
+|*\xdb\xb1\x1c\xd5\xe4\xdf\xd6\x80&\xd5^\x0f\xc9,\
+\xee\xe7\x00\x9c\xdd\x05\x08212P+\xe5\xf9\x22\xcd\
+\x91\x8fp\xe3\xb8N\xbc+\xa8\xf4\xc7w\x9f\x03I\x13\
+\xd8\xf7T\xf2\xf3t\xb5\xf1Wh\x9do\x97\x0d\xf7j\
+\x1d\xf5H\xa9A\x84MW\xea^c\xdb\xbe\xd2\xbaQ\
+\x16\xf5\xc5\xef\xcb\xe0\xdb\xd8\x04 2\xdc\xc4\xc9d\xd8\
+{\xa6\xc1\x0f\xba\x890\x0c\xe8a\x03mb\xdbHM\
+@\xed\xaf>\x9b\xd45\x1b\xcb@\xe5\xdf\x5c5\xd5{\
+\x05DcM\xccO\xca\xe4C\xce\xd5\x9c\xfc\xdc@\x85\
+\x19\xa9\xf5#\xc2\xe9\xdfG\x06\x80\x85\xe6s\xf6\xa4\xd4\
+\xf2\x95\x8a\xf1g\xb3\xdf\xbdZ\x17\x07\xd4\x89I\x19\xbd\
+q\x22\xc1\xda\x84\xa9%\xbbS\x22\xef\xa7\xa6\xc3\xf9\xee\
+\xac\xb5\x85\xa4\xfevX\x170\xa9\x1dW\x92\xe0\xc00\
+\xfe\xe3\x02::\x01\x81\x0fe\xbb\xc2\xc7\xa4h\x8e\x9a\
+O\x07\x8f\xf6MY\xb3\xac\xadY9\xb2\xb7\xca\xfb8\
+\x98\xcfs\x05Z\x96\xf9\x9f\xd4\xc5r\xe03\x13[\x0c\
+\x82/\xe4|\xf0<\xbdo\x22\xc8U\xd3&\xc02\xef\
+P\x87=G\x07\xef\xa8\x05!\xd0w\xdf\xe6\xdd\xa0\xa6\
+_\x9f\xdf\x03\x80gu\x07\x95\x0c\x8d\x1a&@\x89\xf5\
+0\xf6_\xb5.e\xf2|>\xa4U\x09\x82\x9f\x8f\x22\
+\x82\xbd\xb6\xc71\xe7\x02\x94\xc9\x5c\xa7cX\x22\x7f\xa8\
+\x80j\x149>J2\x88\x1b\xf9\x1c\xf7\x95\x8c\x86j\
+\x03\xa8\x9f\xb2}\x09\xf3\xc6x\x99_\x00\x0d\xcf]\xc6\
+\xc1}\xca\x80Q\xfbN\xaa\xf4\xe6Va]\xc6\x0a\x13\
+&\xc5\xfa\x88C\x95\x08\x9b\x12\x8eq\xbf\x85Ts0\
+9$\x1c=\x9f+#\x91\x19\xd5\x12\x09\xe3\x18c\xf2\
+\x10'4\xee\x1f\xa8\x00n\x09t\xfd\x9cc\x811\xe3\
+\xba\x04\xae\xda\xa7\x119\x03pq4Qb\x1d\xf4\x1c\
+3\xc0 *{\xd6\xf0\xeen\x12\xd6\xfd\xfd\x1f\x85u\
+\xcf\xc3\xe7\xa3rf\xe0\xa5\xfb\xc7\xf6\x15a\xb3\xbf\xfe\
+\xa3\xb0U\xfd[\x86\xb3\xfam_0K\xc3\xcc\xff\xcc\
+\xb0ViBf|\xf7~}\x09\xb4\x8b\x22\x8ez\x8c\
+\xe2\x0bp\x22\x02h\xbe\x08$\x86\xae0\xc5T\xb2^\
+\x88\x07a\xfc` Yw\xe98\x08Pk\x9c\xcdW\
+\x8e\x8a} \xc5\xf8\xaa\xd6\x9bh\xa0\xeb\xd1\x06\xd0u\
+\xa5\x83Q\x8c\x86\xdc\x97\xeby{\xff\xac\x8d/-\x02\
+\x80\x86\x92\x8d\x040h\x0f`T\x14u7\x03\xcd\xcd\
+?\x84\xad\xed\x1b\x89\x06\x16\x90\xf7\x1b\x1587\xe6H\
+\x13\xdf{E\xabM^\x02\xc1\xa7\x87\xcd\xef\xf3\xc2\xcd\
+\x9fn\xfet\x1d\xcf\x0a\xc4Po\x89h}<\x1dl\
+j\xcbj\xc5\x89{\xbe5l\x15\xc3$\x1e\xbb{\xef\
+\x02 \x8f\x9a<\xb5\xfe\x1e\xbd\xcc\xf39\x1cZJS\
+\xcc\xeb\x04\x10vW\xc8\xf1A\x91\xd5\xee\x8d\xe3h\xff\
+p\xde\xd28\xb8AX\xb7\x0f\xda\xffi{dFt\
+\x0e\xabZ 1}o\xfa\xfe\xffO\xd8}\xc0[\x97\
+UU\xa2\xafs\xeb#\xe7\x5cDA\x82\x80\x22\x056\
+\xa0dE\xe1\x81?\xf0\x89\xa2\xb4\xa2\x980\x80\x8a\xb6\
+\xad\x04\xa1\x11EA\x01EKTZ\x05\xb4\xc1V|\
+\x18@A1P\x82\xd8 \x08\x02\x02%<L$\x1b\
+$\xc7\x02\xea\x9c>k\xef\xf1\x9f{\xd5\xfc\xaa\xde\xbb\
+\xeb'\xd7\xfb\xd5\xbd\xe7\xec\xb3\xc2\x5cs\x8e9\xe6\x98\
+\xfb\x8f/\x99\xd4\xb5\xe4\x808\xa0\xae\x1b\xbf\xbf\xb6\xb5\
+\xdd\xff\xd4\x18\xc7\x7f\xff\x891\xb6.\x17\x87\xef\x0d\xd0\
+\xf2\x92d`\xaf0\xc6\x94!\xbe\xc5\x0a\xe8\x96\xba~\
+\x806v\xa2\x00O\x0c\x1e\xaf\x9b\xd2\x8b\x12\xf7\x04$\
+\x03n1\x96N\xc6\x98\xce\x93\x802\xf3\x80\x09P@\
+\x80Z\xf2\xec\xbf\xcah\xa7t\xaf\xce\x07\xc0\x0f\xa0\x97\
+\x0cmiJ\xc8\xf8?~\x19U\xd2U\x81\xea\x8f,\
+c\xd3\xc4\xb0o\x02(T\x80\x1e*\xbb\x04E1u\
+$\xc4\x00`\x02\x05\xe7\x85\x7f\xa5\xcd\x99@\xcf\xfb\x04\
+h\xac{\x023A\xa2$\x22\x99U3O\x8b\x81\x1d\
+Wr\x22\xd1\xd5\xb4th\x7f\x01\x8a\x8a\xf9#\xe0\xd3\
+\xbe\x0f@\xc5\xee\xea\x0e\x92\xc0\xb72\xa7\x02\x9c\xdc\xcb\
+\xbb_\x19c\xa3\xe8\x17\xb0\xc8>6\xcave\xb6%\
+z\x00!)\xd1,\xc04m\xee\xaa[\xcb\xff\xbbj\
+JT\xf7\x9b\x8f\x8c\x91\x04\xcd\x0c\x18\x8b3\x04\xf6\xfc\
+4\x19l\xf7\xa3\xf5h\xf7ni\xa7\x014\x94B\xf1\
+\xc7\xf9\x072\xb0\xfcc\xfe\xa5\xc0\xb4\x97\xd8\x0a(\xf9\
+;\xfe\xbb\xfb\x82\xd8\x9c\xc0\xdc\x7f\x9f\xc5\xd5?3\xf9\
+{\x0d\xe8\xa9\xcf!\x0e\xf2\xfb\xe2\x8fN\x89\xef\xed\xd2\
+=gg\xa0\xfa<\xf6\xb5\xcf\xd1U\xf5\x01\x02\xfdg\
+\xeb\xd2\xe3)\xf6\xd6\xe7\x13_D\xdb\xa4\xf6\x0d\x7f\xc2\
+\xbc\xbd\xbbi\xa9\xc8\xa4\xdb\xb7M\x0d\xbf\xd6\x91\xff\xe6\
+\xf7\xbd\x8e\xc4f/i\xe8%\x18\xb4\x9e\xec#\xfb\x9b\
+\x9d\x03\x00\xf8<J\xd515\xb5[\x0eS\xa7\xc4\xcb\
+\xf9\xc9\xe2\xc0Y\x04\x7f?1h\xad\x0b\x00@\x5c\xd8\
+\x19\xc2\xf9\xf7S\xcb\xf4}*\x0bq\xfe\xf4\xdd\x82\x8c\
+0\xe5]AD\xde<\x01\x05\xba\x04\x8c\xb0\xee\xbaS\
+\xad=\x0a\x9d\xd7\xf5:\xbe_z\xc9\x05\xaf\x08\xff\x17\
+\xe6\x82\xbaU\x1c\x8fk7\x15\xfc+M\x1f8\x1bm\
+\xa9\xb9;?T\x94\x1b_D-\xf1L1\xf9\xe4\xc6\
+h8\x8dR\xde\xda\xf8\x9d\x96I\x17\xe0C\xe0d\xdc\
+}\xef\x99\xd7\xae\xce\x8f\x1a\xd27\xbc\x00\xcc\xe7\xf4{\
+6\x96\x83\xeb\x00~\xb2\xbd\x8f\x83\xe1\xf7\xbd\xae\x80\xcc\
+\xc5*0\xbbR(m\xef\x0b\x90\xc0`\xf8\xde\x02}\
+mS*po}1\x17\xcd\xd4\xb9\xd6\xc4\xc10\xaf\
+\x10,TZm\xa8\x04@\xdf\xb9f0\x88\xcf\xec\xee\
+<\xc6\xf1e_3\xc6\xf4~\x11\x9b\xda=z\x8c\xe3\
+\xf7\xd7\x8e\xb1\x19\xe6\xcah\xebkK\xf5\xb8\xd7T\x11\
+\x13\x0bRv<tk&\xc7\x01\xb7/nX% \
+k\x8d\x1c\xf1%\x94K\x86\xdc\x85}\x892\x08\xeb\xfb\
+Y\x0f\x7fw\x89P\xef~\xf7\xf0\xbc\xc3\xf3\xa6Z\xe7\
+O\xef\xce\xdf\x9d\xbf\x88\x94\xad\xedV\xd50\xab5\xbf\
+\xdf\xaaI\xb0{\xe5\x18\xd3E\xae?o\xda\xdd\x95C\
++p`\x90\x04\xd0\xd6\xa7w\x91h\x00\xd1i\x06\xd7\
+\xe7\xf0:\xbe[_\x06\x12ro\x9f\xda\xb7\x1c\xd4\xc6\
+H\xa8\x0c\x89\x9au\x19ITx\x0c\x0a\xcfi\x7fB\
+b\x194\xaf\x0f\xe0p\xa1:W\x80\x0b\x0e\xa8\x80\x87\
+\xc1\xf7\xb9\x05L\xf6\x01\x91\xa1\x0e\x90`\x0c\xa0\xdc\xa1\
+.\xbb(Q\xb2\xbes\x8c\xa9\x16T{\xc6>\xff4\
+0\x18t@\xa0\xf6\x95\xfdB'\x16\x99\xb6V\xf5z\
+\xdaaET\xad2\x09\x18\x09\xc9H\x9cV\xeb\x98Z\
+\xce\x0ax\x94\x98\xc8\x0c<\x7f\x8c\x89\x92|\x89\x00\xb1\
+W\x5cv\xf6\xd6\xfe5\xc0]\xb5\x17\xa4a@\x0c\xa9\
+\xf7-V\xcb\xce\xdeP\xcd\x0f\xd3\x00cB\xdf\xf7\xb2\
+\xcb\xa8q\xda!z}\x8e,1\xaa\xd4n\xee\xfem\
+\x8c\xe34<n\x8c\xe3\xf7\x17\x8c1Q\xd5\xd54\xd3\
+(\x81\xb4\x03\xa6\xb4\x97J\x9f\xf7\xaaa\xd5w\xf7\xb7\
+\xa2\xad\xf0\xc6\xcck\x02\x87E\xfc\xf6\x83\x0b\x93\xe0\x1e\
+\x83IP\xa5\x1eD>\xd5\xfa\xe6\x82\xafZV\xdd\x1d\
+\xec\x07\xe2t2\xa9\xeca\x1c\xd5\xdd\xcb\xc6\xd82\x9c\
+\xc4\xc6J,H\x86@\xe9U\x98\x22\xa5E\xe1\xdf\xd9\
+G5\x8b\x1cB\x19\xf0\x001\x95\x19Q\x8b\x1f*q\
+9\xbc\xd4\xc6\x95\x18\x10\x15\xa3\xb6\xec>\x09\xd3\xe5p\
+\xc91&\x86\x16\x00\x9ec\xf7\x13a8d\x9f\xec\x1e\
+9\xc6\x04h\x9f\x1b\xc0\x84\x1d\x8a\xbd=<0\xe7<\
+\xd4\xea\x02\x5c\x95\xa6h\x9bH#&\x22y\xa5\x9a\x9d\
+}$\xa0\xac\xe7\xb9\xe7z^vOY\x19\x1c\xd5\xef\
+\x1d\x13\x92\xdd\xfcDJ\x91^\x19\xe0\xe7f\xb9Gn\
+\x9b\x8cr\xc4D\x0f\xe7\x8dq\xfc~\xfd1\xa6~\xe6\
+\x00\x05\xda\x16\xec\x95u\xe1(\x0aX\x05p4Dr\
+\x1fTfP\xe0\xff\xd21\xa6\xc0\xea=\xa1\x8c6\x0d\
+\xa4\xc3\xa5\xc7\xd8\xce\x7f1\x8eP\xed1R\x00\x18)\
+y(qP],\x00\x97\xce;\xe6\x04\x06\x09\x0a~\
+\xbaI\x94\xffC#A\x17\x0d\xedE\xc3\x00:\xdcn\
+\x8c\xe3\xf7\xb3\xc7\x98\x80+\xf7\x13\xe6\x98\xfd\x1e1\xbe\
+\x12e$J+`\x95xP\xfa\x80\xf1\x84A\x12\x91\
+\xc5\xb2\xbb\xc4R1?\x88#*\x8d\x89]\xaf\xf6\xa5\
+D\xf4\xbc\xbf\x12\xbck\x8f\xb1e\xf2\xab\xbd\xa0n\x02\
+\x12!\xec?\x00O[S\x0c/\xe2\x81\xfc<%\x04\
+\xec\xa6\xfb\xcc}`\x9e\xdd\xdb9\xb7C\xeax\x88\x1d\
+\x13y\xdc}\xc9\x18S-\xbf\xcc\xbd\x0c\xb2{\xb7\x8b\
+,w\xf1>\xcf\x85\x81\x891\xe6\xef\x89\x0b*\x99\xc2\
+T\x12 \xb9\x7f\xbb\xff\xec\xdf%\x9e\x88\xf7\xbee\x8c\
+\x09x\x09P\x5c\xcc\x99\xdc\xcfeW\xd9{\xf7\xb1R\
+\x8a\x9e\xa1\x05\x10(=\xe5wa\xd8\xd1(\x00\xf8\x12\
+\x9b\xa4\x0d\x12\xbf\x89\x1d\xaa\xf3#\xa1\x02(\xe8\x81\xb3\
+\xb8\x83]\x90\xb1\xef\xe2\xd5\xeeW\xf1\x8c\x00\xb71\x01\
+\xca\xaf\xf3\xdc\xda\xd5\x8aC\xdc\xd7\x00\x0e\xfe\x0d\xff\x90\
+\xffk?]\xa2%\xbez<\x85\x99`\x1f\xf3\x07g\
+\xed\xb7\x0bNoWY\xf3\xd6k\xfd{\x22\xd2\xbc\xf9\
+\xb9\xc7A]D\xd1\xbc\x9a\xe7\x0e\x1c\xf0\xfb\xec[\xf3\
+\xf4\xf6\xd6\xe6\x5c|\xe8\xcb\xfbw\x80\xa6kfy\x1e\
+\xbf\xc7_\x13\xaf\x01f\xbc\xbex\xc6}\xce/\x04\xc4\
+\xf8\xf2\x5c\x9fmq\x88\xb8\xac\xcf\xf7\xd6\xfe2\x1a\x00\
+>\xb8\x05\xbd8q\x015\xf9\xbe\xae\xbfT\xb3\xd5F\
+Z4\x03\xae\x9f\xc0\xfe\xec\x89\xd2\xdfE\xac\xd2g\xb3\
+\xa8\x882r\x0e\xe4\x1c\x08\x9f\xca\x82\xce\xed\x17\xfem\
+\xe94\xbb\x22\xfd\xe7N\x99\xbbk/\xe4\xb4\xd3\xdb}\
+\x5ciu\x5c\x8b\xe2\xe4\xe2\xb7\x91M\xa0\x85\xe4\x90\xa8\
+\x9d\x22.22k\xffi\xcap2D(\x9c\xd4,\
+{\x1b\xb8^K\xe5\xc0vJS\xcf8^+\x81\xc7\
+u\x939\xe7\xf8\xb7~\xb2\xb5\xc0\x0e\x8a\x8d\xe2\x00\x03\
+,|\xbe\xaeF\xdaE?\xcc\xb3\x8d\xd2E0:\xb2\
+\xf8\xe9\xbc?C\x0a\x99\xf4>\xd4S\xb3\x0f\x8e\xee\xc4\
+\xa2\x82.\xd0-$8\x8e\xe8\xee\x1b\xc7\xd8j<w\
+\x1f\x1ec\xca\x8cC\xc4\xd4\xaauQ;\xf3'PT\
+K\x7f\xcb\xf4\xcb|@\x9e\xfb\xb3Yw\xf3/\x00\xff\
+\x851\x16\x87eq\x14\x00\x0f\xbbg\x8f1\x89y\x99\
+?\xf3\xdf\xba6\x94\xb8\xd2\xcfE\x8c\xc6>\xbbN\xf6\
+\xbb\x00\x86js>\xf7\xee\xcc1&\x03-c\xa0\xa6\
+L\xdb\xb6\x88\x02VF\x94a\xb3/9\x90\x97n\xed\
+\x1c\xad\xa3\xe7\xeej\xfb\x1cK\x172&J\xba=\xa0\
+\x90\x96c\x80\xe2\xc4\xc1\x80x2l\x10T\x81\xa8u\
+\x12X\xdbO\x182M\x9d\xb5\x80\x03Ty\x7f\xcf!\
+\x0bu\xb2D:=\xbf\x0c\x0a\xb5v\xfb<\xf3\xb0\xfb\
+\x9d1\x8e\xdf\x9f:\xc6DUt\xf1\xb3{2(\xa8\
+\xf3\x02o\x17&\x80\xe9\x7f,c\xa3\xda\x0b40\x14\
+\x88n\xa5\xcdT}\x1e\xeb!\x13\xe8\xe2\x81d\xcbp\
+\xb8\xd89\xd2\xda\x80\xf9=\xea\xd7\x02h\x19\xe4N\xa5\
+\x8c]\xd8\x9d7\xc6\xb6?\xaa\xf4@@\xafF\xb9\xb7\
+\x85\x04\xe4\xe9\xa3\x1d\xaa){.\xb0\xa9}\xfd\xa61\
+&\xed\x0d\x0eC\xfa2\xef_7\xc6\xe4\xe8\xc6\xee\xec\
+\xde;\xc6\xf1\xfb\x15\xc6\xd8\xe6\xb7\xa8\xca\xec\xbbZ\xed\
+\x94B\x9c\xfc\xec\x18\x13\x22\x1eGWMq\xa9\xe7\x86\
+*_\x14O\x0e\x06Q*5\xacj5S\xbb\xab}\
+\xe4\xe1\xfb2?ah\x000\xf7\xe7\xee_\xba?w\
+\xa9i\x7f\xe4\xa8i?y\xee\x18\xc7\xe3\xf5\xf61\xa6\
+L$@\xe9\x01\x87\xaf=<`\xa1\x04\xdfu\xa1\x04\
+s\xa49\xc8\xbe\xe7B\xdf\xed\xc7\x98\xeeU\x19`\x81\
+\xa9}\x8b\xe1\xc6^\xa4V\xbd\x18Q\xd4\xb8e\xccS\
+\xb2\xa1t\xa8\xdaw\x0a4\xec'\x99STd\xaa\xff\
+\x98\x10J\x95\x04\x18\xa9E\xacR\x0e\xed\xf7\xee9\xc6\
+\x14\xf0\xc9\xc0p\x98\xf8\x05\xf6\x9f@\x22\x8es\xf5o\
+\xcf\xbe\xc7\xac)-\x89\x00\xcbE\x09\x0f\xe0\xa0\x8fr\
+Q\xa1\x03\xac*\x11)\xbb\x8di\x84\x91\x10-\x035\
+\xb0\x877\xa5V\xf3\xa6k-m\x01x\xbar\xc8\x00\
+\xb1\xabj\xf6\xd54k#\x17G\xb0\x98\x12a\xce\x9d\
+\xf1?\x13\x90\xb2g\xec\x84@\x05\x80c\x1f\x09\xbc\xed\
+\x0bv\x01c#\x1a\x02\xd5\xe7\xfc\xad\xb9/^\x94@\
+?\x0c\x05\x81h\x05lY\xdf\xdd\xcf\x8c\xb1\x05\x02\xc7\
+\xf0za\xde\x09l\x01,\xa5=\xa1=\xe7\xffHi\
+\x05\xfb\x16\xc0\xb2\xec\x0e\x86\x0f\xe6\x13\xb1\xe3d\xea\x0b\
+\x08P\xa2\x13\xe6F\xf9i>\xaf\x0c\x1b\x8d\x0c\x19B\
+b\xbc\xd4\xed\x89\xd4\xca\xcc\x03J\xf9/\xe6\xe9'\xc6\
+\x98\xfc5\xf7\xa5\xf3\xc3/\x22\x1e\x8cQ\xa6\xcb\x0b\x86\
+\x09q9?k\xf3\x19\xf1\xb8\x02x\xb6nGk\x80\
+. \x88?c\x7f\x95\xc8\xa0@@\xb7\x92h\x5c\x94\
+\x9d\x08\xa3\xab4{\xbcn\xfe\x0e\x90:\xd2\x13K\x82\
+\x82\xfd&\x96j\xbd1\x90\xe2\x8f\xd4\xfe1\x0f\xeem\
+\x89\x1f\x80\xbd\x00\x8d\xdf+\x80\xd4E\x82\x08(`\x89\
+f\x0a{,\xf0o\x01%\x00\xad\xd6\xeb\x1d\xc5\xac]\
+\x99i/\x1ec\x02\xa8\xb45\xcd\xfd]vP\x09E\
+\x98\x97\x80\x82\x12\x03\xe5\x9f\xcb\xe8\xa2\xf0\xa3r\xf3k\
+\xf8=\xfc\xe6\xdc\xf3\x05\xf4\x84\xf1VvIw4_\
+\x02L\xf73\xffY\xe0\xaf\xc6\xdb\xf9\xf1\xbe\xf6{g\
+\x12\xb8\x17\xf9_\xfcT\xfb\xd8\xba\xd8o\xfcP\xfe\x8c\
+\xf5\xf4:\xf6=?\xad\x97\x16\xfb\xf2\xfb\xad\xfd\xdei\
+b\x80=P\xed\x19u\xfeO\xffw\xfeO\xff\xde\xbb\
+\x0d\x88s\xd8\x85*Y\x8e\xd6S\xe2\xb9\x9a\xbf\x9e\x10\
+\x16\x0f\x8b_\xf8\x83\xe6\xb3\x03+\x98\x9c\xc4\x16\xed\x7f\
+\xf3(\xf0\xf7<\x9e\xd7|\x03J:`\xc2\x8f7\xef\
+\xce\x83y\xe1\xd7K\x8c\xf9\xefM\xe4\xaf\x97\xf6\xd5\xf7\
+*\x01`H\x5c4WYtg\xb7\x00\x0a\x02\xa1=\
+\xdf\xc0\xb5o\x9a\xff~\x8dF1\xf9`2\xbf\xe7N\
+\xea\xc4\xe9\x93\xb8\x84\x13\xb7\xdd\x98\x01K\xcd\xda\x1fG\
+M\xfd\xfb&\xc4\xa2\xd7\xea\xdb\xc0\x1b\xe5|\xfd\xf2\xfb\
+]\xe5\xd1B\xfa\x5c~\xcf\x84\x8dex\xcf\xf4\xfa\x18\
+\x06\xfb\xf4\x03\xb5A-\xd8\xcc`\xf8\xc8\xf4z\x9e\xa7\
+#f\x98\x0a\x0c\xa5\x00*mxj#\x09\xb8\x05B\
+\xe6Q\xbf\xdf\x9b\xa5d\xc1\x01\x15\xf8@\xec\xba\xea~\
+\xef\x9f\xd9\xdab\x1c\xb21v\x9f\xdf\xd43\xbbj\xe6\
+\x86\xb8\xae\x07\x9f\x01\xd82\xc6\xab\x83i\x83\xf9\xfc\x7f\
+\x7f\xe1\x9a\xd2j\x0f\x98\x00\xa6.\x14\x06\xf2\xb2\xabH\
+\xa06Pu\xf0d\x96\xf2\xf3\xee\x85cL\x01\x04\x15\
+[\xb5\xf2\xe6\xe7f\xf99\x14E5\xac\x95\xa9\x11\xb8\
+\xfb}\x19\x10\x17\x9c\xcc\x98\x8c\xae\xfe\xce\xa1\x84V\xed\
+\x7f\xa7ZQ5\xfe\x97\x00\x5cQ%\xae\x1aw\xed\xf6\
+d\xbc\xec\xaf{\x86\x92\xad\xeb\x02\xf5\xf2\x04FD\x91\
+\xaa\xcd\x10\xd15\x14w\x99K\xe2T\xbd\xeb\x04\x03f\
+\xdf0\x1c\xf6s\xaf\x0d\xf2\xb9\x94\xc28\x87\x02\x8a\xd6\
+V\xa5\x02\x7f\x19X\xfb\x98\xca)\xe6\x87\x80\xc0yb\
+\xb0\x00B\x1c\xe7\x00U\xb5n\xce\x09\x03\xab\xf6\xf8\x1e\
+c\x9c\x8e\xc0\xd6\xbc\xf8\xdc\x02\xca\xcc'\x07\xa3\xfa\xd9\
+\x9f5\xc6t\xa13\xc02).v\x99\x17\x1a\x12\xf9\
+\xbb\x12\xe1L\x80_}\xec\x95\xa8p\x94]\xfc\xa8\xb1\
+\x02\x19\x0e\x07\x07\xd09\xe4\xa8i\x0f\xf8\x981\xa6\xfe\
+\xf3Ja\x88A\x09\x9c\x1e\xbc\xd6J\xef~d\x8ci\
+\xde\x05\x90J ~t\x19\xdb:\xa38rP9J\
+\xd1@)\xa4\x9a\xfd\x00\x90\x09\xd4\x020h{V\x00\
+\x83v}\xce\x9d\x9aG\xea\xdd\xa8\xd3\x02\x0c@\xdb?\
+\x8d\xb1\x89\x88\x16%\x1b%\x97x'\xe6\x0f5o\xf7\
+\x0cjl\x1cs\xcf_\xb5\xd4\x00\xc78\xb0\x050\xa2\
+\xfa\x0a,\xa8\xa9S\xb5W\x93~\xcb\xac\x17$?}\
+\xca/\xf8\x8e1&\xd1\xc1\xb4\x89\xab\xdak\x99\xcb^\
+\xe3y\xf7\xa5/\xc8\xa6\xeaO\x03\xe1\xc3\xf9\xef\x18G\
+\x0f?\x86\xe1\x0f\x9f\x02!\xf6\x10`\x06\xb0\xe3`\xb0\
+o\xee\x0bv\x90\xa3\xed\x9et~\xdd\x07\xde\x8f\x83\xcd\
+n\x00\xc2dV\xdd\x83j\xf2eFQ\x8a\x03\xacU\
+7\x0a\xf7\x07\xc6KD\x0fK\x9d\x9a\x8ay\x13\xeb\xad\
+L\xb1@\x08\xd5\x18\x93\x80\xca\xb7\xf7\xf1\x9c\x80Q@\
+\x82\xaf\xb4\xf3\x04\x98\x12\xf9,\xad\x0a~\x8f\xf5\x97A\
+\xd4^1\xc0\x986\x83\xc5\x10\x03\xc4\xa4\xa6\xbb\xcey\
+\xda\x0f\xf2\x03t\x998\xae\xdd\x12\x98\xaaU>\xfcZ\
+2\xd4iCX\x80\xe3oD\x1d\x1aS\x83CH$\
+\xed\x0fVJ\x7f\xd99\xa5O\xcf\x19c\xb2\xff\x18\x0d\
+\xcf\x1dc\xd2\xe8\x10\xb0\xea\x7f\x0eHV\xf3\x9b\x8cs\
+\xd9i\xc0\xeb\xbb\xd6\xc0\xa4\xd4\xcf\xd9\x0f\xed\xeft\x15\
+q\x0e\x03(U\xbfw\x813\x0an\xfa\xc9\x173\x87\
+F\x85\xf9\xc4\x10c\xa7\xf9[\x00w\xf3l\xde\x05N\
+\x00\x13\x19k\x9a/M\xbc\x13\xc3@b\xa2\xc4\x18\x01\
+\x01\xba\x8c\xd8\xc7\xb1g\x95\xd9\xedbd\xba\x83\x10\xc3\
+\xd5\x86Om\xb9{^F\x19\xd0\x9f{\xab\x80m%\
+lJ\xdc$\xb2\x00\xcb\x022\x99wZC]\xac\x10\
+S\xd0<:\xff4\x110\x00\xb4e\x8d\xa6D1+\
+\xbe}\xed6\xc1\x8eT\xf7\x05\xa2\xbf\xfc\x0a\xc0=\x00\
+\x8c=q_\xf0\x17\xc3P(\xbb!c\xca\x0e\xc9t\
+c\x80\xb9\xdf\xddW\x80\x82\xd8S\xf7s\x95\x8e\xe8^\
+\x10\xcd%\xa5o\x02\xf9\xb2/J\xdch\x179g4\
+J\x94\x22`\x0a\xd9?\x02<\x80uJP\xeb^\x07\
+<\x11\xe7LB\xab\xb4\x19\x04\xfe\x00fZ\x164/\
+\xf8K\xfc\x01\x01\xfe\xc5\xf5\xb7\xf7\xdc\xad\x94\xb7\xce\x01\
+?\xc0\xeb\xd2\x88b\x1f\xd8\x95.\xca\xb7iY\xad\xfb\
+l\xd7J~}y?L\x05\xfe\x93{\xa43\x98\xfb\
+Wgp\xfb\xfd\xae\x11\xe0{Ot\xf2\xfb\x9c\xcf\xc6\
+\x00\xd0\xe6\xbe\x9e\xcb\xbc\xf9{\xf7\x99\xcf\xef\xde\xc3L\
+\xc0\x80qnzB\x94\xdd\xf4\xfa\xde\xbf\xb7!t\xbf\
+c\x96\x5c\x9cf\x81\xfd/Nunz|\xec\xb9\xc5\
+\x8f\x9d\x19\xd0J\x05\xfa:l\x00\x80\x17 \xa2\xc7Q\
+\xf7\xfd\xf2K\xf5\xf4\x16(\x0f\xb3\xf2\xa1 \x19\xff2\
+!\xb7\x16\x08\xb26(\x8e\xcf\x9a\xc4\xc8Fm\xd6\xb7\
+Mm\x978\x9c\xdaj\xa1vqXh\x0fxN\x19\
+\xdbh\x02T{A\x0b\xd3\xc5\xf7<\xbfL<\xf5\x7f\
+\x1b\xd8\xeb\x0e7\xe9j\xd3\xcf\x97]\xaa\xb8\xb7\x00Q\
+\xa6Y\xc0\x0d\xa1\xb5P\xbdO9\x07\x8c\xc1\xd4\xef\x99\
+\xa6\x80\x85\x13\xb8\x09x/5\xc6\x12\x00\xac\x0e\xe7Y\
+\xc5\x04X\x1d\x19?{}\xef\x07\xe0pP\x05\x9a\x0e\
+T9\x96\xb9PzM\xbf\x83\xd6\x914\x07\xcd\xc6\xe4\
+P\xba _\x15\xa0C\x80h\x9ee\x0a\xf5\x9fva\
+\xde&T\xd5g&\xd0\x12\xd0(\x1d\x81T\xa2\xcc\xca\
+\xb0Z\x07\xdf!\xb8\xa8\x8e\xb7\x1dc\xaam\xf5wg\
+g\x1eo\x12\x80\xe0F\xa9I\x0b\x93@\xc6}\xf7k\
+cL\x06\x9eA\xb1\xbe\xe6\xc9E\x85R\xcd\xe0\x09$\
+1\x1e\xa8\xc8\xff\xfe\xaa\xbe\x5c\x17\xfc\xdf\xc4!1\xcf\
+\x0c7\xd1\xb3\xb4O\x12\xe8\x96\xc3\x0f\x99&:\xe9\xbc\
+h[c>\x00$\x0c\x00\x00\x82\xa1\xb1\xdf\xecg\x17\
+\x90\xefj\x15\xbd\x1ej\xacvh\xc4\x95\x000\xc4\x82\
+\xcc\x17J\x1f\x877\x81a\xf5\x81v\xf19\x7f]\xc5\
+\x9c\xba6\xd5\xfe\xa6\x06[\x0et\x183U\x12\xa1\x86\
+J\xe0\x1f\xd5\xf5R\xf1\xa7\xa2\xed\xa2\xb7\xce\x09\x08\x04\
+`\xc5\x98\x91ijmZ*\x13\xc0\xf1@\x99\x0f\x05\
+\xbb\xd4\xd1\xd5\xda\x03\x18\x05\xe0>\x8f}\xe5<\xaby\
+v\xc1\xa7\xe6T\xe0_\x01.\xd19\x19z\x8et\xc4\
+\xf7\xea\xfcd_\x10\x8d\xdb\xfd\xc5\x18\xd3\xf9Q\x13.\
+\x03\x8c\x22\xc9\xf1\x018\x00\x0c\x00\x81\x9e\x8fc\xe8\x02\
+4_\xec\xffS\x96Q*\xd8\x1c\xda\x02,\xd4\xfc\x03\
+\x0a\x94\xba8G2/2\xcd\x02\xcd\x88\xcd\xed\xde:\
+\xc6T\x13K\xd5:\x81\xf6\xe1\x93c\x1c\xbf\xff\xf2\x18\
+[&\x1c3\xe3\xe4\xb6cL\xda\x1b\x187\x80\x0a\x81\
+^\xa8\xcd\xbb\xaf\x1bc\xa2zf?\xedo1\xc6\xf1\
+\xfbo\x8c1\x9dW_\xec\x10\xca>`OM\x7f\x80\
+\x82\xba\xf7d\xdc9\xbe\x02\xa6+\xaf\xc0\xbc\x8c]\x01\
+\xa9\xda\x83b\x16\x08\x90\xa2\xb6]Tn\x8e\xa7{\x81\
+&\xcf\x1f\x8c1\x01\xb7\xfa\xc5'\x80\x10\x10\xd4\xf9v\
+\x9f\xc5q\xaf{\x9f\x1dr\xce\xb2\x8e\xc5\xe8\x12\xf8k\
+\x1f\xa7o<\x87\x9d=x\xf826\x86\x00\xca\xb0\x12\
+\x00@\xc9\x15\x9bV\x80}i\x9f\xba\xc7\x9dg\x8e\x98\
+\xdfC\xb1\xf4\xfb]\xcc\x8a\x16B\x02\xb9\xfd\xbd\xc7\x98\
+\xc4\x16\xedw\x8e$\xd1'\x0c\x1c\xf63@\xd3\xe1\xd4\
+\x18\x1bp\xb1;o\xa5,\x1f\xc3\xdbu?\x9c\x93\xfb\
+\x01P\x9c\xc0\xa1D@\xdd\x87\x1c\xf7d\x90*\xf0\x11\
+\x80\x05\xc0\xa4\x05\xc2\xd9\xae\xc0\xf1%\xbb?\xdd\xfd\xe9\
+\x94Q\xce\xfa\x97\xe3\x8c\xc9\xe4\xde\xe7\xa7=`\x8c)\
+\x80 \xe6\x19?F7\x9b\xfa\xbcj\xf5\xf9a\xa1\xe6\
+\xd7>H\xc0_\xc0w\x98!\x98;%\xe6\xe9u\x01\
+tJ\xe6\x12X\x024\xea>\xa6r\x9e\x80l\xff\xa2\
+1\xa6\xfb\x1b`\xce/\x92q\xb5\xef\x00Ni#W\
+v\xdc\xfe!\x92\x88\xe2\xaf\x1b\x85\x04\x81\xfd\x9f\x80\xb9\
+J|\xd8K\x19\xef\xbc\xaf\xb6\xa4\x05\xa0\x0a\x04P\xd9\
+S\xbaP\xed\x88\x01}\xbd-s\x12\x09\xd5\xbe\xd3\xfa\
+D\xb3\xa0\xeei\xc0t\xee\xd1\xd2@\xd1\xc6/\x0c\xab\
+b\xd6\x862_v\xd4\xbd\x8f\xa1I,3\xa5\x0b\x98\
+(\x05 \xd3\xba\xc08\xa2\xa5b\x9f\xd3\xdc\xc1\xb8\xc1\
+\x90\xc1\x08!\xce9n\x87s\xb2\x8e\x9f\x98\xd6_\xc9\
+\x8a{\xd0\xfdN\x0b\x81\xfd;g\x8c\xad\xb4\xb2\x9eC\
+\xd7\x01@\xa2@\x8f\xbfd\xbf5Fc\xb5\x87\x04\xe8\
+\xf6\xf6\xcb\xfcR%\x16\xbaz\x00ni[`N\xb9\
+\x07t\xaf\xe0\x7f\xf7\x80\x19\xf0\xd0\xc5\xe7\x00O\x98/\
+\xfcJ\xff\xdd~\x8f\xff^m\x11\xbd\x0f{\xd9\xb5\xa1\
+|\xae\x0e\x00\xb4Z\xf2\xf2\xff\x95`\xda\x9f=s\xee\
+\xef\xbd\x9e\xf7c\x7f\xfa\xfb\xf2\x0f\xbd>\xff\xc6\xeb\x02\
+\xe2\x89\xe0\xf5Zwq\x9a\xe7\xf2y; \xe5\xf9\xbc\
+\xaf{\xc0\xbc\x09\xe8\xf9m\xfe\xbd\xcfK\x17\xa7\xb6\x0e\
+\xfc\x22\xef\xefs\xf9w\x9f\xc7\xcf-!D\x8b\xe34\
+\xe6\xa8\xe7\xedLn\xf3\xe9\xdf\xbd_\xd3\x048u\xa1\
+L\xc1\x95\x13X^m\xa3\xb0\x94c\xc9A\x1a\xff\xfd\
+*yam\xf6\xde5\x01\x03\xb6\xeb\xb8>\xcf\xca\xc6\
+\xba\x5c~\xbe\xeeDI3a\x1e\xf0\xa4\xc4\xd3\xd6\xdf\
+\x1f\xaf7\x8b\xea\xcd\x14\x92\xcf\xb4\x9a{\xea\xf4\xef\x9d\
+\x02~\x8euGj\x04@W\x8e\xe8\x13\xb1B\xdd\x09\
+\x00\x0f\xfav\xcbH\xa2Tvq\x08\xc0\x83\x80^\xa0\
+N\xfd\x9cc\xe1s\xf8Y\xa6\x01\xa0\x91\xbe\xf4j\xc7\
+/\xd4\xe5`\x06\x0az\x9fL\xf3\xd6\x03\xfe\xde\x06C\
+ \xe2\xdf{\xc6\xff\xe3UB\xb0\x22U\xefL\xe9\x83\
+\xfe\xc2\xd6\xc9Ap\xb08:(\xb2wY\xa9\x97g\
+<:\x81\x03\xe4Y[\xb6\x04\xcc\xbb\xa7\x84z\xcd\x81\
+c\xa8\x04\xf0\xf6\xa5\xf9D\xed\xbfq\x02\xdc\xfc^\xb5\
+%\xb1>~o\x13\xcdX\x01\x0b\xcc\x8a\xdb\x87\x99\xe0\
+\x02\x120\xc7\xc1*5\xe0\xc7D\xad\x99\x08\x8d6n\
+j\xfe\xb4\xf7\xe1\xb8\x0b\xa8\xa2v\xbc{\xfa\x18[\x0d\
+h\x01D\x02m%&\xda\xa6\xa9\xbd}\xc4\x18\x93\x83\
+\xa6\xcdT2\x5c\x02\xe9\x12\xe9\xf2y9\xfe\x90g\xfb\
+\x8c\xe3\x11\xc7\xa4\xfa@38\x11o+q.\x06\x88\
+#b}\x894E\x1c\xab\xa8uj\xe2e\x22\xed\xcb\
+dv\x0bP@\x91L\xa6\xad\x02|\xe7\xc0\xba\xd3\xa2\
+\x10\x98\xea\xd6\xc0\x90B\xc4\xb5#\x8a\xe8Se\x04Q\
+\x8f\xaf<\xc6\xe6\xb0Sow.\x8b\x92l_\xca\xf4\
+&\x00\xab\x1ax5\x99\xda*u\x86\x04\x95\xed8H\
+\xb5>2\x872\x0f\xe9k]\x8c\x0f\xf6@\xedt\xa8\
+\xe9\xd5>\x13\xe0##\x04\xa0\x88cY%4j\xce\
+\x9c\x17\xa2\x81\x9e\xef\xe5\xcb\xd82\xf1\xce\x13G\x85C\
+\x9b\x0c\x8b\x1a\xd0:?\x02\x0e\xf6\xdf\xbeb\x97\xd4\x88\
+\x87\x02\x5c\xd4\xd2\xab\x8fq\xfc~\xeb1\xa6\x00\x15e\
+?\xcc\x86\xca\x10(Up\x81\xca\xf4h\xb3\x94\xccH\
+\xed\xd3\xd8\x8bbV\xa1LFdl\xff\x981\x8e\xff\
+\xfd\x7f\x8d\xb1]\xdc\x15\x90\xca\xe8q\xf4\xe20V\xad\
+<f\x09u\xfb<\x0f\xd5\xe9\xfd[\xc6X(\xff\xe7\
+\x0e\xca\xbfL\x916d\xbb\xd7\x8cq\xfc\xf9qcL\
+\x81\xbb\x00\x14\x90\x9a\xee\x05UR!sG\x5c\xec\xa7\
+\xc68~\x7f\xd5\x18\x13\x90 \xf3\x9a\xbf\xaf\x00\xc8>\
+\x22\xda\xe6\x9e\xc2H\xca\xd7\xee\xab\xc6\xd8\x00\x99Z7\
+5\xdf\xa8\xfa\xda\xcc\xc5A\xde\xff\xea\x18\xd3\xfa\x08\x08\
+Z\xf7\x9bbB\xb1{\x98\x072\xf0\xda\xfc\x01DP\
+-\xd9\x1d\xf7\xa2\x00\xc6}\x0fPA\xd5f\x07\xddg\
+\xce\x81\x92\xb2\xcc+1\xca\xda\xa7\x00g\x99\xd5\xdd\x18\
+\xd3\xfd\x9e{\xe1p\x95U\xf3\xa0\xd4\xdb\x05\xd6J}\
+\xa2\xf9Q\xf6\xd79S\x1a\x98\x80\xa64\x14R\x02T\
+\xc0\x84\xfb\xdc\xf3+\xe5\xa1\xae\xae\xa4 \x1a\x1b\x05\xf8\
+\x0b\xccQ\xd9\x13\xc0\x958\xa4R\x12\x01/?\xe1\xbf\
+,c\xeb\xfe!s\xaf\xfdd\xee#\xf6\xeap\xb3\xd8\
+\xc9[\xc7\x8e_%\xa5L)\x11\x90Y+@\x86\x1d\
+w\x0fp\xb0e\xe0e\xaaQ\xd7\xdd\x7f(\xd0\xec\x8b\
+{CI\x0a\xca<\x7f\x8b\x080\xa0\x08\xd0\x0d\xb8\xb1\
+\xff\x02`\x16`\x8a\xba\x9e@\xbc(\xfa\x02\xbd\xd83\
+\xedD+\xd0\xf3<\xf6)\xed\x92h\x1aTFOi\
+\xa2\xdf\xb3\x1f\xd8\xd1\x96\x98\xaa\x04\x82R\x18\x19`\x00\
+*-\x8d\x88(\x96\x88\xf0\x15Kkh\xf5\x13\xf9\xd5\
+\x123I$\x9c\xd6\x95\x0b\x13.\xda\x06u\xde\x01m\
+\x00\x06v\x98\xf8!\x8a\xbf@1\xdd>J{\x04\xe0\
+\x88\xe9\x10\xf1\xc7\xdaw(\xd7\xfcA\xcc\x00@\x07&\
+\x0b-\x08L\xaf\x9be?\x8d[\xec\xaf\xa7n\x09\xfc\
+\x0d@~\x9e\xafJ\xfe\xc2\x84\xa8@\xafkt5\xc6\
+p\xdd\xa3^\x8f\x1d\xea%&2\xbc\xf6\xa1}\xc3\xaf\
+\x13\xf8Y\x1fZ;D\x22o5\xc6Tj\x14\xa0\xa3\
+\x12K\xde\xcf\xba\x9a\xef.\xeej_D\xf4\xb0\xfc|\
+\xfb\xce\xebt\x0a:\xe08\xfeQuG\xb2\xde\x02Z\
+q\xd3\xc5\xf5\x95\xbf8\x11\xbf^\x1a\xe1\xfd\xfd\xbe\xd7\
+\xf7z\xee\x87\xde.\xb0\x03\x00^\xbf\x05\xccU\xd2\xd7\
+\xb4\x9f\xca\xae\xf2s\xd9\xf5^\x22\xe1\xdf{\x17\x02~\
+(\xc6\x1b?\xaa\xcf\xaf\xe7n%\xe1\xe5\xaf\xfa=\xeb\
+\xe3s\x00\xd4\x01\x02\xbd$\xb7u\x07*\xa0\xcd\xbe\xf5\
+\xf9\xbaVB/\xe1\x16\xb7\xb5\xda\xffM\x03`\xb8\x83\
+\xd7I\xc0|\xed\x89\xf2/\x10\xbe\xc5B\xaa\xde\x0cI\
+\x0f\xdc\xcf\x08\xca\xecb\x12\xe8\x0f\xf3\xac\x9d\xde-s\
+a\xff\xa7I4h\xc0\x0a\xf7\x8a\xba\xf0=&\x15\x5c\
+\x1b\xbd\x07\xee6\xc2\xd8N\xef\xce\x04\x5cv\xab1\xa9\
+@\xdd\x02\xdaX&\xca\x81\x04th/x\xad\xa5\xda\
+~\x0bDlL\xefoA\x1be\xa4j\x91\x18\x06j\
+\xa7\xd4\x929D\x1c\x92\xaen\xees\x9a\xb7\xcbT\xc9\
+\xc2\x85\xdb\xe7uD\xcb<\xf4v\x1d\x1cY\x01\x9f\xcf\
+\x03\x08\xe9\xed8l\x94M\xecq=\xa8gf\xde>\
+\x99L\xe0\xcbcP\xaf\x11j\xe7\x8d\x13p\x9b\x97[\
+%\xf0\x16X\xdf4\x14\x5c\x0e\x7f\x10\xde\xdd\xb7\x84*\
+\xf7u\xe9\x87L$\xe8\xb9\xcb(\x11\xad\xbaP\x04\x18\
+\x80\x0b\xf3\x06(\x91\xa9\x04(\xa0t;\xe0\xdd\xf0u\
+\x11\x12\x86\xca\xc1\x85\xb4\xa1^& ?:\x09\xabX\
+\x99\xf3\xc0\xf1\xd0\xb6I__\x8e\xa9\xcf\xa3\xaf\xad\xf3\
+ \xd3\xc5P\xdd>\x019\xe6\x81ur\x11p\x9c8\
+D\x022\x19R}Z[-\xae\xb6ge@\xf4G\
+\xff\x92X\x0c\xe7\x00\x00 \x00IDAT\xd91\xa6\
+\xbe\xbcj\xa1\xccoj\xe0\x8bjm?\xf9\xef2\x93\
+\xa8\xe5j\xb5d2\xe3h\xd6\x05\xedy\x19N\xc8)\
+\x11&\xc0\x01&\x82\xd2\x8b\x9b\x8f1Q\xb7d\x5c\x05\
+\xae\xf6\x9ds\xca\x80\x03j\x04v\x80%\x8e\x1eq\xad\
+\xd6\xb6\xaf\xec\x04\x0a,Q\xab\xb4\x13*\x0a\x9fL\x85\
+\xfd#\x83*S\x92u*\x8aa\xd6\xa1T\x95\x01\x03\
+\xc4\xa8\x9cG\x81\x00\xd1L\x19,\x19\x14\xa2^\xdaN\
+QQ&b%\xb3f^\xa9=c@$S^\xe7\
+\xc7\xe77oD\xe9\x94d\x10Ac\x9f\xf4\x83\xff\xa5\
+Ue\xbd2*Qu/G\x185[f)\xb5\xaa\
+%\xf2\xe8|\xb0\x83(\xf5\x80\x0av\x14\xb59\xe2\x8d\
+\x95\x01\xbd\xcd\x85\x81\xb4\xeaZ@m\xdd=\xc1\xee\x00\
+\xa0\x02\xd4\xed~|\x8c\xe9\xfc\x0al\xcd\x83L\xa0\xae\
+\x05\x1cv\xeb\xc3a\x97\xb9&n\xc6\xbe{?\x0e\xa0\
+\xcf\x97L\xed\xfe\xb1c\x1c\x9f\xe3\xf2cL\xd4q\x0e\
+\x05\xe0\xd6\xdf\xb1\xcf\xee\x07*\xdc\xf6\xab\xd2\x0b\x19?\
+\xfb\xfd)g<y\x04\x0e\x87{\x1f\xees\xb8\xf7\xf6\
+9\xaaK\x8a\x80W\xc6?\xa5Y\x87\xeb\x8c1\xcd_\
+T\xe8+\xf3\x8a\xd9D,\x92\xa3\x0d\xd0\x08\x00\xa1t\
+\xaaj!Q\xd3{\x06^\xa9\x05\x11E\x1a\x06\xda\xbd\
+isD$\x0f\xd0\x16\x87\xb5D\xebdl\x01<\xa9\
+\xb1\xadLb\xec\xe9\xe8\x1d\xb4\x94\xcc\xfcmT\xd5\x95\
+\x82a\x02\xa8\xc9d\x87\x02\x00\x1eN\xad\xe2}UZ\
+\x80\x09\xe5\xf9\xd8\xef\xfc\x5c\x1aG\xbaq\x04\xc8\xe4H\
+\x1e\xee?\xc6\xe4G9g\xec\x11\xbb\x80q\x14\x06B\
+\x05T\xee}@\xcb-\xc6\x98^\xcf=%\x00\xa7\xd1\
+\xf4K+ }\x9c\xe5U,Q\xa6\xfe\x91cL5\
+\xb2\x02{\xb5\xf2\xf7J\x80}\xb9\xf5\x9c\xee\xee\x17\xf1\
+]\xf7\xa9\xe7\x89\x9d(\x8d\x18\xef\xcf\x0fi\x1a4\xd5\
+\x0d\x80\xbd\x06\xc4&\xe3K\x95~i\x0a}\xc9\x05X\
+\x7f\xd2\x00\xd61)J\x14\x11E\x1b\xb3\x00\x80\xa1\xe4\
+G\xe9\x81n\x1b\xeeM@6m\x08%I\xceQ\x00\
+\xe6z\x0e\xfeJ\xec\x05\x8a<\xb5\xee\xea\xde\x91\xf3R\
+~\x84\xf3\x8a)\x80! \xb0\xe3\x98\xc7o\xa8s\x22\
+\xc3\xad\x9b\x8b\xdam\x8c\xa5\x88\x92\x96H!\x7f\x89_\
+\x13\xc6T\x05\xf6\xfc!Z\x14\x98a\x9e\x1fP\xe1y\
+d\xd2\xf9\xcf\xee]\xf6\x90\xf8_\xbap\x00b\x8a\xd9\
+a\xdd%F\x94\xd8\x08\x94i\x089\xa7T\xf7\x01\x08\
+\x18\x07J\x14\xf8\x01\x18~^\x07\x10 \x81\xe4~\x06\
+X\xbb\xef\xcc\x9b@\xaf\x89qW;P\xef+\xb0g\
+\x9fi\x10\xe8r\xc0\x8fc7\xf87\x80\x03\x00\x9d\x8c\
+\xbcuQb\xa8\xd4UBC;\xe5\x00o\xe5\x97+\
+\xa9\xc2p\xc5\xb8\x11\x98z\xdf.\xba\xcb\x0f\xf6y\xf9\
+\xc1\xce+\xbf\xce\xfd\xe2\xbe\xe3\xf79\xdf\xf6\xaf\xfd\xd5\
+\x03]q\xa0\x80V\xe0\xeby\xba\xd86\xbb\xe0u;\
+s\xd9\xfek%\x00\xe5\x07\xb9\x17\xdd\x97Mc\xae\x9e\
+G\xfc\xd6\xbb,\xf4.\x07\x80[\xfe\xe6\xf9cL\xcf\
+\xe1\xbf{\x1f\xeb(a\xe1s\xf5\x92Z\xf3!1\x81\
+\xa1 q\xda\x03\xf6&\xaa^~ \xe6\xa6\xf7\xef\xed\
+\x1e\xbb&\xc3&\x92\xf9\xff\xfd\x95x\xf2T\x1d\xe8\xff\
+\xbf6\x5c\x90\x87\xb1,\x9f\x9d2\xf5\xfen\x98\xdfA\
+\xf1\xbf\xd1\x18S\x00\xcc\xe0\xddv\xc9\x85n\x19E\x7f\
+'`u\xf1\x8d\xed\xfc\xa6\x04\x10s_p\x0b'\x90\
+7\x11D\x02\xc7t~\xf4\x222\xdb]\xe5qL\xef\
+E\x89\xa2\x09\xb0QzPKP\x8b\xcd\x87\x0d\xc5\x00\
+q<9\xb2=\xe0\x97y\xc6\xa8 \x22\xb8\xa9\x07\xaf\
+\x9f\xe3\xe2\xdact\x11\x0f\x07\x8c\x1a\xf7\xbf\xaf*\xff\
+\x02\x862\xbc~\xdf\xeb\xd3\x02\x085\xb6\x02-\x06\xce\
+\x865\xcf\x0e\xb0\x8c\xa7\xf5\xec\x07\xf9\xd2\xb9 >\xbc\
+\x1a\xba\xc39iK\x91L6*]m\xe0\x04\x02j\
+\xda+\x93\xee};\x82\xe5\xbb\xcf\xed\xbf\x03dh.\
+\xb8\xd0\xed\x8f\xb9T\xe4&S\xdf\xdd\xc7\x05\x19\x97\xa9\
+x\xd22\xc6\x05\xb1\x06\x80\xdap\xdc~\x8cI\xdcC\
+\xc0\x0b\x00J\xff\xebR\xdb5\xcf\xbd\x7f\xa7\xcc\xa1\xf9\
+p\x91\xffF23\x1cb\xd40\xefC\xb4Hf\x99\
+\xa3\xae{\x82\xb6\x96\x02\xd3\x5cH\xd5\xf6\xc8yE\xe9\
+\xf4z2)\x007\x8eW\xa8\xd1u\xf1;\x0f\x02#\
+\x17\x15\xe4\x19b\x8e\xe2\xcd1\xee5\xf4\xc4-}\xa1\
+\x0a\x03:8\xacjN\xa9\x5c\xd3\x04P\xea\x10\x06F\
+\x9dg\x80\xa4\x8bI\x06\xccE\x99\x00\xb8\x1c\xca\xd4\xfc\
+\x95\xc3\xcd\x1e\xd8w\x0c\xa7\x0bQ h\x9f\xa0\xfe\xc5\
+\xe1\xac\x1aZj\xefj\xefe`P7\x9f\xbb\xf6K\
+\xafL\x9c\xd7w\xc1s\xb08jD\xe8d\xba]\xa0\
+\x17\xc7@JFE@\xe6\xc2(\xc0G\x86\x98CC\
+\xcc\x89\x83\xea<\xaa55?\xa9\xa5/\x07\x93\xba:\
+1=\x22q\x1c\x99\xec\xdf\xea~ `\xb7^\x1c5\
+\x17\xb4}\xc5\x81\xd1_\xdd\xfeE\x81N\xbfw\xf3w\
+\xf2\xf01\xb6\xf6N'w\x1dcR\x0f\xe6H\x03\x84\
+\x88Ni?\xe8\x9cr\xb49\x86\xfd^I\xa6\xb4\xda\
+\xa7\xa9Y\xe7\xa0\xca\xb0\xa91\xe6\xb0\xa3\x06\xab\x89\x8c\
+\xbd\xad\x1a\xcf\xd4d\xd6\xbcrT\x95fpd\xdd\xcb\
+\x02\x7fZ\x11\xc3}\xfb\xf0\xb4\xdf<7\xe6\xc7\xe0\xc7\
+}vy\xae\xbfY\x98\x1d\x09\xec\xab]\xde\x1f\x8d\xb1\
+\x89`\xd6:Z\x0fv(\xd4\xdf\xaa\x89Fq\x96I\
+\xbf\xfdZ3\xed>\xdb\x9d3\xc6\xd6\xf7\xbd\x80~\x81\
+>\x06\x12\x86\x15\xa0C\xe9O\x80\x95\xea\xee\x22\xe0W\
+\x02\xa3\xd4\xc1\xbeJ\x80\x5c\x00\xac\xfe\xdd_\x1b\xaaz\
+\xc4\x0a\xf7\xef\x1a\xe3\xf8\xf7_;\xc6\xf6<\x87\x87\x07\
+8\xe1\xb0\xb3\xa3\xeeU\xa5\x0a\xda\x01\xfe\xe6\x18S-\
+45\xef\xd4\xa8W\xbbH\xc0/\x86@\xae\xf9\xc3U\
+\xc6\x98\xfa\xa7\x03\xb6\x9c\x1f\x19Z\x80\x96\x8c\xb9\xd2\x18\
+\xa5)2\xde\xee\x17\x19Z\xf6\xa3Q\x9e\xcbn\x10o\
+\xfc\x8eP\x91\xddS\x00\x10\x0e0Uz\x19}\x0cP\
+\xa2^\xa9\xf9&\xf6\xa9\xcb\xc3\xe1\xeecL\xc0\x16\xcd\
+\x06\xdd\x18\xf4\xabV\x93\x1c\xcd\x92j\x9b\xc7>\x02\xa2\
+Q\xa3\xed;\x01j~\xde\xbfo\x8c\xc9\x0fh\xa2f\
+\x80X]<\x8a1\xc3\xfe(m\xe2\xcf\xb0\xcb\xa8\xe8\
+2\xd2\x98\x82\x18\x06\xec\x19\xe6\x9c\x12\x05v\x99?\xc3\
+^\xba\xaf\x1f7\xc6d_=\x07\x00\x8cV\x88@\xc1\
+\xb9\xf7\xfeJ\xa2\x94\x18\x01Ls\x1e\xcb\x9eX'\x9a\
+\x0d\xee\xc7\xf8su\x0e\xcc+\xfb+\xf1g\xdfj\x8f\
+\x0b `\x8f\xdc[I\x90\xb0\xbb%\xfe\xaa\xf4\x81\xa6\
+\xc3\xe7\x8fq\xfc\xf7\x9fZ\xc6\xf6|\x18Q\xfc\x13%\
+O\xda\xfb9\xdf\xec\x9a\xef\x02o\xf7\x09f\xa1\xc4\x83\
+@\xd6\xbdj~\xa3IV\x00_\xc4n+\xb0\xff\xd7\
+\x12\xdf\x5cK{\x9c\x07T\xf9^\xb3\x0f(r\xaf\x02\
+F18\xf8u\xd6\x0f0\xa1kA\xee\xc9\x02\x1c\xf2\
+~\x98\x8a\xc5\x14\xc2\x00\x04\x98\xb5R\xb5\xde\xc6\xf0\xb4\
+\x0c\xb38\xc0~\x13\xbf\xf8\xef\xe2\x16\xfe\xbc\xe7v?\
+\xfa\xea\xaa\xff\xce\x9b\xf3\x03X\x008Xg\x0c\x1b\xcf\
+\xd5EM\xfd,\x90\x15\xf8{}\xdf;\xc0\xd3\x03|\
+\xf1\x8a8\xc3\xe7\xf5\xbe\xfc<q\x04 \xb0\x8b\x02\x9a\
+W\x01\xb6\xf9\xe3\xcfz}\xeb\x0d\x88\xf1<M\x1c\xb0\
+\x80\x18\xeb\xe3\xe7\xde\xbd\xce<`$\x8b\x13\x94~\xd9\
+\xcf]\x93\xad\x032\xde\xf7\x82\xd6\xad\x0d@\x0d\xe0H\
+|{\xaa2\xea\xe3X\xcc\xe2\x0d\x10\xfc3\x97\x9c\xf0\
+\xeap\xbekb\x04\x8c\xeb\xf9Jy\xa3\xfd\xd4\x1eP\
+\xc0\xa8\xad\x1f\x86\x81\xc04\x99\xfb\xdd\xf25\x05\xc4\x90\
+\x11\x13,\x90\xb6\xf1\x18^\x13\x04\xc1\x92!\x1d\xcb;\
+Olosf\xc3\xcb\xd0\x9c\xaaL\xf7\x1aP2\x1c\
+\x0e\x02\x80\xc2\x82q\xb4\xba\x18\x83Zw\xdd\x05d\xba\
+\x00\x06\x0cp\xa7\xbe\xf8\xb2@\xc4\xce\x82\x18\xeen\x14\
+\xea=\xa4\xd8s\xf9\xbc.\x12\xf3\xda\xc51\x1c`\x9f\
+\xb7Q\x97\x0f\x99\xef\xdd\xa9\x5c\xa0]k\xc0\x85\xc0Q\
+\x03\xdc\x10\xfe0\xbf\x905\x81n2m\xdaHU\xdb\
+7\x8e\x9a\xef^\x17\x85\xdd\xe7\xec\xc0\x88\xe7\x17\xf0\xf8\
+\xef\xe6\xa3\x07t=C\xacf\x15UOF3\xb5o\
+\xd5\xa7X\x9b\x9e'\x85\x0a+\x93\xd1\xdb\xc6\xc8\xc0C\
+\xd4\x1dH\x0e\x15\x8a\xad\xf6U\x1ck\x17\x0dD\x9f\xc1\
+J\xc0\xbf\xfb\xf31&\xa4<\xfb\xbe\x80\x888X(\
+\xf1J\x0dJlI\xc0\xe3\xbb\xc0\x1beX\xad\xa4y\
+d }>\x99d\xf3\xa7\xb4\x01\x22\xa9\x1d\x9a\xf5`\
+\x90\x9dW\x17\xb2\x0b\x89\xb8\x8c\xbe\xf0\xa8Z\xce\x1b\xe4\
+=bv%\x1e\x04a\xa7\xe6\x1c\x0au\x05\xd2\x09\xd8\
+\xd4\xd6U\x86\xd2~r\xee\x18\x5c\xb5\xf0\xc4y\x9cc\
+\xcf\xe1\xf9\x01E\xfaGs\xa09J\xe6\x0bS@\xe0\
+'P\xa5\xfa\xcf\xb1p\xa1\x08L\x94\x8e\xb0C\x1d\xb1\
+N`R\xa2R.\x06\x0e\xb5\xcf\x85\xea\xad\xf6\x17U\
+\xfcacl*\xf5E}\x17\x10;gj\x0c\xd9\x07\
+\x8e\x9c\xc0[)\x8fvs\x00\x89\x00G\xa5\xda\xadM\
+\xdb\xd5\xc7\x982\xec\xa8\x9b\xb4\x15\xb4\x1d\x8c\xc8\xe6\xee\
+\x11\xeb\xb9(fJ\x1cR\xe7\xad\xba\xc3p\xc0\x88S\
+\xc9`\xab\xf5\x04|`<(\xd5@\x19\xb6\xdf\xa9b\
++9a\xe7\x05F9\xc7EE\x96\xd9\xd5\x1eQ\xe0\
+\x95\x00\xd59<\xdct\x8c\xad+\xc4\xe1\x13c\x9c\xde\
+\x06\xabT\x90\x9d\x07\x00\x1f`I \x89Q\xe4\x9e\x88\
+#}\xe6\x8d\xc7\x98\x02E\xd4G\x14q\xbf\x7f\xbd\xd6\
+-\xa6\xd9Y\xcc\xb4\xa2\xccc\x94\xc4\xbe\xd4\xfe\xb2?\
+hnD5\xbf\x80\xa4\x04>\xc7\xe0s\x0d\x1c\xdd?\
+\x80@Tyj\xe5\x00\xf5\xd4$W\xcd.;\x1eQ\
+\xb2R\x9d\xe7\x80\xb9\xb71\x8e\xbc?\xc6IT\xfcK\
+$N\x00\xcc.\x01\x16\xe2\xf0\xd8\xdf\xbbSc\x1c\xbf\
+\x9f\xac\xfe\x07fP\x95\x92\x01\x1e\x04\x04\xec\x83n\x0a\
+Jo\xf4\xa5'>\x18\x11@\x00K\x05\xce\xe9\x9eP\
+\xa5\x02\x1cP\xebr\xcd1\xa6\xae\x00\xee\x07\xfb\x94\x1f\
+\xa4$\x08\xe9\xb2\x89\x0dV\xfbH\x80\x16\xfb\xd1\xc5\xf2\
+\xde\x19\x87\x95\x9d\xe7/\xbc+\x00\xe7\x9ds\x1f&p\
+\xc3\x08R;-\x90\xaf\xf6v\xd4\xe7\xb3\xfe\xfb\xb7\x8d\
+1\x89\x00\xab!\x07\xec\xa6\xe6\xba\xf6oJ<\x0a\x90\
+\x04\x5cG\x1b\x00\xc5Y\x97\x97\xc3\xf7\x8d1\x89\x11\x0a\
+\xc0\x9dc\xe7\x9e\xdd\xe4\xbf\xb9\xb7\xd4z\x0b\xd4\x00k\
+\xceUJ\x80vo\x1ec\x9aw\x01 G\x9c\x1d\xf6\
+~\xda\x9a\xb2\xe7J\x01\xdc\xbf\x80,\xa5'\xce\x0dq\
+U*\xfc\xdah\xb2\xdb\x80r\xf3\xa24\xc9\xfd\xc4\xdf\
+M\xe9_\xad\x87@N\x80&\xe1%\xa1&C\x1d&\
+\x10\xff\xaf\x12I\x02$\xa5'\xfc\xbf\x00R\xcey\xd9\
+\xc5\x88\xbb\xba/\x89\xef\x15\xf0$\xd0\x95p\x02l\x01\
+\xac$\x10\x88\xd5\x01T\x89\x11\xda\xd7\xce\x05\x06\x14\x0d\
+\x12\x01y\xd3\xe4\xd2F\x9a\xc6B\x01\xb2J,\xf8\xdf\
+\x98\x8c\xfc\x18v\x8b?\xc3\x8f\xb3\x0f<\x07\xfb\x8d\x8a\
+\x0f\xc0\xf3\x1c~\xdf:Y\x87\x9c\xbb\x12#\x94\xc0\x8a\
+\x7f^\xf7\xa0\xd7\x07,\xd3v\xe0\xdfZ\xcf^\x93\xef\
+|[\xc7\x88\xd5\x9e&\xaa\xc7\x0f\xe9]\xe0\xf8\xb7\xec\
+\x07{\xdd\xe3\x17\xfb\x9d\x06\x81\xf7aW\xf8a\xfc\x0d\
+\xef\xe3u\xc4Q\x9dq\xdd\x99\x00\xde\xa7\x8bp\x9bW\
+\xf1#@\xb0\xb7\x0d\xf4|\x006\x81=?\xcd\xdfw\
+\xbf\xac'\x1c%\x82\xa2\xa9R\x80T\x8f;|\xce\xae\
+\xa5\xd6\x19\x09\xfe\xbby'F\x0e\xe8\xe6\x97c\x98\x8a\
+\x0f\xddW\xbe\xceo\xa2\xed\x9d\x09\xdf\x13\xdey\x8eS\
+%v'\x80\x17P\xf5\xda\x93\x11Fi\xb7v\xdd\xa9\
+\x16_\xed\xfd\xd8.W\x9c\x0c\x8f@r\x98\x9f\x8f\xe7\
+\xfb'&G?\xb5c\xbb\xeb\x8f1-\x88\x80\xd9s\
+\x8d\xe9\xbc\xd4\x14\xc02\xc0\xc4\x0a9.\xbd=\x83\x05\
+\xb0\x902\x97\xd4Y\xbb\x98\x1e1\x155\xa5\x16\xf2\x13\
+K\x87\xdf\xf5\xf3\x5co\x12\xeb\x08B[\xed\xc7\x5c$\
+]\xa5\xdf\xc47\xf1\x85z\xde\xde\xe7\xd2E\xf6\xcfk\
+\xbb\xa3\xdd\xe7%S/p\xf1\xbc\xe6K\xa6)\x1b\xbb\
+6\x86y\xbc\xe4\xc5\x94\x14|hE\xe6\x8f\xff\xb7\xce\
+\x17\xa6\x02\xb11\x01$\xea'j\xe8\xe5\xe3p\xb4\xcf\
+S\xaa\xf9A\xbaw\x7f<\xc6T\x03\xafD\x02C\x04\
+\xc2\xed\x22\xec\xdd\x15\xfa\x01\xee\xb5@>\x8f\xc0\xa6\x89\
+3\x96\xe8\xd1hOy\x83)\xc3\x12\xc7\xbb\x1c(m\
+q\xee\x1c\x86\xc0\x17\x8d1\x19\xd4\xde\x9e\xd2sR\x11\
+\xc7d\xb0?\x893Q\x97M&\xba\x10m\x19pH\
+\xb2\xf3e~]\xb4\x1fj\x19\xe2\x1e\xb8sp|n\
+\x99\xbbd\x8e\x8aq\xe0\xc0\xa3z\xab\xc1\xd3>\x8a\xe8\
+\x0d\xc0\x8f\xfa<\xf1/\xeb\xc1P\xba(9\xc6\x80\x0c\
+\xfb\xd8\xbca\x12\x00\x92\xd8\x05\xef\xc3\xa0\x09\x08\x5c\x10\
+\x1c\x03@\xa4u\xeb\xc0\xa4\xcc]o\x07\xe5\xc2Q\xa3\
+\xec\xf9\xcc/\xe0\xc8\x05h?\x09\xe4e\xf4e\x22\x9d\
+3\xe7\xc8y\xd3\x05\xc0E\xddjV\xeb\xe2\xe48\xc8\
+\x04\x08\x00\x92\xd1\xa8\xee\x02\xba\x09\xf8\xf9\xbb\xc7\x98\x9e\
+O\x86$\x19\xd6\xaa\x09\x0d\xe3A\x86r\xf7\x87c\x5c\
+\x84\x1a\xb5}F|\x8f#\xcfaQ\x83+\xd3\x22s\
+\xaef1\x0e\xbc\x8c\xc8\xc9\xe5\xc68\xbe\xce}\xc6\x98\
+\x02\x1e\x14\xd9\x88?U H\x0d\xfb\x0a\xb9\xf0#\x8a\
+\xa9t`\xe9\x11s\xdb\xed\xe2\xab\xda\xdb\x04\xd4\xfa<\
+\xef>6\xc6\xd4V\xd1\xfeuN0x\xfe}\x8c\xa9\
+m\xa2@\xc1\xba\xb3\xff\x01\x0e\xcaQ\xec\xed\xe8\xa8\x91\
+\x07\x98\xdb?z\x8c\x09\xd0\xb1o^\xbdR\xcb+ \
+T\x12\xc0qM\xa0F|\xb4\x00F\x08?\x8d\x8dd\
+*\x87T\xdb\x22\xd6v\xf31&\xe0\xc9\xfe\xb6\x8f9\
+P\x00\x80\x04\xb0D\x0b\xd5\xe6\x96\xfa;j;\x06\x03\
+@\xdd\xfa\xb13(\xd5\x18\x02>\x07\xea\xef\x95\x0fW\
+:\x8cL\xd6\x13W\x8d\x82j\xcf\xa8\x9f\xba\x92\x16\x19\
+P\xa5I\x9d\x82\xa9\x0f;M\x14\x01\x8c\xf5|Lj\
+\xb8\xcf\x8b\x88\xee\xff3\xc6\xb4\x9e\x02}\x19O\x0e\x90\
+\xc0\x0f\x03\x11\xa3/\xa5G\xe6\xb7DN\x1ft\xf8\xc6\
+\xc3\x83\xd2_\xfc\x8c\x09\x80\x06\xa8\xa0\xc8'3\x5c\xfb\
+\xe1!cl\x8c\x943\xef0\xc6\xc4\x90r_\xc4.\
+W \x04\xa0i\xea\xd3\x95\xa9\xb4\x0e4?^:\xc6\
+\xd6=F;\xbd\xc3-V\xb1=@\xdc\xe1\xd2\x87\xcb\
+\x1c.39\xb4\xec\xaaZ\x7f\x99\xf5t\xb3\xa8\xf6\xae\
+\x02\x10\xf6\x9d\xfdTC\x1f\x06I\xd9\x09\x806\xad\x8f\
+\x9b\x8c1iu$p\xdc=s\x8c) f\x1f\xac\
+\x9f\xcc:`@`\xee\xfc\x01\xb8\xe3\x07\x94\xf8g\xc4\
+C\xf7?8\xc6&\xe2W\x80\x92\xf6\x81\x80\x9a\xa8\xfc\
+W\xc6\x99\xa6\x0b\x7f\x8d_z\xe71\xa6\x0c\x9c\x12\x16\
+~W\xcfT*\xbd\xfa\xd11&\xa6\x82L\xad\x9a\xfb\
+\x9f\x18c\xaa\xfd\xe6\x9f\xba\xef\x01o\x80I\xfd\xe5\xa9\
+\xe4\xf3\x83r\xef\xef\xbef\x8c\x89\xa9\x90\xe7+-\x8b\
+\x9e\x19f\x1f:\xd3\xc9\xf9S\x0b\xaf\xbdl\xecF\x89\
+\xac*\x9d\xca\xf9\x04\x0cU\x09\x0aM\x0f\xdd7hW\
+D\x13\xa5J=\xe2\xd7\x1cO\xf3ZBK\x9bD\xdb\
+\xcb\xe7\x06\xe0\xd3\x86\xb5\x89\xf6V\xfb@\xfb\xda:\xf1\
+\xa7\x00\xf3\xee{\xc0\xa0s\x06H\xe5Ob\x82\xd8o\
+\x18\x05\x18\x91\xfc&\xf7x\xf73\xf8=\x80G\xf7\x7f\
+\x03\x12\x0aP\xec\xfe\xbe@\x90_\xc3\xbf\xe3G\xf1\xef\
+\xec+\x09\x15\xfb\x8d\xfd\xe7G\x8b;\xba\xaa?\x80\xc4\
+\xfbv \xa0\x97\xca\x12]M\xdb\xd5\x9ao\xaf\xcf>\
+\x9bG\xf6\xd6<y_\x09S\x00\x5cocg]\xba\
+\xd6[/\xd9\x958\xf1\xfc\xfe\xbd\x8b\xf4\x01\x98\xba\xea\
+>\x00\x0d0\xe3\x1e\xf2\xf9=_\xef2\xe2\xf5{\xe0\
+\xee\xf3vM\x01\xeb5\xc7\x8f\x9f\x98^\xaf3\x11|\
+\x9e\x16_\x14SGbK\xc2%\xa2\xa1u\x8e\xed\x93\
+.\x16i>[\xbb\xc6\xdd%\xc6\xd8\x183\xa7\x16\xb3\
+\xf2\xd1L\xd0<\xb1\x90e\x07h\x10no21\x02\
+\x88\xfe\x09\x10\xde\xb1t\xe4\xdc\xd4\x0aC\xb9.GK\
+M\xb0\x85P\x1b\xa1\x96\xbe\xf7=\xe40\x0dG\xf5\xda\
+\xd9\xe8\x97\xcb\xf3}j\x12\x09\xecb\x196\x96\x89E\
+]\x9e)\xbe\x97\x8f\x039\xd7\xe2\xe79+S\x08\x81\
+\x0a\xa5\xacD\xabP\x91\x05|\xbd\xe6\x1e3\xa1\xf7_\
+\xb7\xc0=\xf0\xb7ql\x98\xde\x07\xb2\xd7\xf4\xd88\xde\
+w\xab\x8d_\xd5]\xf5\x15\x06\xac\xf4\x0d,p\x92\xb1\
+&\x1aG\xcc\x8b\xe8D\xda\xa5U{1mg\xd4\xb2\
+{\x7fb\x89O\x1bc\xeb\xdf]\x19\xae\x93\x5c\x98\xe6\
+\xc5E\xda\xdb\xcc\x09\x10}\xb7O\xd4\xb2\xa3\x0eBT\
+u\x95\xa0\x19\xc0`\x09x\x82\xf0Vf\xcdz\x99w\
+\x06\xcf\x05`\xbf\x0b\x80\x88\xdc\xdcs\x8c\x89\x82\x97L\
+\xdf1\xecZUwQ\x1fo\x12\x0a\xef\x8f\xad\xfd\xc8\
+w\xbf\x97\xcf-cE\xc4\x8d\xc3\xf0Ccl\x81J\
+\xd5L\xff\xd6\x18\x13#\xe4\xafC\xc5;\x7f\xf7\xa9\xdd\
+\xa7&\xf5`\xed\xe68\x0c)E(\x0a\xbc>\xe7\x0c\
+=\x07\x18\xa5\x9a\xc3\xc1q\xb2\xbf\xd4\x08\xba\xc8\xed\x13\
+\xa2=\x1c@\x089G\xd3\xfcrD\xf4\x95\xbf\xd7\x18\
+S\xbfe\x17\xb4\x1a\x5c\x81\xb1}\xce\xa0\x01\xa0\x88U\
+AZ}y\x7f\xfbIm\xa9@\x80\xdd\x91\xd9\x00\x8c\
+\xb9\xb8:\x22\xeb\x02v\x8e\xd4\xea\xb3[2\xc3D\xc0\
+\x88\x84\xc5A\xab\xc0JW\x00\xed+='{\x04 \
+\xfa\xad1\xa6\xf3\xec\x22d\x7f\x89\xf3\xa9\xf5\xe7\xa89\
+\xbf(\x9d(\xdaj\x82Q+u\x9dP\xea\x01\xc8\xe2\
+ \xeb\xa6\xd0\xb4H\x8a\x01\xa1v\xf6rcL\xfd\xd6\
+us\xa0\xaa\xaf\xfda\x02\x90\xb2G(\xe0.\x5cb\
+\x7f\x10\xed\xde\x16\x08\xa5.\x19Y@G\x89&\x06\xe0\
+\xa2\xca_5\xf8\xecf\xf6{e\xee9J\xdax\x09\
+\xa0\xedg\xfb\x8a\xe3\xe7<\xa8AW\x1a\x93\xfbl\xff\
+\x8c1\xa6\x1a\xe9\x931\xb6\xff^\x9f#\x81\x7f\x05\x1c\
+\xc9\x80\x95\xe8\x1eU\x7f\xc0\x8bL\xbb\xd7\x09\xa3\xa0D\
+\xf9\x02\x90\x14\x90\x02P\xeb]Y\xd83\xeb\xab\xa69\
+\xf7\x15FV\xa9a+\x01\xd0^\xeb39w\x7ft\
+a\xd1\xd3\xaaEO\x86\xae\x02t\xf7-\x87\xeb\xe6\x11\
+eMW\x8e\xda\xf7\xd65\xda\x22D&Q\xeck\xff\
+\xd3\x10\xe1?\xa4\xc4\xe9\xb8\xfbV\xcd\x05\x0e\xe0\x19\xc9\
+\x5c\xa2^\x0al0\x0c\x9c\xffNU\xcd\xbd\xa5\xdbE\
+\x01+\xd1:\x00XW\x80\xae\xcd\x98\xfbB\x80\x1a@\
+\xe3p\xbd1\xa6R\xb3\x94\x8c\x14#E@B\xacP\
+\xc6\x1bP(\x83\x1e\xc0\xb9\xda\xa6*E\x88]V\x82\
+\x82\xf9\xb2\xbb\xe3\xca\xf0)\x00;\xfbe\xff\xc11\xa6\
+{\xffzSi\xe6\xf56\xfb\xbf\xff\x871\x8e\xe6\xec\
+\xfb\xc6\x98\xa8\xba)i\xab\xcc\xbd\x80\x0f\x85;\x22u\
+\xe5\x17\x11\xc9\x8a\x98\xea\x80\x1d\x16\xe0A\x86\x92\xda\xb8\
+uO-}\x05p?~\xc6\xe3\x87\xd8\xdb\xe1I\x87\
+\x9f^\x18)\x02a\xe7\x12p\xcb/\x89_\x06 )\
+qN\xe2yj\xad\x05\x94\xee\x19~\x88{7Z\x13\
+\xda\xb2b\xfe)e\x008\x10\x8b\xac\xeeL9?\x95\
+p\x10\xd8Xg\xf7\xad\xf3\x000\xe7\xafx\x1e\x7f'\
+`\xb4\xaf\xf9G\x18|\xec\x89Zc\xcc!\xb5\xe2\xd1\
+H\xc1\xb0\xac\xf3\x8e\x09\xa0\xbd\xa3\xd2\x9b\x88\x92V\xc0\
+\xe6>\x0d\xa3\xb1\xda\x13\x12W\xd6\x0d\xe4\xdecL\xf7\
+\x88\x80\x9c\xdfa}tM!\xa6\x0b\xe0\x0d0\xc4\x0e\
+\xd6=\xa4\x8d+\xc6\x0f\xa0V\xe0\x1f\x8d\x83:\x8fJ\
+^$R\xd8;\xf3$\xc1\xa7\xdb\x89@\x8b\x7f\x82\xd1\
+(0\xc4\xd8{\xe2\x18\x93\xa6\x04F\x81\xee\x14\xba'\
+H@```Nx\x1f\xccP\x00\x00\xe08\xc0p\
+\x89\x0b\xbao\x04\xac\xf6\x07\x8d\x11\xaf\xcbn\x89\x1f\x9c\
+\x07\xfb\x99\x1f\x03@f\x8f\xf9a=1\xda\x03\xd6N\
+\xdd\xf7\xef~\xee\xed\x00\xbd\xbfx\xcb~u\x8f\x9b\x07\
+\xf7\x12\x7f\xce\xe7\x14`\xf7L9;\xdd\xbb\x02X\xd7\
+\xaey\xe6y\xc45\xfc%\x09\x0f\x80\xc5\xd6\x9e|\x8d\
+\xff\xbaf\x9a\xcf\xcb\xff\xf3\xb3\xbf\x13\xe8\xfb}\xed\x00\
+\x95\x04;\xdf\xfc6\xbf'~i\xdd\xabNKh:\
+\xf7\x17\xb4\xb6\xea\xbe\xdf\xe6\xc2\x89\xd3*!\xb4?\xc4\
+\x97\xe2\xca\xc4c\x05\x10t\xa0\x92\x9f\xa1$#\xf7\xdb\
+\xa9%\x1f\xf8g\xa7Ss\xb5\xf7[\xa6\xf5\x03\x17\x11\
+p\x8fk\xe00=\xc0\x08\xd7>\x98\x7f??\x0b1\
+\xd4\x88\xbf\xe28\xee\x99\xcc\xc4\xe7N\x13e\xe3{\xd0\
+\xf1\xbf\x02\xf4+\x06\xc1\xbb~k\x1fq\xc6E\xa8T\
+z\x7f_\x16\xb4g\x8eM\xac\x05\x03(\x10\x03\x1ca\
+\xc2\xb5\x12\xc8_#T\x8c;N\xd4\xd1\xd4\xee\xd5\xfb\
+\xf56\x82\x02H\x19\x83.&\xd8\xdb\x5c\x08p[?\
+\xd1\xaa\x89\x8e*\xff\xe1\xdf#rw\xc3d\xce\xe7\xe7\
+\x9fkw,\xb4\x8d\xaa\x86\xa8\xb5\x0b,\xb1<\x08\xb5\
+\xf9\xe1(~\xcf\x18[\xdb\xb2\xdd\xdf\x8f\xb1\xb4-:\
+\x8e\xed\xfdJ\xac\x042+\xf0y|(\xff\xe6\xa1\x8b\
+}\x5c\xbe\xa9\x88\x9b\x07\x0e\xf7\x0bC\xf9\xfal\xd6\x9d\
+a\xa1\x0e\xeb`\xaa\xf5C\x85\xf39~u\x19[\xe0\
+-\xd0\xe1p\xbf,\xdf\xef\xbf29\xf4\x01/\x0a*\
+\x87\xfd\x17\xc7Xj:\xefq\xb8\xc7t\xa0Q\x1a\x1f\
+\x18\x07\x01\x95]@\xfe\xc0\x00Z/\xdf=c\xf7\x8c\
+I\xf4\x092\xcap\xc9\xb0\xbc#\x17\x0bG\xcd\xbcP\
+\xb3\x97AI\xfb\xc2\xa2\xbe\x85*Z\x8e\x89R\x1a\x80\
+\x8e\xcc^o\xe3\xc8\xa1\xd0\xdf\xde\x85\xab\x1f7F\x83\
+\xe7\x95A\xe3\xa8\xa3D\xa7F\xb0\xd6\xa7\xf5\xed\xad@\
+Z\x9b\xcf\xd7\xec^\xbd{\xf5$\x12\xf4\xb2\x88\x03&\
+\x83\xaaox\x89/\xa2\xc4c\xe4\xf8\x5cy\xae\xba\xc0\
+9\xac\xf6\x11\xc7@\xe0\xae&_\xa0\x03\x18\x00\xbc\xb9\
+ \xe2\x80\x16\x95\xddE~qm\x0a\xad7\xed\x82\x9f\
+\x1e\xe3\xf8\xef_?\xc6\x94!\xa6\x9d\xa14\x88\x03\xa3\
+-\xa0\x80\x98C\x85a \x93,\x13\x04\xf1\x8f\x18\xd5\
+\xc9\xad\xc6\x98\xe6\xf9\x81cL\x14J\x0efj +\
+\x93\xf8\xcdcL\x8e\x97\x0b\x0fp\x93\x92\x0b\x19F\xfb\
+f\xc0O\x0b\x00\x85\xe2O\xebA c\x9d\xbf\x7f\x8c\
+\xc9N\x10\xb3\x91\xb1\xf29zW\x14\xf6\x08\xc0!S\
+\xc7\xb1\x96\x89\xbc\xcf\x18S \x9c\xf9)\x91B\x0e\x16\
+\xf1I\x17_\xef\xc2\x00`J\xc0U\x81\x0e\xb1\xafd\
+&K\xe4*\xd4\xe0\xfd+\xc7\x98\xd4\xd4\x89\x9f)i\
+\xa0\xf5\x829\x85\xe9\x91\xda\xeaZ\x97\xa6R\xac\x96v\
+w\xd51\xa6\xc0\x92ck?\xd9\x97\xbd\x7fr/!\
+1\xaf\x02\xbcd\xf6\xaaDE\xe0\xc2\xde8WJ\x8b\
+\xd8\x8bP\xf0G\xbe\x7fd\xfcK\xc5\x1f J\x9c\xee\
+\xe9k`P\xa2x\xee3v\x97\xe3\xcd\xa1G\x99V\
+\xea\x83R\xac\x06X\xcd\xe2\xd9i\xab\xe7>\xbff\xce\
+5\x8a\xb8@X\x80%\xe0F)\xf69d\xa0e\xd8\
+8\xec4\x5c\xb4W\xd5NM\xa9\x0b\x0am\x00[\x0c\
+\xc0R\x95\xa7!\x93\xcc\xd1\xfe\xd7\xc7\xd8T\xe4ii\
+T@p\xd91&\xf1F\xf7\xa2Lw\xee\xf1\xea\xe2\
+\xc0^i\x13K\xb4\x0f\x95\xfd\xfd\xe9>\x11\xe0\xe3\xf0\
+\xe4\x94\xcc\xbc\xff8f\x0d \xe7%\xcf\xb1\xbf\xdb\x18\
+\x13p' \xec\x8ey\xec\xfb\xfe\xf5cLvZ\x0d\
+\xbf\x1a\xf0\xb4\xfd\xab\xf6j\xd4\xc6G\xad\xf3\xd7M\x94\
+p\xe7X\xb7\x0d\x1aAJ\x86\x00\x9e\xc4\xde\x94\xf0]\
+a\x8c\xa9\xa6_\xf7\x97\x009\x87\xab\x8d1\x01\x102\
+\xd2j\xff\xd5\xa0K\x14\xfc\xf0\x18SIQ\x0f\xb4z\
+\x1fz\x00\x0d\x8a\xae{\x03\xf0\xfe\xec1&\x0d\x00\xfb\
+\x8e\x1f\x22S\xcfO\xf3>\xec\x1d\xbf\x90\xc6\x86{\xd9\
+\xbe\x90\xc1\xc5Dq\xff\xe6g\x8c5]50\x1f\x94\
+\xbcT\x0d\xff\xa3\x97\xb1Q\x99\xd3\x9e\xba\x00/5\xe7\
+?2\xc6\x04\x08\xd0v\xf1\xc5\xdf\xed\x99L\xed\xfe\xec\
+o\xf3.\xb3\xca\xbf\xe5\xa7\xaa\xb1g\xff\x01m\xe6\x9b\
+\xdf\xe7}\x04\x9e\xee-\xcc\x0d\x81\xbb\xdf\x07(\xe6^\
+.\xa0Z;E\xcf\x8bA\xd0\xfb\xd6K\x08t-0\
+\xbf\xe7\xfe\xf6s\xd3J\xaa\xdf\xf7\xfa^\xd7w\xf7\x00\
+\xbb\xf8\xfa1&\xc6\x01\xbb.\xde\xea\xed\xe1\x00Q\xf6\
+\x99\xe7\xe5G\x9ag~+?\xb0'\xd8\x04\xfa\x18\xa1\
+(\xfc\xbe\xdc\xa7]\x83\xabS\xf7{\xc9\xb1\x9f\xfd\x1d\
+ \xc0\xe7\xeaL\xed\x0e\x04\xf4n\x03\x9e\xb737\x9d\
+\xe70\xcak_\x98\x0f\xcf\xe1\xef\xfd]\x07D:\x13\
+\xc2\xba\xa3\xfawF\xa7\xcfe>{\xdb\xc5N\xc5\xbf\
+8m:\x99\xfc^\xd2.\x0e\xb7?tiJ\xa9g\
+\x01A\x00\x02\xcc\xc9\x8f\x8d\xb1u\x93:|f\x8c\xc9\
+\xef\x97\x08\xc9|\x9f\xaa\x9a=\x07|\xe4Mn\xbe\x89\
+#T\x86i\x5c\x1fo\x8ec}\xf5\xd6\x0f\xfe\xeaM\
+\x84`?m\xcc1\xdd\x17\xb1\xd1j\xe2-\xb8L\x94\
+\x8d- \xf7zc;\x9cl\x1a\x02\x15\xd8\xa2\x12\xeb\
+\x06\xe0\x83\x7f\xfa8\xd4D|\xfa\x22\xda\xe4\x05\x00X\
+T\xaao\x94\x00j\xca\xa4\x96A\x82LwJ\x87\x05\
+f\xd0-h\xef\xcf\xd8\x03\x7f\x8e\x8c\x0d\xd3k8z\
+\xf7\x82\x0b\x22\xde\xf7\x96P\x8e?\x7fU9>\xad\x0d\
+\x84\xd7u\x00=\xaf\xef\x1c\x00\x1b\x90h\x97\x1a\xfd\x18\
+N\x99\xaa\x0a\x08e\xa8\xd3\x8e\xae.v\x22h\x02\x1f\
+\xfd)9\xd66vo[x\xa9|\xffx\xa3N\x9d\
+\x97\x03\xfb\x81v\x10e\x90\x5c\x14\xbdf\xfb\xa6cL\
+\x19\xe0\xff8\xbc\xef\xf0\xbe\xa9T\x03\xb5V\x9f]@\
+\xc7\xef\x8d1Q\xc2\x1cp\x00\x021\x18\x86\xc3\x17\xe6\
+C7\x14\xa8\xa5\x09D*\xc3\xaf\xbf:j\x19Q)\
+\xf3\x1eG\xaa\xceC\x1cnj\xef\xd3E\xb3\x1a6\xc8\
+\xa1\xf3\xd6\xbbC0\xcc\xce\x93@\x8f\x83\xd7\xc5N\xd4\
+\x1ar,\x04\x00\xdf\xb4\x8c\x12\xb7\xaa@J\xa6\x80\xea\
+\xb1\xe7\xc1\xa0\x09 sx\xd4\xe1\xd1\x87G/\xc0\xca\
+ZC\xfa\x05\xe97l~\xdf\x93\xf9CqR\xcb\x1e\
+\xaadQ\xbc\x05n\xd4\x98\x19x\x81\x11GR\xe9\x03\
+M\x01\x17\xa0\xf3\xeb9\x9d\x03L\x06\x17\x13\xe4\x9c\xa3\
+\x05\xb1w\xae\x01\x10\xa8\xd1j:\xd5LR\xd5\xbe\xef\
+\x18\xd3\xba\xa0lb\xd4\x08le4\x5c(\xf6\x9fu\
+R\xfbI\x1c+\x01\xcc\xeeucL5\x8cD\xc9d\
+je\x1c\xb2\xff\xbb(_1d\x5c\xbc\x1c\x12\xef\xcb\
+\x81U\x12t\xef1&f\x8c\x8c\x1b\xc0Lf2\xa2\
+t%2\x0a\x08\x90\x11\x8fCY\x8c\x10vIm\xb2\
+}\x95\xc0\xb4\xb4\x0cbW\xaa\x16\x98\x18\x1b\xaa2\x87\
+\x1f\xb58\x81Fe\xc0\x02\x04)U\xa8\x0c\xb8\xfe\xcc\
+(\xaa\xda\x13j\xbb\x99\x0co\xb5\xf7#\x02\x18\xeap\
+iu\xa8Qgg\xa8\x83G\xb4\x8e}\xac.\x1a\xec\
+5\x80\xce\xfd\x97\x80t\xf7wcL\x192\xaf\xcfA\
+\x093\xa9\xda\xf7\x01\xc8\x12hV\x8d4\xc7]\xdbC\
+\x94\xfco\x1fc\x0a\x08d\x5c9\xae2\xdbJ\x97\x04\
+\xfa\xd4\xba[\xb7\x0e]XN\xae5\xc6v\xbe+\x90\
+w\x0e<\xcf\x17\x8fq\x11\x22\xa3\xb9wQ\xb7+\xc0\
+xQj\xb0_\x9aL%\x0ar\x98\x1d\xe5h;\xc7\
+\x98E\x80)L$]5\x128\xb2\xdf\xe5\xdf\xc8d\
+>h\x8c\xa9\xad\x19*\xf1G#2\xacM\x9f\xd2\x15\
+v\xd7}@\xcd\x1c\x00\xe5\xdf\x93\xf9?|\xee\x18\xdb\
+9\xdd\xfd\xed\x18\x13\xf5\xdf}\xa0\xa4\xf0\xd5\xb1\xd3\xda\
+\x9e\x12q\x0d\x00\xb7\xfb\x9c\xa3\xff\xf29\xcb<\xbcn\
+)\xe9\xbb\xd9\x18\x1b\xd5\xff\xe4*cL\xfe\xc8\xe3\x97\
+\xb1\x95f\x84\x12Zm\xef\x12\x10\xee\xfel\x8c)#\
+\xce\xc1\x06X\xd2\xb8H\xa9\x0f\x86\x9b\xc0\xb3\xd6A\x22\
+\x09\x90\xc1\xde\xdb_)-)\xaa\xbbL}\xba\xb0(\
+u*\xbb\x13F\x01\xa6c\x01=\x80y\x14\xfe0(\
+t\x8b(\xa6\x9b\xfbZ\xcd:;\x02\x98%\x82'q\
+\x90\x92\xb9\x02t\xfc>\x8d\x12T\xf1\xfc{1E\xd9\
+\xb5o\x1ac*\xad\xb3\xdf\xf8\x85=S,0\xf6|\
+\x18\x8a\xfcE\xdf\x05\xea\xa18WW\x1d\x01b\x02\xb7\
+b\x0e\xa9\xa9w^\xf8\x1b\xec:@\x02`\xe7|\x02\
+\x9ah\x00\xf1\xcf\x05\xf6\xbd\x84H`\x22\x90\xd1=\x05\
+\xe3\x8d\xff\xc1\xdf\xcd~\xac\x0cg\xe2\x91\xca\xc0\xd3\xd0\
+\xd1.\xb1\xf7i\xf7\xdc\xfc\x0a\x9a?\x00\x17L1~\
+\x11\xff\x1a\xb0'\x91\xc5\x1f\xe2\xf7\xb1\x87\x02@\xeb\xce\
+^\x09\x8c\xbd\xbfZ}L.\x09\x1e\xf7\xf8\xe6\xe7\xae\
+\x22\x93\x12t\x1dx\xe8\x14u\xfe\x87{\x02`$\x91\
+\x0a@\xd66Y\xd7\x1d\x01\x7f\x07\x00\x9c[\x8c\xda\x8f\
+U\xfb\xef\xf5\xbf\xf3\x7f\xbaV\x92\xb8\x82=\xeb\x81z\
+cv\xd7\xf7\xce\x0c\xf0~\xfe\xbe\x03\x00\xfd\xbb}h\
+\xbdh\xea\xf8\xfc\x9eO\xc0\xdf3\xf9\x18 \xbd\x0d\x9f\
+\x9f\x9d'\x0c\x02\xaf\xefs\xfa{\xaf\xd7\xbb\x1eX?\
+\x89I\xbf\xe7\xf9z<\xe8{/\xd1\xe6\xaf;7\xfe\
+\xdez\xf3\xefh\x22\xf1\xa3\x88\xb8\xfa;\x09i\x1a?\
+\xe2a\xe7\xc1s\xa6$\xe7T\xd5\xa8\x84\x8a_\xea\xc2\
+\x10;H'\xf5\x7fZ\x00\x1c\xec\xe1\x0e|t\x0a\x8c\
+| \x0b\xa32a,\xcb\xfb\xa7\x83\x7f\x89\xb5\xbd\xcb\
+\xf2\xb1\xaf8\xd5\xd8k\xd3\xd7E\x18>\x13u\xe3y\
+\xe3\xcc\x22~\x0e\x16q\xac\x81w\xfc\xc3\xc4\x1c\xf8\xc0\
+\x12Zn\x0b\xcf\x90\xb9\xc0\xc7\xf5t\x9d\x5c\x5c\xa36\
+\xeeZ\xc7q\xd6D}\xb2q=W\x17\xab\xf0:\x00\
+\x82\xa6\xee_\xc8\x0c\x8ad\x17\xd1\xf0\xfa^\xcf\xeb\xb7\
+\xb6\x17\xd5\xe7\x99j\xb7\xbf\xb7\xb0\x0e\xa4\xc0\xdbEL\
+5\x9d\x81\x96q\x0cet\xf7\x1dcLT\xbf\xab\x15\
+\xb5z5@\x11[\xab\x00\x8b\x03u\x9f\x04\x08\xf6\xc3\
+\x8dR2\xc2\xe0\xa6op\x19\x14\x07\xe0-1\x88o\
+\x8a\xc1\xb3/P\xa4\x89\xc1\xc9\xec\xb8\xc0\x19\x125\x95\
+\xfa\xfd\x02\x18\x9e\x96\xda>\x06\xda\xfee\xe0=\xe7\x0b\
+\x92\xd9\x22\xde\x22`B\xe5N\x9b\x1c\x94\xc2\x0a\x84?\
+\x12\xea#\xf1\x1f*\xd8\xa9M\xad\x1aX\x99r\x0ee\
+.\xf2\xddS\xc68~\xff\xb71\xa6L\xf2/\xa6o\
+m\x0c\x92\xb6'\xbb\x17\x8d1]@\x02\xd7\x04\xac\xe5\
+\xc8\xa5T\xa1\xda\xce=d\x8c\xe9\xe2\x96\x11'\x9e\x06\
+\xe9\xd5/\xb7\xb7\xd7\xd1~\xe5\xd9c\x9c^c]H\
+\x22&\x8fZ\xfcP\xed8\x84\xfb\x9f\x1cc\xca\xb0E\
+#\xe2\xe4\xc9'?s\xf23\x8b\x83\xbd\xae\xc7s\xe3\
+8\xa3\xdc\xb98\x9c\x1f\x0eD\xd6\xafJ\x1d \x9bD\
+\x990B\x048\xd9\xe7%v\x96\x0b\xa5\xd4\xd8\x892\
+\xc98jo\xe6\xe2\x06x\xe9F\xe0\xa2C\xd9\x8ba\
+-\xc7O\xdb@\x80\x82\x00X&*\x0ete\x8c\xcc\
+\x1b\x00\x8f\xe3\xc0\xc1{\xd8\x18\x13\x00\x10G\xb4\x98!\
+\xa8\xff\xf6\xb1\xf9\xe3p\xb3\x97\x02$\xfd\x9c\x05\x94\xd6\
+\x1b\x93G[M\x22\x96\xda5\x09\xa8\xd9\x0b\x1a\x11\x1c\
+:\xe7\xcd\xebc\x08\x00\x8ac\x7fj?Z\x1f\x0e\x0f\
+\xea\xae\xdaS\xaa\xd9(\xda\x98I\xba3\xb4\xda\xd5\xd2\
+\xb6\xe8]JP\x99\x7fm\x8c\x0d\x88\x01t\x95\xca5\
+\x07N\x1bD\xe2\x97\x111,\xea\x1f\x80\x98\x18\x9e\x0c\
+\x9d\xf3E\x5c+5v^\xbf\xda\x0erh\x04\x96\xce\
+\xc5\x9d\xc7\x98j\xf8\x017\x00\x1e\xeb\x90\x80\xcb\x05^\
+m\x17\xb5\xa3T\xb3\xcc>\xca\x18\x03\xf4\xd8\xb7dZ\
+\x8b1\xc0A\xe50&\x90-&\x8aR\x1d\x22t\xba\
+\x5c\xa4}V1\x22\xder\x5c\xcd\xb7L\xfb\x0a\x00\x9f\
+.@E\xfd\xe7\xf8\xb9'9|\xf9\xbb\xfd\x13\xc6\x98\
+j\x90{\x17\x1a\xf7\x19\xd1>]\x1e\xdc\x97\xf6\x15\xb5\
+\xf6\x87D\xfd\x9e\x9fB\x93\xc29AQ\xc6\xdc\x88\xe3\
+Vv\x83\xbde\xf7\x01'\x02A\xe7T\xc6\xc9\xf3\xbe\
+*m\xd0h\x9d\x8cB\xca\x9bn\xb5\xf3\xb5?#\x12\
+\xb8{\xc2\x18\x13cH\xed>\xd1\xc90T\x0a\x80\xd2\
+\xc5#L\xc5\xc3\xb5\xc7\x98\x98\x1f\xb440Z\x9a\x18\
+\xdd1\xdcZ\x81\xeb\x7f\x1ac+\x0d\xa9y\xe6\x07&\
+\xf0\xd9\x7f\xf3\x18\x13\xd3HIC\x12\x08\x98\x08D\x91\
+\x0b\x00C\xa5'vG\x8b\xc0yB\x9dw\xbf\xa0\xc2\
+\x13\xf5\xcc\xe7*M\x12@z\xda?\xd7\xba(Y\x15\
+8\xd9\xcfD\x121\xd4\xdcS\x80L@q\xceI\x95\
+P\x01^\x04\xa6\xf6\x9d{\x8f\xc8#`I\x80\xe1\xdc\
+ZG\x00\x86\x12S\xef\x87\x89\xa2k\x8d\xd23@\x8b\
+\xc0\xcbztm+\x01\xbc\x9as\xdd;\xb4\xe3\x044\
+\xb7@\xa7\xfcE\x8c\x22\xf7'\x0d\x86\xf8\xa1\xd5\xb5\xc3\
+\xe7\x15\xd0\x13\xe7\xc3\x8c\x05\x18\xbb\x97\xc3X<\xdc)\
+\x80\x8c@\xea\xbf-ck\xdf\xe8\xde\x03\xe4Z\x7f\xc0\
+#\xf1\xe0\xc6$\xaa{X\x00\xe6>\xc6h\x00\x9c\x0a\
+\xd0\x05\xb6\xfe\x8e\x1f\xc9\xbf\xc4\x80\xc0\xd8\xc2d\xf1\xef\
+]\x1c\xb0Q\xc5\xeb\xfe\xe5\x9f\xc9\xfc[\x9f\xfeyz\
+bF\x89\x87\xd7w_[\xe7\xa6\x15R\xeb!\xf0\x95\
+\x10\xc9\xb9*m2\xfe\x0e\xf1;\xf3\xc7>\x8a\x87\xf8\
+\xe5\xf6\x89\xc0\x95=\xb5~\xe6\xbbS\xd7{\xad;-\
+3\xef\x0b\x10p>z\xc9\xf7\xc5\x01\x00\xbd\xcf\xbd{\
+\xaa3\xbd\xbb\xd8\xbb\xfd\xed\xb9\xcd\xa7\xbf\xd3\xcd+]\
+\xd4*\xe0\xb6\x0e\x1d(hm\xe0k]\xec\xa3\xa6u\
+PT\xfd^\x9b\xcf.\xf1+\x95\xa6\xe6\xf9v\xae\xb6\
+\xd1\x00\x00 \x00IDAT\x0a\xb0\x0b\x93\xa6>o\
+\xefV\xc7\xaf\xeb\x0c\x02?\x03\x14\xec\x9b\xd6\xc6\x1c\xc0\
+|\xaa\x1e$H0\xd5\xd2\xca\xbc\x8e\x9a\xad7N\xb5\
+\xd6\x9f\x5c:\xc4o\x17](\x90\x15h\x12\xff\x1b\xc7\
+\xffs\xa6\x89\x1c\xee\xf4k/\xa2\xbf\xbb\xdf'\xbfs\
+\x99\xa5\xd3\xfb\xa6\x8a;(\xa4\xff\x9c\x8b\xf8\x0ey\xff\
+OLm\x08-\x88\x85Z\xbc\x93\x89\xca\xcf\xe0\xf9\xbb\
+\xb4+,\xea\xc4\x98\x96\x1b\x04\xc88k\xa2\xd4\x0e\x06\
+\xc1\xa7S\xc2\xf0\xe5\x17\xd1w\xd1Bx}\x86\xc5A\
+\x10\xc8\xb7\x1a\x90\x12\xa7\x8b\x88M\x1d\xc8.:\xe1`\
+\xf4\xb6\x82\xef\x0d\xe2\xf7\xa6\xb5\x96nw\xe5\x88\xf6m\
+\x07g}\xbe[\x87\xc1\xe0\x02rq\xd9\x18\x90p\x01\
+^\x10\xe2\xdd\x7f\x1bc\xa2\xfa:\xa82_2u2\
+k\x97\x1bcy\xbe\xd5\x91\xba \xf3\xe2\xf9!S6\
+\xb0\xf7M\xdb\xc0\x12\xbbs0\x18l\x01&\xea\xa3L\
+/\x046\x9fgw\xf3\xb4\xc3;;53\xf6\x97u\
+a(o\x1a\xa4\xfa\x8f\xa2:\xebb\x8a\x01>\x9a\xcb\
+\xd5a\x89\xc3\x5c\xf3\xf0\xc9\x00/D\x92dxb\xe8\
++\x93O\x0c\xec\x01iC\xa5O\xfc_\x8d1\xa9C\
+G\x14\xa8~O\x86\xe11\xbb\xc7\xee\x1e;\x05\xf0O\
+\x1ec\xa2\xd4\xa1\xa0\xf66aj\xd2\xd4Z>~\xd5\
+ \xa8\xdag\xe7\x94v\x83\x1aS\x0e\xba\xf5E\x95\xef\
+\xdd\x12P\x86\xd5NC\xe4e\x1c\x04\x06\xce\xc7w\xad\
+\x94mbD\xfb\xf7\x8cq|\x9dg\xac%\x11'\x7f\
+9\xc6\x92\xa1[U\xb3\xe3\xc0\x1d\xff\xff5c\x97>\
+\xdf\x95\xf1g\xd0\x9d\xd7\xd8\x8br\x94d\xd8\xd5\xe6s\
+\x00\xed;L\x02\xf3m\xff\xbb\x98]\x14\xd4\x9e\xbd\x1f\
+$\x15\xa5X\x09\x81Zb\x19n\x80\x9a\x12\x0c\xed\x0b\
+\x01e\x9eG\x00\x9fv\x8e\xc4\xc7J\x8c\xaf\x89\xba\x14\
+\x15?\x0ek\x05\xc4\xd6\x11\x03\x83}\xe5\xc8\xf8\xf7\x07\
+,\xe3\xf4\xcc\x81\x8b\x8a\xbdTR\x92\x9a\xeaj\x0f*\
+\x83\x96\x9a\xdd\x12qC\x81\xed%\x14\x02p\x813\x0a\
+\xa8\x0cQJ;*\xa0\xb3\xdf\xfc\x1e\xc4\x1aE\xd3\xfa\
+\xb8W8`\xe6S\x86\x98\x96\x8c\x0c5f\x10\xf1O\
+\x8eJ\xd6\xa7\xce\x97\x1a`\xf6/H:U\xf6\xca\xfc\
+\xa0\xcc\xca\xe0\x06\x88\x92\xc9\xad\xe7\x89J}\x01J\xa8\
+\xed\xecVc\x8a\xe9BR\xf6\x04 \x9d\x00T\xfb\xbe\
+\x02b\x88\xc6q\xb88\x9a\xda\xad\xe9b\xe0\xdf\x89\xd4\
+\xfe\xc2\x18\x93h\xa8\xf3.\xc3%pbg/9\xc6\
+\xe9\x0c\xaart\x94\x04q\xd8\x95h``x\xbd<\
+\xe7\xee\xb2cd~\xbf4\x01\xca\x97]\x84\xa8-\xbb\
+\xce\x1f\xc8\xeb\xee\xdf:\xc6d\x0f\xf8\x0d\xb9\x0f+\xf0\
+'\xbah?\xda\xd7\xa8\xb52:\xad\xad\x15 \xe4\xe4\
+\x96c\x9cN\x81/\x87z\xf8\x01_1\x95\x00\xa4\x0b\
+A\xedK\x89\x02~\xc1\xd6\xcdh\xdd\xe7\xda\x94]\xe9\
+\xf8\xf4W\x9a\xd4\xef%,\x92Q-qH@\xc5\x90\
+ \xfe\xc4\xe2\xb8\xddj\x06\xecKs\x00%^\xdb5\
+\x0c\x14L\xaa\xd4R\xef_1\xc6\x06\xdc\xa9\xd5\xde\xdd\
+)%\x8e\x98{>\xbf\xfb\x13#\xc8\xfd\x1d\xbf`\xff\
+\xfe1\xa6\xf6e#ar\xad\xa9\xcd\xa8\xda\xef\xa8\xc2\
+\x97\x06\x06\x00\x0b\x80\xc2A\xe7\x90\x07(-\xe6\x0d&\
+@\x188u?+\xb5\x02D\xfd\xfc\x18\xdb\xe7-\x7f\
+\x02\xf3EF?\x99\xe2\xdd\xaf\x8f1\x01,\xd9\xf7E\
+=O\xe6Xm\xfd\xee\x87\xc6\x98J\xaa0<\x00\xb6\
+9\xff%~\x0a\xe8\xb0\xee\xfc+\xa5JD\xdd\x88P\
+Ry\x07\xc4\xb3o\xb4`P\xfe\xddk\xd6\x87=\x97\
+\x88\x08\xe3\xa7D(\x05\xf2O\x1fc\xf2\x13\x01\xdc\x80\
+E\xcc0\x81\xb3\x84\x93{\x1eP\x8dA\x07H\xe1_\
+\xf1w\x9d\xeb\xeb\x07\xe0\x04\xb0Y\x07\x80d\xda=\xd6\
+\x17\xbf\x17#\x82\x9f)p\xf7] \xc6\xdfv\x8f\xf5\
+\xf6\xb8\x9dj-\xc3n\xde\xba\xdf- \xef\x22~\x80\
+\x07\x7f\x0f\x902\xbf\x02[v\xc7\xbc\xda\x17y\x9d\xaa\
+\xbd\xe6w\xf9=\xaf+a\x84\xa1\xe1\xf3\xf8|\xbd\x94\
+\x16\xc0\xd0\xdb\xfb\xb9\x0f\x89\xe3\xce\xed\xd5\xdf<\x05\xba\
+]\x8c\xae\x8blw\xca\xba\xc0\xdfs\xcd\x09\xde\xb9\xc4\
+\x99\x96\x02\xc6\x06\xbf\xa3k\x03\xf8\xea%G\x1d\x10p\
+_y\xbf\xfe\xdc\xd6\xb33\xad\x1bC\xb7\xe2Y\xcc\x07\
+\xafC,\xf3\xe2\xb4\xd7\xac\xafD\x87\xd7\xf5~~\x8f\
+(* \xc8\xe7v\x1f\xf4/\xa5\x1a\xf6\xb1{/\xa5\
+q\xe5\xff\xe7\x9e\x00\xdcW\x82\x11#U|'\xd1\x85\
+\x11\xe8\x9e\xb4\x9e\xe6\xdf\xbc\x06P9U\xaa\xbe\xa3\x96\
+\xeb\xfc)\xe0\x1d\x8f\x7f\xde$\xe6B\xf5z\x88\xcc\xdc\
+`\x0a\xf0\xb5\xfb3A\x02m\x08\x10\x04z\x04\xe4W\
+\xcb\xc5}V\xda:]g:\xf8\x80\x85\x8f/\xe4\xf0\
+\x0b\x1f\xd4\xf7\xe7b{aT\x94\xbf\xa2\x05\xcc\x9f\x9c\
+\xfe\xee\xf2\x8bN\xfd\xd6\xad\x00\xe5L\xfbB\x19\xc4A\
+\x1d\xbfI2%\xb7\x9bJ\x0bz;\x0a\x19\x8c\xae9\
+\xa0f&T\x1em\x96\x8a\xba'\xf0\xb7\xb1 Pj\
+|\x1dPm?\xb4\xb9b@{\x8d\xac\x83\xd1\x11\xac\
+\xd7\xc7`8\xa8\xa1\xb0\x1d\xaf\x9f\xb56\x5c\xa0N}\
+_\xa6\xc3\xbf\xdfz\x8c\xe3\xf7\xf7\x8d\xb19N\xa5\xee\
+\xcd\xa1O\xednQ\xdaQ6\xd5\xf8\xdec\x8c\x8b\x10\
+;\xfc`6\xb8\x8c\x04\xaa\xdb\xcb\x1aE\xd2\xc64_\
+\xf6\x13\xc3\x8f\x12\xfb\x8cd\xb8n\x1c\x11\xb6\x9f[3\
+\x1a\x959T\xe3K\x94\xf1J\xe9\xee\xf0\xc0\xd5\xe1/\
+C\x90\xcc\xde\xeef\x11\x9bB\xc9\x0c\x82}\xf8\xc5d\
+\x92\xef\x996s>\x8fvPJ\x08 \xb0\x01\x12\x0a\
+\xe0\x91\xe1\x15\x18\xa2\x18\xca\xc0C\xc0\xads\x0c9F\
+@\x89Y\xb9H\xac\xfb\xc7b\xf0_\x1dG\xff\x05\xc9\
+\x94\xc8\x5c\xe599HU\x83\x0a@rQ\xb9@\xec\
+7\x01\x06\x83\x8cB\xfb\x90U\x94\xed\xe8\xc4\xad5\xb4\
+.\x12\xb5\x9b(\xeajE_\xbc\xff\x93\xfd1\x10\xdb\
+\xbfy\x8c\x89\x8a\x98\xb6t%\xd2\x06\x89\xfcL\x0c\xa9\
+y\xc4<\xe0x\xcc\xe7\xf7\x16S`\xdd\xda\x10V\x80\
+\xde\x80\x91\xb2\x13\x1cQ\x99\xfc\x00\x0a\xd5\xfe\x8eA\x8f\
+\x03[5\xb8\x9d\xe2\xcb1\x03\xa8AV\xed\x0f\x0e\x8c\
+\xf6I1\xecE!e\xf0e\x040\x0e\x18j\x94\xd8\
+P\xa1\xabM\x98\x8b\x0d\x95\x13\xf5\x14\x80\x91\x8b\xa3\xb4\
+!t\x15@\x91\xb5\x0f\xcdGG\xe2}\xce\xae\xee\x0b\
+\x90\xe3\x18q`0R\x00\xb5\xc9\xb0WF\x10U\x1c\
+U\x0d\xb0\x81I\xa0\xb6\xfc\xbacL\x22\x98\x11c+\
+\xad\x02\x99\xc1\x9eA\xe0\x90\xb0\x0f\x1c\x02\xeb\x1a@\xa0\
+4-\xd8\x17\x0e\xd2s\xc6\xd8\x00\xb3\x02\xd2\xa8\xe3\xcb\
+\x10&\xb0.\xca\xb7\xfd\x95Z\xd5\xd3\x80K\xe7\x95\xa3\
+\xc6\x91t\x01\x0b\x5c\xe3\x10\xee\x9e5\xc6D\xcd&f\
+\xa6=\xa3\xcc\xb5\xf7u^i3`n\xd1pH\x06\
+\xaf\xa8\xffM\x94\xaa\x1c|\xf7\x19f\x065w\x81\x86\
+\xd2(v\xf5\x0bRz\x86\x11%!@M\x1d\xf3C\
+\x0d.,^`\xa3\xdbB\xba \xb8\x7f\x04\xe0U\xc3\
++\xe3\x1cq\xbb\x02\x8ceT\xecw\xe7/\x81w\xdd\
+\xa7\xec\x1b \x04\xd5\x1cS\x88_r\xe6\x18[\x00\xb8\
+\xff\xa616\x11\xc8\xd2\xfeA\xbd\xa4\x8e\x8e\xd9\xf3\xf4\
+el\x0e\x1e@L\xa0d\xbd\x88Qj\xa7(\x80w\
+\xef\xff\xc0\x18\xd39\x02,\x01\xc0\x06\x8f\xf1\x8dK\x06\
+\xf9\xc7F\x06Y\x09\x85@\xaa\xdas\x12\xc7\xbb\xe2\x18\
+\x93VC\x00\xbb\x0alQ\xa5\x01ZY\x9f\x93\xc7\x8c\
+1i+\xd0\xf4\x01\xfca\xde\x08(s\xcf\xee\xbfa\
+\x8c\xa9\xb4\x04\x00i\xff\x87\xa1Q@\x11`\x89}v\
+o\xb2\x1f\x01B\xf6\xbf3\xc6\xd2m\xe28\xa6\x0c3\
+\x80\xee\x09cl\x0c\x16v\xa5~\xc6paG\xac\x9b\
+\x12\x03b\x93\x80\x03\x8c\x97\x88\x04\x1e\xfd\x8a\x15P\xbb\
+\xc1\x85\xb5w\xaa{\x11\x07\x5c\x868\x14\xf8\xd2:!\
+\xca\xe7\xfc\xbb\xbf\x05\x9a\xb1\x1be\xc7\x7fn\x19\x1b\xb0\
+\x80\x91& \xc4\xa8boz\xe0\xe7\x5c\x08Xe\xd2\
+\xf9\x17\x806~\xa8\x8c\xb9\xfb\xc7\xe7`\xdf\xd9S\xf7\
+\x1a\xc6\x02\xa0\xa8S\xdb\xdd\xdba.\xd6|G\x04\xfa\
+\xf0+\xd1\xfe\x083\xa9\xceM\xebo^\x19\xfc.:\
+l\xde\xbc\x1f\xff\xf7\x83cL\xf7CS\x81\xaf\xe7\x00\
+P\x12\xc9\x8e\xc6S\xcf\x18\x173\x85\xbfFt\x11 \
+\xe1s+\xcd\xec\xf7\x12\xfb%#\xaf\xc4\xc0z\x08H\
+\xdd_\xb4\xaf\xb4\x09\xb5~\xf6[\xa7\xcewm-\x00\
+\xb4\xb8\x03\x10\xdf\x99\xc0\xe6\xbb\xd7\xc0\xb3[\x9d\x89\xec\
+\xfe\xe7\x17\xd9\x0f\xe6\xd1\xbc{\xdd\xfe\xfa\xd6\xc1\xeb\xfb\
+\x1c^\x07 ~q\x00\x80D\x9e\x7f?\xbdm\xe9\xba\
+\x8f}\x0e\xcf\xefu\xfd\x9e\xae`\x98-\xee\x07\xfeT\
+\x17\x03\xf49z\x8d\xbf\xfb\xdd9k\xb5\xfd\xd5\xe5\x81\
+\x1f+~\xe9\xcfe\xfd\x00\xbc\xce\xa5u\xfap\xeb\xfe\
+\x05\x18\xe0WaLi\x7fM\x9c\x99\x96K\x17Y\x07\
+\xd8\xb0\xfb\xe2\xa2\xc4\x05\xa7\x0a\xd1\x1b\xe6F\x7f\xca\x0f\
+LH\xdb\x1c\x90\x9e\x91\xda\xc3\xf3\x92)\xba\xe5E\xa8\
+\xb9\x8f\xc7\xb9q\x0c\xc6M\xa7\x0f\x92\x0f^\x08\x85\x8b\
+Af\xf1F\x0by|\xfb\xd9s\xc9\xd8E\x84\xb0\x10\
+\xf39\x90\xbf\xe9\xa4M\x80\x190\xf2r7O\x00q\
+\xf6\xd4\xfe\x8aJ\xae\xcc\xd2\xf8\xbbkN\x9f\xb3\xb7\xa5\
+\x10\xc8s\x9cQ\xb2\xfc>\x03\xe3\xf7\x1c\x98^\x93\xdf\
+\x91<\x1b\x9f\xe3FsA \xeds{}\x07\x80\x01\
+\x94\x11\xb5\xc1<\xdf\xe5\xb2\x1e2\x7f6\x1cC!\x83\
+\xc7\x90\xeb\x03/\xb0Ca\x91YAM9g\x8c\xcd\
+a\xa8\x0c\xb9L\xa3\x0b\x1f\xa0\xe3\xc0\xf4\x8c\x88}\xf2\
+\xae\xccK\xfa\x0f\x1f\xe7b=\xf8\x97H;\xa8\x1fO\
+\xa6\x00`\xf25cL\x99\xd4\xb4q\xe2\xa0\xa8=.\
+1\xad\xeb\x05P\xe1\x88]\xe1\xc2\xd4\x98r\xecS#\
+XTB\x17\x846z/\x0c\x22\xef\xf3\xc8\xf4\xcbd\
+8\xe8\xc4\x80\xd4`\xc9\xec\xc5\xf0W\xa9\x82\xdf\x178\
+s\xfce\x94\x9c\x0b\x0e\xc2\xf3W\xaa\xe71\x8c\xb9\xdb\
+\xeen\x0b0q\x1c\x13U4\x81H\xf5m\xff\xdee\
+l\x19?\xfbX`\xe2bc\x981~\x9c\xb7|\xaf\
+\xcch\x0c\xd2\xeeN\xa1(_6\xe7\x99a}E\xb4\
+\x19\xb2\x8f\xf6\xcf\xda?s\xff\xcc\xe5\x22_\xdb\xa9\xe5\
+\xf3\xee\xde\xb1\x96<T@/\xf3\xf1\xba\xd5\xc1\xd9}\
+n\x13\xb9\xb4\xbf\x19>\x19\x5c\x8e\xa2~\xf5\x80*\x81\
+5\x03\xd73\x05^\xd7\x05\xc0\xf0\x0b\x80]\xa0\x02;\
+\xff]\xc0\xafo7j\x1d\xea#\xa0R\x06\xd3|[\
+g\x99\xddPZ\xab\xcd\xa06m\xa8\xc2\x80\x0c\xaa\xcb\
+\x18&2O\xf6\x8b\xc0[&B\xe0\xc3\xf0\xcbhq\
+\x88Q\xc3\xbd\x8f\x8b\x8d\xdd@y\x95\x91c\xa7P\x11\
+Q\x22\xffb\x8c\xa9K@\x80\xddz}H8\xca\xbf\
+n\x12\x98)\xa8\xd4\x02p\x99 \xaa\xf7C\xb4\xec\xfd\
+\x8b\xb6\xc1\x93\x97\xee\x1d\xef<\xda\xc3\x01\xa4\xbdx\xf7\
+\xa2\xdd\x8b\xa7\xcc\x98\xc0Q7\x0b\x19\xffP\x8e\xcbQ\
+\x05\xf4\xc9\xfc)] \x9aI\xe5\x1e0\xc2N'\xc3\
+\xa9D\xe0p\xd6\x18S\x8d\xb6\xd7\xc7\x18\x11\x10\xc8\xa8\
+{\xbf0}\xea>\xc8\xf3\x08\x10\xaaT\x84\x18\xe7\x7f\
+\x19c\xeaf\xf0\xc11&\xaa\xba\x00\x80c\xc6aF\
+=\xe6P\x00\xf6d\xb09\xd4\xee\x8fF\xed,1;\
+\x22\x97qd\xaa\x14\x90]\xe7\x98\x01\x12\xbb\xe3\x9eZ\
+\xfbz\x1f\x01\xae\xd2)\xcf\xa3\xdf\xbb\x9a\xdf\x00\xa6%\
+:\xa6\xa6\xd1\xf9N\xe9\xc7\xfe\x1dcL\xf7\x96\x92\x8b\
+\x00{g\xfc\xf426;\x8d\xd1\xc0\xb1\xe6\x989\xa7\
+\xec\x02\x8at~&\xc2Xm\xed\x02\xa8\x15\xa3A\xc9\
+\x96} \xf0\x93\xf1\x05Tp\xdc\xf8\x199gC\x19\
+eh\xa3T[Ev\x02e\x1c\xf3F\x00\xc9!\xc7\
+\x98Q\x1a\xe7\xbef\x17\xc3P\xa3\x8e\xef\xbc\x01\x1e\x86\
+\x94\xed\x10\xb3%~Wj\xd1\xe9~\xb1\x7f\xc4\x18\xdb\
+9\xacn\x097\x1ec\xba\x9f\xec{\x0epJN\x0a\
+\xe0\xd0\xd6\x0f\x10\x1d\xc6O\xed3\x80\xa9\xfd\x8f\xd1\x95\
+@\xa9\xf6\x91{\x1b\x83\xc8>K\x80n\xbd1\xc6*\
+\xc0\xe2/\xf1k\xa2\x99\xa1\x94\xa8\xba\xb9\x00&\xdd\x8b\
+\xda\xfa\x12\xe1|l\xa8\xea7\x1ac\xd3\x9e(\x86\x0f\
+\x95n\x80\x1a\xed\x0b\xc0\x846\xae\xfc<b\xa3J8\
+\xb5[\xee\x1a0j\xd8\x05\xe6J\x8d\xcc{\xcf\xcc\xb6\
+6o\x87o\x18c\xd24\xc1\x9cq?(\xa9\xc3h\
+\x94\xc9\x07\xa4\x06\x80(\xbb\x91\xdf/\xad\x1b\x01\x10?\
+Q`\xa5$K\xf7\xa2\x9cs\xdd\x5c\x8a\xc9\x10?\xb7\
+\x98\x1f]\x1bK\x9bd\xd4x\xdf\xd9W5\xf6\x02@\
+\xf3\x22\xa0\xf6\xbduW\xa8\x92,L\x08\x81\xb8\xf7w\
+\xef\xf9w\xeb\x02xP\xaa\xd1E\x02\xcd\xc7\x5c\xaa\xfc\
+\x99\x8bPu\x17\x88\xb9\xbf\xdd\x83T\xeb\x01?\x00\x18\
+\x99i~V\xfc\xd2*MR\x9a\xe1\x0b\xd3\x82]\xc6\
+\xccd\xbf\xc5\x01\xfc\xf1\xaeE&\xf0\xe4\x17\xd8_-\
+\xb0/\x80D\x1c\xe2\xf7z\xc9\xb2\xfd\xcc\xef\x17H\x03\
+\x02\xdc\x8b\xee\x95\xaeY\xc6_\xf3\xdf\xbb\xd6\x99y\xf7\
+z\xec\xb9\xf8\xc2\xfd\xc6\x1e\xf3\xfb\xf8\x85>'\xbf\xa5\
+\xc7i\xbd;\x00\x80\x08\xf3\xc3\xf3\xf0\x1f\xed\x1b\xdf\x01\
+A\xe6\x97\xbd\xe4\xd7\x8a\x17}^\xfb\xc4\xba\xbb\xc7\xc4\
+q\xd6\xd7}'!F\xe4\xb3w\xbf#\x8e\x98n^\
+\x87\xab\x8eq\xfc\xfd\xe7\x8e\xb1\xc5\xcd\xa7J=\x98\x18\
+\xde\x08\x9co6\x05\xa0\xdd\x01\x90)\x1f\xdb\xe9\xb2\x17\
+\xa1\x82/\x10g\x88Q\xb5G\xe6\xee\xd6\xd3\x07\x10\x08\
+p\xc0 \xe7\xe3\x7fo\x99\x07\xbc\xd9\x94\xc9\xd7\xb6\xcf\
+\x84\xb9X\x87V\xf5\x13&\xe0B\x00J\x9c\xd0\x025\
+\xea`=\x1ffB\x07\x00\xba\xca\xb2\x8d\xd03\x81\x02\
+'\x7foa\xfd^\xcf\xb4\xf92\xaf\x16\xd6\xe7\xb2A\
+}\x0e\xcfcc$p\xaa\xf9\x120r8\x01(\xde\
+\xcf\x01\xe6\x98\xe7\xe2\xaaLL\x1c\x0f\xed\xb7\xea\x00\xa3\
+\xaa\xfe\xcd\x18\x93\xa3\x02\x994\x1f\x9f\xcd\x81\xfbD\x0e\
+To[\xe399l6t\x17\x0bI\x7f\xf0\xe3\xf5\
+\xb9\x04.\x87oKF\x01`\xf2#\xcb\x18\x99\xa45\
+\x83\xf0\xafa\x14h\xcb\x17\xcao\x89\x04\xbd$*\xf1\
+\x0f\x1dc\xa2X\xa1V\xa7-]\xd5(]b}\x9f\
+\x93\xcf\x1bc\xa3\xa4/\xe1\xc8\x08H\xfev\x8c\xa9V\
+\x17\x854\x14LbN\xe5\x18\xb8\x98\xff,H\xb1\xcc\
+0J\xa0uu\xe1\xa9\x05\x95!\xd5\x0f4\xed4\xfd\
+\xdd\xc9\x17\x8e11\x11\xbe?\x19\x9a8b\x95\x11$\
+~\xe3\xa2\x14\x80\x02\x22\x9c[\x0e7\x83\x08)|X\
+\x80\x045{\xdf1\xc6\xe4X\xd9\xbf\xdf\xbb\x06\xc2\x17\
+<x\x8c\xe3\xf7\xab\x8e\xb1<\xdf\x820\x9e\xec\xc7\xd8\
+\xdaz\x150r\x9d8x\xba9<=\xaa\xc7\xf6\x15\
+Q?\xf3m_\xdf\x22\xe7\x1eU:5\xc5\x03\x1e\x19\
+\x00I\x89\x82\xca\xb0b\x0c\x00n0\x05\x18X\x94}\
+\x80\x0f\xc3\xedBv>\x01\x9d\xce\xa5\x0b\x03\xd58\x01\
+i\x01\x8c\x80\x8b\xcc/\xe0\x92\xe3Ym\xe2\xfc\x9e\x1a\
+L\xd4\x5cm\x9b\x04\x122\xa1\x11\x81);\xd1\xa9\xc7\
+\xecH\xc4\x06\x0f\xb7\x1fc\xca\x98z\xfe \xf4\xbb?\
+\x1c\xe3\xf8\xf3#\x96\xb1\xd9;%\x05..\x0e$G\
+\xa8uy(\xc7\xde\xbaE\x83\xa2\x02K\xd4\xf08l\
+\x1cU\x17R\xbd\xfek\x8e\xb3\xf0\x9a\xe9\x22E\x1d\x95\
+\x91D\x85c7\x00Vj\xa2\xb5\x07UZ\xe2u\xec\
+W\x81\x1e@B\xadq\x18-\x95Y\x0d\x10C}\x5c\
+\xe0Y5\xcd\x1cl\xa2\xa9\xfd~\xe1\x90\x00\xda8\xc6\
+D\xd6\x88&\xaa\x99N\xc0\x05h\xad\xf6\xa3jn\x95\
+\x00q\xb4\xba8\x94v\x97\x1f\x1dc\x12\xb1\xe5 \xab\
+1&\xaa\xc6\xb1T\x93\xef\xfe\xe0p\xcb\x5c\x02\xd48\
+(\x18\x83\x11\x1f\xab@\xc7\xbd\xc4A&\x96Id\xd8\
+\xf9\xa2}\xc0\xcep\xc0d\xca\xd9\x19\x8e|\xb3\x03\xa5\
+\xa2\x9fR\x8cb\x22\x00\xb8Q\x97\x03X\x95\x88\x9a\x00\
+\xc79J\xdb\xb7\x12\x99\xd4\x9d@@\x84\xa2\x99\x12\x9f\
+\xb2\xdb\x9e\xf7\xeb\x97\xb1i*\x040\xdd\xfd\xe0\x18\x13\
+@\xcc\xce:\xc7\xb9\xc7\x0e\xa7\xc6\xd8J\xaev\xef\x1a\
+cc^\x15p(\x90a\x9f\xbb\x06\x11q\xac\xdb\xa4\
+[B\xee[\xea\xf8\xbb\xb7\x8d1\x95HP\xef'\xb6\
+(`w\xde1\x0f\x88b\xe5\xf7\xb4\xd3\xdd]0\xc6\
+T\x8a\xa4]\x9b\xc0\x5cW\x04\x8c=\xf7\x14\xe6U(\
+\xabu^\xed\xa7\x9c\x8b\xaa\xc9\x05\x8c\xdfs\x8c\x899\
+ S\xcd\x1e+\xa9\xd3\xef[\x89\x1b\xfb\x1e;E3\
+\xa9\x00:\xf6\xdb\xf7hy\xec.=\xc6\x06\x10\x96\xa6\
+B\xb4r\xd4\xf0\xdbw4\x15\x0a\xf0J\x9b\xd4j#\
+(aA\xcbG\xc6WF\xb93\x08_px\xe1\x00\
+\x88\x8baB\x9b\x05\x10\xc5>\xf3\xef\xfa\xfep/`\
+\x1a\x06\xf8\xa9\xfd\x07(\xc48\xe8\xed:\x95\x028\xcf\
+\x00\x03\xcc2Z\x134Qd\xe8e|\xd9\x0f?\xdb\
+\xc7\xee\x87\x88O\x97\x7f(0\x160\xb2\x972\xe8\x18\
+\xa3\x98L\x98F\x9d\x19f\x1d\xd9{\xfe\x02\xbb/\x93\
+\x0f\xa0\x918\xc4p\xc5|\xe2\x9f\xa0\xee\x03b\x94\xa4\
+\xda\x7f2\xe1\x02L\xeb\xe2\xbc\x0b \x05\x9e\xce\xab\xbf\
+\xf3~\xec\x12\xbf\xd9\xef\xdb\x0f\x80\x18\xe7S[l\xcc\
+>\xfe1\xbb\xdb\xf7\x83\xf5\xed\x99v~\x00{\xe6\xbc\
+\xc7\x9f\xae\xff~A\xf9\xf7\xeb\xcf=\xd0\xed\xa2\xd4\xe6\
+\xa1we\xea\xeb\xe4\xf9:\x00\xc0/\xee\x0c\x80\xceT\
+\x14\xf8c\x16\xdb\x8f\xe2/_\xbd\xb4\xfa\x9d\x95x\x5c\
+\xfd\xe2.\xe6\xd7D\xeaK\x14\xb0\x97z\xf0\xb7\x00+\
+\x9d\x99\xc8\xfe\x98'\x80\x81\xef\x128\xfcF\x89_v\
+\xd5\xfb\xf1+|w\xcf\x07\xc0\xa5-wZ\x17\x83h\
+\xb4\x10o\xad\x04*F_\xfc\xe5S\x15\xf8C\xb4#\
+\x82\xb7\xe4\x8bn1\x05\xda\xc9 \x95cuQ\x81\xfb\
+\x17\x04\xb1\xbd\xf1\x96\xd1_\x02\xb3\xebO\x99x\xea\xfe\
+&\x0e\x12\xe4\xc19\x1a>\xd0\x98\x8e/mj\x87\x97\
+\xbf\x08\xb5\xfc\xb1}.5m,\x8c\x06\x8e\x92\x8d\xd6\
+U\xd2\x87{u\x85I{\xe0b\xfa'V`\xdcE\
+\x18\x86y\xb9\xd4\xb4\xb06\xdc\xd6\xb7\x98.\xc1\xfa\xdf\
+{\xfb@\x81\xb1L\xb7\x0b&\x14\xde\xaa\xd1\x22\x12\x84\
+2(c\x89\xba\xcd\xe0\x91]\xecm\x06!vD\xf6\
+\x22\xfaX\x07\xc3\xf3\xa1\xa2G%\xbb2\x93\xe7Fe\
+\xf4\x89\xbb'\xed\x9e\xb4l\xe0\xd5\x80\xffK6\xfa\xbb\
+\x83h\xa6m\xa1\xf5)\x07\xed\x1f\xa7\xf9\xba\xf4\xe9\xd4\
+I5C\x0c\xf4\xfeG\xc68\xfe\xfd\xa7\xc7X2\xde\
+kM#\xe4\xf4\x9b\x83\xc8\x0b\x08\xb4\xe3#\x86w\xaf\
+53\xb6\x7f\xea\x18\x1bC\xa0\x0c{\xfa2\x13\xfb\xdb\
+=x\xcdT\xec^;\xc6r \x17\x80\xe4\xf0\x8d\x11\
+\xf1#\xf6#\xf3\xf9\xcbcL\x8e\x0d\x07\xcb\x05L=\
+w\x88h\xfd\xf6ra\xbdm\xb9\xb0\xceJ\x80\x80\xe9\
+@\x85\x5c\xe0\xe0\xe2\x87\x1c\x02\x96 \xb0\xb7\x18\xe3\xf8\
+\xbe_\x99\xcc+G\xf41\xa1\x98\x9bW\x17\x95\x00*\
+\x19\xc6\xe3\xa7YT\x89\xab$$m\x19\x0f\xcfI\x80\
+F\xc4Q\xa0G\xec\x09%\xcf>\x0dUu\x7f\xde\xfe\
+\x1f\xf7\xc7\x0b\xea\x82\xb3/\xb8\xcd\x05\xb7\xd9\x02\xa33\
+\xbfu\x8c\xe3\xfb\xfc\xea\x18\x1b \xa2\x7f\xb1\x0c\xfa1\
+,Xk\x9c\xdf\x96\x9a\xa9\xff\xb8pM_e\xfc\x9d\
+\x17\xc0\xc8w&\xc0\xb4\x1f\x1e3\xc6d7\x04<T\
+\xdfe\xd2\xd50\xbbp\x9c?\x17\xb0vh2\x062\
+\xc6-S\xb5\xfb\xda1&;\xc4\xb1C\xfdO\x8dg\
+1\x14Pk\xad\xb7\xc0\x1f`\xc4\xbe\xc9\x9c%\x90(\
+\x87\x8dX#s\x02\x89\x16\xe05\xea}\xd5\xa0\xb9\x90\
+\x00\x9e\xadm(M\x02%HU\xc3\x16{W\xf6\xde\
+\xe7\x0f\xc0V\xf7\x82s\x0e\xe0\x09`T\x01\xa4\xf7C\
+5\xd7^\x8d\x9d\xc4@\xc0X\xd1\x96\x8b\x86\x8b\x0b\x14\
+\x93\x86\xe8%\x00\xd3s\xb0o\x18>\x18,\x00O\x99\
+[\x99$\x0e\x94{!\x17c\x89\xf5\xe5\x5cU\xe0/\
+\x00\xc7\x10aG\xd2&\xb0\xfa\xf0\xdel\x8ci?\xb1\
+\xf7\x00o\x8e/\x0a\xa9\xee\x19J~\x00N\xce=\xca\
+)&\x80s\xd0\xef\xb1Y\xb3\xe7\x1f&*\xb2\x0c8\
+F\x91.\x1f\x1cu%*\x00\xa7\xb9$\xef\x93\xa7\xb7\
+\xd3,\xbb\xc4\xf1G9\xf5\xfb>\x9f\xfb\x1d\xb0c\x9f\
+\xd2,\xd0\xd5\x85\xea\xbd\x8c\x95{\x17\xb0\xd5\xefa\x0e\
+ )\x81{\xad\xaf{Q\x1bJ\x00\x87\xdap\xeb\
+\xa1\x9b\x82\xcc\xb5y\x05\x94\x01D0\xe6\x92\xe1\xac\x00\
+\x22\x22\x8d\xce3 \x04e\xbb\xce/G\x15\xe0\x92R\
+\xbab\xb0<d\x19U\xdb\xc9^\x16\xb3\xc3}\xa2+\
+I\xebk]\x19D\x00\xb2}\x040\xd7\xfdC\x09@\
+J\x1cJ\x94\x8f\x16\x06\xc0\x84\xc6\x8b\x00\x9d\xd8\xa4\x80\
+\xd6\xfe\xa0\x09\xd4\xc4\x17K\x85_\xa63\xefS\xe2\xa2\
+\x80zv\xc6\x7f\xff\x961\xa6\xdap\x9f\x97\xbdS\x22\
+b\x1fu18\xeb\xcb\x1f\xf4\xef2\xda\x00\x1c\x19{\
+v\x85\x1d\x12\xc0\xd3(\xc9\xf9\xa6m\xb0\x7f\xfa\x18\x8b\
+\x16\xcb\xa2\xf9s\x9c\xe5u\xbe\x9e\x1f\xd1U\x81\x88\xf9\
+P\x8a\x89Y\xf8\xbe\xb5;Q\x89\x05{\xff\xec\xfbj\
+\x8f\xfa\xa8\xe3\xa7\x7f\xd4t>\x9cS\xb5\xbf\xe6\x9f}\
+\xe0\xefz=\xfb\x1b\xd0\x85\x09\x96\xee\x03\x05\x94\x08\x80\
+\xf8\x0b\xfc?\x99y\x19p\xf7\x87\xee\x08\x18\x17\xd6\xc1\
+\x17\xc6\x86\xfb8\x01\xee\xe1\xfc1\xa6s\x04p\xf2>\
+\xbd\xb6_{B\xf7\x9b\xc0\x97\x1d\xc4p\x02\x08\x08\x5c\
+\x05\xca^G\x89\xa1\xbf\xc7\x04\xd1\xd6\xf1\x8b\xc7\x98\x80\
+%\x80\xa4\xd24b\x8d\x98\x0d\x80\x18\x80\x80\x00\x0dC\
+\xc0~3\x8f\x00\x00\xf7\xb0\x0cr\x18\xaa\xb5\x9e\xces\
+k\x0bY\xcc\x0a\x01\xbc\xfbM\x06\xbc\xb7\xcdc'{\
+\x8d=Q\xe9\xec\xbf\xfa\xfd\x06 \x9e\xc6d\xec\x8c\x86\
+V\xe3_\xcf\xebg\xbf\xef\xbb\x04\x98s\xda\xc4\xf2\xaa\
+\x84\x80\xf6\x0f-1\xe7\xb7'b{\x1c\xc5\x0fe\xff\
+0\xa2\xbc/\xc0\xc0\xf3{\x7f\xf1\x10\xe0\xcd\xef\x8bs\
+\xec#\xbfo\xbf\x01\xa6\xec/\x9fS`\xee\xdc9W\
+~\x0fPe\xfe\xec\x1b\xf7\xa7DM\x98\x9c'w\x1a\
+cbHu\xa0\x8fh\x7f\xee\xf9\xbao}\xc7\xd8\xfc\
+\xefcL%\xdf\xfe>~\x0dm\xa2S\xa5\xa6?\xa6\
+\xfb\x92S <\x8bh])\x17\xf9U\xa6\x0b]\x86\
+}\xb8\x95\xd7\x9a2\xe92\x06\x0c\xc2\x08\xcb\xae:m\
+\xbc1\xfd\xef\x8aay\xc7\xb4\xb0c\x1bN\xe2\x1c\xd4\
+\x87w\x7f1F\x1c\xdb\xebN\x1b\xb6\xb7\xf5\x9bU\xf4\
+gj\xc5,\xbe\xd4\xbf\xef\x1bueV\xf1\xa7)`\
+\xe2,8\x87\x11\x03\xe0d\xa9r:\xad\xb6\xb7\x9e\xcf\
+\xc2{\x8e.r\xe1\xf7\xfc\x1c\xca[\xf5\xf5\x96\x89\x10\
+\xd0\xa1\xea\xa2\x0cr\xcc P\x1c%\x07\x025,\x81\
+I\x01\x08\x1cJ\x17ID\x85*\xa3\xe5B\xa5r\xfd\
+W\xa1\xca\xa1V\xfe\xd5\x8a\x14\xef~n\xf7\xb3\xbb\x9f\
+\x9d\xc4\xae\x18\xcc\x9b'\xa3\xf3\x86\x18\xb2\xf7\xc7\x10\x94\
+c\x18\x0a\xd3\xdf\xa6\xa4\x83\x01~[\xd4\xb8\xa9\xf3\xa2\
+\xcc\x08\x0c\xa2)\x80\xeax\xf2\x811\xa6\xda\xca8,\
+\x95i\xfd\x9a\xc3\xfd\x0f\xf7\xdf\x90\xfa\xfd9c,5\
+\xd3\xab:\xf4\xc3\x0e\x0f=<\xf4\xf8\xfb\xe7\xaf@\x03\
+J\xfc\xc9\xdb\xc6\x98.X\xea\xed\xbf1\xc64o\x1c\
+N\x81\x97yGyKf\xa6\xa8\x94q\x10v\xbf\xb3\
+{\xde\xeey\xc7\xef\xaf\xda\xbdr\xf7\xca\xc9\x800<\
+\xe6\x9f>fj\x95\xf7O\xdd?e\xff\x94-P?\
+\xf3\xbecl\xa5\x01\x80\x8ac0\xb52m8X\xdf\
+\x90\xc0&%\x02\x95\xa1\xe2\xd0[7\xcf\xcf\xd0P\x01\
+\x07L\x84\xb2}\xc1\xd3\xc68>\xcf\xfb\xc6\xd8\xfe\x8e\
+\xbdR\x0aQ\x99ym\x1ae@\x89\x9c<'\x06\x90\
+C\x88rx\x871\xa6\x8b\x8f\xfd\x08\xc0U\xa5\x10\x1c\
+\xb6\xd8\x9b\xc3\xdbs!|l=\xb7\xc4\xbbJ\xdd\x9d\
+X\x9b\xdap\x81_\x10\xe4\x02\xbe\x18hL\x80\x86L\
+W\xe6VW\x0f\x0c\x1b\xfd\xc6}^Z\x06j\xb5\xb4\
+AcO\xac{\xec^i\x05\xc8l\xd1(\xe00\xb9\
+\x00e6\xad\x1b1\x18\x011\x87\xc9wv\x0e`\xab\
+\xa4 \x8eoe$d\xc41)\xb4\xdf\xa3)\xd1\x01\
+<\x0e\x1f1\xae\x9c\x8f\x12i\xe4\xf8\xa9I\xd6\x0dC\
+\xcd?\xe6\x8c\x00\x99\x9a|\xeb\xeeP\x99\x19\x19\x10\x14\
+\xd6\xdcG\xbb+\x8e1\x05p\x80\x1eb|\x98?\xa8\
+\xf8\xf6\x8d\xf3\x916J\xa5f\xae\x7f\xf4p\xd8F`\
+3\xbe\xce\xd8\xceA\x05x6\xbc\x0c?5x\xf3M\
+\x9c\x0b#\x82\x16\x82\x0c61\xc90\xe3h\x10\x1c\xee\
+4\xc6\xb4^\xd6\x9d\xfd\xdcjl\xd7\xf7\xd7\xce3\x00\
+\xcc\x05\xef\x18c\x02\xd6\xd5\x14'#\x80\x19\xb5{\xfe\
+\x18\xd3\xeb\xda\xe7\xd6\x03\x03\x81x\xa2\xee\x04\xeei\xfb\
+[\x89I\x1cTm\x1cK+\x87\xaa\xb6\xfb*%\x0d\
+\x00\xa1\x02\x80\xb5\xd1l\x0c\xbb\xc3\x93\xc68~\xdf\x8f\
+11\x87P\x82\x03\x10\x95]Q\xea\x94{N\x9b9\
+\x8c\xa0r\x88\x05z\x01\xb0\x0a\xd0\x89\x06D\x01;J\
+\xbb\x00}\xf6\x93\x8c\x0d?\xc1}m}\xdc\x132\xdd\
+\x11\xf9\x93\x919\x5cc\x8c\xe3\xf2\xfc\xfb\x18\xc7\xf7y\
+\xf9\x18\xd3\xf39\xdf\x18g)!\xea\xc0c\xed\x13\xf3\
+\x0a\xe8A)\xd6_\x1e\xc3\x02\xd3\x09\x80\xc3a\x95\xa9\
+\x95\xa1\xe2`\xa3\xdcr49\xe0W\x1bcc\xd4\xd5\
+\xbd\xa1M\x1f\x86\x96\xf6\x9a(\xfe\xfc/%\x84\xb9W\
+Jm\x1f\x83\x85\x1a6\x80\x100\x0d`\xb4\xbf0:\
+\x88N\xb2_JF\xd9\x1f\xa5g\xc4!\x1b\xd3H\x86\
+\xb92\x7f\xbf|\xc6\xaf,\xed\xe8\xd8\x9d\xb3\x0f\xb7>\
+\x8cR\xb0G\xe7\x9e`\xffhd\xb9?03\xfe\xef\
+1\xa6\xcc\xb9\xf6o\xad\x16\xbc\x18a\xdft\xc6\x83\x16\
+@TBA\x00%`\xe1\x1f\xf0#\xf9\xbd\xbd\xbd\x9e\
+\xfb(\x00Su\xa1Q\x22(\xd0\xe2_\xf9\xee\xdf1\
+u\xcd\x0b \xa03\xc4\xd8\x0b\x01\x12@\xc5}\xcd~\
+\xf3+\xbc\x8e@\xcc>S+o\x1f\x02\x90\x04\xd0^\
+\x07\xe3\x8e\xa8\x9e\x80\xb7\xa9\xf8\xd7\xba`l\xe9\xf2\x82\
+\x01B\xd3\x02CC\xdbV\x8c\x03\xf7#\x0d\x90^z\
+\xd3\xd7\xa3g\x94\x05\xea\x18\x0e\xfc\x18?{n\xe7W\
+\xc2\x08\xf0!\xf0\xef\x80\x8c\xf7\xf1\xb5\xf9E\x17n'\
+\xde\xd5\xea\xbbx\x9f\xfb\xdb\xfe\x11\xbfx~\xaf\xe3{\
+\xff\xfdN\xc1\xf7ws\xfc\xf4\xf1\xd33\xd3U+\x0f\
+\xf8\xd05\xc7z\xb2\xfb\xf6\xb7\xf8\xc9w\xfb\xcds\xd9\
+O\xce\x13\x7f\xd6\xef{\x1e\xf3\x06\xb8\xa0\xc1\xc4\xcez\
+^\x01\xbb}\xe7\xfe4\x9f\xf6\xa7\xcf\xdbU\xf7\xbd\xbf\
+\x12\x19]\x1f\xac\xf7V\x02\xbd>\x8f\xf6\xbf\xbf=\xc6\
+\xf1\xe7\x1f^\xc6\xe9\xc0\x81}\xc0^;\xef\xfc\x0c\xcf\
+\xcb>\xf2_=\x17\x80X\xbb\xf2t':U\x0f\xf4\
+\xd9\x85\xcc\xbd>\xe0\xbeQ\xfe\xb4e\x98)\x1a2\xdf\
+[\x7f\xf7K-\xdf\x19\x90N5\xb1\x01!v\xa83\
+&\xd2\x07\xce\xc5y\xf2\xdd\xc7\xf1]\xb9\x00~w:\
+\xe0&\xc4\x85\xd7\xdb\xe7\x8d\xe9\x7f\xdf\x04<x\xdeh\
+\x08T\xa0oA\xde\xbd\xe4\xae7\xed\x80Y\x9d\xf8*\
+Sm\xbeZ*\x9f\xc7\xc1\x1ba\xf7G&\xd5h\xf3\
+\xc6\x00\xf4~\x90\x00\x94Y\xe4\xf0}\xb9\xf0n\xb3Q\
+\x12k#\xb9\x008X(T\xd4\xc7mL\x07\x02\xe2\
+\xf7\x17\xc9\x04\xdc.j\xeeg\xafb\x7f\xe5`Q\xbd\
+~\xf4\x18\x93#)\x13\x22c\xa1\x8f\xb2\xb62\x1f\x8e\
+\xa1`\x00\x7f+}S\x01\x04\xc9(Wm\xa5\x00\xc4\
+AU\xeb\xff\xe9\xb5_\xf7\xd1\xc8\xae\xa2\x16.\x96\xec\
+\x83\x93\x9b\x8eq\xdc\x8e/\x1acr\xe8\xec\x17\x01\x01\
+\xa0I\x8doT\xf7O\xee>\xc6\xd4\x9f\x96\xc3r\x83\
+1\xb6~\xc9%\x86\xf8\xf0\x15\x189<j\x8c\xe3v\
+\xf9\xe51\x8e\xff\xfe\xe3cL\xe2u\x1f\xcd\xba~:\
+5\x89\xe9\xf3[Z\x02\x11\x1d\xda\x9d9\xc6\xf1u\xce\
+\x1ac\xca\xe80p\xc4p\xf4y\xfed>\xff\x97\xa7\
+\x8d\x0f\xe0K_`\x99\xa6\xdb\xac\x22\x85\xfb\x0f\xac*\
+\xcc\xbb\xb7\x8e1e\x16\x9c\x07\x08\xa2u\xf8\xd9\x95\xf2\
+W\xb5\xb6\xcei\xc4\xe3\xcex\xc226ud\x17\x0e\
+\xeac.N\x19\xd2\xfd_\x8c\xb1edO\xde7F\
+\x98\x057\x9c\x02\x0e\xb5\xcd\x1c\xb9\x9f\x0eE\xf4\xc5\xc9\
+\xe8j\x0b\xc7\xe1\xf1y\x9f:\xc6\x94\x19G\xe5T\xa3\
+\xb9\xcb\xeb\xa7\x8dU\x01\x8fj\x81e\x12\x128\x94f\
+\x05{`_Rc\xeev\x8ac\x82\x09\xf0\x95cL\
+\x0e2\x80\x87\xc8\x19\x8d\x11\x01\x12\xc3\xec\xa2#\xde\xd2\
+\xc4\xd7\xeabE1\x94\x11\x0ee\xbe2\x9b\xd6\x15C\
+\xe1ycL\xe7\x0a\x10E\x9d]\xad4j \x95\xd8\
+?\x19cj\x7f\xc7\xbeh;\xc5\xb1\x06$\x08\xc0\x12\
+\xc0U\xed\xa1@V\x09N\x181U\xab\xaf}\x96\xf6\
+\x8d\xba\x19<)\x0c\x22\xf3\xd83\x07\x1c\xcbd\xda\x0b\
+\xb8\xf9\xfeel\x00\x89\xe7\x96\x09\xa5\x82\x0f\x80QC\
+~\xef\xb4)%jG\x04\x0cc\xc4\xbe\xb1\xff0^\
+\xf4\xf1Vr\x11`\xf1\x8co\x0b\xf0\xea\xc2\xed\x99\x16\
+\xd4\xde\xa1\x1d\xf2\xc2\x88\x85\xddw[\xbf\xa2\xc2s|\
+\x04\xa6\x11\x03\xc4\xf0\xa9\x0c\xacR\xac\xa7\x8e1\xad\xb3\
+\xe7v^\x02\x98\x1e\xbet\x8ci~d\xd80n\xde\
+;\xc6d7\x05\xaa=\x00\x00(\xa3r\x03\x8aP\xd6\
+\xe30\xd7\xba\x09|i\xda(\x99\x22F\xe8\xfd\x04\xb2\
+\x01p\x01\x0b\x05x\xa0\xc0\xb3\x93\xce+\xc7HW\x0e\
+\x8e<F\x81\x8czT\xda\x8bbODQ\xa6\x05#\
+\xe0\xe7/\xdc.\xb6\x00E\xed-\x05\x12\x80E\xa5S\
+\x8dBI\x0cN`\xaf\xbbOe\xcc}nL\x0am\
+\xfc\xd2\xfd\x82\x18\xa1\xf3\xbc\xbf\xcf\x18\x9b\xdd\xa9v\xb4\
+\xfc\x12\x0e\xac\xd7\xe3\xbf\xa1\x0c\x07P\x00pV\x00,\
+\x83\x9by/\xff\x82\xff\x060\x93\xd1\x13\x98\xf6\x8c\x98\
+\x00\x085\x5c@+\x80\xb9\x7f\x00w\x99f%\x86\xf1\
+\xf7v\xff{\x8c\xc9O\xc2\x5c\x04\xfc\xe9\x86\x80\xc1\xc3\
+>\xbb?\x88\xf5\x11\xcf\xf3<\xec\x05\x8d\x05\xfe\xa1\x12\
+\xbb_\x5c\xc6\x06h\x03\x048\xf82g\xda\xc8\xa2\x9a\
+_\xb0\xfa\xc5\x185\xfb\x8f\x8c1\xbd/\xa6\x8a\xf7\x8f\
+?`\xbd\x00a%JHL\x93Z\xba\xfd\xa8t\xc2\
+\xbd!\x80\xe7G\x02V0\x19\xba\xf8\x99\x00\x08#+\
+\x0c\xb5z}\x8c#mUSZX\xcf\xaf\xb4\x8f_\
+\xa9d\xc0=\xa9\xdb\x17J\xbf\x80Q\x97\x22\x8c\xaa0\
+zh\xdc\xc8D\x02\x1e\x8b\xe9C\xc4\x0f\xf0/\xb0\x11\
+(\x03\xa8\x04>\xf17+P\xc4\x8cp\xff\x09\xcc\x00\
+t\xbdk\x13\xbb\xc9\x0fT\xd2\x12\xff\xb7\x98\x86\xee/\
+\xcc\x91\xd8\xb1\x02\xd2\xc4)\x9e\xb3\xf7\x81\xb7\x9f\x00@\
+\xe9\xaeS\xfb\x05\xa0\xe2\x1c\x13%\xc5\xd42\xdf2\xc5\
+^_\xc0\xd7D\x17\xcbo\xef\x14s\xa5P4\x17\x00\
+w\x17\x17 [\xcf\x8f\x94\x7f{\xe1.f=\x10o\
+\xb5\xf1\xf5\xb3\xfbH\x9bi\xfez\xef\xd6\xd0\xdb\x96\x03\
+\x861\xdb\xc4\x8f\xde\xdf\xf3\x89O\xdcS^\x97}2\
+O\x1d\xd0\xf0\xdf\xf9\x85\xb4\x0c\xcc\x8b\xcf%\x9e\xb2\xff\
+<o\x17\x03\xf4\xfa\x9e\xe3\xac\xea\x82\xb6\xdac\x80\x98\
+@\xbf\x95\x16\xf4n5\xe5\xefk\xe3\xcc\xbf\xf0\xfc\x9e\
+\x83?g\xfe\xbc\x1f\xc0\x01\xc0\x82\xa1C\xbb\x06\xc33\
+\xf6\xed\xf0=c\x8ci\x160\xcb`\x9a\x88Y\xe4\xe0\
+\xcc\xd4\x1c\x5cb\xa2\xf2[\x08@\xc0%\x97\xd0\xee\xc2\
+\xfd\xed?\x96\x03\xf0o\x93\x03\x8b\x01@|E\xc6~\
+\xbc\xcee\xa6\x9aB\x0e\xdb0/\xbf3-\xd4p\x03\
+\x1f\x1eG\x82:\xe4\xa7\xa7\x05\xb0\x01z{\x08?;\
+\x00]\x5c\xc2A\x12\xd8\xef\x96\x10\xa3\x00\x11\x14\xb4\xaa\
+\xcd\xec\x17'\x06\xc5\xdc\x97\xfa\xcfbH\xaf7\xd5(\
+\xa2.\xd9\x901\xc0\xa5:\x9e\x0bk\xf7%cL\xd4\
+o\xed\xd9\x04\xb4\x09\xd8NC\x94\x1c\x08@\x03\xca\x8d\
+\xfe\xbf\xdf\x12\xca<\xca\xb0\x8d\x1c\xe4\xa82:\xa8\xb3\
+/\x1ec\xda\x1f.&5\xf5\xb9\xd8\xea\xfd\x88rq\
+\x90d\xc6\x88\x951\x90\x0d\x01\xee}PedN\x1e\
+1\xc6\xf1\xe2}\xed\x18KM\xe2J!\xbe\xee\xfa<\
+\xfb\xdf\xd8?{\xff\xec\xe5\xef\xd6\x83t\x9dltT\
+^\x0e?\xca\xcc\xe5\xa2\xb6\x1c \xa0(\xea\xa8`w\
+X\x03\x88c\xb8\xbdf\x14\x88\xc6|{9\xfe+\x92\
+\xfc\xccd<\x1f\x12\xb1\xa4\xcb\x8dq|\x9eG\xef\x1f\
+\xb5\x7f\xd4\xf1\xb9\x9fy\xf2\xac\x93gm\xf3\xb9\xbf\xff\
+\x18S\xd7\x85t\x09(*\xa1\x8c\xa7\x9aI\xfb\xcc\xbf\
+\xcbL\xe6\xa2\xdd\xfd\xf5\xee\x15\xbbWl\xed*K=\
+\xfe\x07W`e\xf7\xfa\xdd\x1bvC\xe5\xf8\xa7\xc6\x98\
+\x0e~\xfa(\xd3<8\xad\xbf,\x87\x9a\x1a9\xf11\
+\x14\xec\x5cTE\xd9\xd4w8\xa5\x18\xbbW\xee\xfe\xd7\
+\xc2hx\xe81\xdcx\xe8\xb2\xae\xab\xa1{U\xd5\x14\
+\xaf\x22n1h\xc7\xa0z\xad5d\xe0\xecc\xb5\xc2\
+.<\x0e\xacZp\xa5\x17\x02\xa1K\x85\xf1\xf3\xfe\x00\
+n[;\xabu\x7f\x0bh\x00M\xfe\xbb\x8b\xd4~d\
+\xe0]\xf4\xec\x89\x7f\xef\x149\xe7]?rT\xda\x94\
+TUW\x0a\x94b\xf6\xa2\x89T\x15\xc0C|\xcd\xbe\
+Uc\xea\x8b#G,,\x94d\xaf\xab\xcf}\x95\x0e\
+\x01\xf0\x96\xaf)\xe3&\xc3\xa1!\xec)\xc7\x00\x00 \
+\x00IDAT\x9d\x98\xcc\xa7\x80\x91\xe8!\xd1+Z\
+\x06\xfa?\xc7Q\xac\xf6_i\x97W\x81\x99\xfd\x92\xc0\
+\x8eXg\x01\x89\x18.J\x92h\x04\x08\xd4\x12x\xef\
+\xfen\x8cI\x8b\x84\xa3\x8ea\xa0\xa6\xdfyi\x19\xef\
+\xd3j\xd7\xf5\x0f\xd7]A\xe0\x8a\x09\x90\xc0[`^\
+\xcc#%:\x1f\x89=F\x05\xbdN\x1c\xe50N\xca\
+\x91=\xf7\x18>\x9c\xbb86W]\x1c\x1b\xa2w\x80\
+\x14\xea\xea(\xc9\x02\x15\x94`\x00\x10q\xb9\xdf\x1cc\
+\x02\xc2\x014\x98\x1f\xde\x17\x85[@\x9b\x9a\xedb\x5c\
+\xa4$\xab\x98`OY5N\xca\xf1s\xef\x86\x8a]\
+\x19\xdb\x00>%\xea\xa6v\x11\xc0b~\x04\x0aD\xeb\
+0\x1d\x94fE\xdc\x0e#\xad\xfa\xbb'p\xacs\xca\
+.\x098\x88\xe6q\xd0h\x0c\xa8\x19\xf7\xef\x98\x10\x80\
+,\x0c\x14\x81\x00q$j\xe5(\xa8\xa9\xc1\xac\xfb,\
+\x81\xfei\xfd\x9a15\x1e\xba2\xc7\xaa+B\x18\x1e\
+\x87\xef\x1bc\x02\xe0\x04h\xfc\x8e0H\xdc\x17\x98\x00\
+\xfb\x9b\x8f1\x9d\x0f\x19Ov\x86\xea3FBj\x98\
+\x8b\xb9#\xa0\xd2\xad\xc2\xfb\xb5Z\xda\xea\x12 \xf0\xce\
+z{\xdf\xfa{\xddF\xa8\xd0\xbb\xef\x01z\x00\x92\xdc\
+W\x15\xc0\xd8\x7f\xd7\x1fc\x12-S\x0a\x882\xabm\
+\x96\x92\x09\xa2|\x029\xf71{\xe0}\x05rJ\xa2\
+\x1a\x85\x1a\xe5\xbc\xdal\xea\x0a\x82R\x0d &\x96\x8a\
+\xe1\xe0\xfe\x09P\xc0\xbe\xd6~\xbc^\xfc8@\x8b@\
+\x1f\xb0\xabd*]\x84$j\xaa\xad-\xf1\xd4\x07\xa5\
+\xa4P\x80\x03pt\x1f\x01z|\x018e\xc8\xfd\xbe\
+\x80\xbfw\x03\xf0y\xc3p\x18\xcd\x85\x97\xf6\xc2\x8f\x1f\
+\xb2\xca\x0b\xa0\xfc\x9dK\x97!\xa53\x11\xd9,@\x1a\
+p\x82q\x0d\xa0\xec\xa2\xcf\x80j\x01.;\xc2\xdf\x0e\
+\x93r\xf7\xfbcL\xcc\x0b\x0c)\xf3\xeas\xc8X\xda\
+\xf7\xadt\xb5\xfcG\x8c<\x09(\xfe\x81\xfd\xde\x03-\
+\xcf\xc3\xce\xb3O\xd1L*\xa0\x07#\x85\x1d\xb1\xaf\xdc\
+'\xfc\x01\xff\xde\x80\x8a\x0a\xbc:\x10\xe0y\x01\x00\xbe\
+\xffs\x95\xce^\xb8ma\xcbP\xd7w~<&\x82\
+\x80\xd4s\x8bc\xc4\x03\xbe0\x09\xbc\x8e\xf7cW\xec\
+\x1f\xf6\xbf\x89\xc8U\x82\xe2\xe2\x98\x03\x02jm\xff$\
+<\xf9\xf3~\xaf\xfbY\xe6\xc9=-\x0e\xc1Ds\x1e\
+:C\xc1\x7f\x17x{~\xaf\xd7\xdb\x0eJ8\xd3\xfa\
+\xf2\xfe\xd6\xc1\xb9\xf7\xf9\xfb>h\x00\xcc\x22\x82?k\
+O\xb8?0\xc40\xe6\xbc\x9f\xf8\x86_\x0b\xe0!Z\
+\x1a\xed\xa5\xdd\x9b\xc6\xd8\xee\xe9*\xed\xc6\x9c\xc8\xfb\x96\
+\x18\xa7\xd7\xf3\xbc\xf6\x9b}\xe9\xf9\x00<\xe2U\xe7\x22\
+\xcc\xb8S\xfa\x22v\xaan\x05\xc0\x02{\x13~\xf9%\
+\xc7\xbb!5\xfe\xfd\x12KU\xb3\x0a\xf4u#|p\
+\x9aX\x88\xc8\xc7\x16Wi\xcb\xb8w\xad\x01\x19\xc7Q\
+\x9bw\xeb\xed\x22\xd8\xfd\xca\x18\xd3\x856\x8b\xe1|v\
+Z0\x06\xe5m\xa9\xb9\xb6\xf1\xe2\xd0\x16\xf3@\x9b\xaa\
+\xb3\x8e\xe3\xda\x13\x10\xd1\xd5!\xc7\xb4\xbegB\xea\x94\
+&p\x8c\xbfdi\x90\xb6Mp.\x96Z\xa0\xe1\x06\
+|\xd1\xe4\xb8\xc9d\xa6\xddUe\xae\xffu\x8c\x89\xf2\
+\xa7F\xe8\x8e\xab\x03\xb3\xfb\xe8\xee#\xbb\x8fL\x81P\
+\xa8\xe5\x05\x140\xdcqH\xca\xf1\xe9]\x00d\x86e\
+& L\x02M\xc0\x0e\x83\xe4\xb9\xb5\x13z\xf9\xea\xf8\
+V\xcd\x0ef\x02@!\x19\xb8B\xf0!\xda.VH\
+\xaa\x03\x15\x95\xfbe\xb7|p\x11\xd1Y\xd5\xed1\x14\
+\x22\xd6%3]\xa5\x11\xbf\x9d\xf6M\x1f\x1dc\xebW\
+\xbd{\xe6\x18\x1b\xc5\xb5\x1c\xe7\xd4\xdeW\x0d\x96\x1aC\
+\x99\xbb\xd4H\xee\xce]\x19\x04U\xd3x\xc1\x18\x1b\xb3\
+\xa0j\x90\x89=}\xf9\x18\x1b\xd2\xbd\xff\xfe\xfd\xc3\xf7\
+\x0f\x9f.lm\xaa\xbel\x8c\xeds\xef\xbf|\x8c\xc9\
+A\xa2\xbe\x9cvy\x95\xd1J\xfb,\xb5\x9b'\xdf4\
+\xc6\xf1\xf7>4\xc6\x94\xc1c\xf8\xd5\xf8p\xac\x01G\
+\xf6\xa7v\x81\x11\xd3;\xfe\xd7\x85*\x0a\x98\x90\x19E\
+\xb5-\xed\x85O\x87\x02y\xc3\xc3\xe7,\x19$\xfd\xc1\
+\xa9\x14s\x189<\xe9\xd2P\x06\xfc\xb51|\x1c\xd9\
+\xd8\x9dcp\xbb\x9e7\x17\xfa{b\xb8\xdf\x17J\xbc\
+\x8c\xb1\x8b\x1b\xb5^\x89H^\xaf\xa8\xd4wM@\xb4\
+\x8f%\x02\x10\xf4\xf69\xf6%C\xe9\x02\xe95\x5c\x1c\
+K\xed\xd5h'0\xbc^W\x09\x8a\xf5 :\x94\xc0\
+z\xf7\xaa1&-\x95dh\xf6\xcf\x1dc:7\xda\
+Q&\xf0\xab\x8b\x8f\xe3l\x9e\x05\xe2\x1cU\x0e\xbe6\
+v\x80\xa4Pow?=\xc6\xc6h)\x95~\xa2\x88\
+\x8f[\xc6F!\x93i\xfd\x891&f\x03G3\xfd\
+i\xeb\xf3\xbbx\xcc\xa3v`\xd4\xb7u\x9b@\x15\x96\
+\xc9\xd3\x8e/m\x99\xd4\xda\x97\xc6\x02\xc0Qi\xd4\x8b\
+\x0f\x7f\xb2h\x10h\xefv\x83\x00V\xf6\x1d @F\
+[\xc6\x85\xc6\x0d\xea\xba\xcc\xaaL\x17`\xe6\x8b\xd7\x8b\
+\xf7x\x0a\x16\xf5\xdcrL9\xe6(\x9b.R\xfb+\
+\xe7\xa3\x1c\x0c\xc0\x83\xfd\xc61\xb1/tG\xf8\xea1\
+6\xe6Q\x05\xda?<\xc6D\xa1&\x1a\x08(q\x8f\
+\x10\xfd\x94\x11\xa6)\xc1q\x91\xe9f\xf79f\xb44\
+t\xe5I\xa6\xad\xba\x14\xb8\xb7\xa3\x12_\x9f\x07\x00F\
+\xd4\xb4\x8b/\x02\x048\x1e\xec|\xa8\xd0\x02.\x0c\xac\
+\xd2\x84\xc8=_vO\x065\xa5@\xd6\xb7D\x0c}\
+^\xeb\x87\x91\x02\x10\x03\x00\x10\xbdC\x89\xe7\xf8\xe9o\
+\x0f\xa8H\x86\xbf\x981\x80v\xc0\x9e\xcc\xb0{T\xe9\
+\x09\x11@\x8c\x12\xf3\xcc\xeeq\xc0\x89\x9a%\xf0\x22\xb6\
+v\xd8\x8d1e49r\x98O\xeeq%\x19\xeeg\
+L\x97\xd8\x9d\x9a_\x81i\x1c\xdf\x0a\xbc\xf9A\xce\xb9\
+u\xa1\xceO\xdb\xa2u\x8d\xa9\xf5\xe1\xf8K\xa4H\x94\
+\xf0;\xd8\x0b\x81\x806\x9aj\xdb\x9d\x17@\x91\xf3\x10\
+;R\xda(M\xc5\xbc\x02\x7fmgu\xcd@\xd5\xe6\
+\xefq\xb4s/\xb1[5\x8f\xfcO\x9a8\xe9\x86P\
+\xc0\xbe\xcf\xcd\xdf\x91\x09\xa7E3J\x1e\xffj*U\
+\x94\xc0\xf2\xbe(\xe7D/\x1f6\xc6\xc4\x84cot\
+\x1b\xa0\x99b?\xe9v\xc0\xaf\x96\xf9\x94\xf1\x93\x99\xc6\
+\x84t?Y\x17\xbf\x0f8wo\xa5\xd4o\xf7\x82\xdd\
+\x1f\xee^0\xd9\x13\x9a\x15\x00Q\x897\x7fo\xbf\x10\
+\x13\x0b\x93\xafD\x0e1\xd0\x04\xfe4Q\x04\xc2\x09|\
+\x01\x8d\x05\x8c\xf5L\xab\xc0\x1a\xf3\x0b\xd0\x04\xd8s~\
+\x00\x9c\xec\x97@\xd9\xb9B\x9dg\xb7dp\xd9_\x0c\
+=\x99\xd0\xfb\x8c1\xdd\xeb\x98\xb72\xa9J\x8b\xd8\x11\
+\xafg\xdfbd\x00&h\x01\xd8\x8f\x9d\x22\xcf\x1e\xb3\
+\x9b\x98\x0c^\xd7\xf9\xf0{\xf6\x95\xd2\x05L\x09\xf7Q\
+\xcf\x10\xf7\xf6\xe5\xbd\xd6\xdf\xfb\xf0w\xba\xa8h\x07\x00\
+\xf8\xff\xadk\xcc\x85\xda\xa3\x9f?\x01\xa9\xf6co/\
+(\x8er\x1f\xf4\x92\x09_\x18_s<y\x89\x8b\x10\
+5\xf4\xdf}>\xaf\xcbn\x02dtM\xe8\x80\x8e\xfb\
+\xd9\xefw\xc0\x06\xf0`>\xd8;\xcfk\x1e\xdd\x83\x00\
+eL(\xf7\x91y\xee\xed\xa8\xed\xf3<\xf7\xee\xd7\xc6\
+X\x12v\xc71\xfd}\xf7Cu\xb3\x90\xc8\xe4wX\
+\x1f\xf3\x0d`\xe8%*>\x87\x12\xee0\xbbNU\xad\
+{\xda\xfcUF\xdf\x82\xc8\xec\xaa%\x98E\x18>\xd8\
+\x16\x90(\xd1\x15[\x7fR\xb5C\xe7O\x0e\xf2\xa0\xbc\
+\xdf:\x01\xde\x1db\x18\xef\x1a\x0a\xeb7&Cv\x0c\
+\x98F\xf8\xb1\x04 \xc3=\xb8\xffE\xb43\x82 \xd1\
+(\x10(\x0c\x82\xd73\xb2\x81>69\xd0.P\xa2\
+H\xc3!y\xfbD-\x1e\xcb6m\xa4\xc5l\x5c3\
+\x8e\xdfY\x13\x2292,\xe7\xa46\xf6\x81\x93\xc8\xd9\
+\xa04?m\xca\xfc\xeb+\x1e\xb1\x1dj\xb4U#\xa9\
+\xcd\xde_\xee^\xba{\xe9$\x82\xa6=\xde\x9f\xa7\x16\
+\xea\xd7s\xf1Q\xc5\x85\xd8\x12y\x10XA\x8e8d\
+\x9f\x13dJ\xa0\xce\xd1u\x80ch\x89\xc4\xd4\xc1\xf3\
+\xfbj\xb1\x04\xf0\x10)\x81\xfb\xad\xd6\xc0\xbf\x10w%\
+\x022\x04\x02%\x86L\x0d#\xc7\xfc\xd9\xd1\x22\x00\x5c\
+\xbc&\x0e\xf6{\xd7\x03S}\xc1\xa3V\x8ejl\xf9\
++\xd3\x18J\xcb\xe1\x8b\xc6\xd82\xf7\x87[F4\xef\
+~\xbb\xfb\xee\xee;!\xf0\xad\x9d\xe3\xe1\xd2\x87K\x1d\
+.5\xcdG\xdeo\xff\xa7c,m\xec\x8ec\x0b\xa0\
+\xf6??\xc6\x16\x00\xed\xef0\xc6\xf1\xfb\x7f\xdd\xff\xd0\
+~r,\x8f\xd7\xe5\x92\x81\xaf\x8b^\xff\xdd\x00\x19\xbb\
+\xb7\x8c1\x89p\x01\xc2\xbem\x19\xd5F\x07\xb5\xb4\xd4\
+{\xd5L^e\x8c\xc9Pf\xffW\x86\x14\x857\xff\
+\xbe\xfb\x871\x96\xf7Y\x1d\x1c\x00\xc5]\x0fw9\xdc\
+e\x02rd\x86\x01\x17o\x0e\x05\xef.\xeb\xef\x1d~\
+\xee\xf0\xb4\xa1\xfe~r\xb71&\x07\xc7\xbe\xd3\x960\
+\x0eE\x89[>y\x15\x9d+\x83\x0c\x88q\xd1\xbb\x00\
+\x89x\x11C\xc2\xf0\x81\xd8\x13\xcbK\xe0/\x13V\x01\
+\xd1m\x13\x089\xf7.0\x14@*\xe6~\x9f!\xd7\
+\x06\x8d*\xab@R\x0d(`\xcb\x05\xe9\xf3\xca`A\
+\x94\xd9\x19\xf3)\xf0\x90\xf9w\xd1P\xd1Vj\x14\xb1\
+\xc2\x9a/Z\x052v\x1c\x03bF\x09<h\x1dp\
+\xa8\xd5:\xef\x9e6\xc6\xd4\x0d\xc3y\xe4\xc0rPQ\
+j\x9d\xcbd\x961\x0a\x0e\x7f0\xc6$\x8a(\xc3\xe9\
+\x82\xc2L@\xf1\xd6\xcd\xc2|(]H\xb7\x91\xea\xbf\
+M\xb5[\x1bM@\xc5_\x8e1i\x12\x00D\x07\x93\
+\xe4U\x93c\xcc\x016\x1f\x80\x80h\x16T\xa0\x8dB\
+\xef\x1c\xfa\x9c\x1c9*\xe4\xbf\xb7\xce;\xcd\x8e\xdd\x13\
+\xc7\x98\x1c\x05\xeb\xaaF\xd9}\x06@EY\xe5\x90\x03\
+N\x89\x87\x9a?\xfb[m=\xcd\x92\x04<\xce]\x89\
+w\xc9\xc4r\xa8dt|\x0e\x0c-T}\x8c\xb5\xe7\
+\xadZ#\x05\xd0\x10o\xa3y@U\xf89cl\x80\
+Le\xc80\xcd\x04\x9c\xd6\x93#\xea;\x15\x7f\x80\x92\
+\xbe\xed\x18)^\xc7\xdf\x03\x90B\xc5.\x06\x8an\x14\
+\x80\xee\xb41*q8@\x10\xd5~\x00\xa4{\xcfw\
+\x89\x84{\x8d1\x05 \x1c7\x80\x0e\xb16Z!\x00\
+4\xc0\xe2\x17\x8dqz\x09C%\x140-\x00\x902\
+\x8d\x80\x1evX&W\x17\x83\xf4\xb7/&Z\xc48\
+\x8b\xf1c\x7fa\xe2(A\x0c\x90Um\xf9\xf8\x1d)\
+A(\xd1\xca\x00\xdd\x87?\x19c\x03f\x0e\xdf<\xc6\
+\x14\x80\x0ap\xf3<\xc5\xb0\x01\xc4`T\xf0\xff\xd8\xd3\
+\xf4\x91\xae\xc0U\x09S4\x11j\xbf\x02\x1a\x95b\xd8\
+\xbf(\xbf\xe6KI\x10\xe6\x85R&\x81_\x02\xe0\x9a\
+O\x89\x16~\x9a}\xc8\x1f\x14\xc8r\x801F\x94\xb2\
+\xb97\xf9\xb7\x1cj\xa5\x08)%\xa9@#%H\x15\
+ b\xe8\x048\xefT\xe6\x02\x8c\x04\x9eD\x9di\xce\
+(M\x03\x14\xf0\xcb\xf8u\xfc\x04\xa2\xabI\x00\x14\xc0\
+%\xa0\xe8\xd4\xe3\xcf4 R@\x000\xfc\x9d1&\
+\x0d\x9b\x94\xe8T\xa9\x9es\xae\xa4\x03\xd0\x9e\xf59\xfc\
+\xd71& B\xdbo\xeb\x86Yf\xff\x0b\x5c1p\
+\x94\x8e\xa0\xd6\x03r\x95\x9c\xd2f\xb0\xee\x0dp,\x11\
+W\x01\x1e;\x88I\x05xc\x7f\x05b\xee\x7f\xfb\xc2\
+\xfc\xb8W\xcc\x9f{\xbd\x03\x09\xad\xf6\xbf\x02x\xcf\xd5\
+D\xb6OS\x95\xef5\xe1\x98\x0e>\x9f\xfb\x85\x1f\xe4\
+\xbe\xec\x9f\xd3}\xeby\x04\x8a\x80\x15\xeb\xef\x0b\x00\x22\
+@\xf4\xbd\x07\xd6\x98\xc6\x98\x9f\xe6\xcb\xfe7\x9f\x02n\
+~\x84\xe7\xe9]\x1cz\x97/\x01\xa8\xff\xee\x5c\x9a\xf7\
+\x1e\xf8\xfb\xde\xdb^\xfa=_\xd6\x9b_\x07\x08\xea\x09\
+\x09\xcfg\xbe\xac\xbf\xe7\xe8\x8c\x0a\xef/a\xa0\xa4\xc9\
+z\x03\x0c\xcc\x9fD\x88\xe7\xb4\x1e\xec\x1d\xa0\x0a#S\
+\xe2\x16\xa0\xc8\x9e\x89\x9b\xac\xa3\xf9\x02,\xb1o\xe6\xd3\
+\xfc\x89\xb7\xedW\xfb\xae\x8b@\xb2\xd7I\xc4\x9cB\xbd\
+/\x87tV\xcb\xbf\xdc\xd4\xf6\xcf\x07\x1dn\xd7\xdf\x86\
+\xca\xf8\xb2I\xf5\x18\x05~\x5c'\xff\x94\x9a\xc3\x87\x06\
+\x81\xfd\xd2I\xc4O-\xaa6L\xc3\xcd\xbc\xf3$\xa6\
+\x93\x8c\xe7B5\xfc\xd6\xc9Q\xa0Q\xf0\xe9%\xd7r\
+\xd1\xaa\xfa\x97\x9b\xba\x13\xc8x\x9aP\xc8<\x83\xe9\xef\
+\x94*8\x98\x10\xd8\xcb.\x1d\xcfk>v'\xbbu\
+\xe2\x8f\xee\xe8\x226\x15\xa4y\xff7\xc7\xf1\x8a\x5c\x90\
+W\xde\x02\xfd\xca h3\xf6\xe1\xe3\xf8\xd0F\x09\xde\
+\xfdQ\x18\x00o\xcd\xc1\xfe\xe3P\xff\x1f\x16G]`\
++\x83\xfd{\xb9`\x05\x96\x18\x08i\x97S\xeb\xe7K\
+\xa0\xcePe>\x16\xc6\xc3Y\xd3AF\xb1\xb4\xbe\x9e\
+\x17\xd5$\x99\x92B\x8a\x89\x04\xba(\xd4\xfc\xbcqE\
+L\x8fn\xca\xedv\xb7\x9b\xa82\x0c\x90\x03\x91>\xdb\
+U\xd3\xe7\xc0Q\x19\x7fY\xc4\xa2\x1c$\x9f7\xb5\xab\
+c\x1dv'\x8b\x8a\xe8j\xa8\x5c \x025H\xf4\xe5\
+\xc7\xd8\xbaR\xec\xff\xea8^\xb69\x9c\xbbw\x1f\xc7\
+\xbb\xa6\xda\xaf\x0f\xc7A\xa3\xf6\xb5\xb5\x7f[\x0f\xb6\x8c\
+\xb2\x8b.\x99\x85\x0b^5\xc6\x22\x22\xb7\x22\xd6\xa1,\
+V`u\xbfUsA`Sm1\xcd#$W\xa0\
+#\xf3\xf2\xa4d\xac>\x96\xae\x0c?\xb6\xaa\x0f\x97H\
+\x916w\xa1\x82\xee\xffd\x8c\xc9\xb01\x94\x0cG\xce\
+Ue\x5c\xed\x1f\x99\xa5\x0f\x05\xf9M\x0d\xe6R\xf8\xb2\
+_\x1c\xe1u\x1f\xbf,5q\x90q\x01\xa0\xcc\xb7\x0b\
+\x98\xa3\x82\xda)\xc0v\xa1=+\xed\xb2\x88\x9e(]\
+\xa0M\x11\xa0\x09\x93\xa3.b\x0e\x1e\xcd\x82/\xcc9\
+g\xd0e\x9c]\x8c\xf6\xb5@W\xe0\xc1p\xfb\x8e:\
+\xd8\x02\xd9\xa28'C[\x88j\xaf\xbd\xd3v\xcb9\
+\xb5\x0fe\xfa\x89B\xa9\xa9M{.@\xc3\xe1\xf3\xc7\
+\xd8\x80\xc1:'\xd6K-u2\xb5e\xc8e\xa88\
+\x16\xc9\xfca\xa6T\x97\x8a8\x98D\xb2N\xab\x91\xe3\
+p\xa2\xa4q@d\xea\x04\x98.B\x19.\x01\x0b\xd1\
+.\xcf-\x03w\xad1\x96\x92\x9c\xe3\x98\x02d\xaf\xcf\
+\xae\xa2\xa4+Q\xc0\x10\xb2\x1e\xad-T\x05RD\x07\
+#\xae\xd5U\x82\xab='m\x02\xfbA\xa0, P\
+\xb3\x1cJ\xff\xe1\x0b\xc68\xfe\xf7_X\xc6F\xf5N\
+ _\xa5'T\xa61\x85\xb4CD1\x06\xa08\xb7\
+2\xae(\xf1i\xfb\xb7\xdc>\x1f\xdfDTGO\x8c\
+\xd1\x15C`)\xc3T\x80\x06\xcd\x0c\x0eBj\xfb\xab\
+\xc4\x81\x03\xc7\x0e%\xa0.{\x91\xd7\xaf\xb6d\xdac\
+\xaa\xd1e\x97\xdd\xa3\xec%F\x95\x1a\xea\x04H\xbb\xab\
+\x8f19\xbe\xce\x15 \x22\xcc(\x9a(\x05\xa0\x87q\
+U\xb5\xeeJ\x00d\xf61\xf4\xd2\xed\xa1jY\xa9y\
+\x03\x9ah\x9a\xb8\xb7^\xb9\x8a\xaaV\x1fr%9)\
+Q9\xad_4\xca\xb4@\xde\xfd\xed\xbc\x12\xe1\xec\x0e\
+\xac\xd2\xbd\x88\xb3\x96V\x04\xbb\xa0d\x0be\x97\x8a\xb8\
+\xfd\x16&\xe2\xe13cL\xef\xaf$\xadev\x0fw\
+\x18c\x02\x06P\xe1\xdd\xdbJ6\xd4>\xa3\xc8\xcbL\
+r\x80\xd3\x1e\xb6J\x1d\xfc=\xf5s\x00\xbd\xfd\xc3\xb1\
+e\xd7\x946\xe9\xbeCC\x81\x080&C\x02\xe6j\
+\x0f\x98\xf3T\xda7>\x07\x7f\xb3\x97\xbeiol\x9f\
+\x03\xd6\xd8\x858\xce\x87\xbf\x1cc\xb2\x0f\xf6\x0d\xffE\
+\x00\xcc\x1fT\xe2\xc2\xee\xe9n\xd34\xa6JS\x838\
+\x9f@\x8d?\xa3\x14\x00\xb0Ds\xe41cL\xf7\xba\
+Zp\xc0\x92\xcf\xc5\x1f%J\x8a*/C\xac\xad#\
+@G\xe6\x0f\x83\xca=\xe4\x1eh\xa2\xac\xf5:\x02j\
+\x80MDBKl\x92v\xca,\xd2\xfd\xce\xe9\xf5\x7f\
+\xe0\x8c\x87\x8f\x12\xa8\xc3\x9f\x1d\xfe|\x01\x88\x05,\xec\
+t\x12\x15\x12w\x80\x0e\x80q\x05\x1c\xec%\xa0\xc7\xf9\
+s\xff\xcb\xa0\xca\xb8\xfb.\xe0\x02H\xd0@P2e\
+_\xb8_\x04\x5c\x98\xc2\xcem\xf7\x8b\x88\xec\x12\xc5\xcc\
+\xe7\xd8]{\x8c\x16\x1fL\x22z5\x9f\x12\x18-`\
+/?\x03e_@*\xd0\xb4\x1f\xbb\xc8-\xff\xc2\xfb\
+\x08\xfc\xfd\x9e}\xef\xbb@O\xa0\xebs\x0b\xd4\xf9\xd5\
+>/?\x9d\xb8%\x00@\x00-\xf3\xefsy\x1d\x80\
+\xb7s\xd8\x03\xcf\xde}\xa0\x07\xd4]D\xaf\x8b\xe4)\
+\xd9\xb9\xc4\x18\x93\xfdl\x22\xe9\xf5{\xdat\xd2\xd0\xe1\
+\xd7x\xff6\x8f5O\x9e\x83\xbf\x08\x18h\x0c\x00\xdd\
+\xc20\x9c\xab{\x98\xd7\xe1\x8f\xf66\xbf\xecd\xef\xfe\
+\xe6\xef\xf8W\xe6\x87\x9d:o\x8cI\xbc\xb6'\x88\xba\
+\xd8}/mwN\xcd\xaf}\xeeg\xcf\x09\xc0\x8d\x1d\
+\xc0\xc0;\xb58\x96\xd7\x8d\xc3r\xd7-\x90\xad\x8d3\
+\xde\xee\x03\x13\xe5\xca\x86'\xd62\xfa\x8c~Y\xd4\xcd\
+\x7fi\xd3\x0aX\xfc\xb9\x93\xc9\xe0\x07PXDPn\
+5!\xf52d1\x8c\xe50~\xd52\xb6\x05c\xa0\
+.Y\xb5\xbe+\xe2a\x22\xba(\xce\xfb\x16\x12\xf1\xa6\
+b\xcd0\xf7\xda\x97\xb9V\xf4$\x7f\xf7\xde\x18\xe6\xb7\
+N\x1bc\xb8\xf7W_\x11\xf0%CB\xf4p\xb8\xc9\
+#\x83\xf2\xf7\xc7\xf1\xba\xadm]\xd5\xa6\xden\x0d\x88\
+w\x0f\x1e\x8d\xe6\x8e\xdf\xff|\x8cE\x8du\x11\x03\xaa\
+\xcc\x97\xe7\x93\xb1\x0d\x02J5\x5cF\xaa\x9e\x97\x81\xb3\
+\x81\xaf\x94\x8c\xc6g\xb2a\xfc^S\x07=\xbc'%\
+\x1f\x8fMM\x97\xf94\x1f6\x9c\x03/\x80T\xdb\xa7\
+\x86\x15e\xca\x05~\xa5PTd\x80\xce\xc9\x85/\xb0\
+\xf4\xfaj\xfaP\x9d\x01A.L\x06\x87Ae\xf0t\
+\x11xh\x1c\xde\x94\x00\xd4\x85\xa0\x7f3`\xc8\x058\
+\x02\xa6\xffh\xb5\xd6\xdf\x92}\xf5\xce)\xb3J\xed\xf5\
+'\x0fOX\xa8\x83WM\xed.\xb5\xe9\xb7e\x1fQ\
+\x19\xee\xedl\x9e\x15\x111\x9f\x83\xc3\x04(1O.\
+~5\xd4\x18.\xe6\x07e\xf7\x0d1\xfc\xd7L\xcd\xfc\
+\xdd\xc7\xd8(\xb0\xa8l\xfb7\xee\xdf\xb0\x7f\xc3\xe2p\
+\xadTp\xfbB&\xe3\x1ak\x86\xd2\xba\x94#\x7f\xbd\
+1\xa6\xd2\x16\x81}\x02\xe6\xca\x18?6\xea\xd1\x1c\xd7\
+0\x00v\xaf\x1ecr\xc8\x19(\x81:5j\xcc\x8c\
+\xf4S'\x82T\xb5\xc02E\xb17'\xf7\x1dc\x02\
+\x16\x5c\x98T\xef/\x1d\xbb\xf4\xddy\xdf\xff\x1c\xc7Q\
+\xed\xbcLN3\xb4\xa5\xf2/\xe3\x22`Q\xf3\xee\xc2\
+\x93\x91\x92\xf1\x97\x19\x9f\xed\xca\x94y\xa9\xcc\xdc\xcc\x18\
+\xba\xd6D\x1d\xf6\xf9Q\x5cQY9\x1c\xff8\xc6\x04\
+\xa8p\xa0\xd9=\x01fk\x9b\xb6\x7f\xd3\x18\x1b\xf0q\
+\xf2\xf81\xa6\x1ab\x883M\x0f\x08\xb3y\xb1^j\
+\x14\xbd\xaf\x7fOf\xbb\x1c95\xaeOXKt*\
+\x90\x8d\x06@9\xe2\xe6!\x81F\x01\x08\x1c\x02\xc0\x1e\
+\xbb\xc5\xfe\xd0H\xb0^\x02*%Q\x1cv\x80\xb0L\
+6\x8a+\xf165\xf1cV^\x18j\xf7\xe3&\xd1\
+:\x17l\x98S\xa3\x99\xe6h\xa7)p.\x07I\xb7\
+\x82\xbb\x8f1e\xecCa\xafZ=\x14V\x99\xa1\x88\
+\xbbU{\xb5\x88D\xee\x1e7\xc6dOte\xc1\x9c\
+z\xdb\xd1\x8a\xbcm\xd2\xb8\xb8\xf1\x18\x13\xb0\x90}u\
+\xb8\xfa\x18S-0fV\xd6u\xff\x811&M\x03\
+m+\x05\xb6q\x04N\x9e2\xc6\xe6\xd0\x02\xb00\xa4\
+j_\x13q\xcb\xfa\x16 \xa6\xbb\x8c\xee#\xb1k%\
+.\xe6\x1eQ\xfb\x9b\xf3^\x9a\x22\x09\x00\x8b\x8a\x1d?\
+\x81\xe3\xbb\xbb\xf9\x18[\xbb\xd6\x12ido\x05R\xc9\
+8\xd6~1/\xc4\x04\x03\xc4U\x1fu~\x83R\x0b\
+\xa2l\x00\xae\x94\xd6T\xb7\x0e\x22\x80\x1c\xff\xdc\x83%\
+\xb2\x86\xb9 \x83\xdb\xd4\xbe\x0b\x90\xc1h B+\xc0\
+\x1c\x8c\xb3\xff=\x9do%_\xb4s\x22\x1e[@\x17\
+?H \x8b\xc9\xc0a\x0e\xc5\xbfJ\xe5\xd8\xa3\xdco\
+%\xfa\xfb\xeeb\x18\xae\xfd\xe2\x1f9\xc6\x04\x88h\xbb\
+\xa7]\xa8D\xcfW/c\xcbD[g\x80\x03&\x8e\
+\xf9\x22z\x18\xe6\x0fm\x9e\x02\x86#\xa2\x08\x10\xab\x92\
+\x04\x00Z\xfc\xc1\x12\xedJW\x22\xcc\x86*]\x10\xb8\
+`\xc0i\x83\xd5E\x99\xed?v \xef\x8f\x9a\x0f\x00\
+<\xdc\xe8p\xc3\xc3\x8d\x16\xe6\xe9\xd7.Z\x042\xc7\
+\xe6\xd3\xfcIh8\x0f\x18+\xfc^\x99w\x0cK\xf7\
+\x0cJ/u~\xc0\x18\x06\x8e\xf6\xa8\x02|\xedU\x05\
+\x12\xf6\x81\xf3\xd0\xda\x8c\x95_\x04\xd0\x16\xe8*\xdd\xf3\
+\xf7J\xb3\xd8a\xfe\xbd\xcf\xf3G\x87?^J\xcdr\
+\x8eO\xa3\xac\xe7\x9e\xd9]y\x8cm\x9d\x01\x15\x18-\
+\x00\xac\xc3%\xc7\x98\x02\x11\x1a\x02\x98\x80M\x15_\x80\
+\x5c\xfb\x11\xa0\x8f\x01\xc6O\xf4\xdc]\x03\x8b\x18^\xde\
+\xa7\x98/\x18&\x18\x95\x02G\xf3\xc0\x8f\xb4o\x04\x90\
+\x18x\xde\x9f\xbf\xe790\x19\x04\xfe\x9dz\xde\xc5\xfc\
+\xbc\x1ef\x03\xd1M\xf71?\xa5\xd7\xce\xcb\xf0b\xd6\
+:\x1f\x02D\x00\x80\x84f\xd7\x04\xe8L\x09\x81\xab\x00\
+\x9d?\x0a8\x13\x0f\x98_~\x02\xbf\xa8\xff\xbd\xfd\xe1\
+g\x99\xe8\xff\x18c\xfa\x1c\xba:\xf0\x03}\xb5\xee:\
+5?~\xcf\x7f7\x7f\xde\xaf\x07\xc2\x80\x00?\xf3C\
+\x004\xe6\xcd\x7f\x07\xec\x01\xa4\xac\x97\xff.\x1ei\xda\
+\x0c5?\xec\x838\x13\x13F\xfbL\xf3\xf7\xdd\xcb8\
+cw\xf91&\xbf\xd5\xf3\x01\xce0\xf1\xad\x83}i\
+\xbe;\x10a\xbe\xbdO~ow\xa91\xa6\x84p\xec\
+\xe0\xa9\xe5z\xbb\xce\x14@\xa3\xd2[`\x07\xb2\xab\x10\
+\x0e\xb7\xf1\xaf\xe3 \xbf$\x8e\xde\xa0^\xde\xf98\xee\
+2\x19,\x8e\xe3U\xc6\x98D\x04M\xd4\xc0\x03o\x18\
+\xc7\xfb\xfa\x9b\x18`\x89\x05\xbez\xd1I?\xbdV\xc4\
+s\xf9\x82\x88;\x80D\x9cl \x19]\x01\xa6\xd71\
+\xa1Ta\xd5Zq8G\x05\xeb\x83S[y\xdb\x8b\
+h\xe7\xa5\x16\xf0_\xc6\x98\xd4\xe2\xb5\x7f\x92\xf9\xa0b\
+\xfc=\xa1\xbc&sXHz6D]\xe8(\xfd(\
+U6\x84\xcc\xa7@\x11\xf2\x0dQ\x87\xd0\xdf{\xed?\
+^\xe2<oO\x8d\xe7#\xd7\x8c\xe4\xee\x19cL\x1b\
+\x95A\x84\x80kk\xa3&\x14u\xf6j1\xac\x0e\x9e\
+\x80\xd3\x81\xd0\xef\xf4\xa5\x09\x08^\x1e\x06\xc6y1\xb0\
+?\x18Q-\x86\xd1z8\xd0\x90H\xeb\x18\xaa\x5c\x89\
+\x9e\x05\xf1+*\xa0\xf7u\x80<g\x18\x18\x0b\xf3\xe2\
+\xc3\x13\xc5iPk\xef\x91\x0b\xf2u\xd3\xc5\x15j\xf7\
+\xfeN\xc7q\xe7)3\x19\xff\xe18\x1bk\xadW\x02\
+\xaeB\xeeB\xe9\xa5zZT_\xd4Q\x01I\xef\xa3\
+\xdaDTJ5\xfd\xdb\xc7X2l\xf7\x1d\xea\xe1\xc7\
+0|\xcd\xe0R\xd3M\x06\xee\xe0\xef\x7f<\x0e\x83@\
+\xf6z\x17\xae\x89=\xee\xfd5\x90E\x85UBb\x9d\
+\xd5\x8c\xa6=^9\x92\xc4\x18_\xba\x96\xa6\x1c\xee\x1c\
+1\xb7+\xee\xae\xb0\xbb\xc2\xd4g\xfaZ\xa1@\xdb\xbf\
+\x80\x17]\x16\xb4\x9bt\x91\xdf~\x8c) \xf5>\x02\
+\xf3\xd4t\xcb\xf4\x17\xd5\x97\x03\xfbKcL\xfd\xeb\xaf\
+\x90\xe7\xd1&\xea\xb3\xa5\xa2\xbc\xeeS\xfb\xe1$\x0e\x8f\
+\x0bRFV\xe9\x00*\xa7@\x1c\xe5W\x00\xdb\x91d\
+\x94g\xfd\x821;\xb4\xa3S\x93O\x0c\x8b\x83\xf3\xcb\
+\xcb8\xe3\xe4?\x8f\xb1\xcdoej\x13\x88U\xed.\
+\x8a/\xc7\x80\xbak\x98/\x18 \xbb\x7f\x1ac\xab\x99\
+\xafL\xbd\x00\x07u\xb7#\xf7(\x992\x95\x98BJ\
+\x0fd \xb4E\xb3_\xd5\xe8\xa2\xba\xa2r7\x86\x80\
+\xe7+\xca\xa8\xcc*\x07>\xafG\x03\xa0\xec\x99\xc0\xbf\
+k\x05\xe8\x8a\xe0\x22\x96\xf9>{\x8c\xcd\x8e\x15 0\
+\xec\xf6\xd9[\xa6nw\xee\x18\x9b\xbax\x9d'\xe7\x00\
+\xf5W&\xdf\xc5\xcf\xd1F\x91\xe6\xe8\x9b\x07\x7f\xaf4\
+G\xc9\xc4o\x8e1\xed3\xa2[D\xdb\xfe\xdb\xe1q\
+Kfp\xb4\xed\xbc\xe3\x04\xd0\xa5\xa6\xbb\xec>\xa6\x0e\
+G'\x19\xed\xfd3\xc7\xd8\x02\xe4*\x81P*\xf5\xf5\
+cL\xa2]2\xf8\xd9\xd7'\xb7\x1b\xe3\xb8\x1d~t\
+\x8c\xa9\xbbE\xba\x19\x14\xb5=%\x01\xa5U\x90\x00\xe7\
+BL\xbe\xbbL\xedEs\x1e\xa9\x81\x17\x10\xf0Kc\
+D\xe3\xe7\x0b7\x06C\xd9yj\xed2\x93\x02\xc1h\
+\x14U&\x14\xc3\x8e\xe3%\xc3\x1e\x0d\x89\x0adG\x82\
+\xe2\x1eS\xed;\xc7\x13\xc0\x07`P:\x13\xc6N\xb5\
+\x0f\x03\x10c\x1eahe\xfd\xab\x1d\xa4\x8c9\x8d\x0e\
+5\xf9_2\xc6\xb4\xafs\xaf\xd7}\x91}\xb3\xbf\xcc\
+\x18\xc7\xd7\xfb\xe71&{\x96\x12\x87\x02\x101/\x04\
+\x94J\xe7\xd8+\x80njsK\xbbC\xb7\x02\xfb\x83\
+\xe6K2\xf7U\xcb\xec\x1e\xe6O\xe4\xf3+\x1d(M\
+&\x01<`L7\x14L\x1b\xda$\x18\x98\x9e3\x01\
+\xd7\xe1\xf3\xc6\x98~\x9f\x1f\x10\x8d\x1a\x22\x99\xb4\x12\xca\
+_\xc0h\xa0uA\x13 Z\x14\xa5\xe1\x00`\x22\x92\
+\xc8\xcf\x91X\xc2X\xe30\x03\xb0\xb4\xf9}C\xee\xb1\
+\xf3V&\xa3R\x9d\x02\xf4\xd9M\xb5\xf0\x09\xa40V\
+\xaa\x14\x15 \xa1\x9b\x89\xd2\x87\x00\x0a\x98_\xc5\xf0\xc0\
+h\xb4\x8e\x80U\x81)\x11>\x09:\xc0\x04G\x85\xbd\
+\xa2&.\x80\xc4\xc8\xf9\xe216\xf1\xc9:\x9f\x02E\
+\x81\xb7{Gi\x9f\xc4\x85\x1ae\x22\x8d\xee}\xfb\x9f\
+\x1f\xc1?A\xb1\x17h\x0a\xb0\xcc\xa7x\xa2\x05\xc2\xa7\
+1\x18\x04\xc4\xbe\x13U\x95\x98l\x01\xcfi\xfed\x18\
+\x03\x15\x17\xf8}\xc0\x0bqL\x098\x00< \xfd\xbc\
+1N?\xe7\xf5\xf7\x80\x0c\xf7\x92\xcf\xd3E\x84\x01\xc6\
+\xee\x93\x00\x08\x1d`,\x7f\xa3g\xaa[\x80[Z\x09\
+\x98\x12~O\x5c\xd3\xdb\xea\xf5\x9a\xff\xdeF\x9d\x7f\xd3\
+\xbb\x97\xf1'\xfd\xdd\xc5h\x02\x94\x7f\x85\x92\x0fPw\
+\xce\xcc\x87@W\xe0\xdaK\xbb\xed\xe7\xb9\x8d\xfb\xcch\
+\xb0\xbe\x9e\xbbk\x0f\xf8\x1c\xbdM\xa0\x84.-8\xeb\
+d\xbe\xf9\xe9\xe20\xf3g\xde\xda\xbe\xa8\xd7\xed\x1a)\
+\xde\xc7\xf9\x05L\x8b\x1fSrW\x09E~\x958U\
+|\xec\xbc\x89\xcf\xbb6BgpX\x1f\xffn>1\
+\xa9\x93\xb8=\xdcm\x8c\xe1\xa6\x8em\xf4\x8eL\xf0\x1d\
+\xa6\x0d\xf1\x86%\x07\xb9m\x5c\x07r\xd4\x0e\xfe\xe5\x94\
+9\x22\xf6\x91\xcc\x10\x11\xb2\xe5\xef_\x7f\x11b\x05\x02\
+\x0c\x1fD\xe9\x00\x06\xe7X\x98\x7f\x0d\x05\xe3\xf2\x99\xe8\
+7M\x08\x9d\x05\x19\xc7\xec_\xa7\xd7\x198\xe7\x9fF\
+\xa4\xed9\xdb\xcfK\x1e\xea\x87\x034\xdc`2\x982\
+Q.F\x0e\xdb\xd0\xe4\xd9o\xd4\xfa\xc5\x11\xbe\xdb\xe4\
+\x88\xa9\x8d\x0f\xf2\x5c\xb5]\x1c\xc6\x18\xe8\xddK\xc6\x98\
+DR8\xe0=\xf0\xe3\xd8\xb90l`\x1b0j\xb2\
+\xbb\x0f\x8e\xb1P\xc7W\xd1\xa8\x1b\xae\x99\x84\xe3\xa6\x5c\
+\xd7\xeb&\x01,P\xb7C\xe5\xdc\xddp\xedSN\xec\
+\xb1\x0c6\x06\x06G\xca<\xda@\xe6\xd9\xcf6<\xea\
+%D\x0bB\xed\xf7\xac\x13d\xfe\xbf\x87\xaa\x97\x12\x8b\
+\xbap\xee\x19\x80\x03pCLH\xc0f\x1f\xa2\xec\x12\
+\x85\xfa\x9fc,\xe22k_\xe1;\x8f1\xa9\x8a\x0f\
+w\xe5\x86[\xf7\x8a\xcaH\xc70\x16\xc5\xf6\xbacL\
+\xed\xf9\x5cLCE\xff\x07\xe2\x08\xff\xcd$f\xf7\x8a\
+ \xe2Tq#NW\x8c\x8fd\xa2\x8b\xa2O,R\
+\xad\xf3[\x1aUK\x89\x80\x0c\x12D>@\xd1\xee\x89\
+\xd1\x0eh\xfdb\x8b\xa2\x1c1\xc23~7\xfb\x8e\xa6\
+\xc5s#\x9ad\x9f?\x22\x99\xc9\x5c\x94E\x11\x95\xa1\
+\xb0\x1f\x13PT&\xfd\x0aq\x08\x04\xaeY'\x99\xcc\
+j\xb3\x98\xcf\xab\xfda\xbd/\xf1\xa0{\x05pH\x00\
+IDH&\x89\xc3\xab\x0b\xc6\xe1\xc1c,\x22=_\
+y\xf8\xca\xcd\x81- -\x81\x0bq\xbb2\x94\x1cM\
+\xfb\xe7Z1\xa4\xa72\xaf.,\xf6\x8c#)\x80\xa4\
+\xb2J\x0c\xd5\x85e\xff\xd8\xff\xce\xad\x8b\xdeE#\xc3\
+'\xb0\xd5\xee\x88\x8a|\xf6\x17\xb1\xc7r\xf4\xbc.\x03\
+N\xfd\x1feTfA_k\xed\xc8\xa8,\xa7=\xe1\
+\xe1\x83c\x04\x80\xbd\xf3\xb4\x9f\xd3\xee\xa8\xd6e+m\
+Y\xd7\xd7\x85\x05\xa8\xa1\x89\xa1\xc6\x15\x13\x84\x98\x9f\x8b\
+V\xcd?\xbb\xedy\xb3\xae\x98\x0a\x05Tr,Q;\
+1v\xe2\xa8\xa2\xe0\x17\x15VI\x0c{(\x93%C\
+\xe8\xf99\x12\xb4Td\x12\x83\xec\x17\xe3J\x0d\xb1\xc0\
+R\x1b\xae\xa8\xf5\x16s\x09\xa5\x9e\x03\x8e\x9a?\x18\x5c\
+\x0f\x9e\xf6\x91\x8cF2\xf6\xd5\xc6\xab\xabQ\x03\x90\x22\
+\xa6W\xed\xc0\x00#D\x0e\x9f\x7f\x9c\x85\xe7/\x19\xb4\
+5 =\xb3u1\xd0\xae4%\x08\x05\xbc\x10\xb9;\
+\x19cz\xdew\x8d1\xd5\xd4+\xb1\xf3~\x18\x0b\x80\
+T\xf7\x80\x8c(\xa0\xc6\xeba\xe6\x014s\xcfU\xa9\
+\x8f6\x99\x80s\xef\x83\xf2k\x9f(\xcd\xb2\x9f\xac/\
+\xc7\x0e\x00/P\x22\x0a\x86\x8a\x9fy.\xb1\xd2h\xa4\
+\x14\x15\x99&\x8e\x84\x05\xc6YJ\x0e\xca\xcer(\xe3\
+\x07(\xcd+\x00A\x09\x84\xfb\x8d\x03&P\xa4\x19\xf0\
+\xb81\xa6\xcf)\xf3\x7f\x9d1\xa6\xe7C\x81\x16\xe0\x00\
+(\xc2\xc4\x02\x1c\x9f|\xf5\x18\xd3z\xd9W2\x9a\x00\
+w\x0e'\x87\x9a\xa3\xec\xbf\xc7\xee\x14\xd5_&?\x00\
+\x94..\x80\x82j\xdb\x85\x89\x03\xf8p?c\xb4\xe9\
+\x0fo\x9e\xad\x13 g0A\x9f>\x9d\xcb\x94\x84\xd5\
+\xb9\x17\xb8\xf1\xb7R\x92\xe8\x5cb\x1a`\x86\xd0D\xa9\
+L.\xed\x0a@\x02\x15\x7f\xfbB@\xae\xfd\xad\xdas\
+\x94u\xfb\x8c\xff\xca\xee\xca\xc8nm\x97W\x7f\xe4\x8d\
+\xc9\x98*\xe9p\xde1\xdf\x94\x9e\x11\x17\xd4\x86P\xa9\
+ \xed\x9dh\xb2\x94\xff\x08\x18\x90\xf1\xa7\xf5\x10FP\
+e i0\xb0\xd3\xe6\x95_\x0d@\x01\x10\xb0?\xa8\
+\xe5\xee\x17\xfb\xc2\xbd\xa7K\xcc-\xc7\x982\x89\xfc-\
+\x01\xc6}\xd7DD\x01\xc4\xee=\x01\x85n\x22\xc4B\
+\x05R\xec3-\x11\x19L\xfbT\xf7\x04\x01\xbd\xe7E\
+\xf5\x17\x10\xf7Zy\x19w\xef\xd3\xc5\xf9\xac\x9f\x80\xd4\
+\xfa\xba\x7f\xd8\x1b\x816\xa6\x1e\xfb\x12\xbb\xa8\x04\xb12\
+\xce\xd6\x01@*\xb0\x13@\xfa\xce\xff5O\xecP\xef\
+?\xaf\xe4\xd8\xf9\x95\xd0\xec\x9a\x02]L\xd0\xbd\x95\xfb\
+\xbe\xf6\x83\xf5s\xef\xb8\xa7\xac{/i\xf8P\xeb\x8e\
+d\xbd\xf9\x9b\xf6\x91\xc0\x9c\xbd\xe4\xe7\x8b\x9f\x00\xa9\x9f\
+\x1d\xe3\x22D\xd4\xed?\x80\x8b\xf5\xf1\xbe>\x9f\x9f\xed\
+\x0f\xcf\xcb\xce\x89\x1f/N$\x100\xd2\x81\x05\x8c\x18\
+\xe2\x94\xe6\xd1:\x01b\xcc\x9b\xf7\xb7\x7f}\xf7\x1cM\
+<\x100T\xe2\xd0\xbd\xdb\x1c{o\x1f\xb0\x9f\xee[\
+\xeb\xed\xde\xc5l\x93\x88b\x87\x95\x18\xf0\xd7\xc5G\xf6\
+yo\xa7\x0c a\x9f\xf9}\xee\xe5\xdcg\xa7\xaa\xc6\
+\x90\xa37\xa6\xe3\xed\xad\x0d\xc7[&Us*\xd1\xe3\
+\xdf\xff1\x81\xc4\x17M\xfd\xe9\x89tAh\xc7\xf4]\
+!\xb7\xff\xac\x8aLt\xf0\xc3K\xf5\xf5z` d\
+\xff8\x05*\x02Q\xdf-\xc8\xf8\x98\x9f\x986\xf8\xfb\
+\x97\x06`\x9b\xf8\x1f\x87I\x9b\xaa\x91W8g\x9a\x08\
+\x081\xf5\xf7\xb7\x1d\xc7[\xa7\xb6w\xc4\x00\x1f\xb2\x8c\
+\xedb\x94\xb9\x97Y\x83\xd4s|, \xf1\xbfo\x0d\
+\xf5\x94\x9a\xaf\x85\xb7p\x1co\x8e\x89\xcf\x07\x18pa\
+\x00 \x9e\xbdR7\x88{\x1d\xe7d\x05\x0a E6\
+`2a\x87\x1b\x1d>\xf7\xf0\xb9K\x1b\x97%p+\
+\x11\xb8P@\xd4pR}\xaf\xf9\xecb\x13\xd6\xb5\xf7\
+\xcd\xe4\xf8@6\x19j\x142}\xb1}\x99\x1f\x9fG\
+\xc0&\xd3\x83\x22\x9e\x0b\xb0J \x22>#\xa36x\
+&\x83i2\x9a\xda,mm\xfe-\x07\x9c!\xa6\x05\
+\xa0\xc6r\x88x|(\xaa\xd2_\x9cy\x7f\xf6$.\
+\x15\xd1\xc9\xa2\x8cF\x9dy\xff\xbc1\xb6@\xfe\xe4~\
+cL\x22Q\xbf5\xc6\xe4\xc8\xdc>5\x83\x0c\x0c\x84\
+\xf7AiK\xf8w1\xf4)!\xa8\x80E\xcd\xb9\xfd\
+\xf7\xcf\xa9\xad\x8ccV\xff.3\xaef\x16\x02\xfd\xb2\
+\xcc\xf3}\xd2~\xe8\x9c\x5ch2/\x1cZ\x81\xa8\x80\
+\xfd&)\xbdI\x7fr\xe2w\xf6\x0b\xc7g\xf7\xba1\
+\x8e\x9f\xff\x91'\x8f:y\xd4TS\x8b9\xc3Q$\
+\x82$\x03\x96\xcc\xec\xc9\x15\xc6\x984+\xbek\x19\x05\
+x\x94\x08[\x1ca\x86oY\x86\xc3\xd4G\x9e\x98\x9b\
+\x8b\xff\x03\xb9\x10\xcfMi\xcam\x8f\x8e\xfcm'q\
+6\x88-\x00\xc5\xef\xdd=\x81>\x83\x88z\xce\xa0c\
+p\x5c\x9c\x1ao/I\xe2`\xba\x009\xdc\xa9m\x03\
+\x14\x9a\xc7\xa2.+\x85\xc1@\xf0:j\xd9\xd58s\
+(e\xe8Q\xb1]\xa0qP\x0eO\x1dc\xb2\x97\xec\
+`(\xe5\xe5\x18;w\x8d\x11Q\x81\x86\x0b\xd6\xeb\x03\
+\x80\xd3W\xbc(\xda\xd4\xccQ\xb7\x03TV\x80\xa3\x0b\
+Bj\xdc*\xb3\x1cM\x8c\xa2\xbc\xbb\x7f\xb4\x15\x92Q\
+\xcc\x85W\xb5\xf7j\xd98\xc0\xee)%\x0b\x02R\xfd\
+\xc6\xdd7\xc4L\x01\xa02\x802z\x00\x19\xf3\x80j\
++pE\x81g\x8f\xa8\x9dc\xde8\x87\xa99/q\
+Jb\x8e2\xc5j1\xf5\xe7\x06`\xc9\x0c\xe8\x1b\x1e\
+\xb1\xb2R\xd5O\x86t\xc0b\x03\x18\xab\x9a\xef\xec\x0f\
+\x19k\xda\x0b\xa5\x91\x10\xad\x0d\xebu\xf2mcl\x00\
+\xb0\xe7+\x95|\xf3 \xc3E\xbb\x03\xf0\xc9nd\x7f\
+U;C\x22i\xda\xc0*m@\xb5\x8e\x83G\xfc\xa8\
+\xdaE\x861Q5\xe8\xa8\xe5\xceW\x1c&5\xddu\
+\x9fh\xc7GLL\x7fs\xeb\xae\xad\xedm\xc7\x98\xfc\
+\x13\xf7jS{.\xad\x07]R\x88\xb7]c\x8c\x09\
+\x90WZ\x91\xee/\xa7\x95\xc8y\x1e\x01\xb8\xdax\x0c\
+\x88\x88@\x09\xcc\xab\xfb@\xe6\xb5\xf6\x19f \x07\xd5\
+\xb9\xcc\xbc\x17`\xe5\xdf9~\xf6\xa3\xfb4%f\x95\
+q\xb5\xefi\x5cD4\xb7\xba9\xd0\xe6\xe0\xd0\xba\xa7\
+\xdd\xf3\xfc?\xeb\x86\xca\x8er\x0f\xb0\xe0\x90\xdb\xdf2\
+\xa9\x18(\xf1\xab\xf6\x1f\x1ac\xd2\xc8\xf1~J^R\
+\x82U\x00\x13\x8d\xc03H\xe9\x00\x00 \x00IDA\
+T\x1a5\xfb\x98\x92\x02<~I\xd7\x1e\x0a\xf3\xaa\xba\
+\xa7H\xb8\x98?\x01\x1aFA\x98\x19\x05\xb8+A\xb1\
+\x7f\xdc\xef\x01vJT\x8f\xf6\x00\xc7_i\x0b`$\
+\xf6\xa6D\xa0\xf9m\xc4-u\xed\x91@\xc1(\xd1V\
+\x8cz\xb8\xf5\x01\x00\x08\x8ch\x0e(\x01\x10@\x0b\xb0\
+\x04\x12=1\xc7\xee\x01\x8a\xdd\x0b\x02\x8dh4T\xa0\
+\x048\xc7\xb0\xf1{\x12\x0b\x80BL\x82\x94\x0eV\x82\
+P@\x84\xd2\x8f*\x0dhh%\x00\x15 {N\xeb\
+* rO\xa3\xb8\x0bT\x05n\xc4^\xd3F\x19\xc3\
+\xac\x80k\x00\x06`\x09`\x98\x92\x93\x02\xac\x01\xdf\x80\
+\x0b\xeb,\xc0\xed\xb5\xfa42\x94\x04\xf8\xdc\xeey~\
+\x0c\xff\xb9\xb5\xc3.-\x00\x81\xa7s\xee\xf3\x0a\xb4\xbd\
+\x9f\xd7\xf1<Eam\x99|\x00\x80\xdf\xb3?\xec\x1f\
+T}\x81\xbe\xbf\xe3\xdf\xf4\xb6\x80\x80\xa5\xae\x15\xd03\
+\xd2\x00\x00\xfb\xa5\xab\xf0{?_\x80\x07\x9f\x83\xdd\xee\
+m\x02\xbb\xb6\x80\x84g\x07\x22\xcc\x93\x7f\x07\x14\xf0#\
+\xbc\x9e8\xa8\xbf\x8f\xee\x1a\xd6\x93_\x19\xbf\xa8\x98X\
+\xe6\xd3=\x9asS\xc0\xbfsDs\xc7\xfd\x02\x08\x00\
+4_m\x8cI\x8b\xc0}\xd3\x99\x13}=\xf8\xe1\xfc\
+\x03\x8c\x5c\x89\xd6\xd8\x8bS\x850|l\x15#Z\xb6\
+\xdf\xdfO\x0e/j\xd8L\xd1y\xfd\xe4X\x8e\x1a\xc9\
+/\x9d2\xdd\xb3\x03{F\x13\x17<5-\xac\x0d\xe8\
+@\x8c\xed\xf0\xf18\x80\xd4#\xdf=\xd5\xda{\x9d\xf1\
+\xd8s-\xc4\xdc\xee\xe2\xb31\x18\xaf\xdd\x1c\xaa\xaa\xfd\
+\xd5G\x1aR=\xa8\xc8\xa36\xff=\xc7\xf1\xeedz\
+_2e\xb0\x86\x1b0T\x98\xef\xb3R\xe9QF+\
+\x93)\xf3kcr\xcc\x93\xa1.\x8a\xf4\x1d\x83\xf8\xa0\
+\xa6j\xef\x15d\xb5\x1c\x0e\x1b\x14B\xb4\xf57_7\
+\xa2\x05\x96\x89\xe0\xa8%P/1&\xe2\x18\x02D\x01\
+\xb7\xc0\x8bxJ6\x806w\xa7\xd5\xde\xd0\x0c\xb0\xd1\
+\x19\x0a}/\xa3\x1e[\xcf\x03\xd9\xb7_\x1c|\x06\xa3\
+\x1fd\x94p\x19\xb1\xa7\x8c1]\x00\xfa\xf4R]\x07\
+\xc4\x9c\x17\xa47\x14\xbde\xd7||B\xe0\xbbj<\
+\xaa\xda\xc8\xc7\xfe\xc1T\xa3Fd\x91H\x94\xfd\xcdq\
+\xd0u\xc2\x05\x96}\xa4O\xf2\xee\xaf\xc7\x98J;n\
+\x13\xca\xa4\xb6BjP\xd5\x1c\xca\xf8?1\xea\xbfT\
+@{?O\xeb\xc5q\xf2\xdf\xff4\xcf{\x8d1\xb6\
+\xcc\xc1\xe1\xeb\xd7Z\xcf\xa2:\x9e\x1d\x07\x85h\xd9\xef\
+\x8d\xb1\xa9\x81\xabiF\x85\xde\x9d?\xc6\xb6\x9fK\x93\
+ \xb5\x8dE\x01\xa6\xd6\xeey|g\xf8\x93QQ{\
+\x0aQW\x1aS%A\x1c\x15T\xda\xf4\x89\xaf\x8b\x94\
+(\xd2\x7f\x8c1\x19\xc4W%\x83\xf4\x92P}\xbf5\
+\xaa\xd7\xd6\x19\x15\x1b\xc5\xf5~\xbb\xafZ(\xb2\x9f\xca\
+\xb9q\xc1X_\x06\x9f\xe3\xc7\xd1\x80hs\x14\xd9\x19\
+\x175\xc0\x8e\xddR\xc3\x86\xc9\xf1+\xab\xc3p\x9c\xdd\
+\x95\xda\xcfAeO\xf5gFQ\xe7 P[F1\
+\xff\x861\x8e\xdf\xef8\xc6q\xfb|\xfd\x18S`*\
+C\x9b\x12\x9f\xaa\xf1\x86\xf8\xb2\x1b\x02G\x0e\xba\x9a[\
+\x01Z\xd7\x18\x08 \x02`D\xb9\xaeR \x9f#\xb5\
+\xab2w\xfa\x9a\xcb\xa4\x16\x92\xde)\x8d\xec\x02G\x14\
+\x85\x18\x85\xde\xba\xb8\x18}\xce&\xf6VvJ\xa0F\
+\xd4\xd29\xf6\xfe2\xff2\xe6\x80*\xe2w\x02j@\
+\x94\x80]\xa0\x8b)\xe5\xe2'\x92\x86b\xcb\x81q\xd1\
+\x03\x141@d\xbad\x0a\xedC\x8e\xbf\xef\xba\x05\x08\
+\x00\x89\xfe\xe9\xcb\xee\xdc\xa0\xe2\x06\xe0\xdc?~\x8c\xcd\
+aV\xebw\xc6\xa3\xcf\xf8\xd1\x85\xd1\xe3\xdc\xa7+G\
+\xd5\x1cr0Q\xf6\x03L\x17C\x22\xfb\xa6\x986\x09\
+4\xaaF\x1e#-%V\x15\xc0\xa2\xca\xca\xfc\x01b\
+\x89Ej\x83&\xc3\x16M\x93\xc3\x03\xc6\xd8\xee\xad\xea\
+\xca\x13\x8d\xa0\xa2\xa0\xcb\xc4\xde{\x8ce\xdf\xbeb\xd9\
+\xb7\x0f9Z\xdb\x87L\xb5\xf9)u:\x5cz\x8c\xe9\
+\xbeU;o>\xf9\x15\xb4?h\x11\x01\xc6\xb5S\xd5\
+\x1d\x84\x08\x15F\x9f\xfbM\xc9\x1a\x91\xce\x06\x9cTW\
+\x8c\xf8%\xfb\x97\x8d1\x95\xaa}$m~\xed\x0f\xfb\
+E@\xc3\xce\x01\xc0\x94\xe6\xb0O\xecXJ\x84\x04\xa4\
+\xc5|\xd3\xae\xf0~cL\xcf\xa7M\x1f\xbbF{\xc0\
+y\x91\xd8P\xe2\x94\xfb\xa3J\xb3\x00\xad\x00)m*\
+9\xe4\x12\x1a\xce\x09\x00[{?\x7f\xa7\x9d\x18\xbfP\
+i\xe55\xc7\x98\x98OJ\x0b$\x1a\x04\xf6^\x8f6\
+K\xceO\xad\x0b\x80G)\x93s\xa7=(\xff\x85V\
+\xc1\x99c\x1c\xbf\xdfd\x8ci>u\x97\x900Q\x8a\
+E4\x8c?\x11\xc0\xa4\xba\xc9\xb8/dp\x01!2\
+\xe3J\x02\xd8e\x0c$\xc0\xcc\x93\x97\xb11\xb4t\x07\
+\xe8\xdd)\xf8\x11\x18\x0e\x98q\x02C\x01\x98}\xcb\xcf\
+\x044\xa9\x8d\xa6]\xd1\xa9\xdd\xd6\xe7\xd0\xda\xec*U\
+\x15\xf8\xd8\xaf\xfc\xb6\x00\x1a\xe5\xdf\x01r\xf8\x0d\x98\x1d\
+\xec\xa8\xfbB@\x8c\x09\xa4\x14\xce\xfe\xd2VM\xc6\xdc\
+\xeb\xc9\xf8\x02\x0a<\xb7\xfb\xd3\xbd\x84\xe1'\xc0\xf3\xfb\
+\x98#\xf6\x8f\xe7\xb3\xef\x00\x12\xfe\xde\xf3\xca0\x0bD\
+Q\xcd\x01s\xbd\x86\xdc\xdf9\xbf\x98YiOX\xfe\
+\x95\xccv\xefV\xd0\xdb\x9f\xb3\x17\xee\xd1N\xa1?\xf3\
+\xc2\x8cH~\xedi\x99y\x9fK\xa0.\xb04O\xe2\
+\x91\xde}\xc2\xfb\xf8=\xfb\xe6\xe2\x80\x01\x81\xb8y\xf0\
+\xfe\xe2\x04\xaf\xd7\xbb\x1a\xb0\xdf>\x87R\x08v\x06@\
+\xd3\x99\x0e\xfcV\xf1\x8cs\xd0\xbb\x16\xd8\xdf\xbe\xfb\xfb\
+\xce\x00u\xae\xed?\xf7\x82\xcf'\x1e\xf63&\xb3\xd2\
+,\x00\xa4\x84\x97v\x9cJ\xb0\x12wVb\x14\xb0\x87\
+\xf1b]:P\xe39\x94NGC\xac\xe6'\xe7\xe0\
+T]\xb4\xc4\xff>\xb0\xe4\xd46\x8a\xca\x9b\x97\x06`\
+[\x06\xf8S\x8bK\xbd\x8at\xfd_\xc9,~\xc1d\
+\x88\xf6\x8b^\xfa\xb6A\xc6\xf4\xed'Cb\xc3\x9e\xb9\
+\x90\x1c\xb7\x9f\xc7\xb6\xb8\xe1t\x10\x94\x10p\xf4P=\
+\x00\x02W[\xaa\xd17\xf1>\x1b\xa6\x19\xb23~r\
+\x19\x9b\x08\x0aJ3\xb5q\x8e\xb3\xf6k\x03\x1f\xb9\xe5\
+D\xc1\xfb\xdeel\xb5o\xc9\xc4V\xad\x19\xc4\x9a\xd8\
+\xcb9\xa9e\x95\xe9\xbdG\x1c\x0e\x8e\xa4\x8c\x08\xaa)\
+\x87\x94A\xebm.\xcc\x8f\x8b\xff\xff\x10v\xe7\xf1\xfb\
+\xedS\xdd\xf8\xcf\xbe\xce\xd7p\xe2\x84c\xaa\xcc2\xcf\
+d(3eH\x08?Cq'\xb7\xe8\xa4\xe9\x8e\x06\
+C\x85R\x87FE\xe6\x84\xcc\xa1\x92\xc8\x98\x88t\x17\
+R\x99B\xc2\x91\x84c\x8a\xd31|\xaf\xeb\xdek\xef\
+\xf5\x5c\xfb}\xd6\xf7|\x7f}\xd6\x1f\xd7\xe33]\xd7\
+\xde\xef\xfd~\xaf\xf1\xb5^\xab#\x05\x04\x96X\x9c\xad\
+;\x92:\x10\xb4\x07\x86\x0c\x19\xfa>\xdf\xb3\xf7\xdc\xd8\
+P\x0e\xb2W\x0e\x93\x0cm\x06\x1a\xc55\xe0\x80\xf8\xbb\
+\xdc\x88\x05!\x15\xe0R\xf46h\x1a\xdaR\xe0\xa0v\
+\xc6\xa4\xa9\xac\x806gF}\x0e\x8f\x96\x1eK$s\
+\xb5\xbe\x02\xd6\xdc\xa7\x0b\x84\xf7\xbe\x1bds\xe9\xb5\x7f\
+\xc0V\x11\x5c*rO\xd9\x14\xf3\xd2\x0b\xf8\x87\xc3\xfe\
+f\x08\x90\xd7q\x08\x9e\x97\xd0\xb0\xcb\xe6\x98\x9c$\xd3\
++6c\x90\xd6$E\xab\x84\x92\xeb\x14xJ\xa4P\
+\xe0\x14\x0c(\xfdm\xd2\xa1M\xc8\x9e\xe9\x05\x87o\x0a\
+\x19X\xb0\x7fr\xad\xc8\xedn\x1f\xb2\xad\xd7\xee\xc1!\
+\xf3\xeb\xd5B\x86\x80_\xef=C\x9e\xec\xd6\x05\xa9~\
+CB\xa8;TL\x00\x9f\x90w=\xbcE\xeae?\
+\xc9\xac\x0b\xe4)&\x95\x0b\x8a\xff\xd3\xb9\xff\x1f\x9a\x01\
+\x94\x9e\xde'$\x9b\xfb\xdd\xd6\x00\xf4\xf0+\xe9H\x83\
+\xc0\xe7\x9c\xf0B\xe2p\x90\x90U\xde<I\xc9\xbe\xe1\
+\xec,\xad\x87O\xac\x15\xdc\xe9jY\xb1a\x00;D\
+\x8cC@\x9f\x80(\xda\x8fo\xc8\x8a\xd8\xb3\xd2\x01\x82\
+\x14zh&\x00ej\xb5\xa8 \xc9\xd2\x13\x0a\x81\x00\
+1#P@\xc6xf\xc8@*j\xff I\xe4\xb0\
+q\x80[\x86<\x86\x80.c@\x9dw\x95y\x88.\
+\x06\xd9\x18/\x09P\xfbO\xa2L\x82\x83\x81\xc9\xfd\xbc\
+\xbfa\xc8\xf0\x1c\xe9/\x106\xd7\xc3`A\xa2\xa8\x84\
+\xddi\x1d\xcfYz\x89\xa3\xab2\x9b\x99|\x99\xf0J\
+p\x08LT\x94\xe8E\xfbSEI%\xfd~YQ\
+\xcd\xd6\x82\x1a\xb7\x86\x0b\xe0\x02!\x83\x1eJ\x07\xa1Z\
+\xb9\x04\x8e\xf6\x87@M\x82E\x8b\x0d(\xa4\xd6\xad\x7f\
+\x0a\x19zO\x05\x9a\x198\xcd\xfbo\x96A\xbfj\xb1\
+J\x92@\xfb\xbcz\xce\xb3G\x19\xa9\xdd\xe1\xda!\xc3\
+zC\xec<!dp8\x12\xc14\xbd)dp\x80\
+\xecGz%I+\xabW\x10B\xe5\xb7C\xb6\x9f\x9b\
+\x22\xb0{g\xc8\xc0\x8db\xdc\x5c\xb2\xf6\xef\xdf\x192\
+\x8c\x1b\xc5\x9d\x80<\xadq=TK^B\xe8k\xdd\
+\x93L\xae\x02\x5c\xa4\x85\xaf\x9d\xf5\xf0k\x97\xa9.K\
+\x22\x7f\xd6\x93\xb3lz\xd18\xbcz\x1e\xc8\x1b\xb7\x84\
+\xf7\xea\x87\x04\x9ep\x1c\x13z\xc5\x90\xc1\xbe\x19\x1f\x87\
+3 \xc9<\xab\xa5)\xed\xb3V\xa2J@\xe4\xd8?\
+\x88\xa9\xe2d\xc8\x02\xc1R\x80\x08=\xf4\xf9\x90\xa12\
+\xcf\xbe\x80d\xd3\xef\xfc5\x09b\x08\x15\x90i\x89\xa9\
+g'\xc2\xed\x95\xb3\xf5y\xe50\xbeM@\xe5\xdck\
+\xd5\xa1\xe7\xe8\xed\xde\x02\x80\xf3\x04\xc7\x07\xe4\x87\xfd\x9a\
+-\x19\x95\xf8\xe6h_8\xed\xca.\x0b\x13\xfc\x84\xbf\
+\xca\xd6\x18\x85\x86\xe4\x861.pzo\xc8P\xb1B\
+\x9a\xf5\xac\x90\xc1\x0f\xe8\xe3 \xb5\x0aH\xf4\x0b\xb8q\
+\x84\xd0_\xf4g\xe0W\xaf\x9f\x88\xbb!\x81r\x0c\xc9\
+\x9e\x00FE\x18y\x1e\x07\x9e\xc3\xce\xc1\xd6\xdad\xba\
+CL\xb5\xba\xdf\xf0\xbe\xec\xbcu\xb2\xbeZr<\x07\
+\xd7\x03\xb9\xe1y\xf0\xcf$z{\x8ft\x87\xbaC\xa8\
+@.\xf5\xb9\xea\xfcO\xd7\xafP$\x80:^\x02\x80\
+\xbd\x85p\x10\xb0@l\xd0\x8f\x10+\xa6\x18h\x89R\
+\x91WY\x17`\xb3\xb7Zj\x90\x14\x0b\xa8\xac_C\
+\x08\x14d\x9f\x9fO\xcfy~*\xaf\xad\x05\xa8\x12\xdb\
+Z\x01!:M\xb3\xd2\xc2\xa2P\xc7\x9e\xb9\x0e\x09U\
+\x01\xbf@\xd2\xfa\x0b\x14;B\xa0%\x02\x8a\x94\xae\x7f\
+\x8e\x80\x9e}\xf3\xda\xfd\x16\x88SH\xc51\x0e\x1b[\
+\xb0\xbd\xf2s\xbc\xbf\xe7\xdc9\x15\xac\xdf\xff\x94\x00\xf0\
+9\x9d\xf3\xaa\xb3\xd6\xb7\x9f\xd7\xf5:\x0f\x9d\x0b\xc0\xb9\
+\x95\xe8\xc2\x19\xe2\xe7\xee\xc3\xf3\x15G\xf2[%2\x9c\
+\x0b\xeb\xe6z\xfc\xdcs\x10O\xf5\xde~\xe7\xa4\x8f\xdb\
+\xe3\x0f\xf8\xf2\xfc\xe9\x0f\xf1\x9f\xf3\xaa\x00\x92d\x9f\x85\
+\x80t\xee$\x0c$\xb8r\x1d*1\xed\xdcX\x7f\xd7\
+\xd9\x13&\x90Z\xfc8$\xbf\xd9\x92td!i\xf8\
+\xdc\x10\xa8whFp\x86>i\x80\xea\xe7\x01\xc6n\
+_\x15V\x8e\xd9:\x8ai}\xb0_\x19 %\x1c\xb9\
+`/\xbf\xe46]\xa0\x02\x02\x1bME,*\xc9\xef\
+\x1f\x16Z/e\xb8\x8d7\xcc@\xf2\x8a\xc3\xc6\xda-\
+&f}\x9f\xb1GB\x02A\x851[\x04\x16\xb6\xe2\
+\x9b\x0f\x06\x89\xc2I\x07xw\xe9\x90\x81\xb5\xdb\x03t\
+\xd0d\xe6\x90\x1d]/d\xa8\xe0K \xa4\x03S\xa4\
+Z\x1c\xd6]\xeb\xf1\xb4~z_\x19r\x1b\x06I\x9f\
+\x16\x82\x9ei\xf2\xe0[\xc6\xaf2\xe1\xc6\xf00@\x1b\
+I\xdc\xfa\xf7\x1d\x22d]\xfb\xc1\xf5<U\x9cAW\
+\x1c\x5c\x8e\x89\xf7\xd3\x9bN1\xf6\xf9\xa3\x0e4\xc82\
+E\xc2\xf0\xe9\xd14\x17<\xa1\x9e\xfbw\x87,\x15\xf7\
+\xb5\xf7\x93\xa1\xd7\x1b\x0f\x8a\xaa2h^\xad\xc0#\xc8\
+\xabn0\x90\xee\x8d\xbdK\x9f\x1b2za^\xde>\
+T\xaa\xf4L~o\xc8p\xfd\xbf\x90\x01\x9e/\x8a[\
+\x06\xfcV\xb9\x1fp6x~\x8d<\xb1\x02\x14\xd0h\
+\xe4W7_!t\xfb)d\x1b\x9fSl\xe5\x09M\
+>\xf1\xa6'\xde\xe4\xc4\x9b\xcc\xdb\xeb\xf1\xbb\xdf\xd9\xcd\
+\xfbvw\x8b\x90\xf9\xf7\xff\x1d2\xf4d\xca\xbc\xaa\xe0\
+H0\x19\xd3iL\xa1\x1eb\x8e\xd8\x1f$\xbb?r\
+\x97$\xf9\x011R\xc1\xdb\xbd#d~\x9fK\x85\x0c\
+dB\xc6=%\x17C\x9dK\xfb\x12\xd4\xd4\xf5}c\
+\x9b?\xfd\xf6\xcc\xec\xaaH\xaaP#_bh%\xe6\
+\xce\xca\xc4\xa3sD\xf1\x83\xb4\xeb\xe5K\xce\x80J\x08\
+H\xc8px\xe8%\x06\xfa\xd5\xe9`H\x8c\x22\x81\xfa\
+\xe9u\xeeyA4\xb1c\xcbH\xfb|\x09<=\x81\
+\x02\x0b\x1c\x10GB6\xe8\xf6t\xf9\x90\xe190x\
+\xce?\x83N\xaf \x03\xcc@\xb1z\xd8%j\x194\
+\xe44\x12z\x12@\xbd\x02\xe0\xff\xd2\xe0\xed_\x1a2\
+\xbf\xff\xf7\x87\xcc\x1f\xfb\xb7![EO\x02l\xfah\
+\xc8\xc0\xa9b\xdc\xa1\x8a\xa3\xfd\xc7qQ\xe9\xa3?\xf4\
+p\x83\xcc\xab\x94i\x810\xde\xca\xbe\x91\xc8r~\xfd\
+\xff\x833\xe1\xf2\x91\xd4\xf3\xa9\x97\x0f\xb7\x0a\xd9 \xaa\
+\x87\xf3\x84\x0c,\xdc\x02G\xe4`\xec\x11}\xe5\xf72\
+\xf4\x19\x80V\xcb\x81\xdei\xffG\xdfk9Ihv\
+\x9d7\x0e\x86\xfd\x99\xc8\x10\xf6\x85\xbeb\xb7\xe8\xa5\xb2\
+7\xb8($*\x93\xec\xa7\x10\x09\xa0\xd5\xc1u\xf2\xe0\
+\x81sC`\x0a\xe2\xddI\x84$\xf0\xb5*\xbc4d\
+\x98\xef.\x81#\x80\xc5\xad\x90\x1c\x14\xa5/\x9cw\xbd\
+\xf5*\xa0Z\x12\xae\x19\xb2!_\x90\xac\x16\x04W \
+\x9d\x0eZ\xb1\xa8s\xa8\xb3\xe5\xa9*\x80\x12\xc1\xf7\x9d\
+\xc3\xdc\xfb\x0eS\x15T\xd0\x9dC\xf6\x0b\xb4\x5ce\x18\
+\xe4?\x13D\xf4\x8e),e\x07\xb5\xae\xe49\xde\xff\
+i\xc8\xb0\x1e*\x9f\x99\xf8\xae\x9e\xf0\xb4;Z\x15 \
+\xe1\xca\xcf\xe0\xe8z\xaeo\xc8\xc4\xc0)\xe9/8\xf7\
+\x02#\x01\x07\xce\x90\xb7'{\xfa\xdf\xa7\xbf\xc21F\
+\x86\xa7U\x93\xde\xf8\xfaB\xa3\xba\x06\xb4\xd7\xcd\x96\xb8\
+\xabg\x02\xff\x9b\x87\x84\x11$\x01\xff\xe0\x01\x8bl\xd0\
+i\xd7/\x91@\x1f#\x7f\x15P\xb9\xfe\x0c\xa4\x8b\x94\
+0\xd7Q\xe0\x5c\x1c0\x02`\x10sH!\x01$H\
+\xb9\xe7\xaa\xd5\x89\xbdT\x11GJ\xaa\x95M\xa22\x11\
+'\xcbT\xa7wm\xef_\xc8\x00\xc8J\xfb\x8a^\xec\
+\xa4j\x12\xaa\x12\xbb\xd9\xa2S\xad@\xec\x97VG\xc8\
+)\x81\x98s\xa1u\x82\x9d\xe3g\xf6\xca\xa4\xf3\xc9\x1f\
+\xa3g\xd8\x17\xe4\x99\xcew\x0f\x0c{\x02\x80\xfde'\
+\x14\xa2\xfc\xdc\xff[\xb7\x8e\x04\xed\xfe\xd1Xhy\xea\
+\xb0\x1f\xf4\xd6\x0b\xa4!\xbe\x8c\xfdt.\xd9;\x811\
+{\x0a\xf9iJ\x80\x84\x80\x8a;\xbb\xe6\xb9X\x17\xd7\
+\xafe\xc14\x15\x09\xf5\x8f\x87\x0c\xe7E@'AA\
+\x8fA\xd2HP8\x7f\x0d\x09P~\x89W=\xe48\
+,\xbc\xafs\xe1\xff!7\xd8\x8f\x0e\xd9\xe7\xf7J\xec\
+\xf8;\xf7\xdd\x136\xbd\x80H\xcf\x0bd\xddg\xff\x9c\
+\xder\xe1U\xdc!n\xf0%\xae\xf0\xf9\x0d\x09\x5cH\
+)\x7f\xe7~\xdb\xb8\xdfJPI\xd4\xd0\x17\xf4\xa2\xfd\
+\xd7+\xf4\xf6\xb1\xc0\xbe'6\x5c\x97}\xa10\xe4\xb9\
+\xf3\x1f\xdc\xb7\xfd\xef\xb5\x7fNG\x80x\x15\x0f\xb1'\
+\xec\x0b;\x9a\x89u\xadG\x90\x01\x85\x00\x91X\xb0.\
+\xf4\x02}\xddI\x18}a\xff\x7fj\xc8\xc6\xedU-\
+\x7f\x19\x8f\x1d\xa9\x03}\x81e\x90\xdc\xfa\xa0\xce\x1c\x1c\
+ \x90J\x068Y\x95\x175y\xcd\xe1 \x87y\xba\
+\xf0\xb0!:\x19\x03\x16R\xbd\x19a\x9e\xbe!Y\xd8\
+/4\xcc{T\xa1\xc5\xee\xa9\xa7\xdfuf\xafv\xf5\
+Z\xa9(\xa9\x80\x9c\xbc\xd0\x97\x9d=\xc0\xdd\x0f\x81_\
+@\xf0\x7f`\xab\x94\x14\xbb/.\x83P\x9f'\x0f\x0b\
+\x09\xca\xc4\xa1S\xb9\xb0.XY\xfb\x9c\xc6\x0ey\xb1\
+AU\xaeT\x82\x12\xc2V\x0a\x88c)\x91\xe0As\
+\xd49:H\x85\x04F\x0c\x91\x0d\xe2\xba\xb1\x1f\xeb\x81\
+\xb4.=`\xa0 zF\xc9\xab\xf5\xb7!\xfd\x9d\xf7\
+Q\xa9\xa0`|\xf9\x7f\x81O\xfb\xfcr|\xb3\xf7j\
+zI\xc8\xb2_V\x07\xe6\x09\x09ET\x09\xd73y\
+\x8f\x84z\xa6\xa3X_\x14:Vr$M\xa0\x7f\x14\
+@\xa4y\xee\x96\x8a\xe4|\xc9\xba~\xdd\xa1\xa2\x10\xf9\
+\xf6?\xdd\xc8\x04kl\xd3\x7f&\xd4\xe8\x19\xd9\xfb\x9e\
+\x01\xe6\xe11!\x03\x82\x01\x19\x911\x8f\xff\x1a\xb2|\
+\xde\xaa\xd08\xa0\x12\x1d\x09I\xe4\xb8[\x17\x09\x87\xfd\
+]\xf6w\xdd\xdfu\x98\xaf\x9e\xbd\xf0*\x8cH\x09\x97\
+\xbb\x0a\x08\xedi+\x89`}.v[\x06\xd0:\xd8\
+\x9f\xf6\x01C sI\xb1\x1dIC\xce\xd1\xd4\x13i\
+\xdc\x1f\x87P\x22\x81\xe3e\x9f\x0a(9N*\xe9I\
+FU\x09\x1e\xfbXe\xfc\xbf\xcbp\xaf\xd7\xa7\x92\xff\
+\xf96\xdf\x97\xa1\xf6J\x01\xf7V\x94\x7fl={9\
+\xbe\x12\xe9\xe1\xe1\x95\xc9Ap\xc1\xbc\x8fw\xa6!\xb5\
+\x1e\xafJ=(q\xc3\xa1\xd4KN\x0fq\x10Lw\
+\xd0k\xe8\xfc\x0b\xc4\xbe|8\xf3p\xe6\x02%]\x03\
+g\xdc\x1e\x9e\x87u\xd2\xfb\x9cz\xa3\xc6\x19\x8d\x9c(\
+#\xf9\x8bu\x07\xb17\xad@\xe6\x99\x83\xc00\xa9\x1c\
+\xe7\x18\xc1j\x19\xc0A\xa2\xd7\xf7K!\xf3~|[\
+\xc8\x86,\xaai\x04\xc8`%\xbe@Q\xe9\x07zc\
+\xe3\xaeX8\x04\xea~\x18f\x0e\xa5\xc4\xa8}\x0b\x12\
+\xae\xd7\xdf<{\x09\x00\x89\x1e\x0e\xa2\xd64\xf6E\x85\
+He)\xa1\xe4\x85\xd4\xe1\x90\xea\x85\xd5\x92\xe1|\xa7\
+\x9e\xac\x16\x0e\xfa\xb7A\xb1\xab\xd2m\x9fi\x0d\xcas\
+^\x1c2H\x8a@\xe4\xd9\xd3\x0e\xb9\x96 \xf2<\x93\
+]\xbe\x12\x85\xf4\xa8\x00\xc9\xfe\xe4@\x22\xaf\xca\x80C\
+/\xfa\xfe\xac\x90\xa1\x82\xa9\x92\xaa\xb2\xc9\x8e@ny\
+\x9f;\x84l\xff/\x11\xb0;#\xe4X\xc4\xd4\x82\x98\
+>\x0c\x0e0\xbbmL\xdcWC\x86\x04P\x8e\xc3;\
+\x9c\x142\x04\x9e \xf5\xfe^o\xa3B\x84\xf1\xc4\x12\
+\x1b\xd9;yx\xd8|\x1d\x0f\x1b\xec\x8b\x04\xad\xb1{\
+\xec\x86\xe7h\x7f\x08XTR\x04\xcc\x99\x18\xd5\xf2w\
+\xb8\xf2\xe1*\x87\xab\x0cS\x19Tt%\x18\xb1\xa3\xdb\
+\xdfZ$$\xc0Tz\xe8_\x01\x19\xfdL\x1f\x0a\xa8\
+\xe9I\xf6\xd6\xff\x09@\x04^\xbf\x9fs\xdb%\x80\xec\
+G\x88G~K\x87\x0c\xc7\xdd\x7fxx\xde\xc8\xed|\
+\xee\xcdsl\xf4\xc9\xe9/I\xbc\x09\xac\xdb\x18\xd6:\
+O\xfc \xe7\xd39O\xa4f!. 0\x9e\xb4\xc8\
+F:\xa8\xb0\x01\x09\x95\xef[\xd0{-w\xf6\xbf^\
+\xffO\xa5\xe3\x9e\xfa\xb3\x12}\x02\x88\xb4K\xd3\xedB\
+\x8e-`\xd4\x182\xe7\x94\xe3\xefy\xf0\x8f\xf8\x1d\xa0\
+\xea\x19\xd0A\x9e\x142\xc1\xfak)H\x7f\xa1\x90\x83\
+*\xe7\x02\x01\xfe\x0fd\x9b\xc4\xba9\xe8\x9ec\xae\x1f\
+v\xf1\xf2\xb7%F\x04\x98\xae\xd7\x97}\xd1\x03MH\
+,\x10k\xfe\x9f\xdf\xf7\x9em\x81Y\x83\x9a\xd7\xfe\xf8\
+\xe9E\xb6\x84\x8ds\xe6\xfd\x9d\x0f\x81\xbcu\x96\x08h\
+\x81j\x15\x96\xb4\xcc\xb07\x02&\xa4\xccX\xfa\xd9\x07\
+~\xb2\xcf\x91``?=w\xfb\x95\xdf\x0d\xa2\x0fA\
+'\x0e`O\x8fG\xde'\xb1`_\xf0'|~G\
+\x08\xb8_\x85I\xfb\x19\xbb<\x12@\xcf\xc1\xe7\xb7\xeb\
+,=\xe2\x5c{.}*P\x1b\x8fwL\xe0\xec9\
+j\x89\x0dN\xad/\x9cC\x8bA\x1f?\xde\xa7\x0e\xb4\
+\xc4T]\xbf\xf3f_\xba\x1e\xd7+\xc0\xf5}o\x05\
+\xf0{\xd7m\xfdz\x22\xa0\xb5:\x14BL\xa0\xefy\
+9\x07\x12\x1d\xfd}}o\xbd\xd8;\x89^\xe7\x10w\
+\x91\x847\x7f\xcd9\xf4\xff\xfdyt\xae\x05\xd7'\xae\
+\xf4\xbd\xbf\x93\x98p\xbd\xbe\xb2\x00Q\xdc^\xc9\xa1\xc6\
+n\x1f9\xdb\xbc\xcc/\x0f\x99\xc9\xc8X>n`m\
+O\xc7v\xba\xc2,W\x1cz\xd7C\x8d]uP\xf0\
+Z\x09\xe21\x1d\x19\xb8\x00<\xa0\xd8\x06#\xd9DT\
+\xd4><d`\xf4\xbe\x06\xa482\xa6\xcb\xd7\xd0\xb3\
+\x05Z\x15\x19\xbf\xb7\x0f\xbd\x8aq]W\x18\x02\xe7$\
+\xe1\x99\xce\x9a\xe5+\x03)SdB\xffy\x187\xa8\
+\x82\x17\xf5\x93\xef\xcc\x0d\xff\xf9\x0d\x92\xb68\xb8\x0f\xd8\
+~_s\x8f\xf5*goe\xf5\xbe_>{\x08s\
+\xbetA\x83@8\xf3\x01\x14) \xb2\x86< \xd3\
+\x9f\xe7\xd8\x14\xcfE@E\xf1Q\x90\x14\x19\x07\xd9\x86\
+\x90q\x92\x98\xa0\x089\xfe\x1d\x222\x15\x1d\xe3\xd9\xbf\
+\xf7\xda\x13\x04\x0e\x08\xc5 \x91!\xe0\xf3w\xfe\xcfA\
+\xed\x95$\x06\x01\x1b<\xc8*E~\xd24KTD\
+\x92\xcb\xe1\xeek\x8f\xe8\xfc\xb7K _=\xc3\x1c|\
+\x07c\xdc'/\x19z\xd3(F\xad+*\xba\x0c2\
+\x84\x87\x16\x98\x08t\xbe<\x8c\x05\xe3\xa8\x1aC\xa8w\
+\xfd\xc6\xd9k\x7f\xb1$\x8bb\xe0\xf4\x88\xa9PP\x1c\
+\xef\xca\xca\x1eh\x99\x03l.|Vj\x0f\xb7^+\
+\x93e\x80s|\x0f\xc5X\x09\x80\xf3\xad\x86>N\xe5\
+\x12\x80%d9\x80\xf3\x01\x9d\xc7\xa1P\x15\x0d\x81\xa1\
+\xf5\xf7\x1c)F\x01\x8f\xb9\xda\x1c\x7f\x86\xdez'\xf2\
+\xc0y\xad\xf1\x8e?\xb8\x224T\xe0\x0ew\x0a\xd9\x12\
+\x1eH\xb5\xf6\xcf\xdc\xff\xfe>2\x9e\x7f:\xbd|z\
+\xf9\x80d0G\x5c\x8b\xcc\x09\x05\x01;\xbb\xe2\xfb\x97\
+\x0cl\xce\x97\x81;2S\xa4i\x14rft+@\
+\x82@9\xe4~\xe7\xf8~\xba\xc6\xd4\xac\xef{\xc9l\
+Q\xe08Q\xb0 \xfe\xc6\xae!\xbf3\xc6\x0eI\x17\
+d\x91\x8a\x0c\x83\xef\xfbG\xe5\x9c\xe4\x1c\x87\xb5{_\
+\xc8\x96\xb1-\xce\x04\x89W\xd7\xadR\x06\x22\xde!\x9c\
+\x0c\x88\xca\xb4\x8a\x13\xc7\x04\xf42\x912u\xdd8N\
+T,\xb1\xed\x83\x5c_e\x0dp*@\xcb\xca\xd9\xee\
++!\xf3\xfb|2d\x80jg\xa0^\xeb\xe7\xbc!\
+\xcb\xd2B\xa5\xd7U\x8f.\xc7\x8cc-\x80\xc0M`\
+\xec\x9cD\x0a\x07\xcc9\x12\x80[\x1f\xfa\xc7\xf9KG\
+\xbf\x12}\x12\x15\xf6K\xb2\xc0\x17\xf4_e\x8aC\x95\
+\x86\xbc\x1cq\xbd\xfa\xc8+\x91w\x19;\xe5\xfc\xe9\xed\
+\xcbDQqdh\x81\x10\xa8s\xa0\xcd\x9f\x07\xad\x96\
+\xe0p\xbf\xf4>RG\x01-\x0e\x0b\x81kB\xb2%\
+>T\x9c\xaaUGb\x04T\xb9!s P\xaar\
+!!\x95\x8e\xec\xfe\x0a!C\xcb\xe032\xe04\x07\
+\xfc\x82!\x1bI\xe0\xfe\xa7C\x86\xd6\x86\xe4\x9e\xa8\xca\
+\x8b\xc09\xc9\xdfJ\xef8\xf7\xa9'\x8a[\x81\xdf\x80\
+\xed^BN\xc0\x94\x01\x1b\xc7\xacZ\x1c2AZP\
+\xfc\xd4;\xc5\x81\x90\x09\xcb\xc3\xf25|\x9e\x96\x04\xfb\
+I\xcb\x80\xf5\x055\xb7?!\x12\xdc\x8f1\xbd \xd2\
+\xf4\xb1\x96=\x011{e\xdd9\x8e\x02Z\xe7\x8b]\
+o\xbd\xc0\x95\xf0\xd3\x1a\x85\xab\xc6u\x0b|\xed7\x8e\
+#rG\xcf\x9d\xff\xe1\x1c\xd9\x87\x1cW\xfbP\xa2@\
+\xeb\x02\xfb\xc7\x8f\x90\x90\xe8\x90Z\x09[H\xb3L\x04\
+H\x08\xd6\xfe\xe7\x90C\xd4H\xa8\x81\xf2+\xd0\x08\x00\
+\x1b9\xa7\x80\x1b\xb9t%8\xb3\xf2\xca.A4U\
+e798\x0e?\x152\x04Z*\xb6\x12\x19\xfc\x1a\
+\xd7\xd9\xc7Sf\xa2\xbb\xc8\x5c\x91|A\x86\x0ahq\
+/\xb0\x13\xa6\xa8H\xec\xe0\x9c\xc1\x8d\xa45\xa0Ux\
+K\xff%\xf9\xe41\x95s\x81\xbc\xe7# \x02\xc5\x16\
+8I,4\xee\x99\xb2\x9b\xecNG\x0c\xf4W\xef\x8f\
+\xebA\xab\x88\xff\x93\x00\xe3\x87\xb8\xbe>\xd6\xcd\xab\x00\
+\x91^\xe8\x89e\x5c-\xfe\x9f\xfdu\xbd\x02{d\x80\
+\x120\xe9\xcf\xd7\xbe\xa2\x97%\xf4\xbd*hh\xa9\xb1\
+\xbe\xf6\x9b}\xcd\xbeIp\xf8;\xefk=\xad\xb7s\
+\xd5\xc6\xff\x15R\xa0\xb5\x22V\x00\xdd\xd8\xe9\xcb^\xf5\
+9\xf5\x9d\x1d\xde\xb9\xf4\x9c|\x1e\x04\x95\xf5\x12\xc0w\
+h\xba\xf5\xef\xa4\xc8\xbe\xb7\x7f\xd8\xe7\x9e`\x11Ot\
+\x88\xbf}\xe0\xf3z\x02\xc3\xdf\xd1K\xce\x9f\xf8\xc8\xfe\
+\xb0O\xdd\x97\xe7`\xdd\xacS\xab\x9c\xd7u\xd1\x97\xd6\
+\xc7>\xf2s\xe7\x16\xf7\x0d\xb2?H\x1d\x08E~\x8c\
+\xc2OrxhE4\xde\x9a_Q\x856\xfb\x0cB\
+\x12\x19\xa8\x82\x85\xeb\xd2\xba\x90H\x90)\xe3'\xebj\
+j\x0d\xff\x89\xfd?\xe2\x0d\x96\x1e\xb2w\xa5\xa2\xbc\xf2\
+0\xfe,\xf2\xafO\xce\x9e\x98oN\x07\xf8&\x83\x83\
+\x16\xe1\xc1\xe5\x07\xc8\xebm\x97\x01o[ \xda\xe7\xbc\
+\xcbh\xc4\xf6}\xd7`P\xc2\x9d|\xf80\x9f4\xe6\
+i\x9f\x9cck~\xb4U\xf6\xfe\xfd\x1cH#\x9e\xb7\
+tc\xd7\x98\x1b\x8e\xef\xf4/\xb3|`\x0b\xdc\x16\xe8\
+\xe2K\x06\x85\x89\x0b :e\xa3\x87;\xeaq\xff\xbd\
+\x91\xbb0@\xc5R\xcb\x11@^\x03\x9a\xf5\xb2\x90\xc1\
+`\xea\x91~{\x22\x19l\xdc\xbc\xee\xaax\xda\xf8\xd9\
+c{\xb8MV\x88\x8cW1.\x89!w\xc0:\x84\
+\xdfA\xe40\xb9\x0e\xeb\xdb\x03\xfdN\xfa\xe7\xab\x1fd\
+\xeb\xd4[5\x1c\xd0>\x86\xe6x\x9f\xd3\xd9H\xfd\xbf\
+\x03j_\x80\xfc\x9f?\x0d\xd9S\xf2> #~x\
+e\x8f\x9f\xfefz\xeb\xf4\xd6\xa1g\x8e\x81\x92Y\x0f\
+*\xbc\xeb\x0c$Zzn\xb5~ 7\x0c\xb5qV\
+V.@\x92/\x9e\x8a\xf3\xf77h\xec\xe2\xa8\xdf1\
+I\xb3~y\xbb\x8d\x82\x18\xffa\xb6\x1e\xbc7\x1d\x03\
+\x8e(H?\xc3g\xeeyB\x7f\x0a\x1a\x98\xbd\xf8*\
+\x8d5\xee\xab\xcd\x7f\xae\x96\x14\x86\xe4\xf69\x8d\xe0\x9f\
+C\x06G\x0a\xabvB\x92\xa7G\x86\x0c\x8e`\xef\x81\
+\x83H\xd0\x0b\x07\x81\x03\xb2)S-\x01\x80e;!\
+\xb0\x87\xef\xceq\x8a\xaf;\xe1\xf5'\xbc~\x0b\xac\xa6\
+'\x86\x0c\xac\xd8\x09\x09\x06\xe1\xe6\x08\x179\xa6J^\
+B\xd1+!\x80}\xf9#E\x96\xb3\xde?\x03\xa0\xa2\
+\xd8{\x167\x83\xbb\x06H\xb7\xcc\xc4e\xaf\xf00\xa8\
+\x99\xa0\xa9\x8a\xa0\xded\x0e\xbd^\xc3k\xe7\x1cs\xe7\
+\x07\xc9\xd8\xbb\xf2}\xfc\x9f\x002[\x06\xaa\x15\x02\xd7\
+\xc4\xf5\xd7i\x03\xb3\xba^\xc9\xc58\xf6\xae\x8b\xa1e\
+\xd0\x9cg\x09W\x01\xb3sI\xdfJ\xcc\xa9\xb4\x08\x94\
+8\x98\x0c\x99D\x10\xe8%R\xb8\xfc\x9c\xfd#B\x86\
+1}\x99\xa0:\xf1Y!C \xafB\xc9\x11\xd7s\
+f>\xb7\xa9\x0a\x02H=\xc9\x12\xb6i \xcb\x8e8\
+\xc7\x12P*\xff\x1c\xb5\xfb\xaf\xd3Uj\x1ci\xea\x11\
+\xd3,\xca\xf1h\x0eRA5%X@|!vT\
+f\xf5t\xe7\xb8\xb2Z\x7f$q\xd9\xb3\xa7\x12^\x88\
+9\x15s\x8e\x97\xf7\x17`\xe7\x98\xb3\xaaDJd\xe2\
+\xc8\xc8\xfb^\x10I\xd7\x19\x02A\x15\xc1\xd4\x0f\xc55\
+b\xba\x83q\x93\x1c\x17z\x5c\x0b\x9a\xf5G\xf6g\xdd\
+|n\x22\xdb\x90\xc2U\xcbHr\xe0\x98V\xa2\x02\x0e\
+\xa2[$r*\xb7\x129\x1c\x16-S\x90\x16\xa0\xf2\
+ \xfc\xf9\xf7\xd5\xba\xe5>\xb4\xca\xb1\xef\xf63\x07\xf7\
+\x96\xcbI\xde\xc8mU\x889\x86\xce\x05N\x8b\xfc\xbb\
+B\x0ch\xb5\xc9y\xcc\xd5\xaap\xcf\x90\xa1\x22\xc7\xde\
+\xfbz\xc8\x22\x9b~7\x05\xc5y4\xdd\xe3!!C\
+\x02\xb8\xb1\xd5\xd7\xb4\x88l]\xaa\xf5\x15\x18\xa98s\
+\x08\xf5\x80\xe2l\xf1%a \x11\xe8z9\x90Y0\
+\x81|\xa8\xdeQ\xf3\xd99\xe6\xfc\x05\xad)z\xba\x05\
+\xa2\xce\xa7\x0a\xb9\xfb\xe5\x00K\xc0\xe0\xf0\xf8\xc7\x22\xe9\
+=\xe7qU\xecy\xda\x9f\x0a\xd8p\x03A&\xfd\xc2\
+\x22\x85\xe8\xa8i\x13\x89\xa8\x98~)d(\x98\x08\x90\
+\x9d[~\xa8\x04\x0a\xf2d\x89\x92\x84\x22k\x01\x9a\xfe\
+,d8o\x99\x98\xaa\x84\x1a\xa4\x02\xbb\xc2\x0fc\x07\
+\xe8\xd5\xc6z.\xe1P\x5cH\x89H,\x12d$\xab\
+\xecP#{<\xbc'd@\x0e\xb1\x87\xf6y\xef\xed\
+\xee\xd0n\x89Q\x15J\x01#=a\x1fH8\x09d\
+\xfd\x9c=\xed\xbd\xeb\x02\x5c\x90\xee\xde*\xd0\xc9\xe0 \
+Y\x9d\xeb\x9e(\xf0\xff\xae\x8f\x9f\xd8\xa0\xd7\xf5y\xfc\
+G\xf7\xedyK\x8c\x09 %\x02\xf818b\xb4\xac\
+(<\xe1xp\x7f\xec/\xce\x09\xdc?\x12\xdb\x9eW\
+\x9f\xfa\xd4{\xda\xfd\x9d\xfb\xb0Oz\x0bh\x0f\xfc!\
+\x17$x\xe9\xa5\xbe>\x9d\xcd\xbe\x8d\xb9\xab\x9ev\xa4\
+\xe1\xa6\x9b\x9c\xafq#a\xff\x97\xa0\x10wI\x048\
+\xbf\xfc\x0d\xfec\x0f\xfc}/\xf1`\x1fu\x840\xbb\
+JO\x88g\xdc\x9f\xff\xe3\xaf\xf5\xc0\xbfC\xe1\xfb\x18\
+B\xfb\x05R\xa4\xaf_\xbf.\x9f\xd3\x111\xde\xcf\xf3\
+\xe1'K\x5c\xf3\x9f\xc59\xae\xcf\xfaJ\xb8h\x19\xe7\
+\x17\xf3w\xb5\xe6B\x84\xf9<~\x14\x12J\x89\xcd\x96\
+\x08+d\x89\xc45N\x18\x09g\xe4\xa2\xece^\xdf\
+\x91\xc3\xb9g9\xd7\x0a\xad\x8fq\x1e1uu!\x0f\
+\xa3(\xb5\x06p<#<\xbdd\xbe\x0e\xe44\xe5\xf8\
+8\x80\x14\xb2\x050\x97=.\xffmI\xfe\xf6\x93\xdb\
+\xfb-\xf3r/\x9d\x95\xd8o\xdf\xc8\x8a\xa6G\xcc\xf2\
+\xf3\x1bTca1\x1e\xc7\x98\x08L\xc3-\xbbB\x1a\
+\xb6\xe7\x0f\xec\xc3\xe1`\xfcX\xf6\xec}\xcb\xb0ab\
+\x1b\x9d{\xb8\xfe\xa0\xc2\xb9\xea\x9a@X6\xe6\x0d\x16\
+\xa9\x03\xab\xc7H%\x07\x89W\xf5(\x0a<\xf4\xb8<\
+2!\xa0\xa0\xd72\xd0\x0f\xceL\xf2\xdb\x12\x02\xa2\x02\
+`j\x80\xccs\x1a\xea\x9a\xcb.\xe1\xc2\x11\xea=\xff\
+-\x93[\x06O\x80\xee\x80\xf4\xc0\xbfW\xfa\xfb\xc1\xf2\
+=G\x80B\xa7\xc8:yPo%\xe8?w\xdd\x14\
+\x96J\x8d^\xd8\xec\xa1\xae\x8c\x1a.\x04d\x82\xc8\xa8\
+\x92\xc5~w\xc3\x90\x05b:\x7f\x0d\x15\x83\x11\x12=\
+\xe5\xb8\x9a[g\x06\xed?\x07\x84F\x84G\xaf\x1b\xf6\
+At\x94\xbdypX\x22\x0c\xfd\xee\xec\x99}\xc8\x00\
+A5=\xe1\x89k\x02i\xde\x9d\xeb\x98\x8eW\xb4\xb9\
+\xc0Q1}\xd4\x00\x19\xf6\xbc[\xa5\xaa*\xbd\xd8\xc9\
+\x91I!\xbbz\xe6J\xfa7\x9d>}|\xfa\xf8V\
+\xe1\x8f!\x881\x06\x11\x84\xbd*\x05\xe6\xa6g\xa5Q\
+\x85\xb2zL9pH\x98\xf2\xfdT\xf0\x0e\xdf\x1a2\
+\x8c\xc5y`\x92hr\x04s\xde|U\xc8 b\x12\
+\xc2\xb8\xbbh\xc8\xfc\xfd\xd7B\x06E\x1bZ\xe3\x12\xdb\
+\xfe\xa9^X\x88\x15\x156\x90\xa93\xd2\xc0\xe1\xdc\xa0\
+\xf8@\xed\x9d\xff>\x1e\xce\xfdy\x9f\xab\xe7\xba3 \
+_\xcd\xe7\x9b\x08\x82\xd9\xa9Y\x03\xe0?\xcb\xf1\xa3\x14\
+\xb1\x80Z/&\xce\x88\xac\xe4\xec\xee\x1028\xae\x14\
+\xf0\x13\x13)\xa4\xf74[\x09\xfc\xff\xee\x8fw/\xdb\
+\xbdlI\x00\xcc\xb2@\xbf\xd7\x04C\x83\xf4\xd58T\
+\x19dl\xb1\x97\x0e\x19\x90@\xee\xcb\xba\xa8L\x82\xc6\
+\x0a\x088\xfe\xf4\xbbs\xf9\xfaL\xdcp8S\xdfV\
+\xe24\x11\x14\xbbk\x84\x0c\x81\x08\x87\xe7\xae!\x83\xfe\
+7N,\x13;\xd5\x02a:\xc5\xadC\x06\xfd\x04\xca\
+\x0ba \xa1# \xbeq\xc8\xc0\xae\x9cS0\x8a\xa5\
+^\x05\xf2\xfe9\x1d\x82>\x16\x10;w\x02\x08H\x17\
+\xe4|\xd8\xc59\x08\xf6\x13H\xb1D\x8e@\x17\xa9,\
+H8\xe4Q\x06&\x85t\xd0\x9a#\xd0I\xb2\xccr\
+,\xac\x87y\xe7*\xc6\xc6\xb6\xb1\xabX\xb0/\x14\xb2\
+=\xe7B\xb8\xbc!d\x08\x08$d\x04\x0a\x1cE\xd3\
+j\x1e\xb5\x8e\xf9<<+d@\x12\xe8\xe1\xc5\xd9\x03\
+9$\xc0L}\xbc\x7fn\xc8\xfcz\xd3\x90\xf9\xef\x9e\
+\x192\xbf>%d\xfb\xfc\xfd?\x85l\xbd\xd3\xd5\x83\
+hzD\xf6\xf0#\xb7\xab\xc4#\xbb\xc1\xce\xd0\x0b\x19\
+\xf0\xd6T\x96$\xd9\x9b\xfe<d\x08\x80\xed\xbf\xd4\xf3\
+\x95\x80H\xa4UM\xf9\xe0\xd8r\xd0!4p\x05p\
+t!P \xb4$\x922!\xb8\x7f^\xc8\x90XN\
+(\xfc\xe1'B\xb6\xcatM\x09\x92`\x14\xe8\xa7\x83\
+W\xfa\x99\xbeC\x0a\xc5\xd1\x93X0=\x00\xc7\x0f=\
+\xa8\xc2\xcb\xffz\xf2\x22\x1b\x14\xfcW\x16\xd9ZT\xec\
+\x07\x9cN\xf4\x0c\xbb/P76Y\xc1\xc3~\x15p\
+$\xb7K\xd9_\x8e-{\xdf\x03=\xe7KE\xdf\xf9\
+R\xc1E.+1`\xac\xaa\x04\x9fJ7\xbd\xe2|\
+;\xbf\x99\x98/\xfd\xc6\xbe\xeb\x81G\xc2\x9b\xeb\xbc\xff\
+\xbb\x90\x01Q\x9a\xe4\x9c\x95\x80A^\xa7\xf2F\xef\x19\
+\xcfe\xbf\x0a8=\x07\x9f\xef\xfc'\x19^M\x07\xe8\
+\xd38\x90\x0b\x0a\x18 ~$\x12\xf9\x85\x12\x01\x9eS\
+\x87\xb6+\xecA\xe6X\x17\xfe\x86\xe7\xc0?\xe7\xef\x08\
+\xf0%p:+\xba\x80\xbf\x07\xb8\xec\x8b\xf3\xda+\xb8\
+^\xe9e\xdf\xf7D\x00\xfb\x97\xfeaU<\xfd\xde\xf5\
+H4\xfb\xbe!\xe0\xa6K\x86\x0c\x01;\xc4\x86\xc4\x0d\
+\x08\xb6\xc0M\xc1\x0e\x02\x04BW\xe1\x8d\xdfk\xff\xf0\
+\xb3p<\x08\xc0$~!`\xac\x87\xfbv\x9d\xd6\x99\
+\x1d\x90\x90\x12\xf0\x0b4]w\xef5\xdf\x90\x8b\xeb\xfb\
+7\x0e\x87\xba\x1e\xff/\xb1\xc3~e+X\x9dC\x01\
+\xb8\xc0\x9f\x9fe\xdfXg~u\x87\xa8\xf7/\x01u\
+'\x15\xa7\x0f\xc4\x0d\x02]\xebc\x9d\xbd\xff\xf1\x10\x06\
+\xe38\xf9qZ@KP\x147\x82D\x86u\xb7~\
+\xf6\xa9\xf7w~\xecK\xeb\xbb\x91U\xaf\xf1\xa0\xc0\xdf\
+zI\xe8\x98\xae\x96\xcf\xb1\xfc$\xf7Ao?=d\
+~\xfd@\xc8\x96(/n\x19\xd7\xcd_\x13\x1f\x8a\xcb\
+\xc4c\xe2(\xfb\xc3\xfd\xb5DX\x8d\xdd\xcdu\xdb}\
+\x7fH|\x9b\xe3\xee\x22\xff\xbfT\xdaC\xfd\xfc\xd2\xc0\
+\x22\x1d\x95\xf8o\x1c\x14,\xc7\xc2\x07p|8r=\
+\x03gA\xc3\xbc\xbes\xc8\xe4\xaa\x9c\x0a<b\xfb\xce\
+7\xb2\xbb\xc7,w\x9f?\xf7\xdc!\x03YB\x18\xa8\
+\xeb\x0f\x99\x7f\x90s\x01q\x1a\xa8\xa5rz\xd7T\xd8\
+\x8f\xca\x0d\xf8\xf5$\xcf\xbaf:D\xd7J\x07\xff\xa2\
+\x19\xb2\xbd\x16U\x00\x00 \x00IDAT(\x9f<\
+\x04\x0a\xee\xc3uS\xac60C\xa5g\xd2\x98)\xac\
+\xd2\x1ct\xec\xc0\x1c\xc8\xcb\xa4\xa1\xbb@>\xb8\xef\xc9\
+\xca\x8b\x07\xfa\xc9<`}>\xb7\x03\xe1z\xfax\x8a\
+\x1e\xd0w\xb2\x0f\x1b\x85\x82\xef\x95\xfa\xfe\xea\xffzF\
+\xcc\xc1\x1a\xc76\x9e9|\xbe\x04C\xe7\x10\xe8\xf3x\
+9T a\xc6\xb6\x09(\xcdW\xc6\x0e}J\xee7\
+\x95\xcc\x84J\x1a\x0f\x84\xc3azS\x8e\xb5S\xd1\xb9\
+\xec,1\x86\xe7\xdff\xf9HB\x9b\x9f\xb8\x8d\x7f\x5c\
+\x02\x85\x1f\x1a*\xff\xa3\x029\xb3eV?\x95H\x91\
+'.\xad\x08\xb3l\x01\xd2\xee\xd2\xbbK\xed.5\x04\
+\xf0\xa62`5\xe6\xa0\xa8\x1c\x08P_\xbc\xde\xdf\xf4\
+\xe8\xb5\x82\xa1\x92^\x10\xdcdY?\xfcQB\xf9T\
+z\xde\x9e\x19l\x0efBZ\xb5$L\xf7\xcfqO\
+\x0f_{6\xcb\x919s\xed5\x07q\xae^\xe6\x84\
+\xc2\x1e\x18\xba\xf7g\x8fc:\x82\xfbW\x85\x0c\x0e\xa4\
+\x96\x99tL\x05\xa2*\x8c\xbb\xeb\x85l\xec\xd6\x158\
+\xc8`_t\xbe\xfb\x8b\x0e\x19\xe8\x9b\xa6\xa1e\x88(\
+\xb2$\x89;\xfcx:\xd0\xf4\x8cV\x09\xe3\x09\xf5J\
+\xa7\xc1/\xc7\x13\x09\xa4\x8a\x0b\x87\xcas\xd6+\x0d2\
+\xfd\x9e$I\xc2Q\xa0rc\xac\xd5\xaf-\xb2!x\
+\xae\x9b\x10/\x08\x9d\x8f&\xc4\x1dg\x85\x0a\xaf\x8ab\
+\x92\xa4M\xfb\xe9\xe8tt\xa8\xdc\xaatqD\x9c+\
+\x8e\x0a\xfd&\x01\x98\xf7[S2\xe8Yz*I\x02\
+\x91G\xd6\x98\x1cS\x02\xccK\xff\x93\x90\xe1\xb9\xa4C\
+\xb6\xff\xb7\x90\x8d$N@\xb7\xfb\xad\x90\xf9\xfb\x0b\x85\
+\x0cH\x06\xfa\x09r!\x13#\xc8\xfe\xaa\xc2\x92\x0e\xb7\
+\x04Q\x052\x9e\x83i%\x12\x03\x10\x17\x99x\xae\xc0\
+\x19\x89d\x06 e\xd8p\xa8\xd0\x9f\x1cXzMB\
+\xc7\xef9\xda\x12\x5cH\x00\xb3rX\x1c\x03?\x1f2\
+T\xce\xd21\xa9\xc0K 'p\xc9^\xe9\x82\x82'\
+\xcbz%\x00=\x8ft\xcc%\x90\x05:5\x95\x86C\
+\x01\xb9`\x1f\x9aZ\x90-\x0c\xd5\x22\xd7\xa7\xe5p\xf4\
+9\x80~\xef\x9cAVH\xa8\x80\x14\xa7=\x9b\xee\x1c\
+2\xf4\xc8\x0b`@\xddS\xaf\xd9\x07\x87\xc7\x86\x0cd\
+\x80IJ\xb8\xff\xcb\x90\xf9\xf5a!\xc3\x98\xc4\xec\xed\
+.\xb2\xaf\xeb\x9c}\x8c*\x8e\x82\xea\xf96v\x96\x83\
+\x85e_\x05U@\xe4\x9c\x83\xf0\x9a\xbe\x92\x1c\x15\xfb\
+\xcf\x85\x0c\x0e\xad\xc4\x1d\x87W\xebE\x92CV\xa0\xd1\
+\x1dP\x8e\x7f\x22;\xf4\xe4\xd6\xff\xd1\xa7\xe6\xca\x9b\xee\
+\x91\xcf\x1f\x22\xab\xc6\xb9\xe1\xdaP\xa1\xd1J\x96\x88\xae\
+JX\xb8\xceD\xaa\x18SX\x1c\x1e\x0a\x06z\x9fA\
+\xdd\xf5\xd2\xd3\xaf\x0fZdk=\xe0\xd8\x9ag\xcd1\
+\xcfB\x82\xe9\x0f\xc5u\xc2\x9f\xd0\x13L\x1f@0h\
+\x95\xb2^\x1cp\x0e\xab\x04\x85D\x1f;!\xc0\xf2\xbd\
+\xeb\x90\xc8H$Rqi$\xe2\xb3\xc6c\x0a\x1cT\
+t\xf9+\x0a:\xde\x0fifNg\x81\xc0\xa81\xbb\
+\xc85\xd9\x03-L}\x1c\x1cn\x05\xfe\x0f\xbf\xc7s\
+J\xbf\x07gU\xb5\xe6\xd1\x8bX\xf3!@z@\x0f\
+\x02,\xd0\xf6\x9c\xb4x\xf0\xab$j\xf8\xe7\xfcG\xd7\
+\xd7Y\xd2\xad\x13\xbf\xc2\xfev.\x90\x07\xd2{\xbez\
+\xc2\xcc~\xf2\xf3\xfez\x9c9\xf3\xf5=?\xd0\xd8\xc1\
+\x8e\x04P\x81\xf7>^\xdb\xd8\xbc\x0a|\xd8m\x898\
+\x15v\xefG\xdfi\xc1\xd4\x22\x01!a\x0c+\xd2\xdd\
+>v\xd6:\xf9\xfbLT\x95_d]{\x0b\x83\xcf\
+\xef\xbd\xe4\x02\x7f\x90{v_\x80*\xa1\xe0\xb9yu\
+\xbfm\xbd+0\xed\x1cN\xd6\xc1yl\xe36+\xbe\
+a?$h\xac\xb7\xeb\xf1\x7f\x9d\xcc\xdb\xbe\xff\x9f\xb8\
+\xc4\x9c\x13\x9f\xd7\x9f?\x7f\xc2\xef\xfb\xf4\x82\x8e4\xe8\
+-\x05\xceC\xe76\xe9-\x01\x9d\xdc\xd1\xe7\x89\x97|\
+\xae\xfb\x95\x90B\x02\xed\xb9\xf4\xe7\xa3\x10#\x1e\x90\xc0\
+E\x9e\x9f-\xe0E\x8e\x0c\x19&\xf1\x8e\xb3,\x13\xd9\
+\xd5\xca\xc3\xcfH\xfb]\xd3\x83\x14\xa8\xf89\xaeC\x01\
+\xd8:\xb9\x8e,XH\xa4\x1eY\x1e\xc7W\xf3\x1f\xc6\
+J}\x0f\x08\x91\xe9\xb51\x0c\xc8F\x16\xc0\xef\x00\x11\
+\x5c~;\xce\xfb\x0e\x88\xdd\xa9i\xe8\xaf=\xf4D\xbd\
+w\x01M\x9f\xb0\xbb_\xc8\xfc~'\x87\x0c\xac\xed6\
+\xa8\x80=\xeaD\x97\x19\x1c\xe74\x9cUI\xc3n\x1b\
+\xee\xf2\xe5s\xa1\xae>\xf4b\xc8\xfc\x82\x982pI\
+\xaaR\x154=\xe1*\x89\x14)\x05\xcb1w\x00,\
+p'\xe9\x11h\x09P\xb0\x0a\x7f&!L\x0e*\xee\
+\x00\xd0\x7f\x07\x8c\xc2\xb0\xa19p\x0eXO\x00\xf4\xd7\
+~Pz\x80\xdf[\x00z\xc5\xbee~+\x01\xa2\xb2\
+\xe4\x95\xc1\xee\x0a@ \xdd c\xf5\xf7\x1c\x08\x10\x5c\
+\x86o\xab\x18\xaf\x86\x1e\xeb\xb7\x0c\x9a\x0c\xfa\xc3\x8a<\
+m\x1dsu\xda\x9axQ\xf9^\xc2\xe4\xe8u~x\
+\xc80\xc6\x12\xe4U\xcf\xe2\xbb\x16\xf0\xf7jH\xbfq\
+\x08\x8cBM\x8c=\xb39\xe6\xb2*\xeb\xcfY+\xf4\
+s\xe0\xfdC\xd3\x0f-\xfbg\x85\xc8\x0a\xb8<\xc7\xbf\
+Z\x06\x1fm\xcf\x93\x03\xf5\xbaLl\x80^\x22\x1b\xb3\
+\x0e\x14\x89\xe7\xdeIa\xfa<\xd4\xbb&K1\x05\xd0\
+\xa1\x96\xb8\x04@`\x05\xc8\x9fIC\xfaS\xc9\xb9p\
+\xc3\xc3\x8d\x0e7\x1a\xc8\xfdT\x8a\xa6\xec\xf0xE\x06\
+\x0a\xcf]\x13.\xd3-\xd7\x80\xb3\xd8\x8c\xb14\xeb\x99\
+\x13\x80q, >\x909\x19 \xf2\xb5\x90\x132\xb2\
+\x89\x9e\xa5\xecy\xcd\x0a\xed\x1cv\xaf\xef\x7f\xaf\x0c\xe0\
+\xbc/GF\x05K\xe6\x93\x81\xe6\x88=&d\xd8\xef\
+\x7f\x93\x0e\x06\xc8\xa7\x1e`\x86\x22\x1dO\x95\x98\xe9\x1d\
+!\xf3\xeb\xc7W$Fq\xa1$\xf4\xf5p\xeb\xc3\x82\
+\xa4\xf2\xb9\xd3\xe3C\xe6\xd7\xcf\x86\xcc\xaf\xcf\x0e\x19\x9e\
+KB\x12\xcb\xc1\xef\x90[\xbd\xb8\xd8\xff\xe9-\x89J\
+\x09\x80F\xcaYs_\xb5\xc6\x80zkMP\xe9G\
+\x0a\x97c\xd3\xf6\xaf\x0c\xd9\x0cLq'\xa8(\xfd\x5c\
+\xc8\xf0\xdc$N]\x87\xb1`*\xe0\xf42\xee\x02\x9c\
+\x1bH\xb7\x04\xd22\xf6*~\x029\x06\x0fR\x04\x12\
+#\x9f\x939\xf7\xd5+k\xacPBf;\xa9`%\
+^2\x11P\x9c3\xd7\xca\x96\x0e\xe7)\xcfG\x9d{\
+\x81\xad\x9ey\x95N\xf6\xc2\x98-\xe4e\xce\xf3\xaf\x84\
+\x0c\xf6BbC\xe5\x80c\xe3y\xd0G\xce\xbf\xbf\xcb\
+\xd6\x9f\xc3\x8f\x85\x0cv#\x11\x03\x95 \xa5/T\xca\
+3\xf0<\xdc.d \xc1\xe3\xe0i\x19\xb2\x1e9\x0e\
+p\xff+!\xf3\xdf?#dH\x10\xdd3d\x0b\x84\
+\xaa\x02\x9a\x81\xd6\xd1\xdf\x0e\x19\xb8#\xb2\xc2_,\xe4\
+\x1c-vR\x82\xe7;\xd7sS\x01!\xa8\xbd}\x93\
+-r\xf5\xfc\xe87\xe7\x5c\x8b\x95\x16\xb2_\x08\x19Z\
+\x09L\xd1I\x92\xc7J\x1cq\x1c!- \xa2TN\
+Ur9\xd8Y\xa9\xad\x0a8\xc4\x00\x04\x8c\x96\x16\x09\
+K=\xdfZD\x044\x107\xa7\xae-m\xe5\xc8\xf3\
+#\x5c\x97J\xa5\xa9\x19\x12\xbf\x02n\x09\xa9\x5c\x97r\
+\x18% \x14(\x92]\xbf\x1cD\xfa\xe5\xbe!C\x05\
+\x1a\x84\xbfU\xf6@\xe0%\x0e\xab\x85G\x02![\xbe\
+\x90\x95J\xb8\x14y(D\x9f\xfbt\x1eq7\x99\x86\
+\xa0\x152\xc7U\xf1/p\xd2T\xcf\xfc}\x179\xe1\
+\xf0\xb4\x90\xf9\xe7\xd7\x0e\x19\xcegrK\xd4z;\xa7\
+\xf4U\xfe\xbc\x10\x9d\x900z\xc2\x1f\x162\x04\xe0\xf6\
+\x87)M\x12\xb6\x9d$\x8d]\xef\x81 \xff\xcd\xfa#\
+KT\x10\x10\x90\xd0\xd7\x9e?\x84@\x06\x88\xd5*g\
+_\x08\xd0$6!u}\x9eD\x05;\xa3\x97\x9c_\
+\xca\xfe;O8\x87\x90\xcc\xf9\x1cz\xc8\xfd\xf6\x9e\xfc\
+q\x9c\xf7\xc8)\xe4\xdc\x98\x02\xd2\x13\x00\xbe\xf7\x9c:\
+\x12\xc0~\xe9\xad\x05\xfc z\xd3|t\x9f\xeb\xba\xad\
+\xabu\xe0\x7fy\xed\x10v\xc8\xbbD^V\x82\xda\xef\
+}\xb9n\x95~\x89\x10\xd7-\xb0\xb4>\xfd>@\xd3\
+U\xfc{\x82\xa6\xb7\x04tn\x00\x09)\x85\x996\xdd\
+\xa8>\xbf\x93\xea\xd9\x9f\xee\x9b\xff$@g\x17\xfc_\
+OD\xb8\xfe>\x16\xba\x15\x00\xcb\x8f\xeb\x89\xb1>U\
+L\xc0/\xae\xf0\xbd\xeb\x14\x8fX\x7f\xf1\xa7\xf8\xa5#\
+\x00:\xe2\xc0\xf5\xb9\x7f\xaf\xd6\xd9}\xb9_~Lk\
+!\xa9\xf3\xe0\x1c\x88c \x0c\xed\x07\xf6\xdc\xf3\xcd\xc2\
+\xde\xeef!\x03\x17\x90\x84l\x16\xb4\xca~C\xae\xe3\
+\x14b\xcf\xad\x9f\xb1\x9b9\xdd\xa9\xec\x8cD\x8f\xfd\xce\
+\x0e\xf1gn\xb9\xc8\x09A\x9d\x1e\xe4\xe9\xbe?Rd\
+Fo]{\xaa\x177\xff<\x15\x0c\xae\x0b\xf9\x95|\
+\xe0\xe38\x07\x99\xab\xc8\xc8\xbeu\x98\x0b+P\xcf1\
+(z$\x8b\xad4\xc7\xc5\x14\x9bu\xf4>\xdd}\x98\
+\x93\x1aa\xf3\xb7\x0c\xad\x07\xc91 \xa0_\xd4\xf7\x95\
+\xb2\xc2w\xc5\xc11\x14pp (V\x0a\x91\x82D\
+\xbe\x82\x84\xc7\x02\xea\x15\x04\x85\xc4\x1a?V\xc8O\xc8\
+@\xe0\x9f\x87\x04\x04\xc8!\x87\x96\xc3\x94\x95\xaa\xda\x80\
+\xc9j_l\xea\x9d\xd5\xd4u^.\x11\x0f\x0cZ\x8e\
+O\x19\xe6\xea\xae\x8eq\xaf\xd0\x1f\x8f|\xcfk\xef\x9d\
+\xe9\xbd8e\xe9\xdb8@\x0a\x99\x01I\xe8WA\xcf\
+\xad\x83\x83K\xe1\xc9\x88\xf69\xf7*=\x17h\xe3\xdd\
+\x1cx\xd7'\x81\x92\x8e\x226\xdc\xeae\x81\x88H\x07\
+\x11{\xb9\xcc\xda\x12hE\x05\xf9\x8b!\x83c\x8dD\
+\xea\xc8\xf2$\xd6\xca\xe5\xb5\x07\x05=\xceC\xfd|*\
+\x82\xf3\x0f\xfb\xd2x\xae\x1b\x84\x0c\xf3\xde/\x9a\x8aT\
+\x85\xf5\xae+\x12\xe5\xf0\xb2\xc3\x1f/\x95\xdaP\xdb\x1f\
+\x1b\xc81U\xf8\x91\x91e\x80\x163*\x96\x96\x12\xcf\
+\xe7:\x99`\x01\x05\xfa\xb7\xcc\xfc\xda\x97\x1c,H\x9a\
+\x84xV\xe5\xea\xeeY\x11\x7f\xf9Z\x11\xd9_#d\
+P|\xe9pT\xc5>+\xe7\x87k\x1c\xae~\xb8\xfa\
+\xe2h-\x8e\xeb\x89\xa7\x86\x0c\x99ql\xe9z\x8c.\
+\xb1:\x12\xc5\xa2\xaf\xe2\xcb\xc1\x93\xa9\xa4h\xb1\xfff\
+\x8fx]\x0f\x16\xf2\xdbg\xc0p\xed5\xb1S\xe7Q\
+O\xadD\x9c\x80\xd9\xf7\xf6U\x9f^\x22\xc0L\x8e\x91\
+\x0a\xc4\xcc\x8d\xbe}r\x18\xa4\x1e\xa8\x1ekc$\x7f\
+8\xc9\xe2\xfc\x9f\xf1\x87ze\xb3\x92xxAVj\
+o\x97\xd3\x1f>\x172\x90\xcd=.\xd9\xc4U\xa8\x18\
+.\xeb\xd3\xc8,k~\xb2\xcc\xadJ\xa7\x80\x92\xe3\xd6\
+\xb89\xca!r\xee\xb3\xe2]s\xe0\x13\xd1\xc0\xd1\xde\
+\x7f&d\xd3\xd7\xbb\x9f\x0f\x19\xd8\xcb\xb3\x17\xbc\xf4\xfa\
+\xef\xaf-)*i\xa5\xffA\x8c%\xe0\xe8\x0f\xe4^\
+\xf4\xa3D\x86\x9e6\x01/}H_\xa8\xc8\xbe0d\
+H\xf8\x0a\xc0<\x07\xbd\xf4\x12\xc6\xb8*\xe8C\xe4;\
+\x9e\x17\xc74\xc9\x0dk\x1e:\xb6\xf9L\xe0!\xcf\xa1\
+G\xaa\x82\x0b\x81\xe4:\xdb\xfe\xadD\x86\x80\x034U\
+\x85\xd6~f\xb89n\x1c#\xfb@\xc2#\xa1\xa9K\
+\xcb^ \xf3^\x142@>A\xcd\x19\xfc\xb4\x83E\
+Z\x0aR-\xe1\x81\x14\xef\x5c![\xa2\xaf*\x9c\x99\
+0\xdf_;dK\xcc\xefO\x0b\x99_?\x1f2\xb4\
+,\xe9\x1d\xe5\xc8a7\xbfi\xc8V\x917M\xa5\xf6\
+=\xc7W\xc5\x98=u\x1e@\xefUP%X\x04\xd0\
+*\xf8*\xe68WT\xe43\xb1\x06\xb9U\xdc(\xae\
+\xc39\xe4\xc8\x83\x96_>dH\xb0p\xb09`\x12\
+\x1a\x12\x8e\xf4\x8cD\x14\x7f\xc4\xf3\xf7\x9cMC\x12(\
+?dmy\xab\xfd\x00\xfa/\x11\xa1\x02\x0b\xa9\xa2u\
+\xe2\xd2!\x83\x9dL\xbf%\xf0_\x0b\x02\xec\xb4\x90a\
+\xfa\x8f\xf3\xc0QE\xf6\x0c\x99\xa0\xd5FA\x87\xc3M\
+\xbf\x08l\xac\x97\x8a\xfc%C6.\x9bBvz_\
+\xcf\xd1\x18b\x0e\xba\xc4\x0dD\x9a\xc0\x0b\xa7F^w\
+\x8d\x97M\xfd\x5cv<\xf5\xcc\xf4\xe2\x90!\xc1\xe1\xbc\
+\xbbN\xcf\x85=H\xc7\xb7\xecg\x06\xf6\xf5\x1c\xf4\xf6\
+J|\xf3W\xed\x03\x897\xe7Ub=\xa7\xa3\x94\xdf\
+\xd4\xc6&W\xe0\x96\xfb\xb4\x10?\x90\x07\x12\xc0\xfcW\
+~\x18\xbd\xd2\x03Y\xfew\x92\x9a\x95\x1f,\xb1\xe6\xfe\
+\x04\x8a\xec\x01\xbf@\xa2V\xa2\x84\x1f\xe6z%\xbe$\
+@\xecK\x813;\xde+\xf3\x0a:\xf4%\xbf\xca\xfb\
+t\xb2@\x9f\xe7\xb5\xbfo\xe7\x00h\xad\x00u\x0e=\
+_\xeb,\x90\x15\xa0A\x82\xb8\xfe\xfey\x1dQ\xab\x00\
+\xc4\x0f\xb3\x8f{\x80\xcc^uh~O\x00\xa8 \xe3\
+.p\x1d\xb8\x16zE\xf9x\x09\x00\x5c=*\xfd\xf4\
+\xa7u\xf1w\xfd\xf3\xe9e\x89!\xcfE\x02\xc0\xb9\x11\
+\xdfurA\xeb\xe8>T\xec\xfb\x18J\xfb\xdf\xe7\xf5\
+\x9fw.\x10\x9f\xc7\x7f\x11G\xb0\x7f\xd6\xbf\xb7:\xf6\
+\x16\xe6\x1e\xb7\xf8\x7f\xf7\xdb\xa7\x98\x89\xa7\x90\xe7A\xa2\
+\x09}\xd9\xf7>%\xa3\xef\x1b\xdfw\x92B\xc85\x88\
+\xc6l\x05\x9d\xfe&d~\xbdp\xc8\xa0\xe7}~\x1f\
+w\xe9:}~\xdf\x8f\xee\xd3\xf9\xea\xebb\xbd \xfe\
+ \x092\xb1u\xa4H\xc9\x5c\xd8\xddB\xf2\x01\x7fa\
+\x1b\xf70]<$\x17\xec_\xf3\x83\xbf\xba\xf5\xf4/\
+\x06\xf3r\x0b\xf4x\x96\xc1\x112.#\x03r\xbd\x9c\
+U\x11\xfb\x87\x90\xcc\xe0\x7fv\xeb\x818f\xbc\x12\xc7\
+.\xcc\xd6\xd8\xdb\x1b\xb7q\x95\x01B\xe7\xd5\x0d\xdb\x00\
+z\xb7\x8c+\x94!W\xc1\xc3\x96\x08\xbaO\x91R,\
+Y\x01\xaa\x0a\xa1\x0c\x13\xc3\xcb\x80`\xc1f\xd0\x05\xaa\
+W\xc9Lb\x87l\x9cwu\xd8\x0a\x81\xf0\xc2\x84\xbe\
+\x83\x16{?\x7f/\x83\xd6\x15V\x0f\xe0\xff'd@\
+'\xeb\xe3\x90\xf5^}\x8a\xc2\xc6\xa4\x90\x1cp\x1b\xd3\
+}\x22\xa9\x13\xf83\x9c\x0c\xa9uKGu\xbaQ\xc8\
+\x00\xc9\xda\xaeg\xbd\x0e\x90H\x99\xf9\x13C\xb6\xc0\xf1\
+\xf0w+d\xb1\xe6Ng\x85\xb2*&\x12\x0az\xa2\
+\x03:\xfd\xd2\x81\xad::3\xdf<\xf4\xd8\x22g\x92\
+ \x8at\xcc\xe5\x86^E\x0aJ@\xee~\xae\x95\x81\
+\xba\xde\xb1/\xce\xea\xec\x8b\x83\x81\x08\xb7\xe2\x83CO\
+v'\xbb{l\xc8R\xd9Y+LwLvp\x09\
+\x06\x81\xa9\x8a\xf6_\xad\x1c\x03\x05\xb9\xde\x85\x0c\xf7\x0f\
+\xaa\x99\xfb\xe8p\x91\x846\xde\x7f%\x15\xac\x00\xf7\x81\
+\xd3\x03b\xca\xc5\xfc\xb9+\xf2@B \x11\x17\xbb\xf3\
+\x85\x0c$E*ZW\xca@\xf8\x86\x89\x94i\xe4\x84\
+\xe6\x99VB\xcd9dHTP \x04|\xcf\xf1\x04\
+=v\xbe\xf4\x80[_\x19Z\x7fo\xff\xd9\xafH{\
+\x9e\x93\xd0\xe6\xd7d\x86\xb5O\xcb8o\xf6\xc4\xd9O\
+\x09\x81\xadi\x1d\xa0\xa3\xdf\xbd>\xa7\x82\xe4\xde(\x11\
+\x12_\x0f9\x9b![\xa7y|m\xfa\xea\xc2}\x90\
+\xd3\x0cfu\xbf\xf48\x0b\xa4\x0bj(\xd1'ps\
+?*\x0fm\xecR\x91\xb7\xf5\xb1\x9f\x9d\x9cS\x86\xd9\
+9U\x01U\x11\xbco\xc8\xd2k\xb68\x90z%\xa7\
+\xc7\xe7\x18\xc2;$\x84\x1a\xa7\xc1kC\xb6\xb1tg\
+\xdb\xd7\x1f\x18\xf6\x1dG\xc8kB\x95\xa7\xef\x08\x19 \
+\x97zI\xb3\xe7\xbb\x1cX\xd7\xcb1Qy\x93 5\
+\x86I\xcb\x15\xc3k\x8a\x01\x04\x1a{\xa3\xd5D\xa0\xc6\
+\x91\x80\xa0\xc9\xd6\xb6b\xff76\x13\xc4\xfb\xb7B\x86\
+\xc4!=\x92\x15\xf5\xd2\x07\x10c\x09)\xaeD\x91\xff\
+\x03\x19u\xee~&d\x83\xf6\x07~hA\x10q\xf4\
+=\xef\xacp\x96\x83 \x80\x01q\xa7\x8f\x8d\xe3\x94\x08\
+\x91\xe0\xc8\xc4\xe0\xfe\xb7B\x86i8\xd9jU\x015\
+\x84\x9b\x80!Z\xa8f}\xb7\xbfE\xc8\xf6|\x0aR\
+\x9e\xd3\x0e\x8a\xb3\x01\xf4[`\x92=\xe6\xf6\xab\xb1k\
+\xc5\x9d\xd0\xc6F\x15\xe9!\x08\xb8\xe7$q\xa37\xd7\
+\xfa\x7f[\xc8\xa0O9\xbc**\xd6#\xa7qTK\
+\x86\xc0M\xc0yr\xc8\x90@d/p\x0ep\xd0\xd9\
+E\x05\x83dw\xaf\x04\x90s\xca!\x96\xd8\xe2\xc7\x18\
+s\x9b~\xc2\xac\x1df\x19\x90%\xce/h5}\xe2\
+\xf3\xf9!}\xcc2\xe8h&\xc8\xaa\x15C\xa0\xe7\xdc\
+\xb37\x90\x5c\xc8(\xbd\xafD\xbb\x965\x81?\xd2\xaa\
+\x9c\x06U\x08\x03\xfb\xebz![B\xbbz\xa3\xe9Y\
+z\x8d\xbf\xc1\x8f\xf3=\x922\xdc\x0f\x99(<|_\
+\xc8\xd0\x03\x8e\x83\x00\xf7\x87V9\x8e\xb2\x16$\xcf\xcf\
+\xfb&\xe9i\xe9\x17\xeb\xac\xa5\xd5sE\x22\xd98\x00\
+\xf6/\x09\x19Zu\x04^\x02b\xf7\xa9\xe0\xd1[\x1d\
+\x9dgz\x14\xd9e\xea\xc1\x1ak\xec\xfc\xf3\x97\xf8\x89\
+\x9e\x7f\xda\xa1\xea\xddv\xee\x91\xd2\xe68\xd5Jh\xc4\
+x\xed\x0b\x0e\x899=\xfa\xce\x17\xbd\xc9\xafQ0c\
+?z\x80\xeb~%\xee!nz\x00/\xb0\x93@\xf0\
+>\xbd\x82\xdf\xc7\x10\xfb\xff\x9eP\xf0\xf7\x12\xdb\x02\xcf\
+N\xd2\xa62\xcbOu\x1fm\xdaD\xf5V[\x07\xef\
+\xe3>]\x7f\x0f\x90\x15\x1a\x9c;\xeb\xdf!\xf9mJ\
+BU\xe8\xfd\x1f\xfbf=\xfa\xf8=\xef\xe3{\xef\xa3\
+\xa5\xc1\xfb\xdb\xf7\xae\xb3\xb3\xdfK`\xf4\xd7\x8e$\xa6\
+\xf7zk\xb0\xfd\xab\xe5$9W*q\xd1\x11!=\
+q\xcd/\xf6\xda\xc7\xd7\xf5\x0a\xbd\xd7N\x06\xd8\xfd;\
+\x01\xed\xf1\xc8\xc6\xfbT\x08\xdfK\xdc4$@A\xfa\
+\xad\xa7\x96\x04-h\xceE_gz\xbe\xb7B[\x07\
+\xcf\xd7\xb8X\xf6Mk\xa8\xd6-\xcf\xc1\xf9\xb4\x0e\x1d\
+Ib\x9f\xfb|\xeb\xc9\x8f\xcaD\xb1\xd6\xcb\xf2\xa7\x15\
+Z$.MI\xc9su\x04\xf9\x8eJsed\xc3\
+\xfc|i\x80\x16\xc7\x81\xff\xcc\x06\xa9_\x1c\x97\x17d\
+\xa0q\xa3-#m\xe1T\x0c\x96\xde\xb1\xa8\x10\xfdm\
+H\xf6T\xfe\xc2@\x22h\xfc^\xa8\xed\x13\x871\x06\
+*\xbd\x1c\xc0\xf8\xfb\x11\xd2\x82\xbd]\xb8k;0\x00\
+2\xb3*\x1a\x19\x90V/\x1b\xe8]B\xcc\x0aj\x8b\
+\x9d\x1b\x22\x82\xe2\x06i\x05\xe1\xc0\xca\xfb\xbe\x90!\xc3\
+\xa3\xc2\xa5\xc7\xff\xa9\xc9*\xaa\xd7C\xa5\xf7\x8dk\xcf\
+ze\xaa%\x08$\x1eT\xde(\x1e\x99\xad\xdes\xdf\
+\x03\xf6N\xbew<\xa4@o!\xe8\xff\xef\x95#&\
+s\xe7\xe0\xe8A\x05\xb5\xd4\x9b\x99=\xb4\xd3\xf3C\x86\
+y\x98\xa0{?\x92\xeb\x9e\xe3\xe28<\xc6\xb7!_\
+\xd2\x837\x87I\x8b\x83\x17\x1d\xfd\xd1\xd3_\x0e\xfeS\
+Ox\xca,\x05i?\xdc8dcq-H\xaf@\
+(\xdc\x9f\xbbo\xfb\x119\xdf\xf2\xd4\xfe$+\x1aO\
+\x1a\x1c\xf6p\x9b\xee3\x04\xe8Q\x09\xbe\xcfP\xf9\x96\
+\xc9O\xc58=8\x1d\xbb\x93W\xce\x8c\xfd\x17\xf7_\
+\xd8\x7fa\x98\x03o_\xc7\xfe\x7f\xc4\x10p\x810\xe7\
+x\xb6\xca\xe3<;!\x89\xc6\xb6%\x19\x9c\xb1m\x87\
+\x07%\xdbv\x06t\xfb\x1f\x08\xd9\x12-\xd3\xe7\xd6\x04\
+[Uz)\xf0\x0f\xae\x8a \xa6^L\x97\x1dH\x16\
+\xb1\x9b\xe79\xdd\x9d\x1a2\xbf>/d\xe8\x85L\xc7\
+\xa9X\xc5\xef\x9c\xec\xf7\x8fZY\xd5\xab\x15B\xab\x0d\
+\xc5\xabrAqRp\x9de8\xc9\x00%\x22\x0b\x1a\
+e\x1a\xc1I\x8d\x0b\xc3>\xf5\xff\x14)\x05\xf8\xd7\x09\
+-\x04}\x97Q\x05\xdd\xdd\x85\x0cc\xba\x9e\xb8V\xaa\
+\x90LV\xa0\x05\xa2\x8a\x0d\xba\x93ke\xaf\xef\xf4\xc5\
+\x90\xe1\xbeT\x1c?\xbe\x06p\x12.U\xa9|r\xc8\
+p\xce\xe8\xbbt\xf8\xaa\x97\x7f#/\x5c\x0d\x1a\xc3\xcd\
+0\xfaBn\x97-V\x05\x19U)v\xfd\x02\xf7\xd3\
+\xb2R\xf7\xc6\x95$h\xbab\x226\xae\x9f=\xb5\x12\
+]Z$\x90\xe6I\xb0\xa6\x1e\xaaD\x1erJc\xf4\
+\x04\xc6\x10X\xf4\xb7\xe7\x84\x83\x01k7\x87\x8ba\xd4\
+\x02\x00y\x22q\x8bl5!\xf1\xe6lW\x05\xd9\xb8\
+>\xf7+\x01\xd0H~\x8a-\x17\xe4\x5c\x82\x8b\xe1\xed\
+c\xce$*\xed\xa3\x8f4D\x0e$H\x1a\xf8\xe9\x1f\
+C\x06\x87N\xef\xfb=\xd6\xb1\xa6Z\x99\x8aM_\xab\
+\x07\xc7>\x03\xf1\x82Bg\xa5pzN\xc8\xe0\x00\x08\
+\xc4\xddg\x9e\x1b\x90\xfd\xe9\x0b!C\x8b\x0e\x92P\x09\
+\x03\xd0s\xf7o\xca\xc75C\x06\x8e\x83\xe4\xf0)D\
+\xc1\xf7\x1f\xee\xbd\x04\xe6\x02\xc9\xe4\xf8(\x88v\x92\xef\
+\x15\xe9\x1c\x085\xbd\xa0\x22\x0e\x82-@\xf4\x9cz\xe5\
+M`!A\x9e\xfb\xb0\xe6\xa5[?\xfb5\xc7\x10\x1e\
+N\x09\xd9\xa0\xee\x87K\x84\x0c\xfa;+\xe7\xb5\xaf\x15\
+\x18\x14\x08:\x17\x87\xd6@?\xe7\xd0\xda7\x12\x1b\xf9\
+\xbe\xc8\x14\xa7\x8b\x84\xcc\xaf\x9f\x08\xd9\x12\xbfZ\x04\x90\
+\x0d\x97\xbd\x97\x98\xe1\xf87\xe8k\x9d\x1bzP\x82\x9f\
+\xe3iJ\x87uI\x87\xb6*\xf6\xc6\x85\x82\x82[g\
+\x89\x0d\x09\x15\xf7%\xc0\xe7\x10\x0b\x08\xed\xa3\xceN\xaf\
+\xd5\x89#\x0d1\xc8O\x93(1U)\xa1\xf7\x87}\
+\xc8\x80\xd8\xca\xca8\xa4\x11\x12\xe6\xd2'\x12\x1d\xee\x93\
+]\xcb\xe9,\xc6\x9aFzsIpz\xae\x90\x1f\x1c\
+k\xfbI\x8f=\x92b\xd3\x86:\xb7F'A\xeb,\
+\xe2\xce12A\x5c%\xa6G\xd0\x17\xd9R\xa1%\xc3\
+\xfa\x09x\xab a\x9fu\x12=vC\x22\x07\x02\xc9\
+:xn\x12\x15\xfc=\x89J\x09e\xeb@_\xb1{\
+\xc9\xfdQ\x094\x08\x1cvW\xe0\xc2>y\xff\x9e\x98\
+\xee\x81}O\x00H\xf0I0\xf4\xdf[w\x097\x81\
+\x91\x9f\xb3\xfb\x02t\xe3\xc6\xbd\x9f\xc4\xaf\xf7\x05\xf1\xf6\
+{\x88\x11\x81:\xfdc};\xd2\xa0#G%\x1a@\
+\xfb%p\x14>ZB\xff\x18R@H\x856\xd6\xad\
+\xde\xa7\xb7\x08t\xce\x05\x819\xe4\x98\x00W\x22\x8a_\
+\xa2\x80\x22\xbep^%\xec\xc4\x17\x9e\x9b\xcf\xefc\x1f\
+=\x17\xef\xdb+\xfc=\x11`\x7f4\x0e\x91\xda'\xfe\
+\xcf\xfeq=^;\xf9_\xff\xf2\xbe\xae\xdf\xfb\x08\xd4\
+%\x92\xac\xabB\xa5}-\xc1\xc1\xee\xd3\xf7\x12\x11\xee\
+\xdb\xfb\xf9\x1c\xd7o?\x8a\x0f\x0f!\xf3\xeb\xd7C\x86\
+}\x85\x13\x8c?\xc3\x9eH\xbc\xf6\xf3\xc1\xdf\x90\xd8\xb4\
+_=W\x05L\xd3\x9a \xb4\xbd\x8f\xc2\x8f\x96\xc0$\
+\xe5=\xb2\x90\xa4\xfd\xdb\x90\x11\x05Q\xb6\xd06\xac\xb1\
+\x19\xa0u1\xbf\xfaJ\xdb\x984\x0axw\x9f\x90\xf9\
+\x02\x9e\x14\x92\xa4Q\x0c\xfaI\x03;+C\x96\xe4\x7f\
+g\x1b\xe7\xf0\xd5!\x01\xa1\xf5\xa0\x1f\x94\xc8\xab_`\
+X\xd0\xd8\xc6'\x0f\x1c\x01\x1c\x89X>\x90\xe3\x0f\x0f\
+s\xbb%\x18\x18\x82\xdes\xef\x80\xa6c\x18\xd3\xcac\
+^y\xcdu\xbe\xc9JZ7\x9d/d\xd9@k\x8f\
+\xf0\x7f\xe4<l\x0aA\x00\x96\x95\x88b+VI\xd0\
+[\x9bdn\xc7d`\x1d,\xf7\xcf1\x9ej>\xfa\
+\xea(\xd8\xa0\x1c\x01\xff\xef\xe7\xfe\xcfA\xeaP\x1a\xef\
+\xd3\x91\x00\x0e8E\x98\x10\xf12\x8cH\xce\xb2RS\
+\x89\x94\x84\x80R\x9c\x02\x87\xe9:k\xc5s:!\xc9\
+\xab@\x8a\x91P1h\x8fM\xa84C\x18\xbd\x81\xbf\
+6\x90\x14\x85\xf9|F:H\x7f<T\x828.\xf1\
+\xd4\x1e\x9c\xbd4\x7f\x91\x15\x9bW\x0f\x07\x17RD\x8f\
+\x9d\x03\x15\xbb\xeb\xa3\x03'\x00G\xd0>\xcb\xc0vY\
+\x9e\xc3F\xbeT\x86&+\xbb\xc5\xba\xca\x90\xe64\x82\
+e\xdf^hp\x88\x04\x22X\xa0\xdb\xfa\xe9\x89\xac\x8a\
+\x0e\x85i\x9d\xd2\x91(\xee\x00\xcf\xf7\x89\xd9\xebz\x8b\
+\x90\xad\xa2,0\xab\xf3\x99\x95\x02l\xeaH\xde\xa6\xf7\
+\x86\x0c\xad1\x97OrK=\xdd*\xe3\xdfT\x8e\xc3\
+z\x1fX\xeb9z\x0c\x16\x05\xeb\x8b\xbeA\xe2\x97\x15\
+\xd1\xe9\x8fC\xb6\x00\xa5\x1cX\xebuf\x83V:?\
+\x02\xb3N\xa2\xd7\xc6\xf8TEN+\x07G2\xcf\xdd\
+\xf4\xc1\xe9C\xd3\x87\x86\xc0\xd59cX!\x812\xa0\
+\x98\x9d\xe3\xff\xbd\x90\x12^|\xfa\xa6@HUB\x90\
+\xe3\xd5Z\x1e\xe6\xa0ju\xc0\xfe9\xf7S\x22\x10J\
+\xf1\xcb\xd8\x0a\xec$~@\xc9\xac'\xc3MO\xebA\
+\xcf\xc0\xb2\x12\xba\x12M \xfa\xd6+\x11\x00\xfb'\xed\
+\x9f\xbc\x8f1\xafGWr\xc2\x05\x1fu\xe1!\x91\xa6\
+\xf2\x0f\x01B/BPH,$)\xe1\xf4O!\xc7\
+\x929\x96\xe1\x12\xc0\xaa@\xfa;\xe7Lb\xc3\x97\x16\
+\x17\xff\x87\x0b\xc4\xe7c5F\xa2\x99sn\xcb\x11\xa4\
+\x0f\xfc=GW\x053\xf5W\x8d\xd9\x02\xf9\x87\xb4\xa0\
+\x07=O\xad\x1c\xee[o\xb3\xfd\x0dz\x8f\xeb@@\
+b_\xba?\x89\x8e\xe4\x22){\xc8Q\xa2o\x05\xc8\
+9\x87\xbc*\x9f\xf4\xab\x04\x8d\x04\x97)2\x19\xb0@\
+0@\xf2\x1d\xbe\x122T\xe6%t@\x03!\x0f:\
+I\xa1\x00\x08\xdb\xbb\x04\xeb\x8f\x9f\xf0cKk\x88\x80\
+$\xf5\xea\xfe\x1d!C\x05W\xc0\xe0\x1c\x0a(;\xdb\
+\xbcD\x98\x9f\xb3G\x1c\xab\xac`T\xc2 \xeds!\
+Z@\xf7\x91<\xda\x07\x10\x0a\xfc\x02\xbd\xee\xf9\xba\x7f\
+i\xc8\xa0o\xb4\xf0i\x9dA\xba\xc4nt\x12b\xd7\
+I\xeftR&\x8eb\x87t\xb3\xbb\xd6\xdf\xf5q@\
+\xed?v\xb7\x8fm\x15@\xeby\xa6\x17$8\x8d\x9f\
+cW\xba\x9eq\x0e\x8c\xf1\xa3\xe7\x90@\xffz\xc8\x96\
+ \xd5\xc2R\xe3_qm\x98J\x91d\xb3\xecH\xdd\
+\x0f\x04O\x0f8qEd\xa2Iok!>\xb0_\
+Kx\x5c $\xc6&/\xb2\xf5\xc6\xe7\x18\x5ccc\
+\xab\xd2\xeey\xf5DF&\xbc$J\x0f\x0f\x0c\xd9\xde\
+\xbf\xfe\x1f\xb2\xcd\xf9\xb6O=\xd7>\x06\x90\xbf\xa5\x00\
+\xa5b\xaf\xb7_+\xa5\x8a\xbd\xd6\xa0t\xd8\xab%P\
+ \xa4\x00\x90d\x91\xd3\xb7\x87\x9cC\xc0\xdd\xa6\xc4\xd4\
+\xbeq\x9d\x19\xb8\x16\xe4_\x82J\xc5\xd0\xffi\x953\
+\xe5\xc2\xfd\x09\x94@\x8d;[<?\xb5\xf7l\xdb\xaf\
+\xbd\xb7\x9f\x9eQ\xd1w?\xfeN\xc0\xd9[\x01\xbc\x0a\
+\xa8\xfb8=\x81o\xfa\xf9\xe5\xcf;\x1f\x1d\x19\xe0\xfe\
+\xf8\x05\xf6\xabu5\x16\x90\xbe\xee$y\x12$\xf4\x5c\
+C\xc6\x95}\xebs\xe5{+\x85J\xbf\xf3\x04\x19)\
+A\xc5\xdf\xeb\x89\x02\xf7\xefs\xd9Y\xf7/\xf1#\x1e\
+q\xfd\xf4\xac\xfd\xcco\xec~\x85\xeb\xeb\x89\x86>\xd5\
+\xa3\x8f\x05\xb4\x7f\xfbkO\x10\xb0\x8b\xfe\xdf\xef}\xd1\
+W\xae\xaf#\x99{\xe2\xad'\x18:\xf2\xc0\xe7\xb41\
+z\xb5~\xfd>\xedk\xeb\xe4{~\xb8W\xcf\xd7s\
+\xc7M&\xe1{\x93\x90!1\xce\xdfW\x18\xa5\x17q\
+;\xb1'\x9d,S\xc1I\xc2\xcb\xe7\xf5\x16\x11H-\
+_\xb8\x19\x8c\x15\xcf\xb8\xe5H\x91\xfe\x09pb9>\
+\x99s\x92\x7fq\xfb\x07\xac\xbbK\xa7\xdeM\xb6\xca\xd8\
+\xf4_!\xf3\xeb\xb9B\xb2\x82\xf8\x7f\x87\xb9\xe4\x0cM\
+\xdc\xce\xd1\x81t/\x90\x07\x17\x1e*\xff\x91X\xf8|\
+>\xc8\xfdP\xd9\xf7\x00\xb1\xb3\x8f\x19\x91Ol\xe3.\
+\x16Ev\xb5\x81\xac\x90\x02\x91YI\x03[,\xd4\x1c\
+[\x06\xce\x98\xbf\xbf\x08\x19\x1c+$I\xa0\xc81\x96\
+\xf0\x11\x8b\x22\x5c\x1c\x99\xe9\xf7\xd6@\xaa\x02j\x99h\
+\x07\x09\xcb+\x08\x1a\x88\xa8\xccO\x0b\x80\x8a\xedYO\
+*\x12#P-d66<G\xd1F\xb4\xd1;\xdb\
+(\x85L\xd1\xb9>\x8eg\x1f{\xd6 \x98E\x22a\
+\xac\x95y\xc7\x1c]\x89\x07\xeb\x9d\x1bYe\xbf\xd8\xc9\
+\xbf\x1c\xb2U@\x90UL\xaf\x08YH\xa8\xaez\xb8\
+\xea\x86$\xd9\xbf8di\x15y\xe7\xf4\xce$\x93\xf9\
+\x5c\x8ew|P:\x96oX*\xd0!\x1b;:E\
+\x99\x15\xf1\xa5\xd2\xf7\xae\xa1\xc2\x15f\xe2}[&\x14\
+Tx\xe9%\xfc\xc3LL\xbcts\xc4@qK\xa1\
+\x06\xf5\xd1\xfd\xf2y>r1\x08\xebAE\x1aw$\
+\xd7\x95\xe2\x0a\xb7\xff\x94a?hu\xe1\xa8\x22wB\
+.&\xd3,\xc1\xc0\x81\xf1\xf9\xd9\xc2P\x89,\x0e\xa4\
+\xb1s\x0c\x83qX\xc9f^\xeb\xaeB\xf4\xb2\x90\xf9\
+\xf5\xcc\x90\x01\x91`?\xf8\x02I\xa7\xe0\x9d\xafw\xa7\
+#\xfa\xe9\xcc\xac\x82N\x81zs\x90\xb3\xa7x\xbaU\
+B\xc8\x91u\xda\xd7 \xb7\x0fXY\xc0\x8b\xac\x8f#\
+\xdc\xc9g\xec\xcf>\x07\xb8\xf7z\xfdyV\xda\x13Y\
+R\xe7\xfb\x0d\x19\x90\x98\x07\x9f\xe7\xac\x02S\x01\x96}\
+\x9d\x95\x81\xfd\x9f\x87ls[\xa7\xdbM\xb7_\xe6b\
+\xcb\xa83\x1c\x9e\xbb\xef\x8d\xfbzi\xee\xcf\xaf\xe4:\
+z\xff\x0c\x80g\xf7n\xa9\xa4\x97AQQ\xc0\xf1 \
+Pf\xe0@\x99\x9f\x9e\x0e\xfc\xaffo\xec\xdf\x87\x0c\
+\x95\x5c\xe3\xf1\xfe`\x91\x0dy\x90\xad+\xbb\xdf\xdc\xfd\
+\xc6\xee7\x06d\x08\x04\x87\x9ex\xadOz\x85\x8d!\
+t\x9e\xe8\xb1\xec\xd5\xae\xca\xa5\xc09\xe7yW\x80j\
+\x1c\x96\xb9\xe2\x02<z\xd4>\xa3'\xb3\x92W\x10x\
+\x89)\xfbG\xa0\xcc@Z\x1fdW\xdf\x142\x04*\
+\x89\x0c(\xb2\x22\x09\x17\xec\xffZX@\xe2\x91\x94r\
+\x04\xecCs\xeb\xb5\x0c|G\xc8\x16\xd8\xd49q\x1e\
+\x04B\xc8\xef\x90\xe1\x820\xd3\xbf\xf4\xb7}\xcdAg\
+?<w\xad\x17m\xfc\x11\xa8y!\xa4\x12\xe9p\xf8\
+j\xc8\xe6 Ve^\xe0*\xa0\x84\x08P\x11W)\
+3u$\x0a\x00W\x1e\xe6ak\xf1bW$\x08\xb1\
+\xfe\x0b\xfcU<%\xec:D\xd4\xf7\x9d\x94\x96#\x0d\
+\xc2(A\x9al\xea*\xfdE\xb6\xa7\x05DO\xbc\xd6\
+)\xf3\xe3\x93\x0c\xa9\xecm\xfa3\xfbO\x87\xcc\xbf\x7f\
+K\xc8\xfc\xfa\x80l\x91\xd2r\xc2^!\xb9c\xef<\
+7\x09e\x88\x04\xfb5\x7f\xbf\xff\x9d\x90\xf9\xbc\xfdT\
+\xc8\xe6/L\x1f\x0e\x19\x02Mv\x9b\x83\xcc\xaeK\xf4\
+\xa90\x9aN\x92-\x095\xb63\x119\x15\x10 5\
+3\xa5\x08\x12\x92~\xa6\xbf\x04J\x02\x9b\xfc?\xd3@\
+j\x0c\xaa\xe7\x0bQ \xb0\x14\xd0#Y\x14\x98\xf2\x07\
+ y@\xfa\x13\x89\xa0ru\xb8~\xc8\xd6\xfaW\x01\
+1\xff%\xf5.\xbf\xa3\x12\x9b8\x17\x12\xb1W\x09\xcc\
+l\x89\xa8i7\xb822\x90\xdd\xffn\xc80\xf64\
+\xcfG\x05\x8a\x02@\xd0|v\xc7\xf9\xec\xe4\xca*\xa9\
+\x0a.\x02S\x10l\xfbX\xe0\xa9\xe5Ce\x9e^a\
+\xbf\xec\x1f\x9c\x0d8a\xf8\xc1\xfc\xc0\xdc\x87\xa5\x97!\
+\xab@\xc7\xfb\xd4\x02\x08*\xdc\x03\x12\xf2\xfcH\x95p\
+z\xd4u\xf1K$\xd0\x05\xac\xb9O\xab\xe5J\xe0\xc6\
+\xbe\x09`\x90\xa9\x09\xec\xbd_\xef\xd5\xee\x81\x7f'\xd3\
+\xb3\xfe\xbd\x15\x8d^\x11@\xf7\x00\xbcs\x0a\xe4\xfbM\
+GB\x06\xa4\x83\xc2\xa0\x16\x1b\xeb\xd4\xc7\xd0\xf5\xc4\x9f\
+\xcf\xe9\xec\xf0\xce\xb3W~Koy\x10\xd8K\xb4\x08\
+X}\x0e\xfd\xe0\xf3\xb4\xc4\xf5\x16\x01\xe7\xb8\xf5\xeeW\
+\xe2\xc2~e\xcf\xe8/\xfb\xb6\x91\xe0\xd5\xff\xf7\x04J\
+\x1f\xeb\xd8\xc7\x03z\xae^!\xca\xf3\xbc\x1d\x13H\xd3\
+s\xfc\x00\xf6\xa4\x93\x8c\xe7\xf5\xd7\x14\x9cN\x22\xdd\x13\
+\x0b\x1d\x81\xd0\xb9\x22zB\xc1>sN\xfb\xb8D\xaf\
+\x9d\xcb-\xcf\x0b}9}:d8\xc7\xde\x8f_\x87\
+\xdb\x8c^\xb4\x9e\x9d\x93\xa3%\x02\x8eI8\xd0/}\
+\x1a\x9b\xf3\xfb\x94\x151]\x89\xd7L,\x1e\xd9\x7fm\
+\x96\xbe\xe0'\x0f\x07@%SF8\xd8f\xaf\xb0\x19\
+,s\xd9Ox\xc4,\x11`\xbcz\x96P\x1c\xa7\xcd\
+\xf2\xd8\xbc\xe1\xaf\xe5\x0d\x8e\xac\xfeWZ\xba\x88\xb7\xf9\
+\xee\x01\x85\xbc\xf5\x90\x80\xa0@ \x07\x8c\xeb\xf3 \x22\
+,8ex\xf5s_ ;\xe16\xde1+Gw\
+\xdb\xc6\x0cU mA8`>\xd7\x83r\xbd\xde\x1f\
+\xeb-\xf2\x86L\x90\x14\xe4]\xc5\xc7\x03\xe0 \x0b\xa4\
+\xbd\xaf\x03\xdc\x1c\xbb\xe9\xcd!\x83\x03\xee\xa01l*\
+\xa12W\x0e\x0e\x87\xd3\xc1\x860\xb0A\x12B]\xa4\
+1Y\xe9*h\xb7\xbf\xa7\xe0:\xb4\xcd~p?\xfe\
+\xde\x17H\xaf\x8c\xa5\xfbdX\xb2\x17\xb8\x0eJ:\x82\
+\xd3\xbf\x84\x0c\x15\x9a\xcf\xa6\x22\xd4:\xf0\x1b!\x8b!\
+^{\x89A\x9a\x03\x00\x1a\x8e\xdd7\x86dE\xea\xda\
+\x998\xb9\xdf\xd0\xcb\x88\x5c\xea\xb4EV\xc5\xfb\xef\xc3\
+\xf3W\x11\x8d^\xb93\x06\xb6m=\xda\xe18<v\
+0\xfc\x0c\x87}C\xe1!w\xfc|>/\x86\xccA\
+f\x90@&!QTf( \xa4t\xef\x0b\x19\x1c\
+\xfa$9\xac\x1e\xbf\xcb'\x1bv\x1a\xea\xda77\xc8\
+D\xc0-\xf29] \xcf\x97\xf3\x9ac=K\xe1\x08\
+(9\xf2\xa0\xf6\xbe\x9c\x0b\x8a\x1b\x99Pg\xe3e\x98\
+\xd2\x11\xab\xfb3\xd6\x8c\x22?\x9a\x86,\x03\xcf\x9a\xe6\
+\x90\x10\xa6\x22_1\xb5\xa3C\x12)4\x06A\xa2\x87\
+b\xf7j\xcaCB\xfc\xcb\xa0\x22\xa1\x04\xc1\x7f\xf5Z\
+qRY.H0$\x82\x1e\xb8\x9b\x87\x0c\x8e&R\
++\xe7\x17\x19\x99\xfbt~\xde\x93\x89\xd5\xf3\xa5\x81\x15\
+\x08\xd9G\x0cZ&@\xccy^(N\xaf8Th\
+\xae\x9e\x95,\x9f\xe7\xbaTp\x7ffe\xad?\x86D\
+\x07\xe4Z\x05(\xa1\xe9\xfb\xc7\x86\xcc\xdb\xeeGw?\
+\xb6\xfb\xb1\xad\xa2V\x01-\x87C\xe5\x87\x1e\xcc\x04@\
+!\x13rn\xf9\xf4\xcd![`\xbe\x8cc\xbd\xcb\xc6\
+\xe5P\x09\x04-PYi-\xf2.\xfb\xb0M\x071\
+\xe6+\x86..c\x17\xcdS\xa7\x07\xac\x83qj\x02\
+D\xfb\xc6T\x00\x10{z;+|\xf4\x07\x0e\x8d\x82\
+^B6A\xde\xa4\xde\xab\xf9\xd7\xbd\xf5*\xd7\xad8\
+s\xeck\x01\x18\xd6v\xfa\x15\x0b:D\x0d=\x89\xc5\
+\x1c\xa4?{\xedU\x12J\x7f\xe6\xcf\xeb\xbc\xb2[H\
+\xf9\x04\x0a\xe9\xe0!5\xac\xca^\x0f\xf0M\xb1x\xd1\
+Z9\x98\x1e\x97\xd0t\x90n\x01\xa1\x82\x00\xf6\x7f=\
+\xe5\x12\xebZ\x03r\xcaGU\xdaA\x10!\xb5\x12\xf9\
+u\x8c\x03\xcc\xae\xb1\x9f\xfc\x12z\xd6T!\x091v\
+#9w\x8a\xd3\xc0~\xa6\xbf\x8c\xe3\xa5\xb7@\xdf\xff\
+2d\xe8\xedF\xb6\x97c0k\xec\xa71\x0c\xc8\xc6\
+\xc8\x00\x00 \x00IDAT\x8e8U\xdc\x9f\x04\x80\
+\xe7\xca1\x93H\xa1'\xdc\x07\xf2;\x95\x18\xe3\x8b\x05\
+\xb2\xe9g\x08L+1\x88#\xc6\xf8L\xfb\x1b\xe4[\
+%\x15\x22,I8\xab\x95\x0a\xe2@+\x89V\xcdD\
+\xcc\xa8\xdc\xd7yO\xfb8\xfdr\xc8F\xfa)\xc0,\
+D\x08}!\x81\x07\xe9A\xff\xb1\x7f\xaeS\xcb\x82\xfd\
+\x0ai\xd1Z\xc1J_h\xcd1=)\xed\xba\xf9\xda\
+E\x1a\x98\xe3\x80\xcb/\xc9\xe7\xb8\xf8\xa5\x8f\x18\xc6E\
+\x1a\xbf\xa8\xd5@gd\xee\xe7\xb2\x17\xf9\x7f\xd3\x8f\x86\
+\x0c\x0e\xbf\xc0\x8f_vbK\xf4\xbb/\x89>\xf7%\
+\xe0\x13\xc8\xb2[\x02i\x89s\x09\x93|\xff\xe9\xfe!\
+C@\xd7\xa1\xca>\xdf\xfaj]pc\xf4\xbf\xdex\
+\xfa\xb1\xf7\x16\xf7s\xa8G\x9e=m\xe4xEN)\
+\xc1\xa95\xd4\xf9\xe6\x7f[/\x81\x18\xe4\x8a\x00\xcbz\
+\x1c\xa7\x15\xe0\x98\xa9\x02m\xea\x00\x7f\xb6\x02g\xef\xcf\
+\xbfV\x08\x11\xa85r\xbd\xfa\x7f\xbfw?\xf6/\xa4\
+\x8f\xe7\xc8\xbf\xed\xe3\xe9\xfa\x5c\xfb\x9e\x08\xf0\xb9}\xfc\
+\x9f\x84\xb5\xc0\xce\xbax_\x85\xd96\xd6\xaf\xec\x90\xe7\
+*\x81\xe4s\xfa~k$\x8d\x95X\x95\x00\x10\xf0\x8b\
+s\xd8{\x7f\xdf\xa7\x18\xf4\xca\xbf@\x1a\x09\xe4\x97C\
+\x86sc\xfd|/\xf1\xd3[\x00\xe8}\xe7\x89\xfe\xe0\
+\x7f\xb3\xb7\x10A\x10x\xfcg\xeb\xd4I ]\xbf/\
+\xfa\xd8\xdf\xf9\xea\x5c\x0f\xd6M\xdc\xe5\xbc\xf9\xb9s\xec\
+s$\x1a@\xfc{\x5c\xd69\x5cL\xc5\xca\xc4UM\
+\x8bs~\xc4\x03\xe9W\xd4\xf9\xb7\xcf:'C\xe3\xa0\
+(2iv?\x0b1\x90VG\x8c)\xc2\xc2\xbf\xb0\
++\xff\xccP\xb1I2?\xbd\xed\xd3\xdbB\xd2\x91\xfb\
+\x9e!\xb3\x10f\xe5:\x19\x90\xbc*/\xe0\xf4\x81\xc5\
+\xff\xa4\xa5{w\xab\xd8\x08\xa0<\xe0\xa8\x90^p8\
+H\xb1\xad\xdf?\x8c'\xf4\xf7\xe1~^9\x0d\xd4\xb7\
+\x0d\x8ea\x84\xcb\xdf584q=\xc6:\xa9\xa8|\
+r\x08\xa0\x8c\xb7\xca\xcaqe\xcc\xf5\x8cS 2\xdd\
+\xa6\x16\xdc23\xe7\x0c\xbf\x8a?('\xc4\x83D\x81\
+\x00T\xe0`#S\x04\x1cu\x8a\xdf\xfa\x08T(\x06\
+\xf7O1\xf4\xc0\xd2\x06\xf5\xe09\x86 ~z\xc0e\
+\x0c\x13B9\xfdl\xc8@Z\xc8a\x02Y\xa3\x10\x8c\
+\x11\xd3\xc2\x81\x8d]\xa0&\x03\x8b\xa4G\xe5\xe4{B\
+\x86\x04\x12\x08\xab\x8a\x9eu\xfe\xadd)\xfe\xd7Tp\
+\xa7\xae\x19\xfe\xc3\xd1\xb5\x17\x90\x033\xbd ds\x00\
+\xf6\xef\x09\x19\xd8I\xc3\x01\xfd\x8b4\xf4\xbf8pU\
+\xa8D\xc6j\x7f=\xaf\xff\xc5\xc3T\x87`h\xb8m\
+*\xb8O\x0d\x01d\xf4\x8c>:I\xccn\xbcA\x12\
++\xa1\x04\xb2\xf3\xb64\xd0WL\xa8&EF1\xa8\
+\x00J\x84\xe0\x960&\xacC\x9e\x182\xef\xc3\xe0$\
+\xa9\x9c^\xfe\x22\xe7\xd1#9\xad\x81\xcc\xf4\x07\xd3\xb3\
+\xa6g\x0d$tH7A\xd4OIvm,\xf7Y\
+\x19.\x07\xca9\x02M\xa2@\xfb\xb8\x11\x99L\x90I\
+\xeba\x7f\x1aG\xe2\x1c\xc8\x84\xe68G\x0e\x05\x92\xa9\
+c\xc8T\xce]\xbd\xefk\xe0\xf6\xf6$\x8d\xbbWB\
+u\x9d#\x89\x01\x95\xca$M\xe3\xe8\x15y\xdd;r\
+\xdd\xdf\x9b\x95\x8b\xe7\xe48&\xf7g\xdd)\xd6L\x80\
+\x16\xe48\x1d\xa3\xe9\xf1k\xe2s\xfa\xcct\xc6t\xc6\
+\x90`\x82X\xd0\xcb\x98\x09\x86\x9a\x12q4\x13c\x0c\
+\x80\xd6\x0c\x15g\x0a\xfc\xe4\xach?i\x9d3~\xc2\
+\x952@\xf6\x5c\x18\x12dd\x128\xb9\xbe\xf3\xdd/\
+\x8eE\xf5\xe6g\xe0\xb0\xbfh\xc8b\xb8\x16\x07d\xfa\
+p\x92\xdeqHT:8\x06\xd6U\xc0\xaab\xcf@\
+\xa9H\x22\x7f\xd5r\xa1\x12k:\x8aD\x90V\xb2\x84\
+\xb4\x17\xb2\x0a\xf2@%B\xa2A\x22.\x1da\xadX\
+E\xde\xb7|\x0d\xe4g\x90*\xf4/\xbd\xc8P'\x09\
+#r\xbb\xc3\x15B\x06\xe4K#\x93\xaa\x96\x1es\xc6\
+Me\xe1\x08\xab\x809\x07\xa0}\x9f\xccV0\xe7J\
+\xc0\xcd\x81\x82X\x80\xcc\x90\x90\xe4\x10\xe1\xa8q\xfep\
+QxN\x10I\x1c\x0b\x09W\xc8\xbc\x1c7)\x80\xab\
+\x96\x90\xeb\x86\x0ccQ\xd9%\x15\xbf\xe4\xc08\xe1w\
+\xf3\xd5\xf4\x0b\xef\x8fL\x97\xfe7vR\x0b\x9b\x8a\xb4\
+V\x08\xf3\xce%\xb4\x8d?S\xb1h\x81@9\xb6\x1c\
+3\xfe\x80\xc0 95 \xe4\xea\xb9'R\xaa \xe4\
+I\x16+\x917\xbd?d\xf8?\xeb\x97\x09_SP\
+\x0a\xe9\xf8\x93\x8blv\x00R\x22\xf7\xcft\xe7\x90\xe1\
+\x1c\x80\xf0\xe2\x1c\x02=g?s\x9d\xabE\x05\x19h\
+\x06\xd6\xfb\xdb\x86\x0c\xd0}\x10\xc8\xce\xfd\xa3\x22\x9d\x01\
+*\xbb\x8d\xdb\xa1\xc8\xa5\xe8-\xd0q$\xaa\x02\x0a\xe7\
+VE?\xa1\xa9\xe5H\x9b&\xd3\x10g\x15\xf8C\x1c\
+\xd8\xff\xa0\xfaz\xe4\x05l\xf4\x88}\xacP \x90I\
+\x92\xbeB\xb8\xf1w\xb2u\xc8\xf8\xbfBt<:d\
+\x18\x0b\x98H\x86\xc3mB\x06;\xcbObg\x04F\
+\x89\x94\xabV)z\xca\xbax\xee\xc6\xcf\xba\x1f\x81\x96\
+\xfb\x11\x00xP\xbd\xd5H\xe0(\x90r\xee;\x14\xda\
+\xfa\x0a\x14\xe9/\xfe\x91\xf5Hn\x97\x0a0\xd8\x09\xcf\
+\x8b\xdf\x09\xb9'\xc0i\x81~\xb5$d\x22\xbaZ\xcb\
+ \x17\x04\xc6\x12\x5c\x10\x84\x99\x80\xac\xf3\xd9Y\xc7\x05\
+v\x12{\xd6\xc1\xba\xf4V\x00\xeb\xe1\xb5\xcf\x97\xef\x1c\
+\x07Z,A\xed\xd9g\x019\xbf\x97^\xe1WB>\
+\xd0\xcf\x02n\xebg?6\xb2\xc0\xf2\x03<\xaf\xb1\xa5\
+x\xfc\xbb\xde2+\xd0u}\xae\xab\xb3\xf7\xdb\x8f\xae\
+\xcfs\xb2\x8e\xd6\x8b\xffn\xfa\x85\xcf\x95\xc8\x810\xf1\
+>\xfc3~\xa7\xf5\xb5\x9e\xdeW\x02@\xe0o_\xf3\
+\xdb\xe85\x7f\xdf\x13/\x90\x1c\xecUg\xf3\xb7\xfe=\
+\x01\xe0\xef\xfb\x18@\xd7\xc7\xdf\xed\x89\x08\xe7\xb9\xeb\xc3\
+>\x1e\xd0\x97\xf7\xed\xd3\x19<'\x09\x86\xce\x11\xe0\xfb\
+N\xaa\xe8\xfd\x5cW\xdb\xc7\x85\xbc\xca\xc2\xc7\xf4\xd7!\
+\x83\xdf+\x11\xe7|vrT\x88\x1d\x89\x00\x08a\xbf\
+\xef-\x17\xceEKt\xd4T\x0c\xadE\x10\xad\xd6\xdf\
+\xfeI\x7f\xe4\xc8\xb4\x0f\x19 ii`\x96\xdb\xb8\xcb\
+\xaaP\x17\xc7\x19\xfbv\x98\x85\xc7\x0c\xec\xe3\x02g\x10\
+\xe4\xc8\xe7\xdeg8\xf8}~\xa6D\x80\x80W\xc0\xe1\
+A\x9f\xb2\x84&\xab\x02\xfd\xd6ac\xdb\x189\xa7}\
+\xba\x5c\xc8\x00\x1d\xbe\xde2\x81}}\xdfK\x0c\xbd\x96\
+\xe6\x84F`\xf8\x9a\x81\xdc+\xc2\xe6\x7f\xd8 Q5\
+g8\x10\x0c\xaf\x1e\x0c\xd6\xf5rl\xe0U\x12\xda*\
+\x80\xc9\xcc\xf5\xf4\x84\x90\xc1\x11\xa7\x18\x05&\x12\x08}\
+<\x05\x05ic\xfbr\xe0\xfc\xdc\x86\xe9\xf3.m \
+\x95#\x0f\x18R\xc0\x01L\x07fzp\xc80fF\
+\xa5Ie\x0a\x19_\x92\xbbQ\xb4U\xa1F\x82\xa5\xb2\
+\xee@0\x8c*v\xbf\x182d\xac)\xa8D8\xd4\
+8\xc8{'\xc9\xa1\xca\x93\xca@&T\x0e\xf7\x5c\xb9\
+%T@w7\x0cYz\xb0WN\x85\x93B\x96\x0d\
+\xbe@1\x17\xe8\xd6?d\xa0q\xef\x0cx\x82\xd5\xfb\
+>!C\xcf\x1fh\xa6\x9e\xca\xf8\xe9+\x87\xff\x03\x95\
+\x0c*\xc0G\x0c\x0e\x05\x85*\xf1%\xf1\xa3\xc7Ye\
+\xb7\xf7*y\x9e\xd9RP\x10\x7fd\x86\xc6\xbbe\xef\
+bA\x0d%b8\xce\x0c\xb4\x00\xf0j\x894q>\
+\x8cG\x03\xedd\xe0\x93\x84l\xfa\xef\x90\x81u\xfa\xd6\
+\xf9\xbe\xa6\x05x\xff\xcej\xcaA\xa7h\xfc^\xe6\xf2\
+\xd1\x87G-d\x8a\x14\x1d\x12\xbf\xef\x0aY*q\xcb\
+\xf3*r#\xbdQX\xe1\xad\xdf\x06\x99_\x0dg\x1f\
+[y\x99L\x8c1\xf8\x0c7\xbd\xf1\xfe\x0c\xd8\xee\x95\
+\xec\xd1\xc6di]\x01\xadG\xf2\x98\x15v\xe3\x8a\x8a\
+\x1c\xea%\x19\xd8\x80\x90>\x22+\xc7\x902\xce\xe1\x0f\
+%\xe4\xd9\xfe\xf6\xbc\xdc\x87\xfd\xff\xa6\x9c\xd6\xd0\xa7j\
+009F\xaf\xc8\xf3\xb0\xc5\xaa \x99\xb6@_x\
+\xfe\x17\xca\xfb~^\x8e\xdd\x92\xe8H\xe8Y\x91\xb6\xbd\
+tu\xe4\x0e\xbf\x93\x15\xd3\x84~!\x85+\xf6k\xbd\
+\xae\xeeG \xce\xd0$\xa7\x03(|\xb1\xc9\x1b\x97\x97\
+c\xf9\xf4\xd2\xfa?\xdc\x12U\xd1\x86\x00\xd0\x13\xa7\x22\
+\x89\xc4\x93\x03\x92\x01]02,\x9c\x0cZer\xbf\
+\xef\x9f\x16\xb2\x05\x02\x87[\x86\xcc\x7f\xff\xca\x90-A\
+X\xe7\x1cd\xfe2+\x99\xa8\xc4A\x91\xb3f+\xc8\
+\xe1q!C\xc2@+\x88V\x08-F\xf4}\x9e\xbb\
+\xc3\xadC\x06$\x04\xae\x88\x5c\x9fc\xa0\xa0\x1c\x09c\
+i\x8dwTA\xf9\x83\x90\x0dAQ\xe4\xb3*'\xdd\
+QV\xb9\xcd\xf3Wc\x17\xb3\xc2m\x5c\x9a\xc4\xb5D\
+\xad\xf1pU!\xf8\xd9\x15Ir\xb8\xd3\xe1\x8e\x87x\
+NO\x0e\x19\x12#\xf63\xfd\xc5q\xa4\xff\x04\x86I\
+\xceh\x7f\xd7u\x0a\x94\xcd#\xe7\x98\xa9h\x98\xce\xe2\
+\xe7\xd6\xcbT\x0f\x89F\x8e\xbe\x0a\xaf\xe9\x04\xec\xa0\xf1\
+\x91*\xba\x02\x13\x09\x0ac\x03%2\xe8\x9b<\xe7\xc8\
+\x02\xeb\xbe\x93\xe5\xbe\x02P\x89\x07z\xdes\x11`\x1a\
+\x93\x99\xfe\x8d\x16\xac\x1a?(\xe1\x82<\xd7\xbe\xe2\xe7\
+d\xa5'\x98\x86\x82k\xa8\xae\xc7\xf8;\xc8 \x95\xf1\
+\x8b\x84\x0c\xcf\x81\xff#\xd1l\xdcjw\xfc\x1b\xc9\xf0\
+t\x83\x90aj\x00\x88:;F/\xf9\x9c>\x1d\xc9\
+y\xf2<]\x07\xbd\xc5\xef\x13P\x08\xb0\xe9M\xcf\x1d\
+\x82\x02\xa2R\x01$\xc9V\xab\xd7\x1b\xa4\x9f_\x93\xcf\
+\xa1\xec\xa9J\xe1\xb5C\x86\xe7\x9cd\xbe\x0a\x141\xf4\
+\xf60\x92\x07B\xea\xe9\xa5e'\xad\x1b\xfd\xc0\x9f\x03\
+\xc17\xcdI\x81\x88\xfe\xe9=\xc9\x9du\x1f\x82\x0c\xa2\
+\x05\xf7Q\x06\xecH\xb5\xab\x977[_k\xdc\x18\xbb\
+\xd1\xb94 \xf7@\xc4%\x12\xdc\x9f\xb1\xce\xb8U\x5c\
+\x8f\x00V`\x01\xa1\xc0\xbfU\x89l\x90\xe6\xaax\xda\
+g\xfc\xd7F\xce}\x8c\xfe\xc2=\x00Y\xc4\xcf\xe8\xf3\
+\xe6\xed;\xfb\xc7\xf5v\x8e0~\x91\xd6;\xebEO\
+\xf6\x04\x84\xff\xef\x10}\x81\xba\xeb\xe6'\xf9\x5c\x7f\xdf\
+\xd9\xed\xed\x7f\xc8\x88\x8f\x85\x0cz\xab\xb5\xf8\x95}\xe8\
+\xd7\xc3\xdf\xe1g;\x8f\x10\x0f}<\xa4\xc4\xb5\xcfs\
+\x1dg\xb5\x96\xc3\xe3!W \xb2/\x132\xb4\x8aH\
+\x9c\xd8\x17\x9e\x7f\xef\xe9\xef\xe3\xfcz\x02\xa0\x93\xfd\xf5\
+V\x01~\x12\xfb\xe8\xf9\xd3\xb3>\xcf\xdf\x89/{k\
+\x86\xfb\xf4y\x9dl\xda\xbe\xf5\xda\x11\x0a\xbdE\xa0C\
+\xeb;r\xc1uA\xec\x99\xeaa|2\xbb\x06\xa1\xe0\
+\xfa\xfbxD\x88E\xcf\xcf}\xdbg\x1d\x81\xd1[\x04\
+\xfc\x1e\xf9\xf4#B\x86\xfd$.\xcc\xfdp\xa4.\x94\
+A\xa7\xe0\xe7\xed0\x9d?\x83\x80o\x1b\xc8\xf9:y\
+\x85J5\x07\xcd\x81\x0f\xf7\xf4\xc2\x83B\x84\x04\xe8\x86\
+\x87A\xd0\x8b\xe6\xfbP\xb7\xdf1\x90\x89\xb9p7H\
+\xc1q\xbc#\x0c\x1e\xe7\xc3\xc72\x7f0\x15\xfe\xb93\
+\xa3{\x83\xacX\xdf;\xe7!\xdfg3`\x15\x00 \
+\xff\xdaz=V\xe8\xe3\x0733s\xdb\xac\x80Qp\
+*~6\x90\xfb\xb0\x0e\x9d\xad\xbf\x8f\xe9\xb3\x11\x1c\xc8\
+\x9e\x08\xe8\x19\xc6\x9e0\x10\x00I\xb8\xb8\x7f\x19l\x0e\
+5\x87\x9eCr\xe5\x90\xc1\xf1\xcd\xde\xa7\xc3\xa5B\x86\
+\xb1sXx\x91\xda|%{w.\xbb\xee\x93\xe9\xa9\
+!\x0b\x19\xcfj`^\x9b\xd0\xfeO\x85\x0c\xa4`2\
+e\xe6y?7I\xab$\x96(n\x90\xc7d\xbb\xaf\
+L:h\xe4w\xed\xbfs\xff\x9d\x83Cc\xbd\xc3\x1c\
+\xfcg:\xce\xcf\xccJ\xd8\x1d\x86\xca\xa4@Z\x05\xde\
+\x97\x96\x06S\x02\xa2\xe5\xe0\xd7\x07\xb2!\x81TB\x9a\
+j\x8e\xba\xc4\x93J\xa0\xde1\xcf\x07\x92C\xa2Ee\
+\x10\x9b\xaf\xdeO\x867\xc7\x1cN/\x0c\xd9*\x00\x05\
+u\xbe\xf3\x22'L\x0f\x0dYXEW\xd2\xb6\xac \
+\xd44\x0f=\xcf\xe6\x8c\xda\x97\xa0\xbc\x90\x02\x9e?\x04\
+\x87\xe7\x9b\x8eyq\x0b\xd8\xbfm\x5cN\x84\xfd\x11\xf8\
+\x1f\xbe~8z8:\x8cO\x93\x80\xd2\x0bE\xbf<\
+=9\x0b\xb0\x93f\xc5\xa9\xa0\xe2*{\x90'\xbb<\
+_\xce\x19G\xf2C\xe9\xb8p\xfc\xb0\xbe\xab,\x1f]\
+\xaf\xa7\x1c=\x01\x8fDW&N\x0e?\x122\xf4\x9a\
+>|\x0d\xa0O85+\xbc/\xcf\xe9\x0d\xe6\x5c\x0b\
+\xb0\xaf\x97,\xea\xc6\x1b\xeaE\xbb@\xc8\x00e\xd7\x13\
+n|\x1b}\xa2%@\x05\xfe\x07\xf2\xf9\x0a\x8c8\x9c\
+z\x8d\xb5D4CW\x99^\xac\xf2\xdf\x192\x18p\
+\xdc&9\xeem\xff\x9b!\xcb~Z\x12b\xd3\xbb\xd6\
+\xf1\xab\x0b.\xea\x93\x83\x03o\xdf6\xa4QA\xda\x9d\
+\xe3'\x85\x0c\xad\x12\x1cO\xfa\x13I\x97\xa92Z\x03\
+\x12ivxh\xc8\x90\xc0\xe4\x10I\xd8$kz9\
+\xb0\xdf\x14\x92\xdc\x1fs\x80\xb6\xff\xd7\x90A_\x09\xec\
+\x04bz\xd2q\xb8\x18\xbb\xa5\xd7\xf7.!\xdb86\
+\x15\xe1B\x86\x81\xbc\x9b\x12@O=|\x91-\xe0\xf4\
+\x9c\xb3B<\xfdI\xc8V\x11\x9f\xee\x182\xe8q\x86\
+\xde:KP\xff^\x22=\xd89\x10f\xfb\x1b\xe9*\
+\x88\xad\xc0\x88\xa3\x92\x81\xf7\xf4\xd2\x90\x81\xcc3\x03\xc8\
+\x22/\x14@y>z\xb5A~\x05^y}\x87[\
+\x85l\x8e\xe5\xfec!\x83\xdd\xa7?\x91\xf3\xe1@\xc8\
+\x8an\x05\xbc\xdd\xc1\x95P\xe3G8\xe7\xbe\x97`\x94\
+\xb0\x95p\xf1\xbe\xa0\xce\x12\x0cX\xd5\xf3>\x8b\xcc1\
+{\xc5\xcb\x8e\xd1w\xecf\xae#\x16\xfb\xe9\x1bB6\
+H}Ma\xc8\xf3Pc\x82;9\x16n\x03\xd7\x05\
+)\xa7\xf79\xcfK%\x14\xf8Q\xe9\xbfT\xa2]\xc0\
+\xaa\xb2\xce\xbf0\xa5%[\xc1*a\x93\xf7+\x81\x86\
+\xe5\xb9\x90]\x10b\xbd\xf7\x99>\xf1\xfeZ\x13\xcc\xa7\
+\xcf\xc2\xc6B\xa2\xfb\xaa\xe1\xf9I\xa48\x97\x17\x0a\x19\
+\xa0\xfc>\xa7\xebm\xfb\x9d_\xc4\xf1e?qR\xa4\
+\xfe.\x081\x8e\x96|^\x85\xc4\xe2\x17\xf2\x17\xd9)\
+\xf6:[\xe8\xa6_\x0a\xd9*\xda\x87\xff\x152\xb4&\
+\x05\xa7\xd0g7\xa4\x5c\x05\xc4\x9e\x87@\x93\xa3\xcdo\
+u\x9f\x8dl\xaf\xceg&,*Qc\xbf\x09\x18\xda\
+|\xf1\x22k\xd5j\x02\xd2\x9d\x9f\x87\xb3\xaa\xd6U\x22\
+.\x03\x84\xc3_\x87\xfc\xffTDM\x19b_%4\
+\xfc\xbd}) \xe3\x8f\x0aX \x14\xec{\x01\xa9u\
+\xb1\xee\xf6\x8b\x80\xc4z\xb1\x0f\xde\xf7x\xe3\xe2\xfa8\
+\xc5\x1eh\x09\xc8z\x0bAO\x5c\x08\x84\xe9o\x15}\
+\xd7\xeb\x1c\xf8\xff>\xef\x1eb\x00\xe2@\xe2\xa0\x93/\
+\xd2\xbf\xde\x8f\xdd\x00\xd9v=\xf4z\xe72\x10\xc8K\
+\xbcK<\xd0\x7f\xec\xbc\xcf\xf7>\xec\x9c\xbf\xd32\xda\
+\xa74\xf0\xdb|\x89\x9bz\xbc!n\xc0\xe9a|\xbb\
+}\xe4\xf3\x5c_\xaf\xd8{\x9e\xfc\xcd\xff\x89\x0b\xc0\xf3\
+\xee\x7f\xe7\xf3:B\xc0\x17\xbd\xd1\xa7\x9e\xf8?\xf7\xd7\
+\xed\x89\xeb\xf6\x9cz\x22\xa2%(j|\xa6\x04\x1bh\
+~\x9f2\x873\xc4z\xb4\x02F\xc5/\x125\xc7#\
+\xb9\xa5G\xfa\xf5\xbb\xdf\xce5\xe0<B\x04Bd4\
+$Lq\x0c\xf1S\x12\xe1\xc9\xbe\x1c\x99>6\xcb\xe9\
+\xc7V\xaaK\xa1 \x0dqp.\xb3\xd4\xe2\xd6\x00\xe1\
+Z[E\x93\xe3\xb3\x98\xa3\x07\x0c\x0fd\xcc,]h\
+\xf8~\x1cO\xb7\xdf\xc8\x00\xb5\x02,\x0a\xf8\xaaC\x0f\
+\xa3\x0c\xa4JN\x18\xc0\x7fL\xa8\xf7\xa3\x06C\x10\xcb\
+\xf1\x91|\xb0g\x0d\x81\xf0_-\x93\xd3\xd7J\xdb\x13\
+\xb6L~\xcd\xafe\xa8\x92$\xa8\xd8s\x050 \x98\
+*\x8f\x16\xda\x06\xa4\xe8d\xae:T\xa5\x7f\x1do\x1c\
+\x9f\x9f\xf7\x8a\x7f\x7f\xedl\x986\x8euw\xa0!3\
+\x5c\x0f\xc3\xcd\xc1P\x01Ir\x9d\xca\x5c\xeb%\xfc\xa9\
+dIW)\x02\xad\xd4K\xf7\xfc\xac$q\xb0\xb3\x02\
+[d4\xdf\x95\xa4ww\x08\xd9\x02\x93\x0a\xf8r,\
+N\x8d\xc32.\xefWB\x16\xc3\xb7\xf6h\xdfg\x0d\
+\x94d&\xf7\xf7]\xc7\xde\xed\xaf\x182$\xb0\xb4b\
+\xbc{\xa1\xa7\xdb <'/\xa0\xea5\x11rRN\
+\x19\xf8\xb5\xdc7\x01uz\xf4\x22\x1b\xe7Dg\x01E\
+b\xc9`\xc6\xa7\x0cdj \xa6\x8b\x03\xf0\xfa\x9c\x0f\
+\x1f\x8e\xccMB\x06\x07\x9b\xa1\x02\xbd\x05\xb1{]\xc8\
+@.\xf5mIZ\xf9\xe5\x95\x9cO\xd2\xa8\x02\xff\x5c\
+\xbfB\x5c +Lva\xc8\x87j\x91\x91\x89\xe4\xb8\
+\xeb%\xc7B\xaf\xf7M \xaa\x22e_\xe7T\x86\xaa\
+\xc0\x81B\xabdd\xa6\xbdH2\x7f7+\xca\xa6C\
+\xe8eTYR)\xe2\xc8\xf4^\xdfoL\x87\xe1\xbf\
+\xd2\x80\xc9|3P\xd6=\xa7p\x147\x81\xfd.`\
+\xc3\xe9`\x9c\x99\xfd\xcd0v(\xde\x97\xd2\x80\xe7\xb8\
+\xb3j\xb9\x00u\xceqN\xd3\xe9!\xc7B\xb7\xca1\
+\xf8\xd7t\x9c\xb4\x14\xf9\xbc\xb7e\x80\xa5E\xe0\x0f\xd7\
+\xf5\xe4\xa8\x96\x83,\xf3\x0e\x8a\xc9\x00\x08\x18s\xaez\
+\xe9\xd3l\xd5\xaa\xfbMGz\xff\xa8\x90- \xa9\xc4\
+\xcee\xf3\xf9\xbf(\x11./K=\xef\x8b~N\xee\
+\x81\xc3i!\x1bD\xb6 \xe4\x02F\x0e\x005\xa6G\
+;\xd7C\xc2\xa9\x12\x02*\xdb\x1cd\xad#\x0cf\x06\
+\xaaH\xc1\xf4\xb4W\x05\xdf\x98P\xbd\xd4ZsRm\
+\xee\xee\x1b\xb2%f\x04L\xf4\xcb\xe1\xe2!\xc3\x18\xb6\
+DlTbB\xa0\x9e-b\x95`\xca\xcao9x\
+\x1c8\xe3\x85\xb2RR\xe3\xca\xf4(7r\xd4\x22E\
+\xc5\xc5a>0\x08yB\x93+A\x91\x5c\x09\x15\xd8\
+I4q,\xe89\x10\xf5\xf7\x84\x0c\xa4\xad \xceX\
+\x88\x9dc\xad+ \xd7\xe6\x92Kd<2\x11>\x02\
+\xa4s\x87\x0cco3 \x86\xa0;\x5c8d@t\
+\xa4\xdd,27z\x86#\xd6z\x98K\xbf\xaa\x94\xd9\
+\xd78\x04\x9c\x87$\xa1-\xa8;\xce\x03\xbd\xe0ml\
+\x13\xb2\xc4Jd\xd1\xbf\x02dzN\xc2\x0b\xa2%!\
+\xbb\x02\xbb\xfd\xdbB6\xa4\xdct\x9e\x90\x01\xaa\x0eY\
+\xc0\x1f\x11(e\x02W\x80S\xd3\x84\x8c\xbf\xbdk\xc8\
+\x10\x90C\xc6i\xd1\xbcW\xc8\x80\x0c\x91\xc0\x81\xac\xd1\
+z\x83$\xcfT\x0b\x08\x82\xbf_[\xa7\xcaqT\x88\
+\x01\xad?\xff\xb4\x16|\xf2y\x144\x9f>J\xfdQ\
+\xc8\x06\xef#\xd0\x93\x08\xb2\x8e\xde?\x03\xdf*\x04)\
+D\xf8;~\xa5\xc4<\xbf\x8a=\x87\xa4\xe2'\xb1\xcb\
+*\xeb-\xa1P\xc8\x0c\xfb'\x13\xebUx\x90(t\
+\x9e\xd9\x0d\xfeQrET\xeb\x11\xae$\x81W\x0fd\
+G\x92\xdfq\xba\x8f\x9e\xfc\x9c\xfeT\xfb\x9b\xfdG\xfa\
+\xeb\xbc\xdb\xdfZ(\x15\x0a\xb4\x92H \xd0K\x02K\
+\xeb\xe9\x5c\xf5\x16\x00\x81\x89\xca\xbc\x96Q\x09\x19\x01\xab\
+qq\x9dm\xde\xf5\xaaD\xf7^t\x09nv\xd4X\
+\xeb\xde\x22\xe0<\x08\x90\x5c\x9f\xe7\xda\x03;\xaf=\x10\
+\xecd\x81\xf4^\x1bOWP{z\xaf\x93\xf0\xf5\xc0\
+\xdfzj\x81\xb0\x1e\x12#\xa0\xe4\xf6U#\xf135\
+\xa5\xec\xbc\xcfm\xef{L\xe2\xa1\xbfo\xe3\x88\xaa\xc0\
+_\x02\xc3\xfa\xf7\x04\x07=\xe6s\xed\x07\xcf\xdfz\xdb\
+/\xbd\xa2\xcep\xda\xbf\xfc\x18\xfb\xdduz\xedd\xad\
+\x9d\x85\xbfW\xf8\x8fW1\xef\x09\x00\xfe\x8c\xbf\xeb\x08\
+\xf2\xbe?|\xf58\xc8\xf9\xa4_\xda\xf4\x85\xe3\xb60\
+X/\xf7)1\x9a\x7f_\x08?\x10\xfb\x13C\x86\xa9\
+\x1a\x09\xb9W\x00-D\x1cD5\x92d\xfa\xd1u\xfa\
+\x9e\xfe\xb7\xbe\xae_bJ\xa2\xc8s\x96\x10p\x1f\xf4\
+\x90D\xf7\x83\x169\xe1\xe8_\x86l\x88Wv\xe3\xc8\
+\xfe\xed\xb3\xfc}:\x12\x1f\x1e\xd8\x95C\x0d>;Y\
+Z\x1f\xb7\x8d\xaf\x8b\x8e\xd7\xe93Ya\xc1\x06;\x90\
+\x18M\xaf\x9a\xe5\xd5[\x05k!\xd9\xf8\x8f$;\xba\
+A\x1b\xb7\xf7\xc9a\xe3\xc5v\xf8\xea\x10\x80\xb9!\x8e\
+\x12\x08{\x00\x98\xfezP\xdc8\x08\x90\x15\x06g\xf4\
+wl=\x94\xd5\x03\x1b\x7f\xff\x0fC \xe1@R \
+\xe6(\xca\x80\xffV\xc8\xd0C\xf7sk\xaf\xfc\xe1\xf4\
+\x15\x9a1\xbdxz\xc9\xf4\x92s \xfd\xa0\x80{\xc5\
+^\xe0\xde\xd9\x8d\xbd\xf6\xc0\xbf\x8f\xe9\xf3Z\x1en\xfb\
+\xb9\x8d\xe4\xf3\xfc\xbcCM\x1cP\xd7\x9b\x1b\xac\xd67\
+Y\xea\x8d\xdb;\x5cvu\xb89\x5c\xd3\x9dB\x06r\
+#smA\xf4\x12A\xb2\x7fS\xc8\xc6\xfa\xbf\xfbP\
+\xc8\xe2\x18/\x19\xee\xe9E!C\xef_\xf6zW\xa0\
+\x80D\x0e\x09Q\x06\x0e\xd3\xe7B\xe6\xf7;\x1a\xb2A\
+\xf6\xf6\x8f\x0f\xd9H{\x0e\xa7\xce\xf2#C\xa5\x8c#\
+!!\x14-#\xd7\x19*T*\xba\x1c\xf5\xa0\x88\xba\
+\xe3Py1'9\xcc\xc1\x07\x93<\xec\xe4a\xffG\
+\xddr \xcd,27\x95\xa0\xdeS\xef\xfb\xf8\xeb7\
+\x0e\x07]\xaf\xb51J\xd9C\x5c\x95V\x10\xc7_\x0b\
+\xd9\xc8'k\xba\x82\xa9\x0b\xee\x97\x83\x7f\xad\xac\xfcg\
+\xcb\xc4\xbc\x06k\xa569\x17\xe6\xbf]{\x11\x9d\x07\
+\xe7T&<\xc7\xe5i\xbdP\xf1\xda=o\xf7\xdc\xdd\
+s7\xa8v]'E&\x13\xaa\x07\xda\xf3p\xff\xdf\
+\x90\x0e\x94\xf3H\xf1\x9a\x03\xf2\xbe\xac,\xa8\xac=4\
+{M%\x02\x9b\xe3\xbf\xffR\xc8|]\xdf\x142\x04\
+\xa6\xc6\xa4\xe1$\xf0ss\x9fA@9F\xe7I\xc3\
+\x93\x81j9P\xf4\xe3\x1fe\xa2\x89\x81d\xd0\xe9\x03\
+\x81:\x92\xbb\xf7\xad\x0e\xe4\x1c.-\x89\xad9\x08[\
+\xa7|p\x84[\xe5\xa2\x0c\x12\x07\x0c\x94W/\xe0\xaf\
+%\xc9\xd9?e\xc6\x1f\x14\xfa\xde\xeb\xf8\xac\xc3y\xd7\
+\xe7$a\xb7{l\xc8p\x9d\xcfM\x07\xf4\xd7r\xcc\
+$\xc7\xaag\xf6o\x9b\x09\xbc\x87gbG\xa2\xd8\xfb\
+pD\x8c9\xcd\xc4`\x194\x09\x12\xad\x01\xd9\xe2\x22\
+!X=\xd7\xf6\x03\xc8iV\xe8\xcb\xb1\xe1\x98%\x02\
+\xa0\xc8l2\xc0\xae@\xe7\xd3!C\xc0\xaf\x92(@\
+`\xf8%4\x91\xfdeB\xaa\xb8\x0a\x04\xf4\xc6\x01Z\
+\xff\xec5\xaeV\xa6L\x90\x97#\x00z\xa7'>\x1d\
+.\xf7[\x81\x12\x16t\x81\x96\xc4\xf1\xef.\xb2\x05\x1c\
+\x02\x1d\x09\x8a\xdb\x85\x0czJB\x0fi\xdb\xe7C\x86\
+^\xe2\xadgq\xed\xa15\x1f<\x03k\x9c\x00\xc7\xb0\
+|\xab\xb0\x1e\x8a-|\xd1g\xb5~\xf6)\xf2\xca\xeb\
+\x84\x0cS\x1b\x92\x83\xc1\xf4\x8dJ@\xe2\xaa\xe0\x00\x0a\
+\x0c$\xee\x9c?\x0e\x1b\xd2?\x81\xbf\x845D\x04\xf2\
+G\x89\xdf\xb4\x07\x90\x0d\xd5\x1b\x9e\xa4\x7f\x87\x9b\x85\x0c\
+=\xef\x12\x99\x02\x17\x0e\xb2\x16/\xdf\x83\x12\xe7\xd8\xb9\
+\xb2\xafI*\x5cc\xeb\xb4@i\x0d\xdcZqV\xc4\
+\x9a\xe7\x0b1)\x90\xc6\xb1\x83kH\x05:{\xd8K\
+\xffArq\xd4q\x1fh\x11\x90p\xfb\xc1\x90!a\
+\xa0r/\xb0s>\xb1\xcb\xb3\xb7\x100\xa6\xd9\xd0c\
+9N\xb2\x10$\x1d\x02\xcfq\xef=\xc5\x99\xd0\xab\x16\
+\xbf\xee\x87\xf0\xbb\x129r\xb8R\xc8\xd6\xeaP\x89\x8b\
+\x0c\x9c*\xa1\xdd\xc7f\x09\xc4\x05\x12\xec\x03\x8e\x03\x5c\
+\x0e\xf41\xc8=d\x8cD\xa6u\xed\xad\x19\x1c\xeb>\
+6-\xcf\x97q\xba\xf5\xff\xce\x1f\xbb\x0e\xa9\xe8\x1cK\
+\x90v\xe4\x12}\x09\x09\x06\xb1g\xdc\xb4\x02N:\xf2\
+\xa5_\xf4\x0c;?\xf6\xad\x1er\xdc.\xf9\xdc\xaa5\
+\x92\x9d\xa6O\xd8\x81\xce\xf5\xa3\xd2\xa82,a\xae\xb0\
+\xc1~\x99\xf2b\xbf\xe6\xff\xd5\x18\xcd~}\xddO\xed\
+_\xf6\x89\xeb\xa27Tjq[\xf5\x9ew\x01p\x1f\
+\xbf'\x80\xee$y\x90m\x12\x07\xfe\xdf}\x8a\x1b$\
+\xda\x9c\x8b\xb47\xc7$bA\xb4\xad\x8b\x9fw2@\
+Sf\xb4D\x09\xf0\x04\xfc>_\xc0\xc7\xdev.\x06\
+\xd7\xe7\xfe\xdcw'\xb9\x13\x1ft$\xb1/~\x87@\
+\xda\xfe\x10h\xba\xfeN\xda\xd7\x9fW\x1f\x07\xd8[\x00\
+\xfc\xbe\x93\x16\xf7)\x04\xe2\x9d\xe3%\x00:G\x96\x84\
+\x81\xf3\xe9s\xb5bd\x01\xa0\xd6\xa9\xb7\x98\xb8\x1e\xf1\
+\x94\xd6KH\xaeD\x86I\xfcV\x9c\x069\xaf\xa5R\
+\x5cJ/\xba\xbe\xeeg\xf1\xff\x5c\xa7\xfdk\xbd\xfb\xfe\
+u\xbe >\xe8S\xd7a\xbd\xec\xe7\xf4\x17\xe6(g\
+\xf1\xdf\xf77\x0aY\xfc\xa6\xa5\xf5\xe9\xc8\xd1\xcf\x87\x0c\
+\x99\xab\xd8\xc6\x1fI\xc3\x13\x8e\xdf\xedC\xe6\xd7\x8f\x87\
+\x0c\xe4\x13nL\x86\x92a\xb0qA;\xc7\x00\xf9\xdf\
+\x87\x83\xfe\xb9\xc5%Y/\xf43\xc3\x83\x88\xdb\x18\xc6\
+q\x14\x841\x80\xeb\xdf\x92\x95\x88\x08 \x9f9\xcb\x1f\
+\x0c\x9c\x04\xa1&\xaf\xb5\x8d\xfdY\x96a\x97=\x9c\xbf\
+\xb7\x90v\xcd\xb2A\xfd\x96\x8c\xcc|0w?<\xcb\
+\xa9[F\xbd8\x0d2#kL\xda\x02\x10\xbf\xfb@\
+V\xf5\xeb\xc9nl=\xf4&\xe9\xc1t\xc0<\x10\x0f\
+\xdc\xcf{+@\x0f\xecm\xc0\xff\xe9\xb5\xff}\x8ec\
+\xdc 3\xeb\xdc\xe7c\x0e\x0a\x83\x06\xb2\xad\x87\x1b\xb7\
+\xc3=\xd61I\xc5\xe2l\x03\xaa\xe82 YI<\
+\xfcv:z\xafHG\xeaR\x99\x89\xcd\xb9\xcc\xfb\x9f\
+\xde?d\xff\x90\x05Q\xb1\x90\x03\xee\xce\x15\x12\x95\xb4\
+\xec\x15v\xe0\xb1[\xbbNS\x1b\x1c\xec4\xf8\xbb?\
+\xde\xbdl\xf7\xb2\x0da \x90<|[HB\xa0^\
+\xb7%\x9a\xca\xb1\xe0\x80\x09,2\xa0_:\x02_\x90\
+\x0a\xf8\x03\xdbX\xa3e\xff\xdd$+*\x11\xc0=j\
+\x96G\x0e\xf3\xb5\xcf\x1b\xa1\xd6\x10pD\xe2\xe1\xd4\xa1\
+\x97P@/0\x87\xb4\x90\xd1\x8f]\xf1_\x03t\xcb\
+u\x81\x1eAL\xa4\xe3\xa0\x97\xb4\xa0\x91\x12o\xd9\xe3\
+;}4d\xa8\x5ckU\xf8\x96\xe4\xda\xd8\xe5>\xf9\
+h:p\x0d2Y\x08\x17\x0e\x09\xb2(\x81Z*\xa0\
+\xe9\x1d!K\xe0\xbf@\xffk\xbc \xa8n\x06.e\
+\xf8%XN\xce)#\x9e/}\xf3\x9a\x15\x9aX\x8e\
+\x11\xbdb\xdf\xbe6\xdfW@\xdc\xa0\xc2eh3\xe3\
+)\xb0\x9b\xfe=dpX\xdd\x17\xf2\xb9\x1c#\xa3\x22\
+W\x10f\x81\xd5\xfd\xd6@}\xd6\x1eK\x8bPq,\
+\xdc,\xcf\xcb[\xd3q\xbcx&\xfe@\xaf\x1e\x9d\x0e\
+9hlB\xc7O\xb8O\x06\x16\xa0\xf2\x0c\x0c\x03\xe4\
+\xfa\x1a\x99\x8f1\xa5\xa5g^4\xef\xd6\x17.\xfar\
+%\xd7\xd4c,Qs$d\x0b|*Q\xc7\xf1U\
+)5\x95\xc1\xe73P\x0c(C\xf2'9\xb6/\x12\
+\xbc\xaf\x1a\x02j\x15oP\xdbl\x95\xa8V\x1e\xad(\
+*H\xc6\xed9'*\xd9\x1c&\x5c!\x02s\x0e\x17\
+\x07\x14\xe4X\xaf,\x83i<!\xb2*\x81\xaa\xfd\x91\
+\x95\xa7\xc3\xf9C\xb6\xc4\x9f\xb9\xe6\xf6cU8\x05\xb8\
+\xa9\xcfkN:\xb2>\xfb\x03Y\x9aJ\x0d.\x05\xa4\
+\x81\x12L\xe9\x10\x17\x19\x9b\xeb\xa2\x07\xe8\x7f\x0e\xfb\x8f\
+\x87l\xeb\xb0{X\xc8\x90\xd9\x970\x11\xf0e\xe5\xa1\
+Z\x91\x12iS\xf3\xdb?>\x9d\xbe\xd8\xefO\xccn\
+\xd0'6\xf2\xc1Jp \xc3=#I-\xd9\x15\x15\
+;\xe4yz\x0a\xd9\x0b\xd0b\xd3\x07\x8c\x094\x1eV\
+O=\x04\x80u\xe5\xb8hI\x13\xd8!3\xc3\x85\xd0\
+\x13\xfd*\xba\x02j$\x8b\x19\xc0W\xe0\x94\x88\xa5Z\
+Oc\xfc \xae\x92\xc3\xa2Z\x08;I\x14N\x95\x8b\
+\x87\x0c\xd7\xaf\xa2s\xc3\x90A\xaf$\xd2gzZ\xc8\
+\x90\xa8\x90\xc8QI\xd4\x0b\xaaeO\x22\x1d4;+\
+\xdf\xeeo\xfa\x81\x90!`\x92H\xa5\x1f \xa8\x04\xc4\
+\x90Z\xf7\x09\x19\xb8V$t\xac\xbb\xc0\x19R*\xfd\
+\x01S\x1cT\xec\x0b\xe2*\x91\xad\xd0BO\xd1\xc3\x02\
+\x06v\x9c^\xd3\x9b\xcf~\x0b p:d\x02\xac\xec\
+6\xbdd\xbdZ\x00VSO\xe8\x97+\x84\x0c\x81J\
+\xaf<\xea\xa9\x15(\xf2S\xad\x13\x92\xcf\x0c\x04\xabe\
+\xc7\xba\x0a\xbc\x9c\x83\x1e\xa0 \xf3\xc4\x1d4\x92U_\
+e }\xcc}\x87\xa4\xb2\x12\xe3\xc8\x9a{\x85\x9b\xdd\
+\x13 J\x80\x09\x14$tr_T\xa2B\xc2P\x22\
+B\x80\x8b\x84L\xe5>\xa7Dh1*$\x96\xe7\xc6\
+_\x95x\x05\x89v~\xe9s\xfb\xdbs\xf5{\xdfK\
+\x9cI\xd4I4H\xa4\xd03\xbd`\xc6\x9fm\xbd\xd1\
+\xc7\xb4Ry>\x02\xa5>U\xc0\xf7\x12m\xce\x0d{\
+\x02\xc1 \xfe\xf1{\xc8.\x95ySt\x8c\x13\x95\xc8\
+\x948\xf2\xdcz\xcb\xc8\xf1\xc6\xffYW\x81\xbfu\x94\
+H\xb0\xff\xbd\x0aX\xfb\xcf\xd9\x11\xff\xc7\x0f\xea\x1c\x07\
+\xd6\x8f\x9d\xe9P\xf3NJ'a\xe1\x1c\xf1\xbbz\xab\
+\x85\xdf{.\xc7k\xed\x90\xb8\xfaR\xc89\x04\xc2\xad\
+\xa5y:o\xc8`\x97\xf7I\x06\xees\xdcOo\xb1\
+F6\x9e\xd3\xae\x22\xfaY\xe2\x1f\xf7C_[\x97>\
+m\xc2\xfb\xd0\x8f\xe2\x5c\x896\xd3\x82 \xac\xedC\xfa\
+YB\x11\xa2I\x5ck\xbfw.\xb8\xceA`\x9fZ\
+\xe7\xc6\x11Q\xf6\x10y\xa8s\x9e\xfa\x1d\x92\x8b\x7fS\
+cV\x13\xd1\x7f\xf8@\xb6Z%\xb2\xec\xc8\xd1\xaf\xce\
+\xf2\xb5\x0c\x80\x9e7\x04\xbc9\xa6\xaf \xc6\xffg\x91\
+m\xecS:2\xbb{\xcd\xf2}Ce\xc8\x86\xbc\xf7\
+B\xf3\xb6e4\x83\x84\xe3\x03[\xc6\xa3\xe62c\x9b\
+\x0c\xf7\xf3\x8b\x0d\xd2qd\xabD/\x01\xd4\xed\x07C\
+\x87\xfd6\xae\xe3&\x83\xa3\xcb\x10\xe7\x98\xa9\xc5M\xb9\
+\xc9F\x1eX\x8a;\x80\xaf\x7f\xb4\x05\x84\xd3/\x84\x0c\
+\x01\xa7\x00\xd9\x81\x95\xb9\xbcp.x\x92\xa9`9.\
+\xb6e\x0a\x18\xe4\xcfF\xe5 \x22=\xb4a\xfa\xb8\xa3\
+\xe3U\xf6{\xc0\xdf\x11\x04-S6\xe9%<\xabq\
+\x0d\xf8\x7f\x1b\x8ea\xe3\xb0\xea)L\x16\xf1\xaaL \
+g\xc4\xce\xfd\xba\xb5\x129==d#\x9b\xab\x00\xf2\
+\x0d\x99\x196\x8e)+\xcc\x87\xbf_{\xdd\xccC\x9e\
+\xb7\xeb:\xfe\xe8\x01\xd9ja\xdc\xa0\x03\xd9\xc7vl\
+\xac\xcb\x8bB\x9d\x9f\xda\x12\xf8\xecn\x152\xbf\xefc\
+B\x06C\xaf5!\x1c\xb8\xa7\xa6\xe2\xfa\xd4\xd6\x12\xb2\
+\xb8a\xc8x>\x9d\xfb\xed\xef\x86\x9e\xce\x08\xeccN\
+\xe7sfy\xf6\xf0\xbe\xc9)P\x09\xa5\x18Cx\xad\
+\xa1\x87\xcd\xfa\x824sl\xbf\xb2L\x80?{O\xda\
+\xe7\x06\x12\xc3o\x9f\xe5;\x86\xc01\x1d\xb4j\x0d\xc8\
+\x8a\x15\x87y\xfa`\xc8@*\xc5!\x069Ta\x03\
+a\x97\xe1\xb6\x1f(\x1a\xe4@\x1c\x9ft0*\x10\x83\
+\x00I\xe8{)\xc2LhL?\x1c\xb2\x18\xca\xf5\xbe\
+84*\xee\xae'*\x8a\x87\x01Y\xf0\xfa\xb5e\xa2\
+8\x0c^\x9c\x8e\xf3\x88\xd4\xb8\xde`\x909\x16}\x1e\
+\xaa\x8a\x8bq`9\xdf\xbb\x12\x13\x1c\xd1\x96\xa1\x9e\xce\
+\x1d\xb2)\xe2\xfd\xa3C6\x87\x12\xe7B9\x06\xce\xeb\
+\xb3\xd6\xf5\xa8\x9eO\x0e\xbd\x9e\xfcthK_\x22A\
+\x94\x90\xd9\xe6#\xaf\x95Yc\x95.\x96\xefs\xd2\xd9\
++8\xe5 \xa4\xe3\xb5\x04\x881\xdd\xe1y9~T\
+E\x22\xe7\xb3c\xb7\xdf=%d\x18\xd7\x95P\xf9\xc3\
+\xe33 \xe2\xd0v\xc7Y\x0f\xab\x84\xc7\xe5R\xff\xbd\
+?\x1d\x22\xe3.9|\x09\x09\xaf\xe7\x82\x1cO\x05\xd2\
+\xe7\xd0\x7f\xce\xb1/\x95@=\xa4\xaeW\xc6\x1b\xc4\x92\
+\xe3\xa1b\x9f\x01\x8esxL\x8fnKh\x80\xdc\x16\
+T\xfd\xbe!\x83#I\xef;\xaf\x89X\x90@\x04\xb9\
+,\x87YeO\xcb\x82\xe9*\x02/\x01\x16}\x0c\xb1\
+\x92\x09\xa0J(k\xe1I\x03_\x154\x10\xd3\xab\x85\
+\x0c\x89D\xe7CK\x8c\xc4K\x9e\xab\xfd7\x84\xcc\xcf\
+\xffz!C\xe0\xf6\x84\x85\xe7\xff\x84\xc3\xcf\x86\x0cs\
+\xd2!\xbb|\x81`K\xd8dk\xd1\xe1\x16!\xc3\xfa\
+z\xaeZ\xe7\x8c\xcfcG\x04\x1a\xec\x1f\xff\xc0\xbe\xce\
+sS\x15J\xf6\xb3\x93\x02\x82f\x0b\xb4L\x13\x00\x9d\
+\xe6\x98\xbf`\x91-1!\xe0\x80L\x80\xd0H\x84\x80\
+\xf1\x85\xbd7\xb9\x02\xe0H\xf0\x9ewp\xf4{%\x06\
+b0\x11Y\x95\xb8t\x1f\xf4\x8d\x96\xba;\xae\xe4\x8a\
+\xf5w\x10QZk\xf8!\xb8K\xf4\x86_+d\xa8\
+8J\x18{5\xe6WBGb\x83^\xd2\xf3\x0da\
+p\x8b\x90\xe1<:\xc7\xc6Vf\x8bU\xd9\xefLP\
+\xd4\xf9\x14\x00r\xa4\xd9g\xfeD\xda\xbd\x22\x15\xd4Z\
+\x90\x89\xf5\x0aH\x91\xb2z\xde\xe98W\xef\xb3\xe7\xa9\
+\xa7\x99\x1d\xc8\xfb\xab\x00\x9e\xc3n\xbd;\xdb\xbcVV\
+\x01)G:\xc9\x00\x8b42\xc9\xb7j\x9e\xbd\xfb\x82\
+\xec\xa4\x1f\x04L\xfc8\xaf\xf4\x9a\xc4\x9f\xc4\xa1\x80\x81\
+}f'r\x9cjM\xa7R\xf0\xe2\xcf\x09\xfc\x04\x0c\
+=Q+\x90\xf3\x1c\xd9A\xfb\xde\xba\xf2K<7\xe7\
+Q`kZ\x07\xbd\xe7}\xd9W\xd3?\x9c{\xf6H\
+\xe5Y/:\xb2A\xe7\x5c\x80\xd3{\xdc;G\x01\xbf\
+\xd4\xbaJ\x04t\xd27\xff\xe7\xe7\xfc\x8c^a\xef\xbd\
+\xf6\xbe\xa7\xcf\x90\xac\xa9\xf4\xb3+\xf6\x8d\xfb\xf6\xbe\xbd\
+\xf7Zb\xa0\xb70\xf4\x16\x83\x8e\x00\x00AG\xaa\xf7\
+\xee\xe2\x04Z\x03S\xeb\xe3\xfb\xf6\xb9u\xdd\xce\xbd\xcf\
+\x13HK<Hh\xf8=\x7f\xd4:K\xc8\xf5\x82`\
+\xff\xf2>}]:\xc2\xa0\x05\xb6\x15x\xf7D\x80\x80\
+\xd6ss\xbd\x9e\xab\xc4\xaf}\xe4}\x9d\xfb\x9e\x00\xea\
+\x5ci\x12m\xfc\x05\xebg\xfd\xad\x87}\xe1\xf9\xb8\x1e\
+\x09\xbc\xde\xc2\x84\x8b\x89\xbd3mJ\x01$\xa7\x9b\xed\
+.\x1b2p\xd2\xd8\x07\xcd\x0f?fz\x8fs\xc5\xff\
+\xea\x5c\x14\xa7\x87\x0cz\xda\xf3\xa0'\xeckc-M\
+\xff\xca\x16\xf69:[\xb9\xd8\xb4\xe0\xa6?{\xa4 \
+V2\x14\x14\x88\x0f\xd0C\xf0\xc7![O\xe2\xee{\
+C\xb6\x0c\xda\x89w\x0a\x19z\x17\xcdO\xcd\xb9\xb9\xa5\
+\xa0(n=\xb3\x12\x02\x99i_n\xff\xcc\x06\x09:\
+$\xf4\xf5\x0d\x1b\xb4M\x22\x00$\xb6~\xaeg0\x13\
+\x16 \xed\xcb]\xcd\x06ww?!\xc3\xa1\x00\x00 \
+\x00IDAT\xc9Y.1\xb0\x7f\x9b\xbf\x9b\x99\xf8\
+\x1a\x8b\xd2\x0c\xc3\x90\xc1]\x1d\x8d\xc6\x9aY\x19\xc1$\
+%*\x87\xa0g\xc4\x5cWg\xcft@\xbdo\x0f\xf4\
+\x8f\xc7!\xd0\xb9\x04\x90\xe8\x1c\x1dZ+\xber\x0e=\
+:\x0e\x86\x8a\x22\x05\x9e\x95\xec\xfd\xcb\xf6/\xdd\xbft\
+s@*\xa1\x91\xff\xa7%b\x0e\xf2\x17\xc32}=\
+d\x08p8\xe2ypk\x0cS\xb2\xc0c\x89>\xbc\
+%d \xaf\xba\xe3\xda\xfbv\xf8\xb7T\x80\xc8\xb6\xee\
+\xben\x5c\x88\x94\x9a\x07\x9c\xff\xb7\xd4\xd1g\xc3\xb8\xfb\
+\xcb\xdd\x1bwo\xdcH\xb58\xc2\xd3[gyK\xf6\
+Z\xdeeHTH|\xfc\xed\x92\xa2X\xaf{`\xdb\
+]\xcc\xe7\x19\x03\x14\x152\xc08\xcc8vc\x80\xa9\
+\xd2-C7\xce\x83\xfdH\x92\xe7=z\x80\x1a\xa7#\
+\xbf\xf4*_p\x81x\xae\x8e\xdb\xd7\xf29\xa5\x81\xd0\
+R\x80\x04\xaa \xb3Y1\xady\xcfw\xcdq\x8e\xf6\
+eBxg\xa3xvEh_\x9c\x91\x8a\xe7\xf44\
+<9\xf7\xfc0\x85\x0cdi\x10\x1f\x10/\x12\x0e\xe9\
+h\x83\x06\x16\xf4\xd5\xfem\xe42\xb5\x0f[F\xbbH\
+\xd0\x04\xda\xa9\xa8\xcc\x81\x9f\xcf\xc6j\x18\xde\x93\x81r\
+\x1f'\x85m]O\xe3\xfd\xd6\x1e~$(\xd5\x9a\xd0\
+{\xe2\x04\xba\x999\xd5\x9a\xa2\xc7\xbe\xc8\xf1T\xa2\x9d\
+O\x15#\x09R\x10q\xe3\xedTh\x1c\xd7\xcc\xc0V\
+\x0f7\x03\x9c\xf7\xb5\xe0P>8T`\xe8\xe3}\xee\
+\xc3O'$=\xd9\xe6\x0fW\x09Y\xeek\xed\xd5\xc6\
+\x86\x7f\xb1\xc3E\x0f\x17\xddZi\x8a\x9c\x10\xe4Y\xa5\
+\x91~wN\x05\xee\xf4\x90\x00$\x03\xb3\xe9\xd1\x81}\
+\xd9\x12<\xc6(\x16W\x87\xdeU\xfaS\x80c\xbd8\
+\xac\x1c \x06\x9eC\xc5 K\x1cd\x02\xa7\x02)\x95\
+vv!\x13C\xc5yq\xf7\x15\xb1Tc\xca$\xb4\
+\x04\xb2*iw\x0a\x19\xa6\x8d|o\xc8\xa0\x179`\
+\xf4\xae9\xbaz\x88]\x87\xf1\x86\x10\x0e\x12\xd0\xaf]\
+\xa4\xa6%\x94C- \xfa\xd6\x90a}sz\x81\xf3\
+\xe8s*\xd1\xf0\xf7!\xc3\x186c\x03\xbd\xaf\x169\
+\xe4\x8a\x99\xf9\xdf\xffl\xc8\xfcz\xe7\x90\xd9>?9\
+d\xd8\x9f\xa9\x87+\x90V\xd96\x8d\xc2\xf4\x86$\xfb\
+\xdc\xffz\xc80N\xf0k!\x83#,\xe0D\xaa\xe9\
+<B\x04\xf9\xbb^9\xe4\x10A\xa6\x08\x00 _\x8c\
+-\x03}75D \xaf%\xc6\xff\xd3\xd3\xc8\x03%\
+\xf83\x10-$@\xda\xe1\xd2\xabX\xe3}u\xf6r\
+\x096d\xae\x90\x86\xf4[\xea\xcd\x0a\xb8\xb4\x90H\xf8\
+t20\x8e_\xea\xf7\x22\x17\xe40\x0a\x0c\xf4\xaa\x0b\
+\x14U\x8c\xd9m\x81\x9c\xefU\xcc\xf9\x1b\x90h\x02\xb0\
+\xb47\xe6g\x97~\xf5\xf7\xdeOBN .\x91\x0b\
+\x11\xe8>\xe8\x11\x01#(,?O\xc5\xdbs\xb5\x1f\
+ 6\xd2\xfeW\x02\x09d\x1fR\x8ec\xae\x05\x8b^\
+T(\x10@\xd0\x13\xfc-\x81?\xfb+\xd0\xb3\xff<\
+W\xcfK`\x82d\xd5\x94\x0c\x81\xbdD\x1f\xbb\xea\xf9\
+\xf9\x9e\xbeP)\x94\xd8\x93\xe8\x17\x90#\xcbt\xdf\x9e\
+\x1bH;\xe4+\x92^\xef\xdf\x02^P\xe4\x9a\xde\xa0\
+E\x91?\x03\x81\xcb\xbf\xec\xfb\xc8u\xd2\xd7\x10M\xce\
+\xb1\xcf\xb5>\x9d<M\xa0\xad\xa5\xc1<v\x08F\xfb\
+\xdd\xba\xdb\xd7\xbd\x10\xe59\xb0\xc7}\x8aRg_\xf7\
+\xf3\xdek\xde9}\xda\xfc\xf7\x22\xf3k\xadk\xc7\xb0\
+\xfd\x0b\xc4\xdc\xa7\xfd\xed\xf3\xed\x07\xd7\xdd\xc9\xf1\xf8W\
+\x90sg\x84\x9c\x03\x09\xa7\x00\x9e\x1f\xce\xefq\x1d\xde\
+O\x00(\xf0\xefc\x03]_\xbf^\x5c\x08\x90/>\
+\xbf\xaf{\xee\xdb\x0ap7\xbfp]O\x810\xfd \
+!-\x81\xe1}{E[\xc0\xde\x13\x00}\x1c\xa4\xf3\
+\xeb\x5c{\x9e\xae\xb3\xb3\xf5\xf3\x1f;\x89`\x87\xc2K\
+\xc4\xf9\xde~\xe8\xcf\xc9\xcf\x9b?x\xcc:\xb5\x82m\
+\xedw~\xa0i[GB\x86@\x1by\xac\xf5\x85\xf8\
+\xf3y\xfc\x22z.\xd7\xa5\x9e7\xa4G\x9f\xc6B\xdf\
+Zw\xe7\xd4\xbag\xc2\x7f\xfaJ\xc8\xfc\xfa\x96\x88\x80\
+\xb6)Q\x87\x0b\x86\x04\x09 \x88q\x98\xe7\x0f\xe4B\
+\x1e\xdd\xa0\xf66\xd0\xd2k\xfc\x82\x84\x02\xcf\x01\xf5\xfe\
+S\xb3\xcc\x1byw\xfdYf\x85\xb3\xbfn\xc8\xfc\xfd\
+\xbbCr\xe3\x9c?3\xd0\x17\x1bz\xe3\x1e\x95\x8e$\
+\x12\xb0p?/\x90\x19\xd9w$d\xeaF\xb91O\
+\x1c\xe6\xb2\xcb\x80!\xe7\x8b\x80\xff\xbe\x19\x08\xdd \x15\
+\xf6s\x87\xca$\x87A\x056\x8e\xd9G76\xd5\xe9\
+\x19!\xf3\xebkB\xb6\x9e\xd0\x82\x1a:\xf0\x0eD\x1f\
+\xdb'CGqg\xe5Ce\xa8z\x02A\xb4s~\
+}\x19\xe2\xad\xd7\xf9\xec\xbd9 \xb1\x1c\xf3^\x01\xef\
+\x5c\x01=\x83\xda[\x09\xfa\xfb\xfb\xe2@\xea\x05MG\
+O\xa5v\x0e,\x16$\x08\x16t\x81\xc4t\xc6:O\
+\xbe\x0c\x22\x85\xf5\xe2d\xb1\xbfz\x8e\xb3\xa28\x90E\
+\x9d\xb9\x92\xd9\x81(\xd7\x81JG}\x7f\xb7\x90\x8d\x15\
+}w\xf1\xdd\xcdw7\x8f\x83\x96\xfb\xe6>k\xe0t\
+\xf8\xee\x90\xa12+\xf3\x85lG\x86\x0fD>\x8e\x13\
+\xb6\xe6O\xe7\xef\x07\xc5Z\xad(9\xe5b\x81\x1e\x9d\
+4@IUz\xa2\x92\x19\x95\xbdW\xcc\xf2gC\x00\
+\xeb\xe0\x81\xec\xab(q\xac\xf5*\x87c\xff\xa2\x01\xf2\
+\xe9 \x83\xea\xcb\xc0\xaat\x80\x96cE7- \x03\
+\x8c\x1a\xb3f\x1d@\xd0\xbf\x92\x86\x91\x02\x7fg*\x0e\
+\xcfC\xe0i\x7fS\xe0zg?\xbb\x1a\xac\xd9\xbd\xff\
+\xfa\xe1\xeb[E\xaa Yzy\x19\x98\x9f_\xc7\xe4\
+M\x97J\x96\xd4\xbbg\x0b\x8c\x0ae\x83P\x95\x03\xd0\
+Yw9f\x10\x08*\xb6I\xbag\x1a\xc7\x1cd\xaf\
+\x0e*\x92\xbcdu\xaeJ\x0b\x92=\x90\xd0\xaf\xa6\x82\
+\xe4 \xba\x7f\xeb-\x13\x9b\x90\xe6b\xcfW\xe9\xfcb\
+\x06\xc6\xef\xad1<\xebu&\xe2I\xeb@U\x98\xf4\
+t\x0a\x14\x19f\x09\x84\x1e\xf8\x1c*s\xbd^\x17}\
+\xe5\xfc#C\xcc\xa9\x19\xd5KO\xf1\xcbD'\x1b\xfe\
+aZ\xc7\x9eM7\x0f\x19>/\xf7UA\xd1\x93\xc4\
+\xac\xd6\xd9>\x80\x10I$B\x8d\x81\xcb\xd6\x91\xe2@\
+1\xad\xc2\x18/d\xad*\xd7\x9d\xd4\x8dC\x88\x84\xea\
+^\x8bl-\x13\x9d\xe5Z\x80\xfe\x96\xc3[\x0fo\x1d\
+\x127\x02\xe9{N\xf7\x98\xeeq\xec>\xa9V\x08\x09\
+B\xeb\xc0\xe0'I[U\x92\xe9\x09\x8e:\x07\xd4\xfa\
+\xe6y\x0dj\xd3\x85\xdc\x14\xe48\xedA\xf5\x04\x1a\xe3\
+g\x1d9 \x02I\x89\xa9SB\x86\x8a\xb7D\x96\xfd\
+\xa3\x22\xaab\xeb\xff\xb2%\xa0\x8f\x09+{\x03y\x80\
+E\xdc\x98\xb3\x18\x87\xfa\x90-Q\x0f\xba^\xcf\xc9\xbe\
+\x10\xa8f\xa0\xb7\xbfc\xc8\x90\x18\xce\xc0\xac*\x11\xf4\
+\x98\xca`g\x07\xd7\xe3\xce>\xb0{*\xb0\xce\xb5\xc4\
+\x0f;\xeb}\xd8\xc7\x87,\xb2\xed\x1b\x01\xbeJ\xb7\xf5\
+\xe3 \xf9\xbf\xb1\xa5\xf0\x5c\x83\xe3%\x11\x86\x13\xc4\x18\
+J=\xf0Z\x11\xe8)\xc8?z\x0c2\x0c\x09\xa9\xb1\
+\x9b\x12\x99\x12\xda\x89\xfc\xa9V\x0d\xf7\xc7\x01\x05M\x87\
+ \xfb\x99\x90\xf9\x98\xfd`\xc8\xfc\xff\x9fM;+\x11\
+\xe0\xfe\xadc\x06\xea\xb5\x8ez\xb1AO\xb3\x90\x03\x1a\
+^\x15\x7f\xfb\xda}uR8\x01*H9\x7f(+\
+\xf6\xd5\xcbo}\x1b\xc2&f\xa4,SR\xfas\xa5\
+\xcf\xf4,K$C\xce$\xb7G\x8d\xeb3]%\x91\
+\xa6\x95\x08\xca\xf5\xabD\xaa\xc0\xc1\xf5\x08\x04z\x02\xa0\
+\x8fQ\xe3XkE0\xdeT\x8b\x0e=l]$6\
+:\x94\xb7\xf7\xf0b\xe5\x97@\xc8DE\xad\x8b\x84g\
+\xaf\x14\x0b\x00\xda\xd4\xa0\xb2\xdb\xdd\x1f\x95p\xca\x00\xaa\
+\x9e\x0bd\x91}\xacE@E\x142\xc6\xff9\xf7y\
+\x0e\xea\xff\xfa\xd4\x02\xfeD>\xefj\x09\xf0<\xd9o\
+\xeb\xd0{\xd7\xed\x87\x1e\xa8\x09d\xfa\x187_\xf6k\
+O\x04t\xc8\xb9}(\xe0\x17@Y_\x89-\xd7\xd1\
+\x91\x01\xce\xa5\xd7\x9e\x08`\x7f\xac\x0b\xc4\x898 \x03\
+\xfaj\xc1\x12\xd8\xe3b\xea\x95y\xfb\xb3C\xd3;\xe7\
+\x02}\xdb\xb9\x0b\xfc\xbf\xeb\xb2\xff\xfb\xfb{\xa5\x87{\
+\xfc \xe1e\xbd\xecg\xf6%\xa7\xa2\xd4\xbe\xc4}c\
+\x1f[\xbf\x8e\xd4\xf0}\xaf\xd4\xfb\xdeu\xd9\xf7\xd6\xd5\
+\xfe\x99Z\x01\xb3'\x00\xfc\xbc#\x10\xec\x1f\xef\xcb\xef\
+\xb4\xce\xd6\xcf\xf3\xb1\x0f\x04\xfe\x9d\xbb\xc0\xfe\xd2\xc2\xa0\
+U6\x11a\xfc\xa3\xe9\x89![\x22\xad\x12\xca\xae\x83\
+\x1e\xe9\x89\x0d\xd7\xef\xbe=\xbf\xee\x1f[o\x08x\xe7\
+\xa7s\xaa\xb8~\xfeG\x22\x18w\x7f\xb9{\xc3\xee\x0d\
+\xcb4\x9c\xbb\x1d\xee\xb6!\xa7\x8e,=\x93\x17\xce\x0f\
+\xfeLfbg\xc3\xbd\xff\xb3Y^\xb19\x90\x0b+\
+\xeeC\x12\x92\xf5\xc2|}\xfe0f\xea\xee![\x0f\
+\xd7\xc2Z{\xcf\xa1\x22\x18\xea|\xb7e\xe0A\xc7\x17\
+\xa0s\xf4\x9c\x9f\x16\x92\xe3r~/\x1f\xdc\xf92\x00\
+\xba\xc507Z\x85\xd5\x83I\x07kv\x08\xef\x19,\
+\xb9\xc56\x9b\xa4X5\xfe\xe0F\xb3\xdcp\x98\x83\xfd\
+\xa4\x90\xad\x82j\xfeq9 \x16\x14K\xee\x8d\x02\x9c\
+=dr\xff&\x1d\xfa}\xf6\xa8|,\xc9\x81\xfc\x1e\
+\xb4O&H\xa0g\xfc\x91\x1eJ\x99u\xffg\xc3\xda\
+\x08*\x0c\x02\x96\x1e\xc0u2\x8e\x0e\x95\xf2\xff}\x1c\
+\x8b\x0d\x9e\x0e\xf1\xf4\xa7!\x83\x03\xfa\x8f\x99\xd94\xa6\
+\xe8\xce!\xcb\xd8\xb65\x10\xbd\xe4\xaa\x00\xa7\xa7\xadc\
+\x00w\xaf\x09\x99_\x1f\xb4\xfb\xd1\xdd\x8f\x0e\xbd;\xc9\
+\xb6]\x99\xc3tH\xcb0\xaa\x84g 1}2d\
+#\xa7\xdb]$d\xbe\xad7\x84\x0c\x8e\x0f(\x22\x12\
+\xaa\x9cF\xb0\xbfm\xc8\x16H\x16\xc4W\xe0\x9a-\x0d\
+\x8b\xc3\xf7\x81\x81l(\xc6\x80=}\xd8\x07\x9d\xe5\xf8\
+\xcbK\xadv\xdb\x1f\xa0sQ!~\xfc\x00\xad\xcf\x03\
+W\x15,\xac\xe7\xd92`\xac\xdf\x12\x80<g\x81p\
+\xcf\xb2A\x88\xca1}S\x22J8\xdaX\xf6\x9f\xbc\
+\xee\xdb\xe9\x5c\x09]\xb7\xcfO\xcd\xc0`\xe3\xf2X\x1d\
+\xe1\xffJ\x05\xc4\x11\x15\x90p\x00\xee\x15\xb2q5\x1c\
+nv\xb8\xe9\xe1\xa6K\x22m!5+N\x0c\xe4w\
+G2`\xa6\xc0U\x16\xae~\xb8\xc6\xe1\x1a\x1b\xe2\xa7\
+*\x97\x14{\x87\xf4Q\x8c\x02\x0c\xe3\x1a\xcd\x7f\x17`\
+rP)p\x06\x92B\x96h\x039\x96AM\x08Z\
+M\xad\xb0\xcf\xdc\xbf\xd7^q\xb0o\xb1o\x83\xc0\xa7\
+\xa32\x07\xd8+u\x871\x8d\x12\x88H\xc4\x18z\x15\
+\x14\x8e\xc4\x073@\xc8i&\xd3\xe5B\x86\xf3\x0e\xaa\
+\xcb \x9d\xf7\xec\x19^c\xf0\xaar+p\xcb\x9e\xf8\
+\x1ac\xc8\xa1\xfal\xaeC\x06\x16\xd3\xf3\xd7}VS\
+\x1eT\x82\xe8\x89\x97\xd4\xdc\xe1uj\x81\x80\xdds\xc3\
+Y@\xbfpxTDC\xff\xdes\xc8\xecC|I\
+\xb0\xb8/\x95T$\x99*{9\x8d%f\xb4,\x90\
+q\xfa7[\x16J\xef\x19\xfb\xa6\xe2\xcb\x0e\xa8\xf0c\
+{\xcf\xcaf\xcd\xa3\xa7\xef\x8c\x05\xc4}\x81l\xd0\xfd\
+z\x0e\x0c0\xc7\x1f\x84O\xa5_\xa0\x89\x94\x89\xc3\xde\
+\x1d\x11\xfb\x9f\xc3\xe1\xba\xe9-\x09$\x957\x5c4\x10\
++\x02\xa4\xd4\x9b5\x16\x94\xbd\xe0\xf0\xbf<d\xa8<\
+C,\xe8\x99\xcfs\x8e\x9c\xaf\xeeC\x85\xd8:\xd2w\
+\xf4\xa2\x16\x0e\xdf\xe3\x96P\xd1\x87\x18\xe4\x10\xdb\x1f\x12\
+\x03\xec\x13vk\xf3\xb8\xb5\x8c\x08 \xac\x8f\x8a\x9a\xc4\
++Hc\xafp\x08xU\xd2@\xd7\xf5\xf4\x82<\x0b\
+\xdc\xd3\xee\xa9\xc4\xd44\x07cO\xb5V\xf8\x1c\xfa\x01\
+\x19\xa0\x82\x02\xe8\xba)\x04\xe6\xd1\x1b\x1f\x07\x11\x93\xfa\
+li\xe9\xfa\xf6sh\xb5a\x97\xed\x8f$\x8f\xaa\xeb\
+O\xfb\xe5\xfd*`\x94@\x01\xa5g/$|$\xf8\
+$\xa4\xf4\xf6CJd\x85\xb8\xc6$\x22\x0f\xd4\xc2\xf9\
+\xbd\x8bl\xfbB\x00#\xe0\xf4}\x1f\x07fL\x1fD\
+\xcew\x85\x9c\x037\x80\xf3\x02\xa1!1\xeb\xef\x92\xbc\
+\xb9\x10>\xae\xdb\xf3t\xae\xd8\x1f\x81\x11\x07\xfa\xab-\
+\x01\xee\x5cC\x8aaw\x87\xd8t?H%!D\x8c\
+a\x15\xb8C\xb0\xd1C\x9e\x9f\xef\x9d{\xfa\xc3\xf5\xd1\
+\xdfZT\xf8i>\xb7\xcfSw\x8e\xe8O\x9f\xd3\x0b\
+>\xee\xcf~\xa2_!\x04 \xb7\xd8\x99\xee\xd7\x0a\xd8\
+[\x22\xa7Z\xda\xecW\xe7\xd7\xdf\xf9\xff~n\x9dK\
+\x15\x7f\x09U\xf6]%\x9c\x9ei\xfe\xa9\xc2\xdda\xf9\
+\x1a\xb8y\x8c\xf5\xf5\xb9\xdd\xcf\xf5\xbd\xdf\xdb\x8f\xf4H\
+O\xb4X'\xcf\x87}n\x89\x80\xda'\x02s\xf7\xef\
+~\xed\x07\xc8\x09\x7f\xe79J\xd4\xf1#\xd9E\xaf>\
+\xd7\xf58O\xf4$n\x00\x08\x91\xde\xbbn_\xf7\x84\
+\x06\xfdOo\xf6\x84S\x87\xcc;\x97\xce\x0f\x7fHb\
+\xc0\xb40\xeb\xec\xbe\xdc\x87\xeb\xf6\xff\xc7#\x03\xec\x5c\
+\x0e\xfc\xb9\x8e\xe4\xf0\xfc\x04\xfa~\xde\x13\x00\xfe\xafO\
+\x15\xa0\x1f$\x84\xecc\xeb\xe3\xf9\xd1\x1b\xfeN\x5c\xd4\
+\x9f\x93\x84\x92V#\x08\xac\xf4\x07b&WL\xe5\xda\
+\xdd,d`\xf9\xef\x082\xf7\xd1\x91\x10>_!\xd9\
+9\xf1\x9c\xfd^A\x8b~\xf0\xf3\x9e \xf3<!\xdf\
+\x15\xde\x7f&d\xbe\xce\xf3\x86l\xdc\x00G*0<\
+}\x01\x01\xd7X\xbfbM\xcd1f\xfb\x1b\xcfr\x93\
+$\x81ze>\x80\x91|\xe1\xedKm\xee\x84\xfd\x9d\
+B\x06\xa8r\xe4\xdb\xa3%\xe01!\xdb\xc2\x83&\xa8\
+\xd0\x0a0A\xfe\x19\xee\xddEC\xd2\xd1\xf9\xf6\x8d\xcc\
+o\xe1\x8e\xff\xa1\xcd\x11\xaf\x8c\xae\x0c'\xa8y@\x8b\
+\x9f\x94\x0eTT~\xee6K\x042\x8f[\xe4\x84\xdd\
+UC\xe6\xf7\xfdb\xc89\x8cY\xb9t:\x80\xc6\x06\
+\xe1\x08\x90\xd1\x01\x01yX\x8e\xc5\xcaqr\xd3{C\
+\x86\x8dD!\x09\x108\x94\x02\x00\x9f\xeb\xa0R\xd0\x10\
+\x01\xfe\x9eA\xb0\x81\x19\x06?\xefs\x5c\x8d\xa7HR\
+\x8cr8(\x00\x81\x98\x1e\xd5\x0c\x18\x0e\xa7&\x89\x93\
+\x1eL\xa4n'\x85\xcc\xaf\x7f\x142\xbf\xfd\xa5B\xe6\
+\xd7\x8f\xee>\xb6\xfb\xd8\xe6\x88\x1a\xb7\xb4\xff\xae\x90\xf9\
+\xf5\x07C\xe6\x9f\xff~\x22/n\x96l\xe1\xc8\xa7>\
+\x10\xb2\xb1\xda\xefn\x1c2\x8c\xe3\xd1#\x0e\xda\x9b\x8e\
+\x0fh\xea\xe1\xfc\x87\xf3\x1db\x5c\xc7\xb9f\x99\x0f\xdc\
+\xfeE!\xe9P}<{\xee~o\xe8\xe5\x1c+\xe0\
+g\x0c\x0aV\xc6\xda\xfa\xa4\x83[\x95\xfdx\xba\xbf\x94\
+\x01~\xb0\x8a^t\x96\x8b\x0c\xac\xdf\x0cm\x1c\xd3K\
+\xa6\xa1\xfel:\x8a\xef\xc9J\xe7k\x92\x9c\xee\x13C\
+K\x88^\xa3\xf7N\xef\x9b\xde\xb7\x19@\x10\xf3\xe9\xd3\
+\xebX\x91\x9a\xc6\xa1\x22o\x8c\xd9\x89\x09\xb9\xfeD\x22\
+\x22\xde\xb1\xf68\xd64\x01\x06\x97BKh\xfc\xfe.\
+!\xf3\xcf\x9f\xb6H\xbc\xef\xf2|w\xb7\x0d\xd9z\xea\
+\xab5\x01\x12\xe6\xbci(8n\x1dZGAu\xc3\
+\xdd\xa0[5\xc6\x0aT[E\x99AQ\xc1\xf6|p\
+\x13Xo\x8e\xab\x0c\xee\xed\x92\x9c\xeb\x05\xb9\xaf\xdd\xef\
+cB6hs\x05P\x144\xc3/a#Q\x04\xc2\
+\xca\x90&\xa2\xe3\x84\xab\xe4\xbe\x10hf\xa2\xa9H\x18\
+\x19R\x8e\x83i\x0b\x19\xb8\x14\x89\x99\xf3\xc8\xa1p=\
+\x0c\xa4\xb1a*c\x0c\x98Jh\x92\x03\x16$\xbb\x8f\
+\x91\xd1\xf3\xff\xd6\xacL>d\x1doV\x86\x93\xdeP\
+!x]\x22L.\x97\x150\x81\xe9I\xf9w\xff\x99\
+\x86\x94c\x02\xcakL\x9d\x9e_\x813\xfd&1\x03\
+R,@\xc4\xd1a\xbe\xf7\x13\x16\xda\xd6\xb8\xbf\xb5B\
+\xc8Q\x92\x00\x15\x18J \x5c0\x7f\x9e\xcfS\x22\x02\
+2\x05\x8bz\xbd\x8f\x04\x22\xc4Vf\xea\x05\xccAQ\
+\x1a$\xa5\xe5\x08\x1bW\xf8/!C\x00\xaf\xc5\x83\xfd\
+d\xf0\x9d\x7f\xfb\xd7\xfd{n*\xa9\xd8\xc8%\x84U\
+P!\xe4 \x02\xd8W\x01X\xee\x07\xad\x07\xd3\x9bB\
+6\xfbZ\x09\xf6$\x05\xadi\x03I\x0aW\x09\x94\xac\
+\xd0\xd7|zd\x82?\x9b\xd3n k\xb4\xc2\x5cc\
+M\xf0\x19\xc3X\x8e {c\x9fp\x8c\x04\x1e\xecW\
+'\xedd\xaf\x05v \xe7\xc8.\xe9a\xadx\xdd\xe1\
+l\x15\xc6\x1a\x9b\xa5\xf5\xca~\xa6\x87\x9c+\xcfE\x85\
+$\x03\xea\xfd\x0bCf\xbdw\xe5\x90\x01\xb1\x93~P\
+!K\x8c\x99\xcbVGS\x0ej\x0c2\xfd\xc5\x81\x96\
+\xe0\xf1y\xec\xb2\xc4\x04\x92\xd8\xec9?\x5c/d(\
+\x18(x<~\x91m\x1f\xf3s\x8c\x034\xd61{\
+\xe6\x8bDP\xe2\x93?\x93\x88\xb2\xda'\xc6\x22j)\
+\xe3O\x08\xd4U\x8e=7\x88\x0b\xeb\xe3\xb9*x\xd0\
+\xab\xd6\x9f\x1fC\xcf\xd0k\x02\xc3$\xdd,\xfd%\xc1\
+\x89t\xd0\xb9\xb2^\xf4/\x87\x97^\xee\xa4d\x9e3\
+\xbd\x03\xb2,qE\x0f\xbc5\x11F\xe9\x0f\x96\xde\x86\
+p\x13\xb8w\xae%\xd7\xc3\xfe\x81\xd4\x9b\xde@\xff\xb2\
+\x7f\x9d\x8c\xcd\xbe\xa7O\xfa\xbe\xe4\xef\x09L$\x1a\xf8\
+%\xbd\x95M`\xe0s\xdc\xb7\x16N\x95D\xcfKE\
+\x5c\x22\xb3#\xf3\xe85\xeb\xc9\x8e\xf5\x9ew\xef+\xe0\
+\xc7Q\x93\xad\xa4e\xb7%<<7\xf7\xe3\x9c\x18;\
+\xaep\x03\xe1\x03\x11\xd8\xa1\xe0}.|\x1bs]\xe7\
+\xa4\xb3\xa8\xf7\xc0Y\x22\xa5\x8dq-?\xc6~\xe1o\
+{~\xf4zo\x9d\xf3\xd5\xa6(\x1d3\x06\xb0\xb5V\
+T\xc0n\xbd|\xbe\x84\x8a\xf3\xe7}\xfbx8\xfe\x0b\
+\x96{\x09\x19\xe7\xcd\xab\xfb\xf5\xbc\xfb8N\xfb\xa9\x8f\
+\x0d\xec\xa4{\xee\xb7s2\xf5\x0a\xb7\xe7!\xbe\xf1\xff\
+\xae{K\x18\xac?\xe7g\xf41\x90\xde\xaf#?\xc4\
+/\xce[O\x00H\xc8\xf5\x16\x11-\xc6\x92j\xfc\x8b\
+\xce\xd9`\xbd%\xbc\xdc\xe7O,\xb2\xf9\x01\x0a\x87H\
+Z\xad_\x8f\xb3\xac\xdb\xf1\xc8\x11\xfb\xf3\xf1\x5c\xd8;\
+\xad\xc6\xf4i\xe7\x88\xa3\x9f Z\x1f\x18\xb2\xd9s\xe3\
+\x09\xa7\xdf\x0d\x09\x0e\x80\xec)Ui\xd8\xff\x9f\x90$\
+\xab\xb9\xd3P\xd9\x8a\xe5\xffZf\x8c\x7fy\x83\xa8\xed\
+\xee0\xcbw\xa7\xc2z\xff0n!\xa0\x91_H\x83\
+\xf1\xb7ih\xffq\xa8`\x04\xf0\xfc7\x13\xa2y\x8b\
+\xac\xfc\xfe\xc7\x96\x09\xdf}~\x96/dE0\x1c\xf7\
+g\x85\x0c\xe3iL\x15P\x89\x8d\xc0\xf5\xa7\x87\x07\x1e\
+\xee\xf9U\x92\x0c\xeb[\xe7\xfb\xba\xf9,7K\x08\xfa\
+O\x0d\x10\xef4\xac\xbb\xff\x08\x19\xc8\x9bp\x19\x80|\
+f\x8b@\xb1F3\xd027\xe6\x00w2\x07\x0aU\
+\x80\xc2@\xda\xe06\xaa\x07\xc8\xd1A\xda\xc4\xc0\xf5\xb9\
+\x96\x14H\xb2\xb8\x1es\xf0l \x8a\x8e\xc1\xe2\x90\xf5\
+^&=\xa0Y\xb98\xbc {ps\xa3O'\xae\
+\xbd-\x1ca\x89\x93\x13_\x162\xff\xfcGB\xb6\xde\
+\xb7\xe9\xda!\xdb:\x16\x87\xc2\xdd\x0f\xf78\xdcc\x81\
+\xb2\xac\xac\x959\xe7\xbe\x02\xddW\x87\x0cd\x8eYI\
+(r,\xd0\xba\x9b\x9f\xdd1:\xbco\xed\x0d?<\
+ $\x15\xf7\xfb\xd3\xc0\x8d\xf3m\x91\xf0q\xbc\x1d\xa4\
+\x08\x9bN\x19\x14]\xac\xca\xb9\x86\x0c/H\xae\xde\xe6\
+h\xec\xb8\xfa\xd0\xea\x02\x92n.k\x84s\x17N\x87\
+\xe2\x1b\x86\x8c\xdc\xc8\xda\xffG\xdb\xd8\xa5\xe9?\xf3`\
+\xbe+d`\x13W\x09\x16(\xde*\x1dx\x88\x80\x8b\
+dO\xec7\xae\x0a\xa5\x02\xcb\xaf\xa7\x82T\xb9R9\
+\xe2\xd8\xffb\xc8\xe6\x00\xec\x9e\x192\xbf\xdfSWD\
+\x87\xf9\xdd\x05\xe5\xbe^V\x8e\xae\x94\xbd\x89\x90\x0e\x14\
+'\xf6\xd3\x07,\xb2Ms`\xf0\x18\x00P\xfe\xa7%\
+)V sn4 Q\x16\xf2\x81s \xb1\xc9\x80\
+a\xff\x17!\x89\xd8x\xda0\xdf>[\x15\x0e\xdf\x9f\
+P\xed\xd7\x85l\x89\x92\xe2\x8a\xf0<\xed\x7f\x15\x1aS\
+\x1dr\xfd\x0a\x12\x9cc'k<\xa6\x00(\xafw\xff\
+\x1b!C\x02\x07\xf4\xb7\xf7v\xbd7\x15\xf8\x19yn\
+\x19:\xfa\xca\xf58\xdf\x1cT\xbd\xe4\xc6\x8d\xb9o\x06\
+\x1f\x12&\xa1\xad\x93) \x1c\xb1d\xd9\x86x\xaa\x16\
+\xa8\x8dlj\xcd\xb9\xbe5+\x8a\xff\x99\x09\xcd\xa7&\
+\x9b\xb9\xfb\x10\xb0\xa7C~\xf8\xb3\xec\x9d\xfe\xee\x95\x93\
+\xa3 \x8b\x02J\x09R\xfb\xd6\xb9\x12 \xa9\xc0\xd1s\
+o\xccW\x88\x0f\x86\x9aAf89\xc4\x1c`\xeb\x0b\
+\xa1\x81\xf3\xe1\xfb2\xf0\xb9E\x8e\xdd\xc3\xa2\xfb\xb4\xe4\
+\x14\xc1\x02\x9e\x9c\x01\xd3\x1f\x86\x0c\x15@\x95H\x09f\
+\xfb\x5c\x02'3\xe8EF\xab\xb7\xdf\x97uSY3\
+\xb6I\xc2*\x13\xc5\x95\x00\xcb\xf3V\xbd\xbf\xce\x9d\x0a\
+;\xc3o\xacVN\xe5)\x04\x8a\x84\xf6s\xd7\xb1\x9c\
+\xecY\xb5f\xe0\xdc\x91\x98\xd1J\x00b/!\xf7\xeb\
+\xebX\xc8j\x9d\x10H\xe4\xba\x1e\xbe5dI\xe4\xce\
+2$\x80\x90\xa7\xa5>;\xfcj\xc80eF`#\
+\x81\xcb\xa1\x16\xc0s\xf8%:TF9\xc4\xcd1\xab\
+\x0a\x1d\x07\x99\x9f\x22\xa0\xf1\xf7\x8d\x85\xbb\x90Z\x02\xb0\
+\xc6\xdd\xb0\xff\xed\x90!\xde{v\xc8\x10\xe8\xa5\xbd-\
+H:\x04\x8b\x7fHn\x82\x22\xfd\xe4Hj\x99s\xce\
+\xd9\xe3\x5c\x97z?\xcf\xdb\xf8\xbf\x1c\xaf8\xfdE\xc8\
+\xfc\xfa\xc6\x90\x8d\x83\xa5\xc6b\xe6\x94\x86\xb2g\x89\x0c\
+)\xbf$\x11'\x85t0\x16\x11\xbb\xbc\x96-\x8e\xb5\
+\x00\x84\xff\xe1>@\xf7\xadw\x1f\xbf\x95\xf6\xad\xa0\xcb\
+\xa6\x06eo\xec\xe1\xb3!\x03\x12G\xa0b\x1c!}\
+\x07\xe1a\x1a\x03$)\xa4\x81\xd6\x9b\x1c\xbfW\xd3\x0a\
+\xfa\x18S\xcf\x85\xfd\xe7\x17\x09\xcc\x04\xa6\xf4\x9b\xff\xb3\
+\x8e\xfc'z\xd9\xfd\x0a\x9cT\x18\xf3\x5cU\x0f?\xff\
+\x87\xfd\x930\xc5\x81\x22\xe0\x15X\xd0o\x12\xb8\x10\x00\
+\xf4g'mK{:\x9d\x1c2\xf8\x95\x9e\x13\xff\xd0\
+\xfe\xb7\x0e\x99\xb8\x81D\xaby\xe6\x90*\x90\x82\xf4\x9d\
+\xffs\xff\x1d\xaa\xdf8+\x8aS\xcc9\xb7\xce=\x81\
+`}{\xa0\xd4\x03\xfa\xe3\xfd\xbcs`\xf5\x1et\xd7\
+\xdb\x03:\xc8L\xbd\xf1\xfc\x0c\xeb%\xd0j=\xf8\xa5\
+W\xfc\xbd\xcf\xe3\xef\xb3[\xd6\x9b]\xf2\xfc\x1b\x09b\
+\xb5P\xf8}\x9ff\xe0\x5c8\x7f\xae\xc7\xef\xc5\x09\x90\
+\xb5\x12\x08}\xcc`G@\xf8\xbdu\xb2\x7f\xed\xe7>\
+N\x5cE\xb9C\xfa{ \xdf9\x06z\xaf~G\x00\
+\xfc{\xfe\xdf\xb9\x1b\x94\xdd~h\xd0\xfbjm=\xa1\
+=o\xe7\xa6#\x00\xfc\x1f;l\xffY\x7f\xfa\xc9T\
+\x98+f\x9cG/\xbb\xce\x8e\x001\xe5-\xe3\x81J\
+\xf8\xf1\x97]\x87\xe7\xd3\x13\x15\xec,}\xd5\x11\xb1\xd6\
+\xcbz(\x0c\xd1\xb7\xce\xa7x\xa4s\xbcY?\xfaC\
+\xcb[\x92\x8aO\x97\x09\xc9\xb8\xfd\x0e\xb1\x5c\x11\x96~\
+\xcb\xfc\xff?\x122\xbf>.d\xcb$-\xec\xc0w\
+\x1c\x14A\xa8\xcb\xb7e\x8f\xec-\xe7\xf3\xf9\xe6\x90\xf9\
+\x0d\x1f0\xcb\x03s\xa3\xbfy\x1b\x9b\xb3\x90\xe1\xfd\xfa\
+\x00\x95\x8b\xca\xcc#\xb6\xc0y1\x94?\x90\x01\xfe\xb3\
+\xb7\xc0\xa7 \xc0H\xc9\x22S\xfc\x8c\xa1\xc2\x06\x92\xea\
+\xc1\x9c\xb4\xb8\xd4[\x06&:\xe1\x9e\xb2A\xcd\xf6\xff\
+\x12\x92\xbd\xc2O\xcf}:\x8c\x97\xa8\x0a\x90\xf1f \
+l\xa7\xe6\x9c`\x9c\x056DB\xba\xabW\x0d\xc2\xc1\
+\xe7\xa7\x83W\x0f\xa4C@z&\x91B\xb4q8\xc8\
+\x0c\x93\x8c\xad\x83\x86\x1d]\x80\xc7P\xb4\x0c66m\
+\xf3\x8bAA@0\xe7\x80|\x96\xe5\xb9,\xe3\x9d\xf6\
+\xaf\x0e\x99_O\x9fev\xe8v/\x99\xe5\xa5Ke\
+hI|0\xb8\xbb\xf3\x84\x0c\xf3\xb7\x13r]\xa4{\
+\xb7Y\xd7\x8f\xa3z\xe2\xc7C6\x123\xf7\xb1{\xce\
+\xee\xd9\xbb`\x97?+9\x02\xbe\xbaV\x02@\xd8\x8a\
+M4\x1d\x5cs-\xf77\xdd\xdf$\x10)\x1c\xb6\xa3\
+_9z\xd6\xd1\xb3\x86\x007\xc8\xac\x9e\x90\x09\xa3'\
+%$\xfbB\x83\xc2\x8a\xb4\xc6O\x0e\x06&\xc2\x83\xd3\
+\x87\xf1\x91\x19\xe0\x17\x040\xd2\x18\xf7\xcdD\xd77\x0f\
+\x86\xf3\xf2!\xc3A3\xae\xe8\xb2\xb3\x5cn\x80\xe2\xc5\
+~~\xc1\xd2Bq\x97h\xa1\x90HA^\x16\xf8\x91\
+@\x90\xecn\x172@;\xb3\x12=\xfd\xea\xda\x22S\
+=\xa7Y9U),\xd6\xe6'f\x05\x15iX&\
+L\x18\x08\x0e\x1fGx\xf7\xb9\x90\xa1\xf5\x82\x02\x14\x80\
+`\xcfF.\xa4\xd2\xa7GRb\xab\xcf#6\xae\xcc\
+~\x06\xd1\xcdV\x8d\xc3\xcf\x1d\x1ezx\xe8\xa0\xd0\x1e\
+\x96\x0e!\x03%@\x908\xbao\xf6\xca&\xc4\xf5p\
+f\xc8|\xfd\x0f\x0d\x19 \xd8\xff+\x13N\xbf\x90\xad\
+,\xce\x1f$\x83\xf3\xc7\xb1\xb3~z\xe8\x13\x82;]\
+(\xe7:\xab\xc0\x9f\x16\xb2\xf5\x8c\x1f\xbe\x10\xb2Ae\
+\xed\x03\x89\xa8\xe9\x15+R\xa3z\xeb.\x9a\xadD\x99\
+H\xab@\xb6W\xca\x05\xd2\x1c\xb4\x84p\x97C\x0cB\
+\x9f\xe4q\x87d\x95\x9en\x96\xfb\x11\xf47Y\xc5k\
+\x9a\x00\x87>\x13\xa8\xceI\xb1\xf9\xbf`\xad\xb4N\x0f\
+\xcci\x0e\x12P\xf4\xef\x9f\xaf\xe3\xb7\xa6S\xf3\xf7Z\
+\x9f\x9e\xb9B\xc4\xabU\xe4\xba\x99`\xb1\x7fT\xf0\xfa\
+\x180\xa4\x89\xff7+T \xc7\xf4\x16GY\xe0\x9a\
+\x0ei\x91k\xa9 ;\xbf\xde_+\x00\xb2;\xadV\
+2\xf9\x8f\xcf1c\x9f:{\xa5\xac\x02B\x8e\xecO\
+\x84l\xad/*\xa5\x85t@\xba\xa9r\x0dJ\xcda\
+\xa2\xdf\xdd\x8f\xb1t\xa6\xc7h\xc1PI`\xb09z\
+\xecE\x06F\xb8)v\x1f\x0c\xd9HW\x8b,\x11\xd9\
+jN\xe3\xa8\x00^%79^jz\x01G\xd8>\
+\x83\x14\x83\x00HD\x06\xd6z\x01wUj\x05\xe8\x1c\
+H-8yN\xaa%\xc4y\x93\xf8PQ\xd33\xef\
+|\xa8hK\x00h-R\xd9\xef\xa4M\xce\x05\xc7\xd9\
+~\xe0\xf0\xf6\x9e\xe5>\xffY\x05\x9b\x1d\xf7JO \
+7\xd5\x02\x91vT/}!\x85\x92\xeb\xa5\xc6\x1e\x0a\
+\xf4S\xffV/\xa8\xdeM\xeb\xd5\xe7\xc5s\xc0U\xd2\
+9vH\xf3r\xac`\xad\x87\x00\xfe6!\xc3y3\
+\xee\x0f\xdb?\xae\x0f\xebij\x91\x04\x85V%\xfb\xcf\
+:r8\xb5\x04\xe0>0&S\xe5:\xf5W!8\
+{a\x01\x02\x05\xeb>\x96\xff_\x0e\x19\xae\x9b\x1d\x10\
+\x80`\xff\xbf\xff\x22\xc7\xce\xe9\x96\xd0A\xc6\xd5\x13\x87\
+mlp]W')\xc3\x01\x90\xe32\xeb\x1c@\x8a\
+\xd9_\xde\x97C\xafB\xaf\xa0\x22\xb1\x0c\xc4\x9a\xad\x10\
+\xc7\x90\xdf\xda\x9f\x99(*N\x02\xf7g\x7f\xd8G\xf4\
+\xe7q8\xa0\xca\xeeA@\x99\x16\x04q$\x90\xe7'\
+K\x98\x09\xd0\x9d\x0f\x88*\x08\x9e$\xc5\xadu\xb4\xee\
+\x12\x14\xfcMzZ\xc5\xdf\xfbJl|\xb8Z\x11\xd7\
+\xfb\xf3\xc5\xcf\xe8\x89\x8d^i\xee\x81\xbf\x9f\x8f$\xe1\
+'\x9cC\xc2@`\x08\x01(\xe0\x17\x08\xdb/\xbd\x97\
+^\xe2\xc0\xfaI\x00x\xa5\x87\xb4P\x82l\xbbO\xcf\
+\xd3~\xe1g\x18\xfb\xe7\xfc\xdaW}l\x9f\xbf\xb7O\
+\x1a\x99a\xbd\x0f}\xc6\xbe\x88K:\xe2\xa1'\x00$\
+\x14\xd8\x17\xfb\xcd\xf3\x10\xe7u\xf2;\xcf\xa5#\x1dz\
+KB\xe7\x1e\xeb\xbd\xf4gf\xc5[|)\x81\xd5I\
+\x1e\x91`\x7f)\x03\xf8\x1e\xe8\xe2$\xf8\xef\xd5\x0f\x9c\
+\x7f\x07Y\xb2\x06\xf4\xa6x\x9cu\xf6\xc2\xd3\xe1\x13\xb9\
+n\x90\xa5\xa6\x93|x\xb5o\xd3\xe5\xd2\xbf\xe0\xc7'\
+Y\xf1t\xebDJ\x19?j\xca\x1c\x7f\xdb\xf5\xe3\xfe\
+\xea\xf6\xe7\xcb!\xc3:\xdag\xbd\x87\xdf\xfbX/\xe7\
+M\x5c\x97\xa4\xfc\xe57\xb0\x17\xf4\x91\xe7)a\x9dq\
+\x22\xae0\xe3\x97\xc5\xb9G\x16R\xa9\x07lc\xc8\x8c\
+\x8f2>kz\xf0,\xd1{x\xbb\x90!\xc0MV\
+\xfd%<>5!\xb9?\x92\x0a\xe6}Y\x01\xfc\x95\
+!\xe0w\x83\xa1\x1e\xfe\xba\xf28\x1b\x09\x1bE\x95\x07\
+q\xff\xbe\x90\xad\xa7\xf8\xc4\xef\x0f\x19\xd8\xadc^\xf1\
+g\x87\x96\x81ps\xde\x9f\xe3\xb4\xde\x93\x99\xc8Y\x01\
+\x1d\xbd\xd9,7]X\xedg\x99\xff\xefq!\x1b\x14\
+r\x81\x06\xff\xf2\xe6\xe0M\x9f\xcd\x8a\x9f\xde|\x86\xd1\
+F\xe6\xf8\xc8\x14\xca\xbc2\x94\x145C\xdc\xa1[\x9d\
+\xe5\xdf\x81\x05\xad\xd3\xcb\x97c\x8a\xea\xe0\x0b\xb8\xd2\xc1\
+\xac\x0a\x1eEl\xdc\x14\xe8G\xfe~\xff\xa3\xfb\x07\xed\
+\x1f4@\x9a\x13*X\xf3\xc2\xdf\x99\x10\xe2\xffX\xa1\
+O\x0c\xfc\xee\x87g\x99\x9f\xeb\xee\xf7\xd7\xca\xf0\xecv\
+~h\xf7\xa1$}\xbc\xfe\xc6\x1e\xbb@\xe0\xe7\x83\xb6\
+\xff\xe9\x90\xf9\xfbK\x87\xe4\xd8\xbc\xd9Q>\xf2\xc8\x90\
+\xf9\xfbG\xae\x90\xffBr\x08H\xee\xb8V\xd8\x0e\xff\
+_\xc8\x10x@V \x9f:\xac\x89\x9a\xfd\xd1\xfd\xd7\
+\xf7\xf3\x819z\xeb\xa3\xb7:\x1ac\xff\xae\xb8\xbf\xc2\
+\xfe\x0aCB\x84c\x10\xdc\x03\x17\x1b\x1cOS\x0c@\
+\xf2\x91\xe9E\x9d\xe56\xe9\x18\xfek\x1e\x9cs\x0f\x81\
+Y\xafdR\x90 c\x01\x01\xfd\xed\xc1\xb0\x86[\xf1\
+\xa1\xad\xc2>]3dp8C}\x5ce0\xb4\x7f\
+\xb3N\x13\xd8=o\xf7\xfc]\x04`\x97\xcc\x00\x9a\xa1\
+\xc1z-\xa0fX\xb0\xa5')\x1cr1\xf3\xe6q\
+f\x18\xe3g\x1c\x17\x05\xb0\xbbb\xc8\x96\xc8\xa9^\xeb\
+\xe6\x88N\xd7\x0fY\xd6q\x85\x88ZO$\x92\x1c \
+\x8e>\xc7\xc5y\xe7 \x80\xa8^5\x11\x14X\xcf\x19\
+\x82\xbf\x0a\x19z\xdb\xf5\x5cQ\xf8\x14!G\xb1\xb1\xe3\
+\xbb\xef\xf9.\x17\x16\xf3\xea\xe9\xcc@\xbd\x90\x05\xd8\x91\
+\x05n'\x85l\x10\xfe\x22\x93;}\xfa\xd8\xf4\xb1\x85\
+\x04k%\xd5\xc2\x9e\x0f1\xe0\xfa\xd2\x81\xde]#d\
+\x81\x02\xaf\xbd\xdb\xf7J\x124\x81e:`5\x16\xcd\
+}P\xe0\x12\x02\x1c\x0f\x81\x90@9\x03\xc6\xd9\xe0\xcd\
+2@\x85\xcfZ\x03\xfa\xe9\x0e\xbb\xdb\xecn3\x18\x00\
+\x0e\x1f.\x08\x0e\xbd\x8a\xa5\xe7\x93\x81\xc4\xf4K9\xc6\
+\x142F\xc2\x87\xbe\xa7\xf7^\x9f\xd7%#\x0f\xca\x0b\
+\xd2~\xbdl\xe5\xc8s3]<\xc7\xbd\x9e\x92\xfa]\
+E\xd94\x07\x5c*m\x9cQ9l \xdd\xa0\xa2\xc8\
+>\xedSzT\x02*\x13\x94\xe5\xf0\x80\x90\xaa\x04\xd0\
+\xdb-\x81|xU\xce\xa9f\x90\x91\xa9%\x89&\xe4\
+RA\xc1\xb3\xc2\x1dT\x84\x0b\x19a\x0f\xe4\x1a\x1by\
+A\xa99\x9e8\x0f\xee\x91\xef\x9b\xc8\x1fd^\xa6Q\
+\x94\x83\x81\x15\xbd\xcd\xaf\xaeV\x86\xab\x85\xcc\xaf\x1f\x0e\
+\x19\xc6\x88fkOU\xea\xef\xb6\x92\x00U\xa2\x017\
+\x8a\x9eks\xe0#Qy\x97\x81\x94\x94c\xa22\x0d\
+\xb9\xa3\x82\xfa{\x8b\x14\x19R\x9d#\xd3yz\xe0%\
+\x10\xe7\x90r\x9c\x8d\x9b\x13\x90e\xe0[\xfa\xd0\xdfC\
+4\xa9\xa4v\xf6\xfb^\x01V\xb9\x06I\xa7W\x05\xc0\
+\xf4\x16\xc7\xef\xebI\x82\x9a\x89\xd9\xb2G9\x96\xb8\xd6\
+!\x03\x9f\x9a\xf7\x0e\xa2n<#\x08\xb9\xb9\xf0\x1c\xd3\
+\xce\xd6n\x0c\x1c\xc4\xa1\xd6\x15v\xdd\xbea\xb7$@\
+\xf8\x13\x9e\x13D\x0dd\x01\xc4P\x221\x0aQg\xda\
+\x83\xc2\x85\x16,\x8e\xa4i\x16Y\x18\xaaDZ\xee\xdb\
+r\xf8qY\xe4\xf3\xaa\x84\x83V\x13\x8e+\xa4\x1e\xae\
+\x97\xd3\x16\xa9\xe91U\x88\x91`\xc2\x11d?%B\
+\xa4\xa6+\xb1C\xce??I\x02\xc3}ld\xaag\
+\x9bv\xa25\xe3p\x89\x90a<_\xdeg\x05\xd6\x0a\
+.\x02<\x01\xd0\xcdWdQqS\xf9j\x95\xc6c\
+HE\x05L\xf6\xa1\xd7>\x95\x85\xff\x019\xd3\xc9\xf1\
+\xf8\x99\x0d1P-k\xfe\xdf\xe7\x0bH\x9c;\x09\x9c\
+\xde\x93\x9d\xf6\xa3\x10\xb2>\xd7y\xe2\x0fy\xb5>\xf4\
+\xb4s&\x11\x80\xe4\xf5\xac\x90\xad\x85\xb4\xce\x9d\xeb\xeb\
+\x95\xfc^1n\xaf\xb8\x01\x8a+\xc0\x9c\xf8\x1e@\xd9\
+\x17\xa6\x13\xb8\xdeN\x96'\x01\xd0\x9f\xb7\xd7\xb4'\x85\
+ \xb2\xff\xe9?\xeb\xe7\xef\xe9)\x09i\x15gz\xca\
+\xef\xf9\xff\xaeG`\xd8\xb9\x09:R\x81\xbd\xf4\xb9}\
+\xca@O\x04x\x9f\x0d!\xb2\xee\xb7\xf3g\xc2\xbas\
+!I\xc45\xa4d\xed\xef)\xff.\x0b\x08\xb3\x17\xb7\
+\x22\x10$\xd0p:\x9c\xb5\xfa+\xf3\xff\xae\xfa\xdf\xff\
+\xf7\x04\xf0%3\xce:\xe4\xfe>+\xe3\xad/\xe5y\
+\x13\x7fu\x0e\x08\xad\x95\xae\xef<\xe9'\xe0v\xb9t\
+\xc8`\x7f:\xb9\x9e\x9f\xa7\xdd\xd0:[\xeb\x8d\xeb\x88\
+=;m\x9d\xd6\xb2\xb4\xc2\xbfj\x98\x02\x04\x19\x86\xc3\
+\xa5#\xbc}^'i\xef\x5c\x16\xceAGbd\xe0\
+\x7f\xb8q\xc8\xf6\xbc\x8d\xf9\xab\xc45\xbf\x86\xfe\x93\x08\
+\x80P\x804\xcc\xf8\xed\xc8B\xe2w\x9baNzl\
+\xcb\x8fm\x0b\xb7@\x0c_=T\xde\x05\xc4af\xde\
+\x98\x8a\xf4Y\xe9\xd0^!\xc9\xc4.7T\xccA\xc0\
+e\xa8\x22\x8c\xbap\x06dwJ\x85\xf1\x96\xc1QN\
+\xc8\xff\xfe\xc2\xb3\x9c2\xf4H')\xa0\x8a\xf5\x89\x0f\
+\x9b\xe5\xe1\xc3\x81\xd0;\x14P\xba\xe0\x22x\xc5,\xb3\
+\xc3\xb3\x7f\xc6,O_\xc6c],\x02\xc2\x82X\xaa\
+\xa8\xc9l'\xeb7\x96\xe4\xe97B\x06E\x05\xe2\x85\
+mY+C\xb6,T\x80\xce\x91\xf0\xe0=p\x1c\x00\
+\x14'\xc5\x84\xe4\xe9\x11k\x05\xbe\x14U\x92\xa1UE\
+I\xa6<\xd7\x15\x84\xa8\xc6\xb8`qM\x88\x07$\xc7\
+~Z\xf7\xd7\xfew\xf7\xbf\xb3\xff\x9d\xad\x12\xa9W|\
+\x09\xc3\xdf\x9b\x90\xee9\x00\xdf\xbd9d~\xfd\xa3\xa8\
+\xfd\xcf\xeb\xfc\x9b!\xf3\xebgB\xe6\x9f\xffL\xc8\x86\
+X\xd8\xdfh\x7f\xc3\xfd\xbc^\xfbk\xef\xaf\xb3\xbf\xce\
+f\xc8v/\x0f\x19*\xd9Z7lh\x15\xa8\x0c\xd0\
+\x90\xb5\xcdN\xd1\x12h\x0a\xcc\xf6_\x0c\xd9\xe6`\xd7\
+\xba\xe4\xf8:\xc8\x86\xe5\xf9^4\x13F\xff;\x0d\xf3\
+M\x87^\xe0\x9c#]\x06\x93\xc2\xe4\x08z.\x0e\x0c\
+\xe8\xbe\x80\xea\x94%\x84\xd9\xc8)\xbf\xb6\xa8\xb4J\x1c\
+,dbw\x1dC\x5c\xf9O\x00\x00 \x00IDA\
+T\xa6\x0eph\xd3\x913\x16\x13\x04\xb3\xa0\xf6/K\
+2,\x15P\x86\xd4sW9\xf2\xea+\xc9\xff\x82\xf3\
+=X\xdf\xb5>PP\x87\xab\xac\xf3\xe0\xf7\xb7\x0a\xd9\
+*\xd7*\xd5\xd3{\xa6wO\xef^*U\xcb\xfe\xab\
+}\x01\xea\x0f\x12x\xfb<\xc7\xd7\xcd\x04\x8b@\x077\
+\x82\x16\x06H\x08\x8eG\x87p\xa9|f\x05\xea\xf0\xb9\
+\x90%\xe1\xb1N\x0f\x10\xa0rP~3\xc7M\xfd]\
+Vh\xb0]\xab\xc8K\x0c\xddt%-\xac)\x16\x12\
+]\xd9\xf3\x8c\xbd\xbd\x02\xa2t\xb0\x04\xac\xd8\xd5%\x08\
+\xab\xe2vF\xcdO^\x1cj\x95\xe8\x82|\xf5^\xde\
++&\x99\xd5\x17\xb3R\xc2a\xe7 0\xc4\xf4\x02N\
+\x11?\xf7\xbc\xe93\x95\xfeLh\x1c\xfee\xfd\xfc\x82\
+\xfa%\x19MM\x17Q\xe90n0[r\x8a\x05Z\
+\xe5\x8e\xa1Gr\x05\xca\xed<\x80\x9a_\x22\x0d\xc8\xe7\
+\xf2zr_V\xe5Zf\xf9z\xd3u\x17\xd6h\xff\
+\xaf\xc2\x9bz\xb0\x12\x99\x1cY\x8e\xdd_6\xa8\xb7\x8c\
+\xbcW\x15\x17\x89B\xfb\xc9zI\x98\xd0'\xa9\x8f*\
+ \xe4\xb8t2\x1d\xd0\xbd\x9c*RvIE\xce~\
+\x15\xa8\xaa\x9c\x1a\xff\xfa\xdf\xeb\xfb\x98\x22c\x0e|9\
+\xee>\xd7\xfe\xe0H\xd0\x83\x99P\x99\xb5\xd5B\x8ez\
+8\x12\xac%\x8ba^\x1c\x08\x01`\xb1\xf4\xab\xec\xbf\
+!d\xd3\x83*\xa8ZN\xa6\xe4\x02\x99\xbe\x162\xb0\
+\xa7\x9b#\x9f\xe4Du^\xcc\xfd\x96\xb84]!\x13\
+\xfd\x87\x8b\x84l\xd0\xffr\xe8!\x80ZkN\x052\
+\xf4\x1e\x88\xa2\xfd\xd0\xf5\xbe\x0a\x96\x1e\x7f\xdc\x08\xc6\x07\
+\x22\xd9\xb3\x0f\x9c\x0bH\xa2<\xef\xc6\x19\xd5\xf9\x81\x98\
+@\xc6\xc4\x1e\xd3\xeb\x10\x1e\xa0\xef\x12$\xc8\xd32A\
+r\x0c\x02Q@\x98\xad!U1\x95H\xd4\xc2\x80#\
+\x087P\xee\x13H\x12\x89\xa0J\xb0(\x10\xb0K\xec\
+\x10d\x9fu\xd4\x13\x0f\x11HO\x19\xbb\xab%@\xeb\
+R&\x84:\x22\xa2\x10\x00\xc9\x0dP\xa4\x99\xc66#\
+E\x16\xe0\xe0\x8ap\x7f\xf4\x06?\xca\xba\x0b\x90\x92<\
+UA\xa4\xfc\x91L8h\x11+\xe4\x8a\x04\x94s\xc3\
+\xbf\xe4\x10\xb3\x07\x12yH\xb8\xec;\xe7\xacW@%\
+\xa8\xad\xaf\xeb\xb4\x8e\x12&\xc9\x89P\xe7\x97}K\xee\
+\x87c\x02D\x05\x1f\xfb\xca\xf9\xa1\x9f$\xe8\xe9\x0f_\
+\xf6\xaf\x00\xc8>\xa6\xaf\xfc\x1e'D\x9b6R\x01\x83\
+W\xfb\x99\x1e\xe4\xf0+<u\x8e\x9b\x1e\xd8\xaa@\x0b\
+8\xfc\xbc\x93\x0dZ\xbf\xbe>\xf6\xa7\xca>{\xe7<\
+H\xe0\xf1g%\xf6\x90WBFx\xee\xbd\x92\xdf\xd9\
+\xe3\xe9e\xaf}\x9c\x22n\xa7\xce\x11\xd0\xc7\x16\xf6\xe7\
+i\xbf\xd8\xef^U\xda\x8d\xab\xb5~}\xec\x9f\xbf\xef\
+\xec\xf2\x12\x1fZ\xbf\xe8E\xfb\xd9~\xed\x01\xbe\x04@\
+\x9f\x1a\xc0\xbe\xa7\xdfTz\xb1\x07\xfa\xbd\x22\x7f\x1c\x12\
+\xc4\xc3\xc73P=W\x8e\xa9;OrJ\x9dX\xfb\
+\x8c\x7f\x03\xd1\xb6\x16>\xb4\xf0\xd8'\x90!\xf4\xbc)\
+\x18\x90\x0e\xc6\x1b\xb3\xbf\xd6Q\x22M\xa5\x7fj\x5c\x00\
+\xde\xb7\xf7\xce\x1f\x8f\x0b\xc04%H\xea/d\xc2V\
+\xabX\xdeg\xb5\x1et.\x06\x89\x11\xfe\x91\xeb\xb5\xfe\
+\x0aAy\x9f5m\xaesW\x89\x17:\xb9\xa2\xf3\xea\
+\x1c9W\xf4W\x9f\xce\xd0Y\xfe\x13\x89\xabU\xfap\
+\xcd\x90\x0d\x89V\x88%\xad}\xe2o-\xa6\xa9W\x8b\
+C/\xf7\xf1\x11=d\xfb\xf7\x87\x0c\xbdV\x14J|\
+\xec\xffk\xecM\xc0u\x1d\xcb\xf7\xff\xf5\xbck\x99\xa7\
+m(c$C\xf4\x8dH\x86\x92\xa1P\xca\xd0@\x19\
+JI#\xa1P\xa4Y\x92\x8aJ\xbe\xe6\xa9Yd\xac\
+Dd*)\xbed(d\xc8\x14\xed\x22\xe36\xech\
+\xaf\xe7\xf9\xdd\xd7}\x9f\x9f\xeb\xbe\xd7\xb5\xec\xe3\xff\xdf\
+\xd7\xe1x\x8f\xb5\xbc\xeb}\x9f\xe7~\xee\xe1\x1a\xce\xeb\
+<7n\x1c\x11\xab,o,=\xe2\x0f6:\xa0\xe6\
+h\xef\xd4@\x82-_\xb1\x97\xe4Zv\x96#\xf8\xb3\
+Z\x81\x02\x0a\xed\xba\x8a['{\xb32d\xb75\x90\
+[*yfC#[\x22V\xf6\xee\x12\xb3\x9a)\xcf\
+\x95\xd7\xcf\xa7\x8f}_\xb2\xf7\xa7\xfb\xfaz\xb2\xc3s\
+E\xef\x01\x83\xa2\xe7\xe3l\xa7\xa6'\xd4*\xa4\xe9\xe7\
+\xfeJ\xb3z\x10\x8f\x8e4K\x7fw\xa3z\xb2\xf5\xf9\
+\xdd[\xcd\x9a\x8a,\x19|\x1e0\x07\x0a\x07\x19\x0b\x03\
+\x92\x19\xd8\xa7a\xf9d\x83\x12\xa7@\x0a\xdb\x0b\xc9\x10\
+\xd0: \x9b_\x12\xb9 \x19p*\x92l(8\x96\
+\xea%\x84\xfd\xba\xdf\xb7\xdf\xa7\xdf\xa79\xc0\xf9>*\
+\xbc&\xfb\x92\x02\xbe\xd1\xbf\xcd\xd2\xeb\x07\xad\x99#\xcd\
+\xcb\xd7\x99\xa5\xd7\x7f\x98\xa5\xdf/jV{\x0a\xfb\xd7\
+\x9b\xe5\x89\x98\xc9\xa1\xfa\x9f\xf5g\xf5g5r\x7fT\
+\x9eaG\xfec\xa9t{\x85\x9f\x0d\x8a\xeb\x17\x84n\
+\xf2z\xb3\x5c\x19\xc8\x99\xb8\xfe\xa5f\x99m\xbf\xf4h\
+?+(\x0d\x99,\xab\xbc\xac\x9fY\xe8\x935\xec\xd7\
+\xc6u\xbd\xbb\x16\xda<ME\xd5\x8eS2\xea\xe3/\
+\xc0j\x0a+1\xc7 \x07\xa9Ze\xf2q4\xbb\xb4\
+d\xe4\x9e\xcd\xe4nfG\x8e\xcf3\xf7\xe4\x0cA\xf4\
+\xcf\xa8\x9c\x06\x19\xba\xbcRm\xc1\x80]\xbe\xfb\xa7Y\
+\xb3\x01\xb0\xe1 \xff\xc6\x86@%\x9d\x1eI6v\x91\
+(\xe20\xd3\x1b9\xbcCr\x1fd\xcai9\x10\xd9\
+\xa5\x93\x1a\x8a\xcc\xce7\xbcW\x09\xca\x08t\x92\x0a\xd4\
+\x16r4U\xb9v\x07\xf3\xf0R\xc9\xc9L\x0b\xf76\
+\x8e\x93\xd6Q:\xee\x0b\xc9\xd2\xfb\xd4\xa3J\xe2\x0dG\
+\x97\x1e\x5c6B\x900$\x0c\x90\xa3\x02Z\xc5\xc6)\
+\xc7\xddY\xdc\xd5\x03\xeb\x08\x94\xbft\x7f\xee\xac2w\
+U\xf7\xbb\xceZ\x92\x14Hv\xab\xebs`\xdb\xd5\x81\
+\x0aD\xcb{\xe5\x91i\x03\x99\xc4:\x1e\x9b\x96\xa1.\
+\x81\xc3eB\x04(\x10r\xc4\x14\x8e\x0c\xcf\x91\xcf\xa3\
+'\x94\xe7\x8d#G\xc5\x18R\xbc\x95\xa4\x17\xffU\xf5\
+TS\x09\xe6\xf9\xb3\x9eE\x06\xe6\xadC$\x92p\xa4\
+A\xb0\xb0\xaf3\xdf\xa8\xf0\xe3@\x11p\xdc\xaa\x96\xad\
+\xdf\x8a\xd5\x1b\x88?\x8e-\x0e\xce\xaf-4n*a\
+\xb15\xe4%r\x94q\x98\xa9\x1c\xdc\xa7\xf9\x82\xda\x08\
+\x95W*\xac\xb4<\xe1\xe8sP\x93H\xe0\x80\xc5\xc1\
+\xe5\x95y\x84\xa3\xcdsc\xbeA\xaa\xb6\x9c\xf6g*\
+!\xc8<\xcet\xb6\xf5\x92\xf9?M\x09\xdf\xad\xcaz\
+\xf1\x04\xc8b%1\xec\x08\x00\xf6\x09*\xbb\xac\x1f\x1c\
+4\xceI\x91\xec\x0e\x0b\x0f\x8b\x0c\x8b4\x09\xee\xc3\xc4\
+\xb2/\xb2G\xcf\xec\x93\xd1\x87\xeb\x06\xce\x00A\xa43\
+\x99\xa8\xb5\xac\x5cj\xd6 \xdc4\xbf \xfd1\x8d\x88\
+\xac\x12\x81c\xc9\xb8\x800\xe0yJ\xf6\xd5\xe7\x11\x81\
+\xbf\x02O\x87\xc0C\x86\x17\x13\x1d8\x9a8>3\xa7\
+:\x5c\xde:\xc3\xbeOb\x89D\x91\xc8\x94\xfc\x9cg\
+~\xf3y\xb4\x82\xfd\xaa\xb4\xa48\x12\x81u\xc6\xb9K\
+\x22\x8b\xf3\x99y\xc9\xbc\xa0\x22\xad\xd6)\x02\xfa\xf4\x5c\
+\x925\x5c/\x04\x9e\xb4\xfe\xa0b\xc3\xf81>\x04\xd8\
+TN!\xb3\x03\x99\x22\xb2FG\xfc\xe0\xc0\xf39\x8c\
+\x13\xe3\xc9|\x22P\xe2}\x04X\xf4Z\xc3%A\xab\
+\x82\xb8s\x5c\xe6\x92\x044\x88A\xf5\xfa\xc3y\xe2-\
+^$\xd6\xa5\x02\xe4$\x98\xecS\x90\x10\x92\xd8\xd3:\
+\xf5V\x0fz\xcb\xe1\xc0\xc1\xcf\x01\xf1D\xc0\x05'\x04\
+\xad\x89\xf2S\x86\xd5\xcc*\xe2\xd3\x9f\x1b\xe72jN\
+$\xc6x\xbe\x04\x00\xecK\x04\x18\x9cSp:\xf1\xbc\
+iiA\x1d\x88\x04\x10~\x1b\x01+\x89I\x02|\x02\
+U8A\xd0g\x87\xbb\x01\x04\x07\x15A\x02w*\xd6\
+\xf8{<w\xce\x03\xceC\xe6\xb9\x1cvOx\x93\x18\
+\x9a\x9b\xcc3\xf3\x85\xef\x07q\xc8:\xc0/e\x1c\xb9\
+nZ\xab\xf4\xaf[\xd6\xac\xe9Mg=\xd3JB\xe2\
+\x9b\xdf\xb3\xde\xb8\x0e\xd63\xfbu\x94]\xe4}\x9c\x0b\
+sK\x00DV\xff\xd8\xcbM@\xc8\xcf\x91\x0b\x80\xef\
+\xc1O\xe0}Q\xe6/V\xcaI`=l\xd6\x04\x84\
+\xcc\x7f\x0av\x8cc\x0c\xbc\xb9o*\xdbT\xfc\x83\xaa\
+\x89\xbf/\x92\xf3\xb1o\xf2\xf9\xecS \x8f\x08\xbc\xf1\
+\x9b\xf9\xff\xbcF\x84T\xe4>\xf8\x97\xfcG\xee\x8f\xe7\
+\xa5\xca\xfcp\xbb\xe4\xedF\x81L\x8e\x02\x07\xeb\x8c\xfb\
+\x88H\x0b\xae?\x92\x92\xf3\xbc\xea9P\xc6q\xd1\x10\
+(\xf3\xfc\x9e\x0dj\x00Q&/\xb6\x14\xf0}$.\
+\xb8\xdeYZOpa-\xec,\xff\xc5\x8f\x98\x1d\xe6\
+\x05\xd7\xc9\xbcc\xdd0\xdf\xd9\x17\xb6+\x05\xa6\xb1w\
+\x15r`\x9fG\x90\xf6\xc6\x84\x1c\x81<\xfe\x07\xf7\xc9\
+u2N\xb1u\x22&\x04XoB\x1e9\x82\x14\x12\
+X\x9d\xc7N\x22\xcc:c\x7f\xc7\xef$1\xa0q\x9f\
+ph\xa2\xa0\xcb\x9e!\xc0\x11T\xa69\x07*3u\
+\xb0\x1d\xdc\xb07\x1f\xa4^\xde>w\x85\xd6\xca8=\
+J\x96\x11>L\xad\x02\x1fk\x0ePn\x90\x89C\x0f\
+\x95\x0242\xf8\xfdo\xccjE\xcbY\x89O*d\
+N\xa3\xd3\x92\x9dZ+G\xfd\x91\xc9\x8eH\xaf\xcf&\
+\x9b\xad\xc0zo\xc9\x18\x1eP\x03\xa4\xfe\x163\xb18\
+Z/\xfc\xa6fMf\x1e\xa8\x1b\xe4\x7f&k\xb8S\
+\xa3_\x0diN$\x95a\xc1\xd1\xa3M\xcf-rT\
+@\x9c\x97\x1f\x96\x1b\x96\xcb\x99\xf2\x02M\x07:\x0b\xe4\
+\xf19AR\xe8A\x99!6wH\xd6\x94\xe9\x19f\
+\x0a\x0a\xfa6\xb3\xea\xa8\xf5'\x98\xd5\x1e\x19\xbf~2\
+\xe8d\xf2\xaf\xec\xae0\xe8u\xf7\xa7\xee\xc6.\x05.\
+\xa3\x1f\x8aDj\x09\xb3\x9c`\xc9djY\x8cq\xb3\
+\xfa<&\xb73K\x9f\xbfl\xb9\x0f\xd8\x9b3gD\
+\xa3\x02A\xe5\xaa{\xc4\xac\xb9\x7f*\xfe8\x0a\x0al\
+q\x90'\xd71K?\x7f\xc0,'\x18\xce\xecm\xbe\
+\xbd\xdf,\xfd\xfc\x05\xb3\xa6\x22E\xe6\xcd\xd2E\xe7)\
+\x81tx\xb3\x81\xb3\x10\xad\x0e\xf7\xa3\xe6`\x00\xc2n\
+\xee\xc6Z\xf5s\xbc\x97\x1dH\xf4\xbd\x19L]*\xb3\
+\xe6\x88\x7fz\xf8tv4\xd2\xf1<lT\xe7Cw\
+y\xb2+*4mtS\xb2\x9b\xc5\x16\x9f>g\xf4\
+b\xb3\xfc\xbeL\xe64\xdau\xb4\xcbh\x97\xa6\x02~\
+R!\xc7\xf3L!\x0e\x0d\x07\xa9*=^Yf\xc3\
+\xba\xaelP\xfd7EJwq\x81p\x02-\xee\xf6\
+5K\xafk\x9b5PjZ\x11\xa2\xbe9z\xd6\x82\
+<\xbb\x1c\x1e\xfb\x02\xe3\xf2f\x91P\xee[z\x92r\
+bp\x8ff\xc3_\xa7\xcck\xaf\xfc\xabg\x8e\x0a\xbe\
+#!jOr\xa9\x10\xf0|v+\xdc\x0a\x1e\xa8\x03\
+\x19\x03\x82+.\x80\xe1\xadf\xb5\x95dt\x8cY\x0e\
+\xf8\x8acw\x80*\xa7;\x8a,\xeeMf\x8d\x8c\xa0\
+6\xe84*E\xa6\xcf\x9e\xa3\xa9O\xecnV{:\
+\x87\xa7\x86Y\xc3\xac&#\x0c{6\x01\xea7\x14\xa0\
+@\xb2\xc8\xfc\x02\x19A&vi\xb3\xe9$M^9\
+\xa1Ei\xc5B:HE\x96}\xcc\xb9<p\xa8G\
+:(\xee\xd0z\x02\x09\x80C\x88\xc3E\x22\x80\xdeW\
+\xc9>\xba\xa3\xab\x0a\xa7\x93\x9d\xe2\x18i\xbfu\xc4Q\
+\xe8as\x1dj\x1co\x90\x1d\x04\xfe \x0a\xc6]u\
+\xa1TXnV\xef(\x95\x7f\x12\x11\x91\x05\x99s\x82\
+\x0a\x0b\x99z\xd6u\xd4\x8d\x86\xecG\x01\x89s#\xd0\
+\xdaE\x82\x81}\x83}H\x90d\xbf\x0eA\xdb\x9dl\
+\x8d\xca\x22\x15\xd7\x7f\x9b\xa5\xcf\xff\xa4Y\xad\x98z\x00\
+\x83\x83@\xc5\xf6s\x82\x88\x03\xd9E\xe5D\xa4a\xae\
+#-\x87\xa7\xdb\xdc\xacrT\x10\x88z \xc6\xbc\xa4\
+\x95\x85\x96\x82\xfd\xcd\x9a\x84\x04\x01}\x90w\xf4@\x8f\
+\xf3\x0aG\x97\xdek8\x10X\xff\x90#\xe2\xe8\xe0\xc0\
+0\x1f\xf8{z+\x094`\x09\xa7\xb7\x9b\x00\x8bV\
+\x0b\xd8\x90\xe12a\x1f\xa4r\xc7x\x8b\x84sX\xd9\
+\xac\xb9N\x1c%\xedO\xec\x07\xeeW\x90\xf8!Q\xc4\
+\xf5 \xbf\xc78(\x01\xec\x08\x0bT>\xbeh\xd6 \
+EX\xcfT\x92\xb9\x7f\xbe\x8fy\xcb\xff\xa7R$\xe4\
+\x8f\xcb:~\xd9\xac\xa9\xdc\xf2w8\xa4\xf4\x1a\xa3\x8e\
+\x80\xc3Ja\x04H=\x88\x22\xce\x03 \xa1@\xdeQ\
+\x05 Q\xc7:\x92\xbf\xe0\xd0R\xd6\xd9.\xd9j\x80\
+A\xa0\x16Z#=\x11\xc1~O\x22\x01\xf9I\x102\
+T<qt\x19?%,\x5cn\x91y\x0arI=\
+\xfe\xce1\xc0\xba\xe7\xf3\x08\x9cc\x22\x85\x04\xb4\x10\x0e\
+\x9e`\x84\xabA\x9c=.c\x0aW\x03\x01\x1c2\x85\
+|.=\xf6\x5c\x07\xfbN\xfc>\x91\xacz\x02\x80y\
+\xc9\xfag\xde\xb1\x1f\xf3\x1cX\x97$8\x1fw\x88\xf6\
+\xd4\x96Q\xfc\xe6\xc8\x92\xce\xf7\x83L\x89$\x85\x91\xb5\
+\x9f\xc4\x16\xeb\x8e\x966ZH\x08TY\x0fRK\xe8\
+\xd61k\xf6Y*\x8cT\xcc\x090\xe3\xba`^\xb1\
+\x1f\x92\xd8 \xd0\x8a\xff\xe2\xfd\x11\x00\xf2y-\xa9\xf3\
+s/\x90\x00\x88\xaa\x1f\x01\x02\xefH\xba\x90\x00\xf0V\
+M~\x8e\x15t\xe6[L \xa0N\xc38\x82l\x0a\
+\xe7\x91\x07\xe8\x11\x92O\xeb*\x09\x98\xa8.\xc0>\x18\
+\xc9\x0dy\x1f\x812\xfb/\x09\xb1\x07\xc3\xe7\xce\xd4\xf7\
+\xe9\xf7\x0d\xfb\x7f\x19/\x12\x00\x8c?\xfb<q\x0e\xd7\
+_!\xf7\xe5\xf91\x0e\xfc\x1d\xf3\x22\xc8\xc0\xfa\xbe\x06\
+\xa2\x99\xfb\x7fZ\xef#\x01\xc0\xfc\xe7\xefk\x22\xb8\xfc\
+\xfdlg\xfd/\xd7\xbb\x90\xd6I\x95\xaf\xe4}S\xd6\
+G#78\x95Sd\xa6\x937\x96\xf1f\x1eQ \
+\x84\x8c\x14\x92n8}\xd8\x87A\xda\xc1\x1dG\x01 \
+\x06\xfe\x0b\x04\xf5\xac\xff\xaf\x04\x00\xe3\xce+\x7fO\x8b\
+\xd8a\xd9\xbc\xb0\x0a\xf2\xdb\x1a:sK'\xcf\x83\xc4\
+\x01\x89\x00\x9d\x93\x138\xe2\xf9r\xe6o\x1c\x106b\
+\xfb\xb3M\x1a\xb6i;\x16vn\xe4S\x18\x98\xa7\xcd\
+\x9a^l\x0bO\xae\x15\xd4\xe8\xd6fa1\xa1\xc5\x05\
+\xe0\x0b\x86\xdelz.,\x00\xb9\xaa\xf9\x5c\xdd\xb8\x93\
+\xbc\x09\xca\xd8\xcfc\xa6\x0c\x8c=\x88\x14\x8ef\xbd\xec\
+\x8bs\x08Td\xe9\xac\x15\xe0\xeed\x96\xe0\xd8Z\xac\
+\xd5\xdf\xcd66z*\xd9\xac\xda\xd2\x00\xd4\xda\x98\x0f\
+2\xf7\xc1\xbaV#o\xc8\x17b/8\x0b\x0e\x087\
+\x13\x0d\xe8\xa0X\xa6\xbdB{\x91\xc6Q\xdf\xef\x81\x1c\
+\xe3B\xc6\x06\xf2\xaeJ^U*\xe7\xda\xb8\xfb\xb7\xf5\
+\xdb\xf7\xe9 \xea\x8f\xee\xbf\xdb\x7f\xb7\x09@N\x11\xf9\
+\xdb\xcfT\x89\x90\x8c\x15\x19!\x10\x1e\xddl\xb3\x1c\xf0\
+\xff\xd8\x02~\xd7gf\xe2\xaaRA\x02\xa2?\xdf,\
+\xbd~\xd0,\xbd>b\x96!\xd49\xb11:it\
+\xe2\xe8\xc4,\x1f\x97I\xecF[\x9b5l\xb8\x97\xbb\
+\x8ep\xa9\xf0\x12\xf0\x9d^*\xf6\xce\xe2\x0f\xf4\xff\x91\
+\xfe\xdf}\xda`\xfb-\x0a\x84\x9d\x0aV~\x8ew\xab\
+\xe7\xcb*\xdbK%[\xb2\xd9H\x98\xf0$h\x8c\x0a\
+\xed\x13\x8dcen\xe4\xaf\x9b\x9e\x9e}\xcc\xe4(\xbf\
+Z\x19\xb2\xad\x1b\x8e\x0bT,8\x10Q\x9f\xe0`\xb6\
+0\xf8\xe3Uv+\x07\x8e\xe9>G\xb3\xcdj\xc5}\
+|\xad\xf1\xb5\xc7S\xe0\xdd\xddn\x96\xfe\xff:\xa3u\
+G\xeb6\xdc\x04\xef\x10\xab>\x1bN\xdb\x8a\xb0@\xb3\
+\xc1s\xd0\xc2\xee,2\x10w\xb4\xd5R\xe2\x09\x18%\
+\xf4\xba\x93\xcc\x9a\xdeyX\xfb\xa9\x84+\x01\x03\x94\xd8\
+\x03\xa2\x97\x97V\x02O|i\xdez\xcf\xab\xe6\xd5\xb0\
+\xa7\x02$\x12\x15\xacweZ\xc9\x88\xbbn\xbd\xd8\xc4\
+\x87\xff\x166Tg3_d*\xf2\x01\x07\xb2_\xd6\
+,\xfd\xfa\x03fuc\xed\xd75kd\x0c\x15\xb0;\
+{?\x19t*\xa7d\x8aW\x91c3\xab\x04\xf4@\
+\xc5\xba\x1b\xcc\x9a\x8a+\xbd\xe88\xaa?T\xcb\x08\x09\
+\x00*\xb8\x04\x9c\xc7\x89\xfc\x94\xca\x98zY\xbd\xf2\x07\
+\x8b5\x15N\x1cI\x12\x88\xd2i\xa7Be\x0c\x1e\x99\
+\xc3\x03\xb6\xf9\xab\xcd\x9a@\x10G\xb2\xf6\xc4\xa1\x93\x0e\
+y_A2\x90\x11\xe6\x00\xe0\xc0\x9fO\x07\x90\x12F\
+\xee\xb8*\x00@\x16o\xec\xfdr\x98\x85\xe8H\xbbh\
+a\x13\xe7{qp\x08\x0c\x8cl\xf5\xe4f\xfe\x92\xe9\
+\xe7~q<h\xcd!\xd1U!\x92\xb4\x00\x94y\x08\
+9#=\xa4\xac\x8f\xca\xb1R\xe6\xb5\x0ev\x87nB\
+\xf2\x88.;2\x7f\xdf6kz\xe3p\x90A\xa0\xd0\
+R\xc6\xf8Q\xe9%\x00<:\xdb\xd8\xd8!\xd9<!\
+\xeb\x09p\x12\x00@X\xaf\x97\xaa\x83T\x19\x5c\x9e\x8b\
+s@\xf7\x81\x8c\x22\xfbD\xe6\xb4\xb9\xad\x09T\xe9\xb5\
+FfuN\xe1D\xf1\xc4\xe0\x0e\xd9j`\x0d2L\
+\xdf\xeb\x10v\x12TT@\x81F\xe3\x10\x81\xcc\xc1\x91\
+\xe6\x5c'p\x07\xe9\x83CEO>:\xf4\xe2|q\
+\xc80\x15\x14\x1ce\xee\x9fJ\x86z\xc2=\x80\xa6%\
+@\x95~\xef\xa9\xdf\xde\xac\x06\xfe\xce=\xc1\xfc\xa15\
+\x89@\x85\xf5\xc79\xcb\xfc\xa3b-.\x1c\x1f'\x91\
+\x22B\xf24,f\xd6T~!e[B\x01\x17\x81\
+5\xc8@\x1c3\x90\x8dT\xe6q\xd4\x18g\x02\xd8\xc0\
+r\xef\xf3\x5c2\xbb~\xfe\xb3\xbe(\xbc\x04\xa8\xbd\xab\
+.p\xce\xc3\xbd@\x85\x18n\x0d\x12u$\xb2\x98\xf7\
+\x04\x14\x04&\x8c'\xeb\x94\x80\x92\xde\xfc\x8f\x9a5\x81\
+\x00\x10o\xc80\xf9^\x12\xb5\xb4P\xf0{\x12\x83@\
+\xc9\xb5\x8e\xbc\xc2\xaf\x8a<rU\xf4\xb6;\xf9f\x84\
+N3\xaf@ \xe8~\xbb\x97\x985\xfb\xb8\xc6\xdf\xfd\
+W\x1cg\x02w\xfc7\x0a%\x04<*4\xf8\xfa\xa3\
+E\x8e\x04/\xfb&~Al=a\xdd\xf0\x1a\xe5\xa6\
+IxS\xb9\x07\x01\x12\xd9\xd9#\xf4\x99\x84\x0f\x01\x15\
+\xcf\x8d\xf7Q\x89d\xdfg>Eu\x0d~\xc6\xcf\xe0\
+\x1c\x09\x81\x1d\x85\x03'Gf\xfd\xf29\xf8\xa1\xec#\
+\x04rT\x8e\xb9\x8f\xc8\x01\xc0\xba\x9c\x9b\x8c\x5cH\x88\
+\xf9+\xff?\x06JA-\xc1\xc9\xfa\xb8N\x12\xbc\x91\
+\x5c4\xb6\x02\xc4\x0a=\xd7\xc18\x81\xccd\x9f\x06\x99\
+\xcbs\xe6_L\x90\xf2JB\x02n\x01\xfc?\xde\xcf\
+\xf3\x8a-\x10\x8c+\x89\x88\xa7<\x80.\xf3\xe8q%\
+\x0e)\x98\xdc\xa9D\x16\x81/\xf7Eb\xc1\xa1 \x8a\
+k\x80\xe6\x93\xb0\xc7/#!\xc6u\x90\xb0b\xbc\x98\
+\x97Q\xe7\x9ey\x19\xf6\xa3t\xd6\x97\xfbe><\x13\
+X\xfbg\x07D@d\xfd\x9f\xdf\xa1\xf5S\xd5\x06\xe6\
+\x960b~\xd5V\x90\xf2\xfb'\x02w\x07\x1c_\xb7\
+\x9a5H\xbbY\xdd\x93\xdd\x93M\x22\x10\xff\x81\x04#\
+q\x05\x08Y\xee\x97D@$\xfb\x8b\xec\xfd\x8c\xff\xe0\
+,y\xe5\x1f\xf7E\x81R~\xc2\xb0\x9eY\xe54!\
+Q\xcf>\xec\xe70\xeb\x0c.\x17%X'\x1c\xba@\
+\xe5\x02Y\xa0Gs\x97\xb5o \xd9A\xbe\xaf\xca{\
+\xf5\x8b\x9b5\xec\xb8\xd6\x8b\xd8\xf6\xcc\xcf\xcaC\xeb:\
+\xb9^\xd1\xb2L\xf3k\x1bY\x02s\xc8>\xdc$\x02\
+\xd0C6\xf2\x9d\xcf6=+\xb0/\xbf\xba\x04\xe4\x19\
+\x09\x90\x1c\xa6~\xbfd\xfb\xeb\xc0\xd8L\x07\xe7Y\x0d\
+\x04\x0fd\x02\xfa\xd0\xd6k\xff\xb94\x0fnNvS\
+\x86\xbc'K\xaf\x0f%{X\x8e\x95]\xe7e\x05\x9a\
+\xd5\xdd\xa1\x03\x9f\x07\x13!J\xbc\xf2\x80\xe9\xc9\x13\x94\
+\xad;\xce\xacB\xe1\x988\x04L\xe9\xb7\xbb\x0e\xbb6\
+\x0e\x04\x9c\x02,p\x02\x11\x91=\xf9\x82\xe0\x80\x01b\
+dH\x87\xbd\xe4x\x9f\xd2\x04x\x90\x01Y\x05kO\
+\xf5\x88\xce\xc9\xec\xfb\xc9\xd2\xeb\x8df\xb5\x02\x92[&\
+\xbe\xde8d3D\x0a\x03\xe9\xd4\xcb\x87\xd5\x87\xd5s\
+\x22&\xf7X\xbb\xae\xe4]f\xe9\xf3\xce\x1b\x9d?:\
+\xbfV\xae\x1c\xb2\xf9\x8a\x02\xd1w\xb6e\xd8\xcb\xe9%\
+\x94\x834\xbc\xc5,\xbd\xae?\xbcfxM\x130F\
+\x9dT\x12e\xb0\xdbSa\x86LP\xe4i\xddif\
+\xb5\xa2\x949*^\xd6l\xe8\x1c\xf8$~H(P\
+\xc1\xb2yy\x85z\xe4\xee\xd6\x866[\x0e\xe1\xb6\xe9\
+~\x97O\xb6B\x95g\x1a\xddm&\x19\xae\xf4\xf9\xe3\
+\xc7\x8e\x1f7\x9e\x9e\xffxo\x96\xa1\xa0\x19\x92Nb\
+`\xd8r\xd8b0v\xf1\xd7\xe8~\xb71k\x1c\x0c\
+\x0en2\xa4ldr\xdc\xfb\x1f\x985\x8e<\x09$\
+\xc8\x00\xd5\x0b\xec,\xdd\x97\xa8\xc2L\xc5\x95\x00\x84u\
+\x0bT\x96\x8a-\x07\xa8\x90\x18^\x99\x5c\xb8[\xa8[\
+(\x93\x18&k \x9a\xc6)\xb2eS\x81\xa27\x10\
+\xce\x02q\x15\x00u\xee\xf7\xe9\xf7\xed\xf7M\xe3\xb5\x97\
+Y\x96\x85L\xd6\x90\xd3\xb1\x81)\xf0\xc2q\xcb\x89\xbe\
+\xe5j\x22\x10\xa8\xff\xe8\x0b\xa3/\x8e\xbe\xd8\xc8t\x82\
+\xac \x80\xe3`\x84\xf5\x7f!\xb3&@\xad\x01M9\
+\xc0\x81XQI:\xb6T\x84]\x8f\xfd'fM\xe5\
+\x04\xae\x01\x12F\xcc/\x0eD\x02\xd6\x08%D\xb6O\
+-\x0f\x90&\x0d\x0a\xc0\xd2\xdeZ*\xe2$\x1cp \
+8\xa8\xeeR\xab\x0dP}\x1c\x82\x97\xea\xc0~\xb1\x1c\
+T\x9e3\xd7A`\xa5\xca\x11\xec\xe0\xb4\xf0\xb8|\x18\
+\x08\x1e\x12w ~V\x95\xfc\x1d\xf7K\x06\x9eq\x8c\
+\xfa\xdc\x90\x01N\xe8\xc0c\xff\x8c\x89\x81\x7f\xc91z\
+@\x8e\x11\x9c\x08TBc\xa5'\xeac\xd3\x93~\xb5\
+\x9e\xfb\xef\xd43z\x82\x124\xc7\x0by\x82\xa3I\xc5\
+\x82\x04\x04\x8e\x18\xfb=\xf3\x98y\x98\xffU$C\xf7\
+.\x9d/'\x985\x9c\x1d\x1c\xdc\xff'\xa8\xfb\x8c\x12\
+P&w\xb4Td\x8e\x11d\xfbH\xf5f\x8b\xad\xd7\
+\xaf\x83\xf9'\xd5\x07Z@@\xae8)$dfr\
+\xc0\x5c\x96\x90\x00\x00\xa8?\xe7\x94\xd6\xa7'8X\xf7\
+\xaaDwG\x99U. _/\xe2\xca\xc9\x1c;i\
+\xbe\x8cN6kz\x10q\x84\xe0\xde p\x86\x0b\x88\
+\x04\x0b2\xa1\x04\xfa\xc8\x97\x02i\xa7\x05\x86}\x0d?\
+E\x01\xbe\x17$@\x00p.\xc0:\xafJ\x88\xcb\xaf\
+\x02\x19\xe7yS\xe0\xe0\x9c\xc31\x82d\x11N\x11\xe6\
+\x91\x02\xe6\xac\xeebH\xa1E\x86E\x87Es\xa0X\
+\xc8\xf8@\x9a\xd1\xea\x01\x99\xa3 \xe8\x99\x94v\xe9\xa6\
+\xf7\x9aD\x02\xe7\xf7\xb7\x8b:\xc5\xe8\x15fM\x05\x95\
+u\x0c\x92\x90\x0a6\x09!d7\xe1L \xd0We\
+\xde\x91\x1b\xec7T4\xa9\xc0\xb3.\xa9D\xf3\x1au\
+\xc3qd!\x93\xd49\xed\x01\x11\xe7\x12$z\x14\x92\
+@\x0e\xe0_\x12H\xf0<\xb8^\x12\x1a\xe8i\xf3\xfd\
+$\xdc\xa8D\x13\x80\xc2v\xcf~D\xc5^\xeaF\xde\
+\xd2\x02\xd7\x05\x89\x17%\xc8\xfd\xbeA\x5c\xe2p\x13\xb0\
+\xc3I\xc5\xfeL\xa0D\x8f\xb3\x12S\xdd\xeafM\xe0\
+N\x22\x80\x84+\xfb\x12\x092\xc6\x85q\xe5\xb9\xb0\x8f\
+\x01\xe5_\xc6\xc9S\xa7\xca\x00Fh<\xd7\xcd\xf3\xe4\
+{\xd9\x87I<\xf3\xfb\xe8\xc72\xffx~\xb1\xb2\xcc\
+\xdf\x87J\xa5\xcf/\xb5\x06\xb8Z\x13~E\x94\x8b\x83\
+\x0cO\x89\x98nA\xb3f~\x10\xa00\x0e\xdc',\
+\xea\xe8\xa4?\xe9\x01[9'\x080\xb9\x9f\xf8\xcaz\
+\xa7 \xc1\xb9\x89\xff\x17\x03\xfd\x18\xf0G\xce\x92g\x03\
++=\x09\x0f\x02\xe3\x88H \xf1\xc1\xfb8\x9f\xf4\xb3\
+#&\x98_Q\xfe\x96\xf7\xc7\xef\x8d\x89\x00\xee\x8b\xf1\
+\xc1\xdf \x10\xfeG\x98\xc7\xe2\xd0\xca\xdaW\x0f\xbc\x00\
+\x19]US(\xeb\x1b\xff\x81\xfd(\xb6 \x12\xe0\x93\
+\xb0\xe2<\xe7\xfb\xf9\xff\xf8\x1f5!R\xee\x93\xf3\x97\
+\xeb& \x07\xc2\x0f'\x13\x7f\xc7\xf5\xf1w\xf3k\xfe\
+\xb0\x1fq]\xf8\x09\x8c?\xfbODNp}\x14\xd8\
+\xc4-\xe6d{\xf2K\x8d9\xcb\xb8\xb3H\xd8x\x9c\
+C\xe1T\xf7\xe7\xf3\x5c-s\xd3Z\x18x\x9e\xb1\x95\
+1\xcabF\xd2O\xc6\x8f\xb8\x80u\x0f\xb92\xb2\xc6\
+\x22\xaf\x85|\x1b\x99l\xf7\x07\xf4w\x13\xee0\x18\x84\
+\xf1\x13\x15\xf2\x9e\xf3\xf5\xd7\xd7\x8a\x02\xf2k9\xc0z\
+\xa7\xc8<\x8c\xbd\xfcp3]P\x9b\xd1\x93\xe3\x9b\x03\
+\xbc\xd5U\xc1[.C\xd6g\xe6\x85d\xe1\xf5\x15\x8d\
+ceu\xa0\xd3\x9a\x1eFdn\xec =\xaf\x92\x1d\
+\x11\x888\xeb\xf9\xe1\xb9\x0byl4a\xd6\x1c\xb0B\
+ \xe4\x80\xe3\x83U\xe7}t\x7f2\x93\xb7{\xde,\
+\xbd\xfe\xd9,}\xfe\xbd\xc9\xee\xabz\xd0\xdd7\xc6\xcc\
+\xac\xf2Y\x0e\x04\x16\x1e\x0f&flp\x80\xd9\x08T\
+\xc9\x039@\xe52]\xf5\x92\xc3\x92y\x01\x95L\x13\
+\x88\x07\xa0\x1b\x82\x5c\xfb\xc4\xc4\x11\x15D\xce\xee&\xdf\
+\x0f\x99~Au3\x19\xdc\xf8\x0b\x90\x8a\xcd\x93k}\
+\xc5\xa1\xb8\xac\xb9\xfeoe\xf3\xf1&pC\xa6m\xf2\
+\xb1\xc9G'[\x16\xcc\xf9\xd5zA\xaf\xc9\xddfi\
+\xfc>;\xfa\xfc(M\xac\xd1\xea\xa3\x97\x8fZy\x8c\
+\xe3\xb3U\xd2\x17t\xde\xd1I'\xc3-=\xe0n\x9e\
+\x22\x8f6\xba\xd4,\xf9\x1b\xdb\x8fo7\xbe]C\xc2\
+\xa5\x03\x86DH\xbfH\xb2\x85\xd3\xcf\x8b\xca\x113\xf7\
+\xe7\x07z\xceK\x89{bW\x8d\xfb\xee\x0d\xe9\x10\xb2\
+\x80d\xfa\xda\x83bR\xc8\x93\xab\x9b\x0d\x83\xc0\xce\xdc\
+\x95W6\x0b\x8e\x83\xd3\xd2<\xefW\xe2`\xa9\xaa\xaf\
+9Z\xc0,\xbd\xben\xb4\xf1\xc8\xb8#\xae1K\xaf\
+\xc7\x14Vc\xc8\x96\xba_t\xbf\xec~\xd9\x90$\xdd\
+\xa5y\xc4F\x18\x1d\x04A\x09\x9d\x14\x11\xe8.\xe4f\
+;\x985$C\xb0\xef\xd3\xd3JE\x86\x80Oj\x0d\
+\xee\xb8\xe0p\x89\x94,\xfdW2\x9c@X\xaf\x17t\
+\xbcW\x00D\x8b\x8c\x1c!\xef\xe5\x94\x83\x0b\x12\xc1\xf5\
+\xc8\xf9\xffbq\xc6\xd1\xee\xbfl\x96\xd5\x10\x925\xc8\
+\x11\x1cx\x1d\xcc\xc8\x8ez\xeb\x91\xd6;\xfa\xe7\xb0\xfd\
+[\xe3Jn]\x89P\xd6\x13\xca\xbc\xec?n\x96!\
+\xfd\xc9\x1aD\x03\x10\xd6\xabJ\x800\xfc@\x81\x08\xad\
+7\xbf\x16\x94\xf3HU\xde\x15\xc0\xf8\xc6\xce}\x02\x0d\
+\x87\x1c\x91\xe7\xc8\x81D/\xe6\x1d\x92\xb1\xbaQ\xfb \
+\xb2b\x040rl\xbbW\x8f\xd6\x1e\xad\xdd8\x16\x1c\
+\x84U\xf7\xba\xcc_%\xf2\x1c\xfa\xcf\xc1\xc4\x81\x81#\
+\x87\xe3E\x85v!An%\xdf\xea\xff\x1fy\xb6?\
+\x97\x00<\x8dj\xee5\xf7\x8a\xdd\xb9\xaa\xd8\x11\xf0\xb2\
+\xff\x13\xc0\xc2\xbd\x81cE\xcb\x0e\xfb\x13\x0e\x22\x10h\
+~\xcf\xfd\x110\xce\xf2\x0c\xfeT\xd2\x9c\xfaZ\xf6\xb5\
+g\x83c|\x95\x12\x00\x93r\x04\xe9\x05$`\xa42\
+\x8d\xc3\x1cI\x87\xb8\x1f\xd6\x0f\xeb\x92\xbfW\xa2wX\
+\xd7\xac\xb2\x01\xfb\xf8\xe3\xc0\xea`F\xff\xd7er\xff\
+$\xc4\xc9O\x05\x8d\xa7B\x09t\x1a\x07\xe7\xbf.s\
+T\x02\x01\xd6+\xd7\xcd\xf7\xe8s\x1d\xd9G\xe5\x9b\xf7\
+\xc1\x9e\xce\xbc\x81\xb4\x8es\x98\xf9\x02d^\x15Z'\
+\xc9\x95\x1f\xc0\xbe\xedj\x14 \xcdH@\xea\xfc\xcb*\
+B\xfb5\x01\x12-`p) \x0f\x0c\xa4_$\x9e\
+\x9c\x17\x90\x93y\xaf5\x81\xe4W\xc5\x99@k\x1d\xe7\
+0\xec\xec[\x995\x90k*\xcd<W\xee\x97\xc4 \
+\xe3\xc2|\xe1\xfc\xfa\xabzcY?$\xf4\x80\xc23\
+>\xf7If\xf7\xe3\x22\xd3\xa3R\xaf\xca\x8c\x07`r\
+\x90i\x91\xc9\xeaI{6*B$j\xa8\xc0\x12\xe8\
+\xef&\x19T%\x8a\xfd\xfd\x8c;\xc8+\x12.:_\
+\xa9l\xfb~\xca\xe7r=\x81\xf4\xd2\x91\x80\xcc\xef \
+{\xe6\xf3\x11\x84\x0b\xa4\x84\xeco\xec\x1b\xa8J\xc0E\
+\xc0\xba!\xd1\x14U3P5`\xbf\x81SA\x89\x1e\
+\xd4\x00\x1ca\x04\x82\x84@\x8ds\x1ah;\x81(\xe7\
+8\x8e\xbd\xfc\x97\xe1\x1df\x8d\xcc.-<\xe8t\xc3\
+=\x83\x5c5\x05\x9aJ2VZ+@\x0e\xb0n\x08\
+\xe0%o\x06\xc2\xcc\xc7\x1d\x15\x16\x026\xe6#\x9fK\
+\x0b\x1e\x9f\x1b{\xe5y\x7f\x94\xd5\xe3}\xf4\xec#\x97\
+J`\xc3~\xc1\xf3#\x00\xa1\x15\x0c\x04!\x09\x0f\xd8\
+\xdcQu`_\xe6\x95\x02\xc9-f\x0d\x89 \xf7\x15\
+*\xd7\x1e\xe8\x92\xe8\x06\x81\xc1\xfe\x1a\xe5\xb0\x99/\xec\
+\xc7\x04\xf0Q\xae\x8f\xff\x1f\xe5\x02c\x22\x80\xf3?\x92\
+\xe4\xc5WZ\xde`s'`&a\xc8\xf7G\x12\xbc\
+\xd8KN\xc2\x0c\x04\x22\x1c\x10\x8f\x85@\x16\xe4\x1f\xe3\
+\x16\xc9\x04I\x141\x9eQ\x1d\x81\xf5[I\x03Kb\
+\x81yG\x85\x9d\x9ew>\x17dK$Y\x8c\x09\x8c\
+\xfa\xff\xa7\xaa\xabD5\x17\xe6\x13\xf3\x90u\xcd\xbe\xc0\
+\xbc\x85c\x8by\xf4O\xad_\xc6uA\xfd\x9eq\x8f\
+\xc8\x0f\x9e#\xe7 \xf3\x87\xf9\x1d\xfd\xa3\xe8Gs}\
+\xcc\x93\xa7\xa6\x22U\x9cdQ\xcf\x81\xf9\xdf\x1d\xd6}\
+\xb5\xfbj\x83x\xe1\xf3\x02I\xe3\xb4\xfb\xfdO@&\
+\xc48\x92\x7fQv1\x16\x9a\xa3\x8a\x08\x89%\x10s\
+\x8c\x1f\x05\x0a\x10Sj\x05\xa0\x10\xdf\xedf\xd6$\x00\
+\xe8\x89\xa7\xe2\x98u\xc9\xdfUe\xc1\xdca\xd9\xc8\xac\
+9\x98\xad\x9e\xf7\xb9\xda#\xe9\x8e\x1e\x19\x0a\x16\x80\xd4\
+\x01\xfc\x81\x02\xc5&\xf3\xbeh\xa6;s\xfda'[\
+\x03\x82E\xcf\xb1u\xd4\x9c\xde\x04\x94\xe6\x9elZ+\
+\xb49\xb10\xb3V>8\xb8G\x1b%{\xad\xe4\xe7\
+NK?\xefc&R\xbb\xe4\x10\x8d.J\xf6\xebt\
+\xb9\x9f3K??&]\xf4w\x985\x19\x13\x0e\x1a\
+\xdd\x97\xeb~\x03\xdd\xe1@V@\x044\xc3\xef\x0bG\
+dUM \x0e`\x02vH\x86\xc4E\xe0\xe4kr\
+x\xbaC\xcc\x9a\x9ec\x022z%\x81\x923\x91!\
+\xf9\xb1:\xcf\xf6\x82\xaa\xadY\xd9#\xfb\x97\x9b\xe5\xca\
+LI,,h\x96~\x7f\x91Y\xe3h\xe18_\xac\
+\x03V\x0b\xd8U\x12^)\xc7X\x81+\xd0\xee\xfe'\
+f\x8d~7\xa4w\xe7\x9b5\x8e\x14\x81\xe2)\xdd\xa9\
+\x9d\xc9\x0d\xfe\xc7,\x93\x16\x16\x12\x9c\x19\xe5\xef\xfb?\
+\xf4W\xf7\xe9\x00\x98|\xb3Y#7\xc3\x82\xa1B\xff\
+\xefL3R\x1c\x85\xe5\x1a\x923\x0058\x18d\xfa\
+\x99\xb7\x90\xf1\x90\xf9\xe7\xfa$\x13\x98!\x8f\x1f\x11\x97\
+\xc5\x9eM\xaf4\xe4z\xcf\x9b\xa5\xd7\x09\xe9\xbc\x03\x05\
+\x139^^W;6\xd0Z6 *\xa2\x7fV\xc5\
+Y\xf7;mC\x83LH\x09\x90a'\xb3f\xfe\xd0\
+\xebK\x80\x89,\x89d=\x1d\xea\xca\x06\xc8\x86\xa5\xc4\
+\x92\xb3\x7f\xaf]\xe6G\x0a\xe6J@&\x127\x97\xaf\
+\x92\x83ii\x22K\x1494\x92^u\xd4,\xf4\xf9\
+\xa3/\x985\x0e\xe1f\x9a\xdf\x90\xe8\x01\xa1:\xb5T\
+f\x987\xe3\xef0k \xcd\x04\x02\xab\x0b\x81\x22\xf2\
+\xaf\xd1\x0f\xcd\x9aq\x07\xda\x079\x22\x8e\x99\xc6\x91\xca\
+--4c{KO\x15\xc7\x03H\x1e\x0e\x18\xba\xd5\
+\xa7+\x81t\x97\xc8PO\xe8\x8e\xef\x8eo\x02\x13\x12\
+C\x81\x15\xd7\xf7+T\x16h\xed\xe1\xe0\xa4\xd2w\xbf\
+\x0ef*\x8e\xb4\x1cA\x8a\xc6\xe70_U\xf9t\xb2\
+\xc1\xbe\x09\x80\x9fm \xb78|\x1c\x98\xcc\x0f\xb8\x1f\
+ \x07c\x1d=\xac\x03\x86\x1e\xdc\x9dD\xe6\xb9\x8a\xe4\
+a\xcf\xef\xce\xeb,!{\x9dY\xa3B@ \xc9>\
+O\xe5\xfaj\xb14+C\xdfm(d\x8b\x12\x0e\x0e\
+\x99\x059\x05\xa4\xf0\xc9 \x874\x19z\xe08 9\
+hc\x8f\x1c\x89\xb2\xcb\x95\x109Yj\x07\xec\xe7<\
+'\xc6\x9b\x839\xb2P\xd3cH%\x8e\xc4%d]\
+R\x91\x18\xbbl\xea\xfe\xe1\xf3\x87\xf1@mf_\xb3\
+\x1c\xa8\x14\x87\x92\x1eB\x12\xdb\xea\xe9\xf7V5\xf6\xf9\
+\x09\xef\xd1,\xcf\x8f\xeb\xe1\xe0'\xc1J\x8b\x0cr\x95\
+ \xf0t\xee\xa2B\xe2\x08**\x92J`\x83@\x80\
+\xbc\x14\x87\x07N\x10\xe3>\x19>]\x91.N\xd6\x8b\
+c\xa2\xf3\xc9{!I`\x130\x13\xf0\x8b{\x08n\
+\x0b\x0f\xe0\xb8?\xa0\xd5\xec\x0f\xc8\xcd!\x17G L\
+k\x0e\xf3\x86uw\x8cY\xd3:#\xc8\xa4;\xe4\xe8\
+\x96S\xb9\x17\xf2\xd1{\xa8\xcf(\x01|\xf75\xb3&\
+1\x81C68\xbb{q\xf8p\xdc\xaf\x93\xfe9\xeb\
+\x89\xe7\x8f\xe3H`\xae\xc0\xc9!\xeaBx\xf4\xdb\x9a\
+5\xfb9H&\x023\x91B\x0eG\x995\x01:\xe7\
+\x85\xb8YL\x0b\xc6\xd4`\xf0\x0b\x5c\x1e\x8e\xf9\xcb\xba\
+c\x1d\x11\x18\x9c\x93\xad\x06tU6\xac\x04.\xbc\x1f\
+\xff\x0e\x0e\x01!>hmrR9!\x99<a@\
+\x82\x8c\xc0\x92q\xa1\xd2J\xa2^\xefw\x84\x15=\xd5\
+\x9c\xdb\xac\x0b\x12\x15p\x0e\xd0B@\x02\x80}6 \
+\xd1\xfc~@~ \xb7\x0ak8\xdf\xa7B\x0f\xeb\xc4\
+9Pbo6\x09.\xf6\x05\x12\x5c\xf8\x1b\x04z\xac\
+\x07\x02N\xe6\x13\x01\x11\xcf1\xbe\xf2\xbc\x08\x80\xb8~\
+\xf6\x05\x12T v\xd9\x7f\xd4\x1a\xe0\x9c3a\xdf\xa0\
+\xe5\xc5\x13\x13\xf8\x13T2\xe9\xfd\xe7\xbe\x17\x0a\xb2q\
+\xb1\xb79\xb2\xaa\x13(\xe2?\xe3\xff\xc7@\x8e\xf5\xc2\
+kL\x00DR\xb8\x98\x00g\x1c#K<\xf3\x95\xcf\
+\x89\x01\x1b\x08c\x12\x14\x5c'\xfb\x02\xcf\xed\x1f\xa1g\
+\x9e\xeb&\x11\xc0\xfd>\x15z\xcb9G\xf8;\xe6+\
+\xe7\x1a\x01#?\xf39\xacG\xd6=\x7f_\xd9\xf39\
+\xa7\xca8\xa1w\xcfx0\xbe5AR\xc6!\xb6X\
+\xb0oq\x1d1\xc1\x10[\x9dI\x90Q!\x8f\x01.\
+\xf3\x83u\x1a\x12\x5c\x9e\x18'N\x0c-<\xee\xaf\x04\
+\xee\x06\xe2T\xff=Px\x108\xec\xffT\xf8c\x0b\
+\xd3\x22Z?\x5co\x0c\xa8\x19/\xee\x9bq\x82\x1c\x14\
+\xc4\x12\xef\x8f\x05\x8c\x88< \xa1\xc2\xf7=\xef-\x15\
+e\xdf\xc4\xdf\x8c$\xc6\xac#\xe6/\x9f\xcb|\x00\x09\
+&\xe4\x17-q\xceQ\xa3\xf1\xec\xee4k\xc8\xa0A\
+ \xc9\x7f\xa6`3\xd1-j\xa6\x0a\xc7\x9a\x82\xba\xcc\
+\x14\x09\xda\x0aM\xc0!G\xc7!\xbal\xc0TF\x09\
+h\x9e\xa0wT\x00\x00 \x00IDAT\x09D\xed\
+v\x9a\x8a\x92;\x22T|\x95\xa1t\xd6T6\x1cc\
+\x03\xfe\xa96\x9c-\x9a\xdeZ\xe4\x81\x0c\xb0u\xa6H\
+\xa9N\xd6F\xfd\xe3\x06\x12\xbcN\xb2uk\xab\x80W\
+nl\xb9\xce\xd7@\xf3\xd5c7z\xbbYz\xdd\xc0\
+,\xfd\xfe\xfb\xaa\x88\xb2 \xf6\xc9]\xe4\xe6\xc0\x94D\
+\x04\xac\xdfs\x8a^\xedp\xc4\xf0\xcd\xe1\x9b\xb9\x15\x22\
+C3q\x88]\xce\x09\x87\x09\x87X\xf2l\x90\x22\xe2\
+\xe8\xb8\xde\xae\xb9\x89\x97H\x9e\xee\x87JD\xbc\xbd9\
+\x80 '[\xa18\x0eY\xc4\xef\xb6f\xfc\x04\x09E\
+\x85\xc1\x03V=\xafL\x9a\x96\xfe\x7f\x7f\x90Y\xd5\xe3\
+N\xc7Eq\x10,\x0c\xbd\xa9y\xceL< \xd9\xe8\
+\xcb\xab\xb2\xd1on\x96{\xcd3d\xd4+\xce\x82x\
+\x8e\xbee\x96^\xb7*:\xe5\xe8\xd6{\xe5\x04\xf2*\
+\x91\x94\xf4\x8f\x9aU\x12&H\xad\xe0Np\xf6\xe99\
+\x19\x1cT\x02\xd0\xb5\xb4`\xc7\x1b.\x8bC\xcd\xd4r\
+\xb2\xb1\xe6\xdd\x81\xaaH\xd8\xf3=\xa2\xc8\xcc\xe5\xde\xe0\
+\xcf\xd6@3\xf7\xde\xfeU\x8e\xe7[\x9b\xca\xa4\xb9\xb5\
+\x1b( ;\xb0V\xf8]>\xc9\x18\x076\xac\xb2\x83\
+\xddi\x96r\xaa\x15ew\x8c\x1489\xb4~+\x91\
+\xd1\xbd\xac$N\xfc\xa0_\x5c\x1b$\x1b\xc5\x9f\xe4\xa0\
+,)\x04\x09=\xc8\xba\x0f\x87\xfc\xb2A\x0b*j\x0d\
+\x06\xd6b\x90\x82\xb3\x02\x95%\x81s\x9bY\x13\x800\
+\xff8\xc0y\xee\xb0\xc4\x8al\xcfI\xa4\x8e\xd0|\x86\
+\x93\x03\xb90\x10EZ\xdf\x0e\x15\x85\xd5\x9f^\xcc\xf7\
+k\x1d\xeeR\x90\x1a\xc3\xa6\xc3&\xc3&MO&\xdf\
+G\x0b\x07\x0e\x13rj \x1f@\xda\x88]\xd6\xd9\xd3\
+\xe5h\xfa\x01\xa6Jr\x8f\xec\xd2Vj\xb5AN\x08\
+\x12\x17 \xd8\x1c4T\xa0\xe5\xd8{\xc0\xac\x0d\x15\xd2\
+K\x7fN8<8\x0e\x1c\x101\x80\xe4 \xb9]\x88\
+!\x9e\x1b\xf2\x85\xe8\x1a\xff]\x99z\x12\x04\xf4\xcc\x03\
+\xddWb\xc0I\xacbO\xef\x02\x01\x1a\xc7\x01D\xc5\
+\x93\x03\x82\x03\x08\x87\x99\x7f\x1cD\xec/\xeb\xa9\xe2\xfb\
+\x0b!\x1f\xa8\xa0\x89\xcc\xcc[vv-\xadM\xb0\xfd\
+z\x0b\xd6\xceJ\x5c\xd1\xb3\xca\xbe\x22\xee\x06\x87Fs\
+\x80?$\x87\x8c\xf1]\xcc{\x05\xcb\xf3\xa15\x00\xf5\
+\x009\xf2\x8cC\xb7[ii\xc8\xbb\xf8\xbe\xd51\xf1\
+\xde\xc89A\x9f\x98\xcfe<\x80H\xc6\x9e=\x1c\xd5\
+\xaf\x152 '\x93\x5cK\x81\x0e\x89<\x1c\x00\x1c\x14\
+dz \xe5\xc1\xf1Q\xe05|H\xfb#\x90\xe5\xed\
+U\xd1%\xc0\xe0{A\x80\xa9e\xc3e\xeb\x90\x89%\
+\x90\x22\xf1\xacV\x1f\xaf\xd83\x1fa]\xe7\xfaHH\
+\xa9\xc7\x1f$K\x7f\xa0Y\xc3\x22/\x0e\x018\x0f\x9c\
+\xf3\x81\x96\x14\xb5\xd6\xd0\xe2\xe5\x10D\x02t\xb5\xc4\xf5\
+/6\xab\x1c#Fu\x9b\xc9n\x83\x1c\x99s\x18\xd0\
+\x22\x00\xf4\x1d\x87\x97\x84\x16-e<O\xcd_W\x87\
+a\x1d@Fx\xa6\x02G\xad\xbb\xb1s\xd5j\xc0\xfa\
+\xfd\xad\x12\x13$\x84\xc7\xbcGv*+6\xf7\x054\
+z\x03%\x1c\xd8OY\xef8\xd2\xf8\x11@I\xe1t\
+\xb8\xdc\xac\xe1l\x01iH\xe5\x8c\xc4\xdck\xcd\x1a\x12\
+PZ\xd8\x90\x89\x12G\x8c'\x84pd\x09\xb8\x99\xcf\
+\xcc'\x02\x0d\x10\x94\x04*8\xd0@\x96\xe9\xa5f^\
+\xc1iB\xcb\x90\xd4\x91`\xdb\x1f\x03I\x89\xc3\x0c\xf7\
+\xc2\xa7\xcc\x9a}\x80\x80\x009-\x1ch\x05\xa6\xc37\
+\xcc\xea\xbe\xe5\xad)\xf4\xfcs?$~Ab\x8aL\
+\xd4\x91\x1c\x9c\x0bpX@\xfeJ\x825\xe8\xd7{\x02\
+\x19\x84\x84\x12\xbe.3I\x00\xc5\xfa!\x10g\x9f%\
+p$\xf0%\x91\x8d\x1a\x06\xad\xd7B\x0cx\xc0\xcf\xe7\
+-\x1dZ\xb7\x98O\x81l\xd3\xff?\x09N\xc6\x95\x84\
+\x13\x88\x22\x02$\x02\x15\xd6;\xfb&\xf3\x80}\x98\x84\
+\xd9\xa5fMKI\xac\xacr\x9d\xac\xc7\xc8y@\xe2\
+\x83\xf3%\xf6\x9e3\x0f\x17r\xd9\xb9\x120\xcd-\xe0\
+\x8f\x5c\x00\xff\x09\x15\xea\xc8\x09\x00\x12\x81\xf9\xcb\xf9\xc2\
++\xa4\xb0\x8c+\xcf-\xa8\x98\xf8\xf71\xee\xbc\xc6V\
+\x02\xc6\x85\xfd\xa6B\xdb\xcb\xdfS\x81\xe7\xfb\x09\x84\xa3\
+|_@\x08\x0c\xb3\x0ab\xd1\xf7\x9f\xe7\xbc\x15yj\
+\xe0\xce\xe7<1\x97\x96\x09\xf6\xd7\x90\xc8r\xe4@L\
+\x00\x10\x10\xf3\xf7 \x9e#+\x7f$u\xe4y\xe0?\
+ S\xca>\x8d:\x0c-<\x0b\x86\xc2\x00\xcf\x83\xf9\
+\xc3u\xb1\xef\xa02\x06\xd2\x12\xe4Al=\x5cD\xbf\
+\xa7\xc0\x11[L\x98\x171\xc1\xb3\x80\xfc\x0eZ\x85\xf8\
+=-\xae|~l)\xe0\xf9\xb3^#\xf2#\xce\xd7\
+\x98\x18\xc0\xcf`\xbd\xc25Ak\x1c\x89aq\x80\x81\
+\xa0%q<\xba\xdc\xac~\x8f\xefo\xda\xd7ATM\
+x/9,\xe87ga\xa6*\xcf\x226]X\x94\
+q\xc8\x9ddf\xb7\xcc\xd3]!:\xcf\xe5)Y6\
+\xc2%\x1aH\x02\xac\xba\xfa\xbb\xdc\xb3h\x01{\xc6\xec\
+VG\xb4\xfb\xbdYC\xe2\xf6p~d^A\xf1\x0d\
+\xc5\xc2\xaaC\xd5;v\xa8\x1c\xf2\x9b\xf5}\xe7\xab'\
+\xf1\x93u\xc0\xbaM\xcd\x9488\xb1\x09<\x0d\x82\xfc\
+\xe5\x9c8\xc8\x10Nw\xa4\x80\xf0\xb1Q\x9f'\x07\xed\
+\x8b\x82,\x9fmV+\xea\xa3O\x8e\xf6\x1dY/\xf3\
+\xfe\xa3\x03FV\x89\xb9\xdf,W\x16\x8al\x17\x13\xfa\
+.m\x80@a\x81\x92\x91A7\xc4\xc5s\x82\xb0\xef\
+\xa2\xfb\xba1\xfd\xbc\xadY#\xe7\xc7\x06\x0f\x14\xdd\xb6\
+\xeb\x17U]\xe4\xfc\xbe\xcb+\x02\x22\xd7\xa3/\x96\xa3\
+|\x8d\x02\xc9\xa5\x1a\x96ge\x88a\xbfw\x125\x0e\
+\x142\x8e8\xa2T(\x15 O\x9e<y\xd2\xa4\xb1\
+\x84\x1fj\xd6\x8c#\x99:\xc9S\xf4o5kd\x0e\
+\xb71\xab\x0eD\xbf\x94Yz\xfdq\xff\xa3>9\xc0\
+\xfd\xa1fy\xc2\xe7\xca\xc6\xe8\xd5fr\x04\x0fiH\
+\x01-\xf1\xb3N\xfay\x85d\xcbW\xc7\xd5Y\xbdQ\
+u@N\x8e\x03\xb9u\xac^\x80$#osw\xc8\
+!\xb8]\xd0\xd0\xe3j\x05k\xf4>\xb3\x0a\xb1\xe4>\
+\xbb?w\x7f\xe9\xfe\xd2 d\xa8\xfc3\x7fq\x84\x98\
+_:\x80\xac!\xc0Z\x02\xdc\x91\x80|gM\xb3t\
+\x7f\x1b\x9be\xc8b\xee\xb9\xf5q& D\x7f\x15\x95\
+\x88w\x97\x04\x0a2y^\xa9&c\xfc\x22!0>\
+nV\xe5\xf0\x1c\xdaI\xc0\x8a#N\x8f?\xbf\xdfX\
+=\x9f\xab\x0b\xda\xcfF\x06\xa7\x03\x15R\x90C\x8f(\
+C\xf9a\xb3\xccyP\xd8\xbaq8t \xf5\xd7\x9a\
+\xa5\xf1\xdd\xde\xac&<@2\xa0\xd7\xed\x15|2\xe1\
+Tty\x8e8\x14<\x87'\x0a\x946\x05\xf4\xa5\xf7\
+\x98\xfd\xe1\xa7\xaad\xe3\xd8j\xde\x0e\xe7\x88\xac\x8f^\
+d*\x9c\xbb\x16\x1d\xed\xb1\xb3U1\xd3F<M\xb7\
+\x9c\x00\x81\x80\x0bh5\x1b<\x0e\xc6\x05\xba\x9e\x1d\x86\
+\x1d\x87\x1d+\x82\xa7\xfb\xbeY=\x00\x87\xabT!\xfe\
+x\xb7w\xb7ws\x10\x92\xc0x\x8dY\xe3\x98\x12\xe0\
+\x92\x98\xe0:\x14\xc8x\xe0L\xc5m\xa9\x82\xf4Hn\
+F\x99\x97\x8f\x04}\xe2\x17\xb9\x9a@\x09\x88@\xa6\xb0\
+\xce\xe8\xd5\xfdZ!%\xa3\x15\xc7\x13D8\xf0[\xa6\
+\x80g\xcb\xc6\xb1\x81,\x8d\xf9\x19\xd9\x96\x99WQ\xf6\
+\x8b\x1erX\xf2\xa9d\x03y&1\x8d\xe3\x82cE\
+\x82\x8b\xcf\xc7\x01\xe3`\xc6q\x5cZ\xf3r\x1e\x97\x05\
+*\x0e\x1b\x19u \xb0\x04`\xb4p1^\x04 \xb0\
+\xfd\x7fL\xe4i \xdb@\xe4\xa8R\xe8\xeb\x97\xfbD\
+\xc6m=%\xb4\x81\xfc\xb1\xff\x0a\xf2\xec\xf2\x9eo3\
+k\xfe\x9e\xf7\x03\x9d~e\x91muGU\x01\xa4\xef\
+\xdb\xb4p\xd1k/\xf9)\xf6)\xae\xcfU4P\xcf\
+\xa1\xc2\xaeu\x9cv\xab5\x865\xaa\x03\x9a\xc2\xfa\x19\
+\xdd\x8c\xa62,\xc4\x99\xcb\xf8\xa9\x07\xde{\xe7!{\
+c\xdf\xa1\xe2\x8f\xdc%\x09\x12\x1cT\x05j\xde\x9b\xad\
+\xf3\xde\x1d*\x02\x0e\x1cJ!\x0eH\x14;\xc9\xe9&\
+J\xccP\xf9\xbdFrw;\x17\x15\x9d\x81\xf9\xf1>\
+}\x9f\xce\x93\xee\x8bjU\x82\x14\xf5OE\xc6\xd6e\
+|g\x05\x0e\x17\x1cj\xceq>W-\x00\xc3\x1b\xcc\
+\xa6pg\x94uK\xa0\x07\xf2\x8f\xc0\x8d\xeb\x052/\
+N\x06Tu<\xf0g\x9fe~\x90\xe8\x8aPb\xae\
+\x87\xf1\xe3\xff\x83\xcc\xa4u\x86\xe7@\x8b\x05\x8e/P\
+|*\x83\x9cg\x04>$\x1a\x98\xff8\xbaT\xeey\
+\xae \xf8\xe0fP!\xc4IT\x09\xd8YO\xef\xca\
+V\x03\x06\xce[\x12\xe6\xa8\x8b\xc0\x150\xe1d\xa8e\
+}s~\x80\x08$QGB\x00$\x19\x89W\xd4\x82\
+x>\x04 \x13\xae;^X\xd8A\x8aq\xbep_\
+\x1a_\xaf\xd8\xe3oE\xb5\x18>\x9fD\x0c\xc8S\x9e\
+#HK!J|^\x91\xc0\x88\xaa\x1d\x04@\xec\xa3\
+@\xf3E\xd6\xdb-a6\xbdB\xec\xad\x11\xe8\x92\xb3\
+\xeei\xed\xe0y\xf3y\xa8D\x00\xa1g\xfcy>\x5c\
+?\x89j\xc6\x8f\xeb\x8b\x81>\xfe2Pm\xce\xd9\xc8\
+\x05\x10Y\xd4\x99\xcf\xcc[\xe6i\x84r\xf3\x1a+\xf2\
+\x9c\x13\x91d\x91y\x8aZ\x87\x90\xc8\xbe\xcfp\xdd\xec\
+?\x95\xa4\xaf|oL\x04<\xe4\xea\x00\xe5\x15\x16\x7f\
+\x12\xd6\x14\xfcf{e\x99D@\xf9\x99V8~\x1f\
+\xef3\x06\xa2$xP\x09 \xf1\xc7z\x8f\xa4tQ\
+Uan\x09\x80\xc9\x808`\x9d\xb3OI\xdd\xc3?\
+\x8fu\x1a\x02|\xf7\x03\x22\xc9`@D\xb8\xaaU\x9c\
+\xdf\x04\xec\xb4\xc0EY=\xfc#\x9e{L\x90\xc0i\
+\x03\x19-\xc8lZ\xe0\xc4A\xe6-\xa4!\xe0\xe7\xfc\
+$\xc1\xeb\xf3\x82\xb8\x9b}Q\xf3\xa9\x1b\x995$\xd8\
+\xf8\xe3\xb4\x9a*\xc1\x09r\xc7\xe3X[g\xd7g\x8e\
+ \x8b8\xc7\xfa\xed\xfb\xed\xfa\xed\x1a\xa4=\xf1\xc0\x09\
+\xc3\x89\x16\xff\xd2\xd24a\xf5\xeb\x5c\xc1\xc6\x11%\xc0\
+\xc3qfC\x04Z&\x1d\xfa\xee\xc6\x22\x1b\x97!W\
+\xe7*\xc3\xfc\x86\xe6\x01\xe1\xd0\xe0@l`\xd6d\xd2\
+\xf5\xf9\xdd\x05\xc9\xac\x17y\xbed\xf362\x84d\xce\
+\x80\x06\xa2\x87\x0c\xb4\xf3\xc5fJ(\xec^\xa1\x8d\x04\
+\x94\xae[\x8al\x9b\x1d\x18\xe7TD@\x7f_\xb2\xb4\
+\xf0&\xf77\x13\xdb\xec\xd1\x95}\x19\x07\xa8?\xa1?\
+\xbe?\xbeNXz\xce3T\xfe\xc2\xa6\xb2.\x92\x10\
+Hg\xba\x05\xbb\x052\xc9\x89z\xf0=p?W\x01\
+\x03\x1b&P#M\xac\xfe\x17f\x15\xea\x81\xa39\xfa\
+\x93Y\xfa\xdcG\xcd\xd2\xeb\xad\xc9n\x11\xe2\xc2X\x80\
+\xcfJ\xf639\xe27\xd4\x9es\x97k\xd3\xe7wg\
+$;\xb3\x8e'\xbd\x92\xa3\xc7\xcc2Iav \xbb\
+\xbf\x99U\xb9\xba\x14\xe4\x17\xa4\xc2a\x05\xf2\xe9=\xe8\
+?\x96\x03\xb0\xb4z\xdf\x80\x1e\xaeW\x02%*N\xfd\
+\x13f\xe9{\xce\x17I\xa0H*8\x98\x08t\xc6\xff\
+a\xd68\xb6s\xccr`\x91\x1d\xec\xb4\x0c\xb3\x83\xd3\
+\x9flV\x13F\xce\xfam\xb3\xf5O\x95\x04\xcf!\xa2\
+\x1c\xe8@\xfd\x04\xf9\xca\xbd\x7f\xfb5\x01\x06\x10rZ\
+Ql\xfb\x98\xa7A\xb0\x88T\xd23\xca\x13\xc9\xd2\xdf\
+\x8d\xb60\xcb\x88\x80\x1cHw\xf7\x18\xab\x849\xfc\xa3\
+d\xb9\x85\xe3\xa1\xee\xa1\xa6\xa2\xc3\x06D+\x03\xe4q\
+d\xd2\xc9\xdc\xc9\xd1qd\xc4\xdf\xd5k\xba\x7f\x91\x83\
+\xf3\x03M\xef\xf7\xd6\x14\xa0\xc6\x1c\xb4\xdc\xbf\x1c~'\
+\x15So\xfb\xf0\x9062*\xf7\xe8\x10sp\xb2\xb1\
+\x01\xe1}\xa3Y\x0e\xb42\xa4\x8bV\xa1nQ\xf5>\
+\xfeN2tr`\x86\xf5\xcd\x1a\x87\x84\xfb\xa5\x82\x85\
+#\xab\x00\xd0+\xc9\x90\x9c!\x0f&rOwP \
+\x8d\xa2wZ\xa4f\xb9\xe5\xe7{\x0d\x84Y\x15\xa7a\
+\x19\xb3\x1c0\xae8\xac\xd8\x8c\x1f\x99[\xf6A6\x5c\
+\xae\x93Wzm\x95\xc0\xeb.4k \xae\x1c\xe4d\
+\xb6\x09\xcc_l\xd68\xe0\xcc7\x02\xc4\xdd\x05\x01\x07\
+1\x01\xd4\x9f\xfd\x98yr\x8d*\xf6\x17\xab\xc5d\xd9\
+\xa9\x95\x22\xaf@\x8a\x93\xc2+\x8dd\xcaao\xbe]\
+\x8e\x18\x19n8\x09~\xa9J\xd1/\x95\x00\x02\x0a\xcc\
+9\x80c\x07\xfb\xbaH\xe9\xd23\xc8\x09\xb6\xe1\xcc\xa2\
+&\xe1\x09\xce\x1d\x8a\xba\x85\xab\x09\xc8AO\xbb\xd5\xd9\
+\xc3YM\x85\x12\x07\x8b\xc4\xd2\xc8\x1d+\xc8\x80\xa6\xca\
+XA\xaa\xf7S\xe9\xc7C\x9e\x8a\xc3\x0e\xfb;\x01\x0b\
+\xe7\xd2\xbd\xba\x9f'\xf5\xbc\xa3\xdc\x13\xe7\x0e\x0e\x1e\xd7\
+C\xcf2\x95\x12\xd8\xe8!\x9be\x1c\x80\x22S\xd1\xe0\
+\xb9\x81\x00\xbbN\x15D\xc8a\xa9x\xaa\xc2I\xa2\x9d\
+\x0a\xb7\xcbP~S\xe7\x8a*\xbc\xc8\xe2\x8e\xe6\x98\xa5\
+\xd77\x17\xf5\x95n^\xb3\xf4\xfey\xccjE\xdd\x13\
+g\x90Y\xaa\xf2\xe7\x10w*!p\x91\xa8\xe2\xc1>\
+\xe0$\xb0p\x00\x88\x9b\x03\xe4C\x7fC\x7fc\x7fc\
+\xe3\xb0\xa12\x01\x89\xd2\x16\xea\xc9G\x0dF\x01\x8aW\
+\xb4x\xae\xaf\x97\x9c\x1d$\xb6\x8c?\xaa\x17\x04,\xec\
+K\xf8\x13$\x8eX\xef\xccO\xc9\xe3\x11\xa89\x99\x17\
+\x01*H\x87\xebE.I\xeb\xdbcr\x089\x9fE\
+\x229\x86\xe3:_\xe1\xd0\x81\xa3c\xec\x16\xe9/\xbf\
+x*g\xc3p\xad\xd6\xff\x9a\xf2G\xc6\x02i\x1b\x8e\
+9\x8e7j\x0e sp\x90\x09\xfcq\x8c!\x1bD\
+\xae\x15\x99_\xed\xf3\xc3)fM/8\x0e<\x0e?\
+\x90Z9\xea\xddbf\xcd~\x83\x83\x8a\x9fBB\x9c\
+u\x0291\x15x*d\x04\x8a$\x04qx\xb9n\
+Z\xfe\x08l\x91\xaf\xe3\xfc\x86\xbd\xff#f\xf2k\xce\
+j\x1ce\xf6{ \xfa\x04h\xb4\x8a\xd0:A\x22\x96\
+\x80\x1b\xb9RZ\xa3hE\x80\xbc\x92\x00\x015\x08\x12\
+v$\x92\x08Py\x1eT\xe4\xd4\xb2\xe3\x81+\xef\x8b\
+\xf2\x98\x9co\x9c7\x91\x8c\x95\xc0\x03\x92N\x90\x09\xf4\
+\xcas\xff$\x90\xa8\xdcs.3\x8e\xb4z\x00\xfd'\
+AA`\x16\xf4\xc5\xbd\xd7\x9d\x16\x09\xee\x9f\xf5#\xf2\
+KoIb\xbc!\xf5\xe3}\xec\x8f\xdc\x0f\x09\x13\x12\
+4\xdc7\x89S\xb8&X\xc7\xba>\x9f\x87</*\
+\xd21\x90e}p\xde\xb2\xef\xc4\xde\xea\xd0B9\x8d\
+\xe3%\x92X\xf2yQ\xa6\x0fd\x93\x0aK\x1e\xf8\xc6\
+\xe7\xc7}\x13\xb0\xce\xad\x87?r\x12D9HZ\x11\
+gj\xbfb>\xf3>>\x8f\xfb\xe2~\x08\x5cc\x85\
+\x9f\xfb\xe0\xbac\xc2\x83W\x12>\x5c\x1f\x9f\x13!\xe9\
+\xff\x7f\x13\x00\xf8\xbb\x5c\xef\xdc\xd4,H\x900\x9f\xd9\
+/\xa2ZF\x0c\xd8ye=\x91x\xe3{h)\xe0\
+\xba\xb9.>7\xce\x13~\x0fR\xf0N!\x16\xd4\x02\
+;\xbcF\xad\xdd\x14\xea\xe0\x98\xe2>\x18/Z\x1e@\
+\xf6\xc0e\xc5>\xc1\xbc\xe1z8\x7f)\x08\x92\xb0\x03\
+\x01\xafx\x0b\xf2]Z\x1f\x9c\xa3@\x9cl\x93\x1f\x9c\
+\xdccr\x8f\x86K\xe1\xef\xce\xa5P\x12%$.?\
+\xd0\xed\xd1\xeda\xc3\x05\x14Y\x15TgW\xd5\x06\xeb\
+z\xd3\x9f/\xfa\xc5T\xf2\xf3\xe5>S+\xcby;\
+\xb8\xb7\x0e`\x7f\x8fY\xba\xa0\xbd\xccjO\xb4\xcfO\
+\xb1{\x8f\xde\x98l\x8b\x06\x1a\xc9\x06n\xef\xbeH\x13\
+\xfe\xfeF\xf7X\xe4F@L\xad\xce\x9a+\xad\x06\x14\
+\xbb\xa0\xe9\x85P\xe5\xd6\xa8\x1b2y\x03\x90s\x02\x00\
+{\xdf\x17\x14`\xfc\xa7\x92\x82\x8d6,\xe4\x80\xdd\xbf\
+\xcc\xaa\x9c\xd0\xe4Uf\xe9}\xd7$3(\xf1cf\
+\xaa\x04\xffM\x5c\x02\x17\xaaBk\x99\xd1o\x9b5\x07\
+\xbd\xd5\x17\xde\xad\xccMC\xca\xc4\xe7\xd3*\xd1?k\
+\xd6\x90\x1c\x0a\xaa\x98I\xe4\xc7\xa5/?R\xc5\xe6\xab\
+r\xa0\xf7P\x22b\x9d\x9a\xc0\xc8\xe4~\xdfhz\xe8\
+\xfe\x13*\xa4r\x8c\xe1\x16\x18\xad<z\xd9(\x1d\xf4\
+\xa3\xdb\xcc\xd2\xeb\x1f\xcd\xd2\xff\xdf\xa3L\x94L\xb5\x98\
+\x1c\xc5\xfe<\xb3Z\xb1\x1f\x166\xab\x15\x8e\xd1\xf5f\
+9#_z>\xe9\xe5\x84\xdc\x08\x92\x22*w\x92\x9f\
+ca\x8f\xc6\xcdr \x99\x0f\x82\xe1A\xc9\xc7-Y\
+\xc6c\xf2\xa9\xc9\xa7'\x9f\xae\x90\xb4\xfe\xb5f\xaa4\
+\x7f\xbc\x09x\x99h\x90\x09\xc9!\xf2\x83.\x1e\x1cl\
+\xdc\xe6\xc6\x9c\xd5\x90ZZ\xde\xf2EM\x86\x12(%\
+\x89\x1f\xcdGO\x08\xff\xb6\xbb\xb2\xbb\xb2qt\xb6.\
+\x90\xdc\xb1\x0d\x02\xd4g\x0d\x8d\x0b\x95x\x12]lh\
+l\xb08\xc2p\x13|Y\x10\xc7\xd8\x1b\x0c\xb4\x8e\x0a\
+B\x95_+\xc8\x136X*\xe1\xf4n~C\xe4\x93\
+r\x14I4\xf8\x86\x0bd\xeaYgs-\x81\xed\xd7\
+E\xa6\xa4\xd6\x01O\x1c\xd0*$H\xba\xb7p\x1c\xaa\
+}\x03G\x00R9X\xfe\x09\xacD\x1a\x85\xac\x15j\
+#\xfd;\xccj\xc5\xda\x11I\x90\xb3\xac,G5B\
+\xc6\xc8\xe0\xae*n\x0a\xe9o{\xe6\x16r)\xad\x87\
+\xe1\x00\xb3f~\xaa\xd7\x16\x19\x18Z\x91\xba\xeb\xcd\x9a\
+\x00\x0av~\x0e0\xe6\x1f\xad\x0f@(\xf7V\xe5\x9e\
+\xc0\x9c\x9e\xe35%\xcb\x85#\xcd>H\xe2\x13\x84U\
+\xed\xcd,\x1b\xf9\x1e\x0a\xa0\x81\xc6\xe3\x98\xc1\xaa\xces\
+\xa4\x07]rE\x0e\xe5d\xbc\x98/\xcc\x1f2\xf78\
+\x1c\x90\x81\x92\xc8D]\x04\xa89\xad\x12d\xb2\x95X\
+\xf4D\x92X\xff\xbbc\xcc\x9aD\x9cze\xbd7\x90\
+\xef\xe7\x80\x0c\xec\xb9\xde{H`Me\x8f\xf9\x0fg\
+\x04\x89\x1a\xd6\x15\x89\x92.@\x199`\xa9\xbc?0\
+\x15\xf2\xef\x15\x5cT\x09\xbe\xa2\xd6\x22\x1c\x7fzg\xd9\
+g\xa8\x90\x91x@\xff\x9b\x00\x8f\xfb#\xd1Hk\xdb\
+W\x84\x88\xa1u\x02\xae\x17\xe4\x18?k\xd6\xc8\xecm\
+W\x10a\xbe\xbfRQ%\x90\xa6\xa7\x9a\xfdU\xad\x01\
+\xde\xd2\x14\x1cr\xdf\x97\xe8\x85\x9f\xd7,=\xce\xd3\xcd\
+\xaal\xa2s|\xfc\xa0\xc8a\x0ek\x16\xc7\xc4[\xcf\
+h\xd1\xb9N\x9f\x7f\xa9\xe4(\x95 \xcc\x0dT\x076\
+\xady\xa8A(\x11\xd9\x1d\xd4}\xa6\xfbL\xf3\xdc\xc4\
+\xc1\x90\xee\xa2\x04\x828\xa6\xa8\x94(1\x0c\xb2\xc0\x11\
+\x1f\xfc=\x09\x19Z4\xe0\xaa@\xe6\x94\xca\xeb\x8f\xca\
+u{\xcf\xf3rf\x0d\xb7\x0d\xadC\xccs\xc8\x15I\
+tA\x9e\x0a\xb7\x05\x15\xbc\xc7U\x09\x82\xcc\xf3\xcd\xdd\
+\x9b\xba75\xfb\x04\x90p>\x9fJ=\x0e \xf3?\
+:\xae\xcc\x1f\xe6\x17\x15V*\xbf\x04\xe2p4<\xe2\
+\xac\xdfe=\xe3o\xe1\xff~\xd4\xac\x91\x07\x84TV\
+*\x06\x9e\x18 \xf0%\x80c\xfe\xb0\x7f\x13\xf8\xd3\xa2\
+\xc5|\xc4Ag\xff\x12Y\xa9\x07\x0c\x04\xf4$HI\
+\xd0\x10\xf8\xe28_R\xe4J\xbd\xd5\x10\xd2F\x12\x99\
+\xcb(\x81N -\xf5)\xbf~\x0a\x02\xb4\x0e!\xe3\
+(\xf2\x5c_\xd7|\x0f\x88\x8a]\x84\xf8b\xfc\x09\xa8\
+H@\xc5\xc0\x83\xebe\x1f\x8d\xbd\xdd\xfc\x9e\xe7J\x80\
+\x17\xa1\xe0\x8c\x07\xdf\xc3\xbe\x05\xb2\x8c\x84\x0c-\x03\x04\
+p\xb4\xa4\xa0\x96Q!\xe3\xe5\xfa\xd9\xefA\xd6F\xce\
+\x04\x02&H\x02\xb5\xcf;\xb7\x07\x10p\x12,\xf8#\
+\x140\xd8\xefX'\x909C\xde\xc8:\x22\x80E\xe6\
+\x1b\xa4\x04\x01\x19\xfb8\xeb>\xca\xdfE\xf6{\xc63\
+\xfe\xe3\xf3\x22\x0b{$\x99\x0b\x9f\xeb\xeaS<\x17\xc6\
+\x89\x82\x01\x89\x1e\x1c@\x9es\xec\xadg\xfd\xf1\xbd\xf8\
+\xe3\xd1\xdf\xfbGP\x1d\xe0\xf9\xf2\xb9\xcc\x13\x9dG\x8e\
+\xcc\xc5\x8f\x8d\xd0q\xee\x97s\x8d\xcfa\x1d\xc3}\x00\
+\x226\x22\x1eb+\x05\xdf\xc3\xba\xe6\xf3c\xc0\xcf\xcf\
+\x8c\x0f\x7f\xc7:!\x90\xe7\xf9\xb3.\xb8N\xf6\x0b\xee\
+\x87\xeb\xe1\xefX_$\x0a\xa2\xccp\x94k\x8f\xf2\x81\
+\x91T\x97\xd7\xb8N\xf0\xa7\xd6(\x886\xceC\xe2\x1c\
++\xeb\xe5\xc2^H\xacy\xc2\x94u\x1b\x90=\xd3Z\
+]\x22\x87\x04\xeb\x9e\xfb\xa5\x80'.-cD3N\
+4dRIt\xd3R\xda\xff\xd3\xacr\xd1\xf9<\x82\
+\xbbG\x88\x92\x09\x0f\xf8\x09\x80\x08\xfc\xa9\xe4\xc2~\xcd\
+\xc6\xa6\x00\xa8\xbf\xcc\xaca\x11\xa7\x97\xd8t\x13\xd3\x02\
+\x99\xbc\xdf\xacB?G\xab\x98\xa5\xf7\xff3\xd9L\xf5\
+\x84\xbf\xa9\x81\xce\xb6\xa44s\x1aVv\xab\xbc\x1e%\
+\x87h=\xf5\xea\xbd\xb7^\xe7\xb0\x95Ys\x90\x001\
+\x85|o\xc8\xa0\x98r YEcc\xb3\x9a\xe1\x85\
+]>\xebm\xa7@\xa6\xbf@\xf2F\xdb\x8e\xb6\x1bm\
+\xd7,\x0cd\xce\xe40\xf4w%\xbb\xb3n\x8c\xce\xea\
+l\x95\xf9[\xc5R|h\x13\xb8\xc1~l\xef\xffq\
+\xd3\xcb\xcbu+\xd1\x91+\xb3\x9b)\xf3}\xb66\xa6\
+\xc73\xa4<Y\xad\x88\x8f\x9eLf\x15\xf5o&K\
+\x01\xdc\xf8\xfe\xc9\x0e\x90\x83}l\xed\xf1\xf6\xeb\xd9\xad\
+\xe8x\x8f\x9d^\x1c\xd3\xfe\xc1\xfe\x81\xde\xa0^W\xa6\
+\x905\x1d\xb4\xa3+\xcc\xd2\xeb\x05f\xf5\x95\x00\x8d\x0a\
+\xe2\xf8\xf3\xe3\xcf\x8d?W7HH\xdb W#S\
+\xec-\x10@PX\xc0\xea\xc5\xa5\xd2\xe9\x09\x06\xfd\x9e\
+\x16\x93\xd1Uf\xb5\x97t\xcevf\xe9\xfbv1\xcb\
+\xad\x1f\x05\xba\x09\xf4\x90\xde\xbe\xf7\xe9>m\x9b\xbe\xb5\
+9\x00p\x98X\xa0\xcc7[\xee\xcf\xa9\x12{\xbbz\
+\xe5~\xae\x03u\xd9\x1ah\xe6\xe3\xba\xabdV\xe86\
+\x9b\x98X\x96\x13S\xab\x06\xdc\x0d\xce\xeaNo\xd9+\
+\xe5(\xb2\xb1-#G\x15\xd2 \xae\x1c\xc8@\xa5\
+\x84\xa0\x80\x85;m\x0e\xe5\xe0\xc1\x81\xc0\xe1eC\xe1\
+\x80\x90\xc3O\x80\xeb2\x83pR\x10\xe0\x88\xec\x12\x96\
+i*\xd9\x0e\x0d\xe7\xa0\x07\xaa\xa6\x8d\xd2\xd9\xab\xa9\x14\
+\xf1|q\xec7\xd5\x86\xf4\x06%L\xc4\xaa\xed\x81\x09\
+\xba\xd5\xb0\xd4r`Q\x99P\xc2\xc6+\xf7\xaa\x04\xb9\
+\x5c\xda\x03f\xf9\x00+\x19y\xe6\x01\xfb\x14\x0e0\xb2\
+\x83\xb0h\x7f\xbb\x7f\xbe/dA\xc5q\xb8M\xfa\xd1\
+TF#\xfb;2\x89?\x90\xcc\xd6C\xe2\x1a@\x8f\
+>B\xd3\xc9\xe4\x12\x08\xbeJ\xcf]2:\x1e0\x13\
+\xb0Q\x11\xe7~;\xd3\xf3hzg\x09T\xce\x13\x87\
+\x04\x01R\xedI-r|\x04\xd0Ri\xc8Z\x18K\
+5\x8e\x02\xf7\x03\xf9\x13\x10Z*|\xc8\x0d\x8a\xbb\xc4\
+\x0f. \xac\xf4\x90\x81\x8c\x00\x19\x80c\x03\xf4pS\
+\xb58P\xa9e>\xe3(\xe2\x18q\xff\xf4h3.\
+\x1c\xdc\x1c\xe4\x91D\x07\xe8\xee\x1f\x94\x10\x01J\x0b\x02\
+\x83\x00\xea\xe4l\xb57}5\xb5\xfa@\xc2\x08D\x12\
+5\x16\x028\x1c`\xc6\xe9\xcbf\xcd|\x92\x0c\x9cs\
+\xb8\x00\xb1g<\x08\x88n\x90\xe3J L`\x15\x03\
+\x02\x91\x7f\xbaz\x03\xb2\x9d \x80\xd4\xcb\x8d\xc3F+\
+X\xff\xef\xfe\xe1\xfe\xe1\x1a\xa88\xe4\x1bd\x93\x12V\
+\x8e\x84\xa0\x05\x87uJB(\x92\x15R\xa1#q'\
+\x089\x88\x1f\xbfOZ\xa9 \xc3c\x9e\xa2\xf2\xf1\xd8\
+T6d\x127\xde;M\xcb\x09\xdc\x00rl\xbc\x85\
+\x80D\x13\x89\x0ad\x03A\x16\x90 [\xb3\xec7N\
+J\x8a\xe3\xc5~\xc2\xbc\x87O\x00\x95\x08\x1c\x22dj\
+\xbf-\x84\x17\x81(\x01$\xba\xd4\x042\x8c\x8f\x12z\
+N\xd2\xa9\xc4\xa5'\xf8\xd6W\x02\x07\x87n1\x05\xb2\
+\x8c?\xeb\x03\xc7\x91\xc0\x22&\x00x\x7f\x94\xfb\xc2/\
+\x01IA\xe2\x22\xaa\x1f\xe0\xb8\x93p \xe0\x08\x81\x97\
+Ct\x03I\x9dC_#\xfb5\x95]8T\xe0h\
+`\x9f\xc7a\x85e{\xf1\xa9\x09\x00?7\xb8>\xee\
+\x9f\xd6\x13\xe4\xfe\x90}\xa6GW-1\xa8\x18\x0dG\
+\xeb{y>\xc8\x86\xe9z\xd3j)\x1c-<\x0f\xde\
+\x07\x97\x83\xce+\x12\x5c\x8e\xbc|`\xaa<\x1a\xc8\x01\
+G\x04\x90x\xc3Q\xe79\xb2\xbeI\x5c\xe0\xdf\xd1\xaa\
+I\xc2\x06\xf5\x86\x18\xe82\xfe\xb4&R@b?\xe6\
+\xfd\x04L\xbc?B\xd6y\x7f+\xcb=\xab\xd9Oc\
+K\x00\x7f\xc7\xbc\x22Pe\xbe\x11G\x9fX \xc4\x8e\
+ E\x06\x8d\xf9\xcc>\xf7\xe8T\x04\x8d\x07\xfe$\xe6\
+H`0> 0\xb8\xde\x18\xb8\xb1\x8eb\x8f5\x89\
+\x12\xe6wl\xe1\x8a\x5c6QW>\x90\xe6Mk-\
+`^\xc6^}\x12\x06\x9cS\x8c#\xe3E\x02$^\
+\xdf\x93\xdebS\x02\xcc\x0aq/\x09\x07\x02\x7f\x9e\x07\
+\x81vL,\xf0\xf9\x91\xc5\x9fq#@\xe6\xf7\xbc\x9f\
+\xf3\x1c\xc8?\xfb \xd7\xcd\xf5\xf2\xbd\x04\xc2\x04\xf4\x5c\
+/\xd7\xc1<\x89\xeah\x91c\x84D\x0b\x81v\xbcn\
+\xae\x8f\xf37\x06\xf4\x8c;\xf3?\xca\x09V\x8e\xa02\
+\x8f\xf0\xcb\xf8\xfb\xe8O\x10X\xf3=\x8cW\x9c'\xac\
+c\xc6\x15\xee\x10\x126\xacc\xc6\x91y\x12[\xa8H\
+\x00\x90 \xe3\xf7\x11\x01\x82\x1f\xc9\xba\x079\x80l\xaf\
+!\x8e'j\xa2\x92D\xfd\xf05\x15\xe4$C\x0cb\
+\x16D\x90\xfb\x17\xa8\x84\xe9yLt'\x9b5\x19<\
+\x1e\x00\x19\x05 x\x82VB*\xd6\xdfk\x96\xf6\xbb\
+\x97\x17\xf9\xb7\xdc\xb3\x96\x1c\x84\xfe/\xc9niH\xbc\
+V6\xab\x81\xab\xd5G-\xe0\xcc\x1d\xfe\xeb7\x01?\
+7\xae\x07\xc1\x0d\xf6\xcb%[\xb6r\x0a\x10\x10\xd1\xeb\
+\x98+\x8d\xafo \xf2\xb0\x95\x7f.\xd9g\x1b\xf6F\
+\xe4\xcf\x94i\xcf-\x09\xe9\xfb\xfb5\xcc\xc4\xf6\x9d6\
+\xb69\x1f6K\xf3\xe7cf\x8dc\x08\xb9\x8d\x02\xe1\
+L\x8e\xf8\xc9\xf4\xf7\x1f1k\xa0Krl!I\xca\
+\xee\xf5*\x8d>4\xbd\x18\x22A\x22S\x9e!\xf1\x9f\
+mHa.Mv\x99\xa0\x1e\xab5do\xca8\x8d\
+f%\xb3\x8a\xfb\xdbF\xdbg\x12\xc3{\x92\xa5\x054\
+\xfa\xca\xe8\xd0\x91\xf5r>fV\xa1\xd1@D\xbc\x22\
+\xf7y\xc9\xd0\xedY\xa0\xa4\xdd<f\xb5\xd7t\x98!\
+\x08\xb6\xc6\x0b\x08\xb3g\x80\xc5\x1d0\xbe\xb7Yz\xdf\
+\x7fE\x8aH\x85\xf4.\xb3\x86l\x0c\x87\x81\x03\x18\xb6\
+a*\x9c8,@\x1b\x91\xcd\x12\x94\xd5{\xa0\xb4p\
+P\x0b\xf0J\xa4zI'/2\xcb\xa4\x8cfu!\
+\xb1\xf1L\xe4\x9aS]\xf8\x0f\xe5\xad\xb7d\xa4\xff\xd0\
+\xa8\x08p]\xb6\x1dL\xea\xc0\x5c\xb4Y\xb8\x16\x0e~\
+\xaf\xf6\xc4[]'WvJ\x8d\xb1VD.TO\
+\xaa\xe4\xfe\xe2<\xef\xce4\xab*\x12~\x00\x00e%\
+a\x05\xd2\xe2\x17\x9a\x8f\xb1\xb7\x8d\x8d\x98\x8d\x09\x07\x02\
+R\xa4\xcb\x04\x19dc>;[%\xbfb\x83\xe4 \
+\x9c4k\x0e`\xa0T@0\x09\xc4\xe8\xbd\x85\xd4\x89\
+\x8d\x17\x0e\x0f\x1c*z\xff\xd4\xeb\xeb\x1b+\x8e\xe7\x92\
+\x0a\xfcTy\xea\x8f3\xab\x9c\x0a\xc3\x98d\x07\x81\xfe\
+\xdd\xae\xc4\x04\x07'\x0e0$Xjm\x1an*\x15\
+\xa9\xfe[f\xcd\xf5@\xbeyv\x09\xd4\xa9\xf89\x0b\
+4\xea\x08\xdf2\xcb\xfbGN\xa8\x8c>d\xd68\xda\
+\xcf\x05\xf6]\x12~\x0aP\x86\x8dD\xd6\xa5@\x1f2\
+<z\xf9\xd2,/\xbd\xef\x7fT\x82\xea\xd5\x0al\xa8\
+x\xffU\x15{k\xb9\xba\xb19\x00q\xb8\x80\xfc\x02\
+\x95\x8d\xac\xff8\x1e\xeae\xef6RE\x0fG\x0f\xf9\
+>8$\x80tr\xc0\x12\xf0A\x9a\x06\x94\x95uJ\
+E~^U\xf87\x11\xd7\x0a2\x93\xb4H\xa8\xa2g\
+\x0c,\xb9\x07\x0d\xc8\xf2\x1a\x82\x8e\xe2H/%\xc7\xb5\
+\x0f\x19u\x1cVz-?\xa7J\xf4\x8e\x1a\xd7\x8b\xcc\
+\x9a\xf9t\x8f\xc6\x07\xfdx\xc6\x05\x07\xa1\xd7:\xc0\xf1\
+\xb9[\xf7I\x22\x9c\x9ecz:I \xa2\x8e\x03\x99\
+\x11\xac\xfaT`\xe1j\xb8B\x10\xe2W*1C\x82\
+\x82\x04\x07\xeb\xf0\x019Rp\x82P\xb1S\x02\xad\xfb\
+h\xd9\x9f\xbd\x97\x1bGP\xe4O\xfd\x86\xfdF\xfdF\
+\x99\x0c3\x93|\x8e\x0e4K\xaf\xef1\xab\xdc\x1e\x8e\
+,\xc1\x91\x10\xe7B\xb7\xafY\xc3\xc1\x00\x19\xa1H\xc3\
+\x1c9\xa5\xf3\xc7\x13\xd9\xbfQ\x00\x0c\xab:\x0e\x10\x01\
+;\x8esPUh\xc6-'\x8a\x09\xf4\xbd\x92\xc2\xbc\
+\xa3U\xe0|q\x08\xa9\xb5\x87y\x9dfqQ\x93\x80\
+\x1c3\xca,E(l|\xc5q\x04\x11\xf7RU\xce\
+c\x056Vf\xd9\x7fp\xcc\xb8O\xedg\x0e\xc9\xe7\
+\x9c\x9cW\x01\xce?\xa6\xf6\xf2\xe2\x17y\xa2\x085\x18\
+\xe6\x09\x01\x1c\x8e6\x01)\xad:\x0f)\xd1\xb3\x99\x02\
+R\xd8\xdfQ?\x08rm\xd3*\xa3\xec\xf7\xac\x07%\
+<\xba\xb5\xcd\x9as\x8a\xfd\x86\xe7K\xe0E\xe0Ok\
+\x1cr\x85$>)8p\xceA\xee\xc8\xbe/u\x19\
+OD@\x86z\x9f\x12\xcd$\xc6a\xf5\xc7\xf1\xa6\x05\
+\xf4Dcs\xaar\x90\xde\xaa\xc1\xf3\xe7\x5c\xfa\xae\xd4\
+\x12^\xa5D\x1d\xc8\x02\xa9Jt\x1f\x12i\xac\xce\xb3\
+\x5c\xc0\xba\xb5\xf1#\xd9\x97@\xa0\xca\x7f\xf2D)\xfb\
+\x0a\x81\x0e\xe3J\xa5\x93yO\xc2H\x95\xef\xee\xedf\
+\xcd\xe7\xc2\xc6\x8f\xff\xc7\xe7\x93x!p\xe0y\x92\x90\
+'pb\xbfg\xde\xb0\x0fF\xb6r\xe6\x01\x89\x1f\xfe\
+\xae\xee\x83e\xdf\xe4\xb9D\xd5 \x12\xb7$\x88\xd8\xaf\
+\xe0\xc6\xa1\xc5\x0c\xae\x04\xc8\x17A\xb0q\xee\xb0n\xf8\
+\xfe\x88\xf4\x88\xdc\x14\xb1R\xcfz\x8c\xbd\xf9s\xe3\x02\
+`\x1f\x22\xb1J\x0bL\xe4\x18 \x11\x13\xbf'r\x03\
+\xc4\x8a;\xd7\xcduF\xc8~\xe5\xd2)\x89\xe4\xa7\xd5\
+\xdb\x1d\xc9\x14\x1f\xd4:\x9f\xa9}\x9e\xfd\xfe_\x8e(\
+\x9a\x8a(\xe0\xf7\x5c\x0f\xfb\x1b\xf30\xca0\xb2\x8e9\
+\xe7\xe6\xc6u\x10e\x0d\xe7\x04\xa4\x01\xf7\x15Ux\xe6\
+sh{\xf99&\x00\xf0\x9f\xf9\x99W\x12\x0e\xcc?\
+\x12i\xfc=\xfeU\x90W\xf4\xe7\xc2>\xc6\xdf\xf1\xfc\
+x>\xfc\x1d\xf3\x89\xfb\xe1\xbc\xe1\x1f\x7f\xcfsa\x9d\
+\xb0\xffFN\x04\x9d\x07~\xae\xc1]\xc3\xb8\xb2\x8e\xb8\
+>\x12^\x9c/\xb4z\x82h\xc4_\xe3}\xf4\xfc\x83\
+\x98RB\x7f\xb8\xbd \xb0h)\xec\x0f0K\xaf\x7f\
+5k\xde\xaf\x82\xe5\xe8\x03f\xf5\xbcG\xe5g\xc2+\
+\x85\xd2\x83\xf7\x8c'\x15\x1f\x16\xaa\x02\xc9\xfeX\xb3\xda\
+\xfb\x05\xb4m\xf8\x8cYe\xdbE]`\xf4\xbff\xe9\
+\xe7W$[\xb3q8\xad~\xf0\x03mLs\xb4\xd1\
+,)\x07iI\xf5\xc2](\x12\xc2m\xd2\xf7\xdef\
+\x96>\xef\x0ff\xf5\x86Fk\x98\xa5\xcf\x7fW\xb2\x1d\
+\x9b\x0c\xeb\x22Y\xf8\xc1\x1d\xb3L\xaa\x95\x02\x8fn\xa5\
+d+\xd6\xcar\xffF3\xb1\xa6\x7fT\x15\xd2O\xa9\
+\xd7\xe7\xe1\xda\xbb\xea\x95\x10c\x8d?\xb8\xfe=\x89\x8e\
+\x9c)\xb7\x16\x80\xf9\xcc\xa4/\xfetMT8\xb4\x93\
+\x0a5\x1c\x09\x8b%3r\xa4\xc9dV\xd9_\xd2,\
+\xbd\x1e\x93,\x8d\xdb\xf8:f\xfa\xff\xe9\xb9\x8c~\x92\
+\xcct\xd2\xffj\x96\x91\x0a\xdb\x8e\x8c\xf3\xe0\x0f\xc9\xd2\
+\x012\xda[2\x87\xdf3\xab\x13\xaa[\xd8,}\xdf\
+\x8e\xc3\x0e\xc3\x0e\xf9\xb9\x96\x80\x8c@Y\xcfe\xd8v\
+\xd8\xc6\xc6;\xcd\x89\xd2#'\xd9>\x97\x81\xa1\xd2J\
+`\xa0\x83\xb6{\xd2\xacV\xa8|\x02\x87L\xabC\x04\
+\xb5\xf0!-\xf3\x83D,\xcf\x1eH\xa9w\xd6D\xd7\
+Lvm\xf4.\xb3\xb4\xbf\x1c7y\xec\xe4\xb1\x15\x91\
+\xe2rR\xb4\x8eP\xf9Z#\x83\xed\xeb\x86\x186\xe8\
+\x1c8\xfe^\x95\x86\xf5\x9a\x8d\x9c\x83\x1b\x99\xcc\xcd\x92\
+m\xdeT\xc4\xd9\x80\x8ca\xe1\xe3J \x1d\xdf\x04\x9e\
+\x83t\x07\xc9x\x13\x00\x93\x90\xc0\xb1\xf8e\x0a\xe9\x93\
+\xa3\xdd\xfd]\x15\xed\x17\x995-\x13lplL\xf1\
+\x95\x0d\x8d\x83A\x07\xa0\xf7\xfe\xfdO\xb6\xaa\x03j\xeb\
+\xf0\x15M\xc5\x1b\xc8.r+\xc8c!cH\xa6\x9e\
+\x0d\x15\x08\x13\x8e\x18=\xee@\xcaEv\xe8\xac\xcd\xf4\
+\xd4\xd2\xeb\x8c\xe3\xac\xcf\xcd$\x9c_\xaa\x8eg\xf7\xb2\
+\xe2\x18\x0f{\x89\x84\xf4f\xc9\x94\xe1\xe8\xf1|VR\
+b\x12(!\xec\xd8\xaa\xd8\xba\x0a\x87T\x19\x9c\x8c\x88\
+\xe7\xafqq\xe86dnTT\xa8\x00\x12\xb8+\x90\
+\xea~gV\xd9\xcf=\xa0#\x80\x13;7\x15+*\
+&\x90\xacq\xbf\xeeh\x00!\xe7 \x97\xce\xfdp\x91\
+Y\xde\x973\xe7\x8a?_\x02\x16\x0e\xa6\xbb\x95\xb0]\
+\xd2\x13)\xc5\x01D\xbe\x93\xbfS\x8b\x84\xb3\xc8\xaeS\
+\xd6q\x1a\xed\xc2\x9e\xcb\x01\x85\xe3\xc5\xc1\xc5\xc1L%\
+\x17Y/\x1cn*\xa6\xaco\xe9kw\xfb\x9bU\x84\
+AVw9\xa3\xb9>\xa0\xf8\x8c3\xfa\xf1\x11\xd1\x02\
+\xd9\xe0\xb8\xde\x8f>\xfbE\xc3\xaf\x07k)\xbb\xc4\xac\
+\xe9A\x05\x0a\x0a\x02\x07\x0e\x01\x12\x088\xb48\x9eR\
+\x8fH{A\x81\xfa\x01mf\xbd\x12x\xd0\xca\x01\xa4\
+\x9e\xfdI\x07\xb8\xf7\xee\xd1\xc3}\x89\x90\x0f\x11\x22\x0a\
+i\xa2\xe6\x87#7p\xe8\x19\xd7[\x95Hf}H\
+\xdd\x82\x96#\xbf>\xa9`\xf4{\x98eu\x9b\xb3\xba\
+\xb3\x9a\x96\x0dz\x9e\x09\x88\xb66kTP\xf8|\xe9\
+\xa0\x0fo3k\xf61!\xf82i\xef\xf2\x95\x03g\
+\xec\xb4lu?\x84\x95\x98\x16)\xfe\x7fX\x9f\xeeX\
+\x82\x94\xa0\x85\x83\x84$-*\x22\x17s\xf6r\xde'\
+\xe4V\x0as\x8b\x0a\x00\x95\xd8Xy\x8a\xac\xcaB\xec\
+t@\x8d\xe9\xe5\x05\xa1E\xe5\x1a\x04\x8f \xe6$v\
+\xfd\xfd$\x00\x98\x17$\xae\xa9hs.\xe2\xe0\xf1o\
+\xb6\x1c\xe5\xeb\xcb\xf7yK\x03\x01+*\x06o\xd4>\
+J\xe1E\x09\x0e\xc6\x85y\x91\x1b\x1e/\xc8\x01i!\
+\x05U+\xa1sg\xe0\xe0\xd2b\xb1\xb0\xd6\x13\x0e/\
+\x01\x17\xd0qUn=\xc0\xdd\xd0\xac\x99\xb78\xfc \
+ \xa8\x04+\xf1\x84\x1a\xcc\xd8\xbej\x85\x02\x19\x03\x0b\
+=\xe7{\xe4l\xc0\xd1f>\xa3n\x01\xc9*\xad0\
+\xac\x8f\x8b\x0b\xe2\xc5\x0b\x0a\xec\x9b1Pc\x9fg\x1d\
+\xfeM\x81\x05\xf3\x8e\x84\xc9y\x92\xeb\xbbA\xf3\xe0{\
+\x05\xe9\xe5$\x8e\xef6\xcf\xb2\xa9\xe0Q\x09\x07\xa1\x12\
+\xc9\xff8\x97\xd9\x87\x98\x07\xec\x93\xfa\x1e/\xe1\x8e\xee\
+\xca\x00\x00 \x00IDAT\x08\x91(\xc7O\xa0\xf7\
+\x9d\xf1\x823\x87}\x91\xf9\x1cY\xe7c\xe5\x97\xe7\xcc\
+9\xc1u\xb1\xbf\xb3^bB\x8cqf\xff\xe7s\xb4\
+o:\xb7\x16\xfb3\xaf\x04\x9a\x8c\xcb\x82A\xee\x96\xeb\
+\x8crx\xf8\x87|O<\x87\xf0o\x9e\x0a$\x9a\xa1\
+%\x00\xae1\x0fH\x99\xff\xec\x07\xa1\xd7\xda\xd7\xed\xdc\
+X\xda#\xd2 &\x00b\xa2\x81qg<Y/\x9a\
+w\x9eH\xe6\xf3A\x840\xff#\xe9m%\x05\xe49\
+\x97s\xb8\x22\x09\xca\xfdShB]\x89\xfb\x8e\xfe!\
+\x89\x17\x12\x00\xac\x1b\xae'\xaa\x0f\xb0O\xf3}|.\
+\xad\x8bpv\xc4\xde\xfa\xc8\x01 \xf9\xbdnY\xb5T\
+1/\xb8\xdf\xd0\xd21\xb0\x7f\x0a\x99Ma\x95\x16\xb3\
+n~c\x8bk\x9e\x0fH^\xfe1\x8f\xb8?\xc67\
+\xb6\x14\x92\x10\x8bj\x07\xac\x8b\xa06\xe1\xe7>~+\
+\x09$\xb5\x94\xd9\xa9k\xe7\xaes\x87(\x9e\xa6\xa0\xd7\
+\xedg\xd6\xcc\x13\xfc?\xb8v\x90\x0de]P0!\
+\xced\x7fe\xdf\x16\xa9w\xbf\xb4Yz=\xc7,\xbd\
+~\xdf\xac\x92\x83;'\x1e\x9cA\x9b\x99\xd5\x16\xe0\x09\
+\x9fp\x824\xe6\x9e\xff\x03r\xa51\x07&T\xac\xfb\
+\x0b\xcd\x1ah\xb0Xh\xfb\x1d\xcc\x9a\x03T\x8e\xb5\xcb\
+\xfc)\x11\x90\xa1\xff\xff\xac\x17\x92\xdd\xbe\x95\xc5\xca\x7f\
+R\x03\x19\x03\x01`*\x04{)\x11\xf1\xc7\x0a\xf9\xf2\
+\x03\xfae\xc9Vn\xc8\xf9F\x05:\x0b'@\xceD\
+\xaeS+\xf0T\xf42\x82\x80@o\x91P\xd1\xbaV\
+\xad\x0d\x976\x8e.\x15\xd4\xcbsMb\xac\xff\xb4Y\
+z\xdd/Yrp\xfb;\x92\xdd)\xc8\xe4\x8e\xe9\xe7\
+\xb7\x985\x951\x135\xfb\x8e6\xc0\x7feY\xaa\xdd\
+L\xb6)'\x08fe\xce\x81\x0dG\xd6k\xf7l\xb2\
+4\xc1G\xbfL\x96\xc6}\xf47\xb3\xf4\xba`\xb2\x85\
+*\xb9\xdbh\x1e\xb3\xfa G\x87\x98%\x7f\xe7\xca\xf1\
+\xdf\x8e\xa7\x093~\xe1\xf8\xaf\xc6\xad\xe2<C\x19\xf7\
+\xc8\xe6\xfe\xbe2q\xbcB\xa1\xcc7:\xeaiy\xcd\
+\xdf\xcd_\x1d\x03 \xf9\xc3>f5a`\xf5\x97\x5c\
+\x81\xe1\x00\xc4\x91 c\xcd\xc2cAi\xe1\xbb\x8c\x1a\
+\x1b\x0a\x8e\x0f,\x9a1\xe3\x87\x9c\x17\x5c\x14r\xb8\xbb\
+c\xd4\xbbm\x00\xce\xc3\xeb\x86\x07\xa4\xd4!\xeaj%\
+\x99\xd6\xab\xc9\x81\xcbF\xc5F\xc8\x86f\xcb\xfc\xb6\xe6\
+\xc0\x97z\x82\xf7\xac+\x90\xcd\x1c\x16\xc9a\xeb\xce6\
+k\x02aU&}\xc1\x03\x8d\x83\xf4\x0e\x8e\x80#\xcd\
+\x9a\xf1\xa4\x02\xc7\x82g\xe3\xe6\xe0\x8f\x07M$\xb1a\
+\xc3\xc7\xd1B^K\x15\xd7a#\xb3\x86=\x9e\x9e\xc7\
+\xbbr\xb7k\xdd\x80\xe2\xf7\xf1=dhi\xb5\x11\xdb\
+\xba\x93\x87\xc1Z\xce:\xb7O\x99O\x81\xc05\x8d\xe3\
+\x86cB%^\x953\x1c\xeb\xeep\xb3\xec\xb0\x95\x1e\
+~z\xc5U\xe1\xcf\x0d\x1b\xb77\xec\xcf\xcc'H\xbd\
+\xc4R\xde\x7f\xc8\xac\x81:\xb3\xf12_\x99\xbf\xd1\x81\
+\x84\xa4T,\xf6\x04H\xa3W\x985\x89'S!\xf9\
+jC\x92v\xa6Y\xdd7\x1d2\xba\xb1\x02\xdc\xc3%\
+\x1b\x07\xa4\xf4=\xe5\xf3=\xb0\xa7B\xc5A\x06\x94\x9d\
+\x9e~2\xd1$\xe2\xa8\x5c\xbe^$\x9fT\xa49\x18\
+q\xe8\x08\xb4\x090_#\x84\x02\x15\xde\x09'm+\
+\xf7\x7f\x9f*\x18\x1c\xd4\xcc\x87\x93\xc5>N\xa5\x0e\xc7\
+\x1drH\x02N=W\x97\xf7c\x1e\xd1\x0b\x0a\xa2\x05\
+\x87o~9\x0eT\x10Vu\xc8~\x99'<7\x12\
+\xd2\x04\xda\xfc=\x0e\x0b\x09/%P\xfc{y\x1f\x09\
+,\x10[@>q\xd8 \xd7\xe2{p\x14\x99\xb7\x82\
+\xdc{b\x19\x88\xfe\x01\xa5w\xde\xc7\xe5-jI\x8a\
+\xb2R\xac/\x05\x9e^\xe1\xc4aS\xa5\xcf+i\xe2\
+\xcap5\x8d\xcd\xd5b\x01\xc9\x0f\x01$\xbd}@\xf7\
+Q\x8bP\xef\xf2\xf0~\xb3\xaa\x8e\xe1rf\x07\x9a5\
+\xb2z\xb4\x96\x08\xe9\xe7\xf3z\x8e\x10A\xdf\x14\x12\x00\
+.\x01\x02\x00%\x00\x5c\x0e\x92\xd6\x09\x90k$\xe4@\
+\x16@\x86\xf8\x9aBb4\xbcEjC$(%c\
+\xea\x88#\x90c\xac\x0b\x02'\x12y<_\xae\x87\x84\
+\x0f\x0e\xd3\x12\xa5\x222\x5c\xa5\xf7\xf1y\xac;*\x9b\
+8\xa4\x90\x8ar\x1f\xa8\x0f\x80\xf0\xa3\xd2-U\x88\xee\
+\xbdv\xb27\x8e,\xec\xcf\xef,-V\xf4\xf6:\xa7\
+Jt\xf4Q\xcf\xb8R\x08=\x02d\xd6;\xe7\x95\xe4\
+`\xbd\x85E\x01>-\x88>\xdf\x08P8O\x99\xf7\
+\xec\x03+\x88e\x1e\x92@\xf6\x09\x1c\xde\xdf\x985\xac\
+\xd7$Th\xe9a\x1f\x13G\x8a\xfbI$P9\xff\
+\x99\xef8\xdc$\xbe\xf1\x13@\xe2\xc0\xb1\xc3\xfd\x9c+\
+\xae\x8b\x8d\xd5\x12\xf3\xa8\xb8\x14\xe8\x11'q\xca\xf70\
+\xeew\x9a5\xe7+-|\xecS\x04\x02\xac\xc7\x0b\xf5\
+9\xec\xbb\xec7\x8c\xd3\x9d\xba\x1f\xc6\x8f\xfb\xa0\xf2\xcf\
+<c\xde\xf1\x8f\xe7z\xbf\xee\xff\x0fJ\x84i=O\
+SW!P\xe6\xb9\x91p\xe0\x15\xff\x8d\xef#0#\
+\xb0\xa6\x22\xc9\xbe\xcf+\xfb6\xf7M\x80\xc6\xf3\xc4\x8f\
+`\x9fg\x5c\x18\xd7 ;\xea\x1c<V\x10\xd9\xec\x05\
+\x02\xb0\xa0\xfb\xee\xe3@`\xc7|\x86\xa3\x00?\x19\xd2\
+4\x15\xaa\xb8>\xe7\x0ea\x5c\x02'\x8c\xffL\xa1\x82\
+\x9f\x09\xec\xf0\xef\x02\x12\xc9\xfd\xa5\x18\xd8\xb3\xfe\x9f\x0c\
+\xf2y\x8f\x05\x16\xfd\xd9\x9e\x00(\x092\x12l\x8c\x07\
+\x05\x15\xeeO\x5c\x22\xbe\xfe\xf9\x9c(\x13\xc8\xf5\xf0\xff\
+\xf1\x83cB\x00\x8e\x02\x12\x93\xf8e|\x1e\xf3!&\
+\x18\xf8{\xce;\xee\x97\xfb\x8c-\x06\x5c\x0f\xa4\xa6\xb0\
+\xd2\xf3<\xf9;\x12\x85\xcc\xb3\xc0E@\xc2\xc0\xd7#\
+\x7f\x17H\x93\xc7\xe0\xe2yV-e\x90\xaeR\xb0\x03\
+\x09,Y?\xe7j\x89H\x15\xee;\xf6\xfa\xcfm\xfe\
+0?\x22g\x01\xf3E\xe7\xf3\xb0\x9dY%\xd9v\xe4\
+/\x08\x1d8Gx\x1e\x8c#\x89r\xe6\x15\x05\x05\x12\
+f\xb4\x84\xeb}\xce\x815\x8fY\xa3rD\xab\x9dZ\
+_Al\x0e\xffc\xd6\xac\x13\xfch\x9d\xef\xc4\x19N\
+^\xad8f\x22\xe7;\xbf\xdfTP~\x91\x15\x9eK\
+\x05g\xbfL\x9e\x95\xac\xc9\xe4\xab28\xeceV\x03\
+\x8d\xee>\xb3\xda\xd3O\x06$gF~\x96^\xfbd\
+C\x03\xad~.\x0bW\x14\x87dc\x91\xeb][3\
+\xff\x93\xe7$;\xb7:\xee\x8e$@\xe7\x1b\xf2&\x0b\
+\xd4g\xd7J\xb5\x1f\x94\x0c\x84\xb9\xa1\x96\xd9>$\xd9\
+\x97\x95\x89=]\x09\x8c\x93k\xe5\x16r\x98\x5c1\xfc\
+\xbcX\x1e\x7fQ\xff\x1eR\xa7\xc9\xd7\x9a\xa5\xeb\xfd\xba\
+Y\xa3\x83\xbe\x9c\x99\x1c\x86C*\xe9P\xf7\xb3dg\
+f\xa8\xfd\x9e\xb9\x82\x08y\x99\xe9\xc1__\xc9\x03\xc7\
+/N\x96\xc6u\xfcZ\xb3\xf4\xfa\xe3d?I\xff\xff\
+\x9df\xe9\xf5\xebf\xe9\xef\xfe/Yr\xe0\xc7\xdfl\
+\x96^\xf7\xb3\xee\xff\xf4\xffO1k \xbe8>L\
+tAx\xe9U$\xe1\xe2\x09\x9a\xbf\x9b\xd5\x0a'\xbd\
+-\x96\x0e\xb0\x84\x80\x07\xd4\xb1g'\xf6\xf6p\x80\xf2\
+\xca\x81\xc3Bb\xa1\x06H\x96\xf7\x22s0\xb1\xf1\xc1\
+ZO\x0f<\x8e8\x19}K\x07\x5c\xde\x04\xd83\xb2\
+\x02wq\x08\xdb^2\x90'l\xac,H\xd8\x83\xd9\
+\xb0\x80\xb0\xe2\x18n\x91\xad^\x1f\x5c\x10\x16\xe8\xfd\xac\
+\x22G\x80\xd4PQ\xa37\xdb\xc4%M^\x92\xf1\xf7\
+\x96\x9b\xf7\xc8a?\xa9\xf4(\xe7\xf9\xb1gFhd\
+\x198o\xc1!\xc3\xbd}\xd9x|\x839VPv\
+6b*\xb5@\xbb\xb8O\x1c\x86\xed\xb3\xd5@\x8b\x0d\
+\x8b\xff\x8f#anN\xcb\xfe\xcc:b|\x09\xccx\
+n\xa8\x83\x98\xac\xc8[*G\x87\xab\x0c\xf09\xd60\
+\xf2\xce\xa67\x13\x08\xe4n\xd9\x8c\x1c+Y%=t\
+G\x8f\x83\x9d\x8a\xdb\x8d\x9e\x10(\x95A\x8d\x93#\x1a\
+@0}\xa9\x90\x81B\xde\xe2\x10j\x91\x97\xd1\x22\x93\
+\xd5G\xe6k2\xbc@4M\x9d\xc480v4K\
+\xeb\xeb\xc7f\x0dY\xd1\x8aEE\x80V\x9f~\x86Y\
+\x9d\xb7@\xb0\x9dC\x05\xc8,=\xe4J\x08x%S\
+dV\xc3Af\xe9\xe7#\xb39\x82al#\xed\x9b\
+\xccS\x12\xb4\xac\x13\x1cp\xe6+\xac\xf8\x1cd$\xda\
+\x08,\xef\xd4<!\xd0x~*\x1b\xaf'\x86t`\
+9d\x99\x96\x1e%\x0c\x86_+\xd0\x86\xa5\x1d\xa8\xbc\
+\x1c\x0c'U\xa4g\x9e@\x83\xeb\xa6r\xca\xbaWB\
+\xc6u\x82y\x9e\x1c\x94\x0a< \xc5sG\xeb\xbe\xd2\
+\xba\xd1\xed.RD*}\xac\x7f*h\xec\x03/R\
+o\xf3lA\xf0\x02\xc4\xdaI\xc2\xceU\xa0\x07\xa2\x80\
+\x04\x01\xaf\x0f;)Z\x0e<\xbc\xa2\xaf\xc4\x14\xc8\x12\
+\x9f\xef\x04\x0e<\x17\xfe\x91\x88\x02!CB\x86\xeb\xd7\
+\xbe\xebj\x12\x1b*\xf1E\x82C\x0eG\xb7\x8fz\xd0\
+u\xce\x0e+\x98e\x99\xced\x8d*\x8c\xce}\x12w\
+NZ\xcb>\xb2\x89d4I\xbc(\xe1\xef\xc8\x85\x8d\
+\xcdr\x0fu\xf6\x1b|\xffR\x02\xccI\xd5v\x90\x5c\
+\xe7\x15J\xf0\xf3\x8f\x16\x8b\x07K\x82\xc1+\xfeTF\
+\xd9\x97\xf1;\x98W\x90\xff\x09\xe1\xd5\xad'\xd9K\xc6\
+\x95\xc4'\xcf\x9b\x00\x8a\x9f9\x7fp\x0c\xab>{I\
+|\xdc%\xb5\x0c\xe6;\x9f'\x87\x7f\xb8\xd9\x11R%\
+\x01\xb5\x9a\x12!<O\x1cP\xe6\xd3\xadJ$=\x1f\
+*N8\xde|>\x01^\xd0\x8bw\x87\x9d}]\x9c\
+\x11\x9e\x00b\x1er\x0e\xf3~\x1c[\xe6\x07\x01,\xfb\
+\xf7KT\x99'\xd0\xdeP\x09x\xae?\xcab\xb1\xdf\
+\xc3\xf5\xa4\x16\xbd\xb1o(1BK\x10PX\xb1T\
+\xfb\xb8\x8f{\x82\xab$^\xb5n\xdc\xe1\x06\x91\xc8>\
+@\xa2P\xaa?\xbe_\x80\xc0\xc0\xc1\xc6\x0f\xbc\xc7\xac\
+I$\xf0{*kZG\x9e\x90\x15\xf7\x8b#\x91H\
+\xf4\xb1\xbfQh\x22\x91\xb3\x8edE!\xc3\xe5\xdc\xa4\
+\xc5\x03\xff\x87\x7f\x044\x0a\xec=1zS\xb9>d\
+\xb8\xa6\xb5t\xd5\x96\xadr>3\x7f\xd9\xb7\xf0\xebb\
+\xe56\xf6\x5cG?,\xbeF}w\xfc:\xd6?\xf3\
+\x19\xff\x8d\xeb\xc0\x1f\x81\xd4\x16dh\xec\x11\xe7{\xb8\
+\x1f\xee\x8f}\x15\xa4\x15\x09i\xf6yUP}\xff\xc3\
+\x9fg\xfe\xc5\xc0.p\xef\xf8:\xe0\xf7\xf8\x991\x01\
+\xc0u\xc6\x00\x94\x9fck\xc0\xe3J\x8cQ\xf9\x8dr\
+q\x14\xb8\x96\xea\x96\xec\x96l\xdew\x87\xfc\xcc{t\
+\xaeT9\xd2\xf2\xdc\x90\x07\x0d\x15v\x0f\x14\x9f\xf2J\
+t\xf9\xf9\xe1\xc0\x15\xc0y\x1a+\xfb\xb1\xc2\xcd\xfd\x06\
+\xf2Q\x9f?\xac/>\x9f@\x9b\xf7\x83(\xa40\x10\
+9\x0e\x86\xc0\x01\xc0\xba\x8a\xbd\xf5\xdc?~\x14r\x96\
+A\x8e\xd2\xff\xf1\xf7|.?\xb3\xafp\x7fQ\xc6\x97\
+\xdf3\xbfY\x9f\x81\xf3a\x9aJ\x03\xeb\xe7?.\xab\
+X\xd6'\xe7\x0b\xfe\x86H\xf3\x87W\x96\xc0\xbb;\xcf\
+\xac\xb9\xce(\xbb\x188\x1c\xbc\xe5\x07?\x8e\xb8\x83\xe7\
+\x89\xdfK\xc1\x01n\xac]K\xcb.\x05.\x90\xe4>\
+\xaf\x19\x17Z\x11\xc5\x81\xe5-\xc0\x9f+d\xfe\xc4!\
+\x139o\xbf\x97 \x8dW\xaab}T&\xa3\xea\xac\
+\xa2\xde_b\x96~^\xc4\xac\x91\x17\xdb;+p\x17\
+\xd6\xe5w6\xd0-A!\xbc\xd2\xf9\xb7L\xf3U&\
+\xe8\xccf#y0w\xbb\xb8\xdeu\xae\xf8\xa7\x00\xb9\
+?-\xd9\xa9\x15J\xcb\x80Ar\x84\x0e|\xae\x18[\
+\x05\xf2\xa9dO\xd7\xc0\x10y\xa5\x0cD\xdeV\x13\xeb\
+\x9e\x86\xcd\x93\xde^9\xf8\xb0$fh\xfaM\x95\xc4\
+\x0eR\xa1\xec\x08\xbc\xb4A0X\x0b\xc1J\x82$\xfe\
+oU\x1d\x00\x82\xe9\x8e\xb6H\xe2\x80\xac\x8fnJv\
+\x83~o\x0e\xd7\xc3f\xe9\xf7G$K\x07\xe8\xe8\xf4\
+d?M\xe7\xdf\x1f\x93\xa5\x83ttR\xb2\x13\xd5\x12\
+\xb0T\x95y\x1a\xdfs|\xaf\xf1\xf4\xbc\xc6g\x8c/\
+>\x9e\x0e\x82\xd1&\xa3MG\x9b6z\xf0\xf4\x1a\xd2\
+\xcbK\xc2\xe6u\x1a\xcf\xafd\x1b\xebN4k\x12'\
+@\xcd\xb4\x10\xfc\xa0dc\xa22E\xc5\xa0:FS\
+YUYx,$2\xe3\x91\xfd\x93\x03#\x92\x11\xb1\
+Q@\x16\xa7\xcc\x16\x15\xe2\xfe\x15f\xe9\xf5\xa6\x22;\
+\xd5o\xd2\xbf\xbe\xb7\x04\xd2K\xcc\x1a\xc8\xaa\xd4\x19<\
+Q\xf5\x85\xc2y\x80\x8a\x05\xd0\x18\x87\xdc\xd1\xabF\x05\
+C\x08\xfe\xdc\x03~d\x93\xd9\x85\x04\x10\xbdm*\x0f\
+\x96\x19\xdc\xb6!\xbf\xdbOl\xda;\x94\x96\x0b'\x97\
+A\xaf\xf7\xe2\x02]\xf6\x1ew*\xe8\x04n@^\x0f\
+\x96\xcc\x18\x15*\x1cbz&\xd9\xc8a\x93\xc6\xd1`\
+\x83\xa6\xc7\x88\x0a\x19\xe4i$Rh\xbd\xb1c\xde2\
+\xf0\x1f.l\xe4T\xf8<0\xb6m\xf3\xc9\x86\x0b\x81\
+\x8d\x0b\x08-H\x8b\xc7\xb2\x80V%\xc1\x5c-\xbb\xc8\
+U\x8e\xcb\x10\x12\x9bk\xdf\xd8\xb19@\xd9/P\x89\
+ \x10#3\x1a!\xb6T`\xe7\x11\x09\xca\x0c\xb3\xaa\
+>\xe0\x10\xa9\xff5\xab\x81Hw\xaf\x12\x95\xac\x0b*\
+\xab\x04\xea\xfa>\xf4\x94I\x00\x8c\x9d\x92\xcd\xb8\x11\xe6\
+\x0cs*T\xd6U;\x94(%a\xe7$\x8e\x1f+\
+\xec\xda\xb4\xd6\x0c\xcb\x0c\xcb\x0e\xcb6\x07\x11\xf3]\x95\
+~\xae\xdb9\x15\xc4\x0d\x91\xae\x22CQ\x1d\xc2\xcdz\
+c\xa6R\x91\x05j\xcaAD\x8b\x97\xe4br\x22\xf4\
+\x90\x9cx)\xfb\xe0\xcb\xbaU\xbaUr\x22\xb5\xb0\xb8\
+\x83\xac8$[m\xf5x\xbb\xd9\xf4\x16\x1dd\x9a\xba\
+\x93\x94\xd8\xe2yQQ\xa3R\xc7\xf3\xac\x15\xf9\xf2\xba\
+\xa8\xe6%\xfb\x00\xba\xd8_\x09\xaa\x11<\x1f\xed\xdf\x0e\
+i\x97.xwnwNwN\xc3-\xc2>\xc3\xf8\
+\x92\xe0\x06R\x0c\x02\x84@\x89\x8a\x08\x95yS\xad8\
+\xb4\xb6\xf2t\xdbj\xbf\xf8\x1f\x91d^\xaa\x0a)=\
+\xdcB$\xe0\xd8:\xc7\x01z\xf3\x90\xf0\x80\x10b\x9f\
+!\xe0Qo\xbeW\x14\xc4]`\xe9\xe3\xcc\x11\x22\xce\
+\x95n\xa2;\xbd;='h\x8b\xda\xc1\xcf\xd5BD\
+B\x84\xd6'*\xd8 G\x90+d\xfd\x90\xd0#\x80\
+<1[\x1d\x97O\x15YGwH\x90\x19e\xff\xa7\
+2\x8c\xec\xdd\x0c\xedk\xea\x81t\x1d{\xb8\x1c\xa8\xa0\
+\xc5\xd6\x92\x18\xc0\x10\x10TR\xc52\xbe$|A\x00\
+\x00\xad%a\x80\x83F \xad\xf5\xe0\xbd\xd4Tt\x09\
+\xac\xf8\x87C\x07\x99(\xad<\x90drn\x11\x08\xd0\
+2\xc5\xfaZE\x015\x0ee@zxK\x15\xd7\x8d\
+\x83\xaf\xf3\xc4+\xa9\x8c\x0b\xf7\xcfx\xf0\xb9T\x88A\
+\xa6\xd4\x16\xa0\xa9\xb2\x88\xec\x0b\x91-\x9b\xf1\x86\xf4r\
+q%\x9c\x80\xe8\x9f\xa3\xfb]\xaf\x901Z\xc3[\xde\
+\xa7#\x0b\xf8o\x15\x90]\xa6\x84\x0e\xeb\x059@\xf6\
+\x05\xfc\x0f\xe6\x13~\xd1\xaa\x22\x9d\xc6\xf1&\xc0$p\
+\xe7\xfd8\xb2\x11\x92\x8ecL+\xc2\x0d\x05\xaa\xef\x1c\
+\x1c$\xacH,\xcc\xe3-\x10\xa5u\x84\xdeX\x90#\
+!P\xf0D\x9d\x90H\x16\xceuKV5\x0aWw\
+\xe0\xe7XI'` `\xc4\xaf@V\x15\x19U%\
+X\xbb-J\x00\x9d\xfd\x95\xbb\x9b\xde\xef\x90\x18\xea\xd6\
+R\xe5\x94\xdfs~DRG\x02\x9d\x9a\x08(\xaf\x0b\
+\x07\xc8>\x81\x11\xff\xf8{\x02H\x02b\xfe\x81\xdc\xc0\
+\xaf\xc0\xefA\x95\x84y\x0c\xd2\x92\xe7\x88\x7fH@\xc2\
+<a\x9e\x93\xa8e\x9eG\xa4\x02\x81M\x0c\xfc\x99\x8f\
+\x8c7\xeb\x85\xef\x8bl\xef\xac\x07~f\x1d\x12\xa0M\
+\xaf\xac\x17\x92\xbcG\xbd\x12_\xae\x8f\xfdh\xb6\xae\x87\
+\xfdA\xe3:\xdc\xa6\xe7\x0d\xb7\x0b\xeb\x8e\xca:\xfb\x1a\
+\x01!\xd7\xc1\xf8s\x9f\xb5\xd5\xa1\xec;\x92\xad\xf5V\
+\xb3H\xde\xc7<\xb87 \xf7\x18\x07\xbe'\xca\x8e*\
+\xa0\xcf\x88\xe4\xa7\x9a\xfb%\x11\x19+\xfc\x8c\x1f\xeb\x92\
+\xef\xeb\xbd\x05\xa0\xac;\xd6\x05~'\xe4\xd1\x04\xfc\xac\
+\x17\xcew\xfcT\x12\x1e\xcb\xcb\xdfc\xffb\xde2\xaf\
+\xe0,\xd2uw\x0b\x9a\xbd@\xc2`\xa1\x80\x94\x8bd\
+\xaa\xcc\x0b\xe6;\xef\x8f-\x01\xdc\x07\xe7\xb6\xce\xcb\xe1\
+\x9a\x12\xc8\x9bwg\xfe]\xf7\x88Y3N\xe3\xbeo\
+\x14\x15!\xd69-\x84\xf8\xcfQ\x06\x91\xfd\x0b\x0e;\
+\x12\xaf\xe3\x05\xe9\x0e\x22\xdb\xfd9\xf9\x8d\xfe\x5c\x84t\
+6\x11w\x93q\xf7V\xee\xf3\xbb\x9fw?\xaf\xdf7\
+\x91ow\xe1\xea\x08\xf7+&{IvX\xb7\xcdP\
+\x87\x17\x9b\x89\xe5}\xac\xbe\xd2\xa3\x9c\xe5\xb0\xae\xab\x15\
+tz\xd1Fk\x9bic\xbfI\x81\xcdNb\xfb]\
+\xb7>\xf8\x9c\xc9H\x0em\xbfN\xb2u5\x90\xdb\xd6\
+\x9e@\xe4\xb6\xac\x9e\x9a+\xaa\xc8\x15^n\x0a\xf5\x95\
+\xdcb\xf4\xf6d\xef\x90\xa3\xf8\xc1\x17\x80N\x0b\xd2\x8d\
+<^vSOk6<z.\x8cs\xc0\xd8\xe9\xbf\
+\x92\xec\x90\x06B/\xb6\xe0\xd1\x17\xcd*\x8bf\x0a\xac\
+\x935d\x10\xda\xd8G\xa7\x9a\xa5\xd7\xf9\xcd\x04%\xde\
+%\xcd\x87\xfb\xcc\xd2\xefo4K\xbf\x7f\x9fY\xfa\xf9\
+\xa7\xc9L^b\xffd\xfb\xa5\xd7\xd9\xc9\xd2F0z\
+\xcc,\xfd\xdd\x83f\xe9\xf5\x00\xb3\xf4\xfb\xdc\xf3\x90\xfe\
+\xfe\x19\xb3\xfc9\x19\x82h\xf8\x83<!\xa8t\xe0\xa0\
+\xa9\x12\xdb\x1dk\xd6@\xad\xe4\xc8eR\xc3\xfd\x1a\xa8\
+#\x13\x89\x8a\x81z:\x81\x06z\xa5+\x92\xcc\xe0\x80\
+\xc4^C2\xe6s\xcb\xe0\xb2\x01\x12\xc8J\xbe\x88\x03\
+\x94\x9e\xc34\x1bs\x8f\xbc\xb3\x04oa\xa6@e\xa7\
+\xe6\xb9\xb2\x90\xa8|\x10\x98@N\x03\xf9\xd4ef\xcd\
+\x06\xc0\xc2$\xa0\x9a\x9d\xb7\xfaz\x1f\x9b\x09\x82+v\
+\xf8\xfe\x16\xb3\xf4<>e\x96\x131gX\x22\xc6\xaf\
+[\xb2s\xc8a\xc2\xce=\xba\x7ft\x9f\x916\xba\xae\
+\xb7\xa0\xf4N\xd2%N\x83ag\xc9WQA3R\
+\xac\xf3U\xd9\xf8E\x95\xed\xf4\x8c-${'d\xab\
+\x1b\x1c\x9fKB\x82\x0c\xe4s\x99Nl\xac{\xde\xac\
+\xb6\x9a\xf8?\xc6\x91\xc0\x0aGK\x81\x9do@\xcc\x83\
+U\xb30\xd7\xd8\xf0\xfdd?h\x12f\xc8\x19Z\x03\
+I\x9ag\xdd\x0f\xcd*t\xb9\xbb\xda\xacq,\x90\x99\
+\xa4\x17W\xad#\xde{&Hm\xbfa\xbfA\xbfA\
+U\x05\xb0p6\x07\xb4\x9b\x98\xa5\xf7\x1d&\xee\x00 \
+\xf8@\xc9\xe0Z\xd0AJ\xe0\xd2-Zt[\xbb#\
+\xccj\xef\xf3\xe4\x09f\x0dtU\xe4gp~\xb0\xc1\
+\xc2\xb5\xe0\xdc /)H\x01Zg\x90\x91sG\x9e\
+\xca\xef\xba\xea\x99\xfd\xec\xd8\xc1c\x07\xe7\x0d\xbe@\xcc\
+\xde\xac\x84\xe4\xc1\x85c\x05\xd5\x06\x9f\x9f\x046\xf4\xb0\
+\xbf\xcf,\x1f\x1c\x85e]2v\x99\xf4t\x83\x8a\x04\
+I\xe1\xe9\xce\xdd\xce\xb9\xa7|\x8f\xc1\x12\x97\xbb\x97^\
+r\xefq\xfbu\xe9\xb1w\x87\x0a\x87\x03\x87mo\xf5\
+|\xb3\xcf\x82(\xa2\x87y\xad\xe2\x08z \xa5\x8a.\
+\x89\x15\x97+S\x8f \x0e\x8e\x07\xe4p\x0eP\xc1#\
+`\x22a\x89\xc3\x07$\xfa\xab\xe9I\x1f\x96\xde\xffI\
+\xb3f\xff!qG\xcb\x0a\xe4\x8d$<\x09\x00!G\
+\xe5`_|X\xc2HPS\xd0\x92\xf7\x8f4\xfe\x05\
+\x99\xf1\xb1\xb1=\xc7\xf6\xcc\xf3\xbf\xa8\x0f\x10@\xe3\x08\
+\xb2O\x90\xf8`\xfc@D\xb0?\xaf(\xee\x94\xed\xc4\
+R\x8e\x8c\xa4z\x0a\x9d\xb4gyA\x1ca\xdd\x07\x09\
+\x02;=\x81\xeeL\xb1\xfe\xdf\xa1@G\xeb\xdcI\x0b\
+i\x89\x00\xb1\xc78\x00\xc5\xe5\xff3\xaf\xb8~\xeeG\
+\xa4i\xee@1~\x0b\x05\xf23\x9e'\x81vd\xdd\
+\xae:\xd2\xc5\x01\xa6\xe5\x80\xde\x7fz\xcf\x09`\x1e\xf1\
+\x9e\xee\xa9=\xa3|.H\x16AB\xd3\x9c/\x81\x9d\
+\xc84i\x85\xc8\x8d\x80\xab4\xfa\xf3\x15\xb2<\xb5\xe2\
+\x16\xe5\xbe\x98\xf7\x8f\xe9\xf7@~I$\xc5\x0aT\xd0\
+I\x9f\x86\xe4\xe0\x1f\xe3\x1ce\xe1\xa2<\x1c\x8e<\x01\
+\x14\x95S\xbe\x97q\xc7A\x8f=\xc0\x9c\xbb@\xe2A\
+\x90\xcc\x90C\xcbu>\x10z\xfc\xd5\xaa\xe1-Jz\
+\xce\xe9T+\xdf\x0fr\x94\x04$\x01\x14dV<g\
+\x123\xa8\x15\xfcJd\x8e\xf8\x158\xc8 \x1c\x94\xe8\
+\xf5D\x19\x082\xc6\x03\x08,\x89\x95\xa0\xce\xe0\x0e5\
+\x9f\xcb\xf8/\x1c\xe4p9\xe7\xd9'@\xd6\x11\xf0\xa0\
+\x16\xa1\x00\xcc\xa1\xd6\xcc\x939\x81k\x82g\xcb\xef\x83\
+\x8c\xde4\xd25\xb5\x06\xa4\xf9YZ\xdf.\xd7\xf5\xf0\
+>\x02\x19Z\x9a\xc4\xf5\xe0\xeb*B\xa8g{\xcb\xe5\
+\xd4\xfb]\xc4_\x0bdz\xe1n\xa1n\xa1&\xd0\xae\
+\xf3&_\xb7\xab-\xe0\xffq\xfe\xf3~\x10?$\xda\
+\x09l@\x96\x92X\x81T\x92\x1en\x0ap<\x1f\x12\
+9 /\x08\x94\x09\xe8\xa3,\x1b~#\xf3\x80\xf5\xc4\
+\xf3e\xbe\xc7\x84A\x94\x9b\x8b\x5c\x00\x04\xd6\x0f\xe9\xfa\
+H\xc00\x9f\x22w\x01\x7f\xc7u\xc5\x00\xb1\x92B\x96\
+\x04\x1d\x1c3\x04\x9c\xc4\x1b\xdc\xef\xe3S\xd5R\xfc\x95\
+^{\x02~\xf6O\xd6k\xac,s}\xb1\xe5,\xaa\
+(h\xbe\x0c\xac\x03 \xf7T\xde\xf9\xdc\x7fi=\xc7\
+\x96\x82\xd8\xe2Bb\x92\xf1e\xbf\x89l\xfd\x9c#\xfc\
+\xcc\xf3!a\xc7\xbc ^\xab$\x82\xa8\x94\x90h\xe6\
+\xef\xa7\xf8%$\x16\x9a\xfd\xad\xbc\x8fs\x82u\xfa\xe4\
+T$\x85\x8f+\x09\xa7\xd8\xd2\xc3:\xe4~\x19\x0f\xe2\
+\x05\x0aa\x13A\x9d\x86\xcf\xa3\xa0\xc1\xbeMa\x04R\
+L\xee\x1b?Dq\x8dsZ\x80\xbcSb\xc9\x0b\xa1\
+\x22\xc9vu\xaf\xaf\x179oO\x9c*\x81\xdf\x1d\xd5\
+}\xa7\xfbN-4z\x0b\xa7\x10m\x13\xfd\x12f\xd5\
+\xc1\xf0\x8a\xabd\xda\x86e\xacfU\xf5\x7f\x91e\xf1\
+\x8c\x83=\x96\xa5j\xe5\x10\x04@7\xcbL\xd0\xd4/\
+\xd7\x85\x97\x02\x9a\x9d-\xa0\xc9\x01}\x9ap\xfd^f\
+\xaa\xd4\x1d]\x0f\x96\x1c\xf8\xa6\x8dh\xf4\x7f\xc9\xae\xad\
+,\xc1\xc3\xdaf\x0d\xfb\xbee8.\xcf:\xf1K\x9a\
+N<\x81\x80;\xea\xe6\xce\x9d\xa0J\xd1\xcd\xb5\xd2\x98\
+\xa1\xef\x8b5\x95N\xab .\xdel\x5c\xf6oL\x01\
+\xc5\xaa\x82*7\x95\xa7<\x8d\x9eh*\x968,\xe8\
+\xeb\xea\x80A72\xcb\xf4\xedW+\xffl\x8c\x04\x84\
+Y\xfe)\x05\xe2\xa3\xf7&\xdb\xad\x22\x1d\xc6\xef\x1e\xbf\
+g<\x05\xc4\xe3\xef4K\xbf\xcf\xffj\xcf\xb9W\x0c\
+\xff\x5c\xc8\x18\x9d\x8c\x89\x8a)\x1b\xecN\x85\x8c\x8d\x1e\
+\xae\x9c0y{#\xa7\xa6\xde\x96\xdc\x10q|\xae\x5c\
+\x16\xc8\xbf*M\xc9M\xdd\xbe\xdb\xbeq\x18q\xccq\
+\xec[\xb9\xbcQs\x00\x91\x88`A\xb2\x11\xb10\xd9\
+8\xc8\xd0\xab\xe5c\x98\xdf\xac\x92\x7f\xf4G\x9b)1\
+pX\x86\xde$k\xa0\xddB\xb0d$\xc9\xde\x9aw\
+_l\x1c\x0fz\xb5\xd5\xca\x90{`\xbe$\x12\x8e3\
+\x9b\xf1\xe29\x22\xef\xc1\x02e\xa3\x87-\x185\x8a\xc7\
+\xcdT\x99\xdcM\xf3s\xad\xdc\xd2\xf2\xc7\xde2\x83\xcb\
+\xda\x0a\xaa\x81e\x0a\xfc\xe7\x8c\x8c\xd3\xe0Q\xb3\xca\x0a\
+\xef\x10\xe7s\xc5\x01\xf0a\xb3\x8c\x1c(\x1bA\xd4;\
+G\xc6+\x1e\xd8\x04p\x22\xf1\xf2\x8a\x05\xbd\x8e?,\
+\x10xz\x813\xb9\xe4d\x95\xe7\xca\x89\xb5\xcb\x1b\xd9\
+.\xc9\x1c:\xf9\x18\x1b'-\x22\x0a\xe4]o\x1aH\
+9\x10_e<G+\x9b\xa5\xf7\xafh\xd6\xc8\x9dQ\
+I\xbcF\xd0\xce\xbf\x88\x1c\x07\x95\x01\x1c\x0c\x12O\xa7\
+\x9a5\xf2|\xba\xbf\xee\x17f\x0d\x19)2)\x90\x92\
+\xea{\xd3=\x97\x96\x81#\xca\xf8X=5WT\x95\
+\xe0\xe3{\xfb\xfb\xcd\x9a\x1eT\xb1\xc4\x0f\x0f\x98\xd5\x80\
+hX\xd0\xac\x81\xb4\x09\x89\xe0$X8\x80k\x97\x9e\
+}\x12\x98\xeexQ\xe1!\x01\xc4\xc1\x09i\xdf\x8f$\
+/&R=\xe4]<\x00\x114\xb4[\xbc\x9b\xd1\xcd\
+hzt\xd9\xcf75k\xb8 \x84\xecI\xeb;Y\
+S\x19g\x1d\xe2\xc0\xbd[\xf2\x84\xfb\x0b\xc2O\xa5\x11\
+\xc7A\x0ek7\xd1\x8dw\xe3M\x8b\xc3e\x22\xc1\xc1\
+\x81\x87\x85\x1f\xb2E\x10%p\x18p\xe0R!\xc1q\
+!\xd3.]z\xbf_\xe9\xaa7\x99\xf8r@\x82L\
+{g\xb6\xb1n\x05\xb3\xe6`F-\x84V\x22*Z\
+8N\x0a\x00\x98/\x90\xb5\x0e\xff,\xe4M\xae\xb7\x8b\
+\x0c\x22\x9c5@T\xd9\xdf\x94p\x1c\xce\x1f\xce\x1b\xce\
+\xcf\x81h\x96\xafE\x9f\x1c\xae\x15W\xd5\xa17\xd2Z\
+\xbb\xfe\xaf&\xea\xbce\x87\x84\x1b\xa4\x97+\x96\xf5\xe5\
+\x89\x16*\xfe\xec\xcb\x04F\xa86pN\x03%\xd4\xf8\
+x\xa0\xc18\xd2#M\xc5A\x08\x02\xf6\x09d,}\
+<\xe7\xf7JO\xf9\xb9:l\xc5q\xc2\x11\x99\x13z\
+0\x99\xf7\xff\x96CE \x80\xa3$\xd5\x14'\x7f\x04\
+JJ\x80\xa5u\xe6\xaa;\xcc\x1b\x12iU\x96\xaa\xac\
+#~V\x22\xc1\xb9Fbo0\xd0V\xdeO@\xcf\
+~\x8b\xc3\xce\xbc\x09\x155\x0a\x02\xd3\x10\x1e8\x8a\x04\
+,\x04pp\x1dIU\xc8\x13\xa5\x9c3@\xd0\xe7\xb2\
+\xbf\xbb\xa3\x1e+\xa1\xbc\xf2\x9cp`\x95\xf8\xf1\xd6\x1e\
+\xcdW'\x8b%\x90\x08\x89%'y\x85S\x88\xf7M\
+z\x0b\xdf\x14\xbdlG\xa8\x91\xd8\xe0\xfc\x07\xc2\xce\xb8\
+p\xde2/x\x8e\xc8@\x22\xebH\xc5\x8f\xe7\xc4\xf7\
+C\xf6\x1c\xe57\x09(\xa2,_d\x9b\xe7s\x91\x9f\
+\x8c\x88\x09\x12\x0d\x905\xfeF\x89>\xf6\x0b\xde_{\
+\xea\xcb\xf7<\x1f\x0a!\x04\x18<\xbf*\x13W~\x16\
+R\xc0\xc9\x5c\xe1\x1c`\x1e\xf0}\xccW\xe6\x1f\xcf\xbf\
+\x062%\xb0\x81\xf41\x06\x5czM\xe1E\xe1\xf0\x02\
+\x190\x84\xc4\x11HC\xc6\x15\xb2:\xbe\x0f\xb2H\x10\
+\xb2pIQ\xf1F\xf6\x16\xbf\x0b\xbf\x86\xe7\xc3\xe7\xe3\
+\x97\x92h\xbbK\xf7\x8f_\xc8\xfd\x83\xd0\x84\x93\xcb\xf5\
+\xe6\xa5ZU[M\xcb\xf3\xe5>\x94\x10A\x9djZ\
+\x02 \xaa\xf7\x00\xd5\x9f[\xc5\x9eq\x8e\xf2\x82\x04\x96\
+\x04\xfe\x8f{\xeb%\xdcI%\x00\x8f\x1c\x06|\x1e\xfe\
+\x0d-\x031Q\x1adic\x82`\x1a\x02 \xb2\xea\
+\x07\x19Q'\x0b\xfc\x8bs\xf8\x94\xf5\xf2\xb0\xcb\x15\x96\
+\x84\x04\xe7pl\x11a_\x89r~O\x07\xc4\x01\xad\
+2\xfc\x7f>\x17\xff!\xca8\xb2\xbf?\x17\xb8C\x08\
+\xc49W\xea>P\xfc\xday5\xdeB\x14\x0e\x0f\x97\
+\xfb\xebVS\x0bRD \x83\xf0\x88\xa4\x8cpP\xa0\
+\xfe\xd1\xaa\x86ML\xe72\xf3\xc4$\x05F\xf6\x0d\xce\
+!\xe2\x1f\xc6\x0d\xae9\xces\xfc%\xa9W\xd1bN\
+\xa2\x00N\x9eas!\xe9X\xbf\xab\x98)\x8e\xde\xb9\
+\xe1f\xd3zs2X\xe2\x03\xe6\xbf\x12)\xa3\xe5\xcd\
+2b1#`'\x5c\x17\x9c\xde\x04e\xf22\x1b\xf0\
+\xdb\x9b@\xda\x80\x9f\x87\xa8\x02\xba\xb9\xc8\x9d\xde_\xd9\
+\xe8\x81\xc8\xe6\x0a\xfb\xe1\x82\x02\xad\xa5\xcfM\x13\xa9\xdf\
+\xca,\xbd~\xdbL$z) \xeeoOvG\xad\
+\x1c\xe6\x8a\xf8\xfb%\x8bwPuXs\xcfn\x9b\xf9\
+\x17\xc4\xb8\xdb\xc7,\xbd\x9e#\x08(\x010\x10Q2\
+&G%\xfbn\x95\x0b\xcc\xdf\xb7J#\xc3b\xad\x00\
+\xafi6\x08s\x07\xdf\xa0\xff\xbf|\xe3\xc0\xaa\xc2\x94\
+3\xe4\x174\xa4\x10\xb0\x8d\x0b\xea\xdd\x8f\x9bU\x95\x02\
+\xef\x91%C.rB\x90\x01\x16\x1e\xe6\x84\x809\x88\
+\xe3Y\xef\xfb \xbb\xff\xd1\x1fG\xd7\x8c\xac%\xe0x\
+\xb3\xaa?\xee\xac\x93\xe8\xd7J7|\xf8@\x81\xc0\x8f\
+\xbdG\xa4\x87TvT\xd1\xe9\xbe!\xb5\x07\xb1\xf5\xa2\
+r\xe0\x99Az\x92\xe9\x91\xff\x9d&\xaad\x98\x9cd\
+\x8c\x0d\x17\x871:T,|\x0e\x22\x16J \x1bj\
+\x02\x9eR\x11\xa4\xc7o\xd7\xb1]\xc6,Q\xb4\x93&\
+\xbaz|\xdd\xcfQf\xb4\xdf8\xd9\xeb\x85`\xf9x\
+v\xbc\xcf\xcf\x89\x09T\x0d\xde\x9clk\xc9\xbb\xddS\
+\xa1\xd0\x1e\x10\xb2`\x81 \x1a\xc0\xf3'\xe9\xff\x7f\xcd\
+\xac\xb2\xcf;4\xd0\xea\xeb\xdfiZ^TI\xcb:\
+\xe6?n\xc6c\xc1\xbce9t\xa7\xfb\x95Y\x930\
+\xc2\xc1\x80\xbc\x036k2\x88T\xc6\x94\xd9#\x00\xa7\
+\x15&\xa7\xdd\x96j\x12*\x5c?\x81\x1a\x95YA\x81\
+\x86\x1b\x84\xa0\x11$\x18U\x8a\xee\x16\xb3\xa6\x92\x8c\xa3\
+\xcf\x81\xc2\xe7\xb0q\x01\x0d'\xd1\x15z\xcc\xfd}\xf4\
+\xfa\x8b\xfd\x1eD\x82\xcb\x90\xfc\xad\xc8R\xd2C\x9b\xae\
+.\xf7\xfcC\xfa\xe3\xeb\xf1\x8cd?m\xa0\x8f8\x12\
+\x8c\xd7\xc1\xa5\x12?\xecf\xd6\x90\xa8\xd0k\x0fK;\
+,\xda8\xa0\x1cp\x04\xbc\xdf*\xc8\x89\xe1\x8de\xc3\
+E\x16\xd3+\xca\xa1\xe7\x1ad\xc7\xd8\xd7\xb2U2,\
+\x0e\x5c\xcdwG$\x00\x05\x85\x1d\x9d\xe7Do\xd7'\
+\xcc\x9a\xf5\x00\x94\x9f\x03\x88\x8c1\x8e\x0c\xd7\x0f\x9b\xf5\
+7\x87#\x86#^\x80\x0d\x9a\x03\x9c\xfd\x0b\xd9.\x12\
+\x14\xd2\xc1v\xf5\x0e\xd8\xe3\xe9\x1d\x83[\x00\xb97\x12\
+\x09$\x86\xc4Ma8\x02C\x12t?0\xab\xb2\xa9\
+\xfe3\xe3\x82\xdc,\x99\xf8\x85\x9c\xac\xb0\x1c\xf8\x04\xa6\
+\xf4\x00S\x89\x04R\x8f#\x03\xb2`\x19\xad\xc3\x8dT\
+9\x06A\xa4\xd6\xb2i=\x9e8P8\xc6\x04\xaa\x1c\
+\xec\xc8\xbd\x1e\xa9\xbf'A\x01\xd4\x11\x87\x0c\xe83H\
+\x1a*\xac \x92p \xaf\xcf\x18\x85J\x22DK\x92\
+\xf6\x09O,\xf0\xbcP\xb3\x10\xb2\x0c\xf2I\xd8\xfeS\
+PU\x1c(\x02,=G\x87\xba\xab\xc7\xdf\xd9\xfd\xd5\
+\xd2\x96\xb9\xda\xf7h\xe4\xbb\x08\xb0H\xd0\xe0p\xe1\xc8\
+n\x9b\xad\xcaX\x82,\x82\xc3\x87yE\xa5T\xf2V\
+\x1e\xa0\xdd\x15\xc8\xd3\xa2\x1c\xd3\x7f\x9c\x9d\xba$\x1ep\
+\xacy^\x91d\x0dG_Pf\x87R\xc2NN \
+Kk\xc9\xbdr\xdc9\x97\x1eq\x88g\x99o\xb1\x15\
+\x8d\x9f\xd9\xf7\x22r\x81\xf1\xa6\xc2\xca\xbe\xc7kt\xbc\
+\xf9G\xa2\x84\xfd\x8bqc\x9cT9t\xf9Q\x1cM\
+>\x97\xf5\xc0zg\xdf\xe0\x1c\xe5:c`R\x11\x19\
+e\xfc\x22\xcb\xba\x12\x11\xecK\xde\xf2\xb7@\x90\xe9\x12\
+\xf7\x05\x95)\xff^\xc9Pz\xc0\x8d\x8a\x03\xec\xf5\x04\
+N\xac\x0b8=8\xe7\xe3\xba#\x90!a\xc0}3\
+~\x04\x16\x04\xa2\x91\x9d\x1d\x84\x04\xfb<\x15Z\xf6C\
+\xcd;\xaf\x10j\xdf\xf3\xf9\xc9\xf3\xe0\xfe\x08|\xa3>\
+7\xfb\x16\xf3\x06h=\x5c\x00\x91\x5c\x8c\xeb\xa6\x90\xc0\
+\xff'\x11\x04\x12\x83u\x1dz\xa4\xfd\xfe\x19'\xe6w\
+\x0c\xa0\x08\xb0x\xee\xf85\xd3+\xb0\xe5\xfb\x16\x0c\xad\
+\x00$\xea\x9e\x09r\xc2\x15*\x0eR\xa4\x5c\x1f\x15j\
+\xb5\x8et\x9b\xab\x05\x80\x16\x13\x9e3\xe7+\xf7\x81?\
+\x01\x97\x05\xe4\xb1\xb7\x14\xf9E_\xffc\xdeRQ\xe6\
+\xf5\xe5\x81CdaUJo\xf0\xfb!\xa115\xf1\
+\x87_\x14\x13\x00\x11a\x83?Z[e\xcaz\xe3\xf9\
+\xf3\xfb\xb8_,\x1c\xf6\x93H\x9e\x18[y\x98\x17\x8f\
+\xe7'V\x0b\x0a\xac\xeb\xa8r\xc0:\x8c\xfbL\xdc\x9f\
+8\xdf\xf8\xff|\x0f\x95e\x91\xb9\xfa\xf8\xc7\x9e{\xee\
+\x93}\x84\xfb_,$2\xb8\xaf\xaa6\xc4xNM\
+$q\x1dB\xd09i\x22\xdf\xc3zc>\x918\xe3\
+_\xafuC\xab\x0d\xf3\x94\xf9\xc1}\xc7\xeb\x01\xe1K\
+b\x9ds\x01?\x8b\x04Hl-\xe2\xbc\x89\x88\x0e\xd6\
+)\xaf\xac\xcb\xd5\x0a\x82\xc9\x18w2\xe7\x0e\xeb\x83\xe7\
+\xc6|\xe7>\x19g\xfc8Z\x1fh\x11\x04i\x8f\x7f\
+\xfe\x0a\xb3\xec\x07d\x19\xf0~3\xb3\x86#\x0a\xbfL\
+\xfe\xa4s\xcb\xcd1k\xe6\x07-\x82*\xec\x8d\x1dT\
+Z\x01\xbb\x03\xbbOw\x9f\xb6\x04\xc0\x11r\x1c\xd9 \
+\x04\xe5\xcfy\xe6\xbf\x0aZ\xf1\x0f-\x90\xc7k\x85/\
+W\x5c\xf6\xc9\x1fx\x90A\x0c\xe9]t2 e\xb6\
+3[n\xba\xa1\xfe\xb7\xc9R`0y\xb4\x99*Y\
+\xc7K\x97\xdb\x02\xdb\xa7\x93=%Hsr\x98G;\
+\x9b\xa5\xd7\xa7\x93=\x95!\xaa\xbbg\x07\x88\x7f\xd7g\
+\xd7\xaa@\xfe?\xdcp\x0c\xd8r\x5cD\x9f\xb3\xba \
+\x12\xebi\x02\x8cD\xca\xb6N\xed\xad\xcd\x1c\xc3\xe9\xfa\
+\xfbS\x92\x9d\x5c\x03\xb7\xd1\x01\xc9\xf6W\x00\xb0\x9f\xf4\
+\xda\xcfh*\xc0;%K\x01j\xbfM\xb2\xb7\xd6\xc0\
+\x1f\xc7\x18\x879##>$u\x82[*\xa4#\xab\
+\x01\xbcW\x15\xa5\x0b\x1aY1d\xfbn\xean\xeen\
+\xce=\xcb\xc9\x9a\x16\x03\xf4\xce\x1f4\xab\xec\xf1\x19r\
+\xfd\xfd\xe9$G\xee\x90\xbeT\xcf\xed;\x0aT\xa8\xf4\
+oeV\x17\x82\x93AqpR\xf1:4[] \
+w\x05GXl\x9d\xae\xf7K\x06-\xaa\x03\xfc\xa3$\
+\x84\xa6\xe9~\x92\x09\xbd\xab\x90iM\xee;\xf9\x89\xc9\
+\x14\x10M\xbebr\xcd\xc95s\x80_\x16\x86z\xa3\
+}\xfe=\x91\xe9Q\x1c\xca\x8eZ\xc30\x8fYU\x93\
+\xf0q\xa1r\xc0\x01\x0f\xb9\x14\x01\xfdg\x92\x1d\xd4\xf4\
+\xc0r\xfdV\x7f\x5c\xbfA\x80\x18\x07\xf5\xfa\x8d\xe3\xa6\
+\x8d'?\xd7\xdd*\x09Rn\xedH\x01\xech\xa3\xd1\
+kG\xa6\xc7\xf9\x90Y\xad\xbc\x22\x8b\x88L\x9a\xcbo\
+r\x9d\x9f\xcf\xb4\x1dc9\xed\xf0\xed\xcc\xc6\x9d{\xd0\
+!\xdbLNW\x81\xe6\xc3\x99@F\x91\x8a6\x07\xe1\
+1\xd9\xea\xab\x85\xad\x87\xa9\xb5\xe2\xa4\x9a\x10!\xf0p\
+\x96vZ\x1e\xc8PR\xe9g\x83$ \x9b\xcfL\xad\
+C\xdb\xaau\xe6\x97\x9a\x07\xf3\xd4\x8dq\xb8\xca\xac9\
+\xd0\xf7\xcdf\x89\xabd\x22-[^\x81\xc9\xf9\xcd\xc6\
+\x8cL\x1c\x90O\x1cA*{\xefT\x8f?\x19P\xf5\
+L\xa3O\xcf\xba\xf3\x8a\xa9\xb8N\xd2&\x9c+\xf4\xc3\
+G\x0a\xe2\xc2+U[\x8b\xc5\x9d^i\x126\xcf\x8a\
+\x05Wd*\xce\xd9\xa0\xc4\x0e\xcf\x9f^H\x97\xfd\xa3\
+%\x83Jk\xd4\x17\x87eW:\xd4|?\xbd\xdd9\
+\xb1u~Sa\xe4\x00$\xc3M\xe2\x03\xd2\xb9\x19\x05\
+\x11\xe0P2=?g\xef\xa6\x1c-\xad\xfa\x00\x00\x1f\
+\x15IDAT7\x1c\xc7x^\xb3\xda\x92\xe1\xf7-\
+\xee\x0c\x97\xf5#\xc1u\x9c\xce\x09\xd6\x11\x15z\x02P\
+\xb5@x\xc2\x80\xde\xf6\x08\xc1$\xf0\xe5\xe0\xc4A\xa0\
+\xd2\xc9A\xc6\xf5\xb0\x1f\x01\x89\xa7\xb2\xa9\xfbA\xb5\xc1\
+\xcf3z\xb1!\x09\xc31\x09\x10=w,H\xc0\x9d\
+-r\x1d\xd8\xfcq\x9c\xa8 0~\x8c\x03l\xc7G\
+\xea<\x95\xee\xb8; \x90\x5c\xc9\xe1\x83\xed\x9e\xf1\xc9\
+\x8d\x05{\xd6\x84l\xf7\xfb\xee\xaa\xee\xaa\x06b\x1d\xa1\
+\x9dT\xde\xb9\x0f\x1c}\x12F\xec\xaf\x8c+\x8e)\x95\
+\x08\xb5\xb6\xf9\xfcd_\x80]\x9fD\x17\x9c\x13\x9f\xd7\
+|\xe7\xfbxnU\xc7=\xcf\xeb\x9c\x08\xfd\x898\x82\
+\xf6\xce\x88\xbbB\xe6\xc7y\x12\x022\x0f|\x08(\xb9\
+^*\x9dK*\x90Y$\xa89p\xbf\xc8*>T\
+Z\x01\xcd{\xe8Vi\xc6\x09h4\x01\x0d\xdf\xcbu\
+\xe3\xf0v.\x9fG\xa0W\xd6\x97\xd6+\xfb|\xb7\xa5\
+\xce\xd3\x08\xd5g\x7f\x13\x0b\xbd\x01\xad3\xd4\x9as\x07\
+\xc8;?s}\xcc\xbfXQ\x8c$esC\xc8\xe0\
+\xf8\xc7\xfb\x99\xd7{`\xa7\xb2\xc2\x13\x18\xb2\xcf1\x8e\
+OL\xed5\xf6\x16\x0d>7\xb0a\xbb\x9c\x9d\xf9A\
+;e\xf5\x89B^\xcb>\x17\xd8\xec\xbd\xa5\x08\x84\x98\
+\xd8\xbb;z\xa7!\x97\x04\xd9\x81\xc3M\xe0\xad\xf1p\
+.\x9dg\x5c\x9f\xbc\x8c?\xe3\xc0y\xce\xf7\x07=q\
+d\xab!\x9d\xf4\xc47\xe4\xb2J` O\xec\xf3\xb0\
+\xf7}\xab\xecG\xb1\xc5b\xbe\x90\x00\xa8$n\xe5\xba\
+\xd5\xc2\xea\x5c\x03\xaf\x15Y\xf3R\x0a\x5cT(K\xbb\
+\xf5\xe3\x99t\x90J$\xfe\xd6|\x81d\x99\xe7\xf4\x90\
+\xe65\x09\x80\xa8\xde\x13\xd50\xf8\x99\xc0)\xb2\xb6W\
+\x12\xba2\x1f\x229*\xe7U\xe0<\x18~SH\x01\
+9\x07\x90\xf3\xf5}\x8b\xe7YIV\x8b\x9a\xc6_$\
+\xbfKb\x9f\xc4Q\x94o\xe3\xbcg}@\x06\x0aR\
+\x88\xfb\xa9\x89\xc9\xf2\xfc#'@l! P\x9e\xe5\
+\xd0\xf02\x8f\x22\x12`\xa6\xd6\xdd\xb3!\xe1\xc6z\x8a\
+\xe377RH \xeb\x8f\xa4\xf9\xfeHs\xaep\xee\
+\xf1>\xe6OD\x04\xb0/D\xce\x0f\xde\xcf~\xa1\xff\
+\xef\xac\xfdU\x8e\x91\xfb*\xcf5\xee'\x11\xea\xcf\xfc\
+\xe3s\x09\xb4\xb9\xbf\xda\x82R\xaecY=\x17\x12\x01\
+\xcc\xd7H\xaa\xc8\xf7\x92\xe8\xe3}\x8bj~\xb2\xee+\
+\xa7F\x99\xdf<'\x10,\xec_\x8c\x03\xe7\x08\x08\x10\
+\xd6\x1d\xcf\x1d\x0e\x87\xa74\x9e\xec\xc7\xac\x0b\xfc}\xfc\
+|\xe2\x16*\xfe\xbc\x7f;!\xf4v)\x85J_\xcf\
+\xb4\x8c3?\x22B\x89\x02\x0bjz\xdf\xc9V\x0b\x9f\
+\xdc\xc7\xc2\xf2'6,\xaa]\xc3\xef\x8b\xdf\xecP\x7f\
+\x0a\xca OQK\xd0~\x9b\xd5\xe4\x92\x9f4\xfa\x88\
+Y-\xf0\xc0i\x02\x99\xfe\x84\x07vFm\xb6Q\xf3\
+@\xcc\x0dZ\xbf\xb2\xc4\xe7\x1e\xe3\xfb\x15\x98\xfc\xba\x92\
+\xdf\xe5\x0a\xf3\xc5Un\xa8\xdf\xc4\xacn\xa4\xfd\x1b\x92\
+\xbdQ\x1b\xf35\x92\xeb\x1bW\xc5\xeb\x93M`l@\
+\xe0\xd7*\x00\xfd\x96d\x05O\xd0\x81o\xbdK\x07$\
+\xfbT\x93\xf1\x5c&\x83*\x9d\xb5>\x93\x91\x9c_\xf5\
+\xba\xa9\xf8\xe6@p\xdeZ\xc1\x803\xa0\xffr\xb2C\
+\xd2\xfb\x7f\x93\xec\x12\xf5\xfe\xbf\xb5q\xe0\x9f\xcc[l\
+\x81\x08\xff\xa4\xea\x81;\x8b\xa9\xb1\xb5\xef\xd0\xc8\xe5h\
+\x01e6\xf3\xadU\xf1\xbd\xa0B\xd23;\xfa{*\
+i\x0a\xbd\xc5&f\x97\xe5\xec\x8a\xabW3D\x820\
+\x22\xdfD\xe6\xca\xd5\x16\x02d\x13\xf9\xa5\x9c\x909\xa8\
+\xe99!\x03\xa5\x0d\x90\x89\xe0,\xebL$\xd4\x1b\x8c\
+\xf4\xee[\x0d\x17\x00\x1b*\x07\x01\x01\x18\x1b(\x1b\x02\
+\x07\x03\x07\xcf\x87\xa4\x8f\x09\xc4]\x15\xfc\xccz\xda\x90\
+\x9f\x0d\xa7\x995\x15\xfd{\xcc\xd2\xeb\xc9fi\xdd\xbe\
+{\xf2]\x93\x06E\xde2\xd9VU\xc6\x0e\xf9-\x87\
+\xcc\x18i\xd8!\x8d\x8c\x91\x05\xaa\x877\xa44\x16&\
+\x9f]{\xe6\x9dt\x8d\xfb\x00\x92\xcc\xf5[\x98\xf4\xf5\
+\xda\x9b\x8bc\x8b\x83\x9ee\x97N\x90\xc3mH\x8fc\
+\x93\x1d\x97\xfe\xff\xcd\xc9\xfe,\xe4\xc0a\xcd\xb8\xe1\xb0\
+S\xa1\xa4'\x1b9\x10U\xb4\xc8\x5c\x0e\xeb\x0c\xaf\x1a\
+^\x95[\x08\x96\xcb-8\xe2h\x18}\xcc\xacqh\
+\x0e\x16K<\x10.XA\xe9\xa5\xffCI\x08Py\
+\x1c\x9e6K\xafK\xa8\xc7Y:\xa4\xfd\x92f\x8d\xec\
+U\x80\x0cw\x17\x9b\x09Q\xf1\xa6Lr\xb8_\x86f\
+\x93\xb8\x81\x15\x9a\xfd\xe4\xde\xdc\x95^!\xeb\x0a\xe8s\
+o\xfe\xebk\xaf\xb3\xcf/U\x90r]\xe6\x7f\x14\x00\
+\xbf\xa5!\xb1\x13\xf2!\xdd\xef\xc1\x06\xf1\xcf\x0d\x00G\
+7=\x8e7*\xc3\x0a\xd9\xcc\xc9E]al\xe5\xe2\
+\xe0\xb9\xbe5\xf2\x91\x1c\x5c\xa7h\x1e\x1cS8Mx\
+N\xc3\xfaf\x0dY\xe0\xa9\x92\xcb#1\xb3\xa1\x02\xa5\
+7\xe9\xfa\x0e1\xab\x88\x1c\x97u$`\xe1@\xd6\xfe\
+\x13Y\xac}\x9dB\xb2G\x0b\x85Z\x5ch}\x00\xe2\
+\xedri\x1c\x94rl\x1d\x09\x04\x22\x02h;\x08\x05\
+\xe9\x84\x0f\x13f\xb9r\x93\xc9\xbe\x9c\xbd\xfdB\xb3\xf4\
+\xba\x87Y\xe5z\xf1\x84H\x1f\xc8\x9688W\xd5A\
+\x89\xa3\x07\xb4S\x01;\xe4O\xce\xa6\xcd|]\xdc\x03\
+\xbc\xf29\x04\xecW\xa8\x95\x80\xca!\xd7q\x9c\xd4/\
+@R\xe0 \xc0B\xfe\x0d\xb3&\xc0\xc11\xa2W?\
+:68V\xacS\xa0\xef\xc86\xc1}\xf2=\xb3\xdc\
+JSz\xff\xb7\xc9V\xd5\x07 7\x83\x5cS\x09\x00\
+O\xb0#\x8f+\x15\x86.\xb3\xec\xa6\xd7\xbd\xcc\xd2c\
+9\xdbLd\xb17UD]n\xdc\xda9;\xf6\xc5\
+A\xa2rI\xe5<\xca\x83\xe1HE\x9d\xefH\xeeE\
+E\x22\xe80{kKP\x8b\x99\x16@\xe2\x18Uy\
+\xc5B\xf2F\xab\x8a\x10F\x9e\x18\x00r\xa9\xf5\xe4\x15\
+S\x1c\x1e\xfc\x0e\x1c\x5c\xce\x13\x1c\xae\x08i&p\xfa\
+\xef\xd4\xca\xd1\xa0V\x9dnE\xfd~\x09\xdd_lA\
+\xc0\x81\x1es\xb2\xa7\x12X\xe0@\xc2\xde.\xe4\x9b\xcf\
+\x13zQ\xf9<\xe6\x17\x889\x10\x16T\xd6Af0\
+n\x0f\x05\xf6{^I\xdc0\x9fq\xfc\x09|\x08H\
+\xd8'p\xa0q0\xe5\x18\x0f\xcf\x15\x04U7\x8fZ\
+M\x987\x04H \xb5\x18\x07\x90\x00$\xf0Qca\
+\xbc;\xedSp6\x09I\xe6\x09a\xb8T\xf6VB\
+\x9a\xe7\xc3\xf8\x10\xf0s\xdd@\xff\x97)\xc8\xc4\xe4;\
+\x96y\x0bR\x0b\x8e\x00\xc8A\x09\xd0\x187\x12\x0c\xec\
+?\xdc\x17\xf7\xc3<g^s\xbe\x808\x90\x1fD\xa1\
+\xa1\xdbT\x95k\xf6-ZQHX0\xffXG$\
+Db\x22\x8cu\x17\x91\x02O:y\x5c\x09\x00 \x87\
+%\x11\xce\xbab\xbe\x93\x88 Q\x81\xbf\xf2\xa4\x07>\
+\xe5{\xb8\x7f\xdbG\x1fV\x02\xa0%\x0f\x8b\x892~\
+\xe6\xfb\x18\xb78\xff\x9e\xf1\x1e\xe7r>BZ\xa8\xf5\
+\xeb\x1c.\xcc\x0f\xe6\x1f\x9f\xabJ1\x09\x01o\x19V\
+\xc5\x94\x1e\xfb\xe1V!5\x18\x17Z\xff 7~&\
+T\x9c#I ?\xc7\xf9V\x13y%\x00\xad\xb2o\
+Se\xfb\xe6qR\xear\x9eE9<\xd6\xdb\xfd\xe2\
+n\xf9\xbb\xe4\xfcX\x97$\x22@ \x91\xb0\x89r\xa4\
+\xfc\xe3z#\x07\xc0\xbfC\xc2\x81s\x88\xf907$\
+\x00\x09\x8d\x88\x04\xa8\xfa\xf5S\xb9R*4\xbf\xfc\xfc\
+T \x1f|&\x9c\x83\xab5\x1cX-\x07PE\x1a\
+\x95}\xaa\x22z\xcb\xf7\x91\xe0Q\x00\xeb\xd7M\xe0N\
+KWLp\x92 \xe5\xdcb\x1f\x06\x19@\x85\x9d\xe7\
+\xca~\xcaus\x8eT5\x96\xb2_\xf0y\xacK\x12\
+\x01\xacw\x9d#\xddK\xd5\x82\xb5\x8e\x10\x8a L)\
+<\xb0\x8f\x81\xec\x94\xbcq\xb7\xa2\xd6\x03\x1c\x22<w\
+\xc6\x95s\x81\xf3\x04YH\xe4\xc8A\xe0\xbd\xb2p6\
+Q\xa0\xf1\xd6\xbb\xa3\x8b\xdf3\x1cc\xd6\xb4\x08\x92X\
+\x13\xc2\xd8\x0bZ\xb4L\xa2\x22\xb6\x8d\xc8\xb5\xd52\x9b\
+\xb9\xed\xbeR[F'\x86\xa3\x93\x1d\xa3\x8a\xe5j\x8d\
+n\xb7\x050_\xab\xac\xe7\xbeqQa\xa4\x97G\x15\
+\xa0~H6&\xfd\xe0-\x15\xe8\x8f\xd4#\xbb\x90\x02\
+\xe9\x9f6\x8e9\x1b\xba\xe5YVh \x1a\xf4`\xda\
+m\xbe\xa3\xe9i\x0c\x19\x19\x87\xc0\xc3\x02\x0by\x8d9\
+\xfaW\xa6}\xff\xcff\xe9}\xb7\x9a\xd5\x0d\xaa\xff{\
+\xb2\x07\x14\xd0\x5cReL\x5cw\xd8\xea\x83\xe6\x10\xaf\
+\x95lm9\x9eG7\x13\x86J\x88M\x0b\xeb\x99\xfe\
+t\x81R\xf8\x81A\xe5\xca:\xad\x7f(2\xb3\x9d2\
+{\xe3x\x1e\x0fUVs\x00\xb6DCv&\xd5\x03\
+z\x88\x93cY&\x8a\x024\x02\x0cw\x90\x0f7k\
+\x12\x08@A\xce2\xe1\xc1f\xa3\xe3\xe0C\xbf\x18\xf9\
+\x08\x1c&\xa0\xa2\xb0\xbf#gB%5\x90\x189\x94\
+Y\x1b\x97g\xd2I h<\xd2b+\x0b\x95\x0d\xf1\
+ZA^p\xf4p\x04!\xfb\x12\xc4\xddu\xa2\x81\x82\
+\xab\xf2\xd2\xff)\xd9u\xe2\x06\xf8D\x85L\xf7\x7f3\
+\xab\x9c\x00\x19\xa8m\x10\xd53\xb3\xd5V\x14zh\x94\
+A\xeb\xbej\xd6@\x92\x15\xe0x\xcf\x1a\x0b\x0bH\xbb\
+m\x13K\xa9b\x97\x9eWwG\xb2\xdb\x9b\x84\x90T\
+,\x86\x95\x92\xbd\xb4V\xaeAf\x0c?.\x09\x84~\
+g\xb3f\xc1S\x01\xd4sN\xa3\x9b\x0fF\x0f\xd8\xc9\
+\x14R\x11\x96z\x85\x1f\xc0g\xa8\xb2{\x95\xaeS\xbd\
+\xf4@\xb3\xfb\xfb\xcc*IJ\x7f\xa0\x99\x02\xc4\xf7V\
+5\x08\xdf\x88fd\x90`\x09(6n\xe4\xbcL\xee\
+\xf2=/\x10H\x11\x80|4[\xad0\x22\xf3\x89\xc3\
+\xb5\x5cIdx\x00'D\x8eWX\x04i\xf2\x96\x94\
+\x1d\xc4r\x0eT\x9du\x05k5\x88\x17\xcdk\xa0X\
+^\xc9?\xb0\xe8\x87{b\x82\xbf\x87k\xe0\x8clc\
+y\xff;\xba\xc9\x88#\xb7\xc3\xbc\xc5\x81\x84\xa4\x8d}\
+\x8f\x84\x11\x81\xd0\xaf\xa6f~=`\xc4A\xe4\x00&\
+\xd1\xc1\xc1I\x22\x00\xee\x86\x8b\xcdje\xc79\x0ap\
+\x94`\x9bW\xe2,\xedN\xc5a\xb9M\xe3*\x96r\
+\x0f\x5c\xe8\xc9\xb5]m\xf3\x86\x13a+\xf5n\xaa\x17\
+\xac\xbb\xd4\xac!\x8b!\xe0\xa7\xe2Oex\x0dq\x06\
+\xbc\x5c\x07#\x07\xe5\xeaz%\xe1\xc6\xb8\x11\x10S\x09\
+\xfbj\xd1\xb7u\x0e\x09\x91\x14\xe2\xb8\x90\x88\xf0\xef\x01\
+a\x81\xec\xe0/\xcd^\xc0\xd1\x07)\x82j\xc2\xce\x85\
+\xe4\xd0\xd7\x09\x8e\x0b\x812\x8e/\x8e\x16-7\xbfR\
+\x0f\xba\x1c[O\x90\xa0G\xff`\xe1(q\x92\xda\xcd\
+\x85\xc8\x00\x22O\xc2\x0c$\x82\x1c\x08\x12*\xc6\x98\x90\
+[\xbct\x10\x8f\xd64k8TP+A\xf7\x17Y\
+J\xb5\x92t\xafS\xa5\x01\x84\x0b\x8e\xf7\x84\xf7\xe2O\
+M\xd0<\xe1=\xc6e\x9e\xe1\x10\xe1X\xe2`#\xa7\
+y\xbaY\x96#,\xa4\x7f\x1fP\xa2.\xca\xcc\xc1\xdd\
+\x01\xb9\xe6\x22\x9a/\x9b\x16\xc4P\xf7y\xb3F\xdd$\
+B\xeb\xb9\x0e\x02\x1a*`|\x0f\xaf\x5c\xff\xe2\xde\xcb\
+\x5c\x9egE6\x94u\xc5\xfaz\xbe\x04vi\x0f-\
+\x81.\xe7\x99\xc6\xdd\x11Tsk\x01\xc01\xbeZ\xf3\
+\xf6\x1a\xad\x9f(\xbf\xc6\xf5Nz\x05\xba8d+\xc8\
+Oa\x1fxB\xc8\xc05\xcc\xf2\xbc-\xfbJ\xac\xd4\
+\x12P\xf0yU\x7f\x1cR\xae2\xdfI\x18\x92\xe0\x85\
+\xfc\x95\xdf+\x11\xea\xe7\xc6x \x85SB\xad[7\
+\xf4\xb6\xe2\xdf\xe1\xc7\xb0\xafs\x9f\xc8\x08O\x14d\x9d\
+#DX\xaf\xb4t\x88\x05\xdc\x91\x801\xb0b\x9d\xf2\
+\xca\xfdW\xfd\xf6\xf2\x1cA.\xd0\x13\xfc\xa0\x02\x10\x02\
+\x11\xc6\x89@`\xc1P\x19'\xb0 0\x8c2\xc3\xb4\
+^@>)\x92Y\x0f\xeccA\x83\xfd\x8c\x04\x0d\xf3\
+6\x92\x8d\xb2\xcf\xd4\xc0\xa7\x5c\x0f\x15\xd6\x89\xd0B\x12\
+{\xfd\xb9>\x90F\x14j\xa8Lr?\x04\x18\x15\xb9\
+1u=s~i\xbf\xa3\x90\xd7\xa8\x03\xcc\x9f\xaf\x7f\
+\x22\x87\xc2\xf5\xf3\xe0\x9e\x00*M\x22\x17$\xccc\xc3\
+\xa3\x19\xa1\xb0I\xb7i&\x01d\xddp~\x12\xd0\x92\
+H\x81s\x02\xae\x05z\xe4\x85\x00\xf0\x00\x09\x99\xbcJ\
+\xbaY\xde\x17I\xfc\x18\xe7H6\xcd\xb8FDO$\
+\xc1\xfboH\xe0\x10\x902\x8e\xffv\xa4UAT\x92\
+\xb8\xa4\xe0\xf6xH(\x82@\x93\x1a\xcd\xb4\x04\x0b\xd7\
+A\xc2\x91\xef\xe1\xfc\x8f\x89\xd9\x7f\x84y\x1ee\xea\x9e\
+\x09-\x00\xcf\x07\x84\x0c\xa4\x81Q\x96\xf4\xd9\xa0w\x1f\
+\xc9\x15\xa9\x98K\xfd\x00\x04!\xe3\xc4>\xe3\xaa\x18 \
+\x9e e&\x81\x81\x5c-r\xc3p\xab\xb0?\x8f\x85\
+\xf1\x08-\x93\xfe\xaf\xaa\x84\x94q&\xa1\xa0\x02\x86\xaf\
+o\xf6\x01>\x8f\xbfc\x1d\xb1^y\x0e/Q\x02\xf2\
+\xe5JpP\x80XL\xf3\x88}\x89\x80\x1f\x8e$~\
+\xc6_\xa5\x05V\x05&\xd6\xb1\x93\xcc\x22\xe7\xfbp \
+\x81d_`\xdd\xe3_!\x87\xad\x16Yd\x93\xe1\x86\
+\x813\x0cym\x12\x02\xdeB\x02)\xbf\xd4\xea\xe0\x9e\
+\x82\xc3\x89V\xccaM\xb5\x16lS8\xfe&`G\
+\xcf\x15\xd6-\x9b\x8d\x86\x83^$\x7fSH\x14 \x95\
+hHhr\xe0\xbf\x85z\x19\x96V&\xf3\x06A\x1e\
+\xfe\x92\xf5\xceO2\xa8\xb1\xf7> \x0f\xc6B\xa6\xa2\
+C $\xb2\xbf\xecf\x9d\xd5dN\x041\x1d=j\
+\xa6\x00\xc6H\xa0VN\xf62\xbd\xcf&\xea\xf1\xc9\xac\
+\xe7\xf8Z\xb3\x86\x0d[\x15\x99\xc9'\xcc\xd4{\x9f&\
+V\xbf\xbbY\xfa\xdc[\xcd*\xe2\xc1\x91\x01\xe6.\xa7\
+\xf1\xe9\x97M\xf6\x9c\x10\x0e\x17U\xb2D\xaftQ\x81\
+R\x807Z\xdd\xacV\xf22\xc4\xf7\x96\x06\xfa-\xb6\
+r*r\x99\x03\xfc\xe0,C\x95\xd9\xc2\xa9(\xd2\xf3\
+\xda-\xdb-\xd3-\xd3l|L \x16\x10\xbd]\xc8\
+F\xe9\xc0\x87\xa4\x88\xf1\x06\xb2\xe2=\xac\x90L\x91\xf1\
+\x94\xce\xa8W0\xd0\xd1\xc5\x91a\xc1\x11\x98R9T\
+\x86\x98D\x032\x8b\xdeZB\xcb\x80\xe4$\xfac\xcc\
+*y[\xbf\x9cYz\xfdg?\xb3\x9f\xa9\x80\xdc\xc8\
+\x14\xcfIf\xad\x17/7\x13I\xd1jj\x0d\xd9\xbd\
+\xc9T\x1b\xd2b7U\xa2\xbf\xd2\xe8I\xf3\x8f\x8a.\
+\x81\x10=\xb8\xb4\x12@\xa2\x06$\x87\x85\xfb'\xf5\xf2\
+\xaa7\x1bH\xb6'\x086\xcc]\xe2c\xfd\xc3f\xe9\
+\xb9\xdfmVI\xcf\xfa\xcd\xfaM{\xe3\xb2\xf8\x83Y\
+\xd3\xdb\xb4\x8f\xa0\xb2[\xa8R+rAO\x84\xd8\x82\
+\xdfL*\x03\x9fn\xc6Q\xb2h\xb0\xe4\xa7\xd1\xce\xad\
+\x1c<O\x02\xdb\xfe\x80d\xfb7=\x9c\xd6\xd8p@\
+\x85\x1cg\xf2\xcc\xa5\x1a\x19\x16{\x9aon*E\xd6\
+9\xfc\x81f~\xd1z\xc3\xf8[~q\x1b9\x8c/\
+i6zd#m\xfbZ\xa9\x1c\x98\xdd|r\xd8\x16\
+o2\xa6\xaa\xa4\xba\x83\x10+*8^\x1cX86\
+8~\x82|zB\x80\x83\x97\xfb!3JeS\x90\
+0\x97-\xe2`\xe0\xc0\xe5\x80\xe6{q\x8cI|\xc9\
+!nZk\x0a\xc2\x00R\xa4\xad\xc5\x91\x81cC\xc0\
+\xf9\xacW \xa6\xf6\x04\x12x^?\x5c7\x5cW!\
+j~}\xa7\x8c\x9d:vj\xe3\x80\x1cV\xd8\xee=\
+q\x86\x1e0\x95\x18\x12& \x01\xcePB\xf5f%\
+\x10\xc8h\x1f\x229\xd0\xef\x99Y\x86X\xeb\xe08\xe9\
+`\xf3\xbc\x09\xf0\xa9`\x8b,rl[=7HS\
+\xd1M\x07\xd9\x81C\x02Y(\x0e\x1d\x15\x02\xc6\x9d}\
+\xe7\xc9\xa9=}\xe9\xeeKO2\x89\x05\xd8sq\x9c\
+p\x00p\xa08\xf8!\xbf\x11\xe2\xa1[M\xfb\xd7b\
+\xde\xf3_\xce7*\x8c\xaco\xc6\x97\xf5\xcc>\xf5Y\
+\xc3\x9c\xe4\x03\xb9|\xfe\x86R\x8d8\xd7L\x08\xb6\xbf\
+4\x81\xfe/\xcd\x1an\x1c\xb5\x148\xe9\xa7*\xff\x9e\
+\xf8\xa3\x97\x96\xc4\xac\x12\x0d$xA$@\x16\xeb\xe7\
+p\x94\xef\xc2\xd1e\xfe\xd2\xfb)d\x91C\x9a\x17\x09\
+\x95\x99\xc0\x19\x81\xec\xe5\xb0\xe3\xf0\xae\xe1]\x8d\xea\x00\
+\xeb\x0dD\x00\x09L8\x08\xd05\xc7QSB\x12D\
+C\xff\x16\xb3\xea\xc0x\xc0\xc6z\xc6Q\xa3\xd2S{\
+e\x8b\xc3\xcdy\xc7u\x10X\xe1\x08G9-\xd6\x17\
+\xdc\x0b\x22\xb3s\xff\x83\xfd\x84\xbf\xe7\x95y\xf5GA\
+\xc9'\xa7\xf6\xc4\x12\x90\xf99\x88\x03\x8b\xc3\x0d\xb2\x81\
+\x82AhU\xf2y\x17Z\xa8\xa6\xc9\x99\xf1{\xae\x07\
+\x7f,\x22\x86\xf8~\xc6\x8d\xdf#\xa7E\x80\xc0\xf5<\
+-.\x98\xab\xc5\xe6N+\x0a\xf7O\x05\x90\xf1\x87\x8b\
+\x83\xc2\x8d\xb8(\x06\x10b\xd7\x8a\xcc\x8d\xebP\xeb\x81\
+' 9\x85s\x87\xeb\x88\x1c\x0f\x9c\x1b\xb5\xd2[\
+\x1c\xe4\xc1\xd5h\xca\xf8)\x11\x00\xf2\xa9#\xe0\x22\xa1\
+B\x00+\xa4\x9b\x93\xa3\xf2\xbcY?\xf1\x1c\x81\xcb\x80\
+\xf1\x8f$d\xe3A\xf6\x8f\xdf/\xe1\x01D\xf9\xbc(\
+o\xcc8\xf2y\xac7\xf6\xab\x08\x1d\xe7>x\xde\x8c\
++H\x84y\x03\xd9]\xac\x10s]\x8c+\xe4\xca<\
+\x0f\x02_>\x87\xeb\x8d$s\xb0\x9b\xb3\xbfr\x1e\x80\
+@\x8a-+$\xe2\xee\x0e\xdc\x1b$\x92\xaa\x0e{\xb9\
+^\xce+\xe6s\x9c\xe7\xa8\xa6\x10\xd0\xea\xf3\x5c\xbd\x8a\
+\xbf\x8b-\x18\x8coL\x84\xd6\x04\xc0TRR\xfeq\
+^A\xba\xc9}S8\xe0\xdc\xe1\xb9\xf1\xf71\x01\x14\
+_\xf9\x17\xe5\x07y\xae\xac\xd7(\x8b\xca:\xe4\xffk\
+\x1f\x19\x9e)\xf3\xda\xb9\x1a*\xe9\xe1\x14\xb9E\xdfw\
+\xa2\xba\x00\xe7\x03\x89\x04\xc6)\x14<\x5c\xae\x91\xff\x0f\
+r\x15\xa89\xadY\x8c\x0b\xd7O\xa1\x10\xc4\x08-p\
+ \x0f\x9f\x17)]D&\x13g\xe0\xf7\xf1\x1c\xd9'\
+\x80\xfc\x8fk\xdc\x03y\xdf\xb4D.\xe3\xc1\xfa\xe2y\
+\x90\x00`\x9c\xf1\x1f\x91\x13F\x1e<\xa8\x1a\xb8\x7f\x83\
+_|@\xb6\x9a\x18\x8e\xfbPx\xae\xde\x82\xc8\xbc\xc7\
+Oe}\xc0\x95\x81\x7fF\x81i=\xb5\xd4\xf0\xfd\xfb\
+e\xb3\x16\xdf\x82\x148\xb7\x14\xee\x883(x\xb9\xdc\
+\x22\xad\xc6\xfc\x7f\xb5\x1a\x8f\xddR\xe6\xf5\x04\xf2^@\
+\x92\xe8]\xf6\x8d\x8d\xc0/\x85\x9d\xdd\xb2\xcdF\x12e\
+\xdc\xd8\x88ff\x90O\x85\xb4\xdbv\xbfL\xe3\xd8/\
+\x9es.\x95\xdd\x13\xa86\xbd\xa7\xf6\xff\x17\xab\xbd\xf5\
+Y\x8e\xeb\xc8Z\x89\xe960\xab\x15B\xc8-\xc8\x5c\
+\x0fk\x9a\x894!9\x90\xa3C\xcd\x1aN\x01!\x03\
+\xfaO\x995\xe4HGf\xab\xbd\xc8r\xc8\xfa;\x93\
+\xdd\xa1\xc069|\x93\xcb$K\xe3\xd5\x1fn\xa6\x84\
+\xc7\x8b\x9a\x07*\xf2$\xdfP\xa88\x9b\x83\xf4\x16\xf5\
+*\xefP\x03_d\x8fL\xcd<\xf7P\xa3S\xab\xeb\
+\xe9?i\x96\xae\xfb\x0bfMe\x1e29X\xc6\xbf\
+R\x1cz\xaf\x18\x1dn\xd6d\xacXh\x22\xf1C\xf6\
+\xb1\xa9\xb8\x16v\xe8\x1fI\xe7\x98\x00?f\xe8\xf9=\
+\x89\x22*\xb5\xea\x85\xcd\x10mK`,j&$\xc5\
+ZM\xe5T\x19\xe5\xfe<\xb3\xf4z\x99Yz}i\
+\xbfR\xbfR&\x87\xdc?\x07\xac\xea)\xcc\xf3\xf2\xf7\
+5\x91\x90'\xf8)5\xa1\xe4=\xce\xdc\xbfd\xaf\xfc\
+@ p P\xa5e\x81\x8a\x00\x1b\xf9\xbfr\xd7c\
+\x9d\xc7\xfc\x1d\x07\x1f\x89\x16zu\xf73k\x02\xae{\
+r\x0e\xbb\xf6D\x1f\x98k\xd0\x9e9e>\xa5\x80\xb8\
+\xb0\xe0\xabB\xd2\x1df\xd6\x90\xe2hcGu#\xcf\
+\xa2f\xa3f~\x0c\x0b\x98U\x04I\x7f\xadY\xd3\x22\
+a-\x06\xeb\xd7\x04Z\xa6\x80\xbc\xb0\xb6\xb6L\xe9\xcd\
+\x9f\xd5\x04\xa8l\x5c6\x1b\xde\xa1\xde\xe0ckB\xcf\
+\xf5\x9d\x09\xf0\x0d\xf2{\x80\x90\x14\xeb4\xf3\xcd\xc2\xc2\
+\x95K\xa2,\x8f\xdfJc+\x19R\xa7\xdb8\xd9\xeb\
+\x9b\xf7-\x9a\xbb\xbe\xca\xfaY @\x99\xe7\x9fBR\
+T6v\x1cc\x02\xec\xdffe\xea\xea@\xd2c\x05\
+\x84Y\x89\x12H5\xfd\xff\x9f%v\xe7\xd8{\xce\xfd\
+\xf7\x0e\x15,\x8e\xa8\x02j\x0f\x04\xc4\xd2\xda}\xc4\xac\
+\xe1B\xb8\xa4T\xf0\xbbu\x05}\xa4%\x81y\xca\xe7\
+\xe2\xa8ANF/\xe0\xaa\x82\xaeo\xa3}\x84\x0c\xfc\
+\xa9\xaa\xf8GY!\xf6\xafPQH\xdb}\xa9\xcc\x81\
+|\xb9\xae$\x18\xbaET\x09\x82\xa4\xc9u\xa4\x0b\xe2\
+f\xecaANq\xb0p\x84p\x10'\x83\xfc\x15\xfb\
+^\x95m+\x8e\x1cH\x11\x02F\x12t:o\xba\xf9\
+u_\x1f\x95\x1a\x81\xc8\x14\xbb\x9b\xcc\xf2s*\xeb\x08\
+\xb6_\xf6S\x10a\x5c7\xf3V\x081\x97I\x84\x94\
+\x8c\x04\x84\xc8\x02\xe1B\xe9^T\xc8\xc0\x5c\x9e\x8a\xf5\
+w\x8e\xd4'\x80\xfas\xbe\x91\xe8\x14\xe9\xac\x07\x0c\xea\
+\xf9\xebN3\xab\xdc,@\xf9\x9c\xdb\x05\xf2L!O\
+<C\x0fT\x1eH \x956\xd4Zv5kZC\
+\x08$Y\x07Q\xd7\x18\xc7\xef\xb1\xa9j\x09\xfe\xfcE\
+\x82\xe6\xac\xd3$>Xg\xec\x8b\x1b\x15\xd2K*9\
+N\xc6\xaa\x04w\xf7~\xb3\xc6q\xc4\xb1\x01\x82\xf8\x81\
+\x92\x98\xed\x8e\xb3T|\x95\x19\xcd\x1c<\xeb6\x0e.\
+\xfb1\x88)*\xda\x9cWT\x9cx\xdf\x12r\xb8b\
+\xc0\x82\x83\x1fu\x9d\xf9y\x8e\xfb+S\xc9\xba\x22\xab\
+6\xf7\x11\x10G\x9e\xb8\x02\xa2M+\x0e\xfa\xec\xf4\xae\
+\xe2\x98>\x1e8J\xe8qGf\x95\x80.\xf6\xfc\xb2\
+?D\xb6p\x1cV\xd67\xf3\xf6\x1e!;\xf8\x1c\xae\
+\x93\x80\x93u\xa2y\xef\xebSdm\xae\xae\x22r\x5c\
+?\xa7\xf5|P\xe5q\x15\x1a\x90q\xeaI\x1d\xbbV\
+H\x09\xf6M\xceS\x1cwT1.\x16\xb2\x00R0\
+9\xd2^\x99\xe6|C\x8f\x9c\xe7\x16+\xea|\xcfo\
+uN^\x1cX\xc9q\xfci\xad\xbbY\xcfi\xed \
+[\xcc\xf8\x13 _\xa7\x04\x91\x12\x8ei\xd6-\xd1-\
+\xd1\x04\x1e\x9c\x03\x11\xb9\xc1}\x12\x08D\xb2\xb9 \x03\
+\xea\xeb\x8c\x843\xf7\xc9\xf9E \xc1}\xb2\xff\xf2\xf9\
+\xb1\xd2\xcd\xbc\xe1\xef\xd9\x87+{\xfa\xd4\xfd\x99\xbf\x8f\
+\x88\x93\xa7\x82\xccf$\xb3\xe4\xef#\x1b\xbc\xf6q\xff\
+\x99u\x83\xfc4\xd7\xc7\xf9\xc6\xba\x8d\x81\x7f@\xb88\
+\xb7\x12\xfb\x13\xf1\x02\xfb?\xfe]\xe5H@\x8da\xea\
+}\x05d\x83\xff\x9e\xf7\xf3<Xo\xa8\x13\x04\x96~\
+\x7f~\x5c/\xf7\x1be\xe3x~\x119\xf2\xbc\xf7\xa6\
+\x97\xf1c\x9c\xb9\xef\xb9\xads*\xec\xfc\xfe\xaf\x1a\xc7\
+\xa7\xbd\xa2?\x15\xda\xce\xfe\xc3\xfb\xf9\xf9\xf9\xa9\xbd\xf1\
+\xd3\xceO\xfc9\x0a\x86 \x11\xe1\x0e\x98\x13\x10\xbd|\
+.\x9f\x03\xe4~b*\x89\xde\x80\xcc \x01=\xf3\x83\
+\xfb\xa6\xc0\x02\xf7\x11\xf3|\xe9R\xe8\xecVR\x1c\x1a\
+\x9f+\xdf\x1bZ{\xa6%\x8eQ+\xc1\x8f\x87+\x83\
+}\xee1o\x95(\xe3\x80\xffN\xe5\x9f\x96\xaeYf\
+\x0d\x97\xd1\xf6\x8a\xbf\x18W\x0a9jI\x06\xd1\xe7\x85\
+k\xc8(YW\xb4\xe0\xe1'I\xa6\xd8\xc7\x9b\xfdI\
+\xeaA\x8e@`|P\xd9X\xbf\xb4\x12\xb3O\xe7\x96\
+\xfb7\xd4Dw&\xd3?8\xb7\xaa\x16D\xc2\xab\x85\
+x\x1e\x95\xf1\x9cpG\x99\x0d\x93\xde#\x05\xdcSt\
+f'\xf5\xf3\x84\x1c\xf4\x05\x1bG\xfd\xf1\xd0\x83D\xa6\
+\x97\x81\xd7\xfb\x1c2\x0e\x99\x13\x13\xc1n\xff5\x0dr\
+\xc0\xea^\xa75\x0fJ\xc8\x00w\x9c\x04\xa9\x87\xa5}\
+\xf8_\xb3\x0ai\xb70\xd2\x02\xfc\x5cq\xe9k\xc0\xe0\
+\x10W\xa0\xb4\xea\xad\xf6\x0dY\x0f\xa2\xff\x9aY\x1a\xa7\
+\xd7\x995\xac\xc8\x06A_\xa0\xca\xcayO\x1a\x07\x1a\
+\xf2~O\x99)q\xb0B\xd3\xb3\x8c\xa3j\x90\xfb\x8f\
+4\xf7\xab\xca\x19H\x8a\xacZpT\xd3\xfb\x0bt\x11\
+\xddrz\x8cq\x9c.\x15\x09\x8b\x10\x12v\xdc\xe5\x03\
+\x8f\xebba\xaf%\xa8<\x1b\x04\x1b\x16\x073\x1bV\
+ \x8frH1\x95Ue\xa2\x9c\xf4q\xe9\x22w\xe7\
+\x10g\x16\x16$Y\xf4\x0cJ\xb6\x82\x8d\xad\xff\xa1Y\
+Z\xa7[L\xbeq\xb2\xf4*\x17\x1du\x1c\xc5\x9bs\
+\xed\xb2\x92\x9c\xc1\xeaO\x82\x01\x04\x03\xd0\xe3oe+\
+\xd0\xb3\xab\xc4\xd2\xbfe\x93\xd0\xaa\xb21SI\xc0p\
+ \xa8x\x08j\xec\x8e\xae6\x9cL\x12\xf8\x19\xad\x97\
+\xab\x9b\xc0\x95\x03M\x1c\x0e\x90g\xf6'&3$\xca\
+\xcf\x93\xfd\x22\x0d\xef1f\xb5\x22\x87\xcc!\x090\x90\
+8 \x01 \xeb\xeb\xcf5\xabrq\x04\xe2N\xbag\
+\xa2b\x9b4\xac\xf5\x90z\x85\x8cp\x96\xd3yNj\
+\x12\xf3\xbf\x00\x9b\xab\xa53^\xd5\x04\xb4\xa8\x84\xd8\xb6\
+}\x8b*\xa4W5\xfa\xc4\x0a\xa4s\x22k\x83\x06\xd9\
+c\xaf3U1X\xf3\x05\xf4a!m|$\xbb\xc8\
+e\x1f\xa0\xe2\xf1\xb0^\x1fi\x02\x99X\x01c\xc3\xb5\
+\x84\xc8\xe5\xb9\x87+\x99H\x14\xafn\x02O*\xad\x1c\
+\x18Tx9\xd0\xf8\x5c\x1cg\x02\x00\x0e\x12\xe6\x85\xfe\
+\xbfg\x8a\xdfc\x96~>\xa5p\x03@\xaa\xe2\xd0\xc7\
+\xf3\x0b\xd7\x87\x1f\x5c\x17h\xbf\x8b\x81\x16\xfb\xab\x0e\x06\
+G\x16l/\x92R\xf6=d\x1c\xe7QB\x81\xca\xc8\
+\xef\x94\xa8\xd2~\xe6\xfb\x9a2\xf0\xcc/\xef\xe9\x07\xca\
+N\xc0\x00D\x1f\x088\x81\x22P6\x1c\x16\x12\x09\x90\
+\x0c\xea\xfe=\xc0\xbcU\xbf\x7f\xa5\xf6\x1d8\x19Hh\
+\x89\x1c-\xddc\xe9\xe5_]\xec\xf4\xeb\x15\xe4\x87C\
+\x06\xa5\xe2\xe2,\xff8\xd8\xccO\xf4\xbbIx\xd0S\
+L\xe6\xbcV.K\x05\x17\xc7\x8d\xcc\xbf\xc6\xdd\xf7\x0d\
+\xd8\xb9\xa9\x0cS\x11\xe0\x1c\x5c\xdb\xac\x81\xbcC2F\
+\x80uD\xe1J\x19\x0e*\x08&\x10I\xbeo\x9f`\
+\xd6\x90X\x1e_\xc8W\x81\xfc\xf9x\xdeiV!|\
+\xdd7\xcc\xd2\xfb>SX{\xbd\x22\x86\xcc\x11\xfa\xec\
+\x91u|\x96\x93\x83M\xed\x81\x04i\x80\x03\xcd|\x8f\
+\xb2fQ\xef\x9a\xfd\x91\xcaG\xe4T\x90\xa3?\x9cY\
+*\x0c\xdd\x09%\xe0GM\xc1\x11XT\xa2q\x8cA\
+bp\xfe\xe3\x80\xaa\x97\x96\xeb\xf4y\xa3}\xca\xc2\xb2\
+n\x09q\xc9\xbc\x10\x0b\xff\xa4\x93O\x11\xb0\x94\xfb\xe0\
+\xfbq\xd8\x9e\xf6\xbf+\xe3\xc6}\xd1*G\xc0\xbe\xae\
+\x12\xee\x04\x22\xf1\xfc\x00\xb9\xd2\x07\xb2*t\xb49w\
+\x1e\x95C\x17\x137\x91\x9b \x92\xf9\x05}o\xd7\xa3\
+\x8f\x15\xc9']\x17\xbe\xack\xe6=~\x0d\x81\x0b\xa4\
+\x8b\x7f\xd3\xb9\x00\xe2O\x883G\xe4\xf0\xf7\x92ev\
+d&~\xc0\x05\xda\x8fh\xf9\x0a\xd0o_\xb7\x14\x0a\
+x\xde\xf8\x19\xc8rB\x1eGO6\xfb\xd1s\xa1\xb5\
+\x83y\xce\xf70\xcf\xab\xdc\x1f\xd0\xe2\xf2\xfeJ.\x9a\
+\x91})\x0c)r\x8b\x90uEU\x86g\x9d\xfd\xbe\
+8\xfc\x97\x0dW\x18\xf2\xd0\x91*Q'\x5c\x8ex.\
+\x8c-\xd3<g\x9e_H8yEN\xcf\x95\x02\x80\
+\xfbuT\xb8\x85H\xf5\x049\x01hl\x15\xe1\xbe\x99\
+\xff|o\x85\xf8\x97\xeb\x8ej\x02\xfc}T\x8d`|\
+#\xf2\x00\xff\x9d\x1em\xae\x87\xf1\x0f\x81\xb0\x07r\x90\
+\x1d\x1e\xd4\x1d\xd8\x1d\xd8\x5cgT\xd5`\x1e\xde!\x92\
+]\x91\x87{\xcb\x12\x01\x13\x09;\x9e\x17\xdf\xcb\xcf\xb1\
+E\x83\xfb\x8b\xb2\x7f\x04\xa2\x91\x04\xf1\x99\xb0\x0f\xc4\x0a\
+=\x09K\x02\xf5\xb1\xa9\xb2\xa4\xd3\x02\x7f^\xb9N\x9e\
+O\x95\xcd\x9b\xdaRU\x91lE\x8dK\xa4\xa6~\xce\
+\xc4\xf5>\xcb\x11>\xe5s\xb9\x7f\xf6\xb5\x7f\x86\xc4\x02\
+-\x00cz\x1f\xad5\xec\x0b\x0bi<\xf8GB\x83\
+u\xc1\xe70>\x8b\x065\x0a\xc6+\xca\xe6\xe1\xbf\xf1\
+\xefiO4\x95\xfdj\xa1\xa0F\xc1x\x8e\xa9\xa7|\
+\xb6\xfc\x10\xbe\x07\xff,r,\xf0\xbc#g\x01\x9fG\
+kV$\x1f\x5c\xde\xe3\x9e\xb2.\xe6\xf6\x8fq\x10\xa2\
+\xb4\xbb\xc1\xaci\x95D\xdd\x8d\x16m\x02\x7f\x9e\x1b\x05\
++\xe2Y!l\xbc\x10%\xd2q'\xf9C\xb5\x0d\x99\
+x\x9d{\xdd\xdf\xbb\xfb\xbb\xfb+\x12s\xb4\xebh\x97\
+\x91q\xef-!\x0e\xaf\x8d\xa5\x1a\xf0\x22\xb3\xf4\xff/\
+5k\xc8y\xaf*\xfb+-\xf4\x13\x0e\xbd\x9f/w\
+[\x14G\xe0\xbf\x954+os3\x9a\x05D\x85?\
+B\x8d\xa8\x94\xf03\x90\x06Ao3+\xee\x82\x95\x9d\
+<C\xf2\xd7T`t^\x03\x0d\xdc'\x83\xa2+\x04\
+\x09\x96_\xb8\x07\x04\xbd\x00\xf2\x0f\x14\x91\x8al\x864\
+/\xd9@\xb5-\x902\xd2\xa5\xd9f\xe9\xf5\x0b\xc9\xbe\
+(\xd9\x9bM\xc4:\xbeB\x85\xba:\xb9\x1c\x19\x95\x9f\
+$;=\x0d\xe4{\xcd\x1a\x16t\x10\x0b\xf4\x8a\xfe\xac\
+\xf4\xdew\xf7\x98\xa5\xf7oiV+\x8f@$GW\
+'\xb3\x07\xf0\xdbdW\xd6q\xccd:\xc9A\xb00\
+\xda\x02i'k\x83\x95\xfd\x22!\x1c\x80x\x8bC\xc0\
+\xa1\x98\x90F\xc0\x0a)\xf9C\x1f\x97\x8b\x0a)\xe3p\
+\xad2\xdd\xaad{ \x82\x0c\xa0d\xc2\xba5\x940\
+\xd8Org\xef\x95\xac\xa0H\x0c\xbd\xa5\x82\x80S\xba\
+\xc1^i}k!\x9f\xf0\x0a\xf7\x0f\x8a\xfe\xfc\xb0\x90\
+Ye\xbb\xef\xf75K\xafO\xf4\x8f\xf7&\x9f\xf8T\
+\xb2YM\xaf\xb7Z\x00\xf2\xd3Y\xa3\xcaO\xf6\x7f4\
+\xab\x95\x09\xef\xddg\xa1q \xeb:\x5c\xf6\x91\x0d\x09\
+G\x83\x8c/\xd0A\xe4\xdd\x084a7\x87\x0bc\xa1\
+\xdc\x9dX\x0f&s\xff\x93\xa3\xde\x7f/\xd9\xf7\x9b\x04\
+\x10r\x1c\x22'\xeb\xee2\xab\x95\xb5LB\xf9\xe5F\
+\x8f\xf9\xcff\x0d\xa7\x85\xd5\x0f\xbf\xa6\xcc\xf9\x1d\x92\x0b\
+I\xebqX,\xd9\xa2\x0d\xf9\x928\x0c2'\xc2\xbe\
+M\xc0\xc8F\xd4\x92A\xceT\x86\xf3\xe6\x06\xe2\xb5L\
+\xae\x8dVH+\x09\xbd\x1b\xb3\x00T9\xb8[2*\
+\xee\x7f\xe1,\x80T+\xea\x06\xb1\xbd\xae\xe9e\x1ee\
+\x97\xac:\x80\x11r\x1be\x97p\x189h9\x10\xc9\
+\xc0\xd2\x92\x82\x0c%\xcf\x07\xf27*\xbdV_=s\
+\xca\xc6^\x0e\x16\x0e\x0e\x0e*\xee\x07\x12C Z\xf4\
+<F\xd6a\x1c\x099\xbc\xce\xca\xffQ\xb3\x9a\x08\xf0\
+\xd6\x1b\x1cM \x82\xfc=\xf7\xc9\xfe\xc1\x01\x05\x07\x00\
+\x99f\x91\xca9\xe4\xee2\x05\x5c8\x10\x1f\x17\xdb>\
+\xe4~\x82\x8a{\xc5\x8e\xf9\xad\x03\xcbI\x01!\x0d\xfd\
+NwTwT\x93\xe8BnN\xf3\xd3\xdc\xdf\xbc\xee\
+\xa8\x04\x93\x08#3.\xf5\x04w,\x09P\xe0p!\
+\xe0\x0e,\xc0>?\xb8\x7f\x91\xe5\xf9\xbc\xa0B\x1e\x13\
+\xc8\xa17\xd6\x1d6\xd6\xa7'\x22\xca8v\xcb\xea\xf9\
+\xe1H\xc3!\xb3\x9a\xe6\x1b\xad\x058\x0e\x91\x94\x91^\
+Q\x1cJ\x9e\x0f\xd0|\xae\xe7Q}\x0f\xf7C\xe6\x9e\
+\x1eC\x9e\xbbT\x0b<\xb1\x87#\xa5\x046\xfbw7\
+\x9fYz=\xdb\xac\x22#\xc6N\xccV\x03\xcd\xf1\xe0\
+\x003/\xd8\x97\xa8\xd4D\x96\xe8\xc7\x83\x5c\x18\x8e(\
+\x7f\x8f\x03G\xe0r\x9bZ_\x90!\xa4\x95\xe6\xaf\x22\
+\x8d#\x11qEI\xb8\xd1\x92\xe4\x89v>\xff\xc0B\
+N\x0b$\xd4\x13<\xe8\x87\x03)e}\xe0P\xc7\x04\
+&\x15%T[\x90uc\xfe\x90\x00\x88dS1\xa0\
+\x0c\xec\xdaN\xceI\x85\x8a\xf9p\xaf\x1cp\xe4Q\xb9\
+N*\xdb\xa8\xff\x18\xb2i\xe3\x17\x90\xaf[\xdau\xdb\
+\x0b\x12@\x89;'w\x8b\x15\xe0JN\x88.v\xe1\
+P\xa1\x85\x8f}3\xb0\xcc;w\x01\xaf<g\xee\x83\
+\xfdo\x99\x90x\x01Q\xc2\xcf\xac\x13>\x17D\x8a\xa9\
+9\x9d\xd3p\xb8(\x11\xe7\xcf\x83\xe7\x0cd\x96\xe7\xc2\
+\xf7\xd5D@\xa9\xd8\xb1\xbeY\x9f1\xe0\xa8\xbd\xc9\xe5\
+\xb9\xf2\xfb\xb8\x7f\xf7A~\x8c\x9fW\xd4}\x10\xf0-\
+V\xb8m\x08P\xbd@\x12+\x99\xac\xff\xe9\x81ty\
+\x9e\xb0\xce\xeb\xba\xfd\xbc\xc6\xdf\xe0\x9c\xab\xac\xf3\xe5\xba\
+\xa8,\xa2\xf6\xa2D\xab#8a\xd3\xe7\xf3\x90O\x5c\
+\xd6\xac\xb9\x9e\xf1\x10\xa8\x00\xe5\xfeo`]'a\x11\
+_\xf9{\xae3\xec\x1f\x03\xf3\xc0\x0a\x05\xff\xa9~\xa0\
+\x93?\xc3\xc5\x22\xff\xcd\x11\xa4@\xd2\xe1v\xe2\xfd\xc7\
+\xa8\x00D\x85\x93\x00\xf0>\x91\xdc\xd2c\xcf\xbeE\xa2\
+\xed\x81\xc0R\xcf|t\x1d\xe8\xf0\x1a\x03\xfe\xf83\xaf\
+\xeco\xb1\xd50\x92\xe9\xc5\x96\x84H\xdeGbq\xde\
+\x90\x18b\xdf\x8d\x88\x8d\x98\x00\xe0\xfcb_\xa3\x95\x8f\
+\xef\xc1\x8f\xe5\xe7\x08\xb5\xe7\xfa \xcb\x9b7\x90\xdd=\
+\xec\x89\x9c\xf2>\xbe\x8f\xf5\xc0z\x82\xbb\x01\xd06\xfb\
+ \x9c\x0c114\xcb\xc9-\xcb\xfe\x0cgR\xec\xbd\
+\xe7\x1f\xb2\x93\xffu\x8e\x95\xf2\x1c#\x19\x1f\xeb\xb7\xca\
+8\xe6\xef\xf5\xd6K\xce}\xd4\xca$\xbf=M\x9d\x84\
+\xc2\x152\x80 \xae\xb8o\xc6\x95\xf1\x80\x03\x8cx\x95\
+D\x17\xdcN\xbcr^\xae-$\xb0\x0a\x17\xd3HZ\
+\xa3\xca\x01\xfb/~%\xfb&~\x9a\xc8\xc8\xbdE\x8d\
+\xd6\x02H\x8f)(H\x0d\x0e?\x8c\x04@\xb7\xa2\xc8\
+\x0b\xa5&\xd0\xdfb\x96\xcf\xa5\x8c8uYz\x0a\x88\
+\xb4|i}\xfc?\xc4FS\xb5f\x9b\xe1I\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x03\
+\x00\x00x<\
+\x00q\
+\x00m\x00l\
+\x00\x11\
+\x05\xba\xd1Y\
+\x00q\
+\x00m\x00l\x00s\x00u\x00r\x00f\x00a\x00c\x00e\x00g\x00a\x00l\x00l\x00e\x00r\x00y\
+\
+\x00\x0d\
+\x0e\xfc\xe9\x87\
+\x00h\
+\x00e\x00i\x00g\x00h\x00t\x00m\x00a\x00p\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x0c\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x004\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x86\xe4\xfa\x81v\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/datavisualization/surface/doc/surface.rst b/examples/datavisualization/surface/doc/surface.rst
new file mode 100644
index 000000000..65674bf91
--- /dev/null
+++ b/examples/datavisualization/surface/doc/surface.rst
@@ -0,0 +1,23 @@
+Surface Example
+===============
+
+Using Q3DSurface in a widget application.
+
+The surface example shows how to make a simple 3D surface graph using
+Q3DSurface and combining the use of widgets for adjusting several adjustable
+qualities. This example demonstrates the following features:
+
+* How to set up a basic QSurfaceDataProxy and set data for it.
+* How to use QHeightMapSurfaceDataProxy for showing 3D height maps.
+* Three different selection modes for studying the graph.
+* Axis range usage for displaying selected portions of the graph.
+* Changing theme.
+* How to set a custom surface gradient.
+
+For instructions about how to interact with the graph, see `this page`_.
+
+.. image:: surface_mountain.png
+ :width: 400
+ :alt: Surface Example Screenshot
+
+.. _`this page`: https://doc.qt.io/qt-6/qtdatavisualization-interacting-with-data.html
diff --git a/examples/datavisualization/surface/doc/surface_mountain.png b/examples/datavisualization/surface/doc/surface_mountain.png
new file mode 100644
index 000000000..ba9652394
--- /dev/null
+++ b/examples/datavisualization/surface/doc/surface_mountain.png
Binary files differ
diff --git a/examples/datavisualization/surface/main.py b/examples/datavisualization/surface/main.py
new file mode 100644
index 000000000..f43970184
--- /dev/null
+++ b/examples/datavisualization/surface/main.py
@@ -0,0 +1,189 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QSize, Qt
+from PySide6.QtDataVisualization import Q3DSurface
+from PySide6.QtGui import QBrush, QIcon, QLinearGradient, QPainter, QPixmap
+from PySide6.QtWidgets import (QApplication, QComboBox, QGroupBox, QHBoxLayout,
+ QLabel, QMessageBox, QPushButton, QRadioButton,
+ QSizePolicy, QSlider, QVBoxLayout, QWidget)
+
+from surfacegraph import SurfaceGraph
+
+THEMES = ["Qt", "Primary Colors", "Digia", "Stone Moss", "Army Blue", "Retro",
+ "Ebony", "Isabelle"]
+
+
+class Window(QWidget):
+ def __init__(self, graph, parent=None):
+ super().__init__(parent)
+ self._graph = graph
+ self._container = QWidget.createWindowContainer(self._graph, self,
+ Qt.Widget)
+
+ screen_size = self._graph.screen().size()
+ self._container.setMinimumSize(QSize(screen_size.width() / 2,
+ screen_size.height() / 1.6))
+ self._container.setMaximumSize(screen_size)
+ self._container.setSizePolicy(QSizePolicy.Expanding,
+ QSizePolicy.Expanding)
+ self._container.setFocusPolicy(Qt.StrongFocus)
+
+ h_layout = QHBoxLayout(self)
+ v_layout = QVBoxLayout()
+ h_layout.addWidget(self._container, 1)
+ h_layout.addLayout(v_layout)
+ v_layout.setAlignment(Qt.AlignTop)
+
+ model_group_box = QGroupBox("Model")
+
+ sqrt_sin_model_rb = QRadioButton(self)
+ sqrt_sin_model_rb.setText("Sqrt& Sin")
+ sqrt_sin_model_rb.setChecked(False)
+
+ height_map_model_rb = QRadioButton(self)
+ height_map_model_rb.setText("Height Map")
+ height_map_model_rb.setChecked(False)
+
+ model_vbox = QVBoxLayout()
+ model_vbox.addWidget(sqrt_sin_model_rb)
+ model_vbox.addWidget(height_map_model_rb)
+ model_group_box.setLayout(model_vbox)
+
+ selection_group_box = QGroupBox("Selection Mode")
+
+ mode_none_rb = QRadioButton(self)
+ mode_none_rb.setText("No selection")
+ mode_none_rb.setChecked(False)
+
+ mode_item_rb = QRadioButton(self)
+ mode_item_rb.setText("Item")
+ mode_item_rb.setChecked(False)
+
+ mode_slice_row_rb = QRadioButton(self)
+ mode_slice_row_rb.setText("Row Slice")
+ mode_slice_row_rb.setChecked(False)
+
+ mode_slice_column_rb = QRadioButton(self)
+ mode_slice_column_rb.setText("Column Slice")
+ mode_slice_column_rb.setChecked(False)
+
+ selection_vbox = QVBoxLayout()
+ selection_vbox.addWidget(mode_none_rb)
+ selection_vbox.addWidget(mode_item_rb)
+ selection_vbox.addWidget(mode_slice_row_rb)
+ selection_vbox.addWidget(mode_slice_column_rb)
+ selection_group_box.setLayout(selection_vbox)
+
+ axis_min_slider_x = QSlider(Qt.Horizontal, self)
+ axis_min_slider_x.setMinimum(0)
+ axis_min_slider_x.setTickInterval(1)
+ axis_min_slider_x.setEnabled(True)
+ axis_max_slider_x = QSlider(Qt.Horizontal, self)
+ axis_max_slider_x.setMinimum(1)
+ axis_max_slider_x.setTickInterval(1)
+ axis_max_slider_x.setEnabled(True)
+ axis_min_slider_z = QSlider(Qt.Horizontal, self)
+ axis_min_slider_z.setMinimum(0)
+ axis_min_slider_z.setTickInterval(1)
+ axis_min_slider_z.setEnabled(True)
+ axis_max_slider_z = QSlider(Qt.Horizontal, self)
+ axis_max_slider_z.setMinimum(1)
+ axis_max_slider_z.setTickInterval(1)
+ axis_max_slider_z.setEnabled(True)
+
+ theme_list = QComboBox(self)
+ theme_list.addItems(THEMES)
+
+ color_group_box = QGroupBox("Custom gradient")
+
+ gr_bto_y = QLinearGradient(0, 0, 1, 100)
+ gr_bto_y.setColorAt(1.0, Qt.black)
+ gr_bto_y.setColorAt(0.67, Qt.blue)
+ gr_bto_y.setColorAt(0.33, Qt.red)
+ gr_bto_y.setColorAt(0.0, Qt.yellow)
+
+ pm = QPixmap(24, 100)
+ pmp = QPainter(pm)
+ pmp.setBrush(QBrush(gr_bto_y))
+ pmp.setPen(Qt.NoPen)
+ pmp.drawRect(0, 0, 24, 100)
+ pmp.end()
+
+ gradient_bto_ypb = QPushButton(self)
+ gradient_bto_ypb.setIcon(QIcon(pm))
+ gradient_bto_ypb.setIconSize(QSize(24, 100))
+
+ gr_gto_r = QLinearGradient(0, 0, 1, 100)
+ gr_gto_r.setColorAt(1.0, Qt.darkGreen)
+ gr_gto_r.setColorAt(0.5, Qt.yellow)
+ gr_gto_r.setColorAt(0.2, Qt.red)
+ gr_gto_r.setColorAt(0.0, Qt.darkRed)
+ pmp.begin(pm)
+ pmp.setBrush(QBrush(gr_gto_r))
+ pmp.drawRect(0, 0, 24, 100)
+ pmp.end()
+
+ gradient_gto_rpb = QPushButton(self)
+ gradient_gto_rpb.setIcon(QIcon(pm))
+ gradient_gto_rpb.setIconSize(QSize(24, 100))
+
+ color_hbox = QHBoxLayout()
+ color_hbox.addWidget(gradient_bto_ypb)
+ color_hbox.addWidget(gradient_gto_rpb)
+ color_group_box.setLayout(color_hbox)
+
+ v_layout.addWidget(model_group_box)
+ v_layout.addWidget(selection_group_box)
+ v_layout.addWidget(QLabel("Column range"))
+ v_layout.addWidget(axis_min_slider_x)
+ v_layout.addWidget(axis_max_slider_x)
+ v_layout.addWidget(QLabel("Row range"))
+ v_layout.addWidget(axis_min_slider_z)
+ v_layout.addWidget(axis_max_slider_z)
+ v_layout.addWidget(QLabel("Theme"))
+ v_layout.addWidget(theme_list)
+ v_layout.addWidget(color_group_box)
+
+ self._modifier = SurfaceGraph(self._graph)
+
+ height_map_model_rb.toggled.connect(self._modifier.enable_height_map_model)
+ sqrt_sin_model_rb.toggled.connect(self._modifier.enable_sqrt_sin_model)
+ mode_none_rb.toggled.connect(self._modifier.toggle_mode_none)
+ mode_item_rb.toggled.connect(self._modifier.toggle_mode_item)
+ mode_slice_row_rb.toggled.connect(self._modifier.toggle_mode_slice_row)
+ mode_slice_column_rb.toggled.connect(self._modifier.toggle_mode_slice_column)
+ axis_min_slider_x.valueChanged.connect(self._modifier.adjust_xmin)
+ axis_max_slider_x.valueChanged.connect(self._modifier.adjust_xmax)
+ axis_min_slider_z.valueChanged.connect(self._modifier.adjust_zmin)
+ axis_max_slider_z.valueChanged.connect(self._modifier.adjust_zmax)
+ theme_list.currentIndexChanged[int].connect(self._modifier.change_theme)
+ gradient_bto_ypb.pressed.connect(self._modifier.set_black_to_yellow_gradient)
+ gradient_gto_rpb.pressed.connect(self._modifier.set_green_to_red_gradient)
+
+ self._modifier.set_axis_min_slider_x(axis_min_slider_x)
+ self._modifier.set_axis_max_slider_x(axis_max_slider_x)
+ self._modifier.set_axis_min_slider_z(axis_min_slider_z)
+ self._modifier.set_axis_max_slider_z(axis_max_slider_z)
+
+ sqrt_sin_model_rb.setChecked(True)
+ mode_item_rb.setChecked(True)
+ theme_list.setCurrentIndex(2)
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ graph = Q3DSurface()
+ if not graph.hasContext():
+ msg_box = QMessageBox()
+ msg_box.setText("Couldn't initialize the OpenGL context.")
+ msg_box.exec()
+ sys.exit(-1)
+
+ window = Window(graph)
+ window.setWindowTitle("Surface example")
+ window.show()
+
+ sys.exit(app.exec())
diff --git a/examples/datavisualization/surface/mountain.png b/examples/datavisualization/surface/mountain.png
new file mode 100644
index 000000000..9138c710a
--- /dev/null
+++ b/examples/datavisualization/surface/mountain.png
Binary files differ
diff --git a/examples/datavisualization/surface/surface.pyproject b/examples/datavisualization/surface/surface.pyproject
new file mode 100644
index 000000000..598a6541f
--- /dev/null
+++ b/examples/datavisualization/surface/surface.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py",
+ "surfacegraph.py"]
+}
diff --git a/examples/datavisualization/surface/surfacegraph.py b/examples/datavisualization/surface/surfacegraph.py
new file mode 100644
index 000000000..69eea716c
--- /dev/null
+++ b/examples/datavisualization/surface/surfacegraph.py
@@ -0,0 +1,253 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import math
+from pathlib import Path
+
+from PySide6.QtCore import QObject, Qt, Slot
+from PySide6.QtDataVisualization import (Q3DTheme, QAbstract3DGraph,
+ QHeightMapSurfaceDataProxy,
+ QSurface3DSeries, QSurfaceDataItem,
+ QSurfaceDataProxy, QValue3DAxis)
+from PySide6.QtGui import QImage, QLinearGradient, QVector3D
+from PySide6.QtWidgets import QSlider
+
+SAMPLE_COUNT_X = 50
+SAMPLE_COUNT_Z = 50
+HEIGHT_MAP_GRID_STEP_X = 6
+HEIGHT_MAP_GRID_STEP_Z = 6
+SAMPLE_MIN = -8.0
+SAMPLE_MAX = 8.0
+
+
+class SurfaceGraph(QObject):
+ def __init__(self, surface, parent=None):
+ super().__init__(parent)
+
+ self._graph = surface
+ self._graph.setAxisX(QValue3DAxis())
+ self._graph.setAxisY(QValue3DAxis())
+ self._graph.setAxisZ(QValue3DAxis())
+
+ self._sqrtSinProxy = QSurfaceDataProxy()
+ self._sqrtSinSeries = QSurface3DSeries(self._sqrtSinProxy)
+ self.fill_sqrt_sin_proxy()
+
+ image_file = Path(__file__).parent / "mountain.png"
+ height_map_image = QImage(image_file)
+ self._heightMapProxy = QHeightMapSurfaceDataProxy(height_map_image)
+ self._heightMapSeries = QSurface3DSeries(self._heightMapProxy)
+ self._heightMapSeries.setItemLabelFormat("(@xLabel, @zLabel): @yLabel")
+ self._heightMapProxy.setValueRanges(34.0, 40.0, 18.0, 24.0)
+
+ self._heightMapWidth = height_map_image.width()
+ self._heightMapHeight = height_map_image.height()
+
+ self._axisMinSliderX = QSlider()
+ self._axisMaxSliderX = QSlider()
+ self._axisMinSliderZ = QSlider()
+ self._axisMaxSliderZ = QSlider()
+ self._rangeMinX = 0.0
+ self._rangeMinZ = 0.0
+ self._stepX = 0.0
+ self._stepZ = 0.0
+
+ def fill_sqrt_sin_proxy(self):
+ step_x = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_X - 1)
+ step_z = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_Z - 1)
+
+ data_array = []
+ for i in range(SAMPLE_COUNT_Z):
+ new_row = []
+ # Keep values within range bounds, since just adding step can cause
+ # minor drift due to the rounding errors.
+ z = min(SAMPLE_MAX, (i * step_z + SAMPLE_MIN))
+ for j in range(SAMPLE_COUNT_X):
+ x = min(SAMPLE_MAX, (j * step_x + SAMPLE_MIN))
+ R = math.sqrt(z * z + x * x) + 0.01
+ y = (math.sin(R) / R + 0.24) * 1.61
+ new_row.append(QSurfaceDataItem(QVector3D(x, y, z)))
+ data_array.append(new_row)
+
+ self._sqrtSinProxy.resetArray(data_array)
+
+ @Slot(bool)
+ def enable_sqrt_sin_model(self, enable):
+ if enable:
+ self._sqrtSinSeries.setDrawMode(QSurface3DSeries.DrawSurfaceAndWireframe)
+ self._sqrtSinSeries.setFlatShadingEnabled(True)
+
+ self._graph.axisX().setLabelFormat("%.2f")
+ self._graph.axisZ().setLabelFormat("%.2f")
+ self._graph.axisX().setRange(SAMPLE_MIN, SAMPLE_MAX)
+ self._graph.axisY().setRange(0.0, 2.0)
+ self._graph.axisZ().setRange(SAMPLE_MIN, SAMPLE_MAX)
+ self._graph.axisX().setLabelAutoRotation(30)
+ self._graph.axisY().setLabelAutoRotation(90)
+ self._graph.axisZ().setLabelAutoRotation(30)
+
+ self._graph.removeSeries(self._heightMapSeries)
+ self._graph.addSeries(self._sqrtSinSeries)
+
+ # Reset range sliders for Sqrt&Sin
+ self._rangeMinX = SAMPLE_MIN
+ self._rangeMinZ = SAMPLE_MIN
+ self._stepX = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_X - 1)
+ self._stepZ = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_Z - 1)
+ self._axisMinSliderX.setMaximum(SAMPLE_COUNT_X - 2)
+ self._axisMinSliderX.setValue(0)
+ self._axisMaxSliderX.setMaximum(SAMPLE_COUNT_X - 1)
+ self._axisMaxSliderX.setValue(SAMPLE_COUNT_X - 1)
+ self._axisMinSliderZ.setMaximum(SAMPLE_COUNT_Z - 2)
+ self._axisMinSliderZ.setValue(0)
+ self._axisMaxSliderZ.setMaximum(SAMPLE_COUNT_Z - 1)
+ self._axisMaxSliderZ.setValue(SAMPLE_COUNT_Z - 1)
+
+ @Slot(bool)
+ def enable_height_map_model(self, enable):
+ if enable:
+ self._heightMapSeries.setDrawMode(QSurface3DSeries.DrawSurface)
+ self._heightMapSeries.setFlatShadingEnabled(False)
+
+ self._graph.axisX().setLabelFormat("%.1f N")
+ self._graph.axisZ().setLabelFormat("%.1f E")
+ self._graph.axisX().setRange(34.0, 40.0)
+ self._graph.axisY().setAutoAdjustRange(True)
+ self._graph.axisZ().setRange(18.0, 24.0)
+
+ self._graph.axisX().setTitle("Latitude")
+ self._graph.axisY().setTitle("Height")
+ self._graph.axisZ().setTitle("Longitude")
+
+ self._graph.removeSeries(self._sqrtSinSeries)
+ self._graph.addSeries(self._heightMapSeries)
+
+ # Reset range sliders for height map
+ map_grid_count_x = self._heightMapWidth / HEIGHT_MAP_GRID_STEP_X
+ map_grid_count_z = self._heightMapHeight / HEIGHT_MAP_GRID_STEP_Z
+ self._rangeMinX = 34.0
+ self._rangeMinZ = 18.0
+ self._stepX = 6.0 / float(map_grid_count_x - 1)
+ self._stepZ = 6.0 / float(map_grid_count_z - 1)
+ self._axisMinSliderX.setMaximum(map_grid_count_x - 2)
+ self._axisMinSliderX.setValue(0)
+ self._axisMaxSliderX.setMaximum(map_grid_count_x - 1)
+ self._axisMaxSliderX.setValue(map_grid_count_x - 1)
+ self._axisMinSliderZ.setMaximum(map_grid_count_z - 2)
+ self._axisMinSliderZ.setValue(0)
+ self._axisMaxSliderZ.setMaximum(map_grid_count_z - 1)
+ self._axisMaxSliderZ.setValue(map_grid_count_z - 1)
+
+ @Slot(int)
+ def adjust_xmin(self, minimum):
+ min_x = self._stepX * float(minimum) + self._rangeMinX
+
+ maximum = self._axisMaxSliderX.value()
+ if minimum >= maximum:
+ maximum = minimum + 1
+ self._axisMaxSliderX.setValue(maximum)
+ max_x = self._stepX * maximum + self._rangeMinX
+
+ self.set_axis_xrange(min_x, max_x)
+
+ @Slot(int)
+ def adjust_xmax(self, maximum):
+ max_x = self._stepX * float(maximum) + self._rangeMinX
+
+ minimum = self._axisMinSliderX.value()
+ if maximum <= minimum:
+ minimum = maximum - 1
+ self._axisMinSliderX.setValue(minimum)
+ min_x = self._stepX * minimum + self._rangeMinX
+
+ self.set_axis_xrange(min_x, max_x)
+
+ @Slot(int)
+ def adjust_zmin(self, minimum):
+ min_z = self._stepZ * float(minimum) + self._rangeMinZ
+
+ maximum = self._axisMaxSliderZ.value()
+ if minimum >= maximum:
+ maximum = minimum + 1
+ self._axisMaxSliderZ.setValue(maximum)
+ max_z = self._stepZ * maximum + self._rangeMinZ
+
+ self.set_axis_zrange(min_z, max_z)
+
+ @Slot(int)
+ def adjust_zmax(self, maximum):
+ max_x = self._stepZ * float(maximum) + self._rangeMinZ
+
+ minimum = self._axisMinSliderZ.value()
+ if maximum <= minimum:
+ minimum = maximum - 1
+ self._axisMinSliderZ.setValue(minimum)
+ min_x = self._stepZ * minimum + self._rangeMinZ
+
+ self.set_axis_zrange(min_x, max_x)
+
+ def set_axis_xrange(self, minimum, maximum):
+ self._graph.axisX().setRange(minimum, maximum)
+
+ def set_axis_zrange(self, minimum, maximum):
+ self._graph.axisZ().setRange(minimum, maximum)
+
+ @Slot(int)
+ def change_theme(self, theme):
+ self._graph.activeTheme().setType(Q3DTheme.Theme(theme))
+
+ @Slot()
+ def set_black_to_yellow_gradient(self):
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.black)
+ gr.setColorAt(0.33, Qt.blue)
+ gr.setColorAt(0.67, Qt.red)
+ gr.setColorAt(1.0, Qt.yellow)
+
+ series = self._graph.seriesList()[0]
+ series.setBaseGradient(gr)
+ series.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
+
+ @Slot()
+ def set_green_to_red_gradient(self):
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.darkGreen)
+ gr.setColorAt(0.5, Qt.yellow)
+ gr.setColorAt(0.8, Qt.red)
+ gr.setColorAt(1.0, Qt.darkRed)
+
+ series = self._graph.seriesList()[0]
+ series.setBaseGradient(gr)
+ series.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
+
+ @Slot()
+ def toggle_mode_none(self):
+ self._graph.setSelectionMode(QAbstract3DGraph.SelectionNone)
+
+ @Slot()
+ def toggle_mode_item(self):
+ self._graph.setSelectionMode(QAbstract3DGraph.SelectionItem)
+
+ @Slot()
+ def toggle_mode_slice_row(self):
+ self._graph.setSelectionMode(
+ QAbstract3DGraph.SelectionItemAndRow | QAbstract3DGraph.SelectionSlice
+ )
+
+ @Slot()
+ def toggle_mode_slice_column(self):
+ self._graph.setSelectionMode(
+ QAbstract3DGraph.SelectionItemAndColumn | QAbstract3DGraph.SelectionSlice
+ )
+
+ def set_axis_min_slider_x(self, slider):
+ self._axisMinSliderX = slider
+
+ def set_axis_max_slider_x(self, slider):
+ self._axisMaxSliderX = slider
+
+ def set_axis_min_slider_z(self, slider):
+ self._axisMinSliderZ = slider
+
+ def set_axis_max_slider_z(self, slider):
+ self._axisMaxSliderZ = slider
diff --git a/examples/datavisualization/surface_model_numpy/doc/surface_model_numpy.rst b/examples/datavisualization/surface_model_numpy/doc/surface_model_numpy.rst
new file mode 100644
index 000000000..b5b91df2f
--- /dev/null
+++ b/examples/datavisualization/surface_model_numpy/doc/surface_model_numpy.rst
@@ -0,0 +1,24 @@
+Surface Example
+===============
+
+Using Q3DSurface in a widget application.
+
+The surface example shows how to make a simple 3D surface graph using
+Q3DSurface and combining the use of widgets for adjusting several adjustable
+qualities. This example demonstrates the following features:
+
+* How to set up a QItemModelSurfaceDataProxy with a QAbstractTableModel
+ backed by a numpy array.
+* How to use QHeightMapSurfaceDataProxy for showing 3D height maps.
+* Three different selection modes for studying the graph.
+* Axis range usage for displaying selected portions of the graph.
+* Changing theme.
+* How to set a custom surface gradient.
+
+For instructions about how to interact with the graph, see `this page`_.
+
+.. image:: surface_mountain.png
+ :width: 400
+ :alt: Surface Example Screenshot
+
+.. _`this page`: https://doc.qt.io/qt-6/qtdatavisualization-interacting-with-data.html
diff --git a/examples/datavisualization/surface_model_numpy/main.py b/examples/datavisualization/surface_model_numpy/main.py
new file mode 100644
index 000000000..f43970184
--- /dev/null
+++ b/examples/datavisualization/surface_model_numpy/main.py
@@ -0,0 +1,189 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QSize, Qt
+from PySide6.QtDataVisualization import Q3DSurface
+from PySide6.QtGui import QBrush, QIcon, QLinearGradient, QPainter, QPixmap
+from PySide6.QtWidgets import (QApplication, QComboBox, QGroupBox, QHBoxLayout,
+ QLabel, QMessageBox, QPushButton, QRadioButton,
+ QSizePolicy, QSlider, QVBoxLayout, QWidget)
+
+from surfacegraph import SurfaceGraph
+
+THEMES = ["Qt", "Primary Colors", "Digia", "Stone Moss", "Army Blue", "Retro",
+ "Ebony", "Isabelle"]
+
+
+class Window(QWidget):
+ def __init__(self, graph, parent=None):
+ super().__init__(parent)
+ self._graph = graph
+ self._container = QWidget.createWindowContainer(self._graph, self,
+ Qt.Widget)
+
+ screen_size = self._graph.screen().size()
+ self._container.setMinimumSize(QSize(screen_size.width() / 2,
+ screen_size.height() / 1.6))
+ self._container.setMaximumSize(screen_size)
+ self._container.setSizePolicy(QSizePolicy.Expanding,
+ QSizePolicy.Expanding)
+ self._container.setFocusPolicy(Qt.StrongFocus)
+
+ h_layout = QHBoxLayout(self)
+ v_layout = QVBoxLayout()
+ h_layout.addWidget(self._container, 1)
+ h_layout.addLayout(v_layout)
+ v_layout.setAlignment(Qt.AlignTop)
+
+ model_group_box = QGroupBox("Model")
+
+ sqrt_sin_model_rb = QRadioButton(self)
+ sqrt_sin_model_rb.setText("Sqrt& Sin")
+ sqrt_sin_model_rb.setChecked(False)
+
+ height_map_model_rb = QRadioButton(self)
+ height_map_model_rb.setText("Height Map")
+ height_map_model_rb.setChecked(False)
+
+ model_vbox = QVBoxLayout()
+ model_vbox.addWidget(sqrt_sin_model_rb)
+ model_vbox.addWidget(height_map_model_rb)
+ model_group_box.setLayout(model_vbox)
+
+ selection_group_box = QGroupBox("Selection Mode")
+
+ mode_none_rb = QRadioButton(self)
+ mode_none_rb.setText("No selection")
+ mode_none_rb.setChecked(False)
+
+ mode_item_rb = QRadioButton(self)
+ mode_item_rb.setText("Item")
+ mode_item_rb.setChecked(False)
+
+ mode_slice_row_rb = QRadioButton(self)
+ mode_slice_row_rb.setText("Row Slice")
+ mode_slice_row_rb.setChecked(False)
+
+ mode_slice_column_rb = QRadioButton(self)
+ mode_slice_column_rb.setText("Column Slice")
+ mode_slice_column_rb.setChecked(False)
+
+ selection_vbox = QVBoxLayout()
+ selection_vbox.addWidget(mode_none_rb)
+ selection_vbox.addWidget(mode_item_rb)
+ selection_vbox.addWidget(mode_slice_row_rb)
+ selection_vbox.addWidget(mode_slice_column_rb)
+ selection_group_box.setLayout(selection_vbox)
+
+ axis_min_slider_x = QSlider(Qt.Horizontal, self)
+ axis_min_slider_x.setMinimum(0)
+ axis_min_slider_x.setTickInterval(1)
+ axis_min_slider_x.setEnabled(True)
+ axis_max_slider_x = QSlider(Qt.Horizontal, self)
+ axis_max_slider_x.setMinimum(1)
+ axis_max_slider_x.setTickInterval(1)
+ axis_max_slider_x.setEnabled(True)
+ axis_min_slider_z = QSlider(Qt.Horizontal, self)
+ axis_min_slider_z.setMinimum(0)
+ axis_min_slider_z.setTickInterval(1)
+ axis_min_slider_z.setEnabled(True)
+ axis_max_slider_z = QSlider(Qt.Horizontal, self)
+ axis_max_slider_z.setMinimum(1)
+ axis_max_slider_z.setTickInterval(1)
+ axis_max_slider_z.setEnabled(True)
+
+ theme_list = QComboBox(self)
+ theme_list.addItems(THEMES)
+
+ color_group_box = QGroupBox("Custom gradient")
+
+ gr_bto_y = QLinearGradient(0, 0, 1, 100)
+ gr_bto_y.setColorAt(1.0, Qt.black)
+ gr_bto_y.setColorAt(0.67, Qt.blue)
+ gr_bto_y.setColorAt(0.33, Qt.red)
+ gr_bto_y.setColorAt(0.0, Qt.yellow)
+
+ pm = QPixmap(24, 100)
+ pmp = QPainter(pm)
+ pmp.setBrush(QBrush(gr_bto_y))
+ pmp.setPen(Qt.NoPen)
+ pmp.drawRect(0, 0, 24, 100)
+ pmp.end()
+
+ gradient_bto_ypb = QPushButton(self)
+ gradient_bto_ypb.setIcon(QIcon(pm))
+ gradient_bto_ypb.setIconSize(QSize(24, 100))
+
+ gr_gto_r = QLinearGradient(0, 0, 1, 100)
+ gr_gto_r.setColorAt(1.0, Qt.darkGreen)
+ gr_gto_r.setColorAt(0.5, Qt.yellow)
+ gr_gto_r.setColorAt(0.2, Qt.red)
+ gr_gto_r.setColorAt(0.0, Qt.darkRed)
+ pmp.begin(pm)
+ pmp.setBrush(QBrush(gr_gto_r))
+ pmp.drawRect(0, 0, 24, 100)
+ pmp.end()
+
+ gradient_gto_rpb = QPushButton(self)
+ gradient_gto_rpb.setIcon(QIcon(pm))
+ gradient_gto_rpb.setIconSize(QSize(24, 100))
+
+ color_hbox = QHBoxLayout()
+ color_hbox.addWidget(gradient_bto_ypb)
+ color_hbox.addWidget(gradient_gto_rpb)
+ color_group_box.setLayout(color_hbox)
+
+ v_layout.addWidget(model_group_box)
+ v_layout.addWidget(selection_group_box)
+ v_layout.addWidget(QLabel("Column range"))
+ v_layout.addWidget(axis_min_slider_x)
+ v_layout.addWidget(axis_max_slider_x)
+ v_layout.addWidget(QLabel("Row range"))
+ v_layout.addWidget(axis_min_slider_z)
+ v_layout.addWidget(axis_max_slider_z)
+ v_layout.addWidget(QLabel("Theme"))
+ v_layout.addWidget(theme_list)
+ v_layout.addWidget(color_group_box)
+
+ self._modifier = SurfaceGraph(self._graph)
+
+ height_map_model_rb.toggled.connect(self._modifier.enable_height_map_model)
+ sqrt_sin_model_rb.toggled.connect(self._modifier.enable_sqrt_sin_model)
+ mode_none_rb.toggled.connect(self._modifier.toggle_mode_none)
+ mode_item_rb.toggled.connect(self._modifier.toggle_mode_item)
+ mode_slice_row_rb.toggled.connect(self._modifier.toggle_mode_slice_row)
+ mode_slice_column_rb.toggled.connect(self._modifier.toggle_mode_slice_column)
+ axis_min_slider_x.valueChanged.connect(self._modifier.adjust_xmin)
+ axis_max_slider_x.valueChanged.connect(self._modifier.adjust_xmax)
+ axis_min_slider_z.valueChanged.connect(self._modifier.adjust_zmin)
+ axis_max_slider_z.valueChanged.connect(self._modifier.adjust_zmax)
+ theme_list.currentIndexChanged[int].connect(self._modifier.change_theme)
+ gradient_bto_ypb.pressed.connect(self._modifier.set_black_to_yellow_gradient)
+ gradient_gto_rpb.pressed.connect(self._modifier.set_green_to_red_gradient)
+
+ self._modifier.set_axis_min_slider_x(axis_min_slider_x)
+ self._modifier.set_axis_max_slider_x(axis_max_slider_x)
+ self._modifier.set_axis_min_slider_z(axis_min_slider_z)
+ self._modifier.set_axis_max_slider_z(axis_max_slider_z)
+
+ sqrt_sin_model_rb.setChecked(True)
+ mode_item_rb.setChecked(True)
+ theme_list.setCurrentIndex(2)
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ graph = Q3DSurface()
+ if not graph.hasContext():
+ msg_box = QMessageBox()
+ msg_box.setText("Couldn't initialize the OpenGL context.")
+ msg_box.exec()
+ sys.exit(-1)
+
+ window = Window(graph)
+ window.setWindowTitle("Surface example")
+ window.show()
+
+ sys.exit(app.exec())
diff --git a/examples/datavisualization/surface_model_numpy/surface_model_numpy.pyproject b/examples/datavisualization/surface_model_numpy/surface_model_numpy.pyproject
new file mode 100644
index 000000000..598a6541f
--- /dev/null
+++ b/examples/datavisualization/surface_model_numpy/surface_model_numpy.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py",
+ "surfacegraph.py"]
+}
diff --git a/examples/datavisualization/surface_model_numpy/surfacegraph.py b/examples/datavisualization/surface_model_numpy/surfacegraph.py
new file mode 100644
index 000000000..c0c1acecf
--- /dev/null
+++ b/examples/datavisualization/surface_model_numpy/surfacegraph.py
@@ -0,0 +1,295 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import numpy as np
+import math
+from pathlib import Path
+
+from PySide6.QtCore import (QAbstractTableModel, QByteArray, QModelIndex,
+ QObject, Qt, Slot)
+from PySide6.QtDataVisualization import (Q3DTheme, QAbstract3DGraph,
+ QHeightMapSurfaceDataProxy,
+ QSurface3DSeries,
+ QItemModelSurfaceDataProxy,
+ QValue3DAxis)
+from PySide6.QtGui import QImage, QLinearGradient
+from PySide6.QtWidgets import QSlider
+
+SAMPLE_COUNT_X = 50
+SAMPLE_COUNT_Z = 50
+HEIGHT_MAP_GRID_STEP_X = 6
+HEIGHT_MAP_GRID_STEP_Z = 6
+SAMPLE_MIN = -8.0
+SAMPLE_MAX = 8.0
+
+
+X_ROLE = Qt.UserRole + 1
+Y_ROLE = Qt.UserRole + 2
+Z_ROLE = Qt.UserRole + 3
+
+
+class SqrtSinModel(QAbstractTableModel):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self._x = np.zeros(SAMPLE_COUNT_X)
+ self._z = np.zeros(SAMPLE_COUNT_Z)
+ self._data = np.zeros((SAMPLE_COUNT_Z, SAMPLE_COUNT_X))
+
+ step_x = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_X - 1)
+ step_z = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_Z - 1)
+
+ for i in range(SAMPLE_COUNT_Z):
+ # Keep values within range bounds, since just adding step can cause
+ # minor drift due to the rounding errors.
+ z = min(SAMPLE_MAX, (i * step_z + SAMPLE_MIN))
+ self._z[i] = z
+ for j in range(SAMPLE_COUNT_X):
+ x = min(SAMPLE_MAX, (j * step_x + SAMPLE_MIN))
+ self._x[j] = x
+ R = math.sqrt(z * z + x * x) + 0.01
+ y = (math.sin(R) / R + 0.24) * 1.61
+ self._data[i, j] = y
+
+ def roleNames(self):
+ result = super().roleNames()
+ result[X_ROLE] = QByteArray(b"x")
+ result[Y_ROLE] = QByteArray(b"y")
+ result[Z_ROLE] = QByteArray(b"z")
+ return result
+
+ def rowCount(self, index=QModelIndex()):
+ return self._z.size
+
+ def columnCount(self, index=QModelIndex()):
+ return self._x.size
+
+ def data(self, index, role=Qt.DisplayRole):
+ row = index.row()
+ col = index.column()
+ if role == X_ROLE:
+ return float(self._x[col])
+ if role == Y_ROLE:
+ return float(self._data[row][col])
+ if role == Z_ROLE:
+ return float(self._z[row])
+ return 0.0
+
+
+class SurfaceGraph(QObject):
+ def __init__(self, surface, parent=None):
+ super().__init__(parent)
+
+ self.m_graph = surface
+ self.m_graph.setAxisX(QValue3DAxis())
+ self.m_graph.setAxisY(QValue3DAxis())
+ self.m_graph.setAxisZ(QValue3DAxis())
+
+ self.m_sqrtSinModel = SqrtSinModel(self)
+ self.m_sqrtSinProxy = QItemModelSurfaceDataProxy(self.m_sqrtSinModel, self)
+ self.m_sqrtSinProxy.setUseModelCategories(True)
+ self.m_sqrtSinProxy.setXPosRole("x")
+ self.m_sqrtSinProxy.setYPosRole("y")
+ self.m_sqrtSinProxy.setZPosRole("z")
+
+ self.m_sqrtSinSeries = QSurface3DSeries(self.m_sqrtSinProxy)
+
+ image_file = Path(__file__).parent.parent / "surface" / "mountain.png"
+ height_map_image = QImage(image_file)
+ self.m_heightMapProxy = QHeightMapSurfaceDataProxy(height_map_image)
+ self.m_heightMapSeries = QSurface3DSeries(self.m_heightMapProxy)
+ self.m_heightMapSeries.setItemLabelFormat("(@xLabel, @zLabel): @yLabel")
+ self.m_heightMapProxy.setValueRanges(34.0, 40.0, 18.0, 24.0)
+
+ self.m_heightMapWidth = height_map_image.width()
+ self.m_heightMapHeight = height_map_image.height()
+
+ self.m_axisMinSliderX = QSlider()
+ self.m_axisMaxSliderX = QSlider()
+ self.m_axisMinSliderZ = QSlider()
+ self.m_axisMaxSliderZ = QSlider()
+ self.m_rangeMinX = 0.0
+ self.m_rangeMinZ = 0.0
+ self.m_stepX = 0.0
+ self.m_stepZ = 0.0
+
+ @Slot(bool)
+ def enable_sqrt_sin_model(self, enable):
+ if enable:
+ self.m_sqrtSinSeries.setDrawMode(QSurface3DSeries.DrawSurfaceAndWireframe)
+ self.m_sqrtSinSeries.setFlatShadingEnabled(True)
+
+ self.m_graph.axisX().setLabelFormat("%.2f")
+ self.m_graph.axisZ().setLabelFormat("%.2f")
+ self.m_graph.axisX().setRange(SAMPLE_MIN, SAMPLE_MAX)
+ self.m_graph.axisY().setRange(0.0, 2.0)
+ self.m_graph.axisZ().setRange(SAMPLE_MIN, SAMPLE_MAX)
+ self.m_graph.axisX().setLabelAutoRotation(30)
+ self.m_graph.axisY().setLabelAutoRotation(90)
+ self.m_graph.axisZ().setLabelAutoRotation(30)
+
+ self.m_graph.removeSeries(self.m_heightMapSeries)
+ self.m_graph.addSeries(self.m_sqrtSinSeries)
+
+ # Reset range sliders for Sqrt&Sin
+ self.m_rangeMinX = SAMPLE_MIN
+ self.m_rangeMinZ = SAMPLE_MIN
+ self.m_stepX = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_X - 1)
+ self.m_stepZ = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_Z - 1)
+ self.m_axisMinSliderX.setMaximum(SAMPLE_COUNT_X - 2)
+ self.m_axisMinSliderX.setValue(0)
+ self.m_axisMaxSliderX.setMaximum(SAMPLE_COUNT_X - 1)
+ self.m_axisMaxSliderX.setValue(SAMPLE_COUNT_X - 1)
+ self.m_axisMinSliderZ.setMaximum(SAMPLE_COUNT_Z - 2)
+ self.m_axisMinSliderZ.setValue(0)
+ self.m_axisMaxSliderZ.setMaximum(SAMPLE_COUNT_Z - 1)
+ self.m_axisMaxSliderZ.setValue(SAMPLE_COUNT_Z - 1)
+
+ @Slot(bool)
+ def enable_height_map_model(self, enable):
+ if enable:
+ self.m_heightMapSeries.setDrawMode(QSurface3DSeries.DrawSurface)
+ self.m_heightMapSeries.setFlatShadingEnabled(False)
+
+ self.m_graph.axisX().setLabelFormat("%.1f N")
+ self.m_graph.axisZ().setLabelFormat("%.1f E")
+ self.m_graph.axisX().setRange(34.0, 40.0)
+ self.m_graph.axisY().setAutoAdjustRange(True)
+ self.m_graph.axisZ().setRange(18.0, 24.0)
+
+ self.m_graph.axisX().setTitle("Latitude")
+ self.m_graph.axisY().setTitle("Height")
+ self.m_graph.axisZ().setTitle("Longitude")
+
+ self.m_graph.removeSeries(self.m_sqrtSinSeries)
+ self.m_graph.addSeries(self.m_heightMapSeries)
+
+ # Reset range sliders for height map
+ map_grid_count_x = self.m_heightMapWidth / HEIGHT_MAP_GRID_STEP_X
+ map_grid_count_z = self.m_heightMapHeight / HEIGHT_MAP_GRID_STEP_Z
+ self.m_rangeMinX = 34.0
+ self.m_rangeMinZ = 18.0
+ self.m_stepX = 6.0 / float(map_grid_count_x - 1)
+ self.m_stepZ = 6.0 / float(map_grid_count_z - 1)
+ self.m_axisMinSliderX.setMaximum(map_grid_count_x - 2)
+ self.m_axisMinSliderX.setValue(0)
+ self.m_axisMaxSliderX.setMaximum(map_grid_count_x - 1)
+ self.m_axisMaxSliderX.setValue(map_grid_count_x - 1)
+ self.m_axisMinSliderZ.setMaximum(map_grid_count_z - 2)
+ self.m_axisMinSliderZ.setValue(0)
+ self.m_axisMaxSliderZ.setMaximum(map_grid_count_z - 1)
+ self.m_axisMaxSliderZ.setValue(map_grid_count_z - 1)
+
+ @Slot(int)
+ def adjust_xmin(self, minimum):
+ min_x = self.m_stepX * float(minimum) + self.m_rangeMinX
+
+ maximum = self.m_axisMaxSliderX.value()
+ if minimum >= maximum:
+ maximum = minimum + 1
+ self.m_axisMaxSliderX.setValue(maximum)
+ max_x = self.m_stepX * maximum + self.m_rangeMinX
+
+ self.set_axis_xrange(min_x, max_x)
+
+ @Slot(int)
+ def adjust_xmax(self, maximum):
+ max_x = self.m_stepX * float(maximum) + self.m_rangeMinX
+
+ minimum = self.m_axisMinSliderX.value()
+ if maximum <= minimum:
+ minimum = maximum - 1
+ self.m_axisMinSliderX.setValue(minimum)
+ min_x = self.m_stepX * minimum + self.m_rangeMinX
+
+ self.set_axis_xrange(min_x, max_x)
+
+ @Slot(int)
+ def adjust_zmin(self, minimum):
+ min_z = self.m_stepZ * float(minimum) + self.m_rangeMinZ
+
+ maximum = self.m_axisMaxSliderZ.value()
+ if minimum >= maximum:
+ maximum = minimum + 1
+ self.m_axisMaxSliderZ.setValue(maximum)
+ max_z = self.m_stepZ * maximum + self.m_rangeMinZ
+
+ self.set_axis_zrange(min_z, max_z)
+
+ @Slot(int)
+ def adjust_zmax(self, maximum):
+ max_x = self.m_stepZ * float(maximum) + self.m_rangeMinZ
+
+ minimum = self.m_axisMinSliderZ.value()
+ if maximum <= minimum:
+ minimum = maximum - 1
+ self.m_axisMinSliderZ.setValue(minimum)
+ min_x = self.m_stepZ * minimum + self.m_rangeMinZ
+
+ self.set_axis_zrange(min_x, max_x)
+
+ def set_axis_xrange(self, minimum, maximum):
+ self.m_graph.axisX().setRange(minimum, maximum)
+
+ def set_axis_zrange(self, minimum, maximum):
+ self.m_graph.axisZ().setRange(minimum, maximum)
+
+ @Slot(int)
+ def change_theme(self, theme):
+ self.m_graph.activeTheme().setType(Q3DTheme.Theme(theme))
+
+ @Slot()
+ def set_black_to_yellow_gradient(self):
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.black)
+ gr.setColorAt(0.33, Qt.blue)
+ gr.setColorAt(0.67, Qt.red)
+ gr.setColorAt(1.0, Qt.yellow)
+
+ series = self.m_graph.seriesList()[0]
+ series.setBaseGradient(gr)
+ series.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
+
+ @Slot()
+ def set_green_to_red_gradient(self):
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.darkGreen)
+ gr.setColorAt(0.5, Qt.yellow)
+ gr.setColorAt(0.8, Qt.red)
+ gr.setColorAt(1.0, Qt.darkRed)
+
+ series = self.m_graph.seriesList()[0]
+ series.setBaseGradient(gr)
+ series.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
+
+ @Slot()
+ def toggle_mode_none(self):
+ self.m_graph.setSelectionMode(QAbstract3DGraph.SelectionNone)
+
+ @Slot()
+ def toggle_mode_item(self):
+ self.m_graph.setSelectionMode(QAbstract3DGraph.SelectionItem)
+
+ @Slot()
+ def toggle_mode_slice_row(self):
+ self.m_graph.setSelectionMode(
+ QAbstract3DGraph.SelectionItemAndRow | QAbstract3DGraph.SelectionSlice
+ )
+
+ @Slot()
+ def toggle_mode_slice_column(self):
+ self.m_graph.setSelectionMode(
+ QAbstract3DGraph.SelectionItemAndColumn | QAbstract3DGraph.SelectionSlice
+ )
+
+ def set_axis_min_slider_x(self, slider):
+ self.m_axisMinSliderX = slider
+
+ def set_axis_max_slider_x(self, slider):
+ self.m_axisMaxSliderX = slider
+
+ def set_axis_min_slider_z(self, slider):
+ self.m_axisMinSliderZ = slider
+
+ def set_axis_max_slider_z(self, slider):
+ self.m_axisMaxSliderZ = slider
diff --git a/examples/datavisualization/surface_numpy/doc/surface_numpy.rst b/examples/datavisualization/surface_numpy/doc/surface_numpy.rst
new file mode 100644
index 000000000..8a921a4ad
--- /dev/null
+++ b/examples/datavisualization/surface_numpy/doc/surface_numpy.rst
@@ -0,0 +1,24 @@
+Surface Example
+===============
+
+Using Q3DSurface in a widget application.
+
+The surface example shows how to make a simple 3D surface graph using
+Q3DSurface and combining the use of widgets for adjusting several adjustable
+qualities. It requires building PySide6 with the ``--pyside-numpy-support``
+option. This example demonstrates the following features:
+
+* How to set up a QSurfaceDataProxy from a 2-dimensional numpy array.
+* How to use QHeightMapSurfaceDataProxy for showing 3D height maps.
+* Three different selection modes for studying the graph.
+* Axis range usage for displaying selected portions of the graph.
+* Changing theme.
+* How to set a custom surface gradient.
+
+For instructions about how to interact with the graph, see `this page`_.
+
+.. image:: surface_mountain.png
+ :width: 400
+ :alt: Surface Example Screenshot
+
+.. _`this page`: https://doc.qt.io/qt-6/qtdatavisualization-interacting-with-data.html
diff --git a/examples/datavisualization/surface_numpy/main.py b/examples/datavisualization/surface_numpy/main.py
new file mode 100644
index 000000000..f43970184
--- /dev/null
+++ b/examples/datavisualization/surface_numpy/main.py
@@ -0,0 +1,189 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QSize, Qt
+from PySide6.QtDataVisualization import Q3DSurface
+from PySide6.QtGui import QBrush, QIcon, QLinearGradient, QPainter, QPixmap
+from PySide6.QtWidgets import (QApplication, QComboBox, QGroupBox, QHBoxLayout,
+ QLabel, QMessageBox, QPushButton, QRadioButton,
+ QSizePolicy, QSlider, QVBoxLayout, QWidget)
+
+from surfacegraph import SurfaceGraph
+
+THEMES = ["Qt", "Primary Colors", "Digia", "Stone Moss", "Army Blue", "Retro",
+ "Ebony", "Isabelle"]
+
+
+class Window(QWidget):
+ def __init__(self, graph, parent=None):
+ super().__init__(parent)
+ self._graph = graph
+ self._container = QWidget.createWindowContainer(self._graph, self,
+ Qt.Widget)
+
+ screen_size = self._graph.screen().size()
+ self._container.setMinimumSize(QSize(screen_size.width() / 2,
+ screen_size.height() / 1.6))
+ self._container.setMaximumSize(screen_size)
+ self._container.setSizePolicy(QSizePolicy.Expanding,
+ QSizePolicy.Expanding)
+ self._container.setFocusPolicy(Qt.StrongFocus)
+
+ h_layout = QHBoxLayout(self)
+ v_layout = QVBoxLayout()
+ h_layout.addWidget(self._container, 1)
+ h_layout.addLayout(v_layout)
+ v_layout.setAlignment(Qt.AlignTop)
+
+ model_group_box = QGroupBox("Model")
+
+ sqrt_sin_model_rb = QRadioButton(self)
+ sqrt_sin_model_rb.setText("Sqrt& Sin")
+ sqrt_sin_model_rb.setChecked(False)
+
+ height_map_model_rb = QRadioButton(self)
+ height_map_model_rb.setText("Height Map")
+ height_map_model_rb.setChecked(False)
+
+ model_vbox = QVBoxLayout()
+ model_vbox.addWidget(sqrt_sin_model_rb)
+ model_vbox.addWidget(height_map_model_rb)
+ model_group_box.setLayout(model_vbox)
+
+ selection_group_box = QGroupBox("Selection Mode")
+
+ mode_none_rb = QRadioButton(self)
+ mode_none_rb.setText("No selection")
+ mode_none_rb.setChecked(False)
+
+ mode_item_rb = QRadioButton(self)
+ mode_item_rb.setText("Item")
+ mode_item_rb.setChecked(False)
+
+ mode_slice_row_rb = QRadioButton(self)
+ mode_slice_row_rb.setText("Row Slice")
+ mode_slice_row_rb.setChecked(False)
+
+ mode_slice_column_rb = QRadioButton(self)
+ mode_slice_column_rb.setText("Column Slice")
+ mode_slice_column_rb.setChecked(False)
+
+ selection_vbox = QVBoxLayout()
+ selection_vbox.addWidget(mode_none_rb)
+ selection_vbox.addWidget(mode_item_rb)
+ selection_vbox.addWidget(mode_slice_row_rb)
+ selection_vbox.addWidget(mode_slice_column_rb)
+ selection_group_box.setLayout(selection_vbox)
+
+ axis_min_slider_x = QSlider(Qt.Horizontal, self)
+ axis_min_slider_x.setMinimum(0)
+ axis_min_slider_x.setTickInterval(1)
+ axis_min_slider_x.setEnabled(True)
+ axis_max_slider_x = QSlider(Qt.Horizontal, self)
+ axis_max_slider_x.setMinimum(1)
+ axis_max_slider_x.setTickInterval(1)
+ axis_max_slider_x.setEnabled(True)
+ axis_min_slider_z = QSlider(Qt.Horizontal, self)
+ axis_min_slider_z.setMinimum(0)
+ axis_min_slider_z.setTickInterval(1)
+ axis_min_slider_z.setEnabled(True)
+ axis_max_slider_z = QSlider(Qt.Horizontal, self)
+ axis_max_slider_z.setMinimum(1)
+ axis_max_slider_z.setTickInterval(1)
+ axis_max_slider_z.setEnabled(True)
+
+ theme_list = QComboBox(self)
+ theme_list.addItems(THEMES)
+
+ color_group_box = QGroupBox("Custom gradient")
+
+ gr_bto_y = QLinearGradient(0, 0, 1, 100)
+ gr_bto_y.setColorAt(1.0, Qt.black)
+ gr_bto_y.setColorAt(0.67, Qt.blue)
+ gr_bto_y.setColorAt(0.33, Qt.red)
+ gr_bto_y.setColorAt(0.0, Qt.yellow)
+
+ pm = QPixmap(24, 100)
+ pmp = QPainter(pm)
+ pmp.setBrush(QBrush(gr_bto_y))
+ pmp.setPen(Qt.NoPen)
+ pmp.drawRect(0, 0, 24, 100)
+ pmp.end()
+
+ gradient_bto_ypb = QPushButton(self)
+ gradient_bto_ypb.setIcon(QIcon(pm))
+ gradient_bto_ypb.setIconSize(QSize(24, 100))
+
+ gr_gto_r = QLinearGradient(0, 0, 1, 100)
+ gr_gto_r.setColorAt(1.0, Qt.darkGreen)
+ gr_gto_r.setColorAt(0.5, Qt.yellow)
+ gr_gto_r.setColorAt(0.2, Qt.red)
+ gr_gto_r.setColorAt(0.0, Qt.darkRed)
+ pmp.begin(pm)
+ pmp.setBrush(QBrush(gr_gto_r))
+ pmp.drawRect(0, 0, 24, 100)
+ pmp.end()
+
+ gradient_gto_rpb = QPushButton(self)
+ gradient_gto_rpb.setIcon(QIcon(pm))
+ gradient_gto_rpb.setIconSize(QSize(24, 100))
+
+ color_hbox = QHBoxLayout()
+ color_hbox.addWidget(gradient_bto_ypb)
+ color_hbox.addWidget(gradient_gto_rpb)
+ color_group_box.setLayout(color_hbox)
+
+ v_layout.addWidget(model_group_box)
+ v_layout.addWidget(selection_group_box)
+ v_layout.addWidget(QLabel("Column range"))
+ v_layout.addWidget(axis_min_slider_x)
+ v_layout.addWidget(axis_max_slider_x)
+ v_layout.addWidget(QLabel("Row range"))
+ v_layout.addWidget(axis_min_slider_z)
+ v_layout.addWidget(axis_max_slider_z)
+ v_layout.addWidget(QLabel("Theme"))
+ v_layout.addWidget(theme_list)
+ v_layout.addWidget(color_group_box)
+
+ self._modifier = SurfaceGraph(self._graph)
+
+ height_map_model_rb.toggled.connect(self._modifier.enable_height_map_model)
+ sqrt_sin_model_rb.toggled.connect(self._modifier.enable_sqrt_sin_model)
+ mode_none_rb.toggled.connect(self._modifier.toggle_mode_none)
+ mode_item_rb.toggled.connect(self._modifier.toggle_mode_item)
+ mode_slice_row_rb.toggled.connect(self._modifier.toggle_mode_slice_row)
+ mode_slice_column_rb.toggled.connect(self._modifier.toggle_mode_slice_column)
+ axis_min_slider_x.valueChanged.connect(self._modifier.adjust_xmin)
+ axis_max_slider_x.valueChanged.connect(self._modifier.adjust_xmax)
+ axis_min_slider_z.valueChanged.connect(self._modifier.adjust_zmin)
+ axis_max_slider_z.valueChanged.connect(self._modifier.adjust_zmax)
+ theme_list.currentIndexChanged[int].connect(self._modifier.change_theme)
+ gradient_bto_ypb.pressed.connect(self._modifier.set_black_to_yellow_gradient)
+ gradient_gto_rpb.pressed.connect(self._modifier.set_green_to_red_gradient)
+
+ self._modifier.set_axis_min_slider_x(axis_min_slider_x)
+ self._modifier.set_axis_max_slider_x(axis_max_slider_x)
+ self._modifier.set_axis_min_slider_z(axis_min_slider_z)
+ self._modifier.set_axis_max_slider_z(axis_max_slider_z)
+
+ sqrt_sin_model_rb.setChecked(True)
+ mode_item_rb.setChecked(True)
+ theme_list.setCurrentIndex(2)
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ graph = Q3DSurface()
+ if not graph.hasContext():
+ msg_box = QMessageBox()
+ msg_box.setText("Couldn't initialize the OpenGL context.")
+ msg_box.exec()
+ sys.exit(-1)
+
+ window = Window(graph)
+ window.setWindowTitle("Surface example")
+ window.show()
+
+ sys.exit(app.exec())
diff --git a/examples/datavisualization/surface_numpy/surface_numpy.pyproject b/examples/datavisualization/surface_numpy/surface_numpy.pyproject
new file mode 100644
index 000000000..598a6541f
--- /dev/null
+++ b/examples/datavisualization/surface_numpy/surface_numpy.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py",
+ "surfacegraph.py"]
+}
diff --git a/examples/datavisualization/surface_numpy/surfacegraph.py b/examples/datavisualization/surface_numpy/surfacegraph.py
new file mode 100644
index 000000000..c9f6e75a9
--- /dev/null
+++ b/examples/datavisualization/surface_numpy/surfacegraph.py
@@ -0,0 +1,253 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import numpy as np
+import math
+from pathlib import Path
+
+from PySide6.QtCore import (QObject, Qt, Slot)
+from PySide6.QtDataVisualization import (Q3DTheme, QAbstract3DGraph,
+ QHeightMapSurfaceDataProxy,
+ QSurface3DSeries,
+ QSurfaceDataProxy,
+ QValue3DAxis)
+from PySide6.QtGui import QImage, QLinearGradient
+from PySide6.QtWidgets import QSlider
+
+SAMPLE_COUNT_X = 50
+SAMPLE_COUNT_Z = 50
+HEIGHT_MAP_GRID_STEP_X = 6
+HEIGHT_MAP_GRID_STEP_Z = 6
+SAMPLE_MIN = -8.0
+SAMPLE_MAX = 8.0
+
+
+def fill_proxy(p):
+ stepX = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_X - 1)
+ stepZ = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_Z - 1)
+ data = np.zeros((SAMPLE_COUNT_Z, SAMPLE_COUNT_X))
+ for i in range(SAMPLE_COUNT_Z):
+ # Keep values within range bounds, since just adding step can cause
+ # minor drift due to the rounding errors.
+ z = min(SAMPLE_MAX, (i * stepZ + SAMPLE_MIN))
+ for j in range(SAMPLE_COUNT_X):
+ x = min(SAMPLE_MAX, (j * stepX + SAMPLE_MIN))
+ R = math.sqrt(z * z + x * x) + 0.01
+ y = (math.sin(R) / R + 0.24) * 1.61
+ data[i, j] = y
+ p.resetArrayNp(SAMPLE_MIN, stepX, SAMPLE_MIN, stepZ, data)
+
+
+class SurfaceGraph(QObject):
+ def __init__(self, surface, parent=None):
+ super().__init__(parent)
+
+ self.m_graph = surface
+ self.m_graph.setAxisX(QValue3DAxis())
+ self.m_graph.setAxisY(QValue3DAxis())
+ self.m_graph.setAxisZ(QValue3DAxis())
+
+ self.m_sqrtSinProxy = QSurfaceDataProxy()
+ fill_proxy(self.m_sqrtSinProxy)
+
+ self.m_sqrtSinSeries = QSurface3DSeries(self.m_sqrtSinProxy)
+
+ image_file = Path(__file__).parent.parent / "surface" / "mountain.png"
+ height_map_image = QImage(image_file)
+ self.m_heightMapProxy = QHeightMapSurfaceDataProxy(height_map_image)
+ self.m_heightMapSeries = QSurface3DSeries(self.m_heightMapProxy)
+ self.m_heightMapSeries.setItemLabelFormat("(@xLabel, @zLabel): @yLabel")
+ self.m_heightMapProxy.setValueRanges(34.0, 40.0, 18.0, 24.0)
+
+ self.m_heightMapWidth = height_map_image.width()
+ self.m_heightMapHeight = height_map_image.height()
+
+ self.m_axisMinSliderX = QSlider()
+ self.m_axisMaxSliderX = QSlider()
+ self.m_axisMinSliderZ = QSlider()
+ self.m_axisMaxSliderZ = QSlider()
+ self.m_rangeMinX = 0.0
+ self.m_rangeMinZ = 0.0
+ self.m_stepX = 0.0
+ self.m_stepZ = 0.0
+
+ @Slot(bool)
+ def enable_sqrt_sin_model(self, enable):
+ if enable:
+ self.m_sqrtSinSeries.setDrawMode(QSurface3DSeries.DrawSurfaceAndWireframe)
+ self.m_sqrtSinSeries.setFlatShadingEnabled(True)
+
+ self.m_graph.axisX().setLabelFormat("%.2f")
+ self.m_graph.axisZ().setLabelFormat("%.2f")
+ self.m_graph.axisX().setRange(SAMPLE_MIN, SAMPLE_MAX)
+ self.m_graph.axisY().setRange(0.0, 2.0)
+ self.m_graph.axisZ().setRange(SAMPLE_MIN, SAMPLE_MAX)
+ self.m_graph.axisX().setLabelAutoRotation(30)
+ self.m_graph.axisY().setLabelAutoRotation(90)
+ self.m_graph.axisZ().setLabelAutoRotation(30)
+
+ self.m_graph.removeSeries(self.m_heightMapSeries)
+ self.m_graph.addSeries(self.m_sqrtSinSeries)
+
+ # Reset range sliders for Sqrt&Sin
+ self.m_rangeMinX = SAMPLE_MIN
+ self.m_rangeMinZ = SAMPLE_MIN
+ self.m_stepX = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_X - 1)
+ self.m_stepZ = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_Z - 1)
+ self.m_axisMinSliderX.setMaximum(SAMPLE_COUNT_X - 2)
+ self.m_axisMinSliderX.setValue(0)
+ self.m_axisMaxSliderX.setMaximum(SAMPLE_COUNT_X - 1)
+ self.m_axisMaxSliderX.setValue(SAMPLE_COUNT_X - 1)
+ self.m_axisMinSliderZ.setMaximum(SAMPLE_COUNT_Z - 2)
+ self.m_axisMinSliderZ.setValue(0)
+ self.m_axisMaxSliderZ.setMaximum(SAMPLE_COUNT_Z - 1)
+ self.m_axisMaxSliderZ.setValue(SAMPLE_COUNT_Z - 1)
+
+ @Slot(bool)
+ def enable_height_map_model(self, enable):
+ if enable:
+ self.m_heightMapSeries.setDrawMode(QSurface3DSeries.DrawSurface)
+ self.m_heightMapSeries.setFlatShadingEnabled(False)
+
+ self.m_graph.axisX().setLabelFormat("%.1f N")
+ self.m_graph.axisZ().setLabelFormat("%.1f E")
+ self.m_graph.axisX().setRange(34.0, 40.0)
+ self.m_graph.axisY().setAutoAdjustRange(True)
+ self.m_graph.axisZ().setRange(18.0, 24.0)
+
+ self.m_graph.axisX().setTitle("Latitude")
+ self.m_graph.axisY().setTitle("Height")
+ self.m_graph.axisZ().setTitle("Longitude")
+
+ self.m_graph.removeSeries(self.m_sqrtSinSeries)
+ self.m_graph.addSeries(self.m_heightMapSeries)
+
+ # Reset range sliders for height map
+ map_grid_count_x = self.m_heightMapWidth / HEIGHT_MAP_GRID_STEP_X
+ map_grid_count_z = self.m_heightMapHeight / HEIGHT_MAP_GRID_STEP_Z
+ self.m_rangeMinX = 34.0
+ self.m_rangeMinZ = 18.0
+ self.m_stepX = 6.0 / float(map_grid_count_x - 1)
+ self.m_stepZ = 6.0 / float(map_grid_count_z - 1)
+ self.m_axisMinSliderX.setMaximum(map_grid_count_x - 2)
+ self.m_axisMinSliderX.setValue(0)
+ self.m_axisMaxSliderX.setMaximum(map_grid_count_x - 1)
+ self.m_axisMaxSliderX.setValue(map_grid_count_x - 1)
+ self.m_axisMinSliderZ.setMaximum(map_grid_count_z - 2)
+ self.m_axisMinSliderZ.setValue(0)
+ self.m_axisMaxSliderZ.setMaximum(map_grid_count_z - 1)
+ self.m_axisMaxSliderZ.setValue(map_grid_count_z - 1)
+
+ @Slot(int)
+ def adjust_xmin(self, minimum):
+ min_x = self.m_stepX * float(minimum) + self.m_rangeMinX
+
+ maximum = self.m_axisMaxSliderX.value()
+ if minimum >= maximum:
+ maximum = minimum + 1
+ self.m_axisMaxSliderX.setValue(maximum)
+ max_x = self.m_stepX * maximum + self.m_rangeMinX
+
+ self.set_axis_xrange(min_x, max_x)
+
+ @Slot(int)
+ def adjust_xmax(self, maximum):
+ max_x = self.m_stepX * float(maximum) + self.m_rangeMinX
+
+ minimum = self.m_axisMinSliderX.value()
+ if maximum <= minimum:
+ minimum = maximum - 1
+ self.m_axisMinSliderX.setValue(minimum)
+ min_x = self.m_stepX * minimum + self.m_rangeMinX
+
+ self.set_axis_xrange(min_x, max_x)
+
+ @Slot(int)
+ def adjust_zmin(self, minimum):
+ min_z = self.m_stepZ * float(minimum) + self.m_rangeMinZ
+
+ maximum = self.m_axisMaxSliderZ.value()
+ if minimum >= maximum:
+ maximum = minimum + 1
+ self.m_axisMaxSliderZ.setValue(maximum)
+ max_z = self.m_stepZ * maximum + self.m_rangeMinZ
+
+ self.set_axis_zrange(min_z, max_z)
+
+ @Slot(int)
+ def adjust_zmax(self, maximum):
+ max_x = self.m_stepZ * float(maximum) + self.m_rangeMinZ
+
+ minimum = self.m_axisMinSliderZ.value()
+ if maximum <= minimum:
+ minimum = maximum - 1
+ self.m_axisMinSliderZ.setValue(minimum)
+ min_x = self.m_stepZ * minimum + self.m_rangeMinZ
+
+ self.set_axis_zrange(min_x, max_x)
+
+ def set_axis_xrange(self, minimum, maximum):
+ self.m_graph.axisX().setRange(minimum, maximum)
+
+ def set_axis_zrange(self, minimum, maximum):
+ self.m_graph.axisZ().setRange(minimum, maximum)
+
+ @Slot(int)
+ def change_theme(self, theme):
+ self.m_graph.activeTheme().setType(Q3DTheme.Theme(theme))
+
+ @Slot()
+ def set_black_to_yellow_gradient(self):
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.black)
+ gr.setColorAt(0.33, Qt.blue)
+ gr.setColorAt(0.67, Qt.red)
+ gr.setColorAt(1.0, Qt.yellow)
+
+ series = self.m_graph.seriesList()[0]
+ series.setBaseGradient(gr)
+ series.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
+
+ @Slot()
+ def set_green_to_red_gradient(self):
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.darkGreen)
+ gr.setColorAt(0.5, Qt.yellow)
+ gr.setColorAt(0.8, Qt.red)
+ gr.setColorAt(1.0, Qt.darkRed)
+
+ series = self.m_graph.seriesList()[0]
+ series.setBaseGradient(gr)
+ series.setColorStyle(Q3DTheme.ColorStyleRangeGradient)
+
+ @Slot()
+ def toggle_mode_none(self):
+ self.m_graph.setSelectionMode(QAbstract3DGraph.SelectionNone)
+
+ @Slot()
+ def toggle_mode_item(self):
+ self.m_graph.setSelectionMode(QAbstract3DGraph.SelectionItem)
+
+ @Slot()
+ def toggle_mode_slice_row(self):
+ self.m_graph.setSelectionMode(
+ QAbstract3DGraph.SelectionItemAndRow | QAbstract3DGraph.SelectionSlice
+ )
+
+ @Slot()
+ def toggle_mode_slice_column(self):
+ self.m_graph.setSelectionMode(
+ QAbstract3DGraph.SelectionItemAndColumn | QAbstract3DGraph.SelectionSlice
+ )
+
+ def set_axis_min_slider_x(self, slider):
+ self.m_axisMinSliderX = slider
+
+ def set_axis_max_slider_x(self, slider):
+ self.m_axisMaxSliderX = slider
+
+ def set_axis_min_slider_z(self, slider):
+ self.m_axisMinSliderZ = slider
+
+ def set_axis_max_slider_z(self, slider):
+ self.m_axisMaxSliderZ = slider
diff --git a/examples/dbus/listnames/listnames.py b/examples/dbus/listnames/listnames.py
new file mode 100644
index 000000000..2240a06d8
--- /dev/null
+++ b/examples/dbus/listnames/listnames.py
@@ -0,0 +1,53 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the QtDBus listnames example from Qt v6.x"""
+
+import sys
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtDBus import QDBusConnection, QDBusInterface, QDBusReply
+
+
+def method1():
+ print("Method 1:")
+
+ session_bus = QDBusConnection.sessionBus()
+ reply = session_bus.interface().registeredServiceNames()
+ if not reply.isValid():
+ print("Error:", reply.error().message())
+ sys.exit(1)
+ values = reply.value()
+ for name in values:
+ print(name)
+
+
+def method2():
+ print("Method 2:")
+
+ session_bus = QDBusConnection.sessionBus()
+ dbus_iface = QDBusInterface("org.freedesktop.DBus", "/org/freedesktop/DBus",
+ "org.freedesktop.DBus", session_bus)
+ message = dbus_iface.call("ListNames")
+ reply = QDBusReply(message)
+ print(reply.value())
+
+
+def method3():
+ print("Method 3:")
+ session_bus = QDBusConnection.sessionBus()
+ print(session_bus.interface().registeredServiceNames().value())
+
+
+if __name__ == "__main__":
+ app = QCoreApplication()
+
+ if not QDBusConnection.sessionBus().isConnected():
+ print("Cannot connect to the D-Bus session bus.\n"
+ "To start it, run:\n"
+ "\teval `dbus-launch --auto-syntax`\n",
+ file=sys.stderr)
+ sys.exit(1)
+
+ method1()
+ method2()
+ method3()
diff --git a/examples/dbus/listnames/listnames.pyproject b/examples/dbus/listnames/listnames.pyproject
new file mode 100644
index 000000000..9015cef92
--- /dev/null
+++ b/examples/dbus/listnames/listnames.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["listnames.py"]
+}
diff --git a/examples/dbus/pingpong/ping.py b/examples/dbus/pingpong/ping.py
new file mode 100644
index 000000000..d61f25499
--- /dev/null
+++ b/examples/dbus/pingpong/ping.py
@@ -0,0 +1,38 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the QtDBus pingpong example from Qt v6.x (ping client)"""
+
+import sys
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtDBus import QDBusConnection, QDBusInterface, QDBusReply
+
+
+SERVICE_NAME = 'org.example.QtDBus.PingExample'
+
+
+if __name__ == "__main__":
+ app = QCoreApplication()
+ session_bus = QDBusConnection.sessionBus()
+ if not session_bus.isConnected():
+ print("Cannot connect to the D-Bus session bus.\n"
+ "To start it, run:\n"
+ "\teval `dbus-launch --auto-syntax`\n")
+ sys.exit(-1)
+
+ iface = QDBusInterface(SERVICE_NAME, '/', '', session_bus)
+ if not iface.isValid():
+ print(session_bus.lastError().message())
+ sys.exit(-1)
+
+ argument = sys.argv[1] if len(sys.argv) > 1 else 'Hello'
+ message = iface.call('ping', argument)
+ reply = QDBusReply(message)
+ if not reply.isValid():
+ error = reply.error().message()
+ print(f'ping: Call failed: {error}')
+ sys.exit(-1)
+
+ value = reply.value()
+ print(f'ping: Reply was: {value}')
+ sys.exit(0)
diff --git a/examples/dbus/pingpong/pingpong.pyproject b/examples/dbus/pingpong/pingpong.pyproject
new file mode 100644
index 000000000..cad30b374
--- /dev/null
+++ b/examples/dbus/pingpong/pingpong.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["ping.py", "pong.py"]
+}
diff --git a/examples/dbus/pingpong/pong.py b/examples/dbus/pingpong/pong.py
new file mode 100644
index 000000000..0dec6eda0
--- /dev/null
+++ b/examples/dbus/pingpong/pong.py
@@ -0,0 +1,44 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the QtDBus pingpong example from Qt v6.x (pong server)"""
+
+import sys
+from PySide6.QtCore import QCoreApplication, QObject, Slot
+from PySide6.QtDBus import QDBusConnection
+
+
+SERVICE_NAME = "org.example.QtDBus.PingExample"
+
+
+class Pong(QObject):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ @Slot(str, result=str)
+ def ping(self, arg):
+ print(f'pong: Received ping({arg})')
+ qApp.quit() # noqa: F821
+ return f'ping("{arg}") got called'
+
+
+if __name__ == "__main__":
+ app = QCoreApplication()
+ session_bus = QDBusConnection.sessionBus()
+ if not session_bus.isConnected():
+ print("Cannot connect to the D-Bus session bus.\n"
+ "To start it, run:\n"
+ "\teval `dbus-launch --auto-syntax`\n")
+ sys.exit(-1)
+
+ if not session_bus.registerService(SERVICE_NAME):
+ print(session_bus.lastError().message())
+ sys.exit(-1)
+
+ pong = Pong()
+ session_bus.registerObject('/', pong, QDBusConnection.ExportAllSlots)
+
+ print(f'pong: {SERVICE_NAME} running. Now start ping.py')
+ exit_code = app.exec()
+ print('pong: terminating')
+ sys.exit(exit_code)
diff --git a/examples/declarative/extending/chapter1-basics/app.qml b/examples/declarative/extending/chapter1-basics/app.qml
deleted file mode 100644
index 190d0246f..000000000
--- a/examples/declarative/extending/chapter1-basics/app.qml
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-//![0]
-import Charts 1.0
-import QtQuick 2.0
-
-Item {
- width: 300; height: 200
-
- PieChart {
- id: aPieChart
- anchors.centerIn: parent
- width: 100; height: 100
- name: "A simple pie chart"
- color: "red"
- }
-
- Text {
- anchors {
- bottom: parent.bottom;
- horizontalCenter: parent.horizontalCenter;
- bottomMargin: 20
- }
- text: aPieChart.name
- }
-}
-//![0]
diff --git a/examples/declarative/extending/chapter1-basics/basics.py b/examples/declarative/extending/chapter1-basics/basics.py
deleted file mode 100644
index f1492d959..000000000
--- a/examples/declarative/extending/chapter1-basics/basics.py
+++ /dev/null
@@ -1,102 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 port of the qml/tutorials/extending-qml/chapter1-basics example from Qt v5.x"""
-
-import os
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import Property, Signal, Qt, QUrl
-from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
-from PySide6.QtQml import qmlRegisterType
-from PySide6.QtQuick import QQuickPaintedItem, QQuickView
-
-
-class PieChart (QQuickPaintedItem):
-
- nameChanged = Signal()
-
- def __init__(self, parent=None):
- QQuickPaintedItem.__init__(self, parent)
- self._name = u''
- self._color = QColor()
-
- def paint(self, painter):
- pen = QPen(self.color, 2)
- painter.setPen(pen)
- painter.setRenderHints(QPainter.Antialiasing, True)
- painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
-
- @Property(QColor)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, value):
- self._color = value
-
- @Property(str, notify=nameChanged)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, value):
- self._name = value
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart')
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/extending/chapter2-methods/app.qml b/examples/declarative/extending/chapter2-methods/app.qml
deleted file mode 100644
index 3a44798c7..000000000
--- a/examples/declarative/extending/chapter2-methods/app.qml
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-//![0]
-import Charts 1.0
-import QtQuick 2.0
-
-Item {
- width: 300; height: 200
-
- PieChart {
- id: aPieChart
- anchors.centerIn: parent
- width: 100; height: 100
- color: "red"
-
- onChartCleared: console.log("The chart has been cleared")
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: aPieChart.clearChart()
- }
-
- Text {
- anchors {
- bottom: parent.bottom;
- horizontalCenter: parent.horizontalCenter;
- bottomMargin: 20
- }
- text: "Click anywhere to clear the chart"
- }
-}
-//![0]
diff --git a/examples/declarative/extending/chapter2-methods/methods.py b/examples/declarative/extending/chapter2-methods/methods.py
deleted file mode 100644
index c9e7be8f3..000000000
--- a/examples/declarative/extending/chapter2-methods/methods.py
+++ /dev/null
@@ -1,109 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 port of the qml/tutorials/extending-qml/chapter2-methods example from Qt v5.x"""
-
-import os
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import Property, Signal, Slot, Qt, QUrl
-from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
-from PySide6.QtQml import qmlRegisterType
-from PySide6.QtQuick import QQuickPaintedItem, QQuickView
-
-
-class PieChart(QQuickPaintedItem):
-
- chartCleared = Signal()
- nameChanged = Signal()
-
- def __init__(self, parent=None):
- QQuickPaintedItem.__init__(self, parent)
- self._name = u''
- self._color = QColor()
-
- def paint(self, painter):
- pen = QPen(self.color, 2)
- painter.setPen(pen)
- painter.setRenderHints(QPainter.Antialiasing, True)
- painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
-
- @Property(QColor)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, value):
- self._color = value
-
- @Property(str, notify=nameChanged)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, value):
- self._name = value
-
- @Slot() # This should be something like @Invokable
- def clearChart(self):
- self.color = Qt.transparent
- self.update()
- self.chartCleared.emit()
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart')
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/extending/chapter3-bindings/app.qml b/examples/declarative/extending/chapter3-bindings/app.qml
deleted file mode 100644
index 277b897e4..000000000
--- a/examples/declarative/extending/chapter3-bindings/app.qml
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-//![0]
-import Charts 1.0
-import QtQuick 2.0
-
-Item {
- width: 300; height: 200
-
- Row {
- anchors.centerIn: parent
- spacing: 20
-
- PieChart {
- id: chartA
- width: 100; height: 100
- color: "red"
- }
-
- PieChart {
- id: chartB
- width: 100; height: 100
- color: chartA.color
- }
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: { chartA.color = "blue" }
- }
-
- Text {
- anchors {
- bottom: parent.bottom;
- horizontalCenter: parent.horizontalCenter;
- bottomMargin: 20
- }
- text: "Click anywhere to change the chart color"
- }
-}
-//![0]
diff --git a/examples/declarative/extending/chapter3-bindings/bindings.py b/examples/declarative/extending/chapter3-bindings/bindings.py
deleted file mode 100644
index cacac78da..000000000
--- a/examples/declarative/extending/chapter3-bindings/bindings.py
+++ /dev/null
@@ -1,113 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 port of the qml/tutorials/extending-qml/chapter3-bindings example from Qt v5.x"""
-
-import os
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import Property, Signal, Slot, QUrl, Qt
-from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
-from PySide6.QtQml import qmlRegisterType
-from PySide6.QtQuick import QQuickPaintedItem, QQuickView
-
-
-class PieChart (QQuickPaintedItem):
-
- chartCleared = Signal()
- nameChanged = Signal()
- colorChanged = Signal()
-
- def __init__(self, parent=None):
- QQuickPaintedItem.__init__(self, parent)
- self._name = u''
- self._color = QColor()
-
- def paint(self, painter):
- pen = QPen(self._color, 2)
- painter.setPen(pen)
- painter.setRenderHints(QPainter.Antialiasing, True)
- painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
-
- @Property(QColor, notify=colorChanged)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, value):
- if value != self._color:
- self._color = value
- self.update()
- self.colorChanged.emit()
-
- @Property(str, notify=nameChanged)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, value):
- self._name = value
-
- @Slot() # This should be something like @Invokable
- def clearChart(self):
- self.color = Qt.transparent
- self.update()
- self.chartCleared.emit()
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart')
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/extending/chapter4-customPropertyTypes/app.qml b/examples/declarative/extending/chapter4-customPropertyTypes/app.qml
deleted file mode 100644
index 29ad37d25..000000000
--- a/examples/declarative/extending/chapter4-customPropertyTypes/app.qml
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-//![0]
-import Charts 1.0
-import QtQuick 2.0
-
-Item {
- width: 300; height: 200
-
- PieChart {
- id: chart
- anchors.centerIn: parent
- width: 100; height: 100
-
- pieSlice: PieSlice {
- anchors.fill: parent
- color: "red"
- }
- }
-
- Component.onCompleted: console.log("The pie is colored " + chart.pieSlice.color)
-}
-//![0]
diff --git a/examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py b/examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py
deleted file mode 100644
index a4a74fef4..000000000
--- a/examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py
+++ /dev/null
@@ -1,116 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 port of the qml/tutorials/extending-qml/chapter4-customPropertyTypes example from Qt v5.x"""
-
-import os
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import Property, QUrl
-from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
-from PySide6.QtQml import qmlRegisterType
-from PySide6.QtQuick import QQuickPaintedItem, QQuickView, QQuickItem
-
-
-class PieSlice (QQuickPaintedItem):
-
- def __init__(self, parent=None):
- QQuickPaintedItem.__init__(self, parent)
- self._color = QColor()
-
- @Property(QColor)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, value):
- self._color = value
-
- def paint(self, painter):
- pen = QPen(self._color, 2)
- painter.setPen(pen)
- painter.setRenderHints(QPainter.Antialiasing, True)
- painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
-
-
-class PieChart (QQuickItem):
- def __init__(self, parent=None):
- QQuickItem.__init__(self, parent)
- self._name = None
- self._pieSlice = None
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, value):
- self._name = value
-
- @Property(PieSlice)
- def pieSlice(self):
- return self._pieSlice
-
- @pieSlice.setter
- def pieSlice(self, value):
- self._pieSlice = value
- self._pieSlice.setParentItem(self)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart')
- qmlRegisterType(PieSlice, "Charts", 1, 0, "PieSlice")
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/extending/chapter5-listproperties/app.qml b/examples/declarative/extending/chapter5-listproperties/app.qml
deleted file mode 100644
index 9ff6e3b6a..000000000
--- a/examples/declarative/extending/chapter5-listproperties/app.qml
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-//![0]
-import Charts 1.0
-import QtQuick 2.0
-
-Item {
- width: 300; height: 200
-
- PieChart {
- anchors.centerIn: parent
- width: 100; height: 100
-
- slices: [
- PieSlice {
- anchors.fill: parent
- color: "red"
- fromAngle: 0; angleSpan: 110
- },
- PieSlice {
- anchors.fill: parent
- color: "black"
- fromAngle: 110; angleSpan: 50
- },
- PieSlice {
- anchors.fill: parent
- color: "blue"
- fromAngle: 160; angleSpan: 100
- }
- ]
- }
-}
-//![0]
diff --git a/examples/declarative/extending/chapter5-listproperties/listproperties.py b/examples/declarative/extending/chapter5-listproperties/listproperties.py
deleted file mode 100644
index eeaba0858..000000000
--- a/examples/declarative/extending/chapter5-listproperties/listproperties.py
+++ /dev/null
@@ -1,130 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 port of the qml/tutorials/extending-qml/chapter5-listproperties example from Qt v5.x"""
-
-import os
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import Property, QUrl
-from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
-from PySide6.QtQml import qmlRegisterType, ListProperty
-from PySide6.QtQuick import QQuickPaintedItem, QQuickView, QQuickItem
-
-
-class PieSlice (QQuickPaintedItem):
- def __init__(self, parent=None):
- QQuickPaintedItem.__init__(self, parent)
- self._color = QColor()
- self._fromAngle = 0
- self._angleSpan = 0
-
- @Property(QColor)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, value):
- self._color = value
-
- @Property(int)
- def fromAngle(self):
- return self._angle
-
- @fromAngle.setter
- def fromAngle(self, value):
- self._fromAngle = value
-
- @Property(int)
- def angleSpan(self):
- return self._angleSpan
-
- @angleSpan.setter
- def angleSpan(self, value):
- self._angleSpan = value
-
- def paint(self, painter):
- pen = QPen(self._color, 2)
- painter.setPen(pen)
- painter.setRenderHints(QPainter.Antialiasing, True)
- painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), self._fromAngle * 16, self._angleSpan * 16)
-
-
-class PieChart (QQuickItem):
- def __init__(self, parent=None):
- QQuickItem.__init__(self, parent)
- self._name = u''
- self._slices = []
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, value):
- self._name = value
-
- def appendSlice(self, _slice):
- _slice.setParentItem(self)
- self._slices.append(_slice)
-
- slices = ListProperty(PieSlice, appendSlice)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart')
- qmlRegisterType(PieSlice, "Charts", 1, 0, "PieSlice")
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/scrolling/doc/scrolling.png b/examples/declarative/scrolling/doc/scrolling.png
deleted file mode 100644
index 6058c5930..000000000
--- a/examples/declarative/scrolling/doc/scrolling.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/scrolling/doc/scrolling.rst b/examples/declarative/scrolling/doc/scrolling.rst
deleted file mode 100644
index a16e39df7..000000000
--- a/examples/declarative/scrolling/doc/scrolling.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-Scrolling Example
-=================
-
-A Python application that demonstrates how to use a qml view
-and make it scrollable.
-
-.. image:: scrolling.png
- :width: 400
- :alt: Scrolling Screenshot
diff --git a/examples/declarative/scrolling/scrolling.py b/examples/declarative/scrolling/scrolling.py
deleted file mode 100644
index c585cc962..000000000
--- a/examples/declarative/scrolling/scrolling.py
+++ /dev/null
@@ -1,70 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QUrl
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-# This example uses a QML file to show a scrolling list containing
-# all the items listed in dataList.
-
-if __name__ == '__main__':
- dataList = ["Item 1", "Item 2", "Item 3", "Item 4"]
-
- app = QGuiApplication(sys.argv)
- view = QQuickView()
-
- ctxt = view.rootContext()
- ctxt.setContextProperty("myModel", dataList)
-
- qml_file = os.fspath(Path(__file__).resolve().parents[1] / 'usingmodel' / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
-
- app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
diff --git a/examples/declarative/scrolling/scrolling.pyproject b/examples/declarative/scrolling/scrolling.pyproject
deleted file mode 100644
index 105c321ca..000000000
--- a/examples/declarative/scrolling/scrolling.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["scrolling.py"]
-}
diff --git a/examples/declarative/signals/pytoqml1/main.py b/examples/declarative/signals/pytoqml1/main.py
deleted file mode 100644
index 3dc18adaf..000000000
--- a/examples/declarative/signals/pytoqml1/main.py
+++ /dev/null
@@ -1,69 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QTimer, QUrl
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- timer = QTimer()
- timer.start(2000)
-
- view = QQuickView()
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- root = view.rootObject()
-
- timer.timeout.connect(root.updateRotater)
-
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/pytoqml1/view.qml b/examples/declarative/signals/pytoqml1/view.qml
deleted file mode 100644
index a35b4866a..000000000
--- a/examples/declarative/signals/pytoqml1/view.qml
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-Rectangle {
- id: page
-
- function updateRotater() {
- rotater.angle = rotater.angle + 45
- }
-
- width: 500; height: 200
- color: "lightgray"
-
- Rectangle {
- id: rotater
- property real angle : 0
- x: 240
- width: 100; height: 10
- color: "black"
- y: 95
-
- transform: Rotation {
- origin.x: 10; origin.y: 5
- angle: rotater.angle
- Behavior on angle {
- SpringAnimation {
- spring: 1.4
- damping: .05
- }
- }
- }
- }
-
-}
diff --git a/examples/declarative/signals/pytoqml2/main.py b/examples/declarative/signals/pytoqml2/main.py
deleted file mode 100644
index 30ec5a4f6..000000000
--- a/examples/declarative/signals/pytoqml2/main.py
+++ /dev/null
@@ -1,85 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QObject, QTimer, QUrl, Signal, Slot
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-
-class RotateValue(QObject):
- valueChanged = Signal(int, arguments=['val'])
-
- def __init__(self):
- super().__init__()
- self.r = 0
-
- @Slot()
- def increment(self):
- self.r = self.r + 10
- self.valueChanged.emit(self.r)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
-
- rotatevalue = RotateValue()
- timer = QTimer()
- timer.start(2000)
- context = view.rootContext()
- context.setContextProperty("rotatevalue", rotatevalue)
-
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
-
- timer.timeout.connect(rotatevalue.increment)
-
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make
- # sure all child QML instances are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/pytoqml2/view.qml b/examples/declarative/signals/pytoqml2/view.qml
deleted file mode 100644
index 41b185af0..000000000
--- a/examples/declarative/signals/pytoqml2/view.qml
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import QtQml 2.0
-
-Rectangle {
- id: page
-
- width: 500; height: 200
- color: "lightgray"
-
- Text {
- id: helloText
- text: "Hello world!"
- anchors.horizontalCenter: page.horizontalCenter
- y: 30
- font.pointSize: 24; font.bold: true
- }
-
- Connections {
- target: rotatevalue
- function onValueChanged(val) {
- helloText.rotation = val
- }
- }
-}
diff --git a/examples/declarative/signals/qmltopy1/main.py b/examples/declarative/signals/qmltopy1/main.py
deleted file mode 100644
index d323d9a0f..000000000
--- a/examples/declarative/signals/qmltopy1/main.py
+++ /dev/null
@@ -1,87 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QObject, QUrl, Slot
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-
-class Console(QObject):
- """Output stuff on the console."""
-
- @Slot(str)
- @Slot('double')
- def output(self, s):
- print(s)
-
- @Slot(str)
- def outputStr(self, s):
- print(s)
-
- @Slot('double')
- def outputFloat(self, x):
- print(x)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
-
- # Instantiate the Python object.
- con = Console()
-
- # Expose the object to QML.
- context = view.rootContext()
- context.setContextProperty("con", con)
-
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy1/view.qml b/examples/declarative/signals/qmltopy1/view.qml
deleted file mode 100644
index 32a66eff4..000000000
--- a/examples/declarative/signals/qmltopy1/view.qml
+++ /dev/null
@@ -1,85 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-import QtQuick 2.0
-
-Rectangle {
- id: page
-
- width: 500; height: 200
- color: "lightgray"
-
- Text {
- id: helloText
- text: "Hello world!"
- anchors.horizontalCenter: page.horizontalCenter
- y: 30
- font.pointSize: 24; font.bold: true
- }
-
- Rectangle {
- id: button
- width: 150; height: 40
- color: "darkgray"
- anchors.horizontalCenter: page.horizontalCenter
- y: 120
- MouseArea {
- id: buttonMouseArea
- objectName: "buttonMouseArea"
- anchors.fill: parent
- onClicked: {
- // once the "con" context has been declared,
- // slots can be called like functions
- con.outputFloat(123)
- con.outputStr("foobar")
- con.output(helloText.x)
- con.output(helloText.text)
- }
- }
- Text {
- id: buttonText
- text: "Press me!"
- anchors.horizontalCenter: button.horizontalCenter
- anchors.verticalCenter: button.verticalCenter
- font.pointSize: 16
- }
- }
-}
diff --git a/examples/declarative/signals/qmltopy2/main.py b/examples/declarative/signals/qmltopy2/main.py
deleted file mode 100644
index 1bf22b2af..000000000
--- a/examples/declarative/signals/qmltopy2/main.py
+++ /dev/null
@@ -1,80 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QObject, QUrl, Slot
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-
-class RotateValue(QObject):
- def __init__(self):
- super().__init__()
- self.r = 0
-
- # If a slot returns a value, the return value type must be explicitly
- # defined in the decorator.
- @Slot(result=int)
- def val(self):
- self.r = self.r + 10
- return self.r
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
-
- rotatevalue = RotateValue()
- context = view.rootContext()
- context.setContextProperty("rotatevalue", rotatevalue)
-
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy2/view.qml b/examples/declarative/signals/qmltopy2/view.qml
deleted file mode 100644
index 6fe6087f2..000000000
--- a/examples/declarative/signals/qmltopy2/view.qml
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-Rectangle {
- id: page
-
- width: 500; height: 200
- color: "lightgray"
-
- Text {
- id: helloText
- text: "Hello world!"
- anchors.horizontalCenter: page.horizontalCenter
- y: 30
- font.pointSize: 24; font.bold: true
- }
-
-
- Rectangle {
- id: button
- width: 150; height: 40
- color: "darkgray"
- anchors.horizontalCenter: page.horizontalCenter
- y: 120
- MouseArea {
- id: buttonMouseArea
- objectName: "buttonMouseArea"
- anchors.fill: parent
- onClicked: {
- helloText.rotation = rotatevalue.val()
- }
- }
- Text {
- id: buttonText
- text: "Press me!"
- anchors.horizontalCenter: button.horizontalCenter
- anchors.verticalCenter: button.verticalCenter
- font.pointSize: 16
- }
- }
-}
diff --git a/examples/declarative/signals/qmltopy3/main.py b/examples/declarative/signals/qmltopy3/main.py
deleted file mode 100644
index 0f6523125..000000000
--- a/examples/declarative/signals/qmltopy3/main.py
+++ /dev/null
@@ -1,71 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QUrl
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-
-def sayThis(s):
- print(s)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
-
- root = view.rootObject()
- root.textRotationChanged.connect(sayThis)
- root.buttonClicked.connect(lambda: sayThis("clicked button (QML top-level signal)"))
-
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy3/view.qml b/examples/declarative/signals/qmltopy3/view.qml
deleted file mode 100644
index 9657cd4a8..000000000
--- a/examples/declarative/signals/qmltopy3/view.qml
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-Rectangle {
- id: page
-
- signal buttonClicked
- signal textRotationChanged(double rot)
-
- width: 500; height: 200
- color: "lightgray"
-
- Text {
- id: helloText
- text: "Hello world!"
- y: 30
- x: page.width/2-width/2
- font.pointSize: 24; font.bold: true
- onRotationChanged: textRotationChanged(rotation)
-
- states: State {
- name: "down"; when: buttonMouseArea.pressed === true
- PropertyChanges {
- target: helloText;
- rotation: 180;
- y: 100;
- }
- }
-
- transitions: Transition {
- from: ""; to: "down"; reversible: true
- ParallelAnimation {
- NumberAnimation {
- properties: "y,rotation"
- duration: 500
- easing.type: Easing.InOutQuad
- }
- }
- }
- }
-
- Rectangle {
- id: button
- width: 150; height: 40
- color: "darkgray"
- anchors.horizontalCenter: page.horizontalCenter
- y: 120
- MouseArea {
- id: buttonMouseArea
- objectName: "buttonMouseArea"
- anchors.fill: parent
- onClicked: {
- buttonClicked()
- }
- }
- Text {
- id: buttonText
- text: "Press me!"
- anchors.horizontalCenter: button.horizontalCenter
- anchors.verticalCenter: button.verticalCenter
- font.pointSize: 16
- }
- }
-}
diff --git a/examples/declarative/signals/qmltopy4/main.py b/examples/declarative/signals/qmltopy4/main.py
deleted file mode 100644
index 96183c02d..000000000
--- a/examples/declarative/signals/qmltopy4/main.py
+++ /dev/null
@@ -1,71 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QObject, QUrl
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-
-def sayThis(s):
- print(s)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
-
- root = view.rootObject()
- button = root.findChild(QObject, "buttonMouseArea")
- button.clicked.connect(lambda: sayThis("clicked button (signal directly connected)"))
-
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy4/view.qml b/examples/declarative/signals/qmltopy4/view.qml
deleted file mode 100644
index 0d1349fad..000000000
--- a/examples/declarative/signals/qmltopy4/view.qml
+++ /dev/null
@@ -1,68 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-Rectangle {
- id: page
-
- width: 500; height: 200
- color: "lightgray"
-
- Rectangle {
- id: button
- width: 150; height: 40
- color: "darkgray"
- anchors.horizontalCenter: page.horizontalCenter
- anchors.verticalCenter: page.verticalCenter
- MouseArea {
- id: buttonMouseArea
- objectName: "buttonMouseArea"
- anchors.fill: parent
- }
- Text {
- id: buttonText
- text: "Press me!"
- anchors.horizontalCenter: button.horizontalCenter
- anchors.verticalCenter: button.verticalCenter
- font.pointSize: 16
- }
- }
-}
diff --git a/examples/declarative/textproperties/doc/textproperties.rst b/examples/declarative/textproperties/doc/textproperties.rst
deleted file mode 100644
index a67e35f0f..000000000
--- a/examples/declarative/textproperties/doc/textproperties.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-Text Properties Example
-=======================
-
-A Python application that demonstrates how to load a qml file
-using Material design, to change the look of text.
-
-.. image:: scrolling.png
- :width: 400
- :alt: Text Properties Screenshot
diff --git a/examples/declarative/textproperties/main.py b/examples/declarative/textproperties/main.py
deleted file mode 100644
index 48a3f1d91..000000000
--- a/examples/declarative/textproperties/main.py
+++ /dev/null
@@ -1,113 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import sys
-from os.path import abspath, dirname, join
-
-from PySide6.QtCore import QObject, Slot
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQml import QQmlApplicationEngine
-from PySide6.QtQuickControls2 import QQuickStyle
-
-
-class Bridge(QObject):
-
- @Slot(str, result=str)
- def getColor(self, s):
- if s.lower() == "red":
- return "#ef9a9a"
- elif s.lower() == "green":
- return "#a5d6a7"
- elif s.lower() == "blue":
- return "#90caf9"
- else:
- return "white"
-
- @Slot(float, result=int)
- def getSize(self, s):
- size = int(s * 34)
- if size <= 0:
- return 1
- else:
- return size
-
- @Slot(str, result=bool)
- def getItalic(self, s):
- if s.lower() == "italic":
- return True
- else:
- return False
-
- @Slot(str, result=bool)
- def getBold(self, s):
- if s.lower() == "bold":
- return True
- else:
- return False
-
- @Slot(str, result=bool)
- def getUnderline(self, s):
- if s.lower() == "underline":
- return True
- else:
- return False
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- QQuickStyle.setStyle("Material")
- engine = QQmlApplicationEngine()
-
- # Instance of the Python object
- bridge = Bridge()
-
- # Expose the Python object to QML
- context = engine.rootContext()
- context.setContextProperty("con", bridge)
-
- # Get the path of the current directory, and then add the name
- # of the QML file, to load it.
- qmlFile = join(dirname(__file__), 'view.qml')
- engine.load(abspath(qmlFile))
-
- if not engine.rootObjects():
- sys.exit(-1)
-
- sys.exit(app.exec())
diff --git a/examples/declarative/textproperties/view.qml b/examples/declarative/textproperties/view.qml
deleted file mode 100644
index 98289a1ba..000000000
--- a/examples/declarative/textproperties/view.qml
+++ /dev/null
@@ -1,191 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-import QtQuick 2.0
-import QtQuick.Layouts 1.11
-import QtQuick.Controls 2.1
-import QtQuick.Window 2.1
-import QtQuick.Controls.Material 2.1
-
-ApplicationWindow {
- id: page
- width: 800
- height: 400
- visible: true
- Material.theme: Material.Dark
- Material.accent: Material.Red
-
- GridLayout {
- id: grid
- columns: 2
- rows: 3
-
- ColumnLayout {
- spacing: 2
- Layout.columnSpan: 1
- Layout.preferredWidth: 400
-
- Text {
- id: leftlabel
- Layout.alignment: Qt.AlignHCenter
- color: "white"
- font.pointSize: 16
- text: "Qt for Python"
- Layout.preferredHeight: 100
- Material.accent: Material.Green
- }
-
- RadioButton {
- id: italic
- Layout.alignment: Qt.AlignLeft
- text: "Italic"
- onToggled: {
- leftlabel.font.italic = con.getItalic(italic.text)
- leftlabel.font.bold = con.getBold(italic.text)
- leftlabel.font.underline = con.getUnderline(italic.text)
-
- }
- }
- RadioButton {
- id: bold
- Layout.alignment: Qt.AlignLeft
- text: "Bold"
- onToggled: {
- leftlabel.font.italic = con.getItalic(bold.text)
- leftlabel.font.bold = con.getBold(bold.text)
- leftlabel.font.underline = con.getUnderline(bold.text)
- }
- }
- RadioButton {
- id: underline
- Layout.alignment: Qt.AlignLeft
- text: "Underline"
- onToggled: {
- leftlabel.font.italic = con.getItalic(underline.text)
- leftlabel.font.bold = con.getBold(underline.text)
- leftlabel.font.underline = con.getUnderline(underline.text)
- }
- }
- RadioButton {
- id: noneradio
- Layout.alignment: Qt.AlignLeft
- text: "None"
- checked: true
- onToggled: {
- leftlabel.font.italic = con.getItalic(noneradio.text)
- leftlabel.font.bold = con.getBold(noneradio.text)
- leftlabel.font.underline = con.getUnderline(noneradio.text)
- }
- }
- }
-
- ColumnLayout {
- id: rightcolumn
- spacing: 2
- Layout.columnSpan: 1
- Layout.preferredWidth: 400
- Layout.preferredHeight: 400
- Layout.fillWidth: true
-
- RowLayout {
- Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
-
-
- Button {
- id: red
- text: "Red"
- highlighted: true
- Material.accent: Material.Red
- onClicked: {
- leftlabel.color = con.getColor(red.text)
- }
- }
- Button {
- id: green
- text: "Green"
- highlighted: true
- Material.accent: Material.Green
- onClicked: {
- leftlabel.color = con.getColor(green.text)
- }
- }
- Button {
- id: blue
- text: "Blue"
- highlighted: true
- Material.accent: Material.Blue
- onClicked: {
- leftlabel.color = con.getColor(blue.text)
- }
- }
- Button {
- id: nonebutton
- text: "None"
- highlighted: true
- Material.accent: Material.BlueGrey
- onClicked: {
- leftlabel.color = con.getColor(nonebutton.text)
- }
- }
- }
- RowLayout {
- Layout.fillWidth: true
- Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
- Text {
- id: rightlabel
- color: "white"
- Layout.alignment: Qt.AlignLeft
- text: "Font size"
- Material.accent: Material.White
- }
- Slider {
- width: rightcolumn.width*0.6
- Layout.alignment: Qt.AlignRight
- id: slider
- value: 0.5
- onValueChanged: {
- leftlabel.font.pointSize = con.getSize(value)
- }
- }
- }
- }
- }
-}
diff --git a/examples/declarative/usingmodel/doc/usingmodel.rst b/examples/declarative/usingmodel/doc/usingmodel.rst
deleted file mode 100644
index 11b476d09..000000000
--- a/examples/declarative/usingmodel/doc/usingmodel.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-Using Model Example
-===================
-
-A Python application that demonstrates how to use a :ref:`QAbstractListModel`
-with QML.
-
-.. image:: usingmodel.png
- :width: 400
- :alt: Using Model Screenshot
diff --git a/examples/declarative/usingmodel/usingmodel.py b/examples/declarative/usingmodel/usingmodel.py
deleted file mode 100644
index bd1fa2eba..000000000
--- a/examples/declarative/usingmodel/usingmodel.py
+++ /dev/null
@@ -1,101 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QAbstractListModel, Qt, QUrl, QByteArray
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-
-class PersonModel (QAbstractListModel):
- MyRole = Qt.UserRole + 1
-
- def __init__(self, parent=None):
- QAbstractListModel.__init__(self, parent)
- self._data = []
-
- def roleNames(self):
- roles = {
- PersonModel.MyRole: QByteArray(b'modelData'),
- Qt.DisplayRole: QByteArray(b'display')
- }
- return roles
-
- def rowCount(self, index):
- return len(self._data)
-
- def data(self, index, role):
- d = self._data[index.row()]
-
- if role == Qt.DisplayRole:
- return d['name']
- elif role == Qt.DecorationRole:
- return Qt.black
- elif role == PersonModel.MyRole:
- return d['myrole']
- return None
-
- def populate(self):
- self._data.append({'name': 'Qt', 'myrole': 'role1'})
- self._data.append({'name': 'PySide', 'myrole': 'role2'})
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
-
- myModel = PersonModel()
- myModel.populate()
-
- view.rootContext().setContextProperty("myModel", myModel)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
-
- app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
diff --git a/examples/declarative/usingmodel/view.qml b/examples/declarative/usingmodel/view.qml
deleted file mode 100644
index 8eb4f7f97..000000000
--- a/examples/declarative/usingmodel/view.qml
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-ListView {
- width: 100
- height: 100
- anchors.fill: parent
- model: myModel
- delegate: Component {
- Rectangle {
- height: 25
- width: 100
- Text {
- function displayText() {
- var result = ""
- if (typeof display !== "undefined")
- result = display + ": "
- result += modelData
- return result
- }
-
- text: displayText()
- }
- }
- }
-}
diff --git a/examples/demos/colorpaletteclient/ColorPalette/ColorDialogDelete.qml b/examples/demos/colorpaletteclient/ColorPalette/ColorDialogDelete.qml
new file mode 100644
index 000000000..0fd26e4d0
--- /dev/null
+++ b/examples/demos/colorpaletteclient/ColorPalette/ColorDialogDelete.qml
@@ -0,0 +1,71 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+import QtExampleStyle
+
+Popup {
+ id: colorDeleter
+ padding: 10
+ modal: true
+ focus: true
+ anchors.centerIn: parent
+ closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
+ signal deleteClicked(int cid)
+
+ property int colorId: -1
+
+ property string colorName: ""
+
+ function maybeDelete(color_id, name) {
+ colorName = name
+ colorId = color_id
+ open()
+ }
+
+
+ ColumnLayout {
+ anchors.fill: parent
+ spacing: 10
+
+ Text {
+ color: "#222222"
+ text: qsTr("Delete Color?")
+ font.pixelSize: 16
+ font.bold: true
+ }
+
+ Text {
+ color: "#222222"
+ text: qsTr("Are you sure, you want to delete color") + " \"" + colorDeleter.colorName + "\"?"
+ font.pixelSize: 12
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+ spacing: 10
+
+ Button {
+ Layout.fillWidth: true
+ text: qsTr("Cancel")
+ onClicked: colorDeleter.close()
+ }
+
+ Button {
+ Layout.fillWidth: true
+ text: qsTr("Delete")
+
+ buttonColor: "#CC1414"
+ textColor: "#FFFFFF"
+
+ onClicked: {
+ colorDeleter.deleteClicked(colorDeleter.colorId)
+ colorDeleter.close()
+ }
+ }
+ }
+ }
+}
diff --git a/examples/demos/colorpaletteclient/ColorPalette/ColorDialogEditor.qml b/examples/demos/colorpaletteclient/ColorPalette/ColorDialogEditor.qml
new file mode 100644
index 000000000..cba6e5a76
--- /dev/null
+++ b/examples/demos/colorpaletteclient/ColorPalette/ColorDialogEditor.qml
@@ -0,0 +1,139 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import QtQuick.Dialogs
+
+import QtExampleStyle
+
+Popup {
+ id: colorEditor
+ // Popup for adding or updating a color
+ padding: 10
+ modal: true
+ focus: true
+ anchors.centerIn: parent
+ closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
+ signal colorAdded(string name, string color, string pantone_value)
+ signal colorUpdated(string name, string color, string pantone_value, int cid)
+
+ property bool newColor: true
+ property int colorId: -1
+ property alias currentColor: colordialogButton.buttonColor
+
+ function createNewColor() {
+ newColor = true
+ colorNameField.text = "cute green"
+ colorRGBField.text = "#41cd52"
+ colorPantoneField.text = "PMS 802C"
+ open()
+ }
+
+ function updateColor(color_id, name, color, pantone_value) {
+ newColor = false
+ colorNameField.text = name
+ currentColor = color
+ colorPantoneField.text = pantone_value
+ colorId = color_id
+ open()
+ }
+
+ ColorDialog {
+ id: colorDialog
+ title: qsTr("Choose a color")
+ onAccepted: {
+ colorEditor.currentColor = Qt.color(colorDialog.selectedColor)
+ colorDialog.close()
+ }
+ onRejected: {
+ colorDialog.close()
+ }
+ }
+
+ ColumnLayout {
+ anchors.fill: parent
+ spacing: 10
+
+ GridLayout {
+ columns: 2
+ rowSpacing: 10
+ columnSpacing: 10
+
+ Label {
+ text: qsTr("Color Name")
+ }
+ TextField {
+ id: colorNameField
+ padding: 10
+ }
+
+ Label {
+ text: qsTr("Pantone Value")
+ }
+ TextField {
+ id: colorPantoneField
+ padding: 10
+ }
+
+ Label {
+ text: qsTr("Rgb Value")
+ }
+
+ TextField {
+ id: colorRGBField
+ text: colorEditor.currentColor.toString()
+ readOnly: true
+ padding: 10
+ }
+ }
+
+ Button {
+ id: colordialogButton
+ Layout.fillWidth: true
+ Layout.preferredHeight: 30
+ text: qsTr("Set Color")
+ textColor: isColorDark(buttonColor) ? "#E6E6E6" : "#191919"
+
+ onClicked: colorDialog.open()
+
+ function isColorDark(color) {
+ return (0.2125 * color.r + 0.7154 * color.g + 0.0721 * color.b) < 0.5;
+ }
+ }
+
+ RowLayout {
+ Layout.fillWidth: true
+ spacing: 10
+
+ Button {
+ text: qsTr("Cancel")
+ onClicked: colorEditor.close()
+ Layout.fillWidth: true
+ }
+
+ Button {
+ Layout.fillWidth: true
+ text: colorEditor.newColor ? qsTr("Add") : qsTr("Update")
+
+ buttonColor: "#2CDE85"
+ textColor: "#FFFFFF"
+
+ onClicked: {
+ if (colorEditor.newColor) {
+ colorEditor.colorAdded(colorNameField.text,
+ colorRGBField.text,
+ colorPantoneField.text)
+ } else {
+ colorEditor.colorUpdated(colorNameField.text,
+ colorRGBField.text,
+ colorPantoneField.text,
+ colorEditor.colorId)
+ }
+ colorEditor.close()
+ }
+ }
+ }
+ }
+}
diff --git a/examples/demos/colorpaletteclient/ColorPalette/ColorView.qml b/examples/demos/colorpaletteclient/ColorPalette/ColorView.qml
new file mode 100644
index 000000000..c6ad36f80
--- /dev/null
+++ b/examples/demos/colorpaletteclient/ColorPalette/ColorView.qml
@@ -0,0 +1,381 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import QtQuick.Effects
+import QtQuick.Shapes
+
+import QtExampleStyle
+import ColorPalette
+
+Item {
+ id: root
+ required property BasicLogin loginService
+ required property PaginatedColorsResource colors
+ required property PaginatedColorUsersResource colorViewUsers
+
+ ColorDialogEditor {
+ id: colorPopup
+ onColorAdded: (colorNameField, colorRGBField, colorPantoneField) => {
+ root.colors.add({"name" : colorNameField,
+ "color" : colorRGBField,
+ "pantone_value" : colorPantoneField})
+ }
+
+ onColorUpdated: (colorNameField, colorRGBField, colorPantoneField, cid) => {
+ root.colors.update({"name" : colorNameField,
+ "color" : colorRGBField,
+ "pantone_value" : colorPantoneField},
+ cid)
+ }
+ }
+
+ ColorDialogDelete {
+ id: colorDeletePopup
+ onDeleteClicked: (cid) => {
+ root.colors.remove(cid)
+ }
+ }
+
+ ColumnLayout {
+ // The main application layout
+ anchors.fill :parent
+
+ ToolBar {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 25 + 4
+
+ UserMenu {
+ id: userMenu
+
+ userMenuUsers: root.colorViewUsers
+ userLoginService: root.loginService
+ }
+
+ RowLayout {
+ anchors.fill: parent
+ Text {
+ text: qsTr("QHTTP Server")
+ font.pixelSize: 8
+ color: "#667085"
+ }
+ Item { Layout.fillWidth: true }
+
+ AbstractButton {
+ id: loginButton
+ Layout.preferredWidth: 25
+ Layout.preferredHeight: 25
+ Item {
+ id: userImageCliped
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ width: 25
+ height: 25
+
+ Image {
+ id: userImage
+ anchors.fill: parent
+ source: getCurrentUserImage()
+ visible: false
+
+ function getCurrentUserImage() {
+ if (root.loginService.loggedIn)
+ return users.avatarForEmail(loginService.user)
+ return "qrc:/qt/qml/ColorPalette/icons/user.svg";
+ }
+ }
+
+ Image {
+ id: userMask
+ source: "qrc:/qt/qml/ColorPalette/icons/userMask.svg"
+ anchors.fill: userImage
+ anchors.margins: 4
+ visible: false
+ }
+
+ MultiEffect {
+ source: userImage
+ anchors.fill: userImage
+ maskSource: userMask
+ maskEnabled: true
+ }
+ }
+
+ onClicked: {
+ userMenu.open()
+ var pos = mapToGlobal(Qt.point(x, y))
+ pos = userMenu.parent.mapFromGlobal(pos)
+ userMenu.x = x - userMenu.width + 25 + 3
+ userMenu.y = y + 25 + 3
+ }
+
+ Shape {
+ id: bubble
+ x: -text.width - 25
+ anchors.margins: 3
+
+ preferredRendererType: Shape.CurveRenderer
+
+ visible: !root.loginService.loggedIn
+
+ ShapePath {
+ strokeWidth: 0
+ fillColor: "#667085"
+ startX: 5; startY: 0
+ PathLine { x: 5 + text.width + 6; y: 0 }
+ PathArc { x: 10 + text.width + 6; y: 5; radiusX: 5; radiusY: 5}
+ // arrow
+ PathLine { x: 10 + text.width + 6; y: 8 + text.height / 2 - 6 }
+ PathLine { x: 10 + text.width + 6 + 6; y: 8 + text.height / 2 }
+ PathLine { x: 10 + text.width + 6; y: 8 + text.height / 2 + 6}
+ PathLine { x: 10 + text.width + 6; y: 5 + text.height + 6 }
+ // end arrow
+ PathArc { x: 5 + text.width + 6; y: 10 + text.height + 6 ; radiusX: 5; radiusY: 5}
+ PathLine { x: 5; y: 10 + text.height + 6 }
+ PathArc { x: 0; y: 5 + text.height + 6 ; radiusX: 5; radiusY: 5}
+ PathLine { x: 0; y: 5 }
+ PathArc { x: 5; y: 0 ; radiusX: 5; radiusY: 5}
+ }
+ Text {
+ x: 8
+ y: 8
+ id: text
+ color: "white"
+ text: qsTr("Log in to edit")
+ font.bold: true
+ horizontalAlignment: Qt.AlignHCenter
+ verticalAlignment: Qt.AlignVCenter
+ }
+ }
+ }
+ }
+
+ Image {
+ anchors.centerIn: parent
+ source: "qrc:/qt/qml/ColorPalette/icons/qt.png"
+ fillMode: Image.PreserveAspectFit
+ height: 25
+ }
+
+ }
+ ToolBar {
+ Layout.fillWidth: true
+ Layout.minimumHeight: 32
+
+ RowLayout {
+ anchors.fill: parent
+ Text {
+ Layout.alignment: Qt.AlignVCenter
+ text: qsTr("Color Palette")
+ font.pixelSize: 14
+ font.bold: true
+ color: "#667085"
+ }
+
+ Item { Layout.fillWidth: true }
+
+ AbstractButton {
+ Layout.preferredWidth: 25
+ Layout.preferredHeight: 25
+ Layout.alignment: Qt.AlignVCenter
+
+ Rectangle {
+ anchors.fill: parent
+ radius: 4
+ color: "#192CDE85"
+ border.color: "#DDE2E8"
+ border.width: 1
+ }
+
+ Image {
+ source: UIStyle.iconPath("plus")
+ fillMode: Image.PreserveAspectFit
+ anchors.fill: parent
+ sourceSize.width: width
+ sourceSize.height: height
+
+ }
+ visible: root.loginService.loggedIn
+ onClicked: colorPopup.createNewColor()
+ }
+
+ AbstractButton {
+ Layout.preferredWidth: 25
+ Layout.preferredHeight: 25
+ Layout.alignment: Qt.AlignVCenter
+
+ Rectangle {
+ anchors.fill: parent
+ radius: 4
+ color: "#192CDE85"
+ border.color: "#DDE2E8"
+ border.width: 1
+ }
+
+ Image {
+ source: UIStyle.iconPath("update")
+ fillMode: Image.PreserveAspectFit
+ anchors.fill: parent
+ sourceSize.width: width
+ sourceSize.height: height
+ }
+
+ onClicked: {
+ root.colors.refreshCurrentPage()
+ root.colorViewUsers.refreshCurrentPage()
+ }
+ }
+ }
+ }
+
+
+
+ //! [View and model]
+ ListView {
+ id: colorListView
+
+ model: root.colors.model
+ //! [View and model]
+ footerPositioning: ListView.OverlayFooter
+ spacing: 15
+ clip: true
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ header: Rectangle {
+ height: 32
+ width: parent.width
+ color: "#F0F1F3"
+
+ RowLayout {
+ anchors.fill: parent
+
+ component HeaderText : Text {
+ Layout.alignment: Qt.AlignVCenter
+ horizontalAlignment: Qt.AlignHCenter
+
+ font.pixelSize: 12
+ color: "#667085"
+ }
+ HeaderText {
+ id: headerName
+ text: qsTr("Color Name")
+ Layout.preferredWidth: colorListView.width * 0.3
+ }
+ HeaderText {
+ id: headerRgb
+ text: qsTr("Rgb Value")
+ Layout.preferredWidth: colorListView.width * 0.25
+ }
+ HeaderText {
+ id: headerPantone
+ text: qsTr("Pantone Value")
+ Layout.preferredWidth: colorListView.width * 0.25
+ }
+ HeaderText {
+ id: headerAction
+ text: qsTr("Action")
+ Layout.preferredWidth: colorListView.width * 0.2
+ }
+ }
+ }
+
+ delegate: Item {
+ id: colorInfo
+
+ required property int color_id
+ required property string name
+ required property string color
+ required property string pantone_value
+
+ width: colorListView.width
+ height: 25
+ RowLayout {
+ anchors.fill: parent
+ anchors.leftMargin: 5
+ anchors.rightMargin: 5
+
+ Rectangle {
+ id: colorSample
+ Layout.alignment: Qt.AlignVCenter
+ implicitWidth: 36
+ implicitHeight: 21
+ radius: 6
+ color: colorInfo.color
+ }
+
+ Text {
+ Layout.preferredWidth: colorInfo.width * 0.3 - colorSample.width
+ horizontalAlignment: Qt.AlignLeft
+ leftPadding: 5
+ text: colorInfo.name
+ }
+
+ Text {
+ Layout.preferredWidth: colorInfo.width * 0.25
+ horizontalAlignment: Qt.AlignHCenter
+ text: colorInfo.color
+ }
+
+ Text {
+ Layout.preferredWidth: colorInfo.width * 0.25
+ horizontalAlignment: Qt.AlignHCenter
+ text: colorInfo.pantone_value
+ }
+
+ Item {
+ Layout.maximumHeight: 28
+ implicitHeight: buttonBox.implicitHeight
+ implicitWidth: buttonBox.implicitWidth
+
+ RowLayout {
+ id: buttonBox
+ anchors.fill: parent
+ ToolButton {
+ icon.source: UIStyle.iconPath("delete")
+ enabled: root.loginService.loggedIn
+ onClicked: colorDeletePopup.maybeDelete(color_id, name)
+ }
+ ToolButton {
+ icon.source: UIStyle.iconPath("edit")
+ enabled: root.loginService.loggedIn
+ onClicked: colorPopup.updateColor(color_id, name, color, pantone_value)
+ }
+ }
+ }
+ }
+ }
+
+ footer: ToolBar {
+ // Paginate buttons if more than one page
+ visible: root.colors.pages > 1
+ implicitWidth: parent.width
+
+ RowLayout {
+ anchors.fill: parent
+
+ Item { Layout.fillWidth: true /* spacer */ }
+
+ Repeater {
+ model: root.colors.pages
+
+ ToolButton {
+ text: page
+ font.bold: root.colors.page === page
+
+ required property int index
+ readonly property int page: (index + 1)
+
+ onClicked: root.colors.page = page
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/demos/colorpaletteclient/ColorPalette/Main.qml b/examples/demos/colorpaletteclient/ColorPalette/Main.qml
new file mode 100644
index 000000000..ae1e85533
--- /dev/null
+++ b/examples/demos/colorpaletteclient/ColorPalette/Main.qml
@@ -0,0 +1,62 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+
+import QtQuick
+
+import ColorPalette
+
+Window {
+ id: window
+ width: 500
+ height: 400
+ visible: true
+ title: qsTr("Color Palette Client")
+
+ enum DataView {
+ UserView = 0,
+ ColorView = 1
+ }
+
+ ServerSelection {
+ id: serverview
+ anchors.fill: parent
+ onServerSelected: {colorview.visible = true; serverview.visible = false}
+ colorResources: colors
+ restPalette: paletteService
+ colorUsers: users
+ }
+
+ ColorView {
+ id: colorview
+ anchors.fill: parent
+ visible: false
+ loginService: colorLogin
+ colors: colors
+ colorViewUsers: users
+ }
+
+ //! [RestService QML element]
+ RestService {
+ id: paletteService
+
+ PaginatedColorUsersResource {
+ id: users
+ path: "/api/users"
+ }
+
+ PaginatedColorsResource {
+ id: colors
+ path: "/api/unknown"
+ }
+
+ BasicLogin {
+ id: colorLogin
+ loginPath: "/api/login"
+ logoutPath: "/api/logout"
+ }
+ }
+ //! [RestService QML element]
+
+}
diff --git a/examples/demos/colorpaletteclient/ColorPalette/ServerSelection.qml b/examples/demos/colorpaletteclient/ColorPalette/ServerSelection.qml
new file mode 100644
index 000000000..c170773cc
--- /dev/null
+++ b/examples/demos/colorpaletteclient/ColorPalette/ServerSelection.qml
@@ -0,0 +1,241 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+import ColorPalette
+import QtExampleStyle
+
+pragma ComponentBehavior: Bound
+
+Item {
+ id: root
+ // A popup for selecting the server URL
+
+ signal serverSelected()
+
+ required property PaginatedColorsResource colorResources
+ required property PaginatedColorUsersResource colorUsers
+ required property RestService restPalette
+
+ Connections {
+ target: root.colorResources
+ // Closes the URL selection popup once we have received data successfully
+ function onDataUpdated() {
+ fetchTester.stop()
+ root.serverSelected()
+ }
+ }
+
+
+ ListModel {
+ id: server
+ ListElement {
+ title: qsTr("Public REST API Test Server")
+ url: "https://reqres.in"
+ icon: "qrc:/qt/qml/ColorPalette/icons/testserver.png"
+ }
+ ListElement {
+ title: qsTr("Qt-based REST API server")
+ url: "http://127.0.0.1:49425"
+ icon: "qrc:/qt/qml/ColorPalette/icons/qt.png"
+ }
+ }
+
+
+ ColumnLayout {
+ anchors.fill: parent
+ anchors.margins: 20
+ spacing: 10
+
+ Image {
+ Layout.alignment: Qt.AlignHCenter
+ source: "qrc:/qt/qml/ColorPalette/icons/qt.png"
+ fillMode: Image.PreserveAspectFit
+ Layout.preferredWidth: 20
+ }
+
+ Label {
+ text: qsTr("Choose a server")
+ Layout.alignment: Qt.AlignHCenter
+ font.pixelSize: 24
+ }
+
+ component ServerListDelegate: Rectangle {
+ id: serverListDelegate
+ required property string title
+ required property string url
+ required property string icon
+ required property int index
+
+ radius: 10
+ color: "#00000000"
+
+ border.color: ListView.view.currentIndex === index ? "#2CDE85" : "#E0E2E7"
+ border.width: 2
+
+ implicitWidth: 180
+ implicitHeight: 100
+
+ Rectangle {
+ id: img
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.topMargin: 10
+ anchors.leftMargin: 20
+
+ width: 30
+ height: 30
+ radius: 200
+ border. color: "#E7F4EE"
+ border.width: 5
+
+ Image {
+ anchors.centerIn: parent
+ source: serverListDelegate.icon
+ width: 15
+ height: 15
+ fillMode: Image.PreserveAspectFit
+ smooth: true
+ }
+ }
+
+ Text {
+ text: parent.url
+
+ anchors.left: parent.left
+ anchors.top: img.bottom
+ anchors.topMargin: 10
+ anchors.leftMargin: 20
+ color: "#667085"
+ font.pixelSize: 13
+ }
+ Text {
+ text: parent.title
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 10
+ color: "#222222"
+ font.pixelSize: 11
+ font.bold: true
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: serverList.currentIndex = serverListDelegate.index;
+ }
+ }
+
+ ListView {
+ id: serverList
+ Layout.alignment: Qt.AlignHCenter
+ Layout.minimumWidth: 180 * server.count + 20
+ Layout.minimumHeight: 100
+ orientation: ListView.Horizontal
+
+ model: server
+ spacing: 20
+
+ delegate: ServerListDelegate {}
+ }
+
+ Button {
+ Layout.alignment: Qt.AlignHCenter
+ text: restPalette.sslSupported ? qsTr("Connect (SSL)") : qsTr("Connect")
+
+ buttonColor: "#2CDE85"
+ textColor: "#FFFFFF"
+
+ onClicked: {
+ busyIndicatorPopup.title = (serverList.currentItem as ServerListDelegate).title
+ busyIndicatorPopup.icon = (serverList.currentItem as ServerListDelegate).icon
+ busyIndicatorPopup.open()
+
+ fetchTester.test((serverList.currentItem as ServerListDelegate).url)
+ }
+ }
+
+ Timer {
+ id: fetchTester
+ interval: 2000
+
+ function test(url) {
+ root.restPalette.url = url
+ root.colorResources.refreshCurrentPage()
+ root.colorUsers.refreshCurrentPage()
+ start()
+ }
+ onTriggered: busyIndicatorPopup.close()
+ }
+ }
+
+ onVisibleChanged: {if (!visible) busyIndicatorPopup.close();}
+
+ Popup {
+ id: busyIndicatorPopup
+ padding: 10
+ modal: true
+ focus: true
+ anchors.centerIn: parent
+ closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
+
+ property alias title: titleText.text
+ property alias icon: titleImg.source
+
+ ColumnLayout {
+ id: fetchIndicator
+ anchors.fill: parent
+
+ RowLayout {
+ Rectangle {
+ Layout.preferredWidth: 50
+ Layout.preferredHeight: 50
+ radius: 200
+ border. color: "#E7F4EE"
+ border.width: 5
+
+ Image {
+ id: titleImg
+ anchors.centerIn: parent
+ width: 25
+ height: 25
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Label {
+ id: titleText
+ text:""
+ font.pixelSize: 18
+ }
+ }
+
+ RowLayout {
+ Layout.fillWidth: false
+ Layout.alignment: Qt.AlignHCenter
+ BusyIndicator {
+ running: visible
+ Layout.fillWidth: true
+ }
+
+ Label {
+ text: qsTr("Testing URL")
+ font.pixelSize: 18
+ }
+ }
+
+ Button {
+ Layout.alignment: Qt.AlignHCenter
+ text: qsTr("Cancel")
+ onClicked: {
+ busyIndicatorPopup.close()
+ }
+ }
+
+ }
+
+ }
+}
diff --git a/examples/demos/colorpaletteclient/ColorPalette/UserMenu.qml b/examples/demos/colorpaletteclient/ColorPalette/UserMenu.qml
new file mode 100644
index 000000000..6c4b25683
--- /dev/null
+++ b/examples/demos/colorpaletteclient/ColorPalette/UserMenu.qml
@@ -0,0 +1,139 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import QtQuick.Effects
+
+import QtExampleStyle
+import ColorPalette
+
+Popup {
+ id: userMenu
+
+ required property BasicLogin userLoginService
+ required property PaginatedColorUsersResource userMenuUsers
+
+ width: 280
+ height: 270
+
+ ColumnLayout {
+ anchors.fill: parent
+
+ ListView {
+ id: userListView
+
+ model: userMenu.userMenuUsers.model
+ spacing: 5
+ footerPositioning: ListView.PullBackFooter
+ clip: true
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ delegate: Rectangle {
+ id: userInfo
+
+ required property string email
+ required property string avatar
+
+ height: 30
+ width: userListView.width
+
+
+ readonly property bool logged: (email === loginService.user)
+
+ Rectangle {
+ id: userImageCliped
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ width: 30
+ height: 30
+
+ Image {
+ id: userImage
+ anchors.fill: parent
+ source: userInfo.avatar
+ visible: false
+ }
+
+ Image {
+ id: userMask
+ source: "qrc:/qt/qml/ColorPalette/icons/userMask.svg"
+ anchors.fill: userImage
+ anchors.margins: 4
+ visible: false
+ }
+
+ MultiEffect {
+ source: userImage
+ anchors.fill: userImage
+ maskSource: userMask
+ maskEnabled: true
+ }
+ }
+
+ Text {
+ id: userMailLabel
+ anchors.left: userImageCliped.right
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.margins: 5
+ text: userInfo.email
+ font.bold: userInfo.logged
+ }
+
+ ToolButton {
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.margins: 5
+
+ icon.source: UIStyle.iconPath(userInfo.logged
+ ? "logout" : "login")
+ enabled: userInfo.logged || !userMenu.userLoginService.loggedIn
+
+ onClicked: {
+ if (userInfo.logged) {
+ userMenu.userLoginService.logout()
+ } else {
+ //! [Login]
+ userMenu.userLoginService.login({"email" : userInfo.email,
+ "password" : "apassword",
+ "id" : userInfo.id})
+ //! [Login]
+ userMenu.close()
+ }
+ }
+ }
+
+ }
+ footer: ToolBar {
+ // Paginate buttons if more than one page
+ visible: userMenu.userMenuUsers.pages > 1
+ implicitWidth: parent.width
+
+ RowLayout {
+ anchors.fill: parent
+
+ Item { Layout.fillWidth: true /* spacer */ }
+
+ Repeater {
+ model: userMenu.userMenuUsers.pages
+
+ ToolButton {
+ text: page
+ font.bold: userMenu.userMenuUsers.page === page
+
+ required property int index
+ readonly property int page: (index + 1)
+
+ onClicked: userMenu.userMenuUsers.page = page
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/demos/colorpaletteclient/ColorPalette/qmldir b/examples/demos/colorpaletteclient/ColorPalette/qmldir
new file mode 100644
index 000000000..7a153fea8
--- /dev/null
+++ b/examples/demos/colorpaletteclient/ColorPalette/qmldir
@@ -0,0 +1,7 @@
+module ColorPalette
+Main 1.0 Main.qml
+ColorDialogDelete 1.0 ColorDialogDelete.qml
+ColorDialogEditor 1.0 ColorDialogEditor.qml
+ColorView 1.0 ColorView.qml
+ServerSelection 1.0 ServerSelection.qml
+UserMenu 1.0 UserMenu.qml
diff --git a/examples/demos/colorpaletteclient/QtExampleStyle/Button.qml b/examples/demos/colorpaletteclient/QtExampleStyle/Button.qml
new file mode 100644
index 000000000..6b3f922a1
--- /dev/null
+++ b/examples/demos/colorpaletteclient/QtExampleStyle/Button.qml
@@ -0,0 +1,48 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Controls.impl
+import QtQuick.Templates as T
+
+T.Button {
+ id: control
+
+ property alias buttonColor: rect.color
+ property alias textColor: label.color
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ leftPadding: 15
+ rightPadding: 15
+ topPadding: 10
+ bottomPadding: 10
+
+ background: Rectangle {
+ id: rect
+ radius: 8
+ border.color: "#E0E2E7"
+ border.width: 1
+ color: "#FFFFFF"
+ }
+
+ icon.width: 24
+ icon.height: 24
+ icon.color: control.palette.buttonText
+
+ contentItem: IconLabel {
+ id: label
+ spacing: control.spacing
+ mirrored: control.mirrored
+ display: control.display
+
+ icon: control.icon
+ text: control.text
+ font.pixelSize: 14
+ color: "#667085"
+ }
+}
diff --git a/examples/demos/colorpaletteclient/QtExampleStyle/CMakeLists.txt b/examples/demos/colorpaletteclient/QtExampleStyle/CMakeLists.txt
new file mode 100644
index 000000000..a911f8742
--- /dev/null
+++ b/examples/demos/colorpaletteclient/QtExampleStyle/CMakeLists.txt
@@ -0,0 +1,54 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+cmake_minimum_required(VERSION 3.16)
+project(qtexamplestyle LANGUAGES CXX)
+
+set(CMAKE_AUTOMOC ON)
+
+if(NOT DEFINED INSTALL_EXAMPLESDIR)
+ set(INSTALL_EXAMPLESDIR "examples")
+endif()
+
+set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/quickcontrols/colorpaletteclient/QtExampleStyle")
+
+find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick QuickControls2)
+
+set_source_files_properties(UIStyle.qml
+ PROPERTIES
+ QT_QML_SINGLETON_TYPE TRUE
+)
+
+qt_policy(SET QTP0001 NEW)
+qt_add_qml_module(qtexamplestyle
+ URI QtExampleStyle
+ PLUGIN_TARGET qtexamplestyle
+ QML_FILES
+ Button.qml
+ Popup.qml
+ UIStyle.qml
+ TextField.qml
+)
+
+target_link_libraries(qtexamplestyle PUBLIC
+ Qt6::Core
+ Qt6::Gui
+ Qt6::Quick
+ Qt6::QuickControls2
+)
+
+if(UNIX AND NOT APPLE AND CMAKE_CROSSCOMPILING)
+ find_package(Qt6 REQUIRED COMPONENTS QuickTemplates2)
+
+ # Work around QTBUG-86533
+ target_link_libraries(qtexamplestyle PRIVATE Qt6::QuickTemplates2)
+endif()
+
+install(TARGETS qtexamplestyle
+ RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
+ BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
+ LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
+)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qmldir
+ DESTINATION "${INSTALL_EXAMPLEDIR}"
+)
diff --git a/examples/demos/colorpaletteclient/QtExampleStyle/Popup.qml b/examples/demos/colorpaletteclient/QtExampleStyle/Popup.qml
new file mode 100644
index 000000000..a3132bcea
--- /dev/null
+++ b/examples/demos/colorpaletteclient/QtExampleStyle/Popup.qml
@@ -0,0 +1,27 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Templates as T
+
+T.Popup {
+ id: control
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ leftPadding: 15
+ rightPadding: 15
+ topPadding: 10
+ bottomPadding: 10
+
+ background: Rectangle {
+ id: bg
+ radius: 8
+ border.color: "#E0E2E7"
+ border.width: 2
+ color: "#FFFFFF"
+ }
+}
diff --git a/examples/demos/colorpaletteclient/QtExampleStyle/TextField.qml b/examples/demos/colorpaletteclient/QtExampleStyle/TextField.qml
new file mode 100644
index 000000000..7db2d4f98
--- /dev/null
+++ b/examples/demos/colorpaletteclient/QtExampleStyle/TextField.qml
@@ -0,0 +1,22 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Templates as T
+
+T.TextField {
+ id: control
+ placeholderText: ""
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, contentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ contentHeight + topPadding + bottomPadding)
+
+ background: Rectangle {
+ implicitWidth: 200
+ implicitHeight: 40
+ radius: 8
+ color: control.enabled ? "transparent" : "#353637"
+ border.color: "#E0E2E7"
+ }
+}
diff --git a/examples/demos/colorpaletteclient/QtExampleStyle/UIStyle.qml b/examples/demos/colorpaletteclient/QtExampleStyle/UIStyle.qml
new file mode 100644
index 000000000..3c4741d7f
--- /dev/null
+++ b/examples/demos/colorpaletteclient/QtExampleStyle/UIStyle.qml
@@ -0,0 +1,29 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma Singleton
+
+import QtQuick
+
+QtObject {
+ id: uiStyle
+
+ // Font Sizes
+ readonly property int fontSizeXXS: 10
+ readonly property int fontSizeXS: 15
+ readonly property int fontSizeS: 20
+ readonly property int fontSizeM: 25
+ readonly property int fontSizeL: 30
+ readonly property int fontSizeXL: 35
+ readonly property int fontSizeXXL: 40
+
+ // Color Scheme
+ // Green
+ readonly property color colorQtPrimGreen: "#41cd52"
+ readonly property color colorQtAuxGreen1: "#21be2b"
+ readonly property color colorQtAuxGreen2: "#17a81a"
+
+ function iconPath(baseImagePath) {
+ return `qrc:/qt/qml/ColorPalette/icons/${baseImagePath}.svg`
+ }
+}
diff --git a/examples/demos/colorpaletteclient/QtExampleStyle/qmldir b/examples/demos/colorpaletteclient/QtExampleStyle/qmldir
new file mode 100644
index 000000000..7bdfb44d8
--- /dev/null
+++ b/examples/demos/colorpaletteclient/QtExampleStyle/qmldir
@@ -0,0 +1,5 @@
+module QtExampleStyle
+Button 1.0 Button.qml
+Popup 1.0 Popup.qml
+TextField 1.0 TextField.qml
+singleton UIStyle 1.0 UIStyle.qml
diff --git a/examples/demos/colorpaletteclient/abstractresource.py b/examples/demos/colorpaletteclient/abstractresource.py
new file mode 100644
index 000000000..3f3a7ed6a
--- /dev/null
+++ b/examples/demos/colorpaletteclient/abstractresource.py
@@ -0,0 +1,24 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject
+from PySide6.QtQml import QmlAnonymous
+
+
+QML_IMPORT_NAME = "ColorPalette"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlAnonymous
+class AbstractResource(QObject):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_manager = None # QRestAccessManager
+ self.m_api = None # QNetworkRequestFactory
+
+ def setAccessManager(self, manager):
+ self.m_manager = manager
+
+ def setServiceApi(self, serviceApi):
+ self.m_api = serviceApi
diff --git a/examples/demos/colorpaletteclient/basiclogin.py b/examples/demos/colorpaletteclient/basiclogin.py
new file mode 100644
index 000000000..b9139c2e2
--- /dev/null
+++ b/examples/demos/colorpaletteclient/basiclogin.py
@@ -0,0 +1,100 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from functools import partial
+from dataclasses import dataclass
+
+from PySide6.QtCore import Property, Signal, Slot
+from PySide6.QtNetwork import QHttpHeaders
+from PySide6.QtQml import QmlElement
+
+from abstractresource import AbstractResource
+
+
+tokenField = "token"
+emailField = "email"
+idField = "id"
+
+
+QML_IMPORT_NAME = "ColorPalette"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class BasicLogin(AbstractResource):
+ @dataclass
+ class User:
+ email: str
+ token: bytes
+ id: int
+
+ userChanged = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_user = None
+ self.m_loginPath = ""
+ self.m_logoutPath = ""
+ self.m_user = None
+
+ @Property(str, notify=userChanged)
+ def user(self):
+ return self.m_user.email if self.m_user else ""
+
+ @Property(bool, notify=userChanged)
+ def loggedIn(self):
+ return bool(self.m_user)
+
+ @Property(str)
+ def loginPath(self):
+ return self.m_loginPath
+
+ @loginPath.setter
+ def loginPath(self, p):
+ self.m_loginPath = p
+
+ @Property(str)
+ def logoutPath(self):
+ return self.m_logoutPath
+
+ @logoutPath.setter
+ def logoutPath(self, p):
+ self.m_logoutPath = p
+
+ @Slot("QVariantMap")
+ def login(self, data):
+ request = self.m_api.createRequest(self.m_loginPath)
+ self.m_manager.post(request, data, self, partial(self.loginReply, data))
+
+ def loginReply(self, data, reply):
+ self.m_user = None
+ if not reply.isSuccess():
+ print("login: ", reply.errorString(), file=sys.stderr)
+ (json, error) = reply.readJson()
+ if json and json.isObject():
+ json_object = json.object()
+ token = json_object.get(tokenField)
+ if token:
+ email = data[emailField]
+ token = json_object[tokenField]
+ id = data[idField]
+ self.m_user = BasicLogin.User(email, token, id)
+
+ headers = QHttpHeaders()
+ headers.append("token", self.m_user.token if self.m_user else "")
+ self.m_api.setCommonHeaders(headers)
+ self.userChanged.emit()
+
+ @Slot()
+ def logout(self):
+ request = self.m_api.createRequest(self.m_logoutPath)
+ self.m_manager.post(request, b"", self, self.logoutReply)
+
+ def logoutReply(self, reply):
+ if reply.isSuccess():
+ self.m_user = None
+ self.m_api.clearCommonHeaders() # clears 'token' header
+ self.userChanged.emit()
+ else:
+ print("logout: ", reply.errorString(), file=sys.stderr)
diff --git a/examples/demos/colorpaletteclient/colorpaletteclient.pyproject b/examples/demos/colorpaletteclient/colorpaletteclient.pyproject
new file mode 100644
index 000000000..d05f7cb29
--- /dev/null
+++ b/examples/demos/colorpaletteclient/colorpaletteclient.pyproject
@@ -0,0 +1,21 @@
+{
+ "files": [
+ "abstractresource.py",
+ "basiclogin.py",
+ "main.py",
+ "paginatedresource.py",
+ "restservice.py",
+ "colorpaletteclient.qrc",
+ "ColorPalette/ColorDialogDelete.qml",
+ "ColorPalette/ColorDialogEditor.qml",
+ "ColorPalette/ColorView.qml",
+ "ColorPalette/Main.qml",
+ "ColorPalette/ServerSelection.qml",
+ "ColorPalette/UserMenu.qml",
+ "QtExampleStyle/Button.qml",
+ "QtExampleStyle/Popup.qml",
+ "QtExampleStyle/TextField.qml",
+ "QtExampleStyle/UIStyle.qml",
+ "colorpaletteclient.qrc"
+ ]
+}
diff --git a/examples/demos/colorpaletteclient/colorpaletteclient.qrc b/examples/demos/colorpaletteclient/colorpaletteclient.qrc
new file mode 100644
index 000000000..16260cbd7
--- /dev/null
+++ b/examples/demos/colorpaletteclient/colorpaletteclient.qrc
@@ -0,0 +1,17 @@
+<RCC>
+ <qresource prefix="/qt/qml/ColorPalette">
+ <file>icons/close.svg</file>
+ <file>icons/delete.svg</file>
+ <file>icons/dots.svg</file>
+ <file>icons/edit.svg</file>
+ <file>icons/login.svg</file>
+ <file>icons/logout.svg</file>
+ <file>icons/ok.svg</file>
+ <file>icons/plus.svg</file>
+ <file>icons/qt.png</file>
+ <file>icons/testserver.png</file>
+ <file>icons/update.svg</file>
+ <file>icons/user.svg</file>
+ <file>icons/userMask.svg</file>
+ </qresource>
+</RCC>
diff --git a/examples/demos/colorpaletteclient/doc/colorpaletteclient.rst b/examples/demos/colorpaletteclient/doc/colorpaletteclient.rst
new file mode 100644
index 000000000..0dcb91d4e
--- /dev/null
+++ b/examples/demos/colorpaletteclient/doc/colorpaletteclient.rst
@@ -0,0 +1,79 @@
+RESTful API client
+==================
+
+Example of how to create a RESTful API QML client.
+
+This example shows how to create a basic QML RESTful API client with an
+imaginary color palette service. The application uses RESTful communication
+with the selected server to request and send data. The REST service is provided
+as a QML element whose child elements wrap the individual JSON data APIs
+provided by the server.
+
+Application functionality
+-------------------------
+
+The example provides the following basic functionalities:
+* Select the server to communicate with
+* List users and colors
+* Login and logout users
+* Modify and create new colors
+
+Server selection
+----------------
+
+At start the application presents the options for the color palette server to communicate
+with. The predefined options are:
+
+* ``https://reqres.in``, a publicly available REST API test service
+* A Qt-based REST API server example in ``QtHttpServer``
+
+Once selected, the RESTful API client issues a test HTTP GET to the color API
+to check if the service is accessible.
+
+One major difference between the two predefined API options is that the
+Qt-based REST API server example is a stateful application which allows
+modifying colors, whereas the ``reqres.in`` is a stateless API testing service.
+In other words, when using the ``reqres.in`` backend, modifying the colors has
+no lasting impact.
+
+The users and colors are paginated resources on the server-side. This means
+that the server provides the data in chunks called pages. The UI listing
+reflects this pagination and views the data on pages.
+
+Viewing the data on UI is done with standard QML views where the model are
+QAbstractListModel-derived classes representing JSON data received from the
+server.
+
+Logging in happens via the login function provided by the login popup. Under
+the hood the login sends a HTTP POST request. Upon receiving a successful
+response the authorization token is extracted from the response, which in turn
+is then used in subsequent HTTP requests which require the token.
+
+Editing and adding new colors is done in a popup. Note that uploading the color
+changes to the server requires that a user has logged in.
+
+REST implementation
+-------------------
+
+The example illustrates one way to compose a REST service from individual resource elements. In
+this example the resources are the paginated user and color resources plus the login service.
+The resource elements are bound together by the base URL (server URL) and the shared network access
+manager.
+
+The basis of the REST service is the RestService QML element whose children items
+compose the actual service.
+
+Upon instantiation the RestService element loops its children elements and sets
+them up to use the same network access manager. This way the individual
+resources share the same access details such as the server URL and
+authorization token.
+
+The actual communication is done with a rest access manager which implements
+some convenience functionality to deal specifically with HTTP REST APIs and
+effectively deals with sending and receiving the ``QNetworkRequest`` and
+``QNetworkReply`` as needed.
+
+.. image:: colorpaletteclient.webp
+ :width: 90%
+ :align: center
+ :alt: RESTful API client
diff --git a/examples/demos/colorpaletteclient/doc/colorpaletteclient.webp b/examples/demos/colorpaletteclient/doc/colorpaletteclient.webp
new file mode 100644
index 000000000..8f4d9a621
--- /dev/null
+++ b/examples/demos/colorpaletteclient/doc/colorpaletteclient.webp
Binary files differ
diff --git a/examples/demos/colorpaletteclient/icons/close.svg b/examples/demos/colorpaletteclient/icons/close.svg
new file mode 100644
index 000000000..3a0d4be65
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/close.svg
@@ -0,0 +1,3 @@
+<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M12.4501 37.65L10.3501 35.55L21.9001 24L10.3501 12.45L12.4501 10.35L24.0001 21.9L35.5501 10.35L37.6501 12.45L26.1001 24L37.6501 35.55L35.5501 37.65L24.0001 26.1L12.4501 37.65Z" fill="#667085"/>
+</svg>
diff --git a/examples/demos/colorpaletteclient/icons/delete.svg b/examples/demos/colorpaletteclient/icons/delete.svg
new file mode 100644
index 000000000..8f04948c8
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/delete.svg
@@ -0,0 +1,3 @@
+<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M13.05 42C12.225 42 11.5187 41.7062 10.9313 41.1188C10.3438 40.5312 10.05 39.825 10.05 39V10.5H8V7.5H17.4V6H30.6V7.5H40V10.5H37.95V39C37.95 39.8 37.65 40.5 37.05 41.1C36.45 41.7 35.75 42 34.95 42H13.05ZM34.95 10.5H13.05V39H34.95V10.5ZM18.35 34.7H21.35V14.75H18.35V34.7ZM26.65 34.7H29.65V14.75H26.65V34.7Z" fill="#667085"/>
+</svg>
diff --git a/examples/demos/colorpaletteclient/icons/dots.svg b/examples/demos/colorpaletteclient/icons/dots.svg
new file mode 100644
index 000000000..49df163fd
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/dots.svg
@@ -0,0 +1,3 @@
+<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M10.3929 26.4C9.73097 26.4 9.16667 26.1643 8.7 25.6929C8.23333 25.2215 8 24.6548 8 23.9929C8 23.3309 8.2357 22.7666 8.7071 22.3C9.17847 21.8333 9.74513 21.6 10.4071 21.6C11.069 21.6 11.6333 21.8357 12.1 22.3071C12.5667 22.7784 12.8 23.3451 12.8 24.0071C12.8 24.669 12.5643 25.2333 12.0929 25.7C11.6215 26.1666 11.0549 26.4 10.3929 26.4ZM23.9929 26.4C23.331 26.4 22.7667 26.1643 22.3 25.6929C21.8333 25.2215 21.6 24.6548 21.6 23.9929C21.6 23.3309 21.8357 22.7666 22.3071 22.3C22.7785 21.8333 23.3451 21.6 24.0071 21.6C24.669 21.6 25.2333 21.8357 25.7 22.3071C26.1667 22.7784 26.4 23.3451 26.4 24.0071C26.4 24.669 26.1643 25.2333 25.6929 25.7C25.2215 26.1666 24.6549 26.4 23.9929 26.4ZM37.5929 26.4C36.931 26.4 36.3667 26.1643 35.9 25.6929C35.4333 25.2215 35.2 24.6548 35.2 23.9929C35.2 23.3309 35.4357 22.7666 35.9071 22.3C36.3785 21.8333 36.9451 21.6 37.6071 21.6C38.269 21.6 38.8333 21.8357 39.3 22.3071C39.7667 22.7784 40 23.3451 40 24.0071C40 24.669 39.7643 25.2333 39.2929 25.7C38.8215 26.1666 38.2549 26.4 37.5929 26.4Z" fill="#667085"/>
+</svg>
diff --git a/examples/demos/colorpaletteclient/icons/edit.svg b/examples/demos/colorpaletteclient/icons/edit.svg
new file mode 100644
index 000000000..1cfc2a73a
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/edit.svg
@@ -0,0 +1,3 @@
+<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9 39H11.2L33.35 16.85L31.15 14.65L9 36.8V39ZM39.7 14.7L33.3 8.29998L35.4 6.19998C35.9667 5.63331 36.6667 5.34998 37.5 5.34998C38.3333 5.34998 39.0333 5.63331 39.6 6.19998L41.8 8.39998C42.3667 8.96664 42.65 9.66664 42.65 10.5C42.65 11.3333 42.3667 12.0333 41.8 12.6L39.7 14.7ZM37.6 16.8L12.4 42H6V35.6L31.2 10.4L37.6 16.8ZM32.25 15.75L31.15 14.65L33.35 16.85L32.25 15.75Z" fill="#667085"/>
+</svg>
diff --git a/examples/demos/colorpaletteclient/icons/login.svg b/examples/demos/colorpaletteclient/icons/login.svg
new file mode 100644
index 000000000..c8fe5bc54
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/login.svg
@@ -0,0 +1,3 @@
+<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M24.45 42V39H39V9H24.45V6H39C39.8 6 40.5 6.3 41.1 6.9C41.7 7.5 42 8.2 42 9V39C42 39.8 41.7 40.5 41.1 41.1C40.5 41.7 39.8 42 39 42H24.45ZM20.55 32.75L18.4 30.6L23.5 25.5H6V22.5H23.4L18.3 17.4L20.45 15.25L29.25 24.05L20.55 32.75Z" fill="#667085"/>
+</svg>
diff --git a/examples/demos/colorpaletteclient/icons/logout.svg b/examples/demos/colorpaletteclient/icons/logout.svg
new file mode 100644
index 000000000..91d4fd869
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/logout.svg
@@ -0,0 +1,3 @@
+<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9 42C8.2 42 7.5 41.7 6.9 41.1C6.3 40.5 6 39.8 6 39V9C6 8.2 6.3 7.5 6.9 6.9C7.5 6.3 8.2 6 9 6H23.55V9H9V39H23.55V42H9ZM33.3 32.75L31.15 30.6L36.25 25.5H18.75V22.5H36.15L31.05 17.4L33.2 15.25L42 24.05L33.3 32.75Z" fill="#667085"/>
+</svg>
diff --git a/examples/demos/colorpaletteclient/icons/ok.svg b/examples/demos/colorpaletteclient/icons/ok.svg
new file mode 100644
index 000000000..506e2d690
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/ok.svg
@@ -0,0 +1,3 @@
+<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M18.9002 35.7L7.7002 24.5L9.8502 22.35L18.9002 31.4L38.1002 12.2L40.2502 14.35L18.9002 35.7Z" fill="#667085"/>
+</svg>
diff --git a/examples/demos/colorpaletteclient/icons/plus.svg b/examples/demos/colorpaletteclient/icons/plus.svg
new file mode 100644
index 000000000..81837784a
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/plus.svg
@@ -0,0 +1,3 @@
+<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M22.5 38V25.5H10V22.5H22.5V10H25.5V22.5H38V25.5H25.5V38H22.5Z" fill="#667085"/>
+</svg>
diff --git a/examples/demos/colorpaletteclient/icons/qt.png b/examples/demos/colorpaletteclient/icons/qt.png
new file mode 100644
index 000000000..abd3a4f14
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/qt.png
Binary files differ
diff --git a/examples/demos/colorpaletteclient/icons/qt_attribution.json b/examples/demos/colorpaletteclient/icons/qt_attribution.json
new file mode 100644
index 000000000..44633c474
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/qt_attribution.json
@@ -0,0 +1,14 @@
+{
+ "Id": "colorpaletteclient",
+ "Name": "Selected Material Icons",
+ "QDocModule": "qtdoc",
+ "QtUsage": "Used in Color Palette Client example in QtDoc",
+ "QtParts": [
+ "examples"
+ ],
+ "Files": "close.svg delete.svg dots.svg edit.svg login.svg logout.svg ok.svg update.svg user.svg",
+ "Homepage": "https://fonts.google.com/icons",
+ "License": "Apache License Version 2.0",
+ "LicenseId": "Apache-2.0",
+ "Copyright": "Copyright 2018 Google, Inc. All Rights Reserved."
+}
diff --git a/examples/demos/colorpaletteclient/icons/testserver.png b/examples/demos/colorpaletteclient/icons/testserver.png
new file mode 100644
index 000000000..0890e5e4b
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/testserver.png
Binary files differ
diff --git a/examples/demos/colorpaletteclient/icons/update.svg b/examples/demos/colorpaletteclient/icons/update.svg
new file mode 100644
index 000000000..303ff4d3d
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/update.svg
@@ -0,0 +1,3 @@
+<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M24 40C19.5667 40 15.7917 38.4417 12.675 35.325C9.55833 32.2083 8 28.4333 8 24C8 19.5667 9.55833 15.7917 12.675 12.675C15.7917 9.55833 19.5667 8 24 8C26.8333 8 29.3167 8.575 31.45 9.725C33.5833 10.875 35.4333 12.45 37 14.45V8H40V20.7H27.3V17.7H35.7C34.4333 15.7 32.8167 14.0833 30.85 12.85C28.8833 11.6167 26.6 11 24 11C20.3667 11 17.2917 12.2583 14.775 14.775C12.2583 17.2917 11 20.3667 11 24C11 27.6333 12.2583 30.7083 14.775 33.225C17.2917 35.7417 20.3667 37 24 37C26.7667 37 29.3 36.2083 31.6 34.625C33.9 33.0417 35.5 30.95 36.4 28.35H39.5C38.5333 31.85 36.6167 34.6667 33.75 36.8C30.8833 38.9333 27.6333 40 24 40Z" fill="#667085"/>
+</svg>
diff --git a/examples/demos/colorpaletteclient/icons/user.svg b/examples/demos/colorpaletteclient/icons/user.svg
new file mode 100644
index 000000000..ed782385e
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/user.svg
@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12Z" fill="#E6E6E6"/>
+<path d="M15.5 12C16.3284 12 17 12.6716 17 13.5V14C17 15.9714 15.1405 18 12 18C8.85951 18 7 15.9714 7 14V13.5C7 12.6716 7.67157 12 8.5 12H15.5ZM15.5 13H8.5C8.22386 13 8 13.2239 8 13.5V14C8 15.4376 9.43216 17 12 17C14.5678 17 16 15.4376 16 14V13.5C16 13.2239 15.7761 13 15.5 13ZM12 5.5C13.5188 5.5 14.75 6.73122 14.75 8.25C14.75 9.76878 13.5188 11 12 11C10.4812 11 9.25 9.76878 9.25 8.25C9.25 6.73122 10.4812 5.5 12 5.5ZM12 6.5C11.0335 6.5 10.25 7.2835 10.25 8.25C10.25 9.2165 11.0335 10 12 10C12.9665 10 13.75 9.2165 13.75 8.25C13.75 7.2835 12.9665 6.5 12 6.5Z" fill="#616161"/>
+</svg>
diff --git a/examples/demos/colorpaletteclient/icons/userMask.svg b/examples/demos/colorpaletteclient/icons/userMask.svg
new file mode 100644
index 000000000..5e3065d7f
--- /dev/null
+++ b/examples/demos/colorpaletteclient/icons/userMask.svg
@@ -0,0 +1,3 @@
+<svg width="30" height="30" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg">
+<ellipse cx="15" cy="15" rx="13" ry="13" fill="black"/>
+</svg>
diff --git a/examples/demos/colorpaletteclient/main.py b/examples/demos/colorpaletteclient/main.py
new file mode 100644
index 000000000..a249b9fa2
--- /dev/null
+++ b/examples/demos/colorpaletteclient/main.py
@@ -0,0 +1,33 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Qt RESTful API client demo from Qt v6.x"""
+
+import os
+import sys
+from pathlib import Path
+
+from PySide6.QtCore import QUrl
+from PySide6.QtGui import QIcon, QGuiApplication
+from PySide6.QtQml import QQmlApplicationEngine
+
+from basiclogin import BasicLogin # noqa: F401
+from paginatedresource import PaginatedResource # noqa: F401
+from restservice import RestService # noqa: F401
+import rc_colorpaletteclient # noqa: F401
+
+if __name__ == "__main__":
+ app = QGuiApplication(sys.argv)
+ QIcon.setThemeName("colorpaletteclient")
+
+ engine = QQmlApplicationEngine()
+ app_dir = Path(__file__).parent
+ app_dir_url = QUrl.fromLocalFile(os.fspath(app_dir))
+ engine.addImportPath(os.fspath(app_dir))
+ engine.loadFromModule("ColorPalette", "Main")
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ ex = app.exec()
+ del engine
+ sys.exit(ex)
diff --git a/examples/demos/colorpaletteclient/paginatedresource.py b/examples/demos/colorpaletteclient/paginatedresource.py
new file mode 100644
index 000000000..b7f036c4e
--- /dev/null
+++ b/examples/demos/colorpaletteclient/paginatedresource.py
@@ -0,0 +1,278 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from dataclasses import dataclass
+from PySide6.QtCore import (QAbstractListModel, QByteArray,
+ QUrlQuery, Property, Signal, Slot, Qt)
+from PySide6.QtQml import QmlAnonymous, QmlElement
+
+from abstractresource import AbstractResource
+
+
+QML_IMPORT_NAME = "ColorPalette"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+totalPagesField = "total_pages"
+currentPageField = "page"
+
+
+@dataclass
+class ColorUser:
+ id: int
+ email: str
+ avatar: str # URL
+
+
+@QmlElement
+class ColorUserModel (QAbstractListModel):
+ IdRole = Qt.UserRole + 1
+ EmailRole = Qt.UserRole + 2
+ AvatarRole = Qt.UserRole + 3
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._users = []
+
+ def clear(self):
+ self.set_data([])
+
+ def set_data(self, json_list):
+ if not self._users and not json_list:
+ return
+ self.beginResetModel()
+ self._users.clear()
+ for e in json_list:
+ self._users.append(ColorUser(int(e["id"]), e["email"], e["avatar"]))
+ self.endResetModel()
+
+ def roleNames(self):
+ roles = {
+ ColorUserModel.IdRole: QByteArray(b'id'),
+ ColorUserModel.EmailRole: QByteArray(b'email'),
+ ColorUserModel.AvatarRole: QByteArray(b'avatar')
+ }
+ return roles
+
+ def rowCount(self, index):
+ return len(self._users)
+
+ def data(self, index, role):
+ if index.isValid():
+ d = self._users[index.row()]
+ if role == ColorUserModel.IdRole:
+ return d.id
+ if role == ColorUserModel.EmailRole:
+ return d.email
+ if role == ColorUserModel.AvatarRole:
+ return d.avatar
+ return None
+
+ def avatarForEmail(self, email):
+ for e in self._users:
+ if e.email == email:
+ return e.avatar
+ return ""
+
+
+@dataclass
+class Color:
+ id: int
+ color: str
+ name: str
+ pantone_value: str
+
+
+@QmlElement
+class ColorModel (QAbstractListModel):
+ IdRole = Qt.UserRole + 1
+ ColorRole = Qt.UserRole + 2
+ NameRole = Qt.UserRole + 3
+ PantoneValueRole = Qt.UserRole + 4
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._colors = []
+
+ def clear(self):
+ self.set_data([])
+
+ def set_data(self, json_list):
+ if not self._colors and not json_list:
+ return
+ self.beginResetModel()
+ self._colors.clear()
+ for e in json_list:
+ self._colors.append(Color(int(e["id"]), e["color"],
+ e["name"], e["pantone_value"]))
+ self.endResetModel()
+
+ def roleNames(self):
+ roles = {
+ ColorModel.IdRole: QByteArray(b'color_id'),
+ ColorModel.ColorRole: QByteArray(b'color'),
+ ColorModel.NameRole: QByteArray(b'name'),
+ ColorModel.PantoneValueRole: QByteArray(b'pantone_value')
+ }
+ return roles
+
+ def rowCount(self, index):
+ return len(self._colors)
+
+ def data(self, index, role):
+ if index.isValid():
+ d = self._colors[index.row()]
+ if role == ColorModel.IdRole:
+ return d.id
+ if role == ColorModel.ColorRole:
+ return d.color
+ if role == ColorModel.NameRole:
+ return d.name
+ if role == ColorModel.PantoneValueRole:
+ return d.pantone_value
+ return None
+
+
+@QmlAnonymous
+class PaginatedResource(AbstractResource):
+ """This class manages a simple paginated Crud resource,
+ where the resource is a paginated list of JSON items."""
+
+ dataUpdated = Signal()
+ pageUpdated = Signal()
+ pagesUpdated = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ # The total number of pages as reported by the server responses
+ self.m_pages = 0
+ # The default page we request if the user hasn't set otherwise
+ self.m_currentPage = 1
+ self.m_path = ""
+
+ def _clearModel(self):
+ pass
+
+ def _populateModel(self, json_list):
+ pass
+
+ @Property(str)
+ def path(self):
+ return self.m_path
+
+ @path.setter
+ def path(self, p):
+ self.m_path = p
+
+ @Property(int, notify=pagesUpdated)
+ def pages(self):
+ return self.m_pages
+
+ @Property(int, notify=pageUpdated)
+ def page(self):
+ return self.m_currentPage
+
+ @page.setter
+ def page(self, page):
+ if self.m_currentPage == page or page < 1:
+ return
+ self.m_currentPage = page
+ self.pageUpdated.emit()
+ self.refreshCurrentPage()
+
+ @Slot()
+ def refreshCurrentPage(self):
+ query = QUrlQuery()
+ query.addQueryItem("page", str(self.m_currentPage))
+ request = self.m_api.createRequest(self.m_path, query)
+ self.m_manager.get(request, self, self.refreshCurrentPageReply)
+
+ def refreshCurrentPageReply(self, reply):
+ if not reply.isSuccess():
+ print("PaginatedResource: ", reply.errorString(), file=sys.stderr)
+ (json, error) = reply.readJson()
+ if json:
+ self.refreshRequestFinished(json)
+ else:
+ self.refreshRequestFailed()
+
+ def refreshRequestFinished(self, json):
+ json_object = json.object()
+ self._populateModel(json_object["data"])
+ self.m_pages = int(json_object[totalPagesField])
+ self.m_currentPage = int(json_object[currentPageField])
+ self.pageUpdated.emit()
+ self.pagesUpdated.emit()
+ self.dataUpdated.emit()
+
+ def refreshRequestFailed(self):
+ if self.m_currentPage != 1:
+ # A failed refresh. If we weren't on page 1, try that.
+ # Last resource on currentPage might have been deleted, causing a failure
+ self.setPage(1)
+ else:
+ # Refresh failed and we we're already on page 1 => clear data
+ self.m_pages = 0
+ self.pagesUpdated.emit()
+ self._clearModel()
+ self.dataUpdated.emit()
+
+ @Slot("QVariantMap", int)
+ def update(self, data, id):
+ request = self.m_api.createRequest(f"{self.m_path}/{id}")
+ self.m_manager.put(request, self, self.updateReply)
+
+ def updateReply(self, reply):
+ if reply.isSuccess():
+ self.refreshCurrentPage()
+
+ @Slot("QVariantMap")
+ def add(self, data):
+ request = self.m_api.createRequest(self.m_path)
+ self.m_manager.post(request, data, self, self.updateReply)
+
+ @Slot(int)
+ def remove(self, id):
+ request = self.m_api.createRequest(f"{self.m_path}/{id}")
+ self.m_manager.deleteResource(request, self, self.updateReply)
+
+
+@QmlElement
+class PaginatedColorUsersResource(PaginatedResource):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_model = ColorUserModel(self)
+
+ @Property(ColorUserModel, constant=True)
+ def model(self):
+ return self.m_model
+
+ def _clearModel(self):
+ self.m_model.clear()
+
+ def _populateModel(self, json_list):
+ self.m_model.set_data(json_list)
+
+ @Slot(str, result=str)
+ def avatarForEmail(self, email):
+ return self.m_model.avatarForEmail(email)
+
+
+@QmlElement
+class PaginatedColorsResource(PaginatedResource):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_model = ColorModel(self)
+
+ @Property(ColorModel, constant=True)
+ def model(self):
+ return self.m_model
+
+ def _clearModel(self):
+ self.m_model.clear()
+
+ def _populateModel(self, json_list):
+ self.m_model.set_data(json_list)
diff --git a/examples/demos/colorpaletteclient/rc_colorpaletteclient.py b/examples/demos/colorpaletteclient/rc_colorpaletteclient.py
new file mode 100644
index 000000000..74b3eaf13
--- /dev/null
+++ b/examples/demos/colorpaletteclient/rc_colorpaletteclient.py
@@ -0,0 +1,1098 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.7.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x00\xc0\
+<\
+svg width=\x2248\x22 h\
+eight=\x2248\x22 viewB\
+ox=\x220 0 48 48\x22 f\
+ill=\x22none\x22 xmlns\
+=\x22http://www.w3.\
+org/2000/svg\x22>\x0a<\
+path d=\x22M22.5 38\
+V25.5H10V22.5H22\
+.5V10H25.5V22.5H\
+38V25.5H25.5V38H\
+22.5Z\x22 fill=\x22#66\
+7085\x22/>\x0a</svg>\x0a\
+\x00\x00\x00\x94\
+<\
+svg width=\x2230\x22 h\
+eight=\x2230\x22 viewB\
+ox=\x220 0 30 30\x22 x\
+mlns=\x22http://www\
+.w3.org/2000/svg\
+\x22>\x0a<ellipse cx=\x22\
+15\x22 cy=\x2215\x22 rx=\x22\
+13\x22 ry=\x2213\x22 fill\
+=\x22black\x22/>\x0a</svg\
+>\x0a\x0a\
+\x00\x00\x0b\x93\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00d\x00\x00\x00H\x08\x06\x00\x00\x00\x00\x8cP\x19\
+\x00\x00\x01\x84iCCPICC prof\
+ile\x00\x00(\x91}\x91=H\xc3@\x1c\xc5_\
+S\xa5*-\x0ev\x90\xe2\x90\xa1:Y\x10\x15q\xd4\
+*\x14\xa1B\xa8\x15Zu0\xb9\xf4\x0b\x9a\x18\x92\x14\
+\x17G\xc1\xb5\xe0\xe0\xc7b\xd5\xc1\xc5YW\x07WA\
+\x10\xfc\x00quqRt\x91\x12\xff\x97\x14Z\xc4x\
+p\xdc\x8fw\xf7\x1ew\xef\x00\xa1Qe\x9a\xd55\x06\
+h\xbamfRI1\x97_\x11C\xaf\x08#\x82^\
+\xc4\x11\x93\x99e\xccJR\x1a\xbe\xe3\xeb\x1e\x01\xbe\xde\
+%x\x96\xff\xb9?GD-X\x0c\x08\x88\xc43\xcc\
+0m\xe2u\xe2\xa9M\xdb\xe0\xbcO\x1ceeY%\
+>'\x1e5\xe9\x82\xc4\x8f\x5cW<~\xe3\x5crY\
+\xe0\x99Q3\x9b\x99#\x8e\x12\x8b\xa5\x0eV:\x98\x95\
+M\x8dx\x928\xaej:\xe5\x0b9\x8fU\xce[\x9c\
+\xb5j\x8d\xb5\xee\xc9_\x18.\xe8\xcbK\x5c\xa79\x84\
+\x14\x16\xb0\x08\x09\x22\x14\xd4PA\x156\x12\xb4\xea\xa4\
+X\xc8\xd0~\xd2\xc7\x1fs\xfd\x12\xb9\x14rU\xc0\xc8\
+1\x8f\x0dh\x90]?\xf8\x1f\xfc\xee\xd6*N\x8c{\
+I\xe1$\xd0\xfd\xe28\x1f\xc3@h\x17h\xd6\x1d\xe7\
+\xfb\xd8q\x9a'@\xf0\x19\xb8\xd2\xdb\xfe\x8d\x060\xfd\
+Iz\xbd\xad\xc5\x8f\x80\xfem\xe0\xe2\xba\xad){\xc0\
+\xe5\x0e0\xf8d\xc8\xa6\xecJA\x9aB\xb1\x08\xbc\x9f\
+\xd17\xe5\x81\x81[\xa0o\xd5\xeb\xad\xb5\x8f\xd3\x07 \
+K]\xa5o\x80\x83C`\xa4D\xd9k>\xef\xee\xe9\
+\xec\xed\xdf3\xad\xfe~\x00a\xaer\xa0\xbc\xa9O\xc0\
+\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\
+\xa7\x93\x00\x00\x00\x09pHYs\x00\x00.#\x00\x00\
+.#\x01x\xa5?v\x00\x00\x00\x07tIME\x07\
+\xe7\x0c\x0d\x09$9Q3\xe6g\x00\x00\x00\x19tE\
+XtComment\x00Create\
+d with GIMPW\x81\x0e\x17\x00\
+\x00\x09kIDATx\xda\xed]ilT\xd7\x19\
+=\xe7\xbe\x99\xb1\xcd\x1aC\xc0\xac\xb6\xb1\x81\xda\x1eC\
+T\x11\x10\xa4i\x135\x91\x12E\xa4KT\x14\xda&\
+$]\x14W(\xa9\x02\x81\x006\x84Q\xf0B\x96\x06\
+*D\xd5\xf6\x17\x0a\xaa\xda\x84F)R\xc2\xa2$\x85\
+&M\xd3\x85%\xc2cV\x8f1aKR\xb0qX\
+\xec\x99y\xef~\xfdAAN\xeb\xfb\xbc\xf0f\xf0x\
+\xe6\xfe\x9b\xf9\xde\xdc\xef\xbe{\xde\xf9\xb6{\xef\x1b\xa2\
+\x87\xad\xbc\xf9\x85Rh{'\x80\xf1\xc8\xb4\x844\x81\
+\x08{\x04F\xa4\xfav\xa1\xbcA\xa8\xfc\xcc\xb4%\x12\
+\x10\xe8n\x01\x09\x9e\xa8-\xa3-;AL\xc8LY\
+\xe2\x01Q\xdd1\x03\x8e\xb3=\x03F\xf2\x9a\x91!e\
+\xc7\xd6\x06\x95\xa5w\x00\x92\x01\xe3f3$\x18y~\
+&\xad\xf8\xb6\x0c\x18\xfd\x80!e'\xd6\x06\x95\xed\xec\
+\x043\xd1\xd4MgH0\xf2\xfcL\xda\xf6\xf6\x0c\x18\
+\xfd\x80!\xa5\x8d5\xe5\x16\xb1#\x03F?`H0\
+R7SQ\xb6e\xc0\xe8\x07\x0c)\xfd\xa4\xa6\x5c\xd9\
+\xd8I`\xdcM}:D\x84\x8a\xed\x10DE\xc4\x01\
+\x00\x92>\x00\xd9\x02\xc9\x22\xc8t`\x88O\xd9\xfam\
+B\xdd\x0c0: \xd8\x01\xca\x87\x8e\xb6\x22>\xb2\xd1\
+\xa6s\xae\xfdB\xbc}\xd8\xd8\xc1q\x00\xf8\xe2\xece\
+\x7fN\xae?'\x00=&\xae\xd5d\x05N\x15p6\
+!w\x01\x18:\x10A\xf1\x11jB\x12i\x00\x90{\
+\x04\xd8t\x99\xf1\xdf5\x17\x85.\xf4\xe0W\x17\x00\x9c\
+\x05\xb0\xffz\xc2\xdaT\x93G\xe1\x0f5\xf4\xcfHN\
+\x19P&\xab\xbc\xa9\xc6\x01\xa0\x92\x10=\xb4A\xb8(\
+\x90\x13{m\xef\xb8\xd0\x15/\xfa\x9c|\xec\xa9\xac,\
+k\xecRB\x9e\x060r \x98\xac\xe4\x00B\x1c\x12\
+\xc5\xef5\x14T\x1eLD\xf7\xc1\xc6\xda\xafQ\xc9\xab\
+\x00\x8az9\x03\xbfQ>l\xe9J\xe4h\xf5\x14E\
+\x7f;\xe9>$\x09Z\xc2v4\xfe\xe0\xe1\xd2Ps\
+\xa2T4L\xae\xfc\xb04\xb2\xe6~K\xa9w (\
+\xe8\xf9\xd0\xe4\xf0\x81\x82\x95\xefu]\xad\xa8y\x087\
+!\x8cP\x09\x06\xe3\x1c\xfc\xbe\x1f%\x12\x8ck\xedP\
+\xf1\xaacZ\xe1'W\x1dU\x0a;\xf5\xc4Z*\xd9\
+P\x9f\xbflOw\xd7\x956U\x17(\x8d\x87I\x94\
+\x80\x9c\x00\x91\x5c\x90\x1a@\xab\x10'\xe8H\x03rr\
+\xde\x0c\x8f\x7f\xe6\xa4[?\x07\x0b\xaa\xde\x9bv\xbc\xfa\
+%\x11<\x9b\x01\xe4\xff\xd1\x88\x5c\xa4\xfd\xa2\xdb%e\
+\x91\xd5\xf9\x14\xff*\x80?\xa6\xea\xc4\xd6N)\x07\x05\
+\x80\x22$\xda\xb1\xa6<R\xf3{;v\xa9\xeapi\
+\xddyS\x9f1\xcb\xffK\xbf\x1d\x7f\x14\xe0\xd8T\x04\
+$a&K\x93\xbfj\x9e\x14\xea0\xc9o;V\xf7\
+U\xa5\xb2vQ\xf1\xa7\xec\xc18\x08\x0c\x03Qae\
+\x0d\xf9\xdb\xb4\xa3!\xa3\xf3>\x92\xbf\xec\x8ch\xbc\x91\
+\xaa\x0cI\x0c \xe4yZ\xd9\x9bL\xe2\xf2\xa6\xf5y\
+\xb6\x92\xcd\x10)\xea=\xf10U\xfc\xfe\xcd\x08\x85\x8c\
+c\x8f_\xb17^\x0dZ2\x80\xfc\xd7\x99\xebm\x0d\
+\x13\x17\xb7\x98\xf1\xbaRAJ\xf0\x06\x82\x85;\xca\x17\
+\xf8\x17\x99\xc4G\xa7\x87\x0e\x83\xf8G\x06\x90k\x13\xae\
+\xf5\x9fM\xb2\x92C+F\x8a\xc8\x93\x1e\xa8y\xa4\xac\
+!\x140\x9aL-[3N\xfd*\x1cq\xfa\xf8\x17\
+\xa3B\xdf\xe0\x07\x00\x8c\xf2\x80\x86\xb7I\x8eo6\x80\
+\xf7\xbb\x1c\x85e\xfd\x13Z\x0b:/\xc2i\xfc\x09\xc4\
+\xc7\xd7>Z\x1a\x7f7>\xa9\x16\xdf\x16G>7j\
+W\x14\x8a~\x04\xf0\xb6t\x93\x00@t\xd3C\x05\xce\
+\x89\x03&\xb1\x85\xbb\xbcrT\x8ab\x04$\x1e\xf5\x1f\
+\x08\xf8;\xda\x00\xder}\x12\xfd\xd6\x9b\x0d\x05\xcb_\
+\xedI\xef\xf5\x85\x95\xdb\x00ls\xad\x104U\xcf!\
+0\xa5_\x9b,R\xed\x0b1\xa4]\xae\xb8\xd3\xbb\xc8\
+\x9a\xb3\x8d~d\xea\x92\xf3\x00\x1b\xd3\xde\x87h\xc8'\
+&\xd9\xf4OC\xa3\x05\xe2\xd9\x13%\x22s\xdc\xb2R\
+\x11}4\xed\x01\x11\x91SFY{\xa0\x94\xa0\xf2\x8e\
+\x8d\xcc\x9bu\xa8\xd6\x5c\xe5U\xea\xb3\xb4\x07\xc4\xd2f\
+@\xe8\xa0\xd0[\xf4\xc1+\x01=\xc9\xa8O\xe4\x5c\xda\
+GY\x9a\xbe\xd3\xc6\xf9\xf3#\x0f\x8e\xe7\x9c\xcc\x07`\
+\xa8\x97\xa9\xcf:\xe7\x87t\xf4\xbc`\xa4\xfaz\xfe#\
+\xd4o\x1d,z\xee\x83.\x93\xd7\xc6\xba\xef\x0a\x9d\xd9\
+\xdd\xf8\xcb\xa9^\xd72\xbd\x8f\xb2\x02h5\x82e\xcb\
+\x08\xafW\xc6\x85j\x84\x0b\x83Z\xbf\x5cB\x97\xb9$\
+\xe7v\x8a]\xcf\x02\xf8\xa0\xeb~\xf5\xbd$\x17vc\
+\x9fS\xc0\x87\xd8\xd1K.\xda\x02\xdeW\x05d\x88Q\
+\x9dO\xda\xd2\xdc\x87\x88\x040\xbc\xc3E\xec\xf7\x1c\x0f\
+ \xdbl?}\x97\xd3\x1a\x10\x01\xe5\x92\xdd\xe6\x96\x83\
+x\xbe\x06G*\xa3\xd9\xb5\xe3\x8e\xa49C2\xad_\
+\x01B\x08\x87\xf8\xdc\xfaL\x80\x17\x14\x89\x1bo.\xa0\
+\xac4g\x08\x19s\xb3\xe9.\x93\xd7\xf7\xca\x806\xfb\
+,mv\xf8\xe9\x93\xa9kk\xa8\x99A\xaa\xc3\xf3D\
+JY_\x98}\x9a=,\xed\x01\xf1Y\xd6\xad.6\
+\xad\xd5\xfb[\xd0-.\xa3\xb9%\xc3\x10\xcaD\x17\xf1\
+Y\xaf\xf5\xd96O\x9a\xf1\xd7y\x99(\xcb\x11\xe3\xd1\
+ij\xe7\x90\xb7a\xb68\x83\x06\xc7\x8d\xd5e\x0ao\
+\xcd\x00\x224n\xde\x0e\x0c\xca;\x04 \xe6]T\x87\
+S{\xc7\xae>o\x1e\x8a\x1e\x9f\xf6\x80\x08\xcd\x15\xdd\
+\xbd\xe3*\xae@\xe4\x80\x87q\xf6>\x90]\x87\xd2\x12\
+R\x04K\xd3\x1e\x10\x12\xe5\x85\xc7C\xd9.\x80\xed\xf0\
+L\x97\xa6qgIY\xf3\xa0\xd1\x00\x8a3&K$\
+?K0\xd5\x05\xb1\xbfz\xe4@lZx\xc7\x18_\
+\x89=K\x80\x9c\xbe\xa3-z`\x00\x02\xfa\x03\xf0\x1b\
+\xd7\x11\xa2\xf6\xa7\xbb\xa9e\xbf\x07\xd1\xdc\xbb\x07\x0a*\
+\xf7\xbb\xc8\xef\xe8\x9e\xcdb\xb9\x00~e\x80\x00\x02\x80\
+\xf8\x8eI\xd48eCT,\xeb\x85\x1b\x84#F\x91\
+\x8d&\xffQ&\xa1\x80\x80\xdd\x9e\xed\xd0B\xbf\x8b\xe9\
+m\x1b0\x80\x88\xe0\xbe\x92\xb3uF\xe7\x1e\x9e\xb4\xe2\
+5\x81\xbc\xd2wk\xc5\x17\xc2\xc5\xab\xde2\xdeTS\
+`.DJ\xba\xbfy\x0e3\x97dxn\xe00\x04\
+P\xbev\xbd\xd8\xed\x82\xecI\xa3\x96\x8b\xc8\x22\x11\xb9\
+\xd8\x0b\xea}\x0e\x8d\x9f7\x14U=g\xbc$\x14R\
+\xa0<\xdeC\xb3g<\xec\xaa\xc4\xb7\x0f\x80=P\x00\
+\x01\xc0\x87\xbf\xd2\xbc\xc6\xb8\x01a/+\xe2\x0d\xc5+\
+\xd7S\x10\xa4\xe23B\xd9!W7%H\xa7\xc4O\
+@i\x01e\x1b\xa1\x9f\xd4\xa2f\x86'Wmp\xd3\
+\x1a|\xd4?\x1f\x90\xb9=\xb3\xac,7\xb2\xb8x\xd9\
+\x1e\x00\x95\xc0\x97\xcb=\x22\x22\x00\xa2\x22\xb8\xe8eN\
+u}L\x09=c(\xfcC\xb8\xb8\xf2\xfb\xbd\xb0u\
+\xaa\xe4t].cz\x88\x95\x95\xa3y>v\xa9~\
+Z\xb4\x0d\xae\x1b\xef:\xf9\x8e\xc8\xea|K\x05v\x8b\
+`R\xcfL\x1f:Z\xb3\xe3#\xcf\xb8\x1cB\x9ds\
+rQN\x8b3b\x8c\xdf\x1ed\xfb%\xda\x11\x8d\xc5\
+\xda\x01\xc4\x0en\x81]\xbe\xc0\xbf\x0b\xc07\xbc\xab<\
+$\xe1\xd0\xa7\x08\x167\x14W\xadK4\xd5g\x9c\x09\
+\x0d\x8av\xf8\xdf\x050\xa7w&B\xcf;P\xb4\xea\
+\x8f}\xd1\x19l\xaa\xddJ\xc8\xb7\xbc\x04$\xf1\xc7\xa1\
+\x89\x9a\xe9\xc7\xea\x16&RGis\xcd\xd8h\xbbo\
+ko\xc1\x00\x00\x07j\xfe\x0d\xa4*\x17\xbd\xbe\x97d\
+,\xe1\xe6hKo\x9c\x16\xa9]7\xbd\xf1\xa5\xd1^\
+w^r\xaav\xa4%\xb2\x1d\xe4\xbd}\x8b\xd0\xf1`\
+\xb0y\xcd7\xfb6{LI@\xaeE4Ok+\
+\xf6Q0R\xbdp\xc6\x99\x90gU\xd8\xc3\xe3W\xb4\
+@X\x7f\x03]\x04 \xd6\xe6\xe9\xc7\xeb\xee\xef\xf5/\
+\xb5\x8e\xa6\x96S7\xb7\x16@\xb6\x13|\x1fb}\xe4\
+\x14u\x1c9\xc8\x909b\x91y\x16\xb8\xc5\xb8\xe7\xb1\
+\xbc\xa9&\x0f\x90\x8f\x01\x8e\xe9{.\x8bvM\xbe\xae\
+\xb4\xf3\xfa\xf9\x9c\xd1\xbb\xcf\x8c\xab\xe8\xd2\xd1\xdf\xbd\xeb\
+n\xdf\xbf'\xdeWH\x89\xcf\x86\xa5*\xbc\xdc\xcd\x9f\
+\xbc79t?\x92\x8b\xa04\x0bp\x9a\x1am\xa2\xd0\
+\x01R(\xcc!0N(A\x08\xe6\x87\x8b\xaa\x8c\xb5\
+\xab\xe0\xf1\xea\xc7(\xdc\xe4\xd1\x88.\x028,\x82\x93\
+\x10}\x89\xca\x22\x94\xce\x15\x07\x93\x14Y(\xc0\xe0\xc4\
+LC\x7f\x01\xa4g\xcf\xf0\xbf\xe2g.\xdcs\xe4\xce\
+\x17\xbb\xb4\xdb3\xf6<\xe1\xef\xc8\xcd\xdfN\xf2\x1e\xa4\
+hKJ\x94\xe5\xe1pg\xfa\xf2\x86/0&\x9a\xb7\
+\xff6\xaeb\xbeE\x90\xe4g\xd7)\xe9\xd4=\xe1\x88\
+\x85\xba\x92\xe3\xa1B\x93\xbc\xbety=\xc8\xd5\x19@\
+\x92\xd7\x86\xfa$\xb0\xd6\x95G\xed\xb1_\x03\x08\xa7\xa2\
+\xb9\x22\xb8,\x05\xb7\x92\xca\xbci\xcd\xb5\x0f\x98\xa4\x0d\
+\xc1P\x8b\x80U\xa9\xf4\x12\x1a\x11\x11\xa5di\xb8\xa8\
+\xf2\xe5T\xdc\xdb\xabD\xcb\xcb3\xf6<\xd1\xe5Z\xc6\
+\xe4c\xb5\xa3D\xcb\x18\x08/\xa5\x06\x18\xd0\xb4\xac\xa5\
+\xf5\x85+_\x01\x12\xfc6\xa0DVKb\xb9\x05k\
+\x00,\xbf\xf6\xc5\xacS\xb5#\xdb\xa3\xfaY\x81\xfc \
+U\xdeU/\x22\x02\xc5%\xe1\xc2\x15\xebnvb\xe8\
+Ek\xd5\x96\xf5\xf5\xac\x98\x16[\xe11!*\x00\x19\
+\x9e:>C\x1c\x82\xcb\xc2EU\xbf\xe8\xfc}\xaa2\
+\x04\x00ri\xdb[c\x8a\xa3\xc9\xd4zC\xe9\xd55\
+\x15.\x0dwQ\x05Oe@@2\xe5\xb6\xf9\x08\xc4\
+!\xb9,\x5c\xd4\xf5\x92DJ\x03\x92r`\xb80#\
+U\xf3\x90\xd4\x05\x03\xe2(\xa8%\xdd-\xd6e\x18\x92\
+4f`I}q\xe5\xfa\x81\x96\xa9\xa7(3\xb0\xa4\
+\xa1x\xe5\xfa\x9e\x5c\xef\x03\xe4q\xe9\xc1\x9f\x83eZ\
+\x1f\x03\x0f\x9b-\xf5S\xcd{\xc8\xfe\xb7\xfd\x07:\xcc\
+\xccF\x8ay\xc7t\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x02\xed\
+<\
+svg width=\x2248\x22 h\
+eight=\x2248\x22 viewB\
+ox=\x220 0 48 48\x22 f\
+ill=\x22none\x22 xmlns\
+=\x22http://www.w3.\
+org/2000/svg\x22>\x0a<\
+path d=\x22M24 40C1\
+9.5667 40 15.791\
+7 38.4417 12.675\
+ 35.325C9.55833 \
+32.2083 8 28.433\
+3 8 24C8 19.5667\
+ 9.55833 15.7917\
+ 12.675 12.675C1\
+5.7917 9.55833 1\
+9.5667 8 24 8C26\
+.8333 8 29.3167 \
+8.575 31.45 9.72\
+5C33.5833 10.875\
+ 35.4333 12.45 3\
+7 14.45V8H40V20.\
+7H27.3V17.7H35.7\
+C34.4333 15.7 32\
+.8167 14.0833 30\
+.85 12.85C28.883\
+3 11.6167 26.6 1\
+1 24 11C20.3667 \
+11 17.2917 12.25\
+83 14.775 14.775\
+C12.2583 17.2917\
+ 11 20.3667 11 2\
+4C11 27.6333 12.\
+2583 30.7083 14.\
+775 33.225C17.29\
+17 35.7417 20.36\
+67 37 24 37C26.7\
+667 37 29.3 36.2\
+083 31.6 34.625C\
+33.9 33.0417 35.\
+5 30.95 36.4 28.\
+35H39.5C38.5333 \
+31.85 36.6167 34\
+.6667 33.75 36.8\
+C30.8833 38.9333\
+ 27.6333 40 24 4\
+0Z\x22 fill=\x22#66708\
+5\x22/>\x0a</svg>\x0a\
+\x00\x00\x01\xb3\
+<\
+svg width=\x2248\x22 h\
+eight=\x2248\x22 viewB\
+ox=\x220 0 48 48\x22 f\
+ill=\x22none\x22 xmlns\
+=\x22http://www.w3.\
+org/2000/svg\x22>\x0a<\
+path d=\x22M13.05 4\
+2C12.225 42 11.5\
+187 41.7062 10.9\
+313 41.1188C10.3\
+438 40.5312 10.0\
+5 39.825 10.05 3\
+9V10.5H8V7.5H17.\
+4V6H30.6V7.5H40V\
+10.5H37.95V39C37\
+.95 39.8 37.65 4\
+0.5 37.05 41.1C3\
+6.45 41.7 35.75 \
+42 34.95 42H13.0\
+5ZM34.95 10.5H13\
+.05V39H34.95V10.\
+5ZM18.35 34.7H21\
+.35V14.75H18.35V\
+34.7ZM26.65 34.7\
+H29.65V14.75H26.\
+65V34.7Z\x22 fill=\x22\
+#667085\x22/>\x0a</svg\
+>\x0a\
+\x00\x00\x01\xf7\
+<\
+svg width=\x2248\x22 h\
+eight=\x2248\x22 viewB\
+ox=\x220 0 48 48\x22 f\
+ill=\x22none\x22 xmlns\
+=\x22http://www.w3.\
+org/2000/svg\x22>\x0a<\
+path d=\x22M9 39H11\
+.2L33.35 16.85L3\
+1.15 14.65L9 36.\
+8V39ZM39.7 14.7L\
+33.3 8.29998L35.\
+4 6.19998C35.966\
+7 5.63331 36.666\
+7 5.34998 37.5 5\
+.34998C38.3333 5\
+.34998 39.0333 5\
+.63331 39.6 6.19\
+998L41.8 8.39998\
+C42.3667 8.96664\
+ 42.65 9.66664 4\
+2.65 10.5C42.65 \
+11.3333 42.3667 \
+12.0333 41.8 12.\
+6L39.7 14.7ZM37.\
+6 16.8L12.4 42H6\
+V35.6L31.2 10.4L\
+37.6 16.8ZM32.25\
+ 15.75L31.15 14.\
+65L33.35 16.85L3\
+2.25 15.75Z\x22 fil\
+l=\x22#667085\x22/>\x0a</\
+svg>\x0a\x0a\
+\x00\x00\x1a\x93\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00J\x00\x00\x00H\x08\x06\x00\x00\x00Q\x18cz\
+\x00\x00\x01\x85iCCPICC prof\
+ile\x00\x00(\x91}\x91=H\xc3@\x18\x86\xdf\
+\xa6\x8a\x22-\x0ev\x10q\xc8P\x1d\xa4\x05Q\x11G\
+\xadB\x11*\x84Z\xa1U\x07\x93K\xff\xa0IC\x92\
+\xe2\xe2(\xb8\x16\x1c\xfcY\xac:\xb88\xeb\xea\xe0*\
+\x08\x82? \xae.N\x8a.R\xe2wI\xa1E\x8c\
+w\x1c\xf7\xf0\xde\xf7\xbe\xdc}\x07\x08\x8d\x0a\xd3\xac\xae\
+q@\xd3m3\x9dL\x88\xd9\xdc\xaa\xd8\xf3\x8a\x10\xc2\
+4\xc7\x10\x93\x99e\xccIR\x0a\xbe\xe3\xeb\x1e\x01\xbe\
+\xdf\xc5y\x96\x7f\xdd\x9f#\xac\xe6-\x06\x04D\xe2Y\
+f\x986\xf1\x06\xf1\xf4\xa6mp\xde'\x8e\xb0\x92\xac\
+\x12\x9f\x13\xc7L\xba \xf1#\xd7\x15\x8f\xdf8\x17]\
+\x16xf\xc4\xcc\xa4\xe7\x89#\xc4b\xb1\x83\x95\x0ef\
+%S#\x9e\x22\x8e\xaa\x9aN\xf9B\xd6c\x95\xf3\x16\
+g\xadRc\xad{\xf2\x17\x86\xf2\xfa\xca2\xd7i\x0d\
+#\x89E,A\x82\x08\x055\x94Q\x81\x8d8\xed:\
+)\x16\xd2t\x9e\xf0\xf1\x0f\xb9~\x89\x5c\x0a\xb9\xca`\
+\xe4X@\x15\x1ad\xd7\x0f\xfe\x07\xbf{k\x15&'\
+\xbc\xa4P\x02\xe8~q\x9c\x8f\x11\xa0g\x17h\xd6\x1d\
+\xe7\xfb\xd8q\x9a'@\xf0\x19\xb8\xd2\xdb\xfej\x03\x98\
+\xf9$\xbd\xde\xd6\xa2G@\xff6pq\xdd\xd6\x94=\
+\xe0r\x07\x18|2dSv\xa5 -\xa1P\x00\xde\
+\xcf\xe8\x9br\xc0\xc0-\xd0\xb7\xe6\xf5\xadu\x8e\xd3\x07\
+ C\xbdJ\xdd\x00\x07\x87\xc0h\x91\xb2\xd7}\xde\xdd\
+\xdb\xd9\xb7\x7fkZ\xfd\xfb\x01\xa7vr\xbc\xf6x\x14\
+.\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\
+\xbd\xa7\x93\x00\x00\x00\x09pHYs\x00\x00.#\x00\
+\x00.#\x01x\xa5?v\x00\x00\x00\x07tIME\
+\x07\xe7\x0c\x0d\x0d+\x19\xea\xccr\xbc\x00\x00\x00\x19t\
+EXtComment\x00Creat\
+ed with GIMPW\x81\x0e\x17\
+\x00\x00\x18jIDATx\xda\xed[y`T\xd5\
+\xd5\xff\xdd\xfb\xde\xac\x99}\xb2/da\x93E@P\
+\xb1\xdaZZ\xfd\x94-\xc8\xe2\x04\x14\xb7JK\xe5\xf3\
+\x0b&\x80\x88\xd5\xb6Q\x8b~\x22\x90\x80b-\xa2b\
+QI\x18\x11H \x91\x8a\x15k\xddQPY\x0ck\
+\x12\xb2'\x93\x99\xc9\xccd\x96\xf7\xde\xbd\xdf\x1f\x81@\
+\x08\x89Qh\xc1\xaf\x9c?g\xee\xbcw\xde\xef\x9d\xfb\
+;\xe7\xfc\xce\x1d\xe0\x92]\xb2Kv\xc9.Y\xaf\xcd\
+\x91\xb7O\xedpl\x10.6\xbf\xc8\xc5\xe2\xc8\xf4\xe7\
+\xf8H@~\x82s\x0c\x03\xe1!\x0a\xfa1\x04\xe9\x0f\
+\x85st\x15\x97\x80\x02\xe0X\xe2\x8f\xa7:\xed\xef\x08\
+\xf8o8\xa0=\xe3\xebVp\xaca\xb2\xb8\xd89\x8f\
+\xb4\xfcG\x02\xe5\xd8\xc0\x05\xda \xfd\x0f\x07\xfd=\x01\
+\xb7\xf7\xec%\xa9\x00g\x8f\x17e\xab_\xf9\x8f\x02j\
+\xc6Jy\x02'\xfc\x7f\x01\x0c\xfd>\xbf\xe3\xe0\xdf\x10\
+\x8aYE\xf7\xab?\xff\x7f\x0d\xd4\xa4\xa7\x03\x89:\xbd\
+\xfae\x007\x9f\xcbu8\xe7\xaf\x8bT\xf5\xc8\x1b\xff\
+C*\xff_\x015\xe9in\xd4F\xc9\x8f\x10\x86\x5c\
+\x10\xa8\xbb[\xa7\x84$\xb8\x0f\xd6B\xd0\xa9aJ\x8d\
+\x86\xa0V\xf5t\xd9V\x0e\xb6\xbc\xd1\xa5^\xbc3\x8f\
+\xc8?z\xa0\xb2V\x86o#Dx\x0e\xe0\xb6n#\
+Da\xf0V6\xc1_\xed\x02g\x1c\x00@U\x14\xa6\
+\x94\x18\x18R\xec \x84\xf4\xc8_DQ\xe6\x15>\xa0\
+\xd9\xf4\xa3\x04\xea\xd6\x95\xd2\xcfD\x82\xa5\x1c\xb8\xba\x87\
+-\x84`S+\xdc\x07\xeb\xc0d\xe5\xackD\xad\x1a\
+\x96~q\xd0E\x9b\xbekC~\xaa\x12Tw\xbf\xf6\
+\xdf\xa4\xfcG\x01\xd4\xac5\xdc\xe6o\x93\x0a@\xc8\x9d\
+=\xad\x0b{\xdb\xe0>T\x0f\xc9\x1f\xec\xd5u5\x96\
+(\xd8.K\x84\xa8U\x7f\x17\xe1\xbf\xc0\x15\xd5S\xce\
+\x1cRuQ\x025s%7)T\x9e\xc3\x81\x05\xe0\
+\x88\xee\x96\x87\x22\x12Z+\x9b\xe1\xaf\xf9ae\x911\
+\xd9\x0eC\xb2\x1d\xa2\xb6g\xfe\x22\x9c,PY\x847\
+\xd6\xddE\x02\x17\x0dP\x8e\x15\xd2X\x22`\x09\xe1\xb8\
+\xbc\xdb7-3\xf8j\x5ch\xadl\xea\xe0\xa1\x1fj\
+\x82F\x05sZ,\xa2\xe2-=?\x01A9!\xe4\
+\xd1\xc2\xfb\xc57/8P\xb3\xd7*s\xbd>\xb6\xa2\
+\xa75A\x97\x0f\xde\xa3\x8d\x90\x02\xa1\xf3\xba\xcdU\x06\
+-,\x19q\xd0\xda\x0c=p=`\x8c\xa2\x8b^\xfc\
+\x95\xf0\xf4\xb9\xdc\x8b\x9e\xab\xb3\xdc\xef\xbf\x22%^\x80\
+^wv\xcc\x99\xac\xa0\xad\xa9\xf5\xbc\x83\x04\x00\x92?\
+\x04_\x8d\x0b\xbc\x9bD\xa0\xd3\x12$\xc4P\xc0\xe7\x1b\
+p\xae\xf7\x12\xcf\xf5\x02\xfb\xfe~\x14q\xe96)\xed\
+\x8ax\xc1\xa0\x17\xa9\xdb\xc3 \x9d\xe67\x15\x05\xd8/\
+K\x82!\xc1\x0a\xcf\x91zDZ\x83\xe7'\x9a\xa2\xb4\
+\xb0\xf4\x8b\x87\xd6\x1a\xd5\xf5\xa1\x04\xc0f\xa6\xa0R\x84\
+\x1d\xfe\xb0\x96\xb9\xaa[\xc9\x05\x07\x0a h\xa8p\xab\
+\x9a\xab[\xa5\xb8t\x0bRG$ (\x11\xea\xf2\xb0\
+\xceY\xcb\xacG\xdc\xc8\x0c\x04\xea=\xf0\x1ci\x00\x93\
+~X\x8dHE\x0aC\xb2\x1d\xa6\x94h\x10\x81v\xe1\
+\x11\xb3\x91\xc2\xa8\xe7J\xcd\xfe&\xd4|\xdbDeI\
+\x11A\x08\xbf\xe0@q\xc2\x09\x01\x81\x22+\xaa\xdaC\
+.\xb8j[\x91:4NJ\xedkS\xb5x\x19|\
+\x81\xce>F\xc5[\xa0\xb5F\xc1_\xebFke\xd3\
+\xf7\xcbxIv\x18S\xa3!\xa8\xbb\xba\x1d\xa5#\xb0\
+[(\x9a\x8e\xb5(\x07\xf6\xd4\x139$\xd3\x19\xd7\xd7\
+`o\xa5\x11{+M\xb8\x08\x22\xea\x8c\xfa( \xe1\
+\xe0\xa7\xd5\xaa\xe3\x07\x9a\xe4!?M\x859^+6\
+63Dd\xde9k\xa5\xc7\x22*\xc1\x0a\xf7\xc1:\
+\x84Z|=^Sm\xd2\xc1\xda/\x01j\x93\xae\xeb\
+\x03\x88@\x9cM\x80\x1c\x0c\xc9{\xdf\xad\x15\xbc\x8d~\
+\xe1Z\xa1\x12aQ\xc4\xc8\x0c/v~c\x07\x01\xf8\
+E\x00\x14\xc5\xd9\xfc\x08\xb6\x86\xc5]\xa5\x07\x11\x93j\
+\x8e\xf4\x1b\x95\xa8\x0eC\x84\xdb\xcbp:\xef\x8aZ\x15\
+b\x86\xf5A\xd8\xdb\x86\x96\xf2Z\xc8m\xe1\xceWV\
+\x09\xb0\x0dL\x82\xd6n\xe8\xd2\xc6\x10\x02D[)t\
+*\x8e\xf2\x8f\xab\xe4\xe6*\x8fh\x89mC\xd2\xc00\
+\xa6T\xee\xc7\xb2\xc8O\xb1pmR\xfbZ\x8e\x8b/\
+\xa2\xce\xb4\xa6J\xaf\xba\xb9\xaa\x15\xa9\xc3b\x918(\
+\x16\xfe \xe0\xf6v\xe5\xaf\x84\xab\xfa\xc1_\xe3\x82\xb7\
+\xaa\x19\x5cV`H\xb1\xc3\x9c\x1a\x03Bi\xd7t\xaf\
+\xa7\xb0Y\x08\xea\xca]\xf8\xfa\xabz\xc8\x92\x22\x02\xc0\
+\xe8[\x8e\xe2\xc0G\x09x04\xaes\xe6\x05\xbb\xf8\
+\x81:\xd9\xd3U|\xd5\x80\xfa\xc3nd\x8cL@j\
+\x8a\x19\xcdn\x86@\x90wbbC\xb2\x1d\xfa8\x0b\
+\x00\x0e\xaa\xea\xea\x9aVC\x10k\xa3\x084\x07\xf0\xd9\
+\xa6*\x84\xdb\xa4N\xdf\xbf\xf3\xca`0\x99\x9e\xa5\x96\
+\x12\xd8\x85\x07J\x11\x9f\xe7\x824\x86\x00\xa9\xdf\xb54\
+\x14\x88`\xff\x07\x95\x88\xb2j1\xf8\xfa4XLj\
+4\xba\x14\x9c\x9e\x00\xa9J8k\xba\xb7[(\x88,\
+\xe1\xdb\x0f\xea\xe0\xaa\xf6vS\xb3\x9d\xb5,t\x83\x93\
+\xd7.\x8a\x16\xe6g\xd9\x87b\xd4\x11\xfaN\xc8\x13\x18\
+\xce\xe5\xde\xbf\xbc\xf8~v\xa4\x0f\x8bE\x88\x8b\xf0\xb6\
+v\xae\xbf\x00\x80\x12\xc0j\xa6\xd0\xab9\xaa\xbei@\
+Mys\xaf\xdb\x1f\x22P\xe8l\x86]A\x8f\xe7\x96\
+\x0f\x0bG\xd6^P\xa0&M\xcd\xb9\x8ed\xdc`\xd3\
+\xa5\x8e]\xc6\x81\xferH\x82\xf7h\x03\xda\x1a\xbd\xbd\
+w\x80\x12\xf4\xbd2\x11q\x196x\xfd\x1c\xa1\x08\xc0\
+\x19\xa0\xd5\x00V\x13Ec\x85\x1b\xc7\xf6\xd4A\x0a\xf6\
+\xbe\xee\xd2Z\xa3`\x1d\x98t\xa2q\xe6\xfb\xa5\xa3\xa5\
+\x8fJ\xc7w\x86J\xde,(\xfb\xc1\xfd\xe5\xb9\x005\
+h\xf4X_\xca\x15\xe3WP\x8dqTDj\xaf\xc2\
+\xf51&hLzH\xbe\x10\x98\xa4\xf4\x82\xc0\x80\x96\
+\x1a\x1f\x9a+\xbd0[T\xb0YE\x18t\x80\xec\x0f\
+\xe2\xdb\x0f\xabPw\xd0\x05v\x22J\x09%P\xa9E\
+0\x85u_F\xf4O\x809#\x0eTl\x7f4\x83\
+\x9e\xc6\x98-\xa6\x18_\xf9\xae%\xe5\xe5\x1fF.\xd8\
+\xd6\xbb\xf9\xd7\xdf\xbe\x9c:<a\xa6!\xce\xa8nv\
+3\x84#\xbc\x03\x80@\x83\x1b\xde\x8a&(!\xa9\xf7\
+\x0e\x11\x02\x10t\xd9b\xa2\x8a\x22q`4\x98\xc2P\
+}\xa0\xf9\x8cj]\x801\xc5\x0ec\xb2\xbd\xa3Z\xd7\
+\xaa\x09l\x16\x8a\xb0'\xc0\x8f|Q\xf7\xca\xf6\xd5\x03\
+f\xfd[\x9a\xe2\x89Y\xb9\x99\x9c\xf3.\xc0\xfaZB\
+d\xef\xcec\xea\x8a]\xc7\x11mP\x10k\xa3\x10\x84\
+\xf6W\x10\x15oE\xdc\x88t\x18\x12\xad=\xcb\xb9g\
+d\xc83A\x8a\xefgCB\x7f\x1b\xd4:\xb1\xcb\xab\
+5&\xd9\x10\x7fu_\x98Rc@\x04\x0a\x81\x021\
+V\x0a\xabNa\x15_TG\xbe\xdaq\x94\xfb\x5cm\
+g\xa7\x8e\xdbr\xc7\x8e\x1a5[u~\xb3\x1e'\xfa\
+\xcc\xacy\xaf\xdd2#\xf7\x85-\x85\xf9\x1f\x9c\xf6`\
+\x84\x10\x82\xfa#n4W\xb5\xca\xf1\xfd\xedH\x19\x1c\
+#\xb6I\x14\xeeV\x06A\xab\x82u@\x22\x8c)v\
+\xb8\x0f7 \xe4\xf2\xf5\xfa\x96\xf6d#\x0cV\x1d\xa8\
+H\xc1\x15\x8eHPF\x9b'\xdc\xa1x\x9a\xd3c\xa1\
+1\xeb;\xd6[M\x14\xe6(\xa0j_#\xaf\xf9\xb6\
+\x99&\x98\xfcj\xa3VDk[g,&e\xcd\xbf\
+^\x01\xbf\x1b2w~\xf1\xc5j\xe9\xbcr\xd4\xc1\xfd\
+\x1f\xef\x1b\xf3\xd3a%\x9e\x88\xe6\xa6\x81\x83G\xcfM\
+\xed{\xe5gG\xcb?\xf3\xa5\x0c\xb9o2\x01\x19\x01\
+\x00\x8cq\xda\xda\x14\xa0\xcdU^\x18\xcdj%!Y\
+G\x15\x05\x88H\x00U\x89\x88\x8a3C\x15\xa5\x85\xe4\
+\x0bv\xf0NO\x16\xdb\xc7\x02A-\x00\x1c\x08\xfa\x22\
+\xa8-w!\x12a\xb0\x0dJ\x82%=\xb6C\x16\xd6\
+k\x09\xe2\xec\x02B\xcd\xbe\xc8\xde\x7fT\xb0`u\xb3\
+@\xa1 \xff\xb7\xfbP^mD\x83[\xfb\xe5\xf1\x03\
+/\x14\xdf2c^J\xff!\xa3W3\x10\xbdMC\
+\xff\xe0\x5c\xbf\xfc\xc0\x0f\xe6\xa8\x89\x8e\xdc$\x86\xb0R\
+\xea|\xbe\xbe\xbb\x1f\x8d\x9d\x91\x93&*4\x1bP\x94\
+\x16vW\x02 \xdcq\xd6&6Z\x8b\x81\xa3\x93!\
+\x1a\xf4\x9d\xea%\xce\x18\x02u\x1ex\x8e5v\xab%\
+\x01@\x9f\xa1\xb1\xa0\x94\xa0j\x7f\xbb*jL\xb6\xc1\
+\xd4'\x16Dlg\x0c\x81\x02q\xd1\x02 EP\xfe\
+Q5<\x0d~P\x91\xe1\x09\xe1\x1d\xbc-\x0fDs\
+\xa2\x1d\x07\x8e\x1bA\x10*\xb2\x08\xeb?\x07H\x7fY\
+\xc6c\xdb\xdf*\xa8\xeb\xee\x9e\x93'\xe7X\x14\x9d \
+\x96\xac_\xd6\xdc#Pcg\xe4\xa4\x89\x8c\xe4\x82\x12\
+\xf7\xd6\xf5\xcb\x1e\xebI\xa2\x980}\xc1P\x9f\xf2_\
+\xaf\xcb<nX\x8f\xf5R\x7f;\xd2\x87\xc7#\xa4P\
+\xb4x\x19\xd8\x89`\x92\xc32|UM\xdd\xea\xe7\xa2\
+F\x80\x1cV\xa0\x8b5\xc3\xd6/\x1e\xf4\x84j@\x08\
+`5R\x18u\x1c\x87v\xd5\xa0\xf1\xa8\x1b\x9c\x03\xa3\
+\xc6\x1d\x83\x1c\x11 \xbc'\xe2+\x16\x0f\xe5\x04\x05\xab\
+H\xcd\xa1(\xf1ow\x96\x16\xae\xf8\xb4;\x1f\x07;\
+\x1c\xea\x0c\xd2'\x87\x83\xa5\x12\xae<\xbd\xd5\xb9\xb2\xaa\
+\x0bP\xe3o\x9f\x9f\x0a\xa6\x5c_ZX\xb0\xeeTd\
+-\xbc\x1a\x90\x9e\x86\xa0\xfcik\xe1\xcaw;\xed\xf1\
+I\x0b\x8d\x8aV\x9aJ\xb4\xd8\xe1\x0a\xdc\xb3\x98\x80\xdf\
+\xfd\x9dd\xa8\x11\x91<(\x06\xc9\x83b\xe0\xf5sx\
+|\xa7\xb6\x9e\x1c\x8c\xa0yo\x15\xa4@\xb8\x8b8g\
+\xed\x1f\x0f\x8d\xe5\x948g\xd4S\xd8\xad\x04\xf5\x87[\
+plw\x1d\xe4\xc8\xa9\x88\xec{E#*\xf7FC\
+\x96\xe8\x19\x09\x82\xbd\xa4a\x7f]`R\xd3\x89\x08y\
+\xb6\x14\x17\xbf\xdc\x89('d\xe5\xdeH\x81\xf9\x0cX\
+\xb6mC\xfe\x8eS\x810\x7f\xaa:\x12z\x7f\xd3\xa6\
+U\xae\x8e\x88\x1a\x9f\x95\x9bE9\xee\x0c3e\xde;\
+\x1bW\x1e:\xf9yfVn.\x07\x1f!F\xf0\xc7\
+\xcd\x9b\x0b*&N\x9f?\x93@\x99*+\xe4/T\
+\xe0\xd3\x82\xca\xa8)!~yL\xaf\x8bA\x83\x1a\xe9\
+#\x13`O6\xa3\xc1\xc5\x10\x0a\x9f\x0a\xd8\x90\xcb\x87\
+@\x83\x17 \x04\xfaX\x13tv\xe3\xa9\xc6Y\x0d\xc4\
+X\x05\xb4\xb5\xf8q\xf0\xd3\x1a\x04[\xc3\xbd/@\xc9\
+\xber=\xdd\xb5\x9b\x82?\xc79\x99\xc7)/\xdbZ\
+T\xb0f\x92#\xb7\x1f'\xe4I\x0e\xfew\x1d\xaf~\
+\xd9\xe9tF\x00`\xe2\xf4\x9c\x91\x9c\x93\xc7\x05NV\
+\x17;\x97\x17w\xd9zc\xc6\xe4i\x8d\xd1\xde<F\
+\x01U\x84\xbf\xb0ysA\x05\x00\xdc4eA\xacF\
+%?\xcaA\x86\x80\xe3\xb9\xad\xce\xfcMc\xc6\xe4\x89\
+;w\xe6\xc9\xe3\xb2r\xae\x8b\xb0Q\xeb\xc2HOg\
+\xdc\xd0k\xe7\xcd1Q\x18\xf4\xb3>P\x04\x15\x5c\xee\
+\xce\xfd^\xa7lC\xdb\xfb<\x15\x14\x1c\xdb]\x87\x86\
+c\xee\xefQ\x93\x85\xa1Ay\xb9\x06_\xe6\x96\xbdY\
+P\x06p\x02\x10\x9e9}\xc1-\xe0\xca\x03\x9c\xa0B\
+\x11\xcd9e\xaf\xe7\xb5\x02\x80\xc3\x91\x1d\xd3F\xc4\xf9\
+\x04\x90h\xc8\xbb\xe4\xf4\xc8#\xdd\x91\xb5\xc00\x8fp\
+ZQw\xd4\xff\xec\xe9)t\xf2\xe4\x1c\x8b\xac\xa1\x0f\
+\x83\xf3\x0cF\xe8\xf6\xd2\xc2\xa5/e=\x17\x99\xc9\x82\
+\x81\xb5\xad\xb5~\xc1_\xe3\x06\xbe\xc78*iP4\
+\xfa\x0c\x8aAP\x11\xe1\xf6\x9d\xe2/B\x00\x8b\x91\xc2\
+\xa8\xe5\xa8\xda\xd7\x88\x9a\xf2\xe6^e\xca\x93\x15|T\
+\x82\x0d\x86D\xbdG\xd4\xeb\xe7\x1fy\xf5\x81uI\xe9\
+Q\xd3\x18\xe5\xb7\x81\xd2}\xac5\xb4\xb2\xb4\xf4T\xb2\
+\x1a\x959[\x9f\xa0\x8f\x9a\x0b\xf0\xc1r\x18\x7fx\xfb\
+D\x80\xf4\xba2\x9f8c\xee\x0dP\xc4\x1c\x85\xf0\xd5\
+\xa3\x07\x9b\xb7}\xbe\xdf{'%\xb8\x81\x81?\xb5\xad\
+\xa8\xe0@fV\xcem\xa6A\x93\x17(1\xd7\x8d\xe4\
+'\xb0\x91C\x11\xb8\x0f\xd5!\xe4\xf2\xf7^\xc2P\x0b\
+\xe8;*\x11\xf1}m\x08\x8698\x07t\x1a\xc0]\
+\xef\xc7\xc1\x8f\xab\x11n\xeb}\xe7\xa1\xb1\xe8a\x1b\x90\
+\x08Q\xaf\xe9h\xac\xa9\xeb\xa3\xc3\xad\x07\x8a\x1f/)\
+\x5c\xb6n\xe2\xb4\x07\xfbC\x94\xf38\xc7\xdf\xb6m\xc8\
+\x7fuR\xd6\xbc_0\xce\xfe\x9b\x13a\xcd\xb6\x0d\xcb\
+\xb6\xff\xe0\x16&//\x8f\xee\xda\xef\x99\x03\x90\xe1\xe0\
+\xec\xdd\xad\xce\x15E\x9d\xe6z\xcfz^\xb6$\x9a~\
+\xe5\xf20\xf8\xdbNER[c+\xbcG\x1b \x87\
+z\xff\x90z\x93\x16\xd6D#\x08\x01\xbcM\x01\xf8\x9a\
+\xdb\xce\xd8\xaez\x08j\x01-5]\x8bV\x95N\x03\
+Sz\x0c\xf4\xb1\xe6S\xd7\xd3\x12\xd8\xcc\x94\xb5\xd6\xb5\
+\xbe\xf2\xe2\x03\x96_\x9f\xbe~|Vn\x16!\xb8\x9d\
+3|X\xea\xcc\x7f\xe6_\xde\xeb];u\xf7+\xe6\
+X\xc3\xed\xfd\xaeNV\x04\xbdF\xe7\xf2(\x88H'\
+\xeb%\x0e\x7fm\x0b|\xc7\x9b\xa1\x84\x7f\xf8\xc9\x9c(\
+\x8b\x16\x1a\xbd\x0a\xb6$#B\xfeH\xa7^\x8f\x88\x14\
+\xa6d;\x8c\xa91\x1dm\x92Z\x0d\xd8\xcd\x14\x92\xaf\
+\x8d\x1f\xdeU\xc7}M\x81W?z\xeb\x8a{/\xf8\
+\xb8\xca\xdb\x14P\x7fQz\x90\xc5gXy\xea\xb0X\
+\x22\x11\x15<^\x06\x09\x04\xc6d;t\xd1&\xb4V\
+4\xa2\xad\xc1\x0b\xce{\xcf_*\xad\x08\xbdI\x03[\
+\x92\x11L\xe1\xa7\x9a\xe6\x93\x11\x13k\x86)=\x16*\
+\x9d\xba\x83\xd7lf\x0a\xad\xa0\xb0\xea\xbd\xf5\xbc\xf6p\
+\x0ba\x92B/\xaaq\x158\xa7\xf5GZ\xe0\xae\xf5\
+)\x89\x03\xa3\x95\xf8\x016Uk\x1b!\xbe\x00\x87\xa8\
+U\xc1vY\x12\x0c\xc96x\x0e7 \xec\xe9\xdd\xb9\
+\x89\xc4~6\x08j\x01\x9cs\x10\x00\x8d\x15\x1e\xb4y\
+\xc3P\x1bu\xb0\xf4\x8d\x87\xc6r\xaa\xcf3\x1b\x08\xac\
+f\x8a\xe3{\x1bP}\xa0\x99\xca\x11\x05\xf7\xdcp\x1c\
+\xbb\x8e\x98\xb1\xb7\xe2b\x1cW\x05%\xe1\xd8\x9e:\xa1\
+\xee\xb0\x0b}\xafLTR\x12LB\xb3\x87\xa1-\xc8\
+\xa16\xe8\x10;\x22\x0dm\xf5\x1ex*\x1a\xbfS~\
+\xe1'\xc8\xc1u\xdc\x87\x90/\x0cY\xe1\xed\x873\x12\
+\xac \x94\x9c\xd0\xd1\x81h\x8b\x80\xa0\xbbM\xda\xb3\xbd\
+\x96\xf8\x9a\xdb\xc4\x1b\x85ChS\xa9\xd17>\x88\xd2\
+/b/\xeeqU\xc8\x1f\xc1\xbe\x9d\x15\x82%\xde\xc8\
+/\xbb&\x89\x98\xa2Tp\xb9\xdb\xe5^}\xbc\x05Z\
+\xbb\x11m\x0d^x\x8e\xd6w+\xef\x06\xbda\x04\x03\
+\x11\x04\xdc!\x18R\xec\x88I\x89\xee\xd0\xd4E\xa1}\
+\x5c%0\x19\xe5\x1fT\xa1\xa5\xd6\xa7\x8a\xe9\xe3\x83u\
+h\x04\xd7\x1d\xaa\xc4\x9f\xa5k\xf0\xfb\xd7\x0d?\x9eq\
+\x95\xa7\xdeG>\xd9\xfc-\x92\x07\xc5 mh\x0c\x02\
+\x92\x00\x97\x97\x81\xaa\x04\x18\x92m\xd0F\x1b\xe1=\xd6\
+\x80\xb6\x86\xae\xf2q\xd3q/\xb46\x03\xe2\xae\xea\x0b\
+\xd5\x89tO\x08`6PX\x8d@\xf5\xfe&T\xed\
+k\x84,\xb5\xd7W#n\xa8\xc2W\xef\xa5\xe0\xb1\xf0\
+\x8d?\xceq\x15\x00T\x1fhBs\x95\x07)\x83b\
+\xd0g@4\xbc\xbe\xf6~O\xd4\xaa`\x1f\x94\xdc\xae\
+W\x1d\xac\xeb8\xc4!\xea\xd5\xb0\xf6K\xe8t\xa4\xc7\
+\xa8oW-=5^|\xb2\xa3\x06\x913t\xf4\x1d\
+k\x07\xe3,\xda\x22\x08\xa8r\xee)\xeb\x1c\xed\xea)\
+{\x06\x08\x14\xdb\x09\x90\xf6}\xfa\xbdacR\xa16\
+\xe9P\xdb\xd8\xb9}\xe1\x0a\x03g\xbc\xd3\xd8J%\x02\
+16\x01,\x10\xc4\xa1\xcfk\xe1i\xec\xfd!:\x0e\
+\xd4sQ\xf8\xe5'E\x97\x1f\xb8\xa0\x11uE\xe6p\
+\x11L6\xc7\x86\x9b\xb0\xe7\xcb\x16\xb8<\xdf]/\x85\
+\xfc\x11|\xb6\xf5\x10\xe2\xd2\xcc\xc8\x18\x99\x88\xc8\x89q\
+\xbb\xa4\xb4\x8f\x99\xc8\x09\x8c(m\xaf\x87\xf4*\x86\xa3\
+\xbb\xabQ{\xa8\xf7\xc7\x19\x0dz\x8a\xd1\xd7\xc6\xc2\xad\
+\xb1\xb5IP\x91O\x8a.\xf0\xd6k\x0bJ\xf3\xef\xbf\
+Y\xb4\x8e\xee\x9b\x00\x97'\x1a\xafnl\xc0\xc62W\
+\xaf~\xdbP\xe1EC\x85\x17\x19#\xe2\x918\xc0\x0e\
+\x7f\x84\xb6O\x8fy{6\xb3\x18\x08j\xcb\x9b\xf0\xf5\
+7M\x90\xa5\xde\xed\x1eB\x80\x9f\x8f6c\xd1\x9c\x14\
+\x18\xa3\x04\xbc\xb7\x9fe\xbc\xf4\xbe\x94\x0d`\xce\xbfe\
+\xb80e\xca\x82\xd8\xb3}\xae3\xa8\x1e[\xf5\x8e\xb2\
+\xf1/\x7fW\xc0\x04\x15\xe6\xcdJ\xc6k\xf9\x031\xa4\
+\x7fT\xaf\x9d8\xba\xa7\x1e\xbbJ\x0e\x22\xd4\xe4\x81U\
+-\xc1\x1e\xa5\x00~?v\x95\x94\xe3\xc8\x97\xf5\x1d \
+\x09\x22\x85F\xd7\xfd,`\xf8 =\xfe\xfcD?,\
+^\x90\x06\x85\x08X\xfb\x0f\x86Wv\xb2\xf7\x94\xb0\xea\
+\xac\xc7\x12\xc7M\xcf\xee{\xde8j\xd2\x1d\x0f\x0cT\
+$\xb2\x88pb\xe4\xe0\xc7\xb9,\x15\x94\xbe\xb5\xaa\xe3\
+\xaf\x15\x99\xd3\xe7]\xc3\x81\x1c\xebe\xe3+Y\xdc\xf5\
+YY\xa3\x85\xb4_\x0e\xa60h\x81\xb7\xdfwcM\
+Q=\xea\x1a#\xe7\x9c\x0cD\x95\x80\xb4\x11q]Z\
+\x18\x00\x88\xb6\x8a\xf8\xf5\x8cxd\xde`GH\x02J\
+\xf70\xbc\xb3W)\x8f4~\xb3\xb1\xf1\xcb\xd7b\x14\
+N\x0b\xca\x9c\xcb\xf6\x9f\x5c\xefp\xe4\xdaB\x94\xcfa\
+\x0c\xfd\x08A\x1d\xe1\xf2\x8b%\xce\xe7\x8e\xfd \xa0&\
+O\xce\xb1DT\xf4^B\x90f\x12\xb4\x8b\xd7\xaf\x7f\
+\xb2a\xe2\xed\x0f\xf6\xe7\xb24\x1f\xa0\x9f\xe99\xdf\x1e\
+$\xec>\x80\xc8V\x8d\xb8t\xdd\xba\xa5\x81)3\x1f\
+\x9c\xa8\xc9\xb8%;~\xe05\x03\xa6]I\xd2~:\
+\x90\xa2-\xc8\xb0nS\x03\xde\xda\xee\x82?\xf0\xfd\x93\
+\x0f\xa1\x04\x89\xfd\xed\x105\x02T\x1a\x01\xa1@\x04\xd5\
+\xfb\xdb\x81\xd2i)\x1c\xe3\xa3q\xf7\xb4xh5\x04\
+\xdf\x1c\xe7X\xff\x11\xf3\x1c\xfe\xe6\x93j\xb9b\xdb\xd2\
+M\xaf?\xf5\xea\xa4I\xf7\x1ae\xad\xe9a\x01\x84B\
+\x91\xd6BP\xdf\xc4\xc1\xae&\x8a\xf0\xa7\x92\x8d\xcb\xbe\
+\xbd\xe9\xce\xfbbUa\xdd\x22\x01\xc4\x0dAY]\xbc\
+~EC\xaf\x80\x1a\xecp\xa8\xd3\x912\x0b`#\x04\
+\x82\xbf\x16o(\xf8\x10\x00~\xe2\xc8\xd5Y\x18\xb9\xac\
+l\xe3\xf2\xdd\x99Y9\x93\x01:\x81P\xe9\xf9\xe2\xc2\
+gw\xdf<\xfd\xfe\x91\x22W\xcd\xa6\x1c\xc7I\xb8u\
+\xa5j\xf8\xaf\xfb\xa9\xd5\xdam\xa3\xaf\x1a\x16?q\x04\
+%}\xe3\x08\xea\x1a#xiC=\xde~\xbf]\xdf\
+\xee\xdd\xb8\xca\x04\x83U\xdb1\xaeR\x14\x0e_s\x00\
+\x9e\x86\x00~>\xda\x8c;\xa7\xc4bP?=\x8e4\
+rl\xfa\x9c){\xf6|\xed\xd5\xb1\xc6\xc9\x87\x8f~\
+\xf2\xb9\xa1\xadu\x16\xe7,\x81I\xaaW\xca6?s\
+d\xc2\xd4\xdc\x0c\x22\xe07\x10\xc8\x8e\xad\x85\xcb\xdf\xbd\
+yZ\xee\x90\xe6\x8a\xc0\xc1\x93Z\xdb\xcd\xb7\xdd?D\
+T\xd4\xb3\x00\xb2w[\xd1\xb2W\xce\xec\x0f;\x015\
+nF\xf6\x15\x22\x13~\xcb\x18\xd9\xa9'\xd5N\xa7\xd3\
+\xa9\x00@\xe6\xad\xf3\xc7q\xca&\x11\x10?\xe7\x5c\xab\
+\x92#y\x9b6\xadr\x8d\x9b\x99m\xa2\xb2\xb0\x10\x5c\
+p\xcb\xb2\xef\x8d\xedo\xad\xae\x9b\xe0\xc8\x99\x03JF\
+1\x905\x833\x97)M\xae\x06\xe7O\x86D\xa7\xce\
+\xbcN\x80Q\x0b\xec\xfa\xc6\x8f\xd5o\xd4c\xdf\xa1\xef\
+N\xf1\xa9Cc!\xa8\x050\x99\xc1\xef\x0e\xa1\xf9\xb8\
+\x17}Su\x98{w\x02\xae\x1cfDD\x02\xde\xda\
+\xc5\xb0\xe3\xcb\x96\xe3\x01n\xb9\xab\xed\x1f\x0b\xea\x18!\
+\xd9\x9c\x93\xdd\xdb\x9c\xf9/\x8d\x9d\x91\x93\xa6b\xe4>\
+\x80\x8a\x11\xce\x9e\xdc\xee\xcco\xc9\xbcm~4g\xca\
+\xc3\x04\x82\x9f16\x94\x10\xf2\xd2\xd6\x0d\xcbKO\xd3\
+\xcf\xef\xa6\x84\x8f!\x84\xac*.\xcc\xdf\xd5\x09\xa8\x89\
+\x8e\xb9}\x00q\x11'Ju B\x9e\xdf\xb9\xb9\xc0\
+\x03\x00\x99\xb7\xe5\x0e\xe1\x0a\xf2@\xf0\x191\x07V\x95\
+\xac^\xdd6ujnFD\x85\xdf\x00\xd0\x81\xa3\x0f\
+\xa7d\xe9\xb6\xc2\xe5\x1fMt\xe4\xfc\x84\x80\xdc\xa3\x00\
+\x9bJ\x9d\xf9o\x8fsd\x0f\x16\x88\xf0\x18\x08\xf9\x22\
+i\xdc3\x95Q\x22\x16\xffb0I\x1f;\x9c\x82\x12\
+\xa0\xec\xbd\x16\xac\xd9P\x8f\xc6f\xa9\xc7q\x95,)\
+\xa8;\xd4\x02\xabI\xc0\xad\xe3\xa2\xe1\x98\x10\x03\xbd\x96\
+\xa2\xec+\x86\xed_\xf3\xa3m\x11\xb6\xb8n\xc7\xc3j\
+p>L&l\xc9\xdb\x85\x05\x15\x93\xa6\xcfs0\xce\
+o\x13\x80\xe7\xb7l\xc8\xdf1\xc9\xf1\xc0@\x85\x0a\x8b\
+\x08\xb8\x97p\xae\x85\x22\x14\x94l\x5c\xf6\xed\xec\xd9\xb3\
+U5n\xfd\xaf\x08\xc1U\x22\xc5\xe2\xcd\x85\xed\xca\xe6\
+\x09\x15\xf7^\x02>\x98\x04\xd9#\xc5\xc5+\x1a\xc8\xc9\
+Y\x9e \x10\xba\xa5p\xf9q\x00\xb8a\xca\xc3v\x9d\
+*2\x0b\xe0\x86\x88D\x9f\xfb\xdb\xa6\xa5\x8d]\xce\x1c\
+L\xbb\x7f\xc8\xf6\x8d\xab\xf6M\xbd}~jD\xe6\x0f\
+r\xa242\xd1Z`\x88\xec\x0b\x04y\x9f\xf9 J\
+\x9c\xa4`\xe9\xf6\xb7\x0a\xea&L\xcf\x19\xa4QG=\
+\xa2\x1f>\xab6.>%w\xc6\xb5T\xbc2\x9d\xc2\
+\xed\x95\xb1\xe5\x1d\x17^,\xac\xefV\xf9\x94%\x05Y\
+\xe3\xa3qoV<\x8cQ\x02\x0e\xd6q\xbc\xf6!\xe3\
+\x87k\xfck\x02\xbb\x96E\x0b\x01\xdf#\x9b6\x15\x1c\
+\x18;#'\x8d*\xc8\x11\x08\x91}\x8d\xbb\x17\x99L\
+W\xeb\x98F\xba\x97\x10\x0cP\xe4\xc8\x92\xd2\xb7VU\
+\x8ew\xe4\x8c(u\x16\xec9\xfb\x88\x8e\xce\xe1`j\
+I#>\xfa\xb7uK\x03'?\xf7\xd3\xb0\xf7\x9fo\
+\xfc\xd9\xdd\x85\xa3\xc6e\xe5\x5c'p\xba\x90P\xf2\xa7\
+\x92\xa2e\xdd\xfe\xd3r\xdc\xb8l\x8dh\x14\xe7\x03$\
+>\xc2y\xdevg~\xcb\xa4\xe993\x19\xe8\x14\x81\
+(\xcfl)\x5c\xf1\xe9\x98\xc99\x16\x83\x9a>\x03\xc2\
+\x9bi\xd0\xfbdq\xf1\xcb\xbe\x19\xf9\xc14\xb5V\x95\
+wy\x1f\xdc}\xe7u\x14q\xe6v\xfeZ\xfab\x0d\
+>\xd9\xdd\xda\xe9\x1e\x83\xfa\xea\x913+\x09C\x07\xe8\
+\xd1\x1a\x04^\xda\xa9\xe0\xcbc\xfc\xcd\x18\x8b\xf8P\xfe\
+LrtT\xe6l}\xbc\xce\x90\x0d\xf0>\x8c\xcby\
+e\xceg\x9bnq\xe4^\xce\x80<F\xe1\xdcV\x94\
+_8~\xea\xfd\xa9\x82\xa8\xcef\x04\x81\xab\x06\x99\x1f\
+\xcb\xcb\xcb\xeb\xb6\xf1\x9b4)\xb7\x1f\xd7\xf0\xa7\x89@\
+\x9e:}\xdbu\x9f\xf58'=\x0f>s\xa6\x82\x93\
+\xe9\x84\xd3g\xb7:\x97\xfd\xb3}\xac5o\x1a\xe7\xfc\
+A\x05\xda\xcc2\xe7SM\xe3\xa7\xde\x9fJ\x05\xf5\xfb\
+\x80r\xc7V\xe7\xca\x7f\x9ey\x8d9/\xf1\x81~I\
+.\xbaa0\x1d>\xf5J\x0a\xa3\x0e\xd8s \x80\xaf\
+\xf7\x07\x00\x02\x0c\xe9\xaf\xc3\xa8\xcb\x8d\x88\xc8@\xc9n\
+\x86w\xf6\xf1c\x01?\xbf\xf7\xb5l\xd5\xce.\xfe\xdc\
+>\x7f\x14\x95\x95\x22\xceC?\xdf\xea|\xa1\xe6F\xc7\
+Cf-\x09\xbfK\x08\x7f\xb1\xa4h\xc5_\x00`\xca\
+\xf4\x05C%\xae<N\x08^-)\xca\xdf\xf2/\xed\
+\xf5\xc6:\xe6\x0c\x14\x89\xf6)\x02\xea,\xd9\xb0l\xfd\
+YC\x98\x93\xc79\xc8\x97\xdb\x8a\x96\x17\xdc\xe8\x98\xdb\
+GK\xe8\xef\xc1P\xedo\xde\xb3x\xe7\xce\x9d]\xfa\
+\x9b\xd9/+sT\x94/\x1c?\x82\xa4\x8d\x1f\xde\xb9\
+\xfe\xfd\xaa\x92\xe3/\x7fW<A\x89>\xf6\xcb\xb4\xa6\
+\x17\xef\xba9>p\xe6x\xcd\x10\xeb]\x00\xf0t\x95\
+\xa4[\xb8i\xd3\x93-\x99\x8e\xdc;\x002Y\xa0\xe2\
+\xc2\xcdE\xcf\x1c\xe9\x02jV\xce\xbd\x00\xb9\x99E\xc4\
+\xdf\x95m\xee\xfa\xfd9\x035qz\xce\xf3`\xdcK\
+\xc3\x9a'\x8b\x8b\x97t{$e\xf2\x8cEi2\x0f\
+\x95\x10\xd0\x87K\x8a\x96o\x05\x80\x89\xd3\xe6\xf6\x87 \
+\xfcU\xe0X\xb2\xc5\x99\xdf\xe5\x9f\x9a\xab\xde\xe3\x86\x0f\
+\xf6\xcb\xf3\x93\xcc\xe4\xd11\x83\x89\xa8\x12\x80\xcf\x8e2\
+^\xd9L\xfe\xaa\x88B\xce\xda_\x11\xcf\xd9&D\x9c\
+\x09\x8fPB\x1f:I\x11\x99\xd3\xe7M\x04\xf8\x1f\x05\
+\xc2\x1d'\x89\xf9l6*s\xb6>!*\xeaa\xae\
+\x10\xc2\xfc\xd2\x13ee\xcf\x86\xcf\x1bP'\x07\x9e\xdd\
+n\xc7\x09s\xac\xd4\xa0\xcf\x01W\xe2|\x11,:\x99\
+9o\xbf}\x8e\xb5U\xd1<\x0a\x0e\x9f\xe2\xcbx\xaa\
+\xacln\xb7N-\xde\xc2\xe3\x0e7*\xd7\x1850\
+E\x10\xdc\xfe\xc2]\xc6\xc6\xee\xd6\xdes\xcf=\xda\xe6\
+\xa0\xed1\xce\xb9A\xa4\xe4\x7fO&\xa2)S\xee\x8b\
+\x8d\xa8u\xbf'\x9c\xb8\xfc*q\xcd\xce\xd7\x97Tw\
+\xcf\xb3+5=\xf9s^e\x961c\xc6\x88\xa6\xd8\
+Q3\x15\xb0_\x10EY\xbc\xf5\xc48~\xd4\xa8\xd9\
+\xaa\x84\x8c\xa8\xdf\x82\xf0\xab\x08\x17\xf3J\x9cK\x8f\xfd\
++t\xae\x89w>\xd4\x07\xe1\xf0\x13`d\xe7\xd67\
+\xf3\xd7\x9e\x94[\xc7\xde\xb1p\xa0\x18\x91\x1e\x22\x9c\xff\
+\xa3\xc4Y\xb0\xf6\x82\xeaQ\xe3fd_!0\xf1\x11\
+\xae\xf0\xd2m\x1b\x0b^\xee\xe8\xffn\xcd\xbd\x89S>\
+\x93\x02\xabOV\xf6\xffj\x9bp\xeb\xdck\x09\x11\x1e\
+\xa6`/\x16;W\x14\x9fJ<\x0f8\x08\xa7\xf7@\
+\x22\xbf\xdb\xbai\xf9W\x17\x06\xa8\x99\x0b\x93=\x11\xc9\
+\xf5\xb13?\x08\x00\xe3\x1c\xd9\x83E*\xce\x03#\xc7\
+J\x9c\xcb\x17\xe3\xdfl\xb3g\xcfV\xd5y\xa3~\xc3\
+\x19\x06\x10H+N6\xba?q\xe4\xeabDf\xea\
+\xae\x8f\xfb\xb7l\xbd\x8e\x1a\xc4\x91;V!d\x8c\x10\
+R\xf2\x8b\x8b\x7f\xb8C\xe7\xc3\xc69\xb2c\x04\xaaZ\
+\xc4\x99\xf2\xfe\xb6\xd3\xa2\xeb\xe2\xb0\xb3\x89\xd5\x17\xd8\xf2\
+\xf2\xf2(.\xd9%\xbbd\x97\xec?\xc0\xfe\x0f\x14\xd5\
+\xea\x92\xe4\xa3Oi\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x012\
+<\
+svg width=\x2248\x22 h\
+eight=\x2248\x22 viewB\
+ox=\x220 0 48 48\x22 f\
+ill=\x22none\x22 xmlns\
+=\x22http://www.w3.\
+org/2000/svg\x22>\x0a<\
+path d=\x22M12.4501\
+ 37.65L10.3501 3\
+5.55L21.9001 24L\
+10.3501 12.45L12\
+.4501 10.35L24.0\
+001 21.9L35.5501\
+ 10.35L37.6501 1\
+2.45L26.1001 24L\
+37.6501 35.55L35\
+.5501 37.65L24.0\
+001 26.1L12.4501\
+ 37.65Z\x22 fill=\x22#\
+667085\x22/>\x0a</svg>\
+\x0a\
+\x00\x00\x04\x83\
+<\
+svg width=\x2248\x22 h\
+eight=\x2248\x22 viewB\
+ox=\x220 0 48 48\x22 f\
+ill=\x22none\x22 xmlns\
+=\x22http://www.w3.\
+org/2000/svg\x22>\x0a<\
+path d=\x22M10.3929\
+ 26.4C9.73097 26\
+.4 9.16667 26.16\
+43 8.7 25.6929C8\
+.23333 25.2215 8\
+ 24.6548 8 23.99\
+29C8 23.3309 8.2\
+357 22.7666 8.70\
+71 22.3C9.17847 \
+21.8333 9.74513 \
+21.6 10.4071 21.\
+6C11.069 21.6 11\
+.6333 21.8357 12\
+.1 22.3071C12.56\
+67 22.7784 12.8 \
+23.3451 12.8 24.\
+0071C12.8 24.669\
+ 12.5643 25.2333\
+ 12.0929 25.7C11\
+.6215 26.1666 11\
+.0549 26.4 10.39\
+29 26.4ZM23.9929\
+ 26.4C23.331 26.\
+4 22.7667 26.164\
+3 22.3 25.6929C2\
+1.8333 25.2215 2\
+1.6 24.6548 21.6\
+ 23.9929C21.6 23\
+.3309 21.8357 22\
+.7666 22.3071 22\
+.3C22.7785 21.83\
+33 23.3451 21.6 \
+24.0071 21.6C24.\
+669 21.6 25.2333\
+ 21.8357 25.7 22\
+.3071C26.1667 22\
+.7784 26.4 23.34\
+51 26.4 24.0071C\
+26.4 24.669 26.1\
+643 25.2333 25.6\
+929 25.7C25.2215\
+ 26.1666 24.6549\
+ 26.4 23.9929 26\
+.4ZM37.5929 26.4\
+C36.931 26.4 36.\
+3667 26.1643 35.\
+9 25.6929C35.433\
+3 25.2215 35.2 2\
+4.6548 35.2 23.9\
+929C35.2 23.3309\
+ 35.4357 22.7666\
+ 35.9071 22.3C36\
+.3785 21.8333 36\
+.9451 21.6 37.60\
+71 21.6C38.269 2\
+1.6 38.8333 21.8\
+357 39.3 22.3071\
+C39.7667 22.7784\
+ 40 23.3451 40 2\
+4.0071C40 24.669\
+ 39.7643 25.2333\
+ 39.2929 25.7C38\
+.8215 26.1666 38\
+.2549 26.4 37.59\
+29 26.4Z\x22 fill=\x22\
+#667085\x22/>\x0a</svg\
+>\x0a\
+\x00\x00\x037\
+<\
+svg width=\x2224\x22 h\
+eight=\x2224\x22 viewB\
+ox=\x220 0 24 24\x22 f\
+ill=\x22none\x22 xmlns\
+=\x22http://www.w3.\
+org/2000/svg\x22>\x0a<\
+path d=\x22M0 12C0 \
+5.37258 5.37258 \
+0 12 0C18.6274 0\
+ 24 5.37258 24 1\
+2C24 18.6274 18.\
+6274 24 12 24C5.\
+37258 24 0 18.62\
+74 0 12Z\x22 fill=\x22\
+#E6E6E6\x22/>\x0a<path\
+ d=\x22M15.5 12C16.\
+3284 12 17 12.67\
+16 17 13.5V14C17\
+ 15.9714 15.1405\
+ 18 12 18C8.8595\
+1 18 7 15.9714 7\
+ 14V13.5C7 12.67\
+16 7.67157 12 8.\
+5 12H15.5ZM15.5 \
+13H8.5C8.22386 1\
+3 8 13.2239 8 13\
+.5V14C8 15.4376 \
+9.43216 17 12 17\
+C14.5678 17 16 1\
+5.4376 16 14V13.\
+5C16 13.2239 15.\
+7761 13 15.5 13Z\
+M12 5.5C13.5188 \
+5.5 14.75 6.7312\
+2 14.75 8.25C14.\
+75 9.76878 13.51\
+88 11 12 11C10.4\
+812 11 9.25 9.76\
+878 9.25 8.25C9.\
+25 6.73122 10.48\
+12 5.5 12 5.5ZM1\
+2 6.5C11.0335 6.\
+5 10.25 7.2835 1\
+0.25 8.25C10.25 \
+9.2165 11.0335 1\
+0 12 10C12.9665 \
+10 13.75 9.2165 \
+13.75 8.25C13.75\
+ 7.2835 12.9665 \
+6.5 12 6.5Z\x22 fil\
+l=\x22#616161\x22/>\x0a</\
+svg>\x0a\x0a\
+\x00\x00\x00\xdf\
+<\
+svg width=\x2248\x22 h\
+eight=\x2248\x22 viewB\
+ox=\x220 0 48 48\x22 f\
+ill=\x22none\x22 xmlns\
+=\x22http://www.w3.\
+org/2000/svg\x22>\x0a<\
+path d=\x22M18.9002\
+ 35.7L7.7002 24.\
+5L9.8502 22.35L1\
+8.9002 31.4L38.1\
+002 12.2L40.2502\
+ 14.35L18.9002 3\
+5.7Z\x22 fill=\x22#667\
+085\x22/>\x0a</svg>\x0a\
+\x00\x00\x01V\
+<\
+svg width=\x2248\x22 h\
+eight=\x2248\x22 viewB\
+ox=\x220 0 48 48\x22 f\
+ill=\x22none\x22 xmlns\
+=\x22http://www.w3.\
+org/2000/svg\x22>\x0a<\
+path d=\x22M9 42C8.\
+2 42 7.5 41.7 6.\
+9 41.1C6.3 40.5 \
+6 39.8 6 39V9C6 \
+8.2 6.3 7.5 6.9 \
+6.9C7.5 6.3 8.2 \
+6 9 6H23.55V9H9V\
+39H23.55V42H9ZM3\
+3.3 32.75L31.15 \
+30.6L36.25 25.5H\
+18.75V22.5H36.15\
+L31.05 17.4L33.2\
+ 15.25L42 24.05L\
+33.3 32.75Z\x22 fil\
+l=\x22#667085\x22/>\x0a</\
+svg>\x0a\
+\x00\x00\x01f\
+<\
+svg width=\x2248\x22 h\
+eight=\x2248\x22 viewB\
+ox=\x220 0 48 48\x22 f\
+ill=\x22none\x22 xmlns\
+=\x22http://www.w3.\
+org/2000/svg\x22>\x0a<\
+path d=\x22M24.45 4\
+2V39H39V9H24.45V\
+6H39C39.8 6 40.5\
+ 6.3 41.1 6.9C41\
+.7 7.5 42 8.2 42\
+ 9V39C42 39.8 41\
+.7 40.5 41.1 41.\
+1C40.5 41.7 39.8\
+ 42 39 42H24.45Z\
+M20.55 32.75L18.\
+4 30.6L23.5 25.5\
+H6V22.5H23.4L18.\
+3 17.4L20.45 15.\
+25L29.25 24.05L2\
+0.55 32.75Z\x22 fil\
+l=\x22#667085\x22/>\x0a</\
+svg>\x0a\
+"
+
+qt_resource_name = b"\
+\x00\x02\
+\x00\x00\x07\x84\
+\x00q\
+\x00t\
+\x00\x03\
+\x00\x00x<\
+\x00q\
+\x00m\x00l\
+\x00\x0c\
+\x0fN\xa7E\
+\x00C\
+\x00o\x00l\x00o\x00r\x00P\x00a\x00l\x00e\x00t\x00t\x00e\
+\x00\x05\
+\x00o\xa6S\
+\x00i\
+\x00c\x00o\x00n\x00s\
+\x00\x08\
+\x03\xc6T'\
+\x00p\
+\x00l\x00u\x00s\x00.\x00s\x00v\x00g\
+\x00\x0c\
+\x07\x11\xd4\xa7\
+\x00u\
+\x00s\x00e\x00r\x00M\x00a\x00s\x00k\x00.\x00s\x00v\x00g\
+\x00\x06\
+\x07\x87WG\
+\x00q\
+\x00t\x00.\x00p\x00n\x00g\
+\x00\x0a\
+\x08\xab\xd7\x87\
+\x00u\
+\x00p\x00d\x00a\x00t\x00e\x00.\x00s\x00v\x00g\
+\x00\x0a\
+\x0c\xad\x02\x87\
+\x00d\
+\x00e\x00l\x00e\x00t\x00e\x00.\x00s\x00v\x00g\
+\x00\x08\
+\x0b\x07W\xa7\
+\x00e\
+\x00d\x00i\x00t\x00.\x00s\x00v\x00g\
+\x00\x0e\
+\x05\x92p\xc7\
+\x00t\
+\x00e\x00s\x00t\x00s\x00e\x00r\x00v\x00e\x00r\x00.\x00p\x00n\x00g\
+\x00\x09\
+\x06\x98\x8e\xa7\
+\x00c\
+\x00l\x00o\x00s\x00e\x00.\x00s\x00v\x00g\
+\x00\x08\
+\x06\xb6W\xa7\
+\x00d\
+\x00o\x00t\x00s\x00.\x00s\x00v\x00g\
+\x00\x08\
+\x09\xc5UG\
+\x00u\
+\x00s\x00e\x00r\x00.\x00s\x00v\x00g\
+\x00\x06\
+\x07^Z\xc7\
+\x00o\
+\x00k\x00.\x00s\x00v\x00g\
+\x00\x0a\
+\x06\xc91\x07\
+\x00l\
+\x00o\x00g\x00o\x00u\x00t\x00.\x00s\x00v\x00g\
+\x00\x09\
+\x0e\x01\xbcg\
+\x00l\
+\x00o\x00g\x00i\x00n\x00.\x00s\x00v\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x0a\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x16\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x004\x00\x02\x00\x00\x00\x0d\x00\x00\x00\x05\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00D\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x13\x96\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00.-\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x00/c\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x01L\x00\x00\x00\x00\x00\x01\x00\x008\x08\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x00Z\x00\x00\x00\x00\x00\x01\x00\x00\x00\xc4\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x01:\x00\x00\x00\x00\x00\x01\x00\x007%\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x00x\x00\x00\x00\x00\x00\x01\x00\x00\x01\x5c\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xf3\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x01$\x00\x00\x00\x00\x00\x01\x00\x003\xea\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x11\x9b\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xe4\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+\x00\x00\x01f\x00\x00\x00\x00\x00\x01\x00\x009b\
+\x00\x00\x01\x8d\x87\xa2.\x0a\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/demos/colorpaletteclient/restservice.py b/examples/demos/colorpaletteclient/restservice.py
new file mode 100644
index 000000000..d334ecd03
--- /dev/null
+++ b/examples/demos/colorpaletteclient/restservice.py
@@ -0,0 +1,53 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Property, Signal, ClassInfo
+from PySide6.QtNetwork import (QNetworkAccessManager, QRestAccessManager,
+ QNetworkRequestFactory, QSslSocket)
+from PySide6.QtQml import QmlElement, QPyQmlParserStatus, ListProperty
+from abstractresource import AbstractResource
+
+QML_IMPORT_NAME = "ColorPalette"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+@ClassInfo(DefaultProperty="resources")
+class RestService(QPyQmlParserStatus):
+
+ urlChanged = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_resources = []
+ self.m_qnam = QNetworkAccessManager()
+ self.m_qnam.setAutoDeleteReplies(True)
+ self.m_manager = QRestAccessManager(self.m_qnam)
+ self.m_serviceApi = QNetworkRequestFactory()
+
+ @Property(str, notify=urlChanged)
+ def url(self):
+ return self.m_serviceApi.baseUrl()
+
+ @url.setter
+ def url(self, url):
+ if self.m_serviceApi.baseUrl() != url:
+ self.m_serviceApi.setBaseUrl(url)
+ self.urlChanged.emit()
+
+ @Property(bool, constant=True)
+ def sslSupported(self):
+ return QSslSocket.supportsSsl()
+
+ def classBegin(self):
+ pass
+
+ def componentComplete(self):
+ for resource in self.m_resources:
+ resource.setAccessManager(self.m_manager)
+ resource.setServiceApi(self.m_serviceApi)
+
+ def appendResource(self, r):
+ self.m_resources.append(r)
+
+ resources = ListProperty(AbstractResource, appendResource)
diff --git a/examples/demos/documentviewer/abstractviewer.py b/examples/demos/documentviewer/abstractviewer.py
new file mode 100644
index 000000000..4039fe9fb
--- /dev/null
+++ b/examples/demos/documentviewer/abstractviewer.py
@@ -0,0 +1,185 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject
+
+from PySide6.QtWidgets import (QDialog, QMenu)
+from PySide6.QtCore import Signal, Slot
+from PySide6.QtPrintSupport import QPrinter, QPrintDialog
+
+
+MENU_NAME = "qtFileMenu"
+
+
+class AbstractViewer(QObject):
+
+ uiInitialized = Signal()
+ printingEnabledChanged = Signal(bool)
+ showMessage = Signal(str, int)
+ documentLoaded = Signal(str)
+
+ def __init__(self):
+ super().__init__()
+ self._file = None
+ self._widget = None
+ self._menus = []
+ self._toolBars = []
+ self._printingEnabled = False
+ self._actions = []
+ self._fileMenu = None
+
+ def __del__(self):
+ self.cleanup()
+
+ def viewerName(self):
+ return ""
+
+ def saveState(self):
+ return False
+
+ def restoreState(self, state):
+ return False
+
+ def supportedMimeTypes():
+ return []
+
+ def init(self, file, widget, mainWindow):
+ self._file = file
+ self._widget = widget
+ self._uiAssets_mainWindow = mainWindow
+
+ def isEmpty(self):
+ return not self.hasContent()
+
+ def isPrintingEnabled(self):
+ return self._printingEnabled
+
+ def hasContent(self):
+ return False
+
+ def supportsOverview(self):
+ return False
+
+ def isModified(self):
+ return False
+
+ def saveDocument(self):
+ return False
+
+ def saveDocumentAs(self):
+ return False
+
+ def actions(self):
+ return self._actions
+
+ def widget(self):
+ return self._widget
+
+ def menus(self):
+ return self._menus
+
+ def mainWindow(self):
+ return self._uiAssets_mainWindow
+
+ def statusBar(self):
+ return self.mainWindow().statusBar()
+
+ def menuBar(self):
+ return self.mainWindow().menuBar()
+
+ def maybeEnablePrinting(self):
+ self.maybeSetPrintingEnabled(True)
+
+ def disablePrinting(self):
+ self.maybeSetPrintingEnabled(False)
+
+ def isDefaultViewer(self):
+ return False
+
+ def viewer(self):
+ return self
+
+ def statusMessage(self, message, type="", timeout=8000):
+ msg = self.viewerName()
+ if type:
+ msg += "/" + type
+ msg += ": " + message
+ self.showMessage.emit(msg, timeout)
+
+ def addToolBar(self, title):
+ bar = self.mainWindow().addToolBar(title)
+ name = title.replace(' ', '')
+ bar.setObjectName(name)
+ self._toolBars.append(bar)
+ return bar
+
+ def addMenu(self, title):
+ menu = QMenu(title, self.menuBar())
+ menu.setObjectName(title)
+ self.menuBar().insertMenu(self._uiAssets_help, menu)
+ self._menus.append(menu)
+ return menu
+
+ def cleanup(self):
+ # delete all objects created by the viewer which need to be displayed
+ # and therefore parented on MainWindow
+ if self._file:
+ self._file = None
+ self._menus.clear()
+ self._toolBars.clear()
+
+ def fileMenu(self):
+ if self._fileMenu:
+ return self._fileMenu
+
+ menus = self.mainWindow().findChildren(QMenu)
+ for menu in menus:
+ if menu.objectName() == MENU_NAME:
+ self._fileMenu = menu
+ return self._fileMenu
+ self._fileMenu = self.addMenu("File")
+ self._fileMenu.setObjectName(MENU_NAME)
+ return self._fileMenu
+
+ @Slot()
+ def print_(self):
+ type = "Printing"
+ if not self.hasContent():
+ self.statusMessage("No content to print.", type)
+ return
+ printer = QPrinter(QPrinter.HighResolution)
+ dlg = QPrintDialog(printer, self.mainWindow())
+ dlg.setWindowTitle("Print Document")
+ if dlg.exec() == QDialog.Accepted:
+ self.printDocument(printer)
+ else:
+ self.statusMessage("Printing canceled!", type)
+ return
+ state = printer.printerState()
+ message = self.viewerName() + " :"
+ if state == QPrinter.PrinterState.Aborted:
+ message += "Printing aborted."
+ elif state == QPrinter.PrinterState.Active:
+ message += "Printing active."
+ elif state == QPrinter.PrinterState.Idle:
+ message += "Printing completed."
+ elif state == QPrinter.PrinterState.Error:
+ message += "Printing error."
+ self.statusMessage(message, type)
+
+ def maybeSetPrintingEnabled(self, enabled):
+ if enabled == self._printingEnabled:
+ return
+ self._printingEnabled = enabled
+ self.printingEnabledChanged.emit(enabled)
+
+ def initViewer(self, back, forward, help, tabs):
+ self._uiAssets_back = back
+ self._uiAssets_forward = forward
+ self._uiAssets_help = help
+ self._uiAssets_tabs = tabs
+ # Tabs can be populated individually by the viewer, if it
+ # supports overview
+ tabs.clear()
+ tabs.setVisible(self.supportsOverview())
+ self.uiInitialized.emit()
diff --git a/examples/demos/documentviewer/doc/abstractviewer.py.rstinc b/examples/demos/documentviewer/doc/abstractviewer.py.rstinc
new file mode 100644
index 000000000..4c040b956
--- /dev/null
+++ b/examples/demos/documentviewer/doc/abstractviewer.py.rstinc
@@ -0,0 +1,25 @@
+``AbstractViewer`` provides a generalized API to view, save, and print a
+document. Properties of both the document and the viewer can be queried:
+
+ * Does the document have content?
+ * Has it been modified?
+ * Is an overview (thumbnails or bookmarks) supported?
+
+``AbstractViewer`` provides protected methods for derived classes to create
+actions and menus on the main window. In order to display these assets on the
+main window, they are parented to it. ``AbstractViewer`` is responsible for
+removing and destroying the UI assets it creates. It inherits from ``QObject``
+to implement signals and slots.
+
+The ``uiInitialized()`` signal is emitted after a viewer receives all necessary
+information about UI assets on the main window.
+
+The ``printingEnabledChanged()`` signal is emitted when document printing is
+either enabled or disabled. This happens after a new document was successfully
+loaded, or, for example, all content was removed.
+
+The ``printStatusChanged`` signal notifies about changes in its progress after
+starting the printing process.
+
+The ``documentLoaded()`` signal notifies the application that a document was
+successfully loaded.
diff --git a/examples/demos/documentviewer/doc/documentviewer.png b/examples/demos/documentviewer/doc/documentviewer.png
new file mode 100644
index 000000000..750aca589
--- /dev/null
+++ b/examples/demos/documentviewer/doc/documentviewer.png
Binary files differ
diff --git a/examples/demos/documentviewer/doc/documentviewer.rst b/examples/demos/documentviewer/doc/documentviewer.rst
new file mode 100644
index 000000000..b21e3f43e
--- /dev/null
+++ b/examples/demos/documentviewer/doc/documentviewer.rst
@@ -0,0 +1,13 @@
+Document Viewer Example
+=======================
+
+A Widgets application to display and print JSON, text, and PDF files.
+
+Document Viewer demonstrates how to use a QMainWindow with static
+and dynamic toolbars, menus, and actions.
+
+
+.. image:: documentviewer.png
+ :width: 90%
+ :align: center
+ :alt: Document Viewer Example
diff --git a/examples/demos/documentviewer/doc/jsonviewer.py.rstinc b/examples/demos/documentviewer/doc/jsonviewer.py.rstinc
new file mode 100644
index 000000000..1ba92f247
--- /dev/null
+++ b/examples/demos/documentviewer/doc/jsonviewer.py.rstinc
@@ -0,0 +1,11 @@
+``JsonViewer`` displays a JSON file in a ``QTreeView``. Internally, it loads
+the contents of a file into a data structure via a string and uses it to
+populate a custom tree model with JsonItemModel.
+
+The JSON viewer demonstrates how to implement a custom item model
+inherited from ``QAbstractItemModel``.
+
+``JsonViewer`` uses the top-level objects of the document as bookmarks for
+navigation. Other nodes (keys and values) can be added as additional bookmarks,
+or removed from the bookmark list. A ``QLineEdit`` is used as a search field to
+navigate through the JSON tree.
diff --git a/examples/demos/documentviewer/doc/mainwindow.py.rstinc b/examples/demos/documentviewer/doc/mainwindow.py.rstinc
new file mode 100644
index 000000000..976443ceb
--- /dev/null
+++ b/examples/demos/documentviewer/doc/mainwindow.py.rstinc
@@ -0,0 +1,11 @@
+The ``MainWindow`` class provides an application screen with menus, actions,
+and a toolbar. It can open a file, automatically detecting its content type. It
+also maintains a list of previously opened files, using ``QSettings`` to store
+and reload settings when launched. The ``MainWindow`` creates a suitable viewer
+for the opened file, based on its content type, and provides support for
+printing a document.
+
+``MainWindow's`` constructor initializes the user interface created in Qt
+Designer. The ``mainwindow.ui`` file provides a ``QTabWidget`` on the left,
+showing bookmarks and thumbnails. On the right, there is a ``QScrollArea`` for
+viewing file content.
diff --git a/examples/demos/documentviewer/doc/viewerfactory.py.rstinc b/examples/demos/documentviewer/doc/viewerfactory.py.rstinc
new file mode 100644
index 000000000..1627a576b
--- /dev/null
+++ b/examples/demos/documentviewer/doc/viewerfactory.py.rstinc
@@ -0,0 +1,3 @@
+The ``ViewerFactory`` class manages viewers for known file types. It loads all
+available viewers on construction and provides a public API to query the loaded
+plugins, their names, and supported MIME types.
diff --git a/examples/demos/documentviewer/documentviewer.pyproject b/examples/demos/documentviewer/documentviewer.pyproject
new file mode 100644
index 000000000..461e3b9d7
--- /dev/null
+++ b/examples/demos/documentviewer/documentviewer.pyproject
@@ -0,0 +1,14 @@
+{
+ "files": ["abstractviewer.py",
+ "documentviewer.qrc",
+ "main.py",
+ "mainwindow.py",
+ "mainwindow.ui",
+ "jsonviewer/jsonviewer.py",
+ "pdfviewer/pdfviewer.py",
+ "pdfviewer/zoomselector.py",
+ "txtviewer/txtviewer.py",
+ "recentfilemenu.py",
+ "recentfiles.py",
+ "viewerfactory.py"]
+}
diff --git a/examples/demos/documentviewer/documentviewer.qrc b/examples/demos/documentviewer/documentviewer.qrc
new file mode 100644
index 000000000..0aeeac229
--- /dev/null
+++ b/examples/demos/documentviewer/documentviewer.qrc
@@ -0,0 +1,42 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="demos/documentviewer">
+ <file>images/copy@2x.png</file>
+ <file>images/copy.png</file>
+ <file>images/cut@2x.png</file>
+ <file>images/cut.png</file>
+ <file>images/go-next-view@2x.png</file>
+ <file>images/go-next-view-page@2x.png</file>
+ <file>images/go-next-view-page.png</file>
+ <file>images/go-next-view.png</file>
+ <file>images/go-previous-view@2x.png</file>
+ <file>images/go-previous-view-page@2x.png</file>
+ <file>images/go-previous-view-page.png</file>
+ <file>images/go-previous-view.png</file>
+ <file>images/magnifier@2x.png</file>
+ <file>images/magnifier.png</file>
+ <file>images/open@2x.png</file>
+ <file>images/open.png</file>
+ <file>images/paste@2x.png</file>
+ <file>images/paste.png</file>
+ <file>images/print2x.png</file>
+ <file>images/print.png</file>
+ <file>images/qt-logo@2x.png</file>
+ <file>images/qt-logo.png</file>
+ <file>images/zoom-fit-best@2x.png</file>
+ <file>images/zoom-fit-best.png</file>
+ <file>images/zoom-fit-width@2x.png</file>
+ <file>images/zoom-fit-width.png</file>
+ <file>images/zoom-in@2x.png</file>
+ <file>images/zoom-in.png</file>
+ <file>images/zoom-original@2x.png</file>
+ <file>images/zoom-original.png</file>
+ <file>images/zoom-out@2x.png</file>
+ <file>images/zoom-out.png</file>
+ <file>images/zoom-previous@2x.png</file>
+ <file>images/zoom-previous.png</file>
+ <file>images/document-open-recent.svgz</file>
+ <file>images/go-next.svgz</file>
+ <file>images/go-previous.svgz</file>
+ <file>images/help-about.svgz</file>
+</qresource>
+</RCC>
diff --git a/examples/widgets/mainwindows/mdi/images/copy.png b/examples/demos/documentviewer/images/copy.png
index 2aeb28288..2aeb28288 100644
--- a/examples/widgets/mainwindows/mdi/images/copy.png
+++ b/examples/demos/documentviewer/images/copy.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/copy@2x.png b/examples/demos/documentviewer/images/copy@2x.png
new file mode 100644
index 000000000..f4ebabba1
--- /dev/null
+++ b/examples/demos/documentviewer/images/copy@2x.png
Binary files differ
diff --git a/examples/widgets/mainwindows/mdi/images/cut.png b/examples/demos/documentviewer/images/cut.png
index 54638e938..54638e938 100644
--- a/examples/widgets/mainwindows/mdi/images/cut.png
+++ b/examples/demos/documentviewer/images/cut.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/cut@2x.png b/examples/demos/documentviewer/images/cut@2x.png
new file mode 100644
index 000000000..5a5da4fd3
--- /dev/null
+++ b/examples/demos/documentviewer/images/cut@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/document-open-recent.svgz b/examples/demos/documentviewer/images/document-open-recent.svgz
new file mode 100644
index 000000000..3b6eaf978
--- /dev/null
+++ b/examples/demos/documentviewer/images/document-open-recent.svgz
Binary files differ
diff --git a/examples/demos/documentviewer/images/go-next-view-page.png b/examples/demos/documentviewer/images/go-next-view-page.png
new file mode 100644
index 000000000..bd2a33836
--- /dev/null
+++ b/examples/demos/documentviewer/images/go-next-view-page.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/go-next-view-page@2x.png b/examples/demos/documentviewer/images/go-next-view-page@2x.png
new file mode 100644
index 000000000..5ddcbbcc9
--- /dev/null
+++ b/examples/demos/documentviewer/images/go-next-view-page@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/go-next-view.png b/examples/demos/documentviewer/images/go-next-view.png
new file mode 100644
index 000000000..98b79dea3
--- /dev/null
+++ b/examples/demos/documentviewer/images/go-next-view.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/go-next-view@2x.png b/examples/demos/documentviewer/images/go-next-view@2x.png
new file mode 100644
index 000000000..919406437
--- /dev/null
+++ b/examples/demos/documentviewer/images/go-next-view@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/go-next.svgz b/examples/demos/documentviewer/images/go-next.svgz
new file mode 100644
index 000000000..c6dc7d0f4
--- /dev/null
+++ b/examples/demos/documentviewer/images/go-next.svgz
Binary files differ
diff --git a/examples/demos/documentviewer/images/go-previous-view-page.png b/examples/demos/documentviewer/images/go-previous-view-page.png
new file mode 100644
index 000000000..ecd3768ef
--- /dev/null
+++ b/examples/demos/documentviewer/images/go-previous-view-page.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/go-previous-view-page@2x.png b/examples/demos/documentviewer/images/go-previous-view-page@2x.png
new file mode 100644
index 000000000..f0d91c9f1
--- /dev/null
+++ b/examples/demos/documentviewer/images/go-previous-view-page@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/go-previous-view.png b/examples/demos/documentviewer/images/go-previous-view.png
new file mode 100644
index 000000000..086bd9a1c
--- /dev/null
+++ b/examples/demos/documentviewer/images/go-previous-view.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/go-previous-view@2x.png b/examples/demos/documentviewer/images/go-previous-view@2x.png
new file mode 100644
index 000000000..900860ce0
--- /dev/null
+++ b/examples/demos/documentviewer/images/go-previous-view@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/go-previous.svgz b/examples/demos/documentviewer/images/go-previous.svgz
new file mode 100644
index 000000000..971b1d989
--- /dev/null
+++ b/examples/demos/documentviewer/images/go-previous.svgz
Binary files differ
diff --git a/examples/demos/documentviewer/images/help-about.svgz b/examples/demos/documentviewer/images/help-about.svgz
new file mode 100644
index 000000000..001aa7f2f
--- /dev/null
+++ b/examples/demos/documentviewer/images/help-about.svgz
Binary files differ
diff --git a/examples/demos/documentviewer/images/magnifier.png b/examples/demos/documentviewer/images/magnifier.png
new file mode 100644
index 000000000..6eb457d90
--- /dev/null
+++ b/examples/demos/documentviewer/images/magnifier.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/magnifier@2x.png b/examples/demos/documentviewer/images/magnifier@2x.png
new file mode 100644
index 000000000..ed84af187
--- /dev/null
+++ b/examples/demos/documentviewer/images/magnifier@2x.png
Binary files differ
diff --git a/examples/widgets/mainwindows/mdi/images/open.png b/examples/demos/documentviewer/images/open.png
index 45fa2883a..45fa2883a 100644
--- a/examples/widgets/mainwindows/mdi/images/open.png
+++ b/examples/demos/documentviewer/images/open.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/open@2x.png b/examples/demos/documentviewer/images/open@2x.png
new file mode 100644
index 000000000..12c2c3c1d
--- /dev/null
+++ b/examples/demos/documentviewer/images/open@2x.png
Binary files differ
diff --git a/examples/widgets/mainwindows/mdi/images/paste.png b/examples/demos/documentviewer/images/paste.png
index c14425cad..c14425cad 100644
--- a/examples/widgets/mainwindows/mdi/images/paste.png
+++ b/examples/demos/documentviewer/images/paste.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/paste@2x.png b/examples/demos/documentviewer/images/paste@2x.png
new file mode 100644
index 000000000..360b0f6c7
--- /dev/null
+++ b/examples/demos/documentviewer/images/paste@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/print.png b/examples/demos/documentviewer/images/print.png
new file mode 100644
index 000000000..4ace26140
--- /dev/null
+++ b/examples/demos/documentviewer/images/print.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/print2x.png b/examples/demos/documentviewer/images/print2x.png
new file mode 100644
index 000000000..1c3655be6
--- /dev/null
+++ b/examples/demos/documentviewer/images/print2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/qt-logo.png b/examples/demos/documentviewer/images/qt-logo.png
new file mode 100644
index 000000000..c9171422c
--- /dev/null
+++ b/examples/demos/documentviewer/images/qt-logo.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/qt-logo@2x.png b/examples/demos/documentviewer/images/qt-logo@2x.png
new file mode 100644
index 000000000..95d1d09b1
--- /dev/null
+++ b/examples/demos/documentviewer/images/qt-logo@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-fit-best.png b/examples/demos/documentviewer/images/zoom-fit-best.png
new file mode 100644
index 000000000..6a13de4c1
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-fit-best.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-fit-best@2x.png b/examples/demos/documentviewer/images/zoom-fit-best@2x.png
new file mode 100644
index 000000000..904b41c88
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-fit-best@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-fit-width.png b/examples/demos/documentviewer/images/zoom-fit-width.png
new file mode 100644
index 000000000..d51fbac69
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-fit-width.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-fit-width@2x.png b/examples/demos/documentviewer/images/zoom-fit-width@2x.png
new file mode 100644
index 000000000..4d1fd0b4d
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-fit-width@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-in.png b/examples/demos/documentviewer/images/zoom-in.png
new file mode 100644
index 000000000..5ae1046c0
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-in.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-in@2x.png b/examples/demos/documentviewer/images/zoom-in@2x.png
new file mode 100644
index 000000000..863ef4aca
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-in@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-original.png b/examples/demos/documentviewer/images/zoom-original.png
new file mode 100644
index 000000000..8aa9bb49c
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-original.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-original@2x.png b/examples/demos/documentviewer/images/zoom-original@2x.png
new file mode 100644
index 000000000..d5473007c
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-original@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-out.png b/examples/demos/documentviewer/images/zoom-out.png
new file mode 100644
index 000000000..081b6d981
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-out.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-out@2x.png b/examples/demos/documentviewer/images/zoom-out@2x.png
new file mode 100644
index 000000000..34c8e1748
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-out@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-previous.png b/examples/demos/documentviewer/images/zoom-previous.png
new file mode 100644
index 000000000..0ff5c0416
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-previous.png
Binary files differ
diff --git a/examples/demos/documentviewer/images/zoom-previous@2x.png b/examples/demos/documentviewer/images/zoom-previous@2x.png
new file mode 100644
index 000000000..e9909abc5
--- /dev/null
+++ b/examples/demos/documentviewer/images/zoom-previous@2x.png
Binary files differ
diff --git a/examples/demos/documentviewer/jsonviewer/jsonviewer.py b/examples/demos/documentviewer/jsonviewer/jsonviewer.py
new file mode 100644
index 000000000..1e5a34ca0
--- /dev/null
+++ b/examples/demos/documentviewer/jsonviewer/jsonviewer.py
@@ -0,0 +1,396 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import json
+
+from PySide6.QtWidgets import (QLabel, QLineEdit, QListWidget,
+ QListWidgetItem, QMenu, QTreeView)
+from PySide6.QtGui import (QAction, QIcon, QKeySequence,
+ QPixmap, QTextDocument)
+from PySide6.QtCore import (QAbstractItemModel, QDir,
+ QIODevice, QModelIndex,
+ QPoint, QSize, Qt, Slot)
+
+from abstractviewer import AbstractViewer
+
+
+def resizeToContents(tree):
+ for i in range(0, tree.header().count()):
+ tree.resizeColumnToContents(i)
+
+
+class JsonTreeItem:
+
+ def __init__(self, parent=None):
+ self._key = ""
+ self._value = None
+ self._children = []
+ self._parent = parent
+
+ def key(self):
+ return self._key
+
+ def value(self):
+ return self._value
+
+ def appendChild(self, item):
+ self._children.append(item)
+
+ def child(self, row):
+ return self._children[row]
+
+ def parent(self):
+ return self._parent
+
+ def childCount(self):
+ return len(self._children)
+
+ def row(self):
+ if self._parent:
+ return self._parent._children.index(self)
+ return 0
+
+ def setKey(self, key):
+ self._key = key
+
+ def setValue(self, value):
+ self._value = value
+
+ @staticmethod
+ def load(value, parent=None):
+ rootItem = JsonTreeItem(parent)
+ rootItem.setKey("root")
+
+ if isinstance(value, dict):
+ for key, val in value.items():
+ child = JsonTreeItem.load(val, rootItem)
+ child.setKey(key)
+ rootItem.appendChild(child)
+
+ elif isinstance(value, list):
+ for index, val in enumerate(value):
+ child = JsonTreeItem.load(val, rootItem)
+ child.setKey(f"{index}")
+ rootItem.appendChild(child)
+
+ else:
+ rootItem.setValue(value)
+
+ return rootItem
+
+
+class JsonItemModel(QAbstractItemModel):
+
+ def columnCount(self, index=QModelIndex()):
+ return 2
+
+ def itemFromIndex(self, index):
+ return index.internalPointer()
+
+ def __init__(self, doc, parent):
+ super().__init__(parent)
+ self._textItem = JsonTreeItem()
+
+ # Append header lines
+ self._headers = ["Key", "Value"]
+
+ # Reset the model. Root can either be a value or an array.
+ self.beginResetModel()
+ self._textItem = JsonTreeItem.load(doc) if doc else JsonTreeItem()
+ self.endResetModel()
+
+ def data(self, index, role):
+ if not index.isValid():
+ return None
+
+ item = self.itemFromIndex(index)
+ if role == Qt.DisplayRole:
+ if index.column() == 0:
+ return item.key()
+ if index.column() == 1:
+ return item.value()
+ elif role == Qt.EditRole:
+ if index.column() == 1:
+ return item.value()
+ return None
+
+ def headerData(self, section, orientation, role):
+ return (self._headers[section]
+ if role == Qt.DisplayRole and orientation == Qt.Horizontal else None)
+
+ def index(self, row, column, parent=QModelIndex()):
+ if not self.hasIndex(row, column, parent):
+ return None
+
+ parentItem = JsonTreeItem()
+
+ if not parent.isValid():
+ parentItem = self._textItem
+ else:
+ parentItem = self.itemFromIndex(parent)
+
+ childItem = parentItem.child(row)
+ if childItem:
+ return self.createIndex(row, column, childItem)
+ return None
+
+ def parent(self, index):
+ if not index.isValid():
+ return None
+
+ childItem = self.itemFromIndex(index)
+ parentItem = childItem.parent()
+
+ if parentItem == self._textItem:
+ return QModelIndex()
+
+ return self.createIndex(parentItem.row(), 0, parentItem)
+
+ def rowCount(self, parent=QModelIndex()):
+ parentItem = JsonTreeItem()
+ if parent.column() > 0:
+ return 0
+
+ if not parent.isValid():
+ parentItem = self._textItem
+ else:
+ parentItem = self.itemFromIndex(parent)
+ return parentItem.childCount()
+
+
+class JsonViewer(AbstractViewer):
+
+ def __init__(self):
+ super().__init__()
+ self._tree = QTreeView()
+ self._toplevel = None
+ self._text = ""
+ self._searchKey = None
+ self.uiInitialized.connect(self.setupJsonUi)
+
+ def init(self, file, parent, mainWindow):
+ self._tree = QTreeView(parent)
+ super().init(file, self._tree, mainWindow)
+
+ def viewerName(self):
+ return "JsonViewer"
+
+ def supportedMimeTypes(self):
+ return ["application/json"]
+
+ @Slot()
+ def setupJsonUi(self):
+ # Build Menus and toolbars
+ menu = self.addMenu("Json")
+ tb = self.addToolBar("Json Actions")
+
+ zoomInIcon = QIcon.fromTheme(QIcon.ThemeIcon.ZoomIn)
+ a = menu.addAction(zoomInIcon, "&+Expand all", self._tree.expandAll)
+ tb.addAction(a)
+ a.setPriority(QAction.LowPriority)
+ a.setShortcut(QKeySequence.New)
+
+ zoomOutIcon = QIcon.fromTheme(QIcon.ThemeIcon.ZoomOut)
+ a = menu.addAction(zoomOutIcon, "&-Collapse all", self._tree.collapseAll)
+ tb.addAction(a)
+ a.setPriority(QAction.LowPriority)
+ a.setShortcut(QKeySequence.New)
+
+ if not self._searchKey:
+ self._searchKey = QLineEdit(tb)
+
+ label = QLabel(tb)
+ magnifier = QPixmap(":/icons/images/magnifier.png").scaled(QSize(28, 28))
+ label.setPixmap(magnifier)
+ tb.addWidget(label)
+ tb.addWidget(self._searchKey)
+ self._searchKey.textEdited.connect(self._tree.keyboardSearch)
+
+ if not self.openJsonFile():
+ return
+
+ # Populate bookmarks with toplevel
+ self._uiAssets_tabs.clear()
+ self._toplevel = QListWidget(self._uiAssets_tabs)
+ self._uiAssets_tabs.addTab(self._toplevel, "Bookmarks")
+ for i in range(0, self._tree.model().rowCount()):
+ index = self._tree.model().index(i, 0)
+ self._toplevel.addItem(index.data())
+ item = self._toplevel.item(i)
+ item.setData(Qt.UserRole, index)
+ item.setToolTip(f"Toplevel Item {i}")
+
+ self._toplevel.setAcceptDrops(True)
+ self._tree.setDragEnabled(True)
+ self._tree.setContextMenuPolicy(Qt.CustomContextMenu)
+ self._toplevel.setContextMenuPolicy(Qt.CustomContextMenu)
+
+ self._toplevel.itemClicked.connect(self.onTopLevelItemClicked)
+ self._toplevel.itemDoubleClicked.connect(self.onTopLevelItemDoubleClicked)
+ self._toplevel.customContextMenuRequested.connect(self.onBookmarkMenuRequested)
+ self._tree.customContextMenuRequested.connect(self.onJsonMenuRequested)
+
+ # Connect back and forward
+ self._uiAssets_back.triggered.connect(self._back)
+ self._uiAssets_forward.triggered.connect(self._forward)
+
+ @Slot()
+ def _back(self):
+ index = self._tree.indexAbove(self._tree.currentIndex())
+ if index.isValid():
+ self._tree.setCurrentIndex(index)
+
+ @Slot()
+ def _forward(self):
+ current = self._tree.currentIndex()
+ next = self._tree.indexBelow(current)
+ if next.isValid():
+ self._tree.setCurrentIndex(next)
+ return
+ # Expand last item to go beyond
+ if not self._tree.isExpanded(current):
+ self._tree.expand(current)
+ next = self._tree.indexBelow(current)
+ if next.isValid():
+ self._tree.setCurrentIndex(next)
+
+ def openJsonFile(self):
+ self.disablePrinting()
+ file_name = QDir.toNativeSeparators(self._file.fileName())
+ type = "open"
+ self._file.open(QIODevice.ReadOnly)
+ self._text = self._file.readAll().data().decode("utf-8")
+ self._file.close()
+
+ data = None
+ message = None
+ try:
+ data = json.loads(self._text)
+ message = f"Json document {file_name} opened"
+ model = JsonItemModel(data, self)
+ self._tree.setModel(model)
+ except ValueError as e:
+ message = f"Unable to parse Json document from {file_name}: {e}"
+ self.statusMessage(message, type)
+ self.maybeEnablePrinting()
+
+ return self._tree.model() is not None
+
+ def indexOf(self, item):
+ return QModelIndex(item.data(Qt.UserRole))
+
+ @Slot(QListWidgetItem)
+ def onTopLevelItemClicked(self, item):
+ """Move to the clicked toplevel index"""
+ # return in the unlikely case that the tree has not been built
+ if not self._tree.model():
+ return
+
+ index = self.indexOf(item)
+ if not index.isValid():
+ return
+
+ self._tree.setCurrentIndex(index)
+
+ @Slot(QListWidgetItem)
+ def onTopLevelItemDoubleClicked(self, item):
+ """Toggle double clicked index between collaps/expand"""
+
+ # return in the unlikely case that the tree has not been built
+ if not self._tree.model():
+ return
+
+ index = self.indexOf(item)
+ if not index.isValid():
+ return
+
+ if self._tree.isExpanded(index):
+ self._tree.collapse(index)
+ return
+
+ # Make sure the node and all parents are expanded
+ while index.isValid():
+ self._tree.expand(index)
+ index = index.parent()
+
+ @Slot(QPoint)
+ def onJsonMenuRequested(self, pos):
+ index = self._tree.indexAt(pos)
+ if not index.isValid():
+ return
+
+ # Don't show a context menu, if the index is already a bookmark
+ for i in range(0, self._toplevel.count()):
+ if self.indexOf(self._toplevel.item(i)) == index:
+ return
+
+ menu = QMenu(self._tree)
+ action = QAction("Add bookmark")
+ action.setData(index)
+ menu.addAction(action)
+ action.triggered.connect(self.onBookmarkAdded)
+ menu.exec(self._tree.mapToGlobal(pos))
+
+ @Slot(QPoint)
+ def onBookmarkMenuRequested(self, pos):
+ item = self._toplevel.itemAt(pos)
+ if not item:
+ return
+
+ # Don't delete toplevel items
+ index = self.indexOf(item)
+ if not index.parent().isValid():
+ return
+
+ menu = QMenu()
+ action = QAction("Delete bookmark")
+ action.setData(self._toplevel.row(item))
+ menu.addAction(action)
+ action.triggered.connect(self.onBookmarkDeleted)
+ menu.exec(self._toplevel.mapToGlobal(pos))
+
+ @Slot()
+ def onBookmarkAdded(self):
+ action = self.sender()
+ if not action:
+ return
+
+ index = action.data()
+ if not index.isValid():
+ return
+
+ item = QListWidgetItem(index.data(Qt.DisplayRole), self._toplevel)
+ item.setData(Qt.UserRole, index)
+
+ # Set a tooltip that shows where the item is located in the tree
+ parent = index.parent()
+ tooltip = index.data(Qt.DisplayRole).toString()
+ while parent.isValid():
+ tooltip = parent.data(Qt.DisplayRole).toString() + "." + tooltip
+ parent = parent.parent()
+
+ item.setToolTip(tooltip)
+
+ @Slot()
+ def onBookmarkDeleted(self):
+ action = self.sender()
+ if not action:
+ return
+
+ row = action.data().toInt()
+ if row < 0 or row >= self._toplevel.count():
+ return
+
+ self._toplevel.takeItem(row)
+
+ def hasContent(self):
+ return bool(self._text)
+
+ def supportsOverview(self):
+ return True
+
+ def printDocument(self, printer):
+ if not self.hasContent():
+ return
+ doc = QTextDocument(self._text)
+ doc.print_(printer)
diff --git a/examples/demos/documentviewer/main.py b/examples/demos/documentviewer/main.py
new file mode 100644
index 000000000..2af373ef3
--- /dev/null
+++ b/examples/demos/documentviewer/main.py
@@ -0,0 +1,37 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Qt Document Viewer demo from Qt v6.x"""
+
+import sys
+from argparse import ArgumentParser, RawTextHelpFormatter
+
+from PySide6.QtWidgets import QApplication
+from PySide6.QtCore import QCoreApplication
+
+from mainwindow import MainWindow
+
+
+DESCRIPTION = "A viewer for JSON, PDF and text files"
+
+
+if __name__ == "__main__":
+
+ app = QApplication([])
+ QCoreApplication.setOrganizationName("QtExamples")
+ QCoreApplication.setApplicationName("DocumentViewer")
+ QCoreApplication.setApplicationVersion("1.0")
+
+ arg_parser = ArgumentParser(description=DESCRIPTION,
+ formatter_class=RawTextHelpFormatter)
+ arg_parser.add_argument("file", type=str, nargs="?",
+ help="JSON, PDF or text file to open")
+ args = arg_parser.parse_args()
+ fileName = args.file
+
+ w = MainWindow()
+ w.show()
+ if args.file and not w.openFile(args.file):
+ sys.exit(-1)
+
+ sys.exit(app.exec())
diff --git a/examples/demos/documentviewer/mainwindow.py b/examples/demos/documentviewer/mainwindow.py
new file mode 100644
index 000000000..e9abd0bec
--- /dev/null
+++ b/examples/demos/documentviewer/mainwindow.py
@@ -0,0 +1,178 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWidgets import (QDialog, QFileDialog, QMainWindow, QMessageBox)
+from PySide6.QtCore import (QDir, QFile, QFileInfo, QSettings, Slot)
+
+from ui_mainwindow import Ui_MainWindow
+from viewerfactory import ViewerFactory
+from recentfiles import RecentFiles
+from recentfilemenu import RecentFileMenu
+
+
+settingsDir = "WorkingDir"
+settingsMainWindow = "MainWindow"
+settingsViewers = "Viewers"
+settingsFiles = "RecentFiles"
+
+
+ABOUT_TEXT = """A Widgets application to display and print JSON,
+text and PDF files. Demonstrates various features to use
+in widget applications: Using QSettings, query and save
+user preferences, manage file histories and control cursor
+behavior when hovering over widgets.
+
+"""
+
+
+class MainWindow(QMainWindow):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.ui = Ui_MainWindow()
+
+ self._currentDir = QDir()
+ self._viewer = None
+ self._recentFiles = RecentFiles()
+
+ self.ui.setupUi(self)
+ self.ui.actionOpen.triggered.connect(self.onActionOpenTriggered)
+ self.ui.actionAbout.triggered.connect(self.onActionAboutTriggered)
+ self.ui.actionAboutQt.triggered.connect(self.onActionAboutQtTriggered)
+
+ self._recentFiles = RecentFiles(self.ui.actionRecent)
+ self._recentFiles.countChanged.connect(self._recentFilesCountChanged)
+
+ self.readSettings()
+ self._factory = ViewerFactory(self.ui.viewArea, self)
+ viewers = ", ".join(self._factory.viewerNames())
+ self.statusBar().showMessage(f'Available viewers: {viewers}')
+
+ menu = RecentFileMenu(self, self._recentFiles)
+ self.ui.actionRecent.setMenu(menu)
+ menu.fileOpened.connect(self.openFile)
+ button = self.ui.mainToolBar.widgetForAction(self.ui.actionRecent)
+ if button:
+ self.ui.actionRecent.triggered.connect(button.showMenu)
+
+ @Slot(int)
+ def _recentFilesCountChanged(self, count):
+ self.ui.actionRecent.setText(f"{count} recent files")
+
+ def closeEvent(self, event):
+ self.saveSettings()
+
+ @Slot(int)
+ def onActionOpenTriggered(self):
+ fileDialog = QFileDialog(self, "Open Document",
+ self._currentDir.absolutePath())
+ while (fileDialog.exec() == QDialog.Accepted
+ and not self.openFile(fileDialog.selectedFiles()[0])):
+ pass
+
+ @Slot(str)
+ def openFile(self, fileName):
+ file = QFile(fileName)
+ if not file.exists():
+ nf = QDir.toNativeSeparators(fileName)
+ self.statusBar().showMessage(f"File {nf} could not be opened")
+ return False
+
+ fileInfo = QFileInfo(file)
+ self._currentDir = fileInfo.dir()
+ self._recentFiles.addFile(fileInfo.absoluteFilePath())
+
+ # If a viewer is already open, clean it up and save its settings
+ self.resetViewer()
+ self._viewer = self._factory.viewer(file)
+ if not self._viewer:
+ nf = QDir.toNativeSeparators(fileName)
+ self.statusBar().showMessage(f"File {nf} can't be opened.")
+ return False
+
+ self.ui.actionPrint.setEnabled(self._viewer.hasContent())
+ self._viewer.printingEnabledChanged.connect(self.ui.actionPrint.setEnabled)
+ self.ui.actionPrint.triggered.connect(self._viewer.print_)
+ self._viewer.showMessage.connect(self.statusBar().showMessage)
+
+ self._viewer.initViewer(self.ui.actionBack, self.ui.actionForward,
+ self.ui.menuHelp.menuAction(),
+ self.ui.tabWidget)
+ self.restoreViewerSettings()
+ self.ui.scrollArea.setWidget(self._viewer.widget())
+ return True
+
+ @Slot()
+ def onActionAboutTriggered(self):
+ viewerNames = ", ".join(self._factory.viewerNames())
+ mimeTypes = '\n'.join(self._factory.supportedMimeTypes())
+ text = ABOUT_TEXT
+ text += f"\nThis version has loaded the following plugins:\n{viewerNames}\n"
+ text += f"\n\nIt supports the following mime types:\n{mimeTypes}"
+
+ defaultViewer = self._factory.defaultViewer()
+ if defaultViewer:
+ n = defaultViewer.viewerName()
+ text += f"\n\nOther mime types will be displayed with {n}."
+
+ QMessageBox.about(self, "About Document Viewer Demo", text)
+
+ @Slot()
+ def onActionAboutQtTriggered(self):
+ QMessageBox.aboutQt(self)
+
+ def readSettings(self):
+ settings = QSettings()
+
+ # Restore working directory
+ if settings.contains(settingsDir):
+ self._currentDir = QDir(settings.value(settingsDir))
+ else:
+ self._currentDir = QDir.current()
+
+ # Restore QMainWindow state
+ if settings.contains(settingsMainWindow):
+ mainWindowState = settings.value(settingsMainWindow)
+ self.restoreState(mainWindowState)
+
+ # Restore recent files
+ self._recentFiles.restoreFromSettings(settings, settingsFiles)
+
+ def saveSettings(self):
+ settings = QSettings()
+
+ # Save working directory
+ settings.setValue(settingsDir, self._currentDir.absolutePath())
+
+ # Save QMainWindow state
+ settings.setValue(settingsMainWindow, self.saveState())
+
+ # Save recent files
+ self._recentFiles.saveSettings(settings, settingsFiles)
+
+ settings.sync()
+
+ def saveViewerSettings(self):
+ if not self._viewer:
+ return
+ settings = QSettings()
+ settings.beginGroup(settingsViewers)
+ settings.setValue(self._viewer.viewerName(), self._viewer.saveState())
+ settings.endGroup()
+ settings.sync()
+
+ def resetViewer(self):
+ if not self._viewer:
+ return
+ self.saveViewerSettings()
+ self._viewer.cleanup()
+
+ def restoreViewerSettings(self):
+ if not self._viewer:
+ return
+ settings = QSettings()
+ settings.beginGroup(settingsViewers)
+ viewerSettings = settings.value(self._viewer.viewerName())
+ settings.endGroup()
+ if viewerSettings:
+ self._viewer.restoreState(viewerSettings)
diff --git a/examples/demos/documentviewer/mainwindow.ui b/examples/demos/documentviewer/mainwindow.ui
new file mode 100644
index 000000000..482061fc7
--- /dev/null
+++ b/examples/demos/documentviewer/mainwindow.ui
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>983</width>
+ <height>602</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Document Viewer Demo</string>
+ </property>
+ <property name="windowIcon">
+ <iconset resource="documentviewer.qrc">
+ <normaloff>:/demos/documentviewer/images/qt-logo.png</normaloff>:/demos/documentviewer/images/qt-logo.png</iconset>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QWidget" name="viewArea" native="true">
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QSplitter" name="splitter">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="tabPosition">
+ <enum>QTabWidget::West</enum>
+ </property>
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="bookmarkTab">
+ <attribute name="title">
+ <string>Pages</string>
+ </attribute>
+ </widget>
+ <widget class="QWidget" name="pagesTab">
+ <attribute name="title">
+ <string>Bookmarks</string>
+ </attribute>
+ </widget>
+ </widget>
+ <widget class="QScrollArea" name="scrollArea">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>800</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="scrollAreaWidgetContents">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>798</width>
+ <height>479</height>
+ </rect>
+ </property>
+ </widget>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menubar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>983</width>
+ <height>23</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="qtFileMenu">
+ <property name="title">
+ <string>File</string>
+ </property>
+ <addaction name="actionOpen"/>
+ <addaction name="actionRecent"/>
+ <addaction name="actionPrint"/>
+ <addaction name="actionQuit"/>
+ </widget>
+ <widget class="QMenu" name="menuHelp">
+ <property name="title">
+ <string>Help</string>
+ </property>
+ <addaction name="actionAbout"/>
+ <addaction name="actionAboutQt"/>
+ </widget>
+ <addaction name="qtFileMenu"/>
+ <addaction name="menuHelp"/>
+ </widget>
+ <widget class="QStatusBar" name="statusbar"/>
+ <widget class="QToolBar" name="mainToolBar">
+ <property name="windowTitle">
+ <string>toolBar</string>
+ </property>
+ <attribute name="toolBarArea">
+ <enum>TopToolBarArea</enum>
+ </attribute>
+ <attribute name="toolBarBreak">
+ <bool>false</bool>
+ </attribute>
+ <addaction name="actionOpen"/>
+ <addaction name="actionRecent"/>
+ <addaction name="actionPrint"/>
+ <addaction name="separator"/>
+ <addaction name="actionBack"/>
+ <addaction name="actionForward"/>
+ <addaction name="separator"/>
+ </widget>
+ <action name="actionOpen">
+ <property name="icon">
+ <iconset resource="documentviewer.qrc">
+ <normaloff>:/demos/documentviewer/images/open.png</normaloff>:/demos/documentviewer/images/open.png</iconset>
+ </property>
+ <property name="text">
+ <string>Open</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+O</string>
+ </property>
+ </action>
+ <action name="actionAbout">
+ <property name="icon">
+ <iconset theme="help-about" resource="documentviewer.qrc">
+ <normaloff>:/demos/documentviewer/images/help-about.svgz</normaloff>:/demos/documentviewer/images/help-about.svgz</iconset>
+ </property>
+ <property name="text">
+ <string>about documentviewer</string>
+ </property>
+ <property name="toolTip">
+ <string>Show information about the Document Viewer deomo.</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+H</string>
+ </property>
+ </action>
+ <action name="actionForward">
+ <property name="icon">
+ <iconset resource="documentviewer.qrc">
+ <normaloff>:/demos/documentviewer/images/go-next.svgz</normaloff>:/demos/documentviewer/images/go-next.svgz</iconset>
+ </property>
+ <property name="text">
+ <string>actionForward</string>
+ </property>
+ <property name="toolTip">
+ <string>One step forward</string>
+ </property>
+ <property name="shortcut">
+ <string>Right</string>
+ </property>
+ </action>
+ <action name="actionBack">
+ <property name="icon">
+ <iconset resource="documentviewer.qrc">
+ <normaloff>:/demos/documentviewer/images/go-previous.svgz</normaloff>:/demos/documentviewer/images/go-previous.svgz</iconset>
+ </property>
+ <property name="text">
+ <string>actionBack</string>
+ </property>
+ <property name="toolTip">
+ <string>One step back</string>
+ </property>
+ <property name="shortcut">
+ <string>Left</string>
+ </property>
+ </action>
+ <action name="actionPrint">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="icon">
+ <iconset theme="document-print" resource="documentviewer.qrc">
+ <normaloff>:/demos/documentviewer/images/print2x.png</normaloff>:/demos/documentviewer/images/print2x.png</iconset>
+ </property>
+ <property name="text">
+ <string>Print</string>
+ </property>
+ <property name="toolTip">
+ <string>Print current file</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+P</string>
+ </property>
+ </action>
+ <action name="actionAboutQt">
+ <property name="icon">
+ <iconset resource="documentviewer.qrc">
+ <normaloff>:/demos/documentviewer/images/qt-logo.png</normaloff>
+ <normalon>:/demos/documentviewer/images/qt-logo.png</normalon>:/demos/documentviewer/images/qt-logo.png</iconset>
+ </property>
+ <property name="text">
+ <string>About Qt</string>
+ </property>
+ <property name="toolTip">
+ <string>Show Qt license information</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+I</string>
+ </property>
+ </action>
+ <action name="actionRecent">
+ <property name="icon">
+ <iconset resource="documentviewer.qrc">
+ <normaloff>:/demos/documentviewer/images/document-open-recent.svgz</normaloff>:/demos/documentviewer/images/document-open-recent.svgz</iconset>
+ </property>
+ <property name="text">
+ <string>Recently opened...</string>
+ </property>
+ <property name="shortcut">
+ <string>Meta+R</string>
+ </property>
+ </action>
+ <action name="actionQuit">
+ <property name="icon">
+ <iconset theme="application-exit">
+ <normaloff>.</normaloff>.</iconset>
+ </property>
+ <property name="text">
+ <string>Quit</string>
+ </property>
+ <property name="toolTip">
+ <string>Quit the application</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+Q</string>
+ </property>
+ </action>
+ </widget>
+ <resources>
+ <include location="documentviewer.qrc"/>
+ </resources>
+ <connections>
+ <connection>
+ <sender>actionQuit</sender>
+ <signal>triggered()</signal>
+ <receiver>MainWindow</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>-1</x>
+ <y>-1</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>491</x>
+ <y>300</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/examples/demos/documentviewer/pdfviewer/pdfviewer.py b/examples/demos/documentviewer/pdfviewer/pdfviewer.py
new file mode 100644
index 000000000..d5695e4d0
--- /dev/null
+++ b/examples/demos/documentviewer/pdfviewer/pdfviewer.py
@@ -0,0 +1,204 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from math import sqrt
+
+from PySide6.QtWidgets import (QListView, QTreeView)
+from PySide6.QtGui import QIcon, QPainter
+from PySide6.QtCore import (QDir, QIODevice, QModelIndex,
+ QPointF, Slot)
+from PySide6.QtPrintSupport import QPrinter
+from PySide6.QtPdf import QPdfDocument, QPdfBookmarkModel
+from PySide6.QtPdfWidgets import QPdfView, QPdfPageSelector
+
+from abstractviewer import AbstractViewer
+from pdfviewer.zoomselector import ZoomSelector
+
+
+ZOOM_MULTIPLIER = sqrt(2.0)
+
+
+class PdfViewer(AbstractViewer):
+
+ def __init__(self):
+ super().__init__()
+ self.uiInitialized.connect(self.initPdfViewer)
+ self._toolBar = None
+ self._zoomSelector = None
+ self._pageSelector = None
+ self._document = None
+ self._pdfView = None
+ self._actionForward = None
+ self._actionBack = None
+ self._bookmarks = None
+ self._pages = None
+
+ def init(self, file, parent, mainWindow):
+ self._pdfView = QPdfView(parent)
+ super().init(file, self._pdfView, mainWindow)
+ self._document = QPdfDocument(self)
+
+ def supportedMimeTypes(self):
+ return ["application/pdf"]
+
+ def initPdfViewer(self):
+ self._toolBar = self.addToolBar("PDF")
+ self._zoomSelector = ZoomSelector(self._toolBar)
+
+ nav = self._pdfView.pageNavigator()
+ self._pageSelector = QPdfPageSelector(self._toolBar)
+ self._toolBar.insertWidget(self._uiAssets_forward, self._pageSelector)
+ self._pageSelector.setDocument(self._document)
+ self._pageSelector.currentPageChanged.connect(self.pageSelected)
+ nav.currentPageChanged.connect(self._pageSelector.setCurrentPage)
+ nav.backAvailableChanged.connect(self._uiAssets_back.setEnabled)
+ self._actionBack = self._uiAssets_back
+ self._actionForward = self._uiAssets_forward
+ self._uiAssets_back.triggered.connect(self.onActionBackTriggered)
+ self._uiAssets_forward.triggered.connect(self.onActionForwardTriggered)
+
+ self._toolBar.addSeparator()
+ self._toolBar.addWidget(self._zoomSelector)
+
+ actionZoomIn = self._toolBar.addAction("Zoom in")
+ actionZoomIn.setToolTip("Increase zoom level")
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.ZoomIn,
+ QIcon(":/demos/documentviewer/images/zoom-in.png"))
+ actionZoomIn.setIcon(icon)
+ self._toolBar.addAction(actionZoomIn)
+ actionZoomIn.triggered.connect(self.onActionZoomInTriggered)
+
+ actionZoomOut = self._toolBar.addAction("Zoom out")
+ actionZoomOut.setToolTip("Decrease zoom level")
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.ZoomIn,
+ QIcon(":/demos/documentviewer/images/zoom-out.png"))
+ actionZoomOut.setIcon(icon)
+ self._toolBar.addAction(actionZoomOut)
+ actionZoomOut.triggered.connect(self.onActionZoomOutTriggered)
+
+ nav.backAvailableChanged.connect(self._actionBack.setEnabled)
+ nav.forwardAvailableChanged.connect(self._actionForward.setEnabled)
+
+ self._zoomSelector.zoomModeChanged.connect(self._pdfView.setZoomMode)
+ self._zoomSelector.zoomFactorChanged.connect(self._pdfView.setZoomFactor)
+ self._zoomSelector.reset()
+
+ bookmarkModel = QPdfBookmarkModel(self)
+ bookmarkModel.setDocument(self._document)
+ self._uiAssets_tabs.clear()
+ self._bookmarks = QTreeView(self._uiAssets_tabs)
+ self._bookmarks.activated.connect(self.bookmarkSelected)
+ self._bookmarks.setModel(bookmarkModel)
+ self._pdfView.setDocument(self._document)
+ self._pdfView.setPageMode(QPdfView.PageMode.MultiPage)
+
+ self.openPdfFile()
+ if not self._document.pageCount():
+ return
+
+ self._pages = QListView(self._uiAssets_tabs)
+ self._pages.setModel(self._document.pageModel())
+
+ self._pages.selectionModel().currentRowChanged.connect(self._currentRowChanged)
+ self._pdfView.pageNavigator().currentPageChanged.connect(self._pageChanged)
+
+ self._uiAssets_tabs.addTab(self._pages, "Pages")
+ self._uiAssets_tabs.addTab(self._bookmarks, "Bookmarks")
+
+ def viewerName(self):
+ return "PdfViewer"
+
+ @Slot(QModelIndex, QModelIndex)
+ def _currentRowChanged(self, current, previous):
+ if previous == current:
+ return
+
+ nav = self._pdfView.pageNavigator()
+ row = current.row()
+ if nav.currentPage() == row:
+ return
+ nav.jump(row, QPointF(), nav.currentZoom())
+
+ @Slot(int)
+ def _pageChanged(self, page):
+ if self._pages.currentIndex().row() == page:
+ return
+ self._pages.setCurrentIndex(self._pages.model().index(page, 0))
+
+ @Slot()
+ def openPdfFile(self):
+ self.disablePrinting()
+
+ if self._file.open(QIODevice.ReadOnly):
+ self._document.load(self._file)
+
+ documentTitle = self._document.metaData(QPdfDocument.MetaDataField.Title)
+ if not documentTitle:
+ documentTitle = "PDF Viewer"
+ self.statusMessage(documentTitle)
+ self.pageSelected(0)
+
+ file_name = QDir.toNativeSeparators(self._file.fileName())
+ self.statusMessage(f"Opened PDF file {file_name}")
+ self.maybeEnablePrinting()
+
+ def hasContent(self):
+ return self._document if self._document.pageCount() > 0 else False
+
+ def supportsOverview(self):
+ return True
+
+ def printDocument(self, printer):
+ if not self.hasContent():
+ return
+
+ painter = QPainter()
+ painter.begin(printer)
+ pageRect = printer.pageRect(QPrinter.Unit.DevicePixel).toRect()
+ pageSize = pageRect.size()
+ for i in range(0, self._document.pageCount()):
+ if i > 0:
+ printer.newPage()
+ page = self._document.render(i, pageSize)
+ painter.drawImage(pageRect, page)
+ painter.end()
+
+ @Slot(QModelIndex)
+ def bookmarkSelected(self, index):
+ if not index.isValid():
+ return
+
+ page = index.data(int(QPdfBookmarkModel.Role.Page))
+ zoomLevel = index.data(int(QPdfBookmarkModel.Role.Level)).toReal()
+ self._pdfView.pageNavigator().jump(page, QPointF(), zoomLevel)
+
+ @Slot(int)
+ def pageSelected(self, page):
+ nav = self._pdfView.pageNavigator()
+ nav.jump(page, QPointF(), nav.currentZoom())
+
+ @Slot()
+ def onActionZoomInTriggered(self):
+ self._pdfView.setZoomFactor(self._pdfView.zoomFactor() * ZOOM_MULTIPLIER)
+
+ @Slot()
+ def onActionZoomOutTriggered(self):
+ self._pdfView.setZoomFactor(self._pdfView.zoomFactor() / ZOOM_MULTIPLIER)
+
+ @Slot()
+ def onActionPreviousPageTriggered(self):
+ nav = self._pdfView.pageNavigator()
+ nav.jump(nav.currentPage() - 1, QPointF(), nav.currentZoom())
+
+ @Slot()
+ def onActionNextPageTriggered(self):
+ nav = self._pdfView.pageNavigator()
+ nav.jump(nav.currentPage() + 1, QPointF(), nav.currentZoom())
+
+ @Slot()
+ def onActionBackTriggered(self):
+ self._pdfView.pageNavigator().back()
+
+ @Slot()
+ def onActionForwardTriggered(self):
+ self._pdfView.pageNavigator().forward()
diff --git a/examples/demos/documentviewer/pdfviewer/zoomselector.py b/examples/demos/documentviewer/pdfviewer/zoomselector.py
new file mode 100644
index 000000000..e5da5708f
--- /dev/null
+++ b/examples/demos/documentviewer/pdfviewer/zoomselector.py
@@ -0,0 +1,54 @@
+# Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWidgets import QComboBox
+from PySide6.QtCore import Signal, Slot
+from PySide6.QtPdfWidgets import QPdfView
+
+
+ZOOM_LEVELS = ["Fit Width", "Fit Page", "12%", "25%", "33%", "50%", "66%",
+ "75%", "100%", "125%", "150%", "200%", "400%"]
+
+
+class ZoomSelector(QComboBox):
+ zoomModeChanged = Signal(QPdfView.ZoomMode)
+ zoomFactorChanged = Signal(float)
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.setEditable(True)
+
+ for z in ZOOM_LEVELS:
+ self.addItem(z)
+
+ self.currentTextChanged.connect(self.onCurrentTextChanged)
+ self.lineEdit().editingFinished.connect(self._editingFinished)
+
+ @Slot()
+ def _editingFinished(self):
+ self.onCurrentTextChanged(self.lineEdit().text())
+
+ @Slot(float)
+ def setZoomFactor(self, zoomFactor):
+ z = int(100 * zoomFactor)
+ self.setCurrentText(f"{z}%")
+
+ @Slot()
+ def reset(self):
+ self.setCurrentIndex(8) # 100%
+
+ @Slot(str)
+ def onCurrentTextChanged(self, text):
+ if text == "Fit Width":
+ self.zoomModeChanged.emit(QPdfView.ZoomMode.FitToWidth)
+ elif text == "Fit Page":
+ self.zoomModeChanged.emit(QPdfView.ZoomMode.FitInView)
+ else:
+ factor = 1.0
+ withoutPercent = text.replace('%', '')
+ zoomLevel = int(withoutPercent)
+ if zoomLevel:
+ factor = zoomLevel / 100.0
+
+ self.zoomModeChanged.emit(QPdfView.ZoomMode.Custom)
+ self.zoomFactorChanged.emit(factor)
diff --git a/examples/demos/documentviewer/rc_documentviewer.py b/examples/demos/documentviewer/rc_documentviewer.py
new file mode 100644
index 000000000..fee824311
--- /dev/null
+++ b/examples/demos/documentviewer/rc_documentviewer.py
@@ -0,0 +1,5135 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.5.1
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x0a\xde\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x07tIME\x07\xe7\x03\x09\x07\x09\x01^\xb7)\
+\x9a\x00\x00\x09\xbeIDATX\xc3\xad\x98\xddo\x5c\
+\xc7y\x87\x9f9s\xce\xd9s\xcer\x97\xe4J\xa4L\
+\x85\x96IJr\x1c\x08\x8e\x9b2\xad\xfb\x85&\x06Z\
+\x040\x9c\x00\x06\x92\x5c\xf4\x0f\x88\xe1\xd6@\xff\x90&\
+\xbe\xf1E\xe1\xdb\x02\x85\x80\xa2\x17m\xe3\xcb\xa2Jc\
+\x1b\x84c\xb9\x94YJb\x14\xd1\x12\xbfD\xf1kI\
+\xee\xd7\xf9\x9a3o/vI)\x14\x97\xa2+\xbd\xc0\
+`\xb1\xb3sf\x1e\xfc~\xef\xbc;g\x14'\xc7\x14\
+\xf0m\xe0\x22\xa7\x8f/\x81/\x80\xdd\xaf\xf1L\xdfP\
+}\xfa\xffL)U\x15\x91W\xde|\xf3\xcd?\xfa\xe0\
+\x83\x0f^?\xed\x84\x17/^\xfc\x0dp\x07\xf8_`\
+\x1e\xf8\xed\xb3\x00\xbaG\xbe\x0f\x02\xafN\x9fQ\x7f\x13\
+h\x06vS56@6\x11\x86\xe1\xc5 \x08N\x9c\
+\xc8ZK\x96e\xbc\x5cU\xeex\xc4\xcb\xcd\x9co-\
+\xb6d\xac\x9e\xf2\x00h>/\xc0\xb3\xc0\xdbW\x06\xd5\
+\xdb\xa1\x8b\xbb\x99\xe0\xfb\xf1^iqq\x91\xc1\xa1A\
+\xd4c\x82\x0b\x82\x12@)\x10\xc1\x18C\xab\xdd\xe6b\
+\x85\xf3\xdf\x1eR\xa3\xf7Z2\xb6\x9e`\xeb)\x1f=\
+O\xc0!\xe0{o\x8c9/\x88\xc0\xef\x1a\xc2\x9e\xc4\
+,--Q\xa9WN\x9c\xa8(\x0a:\x9d\x0eUO\
+y\xe7B\xc7k\x1b\xe9\x0cy6\x5cE\xce\x00\xf7\x9f\
+\x0b\xa0R\x0a\xe8\x0ac\x01\xab\xa0\xbe\xb7\xcb\x7f]\xbb\
+F\x1c\xc7\xd8\xa2@D(\x8a\x82,\xcbH\xd3\x14c\
+\x0c\xc6\x18\xb4\xd6T*\x15B\xe8f\xb6C\xff\x0c\x7f\
+\x06\x05{\xf6u\x01\x03\x0d^\xdabi\xee:q\xdc\
+B\x89\x05\xe9\xda+V\x08\x95\x01\xc0C\xd0\x8eB\xef\
+iF\xcb\x1aO\x0b\x22`,\x01\xf0\x12]\x8bG\x81\
+\x01 \x04\xaat\xd3\x09`\x1fX\xa6\xbb\xfb7\xfa\x02\
+~\xf8\xe1\x87\xbc\xfb\xee\xbbJD\x14\xaa\x0bY\x8eB\
+F\x83\x90\xc44\x19\xd0\x19\x88<R\x1b\x18\x0e4\xae\
+\xa3\xd0Z!V\xe8\xa4\x19\xeb\xa9f/5\xac\xc5N\
+`\xc2\xca\x85\xefLM\xbe\x15\x04\xc1wGGGk\
+Q\x14E\xa5R)\x08\xc3p \x8a\xa2\xa1J\xa5\xa2\
+:\x9dNkee\xe5\xce\xd5\xabW}\xe0\xa3\x93\x14\
+TJ)D\xa4\xbb\xbat\x01\xcf\x07C\x94\x8c\x8b\xb5\
+\x01V\xba\xca\x1c\xec\x8dZ\xe4\xe3i\x8dv\xa0\x9d[\
+\x16wR\x82\xd1\x8b\xa4V1\xe8\xf8\xc1te\xe8\xa5\
+\x17_\x9a\xaci\xad\xf3\xb1\xb11\xafR\xa9\xe8(\x8a\
+\x9cj\xb5\xea\xd6j5\xb7V\xab\xe9\xdd\xdd]37\
+7\xf7\xe2\xec\xec\xac]XX\x98\x036\x81\xe4D\x8b\
+\x0f$\xf2=M\xa9\x5cb\xc0\x0dH\xf2\x02S\x08\x85\
+\x08\x88\xa0\x94\xc2w\x1d|\xd7!/,\x9d\xd4aC\
+U\xf9\xc5\xcf\xff\x91\xb3#\xa3\xf8\xa5\x92\x06\xa2^{\
+\x94>\x22Xk\xc9\xf3\x9c\x81\x81\x01&&&J\xc3\
+\xc3\xc3\x13\xb3\xb3\xb3?ZXXx\x00\xfcs\xcf\xf2\
+\xfe\x80\x8e\x06\xc7\x82\xe3\x80\xa3\x15\xa2\x15\xda*D\xf5\
+v\x90(\x94\x02\xad\xbb\xf6n43\x9aT\xf8\xfe_\
+\xff\x15c\xdf\x18?\x049.\x0e\xe0\x1a\x8d\x06\xae\xeb\
+\xe2y\x1e\x97.]*\xbd\xff\xfe\xfb\x17\xb2,{\xe7\
+\xe3\x8f?>\x7f\xe7\xce\x9d\x7f\x01>>\x0a(\xbdI\
+\xc5Q\x0a\xad\xe8&\xbeVh\xed\x80\x80\xb1\x82\xed-\
+\xac\x14x\x8e\x83\xa7\x1d\x5c\xc7\xc1\x11N\x04{\x5cA\
+c\x0c\xedv\x9br\xb9L\x14E\xf8\xbe\x8f\xef\xfb\xbc\
+\xf7\xde{\xe7FFF\xbe\xff\xd9g\x9f\xed\x5c\xbbv\
+m\x17\x98w\x0e\x1e|\xe7\x9dw\x0e\x09\xb5\xd3m\xae\
+Vx\xda\xa1\xe4i\x02O\xe3\xbb\x0e(\xc8\x0aK\x9c\
+\x15\xec'9\x8d$'\xce\x0dYa1\xc6\xf0\xb48\
+\xb08\x8ec\xf2<\xc7Z\xdbu\xcdq\x98\x9c\x9c\x0c\
+\xa6\xa7\xa7_\x9c\x9c\x9c\xfc\x03\xe0J\x7f\x8b{5\xcc\
+\xd5\x0a\xcf\xedZ\x1c\xe7Bb\x15\xa9\x0a\xc8}\x17\xab\
+4\x16\x97\xc2\x11\xb2\xb4MQx4Z\x1d\xf6\xf6\xf6\
+\x08\x82\x00\xcf\xf3\x10\x11Z\xad\x16\xedv\x9b \x08(\
+\x97\xcb\xb8\xae{hs\xbd^'\xcb2J\xa5\xd2!\
+\xf8\xe8\xe8hP\xadV\xc7\x80\x0bO\x00>\xb2\xb8k\
+\xa1\xab\xbby\x96\x88\xf0`\xbf\xc3\x9eD\x84g_\xa0\
+6\xf6\x12\xe5\xa1Q\xbc\xa8F\x9e\xb4(67H7\
+7y\xb0\xb1\xc3\x8d\x1b7\x98\x9c\x9cddd\x844\
+M\xf9\xf2\xcb/\x99\x9f\x9fgrr\x92+W\xae0\
+>>~\xb8\xde\xed\xdb\xb7\xa9\xd7\xebt:\x1d\x92$\
+\xe1\xf2\xe5\xcb\x18cd\x7f\x7f\xbf\xb7MQ\xc7*\xa8\
+u\xb7\x944R\xc3\xf6N\xc2\xc3\xc2\xe3O~\xf4w\
+\xb8\xe7\xbfC[\xd7\xd8m\xc1z#c\xbf\x99\x91K\
+\x01g \x18\x11.\x07\x96\xc46\xf9\xf5'\x9fS\x1b\
+.S\xadTYZ\xd9\xe0/\x7f\xf03\xe6>\xff\x88\
+\x8d\x8d\x0d\xc6\xc7\xc7\xd1Z\x13E\x11Q\x14\xd1n\xb7\
+\xc9\xf3\x1c\xdf\xf7q]\xf7\xf14Q'X\xac\xd8O\
+\x85FP\xa141\xcd\xf7\xfe\xe2m\xdcs\xaf\x90H\
+\x88M\x158\x06q\x14\xa9\x11\x1amC\x12\x1bL^\
+\xa0\xc4\xf2p\xdb\xe3\x5c\xf5\x22*\xee\xb0\xd7\xc9\xd8I\
+'\xf8\x9f[u:\xed\xecp\x039\x8eC\xb9\x5cf\
+dd\x84R\xa9D\x92$(\xa5\x18\x1a\x1a\xa2^\xaf\
+\x8b\xeb\xbaBW\xa3\xe3\x01\x95\x82\xbd\x0cJ\xa3S\x8c\
+O\xbf\xc1\x85W_g\xf9\xee\xefh\xd7wH\x93\x0c\
+W|\xcex\x83\xb8C5\x1c\xd1l\x1bK'6\xc4\
+qA\xabm\xd9o\xbbD\xaeO\x91\x09\xf5\x96\xe6\x92\
+\xc4\x84\x99}\xcc!M\x18\x86\x0c\x0f\x0f\x13\x86\xe1\xa1\
+ja\x18\x92$\x09\x9e\xe7\x1d\xfc\xdb\xf6)\xd4\x0e\xe4\
+\x02\x95\x81A\x06\x06\x87h\xed<`\x7f\xfe?I\xea\
+\x0f\xb1E\x8eW\x1a\xc0\x1b:\x8fS\xb9\x8c\x8e\xce\xe0\
+\x11\xe2\xe0\x93\x1bK\xb3\x99\xd3h\x09X\xc8s\x8fF\
+#\xe6\xfc9CI\xec\xa1\x82J)|\xdf\xc7q\x1c\
+\xc20<\xec\xd7Z\x1fUP\xfa*X\x0b\xa1\xb9r\
+\x8b\xcf\x7f\xf9O\x08\x8ap\xff\x1e\xc3e\x1f\xd7Q\xa4\
+\xa6`\xfb\xb79\xdbv\x80\x89\xef\xfe\x80\xea\xe8\x1f\x13\
+\x95\xc7\xc8\x8d\x10'\x86N^\x90t\x0a\xe2\xd8\x90$\
+\xe6\xf7N5\x070\xae\xeb\xa2\xb5~l\xcd\xee \xcf\
+\xf3~\xaf\xbfo\x99\x19-+\xcex{\x88,\xe1\x06\
+\x11g\xa6jO\x8c\xdb\xeb\xe4\xac\xdd\xfew\xb6\x16f\
+Hj\x7f\xc8\xa5\xa9\x1f\xd2l\xfb\x88\x05\xb1`\xa5[\
+\xd8=\xd7\x81\xbc\x0b\xd7\xaf\x90\x1f\xf4\x1f\x1d\xd3\xbf\x0e\
+\x02\xbe\xaf\xf0#\x177\xf0p\x8e9\xdbU\x03\x97V\
+\xe8\xb1\xbc\xb9\xcdv\xbc\xc8\xd4\xcb\x86\xc0\xd7d%\x8d\
+1BQ\x08Eaq\xb4\x832'\x03\x1e\x84\xb5\xf2\
+\xf8\xa1\xa9\xff&\x81n\xa1\xf6]\x85\xeb:\xc7N\xb6\
+\xd9L\xd8j\xe7\xf8\xb5\x0b\xbcp\xee5\xac.\xe1\xfa\
+\x19\x9e\xef\xe0\xe7\x0eE\xe1P\x14\x1aW\xabc\xd59\
+>\x0e7p\x7f@\x0exz\x05\x9b\xe3\xf9X\xdcj\
+\xa1G.q\xfe\x9bo\xe0\xbf\xf8\xa7<h\x0fpf\
+\xa8M\xe89t\x02C\x92\x14$\xb1\xa16X\x22M\
+\xd5\xa9\x00\x8f\xfe\xdeG\xc1\xee\xeb\x91\xe3(p\xd4\xa1\
+\xa2Gcm\xb7\xc3O\xff\xf6\xef)\x8f\xbf\xc6\xc3z\
+\x82\xd7\xc88[\xf1\xc82K\x96\x15\xbdfy\xed\x95\
+!n\xb6\xdcc\x01\x8e\x03<u\x0e*\xa7\xd7\xfa\x00\
+^~\xa1\xc2/\xff\xe1g,mw\xd8N]\xfc\xb3\
+\x13L\xbf\xfe\xe7O\x8c\x9bY\x86\x89\x89\x09\xce\x9e=\
+\xfb|\x14t\x9cG\xa7f\xa7\xf7yp\xca~<\xbe\
+5^ej4da\xd5\xe1^C\x13]z\x99\xb7\
+\xdez\xeb\xd8\x85\x83 \x8a\xa2S\xe4 OW\xf0\
+@1\xa5\x1e\xb5n\x07\x88X\xa40\xd8<%\xc8b\
+\xfc<\xa1R\xb4\x88\x9c*\xd5\x812cccO\x05\
+xf\x05Q\xbd\xa3\x04\x00\x16\xb1\x05R\xe4\x885\x88\
+\xc9)\xf2\x84\x22\xed`\xe2\x066\x8b\xc9[\x06k\xbd\
+.\xfc)\x14z\x1a\xe0)\x14<\x90P\x10k\xb0Y\
+\x9b\xac\xb5\x83\xe94\xb0y\x8c\x14\xe6\x89\xf1\x07\xcf<\
++\xe0\xd18\xd1\xe2\xbc\xb9E\xde\xdc\xea\xfb;@j\
+\xb0\x1bm\xc9\x97R\xb1S\xb9\xf2ED\xf3\x0cq\xba\
+2\xe3\xf4\x9f\xc0X\xa4\x99\x8aY\xd9\x97\xf8\xf6\x96m\
+-\xd6ew\xb5!\xad\x81s\xae?\xe5\xb8S\x222\
+\xf8,\x80i\x9a\x8a1&\xa3\xf7\xeay\xa2\x82\x00\x85\
+E\xd2\x02\xbb\xde\x90d\xbd%i=\x96\xb8\x91\xc8\xde\
+~\x22\xcb\xcb\xfb\xb2\xb0X\x97\xc5z,\xe5+\xe7\x82\
+W\x95\xa3\xbf\xf1\xff\x81\xb2\xd6b\x8c\x91\x95\x95\x95\xe4\
+\x8b/\xbeh\xae\xae\xae.\x03\xf7\x8e\x03,\x80f\x9c\
+Sd\x85\xd88\xa7hf\x92\xed%t\xee\xee\xd8\xd5\
+\xf9MY_\xdc\xb1[\x9bmy\x00\xdc\xa5{]q\
+\x17\xf8f\x14EC\x8e\xe3\x14_'\x07\xe38\xb6\xed\
+v\xdb4\x1a\x0dS\xaf\xd7\xcd\xcd\x9b7\xef\xcf\xcc\xcc\
+\xac\xde\xbf\x7f\xff3\xe0\xd6q\x80\x1d\xe0\xce\xf2\xbe\x9d\
+^oJ:\xbf!\xed\x1b\xebv\xe7\xab]\xbb\x06\xfc\
+\x0a\x98\xa1{9\xb9\xd3o\xd1\xaf\x03\xb8\xb6\xb6\x96\xcc\
+\xce\xce\xb6>\xfd\xf4\xd3\xc6'\x9f|\xd2\xda\xdd\xdd\xfd\
+7\xe0\xbf{p\x9b\xc7\x01n\x01\xff\xfa\xee\x7fd\x00\
++\xc0\x8d\x9eJ+O[\xec\xa0<\x9c\x04\xd8n\xb7\
+\x8b\x95\x95\x95dff\xa6q\xf5\xea\xd5\xed\x8d\x8d\x8d\
+\x9b\x9dN\xe7:\xf0\x9b\xdeZO\xdc#\x1e\x05l\x02\
+\xd7\x81% \x05Z\xbdv\xaa\x10\xba\x80\x079l\x0b\
++Y\x96\xc9\xfc\xcd\x9b\xad\xf9\xf9\xf9\xf6\xdd\xbbww\
+\xd6\xd6\xd6\x96\x92$\x99\x8b\xe3\xf8\xd7\x22\xb2\x0e\xd4\x81\
+F\xcf\xbd'\xe2(\xa0\xa1{\xf9\xfdu/\xc0\x0b\x11\
+\xc9\xb3\xb4\xfb\xe2\xb1\xb5\xb5\x95mnnf\xeb\xeb\x0f\
+\xb3\x95\xe5\xe5\xf4\xc1\xfa\xfa\x8d\xe5\xe5\xe5\xbb\x8b\x8b\x8b\
+_---\xdd\xef9r\xa7\x07U\x9c4\xb1\xfb\xd4\
+\xa5O\x17\xcd,\xcb\xd6666V\xe7\xe6\xe6\xaa\xab\
+\xab\xab[\xf7\xee\xdd\xdb\xbau\xeb\xd6\xf6\xf5\xeb\xd7\xb7\
+vww\x7fE7\xaf\xbe\xe2\x84\xfc=.\x9e\xc3\x1d\
+(\x00\x1a\x98\x00~\x02\xfc\x98G\xb9{\x83>\xb9u\
+\xda\xf8?\x8d\x91Q\xef\x82F)\xd6\x00\x00\x00%t\
+EXtdate:create\x002\
+023-03-09T07:07:\
+18+00:00+#\x10\x1d\x00\x00\x00%\
+tEXtdate:modify\x00\
+2023-03-09T07:07\
+:18+00:00Z~\xa8\xa1\x00\x00\x00\
+(tEXtdate:timest\
+amp\x002023-03-09T0\
+7:09:01+00:00J\x90\xfc\
+\x80\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x03\xb2\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x01\xa7\
+PLTE\xff\xff\xff\xfe\xfe\xfe\xf6\xf6\xf6\xdc\xde\xe0\
+\xca\xcd\xcf\xc6\xc8\xcb\xce\xcf\xd1\xe5\xe6\xe6\xfc\xfc\xfc\xe7\
+\xe8\xe9\xbc\xc2\xca\xc0\xc8\xd3\xd4\xda\xe3\xd7\xdd\xe6\xc8\xcf\
+\xd9\xae\xb5\xbf\xc2\xc5\xc7\xf6\xf6\xf5\xea\xeb\xeb\xb7\xbf\xcb\
+\xce\xda\xe9\xe6\xef\xfb\xe9\xf2\xfc\xdd\xe7\xf4\xaf\xb9\xc7\xbe\
+\xc1\xc3\xfb\xfb\xfb\xfb\xfb\xfa\xbf\xc5\xcc\xbb\xcb\xe1\xd4\xe2\
+\xf2\xd1\xdd\xe9\xec\xf6\xfd\xee\xf8\xfe\xda\xe6\xef\xd5\xe1\xee\
+\xd3\xe1\xf2\xa8\xb2\xbf\xe8\xe8\xe8\xee\xee\xed\xa1\xaf\xc4\xbc\
+\xd2\xee\xd1\xe0\xef\xc9\xd7\xe3\xec\xf5\xf8\xef\xf7\xfa\xd7\xe2\
+\xea\xd3\xe0\xea\xe3\xef\xfc\xad\xbe\xd4\xcf\xd1\xd4\xe4\xe4\xe3\
+\x98\xab\xc4\xb9\xd3\xf1\xd7\xea\xf6\xd4\xe3\xec\xe7\xf1\xf3\xec\
+\xf3\xf6\xe3\xee\xf4\xdb\xe9\xf1\xe0\xf1\xfc\xa5\xba\xd6\xad\xb2\
+\xb6\xff\xfe\xfe\xe7\xe7\xe6\x9c\xac\xc2\xbd\xd7\xf2\xdc\xee\xf7\
+\xd6\xe4\xec\xe9\xf1\xf4\xed\xf4\xf6\xe4\xee\xf4\xdd\xea\xf1\xdf\
+\xf2\xfd\x9f\xb4\xce\xab\xae\xb0\xbe\xc5\xcf\xc3\xd7\xef\xe1\xf3\
+\xfb\xeb\xf5\xf9\xf1\xf7\xf8\xf4\xf8\xf9\xf3\xf9\xfb\xed\xf7\xfa\
+\xdc\xef\xfb\x91\xa0\xb2\xc9\xca\xc9\xdb\xdc\xdd\xa3\xb4\xc8\xce\
+\xe4\xf6\xf2\xfe\xff\xfa\xff\xff\xfe\xff\xff\xfb\xff\xff\xf1\xfd\
+\xff\xba\xcb\xdc\x98\x9e\xa2\xf4\xf3\xf3\xf9\xf9\xf8\xaf\xb3\xb5\
+\x90\xa0\xb1\xc5\xd8\xe7\xe8\xf4\xfb\xf0\xf9\xfd\xe4\xef\xf6\xb8\
+\xc5\xd1\x94\x9a\x9f\xe2\xe2\xe1\xf9\xf9\xf9\xc4\xc5\xc4\x96\x9d\
+\xa1\x96\xa0\xa8\x9d\xa6\xad\x9d\xa4\xa8\xa2\xa4\xa5\xb7\xb8\xb6\
+\xde\xdf\xde\xf8\xf8\xf7\xe9\xe9\xe8\xe6\xe6\xe5\xf3\xf3\xf2\xe5\
+\xe5\xe4\xd3\xd3\xd3\xaa\xab\xa9\xed\xed\xed\xcc\xcc\xcc\xc5\xc5\
+\xc4\xb6\xb7\xb6\xd5\xd5\xd5\xd2\xd2\xd1\xad\xae\xac\xd9\xda\xd9\
+\xf5\xf5\xf5\xc9\xc9\xc9\xca\xcb\xca\xb3\xb4\xb3\xca\xca\xca\xaf\
+\xb0\xae\xd5\xd6\xd4\xfa\xfa\xfa\xfd\xfd\xfd\x08\xe8\xba\x00\x00\
+\x00\x00\x01bKGD\x00\x88\x05\x1dH\x00\x00\x00\x09\
+pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0kB\
+\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\x142\
+\x1f\xc9N\xa7\x00\x00\x00\xcfIDAT\x18\xd3c`\
+\x80\x01F\x06t\xc0\xc4\xcc\xc2\xca\xc6\xce\x81\x22\xc6\xc9\
+\xc5\xcd\xc3\xcb\xc7/ \x88$&$,\x22*&&\
+&.!)\x05\x17\x93\x96\x91\x95\x93WPTRV\
+QU\x83\x0b\xaakhji\xeb\xe8\xea\xe9\x1b\x18\x1a\
+\xc1\x05\x8dML\xcd\xcc-,\xad\xacml\xed\xeca\
+\x82\x0e\x8eN\xce.\xaen\xee\x1e\x9e^\xde\x08\xf7\xf8\
+\xf8\xfa\xf9\x07\x04\x06\x05\x87\x84\x86!l\x0f\x8f\x88\x8c\
+\x8a\x8e\x89\x8d\x8bOHD\x08&%\xa7\xa4\xa6\xa5g\
+dfe#;>'7/\xbf\xa0\xb0\xa8\xb8\x04\xd5\
+\xaf\xa5e\xe5\x15\x95U\xd5\x0e\x18\x01PS[W\xcf\
+\x81!\xda\xd0\xd8\xd4\x8c!\xd8\xd2\xda\xd6\xc4\x84!Z\
+R\xdb\xde\x86!(\xd5\xd1\xd6\x89\xa9\xb4\xa6\xb9\xab\x1b\
+C\x90\xa1\x07\xe4R\x00\x9f\xbe*\xa3\xfa_u\xfe\x00\
+\x00\x00%tEXtdate:crea\
+te\x002023-03-08T17\
+:27:26+00:00\x9e\x98\xa5\x85\
+\x00\x00\x00%tEXtdate:mod\
+ify\x002023-03-08T1\
+7:27:26+00:00\xef\xc5\x1d\
+9\x00\x00\x00(tEXtdate:ti\
+mestamp\x002023-03-\
+09T06:20:50+00:0\
+0\xdd\xe8\xb2\xde\x00\x00\x00\x00IEND\xaeB`\
+\x82\
+\x00\x00\x15a\
+\x1f\
+\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xed]ms\x1b\xb9\x91\
+\xfe\x9e_\xc1\xd3~\x89*$\xd4\xefhh\xd7I\xe5\
+\xbc\x95T\xaa\x9c\xca\xd5%\xa9\xbbo)Z\x1c\xd9\xba\
+H\xa2\x8a\xa4\xd6\xd6\xfe\xfa\x03\x86/C\x884)\xca\
+\x92\x15o<\x96\x8a\x83\x07\x8d\x97~\xd0\xdd\xc0@\xc4\
+\xf8\x87\xdf}\xbc\xba\xec\xfd\xd4L\xa6\x17\xe3\xebWG\
+\x18\xe0\xa8\xd7\x5c\x9f\x8dG\x17\xd7\xef^\x1d\xfd\xfdo\
+\x7f\x18\xf8Qo:\x1b^\x8f\x86\x97\xe3\xeb\xe6\xd5\xd1\
+\xf5\xf8\xe8w\xbf\xfd\xd5\x0f\xff1\x18\xf4^O\x9a\xe1\
+\xac\x19\xf5>\x5c\xcc\xde\xf7\xfet\xfd\xcf\xe9\xd9\xf0\xa6\
+\xe9\xfd\xfa\xfdlvszr\xf2\xe1\xc3\x87p\xb1\x00\
+\xc3x\xf2\xee\xe4\xb87\x18\xe4\x92\xd3\x9f\xde\xfd\xaa\xd7\
+\xeb\xe5f\xaf\xa7\xa7\xa3\xb3WG\x0b\xf9\x9b\xdb\xc9e\
++7:;i.\x9b\xab\xe6z6=\xc1\x80'G\
+\x9d\xf8Y'~V\x1a\xbf\xf8\xa99\x1b_]\x8d\xaf\
+\xa7m\xc9\xeb\xe9wk\xc2\x93\xd1y\x96\xee:\xf3\x81\
+[!L)\x9d\x00\x9d\x10\x0d\xb2\xc4`zw=\x1b\
+~\x1c\xd4Es\x1f\xb7\x15%\x008\xc9y\x9d\xe4\xc3\
+\xa4N?^f&>\xd9\x996w\xbd\xf5\xcc\xfeM\
+\xfe]\x15X\x02a:\xbe\x9d\x9c5\xe7\xb9d\x13\xae\
+\x9b\xd9\xc9\x8f\x7f\xfbq\x959\x800\x9a\x8d\xd6\xaaY\
+\x92_\xb5[\x8d\xc8\xf5\xf0\xaa\x99\xde\x0c\xcf\x9a\xe9\xc9\
+\x12/\xe5\xf3\x80\x8ef\xef\xb31\x90\xb7\xc9\xf7\xcd\xc5\
+\xbb\xf7\xb3.}1zu\x94\xf5#\x03k\xd3\xcb\x1e\
+\x9c\xae\xcc\x08\x02S\x9b\xb5\xacv=K\xf47\xa3\xe6\
+\xa7\xe6\xb2\x08T\x96WW6\x1a\x9f\xe5\xfe\xe5\xde\xbf\
+\x1b\x0f\xae\x9b\x8f\xb3\x90\x9b\xfc\xb9\xaet|;\xbb\xb9\
+\x9d\xfd#g6\xd7\xf3Z\xb2V\x9d\x8am\xf6\xbc\xdc\
+\x0a\xdch\xe3\xedp\x9a\xdb8y?\xbejNn.\
+\xae\xb3\xae\x93\xf1\xc9p2\xfb0\x9e\xfc\xf3\xe4/\x1f\
+\xef\xde5\xd7'\xd3\xb3\xc9\xc5\xdb\xdbi\xfe\x1c^\x0e\
+\xdf^6u/\x9a\x8f7\xe3\xc9lp~q\xd9\xe4\
+\x0eoT\x96o\xce\xa6'\xe3\xb6\xa6U\x0d'\xc3\xb3\
+Y\xee\xf0\xf4d\xa9\xdc\xcd\xf5\xbb\xad\xb5~\x1c\xddd\
+;@\x87\xad\xb9w\xab\xdc\xdf\xe6\xec\x1fF\xcd\xf94\
+\x7f.\x86\xa8\xa4\xc8\xc0\xdb\xbc\x9c\x9b\xad\xac\x19N\xfe\
+8\x19\x8e.\xb2o\xb5\xd8z\x95g\xe3\xcb\xcb\xe6,\
+\x0f\xf3\xf0\xf2\xc3\xf0nZ\xda[UU\x17e\x91\xd4\
+V\xdaV;\x9d\x8do\x16\xf7\x85\xda\xd9\xdde\xa6\xa0\
+\x80\x83\x5c\xe3xr\xfa\x1d\xb4\xd7\xf7-4\xce\xd6v\
+1\xbb;\xc5\xef\x8f\xba2\xe3\xf3\xf3i\x93\x1b\x86\x16\
+\xebZ-%X\x14\x8fz'\x9f\xd7\x1alk\x0d\xb7\
+\xb7\xc6\xab\xd6~8\xa9\xd5\xdeM\xe3&K\x94\xf4\x00\
+\x96\x8c\x9bt~\xfeX\x96(\xc5\x83X:o\xaf\xc7\
+\xb2D)\xed`\xe9\x89\x8d\x8d\x0c\x8e\x0eT\xec\xf14\
+\x1a}I\x1aM\x9e\xce\xd8\x80\x0e`\xe9l\xd44\x9f\
+\xc1\x12\xc8A,\x8d\xa8\xf1f\xf4h\x96\xc0\xf6\xb1T\
+R\xc3\xcbm,\xfd\xef\x9f\xdf\xfc\xe9\xc7\x7f\xc8?V\
+\x15\x9f}|u$\xde%\xef^\x1d\x0d \x10\xaea\
+\x93WG\xaaa\x1dy\xb7\xa8\xf9o\x93\xe1\xf54\xcf\
+\xbeW\xaf\x8e\xae\x86\xb3\xc9\xc5\xc7_CH1Q\x1f\
+\xf2\xbfrK\xdaG\xe6\x00\x00\xd4'\x08\x1e\x8d\x8e7\
+j\xf9\xfb\xf5\xc5,/\x1cn\xa7\xcd\xe4\xafe\xf2\xfd\
+\xcb\xf5\xdf\xa7M=x\xdb\x06b'\xc5\x91~D\xfe\
+q\x1b}\xe0\xc5\xa4\xf7\xd5\x1eX\x95w7\xc1\xfa\xfb\
+\xd7\xf8z{\x13\xf2\x90&\x0c\x93\xecn\x02\xfe\x90\x14\
+|{\x13\xf6\x90&\xa2\xc6}M\x80\xbf\x06\xd8\xde\x84\
+\xefo\x02\xf7\xd5\x1e\x7f\xff\x89\xda\x13\xacYqe\xb0\
+\xb5\x15\x1f\x1c2\xdb\xd5\xe3\xe9\xfbI\x93W\xbb\xdfU\
+\xf6\xbe\xec@]1\x1b\xa5\x07\xda\xe4~\xfb\xc7\xd6\xf4\
+1 ;'J\xf9~\x80\x10\x14\xa3k<\xae\x9c\x0e\
+#U^\x17m\x95<\xbf\x97}^g\x17\x7f,\xa3\
+\xff\x844\xd5Q\xc4\xf2\xb5\x8b0B\xfe\x17$\xcc=\
+\xb8c\xe4\x8a6$\x0c\x22\x84\xfc)\xf6:\xcd\x9f\x8a\
+=&\x83]\xf37\x03v\xd5`\xd6\x83C\x142\xf6\
+\x15z\x97Q\xd4\xc0l*\xd2\xc9R\x96\xf5\x9081\
+\xa7N6\xa3h!*D=\xd4\x8c\xa77\x93f8\
+\xfas3{?\xce\xdd\xcc\xba\x14U;j\xf2\x02~\
+\xd6L\x1eNI;s \x10D@]\xc0\xdd\xb3S\
+ \x10\x14\xe0\xae\xe7sy\x92\xa4\xd6Q\xd2=\x5c\x85\
+\x9c\x93\x90**\xe7]b\xf6\xd8\xcd\x0f\xe7\xcd\x1f\x87\
+\xb7\xd3\xe9\xc5\xf0\xfa?/oKw\xf7t\xb8\x8aX\
+\xa3\x1f\x9b\x9f.\x86\xb3\xe5\x93\x98\x98\xaa\xa5\xfb\xd3n\
+\xdd\x02\xb3\xaf\xaf\xf6\xe6]zFkJ\xba\xd3\x9a\x12\
+?\xc5\xa8\xd7\x16)!jm\x8d\x12(\xaa\xfbA\xd6\
+\xf8\x9cNf\x02\xb2\x8b\x16\x81C\x9d\xa1(\x8eI\xc2\
+=\xc5\x89C\x02s\xae\x14G\x90@Zi\xad\x01U\
+\x93:= \xe6\x0dp\xb1@rC\x10\xe3>\xb1\xe5\
+\xb0\x17\x84\x0d\xdd\xe2\xf1\xe7\xba jd`\xd9\xe2\x82\
+\x8cb\x107\x5c0*'\xb5m.\xa8\x0a1\xe16\
+\x1f\x14\xe1g\xf1A&\x95\x84\xea\xbb}PD7|\
+\xf0\xd9\xe6C\x16I\xbb\xe6CQ\xadf\xaaH\x01\x08\
+\x1c\xb9\x9a\xaf\xccB\xe96t\xb2\xe7[e\xcf\xb7\xca\
+N2\x08\x0f\xb1-\x08\xeah\xe4\xda\xc7\x10-\xe6\x9f\
+f@}\x0a\x96\xdcHRI@p\x8f\x9e\x9c\xfa\xc9\
+\x02DG\x95\xbe\x86$\x98 \xc9\x03\xd7\xe7\xcf;\x83\
+\x02\xedrn%|\xc2\xf5G\xed\x8a\x03\x04\x0fh\xc8\
+^y\xe4\xc3\x83'\x11\x07\xa6\x88T\xc5\x11\xe5\x10]\
+P\xeb8Bd\xc1\xb4\x0e\x9f\x1a\x03\xc5DL\x99\xe1\
+\x97\x9aU\x88\xc8\x1e\x13>c\x0a\x18\x89d#\x84F\
+u\x93:\x84F\x0e\xc9!b\xa5\xbci\x10q\xc4\x17\
+V\xde_V\xf9]f;+\xb7\x97\xc3Y\xf3\xeb\x14\
+\xfbp\xfc\x92nH\xca\x15\x03\x12C2\x97H5\x03\
+\x16\x90]1V\x0cH\x0a\x84\xb5lF]\x83P\xd4\
+C\x16\xb2\xfby*\x1113\xf5\x92K~\x05yb\
+\x8d\x08II\xad?\x80\x05\xbb\xe9\xb8\x1a\x0b\x8fA\xcc\
+\xc5\xea\x87\x8a,\xcd\x86\xe2\xa4V\xdb#Z\x88e8\
+\xea\x85\x1cX;\x1c\xf6\xa2\xd4\x91}a\xea0\xd9\x9c\
+\xbb\x8a:\xe3\xb9\xb4V\xc4)\x05\xc2\x9afjgo\
+\x22\x11\x8d/J\x1c\xc3\xbf\xc7$\xf9b\xcb>ey\
+2\x86\x8b]\xaa\x9bA,v\xa9\x84$Q\xca\xadS\
+\x14\x16\xc9\xe4\x0b\x82\x01b\x1f\x8d\x83r\x12\xed+\x04\
+P\xd5\xa4\xf5F\xc9\x00-\x98\xb9x\xbd\xad\xeb\x16\x9c\
+,Y\xb5\xfe\xdc&|^\x09W\x0b\xd0=t\x17!\
+\xe1 Q\xa2QU\x9fb\xd0D)a\xd5\xb8{\x00\
+!\x87To\xecHH1\x09Z\xbd\xa8\x8eA\x999\
+\xe2~3\xdb\xcf\xb5$CP+\xac\x0a$\xa7T\xa8\
+\x8el\xa0i\xc1\xba\x83Yy(\xc3\x10\xc9\x9c\xb5\xef\
+1x\x8a\xa0\xfe\xc0\x05\xf2.\xcbAN\x0f1@J\
+\x09\x8e\xf6Yr7$g\x97\x177\xff5\x9c\xbd_\
+ox\x891r7\x94Kp\xcf\xc6\xfbM\x16\xd9\xd8\
+\xdd\xcd\x8fZ\x97\xa7\xb7\x93\xcb_\x7f\xb7\xa9\xd3\xf1\xf7\
+%w\xed\x0f(\xd3\xd9d\xfc\xcf\xe6\xf4z|\xdd,\
+\xee\x07\xed\xb3\xe8)Z\x90\xa4\x00\xe0\xb2\xcc(\xaag\
+\xfdN'\xe3\xdb\xeb\xd1:\xf8\x7f\xe3\x8b\xeb\x1a\xbd\xba\
+\x985\x93\xcb\x8b\xfcq\xba*>\x1aN\xdf\x0f'\x93\
+\xe1]\xd5ZA\xdb\xad\xea,\x19P\x17p\xd7\xc3\xb5\
+\x87\xccL\xd6\x9f{\x83\x14\x03\x13:\xf6)\x86$\x1c\
+\xb5\xf7\xba7@\x88A\x0d\x91V(f\x10c\x88\x09\
+\x81\xfb\x8c\xc1\xd11Z\x06I\x83\xaa\x1a\xf59\x05u\
+\x8aFm\x05\xcc!\x83.}\x89\x19N)q\x01c\
+\x10\x11\xb7\xbez \x22\xc3\x05\x88\xa9\xc4X\xf3\x10c\
+\x12H\xbd7\xebp*\x8eI X\xea\xed`\x04\x08\
+\x1e9\xfa\xbc\xb1$\x80\x05\x94\x80\xe4T@J\xc1\xdd\
+9u`\xa9\xd7$DUb\xed\xe0R\xafA\x88\xc0\
+\x92\xd6\xe1\x81\x96\xeezJ\xbaj\xac\x02\xbb\x8e\xbdY\
+\x87;5^\xb70&\x8f\xa6+\x95)7\x86\x01\x1c\
+b\xd4ur,e\xd0\x01\xb0&2Zp%u\x5c\
+\x91\x9eG\xc2c\x96%Iq9<\x92\xb6\x0d\xe4\xcf\
+\xbd\xf5\xf1\x15\x0e\xe2\x08(\xa5\xda\x04!9\x89\xfa\x0a\
+\xd6\x5c\xad\x04c\xd6\xcc\x8dhH\x18Sn>\x85h\
+\x82\xd1J\xe8\x8d\x1eI\xad\xed\x95\x84\xa4\x94\x15P\x0d\
+\x9a\xdc<C\x14\x145\x17\xea\x1b\x06gf\xa7\x16\x14\
+\x8d\x89\xa5\xb0\x02\x09\x80Z\xb2\x90(\xa0F\x8ek\xf0\
+\xeb\x05\x0c\x80\xb4\xaa\xa2\xb5\xba\x14,\x81\xdb\xb2\xad\x98\
+\x0a(\xc1c\x12\xa9\xbb\x85\x08\x01\x10\xc0\x17\x0ax\xd2\
+\x0c\x02\x073D[\xa9\xca[Y\xf9\xf9\xde\xfe\xcb\xcd\
+<\x88\xc4\x0e\xee\xbe5r=\x1e5\xb3\xbb\x9bf\x9a\
+\xe3\xcd\xf4\xac\xbd\xa6\x8b\x9f\xb5M\x9ae\xd4\xf9\xf7\x9a\
+@R\x0a((\xf1\x89\xe7\x0f\xfe\xe2\xf3\x07\xa5\xc7\xcc\
+\x1f\x87Y\xcbv\x9b\xdb\x8c\xd2\xe8R\xc8\x16\xad\xc3t\
+*\xe3\xae\xd1\xd6\xc34\x81\x06\x02\xb5\xb8\x1e\xa6\x09)\
+K\x02Y\x1d]\x88 \xc3Q|=\x12\x11IpM\
+]\xc8Z`\x06\x89b\x15\xa5;\xb8\x8a\xd2\x1d\xbc\x1e\
+8\x890\xb0J\x8c\xeb!\x960\x06\x06\x06\xae\xa34\
+*\x05\xb4\xe4\xb1\x8e\xd2(\x1e\x10\xfd^\xa0\x17\x09n\
+\x5cM\x09\x1dXE\xe9\x0e\xae\xa3t\x81\x0dY\xba \
+=oK\x92\x0aV3\x98ZP \x93\x9aF4\x09\
+d\x91h=Hc\x94 )\x22wA\xba\x1a\xc7*\
+Jwx\x15\xa61z\xe0\x14!\xad`- \x05\xc8\
+\x89\xd8\x85i\xb4\x18\xb2\xac\xe3\xbdxh\x14\xd8\x22\xa7\
+\xb58\x8d\x9aB\xa2\xe4\xd8\xc5\xe99XJ\xc5:N\
+\x13\xa4\xa0\x91\x00\xeb8\xdd\xc2(\xd1\xd6\xe34A\x0c\
+\x08\xaa\xeba\x9a\x80\x02%\x01\xbf\xd7\xad\x14\x83\x90D\
+\xaa\xc2t\xc2\x00qmB\xe2\x9a\x95.L\x1f\xb2B\
+\xe3\xafo\x85\xf6\xcc\x13H\xe4\xa0\x8a\x84\xb6m\x02\x01\
+\xaf&\x10\xe3\x00\x821\xea\xe7O \x18\x10\x04\xdc\xb5\
+\xbf\x9c*\xda\xe7>3\x89\x92\xac\xdc\xba\x1bs\x09\x19\
+\x09\x83\x88\x11\xf7\x8d\x02)'\xb0\xcf\x9f@H\xe09\
+\x1e@\xea\xc2\xeb\xcf\xeb\x83\x12Y\x8d\x08\xeb}P\x83\
+ @`Zo\xb5H\x80h(k]\xc4J\xf6@\
+\xed77.\xfdA\xda\x9bEy\xb4\xf6\x87u\xb2p\
+\xe4\x155\x03\x83\x8a\x14\x04\x0d\xce\xa0R\x91\x92\xa5B\
+\x12%\xc5\x9d\xfa\x0a?lG\x89\xe3\x93\x8c6a\x00\
+F\xd2J!\xc6\xc0\xd1,z\xa5V\xcc\xa2.\x09\xbc\
+R\x0bQC'\xbbwS\x0f\x021\x13Q\xeacH\
+\xa8\x90\x04\x8f\x9f\xc0J\xf8A\xac\x99\x88=\x09kb\
+\x81\xc8]SE\x9b\xa6\x8c\xaaC\xaci\x0b\x9e\x22\x13\
+\xc6\x8a\xb6N\xf6\xa1\xb4\x19\xb1e\xda\x9e\x86.\xfc\xa2\
+t9\x05\xa0\xe4ZG\x94(A$F\xa3z\xdf\x9b\
+,$6#\xabC\x8a|\xb6\xda\xe4h\x87\xab\xfd\xfc\
+\xb1\xc4\x831\x8b\xd7\xe4`\x0a\x89\x85\xd9*r\x14\x82\
+:\x98T\xb6Td!Y\x8c\xbaCy3\x87/\x12\
+H\xf7\x9br\x9f\x8f\x8f\x0e\xa7I!D\xf2\xe4u\xa4\
+2\x0a\xc0~\x7fs\x1a5$\xe4\x88\x15K\x9d\xe8.\
+\x96\xe4\x81\xd3\x8d\xf0\x174\x91(E\x1f\x94X\x87\x1b\
+\x0dL\x09\x98k\xdd\x91*\xb5;\xa9]js|\x98\
+\xda\x8cO3\xebx \xd6tO!\xe4\x90\x0cA*\
+}\x08\x03\x02\xa6$\x9d\xe8\x1c\x85$\x19}\xec\xfa\xae\
+\x0e\xae\x82\x85\x22\xeaC0L\xac\xe2\x9f\x1fdM\x22\
+=4\xda|\xe3\xf4\xc1\x9c\xc2\x97\xe54\x06\x88\x00)\
+\xd5\x9cj@2w\xff\x85\x90j\xf2%H\xdd\xaf\xde\
+ \x06\xf5\x08\xc9\xbc\x9fo\xd9\xc1D\xe9\xf8\x00\xe2v\
+\xa9_\x0f*DW\xd9\x18TO\xc8|\xc8\xa0\xee\xa4\
+U\xe9_p\xb51\xa0Zm\xaa#\x83{\xa5(\xd3\
+N\x0d\xf1\x81\xde\x08\xf2\x10\x0d\xf7\xee\x15PPM\xe2\
+V\x7fk\x1c8\xa8\x03w\xe0\xc7V4\x02\xf0\xda\x08\
+\x9cm\x13=\xabD\xb7\xdb\xd9\xcdp\xf4\x90\xbf\xba\x07\
+N\xa6\xa4\xdc\xb7\x90\x9cQ\x14\x9b\x01\x173\x8e\x8e\x92\
+\xac$0\xa8\x1a:k\xbf\xfd{\x81\x93!\xf6\x07\x96\
+\x82%7|\x82\xad\x82d\x89\x0e<3p\xb8\xc9\xed\
+\xb2\x07\x90\xfa(\xd0\xe6Y\x12\x13\xb0\xa3\x83O\x08\x81\
+c\xc3\xcd\xc6\x91\xaf\xde\xc9\xfe\xd6\xfc\xe8\xe0\x830\xec\
+q\xd4\xc8FkOt\xda\xcdDl?K\xe2\x87\xb3\
+t\xde^\x8faIa\x1bK\x87\xb7\x06O\xc7\x921\
+\xeee\xc9\x98\x0fg)\x02G\x80G\xb0d\xac\x87\xb3\
+\xf4\xf6\x5c\x1b\x80\xe7cIx?K\xa2\x8f\xb2\xa5\xd1\
+\xe8\xec1,I|\x8c-\x8d\xce\xdf>\xa3-\x99\x1d\
+p\xbe4\x9d\x9f\xe19=\xf2|\xa9\x99\xf9~\x96\x18\
+}\xab\xe5\x06\xdd\xcd\x93zl\xde\xea\xbeQ\xd9\x1dJ\
+\xcfh\xa8\xfe\x00\xedp\xabv\x11\x9enT\xa2\xec\xb7\
+\xdd\xf8\x98\xd9\x02\xd0\xc4\x1fc\xbb\xf1\x11\xb3\x05\xe20\
+=_\x1cd\xe2\xb8\x8f%&N\x87\xb34\xd2\xc6\x1e\
+3[0\x09\xfe\xab\xcd\x16\x94\x12\xecc)\xcb\xd0#\
+X\x8a\xe5\xdf\xe1,QJ\xf24,\xe1\x0e\x96\x0e?\
+xT\x9f\x0b\xc2g:\x9b\xa7\xa6\xa4N{\xce\x05\xe1\
+\x96\xb3y/v\x08\x8d\xf0\xc9\x0e\x16o\x9e\x19\xe3\xa8\
+\xd5\x97o\x9f\xf8\x1c\xdb\x8b~\xb3\x96\x08_\xe2\x9b\xb5\
+\x0c\xf4b\xdf\xac}\xc9\xaf\x8a\x13=\xc9\x19\xd2\xe7:\
+\xd5\xfc\xa2g\x5cH\xbf}\x8b\xfe\x99}=\x1e\xc0\xf0\
+S\x1e~$\xd6\x00\xd1\xd1\xaa\xc3\x8f_\xe2\x1c\xe7\x0b\
+\x9enc\xa2\xf4ox`|\x7f\x0cd\xfa\xe6\xe8\xcf\
+\xfb\xd6\x10\x96\xaf\xff\xad!_\xf8\xd54\xc4\xf6\xf5\xbd\
+\x9a\xe6E\xa3\x1b\xfb\x81\x84\xed?c\xfb\x0b<\xe3\xcc\
+$\xf0K>\xe0\x0d\xb4[yzJ#A\xf6\xf6\x84\
+\xf1\xf3\x1c\x86~\xe1iQ\xe4\xa9\xa9\x8a\x1e\xc5\x7f\xf9\
+\x07\x97I\xecy\x99{\xfes\xcb?\x9c\x94W\xa6\xb6\
+w\xdd\xe9\x8d\xe1U3\xfa\xe9\xa2\xf9\xd0\xbdW\xf5\xed\
+p\xa5\xc4\xcd\xf0]\xd3\xee;e\xba\xce\xdbk\x91\xf1\
+v<\x195\x93e\x96\xb5W\x95\xb5\xd8\x9aZ\xbc\xf7\
+\xb6\x1e\x9dR\xeb*\x1f\xb6\xe7O\xdf\x0fG\xe3\x0fy\
+\xf9s?\xf3\xe7\xf1\xf8\xaa\x94J\x8b\xeb~~\x99\xf0\
+X,$&\xd6\x8d\xcc\xdc\xa0\x041aOr?s\
+4>\xbb-oe\x1e\xdc\xce\x87\xf5\xe6\xe3F\xf1\xdb\
+\xc9\xa4\x08\x5c\x0e\xef\x9a\xacw\xfb\x81E\xa8z\xa7p\
+)W\xbdw\xa7\xc3\x8aQ\x5c\x8c\xa6E\xf7\xebw\xb9\
+\xa3\xb2\x0d\xbf\xbb\x8f7W7\x8b\xac\x8e\x8f\xe9\xfb\xf1\
+\x87\x9cWv\xcc\x86\x97\xd3\xe6~OK\xd6\xe0f|\
+q]\x14\x99Mn\x9b\xf5b\xb7\xb9\xca\x0e\xae\xcb\x95\
+\xbc\xc1\xdb\xb7\xe3\x8f\xdb\xf3?\x5c\x5c\xe7a\x19,\x95\
+\x05\xb4OH,u\xb7D\x9f\x90(\xe3d\xf0\x89\xcc\
+\xcc\x81\xc5\xe5\x8b}+\xad\x96\x06>\xbb+o~\xfe\
+xW\xb0\xcao\x0b@\x1am\x05Vt\xdfG\xefj\
+\xb4\xa2z\xe56\x9b\xde\xd2\xe2W\xcdl8\x1a\xce\x86\
+\x9d\xeb,\x112\xc4e\xef'\xa3\xf3\xd3\xff\xfe\xf1\x0f\
+\xab=\xd4\xb3\xb3\xd3\xff\xc9\xef^\xee\xb6=\x8b\xc0\xf0\
+\xed\xf86\xb3\xd5\x96Y\xc8\x8d\xceNK\xd0\x18\xce~\
+{q\x95\x1d\xa2\xbcq\xfb7\xf9\xc5\xd7\xd9\x89\x97\x19\
+\xb5p!$\x03U\xb5\x93f\xfeF\xedm/!\xcf\
+?W\x17\xa5\xd0\xc9_g\xf9\x10\xc9\x9fJ#\xeb\x9b\
+\xd6'\x8b\x8e.7_;=rb\xa9h\x9bzw\
+o\x0c\xf3\x1b\xa0\x9b\xcbWGo.\xf2K\xb0/\xc7\
+=\xdc4\xce\xf1\xed\xcd\xd5x\xd4,\x5ch\x99?Z\
+\xa4\x0bu\xdd\x89\xb3\x1d\xe7\xcd\xca\x19\xb3\xee\xaa\xac\xa0\
+\x14\xa5\xc5^]w\xd2L%DG\xd2>R@S\
+\x11\xcb\x07\x81\x90(\x888\xb4\x07~Pb\xf4r:\
+\x09\x89\x830J\x01]\x19\x942\x94S\x14<9\x88\
+\xcdSE\xb2\xbd\xd1\x80\x80Ie\xad\x9c\x05\x14K\xe2\
+]\x03\x05s%\xc2\xd2\xacJ\x80\xc4Q\xfb\x88\x1a\x9c\
+\x941\xd7%)$\x05\xe3\x0cz\x10\xd5\xd8\x13i\xef\
+\x9d\x5ch\x9e\xe0\x5c8\xdf\xb8\x07(\x97\xb4*t\xc9\
+\x5cK\x0a\x861\xd9\x023\xf5^,\xf1\x92\x04\xb8\xef\
+\x16@\x11\x14{\x8b\x02\x05+utI)ut%\
+\x04C\x12O\xba\xaa\x96S\xc9c\x91\xd2\xae@\xdb\x9d\
+\xd5'\xea\x224\x17m\xa4%\x1a\xdc\x8d{\x8a\x01\x08\
+\x94\xfa)\x88X\x04\xf5-\xc3\xd1\x1d\x80\xda<\xfe\xb4\
+\xf1J\xb8\xcd\x03\xeamrr{\xd9\x9c6?5\xd9\
+PF\x9f>\x10\xe5\xc1\x089\xba\xa7\xc5\xe5\xfa\x8c\x07\
+\xa3\xea\x13POc\xde\xacL\xdf\xcc\xfb+7\xef\xa5\
+Y@ \x15s4\xf9\xfe\x93\x07\xfe\x94\xe5),>\
+\xbd\x9c\x9d\xef\xf7j\x06\xfc\x1c\x1d\xf1\xe6\xe3}\xed\xde\
+\xde\xcef\x1b\xca\xb5\xfa,\xd0\xba\xa5\x8c\xcf;\xd6\xbd\
+\x9b\xf4\xb8\xf6\xb2H\xa1Xu\x00#-\x96\x84A\x88\
+\x12R\xc1\x90bt\xeeE\x08\xec\x06)\x15L8\x91\
+[\xcfR)F\xbd7\xa5\x84\x17\xc7H\xc1Hs\xda\
+\xa1\x8f\xedZ?\xaeR\xb9\xde\xf2\xc9\x01\x1cM\xbc\x17\
+-\x80!\xc4\x5c!\x04\x173\xab\xbb\xf1\xf3ft\xa0\
+H+p\xf6\xa9\xbf?b\xbf\xb87\x1c\xd7\x83\xb5\x19\
+i0\xd5\x1c\x14\xa76\xc5\xb9\x83\xbcn\x93\x8ch^\
+\xbc\x09U\xd40c\xa5\xf7nY\xc4\x02\x92n\x02o\
+2\x94\x82\xf3\x02*\xe1\xa2\x06\x8b\xa7.\x92\x89\xbd\xf3\
+TD\x0fD`\x95\xaf\xa2.J\x15W\xad;\xf8s\
+\xef\xd3ng(\xc4D\xdf\x7f\xd2\x22\x95\xf0+\xf0\xba\
+]&,\xc2\xc7\xfbM!\x7f y\xf9-\x83s\xfc\
+@\xf7\xdd|u\xe6WD\xd6\xb7\xd9\xf3+\x9c=\xeb\
+\xc8$\x12\x8f\x0eXC\xed\x0es\x9c\xf0+\x0a\xf5\x9b\
+\xb1,\x82 &\x8f\x9f\x0ef\x9c\xf8_nz\xdd\x19\
+\x9b 8\xa3\x09\xd2*F!\x04e\xe46PE\x17\
+\xd4\xe3\x9d\x06\xb0k\xe07\xdb\xa3\xe0\xec\x84\xec\xe5O\
+\xcb\x03(\xd6\xaa)R\xbf\xbb\xab%X\x03\xa2\x83x\
+\x1f\xd5\x83\xb8)\x1f\xef\x18\x1fI`l\xbac\xb2a\
+\xf8%L6_\xffZ\xa1^\xfe\x90w\xe0\xd6\xff\xc0\
+*\xc1'\x05\xee\x16\x02\x9d\x09\xbe{\xe8ljt\xd0\
+;\xd8\x9ee\xd0\xf7/\x1c \xb8Ar\xd3\xee\xbd\xe7\
+\x92b\xb4\xe3z[\x8e%\xd2A/\x13\xaa\x1f}7\
+\x02\x7f\x94\x02W\x86\xe6\x18TA\xa4O\x18\xc4$I\
+;\xb81(\xa8\xc4~\xe4\xe0`ISk(\x16\x10\
+\x93eT\x83\xa0)`\x8b\xb1\xa0\xf6\xa3\x05'G\x8e\
+ma\x01\x06\xeeGo\xa3\xb2a\xa9\xb2\xc4kJ\x01\
+\xa2\x9b\x95\xca\x5c\xfa\xc8\x14\xcc\xc0s\xc2\xdb\x84+z\
+jS\x9d\xe8\x9b6\x9dR J\x18)\xa7\x89d#\
+\xad\x14b\x04\xe7\x85\xfcF\x9a8$J\xc4T\x9a.\
+i\x08\x91\x9d\xb5\xb4&\xc1%\x22\x97\x09\x87T\xc8y\
+\x93\x94\xc3^2C\xb81a\x048h\xca\xb0/\xfd\
+\xb8y\xf2n\x97\x9f\x95\xc2\xdb}j[@&\x22;\
+\xbe\xa7P\x80\x18#\xa4\xe8i~\xbdd\xb4E\x8f\xc7\
+\x87x(3\xcf\x0dz\x97\x9fZzR?\xc5\xfb~\
+J\xd17\xfd\x94P\x02n\xf8)!\x85X\xfbi\x8b\
+\xa5\xdaOKa\xd8\xf0S\x8a\xb1\xf2Sr\xec\xfc\x94\
+\x5c;?-\xa9\xcaOs\xba\xf2K&\xbc\x9f\xae\xfc\
+\x92\x5c\xef\xa7+?-\xe9\xceO\xc9q\xc3OkR\
+j?\xddo\xc2\x9b\x1e\xb9\xdb\xa8\xfdSF\x9d^\xc0\
+[\x0f\xdf%\x22\xfd\xbce\xac\xbd\xc8\xf3%\x84d\xed\
+\xd3\x80\x05T#\x9d?\xd2\x91\x00\x01\x15\x90!r\x94\
+\x9ex\x1fc\x10N\xe8\xde&\xd2B\xfcMI\xc9\xfc\
+\x91n\xf5i\xba\xaa\x8c0$N\x02\xa9o\x16\xd8@\
+\x15{\xe4A\xb4\x08\xf4-\x06(\x17\xf68\x05F\xd2\
+\x8c\xe4Bf\xc5\x02Y\xa5$\x13\x84\xe4\x1as\x05\x1c\
+\x80\x1c\x84{\x88\x108wZ-\x08\xcc{\xa1\x12\xa4\
+@\x18\x030\xb6M+\x07\x02$\xc1V\x0f\x8c\x92\xb4\
+\xa7\x14\x00\xd4c*\x18\x98j\xd4\x0d\x0e\xb6\xed\x5c\x11\
+1\xed_\xd2\x97\xc7\xba\xc7m1*\xc8\xe6\x94\xf6\x95\
+\x99\x0fF\xf4<z\x05\x84\xa4\xea-\x98XI\x8bI\
+q\x84\xd8BJ\xeeT\x8c(\xf8j\xc4T\xac\x14-\
+\xa0\xbaS* C\xd2\x98\x0a\xc4\x9a\xc0\x0b\xa4n\xc9\
+\x0aB\xe8\xf3\x92\x89\xd2\xaa$\xa1BjAvvj\
+!\x22\xe6\x16RBOuQ\x83\xc4\x8b\xa2\xa8$\xd4\
+\xc7|C1Q[\x14Rt+\x10\x83E\x98CF\
+Z\x10I\xd4j:\xc7@\xbc\x80\x0aD\x84sH\x84\
+Z\x08\x99u\xbd\xa0\x12\x0b/\x0b\x92\xc7\x16\x8c\x08\xa4\
+\xa5k%\x91\x901\xce\x13\xa9cTbH\xf9\xc2\x16\
+\xa4\x18-.%8:\xd22!\x85\xd0\xb9G\x12T\
+I\xe1\x10\x85\xd0\xe7\xc9\xb9\x87\xd4`.^\xc0\xb6\x0f\
+\xc9\x17\xbdLE\xabD\xad\xb3D\x92\x98Q\xa5 \x0c\
+:\x1fJG\x11\xeb\x5c\xaf(\xc5\xf36\x11R \x9f\
+\xbb(\xc8\x82\xae\xa4!\x1aF\xec[1\x1b\xf1Lt\
+\x5c2h\x12\xc4T\xb2\xee\x06\x8bH`\x01\x5c\xdb!\
+*b\x86\xa6T\xc4\x8c\x13\x99\x96\xcaX\x91\xdb\xed.\
+\xd6$\x1eK\xa3\xcb\xb0`1\x99/;\x22`\xd4\xa2\
+\x11\x17C^\xd0H\x16\xb1\x95\x05\xf6dmP\x01\x8d\
+\x9c\x0a\xa6`\x09\xe2z\xa0\xe1\xb4\xa0\xb3\xc5d\x89Z\
+\x9c\x13\x18SHm3,K\xa3\xac\x83\xd2r\xe8\x95\
+\x03\xc7\xa4\xad\xcb\x08\x92Q\xcb)\xdb\x22\xde\xa2Fe\
+\xed).J\xdar\x1c_\xb7\x98\xa6\x14\xe7 \x80q\
+\x0b\xc5Hs9Rl\x91\xca\x1b\x0b\xc0D\xcas\x90\
+1\xc6\x02!;y\x0b\x01\xb1\xc5m\x8e\x5c\xde\x92Y\
+b:/=\xe5\xcd2Y\xcc\x7f\x99\x94*iZJ\
+/\x93!\x97\xd2J\xa45\xc5O&\x917\x92U\xe3\
+]r\xeb\xae\x9b\xed\x89\xd0\xd3\xf6:\xab\xae\xe9\xee\x9d\
+\xb8\xc7\xd7\xb5\xed\x81]\xbe\x05\xcfo\xc1\xf3[\xf0\xfc\
+\x16<_<x>xYJ\xf6U\xed\xb4\xb4On\
+?\xe4\xaf\xa5\xe5\x8f\xff\x07K$K_f\x83\x00\x00\
+\
+\x00\x00\x1b\x90\
+\x1f\
+\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xed=io\x1b9\x96\
+\x9f'\xbfB\xeb\xfe\xb2\xc1J\x14\xef\xc3\x1dg\xe0\xb3\
+\xd1@\x0ff\xb0\x99c\xbf\x05\x8aTv4-K\x86\
+$'v\xff\xfa}\x8fu\x97\x8aeQ)w\xecA\
++\x08,\xb1\xc8G\xf2\xdd\x8f|E\xbe\xfb\xf3\xc3\xed\
+b\xf0%Yo\xe6\xab\xe5\xc9\x11#\xf4h\x90,\xa7\
+\xab\xd9|ysr\xf4\x8f\xbf_\x8d\xec\xd1`\xb3\x9d\
+,g\x93\xc5j\x99\x9c\x1c-WG\x7f~\xff\xe6\xdd\
+\x7f\x8dF\x83\x9f\x92e\xb2\x9elW\xeb\xe3\xc1\xe9l\
+\xf5)\x19\xfc\xbcX\xdco\xb6\xbeh\xc08\xa1\x84\x0e\
+\x07\x1f\xfe\xf9\xd3\xe0\xf2\xe1n\xb5\xde\x0e\xfe\xb6\xb8\xbf\
+\x19\xfd\xbc\x1c\x10_\xf8\xcf\xb4\xcf\xe3\x81&\x94\x0e\xce\
+\xee\xe7\x8b\xd9@1)\xed\xdb\xc1`4z\xff\xe6\xcd\
+\xbb\xcd\x97\x9b7\x83\xc1\x00\x06\xb8\xdc\x1c/7'G\
+\x9f\xb7\xdb\xbb\xe3\xf1x\xb9!\x13\xec\x8fLW\xb7\xe3\
+\x0f\x93/\xc9\xd5j\xfd\xaf\xe4\xd3\x18\x06?>*[\
+\xcc\xa6E\x8b\xbb\xfb\xf5\x82\xac\xd67\xe3\xd9t\x9c,\
+\x92\xdbd\xb9\xdd@uV\xad>-\xabO\xd7\xc9d\
+;\xff\x92\x00\xfc\xdb\x15\xf4\x86-\x97\x9b\x1f*\x95\xd7\
+\xb3\xeb\xa2\xf6\xd7\xaf_\xc9W\xe1+1\xe7\xdc\x98\xf2\
+1\xe7#\xa81\xda<.\xb7\x93\x87Q\xbd)\xcc\xaa\
+\xad)\xa7\x94\x8e\xe1YYs\xbfZ\xc7\x0f\x8b\xf9\xf2\
+\xd7\xe0`\xfc\xd3j\xef@\xd9;\xf8_4\xc8\x0b\xc8\
+fu\xbf\x9e&\xd7\xd02!\xcbd;\xbe\xf8\xfbE\
+\xf1pD\xc9l;\xab\x80\x01\xa0\x9b\xe9\xe4.\xa9\xf5\
+\x9b\x17\xa6\xf8\x9a\xdc&\x9b\xbb\xc94\xd9\x8c\xf3r\xdf\
+\xbe\xc6jX0\x9f\x9d\x1c\xfd\x02\xc8^,V\x1f\x99\
+/\xf9:\x9fm?C\x05n\xfd\xcf\xcf\xc9\xfc\xe6\xf3\
+\xb6\xfc\xfde\x9e|=[=\x9c\x1c\xd1\x01\x056c\
+\xf0?\x85\xb4\x02\xd8\xd7\x8b\xd5\xd7\x93\xa3/\xf3\xcd\xfc\
+\xd3\x22\xed0YN\xe0\xeb\xe8\xd3d\xfa\xeb\xcdzu\
+\xbf\x84\xee\x96\xc9\xd7A\xb31\xcc\xeb\xd8\x8f\xf7\xe4\xe8\
+n\x9dl\x92\xf5\x97\xb4y\x8e\x82\xe3b\xe0\x94\x08\x9e\
+\x8e<\x9bW\xf5\x91\xb4\x84\x0d\xd6\xcehZo=[\
+M\x11#'G\xb39\x08\xd2\xcdh\xbe\x04L\xdf\x02\
+\x97\xad\x96\x04\xe8\xf9[\x1d\xe0\xea~{w\xbf\xfd\x98\
+<l\x93e\x0a\x19PZ\xc1\xaf\x7f\xec\xdb\x91\x1ar\
+7\xdb\xc7\x05\xf4\x91#\xe2\xb8\x8a\x87\x02x\xe2\xa5q\
+t=_$\xe9\x90\xc6\x9fW\xb7\xc9x6\xf92\x9f\
+\x8dW\x0f\x8f7\xc9r\xbc]\xdf/\x7f\x1dC\xfd\x05\
+\x22o\x0c\x0a`{\xbf\x19\xb7\x8c\xfdny\xd3\x0a\xfd\
+av\x07<&\x041\xaa\xf5\xf9c\xe5\xf9\xfbw\xb3\
+\xe4z\x93\xf3\x02~\xe7\x8ck(\x06\xdeM&\xeb\x9f\
+\xd6\x93\xd9\x1c$\x16+T\x00MW\x8bE2\x05\xbe\
+\x98,\xbeN\x1e7G\xd9c\x80Po&\xac\xc5.\
+6\xdb\xd5]Z\xa5@\x13\x16\x8d\x00\x0c(\xb0\x1f(\
+\x15L'?\xfa\xa2\x15\xb0\xc1|\xfbx\xcc~<\xca\
+[\xac\xae\xaf7\x09\xf4E\x8b\x12\xec\x08k\x03xs\
+4\x18\x1f\xd4\x01\xdd\xed\x80\xb5u\xe0|\x07\xe3\xfa\xbc\
+zC\x8f\x11\xcf\x8a\x1e \xf0\xf3\xa2\xc7\x98gD\x8f\
+4\x92=#z\x00\xbcxV\xf4@\x07*\x02=\xbb\
+\xf3\xa7\xbc9\xff\x024\xe5\xa2c\x8a-\xb3\x98\xc8)\
+Md\x03M;\xd3\xaf\xc0W\x1d3\xdc\x13>\xfd\xb6\
+\xd9\xb3\xa6p\x94\xa3c\xbb\xa3\xeb\x9c\xfd\xb5\xff\xec0\
+Ix\xfa\xcc\xc5M\xbf\xad\x83o\x9a>\xb7\xda\x1e=\
+!8\xed\x83\xe7\xd6\xd08\xecP:\x95\xd3\xe9\xbe\xbc\
+\x01\xf0y\x0f\xc8\xf9\xf1[\xb0\xa3\x99\xc8\xb1s\x93\x15\
+\xfdc9\xdf\x82\xdfv\x0f\xee\xc3\x07\xf4%\xfe\xba\xfc\
+\xc7&\xc9\xea<\xb0\x93\xa3\x91\x95\xe0\xecrIs\xc1\
+y\xc4Ba\x05q\xce\xe4\xc3\x7f\xe0P\x86\xee3\xe5\
+9\x03<\xf2\xddjy\x9f\x7f_O\x96\x1b4\xc8'\
+G`\x93\xd7\xf3\x87\xff\xa6C6\x1c\xb1!\x1d\x8e\x84\
+\x83\x16V\x0d\x99\xa4\x1e\xdc\xdb\x06\xb9\xf6\xa4\x8ceI\
+\x932?\xeeh\x1a\x0d\x9d\xec\xd0k/\xd2P*\xa7\
+\xce\xee\xd3\x01\x7fFM\xaf\x9c\xa3Ok\xfa\x80\x10?\
+\xad\xe9\x01<\xdfG\xd3\x07\xf8\xf4iM\x0f\x1d\xc8o\
+ag\xe54\xfd\x83\x9d+\xe8\xd4\xbb\xf4\xda\x93\x9d\xc1\
+'a\xfbt\xf0\x8d\xf4\x02\xfb\xf0\x9c\xfc\xcaw\xd5o\
+\xbf\xfc\xcaE\xfb\xfc!2\xd9&\xeb\xbd\xc58\xad\xae\
+\x9c\xc2\x90\xe1:\xf9ir\xbf\xd9\xcc'\xcb\xb3\xc5\xfd\
+\xba\xe8\xb3\x1b\x0aNlv\x91|\x99\xfb\x98\x06\xc38\
+\xa5$\x03\xc7R\xd4F]\x87\x0d\x1d\xdat\xfc\xe9\x00\
+\x0e\x1c\xb7\xa6F\xf65nF\x1c\xe8H\xcal\xc7\xb0\
+\xa1?]\x1f\xf6t1\xbf\xfb\xdbd\xfb9m\x93\xff\
+\xea\x92}\x84\x9a\xd7\xd3\xd4\xa2\xda\xbc+\x00\x0c\x06\xf0\
+\xf4/\x83\x11\x13\x8aX\xc9\x87N\x10\x01\xce+\x95\x83\
+\xd3\x81\xa0D;\xca\xb9\x1b\x16\xdf0\x0c\x87\x7f#\xe6\
+\x0c\xe1\x9cK\xbdw\x83\x1d\xf8\xbf\x95h\xc9\xc3\xee\xf5\
+#\x04\x99y\xcb\x96\xc7\x0f\x9d\x8f\xa7\xd0\xba\x00\xdf\xf2\
+\xf8\x015\x9b\xd6D\x09\xce\xeb\xacr\x97b\x867\xf5\
+D)\x82\x80\xfd\xc5\xf1\xfdz\xf1\xdf? \xdfO\x16\
+\x85WA\xad|\xeb\x9fV\xe4u\xb3]\xaf~M\x8e\
+\x97\xabe\x92}\x1f\xf9E\x92\xe2\xd1\x08e\x088\xe5\
+\xd8\xafpT\x0b\xff\xbd\x9a/\xeb\xa5\xb7s \xfbb\
+\x0e\x7f\x8ee^6\x9bl>O\xd6\xeb\xc9c\xad\x0f\
+,M\x05\xf8\x98\x11\x0a\xf2\xe0\x9c\xb7\xd3\xfeam*\
+\x001\x9dL\xc9\xd4ow\x11\xb6}\xc4\x15\xa3\xc9z\
+\x9a2`\xceB\xef\xdf\xd5Q\xb0\x97\x04\xf9\x85\xad\xe3\
+\xcf\xeb\xe4\xfa\xe4\xe8\x87\x16K^r\xea.~#\xcc\
+\x5c\xd8,\xa1E\x82\x7fD+c\x99\x91\xf0\x9ds\xa2\
+4w\xd4\xe6Soe\x10d*\xad\x88\x13\x96\xd3\x9c\
+?\xae\xdb*^\xb7T\x5c\x03\xbf2\xc2R~E$\
+\xf6\x8b\xb9\xaa\xc3\xbf\x839\x11\xe7 t\x18t\x98\xa6\
+QZ\x9a\x06\x06G\xc6\x10\xca\xc0z\xb2\xff\x00TV\
+\xdc\xa9VT\xf2\x08T\x06'\x0f\xfe\x177J\x1a\xf5\
+\xd4\xe4\x9b\x15\x9f}\xf2\x1d\x12(\xd0\xf1\xf9C\x02\xdb\
+1W\x09*[1\xa7\xfb`\x1b\xc64\xd1\x9cS\xf7\
+\xd4\xe4\x9b\x15w&\x7f@\xe4\xb5?\xdb4\x16*\x9d\
+1\xfd\xb0\x0d\xd1V\x09\xd03\x9e}\xca_B\x09b\
+\xb5`\x1c\xa2\x0d\x06\xb3\xb4\xca\x8a\x9c\x8f|\xb4\xc3\x8c\
+&\x16]\x94J\xb4c8\x11\x8eK\x91c-\x8dv\
+\xa0\x22\x93\x92\xe6\xe3\xc5x\xc7\x81\xb7\x22\x00\x9f\xec\x19\
+\xf0\xe6\x97\xa9\xc2x\xb3\xfd\xa8\xed.\xbc\x01\x8fp\x8b\
+x3D\x0a\xc9\xeahS\x96\x18m\xabXcL\xa2\
+\xa0\x16>W\x8a5\x0b05\x155\xacq\xc287\
+N=\x0b\xb7\x15\x0bl\xadX\x13/\x8f\xdb@\x17i\
+I\x95\x93Mn\xabU\x84BF\x1d\xa1N)\xfe,\
+\xdc\xc6Y\x17\xde\xfa\x92Rc\xb9\x85`%\xc3[\xfe\
+Kh\x01\xae\xa8\x848\x01\xf0\x86\x81\x9ai0\x1b\xee\
+\xc1I\xa9*X\xd3\x96P\xad\x85\xabs[\xb3\x22b\
+\x0d\xd8\xd7R\xa9\xd3\xb8\xee\xa0pN\x1a\xe0\xdf\xde\xc2\
+P\xb4\x06T\xaa24\xd9\x8d\xe7\xa0CW\x8f\xe7z\
+\xa66n\x80\x84\xa8\x0d\x0fM\x9dgA\xcb\xe9\xc2V\
+zQ\xe7\x8aP\xa5\x85\xaa\xb3\xac$\xa0\x96\x0ag\x13\
+\x91\xaf\x0d\x11V\x99\xa2b7\xfb\xf4oy\xfdFX\
+\xd0\xf2Z\x93\x13\x01\xad*h4M\x9d(\xdc)4\
+\xaa\xc2\x11\xa1\x99\x13U_\xacY\xef\xba\xa5\xde\x1a\xf9\
+\x8eH\xcd\xa9\x89\xf1\x09\xc3\x92#\xc0a\xa1\x9a3\x95\
+I\x0e\xe3B+\x09\xee53 F\x9aY7\x1c\x81\
+\xfaU`\xec\x1d\x7f{8\xab\x0bkY\x7f\xac.\x95\
+\x95 \xe2]\xac\x0e\x1d\x8a:\xab\xf7\xcd\x01Vup\
+\x80\xe3\x15\x0e\xd0\x10\x10\x839\xe7\xb2\xc2\x01\x10\xbeX\
+`\x22&+\x1c\xd0\xacw\xddR\x0f9\x00#\x1f\xb0\
+\x88M\xe6\xdf\xa5.'\xd6P\xf0\xd5R\xea\x82\xf7!\
+\x1c\x84R\xde\xf6\x0ap:\x14\xc5\xaf\x94\x11%]a\
+\x86\x9f\x16\xa5\x03\x19\xc0\xf5\xb6tEAo8m\x8d\
+\xea\xa4\xbf\xd3=\xac\xb8\x81\xbf\xa6\xfa\x1b6c`\xcf\
+y\xe7\xb0\x1d7\xf5a\x8f1\xc7\xe1\xfd\xbbb]\x04\
+\xd30f\x98\xd6\xf2\xa6:\x82\xaf\xf3\xe5l\xf5u\x94\
+\xa7\xbf\x98f\xd6I\xf6<\xcb\x961\xd2\xd6\x1f\xdfM\
+n\x92\xcd\xe7\xc9\x0c\xf3a\xf8\xee\xa3l\xf9\x06\xa7\x90\
+\xba\x877\xf7\xf3Y\xb2]-\x12`9\xcc\x82a\xc5\
+\x835\xf4P-\x87\x8f\x7f\xb0\xfa\xf4o\xc0P[\x93\
+O\xab\xf5,Y\x17]\xb0Z\xb1_8\x06\xe1\xd3\xfe\
+\xe3\x1f\xe0\x80\xf2\xe2tA9\x1d0\xe0\xf2\xd3d\xd3\
+\xc8_\xf9m\xb5\x02q\xe0`\xbd\xd1T7f\x8d\xb2\
+)5\xe1\x8ae\xfe[\xf9$\xd3\xbdVim[1\
+\x09MM\xb3U\xf6\x08\xdb*\xd9\x00x\xbf^\x83P\
+\x8d\x16\x93\xc7d\xdd\xcca\xaa$-\xdd=\xf8\x922\
+\xab)+\xd8|^}E\xdc\x9e\x1cm\xd7\xf7\x8d9\
+b\xf9\xe8n5_\xa2\xbc\xee>\xceFu;y\x98\
+\xdf\xce\x7fKf\xb8\x80\xff\xfe]\xadu\xc9\xf5?\xc1\
+\xaf\xab\xf5\xea\xf6o\xeb\x04\x10\xf6!\xd9n\xe7\xcb\x9b\
+\x9c\xa1\xd3%\xb9\x87Gl\x92\x15\xad\xd6\xf3\x9b\xf9\x12\
+\xf3\xab\xb2\x81\xe6E\x8f\xd5\x22\xcc\x95\x028\x88\xeef\
+\xd9c\xb5,'+rMF\xd6\xc1 \xb9\xbdk-\
+\xaf0%/\xabVJeY\x9au\x06}\xa5\xc2\xb5\
++M\xef\xdf\xbc\xbbM\xb6\x93\xd9d;\xc9\xb9)\xff\
+-\x8e\xde\xbf\xf9\xd3;\xcc\x87\xbb\x86j\x7fJ\xbf.\
+\xe6\xd3d\x03\xb0\xaa\xbf?\xf8\xac\xb83\x5c?\xf5\x19\
+J8_?\x06\xe4\x88\x06\xa5i\x9d\xce,\xe3y\x90\
+\x90\xdb_\x92\xeb\xed_=\x123r\xfan\xde\x8d\xf3\
+\x11\xbc[\xcf\xae\x8f\xff\xf7\xe2\xea\xfd\xbb\xe9\xf4\xf8_\
+\xab\xf5\xaf\x99e\x80\xd2\xc9\xa7\xd5=\x80\xc7,\xa9\xe9\
+q\x9ax\xf5~~\x0b\x02\x83y\x80\xff\xf3p\xbb\x00\
+uR<\xc0:H\xd2\x5c\x1b!\x80u\x92\xa6\xf6\xb5\
+fC\xce\xa6\xb7sl0\xfe\xb0\x9d/\x16?#\x5c\
+\x8fN\x843\xdf.\x92\xf7\x1ez\xfe5\x1b\xdc\x8b\x19\
+e9\xa0q\x81\xc0qNc\xc0ji\x1f\x90\xf8\xa7\
+?\x7f\xfcp\xbd\x9aN\xb6\xf7\xeb\xc9\xc7\x94\x03v\x8d\
+@]\xbf\x8bB\x0f5vQ<\x01\x0b\x8d\xde\xd9\x13\
+\xdf\xab'\x1e\xe8\xc9E\xf4\xc4\xf6\xea\x89\x05zb\xbc\
+\xd9U\xbe\xa9\xd3\xb2\x80\x9f\x82\xf5{\x1a\xe5N\xc6n\
+p\xf0\xeaw20\x9e{[ \x0c\x11\x22M\xb6D\
+\xd6\xb5\x0f\xd4\xb1\x85\xd4\xb1\xf9\xd4\xb1mU\xdbS\x1b\
+\xb4n\x91\x0d\x9a[dOn\xaa\xb5\xb5\xd8\xe9!\xdd\
+U\xdb\xee8\xa2#\x08&\xa8\x15\x8e\xc9<B\xcf~\
+\x8d\xa0C\xdc\x9e\xe7j8r\x8e@\xa8\xeex\xb6\xb4\
+\x81;>#D\x22\xe6\x91/S\x19\x8ee\xb2\xddM\
+\x89W\xcfd\xe5vY\xced\xdcj\xf9\x07\x93y&\
+\x83\xb0\x80)\x96\xee\x15U~\x02\x971\xe248\xd7\
+C\xce,\x11T*\xbd\xc3d\x1e\xc7\xd5\x9d\xea\xb75\
+\x96{\xb2\xbf\xd6\xeeF.\xeb.\xdbe\xf8\xdeX\xeb\
+ \xe8>l\xd0\xc1<-<\x973\xa8RY\xfa\xe3\
+\xd3\xf2\xc9_\x97|\x1e\x05\x94Q\x95q\xbaY\xec\x0f\
+\xd6\xfa&\xd6\x02mh\xf7d\xad\xff\xa4L\x89'X\
+\xee`\xf3\xa8_\x17\x8e\xeaZ\xc6Q\xfd\x87\x19\xf4\xba\
+C9\xad\x9c\xe1\x99\xee\xc8\x7f\x8d8UDX\x89k\
+\xba\xd6\x11.\x0cG_\xab\xca8%.\x19-\xa7\xa7\
+!\x96v\x8aI3d\x94\x18'\x84\xb4\x83\xf3\x81\x10\
+\xe0\xae\x19\xdcK/K\x19\xf4\xc6\x94\xe5|(81\
+\x1c\x1e\x8bJ\x99r\xc4\x18\xae\xb1qY\xa89\xe1\x8e\
+\x1a\xa1\xb1L\x1b\xa5\xb4\x1aj\x89[8Rk\xfff\
+\xa0\xe4\xd2\x8a\xa16\x849\xab\x8c\xc3\xd6X\xaa\xa8\xf2\
+\xa5\x9c)%\x9d/\x13\xceZ\xe5\xcb\x84\xe4\x86\xd7[\
+s\xc5\xb8T\xd0\x9as\x22$\xa3P\xd1\x12\xeb\xac\x84\
+\x01\xc1\x5c\x04\xb5\xa0a\x87\x1a\xc6\xc8\xb5\x92f %\
+\xd0@\x09%+e\xe7\x03\xf8N9\xd4\xe5\x95R\xc7\
+\x884\xd6\x81z\xd6\x8ah\xcd\x04\x87YS\xf0f\x0d\
+ h\xa8\xa0\x17\x8e~-\x0e\x9cZ\xd0\xde\x16\xfa\x01\
+\xfcp&\xac\xe0\x03\x8b\xac\xa0\xb9q9\x1e\x15o\xc5\
+\xf8o\x83\xaa\x10\x17\xe9\x930\x05\xce\xa0\xc6\x8f\xa1\xd0\
+\x0aw\xd9^\x99Xw\xfb]0eFA\xef\xdb,\
+\xa5#\xff\xc5\x04\x90\x86\x19\xc7\x86\x0aX\xcar!D\
+\xc52\xfa\x8d=\xae\x06 G\x12\x9c@\xa3@\xe0\x80\
+D~A\xb6\xfc\x92\x89\x9bt\xc4\xaf\xb0\x0f\xf7\xaa\xbd\
+\x0b\xba\xc5\x22\xe6\x8dvuM\xfb\x13\xbf\x04\x99\x03\xdc\
+\xd5k\xf5\xdd\xa2\x5cn1\x99\xb8\x9dK2\xfe\xf0\xc4\
+h\xe7\x856\x8b`\x8d{[\xe7\x0f\x10\x0am@J\
+\x99xVF\xe92\x83\xb8\x97\xb4\x97\x19,\xb5\x197\
+\x1d\x8eV\xeb\x96\xfb\x08\xd3Y\x94D\x97\x8bQ\x8d9\
+\x09\xa2\xe1gA\xdc\x8a\xf8\x1f\x82\x1b\x86\xc4?\xcf\xcb\
+\xb42X\x06|\xa8\x95N\x0b\x81\xb8X\xe4\x94\x01\x05\
+W)r\xf8'o\x89%\x8c)\x02\x1a\x95c%\x8e\
+\x12\x02Z\x8aqK<S\xc1@\x14n\x10\xf1J\x19\
+\xb4\xb5\x00\xd8rJY\xa5\xa6\xc1\xcd\x7fkP\x7f\x94\
+\x10\xb3\xc2j\xbfe\x91\x1f\x9du\x22+S0\xb5l\
+\x16R\xd6\xebe\x935\x1a\xb4,\xb0\xa0\x1eb\x82\x86\
+\x94\x02\xfb\x05\xb3\xc2$\xd8\x0e\x10FnZFm\x8a\
+Q3N\x89c\x82\xd5j\x82\x1a\xb6\x5c\xd3\x02\xa4\xd4\
+-\x88\xae\xebA\xcf\xd5?\x80\x02\xb8N&\xafJ\xc9\
+\xb506\xa6\xa5\x87\xecq\xb6\xf9Q\xd8c\xe02\xc1\
+\xd0:X\x0ev+\xb7\xc7\xcc\x18\xa3+\xa5\xb8Yl\
+\xb5\x04z\xa0=\x06\xf8\x5cW\xca\xc0\x1e[p)\x9d\
+K\x0drV\x0a\xd0\xa9\x82\x8fK\xcb\x04G\xabHA\
+\xa3\x1aAM\xbd\x9e\x92\x12\xbaI[;\xc7\x1c\x95C\
+\x81;\xca@:\x8e\xe31B*\x07v\x8d\x83\xb1\x07\
+b\xca\xea\xc8\xd32\xcb\xa0\xb5\xc5\xc41+\x9c\xa9\x94\
+\xa2\xa5\xa4\x9c\x0a\x8d\x10\xa9\x00w\x80{\x9b\x8a\x09T\
+\xde\xa4\xc2d\xa8\xf7$\xd0\xd0R\xa3EZ*\x8cH\
++J0\x01iM\xad\xb8Ui\x198\x0d\xa6\xd1\x1a\
+\x18_8\x96\x1ad\x9c\x99B\x83\xcc\x80\xdb\x01b\x86\
+H\xa3[Q\xde\xc2\x88\xed\xe6W\xbcb\xf3[\xee\x94\
+\xacf\x09\xaa\xd9\xcd\xc9\xd1t\x03\xff\xa6{\xad\xebb\
+\x22^s\xf6\x84\xbe\xec\xf9\xffX\xf1\xad^\xb1\xd01\
+\x02\x22%\x84\xab\x8e<-S\xa6.tE\xe9\xeb\x11\
+\xba\xca{\x13>\x01\xebM\xf1i\xc9\xf3\xc0\xca\xff\xf7\
+\x97_~\xbe\xf8\x080>\xa6\xeb~\x98n!A\xd9\
+H\x9d\xbd\x90\x86\xfe\x96R\x10\xa0(\x90X_\xb2>\
+9\x02?PC\xb4\x95e\x83=\x9dj\xd3\x95\xc7\xee\
+R//sZ\xd3_\x98\x98\x06a\x9d\x81HH&\
+#54\x04p\xe5\xa8\xc5\xb7\xd5\xde\xfc\xa9x\x9d\xaa\
+\xfe\xe6U\xfb{j\x8e\x9f\x17\x98\xf1o@\xa6\xefr\
+\xb7@aa(\xfa2\x0bkK(&\xdb\xe8\xa9\xa3\
+5CxK\xfeX\x15\xd9\xe2\xe3\x9ex\xc3\x840\x89\
+\xc9\xd3\x5ce\xc8\xf7\xf9\xb2\x06\xa22f\xb3\xf8\x1c\x93\
+\xc1$\xc4J\x92\xb1\x8c\x1e\x98\x09V\xd6\x89B\xd8\x85\
+\xff\xd4\xa7jX\x00a s!8W\xfe\xd3\x80#\
+\x82p\x1c\xc8p\x08\xd4\x99\xff4@\xa9\x0c\xfb\x8d\xd7\
+\xde\x9e\xc4\xbc\x8c\xc1\xbc\xcf)eR\x14\x88g\x8a\x13\
+gt\x96K\xf8\xe0\xb3\x1d9\x087/\xf1^\xaf\xd2\
+\xc5\xf7\x86\x1a6\x1ce\x7f\xeb\x7f\xc0\xb9\xb3\xa0\x5c\x86\
+x\x10\x0apZ$\xd3\xb7\xd1\xd0\xd2~hhyo\
+4\xb4\xf2@\x1a\xaa(\xe9\xc1\xc5\x13WH\x06J\x0f\
+\x98\x0f\x01\xca\xcc\x94\xd2S\xaf\x83y\x94\x9aP\x5c\xba\
+0q\x98o\x9d\xa6\x0bb\x8cK\xaeC\xa0.\xfd\xa7\
+\x0e\xca\x85\x05Q@h\x12\xc3\x0f.,\x8b\x9aeI\
+:{\xb2\x84;T\x16u\x0c\x1dG\x12|\x06)i\
+\x95\x90\xb8@\xc0\xf2\xb7J|N,PR\x0a\xa5(\
++\xf5`\xad\xd2\x93\xf2\xd8.\x96L\x80\x15\xa6\x16\xac\
+:\xd8[+\xe4\xb7\x0b\xa4\xa1\xfd\x08\xa4\xa1\xbd\x09\xa4\
+\xa1\x87\x0a\xa4\x89R\xaa\xa0\xda\xa8\x14%\x199sD\
+qp\xecJ\xa5\x8a)f\x8a\xcbR\x1e\xebu\xba^\
+s\x1f\x01\xb5\xfc&\xa7\xd6C\xcet\x1f\x94\x0a\x0bp\
+\x14\xa5XXzc)\xc5\xc4\x81\x94\xb2Q\x22\xc7-\
+\xb8\xd7Y\x86\xad7\x7f\x94\xe3{K\xa5\xdb1\xc2%\
+\x0a\xc3mEs\xd6\xea\x1c*n\xe0\xce8)\xf9\x90\
+Kb\x98\xebC\xdc\x98\xed\x87\x88<,\xb6\xb1D\xe4\
+\xfc@\x22\xbao\xf4\x1e\x1d\xbe\xec\xc7\xbb\xbd\xc7\xa2\xce\
+7c>\xcd\xdb\xed\x01\xf3a1\x8c\xc5\xbc`\x87a\
+\xde\xd1(\xf1\xc1\x136\x1c\xf8\x82\xa5\xfc\xe0\xf2\xb9\xb5\
+\x15M7BU\xa7mE|jU\xf68\xcf\x839\
+;\xe4\x1c\x8f\xf2\xa0\xaa\x079\x11\xba\x1fj\x89\xb0\xbc\
+\xc5R+=\x11\xe7\x00j\xb1\x18j\x81e\x077A\
+\xd7\xdd\x8b\x86\x9c(\x88I9\x13u\xef\xa2/9\x09\
+\x86\xa5\x91\x98\x97ay\x8b\xc6\xbc;\x10\xf3<\x0a\xf3\
+\x9cXmY\xa7\x86R\x12\xecL\x96q\xde3\xde\x95\
+\xec\x07\xef*,9\xb1xO\xcfD9\x00\xefQ\xeb\
+\x0aJ\x11iD\xd5\xa1\xb6\xa0F\x04\xaf\xe1\x1d\xf7z\
+\x14\xaf\xe2\x9d[\xa6)\xfbv\xbc\xebp\x04\x12\x85w\
+\x1d\x96\x9bX\xbck\x13\xc2{\xf5\xf3\x04\x0d\xa2\x5c,\
+\x8c+\xb4,-\x84\xc6\xd5\x84\x8c\xcf\x11\xff\xfe]\x0b\
+W\xc8\x06\xaf\xd7\xf8^\xabj\xca\x7fj\xb8\xb32\xc4\
+\xfe\x1d\xabj\xc5K0%\x94C9?\xce'\x12\xc4\
+\x0a+\xb3\x98\xb0\x0d\xef\x12\xe2\x7f-duE\xe0\x85\
+\xe2]\x85\xc4(\x0a\xef\xea\xb0\x18^\xd0(\x8f\xa8\xc1\
+\xcdmxg\xa48\xbc\xe1%c]\x87\xc2\x80(\xac\
+\xeb\xc3\x22\x00p@bW\xc0\x0a\x9c\xb6\xe1\xbc.\x0d\
+/\x19\xeb!\xd7&\x0e\xeba\xaf\xa6k\x8bDP^\
+n\x91\x08K8c\xf9\xdb\xf0\xfe,\x14N\x94\xa5,\
+\xf3\x0d\xd7\xe9\x09\xd7\x06\xdf\xf3KK\xae\xd3V\x8c\x8b\
+\xa2$m%\x1d\xe3{\xed\xa3\x04\xd6\x10#l\xa55\
+a_Gj\x13\xb3\x80hMo\xee\x8e5\xb9\xd2\xdf\
+\xd9Jy\x82 \xa2$\x08\x84ZR\xe8\x1c\xb5\xfb\x12\
+\x04Z\x09i\xf3\xe08#\x88\xcaO\xcfxvr\xd8\
+\xb0\x0b\x14K\x0e\xdb\x9b\x17\x94\x1d\xc5}\x009d\x85\
+\x1c\x1cO!Q\x91\xf2!\xf1\xe4!\xe6\xbe\x9f|\xb8\
+\xf0bj,A\x5cX\xd4b\x09\xe2\xf4\x81\x04Q\x15\
+\x82H\x02<b\xe2\xc8!\x09DG.3\x0c99\
+p\x1d\xf3\xf7 \x06\xb2AO\xc4p\xb4\xb7\x9dGG\
+U\x88\x18O\x85\x06\x82Fmx(\x86Y\x0e\xb90\
+x\xc3m\x08\xd7.\xdf\xdc\xf0\xe1\x99\xc0U\xf1\x9a\x9b\
+Z\xab\xf3\x82\x8c\xb7\x0b\xae\xc0\xc6\x18o\xc7\x0f[\x0c\
+\x124j\x8fB\x19\xe2\x0c\xab.\x06\xed\xe2^SL\
+\xcc\xa8.\x06\xbd\x5c\xdc\xf3\x03R\x1eZp\x1f\x0c\x8f\
+\x9f\xc0}TH\xdc\xe0\xe9v\xbeW\xc4\x80\x22z\x15\
+\xb8\x17!\x9b\x12\x85{q\xd8\xde\x9c\xa0Q\x81q\x03\
+\xaf\xed\xb8\xaf\xcb\xc6\xcb\xc6}h\xcf \x0a\xf72\xbc\
+]\xd0i\x7f\x19-\xed\xaf\xc2w+d\xc5\xfe\x1a\x9f\
+\xc1^fT\xb5\xd8_h\xc3\x15h\x98\x8a\xfd5D\
+\x88b\xc9\xee\xd9-ppM'\xde\x02\xcb\xde\xf6\x03\
+\x80\xd1\x0es\x87X%\xc5M\xe1\xd1y.G\xed\xde\
+\x04\x91\xb8\x1f\x9a\xefv\xe6\x04\x91\xe0#\xfd>\x01\x83\
+Sa/?\x96 \xaa\xb7m\x02\xa7\xdc\x81\x04\xa9\x04\
+\xd4J\xe3\xeb<.\x8e\x1c\x1a_D\xe2\xdfO>t\
+o\xe14\xa6\xb1\xf7E\x0e}`8\xcd*\xe1\xb4r\
+\x84\xb2\xec\xb4\xc9\xbd\xc9a\xf1D.\xdd\x90\x0e\xc6\xed\
+\xef%\x1d\x1d\xf9\x85\xb1\xe40\xbd\x85\xd3\xcet$\x8a\
+v\xdbn\x16\x95\xac\x88\xaf\xea\x818T\x16W}F\
+\xb5\xd3\x15\xdb-\x14QN\x96\x0b}\xf5\x1a/\xc9r\
+\xdb^\xa2\x05\x17\x8e\x16\xbaE\xa1\x129\x0bP\xfa,\
+K\xae\xf3\xb9\xd0\x8e8\xcd\xc3\xa2\xf0\xecl\xee\xfa3\
+\x02\xae?#\xe0\x82F\xa0\xcfO7\xd9D\xc5\xa00\
+\x8dg\xb7\xea\xca\x0a\x14\x94\x080\x16Y\xc9\x1a\x0f\x82\
+\x15N\x815\xb7{J\xd9\xf7\x92\x8f\x0b}u\xd9`\
+\x02\xa6i\xf4~\xdb\x19\xbf\xb2\xbb`\xc2\xc6\xa2S7\
+\x89\xa8\xadfO\x0c\xcd+q\x05\xc7\xecW\x9d/\x10\
+\xfa\xa4\xbfz\x1d,\xc1c\xa1\xa5\xea\x01Y,z\x93\
+\xcc\xba\xb3\xabs\xd9\x04\x13\xde%\xeb\xe6K\xd9\xc5\x97\
+\x5c\x13&\x94\xa8s\xe5~\xda\xe4{r\xe5\x95;?\
+\xbd\xb8l`(\x98\x1e\x17D\xf4\xa5\xb5gg\xbc\x09\
+\x86\x1f\xe6\xc2\x08\xd5\x85h\xa1\xab\x9b6\xaf\x08\xd5\x17\
+\xf6\xd2\x9e\xef\xe0(\xac\xbb\xb9\xc9\x8e2o\x83\xa5.\
+\xf5\xd9\x0e\xd9:R\x5cu\x10\xd4\xf9\xd9%;c\x0d\
+P\x22\xbcjk\xb5\x08\x1a\xba\xb3\xd3\x0b\xe3\xce\x9a\xb0\
+\xa2\xc5\xf6\x8c]p\xdb\x94~\x11\x5c\xb2}\x82\x9bt\
+\x177a\x8a\x00\xd7\xf9\xb6\xe9+\xe2\xa6\xab\xab\x8b\xab\
+\xb3&\x8ed8\xaf\x95K\xde\x91\x90sqq\xd6$\
+\x9b\x0c\xef\xa2(*\x82\xec\x04\xb0\xf4i\x933e8\
+\xc42\x86\x05\xdf\x9e\xb8\xba:?\xcb\xecz\x05V\xb4\
+\xc9\xbc\x02DY\xda\x04s`|%L\x17;)U\
+]V{E\xec\x04\xae\xbbQ\xa2\x81\xa3`V\x0a\xf5\
+\x11a\x10\x16SB5\xf1\xdd\xb1\xe8\xa1\xa5\x0b\xd2N\
+Ji\xb3\xcc\xaa\x0a\xac\x0e\x87\xd7\xa9\xa0v\xe2\x97B\
+\x8a\x1dX\xd1\x8b\x8b\xad`4;\xd0\x03\x8bZU\x87\
+\x80E\x12${\xe1\x81\xd5\xdda\xf4\xc0\xf0\xb8\x19<\
+<C\x96\x1eX\xadN\x17\x87\xa5\xd7\xc8\xb0\xe1\x88\x1b\
+\x88\x8f\x86\xd9\x01^\xb5s\xc2\xb3q\xeb\xccFo\xee\
+\xd6\xc9d\xf6\x97d\xfby5\xc3wVgql\xc7\
+p\xf3\xb2\xc9*\xc1U\x94\x0e\x09\xdf\x09\xb0\x98\xd6\x87\
+e\xa1\x09\x11\xb5\xd8\xbeK\x92\xaa'\xd8N\x90j\x8d\
+~\xc8!\xcd\xf3\x91#\xb8 \x13G\x8e\x03_\xf6\x14\
+2*9m\x97\x1cu\x7f\xb1\x9d \xf5:\xfdI\xc8\
+\xb7#?\xf8\xc6g\x1c\xf2\xed\x819j2*Gm\
+\x17\xf9u\xf7\xaa\x1d\xf9\xf5:/\x0a\xf9\xd1\x99j\xed\
+\xc8?,\x01_\xc8\xa8\x04\xfc]\xe4\xd7\x9d\x91v\xe4\
+\xd7\xeb\xbc$\xe4\x07So\xe2\x90_\xa4\xdd\xb4g\x83\
+?A\x81(S`\x88T\xaeXAL/w*\x13\
+4\x1bO\xf1F'G\x94\xb4\xc6\xfd>)\x9a\x84\x05\
+\xfd\x7fk\xed\xa9\xad/\xdd2\xdb\x91\xb8#\xc2\xcb\x93\
+\xe2\xc2\x9c_5!\x1d\xf6\x96r;\xac\x0e727\
+\xa9mA.?W\xcdx\xd9\xd2\xb0\x1b\xa9\xb5\x09\x8e\
+\xeb\xf4\xfc\xf4\xea\xd45a\x85coC\xc3.\xa9;\
+w\x97\xae\x09\xab\xe3\x15S\xd3\x01\x8a:a/\x9a\xa0\
+\xc2\xa8\xb7,\xbbD\xae\x8d!N\xedyvyU\x05\
+Vt\xfaI+_\xb1\x03\xf3OT\x94\x1f\xb0+\x8b\
+\x06f,\xa5\xabh\xc3]\x89\xa4x\x16\x97\xa5;\xbb\
+\x00/E&y8&\x8f\x94I\x1e\x8e\xc8\xa3e\x92\
+\x87w=\xa3e\x92\x873\x0c\xa2eR\x84WC\xa2\
+e2\x98\xff\x13/\x93\x22\x8c\xfah\x99\x0c\xbe\xe8\x19\
+'\x93\xe2\xc0PIE\xb9\x87#\xed\x8f\x05\xe5\xe5\xab\
+\xe8#\xdc\xee4E.\xbd\x7f\x97\xb6^);\x0e\x82\
+\x81{\xfe\xb4L\xa2\xf41\x81g\xf51/\x92\x9cR\
+\x01\x9e\xcaPXb\x84\x96\xdc\x0dG\x06\x8flb\x8c\
+\xf3\x9e$Rv,\x91\xc4Id\xc7\x9b\xa3\xd1\x12\xd9\
+\xf1\xf6h\xb4D\xca\xb0e\x8b\x96H\xd5a\xd9b%\
+\xb2cq*V\x22;\xd6\xa6\xa2%2\xb86\x15'\
+\x91\xea\xc0\x98AE\xc5\x0c#\xa9\xaa\x09\xe4Y\xd0 \
+D\xb9x1\x92\x02\xd8\xcfTO\x15\xa8\xd4\x08\xcbb\
+E\x103\xfb\x08\xc2\xe8\xcfNS`\x0e\xb5\x18\xe2\xab\
+y\x80,\x15\xbbP\xe9\x0f\xd49o`\xab#\x85'\
+,\xcf\xad\x92\xd3\x91\xc1\x13)\xcf\xba\xe3\xac\x0a\xae\xc3\
+'\x06\x9d]\xd1\xcb&S\x99\xb0%\x0b\xae\xc2\x9e^\
+\x9c\xd1\xd3\xd3&\xa0\xe84\xd6V\xee4\xc1<\xd6=\
+\x82*\x13wz\x97 F\xaaJ*\xab&\xcc\x00B\
+J\x16\xad\xd5\xe0\xfe\x9eA\xe7\x8as0\xbe\xd7\x82z\
+\x0b\xde8Ua/\x82S\x16\x93?\x02\xb0\xc2<\xcf\
+\x99\x0b*\xad\xcb\x8b\xcb\xab\xcb\xb3&\xac0\xd7s\x19\
+\x1c\xd6\xc5\xe5%\xbb\xd8\x01\x15f{\xaeMxCS\
+_\xb8\x0b\xde\x80\x15|?\x93\xfaS\xf1\x22\xc4\x11`\
+\x85Qo\xb5\x0b\xc2jE}P\xdd\xc4H\x11\x80\x09\
+.M<!@QG\xa7\xed\x08\x90\x02\xd5\xcc\xf2U\
+\x87V\x01\xc2\xd31\xed\x1e\xfe\xd6\xb3\x0a\xd0\xd9\xe9\xd9\
+\xc5\x99n\xa0\xac\xe3\x10C\xee\xb2\xd3\xfa\xf63\x1a\x00\
+\xab\xe3\xe8\x02\x1ad\xd4vP\xd1\xa1q+\x8f\x9a\x03\
+Cc\x13\xf5JR\x93!\x1cP\xc8*[M\xe2i\
+0\x04\xde\xca\xe0\xec>\xcb\xe3\xbf\xbbF\xed8\xc90\
+Z\xa3\xda\x1e5\xaa\xedO\xa3\x06\x93(\x0f\xd0\xa8\xae\
+G\x8d\xda\xf1\x9ae\xb4F\x8d_\xecm\xe5\x86\xf0b\
+\xef\x13\x02\x14y\xf6]C\x80\xf0\x0a\x16\xc7*A\xec\
+\x8e\x00\xe1y\xef\x8a7R\xa8_\x82Fe\x1d\xcb\xbc\
+\xb1\x1a\x95u,\xf4FjT\x16\x5c\xe7\x8d\xd2\xa8\x8c\
+\x1e\xaaQ\xa3\xb6\xe5\x81\xdc\xaez\x1c\x86$\xa0K\x5c\
+]\xa1\x02\x8b\x9b\xd2\xc2\x165\x22s~vE\x87\xb1\
+>\xdeL\x030\x07\xbe\x9af\xa2\xb6H\x1a\x98r\x8a\
+H\xc7y\xdd\x99\xafa\xaa\xac\xd1\x03\xa6\xfax\x8f\x8c\
+\xe3m\xb6!Lu\x1e+\x8f\x9fMv\xae\xfc|\x96\
+\xdf|\x90\xad\xa0\xcc\xf0\x10vc\x89eN\xe3)\xe1\
+\x12bl\xa3\x05\x9e'\x0e(\xa0\xda1\x8b'\xc4\x01\
+\xdb\x08E\x9d?c\x5c\x0ap\xb6\x87\x02\xcfr\x12J\
+\xf9\x22|\xf9\x86c\x90-\x9c\x90Vcc\xbc`\xc7\
+\x0a\xbcuH\x11\x0e:^\x88\x01|\x13\x12\x81\xe3\x15\
+Ax\xb4\x9d\xb6\x03\xc9\x08\x85\x90\x89\xba\xbc\xcc\xb7\x16\
+xy:\xba\x06x\x1d\x10s\xc0\xb2\xda\xdf/d\x84\
+\xbfL\xc8\xe2\x05\xec<\xbd\xdb\xc8Y\xad\x8cMo,\
+\x92<?\xc0\xdd:\xc6\xd3\x1b\x8b\x18\x1e\xb6\x8e%\xc2\
+\x19\xe6\x8b\x80\xff\xa5h4\xd50Q\x9d^b\xc4\xad\
+b\x5c\xf8\xe10\x09H\xc7\xc3\xdf\xb9\xe2\xa0\x0d\xf1j\
+\x22\x09\xe0\xf0\x0a#\xe1\xa4\xe6E\xc99^V\xe3\xb4\
+a\xae,\xc3\xeb\x8b`\xe2\xd8N\x11m\x0c\xf5\xe8\xc3\
+U@pz\xfc\xc1\xed\x92\x0a-\xb2c\xdf)\xa0R\
+\xe3\x82\xa1vZ`k\x8d\xfc\xe7\xa8\x18r\x80\x83\xef\
+\x9a\x99V2\xed}[\xc2k\xbb\xa2\xb3\xbc- \xbd\
+p\xfeI\x16O?5.\x17xZK\xc1\xe5\xd9}\
+BC\x0b\xa8\xc5[\x5c\xe4\xe0\x97\x81Q\xa4R\xa4\xca\
+\x12\xb0\x9cx\xbb\x8a\xaf$\x81oMkQ\xa5\x1d\x1e\
+\xdc])\xf2\xb5\xf22\x85i\x1ei\xb5\xac\xe1n\x89\
+\x04\xd2\xe3\xddHP\x92\x0f\xb4\xa5\xa8\x84\xde \xfcj\
+\xb9\x1dm\xe6\xbf%\xc7\x8c\xdf=\xfc\x98\xfe\xc4G\x80\
+\xa6\xf5\xedd\x91\x96|\xf5\xf7d\xe7E%\x86\xd5a\
+\xb7\x189\xde\xb8\xc5\x08\xbc\x0f\x0bND\x93}>\xdd\
+o\xb7;\xdc\xe3\x19\xa6\xef\x1b\x8c\x1c\xdeF\x883\xbd\
+\x9e\xdc\xce\x17\x8f\xc7\x17\xc9\xbf'\xff\xbc\x1f|H\xd6\
+\xf3\xebv.j\xbd\xca\xaf\xd6\xc9\xe2\xf8\x87k\xff\xd9\
+[~\xec\xb3\xcaO\xfb5}\x02\x8f7\xaa\xcdl\xf7\
+:\xab}.\xc1\x0a\xdf\x9c\xb5s\xdb\xd6\xec;\xdd\xff\
+\xd5zu\x99\xa3\x06tI~uY\xf6\xcb\x82+\xa9\
+A\x85\x83\x12\x05?\x983C\x1b\x17\xf3}\x83\xf4\xa4\
+\x9c\x91\xf8\xcf\xfe\x9a\x15\xa0G\x0bG\x85\x1bC\xac\xbd\
+\xab\xe3\x14Q\x5c\xe0\xd5%\xa5\x8e\xcb\x8alM\xc9\xe1\
+e\x03\xca\xd4\x94\x5c\xb3\xa8\xda\xb0\xd0r\x15\xf8\xcf\xa0\
+\xe5\x0a\xe8\x95{I\xb6\xc9\x03\xe8\x1c\xcd\x8f\xf6\xb1\x02\
+\xbd\x129R\xfc\xbf\x95\xc8\xbbz\xcdq\xd5\xa1\xd7\x0a\
+\xe2Kp+\xd0\x9d2\xd6y\x94\xfb{m\x9c\xc5\xa0\
+\x06\xc9\xa4\x88U\xda\x0a\x83\xa5\x16u%\xaf\x95\x1ap\
+\x91-\x83o\xe8\xcd0\x08\xcb\xd1)\x83Bc\xa4w\
+\xde4\x11\x0a\x023\x81e\x8a\x19\xa7\xc4\xc0\x80\x9bf\
+(xd&e\x01\xe4\xac\xbc\xa81\x92\xf2gF\xd2\
+6)v@|\xe4\x92,\x08\xcd~\x8d\xf0\x96\x1am\
+1\x18\x15N5\xae\x82\x17\xf9\xab\x94\x1d\x1c\xe1\xb9a\
+\xbc\xf9r\xf3\xfe\xff\x01 ;\x82Wk\xab\x00\x00\
+\x00\x00\x08\xc9\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x09pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0\
+kB\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\
+\x12)\xc3\xf6 \xcd\x00\x00\x07\x94IDATX\xc3\
+\xcd\x98[lT\xd7\x15\x86\xbf\xbd\xcf\xdcl<\xe3\xcb\
+\x18\xf0\xd8\x13\xc6\xd8 0\xe1\xe2@0.\x09\x97(\
+\x14*Z\x12D\x12\x91Ji\xda\xb4M\xa5\xb4\x12/\
+U\xd4\x87>\xf4\xa5/\x09\xaa\x22\xb5\x12D\xa5j\x89\
+\xa1\xa4M\x80P\xb5\x10\xc5\xc4\xdc\x9b@\x8cKmZ\
+\x9b2C\x901\xe0\x16\xdb3x\xb0\xe7~\xce\xee\xc3\
+\x999\xb1\xa1x\xc6@D\x97d\xe9xk\xefu\xbe\
+\xf9\xf7Zk\xaf}\x84RJQ\x80\xa53\x19z\xfb\
+\xfa\xe9\xea\x09\xd1\x13\xbcL_\xff\x0d\xa2\xb7F\xd0u\
+\x03\x97\xcb\xc1To9\xb3\x02~\xe6\xcf\x9dE\xc3\xec\
+Z\xbc\xe5\xa5\x85\xb8\xcdk\x22\x1f`,\x9e\xe0\xcc\xdf\
+\xfe\xc1G\xc7O\xd3\xd9\x1dd(2L&\x93A)\
+@d'e=H)(.r1\xa3\xa6\x8a\x15\xcb\
+\x1aY\xbb\xb2\x99\xba@\xcd\x97\x03\xa8\x80\x8e\xce\x1eZ\
+\xf6\x1e\xa4\xfd\xef\xdd\xc4\x13\x09\xa4\x94\x08!\xc6\xcfS\
+j\xdc\x98\x02\x94a\x00\xe0\x9b>\x95\x8d\xebV\xf1\xfc\
+7\x9e\xa6\xa2\xcc\xf3\xe0\x00\x13\xc9$\xef\x1ehe\xf7\
+\xbeC\x0cE\xa2h\x9a\xb4`r@6\x9b\x0d\xbb\xdd\
+\x8e\x10\x02]\xd7I\xa7\xd3\xe8\xba\x9eU\xd2\x9co(\
+\x85\x14\x82%\x0b\xe6\xb2\xe5\xfb/2\x7fN\xfd\xfd\x03\
+\x8e\x8c\xc6\xf8\xd5\xef\xde\xe3\x83CG\xc9\xe8:B\x88\
+,\x18\x94\x96z\xa8\xaf\x9f\xc9\xecY\xf5T\xf9\xaa(\
+))A\x93\x92d2E8\x1c\xa6\xb7\xf7\x0a\x17\x83\
+!\xae]\xbbN:\x9d\xb6@u\xdd \xe0\xaf\xe2'\
+?\xfa6\xcb\x1f_x\xef\x80\x89D\x92\xb7~\xf3.\
+{\xff\xd2f)e\x18\x06n\xb7\x9b\xe6eKY\xfe\
+\xc4W\xa8\xa9\xf6\xe1p8\x10X\xa1g:\xca\xce\x8d\
+Fo\xd1\xdd\xdd\xc3\xd1c'\x08\x85.\x8d\xf3S=\
+}*?\xfb\xf1\xab45>:y@\xa5`\xe7{\
+\x7ff\xdb;{\xd1\xc7(W[\x1b\xe0\xb9M\xcf\xd2\
+\xd00\x17M\xd30\xb2\xf1uW\x87B \x84`x\
+8\xca\xe1\x8f\xdbhk;F\x22\x910C\xc10\x98\
+S7\x837~\xba\x85\xdaG|\x05\x01\xca\xdc\xc3\xd9\
+\xaenv\xed;4\x0en^\xc3\x5c~\xf0\xeawY\
+\xb4p>\x0e\x9b4\x7fE\x1eSJa\x18\x06\x1e\x8f\
+\x9b\x8d\xcf>\xc3\x0b/l\xa2\xb8\xb8\x18\xa5\x14\x9a\x94\
+\xfc\xeb\xf3+\xec\xd8\xf3\x01\xc9T\xaap\xc0\xd1x\x82\
+\x96\xf7\x0f\x12\x8eD\xad\xed\xa8\xad\x0d\xf0\xd2K\xdfd\
+\xe6#\xd5\xb8\x1d\x82R\x97\x8d\xd2\x22\x0d\x87&\x0ar\
+\xac\x94BJ\xc1\xeaU+xf\xc3z\xecv\xbb\xf9\
+B!9r\xea,'N\x9f+\x1c\xf0t\xc7y\xda\
+;\xbb\xd14\x89R\x0a\xb7\xdb\xcds\x9b6\xe2\xaf\xf1\
+\xe1\xb2\x81&\x05B\x80M\x0a\x8a\x1d\x1a\xa20Fk\
+\xcbW\xaf^\xc9\xd2\xa5K0\x0c\x03! \x9eH\xb2\
+\xef\xe0\x11Fc\xf1\xfc\x80\xe9t\x86\x8f\x8e}J\x22\
+\x91\xb4\x06\x9b\x9b\x9bhh\x98\x03\xca@\xdeF\xa3I\
+\xee\x18\xcb\xa7\xa4\xd3\xe9d\xdd\xda5x\xbd^SY\
+Mr\xfeB\x88\xce\xee`~\xc0\xcb}\xd7\xe9\xea\x09\
+!\xa5\xa9^\xa9\xc7\xc3\x13\xcb\x9b\xd14\x0d\xddP\xe8\
+\xb7\xc5]\xc60\xeb\xdbd\xcc0\x0c\xfc\xfe\x1a\x16/\
+^df50\x1aK\xf0\xc9\xd9\xae\xfc\x80\xe7{B\
+\x84o\x0e[\x89Q__Guu5\x86a`(\
+\x18M\xea\xa4u\x85\xa1\x14)]1\x9a\xd2\x0b\xc9\x95\
+;_$%\x8d\x8d\x8b(*r\x99\x03\x02\xce_\x08\
+12\x1a\x9bx]O\xf02\x99\x8cy\x02\x08!\x98\
+5\xbb\x1e\x87\xc3nMH\xe9\x8a\xe1D\x86\x9bq\x9d\
+h\x22CFW\x08\x01N\x9b\xc4i\x93\x05\xc7\xa3R\
+\x8a\x9aj\x1f^\xaf\x17\xc30C\xa7\xff?\x83\x0c\x86\
+\x87'\x06\xec\xeb\xbfa)b\xb3\xd9\xf0UU!\xee\
+p\x0e\xba\xa1\xacy\x0eM\xe2qix\x5c\x1aNM\
+R\x88)\xa5\x982e\x0a\x95\x95^K\x8c\xd1X\x9c\
+\xa1H\x1e\xc0\xe8\xad\x11\x10&\x84\xddn\xa7\xa4d\x0a\
+\xf7\xb0\x83\x05\x99\xa6i\xb8\xddnr\x87W&\xa3\xe7\
+\xddb\x9bn\x9d\x0c\xe6\x91\x94;?'\xb2\x94n\x10\
+M|\xf1<)\xc81\xfe\x15\x0a=\xcf\xc9d+r\
+:A\x81\x90fWRH\x85W\x0a\x92\x99\xc9\x81\x99\
+\xeb\xd4\xb8r&\xa5\xc4\xe5tL\xb8FVz\xcb\xac\
+\x7f\xd2\xe94\xe1p\xe4\x8e\x9e\xefAY*\x95\x22\x12\
+\x89X\x15\xc3\xe9pP\xe6)\x99\x18\xb0>\xe0GJ\
+\x13H\xd7uz{\xaf\xe4m\x08\xee\xc5\xa4\x94\x84#\
+\x11n\x0c\x0cZ\x80\x15e\x1e*+\xca'^\xb7\xa0\
+a\x16\xc5E.+1.^\x0c\x12\x8d\xde\xfaRT\
+\x0c^\x0c\x11\x8dF-\xc0\xba\x195T\x94\xb9'\x06\
+\x9c7{&3j\xaaP\x86\x81\x94\x92k\xd7\xae\xd3\
+\xdd\xdd\xf3@\x01\x85\x10\xc4b1>k\xef\xb0\xban\
+M\xd3hj\x9c\x87\xcdf\x9b\x18\xd0[^\xca\x8a\xa6\
+Fk \x9dNs\xe4\xe8q\x86\x87\x87\x1f\x18\xa4\x10\
+\x82\x8e\x8es\x04\x83\xe6\x91j(E\xd54/\xcdK\
+\x16\xe4]+\x01\xd6\xaej\xc67}\xaay\x87\x90\x92\
+K\x97>\xa7\xf5p[\xb67\xbc?8)%}}\
+W\xf9\xf0\xc3V2\x99\x8c9\xa8\x14k\x9el\x22\xe0\
+\xcf\xdf\xb4J\x80\xba@\x0d\x1b\xbf\xb6\xca\xeaR\x94R\
+\x1ci;\xc6\xf1\x13\xa7P\x8a{VRJ\xc9\xc0\xc0\
+ \x7f\xf8\xe3\xfb\x5c\xef\xef\xb7z\xcd\x80\xdf\xc7\xa6\xf5\
+O\x15\xe6#\xf7\xf0\xfc\xd7\x9f\xe6\xf1\x85\x0d\xe8\xba\x81\
+\x10\x82D2\xc9\xfe\xfd\x07hm\xfd\x98T*UP\
+\x01\xcfY\xae\xe0\xf7\xf5]e\xe7\xce]tw_\xb0\
+\xd6\xbb\x9cN^\xd9\xbc\xa1 \xf5\xc6\x01V\x94y\xd8\
+\xf2\xbd\x17\x09\xf8}\xd9\xc6R\x10\x8b\xc5\xd9\xb7\xffO\
+\xbc\xd3\xf2{z{\xafX\xaa\xdcMQ)%RJ\
+\xe2\xf18'O\xfe\x95m\xdbw\xf0\xcf1\x09\xa7\x14\
+h\x9a\xc4f\xd3\x0a\xff\xb1\xb7_;?=\xdb\xc5\xcf\
+\x7f\xf9[\xae\xfd{\xc0:\x96\x0c\xc3\xc0[Q\xc1c\
+\x8b\x1by\xacq!55\xd5\x14\x17\x17[\x19\xa8\x94\
+\x22\x99J\x11\x09G\x08\x06C|\xd6\xdeA(\x18\x22\
+\x9d\xc9\x8c\x81Sc\xea_)\xaf\xbf\xf6-\xd6\xadn\
+\x9e< @{g7\xbfx{7\x17.\xf5\x22\xb3\
+\xb7\xb4\xdc\xa5\xdd\xe5r\xe1\xf5VPYY\x89\xc7]\
+\x82\xd44\x12\x89\x04\x91\xc8M\x06\x06\x06\x89F\xa3\xe8\
+\xba\xfe\xc5\xe5\xdd0p9\x9dh\x9a$\x16OXq\
+\xe8-/\xe5\xf5\xd7^\xce\x0by\xd7O\x1f\xbdW\xfb\
+\xd9\xb1\xe7\x00m\xa7\xda\x89\xc7\x93\xd9\xad\xc5ziN\
+\x95\xb1q\x97\xfb\x83l\xd7\xad\x14\x01\xbf\x8fW6o\
+\xc0n\xb7\xf1\xd6\xaf\xf70\x18\xbei\x96\x9a\x02!'\
+\xfcx\x94L\xa59y\xe6\x1c\xfb\x0e\x1e\xa1\xab'\xc8\
+h,\x01\x22{'\x11b\x5c\xdf\x98SX)\x85\xa6\
+iTM\xf3\xb2\xe6\xc9&6\xad\x7f\xcaJ\x88\xc3'\
+\xce\xf0\xc6\xb6\x16\x86&\x01\x99\xf7\xeb\x16\x98\xf7\x87\xae\
+\x9e \x9f\x9c\xed\xe4|\xcf%\xfao\x0c22\x1a'\
+\xa3\x9b_\xb9\xa4\x14\xb8\x1c\x0e\xca\xcb<\xd4\x05jh\
+j|\x94\xe6\xc5\x0b\x08\xf8\xab\xee\xf0\xd5z\xfc\x0co\
+n\xff\x1f\x90?|\x99u\xab\x9a\xef\x0dp\xac\x8d\xc4\
+\xe2\x0c\x85o2\x14\x19fd4\x86n\x18fWR\
+\xeafjE\x19\xe5\xa5\x9e\xbcYz\xf8\xc4\x19\xde\xdc\
+\xd6R\xd0vO\x1a\xf0AY\xa1\x90\xb6\xfbx\xc7}\
+\xd9WW.\x03\x18\x079\x14\x19f\xeb\xf6\x16\x00\x0b\
+\xf2\xa1\x01\xe6\x83\x14\xc2\xec\x11\x1e*\xe0X\xc8\xb1\xd9\
+=\x14\x19f\xeb\xdb\xbb\xcd\xd2\xf6\xb0b\xf0v\xbb=\
+&u\xc3\xa0y\xf1\xfc\x87\xaf`\xcerJn\xdd\xbe\
+\x8b\x1b\x83\x114M\xe2\xf7M\xff\xffQ0gm\xa7\
+\xda\xd9{\xb0\x0d\x7f\xd54\xbe\xb3y\x03\xff\x05\xc8C\
+\xdb\xc2\xa6D\x97\x9f\x00\x00\x00%tEXtda\
+te:create\x002023-0\
+3-08T17:27:26+00\
+:00\x9e\x98\xa5\x85\x00\x00\x00%tEXtd\
+ate:modify\x002023-\
+03-08T17:27:26+0\
+0:00\xef\xc5\x1d9\x00\x00\x00(tEXt\
+date:timestamp\x002\
+023-03-09T06:18:\
+41+00:00=\x00\x9f\x01\x00\x00\x00\x00\
+IEND\xaeB`\x82\
+\x00\x00\x08\x13\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x09pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0\
+kB\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\
+\x12)\xc3\xf6 \xcd\x00\x00\x06\xdeIDATX\xc3\
+\xbd\x99[\x88\x5cI\x1d\x87\xbf\xaa:\xd3\xb7\xe9\x99\xe9\
+\xd9\xb9dHv\xc8\xc4\xc9\x5c7\x9b\xc4,AE\x05\
+/\xe8\x8a\x88\x0f\xee\x83\xe2\x93\xc8\x8a\x0f>\x88\xf8 \
+>\x89O>\xac\x18\x17E\x05aA\x03Y\x08^`\
+\x1f\xd4\x87 \x0b\xca**&lb2n4\x99\xec\
+e2\xd7\xccL\xf7\xe9>}\xce\xa9S\xe5C_\xe6\
+\xf4\xbd;\xa8\x05\xcd9]}N\xd5W\xbf\xff\xa5.\
+-|\xdf\xb7\xf9|\x9e(\x8a\xf8\x7f\x15\xc7q\xc8\xe5\
+r(\xa5z?\x9b\xcf\xe7\xb9}\xfb6\xa9T\x0a)\
+\xe5\xff\x1c.\x8a\x22\xc20\xe4\xc2\x85\x0bd2\x99\xde\
+\x80Q\x14\x91J\xa5X]]\xc5\x18\x0b\x02D\xedW\
+Q\xb9\xeb\xf8\xbdS]\x87\x22\x84 \xd4\x9a[7o\
+b\x8c\xe9Om\x00)%\xc6Z\x820\xa8t$\x04\
+\xa2\xd6\xb1\x10\x88\xea\x95\xea}\xfc\x8a\xb5\x08\xc0\xc6`\
+;\x01\xdbj_\x22\xd6~_\x80\xf1\x11\xb6\x03\xb4\xd6\
+R.\x97\xb1\xc6\x1c\xc15\x83\xf6\xa1\xa2\x10\x02c\x0c\
+\xa5R\x09\xd7u+\xd0\xd6\xb6}VJI2\x99<\
+\x02\xac\xab\xd4\x06\xd4/\x97\xf9\xc7\xad[\x08!\x1a\xfd\
+4\x0e\xdbJ\xd3Z\x05\x18k\xd9\xd9\xd9amm\x8d\
+D\x22\xd1\xf6Uk-\xc6\x18VVVb\x0a6A\
+\xc5\xef\x8d\xb5\x08!8\x7f\xfe<J)lL-)\
+$\x08\x81\xb5m|\xaa\xc3\x00l\xb5=:\x98\xd9Z\
+\xcb\x9d\xdb\xb7\xd1Z7*X\x87k\x86\x15\x02\xa9\x14\
+J)t5\x1dI!16\xe2\x8d\xbd5\x0e\xcb\x87\
+\x5c|\xf2\xbd8\xd29\x0a\xb2x\xe7M. \x9a\xb2\
+E3f\xad/\xa0I\xc1\x0ep\xa2I\x09)$n\
+P\xe0w\xff|\x85\xfb\x87\xf7\xc9{\x05V\xa7\xcf\x90\
+K\xe7\x1a\x82\xa5!\xa0\xda\x80vr\x85xi\xf1\xc1\
+\xe6\x88m\x84\x13(\xa9x\xb0\x7f\x8f\x97o\x5cf\xa3\
+\xf8&\xa7&\xe7(\x17\xca\x15\xe5\x84\x04lK\xa4\x0f\
+\x0a\x18\x8f\xf0\xc6(\x8e\xc3\xc5\x01\x85\xa8\x98\x14\xc3k\
+\xeb\x7f\xe0\xea\xebW\xc8\x8d$\xf8\xf2\x87>\xcd\x83\xdd\
+=\xd6\xb77\x01Q\xedKt\x05\x14\xad4\xfd)X\
+O-\xcdp\x80\x92\x8aBX\xe0g\x7f}\x89\xd7\xde\
+|\x95g\xe6\xde\xc5\x07\x17\xcf0\x92R\x14\xfd\x22\x91\
+\xb1T^mc\xda\x01\x01\xeb~Z\xado\x1f$q\
+\xe5\xa4\xe4\xde\xc1=~\xb9~\x15\x7f\xe8\x11\xcf\x9eY\
+\xe1\xd4\xd4\x14\xe5`\x1f?\xccS*\xbb\x95\x19\x081\
+8`\x97(oo\xe2\x18\x9c\x94\x920\x0a\xb9v\xe7\
+\x1aWo\x5caz\xdc\xf2\xd1S\xf3dSP\xf0\xb6\
+\xb1\xb6\xe2s\xe5\xa0\x88\xd6\xa61\x8fv\x00l\x9e=\
+\xfa\x99M\x1aM\x5c\xcdOJ*6\xf3[\x5c\xfe\xf3\
+e\xfe\xfe\xce\xef9wj\x8c\xf9\xe91\x84<\xa0\x18\
+\x00X*\x83T\x84\xda\x10\xfa\xba\x92\x1b\x07\x04\xecV\
+:\x9aX\x0a\xc9\xcd\xb7o\xf1\xf3?\xbd\xc4~p\x83\
+\xf7,d\x19\x1f\x09\xf0\xcd\x0e\x0aA%\x85I\x8c\xb1\
+\x18#(\x94=\x02?}\xd4h-\x09\xc7\x81\x1fC\
+\xb9\xb6&\xae\xf9\xe0\xda\xc6\x1b\xec\x1c\xbe\xc5\xd4\xd4\x0e\
+n\xf86\xa1\xabH'\x15\x89!\x89\x90\x16c4\xa1\
+\xd6\x94\xfc\x12[yA\xe8_\xac\x0eRT\xd3M+\
+\xd8 P]Ml\xb1|\xea\xdd\x9f$\x8a\x22.\xff\
+\xf1GLN\xaf\xb1<\xef\x13I\x88\x94`\xc8\x01\x05\
+XeIIH\x0d\x0d\xa1\x83\x08\xec``\xfd\x02\xd7\
+\xe7\x9cx\x0e\xcc$\xd3|\xfe\x03\x9f\xe5\xdb\xcf]B\
+\x1f|\x8c\xbf\xfcm\x04\xab\x15\xe3\xa3\x82\xdc\xa8d|\
+T26\xaa\x18\xc9\x0aR\x09\x8b\x8e\xf9`7\xb8\xf8\
+\xcc\xd4\xab\xd4\x9eiYB\xc7_}\xdf\xd2E\xbe\xff\
+\xc5K\xacN<\xcf\xaf^\x99\xe0\xdf\xff\x92\x8c\x0d\xc3\
+xN0:,\xc8\xa4\x04\x09\xc7\x10\x85\x15\x05k/\
+\xb7\x03\xed\xa6d\xf3\xa7\xad\x82\xedFh\xac\xe1\xf8\xc4\
+\x0c\xdf|\xeek<{\xfay~\xfb\x9bE~\xf1k\
+E\xe4C:\x0dJ\x09\x94\xb0DaT\xe5\xeb\x0d\xd6\
+\x0d\xa6\xab\x89\xbb-}\x86\x9c!>q\xf6\xc3\x5c\xfa\
+\xd2\x0fx\xf4\xd6\xc7\xf9\xcew\x87\xb8s\xd3\x10i\x83\
+\x8d,&4T\x12c\xab\x89\xfaQ\xb1\xdbs->\
+\xd8)5Xkyf\xf1\x1c?\xfe\xea%\xde?\xff\
+\x15~\xf2\xd3'x\xf5\x9a\xc5\x04\x06\xa3\x8f\x14\xec\x04\
+\xd7\xcb\xac\x9d\xfc\xb71\xcd\xf4(\xc6\x18\xa6r\x93|\
+\xeb\x0b\xdf\xe0\xdc\xe93\xbcp\xe5\x05\x90\xf7\x88BS\
+\x9f\x9ez\x05\xc9\xa0\xc5i\xd7@\xbbNj\xd7\x8a\xc9\
+\x1d>\xf7\x91\xcf\xb0zr\x81\xef\xbd\xfc\x22\xf9b\x99\
+\xe1T\x86\xa3\xddS\x7f*v3s[\xc0n\x0f\xc6\
+*+jZ\xc3\xd9\xd3O\xf3\xc3\xaf\xbfH9(\xf3\
+\xc4Hn`\x15\xad\xb5-\x9b\xa6\xda&\x8d\xc711\
+4\xa6!k-\xd9\xcc0\xd9\xccp_\x03\xacg\x07\
+c\xeap\xb5\xfdqm\x9f\x22\x04\x18{\xb4\xa2q\x9a\
+_\x1e$\x89\xc6\x1b\xee\xa6z\xdc=\x8c1\x18c\x88\
+\xa2\xa8\xfe\xa9\x01\xd7w\x8dR\x11\x99&\xc0n\x10\x0d\
+\xdb\xd1>}\xa7]\x160\xc6\xa0\xb5FkM\x10\x04\
+\xf8\xbe\x8f\xef\x07h\x1db\x8cA\x08I\x221\x84\x91\
+\x0eA\x10\xe08\xce\xe0&\xeeG\xf1f\xd08\x5c\x10\
+\x04x\x9e\x87\xeb\xba\xb8n\x11\xcf\xf3\xf0}\x1f\x8b%\
+\x93\xce \x1c\x07\xd7-\xf2\xe4\xf1\x19r\xb9\xdc\xe3\x03\
+v\x83j\xae\xab\x994\x08\x02\x5c\xb7\xc8\xfe\xfe>{\
+{{\x14\x0a\x05\x820$\x9dN359\x81\xb1\x86\
+G{{\xcc\x9f\x9acnn\x0e\xa5\xd4\x7f\x0f\xb0\x97\
+i\xc30\xc4\xf3<\x0e\x0f\x0f\xd8\xdc\xda$\xd2\x11\xc7\
+\x8e\x1dc|<G6\x9begw\x87w66X\
+\x98?\xcd\xc9\x93'\xeb'\x18\x83Gq\x9f\xc96\xae\
+^\x0d\xd0u\x8b\x1c\x1c\x1crpp\xc8\xd3g\x9eb\
+a\xe14\x9e\xe7q\x7f\xfd>\x1b\x1b\x1b,-,2\
+;;\xdbp\xbc\xd2\xba'\xe9\xb1\x1a\x1e\x04\xb6\x96J\
+\xb4\xd6\xf8\xbeO\xb1X$_(\xa0\xb5ftt\x94\
+R\xc9c\xbd\x06\xb7\xb8\xc4\xec\xeclK\x9b\x0eT\x0e\
+\x15\xcb\xe5r\xdb\x13O!\x04\x9e\xe7\x11\x86\xe1c\x81\
+\xd6L\x5c\x0b\x8eR\xa9\xc4H6K\x22\x99`\xfd\xc1\
+}\x1e>|\xc8\xf2\xf2\x0a'N\x9ch\xdb\x8e\x93H\
+$PJq\xf7\xee\xdd\x8e\x8e^,\x16\xd9\xde\xde\xee\
+xT\xd6KAc\x0c\xa1\xd6\x84a\x88\x89\x22ff\
+\x8e\xb1\xf9\xf0![[\xdb\xac\xac\xacr\xfc\xf8\xf1\x8e\
+m8ccc\x9c={\xb6c\xe7B\x08\x5c\xd7m\
+I\xc8\xcd \xbdT\xb4\xc6\x12\x19\xc3\xe8\xd8\x18\x16\xcb\
+\xee\xee.+\xcb+\xcc\xcc\xcct\x1d\xa4#\xa5\xecx\
+NW+\xc9d\x12\xc7q\xba.\x22\xba%v!$\
+R\x0a\x92\x99aT\x22\x89\xe7y,--3==\
+\xdd\xd3\x0a}G\xb11\x06\xdf\xf7\xeb\x8a4C5\xab\
+\x0e\x95\xc3J\xad#|\xad\x89T\x02\xab\x86\x10\x81\xcf\
+\xd2\xd2\x12\x13\x13\x93}\xf5\xdb\x17\xa0\x10\x02\xad5\xd7\
+\xaf_\x1f\xe8\x9f\x80\x8a\x0fBd+\xe6M%\x93<\
+\xb5\xb2\xdc7\x1c\xc0\x7f\x00\xb3\xfd\x1fpe\x8eW\xd4\
+\x00\x00\x00%tEXtdate:cre\
+ate\x002023-03-08T1\
+7:27:26+00:00\x9e\x98\xa5\
+\x85\x00\x00\x00%tEXtdate:mo\
+dify\x002023-03-08T\
+17:27:26+00:00\xef\xc5\
+\x1d9\x00\x00\x00(tEXtdate:t\
+imestamp\x002023-03\
+-09T06:18:41+00:\
+00=\x00\x9f\x01\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x08\x01\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x09pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0\
+kB\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\
+\x12)\xc3\xf6 \xcd\x00\x00\x06\xccIDATX\xc3\
+\xcd\xd8\xdbO\x1b\xd9\x1d\xc0\xf1\xef93\xe31\x17\x13\
+c\x1bc|\xc1\x10\x08\xe4\x02A u\xd3\xa4/]\
+u\xb7/\x9b\xedk\xab\xb6\x7f]U\xf5\xa9j\x1f\xda\
+\x97UUU\xda$\x0d!\x81\x84\x84\x90&\xdc\xcd\xc5\
+\x06\xdb\xc4\xd8\xd8xf<s\xfa`\xd8n\xa4\x96\xcb\
+\x06J~\x925\x925:\xe7s\xee\xbf3B)\xa5\
+\xf8\x84C?\x8fB\xbe\xdfF!\xc4\xe5\x03\x95R\xb8\
+n\x03\xc7q\xb0m\x07\xdb\xb1\xf1\x5c\x17\x84\xc0\xd0u\
+\x0c\xc3\x87i\x9a\xf8|\xbe\xff?\xd0ql\xaa\xd5*\
+\x85\xe2.\xab\x99M\xb2\xb9<\xfb\xfb\xfbx\xae\x83\xd4\
+t\xdaZ[\xe8\xea\x0a\x91\xe8\xe9&\x12\x0e\x13\x0eG\
+0M\xf3\x07\x03\xc5i\xe7\xa0R\x8aju\x9f|\xbe\
+\xc0\xec\xeb\x05\xd66\x0b\x84\xc3a\xd2\xbd\x09:\x83W\
+0t\x1d\xcb\xb6\xd8\xc9\x17Y^Y\xa3\xf4\xbeHo\
+<\xcc\xb5\x814\xfd}\xfd\x84B\xa1\x8b\x03*\xa5(\
+\x95J\xac\xado05\xbbH\xe0J\x98\xf1\xb1[\x84\
+\x82\x1dH\xf9\xe1\x9c\x13B\xd0h\xb8lfw\x98\x9c\
+\x9a\xc6\xae\xedr\xebZ\x92\xd1\xd1Qb\xdd\xb1\x8b\x01\
+\x96\xf6J,\xaf\xac\xf1l.\xc3\xd5\xc1!\x86\x06\xfa\
+\xd04\x81\x10 \x85\x00\x01B\x00\x0a\x14\xa0<\x85B\
+P\xb7\x1c\x9e\xcd\xcc\x92Y\x9e\xe7z\x7f7\xf7\xee\xde\
+%\x14\x0a\x9f\x09(Oz\xa1^\xaf\xb3\xb9\xb1\xc9\xcb\
+\xb7\x9b\xa4\xaf\x0e\xd3\xd7\x97\xc6U\x0aO\x81\x12M\x99\
+8|\x22\x9bO%\x04\xaeRHMc||\x8cd\
+\xff-\xde\xadd\x99\x9d\x9d\xc5q\x9c\xf3\x05\xe6\xf3;\
+,\xacf\x11\xfe0=\x898\xae\xa7\x9a0)\x90R\
+ 5\x81\xd4\x05\x9a&1\x0c\x0d\xf0\x10\x92\xe6\xd0\x0b\
+\x81B2|\xe3\x06fG\x0f[\xdbyr\xb9\xec\xf9\
+\x01-\xcb\x22\xb7\xbdM&o\x11\xedIp4\x96B\
+J\xa4&\xd04\x81\xa6\x0b|\x86\x86\x94\x1e\xaf\xe6^\
+\xf3\xbb\xdf\xff\x81\xbaUC\xd3\x9b\xefHM\xe07}\
+$\xd3\xd7\xa85\x0c\xf6\xca{\xb8\xae{j\xe0\xb1\xdb\
+L\xa5Ra\xa7P\xa2\xea\xb5!}-(!\x10\x9a\
+D\xd7\x04\xba.0\x0c\x89& \x93Y\xe7\xef\xffx\
+\xc4\xd4\xf4+4\xe1\xf1\xab_\x82a4\xdb\xae\x89\xe6\
+/\xd2\x15au\xc5\x8fm7\xa8\xd5\xaa\x04\x02\x1d\xe7\
+\x01,\xb3[>@\x9a!\xf6-\x85\xd5\x80V\x09\xba\
+\xd1\xec\xb5\xddb\x81o\x1fL2\xfd\xe2\x0d\xfe\xb6 \
+\xa9\xfe!\xaa\xa5m\xb4\xc3\x06\x80@\x13\x12\xa5@h\
+\x06\x8e\xf0\xb3\x9a\xd9 \xd6\x1d=\x1f`\xb5V\xe5\xc0\
+r\xf1\xb5\xf8\x11Rby\xd0@P\xde\xdf\xe7\xdb\x99\
+\xe7L>yN\x03\x83d\xffu\xae\x04\x83\x14\xf3y\
+\xaa{\xdb\xcd\xb9#AH\x81\x8b\xe2\xa0\xa1p\x94@\
+\x1a-,\xaf\xcesch\x80x<\xf1\xf1@\xc7v\
+h\xb8\x1e\xba\xae\xa3k\x12C\x17\x18\xba \xb3\xbe\xc5\
+\xcb\xf9%:\xbb{\xe9\x0cE0\x0c\x1d\x81@\xf1\xe1\
+\x8e%$x\x02l\x0f\x1a\x1e\x08!\xd9\xd9\xd9\xa1n\
+\xd5O\x85;\x11(\xa5\xc0sm@!\x04hR\xa0\
+ip{t\x98k\x03iV2yV3yj\x07\
+\xf5\xe6\xfa\x01P\xcd\xa7\xe0p\xd7\xd1\x04\xeap/W\
+^\x03\xc7\xb60}\xa7?\xfa\x8e\x05\x06\x02\x01Z}\
+\x82J\xc3B)\x0e\x17\xb1@\x0aA0\xd0\xca\xc4\xad\
+4}\x89\x08\xef\x96\xb3ll\x15QJ\x1d\xc2\x04R\
+\x80\xa7\x04\x9aPhB\x80RX\xb5\x12\x9a\xf0\xe8\xec\
+\xec<\x1f`(\x14&\x19\x0b\xb3Q\xb5h3\xc0\x90\
+\xcd\x8a8\xec))\xa0\xbb\xb3\x8d\xf0\xf8\x00\xb9T\x17\
+\x93\xd2\xa1\x5c\xd8@\xa0\x0e{\xf1h\xc8\x15\x07u\x9b\
+\xbd\xfc\x1a\x91p\xe7\x99N\x93c\x81\xed\xed\x01R\xc9\
+\x04F\xc9\x01\xcfFy&NC~\xd7\x9bGP\x9f\
+\x14\xa4\xa3W\x88|y\x87\x1b\x83=\xf8M?G6\
+\xe5\x81m+\x8a;\xdb\xec\xe5\x16\xf8\xe9W??S\
+vs\xecF\xad\xeb:\xe1p\x04\x1f5\xb2[\xebl\
+\x15\xeaTj\x1evC}\xb0 \x84j\x16\x14\xf0\x19\
+\x8c\x0d\x0f\xd0\xe2\xf75\xcfd\xc0v\x14\xc5\xf75V\
+\xdfL\x12\xea\xf0\xf3\xd9\x8f\xee\x9c\x1aw\x22\x10 \x12\
+\x89`h\x82\x9d\x95\x19V\x96\x16\xc9\xbf\xb7\xd9\xdbw\
+q\x5c\xf0\x0e\x99G\xd4\xef:\xf5\xf0\x0f\xcbVl\xef\
+Z\xbc{=C~\xed\x05\xf7\xef\x7f}\xe6\xb4\xeb\xc4\
+\x84UJ\xc9\xc8\xc8m\xde-,03\xfd\x17\x5c\xc7\
+Bp\x1b![\x09\x074\xfc\xdf+A\x00\x1e\xe0\x02\
+\xfb\x96b=Wcvz\x8a\xf9\xc9\xbf\xf2\xb3\xcf?\
+\xe7\xceg?>\x13\xae9:\xa7LX\xcb\xe52\x7f\
+\xfa\xf3\x1fy2=KW\xdf\x047'\xeeq\xb5/\
+A4\xe4\xa7\xcd/1\xe4\x7f\x86\xf4}\xb9\xceZf\
+\x8b\xb9g\x8fXz=\xc9\x97_|\xc1\xd7\xf7\x7f\x81\
+\xae\x9f\xfd\x86qj 4\x93\x87\x87\x0f\x1f\xf0\xcd\xdf\
+\xbea\xb7\x5c\xa7+9D\x22=H$\xdaM\xab\xdf\
+\xc4\xb1-J\xbbyr\xebK\xecl.\xd1bj\xa4\
+\xd3}\xdc\xbb\xfb\x13FGF\x11G\xa9\xd9E\x01\x8f\
+\xa2P(\xf0\xfc\xc5\x0c/_\xce\xb2\xbd\xbd\xc3\x81e\
+\x01\xcdE\xd5\xd6\xdaB2\x91`t\xe46J\x81\xe9\
+7\xc9\xe5\xb2\xd8\xb6\xcd\xc8\xad\x11\x86\x87\xaf_<\xf0\
+(\x5c\xd7\xa5R\xa9P\xab\xd5p]\x17\xc3\xd0ik\
+k\xa7\xbd\xbd\x1d!\x04+\xab+hR\xa3\xb8[\xe4\
+\xd9\xb3)\x84\x90\xfc\xe6\xd7\xbf\xa5\xa5\xa5\xe5\xd4u\x9c\
+\xb8\x8a\x8f\x0bM\xd3\x08\x06\x83\xc4\xe3qR\xa9\x14\xb1\
+X\x0f\x81@\xe0\xf0^\xd2\xe0\xed\xdb\xb7\xd4j5R\
+\xc9$\xe9t\x1f\xa5\xd2{\x9e?\x9f9S\x1d\x1f\x05\
+<.t]'\x95L177\x87\x94\x1a\xa9T/\
+==q\x9eN?\xa5X,^>\x10`xx\x18\
+\xd34y\xb7\xb0@w\xb4\x9bT*\x05J\xf1x\xf2\
+\x9f\x9cvf](P\xd7u\xc6\xc7\xc7YY^\xa6\
+vP#\x91H\x92L\xa6x\xf3\xaf7\xac\xae\xad^\
+>\x10 \x99L\x12\x8b\xc5\x98\x9f\x9f'x%H2\
+\x99$\xd0\x1e\xe0\xe1\xa3\x07\xa7\xba\xe1]8\x10`|\
+|\x9cb\xb1H\xa1P\xa0\xa7\xa7\xb9\xa0\xb2\xd9,s\
+\xaf_}\x1a\xc0`0\xc8\xf0\xd00\xf3o\xe61M\
+\x93x<A\xb4+\xca\xe3\xc7\x8f\xa9T\xca\x97\x0f\x04\
+\xb8y\xf3&\xcaSd2\x19\xa2]]\xa4R)\xea\
+\xf5:SO\xa7>\x0d\xa0\xdf\xefgll\x8c\xa5\xc5\
+%\x5c\xcf#\x16\x8b\x91H$\x98\x9d}A6\xbbu\
+\xf9@\x80\xfe\xfe~\x82\xc1 \x8b\x8b\x8b\x04\x83\x9d\xc4\
+\xe3qL\xd3\xcf\xe4\x93I\x94\xf2.\x1f(\xa5db\
+b\x82\x5c6G\xa5R!\xda\x15%\x1e\x8fS,\x16\
+888\xb8| @4\x1aepp\x90\xcd\xcdM\
+\x0c\x9f\x8f\xd6\xd6Vz{\xd3\xf8\xfe\xc7M\xef\xa3\x92\
+\x85\x1f\x1a\xb6mS(\x16\xf0<\x8fJ\xa5B\x22\x9e\
+\xa0\xa3\xe3\xbf\x7fi\xb8\x14\xe0Qx\x9ewb\x8ex\
+\xa9\xc0\xd3\xc4\xbf\x01\x1d\xed\xef\xf6__\x8c\xd9\x00\x00\
+\x00%tEXtdate:creat\
+e\x002023-03-08T17:\
+27:27+00:008\xef\xae1\x00\
+\x00\x00%tEXtdate:modi\
+fy\x002023-03-08T17\
+:27:27+00:00I\xb2\x16\x8d\
+\x00\x00\x00(tEXtdate:tim\
+estamp\x002023-03-0\
+9T06:18:41+00:00\
+=\x00\x9f\x01\x00\x00\x00\x00IEND\xaeB`\x82\
+\
+\x00\x00\x07&\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x09pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0\
+kB\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\
+\x12)\xc3\xf6 \xcd\x00\x00\x05\xf1IDATX\xc3\
+\xd5\x98\xddo\x1cW\x19\xc6\x7f\xe7\x9cY\xc7\x01\x7f%\
+n\xb1[\xd26n%\xabNh\x8a\x89\xd44\xadI\
+\xd5F\xc8\x154\x84P `\xa9A\xa8\xa2\x22\x01A\
+*@\x88\x1b\x90(\xfd\x03\xf8\x10\x14\xa9B\x0a\x5c\xc1\
+E\xa8@\x5cp\x11\xa9i\x9b\x08Jp\xd5$u\x08\
+\xa4\x0eI[\x9c8\xb1\x1d\x7f\xee\xce\x9cs\xde\x97\x8b\
+\x19\xaf\x9b^t7\xb1\xe3\x84\x95^\xcd\xce\xec\xae\xce\
+O\xcf\xf3>\xef\x99\x1d\xa3\xaa\xca\x0d\xfc\xb2\xd7\x1b\xe0\
+\xff\x1e0\xa9\xf5\x85r\x1a8{~\x9a\xd1\x89\x0aQ\
+\x94\xcd\xeb;X\xd1\xe0\x96\x0d\xb0\xa6\x82\xfb\x0f\x9e\xe2\
+\xafC\xe70\xce\xf0\xf3\xfdG\xf9\xd1\xbe#\xfc\xf7\xe2\
+\xec\x8d\x01\x18E9\xf5\xd68\xad\xab\x9bh\xeaX\xcd\
+\x13;\xee\xe5\xec\xe8\x0cO\xff\xec\x15^~}\x84\xe5\
+HWM\x05\x9d\x01509\x97\xb2\xea\xa6f\xbe\xf2\
+\xf9^\xee\xbe\xab\x9dg\x7fs\x84\xe7^8\xce\xcc\x9c\
+\xbf\xa6\x805{PU\xa8\xa4\x9e4\xcd\x10Q\x8c\x81\
+-\xf7wq\xfb\xad-\xfc\xf9\xc57y\xe3\xf48\xdf\
+\xfc\xdc\x06\xbaok\xbb\x1e\x0a*\xaaBZ\x00fi\
+FZ\xc9\x98-\xa7tv43\xb0m\x1dX\xf8\xde\
+/\x0f\xf3\xa7C\xff!DY~\x05E\x22\x954#\
+K=\xaazY\xdf\x19\x0b[\x1f\xbc\x83\x93o\x8e\xf1\
+\xab?\x1e\xe7\xd8\xf0\x18Om[\xcfMm\x8d\xcb\xa5\
+ H\x14\xcaiF\x96\x05\xb2,\xe03\x8f\xcf<Y\
+\xe6IS\xcf\x5c%c\xedm-l\x7f\xa4\x8b\xa13\
+c|\xf7\x17\x878\xf2\xcf\xd1e\x04\x94H\x9az\xbc\
+\x0fd>\x90\xf9H\x96E|\x16\xf2kY\xa0\x5c\xf1\
+$%\xcb\xd6\xfb\xd7\xd0\xbe\xaa\x81g\xf6\xfd\x9d\xdf\xfe\
+\xe5$\xe54,\x1a\xb0\xa6\xc5Q\x84J\x9a\xc3\xbc{\
+\xdb\xce\xdf\xea\xbb\x8eyuw\xb5\xd2\xde\xd6\xc0\x1f^\
+\xfa7o\x0c\x8f\xb1{\xc7=\xdc\xd1\xd9|\xed\x14T\
+\x89d\x99\xc7\x87\x88\x0f\x92\x97\x8f\x84\x10\xf1>\xe2C\
+\xccU\xf5\xf9y\xb9\x92\xf1\xc1\x95\x96\xbe\xde\x9b\x19\x9d\
+\x9c\xe6\xfb\xcf\x1d\xe2\xc0?\xdeF\xae\xf2\x9e\xa4\xf6\x98\
+\x11\xc1\x87H\x08Bu\x8d\xf9\xb0\xe8\x82r\xf3%\x22\
+\xa8\x0a*B\xcf\xda&\xce],\xf3\xd3\xdf\x0f2t\
+z\x8c]\x8f\xf6\xd0\xda\xd4\xb0\xc4\x80*\xc4\xa8\x84\xa0\
+\xef\xb1X\x17\xac\x95\xcb\xe1D\x16\xaa\xb5\xc9\xf2\x91;\
+Wr\xf0\xb5\xd3\x9c<;\xc1\xee\x1d\x1bX\xdf\xb5z\
+\x09-.\x16\x8c\xa2\xc4\x98W\x88\x0b\xd0!\xe4\xe7>\
+H\xf5\xe8\x0b\xbb\xbd\x0fTRO\x14\xcf]\xb7\x96\x98\
+\x9a\x9e\xe0\x87\xcf\x1f\xe6\x85\x97\x86\xf1\xa1\xbe\x99Y\xfb\
+vK\x05Q\x88\x11\xa2\x14\x15y\x0f\xb0\x12\xa3\x10\xe6\
+{4H\xb57sP!\x84@G\x9b\xa1%\x99\xe6\
+\xc7\xcf\x1f\xe0\xd9}\xafr~|n\xf1\x16\xe7\x8dg\
+\x10\x01\xa9\xf6`~Y\x15D\x15\x15\x10\xd1\xa2\x04\x89\
+\x82\x8a\x22Q\x08>P\x9e\xab011\xc5\xe8\x85q\
+F/N0=S\xe1\xd7\xbf\x1b\xe1\xc4\xf09\x9e\x1e\
+\xd8\xc4\xa6u\xb7`\xcc\xd5\x02\x22\xa0 \x02Z\x1d+\
+\x05`\x01-\x85\x921\xe4\x89\xafTRfg+L\
+\xcf\xcc255\xc3\xf4\xcc\x1c\xe5r\x99,M\xf1>\
+\x80\x06\xb2\xc9\xb7y\xf1\xe0%F.L\xf1\x93\xef\xf4\
+\xd3\xdb\xddqu\x80\xaa\xb9u\xe54\x16\x8d\x9f\xab\x94\
+\xdb\x9b[\x98\xf9\x90\x83\xa5\x19i\x9a\x92VR\xb2,\
+\xc3\xfb\x8c\xe0\x03\xaa`\xad\xc59K\x0c\x060\x18c\
+p\x16\xd0\xc0\xfbM\xa0\xba\xc6\xccT9\x03WA\xe6\
+\xd3Z$6\x07\x15b\x8c\xc5\x11\xc0b\x9d\xc39\x87\
+\x88C\xa2\xc3X\x8b5\x16S\xf8\x98$%\x1a\x9b\xda\
+\xd8x\xef:\xbe5\xd0Go\xf7\x87\x16\xd1\x83(\xd6\
+9\xacu\x18\xa3(\x8a\x15E\xad!J\xae\x841\x14\
+=\xa4\x88\x0a6\xba\xfc7\xd1\x16\x9f\x1b0\x8014\
+46\xf2\x81\xa6f>\xfdp/_}|\x13\x9d\xed\
+\xef\xbf\xcb$5\xd8P\x94\xa4\xe4(\x95\x92|\xde\xb1\
+\x10\x06c\x04\x88\xd5\x9e\xb4V\xb1V\xb0\xd6b\x8d\xa9\
+\xc2\x19\x0c\xce9\x1a\x1aW\xd0ys\x1bO=\xde\xc7\
+\xa7\xb6\xac\xa7\x94\xd4\xfeoSW\x8a]\xc9\x91$\x09\
+*\x92[l\x15\x11SX\x9a\xc7Y\xad\x22\xd6\xe6p\
+\xd6b\xcc\x82z\xaedQ\xe0\xbe\x9e\xb5|c\xe0a\
+z\xee\xbc\xa5\xb6q\xf5[,\xb8$\xa1\x94$\xc5N\
+Q\x84\xa4\xe8\xa7\xcb\x94\xab\xda\x99[j\xac\x05'\x94\
+\xf0|\xe9\x13\x1byb\xfb\x83\xb44\xad\xac\x1b\xae~\
+\x05\x93\x5cA\x91X\x00\x9a\xdcYU\xd4)\x22\x16c\
+-\xc6.\xd8j\x13Cev\x8a\x8e&\xc3\x9e\x9d\x9f\
+\xe4\xa1\xfbz\xaa!YR@E\xb0\x89\xa5Tr\xc4\
+h\xd0B=UP\xa7X\x11\xac5\xcc/m\xad!\
+\x9a\x8cK\xe3o\xf1\xf1\xf5k\xd8=\xd0\xcf\x9a\xce\xf6\
++\x06\xab\x1fP\x15S(hL\xac\xaa\x97+Y(\
+W\xcc5\x93X&&G\x89\x93#\xec\xf9\xcc\x03|\
+\xb6\x7f3\x0d\x0d\xa5\xab\x86\xab\x030O\xadq\x05 \
+T\xd5\xb3VsK\x01\xac!\xb3\x9e3g\x86\xe8j\
+\xb6\xec\xdd\xbb\x93\x0d=]\x8b\x02\xbb\x02\x05\x05\x9b8\
+J\x89\xc3\xa0\x10@\xac\x1490hb\x19\x9d\xba\xc0\
+\xb9S\xc7\xd8\xbe\xe9n\x9e\xdc\xd9O[K\xd3\x92\xc0\
+\xd5\x07\x88Bug\xd0\x5c9\xf2\xa4\x96]\xe4\xc4\xf0\
+Q\x1a/\x8d\xf0\x83/?\xca\xd6\xbe\x8f]U\x10\x16\
+\xad \xce\xe2\x9c#\xe6\x83\x0fq\x86w\xa6\xc7\x19\x1a\
+|\x85\xcdkV\xb1\xf7\xebOr\xfb\x87;j.v\
+\x8d\x00\x15\x8a\xd1\xa1\x0a\xb3&2x\xfa(\x97N\x0c\
+\xb2\xe7\xb1>\xbe\xb0\xed\x11V\xac\xb8\xb2\xdb\xf8%\x05\
+\xb4\x062\x89\xcc\x06\xcf\xd9\x99\x0b\xbcz\xf8\x00]\xae\
+\xc23\xdf\xde\xc5G\xef\xe9\xbef`u\x01Zki\
+_\xd5\xcak\x13\xef0\xfc\xaf\xe3\x8c\xbc~\x84/n\
+\xe9\xe5k\xbbv\xb0\xaa\xad\xe5\x9a\xc3\x01\x98Z\xcf\xa8\
+\x07O\x0c\xb3\xffo\xc7\x88\xe7\xcf\xd3\xdf\xb7\x91\x87\x1e\
+X\xfa ,\x0a\x10 \xcb<I\xe2\xb0v\xf9\x9f\x18\
+\xd7\x05x=_7\xfcC\xf4\xff\x01;\x99\xc4\xf6\x95\
+\xaa\xb1\xc6\x00\x00\x00%tEXtdate:\
+create\x002023-03-0\
+8T17:27:26+00:00\
+\x9e\x98\xa5\x85\x00\x00\x00%tEXtdate\
+:modify\x002023-03-\
+08T17:27:26+00:0\
+0\xef\xc5\x1d9\x00\x00\x00(tEXtdat\
+e:timestamp\x002023\
+-03-09T06:18:41+\
+00:00=\x00\x9f\x01\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
+\x00\x00\x07\xb3\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x09pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0\
+kB\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\
+\x12)\xc3\xf6 \xcd\x00\x00\x06~IDATX\xc3\
+\xcd\xd8[S\x1b\xc9\x15\xc0\xf1\x7f\xf7\x8c4\xe2\x22\x18\
+tCW\x046\x86\xb5\x0dfqU\xd6\xb1\xf3\xb4\x95\
+\xdd\xa7x\xf7\x03$\xf9\x88\xa9\xe4!y\xd9\xca\xe3\xda\
+1\x8bm\xb0\x1c\x8ccs\xc7\xc6\x12\xba\x80@ 4\
+3\x9a\xe9<\x08yq*\x01\xb16\xc1\xa7\xaa\xd5z\
+P\xcd\xfc\xa6\xa7O\xf7i\x09\xa5\x94\xe23\x0e\xfdS\
+\x5c\xe4\xe43\x0a!.\x1f\xa8\x94\xc2u\x9b8\x8e\x83\
+m;\xd8\x8e\x8d\xe7\xba \x04>]\xc7\xe7\xf3c\x18\
+\x06~\xbf\xff\xff\x0ft\x1c\x9b\xc3\xc3C\xca\x95\x1d\xd6\
+7\xb7\xc8\x17J\x1c\x1c\x1c\xe0\xb9\x0eR\xd3\xe9\xe9\xee\
+\x22\x1a\x0d\x91J\x0c\x12\x09\x87\x09\x87#\x18\x86\xf1\x8b\
+\x81\xa2\xd39\xa8\x94\xe2\xf0\xf0\x80R\xa9L\xee\xc5\x12\
+\x1b[e\xc2\xe10\xd9\xa1\x14\x03f?>]\xc7\xb2\
+-\x8a\xa5\x0a\xabk\x1bTw+\x0c%\xc3\x5c\xbb\x9a\
+edx\x84P(tq@\xa5\x14\xd5j\x95\x8d7\
+o\x99\xcd-\x13\xec\x0f3=u\x93\x90\xd9\x87\x94\x1f\
+\xce9!\x04\xcd\xa6\xcbV\xbe\xc8\xcc\xecS\xec\xfa\x0e\
+7\xaf\xa5\x99\x9c\x9c$>\x18\xbf\x18`u\xaf\xca\xea\
+\xda\x06O\x166\xb92:\xc6\xd8\xd5a4M \x04\
+H!@\x80\x10\x80\x02\x05(O\xa1\x104,\x87'\
+s96W\x17\xf9bd\x90{w\xef\x12\x0a\x85\xcf\
+\x05\x94g\xfd\xa0\xd1h\xb0\xf5v\x8b\xe7\xaf\xb6\xc8^\
+\x19gx8\x8b\xab\x14\x9e\x02%Z2q\xdc#[\
+\xbd\x12\x02W)\xa4\xa61==Ez\xe4&\xaf\xd7\
+\xf2\xe4r9\x1c\xc7\xf9\xb4\xc0R\xa9\xc8\xd2z\x1e\x11\
+\x08\x93H%q=\xd5\x82I\x81\x94\x02\xa9\x09\xa4.\
+\xd0\xb4V\x93\xc7M\xb4\xb1H\xc6\xaf_\xc7\xe8K\xf0\
+n\xbbD\xa1\x90\xfft@\xcb\xb2(lo\xb3Y\xb2\
+\x88%R\xb4\xdf\xa5\x90\x12y\x0c\xd2t\x81\xae\x09t\
+\xfd\xf8\xfb\xfb&\xdfc\x03\x86\x9ft\xf6\x1a\xf5\xa6\x8f\
+\xbd\xfd=\x5c\xd7\xed\x18x\xea2S\xab\xd5(\x96\xab\
+\x1cz=H\x7f\x17J\x08\x84&\xf1\xfb5\x0c\xbf\xc4\
+\xa7\x81&A\x9exL\xa5\xc0S\xa0\xb9 5\x89.\
+],\x01\x91h\x84\xf5\xb5\x00\xb6\xdd\xa4^?$\x18\
+\xec\xfb\x14\xc0}v\xf6\x8f\x90F\x88\x03Ka\xb9\x10\
+\xc0\xe3\xd9\xfc<\x07\x07\xfb\x18>\x1d)\xa1\x95\xc7\xad\
+O\x85B)p=E\xb3\xe92q\xe3:\xfdf\x04\
+\xa1\xf9pD\x80\xf5\xcd\xb7\xc4\x07c\x9f\x06xX?\
+\xe4\xc8r\xf1w\x05\x10Rb\xb9`{\x1e\x0f\x1e>\
+\xa2X\xda\xa5\xdf\x1c\xe0C^+\x8b\x11\xd0t\x1cv\
+\xcb\xdb\xf4\xf5\x9b\x8c\xf5Eq\x94@\xfa\xbaX]_\
+\xe4\xfa\xd8U\x92\xc9\xd4\xc7\x03\x1d\xdb\xa1\xe9z\xe8\xba\
+\x8e\xaeI|\xba@\xd7\xa0\xaf\xbf\x8f\xae`\x94X\x22\
+M{\x19\xfc\x00\x88\xc0\xb2\x1al,/\xa2\xf9\xfd\xd8\
+\x9e\xa2\xe9\x81\x10\x92b\xb1H\xc3jt\x84;\x13(\
+\xa5\xc0sm@!\x04hR\x1004~w\xff[\
+t\xa9\x11\x08\x04\x10\x88\xf7\xb8\xe3\xa5\x10\x05\xb8\x9e\xcb\
+\xc1\x9dk\x04M\x93\x86\xdbb+\xaf\x89c[\x18\xfe\
+\xce\xb7\xbeS\x81\xc1`\x90n\xbf\xa0\xd6\xb4P\xaa%\
+\x90R2\x94N\xa0\xcb\xd6\x12 \x8fa'\xf7\x13\xaf\
+\xddb&G\x8e\xc2\xae6A)\xacz\x15Mx\x0c\
+\x0c\x0ct\x0c<u\x99\x09\x85\xc2\xa4\xe3a\x82\xbaE\
+\x8f\x0f|R\xa0\x94\xc2S\x0a\xe5\xfd<\x5c\xe2D\xe3\
+D\xaf<u\x5c\x8a)\x8e\x1a6{\xa5\x0d\x22\xe1\x81\
+s\xed&\xa7\x02{{\x83d\xd2)F\x06\x0d\xa4g\
+\xa3<\x0f\xa7\xd9\xca\xd2v\xb4G\xaf\xbd\x91\xfc\xe7\x88\
+*\x0fl[Q)n\xb3WX\xe2\xcb/\xa7\xcfU\
+\xdd\x9c\x0a\xd4u\x9dp8\x82\x9f:\xf9woxW\
+nP\xab{\xd8M\x85\xe2D\x91z\xf2U\x1f\xcb\xda\
+s\xd1v\x14\x95\xdd:\xeb/g\x08\xf5\x05\xf8\xeaW\
+w:\xc6\x9d\x09\x04\x88D\x22\xf84Aqm\x8e\xb5\
+\x95eJ\xbb6{\x07.\x8e\x0b\xde1\xb3M\xfd0\
+\x93\xc1\xb2\x15\xdb;\x16\xaf_\xccQ\xdax\xc6\xfd\xfb\
+\xdf\x9d\xbb\xec:\xb3`\x95R21q\x8b\xd7KK\
+\xcc=\xfd+\xaec!\xb8\x85\x90\xdd\x84\x83\x1a\x81\x13\
+W\x10\xb4\x92\xc3\x05\x0e,\xc5\x9bB\x9d\xdc\xd3Y\x16\
+g\xfe\xc6o\xbf\xfe\x9a;_\xfd\xfa\x5c88G\xc1\
+\xba\xbf\xbf\xcf\x9f\xff\xf2'~z\x9a#:|\x9b\x1b\
+\xb7\xefqe8E,\x14\xa0' \xf1\xc9\x9f_\xe9\
+\xee~\x83\x8d\xcdw,<y\xc8\xca\x8b\x19\xbe\xfd\xe6\
+\x1b\xbe\xbb\xff=\xba~\xfe\x13F\xc7@h\x15\x0f\x0f\
+\x1e\xfc\xc8\x0f\x7f\xff\x81\x9d\xfd\x06\xd1\xf4\x18\xa9\xec(\
+\x91\xd8 \xdd\x01\x03\xc7\xb6\xa8\xee\x94(\xbcY\xa1\xb8\
+\xb5B\x97\xa1\x91\xcd\x0es\xef\xeeo\x98\x9c\x98D\xb4\
+K\xb3\x8b\x02\xb6\xa3\x5c.3\xffl\x8e\xe7\xcfsl\
+o\x179\xb2,\xa0\x95T=\xdd]\xa4S)&'\
+n\xa1\x14\x18\x01\x83B!\x8fm\xdbL\xdc\x9c`|\
+\xfc\x8b\x8b\x07\xb6\xc3u]j\xb5\x1a\xf5z\x1d\xd7u\
+\xf1\xf9tzzz\xe9\xed\xedE\x08\xc1\xda\xfa\x1a\x9a\
+\xd4\xa8\xecTx\xf2d\x16!$\x7f\xf8\xfd\x1f\xe9\xea\
+\xea\xea\xf8\x1egf\xf1i\xa1i\x1a\xa6i\x92L&\
+\xc9d2\xc4\xe3\x09\x82\xc1\xe0\xf1\xb9\xa4\xc9\xabW\xaf\
+\xa8\xd7\xebd\xd2i\xb2\xd9a\xaa\xd5]\xe6\xe7\xe7\xce\
+u\x8f\x8f\x02\x9e\x16\xba\xae\x93IgXXX@J\
+\x8dLf\x88D\x22\xc9\xe3\xa7\x8f\xa9T*\x97\x0f\x04\
+\x18\x1f\x1f\xc70\x0c^/-1\x18\x1b$\x93\xc9\x80\
+R<\x9a\xf9\x07\x9d\xce\xac\x0b\x05\xea\xba\xce\xf4\xf44\
+k\xab\xab\xd4\x8f\xea\xa4Ri\xd2\xe9\x0c/\xff\xf5\x92\
+\xf5\x8d\xf5\xcb\x07\x02\xa4\xd3i\xe2\xf18\x8b\x8b\x8b\x98\
+\xfd&\xe9t\x9a`o\x90\x07\x0f\x7f\xec\xe8\x84w\xe1\
+@\x80\xe9\xe9i*\x95\x0a\xe5r\x99D\xa2\x95P\xf9\
+|\x9e\x85\x17\xff\xfc<\x80\xa6i2>6\xce\xe2\xcb\
+E\x0c\xc3 \x99L\x11\x8b\xc6x\xf4\xe8\x11\xb5\xda\xfe\
+\xe5\x03\x01n\xdc\xb8\x81\xf2\x14\x9b\x9b\x9b\xc4\xa2Q2\
+\x99\x0c\x8dF\x83\xd9\xc7\xb3\x9f\x070\x10\x08055\
+\xc5\xca\xf2\x0a\xae\xe7\x11\x8f\xc7I\xa5R\xe4r\xcf\xc8\
+\xe7\xdf]>\x10`dd\x04\xd34Y^^\xc64\
+\x07H&\x93\x18F\x80\x99\x9ffP\xca\xbb|\xa0\x94\
+\x92\xdb\xb7oS\xc8\x17\xa8\xd5j\xc4\xa21\x92\xc9$\
+\x95J\x99\xa3\xa3\xa3\xcb\x07\x02\xc4b1FGG\xd9\
+\xda\xda\xc2\xe7\xf7\xd3\xdd\xdd\xcd\xd0P\x16\xff\xff8\xe9\
+}T\xb1\xf0K\xc3\xb6m\xca\x952\x9e\xe7Q\xab\xd5\
+H%S\xf4\xf5\xfd\xf7\x7f\x1a.\x05\xd8\x0e\xcf\xf3\xce\
+\xac\x11/\x15\xd8I\xfc\x1b\xf8\xd3\xe2\x07\xbf\x88\x01N\
+\x00\x00\x00%tEXtdate:cre\
+ate\x002023-03-08T1\
+7:27:27+00:008\xef\xae\
+1\x00\x00\x00%tEXtdate:mo\
+dify\x002023-03-08T\
+17:27:27+00:00I\xb2\
+\x16\x8d\x00\x00\x00(tEXtdate:t\
+imestamp\x002023-03\
+-09T06:18:41+00:\
+00=\x00\x9f\x01\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x06\x9c\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x09pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0\
+kB\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\
+\x12)\xc3\xf6 \xcd\x00\x00\x05gIDATX\xc3\
+\xcd\x98\xdbR\xdbF\x1c\x87\xbf]I6v\x8c\x09\x81\
+`\x93\xd0\xa6!\x99\x98So;\x9d6\x9d\xf4\xb6\xcf\
+\xd1\x9b>`\x1f\xa0w\xbdKho\x80\x90\x03I\x98\
+6q0\x03\xc6\x08[\xd2\xee\xf6B\x07\xdb\xb2%\xdb\
+t\x9afgd\xaddi\xf7\xdb\xdf\xff\xb0\xbb\x12\xc6\
+\x18\xc3g\x5c\xec\xf4\x8dN\xa7\x83\xeb\xba\xff\x0bL\xb9\
+\x5c\xa6R\xa9d\x03j\xady\xfa\xf4)\x85B\x81R\
+\xa9\xf4\xc9\xc0\x84\x10\xb8\xae\x8b\xe7y<~\xfc\x18)\
+\xe5x@c\x0c\xbe\xef\xb3\xb5\xbdM\xb1PD\x1b\x8d\
+\x14\x02\x84@ @\x00\xc6D\xd7\x80\x10a\x07\xfd\x9e\
+\xc6^\x0f\xdd\x1b\x07(%\x97\x9d\x0e\xcf\x9e=#\xed\
+q#&\x16B\xa0\x94\xc2\xbd\xba\xa2\xdb\xbd\xa2\xd7\xf3\
+\x08\x19\x05\xc5b\x91R\xa9\x84\x88A\xd2\xe74d\x06\
+\xb0\x14\xe18c\x14)\x04Z\xeb\xa4\x9d\x5c\xc0\xb8A\
+iI\xf6\xf6\xf6x\xf5\xf2%\x95J\x85n\xb7\xcb\xd2\
+\xf22?>y\x82\x14\x22\xec+Rr\x148l%\
+:\x11c\x0a\x01\xda\xc0\xfbs(\xd8\xb0X\x06K\x82\
+A\x92U\xc6*\x18\x9e%\xbe\xe7\xf1\xa8\xd1`gg\
+\x87w\xef\xde\xb2\xf7\xfc\x88\xf7\x97\x0e`\xa1\x8cAi\
+\x816\xa0ttDu=PW\xda\x8c\xfc\xf7\xc7\xb1\
+a\xf7\xd8\xb0Y\x17|\xff\x00\xbe]\x07G\x88\xe9\x00\
+\xe3\x22#\xb3:\xb6M\xb1X\xc4q\x0a\x18\x04\x9e\x92\
+\x18$\x81\x86@\x83R&\xa9\x07\x11h\xa0\xa2k5\
+p/\xbaV\x1a\xda]8\xe9\x18\x8e\xcf\xe0}[\x10\
+h\x81\x93\xe1\xa4\xa3\x80Q\x10 \x04\x96e\xb1\xbf\x7f\
+\xc0\x87\x8f-:\x17\xe7\xccW*\xdc_\xf4\x91R\x0d\
+\x997\xf6\xb7\xecs\xdf\xf4\xda\xc0\x8b\xa6\xe1\x97'\x92\
+\xbb7\x05s\x0e\x80\xa4\xd3\x99\x12\xd0\x0c8\xf5\xe6\xd6\
+\x16\xf5;k\xfc\xed\x96yP\xeer\xabZF\x08\x19\
+=!\xa2\xe7\x13\x0f\x8b\xde\x15\x91\xf3\x8b\xa4A\x13\xc1\
+\xc6\x01\xfa\xa8&\x92\xbe\x8c\x01!\xb3c<\xd3\xc4\x00\
+\x0b\x0b\x0bT\xaa\x8b\xb8's\xac-y\x94\x1d\x831\
+&\xf4\xd3\x94RI\x04\xa6\x15L\xd7\xe9Go\xac\xaa\
+\x10\xd7\x00\x14B`L\x08\xe4\x07:\xcaO\x03p\x19\
+&\x1d\x01\x1d\x038\xae/f\x0d\x92\xc1\x14\xeb\xa9\xc8\
+\x94\x22J\x1e\x830S\x00\xe6)\x14\xf7\x95\xf5D\xb6\
+\x89E?\x8f\xf9j\xb0\xa3\x81\xe0\x18\xcc\x7f\x199q\
+\xacZS\xdc\xcb\x07\x8c:\x8f\x9d>\x04\x1c\xa3\xd4\x18\
+\xa8tg\x93\xd4\x9bT2g\x92X=\x22@\x13\xcd\
+\x04i\x90\x11%\xa7\x04\x9b\x16<\xdf\xc4Q\xce\xf1U\
+8q&SX\x0an\x12\xd8\xbf\x81\xb5'\xbf\x94V\
+pz\xb8i\xc0&\xad\x97s\xa3\xd8D\xed\xc7A2\
+-\xdc,*\x8e\xf3\xdb\xa9\x00\x13\x13'\x0a\x0e\x9b8\
++Z?I\x90$ZE\xd1\xd27\xb1 \xed\x83\xb3\
+\x80]G\xc5\x5c\x05\x89\x14\xf4\x828\xe1\x08LF\x07\
+\xff\x95\x8a\xd9y0\x91\xb1\xaf`2\x93LP\xe3:\
+*\xce\x048\xbc\x93\x10\xfd4\x13\xafX\xa6\x08\x8e<\
+\x15\xd3\x91{\xfd \x89\x0c\x1a\x07I\x18\xda\x93\xd5\x1a\
+W\x8f\x17\x1e\xf1\x91\x06TZ3.\xe3d/\xf9\x07\
+~}e\xc2 \x89\xc0\xb3\xde\xc9\xaak\x1d\xae\x86\xb4\
+\xd6(\xa5\xd0Z\xa3\xb5N\x9e\x93R\xe2\xf9\x01f\x8c\
+\x87OH3ap\xf8\x01#\xa3\x9b\xe4_\x83pJ\
+)\x94R\xf8\xbe\x9f\x1cA\x10$;9\xc7)\xd0\xee\
+\x5cb\xb4\x19\x19\xff\xe44\x03\xd1r\x8b\x81\xc8\x9e\x0e\
+4\x86\xf3}\x9f^\xaf\x87\xeb\xba\x5c\xba.\xdd\xab.\
+\x9e\xe7\xa1\x94\xc2v\x1c\x0as%\xde\xbc9b\xfd\xde\
+\x97HiM\xa9`\xda\xc4\xa6\xef\x82\xd3Dg\x0c\xe7\
+y\x1e\xddn\x97v\xbb\xcd\xd9\xd9\x19\xe7\xed\x0b\x5c\xd7\
+\xc5hMe\xbe\xc2|\xc1\xe1\xf8\xed\x11_\xdcY\xa5\
+\xd1h\xcc`b\xfa@\x89\x82\x13\xa0\xe2{\xb1\xbf\x05\
+A@\xaf\xd7\xa3\xddn\xf3\xa1\xd9\xa4\xd5jaY\x16\
+\xd5j\x95\x95\x95\xdb\xd8\x96\xe4\xf5\xd1k\xd6\xd6\xee\xb2\
+\xbd\xb5=\xf4\xc9c2\xa0\x08\xf1\x84\x08\xb7\x8b\xb9\x03\
+I\x81\xc6\x80\xbe\xef\xe3\xba.gg\xe7\x9c\x9c\xb4X\
+]\xad\xb3\xbd\xb5\x85\x10\x82\xd3\xd3\x16\xfb\x07\xfb\xd4k\
+\xablnn\x8e\x85\x03\xb2\xb7\xf4\x82p\x0f\xfb\xa1\x1d\
+\x026\xdb\x06Oen\x1d\x86@\x8d1\x89y;\x9d\
+K\xda\xed6\xae\xeb\xb2xs\x11\xdb\xb6i\xb5N\xd8\
+?\xd8\xa7\xb6R\xcb\x85\xcb\x05\x84\xf0\xb3\xc4o\x07\x8a\
+\xdf_)~\xfd3\x88\x229\x7f&\x88\xf3\x5c\x08\xe8\
+suuE\xe7\xf222\xed<\x1f?69x~\
+@m\xa5\xce\xc6F>\x5c\xae\x89\x0d`K\xc1\xc3\x15\
+\xc9E\xd7poI2\xe7\x84\x1b\xefI\xa5\xef\x83>\
+=\xaf\x87\xd7\xebq\xfb\xf62\xdd^\x97\x17\x87\x87\xd4\
+ku\x1a\x8d\x8d\x89p\xb9\x80\x82\xf0;\xca\xce\x1d\xc9\
+w\x0f,\xbe\xb9?\x1c\xfeY\xd3\xd3\xe0l\xa1\x94F\
+\x05\x0a\xa7P`\xa1Z\xe5\xc5\xe1!\xb5Z\x9dF\xa3\
+1\x15\x5c\xae\x89\x0d\xa0\x8d\xe1\xd6\x0d\xf8\xf9\x07\x87\xaf\
+\x96\x04\x03\xc9?\xb3\x0co\x07@Z\x16\xd5\x9b\x8b4\
+\x9b\xcd\x99\xe1\xc6*h\x8cAJ\x89c\xdb\xc9W\x84\
+\x9f\xbe\x06\xdb\x1a\xde|\xe7\xadf\xa4e!-\x0b\xbb\
+P\xc4.\xdd\xa0\xf5\xd71\xeb\xf7\xbe\x9c\x19n\x040\
+\xcea\xbb\xbb\xbb\x94J\xa5\x10\x10\x86\xa7\x95h\x10y\
+&\xd6\xc6\xe0+\x8d\xe7\x07t:\x1d\x1a\x0f\xd7\xd9\xd8\
+\x98\xce\xe7F\x06\x9c\xfe\xca\x7fzz\xca\xc5\xc5\xc5\xcc\
+\x0de\x95R\xa9\xc4\xf2\xf2\xf2\xb5\xe0\xc6\x02~n\xe5\
+\x1f\x17\xf7\x97\x9b\xb7\xd04\x1a\x00\x00\x00%tEX\
+tdate:create\x00202\
+3-03-08T17:27:26\
++00:00\x9e\x98\xa5\x85\x00\x00\x00%tE\
+Xtdate:modify\x0020\
+23-03-08T17:27:2\
+6+00:00\xef\xc5\x1d9\x00\x00\x00(t\
+EXtdate:timestam\
+p\x002023-03-09T06:\
+18:41+00:00=\x00\x9f\x01\x00\
+\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x03\x89\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x01G\
+PLTE\xff\xff\xff\xfe\xfe\xfe\xf2\xf2\xf2\xef\xef\xef\
+\xf8\xf8\xf8\xd5\xd5\xd5\xe2\xe2\xe2\xe3\xe3\xe3\xe3\xe4\xe4\xe4\
+\xe4\xe4\xe5\xe5\xe5\xe6\xe5\xe5\xe6\xe6\xe5\xd6\xd6\xd6\xf7\xf7\
+\xf7\xd9\xd9\xd9\xea\xeb\xec\xe2\xe7\xec\xdd\xe4\xed\xe9\xec\xee\
+\xec\xee\xf0\xea\xec\xed\xcb\xcc\xcc\xc6\xc6\xc6\xe0\xe2\xe2\xf1\
+\xf3\xf4\xf0\xf2\xf3\xe8\xed\xf4\xe5\xeb\xf3\xf2\xf3\xf5\xda\xda\
+\xda\xe0\xe5\xed\x93\xb9\xee\x82\xb0\xf1\xb4\xce\xf1\xbe\xd4\xf3\
+\xc1\xd3\xec\xb8\xbc\xc1\xc8\xc8\xc8\xbf\xc9\xd6\xce\xdf\xf7\xc3\
+\xd8\xf5\xa1\xc4\xf4{\xad\xf3\xcb\xdc\xf5\xdb\xdb\xda\xec\xee\
+\xee\xe0\xe6\xee\xd9\xe3\xf0\xe9\xed\xf1\xec\xef\xf2\xea\xec\xef\
+\xc9\xc9\xca\xc4\xc5\xc5\xe0\xe1\xe3\xf2\xf5\xf7\xf1\xf3\xf6\xe7\
+\xee\xf7\xe1\xea\xf6\xf3\xf5\xf7\xdb\xdb\xdb\xef\xf0\xef\xf1\xf1\
+\xf1\xf3\xf3\xf3\xf4\xf5\xf5\xf5\xf5\xf5\xf6\xf6\xf6\xf9\xf9\xf9\
+\xfa\xfa\xf9\xf0\xf1\xf1\xf3\xf4\xf4\xfa\xfa\xfa\xfb\xfb\xfb\xf1\
+\xf2\xf2\xf6\xf7\xf7\xfc\xfc\xfc\xf9\xfa\xfa\xdc\xdc\xdc\xf4\xf4\
+\xf4\xfd\xfd\xfd\xda\xdb\xdb\xfe\xff\xff\xd8\xd9\xd9\xf7\xf8\xf8\
+\xee\xee\xee\xde\xde\xdf\xd8\xd9\xda\xcf\xd1\xd1\xea\xea\xea\xcc\
+\xcd\xcd\xc3\xc4\xc4\xc9\xca\xca\xed\xee\xee\xf2\xf3\xf3\xd0\xd0\
+\xd1\xc5\xc6\xc6\xe9\xe9\xe9\xd4\xd5\xd4\xf8\xf9\xf9\xbf\xc0\xc0\
+\xcb\xcb\xcc\xd7\xd7\xd6\xe8\xe8\xe8\xc1\xc2\xc3\xcb\xcb\xcb\xf0\
+\xf0\xf0\xd3\xd3\xd3\xd5\xd7\xd8\xc8\xca\xcc\xe5Kfq\x00\
+\x00\x00\x01bKGD\x00\x88\x05\x1dH\x00\x00\x00\x09\
+pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0kB\
+\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\x142\
+\x1f\xc9N\xa7\x00\x00\x01\x06IDAT\x18\xd3U\xd0\
+WS\x021\x10\xc0\xf1\xcd]$\x1eJ\xec]Q\xb0\
+\xf7\x86\x1d\x85\xbb\x08wr\xc0YP\xb1c\xaf\xdf\xff\
+\xd9$\x1b\x1f\xfc?\xfefwvf\x01\x88e\xff\xcb\
+\x22\x00@\x9bb1\xc6\x9a\x9d\xb8\xaa\xa55\x9e\xa0\x12\
+y[{GgWwOo_\xff\xc0\xe0\xd0\xf0H\
+\x92k\x1c\x1dK\xa5\xc7'&\xa7\xa6gf\xe7\xe6\x17\
+\x16\x11\x97\x96WV\xd7\xd63\x1b\x9b[\xdb;\xbb{\
+YD{\xff\xc0\xca\xe5]\x8fS*\x0e\x05b\xb2P\
+\xb0\x8a\x8a\x84/\x0b\x0c\x1eI+)\x0ad\xa1\xc1\x5c\
+\xd1\xe5\xb4,)TU\x10\xab\xf9\x12\xd5\x14\xa9\x10\x8f\
+]O\xeej#2\xc4\xac\xc7\xd1\x08\x01BN\x0cr\
+j\x8c\x84\xc2\xe3\xa7\x88gjP\x99\xa8\x9d'..\
+}\x8dT\x04\x1a\xfd\xfa\xd5u\xe6\xe6\x16\x10\xcb\x81:\
+\x12\xdd\xdd?4\x1em@|\xd2\xdb\x10\xd6\x9f_^\
+\xd1\x80W\xd0 z{\xff\xf8D\x03\xfa\xc5\x98\xe3\xc8\
+\x1f\xb3\xef\x1f3\x07@j\x8d\xbf\xaa\x86~\x01v\xa9\
+<\x5c=\x11\xff\x81\x00\x00\x00%tEXtda\
+te:create\x002023-0\
+3-08T17:27:26+00\
+:00\x9e\x98\xa5\x85\x00\x00\x00%tEXtd\
+ate:modify\x002023-\
+03-08T17:27:26+0\
+0:00\xef\xc5\x1d9\x00\x00\x00(tEXt\
+date:timestamp\x002\
+023-03-09T06:20:\
+50+00:00\xdd\xe8\xb2\xde\x00\x00\x00\x00\
+IEND\xaeB`\x82\
+\x00\x00\x03\xf2\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x01\xe0\
+PLTE\xff\xff\xff\xf9\xfa\xfc\xde\xe5\xf1\xed\xf1\xf7\
+\xfd\xfd\xfe\xe9\xee\xf6\x97\xb0\xd4\xa0\xbe\xdd\xab\xc3\xde\xea\
+\xee\xf5\xcd\xd8\xea\x83\xa2\xcc\x9a\xbb\xda\xbb\xda\xec\x93\xb3\
+\xd2\xe3\xe9\xf2\xf5\xf8\xfb\xab\xbe\xdb}\x9e\xc7\x9f\xbf\xd8\
+\xac\xcb\xdf\xaa\xc9\xde\x8a\xa9\xc8\xe4\xe9\xf1\xe0\xe7\xf2\x8b\
+\xa7\xcc\x7f\xa0\xc5\x9c\xba\xd2\x9e\xbd\xd4\x9e\xbc\xd4\x83\xa1\
+\xc1\xe3\xe9\xf0\xfd\xfe\xfe\xc0\xcf\xe4u\x95\xbf\x80\xa0\xc0\
+\x92\xaf\xc9\x93\xb1\xcb\x94\xb3\xcd\x95\xb4\xce\x95\xb4\xcf}\
+\x9b\xbd\xe3\xe8\xf0\xef\xf3\xf9\x9a\xb1\xd1f\x88\xb1{\x99\
+\xb7\x84\xa2\xbe\x87\xa6\xc3\x8b\xaa\xc8\x8e\xad\xcb\x8f\xaf\xcd\
+\x8f\xaf\xcey\x97\xba\xe3\xe8\xef\xd5\xdf\xecu\x92\xba[\
+|\xa2m\x8b\xa9u\x93\xb2{\x9a\xba\x81\xa0\xc1\x86\xa6\
+\xc8\x8a\xaa\xcc\x8c\xad\xcf\x8c\xad\xd0x\x96\xba\xe3\xe7\xee\
+\xc5\xd1\xe4Tu\xa2Qo\x92[x\x98c\x81\xa3l\
+\x8b\xadt\x94\xb8|\x9c\xc2\x83\xa4\xca\x88\xa9\xcf\x8b\xac\
+\xd2\x8c\xad\xd4y\x97\xbc\xd0\xd9\xe8]z\xa26U}\
+A_\x85Sr\x99a\x81\xa8m\x8e\xb7x\x9a\xc3\x82\
+\xa3\xcc\x8a\xab\xd3\x8f\xb0\xd8\x91\xb2\xda}\x9a\xbf\xe3\xe7\
+\xed\xe4\xe9\xf0x\x8f\xae,Lz0R\x83Df\x98\
+Vy\xacf\x8a\xbdu\x98\xca\x82\xa4\xd4\x8b\xad\xdc\x8e\
+\xb0\xe0z\x98\xc0\xe3\xe7\xec\xf9\xfa\xfb\xaa\xb8\xcbIh\
+\x92>c\x96Pv\xac`\x86\xbcp\x95\xca\x7f\xa3\xd7\
+\x8e\xb1\xe3\x94\xb7\xea|\x9c\xc4\xe3\xe6\xeb\xd2\xd9\xe2l\
+\x86\xa5Ls\xa4a\x87\xbdq\x95\xca\x80\xa4\xd7\x8e\xb1\
+\xe4\x95\xb8\xea{\x9d\xc4\xe2\xe6\xeb\xee\xf0\xf3\x93\xa5\xb9\
+U{\xa5g\x8f\xc3y\x9d\xd2\x83\xa6\xda\x86\xaa\xdet\
+\x99\xbf\xe2\xe6\xea\xfd\xfd\xfd\xbc\xc5\xd0b\x83\xa3`\x8c\
+\xbcu\x9a\xcfv\x9b\xd0k\x93\xb8\xdf\xe3\xe7{\x94\xaa\
+R\x7f\xa9c\x8d\xc2a\x8c\xb2\xe2\xe6\xe9\xf7\xf7\xf8\xa2\
+\xb0\xbcQ{\x9b`\x8f\xac\xe6\xea\xec\xda\xdf\xe3\xcf\xdc\
+\xe2\xfb\xfc\xfcO\xd6>\xde\x00\x00\x00\x01bKGD\
+\x00\x88\x05\x1dH\x00\x00\x00\x09pHYs\x00\x00\x00\
+`\x00\x00\x00`\x00\xf0kB\xcf\x00\x00\x00\x07tI\
+ME\x07\xe7\x03\x09\x06\x142\x1f\xc9N\xa7\x00\x00\x00\
+\xd6IDAT\x18\xd3c` \x04\x18\x99\x98Y\xd0\
+\xc5X\xd9\xd898\xd1\xc4\xb8\xb8yx\xf9\xf8Q\x84\
+\x04\x04\x85\x84ED\xc5\xc4\x91\xc5$$\xa5\xa4ed\
+e\xe4\xe4\x11B\x0a\x8aJ\xca*\xaaj\xea\x1a\x9aZ\
+p1m\x1d]=}\x03C#c\x13S3\x98\x98\
+\xb9\x85\xa5\x95\xb5\x8d\xad\x9d\xbd\x83\xa3\x933T\xcc\xc5\
+\xd5\xcd\xdd\xc3\xd3\xcb\xdb\xc7\xd7\xcf?\x00&\x18\x18\x14\
+\x1c\x12\x1a\x16\x1e\x11\x19\x15\x1d\x13\x1b\x07\xd3\x1e\x9f\x90\
+\x98\x94\x9c\x92\x9a\x96\x9e\x91\x99\x95\x0d\xb7('7/\
+\xbf\xa0\xb0\xa8\xb8\xa4\xb4\xac\x1c\xc9\x99\x15\x95U\xd55\
+\xb5u\xf5\x0d\x8d\xc8\x8eojnimk\xef\xe8\xec\
+B\xf1fwOo_\xff\x84\x89\xa8\x82\x0c\x0c\x93&\
+O\x99:m:z\xd0\xcd\x989k\xf6\x1c\xccP\x9e\
+;o>\xce\x18\x00\x00\xa7\xd82\x9a\xd1%ng\x00\
+\x00\x00%tEXtdate:crea\
+te\x002023-03-08T17\
+:27:26+00:00\x9e\x98\xa5\x85\
+\x00\x00\x00%tEXtdate:mod\
+ify\x002023-03-08T1\
+7:27:26+00:00\xef\xc5\x1d\
+9\x00\x00\x00(tEXtdate:ti\
+mestamp\x002023-03-\
+09T06:20:50+00:0\
+0\xdd\xe8\xb2\xde\x00\x00\x00\x00IEND\xaeB`\
+\x82\
+\x00\x00\x08\x19\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
+\x00\x00\x00\x19tEXtSoftware\
+\x00Adobe ImageRead\
+yq\xc9e<\x00\x00\x07\xabIDATX\xc3\xad\
+W[P\x93g\x1a\xf6\xca\xce\xec\xcc\xf6b/\xbc\xd9\
+\xe9\xce\xecn\xbd\xda\xd9\x9b\xb5\xce\xba;{\xb0\xad\xcc\
+z\xb1\xce\xce:\xb3vTpu\xdb\xe2\x81\xd6\xb6T\
+\x04\xbb\xa5 m\xc1\x82\x06\x08\x07QB\x80\x80\x80\x02\
+!\x81\x10\x92@H\x10s$!gr\x80\x04B \
+\x9c\x09G\xb5Tx\xf6\xfb~\x13\x160X\x8b}g\
+\x9e\xf9/\x92\xfc\xcf\xfb>\xcf\xfb\xbe\xdf\x97]\x00v\
+\xfd\x98 \xf1\x0b\x82\x14\x02\x03\xc1u\x82\x03\xcf\xfd\xfe\
+\x8fH\xbc\x9b \xe1W\xaf\xef\xb5*\x8c\xd6e\xdb\x02\
+`\x19\x1e[\x09'\xf13\xfa\x19\x81\x22\xfc\xdc>v\
+H~\x8a\xa0\xb9\xb6Y\x1c2\xcf\xadB9\xfe\x1dD\
+\xf6Q\xd8\xc7\xe6\xe8\x87\x86={\xf6XSR\xae,\
+\xca::\x10N\xe2\xe5I\xc3\xc41\x04\xb7>I\xf9\
+,`\x9b]YSM\x03M\xb6\x114\xeb\xfb 1\
+y`\x19\x9d\xc5\xbb\xef\xbe?\xc5\xab\xbe\x83\xf1\x89)\
+LO\xcf\xae\x92\xef\xd7\xbct\x02\x11\x9f\x0f\xbe\x1d\xe3\
+\xb2\x04CO\xb43@\x8b{\x06\xcd=.4\xeb\xec\
+\xa8W\xf6 \x87S\x852^5C\xbc\xb0\xf4\x90\x81\
+\xc1`\x5c&\xbfK|\xe1\x04H\x1c$8A\xfd\xdd\
+\xeas'\xf1\xb9'\x04H\x87\x97\xc1\xd7\xbb \x22U\
+7\xdc7\xa2\xb8N\x88,V>\xccV\xdb:q\x04\
+,\x16k,\xfc\xce\xe7'\x10\x916\x93\x95?F}\
+\xa5\xfe\x12\xc4o\xf4Y1\xb6\x02~\xef Z{\x9c\
+\xe0?0\xa1L(CF\x0e\x1b\xb2\x0e\xf9&\xd2\xf9\
+\xc5e\xcc-,!4\xbf\x88\xbd{\xf7Z\xc9;~\
+\xbam\x02$~C\x90F=5\x13iu\xb3\x80\xd2\
+?\x0f\xcb\xc4\xe2\x9aP\xa1Z\xb4l\xf1Y\xa0\xb6\xa0\
+\xa6]\x8d/\xb2sq\xb7\x9e\xff\x0c1%\x9d\x09\xcd\
+cbj\x06\x83C\x81'\xe4\xdd\xbc-\xd3\xb0;\x92\
+\x033&\xd4S\xb5\xd3\xfbXO\x88\xc5\x03!\x88,\
+CP\xbaF\xd0\xed\x09B\xe5\x9bB\x9bs\xfc\xa9\xcf\
+Z\x1b\xee*t\xc8\xbc\xc9E\x09\xa7l\x93\xcf\x9b\x88\
+'\xa7\x11\x18\x1d\xc3\x80o\x08\xa2\xd6\xd6%\xc2Q\xdb\
+(\x12\x87\xc6\x1f\xaf\x82/b\x94M\x89$\x90\x22\xea\
+R-\x9aB\xab\xe8\x18y\x04\xa1\xc5\xcf\x10St\xf6\
+\x0d\xa3\xd3\xe1\x87\xd4<\x80\x16\xbd\x03\x0d]\x06\x14\xd5\
+\x0a\x90\x91\x95\x0d/y\xf1\xc6\xaa\xa9\xd4\xb3s\x0bL\
+\xc5\x94\xd8\xdd\xef\x85\xc9b\x05\xb7\xbc\x12\xa5\xe5\x95K\
+\x13\xf3\xcb\xab#\x0f\x017\xd9\x11\xe6\xd9\x15\x84\x97\x15\
+\x13\x06\xcb<\xd0h\xf2\xa3\xdd\xee_'\x96;\x86 \
+\xb3x\xd7}\xe6\x08\xa4\xf8<3\x1b*\x8d6\xaa\xdc\
+S3!\x8c\x8e\x8d3\x15\xd3&\xe47\x09\xf1\xc1\xc5\
+\x8fQs\xaf\x01\xbee`\xfc\x11\xa0#\x13#\xf2\xce\
+\xa1\xbe]\xb9\xb8Q\x01\x83\x81ttM\xa7\x1e\x0ag\
+\x80\xa9\xb8\xdd\xea\x83\xd8\xe8B\x93\xca\xcc\xf8|\xe5\xcb\
+,\x88\xda$Q\x89\xa7g\xe7\x18\x1b\x86\x86G`w\
+8I\x82:$|\xf8!\xae\xb3\x0b\xe1\x99\x5c\x80o\
+\x09\xd0\x90\xde\xe1\x0f,\x81\xab\x1f\xc4}\xef\x04\xdd\x07\
+\x1da\xeb\xff\x9f\xc0\x1d\xb9\x16\x1d\xf6!H\xcc\xfdO\
+}\xee\xd4\x22\x9dU\x84\xaa\x9a\xbaM>G\xe4\x8e\xf8\
+<<\x12\x84\xd3\xdd\x0f\xbd\xc1\x88\xc2\xe2b\x9c~/\
+\x1e=\x03\x01\xf4/\x02\x83\x84\xbc\xc5\xff-\xee:C\
+(Q\x91\xf7\xf6\x05\xf1N\xdc\xbf}\x843i\xe3 \
+\x18\xf43\xab\xe0\xc9Th58\xd1\xd8\xdd\x0b\x9eX\
+\x89\xac\x5c\xf63>G\xaa\x9e\x9c\x9ee\xe4\xee\xf7\x0e\
+\xa2\xd7lAC\x03\x1f'b\xe3 \xe9\xd6\xc0E\xcf\
+\x01R\x90$\xb8\x86\xb2\x9e\x00n\xb4\xdbP\xd1\x1bD\
+\x85\xce\x8bJ~\x0bm\xbe\x9b['\xd1\xa0\x99\xf8\x16\
+e\x22\x05\xee)\xf4(\x13\xc8\x90x5\x0b\x1a\xad>\
+\xaa\xdcc\x13\x93\xf0\x0d\x0d\xc3f\xef\x83\xb4]\x8e\xc4\
+K\x97\x90\xc3\xca\xc3\xd4c\xc0NzI1N\xfa\x89\
+\x94\x7f[;\x84|\x85\x13%j\x1fJ\xd5\x03\xe8\xf2\
+0\xa3(\x22\xf8\xf93\x09t\x8f.\xa1\xa8\xbe\x15\xa5\
+|\x09\xb2J*\xf0\xcf\xe3qQ\xe5\xf6\x07F\xd1\xe7\
+\xf2@\xab7 \xfdj\x06\x92\xbfH\x83\xcd7\x02'\
+\xa9\xda@\x1aL\xe0{\x88R\x9d\x1fE\xdd\xfd\x0cq\
+A\x97\x1b\xc5\xdd\x1e\x88\x9cA\xfc\xf9\xcd\xb7]\x84\xeb\
+l\xb4C\xd0(\xf7N#\xa7\xfc\x1e\xb2K\xab\xf1Q\
+\xeaWH\xfeo\xea\xfaXQ\xb9G\x82\xe3\xf0\x0c\xf8\
+`4\x99Q\xc9\xab\xc2\xfbg\xcfA\xfe@\x03?\xe9\
+n\xb2\x8d\x19\xb9oi\x06\x19\xd2\x9b*/r\xe5\x0e\
+\xe4u\xf6\xa1\xf0\xbe\x1b\x1c\x95\x1b\xf9\x9c\xca)\xc2S\
+\xb8\xdd)\xdc+v\x04\x90Q\xc8\xc5\x95ky8\x11\
+\x9f\x80\x9b\xb7n3c\x15\x91\xdbjs@\x22m\xc7\
+\x85\x84\x0fPt\xbb\x0c\xf3+\x80\x9f4X\xf7$ \
+\x1c|\x84J\xd3\x188\xfaa\x86\x9cV\xfdU\xb3\x1e\
+\xac\x0e;\xb8:\x1f\xd9!\x1ez/\xe0\x13\xbc\xba]\
+\x02&\xbe\xc1\x83\x94o\xd88\x9f\x9c\x8a\x03\x7f=\x04\
+c\xaf\x99\xe9n*\xb7F\xd7\x83\xa4\xcb\xc9H\xff:\
+\x8b\x8c\xd5<S\xb5q\xf6\xa9\xdc5\xf6i\x5c\x97Y\
+\x19\xd9\xbfn!\xa7\xa0\xd4\x82t\xbe\x1aW\x9b4`\
+\xc9\xcc\x10\xbb\x82\xf8\xe5\xaf_\xa7g\xc0;\xe1u\x1f\
+5\xcc5\xddf|\x94\x96\x85\xb8s\x17\xf1\x97C1\
+L\xd5t\x99\xf0\xaa\xaaq\xfa\xf4\x19h\xcc\x0e\x8c\x92\
+-6\x14\x1e\xabZ\xc7\x0cx\xe6qp\x0d#L\xa3\
+e\x8a\x0c\x8c\xec\xb4\xfa\x9c\xb6^\x94t9\xd0f\xf7\
+\xaf\x1e=\x11KG.o\xc3y\x135,\x5c\x99\x1a\
+\xf1\x97>\xc7\xd1\xd83\xf881\x09\x86^\x13\x1a\x9b\
+\x04\xf8\xdd\x1b\xfbQO\xd4\xf1\x90\x99\xee\x9a\x00\xaa\xad\
+\x93`+]\x0c9\xf5\xbc\xf0\xbeg\xbd\xea\xcc\x16=\
+JU\x1e\x08m\x01\x94\xd4\xf1C\xe1eS@\xf0\xca\
+\xf7%`+nj\xc7\xa9\x84D\xc4\x1c9\x8a\xdc|\
+6ZZ\xc58\x14\x13\x83/95\xc8\x14j\x98\xe6\
+\xa2\xd5\xd2'\xf5\x9azL\x13\xa1Id\xb7\x99\x90\xdb\
+nF\xb9\xda\x8d\x06\xa5v9,9=\xf9N\x13\xec\
+\xd9r\xd4G\x0d;\xabF\x88c\xff9\x8f\xdf\xee\xfb\
+=\x1a\xf9\x02\x9c\xbf\x90\x80\x93\xf1\x17p\xa3\xad\x07\x19\
+\xc4OJ\x14\xe9n\xbaX\xa8\xef,\xfa\x94\x98P(\
+\xb7@\xe9\x0e<\xf9W\xec)*w-\xc1g\x04\xfb\
+\xb6\xb9\xe4D\x8d\xbe\xcc\xb2Z\xfc\xe3\xe4\x19\x1c<\xf4\
+7\xb0r\xf3\xb0\xef\xc0\x1fP \xd1!\x89'e*\
+\xa6K\x85>\xbf!\xd5F\xe4.\x90[!\xb0\x0c\xae\
+\xe5\xdc\xe2\xd2\x11\x13\x13\xe4\x87o<\xaf<\xe7\x96\x15\
+5\x9ciE\xe5\xf8\xfb\xb1X\x1c?\x19\x877\xf6\xef\
+\xc7\x8d:\x11\x92\xab\xa4\x0c!\xedp\xea5U!\x8b\
+4[\xc9\x037*4n\xd4I:\x17\xc3rs\x08\
+\x8em\x95\xfb\x87$\xe0Jesp\xe4\xf8)\x1c>\
+|\x98\x8cc.2\x05*\x5c\x22\xd5\xd3]~M\xdc\
+\x0b6\xe9tv\xa7\x1dw\x8c\xe4\x88\xb6\xf9\x9e\x84\xb7\
+\x1a\x95\xfb\x22\xbdI\xfd\x80\x0bm\xf4\x042JxL\
+\x0f\x9cKI\xc3\xb5\xa6.|\xc2me6Y\xf1\x83\
+\x01\x5c\x97\x9a\xc1Q{ \xf3\x04\xd7\xce%&\x056\
+\xc8\xfd\xc7\x9d\xc8\x1d\xd5\x82\xdc\x1a\x01\xce^NE\x81\
+X\x85x\xf6]\x5c\xa9U\x90\xaa\xfb\xc0\x96\xdbP\xad\
+u\xe3\xaeTA/\x10\xca\x0dr\xbf\xba\xd3j\xa3\x05\
+\xb7\xa2Q\xf8\x1d\xafC\x8dO\xb9-\x88\xcb\xe6\xe1\x9a\
+H\x8f\xaa\x1e/\x9a5\xe6\xc7\x7fz\xf3-Wx\xac\
+\xa8\xdc\xaf\xbd\xac\xdc\xd1\xe2\x08\xdd\x05\x5cu\x1f\xde\xcb\
+\xafE\xb9v\x002g`\xf5\xc2\xa7\x97\xa9\xdc\xf7\x08\
+\xd2\xa9\xdc;\xf8\x03\xf3\xc2\xf1\x13\x82\xca\x1c\xee\x9dP\
+\x0b9\x94\xb8\x0d\xc2\xc8\x16\xa3\x17\x87\xc3/\x22\xf7\x0e\
+\xff\xdam\x8a\xdda\x99\xd5\x1b\xb6\xd8k\xbb^2\xbe\
+/\x89\xff\x01f\xb9_\xfc\x11\x80=\xcf\x00\x00\x00\x00\
+IEND\xaeB`\x82\
+\x00\x00\x09\x08\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x09pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0\
+kB\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\
+\x12)\xc3\xf6 \xcd\x00\x00\x07\xd3IDATX\xc3\
+\xbd\x99Ol\x1cW\x1d\xc7?\xef\xcd\xec\xec\x1f\xaf\xbd\
+v\x9c\xc4n\x12\xb7n\x1dg\xbdN\x9c\x16\xb7\xa5!\
+9\x00\x95(\xff\x0e\x15\x08h/\x15E\x02\x89\xaa\x1c\
+\xe1\xc0\x01!\x0e\x5cz\xe2\xc8\x81\x03\xe2R\xa9\xaa\x80\
+\x22\x04\xad\x90\xf8s)T\xfd\x13\xb5\xa9\xd2\xd6N\xeb\
+\x06\x928\x7f\xbc\xde\xf5\xfe\xf1xf\xde\x1f\x0e\xeb]\
+\xef\x8ew\xecMD\xf9I\xa3\x99y\xde}\xf3\x99\xef\
+\xef\xfb{\xef\xed\xb3\x08\x82\xc0\xd6j5\xb4\xd6\xfc\xbf\
+\xc2u]FGGq\x1cg\xff\xcf\xd6j5.^\
+\xbcH&\x93AJ\xf9\x89\xc3i\xad\x89\xa2\x88\xc5\xc5\
+Er\xb9\xdc\xfe\x80Zk2\x99\x0c\xf3\xf3\xf3\x18c\
+A\x80h\xffU\xb4\xae\x12\xef\x93\xda\x12B\x08A\xa4\
+\x14\xef^\xb8\x801f0\xb5\x01\xa4\x94\x18k\x09\xa3\
+\xb0\xf5 !\x10\xed\x07\x0b\xb1\xd3\x16;w\xc0\xf6\x00\
+\xefi\xb2\x16\xb9\xdd\xb7\x10\x83\xbc\xd26`\xf7\x1b~\
+\xa2\x80\x80\xb5\x960\x0ci4\x1a\xb0}\xdf/\xa4\x94\
+\xa4\xd3\xe9\x1d@\xb1\x0d\xd3\x0f\xf4\x7f\x0d\xb8\xba\xba\x8a\
+R*\xd1\x83\xd6Z\x8c1\x94J\xa5.\x05\x93\xa0\x92\
+\x00\xbb^\xa8\xbb\xad\xa3\x80\x90\x08!0\xd6b\xb1\x1d\
+@)%\x93\x93\x93\xcc\xcd\xcd\x91\xcf\xe7\xb1\x09\x80\xef\
+]\xbc\x88R\xaaWA\xba\xfc!\x92\xa0cJ\xf7\x03\
+\x94B\xf2\xd1\xfa\x87\x5c\xae\xac\xf0\xe0\xb1\x87)dF\
+1v\xa7(\x84\x10\x08)w\xfa\x89\xbf\x9c\xe3t\x86\
+\xa0^\x05\xf7Q/\x0e\x96\x08(\x1d\xfeu\xf9U^\
+\xfb\xf7\xab\x9c\xbf\xf2:_\x9d\x7f\x9c\xb9\x89\x93=\xa9\
+\x17}\xbe\xd7/:\x03_\x1b\xa0s\x8e_\xdf\xc6!\
+\x85@\x19E\xa4\x03\xaa\xe1M\x9e\xfb\xeb\xcf\xf9\xcb\xfb\
+\x7fF\x19\x85\x14\xb2\xf3\xf2r\x8f>\xda\xd1[\xc5m\
+Ub\x80\x0c\xaadWG\xc6X<\xd7\xe5\xa9\xb3_\
+\xe0o\xef\xbd\xc1\xaf\xdf\xf8\x15KkK|c\xe1\x09\
+\x9cm\x7f\x0e2\xd4\xecJq\x12\xdc\xae\xeb>`\xdd\
+\xed\xc6B\x10\x85\x04a\x83s\xc7g94\x9c\xe7\xe5\
+\x0b\xffd\xe9\xfa\x12gF\xce1/\xe7\x91B\xb6\xbc\
+\xd9\xd5O\xdc\xe7=)f\xbf\xd4\xc6\xda{L\x1f\x83\
+\xb5\xc6\x12\xaa\x88\xf5\xc6\x1a\xeb\x8d\x9bL\x0c\xa7\xf8\xda\
+\xe2\xa7\x18\x1a\xf2y\xe9\xca\x8b\xbc\xb2\xfc\x0a\x81\x0ep\
+\x1c\xa7\xc7\x1a\xf1~\xfa\x0e\xd4\xa2[\xcd\x18@\x1c\xac\
+_\x08!0\x06\xa2(\xa4\xbe\xb5\x06\x22\xd8\x06\x80\xb3\
+3wq(\x9f\xe2\xb7\xef\xfe\x86Kk\xcb|\xfb\x91\
+\xa79:z\xb4\xa7\xca\x93Sl\xed@p\xfd\xc0\xe2\
+mJ\x19\xc2 \xc0\x8f\xca\x18|\x1c\xb9\x93\xc0\xa9\x03\
+\x82\xa1\xf4\x01^\xff\xf0\x1f\xfc\xf4\x0f\x97\xf8\xce\xd9\xef\
+qf\xe6\x11$rg\xcc\xec\x97\xe26\x18\x09iN\
+\xf2]\xbf\x22\xd1\x91e\xd3\xaf\xd0\x0cW\x09\xcd:\x91\
+\xad\x10\xd92\xa1Y\xc3\xd77\xf1R\x1b<4\x93a\
+$\xbf\xc2/\xff\xfe\x1c/\xbc\xf6\x22\x91\x89\xf6\xae\xe2\
+\x0e\xd8\x1e^\xdb+\xbd\xddmF[\xea\x9bW\xb9R\
+[&\x9b\xce\x90\xf5<\x1c\xc7\x05\xeb\x10)K\x10j\
+\xb6\x02M:mI\xbb\x967?z\x8b\xaf\xdc\xff%\
+\xbc\x9c\xd73?'\xa68\xa9B\x93T\x8c\x87V\x16\
+a4\xb9l@\xca\x0bpR;\xde\xd4\xc6b\xa4e\
+\xbd\xe6p\xe1\x83\x83<p\xec\x0c?x\xecY\x0a\xb9\
+\xc2\xae\xfevMu\xf4\x01\xb9\x13\x15Md@k\xf2\
+9A&#H\xa7\x05R\x82\xd6\xb0\xd9\xb4\xbc\xb9\xe4\
+\xf2\xfe\xd2}<q\xf6\xfb<\xf5\xb9'\x19\xce\xe4w\
+M\x87\xbbS\x1cK\xef\xed\xc0\xc5\xef\xb56\x08\xad\xc9\
+d\x04CC\x82|N\xe0:p\xf5\xaa\xe5O\xafd\
+P\xcd\xcf\xf0\xb3o\xfe\x88\xcf.\x9cC \xb0\xd8N\
+\x1f\xfdS\xdc\xc7w\x83\xc0%\x0d5V\x83\xd5\x06G\
+\x80\x97\x12\xe4\xd2\xf0\xe6[\xf0\xc2\xefG\x98\x1ey\x94\
+\xe7\xbe\xfb\x13\x8aw\xcfb\x8c\xe9Tn\xbf\xe8\xf1`\
+R\xdc\x89\x8aF\x19Ld\xd0\xdaR\xab\x18^\xfa\x9d\
+\xe0\xed\xb7\xef\xe3\xe9\xc7\x9e\xe1\x81\xc3E\x8e\x1d\xb8\xab\
+\xefb5\xb1\x8a\xf7J\xed\xa0\xa0\xd6Z\xac\xb5H!\
+\xd1\x91\x02m\xb8\xb2b\xf8\xe3\xcbi\xf2\xceY~\xf1\
+\xcc\x8fy\xe8\xc4\x22\x17\xdey\x07cm\xa2\xfa\xdd}\
+\xba\xec\x13\x83\x82\xb6W\xc1Zk\xb0\xadY\xe4\xca\x7f\
+<\x9e\x7f>\xc7\xd9\xf9\xc7\xf9\xe1\x93\xcfr\xf7\xc4\x14\
+~\x10\xa2\x8d\x19\xe8G\xd6.\xc0\xdb\x99)\xba\xdb\x8c\
+1\x18cPJ\x11\x86!Z)F\xb3#\x1c\xcc\x9e\
+\xe0[\x9f\xff:_\xfe\xf4\x17I\x19\x97[\xe52~\
+\xa8p\x5c\x077\x95\x1a\xe8Y{*8\x08h[\xb9\
+(\x8a\x08\x82\x80f\xb3I\xbd\xde\xe0\x5c\xf1a\xe6&\
+\x8e3\x9c\x19\xa2\xba^%\xcaG\x84Jc\xb4\xa68\
+{\x9ct:\xdd\xb1D\xbc\x7fkm\xa7&\xf6M\xf1\
+^\xa0m8\xa5\x14A\x10P\xab\xd5)\x97\xd7X+\
+\x97\xf1}\x1f)$\x9e\xe7166Juc\x03\xa5\
+5'K%\xc6\xc7\xc7[\xd5\xbb\xfd\xfd\xf6\x8b\xb6j\
+\x00\x8c\xdd\x19j\xdc8\xc4 \xc6\xedV\xaf\xbdS\xd0\
+l6\xa9T+\x5c\xbfq\x83Ba\x84{\xa7\xefe\
+\xa40\x02XVVV\xd0Zsj~\x9e\xb1\xb11\
+\x94Rh\xad;G\x1bV\x08\xd1\xda\xdd\x90\x0e\xda\xc4\
+\x00\x07Q-\xae^\x1b0\x08\x02\xea\x8d\x06\xd5\xea\x06\
+\xbe\xef\xf3\xe0\xe2\x22\x87\x0e\x1d\xa2Z\xad\xb0\xb4\xf4\x01\
+a\xa88u\xf2$\x85B\x01\xa5\x14Q\x14\x11\x86!\
+A\x10\x10\x04!JE\x18c\x10B\xe2y)\x8ct\
+\x09\xc3\x10\xd7u\xef\xac\x8a\xdb\xd1N\xefV\x10\xd0l\
+4\xa9\xd7\xea8\x8eK6\x9b\xa5Ri\xc1EJ\xb1\
+\xb0\xb0\xc0\xf0\xf0p\xa7\x88|\xdf\xa7\xd1h\xd0h4\
+\xf1}\x9f \x08\xb0Xr\xd9\x1c\xc2ui4\x9a\x1c\
+;2\xc9\xe8\xe8\xe8`\x1e\xec\x17m\x05\x8di\xad\xfb\
+\xb6\xb6\xb6\xf0\xb7|\x8e\x1e9B\x18\x86,_ZB\
+i\xcd\xfd\xa7\xef'\x9f\xcfw\xe0\x1a\x8d&\x95J\x85\
+r\xb9L\xbd^'\x8c\x22\xb2\xd9,\x87\x0e\x8ec\xac\
+a\xbd\x5cf\xe6\xdei\xa6\xa7\xa7q\x1cgp\xc0~\
+Jv\x17I\x14E\xa4\xdc\x14\x07\x0e\x8c\xf1\xe1G\x97\
+\xb0\x96\x1e\xb8(\x8a\xf0}\x9f\x8d\x8d*\xd7o\x5cG\
++\xcd\xc4\xc4\x04cc\xa3\xe4\xf3yn\xad\xdd\xe2\xea\
+\xb5k\xcc\xce\x1c\xe7\x9e{\xee\xe9\xec\xb4\xdd\xb1\x82\xdd\
+*Z\xdb\x9aM\x0f\x1c\x1c\xa7\xbaQ\xc5\x91\x92\x85S\
+\x0b\xe4\xf3\xf9N\x11DQD\xa3\xd1\xa4Z\xdd\xa0Z\
+\xdd`\xe1\xd4Ifg\x8f\xe3\xfb>+\x1f\xafp\xed\
+\xda5\x8a\xb3'\x98\x9a\x9a\xea\xd9\x06\xec\xbbX\x88+\
+\x96\xd4&\xa5DH\x89t\x5cr\x851B\xbf\x89\x97\
+\xf2(\x16\x8b\x0c\x0d\x0du\xe0\xdb\xc3P\xb3\xd9\xa4V\
+\xaf\xa3\x94bdd\x84\xcdM\x9f\x8f\xdbp'\x8aL\
+MM\xf5\xff\xd1\xa4\xb5fkk\xab\xef\x8eg\xbbb\
+\x95R\xb8\xae\xbb3{XK\xa44[\xa1\xc28\x1e\
+aX!\x9f\xcbR<q\xa2gS\xa8\xe3\xd3\xed\xe2\
+\xd8\xdc\xdcd8\x9f\xc7K{||y\x85\xd5\xd5U\
+\xe6\xe6J\x1c=z\xb4\xaf\x8d\x5c\xcf\xf3p\x1c\x87\xe5\
+\xe5\xe5\xc4\x01\xd9\xf7}._\xbe\xcc\xf4\xf44\xae\xdb\
+-zk\x1dg\xacelh\x88\x99\x99\xfb\xc8d2\
+\x9d1\xad\xbb\x90\xa2m\x1f\x1a\xad\x99\x9c\x9c\xe0\xfa\xea\
+*7n\xdc\xa4T\x9a\xe7\xc8\x91#\x896r\x0b\x85\
+\x02\xa7O\x9fN\xdc\xa7\x13B\xd0h4\x88\xa2\x88R\
+\xa9D*6\x87\xb6\xcf\xa9T*q\xcf\xd9Z\x8b5\
+\x16m\x0c#\x85\x02\x16\xcb\xda\xda\x1a\xa5\xb9\x12\x93\x93\
+\x93{\xfa\xdc\x95\xb25\x1d\xed\x15\xe9t\x1a\xcf\xf3:\
+\xe7\xb87\xf7\xf2l\xeb\x90H)H\xe7\x86p\xbc4\
+\xbe\xefS,\xceq\xf8\xf0a\xf6\x8b\x81\xab\xd8\x18C\
+\x10\x04\x1dE\xe2Pq\xd5\xa1\xe5S\xa54\x81Rh\
+\xc7\xc3:)D\x18P,\x16\x19\x1f?8\xd0s\x07\
+^,(\xa58\x7f\xfe\xfcm\xfd'\xa0\xe5A\xd0\xb6\
+\x95\xdeL:\xcd\xc9\xd2\xdc\xc0p\x00\xff\x05\x08\xf9\xe8\
+\xd3M\x9b\x8d\x0f\x00\x00\x00%tEXtdat\
+e:create\x002023-03\
+-08T17:27:26+00:\
+00\x9e\x98\xa5\x85\x00\x00\x00%tEXtda\
+te:modify\x002023-0\
+3-08T17:27:26+00\
+:00\xef\xc5\x1d9\x00\x00\x00(tEXtd\
+ate:timestamp\x0020\
+23-03-09T06:18:4\
+1+00:00=\x00\x9f\x01\x00\x00\x00\x00I\
+END\xaeB`\x82\
+\x00\x00\x03\xb8\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x01\xad\
+PLTE\xff\xff\xff\xfe\xfe\xfe\xf6\xf6\xf6\xdc\xde\xe0\
+\xca\xcd\xcf\xc6\xc8\xcb\xce\xcf\xd1\xe5\xe6\xe6\xfc\xfc\xfc\xe7\
+\xe8\xe9\xbc\xc2\xca\xc0\xc8\xd3\xd4\xdb\xe4\xd9\xe0\xe8\xc8\xcf\
+\xd9\xae\xb5\xbf\xc2\xc5\xc7\xf6\xf6\xf5\xea\xeb\xeb\xb7\xbf\xcb\
+\xce\xd9\xe9\xe6\xef\xfb\xda\xe4\xee\xc0\xca\xd6\xe2\xeb\xf6\xdc\
+\xe7\xf4\xaf\xb9\xc7\xbe\xc1\xc3\xfb\xfb\xfb\xfb\xfb\xfa\xbf\xc5\
+\xcc\xbb\xcb\xe0\xdd\xeb\xfa\xea\xf6\xff\xc5\xd2\xdd\x82\x93\xa6\
+\xdb\xe6\xef\xe7\xf3\xfe\xd3\xe1\xf2\xa8\xb2\xbf\xe8\xe8\xe8\xee\
+\xee\xed\xa1\xaf\xc4\xbc\xd2\xee\xcc\xdb\xe8\xc1\xce\xd6\xb0\xbd\
+\xc8\x8f\xa1\xb5\xbb\xc7\xd0\xc1\xce\xd7\xd8\xe4\xf1\xae\xbe\xd4\
+\xcf\xd1\xd4\xe4\xe4\xe3\x98\xab\xc4\xbb\xd5\xf3\xa7\xb9\xc7{\
+\x8c\x9e\x8b\x9e\xb2\x92\xa6\xbc\x89\x9b\xafz\x8b\x9b\xc0\xd1\
+\xdf\xa7\xbc\xd8\xad\xb2\xb6\xff\xfe\xfe\xe7\xe7\xe6\x9c\xac\xc2\
+\xbd\xd7\xf2\xda\xec\xf3\xe1\xee\xf3\xc7\xd4\xde\x95\xa7\xba\xd8\
+\xe4\xea\xdf\xec\xf1\xd9\xeb\xf7\x9f\xb5\xce\xab\xae\xb0\xbe\xc5\
+\xcf\xc2\xd7\xef\xe5\xf6\xfd\xf7\xff\xff\xd5\xde\xe4\x9b\xaa\xbc\
+\xe9\xf0\xf2\xf6\xff\xff\xdc\xef\xfb\x91\xa0\xb2\xc9\xca\xc9\xdb\
+\xdc\xdd\xa3\xb4\xc8\xce\xe4\xf6\xf2\xfe\xff\xf0\xf7\xf9\xe5\xec\
+\xf0\xf7\xfc\xfd\xf1\xfc\xff\xba\xcb\xdc\x98\x9e\xa2\xf4\xf3\xf3\
+\xf9\xf9\xf8\xaf\xb3\xb5\x90\xa0\xb1\xc5\xd8\xe7\xe8\xf5\xfb\xf2\
+\xfa\xfe\xe4\xef\xf6\xb8\xc5\xd1\x94\x9a\x9f\xe2\xe2\xe1\xf9\xf9\
+\xf9\xc4\xc5\xc4\x96\x9d\xa1\x96\xa0\xa8\x9d\xa6\xad\x9d\xa4\xa8\
+\xa2\xa4\xa5\xb7\xb8\xb6\xde\xdf\xde\xf8\xf8\xf7\xe9\xe9\xe8\xe6\
+\xe6\xe5\xf3\xf3\xf2\xe5\xe5\xe4\xd3\xd3\xd3\xaa\xab\xa9\xed\xed\
+\xed\xcc\xcc\xcc\xc5\xc5\xc4\xb6\xb7\xb6\xd5\xd5\xd5\xd2\xd2\xd1\
+\xad\xae\xac\xd9\xda\xd9\xf5\xf5\xf5\xc9\xc9\xc9\xca\xcb\xca\xb3\
+\xb4\xb3\xca\xca\xca\xaf\xb0\xae\xd5\xd6\xd4\xfa\xfa\xfa\xfd\xfd\
+\xfdV$\xaa\xcb\x00\x00\x00\x01bKGD\x00\x88\x05\
+\x1dH\x00\x00\x00\x09pHYs\x00\x00\x00`\x00\x00\
+\x00`\x00\xf0kB\xcf\x00\x00\x00\x07tIME\x07\
+\xe7\x03\x09\x06\x142\x1f\xc9N\xa7\x00\x00\x00\xcfID\
+AT\x18\xd3c`\x80\x01F\x06t\xc0\xc4\xcc\xc2\xca\
+\xc6\xce\x81\x22\xc6\xc9\xc5\xcd\xc3\xcb\xc7/ \x88$&\
+$,\x22*&.!)%-\x03\x17\x93\x95\x93W\
+PTRVQUS\xd7\x80\x0bjji\xeb\xe8\xea\
+\xe9\x1b\x18\x1a\x19\x9b\xc0\x05M\xcd\xcc-,\xad\xacm\
+l\xed\xec\x1d\x1ca\x82N\xce.\xaen\xee\x1e\x9e^\
+\xde>\xbe\x08\xf7\xf8\xf9\x07\x04\x06\x05\x87\x84\x86\x85G\
+ l\x8f\x8c\x8a\x8e\x89\x8d\x8bOHLJF\x08\xa6\
+\xa4\xa6\xa5gdfe\xe7\xe4\x22;>/\xbf\xa0\xb0\
+\xa8\xb8\xa4\xb4\x0c\xd5\xaf\xe5\x15\x95U\xd55\xb5N\x18\
+\x01PW\xdf\xd0\xc8\x81!\xda\xd4\xdc\xd2\x8a!\xd8\xd6\
+\xde\xd1\xc2\x84!ZV\xdf\xd9\x81!(\xd3\xd5\xd1\x8d\
+\xa9\xb4\xae\xb5\xa7\x17C\x90\xa1\x0f\xe4R\x00|(+\
+\xa4\xc7\xdcu\xa2\x00\x00\x00%tEXtdat\
+e:create\x002023-03\
+-08T17:27:26+00:\
+00\x9e\x98\xa5\x85\x00\x00\x00%tEXtda\
+te:modify\x002023-0\
+3-08T17:27:26+00\
+:00\xef\xc5\x1d9\x00\x00\x00(tEXtd\
+ate:timestamp\x0020\
+23-03-09T06:20:5\
+0+00:00\xdd\xe8\xb2\xde\x00\x00\x00\x00I\
+END\xaeB`\x82\
+\x00\x00\x07\xd5\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x09pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0\
+kB\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\
+\x12)\xc3\xf6 \xcd\x00\x00\x06\xa0IDATX\xc3\
+\xcd\xd7MS\x1b\xc9\x19\xc0\xf1\x7f\xf7\xf4h$@X\
+H \xf4\x8a\x84\xd76k\x1b\xec\xc2U\xd9\x8d\x9dK\
+\xb6\xb2\xc9e\xbd\xf9\x00I>b*9$\x97\xad=\
+\xe4`o\xccb\x1b[^\x8c\xd7\xe6\x1d\x1bK\xe8\x05\
+\x04BB3\xa3\x99\xceA\xc0:\x87\xf0\xb2\x0b\xc1O\
+\xd5\x94\x0e#\xcd\xfc\xf4t?\xddO\x0b\xad\xb5\xe6#\
+\x0eu\x16\x0f\xf9\xf0?\x0a!.\x1e\xa8\xb5\xc6\xf3:\
+\xb8\xae\x8b\xe3\xb88\xae\x83\xefy \x04\xa6R\x98f\
+\x00\xcb\xb2\x08\x04\x02\xff\x7f\xa0\xeb:4\x9bM\xaa\xb5\
+MV\xd6\xd6)\x96*\xec\xee\xee\xe2{.\xd2P\xf4\
+\xf6\x84\x18\x1a\x8a\x92N\x0e3\x18\x8b\x11\x8b\x0dbY\
+\xd6\xcf\x06\x8a\x93\xceA\xad5\xcd\xe6.\x95J\x95\xc2\
+\xcbyV\xd7\xab\xc4b1r#i\x06\x22\x970\x95\
+\xc2vl\xca\x95\x1aK\xcb\xab\xd4\xb7j\x8c\xa4b\x5c\
+\xfd$\xc7h~\x94h4z~@\xad5\xf5z\x9d\
+\xd5\xb7\xef\x98.,\x10\xbe\x14c\xf2\xf6M\xa2\x91~\
+\xa4\xfc\xef9'\x84\xa0\xd3\xf1X/\x96\x99\x9a~\x8a\
+\xd3\xda\xe4\xe6\xd5\x0c\x13\x13\x13$\x86\x13\xe7\x03\xaco\
+\xd7YZ^\xe5\xc9\xec\x1a\x97\xaf\x5c\xe3\xda'y\x0c\
+C \x04H!@\x80\x10\x80\x06\x0dh_\xa3\x11\xb4\
+m\x97'3\x05\xd6\x96\xe6\xf8tt\x98{w\xef\x12\
+\x8d\xc6N\x05\x94\xc7}\xa1\xddn\xb3\xfen\x9d\x17\xaf\
+\xd7\xc9]\x1e#\x9f\xcf\xe1i\x8d\xdfM\x17\x08\xd1\xad\
+\xdc\xae\x16\x84@\x0b\x81\xaf5\xd2\x90LN\xde&3\
+z\x937\xcbE\x0a\x85\x02\xae\xeb\x9e-\xb0R)3\
+\xbfRD\x04c$\xd3)<_\x83\x10\xb8n\x07\x04\
+HC \x95\xc00~\xba\x10\x9a\x8e\xe7\x81\x90h$\
+c\xd7\xafc\xf5'y\xbfQ\xa1T*\x9e\x1d\xd0\xb6\
+mJ\x1b\x1b\xacUl\xe2\xc94 \x10R\xd2h\xee\
+\xf1\xed\xbf\x1e`\xb7[(S\xa2\x0c\x81R\x02C\x09\
+\x94\x92\xbc\x98\xfd\x91\x17\xb3s\x98\xa6\x814\x04A+\
+@&w\x95V\xc7d{g\x1b\xcf\xf3\xce\x06\xd8h\
+4(W\xeb4\xfd^d \x84\x16\x02aHv\x9b\
+\xbbt00\x03\x0a\xa5\xc04%JILC\xe0\xeb\
+\x0e[\x8d\x16\x81`\x90\x80)\x08\x05$\xc1\x80dp\
+h\x90V'\x88\xe3th\xb5\x9ag\x05\xdcasg\
+\x0fi\x85\xd9\xb55v\x07\x100\x92\x1eb4\x9fE\
+)\x03%\x05\xa5R\x99\xcd\xda\x16J\x0az-\x93\xf1\
+\xb1\xcb\xf4_\xea\xc7T\x82\x80)1\x95D\x18&\xae\
+\x08\xb2\xb2\xf6\x8eF\xa3q6\xc0f\xab\xc9\x9e\xed\x11\
+\xb0\x82\x08)\xb1}\xe8\x00\x9e\x14h\x0ek\x84b\xa9\
+J\xb5V?\xa8\x11\xf4\xfe\xa70\x04\x1e\xb0\xd7\xd1\xb8\
+Z \xcd\x10K+\xabloo\x9f\x18x\xe4N\xe2\
+:.\x1d\xcfG)\x852$\xa6\x12(\x83\xee\xda'\
+\xbaK\x8a\xaf\xe1\xfa\xb5<\xa6a\xe0\xe9.N\xd3\xbd\
+\x10\xe0\x0bp|\xe8\xf8 \x84\xa4\x5c.\xd3\xb6\xdbg\
+\x03\x94R\xe0{\x0e\xa0\x11\x02\x0c\xd9-\x02e\xf8\x88\
+\xfd\xf4\x0b\x01J)\xa4\x10\x88\xae\xe9\xf0\x9e\xdc\xcf\xa2\
+\xde_\xcb\xb5\xdf\xc1ul\xac\xc0\xc9\xb7\xbe#\x878\
+\x1c\x0e\xd3\x13\x10\xf8\x1d\x1b\xad\xbbo>\x1c\xc6\xfd\xe5\
+\xdd\x00~x\xf9\x86\x85\xa55\x0c\xb1\x8f\xa6\x9bB)\
+\xc0\x10`\xec\xff\xc0n\xd51\x84\xcf\xc0\xc0\xc0\xd9d\
+0\x1a\x8d\x91I\xc4x\xd7\xb4\xe95\xc1\x94\x02\xad\xc1\
+\x90\x92t<B\xc04\x10@6\x19\xc7\x0a\x98\x1cl\
+z\x03}AB\x96\xe2\xa7=J\xb3\xd7v\xd8\xae\xac\
+2\x18\x1b8\xd5nr$\xb0\xaf/L6\x93\xc6\xac\
+\xbb\xe0;h\xdf\xc2\xed\xf8\xc8\x90\xe2j~\x18\xb9\x9f\
+\xc9L2\xcea\x1b\xa8a8\xd6\x8f\x87\xc6\xd5\x1a\xed\
+\x83\xe3hj\xe5\x0d\xb6K\xf3\xfc\xf6\xab?\x9c\xaa\xbb\
+9r\x88\x95R\xc4b\x83\x04hQ|\xff\x96\xf7\xd5\
+6\x8d\x96\x8f\xd3\xd1xh>\xdc\xc4\x0f\xe7\xdfA\xf1\
+\xd0\xadt\xc7\xd5\xd4\xb6Z\xac\xbc\x9a\x22\xda\x1f\xe4\xb3\
+_}~b\xdc\xb1@\x80\xc1\xc1ALCP^\x9e\
+ayq\x81\xca\x96\xc3\xf6\xae\x87\xeb\x81\xbf\x8f<\x80\
+~\x90D\x00lG\xb3\xb1i\xf3\xe6\xe5\x0c\x95\xd5\xe7\
+\xdc\xbf\xff\xf5\xa9\xdb\xaec\x1bV)%\xe3\xe3\xb7x\
+3?\xcf\xcc\xd3\x7f\xe0\xb96\x82[\x08\xd9C,l\
+\x10\xfc\xe0\x09\x02\xf0\x01\x0f\xd8\xb55oK-\x0aO\
+\xa7\x99\x9b\xfa'\xbf\xfb\xe2\x0b>\xff\xec\xd7\xa7\xc2\xc1\
+)\x1a\xd6\x9d\x9d\x1d\xfe\xf6\xf7\xbf\xf2\xfd\xd3\x02C\xf9\
+;\xdc\xb8s\x8f\xcb\xf94\xf1h\x90\xde\xa0\xc4\x94\x1c\
+\x0e\xe9\xd6N\x9b\xd5\xb5\xf7\xcc>\xf9\x8e\xc5\x97S\xfc\
+\xfe\xcb/\xf9\xfa\xfe\x1fQ\xea\xf4'\x8c\x13\x03\xa1\xdb\
+<<|\xf8\x80o\xbe\xfd\x86\xcd\x9d6C\x99k\xa4\
+sW\x18\x8c\x0f\xd3\x13\xb4p\x1d\x9b\xfaf\x85\xd2\xdb\
+E\xca\xeb\x8b\x84,\x83\x5c.\xcf\xbd\xbb\xbfab|\
+\x02q\xd0\x9a\x9d\x17\xf0 \xaa\xd5*\xcf\x9e\xcf\xf0\xe2\
+E\x81\x8d\x8d2{\xb6\x0dt\x8b\xaa\xb7'D&\x9d\
+fb\xfc\x16Z\x83\x15\xb4(\x95\x8a8\x8e\xc3\xf8\xcd\
+q\xc6\xc6>=\x7f\xe0Ax\x9eG\xa3\xd1\xa0\xd5j\
+\xe1y\x1e\xa6\xa9\xe8\xed\xed\xa3\xaf\xaf\x0f!\x04\xcb+\
+\xcb\x18\xd2\xa0\xb6Y\xe3\xc9\x93i\x84\x90\xfc\xf9O\x7f\
+!\x14\x0a\x9d\xf8\x1d\xc7V\xf1Qa\x18\x06\x91H\x84\
+T*E6\x9b%\x91H\x12\x0e\x87\xf7\xcf%\x1d^\
+\xbf~M\xab\xd5\x22\x9b\xc9\x90\xcb\xe5\xa9\xd7\xb7x\xf6\
+l\xe6T\xef\xf8E\xc0\xa3B)E6\x93evv\
+\x16)\x0d\xb2\xd9\x11\x92\xc9\x14\x8f\x9f>\xa6V\xab]\
+<\x10`ll\x0c\xcb\xb2x3?\xcfp|\x98l\
+6\x0bZ\xf3h\xea\xdf\x9ctf\x9d+P)\xc5\xe4\
+\xe4$\xcbKK\xb4\xf6Z\xa4\xd3\x192\x99,\xaf~\
+|\xc5\xca\xea\xca\xc5\x03\x012\x99\x0c\x89D\x82\xb9\xb9\
+9\x22\x97\x22d2\x19\xc2}a\x1e~\xf7\xe0D'\
+\xbcs\x07\x02LNNR\xab\xd5\xa8V\xab$\x93\xdd\
+\x82*\x16\x8b\xcc\xbe\xfc\xe1\xe3\x00F\x22\x11\xc6\xae\x8d\
+1\xf7j\x0e\xcb\xb2H\xa5\xd2\xc4\x87\xe2<z\xf4\x88\
+Fc\xe7\xe2\x81\x007n\xdc@\xfb\x9a\xb5\xb55\xe2\
+CCd\xb3Y\xda\xed6\xd3\x8f\xa7?\x0e`0\x18\
+\xe4\xf6\xed\xdb,.,\xe2\xf9>\x89D\x82t:M\
+\xa1\xf0\x9cb\xf1\xfd\xc5\x03\x01FGG\x89D\x22,\
+,,\x10\x89\x0c\x90J\xa5\xb0\xac S\xdfO\xa1\xb5\
+\x7f\xf1@)%w\xee\xdc\xa1T,\xd1h4\x88\x0f\
+\xc5I\xa5R\xd4jU\xf6\xf6\xf6.\x1e\x08\x10\x8f\xc7\
+\xb9r\xe5\x0a\xeb\xeb\xeb\x98\x81\x00===\x8c\x8c\xe4\
+\x08\xfc\x8f\x93\xde/j\x16~n8\x8eC\xb5V\xc5\
+\xf7}\x1a\x8d\x06\xe9T\x9a\xfe\xfe\xfe\x8f\x07x\x10\xbe\
+\xef\x1f\xdb#^(\xf0$\xf1\x1f\xb6J\xe0\xf90\x86\
+\x1f6\x00\x00\x00%tEXtdate:c\
+reate\x002023-03-08\
+T17:27:26+00:00\x9e\
+\x98\xa5\x85\x00\x00\x00%tEXtdate:\
+modify\x002023-03-0\
+8T17:27:26+00:00\
+\xef\xc5\x1d9\x00\x00\x00(tEXtdate\
+:timestamp\x002023-\
+03-09T06:18:41+0\
+0:00=\x00\x9f\x01\x00\x00\x00\x00IEND\
+\xaeB`\x82\
+\x00\x00\x03\xb2\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x01\xa7\
+PLTE\xff\xff\xff\xfe\xfe\xfe\xf6\xf6\xf6\xdc\xde\xe0\
+\xca\xcd\xcf\xc6\xc8\xcb\xce\xcf\xd1\xe5\xe6\xe6\xfc\xfc\xfc\xe7\
+\xe8\xe9\xbc\xc2\xca\xc0\xc8\xd3\xd4\xda\xe3\xd7\xdd\xe6\xc8\xcf\
+\xd9\xae\xb5\xbf\xc2\xc5\xc7\xf6\xf6\xf5\xea\xeb\xeb\xb7\xbf\xcb\
+\xce\xd9\xe9\xe5\xef\xfa\xe9\xf2\xfc\xeb\xf4\xfd\xea\xf3\xfd\xdc\
+\xe6\xf4\xaf\xb9\xc7\xbe\xc1\xc3\xfb\xfb\xfb\xfb\xfb\xfa\xbf\xc5\
+\xcc\xbb\xcb\xe0\xdc\xea\xf9\xe6\xf2\xfc\xed\xf7\xfe\xd6\xe0\xe8\
+\xcd\xd8\xe1\xe4\xf0\xfb\xd2\xe0\xf2\xa8\xb2\xbf\xe8\xe8\xe8\xee\
+\xee\xed\xa1\xaf\xc4\xbb\xd2\xee\xde\xee\xfa\xdf\xeb\xf1\xb4\xc0\
+\xc9{\x8b\x9c\xa5\xb2\xbb\xee\xf9\xff\xe2\xee\xfb\xad\xbe\xd4\
+\xcf\xd1\xd4\xe4\xe4\xe3\x98\xab\xc4\xb9\xd4\xf2\xd0\xe2\xed\x96\
+\xa6\xb4\x86\x9a\xb0\x84\x98\xaf\xab\xb8\xc1\xf2\xfe\xff\xdf\xf0\
+\xfc\xa5\xba\xd6\xad\xb2\xb6\xff\xfe\xfe\xe7\xe7\xe6\x9c\xac\xc2\
+\xbd\xd7\xf2\xe2\xf3\xfa\xda\xe9\xee\xb9\xcb\xda\x8d\xa0\xb5\xab\
+\xb7\xc0\xf4\xff\xff\xde\xf1\xfc\x9f\xb4\xce\xab\xae\xb0\xbe\xc5\
+\xcf\xc2\xd7\xef\xe4\xf5\xfd\xf5\xff\xff\xf6\xfd\xfe\xd3\xde\xe4\
+\xcb\xd5\xda\xdc\xee\xfb\x91\xa0\xb2\xc9\xca\xc9\xdb\xdc\xdd\xa3\
+\xb4\xc8\xce\xe4\xf6\xf1\xfd\xff\xfa\xff\xff\xfe\xff\xff\xf1\xfc\
+\xff\xba\xcb\xdc\x98\x9e\xa2\xf4\xf3\xf3\xf9\xf9\xf8\xaf\xb3\xb5\
+\x90\xa0\xb1\xc5\xd8\xe7\xe8\xf4\xfb\xf0\xf9\xfd\xe4\xef\xf6\xb8\
+\xc5\xd1\x94\x9a\x9f\xe2\xe2\xe1\xf9\xf9\xf9\xc4\xc5\xc4\x96\x9d\
+\xa1\x96\xa0\xa8\x9d\xa6\xad\x9d\xa4\xa8\xa2\xa4\xa5\xb7\xb8\xb6\
+\xde\xdf\xde\xf8\xf8\xf7\xe9\xe9\xe8\xe6\xe6\xe5\xf3\xf3\xf2\xe5\
+\xe5\xe4\xd3\xd3\xd3\xaa\xab\xa9\xed\xed\xed\xcc\xcc\xcc\xc5\xc5\
+\xc4\xb6\xb7\xb6\xd5\xd5\xd5\xd2\xd2\xd1\xad\xae\xac\xd9\xda\xd9\
+\xf5\xf5\xf5\xc9\xc9\xc9\xca\xcb\xca\xb3\xb4\xb3\xca\xca\xca\xaf\
+\xb0\xae\xd5\xd6\xd4\xfa\xfa\xfa\xfd\xfd\xfd\xe1 B\xa9\x00\
+\x00\x00\x01bKGD\x00\x88\x05\x1dH\x00\x00\x00\x09\
+pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0kB\
+\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\x142\
+\x1f\xc9N\xa7\x00\x00\x00\xcfIDAT\x18\xd3c`\
+\x80\x01F\x06t\xc0\xc4\xcc\xc2\xca\xc6\xce\x81\x22\xc6\xc9\
+\xc5\xcd\xc3\xcb\xc7/ \x88$&$,\x22*&.\
+!)%-\x03\x17\x93\x95\x93WPTRVQU\
+S\xd7\x80\x0bjji\xeb\xe8\xea\xe9\x1b\x18\x1a\x19\x9b\
+\xc0\x05M\xcd\xcc-,\xad\xacml\xed\xec\x1d\x1ca\
+\x82N\xce.\xaen\xee\x1e\x9e^\xde>\xbe\x08\xf7\xf8\
+\xf9\x07\x04\x06\x05\x87\x04\x86\x86\x85#l\x8f\x88\x8c\x8a\
+\x8e\x89\x8d\x89\x8bOHD\x08&%\xa7\xa4\xa6\xa5g\
+dfe#;>'7/\xbf\xa0\xb0\xa8\xb8\x04\xd5\
+\xaf\xa5e\xe5\x15\x95U\xd5N\x18\x01PS[W\xcf\
+\x81!\xda\xd0\xd8\xd4\x8c!\xd8\xd2\xda\xd6\xc4\x84!Z\
+R\xdb\xde\x86!(\xd3\xd1\xd6\x89\xa9\xb4\xa6\xb9\xab\x1b\
+C\x90\xa1\x07\xe4R\x003\x9b+(8\xcb\x02\xf6\x00\
+\x00\x00%tEXtdate:crea\
+te\x002023-03-08T17\
+:27:27+00:008\xef\xae1\
+\x00\x00\x00%tEXtdate:mod\
+ify\x002023-03-08T1\
+7:27:27+00:00I\xb2\x16\
+\x8d\x00\x00\x00(tEXtdate:ti\
+mestamp\x002023-03-\
+09T06:20:50+00:0\
+0\xdd\xe8\xb2\xde\x00\x00\x00\x00IEND\xaeB`\
+\x82\
+\x00\x00\x0bH\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x07tIME\x07\xe7\x03\x09\x07\x08)r\x19\xb0\
+!\x00\x00\x0a\x03IDATX\xc3\xed\x98Yl\x9c\
+W\x15\xc7\x7f\xdf|\xb3{\xf6\x19\xdb3\xe3\x19\xdb\xf1\
+\xbe%v\xbc$M\x9c44\xa1iJR\xdaB\x00\
+\xb54@YT\x90\x80\x0aU*\xe2\x0d\x1e\x80\x17P\
+\xc5\x03\x0fe\x17\x15B\x94\x82\xba\xd0(!K\xeb\xa4\
+i\x9b\xd5\xf1\x1a\xc7\x1e'\x1e\xef\xdb\xec\xfb\xf6}<\
+\xd8\x11iP\x13;\x0d\xf0\xd2\xff\xcb\xf7p\xefw\xce\
+O\xe7\xde{\xce=\x17>\xd6G\x93\xb0\xce\xf9\x16\xa0\
+\x0cp\x02z`\x19\x98_\xfd\xc6\xfe\x1b\x80\xcau\xcc\
+5a\xb2t`qt\xa1/j@P\x98)\xe4\xfd\
+\xa4SW\x89GG\x08.N\x00a \xf4\xff\x02l\
+B\xa3\xff\x16\xd5M\x1d4n6c\xb4(\x99\x9dH\
+\xe1\x1b\x8a\xe3\x1f\xf3\x01\xe7\x81\x1e\xe0\xd8\xbd\x04\x5c\xcf\
+\x12\xff\x8cC\xcf~\x8a\xfa\xd6\x0d\xd8K\xb5\x1f\x18\x09\
+\x07\xb2\x8c\x5c\x0e\xf3\xb7\xdf\xcc\x12\x8f\xde\x0f$\x81\xc2\
+\xbd\x00\x14\xd71\xf7y\xf6<^\x85\xbeH\xcd\xd8@\
+\x84\xbf\xfdv\x9a\x81s!dI\xc2`Rb0\xab\
+H'\xf3L\x8e\xf7\x03\x01 u/\x00\x15\xeb\x98\x9b\
+\x22\x9f\xcb\x13\x09\xe5\x98\x9f^d\xf0\xfc\xdb\x0c_\xfc\
+#\x97\xdf\x1dey.\x8d\xc9\xa2\xa2\xaa\xd1\x00\xb4\x00\
+E\xf7\x02n\xad\x80J\xc0J\x911A.\x9b\x15\xd3\
+\x89\xbcJ\x96b\xc0\x00\xc9\xf8K\x0c]\xb8\xa2\x5c\x9c\
+\x8d\xa9\x04A\xc0\xee\xd4\x00\x1e@\xf3\xbf\x044\x02\x9d\
+\x94\x96m\xc2l\xb3i\xed%\x1a\x93\xd5\xaa\x03\xec\xc0\
+\x04\xa9\xa4\xdf\x90K\x07\xcc\xd9d\x0e\xb5F\xc1J\xfa\
+Y\xcf\xca\xdc1:wR1p\x90\xcf=\xe3\xc1\xe9\
+\xd5Y\x0c:\x85\x99te\xc0`z\x8cx\x14\xc0\xab\
+W*\x04\xb5J\x14\x96\xef\x15\xd5MZ\xcb!Q\x02\
+\x0aT\xeam\xe42\x92^\xa3V\x98\x1d%jo\xfb\
+\x16S\xa6\xa2\xce\xad\xdb\xd8Y\xedj\xda\xe4\xb2\x98L\
+\x9a\x99\x91\xa18\xfd\xef\xbf\x0e\xf4\x01\xd1up\x18\x80\
+&\xe0q\xa0\x0e\xd0\xb1\x92\x09\xd2k\x89`\x148\xcb\
+\xf4\xb5?\x93I\x95\xa7\x12\xe1\x86dUmMmk\
+\x9b\xa9\xc8l\xad\x050\x98L\xcad./\xa3R)\
+\x005kO_\xd5^\xaf\xb7fcGg\xdd\xf6=\
+\x0f\xb6\x94\x18t-\xe9\x82\x9c\x18\x1a\x188\xf3\xe2/\
+^\x008\xb7\x16\xc0\x140\x8eo\xe8\x0f\xf8\x86jb\
+\xfe\xca\x07\xd4\xd1\x90\x98\xd8P\xd5ls\x97i\x05 \
++\xcb\xc4\xa2\x89\x02\xc5n\x0dP\x09hocO\x0d\
+\xd8\x9a\x9a\x9aJ\xbd\xf5\x8d\xbbJm\x96\xed5\xd55\
+\xad\xf7m\xddZ\xbe\xb9\xb9Q7:\xbfTX\x8a'\
+d`l\xad\x8074\x0a\x8c\xca\xb3\x13\xd1\xe5\x22\x83\
+\xae\xe7\xf4i\xb7}\xd7\xbe\x12\x95B -\xc9$r\
+\x0a\x05N\xaf~u\x89\xf4\xb7\xb1c\x03\xf6\x02_\xda\
+\xbd\xff@\xe3\x83;w8\x9a*\xbcj\x80p6\xcf\
+\xd9\xc9\xb9\xc2\xf9kSZ\xc0\x0c\xeb+u74\xc0\
+\xd45\x13s\x93\xdd\x81\xa6\x0e\x0b\x06\x93\x0a\xa5J\x00\
+A@\xab\x13\xd9\xba\xdb\xcb\xac\x7f+S\xe3a`b\
+\xf5\x1f#\xb0\xb3\xac\xacl\xcf\xe6\xfb\xb6\xed|\xfc\xe9\
+\xaf7\x1e\xdcq\x9fA^\x1d\x5c\x8c\xc6\x18\x5c\x8eJ\
+\xdfy\xee9\xff\xc2\xe5\x0b\xa7\xe3s\xd3=\xc0\xfbw\
+\x0b\x98 \x9f\x1b\xa5\x90\xff+'_{\x86]\x07J\
+k\xaa*5;\x9cV\x1e\xf2\x16\xf3\xa3\xbe\xf6\xa2\xc5\
+t\xcc\x19\x9c\x1a/\x06$\xa0\xbd\xaae\xe3g\x1f\xfd\
+\xc2\x13\x95]-\xcde\x1b\x5c\xa5\x0e\x93\xdd\xa1\xcbd\
+2\xa4\x0a2\xc3\xb3\x0b\xf9S\x97z\xe3\xc7_yy\
+yy\xf4\xeaK\xf9L\xea8p\x9d\xd5Cv7\x80\
+y\xf2\xb9y\xe0M\xae\xf4\xb6n\x7fx\xff\xceOx\
+\xac\xa5\xbb+]\x8a6\xbb\x89c[\xb7\x1aN\x0f^\
+\xac\xca\xdb\xec\xfb\x1a6\xb7\xab7vm\xddT\xeb\xb0\
+n\xabk\xd9XT\xe9)\xd38LF\x11`<\x10\
+\x91/\x0d\x0c\xc6\x07}\xbe\x89\xfe\x81\xc1\xc1\xf3\xef\x9c\
+\xea#\x19?\x02\x8c\x03\xf1\x1b\xce\xee\x06\x90U\x03}\
+L_;\xda\x91\x0dy\xf6\xe8dcw\x89\xd9\x00\xb0\
+\xbbu\xa3.P_\xd7T\xac\x16[j\xeb\xeb]\xdb\
+\xba\xbbm\xf7\xd7Uid\x01d\x19\x82\xb1\xb8\x1cJ\
+$\xa5s#cKo\x1c=v\xfdJ\xef\xc53\x81\
+\xe1\xbe\x93\xc0%`\xe1VGw\x0bxC\xc7\xff\xf9\
+\xfb_u\xb4\x15[\x5c[\x1aj\x0c\x00\x0fT\x94\x8a\
+\xb1\xfd\xfb[\xf3\xb1\xa8\xa2\xdcb\x14\x8b\xedfR\xe9\
+4\x00YIf2\x14\x95\xde\xec\x1bN\xfc\xee{\xdf\
+|\x8b\x95\xeb\xd9)\xe0\xca\x879\xf8\xa8\x80\x5c\xbdz\
+\xf5\xe2\xe5k\xfe*g\xdf\xa0{K}\x8d\xe6\xf8\xe1\
+\xc3D\xe6\xe6Tf\xb3\x99\x8cN\xcd\xc8\xc8\x08\x0e\x87\
+\x83%A%\xf5\xbc\x7f6t\xec\xf0\x9b\xc3s\xbd\xe7\
+\x0f\x03\xbfb\xe5\x16\x9e\xbb\x9d\xfd\xbb\x01\xb4\x03U@\
+\x93\xd1\xe9\xde\xfb\xc0#\x8f\xd6\x95:\x9d\x15R,\xa2\
+J$\x12\xbc\xfe\xfa\xeb\xf8\xfd~\x0e\x1c8@\xd7\x96\
+-LN\xcfp\xa4\xffJ\xc2\xd7\xd7{\xc9\x7fm\xfc\
+Bbq\xe1,\xf0\xde*\x5c\xfeN\xce\xd6\x02(\xb2\
+\x92\xd7\xea\x00/\xc5\xeeJeYE\x95\xbe\xac\xbc\xf6\
+\xa1\xf2\x92\xf6\xc6\xda\x1a\x93Y\xa3R\x87\x96\x16\x15W\
+\x15\x02\xe5\xe5\xe5X\xadV***0\x1a\x0c\xb8\x9c\
+\xa54d\x0abo\xcfI\xd5\xcc\xb8/\x16\x0f\x87&\
+\x81\xc9\xb5F\xe3v\xb5\xd8\x04\x94\xa0\xd6V`\xb24\
+\xe1\xd9\xf00\xae\x8aO\xe1\xd9\xf0\x80bCC\x97\xa6\
+\xb9\xa3fGg\xbb\xd5k\xd0)U\x85\xbc\x10\x8dE\
+\xe5\xa9\xb9\x05\xc9S^NMC\xa3\xec-/G\xaf\
+\xd7\x0bz\xad\x16\x8f\xdb-\xc6\xa3Q\xa5J\xabM+\
+4\xda@pa~\xcdM\xd6\xed\x00;\x80}(U\
+\x9f\xa7\xc8\xf4E\xb6\xee\xde\xce\xae\x03\x8dt\xde\xef\x92\
+\xaa\x9b\x8c\x19\x93M\xdd\x9f\x15p+$\xacJ\x81l\
+./\xf5\xfb\xa7\x93\x81pX\xce(\xd5\xb2Fo\x10\
+\xf4Z\xadB\x90\x0a\x88rA\xb8\x7f\xe7N\xa3\xc9^\
+\xec\x99Y\x0ex}\x03}9Vz\x98;\xea\xe6\xa2\
+\xae\x03*\x80=\xc0A:v:i\xee\xb4Q\xddd\
+\xa4\xc4\xadC\x92d\x14\x0a\x01\xa9 k\x91)\xd1k\
+\x84\xc9t\x01\x9b \xc1\xb9\xb7\x96R\xff\xfc{_j\
+z\xe2\xd5\xd5\xe5\xf3\xe8K\xcb\xba\x1b:\xbb\xb6?\xf9\
+\xd5\xafy\xba\xddv\x15\x08\x98,\x16r\x08\x85S\x97\
+\x07\x12\xdf}\xe2s?\x05\xfe\xc1J\xde\xfb\xd0\xf6\xe0\
+F\x047\xa1\xd5\x1f\xc4]\xfee\xb6\xef\xdd\xc9c_\
+ifc\x97\x9d\xb2\xca\x22\x8a\x8cJ\x90\x05|Cs\
+L\x8c\xf6\xf0\xfe\x891\xd5\x94/\xa7\xafnt\xe4\x15\
+\xa2\x90\x91!\x13\x8bM\xe4\x03\x0b'\xe5\xb9\xc9\x97X\
+\xa9\x02>A\xa9\xba^H'\xa7&G\x86c\xf39\
+\xdcF\x83A%\xca\xb2B\xce\xe7\x04\xb7\xc3\xae\xda\xf3\
+\xe9\xc7*c\xd1\xa84>6ZX\x05\x8c\x7f\x18`\
+5Z\xdd#4w\xec\xa3\xad\xbb\x8b\xfaV\x0f\x15\xb5\
+&4:%\xd9L\x8cH`\x94X\xf8\x18\x81\x85W\
+8\xf7\xd6\x02\xe1\x80YW\xec\xf4\xb8\x9a[\x1d\x81\x02\
+B6\x1a^,$\xe3G\xe5\xe5\xf9W\xf0\x8f\x0d\xaf\
+:\x8b\x152\xa9P<\x18\x98\x9f\x9d\xb8~=\xab\xd6\
+Z\x12\xa1\xa0&\x95/hD\xadVeR+E\xa3\
+\xd1hu\xba\xdcf\x93\xddQ:\xbb\xb4dNF#\
+qV\x1e\x00\xfe\x03\xf0a\xaa\x9b>\xc3\xe6\xee6a\
+s\xb7M,q\xe9\xe4D,@*1\xc6\xd2\xdc\x05\
+|C'9\xfa\xd7\xbf\xf3\xf6\x1bg\x11\x14\x8d\x9a\xe6\
+\xf6vcK{\x9d\xcb\xed\xd6N\x86\xe3q)\xb0x\
+\x82t\xf2/\xbc\xfc\xe2\xc9[lgX\xe9\xee\xc6\x17\
+\xaf\x8d\xe5\xc7'&\x84\x9cR-(\xb4ze6\x95\
+\xd2\x18\xb5j\xa5\xdb\xebu\x0a\x0a\xb12\x95J9\x13\
+\x89\xb8\x14\x8fD\xfc@\x96\x9bZV\x11\xf86\x07\xbf\
+\xd1IC[\xa9h0\xaa\x8a\xe4\x82\x949}\xe4\x18\
+g\x8e\xfc\x9cW\xff\xf0k\xae\xf4\xbeM$X\x00\x9e\
+\xa4\xa5\xf3Q[g\xf7F{K\x9b\xb9 \xcb\xcc\x8d\
+\x8d\x0cS\xc8\x7f\x9f\x17~\xd0s\x87\xbd>\x92K&\
+'\xae\x0f\x0d,\x8d\xfa\xc6\x98\x91DW\x9d\xc7m\xc8\
+\xc6cB]M\x8d\xae\xb5\xb5\xcd\xd1\xdb\xdf_;\xe3\
+\x9f\x88\xac\xee\xe1\xd8\xbf\x01K=?a\xc7>\xaf\xdb\
+S\xa6-\x8b/\x87f\xfe\xf8\xcb\xf78\xf1\xea\xf3\xcc\
+O_f%)?\x08\x1c\xe2\xd0\xb3O\xbb\xf6>V\
+\xed\xad\xae.\xd2I\xf9\xfcE\xffl\x84\x1f\x7f\xfb\x11\
+\xde=\xe6\xe3\x0e\xd5`UK@o2\x14<7\xd5\
+wq\xf1\xc4;g\xbc\x19k\x89&\x97\xcb\xab\xacj\
+Qs\xe8\xa9\xa7\xecs\xd9B\xabB\x14\x83\xcb\xb33\
+\x01V\x9fPD\x94\xcag\xe8\xdaeu\x16;\xd46\
+A\x12\xa6\x93\x19\x0d\xd1P\x1d\x99\xf4\x1e4\xdaOR\
+\xdf\xda\xcd\x81\xa7:\xca\xdb\xb787\xd8-\xcaD^\
+\xe2z 4\x9d>\x7f\xfa%\xae\x5cz\x0dH\x03\xf2\
+\x1a\x00o(\x0bL*D\xf1z2\x12ZX\x0c\x04\
+\x85\xa5D\xca\xa4T\xaa4\xa5\x1e\x8f\xda7\xd8\x1f\x9a\
+\xf1\xfb'V\x0f\x1bJ2\xa9\x8b\x14\xf2\x8e\x5c6\xab\
+\x17\xb4zu\xfd\xa6\xb6\x92`\x91\xfe\x13\xb1X,\x9f\
+C@ku\xa8\x8bk\xeb\x0d\xde\x12\x87*\x9a\xcd\xc9\
+\xcb\xc1\xc0xxz\xf28c\x03/\x03\x89u\x80\xdd\
+\xbc7g\xd2\x91p\x8f\xef\xd2\x85\x89h\x229\x13\x89\
+D\x82\xe1\x85\xf9-6\x8fW\x1dK$\x83\xac4L\
+\xac\x00\xa6So\x10\x8f\xd8c\xe1PW\xc8f+\xb1\
+{*t\xb9\x12\x8f.\x9f\x97\x10%\xd0\x8b\x02v\x8d\
+\x88 I\xf2t0<\x13\x9c\x9e:!_:\xf32\
+\xfdg/\xdc\x05\xdc\xcdZ\x04\x16\x17\xaf\x0e\x07CS\
+\xfe\x80\xcfh\x0c\xd96\xd4\x9a\xa3KK\xefpS)\
+\x5cI\xd4\xee\x8a\xbd\xec=xH\xa8n: \x14;\
+-V\xa5\x02\x95B@\x01\x14dHI2\xd1d*\
+\xcb\xe5\xf7~\xc3\xb5\xe1?\xd1\xf3\xe6\xbb\x1f\x11\xeeV\
+\xdd\xa8\xf7.`\xfa\xe6\x08~\xb0=\xdc\xff\x84\x05\xd8\
+\x8c\xc3\xf5\x05\xf4\x06\x07\xa2\xa8A\x96Rd\xb3\xb3\xb4\
+\xef\xf8!\x10\xe7[\xfb\xefx\x03\xb9\x97\xba\xf56\x13\
+\x07z\x81\x19@\xc5\xca\x13\x86\xc4\xca\xbe\x89s\x8f\x9e\
+\xd4>\xd6\xc7\xbaI\xff\x02R\x96 <_\xfdR\xba\
+\x00\x00\x00%tEXtdate:cre\
+ate\x002023-03-09T0\
+7:06:53+00:00B\xac!\
+#\x00\x00\x00%tEXtdate:mo\
+dify\x002023-03-09T\
+07:06:53+00:003\xf1\
+\x99\x9f\x00\x00\x00(tEXtdate:t\
+imestamp\x002023-03\
+-09T07:08:41+00:\
+00!\x18\x99D\x00\x00\x00\x19tEXtSo\
+ftware\x00Adobe Ima\
+geReadyq\xc9e<\x00\x00\x00\x00I\
+END\xaeB`\x82\
+\x00\x00\x084\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x09pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0\
+kB\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\
+\x12)\xc3\xf6 \xcd\x00\x00\x06\xffIDATX\xc3\
+\xcd\xd8\xd9S\x1b\xc9\x1d\xc0\xf1o\xf7\x8cfF\x17\x08\
+]\x08\x1d\x08l\x0c>\xc0\xb6\xd8\xca:\xde\xecn\xd5\
+\x1ey\xca\xf1\xb4/\x9b\xcd\x9f\x98J\x1e\x92\x97\xad\xad\
+\x1cU\xeb\x0d,\xc6\xd8\xd8\x18\x07cN\x1bsIX\
+ \x9043\x9a\xe9<\x08\x97\x9d\xaa\x84cm\x07\xff\
+\xaa\xa6\xe6eJ\xfdQ\xff~=\xfd\xeb\x11J)\xc5\
+{\x1c\xfa\xdb\xf8\x91\xd7\xff\xa3\x10\xe2\xec\x81J)<\
+\xaf\x85\xeb\xba8\x8e\x8b\xe3:\xf8\x9e\x07B\x10\xd0u\
+\x02\x01\x03\xd341\x0c\xe3\xff\x0ft]\x87\x83\x83\x03\
+\xca\x95\x1d\x96W\xd7X\xdf\xd8f\x7f\x7f\x1f\xdfs\x91\
+\x9aN8\x14$\x95\x8a\x93\xeb\xe9&\x99H\x90H$\
+1M\xf3'\x03\xc5IkP)\xc5\xc1\xc1>\xdb\xdb\
+e\xa6\x1f\xce\xb3\xb2V&\x91HP\xec\xcd\xd1\x15\xeb\
+$\xa0\xeb\xd8\x8e\xcd\xd6v\x85\xc5\xa5\x15\xaa/*\xf4\
+f\x13\x5c8_\xa4\xbf\xaf\x9fx<\xfe\xee\x80J)\
+\xaa\xd5*+O\x9f11\xfd\x84hg\x82\xd2\xb5+\
+\xc4c\x1dH\xf9\x9f5'\x84\xa0\xd5\xf2X[\xdfb\
+|\xe2\x0eN}\x87+\x17\xf2\x8c\x8c\x8c\x90\xe9\xce\xbc\
+\x1b`u\xb7\xca\xe2\xd2\x0a\x933\xab\x9c\x1b\x18d\xf0\
+|\x1f\x9a&\x10\xa2\x0d\xd2\xa4@J\x89\x02<\xcfC\
+\xf9\x0a\x85\xa0i\xbbLNM\xb3\xba8\xcb\xc5\xfen\
+>\xbay\x93x<q*\xe0\xb15\xd8l6Y{\
+\xb6\xc6\xfd\xb95\x8a\xe7\x86\xe8\xeb\xeb\xc5S\x0a\xa1\x04\
+R\x0a4M2}\x7f\x86\xd9Gs\x04\x83A\xbe\xf8\
+\xfcSB\xa10\x9e\xe7#5\x8dR\xe9\x1a\xbe\x12<\
+^z@84\xcd\xc7\x1f\x7fB \x1081P\x1e\
+\xf7\xc0\xf6\xf6\x16\xf3\xcb\xeb\x08+AO.\x8b\xe7+\
+\x94\x10 _\x01W\x9e\xad\xf1`n\x95\xe9\x87\xf3\xd8\
+\x8e\x83\xd4$B\x0a\x10\x02\x85d\xe8\xd2%\xcc\x8e\x1e\
+\x9eon\xb3\xb1\xb1~\xaa\x19<\x12h\xdb6\x1b\x9b\
+\x9b\xacn\xdb\xa4{r@{P!%R\x13h\x9a\
+@\xd3\xa1\xa3\xb3\x93\x81\x8b\x97\xc9\x17\x8b\x18\x86\x86\xae\
+\x83\xae\xb7\x9f\x91\x9a\xc02\x0d\xf2\xc5\x0b\xd4[\x01v\
+\xf7v\xf1<\xef\xed\x00k\xb5\x1a[\xe5*\x07~\x18\
+i\x04QB 4\x89ah\x98\xa6\x8eijX\x86\
+ \xa0\xcb6V\x93\x98\x86\x86iJLS#h\x05\
+\x08\x99\x1a\x96!I\xa6\x92\xd4[\x16\x8e\xd3\xa2^?\
+81\xf0\xc8\x1a\xac\xd5\xf6\xd8\xd9k \xcd8\xfb\xb6\
+\xc2\xf6\xc0\xc2g|l\x8c\xda\xde.\x96e\x22%\xac\
+>+cD\x92\x1c4\x0e\xf8\xdb\xdfo\x11\x0cZ\xb4\
+<\x1f\xdbv\xf8`\xf4:\x89D7B\x0b\xe0\x0a\x8b\
+\xe5\xd5gd\xba\xd3D\xa3\x1do\x0e<\xa8\x1f\xd0\xb0\
+=\x8c\xa0\x85\x90\x12\xdb\x03\xc7\xf3\xf8\xee\xaf\xff`\xbb\
+\xbcK2\xdd\x8dR\x8aT\xaa\x9bB\xc2\xa4\x15\x8e0\
+1=G\xab\xd5\xc2u\x1c\x9e?[!\x9eL\x12\xed\
+\xca\xe0*\x81\x0c\x04Y\x5c\x9e\xe5\xd2\xe0y\xb2\xd9\xdc\
+\x9b\x03]\xc7\xa5\xe5\xf9\xe8\xba\x8e\xaeI\x02\xba@\xd7\
+\x05\xc9T\x8aD\xa6H\xa1\xb7\x0f!@\xa9\xf6\xeb&\
+\x1c\x8ep\xb5\xf4\x01 h4\x1a\x18\x01\x1d\xc3\xb2\xb0\
+}E\xcb\x07!$[[[4\xed\xe6\xdbI\xb1\x94\
+\x02\xdfs\x00\x85\x10\xa0I\x81ej|\xf5\xd5\xaf\x08\
+h\x01\x82A\x0bMJ&&\x1f\xb0^\xae\xe3\xb7\x9a\
+|\xfeI\x89\x8e\x8e(-\xcf\xe3\xd3\x1b\x83ttu\
+a\xfb\xedW\xad\xf2[\xb8\x8e\x8di\x9c|\xeb;\x12\
+\x18\x8dF\x09\x19\x82Z\xcbF)@\x80\x94\x92\xbe\xde\
+\x1c\xbal\xaf0\x1d0$\xb8\xae\x8br\x1d\x92\x9d!\
+\x12\xf1(\x1e\x90I\xc7h\xb8\x8ar\xb5\x05Ja\xd7\
+\xabh\xc2\xa7\xab\xab\xeb\xc4\xc0#Wq<\x9e \x9f\
+I\x10\xd5m\xc2\x01\x08H\x81R\x0a_)\x94\x0f\x1c\
+\xeeA\xe2\xf5K\xb5\xef(\xda;\x8aR\x80\xa2\xd1t\
+\xd8\xdd^!\x99\xe8:\xd5nr$0\x12\x89R\xc8\
+\xe7\xe8\xef6\x91\xbe\x83\xf2}\xdc\x96\xe2\xf5\xcdQ\x1c\
+\x96\x82&%\x9a&\x91\xe2\x15\xb6\x9dVp\x1cEe\
+k\x93\xdd\x8dy\xae_/\x9d\xaa\xbb92\xc5\xba\xae\
+\x93H$\xd9\xa9.\xb0\xf2\xfc)u\xff\x1c=2D\
+$\xa8\x08\x18m\x9e\x02F\x86/\xd0w\xbe\x05\xca#\
+\x1a\x09\xa3\x0e'W\x01\x8e\xab\xa8\xbc\xa8\xb3\xfch\x9c\
+x\x87\xc5\x87?\xbbqb\xdc\xb1@\x80d2\xc9\xf2\
+\xf2\x22[KS\xec\x1c\xf8\xe8\x81\x8b\x84L\x89\xd1\xa9\
+#u\x85\xaf\x04\xd9t\x02y8k\x0ah\x1d\xce\xb0\
+\xed(6wl\x1e?\x9cb{\xe5\x1e\xdf|\xfd\xf5\
+\xa9\xdb\xaec\x81RJ\x86\x87\xaf\xf2x~\x9e\xa9;\
+\x7f\xc6sm\x04W\x112D\x22\xaaa\xe9\xed\xba\xe3\
+0\xb5>\xe0\x01\xfb\xb6\xe2\xe9F\x9d\xe9;\x13\xcc\x8e\
+\xff\x85/>\xfb\x8c\x1b\x1f\xfe\xfcT88E\xc3\xba\
+\xb7\xb7\xc7\x1f\xff\xf4\x07~\xbc3M\xaao\x94\xcb\xa3\
+\x1fq\xae/G:n\x11\xb6$\x01\xf9*\xa5/\xf6\
+\x9a\xac\xac>gf\xf2\x07\x16\x1e\x8e\xf3\xcb/\xbf\xe4\
+7\xbf\xfe-\xba~\xfa\x13\xc6\x89\x81\xd0n\x1en\xdd\
+\xfa\x9eo\xbf\xfb\x96\x9d\xbd&\xa9\xfc \xb9\xe2\x00\xc9\
+t7!\xcb\xc4ul\xaa;\xdbl<]`km\
+\x81\xa0\xa9Q,\xf6\xf1\xd1\xcd_02<\x82\x10\xe2\
+\xd4\x87\xaaS\x01_F\xb9\x5c\xe6\xee\xbd)\xee\xdf\x9f\
+fss\x8b\x86m\x03\xedE\x15\x0e\x05\xc9\xe7r\x8c\
+\x0c_E)0-\x93\x8d\x8du\x1c\xc7a\xf8\xca0\
+CC\x17\xdf=\xf0ex\x9eG\xadV\xa3^\xaf\xe3\
+y\x1e\x81\x80N8\x1c!\x12\x89 \x84`iy\x09\
+MjTv*LNN \x84\xe4\x9b\xdf\xfd\x9e`\
+0x\xe21\x8emX\x8f\x0aM\xd3\x88\xc5bd\xb3\
+Y\x0a\x85\x02\x99L\x0f\xd1h\xf4\xf0\x5c\xd2bnn\
+\x8ez\xbdN!\x9f\xa7X\xec\xa3Z}\xc1\xdd\xbbS\
+\xa7\x1a\xe3\x8d\x80G\x85\xae\xeb\x14\xf2\x05fff\x90\
+R\xa3P\xe8\xa5\xa7'\xcb\xed;\xb7\xa9T*g\x0f\
+\x04\x18\x1a\x1a\xc24M\x1e\xcf\xcf\xd3\x9d\xee\xa6P(\
+\x80R\x8c\x8d\xff\x93\x93V\xd6;\x05\xea\xbaN\xa9T\
+biq\x91z\xa3N.\x97'\x9f/\xf0\xe8_\x8f\
+X^Y>{ @>\x9f'\x93\xc90;;K\
+\xac3F>\x9f'\x1a\x89r\xeb\x87\xefq]\xf7\xec\
+\x81\x00\xa5R\x89J\xa5B\xb9\x5c\xa6\xa7\xa7\xbd\xa0\xd6\
+\xd7\xd7\x99y\xf8\xe0\xfd\x00\xc6b1\x86\x06\x87\x98}\
+4\x8bi\x9ad\xb39\xd2\xa94ccc\xd4j{\
+g\x0f\x04\xb8|\xf92\xcaW\xac\xae\xae\x92N\xa5(\
+\x14\x0a4\x9bM&nO\xbc\x1f@\xcb\xb2\xb8v\xed\
+\x1a\x0bO\x16\xf0|\x9fL&C.\x97cz\xfa\x1e\
+\xeb\xeb\xcf\xcf\x1e\x08\xd0\xdf\xdfO,\x16\xe3\xc9\x93'\
+\xc4b]d\xb3YL\xd3b\xfc\xc7q\x94\xf2\xcf\x1e\
+(\xa5dtt\x94\x8d\xf5\x0dj\xb5\x1a\xe9T\x9al\
+6K\xa5R\xa6\xd1h\x9c=\x10 \x9dN300\
+\xc0\xda\xda\x1a\x01\xc3 \x14\x0a\xd1\xdb[\xc4\xf8\x1f'\
+\xbd7j\x16~j8\x8eC\xb9R\xc6\xf7}j\xb5\
+\x1a\xb9l\x8e\x8e\x8e\xff\xfe\xa5\xe1L\x80/\xc3\xf7\xfd\
+c{\xc43\x05\x9e$\xfe\x0d\xc8]\xfaY2[\xe8\
+n\x00\x00\x00%tEXtdate:cr\
+eate\x002023-03-08T\
+17:27:26+00:00\x9e\x98\
+\xa5\x85\x00\x00\x00%tEXtdate:m\
+odify\x002023-03-08\
+T17:27:26+00:00\xef\
+\xc5\x1d9\x00\x00\x00(tEXtdate:\
+timestamp\x002023-0\
+3-09T06:18:41+00\
+:00=\x00\x9f\x01\x00\x00\x00\x00IEND\xae\
+B`\x82\
+\x00\x00\x03\xde\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x01\xd1\
+PLTE\xff\xff\xff\xee\xf2\xf8\xdd\xe5\xf1\xf7\xf8\xfb\
+\xf5\xf7\xfb\xaf\xc3\xdd\xa4\xc0\xdf\x93\xae\xd3\xe4\xea\xf3\xf2\
+\xf4\xf8\xa1\xbb\xd8\xbc\xdb\xee\xa1\xc2\xdf\x84\xa4\xcd\xc6\xd3\
+\xe7\xfe\xfe\xff\x99\xb3\xd1\xad\xcc\xe2\xaf\xcf\xe4\xa6\xc5\xde\
+\x83\xa4\xcc\xa5\xba\xd9\xf2\xf5\xf9\x90\xab\xc9\xa1\xc0\xd9\xa2\
+\xc1\xda\xa1\xc0\xd8\x87\xa8\xcc\x8a\xa6\xcd\xda\xe3\xef\x87\xa2\
+\xc2\x96\xb6\xd2\x98\xb8\xd3\x98\xb7\xd2\x96\xb6\xd1\x96\xb5\xd0\
+\x89\xa9\xc9z\x9a\xc3\xba\xca\xe1\xfb\xfc\xfd\xf2\xf4\xf7\x82\
+\x9d\xbe\x8e\xae\xcd\x90\xb0\xcf\x8f\xaf\xce\x8d\xad\xcc\x8b\xaa\
+\xc9\x89\xa8\xc6\x83\xa2\xc1p\x92\xba\x98\xaf\xd0\xeb\xf0\xf7\
+\x7f\x9a\xbb\x89\xaa\xcd\x88\xa8\xcb\x86\xa6\xc9\x83\xa3\xc5\x7f\
+\x9f\xc1{\x9a\xbcw\x96\xb6h\x87\xadn\x8c\xb6\xcc\xd7\
+\xe8~\x98\xba\x82\xa4\xcb\x84\xa5\xcc\x82\xa3\xca~\x9f\xc7\
+x\x99\xc1p\x91\xb9e\x85\xaeTs\x9e>^\x8a#\
+Du2T\x87\xb1\xc1\xd9\xf2\xf4\xf6w\x92\xb6p\x94\
+\xc5o\x93\xc4k\x8f\xc1d\x89\xbc[\x80\xb4Pt\xa8\
+Cg\x9b7Z\x8e,M\x7f\x1f@r5U\x84\xb1\
+\xc1\xd8u\x91\xb5j\x90\xc6j\x8f\xc5g\x8c\xc2a\x86\
+\xbdY\x7f\xb6Qv\xacFj\x9f:]\x910S\x84\
+`z\xa1\xce\xd7\xe4\xf2\xf3\xf5y\x95\xb8t\x99\xces\
+\x97\xccn\x93\xc8^\x84\xbaTy\xb0Fk\xa0Cf\
+\x94\x8d\xa0\xba\xec\xef\xf4{\x99\xba|\xa1\xd5z\x9e\xd2\
+t\x98\xcdk\x90\xc6a\x87\xbdQx\xac\x5c{\xa1\xb8\
+\xc4\xd2\xfc\xfc\xfd\xf2\xf3\xf4|\x9c\xbc\x84\xa9\xdc\x81\xa4\
+\xd8y\x9d\xd1l\x92\xc7X\x80\xaf|\x95\xb0\xdc\xe1\xe7\
+\xf1\xf2\xf4}\x9f\xbd\x8b\xb0\xe3\x86\xa9\xddr\x9b\xcd_\
+\x86\xad\xa1\xb2\xc2\xf4\xf5\xf6\xf1\xf2\xf3}\xa1\xbf\x8d\xb4\
+\xe7o\x9b\xc9n\x90\xac\xc8\xd1\xd8\xf4\xf4\xf5x\xa0\xb8\
+a\x8f\xb4\x8a\xa1\xb3\xe8\xea\xed\xfe\xfe\xfe\xcd\xd9\xe0\xc6\
+\xcf\xd6\xfa\xfa\xfa\x8f\x8b'\x1a\x00\x00\x00\x01bKG\
+D\x00\x88\x05\x1dH\x00\x00\x00\x09pHYs\x00\x00\
+\x00`\x00\x00\x00`\x00\xf0kB\xcf\x00\x00\x00\x07t\
+IME\x07\xe7\x03\x09\x06\x142\x1f\xc9N\xa7\x00\x00\
+\x00\xd1IDAT\x18\xd3c`\xc0\x05\x18\x99\x981\
+\xc4XX\xd9\xd89\xd0\x059\xb9\xb8yx\xf9\xf8\xd1\
+\x04\x05\x04\x85\x84ED\xc5P\x05\xc5%$%\xa5\xa4\
+edQ\x04\xe5\xe4\x15\x14\x95\x94UT\xd5\xd4\x11\x82\
+\x1a\x9aZ\xda:\xbaz\xfa\x06\x86F\xc6\x08A\x13i\
+S3s\x0bK+k\x1b[;\xb8\xa0\xbd\x83\xa3\x93\
+\xb3\x8b\xab\x9b\xbb\x87\xa7\x977T\xd0\xc7\xd7\xcf? \
+0(8$4,<\x22\x12&\x18\x15\x1d\x13\x1b\x17\
+\x9f\x90\x98\x94\x9c\x92\x0a\xd3\x9e\x96\x9e\x91\x99\x15\x9b\x9d\
+\x93\x9b\x97_\x00\xb7(\xad\xb0\xa8\xb8\xa4\xb4\xac\xbc\xa2\
+\xb2\x0a\xe1\xa4\xea\x9a\xda\xba\xfa\x86\xc6\xa6fd\xc7\xb7\
+\xb4\xb6\xb5wtvu\xa3x\xb3\xa7\xb7\xaf\x7f\xc2D\
+\xb4P\x9a4y\xca\xd4i\xe8A7}\xc6\xccY\x0c\
+\x04\x01\x00\x16~0NH\xc6\xd0\xc2\x00\x00\x00%t\
+EXtdate:create\x002\
+023-03-08T17:27:\
+26+00:00\x9e\x98\xa5\x85\x00\x00\x00%\
+tEXtdate:modify\x00\
+2023-03-08T17:27\
+:26+00:00\xef\xc5\x1d9\x00\x00\x00\
+(tEXtdate:timest\
+amp\x002023-03-09T0\
+6:20:50+00:00\xdd\xe8\xb2\
+\xde\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x03\xf9\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x04\x00\x00\x00&\xf7p\xe6\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x02\
+bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09pH\
+Ys\x00\x01bT\x00\x01bT\x01\x80\xc1\xe1l\x00\
+\x00\x00\x07tIME\x07\xe7\x03\x09\x06\x12)\xc3\xf6\
+ \xcd\x00\x00\x02\xc8IDATH\xc7\xad\xd7\xcdo\
+TU\x14\x00\xf0\xdf\xb43\xfd\x80*\xd0\xaa\xc1D\x89\
+JH\x91\xaa DK\xa3X\x87\x8e.\x5c41\xb8\
+5a\xa1\x0b\x12\x09\xd1\xb8!1\xb1,\x8c\x0d\x89$\
+.\x8cnH\x8c\x7f\x82\x1a]8\xa5i\xbbhT4\
+R\x81\xc8G\x95\x85DT\xa8\xd5\xb6R\xa6v\x9e\x8b\
+\xa9\xb6\xf3\xde+\x99;z\xcej\xce\xe4\xfe\xeey\xf7\
+\xce}\xef\x0d\xb4:`BI\xb4\x94eokVw\
+\xb4\x1at\xfd_\xac\x92\xf3\x064\xd5\xc7e\xedwH\
+\x8b\xef}\xeaW\xd0d\x9fN\x87e\xbc\xa1T\x0f9\
+!2\xa9{E\xa5\xc7Y\x91\x1b\x8e\xd4\xd3eFI\
+\xce;^\xaa\xaa\xf68\xee~%G\x1dW\x96I\x19\
+\x17\x99s-\x1d\x8c0\xe0H\xac^!\x17\x5cQ^\
+\xa5\x95i#\xde\xf5]\xda\x5c\x91\xd7S\x06\xf4\x98\x88\
+mU2OW-\xd5\xd2\xa6T\xfaL\xc6\xb8\xe7<\
+c}\xea\xe5\x92\xf3\xb0\x82.\x83\xf6\x99Jv8\x10\
+\xbe\xf8Z\xbd%R\xd2_]n\xa8\x83\xaa\xc4u\xef\
+\xbb*\xa7\xeb\xff\x02\x995O\xfcL\xfd\x17pQD\
+\xfcW\x90\xbd\xc9\x80\x0d\x1e\xf1\x90\xb6U\xbe-k\xb7\
+\x0e\xf9\xa5\xb6\x16M\x1a\xf2\xf3j\x9b\xd2\xe8Yc\x89\
+3~\xf3,\x1b\xb53\xbd\xc3\x9cW\xbc\xa6\x0d\xbf\x99\
+\x11\xd5\xb4\x00\xcdn\xb7\xc7\x9b\xe9\xe0\xf3\x06\xb4\xf8\xc9\
+{>N?`\x89\x88\xb4:\xaa\xdfci\xe0\xdd^\
+\xd5\xe2\x92\x17\x0c\x05m\xd2\x0c\x16\xd2vy\xaf\xad\x16\
+\x0d\x06r\x9bt\xe3d\x12l\xf4\xb4\x8c\x1f|\x12\xc4\
+\xf1\xa8{,\xfa0\x09\xdee7\xc6]\x0e\x04\x0b\xb2\
+.;\x91\x04\xbbmR\xf6\xd9\xaa\xb7\xad\xf4\xd8h\x0f\
+N\xba\x10\x073\x9e\x92\xf5\xa3\xf1\xc0\xfev\xd9\x8c\xa2\
+R\x1c\xbc\xd3\xe3\xf8\xc2\xa5\xe0\x0bn\xf6\x8b\xb1\xe4Y\
+\xde\xe5>\x14\xfd\x15\xc4ux\x02_\xbb\x98\x04\x0b\x9a\
+\x5c1\x16\xd8\xdfv\x9d(\x9a\x8f\x83\xb7\xe9\xc5W&\
+\x03\xc1>kM\x19!\x0e\xee\xb0\x05E7\x82\xb8u\
+\xf2\xf8\xb6\xf2\xc0\xaa\x06\xfb\xacq\xcdh`\x7f]\xba\
+0d6\x0e\xae\x97\xc7)\xe7\x02\xc1\xbc[\xcd\x18\xae\
+|X\x09>`\x1b\x86\xcc\x05qk\xed\xc5Y\xa7\x93\
+`\xde-~\xffg\xa6\x9a\xa3\xd3v\x0c\x9b\x8e\x83m\
+\xfap\xc6\x99@\xb0W\x87?\x97\xefL\xcb\xe0V\x0f\
+b\xd8\x1fA\x5c\xb3\x02\xce\xfb\xa6\x1a\x8c\xd0\xab\xdd\x9c\
+\x13\x81\xfdm\xb6\x13\xa3\xae\xc6;\xcc)\xe0\x9cS\x81\
+\xe0\x936*).\x17\x1a,\xa0\xc3\xbdv`\xa4\xc6\
+'\xc8r\x7f/\xe2\xbc/W\x16'D.:lV\
+d\x7f\x00\xd6h\xb7a\x91\xb2\x97W\x963\x0e8\xa6\
+\xc5\xac5\x1a|\xaeh!\xf5]\xac:\x22Y[\xe4\
+\xdd\x81\x0f\x1c\xac\xde\xc8\xb4\x97\xf6Zs\xda1\xed\xc9\
+\xf9\xe2\x7f+j\xcb)\x1f\xe9\x97\x8bc\x7f\x03\xa8M\
+ \xd2E{(\x13\x00\x00\x00%tEXtda\
+te:create\x002023-0\
+3-08T17:21:49+00\
+:00\xa3\xa1\xac\xac\x00\x00\x00%tEXtd\
+ate:modify\x002023-\
+03-08T17:21:49+0\
+0:00\xd2\xfc\x14\x10\x00\x00\x00(tEXt\
+date:timestamp\x002\
+023-03-09T06:18:\
+41+00:00=\x00\x9f\x01\x00\x00\x00\x00\
+IEND\xaeB`\x82\
+\x00\x00\x03\xac\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x01\xa1\
+PLTE\xff\xff\xff\xfe\xfe\xfe\xf6\xf6\xf6\xdc\xde\xe0\
+\xca\xcd\xcf\xc6\xc8\xcb\xce\xcf\xd1\xe5\xe6\xe6\xfc\xfc\xfc\xe7\
+\xe8\xe9\xbc\xc2\xca\xc0\xc8\xd3\xd4\xda\xe3\xd7\xdd\xe6\xc8\xcf\
+\xd9\xae\xb5\xbf\xc2\xc5\xc7\xf6\xf6\xf5\xea\xeb\xeb\xb7\xbf\xcb\
+\xce\xd9\xe9\xe5\xef\xfa\xe9\xf2\xfc\xe9\xf3\xfc\xe8\xf1\xfc\xdc\
+\xe6\xf4\xaf\xb9\xc7\xbe\xc1\xc3\xfb\xfb\xfb\xfb\xfb\xfa\xbf\xc5\
+\xcc\xbb\xcb\xe0\xdd\xeb\xfa\xe8\xf3\xfd\xee\xf8\xfe\xef\xf9\xff\
+\xec\xf7\xfe\xe5\xf1\xfd\xd3\xe1\xf2\xa8\xb2\xbf\xe8\xe8\xe8\xee\
+\xee\xed\xa1\xaf\xc4\xbc\xd2\xee\xce\xdd\xeb\xc5\xd1\xd9\xcb\xd6\
+\xdc\xcc\xd7\xdc\xca\xd6\xdb\xc6\xd2\xda\xd9\xe5\xf2\xae\xbe\xd4\
+\xcf\xd1\xd4\xe4\xe4\xe3\x98\xab\xc4\xba\xd5\xf3\xad\xbf\xcc\x84\
+\x94\xa5\x8f\xa0\xb2\x8f\x9f\xb2\x8e\x9f\xb2\x84\x94\xa4\xc4\xd4\
+\xe2\xa6\xbc\xd7\xad\xb2\xb6\xff\xfe\xfe\xe7\xe7\xe6\x9c\xac\xc2\
+\xbd\xd7\xf2\xdb\xec\xf4\xe0\xed\xf2\xe6\xf1\xf6\xe7\xf1\xf6\xdf\
+\xec\xf0\xd9\xec\xf7\x9f\xb5\xce\xab\xae\xb0\xbe\xc5\xcf\xc2\xd7\
+\xef\xe5\xf6\xfd\xf5\xff\xff\xfa\xff\xff\xfc\xff\xff\xdc\xef\xfb\
+\x91\xa0\xb2\xc9\xca\xc9\xdb\xdc\xdd\xa3\xb4\xc8\xce\xe4\xf6\xf1\
+\xfd\xff\xfd\xff\xff\xfb\xff\xff\xf1\xfc\xff\xba\xcb\xdc\x98\x9e\
+\xa2\xf4\xf3\xf3\xf9\xf9\xf8\xaf\xb3\xb5\x90\xa0\xb1\xc5\xd8\xe7\
+\xe8\xf4\xfb\xf0\xf9\xfd\xe4\xef\xf6\xb8\xc5\xd1\x94\x9a\x9f\xe2\
+\xe2\xe1\xf9\xf9\xf9\xc4\xc5\xc4\x96\x9d\xa1\x96\xa0\xa8\x9d\xa6\
+\xad\x9d\xa4\xa8\xa2\xa4\xa5\xb7\xb8\xb6\xde\xdf\xde\xf8\xf8\xf7\
+\xe9\xe9\xe8\xe6\xe6\xe5\xf3\xf3\xf2\xe5\xe5\xe4\xd3\xd3\xd3\xaa\
+\xab\xa9\xed\xed\xed\xcc\xcc\xcc\xc5\xc5\xc4\xb6\xb7\xb6\xd5\xd5\
+\xd5\xd2\xd2\xd1\xad\xae\xac\xd9\xda\xd9\xf5\xf5\xf5\xc9\xc9\xc9\
+\xca\xcb\xca\xb3\xb4\xb3\xca\xca\xca\xaf\xb0\xae\xd5\xd6\xd4\xfa\
+\xfa\xfa\xfd\xfd\xfd\xec\x02\x5c\xcb\x00\x00\x00\x01bKG\
+D\x00\x88\x05\x1dH\x00\x00\x00\x09pHYs\x00\x00\
+\x00`\x00\x00\x00`\x00\xf0kB\xcf\x00\x00\x00\x07t\
+IME\x07\xe7\x03\x09\x06\x142\x1f\xc9N\xa7\x00\x00\
+\x00\xcfIDAT\x18\xd3c`\x80\x01F\x06t\xc0\
+\xc4\xcc\xc2\xca\xc6\xce\x81\x22\xc6\xc9\xc5\xcd\xc3\xcb\xc7/\
+ \x88$&$,\x22*&.!)%-\x03\x17\
+\x93\x95\x93WPTRVQUS\xd7\x80\x0bjj\
+i\xeb\xe8\xea\xe9\x1b\x18\x1a\x19\x9b\xc0\x05M\xcd\xcc-\
+,\xad\xacml\xed\xec\x1d\x1ca\x82N\xce.\xaen\
+\xee\x1e\xee\x9e^\xde>\x08\xf7\xf8\xfa\xf9\x07\x04\x06\x05\
+\x06\x04\x87\x84\x22l\x0f\x0b\x8f\x88\x0c\x8c\x8a\x8e\x89\x8d\
+\x8bG\x08&$&%\xa7\xa4\xa6\xa5gd\x22;>\
++;'7/\xbf\xa0\xb0\x08\xd5\xaf\xc5%\xa5e\xe5\
+\x15\x95N\x18\x01PU]S\xcb\x81!ZW\xdf\xd0\
+\x88!\xd8\xd4\xdc\xd2\xc0\x84!ZT\xdd\xda\x82!(\
+\xd3\xd6\xd2\x8e\xa9\xb4\xaa\xb1\xa3\x13C\x90\xa1\x0b\xe4R\
+\x00\xd0-*\x8fg\x18\x97\xc5\x00\x00\x00%tEX\
+tdate:create\x00202\
+3-03-08T17:27:27\
++00:008\xef\xae1\x00\x00\x00%tE\
+Xtdate:modify\x0020\
+23-03-08T17:27:2\
+7+00:00I\xb2\x16\x8d\x00\x00\x00(t\
+EXtdate:timestam\
+p\x002023-03-09T06:\
+20:50+00:00\xdd\xe8\xb2\xde\x00\
+\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x04e\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x01\xc5\
+PLTE\xe1\xe1\xe1\xda\xda\xda\xdc\xdc\xdc\xdb\xdb\xdb\
+\xf8\xf8\xf8\xff\xff\xff\xe7\xe8\xe8\xeb\xeb\xeb\xeb\xec\xec\xec\
+\xed\xed\xed\xed\xed\xee\xee\xee\xee\xef\xef\xef\xef\xef\xef\xf0\
+\xf0\xf0\xf0\xf0\xf1\xf1\xf1\xdd\xdd\xdd\xf4\xf4\xf4\xed\xee\xee\
+\xf0\xf1\xf1\xf1\xf2\xf2\xf2\xf3\xf3\xf3\xf3\xf3\xf4\xf5\xf5\xf5\
+\xf5\xf5\xf6\xf6\xf7\xf6\xf6\xf6\xf6\xf7\xf7\xd8\xd8\xd8\xe2\xe2\
+\xe2\xe8\xe8\xe8\xec\xec\xec\xf2\xf2\xf2\xdd\xe9\xdc\xee\xf2\xed\
+\xfa\xfa\xfa\xe3\xe4\xe4\xea\xea\xea\xf7\xf7\xf7\xf9\xf9\xf9\xf4\
+\xf6\xf4\x90\xbf\x8b\x95\xc2\x8d\xdd\xea\xdc\xe0\xdf\xe0\xf5\xf6\
+\xf6\xf4\xf7\xf5\x90\xbf\x88\xaa\xd2\x89\x8c\xbe{\xaa\xc3\xa9\
+\xec\xed\xec\xf9\xf8\xf9\xf8\xf9\xf9\xfb\xfb\xfb\xf5\xf8\xf6\x88\
+\xb9\x81\xad\xd3}\xae\xd4y\x83\xb8c\xa0\xc6\x9a\xeb\xf1\
+\xec\xfc\xfc\xfc\xf6\xf8\xf7}\xafs\x95\xc5P\xa3\xcfU\
+\xa1\xceT\x83\xb9I\x85\xb5q\xdc\xe7\xdc\xf7\xf6\xf7\xfd\
+\xfd\xfd\xf7\xf9\xf9r\xa4_\x81\xbd\x12\x95\xcd\x19\x93\xcb\
+\x1az\xb5\x17k\xa1G\xcc\xdd\xcd\xf8\xf7\xf8\xfe\xfe\xfe\
+r\xa0Z\x93\xce\x09\xaa\xe2\x0b\x81\xba\x0fy\xa6\x5c\xd4\
+\xe1\xd5\xde\xde\xde\xf9\xfa\xfa\xf7\xf9\xfaq\x9bV\x90\xc8\
+\x06{\xaf\x1f\x82\xa1w\xe5\xe9\xe7\xf3\xf4\xf5a\x87S\
+X\x850\xaa\xbc\xac\xd9\xdb\xdd\x8e\x9f\x92\xa9\xb2\xac\xd3\
+\xd4\xd6\xd8\xda\xdb\xde\xdf\xdf\xe0\xe0\xe0\xc5\xc6\xc6\xcf\xcf\
+\xd0\xcf\xcf\xcf\xd1\xd2\xd1\xdc\xdd\xdd\xc5\xc5\xc6\xe5\xe5\xe4\
+\xd6\xd6\xd5\xdf\xdf\xdf\xd0\xd0\xd1\xd2\xd2\xd2\xd3\xd5\xd6\xe1\
+\xe2\xe3\xe4\xe4\xe4\xbc\xbc\xbd\xce\xce\xce\xd8\xd8\xd7\xf6\xf6\
+\xf5\xd4\xd4\xd5\xcc\xcd\xcd\xc8\xc9\xc9\xdd\xdd\xde\xfa\xfb\xfb\
+\xe2\xe3\xe4\xc3\xc6\xc7\xd7\xd8\xd7\xe0\xe1\xe1\xe3\xe4\xe3\xd9\
+\xda\xd9\xdf\xe0\xdf\xe5\xe5\xe5\xe2\xe2\xe3\xd7\xda\xdb\xda\xdc\
+\xdd\xbc\xbd\xbd\xd5\xd5\xd4\xd1\xd3\xd4\xc5\xc7\xc7\xd3\xd3\xd3\
+\xdf\xe0\xe0\xd9\xda\xdb\xca\xce\xd0\xfc\xfaE\x9c\x00\x00\x00\
+\x01bKGD\x05\xf8o\xe9\xc7\x00\x00\x00\x09pH\
+Ys\x00\x00\x00`\x00\x00\x00`\x00\xf0kB\xcf\x00\
+\x00\x00\x07tIME\x07\xe7\x03\x09\x06\x142\x1f\xc9\
+N\xa7\x00\x00\x01dIDAT\x18\xd3M\xd0gS\
+\xc2@\x10\x06\xe0\xe3\xe4\xc4\x02\x18N$\x86(\x1a\x8d\
+&\xf6\x0e\xf6\xd85v={\xef\x15\xb1b\xc3.\xf6\
+^\x7f\xafw\x8c\xce\xf8~|fwv\xf6\x05\xc0\x00\
+\xff%\xcc\x88h\x80!\xdc\x14\x11\x19\x15m\xb6X\xac\
+11\x9c\x0d\x87\x10\x9ab-\xf68\x07\x8f\xe3\x05\xa7\
+\x98\x90\x98\xe8r\x81$\x00\x93\xadv\x89\xc7\x82\xe8\x14\
+SRe\x98f\x8eN7\x00\x18\xcb9()F5\
+#3+;\xc7$\xe6r\x10@3\x8fs)\xc9r\
+^~AaQq\x89\xc2S\xb4\xc6\x8b\x8a[\x96=\
+\x9e\xd2\xb2\xf2\x8a\xca\xaaj\x0f\xb6\x01h\x17\x15\x95\x92\
+\xa6\xd5\xd4\xd6\xd57465\xb7P\xe4~Mom\
+k\xef\xe8\xec\xea\xee\xe9\xa5(\xb9\x99\xe9:i\xed\xeb\
+\x1f\x18\x1c\x1a\xd6\x95\x11\x00\xf9Q9dhl|b\
+rj\x1a\x11#E\xfckdfvn~\x81~\xa4\
+2d\xcb\x84\xe8\x82kqiyE&\xc4\xbd\xcaP\
+c\xa8x\xd7|\xeb\x1bX\xc5\xbc}\x13@\x81\x0d\x22\
+-j\xcb\xb7\xbd\xc3K\xfe\xdd\xbd\xfd\x83?\xf4\x1c\x06\
+\x8e\x8eO\xa4\xd3\xad\xb3\xf3\x0b\x8d\x22=\x83\xd0e\xf0\
+\xeaZUo\x02\xb7w\xf7:\x026\xf0\xf0\x00\x0c\x87\
+\x8fO\xcf*\x12\xf6^^\x01\xa1}\xca\x8abL\x0e\
+\xc3X\xd4\x10\xc2o\xef\xdb\x84\x95\xcc\x9a\x16>\xfc~\
+\xaf\xd7\xfb\xf9\xf5\x1dd\x86~\x00\xa3\xa7N\xa9\x0f0\
+\xa84\x00\x00\x00%tEXtdate:c\
+reate\x002023-03-08\
+T17:27:26+00:00\x9e\
+\x98\xa5\x85\x00\x00\x00%tEXtdate:\
+modify\x002023-03-0\
+8T17:27:26+00:00\
+\xef\xc5\x1d9\x00\x00\x00(tEXtdate\
+:timestamp\x002023-\
+03-09T06:20:50+0\
+0:00\xdd\xe8\xb2\xde\x00\x00\x00\x00IEND\
+\xaeB`\x82\
+\x00\x00\x02\xa6\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x04\x00\x00\x00'\x80\xd5\x86\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x02\
+bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09pH\
+Ys\x00\x00\xb1*\x00\x00\xb1*\x01a\xa7,\xef\x00\
+\x00\x00\x07tIME\x07\xe7\x03\x09\x06\x142\x1f\xc9\
+N\xa7\x00\x00\x01uIDAT(\xcf\x85\xd3\xb1k\
+SQ\x14\x06\xf0\xdf}}\xa1i2\x95b\x0dH2\
+i\xe8\xe0\xe4$os\xb4\x9bm\xf1\x1f\xd0\xa5E\xf0\
+\x1f\xa8\x93nBA\x10]\xc4\xbf@p\x15\xba:\x08\
+B!S\x87\x84.E\xb0\x95R\xb0$\xc6$}\xcf\
+\xe1\xbd$M\x11\xf2\xdd\xe5\x9es>\xee9\xf7\xbb\xdf\
+e\x8aD\xcb\xc0\xdfb\x0d\xb4$\xd3b\x98\xec\xaa>\
+)y\xa7/ S\xb6chK\xd754tl\xce\
+d6u4\xc6A4IgR\xbd\x19bO*\x1b\
+\x071\xaaVd\xeaJjn\x89\x8b\xcaHMI\x1d\
+\xc1\x99n\x90\xd8\xd5\x94\x8a\xddt\xae7\x99:S\xb1\
+\xec\xc4H\xa4\xede\xd0\xf2\xcb{}\xa4W\x06\xc9\x91\
+g\xca\xb6\xdd``\xc3<l\x18D2\xfd\xb9\xc4\xbe\
+,.\xb4,Y\x9d\x5c\xe3*FN\x0d\x05\x93\xe2]\
+\x1f-\xbb\x9c\xca\x81`\xc1\xb9'\x0e\xc6\xf2d\xe8\xd8\
+\xf3\xda\x07\xdf,\x14\xb4K\xf7=\xb5\xa7\x9d3bA\
+\x19\x17\xf6\xfd\xf6\xd5\x97\x99\xb6\x8f\xed\xbb@Y\x88\x1d\
+\xda\x11\xf4\xd4T\x045\xf7\x8a\xb7>\x10T<\xf4S\
+\xc5\xb6\xc3 \xf1\xc2\x1d\xa9\x92U\x8f\xacxU\x9c\xb7\
+\xeb\xccg\xa7\x86\xb9\xe0\xb9o\x1a\xea\x12G\xd6-j\
+Z\xb3\xa6i\xd1\xba#\x89\xba\x86j~\x99na\xa5\
+\x91\xd4\x03\xcf\x8b\xd6o\xa4F\x8e\x1dOM1\x16#\
+\xb2\xa4\xed\xbb\x08\xa9\x1fn\x8b\xa6~\xbdn\xdc\xb7\xfe\
+\x14\xf1\x92g\xff7\xee\x9c\xaf\xf0\x0fs(t\xfdd\
+$_B\x00\x00\x00%tEXtdate:\
+create\x002023-03-0\
+8T17:21:49+00:00\
+\xa3\xa1\xac\xac\x00\x00\x00%tEXtdate\
+:modify\x002023-03-\
+08T17:21:49+00:0\
+0\xd2\xfc\x14\x10\x00\x00\x00(tEXtdat\
+e:timestamp\x002023\
+-03-09T06:20:50+\
+00:00\xdd\xe8\xb2\xde\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
+\x00\x00\x06\xbc\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x03\x00\x00\x00\xbb H_\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x02\xb2\
+PLTE\xff\xff\xff\xf3\xf3\xf3\xe9\xe9\xe9\xfd\xfd\xfd\
+\xc1\xc1\xc1\xc7\xc7\xc7\xd0\xd0\xd0\xd1\xd1\xd1\xfc\xfc\xfc\xbc\
+\xbc\xbc\xeb\xec\xec\xf2\xf2\xf3\xf0\xf1\xf1\xf1\xf1\xf2\xf1\xf2\
+\xf2\xf2\xf3\xf3\xf3\xf4\xf4\xf4\xf4\xf4\xf4\xf5\xf5\xf5\xf5\xf5\
+\xf5\xf6\xf6\xf6\xf7\xf7\xf7\xf7\xf7\xf8\xf9\xf9\xed\xed\xed\xbd\
+\xbd\xbd\xe8\xe9\xe9\xe8\xe9\xea\xe7\xe8\xe8\xe9\xea\xea\xea\xeb\
+\xea\xeb\xec\xeb\xec\xed\xed\xed\xee\xee\xee\xee\xee\xe5\xe6\xe6\
+\xe0\xe0\xe0\xe0\xe1\xe1\xf1\xf1\xf1\xf2\xf2\xf2\xeb\xeb\xeb\xea\
+\xea\xeb\xe9\xea\xe9\xec\xec\xea\xea\xeb\xeb\xda\xe2\xec\xdb\xe3\
+\xed\xef\xef\xed\xef\xef\xee\xf0\xf0\xee\xf0\xf0\xef\xf1\xf1\xef\
+\xae\xae\xae\x9a\x9a\x9a\xa3\xa3\xa3\x97\x97\x97\xf5\xf4\xf4\xf3\
+\xf3\xf2\xf4\xf4\xf2\xf4\xf4\xf3\xf5\xf4\xf3\xdf\xe7\xf3\xe4\xea\
+\xf3\xf6\xf5\xf3\xbe\xbe\xbe\xd6\xdf\xeb\xa4\xc3\xedu\xa8\xef\
+[\x99\xf1\x90\xb8\xf0\xb0\xcb\xf0\xb4\xce\xf1\xb9\xd1\xf2\xbd\
+\xd3\xf2\xc1\xd6\xf3\xc5\xd8\xf2\x9e\xa4\xad\xce\xce\xce\xc0\xc0\
+\xc0\xa9\xaf\xb8\xd4\xe3\xf8\xcd\xde\xf6\xc7\xdb\xf5\xc2\xd7\xf5\
+\xbc\xd4\xf4\xb6\xd0\xf4\x8a\xb6\xf3Z\x9a\xf2{\xac\xf2\xb0\
+\xcc\xf3\xe7\xed\xf5\xec\xec\xec\xd2\xdd\xec\x90\xb7\xee]\x9a\
+\xf0K\x90\xf2\x84\xb1\xf1\x9e\xc1\xf2\xa3\xc4\xf2\xa9\xc8\xf3\
+\xaf\xcc\xf4\xb5\xcf\xf4\xba\xd2\xf4\x9b\xa4\xaf\xd4\xd4\xd3\xc4\
+\xc4\xc4\xa5\xae\xb9\xcc\xdf\xf9\xc3\xd9\xf7\xbb\xd4\xf7\xb4\xcf\
+\xf6\xac\xcb\xf5\xa5\xc7\xf5~\xaf\xf4I\x8f\xf3a\x9d\xf2\
+\x9a\xbe\xf3\xe3\xeb\xf6\xbe\xbd\xbd\xed\xed\xec\xee\xee\xed\xe6\
+\xea\xee\xcf\xdd\xef\xd8\xe2\xf0\xf1\xf1\xf0\xf2\xf2\xf0\xf2\xf2\
+\xf1\xf3\xf3\xf1\xac\xac\xab\x9f\xa0\xa0\xad\xad\xad\xbb\xbb\xbb\
+\xf8\xf8\xf7\xf6\xf6\xf5\xf7\xf7\xf5\xf7\xf7\xf6\xf8\xf7\xf6\xd7\
+\xe4\xf6\xd8\xe5\xf6\xf0\xf3\xf6\xf8\xf8\xf6\xf8\xf8\xf8\xea\xea\
+\xea\xee\xef\xef\xf0\xf1\xf0\xe1\xe2\xe2\xd6\xd6\xd6\xd7\xd7\xd7\
+\xe7\xe7\xe7\xf6\xf6\xf6\xf9\xf8\xf7\xef\xef\xef\xef\xf0\xf0\xf7\
+\xf8\xf8\xf9\xfa\xfa\xf9\xf9\xf9\xfa\xfb\xfb\xf0\xf0\xf0\xfa\xfa\
+\xfa\xfb\xfb\xfb\xfe\xfe\xfe\xbc\xbc\xbd\xe5\xe7\xe8\xbb\xbc\xbc\
+\xe8\xe8\xe8\xe4\xe4\xe4\xe2\xe2\xe2\xe3\xe3\xe3\xe8\xe8\xe9\xd7\
+\xdb\xdd\xba\xba\xbb\xfd\xfd\xfc\xd9\xda\xda\xd1\xd1\xd2\xcb\xcb\
+\xcc\xc8\xc8\xc9\xcc\xcd\xce\xd2\xd5\xd7\xb3\xb6\xb7\xd5\xd5\xd5\
+\xde\xde\xde\xbf\xc0\xc1\xb5\xb6\xb7\xb4\xb4\xb5\xc0\xc1\xc1\xcd\
+\xce\xce\xb6\xb7\xb7\xc7\xc8\xc8\xb4\xb5\xb5\xb7\xb8\xb8\xc3\xc4\
+\xc5\xdd\xdd\xdc\xbc\xbd\xbb\xd2\xd3\xd2\xce\xce\xcf\xb3\xb4\xb5\
+\xcc\xcd\xcd\xe6\xe6\xe5\xbe\xbf\xbd\xd4\xd4\xd4\xd7\xd7\xd8\xc0\
+\xc0\xc1\xa9\xaa\xab\xdd\xdd\xde\xe5\xe5\xe4\xd5\xd5\xd4\xe5\xe5\
+\xe6\xb4\xb5\xb6\xac\xad\xae\xe1\xe1\xe1\xae\xae\xaf\xc1\xc2\xc2\
+\xe3\xe4\xe3\xbf\xbf\xbe\xd6\xd6\xd5\xde\xde\xdf\xc4\xc4\xc5\xdf\
+\xdf\xdf\xc6\xc7\xc8\xc1\xc4\xc6\xba\xba\xba\xfb\xfc\xfc\xe3\xe5\
+\xe6\xca\xd0\xd3\xc6\xc6\xc6\xc4\xc5\xc5\xbf\xc2\xc3\xb9\xbd\xbf\
+\xad\xb1\xb3\xd4\xd5\xd5\xe4\xab\x9e\xc5\x00\x00\x00\x01bK\
+GD\x00\x88\x05\x1dH\x00\x00\x00\x09pHYs\x00\
+\x00\x00`\x00\x00\x00`\x00\xf0kB\xcf\x00\x00\x00\x07\
+tIME\x07\xe7\x03\x09\x06\x12)\xc3\xf6 \xcd\x00\
+\x00\x02\xceIDAT8\xcb\x95\xd4\x87S\xd3`\x18\
+\x06\xf0\xa4\xa1XjMGh\xda\xe2j+\xa6UQ\
+\x11EE\x1c\xb8'\xee]\xf7\xde{\x0f\x5c(\xae\x8a\
+\xa2Qj\xa5\xad\x03q\xe0\x02\x9c8Apoq\x0f\
+\x5c\xff\x87\xdf\x974\xc9\x97\xb6z\xfa\xdc\xf5z\x97\xfc\
+\xeey\xf3~\xcd\x15\xc3\xfe'\xb8\xe2\xaf\xc1\x05GD\
+)\xa3\xff\x9c\x1a\xca(\x22\x08U1\xea\x9a\x9aZ\xa4\
+V\x8b\xeb\xf4\x06\x03\x15k4\xd2F\x10\x9a\x8f\xc9\x1c\
+\xa3\x12\xa0%\xaev\x9d\xb8\xba\xf5\xea\xab\xadV\x9b\xcd\
+\xde >\xbe\xa1B\xa3a\x18\x92t8H\x12wZ\
+$\xa8h\xd4\xb8IB\xd3f\xcd\x13[$\xb5Ll\
+\x95\xdc\xba\x8d\xa5mJ\xbb\xd4\xf6\xa9\x1d:\xe2\x9d(\
+\x04\xa6)\xd4\x9d\xbbt\xed\xd6\xbdG\xcf^\xbd\xfb\xf4\
+\xed\x97n\xeb?`\xe0\xa0\xc1C\x86\x0e\x1b>b\xe4\
+\xa8\xd1.\x14Z\xc7\x8c\x1d7~\xc2\xc4I\x93\xa7L\
+\x9d6}\x065s\xd6\xec9s\xe7\xcd_\xb0p\xd1\
+\xe2%K\x11\xb8\xac\xaem\xf9\x8a\x95\xabV\xafY\x9b\
+\xb1.%c\xfd\x86\x8d\xc9\x9b27o\xc9\xda\x9a\xb5\
+m\xfb\x8e\x9dn\x04Zv\xd9\xad\xb6\xec\xa4\xdd\x1a\x86\
+th\xf1=99{\xf7\xb1,\xdc:s\x7f&m\
+\x92\xc1l[\xf6\x81\x5c\x0d\xe3\x80'\xc4\xd2\xb4\x1b \
+\x8f\x9b\xcfA\x19\xcc\x85\x0e\xd4\x81\x83\xa4bYN\x99\
+\xbc|\x0eYQ\x98\xc79P\x07\x98\x91\xe6\x94/\x18\
+\xbf\x19\x85\x1a\xc1\xb1,h\x13\x94\x1fF\x85\xc2\x04\x92\
+s\x06\x8a\xab\xf3\x8a(\x0c:\x1d\x0c\xef\xc0\x1e\x5c\x9d\
+\xa8@dPKj\xe1\x5c\xe8\xc4\x91\xc1\x102\xa8\x0b\
+u\x22\x0b\x81z\x5c\xcf=_\xd0\xf1\x86O@\x06\x0d\
+:\x038>\xe8\x84:\x82\x88\x08)88\xe8D\x16\
+\xe0\x82\xd9Q\x18\x0b\x06{x(\xb8@ \x02T\xb3\
+\xb2B\x81\xf1\xb7Q\xe8b#8p'\xac\xd1e\x14\
+\xa0\xe8\x80\x22T\xdcf\xea\xc3\xd2\x1b\xee\xa2\x8d\x1e\xa1\
+Pp\x84\xcaGS8\x8eSG\x8e\x22\xd0\x83\x16\xf2\
+\xceG;\xcc\xc7\xf2\x8f\x17\x9c8y\xea\xb4\x04\xdd\x10\
+J\x85\xd0Q\xf6\xfc\xc23g\xcf\x9d\xbfPT\x8c!\
+\xd0#/$|zWI\xfa\xc5K\x97\xaf\x5c\xbd\x16\
+\xadB\xa10\x99/\x0c\xf8YsI\xe9\xf5\x1b7\x0b\
+o\xdd\xbe#\xfc\xa1p\xd0$M\xe6\x0a\xbdLAY\
+\xf9]\xda]QyOr\x10zQ\x08\xae\xb0\xce\xfb\
+\x0f\x1e>\xf2?\xae|\x828\x09\x06\x1f\x11L\xc6\x9f\
+\x96={\xee\xac\xa8,F\x1d?\xda\x87B\x1f\xf3\xa2\
+\xf4\xe5\xab\xd7Uod\x8eoDw!\xbcyo\xdf\
+\x95GW\xe5\xc8\x9d\xb4\x8c\xb8\xb4\x97y\xff\xe1\xe3\xa7\
+P\x07~k;\xa1\x12_\x04\x98\xcf\xba/_\x8b\x8a\
+C\x1dF\xc4\xa4)\xab\xab\xab\x95J%\xfc\xc0\xafo\
+\xdf\x7f\xfc\xfc\x15\xe60\xcc\x1c\x1f\x1eE\x04\xf7O\xf9\
+\x0d]\x11i{\xdc\x1a\xbd\x00\x00\x00\x00%tEX\
+tdate:create\x00202\
+3-03-08T17:27:26\
++00:00\x9e\x98\xa5\x85\x00\x00\x00%tE\
+Xtdate:modify\x0020\
+23-03-08T17:27:2\
+6+00:00\xef\xc5\x1d9\x00\x00\x00(t\
+EXtdate:timestam\
+p\x002023-03-09T06:\
+18:41+00:00=\x00\x9f\x01\x00\
+\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x07\x8d\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x03\x00\x00\x00\xbb H_\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x02\x01\
+PLTE\x00\x00\x00A\xcdRA\xcdRA\xcdR\
+A\xcdRA\xcdRA\xcdRA\xcdRA\xcdRA\
+\xcdRA\xcdRA\xcdRA\xcdRA\xcdRA\xcd\
+RA\xcdRA\xcdRA\xcdRA\xcdRA\xcdR\
+A\xcdRA\xcdRA\xcdRA\xcdRA\xcdRA\
+\xcdRA\xcdRA\xcdRA\xcdRA\xcdR@\xcd\
+Q>\xccO?\xcdQS\xd2bu\xdb\x82\x8a\xe0\x95\
+\x8c\xe1\x97|\xdd\x88[\xd4jB\xcdS\x82\xde\x8d\xdc\
+\xf6\xdf\xfb\xfe\xfb\xff\xff\xff\xfe\xff\xfe\xe8\xf9\xea\x9c\xe5\
+\xa5H\xcfY\xa0\xe6\xa9\xb8\xec\xbeb\xd6p?\xcdP\
+?\xccPp\xd9}\xef\xfb\xf1\xd7\xf4\xda\xa8\xe8\xb0\xa3\
+\xe7\xab\xc9\xf1\xcd\xfc\xfe\xfc\xfd\xfe\xfd\x91\xe2\x9aL\xd0\
+\x5c\xd9\xf5\xdd=\xccOD\xceT\xb9\xed\xc0\xcb\xf1\xd0\
+T\xd2d\xac\xe9\xb3\xda\xf5\xddP\xd1`C\xceTW\
+\xd3f}\xdd\x89J\xcfZU\xd2d\xe3\xf8\xe5\x84\xdf\
+\x8f>\xccPd\xd6r\xf0\xfb\xf1\xf7\xfd\xf8m\xd9z\
+t\xda\x80\xe3\xf8\xe6\xbb\xed\xc1h\xd7v\xf4\xfc\xf5\xf2\
+\xfc\xf3N\xd0^\x86\xdf\x91w\xdb\x83\xe4\xf8\xe6\xf9\xfe\
+\xfa\xeb\xfa\xed\xe5\xf8\xe7\xc4\xf0\xc9M\xd0]t\xda\x81\
+\xe9\xf9\xebY\xd3gG\xcfW\xcd\xf2\xd2\x97\xe4\xa1D\
+\xceU^\xd5l\xdb\xf6\xde\x82\xde\x8eQ\xd1ax\xdb\
+\x84V\xd3eF\xceV\xc9\xf1\xce=\xccNK\xd0[\
+t\xdb\x81Y\xd3h\xcd\xf2\xd1M\xd0\x5c\xd7\xf5\xdbu\
+\xdb\x81e\xd6r\x89\xe0\x93o\xd9|\xd6\xf4\xdav\xdb\
+\x83\xd2\xf3\xd6_\xd5mC\xcdSQ\xd1`\xb3\xeb\xba\
+O\xd1_H\xcfX\xcf\xf2\xd3\x95\xe3\x9eN\xd1^l\
+\xd8y\xeb\xfa\xec\xe6\xf8\xe8\xc1\xef\xc7\xbd\xee\xc3\xda\xf5\
+\xde\xfd\xff\xfd\xf3\xfc\xf4\x83\xdf\x8f\xaf\xea\xb6\xe0\xf7\xe3\
+\xc5\xf0\xcav\xdb\x82\xf0\xfb\xf2\xfb\xfe\xfc\xba\xed\xc0`\
+\xd5o\xc2\xef\xc8\xe6\xf9\xe9\xbf\xee\xc5O\xd1^I\xcf\
+Za\xd6pr\xda~q\xda~\xe7\xf9\xeae\xd7s\
+B\xcdR\xd5\xf4\xd8\xb7\xec\xbeE\xceU@\xcdRz\
+\xdc\x86\xbc\xed\xc2\xc7\x19\xe3\xf1\x00\x00\x00\x1dtRN\
+S\x00\x00\x19SV\x15\x1c\xb2\xfe\xf5?\xb3\xf6\x16\xb1\
+>\xf7\xf3:\xfc\x8d\x0b\xe3\xec\xea\x8c)+\x09\xb3C\
+\xa1\x1d\x00\x00\x00\x01bKGD+$\xb9\xe4\x08\x00\
+\x00\x00\x07tIME\x07\xe7\x03\x09\x06\x12)\xc3\xf6\
+ \xcd\x00\x00\x02UzTXtRaw pr\
+ofile type xmp\x00\x00\
+8\x8d\x95UK\xb2\xe30\x08\xdc\xeb\x14s\x04\x19\x10\
+H\xc7\xb1#k7U\xb3\x9c\xe3O\x83\x9c\xbc\xc4\xf1\
+{\xa9\x89\xabd\x0b!\x1a\x9aO\xd2\xdf\xdf\x7f\xd2/\
+\xffY\xd5\xc47\x1eV-\xeb\xa2\xac\x9b\x16\x13\xcaJ\
+Z\xd4\xb4\xe9\xce\x9dh\x1f\xdb\xb6\x0d\x22\xc8\x9b\x8aK\
+\x8aq\x91\xceY\xbaea\xe8VmI\xaa\xad\x86\x8b\
+\x85m\x95\xbd\x88\xe2\x0d\x83\xcc\xb8D\xc4\x83w\xca|\
+\xb3\xca+`qQ\xbb\x83\xe9B\xd9\xf7z\xd3\xdd\xd8\
+\xcf\x92#\xc0\x1b\xd1\xe1~\xf0:\x0f\x1e\xea\xe1\xc9\x97\
+\x19\xc86\xbf!\x8f\x1b\x94K\x95^r\x22wnX\
+\x88\xb8\xd0\xceJ\x1d\xfe,\xfe@b\xdc [\xb8p\
+ef\x82\xc6\x0dR\xe2\xec2\x1ax7\xac\x0b\xc3P\
+\x0f\xe1\xea\x1b\xacP\xa1\xf3CGx\x04/\x94\xd7B\
+\x22\xa2\xa7\xd0(\xc5\xa1\x87WM\xf0\xc0\x18\xc2\x19\x16\
+?\xda\x0dZ\xb4\x87\xc7\x16\xc8\xcd\x9f\xf0\x84\xb0\x12\xd6\
+>\x01\xe0\x91\xb1!?\xce\x88U\x84\x05\x04?\x7f\xf5\
+\x02. UH\x04i\x0b\xa6\x1a\x18\x82\xc6\xfd\x5c\x97\
+\x04\xc2\x86\x81X\xf7j\x12\xfb\x9c\x0b'X:R\xfd\
+\xe6s\x00\xee_iJ\xd8\x80l\xed\x08\xa7\xc2\xa7\xec\
+\x01\x80^\xbca\xb0\xdf\xb3\xf6d\x9cM\x8a\xd7\xd9\x89\
+\x90te\xfd{\xe3^\x89\x86\xe0\xa03\xdc\x9cq\xc4\
+C\xca\x09\xa5\x18\xf6\x9d\x97\xab\xc0>\x075a\xd3\x15\
+\xee\xdd\xe4\xc1\x8fS=@t\xf12\xf5\xb4H\x93\xe0\
+t\xea\xc0\x10\xc8G\xfa]Q\x08\xbd\x81\xca\x14Fj\
+\x1a\x92\xcb\x90DYJ\x09I\x8do\xe1\x06\xbdE\x16\
+\x992X\xc7.\x92\x94^\x90\xbd\x0c\xd8\x0bA\xdd\xdd\
+\xf2\x86\xdc\xa2m\xcf\xc0\xd5\x81\xd3\xff\x22\x1f\xcc\xad\xe2\
+5U@\x89x\xb9\x16I\x88~\xe8\xed\xad\x113F\
+\xc3\x08%\x8e\xaf\xec=)\xfc\xd4g\x99\xd0\xac1|\
+\xa2\x9c\xd3T\xa5\xf6\xa8\xe5W\x92K\xd4\xb2\x02\x1b\x1b\
+|{Q\xe4\xa7ZZ\xf5\xa0#}\xe2\x03\xa19\x13\
+Y\xd4GU\x84\x5c\xa5\x1c\x14\x14\x94\x15\x22\xc1\x5c(\
+\x09b\x09&\xd0\x90\xee<VWY\x82\x8fg\xe4\x0f\
+%\xe0\xdd\x7f\x81\x1c4_\x22\x7f\x07\x9c\xc8\xc7A\xb0\
+C\xe3\xe7^?k\xcd\xb9t\x97\xa6\xf7i<\x8f.\
+\xfe\x12\x10\xd2\x1c\xfeFs\x9a\xa7\x7fk\xe1n\xf4\xf3\
+\x1f\xe7\x80\x00\x00\x01\xb6IDAT8\xcbc`\x18\
+\x05\x84\x01#~\x80\xac\x8e\x89\x99\x05\x07`feD\
+R\xc7\xc6\xce\x81\x0bpr1\x22\xa9\xe3\x96\xc5\x09x\
+\x90\x14\xc2\xd4\xc9\xc9\x03\x81\x02n\x85\xbc|Pu\x8a\
+J\xca*\xaaj\xear@\xb6\xba:\x16\x85\xfc\x02`\
+\x11u\x0dM-mm\x1d]=}9Y}\x03C\
+#c\x0c\x85\x5c< \x01\x13S3ms\x0bK+\
+k\x1b[99;{m%\x079\xec\x0a\x1d\x9d\xb4\
+\x9d]LL\xf4]\xb5\xdd\xdc=<\xdd\xac\xbd\xbc\xbd\
+\xd5\xb1)\x94\xf3\xf1\xd5\xf1s\x90\x95\xf5\x0f\x08\x0c\x0a\
+\x0eq\x0b\xd2\x09u\x0b\xb3\x93\xc3\xa2\xd0$<\x222\
+\xc0\x04\xa8!\xcaM;:&6N;>!1\x09\
+\x9bB\xf9d\xad\x94TP\xd0\xa4\xa5kgdfe\
+[\xe7\xe4\xbac\xb5Z>\xcf&!\x1fdBA\xa1\
+\xb6^Q\xb1\xb9uI\x11v\xcf\x80L,\x05\x9bX\
+\xa6\x9d\xe1P^a])\x8f=x@n\xac\x82\xba\
+\xb1\xda!\x09\xb7B\xa0\xaf\xb5\xa3\x8b\x80&\x03}]\
+#oWkS\x87\xc3jY\x0fC\xed\xfa\x06\x8f\xc6\
+\xa6fm\xf3\x16\xb9\xd66\xed\xf6\xa8\x0eu\xec1\xd3\
+\xd9\xa5\xdd\xdd\xd3\xdb\xd7?a\x22\xd0\xa9\x93\xb4'L\
+\x9e\x12\x85-x\x80`\xaa\xf34\xad\xe9:\xda32\
+\x81\x0e\x999+a\xf6\x9c\xb9 \x85\x02\x98\x0a\x8d\xe7\
+\xcd_\xb0\xd0B{\xd1b\x90\x9f\xd2||\xbc\x97\x80\
+D\x05\x850\x14\xca\xca\x99\xc8\x17\xe5.\xd5^\xb6\x1c\
+\xcc\x91[\x01\xa2\x84ED1\x15\x82\x9d\xbar\xd5T\
+\x0f\x04\x17\xa4\x0e\xa1P\x009E\xabg\x9a\xa0\xa9\x83\
++\x14\x12\x13\xc7\x01$$E\x913\xab\xa8\x944\x0e\
+ %\x83\x96\xab\x89\xca\xfd\xa3\x007\x00\x00\xf0%\x81\
+`\xd6*Oa\x00\x00\x00%tEXtdat\
+e:create\x002023-03\
+-08T17:21:49+00:\
+00\xa3\xa1\xac\xac\x00\x00\x00%tEXtda\
+te:modify\x002023-0\
+3-08T17:21:49+00\
+:00\xd2\xfc\x14\x10\x00\x00\x00(tEXtd\
+ate:timestamp\x0020\
+23-03-09T06:18:4\
+1+00:00=\x00\x9f\x01\x00\x00\x00\x19t\
+EXtSoftware\x00Adob\
+e ImageReadyq\xc9e<\
+\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x05\xcb\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x012\
+PLTE\x00\x00\x00A\xcdRA\xcdRA\xcdR\
+A\xcdRA\xcdRA\xcdRA\xcdRA\xcdRA\
+\xcdRA\xcdRA\xcdRA\xcdRA\xcdRA\xcd\
+RA\xcdRA\xcdRA\xcdRA\xcdRA\xcdR\
+A\xcdR=\xccN?\xccPA\xcdRA\xcdRA\
+\xcdR?\xccPB\xcdRB\xcdS@\xcdQD\xce\
+U\x81\xde\x8c\xb7\xec\xbe\xb9\xed\xbf\x8b\xe0\x95G\xceW\
+F\xceWt\xda\x81N\xd0]t\xda\x80\xdf\xf6\xe2\x91\
+\xe2\x9b\x8a\xe0\x94\xdc\xf6\xdf\x83\xde\x8eZ\xd4h\xd7\xf4\
+\xdau\xdb\x82G\xcfX\xa7\xe8\xae\xb6\xec\xbd<\xccM\
+\xa4\xe7\xac\x9c\xe5\xa5\xf4\xfc\xf5\xd3\xf3\xd7|\xdd\x88\xa3\
+\xe7\xab>\xccP>\xccO\x90\xe2\x9a\xc5\xf0\xcab\xd6\
+p\xd9\xf5\xdcy\xdc\x85I\xcfY\xb2\xeb\xb9\xa8\xe8\xb0\
+=\xccN\x95\xe3\x9e\xc1\xef\xc7T\xd2ce\xd6s\xd0\
+\xf3\xd5X\xd3gQ\xd1a\xc1\xef\xc6\xa2\xe7\xaaN\xd1\
+^\xd6\xf4\xd9}\xdd\x89H\xcfY\xbd\xee\xc3\xd0\xf3\xd4\
+\xd5\xf4\xd9\xe1\xf7\xe4^\xd5mC\xceT\xaa\xe9\xb2\xd4\
+\xf4\xd8~\xdd\x8a`\xd5n~\xdd\x89\xdb\xf5\xdem\xd9\
+zH\xcfXW\xd3fJ\xcfZ@\xcdRp\xd9|\
+V\xd3e\xff\xff\xff@\xa6,*\x00\x00\x00\x19tR\
+NS\x00\x00\x01\x10\x80\xa4\xa3\xa5`\x9a\x99y\x96\x98\
+\xfbn\x86\x09Q\x8c\x89\x89\x89\x8bhy\xb4\xc5\xfa\x00\
+\x00\x00\x01bKGDe\xb5\xdd\x88\x9f\x00\x00\x00\x07\
+tIME\x07\xe7\x03\x09\x06\x142\x1f\xc9N\xa7\x00\
+\x00\x02UzTXtRaw profi\
+le type xmp\x00\x008\x8d\x95\
+UK\xb2\xe30\x08\xdc\xeb\x14s\x04\x19\x10H\xc7\xb1\
+#k7U\xb3\x9c\xe3O\x83\x9c\xbc\xc4\xf1{\xa9\x89\
+\xabd\x0b!\x1a\x9aO\xd2\xdf\xdf\x7f\xd2/\xffY\xd5\
+\xc47\x1eV-\xeb\xa2\xac\x9b\x16\x13\xcaJZ\xd4\xb4\
+\xe9\xce\x9dh\x1f\xdb\xb6\x0d\x22\xc8\x9b\x8aK\x8aq\x91\
+\xceY\xbaea\xe8VmI\xaa\xad\x86\x8b\x85m\x95\
+\xbd\x88\xe2\x0d\x83\xcc\xb8D\xc4\x83w\xca|\xb3\xca+\
+`qQ\xbb\x83\xe9B\xd9\xf7z\xd3\xdd\xd8\xcf\x92#\
+\xc0\x1b\xd1\xe1~\xf0:\x0f\x1e\xea\xe1\xc9\x97\x19\xc86\
+\xbf!\x8f\x1b\x94K\x95^r\x22wnX\x88\xb8\xd0\
+\xceJ\x1d\xfe,\xfe@b\xdc [\xb8pef\x82\
+\xc6\x0dR\xe2\xec2\x1ax7\xac\x0b\xc3P\x0f\xe1\xea\
+\x1b\xacP\xa1\xf3CGx\x04/\x94\xd7B\x22\xa2\xa7\
+\xd0(\xc5\xa1\x87WM\xf0\xc0\x18\xc2\x19\x16?\xda\x0d\
+Z\xb4\x87\xc7\x16\xc8\xcd\x9f\xf0\x84\xb0\x12\xd6>\x01\xe0\
+\x91\xb1!?\xce\x88U\x84\x05\x04?\x7f\xf5\x02. \
+UH\x04i\x0b\xa6\x1a\x18\x82\xc6\xfd\x5c\x97\x04\xc2\x86\
+\x81X\xf7j\x12\xfb\x9c\x0b'X:R\xfd\xe6s\x00\
+\xee_iJ\xd8\x80l\xed\x08\xa7\xc2\xa7\xec\x01\x80^\
+\xbca\xb0\xdf\xb3\xf6d\x9cM\x8a\xd7\xd9\x89\x90te\
+\xfd{\xe3^\x89\x86\xe0\xa03\xdc\x9cq\xc4C\xca\x09\
+\xa5\x18\xf6\x9d\x97\xab\xc0>\x075a\xd3\x15\xee\xdd\xe4\
+\xc1\x8fS=@t\xf12\xf5\xb4H\x93\xe0t\xea\xc0\
+\x10\xc8G\xfa]Q\x08\xbd\x81\xca\x14Fj\x1a\x92\xcb\
+\x90DYJ\x09I\x8do\xe1\x06\xbdE\x16\x992X\
+\xc7.\x92\x94^\x90\xbd\x0c\xd8\x0bA\xdd\xdd\xf2\x86\xdc\
+\xa2m\xcf\xc0\xd5\x81\xd3\xff\x22\x1f\xcc\xad\xe25U@\
+\x89x\xb9\x16I\x88~\xe8\xed\xad\x113F\xc3\x08%\
+\x8e\xaf\xec=)\xfc\xd4g\x99\xd0\xac1|\xa2\x9c\xd3\
+T\xa5\xf6\xa8\xe5W\x92K\xd4\xb2\x02\x1b\x1b|{Q\
+\xe4\xa7ZZ\xf5\xa0#}\xe2\x03\xa19\x13Y\xd4G\
+U\x84\x5c\xa5\x1c\x14\x14\x94\x15\x22\xc1\x5c(\x09b\x09\
+&\xd0\x90\xee<VWY\x82\x8fg\xe4\x0f%\xe0\xdd\
+\x7f\x81\x1c4_\x22\x7f\x07\x9c\xc8\xc7A\xb0C\xe3\xe7\
+^?k\xcd\xb9t\x97\xa6\xf7i<\x8f.\xfe\x12\x10\
+\xd2\x1c\xfeFs\x9a\xa7\x7fk\xe1n\xf4\xf3\x1f\xe7\x80\
+\x00\x00\x00\xc7IDAT\x18\xd3c` \x010b\
+\x00\x88\x18\x13\x12\x00\x09\x0213\x0b+\x1b\x1c\xb0s\
+\x80\x05\x999%%\xa5\xa4e\xa4\x80\xa4\xac\xa4\xa4$\
+\x17X\x90[RRN^AQIYEU\x0d(\
+\xca\x03\x16\xe4\x95\x94R\xd7\xd0\xd4\xd2\xd6\xd1\xd5\xd37\
+\x80\x09\xf2HJ\x19\x1aI\x19\x9b(\x9a\x9a\x99[H\
+\xc1\x05e\x8d,\xad\xacml\xed\xec\x1d\x1c\x11*e\
+\x9d\x9c\xad]\x5c\xdd\xdc\xcd=\xac\x11\x82\xd6\x9a\x9e^\
+\xde>\xbe~\xfe\x01\x81H*\xdd\x83\x82CB\xc3\xc2\
+#\x22\xa3\xa4$y\xa1\x82\x92\xb2\x8e\xd11\xb1qV\
+\xf1\x09\x89\x92|\xfcP'IJ&II&\xa7\xc8\
+J\xcaJ\xf2\x09\x08\x82\x05\x85\x84E@@T\x0cH\
+\x88K\x08B\xfd\x8e\x19H\x94\x01\x00\x059\x1c\xdc\x03\
+n)\xb6\x00\x00\x00%tEXtdate:\
+create\x002023-03-0\
+8T17:21:49+00:00\
+\xa3\xa1\xac\xac\x00\x00\x00%tEXtdate\
+:modify\x002023-03-\
+08T17:21:49+00:0\
+0\xd2\xfc\x14\x10\x00\x00\x00(tEXtdat\
+e:timestamp\x002023\
+-03-09T06:20:50+\
+00:00\xdd\xe8\xb2\xde\x00\x00\x00\x19tEX\
+tSoftware\x00Adobe \
+ImageReadyq\xc9e<\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x16:\
+\x1f\
+\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xed}[s[9\x92\
+\xe6\xfb\xfc\x0a\xad\xfa\xa5\x1dCB\x99\x89\xbc\xc1U\xee\
+\x89YW\xf4DGT\xc7l\xect\xc7\xee[\x07-\
+\x1e\xd9\xda\x96E\x05I\x95\xad\xfa\xf5\x0b\xc0$\x0f!\
+\xd2\xa4(SV\xd9S\x94\xabx\x90H\x5c\xf2C^\
+\x80\xc3\x03\x9c\x1f\xff\xed\xe3\xfb\xab\x93_\xba\xe9\xecr\
+r\xfd\xea\x14\x03\x9c\x9et\xd7\xe7\x93\xf1\xe5\xf5\xdbW\
+\xa7\x7f\xff\xdb\x9f\x87~z2\x9b\x8f\xae\xc7\xa3\xab\xc9\
+u\xf7\xea\xf4zr\xfao\x7f\xfa\x97\x1f\xff\xc7px\
+\xf2z\xda\x8d\xe6\xdd\xf8\xe4\xc3\xe5\xfc\xdd\xc9_\xae\xff\
+9;\x1f\xddt'\x7f|7\x9f\xdf\xbc<;\xfb\xf0\
+\xe1C\xb8\x5c\x10\xc3d\xfa\xf6\xec\xc5\xc9p\x98K\xce\
+~y\xfb/'''\xb9\xd9\xeb\xd9\xcb\xf1\xf9\xab\xd3\
+\x05\xff\xcd\xed\xf4\xaa\xf2\x8d\xcf\xcf\xba\xab\xee}w=\
+\x9f\x9da\xc0\xb3\xd3\x9e\xfd\xbcg?/\x8d_\xfe\xd2\
+\x9dO\xde\xbf\x9f\x5c\xcfj\xc9\xeb\xd9\x1f\xd6\x98\xa7\xe3\
+\x8b\xcc\xddw\xe6C\xacL\x98R:\x03:#\x1af\
+\x8e\xe1\xec\xeez>\xfa8l\x8b\xe6>n+J\x00\
+p\x96\xf3z\xce\x87q\xbd\xfcx\x95\x91\xf8lgj\
+\xeez\xeb\x19\xfd\x9b\xfc\xdf\xaa\xc0\x92\x10f\x93\xdb\xe9\
+yw\x91Kv\xe1\xba\x9b\x9f\xfd\xf4\xb7\x9fV\x99C\
+\x08\xe3\xf9x\xad\x9a%\xf8M\xbb\xcd\x88\x5c\x8f\xdew\
+\xb3\x9b\xd1y7;[\xd2K\xf9<\xa0\xe3\xf9\xbb\xac\
+\x0c\xe45\xf9\xae\xbb|\xfbn\xde\xa7/\xc7\xafN\xb3\
+|\xa4\xa05\xbd\xec\xc1\xcb\x95\x1aA\x88T\xb3\x96\xd5\
+\xaeg\xb1\xfc\xeb\xb8\xfb\xa5\xbb*\x0c\x8d\xe6\xb5\x95\x8d\
+'\xe7\xb9\x7f\xb9\xf7o'\xc3\x9bi\xf7\xcb\xe5\xe4v\
+\x16r\xb3\xbf\xb6\x15On\xe77\xb7\xf3\x7ft\x1f\xe7\
+\xdd\xf5\xa7\x9a\xb2dkb\xd6\xecZnE\xdch\xe7\
+\xcdh\x96\xdb9{7y\xdf\x9d\xdd\x5c^gy\xa7\
+\x93\xb3\xd1t\xfea2\xfd\xe7\xd9\x7f~\xbc{\xdb]\
+\x9f\xcd\xce\xa7\x97ong\xf9{t5zs\xd5\xb5\
+\xbd\xe8>\xdeL\xa6\xf3\xe1\xc5\xe5U\x97;\xbdQY\
+\xbe8\x9f\x9dMjM\xab\x1a\xceF\xe7\xf3\xdc\xe1\xd9\
+Y\x16\xf0:\xf7?\xdc\x5c\xbf\xddZ\xeb\xc7\xf1M\xd6\
+\x05t\xd8\x9a{\xb7\xca\xfdS\xce\xfeq\xdc]\xcc\xf2\
+\xf7b\x98J\x8a\x14\xbc\xe6\xe5\xdc\xaci\xddh\xfa\x1f\
+\xd3\xd1\xf82\xdbW\xa5\xadWy>\xb9\xba\xea\xce\xf3\
+P\x8f\xae>\x8c\xeef\xa5\xbdUUm\xd1\xc8\x9cj\
+\xa5\xb5\xda\xd9|r\xb3\xb8.\xd0\xce\xef\xae2\x04\x85\
+8\xcc5N\xa6/\xff\x00\xf5\xf3C%M\xb2\xc6]\
+\xce\xef^\xe2\x0f\xa7}\x99\xc9\xc5\xc5\xac\xcb\x0dW\x19\
+\xfbVk%\x91\x05OO\xce\xbe\xac5\xd8\xd6\x1an\
+o-\xaeZ\xfb\xf1\xac\x15{7\x8c\x9b(Q\x92\x03\
+P\xd2\xd8\xa5\x8b\x8b\xc7\xa2D\xc9\x0eB\xe9\xa2~\x1e\
+\x8b\x12\xa5\xb4\x03\xa5#+\x1b)\x9c\x1e(\xd8\xe3a\
+T\xfa\x9a0*\x1fO\xd9\x80\x0e@\xe9|\xdcu_\
+\x80\x12\xf0A(\x8d\xa9\xf3n\xfch\x94@\xf7\xa1T\
+R\xa3\xabm(\xfd\xdf\xbf\xfe\xfc\x97\x9f\xfe\xc1\xffX\
+U|\xfe\xf1\xd5){\x9f\xbc{u:\x84@\xb8F\
+\x9b\xbe:\x15\x09\xeb\x94\xb7\x8b\x9a\xff6\x1d]\xcfr\
+\x04~\xff\xea\xf4\xfdh>\xbd\xfc\xf8G\x08\xc9\x12\x0d\
+ \xff\x95K\x92\x01\xc6\x18\x00\x80\x06\x04\xc1M\xe9\xc5\
+F-\x7f\xbf\xbe\x9c\xe7\xc9\xc3\xed\xac\x9b\xfeW\x09\xc0\
+\xffy\xfd\xf7Y\xd7\x0e\xde\xb6\x81\xd8\x09\xb1\xd1O\x18\
+\x7f\xda\x06\x1fxQ\xe9}\xb5\x87(\x12w7\x11\xe5\
+\xdf_\xe3\xeb\xedM\xf0C\x9aPL\xbc\xbb\x09\xf8s\
+\x12\xf0\xedM\xe8C\x9a0\xb1}M\x80\xbf\x06\xd8\xde\
+\x84\xefo\x02\xf7\xd5n\xff\xfe\x99\xda\x13\xaciq\xa3\
+\xb0\xad\x16\x1f\xec2\xeb\x0c\xf2\xe5\xbbi\x97g\xbc\x7f\
+h\xf4}\xd9\x81\xb6\xe2\xa8\x94\x1e\xa8\x93\xfb\xf5\x1f\xab\
+\xeac\xc0\xe81Q\xca\xd7C\x84 h.\xf6\xa21\
+:4j\xac\xcet\x95\xbc\xb8\x97}Q\xb3\x1b{,\
+\xa3\x7fD\x98Z/\xa2\xf9\xb3\x0b0\xc2\xf8\x1b\x04\xcc\
+=\xb8\xa3\xc5\x066$\x0c\xcc\x84q\x03\xbd&\xa0\x1c\
+\x13\xbdH\x0a\xbb\xe2w\x04\xec\xab\xc1,G\x0c\xc6\xa4\
+\xb1\xb7\xf3\xbbLE\x091\xaa0\xf7\xbc\x94y=\xa4\
+\x98bL=o\xa6\xa2\x06\x1309T\x8dgy)\
+1\x1a\xff\xb5\x9b\xbf\x9b\xe4nfY\x8a\xa8\xbb\xc6l\
+^.\xaf\xf2:\xf7\x8f<\x80\x17=\x88y\xaa?\xef\
+\xa6\x0f\x07\xaf\xc6\x18\x04\x02\x03\x94\x05\xb9_i\x05\x02\
+F\x86\xd8\xcb\xf8\x89\x9f8\x89\xf6\xe0\xf5K\xb1\x90s\
+\x12R\x03\xfa\xa7.\xc5\xe8\xd6G\x92\x8b\xee?F\xb7\
+\xb3\xd9\xe5\xe8\xfa\x7f^\xdd\x96\xee\xee\xe9p\xe3\xdb\xc6\
+?\xe5e\xd7h\xbe\x5c\xb7\xb1\x8ah\xba\x1f\xa0\xdb\x16\
+b\xf4\xf5y\xe1\xa7.=\xa1\xde%\xd9\xa9w)\x1e\
+U?\xaa\xeer0i\xf5\x96\x03\x99\xb8\x1f\xa4\xb7O\
+i\x8e\xca\xc0\xbb`a8\xd0l\xaa\xe0\x988\xdc\x13\
+\x9cbH\xa0\x1e\x1b\xc1\x118\x904RK@\x91$\
+N\x0f\xf6\x8e\x10\x5c\x11Xc\xf1\x8d\x9e\xff\x178*\
+\xba\xda\x17\x9b \x8aE\x88\xbc\xc5\x04#\xb2\x82m\x98\
+\xa0IL\xa2\xdbLP\x04,\xe16\x1bd\x8eOb\
+\x83\x91\x84\x13\x8a\xef\xb6Af\xd9\xb0\xc1'\x8b\x9c\x91\
+9\xed\x8a\x9c,\xd2\xc44\xa3\x00\x04\x8e\xb1\x89l\xaa\
+\xa1t\x1bz\xde\x8b\xad\xbc\x17[y\xa7\x99\x08\x0f\x9a\
+\xaa\x8b\xa3\x92\xcb\x00\x83\xa9\x99Z7\xa4\xc1\x90\x82&\
+W\xe2TR\x10\xdc\xcd\x93\xd3 bH\x84\xce:\x90\
+\x90\x18\x13$~\xe0L\xfeic-\xd0.\xe3\x16\xc2\
+\x03\x8c\xfbp[\x0c\xa8\x18\x1b\x8b<\xc0y\x12\xc5\x10\
+\xc9\x90\x1a?\x221\x983J\xebG\x884\xa8\xb4\xee\
+S,\x90%\x8a\x94\x11~\xae\xa8BD\xfa\x18\xf7i\
+)\xa0\x11\xf1\x86\x0b5q\xe5\xd6\x85:\x04\x06\xe3V\
+x\xa5\x90$%M\xcf+\xbc?\xb5\xf0\x16Cr0\
+l\x85\x97\xc0\xec\x88\xf4\xb0\xc9Z\xb2<[{N3\
+$\x89\x0d\x02l!\xa9\xb3Q\x8b\x80\x06\x8c.h\x0d\
+\x02\x9c\x02a\xcb\x9b\xa9.\x81\xc9\xe4\x90)\xef~\x9c\
+\x86\x10d0t\x0b\xeaHL/\x9es\x95 \x11\xfe\
+{x\xaeg\x8b\xc5\x12\xf9h\x08C qU\xb0A\
+\xd1!Bb\xe3\x028\x19G.W\x8c\xa0\x808\x18\
+F\x09\x12\x13\xcb@ \x80\x88$iW\xb9C\xd4\xa0\
+\xea\xec\xed=9\xd7\xe0\xa4I\x9b)\xc16\xe6\x8b\x86\
+\xb9\x99\x13\xec\x06\xbb2q\x0cllJM}\x82A\
+\x12\xa5\x84M\xe3\xee\x01\x98\x1cR\xbb*\xe7\x90,1\
+j#\x95Y\x90\x18\xa3\xe1\x1e%\xdb\x8ft\xc6\x97\x93\
+\x22\x88\x16T\x19\x92S*\xa0[T\x90\xc4\xe5\xd2\xc9\
+AU\xb3nc0R\x8f2p\x0b\x9e\x0c\xc4\x1f8\
+g\xd9\xa57\x18\xd3C\xd4\x8fR\x82\xd3}z\xdc\x0f\
+\xc9\xf9\xd5\xe5\xcd\xff\x1a\xcd\xdf\xad7\xbc\xa4E\x8c\xfd\
+P.\x89{\xee\x9a\xde\x94\xba\xda[suB~\xf5\
+2\xff\xb4\xfc\xc7?l\xca\xf4\xe2\x87\x92\xbbv\xf7{\
+6\x9fN\xfe\xd9\xbd\xbc\x9e\x5cw\x8b\xeba]\x1e\xbc\
+D\x0d\x9c\x04\x00\x9c\x97\x19E\xf4,\xdf\xcb\xe9\xe4\xf6\
+z\xbcN\xfc\x7f\x93\xcb\xeb\x96\xfa\xfe2O\xc0\xaf.\
+\xf3\xd7\xcbU\xf1\xf1h\xf6n4\x9d\x8e\xee\x9a\xd6\x0a\
+\xb5\xdeg\xcc\x9c\x01eA\xee{\xb86\xef\xcf`\xfd\
+\xf5d\x98,DB\xc7\x01YH\x1cMN^\x9f\x0c\
+\x11,\x88\x22\xd2\x8a\x8a\x99\x88\x16,!\xc42\xafu\
+t4\xcdD\x92 \x22J\x83\x98\x828\x99R\xad \
+\xc6\x90\x89\xce\x03\xb6LN)\xc5B\xb4\xc0\xcc\xae\x03\
+\xf1@D\x8a\x0b\x22\xa6\xe2a\xd5\x83YbH'?\
+\xaf\x93S1L\x02\xc6RoOF\x80\xe0\x16\xcd?\
+5\x96\x18\xb0\x109 9\x15\x22\xa5\xe0\xee1\xf5\xc4\
+R\xafr0\x11\x8a\xd2\x93K\xbd\x0a\xc1 r\x92\xf5\
+*\xa4t\xd7S\x92Uc\x0d\xb1\xef\xd8\xcf\xeb\xe4^\
+\x8c\xd7\x95\x8c\xc9Me%2\xe5\xc60\x80\x83\x99\xac\
+\x83\xa3)\x13\x1d\x00[ M\x83\x0b\x89\xe3\x0a\xf4<\
+\x12n\x99\x978\xd9rx8m\x1b\xc8_O\xd6\xc7\
+\xb7\xb8)G@.\xd5&\x08\xc9\x89\xc5Wd\xc9\xd5\
+r\xd0\x18%c\xc3\x12\x12Z\xae\xd4R0e4-\
+\xae\xd7\xdcH\xb4\xf6\x8aC\x12\xb2,\x95\x04I\xae\x9e\
+I\x14\x04\x05-\x0d\x14\x83\xc7\x18\x9d*\x91\xc5R\xe4\
+\x82\x0a$\x00\xaa`!Q@\xb1hk\xe4\xd7\x0b2\
+\x00\xd2\xaa\x8a\xaau)h\x02\xd7e[\x96\x0a\x91\x83\
+[bn\xbb\x85\x08\x01\x10\xc0\x17\x02x\x92L\x84\x18\
+T\x11u%j\xdc\x8a\xca\xaf\xf7\x96\xc47\x9f\x9c\x88\
+\xf5\xe4\xfe'\xff\xeb\xc9\xb8\x9b\xdf\xddt\xb3\xecof\
+\xe7\xf53[\xfc[[7/\xbd\xce\x7f\xaf\x00\x92R\
+@F\xb6#\xc7\x8f\xf8\xd5\xe3\x07\xa5\xc7\xc4\x8f\xc3\xb4\
+e\xbb\xcemzit.`\xb3\xb4n:\x95q\x17\
+\xd3u7M \x81@\xd4\xd6\xdd4!eN m\
+\xbd\x0b\x11d\xb2\xb1\xaf{\x22\x22\x0e.\xa9wY\x0b\
+\x9aB\x22k\xbctOn\xbctO^w\x9cD\x18\
+\xa2\xb0\xd9\xba\x8b%\xb4\x10!\xff\xb5^\x1a\x85\x02j\
+rk\xbd4\xb2\x07D\xbf\xe7\xe8\x99\x83klBB\
+Ol\xbctOn\xbct%+F^s\xd2\xb5-\
+N\xc2\xd8D0\xd1 @\xca-\x8c\xa8\x1cH\x8dh\
+\xddI\xa3q\xe0d\x18{'\xdd\x8cc\xe3\xa5{z\
+\xe3\xa6\xd1<\xc4d\x90\xd6\xdd4\x1a\x05\xc8\x09\xeb\xdd\
+4\xaa\x054w\xbc\xe7\x0f\x95BT\x8bi\xcdO\xa3\
+\xa4\x90(9\xae\xf9\xe9J,\xa5\xac\xf5\xd3\x04)\x88\
+\x11`\xeb\xa7+\x19\xd9t\xddO\x13X@\x10Yw\
+\xd3\x04\x14(1\xf8\xbdn%\x0bLl\xd4\xb8\xe9\x84\
+\x01l- \xc5\x16\x95\xdeM\x1f2C\x8b\xdf\xde\x0c\
+\xed\x89\x03\x88\xc5 \x82\x84\xba-\x80\x807\x01Dc\
+\x00F3\xf9\xf2\x00\x82\x01\x81\xc1]\x06\xcbPQ\x97\
+}\xaal\x9c\xb4\x5c\xbak\x8cd\x83\xa2\x08\xccJq\
+\xa0\x14Hb\x02\xfd\xf2\x00B\x0cO\xb1\x00i\x0b\xaf\
+\xaf\xd6\x87\xc5\xb3*\x11\xb6\xb7\xa6\x14\x02\x03\x81\xb6?\
+\x83(\x070E^\xeb\x226\xbc\x07J\xbfy/\xc9\
+\x1f$\xbd\xaa\xf1\xa3\xa5?\xa8\x93\x15#o\xa0\x19*\
+4\xa0 H\xf0\x08\xc2\x0d(\x99+$\x16\x12\xdc)\
+/\xc7\x87\xddO\x8av\x94\xd1&\x0c\x10\x91\xa4\x11(\
+b\x88\xa6j\xde\x88e\x99\xd59\x817b!J\xe8\
+y\xf7\xdet\x83@1\x12Q\x1a`H(\x90\x18_\
+\x1cAK\x1e6\xc9Rf=\x0aj\xac\x81\xc8]R\
+\x03\x9b\xa4L\x15\x07ka\x0b\x9e,\x12Z\x03[\xcf\
+\xfbP\xd8\x94\xa2f\xd8\x8e\x03\x17~U\xb8\x9c\x02P\
+ri=\x8aq`6Sj\xe0\x1a\x92\x86\x14UI\
+[\x97\xc2_,69\xea\xe1b?\xbd/\xf1\xa01\
+\xb2\xb7\xe0`\xca(p\x8c\xda\x80#\x10\xc4A\xb9\xd1\
+\xa5\xc2\x0bI\xcdd\x87\xf0\xaa\x0e_\xc5\x91\xeeW\xe5\
+A<T\x85\xef\xa8\x8an\xe4\xc9\xa5\x8dJ\x14 \xba\
+!\xdd\x7f\x9a&a4lP\xeaYw\xa1\xc4\x0f\x0c\
+7\x1c\xbf\xa2\x8a\x18\x17y\x90\xadu7\x12\x22%\x88\
+\xb1\x95\x1d\xa9\x11\xbb\xe7\xda%v\xb4\x87\x89\x1d\xf18\
+Q\xc7\x03EI\xf7\x04\xc2\x18\x92\x22p#\x0fa@\
+\xc0\x94\x9a`Z\xa8\x908S\x8f\xf1t\x13\x04\xc6\x02\
+\x11\x0d (\xa6(\xec_\xeed\x95\x8d\x1e\xeam~\
+\xc7\xf4\xc1\x98\xc2\xd7\xc5\xd4\x02\x18@J-\xa6\x12\x90\
+\xd4\xdd\xbf\x13P\x95\xbf\x06\xa8\xfb\xc5\x1bZ\x107H\
+\xea\x83|\x19\x1d\x94\x85\xf6\xfcPy\x90\xf8\xfd\xa0\x82\
+\xb9\xf0\xc6\xa0z\xc2\x18\x0f\x19\xd4\x9d\xb0\x0a\xfd\x06g\
+\x1bCj\xc5\xa6\xd63\xb87\x82F\xda)!\xc2\x01\
+\x8f\xe4\xed\x95p\xef\xbd\x02\x0a\x22\x89]\xdbG~!\
+\x06q\x88=\xf1ce5\x80(\xcd#\xc4\x9b\xac\xe7\
+\x0d\xebv=\xbb\x19\x8d\x1f\xf2\x9b{\x88I\x85$\x0e\
+4$\x8f\xc8\x82\xdd0\x1656GNZ\x12\x18D\
+\x14=\xca\xa0\xfe^\xe0\xa4\x88\x83\xa1\xa6\xa0\xc9\x15\x8f\
+p\xab iz\x98\xca\xa9>^\xe5v\xe9\x03p\xbb\
+\x8fcs#\x802\xe8\xe9\xc1\xdb;\xc0\xb1\x8b\xdd\xc6\
+~\x9d\x93\xb3\xfd\xad\xf9\xe9\xc1\xbb\x18\xa2\xdb\xb8\xe3\x8d\
+\xd6\x8e\xb4UI\x99u?J\xec\x87\xa3tQ?\x8f\
+AI`\x1bJ\x87\xb7\x06\xc7CI#\xeeEIc\
+<\x1c%\x83h\x00\x8f@I\xa3\x1c\x8e\xd2\x9b\x0b\xe9\
+\x00\x9e\x0e%\x8e\xfbQby\x94.\x8d\xc7\xe7\x8fA\
+\x89\xed1\xba4\xbex\xf3\x84\xba\xa4z\xc0\xe6\xc0t\
+q\x8e\x17\xf4\xc8\xcd\x81\xaa\xea\xfbQ\x8a\xe8[57\
+\xc8n\x9c\xc4\xad{#\xfbFe\xb7+=\xa7\x91\xf8\
+\x03\xa4\xc3\xad\xd2\x19\x1coT\x8c\xf7\xeb\xae=&Z\
+\x00*\xfbct\xd7\x1e\x11-\x10G\xe9\xe9\xfc`\xa4\
+h\xfbP\xca<\xe9p\x94\xc6\xd2\xe9c\xa2E$\xc6\
+\xdfZ\xb4\xa0\x94`\x1fJ\x99\x87\x1e\x81\x92\x95\xbf\xc3\
+Q\xa2\x94\xf88(\xe1\x0e\x94\x0e\xdf\x0b\xd2n\xd5\xc0\
+'\xda.%*$N{\xb6j\xe0\x96\xedR\xcf\xb6\
+/\x88\xf0x\xbbB\x87\xf7\x9f\xc0\x8d&\xcd\xa3\xb7G\
+\xdeZ\xf4\xac\xcf\xd5\x12\xe1\xf1\x80\xdb\xfa`\xedp\xdb\
+\x93\xb5\x11\xe8\xd9\x9e\xac}\xce\x07\xc5\x89\x8e\xb8\xad\xef\
+\xf8[R\x9fu\xdb\x01\xc9\xef\xcf\xd0?\xb1\xad\xdb\xf1\
+l}\xfb\x86\xb4\xcf\xecG\xa3(\x01\xcc\xb1\xd9\x8f\xf6\
+U\xb6\xd6=\xe3\x86\xa3H\x94\xbe\x83=\xbc\xc7\xf7\x81\
+\x91~7\xf4\xa7=\xf2!\xf2\xb7\x7f\xe4\xc3W>W\
+\x84\xa2~{\xe7\x8a<\xabw\x8b~ `\xfb\xb7=\
+>\xd5\xce\xcbg\xc5\x89\xe1y\xb7\x9d>\xeb\xa4\x8e\xe9\
+\x98J\x82\xd1\x83d=y\x9a\xfd\xa9\xcf\x1c\x16\x99\x8f\
+\x0d\x95\xb9q\x0e\x84\xb0@\x22\xb5\xb8\xb9\x05Vg\xf5\
+\x06\xb7\xcc\x1d\x15\xd9I\xb4U2\xd4`\x05\xba\x069\
+\x04\xad\xd0\xe9\xf3\x22\xa7_\x179L\xfa\x09\xba\x069\
+\x8d\x9f\xb8\xa5\xc1M\xa8j\x9czk\x9c\x1a\x88\x98\xc5\
+\x9es\x9a\x00\x88\xcf\x11\xf2\x1cB\x8c\xc8\xdc\x04\xbe$\
+\xc1@\x10\xb0\x89\x7f\x9b\xbc\x17\x0do\x13\x0c\x9f\x17J\
+\xfb\x1d\xcacA\x99~\x87\xf2HP\xd2\xf1WZ\xc9\
+\x01\x19R\x01\xd2+\x9a\x9c\xc0\xf0+\x81\xf9\x9cS\x19\
+`h\xc3\xa7\x06aC\xdf\x98u\x08\xd3\xbd\xc5\xb8s\
+H\xac\xf7g\x1df!2D\xf3\xdf\xfe\xc9<p\xe0\
+\xdc\xe4p\x84<X\x8c\x9c\xeeO\xcb\xd4\xd0\x91\x9fW\
+t\x7fV\xd1\x1f\xf8P\xf6\xd00$\x89\x94\xe2\x8bg\
+EK\x8e\xe0qZ\xb9`)\xd7w\xa8[\xa2\xc7D\
+k\x88X\xc0J\x22\xdf9l\x0aG\x86\x0dW\xb0\xe1\
+\xf7\x0c\xdb\xb1\xb5\x8d\xd6`\xb3\xef\x176\xff\xddH\x0f\
+_\x94\x83\xe1W\x86\x8d\xa2\x7f\xe2hq\x13\x0e\xae\x22\
+\xd6\xe0\x86\x89\x83\x80\x89\xb4\xc0Y@\x06K\xf1Y\xf5\
+\xcd\xe2\xb1C(~\xcfjv\xdc{?\xc1I\x155\
+\x0db\x88\xec\x1a\xc9\x1f\x0f\x1a\x05\x92\xc4\xd8\xea\x98b\
+@WP]\xa0\xf6\xe3Yy\xd3I\xbd\xea\xcf\xed\x18\
+\xbd\xef\xc6\xbf\x5cv\x1f\xfa\xd7\xa1\xbc\x19\xadD\xb8\x19\
+\xbd\xed\xea\x13G\x19\xac\x8b\xfaYd\xbc\x99L\xc7\xdd\
+t\x99\xa5\xf5\xd3d-\x1eJZ\xbc\xb2\xa6\x1d\x9bR\
+\xeb*\x1f\xb6\xe7\xe7S\x05\xc6\x93\x0f\xd9\xd2\xeeg\xfe\
+:\x99\xbc/\xb5\xba\x1a\xba\xc9\xfd\xec\xba&\x14\x0b\x96\
+\x88\xe2Ffn\xcf\x83RL\xecx?s<9\xbf\
+-\xefS\x1a\xde~\x1a\xd3\x9b\x8f\x1b\xc5o\xa7\xd3\xc2\
+p5\xba\xeb\xb2\xd8\xf5\xabV\xd3\xbc\x0d\xa8\x96\xeb\xcf\
+\xc0mio\xa7\x97\xe3Y\x11\xfd\xfam\xee(o\xa3\
+\xdf\xdd\xa7w\xefo\x16Y=\x1c\xf9x\x85\x0f9\xaf\
+<*5\xba\x9au\xf7{Z\xb2\x867\xf9\x00\x87\x22\
+\xc8|z\xdb\xad\x17\xbb\xcdU\xf6\xe4\xa6\x5c\xcd\x1b\xbe\
+y3\xf9\xb8=\xff\xc3\xe5u\x1e\x95\xe1RX@\xfd\
+\x0c\xc7RvM\xf4\x19\x8e\xdcBT\xf8Lf\xc6@\
+m\xf9:\x9eF\xaa\xa5~\xcf\xef\xca;\x9b>\xde\x15\
+Zc\xb4\x85@\xb2f\xaa\x0d\xdc\xf7\xa9w-\xb5\x81\
+ze5\x9b\xc6R\xe9\xef\xbb\xf9h<\x9a\x8fz\xcb\
+YRH\x11\x97\xbd\x9f\x8e/^\xfe\xef\x9f\xfe\x5cR\
+5}~\xfe\xf2\xff\xe47&\xf5\xcf\xbb\x15\x86\xd1\x9b\
+\xc9mF\xab\x96Y\xf0\x8d\xcf_\x16\x8f1\x9a\xff\xe9\
+\xf2}\xb6\x87\xf2\xae\xac\x7f\xcd\xaf\xac\xca6\xbc\xcch\
+\x99\x0b \x99\xd0T;\xed>\xbd\x0bk\xdb\xeb\xc3\xf2\
+\xbf\xf7\x97\xa5\xd0\xd9\x7f\xcd\xf3\xe9!\x7f)\x8d\xac?\
+\xadx\xb6\xe8h&\xd4d/GN,\x05\xad\xa9\xb7\
+\xf7\xc60\xbf\xb7\xa9\xbbzu\xfa\xf3e~}\xd5\xd5\
+\xe4\x047\x95sr{\xf3~2\xee\x16&\xb4\xcc\x1f\
+/\xd2\x05\xba\xfe\xa8\xa1\x1d\x07\x0d\x95\xc3\x85\xfaO\xa3\
+\x05\xa5(\xb1{!\xf6G\x0cY\x0c\x84n2@\x0a\
+\xa8\xc2\xac\xf9\x04\x18\x09\x22\x98x\xa0\x18\x90\xcd\xbc\x1c\
+J\xc3A\xd4\xb5\x90\x5c\x22\x08\x9d\xe4l\x0a\x9e\x1cX\
+\xcbu\xe5\x19\xa8\xd4-_\xc2+~\x0d\xc8\x9a\xd8\xfb\
+J5\xb8\x10ai\xc8\xea\xc3z\x94[G\x09N\x12\
+1\xd7b\x1e\x80S\xb4L\xf4\xc0\x22v\xe2\x5c\xaf\x9d\
+\x9c\xe9S\x22\xe6\xc2\xf9\xc23k\xf9pN\x22j\x9f\
+\xce\xd5\x94\x12\xd1\x09\x96\x5c*~\x82\x04\xe5\xd22\xa7\
+\x06\x10\x04\xc1B\x1bx\xae\xa0^p)\xd9s1\x86\
+\xc4\x9ed\xad\xb2\x98BJ)2\xd7\x06\x19jGV\
+\xdf(!\xd5O\xae\xc6\xb9\x82\x0a\xee\x1aOL\xebI\
++>H\x81Y\x0d\xc4\xb7A_O\xb9\xd9~\xc6\xcd\
+\xc6Q\xec\x9b\xa7\x10\xd6\xe4\xf4\xf6\xaa{\xd9\xfd\xd2e\
+\xa5\x18\x7f\xfe\xd4\x1b\x0fJ\x18\xcd\xd3\x13\x9ey\xd3\x1e\
+ns\x1c\x05\x8e\x12\xe9w\x05\xfe\x86\x14x\xa9\x02\x10\
+HX\x1d\x95\x7f\xf8\xec\xb9M\x12\xf9\x1b\xd7\xe9\xfdv\
+\x1b\x01\xbfDF\xbc\xf9x_\xba7\xb7\xf3\xf9\x86p\
+U\x9e\x05\xb5m)\xd3?u\xac\x7f\xeb\xc7\x8b{\x16\
+\xa5\xa1\xe8s\x00%)\xda,\x81\x89\x12R\xa1!\x99\
+yV\x06\x0e\xd1\x15R*4\x8e\x89\x5c\x8b6\x14M\
+(F!\xa1jE\x0aJ\xb2P+\x0d\xacn\xab\xd4\
+B\xbbb\x00Ge?q\x08\xa0\x08\x96+\x84\xe0\xac\
+\xaam7~\xdd\xf4\x04d\xd4\x0e\xc1\x06\x87`j%\
++F\xaa\x82HE\xdd_\xd7dDT/f\x82\xc2\
+\xa2x\x82\xb5O\xae\x99E\x03\x92l\x10\xaa\xa1\xa6\xe0\
+qA\x82\x14\xad!V\x13\x5c$S\xf4\xd6\x04\x89@\
+\xb51AY\x94*\x06\xd8tp\x97-)2E\xa2\
+\x1f>\xabfB\xf8\x0d\x98\xd2.\xbdd^[0\xcf\
+?\xf3\x83\xd8\xb0|!y\x19\x98\x17\x0f4\xc8\xcd\xd7\
+L|CH\xfd\x1e\xfb\xbe\x81\xd8\xd7{ f;=\
+`\xb6\xb3\xdb\x9d\xc5t\x7f\xf8\xa9u\xd4\xb8\xc5Q\xc3\
+\xa6\xa3\xd6\xb4r\xd4x\xcfQC\xe3\xa8a\xe1\xa8a\
+\xcdQ\x9bn8\xea\xa6\x1b;\x9c\x96\x01#&\xb7\xcf\
+{\xad\x98\xe2o88n:!\x08\x1eQ\x19i\xe9\
+\x8c\xd0*z\xd5%\x993\xca\x8b\x9d\xc3\xbfk\xd87\
+[\x1bR\x09\x15\x84\xd1\xeb\xcbg\xa0(\xab$k.\
+\x1b\x16\xd4\x18\x10\x1dd\x80\xe2\x81]%\xbe\xd81<\
+\x9c@\xa3\xca\x8e\xa0\x12\xe1;\x08*\xdf\xfe\x94\xa0\x9d\
+\xe4\x90\xf7\xc4\xad/\x80N\xf0Y\x86\xbb\x05C\xaf\x82\
+o\x1f\x1a7\x01\xf1\x90CV\x9fd\xcc\xf7\xce\x0f \
+\xb8Br\x95\xb5\xb7\x81q2\xd3\x17\xed\x0d\xb2\xc8F\
+\x07\x9d\xe7\xdc.Q7\xdc\xbeq!7z\xe6\x18D\
+\x80y@\x18X9q\x1d[\x0b\x02\xc26\xb0\x18\x1c\
+4I\xaaz\xa2\x011i\xa6J`T\x01\xac\xb4\xc8\
+(\x03\xd3\xe0\xe4\x18\xad\x16\xe6z\x86\xb2y\xf5\xc9\x8a\
+\xa5\xca\xe2\xad)\x050W-\x95\xd5i6\x05U\xf0\
+\x9c\xf0\x9apAO5\xd5\xb3\xfe\x5c\xd3)\x05\xa2\x84\
+F9M\xc4\x1bi\xa1`\x06\x1e\x17\xfc\x1bi\x8a!\
+Q\xa2H\xb9\xe9\x9a\x86`\xd1\xa3\x94\xd688\x1b\xc6\
+\x12nH\x98<n\x82r\xd89\xbf\x80_\xb6\x96\xd2\
+\xaf\xbdP<{\xbb\xc3\xcaj\xe1\xed\x16\xb5\xcd\x1b\x13\
+\x91\xbe\xb8'P\x003\x83d\xcf\xe8a\xd1\xed\xc5!\
+fI \x81\xaa\x16\x0f1\xe8g\x8cS\xd3Q\x8d\x13\
+\xef\x1b'\x99o\x1a'!\x07\xdc0NB\x0a\xd6\x1a\
+g\xa5\xa5\xc68ka\xd80N2k\x8c\x93\x1c{\
+\xe3$\x97\xde8K\xaa1\xce\x9cn\x8c1\x12n\xa4\
+{c\xac\xfc\xf7\xd3\x8dq\x96to\x9c\xe4\xb8a\x9c\
+d\xbe\xdb8[\xcd\xddk\x88\xbbu\xd9\x9fU\x97[\
+#\xfd\xfc*\xb2\x11o\xfb$\x09\x98\x1f\x1e\x17!`\
+\xd5\x12\x16X~\xbe\xe6!\xe4\xb0\xfe\x89\xbao\xb5\xa9\
+ANP\x03\xca\xea\xc6\x90x2\x88\x95\xe8\xc5(N\
+\x8c\x83$2\xd4B\xe3\xa8,\x5c\x96J\xb5\x04Z\x80\
+\xf8i\xba\x94rMJ\x01k=\x1e\x10\x19S\xb2\x13\
+\xcd\x9c\x08\x964\xd3\x22\xb3\xd1\x89r\xb16\xc3\x94\x8b\
+0\x94ZT\x82\xf9b\xd2\x05\xa1^\xa9.HY\xad\
+3\xbf1\xc5\xba\xf2\x01\x8e,~\xc2\x10b\x04F^\
+\xacwN$\xf3\xcb2Q\x97\xac\x0a\x96\xe2\x8a\x94<\
+$6\xc0\xdc\xa1\x9c%\x80E\x1c\xd4\xdc\xbd~j\x97\
+\x93\xccu\x91\xb4\xfa\xc6\xb4\x84\xa6\xa6,\x90\x1a;\x95\
+\xfa\x05H\xa5\xe2\x04)\xa9\xd1=,\x7f=\xd9\xf2K\
+\x0d\x95Y\xd9\x97\xa9\xa2\xe9w\xac\x8a\x83\x02\x1f97\
+\xaaX\x89\xc2\xb8\xae\x8a\x85\xc6\xe0\xda\xab\xe2\xa0\xa8b\
+\x11\xb5\xaa\x22\xa7\xfc\xb1\x81R\x80dT\x15R\xd1S\
+\xac\xa4dN\xa2\x99\xc4\x80\x04\x99\x14\x83y\x82JR\
+\xe2Z\x90\x83D\xb6Z\xd08\xa2T\x12xD\xc6\x5c\
+=\x00\x8b\xd5\x82\x92H\x89\xfa\x16\xab>\x15\xef\xdd\xf7\
+\xcb\x17\xfdz\xbd\xde}[u\xbf\x17\xd3VbV(\
+l\x09E\xafmUHC7\xaa+x\x0f\x14\x93z\
+M\x10T\xf6\xe5\x22?-\x0b\xd7\x94-\x18\xd7k\xd2\
+EM\x0d\xf0\xf5\x1d\x16\xa5\x08\xc7\x90\x8c0\xa5O\xf5\
+1\xf7ID\xddH\xb7\xec}r\xdb\xea\x06X\xf7\xaf\
+\xa0\xfb\x9b(_n1\xf8\xbdZ\x8c\x07P \xb3:\
+z\xbd\xe3\x93\xa8\x5c\x07\xd8\xc0\xc0\xa8\xd0R23\xaf\
+j'\x86QW4+ZT\xfd\xdf\x1a\x89\x177\xc2\
+\x0a1-\x89\xbd+\xec\x89\xb5Bfd+4s\x82\
+j\x991&\xe7\xb8\xd1\xbf\xaa\x5c\x0b\xf5\xa9z\xc3\xb5\
+\x1a/6\x19\xb1\xd6\x9c,$fK<P\x0b\xae\xee\
+\x9a\xbbjAA\x0cy`\xb8p\xd6\x22\xc1\xb8t`\
+I*ec\x0a\x1e9!\xf5D\xe2\xcc\xe71\xe6&\
+R\x88\xa2\x1e\x8b\xd7\x0fHT\xca\xaa\x06Z\x86\x1d\x0c\
+\x8e\xb5\xab\xeb\x81G\x82\x19\x01\xf8`-\xf0`\x88\xe4\
+\x98p\xb0\x0c<\xb6\xecJ\x1f|R\xdf\xe1>\xf8T\
+\xa9\xd6\x83\x8f,\xa4oBP\xc1f\xab\xd1\x08\xef7\
+\x9aj5\xb3\x95\xc9\xd4i\xcf\x8f\xf9\x91\x8a\xfc\xf5\xff\
+\x01_\x1a\x15U\xdc\x8d\x00\x00\
+\x00\x00\x05:\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
+\x00\x00\x00\x19tEXtSoftware\
+\x00Adobe ImageRead\
+yq\xc9e<\x00\x00\x04\xccIDATX\xc3\xb5\
+\x97]L[e\x1c\xc6wo\xbc\xd9\xe5\x12I q\
+\xd7&\xe3N\x13\xb8p\xd1\x85D\xbdP\xe3\x10\x18\xe5\
++.&J\x04'\x86\xaa\x8b\x99\xe0\xd0\xa2l\x19\x86\
+9\x17\xdc\x1a\x16\x98\x80@l\xa6C\xca +\x83\x1e\
+(\xcc\xda\xd1\x96\xd2\xd2J{\xfa\x01\xa5\xd0\xef\x16\x1e\
+\xdf\xff\xdb\x1d\xc7\xcc\x04*\x87\x93<9o!\x9c\xe7\
+\xf7<\xefG\x0f\x87\x00\x1c\xcaF\xcf\xbd\xfa\xe9\xbbL\
+Z&a\x0fj`\xca\xd9\xe9y\xd9\x9a?]P\xf2\
+\xa5\xc1\xe9\x8f\xa7W\xc3@0\x02\x84\xa2\x19\xad\xc72\
+\x8a'\x81X\x22s\xbfyk\xdaK\x10r\x02\x1c{\
+\xe7\xac\xda\x1c\xd8\xc8\x98\x12@\x84\x99\x85\xe3\x19\x911\
+)\x1aKa%\x94D8\x9aBs\x87\xc6\xbe\x13\xc4\
+\xff\x02\x90\x12\x93y$\xf1\xc8X\x92\xcf\x1f\x84]\x8c\
+\xc2\xe5\x09\x22\x12K\xa3\xf4\xc3\xefM4uY\x01\xb0\
+\xeb\xd86\xd5\x90\x9e:\xfc\xcc\xb9\xe7_.\x11?V\
+\x9eEEU\x0d*\x99\xde\xaf\xad\xc3\x9d\xb1\x89\xc7\x00\
+\xac\xb6%\xfc\xb9\xe8\x87k\x15X\xf6\x04\x10\x08\xc6\xd2\
+\xaf\x9c\xbep\x9fA\x1c\xd9\x15\x80]\x87\x99\x1a\x8a\x8a\
+\x8a\xcc\x92Z[[\xdd\xa4\xafU\xad\xfe\xafT\xdf\xa6\
+\x06\x06\x06195\x85\xd9\xb99\xe8&&PPP\
+\x80!\xcdo|\xdeI\xa6\xf9\x05\xcc\x98\x5c\x1c\xc0\xe1\
+OA\xf4\x85\xf0C\xaf\xce\xcd\x00j\xf6\x02PCf\
+\xd8\xe5\x8a\xc7\xe3\xf0z\xbdH\xa7\xd3\x98\x9c\x9cDe\
+e5fg\x8d\xbc\x81\x07f\x1bt\xd3\x16\x0e@2\
+-x\xf0\xdd\x8dQ\x8f\xac\x00\xe1p\x18F\xa3\x91\x8f\
+S\xa9\x14~\xea\xedE\xe3'\x9fa\x86A8\x96\xdc\
+Pwu\xe3LC#\xce5\x9d\xc7\xed\x91q\x5c\xbc\
+>,/\xc0\xc6\xc6\x06\xf4z\xfdc@}}\xfdP\
+2\x88\xd0F\x1cf\x9b\x0b\x82\xc1\x88\xa9\x19\x13\xac\x0e\
+\x11\x97\xbadn\x80\x00\xa6\xd8:\xd8~E\x22\x11\x94\
++*0\xae\x13@\xe7\x04mW\xda\xaa4\xbe|S\
+\xe65@f:\x9d\x0e\xc3\xc3\xc3\xe8e\xf5\xf7\xf7\xf7\
+C\xab\xd5\xa2\xaa\xba\x06cw\xf5\x90\x0e*w\x90\xed\
+\x04\xb6\x0e\xda\xbbe\x06\xa0y\xb7\xdb\xed\x18\x1a\x1aB\
+gg'zzz8PIi\x19ni\xf5\x10\xd7\
+\x00o\x08\xb0\xf9\x00g\x00\xb8\xd0%3\xc0\xd6\xd6\x16\
+\xdf\x09\x81@\x00\xa2(\xc2\xef\xf7cmm\x0d\xa7\x14\
+\x95\xd0\xfc\xae\xe7\xa9\xc9|\xc1\x0b\x98=@\x9b\xdc\x00\
+\xdbA677\xf9v\xa4V\x14\x15\xd5\xe8\xfbU\xe0\
+\xa9\x1d\x81G\x00\xe7;\x0f\x00\x80\xcc%\x80$3O\
+$\x12(+\xaf\xe2\x00\x7f\xb8\x00\x8b\x98\x01\xa06Z\
+\xd5\x070\x05\xff\x98'\x93<=MI\xc9\xa9J\x0e\
+\xa0\xb7\xb3\x03\x89=\xc5\xf8\x170\xb1\x00|q\xf5\x00\
+\x00\xa4\xea\xc9\x98\x14\x8b\xc5P\xa6\xa8\x82zH\xc0\x98\
+\x19\xb8k\x05\xe6\x9c\x99\xfb\xe7Wd\x04\x90\xd2Sj\
+\x02\x88F\xa3\xdc<\x14\x0a\xa1\xb8\xb4\x02\xd7\x06\x05\xdc\
+f\x87\xe4\xa0\x01\x1cd\xc4\x04(;d\x06H=\x9c\
+s\x12\x99\xd3\xb9@ \xc5eU\xb8\xd8-\xa0\x7f:\
+c\xae}\x90i\xe0\xa3v\x99\x00\xfe]=\xa5&\xad\
+\xae\xaer\x88\xb7J*p\xb9W\xc0=\x1b\xb8~\x9e\
+\x01\xee\xcc\x03g.\xed\x13@\xaa\x9dD\x8b\x8e\x92\xd3\
+qL\xdf\x01+++X__\xe7\x10'Y\x03\xdf\
+t\x09PO\x00\xbf\xcce\x1a\xb82\x064\xec\xa7\x01\
+\xc9X\xda\xebdNi)9\x1dD\x04@\xf5\xd3\xcf\
+\xde|[\x81\x96\xeb\x02O~u\x1c\xb8q\x0f\xf8q\
+,\x9e~\xbdNm\xa67\xaa\xac\x00\x9ed,m7\
+2%\x00\xd1#\xf2\xe4\x12\xcc\x1b'\x15h\xef\x11\xa0\
+\xbcf[\x7fO5\xe2<q\x9a\xbf\x8ei\xf7\xfcJ\
+&\x01\x90\xa9$i\xb5SB2\x0f\x06\x83p\xb9\x5c\
+\xdc\x90^J\xe8\xb3\xc7\xe3\x81\xdb\xed\xc6\xf1\x13\xaf%\
+\x9f}\xa1\x9cL;\x98\x8a\x99\x8e>\xc9xG\x00\x95\
+J\xc5\x01\xa4\x15.\xcd7\x19RR:\xf7)\xb5\xc3\
+\xe1\xe0\x22\xe3\xc5\xc5E\x0e\xf5\xe2\xf1\x97\x5c\xf4\x1e\xb9\
+\x93\xe9\xae\x00---n\xe9`\xa1\xd4\xd2\x97\x0d\x8d\
+\x97\x97\x97\xe1\xf3\xf9`\xb3\xd9\xf8}ii\x89C\x10\
+\x00\x8d\x0b\x0b\x0b\xcd\xb2\x00\xd0\xa2\x92R\x93\x11\x8d\xe9\
+N\xdfxT;5`\xb5Zy\xf5\xd4\x0a\xfd\xce`\
+0$\xf2\xf2\xf2\xee\xb3g\x1c\xd9\x17@SS\x93[\
+\x9agJO\x22\x13\xaa\x9a\xc6\x16\x8b\x997@\x9fG\
+GG#mmm\xde\xfc\xfc|\x13\xfb\xdbA\xa6\xb2\
+\xbd\x9a\xff'@ss3\x9f\x02JG\x10T?U\
+???\xcf\xeb\xd6h4\x91\xba\xba:\xe7\xc3\xb4]\
+L\x1f0\x1d\xcd\xc6xG\x00\xa5R\xe9v:\x9d\xbc\
+bJJo>\x94\xb4\xbe\xbe\xde\x99\x93\x93#\x99\x16\
+gSuV\x00\x8d\x8d\x8dn\x8b\xc5\x82\x81\x81\x81H\
+mm\xad377WV\xd3\xdd\x00\xf8\x7fFL\xc2\
+A\x99n\xd7\xdfC9V\x18\x85p\xc8\x04\x00\x00\x00\
+\x00IEND\xaeB`\x82\
+\x00\x00\x04_\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x01\xc8\
+PLTE\xe1\xe1\xe1\xda\xda\xda\xdc\xdc\xdc\xdb\xdb\xdb\
+\xf8\xf8\xf8\xff\xff\xff\xe7\xe8\xe8\xeb\xeb\xeb\xeb\xec\xec\xec\
+\xed\xed\xed\xee\xee\xee\xee\xee\xee\xef\xef\xef\xef\xef\xef\xf0\
+\xf0\xf0\xf0\xf0\xf1\xf1\xf1\xdd\xdd\xdd\xf4\xf4\xf4\xd7\xd7\xd7\
+\xd8\xd8\xd8\xd9\xd9\xd9\xdb\xda\xdb\xda\xdb\xdb\xcc\xcc\xcc\xe2\
+\xe2\xe2\xe8\xe8\xe8\xec\xec\xec\xf1\xf2\xf2\xd6\xd7\xd7\xea\xeb\
+\xeb\xe5\xe7\xe5\xd0\xdd\xcf\xe6\xe9\xe7\xed\xed\xed\xea\xea\xea\
+\xf3\xf3\xf3\xe9\xea\xea\xdd\xdd\xde\xde\xe6\xdf\x9e\xc5\x97\x82\
+\xb7{\xdf\xe8\xdf\xf2\xf3\xf3\xf3\xf4\xf4\xf4\xf5\xf5\xf5\xf5\
+\xf5\xf5\xf6\xf6\xed\xec\xed\xb8\xc9\xb7\x8c\xbc\x80\xa7\xd0\x87\
+\x8b\xbd}\xdd\xe7\xde\xf4\xf4\xf5\xf6\xf6\xf6\xf6\xf7\xf7\xf7\
+\xf7\xf7\xf5\xf5\xf6\xf0\xf2\xf1\xaf\xcd\xad~\xb4e\xa6\xd0\
+t\xb6\xd9\x81\x81\xb5r\xde\xe8\xdf\xf6\xf6\xf7\xf8\xf9\xf9\
+\xf9\xf9\xf9\xf1\xf1\xf2\xe5\xeb\xe6\x92\xbb\x85|\xb4I\x9d\
+\xcbR\xa3\xd0U\x9e\xcbSs\xa9\x5c\xde\xe7\xe1\xf8\xf8\
+\xf9\xfa\xfa\xfa\xfb\xfb\xfb\xf3\xf2\xf3\xdc\xe6\xdeu\xa7_\
+r\xad\x1a\x90\xc9\x19\x95\xcd\x1a\x8a\xc5\x13d\x9e;\xde\
+\xe7\xe2\xfc\xfc\xfc\xf2\xf2\xf2\xfa\xf9\xfa\xe1\xe9\xe3\x87\xad\
+uu\xae\x16\xa6\xdf\x0a\xa0\xd9\x0ag\x9d4\xde\xe6\xe2\
+\xfc\xfb\xfc\xfd\xfd\xfd\xde\xde\xde\xf9\xfa\xfa\xfd\xfc\xfd\xeb\
+\xed\xed\x92\xab\x8fu\xa6.\x95\xcc\x08i\x9b0\xdd\xe5\
+\xe2\xfe\xfe\xfe\xf2\xf1\xf2\xe1\xe0\xe2\xc5\xd2\xc9j\x92K\
+N|1\xdd\xe5\xe1\xe2\xe7\xe4\xa8\xbb\xac\xef\xf2\xf0\xde\
+\xdf\xdf\xf9\xf9\xf8\xf0\xf1\xf1\xdc\xdd\xdd\xdf\xdf\xdf\xd0\xd0\
+\xd1\xd2\xd2\xd2\xd3\xd5\xd6\xe1\xe2\xe3\xd4\xd4\xd5\xc5\xc5\xc6\
+\xcc\xcd\xcd\xc8\xc9\xc9\xe0\xe1\xe1\xbc\xbc\xbd\xe3\xe4\xe3\xd9\
+\xda\xd9\xdf\xe0\xdf\xe5\xe5\xe5\xe6\xe6\xe6\xbc\xbd\xbd\xd5\xd5\
+\xd4\xd1\xd3\xd4\xc5\xc7\xc7\xe5\xe5\xe4\xd3\xd3\xd3\xe0\xe0\xe0\
+\xdf\xe0\xe0\xd9\xda\xdb\xca\xce\xd0\xe2\xe3\xe4&\x9b[?\
+\x00\x00\x00\x01bKGD\x05\xf8o\xe9\xc7\x00\x00\x00\
+\x09pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0k\
+B\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\x14\
+2\x1f\xc9N\xa7\x00\x00\x01[IDAT\x18\xd3M\
+\xd0US\xc3@\x18\x85\xe1\xcd6\xa1JH\x03\x05J\
+\xd1\x12\x8a\x14\x82S\x82KpIq\x08\x0e](\x1a\
+\xdc\x83\xbb;\x7f\x97\xdd\x0c\x17\xbc\x97\xcf\xec|;s\
+\x00\xa0\xe0\xbfL4\x83\x03T\x84\xd9b\xb5\xd9\x1d\x91\
+,\x1b\x15\xc59y\x03\xa1\xd9\xc6Z\xa2c\x5c\xb1\x14\
+\x15\x17g\x8a\xa7\xdcn\x90\x00\xa0\x87M\x8cHJN\
+IM\xb3x\xac^\x8f\xd7nO\xa7\x00\xb4qB\x86\
+/3+;\xc7\xef\xcf\xe5\xf3D1\x9f\x83\x00:\x04\
+\xb1\xa0\xb0\xa8\xb8\xa4\xb4\x8c\x17\x03\xe5\x92$\x09\x18\xd9\
+\x8a\xca\xaa\xea\x9a\xda\xba\xfa\x86\x80D7\xca\xb2\xcc;\
+\x01ljnimk\xef\xe8\xec\xea\xa6e\x05\x17\x14\
+1\xf6\xf4\xf6\xf5\x0f\x0c\x0e\x0d\x8f\x10\xc0\xa9\x01\x8c\xa3\
+c\xe3\x13\x93S\xd33\xb3!\x0c8$\xcd\x01(\xcc\
+\x87\x17\x16\x97\x96WV\xc3D\x10\xd2h\x8c\xbc\xa2\xae\
+\xadolnm#L\x9a\xa612\xc1\xa0\xca\x81\xd0\
+\xce\xee\x1e!\x06k\xe3\xbe\x81\xa3@\x09i*y\x86\
+\x0ex\xe1\xf0\x08@\x91 \xf9\x03c\x90\xd3\x8fON\
+\xcf\x08\x22\x03\xb1!\xee\xfc\xe2\xf2\xca\xa7bT\x91\xf0\
+\x87\xf2\xf5\xcd\xed\xdd=b\x80\x13<<\x9a\x5c\xaa\x81\
+\xe2\xc9\xd33\xd0\xf0\x9e\x8a$\xd1\x1e\x9d\x5cd\x18\xfe\
+\xe5\xf5M##\x93\xa5\xc5w]\xd7?>>\xbf\xbe\
+\x7f\x881\xbf\xe0\xd3^\x99\xad\x16c\x0b\x00\x00\x00%\
+tEXtdate:create\x00\
+2023-03-08T17:27\
+:26+00:00\x9e\x98\xa5\x85\x00\x00\x00\
+%tEXtdate:modify\
+\x002023-03-08T17:2\
+7:26+00:00\xef\xc5\x1d9\x00\x00\
+\x00(tEXtdate:times\
+tamp\x002023-03-09T\
+06:20:50+00:00\xdd\xe8\
+\xb2\xde\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x08\xab\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x07tIME\x07\xe7\x03\x09\x07\x084\x11\x1f\xdc\
+\xf8\x00\x00\x07fIDATX\xc3\xbd\x98\xcb\x8f\x14\
+\xc7\x1d\xc7?]\xd5=\xd3\xc3\xee\xcc\x02\xfb\xf0.O\
+\x11;<\x9c\x04\x93\x98\x87,[\xa0$(\x87X\x16\
+9p\xc8\xe3\x1a)\x87\xdcsD\x11\xffD\xfe\x03K\
+Q\xe2(H\x91\xa5\x90\xd8rp\xf0\x22\xe2\xc4ka\
+X\x83\xd8\xdd\xc0\xbe`\x96\x9e}\xf5tOwuU\
+\xe5\xd0\xd3\xc3B\xd8e\x0d\x83K\xaa\xe9\xae\x9e\xee\xea\
+\x8f\xbe\xbfWU;<G;r\xe6\xdc\xaf\x81S\xc0\
+.\xa0\xb4\xc9\xc7\x16\x80\x7f\x00\xef\x02\xf5\xb1\x0b\xe7[\
+\x1b\xdd\xec>#\x98\x00\xfcjO\xe5\xed_\xfd\xfcG\
+\x87\xf6\xec\x18\xdc\xe6J!\x1c\x07\x1c'\xbf\xc7\xe9\xfc\
+\x80'\xc0\xda\xfc\xbf0j\xed\x1e\x9f\x98\x1d\xfa\xdd\xbb\
+\x1f\xd4\x81\xf7\x81{]\x07l\xab5\xf4\xd2@\xdf\x9e\
+\x97\xf7\x0e\x0f\xbc\xb2w\xb8\xc7\x95\xc2\x01p%`\xe9\
+P\x0a@\x0a\xb0\xc6b\xac\xa5\x19\xa7[\xfaz+=\
+c7\xee\xfcxz\xbe\x11q\xe6\xdc'c\x17\xce\xdf\
+]\xefE\xe2\x19\x01=\xa0\x7f`{\xcd\xab\x94K\xd2\
+\x95\xc2\x11\x0e\xfc_'?Z\x0bZg$i\x86#\
+\x84\xdc\xbb\xa3\xbf\xe7\xad\xa3\x07\xde\x1c\x1e\xec{\xa7\xd6\
+[9q\xe4\xcc\xb9\x81n+\xd8iR\xe4\xddiC\
+\xc1\xc3\xe3\xda\x96\xa4\x09-\x05\xca8H\xab\xf8\xc9\xe9\
+\xd7\x87\xa7\xe7\x1bo\xd6\x83\x95l%\x8c\x15\xf0\xe7'\
+\xcd\xef\xb0q\xdb\x01\x8c\xac\x19\xef\x07\xaa\xd2\xab\xf8~\
+u`\xe8\xc8\xf1S\xbf<rp\xd76\x89*\x85\xe1\
+*\x0e\xd0\xdb[\xe5\xe4\xc9S\xbcv\xe4\xbb\xec\xdc\xb9\
+\xab\xf3\xe0\xc2B\x9d(\xd58\xee\x16\xb6\xf4\xf6!\x92\
+\x00\xaf\xe4\x9b\x8b\x97\xaf\xd7\x7f\xff\xfe\x95\x0f\xa6\xe7\x83\
+\xdf\x8c]8?\xb7Y\x05k\xc0\x1b\x87\x0f\x1f>9\
+<<\xfc\xad\xe2\xe2\xa1C\x87\xb6V\xab\xd5\x92\xb5H\
+m\xf1\x91~m\xdf\xee\x11w\xeb\xd6\x1a\xbe_\xc6u\
+]\x94\xca\xf8\xe7\xc7\x1f3;;\xc3\xa9\xef\xff\x80\x03\
+\xfb\x0f\x00\xa0\xb5&S\x0a\x87\x0c\x80L\xf6 \x8cv\
+F\x06\xfb*G\xbf\xf3\x8d\x1d\xd3\xf3\xc1\x1b\xc0{\x9b\
+\x05<|\xf6\xec\xd9\xb7O\x9c8\xf1\xd6\xbe}\xfb\xf6\
+\x14\x17\x87\x86\x86\xbcr\xb9,\x00\xacEhc\xcb\xb5\
+Z\xaf\xa8T*\xb8R\xa2\xb5\xc6\xf5<\x16\xea\xf7\x09\
+\x82E\xc6>\xfb\x0f\xfd\xdb\xb6308\x08X\xb2L\
+\x03*7\x9d,\x91\xb4V\x1d\xc7qdO\xa5\xec\x03\
+\xfdO\x02Y\x0f\xf0\xd5\x83\x07\x0f\x1e=y\xf2\xe47\
+\x8f\x1f?\xde\xfb4?\xcc\xb2\x8c8\x8eYYYa\
+dd\x84\xd3\xa7O\xf3\xc9\xe8(w\xefL3~\xe3\
+:\xdf;z\x0ckA\xa5\x09\xcd\x95\x90V+FJ\
+\x17\x89&\x8a\x22\xb4\xd6\xeb\xba\xdas\x07I\xae\xa6%\
+MS\x96\x96\x96\xd8\xb9s'\xbbw\xef\xe6\xb5f\x13\
+\xa52>\xba\xf4\x11\xfd\x83\x83\xd4\xaa5\xe2\xe627\
+\xc7o011A\xadV\xe3\xd0\xab\xdfF9=h\
+\xad\xd7\x9d\xbbk\x80Zk\xe28\x06@J\xc9\xfe\xfd\
+\xfb\xe9\xeb\xeb\xa3V\xad\xf2\xa7\xf7\xfe\xc0O\x7f\xf6\x0b\
+^~e?\x03C/\xf1\xfa\xd1\xe3\x18+\xa8\xd6j\
+L\xdf[\xe6\xbf\xf5\xf5\x8bIW\x00\xd7\x82v&v\
+]\xfa\xfb\xfb9v\xec\x18\x7f\xbdx\x91;w\xee\xe2\
+o\xa9\xb1\xbd\x7f\x98\xdaV\x8dp\x1c\x84\x94<X\xc9\
+\x90R\xda\xf5\xe6\xec\x0a\xa0\xd3\xaeo\xc6\x18\xa6\xa6\xa6\
+H\xd3\x14k-\x8e\xe3 \x84@)E3\x8a\xc8\xb4\
+\xa6T\xf6)\x01\xda\xe4\x09\x1c\xc7e\xa3z\xd15@\
+)%\xae\xebr\xfb\xf6m\xc20\xc4\x18C\xb9\x5c\xa6\
+V\xab\xb5\xe1-\xc6<\xac\xc9I\x9em\xc8\x0ch\xbb\
+\xfe\xdc\xcfZ\xea\x1e\x9dD\x08|\xdf\xa7\xbf\xbf\x9f$\
+I\x88\xe3\x98$I0\xc6\xe0y\x1ei\x9a\x92d\x96\
+T\x83j\xf7$\xcbU,\xfa\x0bUP\x08A\xa5R\
+add\x84j\xb5\x8a\xd6\xbac^\xd7u\x91\xae\x87\
+\xb5\x0e\xc6\xe4p\xa9\xce\x95L\xb2|\xbcQ\xebZ\x90\
+8\x8e\x83\xe7y\xd4j5\x8cyT\x12\xe1\x082\xe3\
+\xa0\xda`B@\x91Y\xb4\x814\xfb\x9a\x00\x8bn\xad\
+}\xac\x83\xb1\xa0\xb4C\x92\xe5\x80\x00n\xb1\xd0\xd8\xc8\
+:\xdd\x02\x84G\xd3\x8cm\x8f\xad\xcd\xd7\x81\x90\x07D\
+K\xe5Gc\xdbQ\x0c\x1b\x12vM\xc1\x02\xceZ\xfb\
+\x88\x89\xd7\x02j\x03\xca\x80\xdb\x0e\x8c(\x85\xe5\xf8k\
+2q\x01S\x00\xae\x05\x16\x227m\x94B)\x818\
+\x85\xder\xae\xe2\x0b\x8f\xe2\xb5 \x8f\x9f\x17%P\xeb\
+<\x07j\x03\xad47\xb1\xc3\xc3\x94\xb3\x11`W|\
+p=\xe5\x8ajb\x81D\xe7\xfe\xa7t\x1e\x18Ez\
+\xb1\xe4\xc0/\x14p-P\x96e\x18c:\xb0B\x08\
+\xc0!\xd3y\xc5\x90\x02\xb6\x94\xf2\x5cX\xec\x00\xcd\x06\
+\x95\xe4\xb9L\xbc\xd6\xac\xc58M\xd3\xce9\x80\xe7y\
+\x18cpE\xeew}[\xf2{\x9ba\xbew)\xca\
+_W\x01\xd7B\x15J\x19cPJ!\xa5D)\xd5\
+\xc9\x89I\x92\xe0\x08AK\xc1\xfd\x15\x88=\xa8\x96\xa1\
+\xaf\x02sK\xd0h>y\x93\xf5L\x80\x8f\xab\xb5\xd6\
+\xf7\xb4\xd6XkQJa\xad\xc5u]\x5c\xd7E\x08\
+\x811\x86\xccX\x84\x03\xd2\x81\xc5(\xf7G\xa33\x13\
+\x85+i}\xe1\xc1\x22p\xabk\x80\x8fG\xac\xd6\x9a\
+,ko\x86\xb2\x0c)eG]c\x0c\xd6X\xa4\x03\
+q\x1c\xeb\xb8\xfe@\x85\xcdf\xda\x5c]N\xe38\x8a\
+\x1e,\xd4\xa7\x1a\x8d\xe0_\xcf\x0c\xf8\xb8jk_\x5c\
+\xa8\xa3\x94\x22\xcb2\x5c\xd7\xc5\x18\x83lo\xa0\x8a\xae\
+Tf\x97\x17\x83\xa4\xc9\xf4r\xac\xfd \x8d\x16\x17\xee\
+\xdc\xbd[_l\x04\x0f\x92\xa4u\x0b\xf8\xf4I[\xce\
+\xa7\x02>\xa9*\x14\x8b\xd3b\x1f\x91\xa6)I\x92t\
+\x14,|\xafP\xd5ZK\x18\xaef\x7f\xff\xf0\xc3{\
+\x99\xfb\xd9\xcdR\xcf\xb6\xcf\x81\xcf\x81O\x81\x99\xb1\x0b\
+\xe7\xa3\x8d\x18\xd6\x05|\xdc\xc7\x0a\xc5rE\x14J)\
+<\xcf\xeb('\x84 \x0c\xc3\x8e\x99\x0b\xf5\x5c\xd7\xc5\
+f\xf1}u\xff\xd6o\xc7\xc7o\xfc\x0d\x98\xe3+\xb4\
+u\x01\x0b\xa8\x22J\xad\xb5DQ\x841\x06\xc7q(\
+\x97\xcb4\x9bM\x84\x10\x1d \xdf\xf7;j>\xe2\xa3\
+\x99J\xb4\xde\xa8^<\xa3\x82k!\xb3,#\xcb\xb2\
+\xceBTk\x8d\x94\xb2\x93\x8c\x8b\x08\x96Rv\xae+\
+\xa5l\x14Efii1M\xd3\xa4\x09$]\x07,\
+\xc0\x0aU\xa4\x94\x9d\xfc\xe6y^\x9e\xe7\x9c|U\x9d\
+$\x09\x80\xd1Z\xeb0\x0cu\x10\x04\xe9\xc2\xc2B\x14\
+\x04\xc1T\xab\xd5\xaa\x03q\xd7\x00\x0b\xb8b\x8f\xe1y\
+\xde#\xe0E\xde\x8b\xe3\xa8\x1d\xb9.\xbe\xefs\xeb\xd6\
+\xad\xd6\xc4\xc4D<::\x1a^\xbe|9\x18\x1f\x1f\
+\x9f\x05\xfe\x08\xdc\x06\xa2\xcdam\x02\xb0X\xc2\xfb\xbe\
+\xdf\x09\x8aR\xa9\x84R\x8a4M\x89\xa2\x08\xdf\xf7\x99\
+\x9e\x9eI\xae_\xbf\x1e^\xbdzu\xe5\xd2\xa5K\xe1\
+\xe4\xe4\xe4\x17\xc0M\xe0\xdf\xe4\xd1:\xfdU\xa16\x05\
+\xd8j\xb5\x08\xc3\x90\xe5\xe5\xe5\xb6\x19\x1d\x8c14\x9b\
+\xcdlnn.\xb9v\xedZstt4\x0c\x82`\
+.\x8a\xa2/\xe38\xfe\x22\x8e\xe3\x9b\xc0\xdd\xb6R\xab\
+@\xf8<pO5q\x92$\xac\xae\xae\xdaF\xa3\x91\
+\xcd\xcc\xcc\xc4\xf7\xee\xddK\x83 X\x0a\x82`~~\
+~\xfe\xf6\x95+W\xbel4\x1asq\x1c\xcf\x00\xb3\
+\xe4\xdf\x9bW\x9f\x17j3\x80\x0bKKKs\x93\x93\
+\x93\xc3q\x1c\xabz\xbd\xbez\xed\xda\xb5\xa9\xb1\xb1\xb1\
+\x85\xa9\xa9\xa9\xd9F\xa31\x09\xdc\x00\xc6\x80e\x8ao\
+j/\xa0\xad\xb7\x8e\xd8\x0e\xbc\x03\xfc\x10\xd8G\xeeG\
+\x7fi\x03Mw[\xa5\x8d\xda\xff\x00\xaa\xf0\xe8\xc2\xf9\
+\xe1sN\x00\x00\x00%tEXtdate:\
+create\x002023-03-0\
+9T07:07:05+00:00\
+\x86^qC\x00\x00\x00%tEXtdate\
+:modify\x002023-03-\
+09T07:07:05+00:0\
+0\xf7\x03\xc9\xff\x00\x00\x00(tEXtdat\
+e:timestamp\x002023\
+-03-09T07:08:52+\
+00:00\xdcZ\x83G\x00\x00\x00\x19tEX\
+tSoftware\x00Adobe \
+ImageReadyq\xc9e<\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x07S\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x06\x00\x00\x00\x8c\xfe\xb8m\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06\
+bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\
+\x00\x09pHYs\x00\x00\x00`\x00\x00\x00`\x00\xf0\
+kB\xcf\x00\x00\x00\x07tIME\x07\xe7\x03\x09\x06\
+\x12)\xc3\xf6 \xcd\x00\x00\x06\x1eIDATX\xc3\
+\xed\x98\x7flUg\x19\xc7?\xcf\xf3\x9eso\xdb{\
+KK\x91\x14j\x99\xb0\x91at\x85L\xcc\xdc\x92\xa9\
+Yf\xf6\x07\x84\xb9\xbf\x88#F\xe3\x8cN\x83\xc6D\
+\x13g\x8cQ4j\xfckJ\xc4-Y\xd0?dK\
+\x8c\x083\xcb\xe6\x88\x8e\xe8\x00\x8dc6\x94Z\x0b\x12\
+f\xa1\xb2\x8c\x1f\xa3\xf4\xd7\xed=\xe7=\xe7\xbc\xaf\x7f\
+\x9c\xd3R\x12\xe7nK)\xfb\xc3\xe7\xe6\xc9\xbd77\
+\xe7\xbd\x9f|\x9f\x1f\xef\xf3\xbe\xe2\xbd\xf7\xbc\x83Mo\
+6\xc0;\x0a\xd0y\xcf\x5c\xe3\x15,\x06X\xe6<G\
+\x07/b\xd3\x8c\xd5+Z)\x85\xca\xcae\x95\x86\x9e\
+\xbd\xe1\x0a\x8eN\xc6\xec\xdc\xdb\xcf\x0f\xf6\xfc\x8d\xf1(\
+\xe1\x8d+S\xfc\xf2w\x83\x8cN\xc4\x0d=\x7fC\x15\
+\x1c\xf8\xd7\x08;\xf7\x1e\xe7\xe2h\x9dOl~\x1f+\
+WwR\xab[\xce\x5c\x18c\xb2nio-\xdf\x1c\
+@\x9b:\x9e;<\xc4/^\x18d\xcd\xaa6\x1e\xdd\
+\xb6\x91\xd6%-L\xd4-\xb5\xa9\x88\xc8\xda\x86\xd7Z\
+p\xc07.O\xf1\xe4\xb3\x03\x1c=q\x9e\xfb\xef\xbe\
+\x85\x0d\xef_\x89\x13a\xa26\x85\x00qd\xc9\xb2\xf4\
+\xe6\x00\xfee\xe0<\xbb~\xd3\x8f\x17\xc7\xc3\x9b\xd7\xd1\
+\xb1\xacB-\x8a\x99\xddj\xa3\xc8\xe2\xb2\x0ch\xac\x9c\
+\x17\x04\xb0VOx\xe6\x0f\xa7\xd8\xff\xf2i\xeeX\xdb\
+\xc1\x07{:\x91@\x99\xacE\x00\x08\xbe\xc0\x11l\x9c\
+\x14\x80\x8b\xa4\xe0\xe9sc\xec\xda\xd7\xcf\xe9\xd7\xafp\
+\xff\x87\xba\xe8\xea\xac\x12\xa7)\xa4 \xc8\x8cNR\xbc\
+[\x9b\xe0\xdc\x22(\x989\xcf\xef\x8f\x0e\xf3\xd4s\x03\
+,\xa9*\x9b>\xfcnJeC-\x8a\x11\x04\x11\x01\
+\x91\x19\xb8i\x9c$\xc9\xf0\xce5\xca7?\xc0\xcbc\
+\x11?\x7f~\x90\x83\xbdg\xe9\xb9m\x09k\xba[q\
+>#\x8a\x1c\xa2\x8a\x88\x5c\x85\x9c-\x1f\x90\xa6Y\xa1\
+\xe0\x0d\x02<v\xea\x12\xbb\xf6\x1d\xe7\xd2\xe88\xf7\xf4\
+\xb4\xd3Z\x0d\xa9\xc7\x16UETQ\xf19\xa0* \
+\x85\x88W\x09\xd3\xd4\xe5\x0a.t\x88#\x9b\xb1\xff\xe5\
+\xd7x\xfa\xc0?\xe8X\x02\x1b\xd7U\x09\x8c#\x8eR\
+\xc4(\xaa\xcc\xb8\x88\xa2\xce\x81\xe8t\x94g\x183\xe7\
+q\xce-\xac\x82\xff\xbe8\xc9\x93\xcf\xf6\xf3\xca\xc00\
+k\xbbB\xde\xd5^\x22I\x122\x17\xa0\x06\x8c\x07U\
+AU0\xc6#\xea\xf1\x92\xab7\x93\x8b\x85`\xce\x09\
+\xf9\xc4\xb0\x00\x0az\x0f\x87\xfa^\xe7g\xfb\xfb\x18\x1f\
+\x1f\xe1\xf6\xae\x80\xa6rF\x14'\x98 \xc0x\xc1x\
+\xc1{\xc1\x18\xcd\x9b\x89\x14\x1b\xbc\x16yX\xbcf\xd6\
+D\xf0~\x01\x8ad\xbcf\xd9s\xe0\x04{\x0f\x0e\xd0\
+\xd6\x14\xb1\xaa\xc3\xe0RGLH\x10\x08\xce\x0b\xde+\
+xG\x8e\x94\xc3\xe5!U\x10AE\x8a\xdffU\x09\
+z\xcd\xb7y\x01\x9e<;\xc2O\x7f\xddK\xdf\xc9!\
+:\xdb2*e!\x8aRL\x10\x10x\xc1\xa1\x84(\
+\x88\xc3\x8b\x07\xc9\xe1p \x85r\x1e\xc5\xa3\x85z\xb3\
+\x90D\x11\xf13\xad{\xce\x80c\x931\xdf\xdd}\x84\
+3\xc3\xc3t-\xcdP\x0f\xf5:\x88*\xa1\xa3\xf8\xe3\
+\x0c0 \x0e\xc4#\x9a3\xaaW\x9cW\xd4\x0bL\xbb\
+\x5c\xadf\xef\xf3\x02\x12\xfc\xfcC\x1c\x06J\xf7\xf2\x0a\
+Cga|\x22B\xc8\x08\x03C\x10\x96@\x0cH\x06\
+d\xb3\xe0r@5\x82\xfa\xdc\xbd\x17<ExE\x8b\
+~8]4Y\x91\x06\xf3T\xb0\xa5)\xe4[\x8f\xdc\
+\xcb\x9e\xce*\xcf<\xffW\xde\xbcp\x0e\x9f\xd4\xa9\xb6\
+Vhkk\xa3\xb5\xb5JKEh\x96\x00c<\xde\
+K\xa1\x8a\xe6\xedE\x14U\x83QC\x10\x18\x02c0\
+F\xd1\xa2\xaaK\x81`T\xe6\x0f\x08\xd0V-\xb3}\
+\xeb]\xf4\xac]\xce\xce\xa7\xff\xc4\xf1\xc1S\x8c\x8c\xd6\
+\x18\x1d\x8f\xa9T\xa6h\xa9T\xa8T\xabT\xabU\x9a\
+[\x12ZZ2ZZ\xa0\xb9I(\x97\x85rY\x01\
+S\xec(\x0a(\x19\x82s\x9e8\xf1d\x0b\xb1\xd5\x89\
+\x08\x1f\xddx+\xb7uw\xf0\xc4\xaf\x0e\xf1\xe2\xe1~\
+\x12\x1b\x83\x172\x076q\xd4\xa3\x14/)\x8e\x94\xd4\
+'\xd8T('\x85\x97\x94rY\x09CO\x10\x08F\
+\x15\xef=\x89\xd3\x86\x0b\xe4\x7f\x02N[wg;\xdf\
+\xf9\xe2&z\xd6\xae`\xf7\xbeC\x8cNYJA\x09\
+UE\x8d\xa2\xc6\xa0\xc6`4\xffl\x8c\x12\x98\x22\xbc\
+A@)\x0c)\x95B\x8c1\xf9\x5ch}\xd1\xb7\x1b\
+\x83l\xe8\xd0T.\x05<\xbc\xf9.\x1e\xff\xfaV\xd6\
+\xafYN\xea\x22J\xcd!\xaaff\xb7\xb8\xc6UP\
+\xd5\x99<\x0c\xc3\x90r\xb9D)\x0c\x09\xc2\xe0\xda\xf1\
+f!\x00\xa7m\xc3{o\xe1\xf1olc\xeb}=\
+D\x13\x17\xc9$\xc6\x84\xc1[7\xde\xd9\xed\xaf\x98n\
+<y\xf7i\x94p\xce\xc7\xce\xa5m\x15\xbe\xf6\xd9-\
+\xecxt\x0bMv\x84\xcb#\xe7\x90R\x0e\xe3\xbd\xcf\
+\xbd\x18\x08\x5c\xe6\xc82G\x9a\xa4\xc4\xb1\xc5ZK\xea\
+\xdc\x9crp^\xe7bU\xe1\x81\x8f\xdc\xc9\xaeo?\
+\xc2\x07\xba+\x0c\x9d:\xc6T6\x09*9\x94sd\
+YF\x9a\xa6\xd8$!\xb6\x96(\x8e\x89b\x8bMS\
+\x9co|\xdc\xba\xae\x83\xfb\xea\xeeN~\xf4\xd8\xa7\xf9\
+\xc2\x83ws\xfe\x9f\xbd\x0c_8M\x1a@\x96f$\
+\x05\x9c\xb5I\x0e\x17\xe5n\x93\x147\x87\x9d\xe4\xbao\
+\x16\x9a\xca%>\xb3\xf5\x01~\xf2\xd8\xa7h\xaf_\xa0\
+\xaf\xef0c~\x8a\xd4y\xacM\x88cK\x14O+\
+\x18\x13'\x09\x19\x8d\x8f[\x0bv\xf5\xb1q\xfd\xed<\
+\xf1\xbd\xedlY\xdfM\xff\x91\x03\xbcv\xf9\x0c\x91:\
+\xe2\xd8\x12GW\x15\x8c\xec4\xe0\x22)8\xdb\x96-\
+]\xc27\xbf\xbc\x8d\xef\x7f\xfe!j'^\xe5\xd5\xfe\
+?sE-q\x9a\xe6pqL\x94$d\x8b\x95\x83\
+\xffuAU6}\xec\x1ev\xff\xf0+\xdcY\xcdx\
+\xe5\x8f\xbfe\xb8~\x89H<q\x14\x13\xc7\x16\xe7\x17\
+1\x07\xdf\xcan}O\x17?\xde\xf1%\xbe\xfa\xe0\xbd\
+\x0c\x1fy\x91\xbf\x0f\x1dc\xb2\xecIBA\xb2\x94F\
+\xa7\xd6\x1bz\xfd\xd6\xdcT\xe6s\x9f\xfc8O\xed\xd8\
+N\xe7\x95aN\xf6\xbe\xc4\xb8\x8c\xd0Q-\xd1T~\
+\xfb\x9b-\x00Y\xac;\xea7GF9x\xa4\x97\xf3\
+^\xb9c\xd5\x0a\xee\xdb\xb0\x0e5o\xaf\xcf\xa2\x01\xce\
+\xd7\xfe\x7f\x89~\xbd\xf6\x1fu\xd4\xd8/\x83\xf6\xd6\x89\
+\x00\x00\x00%tEXtdate:cre\
+ate\x002023-03-08T1\
+7:27:26+00:00\x9e\x98\xa5\
+\x85\x00\x00\x00%tEXtdate:mo\
+dify\x002023-03-08T\
+17:27:26+00:00\xef\xc5\
+\x1d9\x00\x00\x00(tEXtdate:t\
+imestamp\x002023-03\
+-09T06:18:41+00:\
+00=\x00\x9f\x01\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x04+\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x01\xbf\
+PLTE\xff\xff\xff\xfe\xfe\xfe\xf2\xf2\xf2\xef\xef\xef\
+\xf8\xf8\xf8\xd5\xd5\xd5\xe2\xe3\xe3\xe3\xe4\xe4\xe3\xe3\xe3\xe4\
+\xe4\xe4\xe4\xe5\xe5\xe5\xe5\xe5\xe6\xe6\xe5\xd6\xd6\xd6\xf7\xf7\
+\xf7\xd9\xda\xda\xdc\xdc\xdd\xc1\xc2\xc2\xc8\xc9\xc9\xe9\xea\xeb\
+\xed\xee\xf0\xed\xef\xf0\xee\xf0\xf1\xee\xf0\xf2\xef\xf1\xf3\xe7\
+\xec\xf3\xe4\xea\xf3\xf2\xf3\xf5\xda\xda\xda\xda\xda\xdb\xcf\xd0\
+\xd0\xc4\xc5\xc4\xb8\xbb\xbe\xd0\xdc\xec\xd2\xe0\xf4\xcc\xdd\xf4\
+\xc7\xda\xf4\xc2\xd7\xf4\xbd\xd4\xf4\xb7\xd0\xf4\xb3\xce\xf4\x94\
+\xbb\xf3q\xa7\xf2\xca\xdc\xf4\xdb\xdb\xda\xdc\xdd\xdc\xb9\xbd\
+\xc3\xc3\xc5\xc8\xea\xec\xed\xee\xf1\xf3\xef\xf1\xf4\xef\xf2\xf5\
+\xef\xf2\xf6\xe5\xec\xf6\xdf\xe9\xf6\xf2\xf5\xf7\xdb\xdb\xdb\xd9\
+\xd9\xd9\xef\xf0\xef\xd8\xe4\xf3\xe7\xec\xf2\xf2\xf3\xf2\xf3\xf3\
+\xf3\xf4\xf5\xf5\xf5\xf6\xf6\xf6\xf7\xf7\xf9\xf9\xf8\xfa\xf9\xf9\
+\xfa\xfa\xf9\xf9\xf9\xf9\xf1\xf1\xf1\xd5\xe2\xf4\xf4\xf4\xf4\xf5\
+\xf5\xf5\xf6\xf6\xf6\xfa\xfa\xfa\xfb\xfb\xfb\xd1\xe0\xf4\xe6\xec\
+\xf5\xf6\xf6\xf5\xfc\xfc\xfc\xf4\xf4\xf3\xcd\xde\xf5\xf8\xf7\xf7\
+\xf9\xfa\xfa\xdc\xdc\xdc\xf5\xf5\xf4\xc9\xdb\xf5\xe4\xec\xf7\xfd\
+\xfd\xfd\xda\xdb\xdb\xc5\xd9\xf5\xe3\xec\xf8\xfb\xfa\xf9\xf7\xf7\
+\xf6\xc0\xd7\xf6\xe2\xec\xf8\xfc\xfb\xfa\xfe\xff\xff\xf8\xf8\xf7\
+\xbc\xd4\xf6\xe1\xeb\xf9\xfc\xfc\xfb\xd8\xd9\xd9\xb7\xd1\xf6\xdf\
+\xea\xf9\xfd\xfc\xfb\xee\xee\xee\xde\xde\xdf\xd8\xd9\xda\xcf\xd1\
+\xd1\xfa\xf9\xf8\xb3\xcf\xf6\xde\xe9\xf9\xea\xea\xea\xcc\xcd\xcd\
+\xc3\xc4\xc4\xc9\xc9\xca\xc9\xca\xca\xed\xee\xee\xa3\xc5\xf6\xd3\
+\xe3\xf9\xfe\xfd\xfc\xf2\xf3\xf3\xd0\xd0\xd1\xc5\xc6\xc6\xe9\xe9\
+\xe9\xd4\xd5\xd4\xf6\xf7\xf9u\xa9\xf4\xb9\xd3\xf8\xff\xfe\xfc\
+\xbf\xc0\xc0\xcb\xcb\xcc\xd7\xd7\xd6\xfb\xfb\xfa\xbf\xd7\xf8\xe2\
+\xec\xfb\xff\xfe\xfd\xe8\xe8\xe8\xc1\xc2\xc3\xcb\xcb\xcb\xf0\xf0\
+\xf0\xd3\xd3\xd3\xe2\xe2\xe3\xe3\xe3\xe4\xd5\xd7\xd8\xc8\xca\xcc\
+\xea\xe9\xe9E\x17\xd3\x0b\x00\x00\x00\x01bKGD\x00\
+\x88\x05\x1dH\x00\x00\x00\x09pHYs\x00\x00\x00`\
+\x00\x00\x00`\x00\xf0kB\xcf\x00\x00\x00\x07tIM\
+E\x07\xe7\x03\x09\x06\x142\x1f\xc9N\xa7\x00\x00\x010\
+IDAT\x18\xd3U\xd0WS\xc2@\x14\x86\xe1]\
+X\x81\x18\x88]@c\xef\xbd\x00\x8a\x05\x114\x8a\x04\
+%\x16\xd4\xd8{\xc3\x8a\xbd\xc5\xde{\xf9\xc1nvs\
+\xe3{\xf9\xcc\x99\xf9f\x0e\x00P\xa7\xff\x97\x0e\x02\x00\
+P\x9c\xc1`4\x19\x19&\x9eeY\xb3\x99\xb5 \x8c\
+\x5cBbRrJjZ\xba\xd5f\xb3\xd932y\
+N\xc5\xac\xec\x9c\xdc\xbc\xfc\x82\xc2\xa2\xe2\x92\xd2\xb2\xf2\
+\x8aJ\x82|UuM\xad\xb5\xae\xde\xe1p:]\x0d\
+\x8dn\x82M\xcd-\xad\x9e6o\xbb\x8fC\xfe\x8eN\
+\x81\x22\xdf\xd5m\x0f\xf4\x049$\x88\xb8\x90\x86\x9e\xde\
+\xbe\xb0O\xa5\x10N\xd2\xb0\x7f\xc05\x88\x860Ij\
+\x11\x8a\xc3#\xa3~B\xb2\x1a\xc5\xb1\xf0\xf8\xc4\xa4H\
+\x0c\xe2(\xba\xa7\xa6gfU\x83\x10@8\xa7\xe1\xfc\
+\xc2\xe2\x121(\x09An\x99\xa2\x7feu\x8d\x98\x10\
+]\xb7ll\x8a\x04\xb7\xb6w\x08\x8a\xb1\xdd\xbd\xfd\x83\
+C@\x10\x1d\x1d\x9f\xe0\x11\xf9\xf4\xec\x5c\xb9\xd0\x03\x8a\
+\x97W\xd772\x04R\xec\xf6\xee\x9e\x1a\xe0\x22\x0f\x8f\
+O\xcf\xf8\xb3\xf2\xcb\xeb\xdb;5\x80>L\x9f_\x0c\
+\xc3\xb2\xa6\xef\x1f\xed\x0e\x00\x18U~\x15Z@\xa3?\
+\x8f\x22K\x03\xe7l\x909\x00\x00\x00%tEXt\
+date:create\x002023\
+-03-08T17:27:26+\
+00:00\x9e\x98\xa5\x85\x00\x00\x00%tEX\
+tdate:modify\x00202\
+3-03-08T17:27:26\
++00:00\xef\xc5\x1d9\x00\x00\x00(tE\
+Xtdate:timestamp\
+\x002023-03-09T06:2\
+0:50+00:00\xdd\xe8\xb2\xde\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x03\xa3\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x08\x04\x00\x00\x00&\xf7p\xe6\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x02\
+bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09pH\
+Ys\x00\x01bT\x00\x01bT\x01\x80\xc1\xe1l\x00\
+\x00\x00\x07tIME\x07\xe7\x03\x09\x06\x12)\xc3\xf6\
+ \xcd\x00\x00\x02rIDATH\xc7\xad\x97\xbfo\
+\x131\x14\xc7?w\xbd\xa0\xdc\x80rBJ:4]\
+*\x90\xf8\xf1\x07Db\x00\x81`\xc8\x8e\x98\xb21e\
+a({\xd35K\xc4\x10\xa9\x13[\x84\x00\xc1L\x85\
+X\xca@\xf7\xa0\xa2J\xa4(R\xc4\x90FB\xad\xa0\
+\xbd4Ic\x86\xbb\xfc\xb8\x8b\xed\xb8\x0d_/\x96\xfd\
+\xfc\xbd\xaf\x9f\xfd\xde\xf3\x81\x1c.E\xea\xf4\x10\x92\xd6\
+\xa3N\x11\x97\x0b I\x19_J6j>e\x92\xb2\
+\xa5\x96\x94\xb0\xc0+\xae\xf0\x93\x8ftb6\x02H\x93\
+g\x8d\x1e\xcf\xa8\x99\xe9s\xd9Fp@Ni\x91\xe3\
+\x00\xc1\xb6\xe9\xb6Wh \xa8jm\xaa\x08\x1a\xac\xcc\
+N\xd8\x12c\x87\x04\xd0\xd1\x12v\x80\x04\x8e\x19a\xe0\
+\xa9\xf9\x90Z\xd9Js\x0b\x1d\x94\xb32\xc2\xa1\x81J\
+1e\x19\xf3W\x00\x97ka\x7f\xc8*\x0e\xe0\x91e\
+IAw\x8e\x078\xac\x8e%\x0d\xf8\x8d?\x92\x9e\xe4\
+\x09\x05\xae\x93\x08\xbf\xeb\xb0\x8c\xc31G\x1a\x85\x1e)\
+\x06\xb4\x19\x84\x0e\xe8\xd3\xa0\xc6{\xba\xe0R\xe6L\x1b\
+\x15\xa6\xed\x8c2\xaeE\x91\x0aIiT\x98b\x12=\
+]\xd6\xa1>'*L\x11DO\x1dzs\xa3\xc2\x14\
+U\x04=\xdb *L\xd1\x01\x12\xf6\xc241\x04\x84\
+\x979\x8aYX\x13\xc2\xff\x88x\xbe\xb0\xc8\xc83\xb1\
+\x02]\x0e\xa3A\x1a'|L\x85\xab\x86\xd9\x06,\xfe\
+\xb0\xce'\x1d\xe1M\xee\x5cp\x8f\xb7\xf4\x84o\xb1\xb8\
+A\x81\x14_\xd8Qzx\xc8}\xeeqL\x8d\x1f\xbc\
+\x89O\x0a\x04\xa5\xc8H\x96&\x82\x0d\xad\xae\x0d\x04M\
+\xb2\x91\xb1\x12\x02!\xd3\xb0\x14\xfaG\xef\xbd\x89e\x04\
+6} \xad\x5c\xa2'\x8c\x22\x0d\xf4m\xf6\x81|$\
+9\x9cc\x8ai\xcb\x1cy`\xdfa\x8b\x0ak\xbc\x1e\
+\xa7/\x81\x877\xd6\xf1\x88\xbb\xb1B\xff\x95\xcf\xe1\xb5\
+\xf2x\xc1\x11V$}m\xa9\x13\xec&\x90aof\
+|\x8fe`S\x95`\x1d|J|\x93\x94\x00\x80\x13\
+vIE\xae\xb9\xc5.\x7f\xc3\xbe\xb4\x048@\x97\x1a\
+\x1f\x22E\xea]\xf8&8\xe19\x99\xc8m\x1cr\xc8\
+i\xd8o\xf3\x94V\xbcH\x8d.\xb6\xcf\xaf\xa9e\x83\
+q\xef\x94\xa6\xf2H\x06\xb4h\xc5\x07%\x8f\x89)E\
+\xfaC\x91\xe6*\x19\xe1h)\xa4y\xc9\xed\xd8\xf8w\
+\x1e\xd2V\xa7\x0f9\xe1H\x93\xfeP,S\xc2\xc18\
+z\xd4\x87\x92\x06\xfaS\xbe\xd6b\xa1\x07\xa7L\xa1O\
+\x8d\x07\x91\xe8\x89{6x\x12\xd7\x82\x8bb\x82\x05\x1e\
+\xed\xeam_\xf2\xb7\xe2\x1f\xabI7!\x97\xa94\x84\
+\x00\x00\x00%tEXtdate:cre\
+ate\x002023-03-08T1\
+7:21:49+00:00\xa3\xa1\xac\
+\xac\x00\x00\x00%tEXtdate:mo\
+dify\x002023-03-08T\
+17:21:49+00:00\xd2\xfc\
+\x14\x10\x00\x00\x00(tEXtdate:t\
+imestamp\x002023-03\
+-09T06:18:41+00:\
+00=\x00\x9f\x01\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x06m\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x064IDATx^\xad\x97[lT\xc7\
+\x1d\xc6\x7fs\xce\xd9\x8b\xbd\xf6\xfa\x16\xa0\xbe\x00\x0e\xb2\
+ic$BJ!\x22\xa1-\x95b\xa5/\xeeKh\
++\x95\xa6U\xa5\xc6`U\xaa\xda\xb4\xaa\xfaV\x09U\
+\xca\x03\x94'\xda\x07\x84\x14)\xad\xc4\x8b\xa5R\x83y\
+\x08\xc5\x189\x0ei\xd3\x84\x9a\x9bcj\xec\xb2\x04\x1b\
+;\xbb\xf6z\x8f\xbd\xbb\xde\xb3g\xa6\xc3h\x85\xe5r\
+l\x88\xc9'}\xfa\x9f\x9d\x87\xfd~\xf3\x9f\x99s\x11\
+J)\x82$\x84x\x05x\x9e\xc7kH)\xf5w\xd6\
+(' \xb8C\xbb\x01h\x97R\xbe\xc6cdY\xd6\
+\x07\x1a\xf6\xbb@\xb7\x069\xff\x14\x00&\xfc\xb7\xed\xf5\
+\xe2`]DDn\xce\x89\x8a+W\xaeP]S\x8d\
+@\x00\xa0P\x08e(A)f\xd3i^\xa9\x17/\
+\xbc\xb4Nl;\xf1\x1f\xb9G\x83|[CL<M\
+\x07\xf6\xff`\x8b\xdd,%\xf8J2<<Lee\
+%+\xc9u]\x1e\xc0n\xa9\xb0\x22\x1b\xa2*r?\
+\xa7\xea\x81\xb5\x03\x08-\x05H\xa1\x0d\xf4]\xbcH.\
+\x97\xc3/\x16QJ\x91\xcf\xe7Y\x5c\x5c\xa4P(P\
+\xd4c\xb5\xb5\xb5\x94\x01X\x80\xf8\x82\xf6\x80\x01\x006\
+D\x05\x1f\x0f\xbcK>;\x8f\x85D\x952\xe2\xb6\xc4\
+\xb6\x04!!p>Sl\x8c;\x80D*\x04\xf0\x9c\
+\x10\x02\xe0\xcb@\x05P\x0f4`\xc4Hi\x9f$\x02\
+\x01N\x9c8!\x00\x81\x05\xd2\x87\x96\x96g\x09em\
+\x14\xe5(\xa5\xb4A\x08XW\x19%\xe2\xd8DB\x16\
+\xc3\x13s\x5c\xbc=A\xf7X\x8e\x5c$\xbe\xa9\xbd}\
+\xf7\xef-\xcbZ\xdc\xb1cGYUU\x95\xd3\xd8\xd8\
+\x18~\xe0\x86\x86\x86\xd0\xa5K\x97\xdc\xae\xae\xae\x08\xf0\
+\xd6\xaa\x1d\x00\x13DU,\xc2s\xd51\xf2\x9eO\xa1\
+(\x91Ja\x09A\xd8\xb1\x88\x86l\xe6r\x05\x12\xa2\
+\x8e?\x9f\xff+\x0dM\x1b\x01\x22\xc0f\x96\x84\xef\xfb\
+x\x9eGuu\xb5\x9ePK\xf4\xea\xd5\xab\x87\x84\x10\
+(\xa5\xdeZ\x11\xc0\xb2A\x00\xb6-\x90\xda\xb6\x148\
+\x08\xa4\x12X\xc2\x8c\x1b\x8fL\xb9\xec{\xf5;\xd47\
+6\x11|/\xc1\x84g2\x19\xca\xcb\xcb\xcdf>v\
+\xec\xd8&\xbd\x7f\x0e.A,\x01\xd0\xd9\xd9\xa9\x0e\x1d\
+:\xa4l!\x08Y\x10\xb6-\x1c\xc7\xc6BP\xb4\xcd\
+\x1a\x1b\x00\xc7\xb2\x888\x96\xae\x02`Yx\x10\xc0\xdc\
+\xdc\x1c555\x06 \x1a\x8dr\xe4\xc8\x91\xcd\xc0\x03\
+\x88\x1b\x1a\xa2\xc7b\xb9\xb0mt0f\x8d\xcb#6\
+\xb1\xa8\xa3\xc7,2\x8b\x1e\x93\x99\x1cc\xa9y\xee\xcc\
+.\xe8\xdfEr\xf9<\xab\xc8,A6\x9b5\xa7f\
+\xe9\xffm\x0e\x1c8\xb0\x1e\xe8\x00X\x06\xa0\xb4t\x16\
+\x8e\x0d\xe1\x90\xc0S\x8a\xb1\xa4\xcb\x8d\x8c\x83\xd3\xb2\x97\
+\xa6}\xaf\xb3\xb5\xe3\x17\xac\xdb\xfb:\x0d/\xb4s\xfb\
+\xce$\xfd\xfd\xfd$\x93I\x94R\xe6\xfa\xf8\xf1\xe3\xe8\
+\xba\xac3\xe7\xce\x9d\xe3\xe8\xd1\xa3\x1c>|\x98\xde\xde\
+^\x12\x89\x84\x04,\xa1\x15\xdc\x01\xed\xff\xce\xe6\xf8\xe7\
+\x94Ok\xc7\xcf\xf8\xe6/\xdf&\xf6\xf57\x99|\xa6\
+\x83k\xfe.\xae\xf1-dk\x17\xad{\x7fN^V\
+s\xfaog\xd1wM\xee\xdc\x9d\xe2\x1b\xafvr\xfd\
+\xfau\x03\xa0gk\xd6?\x16\x8b\x99\xebx<\x8e\xe3\
+8%8\x04\xc0#\x00\x96%\x98\xcaA:\xde\xca\xfe\
+\xdf\xbdM\xd5\xae\xd7(\x84b\x08\xdbBY\x82lA\
+r\x7ff\x91O\xeef\x18\xb8\xear\xfa\x1fad\xd5\
+^\xae\x8f\xdcg2\xd7\xc6\x85\x0f\xee\x9b\x00\xed\x87\xa1\
+\xcd\xcd\xcd\xb4\xb5\xb5\x19755\xa1\xa1\x14 \x83\x1f\
+F\x16\xdcq\x15\xdf\xff\xe9o\xa8l\xd8H\xe2\xec;\
+L\x8f^\xc3\x89\x94\xb1\xb5y\x07\x9b[\xb6\xf3Iy\
+%c\x09\x97\xcff\xf2\xdc\x9d\xce2\xa1\xed\x88\x0dL\
+'\xe7\xd8\xb7+\xca\xfa%\x003{=k\xea\xea\xea\
+\x00\xccu*\x952\x00J+\x10\xa0\xb9Zp\xe1\x9d\
+c(,\xca\xe6\xc6\xd9\x10\x8fR\x94\x92{\xc3}$\
+e\x05\xdb\xda\x7fLM\xdb\xcb|<\x9cf\xd2_\xc0\
+\xcdx,\xcck/x \x00\xb5t:B\xa1\x90\x09\
+-\xdd\xea\x1f\x8e\x01*\xf8>`\xc1\xc6\xb8\xa0P\x1c\
+#\x1c\x8bS\xb7\xa5\x96\x92xv}\x05\xe9\xac\xc7h\
+\xff\x9f\x98\xae\xbcL\xcb\xf6\x83\xb8\x0ba\xbc\x82\xa4X\
+\x94x\xda!\xc7B-\xaa\x80\xe3i\xa0\x96\xd5\x15\x01\
+\x00\xd6\xc7C\x84\xca#\xfc\xbfjc!\x9e\xa9\x0cs\
+\xe1\xdf\x83\xec\xd9\xf9\x13\xca\xa3\x0e\xb92G\x03(\x03\
+ak\x00\x16K!\xa5\x1c%0*\x15\xa4\x5c\x05@\
+X\xa5*\xcc\xf5#\xfapl\x86\xf1Y\x8f\xef\xfd\xfa\
+\x8f\xdc\xca\xd4\xe0D\x5c\xa2\x11\x1b\xcf\x93\x14=\x07\xd3\
+\x01\xa5\x90R\xf2PjY\x01V\x05\x10\x08L\x0d\x04\
+\x18\x9dv\xf9\xd5_\x86\x18\xbd\xb7\x80=\x93g\xd3\xba\
+2\xf2y_\xbbh\xea\xce\xaf\xd4p\xf9\xdd\xe0%\x00\
+\x9ex\x09L\xb8\x10<\xa2\xd6/U\xf2\x87\x1f>\xcf\
+\xf5O3D\x1b\xb7\xb1\xf3\xc5\x97Y\x12\x5cN`\x8e\
+\xdbS\x01(\xc0\x12%\x00m\xd4R}\xb1\xb5\x96\xdd\
+[\xe2t\xbf\x97\xa5j\xf7W\xf9\xd1\x1bo\x10\xa0\xb5\
+\x03\x98\xb57\xd5\xd8\x08\x01\xd2\xcbSpSx\xf33\
+\x14\xb3i\x0a\x19\x1f%\xfd\xd5\x82\xd6\x08\xf0\xf0)\xe7\
+\xe3\xe73\x14\xe6u\xa8\x0e\xd6\x00\xcb\xf7\x89\x10\xc13\
+}\xfa\xd7r\x8c\xb2\x137\x03\xc7\x01\xb2\x1e\xfe\xad\x94\
+\xcco\xf7DT\x03\xd8_p\x07\x08\x92\x09\xfd\xd7=\
+?\xfd~B\xa6\xcf\xdf\xf6\xef\x02\xeev;\xfc\x92\x06\
+\xa8\xe3s\xcau]\x1fpW\xed\x00@2\xab\x0a\x1f\
+~*\xd3\xbd\xb7\xfc\xd4\xcdi9\x05\xf4\x03\x97th\
+\xbf\x10\xa2\xd3\xb6\xed\xaf}\x9e%XXX\xf0\x07\x06\
+\x06\xd2'O\x9e\x9c\x06\xba\x83\x00>\x1aI\xca\xad\xe3\
+\xb3*\xd7;\xe2\xa7nL\xcb\xd1R\xe8Y\x1dt\x8b\
+\x00=\x09\xc0\xd0\xd0\x90\xdb\xd3\xd3\x93\xd2N\xcf\xce\xce\
+\x9e.\xbd\x1d\xdf\x08\x02\xe8\xee\xea)\x00\x8c\x04\x84\x06\
+\x85\xaf\x08055U\xd0/\x22\xa9S\xa7N%\xc7\
+\xc7\xc7/\x03g\x81~\x1d\xec\xae\xb8\x09K\xdfv\xda\
+O&\x85\x01@\x08@aZ\xfc\xde\xe0`\xba\xbb\xbb\
+;\xa5\xdf\x8a\xcc$\xd0^\xeds\xcda\xed\x9aw3\
+n\x11`p\xf0\xfdt___\xfa\xcc\x993\xa6\xc5\
+\xa5\xd0\x8fx\x02\x89\xb5\x9ec!D\x18x\x13\xd8O\
+is\x06\xb4\xf8\xb1\xfa\x1f\xbd\xfa*_\xf2\xd8\x15\x9d\
+\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x05+\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
+\x00\x00\x00\x19tEXtSoftware\
+\x00Adobe ImageRead\
+yq\xc9e<\x00\x00\x04\xbdIDATX\xc3\xed\
+WkL\x93W\x18>#q\xc92\xe9\x16\x97\xa8T\
+e8\x9d\x02\x15\xf6\x03\x872\x93\x01f,[p\xc4\
+0\xff`\xa2.\x1a:\x1dN\x03\xba1\x89[\xb3\x80\
+\xd9\x0c\x84\x02\x19X\x1c\x14\x8b\x85\xb2\x82\x95^\xe4f\
+\x0b\x8e1\xf8\xc3F\xcb-\x81\x15\xdc\xa8\xc2\x1c\x1b\xb7\
+ji\x91\xf2\xee\xbc\x87\xaf\x0c\xdc\xb8\x0da\xd9\xb2\x93\
+<\xed\x97\xf3}\xfd\xde\xe7\xbc\xef\xf3^J\x00\x80\xfc\
+\x93 \xff\x0a\x02t\x09(D\x14\xd9\x14q\x14\x01+\
+F\x80\xae\xddd\xdd\xc6f\x22L\xf8\x95\xc4\x8bG\xc8\
+\xa1\xd3\xf7\xc8\x8e\x97;82a+A \x85\x9c\xbe\
+0H.\xdd\x80\x19@2\xabyM\xf4\xbe\xfbr\x13\
+hd\x06\x91\x04^\xa3Q\xf4\x06\xee\x85G\xf5\xd0\xbd\
+\x83\xcbM \x9b\x9d\xf6@t/\xbd\x162= \x89\
+?H\xa5,\x1b\x01\x8c1y\xc1\xbb\x9d\x88K\xc6\xd7\
+\xc6&\x0e\xa0\x10\xb9\xfdB\xfe\xc5+6F\x8c\x12\x5c\
+N\x02\x93\xa7\xa7\xa7\x0d\xcc\xd39\xb9\x98c6\x14\x0a\
+\xd2\xe4\xa3+A \x8c)\x9e*\xdf7G\xeb\xdc{\
+\xb5\xcc\x89\x9e@D\x96T\x83+,\x0b6FH\x08\
+\x13\xf5d*{.T\x03\x01\xf8\x037\xbf\xc0\x0e4\
+*T\xdfb\x88R\xd5,X\x03t\x1d\x16\x08\x04z\
+EU\xf5\xc8\xa0mt\xc2\xd4s\xf7!\xbesQ\x95\
+\x90\xae\x8f\xd0\x13\xcf\xe5\x94\x83\x87\xb4\x02\x9e\xcc.\x03\
+\xd4\x06\xdd\xaf\x99\xcb\xb0\xaf\xaf\xaf>\xbf\xd2`\xb5\xdb\
+\xed\x80\xf8y\xe4>\xc4^\xab\xb4\xb9\x88/\x86\x80'\
+\xd3\xc0g\xf9\x8e\x19\xf5`\xd7^3\xbav\xdas\xee\
+h\xd8\xc7\xc7G\x9f\xab\xab\xb0\x0e\x0f\x0d\xc1\x10\x87\xb2\
+\xf6.\xe7\x967\xf7wsa\xd8\xbd\xe8^\x80/f\
+\x9a\xa0\x86\xdf\xa96B\xf7\xf0\x03\xd8\x19\x9f\xd4\xcf\xa5\
+\xe7\x1a\x8a\x98-~\xfem\x97T\x1ak__\x1f\xb8\
+\xd0\xd1s\x07br\x15VN\xc4\x87\x97\xd4\x8c0\x14\
+\xe9\x15\xb7\x1e8\x1c\x0e@\xa4\xd6\x191\x9e\x85\x9b\x05\
+~m\xa9%\x1a[\x97\xd9\x0c\xe6.\x0a\xf3$\x14\xdf\
+6\x8e{\xbd\x1e\xd1\xcdB\xc8\x09o\xa9\x04<\xd1\xbd\
+V\xab\x15\x10w\x7f\x1b\x84\xf3\x92\x5c\xbbR\xa9\x84\xfa\
+\xfaz0\x99L\x0cu\xdf5\xc1Q\xb1d\x18\xc9Q\
+D>\xb6v\xcc\xb4@O\x93_~\xd3\xd6\xdf\xdf\x0f\
+2\x99\x0cD\x22\x11\xa8T*\x90J\xa5\xa0\xd1h \
+K[9\xbe\xe9\x95\xe0\x1f\xb8S\xafy,\xf3\x00\x97\
+\x8e\x22\x9e\xc7\x86\xe6S)\x19\xf6\x82\x82\x02\xe6\xe2\xa0\
+\xa0 \xe0\xf1x`\xb1X@[^\x01\xfb\xcf&\x0c\
+-\xa6S\xceg\x94\xcf\x09L\x83\xe2[{\xe6\xc2`\
+\x9a\xb2\x14\x14\x0a\x05\x88\xc5b\xc8\xcc\xcc\x84\xa2\xa2\x22\
+P\xab\xd5\xd0\xd9\xd9\xc9`\xec\xfe\xc9\xb9\xc9\xdb\xa7u\
+.\xb7\xcfK\x80\xae\xb7\xd8)p\x0e\xc0j\x97\xacx\
+\x88\xca\x7f\x82\xe2)\x89\x0e>\x97+![\x96\x0f\x07\
+c\xe3G\x84\x1f&\xd8\x92rd\x8eo\x1a\xbf\x07\xa3\
+\xd1\x08-\xad-\xf0\xcb\xc0 \x1c8\xf1\xbe\x05\xb3b\
+\xc1\x04\x5ci\x84\x85\x85\x84F\xdc&\xe72\xac,\xcf\
+3\xb5\x13\xec;\xe3\xba\xd33\xaf\x82\xe5\xfez\x89\x06\
+\x9e\xde\xfcb\x1b\xf7<\x92\x8d{f\xabO[\xca5\
+\xedXCC=444\x80\xa5\xb7\x172\x14\xc5\xc3\
+\xf3\xe9\xc0e<\x92\xe5(\x9e6]\xe5\x9c*2x\
+}\xf4\x83.Zl\x121\x0c\x1b%\xeaq\xf7/\xcb\
+'\xef\x05\x87_\xfe\xd3\xe4D\x0bLh\xf4\xc9>u\
+\x95\x1e\x0c\x06\x03\xb4\xb7\xb7\xc3\xd7\xc6\x961\xae\x81\x09\
+f\xf16m8h<I::e\xf8b\x81\x83D\
+\xbdWC\xb6\x0a^\x9b*\xc3\x94\x5c\xb0B\x0f\xab$\
+\xb4\x04\x9fJ\xaa\x9bC71(\xd4O\xf2\x0a\xc7t\
+:\x1d\xd4\xd6\xd6\x82\xc9|\xdb\xb9a\x9b\xf7_\xeab\
+\xb2\xe5~\x9cu\x1f\x0d\xf3\xb2\xd4N\xf2\xf6\xb1\xeb.\
+\xb6\xae\x94\xc3\x90l\x97U\xc1KW\xab\x80\x9cMn\
+Z\xd0\x1cI\xbd\xb1\xe7\x88\xb0\xef\xcaW\xc5PZZ\
+\x0a\x1d?\xf6L\x04\x06\x87t<\xaa\x0b\xc2\x84F\x8d\
+\x07\xc8o\x02\xd9\xf9\xaa~\x9a\xf10F\x8e6 \xaf\
+\xbcJxCi\x00\x92(\x1d\x98\xcd\x95\xb3y\xc3}\
+=\xbf\xf9Dj\xa6].\x97CSK+D\x1c{\
+\xf7\xce\xf4\x14%\xae\xf1\x8a\xf5w\x9c\xf5p\x02\xc2\xd9\
+\x0f\x89\xd1\x81\x03O\x8e\xf7\xdc\xd2i\xe7\xf3\xdfu\xfc\
+o\x14.6\xd2\xef\xd8\x17iI\xbe,\x9d\xc8\xd3\x96\
+;\xa7\x0f1\x8c%\xc6\xdf\x9f\xbaw_q5\xa0A\
+l\xb5\x08\x8c\xf9\x94\xf1\xe0\xf03K\x9a|h\x13Z\
+\xbd\xce\xa3\xd9kOH\xf7\x0c\x0f\xb0\x0f\xfe\xf3\x87\xc8\
+\xf9/\xee\xb9In\x00\xf6{>\xed\xf7\x08\x1e*>\
+]\xe5X\xaa\xf1GZ\xf5\xb6Y\x0b\x11\x1d\xb3C\xc9\
+\x918\x099\xf9\xa9\x96!\xfa\x5c\x1a\x0d\xcf\xb3\xff\xff\
+7\xfcO\x13\xf8\x1d\xe7\x87\x19\xb9D\xc3\x01\xcf\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x120\
+\x1f\
+\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xed\x5cms\x1b7\x92\
+\xfe\xbc\xfe\x15<\xe6\xcb\xaa\x96\x04\xd1h\xbc*\xb6\xb7\
+l\xc9N\xa5*\xb9M\x9d\x93\xdd\xfb\xe6\xa2\xc8\x91\xcc\
+\x0dE\xaaH\xca\x92\xfc\xeb\xb7\x1b\xa3\x11\xe6\x85 %\
+\x99\xde\xad\xca\x1d\xc7\x96\x80\x06\xd0@?\xddh\x00\xc3\
+\x86^\xfe\xf5\xf6r\xde\xfb\x5c\xac\xd6\xb3\xe5\xe2U\x1f\
+\x84\xec\xf7\x8a\xc5d9\x9d-.^\xf5\x7f\xfb\xf5\xfd\
+\xd0\xf7{\xeb\xcdx1\x1d\xcf\x97\x8b\xe2U\x7f\xb1\xec\
+\xff\xf5\xf5\x8b\x97\xff5\x1c\xf6~(\x16\xc5j\xbcY\
+\xae\x8e{o\xa6\xcb\xb3\xa2\xf7\xe3|~\xbd\xdeDR\
+\x0f\x94\x90B\x0ez\x1f\xfe\xfeC\xef\xdd\xed\xd5r\xb5\
+\xe9\xfd2\xbf\xbe\x18\xfe\xb8\xe8\x89H\xfc{\xd9\xe7q\
+\xcf\x0a){o\xafg\xf3i\xcf\x80\xd6\xfe\xa8\xd7\x1b\
+\x0e\xa9\x8b\xf5\xe7\x8b\x17\xbd^\x8f\xc6\xb7X\x1f/\xd6\
+\xaf\xfa\x9f6\x9b\xab\xe3\xd1h\xb1\x16c\xeeNL\x96\
+\x97\xa3\x0f\xe3\xcf\xc5\xfb\xe5\xea\x1f\xc5\xd9\x08\x84\x1c\xf5\
+S\x8b\xe9\xe4\xa1\xc5\xd5\xf5j.\x96\xab\x8b\xd1t2\
+*\xe6\xc5e\xb1\xd8\xac\xa9:\xd4\xabOR\xf5\xc9\xaa\
+\x18of\x9f\x0b\xe2\x7f\xb9\x5c\xac\xb9%u\xfa]\xad\
+\xf2jz\xfeP\xfb\xe6\xe6F\xdc`\xac\x04!\x84\x91\
+T#\xa5\x86Tc\xb8\xbe[l\xc6\xb7\xc3fS\x92\
+j[S%\xa5\x1cQY\xaa\xf9\xb8Z\xc7\xb7\xf3\xd9\
+\xe2\xf7\xec`bi\xbdwR\xec\x15\xfd\x7fhP\x11\
+\xc4zy\xbd\x9a\x14\xe7\xd4\xb2\x10\x8bb3:\xfd\xf5\
+\xf4\xa1p(\xc5t3\xad\xb1!\xa6\xeb\xc9\xf8\xaah\
+\xf4[\x11K\xbc\xc6\x97\xc5\xfaj<)\xd6\xa3\x8a\xce\
+\xed\xeb\x96\x06\x910\x9b\xbe\xea\xff4\xbe+V\x1f\xcb\
+\xfc\xcdl\xba\xf9D\xc5\xca\xc7\xec\xa7bv\xf1i\x93\
+\xf2\x9fg\xc5\xcd\xdb\xe5\xed\xab\xbe\xec\xc9\x1e\x11{U\
+\xc1\x928\x9f\xcf\x977\xaf\xfa\x9fg\xeb\xd9\xd9\xbc\xec\
+\xaeX\x8c)9<\x1bO~\xbfX-\xaf\x17\xd4\xd9\
+\xa2\xb8\xe9\xb5\x1a\xb3T\xc7<Z\x12\xe8jU\xac\x8b\
+\xd5\xe7\xb2y\x05\xc0\xf1\xc3\xb0\xa5@\x15\x8b*\xa9\xea\
+E\xda\xfceZ|.\xe6\xcd\xb6\xd3\xe5\x84\xd0 \xd6\
+\x94\xb8f\xdb\x1b.\xaf\x8a\xc5pUL(-H\x9b\
+_:\xf5\xcf\xc6k\xaa?\xfamM\xbcG\xd3\xf1\xe7\
+\xd9ttZ\xac\x7f\xdf,\xafFk\x9a\x8ag\xcb\xdb\
+\xe6\x18\x96\xd7\x9b\xab\xeb\xcd\xc7\xe2vS,\xca\xc1\x90\
+\x0e\x92Bbq\xd9\xd5\x03\xb1\xc9\xa0\x883tx>\
+\x9b\x174\xd6=}\x8f\x1e\x04!,\x95\xb8Z\x5cl\
+ev;\xbd\x22;SJ\x98\xad\xc5w\xa9\xf8\xf5\xcb\
+iq\xbe\xae\xac\x81\xd3 \x99J\xc6[\x8cW?\xac\
+\xc6\xd3\x19\xf5\xc6\xe5e\x8d&\x1d\xd19\xaa\xbc\xa6\x11\
+\xc6*\x8c\xe5\xe6nNB0i8Y\xce\xc9C}\
+\x87\x86\x9f\xef#iI\xaa\x9em\xee\x8e\xe1\xfb~\xd5\
+by~\xbe.\xc8\xce$S\xaa\x8e\x22\x03b\x1f\xfa\
+\xbd\xd1\xde\x0ed\xfc\xec\xed\x00\xb6t\xe0!v0j\
+\xca\xb5]\xfe;\xf5\xaa\x1f\xd8eJu\xcf\xe9\x96(\
+\xde\xd7)w@\xfdH]\x95\x03\xb7\xb8\xcf\x5c\xdc3\
+\xfbm1\xdb\x90\x8b\xb9&-\x7f`\xc3\xff\xdb\x82\x14\
+\xde\xcfC\x0c\xd8\x7f\xfd\xe2O%\x06\x8d\xb1\x03iw\
+; \xde\xfb7>\x96&tI\xce\x0c\x1b\x97es\
+\xe2\xdf\xf9\xd0d#\xa4Q\xc6hc\xf3\xfcB\x8e\xdf\
+\x9b\xb7oN\xdet\xf8Y\x87Y^\x0ar\xbcN\xcc\
+\x89=\xd1-^\x80\xda\xe5ya\x8e\xd7\xe9[z\xde\
+\xb4x)\x00\x93\xe7\x95\x85\xfe\xdd[~Z\xbcP\x82\
+\xca\xf3\xca\xe2\xff\xde\xd1c[\xbc4\xa8\x1d\xbcB\x96\
+\xd7)?-^\xc6\xba\x90\xe5\x85\x90\xe5\x15?\x0d^\
+\x10\xd9\xec\x9bG9#\xb7N\xcb\xfe#\xa6\xb9\x1e\xeb\
+is\x9a\xcb\xc7\xf8\x11b\xaf\x92\x1f\xe9\x16\xfa.\x0f\
+r\x8d;G\x82AO\xdb\x0e\xe7q\xae\x0a\xa6\x8f\x90\
+\x01\xb6\xc9\xa0\x1f\xeb\xaa\x92\xaf\xf9u5^\xacig\
+q\xf9\xaa\x7f9\xde\xacf\xb7\x7f\x96\x03\x18\x0ca \
+\x07C\x0c\x22\x04o\x06\xa0\xa5\x90R\x85\xa3~rs\
+C\xf4H\xa5\xce\xd4\x1c\xddP\xa10`A\x85\xaa\x22\
+\xa4\x8aPUd\x9a\xd7\xccPK\xfc:\xcf\xe7\x00\xfa\
+\xdbuFE\xb8C?7\x9ff\x9bb\xffzCp\
+f\xd9\x9b}\xec\xf7\xabp\xbb\xb6h\x9d\xdf\x14\xabX\
+9\xad\xcb\xc4w^L\xa8\xd1x~3\xbe[\xd7 \
+)\xab;v\xd2\xd4\xb6\xf8a|\xbd^\xcf\xc6\x8b\xb7\
+\xf3k\xe6\xb1\x9bK\x92`zZ|\x9e\x8d7q{\
+\xa2\x84\xf7\xd2\xf8\xe0\x1a&\xd6d\xed\x10B9\xfc\xb2\
+\xff\xd7/'\xf3\xd9\xd5/\xe3\xcd\xa7\xb2M\x95\xdb\xa7\
+\xd0\xaa\x9e\x01\x8b}b2[M\xe6E,\xae\xef\xba\
+Vw\xaf\xfah\xfb]\xfa\xedv\xfa\x84\xea\x07\xb5\x85\
+\xce\xf55\xb2U\x87\xd0\xd2\x1f\x039?\xa6\xc3\xc8\x9f\
+\xbfkj\xc4\x80uG\xdfsi\xb2\x95\x87\xb6\xab\xc6\
+\x00x<\xbc\xd8\x83\x94R?P\xb7\xf7\xda\x1a#\x8b\
+\xd8m\xca\x10\x95\x98\x18\xb0\xa6\x04\xbc\x82\xec\xb1\xaeS\
+\xab`3\xb3\x84\x8a\xb6x\xb6\xdd~m2>?\xcf\
+\xf9\xb5n\x07(e\xc6ue;P\xdav\xb6\x82\x8f\
+\xf4k\xfbm=\x9e\xb9\x8e?\xad\x0a:#~\xb7\x05\
+\xa7<\x88N=\xc1W\xb1\x93C\xe5\x05(\xad}}\
+\xe3\xa7\xa4\xf0\x00\xc6\xd7\xbc&\xa2\x15\xc1K\xe7j\xde\
+\xd5;\xe1L\xd0\x06I\xf0o\xeb\xbf\xa1\xee\xbfAQ\
+\xbd\x7f\x97\xf7\xd6\xce\xc9\x9c]:\xa7v\x19\xc9y\xfc\
+<\xdf\x7fs\x07z\xb7\x15\x9e\x9bb\xfa\x5c\x0f\xce\x89\
+\xf1\xfc`v\xc98%\x10\x9b\xcc}P\xf2\xb1Z\xe8\
+\xba\xa2\xae#:\x8f\x15\xacP:X[\xd1\xd85\xa1\
+\xf0DA6\xd2\xe4\xf7\xf6\x99\x22\x08\x1d\x14\xa2\x0c\x03\
+)\x94r\xca\xbb0\x18J\x81\xc4\xca(;P\xc2\x18\
+\x8f\xde#\xd9+\xa20\x80H\xa6\xab\x140\xdd\xa8\xa3\
+?\xb0\xf1\x9b`|\xc6\xf8M\xb0{\x5c\xb0\xd6~\xf2\
+|\xe3\xe7\x0e\xd4\xee\x0elq\xb6\x7fv\xc1\xb7u\xca\
+\x09\xa7,\x88>\xc0\xe3\x8f\xce\xcf\xb7\x9a\xa4z+@\
+I4\xbai# d\x08\xaaaK\xc6\x0a4\xce(\
+h\x18\x9dC^\x10\xd8\xa7?s\x97\xa7UP\x87\xdb\
+\xe5\x81\x95Z+\xcc\xef\xf2\xb8?]\xdf\xe5\xe5\xdfz\
+\xc8\x9a\xf4\xaa\xbe\xe2\x19'L\xc2\x90\xca\xbej\xda\x80\
+\xb7\xd6\xf3\xcb\x8e?u\xcf\xa3T\xc6\x8e2\xbbbL\
+&[l\xba5a\xf2\x9ci\xc6<q\xab\x9f\xe6I\
+\xc9\xf7\xf1G\xdf\xff\xfd\xf9\xa7\x1fO?\xaa\x8fO\xda\
+pdqO:I\xcaJr6\x10\xc8\x1f\xe7\xdf\xbd\
+\x91\xb14a\xa2\xdap%\x81\xf3lNN\xdalt\
+B\xe7\xc0\x8e\xa4D1|\xcc\x1a\x93R\x01\x9e\x08q\
+\xd0\x025\xd6q\x06\xa9\x88\xa4]\x0dko\x85Ac\
+\x13\xe0\xdc\xcc\xa0\xb5$\xea\xa1\xc4\x02\xb9S.|\xaa\
+\x5c\xa6!\x12\xb6\xa4\xf1\xd64\xa5a\xca!\xa5\x81\x9d\
+\xd2\x98\x03J\xe3DD'\x09c\x98pHY\xd4N\
+Y\xdcSe\xb1\x0dYt\xfe\xbdrz\xf7|@i\
+v\x0b\x13\xbe\x99\x87\x22\x11\xd2>\xfa\xebD\xf0\x1f\xb3\
+\xbbg\xde\x93\x1ef\x03!\x82\xf3N\xa1\x1eH~D\
+\xf0@\x8f\x1a\x80@\x0bNjC)\xb0H\x8f>\xaa\
+m\xc5A\xaa\xda&\x1c@\x09\x94\xba\xb6\xc5\x06\x0cq\
++\x1c\x0e\x08\x87\xdb\x09\x87\xf9:86\x9c\x9c\x8f7\
+\xc5\x9f\x95\xd0\xc5\xd0\x0e\xe4s\xc4=\x88\xb4[6\x0e\
+Y\xc1Qa8\x88\x1d@\xd4?\x08\x15\xc0\x82\xd4\x83\
+!\xfd\x03\x12\xca\x05\xf4u$P\x0a\x09\x12\xb0~\x06\
+C-\x9c\x91\xa0+\xda\xf9\x96z\xe7\xddz\x0c\x9c\x92\
+\xc2yP\xe6\xf9;KT\x1a\x0e\xb5\xb3\x04!1h\
+\x03:\xbf\xb3\xe4\xfe0\xb3\xb3<\x88\xbe\xd1\x01\xe4=\
+\x97\x06u\xa0s\x03\x01\x8f\xde\x83\xf5\x83aJ\xd29\
+\xc2\x08\xa3\x945\xc6\x0d\xac\x13\xca\x18\x1bZG\x89x\
+\xbch8\xf7! \x88\x80\x00\xaa~\x92\xd0F\xc8`\
+\x8d\xd7\xc9;\xa6\x9a\x87\xf1\xf4\xddoZ\xb2\xc8\xa1\x94\
+X\x17C\x0b\x08\xfc\xf1u9\x94\xaf\x09\x00\xca\x0bU\
+\x1f\xfb#O\x00\x87\x17LG\xb8\xf3\x82\x99\xff\xc8\xfb\
+\xbd\xe7\xcfX\xa9\xe5\xa1f\xac\x14A\x928\xde\xc3\xae\
+)+\xb5\xaaO\xd9g{\x9atT&s\x90\xc28\
+\x0d\x01M\x84?\xc5\x98(\x01\xda\xa3wP\xa1\xd6\xa9\
+\x9b\x02PR\xe5\xc3\xb9\xb0\x00\x18\x9c7;]\x98\xc2\
+\x83\xe0\xe1\xcc\xe1\xce\xf4\xcaxi\xf5\xeea;w\x90\
+a\x87p\xc0\x05\xc3j\x87z\xa7\xf5\xa1\x84\xfa\xb0\x0f\
+\xbdA@\x04\xcc\xef\x0f\x10\xa0\xb6z\x07%$\x00\x1a\
+\xac\xaf\xdeF\x04\xef\x94L\xabw\xb7\xdey\xb3^Z\
+\xbd\x0f\xb3\xf7\x10F*\x04\xe3\x06RxT\xa8iM\
+b\x1a\x06\x0bj\xa0\x84\x03m\xc0\x87\x81\x13A\x05c\
+%R1z\xa1h8p\xf4\x15~\x08\x1d\x1e\xce\x10\
+x\xd2\xe9\xb0\xd3~\xd1\x99ok\x08\xce\xed0\x04\x8f\
+\x8d\x0d\xadL&Pn\xd6\xbc3\x95\xb6\x1b\x15\xce\xbb\
+\x15x\xc7\xab\x1e\xb9\xa5d\x95\x82s\xd2S\xda\x08i\
+x\xf3\x80G\x07XI\x0f\xbe\xb9B\x0c\xfa\xff7W\
+\xcfD\xce\xfd\x87\x91\xb3A\xa03\xe8\xa1\x09\x9d\x13\x1a\
+\x94\x0eu\xe8\x94\x15\xd2*\xef\xd3\xae\xa6Q3NP\
+\x0e\x16|\xfd\xf2\xe1\xdbw\x0e^\x9cr\x8ch#\xe2\
+\xf0f\xb6\x98.o\x86\xd5R\xce\xefp\xb7\x95W\xa1\
+\xa7R\xa9f\xf9\xd5\xf8\xa2X\x7f\x1aO9\xbatK\
+\xd1\xfdKY\xde\xe3\x94\x8c/\xaeg\xd3b\xb3\x9c\x17\
+\x04\x1b\xc7\x94\xc2C\xc1j6\xddF_\x9e\xfd\x93t\
+\xbc\xad\xe4l\xb9\x9a\x16\xab\x87\x1e\xa0A\x8e\xef<\xc9\
+\x00l\xfc\xc4\x02\x1eOE>\x8f\x9f\x87w\xa1\x1cT\
+\xda\x1c\xfc\x97\xe5\xf2\xb2#Q\xe9t\x9c\x90\xd2j\xdf\
+*\xa2\x118)\xac\x0aA\xda\xad\x10R[\xcc\x14E\
+\xe7dZ\x0c\xafW+\x8e#\x9ds\x00p3\x0ex\
+\xfdiy\xc3p\xf1\x81\xff\xbax@o\xcdH,.\
+\xa8\x1f}u\xdb\xa6\xde5\xa9\xc5\xe5\xd5}\x01\x09\x99\
+\x98\xb2r\xd6\x89m\x1aM,\x19\x9eQ\x84kYJ\
+KN*#~\xa5\x15n\xee8\xee\xf9\xf6\x8e)\xb5\
+y\xc6Y\xa5e\xe5\x10:\xe3L\xb4\xbb:\xad9\xc6\
+h\xd2]c\xa6\x98\xb6\xcbb3\x9e\x8e7\xe3J\x99\
+U\xbe\x0c\xcb\xe4\xc8\xee\xf3\x1bJ\x95\xc9\xf9\x8c\xe2\xae\
+9\x97\xb2\xdc\x8e-\xb4\x0cw\xa6D7\xba\xba\x1b|\
+\x1d[\xfexJ\x04\x04\xeb4*L\xaf\xd2S?\xf5\
+^?\xc4(\xf2\xb7\x1ci\xbd~V\x97gK\x9a\x06\
+\x97?\x15\xe7\x9b\xbf\xadf\x17\xb3E\xa9\x09\xea\xb5\xea\
+fy\xb5\x99]\xce\xbe\xc4\xd5\xfcC\xb1\xd9\x10rI\
+\xd4\xcd\x98\xc2\xd77\x15\x99\xf95),K9\x0c\x8e\
+t~O\x0emLC\xf9\xe5\xbf\x7fP\xba\xcc0\x9a\
+\xf7\xbcj\xd4\xc8\x88f&i\x8a\xccurW3\x9e\
+r\x83P\xf0\x16b<_\x974j\xb1)N\xcaI\
+X\x0fS\x5c,\x7fN%\xa9>\x19 \xb1\x98\x8f'\
+\x89K\x1c\x05\xa3\xdc\x1c\x07\x91\x99\x98\x04}\x8e\xfc`\
+\x83uh\x94\x81?\x22\x10L\xceZ\x09\x95U3\xe5\
+%]\xd08\xfe\x9f\xd3\xf7\x14\x0f69\xfe\xc7r\xf5\
+{9\x1d\x99:>[^\x13\x18\x1c\x95>9>/\
+\xfb\x9b]\x92_\xe5\x9b\x17\x7f\xa1\xab\x02/G\xa9\x80\
+\xeb\xb0G\xe0\xe6\x15\x83UQ^\xa6\xd8v\xff\x84\xfe\
+]\xce\xb8\xc1\xe8\xc3\x86\xc2\xbd~d\xbe\xe5\xb4\xbf\x1f\
+\x07\xa5\x1e\x866\xaaf\xf9\xeb\x17/\xba[\xd0\xe8\x07\
+\xd2\x0b\xd7\xfa\x0b\xd0\xce\xeb\xcf\xd6\xcb\xcf\x17{\xd6\x7f\
+\x06\xfe\x09\xdf\xddIi\xd0\x9d6\xbft\xab\x87f\xb7\
+b\xad\xc1@\x8e\x13x\x8b>49\xf9<'\x12&\
+\xc7\x89\x8aN\xde\xf8\x06'%\xf3\x9c\x82\xd59N>\
+\xbcy\x7f\x82MN*\xcb\x09\xd0\xb8\x1c\xa7\xb7xr\
+r\xda\x1a\x93\xcesr\x98\xe5t\xaa\xdf\xa9w\xa1\xc9\
+)\x8f\xb8\x92!dC\xc5O\xde\xab\xf7\xa6\xc9\xc9\xe7\
+9i4\xd9\xaf^\x09\xa6\xf7M+@\x99\xe7\xe4\x94\
+\xda\x1f\xda\x9d8\xa9\xfb\xd8\xee\xe64\xd871\xfc\xd3\
+&F8\xf4\xcc0h\x8cqMI\x5c\x89\xc9v\x9d\
+\x03Z\x0b\xda\xe4m\xd1\xbf\xf1'\x0d~\x1a*~\x19\
+\xdd\xab`\xad\xf7y\xfd\xd3\xd3\xe2\xe8\xf2ZC\x8by\
+\xfd\xf3\xd3\xe4\x14\x0e\xa5\x7f\x03YN\x06\xe1)c2\
+\x98\xe5\xe4\xb5\x0e\xf9+\x15\x1d\x9c\x8c\xc9p\x82,\x13\
+\xa0i\x8bM&.k\xd8\xdds!7J1\x07\xfb\
+\x0fq\xed\x90\x82N@A;\x9c\xa0\x15L\xb0\x15\xa6\
+'h\xcd\xaa\xa7\x22\xc4\xd3\xc5`\x93\x89n\x5c\xebx\
+,B \x9f\x04\x91\xa9\xa1C\xfd\xb7#\x13\x9aq\x09\
+_\x0fL8\x000\x0e\x9e\x07\x0c\x1c\x02\x98\x14\xe4\x90\
+B\x1c\xbe\x1a\x16g\x9f\x0a\x0b\x06|\x8b\xbe\xc9\xc4?\
+\x0f\x16\xf5$X,'S\xc4D;^\xa2\x19-\x91\
+\x07&\x7fq\xae!\x93\xcf;-)\x9d\xda\x7fw.\
+q2yN\xd6\xe1\xfe[s\x89\x93\xdb\xb1\x09\xd2n\
+\xff\x9d\xb9\xc4i\xc72\x01`\xf6\xde\x98K\x9c\x02d\
+9\xa1\x04\xb5\xff\xbe\x5c\xe2\x94G\x5c\x83R\xfbo\xcb\
+%Ny\xc4\x8du{\xee\xca59\xe5\x10\x87'\xcc\
+\xb1\x102\xd3\xe3\xe5\x15\xdd\xf8\xa8jr\xda\x9aP\xea\
+\x89\xf2?\xf7\x14\x0eB\xef'\xfa%\xa4\x96\x1e\xec\x00\
+\x14P\xdek\x01N\xc5\xcc\x09g\x9c,3\xde\xb0\xee\
+(\xc9q\x03\x81\xb3\xc6\xdb\x98\xd5\xa0\xa9\x1d\x80\xe7\xd4\
+\xc0;.\xa0\xb6D\xe0\x9aD\xe0\x86\x94\xa5\xa4ev\
+U\x92\xba\x89\xed\x02\x8f\xa3\x1c\xce\x97^]\xf0\x87\xe0\
+Ha\xe2]\x9a\xeaNn\xebb\x0de\xf9\xa8Z\xde\
+\xc3I\xa1\x09G\x91\xd5f\xcbw\x1eR\x83\xb5\xd6\xdd\
+\xc7]H4\x0e4\x0e\x86A\x04\xe3\x11\x91\x92(P\
+\x81A\xadJ&\xe9\x0d\xcerZ\xf0a\x8f\xfc\xc8\xe4\
+\xfe\xc3\xe0WHw\xaf\x05u\x83e\x8e\x92\x06 :\
+\x13I\x00{\x02 \xe5\x08T\xca;\xc7\x08U\xf9\x13\
+\xce;\xf9\x90w\x9eQ\x8d9\x08\x8c3Q\x18\xf8\x8a\
+R)\x05J\xa5\xd8\x07\xa5@\xa9\x14{\xaf\x14\xea\xdb\
+0\xdf*Y)\xa5=&\xcf\xba\xa9\x1b\x13\xeaCC\
+\xa3:7\xa6\x12R\xbe\x0c\x962\x03`(\xd8\xd40\
+h\x1d8\x0b\xfe\x017)\xb4\x96\x1em\x93\x16\x03\xab\
+\xa24\x89\x0aN\xc8H=iQ\x8d\x95`\xea\x1d\x80\
+\xaf\xf7\x1e\xf98+|\x00\xa7\x1d\xe7K\xcd\x80\x0e`\
+\x80\xf3\x9c\xd3\x12\xac-\xf9\xf9`\x022\xcdxtR\
+G\x9a\x03\x85\xc8\xe3\x91\x81\xd2\xa8\x90\x81\xd7\x1e\x14\xf1\
+b\x9a\x0fVY\xa6\xa9\xe0H\x16\x90\x9c\x96\xda(\x87\
+eN\x0b\x1a\x8e4&jJ\xd6d<\xe1|\xc2!\
+r3\x16\x0c\x12-f\xa4\x02\xe59\xf3S\x03\xd3\xb6\
+rMH\xba\xab+\xb9|W:^M\xb6MS\xd8\
+1I\xa5\xb0^j\x87\x18(\xeey\xb5\xfc\xbd {\
+Y\x14\xf7\xe9\xf2E=\xd5\xd1eS\x90\xf7\x1fUU\
+`\xd7F\xafm\x8f\xe3\x9f|\xa8\x13\xff\xb9\x9c-\x9a\
+\xd4\xcb\x19\xbfs\x9a\xd1\xafc]\xd1\xa6cz\xdb\xbf\
+Z\x8d\xef\x1a\xbd25:\x5c\xaa)\xc0\xc8\xfa\x07m\
+Uk\xa7\x9b\xe1\xf9\xdc\x9c\x15J\x99\xe6\xbcH\xdf\xf9\
+\xd5\x89\xe9rb\xe3b\xa2\xf2-\xda\x1d\xd3\xd2<`\
+\xe5\x91Z\xdf\xf4\xe8\xb7\xf2=\xd2)=NuhU\
+\xc5/Y\x1f\x08\xe8}\xb0\xa5\x0b\xac2C\x05\xc2\xb3\
+\xc1\xc6o\x81\x81>\xd6\xf9\xf2k\xde\x8bJ\xc8\x0b\x08\
+\x0e\x13\xd7|\x08_\xb2\x9e-\xfe\x1c\xbeO~\xa0\x1b\
+`\x1d!\xad\xaf[\x11\xa9\x0a\x83\xad>\xcd\xdaH@\
+\x929 \xbb\xf4A\xc0\x9e\xf7\xf4\x93*p\x81\xb6\x91\
+Bt\xcd\x99\x98\xb2\x5c\xc6\xe6\x0f\xdc\x82\x1c(\xb7g\
+\xef\xc9\xec\xee\xfdi\xde\x99~\xe9\x112\xcf\x97\x12\xdb\
+R:\xecJ\x99\xf7\xdc\xc1\x09\xad5I\x13\xa5\xd4\xa5\
+\x94>\xb8H\xb1\xf4\x9331ec\x19Ii\xb8\xc5\
+\xfd\xc2\x91V\x8do+\xa5iK\xe9\xe5~]\x1ad\
+\x02j\xc7RzI2\x99(\xa5aIX\xee\x92\xc2\
+?9\x13S6\x96\xb1\x94\xdc\x22\xea2\xfa\xe7\xc0\xec\
+\x9e-\xe5\x0e\xc9\x5c[2\x90P\x13\xad\xdd\xe5I\x9b\
+\x10\xa40\x83\xe8\x9f{\x81\xb5\xc3U\x88\x05\x11\x03U\
+l\x0d\xb0\x03T\x9b@mT\xb4h\xef\xef\xb1`/\
+o\x89\xd8\xea\xb7\x95\xad$\x1f]\xd0q*]\xa5\xee\
+^\xa3\xce\x5c\xa1\xee^\x9f\xce_\x9d\xde\x0f\xab\x0f`\
+\xbb\x9b\x80tup\xebu\xe9n/i,\xed+\xd2\
+\x8d\xeb\xd1h<P\xb0z\xc6E\x0e\xa5\xf0\xc6kB\
+U\x0a\x85R\xc6-bJ\xa6b-\xbd\xd0\x04\xa9\x19\
+\xa0!\x9a\xd4\xda\x1d=c\xf5\xe4ppc4j_\
+\x9bO\xdd\x90\xa26<\x7f\xa8\xe5\x14\x1d\xb6\x96S\x94\
+\xd8\xb5\xa9\xa0\x1e\xb9\x9a\xca\xeej\xca\xb4\xe4}\xaa\x95\
+S\x0e\x94L\xabi\x9b\xc6\x15\xf7\xac\xa6!\x18\xfa\x17\
+\x97\xd3\x94\x1b\x82'\x1dX\xcb\xeb\xa9#H\x8c2J\
+'\xdb\xc8l\xa1r\xba\xf7\xf8\x87\xd1}R\x81\xf7\x84\
+\xb2\x90\xe8h/\xcb\x19-\xcb\xd3GJ\xa0\xa2D\xb0\
+\xd5\xeff\xf5*\xf3\xe5\xc1jV\xc5\x84\x03s\xdd\xbe\
+\xc3\x09k!\xf9\xbb\xf8\xb7'\x86\xac\x94W\xfd\x08~\
+\xfdoL\x1c\xed\xf5\x10\xc3\xad.b\x9b\x87\xb0|R\
+0>\x1c\xb5|\x91v\xcef\x1cV\xf2f]W\xd7\
+u\x87\xc9Uv\x1dL\xe9Y\xa2\xe22\x96\x14e\xef\
+F9\x1f5\xad\xcb\x0ag\x00=x\xf7\x14K\xd9?\
+\xff\x1d\x82;\xda\xb1\x84dW\x9c\xfc\xca\x94V\xb0\xfc\
+\xaccd\xf2{\x18\x0d;\xce\xa5A\x89h\xe2n\xe0\
+\x05h\xaf\xa4S\xbc\xf6Ja\x8dF\x055\xaa\x03\x01\
+\x0e\x83V\x03\xb0\x02L\xf0\x80=\xeb\x85\xf7>(\x1c\
+(+\xbc\xb2Zqk\x87Bk4^\x0f\x10\x045\
+Ep=O\xfdx\xc3/i\x90\xb0@g\x10R\xdf\
+\x89v\xbf\x85\x08\xa0U\x9d\x0a \x851V\x87\x1aG\
+\x00\x13w\xf8\xa6\xd17\x80\xe2\x0c\xe8\xda(A\xa2@\
+m\x9cI\xd2l\x95\xfbK\xcb\xa4\xc1:g\x0fp\x8c\
+|\xb2\xcb\xfbwz\xba\xc7\x9d\x12\x15\xb4\x965\xa9\xdd\
+\x96em\xcb\x96\xcaw\xed[w\xcd[\xd7\xd64)\
+\x07\x9e\x96/=\xd0\xf7\x8bWP-B\xac\x92]\xcc\
+\x08Gt\xe5Jv\x9f4r`\x85I\xeb\xd6\x1e\xcf\
+\xdaZ\xc0\xbd\xf9\x06\xde\xfe\xff\xee\xd2\xb9\xc7\x8f\xc9\xe6\
+Gg\xfd\x1abpy\xbf\xe6}/\x82\x0d\xaa\x84\xbe\
+\x87X\xde\x16c\xef\x16\x04J\xf4\xda1\xd1{#=\
+\xf2a\xc6j\x00`R`\x15\x05U%\xa9E\xb0\x22\
+H'S);)\x1d\x8c\x8c|\x95B\x17,\xd1\x8c\
+\xd0\x5cx\xaf\xfa\xeaws )\xd7~\x1d\x89AF\
+l8\xa8\xe7\xf5\xbf\x00\x1d$M\x88\x06W\x00\x00\
+\x00\x00\x03\xee\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xbaW\xed?\
+\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\
+\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\
+\x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x01\x8f\
+PLTE\xff\xff\xff\xdd\xe1\xe4\x97\xa2\xad`p\x80\
+FYlCWjWhy\x86\x92\x9f\xcc\xd1\xd7\xfc\
+\xfc\xfd\xf8\xf9\xfa\xa8\xb1\xbaN`r0EZ3H\
+]<Qf=Rg5J_/DYATh\
+\x8c\x98\xa4\xec\xee\xf0\x90\x9b\xa74I^7Lai\
+~\x91\x9b\xaf\xc1\xb1\xc5\xd6\xb3\xc7\xd8\xa3\xb7\xc9x\x8d\
+\x9fAVkn|\x8b\xe9\xeb\xedBWk\x9a\xad\xbf\
+\xce\xe1\xf0\xd1\xe5\xf5\xd0\xe4\xf4\xcf\xe3\xf3\xad\xc1\xd2T\
+i}.CY\x7f\x8c\x99\xdd\xe0\xe4\x9a\xae\xbf\xdf\xec\
+\xf7\xe1\xed\xf7\xd4\xe6\xf4\xce\xe2\xf2\xd1\xe5\xf4\xb2\xc6\xd7\
+H]q7K`\xbe\xc5\xcb\x96\xa1\xac\xe4\xee\xf7\xd7\
+\xe7\xf4\xcd\xe2\xf2\x8b\x9f\xb1/EZv\x84\x92\xfb\xfc\
+\xfc_p\x80\xd4\xe6\xf3\xd1\xe4\xf3\xd2\xe4\xf3\xcf\xe2\xf2\
+\xd0\xe4\xf3\xb7\xcb\xdcM_q\xe8\xeb\xedFYk\xdf\
+\xec\xf6\xcf\xe3\xf2\xc6\xda\xeaSh|>Qe\xd8\xdc\
+\xe0CVi\xb3\xc8\xd8\xc7\xdb\xebUj~<Pd\
+\xd6\xda\xdeVgy\xbd\xd1\xe2F[pGZm\xe3\
+\xe6\xe9\x85\x92\x9e\x9a\xae\xc02H]hx\x87\xf7\xf8\
+\xf9\xcc\xd1\xd6AUh\xac\xc1\xd2\xc1\xd5\xe5Xm\x80\
+1F[\xaa\xb3\xbc\xfc\xfd\xfd\x8d\x98\xa4Ti|l\
+\x81\x94cs\x83\xf0\xf1\xf3n}\x8c\x8a\x9f\xb1Xl\
+\x80_o\x80\xe9\xeb\xee\x7f\x8d\x9a7L`/DZ\
+AVjSg{fv\x85\xf9\xf9\xfa\xbf\xc5\xcci\
+x\x87\xe4\xe6\xe9fv\x86-CXgv\x86fu\
+\x85gw\x86\xde\xe2\xe5hw\x87eu\x85\xdf\xe2\xe6\
+w\x84\x92x\xf3\xbaI\x00\x00\x00\x01bKGD\x00\
+\x88\x05\x1dH\x00\x00\x00\x09pHYs\x00\x00\x00`\
+\x00\x00\x00`\x00\xf0kB\xcf\x00\x00\x00\x07tIM\
+E\x07\xe7\x03\x09\x06\x142\x1f\xc9N\xa7\x00\x00\x01#\
+IDAT\x18\xd3c`\x00\x02F&f\x16V6\
+v\x0eN\x068\xe0\xe2\xe6\xe1\xe5\xe3\x17\x10\x14\x12\x16\
+\x11\x85\x8b\x89\x89KHJI\xcb\xc8\xca\xc9\x0b)(\
+B\x05\xb9\xc5\x95\x94UT\xd5\xd4\xd4\xd454\xb5\xb4\
+\xb9\xc0b:<\x12\xbaz\xfa\x06\x86@`dlb\
+j\x06\x164\xe7\x95T\xd1\xb7\xb0\xb4\x02\x89\xaaY\xdb\
+\xd8\xda\x81\x04\xed\xf9\xa4T\x1d,\x1d\x9d\x9c\x81\x82.\
+\xae\xf2n\xee A\x0f~i5C+'O'\xa0\
+\xa0\x97\xb7\x8f\xaf\x1fH\xd0_ @\xcd\xd0\xd0\x19\xac\
+\xd200(8\x04$\x18*(\xabf\x08\x05\xeaa\
+\xe1\x11\x91 \xc1(!9u\x98\xa0jtLl\x1c\
+H0>A>\xd1\x08\x22\xa6\x96\x94\x9c\x92\x0avR\
+Z\xbaP\x86\xb1\x9a\x8b\xba\xa1\xbajR&oV6\
+\xc4G\xa29Z&\xb9\xae\xde\x81a\xd1y\xbcZ\xf9\
+\x91P\x7f\x16\x14\x16\x15\x97\x94\x06\x85\xc7\xa4d\xd9\x0b\
+\x95\xc1D\xcb+l\xdd|\x83#*S\xb3\xab\xaak\
+\xe0\xa2\x0cv\x8a~!\x91 {#kk\xea\x22\x19\
+\xd0\x01P\xb4\xbe\x01C\xb4\xaaQ\xa8\x09C\x90\xa1\xb9\
+\xae\x05\x00\xcf\xbe>\xfb#\xb9\xea4\x00\x00\x00%t\
+EXtdate:create\x002\
+023-03-08T17:27:\
+26+00:00\x9e\x98\xa5\x85\x00\x00\x00%\
+tEXtdate:modify\x00\
+2023-03-08T17:27\
+:26+00:00\xef\xc5\x1d9\x00\x00\x00\
+(tEXtdate:timest\
+amp\x002023-03-09T0\
+6:20:50+00:00\xdd\xe8\xb2\
+\xde\x00\x00\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x05\
+\x00j\xc4c\
+\x00d\
+\x00e\x00m\x00o\x00s\
+\x00\x0e\
+\x00\x97\xbf\xa2\
+\x00d\
+\x00o\x00c\x00u\x00m\x00e\x00n\x00t\x00v\x00i\x00e\x00w\x00e\x00r\
+\x00\x06\
+\x07\x03}\xc3\
+\x00i\
+\x00m\x00a\x00g\x00e\x00s\
+\x00\x0c\
+\x0dJ\x02g\
+\x00p\
+\x00a\x00s\x00t\x00e\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x11\
+\x0e\xab3G\
+\x00z\
+\x00o\x00o\x00m\x00-\x00o\x00r\x00i\x00g\x00i\x00n\x00a\x00l\x00.\x00p\x00n\x00g\
+\
+\x00\x0c\
+\x02\xb1%j\
+\x00g\
+\x00o\x00-\x00n\x00e\x00x\x00t\x00.\x00s\x00v\x00g\x00z\
+\x00\x0f\
+\x0a\x12\xe5*\
+\x00h\
+\x00e\x00l\x00p\x00-\x00a\x00b\x00o\x00u\x00t\x00.\x00s\x00v\x00g\x00z\
+\x00\x10\
+\x0a~p\x07\
+\x00m\
+\x00a\x00g\x00n\x00i\x00f\x00i\x00e\x00r\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x1c\
+\x02\x8c\xf4'\
+\x00g\
+\x00o\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00-\x00v\x00i\x00e\x00w\x00-\
+\x00p\x00a\x00g\x00e\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x14\
+\x03\xba\xd1'\
+\x00z\
+\x00o\x00o\x00m\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00@\x002\x00x\x00.\
+\x00p\x00n\x00g\
+\x00\x13\
+\x05\x93\x9e\x87\
+\x00g\
+\x00o\x00-\x00n\x00e\x00x\x00t\x00-\x00v\x00i\x00e\x00w\x00@\x002\x00x\x00.\x00p\
+\x00n\x00g\
+\x00\x0f\
+\x0f\x91\x8b\xc7\
+\x00z\
+\x00o\x00o\x00m\x00-\x00o\x00u\x00t\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x14\
+\x04jv\xe7\
+\x00z\
+\x00o\x00o\x00m\x00-\x00f\x00i\x00t\x00-\x00b\x00e\x00s\x00t\x00@\x002\x00x\x00.\
+\x00p\x00n\x00g\
+\x00\x12\
+\x01\xfcL\x07\
+\x00z\
+\x00o\x00o\x00m\x00-\x00f\x00i\x00t\x00-\x00w\x00i\x00d\x00t\x00h\x00.\x00p\x00n\
+\x00g\
+\x00\x14\
+\x06\x10\x9a\xe7\
+\x00g\
+\x00o\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00-\x00v\x00i\x00e\x00w\x00.\
+\x00p\x00n\x00g\
+\x00\x08\
+\x06\xc1Y\x87\
+\x00o\
+\x00p\x00e\x00n\x00.\x00p\x00n\x00g\
+\x00\x18\
+\x0d\xd6\xb5G\
+\x00g\
+\x00o\x00-\x00n\x00e\x00x\x00t\x00-\x00v\x00i\x00e\x00w\x00-\x00p\x00a\x00g\x00e\
+\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x0b\
+\x03\x03\x9bG\
+\x00z\
+\x00o\x00o\x00m\x00-\x00i\x00n\x00.\x00p\x00n\x00g\
+\x00\x14\
+\x05\xda\x8d\xc7\
+\x00z\
+\x00o\x00o\x00m\x00-\x00o\x00r\x00i\x00g\x00i\x00n\x00a\x00l\x00@\x002\x00x\x00.\
+\x00p\x00n\x00g\
+\x00\x11\
+\x0c2UG\
+\x00z\
+\x00o\x00o\x00m\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00.\x00p\x00n\x00g\
+\
+\x00\x0a\
+\x03\x96\x0eG\
+\x00c\
+\x00u\x00t\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0f[7G\
+\x00z\
+\x00o\x00o\x00m\x00-\x00i\x00n\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x10\
+\x06O7\xc7\
+\x00g\
+\x00o\x00-\x00n\x00e\x00x\x00t\x00-\x00v\x00i\x00e\x00w\x00.\x00p\x00n\x00g\
+\x00\x0b\
+\x03w\x8f\x07\
+\x00o\
+\x00p\x00e\x00n\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x0c\
+\x06\xeb\x97\xe7\
+\x00z\
+\x00o\x00o\x00m\x00-\x00o\x00u\x00t\x00.\x00p\x00n\x00g\
+\x00\x15\
+\x0f!\xb3\x87\
+\x00g\
+\x00o\x00-\x00n\x00e\x00x\x00t\x00-\x00v\x00i\x00e\x00w\x00-\x00p\x00a\x00g\x00e\
+\x00.\x00p\x00n\x00g\
+\x00\x09\
+\x00W\xb8g\
+\x00p\
+\x00r\x00i\x00n\x00t\x00.\x00p\x00n\x00g\
+\x00\x15\
+\x02/h'\
+\x00z\
+\x00o\x00o\x00m\x00-\x00f\x00i\x00t\x00-\x00w\x00i\x00d\x00t\x00h\x00@\x002\x00x\
+\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0d\x1d\xfd'\
+\x00q\
+\x00t\x00-\x00l\x00o\x00g\x00o\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x0b\
+\x05R\xbf'\
+\x00q\
+\x00t\x00-\x00l\x00o\x00g\x00o\x00.\x00p\x00n\x00g\
+\x00\x10\
+\x03g\xb5*\
+\x00g\
+\x00o\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00.\x00s\x00v\x00g\x00z\
+\x00\x08\
+\x06|Z\x07\
+\x00c\
+\x00o\x00p\x00y\x00.\x00p\x00n\x00g\
+\x00\x19\
+\x0d\x16F'\
+\x00g\
+\x00o\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00-\x00v\x00i\x00e\x00w\x00-\
+\x00p\x00a\x00g\x00e\x00.\x00p\x00n\x00g\
+\x00\x0b\
+\x03O\x98\xe7\
+\x00c\
+\x00o\x00p\x00y\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x17\
+\x0fA\x96\xe7\
+\x00g\
+\x00o\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00-\x00v\x00i\x00e\x00w\x00@\
+\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x11\
+\x09\x02(G\
+\x00z\
+\x00o\x00o\x00m\x00-\x00f\x00i\x00t\x00-\x00b\x00e\x00s\x00t\x00.\x00p\x00n\x00g\
+\
+\x00\x0b\
+\x07tw\xe7\
+\x00p\
+\x00r\x00i\x00n\x00t\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x09\
+\x0a\xa8\xbaG\
+\x00p\
+\x00a\x00s\x00t\x00e\x00.\x00p\x00n\x00g\
+\x00\x07\
+\x0a\xc7W\x87\
+\x00c\
+\x00u\x00t\x00.\x00p\x00n\x00g\
+\x00\x19\
+\x08\xc3Z\xea\
+\x00d\
+\x00o\x00c\x00u\x00m\x00e\x00n\x00t\x00-\x00o\x00p\x00e\x00n\x00-\x00r\x00e\x00c\
+\x00e\x00n\x00t\x00.\x00s\x00v\x00g\x00z\
+\x00\x0d\
+\x099\xc9\x07\
+\x00m\
+\x00a\x00g\x00n\x00i\x00f\x00i\x00e\x00r\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x10\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x002\x00\x02\x00\x00\x00&\x00\x00\x00\x04\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x03\xbe\x00\x00\x00\x00\x00\x01\x00\x00\xb9n\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x01\xdc\x00\x00\x00\x00\x00\x01\x00\x00m\xfb\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x03\xd6\x00\x00\x00\x00\x00\x01\x00\x00\xbc\x18\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x01\x00\x00H^\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x98\
+\x00\x00\x01\x88\xd8-C\xa1\
+\x00\x00\x02\x80\x00\x00\x00\x00\x00\x01\x00\x00\x86\xa7\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x04\xb8\x00\x00\x00\x00\x00\x01\x00\x00\xf0\x17\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x04D\x00\x00\x00\x00\x00\x01\x00\x00\xd08\
+\x00\x00\x01\x88\xd8-C\xa1\
+\x00\x00\x03T\x00\x00\x00\x00\x00\x01\x00\x00\xadX\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x02\xf2\x00\x00\x00\x00\x00\x01\x00\x00\x95\xf2\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x010\x00\x00\x00\x00\x00\x01\x00\x00Pu\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x00g[\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x04(\x00\x00\x00\x00\x00\x01\x00\x00\xcai\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x01^\x00\x00\x00\x00\x00\x01\x00\x00Xz\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x02\x9c\x00\x00\x00\x00\x00\x01\x00\x00\x8ac\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x02\x06\x00\x00\x00\x00\x00\x01\x00\x00q\x88\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x03.\x00\x00\x00\x00\x00\x01\x00\x00\xa9v\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x04j\x00\x00\x00\x00\x00\x01\x00\x00\xe6v\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x024\x00\x00\x00\x00\x00\x01\x00\x00u~\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x03p\x00\x00\x00\x00\x00\x01\x00\x00\xb1U\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x050\x00\x00\x00\x00\x00\x01\x00\x01\x04L\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x05x\x00\x00\x00\x00\x00\x01\x00\x01\x13\x93\
+\x00\x00\x01\x88\xd8-C\xa1\
+\x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x01\x00\x1d\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x01%\xc7\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00#\xfd\
+\x00\x00\x01\x88\xd8-C\xa1\
+\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x00?\x91\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x05L\x00\x00\x00\x00\x00\x01\x00\x01\x07\xf3\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x05d\x00\x00\x00\x00\x00\x01\x00\x01\x0ed\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x02\xca\x00\x00\x00\x00\x00\x01\x00\x00\x92<\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x04\x80\x00\x00\x00\x00\x00\x01\x00\x00\xeb\xb4\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x04\x06\x00\x00\x00\x00\x00\x01\x00\x00\xc2\xd8\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x00D\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x02J\x00\x00\x00\x00\x00\x01\x00\x00}\x9b\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x00b\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xe2\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x03\x8e\x00\x00\x00\x00\x00\x01\x00\x00\xb5\x05\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x04\xd4\x00\x00\x00\x00\x00\x01\x00\x00\xf8\xc6\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x03\x0c\x00\x00\x00\x00\x00\x01\x00\x00\xa1>\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+\x00\x00\x01\x8a\x00\x00\x00\x00\x00\x01\x00\x00_\xa4\
+\x00\x00\x01\x87\xdc\x8a\xff\x8e\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/demos/documentviewer/recentfilemenu.py b/examples/demos/documentviewer/recentfilemenu.py
new file mode 100644
index 000000000..36c7dc9f3
--- /dev/null
+++ b/examples/demos/documentviewer/recentfilemenu.py
@@ -0,0 +1,34 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWidgets import QMenu
+from PySide6.QtCore import Signal, Slot
+
+
+class RecentFileMenu(QMenu):
+ fileOpened = Signal(str)
+
+ def __init__(self, parent, recent):
+ super().__init__(parent)
+ self._recentFiles = recent
+ self._recentFiles.changed.connect(self.updateList)
+ self._recentFiles.destroyed.connect(self.deleteLater)
+ self.updateList()
+
+ @Slot()
+ def updateList(self):
+ for a in self.actions():
+ del a
+
+ if not self._recentFiles:
+ self.addAction("<no recent files>")
+ return
+
+ for fileName in self._recentFiles.recentFiles():
+ action = self.addAction(fileName)
+ action.triggered.connect(self._emitFileOpened)
+
+ @Slot()
+ def _emitFileOpened(self):
+ action = self.sender()
+ self.fileOpened.emit(action.text())
diff --git a/examples/demos/documentviewer/recentfiles.py b/examples/demos/documentviewer/recentfiles.py
new file mode 100644
index 000000000..fdfc56d40
--- /dev/null
+++ b/examples/demos/documentviewer/recentfiles.py
@@ -0,0 +1,159 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from enum import Enum, auto
+
+from PySide6.QtCore import QFileInfo, QObject, QSettings, Signal, Slot
+
+
+DEFAULT_MAX_FILES = 10
+
+
+# Test if file exists and can be opened
+def testFileAccess(fileName):
+ return QFileInfo(fileName).isReadable()
+
+
+class RemoveReason(Enum):
+ Other = auto()
+ Duplicate = auto()
+
+
+class EmitPolicy(Enum):
+ EmitWhenChanged = auto(),
+ NeverEmit = auto()
+
+
+s_maxFiles = "maxFiles"
+s_openMode = "openMode"
+s_fileNames = "fileNames"
+s_file = "file"
+
+
+class RecentFiles(QObject):
+
+ countChanged = Signal(int)
+ changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._maxFiles = DEFAULT_MAX_FILES
+ self._files = []
+
+ # Access to QStringList member functions
+ def recentFiles(self):
+ return self._files
+
+ def isEmpty(self):
+ return not self._files
+
+ # Properties
+ def maxFiles(self):
+ return self._maxFiles
+
+ def setMaxFiles(self, maxFiles):
+ self._maxFiles = maxFiles
+
+ def addFile(self, fileName):
+ self._addFile(fileName, EmitPolicy.EmitWhenChanged)
+
+ def removeFile(self, fileName):
+ idx = self._files.find(fileName)
+ self._removeFile(idx, RemoveReason.Other)
+
+ @Slot()
+ def clear(self):
+ if self.isEmpty():
+ return
+ self._files.clear()
+ self.countChanged.emit(0)
+
+ def _addFile(self, fileName, policy):
+ if not testFileAccess(fileName):
+ return
+
+ # Remember size, as cleanup can result in a change without size change
+ c = len(self._files)
+
+ # Clean dangling and duplicate files
+ i = 0
+ while i < len(self._files):
+ file = self._files[i]
+ if not testFileAccess(file):
+ self._removeFile(file, RemoveReason.Other)
+ elif file == fileName:
+ self._removeFile(file, RemoveReason.Duplicate)
+ else:
+ i += 1
+
+ # Cut tail
+ while len(self._files) > self._maxFiles:
+ self.removeFile((len(self._files) - 1), RemoveReason.Other)
+
+ self._files.insert(0, fileName)
+
+ if policy == EmitPolicy.NeverEmit:
+ return
+
+ if policy == EmitPolicy.EmitWhenChanged:
+ self.changed.emit()
+ if c != len(self._files):
+ self.countChanged.emit(len(self._files))
+
+ @Slot(list)
+ def addFiles(self, files):
+ if files.isEmpty():
+ return
+
+ if len(files) == 1:
+ self.addFile(files[0])
+ return
+
+ c = len(self._files)
+
+ for file in files:
+ self.addFile(file, EmitPolicy.NeverEmit)
+
+ self.changed.emit()
+ if len(self._files) != c:
+ self.countChanged.emit(len(self._files))
+
+ def _removeFile(self, p, reason):
+ index = p
+ if isinstance(p, str):
+ index = self._files.index(p) if p in self._files else -1
+ if index < 0 or index >= len(self._files):
+ return
+ del self._files[index]
+
+ # No emit for duplicate removal, add emits changed later.
+ if reason != RemoveReason.Duplicate:
+ self.changed.emit()
+
+ @Slot(QSettings, str)
+ def saveSettings(self, settings, key):
+ settings.beginGroup(key)
+ settings.setValue(s_maxFiles, self.maxFiles())
+ if self._files:
+ settings.beginWriteArray(s_fileNames, len(self._files))
+ for index, file in enumerate(self._files):
+ settings.setArrayIndex(index)
+ settings.setValue(s_file, file)
+ settings.endArray()
+ settings.endGroup()
+
+ @Slot(QSettings, str)
+ def restoreFromSettings(self, settings, key):
+ settings.beginGroup(key)
+ self.setMaxFiles(settings.value(s_maxFiles, DEFAULT_MAX_FILES, int))
+ self._files.clear() # clear list without emitting
+ numberFiles = settings.beginReadArray(s_fileNames)
+ for index in range(0, numberFiles):
+ settings.setArrayIndex(index)
+ absoluteFilePath = settings.value(s_file)
+ self._addFile(absoluteFilePath, EmitPolicy.NeverEmit)
+ settings.endArray()
+ settings.endGroup()
+ if self._files:
+ self.changed.emit()
+ return True
diff --git a/examples/demos/documentviewer/txtviewer/txtviewer.py b/examples/demos/documentviewer/txtviewer/txtviewer.py
new file mode 100644
index 000000000..ef5a38fcd
--- /dev/null
+++ b/examples/demos/documentviewer/txtviewer/txtviewer.py
@@ -0,0 +1,144 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWidgets import (QDialog, QFileDialog,
+ QPlainTextEdit)
+from PySide6.QtGui import QAction, QGuiApplication, QIcon, QKeySequence
+from PySide6.QtCore import QDir, QFile, QTextStream, Qt, Slot
+
+from abstractviewer import AbstractViewer
+
+
+class TxtViewer(AbstractViewer):
+ def __init__(self):
+ super().__init__()
+ self.uiInitialized.connect(self.setupTxtUi)
+
+ def init(self, file, parent, mainWindow):
+ self._textEdit = QPlainTextEdit(parent)
+ super().init(file, self._textEdit, mainWindow)
+
+ def viewerName(self):
+ return "TxtViewer"
+
+ def supportedMimeTypes(self):
+ return ["text/plain"]
+
+ @Slot()
+ def setupTxtUi(self):
+ editMenu = self.addMenu("Edit")
+ editToolBar = self.addToolBar("Edit")
+ cutIcon = QIcon.fromTheme(QIcon.ThemeIcon.EditCut,
+ QIcon(":/demos/documentviewer/images/cut.png"))
+ cutAct = QAction(cutIcon, "Cut", self)
+ cutAct.setShortcuts(QKeySequence.Cut)
+ cutAct.setStatusTip("Cut the current selection's contents to the clipboard")
+ cutAct.triggered.connect(self._textEdit.cut)
+ editMenu.addAction(cutAct)
+ editToolBar.addAction(cutAct)
+
+ copyIcon = QIcon.fromTheme(QIcon.ThemeIcon.EditCopy,
+ QIcon(":/demos/documentviewer/images/copy.png"))
+ copyAct = QAction(copyIcon, "Copy", self)
+ copyAct.setShortcuts(QKeySequence.Copy)
+ copyAct.setStatusTip("Copy the current selection's contents to the clipboard")
+ copyAct.triggered.connect(self._textEdit.copy)
+ editMenu.addAction(copyAct)
+ editToolBar.addAction(copyAct)
+
+ pasteIcon = QIcon.fromTheme(QIcon.ThemeIcon.EditPaste,
+ QIcon(":/demos/documentviewer/images/paste.png"))
+ pasteAct = QAction(pasteIcon, "Paste", self)
+ pasteAct.setShortcuts(QKeySequence.Paste)
+ pasteAct.setStatusTip("Paste the clipboard's contents into the current selection")
+ pasteAct.triggered.connect(self._textEdit.paste)
+ editMenu.addAction(pasteAct)
+ editToolBar.addAction(pasteAct)
+
+ self.menuBar().addSeparator()
+
+ cutAct.setEnabled(False)
+ copyAct.setEnabled(False)
+ self._textEdit.copyAvailable.connect(cutAct.setEnabled)
+ self._textEdit.copyAvailable.connect(copyAct.setEnabled)
+
+ self.openFile()
+
+ self._textEdit.textChanged.connect(self._textChanged)
+ self._uiAssets_back.triggered.connect(self._back)
+ self._uiAssets_forward.triggered.connect(self._forward)
+
+ @Slot()
+ def _textChanged(self):
+ self.maybeSetPrintingEnabled(self.hasContent())
+
+ @Slot()
+ def _back(self):
+ bar = self._textEdit.verticalScrollBar()
+ if bar.value() > bar.minimum():
+ bar.setValue(bar.value() - 1)
+
+ @Slot()
+ def _forward(self):
+ bar = self._textEdit.verticalScrollBar()
+ if bar.value() < bar.maximum():
+ bar.setValue(bar.value() + 1)
+
+ def openFile(self):
+ type = "open"
+ file_name = QDir.toNativeSeparators(self._file.fileName())
+ if not self._file.open(QFile.ReadOnly | QFile.Text):
+ err = self._file.errorString()
+ self.statusMessage(f"Cannot read file {file_name}:\n{err}.", type)
+ return
+
+ in_str = QTextStream(self._file)
+ QGuiApplication.setOverrideCursor(Qt.WaitCursor)
+ if self._textEdit.toPlainText():
+ self._textEdit.clear()
+ self.disablePrinting()
+
+ self._textEdit.setPlainText(in_str.readAll())
+ QGuiApplication.restoreOverrideCursor()
+
+ self.statusMessage(f"File {file_name} loaded.", type)
+ self.maybeEnablePrinting()
+
+ def hasContent(self):
+ return bool(self._textEdit.toPlainText())
+
+ def printDocument(self, printer):
+ if not self.hasContent():
+ return
+
+ self._textEdit.print_(printer)
+
+ def saveFile(self, file):
+ file_name = QDir.toNativeSeparators(self._file.fileName())
+ errorMessage = ""
+ QGuiApplication.setOverrideCursor(Qt.WaitCursor)
+ if file.open(QFile.WriteOnly | QFile.Text):
+ out = QTextStream(file)
+ out << self._textEdit.toPlainText()
+ else:
+ error = file.errorString()
+ errorMessage = f"Cannot open file {file_name} for writing:\n{error}."
+ QGuiApplication.restoreOverrideCursor()
+
+ if errorMessage:
+ self.statusMessage(errorMessage)
+ return False
+
+ self.statusMessage(f"File {file_name} saved")
+ return True
+
+ def saveDocumentAs(self):
+ dialog = QFileDialog(self.mainWindow())
+ dialog.setWindowModality(Qt.WindowModal)
+ dialog.setAcceptMode(QFileDialog.AcceptSave)
+ if dialog.exec() != QDialog.Accepted:
+ return False
+
+ files = dialog.selectedFiles()
+ self._file.setFileName(files[0])
+ return self.saveDocument()
diff --git a/examples/demos/documentviewer/ui_mainwindow.py b/examples/demos/documentviewer/ui_mainwindow.py
new file mode 100644
index 000000000..5773ae5b8
--- /dev/null
+++ b/examples/demos/documentviewer/ui_mainwindow.py
@@ -0,0 +1,230 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'mainwindow.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
+ QCursor, QFont, QFontDatabase, QGradient,
+ QIcon, QImage, QKeySequence, QLinearGradient,
+ QPainter, QPalette, QPixmap, QRadialGradient,
+ QTransform)
+from PySide6.QtWidgets import (QApplication, QMainWindow, QMenu, QMenuBar,
+ QScrollArea, QSizePolicy, QSplitter, QStatusBar,
+ QTabWidget, QToolBar, QVBoxLayout, QWidget)
+import rc_documentviewer
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ if not MainWindow.objectName():
+ MainWindow.setObjectName(u"MainWindow")
+ MainWindow.resize(983, 602)
+ icon = QIcon()
+ icon.addFile(u":/demos/documentviewer/images/qt-logo.png", QSize(), QIcon.Normal, QIcon.Off)
+ MainWindow.setWindowIcon(icon)
+ self.actionOpen = QAction(MainWindow)
+ self.actionOpen.setObjectName(u"actionOpen")
+ icon1 = QIcon()
+ icon1.addFile(u":/demos/documentviewer/images/open.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionOpen.setIcon(icon1)
+ self.actionAbout = QAction(MainWindow)
+ self.actionAbout.setObjectName(u"actionAbout")
+ icon2 = QIcon()
+ iconThemeName = u"help-about"
+ if QIcon.hasThemeIcon(iconThemeName):
+ icon2 = QIcon.fromTheme(iconThemeName)
+ else:
+ icon2.addFile(u":/demos/documentviewer/images/help-about.svgz", QSize(), QIcon.Normal, QIcon.Off)
+
+ self.actionAbout.setIcon(icon2)
+ self.actionForward = QAction(MainWindow)
+ self.actionForward.setObjectName(u"actionForward")
+ icon3 = QIcon()
+ icon3.addFile(u":/demos/documentviewer/images/go-next.svgz", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionForward.setIcon(icon3)
+ self.actionBack = QAction(MainWindow)
+ self.actionBack.setObjectName(u"actionBack")
+ icon4 = QIcon()
+ icon4.addFile(u":/demos/documentviewer/images/go-previous.svgz", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionBack.setIcon(icon4)
+ self.actionPrint = QAction(MainWindow)
+ self.actionPrint.setObjectName(u"actionPrint")
+ self.actionPrint.setEnabled(False)
+ icon5 = QIcon()
+ iconThemeName = u"document-print"
+ if QIcon.hasThemeIcon(iconThemeName):
+ icon5 = QIcon.fromTheme(iconThemeName)
+ else:
+ icon5.addFile(u":/demos/documentviewer/images/print2x.png", QSize(), QIcon.Normal, QIcon.Off)
+
+ self.actionPrint.setIcon(icon5)
+ self.actionAboutQt = QAction(MainWindow)
+ self.actionAboutQt.setObjectName(u"actionAboutQt")
+ icon6 = QIcon()
+ icon6.addFile(u":/demos/documentviewer/images/qt-logo.png", QSize(), QIcon.Normal, QIcon.Off)
+ icon6.addFile(u":/demos/documentviewer/images/qt-logo.png", QSize(), QIcon.Normal, QIcon.On)
+ self.actionAboutQt.setIcon(icon6)
+ self.actionRecent = QAction(MainWindow)
+ self.actionRecent.setObjectName(u"actionRecent")
+ icon7 = QIcon()
+ icon7.addFile(u":/demos/documentviewer/images/document-open-recent.svgz", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionRecent.setIcon(icon7)
+ self.actionQuit = QAction(MainWindow)
+ self.actionQuit.setObjectName(u"actionQuit")
+ icon8 = QIcon()
+ iconThemeName = u"application-exit"
+ if QIcon.hasThemeIcon(iconThemeName):
+ icon8 = QIcon.fromTheme(iconThemeName)
+ else:
+ icon8.addFile(u".", QSize(), QIcon.Normal, QIcon.Off)
+
+ self.actionQuit.setIcon(icon8)
+ self.centralwidget = QWidget(MainWindow)
+ self.centralwidget.setObjectName(u"centralwidget")
+ self.centralwidget.setEnabled(True)
+ self.verticalLayout = QVBoxLayout(self.centralwidget)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.viewArea = QWidget(self.centralwidget)
+ self.viewArea.setObjectName(u"viewArea")
+ self.verticalLayout_2 = QVBoxLayout(self.viewArea)
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.splitter = QSplitter(self.viewArea)
+ self.splitter.setObjectName(u"splitter")
+ self.splitter.setOrientation(Qt.Horizontal)
+ self.tabWidget = QTabWidget(self.splitter)
+ self.tabWidget.setObjectName(u"tabWidget")
+ self.tabWidget.setTabPosition(QTabWidget.West)
+ self.bookmarkTab = QWidget()
+ self.bookmarkTab.setObjectName(u"bookmarkTab")
+ self.tabWidget.addTab(self.bookmarkTab, "")
+ self.pagesTab = QWidget()
+ self.pagesTab.setObjectName(u"pagesTab")
+ self.tabWidget.addTab(self.pagesTab, "")
+ self.splitter.addWidget(self.tabWidget)
+ self.scrollArea = QScrollArea(self.splitter)
+ self.scrollArea.setObjectName(u"scrollArea")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.scrollArea.sizePolicy().hasHeightForWidth())
+ self.scrollArea.setSizePolicy(sizePolicy)
+ self.scrollArea.setMinimumSize(QSize(800, 0))
+ self.scrollArea.setWidgetResizable(True)
+ self.scrollAreaWidgetContents = QWidget()
+ self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents")
+ self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 798, 479))
+ self.scrollArea.setWidget(self.scrollAreaWidgetContents)
+ self.splitter.addWidget(self.scrollArea)
+
+ self.verticalLayout_2.addWidget(self.splitter)
+
+
+ self.verticalLayout.addWidget(self.viewArea)
+
+ MainWindow.setCentralWidget(self.centralwidget)
+ self.menubar = QMenuBar(MainWindow)
+ self.menubar.setObjectName(u"menubar")
+ self.menubar.setGeometry(QRect(0, 0, 983, 23))
+ self.qtFileMenu = QMenu(self.menubar)
+ self.qtFileMenu.setObjectName(u"qtFileMenu")
+ self.menuHelp = QMenu(self.menubar)
+ self.menuHelp.setObjectName(u"menuHelp")
+ MainWindow.setMenuBar(self.menubar)
+ self.statusbar = QStatusBar(MainWindow)
+ self.statusbar.setObjectName(u"statusbar")
+ MainWindow.setStatusBar(self.statusbar)
+ self.mainToolBar = QToolBar(MainWindow)
+ self.mainToolBar.setObjectName(u"mainToolBar")
+ MainWindow.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.mainToolBar)
+
+ self.menubar.addAction(self.qtFileMenu.menuAction())
+ self.menubar.addAction(self.menuHelp.menuAction())
+ self.qtFileMenu.addAction(self.actionOpen)
+ self.qtFileMenu.addAction(self.actionRecent)
+ self.qtFileMenu.addAction(self.actionPrint)
+ self.qtFileMenu.addAction(self.actionQuit)
+ self.menuHelp.addAction(self.actionAbout)
+ self.menuHelp.addAction(self.actionAboutQt)
+ self.mainToolBar.addAction(self.actionOpen)
+ self.mainToolBar.addAction(self.actionRecent)
+ self.mainToolBar.addAction(self.actionPrint)
+ self.mainToolBar.addSeparator()
+ self.mainToolBar.addAction(self.actionBack)
+ self.mainToolBar.addAction(self.actionForward)
+ self.mainToolBar.addSeparator()
+
+ self.retranslateUi(MainWindow)
+ self.actionQuit.triggered.connect(MainWindow.close)
+
+ self.tabWidget.setCurrentIndex(0)
+
+
+ QMetaObject.connectSlotsByName(MainWindow)
+ # setupUi
+
+ def retranslateUi(self, MainWindow):
+ MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"Document Viewer Demo", None))
+ self.actionOpen.setText(QCoreApplication.translate("MainWindow", u"Open", None))
+#if QT_CONFIG(shortcut)
+ self.actionOpen.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+O", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionAbout.setText(QCoreApplication.translate("MainWindow", u"about documentviewer", None))
+#if QT_CONFIG(tooltip)
+ self.actionAbout.setToolTip(QCoreApplication.translate("MainWindow", u"Show information about the Document Viewer deomo.", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionAbout.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+H", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionForward.setText(QCoreApplication.translate("MainWindow", u"actionForward", None))
+#if QT_CONFIG(tooltip)
+ self.actionForward.setToolTip(QCoreApplication.translate("MainWindow", u"One step forward", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionForward.setShortcut(QCoreApplication.translate("MainWindow", u"Right", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionBack.setText(QCoreApplication.translate("MainWindow", u"actionBack", None))
+#if QT_CONFIG(tooltip)
+ self.actionBack.setToolTip(QCoreApplication.translate("MainWindow", u"One step back", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionBack.setShortcut(QCoreApplication.translate("MainWindow", u"Left", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionPrint.setText(QCoreApplication.translate("MainWindow", u"Print", None))
+#if QT_CONFIG(tooltip)
+ self.actionPrint.setToolTip(QCoreApplication.translate("MainWindow", u"Print current file", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionPrint.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+P", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionAboutQt.setText(QCoreApplication.translate("MainWindow", u"About Qt", None))
+#if QT_CONFIG(tooltip)
+ self.actionAboutQt.setToolTip(QCoreApplication.translate("MainWindow", u"Show Qt license information", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionAboutQt.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+I", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionRecent.setText(QCoreApplication.translate("MainWindow", u"Recently opened...", None))
+#if QT_CONFIG(shortcut)
+ self.actionRecent.setShortcut(QCoreApplication.translate("MainWindow", u"Meta+R", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionQuit.setText(QCoreApplication.translate("MainWindow", u"Quit", None))
+#if QT_CONFIG(tooltip)
+ self.actionQuit.setToolTip(QCoreApplication.translate("MainWindow", u"Quit the application", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionQuit.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+Q", None))
+#endif // QT_CONFIG(shortcut)
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.bookmarkTab), QCoreApplication.translate("MainWindow", u"Pages", None))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.pagesTab), QCoreApplication.translate("MainWindow", u"Bookmarks", None))
+ self.qtFileMenu.setTitle(QCoreApplication.translate("MainWindow", u"File", None))
+ self.menuHelp.setTitle(QCoreApplication.translate("MainWindow", u"Help", None))
+ self.mainToolBar.setWindowTitle(QCoreApplication.translate("MainWindow", u"toolBar", None))
+ # retranslateUi
+
diff --git a/examples/demos/documentviewer/viewerfactory.py b/examples/demos/documentviewer/viewerfactory.py
new file mode 100644
index 000000000..ecae6770b
--- /dev/null
+++ b/examples/demos/documentviewer/viewerfactory.py
@@ -0,0 +1,114 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from enum import Enum, auto
+
+from PySide6.QtWidgets import (QMessageBox)
+from PySide6.QtCore import (QFileInfo, QMimeDatabase, QTimer)
+
+from txtviewer.txtviewer import TxtViewer
+from jsonviewer.jsonviewer import JsonViewer
+from pdfviewer.pdfviewer import PdfViewer
+
+
+class DefaultPolicy(Enum):
+ NeverDefault = auto()
+ DefaultToTxtViewer = auto()
+ DefaultToCustomViewer = auto()
+
+
+class ViewerFactory:
+
+ def __init__(self, displayWidget, mainWindow,
+ policy=DefaultPolicy.NeverDefault):
+ self._viewers = {}
+ self._defaultViewer = None
+ self._defaultWarning = True
+ self._defaultPolicy = policy
+ self._displayWidget = displayWidget
+ self._mainWindow = mainWindow
+ self._mimeTypes = []
+ for v in [PdfViewer(), JsonViewer(), TxtViewer()]:
+ self._viewers[v.viewerName()] = v
+ if v.isDefaultViewer():
+ self._defaultViewer = v
+
+ def defaultPolicy(self):
+ return self._defaultPolicy
+
+ def setDefaultPolicy(self, policy):
+ self._defaultPolicy = policy
+
+ def defaultWarning(self):
+ return self._defaultWarning
+
+ def setDefaultWarning(self, on):
+ self._defaultWarning = on
+
+ def viewer(self, file):
+ info = QFileInfo(file)
+ db = QMimeDatabase()
+ mimeType = db.mimeTypeForFile(info)
+
+ viewer = self.viewerForMimeType(mimeType)
+ if not viewer:
+ print(f"Mime type {mimeType.name()} not supported.")
+ return None
+
+ viewer.init(file, self._displayWidget, self._mainWindow)
+ return viewer
+
+ def viewerNames(self, showDefault=False):
+ if not showDefault:
+ return self._viewers.keys()
+
+ list = []
+ for name, viewer in self._viewers.items():
+ if ((self._defaultViewer and viewer.isDefaultViewer())
+ or (not self._defaultViewer and name == "TxtViewer")):
+ name += "(default)"
+ list.append(name)
+ return list
+
+ def viewers(self):
+ return self._viewers.values()
+
+ def findViewer(self, viewerName):
+ for viewer in self.viewers():
+ if viewer.viewerName() == viewerName:
+ return viewer
+ print(f"Plugin {viewerName} not loaded.")
+ return None
+
+ def viewerForMimeType(self, mimeType):
+ for viewer in self.viewers():
+ for type in viewer.supportedMimeTypes():
+ if mimeType.inherits(type):
+ return viewer
+
+ viewer = self.defaultViewer()
+
+ if self._defaultWarning:
+ mbox = QMessageBox()
+ mbox.setIcon(QMessageBox.Warning)
+ name = mimeType.name()
+ viewer_name = viewer.viewerName()
+ m = f"Mime type {name} not supported. Falling back to {viewer_name}."
+ mbox.setText(m)
+ mbox.setStandardButtons(QMessageBox.Ok)
+ QTimer.singleShot(8000, mbox.close)
+ mbox.exec()
+ return viewer
+
+ def defaultViewer(self):
+ if self._defaultPolicy == DefaultPolicy.NeverDefault:
+ return None
+ if self._defaultPolicy == DefaultPolicy.DefaultToCustomViewer and self._defaultViewer:
+ return self._defaultViewer
+ return self.findViewer("TxtViewer")
+
+ def supportedMimeTypes(self):
+ if not self._mimeTypes:
+ for viewer in self.viewers():
+ self._mimeTypes.extend(viewer.supportedMimeTypes())
+ return self._mimeTypes
diff --git a/examples/designer/taskmenuextension/doc/taskmenuextension.rst b/examples/designer/taskmenuextension/doc/taskmenuextension.rst
index a1b584fb9..dd7fe1679 100644
--- a/examples/designer/taskmenuextension/doc/taskmenuextension.rst
+++ b/examples/designer/taskmenuextension/doc/taskmenuextension.rst
@@ -1,5 +1,7 @@
-Task Menu Extension (Designer)
-==============================
+.. _task-menu-extension-example:
+
+Task Menu Extension Example
+===========================
This example shows how to add custom widgets to Qt Designer,
which can be launched with `pyside6-designer`, and to extend
diff --git a/examples/designer/taskmenuextension/main.py b/examples/designer/taskmenuextension/main.py
index de6b772b0..ffde89d29 100644
--- a/examples/designer/taskmenuextension/main.py
+++ b/examples/designer/taskmenuextension/main.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the Qt Designer taskmenuextension example from Qt v6.x"""
diff --git a/examples/designer/taskmenuextension/registertictactoe.py b/examples/designer/taskmenuextension/registertictactoe.py
index d34bb248d..2b014c790 100644
--- a/examples/designer/taskmenuextension/registertictactoe.py
+++ b/examples/designer/taskmenuextension/registertictactoe.py
@@ -1,54 +1,7 @@
-############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## BSD License Usage
-## Alternatively, you may use this file under the terms of the BSD license
-## as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-from tictactoe import TicTacToe
+from tictactoe import TicTacToe # noqa: F401
from tictactoeplugin import TicTacToePlugin
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
diff --git a/examples/designer/taskmenuextension/tictactoe.py b/examples/designer/taskmenuextension/tictactoe.py
index d4f8dff1a..aa1c3158c 100644
--- a/examples/designer/taskmenuextension/tictactoe.py
+++ b/examples/designer/taskmenuextension/tictactoe.py
@@ -1,45 +1,8 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtCore import Qt, QPoint, QRect, QSize, Property, Slot
-from PySide6.QtGui import QMouseEvent, QPainter, QPen
+from PySide6.QtGui import QPainter, QPen
from PySide6.QtWidgets import QWidget
@@ -99,57 +62,57 @@ class TicTacToe(QWidget):
self.update()
def paintEvent(self, event):
- painter = QPainter(self)
- painter.setRenderHint(QPainter.Antialiasing)
-
- painter.setPen(QPen(Qt.darkGreen, 1))
- painter.drawLine(self._cell_width(), 0,
- self._cell_width(), self.height())
- painter.drawLine(2 * self._cell_width(), 0,
- 2 * self._cell_width(), self.height())
- painter.drawLine(0, self._cell_height(),
- self.width(), self._cell_height())
- painter.drawLine(0, 2 * self._cell_height(),
- self.width(), 2 * self._cell_height())
-
- painter.setPen(QPen(Qt.darkBlue, 2))
-
- for position in range(9):
- cell = self._cell_rect(position)
- if self._state[position] == CROSS:
- painter.drawLine(cell.topLeft(), cell.bottomRight())
- painter.drawLine(cell.topRight(), cell.bottomLeft())
- elif self._state[position] == NOUGHT:
- painter.drawEllipse(cell)
-
- painter.setPen(QPen(Qt.yellow, 3))
-
- for position in range(9):
- if (self._state[position] != EMPTY
- and self._state[position + 1] == self._state[position]
- and self._state[position + 2] == self._state[position]):
- y = self._cell_rect(position).center().y()
- painter.drawLine(0, y, self.width(), y)
+ with QPainter(self) as painter:
+ painter.setRenderHint(QPainter.Antialiasing)
+
+ painter.setPen(QPen(Qt.darkGreen, 1))
+ painter.drawLine(self._cell_width(), 0,
+ self._cell_width(), self.height())
+ painter.drawLine(2 * self._cell_width(), 0,
+ 2 * self._cell_width(), self.height())
+ painter.drawLine(0, self._cell_height(),
+ self.width(), self._cell_height())
+ painter.drawLine(0, 2 * self._cell_height(),
+ self.width(), 2 * self._cell_height())
+
+ painter.setPen(QPen(Qt.darkBlue, 2))
+
+ for position in range(9):
+ cell = self._cell_rect(position)
+ if self._state[position] == CROSS:
+ painter.drawLine(cell.topLeft(), cell.bottomRight())
+ painter.drawLine(cell.topRight(), cell.bottomLeft())
+ elif self._state[position] == NOUGHT:
+ painter.drawEllipse(cell)
+
+ painter.setPen(QPen(Qt.yellow, 3))
+
+ for position in range(0, 8, 3):
+ if (self._state[position] != EMPTY
+ and self._state[position + 1] == self._state[position]
+ and self._state[position + 2] == self._state[position]):
+ y = self._cell_rect(position).center().y()
+ painter.drawLine(0, y, self.width(), y)
+ self._turn_number = 9
+
+ for position in range(3):
+ if (self._state[position] != EMPTY
+ and self._state[position + 3] == self._state[position]
+ and self._state[position + 6] == self._state[position]):
+ x = self._cell_rect(position).center().x()
+ painter.drawLine(x, 0, x, self.height())
+ self._turn_number = 9
+
+ if (self._state[0] != EMPTY and self._state[4] == self._state[0]
+ and self._state[8] == self._state[0]):
+ painter.drawLine(0, 0, self.width(), self.height())
self._turn_number = 9
- for position in range(3):
- if (self._state[position] != EMPTY
- and self._state[position + 3] == self._state[position]
- and self._state[position + 6] == self._state[position]):
- x = self._cell_rect(position).center().x()
- painter.drawLine(x, 0, x, height())
+ if (self._state[2] != EMPTY and self._state[4] == self._state[2]
+ and self._state[6] == self._state[2]):
+ painter.drawLine(0, self.height(), self.width(), 0)
self._turn_number = 9
- if (self._state[0] != EMPTY and self._state[4] == self._state[0]
- and self._state[8] == self._state[0]):
- painter.drawLine(0, 0, self.width(), self.height())
- self._turn_number = 9
-
- if (self._state[2] != EMPTY and self._state[4] == self._state[2]
- and self._state[6] == self._state[2]):
- painter.drawLine(0, self.height(), self.width(), 0)
- self._turn_number = 9
-
def _cell_rect(self, position):
h_margin = self.width() / 30
v_margin = self.height() / 30
diff --git a/examples/designer/taskmenuextension/tictactoeplugin.py b/examples/designer/taskmenuextension/tictactoeplugin.py
index 276c2d0e8..f9c925133 100644
--- a/examples/designer/taskmenuextension/tictactoeplugin.py
+++ b/examples/designer/taskmenuextension/tictactoeplugin.py
@@ -1,59 +1,11 @@
-############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## BSD License Usage
-## Alternatively, you may use this file under the terms of the BSD license
-## as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from tictactoe import TicTacToe
from tictactoetaskmenu import TicTacToeTaskMenuFactory
from PySide6.QtGui import QIcon
-from PySide6.QtDesigner import (QExtensionManager,
- QDesignerCustomWidgetInterface)
+from PySide6.QtDesigner import QDesignerCustomWidgetInterface
DOM_XML = """
diff --git a/examples/designer/taskmenuextension/tictactoetaskmenu.py b/examples/designer/taskmenuextension/tictactoetaskmenu.py
index 2b1db2baa..71826dc7d 100644
--- a/examples/designer/taskmenuextension/tictactoetaskmenu.py
+++ b/examples/designer/taskmenuextension/tictactoetaskmenu.py
@@ -1,56 +1,9 @@
-############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## BSD License Usage
-## Alternatively, you may use this file under the terms of the BSD license
-## as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from tictactoe import TicTacToe
-from PySide6.QtCore import QObject, Slot
+from PySide6.QtCore import Slot
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout
from PySide6.QtDesigner import (QExtensionFactory, QPyDesignerTaskMenuExtension)
diff --git a/examples/examples.pyproject b/examples/examples.pyproject
index 164997a51..814aae024 100644
--- a/examples/examples.pyproject
+++ b/examples/examples.pyproject
@@ -54,7 +54,8 @@
"opengl/contextinfo/contextinfo.py",
"opengl/hellogl2/hellogl2.py",
"opengl/textures/textures.py",
- "quickcontrols2/gallery/gallery.py",
+ "quickcontrols/gallery/gallery.py",
+ "quickcontrols/filesystemexplorer/filesystemexplorer.py",
"quick/painteditem/painteditem.py",
"remoteobjects/modelview/modelviewclient.py",
"remoteobjects/modelview/modelviewserver.py",
diff --git a/examples/external/matplotlib/widget3d/widget3d.py b/examples/external/matplotlib/widget3d/widget3d.py
index 08c764bb9..8bfcc4ca2 100644
--- a/examples/external/matplotlib/widget3d/widget3d.py
+++ b/examples/external/matplotlib/widget3d/widget3d.py
@@ -1,47 +1,10 @@
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
import numpy as np
-from matplotlib.backends.backend_qt5agg import FigureCanvas
+from matplotlib.backends.backend_qtagg import FigureCanvas
from matplotlib.figure import Figure
from mpl_toolkits.mplot3d import axes3d
from PySide6.QtCore import Qt, Slot
@@ -69,12 +32,12 @@ class ApplicationWindow(QMainWindow):
# Main menu bar
self.menu = self.menuBar()
self.menu_file = self.menu.addMenu("File")
- exit = QAction("Exit", self, triggered=qApp.quit)
+ exit = QAction("Exit", self, triggered=qApp.quit) # noqa: F821
self.menu_file.addAction(exit)
self.menu_about = self.menu.addMenu("&About")
about = QAction("About Qt", self, shortcut=QKeySequence(QKeySequence.HelpContents),
- triggered=qApp.aboutQt)
+ triggered=qApp.aboutQt) # noqa: F821
self.menu_about.addAction(about)
# Figure (Left)
diff --git a/examples/external/matplotlib/widget_gaussian/widget_gaussian.py b/examples/external/matplotlib/widget_gaussian/widget_gaussian.py
index 8edd902e5..2423e496a 100644
--- a/examples/external/matplotlib/widget_gaussian/widget_gaussian.py
+++ b/examples/external/matplotlib/widget_gaussian/widget_gaussian.py
@@ -1,52 +1,14 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
import numpy as np
from scipy.stats import norm
-from matplotlib import pyplot as plt
from matplotlib.figure import Figure
-from matplotlib.backends.backend_qt5agg import FigureCanvas
-from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT
-from PySide6.QtCore import Qt, Slot
+from matplotlib.backends.backend_qtagg import FigureCanvas
+from matplotlib.backends.backend_qtagg import NavigationToolbar2QT
+from PySide6.QtCore import Slot
from PySide6.QtWidgets import (
QApplication,
QWidget,
diff --git a/examples/external/networkx/doc/networkx.png b/examples/external/networkx/doc/networkx.png
new file mode 100644
index 000000000..d3264f8ee
--- /dev/null
+++ b/examples/external/networkx/doc/networkx.png
Binary files differ
diff --git a/examples/external/networkx/doc/networkx.rst b/examples/external/networkx/doc/networkx.rst
new file mode 100644
index 000000000..58897d3b7
--- /dev/null
+++ b/examples/external/networkx/doc/networkx.rst
@@ -0,0 +1,8 @@
+Networkx viewer Example
+=======================
+
+A Python application that demonstrates how to display networkx graph into a QGraphicsView.
+
+.. image:: networkx.png
+ :width: 400
+ :alt: Networkx viewer Screenshot
diff --git a/examples/external/networkx/main.py b/examples/external/networkx/main.py
new file mode 100644
index 000000000..8cd7e7903
--- /dev/null
+++ b/examples/external/networkx/main.py
@@ -0,0 +1,346 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+import math
+import sys
+
+from PySide6.QtCore import (QEasingCurve, QLineF,
+ QParallelAnimationGroup, QPointF,
+ QPropertyAnimation, QRectF, Qt)
+from PySide6.QtGui import QBrush, QColor, QPainter, QPen, QPolygonF
+from PySide6.QtWidgets import (QApplication, QComboBox, QGraphicsItem,
+ QGraphicsObject, QGraphicsScene, QGraphicsView,
+ QStyleOptionGraphicsItem, QVBoxLayout, QWidget)
+
+import networkx as nx
+
+
+class Node(QGraphicsObject):
+
+ """A QGraphicsItem representing node in a graph"""
+
+ def __init__(self, name: str, parent=None):
+ """Node constructor
+
+ Args:
+ name (str): Node label
+ """
+ super().__init__(parent)
+ self._name = name
+ self._edges = []
+ self._color = "#5AD469"
+ self._radius = 30
+ self._rect = QRectF(0, 0, self._radius * 2, self._radius * 2)
+
+ self.setFlag(QGraphicsItem.ItemIsMovable)
+ self.setFlag(QGraphicsItem.ItemSendsGeometryChanges)
+ self.setCacheMode(QGraphicsItem.DeviceCoordinateCache)
+
+ def boundingRect(self) -> QRectF:
+ """Override from QGraphicsItem
+
+ Returns:
+ QRect: Return node bounding rect
+ """
+ return self._rect
+
+ def paint(self, painter: QPainter, option: QStyleOptionGraphicsItem, widget: QWidget = None):
+ """Override from QGraphicsItem
+
+ Draw node
+
+ Args:
+ painter (QPainter)
+ option (QStyleOptionGraphicsItem)
+ """
+ painter.setRenderHints(QPainter.Antialiasing)
+ painter.setPen(
+ QPen(
+ QColor(self._color).darker(),
+ 2,
+ Qt.SolidLine,
+ Qt.RoundCap,
+ Qt.RoundJoin,
+ )
+ )
+ painter.setBrush(QBrush(QColor(self._color)))
+ painter.drawEllipse(self.boundingRect())
+ painter.setPen(QPen(QColor("white")))
+ painter.drawText(self.boundingRect(), Qt.AlignCenter, self._name)
+
+ def add_edge(self, edge):
+ """Add an edge to this node
+
+ Args:
+ edge (Edge)
+ """
+ self._edges.append(edge)
+
+ def itemChange(self, change: QGraphicsItem.GraphicsItemChange, value):
+ """Override from QGraphicsItem
+
+ Args:
+ change (QGraphicsItem.GraphicsItemChange)
+ value (Any)
+
+ Returns:
+ Any
+ """
+ if change == QGraphicsItem.ItemPositionHasChanged:
+ for edge in self._edges:
+ edge.adjust()
+
+ return super().itemChange(change, value)
+
+
+class Edge(QGraphicsItem):
+ def __init__(self, source: Node, dest: Node, parent: QGraphicsItem = None):
+ """Edge constructor
+
+ Args:
+ source (Node): source node
+ dest (Node): destination node
+ """
+ super().__init__(parent)
+ self._source = source
+ self._dest = dest
+
+ self._tickness = 2
+ self._color = "#2BB53C"
+ self._arrow_size = 20
+
+ self._source.add_edge(self)
+ self._dest.add_edge(self)
+
+ self._line = QLineF()
+ self.setZValue(-1)
+ self.adjust()
+
+ def boundingRect(self) -> QRectF:
+ """Override from QGraphicsItem
+
+ Returns:
+ QRect: Return node bounding rect
+ """
+ return (
+ QRectF(self._line.p1(), self._line.p2())
+ .normalized()
+ .adjusted(
+ -self._tickness - self._arrow_size,
+ -self._tickness - self._arrow_size,
+ self._tickness + self._arrow_size,
+ self._tickness + self._arrow_size,
+ )
+ )
+
+ def adjust(self):
+ """
+ Update edge position from source and destination node.
+ This method is called from Node::itemChange
+ """
+ self.prepareGeometryChange()
+ self._line = QLineF(
+ self._source.pos() + self._source.boundingRect().center(),
+ self._dest.pos() + self._dest.boundingRect().center(),
+ )
+
+ def _draw_arrow(self, painter: QPainter, start: QPointF, end: QPointF):
+ """Draw arrow from start point to end point.
+
+ Args:
+ painter (QPainter)
+ start (QPointF): start position
+ end (QPointF): end position
+ """
+ painter.setBrush(QBrush(self._color))
+
+ line = QLineF(end, start)
+
+ angle = math.atan2(-line.dy(), line.dx())
+ arrow_p1 = line.p1() + QPointF(
+ math.sin(angle + math.pi / 3) * self._arrow_size,
+ math.cos(angle + math.pi / 3) * self._arrow_size,
+ )
+ arrow_p2 = line.p1() + QPointF(
+ math.sin(angle + math.pi - math.pi / 3) * self._arrow_size,
+ math.cos(angle + math.pi - math.pi / 3) * self._arrow_size,
+ )
+
+ arrow_head = QPolygonF()
+ arrow_head.clear()
+ arrow_head.append(line.p1())
+ arrow_head.append(arrow_p1)
+ arrow_head.append(arrow_p2)
+ painter.drawLine(line)
+ painter.drawPolygon(arrow_head)
+
+ def _arrow_target(self) -> QPointF:
+ """Calculate the position of the arrow taking into account the size of the destination node
+
+ Returns:
+ QPointF
+ """
+ target = self._line.p1()
+ center = self._line.p2()
+ radius = self._dest._radius
+ vector = target - center
+ length = math.sqrt(vector.x() ** 2 + vector.y() ** 2)
+ if length == 0:
+ return target
+ normal = vector / length
+ target = QPointF(center.x() + (normal.x() * radius), center.y() + (normal.y() * radius))
+
+ return target
+
+ def paint(self, painter: QPainter, option: QStyleOptionGraphicsItem, widget=None):
+ """Override from QGraphicsItem
+
+ Draw Edge. This method is called from Edge.adjust()
+
+ Args:
+ painter (QPainter)
+ option (QStyleOptionGraphicsItem)
+ """
+
+ if self._source and self._dest:
+ painter.setRenderHints(QPainter.Antialiasing)
+
+ painter.setPen(
+ QPen(
+ QColor(self._color),
+ self._tickness,
+ Qt.SolidLine,
+ Qt.RoundCap,
+ Qt.RoundJoin,
+ )
+ )
+ painter.drawLine(self._line)
+ self._draw_arrow(painter, self._line.p1(), self._arrow_target())
+ self._arrow_target()
+
+
+class GraphView(QGraphicsView):
+ def __init__(self, graph: nx.DiGraph, parent=None):
+ """GraphView constructor
+
+ This widget can display a directed graph
+
+ Args:
+ graph (nx.DiGraph): a networkx directed graph
+ """
+ super().__init__()
+ self._graph = graph
+ self._scene = QGraphicsScene()
+ self.setScene(self._scene)
+
+ # Used to add space between nodes
+ self._graph_scale = 200
+
+ # Map node name to Node object {str=>Node}
+ self._nodes_map = {}
+
+ # List of networkx layout function
+ self._nx_layout = {
+ "circular": nx.circular_layout,
+ "planar": nx.planar_layout,
+ "random": nx.random_layout,
+ "shell_layout": nx.shell_layout,
+ "kamada_kawai_layout": nx.kamada_kawai_layout,
+ "spring_layout": nx.spring_layout,
+ "spiral_layout": nx.spiral_layout,
+ }
+
+ self._load_graph()
+ self.set_nx_layout("circular")
+
+ def get_nx_layouts(self) -> list:
+ """Return all layout names
+
+ Returns:
+ list: layout name (str)
+ """
+ return self._nx_layout.keys()
+
+ def set_nx_layout(self, name: str):
+ """Set networkx layout and start animation
+
+ Args:
+ name (str): Layout name
+ """
+ if name in self._nx_layout:
+ self._nx_layout_function = self._nx_layout[name]
+
+ # Compute node position from layout function
+ positions = self._nx_layout_function(self._graph)
+
+ # Change position of all nodes using an animation
+ self.animations = QParallelAnimationGroup()
+ for node, pos in positions.items():
+ x, y = pos
+ x *= self._graph_scale
+ y *= self._graph_scale
+ item = self._nodes_map[node]
+
+ animation = QPropertyAnimation(item, b"pos")
+ animation.setDuration(1000)
+ animation.setEndValue(QPointF(x, y))
+ animation.setEasingCurve(QEasingCurve.OutExpo)
+ self.animations.addAnimation(animation)
+
+ self.animations.start()
+
+ def _load_graph(self):
+ """Load graph into QGraphicsScene using Node class and Edge class"""
+
+ self.scene().clear()
+ self._nodes_map.clear()
+
+ # Add nodes
+ for node in self._graph:
+ item = Node(node)
+ self.scene().addItem(item)
+ self._nodes_map[node] = item
+
+ # Add edges
+ for a, b in self._graph.edges:
+ source = self._nodes_map[a]
+ dest = self._nodes_map[b]
+ self.scene().addItem(Edge(source, dest))
+
+
+class MainWindow(QWidget):
+ def __init__(self, parent=None):
+ super().__init__()
+
+ self.graph = nx.DiGraph()
+ self.graph.add_edges_from(
+ [
+ ("1", "2"),
+ ("2", "3"),
+ ("3", "4"),
+ ("1", "5"),
+ ("1", "6"),
+ ("1", "7"),
+ ]
+ )
+
+ self.view = GraphView(self.graph)
+ self.choice_combo = QComboBox()
+ self.choice_combo.addItems(self.view.get_nx_layouts())
+ v_layout = QVBoxLayout(self)
+ v_layout.addWidget(self.choice_combo)
+ v_layout.addWidget(self.view)
+ self.choice_combo.currentTextChanged.connect(self.view.set_nx_layout)
+
+
+if __name__ == "__main__":
+
+ app = QApplication(sys.argv)
+
+ # Create a networkx graph
+
+ widget = MainWindow()
+ widget.show()
+ widget.resize(800, 600)
+ sys.exit(app.exec())
diff --git a/examples/external/networkx/networkx.pyproject b/examples/external/networkx/networkx.pyproject
new file mode 100644
index 000000000..cc7a74a34
--- /dev/null
+++ b/examples/external/networkx/networkx.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py"]
+}
diff --git a/examples/external/networkx/requirements.txt b/examples/external/networkx/requirements.txt
new file mode 100644
index 000000000..370ba57d9
--- /dev/null
+++ b/examples/external/networkx/requirements.txt
@@ -0,0 +1,3 @@
+networkx
+numpy
+scipy
diff --git a/examples/external/opencv/webcam_pattern_detection.py b/examples/external/opencv/webcam_pattern_detection.py
index a764e4c27..0c55a1333 100644
--- a/examples/external/opencv/webcam_pattern_detection.py
+++ b/examples/external/opencv/webcam_pattern_detection.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import os
import sys
@@ -111,12 +74,12 @@ class Window(QMainWindow):
# Main menu bar
self.menu = self.menuBar()
self.menu_file = self.menu.addMenu("File")
- exit = QAction("Exit", self, triggered=qApp.quit)
+ exit = QAction("Exit", self, triggered=qApp.quit) # noqa: F821
self.menu_file.addAction(exit)
self.menu_about = self.menu.addMenu("&About")
about = QAction("About Qt", self, shortcut=QKeySequence(QKeySequence.HelpContents),
- triggered=qApp.aboutQt)
+ triggered=qApp.aboutQt) # noqa: F821
self.menu_about.addAction(about)
# Create a label for the display camera
diff --git a/examples/external/pandas/dataframe_model.py b/examples/external/pandas/dataframe_model.py
index f3f335764..b3d9e81fe 100644
--- a/examples/external/pandas/dataframe_model.py
+++ b/examples/external/pandas/dataframe_model.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import pandas as pd
diff --git a/examples/external/scikit/staining_colors_separation.py b/examples/external/scikit/staining_colors_separation.py
index 250fb1716..94fdc3bdc 100644
--- a/examples/external/scikit/staining_colors_separation.py
+++ b/examples/external/scikit/staining_colors_separation.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
@@ -69,12 +32,12 @@ class ApplicationWindow(QMainWindow):
# Main menu bar
self.menu = self.menuBar()
self.menu_file = self.menu.addMenu("File")
- exit = QAction("Exit", self, triggered=qApp.quit)
+ exit = QAction("Exit", self, triggered=qApp.quit) # noqa: F821
self.menu_file.addAction(exit)
self.menu_about = self.menu.addMenu("&About")
about = QAction("About Qt", self, shortcut=QKeySequence(QKeySequence.HelpContents),
- triggered=qApp.aboutQt)
+ triggered=qApp.aboutQt) # noqa: F821
self.menu_about.addAction(about)
# Create an artificial color close to the original one
diff --git a/examples/graphs/2d/hellographs/HelloGraphs/Main.qml b/examples/graphs/2d/hellographs/HelloGraphs/Main.qml
new file mode 100644
index 000000000..b1844aec4
--- /dev/null
+++ b/examples/graphs/2d/hellographs/HelloGraphs/Main.qml
@@ -0,0 +1,153 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtGraphs
+
+Item {
+ id: mainView
+ width: 1280
+ height: 720
+
+ RowLayout {
+ id: graphsRow
+
+ readonly property real margin: mainView.width * 0.02
+
+ anchors.fill: parent
+ anchors.margins: margin
+ spacing: margin
+
+ Rectangle {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ color: "#262626"
+ border.color: "#4d4d4d"
+ border.width: 1
+ radius: graphsRow.margin
+ //! [bargraph]
+ GraphsView {
+ anchors.fill: parent
+ anchors.margins: 16
+ theme: GraphTheme {
+ colorTheme: GraphTheme.ColorThemeDark
+ }
+ //! [bargraph]
+ //! [barseries]
+ BarSeries {
+ axisX: BarCategoryAxis {
+ categories: [2024, 2025, 2026]
+ gridVisible: false
+ minorGridVisible: false
+ }
+ axisY: ValueAxis {
+ min: 20
+ max: 100
+ tickInterval: 10
+ minorTickCount: 9
+ }
+ //! [barseries]
+ //! [barset]
+ BarSet {
+ values: [82, 50, 75]
+ borderWidth: 2
+ color: "#373F26"
+ borderColor: "#DBEB00"
+ }
+ //! [barset]
+ }
+ }
+ }
+
+ Rectangle {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ color: "#262626"
+ border.color: "#4d4d4d"
+ border.width: 1
+ radius: graphsRow.margin
+
+ //! [linegraph]
+ GraphsView {
+ anchors.fill: parent
+ anchors.margins: 16
+ theme: GraphTheme {
+ readonly property color c1: "#DBEB00"
+ readonly property color c2: "#373F26"
+ readonly property color c3: Qt.lighter(c2, 1.5)
+ colorTheme: GraphTheme.ColorThemeDark
+ gridMajorBarsColor: c3
+ gridMinorBarsColor: c2
+ axisXMajorColor: c3
+ axisYMajorColor: c3
+ axisXMinorColor: c2
+ axisYMinorColor: c2
+ axisXLabelsColor: c1
+ axisYLabelsColor: c1
+ }
+ //! [linegraph]
+
+ //! [linemarker]
+ component Marker : Rectangle {
+ width: 16
+ height: 16
+ color: "#ffffff"
+ radius: width * 0.5
+ border.width: 4
+ border.color: "#000000"
+ }
+ //! [linemarker]
+
+ //! [lineseriestheme]
+ SeriesTheme {
+ id: seriesTheme
+ colors: ["#2CDE85", "#DBEB00"]
+ }
+ //! [lineseriestheme]
+
+ //! [lineseries1]
+ LineSeries {
+ id: lineSeries1
+ theme: seriesTheme
+ axisX: ValueAxis {
+ max: 5
+ tickInterval: 1
+ minorTickCount: 9
+ labelDecimals: 1
+ }
+ axisY: ValueAxis {
+ max: 10
+ tickInterval: 1
+ minorTickCount: 4
+ labelDecimals: 1
+ }
+ width: 4
+ pointMarker: Marker { }
+ XYPoint { x: 0; y: 0 }
+ XYPoint { x: 1; y: 2.1 }
+ XYPoint { x: 2; y: 3.3 }
+ XYPoint { x: 3; y: 2.1 }
+ XYPoint { x: 4; y: 4.9 }
+ XYPoint { x: 5; y: 3.0 }
+ }
+ //! [lineseries1]
+
+ //! [lineseries2]
+ LineSeries {
+ id: lineSeries2
+ theme: seriesTheme
+ width: 4
+ pointMarker: Marker { }
+ XYPoint { x: 0; y: 5.0 }
+ XYPoint { x: 1; y: 3.3 }
+ XYPoint { x: 2; y: 7.1 }
+ XYPoint { x: 3; y: 7.5 }
+ XYPoint { x: 4; y: 6.1 }
+ XYPoint { x: 5; y: 3.2 }
+ }
+ //! [lineseries2]
+ }
+ }
+ }
+}
diff --git a/examples/graphs/2d/hellographs/HelloGraphs/qmldir b/examples/graphs/2d/hellographs/HelloGraphs/qmldir
new file mode 100644
index 000000000..007f5fb11
--- /dev/null
+++ b/examples/graphs/2d/hellographs/HelloGraphs/qmldir
@@ -0,0 +1,2 @@
+module HelloGraphs
+Main 1.0 Main.qml
diff --git a/examples/graphs/2d/hellographs/doc/hellographs.rst b/examples/graphs/2d/hellographs/doc/hellographs.rst
new file mode 100644
index 000000000..d0820c3b7
--- /dev/null
+++ b/examples/graphs/2d/hellographs/doc/hellographs.rst
@@ -0,0 +1,51 @@
+HelloGraphs Example
+===================
+
+The example shows how to make a simple 2D bar graph and line graph.
+
+BarGraph
+--------
+
+The first graph in the example is a bar graph. Creating it starts with a GraphsView
+component and setting the theme to one which is suitable on
+dark backgrounds. This theme adjusts the graph background grid and axis lines and
+labels.
+
+To make this a bar graph, add a ``BarSeries.`` The X axis of the series is a
+``BarCategoryAxis`` with 3 categories. We hide both the vertical grid and the
+axis lines. The Y axis of the series is ``ValueAxis`` with visible range
+between 20 and 100. Major ticks with labels will be shown on every 10 values
+using the ``tickInterval`` property. Minor ticks will be shown on every 1
+values setting the ``minorTickCount`` propertyt to 9, which means that between
+every major ticks there will be 9 minor ones.
+
+Then data is added into ``BarSeries`` using ``BarSet.`` There are 3 bars, and we define
+custom bars color and border properties. These properties will override the possible
+theme set for the ``AbstractSeries.``
+
+LineGraph
+---------
+
+The second graph of the example is a line graph. It also starts by defining a
+``GraphsView`` element. A custom ``GraphTheme`` is created to get a custom appearance.
+``GraphTheme`` offers quite a wide range of customization possibilities for the background
+grid and axis, which get applied after the ``colorTheme``.
+
+A custom ``Marker`` component is used to visualize the data points.
+
+The previous bar graph didn't define a separate ``SeriesTheme``, so it uses the
+default theme. This line graph uses a custom theme with the desired line colors.
+
+To make this a line graph, add a ``LineSeries.`` The first series defines
+``axisX`` and ``axisY`` for this graph. It also sets the ``pointMarker`` to use
+the custom ``Marker`` component that was created earlier. Data points are added
+using ``XYPoint`` elements.
+
+The second line series is similar to the first. The ``axisX`` and ``axisY``
+don't need to be defined as the graph already contains them. As this is the
+second ``LineSeries`` inside the ``GraphsView``, second color from the
+``seriesTheme`` gets automatically picked.
+
+.. image:: hellographs.webp
+ :width: 1293
+ :alt: HelloGraphs Screenshot
diff --git a/examples/graphs/2d/hellographs/doc/hellographs.webp b/examples/graphs/2d/hellographs/doc/hellographs.webp
new file mode 100644
index 000000000..3e7666411
--- /dev/null
+++ b/examples/graphs/2d/hellographs/doc/hellographs.webp
Binary files differ
diff --git a/examples/graphs/2d/hellographs/hellographs.pyproject b/examples/graphs/2d/hellographs/hellographs.pyproject
new file mode 100644
index 000000000..e8e8cb228
--- /dev/null
+++ b/examples/graphs/2d/hellographs/hellographs.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "HelloGraphs/Main.qml", "HelloGraphs/qmldir"]
+}
diff --git a/examples/graphs/2d/hellographs/main.py b/examples/graphs/2d/hellographs/main.py
new file mode 100644
index 000000000..acc349beb
--- /dev/null
+++ b/examples/graphs/2d/hellographs/main.py
@@ -0,0 +1,22 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Qt Hello Graphs example from Qt v6.x"""
+
+from pathlib import Path
+import sys
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+
+ viewer = QQuickView()
+ viewer.engine().addImportPath(Path(__file__).parent)
+ viewer.setColor("black")
+ viewer.loadFromModule("HelloGraphs", "Main")
+ viewer.show()
+ r = app.exec()
+ del viewer
+ sys.exit(r)
diff --git a/examples/graphs/3d/minimalsurfacegraph/doc/minimalsurfacegraph.rst b/examples/graphs/3d/minimalsurfacegraph/doc/minimalsurfacegraph.rst
new file mode 100644
index 000000000..bfc7a044d
--- /dev/null
+++ b/examples/graphs/3d/minimalsurfacegraph/doc/minimalsurfacegraph.rst
@@ -0,0 +1,4 @@
+Minimal Surface Example
+=======================
+
+The example shows the minimal code to create a surface.
diff --git a/examples/graphs/3d/minimalsurfacegraph/main.py b/examples/graphs/3d/minimalsurfacegraph/main.py
new file mode 100644
index 000000000..5fb4b4472
--- /dev/null
+++ b/examples/graphs/3d/minimalsurfacegraph/main.py
@@ -0,0 +1,54 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QSize
+from PySide6.QtGui import QVector3D
+from PySide6.QtGraphs import (Q3DSurface, QSurfaceDataItem,
+ QSurface3DSeries)
+from PySide6.QtWidgets import QApplication
+from PySide6.QtQuickWidgets import QQuickWidget
+
+
+DESCRIPTION = """Minimal Qt Graphs Surface Example
+
+Use the mouse wheel to zoom. Rotate using the right mouse button.
+"""
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ print(DESCRIPTION)
+
+ surface = Q3DSurface()
+ axis = surface.axisX()
+ axis.setTitle("X")
+ axis.setTitleVisible(True)
+ axis = surface.axisY()
+ axis.setTitle("Y")
+ axis.setTitleVisible(True)
+ axis = surface.axisZ()
+ axis.setTitle("Z")
+ axis.setTitleVisible(True)
+
+ data = []
+ data_row1 = [QSurfaceDataItem(QVector3D(0, 0.1, 0.5)),
+ QSurfaceDataItem(QVector3D(1, 0.5, 0.5))]
+ data.append(data_row1)
+ data_row2 = [QSurfaceDataItem(QVector3D(0, 1.8, 1)),
+ QSurfaceDataItem(QVector3D(1, 1.2, 1))]
+ data.append(data_row2)
+
+ series = QSurface3DSeries()
+ series.dataProxy().resetArray(data)
+ surface.addSeries(series)
+
+ available_height = app.primaryScreen().availableGeometry().height()
+ width = available_height * 4 / 5
+ surface.resize(QSize(width, width))
+ surface.setResizeMode(QQuickWidget.SizeRootObjectToView)
+ surface.show()
+
+ sys.exit(app.exec())
diff --git a/examples/graphs/3d/widgetgallery/axesinputhandler.py b/examples/graphs/3d/widgetgallery/axesinputhandler.py
new file mode 100644
index 000000000..4c4202974
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/axesinputhandler.py
@@ -0,0 +1,100 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from enum import Enum
+from math import sin, cos, degrees
+
+from PySide6.QtCore import Qt
+from PySide6.QtGraphs import QAbstract3DGraph, Q3DInputHandler
+
+
+class InputState(Enum):
+ StateNormal = 0
+ StateDraggingX = 1
+ StateDraggingZ = 2
+ StateDraggingY = 3
+
+
+class AxesInputHandler(Q3DInputHandler):
+
+ def __init__(self, graph, parent=None):
+ super().__init__(parent)
+ self._mousePressed = False
+ self._state = InputState.StateNormal
+ self._axisX = None
+ self._axisZ = None
+ self._axisY = None
+ self._speedModifier = 15.0
+
+ # Connect to the item selection signal from graph
+ graph.selectedElementChanged.connect(self.handleElementSelected)
+
+ def setAxes(self, axisX, axisZ, axisY):
+ self._axisX = axisX
+ self._axisZ = axisZ
+ self._axisY = axisY
+
+ def setDragSpeedModifier(self, modifier):
+ self._speedModifier = modifier
+
+ def mousePressEvent(self, event, mousePos):
+ super().mousePressEvent(event, mousePos)
+ if Qt.LeftButton == event.button():
+ self._mousePressed = True
+
+ def mouseMoveEvent(self, event, mousePos):
+ # Check if we're trying to drag axis label
+ if self._mousePressed and self._state != InputState.StateNormal:
+ self.setPreviousInputPos(self.inputPosition())
+ self.setInputPosition(mousePos)
+ self.handleAxisDragging()
+ else:
+ super().mouseMoveEvent(event, mousePos)
+
+ def mouseReleaseEvent(self, event, mousePos):
+ super().mouseReleaseEvent(event, mousePos)
+ self._mousePressed = False
+ self._state = InputState.StateNormal
+
+ def handleElementSelected(self, type):
+ if type == QAbstract3DGraph.ElementAxisXLabel:
+ self._state = InputState.StateDraggingX
+ elif type == QAbstract3DGraph.ElementAxisYLabel:
+ self._state = InputState.StateDraggingY
+ elif type == QAbstract3DGraph.ElementAxisZLabel:
+ self._state = InputState.StateDraggingZ
+ else:
+ self._state = InputState.StateNormal
+
+ def handleAxisDragging(self):
+ distance = 0.0
+ # Get scene orientation from active camera
+ xRotation = self.cameraXRotation()
+ yRotation = self.cameraYRotation()
+
+ # Calculate directional drag multipliers based on rotation
+ xMulX = cos(degrees(xRotation))
+ xMulY = sin(degrees(xRotation))
+ zMulX = sin(degrees(xRotation))
+ zMulY = cos(degrees(xRotation))
+
+ # Get the drag amount
+ move = self.inputPosition() - self.previousInputPos()
+
+ # Flip the effect of y movement if we're viewing from below
+ yMove = -move.y() if yRotation < 0 else move.y()
+
+ # Adjust axes
+ if self._state == InputState.StateDraggingX:
+ distance = (move.x() * xMulX - yMove * xMulY) / self._speedModifier
+ self._axisX.setRange(self._axisX.min() - distance,
+ self._axisX.max() - distance)
+ elif self._state == InputState.StateDraggingZ:
+ distance = (move.x() * zMulX + yMove * zMulY) / self._speedModifier
+ self._axisZ.setRange(self._axisZ.min() + distance,
+ self._axisZ.max() + distance)
+ elif self._state == InputState.StateDraggingY:
+ # No need to use adjusted y move here
+ distance = move.y() / self._speedModifier
+ self._axisY.setRange(self._axisY.min() + distance,
+ self._axisY.max() + distance)
diff --git a/examples/graphs/3d/widgetgallery/bargraph.py b/examples/graphs/3d/widgetgallery/bargraph.py
new file mode 100644
index 000000000..822acb4a9
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/bargraph.py
@@ -0,0 +1,272 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from graphmodifier import GraphModifier
+
+from PySide6.QtCore import QObject, Qt
+from PySide6.QtGui import QFont
+from PySide6.QtWidgets import (QButtonGroup, QCheckBox, QComboBox, QFontComboBox,
+ QLabel, QPushButton, QHBoxLayout, QSizePolicy,
+ QRadioButton, QSlider, QVBoxLayout, QWidget)
+from PySide6.QtQuickWidgets import QQuickWidget
+from PySide6.QtGraphs import (QAbstract3DGraph, QAbstract3DSeries, Q3DBars)
+
+
+class BarGraph(QObject):
+
+ def __init__(self, minimum_graph_size, maximum_graph_size):
+ super().__init__()
+ self._barsGraph = Q3DBars()
+ self._barsWidget = QWidget()
+ hLayout = QHBoxLayout(self._barsWidget)
+ self._barsGraph.setMinimumSize(minimum_graph_size)
+ self._barsGraph.setMaximumSize(maximum_graph_size)
+ self._barsGraph.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
+ self._barsGraph.setFocusPolicy(Qt.StrongFocus)
+ self._barsGraph.setResizeMode(QQuickWidget.SizeRootObjectToView)
+ hLayout.addWidget(self._barsGraph, 1)
+
+ vLayout = QVBoxLayout()
+ hLayout.addLayout(vLayout)
+
+ themeList = QComboBox(self._barsWidget)
+ themeList.addItem("Qt")
+ themeList.addItem("Primary Colors")
+ themeList.addItem("Digia")
+ themeList.addItem("Stone Moss")
+ themeList.addItem("Army Blue")
+ themeList.addItem("Retro")
+ themeList.addItem("Ebony")
+ themeList.addItem("Isabelle")
+ themeList.setCurrentIndex(0)
+
+ labelButton = QPushButton(self._barsWidget)
+ labelButton.setText("Change label style")
+
+ smoothCheckBox = QCheckBox(self._barsWidget)
+ smoothCheckBox.setText("Smooth bars")
+ smoothCheckBox.setChecked(False)
+
+ barStyleList = QComboBox(self._barsWidget)
+ barStyleList.addItem("Bar", QAbstract3DSeries.Mesh.Bar)
+ barStyleList.addItem("Pyramid", QAbstract3DSeries.Mesh.Pyramid)
+ barStyleList.addItem("Cone", QAbstract3DSeries.Mesh.Cone)
+ barStyleList.addItem("Cylinder", QAbstract3DSeries.Mesh.Cylinder)
+ barStyleList.addItem("Bevel bar", QAbstract3DSeries.Mesh.BevelBar)
+ barStyleList.addItem("Sphere", QAbstract3DSeries.Mesh.Sphere)
+ barStyleList.setCurrentIndex(4)
+
+ cameraButton = QPushButton(self._barsWidget)
+ cameraButton.setText("Change camera preset")
+
+ zoomToSelectedButton = QPushButton(self._barsWidget)
+ zoomToSelectedButton.setText("Zoom to selected bar")
+
+ selectionModeList = QComboBox(self._barsWidget)
+ selectionModeList.addItem("None", QAbstract3DGraph.SelectionNone)
+ selectionModeList.addItem("Bar", QAbstract3DGraph.SelectionItem)
+ selectionModeList.addItem("Row", QAbstract3DGraph.SelectionRow)
+ sel = QAbstract3DGraph.SelectionItemAndRow
+ selectionModeList.addItem("Bar and Row", sel)
+ selectionModeList.addItem("Column", QAbstract3DGraph.SelectionColumn)
+ sel = QAbstract3DGraph.SelectionItemAndColumn
+ selectionModeList.addItem("Bar and Column", sel)
+ sel = QAbstract3DGraph.SelectionRowAndColumn
+ selectionModeList.addItem("Row and Column", sel)
+ sel = QAbstract3DGraph.SelectionItemRowAndColumn
+ selectionModeList.addItem("Bar, Row and Column", sel)
+ sel = QAbstract3DGraph.SelectionSlice | QAbstract3DGraph.SelectionRow
+ selectionModeList.addItem("Slice into Row", sel)
+ sel = QAbstract3DGraph.SelectionSlice | QAbstract3DGraph.SelectionItemAndRow
+ selectionModeList.addItem("Slice into Row and Item", sel)
+ sel = QAbstract3DGraph.SelectionSlice | QAbstract3DGraph.SelectionColumn
+ selectionModeList.addItem("Slice into Column", sel)
+ sel = (QAbstract3DGraph.SelectionSlice
+ | QAbstract3DGraph.SelectionItemAndColumn)
+ selectionModeList.addItem("Slice into Column and Item", sel)
+ sel = (QAbstract3DGraph.SelectionItemRowAndColumn
+ | QAbstract3DGraph.SelectionMultiSeries)
+ selectionModeList.addItem("Multi: Bar, Row, Col", sel)
+ sel = (QAbstract3DGraph.SelectionSlice
+ | QAbstract3DGraph.SelectionItemAndRow
+ | QAbstract3DGraph.SelectionMultiSeries)
+ selectionModeList.addItem("Multi, Slice: Row, Item", sel)
+ sel = (QAbstract3DGraph.SelectionSlice
+ | QAbstract3DGraph.SelectionItemAndColumn
+ | QAbstract3DGraph.SelectionMultiSeries)
+ selectionModeList.addItem("Multi, Slice: Col, Item", sel)
+ selectionModeList.setCurrentIndex(1)
+
+ backgroundCheckBox = QCheckBox(self._barsWidget)
+ backgroundCheckBox.setText("Show background")
+ backgroundCheckBox.setChecked(False)
+
+ gridCheckBox = QCheckBox(self._barsWidget)
+ gridCheckBox.setText("Show grid")
+ gridCheckBox.setChecked(True)
+
+ seriesCheckBox = QCheckBox(self._barsWidget)
+ seriesCheckBox.setText("Show second series")
+ seriesCheckBox.setChecked(False)
+
+ reverseValueAxisCheckBox = QCheckBox(self._barsWidget)
+ reverseValueAxisCheckBox.setText("Reverse value axis")
+ reverseValueAxisCheckBox.setChecked(False)
+
+ reflectionCheckBox = QCheckBox(self._barsWidget)
+ reflectionCheckBox.setText("Show reflections")
+ reflectionCheckBox.setChecked(False)
+
+ rotationSliderX = QSlider(Qt.Horizontal, self._barsWidget)
+ rotationSliderX.setTickInterval(30)
+ rotationSliderX.setTickPosition(QSlider.TicksBelow)
+ rotationSliderX.setMinimum(-180)
+ rotationSliderX.setValue(0)
+ rotationSliderX.setMaximum(180)
+ rotationSliderY = QSlider(Qt.Horizontal, self._barsWidget)
+ rotationSliderY.setTickInterval(15)
+ rotationSliderY.setTickPosition(QSlider.TicksAbove)
+ rotationSliderY.setMinimum(-90)
+ rotationSliderY.setValue(0)
+ rotationSliderY.setMaximum(90)
+
+ fontSizeSlider = QSlider(Qt.Horizontal, self._barsWidget)
+ fontSizeSlider.setTickInterval(10)
+ fontSizeSlider.setTickPosition(QSlider.TicksBelow)
+ fontSizeSlider.setMinimum(1)
+ fontSizeSlider.setValue(30)
+ fontSizeSlider.setMaximum(100)
+
+ fontList = QFontComboBox(self._barsWidget)
+ fontList.setCurrentFont(QFont("Times New Roman"))
+
+ shadowQuality = QComboBox(self._barsWidget)
+ shadowQuality.addItem("None")
+ shadowQuality.addItem("Low")
+ shadowQuality.addItem("Medium")
+ shadowQuality.addItem("High")
+ shadowQuality.addItem("Low Soft")
+ shadowQuality.addItem("Medium Soft")
+ shadowQuality.addItem("High Soft")
+ shadowQuality.setCurrentIndex(5)
+
+ rangeList = QComboBox(self._barsWidget)
+ rangeList.addItem("2015")
+ rangeList.addItem("2016")
+ rangeList.addItem("2017")
+ rangeList.addItem("2018")
+ rangeList.addItem("2019")
+ rangeList.addItem("2020")
+ rangeList.addItem("2021")
+ rangeList.addItem("2022")
+ rangeList.addItem("All")
+ rangeList.setCurrentIndex(8)
+
+ axisTitlesVisibleCB = QCheckBox(self._barsWidget)
+ axisTitlesVisibleCB.setText("Axis titles visible")
+ axisTitlesVisibleCB.setChecked(True)
+
+ axisTitlesFixedCB = QCheckBox(self._barsWidget)
+ axisTitlesFixedCB.setText("Axis titles fixed")
+ axisTitlesFixedCB.setChecked(True)
+
+ axisLabelRotationSlider = QSlider(Qt.Horizontal, self._barsWidget)
+ axisLabelRotationSlider.setTickInterval(10)
+ axisLabelRotationSlider.setTickPosition(QSlider.TicksBelow)
+ axisLabelRotationSlider.setMinimum(0)
+ axisLabelRotationSlider.setValue(30)
+ axisLabelRotationSlider.setMaximum(90)
+
+ modeGroup = QButtonGroup(self._barsWidget)
+ modeWeather = QRadioButton("Temperature Data", self._barsWidget)
+ modeWeather.setChecked(True)
+ modeCustomProxy = QRadioButton("Custom Proxy Data", self._barsWidget)
+ modeGroup.addButton(modeWeather)
+ modeGroup.addButton(modeCustomProxy)
+
+ vLayout.addWidget(QLabel("Rotate horizontally"))
+ vLayout.addWidget(rotationSliderX, 0, Qt.AlignTop)
+ vLayout.addWidget(QLabel("Rotate vertically"))
+ vLayout.addWidget(rotationSliderY, 0, Qt.AlignTop)
+ vLayout.addWidget(labelButton, 0, Qt.AlignTop)
+ vLayout.addWidget(cameraButton, 0, Qt.AlignTop)
+ vLayout.addWidget(zoomToSelectedButton, 0, Qt.AlignTop)
+ vLayout.addWidget(backgroundCheckBox)
+ vLayout.addWidget(gridCheckBox)
+ vLayout.addWidget(smoothCheckBox)
+ vLayout.addWidget(reflectionCheckBox)
+ vLayout.addWidget(seriesCheckBox)
+ vLayout.addWidget(reverseValueAxisCheckBox)
+ vLayout.addWidget(axisTitlesVisibleCB)
+ vLayout.addWidget(axisTitlesFixedCB)
+ vLayout.addWidget(QLabel("Show year"))
+ vLayout.addWidget(rangeList)
+ vLayout.addWidget(QLabel("Change bar style"))
+ vLayout.addWidget(barStyleList)
+ vLayout.addWidget(QLabel("Change selection mode"))
+ vLayout.addWidget(selectionModeList)
+ vLayout.addWidget(QLabel("Change theme"))
+ vLayout.addWidget(themeList)
+ vLayout.addWidget(QLabel("Adjust shadow quality"))
+ vLayout.addWidget(shadowQuality)
+ vLayout.addWidget(QLabel("Change font"))
+ vLayout.addWidget(fontList)
+ vLayout.addWidget(QLabel("Adjust font size"))
+ vLayout.addWidget(fontSizeSlider)
+ vLayout.addWidget(QLabel("Axis label rotation"))
+ vLayout.addWidget(axisLabelRotationSlider, 0, Qt.AlignTop)
+ vLayout.addWidget(modeWeather, 0, Qt.AlignTop)
+ vLayout.addWidget(modeCustomProxy, 1, Qt.AlignTop)
+
+ self._modifier = GraphModifier(self._barsGraph, self)
+
+ rotationSliderX.valueChanged.connect(self._modifier.rotateX)
+ rotationSliderY.valueChanged.connect(self._modifier.rotateY)
+
+ labelButton.clicked.connect(self._modifier.changeLabelBackground)
+ cameraButton.clicked.connect(self._modifier.changePresetCamera)
+ zoomToSelectedButton.clicked.connect(self._modifier.zoomToSelectedBar)
+
+ backgroundCheckBox.stateChanged.connect(self._modifier.setBackgroundEnabled)
+ gridCheckBox.stateChanged.connect(self._modifier.setGridEnabled)
+ smoothCheckBox.stateChanged.connect(self._modifier.setSmoothBars)
+ seriesCheckBox.stateChanged.connect(self._modifier.setSeriesVisibility)
+ reverseValueAxisCheckBox.stateChanged.connect(self._modifier.setReverseValueAxis)
+ reflectionCheckBox.stateChanged.connect(self._modifier.setReflection)
+
+ self._modifier.backgroundEnabledChanged.connect(backgroundCheckBox.setChecked)
+ self._modifier.gridEnabledChanged.connect(gridCheckBox.setChecked)
+
+ rangeList.currentIndexChanged.connect(self._modifier.changeRange)
+
+ barStyleList.currentIndexChanged.connect(self._modifier.changeStyle)
+
+ selectionModeList.currentIndexChanged.connect(self._modifier.changeSelectionMode)
+
+ themeList.currentIndexChanged.connect(self._modifier.changeTheme)
+
+ shadowQuality.currentIndexChanged.connect(self._modifier.changeShadowQuality)
+
+ self._modifier.shadowQualityChanged.connect(shadowQuality.setCurrentIndex)
+ self._barsGraph.shadowQualityChanged.connect(self._modifier.shadowQualityUpdatedByVisual)
+
+ fontSizeSlider.valueChanged.connect(self._modifier.changeFontSize)
+ fontList.currentFontChanged.connect(self._modifier.changeFont)
+
+ self._modifier.fontSizeChanged.connect(fontSizeSlider.setValue)
+ self._modifier.fontChanged.connect(fontList.setCurrentFont)
+
+ axisTitlesVisibleCB.stateChanged.connect(self._modifier.setAxisTitleVisibility)
+ axisTitlesFixedCB.stateChanged.connect(self._modifier.setAxisTitleFixed)
+ axisLabelRotationSlider.valueChanged.connect(self._modifier.changeLabelRotation)
+
+ modeWeather.toggled.connect(self._modifier.setDataModeToWeather)
+ modeCustomProxy.toggled.connect(self._modifier.setDataModeToCustom)
+ modeWeather.toggled.connect(seriesCheckBox.setEnabled)
+ modeWeather.toggled.connect(rangeList.setEnabled)
+ modeWeather.toggled.connect(axisTitlesVisibleCB.setEnabled)
+ modeWeather.toggled.connect(axisTitlesFixedCB.setEnabled)
+ modeWeather.toggled.connect(axisLabelRotationSlider.setEnabled)
+
+ def barsWidget(self):
+ return self._barsWidget
diff --git a/examples/graphs/3d/widgetgallery/custominputhandler.py b/examples/graphs/3d/widgetgallery/custominputhandler.py
new file mode 100644
index 000000000..15fe00e70
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/custominputhandler.py
@@ -0,0 +1,177 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from enum import Enum
+from math import sin, cos, degrees
+
+from PySide6.QtCore import Qt
+from PySide6.QtGraphs import (QAbstract3DGraph, Q3DInputHandler)
+
+
+class InputState(Enum):
+ StateNormal = 0
+ StateDraggingX = 1
+ StateDraggingZ = 2
+ StateDraggingY = 3
+
+
+class CustomInputHandler(Q3DInputHandler):
+
+ def __init__(self, graph, parent=None):
+ super().__init__(parent)
+ self._highlight = None
+ self._mousePressed = False
+ self._state = InputState.StateNormal
+ self._axisX = None
+ self._axisY = None
+ self._axisZ = None
+ self._speedModifier = 20.0
+ self._aspectRatio = 0.0
+ self._axisXMinValue = 0.0
+ self._axisXMaxValue = 0.0
+ self._axisXMinRange = 0.0
+ self._axisZMinValue = 0.0
+ self._axisZMaxValue = 0.0
+ self._axisZMinRange = 0.0
+ self._areaMinValue = 0.0
+ self._areaMaxValue = 0.0
+
+ # Connect to the item selection signal from graph
+ graph.selectedElementChanged.connect(self.handleElementSelected)
+
+ def setAspectRatio(self, ratio):
+ self._aspectRatio = ratio
+
+ def setHighlightSeries(self, series):
+ self._highlight = series
+
+ def setDragSpeedModifier(self, modifier):
+ self._speedModifier = modifier
+
+ def setLimits(self, min, max, minRange):
+ self._areaMinValue = min
+ self._areaMaxValue = max
+ self._axisXMinValue = self._areaMinValue
+ self._axisXMaxValue = self._areaMaxValue
+ self._axisZMinValue = self._areaMinValue
+ self._axisZMaxValue = self._areaMaxValue
+ self._axisXMinRange = minRange
+ self._axisZMinRange = minRange
+
+ def setAxes(self, axisX, axisY, axisZ):
+ self._axisX = axisX
+ self._axisY = axisY
+ self._axisZ = axisZ
+
+ def mousePressEvent(self, event, mousePos):
+ if Qt.LeftButton == event.button():
+ self._highlight.setVisible(False)
+ self._mousePressed = True
+ super().mousePressEvent(event, mousePos)
+
+ def wheelEvent(self, event):
+ delta = float(event.angleDelta().y())
+
+ self._axisXMinValue += delta
+ self._axisXMaxValue -= delta
+ self._axisZMinValue += delta
+ self._axisZMaxValue -= delta
+ self.checkConstraints()
+
+ y = (self._axisXMaxValue - self._axisXMinValue) * self._aspectRatio
+
+ self._axisX.setRange(self._axisXMinValue, self._axisXMaxValue)
+ self._axisY.setRange(100.0, y)
+ self._axisZ.setRange(self._axisZMinValue, self._axisZMaxValue)
+
+ def mouseMoveEvent(self, event, mousePos):
+ # Check if we're trying to drag axis label
+ if self._mousePressed and self._state != InputState.StateNormal:
+ self.setPreviousInputPos(self.inputPosition())
+ self.setInputPosition(mousePos)
+ self.handleAxisDragging()
+ else:
+ super().mouseMoveEvent(event, mousePos)
+
+ def mouseReleaseEvent(self, event, mousePos):
+ super().mouseReleaseEvent(event, mousePos)
+ self._mousePressed = False
+ self._state = InputState.StateNormal
+
+ def handleElementSelected(self, type):
+ if type == QAbstract3DGraph.ElementAxisXLabel:
+ self._state = InputState.StateDraggingX
+ elif type == QAbstract3DGraph.ElementAxisZLabel:
+ self._state = InputState.StateDraggingZ
+ else:
+ self._state = InputState.StateNormal
+
+ def handleAxisDragging(self):
+ distance = 0.0
+
+ # Get scene orientation from active camera
+ xRotation = self.scene().cameraXRotation()
+
+ # Calculate directional drag multipliers based on rotation
+ xMulX = cos(degrees(xRotation))
+ xMulY = sin(degrees(xRotation))
+ zMulX = xMulY
+ zMulY = xMulX
+
+ # Get the drag amount
+ move = self.inputPosition() - self.previousInputPos()
+
+ # Adjust axes
+ if self._state == InputState.StateDraggingX:
+ distance = (move.x() * xMulX - move.y() * xMulY) * self._speedModifier
+ self._axisXMinValue -= distance
+ self._axisXMaxValue -= distance
+ if self._axisXMinValue < self._areaMinValue:
+ dist = self._axisXMaxValue - self._axisXMinValue
+ self._axisXMinValue = self._areaMinValue
+ self._axisXMaxValue = self._axisXMinValue + dist
+
+ if self._axisXMaxValue > self._areaMaxValue:
+ dist = self._axisXMaxValue - self._axisXMinValue
+ self._axisXMaxValue = self._areaMaxValue
+ self._axisXMinValue = self._axisXMaxValue - dist
+
+ self._axisX.setRange(self._axisXMinValue, self._axisXMaxValue)
+ elif self._state == InputState.StateDraggingZ:
+ distance = (move.x() * zMulX + move.y() * zMulY) * self._speedModifier
+ self._axisZMinValue += distance
+ self._axisZMaxValue += distance
+ if self._axisZMinValue < self._areaMinValue:
+ dist = self._axisZMaxValue - self._axisZMinValue
+ self._axisZMinValue = self._areaMinValue
+ self._axisZMaxValue = self._axisZMinValue + dist
+
+ if self._axisZMaxValue > self._areaMaxValue:
+ dist = self._axisZMaxValue - self._axisZMinValue
+ self._axisZMaxValue = self._areaMaxValue
+ self._axisZMinValue = self._axisZMaxValue - dist
+
+ self._axisZ.setRange(self._axisZMinValue, self._axisZMaxValue)
+
+ def checkConstraints(self):
+ if self._axisXMinValue < self._areaMinValue:
+ self._axisXMinValue = self._areaMinValue
+ if self._axisXMaxValue > self._areaMaxValue:
+ self._axisXMaxValue = self._areaMaxValue
+ # Don't allow too much zoom in
+ range = self._axisXMaxValue - self._axisXMinValue
+ if range < self._axisXMinRange:
+ adjust = (self._axisXMinRange - range) / 2.0
+ self._axisXMinValue -= adjust
+ self._axisXMaxValue += adjust
+
+ if self._axisZMinValue < self._areaMinValue:
+ self._axisZMinValue = self._areaMinValue
+ if self._axisZMaxValue > self._areaMaxValue:
+ self._axisZMaxValue = self._areaMaxValue
+ # Don't allow too much zoom in
+ range = self._axisZMaxValue - self._axisZMinValue
+ if range < self._axisZMinRange:
+ adjust = (self._axisZMinRange - range) / 2.0
+ self._axisZMinValue -= adjust
+ self._axisZMaxValue += adjust
diff --git a/examples/graphs/3d/widgetgallery/data/layer_1.png b/examples/graphs/3d/widgetgallery/data/layer_1.png
new file mode 100644
index 000000000..9138c710a
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/data/layer_1.png
Binary files differ
diff --git a/examples/graphs/3d/widgetgallery/data/layer_2.png b/examples/graphs/3d/widgetgallery/data/layer_2.png
new file mode 100644
index 000000000..61631ae8b
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/data/layer_2.png
Binary files differ
diff --git a/examples/graphs/3d/widgetgallery/data/layer_3.png b/examples/graphs/3d/widgetgallery/data/layer_3.png
new file mode 100644
index 000000000..066ffbe75
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/data/layer_3.png
Binary files differ
diff --git a/examples/graphs/3d/widgetgallery/data/license.txt b/examples/graphs/3d/widgetgallery/data/license.txt
new file mode 100644
index 000000000..749daf31f
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/data/license.txt
@@ -0,0 +1,77 @@
+License information regarding the data obtained from National Land Survey of
+Finland http://www.maanmittauslaitos.fi/en
+- topographic model from Elevation model 2 m (U4421B, U4421D, U4422A and
+ U4422C) 08/2014
+- map image extracted from Topographic map raster 1:50 000 (U442) 08/2014
+
+National Land Survey open data licence - version 1.0 - 1 May 2012
+
+1. General information
+
+The National Land Survey of Finland (hereinafter the Licensor), as the holder
+of the immaterial rights to the data, has granted on the terms mentioned below
+the right to use a copy (hereinafter data or dataset(s)) of the data (or a part
+of it).
+
+The Licensee is a natural or legal person who makes use of the data covered by
+this licence. The Licensee accepts the terms of this licence by receiving the
+dataset(s) covered by the licence.
+
+This Licence agreement does not create a co-operation or business relationship
+between the Licensee and the Licensor.
+
+2. Terms of the licence
+
+2.1. Right of use
+
+This licence grants a worldwide, free of charge and irrevocable parallel right
+of use to open data. According to the terms of the licence, data received by
+the Licensee can be freely:
+ - copied, distributed and published,
+ - modified and utilised commercially and non-commercially,
+ - inserted into other products and
+ - used as a part of a software application or service.
+
+2.2. Duties and responsibilities of the Licensee
+
+Through reasonable means suitable to the distribution medium or method which is
+used in conjunction with a product containing data or a service utilising data
+covered by this licence or while distributing data, the Licensee shall:
+ - mention the name of the Licensor, the name of the dataset(s) and the time
+ when the National Land Survey has delivered the dataset(s) (e.g.: contains
+ data from the National Land Survey of Finland Topographic Database 06/2012)
+ - provide a copy of this licence or a link to it, as well as
+ - require third parties to provide the same information when granting rights
+ to copies of dataset(s) or products and services containing such data and
+ - remove the name of the Licensor from the product or service, if required to
+ do so by the Licensor.
+
+The terms of this licence do not allow the Licensee to state in conjunction
+with the use of dataset(s) that the Licensor supports or recommends such use.
+
+2.3. Duties and responsibilities of the Licensor
+
+The Licensor shall ensure that
+ - the Licensor has the right to grant rights to the dataset(s) in accordance
+ with this licence.
+
+The data has been licensed "as is" and the Licensor
+ - shall not be held responsible for any errors or omissions in the data,
+ disclaims any warranty for the validity or up to date status of the data and
+ shall be free from liability for direct or consequential damages arising
+ from the use of data provided by the Licensor,
+ - and is not obligated to ensure the continuous availability of the data, nor
+ to announce in advance the interruption or cessation of availability, and
+ the Licensor shall be free from liability for direct or consequential
+ damages arising from any such interruption or cessation.
+
+3. Jurisdiction
+
+Finnish law shall apply to this licence.
+
+4. Changes to this licence
+
+The Licensor may at any time change the terms of the licence or apply a
+different licence to the data. The terms of this licence shall, however, still
+apply to such data that has been received prior to the change of the terms of
+the licence or the licence itself.
diff --git a/examples/graphs/3d/widgetgallery/data/maptexture.jpg b/examples/graphs/3d/widgetgallery/data/maptexture.jpg
new file mode 100644
index 000000000..ae5d66ebe
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/data/maptexture.jpg
Binary files differ
diff --git a/examples/graphs/3d/widgetgallery/data/narrowarrow.mesh b/examples/graphs/3d/widgetgallery/data/narrowarrow.mesh
new file mode 100644
index 000000000..288867b1e
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/data/narrowarrow.mesh
Binary files differ
diff --git a/examples/graphs/3d/widgetgallery/data/oilrig.mesh b/examples/graphs/3d/widgetgallery/data/oilrig.mesh
new file mode 100644
index 000000000..4a7baeddf
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/data/oilrig.mesh
Binary files differ
diff --git a/examples/graphs/3d/widgetgallery/data/pipe.mesh b/examples/graphs/3d/widgetgallery/data/pipe.mesh
new file mode 100644
index 000000000..984b6d443
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/data/pipe.mesh
Binary files differ
diff --git a/examples/graphs/3d/widgetgallery/data/raindata.txt b/examples/graphs/3d/widgetgallery/data/raindata.txt
new file mode 100644
index 000000000..d95589219
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/data/raindata.txt
@@ -0,0 +1,158 @@
+# Rainfall per month from 2010 to 2022 in Northern Finland (Oulu)
+# Format: year, month, rainfall
+2010,1, 0,
+2010,2, 3.4,
+2010,3, 52,
+2010,4, 33.8,
+2010,5, 45.6,
+2010,6, 43.8,
+2010,7, 104.6,
+2010,8, 105.4,
+2010,9, 107.2,
+2010,10,38.6,
+2010,11,17.8,
+2010,12,0,
+2011,1, 8.2,
+2011,2, 1.6,
+2011,3, 27.4,
+2011,4, 15.8,
+2011,5, 57.6,
+2011,6, 85.2,
+2011,7, 127,
+2011,8, 72.2,
+2011,9, 82.2,
+2011,10,62.4,
+2011,11,31.6,
+2011,12,53.8,
+2012,1, 0,
+2012,2, 5,
+2012,3, 32.4,
+2012,4, 57.6,
+2012,5, 71.4,
+2012,6, 60.8,
+2012,7, 109,
+2012,8, 43.6,
+2012,9, 79.4,
+2012,10,117.2,
+2012,11,59,
+2012,12,0.2,
+2013,1, 28,
+2013,2, 19,
+2013,3, 0,
+2013,4, 37.6,
+2013,5, 44.2,
+2013,6, 104.8,
+2013,7, 84.2,
+2013,8, 57.2,
+2013,9, 37.2,
+2013,10,64.6,
+2013,11,77.8,
+2013,12,92.8,
+2014,1, 23.8,
+2014,2, 23.6,
+2014,3, 15.4,
+2014,4, 13.2,
+2014,5, 36.4,
+2014,6, 26.4,
+2014,7, 95.8,
+2014,8, 81.8,
+2014,9, 13.8,
+2014,10,94.6,
+2014,11,44.6,
+2014,12,31,
+2015,1, 37.4,
+2015,2, 21,
+2015,3, 42,
+2015,4, 8.8,
+2015,5, 82.4,
+2015,6, 150,
+2015,7, 56.8,
+2015,8, 67.2,
+2015,9, 131.2,
+2015,10,38.4,
+2015,11,83.4,
+2015,12,47.8,
+2016,1, 12.4,
+2016,2, 34.8,
+2016,3, 29,
+2016,4, 40.4,
+2016,5, 32.4,
+2016,6, 80.2,
+2016,7, 102.6,
+2016,8, 95.6,
+2016,9, 40.2,
+2016,10,7.8,
+2016,11,39.6,
+2016,12,8.8,
+2017,1, 9.4,
+2017,2, 6.6,
+2017,3, 29,
+2017,4, 46.2,
+2017,5, 43.2,
+2017,6, 25.2,
+2017,7, 72.4,
+2017,8, 58.8,
+2017,9, 68.8,
+2017,10,45.8,
+2017,11,36.8,
+2017,12,29.6,
+2018,1, 19.8,
+2018,2, 0.8,
+2018,3, 4,
+2018,4, 23.2,
+2018,5, 13.2,
+2018,6, 62.8,
+2018,7, 33,
+2018,8, 96.6,
+2018,9, 72.6,
+2018,10,48.8,
+2018,11,31.8,
+2018,12,12.8,
+2019,1, 0.2,
+2019,2, 24.8,
+2019,3, 32,
+2019,4, 8.8,
+2019,5, 71.4,
+2019,6, 65.8,
+2019,7, 17.6,
+2019,8, 90,
+2019,9, 50,
+2019,10,77,
+2019,11,27,
+2019,12,43.2,
+2020,1, 28.8,
+2020,2, 45,
+2020,3, 18.6,
+2020,4, 13,
+2020,5, 30.8,
+2020,6, 21.4,
+2020,7, 163.6,
+2020,8, 12,
+2020,9, 102.4,
+2020,10,133.2,
+2020,11,69.8,
+2020,12,40.6,
+2021,1, 0.4,
+2021,2, 21.6,
+2021,3, 24,
+2021,4, 51.4,
+2021,5, 76.4,
+2021,6, 29.2,
+2021,7, 36.4,
+2021,8, 116,
+2021,9, 72.4,
+2021,10,93.4,
+2021,11,21,
+2021,12,10.2,
+2022,1, 8.6,
+2022,2, 6.6,
+2022,3, 5.2,
+2022,4, 15.2,
+2022,5, 37.6,
+2022,6, 45,
+2022,7, 67.4,
+2022,8, 161.6,
+2022,9, 22.8,
+2022,10,75.2,
+2022,11,21.8,
+2022,12,0.2
diff --git a/examples/graphs/3d/widgetgallery/data/refinery.mesh b/examples/graphs/3d/widgetgallery/data/refinery.mesh
new file mode 100644
index 000000000..a7e249353
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/data/refinery.mesh
Binary files differ
diff --git a/examples/graphs/3d/widgetgallery/data/topography.png b/examples/graphs/3d/widgetgallery/data/topography.png
new file mode 100644
index 000000000..9349cdb31
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/data/topography.png
Binary files differ
diff --git a/examples/graphs/3d/widgetgallery/doc/widgetgallery.rst b/examples/graphs/3d/widgetgallery/doc/widgetgallery.rst
new file mode 100644
index 000000000..1470001d6
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/doc/widgetgallery.rst
@@ -0,0 +1,11 @@
+Widget Gallery
+==============
+
+
+Widget Gallery demonstrates all three graph types and some of their special
+features. The graphs have their own tabs in the application.
+
+
+.. image:: widgetgallery.webp
+ :width: 400
+ :alt: Widget Screenshot
diff --git a/examples/graphs/3d/widgetgallery/doc/widgetgallery.webp b/examples/graphs/3d/widgetgallery/doc/widgetgallery.webp
new file mode 100644
index 000000000..eb5767264
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/doc/widgetgallery.webp
Binary files differ
diff --git a/examples/graphs/3d/widgetgallery/graphmodifier.py b/examples/graphs/3d/widgetgallery/graphmodifier.py
new file mode 100644
index 000000000..2eaafa792
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/graphmodifier.py
@@ -0,0 +1,391 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+from math import atan, degrees
+import numpy as np
+
+from PySide6.QtCore import QObject, QPropertyAnimation, Signal, Slot
+from PySide6.QtGui import QFont, QVector3D
+from PySide6.QtGraphs import (QAbstract3DGraph, QAbstract3DSeries,
+ QBarDataItem, QBar3DSeries, QCategory3DAxis,
+ QValue3DAxis, Q3DTheme)
+
+from rainfalldata import RainfallData
+
+# Set up data
+TEMP_OULU = np.array([
+ [-7.4, -2.4, 0.0, 3.0, 8.2, 11.6, 14.7, 15.4, 11.4, 4.2, 2.1, -2.3], # 2015
+ [-13.4, -3.9, -1.8, 3.1, 10.6, 13.7, 17.8, 13.6, 10.7, 3.5, -3.1, -4.2], # 2016
+ [-5.7, -6.7, -3.0, -0.1, 4.7, 12.4, 16.1, 14.1, 9.4, 3.0, -0.3, -3.2], # 2017
+ [-6.4, -11.9, -7.4, 1.9, 11.4, 12.4, 21.5, 16.1, 11.0, 4.4, 2.1, -4.1], # 2018
+ [-11.7, -6.1, -2.4, 3.9, 7.2, 14.5, 15.6, 14.4, 8.5, 2.0, -3.0, -1.5], # 2019
+ [-2.1, -3.4, -1.8, 0.6, 7.0, 17.1, 15.6, 15.4, 11.1, 5.6, 1.9, -1.7], # 2020
+ [-9.6, -11.6, -3.2, 2.4, 7.8, 17.3, 19.4, 14.2, 8.0, 5.2, -2.2, -8.6], # 2021
+ [-7.3, -6.4, -1.8, 1.3, 8.1, 15.5, 17.6, 17.6, 9.1, 5.4, -1.5, -4.4]], # 2022
+ np.float64)
+
+
+TEMP_HELSINKI = np.array([
+ [-2.0, -0.1, 1.8, 5.1, 9.7, 13.7, 16.3, 17.3, 12.7, 5.4, 4.6, 2.1], # 2015
+ [-10.3, -0.6, 0.0, 4.9, 14.3, 15.7, 17.7, 16.0, 12.7, 4.6, -1.0, -0.9], # 2016
+ [-2.9, -3.3, 0.7, 2.3, 9.9, 13.8, 16.1, 15.9, 11.4, 5.0, 2.7, 0.7], # 2017
+ [-2.2, -8.4, -4.7, 5.0, 15.3, 15.8, 21.2, 18.2, 13.3, 6.7, 2.8, -2.0], # 2018
+ [-6.2, -0.5, -0.3, 6.8, 10.6, 17.9, 17.5, 16.8, 11.3, 5.2, 1.8, 1.4], # 2019
+ [1.9, 0.5, 1.7, 4.5, 9.5, 18.4, 16.5, 16.8, 13.0, 8.2, 4.4, 0.9], # 2020
+ [-4.7, -8.1, -0.9, 4.5, 10.4, 19.2, 20.9, 15.4, 9.5, 8.0, 1.5, -6.7], # 2021
+ [-3.3, -2.2, -0.2, 3.3, 9.6, 16.9, 18.1, 18.9, 9.2, 7.6, 2.3, -3.4]], # 2022
+ np.float64)
+
+
+class GraphModifier(QObject):
+
+ shadowQualityChanged = Signal(int)
+ backgroundEnabledChanged = Signal(bool)
+ gridEnabledChanged = Signal(bool)
+ fontChanged = Signal(QFont)
+ fontSizeChanged = Signal(int)
+
+ def __init__(self, bargraph, parent):
+ super().__init__(parent)
+ self._graph = bargraph
+ self._temperatureAxis = QValue3DAxis()
+ self._yearAxis = QCategory3DAxis()
+ self._monthAxis = QCategory3DAxis()
+ self._primarySeries = QBar3DSeries()
+ self._secondarySeries = QBar3DSeries()
+ self._celsiusString = "°C"
+
+ self._xRotation = float(0)
+ self._yRotation = float(0)
+ self._fontSize = 30
+ self._segments = 4
+ self._subSegments = 3
+ self._minval = float(-20)
+ self._maxval = float(20)
+ self._barMesh = QAbstract3DSeries.Mesh.BevelBar
+ self._smooth = False
+ self._animationCameraX = QPropertyAnimation()
+ self._animationCameraY = QPropertyAnimation()
+ self._animationCameraZoom = QPropertyAnimation()
+ self._animationCameraTarget = QPropertyAnimation()
+ self._defaultAngleX = float(0)
+ self._defaultAngleY = float(0)
+ self._defaultZoom = float(0)
+ self._defaultTarget = []
+ self._customData = None
+
+ self._graph.setShadowQuality(QAbstract3DGraph.ShadowQuality.SoftMedium)
+ theme = self._graph.activeTheme()
+ theme.setBackgroundEnabled(False)
+ theme.setFont(QFont("Times New Roman", self._fontSize))
+ theme.setLabelBackgroundEnabled(True)
+ self._graph.setMultiSeriesUniform(True)
+
+ self._months = ["January", "February", "March", "April", "May", "June",
+ "July", "August", "September", "October", "November",
+ "December"]
+ self._years = ["2015", "2016", "2017", "2018", "2019", "2020",
+ "2021", "2022"]
+
+ self._temperatureAxis.setTitle("Average temperature")
+ self._temperatureAxis.setSegmentCount(self._segments)
+ self._temperatureAxis.setSubSegmentCount(self._subSegments)
+ self._temperatureAxis.setRange(self._minval, self._maxval)
+ self._temperatureAxis.setLabelFormat("%.1f " + self._celsiusString)
+ self._temperatureAxis.setLabelAutoRotation(30.0)
+ self._temperatureAxis.setTitleVisible(True)
+
+ self._yearAxis.setTitle("Year")
+ self._yearAxis.setLabelAutoRotation(30.0)
+ self._yearAxis.setTitleVisible(True)
+ self._monthAxis.setTitle("Month")
+ self._monthAxis.setLabelAutoRotation(30.0)
+ self._monthAxis.setTitleVisible(True)
+
+ self._graph.setValueAxis(self._temperatureAxis)
+ self._graph.setRowAxis(self._yearAxis)
+ self._graph.setColumnAxis(self._monthAxis)
+
+ format = "Oulu - @colLabel @rowLabel: @valueLabel"
+ self._primarySeries.setItemLabelFormat(format)
+ self._primarySeries.setMesh(QAbstract3DSeries.Mesh.BevelBar)
+ self._primarySeries.setMeshSmooth(False)
+
+ format = "Helsinki - @colLabel @rowLabel: @valueLabel"
+ self._secondarySeries.setItemLabelFormat(format)
+ self._secondarySeries.setMesh(QAbstract3DSeries.Mesh.BevelBar)
+ self._secondarySeries.setMeshSmooth(False)
+ self._secondarySeries.setVisible(False)
+
+ self._graph.addSeries(self._primarySeries)
+ self._graph.addSeries(self._secondarySeries)
+
+ self.changePresetCamera()
+
+ self.resetTemperatureData()
+
+ # Set up property animations for zooming to the selected bar
+ self._defaultAngleX = self._graph.cameraXRotation()
+ self._defaultAngleY = self._graph.cameraYRotation()
+ self._defaultZoom = self._graph.cameraZoomLevel()
+ self._defaultTarget = self._graph.cameraTargetPosition()
+
+ self._animationCameraX.setTargetObject(self._graph)
+ self._animationCameraY.setTargetObject(self._graph)
+ self._animationCameraZoom.setTargetObject(self._graph)
+ self._animationCameraTarget.setTargetObject(self._graph)
+
+ self._animationCameraX.setPropertyName(b"cameraXRotation")
+ self._animationCameraY.setPropertyName(b"cameraYRotation")
+ self._animationCameraZoom.setPropertyName(b"cameraZoomLevel")
+ self._animationCameraTarget.setPropertyName(b"cameraTargetPosition")
+
+ duration = 1700
+ self._animationCameraX.setDuration(duration)
+ self._animationCameraY.setDuration(duration)
+ self._animationCameraZoom.setDuration(duration)
+ self._animationCameraTarget.setDuration(duration)
+
+ # The zoom always first zooms out above the graph and then zooms in
+ zoomOutFraction = 0.3
+ self._animationCameraX.setKeyValueAt(zoomOutFraction, 0.0)
+ self._animationCameraY.setKeyValueAt(zoomOutFraction, 90.0)
+ self._animationCameraZoom.setKeyValueAt(zoomOutFraction, 50.0)
+ self._animationCameraTarget.setKeyValueAt(zoomOutFraction,
+ QVector3D(0, 0, 0))
+ self._customData = RainfallData()
+
+ def resetTemperatureData(self):
+ # Create data arrays
+ dataSet = []
+ dataSet2 = []
+
+ for year in range(0, len(self._years)):
+ # Create a data row
+ dataRow = []
+ dataRow2 = []
+ for month in range(0, len(self._months)):
+ # Add data to the row
+ item = QBarDataItem()
+ item.setValue(TEMP_OULU[year][month])
+ dataRow.append(item)
+ item = QBarDataItem()
+ item.setValue(TEMP_HELSINKI[year][month])
+ dataRow2.append(item)
+
+ # Add the row to the set
+ dataSet.append(dataRow)
+ dataSet2.append(dataRow2)
+
+ # Add data to the data proxy (the data proxy assumes ownership of it)
+ self._primarySeries.dataProxy().resetArray(dataSet, self._years, self._months)
+ self._secondarySeries.dataProxy().resetArray(dataSet2, self._years, self._months)
+
+ @Slot(int)
+ def changeRange(self, range):
+ if range >= len(self._years):
+ self._yearAxis.setRange(0, len(self._years) - 1)
+ else:
+ self._yearAxis.setRange(range, range)
+
+ @Slot(int)
+ def changeStyle(self, style):
+ comboBox = self.sender()
+ if comboBox:
+ self._barMesh = comboBox.itemData(style)
+ self._primarySeries.setMesh(self._barMesh)
+ self._secondarySeries.setMesh(self._barMesh)
+ self._customData.customSeries().setMesh(self._barMesh)
+
+ def changePresetCamera(self):
+ self._animationCameraX.stop()
+ self._animationCameraY.stop()
+ self._animationCameraZoom.stop()
+ self._animationCameraTarget.stop()
+
+ # Restore camera target in case animation has changed it
+ self._graph.setCameraTargetPosition(QVector3D(0.0, 0.0, 0.0))
+
+ self._preset = QAbstract3DGraph.CameraPreset.Front.value
+
+ self._graph.setCameraPreset(QAbstract3DGraph.CameraPreset(self._preset))
+
+ self._preset += 1
+ if self._preset > QAbstract3DGraph.CameraPreset.DirectlyBelow.value:
+ self._preset = QAbstract3DGraph.CameraPreset.FrontLow.value
+
+ @Slot(int)
+ def changeTheme(self, theme):
+ currentTheme = self._graph.activeTheme()
+ currentTheme.setType(Q3DTheme.Theme(theme))
+ self.backgroundEnabledChanged.emit(currentTheme.isBackgroundEnabled())
+ self.gridEnabledChanged.emit(currentTheme.isGridEnabled())
+ self.fontChanged.emit(currentTheme.font())
+ self.fontSizeChanged.emit(currentTheme.font().pointSize())
+
+ def changeLabelBackground(self):
+ theme = self._graph.activeTheme()
+ theme.setLabelBackgroundEnabled(not theme.isLabelBackgroundEnabled())
+
+ @Slot(int)
+ def changeSelectionMode(self, selectionMode):
+ comboBox = self.sender()
+ if comboBox:
+ flags = comboBox.itemData(selectionMode)
+ self._graph.setSelectionMode(QAbstract3DGraph.SelectionFlags(flags))
+
+ def changeFont(self, font):
+ newFont = font
+ self._graph.activeTheme().setFont(newFont)
+
+ def changeFontSize(self, fontsize):
+ self._fontSize = fontsize
+ font = self._graph.activeTheme().font()
+ font.setPointSize(self._fontSize)
+ self._graph.activeTheme().setFont(font)
+
+ @Slot(QAbstract3DGraph.ShadowQuality)
+ def shadowQualityUpdatedByVisual(self, sq):
+ # Updates the UI component to show correct shadow quality
+ self.shadowQualityChanged.emit(sq.value)
+
+ @Slot(int)
+ def changeLabelRotation(self, rotation):
+ self._temperatureAxis.setLabelAutoRotation(float(rotation))
+ self._monthAxis.setLabelAutoRotation(float(rotation))
+ self._yearAxis.setLabelAutoRotation(float(rotation))
+
+ @Slot(bool)
+ def setAxisTitleVisibility(self, enabled):
+ self._temperatureAxis.setTitleVisible(enabled)
+ self._monthAxis.setTitleVisible(enabled)
+ self._yearAxis.setTitleVisible(enabled)
+
+ @Slot(bool)
+ def setAxisTitleFixed(self, enabled):
+ self._temperatureAxis.setTitleFixed(enabled)
+ self._monthAxis.setTitleFixed(enabled)
+ self._yearAxis.setTitleFixed(enabled)
+
+ @Slot()
+ def zoomToSelectedBar(self):
+ self._animationCameraX.stop()
+ self._animationCameraY.stop()
+ self._animationCameraZoom.stop()
+ self._animationCameraTarget.stop()
+
+ currentX = self._graph.cameraXRotation()
+ currentY = self._graph.cameraYRotation()
+ currentZoom = self._graph.cameraZoomLevel()
+ currentTarget = self._graph.cameraTargetPosition()
+
+ self._animationCameraX.setStartValue(currentX)
+ self._animationCameraY.setStartValue(currentY)
+ self._animationCameraZoom.setStartValue(currentZoom)
+ self._animationCameraTarget.setStartValue(currentTarget)
+
+ selectedBar = (self._graph.selectedSeries().selectedBar()
+ if self._graph.selectedSeries()
+ else QBar3DSeries.invalidSelectionPosition())
+
+ if selectedBar != QBar3DSeries.invalidSelectionPosition():
+ # Normalize selected bar position within axis range to determine
+ # target coordinates
+ endTarget = QVector3D()
+ xMin = self._graph.columnAxis().min()
+ xRange = self._graph.columnAxis().max() - xMin
+ zMin = self._graph.rowAxis().min()
+ zRange = self._graph.rowAxis().max() - zMin
+ endTarget.setX((selectedBar.y() - xMin) / xRange * 2.0 - 1.0)
+ endTarget.setZ((selectedBar.x() - zMin) / zRange * 2.0 - 1.0)
+
+ # Rotate the camera so that it always points approximately to the
+ # graph center
+ endAngleX = 90.0 - degrees(atan(float(endTarget.z() / endTarget.x())))
+ if endTarget.x() > 0.0:
+ endAngleX -= 180.0
+ proxy = self._graph.selectedSeries().dataProxy()
+ barValue = proxy.itemAt(selectedBar.x(), selectedBar.y()).value()
+ endAngleY = 30.0 if barValue >= 0.0 else -30.0
+ if self._graph.valueAxis().reversed():
+ endAngleY *= -1.0
+
+ self._animationCameraX.setEndValue(float(endAngleX))
+ self._animationCameraY.setEndValue(endAngleY)
+ self._animationCameraZoom.setEndValue(250)
+ self._animationCameraTarget.setEndValue(endTarget)
+ else:
+ # No selected bar, so return to the default view
+ self._animationCameraX.setEndValue(self._defaultAngleX)
+ self._animationCameraY.setEndValue(self._defaultAngleY)
+ self._animationCameraZoom.setEndValue(self._defaultZoom)
+ self._animationCameraTarget.setEndValue(self._defaultTarget)
+
+ self._animationCameraX.start()
+ self._animationCameraY.start()
+ self._animationCameraZoom.start()
+ self._animationCameraTarget.start()
+
+ @Slot(bool)
+ def setDataModeToWeather(self, enabled):
+ if enabled:
+ self.changeDataMode(False)
+
+ @Slot(bool)
+ def setDataModeToCustom(self, enabled):
+ if enabled:
+ self.changeDataMode(True)
+
+ def changeShadowQuality(self, quality):
+ sq = QAbstract3DGraph.ShadowQuality(quality)
+ self._graph.setShadowQuality(sq)
+ self.shadowQualityChanged.emit(quality)
+
+ def rotateX(self, rotation):
+ self._xRotation = rotation
+ camera = self._graph.scene().activeCamera()
+ camera.setCameraPosition(self._xRotation, self._yRotation)
+
+ def rotateY(self, rotation):
+ self._yRotation = rotation
+ camera = self._graph.scene().activeCamera()
+ camera.setCameraPosition(self._xRotation, self._yRotation)
+
+ def setBackgroundEnabled(self, enabled):
+ self._graph.activeTheme().setBackgroundEnabled(bool(enabled))
+
+ def setGridEnabled(self, enabled):
+ self._graph.activeTheme().setGridEnabled(bool(enabled))
+
+ def setSmoothBars(self, smooth):
+ self._smooth = bool(smooth)
+ self._primarySeries.setMeshSmooth(self._smooth)
+ self._secondarySeries.setMeshSmooth(self._smooth)
+ self._customData.customSeries().setMeshSmooth(self._smooth)
+
+ def setSeriesVisibility(self, enabled):
+ self._secondarySeries.setVisible(bool(enabled))
+
+ def setReverseValueAxis(self, enabled):
+ self._graph.valueAxis().setReversed(enabled)
+
+ def setReflection(self, enabled):
+ self._graph.setReflection(enabled)
+
+ def changeDataMode(self, customData):
+ # Change between weather data and data from custom proxy
+ if customData:
+ self._graph.removeSeries(self._primarySeries)
+ self._graph.removeSeries(self._secondarySeries)
+ self._graph.addSeries(self._customData.customSeries())
+ self._graph.setValueAxis(self._customData.valueAxis())
+ self._graph.setRowAxis(self._customData.rowAxis())
+ self._graph.setColumnAxis(self._customData.colAxis())
+ else:
+ self._graph.removeSeries(self._customData.customSeries())
+ self._graph.addSeries(self._primarySeries)
+ self._graph.addSeries(self._secondarySeries)
+ self._graph.setValueAxis(self._temperatureAxis)
+ self._graph.setRowAxis(self._yearAxis)
+ self._graph.setColumnAxis(self._monthAxis)
diff --git a/examples/graphs/3d/widgetgallery/highlightseries.py b/examples/graphs/3d/widgetgallery/highlightseries.py
new file mode 100644
index 000000000..8c7b91633
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/highlightseries.py
@@ -0,0 +1,94 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QPoint, Qt, Slot
+from PySide6.QtGui import QLinearGradient, QVector3D
+from PySide6.QtGraphs import (QSurface3DSeries, QSurfaceDataItem, Q3DTheme)
+
+
+DARK_RED_POS = 1.0
+RED_POS = 0.8
+YELLOW_POS = 0.6
+GREEN_POS = 0.4
+DARK_GREEN_POS = 0.2
+
+
+class HighlightSeries(QSurface3DSeries):
+
+ def __init__(self):
+ super().__init__()
+ self._width = 100
+ self._height = 100
+ self._srcWidth = 0
+ self._srcHeight = 0
+ self._position = {}
+ self._topographicSeries = None
+ self._minHeight = 0.0
+ self.setDrawMode(QSurface3DSeries.DrawSurface)
+ self.setFlatShadingEnabled(True)
+ self.setVisible(False)
+
+ def setTopographicSeries(self, series):
+ self._topographicSeries = series
+ array = self._topographicSeries.dataProxy().array()
+ self._srcWidth = len(array[0])
+ self._srcHeight = len(array)
+ self._topographicSeries.selectedPointChanged.connect(self.handlePositionChange)
+
+ def setMinHeight(self, height):
+ self. m_minHeight = height
+
+ @Slot(QPoint)
+ def handlePositionChange(self, position):
+ self._position = position
+
+ if position == self.invalidSelectionPosition():
+ self.setVisible(False)
+ return
+
+ halfWidth = self._width / 2
+ halfHeight = self._height / 2
+
+ startX = position.y() - halfWidth
+ if startX < 0:
+ startX = 0
+ endX = position.y() + halfWidth
+ if endX > (self._srcWidth - 1):
+ endX = self._srcWidth - 1
+ startZ = position.x() - halfHeight
+ if startZ < 0:
+ startZ = 0
+ endZ = position.x() + halfHeight
+ if endZ > (self._srcHeight - 1):
+ endZ = self._srcHeight - 1
+
+ srcProxy = self._topographicSeries.dataProxy()
+ srcArray = srcProxy.array()
+
+ dataArray = []
+ for i in range(int(startZ), int(endZ)):
+ newRow = []
+ srcRow = srcArray[i]
+ for j in range(startX, endX):
+ pos = srcRow.at(j).position()
+ pos.setY(pos.y() + 0.1)
+ item = QSurfaceDataItem(QVector3D(pos))
+ newRow.append(item)
+ dataArray.append(newRow)
+ self.dataProxy().resetArray(dataArray)
+ self.setVisible(True)
+
+ @Slot(float)
+ def handleGradientChange(self, value):
+ ratio = self._minHeight / value
+
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.black)
+ gr.setColorAt(DARK_GREEN_POS * ratio, Qt.darkGreen)
+ gr.setColorAt(GREEN_POS * ratio, Qt.green)
+ gr.setColorAt(YELLOW_POS * ratio, Qt.yellow)
+ gr.setColorAt(RED_POS * ratio, Qt.red)
+ gr.setColorAt(DARK_RED_POS * ratio, Qt.darkRed)
+
+ self.setBaseGradient(gr)
+ self.setColorStyle(Q3DTheme.ColorStyle.RangeGradient)
diff --git a/examples/graphs/3d/widgetgallery/main.py b/examples/graphs/3d/widgetgallery/main.py
new file mode 100644
index 000000000..7bb2238a7
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/main.py
@@ -0,0 +1,41 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Qt Graphs widgetgallery example from Qt v6.x"""
+
+import sys
+
+from PySide6.QtCore import QSize
+from PySide6.QtWidgets import QApplication, QTabWidget
+
+from bargraph import BarGraph
+from scattergraph import ScatterGraph
+from surfacegraph import SurfaceGraph
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ # Create a tab widget for creating own tabs for Q3DBars, Q3DScatter, and Q3DSurface
+ tabWidget = QTabWidget()
+ tabWidget.setWindowTitle("Widget Gallery")
+
+ screen_size = tabWidget.screen().size()
+ minimum_graph_size = QSize(screen_size.width() / 2, screen_size.height() / 1.75)
+
+ # Create bar graph
+ bars = BarGraph(minimum_graph_size, screen_size)
+ # Create scatter graph
+ scatter = ScatterGraph(minimum_graph_size, screen_size)
+ # Create surface graph
+ surface = SurfaceGraph(minimum_graph_size, screen_size)
+
+ # Add bars widget
+ tabWidget.addTab(bars.barsWidget(), "Bar Graph")
+ # Add scatter widget
+ tabWidget.addTab(scatter.scatterWidget(), "Scatter Graph")
+ # Add surface widget
+ tabWidget.addTab(surface.surfaceWidget(), "Surface Graph")
+
+ tabWidget.show()
+ sys.exit(app.exec())
diff --git a/examples/graphs/3d/widgetgallery/rainfalldata.py b/examples/graphs/3d/widgetgallery/rainfalldata.py
new file mode 100644
index 000000000..d74f45a8b
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/rainfalldata.py
@@ -0,0 +1,125 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from pathlib import Path
+
+from PySide6.QtCore import QFile, QIODevice, QObject
+from PySide6.QtGraphs import (QBar3DSeries, QCategory3DAxis, QValue3DAxis)
+
+from variantbardataproxy import VariantBarDataProxy
+from variantbardatamapping import VariantBarDataMapping
+from variantdataset import VariantDataSet
+
+
+MONTHS = ["January", "February", "March", "April",
+ "May", "June", "July", "August", "September", "October",
+ "November", "December"]
+
+
+class RainfallData(QObject):
+
+ def __init__(self):
+ super().__init__()
+ self._columnCount = 0
+ self._rowCount = 0
+ self._years = []
+ self._numericMonths = []
+ self._proxy = VariantBarDataProxy()
+ self._mapping = None
+ self._dataSet = None
+ self._series = QBar3DSeries()
+ self._valueAxis = QValue3DAxis()
+ self._rowAxis = QCategory3DAxis()
+ self._colAxis = QCategory3DAxis()
+
+ # In data file the months are in numeric format, so create custom list
+ for i in range(1, 13):
+ self._numericMonths.append(str(i))
+
+ self._columnCount = len(self._numericMonths)
+
+ self.updateYearsList(2010, 2022)
+
+ # Create proxy and series
+ self._proxy = VariantBarDataProxy()
+ self._series = QBar3DSeries(self._proxy)
+
+ self._series.setItemLabelFormat("%.1f mm")
+
+ # Create the axes
+ self._rowAxis = QCategory3DAxis(self)
+ self._colAxis = QCategory3DAxis(self)
+ self._valueAxis = QValue3DAxis(self)
+ self._rowAxis.setAutoAdjustRange(True)
+ self._colAxis.setAutoAdjustRange(True)
+ self._valueAxis.setAutoAdjustRange(True)
+
+ # Set axis labels and titles
+ self._rowAxis.setTitle("Year")
+ self._colAxis.setTitle("Month")
+ self._valueAxis.setTitle("rainfall (mm)")
+ self._valueAxis.setSegmentCount(5)
+ self._rowAxis.setLabels(self._years)
+ self._colAxis.setLabels(MONTHS)
+ self._rowAxis.setTitleVisible(True)
+ self._colAxis.setTitleVisible(True)
+ self._valueAxis.setTitleVisible(True)
+
+ self.addDataSet()
+
+ def customSeries(self):
+ return self._series
+
+ def valueAxis(self):
+ return self._valueAxis
+
+ def rowAxis(self):
+ return self._rowAxis
+
+ def colAxis(self):
+ return self._colAxis
+
+ def updateYearsList(self, start, end):
+ self._years.clear()
+ for i in range(start, end + 1):
+ self._years.append(str(i))
+ self._rowCount = len(self._years)
+
+ def addDataSet(self):
+ # Create a new variant data set and data item list
+ self._dataSet = VariantDataSet()
+ itemList = []
+
+ # Read data from a data file into the data item list
+ file_path = Path(__file__).resolve().parent / "data" / "raindata.txt"
+ dataFile = QFile(file_path)
+ if dataFile.open(QIODevice.ReadOnly | QIODevice.Text):
+ data = dataFile.readAll().data().decode("utf8")
+ for line in data.split("\n"):
+ if line and not line.startswith("#"): # Ignore comments
+ tokens = line.split(",")
+ # Each line has three data items: Year, month, and
+ # rainfall value
+ if len(tokens) >= 3:
+ # Store year and month as strings, and rainfall value
+ # as double into a variant data item and add the item to
+ # the item list.
+ newItem = []
+ newItem.append(tokens[0].strip())
+ newItem.append(tokens[1].strip())
+ newItem.append(float(tokens[2].strip()))
+ itemList.append(newItem)
+ else:
+ print("Unable to open data file:", dataFile.fileName(),
+ file=sys.stderr)
+
+ # Add items to the data set and set it to the proxy
+ self._dataSet.addItems(itemList)
+ self._proxy.setDataSet(self._dataSet)
+
+ # Create new mapping for the data and set it to the proxy
+ self._mapping = VariantBarDataMapping(0, 1, 2,
+ self._years, self._numericMonths)
+ self._proxy.setMapping(self._mapping)
diff --git a/examples/graphs/3d/widgetgallery/scatterdatamodifier.py b/examples/graphs/3d/widgetgallery/scatterdatamodifier.py
new file mode 100644
index 000000000..15064b412
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/scatterdatamodifier.py
@@ -0,0 +1,149 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from math import cos, degrees, sqrt
+
+from PySide6.QtCore import QObject, Signal, Slot, Qt
+from PySide6.QtGui import QVector3D
+from PySide6.QtGraphs import (QAbstract3DGraph, QAbstract3DSeries,
+ QScatterDataItem, QScatterDataProxy,
+ QScatter3DSeries, Q3DTheme)
+
+from axesinputhandler import AxesInputHandler
+
+
+NUMBER_OF_ITEMS = 10000
+CURVE_DIVIDER = 7.5
+LOWER_NUMBER_OF_ITEMS = 900
+LOWER_CURVE_DIVIDER = 0.75
+
+
+class ScatterDataModifier(QObject):
+
+ backgroundEnabledChanged = Signal(bool)
+ gridEnabledChanged = Signal(bool)
+ shadowQualityChanged = Signal(int)
+
+ def __init__(self, scatter, parent):
+ super().__init__(parent)
+
+ self._graph = scatter
+
+ self._style = QAbstract3DSeries.Mesh.Sphere
+ self._smooth = True
+ self._inputHandler = AxesInputHandler(scatter)
+ self._autoAdjust = True
+ self._itemCount = LOWER_NUMBER_OF_ITEMS
+ self._CURVE_DIVIDER = LOWER_CURVE_DIVIDER
+ self._inputHandler = AxesInputHandler(scatter)
+
+ self._graph.activeTheme().setType(Q3DTheme.Theme.StoneMoss)
+ self._graph.setShadowQuality(QAbstract3DGraph.ShadowQuality.SoftHigh)
+ self._graph.setCameraPreset(QAbstract3DGraph.CameraPreset.Front)
+ self._graph.setCameraZoomLevel(80.0)
+
+ self._proxy = QScatterDataProxy()
+ self._series = QScatter3DSeries(self._proxy)
+ self._series.setItemLabelFormat("@xTitle: @xLabel @yTitle: @yLabel @zTitle: @zLabel")
+ self._series.setMeshSmooth(self._smooth)
+ self._graph.addSeries(self._series)
+ self._preset = QAbstract3DGraph.CameraPreset.FrontLow.value
+
+ # Give ownership of the handler to the graph and make it the active
+ # handler
+ self._graph.setActiveInputHandler(self._inputHandler)
+
+ # Give our axes to the input handler
+ self._inputHandler.setAxes(self._graph.axisX(), self._graph.axisZ(),
+ self._graph.axisY())
+
+ self.addData()
+
+ def addData(self):
+ # Configure the axes according to the data
+ self._graph.axisX().setTitle("X")
+ self._graph.axisY().setTitle("Y")
+ self._graph.axisZ().setTitle("Z")
+
+ dataArray = []
+ limit = int(sqrt(self._itemCount) / 2.0)
+ for i in range(-limit, limit):
+ for j in range(-limit, limit):
+ x = float(i) + 0.5
+ y = cos(degrees(float(i * j) / self._CURVE_DIVIDER))
+ z = float(j) + 0.5
+ dataArray.append(QScatterDataItem(QVector3D(x, y, z)))
+
+ self._graph.seriesList()[0].dataProxy().resetArray(dataArray)
+
+ @Slot(int)
+ def changeStyle(self, style):
+ comboBox = self.sender()
+ if comboBox:
+ self._style = comboBox.itemData(style)
+ if self._graph.seriesList():
+ self._graph.seriesList()[0].setMesh(self._style)
+
+ @Slot(int)
+ def setSmoothDots(self, smooth):
+ self._smooth = smooth == Qt.Checked.value
+ series = self._graph.seriesList()[0]
+ series.setMeshSmooth(self._smooth)
+
+ @Slot(int)
+ def changeTheme(self, theme):
+ currentTheme = self._graph.activeTheme()
+ currentTheme.setType(Q3DTheme.Theme(theme))
+ self.backgroundEnabledChanged.emit(currentTheme.isBackgroundEnabled())
+ self.gridEnabledChanged.emit(currentTheme.isGridEnabled())
+
+ @Slot()
+ def changePresetCamera(self):
+ camera = self._graph.scene().activeCamera()
+ camera.setCameraPreset(QAbstract3DGraph.CameraPreset(self._preset))
+
+ self._preset += 1
+ if self._preset > QAbstract3DGraph.CameraPreset.DirectlyBelow.value:
+ self._preset = QAbstract3DGraph.CameraPreset.FrontLow.value
+
+ @Slot(QAbstract3DGraph.ShadowQuality)
+ def shadowQualityUpdatedByVisual(self, sq):
+ self.shadowQualityChanged.emit(sq.value)
+
+ @Slot(int)
+ def changeShadowQuality(self, quality):
+ sq = QAbstract3DGraph.ShadowQuality(quality)
+ self._graph.setShadowQuality(sq)
+
+ @Slot(int)
+ def setBackgroundEnabled(self, enabled):
+ self._graph.activeTheme().setBackgroundEnabled(enabled == Qt.Checked.value)
+
+ @Slot(int)
+ def setGridEnabled(self, enabled):
+ self._graph.activeTheme().setGridEnabled(enabled == Qt.Checked.value)
+
+ @Slot()
+ def toggleItemCount(self):
+ if self._itemCount == NUMBER_OF_ITEMS:
+ self._itemCount = LOWER_NUMBER_OF_ITEMS
+ self._CURVE_DIVIDER = LOWER_CURVE_DIVIDER
+ else:
+ self._itemCount = NUMBER_OF_ITEMS
+ self._CURVE_DIVIDER = CURVE_DIVIDER
+
+ self._graph.seriesList()[0].dataProxy().resetArray([])
+ self.addData()
+
+ @Slot()
+ def toggleRanges(self):
+ if not self._autoAdjust:
+ self._graph.axisX().setAutoAdjustRange(True)
+ self._graph.axisZ().setAutoAdjustRange(True)
+ self._inputHandler.setDragSpeedModifier(1.5)
+ self._autoAdjust = True
+ else:
+ self._graph.axisX().setRange(-10.0, 10.0)
+ self._graph.axisZ().setRange(-10.0, 10.0)
+ self._inputHandler.setDragSpeedModifier(15.0)
+ self._autoAdjust = False
diff --git a/examples/graphs/3d/widgetgallery/scattergraph.py b/examples/graphs/3d/widgetgallery/scattergraph.py
new file mode 100644
index 000000000..79e8933eb
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/scattergraph.py
@@ -0,0 +1,121 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, QSize, Qt
+from PySide6.QtWidgets import (QCheckBox, QComboBox, QCommandLinkButton,
+ QLabel, QHBoxLayout, QSizePolicy,
+ QVBoxLayout, QWidget, )
+from PySide6.QtQuickWidgets import QQuickWidget
+from PySide6.QtGraphs import (QAbstract3DSeries, Q3DScatter)
+
+from scatterdatamodifier import ScatterDataModifier
+
+
+class ScatterGraph(QObject):
+
+ def __init__(self, minimum_graph_size, maximum_graph_size):
+ super().__init__()
+ self._scatterGraph = Q3DScatter()
+ self._scatterWidget = QWidget()
+ hLayout = QHBoxLayout(self._scatterWidget)
+ self._scatterGraph.setMinimumSize(minimum_graph_size)
+ self._scatterGraph.setMaximumSize(maximum_graph_size)
+ self._scatterGraph.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
+ self._scatterGraph.setFocusPolicy(Qt.StrongFocus)
+ self._scatterGraph.setResizeMode(QQuickWidget.SizeRootObjectToView)
+ hLayout.addWidget(self._scatterGraph, 1)
+
+ vLayout = QVBoxLayout()
+ hLayout.addLayout(vLayout)
+
+ cameraButton = QCommandLinkButton(self._scatterWidget)
+ cameraButton.setText("Change camera preset")
+ cameraButton.setDescription("Switch between a number of preset camera positions")
+ cameraButton.setIconSize(QSize(0, 0))
+
+ itemCountButton = QCommandLinkButton(self._scatterWidget)
+ itemCountButton.setText("Toggle item count")
+ itemCountButton.setDescription("Switch between 900 and 10000 data points")
+ itemCountButton.setIconSize(QSize(0, 0))
+
+ rangeButton = QCommandLinkButton(self._scatterWidget)
+ rangeButton.setText("Toggle axis ranges")
+ rangeButton.setDescription("Switch between automatic axis ranges and preset ranges")
+ rangeButton.setIconSize(QSize(0, 0))
+
+ backgroundCheckBox = QCheckBox(self._scatterWidget)
+ backgroundCheckBox.setText("Show background")
+ backgroundCheckBox.setChecked(True)
+
+ gridCheckBox = QCheckBox(self._scatterWidget)
+ gridCheckBox.setText("Show grid")
+ gridCheckBox.setChecked(True)
+
+ smoothCheckBox = QCheckBox(self._scatterWidget)
+ smoothCheckBox.setText("Smooth dots")
+ smoothCheckBox.setChecked(True)
+
+ itemStyleList = QComboBox(self._scatterWidget)
+ itemStyleList.addItem("Sphere", QAbstract3DSeries.Mesh.Sphere)
+ itemStyleList.addItem("Cube", QAbstract3DSeries.Mesh.Cube)
+ itemStyleList.addItem("Minimal", QAbstract3DSeries.Mesh.Minimal)
+ itemStyleList.addItem("Point", QAbstract3DSeries.Mesh.Point)
+ itemStyleList.setCurrentIndex(0)
+
+ themeList = QComboBox(self._scatterWidget)
+ themeList.addItem("Qt")
+ themeList.addItem("Primary Colors")
+ themeList.addItem("Digia")
+ themeList.addItem("Stone Moss")
+ themeList.addItem("Army Blue")
+ themeList.addItem("Retro")
+ themeList.addItem("Ebony")
+ themeList.addItem("Isabelle")
+ themeList.setCurrentIndex(3)
+
+ shadowQuality = QComboBox(self._scatterWidget)
+ shadowQuality.addItem("None")
+ shadowQuality.addItem("Low")
+ shadowQuality.addItem("Medium")
+ shadowQuality.addItem("High")
+ shadowQuality.addItem("Low Soft")
+ shadowQuality.addItem("Medium Soft")
+ shadowQuality.addItem("High Soft")
+ shadowQuality.setCurrentIndex(6)
+
+ vLayout.addWidget(cameraButton)
+ vLayout.addWidget(itemCountButton)
+ vLayout.addWidget(rangeButton)
+ vLayout.addWidget(backgroundCheckBox)
+ vLayout.addWidget(gridCheckBox)
+ vLayout.addWidget(smoothCheckBox)
+ vLayout.addWidget(QLabel("Change dot style"))
+ vLayout.addWidget(itemStyleList)
+ vLayout.addWidget(QLabel("Change theme"))
+ vLayout.addWidget(themeList)
+ vLayout.addWidget(QLabel("Adjust shadow quality"))
+ vLayout.addWidget(shadowQuality, 1, Qt.AlignTop)
+
+ self._modifier = ScatterDataModifier(self._scatterGraph, self)
+
+ cameraButton.clicked.connect(self._modifier.changePresetCamera)
+ itemCountButton.clicked.connect(self._modifier.toggleItemCount)
+ rangeButton.clicked.connect(self._modifier.toggleRanges)
+
+ backgroundCheckBox.stateChanged.connect(self._modifier.setBackgroundEnabled)
+ gridCheckBox.stateChanged.connect(self._modifier.setGridEnabled)
+ smoothCheckBox.stateChanged.connect(self._modifier.setSmoothDots)
+
+ self._modifier.backgroundEnabledChanged.connect(backgroundCheckBox.setChecked)
+ self._modifier.gridEnabledChanged.connect(gridCheckBox.setChecked)
+ itemStyleList.currentIndexChanged.connect(self._modifier.changeStyle)
+
+ themeList.currentIndexChanged.connect(self._modifier.changeTheme)
+
+ shadowQuality.currentIndexChanged.connect(self._modifier.changeShadowQuality)
+
+ self._modifier.shadowQualityChanged.connect(shadowQuality.setCurrentIndex)
+ self._scatterGraph.shadowQualityChanged.connect(self._modifier.shadowQualityUpdatedByVisual)
+
+ def scatterWidget(self):
+ return self._scatterWidget
diff --git a/examples/graphs/3d/widgetgallery/surfacegraph.py b/examples/graphs/3d/widgetgallery/surfacegraph.py
new file mode 100644
index 000000000..4052da821
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/surfacegraph.py
@@ -0,0 +1,256 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from surfacegraphmodifier import SurfaceGraphModifier
+
+from PySide6.QtCore import QObject, Qt
+from PySide6.QtGui import QBrush, QIcon, QLinearGradient, QPainter, QPixmap
+from PySide6.QtWidgets import (QGroupBox, QCheckBox, QLabel, QHBoxLayout,
+ QPushButton, QRadioButton, QSizePolicy, QSlider,
+ QVBoxLayout, QWidget)
+from PySide6.QtQuickWidgets import QQuickWidget
+from PySide6.QtGraphs import Q3DSurface
+
+
+def gradientBtoYPB_Pixmap():
+ grBtoY = QLinearGradient(0, 0, 1, 100)
+ grBtoY.setColorAt(1.0, Qt.black)
+ grBtoY.setColorAt(0.67, Qt.blue)
+ grBtoY.setColorAt(0.33, Qt.red)
+ grBtoY.setColorAt(0.0, Qt.yellow)
+ pm = QPixmap(24, 100)
+ with QPainter(pm) as pmp:
+ pmp.setBrush(QBrush(grBtoY))
+ pmp.setPen(Qt.NoPen)
+ pmp.drawRect(0, 0, 24, 100)
+ return pm
+
+
+def gradientGtoRPB_Pixmap():
+ grGtoR = QLinearGradient(0, 0, 1, 100)
+ grGtoR.setColorAt(1.0, Qt.darkGreen)
+ grGtoR.setColorAt(0.5, Qt.yellow)
+ grGtoR.setColorAt(0.2, Qt.red)
+ grGtoR.setColorAt(0.0, Qt.darkRed)
+ pm = QPixmap(24, 100)
+ with QPainter(pm) as pmp:
+ pmp.setBrush(QBrush(grGtoR))
+ pmp.setPen(Qt.NoPen)
+ pmp.drawRect(0, 0, 24, 100)
+ return pm
+
+
+def highlightPixmap():
+ HEIGHT = 400
+ WIDTH = 110
+ BORDER = 10
+ gr = QLinearGradient(0, 0, 1, HEIGHT - 2 * BORDER)
+ gr.setColorAt(1.0, Qt.black)
+ gr.setColorAt(0.8, Qt.darkGreen)
+ gr.setColorAt(0.6, Qt.green)
+ gr.setColorAt(0.4, Qt.yellow)
+ gr.setColorAt(0.2, Qt.red)
+ gr.setColorAt(0.0, Qt.darkRed)
+ pmHighlight = QPixmap(WIDTH, HEIGHT)
+ pmHighlight.fill(Qt.transparent)
+ with QPainter(pmHighlight) as pmpHighlight:
+ pmpHighlight.setBrush(QBrush(gr))
+ pmpHighlight.setPen(Qt.NoPen)
+ pmpHighlight.drawRect(BORDER, BORDER, 35, HEIGHT - 2 * BORDER)
+ pmpHighlight.setPen(Qt.black)
+ step = (HEIGHT - 2 * BORDER) / 5
+ for i in range(0, 6):
+ yPos = i * step + BORDER
+ pmpHighlight.drawLine(BORDER, yPos, 55, yPos)
+ HEIGHT = 550 - (i * 110)
+ pmpHighlight.drawText(60, yPos + 2, f"{HEIGHT} m")
+ return pmHighlight
+
+
+class SurfaceGraph(QObject):
+
+ def __init__(self, minimum_graph_size, maximum_graph_size):
+ super().__init__()
+ self._surfaceGraph = Q3DSurface()
+ self._surfaceWidget = QWidget()
+ hLayout = QHBoxLayout(self._surfaceWidget)
+ self._surfaceGraph.setMinimumSize(minimum_graph_size)
+ self._surfaceGraph.setMaximumSize(maximum_graph_size)
+ self._surfaceGraph.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
+ self._surfaceGraph.setFocusPolicy(Qt.StrongFocus)
+ self._surfaceGraph.setResizeMode(QQuickWidget.SizeRootObjectToView)
+ hLayout.addWidget(self._surfaceGraph, 1)
+ vLayout = QVBoxLayout()
+ hLayout.addLayout(vLayout)
+ vLayout.setAlignment(Qt.AlignTop)
+ # Create control widgets
+ modelGroupBox = QGroupBox("Model")
+ sqrtSinModelRB = QRadioButton(self._surfaceWidget)
+ sqrtSinModelRB.setText("Sqrt and Sin")
+ sqrtSinModelRB.setChecked(False)
+ heightMapModelRB = QRadioButton(self._surfaceWidget)
+ heightMapModelRB.setText("Multiseries\nHeight Map")
+ heightMapModelRB.setChecked(False)
+ texturedModelRB = QRadioButton(self._surfaceWidget)
+ texturedModelRB.setText("Textured\nTopography")
+ texturedModelRB.setChecked(False)
+ modelVBox = QVBoxLayout()
+ modelVBox.addWidget(sqrtSinModelRB)
+ modelVBox.addWidget(heightMapModelRB)
+ modelVBox.addWidget(texturedModelRB)
+ modelGroupBox.setLayout(modelVBox)
+ selectionGroupBox = QGroupBox("Graph Selection Mode")
+ modeNoneRB = QRadioButton(self._surfaceWidget)
+ modeNoneRB.setText("No selection")
+ modeNoneRB.setChecked(False)
+ modeItemRB = QRadioButton(self._surfaceWidget)
+ modeItemRB.setText("Item")
+ modeItemRB.setChecked(False)
+ modeSliceRowRB = QRadioButton(self._surfaceWidget)
+ modeSliceRowRB.setText("Row Slice")
+ modeSliceRowRB.setChecked(False)
+ modeSliceColumnRB = QRadioButton(self._surfaceWidget)
+ modeSliceColumnRB.setText("Column Slice")
+ modeSliceColumnRB.setChecked(False)
+ selectionVBox = QVBoxLayout()
+ selectionVBox.addWidget(modeNoneRB)
+ selectionVBox.addWidget(modeItemRB)
+ selectionVBox.addWidget(modeSliceRowRB)
+ selectionVBox.addWidget(modeSliceColumnRB)
+ selectionGroupBox.setLayout(selectionVBox)
+ axisGroupBox = QGroupBox("Axis ranges")
+ axisMinSliderX = QSlider(Qt.Horizontal)
+ axisMinSliderX.setMinimum(0)
+ axisMinSliderX.setTickInterval(1)
+ axisMinSliderX.setEnabled(True)
+ axisMaxSliderX = QSlider(Qt.Horizontal)
+ axisMaxSliderX.setMinimum(1)
+ axisMaxSliderX.setTickInterval(1)
+ axisMaxSliderX.setEnabled(True)
+ axisMinSliderZ = QSlider(Qt.Horizontal)
+ axisMinSliderZ.setMinimum(0)
+ axisMinSliderZ.setTickInterval(1)
+ axisMinSliderZ.setEnabled(True)
+ axisMaxSliderZ = QSlider(Qt.Horizontal)
+ axisMaxSliderZ.setMinimum(1)
+ axisMaxSliderZ.setTickInterval(1)
+ axisMaxSliderZ.setEnabled(True)
+ axisVBox = QVBoxLayout(axisGroupBox)
+ axisVBox.addWidget(QLabel("Column range"))
+ axisVBox.addWidget(axisMinSliderX)
+ axisVBox.addWidget(axisMaxSliderX)
+ axisVBox.addWidget(QLabel("Row range"))
+ axisVBox.addWidget(axisMinSliderZ)
+ axisVBox.addWidget(axisMaxSliderZ)
+ # Mode-dependent controls
+ # sqrt-sin
+ colorGroupBox = QGroupBox("Custom gradient")
+
+ pixmap = gradientBtoYPB_Pixmap()
+ gradientBtoYPB = QPushButton(self._surfaceWidget)
+ gradientBtoYPB.setIcon(QIcon(pixmap))
+ gradientBtoYPB.setIconSize(pixmap.size())
+
+ pixmap = gradientGtoRPB_Pixmap()
+ gradientGtoRPB = QPushButton(self._surfaceWidget)
+ gradientGtoRPB.setIcon(QIcon(pixmap))
+ gradientGtoRPB.setIconSize(pixmap.size())
+
+ colorHBox = QHBoxLayout(colorGroupBox)
+ colorHBox.addWidget(gradientBtoYPB)
+ colorHBox.addWidget(gradientGtoRPB)
+ # Multiseries heightmap
+ showGroupBox = QGroupBox("Show Object")
+ showGroupBox.setVisible(False)
+ checkboxShowOilRigOne = QCheckBox("Oil Rig 1")
+ checkboxShowOilRigOne.setChecked(True)
+ checkboxShowOilRigTwo = QCheckBox("Oil Rig 2")
+ checkboxShowOilRigTwo.setChecked(True)
+ checkboxShowRefinery = QCheckBox("Refinery")
+ showVBox = QVBoxLayout()
+ showVBox.addWidget(checkboxShowOilRigOne)
+ showVBox.addWidget(checkboxShowOilRigTwo)
+ showVBox.addWidget(checkboxShowRefinery)
+ showGroupBox.setLayout(showVBox)
+ visualsGroupBox = QGroupBox("Visuals")
+ visualsGroupBox.setVisible(False)
+ checkboxVisualsSeeThrough = QCheckBox("See-Through")
+ checkboxHighlightOil = QCheckBox("Highlight Oil")
+ checkboxShowShadows = QCheckBox("Shadows")
+ checkboxShowShadows.setChecked(True)
+ visualVBox = QVBoxLayout(visualsGroupBox)
+ visualVBox.addWidget(checkboxVisualsSeeThrough)
+ visualVBox.addWidget(checkboxHighlightOil)
+ visualVBox.addWidget(checkboxShowShadows)
+ labelSelection = QLabel("Selection:")
+ labelSelection.setVisible(False)
+ labelSelectedItem = QLabel("Nothing")
+ labelSelectedItem.setVisible(False)
+ # Textured topography heightmap
+ enableTexture = QCheckBox("Surface texture")
+ enableTexture.setVisible(False)
+
+ label = QLabel(self._surfaceWidget)
+ label.setPixmap(highlightPixmap())
+ heightMapGroupBox = QGroupBox("Highlight color map")
+ colorMapVBox = QVBoxLayout()
+ colorMapVBox.addWidget(label)
+ heightMapGroupBox.setLayout(colorMapVBox)
+ heightMapGroupBox.setVisible(False)
+ # Populate vertical layout
+ # Common
+ vLayout.addWidget(modelGroupBox)
+ vLayout.addWidget(selectionGroupBox)
+ vLayout.addWidget(axisGroupBox)
+ # Sqrt Sin
+ vLayout.addWidget(colorGroupBox)
+ # Multiseries heightmap
+ vLayout.addWidget(showGroupBox)
+ vLayout.addWidget(visualsGroupBox)
+ vLayout.addWidget(labelSelection)
+ vLayout.addWidget(labelSelectedItem)
+ # Textured topography
+ vLayout.addWidget(heightMapGroupBox)
+ vLayout.addWidget(enableTexture)
+ # Create the controller
+ modifier = SurfaceGraphModifier(self._surfaceGraph, labelSelectedItem, self)
+ # Connect widget controls to controller
+ heightMapModelRB.toggled.connect(modifier.enableHeightMapModel)
+ sqrtSinModelRB.toggled.connect(modifier.enableSqrtSinModel)
+ texturedModelRB.toggled.connect(modifier.enableTopographyModel)
+ modeNoneRB.toggled.connect(modifier.toggleModeNone)
+ modeItemRB.toggled.connect(modifier.toggleModeItem)
+ modeSliceRowRB.toggled.connect(modifier.toggleModeSliceRow)
+ modeSliceColumnRB.toggled.connect(modifier.toggleModeSliceColumn)
+ axisMinSliderX.valueChanged.connect(modifier.adjustXMin)
+ axisMaxSliderX.valueChanged.connect(modifier.adjustXMax)
+ axisMinSliderZ.valueChanged.connect(modifier.adjustZMin)
+ axisMaxSliderZ.valueChanged.connect(modifier.adjustZMax)
+ # Mode dependent connections
+ gradientBtoYPB.pressed.connect(modifier.setBlackToYellowGradient)
+ gradientGtoRPB.pressed.connect(modifier.setGreenToRedGradient)
+ checkboxShowOilRigOne.stateChanged.connect(modifier.toggleItemOne)
+ checkboxShowOilRigTwo.stateChanged.connect(modifier.toggleItemTwo)
+ checkboxShowRefinery.stateChanged.connect(modifier.toggleItemThree)
+ checkboxVisualsSeeThrough.stateChanged.connect(modifier.toggleSeeThrough)
+ checkboxHighlightOil.stateChanged.connect(modifier.toggleOilHighlight)
+ checkboxShowShadows.stateChanged.connect(modifier.toggleShadows)
+ enableTexture.stateChanged.connect(modifier.toggleSurfaceTexture)
+ # Connections to disable features depending on mode
+ sqrtSinModelRB.toggled.connect(colorGroupBox.setVisible)
+ heightMapModelRB.toggled.connect(showGroupBox.setVisible)
+ heightMapModelRB.toggled.connect(visualsGroupBox.setVisible)
+ heightMapModelRB.toggled.connect(labelSelection.setVisible)
+ heightMapModelRB.toggled.connect(labelSelectedItem.setVisible)
+ texturedModelRB.toggled.connect(enableTexture.setVisible)
+ texturedModelRB.toggled.connect(heightMapGroupBox.setVisible)
+ modifier.setAxisMinSliderX(axisMinSliderX)
+ modifier.setAxisMaxSliderX(axisMaxSliderX)
+ modifier.setAxisMinSliderZ(axisMinSliderZ)
+ modifier.setAxisMaxSliderZ(axisMaxSliderZ)
+ sqrtSinModelRB.setChecked(True)
+ modeItemRB.setChecked(True)
+ enableTexture.setChecked(True)
+
+ def surfaceWidget(self):
+ return self._surfaceWidget
diff --git a/examples/graphs/3d/widgetgallery/surfacegraphmodifier.py b/examples/graphs/3d/widgetgallery/surfacegraphmodifier.py
new file mode 100644
index 000000000..b2706c6fa
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/surfacegraphmodifier.py
@@ -0,0 +1,641 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from math import sqrt, sin
+from pathlib import Path
+
+from PySide6.QtCore import QObject, QPropertyAnimation, Qt, Slot
+from PySide6.QtGui import (QColor, QFont, QImage, QLinearGradient,
+ QQuaternion, QVector3D)
+from PySide6.QtGraphs import (QAbstract3DGraph, QCustom3DItem,
+ QCustom3DLabel, QHeightMapSurfaceDataProxy,
+ QValue3DAxis, QSurfaceDataItem,
+ QSurfaceDataProxy, QSurface3DSeries,
+ Q3DInputHandler, Q3DTheme)
+
+
+from highlightseries import HighlightSeries
+from topographicseries import TopographicSeries
+from custominputhandler import CustomInputHandler
+
+
+SAMPLE_COUNT_X = 150
+SAMPLE_COUNT_Z = 150
+HEIGHTMAP_GRID_STEP_X = 6
+HEIGHTMAP_GRID_STEP_Z = 6
+SAMPLE_MIN = -8.0
+SAMPLE_MAX = 8.0
+
+AREA_WIDTH = 8000.0
+AREA_HEIGHT = 8000.0
+ASPECT_RATIO = 0.1389
+MIN_RANGE = AREA_WIDTH * 0.49
+
+
+class SurfaceGraphModifier(QObject):
+
+ def __init__(self, surface, label, parent):
+ super().__init__(parent)
+ self._data_path = Path(__file__).resolve().parent / "data"
+ self._graph = surface
+ self._textField = label
+ self._sqrtSinProxy = None
+ self._sqrtSinSeries = None
+ self._heightMapProxyOne = None
+ self._heightMapProxyTwo = None
+ self._heightMapProxyThree = None
+ self._heightMapSeriesOne = None
+ self._heightMapSeriesTwo = None
+ self._heightMapSeriesThree = None
+
+ self._axisMinSliderX = None
+ self._axisMaxSliderX = None
+ self._axisMinSliderZ = None
+ self._axisMaxSliderZ = None
+ self._rangeMinX = 0.0
+ self._rangeMinZ = 0.0
+ self._stepX = 0.0
+ self._stepZ = 0.0
+ self._heightMapWidth = 0
+ self._heightMapHeight = 0
+
+ self._selectionAnimation = None
+ self._titleLabel = None
+ self._previouslyAnimatedItem = None
+ self._previousScaling = {}
+
+ self._topography = None
+ self._highlight = None
+ self._highlightWidth = 0
+ self._highlightHeight = 0
+
+ self._customInputHandler = None
+ self._defaultInputHandler = Q3DInputHandler()
+
+ self._graph.setCameraZoomLevel(85.0)
+ self._graph.setCameraPreset(QAbstract3DGraph.CameraPreset.IsometricRight)
+ self._graph.activeTheme().setType(Q3DTheme.Theme.Retro)
+
+ self._x_axis = QValue3DAxis()
+ self._y_axis = QValue3DAxis()
+ self._z_axis = QValue3DAxis()
+ self._graph.setAxisX(self._x_axis)
+ self._graph.setAxisY(self._y_axis)
+ self._graph.setAxisZ(self._z_axis)
+
+ #
+ # Sqrt Sin
+ #
+ self._sqrtSinProxy = QSurfaceDataProxy()
+ self._sqrtSinSeries = QSurface3DSeries(self._sqrtSinProxy)
+ self.fillSqrtSinProxy()
+
+ #
+ # Multisurface heightmap
+ #
+ # Create the first surface layer
+ heightMapImageOne = QImage(self._data_path / "layer_1.png")
+ self._heightMapProxyOne = QHeightMapSurfaceDataProxy(heightMapImageOne)
+ self._heightMapSeriesOne = QSurface3DSeries(self._heightMapProxyOne)
+ self._heightMapSeriesOne.setItemLabelFormat("(@xLabel, @zLabel): @yLabel")
+ self._heightMapProxyOne.setValueRanges(34.0, 40.0, 18.0, 24.0)
+
+ # Create the other 2 surface layers
+ heightMapImageTwo = QImage(self._data_path / "layer_2.png")
+ self._heightMapProxyTwo = QHeightMapSurfaceDataProxy(heightMapImageTwo)
+ self._heightMapSeriesTwo = QSurface3DSeries(self._heightMapProxyTwo)
+ self._heightMapSeriesTwo.setItemLabelFormat("(@xLabel, @zLabel): @yLabel")
+ self._heightMapProxyTwo.setValueRanges(34.0, 40.0, 18.0, 24.0)
+
+ heightMapImageThree = QImage(self._data_path / "layer_3.png")
+ self._heightMapProxyThree = QHeightMapSurfaceDataProxy(heightMapImageThree)
+ self._heightMapSeriesThree = QSurface3DSeries(self._heightMapProxyThree)
+ self._heightMapSeriesThree.setItemLabelFormat("(@xLabel, @zLabel): @yLabel")
+ self._heightMapProxyThree.setValueRanges(34.0, 40.0, 18.0, 24.0)
+
+ # The images are the same size, so it's enough to get the dimensions
+ # from one
+ self._heightMapWidth = heightMapImageOne.width()
+ self._heightMapHeight = heightMapImageOne.height()
+
+ # Set the gradients for multi-surface layers
+ grOne = QLinearGradient()
+ grOne.setColorAt(0.0, Qt.black)
+ grOne.setColorAt(0.38, Qt.darkYellow)
+ grOne.setColorAt(0.39, Qt.darkGreen)
+ grOne.setColorAt(0.5, Qt.darkGray)
+ grOne.setColorAt(1.0, Qt.gray)
+ self._heightMapSeriesOne.setBaseGradient(grOne)
+ self._heightMapSeriesOne.setColorStyle(Q3DTheme.ColorStyle.RangeGradient)
+
+ grTwo = QLinearGradient()
+ grTwo.setColorAt(0.39, Qt.blue)
+ grTwo.setColorAt(0.4, Qt.white)
+ self._heightMapSeriesTwo.setBaseGradient(grTwo)
+ self._heightMapSeriesTwo.setColorStyle(Q3DTheme.ColorStyle.RangeGradient)
+
+ grThree = QLinearGradient()
+ grThree.setColorAt(0.0, Qt.white)
+ grThree.setColorAt(0.05, Qt.black)
+ self._heightMapSeriesThree.setBaseGradient(grThree)
+ self._heightMapSeriesThree.setColorStyle(Q3DTheme.ColorStyle.RangeGradient)
+
+ # Custom items and label
+ self._graph.selectedElementChanged.connect(self.handleElementSelected)
+
+ self._selectionAnimation = QPropertyAnimation(self)
+ self._selectionAnimation.setPropertyName(b"scaling")
+ self._selectionAnimation.setDuration(500)
+ self._selectionAnimation.setLoopCount(-1)
+
+ titleFont = QFont("Century Gothic", 30)
+ titleFont.setBold(True)
+ self._titleLabel = QCustom3DLabel("Oil Rigs on Imaginary Sea", titleFont,
+ QVector3D(0.0, 1.2, 0.0),
+ QVector3D(1.0, 1.0, 0.0),
+ QQuaternion())
+ self._titleLabel.setPositionAbsolute(True)
+ self._titleLabel.setFacingCamera(True)
+ self._titleLabel.setBackgroundColor(QColor(0x66cdaa))
+ self._graph.addCustomItem(self._titleLabel)
+ self._titleLabel.setVisible(False)
+
+ # Make two of the custom object visible
+ self.toggleItemOne(True)
+ self.toggleItemTwo(True)
+
+ #
+ # Topographic map
+ #
+ self._topography = TopographicSeries()
+ file_name = os.fspath(self._data_path / "topography.png")
+ self._topography.setTopographyFile(file_name, AREA_WIDTH, AREA_HEIGHT)
+ self._topography.setItemLabelFormat("@yLabel m")
+
+ self._highlight = HighlightSeries()
+ self._highlight.setTopographicSeries(self._topography)
+ self._highlight.setMinHeight(MIN_RANGE * ASPECT_RATIO)
+ self._highlight.handleGradientChange(AREA_WIDTH * ASPECT_RATIO)
+ self._graph.axisY().maxChanged.connect(self._highlight.handleGradientChange)
+
+ self._customInputHandler = CustomInputHandler(self._graph)
+ self._customInputHandler.setHighlightSeries(self._highlight)
+ self._customInputHandler.setAxes(self._x_axis, self._y_axis, self._z_axis)
+ self._customInputHandler.setLimits(0.0, AREA_WIDTH, MIN_RANGE)
+ self._customInputHandler.setAspectRatio(ASPECT_RATIO)
+
+ def fillSqrtSinProxy(self):
+ stepX = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_X - 1)
+ stepZ = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_Z - 1)
+
+ dataArray = []
+ for i in range(0, SAMPLE_COUNT_Z):
+ newRow = []
+ # Keep values within range bounds, since just adding step can
+ # cause minor drift due to the rounding errors.
+ z = min(SAMPLE_MAX, (i * stepZ + SAMPLE_MIN))
+ for j in range(0, SAMPLE_COUNT_X):
+ x = min(SAMPLE_MAX, (j * stepX + SAMPLE_MIN))
+ R = sqrt(z * z + x * x) + 0.01
+ y = (sin(R) / R + 0.24) * 1.61
+ item = QSurfaceDataItem(QVector3D(x, y, z))
+ newRow.append(item)
+ dataArray.append(newRow)
+ self._sqrtSinProxy.resetArray(dataArray)
+
+ @Slot(bool)
+ def enableSqrtSinModel(self, enable):
+ if enable:
+ self._sqrtSinSeries.setDrawMode(QSurface3DSeries.DrawSurfaceAndWireframe)
+ self._sqrtSinSeries.setFlatShadingEnabled(True)
+
+ self._graph.axisX().setLabelFormat("%.2f")
+ self._graph.axisZ().setLabelFormat("%.2f")
+ self._graph.axisX().setRange(SAMPLE_MIN, SAMPLE_MAX)
+ self._graph.axisY().setRange(0.0, 2.0)
+ self._graph.axisZ().setRange(SAMPLE_MIN, SAMPLE_MAX)
+ self._graph.axisX().setLabelAutoRotation(30.0)
+ self._graph.axisY().setLabelAutoRotation(90.0)
+ self._graph.axisZ().setLabelAutoRotation(30.0)
+
+ self._graph.removeSeries(self._heightMapSeriesOne)
+ self._graph.removeSeries(self._heightMapSeriesTwo)
+ self._graph.removeSeries(self._heightMapSeriesThree)
+ self._graph.removeSeries(self._topography)
+ self._graph.removeSeries(self._highlight)
+
+ self._graph.addSeries(self._sqrtSinSeries)
+
+ self._titleLabel.setVisible(False)
+ self._graph.axisX().setTitleVisible(False)
+ self._graph.axisY().setTitleVisible(False)
+ self._graph.axisZ().setTitleVisible(False)
+
+ self._graph.axisX().setTitle("")
+ self._graph.axisY().setTitle("")
+ self._graph.axisZ().setTitle("")
+
+ self._graph.setActiveInputHandler(self._defaultInputHandler)
+
+ # Reset range sliders for Sqrt & Sin
+ self._rangeMinX = SAMPLE_MIN
+ self._rangeMinZ = SAMPLE_MIN
+ self._stepX = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_X - 1)
+ self._stepZ = (SAMPLE_MAX - SAMPLE_MIN) / float(SAMPLE_COUNT_Z - 1)
+ self._axisMinSliderX.setMinimum(0)
+ self._axisMinSliderX.setMaximum(SAMPLE_COUNT_X - 2)
+ self._axisMinSliderX.setValue(0)
+ self._axisMaxSliderX.setMinimum(1)
+ self._axisMaxSliderX.setMaximum(SAMPLE_COUNT_X - 1)
+ self._axisMaxSliderX.setValue(SAMPLE_COUNT_X - 1)
+ self._axisMinSliderZ.setMinimum(0)
+ self._axisMinSliderZ.setMaximum(SAMPLE_COUNT_Z - 2)
+ self._axisMinSliderZ.setValue(0)
+ self._axisMaxSliderZ.setMinimum(1)
+ self._axisMaxSliderZ.setMaximum(SAMPLE_COUNT_Z - 1)
+ self._axisMaxSliderZ.setValue(SAMPLE_COUNT_Z - 1)
+
+ @Slot(bool)
+ def enableHeightMapModel(self, enable):
+ if enable:
+ self._heightMapSeriesOne.setDrawMode(QSurface3DSeries.DrawSurface)
+ self._heightMapSeriesOne.setFlatShadingEnabled(False)
+ self._heightMapSeriesTwo.setDrawMode(QSurface3DSeries.DrawSurface)
+ self._heightMapSeriesTwo.setFlatShadingEnabled(False)
+ self._heightMapSeriesThree.setDrawMode(QSurface3DSeries.DrawSurface)
+ self._heightMapSeriesThree.setFlatShadingEnabled(False)
+
+ self._graph.axisX().setLabelFormat("%.1f N")
+ self._graph.axisZ().setLabelFormat("%.1f E")
+ self._graph.axisX().setRange(34.0, 40.0)
+ self._graph.axisY().setAutoAdjustRange(True)
+ self._graph.axisZ().setRange(18.0, 24.0)
+
+ self._graph.axisX().setTitle("Latitude")
+ self._graph.axisY().setTitle("Height")
+ self._graph.axisZ().setTitle("Longitude")
+
+ self._graph.removeSeries(self._sqrtSinSeries)
+ self._graph.removeSeries(self._topography)
+ self._graph.removeSeries(self._highlight)
+ self._graph.addSeries(self._heightMapSeriesOne)
+ self._graph.addSeries(self._heightMapSeriesTwo)
+ self._graph.addSeries(self._heightMapSeriesThree)
+
+ self._graph.setActiveInputHandler(self._defaultInputHandler)
+
+ self._titleLabel.setVisible(True)
+ self._graph.axisX().setTitleVisible(True)
+ self._graph.axisY().setTitleVisible(True)
+ self._graph.axisZ().setTitleVisible(True)
+
+ # Reset range sliders for height map
+ mapGridCountX = self._heightMapWidth / HEIGHTMAP_GRID_STEP_X
+ mapGridCountZ = self._heightMapHeight / HEIGHTMAP_GRID_STEP_Z
+ self._rangeMinX = 34.0
+ self._rangeMinZ = 18.0
+ self._stepX = 6.0 / float(mapGridCountX - 1)
+ self._stepZ = 6.0 / float(mapGridCountZ - 1)
+ self._axisMinSliderX.setMinimum(0)
+ self._axisMinSliderX.setMaximum(mapGridCountX - 2)
+ self._axisMinSliderX.setValue(0)
+ self._axisMaxSliderX.setMinimum(1)
+ self._axisMaxSliderX.setMaximum(mapGridCountX - 1)
+ self._axisMaxSliderX.setValue(mapGridCountX - 1)
+ self._axisMinSliderZ.setMinimum(0)
+ self._axisMinSliderZ.setMaximum(mapGridCountZ - 2)
+ self._axisMinSliderZ.setValue(0)
+ self._axisMaxSliderZ.setMinimum(1)
+ self._axisMaxSliderZ.setMaximum(mapGridCountZ - 1)
+ self._axisMaxSliderZ.setValue(mapGridCountZ - 1)
+
+ @Slot(bool)
+ def enableTopographyModel(self, enable):
+ if enable:
+ self._graph.axisX().setLabelFormat("%i")
+ self._graph.axisZ().setLabelFormat("%i")
+ self._graph.axisX().setRange(0.0, AREA_WIDTH)
+ self._graph.axisY().setRange(100.0, AREA_WIDTH * ASPECT_RATIO)
+ self._graph.axisZ().setRange(0.0, AREA_HEIGHT)
+ self._graph.axisX().setLabelAutoRotation(30.0)
+ self._graph.axisY().setLabelAutoRotation(90.0)
+ self._graph.axisZ().setLabelAutoRotation(30.0)
+
+ self._graph.removeSeries(self._heightMapSeriesOne)
+ self._graph.removeSeries(self._heightMapSeriesTwo)
+ self._graph.removeSeries(self._heightMapSeriesThree)
+ self._graph.addSeries(self._topography)
+ self._graph.addSeries(self._highlight)
+
+ self._titleLabel.setVisible(False)
+ self._graph.axisX().setTitleVisible(False)
+ self._graph.axisY().setTitleVisible(False)
+ self._graph.axisZ().setTitleVisible(False)
+
+ self._graph.axisX().setTitle("")
+ self._graph.axisY().setTitle("")
+ self._graph.axisZ().setTitle("")
+
+ self._graph.setActiveInputHandler(self._customInputHandler)
+
+ # Reset range sliders for topography map
+ self._rangeMinX = 0.0
+ self._rangeMinZ = 0.0
+ self._stepX = 1.0
+ self._stepZ = 1.0
+ self._axisMinSliderX.setMinimum(0)
+ self._axisMinSliderX.setMaximum(AREA_WIDTH - 200)
+ self._axisMinSliderX.setValue(0)
+ self._axisMaxSliderX.setMinimum(200)
+ self._axisMaxSliderX.setMaximum(AREA_WIDTH)
+ self._axisMaxSliderX.setValue(AREA_WIDTH)
+ self._axisMinSliderZ.setMinimum(0)
+ self._axisMinSliderZ.setMaximum(AREA_HEIGHT - 200)
+ self._axisMinSliderZ.setValue(0)
+ self._axisMaxSliderZ.setMinimum(200)
+ self._axisMaxSliderZ.setMaximum(AREA_HEIGHT)
+ self._axisMaxSliderZ.setValue(AREA_HEIGHT)
+
+ def adjustXMin(self, min):
+ minX = self._stepX * float(min) + self._rangeMinX
+
+ max = self._axisMaxSliderX.value()
+ if min >= max:
+ max = min + 1
+ self._axisMaxSliderX.setValue(max)
+
+ maxX = self._stepX * max + self._rangeMinX
+
+ self.setAxisXRange(minX, maxX)
+
+ def adjustXMax(self, max):
+ maxX = self._stepX * float(max) + self._rangeMinX
+
+ min = self._axisMinSliderX.value()
+ if max <= min:
+ min = max - 1
+ self._axisMinSliderX.setValue(min)
+
+ minX = self._stepX * min + self._rangeMinX
+
+ self.setAxisXRange(minX, maxX)
+
+ def adjustZMin(self, min):
+ minZ = self._stepZ * float(min) + self._rangeMinZ
+
+ max = self._axisMaxSliderZ.value()
+ if min >= max:
+ max = min + 1
+ self._axisMaxSliderZ.setValue(max)
+
+ maxZ = self._stepZ * max + self._rangeMinZ
+
+ self.setAxisZRange(minZ, maxZ)
+
+ def adjustZMax(self, max):
+ maxX = self._stepZ * float(max) + self._rangeMinZ
+
+ min = self._axisMinSliderZ.value()
+ if max <= min:
+ min = max - 1
+ self._axisMinSliderZ.setValue(min)
+
+ minX = self._stepZ * min + self._rangeMinZ
+
+ self.setAxisZRange(minX, maxX)
+
+ def setAxisXRange(self, min, max):
+ self._graph.axisX().setRange(min, max)
+
+ def setAxisZRange(self, min, max):
+ self._graph.axisZ().setRange(min, max)
+
+ def setBlackToYellowGradient(self):
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.black)
+ gr.setColorAt(0.33, Qt.blue)
+ gr.setColorAt(0.67, Qt.red)
+ gr.setColorAt(1.0, Qt.yellow)
+
+ self._sqrtSinSeries.setBaseGradient(gr)
+ self._sqrtSinSeries.setColorStyle(Q3DTheme.ColorStyle.RangeGradient)
+
+ def setGreenToRedGradient(self):
+ gr = QLinearGradient()
+ gr.setColorAt(0.0, Qt.darkGreen)
+ gr.setColorAt(0.5, Qt.yellow)
+ gr.setColorAt(0.8, Qt.red)
+ gr.setColorAt(1.0, Qt.darkRed)
+
+ self._sqrtSinSeries.setBaseGradient(gr)
+ self._sqrtSinSeries.setColorStyle(Q3DTheme.ColorStyle.RangeGradient)
+
+ @Slot(bool)
+ def toggleItemOne(self, show):
+ positionOne = QVector3D(39.0, 77.0, 19.2)
+ positionOnePipe = QVector3D(39.0, 45.0, 19.2)
+ positionOneLabel = QVector3D(39.0, 107.0, 19.2)
+ if show:
+ color = QImage(2, 2, QImage.Format_RGB32)
+ color.fill(Qt.red)
+ file_name = os.fspath(self._data_path / "oilrig.mesh")
+ item = QCustom3DItem(file_name, positionOne,
+ QVector3D(0.025, 0.025, 0.025),
+ QQuaternion.fromAxisAndAngle(0.0, 1.0, 0.0, 45.0),
+ color)
+ self._graph.addCustomItem(item)
+ file_name = os.fspath(self._data_path / "pipe.mesh")
+ item = QCustom3DItem(file_name, positionOnePipe,
+ QVector3D(0.005, 0.5, 0.005), QQuaternion(),
+ color)
+ item.setShadowCasting(False)
+ self._graph.addCustomItem(item)
+
+ label = QCustom3DLabel()
+ label.setText("Oil Rig One")
+ label.setPosition(positionOneLabel)
+ label.setScaling(QVector3D(1.0, 1.0, 1.0))
+ self._graph.addCustomItem(label)
+ else:
+ self.resetSelection()
+ self._graph.removeCustomItemAt(positionOne)
+ self._graph.removeCustomItemAt(positionOnePipe)
+ self._graph.removeCustomItemAt(positionOneLabel)
+
+ @Slot(bool)
+ def toggleItemTwo(self, show):
+ positionTwo = QVector3D(34.5, 77.0, 23.4)
+ positionTwoPipe = QVector3D(34.5, 45.0, 23.4)
+ positionTwoLabel = QVector3D(34.5, 107.0, 23.4)
+ if show:
+ color = QImage(2, 2, QImage.Format_RGB32)
+ color.fill(Qt.red)
+ item = QCustom3DItem()
+ file_name = os.fspath(self._data_path / "oilrig.mesh")
+ item.setMeshFile(file_name)
+ item.setPosition(positionTwo)
+ item.setScaling(QVector3D(0.025, 0.025, 0.025))
+ item.setRotation(QQuaternion.fromAxisAndAngle(0.0, 1.0, 0.0, 25.0))
+ item.setTextureImage(color)
+ self._graph.addCustomItem(item)
+ file_name = os.fspath(self._data_path / "pipe.mesh")
+ item = QCustom3DItem(file_name, positionTwoPipe,
+ QVector3D(0.005, 0.5, 0.005), QQuaternion(),
+ color)
+ item.setShadowCasting(False)
+ self._graph.addCustomItem(item)
+
+ label = QCustom3DLabel()
+ label.setText("Oil Rig Two")
+ label.setPosition(positionTwoLabel)
+ label.setScaling(QVector3D(1.0, 1.0, 1.0))
+ self._graph.addCustomItem(label)
+ else:
+ self.resetSelection()
+ self._graph.removeCustomItemAt(positionTwo)
+ self._graph.removeCustomItemAt(positionTwoPipe)
+ self._graph.removeCustomItemAt(positionTwoLabel)
+
+ @Slot(bool)
+ def toggleItemThree(self, show):
+ positionThree = QVector3D(34.5, 86.0, 19.1)
+ positionThreeLabel = QVector3D(34.5, 116.0, 19.1)
+ if show:
+ color = QImage(2, 2, QImage.Format_RGB32)
+ color.fill(Qt.darkMagenta)
+ item = QCustom3DItem()
+ file_name = os.fspath(self._data_path / "refinery.mesh")
+ item.setMeshFile(file_name)
+ item.setPosition(positionThree)
+ item.setScaling(QVector3D(0.04, 0.04, 0.04))
+ item.setRotation(QQuaternion.fromAxisAndAngle(0.0, 1.0, 0.0, 75.0))
+ item.setTextureImage(color)
+ self._graph.addCustomItem(item)
+
+ label = QCustom3DLabel()
+ label.setText("Refinery")
+ label.setPosition(positionThreeLabel)
+ label.setScaling(QVector3D(1.0, 1.0, 1.0))
+ self._graph.addCustomItem(label)
+ else:
+ self.resetSelection()
+ self._graph.removeCustomItemAt(positionThree)
+ self._graph.removeCustomItemAt(positionThreeLabel)
+
+ @Slot(bool)
+ def toggleSeeThrough(self, seethrough):
+ s0 = self._graph.seriesList()[0]
+ s1 = self._graph.seriesList()[1]
+ if seethrough:
+ s0.setDrawMode(QSurface3DSeries.DrawWireframe)
+ s1.setDrawMode(QSurface3DSeries.DrawWireframe)
+ else:
+ s0.setDrawMode(QSurface3DSeries.DrawSurface)
+ s1.setDrawMode(QSurface3DSeries.DrawSurface)
+
+ @Slot(bool)
+ def toggleOilHighlight(self, highlight):
+ s2 = self._graph.seriesList()[2]
+ if highlight:
+ grThree = QLinearGradient()
+ grThree.setColorAt(0.0, Qt.black)
+ grThree.setColorAt(0.05, Qt.red)
+ s2.setBaseGradient(grThree)
+ else:
+ grThree = QLinearGradient()
+ grThree.setColorAt(0.0, Qt.white)
+ grThree.setColorAt(0.05, Qt.black)
+ s2.setBaseGradient(grThree)
+
+ @Slot(bool)
+ def toggleShadows(self, shadows):
+ sq = (QAbstract3DGraph.ShadowQualityMedium
+ if shadows else QAbstract3DGraph.ShadowQualityNone)
+ self._graph.setShadowQuality(sq)
+
+ @Slot(bool)
+ def toggleSurfaceTexture(self, enable):
+ if enable:
+ file_name = os.fspath(self._data_path / "maptexture.jpg")
+ self._topography.setTextureFile(file_name)
+ else:
+ self._topography.setTextureFile("")
+
+ def handleElementSelected(self, type):
+ self.resetSelection()
+ if type == QAbstract3DGraph.ElementCustomItem:
+ item = self._graph.selectedCustomItem()
+ text = ""
+ if isinstance(item, QCustom3DItem):
+ text += "Custom label: "
+ else:
+ file = item.meshFile().split("/")[-1]
+ text += f"{file}: "
+
+ text += str(self._graph.selectedCustomItemIndex())
+ self._textField.setText(text)
+ self._previouslyAnimatedItem = item
+ self._previousScaling = item.scaling()
+ self._selectionAnimation.setTargetObject(item)
+ self._selectionAnimation.setStartValue(item.scaling())
+ self._selectionAnimation.setEndValue(item.scaling() * 1.5)
+ self._selectionAnimation.start()
+ elif type == QAbstract3DGraph.ElementSeries:
+ text = "Surface ("
+ series = self._graph.selectedSeries()
+ if series:
+ point = series.selectedPoint()
+ text += f"{point.x()}, {point.y()}"
+ text += ")"
+ self._textField.setText(text)
+ elif (type.value > QAbstract3DGraph.ElementSeries.value
+ and type < QAbstract3DGraph.ElementCustomItem.value):
+ index = self._graph.selectedLabelIndex()
+ text = ""
+ if type == QAbstract3DGraph.ElementAxisXLabel:
+ text += "Axis X label: "
+ elif type == QAbstract3DGraph.ElementAxisYLabel:
+ text += "Axis Y label: "
+ else:
+ text += "Axis Z label: "
+ text += str(index)
+ self._textField.setText(text)
+ else:
+ self._textField.setText("Nothing")
+
+ def resetSelection(self):
+ self._selectionAnimation.stop()
+ if self._previouslyAnimatedItem:
+ self._previouslyAnimatedItem.setScaling(self._previousScaling)
+ self._previouslyAnimatedItem = None
+
+ def toggleModeNone(self):
+ self._graph.setSelectionMode(QAbstract3DGraph.SelectionNone)
+
+ def toggleModeItem(self):
+ self._graph.setSelectionMode(QAbstract3DGraph.SelectionItem)
+
+ def toggleModeSliceRow(self):
+ sm = (QAbstract3DGraph.SelectionItemAndRow
+ | QAbstract3DGraph.SelectionSlice
+ | QAbstract3DGraph.SelectionMultiSeries)
+ self._graph.setSelectionMode(sm)
+
+ def toggleModeSliceColumn(self):
+ sm = (QAbstract3DGraph.SelectionItemAndColumn
+ | QAbstract3DGraph.SelectionSlice
+ | QAbstract3DGraph.SelectionMultiSeries)
+ self._graph.setSelectionMode(sm)
+
+ def setAxisMinSliderX(self, slider):
+ self._axisMinSliderX = slider
+
+ def setAxisMaxSliderX(self, slider):
+ self._axisMaxSliderX = slider
+
+ def setAxisMinSliderZ(self, slider):
+ self._axisMinSliderZ = slider
+
+ def setAxisMaxSliderZ(self, slider):
+ self._axisMaxSliderZ = slider
diff --git a/examples/graphs/3d/widgetgallery/topographicseries.py b/examples/graphs/3d/widgetgallery/topographicseries.py
new file mode 100644
index 000000000..4f286a222
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/topographicseries.py
@@ -0,0 +1,57 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Qt
+from PySide6.QtGui import QImage, QVector3D
+from PySide6.QtGraphs import (QSurface3DSeries, QSurfaceDataItem)
+
+
+# Value used to encode height data as RGB value on PNG file
+PACKING_FACTOR = 11983.0
+
+
+class TopographicSeries(QSurface3DSeries):
+
+ def __init__(self):
+ super().__init__()
+ self._sampleCountX = 0.0
+ self._sampleCountZ = 0.0
+ self.setDrawMode(QSurface3DSeries.DrawSurface)
+ self.setFlatShadingEnabled(True)
+ self.setBaseColor(Qt.white)
+
+ def sampleCountX(self):
+ return self._sampleCountX
+
+ def sampleCountZ(self):
+ return self._sampleCountZ
+
+ def setTopographyFile(self, file, width, height):
+ heightMapImage = QImage(file)
+ bits = heightMapImage.bits()
+ imageHeight = heightMapImage.height()
+ imageWidth = heightMapImage.width()
+ widthBits = imageWidth * 4
+ stepX = width / float(imageWidth)
+ stepZ = height / float(imageHeight)
+
+ dataArray = []
+ for i in range(0, imageHeight):
+ p = i * widthBits
+ z = height - float(i) * stepZ
+ newRow = []
+ for j in range(0, imageWidth):
+ aa = bits[p + 0]
+ rr = bits[p + 1]
+ gg = bits[p + 2]
+ color = (gg << 16) + (rr << 8) + aa
+ y = float(color) / PACKING_FACTOR
+ item = QSurfaceDataItem(QVector3D(float(j) * stepX, y, z))
+ newRow.append(item)
+ p += 4
+ dataArray.append(newRow)
+
+ self.dataProxy().resetArray(dataArray)
+
+ self._sampleCountX = float(imageWidth)
+ self._sampleCountZ = float(imageHeight)
diff --git a/examples/graphs/3d/widgetgallery/variantbardatamapping.py b/examples/graphs/3d/widgetgallery/variantbardatamapping.py
new file mode 100644
index 000000000..50bdefa6a
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/variantbardatamapping.py
@@ -0,0 +1,67 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Signal
+
+
+class VariantBarDataMapping(QObject):
+
+ rowIndexChanged = Signal()
+ columnIndexChanged = Signal()
+ valueIndexChanged = Signal()
+ rowCategoriesChanged = Signal()
+ columnCategoriesChanged = Signal()
+ mappingChanged = Signal()
+
+ def __init__(self, rowIndex, columnIndex, valueIndex,
+ rowCategories=[], columnCategories=[]):
+ super().__init__(None)
+ self._rowIndex = rowIndex
+ self._columnIndex = columnIndex
+ self._valueIndex = valueIndex
+ self._rowCategories = rowCategories
+ self._columnCategories = columnCategories
+
+ def setRowIndex(self, index):
+ self._rowIndex = index
+ self.mappingChanged.emit()
+
+ def rowIndex(self):
+ return self._rowIndex
+
+ def setColumnIndex(self, index):
+ self._columnIndex = index
+ self.mappingChanged.emit()
+
+ def columnIndex(self):
+ return self._columnIndex
+
+ def setValueIndex(self, index):
+ self._valueIndex = index
+ self.mappingChanged.emit()
+
+ def valueIndex(self):
+ return self._valueIndex
+
+ def setRowCategories(self, categories):
+ self._rowCategories = categories
+ self.mappingChanged.emit()
+
+ def rowCategories(self):
+ return self._rowCategories
+
+ def setColumnCategories(self, categories):
+ self._columnCategories = categories
+ self.mappingChanged.emit()
+
+ def columnCategories(self):
+ return self._columnCategories
+
+ def remap(self, rowIndex, columnIndex, valueIndex,
+ rowCategories=[], columnCategories=[]):
+ self._rowIndex = rowIndex
+ self._columnIndex = columnIndex
+ self._valueIndex = valueIndex
+ self._rowCategories = rowCategories
+ self._columnCategories = columnCategories
+ self.mappingChanged.emit()
diff --git a/examples/graphs/3d/widgetgallery/variantbardataproxy.py b/examples/graphs/3d/widgetgallery/variantbardataproxy.py
new file mode 100644
index 000000000..5ab2a2cd2
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/variantbardataproxy.py
@@ -0,0 +1,100 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Slot
+from PySide6.QtGraphs import QBarDataProxy, QBarDataItem
+
+
+class VariantBarDataProxy(QBarDataProxy):
+
+ def __init__(self):
+ super().__init__()
+ self._dataSet = None
+ self._mapping = None
+
+ def setDataSet(self, newSet):
+ if self._dataSet:
+ self._dataSet.itemsAdded.disconnect(self.handleItemsAdded)
+ self._dataSet.dataCleared.disconnect(self.handleDataCleared)
+
+ self._dataSet = newSet
+
+ if self._dataSet:
+ self._dataSet.itemsAdded.connect(self.handleItemsAdded)
+ self._dataSet.dataCleared.connect(self.handleDataCleared)
+ self.resolveDataSet()
+
+ def dataSet(self):
+ return self._dataSet.data()
+
+ # Map key (row, column, value) to value index in data item (VariantItem).
+ # Doesn't gain ownership of mapping, but does connect to it to listen for
+ # mapping changes. Modifying mapping that is set to proxy will trigger
+ # dataset re-resolving.
+ def setMapping(self, mapping):
+ if self._mapping:
+ self._mapping.mappingChanged.disconnect(self.handleMappingChanged)
+
+ self._mapping = mapping
+
+ if self._mapping:
+ self._mapping.mappingChanged.connect(self.handleMappingChanged)
+
+ self.resolveDataSet()
+
+ def mapping(self):
+ return self._mapping.data()
+
+ @Slot(int, int)
+ def handleItemsAdded(self, index, count):
+ # Resolve new items
+ self.resolveDataSet()
+
+ @Slot()
+ def handleDataCleared(self):
+ # Data cleared, reset array
+ self.resetArray(None)
+
+ @Slot()
+ def handleMappingChanged(self):
+ self.resolveDataSet()
+
+ # Resolve entire dataset into QBarDataArray.
+ def resolveDataSet(self):
+ # If we have no data or mapping, or the categories are not defined,
+ # simply clear the array
+ if (not self._dataSet or not self._mapping
+ or not self._mapping.rowCategories()
+ or not self._mapping.columnCategories()):
+ self.resetArray()
+ return
+
+ itemList = self._dataSet.itemList()
+
+ rowIndex = self._mapping.rowIndex()
+ columnIndex = self._mapping.columnIndex()
+ valueIndex = self._mapping.valueIndex()
+ rowList = self._mapping.rowCategories()
+ columnList = self._mapping.columnCategories()
+
+ # Sort values into rows and columns
+ itemValueMap = {}
+ for item in itemList:
+ key = str(item[rowIndex])
+ v = itemValueMap.get(key)
+ if not v:
+ v = {}
+ itemValueMap[key] = v
+ v[str(item[columnIndex])] = float(item[valueIndex])
+
+ # Create a new data array in format the parent class understands
+ newProxyArray = []
+ for rowKey in rowList:
+ newProxyRow = []
+ for i in range(0, len(columnList)):
+ item = QBarDataItem(itemValueMap[rowKey][columnList[i]])
+ newProxyRow.append(item)
+ newProxyArray.append(newProxyRow)
+
+ # Finally, reset the data array in the parent class
+ self.resetArray(newProxyArray)
diff --git a/examples/graphs/3d/widgetgallery/variantdataset.py b/examples/graphs/3d/widgetgallery/variantdataset.py
new file mode 100644
index 000000000..752bc3887
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/variantdataset.py
@@ -0,0 +1,39 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Signal
+
+
+class VariantDataSet(QObject):
+
+ itemsAdded = Signal(int, int)
+ dataCleared = Signal()
+
+ def __init__(self):
+ super().__init__()
+ self._variantData = []
+
+ def clear(self):
+ for item in self._variantData:
+ item.clear()
+ del item
+
+ self._variantData.clear()
+ self.dataCleared.emit()
+
+ def addItem(self, item):
+ self._variantData.append(item)
+ addIndex = len(self._variantData)
+
+ self.itemsAdded.emit(addIndex, 1)
+ return addIndex
+
+ def addItems(self, itemList):
+ newCount = len(itemList)
+ addIndex = len(self._variantData)
+ self._variantData.extend(itemList)
+ self.itemsAdded.emit(addIndex, newCount)
+ return addIndex
+
+ def itemList(self):
+ return self._variantData
diff --git a/examples/graphs/3d/widgetgallery/widgetgallery.pyproject b/examples/graphs/3d/widgetgallery/widgetgallery.pyproject
new file mode 100644
index 000000000..581b21483
--- /dev/null
+++ b/examples/graphs/3d/widgetgallery/widgetgallery.pyproject
@@ -0,0 +1,29 @@
+{
+ "files": ["main.py",
+ "axesinputhandler.py",
+ "bargraph.py",
+ "custominputhandler.py",
+ "graphmodifier.py",
+ "highlightseries.py",
+ "rainfalldata.py",
+ "scatterdatamodifier.py",
+ "scattergraph.py",
+ "surfacegraph.py",
+ "surfacegraphmodifier.py",
+ "topographicseries.py",
+ "variantbardatamapping.py",
+ "variantbardataproxy.py",
+ "variantdataset.py",
+ "data/layer_1.png",
+ "data/layer_2.png",
+ "data/layer_3.png",
+ "data/license.txt",
+ "data/maptexture.jpg",
+ "data/narrowarrow.mesh",
+ "data/oilrig.mesh",
+ "data/pipe.mesh",
+ "data/raindata.txt",
+ "data/refinery.mesh",
+ "data/topography.png"
+]
+}
diff --git a/examples/gui/analogclock/analogclock.pyproject b/examples/gui/analogclock/analogclock.pyproject
new file mode 100644
index 000000000..cc7a74a34
--- /dev/null
+++ b/examples/gui/analogclock/analogclock.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py"]
+}
diff --git a/examples/gui/analogclock/doc/analogclock.rst b/examples/gui/analogclock/doc/analogclock.rst
new file mode 100644
index 000000000..a1ede41dd
--- /dev/null
+++ b/examples/gui/analogclock/doc/analogclock.rst
@@ -0,0 +1,8 @@
+Analog Clock Window Example
+===========================
+
+The Analog Clock Window example shows how to draw the contents of
+a custom window.
+
+This example demonstrates how the transformation and scaling
+features of QPainter can be used to make drawing easier.
diff --git a/examples/gui/analogclock/main.py b/examples/gui/analogclock/main.py
new file mode 100644
index 000000000..c0e00dd93
--- /dev/null
+++ b/examples/gui/analogclock/main.py
@@ -0,0 +1,92 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QPoint, QTimer, QTime, Qt
+from PySide6.QtGui import QGuiApplication, QPainter, QPalette, QPolygon, QRasterWindow
+
+"""Simplified PySide6 port of the gui/analogclock example from Qt v6.x"""
+
+
+class AnalogClockWindow(QRasterWindow):
+
+ def __init__(self):
+ super().__init__()
+ self.setTitle("Analog Clock")
+ self.resize(200, 200)
+
+ self._timer = QTimer(self)
+ self._timer.timeout.connect(self.update)
+ self._timer.start(1000)
+
+ self._hour_hand = QPolygon([QPoint(5, 14), QPoint(-5, 14),
+ QPoint(-4, -71), QPoint(4, -71)])
+ self._minute_hand = QPolygon([QPoint(4, 14), QPoint(-4, 14),
+ QPoint(-3, -89), QPoint(3, -89)])
+ self._seconds_hand = QPolygon([QPoint(1, 14), QPoint(-1, 14),
+ QPoint(-1, -89), QPoint(1, -89)])
+
+ palette = qApp.palette() # noqa: F821
+ self._background_color = palette.color(QPalette.Window)
+ self._hour_color = palette.color(QPalette.Text)
+ self._minute_color = palette.color(QPalette.Text)
+ self._seconds_color = palette.color(QPalette.Accent)
+
+ def paintEvent(self, e):
+ with QPainter(self) as painter:
+ self.render(painter)
+
+ def render(self, painter):
+ width = self.width()
+ height = self.height()
+
+ side = min(width, height)
+
+ painter.fillRect(0, 0, width, height, self._background_color)
+ painter.setRenderHint(QPainter.Antialiasing)
+ painter.translate(width / 2, height / 2)
+ painter.scale(side / 200.0, side / 200.0)
+
+ time = QTime.currentTime()
+
+ painter.setPen(Qt.NoPen)
+ painter.setBrush(self._hour_color)
+
+ painter.save()
+ painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)))
+ painter.drawConvexPolygon(self._hour_hand)
+ painter.restore()
+
+ for _ in range(0, 12):
+ painter.drawRect(73, -3, 16, 6)
+ painter.rotate(30.0)
+
+ painter.setBrush(self._minute_color)
+
+ painter.save()
+ painter.rotate(6.0 * time.minute())
+ painter.drawConvexPolygon(self._minute_hand)
+ painter.restore()
+
+ painter.setBrush(self._seconds_color)
+
+ painter.save()
+ painter.rotate(6.0 * time.second())
+ painter.drawConvexPolygon(self._seconds_hand)
+ painter.drawEllipse(-3, -3, 6, 6)
+ painter.drawEllipse(-5, -68, 10, 10)
+ painter.restore()
+
+ painter.setPen(self._minute_color)
+
+ for _ in range(0, 60):
+ painter.drawLine(92, 0, 96, 0)
+ painter.rotate(6.0)
+
+
+if __name__ == "__main__":
+ app = QGuiApplication(sys.argv)
+ clock = AnalogClockWindow()
+ clock.show()
+ sys.exit(app.exec())
diff --git a/examples/gui/rhiwindow/doc/rhiwindow.rst b/examples/gui/rhiwindow/doc/rhiwindow.rst
new file mode 100644
index 000000000..defbc46ef
--- /dev/null
+++ b/examples/gui/rhiwindow/doc/rhiwindow.rst
@@ -0,0 +1,49 @@
+.. _rhi-window-example:
+
+RHI Window Example
+==================
+
+This example shows how to create a minimal ``QWindow``-based
+application using ``QRhi``.
+
+Qt 6.6 starts offering its accelerated 3D API and shader abstraction layer for
+application use as well. Applications can now use the same 3D graphics classes
+Qt itself uses to implement the ``Qt Quick`` scenegraph or the ``Qt Quick`` 3D
+engine. In earlier Qt versions ``QRhi`` and the related classes were all
+private APIs. From 6.6 on these classes are in a similar category as QPA family
+of classes: neither fully public nor private, but something in-between, with a
+more limited compatibility promise compared to public APIs. On the other hand,
+``QRhi`` and the related classes now come with full documentation similarly to
+public APIs.
+
+There are multiple ways to use ``QRhi``, the example here shows the most
+low-level approach: targeting a ``QWindow``, while not using ``Qt Quick``, ``Qt
+Quick 3D``, or Widgets in any form, and setting up all the rendering and
+windowing infrastructure in the application.
+
+In contrast, when writing a QML application with ``Qt Quick`` or ``Qt Quick
+3D``, and wanting to add ``QRhi``-based rendering to it, such an application is
+going to rely on the window and rendering infrastructure ``Qt Quick`` has
+already initialized, and it is likely going to query an existing ``QRhi``
+instance from the ``QQuickWindow``. There dealing with ``QRhi::create()``,
+platform/API specifics or correctly handling ``QExposeEvent`` and resize events
+for the window are all managed by Qt Quick. Whereas in this example, all that
+is managed and taken care of by the application itself.
+
+.. note:: For ``QWidget``-based applications, see the :ref:`rhi-widget-example`.
+
+Shaders
+-------
+
+Due to being a Qt GUI/Python module example, this example cannot have a
+dependency on the ``Qt Shader Tools`` module. This means that ``CMake`` helper
+functions such as ``qt_add_shaders`` are not available for use. Therefore, the
+example has the pre-processed ``.qsb`` files included in the
+``shaders/prebuilt`` folder, and they are simply included within the executable
+via a resource file}. This approach is not generally recommended for
+applications.
+
+
+.. image:: rhiwindow.webp
+ :width: 800
+ :alt: RHI Window Example
diff --git a/examples/gui/rhiwindow/doc/rhiwindow.webp b/examples/gui/rhiwindow/doc/rhiwindow.webp
new file mode 100644
index 000000000..7ab3514af
--- /dev/null
+++ b/examples/gui/rhiwindow/doc/rhiwindow.webp
Binary files differ
diff --git a/examples/gui/rhiwindow/main.py b/examples/gui/rhiwindow/main.py
new file mode 100644
index 000000000..cfb73b10b
--- /dev/null
+++ b/examples/gui/rhiwindow/main.py
@@ -0,0 +1,80 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from argparse import ArgumentParser, RawDescriptionHelpFormatter
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtGui import QGuiApplication, QRhi, QSurfaceFormat
+
+from rhiwindow import HelloWindow
+import rc_rhiwindow # noqa: F401
+
+if __name__ == "__main__":
+ app = QGuiApplication(sys.argv)
+
+ # Use platform-specific defaults when no command-line arguments given.
+ graphicsApi = QRhi.OpenGLES2
+ if sys.platform == "win32":
+ graphicsApi = QRhi.D3D11
+ elif sys.platform == "darwin":
+ graphicsApi = QRhi.Metal
+
+ parser = ArgumentParser(formatter_class=RawDescriptionHelpFormatter,
+ description="QRhi render example")
+ parser.add_argument("--null", "-n", action="store_true", help="Null")
+ parser.add_argument("--opengl", "-g", action="store_true", help="OpenGL")
+ parser.add_argument("--d3d11", "-d", action="store_true",
+ help="Direct3D 11")
+ parser.add_argument("--d3d12", "-D", action="store_true",
+ help="Direct3D 12")
+ parser.add_argument("--metal", "-m", action="store_true",
+ help="Metal")
+ args = parser.parse_args()
+ if args.null:
+ graphicsApi = QRhi.Null
+ elif args.opengl:
+ graphicsApi = QRhi.OpenGLES2
+ elif args.d3d11:
+ graphicsApi = QRhi.D3D11
+ elif args.d3d12:
+ graphicsApi = QRhi.D3D12
+ elif args.metal:
+ graphicsApi = QRhi.Metal
+
+ # graphicsApi = QRhi.Vulkan? detect? needs QVulkanInstance
+
+ # For OpenGL, to ensure there is a depth/stencil buffer for the window.
+ # With other APIs this is under the application's control
+ # (QRhiRenderBuffer etc.) and so no special setup is needed for those.
+ fmt = QSurfaceFormat()
+ fmt.setDepthBufferSize(24)
+ fmt.setStencilBufferSize(8)
+ # Special case macOS to allow using OpenGL there.
+ # (the default Metal is the recommended approach, though)
+ # gl_VertexID is a GLSL 130 feature, and so the default OpenGL 2.1 context
+ # we get on macOS is not sufficient.
+ if sys.platform == "darwin":
+ fmt.setVersion(4, 1)
+ fmt.setProfile(QSurfaceFormat.CoreProfile)
+ QSurfaceFormat.setDefaultFormat(fmt)
+
+ window = HelloWindow(graphicsApi)
+
+ window.resize(1280, 720)
+ title = QCoreApplication.applicationName() + " - " + window.graphicsApiName()
+ window.setTitle(title)
+ window.show()
+
+ ret = app.exec()
+
+ # RhiWindow::event() will not get invoked when the
+ # PlatformSurfaceAboutToBeDestroyed event is sent during the QWindow
+ # destruction. That happens only when exiting via app::quit() instead of
+ # the more common QWindow::close(). Take care of it: if the QPlatformWindow
+ # is still around (there was no close() yet), get rid of the swapchain
+ # while it's not too late.
+ if window.isVisible():
+ window.releaseSwapChain()
+
+ sys.exit(ret)
diff --git a/examples/gui/rhiwindow/rc_rhiwindow.py b/examples/gui/rhiwindow/rc_rhiwindow.py
new file mode 100644
index 000000000..67f6adeb9
--- /dev/null
+++ b/examples/gui/rhiwindow/rc_rhiwindow.py
@@ -0,0 +1,319 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.6.1
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x03\xd6\
+\x00\
+\x00\x0b\xa0x\x9c\xd5VMo\xdbF\x10]}8\x8e\
+\xe94i\x9a\xaf&q\xddM\xdd&\x94\xe3\xa8\xb4\xe0\
+\x04Ee\xb9-\x92\x221\x10\xc0n\x5c\x18\x05\x04\x83\
+P$\xca! \x93\x86H\x0a*\x02\x03\x05r\xcf\xb1\
+\xa7\xde\xf2\x0f\xdaC\xff@\x81\xfe\xa5^\x8avf\xf7\
+Q\xbb\xfapN\xb9d\x01\x8a\x9c\xb73\xf3f\xe6-\
+i\x0b!\x16\x84Y\x05\xba\xce\x8a\x81\xf0EF\xbfB\
+\x14\x19\xfc\x0fK\xbc\xc3\xc5D\xabt\x9d\xb7l^e\
+\xdc\xcf\xe0\xde1!\xa5\xdfJ\xc5\x95yvu\xa8\xc6\
+\xbb@/R\x8d\x1c\xbcH!|\x7f\xfct\xefi5\
+I;\xd5\x8d\xfb\x9eP\x04\xa5\x11\xc1\x05\x8a\xcbI\x8e\
+Za\xc4\xcf\xdc\xfd9\xba>\xe1X\xdaa{\x19\xb9\
+\xd9>\xa7r\xebb\x9f\x889q\x13{\x8b\xb8\xe7X\
+\x01X\xc1\xc2\x8a\xc0J*Wi\x84]\xa2_\xbe\xdf\
+\x22\xac\x04\xec*=q\xd3\x92\xaek\xc4;\x8f!\x14\
+\x15VV\x95\xb3/\xe3u\xd8\x0b\xc0\xae\x90\xed \xb6\
+\x00\xff\xbc\x16\x07\xfe\x8b\xe8\x93\xb1\xbb\xf0??a\x7f\
+\x08>\xe6\xbf\x06\xfe2\xf2\x7f\x8c\xfc\x02\xfel_G\
+\xfc\x12\xd97\xe0\x7f]\xcdO\xf7\x9f\xe7\xb8\x81\x9a\x96\
+P\xefM\xd4\xb4\x84\xb9\x97\xac\x1a\x96-\x8e3\x86\xf3\
+\xdb\xdc\xfeL\x99\xbf|\x93\xdb_\xc0\x9f\xf3W\x90\x8b\
+y\x1fP\x0dEa\x0e\x14\xe3\xff\x102G\xf7\x06\xb8\
+>\xc0L\xfe\x22\x94\xed\x0b\xc0x.\x7f\x03\xbb\x08\x9c\
+g\x13\x83\xf3#\xe0y\x9eK\xc8\x93\xc7\x5c\x06f\xc7\
+\x5c\x01\xbeK>\xf3Jo\x9d\x87\xf1-\xaan\x01X\
+\x03\xda\x7f\x0a}_\xc3\xff\x160i\xe5X\xc1<\xf8\
+z\x05\xecs\xf8\xf2\xde\x0f\x841\xf7m\xe0\xc2\xc2\xee\
+\x00+\xa8|\xf3jf.|\xef`\xae\x9c\xf7;\xf2\
+\xe7\xb9\xaeB\xabe\xd4\xbb\x0a\xff\x7f)\xc3W\xfa\xf5\
+-\xe3\x9db\xa3#\xcc;\xfd\xe7\xca \xe8'a\x1c\
+\xc9u\xcfs\x9cA\xab\xffs\x18\x1d\xcaA\xd0\xae\xc9\
+\x81\x9f\x0d\xea\x84\xc5aGr\xb8[q^:\x92\x16\
+o\xc8\x86rr\xbb\xbd\xb8\x95\xba\xeea\xcf\xdf\x0f\xfa\
+i0\xdc~$77\xe5zE\xde\x96\xb5\xca\x9a\xd4\
+\xdb\xf6.\xe3\x95\xba\xcaC\xf0n\x9c\x84)\xd3\xabt\
+\x1b\xae\xabr\xaf\xcaZ\xd5\xab\xc8{\x9ab\x9d\x9e\xd7\
+\xa4W\xf5\xd6$?\xd6\x9d\x13\xc7\x99hi(\xcc\xb2\
+Z\xaa\xbd\xc7-\xfdj\xb5\xf4\x87i\xe9>\xb5\x14g\
+\xe9{\xd5\x0e\xbf\xeb5\xd3M\xf1M\x92\xb6\xd2\xb0\xad\
+\xa97l\x92\xba\x83\xad0J\xa5\xa9)\xea\x04\xc3\xd1\
+\x96\x8a\x1a\xf5\x9e\xa4\xfd\xac\x9d\xca\xbd\xdd\xedg\xfb\xfe\
+\xc3~\x9c$\xfevt\x9c\xa5\x18D6\x9dH~-\
+\xf7\xf6G\xddR\xad\xb3\xb3\xecd\xa9IcqR\xf8\
+\x8f\xdf\xff\xf4pg\xe7\xd9#\xafn6\xc7\xda\xd0\x14\
+\xa6\xa9\x93\x5c$\x921\xf5g)\xa5\x09\xa6\xb5R\x05\
+\xbfM.\xe5p\xaab\xba4[\xb3.\x8bF\x22u\
+\xab\xc3\xa1\x92\xac\xab4\xebj\xd1\xa6\x07\xa0\xcf\xd5\xd4\
+x%\x89q\x18\xf8!?\xe7\xadL\x14\xd5`\x11]\
+\xcb\xaf:\xee\x80\x82\xad\x91h`F\x0d:I\xac\x0c\
+\xedd#\xd5\xf1\x9e\xc7\x8e\xd3\x94o\xfef\xa8\xd3\xc3\
+\xbb\xfd \xcd\xfa\xd1\x04\xc5\x89}|\xcb\xf8\x13\x82U\
+\xf8}%\x8c\xda\xbd\xac\x13\xc8\xcd\xa3 m\xf5|\xfa\
+\x97\xa6\x17>\xdfr\x0c\x9e\x84G\x9d/\xf9\xa7\xfab\
+\xcbq\xb2\x84?@Q\xeb(H\x8e[\xed@\xaa(\
+s\xea\x98\xc6c\xea\x19\x87\xad\xd9\xcc\x92\xa0\xef\xf6\xe2\
+v\xe4U\x0e\x0eN=p\xcd\xe61\x1e\xd9I\x9d7\
+5i\x93\x5c?\xb9\xb3^\x88fS;\xfba\xe7\xe0\
+ W\xd3\x04\xf2\xd5\x90/O4yl\x868~h\
+Y\xed\x09\x85g\x9c\xdcY^\xd6\xf1\x8d\xa7\xe4\xcc\x8f\
+\xf0\x88w\xf4\xe9\x01\xfd\xd4\xc7\xc7R5\xd6b\xb2\x9a\
+s\xaa!|\x8d&\xbeHjM\xc8l\xf4>m\xef\
+\x7f\xf6^=\xc8\
+\x00\x00\x04\x0b\
+\x00\
+\x00\x0b\x95x\x9c\xd5Vmo\x1bE\x10\x1e\xbf$n\
+.%I\x9bR\x0a\x05\xb44\x12\xb2Ke.\xc5\xa5\
+\x88\x90((\x01Z\xa9RJS*$\xcb:]\xce\
+gg\xc1wg\xdd\xed\x99FU\xfe\x02\x1f\xf9)H\
+|\xe6\xaf\xc0\x7f\xe0\x0b\x82\x99\xdd9\xdf\xc6qi%\
+\xfa\xa5+\xado\xe7\xd9yyffo\xcf\x00\xb0\x04\
+\x00u\x9c\x15\x9c+0\x01\x0f\x02H`\x843E\xa4\
+\x86\x13\xfe\xe1\x01s\x06\x99]\x86\x01*\xfb0\x84=\
+\xcb\xb4\xfe2\xa6\x8bp\x049\x9a\xd3\xca\x83M\xb8\x8b\
+\xab}K\xa7\xaaw\x22\xe45\xc6\xd52\xa3\xbb\x96\xc6\
+Z\xb1X\xc1\xb8cd\x11\x80\x04\x05'\x1c`\xb7`\
+\xf2*\xc7\x22?\xfb\x16\xd1?j\xd5\x8d\x06\xc5t\xe0\
+\x02\xbc\xcf\xe8%L\xa0\xa2\x89/\xea\xe77\x0f\x0e\x1f\
+\xb43\xd5ow\xee\xb8\x86\xb3.\xb0\xde[\x85\x86f\
+J3\xf2eL85\xe7\xa2N\xb2\xa6\xf1\x06\xf9\xc0\
+\x15\xe1E\x0c\x92/Z\xf2=\x94Wy\xbd\xa0\xe5\x85\
+\xa9\xbc1\xd5)\xb1\x06\x98\x22\x16X\x85\xf5v\xb5\xef\
+\x9a\xc6\xaa\x1c\xe7\x12>oXqI\xfe\x80\xe5u\xd4\
+\xaaj\xb9\xa6\xb3\xa2\xf5U\x5cQ\xb1\x04\xce\xb7P\xbf\
+\xc1\xc5\xabk\xac\x8e\x952G\x8c\xf0-\x96\x97\x18#\
+}\x87\xf5k\xac\xbf\xcc\xfc\x1c\xd6_\xe6\xfa\x10v\x0d\
+\xe5\x15\xf6U\xd7\xf50uXa\x1fd\xbf\xc6\xbcV\
+\xd9~M\xf7\xc8`o\xa2|\x99\xb9\x92\xbf\x8fX^\
+g\x99\xec\xaf@q$\x01>\xc5zU\xa1<]\xc4\
+\xf1/D\xa8\xe6\xdb\xcc\xfd\x0d\xe6\xf7%\xa2Wt\x0c\
+\x13o\x9du\x16u\x8d\x0c\xfe3\xea8:ocw\
+\xd5\xb2\xbb6\xc7\xeem\xc6\xbfE\x1d\x92\xdfa[\xb0\
+\xb0\xeb\x8cU,\xec]\xc6\x88\xfbC\xac\x16\xd5\xeb=\
+\xb6\xbf\xce\xfb\xe4{\x073Z\xe2\xbd\xbf\xd1\xc3g\xda\
+\x0b\xd4\xf9l\x92\xd0\xe7'\x8d?7&a\x9a\xc9$\
+\x16\x9b\xae\xeb\x8c\xd30\x90Z:\x96\xc3\xe3\xb1\x18\x8c\
+\x12_m\x9d\x83e\x8c\xa0\x93\xa94\x0f\x948\xca\x07\
+\xce3G\xe0\x88|\xd5\x11\xd1d\xbc\xa5%m+\x92\
+\xb1\x1fHu\xb2\xe5\x9c\xa2E\x1e\xcbA\x92Fd\x22\
+\xbc\xcd\xbb\x88L\xfc\xf4D\xc6C1\x09\x83O\xc4\xc4\
+\x0b\x92Q\x92\x12\x9c\xc8\xbe \xc6\xcd\x16\xfb\x1e\x8e\xbc\
+\xafS\x7f\xb8\xef+\xbf\xeb\xf6\xc46Yt\x9al!\
+n\x92\xbb6\xc7\xbae\x0b-\x8c\xec83\x05x\x0a\
+\xe5\xf8\xad,\xc0m\xf7uN\xea\x17+\xa9\xdf\xcb\xa4\
+\xee\xbc\xa2\xa4\x92\x5cizb\x80\x8c\xf7LJ2~\
+q\x8eS\xf5\xff\x91\x1e\x9d\xf9\xdbev\xd5\xef\x02\xe4\
+5\x08SM\xefs\x91\x86C\x99\xa90m\x1e\xb9E\
+\xd44\xf9\xc9\x8b\xfc\x1f0\x8cN\xae\xf3\xb4C\x01<\
+L\x19\xf51\xca\x8f\xc9`\x90\x85\xaa\x19\xb8-\xbb\x06\
+\xa4\xc3$f\xf4:-S\x18\xac\xa5\xafd\xc0n\xed\
+b\xd8\x1bvI\xb8\xf8\x87\x0f\xef?z\xe2\xed\xa5I\
+\x96y\xf7\xe3q\xae\x8a\xfa\x9c\xd1\xc7\xa8\x8f\xbf\xfa~\
+\xef\xe0\xe0\xd1\xbek\x02\xce1?\xc8\xd5\x8c\xbdE\x04\
+=\x1c>\xf1\x1e\xfb\xe90T\xecB7\x85\x14\xbc\xe7\
+v\xc6x9\xdb\x1b\xcf\xee\x8dw\xa67\xe7\xd9\x98\xa6\
+\x9fKR`U\x86\xa1'i]\xc4-\x82l\xdb\x9b\
+\xedi\xc1\x0ajL\xd6\x00s\x02\x1a\xe3D\x0bF\xc9\
+F\xdag\xb2+\xbb\xa4\x0fG\xa8\xf24\x9eqpj\
+\x1f\xb8:\x7f\x00xT~\xdd\x90q0\xca\xfb\xa1\xf8\
+\x22\x0a\x95?\xf2\xf0\xcf\xc0H\x1e\xed8%\x9e\xc9\xa8\
+\xff1\xfd\xb4\x8fw\xf0\xfd\xc9\xe8\x02\x88\xfd(\xcc\xb0\
+n\xa1\xd0V\xf3\xee\xcc\xe9\xf1\xfc\xaf\xb7\x91\xad\x88\x9c\
+K\x84\x9f\xd7\xfanW\xd7\xb0\xe9\xb6z\xbd9\x962\
+\x9e\x7f\xe6\xba\xdd<\xc3\xb7g\x94\x04qiI^\xa3\
+0\xb6\xa2\x9aU\xb3\xf0\x85_\x01\xb4,Z\xd8\xeb\xdd\
+\x12A\x12\xa3\x18\xeb\xf4>\xa4C\x83\xfb\xe6E\xd5\x8c\
+Z\xd3\xcb\xa7pHs[<;5\x89'\xb3]3\
+gR\xc6\xed\x97\xba2\xac\xce&\xa6\xa1\xd4\xd1\x05\x1d\
+\x8d\xef\x90\x99{d\xfa\x11\x04\xfe\xaf;\xd3\xf6s\xfb\
+\x056\xab\xa7\xc7\xbf\xc3\x1a`\x81\
+\x00\x00\x03\xff\
+\x00\
+\x00\x0b\x1ax\x9c\xcdV[o\xdcD\x14\x9e\xbd\xa4K\
+\x9c\x96\x86\x96$\xa5\xe52M@r\xca\xca\x98U\x8a\
+\x10\x9b\x8d\x84\x12@\x95*\xa5\xedF-\xd2je\x19\
+\xefdc\xc9k\xaf\xec\xf1\x92R\xe5/\xf0\xc8\x0b\x8f\
+\xfc\x0c~\x03\xff\x87\x17\x04\xe7\xcc\x1c\xaf'\xdeM\x95\
+GF\x9a\xf5\x9co\xce\xe5;\x17;a\x8c\xad2\xc6\
+\x9a\xb0k\xb0\xdfa3\xe6\xb1\x1c~\x19\xab\xc3f\xff\
+\xd2bK\x16\x1a\xdca\xa7,e>\x1b\xb3C\x96\xb0\
+\x08vJ\xee\xdejZus\x83I&\xd89\x9c\xec\
+\xeb\x98\x5cw\xdd\xa0\xe7\xa8\x84\x1a\xedF}\xa7\x85Q\
+-\xc8\xf63B\xdf\x83l\x91\xc7\x1a\x98\xe0\xf3\x87\xa7\
+\xfd\xa7N&G\xce\xdec\x17\xef\xdfe\x8d9\xd7\xdb\
+\xac\xa5\x12\xc4=\xf1\xc3X\xdb3\xb6\x01{\x1d\xf4\x10\
+o\xa1\x0f8\xdd\x82\xe76\xc5(\xe4\x87\x86\x8cv\x1f\
+\x1b\xf2\x86!\xdf\x05Nu\xa5\xdfP\xd1\xf1\xbc\x09'\
+L\x8a\xc3\xde\x02\xfd\x16%\xd9TX\x132\xd2\xb1q\
+\x7f\x00\x9d\xb5\xe8\xbeV)L!?\x00\x7fk\xf0\xb4\
+\xc8\xfe&\xe1\x88uI\xbeE\x18\xc6\xbbM\xfe\xea\xa4\
+\xbf>\xaf\x89\xd6_\xa7Z\xd4\xe8\xfe}\xac8\xf1\xe9\
+\x92\xbcA\x18\xfa\xdb$\x7f\x0d\x857\x81\xb3\xce\x0d\xd7\
+\xe7$\xdf\xa7{\xf4\xf7\x80|\xa1\xcdWlE\xf1h\
+\x16\x9d\x85\xfd7 +\x14\x0bk\xb1J\xfa=\x90\xd7\
+T\x1fu>=\xca\xe5\x0e\xf1}\x05V-Us\xad\
+\x83\xf8\x01x\x5c%\xacG\xb5\xde\x22\x9f\xc7\xe0\x1d\xb9\
+\xdf#l\xcb\xa8+r\xfa\x16\xfc!\xd7\x0fI\xff>\
+\xf9@\xde\x1f\x11\xfe+\xe8lR\xbf\xef\x11^\xd8}\
+\xb2\xc4\x8e\x13\xfe\x1ctP~\xc8\xcaY)\xb0m\xc2\
+j\x06\xb6C\x18\xf2z\x06Y`\x1e\x9f\x92\xfd6\xdd\
+s\xcaw\x83\xee\xfe\x01\x0f_\xeb)i\xd2\x8c\xa30\
+b\xe5\xe8\xfc\xb53\x13i\x16&1\xff\xd2u\xadi\
+*\x82PIg\xe1\xf8l\xcaO\xa3\xc4\x97\xdd\x058\
+\x8c\x01\xb4\xf28<M\xd2\x09a\x99?\x99F\x22\xed\
+\x1cq)\xce\xe1v\xe6\xa7\xaf\xc3x\xccg\x22\xe8\xf0\
+\x99\x97\xcf\x10K\xc2\x11G\x22\xf6\xae\xf5\xc6\xe2\xb0\xe0\
+v\x8f\x07\xbc\x87F2OE\xe7\xc8\x86S[\x19\xec\
+v\x95\xca8\xf2\xbeO\xfd\xf1\x91/\xfd\x81;\x04U\
+\xb4\xb1\x03\xe7\xfc\xf5/\xfc\x11\x0f\x9c\x9f\xdb\xf8\x03\xca\
+\x17\x96UI\xf4\x9c\x95\xeb\xf72\xd1\x8e[\x92\xff?\
+\xd2\xfe\xcd\xa0\xfdGI\xfb\xf1[h\x87\xb1\xc98\xc9\
+\xa5\xa6x\x0a\x0c\x0e\x93(I\xaf\x95\xc5B\x0es\xf3\
+k\xd3\xc7\xe9\xec\x94\xec\xeb\xfb'E\x81\xf6\xd5,\xed\
+\x1d`0\xfe\x0dO\xc58\xcc\xa4Hm\xe9\x82\x93\xbe\
+N\xa7/})\xb8\x07\x1a\x1e%hjf\xa8ie\
+\xa0\x13\x06z2\x8b|M\xecr\xd2\x99L\xf3@\xf2\
+\xfe\xb3'/^z\x87i\x92e\xde\x93x\x9aK\xaa\
+\x80\xe1\x05\x22\x9d|\xf7\xe3\xe1\xf1\xf1\x8b#\x17\xb2Z\
+n{\x9c\xcb\x8a\xb1\x11\x0e<\xf4_z'~:\x16\
+\x92\x5c\xa8\x9a\xa3\x82w\xa9\xf0dI\xa5wt\xf6\xb6\
+\x99\xf7\x95m\xd0\xa6W4b\x91\xaan\xf8B\xfa\x1c\
+*6\x16^\x88\xe7\xf94`\x11z\xe6\x8d\xa3\xab[\
+P\xa0\x1c4\xb0$\x94\xb6L\x94\xa0\x95L\xc4\xb9\x94\
+E\xd9\x22\xd4K\x05\xccH\x5cqpa\xce\x15\xfeu\
+\xb8Y\xceU\xed\xcf\x9d0\x0e\xa2|$\xf8\xfeDH\
+?\xf2\xe0\xaf|\x14\xfet`\x95x\x16NF_\xe0\
+\x8fsv\x00/N\x86ou\xecOD6\xf5\x03\xc1\
+\x95U\xd9d\x0c\xe3b\xe8\xabz;\x18\x04\xf8\xb4\xdd\
+\xdd\xe1\xf0\xd2xh\xcb0^2Q\x83A\x9e\xc1\xdc\
+FI\x10\x97f\xe8r\x22b#\xa4>\xd9\x85#\xf8\
+\xba\x82e\xd1\x86\xe1\xb0=\xff\xc8\x8c\xf4;\xa4_\xa1\
+\xc1\xa0xk\xd1w\xbb\xf8\x22\xe0]\x1fN\xc8\x98 \
+\xa5Pt\xb9\x8c\x8a\xbb\xc7\xdf\x5ct\x97\x8d\xa46\xb5\
+\x0bgm \xe5\x18\x13\x99T\xfby\xe5T\x1a\xedM\
+tW\xb1\xad+\x8a\x06}/*\xdf\x8c\x85\xffr*\
+\xbd_\xb8/\xb0\xaa\x9eZ\xff\x018\x196d\
+\x00\x00\x04k\
+\x00\
+\x00\x0d\xafx\x9c\xe5Wmo\x1bE\x10^\xfb\x9c\x94\
+\x5c\xc9K\x936i\xa1-\x9bZB6T\xc6\x09\x0e\
+B5\x89\x82ZD+UJ\xd5\xa0\x0a\xc9\x8aN\xe7\
+\xf39\x1c\xf8\xee\xac\xbb=\x93\xa8\xb2\xc4_\xe0\x0b?\
+\x8c\xdf\xc0\x8f\xe0\x0b\x82\x99\xddY\xdf\xde\xd9)\xaaT\
+\xf1\x85\x95\xd6\xdey\xd9y\x9e\x99\x9d\xdd8\x8c\xb1\x15\
+\xa6F\x15\xa6\xcd<\x16\xb3\x11\xcc\x04$\x0bf\xe5o\
+\x1al\xc1\xd8`cpMY\xc0\x04\xcc\x98E\xa0\xab\
+\xa1\xe1M\x9b*0\xd7\xd8\x849sX\xff\xbam\x99\
+\xf5Y\xc6\x86r\xe5\xb0}v\x00\xab'\x86OUZ\
+B\x08>\x86\xd5u\xd2\x1e\x17\x18\xd3X\x03\xdc1s\
+\x81\x03\x92\xbf$\x80c\x9d\xc0\xbb\x1a\x15\xfa\xd6A\x97\
+\xe9{\x90\xbbX\xbfX\xd5\xfa5t\xb5\xd9{\xacN\
+\xda\x1b\x90LE&\xb1,\xbf\xbf}~\xfa\xbc\x95\x8a\
+A\xabs\xd0V\xfc\xad\x19\xc0:\x9d!\x82\x84n\x80\
+\xa7 5X\x80-\x98\xf7q?XWh\xcdH\xbe\
+N2\xc6x\xca\x96\x00S\x0d]8\xad\xab\x90\xce\xf4\
+\xab\x92\xce\x92\xb1\xac\x99\xee)\xc4\xdd\xa1\xfdK\xe4\xaf\
+\xe5\xba\x11W\xeb qy(ZW!\xbfc\x8a\xbb\
+Cq\x91\xef\x1d\xf8~`\xf0Gy\xd7\x90\xef\x1b\xf9\
+m\xc1\xae\xaa\xb4[\x92#\xae\xb7a\x85\x07\xc0a\xee\
+\x80\xff5:\x10K\xeajP}\xb5F}\x97\xe4\x15\
+\xc3n\x13?m\xb7\x8d\xba`\xbcU\x8a\x87\xe7p\x0b\
+>\xd7\x08\x0b\xc7\xa7$\xaf\x93\xff]\x907\xc8\x7f]\
+\xf2Vu\xd516\x08s\x93\xf0o\x10\xe6&\x9d\xa9\
+E\x187\x09\xa3B\x187\xa5^\x8d\xdb oS\xcc\
+\x9a\xc4Pg\xb3M\x18\x18\xff6\xd5f\x87\xe2\xa3|\
+\x87th\xff`V;%\xdf#\xacU\xf2\xbf\xc7\xf2\
+\x1eB\xfb.qC\xfb\x17\x90S\x95\xe5\xcd\x8f\xfa?\
+A\x83}qH\xf5\x7f\x9fjx\x04\xd6\x15\x92\xbf\x06\
+\x0f\xc4\xfd\x90\xb8\xdc\x22\xffmY7\xa5?\xa4z\x7f\
+D\xf8\xbf\xc2\x9eU\xaa\xc5]\xd2c\x9c]\xea\x99-\
+\x8a\x838\x0f\xc8\xef/`\xfd\xa5\xba\xa25\xba7(\
+\x0cX~o\xff\xa8O\xfc$\x0d\xe2\x88\xef\xb5\xdb\xb6\
+\x9d\x8a$\xf3\x04\xefgC\xfb\xb5\xcda\x84\xae\xe8\xf0\
+p2\xeeJi8\x8a]\xc1\xe3\xb1\xeb\x05\xe2\xb2k\
+O\xbb\xb6\x9dE\xc10NB\xdc\xc2\x9d\xfd\x03\xd0L\
+\xdc\xe42\x88\xce\xf9\xc4\xf7>\xe7\x13\xc7\x8bGq\xd2\
+\xb5]!\x92\xa0\x9f\x09_\xe9\x17i;|\x1c\xa7\x81\
+\x002\x18%\x0e\x06\x1cI7\x9aD\x85B\xf1C\xbd\
+\x19\x95\xe7#\xe7\x05m\x02\x03\x10h\x01Y\xfe\x89\x11\
+ij\xdb\xa5\xfc/X>\x8c\xfc\xf7\xff/\xf9\xfff\
+\xe4\xff{\x9e\xff\xc1;\xca?\xceD)\xf7 *$\
+\xad\xc4\xff\x22[\xbc\x9c\xfby\xb2\xd6\xa6\x074\x87~\
+\x22\xd9>\xe2\x89\x7f\x1e\xa4\xc2O\x1a\xfd\xb6\x86M\xe2\
+\x9f\x9d\xd0\xfd\x11\x80e\xae\x9d\x8b\x0e\xc28\x08\xf3\x88\
+C\xde?\xc5\xc3a\xea\x8b\x86\xd7n\x9a%A\x1f*\
+K\xc9\xaf\xd3Tu\x82\xd2\xba\x22\xf0(\xac\x99I\xb7\
+`2\xcaVT/P\x16JHGw\xfa\xe2\xd9\xcb\
+W\xce\xe3$NS\xe7Y4\xce\x04%V\xda\x00,\
+\xbf\xfb\xe6\xfb\xc7''/\x9f\xb4\x8dD\x08\xc6\xb0\xee\
+)\xfa\x0b\xa2\x9fd\xa2\x14~\xc6\xfd\x8a\xe8\x85\xb4\xc1\
+\xe7\xf4\x95Q\x84\xa9n\x03hH\xe1\xbcm/\x84\xd9\
+\xa8\xa1s{\xa8\x8f\xac)\xfba\x9e\xb3\xea\xb4\xb9J\
+q\xa8\xed\xb9\xef\x04\xb8\xd6\xd0\x1a\xd80\xb5\x0c\x12\xe3\
+\x9c\x81\xe9\x91\x1f\x8b\xa4\x9f'\xa4\x14\x0b\x18\xa9\xdd\xb1\
+\x14\x94\x93\xa9i\x15\x93-4\xcf\x9co^\xadY'\
+\xc9\xce\xf6E\x96D%\xa0\xa9y[j\xf4\xe7\x89F\
+u\xa9\x1eD\xde(\x1b\xf8\xfc\xab\xd0\x17\xee\xc8\x81\x9f\
+g\xa3\xa0\x7fd\xe7\xfa4\x08\x07\x9f\xe1G\xeb\x87#\
+x\x0bR|\xf7\x227\xf4S\xb8\x02>\x97\xbb\xba\x0b\
+^\x95\xd9\xddz\xd3\xcbB\xbb\x90\x5c\x1b\x09/\xee\xb4\
+^/K\xe1\x06\x8fb/j7\xcf\xce\xae\xec\xb6^\
+O\x1f\x0a:\xcd\xc5\x0f\xa2+\xeeI\xaf7{\xa3\x1b\
+%\x00}YL\x97\xbd\xa6\x0e\x8f\xa7\xee_\xe4\xf4\xd5\
+\xaa\xa1\xe1x\x80\xb1u\xd3\x9c\x9d=\x84`\x11\x88\x91\
+\xac\xd3\xc7\xd8\xc2`W\xcf\x95\x04n\xce^d\x1d\x10\
+\xe7!\x7f=U\x94\xe2\xc2\xd1\x07\x91\xd9\xa6\xf1\x5c\x0b\
+\xe5o'x\x16\xdb\x95\x1a%V\xfd\x81\x0d\xb2$1\
+\xe9=-\xbd\xa9\xb3_\x12\x8c\xfe\xb1)u\xd1\x9c]\
+\xeb\xca~r\xfc\x03\x0d.\xdb\xc1\
+"
+
+qt_resource_name = b"\
+\x00\x0d\
+\x0d\xf9\xb2\xf2\
+\x00q\
+\x00u\x00a\x00d\x00.\x00v\x00e\x00r\x00t\x00.\x00q\x00s\x00b\
+\x00\x0e\
+\x04\x16\xeb\xb2\
+\x00c\
+\x00o\x00l\x00o\x00r\x00.\x00f\x00r\x00a\x00g\x00.\x00q\x00s\x00b\
+\x00\x0d\
+\x09\x18\xb0\xd2\
+\x00q\
+\x00u\x00a\x00d\x00.\x00f\x00r\x00a\x00g\x00.\x00q\x00s\x00b\
+\x00\x0e\
+\x00\xfb\xe9\x92\
+\x00c\
+\x00o\x00l\x00o\x00r\x00.\x00v\x00e\x00r\x00t\x00.\x00q\x00s\x00b\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00b\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xec\
+\x00\x00\x01\x8b8N2\x22\
+\x00\x00\x00 \x00\x00\x00\x00\x00\x01\x00\x00\x03\xda\
+\x00\x00\x01\x8b8N2\x22\
+\x00\x00\x00B\x00\x00\x00\x00\x00\x01\x00\x00\x07\xe9\
+\x00\x00\x01\x8b8N2\x22\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x8b8N2\x22\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/gui/rhiwindow/rhiwindow.py b/examples/gui/rhiwindow/rhiwindow.py
new file mode 100644
index 000000000..fe054af48
--- /dev/null
+++ b/examples/gui/rhiwindow/rhiwindow.py
@@ -0,0 +1,420 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import numpy
+import sys
+
+from PySide6.QtCore import (QEvent, QFile, QIODevice, QPointF, QRectF, QSize,
+ qFatal, qWarning, Qt)
+from PySide6.QtGui import (QColor, QFont, QGradient, QImage, QMatrix4x4,
+ QPainter, QPlatformSurfaceEvent, QSurface, QWindow)
+from PySide6.QtGui import (QRhi, QRhiBuffer,
+ QRhiDepthStencilClearValue,
+ QRhiGraphicsPipeline, QRhiNullInitParams,
+ QRhiGles2InitParams, QRhiRenderBuffer,
+ QRhiSampler, QRhiShaderResourceBinding,
+ QRhiShaderStage, QRhiTexture,
+ QRhiVertexInputAttribute, QRhiVertexInputBinding,
+ QRhiVertexInputLayout, QRhiViewport,
+ QShader)
+from PySide6.support import VoidPtr
+
+if sys.platform == "win32":
+ from PySide6.QtGui import QRhiD3D11InitParams, QRhiD3D12InitParams
+elif sys.platform == "darwin":
+ from PySide6.QtGui import QRhiMetalInitParams
+
+
+# Y up (note clipSpaceCorrMatrix in m_viewProjection), CCW
+VERTEX_DATA = numpy.array([
+ 0.0, 0.5, 1.0, 0.0, 0.0,
+ -0.5, -0.5, 0.0, 1.0, 0.0,
+ 0.5, -0.5, 0.0, 0.0, 1.0], dtype=numpy.float32)
+
+
+UBUF_SIZE = 68
+
+
+def getShader(name):
+ f = QFile(name)
+ if f.open(QIODevice.ReadOnly):
+ result = QShader.fromSerialized(f.readAll())
+ f.close()
+ return result
+ return QShader()
+
+
+class RhiWindow(QWindow):
+
+ def __init__(self, graphicsApi):
+ super().__init__()
+ self.m_graphicsApi = QRhi.Null
+ self.m_initialized = False
+ self.m_notExposed = False
+ self.m_newlyExposed = False
+
+ self.m_fallbackSurface = None
+ self.m_rhi = None
+ self.m_sc = None
+ self.m_ds = None
+ self.m_rp = None
+ self.m_hasSwapChain = False
+ self.m_viewProjection = QMatrix4x4()
+
+ self.m_graphicsApi = graphicsApi
+
+ if graphicsApi == QRhi.OpenGLES2:
+ self.setSurfaceType(QSurface.SurfaceType.OpenGLSurface)
+ elif graphicsApi == QRhi.Vulkan:
+ self.setSurfaceType(QSurface.SurfaceType.VulkanSurface)
+ elif graphicsApi == QRhi.D3D11 or graphicsApi == QRhi.D3D12:
+ self.setSurfaceType(QSurface.SurfaceType.Direct3DSurface)
+ elif graphicsApi == QRhi.Metal:
+ self.setSurfaceType(QSurface.SurfaceType.MetalSurface)
+ elif graphicsApi == QRhi.Null:
+ pass # RasterSurface
+
+ def __del__(self):
+ # destruction order matters to a certain degree: the fallbackSurface
+ # must outlive the rhi, the rhi must outlive all other resources.
+ # The resources need no special order when destroying.
+ del self.m_rp
+ self.m_rp = None
+ del self.m_ds
+ self.m_ds = None
+ del self.m_sc
+ self.m_sc = None
+ del self.m_rhi
+ self.m_rhi = None
+ if self.m_fallbackSurface:
+ del self.m_fallbackSurface
+ self.m_fallbackSurface = None
+
+ def graphicsApiName(self):
+ if self.m_graphicsApi == QRhi.Null:
+ return "Null (no output)"
+ if self.m_graphicsApi == QRhi.OpenGLES2:
+ return "OpenGL"
+ if self.m_graphicsApi == QRhi.Vulkan:
+ return "Vulkan"
+ if self.m_graphicsApi == QRhi.D3D11:
+ return "Direct3D 11"
+ if self.m_graphicsApi == QRhi.D3D12:
+ return "Direct3D 12"
+ if self.m_graphicsApi == QRhi.Metal:
+ return "Metal"
+ return ""
+
+ def customInit(self):
+ pass
+
+ def customRender(self):
+ pass
+
+ def exposeEvent(self, e):
+ # initialize and start rendering when the window becomes usable
+ # for graphics purposes
+ is_exposed = self.isExposed()
+ if is_exposed and not self.m_initialized:
+ self.init()
+ self.resizeSwapChain()
+ self.m_initialized = True
+
+ surfaceSize = self.m_sc.surfacePixelSize() if self.m_hasSwapChain else QSize()
+
+ # stop pushing frames when not exposed (or size is 0)
+ if ((not is_exposed or (self.m_hasSwapChain and surfaceSize.isEmpty()))
+ and self.m_initialized and not self.m_notExposed):
+ self.m_notExposed = True
+
+ # Continue when exposed again and the surface has a valid size. Note
+ # that surfaceSize can be (0, 0) even though size() reports a valid
+ # one, hence trusting surfacePixelSize() and not QWindow.
+ if is_exposed and self.m_initialized and self.m_notExposed and not surfaceSize.isEmpty():
+ self.m_notExposed = False
+ self.m_newlyExposed = True
+
+ # always render a frame on exposeEvent() (when exposed) in order to
+ # update immediately on window resize.
+ if is_exposed and not surfaceSize.isEmpty():
+ self.render()
+
+ def event(self, e):
+ if e.type() == QEvent.UpdateRequest:
+ self.render()
+ elif e.type() == QEvent.PlatformSurface:
+ # this is the proper time to tear down the swapchain (while
+ # the native window and surface are still around)
+ if e.surfaceEventType() == QPlatformSurfaceEvent.SurfaceAboutToBeDestroyed:
+ self.releaseSwapChain()
+
+ return super().event(e)
+
+ def init(self):
+ if self.m_graphicsApi == QRhi.Null:
+ params = QRhiNullInitParams()
+ self.m_rhi = QRhi.create(QRhi.Null, params)
+
+ if self.m_graphicsApi == QRhi.OpenGLES2:
+ self.m_fallbackSurface = QRhiGles2InitParams.newFallbackSurface()
+ params = QRhiGles2InitParams()
+ params.fallbackSurface = self.m_fallbackSurface
+ params.window = self
+ self.m_rhi = QRhi.create(QRhi.OpenGLES2, params)
+ elif self.m_graphicsApi == QRhi.D3D11:
+ params = QRhiD3D11InitParams()
+ # Enable the debug layer, if available. This is optional
+ # and should be avoided in production builds.
+ params.enableDebugLayer = True
+ self.m_rhi = QRhi.create(QRhi.D3D11, params)
+ elif self.m_graphicsApi == QRhi.D3D12:
+ params = QRhiD3D12InitParams()
+ # Enable the debug layer, if available. This is optional
+ # and should be avoided in production builds.
+ params.enableDebugLayer = True
+ self.m_rhi = QRhi.create(QRhi.D3D12, params)
+ elif self.m_graphicsApi == QRhi.Metal:
+ params = QRhiMetalInitParams()
+ self.m_rhi.reset(QRhi.create(QRhi.Metal, params))
+
+ if not self.m_rhi:
+ qFatal("Failed to create RHI backend")
+
+ self.m_sc = self.m_rhi.newSwapChain()
+ # no need to set the size here, due to UsedWithSwapChainOnly
+ self.m_ds = self.m_rhi.newRenderBuffer(QRhiRenderBuffer.DepthStencil,
+ QSize(), 1,
+ QRhiRenderBuffer.UsedWithSwapChainOnly)
+ self.m_sc.setWindow(self)
+ self.m_sc.setDepthStencil(self.m_ds)
+ self.m_rp = self.m_sc.newCompatibleRenderPassDescriptor()
+ self.m_sc.setRenderPassDescriptor(self.m_rp)
+ self.customInit()
+
+ def resizeSwapChain(self):
+ self.m_hasSwapChain = self.m_sc.createOrResize() # also handles self.m_ds
+ outputSize = self.m_sc.currentPixelSize()
+ self.m_viewProjection = self.m_rhi.clipSpaceCorrMatrix()
+ r = float(outputSize.width()) / float(outputSize.height())
+ self.m_viewProjection.perspective(45.0, r, 0.01, 1000.0)
+ self.m_viewProjection.translate(0, 0, -4)
+
+ def releaseSwapChain(self):
+ if self.m_hasSwapChain:
+ self.m_hasSwapChain = False
+ self.m_sc.destroy()
+
+ def render(self):
+ if not self.m_hasSwapChain or self.m_notExposed:
+ return
+
+ # If the window got resized or newly exposed, resize the swapchain.
+ # (the newly-exposed case is not actually required by some platforms,
+ # but is here for robustness and portability)
+ #
+ # This (exposeEvent + the logic here) is the only safe way to perform
+ # resize handling. Note the usage of the RHI's surfacePixelSize(), and
+ # never QWindow::size(). (the two may or may not be the same under the
+ # hood, # depending on the backend and platform)
+ if self.m_sc.currentPixelSize() != self.m_sc.surfacePixelSize() or self.m_newlyExposed:
+ self.resizeSwapChain()
+ if not self.m_hasSwapChain:
+ return
+ self.m_newlyExposed = False
+
+ result = self.m_rhi.beginFrame(self.m_sc)
+ if result == QRhi.FrameOpSwapChainOutOfDate:
+ self.resizeSwapChain()
+ if not self.m_hasSwapChain:
+ return
+ result = self.m_rhi.beginFrame(self.m_sc)
+
+ if result != QRhi.FrameOpSuccess:
+ qWarning(f"beginFrame failed with {result}, will retry")
+ self.requestUpdate()
+ return
+
+ self.customRender()
+
+ self.m_rhi.endFrame(self.m_sc)
+
+ # Always request the next frame via requestUpdate(). On some platforms
+ # this is backed by a platform-specific solution, e.g. CVDisplayLink
+ # on macOS, which is potentially more efficient than a timer,
+ # queued metacalls, etc.
+ self.requestUpdate()
+
+
+class HelloWindow(RhiWindow):
+
+ def __init__(self, graphicsApi):
+ super().__init__(graphicsApi)
+ self.m_vbuf = None
+ self.m_ubuf = None
+ self.m_texture = None
+ self.m_sampler = None
+ self.m_colorTriSrb = None
+ self.m_colorPipeline = None
+ self.m_fullscreenQuadSrb = None
+ self.m_fullscreenQuadPipeline = None
+ self.m_initialUpdates = None
+
+ self.m_rotation = 0
+ self.m_opacity = 1
+ self.m_opacityDir = -1
+
+ def ensureFullscreenTexture(self, pixelSize, u):
+ if self.m_texture and self.m_texture.pixelSize() == pixelSize:
+ return
+
+ if not self.m_texture:
+ self.m_texture = self.m_rhi.newTexture(QRhiTexture.RGBA8, pixelSize)
+ else:
+ self.m_texture.setPixelSize(pixelSize)
+ self.m_texture.create()
+ image = QImage(pixelSize, QImage.Format_RGBA8888_Premultiplied)
+ with QPainter(image) as painter:
+ painter.fillRect(QRectF(QPointF(0, 0), pixelSize),
+ QColor.fromRgbF(0.4, 0.7, 0.0, 1.0))
+ painter.setPen(Qt.transparent)
+ painter.setBrush(QGradient(QGradient.DeepBlue))
+ painter.drawRoundedRect(QRectF(QPointF(20, 20), pixelSize - QSize(40, 40)),
+ 16, 16)
+ painter.setPen(Qt.black)
+ font = QFont()
+ font.setPixelSize(0.05 * min(pixelSize.width(), pixelSize.height()))
+ painter.setFont(font)
+ name = self.graphicsApiName()
+ t = (f"Rendering with QRhi to a resizable QWindow.\nThe 3D API is {name}."
+ "\nUse the command-line options to choose a different API.")
+ painter.drawText(QRectF(QPointF(60, 60), pixelSize - QSize(120, 120)), 0, t)
+
+ if self.m_rhi.isYUpInNDC():
+ image = image.mirrored()
+
+ u.uploadTexture(self.m_texture, image)
+
+ def customInit(self):
+ self.m_initialUpdates = self.m_rhi.nextResourceUpdateBatch()
+
+ vertex_size = 4 * VERTEX_DATA.size
+ self.m_vbuf = self.m_rhi.newBuffer(QRhiBuffer.Immutable, QRhiBuffer.VertexBuffer,
+ vertex_size)
+ self.m_vbuf.create()
+ self.m_initialUpdates.uploadStaticBuffer(self.m_vbuf,
+ VoidPtr(VERTEX_DATA.tobytes(), vertex_size))
+
+ self.m_ubuf = self.m_rhi.newBuffer(QRhiBuffer.Dynamic,
+ QRhiBuffer.UniformBuffer, UBUF_SIZE)
+ self.m_ubuf.create()
+
+ self.ensureFullscreenTexture(self.m_sc.surfacePixelSize(), self.m_initialUpdates)
+
+ self.m_sampler = self.m_rhi.newSampler(QRhiSampler.Linear, QRhiSampler.Linear,
+ QRhiSampler.None_,
+ QRhiSampler.ClampToEdge, QRhiSampler.ClampToEdge)
+ self.m_sampler.create()
+
+ self.m_colorTriSrb = self.m_rhi.newShaderResourceBindings()
+ visibility = (QRhiShaderResourceBinding.VertexStage
+ | QRhiShaderResourceBinding.FragmentStage)
+ bindings = [
+ QRhiShaderResourceBinding.uniformBuffer(0, visibility, self.m_ubuf)
+ ]
+ self.m_colorTriSrb.setBindings(bindings)
+ self.m_colorTriSrb.create()
+
+ self.m_colorPipeline = self.m_rhi.newGraphicsPipeline()
+ # Enable depth testing; not quite needed for a simple triangle, but we
+ # have a depth-stencil buffer so why not.
+ self.m_colorPipeline.setDepthTest(True)
+ self.m_colorPipeline.setDepthWrite(True)
+ # Blend factors default to One, OneOneMinusSrcAlpha, which is convenient.
+ premulAlphaBlend = QRhiGraphicsPipeline.TargetBlend()
+ premulAlphaBlend.enable = True
+ self.m_colorPipeline.setTargetBlends([premulAlphaBlend])
+ stages = [
+ QRhiShaderStage(QRhiShaderStage.Vertex, getShader(":/color.vert.qsb")),
+ QRhiShaderStage(QRhiShaderStage.Fragment, getShader(":/color.frag.qsb"))
+ ]
+ self.m_colorPipeline.setShaderStages(stages)
+ inputLayout = QRhiVertexInputLayout()
+ input_bindings = [QRhiVertexInputBinding(5 * 4)] # sizeof(float)
+ inputLayout.setBindings(input_bindings)
+ attributes = [
+ QRhiVertexInputAttribute(0, 0, QRhiVertexInputAttribute.Float2, 0),
+ QRhiVertexInputAttribute(0, 1, QRhiVertexInputAttribute.Float3, 2 * 4)] # sizeof(float)
+ inputLayout.setAttributes(attributes)
+ self.m_colorPipeline.setVertexInputLayout(inputLayout)
+ self.m_colorPipeline.setShaderResourceBindings(self.m_colorTriSrb)
+ self.m_colorPipeline.setRenderPassDescriptor(self.m_rp)
+ self.m_colorPipeline.create()
+
+ self.m_fullscreenQuadSrb = self.m_rhi.newShaderResourceBindings()
+ bindings = [
+ QRhiShaderResourceBinding.sampledTexture(0, QRhiShaderResourceBinding.FragmentStage,
+ self.m_texture, self.m_sampler)
+ ]
+ self.m_fullscreenQuadSrb.setBindings(bindings)
+ self.m_fullscreenQuadSrb.create()
+
+ self.m_fullscreenQuadPipeline = self.m_rhi.newGraphicsPipeline()
+ stages = [
+ QRhiShaderStage(QRhiShaderStage.Vertex, getShader(":/quad.vert.qsb")),
+ QRhiShaderStage(QRhiShaderStage.Fragment, getShader(":/quad.frag.qsb"))
+ ]
+ self.m_fullscreenQuadPipeline.setShaderStages(stages)
+ layout = QRhiVertexInputLayout()
+ self.m_fullscreenQuadPipeline.setVertexInputLayout(layout)
+ self.m_fullscreenQuadPipeline.setShaderResourceBindings(self.m_fullscreenQuadSrb)
+ self.m_fullscreenQuadPipeline.setRenderPassDescriptor(self.m_rp)
+ self.m_fullscreenQuadPipeline.create()
+
+ def customRender(self):
+ resourceUpdates = self.m_rhi.nextResourceUpdateBatch()
+
+ if self.m_initialUpdates:
+ resourceUpdates.merge(self.m_initialUpdates)
+ self.m_initialUpdates = None
+
+ self.m_rotation += 1.0
+ modelViewProjection = self.m_viewProjection
+ modelViewProjection.rotate(self.m_rotation, 0, 1, 0)
+ projection = numpy.array(modelViewProjection.data(),
+ dtype=numpy.float32)
+ resourceUpdates.updateDynamicBuffer(self.m_ubuf, 0, 64,
+ projection.tobytes())
+
+ self.m_opacity += self.m_opacityDir * 0.005
+ if self.m_opacity < 0.0 or self.m_opacity > 1.0:
+ self.m_opacityDir *= -1
+ self.m_opacity = max(0.0, min(1.0, self.m_opacity))
+
+ opacity = numpy.array([self.m_opacity], dtype=numpy.float32)
+ resourceUpdates.updateDynamicBuffer(self.m_ubuf, 64, 4,
+ opacity.tobytes())
+
+ cb = self.m_sc.currentFrameCommandBuffer()
+ outputSizeInPixels = self.m_sc.currentPixelSize()
+
+ # (re)create the texture with a size matching the output surface size,
+ # when necessary.
+ self.ensureFullscreenTexture(outputSizeInPixels, resourceUpdates)
+
+ cv = QRhiDepthStencilClearValue(1.0, 0)
+ cb.beginPass(self.m_sc.currentFrameRenderTarget(), Qt.black,
+ cv, resourceUpdates)
+
+ cb.setGraphicsPipeline(self.m_fullscreenQuadPipeline)
+ viewport = QRhiViewport(0, 0, outputSizeInPixels.width(),
+ outputSizeInPixels.height())
+ cb.setViewport(viewport)
+ cb.setShaderResources()
+ cb.draw(3)
+
+ cb.setGraphicsPipeline(self.m_colorPipeline)
+ cb.setShaderResources()
+ vbufBinding = (self.m_vbuf, 0)
+ cb.setVertexInput(0, [vbufBinding])
+ cb.draw(3)
+ cb.endPass()
diff --git a/examples/gui/rhiwindow/rhiwindow.pyproject b/examples/gui/rhiwindow/rhiwindow.pyproject
new file mode 100644
index 000000000..a807b49bf
--- /dev/null
+++ b/examples/gui/rhiwindow/rhiwindow.pyproject
@@ -0,0 +1,5 @@
+{
+ "files": ["main.py", "rhiwindow.py", "rhiwindow.qrc",
+ "shaders/color.frag", "shaders/color.vert",
+ "shaders/quad.frag", "shaders/quad.vert"]
+}
diff --git a/examples/gui/rhiwindow/rhiwindow.qrc b/examples/gui/rhiwindow/rhiwindow.qrc
new file mode 100644
index 000000000..1009ec5dd
--- /dev/null
+++ b/examples/gui/rhiwindow/rhiwindow.qrc
@@ -0,0 +1,8 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file alias="color.vert.qsb">shaders/prebuilt/color.vert.qsb</file>
+ <file alias="color.frag.qsb">shaders/prebuilt/color.frag.qsb</file>
+ <file alias="quad.vert.qsb">shaders/prebuilt/quad.vert.qsb</file>
+ <file alias="quad.frag.qsb">shaders/prebuilt/quad.frag.qsb</file>
+</qresource>
+</RCC>
diff --git a/examples/gui/rhiwindow/shaders/color.frag b/examples/gui/rhiwindow/shaders/color.frag
new file mode 100644
index 000000000..6e0a3bc91
--- /dev/null
+++ b/examples/gui/rhiwindow/shaders/color.frag
@@ -0,0 +1,15 @@
+#version 440
+
+layout(location = 0) in vec3 v_color;
+
+layout(location = 0) out vec4 fragColor;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 mvp;
+ float opacity;
+};
+
+void main()
+{
+ fragColor = vec4(v_color * opacity, opacity);
+}
diff --git a/examples/gui/rhiwindow/shaders/color.vert b/examples/gui/rhiwindow/shaders/color.vert
new file mode 100644
index 000000000..70852ab86
--- /dev/null
+++ b/examples/gui/rhiwindow/shaders/color.vert
@@ -0,0 +1,17 @@
+#version 440
+
+layout(location = 0) in vec4 position;
+layout(location = 1) in vec3 color;
+
+layout(location = 0) out vec3 v_color;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 mvp;
+ float opacity;
+};
+
+void main()
+{
+ v_color = color;
+ gl_Position = mvp * position;
+}
diff --git a/examples/gui/rhiwindow/shaders/prebuilt/color.frag.qsb b/examples/gui/rhiwindow/shaders/prebuilt/color.frag.qsb
new file mode 100644
index 000000000..b4db470e5
--- /dev/null
+++ b/examples/gui/rhiwindow/shaders/prebuilt/color.frag.qsb
Binary files differ
diff --git a/examples/gui/rhiwindow/shaders/prebuilt/color.vert.qsb b/examples/gui/rhiwindow/shaders/prebuilt/color.vert.qsb
new file mode 100644
index 000000000..ab046b77f
--- /dev/null
+++ b/examples/gui/rhiwindow/shaders/prebuilt/color.vert.qsb
Binary files differ
diff --git a/examples/gui/rhiwindow/shaders/prebuilt/quad.frag.qsb b/examples/gui/rhiwindow/shaders/prebuilt/quad.frag.qsb
new file mode 100644
index 000000000..c2ea3cf25
--- /dev/null
+++ b/examples/gui/rhiwindow/shaders/prebuilt/quad.frag.qsb
Binary files differ
diff --git a/examples/gui/rhiwindow/shaders/prebuilt/quad.vert.qsb b/examples/gui/rhiwindow/shaders/prebuilt/quad.vert.qsb
new file mode 100644
index 000000000..f0b64f750
--- /dev/null
+++ b/examples/gui/rhiwindow/shaders/prebuilt/quad.vert.qsb
Binary files differ
diff --git a/examples/gui/rhiwindow/shaders/quad.frag b/examples/gui/rhiwindow/shaders/quad.frag
new file mode 100644
index 000000000..65882a429
--- /dev/null
+++ b/examples/gui/rhiwindow/shaders/quad.frag
@@ -0,0 +1,11 @@
+#version 440
+
+layout(location = 0) in vec2 v_uv;
+layout(location = 0) out vec4 fragColor;
+layout(binding = 0) uniform sampler2D tex;
+
+void main()
+{
+ vec4 c = texture(tex, v_uv);
+ fragColor = vec4(c.rgb * c.a, c.a);
+}
diff --git a/examples/gui/rhiwindow/shaders/quad.vert b/examples/gui/rhiwindow/shaders/quad.vert
new file mode 100644
index 000000000..359896d08
--- /dev/null
+++ b/examples/gui/rhiwindow/shaders/quad.vert
@@ -0,0 +1,10 @@
+#version 440
+
+layout (location = 0) out vec2 v_uv;
+
+void main()
+{
+ // https://www.saschawillems.de/blog/2016/08/13/vulkan-tutorial-on-rendering-a-fullscreen-quad-without-buffers/
+ v_uv = vec2((gl_VertexIndex << 1) & 2, gl_VertexIndex & 2);
+ gl_Position = vec4(v_uv * 2.0 - 1.0, 0.0, 1.0);
+}
diff --git a/examples/httpserver/afterrequest/doc/afterrequest.rst b/examples/httpserver/afterrequest/doc/afterrequest.rst
new file mode 100644
index 000000000..0e81a6707
--- /dev/null
+++ b/examples/httpserver/afterrequest/doc/afterrequest.rst
@@ -0,0 +1,5 @@
+HTTP Server After Request Example
+=================================
+
+A Python application that demonstrates the analogous example in C++
+`AfterRequest Example <https://doc.qt.io/qt-6/qthttpserver-afterrequest-example.html>`_
diff --git a/examples/httpserver/afterrequest/main.py b/examples/httpserver/afterrequest/main.py
new file mode 100644
index 000000000..e68c992ec
--- /dev/null
+++ b/examples/httpserver/afterrequest/main.py
@@ -0,0 +1,36 @@
+# Copyright (C) 2020 Mikhail Svetkin <mikhail.svetkin@gmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the /httpserver/afterrequest from from Qt"""
+
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtNetwork import QHostAddress
+from PySide6.QtHttpServer import QHttpServer
+
+
+def route(request):
+ return "Hello world"
+
+
+def after_request(response, request):
+ response.setHeader(b"Server", b"Super server!")
+
+
+if __name__ == '__main__':
+ app = QCoreApplication(sys.argv)
+ httpServer = QHttpServer()
+ httpServer.route("/", route)
+
+ httpServer.afterRequest(after_request)
+
+ port = httpServer.listen(QHostAddress.Any)
+ if port == 0:
+ print("Server failed to listen on a port.", file=sys.stderr)
+ sys.exit(-1)
+
+ print(f"Running on http://127.0.0.1:{port}/ (Press CTRL+\\ to quit)")
+
+ sys.exit(app.exec())
diff --git a/examples/installer_test/hello.py b/examples/installer_test/hello.py
index 94d82d4ab..3921b5d51 100644
--- a/examples/installer_test/hello.py
+++ b/examples/installer_test/hello.py
@@ -1,44 +1,5 @@
-# It has been edited by fix-complaints.py .
-
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""
hello.py
@@ -62,8 +23,7 @@ from PySide6.QtWidgets import (QApplication, QLabel, QPushButton,
from PySide6.QtCore import Slot, Qt, QTimer
is_compiled = "__compiled__" in globals() # Nuitka
-uses_embedding = sys.pyside_uses_embedding # PyInstaller
-auto_quit = "Nuitka" if is_compiled else "PyInst" if uses_embedding else False
+auto_quit = "Nuitka" if is_compiled else "PyInst"
class MyWidget(QWidget):
@@ -71,7 +31,7 @@ class MyWidget(QWidget):
super().__init__()
self.hello = ["Hallo Welt", "你好,世界", "Hei maailma",
- "Hola Mundo", "Привет мир"]
+ "Hola Mundo", "Привет мир"]
self.button = QPushButton("Click me!")
self.text = QLabel(f"Hello World auto_quit={auto_quit}")
@@ -93,7 +53,10 @@ class MyWidget(QWidget):
if __name__ == "__main__":
print("Start of hello.py ", time.ctime())
print(" sys.version = ", sys.version.splitlines()[0])
- print(" platform.platform() = ", platform.platform())
+ # Nuitka and hence pyside6-deploy fails on Python versions <= 3.9
+ # when this module is used
+ if sys.version_info.minor > 9:
+ print(" platform.platform() = ", platform.platform())
app = QApplication()
diff --git a/examples/installer_test/hello_app.spec b/examples/installer_test/hello_app.spec
index 05ff1b8cb..5ae00a01f 100644
--- a/examples/installer_test/hello_app.spec
+++ b/examples/installer_test/hello_app.spec
@@ -1,45 +1,5 @@
-# This Python file uses the following encoding: utf-8
-# It has been edited by fix-complaints.py .
-
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""
hello_app.spec
diff --git a/examples/location/mapviewer/MapViewer/Main.qml b/examples/location/mapviewer/MapViewer/Main.qml
new file mode 100644
index 000000000..f4ae7ea04
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/Main.qml
@@ -0,0 +1,460 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtLocation
+import QtPositioning
+import MapViewer
+
+ApplicationWindow {
+ id: appWindow
+ property variant mapview
+ property variant minimap
+ property variant plugin
+ property variant parameters
+
+ //defaults
+ //! [routecoordinate]
+ property variant fromCoordinate: QtPositioning.coordinate(59.9483, 10.7695)
+ property variant toCoordinate: QtPositioning.coordinate(59.9645, 10.671)
+ //! [routecoordinate]
+
+ function createMap(provider)
+ {
+ if (parameters && parameters.length>0)
+ plugin = Qt.createQmlObject ('import QtLocation; Plugin{ name:"' + provider + '"; parameters: appWindow.parameters}', appWindow)
+ else
+ plugin = Qt.createQmlObject ('import QtLocation; Plugin{ name:"' + provider + '"}', appWindow)
+
+ if (minimap) {
+ minimap.destroy()
+ minimap = null
+ }
+
+ var zoomLevel = null
+ var tilt = null
+ var bearing = null
+ var fov = null
+ var center = null
+ var panelExpanded = null
+ if (mapview) {
+ zoomLevel = mapview.zoomLevel
+ tilt = mapview.tilt
+ bearing = mapview.bearing
+ fov = mapview.fieldOfView
+ center = mapview.center
+ panelExpanded = mapview.slidersExpanded
+ mapview.destroy()
+ }
+ mapview = mapComponent.createObject(page);
+ mapview.map.plugin = plugin;
+
+ if (zoomLevel != null) {
+ mapview.map.tilt = tilt
+ mapview.map.bearing = bearing
+ mapview.map.fieldOfView = fov
+ mapview.map.zoomLevel = zoomLevel
+ mapview.map.center = center
+ mapview.map.slidersExpanded = panelExpanded
+ } else {
+ // Use an integer ZL to enable nearest interpolation, if possible.
+ mapview.map.zoomLevel = Math.floor((mapview.map.maximumZoomLevel - mapview.map.minimumZoomLevel)/2)
+ // defaulting to 45 degrees, if possible.
+ mapview.map.fieldOfView = Math.min(Math.max(45.0, mapview.map.minimumFieldOfView), mapview.maximumFieldOfView)
+ }
+
+ mapview.forceActiveFocus()
+ }
+
+ function getPlugins()
+ {
+ var plugin = Qt.createQmlObject ('import QtLocation; Plugin {}', appWindow)
+ var myArray = new Array()
+ for (var i = 0; i<plugin.availableServiceProviders.length; i++) {
+ var tempPlugin = Qt.createQmlObject ('import QtLocation; Plugin {name: "' + plugin.availableServiceProviders[i]+ '"}', appWindow)
+ if (tempPlugin.supportsMapping())
+ myArray.push(tempPlugin.name)
+ }
+ myArray.sort()
+ return myArray
+ }
+
+ function initializeProviders(pluginParameters)
+ {
+ var parameters = new Array()
+ for (var prop in pluginParameters){
+ var parameter = Qt.createQmlObject('import QtLocation; PluginParameter{ name: "'+ prop + '"; value: "' + pluginParameters[prop]+'"}',appWindow)
+ parameters.push(parameter)
+ }
+ appWindow.parameters = parameters
+ var plugins = getPlugins()
+ mainMenu.providerMenu.createMenu(plugins)
+ for (var i = 0; i<plugins.length; i++) {
+ if (plugins[i] === "osm")
+ mainMenu.selectProvider(plugins[i])
+ }
+ }
+
+ title: qsTr("Mapviewer")
+ height: 640
+ width: 360
+ visible: true
+ menuBar: mainMenu
+
+ //! [geocode0]
+ Address {
+ id :fromAddress
+ street: "Sandakerveien 116"
+ city: "Oslo"
+ country: "Norway"
+ state : ""
+ postalCode: "0484"
+ }
+ //! [geocode0]
+
+ Address {
+ id: toAddress
+ street: "Holmenkollveien 140"
+ city: "Oslo"
+ country: "Norway"
+ postalCode: "0791"
+ }
+
+ MainMenu {
+ id: mainMenu
+ plugin: appWindow.plugin
+
+ function toggleMiniMapState()
+ {
+ console.log("MiniMap with " + plugin)
+ if (minimap) {
+ minimap.destroy()
+ minimap = null
+ } else {
+ minimap = Qt.createQmlObject ('import "map"; MiniMap{ z: mapview.z + 2 }', mapview)
+ }
+ }
+
+ function setLanguage(lang)
+ {
+ mapview.map.plugin.locales = lang;
+ stackView.pop(page)
+ }
+
+ onSelectProvider: (providerName) => {
+ stackView.pop()
+ for (var i = 0; i < providerMenu.count; i++) {
+ providerMenu.actionAt(i).checked = providerMenu.actionAt(i).text === providerName
+ }
+
+ createMap(providerName)
+ if (mapview.error === mapview.NoError) {
+ selectMapType(mapview.map.activeMapType)
+ } else {
+ mainMenu.clearMenu(mapTypeMenu)
+ }
+ }
+
+ onSelectMapType: (mapType) => {
+ stackView.pop(page)
+ for (var i = 0; i < mapTypeMenu.count; i++) {
+ mapTypeMenu.actionAt(i).checked = mapTypeMenu.actionAt(i).text === mapType.name
+ }
+ mapview.map.activeMapType = mapType
+ }
+
+
+ onSelectTool: (tool) => {
+ switch (tool) {
+ case "AddressRoute":
+ stackView.pop({item:page, immediate: true})
+ stackView.push("forms/RouteAddress.qml" ,
+ { "plugin": mapview.map.plugin,
+ "toAddress": toAddress,
+ "fromAddress": fromAddress})
+ stackView.currentItem.showRoute.connect(mapview.calculateCoordinateRoute)
+ stackView.currentItem.showMessage.connect(stackView.showMessage)
+ stackView.currentItem.closeForm.connect(stackView.closeForm)
+ break
+ case "CoordinateRoute":
+ stackView.pop({item:page, immediate: true})
+ stackView.push("forms/RouteCoordinate.qml" ,
+ { "toCoordinate": toCoordinate,
+ "fromCoordinate": fromCoordinate})
+ stackView.currentItem.showRoute.connect(mapview.calculateCoordinateRoute)
+ stackView.currentItem.closeForm.connect(stackView.closeForm)
+ break
+ case "Geocode":
+ stackView.pop({item:page, immediate: true})
+ stackView.push("forms/Geocode.qml",
+ { "address": fromAddress})
+ stackView.currentItem.showPlace.connect(mapview.geocode)
+ stackView.currentItem.closeForm.connect(stackView.closeForm)
+ break
+ case "RevGeocode":
+ stackView.pop({item:page, immediate: true})
+ stackView.push("forms/ReverseGeocode.qml",
+ { "coordinate": fromCoordinate })
+ stackView.currentItem.showPlace.connect(mapview.geocode)
+ stackView.currentItem.closeForm.connect(stackView.closeForm)
+ break
+ case "Language":
+ stackView.pop({item:page, immediate: true})
+ stackView.push("forms/Locale.qml",
+ { "locale": mapview.map.plugin.locales[0]})
+ stackView.currentItem.selectLanguage.connect(setLanguage)
+ stackView.currentItem.closeForm.connect(stackView.closeForm)
+ break
+ case "Clear":
+ mapview.map.clearData()
+ break
+ case "Prefetch":
+ mapview.map.prefetchData()
+ break
+ default:
+ console.log("Unsupported operation")
+ }
+ }
+
+ onToggleMapState: (state) => {
+ stackView.pop(page)
+ switch (state) {
+ case "FollowMe":
+ mapview.followme = !mapview.followme
+ break
+ case "MiniMap":
+ toggleMiniMapState()
+ isMiniMap = minimap
+ break
+ default:
+ console.log("Unsupported operation")
+ }
+ }
+ }
+
+ MapPopupMenu {
+ id: mapPopupMenu
+
+ function show(coordinate)
+ {
+ stackView.pop(page)
+ mapPopupMenu.coordinate = coordinate
+ mapPopupMenu.markersCount = mapview.markers.length
+ mapPopupMenu.mapItemsCount = mapview.mapItems.length
+ mapPopupMenu.popup()
+ }
+
+ onItemClicked: (item) => {
+ stackView.pop(page)
+ switch (item) {
+ case "addMarker":
+ mapview.addMarker()
+ break
+ case "getCoordinate":
+ mapview.coordinatesCaptured(coordinate.latitude, coordinate.longitude)
+ break
+ case "fitViewport":
+ mapview.map.fitViewportToMapItems()
+ break
+ case "deleteMarkers":
+ mapview.deleteMarkers()
+ break
+ default:
+ console.log("Unsupported operation:", item)
+ }
+ }
+ }
+
+ MarkerPopupMenu {
+ id: markerPopupMenu
+
+ function show(coordinate)
+ {
+ stackView.pop(page)
+ markerPopupMenu.markersCount = mapview.markers.length
+ markerPopupMenu.currentMarker = mapview.currentMarker
+ markerPopupMenu.popup()
+ }
+
+ function askForCoordinate()
+ {
+ stackView.push("forms/ReverseGeocode.qml",
+ { "title": qsTr("New Coordinate"),
+ "coordinate": mapview.markers[mapview.currentMarker].coordinate})
+ stackView.currentItem.showPlace.connect(moveMarker)
+ stackView.currentItem.closeForm.connect(stackView.closeForm)
+ }
+
+ function moveMarker(coordinate)
+ {
+ mapview.markers[mapview.currentMarker].coordinate = coordinate;
+ mapview.map.center = coordinate;
+ stackView.pop(page)
+ }
+
+ onItemClicked: (item) => {
+ stackView.pop(page)
+ switch (item) {
+ case "deleteMarker":
+ mapview.deleteMarker(mapview.currentMarker)
+ break;
+ case "getMarkerCoordinate":
+ mapview.coordinatesCaptured(mapview.markers[mapview.currentMarker].coordinate.latitude,
+ mapview.markers[mapview.currentMarker].coordinate.longitude)
+ break;
+ case "moveMarkerTo":
+ askForCoordinate()
+ break;
+ case "routeToNextPoint":
+ case "routeToNextPoints":
+ mapview.calculateMarkerRoute()
+ break
+ case "distanceToNextPoint":
+ var coordinate1 = mapview.markers[mapview.currentMarker].coordinate;
+ var coordinate2 = mapview.markers[mapview.currentMarker+1].coordinate;
+ var distance = Helper.formatDistance(coordinate1.distanceTo(coordinate2));
+ stackView.showMessage(qsTr("Distance"),"<b>" + qsTr("Distance:") + "</b> " + distance)
+ break
+ default:
+ console.log("Unsupported operation:", item)
+ }
+ }
+ }
+
+ ItemPopupMenu {
+ id: itemPopupMenu
+
+ function show(type,coordinate)
+ {
+ stackView.pop(page)
+ itemPopupMenu.type = type
+ itemPopupMenu.popup()
+ }
+
+ onItemClicked: {
+ stackView.pop(page)
+ switch (item) {
+ case "showRouteInfo":
+ stackView.showRouteListPage()
+ break;
+ case "deleteRoute":
+ mapview.routeModel.reset();
+ break;
+ case "showPointInfo":
+ mapview.showGeocodeInfo()
+ break;
+ case "deletePoint":
+ geocodeModel.reset()
+ break;
+ default:
+ console.log("Unsupported operation")
+ }
+ }
+ }
+
+ StackView {
+ id: stackView
+ anchors.fill: parent
+ focus: true
+ initialItem: Item {
+ id: page
+
+ Text {
+ visible: !supportsSsl && map && mapview.activeMapType && activeMapType.metadata.isHTTPS
+ text: "The active map type\n
+requires (missing) SSL\n
+support"
+ horizontalAlignment: Text.AlignHCenter
+ font.pixelSize: appWindow.width / 12
+ font.bold: true
+ color: "grey"
+ anchors.centerIn: parent
+ z: 12
+ }
+ }
+
+ function showMessage(title,message,backPage)
+ {
+ push("forms/Message.qml",
+ {
+ "title" : title,
+ "message" : message,
+ "backPage" : backPage
+ })
+ currentItem.closeForm.connect(closeMessage)
+ }
+
+ function closeMessage(backPage)
+ {
+ pop(backPage)
+ }
+
+ function closeForm()
+ {
+ pop(page)
+ }
+
+ function showRouteListPage()
+ {
+ push("forms/RouteList.qml",
+ {
+ "routeModel" : mapview.routeModel
+ })
+ currentItem.closeForm.connect(closeForm)
+ }
+ }
+
+ Component {
+ id: mapComponent
+
+ MapComponent {
+ width: page.width
+ height: page.height
+ onFollowmeChanged: mainMenu.isFollowMe = followme
+ map.onSupportedMapTypesChanged: mainMenu.mapTypeMenu.createMenu(map)
+ onCoordinatesCaptured: (latitude, longitude) => {
+ var text = "<b>" + qsTr("Latitude:") + "</b> " + Helper.roundNumber(latitude,4) + "<br/><b>" + qsTr("Longitude:") + "</b> " + Helper.roundNumber(longitude,4)
+ stackView.showMessage(qsTr("Coordinates"),text);
+ }
+ onGeocodeFinished:{
+ if (geocodeModel.status == GeocodeModel.Ready) {
+ if (geocodeModel.count == 0) {
+ stackView.showMessage(qsTr("Geocode Error"),qsTr("Unsuccessful geocode"))
+ } else if (geocodeModel.count > 1) {
+ stackView.showMessage(qsTr("Ambiguous geocode"), geocodeModel.count + " " +
+ qsTr("results found for the given address, please specify location"))
+ } else {
+ stackView.showMessage(qsTr("Location"), geocodeMessage(),page)
+ }
+ } else if (geocodeModel.status == GeocodeModel.Error) {
+ stackView.showMessage(qsTr("Geocode Error"),qsTr("Unsuccessful geocode"))
+ }
+ }
+ onRouteError: stackView.showMessage(qsTr("Route Error"),qsTr("Unable to find a route for the given points"),page)
+
+ onShowGeocodeInfo: stackView.showMessage(qsTr("Location"),geocodeMessage(),page)
+
+ map.onErrorChanged: {
+ if (map.error != mapview.NoError) {
+ var title = qsTr("ProviderError")
+ var message = mapview.errorString + "<br/><br/><b>" + qsTr("Try to select other provider") + "</b>"
+ if (map.error == mapview.MissingRequiredParameterError)
+ message += "<br/>" + qsTr("or see") + " \'mapviewer --help\' "
+ + qsTr("how to pass plugin parameters.")
+ stackView.showMessage(title,message);
+ }
+ }
+ onShowMainMenu: (coordinate) => mapPopupMenu.show(coordinate)
+ onShowMarkerMenu: (coordinate) => markerPopupMenu.show(coordinate)
+ onShowRouteMenu: (coordinate) => itemPopupMenu.show("Route",coordinate)
+ onShowPointMenu: (coordinate) => itemPopupMenu.show("Point",coordinate)
+ onShowRouteList: stackView.showRouteListPage()
+
+ TapHandler {
+ onTapped: {
+ }
+ }
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/Geocode.qml b/examples/location/mapviewer/MapViewer/forms/Geocode.qml
new file mode 100644
index 000000000..885357dd3
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/Geocode.qml
@@ -0,0 +1,42 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtPositioning
+
+GeocodeForm {
+
+ property variant address
+ signal showPlace(variant address)
+ signal closeForm()
+
+ goButton.onClicked: {
+ // fill out the Address element
+ address.street = street.text
+ address.city = city.text
+ address.state = stateName.text
+ address.country = country.text
+ address.postalCode = postalCode.text
+ showPlace(address)
+ }
+
+ clearButton.onClicked: {
+ street.text = ""
+ city.text = ""
+ stateName.text = ""
+ country.text = ""
+ postalCode.text = ""
+ }
+
+ cancelButton.onClicked: {
+ closeForm()
+ }
+
+ Component.onCompleted: {
+ street.text = address.street
+ city.text = address.city
+ stateName.text = address.state
+ country.text = address.country
+ postalCode.text = address.postalCode
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/GeocodeForm.ui.qml b/examples/location/mapviewer/MapViewer/forms/GeocodeForm.ui.qml
new file mode 100644
index 000000000..cb56370ea
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/GeocodeForm.ui.qml
@@ -0,0 +1,136 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item {
+ property alias goButton: goButton
+ property alias clearButton: clearButton
+ property alias postalCode: postalCode
+ property alias street: street
+ property alias city: city
+ property alias stateName: stateName
+ property alias country: country
+ property alias cancelButton: cancelButton
+ Rectangle {
+ id: tabRectangle
+ y: 20
+ height: tabTitle.height * 2
+ color: "#46a2da"
+ anchors.rightMargin: 0
+ anchors.leftMargin: 0
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Label {
+ id: tabTitle
+ color: "#ffffff"
+ text: qsTr("Geocode")
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+
+ Item {
+ id: item2
+ anchors.rightMargin: 20
+ anchors.leftMargin: 20
+ anchors.bottomMargin: 20
+ anchors.topMargin: 20
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: tabRectangle.bottom
+
+
+ GridLayout {
+ id: gridLayout3
+ anchors.rightMargin: 0
+ anchors.bottomMargin: 0
+ anchors.leftMargin: 0
+ anchors.topMargin: 0
+ rowSpacing: 10
+ rows: 1
+ columns: 2
+ anchors.fill: parent
+
+ Label {
+ id: label2
+ text: qsTr("Street")
+ }
+
+ TextField {
+ id: street
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label3
+ text: qsTr("City")
+ }
+
+ TextField {
+ id: city
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label4
+ text: qsTr("State")
+ }
+
+ TextField {
+ id: stateName
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label5
+ text: qsTr("Country")
+ }
+
+ TextField {
+ id: country
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label6
+ text: qsTr("Postal Code")
+ }
+
+ TextField {
+ id: postalCode
+ Layout.fillWidth: true
+ }
+
+ RowLayout {
+ id: rowLayout1
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignRight
+
+ Button {
+ id: goButton
+ text: qsTr("Proceed")
+ }
+
+ Button {
+ id: clearButton
+ text: qsTr("Clear")
+ }
+
+ Button {
+ id: cancelButton
+ text: qsTr("Cancel")
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.columnSpan: 2
+ }
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/Locale.qml b/examples/location/mapviewer/MapViewer/forms/Locale.qml
new file mode 100644
index 000000000..9ba7dd7f0
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/Locale.qml
@@ -0,0 +1,45 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtPositioning
+
+LocaleForm {
+ property string locale
+ signal selectLanguage(string language)
+ signal closeForm()
+
+ goButton.onClicked: {
+
+ if (!languageGroup.checkedButton) return
+
+ if (otherRadioButton.checked) {
+ selectLanguage(language.text)
+ } else {
+ selectLanguage(languageGroup.checkedButton.text)
+ }
+ }
+
+ clearButton.onClicked: {
+ language.text = ""
+ }
+
+ cancelButton.onClicked: {
+ closeForm()
+ }
+
+ Component.onCompleted: {
+ switch (locale) {
+ case "en":
+ enRadioButton.checked = true;
+ break
+ case "fr":
+ frRadioButton.checked = true;
+ break
+ default:
+ otherRadioButton.checked = true;
+ language.text = locale
+ break
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/LocaleForm.ui.qml b/examples/location/mapviewer/MapViewer/forms/LocaleForm.ui.qml
new file mode 100644
index 000000000..9e1ec1807
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/LocaleForm.ui.qml
@@ -0,0 +1,116 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item {
+ property alias clearButton: clearButton
+ property alias goButton: goButton
+ property alias cancelButton: cancelButton
+ property alias tabTitle: tabTitle
+ property alias languageGroup: languageGroup
+ property alias enRadioButton: enRadioButton
+ property alias frRadioButton: frRadioButton
+ property alias otherRadioButton: otherRadioButton
+ property alias language: language
+
+ Rectangle {
+ id: tabRectangle
+ y: 20
+ height: tabTitle.height * 2
+ color: "#46a2da"
+ anchors.rightMargin: 0
+ anchors.leftMargin: 0
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Label {
+ id: tabTitle
+ color: "#ffffff"
+ text: "Locale"
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+
+ Item {
+ id: item2
+ anchors.rightMargin: 20
+ anchors.leftMargin: 20
+ anchors.bottomMargin: 20
+ anchors.topMargin: 20
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: tabRectangle.bottom
+
+ GridLayout {
+ id: gridLayout3
+ anchors.rightMargin: 0
+ anchors.bottomMargin: 0
+ anchors.leftMargin: 0
+ anchors.topMargin: 0
+ rowSpacing: 10
+ rows: 1
+ columns: 2
+ anchors.fill: parent
+
+ ButtonGroup { id: languageGroup }
+ RadioButton {
+ id: enRadioButton
+ text: qsTr("en")
+ ButtonGroup.group: languageGroup
+ Layout.columnSpan: 2
+ }
+
+ RadioButton {
+ id: frRadioButton
+ text: qsTr("fr")
+ ButtonGroup.group: languageGroup
+ Layout.columnSpan: 2
+ }
+
+ RadioButton {
+ id: otherRadioButton
+ text: qsTr("Other")
+ ButtonGroup.group: languageGroup
+ }
+
+ TextField {
+ id: language
+ Layout.fillWidth: true
+ placeholderText: qsTr("")
+ }
+
+ RowLayout {
+ id: rowLayout1
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignRight
+
+ Button {
+ id: goButton
+ text: qsTr("Proceed")
+ }
+
+ Button {
+ id: clearButton
+ text: qsTr("Clear")
+ }
+
+ Button {
+ id: cancelButton
+ text: qsTr("Cancel")
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.columnSpan: 2
+ }
+
+
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/Message.qml b/examples/location/mapviewer/MapViewer/forms/Message.qml
new file mode 100644
index 000000000..583bc2dda
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/Message.qml
@@ -0,0 +1,21 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+MessageForm {
+ property string title
+ property string message
+ property variant backPage
+
+ signal closeForm(variant backPage)
+
+ button.onClicked: {
+ closeForm(backPage)
+ }
+
+ Component.onCompleted: {
+ messageText.text = message
+ messageTitle.text = title
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/MessageForm.ui.qml b/examples/location/mapviewer/MapViewer/forms/MessageForm.ui.qml
new file mode 100644
index 000000000..426c72757
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/MessageForm.ui.qml
@@ -0,0 +1,69 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item {
+ id: root
+ property alias messageText: messageText
+ property alias messageTitle: messageTitle
+ property alias button: button
+
+ Rectangle {
+ id: tabRectangle
+ y: 20
+ height: messageTitle.height * 2
+ color: "#46a2da"
+ anchors.rightMargin: 0
+ anchors.leftMargin: 0
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Label {
+ id: messageTitle
+ color: "#ffffff"
+ text: qsTr("type")
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+
+ Item {
+ anchors.rightMargin: 20
+ anchors.leftMargin: 20
+ anchors.bottomMargin: 20
+ anchors.topMargin: 20
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: tabRectangle.bottom
+
+ ColumnLayout {
+ id: columnLayout1
+ spacing: 20
+ anchors.fill: parent
+
+ Label {
+ id: messageText
+ text: qsTr("message")
+ Layout.fillWidth: true
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Text.WordWrap
+ textFormat: Text.RichText
+ }
+
+ Button {
+ id: button
+ text: qsTr("OK")
+ Layout.alignment: Qt.AlignHCenter
+ }
+
+ Item {
+ Layout.fillHeight: true
+ }
+ }
+ }
+}
+
diff --git a/examples/location/mapviewer/MapViewer/forms/ReverseGeocode.qml b/examples/location/mapviewer/MapViewer/forms/ReverseGeocode.qml
new file mode 100644
index 000000000..31122a2e9
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/ReverseGeocode.qml
@@ -0,0 +1,38 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtPositioning
+
+//Reverse Geocode Dialog
+ReverseGeocodeForm {
+ property string title;
+ property variant coordinate
+ signal showPlace(variant coordinate)
+ signal closeForm()
+
+ goButton.onClicked: {
+ var coordinate = QtPositioning.coordinate(parseFloat(latitude.text),
+ parseFloat(longitude.text));
+ if (coordinate.isValid) {
+ showPlace(coordinate)
+ }
+ }
+
+ clearButton.onClicked: {
+ latitude.text = ""
+ longitude.text = ""
+ }
+
+ cancelButton.onClicked: {
+ closeForm()
+ }
+
+ Component.onCompleted: {
+ latitude.text = "" + coordinate.latitude
+ longitude.text = "" + coordinate.longitude
+ if (title.length != 0) {
+ tabTitle.text = title;
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/ReverseGeocodeForm.ui.qml b/examples/location/mapviewer/MapViewer/forms/ReverseGeocodeForm.ui.qml
new file mode 100644
index 000000000..1d937ee90
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/ReverseGeocodeForm.ui.qml
@@ -0,0 +1,103 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item {
+ property alias clearButton: clearButton
+ property alias goButton: goButton
+ property alias longitude: longitude
+ property alias latitude: latitude
+ property alias cancelButton: cancelButton
+ property alias tabTitle: tabTitle
+ Rectangle {
+ id: tabRectangle
+ y: 20
+ height: tabTitle.height * 2
+ color: "#46a2da"
+ anchors.rightMargin: 0
+ anchors.leftMargin: 0
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Label {
+ id: tabTitle
+ color: "#ffffff"
+ text: qsTr("Reverse Geocode")
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+
+ Item {
+ id: item2
+ anchors.rightMargin: 20
+ anchors.leftMargin: 20
+ anchors.bottomMargin: 20
+ anchors.topMargin: 20
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: tabRectangle.bottom
+
+ GridLayout {
+ id: gridLayout3
+ anchors.rightMargin: 0
+ anchors.bottomMargin: 0
+ anchors.leftMargin: 0
+ anchors.topMargin: 0
+ rowSpacing: 10
+ rows: 1
+ columns: 2
+ anchors.fill: parent
+
+ Label {
+ id: label2
+ text: qsTr("Latitude")
+ }
+
+ TextField {
+ id: latitude
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label3
+ text: qsTr("Longitude")
+ }
+
+ TextField {
+ id: longitude
+ Layout.fillWidth: true
+ placeholderText: qsTr("")
+ }
+
+ RowLayout {
+ id: rowLayout1
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignRight
+
+ Button {
+ id: goButton
+ text: qsTr("Proceed")
+ }
+
+ Button {
+ id: clearButton
+ text: qsTr("Clear")
+ }
+
+ Button {
+ id: cancelButton
+ text: qsTr("Cancel")
+ }
+ }
+ Item {
+ Layout.fillHeight: true
+ Layout.columnSpan: 2
+ }
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/RouteAddress.qml b/examples/location/mapviewer/MapViewer/forms/RouteAddress.qml
new file mode 100644
index 000000000..3676c1374
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/RouteAddress.qml
@@ -0,0 +1,105 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtLocation
+import QtPositioning
+
+RouteAddressForm {
+ property alias plugin : tempGeocodeModel.plugin;
+ property variant fromAddress;
+ property variant toAddress;
+ signal showMessage(string topic, string message)
+ signal showRoute(variant startCoordinate,variant endCoordinate)
+ signal closeForm()
+
+ goButton.onClicked: {
+ tempGeocodeModel.reset()
+ fromAddress.country = fromCountry.text
+ fromAddress.street = fromStreet.text
+ fromAddress.city = fromCity.text
+ toAddress.country = toCountry.text
+ toAddress.street = toStreet.text
+ toAddress.city = toCity.text
+ tempGeocodeModel.startCoordinate = QtPositioning.coordinate()
+ tempGeocodeModel.endCoordinate = QtPositioning.coordinate()
+ tempGeocodeModel.query = fromAddress
+ tempGeocodeModel.update();
+ goButton.enabled = false;
+ }
+
+ clearButton.onClicked: {
+ fromStreet.text = ""
+ fromCity.text = ""
+ fromCountry.text = ""
+ toStreet.text = ""
+ toCity.text = ""
+ toCountry.text = ""
+ }
+
+ cancelButton.onClicked: {
+ closeForm()
+ }
+
+ Component.onCompleted: {
+ fromStreet.text = fromAddress.street
+ fromCity.text = fromAddress.city
+ fromCountry.text = fromAddress.country
+ toStreet.text = toAddress.street
+ toCity.text = toAddress.city
+ toCountry.text = toAddress.country
+ }
+
+ GeocodeModel {
+ id: tempGeocodeModel
+
+ property int success: 0
+ property variant startCoordinate
+ property variant endCoordinate
+
+ onCountChanged: {
+ if (success == 1 && count == 1) {
+ query = toAddress
+ update();
+ }
+ }
+
+ onStatusChanged: {
+ if ((status == GeocodeModel.Ready) && (count == 1)) {
+ success++
+ if (success == 1) {
+ startCoordinate.latitude = get(0).coordinate.latitude
+ startCoordinate.longitude = get(0).coordinate.longitude
+ }
+ if (success == 2) {
+ endCoordinate.latitude = get(0).coordinate.latitude
+ endCoordinate.longitude = get(0).coordinate.longitude
+ success = 0
+ if (startCoordinate.isValid && endCoordinate.isValid)
+ showRoute(startCoordinate,endCoordinate)
+ else
+ goButton.enabled = true
+ }
+ } else if ((status == GeocodeModel.Ready) || (status == GeocodeModel.Error)) {
+ var st = (success == 0 ) ? "start" : "end"
+ success = 0
+ if ((status == GeocodeModel.Ready) && (count == 0 )) {
+ showMessage(qsTr("Geocode Error"),qsTr("Unsuccessful geocode"));
+ goButton.enabled = true;
+ }
+ else if (status == GeocodeModel.Error) {
+ showMessage(qsTr("Geocode Error"),
+ qsTr("Unable to find location for the") + " " +
+ st + " " +qsTr("point"))
+ goButton.enabled = true;
+ }
+ else if ((status == GeocodeModel.Ready) && (count > 1 )) {
+ showMessage(qsTr("Ambiguous geocode"),
+ count + " " + qsTr("results found for the") +
+ " " + st + " " +qsTr("point, please specify location"))
+ goButton.enabled = true;
+ }
+ }
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/RouteAddressForm.ui.qml b/examples/location/mapviewer/MapViewer/forms/RouteAddressForm.ui.qml
new file mode 100644
index 000000000..ee9227013
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/RouteAddressForm.ui.qml
@@ -0,0 +1,160 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item {
+ property alias fromStreet: fromStreet
+ property alias fromCountry: fromCountry
+ property alias toStreet: toStreet
+ property alias toCity: toCity
+ property alias toCountry: toCountry
+ property alias fromCity: fromCity
+ property alias goButton: goButton
+ property alias clearButton: clearButton
+ property alias cancelButton: cancelButton
+
+ Rectangle {
+ id: tabRectangle
+ y: 20
+ height: tabTitle.height * 2
+ color: "#46a2da"
+ anchors.rightMargin: 0
+ anchors.leftMargin: 0
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Label {
+ id: tabTitle
+ color: "#ffffff"
+ text: qsTr("Route Address")
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+
+ Item {
+ id: item2
+ anchors.rightMargin: 20
+ anchors.leftMargin: 20
+ anchors.bottomMargin: 20
+ anchors.topMargin: 20
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: tabRectangle.bottom
+
+ GridLayout {
+ id: gridLayout3
+ rowSpacing: 10
+ rows: 1
+ columns: 2
+ anchors.fill: parent
+
+ Label {
+ id: label1
+ text: qsTr("From")
+ font.bold: true
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignHCenter
+ }
+
+ Label {
+ id: label2
+ text: qsTr("Street")
+ }
+
+ TextField {
+ id: fromStreet
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label3
+ text: qsTr("City")
+ }
+
+ TextField {
+ id: fromCity
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label7
+ text: qsTr("Country")
+ }
+
+ TextField {
+ id: fromCountry
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label6
+ text: qsTr("To")
+ font.bold: true
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignHCenter
+ }
+
+ Label {
+ id: label4
+ text: qsTr("Street")
+ }
+
+ TextField {
+ id: toStreet
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label5
+ text: qsTr("City")
+ }
+
+ TextField {
+ id: toCity
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label8
+ text: qsTr("Country")
+ }
+
+ TextField {
+ id: toCountry
+ Layout.fillWidth: true
+ }
+
+ RowLayout {
+ id: rowLayout1
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignRight
+
+ Button {
+ id: goButton
+ text: qsTr("Proceed")
+ }
+
+ Button {
+ id: clearButton
+ text: qsTr("Clear")
+ }
+
+ Button {
+ id: cancelButton
+ text: qsTr("Cancel")
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ Layout.columnSpan: 2
+ }
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/RouteCoordinate.qml b/examples/location/mapviewer/MapViewer/forms/RouteCoordinate.qml
new file mode 100644
index 000000000..003556c51
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/RouteCoordinate.qml
@@ -0,0 +1,41 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtPositioning
+
+RouteCoordinateForm {
+ property variant toCoordinate
+ property variant fromCoordinate
+ signal showRoute(variant startCoordinate,variant endCoordinate)
+ signal closeForm()
+
+ goButton.onClicked: {
+ var startCoordinate = QtPositioning.coordinate(parseFloat(fromLatitude.text),
+ parseFloat(fromLongitude.text));
+ var endCoordinate = QtPositioning.coordinate(parseFloat(toLatitude.text),
+ parseFloat(toLongitude.text));
+ if (startCoordinate.isValid && endCoordinate.isValid) {
+ goButton.enabled = false;
+ showRoute(startCoordinate,endCoordinate)
+ }
+ }
+
+ clearButton.onClicked: {
+ fromLatitude.text = ""
+ fromLongitude.text = ""
+ toLatitude.text = ""
+ toLongitude.text = ""
+ }
+
+ cancelButton.onClicked: {
+ closeForm()
+ }
+
+ Component.onCompleted: {
+ fromLatitude.text = "" + fromCoordinate.latitude
+ fromLongitude.text = "" + fromCoordinate.longitude
+ toLatitude.text = "" + toCoordinate.latitude
+ toLongitude.text = "" + toCoordinate.longitude
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/RouteCoordinateForm.ui.qml b/examples/location/mapviewer/MapViewer/forms/RouteCoordinateForm.ui.qml
new file mode 100644
index 000000000..88ff94dc1
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/RouteCoordinateForm.ui.qml
@@ -0,0 +1,136 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item {
+ property alias fromLatitude: fromLatitude
+ property alias fromLongitude: fromLongitude
+ property alias toLatitude: toLatitude
+ property alias toLongitude: toLongitude
+ property alias clearButton: clearButton
+ property alias goButton: goButton
+ property alias cancelButton: cancelButton
+
+ Rectangle {
+ id: tabRectangle
+ y: 20
+ height: tabTitle.height * 2
+ color: "#46a2da"
+ anchors.rightMargin: 0
+ anchors.leftMargin: 0
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Label {
+ id: tabTitle
+ color: "#ffffff"
+ text: qsTr("Route Coordinates")
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+
+ Item {
+ id: item2
+ anchors.rightMargin: 20
+ anchors.leftMargin: 20
+ anchors.bottomMargin: 20
+ anchors.topMargin: 20
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: tabRectangle.bottom
+
+ GridLayout {
+ id: gridLayout3
+ rowSpacing: 10
+ rows: 1
+ columns: 2
+ anchors.fill: parent
+
+ Label {
+ id: label1
+ text: qsTr("From")
+ font.bold: true
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignHCenter
+ }
+
+ Label {
+ id: label2
+ text: qsTr("Latitude")
+ }
+
+ TextField {
+ id: fromLatitude
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label3
+ text: qsTr("Longitude")
+ }
+
+ TextField {
+ id: fromLongitude
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label6
+ text: qsTr("To")
+ font.bold: true
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignHCenter
+ }
+
+ Label {
+ id: label4
+ text: qsTr("Latitude")
+ }
+
+ TextField {
+ id: toLatitude
+ Layout.fillWidth: true
+ }
+
+ Label {
+ id: label5
+ text: qsTr("Longitude")
+ }
+
+ TextField {
+ id: toLongitude
+ Layout.fillWidth: true
+ }
+
+ RowLayout {
+ id: rowLayout1
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignRight
+ Button {
+ id: goButton
+ text: qsTr("Proceed")
+ }
+
+ Button {
+ id: clearButton
+ text: qsTr("Clear")
+ }
+
+ Button {
+ id: cancelButton
+ text: qsTr("Cancel")
+ }
+ }
+ Item {
+ Layout.fillHeight: true
+ Layout.columnSpan: 2
+ }
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/RouteList.qml b/examples/location/mapviewer/MapViewer/forms/RouteList.qml
new file mode 100644
index 000000000..8dbda7c01
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/RouteList.qml
@@ -0,0 +1,50 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import "../helper.js" as Helper
+
+//! [routeinfomodel0]
+ListView {
+//! [routeinfomodel0]
+ property variant routeModel
+ property string totalTravelTime
+ property string totalDistance
+ signal closeForm()
+//! [routeinfomodel1]
+ interactive: true
+ model: ListModel { id: routeInfoModel }
+ header: RouteListHeader {}
+ delegate: RouteListDelegate{
+ routeIndex.text: index + 1
+ routeInstruction.text: instruction
+ routeDistance.text: distance
+ }
+//! [routeinfomodel1]
+ footer: Button {
+ anchors.horizontalCenter: parent.horizontalCenter
+ text: qsTr("Close")
+ onClicked: {
+ closeForm()
+ }
+ }
+
+ Component.onCompleted: {
+ //! [routeinfomodel2]
+ routeInfoModel.clear()
+ if (routeModel.count > 0) {
+ for (var i = 0; i < routeModel.get(0).segments.length; i++) {
+ routeInfoModel.append({
+ "instruction": routeModel.get(0).segments[i].maneuver.instructionText,
+ "distance": Helper.formatDistance(routeModel.get(0).segments[i].maneuver.distanceToNextInstruction)
+ });
+ }
+ }
+ //! [routeinfomodel2]
+ totalTravelTime = routeModel.count == 0 ? "" : Helper.formatTime(routeModel.get(0).travelTime)
+ totalDistance = routeModel.count == 0 ? "" : Helper.formatDistance(routeModel.get(0).distance)
+ }
+//! [routeinfomodel3]
+}
+//! [routeinfomodel3]
diff --git a/examples/location/mapviewer/MapViewer/forms/RouteListDelegate.qml b/examples/location/mapviewer/MapViewer/forms/RouteListDelegate.qml
new file mode 100644
index 000000000..680318ac3
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/RouteListDelegate.qml
@@ -0,0 +1,42 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Item {
+ id: root
+ property bool checked: false
+ property alias routeInstruction: instructionLabel
+ property alias routeDistance: distanceLabel
+ property alias routeIndex: indexLabel
+
+ width: appWindow.width
+ height: indexLabel.height * 2
+
+ RowLayout {
+ spacing: 10
+ anchors.left: parent.left
+ anchors.leftMargin: 30
+ anchors.verticalCenter: parent.verticalCenter
+ Label {
+ id: indexLabel
+ }
+ Label {
+ id: instructionLabel
+ wrapMode: Text.Wrap
+ }
+ Label {
+ id: distanceLabel
+ }
+ }
+
+ Rectangle {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.margins: 15
+ height: 1
+ color: "#46a2da"
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/forms/RouteListHeader.qml b/examples/location/mapviewer/MapViewer/forms/RouteListHeader.qml
new file mode 100644
index 000000000..4f8308091
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/forms/RouteListHeader.qml
@@ -0,0 +1,47 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Item {
+ property alias travelTime: travelTimeLabel
+ property alias distance: distanceLabel
+ width: parent.width
+ height: tabTitle.height * 3.0
+
+ Rectangle {
+ id: tabRectangle
+ y: tabTitle.height
+ height: tabTitle.height * 2 - 1
+ color: "#46a2da"
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Label {
+ id: tabTitle
+ color: "#ffffff"
+ text: qsTr("Route Information")
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Label {
+ id: travelTimeLabel
+ text: totalTravelTime
+ color: "#ffffff"
+ font.bold: true
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ }
+
+ Label {
+ id: distanceLabel
+ text: totalDistance
+ color: "#ffffff"
+ font.bold: true
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/helper.js b/examples/location/mapviewer/MapViewer/helper.js
new file mode 100644
index 000000000..a42040518
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/helper.js
@@ -0,0 +1,44 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+.pragma library
+
+function roundNumber(number, digits)
+{
+ var multiple = Math.pow(10, digits);
+ return Math.round(number * multiple) / multiple;
+}
+
+function formatTime(sec)
+{
+ var value = sec
+ var seconds = value % 60
+ value /= 60
+ value = (value > 1) ? Math.round(value) : 0
+ var minutes = value % 60
+ value /= 60
+ value = (value > 1) ? Math.round(value) : 0
+ var hours = value
+ if (hours > 0) value = hours + "h:"+ minutes + "m"
+ else value = minutes + "min"
+ return value
+}
+
+function formatDistance(meters)
+{
+ var dist = Math.round(meters)
+ if (dist > 1000 ){
+ if (dist > 100000){
+ dist = Math.round(dist / 1000)
+ }
+ else{
+ dist = Math.round(dist / 100)
+ dist = dist / 10
+ }
+ dist = dist + " km"
+ }
+ else{
+ dist = dist + " m"
+ }
+ return dist
+}
diff --git a/examples/location/mapviewer/MapViewer/map/MapComponent.qml b/examples/location/mapviewer/MapViewer/map/MapComponent.qml
new file mode 100644
index 000000000..987455287
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/map/MapComponent.qml
@@ -0,0 +1,497 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+import QtQuick
+import QtQuick.Controls
+import QtLocation
+import QtPositioning
+import "../helper.js" as Helper
+
+//! [top]
+MapView {
+ id: view
+//! [top]
+ property variant markers
+ property variant mapItems
+ property int markerCounter: 0 // counter for total amount of markers. Resets to 0 when number of markers = 0
+ property int currentMarker
+ property bool followme: false
+ property variant scaleLengths: [5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000, 2000000]
+ property alias routeQuery: routeQuery
+ property alias routeModel: routeModel
+ property alias geocodeModel: geocodeModel
+ property alias slidersExpanded: sliders.expanded
+
+ signal showGeocodeInfo()
+ signal geocodeFinished()
+ signal routeError()
+ signal coordinatesCaptured(double latitude, double longitude)
+ signal showMainMenu(variant coordinate)
+ signal showMarkerMenu(variant coordinate)
+ signal showRouteMenu(variant coordinate)
+ signal showPointMenu(variant coordinate)
+ signal showRouteList()
+
+ function geocodeMessage()
+ {
+ var street, district, city, county, state, countryCode, country, postalCode, latitude, longitude, text
+ latitude = Math.round(geocodeModel.get(0).coordinate.latitude * 10000) / 10000
+ longitude =Math.round(geocodeModel.get(0).coordinate.longitude * 10000) / 10000
+ street = geocodeModel.get(0).address.street
+ district = geocodeModel.get(0).address.district
+ city = geocodeModel.get(0).address.city
+ county = geocodeModel.get(0).address.county
+ state = geocodeModel.get(0).address.state
+ countryCode = geocodeModel.get(0).address.countryCode
+ country = geocodeModel.get(0).address.country
+ postalCode = geocodeModel.get(0).address.postalCode
+
+ text = "<b>Latitude:</b> " + latitude + "<br/>"
+ text +="<b>Longitude:</b> " + longitude + "<br/>" + "<br/>"
+ if (street) text +="<b>Street: </b>"+ street + " <br/>"
+ if (district) text +="<b>District: </b>"+ district +" <br/>"
+ if (city) text +="<b>City: </b>"+ city + " <br/>"
+ if (county) text +="<b>County: </b>"+ county + " <br/>"
+ if (state) text +="<b>State: </b>"+ state + " <br/>"
+ if (countryCode) text +="<b>Country code: </b>"+ countryCode + " <br/>"
+ if (country) text +="<b>Country: </b>"+ country + " <br/>"
+ if (postalCode) text +="<b>PostalCode: </b>"+ postalCode + " <br/>"
+ return text
+ }
+
+ function calculateScale()
+ {
+ var coord1, coord2, dist, text, f
+ f = 0
+ coord1 = view.map.toCoordinate(Qt.point(0,scale.y))
+ coord2 = view.map.toCoordinate(Qt.point(0+scaleImage.sourceSize.width,scale.y))
+ dist = Math.round(coord1.distanceTo(coord2))
+
+ if (dist === 0) {
+ // not visible
+ } else {
+ for (var i = 0; i < scaleLengths.length-1; i++) {
+ if (dist < (scaleLengths[i] + scaleLengths[i+1]) / 2 ) {
+ f = scaleLengths[i] / dist
+ dist = scaleLengths[i]
+ break;
+ }
+ }
+ if (f === 0) {
+ f = dist / scaleLengths[i]
+ dist = scaleLengths[i]
+ }
+ }
+
+ text = Helper.formatDistance(dist)
+ scaleImage.width = (scaleImage.sourceSize.width * f) - 2 * scaleImageLeft.sourceSize.width
+ scaleText.text = text
+ }
+
+ function deleteMarkers()
+ {
+ var count = view.markers.length
+ for (var i = count-1; i>=0; i--){
+ view.map.removeMapItem(view.markers[i])
+ }
+ view.markers = []
+ }
+
+ function addMarker()
+ {
+ var count = view.markers.length
+ markerCounter++
+ var marker = Qt.createQmlObject ('Marker {}', map)
+ view.map.addMapItem(marker)
+ marker.z = view.map.z+1
+ marker.coordinate = tapHandler.lastCoordinate
+ markers.push(marker)
+ }
+
+ function deleteMarker(index)
+ {
+ //update list of markers
+ var myArray = []
+ var count = view.markers.length
+ for (var i = 0; i<count; i++){
+ if (index !== i) myArray.push(view.markers[i])
+ }
+
+ view.map.removeMapItem(view.markers[index])
+ view.markers[index].destroy()
+ view.markers = myArray
+ if (markers.length === 0) markerCounter = 0
+ }
+
+ function calculateMarkerRoute()
+ {
+ routeQuery.clearWaypoints();
+ for (var i = currentMarker; i< view.markers.length; i++){
+ routeQuery.addWaypoint(markers[i].coordinate)
+ }
+ routeQuery.travelModes = RouteQuery.CarTravel
+ routeQuery.routeOptimizations = RouteQuery.ShortestRoute
+
+ routeModel.update();
+ }
+
+ function calculateCoordinateRoute(startCoordinate, endCoordinate)
+ {
+ //! [routerequest0]
+ // clear away any old data in the query
+ routeQuery.clearWaypoints();
+ // add the start and end coords as waypoints on the route
+ routeQuery.addWaypoint(startCoordinate)
+ routeQuery.addWaypoint(endCoordinate)
+ routeQuery.travelModes = RouteQuery.CarTravel
+ routeQuery.routeOptimizations = RouteQuery.FastestRoute
+ //! [routerequest0]
+
+ //! [routerequest1]
+ routeModel.update();
+ //! [routerequest1]
+
+ //! [routerequest2]
+ // center the map on the start coord
+ view.map.center = startCoordinate;
+ //! [routerequest2]
+ }
+
+ function geocode(fromAddress)
+ {
+ //! [geocode1]
+ // send the geocode request
+ geocodeModel.query = fromAddress
+ geocodeModel.update()
+ //! [geocode1]
+ }
+
+
+//! [coord]
+ map.zoomLevel: (maximumZoomLevel - minimumZoomLevel)/2
+ map.center {
+ // The Qt Company in Oslo
+ latitude: 59.9485
+ longitude: 10.7686
+ }
+//! [coord]
+
+ focus: true
+ map.onCopyrightLinkActivated: Qt.openUrlExternally(link)
+
+ map.onCenterChanged:{
+ scaleTimer.restart()
+ if (view.followme)
+ if (view.map.center != positionSource.position.coordinate) view.followme = false
+ }
+
+ map.onZoomLevelChanged:{
+ scaleTimer.restart()
+ if (view.followme) view.map.center = positionSource.position.coordinate
+ }
+
+ onWidthChanged:{
+ scaleTimer.restart()
+ }
+
+ onHeightChanged:{
+ scaleTimer.restart()
+ }
+
+ Component.onCompleted: {
+ markers = [];
+ mapItems = [];
+ }
+
+ Keys.onPressed: (event) => {
+ if (event.key === Qt.Key_Plus) {
+ view.map.zoomLevel++;
+ } else if (event.key === Qt.Key_Minus) {
+ view.map.zoomLevel--;
+ } else if (event.key === Qt.Key_Left || event.key === Qt.Key_Right ||
+ event.key === Qt.Key_Up || event.key === Qt.Key_Down) {
+ var dx = 0;
+ var dy = 0;
+
+ switch (event.key) {
+
+ case Qt.Key_Left: dx = view.map.width / 4; break;
+ case Qt.Key_Right: dx = -view.map.width / 4; break;
+ case Qt.Key_Up: dy = view.map.height / 4; break;
+ case Qt.Key_Down: dy = -view.map.height / 4; break;
+
+ }
+
+ var mapCenterPoint = Qt.point(view.map.width / 2.0 - dx, view.map.height / 2.0 - dy);
+ view.map.center = view.map.toCoordinate(mapCenterPoint);
+ }
+ }
+
+ PositionSource{
+ id: positionSource
+ active: followme
+
+ onPositionChanged: {
+ view.map.center = positionSource.position.coordinate
+ }
+ }
+
+ MapQuickItem {
+ id: mePoisition
+ parent: view.map
+ sourceItem: Rectangle { width: 14; height: 14; color: "#251ee4"; border.width: 2; border.color: "white"; smooth: true; radius: 7 }
+ coordinate: positionSource.position.coordinate
+ opacity: 1.0
+ anchorPoint: Qt.point(sourceItem.width/2, sourceItem.height/2)
+ visible: followme
+ }
+ MapQuickItem {
+ parent: view.map
+ sourceItem: Text{
+ text: qsTr("You're here!")
+ color:"#242424"
+ font.bold: true
+ styleColor: "#ECECEC"
+ style: Text.Outline
+ }
+ coordinate: positionSource.position.coordinate
+ anchorPoint: Qt.point(-mePoisition.sourceItem.width * 0.5, mePoisition.sourceItem.height * 1.5)
+ visible: followme
+ }
+
+
+ MapQuickItem {
+ id: poiTheQtComapny
+ parent: view.map
+ sourceItem: Rectangle { width: 14; height: 14; color: "#e41e25"; border.width: 2; border.color: "white"; smooth: true; radius: 7 }
+ coordinate {
+ latitude: 59.9485
+ longitude: 10.7686
+ }
+ opacity: 1.0
+ anchorPoint: Qt.point(sourceItem.width/2, sourceItem.height/2)
+ }
+
+ MapQuickItem {
+ parent: view.map
+ sourceItem: Text{
+ text: "The Qt Company"
+ color:"#242424"
+ font.bold: true
+ styleColor: "#ECECEC"
+ style: Text.Outline
+ }
+ coordinate: poiTheQtComapny.coordinate
+ anchorPoint: Qt.point(-poiTheQtComapny.sourceItem.width * 0.5, poiTheQtComapny.sourceItem.height * 1.5)
+ }
+
+ MapSliders {
+ id: sliders
+ z: view.map.z + 3
+ mapSource: map
+ edge: Qt.LeftEdge
+ }
+
+ Item {
+ id: scale
+ z: view.map.z + 3
+ visible: scaleText.text !== "0 m"
+ anchors.bottom: parent.bottom;
+ anchors.right: parent.right
+ anchors.margins: 20
+ height: scaleText.height * 2
+ width: scaleImage.width
+
+ Image {
+ id: scaleImageLeft
+ source: "../resources/scale_end.png"
+ anchors.bottom: parent.bottom
+ anchors.right: scaleImage.left
+ }
+ Image {
+ id: scaleImage
+ source: "../resources/scale.png"
+ anchors.bottom: parent.bottom
+ anchors.right: scaleImageRight.left
+ }
+ Image {
+ id: scaleImageRight
+ source: "../resources/scale_end.png"
+ anchors.bottom: parent.bottom
+ anchors.right: parent.right
+ }
+ Label {
+ id: scaleText
+ color: "#004EAE"
+ anchors.centerIn: parent
+ text: "0 m"
+ }
+ Component.onCompleted: {
+ view.calculateScale();
+ }
+ }
+
+ //! [routemodel0]
+ RouteModel {
+ id: routeModel
+ plugin : view.map.plugin
+ query: RouteQuery {
+ id: routeQuery
+ }
+ onStatusChanged: {
+ if (status == RouteModel.Ready) {
+ switch (count) {
+ case 0:
+ // technically not an error
+ view.routeError()
+ break
+ case 1:
+ view.showRouteList()
+ break
+ }
+ } else if (status == RouteModel.Error) {
+ view.routeError()
+ }
+ }
+ }
+ //! [routemodel0]
+
+ //! [routedelegate0]
+ Component {
+ id: routeDelegate
+
+ MapRoute {
+ id: route
+ route: routeData
+ line.color: "#46a2da"
+ line.width: 5
+ smooth: true
+ opacity: 0.8
+ //! [routedelegate0]
+ TapHandler {
+ acceptedButtons: Qt.LeftButton | Qt.RightButton
+ onLongPressed: showRouteMenu(view.map.toCoordinate(tapHandler.point.position))
+ onSingleTapped: (eventPoint, button) => {
+ if (button === Qt.RightButton)
+ showRouteMenu(view.map.toCoordinate(tapHandler.point.position))
+ }
+ }
+ }
+ }
+
+ //! [geocodemodel0]
+ GeocodeModel {
+ id: geocodeModel
+ plugin: view.map.plugin
+ onStatusChanged: {
+ if ((status == GeocodeModel.Ready) || (status == GeocodeModel.Error))
+ view.geocodeFinished()
+ }
+ onLocationsChanged:
+ {
+ if (count === 1) {
+ view.map.center.latitude = get(0).coordinate.latitude
+ view.map.center.longitude = get(0).coordinate.longitude
+ }
+ }
+ }
+ //! [geocodemodel0]
+
+ //! [pointdel0]
+ Component {
+ id: pointDelegate
+
+ MapQuickItem {
+ id: point
+ parent: view.map
+ coordinate: locationData.coordinate
+
+ sourceItem: Image {
+ id: pointMarker
+ source: "../resources/marker_blue.png"
+ //! [pointdel0]
+
+ Text{
+ id: pointText
+ anchors.bottom: pointMarker.top
+ anchors.horizontalCenter: pointMarker.horizontalCenter
+ text: locationData.address.street + ", " + locationData.address.city
+ color:"#242424"
+ font.bold: true
+ styleColor: "#ECECEC"
+ style: Text.Outline
+ }
+
+ }
+ smooth: true
+ autoFadeIn: false
+ anchorPoint.x: pointMarker.width/4
+ anchorPoint.y: pointMarker.height
+
+ TapHandler {
+ onLongPressed: showPointMenu(point.coordinate)
+ //! [pointdel1]
+ }
+ }
+ }
+ //! [pointdel1]
+
+ //! [routeview0]
+ MapItemView {
+ parent: view.map
+ model: routeModel
+ delegate: routeDelegate
+ //! [routeview0]
+ autoFitViewport: true
+ }
+
+ //! [geocodeview]
+ MapItemView {
+ parent: view.map
+ model: geocodeModel
+ delegate: pointDelegate
+ }
+ //! [geocodeview]
+
+ Timer {
+ id: scaleTimer
+ interval: 100
+ running: false
+ repeat: false
+ onTriggered: view.calculateScale()
+ }
+
+ TapHandler {
+ id: tapHandler
+ property variant lastCoordinate
+ acceptedButtons: Qt.LeftButton | Qt.RightButton
+
+ onPressedChanged: (eventPoint, button) => {
+ if (pressed) {
+ lastCoordinate = view.map.toCoordinate(tapHandler.point.position)
+ }
+ }
+
+ onSingleTapped: (eventPoint, button) => {
+ if (button === Qt.RightButton) {
+ showMainMenu(lastCoordinate)
+ }
+ }
+
+ onDoubleTapped: (eventPoint, button) => {
+ var preZoomPoint = view.map.toCoordinate(eventPoint.position);
+ if (button === Qt.LeftButton) {
+ view.map.zoomLevel = Math.floor(view.map.zoomLevel + 1)
+ } else if (button === Qt.RightButton) {
+ view.map.zoomLevel = Math.floor(view.map.zoomLevel - 1)
+ }
+ var postZoomPoint = view.map.toCoordinate(eventPoint.position);
+ var dx = postZoomPoint.latitude - preZoomPoint.latitude;
+ var dy = postZoomPoint.longitude - preZoomPoint.longitude;
+
+ view.map.center = QtPositioning.coordinate(view.map.center.latitude - dx,
+ view.map.center.longitude - dy);
+ }
+ }
+//! [end]
+}
+//! [end]
diff --git a/examples/location/mapviewer/MapViewer/map/MapSliders.qml b/examples/location/mapviewer/MapViewer/map/MapSliders.qml
new file mode 100644
index 000000000..d9c8381b0
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/map/MapSliders.qml
@@ -0,0 +1,282 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Row {
+ id: containerRow
+
+ property var mapSource
+ property real fontSize : 14
+ property color labelBackground : "transparent"
+ property int edge: Qt.RightEdge
+ property alias expanded: sliderToggler.checked
+
+ function rightEdge() {
+ return (containerRow.edge === Qt.RightEdge);
+ }
+
+ layoutDirection: rightEdge() ? Qt.LeftToRight : Qt.RightToLeft
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+ anchors.right: rightEdge() ? parent.right : undefined
+ anchors.left: rightEdge() ? undefined : parent.left
+
+ AbstractButton {
+ id: sliderToggler
+ width: 32
+ height: 96
+ checkable: true
+ checked: true
+ anchors.verticalCenter: parent.verticalCenter
+
+ transform: Scale {
+ origin.x: rightEdge() ? 0 : sliderToggler.width / 2
+ xScale: rightEdge() ? 1 : -1
+ }
+
+ background: Rectangle {
+ color: "transparent"
+ }
+
+
+ property real shear: 0.333
+ property real buttonOpacity: 0.5
+ property real mirror : rightEdge() ? 1.0 : -1.0
+
+ Rectangle {
+ width: 16
+ height: 48
+ color: "seagreen"
+ antialiasing: true
+ opacity: sliderToggler.buttonOpacity
+ anchors.top: parent.top
+ anchors.left: sliderToggler.checked ? parent.left : parent.horizontalCenter
+ transform: Matrix4x4 {
+ property real d : sliderToggler.checked ? 1.0 : -1.0
+ matrix: Qt.matrix4x4(1.0, d * sliderToggler.shear, 0.0, 0.0,
+ 0.0, 1.0, 0.0, 0.0,
+ 0.0, 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0, 1.0)
+ }
+ }
+
+ Rectangle {
+ width: 16
+ height: 48
+ color: "seagreen"
+ antialiasing: true
+ opacity: sliderToggler.buttonOpacity
+ anchors.top: parent.verticalCenter
+ anchors.right: sliderToggler.checked ? parent.right : parent.horizontalCenter
+ transform: Matrix4x4 {
+ property real d : sliderToggler.checked ? -1.0 : 1.0
+ matrix: Qt.matrix4x4(1.0, d * sliderToggler.shear, 0.0, 0.0,
+ 0.0, 1.0, 0.0, 0.0,
+ 0.0, 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0, 1.0)
+ }
+ }
+ }
+
+ Rectangle {
+ id: sliderContainer
+ height: parent.height
+ width: sliderRow.width + 10
+ visible: sliderToggler.checked
+ color: Qt.rgba( 0, 191 / 255.0, 255 / 255.0, 0.07)
+
+ property var labelBorderColor: "transparent"
+ property var slidersHeight : sliderContainer.height
+ - rowSliderValues.height
+ - rowSliderLabels.height
+ - sliderColumn.spacing * 2
+ - sliderColumn.topPadding
+ - sliderColumn.bottomPadding
+
+ Column {
+ id: sliderColumn
+ spacing: 10
+ topPadding: 16
+ bottomPadding: 48
+ anchors.centerIn: parent
+
+ // the sliders value labels
+ Row {
+ id: rowSliderValues
+ spacing: sliderRow.spacing
+ width: sliderRow.width
+ height: 32
+ property real entryWidth: zoomSlider.width
+
+ Rectangle{
+ color: labelBackground
+ height: parent.height
+ width: parent.entryWidth
+ border.color: sliderContainer.labelBorderColor
+ Label {
+ id: labelZoomValue
+ text: zoomSlider.value.toFixed(3)
+ font.pixelSize: fontSize
+ rotation: -90
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ color: labelBackground
+ height: parent.height
+ width: parent.entryWidth
+ border.color: sliderContainer.labelBorderColor
+ Label {
+ id: labelBearingValue
+ text: bearingSlider.value.toFixed(2)
+ font.pixelSize: fontSize
+ rotation: -90
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ color: labelBackground
+ height: parent.height
+ width: parent.entryWidth
+ border.color: sliderContainer.labelBorderColor
+ Label {
+ id: labelTiltValue
+ text: tiltSlider.value.toFixed(2)
+ font.pixelSize: fontSize
+ rotation: -90
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ color: labelBackground
+ height: parent.height
+ width: parent.entryWidth
+ border.color: sliderContainer.labelBorderColor
+ Label {
+ id: labelFovValue
+ text: fovSlider.value.toFixed(2)
+ font.pixelSize: fontSize
+ rotation: -90
+ anchors.centerIn: parent
+ }
+ }
+ } // rowSliderValues
+
+ // The sliders row
+ Row {
+ id: sliderRow
+ height: sliderContainer.slidersHeight
+
+ Slider {
+ id: zoomSlider
+ height: parent.height
+ orientation : Qt.Vertical
+ from : containerRow.mapSource.minimumZoomLevel
+ to : containerRow.mapSource.maximumZoomLevel
+ value : containerRow.mapSource.zoomLevel
+ onValueChanged: {
+ containerRow.mapSource.zoomLevel = value
+ }
+ }
+ Slider {
+ id: bearingSlider
+ height: parent.height
+ from: 0
+ to: 360
+ orientation : Qt.Vertical
+ value: containerRow.mapSource.bearing
+ onValueChanged: {
+ containerRow.mapSource.bearing = value;
+ }
+ }
+ Slider {
+ id: tiltSlider
+ height: parent.height
+ orientation : Qt.Vertical
+ from: containerRow.mapSource.minimumTilt;
+ to: containerRow.mapSource.maximumTilt
+ value: containerRow.mapSource.tilt
+ onValueChanged: {
+ containerRow.mapSource.tilt = value;
+ }
+ }
+ Slider {
+ id: fovSlider
+ height: parent.height
+ orientation : Qt.Vertical
+ from: containerRow.mapSource.minimumFieldOfView
+ to: containerRow.mapSource.maximumFieldOfView
+ value: containerRow.mapSource.fieldOfView
+ onValueChanged: {
+ containerRow.mapSource.fieldOfView = value;
+ }
+ }
+ } // Row sliders
+
+ // The labels row
+ Row {
+ id: rowSliderLabels
+ spacing: sliderRow.spacing
+ width: sliderRow.width
+ property real entryWidth: zoomSlider.width
+ property real entryHeight: 64
+
+ Rectangle{
+ color: labelBackground
+ height: parent.entryHeight
+ width: parent.entryWidth
+ border.color: sliderContainer.labelBorderColor
+ Label {
+ id: labelZoom
+ text: "Zoom"
+ font.pixelSize: fontSize
+ rotation: -90
+ anchors.centerIn: parent
+ }
+ }
+
+ Rectangle{
+ color: labelBackground
+ height: parent.entryHeight
+ width: parent.entryWidth
+ border.color: sliderContainer.labelBorderColor
+ Label {
+ id: labelBearing
+ text: "Bearing"
+ font.pixelSize: fontSize
+ rotation: -90
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ color: labelBackground
+ height: parent.entryHeight
+ width: parent.entryWidth
+ border.color: sliderContainer.labelBorderColor
+ Label {
+ id: labelTilt
+ text: "Tilt"
+ font.pixelSize: fontSize
+ rotation: -90
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ color: labelBackground
+ height: parent.entryHeight
+ width: parent.entryWidth
+ border.color: sliderContainer.labelBorderColor
+ Label {
+ id: labelFov
+ text: "FoV"
+ font.pixelSize: fontSize
+ rotation: -90
+ anchors.centerIn: parent
+ }
+ }
+ } // rowSliderLabels
+ } // Column
+ } // sliderContainer
+} // containerRow
diff --git a/examples/location/mapviewer/MapViewer/map/Marker.qml b/examples/location/mapviewer/MapViewer/map/Marker.qml
new file mode 100644
index 000000000..c7494cf57
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/map/Marker.qml
@@ -0,0 +1,64 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtLocation
+
+//! [mqi-top]
+MapQuickItem {
+ id: marker
+//! [mqi-top]
+
+//! [mqi-anchor]
+ anchorPoint.x: image.width/4
+ anchorPoint.y: image.height
+
+ HoverHandler {
+ id: hoverHandler
+ }
+ TapHandler {
+ id: tapHandler
+ acceptedButtons: Qt.RightButton
+ gesturePolicy: TapHandler.WithinBounds
+ onTapped: {
+ mapview.currentMarker = -1
+ for (var i = 0; i< mapview.markers.length; i++){
+ if (marker == mapview.markers[i]){
+ mapview.currentMarker = i
+ break
+ }
+ }
+ mapview.showMarkerMenu(marker.coordinate)
+ }
+ }
+ DragHandler {
+ id: dragHandler
+ grabPermissions: PointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType
+ }
+
+ sourceItem: Image {
+ id: image
+//! [mqi-anchor]
+ source: "../resources/marker.png"
+ opacity: hoverHandler.hovered ? 0.6 : 1.0
+
+ Text{
+ id: number
+ y: image.height/10
+ width: image.width
+ color: "white"
+ font.bold: true
+ font.pixelSize: 14
+ horizontalAlignment: Text.AlignHCenter
+ Component.onCompleted: {
+ text = mapview.markerCounter
+ }
+ }
+
+//! [mqi-closeimage]
+ }
+//! [mqi-closeimage]
+
+//! [mqi-close]
+}
+//! [mqi-close]
diff --git a/examples/location/mapviewer/MapViewer/map/MiniMap.qml b/examples/location/mapviewer/MapViewer/map/MiniMap.qml
new file mode 100644
index 000000000..f8fc51547
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/map/MiniMap.qml
@@ -0,0 +1,78 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtPositioning
+import QtLocation
+
+Rectangle{
+
+ function clamp(num, min, max)
+ {
+ return num < min ? min : num > max ? max : num;
+ }
+
+ function minimumScaleFactor()
+ {
+ var hscalefactor = (400.0 / Math.max(Math.min(mapview.width, 1000), 400)) * 0.5
+ var vscalefactor = (400.0 / Math.max(Math.min(mapview.height, 1000), 400)) * 0.5
+ return Math.min(hscalefactor,vscalefactor)
+ }
+
+ function avgScaleFactor()
+ {
+ var hscalefactor = (400.0 / Math.max(Math.min(mapview.width, 1000), 400)) * 0.5
+ var vscalefactor = (400.0 / Math.max(Math.min(mapview.height, 1000), 400)) * 0.5
+ return (hscalefactor+vscalefactor) * 0.5
+ }
+
+ id: miniMapRect
+ width: Math.floor(mapview.width * avgScaleFactor()) + 2
+ height: Math.floor(mapview.height * avgScaleFactor()) + 2
+ anchors.right: (parent) ? parent.right : undefined
+ anchors.rightMargin: 10
+ anchors.top: (parent) ? parent.top : undefined
+ anchors.topMargin: 10
+ color: "#242424"
+ Map {
+ id: miniMap
+ anchors.top: parent.top
+ anchors.topMargin: 1
+ anchors.left: parent.left
+ anchors.leftMargin: 1
+ width: Math.floor(mapview.width * avgScaleFactor())
+ height: Math.floor(mapview.height * avgScaleFactor())
+ zoomLevel: clamp(mapview.map.zoomLevel - 4.5, 1.0, 5.0) //(map.zoomLevel > minimumZoomLevel + 3) ? minimumZoomLevel + 3 : 1.5
+ center: mapview.map.center
+ plugin: mapview.map.plugin
+ copyrightsVisible: false
+ property double mapZoomLevel : mapview.map.zoomLevel
+
+ // cannot use property bindings on map.visibleRegion in MapRectangle because it's non-NOTIFYable
+ onCenterChanged: miniMapRectangle.updateCoordinates()
+ onMapZoomLevelChanged: miniMapRectangle.updateCoordinates()
+ onWidthChanged: miniMapRectangle.updateCoordinates()
+ onHeightChanged: miniMapRectangle.updateCoordinates()
+
+ MapRectangle {
+ id: miniMapRectangle
+ color: "#44ff0000"
+ border.width: 1
+ border.color: "red"
+ autoFadeIn: false
+
+ function getMapVisibleRegion()
+ {
+ return mapview.map.visibleRegion.boundingGeoRectangle()
+ }
+
+ function updateCoordinates()
+ {
+ topLeft.latitude = getMapVisibleRegion().topLeft.latitude
+ topLeft.longitude= getMapVisibleRegion().topLeft.longitude
+ bottomRight.latitude = getMapVisibleRegion().bottomRight.latitude
+ bottomRight.longitude= getMapVisibleRegion().bottomRight.longitude
+ }
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/menus/ItemPopupMenu.qml b/examples/location/mapviewer/MapViewer/menus/ItemPopupMenu.qml
new file mode 100644
index 000000000..d559aca6c
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/menus/ItemPopupMenu.qml
@@ -0,0 +1,19 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Menu {
+ property variant type
+ signal itemClicked(string item)
+
+ MenuItem {
+ text: qsTr("Info")
+ onTriggered: itemClicked("show" + type + "Info")
+ }
+ MenuItem {
+ text: qsTr("Delete")
+ onTriggered: itemClicked("delete" + type)
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/menus/MainMenu.qml b/examples/location/mapviewer/MapViewer/menus/MainMenu.qml
new file mode 100644
index 000000000..3523b5c1a
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/menus/MainMenu.qml
@@ -0,0 +1,122 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtLocation
+
+MenuBar {
+ id: menuBar
+ property variant providerMenu: providerMenu
+ property variant mapTypeMenu: mapTypeMenu
+ property variant toolsMenu: toolsMenu
+ property variant plugin
+ property alias isFollowMe: toolsMenu.isFollowMe
+ property alias isMiniMap: toolsMenu.isMiniMap
+
+ signal selectProvider(string providerName)
+ signal selectMapType(variant mapType)
+ signal selectTool(string tool);
+ signal toggleMapState(string state)
+
+ function clearMenu(menu)
+ {
+ while (menu.count)
+ menu.removeItem(menu.itemAt(0))
+ }
+
+ Menu {
+ id: providerMenu
+ title: qsTr("Provider")
+
+ function createMenu(plugins)
+ {
+ clearMenu(providerMenu)
+ for (var i = 0; i < plugins.length; i++) {
+ createProviderMenuItem(plugins[i]);
+ }
+ }
+
+ function createProviderMenuItem(provider)
+ {
+ var action = Qt.createQmlObject('import QtQuick.Controls; Action{ text: "' + provider + '"; checkable: true; onTriggered: function(){selectProvider("' + provider + '")} }', providerMenu)
+ addAction(action)
+ }
+ }
+
+ Menu {
+ id: mapTypeMenu
+ title: qsTr("MapType")
+
+ Component {
+ id: mapTypeMenuActionComponent
+ Action {
+
+ }
+ }
+ function createMenu(map)
+ {
+ clearMenu(mapTypeMenu)
+ for (var i = 0; i<map.supportedMapTypes.length; i++) {
+ createMapTypeMenuItem(map.supportedMapTypes[i], map.activeMapType === map.supportedMapTypes[i]);
+ }
+ }
+
+ function createMapTypeMenuItem(mapType, checked)
+ {
+ var action = mapTypeMenuActionComponent.createObject(mapTypeMenu, { text: mapType.name, checkable: true, checked: checked })
+ action.triggered.connect(function(){selectMapType(mapType)})
+ addAction(action)
+ }
+ }
+
+ Menu {
+ id: toolsMenu
+ property bool isFollowMe: false;
+ property bool isMiniMap: false;
+ property variant plugin: menuBar.plugin
+
+ title: qsTr("Tools")
+
+ Action {
+ text: qsTr("Reverse geocode")
+ enabled: plugin ? plugin.supportsGeocoding(Plugin.ReverseGeocodingFeature) : false
+ onTriggered: selectTool("RevGeocode")
+ }
+ MenuItem {
+ text: qsTr("Geocode")
+ enabled: plugin ? plugin.supportsGeocoding() : false
+ onTriggered: selectTool("Geocode")
+ }
+ MenuItem {
+ text: qsTr("Route with coordinates")
+ enabled: plugin ? plugin.supportsRouting() : false
+ onTriggered: selectTool("CoordinateRoute")
+ }
+ MenuItem {
+ text: qsTr("Route with address")
+ enabled: plugin ? plugin.supportsRouting() : false
+ onTriggered: selectTool("AddressRoute")
+ }
+ MenuItem {
+ text: isMiniMap ? qsTr("Hide minimap") : qsTr("Minimap")
+ onTriggered: toggleMapState("MiniMap")
+ }
+ MenuItem {
+ text: isFollowMe ? qsTr("Stop following") : qsTr("Follow me")
+ onTriggered: toggleMapState("FollowMe")
+ }
+ MenuItem {
+ text: qsTr("Language")
+ onTriggered: selectTool("Language")
+ }
+ MenuItem {
+ text: qsTr("Prefetch Map Data")
+ onTriggered: selectTool("Prefetch")
+ }
+ MenuItem {
+ text: qsTr("Clear Map Data")
+ onTriggered: selectTool("Clear")
+ }
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/menus/MapPopupMenu.qml b/examples/location/mapviewer/MapViewer/menus/MapPopupMenu.qml
new file mode 100644
index 000000000..335788df8
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/menus/MapPopupMenu.qml
@@ -0,0 +1,30 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Menu {
+ property variant coordinate
+ property int markersCount
+ property int mapItemsCount
+ signal itemClicked(string item)
+
+ MenuItem {
+ text: qsTr("Add Marker")
+ onTriggered: itemClicked("addMarker")
+ }
+ MenuItem {
+ text: qsTr("Get coordinate")
+ onTriggered: itemClicked("getCoordinate")
+ }
+ MenuItem {
+ text: qsTr("Fit Viewport To Markers")
+ onTriggered: itemClicked("fitViewport")
+ }
+ MenuItem {
+ text: qsTr("Delete all markers")
+ enabled: markersCount > 0
+ onTriggered: itemClicked("deleteMarkers")
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/menus/MarkerPopupMenu.qml b/examples/location/mapviewer/MapViewer/menus/MarkerPopupMenu.qml
new file mode 100644
index 000000000..338f23859
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/menus/MarkerPopupMenu.qml
@@ -0,0 +1,38 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Menu {
+ property int currentMarker
+ property int markersCount
+ signal itemClicked(string item)
+
+ MenuItem {
+ text: qsTr("Delete")
+ onTriggered: itemClicked("deleteMarker")
+ }
+ MenuItem {
+ text: qsTr("Coordinates")
+ onTriggered: itemClicked("getMarkerCoordinate")
+ }
+ MenuItem {
+ text: qsTr("Move to")
+ onTriggered: itemClicked("moveMarkerTo")
+ }
+ MenuItem {
+ text: currentMarker < markersCount-2 ? qsTr("Route to next markers")
+ : qsTr("Route to next marker")
+ enabled: currentMarker <= markersCount - 2
+ onTriggered: currentMarker < markersCount-2 ? itemClicked("routeToNextPoints")
+ : itemClicked("routeToNextPoint")
+ }
+ MenuItem {
+ text: currentMarker < markersCount-2 ? qsTr("Distance to next markers")
+ : qsTr("Distance to next marker")
+ enabled: currentMarker <= markersCount - 2
+ onTriggered: currentMarker < markersCount-2 ? itemClicked("distanceToNextPoints")
+ : itemClicked("distanceToNextPoint")
+ }
+}
diff --git a/examples/location/mapviewer/MapViewer/qmldir b/examples/location/mapviewer/MapViewer/qmldir
new file mode 100644
index 000000000..359ca02af
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/qmldir
@@ -0,0 +1,27 @@
+module MapViewer
+typeinfo mapviewer.qmltypes
+Main 1.0 Main.qml
+Helper 1.0 helper.js
+MapComponent 1.0 map/MapComponent.qml
+MapSliders 1.0 map/MapSliders.qml
+Marker 1.0 map/Marker.qml
+MiniMap 1.0 map/MiniMap.qml
+ItemPopupMenu 1.0 menus/ItemPopupMenu.qml
+MainMenu 1.0 menus/MainMenu.qml
+MapPopupMenu 1.0 menus/MapPopupMenu.qml
+MarkerPopupMenu 1.0 menus/MarkerPopupMenu.qml
+Geocode 1.0 forms/Geocode.qml
+GeocodeForm 1.0 forms/GeocodeForm.ui.qml
+Message 1.0 forms/Message.qml
+MessageForm 1.0 forms/MessageForm.ui.qml
+ReverseGeocode 1.0 forms/ReverseGeocode.qml
+ReverseGeocodeForm 1.0 forms/ReverseGeocodeForm.ui.qml
+RouteCoordinate 1.0 forms/RouteCoordinate.qml
+Locale 1.0 forms/Locale.qml
+LocaleForm 1.0 forms/LocaleForm.ui.qml
+RouteAddress 1.0 forms/RouteAddress.qml
+RouteAddressForm 1.0 forms/RouteAddressForm.ui.qml
+RouteCoordinateForm 1.0 forms/RouteCoordinateForm.ui.qml
+RouteList 1.0 forms/RouteList.qml
+RouteListDelegate 1.0 forms/RouteListDelegate.qml
+RouteListHeader 1.0 forms/RouteListHeader.qml
diff --git a/examples/location/mapviewer/MapViewer/resources/marker.png b/examples/location/mapviewer/MapViewer/resources/marker.png
new file mode 100644
index 000000000..2116dfdf5
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/resources/marker.png
Binary files differ
diff --git a/examples/location/mapviewer/MapViewer/resources/marker_blue.png b/examples/location/mapviewer/MapViewer/resources/marker_blue.png
new file mode 100644
index 000000000..70f0c2538
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/resources/marker_blue.png
Binary files differ
diff --git a/examples/location/mapviewer/MapViewer/resources/scale.png b/examples/location/mapviewer/MapViewer/resources/scale.png
new file mode 100644
index 000000000..c4f08122a
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/resources/scale.png
Binary files differ
diff --git a/examples/location/mapviewer/MapViewer/resources/scale_end.png b/examples/location/mapviewer/MapViewer/resources/scale_end.png
new file mode 100644
index 000000000..94510b125
--- /dev/null
+++ b/examples/location/mapviewer/MapViewer/resources/scale_end.png
Binary files differ
diff --git a/examples/location/mapviewer/doc/mapviewer.rst b/examples/location/mapviewer/doc/mapviewer.rst
new file mode 100644
index 000000000..418e2e77e
--- /dev/null
+++ b/examples/location/mapviewer/doc/mapviewer.rst
@@ -0,0 +1,14 @@
+Map Viewer Example
+==================
+
+.. tags:: Android
+
+The Map Viewer example shows how to display and interact with a map,
+search for an address, and find driving directions.
+
+This is a large example covering many basic uses of maps, positioning, and
+navigation services in Qt Location.
+
+.. image:: mapviewer.webp
+ :width: 400
+ :alt: Map Viewer Screenshot
diff --git a/examples/location/mapviewer/doc/mapviewer.webp b/examples/location/mapviewer/doc/mapviewer.webp
new file mode 100644
index 000000000..6571a6c89
--- /dev/null
+++ b/examples/location/mapviewer/doc/mapviewer.webp
Binary files differ
diff --git a/examples/location/mapviewer/main.py b/examples/location/mapviewer/main.py
new file mode 100644
index 000000000..24ae1623f
--- /dev/null
+++ b/examples/location/mapviewer/main.py
@@ -0,0 +1,75 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the location/mapviewer example from Qt v6.x"""
+
+import os
+import sys
+from pathlib import Path
+
+from PySide6.QtQml import QQmlApplicationEngine
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtNetwork import QSslSocket
+from PySide6.QtCore import QCoreApplication, QMetaObject, Q_ARG
+
+HELP = """Usage:
+plugin.<parameter_name> <parameter_value> - Sets parameter = value for plugin"""
+
+
+def parseArgs(args):
+ parameters = {}
+ while args:
+ param = args[0]
+ args = args[1:]
+ if param.startswith("--plugin."):
+ param = param[9:]
+ if not args or args[0].startswith("--"):
+ parameters[param] = True
+ else:
+ value = args[0]
+ args = args[1:]
+ if value in ("true", "on", "enabled"):
+ parameters[param] = True
+ elif value in ("false", "off", "disable"):
+ parameters[param] = False
+ else:
+ parameters[param] = value
+ return parameters
+
+
+if __name__ == "__main__":
+ additionalLibraryPaths = os.environ.get("QTLOCATION_EXTRA_LIBRARY_PATH")
+ if additionalLibraryPaths:
+ for p in additionalLibraryPaths.split(':'):
+ QCoreApplication.addLibraryPath(p)
+
+ application = QGuiApplication(sys.argv)
+ name = "QtLocation Mapviewer example"
+ QCoreApplication.setApplicationName(name)
+
+ args = sys.argv[1:]
+ if "--help" in args:
+ print(f"{name}\n\n{HELP}")
+ sys.exit(0)
+
+ parameters = parseArgs(args)
+ if not parameters.get("osm.useragent"):
+ parameters["osm.useragent"] = name
+
+ engine = QQmlApplicationEngine()
+ engine.rootContext().setContextProperty("supportsSsl",
+ QSslSocket.supportsSsl())
+ engine.addImportPath(Path(__file__).parent)
+ engine.loadFromModule("MapViewer", "Main")
+ engine.quit.connect(QCoreApplication.quit)
+
+ items = engine.rootObjects()
+ if not items:
+ sys.exit(-1)
+
+ QMetaObject.invokeMethod(items[0], "initializeProviders",
+ Q_ARG("QVariant", parameters))
+
+ ex = application.exec()
+ del engine
+ sys.exit(ex)
diff --git a/examples/location/mapviewer/mapviewer.pyproject b/examples/location/mapviewer/mapviewer.pyproject
new file mode 100644
index 000000000..8e2cadd2b
--- /dev/null
+++ b/examples/location/mapviewer/mapviewer.pyproject
@@ -0,0 +1,33 @@
+{
+ "files": ["main.py",
+ "MapViewer/forms/Geocode.qml",
+ "MapViewer/forms/GeocodeForm.ui.qml",
+ "MapViewer/forms/Locale.qml",
+ "MapViewer/forms/LocaleForm.ui.qml",
+ "MapViewer/forms/Message.qml",
+ "MapViewer/forms/MessageForm.ui.qml",
+ "MapViewer/forms/ReverseGeocode.qml",
+ "MapViewer/forms/ReverseGeocodeForm.ui.qml",
+ "MapViewer/forms/RouteAddress.qml",
+ "MapViewer/forms/RouteAddressForm.ui.qml",
+ "MapViewer/forms/RouteCoordinate.qml",
+ "MapViewer/forms/RouteCoordinateForm.ui.qml",
+ "MapViewer/forms/RouteList.qml",
+ "MapViewer/forms/RouteListDelegate.qml",
+ "MapViewer/forms/RouteListHeader.qml",
+ "MapViewer/map/MapComponent.qml",
+ "MapViewer/map/MapSliders.qml",
+ "MapViewer/map/Marker.qml",
+ "MapViewer/map/MiniMap.qml",
+ "MapViewer/menus/ItemPopupMenu.qml",
+ "MapViewer/menus/MainMenu.qml",
+ "MapViewer/menus/MapPopupMenu.qml",
+ "MapViewer/menus/MarkerPopupMenu.qml",
+ "MapViewer/resources/marker_blue.png",
+ "MapViewer/resources/marker.png",
+ "MapViewer/resources/scale_end.png",
+ "MapViewer/resources/scale.png",
+ "MapViewer/helper.js",
+ "MapViewer/Main.qml",
+ "MapViewer/qmldir"]
+}
diff --git a/examples/macextras/macpasteboardmime/macpasteboardmime.py b/examples/macextras/macpasteboardmime/macpasteboardmime.py
deleted file mode 100644
index 4e9cc7cc5..000000000
--- a/examples/macextras/macpasteboardmime/macpasteboardmime.py
+++ /dev/null
@@ -1,128 +0,0 @@
-
-############################################################################
-##
-## Copyright (C) 2017 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
-
-import sys
-from PySide6 import QtCore, QtWidgets
-
-try:
- from PySide6 import QtMacExtras
-except ImportError:
- app = QtWidgets.QApplication(sys.argv)
- messageBox = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Critical, "QtMacExtras macpasteboardmime",
- "This exampe only runs on macOS and QtMacExtras must be installed to run this example.",
- QtWidgets.QMessageBox.Close)
- messageBox.exec()
- sys.exit(1)
-
-
-class VCardMime(QtMacExtras.QMacPasteboardMime):
- def __init__(self, t=QtMacExtras.QMacPasteboardMime.MIME_ALL):
- super().__init__(t)
-
- def convertorName(self):
- return "VCardMime"
-
- def canConvert(self, mime, flav):
- if self.mimeFor(flav) == mime:
- return True
- else:
- return False
-
- def mimeFor(self, flav):
- if flav == "public.vcard":
- return "application/x-mycompany-VCard"
- else:
- return ""
-
- def flavorFor(self, mime):
- if mime == "application/x-mycompany-VCard":
- return "public.vcard"
- else:
- return ""
-
- def convertToMime(self, mime, data, flav):
- data_all = QtCore.QByteArray()
- for i in data:
- data_all += i
- return data_all
-
- def convertFromMime(mime, data, flav):
- # Todo: implement!
- return []
-
-
-class TestWidget(QtWidgets.QWidget):
- def __init__(self, parent=None):
- super().__init__(parent)
- self.vcardMime = VCardMime()
- self.setAcceptDrops(True)
-
- self.label1 = QtWidgets.QLabel()
- self.label2 = QtWidgets.QLabel()
-
- layout = QtWidgets.QVBoxLayout()
- layout.addWidget(self.label1)
- layout.addWidget(self.label2)
- self.setLayout(layout)
-
- self.label1.setText("Please drag a \"VCard\" from Contacts application, normally a name in the list, and drop here.")
-
- def dragEnterEvent(self, e):
- e.accept()
-
- def dropEvent(self, e):
- e.accept()
- self.contentsDropEvent(e)
-
- def contentsDropEvent(self, e):
- if e.mimeData().hasFormat("application/x-mycompany-VCard"):
- s = e.mimeData().data("application/x-mycompany-VCard")
- # s now contains text of vcard
- self.label2.setText(str(s))
- e.acceptProposedAction()
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- QtMacExtras.qRegisterDraggedTypes(["public.vcard"])
- wid1 = TestWidget()
- wid1.show()
- sys.exit(app.exec())
diff --git a/examples/macextras/macpasteboardmime/macpasteboardmime.pyproject b/examples/macextras/macpasteboardmime/macpasteboardmime.pyproject
deleted file mode 100644
index d559b7ca4..000000000
--- a/examples/macextras/macpasteboardmime/macpasteboardmime.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["macpasteboardmime.py"]
-}
diff --git a/examples/multimedia/audiooutput/audiooutput.py b/examples/multimedia/audiooutput/audiooutput.py
index d391af76e..06d52f68a 100644
--- a/examples/multimedia/audiooutput/audiooutput.py
+++ b/examples/multimedia/audiooutput/audiooutput.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the multimedia/audiooutput example from Qt v5.x, originating from PyQt"""
@@ -48,7 +10,7 @@ from struct import pack
from PySide6.QtCore import (QByteArray, QIODevice, Qt, QSysInfo, QTimer,
qWarning, Slot)
-from PySide6.QtMultimedia import (QAudio, QAudioDeviceInfo, QAudioFormat,
+from PySide6.QtMultimedia import (QAudio, QAudioFormat,
QAudioSink, QMediaDevices)
from PySide6.QtWidgets import (QApplication, QComboBox, QHBoxLayout, QLabel,
QMainWindow, QPushButton, QSlider,
@@ -78,24 +40,23 @@ class Generator(QIODevice):
sample_size = fmt.bytesPerSample() * 8
if sample_size == 8:
if fmt.sampleFormat() == QAudioFormat.UInt8:
- scaler = lambda x: ((1.0 + x) / 2 * 255)
+ scaler = lambda x: ((1.0 + x) / 2 * 255) # noqa: E731
pack_format = 'B'
elif fmt.sampleFormat() == QAudioFormat.Int16:
- scaler = lambda x: x * 127
+ scaler = lambda x: x * 127 # noqa: E731
pack_format = 'b'
elif sample_size == 16:
little_endian = QSysInfo.ByteOrder == QSysInfo.LittleEndian
if fmt.sampleFormat() == QAudioFormat.UInt8:
- scaler = lambda x: (1.0 + x) / 2 * 65535
+ scaler = lambda x: (1.0 + x) / 2 * 65535 # noqa: E731
pack_format = '<H' if little_endian else '>H'
elif fmt.sampleFormat() == QAudioFormat.Int16:
- scaler = lambda x: x * 32767
+ scaler = lambda x: x * 32767 # noqa: E731
pack_format = '<h' if little_endian else '>h'
- assert(pack_format != '')
+ assert pack_format != ''
channel_bytes = fmt.bytesPerSample()
- sample_bytes = fmt.channelCount() * channel_bytes
length = (fmt.sampleRate() * fmt.channelCount() * channel_bytes) * durationUs // 100000
@@ -171,16 +132,14 @@ class AudioTest(QMainWindow):
layout.addWidget(self.m_modeButton)
- self.m_suspendResumeButton = QPushButton(
- clicked=self.toggle_suspend_resume)
+ self.m_suspendResumeButton = QPushButton(clicked=self.toggle_suspend_resume)
self.m_suspendResumeButton.setText(self.SUSPEND_LABEL)
layout.addWidget(self.m_suspendResumeButton)
volume_box = QHBoxLayout()
volume_label = QLabel("Volume:")
- self.m_volumeSlider = QSlider(Qt.Horizontal, minimum=0, maximum=100,
- singleStep=10)
+ self.m_volumeSlider = QSlider(Qt.Horizontal, minimum=0, maximum=100, singleStep=10)
self.m_volumeSlider.valueChanged.connect(self.volume_changed)
volume_box.addWidget(volume_label)
@@ -205,8 +164,8 @@ class AudioTest(QMainWindow):
qWarning("Default format not supported - trying to use nearest")
self.m_format = info.nearestFormat(self.m_format)
- self.m_generator = Generator(self.m_format,
- self.DURATION_SECONDS * 1000000, self.TONE_SAMPLE_RATE_HZ, self)
+ self.m_generator = Generator(self.m_format, self.DURATION_SECONDS * 1000000,
+ self.TONE_SAMPLE_RATE_HZ, self)
self.create_audio_output()
@@ -218,11 +177,18 @@ class AudioTest(QMainWindow):
self.m_audioSink.start(self.m_generator)
self.m_volumeSlider.setValue(self.m_audioSink.volume() * 100)
- @Slot(int)
- def device_changed(self, index):
+ def closeEvent(self, e):
+ self.stop()
+ e.accept()
+
+ def stop(self):
self.m_pullTimer.stop()
self.m_generator.stop()
self.m_audioSink.stop()
+
+ @Slot(int)
+ def device_changed(self, index):
+ self.stop()
self.m_device = self.m_deviceBox.itemData(index)
self.create_audio_output()
@@ -289,7 +255,7 @@ class AudioTest(QMainWindow):
QAudio.StoppedState: "StoppedState",
QAudio.IdleState: "IdleState"}
- @Slot(QAudio.State)
+ @Slot("QAudio::State")
def handle_state_changed(self, state):
state = self.state_map.get(state, 'Unknown')
qWarning(f"state = {state}")
diff --git a/examples/multimedia/audiooutput/doc/audiooutput.rst b/examples/multimedia/audiooutput/doc/audiooutput.rst
index bbd71c5d8..fac7e33e1 100644
--- a/examples/multimedia/audiooutput/doc/audiooutput.rst
+++ b/examples/multimedia/audiooutput/doc/audiooutput.rst
@@ -1,6 +1,8 @@
Audio Output Example
====================
+.. tags:: Android
+
Audio Output demonstrates the basic use cases of QAudioOutput.
This example provides a tone generator to supply continuous audio playback. The
diff --git a/examples/multimedia/audiosource/audiosource.py b/examples/multimedia/audiosource/audiosource.py
new file mode 100644
index 000000000..a78beb584
--- /dev/null
+++ b/examples/multimedia/audiosource/audiosource.py
@@ -0,0 +1,227 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""
+PySide6 port of Qt6 example examples/multimedia/audiosources
+
+Audio Devices demonstrates how to create a simple application to list and test
+the configuration for the various audio devices available on the target device
+or desktop PC.
+
+Note: This Python example is not fully complete as compared to its C++ counterpart.
+Only the push mode works at the moment. For the pull mode to work, the class
+QIODevice have python bindings that needs to be fixed.
+"""
+import os
+import sys
+from typing import Optional
+
+import PySide6
+from PySide6.QtCore import QByteArray, QMargins, Qt, Slot, qWarning
+from PySide6.QtGui import QPainter, QPalette
+from PySide6.QtMultimedia import QAudio, QAudioDevice, QAudioFormat, QAudioSource, QMediaDevices
+from PySide6.QtWidgets import (QApplication, QComboBox, QPushButton, QSlider, QVBoxLayout,
+ QWidget, QLabel)
+
+is_android = os.environ.get('ANDROID_ARGUMENT')
+
+if is_android or sys.platform == "darwin":
+ from PySide6.QtCore import QMicrophonePermission
+
+
+class AudioInfo:
+ def __init__(self, format: QAudioFormat):
+ super().__init__()
+ self.m_format = format
+ self.m_level = 0.0
+
+ def calculate_level(self, data: bytes, length: int) -> float:
+ channel_bytes: int = int(self.m_format.bytesPerSample())
+ sample_bytes: int = int(self.m_format.bytesPerFrame())
+ num_samples: int = int(length / sample_bytes)
+
+ maxValue: float = 0
+ m_offset: int = 0
+
+ for i in range(num_samples):
+ for j in range(self.m_format.channelCount()):
+ value = 0
+ if len(data) > m_offset:
+ data_sample = data[m_offset:]
+ value = self.m_format.normalizedSampleValue(data_sample)
+ maxValue = max(value, maxValue)
+ m_offset = m_offset + channel_bytes
+
+ return maxValue
+
+
+class RenderArea(QWidget):
+ def __init__(self, parent: Optional[PySide6.QtWidgets.QWidget] = None) -> None:
+ super().__init__(parent=parent)
+ self.m_level = 0
+ self.setBackgroundRole(QPalette.Base)
+ self.setAutoFillBackground(True)
+ self.setMinimumHeight(30)
+ self.setMinimumWidth(200)
+
+ def set_level(self, value):
+ self.m_level = value
+ self.update()
+
+ def paintEvent(self, event: PySide6.QtGui.QPaintEvent) -> None:
+ with QPainter(self) as painter:
+ painter.setPen(Qt.black)
+ frame = painter.viewport() - QMargins(10, 10, 10, 10)
+
+ painter.drawRect(frame)
+
+ if self.m_level == 0.0:
+ return
+
+ pos: int = round((frame.width() - 1) * self.m_level)
+ painter.fillRect(
+ frame.left() + 1, frame.top() + 1, pos, frame.height() - 1, Qt.red
+ )
+
+
+class InputTest(QWidget):
+ def __init__(self) -> None:
+ super().__init__()
+ self.m_devices = QMediaDevices(self)
+ self.m_pullMode = False
+ self.initialize()
+
+ @Slot()
+ def initialize(self):
+ if is_android or sys.platform == "darwin":
+ is_nuitka = "__compiled__" in globals()
+ if not is_nuitka and sys.platform == "darwin":
+ print("This example does not work on macOS when Python is run in interpreted mode."
+ "For this example to work on macOS, package the example using pyside6-deploy"
+ "For more information, read `Notes for Developer` in the documentation")
+ sys.exit(0)
+ permission = QMicrophonePermission()
+ permission_status = qApp.checkPermission(permission) # noqa: F821
+ if permission_status == Qt.PermissionStatus.Undetermined:
+ qApp.requestPermission(permission, self, self.initialize) # noqa: F821
+ return
+ if permission_status == Qt.PermissionStatus.Denied:
+ qWarning("Microphone permission is not granted!")
+ self.initializeErrorWindow()
+ return
+ elif permission_status == Qt.PermissionStatus.Granted:
+ print("[AudioSource] Microphone permission granted")
+
+ self.initialize_window()
+ self.initialize_audio(QMediaDevices.defaultAudioInput())
+
+ def initialize_window(self):
+ self.layout = QVBoxLayout(self)
+
+ self.m_canvas = RenderArea(self)
+ self.layout.addWidget(self.m_canvas)
+
+ self.m_device_box = QComboBox(self)
+ default_device_info = QMediaDevices.defaultAudioInput()
+ self.m_device_box.addItem(
+ default_device_info.description(), default_device_info
+ )
+
+ for device_info in self.m_devices.audioInputs():
+ if device_info != default_device_info:
+ self.m_device_box.addItem(device_info.description(), device_info)
+
+ self.m_device_box.activated[int].connect(self.device_changed)
+ self.layout.addWidget(self.m_device_box)
+
+ self.m_volume_slider = QSlider(Qt.Horizontal, self)
+ self.m_volume_slider.setRange(0, 100)
+ self.m_volume_slider.setValue(100)
+ self.m_volume_slider.valueChanged.connect(self.slider_changed)
+ self.layout.addWidget(self.m_volume_slider)
+
+ self.m_mode_button = QPushButton(self)
+ self.m_mode_button.clicked.connect(self.toggle_mode)
+ self.layout.addWidget(self.m_mode_button)
+
+ self.m_suspend_resume_button = QPushButton(self)
+ self.m_suspend_resume_button.clicked.connect(self.toggle_suspend)
+ self.layout.addWidget(self.m_suspend_resume_button)
+
+ def initializeErrorWindow(self):
+ self.layout = QVBoxLayout(self)
+ error_label = QLabel(self.tr("Microphone permission is not granted!"))
+ error_label.setWordWrap(True)
+ error_label.setAlignment(Qt.AlignCenter)
+ self.layout.addWidget(error_label)
+
+ def initialize_audio(self, device_info: QAudioDevice):
+ format = QAudioFormat()
+ format.setSampleRate(8000)
+ format.setChannelCount(1)
+ format.setSampleFormat(QAudioFormat.Int16)
+
+ self.m_audio_info = AudioInfo(format)
+
+ self.m_audio_input = QAudioSource(device_info, format)
+ initial_volume = QAudio.convertVolume(
+ self.m_audio_input.volume(),
+ QAudio.LinearVolumeScale,
+ QAudio.LogarithmicVolumeScale,
+ )
+ self.m_volume_slider.setValue(int(round(initial_volume * 100)))
+ self.toggle_mode()
+
+ @Slot()
+ def toggle_mode(self):
+ self.m_audio_input.stop()
+ self.toggle_suspend()
+
+ self.m_mode_button.setText("Enable pull mode")
+ io = self.m_audio_input.start()
+
+ def push_mode_slot():
+ len = self.m_audio_input.bytesAvailable()
+ buffer_size = 4096
+ if len > buffer_size:
+ len = buffer_size
+ buffer: QByteArray = io.read(len)
+ if len > 0:
+ level = self.m_audio_info.calculate_level(buffer, len)
+ self.m_canvas.set_level(level)
+
+ io.readyRead.connect(push_mode_slot)
+
+ @Slot()
+ def toggle_suspend(self):
+ # toggle suspend/resume
+ state = self.m_audio_input.state()
+ if (state == QAudio.SuspendedState) or (state == QAudio.StoppedState):
+ self.m_audio_input.resume()
+ self.m_suspend_resume_button.setText("Suspend recording")
+ elif state == QAudio.ActiveState:
+ self.m_audio_input.suspend()
+ self.m_suspend_resume_button.setText("Resume recording")
+ # else no-op
+
+ @Slot(int)
+ def device_changed(self, index):
+ self.m_audio_input.stop()
+ self.m_audio_input.disconnect(self)
+ self.initialize_audio(self.m_device_box.itemData(index))
+
+ @Slot(int)
+ def slider_changed(self, value):
+ linearVolume = QAudio.convertVolume(
+ value / float(100), QAudio.LogarithmicVolumeScale, QAudio.LinearVolumeScale
+ )
+
+ self.m_audio_input.setVolume(linearVolume)
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ app.setApplicationName("Audio Sources Example")
+ input = InputTest()
+ input.show()
+ sys.exit(app.exec())
diff --git a/examples/multimedia/audiosource/audiosource.pyproject b/examples/multimedia/audiosource/audiosource.pyproject
new file mode 100644
index 000000000..c09e77303
--- /dev/null
+++ b/examples/multimedia/audiosource/audiosource.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["audiosource.py"]
+}
diff --git a/examples/multimedia/audiosource/doc/audiosource.png b/examples/multimedia/audiosource/doc/audiosource.png
new file mode 100644
index 000000000..cac183b75
--- /dev/null
+++ b/examples/multimedia/audiosource/doc/audiosource.png
Binary files differ
diff --git a/examples/multimedia/audiosource/doc/audiosource.rst b/examples/multimedia/audiosource/doc/audiosource.rst
new file mode 100644
index 000000000..3a247c503
--- /dev/null
+++ b/examples/multimedia/audiosource/doc/audiosource.rst
@@ -0,0 +1,13 @@
+Audio Source Example
+====================
+
+.. tags:: Android
+
+A Python application that demonstrates the analogous example in C++
+`Audio Source Example <https://doc-snapshots.qt.io/qt6-dev/qtmultimedia-multimedia-audiosource-example.html>`_
+
+
+.. image:: audiosource.png
+ :width: 400
+ :alt: audiosource example
+
diff --git a/examples/multimedia/camera/camera.py b/examples/multimedia/camera/camera.py
index cd1a460a0..fa379c807 100644
--- a/examples/multimedia/camera/camera.py
+++ b/examples/multimedia/camera/camera.py
@@ -1,210 +1,369 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 Multimedia Camera Example"""
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import os
import sys
-from PySide6.QtCore import QDate, QDir, QStandardPaths, Qt, QUrl, Slot
-from PySide6.QtGui import QAction, QGuiApplication, QDesktopServices, QIcon
-from PySide6.QtGui import QImage, QPixmap
-from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel,
- QMainWindow, QPushButton, QTabWidget, QToolBar, QVBoxLayout, QWidget)
-from PySide6.QtMultimedia import (QCamera, QCameraImageCapture,
- QCameraDevice, QMediaCaptureSession,
- QMediaDevices)
-from PySide6.QtMultimediaWidgets import QVideoWidget
-
-
-class ImageView(QWidget):
- def __init__(self, previewImage, fileName):
+from pathlib import Path
+
+from PySide6.QtMultimedia import (QAudioInput, QCamera, QCameraDevice,
+ QImageCapture, QMediaCaptureSession,
+ QMediaDevices, QMediaMetaData,
+ QMediaRecorder)
+from PySide6.QtWidgets import QDialog, QMainWindow, QMessageBox
+from PySide6.QtGui import QAction, QActionGroup, QIcon, QImage, QPixmap
+from PySide6.QtCore import QDateTime, QDir, QTimer, Qt, Slot, qWarning
+
+from metadatadialog import MetaDataDialog
+from imagesettings import ImageSettings
+from videosettings import VideoSettings, is_android
+
+if is_android or sys.platform == "darwin":
+ from PySide6.QtCore import QMicrophonePermission, QCameraPermission
+
+if is_android:
+ from ui_camera_mobile import Ui_Camera
+else:
+ from ui_camera import Ui_Camera
+
+
+class Camera(QMainWindow):
+ def __init__(self):
super().__init__()
- self._file_name = fileName
+ self._video_devices_group = None
+ self.m_devices = QMediaDevices()
+ self.m_imageCapture = None
+ self.m_captureSession = QMediaCaptureSession()
+ self.m_camera = None
+ self.m_mediaRecorder = None
+
+ self.m_isCapturingImage = False
+ self.m_applicationExiting = False
+ self.m_doImageCapture = True
+
+ self.m_metaDataDialog = None
+
+ self._ui = Ui_Camera()
+ self._ui.setupUi(self)
+ image = Path(__file__).parent / "shutter.svg"
+ self._ui.takeImageButton.setIcon(QIcon(os.fspath(image)))
+ if not is_android:
+ self._ui.actionAbout_Qt.triggered.connect(qApp.aboutQt) # noqa: F821
+
+ # disable all buttons by default
+ self.updateCameraActive(False)
+ self.readyForCapture(False)
+ self._ui.recordButton.setEnabled(False)
+ self._ui.pauseButton.setEnabled(False)
+ self._ui.stopButton.setEnabled(False)
+ self._ui.metaDataButton.setEnabled(False)
+
+ # try to actually initialize camera & mic
+ self.initialize()
+
+ @Slot()
+ def initialize(self):
+ if is_android or sys.platform == "darwin":
+ is_nuitka = "__compiled__" in globals()
+ if not is_nuitka and sys.platform == "darwin":
+ print("This example does not work on macOS when Python is run in interpreted mode."
+ "For this example to work on macOS, package the example using pyside6-deploy"
+ "For more information, read `Notes for Developer` in the documentation")
+ sys.exit(0)
+
+ # camera
+ cam_permission = QCameraPermission()
+ cam_permission_status = qApp.checkPermission(cam_permission) # noqa: F821
+ if cam_permission_status == Qt.PermissionStatus.Undetermined:
+ qApp.requestPermission(cam_permission, self, self.initialize) # noqa: F821
+ return
+ if cam_permission_status == Qt.PermissionStatus.Denied:
+ qWarning("Camera permission is not granted!")
+ return
+ elif cam_permission_status == Qt.PermissionStatus.Granted:
+ print("[AudioSource] Camera permission granted")
+
+ # microphone
+ microphone_permission = QMicrophonePermission()
+ microphone_permission_status = qApp.checkPermission(microphone_permission) # noqa: F821
+ if microphone_permission_status == Qt.PermissionStatus.Undetermined:
+ qApp.requestPermission(microphone_permission, self, self.initialize) # noqa: F821
+ return
+ if microphone_permission_status == Qt.PermissionStatus.Denied:
+ qWarning("Microphone permission is not granted!")
+ self.initializeErrorWindow()
+ return
+ elif microphone_permission_status == Qt.PermissionStatus.Granted:
+ print("[AudioSource] Microphone permission granted")
+
+ self.m_audioInput = QAudioInput()
+ self.m_captureSession.setAudioInput(self.m_audioInput)
+
+ # Camera devices
+
+ self._video_devices_group = QActionGroup(self)
+ self._video_devices_group.setExclusive(True)
+ self.updateCameras()
+ self.m_devices.videoInputsChanged.connect(self.updateCameras)
+
+ self._video_devices_group.triggered.connect(self.updateCameraDevice)
+ self._ui.captureWidget.currentChanged.connect(self.updateCaptureMode)
+
+ self._ui.metaDataButton.clicked.connect(self.showMetaDataDialog)
+ self._ui.exposureCompensation.valueChanged.connect(self.setExposureCompensation)
+
+ self.setCamera(QMediaDevices.defaultVideoInput())
+
+ @Slot(QCameraDevice)
+ def setCamera(self, cameraDevice):
+ self.m_camera = QCamera(cameraDevice)
+ self.m_captureSession.setCamera(self.m_camera)
+
+ self.m_camera.activeChanged.connect(self.updateCameraActive)
+ self.m_camera.errorOccurred.connect(self.displayCameraError)
+
+ if not self.m_mediaRecorder:
+ self.m_mediaRecorder = QMediaRecorder()
+ self.m_captureSession.setRecorder(self.m_mediaRecorder)
+ self.m_mediaRecorder.recorderStateChanged.connect(self.updateRecorderState)
+ self.m_mediaRecorder.durationChanged.connect(self.updateRecordTime)
+ self.m_mediaRecorder.errorChanged.connect(self.displayRecorderError)
+
+ if not self.m_imageCapture:
+ self.m_imageCapture = QImageCapture()
+ self.m_captureSession.setImageCapture(self.m_imageCapture)
+ self.m_imageCapture.readyForCaptureChanged.connect(self.readyForCapture)
+ self.m_imageCapture.imageCaptured.connect(self.processCapturedImage)
+ self.m_imageCapture.imageSaved.connect(self.imageSaved)
+ self.m_imageCapture.errorOccurred.connect(self.displayCaptureError)
+
+ self.m_captureSession.setVideoOutput(self._ui.viewfinder)
+
+ self.updateCameraActive(self.m_camera.isActive())
+ self.updateRecorderState(self.m_mediaRecorder.recorderState())
+ self.readyForCapture(self.m_imageCapture.isReadyForCapture())
+
+ self.updateCaptureMode()
+
+ self.m_camera.start()
+
+ def keyPressEvent(self, event):
+ if event.isAutoRepeat():
+ return
+
+ key = event.key()
+ if key == Qt.Key_CameraFocus:
+ self.displayViewfinder()
+ event.accept()
+ elif key == Qt.Key_Camera:
+ if self.m_doImageCapture:
+ self.takeImage()
+ else:
+ if self.m_mediaRecorder.recorderState() == QMediaRecorder.RecordingState:
+ self.stop()
+ else:
+ self.record()
+
+ event.accept()
+ else:
+ super().keyPressEvent(event)
+
+ @Slot()
+ def updateRecordTime(self):
+ d = self.m_mediaRecorder.duration() / 1000
+ self._ui.statusbar.showMessage(f"Recorded {d} sec")
+
+ @Slot(int, QImage)
+ def processCapturedImage(self, requestId, img):
+ scaled_image = img.scaled(self._ui.viewfinder.size(), Qt.KeepAspectRatio,
+ Qt.SmoothTransformation)
- main_layout = QVBoxLayout(self)
- self._image_label = QLabel()
- self._image_label.setPixmap(QPixmap.fromImage(previewImage))
- main_layout.addWidget(self._image_label)
+ self._ui.lastImagePreviewLabel.setPixmap(QPixmap.fromImage(scaled_image))
- top_layout = QHBoxLayout()
- self._file_name_label = QLabel(QDir.toNativeSeparators(fileName))
- self._file_name_label.setTextInteractionFlags(Qt.TextBrowserInteraction)
+ # Display captured image for 4 seconds.
+ self.displayCapturedImage()
+ QTimer.singleShot(4000, self.displayViewfinder)
- top_layout.addWidget(self._file_name_label)
- top_layout.addStretch()
- copy_button = QPushButton("Copy")
- copy_button.setToolTip("Copy file name to clipboard")
- top_layout.addWidget(copy_button)
- copy_button.clicked.connect(self.copy)
- launch_button = QPushButton("Launch")
- launch_button.setToolTip("Launch image viewer")
- top_layout.addWidget(launch_button)
- launch_button.clicked.connect(self.launch)
- main_layout.addLayout(top_layout)
+ @Slot()
+ def configureCaptureSettings(self):
+ if self.m_doImageCapture:
+ self.configureImageSettings()
+ else:
+ self.configureVideoSettings()
@Slot()
- def copy(self):
- QGuiApplication.clipboard().setText(self._file_name_label.text())
+ def configureVideoSettings(self):
+ settings_dialog = VideoSettings(self.m_mediaRecorder)
+
+ if settings_dialog.exec():
+ settings_dialog.apply_settings()
@Slot()
- def launch(self):
- QDesktopServices.openUrl(QUrl.fromLocalFile(self._file_name))
+ def configureImageSettings(self):
+ settings_dialog = ImageSettings(self.m_imageCapture)
+ if settings_dialog.exec():
+ settings_dialog.apply_image_settings()
-class MainWindow(QMainWindow):
- def __init__(self):
- super().__init__()
+ @Slot()
+ def record(self):
+ self.m_mediaRecorder.record()
+ self.updateRecordTime()
- self._capture_session = None
- self._camera = None
- self._camera_info = None
- self._image_capture = None
+ @Slot()
+ def pause(self):
+ self.m_mediaRecorder.pause()
- available_cameras = QMediaDevices.videoInputs()
- if available_cameras:
- self._camera_info = available_cameras[0]
- self._camera = QCamera(self._camera_info)
- self._camera.errorOccurred.connect(self._camera_error)
- self._image_capture = QCameraImageCapture(self._camera)
- self._image_capture.imageCaptured.connect(self.image_captured)
- self._image_capture.imageSaved.connect(self.image_saved)
- self._image_capture.errorOccurred.connect(self._capture_error)
- self._capture_session = QMediaCaptureSession()
- self._capture_session.setCamera(self._camera)
- self._capture_session.setImageCapture(self._image_capture)
-
- self._current_preview = QImage()
-
- tool_bar = QToolBar()
- self.addToolBar(tool_bar)
-
- file_menu = self.menuBar().addMenu("&File")
- shutter_icon = QIcon(os.path.join(os.path.dirname(__file__),
- "shutter.svg"))
- self._take_picture_action = QAction(shutter_icon, "&Take Picture", self,
- shortcut="Ctrl+T",
- triggered=self.take_picture)
- self._take_picture_action.setToolTip("Take Picture")
- file_menu.addAction(self._take_picture_action)
- tool_bar.addAction(self._take_picture_action)
-
- exit_action = QAction(QIcon.fromTheme("application-exit"), "E&xit",
- self, shortcut="Ctrl+Q", triggered=self.close)
- file_menu.addAction(exit_action)
-
- about_menu = self.menuBar().addMenu("&About")
- about_qt_action = QAction("About &Qt", self, triggered=qApp.aboutQt)
- about_menu.addAction(about_qt_action)
-
- self._tab_widget = QTabWidget()
- self.setCentralWidget(self._tab_widget)
-
- self._camera_viewfinder = QVideoWidget()
- self._tab_widget.addTab(self._camera_viewfinder, "Viewfinder")
-
- if self._camera and self._camera.status() != QCamera.UnavailableStatus:
- name = self._camera_info.description()
- self.setWindowTitle(f"PySide6 Camera Example ({name})")
- self.show_status_message(f"Starting: '{name}'")
- self._capture_session.setVideoOutput(self._camera_viewfinder)
- self._take_picture_action.setEnabled(self._image_capture.isReadyForCapture())
- self._image_capture.readyForCaptureChanged.connect(self._take_picture_action.setEnabled)
- self._camera.start()
+ @Slot()
+ def stop(self):
+ self.m_mediaRecorder.stop()
+
+ @Slot(bool)
+ def setMuted(self, muted):
+ self.m_captureSession.audioInput().setMuted(muted)
+
+ @Slot()
+ def takeImage(self):
+ self.m_isCapturingImage = True
+ self.m_imageCapture.captureToFile()
+
+ @Slot(int, QImageCapture.Error, str)
+ def displayCaptureError(self, id, error, errorString):
+ QMessageBox.warning(self, "Image Capture Error", errorString)
+ self.m_isCapturingImage = False
+
+ @Slot()
+ def startCamera(self):
+ self.m_camera.start()
+
+ @Slot()
+ def stopCamera(self):
+ self.m_camera.stop()
+
+ @Slot()
+ def updateCaptureMode(self):
+ tab_index = self._ui.captureWidget.currentIndex()
+ self.m_doImageCapture = (tab_index == 0)
+
+ @Slot(bool)
+ def updateCameraActive(self, active):
+ if active:
+ self._ui.actionStartCamera.setEnabled(False)
+ self._ui.actionStopCamera.setEnabled(True)
+ self._ui.captureWidget.setEnabled(True)
+ self._ui.actionSettings.setEnabled(True)
else:
- self.setWindowTitle("PySide6 Camera Example")
- self._take_picture_action.setEnabled(False)
- self.show_status_message("Camera unavailable")
+ self._ui.actionStartCamera.setEnabled(True)
+ self._ui.actionStopCamera.setEnabled(False)
+ self._ui.captureWidget.setEnabled(False)
+ self._ui.actionSettings.setEnabled(False)
+
+ @Slot(QMediaRecorder.RecorderState)
+ def updateRecorderState(self, state):
+ if state == QMediaRecorder.StoppedState:
+ self._ui.recordButton.setEnabled(True)
+ self._ui.pauseButton.setEnabled(True)
+ self._ui.stopButton.setEnabled(False)
+ self._ui.metaDataButton.setEnabled(True)
+ elif state == QMediaRecorder.PausedState:
+ self._ui.recordButton.setEnabled(True)
+ self._ui.pauseButton.setEnabled(False)
+ self._ui.stopButton.setEnabled(True)
+ self._ui.metaDataButton.setEnabled(False)
+ elif state == QMediaRecorder.RecordingState:
+ self._ui.recordButton.setEnabled(False)
+ self._ui.pauseButton.setEnabled(True)
+ self._ui.stopButton.setEnabled(True)
+ self._ui.metaDataButton.setEnabled(False)
+
+ @Slot(int)
+ def setExposureCompensation(self, index):
+ self.m_camera.setExposureCompensation(index * 0.5)
+
+ @Slot()
+ def displayRecorderError(self):
+ if self.m_mediaRecorder.error() != QMediaRecorder.NoError:
+ QMessageBox.warning(self, "Capture Error",
+ self.m_mediaRecorder.errorString())
- def show_status_message(self, message):
- self.statusBar().showMessage(message, 5000)
+ @Slot()
+ def displayCameraError(self):
+ if self.m_camera.error() != QCamera.NoError:
+ QMessageBox.warning(self, "Camera Error",
+ self.m_camera.errorString())
- def closeEvent(self, event):
- if self._camera and self._camera.status() == QCamera.ActiveStatus:
- self._camera.stop()
- event.accept()
-
- def next_image_file_name(self):
- pictures_location = QStandardPaths.writableLocation(QStandardPaths.PicturesLocation)
- date_string = QDate.currentDate().toString("yyyyMMdd")
- pattern = f"{pictures_location}/pyside6_camera_{date_string}_{{:03d}}.jpg"
- n = 1
- while True:
- result = pattern.format(n)
- if not os.path.exists(result):
- return result
- n = n + 1
- return None
-
- @Slot()
- def take_picture(self):
- self._current_preview = QImage()
- self._image_capture.captureToFile(self.next_image_file_name())
+ @Slot(QAction)
+ def updateCameraDevice(self, action):
+ self.setCamera(QCameraDevice(action))
- @Slot(int, QImage)
- def image_captured(self, id, previewImage):
- self._current_preview = previewImage
+ @Slot()
+ def displayViewfinder(self):
+ self._ui.stackedWidget.setCurrentIndex(0)
+
+ @Slot()
+ def displayCapturedImage(self):
+ self._ui.stackedWidget.setCurrentIndex(1)
+
+ @Slot(bool)
+ def readyForCapture(self, ready):
+ self._ui.takeImageButton.setEnabled(ready)
@Slot(int, str)
- def image_saved(self, id, fileName):
- index = self._tab_widget.count()
- image_view = ImageView(self._current_preview, fileName)
- self._tab_widget.addTab(image_view, f"Capture #{index}")
- self._tab_widget.setCurrentIndex(index)
-
- @Slot(int, QCameraImageCapture.Error, str)
- def _capture_error(self, id, error, error_string):
- print(error_string, file=sys.stderr)
- self.show_status_message(error_string)
-
- @Slot(QCamera.Error, str)
- def _camera_error(self, error, error_string):
- print(error_string, file=sys.stderr)
- self.show_status_message(error_string)
-
-
-if __name__ == '__main__':
- app = QApplication(sys.argv)
- main_win = MainWindow()
- available_geometry = main_win.screen().availableGeometry()
- main_win.resize(available_geometry.width() / 3, available_geometry.height() / 2)
- main_win.show()
- sys.exit(app.exec())
+ def imageSaved(self, id, fileName):
+ f = QDir.toNativeSeparators(fileName)
+ self._ui.statusbar.showMessage(f"Captured \"{f}\"")
+
+ self.m_isCapturingImage = False
+ if self.m_applicationExiting:
+ self.close()
+
+ def closeEvent(self, event):
+ if self.m_isCapturingImage:
+ self.setEnabled(False)
+ self.m_applicationExiting = True
+ event.ignore()
+ else:
+ event.accept()
+
+ @Slot()
+ def updateCameras(self):
+ self._ui.menuDevices.clear()
+ available_cameras = QMediaDevices.videoInputs()
+ for cameraDevice in available_cameras:
+ video_device_action = QAction(cameraDevice.description(),
+ self._video_devices_group)
+ video_device_action.setCheckable(True)
+ video_device_action.setData(cameraDevice)
+ if cameraDevice == QMediaDevices.defaultVideoInput():
+ video_device_action.setChecked(True)
+
+ self._ui.menuDevices.addAction(video_device_action)
+
+ @Slot()
+ def showMetaDataDialog(self):
+ if not self.m_metaDataDialog:
+ self.m_metaDataDialog = MetaDataDialog(self)
+ self.m_metaDataDialog.setAttribute(Qt.WA_DeleteOnClose, False)
+ if self.m_metaDataDialog.exec() == QDialog.Accepted:
+ self.saveMetaData()
+
+ @Slot()
+ def saveMetaData(self):
+ data = QMediaMetaData()
+ for i in range(0, QMediaMetaData.NumMetaData):
+ val = self.m_metaDataDialog.m_metaDataFields[i].text()
+ if val:
+ key = QMediaMetaData.Key(i)
+ if key == QMediaMetaData.CoverArtImage:
+ cover_art = QImage(val)
+ data.insert(key, cover_art)
+ elif key == QMediaMetaData.ThumbnailImage:
+ thumbnail = QImage(val)
+ data.insert(key, thumbnail)
+ elif key == QMediaMetaData.Date:
+ date = QDateTime.fromString(val)
+ data.insert(key, date)
+ else:
+ data.insert(key, val)
+
+ self.m_mediaRecorder.setMetaData(data)
diff --git a/examples/multimedia/camera/camera.pyproject b/examples/multimedia/camera/camera.pyproject
index ffc6a11ed..9067b1dfa 100644
--- a/examples/multimedia/camera/camera.pyproject
+++ b/examples/multimedia/camera/camera.pyproject
@@ -1,3 +1,12 @@
{
- "files": ["camera.py"]
+ "files": ["main.py",
+ "camera.py",
+ "camera.ui",
+ "camera_mobile.ui",
+ "imagesettings.py",
+ "imagesettings.ui",
+ "metadatadialog.py",
+ "videosettings.py",
+ "videosettings.ui",
+ "videosettings_mobile.ui"]
}
diff --git a/examples/multimedia/camera/camera.ui b/examples/multimedia/camera/camera.ui
new file mode 100644
index 000000000..4584e909c
--- /dev/null
+++ b/examples/multimedia/camera/camera.ui
@@ -0,0 +1,497 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Camera</class>
+ <widget class="QMainWindow" name="Camera">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>668</width>
+ <height>429</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Camera</string>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="1" column="1" colspan="2">
+ <widget class="QTabWidget" name="captureWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="tab_2">
+ <attribute name="title">
+ <string>Image</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="3" column="0">
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>161</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="0">
+ <widget class="QPushButton" name="takeImageButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Capture Photo</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QSlider" name="exposureCompensation">
+ <property name="minimum">
+ <number>-4</number>
+ </property>
+ <property name="maximum">
+ <number>4</number>
+ </property>
+ <property name="pageStep">
+ <number>2</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksAbove</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Exposure Compensation:</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab">
+ <attribute name="title">
+ <string>Video</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QPushButton" name="recordButton">
+ <property name="text">
+ <string>Record</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="pauseButton">
+ <property name="text">
+ <string>Pause</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QPushButton" name="stopButton">
+ <property name="text">
+ <string>Stop</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>76</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="4" column="0">
+ <widget class="QPushButton" name="muteButton">
+ <property name="text">
+ <string>Mute</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QPushButton" name="metaDataButton">
+ <property name="text">
+ <string>Set metadata</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ <item row="0" column="0" rowspan="2">
+ <widget class="QStackedWidget" name="stackedWidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>1</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="palette">
+ <palette>
+ <active>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>145</red>
+ <green>145</green>
+ <blue>145</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </active>
+ <inactive>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>145</red>
+ <green>145</green>
+ <blue>145</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </inactive>
+ <disabled>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>145</red>
+ <green>145</green>
+ <blue>145</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>145</red>
+ <green>145</green>
+ <blue>145</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </disabled>
+ </palette>
+ </property>
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="viewfinderPage">
+ <layout class="QGridLayout" name="gridLayout_5">
+ <item row="0" column="0">
+ <widget class="QVideoWidget" name="viewfinder" native="true"/>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="previewPage">
+ <layout class="QGridLayout" name="gridLayout_4">
+ <item row="0" column="0">
+ <widget class="QLabel" name="lastImagePreviewLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menubar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>668</width>
+ <height>19</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menuFile">
+ <property name="title">
+ <string>File</string>
+ </property>
+ <addaction name="actionStartCamera"/>
+ <addaction name="actionStopCamera"/>
+ <addaction name="separator"/>
+ <addaction name="actionSettings"/>
+ <addaction name="separator"/>
+ <addaction name="actionExit"/>
+ </widget>
+ <widget class="QMenu" name="menuDevices">
+ <property name="title">
+ <string>Devices</string>
+ </property>
+ </widget>
+ <widget class="QMenu" name="menuHelp">
+ <property name="title">
+ <string>Help</string>
+ </property>
+ <addaction name="actionAbout_Qt"/>
+ </widget>
+ <addaction name="menuFile"/>
+ <addaction name="menuDevices"/>
+ <addaction name="menuHelp"/>
+ </widget>
+ <widget class="QStatusBar" name="statusbar"/>
+ <action name="actionExit">
+ <property name="text">
+ <string>Quit</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+Q</string>
+ </property>
+ </action>
+ <action name="actionStartCamera">
+ <property name="text">
+ <string>Start Camera</string>
+ </property>
+ </action>
+ <action name="actionStopCamera">
+ <property name="text">
+ <string>Stop Camera</string>
+ </property>
+ </action>
+ <action name="actionSettings">
+ <property name="text">
+ <string>Change Settings</string>
+ </property>
+ </action>
+ <action name="actionAbout_Qt">
+ <property name="text">
+ <string>About Qt</string>
+ </property>
+ </action>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>QVideoWidget</class>
+ <extends>QWidget</extends>
+ <header>qvideowidget.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>recordButton</sender>
+ <signal>clicked()</signal>
+ <receiver>Camera</receiver>
+ <slot>record()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>647</x>
+ <y>149</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>61</x>
+ <y>238</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>stopButton</sender>
+ <signal>clicked()</signal>
+ <receiver>Camera</receiver>
+ <slot>stop()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>647</x>
+ <y>225</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>140</x>
+ <y>236</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>pauseButton</sender>
+ <signal>clicked()</signal>
+ <receiver>Camera</receiver>
+ <slot>pause()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>647</x>
+ <y>187</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>234</x>
+ <y>237</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>actionExit</sender>
+ <signal>triggered()</signal>
+ <receiver>Camera</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>-1</x>
+ <y>-1</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>154</x>
+ <y>130</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>takeImageButton</sender>
+ <signal>clicked()</signal>
+ <receiver>Camera</receiver>
+ <slot>takeImage()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>625</x>
+ <y>132</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>603</x>
+ <y>169</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>muteButton</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>Camera</receiver>
+ <slot>setMuted(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>647</x>
+ <y>377</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>5</x>
+ <y>280</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>exposureCompensation</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>Camera</receiver>
+ <slot>setExposureCompensation(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>559</x>
+ <y>367</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>665</x>
+ <y>365</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>actionSettings</sender>
+ <signal>triggered()</signal>
+ <receiver>Camera</receiver>
+ <slot>configureCaptureSettings()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>-1</x>
+ <y>-1</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>333</x>
+ <y>210</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>actionStartCamera</sender>
+ <signal>triggered()</signal>
+ <receiver>Camera</receiver>
+ <slot>startCamera()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>-1</x>
+ <y>-1</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>333</x>
+ <y>210</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>actionStopCamera</sender>
+ <signal>triggered()</signal>
+ <receiver>Camera</receiver>
+ <slot>stopCamera()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>-1</x>
+ <y>-1</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>333</x>
+ <y>210</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+ <slots>
+ <slot>record()</slot>
+ <slot>pause()</slot>
+ <slot>stop()</slot>
+ <slot>enablePreview(bool)</slot>
+ <slot>configureCaptureSettings()</slot>
+ <slot>takeImage()</slot>
+ <slot>startCamera()</slot>
+ <slot>toggleLock()</slot>
+ <slot>setMuted(bool)</slot>
+ <slot>stopCamera()</slot>
+ <slot>setExposureCompensation(int)</slot>
+ </slots>
+</ui>
diff --git a/examples/multimedia/camera/camera_mobile.ui b/examples/multimedia/camera/camera_mobile.ui
new file mode 100644
index 000000000..7f269b17b
--- /dev/null
+++ b/examples/multimedia/camera/camera_mobile.ui
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Camera</class>
+ <widget class="QMainWindow" name="Camera">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>668</width>
+ <height>429</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Camera</string>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="1" column="1" colspan="2">
+ <widget class="QTabWidget" name="captureWidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="tab_2">
+ <attribute name="title">
+ <string>Image</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="4" column="0">
+ <widget class="QSlider" name="exposureCompensation">
+ <property name="minimum">
+ <number>-4</number>
+ </property>
+ <property name="maximum">
+ <number>4</number>
+ </property>
+ <property name="pageStep">
+ <number>2</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksAbove</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Exposure Compensation:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QPushButton" name="takeImageButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Capture Photo</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>:/images/shutter.svg</normaloff>:/images/shutter.svg</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab">
+ <attribute name="title">
+ <string>Video</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QPushButton" name="recordButton">
+ <property name="text">
+ <string>Record</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pauseButton">
+ <property name="text">
+ <string>Pause</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="stopButton">
+ <property name="text">
+ <string>Stop</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>10</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="muteButton">
+ <property name="text">
+ <string>Mute</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="metaDataButton">
+ <property name="text">
+ <string>Set metadata</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QStackedWidget" name="stackedWidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>1</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="palette">
+ <palette>
+ <active>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>145</red>
+ <green>145</green>
+ <blue>145</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </active>
+ <inactive>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>145</red>
+ <green>145</green>
+ <blue>145</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </inactive>
+ <disabled>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>145</red>
+ <green>145</green>
+ <blue>145</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>145</red>
+ <green>145</green>
+ <blue>145</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </disabled>
+ </palette>
+ </property>
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="viewfinderPage">
+ <layout class="QGridLayout" name="gridLayout_5">
+ <item row="0" column="0">
+ <widget class="QVideoWidget" name="viewfinder" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="previewPage">
+ <layout class="QGridLayout" name="gridLayout_4">
+ <item row="0" column="0">
+ <widget class="QLabel" name="lastImagePreviewLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Box</enum>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menubar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>668</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menuFile">
+ <property name="title">
+ <string>File</string>
+ </property>
+ <addaction name="actionStartCamera"/>
+ <addaction name="actionStopCamera"/>
+ <addaction name="separator"/>
+ <addaction name="actionSettings"/>
+ <addaction name="separator"/>
+ <addaction name="actionExit"/>
+ </widget>
+ <widget class="QMenu" name="menuDevices">
+ <property name="title">
+ <string>Devices</string>
+ </property>
+ </widget>
+ <addaction name="menuFile"/>
+ <addaction name="menuDevices"/>
+ </widget>
+ <widget class="QStatusBar" name="statusbar"/>
+ <action name="actionExit">
+ <property name="text">
+ <string>Close</string>
+ </property>
+ </action>
+ <action name="actionStartCamera">
+ <property name="text">
+ <string>Start Camera</string>
+ </property>
+ </action>
+ <action name="actionStopCamera">
+ <property name="text">
+ <string>Stop Camera</string>
+ </property>
+ </action>
+ <action name="actionSettings">
+ <property name="text">
+ <string>Change Settings</string>
+ </property>
+ </action>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>QVideoWidget</class>
+ <extends>QWidget</extends>
+ <header>qvideowidget.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>recordButton</sender>
+ <signal>clicked()</signal>
+ <receiver>Camera</receiver>
+ <slot>record()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>647</x>
+ <y>149</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>61</x>
+ <y>238</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>stopButton</sender>
+ <signal>clicked()</signal>
+ <receiver>Camera</receiver>
+ <slot>stop()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>647</x>
+ <y>225</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>140</x>
+ <y>236</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>pauseButton</sender>
+ <signal>clicked()</signal>
+ <receiver>Camera</receiver>
+ <slot>pause()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>647</x>
+ <y>187</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>234</x>
+ <y>237</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>actionExit</sender>
+ <signal>triggered()</signal>
+ <receiver>Camera</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>-1</x>
+ <y>-1</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>154</x>
+ <y>130</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>takeImageButton</sender>
+ <signal>clicked()</signal>
+ <receiver>Camera</receiver>
+ <slot>takeImage()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>625</x>
+ <y>132</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>603</x>
+ <y>169</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>muteButton</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>Camera</receiver>
+ <slot>setMuted(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>647</x>
+ <y>377</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>5</x>
+ <y>280</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>exposureCompensation</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>Camera</receiver>
+ <slot>setExposureCompensation(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>559</x>
+ <y>367</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>665</x>
+ <y>365</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>actionSettings</sender>
+ <signal>triggered()</signal>
+ <receiver>Camera</receiver>
+ <slot>configureCaptureSettings()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>-1</x>
+ <y>-1</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>333</x>
+ <y>210</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>actionStartCamera</sender>
+ <signal>triggered()</signal>
+ <receiver>Camera</receiver>
+ <slot>startCamera()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>-1</x>
+ <y>-1</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>333</x>
+ <y>210</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>actionStopCamera</sender>
+ <signal>triggered()</signal>
+ <receiver>Camera</receiver>
+ <slot>stopCamera()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>-1</x>
+ <y>-1</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>333</x>
+ <y>210</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+ <slots>
+ <slot>record()</slot>
+ <slot>pause()</slot>
+ <slot>stop()</slot>
+ <slot>enablePreview(bool)</slot>
+ <slot>configureCaptureSettings()</slot>
+ <slot>takeImage()</slot>
+ <slot>startCamera()</slot>
+ <slot>toggleLock()</slot>
+ <slot>setMuted(bool)</slot>
+ <slot>stopCamera()</slot>
+ <slot>setExposureCompensation(int)</slot>
+ </slots>
+</ui>
diff --git a/examples/multimedia/camera/doc/camera.png b/examples/multimedia/camera/doc/camera.png
deleted file mode 100644
index 7ebf1e826..000000000
--- a/examples/multimedia/camera/doc/camera.png
+++ /dev/null
Binary files differ
diff --git a/examples/multimedia/camera/doc/camera.rst b/examples/multimedia/camera/doc/camera.rst
index 0b37b2c6a..7fc75a387 100644
--- a/examples/multimedia/camera/doc/camera.rst
+++ b/examples/multimedia/camera/doc/camera.rst
@@ -1,12 +1,14 @@
Camera Example
===============
+.. tags:: Android
+
The Camera Example shows how to use the API to capture a still image or video.
The Camera Example demonstrates how you can use Qt Multimedia to implement some
basic Camera functionality to take still images and record video clips with
audio.
-.. image:: camera.png
- :width: 400
+.. image:: camera.webp
+ :width: 678
:alt: Camera Screenshot
diff --git a/examples/multimedia/camera/doc/camera.webp b/examples/multimedia/camera/doc/camera.webp
new file mode 100644
index 000000000..11ed18792
--- /dev/null
+++ b/examples/multimedia/camera/doc/camera.webp
Binary files differ
diff --git a/examples/multimedia/camera/imagesettings.py b/examples/multimedia/camera/imagesettings.py
new file mode 100644
index 000000000..9ca1d92ce
--- /dev/null
+++ b/examples/multimedia/camera/imagesettings.py
@@ -0,0 +1,56 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtMultimedia import QImageCapture
+from PySide6.QtWidgets import QDialog
+from PySide6.QtCore import QSize
+
+from ui_imagesettings import Ui_ImageSettingsUi
+
+
+def box_value(box):
+ idx = box.currentIndex()
+ return None if idx == -1 else box.itemData(idx)
+
+
+def select_combo_box_item(box, value):
+ idx = box.findData(value)
+ if idx != -1:
+ box.setCurrentIndex(idx)
+
+
+class ImageSettings(QDialog):
+
+ def __init__(self, imageCapture, parent=None):
+ super().__init__(parent)
+ self.imagecapture = imageCapture
+ self._ui = Ui_ImageSettingsUi()
+ self._ui.setupUi(self)
+
+ # image codecs
+ self._ui.imageCodecBox.addItem("Default image format",
+ QImageCapture.UnspecifiedFormat)
+ supported_image_formats = QImageCapture.supportedFormats()
+ for f in supported_image_formats:
+ description = QImageCapture.fileFormatDescription(f)
+ name = QImageCapture.fileFormatName(f)
+ self._ui.imageCodecBox.addItem(f"{name} : {description}", f)
+
+ self._ui.imageQualitySlider.setRange(0, QImageCapture.VeryHighQuality.value)
+
+ self._ui.imageResolutionBox.addItem("Default Resolution", QSize())
+ camera = imageCapture.captureSession().camera()
+ supported_resolutions = camera.cameraDevice().photoResolutions()
+ for resolution in supported_resolutions:
+ w, h = resolution.width(), resolution.height()
+ self._ui.imageResolutionBox.addItem(f"{w}x{h}", resolution)
+
+ select_combo_box_item(self._ui.imageCodecBox, imageCapture.fileFormat())
+ select_combo_box_item(self._ui.imageResolutionBox, imageCapture.resolution())
+ self._ui.imageQualitySlider.setValue(imageCapture.quality().value)
+
+ def apply_image_settings(self):
+ self.imagecapture.setFileFormat(box_value(self._ui.imageCodecBox))
+ q = self._ui.imageQualitySlider.value()
+ self.imagecapture.setQuality(QImageCapture.Quality(q))
+ self.imagecapture.setResolution(box_value(self._ui.imageResolutionBox))
diff --git a/examples/multimedia/camera/imagesettings.ui b/examples/multimedia/camera/imagesettings.ui
new file mode 100644
index 000000000..8c59ca01d
--- /dev/null
+++ b/examples/multimedia/camera/imagesettings.ui
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ImageSettingsUi</class>
+ <widget class="QDialog" name="ImageSettingsUi">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>332</width>
+ <height>270</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Image Settings</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Image</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0" colspan="2">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Resolution:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QComboBox" name="imageResolutionBox"/>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Image Format:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QComboBox" name="imageCodecBox"/>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>Quality:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QSlider" name="imageQualitySlider">
+ <property name="maximum">
+ <number>4</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>14</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="0">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>ImageSettingsUi</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>322</x>
+ <y>272</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>44</x>
+ <y>230</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>ImageSettingsUi</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>405</x>
+ <y>262</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>364</x>
+ <y>227</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/examples/multimedia/camera/main.py b/examples/multimedia/camera/main.py
new file mode 100644
index 000000000..fd4dd32e3
--- /dev/null
+++ b/examples/multimedia/camera/main.py
@@ -0,0 +1,17 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the QtMultiMedia camera example from Qt v6.x"""
+
+import sys
+
+from PySide6.QtWidgets import QApplication
+
+from camera import Camera
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ camera = Camera()
+ camera.show()
+ sys.exit(app.exec())
diff --git a/examples/multimedia/camera/metadatadialog.py b/examples/multimedia/camera/metadatadialog.py
new file mode 100644
index 000000000..97d0a36e5
--- /dev/null
+++ b/examples/multimedia/camera/metadatadialog.py
@@ -0,0 +1,86 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtMultimedia import QMediaMetaData
+from PySide6.QtWidgets import (QDialog, QDialogButtonBox, QFileDialog,
+ QFormLayout, QHBoxLayout, QLineEdit,
+ QPushButton, QScrollArea, QVBoxLayout, QWidget)
+from PySide6.QtCore import QDateTime, QDir, Slot
+
+
+IMAGE_FILTER = "Image Files (*.png *.jpg *.bmp)"
+
+
+def default_value(key):
+ if key == QMediaMetaData.Title:
+ return "Qt Camera Example"
+ if key == QMediaMetaData.Author:
+ return "The Qt Company"
+ if key == QMediaMetaData.Date:
+ return QDateTime.currentDateTime().toString()
+ return ""
+
+
+class MetaDataDialog(QDialog):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.m_metaDataFields = []
+ meta_data_layout = QFormLayout()
+ for i in range(0, QMediaMetaData.NumMetaData):
+ key = QMediaMetaData.Key(i)
+ label = QMediaMetaData.metaDataKeyToString(QMediaMetaData.Key(key))
+ line_edit = QLineEdit(default_value(key))
+ line_edit.setClearButtonEnabled(True)
+ self.m_metaDataFields.append(line_edit)
+ if key == QMediaMetaData.ThumbnailImage:
+ open_thumbnail = QPushButton("Open")
+ open_thumbnail.clicked.connect(self.open_thumbnail_image)
+ layout = QHBoxLayout()
+ layout.addWidget(line_edit)
+ layout.addWidget(open_thumbnail)
+ meta_data_layout.addRow(label, layout)
+ elif key == QMediaMetaData.CoverArtImage:
+ open_cover_art = QPushButton("Open")
+ open_cover_art.clicked.connect(self.open_cover_art_image)
+ layout = QHBoxLayout()
+ layout.addWidget(line_edit)
+ layout.addWidget(open_cover_art)
+ meta_data_layout.addRow(label, layout)
+ else:
+ meta_data_layout.addRow(label, line_edit)
+
+ viewport = QWidget()
+ viewport.setLayout(meta_data_layout)
+ scroll_area = QScrollArea()
+ scroll_area.setWidget(viewport)
+ dialog_layout = QVBoxLayout(self)
+ dialog_layout.addWidget(scroll_area)
+
+ button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
+ dialog_layout.addWidget(button_box)
+
+ self.setWindowTitle("Set Metadata")
+ self.resize(400, 300)
+
+ button_box.accepted.connect(self.accept)
+ button_box.rejected.connect(self.reject)
+
+ @Slot()
+ def open_thumbnail_image(self):
+ dir = QDir.currentPath()
+ file_name = QFileDialog.getOpenFileName(self, "Open Image", dir,
+ IMAGE_FILTER)
+ if file_name:
+ i = QMediaMetaData.ThumbnailImage.value
+ self.m_metaDataFields[i].setText(file_name[0])
+
+ @Slot()
+ def open_cover_art_image(self):
+ dir = QDir.currentPath()
+ file_name = QFileDialog.getOpenFileName(self, "Open Image", dir,
+ IMAGE_FILTER)
+ if file_name:
+ i = QMediaMetaData.CoverArtImage.value
+ self.m_metaDataFields[i].setText(file_name[0])
diff --git a/examples/multimedia/camera/ui_camera.py b/examples/multimedia/camera/ui_camera.py
new file mode 100644
index 000000000..690cf3352
--- /dev/null
+++ b/examples/multimedia/camera/ui_camera.py
@@ -0,0 +1,232 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'camera.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
+ QCursor, QFont, QFontDatabase, QGradient,
+ QIcon, QImage, QKeySequence, QLinearGradient,
+ QPainter, QPalette, QPixmap, QRadialGradient,
+ QTransform)
+from PySide6.QtMultimediaWidgets import QVideoWidget
+from PySide6.QtWidgets import (QApplication, QFrame, QGridLayout, QLabel,
+ QMainWindow, QMenu, QMenuBar, QPushButton,
+ QSizePolicy, QSlider, QSpacerItem, QStackedWidget,
+ QStatusBar, QTabWidget, QWidget)
+
+class Ui_Camera(object):
+ def setupUi(self, Camera):
+ if not Camera.objectName():
+ Camera.setObjectName(u"Camera")
+ Camera.resize(668, 429)
+ self.actionExit = QAction(Camera)
+ self.actionExit.setObjectName(u"actionExit")
+ self.actionStartCamera = QAction(Camera)
+ self.actionStartCamera.setObjectName(u"actionStartCamera")
+ self.actionStopCamera = QAction(Camera)
+ self.actionStopCamera.setObjectName(u"actionStopCamera")
+ self.actionSettings = QAction(Camera)
+ self.actionSettings.setObjectName(u"actionSettings")
+ self.actionAbout_Qt = QAction(Camera)
+ self.actionAbout_Qt.setObjectName(u"actionAbout_Qt")
+ self.centralwidget = QWidget(Camera)
+ self.centralwidget.setObjectName(u"centralwidget")
+ self.gridLayout_3 = QGridLayout(self.centralwidget)
+ self.gridLayout_3.setObjectName(u"gridLayout_3")
+ self.captureWidget = QTabWidget(self.centralwidget)
+ self.captureWidget.setObjectName(u"captureWidget")
+ self.tab_2 = QWidget()
+ self.tab_2.setObjectName(u"tab_2")
+ self.gridLayout = QGridLayout(self.tab_2)
+ self.gridLayout.setObjectName(u"gridLayout")
+ self.verticalSpacer_2 = QSpacerItem(20, 161, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.gridLayout.addItem(self.verticalSpacer_2, 3, 0, 1, 1)
+
+ self.takeImageButton = QPushButton(self.tab_2)
+ self.takeImageButton.setObjectName(u"takeImageButton")
+ self.takeImageButton.setEnabled(False)
+
+ self.gridLayout.addWidget(self.takeImageButton, 0, 0, 1, 1)
+
+ self.exposureCompensation = QSlider(self.tab_2)
+ self.exposureCompensation.setObjectName(u"exposureCompensation")
+ self.exposureCompensation.setMinimum(-4)
+ self.exposureCompensation.setMaximum(4)
+ self.exposureCompensation.setPageStep(2)
+ self.exposureCompensation.setOrientation(Qt.Horizontal)
+ self.exposureCompensation.setTickPosition(QSlider.TicksAbove)
+
+ self.gridLayout.addWidget(self.exposureCompensation, 5, 0, 1, 1)
+
+ self.label = QLabel(self.tab_2)
+ self.label.setObjectName(u"label")
+
+ self.gridLayout.addWidget(self.label, 4, 0, 1, 1)
+
+ self.captureWidget.addTab(self.tab_2, "")
+ self.tab = QWidget()
+ self.tab.setObjectName(u"tab")
+ self.gridLayout_2 = QGridLayout(self.tab)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
+ self.recordButton = QPushButton(self.tab)
+ self.recordButton.setObjectName(u"recordButton")
+
+ self.gridLayout_2.addWidget(self.recordButton, 0, 0, 1, 1)
+
+ self.pauseButton = QPushButton(self.tab)
+ self.pauseButton.setObjectName(u"pauseButton")
+
+ self.gridLayout_2.addWidget(self.pauseButton, 1, 0, 1, 1)
+
+ self.stopButton = QPushButton(self.tab)
+ self.stopButton.setObjectName(u"stopButton")
+
+ self.gridLayout_2.addWidget(self.stopButton, 2, 0, 1, 1)
+
+ self.verticalSpacer = QSpacerItem(20, 76, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.gridLayout_2.addItem(self.verticalSpacer, 3, 0, 1, 1)
+
+ self.muteButton = QPushButton(self.tab)
+ self.muteButton.setObjectName(u"muteButton")
+ self.muteButton.setCheckable(True)
+
+ self.gridLayout_2.addWidget(self.muteButton, 4, 0, 1, 1)
+
+ self.metaDataButton = QPushButton(self.tab)
+ self.metaDataButton.setObjectName(u"metaDataButton")
+ self.metaDataButton.setCheckable(True)
+
+ self.gridLayout_2.addWidget(self.metaDataButton, 5, 0, 1, 1)
+
+ self.captureWidget.addTab(self.tab, "")
+
+ self.gridLayout_3.addWidget(self.captureWidget, 1, 1, 1, 2)
+
+ self.stackedWidget = QStackedWidget(self.centralwidget)
+ self.stackedWidget.setObjectName(u"stackedWidget")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
+ sizePolicy.setHorizontalStretch(1)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.stackedWidget.sizePolicy().hasHeightForWidth())
+ self.stackedWidget.setSizePolicy(sizePolicy)
+ palette = QPalette()
+ brush = QBrush(QColor(255, 255, 255, 255))
+ brush.setStyle(Qt.SolidPattern)
+ palette.setBrush(QPalette.Active, QPalette.Base, brush)
+ brush1 = QBrush(QColor(145, 145, 145, 255))
+ brush1.setStyle(Qt.SolidPattern)
+ palette.setBrush(QPalette.Active, QPalette.Window, brush1)
+ palette.setBrush(QPalette.Inactive, QPalette.Base, brush)
+ palette.setBrush(QPalette.Inactive, QPalette.Window, brush1)
+ palette.setBrush(QPalette.Disabled, QPalette.Base, brush1)
+ palette.setBrush(QPalette.Disabled, QPalette.Window, brush1)
+ self.stackedWidget.setPalette(palette)
+ self.viewfinderPage = QWidget()
+ self.viewfinderPage.setObjectName(u"viewfinderPage")
+ self.gridLayout_5 = QGridLayout(self.viewfinderPage)
+ self.gridLayout_5.setObjectName(u"gridLayout_5")
+ self.viewfinder = QVideoWidget(self.viewfinderPage)
+ self.viewfinder.setObjectName(u"viewfinder")
+
+ self.gridLayout_5.addWidget(self.viewfinder, 0, 0, 1, 1)
+
+ self.stackedWidget.addWidget(self.viewfinderPage)
+ self.previewPage = QWidget()
+ self.previewPage.setObjectName(u"previewPage")
+ self.gridLayout_4 = QGridLayout(self.previewPage)
+ self.gridLayout_4.setObjectName(u"gridLayout_4")
+ self.lastImagePreviewLabel = QLabel(self.previewPage)
+ self.lastImagePreviewLabel.setObjectName(u"lastImagePreviewLabel")
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.MinimumExpanding)
+ sizePolicy1.setHorizontalStretch(0)
+ sizePolicy1.setVerticalStretch(0)
+ sizePolicy1.setHeightForWidth(self.lastImagePreviewLabel.sizePolicy().hasHeightForWidth())
+ self.lastImagePreviewLabel.setSizePolicy(sizePolicy1)
+ self.lastImagePreviewLabel.setFrameShape(QFrame.Box)
+
+ self.gridLayout_4.addWidget(self.lastImagePreviewLabel, 0, 0, 1, 1)
+
+ self.stackedWidget.addWidget(self.previewPage)
+
+ self.gridLayout_3.addWidget(self.stackedWidget, 0, 0, 2, 1)
+
+ Camera.setCentralWidget(self.centralwidget)
+ self.menubar = QMenuBar(Camera)
+ self.menubar.setObjectName(u"menubar")
+ self.menubar.setGeometry(QRect(0, 0, 668, 19))
+ self.menuFile = QMenu(self.menubar)
+ self.menuFile.setObjectName(u"menuFile")
+ self.menuDevices = QMenu(self.menubar)
+ self.menuDevices.setObjectName(u"menuDevices")
+ self.menuHelp = QMenu(self.menubar)
+ self.menuHelp.setObjectName(u"menuHelp")
+ Camera.setMenuBar(self.menubar)
+ self.statusbar = QStatusBar(Camera)
+ self.statusbar.setObjectName(u"statusbar")
+ Camera.setStatusBar(self.statusbar)
+
+ self.menubar.addAction(self.menuFile.menuAction())
+ self.menubar.addAction(self.menuDevices.menuAction())
+ self.menubar.addAction(self.menuHelp.menuAction())
+ self.menuFile.addAction(self.actionStartCamera)
+ self.menuFile.addAction(self.actionStopCamera)
+ self.menuFile.addSeparator()
+ self.menuFile.addAction(self.actionSettings)
+ self.menuFile.addSeparator()
+ self.menuFile.addAction(self.actionExit)
+ self.menuHelp.addAction(self.actionAbout_Qt)
+
+ self.retranslateUi(Camera)
+ self.recordButton.clicked.connect(Camera.record)
+ self.stopButton.clicked.connect(Camera.stop)
+ self.pauseButton.clicked.connect(Camera.pause)
+ self.actionExit.triggered.connect(Camera.close)
+ self.takeImageButton.clicked.connect(Camera.takeImage)
+ self.muteButton.toggled.connect(Camera.setMuted)
+ self.exposureCompensation.valueChanged.connect(Camera.setExposureCompensation)
+ self.actionSettings.triggered.connect(Camera.configureCaptureSettings)
+ self.actionStartCamera.triggered.connect(Camera.startCamera)
+ self.actionStopCamera.triggered.connect(Camera.stopCamera)
+
+ self.captureWidget.setCurrentIndex(0)
+ self.stackedWidget.setCurrentIndex(0)
+
+
+ QMetaObject.connectSlotsByName(Camera)
+ # setupUi
+
+ def retranslateUi(self, Camera):
+ Camera.setWindowTitle(QCoreApplication.translate("Camera", u"Camera", None))
+ self.actionExit.setText(QCoreApplication.translate("Camera", u"Quit", None))
+#if QT_CONFIG(shortcut)
+ self.actionExit.setShortcut(QCoreApplication.translate("Camera", u"Ctrl+Q", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionStartCamera.setText(QCoreApplication.translate("Camera", u"Start Camera", None))
+ self.actionStopCamera.setText(QCoreApplication.translate("Camera", u"Stop Camera", None))
+ self.actionSettings.setText(QCoreApplication.translate("Camera", u"Change Settings", None))
+ self.actionAbout_Qt.setText(QCoreApplication.translate("Camera", u"About Qt", None))
+ self.takeImageButton.setText(QCoreApplication.translate("Camera", u"Capture Photo", None))
+ self.label.setText(QCoreApplication.translate("Camera", u"Exposure Compensation:", None))
+ self.captureWidget.setTabText(self.captureWidget.indexOf(self.tab_2), QCoreApplication.translate("Camera", u"Image", None))
+ self.recordButton.setText(QCoreApplication.translate("Camera", u"Record", None))
+ self.pauseButton.setText(QCoreApplication.translate("Camera", u"Pause", None))
+ self.stopButton.setText(QCoreApplication.translate("Camera", u"Stop", None))
+ self.muteButton.setText(QCoreApplication.translate("Camera", u"Mute", None))
+ self.metaDataButton.setText(QCoreApplication.translate("Camera", u"Set metadata", None))
+ self.captureWidget.setTabText(self.captureWidget.indexOf(self.tab), QCoreApplication.translate("Camera", u"Video", None))
+ self.lastImagePreviewLabel.setText("")
+ self.menuFile.setTitle(QCoreApplication.translate("Camera", u"File", None))
+ self.menuDevices.setTitle(QCoreApplication.translate("Camera", u"Devices", None))
+ self.menuHelp.setTitle(QCoreApplication.translate("Camera", u"Help", None))
+ # retranslateUi
+
diff --git a/examples/multimedia/camera/ui_camera_mobile.py b/examples/multimedia/camera/ui_camera_mobile.py
new file mode 100644
index 000000000..5cdd81f1e
--- /dev/null
+++ b/examples/multimedia/camera/ui_camera_mobile.py
@@ -0,0 +1,251 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'camera_mobile.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
+ QCursor, QFont, QFontDatabase, QGradient,
+ QIcon, QImage, QKeySequence, QLinearGradient,
+ QPainter, QPalette, QPixmap, QRadialGradient,
+ QTransform)
+from PySide6.QtMultimediaWidgets import QVideoWidget
+from PySide6.QtWidgets import (QApplication, QFrame, QGridLayout, QHBoxLayout,
+ QLabel, QMainWindow, QMenu, QMenuBar,
+ QPushButton, QSizePolicy, QSlider, QSpacerItem,
+ QStackedWidget, QStatusBar, QTabWidget, QVBoxLayout,
+ QWidget)
+
+class Ui_Camera(object):
+ def setupUi(self, Camera):
+ if not Camera.objectName():
+ Camera.setObjectName(u"Camera")
+ Camera.resize(668, 429)
+ self.actionExit = QAction(Camera)
+ self.actionExit.setObjectName(u"actionExit")
+ self.actionStartCamera = QAction(Camera)
+ self.actionStartCamera.setObjectName(u"actionStartCamera")
+ self.actionStopCamera = QAction(Camera)
+ self.actionStopCamera.setObjectName(u"actionStopCamera")
+ self.actionSettings = QAction(Camera)
+ self.actionSettings.setObjectName(u"actionSettings")
+ self.centralwidget = QWidget(Camera)
+ self.centralwidget.setObjectName(u"centralwidget")
+ self.gridLayout_3 = QGridLayout(self.centralwidget)
+ self.gridLayout_3.setObjectName(u"gridLayout_3")
+ self.captureWidget = QTabWidget(self.centralwidget)
+ self.captureWidget.setObjectName(u"captureWidget")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.captureWidget.sizePolicy().hasHeightForWidth())
+ self.captureWidget.setSizePolicy(sizePolicy)
+ self.tab_2 = QWidget()
+ self.tab_2.setObjectName(u"tab_2")
+ self.gridLayout = QGridLayout(self.tab_2)
+ self.gridLayout.setObjectName(u"gridLayout")
+ self.exposureCompensation = QSlider(self.tab_2)
+ self.exposureCompensation.setObjectName(u"exposureCompensation")
+ self.exposureCompensation.setMinimum(-4)
+ self.exposureCompensation.setMaximum(4)
+ self.exposureCompensation.setPageStep(2)
+ self.exposureCompensation.setOrientation(Qt.Horizontal)
+ self.exposureCompensation.setTickPosition(QSlider.TicksAbove)
+
+ self.gridLayout.addWidget(self.exposureCompensation, 4, 0, 1, 1)
+
+ self.label = QLabel(self.tab_2)
+ self.label.setObjectName(u"label")
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
+ sizePolicy1.setHorizontalStretch(0)
+ sizePolicy1.setVerticalStretch(0)
+ sizePolicy1.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
+ self.label.setSizePolicy(sizePolicy1)
+
+ self.gridLayout.addWidget(self.label, 3, 0, 1, 1)
+
+ self.takeImageButton = QPushButton(self.tab_2)
+ self.takeImageButton.setObjectName(u"takeImageButton")
+ self.takeImageButton.setEnabled(False)
+ icon = QIcon()
+ icon.addFile(u":/images/shutter.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.takeImageButton.setIcon(icon)
+
+ self.gridLayout.addWidget(self.takeImageButton, 0, 0, 1, 1)
+
+ self.captureWidget.addTab(self.tab_2, "")
+ self.tab = QWidget()
+ self.tab.setObjectName(u"tab")
+ self.gridLayout_2 = QGridLayout(self.tab)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.verticalLayout = QVBoxLayout()
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.recordButton = QPushButton(self.tab)
+ self.recordButton.setObjectName(u"recordButton")
+
+ self.verticalLayout.addWidget(self.recordButton)
+
+ self.pauseButton = QPushButton(self.tab)
+ self.pauseButton.setObjectName(u"pauseButton")
+
+ self.verticalLayout.addWidget(self.pauseButton)
+
+ self.stopButton = QPushButton(self.tab)
+ self.stopButton.setObjectName(u"stopButton")
+
+ self.verticalLayout.addWidget(self.stopButton)
+
+
+ self.horizontalLayout.addLayout(self.verticalLayout)
+
+ self.verticalLayout_2 = QVBoxLayout()
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.verticalSpacer = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_2.addItem(self.verticalSpacer)
+
+ self.muteButton = QPushButton(self.tab)
+ self.muteButton.setObjectName(u"muteButton")
+ self.muteButton.setCheckable(True)
+
+ self.verticalLayout_2.addWidget(self.muteButton)
+
+ self.metaDataButton = QPushButton(self.tab)
+ self.metaDataButton.setObjectName(u"metaDataButton")
+ self.metaDataButton.setCheckable(True)
+
+ self.verticalLayout_2.addWidget(self.metaDataButton)
+
+
+ self.horizontalLayout.addLayout(self.verticalLayout_2)
+
+
+ self.gridLayout_2.addLayout(self.horizontalLayout, 0, 0, 1, 1)
+
+ self.captureWidget.addTab(self.tab, "")
+
+ self.gridLayout_3.addWidget(self.captureWidget, 1, 1, 1, 2)
+
+ self.stackedWidget = QStackedWidget(self.centralwidget)
+ self.stackedWidget.setObjectName(u"stackedWidget")
+ sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
+ sizePolicy2.setHorizontalStretch(1)
+ sizePolicy2.setVerticalStretch(0)
+ sizePolicy2.setHeightForWidth(self.stackedWidget.sizePolicy().hasHeightForWidth())
+ self.stackedWidget.setSizePolicy(sizePolicy2)
+ palette = QPalette()
+ brush = QBrush(QColor(255, 255, 255, 255))
+ brush.setStyle(Qt.SolidPattern)
+ palette.setBrush(QPalette.Active, QPalette.Base, brush)
+ brush1 = QBrush(QColor(145, 145, 145, 255))
+ brush1.setStyle(Qt.SolidPattern)
+ palette.setBrush(QPalette.Active, QPalette.Window, brush1)
+ palette.setBrush(QPalette.Inactive, QPalette.Base, brush)
+ palette.setBrush(QPalette.Inactive, QPalette.Window, brush1)
+ palette.setBrush(QPalette.Disabled, QPalette.Base, brush1)
+ palette.setBrush(QPalette.Disabled, QPalette.Window, brush1)
+ self.stackedWidget.setPalette(palette)
+ self.viewfinderPage = QWidget()
+ self.viewfinderPage.setObjectName(u"viewfinderPage")
+ self.gridLayout_5 = QGridLayout(self.viewfinderPage)
+ self.gridLayout_5.setObjectName(u"gridLayout_5")
+ self.viewfinder = QVideoWidget(self.viewfinderPage)
+ self.viewfinder.setObjectName(u"viewfinder")
+ sizePolicy3 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
+ sizePolicy3.setHorizontalStretch(0)
+ sizePolicy3.setVerticalStretch(0)
+ sizePolicy3.setHeightForWidth(self.viewfinder.sizePolicy().hasHeightForWidth())
+ self.viewfinder.setSizePolicy(sizePolicy3)
+
+ self.gridLayout_5.addWidget(self.viewfinder, 0, 0, 1, 1)
+
+ self.stackedWidget.addWidget(self.viewfinderPage)
+ self.previewPage = QWidget()
+ self.previewPage.setObjectName(u"previewPage")
+ self.gridLayout_4 = QGridLayout(self.previewPage)
+ self.gridLayout_4.setObjectName(u"gridLayout_4")
+ self.lastImagePreviewLabel = QLabel(self.previewPage)
+ self.lastImagePreviewLabel.setObjectName(u"lastImagePreviewLabel")
+ sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.MinimumExpanding)
+ sizePolicy4.setHorizontalStretch(0)
+ sizePolicy4.setVerticalStretch(0)
+ sizePolicy4.setHeightForWidth(self.lastImagePreviewLabel.sizePolicy().hasHeightForWidth())
+ self.lastImagePreviewLabel.setSizePolicy(sizePolicy4)
+ self.lastImagePreviewLabel.setFrameShape(QFrame.Box)
+
+ self.gridLayout_4.addWidget(self.lastImagePreviewLabel, 0, 0, 1, 1)
+
+ self.stackedWidget.addWidget(self.previewPage)
+
+ self.gridLayout_3.addWidget(self.stackedWidget, 0, 2, 1, 1)
+
+ Camera.setCentralWidget(self.centralwidget)
+ self.menubar = QMenuBar(Camera)
+ self.menubar.setObjectName(u"menubar")
+ self.menubar.setGeometry(QRect(0, 0, 668, 22))
+ self.menuFile = QMenu(self.menubar)
+ self.menuFile.setObjectName(u"menuFile")
+ self.menuDevices = QMenu(self.menubar)
+ self.menuDevices.setObjectName(u"menuDevices")
+ Camera.setMenuBar(self.menubar)
+ self.statusbar = QStatusBar(Camera)
+ self.statusbar.setObjectName(u"statusbar")
+ Camera.setStatusBar(self.statusbar)
+
+ self.menubar.addAction(self.menuFile.menuAction())
+ self.menubar.addAction(self.menuDevices.menuAction())
+ self.menuFile.addAction(self.actionStartCamera)
+ self.menuFile.addAction(self.actionStopCamera)
+ self.menuFile.addSeparator()
+ self.menuFile.addAction(self.actionSettings)
+ self.menuFile.addSeparator()
+ self.menuFile.addAction(self.actionExit)
+
+ self.retranslateUi(Camera)
+ self.recordButton.clicked.connect(Camera.record)
+ self.stopButton.clicked.connect(Camera.stop)
+ self.pauseButton.clicked.connect(Camera.pause)
+ self.actionExit.triggered.connect(Camera.close)
+ self.takeImageButton.clicked.connect(Camera.takeImage)
+ self.muteButton.toggled.connect(Camera.setMuted)
+ self.exposureCompensation.valueChanged.connect(Camera.setExposureCompensation)
+ self.actionSettings.triggered.connect(Camera.configureCaptureSettings)
+ self.actionStartCamera.triggered.connect(Camera.startCamera)
+ self.actionStopCamera.triggered.connect(Camera.stopCamera)
+
+ self.captureWidget.setCurrentIndex(0)
+ self.stackedWidget.setCurrentIndex(0)
+
+
+ QMetaObject.connectSlotsByName(Camera)
+ # setupUi
+
+ def retranslateUi(self, Camera):
+ Camera.setWindowTitle(QCoreApplication.translate("Camera", u"Camera", None))
+ self.actionExit.setText(QCoreApplication.translate("Camera", u"Close", None))
+ self.actionStartCamera.setText(QCoreApplication.translate("Camera", u"Start Camera", None))
+ self.actionStopCamera.setText(QCoreApplication.translate("Camera", u"Stop Camera", None))
+ self.actionSettings.setText(QCoreApplication.translate("Camera", u"Change Settings", None))
+ self.label.setText(QCoreApplication.translate("Camera", u"Exposure Compensation:", None))
+ self.takeImageButton.setText(QCoreApplication.translate("Camera", u"Capture Photo", None))
+ self.captureWidget.setTabText(self.captureWidget.indexOf(self.tab_2), QCoreApplication.translate("Camera", u"Image", None))
+ self.recordButton.setText(QCoreApplication.translate("Camera", u"Record", None))
+ self.pauseButton.setText(QCoreApplication.translate("Camera", u"Pause", None))
+ self.stopButton.setText(QCoreApplication.translate("Camera", u"Stop", None))
+ self.muteButton.setText(QCoreApplication.translate("Camera", u"Mute", None))
+ self.metaDataButton.setText(QCoreApplication.translate("Camera", u"Set metadata", None))
+ self.captureWidget.setTabText(self.captureWidget.indexOf(self.tab), QCoreApplication.translate("Camera", u"Video", None))
+ self.lastImagePreviewLabel.setText("")
+ self.menuFile.setTitle(QCoreApplication.translate("Camera", u"File", None))
+ self.menuDevices.setTitle(QCoreApplication.translate("Camera", u"Devices", None))
+ # retranslateUi
+
diff --git a/examples/multimedia/camera/ui_imagesettings.py b/examples/multimedia/camera/ui_imagesettings.py
new file mode 100644
index 000000000..a3fba7789
--- /dev/null
+++ b/examples/multimedia/camera/ui_imagesettings.py
@@ -0,0 +1,94 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'imagesettings.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QAbstractButton, QApplication, QComboBox, QDialog,
+ QDialogButtonBox, QGridLayout, QGroupBox, QLabel,
+ QSizePolicy, QSlider, QSpacerItem, QWidget)
+
+class Ui_ImageSettingsUi(object):
+ def setupUi(self, ImageSettingsUi):
+ if not ImageSettingsUi.objectName():
+ ImageSettingsUi.setObjectName(u"ImageSettingsUi")
+ ImageSettingsUi.resize(332, 270)
+ self.gridLayout = QGridLayout(ImageSettingsUi)
+ self.gridLayout.setObjectName(u"gridLayout")
+ self.groupBox_2 = QGroupBox(ImageSettingsUi)
+ self.groupBox_2.setObjectName(u"groupBox_2")
+ self.gridLayout_2 = QGridLayout(self.groupBox_2)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
+ self.label_8 = QLabel(self.groupBox_2)
+ self.label_8.setObjectName(u"label_8")
+
+ self.gridLayout_2.addWidget(self.label_8, 0, 0, 1, 2)
+
+ self.imageResolutionBox = QComboBox(self.groupBox_2)
+ self.imageResolutionBox.setObjectName(u"imageResolutionBox")
+
+ self.gridLayout_2.addWidget(self.imageResolutionBox, 1, 0, 1, 2)
+
+ self.label_6 = QLabel(self.groupBox_2)
+ self.label_6.setObjectName(u"label_6")
+
+ self.gridLayout_2.addWidget(self.label_6, 2, 0, 1, 2)
+
+ self.imageCodecBox = QComboBox(self.groupBox_2)
+ self.imageCodecBox.setObjectName(u"imageCodecBox")
+
+ self.gridLayout_2.addWidget(self.imageCodecBox, 3, 0, 1, 2)
+
+ self.label_7 = QLabel(self.groupBox_2)
+ self.label_7.setObjectName(u"label_7")
+
+ self.gridLayout_2.addWidget(self.label_7, 4, 0, 1, 1)
+
+ self.imageQualitySlider = QSlider(self.groupBox_2)
+ self.imageQualitySlider.setObjectName(u"imageQualitySlider")
+ self.imageQualitySlider.setMaximum(4)
+ self.imageQualitySlider.setOrientation(Qt.Horizontal)
+
+ self.gridLayout_2.addWidget(self.imageQualitySlider, 4, 1, 1, 1)
+
+
+ self.gridLayout.addWidget(self.groupBox_2, 0, 0, 1, 1)
+
+ self.verticalSpacer = QSpacerItem(20, 14, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.gridLayout.addItem(self.verticalSpacer, 1, 0, 1, 1)
+
+ self.buttonBox = QDialogButtonBox(ImageSettingsUi)
+ self.buttonBox.setObjectName(u"buttonBox")
+ self.buttonBox.setOrientation(Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
+
+ self.gridLayout.addWidget(self.buttonBox, 2, 0, 1, 1)
+
+
+ self.retranslateUi(ImageSettingsUi)
+ self.buttonBox.accepted.connect(ImageSettingsUi.accept)
+ self.buttonBox.rejected.connect(ImageSettingsUi.reject)
+
+ QMetaObject.connectSlotsByName(ImageSettingsUi)
+ # setupUi
+
+ def retranslateUi(self, ImageSettingsUi):
+ ImageSettingsUi.setWindowTitle(QCoreApplication.translate("ImageSettingsUi", u"Image Settings", None))
+ self.groupBox_2.setTitle(QCoreApplication.translate("ImageSettingsUi", u"Image", None))
+ self.label_8.setText(QCoreApplication.translate("ImageSettingsUi", u"Resolution:", None))
+ self.label_6.setText(QCoreApplication.translate("ImageSettingsUi", u"Image Format:", None))
+ self.label_7.setText(QCoreApplication.translate("ImageSettingsUi", u"Quality:", None))
+ # retranslateUi
+
diff --git a/examples/multimedia/camera/ui_videosettings.py b/examples/multimedia/camera/ui_videosettings.py
new file mode 100644
index 000000000..eec626f27
--- /dev/null
+++ b/examples/multimedia/camera/ui_videosettings.py
@@ -0,0 +1,178 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'videosettings.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QAbstractButton, QApplication, QComboBox, QDialog,
+ QDialogButtonBox, QGridLayout, QGroupBox, QHBoxLayout,
+ QLabel, QSizePolicy, QSlider, QSpacerItem,
+ QSpinBox, QVBoxLayout, QWidget)
+
+class Ui_VideoSettingsUi(object):
+ def setupUi(self, VideoSettingsUi):
+ if not VideoSettingsUi.objectName():
+ VideoSettingsUi.setObjectName(u"VideoSettingsUi")
+ VideoSettingsUi.resize(686, 499)
+ self.gridLayout_3 = QGridLayout(VideoSettingsUi)
+ self.gridLayout_3.setObjectName(u"gridLayout_3")
+ self.buttonBox = QDialogButtonBox(VideoSettingsUi)
+ self.buttonBox.setObjectName(u"buttonBox")
+ self.buttonBox.setOrientation(Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
+
+ self.gridLayout_3.addWidget(self.buttonBox, 4, 1, 1, 1)
+
+ self.groupBox_2 = QGroupBox(VideoSettingsUi)
+ self.groupBox_2.setObjectName(u"groupBox_2")
+ self.gridLayout_2 = QGridLayout(self.groupBox_2)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
+ self.label_8 = QLabel(self.groupBox_2)
+ self.label_8.setObjectName(u"label_8")
+
+ self.gridLayout_2.addWidget(self.label_8, 0, 0, 1, 2)
+
+ self.videoCodecBox = QComboBox(self.groupBox_2)
+ self.videoCodecBox.setObjectName(u"videoCodecBox")
+
+ self.gridLayout_2.addWidget(self.videoCodecBox, 5, 0, 1, 2)
+
+ self.label_9 = QLabel(self.groupBox_2)
+ self.label_9.setObjectName(u"label_9")
+
+ self.gridLayout_2.addWidget(self.label_9, 2, 0, 1, 2)
+
+ self.label_6 = QLabel(self.groupBox_2)
+ self.label_6.setObjectName(u"label_6")
+
+ self.gridLayout_2.addWidget(self.label_6, 4, 0, 1, 2)
+
+ self.videoFormatBox = QComboBox(self.groupBox_2)
+ self.videoFormatBox.setObjectName(u"videoFormatBox")
+
+ self.gridLayout_2.addWidget(self.videoFormatBox, 1, 0, 1, 2)
+
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.fpsSpinBox = QSpinBox(self.groupBox_2)
+ self.fpsSpinBox.setObjectName(u"fpsSpinBox")
+
+ self.horizontalLayout.addWidget(self.fpsSpinBox)
+
+ self.fpsSlider = QSlider(self.groupBox_2)
+ self.fpsSlider.setObjectName(u"fpsSlider")
+ self.fpsSlider.setOrientation(Qt.Horizontal)
+
+ self.horizontalLayout.addWidget(self.fpsSlider)
+
+
+ self.gridLayout_2.addLayout(self.horizontalLayout, 3, 0, 1, 2)
+
+
+ self.gridLayout_3.addWidget(self.groupBox_2, 2, 1, 1, 1)
+
+ self.widget = QWidget(VideoSettingsUi)
+ self.widget.setObjectName(u"widget")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.widget.sizePolicy().hasHeightForWidth())
+ self.widget.setSizePolicy(sizePolicy)
+ self.verticalLayout_3 = QVBoxLayout(self.widget)
+ self.verticalLayout_3.setObjectName(u"verticalLayout_3")
+ self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
+ self.groupBox_3 = QGroupBox(self.widget)
+ self.groupBox_3.setObjectName(u"groupBox_3")
+ self.verticalLayout_2 = QVBoxLayout(self.groupBox_3)
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.label_2 = QLabel(self.groupBox_3)
+ self.label_2.setObjectName(u"label_2")
+
+ self.verticalLayout_2.addWidget(self.label_2)
+
+ self.audioCodecBox = QComboBox(self.groupBox_3)
+ self.audioCodecBox.setObjectName(u"audioCodecBox")
+
+ self.verticalLayout_2.addWidget(self.audioCodecBox)
+
+ self.label_5 = QLabel(self.groupBox_3)
+ self.label_5.setObjectName(u"label_5")
+
+ self.verticalLayout_2.addWidget(self.label_5)
+
+ self.audioSampleRateBox = QSpinBox(self.groupBox_3)
+ self.audioSampleRateBox.setObjectName(u"audioSampleRateBox")
+
+ self.verticalLayout_2.addWidget(self.audioSampleRateBox)
+
+
+ self.verticalLayout_3.addWidget(self.groupBox_3)
+
+ self.groupBox = QGroupBox(self.widget)
+ self.groupBox.setObjectName(u"groupBox")
+ self.verticalLayout = QVBoxLayout(self.groupBox)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.label_3 = QLabel(self.groupBox)
+ self.label_3.setObjectName(u"label_3")
+
+ self.verticalLayout.addWidget(self.label_3)
+
+ self.qualitySlider = QSlider(self.groupBox)
+ self.qualitySlider.setObjectName(u"qualitySlider")
+ self.qualitySlider.setMaximum(4)
+ self.qualitySlider.setOrientation(Qt.Horizontal)
+
+ self.verticalLayout.addWidget(self.qualitySlider)
+
+ self.label_4 = QLabel(self.groupBox)
+ self.label_4.setObjectName(u"label_4")
+
+ self.verticalLayout.addWidget(self.label_4)
+
+ self.containerFormatBox = QComboBox(self.groupBox)
+ self.containerFormatBox.setObjectName(u"containerFormatBox")
+
+ self.verticalLayout.addWidget(self.containerFormatBox)
+
+
+ self.verticalLayout_3.addWidget(self.groupBox)
+
+
+ self.gridLayout_3.addWidget(self.widget, 2, 0, 1, 1)
+
+ self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.gridLayout_3.addItem(self.verticalSpacer, 3, 0, 1, 1)
+
+
+ self.retranslateUi(VideoSettingsUi)
+ self.buttonBox.accepted.connect(VideoSettingsUi.accept)
+ self.buttonBox.rejected.connect(VideoSettingsUi.reject)
+
+ QMetaObject.connectSlotsByName(VideoSettingsUi)
+ # setupUi
+
+ def retranslateUi(self, VideoSettingsUi):
+ VideoSettingsUi.setWindowTitle(QCoreApplication.translate("VideoSettingsUi", u"Video Settings", None))
+ self.groupBox_2.setTitle(QCoreApplication.translate("VideoSettingsUi", u"Video", None))
+ self.label_8.setText(QCoreApplication.translate("VideoSettingsUi", u"Camera Format", None))
+ self.label_9.setText(QCoreApplication.translate("VideoSettingsUi", u"Framerate:", None))
+ self.label_6.setText(QCoreApplication.translate("VideoSettingsUi", u"Video Codec:", None))
+ self.groupBox_3.setTitle(QCoreApplication.translate("VideoSettingsUi", u"Audio", None))
+ self.label_2.setText(QCoreApplication.translate("VideoSettingsUi", u"Audio Codec:", None))
+ self.label_5.setText(QCoreApplication.translate("VideoSettingsUi", u"Sample Rate:", None))
+ self.label_3.setText(QCoreApplication.translate("VideoSettingsUi", u"Quality:", None))
+ self.label_4.setText(QCoreApplication.translate("VideoSettingsUi", u"File Format:", None))
+ # retranslateUi
+
diff --git a/examples/multimedia/camera/ui_videosettings_mobile.py b/examples/multimedia/camera/ui_videosettings_mobile.py
new file mode 100644
index 000000000..50fb8e081
--- /dev/null
+++ b/examples/multimedia/camera/ui_videosettings_mobile.py
@@ -0,0 +1,176 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'videosettings_mobile.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QAbstractButton, QApplication, QComboBox, QDialog,
+ QDialogButtonBox, QGridLayout, QGroupBox, QHBoxLayout,
+ QLabel, QSizePolicy, QSlider, QSpinBox,
+ QVBoxLayout, QWidget)
+
+class Ui_VideoSettingsUi(object):
+ def setupUi(self, VideoSettingsUi):
+ if not VideoSettingsUi.objectName():
+ VideoSettingsUi.setObjectName(u"VideoSettingsUi")
+ VideoSettingsUi.resize(329, 591)
+ self.gridLayout_3 = QGridLayout(VideoSettingsUi)
+ self.gridLayout_3.setObjectName(u"gridLayout_3")
+ self.widget = QWidget(VideoSettingsUi)
+ self.widget.setObjectName(u"widget")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.widget.sizePolicy().hasHeightForWidth())
+ self.widget.setSizePolicy(sizePolicy)
+ self.verticalLayout_3 = QVBoxLayout(self.widget)
+ self.verticalLayout_3.setObjectName(u"verticalLayout_3")
+ self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
+ self.groupBox_3 = QGroupBox(self.widget)
+ self.groupBox_3.setObjectName(u"groupBox_3")
+ self.verticalLayout_2 = QVBoxLayout(self.groupBox_3)
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.label_2 = QLabel(self.groupBox_3)
+ self.label_2.setObjectName(u"label_2")
+
+ self.verticalLayout_2.addWidget(self.label_2)
+
+ self.audioCodecBox = QComboBox(self.groupBox_3)
+ self.audioCodecBox.setObjectName(u"audioCodecBox")
+
+ self.verticalLayout_2.addWidget(self.audioCodecBox)
+
+ self.label_5 = QLabel(self.groupBox_3)
+ self.label_5.setObjectName(u"label_5")
+
+ self.verticalLayout_2.addWidget(self.label_5)
+
+ self.audioSampleRateBox = QSpinBox(self.groupBox_3)
+ self.audioSampleRateBox.setObjectName(u"audioSampleRateBox")
+
+ self.verticalLayout_2.addWidget(self.audioSampleRateBox)
+
+
+ self.verticalLayout_3.addWidget(self.groupBox_3)
+
+ self.groupBox = QGroupBox(self.widget)
+ self.groupBox.setObjectName(u"groupBox")
+ self.verticalLayout = QVBoxLayout(self.groupBox)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.label_3 = QLabel(self.groupBox)
+ self.label_3.setObjectName(u"label_3")
+
+ self.verticalLayout.addWidget(self.label_3)
+
+ self.qualitySlider = QSlider(self.groupBox)
+ self.qualitySlider.setObjectName(u"qualitySlider")
+ self.qualitySlider.setMaximum(4)
+ self.qualitySlider.setOrientation(Qt.Horizontal)
+
+ self.verticalLayout.addWidget(self.qualitySlider)
+
+ self.label_4 = QLabel(self.groupBox)
+ self.label_4.setObjectName(u"label_4")
+
+ self.verticalLayout.addWidget(self.label_4)
+
+ self.containerFormatBox = QComboBox(self.groupBox)
+ self.containerFormatBox.setObjectName(u"containerFormatBox")
+
+ self.verticalLayout.addWidget(self.containerFormatBox)
+
+
+ self.verticalLayout_3.addWidget(self.groupBox)
+
+
+ self.gridLayout_3.addWidget(self.widget, 2, 0, 1, 1)
+
+ self.groupBox_2 = QGroupBox(VideoSettingsUi)
+ self.groupBox_2.setObjectName(u"groupBox_2")
+ self.gridLayout_2 = QGridLayout(self.groupBox_2)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
+ self.label = QLabel(self.groupBox_2)
+ self.label.setObjectName(u"label")
+
+ self.gridLayout_2.addWidget(self.label, 2, 0, 1, 1)
+
+ self.videoCodecBox = QComboBox(self.groupBox_2)
+ self.videoCodecBox.setObjectName(u"videoCodecBox")
+
+ self.gridLayout_2.addWidget(self.videoCodecBox, 6, 0, 1, 2)
+
+ self.label_8 = QLabel(self.groupBox_2)
+ self.label_8.setObjectName(u"label_8")
+
+ self.gridLayout_2.addWidget(self.label_8, 0, 0, 1, 2)
+
+ self.label_6 = QLabel(self.groupBox_2)
+ self.label_6.setObjectName(u"label_6")
+
+ self.gridLayout_2.addWidget(self.label_6, 5, 0, 1, 2)
+
+ self.videoFormatBox = QComboBox(self.groupBox_2)
+ self.videoFormatBox.setObjectName(u"videoFormatBox")
+
+ self.gridLayout_2.addWidget(self.videoFormatBox, 1, 0, 1, 2)
+
+ self.buttonBox = QDialogButtonBox(self.groupBox_2)
+ self.buttonBox.setObjectName(u"buttonBox")
+ self.buttonBox.setOrientation(Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
+
+ self.gridLayout_2.addWidget(self.buttonBox, 7, 0, 1, 1)
+
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.fpsSpinBox = QSpinBox(self.groupBox_2)
+ self.fpsSpinBox.setObjectName(u"fpsSpinBox")
+ self.fpsSpinBox.setMinimum(8)
+ self.fpsSpinBox.setMaximum(30)
+
+ self.horizontalLayout.addWidget(self.fpsSpinBox)
+
+ self.fpsSlider = QSlider(self.groupBox_2)
+ self.fpsSlider.setObjectName(u"fpsSlider")
+ self.fpsSlider.setOrientation(Qt.Horizontal)
+
+ self.horizontalLayout.addWidget(self.fpsSlider)
+
+
+ self.gridLayout_2.addLayout(self.horizontalLayout, 3, 0, 1, 1)
+
+
+ self.gridLayout_3.addWidget(self.groupBox_2, 3, 0, 1, 1)
+
+
+ self.retranslateUi(VideoSettingsUi)
+ self.buttonBox.accepted.connect(VideoSettingsUi.accept)
+ self.buttonBox.rejected.connect(VideoSettingsUi.reject)
+
+ QMetaObject.connectSlotsByName(VideoSettingsUi)
+ # setupUi
+
+ def retranslateUi(self, VideoSettingsUi):
+ VideoSettingsUi.setWindowTitle(QCoreApplication.translate("VideoSettingsUi", u"Video Settings", None))
+ self.groupBox_3.setTitle(QCoreApplication.translate("VideoSettingsUi", u"Audio", None))
+ self.label_2.setText(QCoreApplication.translate("VideoSettingsUi", u"Audio Codec:", None))
+ self.label_5.setText(QCoreApplication.translate("VideoSettingsUi", u"Sample Rate:", None))
+ self.label_3.setText(QCoreApplication.translate("VideoSettingsUi", u"Quality:", None))
+ self.label_4.setText(QCoreApplication.translate("VideoSettingsUi", u"File Format:", None))
+ self.groupBox_2.setTitle(QCoreApplication.translate("VideoSettingsUi", u"Video", None))
+ self.label.setText(QCoreApplication.translate("VideoSettingsUi", u"Frames per second:", None))
+ self.label_8.setText(QCoreApplication.translate("VideoSettingsUi", u"Camera Format:", None))
+ self.label_6.setText(QCoreApplication.translate("VideoSettingsUi", u"Video Codec:", None))
+ # retranslateUi
+
diff --git a/examples/multimedia/camera/videosettings.py b/examples/multimedia/camera/videosettings.py
new file mode 100644
index 000000000..a88cb39ed
--- /dev/null
+++ b/examples/multimedia/camera/videosettings.py
@@ -0,0 +1,167 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from PySide6.QtMultimedia import (QCameraFormat, QMediaFormat, QMediaRecorder,
+ QVideoFrameFormat)
+from PySide6.QtWidgets import QDialog
+
+is_android = os.environ.get('ANDROID_ARGUMENT')
+
+if is_android:
+ from ui_videosettings_mobile import Ui_VideoSettingsUi
+else:
+ from ui_videosettings import Ui_VideoSettingsUi
+
+
+def box_value(box):
+ idx = box.currentIndex()
+ return None if idx == -1 else box.itemData(idx)
+
+
+def select_combo_box_item(box, value):
+ idx = box.findData(value)
+ if idx != -1:
+ box.setCurrentIndex(idx)
+
+
+def to_formatted_string(cameraFormat):
+ pf = cameraFormat.pixelFormat()
+ format_name = QVideoFrameFormat.pixelFormatToString(pf)
+ w = cameraFormat.resolution().width()
+ h = cameraFormat.resolution().height()
+ min_rate = int(cameraFormat.minFrameRate())
+ max_rate = int(cameraFormat.maxFrameRate())
+ return f"{format_name} {w}x{h} {min_rate}-{max_rate}FPS"
+
+
+class VideoSettings(QDialog):
+
+ def __init__(self, mediaRecorder, parent=None):
+ super().__init__(parent)
+
+ self._media_recorder = mediaRecorder
+
+ self.m_updatingFormats = False
+
+ self._ui = Ui_VideoSettingsUi()
+ self._ui.setupUi(self)
+
+ # sample rate:
+ audio_device = self._media_recorder.captureSession().audioInput().device()
+ self._ui.audioSampleRateBox.setRange(audio_device.minimumSampleRate(),
+ audio_device.maximumSampleRate())
+
+ # camera format
+ self._ui.videoFormatBox.addItem("Default camera format",
+ QCameraFormat())
+
+ camera = self._media_recorder.captureSession().camera()
+ video_formats = camera.cameraDevice().videoFormats()
+
+ for format in video_formats:
+ self._ui.videoFormatBox.addItem(to_formatted_string(format), format)
+
+ self._ui.videoFormatBox.currentIndexChanged.connect(self.video_format_changed)
+ self.set_fps_range(camera.cameraFormat())
+
+ self._ui.fpsSlider.valueChanged.connect(self._ui.fpsSpinBox.setValue)
+ self._ui.fpsSpinBox.valueChanged.connect(self._ui.fpsSlider.setValue)
+
+ self.update_formats_and_codecs()
+ self._ui.audioCodecBox.currentIndexChanged.connect(self.update_formats_and_codecs)
+ self._ui.videoCodecBox.currentIndexChanged.connect(self.update_formats_and_codecs)
+ self._ui.containerFormatBox.currentIndexChanged.connect(self.update_formats_and_codecs)
+
+ self._ui.qualitySlider.setRange(0, QMediaRecorder.VeryHighQuality.value)
+
+ format = self._media_recorder.mediaFormat()
+ select_combo_box_item(self._ui.containerFormatBox, format.fileFormat())
+ select_combo_box_item(self._ui.audioCodecBox, format.audioCodec())
+ select_combo_box_item(self._ui.videoCodecBox, format.videoCodec())
+
+ self._ui.qualitySlider.setValue(self._media_recorder.quality().value)
+ self._ui.audioSampleRateBox.setValue(self._media_recorder.audioSampleRate())
+ select_combo_box_item(self._ui.videoFormatBox, camera.cameraFormat())
+
+ self._ui.fpsSlider.setValue(self._media_recorder.videoFrameRate())
+ self._ui.fpsSpinBox.setValue(self._media_recorder.videoFrameRate())
+
+ def apply_settings(self):
+ format = QMediaFormat()
+ format.setFileFormat(box_value(self._ui.containerFormatBox))
+ format.setAudioCodec(box_value(self._ui.audioCodecBox))
+ format.setVideoCodec(box_value(self._ui.videoCodecBox))
+
+ self._media_recorder.setMediaFormat(format)
+ q = self._ui.qualitySlider.value()
+ self._media_recorder.setQuality(QMediaRecorder.Quality(q))
+ self._media_recorder.setAudioSampleRate(self._ui.audioSampleRateBox.value())
+
+ camera_format = box_value(self._ui.videoFormatBox)
+ self._media_recorder.setVideoResolution(camera_format.resolution())
+ self._media_recorder.setVideoFrameRate(self._ui.fpsSlider.value())
+
+ camera = self._media_recorder.captureSession().camera()
+ camera.setCameraFormat(camera_format)
+
+ def update_formats_and_codecs(self):
+ if self.m_updatingFormats:
+ return
+ self.m_updatingFormats = True
+
+ format = QMediaFormat()
+ if self._ui.containerFormatBox.count():
+ format.setFileFormat(box_value(self._ui.containerFormatBox))
+ if self._ui.audioCodecBox.count():
+ format.setAudioCodec(box_value(self._ui.audioCodecBox))
+ if self._ui.videoCodecBox.count():
+ format.setVideoCodec(box_value(self._ui.videoCodecBox))
+
+ current_index = 0
+ self._ui.audioCodecBox.clear()
+ self._ui.audioCodecBox.addItem("Default audio codec",
+ QMediaFormat.AudioCodec.Unspecified)
+ for codec in format.supportedAudioCodecs(QMediaFormat.Encode):
+ if codec == format.audioCodec():
+ current_index = self._ui.audioCodecBox.count()
+ desc = QMediaFormat.audioCodecDescription(codec)
+ self._ui.audioCodecBox.addItem(desc, codec)
+
+ self._ui.audioCodecBox.setCurrentIndex(current_index)
+
+ current_index = 0
+ self._ui.videoCodecBox.clear()
+ self._ui.videoCodecBox.addItem("Default video codec",
+ QMediaFormat.VideoCodec.Unspecified)
+ for codec in format.supportedVideoCodecs(QMediaFormat.Encode):
+ if codec == format.videoCodec():
+ current_index = self._ui.videoCodecBox.count()
+ desc = QMediaFormat.videoCodecDescription(codec)
+ self._ui.videoCodecBox.addItem(desc, codec)
+
+ self._ui.videoCodecBox.setCurrentIndex(current_index)
+
+ current_index = 0
+ self._ui.containerFormatBox.clear()
+ self._ui.containerFormatBox.addItem("Default file format",
+ QMediaFormat.UnspecifiedFormat)
+ for container in format.supportedFileFormats(QMediaFormat.Encode):
+ if container == format.fileFormat():
+ current_index = self._ui.containerFormatBox.count()
+ desc = QMediaFormat.fileFormatDescription(container)
+ self._ui.containerFormatBox.addItem(desc, container)
+
+ self._ui.containerFormatBox.setCurrentIndex(current_index)
+
+ self.m_updatingFormats = False
+
+ def video_format_changed(self):
+ camera_format = box_value(self._ui.videoFormatBox)
+ self.set_fps_range(camera_format)
+
+ def set_fps_range(self, format):
+ min_fr = format.minFrameRate()
+ max_fr = format.maxFrameRate()
+ self._ui.fpsSlider.setRange(min_fr, max_fr)
+ self._ui.fpsSpinBox.setRange(min_fr, max_fr)
diff --git a/examples/multimedia/camera/videosettings.ui b/examples/multimedia/camera/videosettings.ui
new file mode 100644
index 000000000..3c1f71f11
--- /dev/null
+++ b/examples/multimedia/camera/videosettings.ui
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>VideoSettingsUi</class>
+ <widget class="QDialog" name="VideoSettingsUi">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>686</width>
+ <height>499</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Video Settings</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="4" column="1">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Video</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0" colspan="2">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Camera Format</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="2">
+ <widget class="QComboBox" name="videoCodecBox"/>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string>Framerate:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Video Codec:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QComboBox" name="videoFormatBox"/>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QSpinBox" name="fpsSpinBox"/>
+ </item>
+ <item>
+ <widget class="QSlider" name="fpsSlider">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QWidget" name="widget" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="title">
+ <string>Audio</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Audio Codec:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="audioCodecBox"/>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Sample Rate:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="audioSampleRateBox"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Quality:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="qualitySlider">
+ <property name="maximum">
+ <number>4</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>File Format:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="containerFormatBox"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>VideoSettingsUi</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>322</x>
+ <y>272</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>44</x>
+ <y>230</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>VideoSettingsUi</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>405</x>
+ <y>262</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>364</x>
+ <y>227</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/examples/multimedia/camera/videosettings_mobile.ui b/examples/multimedia/camera/videosettings_mobile.ui
new file mode 100644
index 000000000..6584f07f9
--- /dev/null
+++ b/examples/multimedia/camera/videosettings_mobile.ui
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>VideoSettingsUi</class>
+ <widget class="QDialog" name="VideoSettingsUi">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>329</width>
+ <height>591</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Video Settings</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="2" column="0">
+ <widget class="QWidget" name="widget" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="title">
+ <string>Audio</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Audio Codec:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="audioCodecBox"/>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Sample Rate:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="audioSampleRateBox"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Quality:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="qualitySlider">
+ <property name="maximum">
+ <number>4</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>File Format:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="containerFormatBox"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Video</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="2" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Frames per second:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0" colspan="2">
+ <widget class="QComboBox" name="videoCodecBox"/>
+ </item>
+ <item row="0" column="0" colspan="2">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Camera Format:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="2">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Video Codec:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QComboBox" name="videoFormatBox"/>
+ </item>
+ <item row="7" column="0">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QSpinBox" name="fpsSpinBox">
+ <property name="minimum">
+ <number>8</number>
+ </property>
+ <property name="maximum">
+ <number>30</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="fpsSlider">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>VideoSettingsUi</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>322</x>
+ <y>272</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>44</x>
+ <y>230</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>VideoSettingsUi</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>405</x>
+ <y>262</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>364</x>
+ <y>227</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/examples/multimedia/player/player.py b/examples/multimedia/player/player.py
index 5aa31c5bd..d28f2887e 100644
--- a/examples/multimedia/player/player.py
+++ b/examples/multimedia/player/player.py
@@ -1,52 +1,15 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 Multimedia player example"""
import sys
from PySide6.QtCore import QStandardPaths, Qt, Slot
-from PySide6.QtGui import QAction, QIcon, QKeySequence, QScreen
+from PySide6.QtGui import QAction, QIcon, QKeySequence
from PySide6.QtWidgets import (QApplication, QDialog, QFileDialog,
- QMainWindow, QSlider, QStyle, QToolBar)
-from PySide6.QtMultimedia import QMediaFormat, QMediaPlayer, QMediaPlaylist
+ QMainWindow, QSlider, QStyle, QToolBar)
+from PySide6.QtMultimedia import (QAudioOutput, QMediaFormat,
+ QMediaPlayer)
from PySide6.QtMultimediaWidgets import QVideoWidget
@@ -69,51 +32,55 @@ class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
- self._playlist = QMediaPlaylist()
+ self._playlist = [] # FIXME 6.3: Replace by QMediaPlaylist?
+ self._playlist_index = -1
+ self._audio_output = QAudioOutput()
self._player = QMediaPlayer()
+ self._player.setAudioOutput(self._audio_output)
+
self._player.errorOccurred.connect(self._player_error)
tool_bar = QToolBar()
self.addToolBar(tool_bar)
file_menu = self.menuBar().addMenu("&File")
- icon = QIcon.fromTheme("document-open")
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.DocumentOpen)
open_action = QAction(icon, "&Open...", self,
shortcut=QKeySequence.Open, triggered=self.open)
file_menu.addAction(open_action)
tool_bar.addAction(open_action)
- icon = QIcon.fromTheme("application-exit")
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.ApplicationExit)
exit_action = QAction(icon, "E&xit", self,
shortcut="Ctrl+Q", triggered=self.close)
file_menu.addAction(exit_action)
play_menu = self.menuBar().addMenu("&Play")
style = self.style()
- icon = QIcon.fromTheme("media-playback-start.png",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.MediaPlaybackStart,
style.standardIcon(QStyle.SP_MediaPlay))
self._play_action = tool_bar.addAction(icon, "Play")
self._play_action.triggered.connect(self._player.play)
play_menu.addAction(self._play_action)
- icon = QIcon.fromTheme("media-skip-backward-symbolic.svg",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.MediaSkipBackward,
style.standardIcon(QStyle.SP_MediaSkipBackward))
self._previous_action = tool_bar.addAction(icon, "Previous")
self._previous_action.triggered.connect(self.previous_clicked)
play_menu.addAction(self._previous_action)
- icon = QIcon.fromTheme("media-playback-pause.png",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.MediaPlaybackPause,
style.standardIcon(QStyle.SP_MediaPause))
self._pause_action = tool_bar.addAction(icon, "Pause")
self._pause_action.triggered.connect(self._player.pause)
play_menu.addAction(self._pause_action)
- icon = QIcon.fromTheme("media-skip-forward-symbolic.svg",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.MediaSkipForward,
style.standardIcon(QStyle.SP_MediaSkipForward))
self._next_action = tool_bar.addAction(icon, "Next")
self._next_action.triggered.connect(self.next_clicked)
play_menu.addAction(self._next_action)
- icon = QIcon.fromTheme("media-playback-stop.png",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.MediaPlaybackStop,
style.standardIcon(QStyle.SP_MediaStop))
self._stop_action = tool_bar.addAction(icon, "Stop")
self._stop_action.triggered.connect(self._ensure_stopped)
@@ -125,15 +92,16 @@ class MainWindow(QMainWindow):
self._volume_slider.setMaximum(100)
available_width = self.screen().availableGeometry().width()
self._volume_slider.setFixedWidth(available_width / 10)
- self._volume_slider.setValue(self._player.volume())
+ self._volume_slider.setValue(self._audio_output.volume())
self._volume_slider.setTickInterval(10)
self._volume_slider.setTickPosition(QSlider.TicksBelow)
self._volume_slider.setToolTip("Volume")
- self._volume_slider.valueChanged.connect(self._player.setVolume)
+ self._volume_slider.valueChanged.connect(self._audio_output.setVolume)
tool_bar.addWidget(self._volume_slider)
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.HelpAbout)
about_menu = self.menuBar().addMenu("&About")
- about_qt_act = QAction("About &Qt", self, triggered=qApp.aboutQt)
+ about_qt_act = QAction(icon, "About &Qt", self, triggered=qApp.aboutQt) # noqa: F821
about_menu.addAction(about_qt_act)
self._video_widget = QVideoWidget()
@@ -158,6 +126,8 @@ class MainWindow(QMainWindow):
self._mime_types = get_supported_mime_types()
if (is_windows and AVI not in self._mime_types):
self._mime_types.append(AVI)
+ elif MP4 not in self._mime_types:
+ self._mime_types.append(MP4)
file_dialog.setMimeTypeFilters(self._mime_types)
@@ -169,7 +139,8 @@ class MainWindow(QMainWindow):
file_dialog.setDirectory(movies_location)
if file_dialog.exec() == QDialog.Accepted:
url = file_dialog.selectedUrls()[0]
- self._playlist.addMedia(url)
+ self._playlist.append(url)
+ self._playlist_index = len(self._playlist) - 1
self._player.setSource(url)
self._player.play()
@@ -182,21 +153,23 @@ class MainWindow(QMainWindow):
def previous_clicked(self):
# Go to previous track if we are within the first 5 seconds of playback
# Otherwise, seek to the beginning.
- if self._player.position() <= 5000:
+ if self._player.position() <= 5000 and self._playlist_index > 0:
+ self._playlist_index -= 1
self._playlist.previous()
- self._player.setSource(self._playlist.currentMedia())
+ self._player.setSource(self._playlist[self._playlist_index])
else:
self._player.setPosition(0)
@Slot()
def next_clicked(self):
- self._playlist.next()
- self._player.setSource(self._playlist.currentMedia())
+ if self._playlist_index < len(self._playlist) - 1:
+ self._playlist_index += 1
+ self._player.setSource(self._playlist[self._playlist_index])
+ @Slot("QMediaPlayer::PlaybackState")
def update_buttons(self, state):
- media_count = self._playlist.mediaCount()
- self._play_action.setEnabled(media_count > 0
- and state != QMediaPlayer.PlayingState)
+ media_count = len(self._playlist)
+ self._play_action.setEnabled(media_count > 0 and state != QMediaPlayer.PlayingState)
self._pause_action.setEnabled(state == QMediaPlayer.PlayingState)
self._stop_action.setEnabled(state != QMediaPlayer.StoppedState)
self._previous_action.setEnabled(self._player.position() > 0)
@@ -205,7 +178,7 @@ class MainWindow(QMainWindow):
def show_status_message(self, message):
self.statusBar().showMessage(message, 5000)
- @Slot(QMediaPlayer.Error, str)
+ @Slot("QMediaPlayer::Error", str)
def _player_error(self, error, error_string):
print(error_string, file=sys.stderr)
self.show_status_message(error_string)
diff --git a/examples/multimedia/screencapture/doc/screencapture.rst b/examples/multimedia/screencapture/doc/screencapture.rst
new file mode 100644
index 000000000..116d7773b
--- /dev/null
+++ b/examples/multimedia/screencapture/doc/screencapture.rst
@@ -0,0 +1,42 @@
+Screen Capture Example
+======================
+
+Screen Capture demonstrates how to capture a screen or window using
+``QScreenCapture`` and ``QWindowCapture``. The example shows a list of screens
+and windows and displays a live preview of the selected item using a
+``QMediaCaptureSession`` and a ``QVideoWidget``. Capturing can be started and
+stopped with a ``QPushButton``.
+
+Application Structure
++++++++++++++++++++++
+
+The example consists of three custom classes. The UI and all screen capture
+functionality is implemented in the class ``ScreenCapturePreview``. The classes
+``ScreenListModel`` and ``WindowListModel`` only serve as models behind the two
+``QListView`` widgets. The main function creates a ``ScreenCapturePreview``
+object, which in turn creates instances of ``QScreenCapture`` and
+``QWindowCapture``, and a ``QMediaCaptureSession`` and ``QVideoWidget``, in
+addition to all the UI widgets.
+
+The screen and window models are populated with the return values of
+``QGuiApplication.screens()`` and ``QWindowCapture.capturableWindows()``,
+respectively.
+
+When a list item is selected, it is connected to the ``QScreenCapture`` object
+with ``QScreenCapture.setScreen()``, or to the ``QWindowCapture`` object with
+``QWindowCapture.setWindow().`` The capture object is connected to the
+``QMediaCaptureSession`` object with
+``QMediaCaptureSession.setScreenCapture()`` and
+``QMediaCaptureSession.setWindowCapture()``, respectively. The capture session
+in turn is connected to the ``QVideoWidget`` object with
+``QMediaCaptureSession.setVideoOutput()``. Thus, the capture output is
+previewed in the video widget on the right hand side of the UI.
+
+The start/stop button calls ``QScreenCapture.start()`` and ``QScreenCapture.stop()``,
+or ``QWindowCapture.start()`` and ``QWindowCapture.stop()``.
+
+A QMessageBox pops up if an ``errorOccurred`` signal is emitted.
+
+.. image. screencapture.webp
+ :width: 600
+ :alt: screen capture example
diff --git a/examples/multimedia/screencapture/doc/screencapture.webp b/examples/multimedia/screencapture/doc/screencapture.webp
new file mode 100644
index 000000000..58ad36c7f
--- /dev/null
+++ b/examples/multimedia/screencapture/doc/screencapture.webp
Binary files differ
diff --git a/examples/multimedia/screencapture/main.py b/examples/multimedia/screencapture/main.py
new file mode 100644
index 000000000..f445bac03
--- /dev/null
+++ b/examples/multimedia/screencapture/main.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the QtMultiMedia Screen Capture Example from Qt v6.x"""
+
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtWidgets import QApplication
+
+from screencapturepreview import ScreenCapturePreview
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ QCoreApplication.setApplicationName("screencapture")
+ QCoreApplication.setOrganizationName("QtProject")
+ screen_capture_preview = ScreenCapturePreview()
+ screen_capture_preview.show()
+ sys.exit(app.exec())
diff --git a/examples/multimedia/screencapture/screencapture.pyproject b/examples/multimedia/screencapture/screencapture.pyproject
new file mode 100644
index 000000000..dfec6c901
--- /dev/null
+++ b/examples/multimedia/screencapture/screencapture.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "screencapturepreview.py", "screenlistmodel.py", "windowlistmodel.py"]
+}
diff --git a/examples/multimedia/screencapture/screencapturepreview.py b/examples/multimedia/screencapture/screencapturepreview.py
new file mode 100644
index 000000000..c7e0c596a
--- /dev/null
+++ b/examples/multimedia/screencapture/screencapturepreview.py
@@ -0,0 +1,162 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from enum import Enum, auto
+
+from PySide6.QtMultimediaWidgets import QVideoWidget
+from PySide6.QtMultimedia import (QCapturableWindow, QMediaCaptureSession,
+ QScreenCapture, QWindowCapture)
+from PySide6.QtWidgets import (QGridLayout, QLabel, QListView,
+ QMessageBox, QPushButton, QWidget)
+from PySide6.QtGui import QAction, QGuiApplication
+from PySide6.QtCore import QItemSelection, Qt, Slot
+
+from screenlistmodel import ScreenListModel
+from windowlistmodel import WindowListModel
+
+
+class SourceType(Enum):
+ Screen = auto()
+ Window = auto()
+
+
+class ScreenCapturePreview(QWidget):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self._source = SourceType.Screen
+
+ self._screen_capture = QScreenCapture(self)
+ self._media_capture_session = QMediaCaptureSession(self)
+ self._video_widget = QVideoWidget(self)
+ self._screen_list_view = QListView(self)
+ self._screen_label = QLabel("Select screen to capture:", self)
+ self._video_widget_label = QLabel("Capture output:", self)
+ self._start_stop_button = QPushButton(self)
+ self._status_label = QLabel(self)
+
+ self._screen_list_model = ScreenListModel(self)
+
+ # Setup QScreenCapture with initial source:
+ self.setScreen(QGuiApplication.primaryScreen())
+ self._screen_capture.start()
+ self._media_capture_session.setScreenCapture(self._screen_capture)
+ self._media_capture_session.setVideoOutput(self._video_widget)
+
+ self._screen_list_view.setModel(self._screen_list_model)
+
+ self._window_list_view = QListView(self)
+ self._window_capture = QWindowCapture(self)
+ self._media_capture_session.setWindowCapture(self._window_capture)
+ self._window_label = QLabel("Select window to capture:", self)
+
+ self._window_list_model = WindowListModel(self)
+ self._window_list_view.setModel(self._window_list_model)
+ update_action = QAction("Update windows List", self)
+ update_action.triggered.connect(self._window_list_model.populate)
+ self._window_list_view.addAction(update_action)
+ self._window_list_view.setContextMenuPolicy(Qt.ActionsContextMenu)
+
+ grid_layout = QGridLayout(self)
+ grid_layout.addWidget(self._screen_label, 0, 0)
+ grid_layout.addWidget(self._screen_list_view, 1, 0)
+ grid_layout.addWidget(self._start_stop_button, 4, 0)
+ grid_layout.addWidget(self._video_widget_label, 0, 1)
+ grid_layout.addWidget(self._video_widget, 1, 1, 4, 1)
+ grid_layout.addWidget(self._window_label, 2, 0)
+ grid_layout.addWidget(self._window_list_view, 3, 0)
+ grid_layout.addWidget(self._status_label, 5, 0, 1, 2)
+
+ grid_layout.setColumnStretch(1, 1)
+ grid_layout.setRowStretch(1, 1)
+ grid_layout.setColumnMinimumWidth(0, 400)
+ grid_layout.setColumnMinimumWidth(1, 400)
+ grid_layout.setRowMinimumHeight(3, 1)
+
+ selection_model = self._screen_list_view.selectionModel()
+ selection_model.selectionChanged.connect(self.on_current_screen_selection_changed)
+ selection_model = self._window_list_view.selectionModel()
+ selection_model.selectionChanged.connect(self.on_current_window_selection_changed)
+
+ self._start_stop_button.clicked.connect(self.on_start_stop_button_clicked)
+ self._screen_capture.errorOccurred.connect(self.on_screen_capture_error_occured,
+ Qt.QueuedConnection)
+ self._window_capture.errorOccurred.connect(self.on_window_capture_error_occured,
+ Qt.QueuedConnection)
+ self.update_active(SourceType.Screen, True)
+
+ @Slot(QItemSelection)
+ def on_current_screen_selection_changed(self, selection):
+ self.clear_error_string()
+ indexes = selection.indexes()
+ if indexes:
+ self._screen_capture.setScreen(self._screen_list_model.screen(indexes[0]))
+ self.update_active(SourceType.Screen, self.is_active())
+ self._window_list_view.clearSelection()
+ else:
+ self._screen_capture.setScreen(None)
+
+ @Slot(QItemSelection)
+ def on_current_window_selection_changed(self, selection):
+ self.clear_error_string()
+ indexes = selection.indexes()
+ if indexes:
+ window = self._window_list_model.window(indexes[0])
+ if not window.isValid():
+ m = "The window is no longer valid. Update the list of windows?"
+ answer = QMessageBox.question(self, "Invalid window", m)
+ if answer == QMessageBox.Yes:
+ self.update_active(SourceType.Window, False)
+ self._window_list_view.clearSelection()
+ self._window_list_model.populate()
+ return
+ self._window_capture.setWindow(window)
+ self.update_active(SourceType.Window, self.is_active())
+ self._screen_list_view.clearSelection()
+ else:
+ self._window_capture.setWindow(QCapturableWindow())
+
+ @Slot(QWindowCapture.Error, str)
+ def on_window_capture_error_occured(self, error, error_string):
+ self.set_error_string("QWindowCapture: Error occurred " + error_string)
+
+ @Slot(QScreenCapture.Error, str)
+ def on_screen_capture_error_occured(self, error, error_string):
+ self.set_error_string("QScreenCapture: Error occurred " + error_string)
+
+ def set_error_string(self, t):
+ self._status_label.setStyleSheet("background-color: rgb(255, 0, 0);")
+ self._status_label.setText(t)
+
+ def clear_error_string(self):
+ self._status_label.clear()
+ self._status_label.setStyleSheet("")
+
+ @Slot()
+ def on_start_stop_button_clicked(self):
+ self.clear_error_string()
+ self.update_active(self._source_type, not self.is_active())
+
+ def update_start_stop_button_text(self):
+ active = self.is_active()
+ if self._source_type == SourceType.Window:
+ m = "Stop window capture" if active else "Start window capture"
+ self._start_stop_button.setText(m)
+ elif self._source_type == SourceType.Screen:
+ m = "Stop screen capture" if active else "Start screen capture"
+ self._start_stop_button.setText(m)
+
+ def update_active(self, source_type, active):
+ self._source_type = source_type
+ self._screen_capture.setActive(active and source_type == SourceType.Screen)
+ self._window_capture.setActive(active and source_type == SourceType.Window)
+
+ self.update_start_stop_button_text()
+
+ def is_active(self):
+ if self._source_type == SourceType.Window:
+ return self._window_capture.isActive()
+ if self._source_type == SourceType.Screen:
+ return self._screen_capture.isActive()
+ return False
diff --git a/examples/multimedia/screencapture/screenlistmodel.py b/examples/multimedia/screencapture/screenlistmodel.py
new file mode 100644
index 000000000..72bb306e3
--- /dev/null
+++ b/examples/multimedia/screencapture/screenlistmodel.py
@@ -0,0 +1,38 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtCore import QAbstractListModel, Qt, Slot
+
+
+class ScreenListModel(QAbstractListModel):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ app = qApp # noqa: F821
+ app.screenAdded.connect(self.screens_changed)
+ app.screenRemoved.connect(self.screens_changed)
+ app.primaryScreenChanged.connect(self.screens_changed)
+
+ def rowCount(self, index):
+ return len(QGuiApplication.screens())
+
+ def data(self, index, role):
+ screen_list = QGuiApplication.screens()
+
+ if role == Qt.DisplayRole:
+ screen = screen_list[index.row()]
+ w = screen.size().width()
+ h = screen.size().height()
+ dpi = screen.logicalDotsPerInch()
+ return f'"{screen.name()}" {w}x{h}, {dpi}DPI'
+
+ return None
+
+ def screen(self, index):
+ return QGuiApplication.screens()[index.row()]
+
+ @Slot()
+ def screens_changed(self):
+ self.beginResetModel()
+ self.endResetModel()
diff --git a/examples/multimedia/screencapture/windowlistmodel.py b/examples/multimedia/screencapture/windowlistmodel.py
new file mode 100644
index 000000000..079040ec2
--- /dev/null
+++ b/examples/multimedia/screencapture/windowlistmodel.py
@@ -0,0 +1,30 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QAbstractListModel, Qt, Slot
+from PySide6.QtMultimedia import QWindowCapture
+
+
+class WindowListModel(QAbstractListModel):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._window_list = QWindowCapture.capturableWindows()
+
+ def rowCount(self, QModelIndex):
+ return len(self._window_list)
+
+ def data(self, index, role):
+ if role == Qt.DisplayRole:
+ window = self._window_list[index.row()]
+ return window.description()
+ return None
+
+ def window(self, index):
+ return self._window_list[index.row()]
+
+ @Slot()
+ def populate(self):
+ self.beginResetModel()
+ self._window_list = QWindowCapture.capturableWindows()
+ self.endResetModel()
diff --git a/examples/network/blockingfortuneclient/blockingfortuneclient.py b/examples/network/blockingfortuneclient/blockingfortuneclient.py
index 50f4c1662..d0dd7e0ad 100644
--- a/examples/network/blockingfortuneclient/blockingfortuneclient.py
+++ b/examples/network/blockingfortuneclient/blockingfortuneclient.py
@@ -1,54 +1,17 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the network/blockingfortunclient example from Qt v5.x, originating from PyQt"""
from PySide6.QtCore import (Signal, QDataStream, QMutex, QMutexLocker,
- QThread, QWaitCondition)
+ QThread, QWaitCondition)
from PySide6.QtGui import QIntValidator
from PySide6.QtWidgets import (QApplication, QDialogButtonBox, QGridLayout,
- QLabel, QLineEdit, QMessageBox, QPushButton, QWidget)
+ QLabel, QLineEdit, QMessageBox, QPushButton,
+ QWidget)
from PySide6.QtNetwork import (QAbstractSocket, QHostAddress, QNetworkInterface,
- QTcpSocket)
+ QTcpSocket)
class FortuneThread(QThread):
@@ -73,13 +36,13 @@ class FortuneThread(QThread):
self.wait()
def request_new_fortune(self, hostname, port):
- locker = QMutexLocker(self.mutex)
- self._host_name = hostname
- self.port = port
- if not self.isRunning():
- self.start()
- else:
- self.cond.wakeOne()
+ with QMutexLocker(self.mutex):
+ self._host_name = hostname
+ self.port = port
+ if not self.isRunning():
+ self.start()
+ else:
+ self.cond.wakeOne()
def run(self):
self.mutex.lock()
@@ -147,7 +110,7 @@ class BlockingClient(QWidget):
port_label.setBuddy(self._port_line_edit)
self._status_label = QLabel(
- "This example requires that you run the Fortune Server example as well.")
+ "This example requires that you run the Fortune Server example as well.")
self._status_label.setWordWrap(True)
self._get_fortune_button = QPushButton("Get Fortune")
@@ -182,7 +145,7 @@ class BlockingClient(QWidget):
def request_new_fortune(self):
self._get_fortune_button.setEnabled(False)
self.thread.request_new_fortune(self._host_line_edit.text(),
- int(self._port_line_edit.text()))
+ int(self._port_line_edit.text()))
def show_fortune(self, nextFortune):
if nextFortune == self._current_fortune:
@@ -196,22 +159,22 @@ class BlockingClient(QWidget):
def display_error(self, socketError, message):
if socketError == QAbstractSocket.HostNotFoundError:
QMessageBox.information(self, "Blocking Fortune Client",
- "The host was not found. Please check the host and port "
- "settings.")
+ "The host was not found. Please check the host and port "
+ "settings.")
elif socketError == QAbstractSocket.ConnectionRefusedError:
QMessageBox.information(self, "Blocking Fortune Client",
- "The connection was refused by the peer. Make sure the "
- "fortune server is running, and check that the host name "
- "and port settings are correct.")
+ "The connection was refused by the peer. Make sure the "
+ "fortune server is running, and check that the host name "
+ "and port settings are correct.")
else:
QMessageBox.information(self, "Blocking Fortune Client",
- f"The following error occurred: {message}.")
+ f"The following error occurred: {message}.")
self._get_fortune_button.setEnabled(True)
def enable_get_fortune_button(self):
- self._get_fortune_button.setEnabled(self._host_line_edit.text() != '' and
- self._port_line_edit.text() != '')
+ self._get_fortune_button.setEnabled(self._host_line_edit.text() != ''
+ and self._port_line_edit.text() != '')
if __name__ == '__main__':
diff --git a/examples/network/downloader/downloader.py b/examples/network/downloader/downloader.py
index a63c49be8..fba0cb980 100644
--- a/examples/network/downloader/downloader.py
+++ b/examples/network/downloader/downloader.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtWidgets import (
QWidget,
@@ -72,7 +35,8 @@ class DownloaderWidget(QWidget):
self.link_box.setPlaceholderText("Download Link ...")
self._open_folder_action = self.dest_box.addAction(
- qApp.style().standardIcon(QStyle.SP_DirOpenIcon), QLineEdit.TrailingPosition
+ qApp.style().standardIcon(QStyle.SP_DirOpenIcon), # noqa: F821
+ QLineEdit.TrailingPosition
)
self._open_folder_action.triggered.connect(self.on_open_folder)
diff --git a/examples/network/fortuneclient/fortuneclient.py b/examples/network/fortuneclient/fortuneclient.py
index a94b62ec8..e88e5e35b 100644
--- a/examples/network/fortuneclient/fortuneclient.py
+++ b/examples/network/fortuneclient/fortuneclient.py
@@ -1,55 +1,16 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the network/fortuneclient example from Qt v5.x"""
import sys
-from PySide6.QtCore import QDataStream, QTimer, Qt
+from PySide6.QtCore import QDataStream, QTimer
from PySide6.QtGui import QIntValidator
from PySide6.QtNetwork import QAbstractSocket, QTcpSocket
from PySide6.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QGridLayout,
- QLabel, QLineEdit, QMessageBox, QPushButton,
- QVBoxLayout, QWidget)
+ QLabel, QLineEdit, QMessageBox, QPushButton)
class Client(QDialog):
@@ -70,7 +31,7 @@ class Client(QDialog):
port_label.setBuddy(self._port_line_edit)
self._status_label = QLabel("This examples requires that you run "
- "the Fortune Server example as well.")
+ "the Fortune Server example as well.")
self._get_fortune_button = QPushButton("Get Fortune")
self._get_fortune_button.setDefault(True)
@@ -79,8 +40,7 @@ class Client(QDialog):
quit_button = QPushButton("Quit")
button_box = QDialogButtonBox()
- button_box.addButton(self._get_fortune_button,
- QDialogButtonBox.ActionRole)
+ button_box.addButton(self._get_fortune_button, QDialogButtonBox.ActionRole)
button_box.addButton(quit_button, QDialogButtonBox.RejectRole)
self._tcp_socket = QTcpSocket(self)
@@ -108,7 +68,7 @@ class Client(QDialog):
self._block_size = 0
self._tcp_socket.abort()
self._tcp_socket.connectToHost(self._host_line_edit.text(),
- int(self._port_line_edit.text()))
+ int(self._port_line_edit.text()))
def read_fortune(self):
instr = QDataStream(self._tcp_socket)
@@ -138,23 +98,23 @@ class Client(QDialog):
pass
elif socketError == QAbstractSocket.HostNotFoundError:
QMessageBox.information(self, "Fortune Client",
- "The host was not found. Please check the host name and "
- "port settings.")
+ "The host was not found. Please check the host name and "
+ "port settings.")
elif socketError == QAbstractSocket.ConnectionRefusedError:
QMessageBox.information(self, "Fortune Client",
- "The connection was refused by the peer. Make sure the "
- "fortune server is running, and check that the host name "
- "and port settings are correct.")
+ "The connection was refused by the peer. Make sure the "
+ "fortune server is running, and check that the host name "
+ "and port settings are correct.")
else:
reason = self._tcp_socket.errorString()
QMessageBox.information(self, "Fortune Client",
- f"The following error occurred: {reason}.")
+ f"The following error occurred: {reason}.")
self._get_fortune_button.setEnabled(True)
def enable_get_fortune_button(self):
- self._get_fortune_button.setEnabled(bool(self._host_line_edit.text() and
- self._port_line_edit.text()))
+ self._get_fortune_button.setEnabled(bool(self._host_line_edit.text()
+ and self._port_line_edit.text()))
if __name__ == '__main__':
diff --git a/examples/network/fortuneserver/fortuneserver.py b/examples/network/fortuneserver/fortuneserver.py
index d315dcf23..a94a49f42 100644
--- a/examples/network/fortuneserver/fortuneserver.py
+++ b/examples/network/fortuneserver/fortuneserver.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the network/fortuneserver example from Qt v5.x"""
@@ -49,7 +11,7 @@ from PySide6.QtCore import QByteArray, QDataStream, QIODevice, Qt
from PySide6.QtNetwork import QTcpServer
from PySide6.QtWidgets import (QApplication, QDialog, QHBoxLayout,
QLabel, QMessageBox, QPushButton,
- QVBoxLayout, QWidget)
+ QVBoxLayout)
class Server(QDialog):
@@ -65,21 +27,21 @@ class Server(QDialog):
if not self._tcp_server.listen():
reason = self._tcp_server.errorString()
QMessageBox.critical(self, "Fortune Server",
- f"Unable to start the server: {reason}.")
+ f"Unable to start the server: {reason}.")
self.close()
return
port = self._tcp_server.serverPort()
status_label.setText(f"The server is running on port {port}.\nRun the "
- "Fortune Client example now.")
+ "Fortune Client example now.")
self.fortunes = (
- "You've been leading a dog's life. Stay off the furniture.",
- "You've got to think about tomorrow.",
- "You will be surprised by a loud noise.",
- "You will feel hungry again in another hour.",
- "You might have mail.",
- "You cannot kill time without injuring eternity.",
- "Computers are not intelligent. They only think they are.")
+ "You've been leading a dog's life. Stay off the furniture.",
+ "You've got to think about tomorrow.",
+ "You will be surprised by a loud noise.",
+ "You will feel hungry again in another hour.",
+ "You might have mail.",
+ "You cannot kill time without injuring eternity.",
+ "Computers are not intelligent. They only think they are.")
quit_button.clicked.connect(self.close)
self._tcp_server.newConnection.connect(self.send_fortune)
diff --git a/examples/network/googlesuggest/doc/googlesuggest.png b/examples/network/googlesuggest/doc/googlesuggest.png
new file mode 100644
index 000000000..cb2e91d4d
--- /dev/null
+++ b/examples/network/googlesuggest/doc/googlesuggest.png
Binary files differ
diff --git a/examples/network/googlesuggest/doc/googlesuggest.rst b/examples/network/googlesuggest/doc/googlesuggest.rst
new file mode 100644
index 000000000..ada224311
--- /dev/null
+++ b/examples/network/googlesuggest/doc/googlesuggest.rst
@@ -0,0 +1,11 @@
+Google Suggest Example
+======================
+
+Obtains the list of search recommendations by the Google search engine.
+
+The example uses the QNetworkAccessManager to obtain the list of search
+recommendations by Google as the user types into a QLineEdit.
+
+.. image:: googlesuggest.png
+ :width: 502
+ :alt: google suggest program screenshot
diff --git a/examples/network/googlesuggest/googlesuggest.py b/examples/network/googlesuggest/googlesuggest.py
new file mode 100644
index 000000000..d3fc67c05
--- /dev/null
+++ b/examples/network/googlesuggest/googlesuggest.py
@@ -0,0 +1,136 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from typing import List
+
+from PySide6.QtCore import (QByteArray, QEvent, QObject, QPoint, Qt, QTimer,
+ QXmlStreamReader, Slot)
+from PySide6.QtGui import QPalette
+from PySide6.QtNetwork import (QNetworkAccessManager, QNetworkReply,
+ QNetworkRequest)
+from PySide6.QtWidgets import QFrame, QTreeWidget, QTreeWidgetItem
+
+
+class GSuggestCompletion(QObject):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.editor = parent
+ self.popup = QTreeWidget()
+ self.popup.setWindowFlags(Qt.Popup)
+ self.popup.setFocusPolicy(Qt.NoFocus)
+ self.popup.setFocusProxy(parent)
+ self.popup.setMouseTracking(True)
+
+ self.popup.setColumnCount(1)
+ self.popup.setUniformRowHeights(True)
+ self.popup.setRootIsDecorated(False)
+ self.popup.setEditTriggers(QTreeWidget.NoEditTriggers)
+ self.popup.setSelectionBehavior(QTreeWidget.SelectRows)
+ self.popup.setFrameStyle(QFrame.Box | QFrame.Plain)
+ self.popup.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
+ self.popup.header().hide()
+
+ self.popup.installEventFilter(self)
+
+ self.popup.itemClicked.connect(self.done_completion)
+
+ self.timer = QTimer()
+ self.timer.setSingleShot(True)
+ self.timer.setInterval(500)
+ self.timer.timeout.connect(self.auto_suggest)
+ self.editor.textEdited.connect(self.timer.start)
+
+ self.network_manager = QNetworkAccessManager()
+ self.network_manager.finished.connect(self.handle_network_data)
+
+ def eventFilter(self, obj: QObject, ev: QEvent):
+ if obj is not self.popup:
+ return False
+ if ev.type() == QEvent.MouseButtonPress:
+ self.popup.hide()
+ self.editor.setFocus()
+ return True
+
+ if ev.type() == QEvent.KeyPress:
+ consumed = False
+ key = ev.key()
+ if key in (Qt.Key_Enter, Qt.Key_Return):
+ self.done_completion()
+ consumed = True
+ elif key == Qt.Key_Escape:
+ self.editor.setFocus()
+ self.popup.hide()
+ consumed = True
+ elif key in (
+ Qt.Key_Up,
+ Qt.Key_Down,
+ Qt.Key_Home,
+ Qt.Key_End,
+ Qt.Key_PageUp,
+ Qt.Key_PageDown,
+ ):
+ pass
+ else:
+ self.editor.setFocus()
+ self.editor.event(ev)
+ self.popup.hide()
+ return consumed
+ return False
+
+ def show_completion(self, choices: List[str]):
+ if not choices:
+ return
+ pal = self.editor.palette()
+ color = pal.color(QPalette.Disabled, QPalette.WindowText)
+
+ self.popup.setUpdatesEnabled(False)
+ self.popup.clear()
+
+ for choice in choices:
+ item = QTreeWidgetItem(self.popup)
+ item.setText(0, choice)
+ item.setForeground(0, color)
+
+ self.popup.setCurrentItem(self.popup.topLevelItem(0))
+ self.popup.resizeColumnToContents(0)
+ self.popup.setUpdatesEnabled(True)
+
+ self.popup.move(self.editor.mapToGlobal(QPoint(0, self.editor.height())))
+ self.popup.setFocus()
+ self.popup.show()
+
+ @Slot()
+ def done_completion(self):
+ self.timer.stop()
+ self.popup.hide()
+ self.editor.setFocus()
+ item = self.popup.currentItem()
+ if item:
+ self.editor.setText(item.text(0))
+ self.editor.returnPressed.emit()
+
+ @Slot()
+ def auto_suggest(self):
+ s = self.editor.text()
+ url = f"https://google.com/complete/search?output=toolbar&q={s}"
+ self.network_manager.get(QNetworkRequest(url))
+
+ def prevent_suggest(self):
+ self.timer.stop()
+
+ @Slot(QNetworkReply)
+ def handle_network_data(self, network_reply: QNetworkReply):
+ if network_reply.error() == QNetworkReply.NoError:
+ choices: List[str] = []
+
+ response: QByteArray = network_reply.readAll()
+ xml = QXmlStreamReader(str(response))
+ while not xml.atEnd():
+ xml.readNext()
+ if xml.tokenType() == QXmlStreamReader.StartElement:
+ if xml.name() == "suggestion":
+ s = xml.attributes().value("data")
+ choices.append(s)
+ self.show_completion(choices)
+
+ network_reply.deleteLater()
diff --git a/examples/network/googlesuggest/googlesuggest.pyproject b/examples/network/googlesuggest/googlesuggest.pyproject
new file mode 100644
index 000000000..a8cb57674
--- /dev/null
+++ b/examples/network/googlesuggest/googlesuggest.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "googlesuggest.py"]
+}
diff --git a/examples/network/googlesuggest/main.py b/examples/network/googlesuggest/main.py
new file mode 100644
index 000000000..1efda08e6
--- /dev/null
+++ b/examples/network/googlesuggest/main.py
@@ -0,0 +1,14 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtWidgets import QApplication
+
+from searchbox import SearchBox
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ search_edit = SearchBox()
+ search_edit.show()
+ sys.exit(app.exec())
diff --git a/examples/network/googlesuggest/searchbox.py b/examples/network/googlesuggest/searchbox.py
new file mode 100644
index 000000000..9cbe20b23
--- /dev/null
+++ b/examples/network/googlesuggest/searchbox.py
@@ -0,0 +1,27 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Slot
+from PySide6.QtGui import QDesktopServices
+from PySide6.QtWidgets import QLineEdit
+
+from googlesuggest import GSuggestCompletion
+
+
+class SearchBox(QLineEdit):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.completer = GSuggestCompletion(self)
+
+ self.returnPressed.connect(self.do_search)
+ self.setWindowTitle("Search with Google")
+
+ self.adjustSize()
+ self.resize(400, self.height())
+ self.setFocus()
+
+ @Slot()
+ def do_search(self):
+ self.completer.prevent_suggest()
+ url = f"https://www.google.com/search?q={self.text()}"
+ QDesktopServices.openUrl(url)
diff --git a/examples/network/loopback/dialog.py b/examples/network/loopback/dialog.py
new file mode 100644
index 000000000..673afce28
--- /dev/null
+++ b/examples/network/loopback/dialog.py
@@ -0,0 +1,151 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QByteArray, Qt
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtNetwork import (QAbstractSocket, QHostAddress, QTcpServer,
+ QTcpSocket)
+from PySide6.QtWidgets import (QDialog, QDialogButtonBox, QLabel, QMessageBox,
+ QProgressBar, QPushButton, QVBoxLayout)
+
+
+class Dialog(QDialog):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.total_bytes = 50 * 1024 * 1024 # 50 MB
+ self.payload_size = 64 * 1024 # 64 KB
+
+ self.bytes_to_write = 0
+ self.bytes_written = 0
+ self.bytes_received = 0
+
+ self.client_progress_bar = QProgressBar()
+ self.client_status_label = QLabel("Client ready")
+ self.server_progress_bar = QProgressBar()
+ self.server_status_label = QLabel("Server ready")
+
+ self.start_button = QPushButton("&Start")
+ self.quit_button = QPushButton("&Quit")
+
+ self.button_box = QDialogButtonBox()
+ self.button_box.addButton(self.start_button, QDialogButtonBox.ActionRole)
+ self.button_box.addButton(self.quit_button, QDialogButtonBox.RejectRole)
+
+ self.start_button.clicked.connect(self.start)
+ self.quit_button.clicked.connect(self.close)
+
+ self.tcp_server = QTcpServer()
+ self.tcp_client = QTcpSocket()
+ self.tcp_server.newConnection.connect(self.accept_connection)
+ self.tcp_client.connected.connect(self.start_transfer)
+ self.tcp_client.bytesWritten.connect(self.update_client_progress)
+ self.tcp_client.errorOccurred.connect(self.display_error)
+
+ main_layout = QVBoxLayout()
+ main_layout.addWidget(self.client_progress_bar)
+ main_layout.addWidget(self.client_status_label)
+ main_layout.addWidget(self.server_progress_bar)
+ main_layout.addWidget(self.server_status_label)
+ main_layout.addStretch(1)
+ main_layout.addSpacing(10)
+ main_layout.addWidget(self.button_box)
+ self.setLayout(main_layout)
+
+ self.setWindowTitle("Loopback")
+
+ def start(self):
+
+ self.start_button.setEnabled(False)
+
+ QGuiApplication.setOverrideCursor(Qt.WaitCursor)
+
+ self.bytes_written = 0
+ self.bytes_received = 0
+
+ while not self.tcp_server.isListening() and not self.tcp_server.listen():
+ ret: QMessageBox.StandardButton = QMessageBox.critical(
+ self,
+ "Loopback",
+ f"Unable to start the test {self.tcp_server.errorString()}",
+ QMessageBox.Retry | QMessageBox.Cancel,
+ )
+ if ret == QMessageBox.Cancel:
+ return
+
+ self.server_status_label.setText("Listening")
+ self.client_status_label.setText("Connecting")
+ self.tcp_client.connectToHost(QHostAddress.LocalHost, self.tcp_server.serverPort())
+
+ def accept_connection(self):
+
+ self.tcp_server_connection = self.tcp_server.nextPendingConnection()
+ if not self.tcp_server_connection:
+ self.server_status_label.setText("Error: got invalid pending connection")
+ return
+
+ self.tcp_server_connection.readyRead.connect(self.update_server_progress)
+ self.tcp_server_connection.errorOccurred.connect(self.display_error)
+ self.tcp_server_connection.disconnected.connect(self.tcp_server_connection.deleteLater)
+
+ self.server_status_label.setText("Accepted connection")
+ self.tcp_server.close()
+
+ def start_transfer(self):
+
+ # Called when the TCP client has connected to the loopback server
+ self.bytes_to_write = self.total_bytes - self.tcp_client.write(
+ QByteArray(self.payload_size, "@")
+ )
+ self.client_status_label.setText("Connected")
+
+ def update_server_progress(self):
+
+ self.bytes_received += self.tcp_server_connection.bytesAvailable()
+ self.tcp_server_connection.readAll()
+
+ self.server_progress_bar.setMaximum(self.total_bytes)
+ self.server_progress_bar.setValue(self.bytes_received)
+ self.server_status_label.setText(f"Received {self.bytes_received / (1024 ** 2)} MB")
+
+ if self.bytes_received == self.total_bytes:
+
+ self.tcp_server_connection.close()
+ self.start_button.setEnabled(True)
+
+ QGuiApplication.restoreOverrideCursor()
+
+ def update_client_progress(self, num_bytes: int):
+
+ # called when the TCP client has written some bytes
+ self.bytes_written += num_bytes
+
+ # only write more if not finished and when the Qt write buffer is below a certain size
+ if self.bytes_to_write > 0 and self.tcp_client.bytesToWrite() <= 4 * self.payload_size:
+ self.bytes_to_write -= self.tcp_client.write(
+ QByteArray(min(self.bytes_to_write, self.payload_size), "@")
+ )
+
+ self.client_progress_bar.setMaximum(self.total_bytes)
+ self.client_progress_bar.setValue(self.bytes_written)
+ self.client_status_label.setText(f"Sent {self.bytes_written / (1024 ** 2)} MB")
+
+ def display_error(self, socket_error: QAbstractSocket.SocketError):
+ if socket_error == QAbstractSocket.RemoteHostClosedError:
+ return
+
+ QMessageBox.information(
+ self,
+ "Network error",
+ f"The following error occurred: {self.tcp_client.errorString()}",
+ )
+
+ self.tcp_client.close()
+ self.tcp_server.close()
+ self.client_progress_bar.reset()
+ self.server_progress_bar.reset()
+ self.client_status_label.setText("Client ready")
+ self.server_status_label.setText("Server ready")
+ self.start_button.setEnabled(True)
+
+ QGuiApplication.restoreOverrideCursor()
diff --git a/examples/network/loopback/doc/loopback.png b/examples/network/loopback/doc/loopback.png
new file mode 100644
index 000000000..2b1bd4a0f
--- /dev/null
+++ b/examples/network/loopback/doc/loopback.png
Binary files differ
diff --git a/examples/network/loopback/doc/loopback.rst b/examples/network/loopback/doc/loopback.rst
new file mode 100644
index 000000000..0a40b57a8
--- /dev/null
+++ b/examples/network/loopback/doc/loopback.rst
@@ -0,0 +1,10 @@
+Loopback Example
+================
+
+Demonstrates the client-server communication on a local host.
+
+The example demonstrates how the clients and servers on a local host communicate with each other.
+
+.. image:: loopback.png
+ :width: 208
+ :alt: loopback program screenshot
diff --git a/examples/network/loopback/loopback.pyproject b/examples/network/loopback/loopback.pyproject
new file mode 100644
index 000000000..957714cda
--- /dev/null
+++ b/examples/network/loopback/loopback.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "dialog.py"]
+}
diff --git a/examples/network/loopback/main.py b/examples/network/loopback/main.py
new file mode 100644
index 000000000..d684b6bab
--- /dev/null
+++ b/examples/network/loopback/main.py
@@ -0,0 +1,15 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtWidgets import QApplication
+
+from dialog import Dialog
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ dialog = Dialog()
+ dialog.show()
+ sys.exit(app.exec())
diff --git a/examples/network/threadedfortuneserver/threadedfortuneserver.py b/examples/network/threadedfortuneserver/threadedfortuneserver.py
index 0722d4739..c75e2bc57 100644
--- a/examples/network/threadedfortuneserver/threadedfortuneserver.py
+++ b/examples/network/threadedfortuneserver/threadedfortuneserver.py
@@ -1,55 +1,17 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the network/threadedfortuneserver example from Qt v5.x, originating from PyQt"""
import random
from PySide6.QtCore import (Signal, QByteArray, QDataStream, QIODevice,
- QThread, Qt)
+ QThread, Qt)
from PySide6.QtWidgets import (QApplication, QDialog, QHBoxLayout, QLabel,
- QMessageBox, QPushButton, QVBoxLayout)
+ QMessageBox, QPushButton, QVBoxLayout)
from PySide6.QtNetwork import (QHostAddress, QNetworkInterface, QTcpServer,
- QTcpSocket)
+ QTcpSocket)
class FortuneThread(QThread):
@@ -113,7 +75,7 @@ class Dialog(QDialog):
if not self.server.listen():
reason = self.server.errorString()
QMessageBox.critical(self, "Threaded Fortune Server",
- f"Unable to start the server: {reason}.")
+ f"Unable to start the server: {reason}.")
self.close()
return
@@ -127,7 +89,7 @@ class Dialog(QDialog):
port = self.server.serverPort()
status_label.setText(f"The server is running on\n\nIP: {ip_address}\nport: {port}\n\n"
- "Run the Fortune Client example now.")
+ "Run the Fortune Client example now.")
quit_button.clicked.connect(self.close)
diff --git a/examples/networkauth/redditclient/doc/redditclient.png b/examples/networkauth/redditclient/doc/redditclient.png
new file mode 100644
index 000000000..013450a9e
--- /dev/null
+++ b/examples/networkauth/redditclient/doc/redditclient.png
Binary files differ
diff --git a/examples/networkauth/redditclient/doc/redditclient.rst b/examples/networkauth/redditclient/doc/redditclient.rst
new file mode 100644
index 000000000..48b720abb
--- /dev/null
+++ b/examples/networkauth/redditclient/doc/redditclient.rst
@@ -0,0 +1,21 @@
+Reddit Example
+==============
+
+Demonstrates authenticating with OAuth 2 to access Reddit.
+
+The Reddit example uses OAuth 2, as supported by Qt Network Authorization,
+to sign in to Reddit and display the Reddit posts (in text format) associated
+with the authenticated user.
+
+To use this example, a consumer key from Reddit is needed.
+To register the application visit https://www.reddit.com/prefs/apps/.
+
+.. note::
+ Choose installed app when creating the application.
+
+.. note::
+ Set the redirect URI to http://127.0.0.1:1337/ in Reddit settings.
+
+.. image:: redditclient.png
+ :width: 400
+ :alt: Reddit Example Screenshot
diff --git a/examples/networkauth/redditclient/main.py b/examples/networkauth/redditclient/main.py
new file mode 100644
index 000000000..e88e32cc5
--- /dev/null
+++ b/examples/networkauth/redditclient/main.py
@@ -0,0 +1,28 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the networkauth redditclient example from Qt v6.x"""
+
+from argparse import ArgumentParser, RawTextHelpFormatter
+import sys
+
+from PySide6.QtWidgets import QApplication, QListView
+
+from redditmodel import RedditModel
+
+
+if __name__ == '__main__':
+ parser = ArgumentParser(description='Qt Reddit client example',
+ formatter_class=RawTextHelpFormatter)
+ parser.add_argument('--client', '-i', type=str, help='Client id')
+ options = parser.parse_args()
+ if not options.client:
+ print('Specify a client id', file=sys.stderr)
+ sys.exit(-1)
+
+ app = QApplication(sys.argv)
+ view = QListView()
+ model = RedditModel(options.client)
+ view.setModel(model)
+ view.show()
+ sys.exit(app.exec())
diff --git a/examples/networkauth/redditclient/redditclient.pyproject b/examples/networkauth/redditclient/redditclient.pyproject
new file mode 100644
index 000000000..6ac1969cc
--- /dev/null
+++ b/examples/networkauth/redditclient/redditclient.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "redditmodel.py", "redditwrapper.py"]
+}
diff --git a/examples/networkauth/redditclient/redditmodel.py b/examples/networkauth/redditclient/redditmodel.py
new file mode 100644
index 000000000..fd6f9bc97
--- /dev/null
+++ b/examples/networkauth/redditclient/redditmodel.py
@@ -0,0 +1,70 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import functools
+from PySide6.QtCore import (QAbstractTableModel, QJsonDocument, QModelIndex,
+ Qt, Signal, Slot)
+from PySide6.QtNetwork import QNetworkReply
+
+from redditwrapper import RedditWrapper
+
+
+class RedditModel(QAbstractTableModel):
+
+ error = Signal(str)
+
+ def __init__(self, client_id):
+ super().__init__()
+ self._reddit_wrapper = RedditWrapper(client_id)
+ self._reddit_wrapper.authenticated.connect(self.update)
+ self._live_thread_reply = None
+ self._threads = []
+ self.grant()
+
+ def rowCount(self, parent):
+ return len(self._threads)
+
+ def columnCount(self, parent):
+ return 1 if self._threads else 0
+
+ def data(self, index, role):
+ if not index.isValid():
+ return None
+ if role == Qt.DisplayRole:
+ children_object = self._threads[index.row()]
+ data_object = children_object["data"]
+ return data_object["title"]
+ return None
+
+ def grant(self):
+ self._reddit_wrapper.grant()
+
+ @Slot(QNetworkReply)
+ def reply_finished(self, reply):
+ reply.deleteLater()
+ if reply.error() != QNetworkReply.NoError:
+ error = reply.errorString()
+ print(f"Reddit error: {error}")
+ self.error.emit(error)
+ return
+ json = reply.readAll()
+ document = QJsonDocument.fromJson(json)
+ root_object = document.object()
+ kind = root_object["kind"]
+ assert kind == "Listing"
+ data_object = root_object["data"]
+ children_array = data_object["children"]
+ if not children_array:
+ return
+
+ self.beginInsertRows(QModelIndex(), len(self._threads),
+ len(children_array) + len(self._threads) - 1)
+ for childValue in children_array:
+ self._threads.append(childValue)
+ self.endInsertRows()
+
+ @Slot()
+ def update(self):
+ reply = self._reddit_wrapper.request_hot_threads()
+ reply.finished.connect(functools.partial(self.reply_finished,
+ reply=reply))
diff --git a/examples/networkauth/redditclient/redditwrapper.py b/examples/networkauth/redditclient/redditwrapper.py
new file mode 100644
index 000000000..ed4c3d2c7
--- /dev/null
+++ b/examples/networkauth/redditclient/redditwrapper.py
@@ -0,0 +1,92 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import functools
+
+from PySide6.QtCore import QJsonDocument, QObject, QUrl, Signal, Slot
+from PySide6.QtGui import QDesktopServices
+from PySide6.QtNetwork import QNetworkReply
+from PySide6.QtNetworkAuth import (QAbstractOAuth,
+ QOAuth2AuthorizationCodeFlow,
+ QOAuthHttpServerReplyHandler)
+
+
+AUTHORIZATION_URL = "https://www.reddit.com/api/v1/authorize"
+ACCESSTOKEN_URL = "https://www.reddit.com/api/v1/access_token"
+
+
+NEW_URL = "https://oauth.reddit.com/new"
+HOT_URL = "https://oauth.reddit.com/hot"
+LIVE_THREADS_URL = "https://oauth.reddit.com/live/XXXX/about.json"
+
+
+class RedditWrapper(QObject):
+
+ authenticated = Signal()
+ subscribed = Signal(QUrl)
+
+ def __init__(self, clientIdentifier, parent=None):
+ super().__init__(parent)
+
+ self._oauth2 = QOAuth2AuthorizationCodeFlow()
+ self._oauth2.setClientIdentifier(clientIdentifier)
+ self._reply_handler = QOAuthHttpServerReplyHandler(1337, self)
+ self._oauth2.setReplyHandler(self._reply_handler)
+ self._oauth2.setAuthorizationUrl(QUrl(AUTHORIZATION_URL))
+ self._oauth2.setAccessTokenUrl(QUrl(ACCESSTOKEN_URL))
+ self._oauth2.setScope("identity read")
+ self._permanent = True
+
+ # connect to slots
+ self._oauth2.statusChanged.connect(self.status_changed)
+ self._oauth2.authorizeWithBrowser.connect(QDesktopServices.openUrl)
+
+ def modify_parameters_function(stage, parameters):
+ if stage == QAbstractOAuth.Stage.RequestingAuthorization and self.permanent:
+ parameters["duration"] = "permanent"
+ return parameters
+
+ self._oauth2.setModifyParametersFunction(modify_parameters_function)
+
+ @Slot()
+ def status_changed(self, status):
+ if status == QAbstractOAuth.Status.Granted:
+ self.authenticated.emit()
+
+ def request_hot_threads(self):
+ print("Getting hot threads...")
+ return self._oauth2.get(QUrl(HOT_URL))
+
+ @property
+ def permanent(self):
+ return self._permanent
+
+ @permanent.setter
+ def permanent(self, value: bool):
+ self._permanent = value
+
+ def grant(self):
+ self._oauth2.grant()
+
+ @Slot(QNetworkReply)
+ def reply_finished(self, reply):
+ print('RedditWrapper.reply_finished()', reply.error())
+ reply.deleteLater()
+ if reply.error() != QNetworkReply.NoError:
+ error = reply.errorString()
+ print(f"Reddit error: {error}")
+ return
+
+ json = reply.readAll()
+ document = QJsonDocument.fromJson(json)
+ assert document.isObject()
+ root_object = document.object()
+ data_object = root_object["data"]
+ websocketUrl = QUrl(data_object["websocket_url"])
+ self.subscribed.emit(websocketUrl)
+
+ def subscribe_to_live_updates(self):
+ print("Susbscribing...")
+ reply = self._oauth2.get(QUrl(LIVE_THREADS_URL))
+ reply.finished.connect(functools.partial(self.reply_finished,
+ reply=reply))
diff --git a/examples/opengl/contextinfo/contextinfo.py b/examples/opengl/contextinfo/contextinfo.py
index 73b55df13..311d5b765 100644
--- a/examples/opengl/contextinfo/contextinfo.py
+++ b/examples/opengl/contextinfo/contextinfo.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2017 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the opengl/contextinfo example from Qt v5.x"""
@@ -47,20 +9,20 @@ import sys
from textwrap import dedent
-from PySide6.QtCore import QCoreApplication, QLibraryInfo, QSize, QTimer, Qt
+from PySide6.QtCore import (QCoreApplication, QLibraryInfo, QSize, QTimer, Qt,
+ Slot)
from PySide6.QtGui import (QMatrix4x4, QOpenGLContext, QSurfaceFormat, QWindow)
from PySide6.QtOpenGL import (QOpenGLBuffer, QOpenGLShader,
QOpenGLShaderProgram, QOpenGLVertexArrayObject)
from PySide6.QtWidgets import (QApplication, QHBoxLayout, QMessageBox, QPlainTextEdit,
- QWidget)
+ QWidget)
from PySide6.support import VoidPtr
try:
from OpenGL import GL
except ImportError:
app = QApplication(sys.argv)
message_box = QMessageBox(QMessageBox.Critical, "ContextInfo",
- "PyOpenGL must be installed to run this example.",
- QMessageBox.Close)
+ "PyOpenGL must be installed to run this example.", QMessageBox.Close)
message_box.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate")
message_box.exec()
sys.exit(1)
@@ -111,7 +73,10 @@ colors = numpy.array([1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=numpy.float32)
def print_surface_format(surface_format):
- profile_name = 'core' if surface_format.profile() == QSurfaceFormat.CoreProfile else 'compatibility'
+ if surface_format.profile() == QSurfaceFormat.CoreProfile:
+ profile_name = 'core'
+ else:
+ profile_name = 'compatibility'
major = surface_format.majorVersion()
minor = surface_format.minorVersion()
return f"{profile_name} version {major}.{minor}"
@@ -141,11 +106,13 @@ class RenderWindow(QWindow):
# concept 3.2+ has. This may still fail since version 150 (3.2) is
# specified in the sources but it's worth a try.
if (fmt.renderableType() == QSurfaceFormat.OpenGL and fmt.majorVersion() == 3
- and fmt.minorVersion() <= 1):
+ and fmt.minorVersion() <= 1):
use_new_style_shader = not fmt.testOption(QSurfaceFormat.DeprecatedFunctions)
vertex_shader = vertex_shader_source if use_new_style_shader else vertex_shader_source_110
- fragment_shader = fragment_shader_source if use_new_style_shader else fragment_shader_source_110
+ fragment_shader = (fragment_shader_source
+ if use_new_style_shader
+ else fragment_shader_source_110)
if not self.program.addShaderFromSourceCode(QOpenGLShader.Vertex, vertex_shader):
log = self.program.log()
raise Exception("Vertex shader could not be added: {log} ({vertexShader})")
@@ -170,9 +137,9 @@ class RenderWindow(QWindow):
self.vbo.write(vertices_size, VoidPtr(self._colors_data), colors_size)
self.vbo.release()
- vao_binder = QOpenGLVertexArrayObject.Binder(self.vao)
- if self.vao.isCreated(): # have VAO support, use it
- self.setup_vertex_attribs()
+ with QOpenGLVertexArrayObject.Binder(self.vao):
+ if self.vao.isCreated(): # have VAO support, use it
+ self.setup_vertex_attribs()
def setup_vertex_attribs(self):
self.vbo.bind()
@@ -230,6 +197,7 @@ class RenderWindow(QWindow):
self.context.swapBuffers(self)
self.context.doneCurrent()
+ @Slot()
def slot_timer(self):
self.render()
self.angle += 1
diff --git a/examples/opengl/hellogl2/doc/hellogl2.rst b/examples/opengl/hellogl2/doc/hellogl2.rst
index 1223e138c..3471ebf30 100644
--- a/examples/opengl/hellogl2/doc/hellogl2.rst
+++ b/examples/opengl/hellogl2/doc/hellogl2.rst
@@ -4,6 +4,20 @@ Hello GL2 Example
The Hello GL2 example demonstrates the basic use of the OpenGL-related classes
provided with Qt.
+In this example the widget's corresponding top-level window can change several
+times during the widget's lifetime. Whenever this happens, the QOpenGLWidget's
+associated context is destroyed and a new one is created, requiring us to clean
+up the GL resources.
+
+The equivalent C++ example does this cleanup on emission of the
+QOpenGLContext.aboutToBeDestroyed() signal. However, in Qt for Python, we
+cannot rely on this signal when it is emitted from the destructor.
+
+Therefore, we do the cleanup in GLWidget.hideEvent().
+
+This will be followed by an invocation of initializeGL() where we can recreate
+all resources.
+
.. image:: hellogl2.png
:width: 400
:alt: Hello GL2 Screenshot
diff --git a/examples/opengl/hellogl2/glwidget.py b/examples/opengl/hellogl2/glwidget.py
new file mode 100644
index 000000000..bbf200a6b
--- /dev/null
+++ b/examples/opengl/hellogl2/glwidget.py
@@ -0,0 +1,272 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# Copyright (C) 2013 Riverbank Computing Limited.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import ctypes
+from PySide6.QtCore import Signal, Slot, Qt, QSize, QPointF
+from PySide6.QtGui import (QVector3D, QOpenGLFunctions,
+ QMatrix4x4, QOpenGLContext, QSurfaceFormat)
+from PySide6.QtOpenGL import (QOpenGLVertexArrayObject, QOpenGLBuffer,
+ QOpenGLShaderProgram, QOpenGLShader)
+from PySide6.QtOpenGLWidgets import QOpenGLWidget
+
+from OpenGL import GL
+
+from shiboken6 import VoidPtr
+from logo import Logo
+
+FRAGMENT_SHADER_SOURCE_CORE = """#version 150
+in highp vec3 vert;
+in highp vec3 vertNormal;
+out highp vec4 fragColor;
+uniform highp vec3 lightPos;
+void main() {
+ highp vec3 L = normalize(lightPos - vert);
+ highp float NL = max(dot(normalize(vertNormal), L), 0.0);
+ highp vec3 color = vec3(0.39, 1.0, 0.0);
+ highp vec3 col = clamp(color * 0.2 + color * 0.8 * NL, 0.0, 1.0);
+ fragColor = vec4(col, 1.0);
+}"""
+
+
+FRAGMENT_SHADER_SOURCE = """varying highp vec3 vert;
+varying highp vec3 vertNormal;
+uniform highp vec3 lightPos;
+void main() {
+ highp vec3 L = normalize(lightPos - vert);
+ highp float NL = max(dot(normalize(vertNormal), L), 0.0);
+ highp vec3 color = vec3(0.39, 1.0, 0.0);
+ highp vec3 col = clamp(color * 0.2 + color * 0.8 * NL, 0.0, 1.0);
+ gl_FragColor = vec4(col, 1.0);
+}"""
+
+
+VERTEX_SHADER_SOURCE_CORE = """#version 150
+in vec4 vertex;
+in vec3 normal;
+out vec3 vert;
+out vec3 vertNormal;
+uniform mat4 projMatrix;
+uniform mat4 mvMatrix;
+uniform mat3 normalMatrix;
+void main() {
+ vert = vertex.xyz;
+ vertNormal = normalMatrix * normal;
+ gl_Position = projMatrix * mvMatrix * vertex;
+}"""
+
+
+VERTEX_SHADER_SOURCE = """attribute vec4 vertex;
+attribute vec3 normal;
+varying vec3 vert;
+varying vec3 vertNormal;
+uniform mat4 projMatrix;
+uniform mat4 mvMatrix;
+uniform mat3 normalMatrix;
+void main() {
+ vert = vertex.xyz;
+ vertNormal = normalMatrix * normal;
+ gl_Position = projMatrix * mvMatrix * vertex;
+}"""
+
+
+class GLWidget(QOpenGLWidget, QOpenGLFunctions):
+ x_rotation_changed = Signal(int)
+ y_rotation_changed = Signal(int)
+ z_rotation_changed = Signal(int)
+
+ _transparent = False
+
+ def __init__(self, parent=None):
+ QOpenGLWidget.__init__(self, parent)
+ QOpenGLFunctions.__init__(self)
+
+ self._core = QSurfaceFormat.defaultFormat().profile() == QSurfaceFormat.CoreProfile
+
+ self._x_rot = 0
+ self._y_rot = 0
+ self._z_rot = 0
+ self._last_pos = QPointF()
+ self.logo = Logo()
+ self.vao = QOpenGLVertexArrayObject()
+ self._logo_vbo = QOpenGLBuffer()
+ self.program = QOpenGLShaderProgram()
+ self._proj_matrix_loc = 0
+ self._mv_matrix_loc = 0
+ self._normal_matrix_loc = 0
+ self._light_pos_loc = 0
+ self.proj = QMatrix4x4()
+ self.camera = QMatrix4x4()
+ self.world = QMatrix4x4()
+ if self._transparent:
+ fmt = self.format()
+ fmt.setAlphaBufferSize(8)
+ self.setFormat(fmt)
+
+ @staticmethod
+ def set_transparent(t):
+ GLWidget._transparent = t
+
+ @staticmethod
+ def is_transparent():
+ return GLWidget._transparent
+
+ def x_rotation(self):
+ return self._x_rot
+
+ def y_rotation(self):
+ return self._y_rot
+
+ def z_rotation(self):
+ return self._z_rot
+
+ def minimumSizeHint(self):
+ return QSize(50, 50)
+
+ def sizeHint(self):
+ return QSize(400, 400)
+
+ def normalize_angle(self, angle):
+ while angle < 0:
+ angle += 360 * 16
+ while angle > 360 * 16:
+ angle -= 360 * 16
+ return angle
+
+ @Slot(int)
+ def set_xrotation(self, angle):
+ angle = self.normalize_angle(angle)
+ if angle != self._x_rot:
+ self._x_rot = angle
+ self.x_rotation_changed.emit(angle)
+ self.update()
+
+ @Slot(int)
+ def set_yrotation(self, angle):
+ angle = self.normalize_angle(angle)
+ if angle != self._y_rot:
+ self._y_rot = angle
+ self.y_rotation_changed.emit(angle)
+ self.update()
+
+ @Slot(int)
+ def set_zrotation(self, angle):
+ angle = self.normalize_angle(angle)
+ if angle != self._z_rot:
+ self._z_rot = angle
+ self.z_rotation_changed.emit(angle)
+ self.update()
+
+ @Slot()
+ def cleanup(self):
+ if self.program:
+ self.makeCurrent()
+ self._logo_vbo.destroy()
+ del self.program
+ self.program = None
+ self.doneCurrent()
+
+ def initializeGL(self):
+ self.initializeOpenGLFunctions()
+ self.glClearColor(0, 0, 0, 0 if self._transparent else 1)
+
+ self.program = QOpenGLShaderProgram()
+
+ if self._core:
+ self._vertex_shader = VERTEX_SHADER_SOURCE_CORE
+ self._fragment_shader = FRAGMENT_SHADER_SOURCE_CORE
+ else:
+ self._vertex_shader = VERTEX_SHADER_SOURCE
+ self._fragment_shader = FRAGMENT_SHADER_SOURCE
+
+ self.program.addShaderFromSourceCode(QOpenGLShader.Vertex,
+ self._vertex_shader)
+ self.program.addShaderFromSourceCode(QOpenGLShader.Fragment,
+ self._fragment_shader)
+ self.program.bindAttributeLocation("vertex", 0)
+ self.program.bindAttributeLocation("normal", 1)
+ self.program.link()
+
+ self.program.bind()
+ self._proj_matrix_loc = self.program.uniformLocation("projMatrix")
+ self._mv_matrix_loc = self.program.uniformLocation("mvMatrix")
+ self._normal_matrix_loc = self.program.uniformLocation("normalMatrix")
+ self._light_pos_loc = self.program.uniformLocation("lightPos")
+
+ self.vao.create()
+ with QOpenGLVertexArrayObject.Binder(self.vao):
+ self._logo_vbo.create()
+ self._logo_vbo.bind()
+ float_size = ctypes.sizeof(ctypes.c_float)
+ self._logo_vbo.allocate(self.logo.const_data(),
+ self.logo.count() * float_size)
+
+ self.setup_vertex_attribs()
+
+ self.camera.setToIdentity()
+ self.camera.translate(0, 0, -1)
+
+ self.program.setUniformValue(self._light_pos_loc,
+ QVector3D(0, 0, 70))
+ self.program.release()
+
+ def setup_vertex_attribs(self):
+ self._logo_vbo.bind()
+ f = QOpenGLContext.currentContext().functions()
+ f.glEnableVertexAttribArray(0)
+ f.glEnableVertexAttribArray(1)
+ float_size = ctypes.sizeof(ctypes.c_float)
+
+ null = VoidPtr(0)
+ pointer = VoidPtr(3 * float_size)
+ f.glVertexAttribPointer(0, 3, int(GL.GL_FLOAT), int(GL.GL_FALSE),
+ 6 * float_size, null)
+ f.glVertexAttribPointer(1, 3, int(GL.GL_FLOAT), int(GL.GL_FALSE),
+ 6 * float_size, pointer)
+ self._logo_vbo.release()
+
+ def paintGL(self):
+ self.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT)
+ self.glEnable(GL.GL_DEPTH_TEST)
+ self.glEnable(GL.GL_CULL_FACE)
+
+ self.world.setToIdentity()
+ self.world.rotate(180 - (self._x_rot / 16), 1, 0, 0)
+ self.world.rotate(self._y_rot / 16, 0, 1, 0)
+ self.world.rotate(self._z_rot / 16, 0, 0, 1)
+
+ with QOpenGLVertexArrayObject.Binder(self.vao):
+ self.program.bind()
+ self.program.setUniformValue(self._proj_matrix_loc, self.proj)
+ self.program.setUniformValue(self._mv_matrix_loc,
+ self.camera * self.world)
+ normal_matrix = self.world.normalMatrix()
+ self.program.setUniformValue(self._normal_matrix_loc, normal_matrix)
+
+ self.glDrawArrays(GL.GL_TRIANGLES, 0, self.logo.vertex_count())
+ self.program.release()
+
+ def resizeGL(self, width, height):
+ self.proj.setToIdentity()
+ self.proj.perspective(45, width / height, 0.01, 100)
+
+ def hideEvent(self, event):
+ self.cleanup()
+ super().hideEvent(event)
+
+ def mousePressEvent(self, event):
+ self._last_pos = event.position()
+
+ def mouseMoveEvent(self, event):
+ pos = event.position()
+ dx = pos.x() - self._last_pos.x()
+ dy = pos.y() - self._last_pos.y()
+
+ if event.buttons() & Qt.LeftButton:
+ self.set_xrotation(self._x_rot + 8 * dy)
+ self.set_yrotation(self._y_rot + 8 * dx)
+ elif event.buttons() & Qt.RightButton:
+ self.set_xrotation(self._x_rot + 8 * dy)
+ self.set_zrotation(self._z_rot + 8 * dx)
+
+ self._last_pos = pos
diff --git a/examples/opengl/hellogl2/hellogl2.py b/examples/opengl/hellogl2/hellogl2.py
deleted file mode 100644
index 2f170dc90..000000000
--- a/examples/opengl/hellogl2/hellogl2.py
+++ /dev/null
@@ -1,489 +0,0 @@
-
-############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
-
-"""PySide6 port of the opengl/hellogl2 example from Qt v5.x"""
-
-from argparse import ArgumentParser, RawTextHelpFormatter
-import ctypes
-import math
-import numpy
-import sys
-from PySide6.QtCore import QCoreApplication, Signal, SIGNAL, SLOT, Qt, QSize, QPointF
-from PySide6.QtGui import (QVector3D, QOpenGLFunctions,
- QMatrix4x4, QOpenGLContext, QSurfaceFormat)
-from PySide6.QtOpenGL import (QOpenGLVertexArrayObject, QOpenGLBuffer,
- QOpenGLShaderProgram, QOpenGLShader)
-from PySide6.QtWidgets import (QApplication, QWidget, QMessageBox, QHBoxLayout,
- QSlider)
-from PySide6.QtOpenGLWidgets import QOpenGLWidget
-
-from shiboken6 import VoidPtr
-
-try:
- from OpenGL import GL
-except ImportError:
- app = QApplication(sys.argv)
- message_box = QMessageBox(QMessageBox.Critical, "OpenGL hellogl",
- "PyOpenGL must be installed to run this example.",
- QMessageBox.Close)
- message_box.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate")
- message_box.exec()
- sys.exit(1)
-
-
-class Window(QWidget):
- def __init__(self, transparent, parent=None):
- QWidget.__init__(self, parent)
-
- if transparent:
- self.setAttribute(Qt.WA_TranslucentBackground)
- self.setAttribute(Qt.WA_NoSystemBackground, False)
-
- self._gl_widget = GLWidget(transparent)
-
- self._x_slider = self.create_slider()
- self._x_slider.valueChanged.connect(self._gl_widget.set_xrotation)
- self._gl_widget.x_rotation_changed.connect(self._x_slider.setValue)
-
- self._y_slider = self.create_slider()
- self._y_slider.valueChanged.connect(self._gl_widget.set_yrotation)
- self._gl_widget.y_rotation_changed.connect(self._y_slider.setValue)
-
- self._z_slider = self.create_slider()
- self._z_slider.valueChanged.connect(self._gl_widget.set_zrotation)
- self._gl_widget.z_rotation_changed.connect(self._z_slider.setValue)
-
- main_layout = QHBoxLayout()
- main_layout.addWidget(self._gl_widget)
- main_layout.addWidget(self._x_slider)
- main_layout.addWidget(self._y_slider)
- main_layout.addWidget(self._z_slider)
- self.setLayout(main_layout)
-
- self._x_slider.setValue(15 * 16)
- self._y_slider.setValue(345 * 16)
- self._z_slider.setValue(0 * 16)
-
- self.setWindowTitle(self.tr("Hello GL"))
-
- def create_slider(self):
- slider = QSlider(Qt.Vertical)
-
- slider.setRange(0, 360 * 16)
- slider.setSingleStep(16)
- slider.setPageStep(15 * 16)
- slider.setTickInterval(15 * 16)
- slider.setTickPosition(QSlider.TicksRight)
- return slider
-
- def keyPressEvent(self, event):
- if event.key() == Qt.Key_Escape:
- self.close()
- else:
- super(Window, self).keyPressEvent(event)
-
-
-class Logo():
- def __init__(self):
- self.m_count = 0
- self.i = 0
- self.m_data = numpy.empty(2500 * 6, dtype=ctypes.c_float)
-
- x1 = +0.06
- y1 = -0.14
- x2 = +0.14
- y2 = -0.06
- x3 = +0.08
- y3 = +0.00
- x4 = +0.30
- y4 = +0.22
-
- self.quad(x1, y1, x2, y2, y2, x2, y1, x1)
- self.quad(x3, y3, x4, y4, y4, x4, y3, x3)
-
- self.extrude(x1, y1, x2, y2)
- self.extrude(x2, y2, y2, x2)
- self.extrude(y2, x2, y1, x1)
- self.extrude(y1, x1, x1, y1)
- self.extrude(x3, y3, x4, y4)
- self.extrude(x4, y4, y4, x4)
- self.extrude(y4, x4, y3, x3)
-
- NUM_SECTORS = 100
-
- for i in range(NUM_SECTORS):
- angle = (i * 2 * math.pi) / NUM_SECTORS
- x5 = 0.30 * math.sin(angle)
- y5 = 0.30 * math.cos(angle)
- x6 = 0.20 * math.sin(angle)
- y6 = 0.20 * math.cos(angle)
-
- angle = ((i + 1) * 2 * math.pi) / NUM_SECTORS
- x7 = 0.20 * math.sin(angle)
- y7 = 0.20 * math.cos(angle)
- x8 = 0.30 * math.sin(angle)
- y8 = 0.30 * math.cos(angle)
-
- self.quad(x5, y5, x6, y6, x7, y7, x8, y8)
-
- self.extrude(x6, y6, x7, y7)
- self.extrude(x8, y8, x5, y5)
-
- def const_data(self):
- return self.m_data.tobytes()
-
- def count(self):
- return self.m_count
-
- def vertex_count(self):
- return self.m_count / 6
-
- def quad(self, x1, y1, x2, y2, x3, y3, x4, y4):
- n = QVector3D.normal(QVector3D(x4 - x1, y4 - y1, 0), QVector3D(x2 - x1, y2 - y1, 0))
-
- self.add(QVector3D(x1, y1, -0.05), n)
- self.add(QVector3D(x4, y4, -0.05), n)
- self.add(QVector3D(x2, y2, -0.05), n)
-
- self.add(QVector3D(x3, y3, -0.05), n)
- self.add(QVector3D(x2, y2, -0.05), n)
- self.add(QVector3D(x4, y4, -0.05), n)
-
- n = QVector3D.normal(QVector3D(x1 - x4, y1 - y4, 0), QVector3D(x2 - x4, y2 - y4, 0))
-
- self.add(QVector3D(x4, y4, 0.05), n)
- self.add(QVector3D(x1, y1, 0.05), n)
- self.add(QVector3D(x2, y2, 0.05), n)
-
- self.add(QVector3D(x2, y2, 0.05), n)
- self.add(QVector3D(x3, y3, 0.05), n)
- self.add(QVector3D(x4, y4, 0.05), n)
-
- def extrude(self, x1, y1, x2, y2):
- n = QVector3D.normal(QVector3D(0, 0, -0.1), QVector3D(x2 - x1, y2 - y1, 0))
-
- self.add(QVector3D(x1, y1, 0.05), n)
- self.add(QVector3D(x1, y1, -0.05), n)
- self.add(QVector3D(x2, y2, 0.05), n)
-
- self.add(QVector3D(x2, y2, -0.05), n)
- self.add(QVector3D(x2, y2, 0.05), n)
- self.add(QVector3D(x1, y1, -0.05), n)
-
- def add(self, v, n):
- self.m_data[self.i] = v.x()
- self.i += 1
- self.m_data[self.i] = v.y()
- self.i += 1
- self.m_data[self.i] = v.z()
- self.i += 1
- self.m_data[self.i] = n.x()
- self.i += 1
- self.m_data[self.i] = n.y()
- self.i += 1
- self.m_data[self.i] = n.z()
- self.i += 1
- self.m_count += 6
-
-
-class GLWidget(QOpenGLWidget, QOpenGLFunctions):
- x_rotation_changed = Signal(int)
- y_rotation_changed = Signal(int)
- z_rotation_changed = Signal(int)
-
- def __init__(self, transparent, parent=None):
- QOpenGLWidget.__init__(self, parent)
- QOpenGLFunctions.__init__(self)
-
- self._transparent = transparent
- self._core = QSurfaceFormat.defaultFormat().profile() == QSurfaceFormat.CoreProfile
-
- self._x_rot = 0
- self._y_rot = 0
- self._z_rot = 0
- self._last_pos = QPointF()
- self.logo = Logo()
- self.vao = QOpenGLVertexArrayObject()
- self._logo_vbo = QOpenGLBuffer()
- self.program = QOpenGLShaderProgram()
- self._proj_matrix_loc = 0
- self._mv_matrix_loc = 0
- self._normal_matrix_loc = 0
- self._light_pos_loc = 0
- self.proj = QMatrix4x4()
- self.camera = QMatrix4x4()
- self.world = QMatrix4x4()
- if transparent:
- fmt = self.format()
- fmt.setAlphaBufferSize(8)
- self.setFormat(fmt)
-
- def x_rotation(self):
- return self._x_rot
-
- def y_rotation(self):
- return self._y_rot
-
- def z_rotation(self):
- return self._z_rot
-
- def minimumSizeHint(self):
- return QSize(50, 50)
-
- def sizeHint(self):
- return QSize(400, 400)
-
- def normalize_angle(self, angle):
- while angle < 0:
- angle += 360 * 16
- while angle > 360 * 16:
- angle -= 360 * 16
- return angle
-
- def set_xrotation(self, angle):
- angle = self.normalize_angle(angle)
- if angle != self._x_rot:
- self._x_rot = angle
- self.x_rotation_changed.emit(angle)
- self.update()
-
- def set_yrotation(self, angle):
- angle = self.normalize_angle(angle)
- if angle != self._y_rot:
- self._y_rot = angle
- self.y_rotation_changed.emit(angle)
- self.update()
-
- def set_zrotation(self, angle):
- angle = self.normalize_angle(angle)
- if angle != self._z_rot:
- self._z_rot = angle
- self.z_rotation_changed.emit(angle)
- self.update()
-
- def cleanup(self):
- self.makeCurrent()
- self._logo_vbo.destroy()
- del self.program
- self.program = None
- self.doneCurrent()
-
- def vertex_shader_source_core(self):
- return """#version 150
- in vec4 vertex;
- in vec3 normal;
- out vec3 vert;
- out vec3 vertNormal;
- uniform mat4 projMatrix;
- uniform mat4 mvMatrix;
- uniform mat3 normalMatrix;
- void main() {
- vert = vertex.xyz;
- vertNormal = normalMatrix * normal;
- gl_Position = projMatrix * mvMatrix * vertex;
- }"""
-
- def fragment_shader_source_core(self):
- return """#version 150
- in highp vec3 vert;
- in highp vec3 vertNormal;
- out highp vec4 fragColor;
- uniform highp vec3 lightPos;
- void main() {
- highp vec3 L = normalize(lightPos - vert);
- highp float NL = max(dot(normalize(vertNormal), L), 0.0);
- highp vec3 color = vec3(0.39, 1.0, 0.0);
- highp vec3 col = clamp(color * 0.2 + color * 0.8 * NL, 0.0, 1.0);
- fragColor = vec4(col, 1.0);
- }"""
-
- def vertex_shader_source(self):
- return """attribute vec4 vertex;
- attribute vec3 normal;
- varying vec3 vert;
- varying vec3 vertNormal;
- uniform mat4 projMatrix;
- uniform mat4 mvMatrix;
- uniform mat3 normalMatrix;
- void main() {
- vert = vertex.xyz;
- vertNormal = normalMatrix * normal;
- gl_Position = projMatrix * mvMatrix * vertex;
- }"""
-
- def fragment_shader_source(self):
- return """varying highp vec3 vert;
- varying highp vec3 vertNormal;
- uniform highp vec3 lightPos;
- void main() {
- highp vec3 L = normalize(lightPos - vert);
- highp float NL = max(dot(normalize(vertNormal), L), 0.0);
- highp vec3 color = vec3(0.39, 1.0, 0.0);
- highp vec3 col = clamp(color * 0.2 + color * 0.8 * NL, 0.0, 1.0);
- gl_FragColor = vec4(col, 1.0);
- }"""
-
- def initializeGL(self):
- self.context().aboutToBeDestroyed.connect(self.cleanup)
- self.initializeOpenGLFunctions()
- self.glClearColor(0, 0, 0, 0 if self._transparent else 1)
-
- self.program = QOpenGLShaderProgram()
-
- if self._core:
- self._vertex_shader = self.vertex_shader_source_core()
- self._fragment_shader = self.fragment_shader_source_core()
- else:
- self._vertex_shader = self.vertex_shader_source()
- self._fragment_shader = self.fragment_shader_source()
-
- self.program.addShaderFromSourceCode(QOpenGLShader.Vertex, self._vertex_shader)
- self.program.addShaderFromSourceCode(QOpenGLShader.Fragment, self._fragment_shader)
- self.program.bindAttributeLocation("vertex", 0)
- self.program.bindAttributeLocation("normal", 1)
- self.program.link()
-
- self.program.bind()
- self._proj_matrix_loc = self.program.uniformLocation("projMatrix")
- self._mv_matrix_loc = self.program.uniformLocation("mvMatrix")
- self._normal_matrix_loc = self.program.uniformLocation("normalMatrix")
- self._light_pos_loc = self.program.uniformLocation("lightPos")
-
- self.vao.create()
- vao_binder = QOpenGLVertexArrayObject.Binder(self.vao)
-
- self._logo_vbo.create()
- self._logo_vbo.bind()
- float_size = ctypes.sizeof(ctypes.c_float)
- self._logo_vbo.allocate(self.logo.const_data(), self.logo.count() * float_size)
-
- self.setup_vertex_attribs()
-
- self.camera.setToIdentity()
- self.camera.translate(0, 0, -1)
-
- self.program.setUniformValue(self._light_pos_loc, QVector3D(0, 0, 70))
- self.program.release()
- vao_binder = None
-
- def setup_vertex_attribs(self):
- self._logo_vbo.bind()
- f = QOpenGLContext.currentContext().functions()
- f.glEnableVertexAttribArray(0)
- f.glEnableVertexAttribArray(1)
- float_size = ctypes.sizeof(ctypes.c_float)
-
- null = VoidPtr(0)
- pointer = VoidPtr(3 * float_size)
- f.glVertexAttribPointer(0, 3, int(GL.GL_FLOAT), int(GL.GL_FALSE), 6 * float_size, null)
- f.glVertexAttribPointer(1, 3, int(GL.GL_FLOAT), int(GL.GL_FALSE), 6 * float_size, pointer)
- self._logo_vbo.release()
-
- def paintGL(self):
- self.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT)
- self.glEnable(GL.GL_DEPTH_TEST)
- self.glEnable(GL.GL_CULL_FACE)
-
- self.world.setToIdentity()
- self.world.rotate(180 - (self._x_rot / 16), 1, 0, 0)
- self.world.rotate(self._y_rot / 16, 0, 1, 0)
- self.world.rotate(self._z_rot / 16, 0, 0, 1)
-
- vao_binder = QOpenGLVertexArrayObject.Binder(self.vao)
- self.program.bind()
- self.program.setUniformValue(self._proj_matrix_loc, self.proj)
- self.program.setUniformValue(self._mv_matrix_loc, self.camera * self.world)
- normal_matrix = self.world.normalMatrix()
- self.program.setUniformValue(self._normal_matrix_loc, normal_matrix)
-
- self.glDrawArrays(GL.GL_TRIANGLES, 0, self.logo.vertex_count())
- self.program.release()
- vao_binder = None
-
- def resizeGL(self, width, height):
- self.proj.setToIdentity()
- self.proj.perspective(45, width / height, 0.01, 100)
-
- def mousePressEvent(self, event):
- self._last_pos = event.position()
-
- def mouseMoveEvent(self, event):
- pos = event.position()
- dx = pos.x() - self._last_pos.x()
- dy = pos.y() - self._last_pos.y()
-
- if event.buttons() & Qt.LeftButton:
- self.set_xrotation(self._x_rot + 8 * dy)
- self.set_yrotation(self._y_rot + 8 * dx)
- elif event.buttons() & Qt.RightButton:
- self.set_xrotation(self._x_rot + 8 * dy)
- self.set_zrotation(self._z_rot + 8 * dx)
-
- self._last_pos = pos
-
-
-if __name__ == '__main__':
- app = QApplication(sys.argv)
- parser = ArgumentParser(description="hellogl2", formatter_class=RawTextHelpFormatter)
- parser.add_argument('--multisample', '-m', action='store_true',
- help='Use Multisampling')
- parser.add_argument('--coreprofile', '-c', action='store_true',
- help='Use Core Profile')
- parser.add_argument('--transparent', '-t', action='store_true',
- help='Transparent Windows')
- options = parser.parse_args()
-
- fmt = QSurfaceFormat()
- fmt.setDepthBufferSize(24)
- if options.multisample:
- fmt.setSamples(4)
- if options.coreprofile:
- fmt.setVersion(3, 2)
- fmt.setProfile(QSurfaceFormat.CoreProfile)
- QSurfaceFormat.setDefaultFormat(fmt)
-
- main_window = Window(options.transparent)
- main_window.resize(main_window.sizeHint())
- main_window.show()
-
- res = app.exec()
- sys.exit(res)
diff --git a/examples/opengl/hellogl2/hellogl2.pyproject b/examples/opengl/hellogl2/hellogl2.pyproject
index 331d835af..d85a139e4 100644
--- a/examples/opengl/hellogl2/hellogl2.pyproject
+++ b/examples/opengl/hellogl2/hellogl2.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["hellogl2.py"]
+ "files": ["main.py", "glwidget.py", "logo.py", "mainwindow.py", "window.py"]
}
diff --git a/examples/opengl/hellogl2/logo.py b/examples/opengl/hellogl2/logo.py
new file mode 100644
index 000000000..c236a1ec9
--- /dev/null
+++ b/examples/opengl/hellogl2/logo.py
@@ -0,0 +1,101 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# Copyright (C) 2013 Riverbank Computing Limited.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import math
+
+from PySide6.QtGui import (QVector3D, QVector3DList)
+
+
+class Logo():
+ def __init__(self):
+ self.m_data = QVector3DList()
+ self.m_data.reserve(5000)
+
+ x1 = +0.06
+ y1 = -0.14
+ x2 = +0.14
+ y2 = -0.06
+ x3 = +0.08
+ y3 = +0.00
+ x4 = +0.30
+ y4 = +0.22
+
+ self.quad(x1, y1, x2, y2, y2, x2, y1, x1)
+ self.quad(x3, y3, x4, y4, y4, x4, y3, x3)
+
+ self.extrude(x1, y1, x2, y2)
+ self.extrude(x2, y2, y2, x2)
+ self.extrude(y2, x2, y1, x1)
+ self.extrude(y1, x1, x1, y1)
+ self.extrude(x3, y3, x4, y4)
+ self.extrude(x4, y4, y4, x4)
+ self.extrude(y4, x4, y3, x3)
+
+ NUM_SECTORS = 100
+
+ for i in range(NUM_SECTORS):
+ angle = (i * 2 * math.pi) / NUM_SECTORS
+ x5 = 0.30 * math.sin(angle)
+ y5 = 0.30 * math.cos(angle)
+ x6 = 0.20 * math.sin(angle)
+ y6 = 0.20 * math.cos(angle)
+
+ angle = ((i + 1) * 2 * math.pi) / NUM_SECTORS
+ x7 = 0.20 * math.sin(angle)
+ y7 = 0.20 * math.cos(angle)
+ x8 = 0.30 * math.sin(angle)
+ y8 = 0.30 * math.cos(angle)
+
+ self.quad(x5, y5, x6, y6, x7, y7, x8, y8)
+
+ self.extrude(x6, y6, x7, y7)
+ self.extrude(x8, y8, x5, y5)
+
+ def const_data(self):
+ return self.m_data.constData()
+
+ def count(self):
+ return len(self.m_data) * 3
+
+ def vertex_count(self):
+ return self.count() / 6
+
+ def quad(self, x1, y1, x2, y2, x3, y3, x4, y4):
+ n = QVector3D.normal(QVector3D(x4 - x1, y4 - y1, 0),
+ QVector3D(x2 - x1, y2 - y1, 0))
+
+ self.add(QVector3D(x1, y1, -0.05), n)
+ self.add(QVector3D(x4, y4, -0.05), n)
+ self.add(QVector3D(x2, y2, -0.05), n)
+
+ self.add(QVector3D(x3, y3, -0.05), n)
+ self.add(QVector3D(x2, y2, -0.05), n)
+ self.add(QVector3D(x4, y4, -0.05), n)
+
+ n = QVector3D.normal(QVector3D(x1 - x4, y1 - y4, 0),
+ QVector3D(x2 - x4, y2 - y4, 0))
+
+ self.add(QVector3D(x4, y4, 0.05), n)
+ self.add(QVector3D(x1, y1, 0.05), n)
+ self.add(QVector3D(x2, y2, 0.05), n)
+
+ self.add(QVector3D(x2, y2, 0.05), n)
+ self.add(QVector3D(x3, y3, 0.05), n)
+ self.add(QVector3D(x4, y4, 0.05), n)
+
+ def extrude(self, x1, y1, x2, y2):
+ n = QVector3D.normal(QVector3D(0, 0, -0.1),
+ QVector3D(x2 - x1, y2 - y1, 0))
+
+ self.add(QVector3D(x1, y1, 0.05), n)
+ self.add(QVector3D(x1, y1, -0.05), n)
+ self.add(QVector3D(x2, y2, 0.05), n)
+
+ self.add(QVector3D(x2, y2, -0.05), n)
+ self.add(QVector3D(x2, y2, 0.05), n)
+ self.add(QVector3D(x1, y1, -0.05), n)
+
+ def add(self, v, n):
+ self.m_data.append(v)
+ self.m_data.append(n)
diff --git a/examples/opengl/hellogl2/main.py b/examples/opengl/hellogl2/main.py
new file mode 100644
index 000000000..c7eb78a82
--- /dev/null
+++ b/examples/opengl/hellogl2/main.py
@@ -0,0 +1,58 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# Copyright (C) 2013 Riverbank Computing Limited.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the opengl/hellogl2 example from Qt v6.x"""
+
+from argparse import ArgumentParser, RawTextHelpFormatter
+import sys
+from PySide6.QtCore import Qt
+from PySide6.QtGui import QSurfaceFormat
+from PySide6.QtWidgets import (QApplication, QMessageBox)
+
+
+try:
+ from mainwindow import MainWindow
+ from glwidget import GLWidget
+except ImportError:
+ app = QApplication(sys.argv)
+ message_box = QMessageBox(QMessageBox.Critical, "OpenGL hellogl",
+ "PyOpenGL must be installed to run this example.",
+ QMessageBox.Close)
+ message_box.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate")
+ message_box.exec()
+ sys.exit(1)
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ parser = ArgumentParser(description="hellogl2",
+ formatter_class=RawTextHelpFormatter)
+ parser.add_argument('--multisample', '-m', action='store_true',
+ help='Use Multisampling')
+ parser.add_argument('--coreprofile', '-c', action='store_true',
+ help='Use Core Profile')
+ parser.add_argument('--transparent', '-t', action='store_true',
+ help='Transparent Windows')
+ options = parser.parse_args()
+
+ fmt = QSurfaceFormat()
+ fmt.setDepthBufferSize(24)
+ if options.multisample:
+ fmt.setSamples(4)
+ if options.coreprofile:
+ fmt.setVersion(3, 2)
+ fmt.setProfile(QSurfaceFormat.CoreProfile)
+ QSurfaceFormat.setDefaultFormat(fmt)
+
+ GLWidget.set_transparent(options.transparent)
+
+ main_window = MainWindow()
+ if options.transparent:
+ main_window.setAttribute(Qt.WA_TranslucentBackground)
+ main_window.setAttribute(Qt.WA_NoSystemBackground, False)
+
+ main_window.show()
+
+ res = app.exec()
+ sys.exit(res)
diff --git a/examples/opengl/hellogl2/mainwindow.py b/examples/opengl/hellogl2/mainwindow.py
new file mode 100644
index 000000000..69b9b66fe
--- /dev/null
+++ b/examples/opengl/hellogl2/mainwindow.py
@@ -0,0 +1,29 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Slot, Qt
+from PySide6.QtGui import QKeySequence
+from PySide6.QtWidgets import QMainWindow, QMessageBox
+
+from window import Window
+
+
+class MainWindow(QMainWindow):
+
+ def __init__(self):
+ super().__init__()
+ menuWindow = self.menuBar().addMenu("Window")
+ menuWindow.addAction("Add new", QKeySequence(Qt.CTRL | Qt.Key_N),
+ self.onAddNew)
+ menuWindow.addAction("Quit", QKeySequence(Qt.CTRL | Qt.Key_Q),
+ qApp.closeAllWindows) # noqa: F821
+
+ self.onAddNew()
+
+ @Slot()
+ def onAddNew(self):
+ if not self.centralWidget():
+ self.setCentralWidget(Window(self))
+ else:
+ QMessageBox.information(self, "Cannot Add Window()",
+ "Already occupied. Undock first.")
diff --git a/examples/opengl/hellogl2/window.py b/examples/opengl/hellogl2/window.py
new file mode 100644
index 000000000..ad61d2f97
--- /dev/null
+++ b/examples/opengl/hellogl2/window.py
@@ -0,0 +1,110 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# Copyright (C) 2013 Riverbank Computing Limited.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Slot, Qt
+from PySide6.QtWidgets import (QHBoxLayout, QMainWindow,
+ QMessageBox, QPushButton, QSlider,
+ QVBoxLayout, QWidget)
+
+from glwidget import GLWidget
+
+
+def _main_window():
+ for t in qApp.topLevelWidgets(): # noqa: F821
+ if isinstance(t, QMainWindow):
+ return t
+ return None
+
+
+class Window(QWidget):
+ instances = [] # Keep references when undocked
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.instances.append(self)
+
+ self._gl_widget = GLWidget()
+
+ self._x_slider = self.create_slider()
+ self._x_slider.valueChanged.connect(self._gl_widget.set_xrotation)
+ self._gl_widget.x_rotation_changed.connect(self._x_slider.setValue)
+
+ self._y_slider = self.create_slider()
+ self._y_slider.valueChanged.connect(self._gl_widget.set_yrotation)
+ self._gl_widget.y_rotation_changed.connect(self._y_slider.setValue)
+
+ self._z_slider = self.create_slider()
+ self._z_slider.valueChanged.connect(self._gl_widget.set_zrotation)
+ self._gl_widget.z_rotation_changed.connect(self._z_slider.setValue)
+
+ mainLayout = QVBoxLayout(self)
+ w = QWidget()
+ container = QHBoxLayout(w)
+ container.addWidget(self._gl_widget)
+ container.addWidget(self._x_slider)
+ container.addWidget(self._y_slider)
+ container.addWidget(self._z_slider)
+
+ mainLayout.addWidget(w)
+ self._dock_btn = QPushButton("Undock")
+ self._dock_btn.clicked.connect(self.dock_undock)
+ mainLayout.addWidget(self._dock_btn)
+
+ self._x_slider.setValue(15 * 16)
+ self._y_slider.setValue(345 * 16)
+ self._z_slider.setValue(0 * 16)
+
+ self.setWindowTitle(self.tr("Hello GL"))
+
+ def create_slider(self):
+ slider = QSlider(Qt.Vertical)
+
+ slider.setRange(0, 360 * 16)
+ slider.setSingleStep(16)
+ slider.setPageStep(15 * 16)
+ slider.setTickInterval(15 * 16)
+ slider.setTickPosition(QSlider.TicksRight)
+ return slider
+
+ def closeEvent(self, event):
+ self.instances.remove(self)
+ event.accept()
+
+ def keyPressEvent(self, event):
+ if self.isWindow() and event.key() == Qt.Key_Escape:
+ self.close()
+ else:
+ super().keyPressEvent(event)
+
+ @Slot()
+ def dock_undock(self):
+ if self.parent():
+ self.undock()
+ else:
+ self.dock()
+
+ def dock(self):
+ mainWindow = _main_window()
+ if not mainWindow or not mainWindow.isVisible():
+ QMessageBox.information(self, "Cannot Dock",
+ "Main window already closed")
+ return
+ if mainWindow.centralWidget():
+ QMessageBox.information(self, "Cannot Dock",
+ "Main window already occupied")
+ return
+
+ self.setAttribute(Qt.WA_DeleteOnClose, False)
+ self._dock_btn.setText("Undock")
+ mainWindow.setCentralWidget(self)
+
+ def undock(self):
+ self.setParent(None)
+ self.setAttribute(Qt.WA_DeleteOnClose)
+ geometry = self.screen().availableGeometry()
+ x = geometry.x() + (geometry.width() - self.width()) / 2
+ y = geometry.y() + (geometry.height() - self.height()) / 2
+ self.move(x, y)
+ self._dock_btn.setText("Dock")
+ self.show()
diff --git a/examples/opengl/textures/textures.py b/examples/opengl/textures/textures.py
index cbefe41d6..87c1164b7 100644
--- a/examples/opengl/textures/textures.py
+++ b/examples/opengl/textures/textures.py
@@ -1,189 +1,170 @@
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
-
-"""PySide6 port of the opengl/textures example from Qt v5.x"""
+"""PySide6 port of the opengl/textures example from Qt v6.x showing the use
+ of legacy OpenGL functions with QOpenGLVersionFunctionsFactory."""
import sys
-from PySide6 import QtCore, QtGui, QtWidgets, QtOpenGL
+from PySide6.QtCore import QPoint, QSize, Qt, QTimer, Signal
+from PySide6.QtGui import QColor, QImage, QSurfaceFormat
+from PySide6.QtWidgets import QApplication, QGridLayout, QMessageBox, QWidget
+from PySide6.QtOpenGL import (QOpenGLTexture, QOpenGLVersionFunctionsFactory,
+ QOpenGLVersionProfile)
+from PySide6.QtOpenGLWidgets import QOpenGLWidget
try:
- from OpenGL.GL import *
+ from OpenGL import GL
except ImportError:
- app = QtWidgets.QApplication(sys.argv)
- messageBox = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Critical, "OpenGL textures",
- "PyOpenGL must be installed to run this example.",
- QtWidgets.QMessageBox.Close)
+ app = QApplication(sys.argv)
+ messageBox = QMessageBox(QMessageBox.Critical, "OpenGL textures",
+ "PyOpenGL must be installed to run this example.",
+ QMessageBox.Close)
messageBox.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate")
messageBox.exec()
sys.exit(1)
-import textures_rc
+import textures_rc # noqa: F401
-class GLWidget(QtOpenGL.QGLWidget):
+class GLWidget(QOpenGLWidget):
sharedObject = 0
refCount = 0
coords = (
- ( ( +1, -1, -1 ), ( -1, -1, -1 ), ( -1, +1, -1 ), ( +1, +1, -1 ) ),
- ( ( +1, +1, -1 ), ( -1, +1, -1 ), ( -1, +1, +1 ), ( +1, +1, +1 ) ),
- ( ( +1, -1, +1 ), ( +1, -1, -1 ), ( +1, +1, -1 ), ( +1, +1, +1 ) ),
- ( ( -1, -1, -1 ), ( -1, -1, +1 ), ( -1, +1, +1 ), ( -1, +1, -1 ) ),
- ( ( +1, -1, +1 ), ( -1, -1, +1 ), ( -1, -1, -1 ), ( +1, -1, -1 ) ),
- ( ( -1, -1, +1 ), ( +1, -1, +1 ), ( +1, +1, +1 ), ( -1, +1, +1 ) )
+ ((+1, -1, -1), (-1, -1, -1), (-1, +1, -1), (+1, +1, -1)),
+ ((+1, +1, -1), (-1, +1, -1), (-1, +1, +1), (+1, +1, +1)),
+ ((+1, -1, +1), (+1, -1, -1), (+1, +1, -1), (+1, +1, +1)),
+ ((-1, -1, -1), (-1, -1, +1), (-1, +1, +1), (-1, +1, -1)),
+ ((+1, -1, +1), (-1, -1, +1), (-1, -1, -1), (+1, -1, -1)),
+ ((-1, -1, +1), (+1, -1, +1), (+1, +1, +1), (-1, +1, +1))
)
- clicked = QtCore.Signal()
+ clicked = Signal()
- def __init__(self, parent, shareWidget):
- QtOpenGL.QGLWidget.__init__(self, parent, shareWidget)
+ def __init__(self, parent):
+ super().__init__(parent)
- self.clearColor = QtCore.Qt.black
+ self.clearColor = Qt.black
self.xRot = 0
self.yRot = 0
self.zRot = 0
- self.clearColor = QtGui.QColor()
- self.lastPos = QtCore.QPoint()
+ self.clearColor = QColor()
+ self.lastPos = QPoint()
+ self.funcs = None
def freeGLResources(self):
GLWidget.refCount -= 1
if GLWidget.refCount == 0:
self.makeCurrent()
- glDeleteLists(self.__class__.sharedObject, 1)
+ self.funcs.glDeleteLists(self.__class__.sharedObject, 1)
def minimumSizeHint(self):
- return QtCore.QSize(50, 50)
+ return QSize(50, 50)
def sizeHint(self):
- return QtCore.QSize(200, 200)
+ return QSize(200, 200)
def rotateBy(self, xAngle, yAngle, zAngle):
self.xRot = (self.xRot + xAngle) % 5760
self.yRot = (self.yRot + yAngle) % 5760
self.zRot = (self.zRot + zAngle) % 5760
- self.updateGL()
+ self.update()
def setClearColor(self, color):
self.clearColor = color
- self.updateGL()
+ self.update()
def initializeGL(self):
+ profile = QOpenGLVersionProfile()
+ profile.setVersion(3, 2)
+ profile.setProfile(QSurfaceFormat.CompatibilityProfile)
+ self.funcs = QOpenGLVersionFunctionsFactory.get(profile)
+ self.funcs.initializeOpenGLFunctions()
+
if not GLWidget.sharedObject:
self.textures = []
for i in range(6):
- self.textures.append(self.bindTexture(QtGui.QPixmap(f":/images/side{i + 1}.png")))
+ image = QImage(f":/images/side{i + 1}.png")
+ self.textures.append(QOpenGLTexture(image))
GLWidget.sharedObject = self.makeObject()
GLWidget.refCount += 1
- glEnable(GL_DEPTH_TEST)
- glEnable(GL_CULL_FACE)
- glEnable(GL_TEXTURE_2D)
+ self.funcs.glEnable(GL.GL_DEPTH_TEST)
+ self.funcs.glEnable(GL.GL_CULL_FACE)
+ self.funcs.glEnable(GL.GL_TEXTURE_2D)
def paintGL(self):
- self.qglClearColor(self.clearColor)
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
- glLoadIdentity()
- glTranslated(0.0, 0.0, -10.0)
- glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0)
- glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0)
- glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0)
- glCallList(GLWidget.sharedObject)
+ self.funcs.glClearColor(self.clearColor.red(), self.clearColor.green(),
+ self.clearColor.blue(), 1)
+ self.funcs.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT)
+ self.funcs.glLoadIdentity()
+ self.funcs.glTranslated(0.0, 0.0, -10.0)
+ self.funcs.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0)
+ self.funcs.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0)
+ self.funcs.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0)
+ self.funcs.glCallList(GLWidget.sharedObject)
def resizeGL(self, width, height):
side = min(width, height)
- glViewport(int((width - side) / 2), int((height - side) / 2), side, side)
+ x = int((width - side) / 2)
+ y = int((height - side) / 2)
+ self.funcs.glViewport(x, y, side, side)
- glMatrixMode(GL_PROJECTION)
- glLoadIdentity()
- glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0)
- glMatrixMode(GL_MODELVIEW)
+ self.funcs.glMatrixMode(GL.GL_PROJECTION)
+ self.funcs.glLoadIdentity()
+ self.funcs.glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0)
+ self.funcs.glMatrixMode(GL.GL_MODELVIEW)
def mousePressEvent(self, event):
- self.lastPos = QtCore.QPoint(event.pos())
+ self.lastPos = event.position().toPoint()
def mouseMoveEvent(self, event):
- dx = event.x() - self.lastPos.x()
- dy = event.y() - self.lastPos.y()
+ pos = event.position().toPoint()
+ dx = pos.x() - self.lastPos.x()
+ dy = pos.y() - self.lastPos.y()
- if event.buttons() & QtCore.Qt.LeftButton:
+ if event.buttons() & Qt.LeftButton:
self.rotateBy(8 * dy, 8 * dx, 0)
- elif event.buttons() & QtCore.Qt.RightButton:
+ elif event.buttons() & Qt.RightButton:
self.rotateBy(8 * dy, 0, 8 * dx)
- self.lastPos = QtCore.QPoint(event.pos())
+ self.lastPos = pos
def mouseReleaseEvent(self, event):
self.clicked.emit()
def makeObject(self):
- dlist = glGenLists(1)
- glNewList(dlist, GL_COMPILE)
+ dlist = self.funcs.glGenLists(1)
+ self.funcs.glNewList(dlist, GL.GL_COMPILE)
for i in range(6):
- glBindTexture(GL_TEXTURE_2D, self.textures[i])
+ self.textures[i].bind()
- glBegin(GL_QUADS)
+ self.funcs.glBegin(GL.GL_QUADS)
for j in range(4):
tx = {False: 0, True: 1}[j == 0 or j == 3]
ty = {False: 0, True: 1}[j == 0 or j == 1]
- glTexCoord2d(tx, ty)
- glVertex3d(0.2 * GLWidget.coords[i][j][0],
- 0.2 * GLWidget.coords[i][j][1],
- 0.2 * GLWidget.coords[i][j][2])
+ self.funcs.glTexCoord2d(tx, ty)
+ x = 0.2 * GLWidget.coords[i][j][0]
+ y = 0.2 * GLWidget.coords[i][j][1]
+ z = 0.2 * GLWidget.coords[i][j][2]
+ self.funcs.glVertex3d(x, y, z)
- glEnd()
+ self.funcs.glEnd()
- glEndList()
+ self.funcs.glEndList()
return dlist
-class Window(QtWidgets.QWidget):
+class Window(QWidget):
NumRows = 2
NumColumns = 3
def __init__(self, parent=None):
- QtWidgets.QWidget.__init__(self, parent)
+ QWidget.__init__(self, parent)
- mainLayout = QtWidgets.QGridLayout()
+ mainLayout = QGridLayout(self)
self.glWidgets = []
for i in range(Window.NumRows):
@@ -191,26 +172,25 @@ class Window(QtWidgets.QWidget):
for j in range(Window.NumColumns):
self.glWidgets[i].append(None)
+ hue_div = (Window.NumRows * Window.NumColumns - 1)
for i in range(Window.NumRows):
for j in range(Window.NumColumns):
- clearColor = QtGui.QColor()
- clearColor.setHsv(((i * Window.NumColumns) + j) * 255
- / (Window.NumRows * Window.NumColumns - 1),
- 255, 63)
-
- self.glWidgets[i][j] = GLWidget(self, self.glWidgets[0][0])
- self.glWidgets[i][j].setClearColor(clearColor)
- self.glWidgets[i][j].rotateBy(+42 * 16, +42 * 16, -21 * 16)
- mainLayout.addWidget(self.glWidgets[i][j], i, j)
+ clearColor = QColor()
+ hue = ((i * Window.NumColumns) + j) * 255 / hue_div
+ clearColor.setHsv(hue, 255, 63)
- self.glWidgets[i][j].clicked.connect(self.setCurrentGlWidget)
- qApp.lastWindowClosed.connect(self.glWidgets[i][j].freeGLResources)
+ glw = GLWidget(self)
+ self.glWidgets[i][j] = glw
+ glw.setClearColor(clearColor)
+ glw.rotateBy(+42 * 16, +42 * 16, -21 * 16)
+ mainLayout.addWidget(glw, i, j)
- self.setLayout(mainLayout)
+ glw.clicked.connect(self.setCurrentGlWidget)
+ qApp.lastWindowClosed.connect(glw.freeGLResources) # noqa: F821
self.currentGlWidget = self.glWidgets[0][0]
- timer = QtCore.QTimer(self)
+ timer = QTimer(self)
timer.timeout.connect(self.rotateOneStep)
timer.start(20)
@@ -225,7 +205,7 @@ class Window(QtWidgets.QWidget):
if __name__ == "__main__":
- app = QtWidgets.QApplication(sys.argv)
+ app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())
diff --git a/examples/opengl/textures/textures.pyproject b/examples/opengl/textures/textures.pyproject
index 05416190a..1ad304324 100644
--- a/examples/opengl/textures/textures.pyproject
+++ b/examples/opengl/textures/textures.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["textures.qrc", "textures_rc.py", "textures.py"]
+ "files": ["textures.qrc", "textures.py"]
}
diff --git a/examples/opengl/textures/textures_rc.py b/examples/opengl/textures/textures_rc.py
index e68b63d69..a0676a335 100644
--- a/examples/opengl/textures/textures_rc.py
+++ b/examples/opengl/textures/textures_rc.py
@@ -1,6 +1,6 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.14.0
+# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
@@ -285,267 +285,6 @@ F\xd3\xfc\x15\x03\xac\x96\x07k1\xbdh?]\x19'\
\x80\x00\x04 \x00*\x00\xda\x22\x00\x01\x08p\x07\x80\xbb\
\x08@\x00\x02\x10\x00z\xfd\x06\x0eL\xb1gp\xf4v\
\x0b\x00\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x09\x13\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x01\x00\x00\x00\x01\x00\x08\x03\x00\x00\x00k\xacXT\
-\x00\x00\x00\xedPLTEx\x00\xf8\x80\x00\xf8\x80\x04\
-\xf8\x80\x08\xf8\x80\x0c\xf8\x88\x10\xf8\x88\x14\xf8\x88\x18\xf8\
-\x88\x1c\xf8\x88 \xf8\x90 \xf8\x90$\xf8\x90(\xf8\x90\
-,\xf8\x900\xf8\x980\xf8\x984\xf8\x988\xf8\x98<\
-\xf8\x98@\xf8\xa0@\xf8\xa0D\xf8\xa0H\xf8\xa0L\xf8\
-\xa0P\xf8\xa8P\xf8\xa8T\xf8\xa8X\xf8\xa8\x5c\xf8\xa8\
-`\xf8\xb0`\xf8\xb0d\xf8\xb0h\xf8\xb0l\xf8\xb0p\
-\xf8\xb8p\xf8\xb8t\xf8\xb8x\xf8\xb8|\xf8\xb8\x80\xf8\
-\xc0\x80\xf8\xc0\x84\xf8\xc0\x88\xf8\xc0\x8c\xf8\xc0\x90\xf8\xc8\
-\x90\xf8\xc8\x94\xf8\xc8\x98\xf8\xc8\x9c\xf8\xc8\xa0\xf8\xd0\xa0\
-\xf8\xd0\xa4\xf8\xd0\xa8\xf8\xd0\xac\xf8\xd0\xb0\xf8\xd8\xb0\xf8\
-\xd8\xb4\xf8\xd8\xb8\xf8\xd8\xbc\xf8\xd8\xc0\xf8\xe0\xc0\xf8\xe0\
-\xc4\xf8\xe0\xc8\xf8\xe0\xcc\xf8\xe0\xd0\xf8\xe8\xd0\xf8\xe8\xd4\
-\xf8\xe8\xd8\xf8\xe8\xdc\xf8\xe8\xe0\xf8\xf0\xe0\xf8\xf0\xe4\xf8\
-\xf0\xe8\xf8\xf0\xec\xf8\xf0\xf0\xf8\xf8\xf0\xf8\xf8\xf4\xf8\xf8\
-\xf8\xf8\xf8\xfc\xf8\x09\xd19\xc7\x00\x00\x00\x09pHY\
-s\x00\x00\x00H\x00\x00\x00H\x00F\xc9k>\x00\x00\
-\x07\xccIDATx\xda\xed\xddiC\xdaL\x10\x00\
-\xe0\x1cP\x90\xa3(-R\x81\xaax\x03\xe5\xa8\x82\x22\
-E\xa8\x81\x0a\x91d\xfe\xff\xcf\xe9\x87\xbe\xafr\xe4\xce\
-&f6\xb3\xdf#\xd9G\xc81;3+@\xcc\x87\
-@\x00\x04@\x00\x04@\x00 \xc4p\x10\x00\x01\x10\xc0\
-&@\xac.}\x04@\x00\x04@\x00\x04@\x00\x04@\
-\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\
-\x04@\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\x04\
-@\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\xac\x87\
-\xae\x0cZg\x95/\xf9tR\x96\x04)\xf1)\x9d-\
-V\xce[}E\x8f\x03\x80\xd2=\xfe,\x99\xa4,J\
-\x85Zg\xc63\xc0\xea\xae\x96\xb2M\xdcLUo_\
-\xb9\x04\xd0\xee\x0e%\x87\xc9\xab\xd2\xb7\xbe\xc6\x1b\xc0\xe4\
-Xv\x95\xc0\x9b8\x9fs\x04\xa0\xff,\xb8\xcfa\x16\
-+\x13N\x00^\x1b\x9f<\xe6qW\xe7\x1c\x00\xa8W\
-\x09\xef\x99\xec\xd2\xf9\x0a9\xc0\xab\x9f\xe9\x0b\x82 d\
-\xc6\x98\x01\xb4V\xd2w9\x83x\xa6\xa1\x05\xb8K3\
-\xa9\xe88X\xe2\x04P\xf7Y\xd5\xb4\xa4\x9fQ\x02<\
-\xb0\xab\xea\x91\xc7\x18\x01\xae\x18\xd65%\x9e\x10\x02\x1c\
-\xb2\xac\xecJL\xf1\x01$Y\x02\x08\xa9%6\x809\
-\xe3\xea\xbe\xa2\x8e\x0c\xe0\x8eu}\xe3\x052\x80s\xd6\
-\x00\xe2\x04\x17\xc0\x01\xf3\x12\xd7}T\x00\xba\xcc\x1c@\
-\xe8`\x02\xf8\x1d@\x95sJG\x04\xd0\x0d\xa2\xce\xfb\
-\x16\x11\xc0I\x10\x00yD\x00\xf9@J\xfd'h\x00\
-4\xd1\xf4n\x96\xab\x5cw\x87OSE\x99\x8e\x07\x9d\
-\xcb\xf2\x9e\x1b\x80K4\x00c\x93\x17\xdb\xb3\xe1N\x8c\
-k\xd9?q\x1c3\xcc\xa1\x01h\x19\x86yGf\xf7\
-\xcca\xd9\xa1\xc0\x1c\x0b@\xd5 \xc4k\xb9\xe8\xa5T\
-\x1c\x01\x0c\xb0\x00dv\xbe\xbc\xb61\x8dQ\xd6\x01\xc0\
-\x15\x12\x80\xe5\xf6\x89\x9f8\x88l\xaej\xf6\x00e$\
-\x00\xc3\xad_\x7f\xcf\xd9a\x0d[\x80\xcfH\x00n6\
-\x977\x86N\x8fk\xdb.\x13 \x01\xd8\x08\x87\x89\xf7\
-\xce\x0f\xbc\xb0\x01H\x22\x01\xd8\xb8\xb1\xf7\xdc\x1c\xf9\xc5\
-&(\x80\x03\xe0\xcf\xc6\xf5\xcf]$\xcdz)M\xc6\
-\x01\xd0_\x7f\x81\xd1\xfc\x5c>\x90\xfe\x04\xd6~\xc9\xa2\
-\xdbx\xf6\xca2\x9a\x9c\xc6\x01P\xf4\x13\xca\xb4\x0c&\
-\x16q\x00\xbc\x87\xc3\x92\xee\xf3\x9d\x9e-S&P\x00\
-\xacM\xe1\x07\x8b\xc7\xe8\xb5q\x83\x02\xa0\xe7/\x8ag\
-\x15L\x1a\xa2\x008};\xdf\x06\xebp\xe2\x12\x05\xc0\
-[J\x98\xacz9\xfc\x97\xf9\xfc\x0b(\x02\x22\xda[\
->\xe4wO\xc7\xbf\x84\xf76\x1c\x0c\xc0\xd3\xdb\xf9z\
-\xcbkP\xcd\x01~\xa3\x00h\xfb|u\xd3C\x5c\x1c\
-\x0b\x04\xa0\xeas=W3\x05\xe8\xe1\x00\xc8\xfa\x8c\xe2\
-/M\x9f\x83\x91,\x8d\xfd\xec\xfd\x1b?=\x1e?\xe3\
-bq\x94]<\xed=\xae\xaa\xc7\x04\xc0,.\xf6\x0b\
-b\x02pl<\xff\x13\x88\x0b\x80\xf1\xcbPN\x8b\x0b\
-\x80qz\x99\x1cL\xbal\x14\x01\x9a\x86\xc1\xd0\x07\x88\
-\x0d@\xce\x08\xe0\x07\xc4\x06`d4\xff\x06\xc4\x07\xa0\
-\x18B\x1c(\xca\x00\x06I\xf6b\x07\xe2\x03\xf0\xba[\
-d\x22\x0f F\x00\xbb+\xe4{S\x88\x11\xc0nf\
-MI\x85\x18\x01\x0c\xb6s\xcb\xa4V\xc0\x9f\x18-\x80\
-\xbb\xed\xf9\xe7~C\x9c\x00\x1a[\xf3\x97\xae\x83o\xa8\
-\x10!\x80\xe5v\xa6\x5cQ\x09\xe1S\xa3\x03\xd0\xdbZ\
-\x14N\xdf\x85\xf2\xb1Q\x01\x18l\xa5\x16\xcbW\xdc5\
-P\xb0\xfa\xf2\xb7\xb6\xde\x7f\xa4\xfa2\xac\xcf\xfex\x00\
-\xa5U\x92vj\xe6\x07S\x95S\x00u\xf9\xdfX\xcc\
-\x95\xa7A\xab^4\xcd\x08J\xee\xd7\x1a\xc3\x05o\x00\
-\xaa\xe8\xb6l\xba\xda}\xe1\x09`\xe0\xa5H\xa2\xd0\x5c\
-p\x03\xe0\xb1\x8eF\xac<q\x02\xb0'x\x1d\xa5\x09\
-\x0f\x003?\xe5B\xd5\x17\xfc\x00\x1d\x7f\x15\xf4=\xf4\
-\x00e\xc1\xdf8Z\xe1\x06\xd0}v\xd4\x11\x84\xac\x82\
-\x1a`\xec\xbfn0\xf9\x84\x19\x80ES\x11\xf9\x111\
-\x00\x93\xb6:\xf2\x08-\x80\xeb\xe7`\x93\x9b\x81\x82\x15\
-\xa0\xcf\xa8~8\xa3\x22\x05`VO^F\x0a\x90f\
-\x05 tQ\x02\xcc\x98\xcd_H,0\x02l\xa7>\
-\x89\x92w\x81\x1aF\x80\x7f\xa9O\x99\xf2E\xe7a2\
-W5\x00\x00m9\x1b\xf5\xae\xca)\xf7\x02S\x84\x00\
-\xfae\xf1\xfa\xd1\xb8\x80fq[q\xf9\x94\x5c\xe1*\
-*\x0c\x00\xa0\xdf\x1f\xbayL\x10\xe7\xbc\x01\x00\xc0\xfc\
-\xd8\x05\xc1%\x87\x00\x00\xb3#\xe7-\x85\xb8\x04\x00\x18\
-8\xee&2\xe6\x13\x00\x96\xa5p{\xcbE/IJ\
-\xaf;\x03\xf8\xcc+\x80I\xa6\xe8\xeeP\xb9\x05\xb0\xa9\
-\x1f\xff\x7f\x8c\xf8\x05X+\xbc\xb4\x18-\x8e\x01t'\
-\xcd\x18O9\x06\x80\x85\x83'\xe3\x12\xcf\x00N\x96P\
-\xf2\x5c\x038\x08\xa0\xa6\xf8\x06\x18\xd9GE\xf8\x06\xb0\
-\xff\x0aH\x9c\x03\xd8\xe6R\x88\x9c\x03\xe8v\xad\xc9\x93\
-\x9c\x03\xd8F\xd13\xbc\x03<\xda\xa5\x0e\xf1\x0e\xb0\xb2\
-\x89\x0f}\xe5\x1d\xc0\xee>p\xc4=@=\xc6\xef\x02\
-\x00`\xdb\x5c\xb1\xc3=\xc0\xd0\x1a\xe0\x89{\x00\xc5\xfa\
-9H\xe3\x1e`\x11F\x8f\xe9(\x03\xbc\x0a!\xb4\x95\
-\x8b2\x80n\x09\xd0\xe6\x1f@\xb3\x04x\x89,\x80\xfa\
-\xc0\xa8\xd6}i5\x7fV=\xa5\x18\x03\xa8\xf7\xe7\x05\
-\x91U\xd3?\xcb\x9d\x9a\x1aQ\x04\xb8\xcc\x8b,\xff=\
-\x13+\x80Y\x14\x01\xde[\x1f0I\xe7\xec\x87\xb1\xd1\
-\x02S\x80\xb3\xb7\xf3;`qn\x8d\xe0\xef\x01\x8c\x01\
-\xd6v\x17c\xd1\xf3\xe5\xbbE4H\x8b$\x80\xc26\
-h\x9f\x0d\xa3\xb1$\xdb\xbb\xc0\xda\xeeZ\xfe\xb7D\xb2\
-\xb8\x0bJQ\xcd\x13\x5c[\xd2K\xfb\xfe\x92Z\x84\x85\
-\x19v\x15c\x0bp\xca\xf2[j\xbe\xdf\x864\x8f*\
-\xc0zC`\xf9\x8f\xcf\x07\xe1D(\xade\xd9\x02L\
-\x18\xe6t\x9b\xff\x02\xd2Zd\x016\xf7\xd7\xf2\xd7\x01\
-\xe1K8[\x0d1~\x17\xd8\xb8s%\xfd4\x01\x98\
-\x06\x9c\x17\x10\x10\xc0\xe6nQ\x87\xc0\xea/\xad/\x0a\
-\xcf\xa2\x0cp\xbdy\xb2M\xcf\x7f\xc8\xbc\xc2\xae\x0fQ\
-\x06\xd8\xbar\x89\x9e3\xb9\x0a\xc1\xae\x06\x04\x060c\
-T\xe1e\x9a*X\xd0\xa2\x0d\xa0oW\x81\xecy\x8a\
-\x5cM\xcc\x8aI\x12\xacw\xdbc\x1e\x12\xdb\xd9h3\
-\xeb\xe1\xb1]5\xdbcCb\xbd\xbf\x04{\x80\xddm\
-\x06\xb3\xae\x9f\x085\xb3,A1\x80\xdeJ\xac\x01\x0c\
-\x82\x18)\x97\xfdp\xf5r\x88\xad\xc5\x99\x03\x18=\xc0\
-&\xee\xdd\xfc\x85U)\xe88h\xa0\x00\xc6\xc5\x81u\
-\xe7\xd7\xee\xc5~\xc0\x05\x02\x01\x03\x80\xf1\xf5;\xeb\xb4\
-/\xfa\xd0\xb4b\xa4\x098\x00\xcc\xf6[\xae:\xb9\x16\
-\xae\xceLC\x00A\xf5\x96c\x0eP5\x9dB\xdd\xf6\
-\x91\xe0\xd6\xb4\x8221\x02,\x00\x16\xb1l\xa9j\x95\
-\xd3\xa0\xf7r\xe6\x11\x80g@\x03`\x9d\xe0\x99\xbd1\
-y6\x9e^X\xd4\xcf\x1e\x06\xd8\x5c\x8f9\x80m\x8d\
-x\xe6\xe4v\xeb\x85v\xd1\xaf[\xed8,\xfd\x00@\
-\x04\x00Nj\xc2\xe5B\xe5\xac\xd1\xe9v\xdb\x8d\xcb\xea\
-\x81M\xa5`6\xd0\xbe\xca\x01\x00\xe4\x05\xa6\xe3x\x05\
-\xc8\x00\xaa,\xa7\x9f\x1f\x03`\x03h\xb0\x9b~\xa2\x8d\
-\xb1\xaf\xf0\x03\xb3\xf9\xd7\xc2\xe8\xac\xca\x1e`\xceh\xfa\
-GS\x00\x94\x00\xeb+\xa4\x9e\x87X}\x06\xc0\x0a\xe0\
-\xbfa\x96X\x9b\x01\xe0\x05\xf0\xdb/)\xdb\x5c\x00`\
-\x06\x80\xc7o\xde\x9b\x86\xc9\xdf\xc7\x10\xea\x08&Qr\
-q\x93\xf34\xfbro\x05\xc0\x03\x00\x00L/2.\
-[\xa4\xd5\x1f5\x08\x7f\x04\x99*\xab\xb4J\xce\xee\x08\
-b\xae\xd6V\xe0cF\xc0\xb9\xc2\xfa\xb4]\xcd[)\
-\xc8\xd9Js\xb4\x82\x8f\x1b\xa1$K\xcf\x87\xdd\xab\xe3\
-\xc3b>\x9dL\xc8\x92 %R\x99\xfc\xfe\xd7\xf2i\
-\xb3?Y\xc0G\x8f(g\x8b\x13\x00\x01\x10\x00\x01\x10\
-\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\
-\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\
-\x10\x00\x01\x10\x00\x01\x10@\x80\x00q\x1b\x04@\x00\x04\
-\xf0\x0e\x10\xdfA\x00\x04@\x00\x04\x10\xeb\xf1\x17\xe9\x89\
-Gh\xda\x1b|\x00\x00\x00\x00\x00IEND\xaeB\
-`\x82\
-\x00\x00\x06\xe8\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x01\x00\x00\x00\x01\x00\x08\x03\x00\x00\x00k\xacXT\
-\x00\x00\x00\x8aPLTE\x00\xfcx\x00\xfc\x80\x08\xfc\
-\x80\x10\xfc\x80\x10\xfc\x88\x18\xfc\x88 \xfc\x88 \xfc\x90\
-(\xfc\x900\xfc\x900\xfc\x988\xfc\x98@\xfc\x98@\
-\xfc\xa0H\xfc\xa0P\xfc\xa0P\xfc\xa8X\xfc\xa8`\xfc\
-\xa8`\xfc\xb0h\xfc\xb0p\xfc\xb0p\xfc\xb8x\xfc\xb8\
-\x80\xfc\xb8\x80\xfc\xc0\x88\xfc\xc0\x90\xfc\xc0\x90\xfc\xc8\x98\
-\xfc\xc8\xa0\xfc\xd0\xa8\xfc\xd0\xb0\xfc\xd0\xb0\xfc\xd8\xb8\xfc\
-\xd8\xc0\xfc\xe0\xc8\xfc\xe0\xd0\xfc\xe0\xd0\xfc\xe8\xd8\xfc\xe8\
-\xe0\xfc\xe8\xe0\xfc\xf0\xe8\xfc\xf0\xf0\xfc\xf0\xf0\xfc\xf8\xf8\
-\xfc\xf8`;^\x10\x00\x00\x00\x09pHYs\x00\x00\
-\x00H\x00\x00\x00H\x00F\xc9k>\x00\x00\x06\x04I\
-DATx\xda\xed\xddaw\xa28\x14\x06`Ba\
-`\xa4\xba\xd0vtuQ*2Pb\xf8\xff\x7fo\
-;\x9d=g\xdb\x01\x14\x85$7\xe4\xcdw\xcf\xe9}\
-*\xe1\xe6\xe6&:\x8d\xe5\xc3\x01\x00\x00\x00\x00\x00\x00\
-4\x8e\x85\x03\x00\x00\x00\xc0W\x00\xab\xa6>\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00&\x1eU\x9e\xae\x93(\xf4]\x971\xd7\xf3\x830\
-J\xd6iV\x08\x1b\x00\xc4q\xf3\xe8\xf6u,\x06\xf1\
-\xf6\xc8\xe7\x0cP\xed\x1e\xd9\xd5\xbe\xcdp\x9d\x8bY\x02\
-\xf0\x7f\x16C{W\xd9\xea \xe6\x06P$\xec\xa6\xfe\
-]7\xc9\xe7\x04p\x8c\xee\xe8a\x0eR1\x13\x80\xe3\
-\xe2\xce6no\xcbg\x00PD#:\xd9\xdd\x9d\xe9\
-\x00u2\xb2\x99?8\x1a\x0d\x90\xba\xe3\xcf3,k\
-c\x01\xca\xc5$':\x1e2C\x016l\xaaC-\
-O\xc2@\x80\x89\xfe\xfd\xff\xcd\x04\x95q\x00S<\xfd\
-\x9f\xdf\x88\x85Y\x00<\x9e\xfah\x97{4\x0a\xe0\xdb\
-\xf4\x87\xdb\xd8\xc1 \x00.\xe3x\x1f\xcb\xcd\x01(\xa4\
-\x1cptO\xc6\x00\x1c\xe5\x1c\xf1\xf4*S\x00RI\
-\x87\x5c\xbf\x0bC\x006\xb2\x8e\xf9\xbe\x18\x02\x90\xc8\x02\
-p23\x00\x1e\xa5\x01x\xdc\x08\x80@\xdeY\xf7\x17\
-#\x00\x98<\x00V\x1a\x00\xc0\x1d\x89ci\x00\xc0\x80\
-<\x88\xb9w\x7fK\x0a\xfa\x00\x97\xf2 o\xb5\xcd\x8a\
-\x8f\x99L\xf0\x22\xdb\xae\xbc\x9b\x01\x12\xfa\x00\xbdy\xd0\
-b\xdb~\x82\xcbMx\xe3,\xc0\xc9\x03t\xe7A\xee\
-\xba/\x93=\xc57=\x0f\x7f\x93\x07\xe8\xca\x83\xbc\xdd\
-\xa54\xb6\x5c\xdeR\x1e\x22\x0f\xd0\xde\x09`?\xceW\
->\x93\xdd0\x19T\xd4\x01ZyP8`\xe6\xae\x87\
-\x7f\x09v\xd4\x01\xfe|\xa2\xe3a\x8b\xb8\xe7\xa1\x00\x8f\
-\xc4\x01\xfe\xcc\x83\xd6C?\xb8\x1e\xfa\x1e \x0eP\xdc\
-\x19\xff\xf0U\xe4O\xda\x00\xaf_\xfe\xd8\xbf\xc6M\x9f\
-\x9d\xe3@\x1b\xe0K\x1e\xe4\xdf\x94\xb6\xd4\xc3v\x13\xd6\
-\xb4\x01\xbe<\xca\xfb\xdb>{\x18\x04\xb0\xa2\x0d\xf0\xf9\
-I\xf6\xc7\xe7\x10])5m\x80hL\xfd\xe24\x04\
- \xa4\x0d\xf09\x0f\xba}3cH>\xe4\xd3\x06\xf8\
-\x94\x07\xb1\xdb\xeb\xd8C\xf6\x14\x5c\xd2\x00|d\xf9\xc6\
-W\x99\x09\xc9\x00(Ff\xed/\xa6\x7f\x03^G\xa6\
-l\xf9\x80\xe28i\x80t\xec\x1f\xca\x14V\x04d\x00\
-\xac\xc7\x96\xef\xae\xa7\x02\x11i\x80dl\xce~}Q\
-\x98\x90\x06\xf8\xf4\x0f\xbc\xaf\xc3oo\xf8Z \x18\x9b\
-\xb0\xe5\x86\xaf\x06\xd9\xd8\x7fT\xa9poD\x02\x00\x1f\
-\x93\x07\xff^\x13\x9b]\x11*\xc6\xe4\xc1\x1fC\xa8{\
-\x09\xc8\x00\xc8\xc6oc^\x03\xd8\x90\x06H\xc7W\xaf\
-\xaf\x01\x1ci\x03\x04\xee\xc8\xa9\xea|m% H\x03\
-|Lc?\xf3C\xba\xbd\xfb\xd3\xca\x0abD\x8f\xce\
-VW\x00\xf6s\x078\x19\xbf=>rd\x97\x01\xe2\
-f\xee\x00;e\xef\x00\xa2\x00/\x8a\x0a\xa2d\x01.\
-\xd7\x03\xb6\xf3\x07\xb8\xd8*\xe1\xf2\xd9\x03\xd43\xe8\x14\
-\x95\xf7\x12`o\xf3\x07\xb88\x07>7\xf3\x07\xb8t\
-\xde\x90U\xf3\x07\xe0l\x06\x07&\xc6\x8c\xbd\xbaW\x00\
-M\x80XM\x7f\x1cY\x00\xe1\xaah\x0b \x0cp\xa9\
-G\xe6d\x03\xc0JQ\x9f<U\x80\x0b\xef\x00\x9f\xdb\
-\x00\xb0U\xb4\x0c&\x0b\xd0\xdf\x1e\xf2\xd4\xd8\x00\xd0\xbf\
-\x0e\x08\xceV\x00\xf4\x96\x02\x98a7H\xdc9r\x85\
-)\x10I\x80H\xc5V\x00a\x80\xdezx(\xec\x00\
-\xe8\xfb\x02\xb8Uc\x05@\xdf+\x80I\xbcN\x8c\x14\
-@\xdf\x99\xf3\xb4\xb1\x03`'\xbd#\x8a6@\xdfa\
-\x91\xb8\xb1\x04\xa0g\x19\xb8\x14\x96\x00\xf4\xcc\x80\x0b\xc9\
-\xf7\x8a\x92\x01\xe0\xdd\xab\xa0P\xf6\xa5\xa2d\x00\x12=\
-\xf1\x93\x01\xc84\xc5O\x05\xa0\xf64\xc5O\x05\xa0\xf3\
-\xde\xa1\x85\x8a{\xd6i\x00t\xde8\x11\x9d\x1b[\x00\
-r\xa6\xfe\xfdO\x09\xa0s\x02X)\xba^\x9e\x00\x80\
-X(\xcf\x7fi\x01$\x8a\xb6@\xa8\x02\xecTl\x82\
-\x13\x06\xc8\x98\xe2\xf5/1\x80\xc2\x95z\x1a\x80<@\
-\xe5\xc9\xee\x03\xa4\x0d\xc0\x03\xb5\xf5/j\x00\xe7\xf6\x0b\
-\x90\xed\x1b{\x00D\xa4\xe8\xfal\xaa\x00\xed\x1a\x18\xcb\
-\x1a\x8b\x00bU\x17\xc8\x13\x05\xe8\x88?o,\x02\x88\
-\x95\x5c\x9dN\x17 V\xf6\x13\x124\x01\xda\xf3\x9fW\
-6\xf6\x00\x88\xf6UA~\xd5\xd8\x03\xd0\x11\x7f\xa0+\
-~\x1d\x00\xe7v\xfe\x13\xd6\x8d=\x00|\xa1\xa5\xfcM\
-\x06\x80\x87z\xca\xdfT\x00\xeav\xfc\x91h\xec\x01\xa8\
-\x03]\xe5o\x1a\x00\xd57m\xe5o\x12\x00\x95\xaf\xaf\
-\xfcM\x01\xa0\xf45\x96\xbf\x09\x00\x14\x9e\xce\xf2\xb7~\
-\x80\xe2Ak\xf9[;\xc0\xc9\xd5[\xfe\xd6\x0d\x90\xbb\
-\xca\xfa\xbfI\x02\x1c]\xdd\xe5o\xbd\x00\xafL{\xf9\
-[+@{\xffO}\xf9['\xc0\x81\x11(\x7fk\
-\x04\xd83\x0a\xe5o}\x00)\x8d\xf2\xb76\x80\x1d\x91\
-\xf2\xb7.\x80-\x95\xf2\xb7&\x80v\x03\xa0?E\xf9\
-[pC\x00~\x8c:\xfe$\xf8[Y\x9c\xf2\xec\xb0\
-O\xb7\x9b\xf5K\x12\xaf\x96Q\x18\xf8\x0f\xec\xfe\xdbJ\
-\x15\x03t]\x07S\xb7\xc3\xac\xab\xf70_\xdf\xc3\xdc\
-\xbd\x87\xf9\xfc+\xcc\xef\x81\xef\xb9j\xae\x93\x92\x09\xf0\
-\xd4y\x0bJ\xba\xdb\xbe\x87\x99\xbc\x87\xb9\xb8\x1af\xff\
-H\x0d\x00\x90\xf7\xcb\xb3S\xde\xac,\x0f \x96\x19?\
-\xfd9@\xac\xa4\xc6?\xddm\x22\x92\x00\xc4Rn\xfc\
-NI\x1b@D\x92\xe3\x9f\xee\x17\x07\xe5\xfc\xda\xdcB\
-v\xfc\x0e\xa7\x0c\xa0 ~\xe7L\x18\x80\x87\xf2\xe3w\
-\x04]\x80:P\x10\xfft\xd9\xfa\xe4\x00oJ\xe2\xa7\
-\x0bP\xf9\x8e\xd5\x00\xa5\xa2\xf8\xa9\x02\x94\x9ec5@\
-\xa1,~\xa2\x00+\x07\x00\x00\x00\x00\x00\x00\xa0b\x08\
-\xdb\x018\x00,\x07\xa8m\x07\xa8l\x07(l\x07\xa0\
-^\x167g\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`+\x80\
-m\x03\x00\x00\x00\xc0\xff\x00\xf6\x0e\x00\x00\x00\x00\x00\xb0\
-z\xfc\x0bC\xd4\xc6\xc6D\x07\xe4\xaa\x00\x00\x00\x00I\
-END\xaeB`\x82\
\x00\x00\x09\x8e\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -701,6 +440,267 @@ Q\xee\x10@\x8f\x84\x00\x08\x80\x00\x08\x80\x00\x08\x80\x00\
\x00\x08`*\x80i\x09\x01\x10\x00\x01~\x01\x98\x9b\x10\
\x00\x01\x10\x00\x01\x8cN\xff\x00\xf3k\xd4\xa5uQ\x85\
3\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x06\xe8\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x01\x00\x00\x00\x01\x00\x08\x03\x00\x00\x00k\xacXT\
+\x00\x00\x00\x8aPLTE\x00\xfcx\x00\xfc\x80\x08\xfc\
+\x80\x10\xfc\x80\x10\xfc\x88\x18\xfc\x88 \xfc\x88 \xfc\x90\
+(\xfc\x900\xfc\x900\xfc\x988\xfc\x98@\xfc\x98@\
+\xfc\xa0H\xfc\xa0P\xfc\xa0P\xfc\xa8X\xfc\xa8`\xfc\
+\xa8`\xfc\xb0h\xfc\xb0p\xfc\xb0p\xfc\xb8x\xfc\xb8\
+\x80\xfc\xb8\x80\xfc\xc0\x88\xfc\xc0\x90\xfc\xc0\x90\xfc\xc8\x98\
+\xfc\xc8\xa0\xfc\xd0\xa8\xfc\xd0\xb0\xfc\xd0\xb0\xfc\xd8\xb8\xfc\
+\xd8\xc0\xfc\xe0\xc8\xfc\xe0\xd0\xfc\xe0\xd0\xfc\xe8\xd8\xfc\xe8\
+\xe0\xfc\xe8\xe0\xfc\xf0\xe8\xfc\xf0\xf0\xfc\xf0\xf0\xfc\xf8\xf8\
+\xfc\xf8`;^\x10\x00\x00\x00\x09pHYs\x00\x00\
+\x00H\x00\x00\x00H\x00F\xc9k>\x00\x00\x06\x04I\
+DATx\xda\xed\xddaw\xa28\x14\x06`Ba\
+`\xa4\xba\xd0vtuQ*2Pb\xf8\xff\x7fo\
+;\x9d=g\xdb\x01\x14\x85$7\xe4\xcdw\xcf\xe9}\
+*\xe1\xe6\xe6&:\x8d\xe5\xc3\x01\x00\x00\x00\x00\x00\x00\
+4\x8e\x85\x03\x00\x00\x00\xc0W\x00\xab\xa6>\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00&\x1eU\x9e\xae\x93(\xf4]\x971\xd7\xf3\x830\
+J\xd6iV\x08\x1b\x00\xc4q\xf3\xe8\xf6u,\x06\xf1\
+\xf6\xc8\xe7\x0cP\xed\x1e\xd9\xd5\xbe\xcdp\x9d\x8bY\x02\
+\xf0\x7f\x16C{W\xd9\xea \xe6\x06P$\xec\xa6\xfe\
+]7\xc9\xe7\x04p\x8c\xee\xe8a\x0eR1\x13\x80\xe3\
+\xe2\xce6no\xcbg\x00PD#:\xd9\xdd\x9d\xe9\
+\x00u2\xb2\x99?8\x1a\x0d\x90\xba\xe3\xcf3,k\
+c\x01\xca\xc5$':\x1e2C\x016l\xaaC-\
+O\xc2@\x80\x89\xfe\xfd\xff\xcd\x04\x95q\x00S<\xfd\
+\x9f\xdf\x88\x85Y\x00<\x9e\xfah\x97{4\x0a\xe0\xdb\
+\xf4\x87\xdb\xd8\xc1 \x00.\xe3x\x1f\xcb\xcd\x01(\xa4\
+\x1cptO\xc6\x00\x1c\xe5\x1c\xf1\xf4*S\x00RI\
+\x87\x5c\xbf\x0bC\x006\xb2\x8e\xf9\xbe\x18\x02\x90\xc8\x02\
+p23\x00\x1e\xa5\x01x\xdc\x08\x80@\xdeY\xf7\x17\
+#\x00\x98<\x00V\x1a\x00\xc0\x1d\x89ci\x00\xc0\x80\
+<\x88\xb9w\x7fK\x0a\xfa\x00\x97\xf2 o\xb5\xcd\x8a\
+\x8f\x99L\xf0\x22\xdb\xae\xbc\x9b\x01\x12\xfa\x00\xbdy\xd0\
+b\xdb~\x82\xcbMx\xe3,\xc0\xc9\x03t\xe7A\xee\
+\xba/\x93=\xc57=\x0f\x7f\x93\x07\xe8\xca\x83\xbc\xdd\
+\xa54\xb6\x5c\xdeR\x1e\x22\x0f\xd0\xde\x09`?\xceW\
+>\x93\xdd0\x19T\xd4\x01ZyP8`\xe6\xae\x87\
+\x7f\x09v\xd4\x01\xfe|\xa2\xe3a\x8b\xb8\xe7\xa1\x00\x8f\
+\xc4\x01\xfe\xcc\x83\xd6C?\xb8\x1e\xfa\x1e \x0eP\xdc\
+\x19\xff\xf0U\xe4O\xda\x00\xaf_\xfe\xd8\xbf\xc6M\x9f\
+\x9d\xe3@\x1b\xe0K\x1e\xe4\xdf\x94\xb6\xd4\xc3v\x13\xd6\
+\xb4\x01\xbe<\xca\xfb\xdb>{\x18\x04\xb0\xa2\x0d\xf0\xf9\
+I\xf6\xc7\xe7\x10])5m\x80hL\xfd\xe24\x04\
+ \xa4\x0d\xf09\x0f\xba}3cH>\xe4\xd3\x06\xf8\
+\x94\x07\xb1\xdb\xeb\xd8C\xf6\x14\x5c\xd2\x00|d\xf9\xc6\
+W\x99\x09\xc9\x00(Ff\xed/\xa6\x7f\x03^G\xa6\
+l\xf9\x80\xe28i\x80t\xec\x1f\xca\x14V\x04d\x00\
+\xac\xc7\x96\xef\xae\xa7\x02\x11i\x80dl\xce~}Q\
+\x98\x90\x06\xf8\xf4\x0f\xbc\xaf\xc3oo\xf8Z \x18\x9b\
+\xb0\xe5\x86\xaf\x06\xd9\xd8\x7fT\xa9poD\x02\x00\x1f\
+\x93\x07\xff^\x13\x9b]\x11*\xc6\xe4\xc1\x1fC\xa8{\
+\x09\xc8\x00\xc8\xc6oc^\x03\xd8\x90\x06H\xc7W\xaf\
+\xaf\x01\x1ci\x03\x04\xee\xc8\xa9\xea|m% H\x03\
+|Lc?\xf3C\xba\xbd\xfb\xd3\xca\x0abD\x8f\xce\
+VW\x00\xf6s\x078\x19\xbf=>rd\x97\x01\xe2\
+f\xee\x00;e\xef\x00\xa2\x00/\x8a\x0a\xa2d\x01.\
+\xd7\x03\xb6\xf3\x07\xb8\xd8*\xe1\xf2\xd9\x03\xd43\xe8\x14\
+\x95\xf7\x12`o\xf3\x07\xb88\x07>7\xf3\x07\xb8t\
+\xde\x90U\xf3\x07\xe0l\x06\x07&\xc6\x8c\xbd\xbaW\x00\
+M\x80XM\x7f\x1cY\x00\xe1\xaah\x0b \x0cp\xa9\
+G\xe6d\x03\xc0JQ\x9f<U\x80\x0b\xef\x00\x9f\xdb\
+\x00\xb0U\xb4\x0c&\x0b\xd0\xdf\x1e\xf2\xd4\xd8\x00\xd0\xbf\
+\x0e\x08\xceV\x00\xf4\x96\x02\x98a7H\xdc9r\x85\
+)\x10I\x80H\xc5V\x00a\x80\xdezx(\xec\x00\
+\xe8\xfb\x02\xb8Uc\x05@\xdf+\x80I\xbcN\x8c\x14\
+@\xdf\x99\xf3\xb4\xb1\x03`'\xbd#\x8a6@\xdfa\
+\x91\xb8\xb1\x04\xa0g\x19\xb8\x14\x96\x00\xf4\xcc\x80\x0b\xc9\
+\xf7\x8a\x92\x01\xe0\xdd\xab\xa0P\xf6\xa5\xa2d\x00\x12=\
+\xf1\x93\x01\xc84\xc5O\x05\xa0\xf64\xc5O\x05\xa0\xf3\
+\xde\xa1\x85\x8a{\xd6i\x00t\xde8\x11\x9d\x1b[\x00\
+r\xa6\xfe\xfdO\x09\xa0s\x02X)\xba^\x9e\x00\x80\
+X(\xcf\x7fi\x01$\x8a\xb6@\xa8\x02\xecTl\x82\
+\x13\x06\xc8\x98\xe2\xf5/1\x80\xc2\x95z\x1a\x80<@\
+\xe5\xc9\xee\x03\xa4\x0d\xc0\x03\xb5\xf5/j\x00\xe7\xf6\x0b\
+\x90\xed\x1b{\x00D\xa4\xe8\xfal\xaa\x00\xed\x1a\x18\xcb\
+\x1a\x8b\x00bU\x17\xc8\x13\x05\xe8\x88?o,\x02\x88\
+\x95\x5c\x9dN\x17 V\xf6\x13\x124\x01\xda\xf3\x9fW\
+6\xf6\x00\x88\xf6UA~\xd5\xd8\x03\xd0\x11\x7f\xa0+\
+~\x1d\x00\xe7v\xfe\x13\xd6\x8d=\x00|\xa1\xa5\xfcM\
+\x06\x80\x87z\xca\xdfT\x00\xeav\xfc\x91h\xec\x01\xa8\
+\x03]\xe5o\x1a\x00\xd57m\xe5o\x12\x00\x95\xaf\xaf\
+\xfcM\x01\xa0\xf45\x96\xbf\x09\x00\x14\x9e\xce\xf2\xb7~\
+\x80\xe2Ak\xf9[;\xc0\xc9\xd5[\xfe\xd6\x0d\x90\xbb\
+\xca\xfa\xbfI\x02\x1c]\xdd\xe5o\xbd\x00\xafL{\xf9\
+[+@{\xffO}\xf9['\xc0\x81\x11(\x7fk\
+\x04\xd83\x0a\xe5o}\x00)\x8d\xf2\xb76\x80\x1d\x91\
+\xf2\xb7.\x80-\x95\xf2\xb7&\x80v\x03\xa0?E\xf9\
+[pC\x00~\x8c:\xfe$\xf8[Y\x9c\xf2\xec\xb0\
+O\xb7\x9b\xf5K\x12\xaf\x96Q\x18\xf8\x0f\xec\xfe\xdbJ\
+\x15\x03t]\x07S\xb7\xc3\xac\xab\xf70_\xdf\xc3\xdc\
+\xbd\x87\xf9\xfc+\xcc\xef\x81\xef\xb9j\xae\x93\x92\x09\xf0\
+\xd4y\x0bJ\xba\xdb\xbe\x87\x99\xbc\x87\xb9\xb8\x1af\xff\
+H\x0d\x00\x90\xf7\xcb\xb3S\xde\xac,\x0f \x96\x19?\
+\xfd9@\xac\xa4\xc6?\xddm\x22\x92\x00\xc4Rn\xfc\
+NI\x1b@D\x92\xe3\x9f\xee\x17\x07\xe5\xfc\xda\xdcB\
+v\xfc\x0e\xa7\x0c\xa0 ~\xe7L\x18\x80\x87\xf2\xe3w\
+\x04]\x80:P\x10\xfft\xd9\xfa\xe4\x00oJ\xe2\xa7\
+\x0bP\xf9\x8e\xd5\x00\xa5\xa2\xf8\xa9\x02\x94\x9ec5@\
+\xa1,~\xa2\x00+\x07\x00\x00\x00\x00\x00\x00\xa0b\x08\
+\xdb\x018\x00,\x07\xa8m\x07\xa8l\x07(l\x07\xa0\
+^\x167g\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`+\x80\
+m\x03\x00\x00\x00\xc0\xff\x00\xf6\x0e\x00\x00\x00\x00\x00\xb0\
+z\xfc\x0bC\xd4\xc6\xc6D\x07\xe4\xaa\x00\x00\x00\x00I\
+END\xaeB`\x82\
+\x00\x00\x09\x13\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x01\x00\x00\x00\x01\x00\x08\x03\x00\x00\x00k\xacXT\
+\x00\x00\x00\xedPLTEx\x00\xf8\x80\x00\xf8\x80\x04\
+\xf8\x80\x08\xf8\x80\x0c\xf8\x88\x10\xf8\x88\x14\xf8\x88\x18\xf8\
+\x88\x1c\xf8\x88 \xf8\x90 \xf8\x90$\xf8\x90(\xf8\x90\
+,\xf8\x900\xf8\x980\xf8\x984\xf8\x988\xf8\x98<\
+\xf8\x98@\xf8\xa0@\xf8\xa0D\xf8\xa0H\xf8\xa0L\xf8\
+\xa0P\xf8\xa8P\xf8\xa8T\xf8\xa8X\xf8\xa8\x5c\xf8\xa8\
+`\xf8\xb0`\xf8\xb0d\xf8\xb0h\xf8\xb0l\xf8\xb0p\
+\xf8\xb8p\xf8\xb8t\xf8\xb8x\xf8\xb8|\xf8\xb8\x80\xf8\
+\xc0\x80\xf8\xc0\x84\xf8\xc0\x88\xf8\xc0\x8c\xf8\xc0\x90\xf8\xc8\
+\x90\xf8\xc8\x94\xf8\xc8\x98\xf8\xc8\x9c\xf8\xc8\xa0\xf8\xd0\xa0\
+\xf8\xd0\xa4\xf8\xd0\xa8\xf8\xd0\xac\xf8\xd0\xb0\xf8\xd8\xb0\xf8\
+\xd8\xb4\xf8\xd8\xb8\xf8\xd8\xbc\xf8\xd8\xc0\xf8\xe0\xc0\xf8\xe0\
+\xc4\xf8\xe0\xc8\xf8\xe0\xcc\xf8\xe0\xd0\xf8\xe8\xd0\xf8\xe8\xd4\
+\xf8\xe8\xd8\xf8\xe8\xdc\xf8\xe8\xe0\xf8\xf0\xe0\xf8\xf0\xe4\xf8\
+\xf0\xe8\xf8\xf0\xec\xf8\xf0\xf0\xf8\xf8\xf0\xf8\xf8\xf4\xf8\xf8\
+\xf8\xf8\xf8\xfc\xf8\x09\xd19\xc7\x00\x00\x00\x09pHY\
+s\x00\x00\x00H\x00\x00\x00H\x00F\xc9k>\x00\x00\
+\x07\xccIDATx\xda\xed\xddiC\xdaL\x10\x00\
+\xe0\x1cP\x90\xa3(-R\x81\xaax\x03\xe5\xa8\x82\x22\
+E\xa8\x81\x0a\x91d\xfe\xff\xcf\xe9\x87\xbe\xafr\xe4\xce\
+&f6\xb3\xdf#\xd9G\xc81;3+@\xcc\x87\
+@\x00\x04@\x00\x04@\x00 \xc4p\x10\x00\x01\x10\xc0\
+&@\xac.}\x04@\x00\x04@\x00\x04@\x00\x04@\
+\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\
+\x04@\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\x04\
+@\x00\x04@\x00\x04@\x00\x04@\x00\x04@\x00\xac\x87\
+\xae\x0cZg\x95/\xf9tR\x96\x04)\xf1)\x9d-\
+V\xce[}E\x8f\x03\x80\xd2=\xfe,\x99\xa4,J\
+\x85Zg\xc63\xc0\xea\xae\x96\xb2M\xdcLUo_\
+\xb9\x04\xd0\xee\x0e%\x87\xc9\xab\xd2\xb7\xbe\xc6\x1b\xc0\xe4\
+Xv\x95\xc0\x9b8\x9fs\x04\xa0\xff,\xb8\xcfa\x16\
++\x13N\x00^\x1b\x9f<\xe6qW\xe7\x1c\x00\xa8W\
+\x09\xef\x99\xec\xd2\xf9\x0a9\xc0\xab\x9f\xe9\x0b\x82 d\
+\xc6\x98\x01\xb4V\xd2w9\x83x\xa6\xa1\x05\xb8K3\
+\xa9\xe88X\xe2\x04P\xf7Y\xd5\xb4\xa4\x9fQ\x02<\
+\xb0\xab\xea\x91\xc7\x18\x01\xae\x18\xd65%\x9e\x10\x02\x1c\
+\xb2\xac\xecJL\xf1\x01$Y\x02\x08\xa9%6\x809\
+\xe3\xea\xbe\xa2\x8e\x0c\xe0\x8eu}\xe3\x052\x80s\xd6\
+\x00\xe2\x04\x17\xc0\x01\xf3\x12\xd7}T\x00\xba\xcc\x1c@\
+\xe8`\x02\xf8\x1d@\x95sJG\x04\xd0\x0d\xa2\xce\xfb\
+\x16\x11\xc0I\x10\x00yD\x00\xf9@J\xfd'h\x00\
+4\xd1\xf4n\x96\xab\x5cw\x87OSE\x99\x8e\x07\x9d\
+\xcb\xf2\x9e\x1b\x80K4\x00c\x93\x17\xdb\xb3\xe1N\x8c\
+k\xd9?q\x1c3\xcc\xa1\x01h\x19\x86yGf\xf7\
+\xcca\xd9\xa1\xc0\x1c\x0b@\xd5 \xc4k\xb9\xe8\xa5T\
+\x1c\x01\x0c\xb0\x00dv\xbe\xbc\xb61\x8dQ\xd6\x01\xc0\
+\x15\x12\x80\xe5\xf6\x89\x9f8\x88l\xaej\xf6\x00e$\
+\x00\xc3\xad_\x7f\xcf\xd9a\x0d[\x80\xcfH\x00n6\
+\x977\x86N\x8fk\xdb.\x13 \x01\xd8\x08\x87\x89\xf7\
+\xce\x0f\xbc\xb0\x01H\x22\x01\xd8\xb8\xb1\xf7\xdc\x1c\xf9\xc5\
+&(\x80\x03\xe0\xcf\xc6\xf5\xcf]$\xcdz)M\xc6\
+\x01\xd0_\x7f\x81\xd1\xfc\x5c>\x90\xfe\x04\xd6~\xc9\xa2\
+\xdbx\xf6\xca2\x9a\x9c\xc6\x01P\xf4\x13\xca\xb4\x0c&\
+\x16q\x00\xbc\x87\xc3\x92\xee\xf3\x9d\x9e-S&P\x00\
+\xacM\xe1\x07\x8b\xc7\xe8\xb5q\x83\x02\xa0\xe7/\x8ag\
+\x15L\x1a\xa2\x008};\xdf\x06\xebp\xe2\x12\x05\xc0\
+[J\x98\xacz9\xfc\x97\xf9\xfc\x0b(\x02\x22\xda[\
+>\xe4wO\xc7\xbf\x84\xf76\x1c\x0c\xc0\xd3\xdb\xf9z\
+\xcbkP\xcd\x01~\xa3\x00h\xfb|u\xd3C\x5c\x1c\
+\x0b\x04\xa0\xeas=W3\x05\xe8\xe1\x00\xc8\xfa\x8c\xe2\
+/M\x9f\x83\x91,\x8d\xfd\xec\xfd\x1b?=\x1e?\xe3\
+bq\x94]<\xed=\xae\xaa\xc7\x04\xc0,.\xf6\x0b\
+b\x02pl<\xff\x13\x88\x0b\x80\xf1\xcbPN\x8b\x0b\
+\x80qz\x99\x1cL\xbal\x14\x01\x9a\x86\xc1\xd0\x07\x88\
+\x0d@\xce\x08\xe0\x07\xc4\x06`d4\xff\x06\xc4\x07\xa0\
+\x18B\x1c(\xca\x00\x06I\xf6b\x07\xe2\x03\xf0\xba[\
+d\x22\x0f F\x00\xbb+\xe4{S\x88\x11\xc0nf\
+MI\x85\x18\x01\x0c\xb6s\xcb\xa4V\xc0\x9f\x18-\x80\
+\xbb\xed\xf9\xe7~C\x9c\x00\x1a[\xf3\x97\xae\x83o\xa8\
+\x10!\x80\xe5v\xa6\x5cQ\x09\xe1S\xa3\x03\xd0\xdbZ\
+\x14N\xdf\x85\xf2\xb1Q\x01\x18l\xa5\x16\xcbW\xdc5\
+P\xb0\xfa\xf2\xb7\xb6\xde\x7f\xa4\xfa2\xac\xcf\xfex\x00\
+\xa5U\x92vj\xe6\x07S\x95S\x00u\xf9\xdfX\xcc\
+\x95\xa7A\xab^4\xcd\x08J\xee\xd7\x1a\xc3\x05o\x00\
+\xaa\xe8\xb6l\xba\xda}\xe1\x09`\xe0\xa5H\xa2\xd0\x5c\
+p\x03\xe0\xb1\x8eF\xac<q\x02\xb0'x\x1d\xa5\x09\
+\x0f\x003?\xe5B\xd5\x17\xfc\x00\x1d\x7f\x15\xf4=\xf4\
+\x00e\xc1\xdf8Z\xe1\x06\xd0}v\xd4\x11\x84\xac\x82\
+\x1a`\xec\xbfn0\xf9\x84\x19\x80ES\x11\xf9\x111\
+\x00\x93\xb6:\xf2\x08-\x80\xeb\xe7`\x93\x9b\x81\x82\x15\
+\xa0\xcf\xa8~8\xa3\x22\x05`VO^F\x0a\x90f\
+\x05 tQ\x02\xcc\x98\xcd_H,0\x02l\xa7>\
+\x89\x92w\x81\x1aF\x80\x7f\xa9O\x99\xf2E\xe7a2\
+W5\x00\x00m9\x1b\xf5\xae\xca)\xf7\x02S\x84\x00\
+\xfae\xf1\xfa\xd1\xb8\x80fq[q\xf9\x94\x5c\xe1*\
+*\x0c\x00\xa0\xdf\x1f\xbayL\x10\xe7\xbc\x01\x00\xc0\xfc\
+\xd8\x05\xc1%\x87\x00\x00\xb3#\xe7-\x85\xb8\x04\x00\x18\
+8\xee&2\xe6\x13\x00\x96\xa5p{\xcbE/IJ\
+\xaf;\x03\xf8\xcc+\x80I\xa6\xe8\xeeP\xb9\x05\xb0\xa9\
+\x1f\xff\x7f\x8c\xf8\x05X+\xbc\xb4\x18-\x8e\x01t'\
+\xcd\x18O9\x06\x80\x85\x83'\xe3\x12\xcf\x00N\x96P\
+\xf2\x5c\x038\x08\xa0\xa6\xf8\x06\x18\xd9GE\xf8\x06\xb0\
+\xff\x0aH\x9c\x03\xd8\xe6R\x88\x9c\x03\xe8v\xad\xc9\x93\
+\x9c\x03\xd8F\xd13\xbc\x03<\xda\xa5\x0e\xf1\x0e\xb0\xb2\
+\x89\x0f}\xe5\x1d\xc0\xee>p\xc4=@=\xc6\xef\x02\
+\x00`\xdb\x5c\xb1\xc3=\xc0\xd0\x1a\xe0\x89{\x00\xc5\xfa\
+9H\xe3\x1e`\x11F\x8f\xe9(\x03\xbc\x0a!\xb4\x95\
+\x8b2\x80n\x09\xd0\xe6\x1f@\xb3\x04x\x89,\x80\xfa\
+\xc0\xa8\xd6}i5\x7fV=\xa5\x18\x03\xa8\xf7\xe7\x05\
+\x91U\xd3?\xcb\x9d\x9a\x1aQ\x04\xb8\xcc\x8b,\xff=\
+\x13+\x80Y\x14\x01\xde[\x1f0I\xe7\xec\x87\xb1\xd1\
+\x02S\x80\xb3\xb7\xf3;`qn\x8d\xe0\xef\x01\x8c\x01\
+\xd6v\x17c\xd1\xf3\xe5\xbbE4H\x8b$\x80\xc26\
+h\x9f\x0d\xa3\xb1$\xdb\xbb\xc0\xda\xeeZ\xfe\xb7D\xb2\
+\xb8\x0bJQ\xcd\x13\x5c[\xd2K\xfb\xfe\x92Z\x84\x85\
+\x19v\x15c\x0bp\xca\xf2[j\xbe\xdf\x864\x8f*\
+\xc0zC`\xf9\x8f\xcf\x07\xe1D(\xade\xd9\x02L\
+\x18\xe6t\x9b\xff\x02\xd2Zd\x016\xf7\xd7\xf2\xd7\x01\
+\xe1K8[\x0d1~\x17\xd8\xb8s%\xfd4\x01\x98\
+\x06\x9c\x17\x10\x10\xc0\xe6nQ\x87\xc0\xea/\xad/\x0a\
+\xcf\xa2\x0cp\xbdy\xb2M\xcf\x7f\xc8\xbc\xc2\xae\x0fQ\
+\x06\xd8\xbar\x89\x9e3\xb9\x0a\xc1\xae\x06\x04\x060c\
+T\xe1e\x9a*X\xd0\xa2\x0d\xa0oW\x81\xecy\x8a\
+\x5cM\xcc\x8aI\x12\xacw\xdbc\x1e\x12\xdb\xd9h3\
+\xeb\xe1\xb1]5\xdbcCb\xbd\xbf\x04{\x80\xddm\
+\x06\xb3\xae\x9f\x085\xb3,A1\x80\xdeJ\xac\x01\x0c\
+\x82\x18)\x97\xfdp\xf5r\x88\xad\xc5\x99\x03\x18=\xc0\
+&\xee\xdd\xfc\x85U)\xe88h\xa0\x00\xc6\xc5\x81u\
+\xe7\xd7\xee\xc5~\xc0\x05\x02\x01\x03\x80\xf1\xf5;\xeb\xb4\
+/\xfa\xd0\xb4b\xa4\x098\x00\xcc\xf6[\xae:\xb9\x16\
+\xae\xceLC\x00A\xf5\x96c\x0eP5\x9dB\xdd\xf6\
+\x91\xe0\xd6\xb4\x8221\x02,\x00\x16\xb1l\xa9j\x95\
+\xd3\xa0\xf7r\xe6\x11\x80g@\x03`\x9d\xe0\x99\xbd1\
+y6\x9e^X\xd4\xcf\x1e\x06\xd8\x5c\x8f9\x80m\x8d\
+x\xe6\xe4v\xeb\x85v\xd1\xaf[\xed8,\xfd\x00@\
+\x04\x00Nj\xc2\xe5B\xe5\xac\xd1\xe9v\xdb\x8d\xcb\xea\
+\x81M\xa5`6\xd0\xbe\xca\x01\x00\xe4\x05\xa6\xe3x\x05\
+\xc8\x00\xaa,\xa7\x9f\x1f\x03`\x03h\xb0\x9b~\xa2\x8d\
+\xb1\xaf\xf0\x03\xb3\xf9\xd7\xc2\xe8\xac\xca\x1e`\xceh\xfa\
+GS\x00\x94\x00\xeb+\xa4\x9e\x87X}\x06\xc0\x0a\xe0\
+\xbfa\x96X\x9b\x01\xe0\x05\xf0\xdb/)\xdb\x5c\x00`\
+\x06\x80\xc7o\xde\x9b\x86\xc9\xdf\xc7\x10\xea\x08&Qr\
+q\x93\xf34\xfbro\x05\xc0\x03\x00\x00L/2.\
+[\xa4\xd5\x1f5\x08\x7f\x04\x99*\xab\xb4J\xce\xee\x08\
+b\xae\xd6V\xe0cF\xc0\xb9\xc2\xfa\xb4]\xcd[)\
+\xc8\xd9Js\xb4\x82\x8f\x1b\xa1$K\xcf\x87\xdd\xab\xe3\
+\xc3b>\x9dL\xc8\x92 %R\x99\xfc\xfe\xd7\xf2i\
+\xb3?Y\xc0G\x8f(g\x8b\x13\x00\x01\x10\x00\x01\x10\
+\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\
+\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\x10\x00\x01\
+\x10\x00\x01\x10\x00\x01\x10@\x80\x00q\x1b\x04@\x00\x04\
+\xf0\x0e\x10\xdfA\x00\x04@\x00\x04\x10\xeb\xf1\x17\xe9\x89\
+Gh\xda\x1b|\x00\x00\x00\x00\x00IEND\xaeB\
+`\x82\
"
qt_resource_name = b"\
@@ -721,17 +721,17 @@ qt_resource_name = b"\
\x00s\
\x00i\x00d\x00e\x004\x00.\x00p\x00n\x00g\
\x00\x09\
-\x0a\x86\xa4\xa7\
+\x0a\x89\xa4\xa7\
\x00s\
-\x00i\x00d\x00e\x003\x00.\x00p\x00n\x00g\
+\x00i\x00d\x00e\x006\x00.\x00p\x00n\x00g\
\x00\x09\
\x0a\x85\xa4\xa7\
\x00s\
\x00i\x00d\x00e\x002\x00.\x00p\x00n\x00g\
\x00\x09\
-\x0a\x89\xa4\xa7\
+\x0a\x86\xa4\xa7\
\x00s\
-\x00i\x00d\x00e\x006\x00.\x00p\x00n\x00g\
+\x00i\x00d\x00e\x003\x00.\x00p\x00n\x00g\
"
qt_resource_struct = b"\
@@ -740,17 +740,17 @@ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01e\xaf\x16\xd2\x95\
-\x00\x00\x00r\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x1c\
-\x00\x00\x01e\xaf\x16\xd2\x95\
-\x00\x00\x00Z\x00\x00\x00\x00\x00\x01\x00\x00\x11\x05\
-\x00\x00\x01e\xaf\x16\xd2\x95\
+\x00\x00\x01z\xe7\xee&\xf9\
+\x00\x00\x00r\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x97\
+\x00\x00\x01z\xe7\xee&\xf9\
+\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00!\x83\
+\x00\x00\x01z\xe7\xee&\xf9\
\x00\x00\x00B\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xc3\
-\x00\x00\x01e\xaf\x16\xd2\x95\
+\x00\x00\x01z\xe7\xee&\xf9\
\x00\x00\x00*\x00\x00\x00\x00\x00\x01\x00\x00\x04\x18\
-\x00\x00\x01e\xaf\x16\xd2\x95\
-\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00!\x08\
-\x00\x00\x01e\xaf\x16\xd2\x95\
+\x00\x00\x01z\xe7\xee&\xf9\
+\x00\x00\x00Z\x00\x00\x00\x00\x00\x01\x00\x00\x11\x05\
+\x00\x00\x01z\xe7\xee&\xf9\
"
def qInitResources():
diff --git a/examples/opengl/threadedqopenglwidget/doc/threadedqopenglwidget.png b/examples/opengl/threadedqopenglwidget/doc/threadedqopenglwidget.png
new file mode 100644
index 000000000..263d7a3d1
--- /dev/null
+++ b/examples/opengl/threadedqopenglwidget/doc/threadedqopenglwidget.png
Binary files differ
diff --git a/examples/opengl/threadedqopenglwidget/doc/threadedqopenglwidget.rst b/examples/opengl/threadedqopenglwidget/doc/threadedqopenglwidget.rst
new file mode 100644
index 000000000..79e13cf60
--- /dev/null
+++ b/examples/opengl/threadedqopenglwidget/doc/threadedqopenglwidget.rst
@@ -0,0 +1,9 @@
+Threaded QOpenGLWidget Example
+==============================
+
+The threaded QOpenGLWidget example demonstrates OpenGL rendering
+in separate threads.
+
+.. image:: threadedqopenglwidget.png
+ :width: 400
+ :alt: Threaded QOpenGLWidget Example Screenshot
diff --git a/examples/opengl/threadedqopenglwidget/glwidget.py b/examples/opengl/threadedqopenglwidget/glwidget.py
new file mode 100644
index 000000000..edb88e77c
--- /dev/null
+++ b/examples/opengl/threadedqopenglwidget/glwidget.py
@@ -0,0 +1,79 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+from PySide6.QtOpenGLWidgets import QOpenGLWidget
+from PySide6.QtCore import QMutexLocker, QSize, QThread, Slot, Signal
+
+from renderer import Renderer
+
+
+class GLWidget(QOpenGLWidget):
+
+ render_requested = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.aboutToCompose.connect(self.on_about_to_compose)
+ self.frameSwapped.connect(self.on_frame_swapped)
+ self.aboutToResize.connect(self.on_about_to_resize)
+ self.resized.connect(self.on_resized)
+
+ self._thread = QThread()
+ self._renderer = Renderer(self)
+ self._renderer.moveToThread(self._thread)
+ self._thread.finished.connect(self._renderer.deleteLater)
+
+ self.render_requested.connect(self._renderer.render)
+ self._renderer.context_wanted.connect(self.grab_context)
+
+ self._thread.start()
+
+ def stop_rendering(self):
+ self._renderer.prepare_exit()
+ self._thread.quit()
+ self._thread.wait()
+ self._thread = None
+ self._renderer = None
+
+ def closeEvent(self, event):
+ self.stop_rendering()
+ event.accept()
+
+ def paintEvent(self, event):
+ pass
+
+ def sizeHint(self):
+ return QSize(200, 200)
+
+ @Slot()
+ def on_about_to_compose(self):
+ # We are on the gui thread here. Composition is about to
+ # begin. Wait until the render thread finishes.
+ self._renderer.lock_renderer()
+
+ @Slot()
+ def on_frame_swapped(self):
+ self._renderer.unlock_renderer()
+ # Assuming a blocking swap, our animation is driven purely by the
+ # vsync in self example.
+ self.render_requested.emit()
+
+ @Slot()
+ def on_about_to_resize(self):
+ self._renderer.lock_renderer()
+
+ @Slot()
+ def on_resized(self):
+ self._renderer.unlock_renderer()
+
+ @Slot()
+ def grab_context(self):
+ if not self._renderer:
+ return
+ self._renderer.lock_renderer()
+ with QMutexLocker(self._renderer.grab_mutex()):
+ self.context().moveToThread(self._thread)
+ self._renderer.grab_condition().wakeAll()
+ self._renderer.unlock_renderer()
diff --git a/examples/opengl/threadedqopenglwidget/main.py b/examples/opengl/threadedqopenglwidget/main.py
new file mode 100644
index 000000000..2a379da27
--- /dev/null
+++ b/examples/opengl/threadedqopenglwidget/main.py
@@ -0,0 +1,93 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Threaded QOpenGLWidget Example from Qt v6.x"""
+
+import sys
+
+from argparse import ArgumentParser, RawTextHelpFormatter
+
+from PySide6.QtWidgets import QApplication, QMessageBox
+from PySide6.QtGui import QShortcut, QSurfaceFormat
+from PySide6.QtCore import QCoreApplication, QPoint, qVersion, Qt
+
+try:
+ from OpenGL import GL
+except ImportError:
+ app = QApplication(sys.argv)
+ message = "PyOpenGL must be installed to run this example."
+ message_box = QMessageBox(QMessageBox.Critical,
+ "Threaded QOpenGLWidget Example",
+ message, QMessageBox.Close)
+ detail = "Run:\npip install PyOpenGL PyOpenGL_accelerate"
+ message_box.setDetailedText(detail)
+ message_box.exec()
+ sys.exit(1)
+
+from glwidget import GLWidget
+from mainwindow import MainWindow
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ desc = "Qt Threaded QOpenGLWidget Example"
+ parser = ArgumentParser(description=desc,
+ formatter_class=RawTextHelpFormatter)
+ parser.add_argument("--single", "-s", action="store_true",
+ help="Single thread")
+ options = parser.parse_args()
+
+ QCoreApplication.setApplicationName(desc)
+ QCoreApplication.setOrganizationName("QtProject")
+ QCoreApplication.setApplicationVersion(qVersion())
+
+ format = QSurfaceFormat()
+ format.setDepthBufferSize(16)
+ QSurfaceFormat.setDefaultFormat(format)
+
+ # Two top-level windows with two QOpenGLWidget children in each. The
+ # rendering for the four QOpenGLWidgets happens on four separate threads.
+
+ top_gl_widget = GLWidget()
+ pos = top_gl_widget.screen().availableGeometry().topLeft()
+ pos += QPoint(200, 200)
+ top_gl_widget.setWindowTitle(desc + " top level")
+ top_gl_widget.move(pos)
+ top_gl_widget.show()
+
+ functions = top_gl_widget.context().functions()
+ vendor = functions.glGetString(GL.GL_VENDOR)
+ renderer = functions.glGetString(GL.GL_RENDERER)
+ gl_info = f"{vendor}/f{renderer}"
+
+ supports_threading = ("nouveau" not in gl_info and "ANGLE" not in gl_info
+ and "llvmpipe" not in gl_info)
+ tool_tip = gl_info
+ if not supports_threading:
+ tool_tip += "\ndoes not support threaded OpenGL."
+ top_gl_widget.setToolTip(tool_tip)
+ print(tool_tip)
+
+ close_shortcut = QShortcut(Qt.CTRL | Qt.Key_Q, top_gl_widget)
+ close_shortcut.activated.connect(QApplication.closeAllWindows)
+ close_shortcut.setContext(Qt.ApplicationShortcut)
+
+ mw1 = None
+ mw2 = None
+
+ if not options.single and supports_threading:
+ pos += QPoint(100, 100)
+ mw1 = MainWindow()
+ mw1.setToolTip(tool_tip)
+ mw1.move(pos)
+ mw1.setWindowTitle(f"{desc} #1")
+ mw1.show()
+ pos += QPoint(100, 100)
+ mw2 = MainWindow()
+ mw2.setToolTip(tool_tip)
+ mw2.move(pos)
+ mw2.setWindowTitle(f"{desc} #2")
+ mw2.show()
+
+ sys.exit(app.exec())
diff --git a/examples/opengl/threadedqopenglwidget/mainwindow.py b/examples/opengl/threadedqopenglwidget/mainwindow.py
new file mode 100644
index 000000000..4999b799d
--- /dev/null
+++ b/examples/opengl/threadedqopenglwidget/mainwindow.py
@@ -0,0 +1,24 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWidgets import QWidget, QHBoxLayout
+
+from glwidget import GLWidget
+
+
+class MainWindow(QWidget):
+ def __init__(self):
+ super().__init__()
+
+ layout = QHBoxLayout(self)
+ layout.setContentsMargins(0, 0, 0, 0)
+ layout.setSpacing(0)
+ self._glwidget1 = GLWidget(self)
+ layout.addWidget(self._glwidget1)
+ self._glwidget2 = GLWidget(self)
+ layout.addWidget(self._glwidget2)
+
+ def closeEvent(self, event):
+ self._glwidget1.stop_rendering()
+ self._glwidget2.stop_rendering()
+ event.accept()
diff --git a/examples/opengl/threadedqopenglwidget/renderer.py b/examples/opengl/threadedqopenglwidget/renderer.py
new file mode 100644
index 000000000..81ec63cbb
--- /dev/null
+++ b/examples/opengl/threadedqopenglwidget/renderer.py
@@ -0,0 +1,326 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import ctypes
+import math
+import numpy
+
+from OpenGL import GL
+
+from PySide6.QtOpenGL import QOpenGLShader, QOpenGLShaderProgram, QOpenGLBuffer
+from PySide6.QtGui import (QGuiApplication, QOpenGLFunctions, QVector3D,
+ QMatrix4x4)
+from PySide6.QtCore import (QElapsedTimer, QObject, QMetaObject, QMutex,
+ QMutexLocker, QThread, QWaitCondition, Signal, Slot)
+
+# Some OpenGL implementations have serious issues with compiling and linking
+# shaders on multiple threads concurrently. Avoid self.
+init_mutex = QMutex()
+
+
+VERTEX_SHADER = """attribute highp vec4 vertex;
+attribute mediump vec3 normal;
+uniform mediump mat4 matrix;
+varying mediump vec4 color;
+void main(void)
+{
+ vec3 toLight = normalize(vec3(0.0, 0.3, 1.0));
+ float angle = max(dot(normal, toLight), 0.0);
+ vec3 col = vec3(0.40, 1.0, 0.0);
+ color = vec4(col * 0.2 + col * 0.8 * angle, 1.0);
+ color = clamp(color, 0.0, 1.0);
+ gl_Position = matrix * vertex;
+}
+"""
+
+
+FRAGMENT_SHADER = """varying mediump vec4 color;
+void main(void)
+{
+ gl_FragColor = color;
+}
+"""
+
+
+class Renderer(QObject, QOpenGLFunctions):
+
+ context_wanted = Signal()
+
+ def __init__(self, widget):
+ QObject.__init__(self)
+ QOpenGLFunctions.__init__(self)
+ self._glwidget = widget
+ self._inited = False
+ self._fAngle = 0
+ self._fScale = 1
+
+ self._vertices = []
+ self._normals = []
+ self._program = QOpenGLShaderProgram()
+ self._vbo = QOpenGLBuffer()
+ self._vertex_attr = 0
+ self._normal_attr = 0
+ self._matrix_uniform = 0
+ self._renderMutex = QMutex()
+ self._elapsed = QElapsedTimer()
+ self._grabMutex = QMutex()
+ self._grab_condition = QWaitCondition()
+ self._exiting = False
+
+ def lock_renderer(self):
+ self._renderMutex.lock()
+
+ def unlock_renderer(self):
+ self._renderMutex.unlock()
+
+ def grab_mutex(self):
+ return self._grabMutex
+
+ def grab_condition(self):
+ return self._grab_condition
+
+ def prepare_exit(self):
+ self._exiting = True
+ self._grab_condition.wakeAll()
+
+ def paint_Qt_logo(self):
+ self._vbo.bind()
+ self._program.setAttributeBuffer(self._vertex_attr, GL.GL_FLOAT, 0, 3)
+ size = len(self._vertices) * 3 * ctypes.sizeof(ctypes.c_float)
+ self._program.setAttributeBuffer(self._normal_attr, GL.GL_FLOAT, size, 3)
+ self._vbo.release()
+
+ self._program.enableAttributeArray(self._vertex_attr)
+ self._program.enableAttributeArray(self._normal_attr)
+
+ self.glDrawArrays(GL.GL_TRIANGLES, 0, len(self._vertices))
+
+ self._program.disableAttributeArray(self._normal_attr)
+ self._program.disableAttributeArray(self._vertex_attr)
+
+ @Slot()
+ def render(self):
+ global init_mutex
+
+ if self._exiting:
+ return
+
+ ctx = self._glwidget.context()
+ if not ctx: # QOpenGLWidget not yet initialized
+ return
+
+ # Grab the context.
+ self._grabMutex.lock()
+ self.context_wanted.emit()
+ self._grab_condition.wait(self._grabMutex)
+
+ with QMutexLocker(self._renderMutex):
+ self._grabMutex.unlock()
+
+ if self._exiting:
+ return
+
+ assert ctx.thread() == QThread.currentThread()
+
+ # Make the context (and an offscreen surface) current for self thread.
+ # The QOpenGLWidget's fbo is bound in the context.
+ self._glwidget.makeCurrent()
+
+ if not self._inited:
+ self._inited = True
+ self.initializeOpenGLFunctions()
+ with QMutexLocker(init_mutex):
+ self._init_gl()
+ self._elapsed.start()
+
+ self._render_next()
+
+ # Make no context current on self thread and move the
+ # QOpenGLWidget'scontext back to the gui thread.
+ self._glwidget.doneCurrent()
+ ctx.moveToThread(QGuiApplication.instance().thread())
+
+ # Schedule composition. Note that self will use QueuedConnection,
+ # meaning that update() will be invoked on the gui thread.
+ QMetaObject.invokeMethod(self._glwidget, "update")
+
+ def _init_gl(self):
+ vshader = QOpenGLShader(QOpenGLShader.Vertex, self)
+ vshader.compileSourceCode(VERTEX_SHADER)
+
+ fshader = QOpenGLShader(QOpenGLShader.Fragment, self)
+ fshader.compileSourceCode(FRAGMENT_SHADER)
+
+ self._program.addShader(vshader)
+ self._program.addShader(fshader)
+ self._program.link()
+
+ self._vertex_attr = self._program.attributeLocation("vertex")
+ self._normal_attr = self._program.attributeLocation("normal")
+ self._matrix_uniform = self._program.uniformLocation("matrix")
+
+ self._fAngle = 0
+ self._fScale = 1
+ self.create_geometry()
+
+ self._vbo.create()
+ self._vbo.bind()
+
+ data_count = len(self._vertices) * 2 * 3
+ data = numpy.empty(data_count, dtype=ctypes.c_float)
+ i = 0
+ for v in self._vertices:
+ data[i] = v.x()
+ i += 1
+ data[i] = v.y()
+ i += 1
+ data[i] = v.z()
+ i += 1
+ for n in self._normals:
+ data[i] = n.x()
+ i += 1
+ data[i] = n.y()
+ i += 1
+ data[i] = n.z()
+ i += 1
+
+ vertices_size = data_count * ctypes.sizeof(ctypes.c_float)
+ self._vbo.allocate(data.tobytes(), vertices_size)
+
+ def _render_next(self):
+ self.glClearColor(0.1, 0.2, 0.2, 1.0)
+ self.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT)
+
+ self.glFrontFace(GL.GL_CW)
+ self.glCullFace(GL.GL_FRONT)
+ self.glEnable(GL.GL_CULL_FACE)
+ self.glEnable(GL.GL_DEPTH_TEST)
+
+ modelview = QMatrix4x4()
+ modelview.rotate(self._fAngle, 0.0, 1.0, 0.0)
+ modelview.rotate(self._fAngle, 1.0, 0.0, 0.0)
+ modelview.rotate(self._fAngle, 0.0, 0.0, 1.0)
+ modelview.scale(self._fScale)
+ modelview.translate(0.0, -0.2, 0.0)
+
+ self._program.bind()
+ self._program.setUniformValue(self._matrix_uniform, modelview)
+ self.paint_Qt_logo()
+ self._program.release()
+
+ self.glDisable(GL.GL_DEPTH_TEST)
+ self.glDisable(GL.GL_CULL_FACE)
+
+ self._fAngle += 1.0
+
+ def create_geometry(self):
+ self._vertices = []
+ self._normals = []
+
+ x1 = +0.06
+ y1 = -0.14
+ x2 = +0.14
+ y2 = -0.06
+ x3 = +0.08
+ y3 = +0.00
+ x4 = +0.30
+ y4 = +0.22
+
+ self.quad(x1, y1, x2, y2, y2, x2, y1, x1)
+ self.quad(x3, y3, x4, y4, y4, x4, y3, x3)
+
+ self.extrude(x1, y1, x2, y2)
+ self.extrude(x2, y2, y2, x2)
+ self.extrude(y2, x2, y1, x1)
+ self.extrude(y1, x1, x1, y1)
+ self.extrude(x3, y3, x4, y4)
+ self.extrude(x4, y4, y4, x4)
+ self.extrude(y4, x4, y3, x3)
+
+ NUM_SECTORS = 100
+ SECTOR_ANGLE = 2 * math.pi / NUM_SECTORS
+
+ for i in range(NUM_SECTORS):
+ angle = i * SECTOR_ANGLE
+ sin_angle = math.sin(angle)
+ cos_angle = math.cos(angle)
+ x5 = 0.30 * sin_angle
+ y5 = 0.30 * cos_angle
+ x6 = 0.20 * sin_angle
+ y6 = 0.20 * cos_angle
+
+ angle += SECTOR_ANGLE
+ sin_angle = math.sin(angle)
+ cos_angle = math.cos(angle)
+ x7 = 0.20 * sin_angle
+ y7 = 0.20 * cos_angle
+ x8 = 0.30 * sin_angle
+ y8 = 0.30 * cos_angle
+
+ self.quad(x5, y5, x6, y6, x7, y7, x8, y8)
+
+ self.extrude(x6, y6, x7, y7)
+ self.extrude(x8, y8, x5, y5)
+
+ for i in range(len(self._vertices)):
+ self._vertices[i] *= 2.0
+
+ def quad(self, x1, y1, x2, y2, x3, y3, x4, y4):
+
+ self._vertices.append(QVector3D(x1, y1, -0.05))
+ self._vertices.append(QVector3D(x2, y2, -0.05))
+ self._vertices.append(QVector3D(x4, y4, -0.05))
+
+ self._vertices.append(QVector3D(x3, y3, -0.05))
+ self._vertices.append(QVector3D(x4, y4, -0.05))
+ self._vertices.append(QVector3D(x2, y2, -0.05))
+
+ n = QVector3D.normal(QVector3D(x2 - x1, y2 - y1, 0.0),
+ QVector3D(x4 - x1, y4 - y1, 0.0))
+
+ self._normals.append(n)
+ self._normals.append(n)
+ self._normals.append(n)
+
+ self._normals.append(n)
+ self._normals.append(n)
+ self._normals.append(n)
+
+ self._vertices.append(QVector3D(x4, y4, 0.05))
+ self._vertices.append(QVector3D(x2, y2, 0.05))
+ self._vertices.append(QVector3D(x1, y1, 0.05))
+
+ self._vertices.append(QVector3D(x2, y2, 0.05))
+ self._vertices.append(QVector3D(x4, y4, 0.05))
+ self._vertices.append(QVector3D(x3, y3, 0.05))
+
+ n = QVector3D.normal(QVector3D(x2 - x4, y2 - y4, 0.0),
+ QVector3D(x1 - x4, y1 - y4, 0.0))
+
+ self._normals.append(n)
+ self._normals.append(n)
+ self._normals.append(n)
+
+ self._normals.append(n)
+ self._normals.append(n)
+ self._normals.append(n)
+
+ def extrude(self, x1, y1, x2, y2):
+ self._vertices.append(QVector3D(x1, y1, +0.05))
+ self._vertices.append(QVector3D(x2, y2, +0.05))
+ self._vertices.append(QVector3D(x1, y1, -0.05))
+
+ self._vertices.append(QVector3D(x2, y2, -0.05))
+ self._vertices.append(QVector3D(x1, y1, -0.05))
+ self._vertices.append(QVector3D(x2, y2, +0.05))
+
+ n = QVector3D.normal(QVector3D(x2 - x1, y2 - y1, 0.0),
+ QVector3D(0.0, 0.0, -0.1))
+
+ self._normals.append(n)
+ self._normals.append(n)
+ self._normals.append(n)
+
+ self._normals.append(n)
+ self._normals.append(n)
+ self._normals.append(n)
diff --git a/examples/opengl/threadedqopenglwidget/threadedqopenglwidget.pyproject b/examples/opengl/threadedqopenglwidget/threadedqopenglwidget.pyproject
new file mode 100644
index 000000000..3faba3113
--- /dev/null
+++ b/examples/opengl/threadedqopenglwidget/threadedqopenglwidget.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "glwidget.py", "mainwindow.py", "renderer.py"]
+}
diff --git a/examples/pdf/quickpdfviewer/doc/quickpdfviewer.rst b/examples/pdf/quickpdfviewer/doc/quickpdfviewer.rst
new file mode 100644
index 000000000..084f71828
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/doc/quickpdfviewer.rst
@@ -0,0 +1,4 @@
+PDF Viewer Example
+==================
+
+A Qt Quick PDF viewer that allows scrolling through the pages.
diff --git a/examples/pdf/quickpdfviewer/main.py b/examples/pdf/quickpdfviewer/main.py
new file mode 100644
index 000000000..ee7b882c2
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/main.py
@@ -0,0 +1,49 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+import sys
+from argparse import ArgumentParser, RawTextHelpFormatter
+from pathlib import Path
+
+from PySide6.QtQml import QQmlApplicationEngine
+
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtCore import QCoreApplication, QUrl
+
+import rc_viewer # noqa: F401
+
+"""PySide6 port of the pdf/pdfviewer example from Qt v6.x"""
+
+
+if __name__ == "__main__":
+ name = "Qt Quick PDF Viewer Example"
+ QCoreApplication.setApplicationName(name)
+ QCoreApplication.setOrganizationName("QtProject")
+
+ app = QGuiApplication(sys.argv)
+
+ dir = Path(__file__).resolve().parent
+
+ argument_parser = ArgumentParser(description=name,
+ formatter_class=RawTextHelpFormatter)
+ argument_parser.add_argument("file", help="The file to open",
+ nargs='?', type=str)
+ options = argument_parser.parse_args()
+
+ url = None
+ if options.file:
+ url = QUrl.fromLocalFile(options.file)
+ else:
+ url = QUrl.fromLocalFile(os.fspath(dir / "resources" / "test.pdf"))
+
+ engine = QQmlApplicationEngine()
+ engine.setInitialProperties({"source": url})
+
+ engine.load(QUrl.fromLocalFile(os.fspath(dir / "viewer.qml")))
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ exit_code = QCoreApplication.exec()
+ del engine
+ sys.exit(exit_code)
diff --git a/examples/pdf/quickpdfviewer/quickpdfviewer.pyproject b/examples/pdf/quickpdfviewer/quickpdfviewer.pyproject
new file mode 100644
index 000000000..437e25551
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/quickpdfviewer.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "viewer.qml", "viewer.qrc", "resources/test.pdf"]
+}
diff --git a/examples/pdf/quickpdfviewer/rc_viewer.py b/examples/pdf/quickpdfviewer/rc_viewer.py
new file mode 100644
index 000000000..f331739b5
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/rc_viewer.py
@@ -0,0 +1,5505 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.4.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x03\x0c\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 24 24\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#4d4d4d;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h style=\x22fill:cu\
+rrentColor;fill-\
+opacity:1;stroke\
+:none\x22\x0a d=\x22M\
+ 4 4 L 4 5 L 4 8\
+ L 5 8 L 5 5 L 8\
+ 5 L 8 4 L 5 4 L\
+ 4 4 z M 12 4 L \
+10 6 L 14 6 L 12\
+ 4 z M 16 4 L 16\
+ 5 L 19 5 L 19 8\
+ L 20 8 L 20 5 L\
+ 20 4 L 19 4 L 1\
+6 4 z M 7 7 L 7 \
+17 L 17 17 L 17 \
+7 L 7 7 z M 8 8 \
+L 16 8 L 16 16 L\
+ 8 16 L 8 8 z M \
+6 10 L 4 12 L 6 \
+14 L 6 10 z M 18\
+ 10 L 18 14 L 20\
+ 12 L 18 10 z M \
+4 16 L 4 19 L 4 \
+20 L 8 20 L 8 19\
+ L 5 19 L 5 16 L\
+ 4 16 z M 19 16 \
+L 19 19 L 16 19 \
+L 16 20 L 20 20 \
+L 20 19 L 20 16 \
+L 19 16 z M 10 1\
+8 L 12 20 L 14 1\
+8 L 10 18 z \x22\x0a \
+ class=\x22ColorS\
+cheme-Text\x22\x0a \
+ />\x0a</svg>\x0a\
+\x00\x00\x03^\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 24 24\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#232629;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h style=\x22fill:cu\
+rrentColor;fill-\
+opacity:1;stroke\
+:none\x22\x0a d=\x22M\
+ 4 4 L 4 6 L 5 6\
+ L 5 5 L 6 5 L 6\
+ 4 L 4 4 z M 9 4\
+ L 9 5 L 11 5 L \
+11 4 L 9 4 z M 1\
+3 4 L 13 5 L 15 \
+5 L 15 4 L 13 4 \
+z M 18 4 L 18 5 \
+L 19 5 L 19 6 L \
+20 6 L 20 4 L 18\
+ 4 z M 12 8 L 12\
+ 9 L 14.292969 9\
+ L 11 12.292969 \
+L 11.707031 13 L\
+ 15 9.7070312 L \
+15 12 L 16 12 L \
+16 8 L 15 8 L 12\
+ 8 z M 4 9 L 4 1\
+1 L 5 11 L 5 9 L\
+ 4 9 z M 19 9 L \
+19 11 L 20 11 L \
+20 9 L 19 9 z M \
+19 13 L 19 15 L \
+20 15 L 20 13 L \
+19 13 z M 4 14 L\
+ 4 20 L 10 20 L \
+10 14 L 4 14 z M\
+ 5 15 L 9 15 L 9\
+ 19 L 5 19 L 5 1\
+5 z M 19 18 L 19\
+ 19 L 18 19 L 18\
+ 20 L 20 20 L 20\
+ 18 L 19 18 z \x22\x0a\
+ class=\x22Colo\
+rScheme-Text\x22\x0a \
+ />\x0a</svg>\x0a\
+\x00\x00\x03n\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 24 24\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#232629;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h style=\x22fill:cu\
+rrentColor;fill-\
+opacity:1;stroke\
+:none\x22\x0a d=\x22M\
+ 4 4 L 4 5 L 4 8\
+ L 5 8 L 5 5 L 8\
+ 5 L 8 4 L 5 4 L\
+ 4 4 z M 16 4 L \
+16 5 L 19 5 L 19\
+ 8 L 20 8 L 20 4\
+ L 16 4 z M 6 6 \
+L 6 11 L 11 11 L\
+ 11 6 L 6 6 z M \
+13 6 L 13 11 L 1\
+8 11 L 18 6 L 13\
+ 6 z M 7 7 L 10 \
+7 L 10 10 L 7 10\
+ L 7 7 z M 14 7 \
+L 17 7 L 17 10 L\
+ 14 10 L 14 7 z \
+M 6 13 L 6 18 L \
+11 18 L 11 13 L \
+6 13 z M 13 13 L\
+ 13 18 L 18 18 L\
+ 18 13 L 13 13 z\
+ M 7 14 L 10 14 \
+L 10 17 L 7 17 L\
+ 7 14 z M 14 14 \
+L 17 14 L 17 17 \
+L 14 17 L 14 14 \
+z M 4 16 L 4 20 \
+L 5 20 L 8 20 L \
+8 19 L 5 19 L 5 \
+16 L 4 16 z M 19\
+ 16 L 19 19 L 16\
+ 19 L 16 20 L 20\
+ 20 L 20 19 L 20\
+ 16 L 19 16 z \x22\x0a\
+ class=\x22Colo\
+rScheme-Text\x22\x0a \
+ />\x0a</svg>\x0a\
+\x00\x00\x02\x84\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 24 24\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#232629;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h style=\x22fill:cu\
+rrentColor;fill-\
+opacity:1;stroke\
+:none\x22\x0a d=\x22M\
+ 4 4 L 4 5 L 4 7\
+ L 5 7 L 5 5 L 7\
+ 5 L 7 4 L 5 4 L\
+ 4 4 z M 17 4 L \
+17 5 L 19 5 L 19\
+ 7 L 20 7 L 20 5\
+ L 20 4 L 19 4 L\
+ 17 4 z M 6 6 L \
+6 18 L 18 18 L 1\
+8 6 L 6 6 z M 7 \
+7 L 17 7 L 17 17\
+ L 7 17 L 7 7 z \
+M 4 17 L 4 19 L \
+4 20 L 7 20 L 7 \
+19 L 5 19 L 5 17\
+ L 4 17 z M 19 1\
+7 L 19 19 L 17 1\
+9 L 17 20 L 20 2\
+0 L 20 17 L 19 1\
+7 z \x22\x0a class\
+=\x22ColorScheme-Te\
+xt\x22\x0a />\x0a</sv\
+g>\x0a\
+\x00\x00\x02\x02\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 24 24\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#232629;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h style=\x22fill:cu\
+rrentColor;fill-\
+opacity:1;stroke\
+:none\x22\x0a d=\x22M\
+ 8.7070312 4 L 8\
+ 4.7070312 L 14.\
+125 10.832031 L \
+15.292969 12 L 1\
+4.125 13.167969 \
+L 8 19.292969 L \
+8.7070312 20 L 1\
+4.832031 13.875 \
+L 16.707031 12 L\
+ 14.832031 10.12\
+5 L 8.7070312 4 \
+z \x22\x0a class=\x22\
+ColorScheme-Text\
+\x22\x0a />\x0a</svg>\
+\x0a\
+\x00\x00\x01\xcc\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 24 24\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#232629;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h\x0a style=\x22fil\
+l:currentColor;f\
+ill-opacity:1;st\
+roke:none\x22\x0a\x09d=\x22m\
+4 3v1 13h1 2 1v1\
+ 1h6l4-4v-1-7-1h\
+-2v-3h-1-10-1m1 \
+1h10v2h-7v1 9h-1\
+-2v-12m4 3h8v7h-\
+3-1v1 3h-4v-11\x22\x0a\
+ class=\x22Color\
+Scheme-Text\x22\x0a \
+ transform=\x22tra\
+nslate(1,1)\x22\x0a \
+ />\x0a</svg>\x0a\
+\x00\x00\x01\xd7\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 24 24\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#4d4d4d;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h style=\x22fill:cu\
+rrentColor;fill-\
+opacity:1;stroke\
+:none\x22\x0a d=\x22M\
+ 7 7 L 7 17 L 17\
+ 17 L 17 7 L 7 7\
+ z M 8 8 L 16 8 \
+L 16 16 L 8 16 L\
+ 8 8 z M 6 10 L \
+4 12 L 6 14 L 6 \
+10 z M 18 10 L 1\
+8 14 L 20 12 L 1\
+8 10 z \x22\x0a cl\
+ass=\x22ColorScheme\
+-Text\x22\x0a />\x0a<\
+/svg>\x0a\
+\x00\x00\x01\x86\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 32 32\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#232629;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h style=\x22fill:cu\
+rrentColor;fill-\
+opacity:1;stroke\
+:none\x22\x0a d=\
+\x22m4 4v24h24l-1-1\
+h-22v-13h5l3-3h1\
+4v16l1 1v-21h-10\
+l-3-3z\x22\x0a cla\
+ss=\x22ColorScheme-\
+Text\x22\x0a />\x0a</\
+svg>\x0a\
+\x00\x00\x01y\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22>\x0a \
+ <g font-weigh\
+t=\x22400\x22 fill=\x22#4\
+74747\x22>\x0a \
+<path d=\x22M3 3v2h\
+4.5C8.34 5 9 5.6\
+6 9 6.5V12h2V6.5\
+C11 4.579 9.421 \
+3 7.5 3z\x22/>\x0a \
+ <path d=\x22M6 \
+9h1c.257 0 .529.\
+13.719.313L10 11\
+.592l2.281-2.28C\
+12.471 9.13 12.7\
+43 9 13 9h1v1c0 \
+.31-.09.552-.281\
+.75L10 14.406 6.\
+281 10.75C6.091 \
+10.552 6 10.31 6\
+ 10z\x22/>\x0a </g>\
+\x0a</svg>\x0a\
+\x00\x00\x01\x8a\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2216\
+\x22 height=\x2216\x22>\x0a \
+ <g color=\x22#00\
+0\x22 font-weight=\x22\
+400\x22 fill=\x22#4747\
+47\x22>\x0a <pa\
+th d=\x22M2 9v1c0 .\
+265.093.53.281.7\
+19l3.72 3.719 3.\
+718-3.72c.188-.1\
+87.281-.453.281-\
+.718V9H9c-.265 0\
+-.53.093-.719.28\
+1l-2.28 2.281-2.\
+282-2.28A1.015 1\
+.015 0 0 0 3 9z\x22\
+/>\x0a <path\
+ d=\x22M8.5 3A3.515\
+ 3.515 0 0 0 5 6\
+.5V12h2V6.5C7 5.\
+66 7.66 5 8.5 5H\
+13V3z\x22/>\x0a </g\
+>\x0a</svg>\x0a\
+\x00\x01+Y\
+%\
+PDF-1.6\x0a%\xe2\xe3\xcf\xd3\x0a1 \
+0 obj\x0a\x0a<<\x0a/Conte\
+nts 2 0 R\x0a/Thumb\
+ 3 0 R\x0a/Type /Pa\
+ge\x0a/Resources 4 \
+0 R\x0a/CropBox [0 \
+0 595 420]\x0a/Pare\
+nt 5 0 R\x0a/Rotate\
+ 0\x0a/MediaBox [0 \
+0 595 420]\x0a>>\x0aen\
+dobj\x0a\x0a4 0 obj\x0a\x0a<\
+<\x0a/ColorSpace \x0a<\
+<\x0a/Cs1 6 0 R\x0a>>\x0a\
+/ProcSet [/PDF /\
+Text]\x0a/Font \x0a<<\x0a\
+/Tc1 7 0 R\x0a>>\x0a>>\
+\x0aendobj\x0a\x0a2 0 obj\
+\x0a\x0a<<\x0a/Filter /Fl\
+ateDecode\x0a/Lengt\
+h 358\x0a>>\x0astream\x0a\
+x\x01\x9d\x92Ko\x830\x10\x84\xef\xfe\x15s4\x07\
+\x88m\x9e\xb9\xa6\xea\xa1\xbdEA\xca\xa1\xea\xc1\x05\xa7\
+ \x01VBh\xd5\x7f\xdf\xe5\x15\xa2\x16\xa9RO^\
+\xef\x22\xfc\xed\xcc\x9c\xb1\xc7\x19\xb1\x82\x94\xd2S\xc16\
+D\x10J(?\xf2\xe2P\x84\xb8\x18\x1c\xd1`\xf3\xd0\
+Jd-\x04\xda\x8c>\x17\xde6N|\x91\x08j\x08\
+\xb8\xcb\x95\xfe\xe3\x07\x09\xcbj\xecR\xc8d\x1c\xd3\x19\
+IH\xa5\x90\xd6\xd8\xa4\x19\xd5HOx\x01O\x1dH\
+\x1f\xfcB\x87\x00\xb7\x0e\xb6\xe0U\xd5BO\x1d\x83k\
+a\xd0^\x1d\xe6&\xe0\xdd\xc9\x81\xeb+p:e\x00\
+\x0e;\x17\x9fE\x999\x88\xc0\x0bT\xe6}\xa8L\x93\
+\xa3lQ\xeb\xdc8xE\xfa\x8c\xc7\xb4_\x95-\xb0\
+\xab\xecXe\x0f\x82_\xecG\x82\xf2\x89\xa20\xc4\xd8\
+\xf3\xc6D\xa4\xaf\xc3\x0e(lm`\xe7.\xe1Ut\
+\xed\xa6\xa1m\xa0\xd1\xcfh\x15]\xe6\x84\xc7nx\x7f\
+I\xbb\x8e\x17E3\x1e\x9b\xa5\x05\x0e\x16\xe5,\xd0\x88\
+\xf75\xeaf\xbb;\x81oT\xd3\x16\xe4\xc3$\x18\x1b\
+\x05\xfb\x1fQ\x92\xccD\x83\xd9\x8c\xcc\x06\x9e\x9a\xc1O\
+\xb2\xaa_}\xb2;\xc7!\xd3M^j\xe8\x92D\xb9\
+\xb3\xea\xaf\x97Wc\xa6(I?c\xb6\xa3\xdcP~\
+\x0c2\xdd{\xe0\xf6a+m\xd7\xe2m\xb6\xa41\x1f\
+\x0e\x93\x94\xbe\xc5\xc9>l\x8a\x22\xb5\x18\xe5\xdd\xd3\xed\
+\xbf\x01w\xa3\xbaf\x0aendstream\
+ \x0aendobj\x0a\x0a8 0 ob\
+j\x0a\x0a<<\x0a/Alternate\
+ /DeviceGray\x0a/Fi\
+lter /FlateDecod\
+e\x0a/Length 1088\x0a/\
+N 1\x0a>>\x0astream\x0ax\x01\
+\x85U]h\x1cU\x14>\xbb3;y\x89C\x11m\
+K+u\xf0\xaf!\xa4aR\xad&\x16\xb5\xdbM\xba\
+\xbbM\xd8\xae\x9b\x8d6U\xaa\xd3\xd9\xd9\xeet'3\
+\xe3\x9d\xd9\xb4\x09}\x0a\x82oZ\x10\xc4WE|\x12\
+-\x88\xd0j\xc4\xe4\xc5\xbe\xb4T\xa8\x89\x14\x8b (\
+\xb4XA\x10\xfa \x0a~gv\xb2;\x1b\x91\xccp\
+g\xbe9\xf7;\xe7\x9e\xf3\xdd{\x18\xa2\xbee\xc3\xf7\
+\x9d\xb4F4\xe7\x86\x22_\xc9\xce\x1e\x9f=\xa1\xf5}\
+GiR\xa9\x9fp\x19f\xe0g\xcb\xe5)\xc6\xae\xe7\
+Z\xfc\xee\xbd\xee\xadS\x8a-7\xf6q\xac\xde\xb9-\
+\xbf25+0\xc1Z\xc1\xf0j\x819G\x94\xd2\x89\
+\x94a\xd3\x17!Q\xdf\xeb\xb0\x8f\x9e\x0d}\xc6\xef\x03\
+?\xd0\xacVr\xc0\x9f\x00\xab\xb1/ =\x98\xb7\x5c\
+K\xd8\xa6\x96\x17\xc6\x82V\x16^\xddv\x92\xb9n5\
+\xcf1\xb6\xbc\xe6\x9c\x16\xe7\xca\xd7\x1e\x8c\xfe\xa09=\
+\x89\xf7 r>W3\xc6\x19?\x05\xfc\xa1iLL\
+\x03\x0f\x01\xaf\xfb\xe1\xe1J\x9b\x93N\xb7\x9a3\xd9\xb6\
+==T\x17Gfb\xfb\xf1F\xab\xc0x\x98(\xbd\
+\xb4\xd8\xa8\xbe\x0c\xbc\x0d\xf8\xa2{\xaat,\xe6\xaf\x98\
+A\xee\x04\xf0c\xb0\xdfmXE\xde\x0f\x8dH\xdaf\
+\x87\xc5*0|%]x\x15\xe6\x83#\x9d\xacY\xe3\
+\x13\xc0\xcf\x02/5\xbdI\xcea'\xf0r0?\xcd\
+v\xe6\x7f\xbf\xd8\xc8\x95\x80\xb1\x96\x9c>c\x1c-\x03\
+o\x07\xbe\xdfr\xf2\xccG\x1cy\xc0\x0f\xcb\x1cs\x14\
+x\xcauJ\xbc.\xea\x95\xdf\xb4\x82\xa8\xc6\x01\xe0O\
+\xc3F\xb5\x10\xf3\xd7CQe\xdfG`\xff\xabn\x1f\
+)\x02C\x87\xccC\x0dQ`;\xf2\xc9\x14|':\
+OO\x03/\x89V\x85k\x7f\x02\xf8\x92!&\xf2\xc0\
+\x88\x99\xf9\xc9rgXC`E\xa1\x97R\x06Y\xe4\
+\xd1)<Mr\xe9\x1f\xd4\x1e\x90M\xf3\x11\xf2I`\
+\xae\x8eo\x87\xf2`\xb8\x18\x02\xc3\x01\xeb4\xd0\xaf\x14\
+b\x9e\xad\xec\x1fP\x136\xf6eF\x80g\x19C\xc4\
+\xfe\x1a\xd5\xf0\xd5\xf6\xb31\xcb\x88#\xde\x8e|\xccM\
+\xdc\x1c\xe2\xb8\xb4H\x06x\xed\x95\xef\xc4<O\xde!\
+\xeb\xf2\x93\x18\x07\xe5)\xf99yT\x1e#M~A\
+>$?/\x8f\xc3:&\x1f\x8c|\x04|\x17\x10\xb5\
+[\x01\xafx\x07Q\xdb\x91\xde\xa0VO>\xab\xc89\
+\x84\x8fC?\x83\xe3E\x19\x06\xc8\xe0oDhF\xcc\
+\x84\x1a\x17v\xb5\x06|\xff\xbd\xb7\x97\xc4k\xb6y\xfd\
+\x9d?\x12\xeapm\xcd\xb8\xce\xae>\x09_:\x96T\
+;\xd2\xbf\xb6Y\xed\xcc/\x99\xdb\x995<ofn\
+%\xaa\xd12?fn\xe1\xbe\xd9S\x97\x17\xaff\xa3\
+>\x1b\x99o(\xcb\xda\xdb\xd8U\xaf\x87\xbd\xb1\x03\x9b\
+YYT\xeeD{2\x87jY}\xdeQV\x9f\x95\
+l\x01\x87x\xd6aui_2\xe2\x95\xf3\xcb;;\
+\xbc\x05\xd2\xd6\xe4K\xaf\xde\xe8\xbfr\xfe\x7f5a}\
+Xg\x8b\x12\xaa\xd4\xdd\x0b\xbb|\xff\xe4\xc7\xac\xa6\xf5\
+V\xe9^\x89\x96\x86\xf4\x8b\xfa]\xfd#\xfd\x07\xfdw\
+}M\xff\x00\xe87\xe9]\xe9\x0b\xe9k\xe9\xb2\xf4\xa5\
+t\x954iEZ\x95\xbe\x91\xbe\x95>\x93\xbe\xc2\xd7\
+\xe7\xb0\xaeJ\x97\x91[\xf2\xd4\xb5OY\xe7\xf4 \xd3\
+\xf694\xe3\x13\xc6\xf5\xf0)\x0e\x88\x15`6\xd7\xcf\
+\xd6\x0d\xa5\xce`\xae\x9b)\x9f\xed\xcd+\xb0\xce\xdd\x13\
+\xddYK=\xac\xeeV\x1fU\xc7\xd5\x87\xd5\xc7\xd5)\
+uP=\xa0\x1eRw\xa8\xfb1F\xd4\x82\xba\x173\
+\xbb;*qO\xb1\xd66\xdee\xbc7\xfa\xce\xa6\xd9\
+H\xab\xf6\x8epV\x0d\xa8'\x90\xa5\x81\xbb\x9b\x17\xf7\
+\xa8\xdd\x89\x868\xa9\xfb\xa03G\xebrx\x8dvw\
+\xdb\x88\xa2\xc5\xdd\xeb\xa1c\x0d\x9aA\xc56\x9d\x8d\xb4\
+\x0b\xf0\xed\xe0\x1b\xbb\xf9\x1fo\xeeId\x97z\x05'\
+\xcb\x96\xf7\xc8#r1\xee\xc1\xac|\x00]8\xd9\xd3\
+\x8f\xa3\xdc\xa5\xca\x842\xaedIS\x06\x951eD\
+9\xca8\xaa\x95;TS\xf6bv\x0c\xcf\x89d\xf6\
+\x88\x9e\xe0\xf4(\x82\xbfOh\x9d\xc3\x7f\x8b(\xe7\xf9\
+\x0b\xc2>\xdd\x08\xb5\xfd\xba\xfe\x8c\x96\xc5o\xd2\xd2\x8a\
+\xae9<\xa4\x19\x8e\xa3ES\x81&\xac\xc0\x12\xf3V\
+m\x98\xf8\x1f\xcc~D\x7f\xbe\x18\xfd[S\xdb\xaf\x9a\
+-1\xdf\xb6Q*u\x8d\xe8_\xfa\xba\x87{\x0ae\
+ndstream \x0aendobj\
+\x0a\x0a9 0 obj\x0a\x0a<<\x0a/S\
+ubtype /Type1C\x0a/\
+Filter /FlateDec\
+ode\x0a/Length 9327\
+\x0a>>\x0astream\x0ax\x01Uz\x09\
+x\x14U\xbeo\x87\xd0\x9dJ\x9dN\xd0\xd4\xb4C\xba\
+\xac*Q\x11w\x14\x14\x18\xc5\x05DT\x04d\x93\xd5\
+\x05\x0c\x9b\xec\x81\x90\xce\x9eNo\xb5\xf4\xa9\xa5\xb7\xa4\
+\xbb\xd3\x9d=!\x81\xb0\xc8\xa2 \x9b\x22\x02n\xac\xb2\
+\xb8\x0e\x8e\xf7::\x8e\xd7\xf1\xce\xcc=\xed\x94\xf7\xfa\
+\xfe\x1d\xe6\xce{\x0f\xbe/_:]Ug\xa9\xff\xf2\
+[N\x8ee\xf0 KNN\x8ec\xe1\xec\xa7\xe7\xcc\
+\x9a{\xd7\xf4\xcd\xcb\xca\x97\xcc.[z\xcf\x13\xeb\xd7\
+-\xcd~qg\x86\xb5dn\x1c\x94\xe1r3C\x07\
+\x8f\xb1\xe7\xf6\xd9\x07\x07\x0b\x86\x9b\xda\xcf\xc9\x9f}\xd6\
+\x1b\x87\xe4\x0e\xb9q\xc8\xf8\xeb\xcf\xdc\xc8\x9e)\xb2\xe4\
+\xe6\xe4P7\x08\xf7\xdd7\xea\xde\xfb\xee\xbbo\xe0A\
+7\xc1\x93n\xca>\xe9_\x9f,!\x18\xce\xe2\xcd\x19\
+\x96S?\xe8\xaeA/\xe4\xce\x1e|\xd7\xe0\xe5\x83\x9b\
+\xad\xb3\xac\xeb\xac\xa2\x15[\x7f\xb6\xcd\xb0\xbdn;\x98\
+W\x94\xb7<\xcf\x95'\xe6\x05\xf3\xba\xf2\xbe\xc9\xfb\x13\
+u7\xf5*\xd5Cm\xa7\xde\xa4NP\xe7\xa9+\xd4\
+\xe7\xd4\xd5\xfc!\xf97\xe6\xdf\x9c\x7f[\xfe=\xf93\
+\xf37\xe7{\xf3\xc5\xfc`~<\xbf#\xbf?\xff\xfd\
+\xfc3\xf9\xdf\xd0\xb94E\xdfD\xdfN?M/\xa7\
+7\xd0et\x05\x1d\xa5\xbb\xe8\xb7\xe8\xcf\xe8o\xe8\x1f\
+\xe8\xbf\xd2\x04\xe5!\x0e\xdd\x8e\xc6\xa1\xa7\xd0t4\x0b\
+\xbd\x84^A\xeb\x90\x175\xa2f\xd4\x86\xba\xd0Nt\
+\x14\x9dB\x1f\xa2s\xe8\x22\xfa\x04}\x8f~\xb2\xe7\xda\
+\x91\x9d\xb1\xff\xd6\xce\xd9\x87\xd9\xef\xb2?h\xff\x9d\xfd\
+\x11\xfb\x04\xfb\x93\xf6\xd9\xf6W\xec\x1b\xec\xf5v\xc9\xae\
+\xda#\xf6\xb8=mo\xb7w\xdb\xb7\xdb\x0f\xda\x8f\xd9\
+\xcf\xd8\xaf\xd8\xaf\xda\xbf\xb5\xff`\xff\xc9\xfe_\xf6\x7f\
+\xd8\xff\xa7\x80.p\x14p\x05\xc3\x0aF\x14\xdcU0\
+\xb2`t\xc1\xd8\x82\x87\x0b\x1e+x\xa2`z\xc1\xec\
+\x82\xf9\x05/\x17,/X\xbb\xcc\xe4&\x9a\xaf\xaf0\
+\x8b\xc5zQ\xf2J\x9b\xfdC%E\x99M\xab|\x12\
+\xb7\xe3\xae\xde\x1e\xa5u\x1c\x8d\x83\xaa!M\xe4^1\
+8U\x8d\x17\x87\x8f$\xafD\xde\xa0BX\xd3\x0dv\
+\x87\xfa\x07u\x07\x8e/l\x1f\x15\x9f\xafz\xa5\x80O\
+y\xc5;T\x1c\x03\xf7\xf7\xe0-\xb8\xbf\xb5[i\xb5\
+\xdf\x1a\xe6\xb0.'\xb9R\x83\x0b\xcb\xb1\xe2\x95d\xd4\
+\x0c\xb2{\x13\x19Ji\xbd\xb4\xc4\x22b\xf5\xa6~\x1d\
+4\xddm\xf9\xd5r\x9d\xdbR\x17/:\xf0)y\xe9\
+4s\xa5\xe3IN\x0e`q&\xdd\xe7\x0b\xcb\xd8\xaf\
+\xd4\x15\x8b\xb3\xea\xcd\x11\x8a\x99G\x99/*\x17\xa7~\
+\xc7\xfe\xed\xe27\xe4YU`\xf6\xe3\xbf\x05\x88\xcd\xff\
+\x1fJD\xd5\x22j[h\xe8F\xce0\x9c\xb3h\xe6\
+\x8a9\xc2&\x05\xe8\x00\x0e\xcc\xa4w\xf9B\x9b\xe9\x86\
+\xe2\xf0]\xd8\x1c\xfe\xb4\xd3\x9c\xa9\xacyl2;a\
+\xfd\xd7\xe4I,|\x81\xc9m\xe1/x\x1c\xd5\xd4\x08\
+\xa6\x98\xfd;\xc2\xd6\x7f>\x02u\xc3,\x0cZ\xe8\x09\
+\xc4d\xcd\x83\xdd\xc5\xf5\x9a\xb9\x00\xcf\xe7\xf12\xd5\x5c\
+\xb1\xd2\xe9\x91d\x9f\xec\xa3\xc5I\xb4\xc67g\x17\xbc\
+\xb3[i\xca.X]\xc8\xad\xea\xe3TQ\x8d\xf4\x19\
+\xe4\x95]\xce\xdd\x1a\x99l|\xc8\x1bZ8\x8c\xf9n\
+\xc3\xda\xcbi\xea\x1c\x0e\x91\xde\xb9\xb4\xa8\xfaua\x87\
+/\xac`Q\xaa/\xde8r\xf5]\xeb\x1f\x95\xbc\xfe\
+\xea@\x0d%\xda\xa4&\x7f\xab\x14\xdexq\x19\xb1n\
+\xfcR\x8a\xea\x9a\x81\xb7\x87\x86j\x9a\x11\xc2)Z0\
+\xc7g\x97'b\xffL\xba%\x10VB~-P\xbc\
+w\xf81S\xd8\xf6\x90\xe6\xd1\x1b\xb0\x9bR\x97j\xa6\
+c\x95\xd3\xadH>\x85_\xe9\x19I\xa7q\x1f\xde\xb2\
+\xa5S\xe9\xb4\xdf\xaa\x05Une\x1f'rQ\xe7V\
+\x85\x0c\xd1\x0e\xf38\xa5\xc5\xc2\xc9\xbes'\xc8\xad{\
+\xbe1\x1au=\xaa&\x8cz.\xe4\xe3$\x1e\xe1)\
+\xaay\x9d\xd7\x19\x90d\xbf\xcc\xafj\x18I'p\x0f\
+\xee\xebus.N\x93\x8d\xa5\xf4\xea\x88\xd5\xa7Jj\
+\xd8\xd9\xa3\x91!\xf85\x1e}/7fF\xf6\xd4\xb4\
+\x92%\xe9\xa2\xd3\x97\xa6\x1d'\xf7\x5cz\xea8\xf3:\
+\xd9\x99\x99\xe4\x08a\xbf_\xc0kU\xd3\x82gQ\xcc\
+\xbe\x7f>\xdb?\xf0\xecW=VY\x91\xef\xe3\x92\xd9\
+\xe7o\xd9\xa2\xa4\xed\xb7&\xe9\x81!\xd6\xfck\x08u\
+`\x08\xe6M\xf5\xfd\x10\xb9/\xe6Ls~\xde\x5c#\
+YI\x81\xb2\xe3\x0f\x1f\xb1\xb1\x90(\xea\x82.i\xb0\
+!M\xa5\xb1\xd2\xc6RJR\x83\x0af\xf5\xb0\xae\x09\
+\x81\x1f\xad\xba\x0c\xaf\x86\xd7\xdd\x95\xda&\x96\xf9t\xd8\
+\xa3\x0f\x9a\xc3\x02\x02s\xe9E\xc5\xda \x8a^YP\
+$\xc5\xd7\xc5A\xdc\xf3\xa7Te\xb3a:\xf0\xb2b\
+\xb5\x8c\xf3KN%\x18\xdcJo\xf3\xd0\x92\xf0b\xd8\
+\xea\xc7\x12\x8etcr\xef6'\xf3zR#\xb9\xea\
+\x09\xbe\xf0O\x03\xcb\xfe\xf5\xd7?\xbb-m\xbfZ\xce\
+\xb8--Eg.N?N\xee\xbe<\xe98\xb3\x8f\
+\xb9x:\xf3\x90c\xe0\x99\xea2\x0a\xcf\x0f\x8f\xa2\xfb\
+:\x95\xfe\x07hC\xce>\xd1\xf7\xff<q_R\x1d\
+x\x22\xb93j\xc5\x93U\xf3R\x9d\xd3/K~\x88\
+7HQ\xf1Yx\x95\xadx[o\xaa\x9f\xd3\x97\xd2\
+\xafFa2\xb2n8c:\xa9\xc7\x1f\xf0\xf8oa\
+\xf2\x22n\xa4B\xb2&b>\xe4\xdah\xbc\xcc2\x9f\
+\x987L6\x07\x99\xf9\xa2\xc0\x5c|\x01\x96\x0a\xe9*\
+\x09\x8a\xa8\xf8e\xa7\xfc \xc7\xbcI\xb8^\x07\xa1\xd5\
+\xed\xff\xf6)\x1b\x8b\x8b~C\xd0`\x9bD\xe7\x1a<\
+\x06?\xc1\x17\xcas\x15\x13IN\x98\xa1\x0e\xc5\xa19\
+\x98jm\x0b&\x06\x8a\x83\xa6$\xb9\xb5Qx\xfb\x8a\
+\x11v*\xbdA\x92w\xcayR!\x1cn\xe3C\xb2\
+Z\xc9\xa1;\xcb\xe1\x8dj\xb4!\xf4bkX\x97\xea\
+d!\xb0\xd4c\xe6?\xe74\x8bz\x1e>\xf1\xfe\xbe\
+\xaf\x88\xa5\x8bW\xa3j\xa3\x1e\xa7t\x9bR\x17t\xbb\
+\x9d\x88\xfc#\xed\xf0i\x92\x8a\x93\x94\xd6\x15&\x8e\x13\
+N\xe2p}9\xfd\x89\x05\xe6\x88\x89\x15\xbc\xec\x93\xea\
+\xe5z\xc8\x10\xdc\x18L\xe2\x04\xa5\x1e\x0d\x91\xdbu\xa7\
+!\xabi\xda\xcc\xdd\x04\xe3\x95\xd2\xce\x80\x1e\xd0\xf8~\
+\xc5\x1aR \xdc\x9cx\x8d:l\xc1Tl\xe6nv\
+\x06d) \xf3k<V)\x1bh\xad\xb8\x05\xf7l\
+iW:\xef\xa65e\x22\xb7&j5\xe8\xb0s\x9b\
+\xfe\x91\xde\xc9\xff)u\x88\x8c>\xc4\xeeN\x8c4\xed\
+Ke\xd3\x22\xd7\x0a\xb2W\x0ex\xe5\x8d\xdel\xa5\xcc\
+Fi\x1b\xde\xd6\xd3\xa2\xb4fo\xf6\xd3\x88\xb8H\xd0\
+!\x86\xe0\xbfN\xa5\xab\xcb\x92\xaf\xb2\x0f\xbfr\xef\xc3\
+c\xf7\xbepX@s9\x85\xf3\xd7a/\xebS\xc4\
+z\xba\xba\xc4\xb5\x98\xf2\xcb\x91@\x0b\xedT\x1e\xe4\xd0\
+1\xf3\xe6\x9fLy\xffp\xca\xa7\x1br\x88\x0d7\xaa\
+jH\xd0\xa6\xd0\x9aS=\xa6\x93\x0dx\xb7\xf6a\x88\
+\x8c\xc7\xdd8\xadC\xa5j\x0b\xd5s\x86S\x1dK\x9b\
+\xbf\xb5%\xa0\xc4I3\xe9~_L6\x02\xb8\xbeX\
+{\x11\x9b{\xf10\xea\xe5<Q\x0a$\xfc)1V\
+\x5cB\x06\xddD\xf6\xaf\xbfB\xe9\xb2\x82\x03,2\xc7\
+\x12o#9\xda\xf8\x9a+\xe7\xfd\xc3\xb9M\x99\xe3S\
+8C\x95\x02\x02\xde\xa8\x8eY\xe6\xc2\xb7W8\x07\xb6\
+h\xbd\xdf*\xcb\x01Q\x81\xe4\x11\x12\xb8-\xd8\x91n\
+\x096\xdbo\xc5X\xe5JCV\x11\xcbXw\x86\xd4\
+\xaf\xf11~1'\xc9|\xe1\x8a\x89\xa2\xd7/7H\
+\xc5\x9e\x15\xe6o\xfc\x1b\xd8\x15\xaa-\x9a\x8c\xa5\x8c\xe8\
+\xbb?\x10\x96\xa4\xcf\x90b\xca\x88b#\xe4\x84N\xe0\
+M\xf2\xd0\x01D\xb6|\xaa2e\xf6\xa2\xd5\xf6\x9bE\
+Y\xf1+B\x8d\x99c\x95\xc2\x01\xdd\xc5a\xfe\x8do\
+\xadaM\x87>\x93\xfe\xc2\x1f\xd8*$\x94\xb4\x12\x96\
+)$\x8awsh;\xf9\xd2\xb1\xa8s\xe5\xc9\xa5\xfc\
+\xc9\xa5\xed\xabJ\x9c\xb3\x16\xaf\x9f\xefq\xeb\x86\x9f\x17\
+5\xf8\x1fr\xb75t4\xb45\xd1\xa27 \x0a\x91\
+\xb1Vq\x0b\xa7\xf0bS\xbb\x94dI\xee\xf1\x8f\xce\
+\x1e_\xbd{\xc6\x1ea\xfe\x8e\xca\xae\xbd\xce\xd7\xda\xf7\
+\x1ehl\x94\xfd!\x1e\xc5\x94\x98\x12RTy\xa8\xaf\
+\xceS\x13p/~\xe4Qs\xc4\xe3\xe6P\xaa\x82S\
+\x9c\xb2\x0a\x15\x8e\xf7\x18\xba\x18\xdd\x92\xc4\xc7\xbe8\x22\
+w\xb2\x86\x8a\x0d,4~o\xd5\xb1O\x97Y\xc5E\
+\x0b\xa53`\x13\xa0\x15\x16/\xf3\x8c\x157*\x14\xba\
+\x97>\x18&7\xab-\x026d\xdd\x0f\x7f8\xbe\xfd\
+\xed})A\x8fj\x8dz\x8cRm(8\x95C\x8e\
+\x8a\x1d\x5c*\x15\x8b7774\xd6\x08\xc4vCE\
+\x82\x8bs5B!\x99N\x06u}\xdd\x7fL\xd8\xdf\
+\xbd\xadk\x1b\x1b\x8fdSS\x17u\xbf\xe6\x89\xafm\
+Z\xd5\xb4\x86R&pzD\x9fI7\x90\xc1\x8a\xa1\
+@\xc6\x17\xc7\xaa*\xb4\x0d\xec\x9cy\xeb\xe6\x96\x08\xf3\
+\xd18:\x88\x9a\x8b\xf4\xc6\x8e\x8f\xdb\xdf:|\xb0\xfb\
+b\xb2\x91\xe9\xb3\xbcF\x0e9L\xdb\x81\x91\x07\xa6\xf3\
+\xcca\x8b\xdf\x90}~\xb6\xc2\xa5\xe9\x95\x82\x17\xbbC\
+R\xb8\xae\xd3\xd7\x5c\xd7C\xa9rP\x11E\x11\x1a\x80\
+C\x92%Q\x12\xdcU\x9bV\x97\xaf\x91%U\x86\xe4\
+\xdc@\xab]m\x89D*\xd1Z\x9d\xa8kw\xa92\
+\xb4>MSuY\xa36\xf7\xb9\xb6TuP\x9a,\
+\xab\x0a[hv'\xcb3?\xb9r\x1e&\xc9\x5c\xf2\
+T\xe6{\x87\x0bW)\xa2{\x9a\xf9\xd8\x03\xa6\x7f\xb2\
+\xf9$%)Q9\xcc\xf6\xd0*\x16\xbe$K>#\
+\x0b?!s(\x0d\x075\x99-,\xa5\xe4\x09\x9c\x86\
+\xf0\xfba2>\x029\xaeCM\xe9\xf0\xee\xf2\x94\x93\
+\xde6\xf2\xdb\x9d\xa8\xc1]U\x13u7\xa7\xa2M\xcd\
+\xa8)3\xe5\x1e\x1aM\xe6X\xa4?\xcb!sDf\
+{gN/\xb1\xe7\x92;2\x87\x1c\xcd\x1c\xbf\x1e/\
+\xd4W\xaa\x94(U\xb8ae\xaa\xd0\xa5\xbe\xa7wk\
+\x14 \x87\x90Px\xb7\xcb*WpNI\x83\xba\x81\
+\x1a8\xb8\x00\xda\x1e\x8dX(&\x8a\x80\x1c\xaa\x11Q\
+e\xa1\xa2\xadl{]\x1b$\x92\xd8J\x07%5\x10\
+w\xbd\xb1l\xdb&J\xc5JP(t\xa8\xa1\xec5\
+\xae\xb6\xcd\x03\xd7HR+\xad\xc0\xe3\x9a\xe0\x9a\xfeM\
+\x14\xbev\x8d\xb2\x86v\xfa\xd5-\x1c\xbb=bE\x12\
+\x16\x90\xa2\xf2\xe8/^:\x0d\x0bH5Dk\x85\xc2\
+\xd6D*\xd5^\x93\xac\x12\x90Y\x0c\xfddt\xa2\xcb\
+\x05\xc3\x8f\xa5Wb\xf3\xaeP)\xd69\xa9A+\x8b\
+&\xc8m\x11m\x8f\xd0\xcb\x85\x85B\x0c\xff\xd0j\xaf\
+U\xda\xce\xa5\x00\xba\xb5\xb4\xf4(\xe9\xbbi]\x82\xce\
+\x8c }\xd5\x81\xf4moi\x09&\x07z\xcd@\xf6\
+J\xd8p\xa2 \x96a\x94\xa9d\xc7\xf9\x9c]gr\
+/\x90\xbf;6\xd7U\xba*\xe35m\xd3\xb9B\x07\
+\x0e\x061L\xb0\xaa\x1a\x87\xbc\x82\x1fZ\xaa\x18\xad\xeb\
+\xac\xebq\xf7PX\x81\xc7\xb2\xd9\xec\x82\xef\xb7\xc4:\
+\x9b\xda\xe3\x94\xb6\x8a\x0bj\xc1\x90d(\xf6\xe1\xd5\xde\
+2OU\x80\x92\xdc.\xa4x\xb7\x92%\xcd\xe4\xc54\
+\xd2\x17qH\x9e\x08\xc1\xde\xd5\xb4\xab\x07\x0bShY\
+\x0c(\x12_%\xf9k\xebX\xb7'\x14\xf6\x0aH\x88\
+\x96\xef\x9e\xd9\xb5\x9a\x92aG1\xab\xa2\x90{\xb3\xb6\
+\x91\xbd\xf9\xd1\x07\x1e\x9c\xb2s\xde\xc9\x97\x84\xb3\x0b\xf6\
+\xbe\xf2\x94\xf3\xa1gW\xce\xe1\x913\x12\x88K\x0a_\
+Ri\x0a\xc6f\x95\x0a\xb9\xcb\xb4:v\xca\x8cY#\
+\x04\x84\x8f\x1a\xe47\x9aS\x97T\x84\xeb\xaa\x83U,\
+\xfa\xd52\xc4mA\x01\xce\x89\xb0\x19\x87f*e\x9b\
+\xc0:\xefH\x1aI-\xd5\xbfZ\x0a\x00\x82\xfe\xfa\x9f\
+nK\xf3\xaf\x83\x9ev[^\xe1P\xe7\xfe]M\xad\
+Z\x07G\xf9\x10\xec*\xf3\x00\xee\xef\xc0]g\x8f(\
+;X\xf4\x93\xa3r\x07\xd7\x1c\xe7\xaa\xb3\x89Z\x894\
+Y\xc9\x069\x94E\x04\x1dO\xc1\xa5\xb4LU\x94!\
+\xf9E\x1a-\xa0E%\xe4S\xd9\x0e\x1a\x02\xa8\xafq\
+W\x17\x16\xd4\xa0\x9a\xad\xa9\xa2\xc2W\x88\x01\x14\xaa\xaf\
+\xd6\xca\xd99%\x1bKV\x0bK\xe7\x97>\xfc\xb8\xb3\
+0\xe0[@#YQd\xa4\xc3K]Ok\xaa\xaa\
++Z\xf9>4?d\xe6\x95\x00\x0a\x10\xd3\xf4\xab\xe5\
+\x9c\x82\xfcj\x8a\x0b\xaa*\x85\xbah\x88T\xc0+\xe8\
+EZF~\x05\xd0\x9a\x82\xa1\xd0j|\xb7\x9el\xef\
+d\x13I\x0fR\xb8@\x1dF$d\xfe\xd1\xf1\xe1{\
+\xef~wy\xf1\xb1g\xa7N\x9fy\x1b*\xdfW\xbe\
+\xa7\xae\x83B\xd9\xeci\xf6\xc4\x90N\xeb\x08b\xc7~\
++\xca\xfc\xe2@\x1d\xe6\x9c\xfd\x99\xdf'\xeb\x9b\x90C\
+\x96$Q\x16\xea\xab\x90\x13RBKAX\xf9%\xa4\
+\xca*\xe2K9X\x14\x04\x87\x8e\xa9-\x08\xcb~\xb7\
+\xac\xf8x\x8f\x12\x10\xfdN\xd4\xbdc\xf7;\xd1v\xaa\
+\x85S%\x16#I\xd8$7\xac-c\xabkc\xcd\
+\x15\x02\x0a\xca>A\x0a\xca\x22\xcc}!\x04\x06@u\
+\x15Q\xb0p\x14\xf1c\x11\x056\xc18A\x8c\xca\x81\
+\x08d+\xfe\x12\xcd\x5c\xa2\xac\xe2\xdd\x12\x80 \x1e\xf9\
+#IO\x13[(6\xf5Ii\x96\xdcp\xf1\xf3\x7f\
+\x17P\xb6%\x0f\x5c\x9a\xbeVGQC]uM\xac\
+>\x85\x8cl\x90N\x81M\x92ac\x90\xa1\xa8HW\
+\x83\xa8\x12\xaf+wJ\xb2\x0c\x11\x84\x00Y\x89\x01\xa7\
+\x14\xa3\xe1\xd7\xbb\xb94@\x02dl\x865*\x01\xc9\
+\x09\xb0G\x86\x1cU\xd1P\x0d\xc3\xbb\xd6\x90\xa6\x86Q\
+\xc4\xeaGA\xd8\xf1E\xc3F\x97\x0br\x83\x5c/!\
+\xa5\xe7\x01\x1aM\x02\xf2\x93\x1d\xb7\xba\xd1\x8d\x00.*\
+PIjE\xd1\xc37 \x0b\x10\xd2!\x96[,w\
+Z\x1e\xb0<h\x19g\x99hy\xc22\xc9\xf2\xa4e\
+\xb2\xe5)\xcb\xd3\x96g,S,\xd3,\xd3-\xcfY\
+fXf[\xe6X\x9e\xb7\xcc\xb5\xcc\xb3\xcc\xb7,\xb4\
+|m\xe1\xb2\x5cv\xbae\xa6eE\xce\xefr&\xe7\
+l\x1cT\x9c{C\xee\xe8\xdc\xcf\x07\xdb\x07\x7f>\xf8\
+[+\xb6-\xc9\x1b\x99W\x92\xf7>\xf5#\xf5k>\
+\xca?\x9c\x7f\x99\xdeH\xab\xe8\x16;k\xbf\xd7\xfe<\
+y\x22x8\xf3\xe7\xc39\xf0\xf3\xd6\xc3\xb9\xc1\xc1\x19\
+\xe9\xe7\x19\xbfH6\xa2\x99\xef:\xccGI\xc4J\xbe\
+\xb5\x997\x99o9H\xf6\xc3/\xe1\xbc_l/\x0d\
+\xfcN\x1e5\xe1\xb3-s\x14>\x99\x113\xfb\xa9\xd0\
+\x9c_hN\x95\xae\xd5\x8a3\x8e\xb2\xfaJWU\xbc\
+:[*\xbeU\x9ak\xa2\x9e49\x90\x22\xad\x89@\
+s\xd1\xe5\x93\xe4\x9e\x0b\x0b/3M\x16RK\xbe\x00\
+\xc4\x0f\x9d\x1cS\x87\xd2\xef\xbd\xfd\xb1\xf3\xd3y\xef\x99\
+\xbf\x9d;%\xe0_\xc1g\x09\x0c\xe0t\x81y\xd8\xb2\
+C\xb66j\x01\xb7\x10\x9c\x124\x99\xe03\xc1e\xd8\
+\x5c\xb3\xca>\xdc-\x8b@^\x98y\x16 \x06\xd9\xf7\
+\xfb,\xcd4\xbaqW\x17nM\xf4(\x09\x96\x5cG\
+,\x07\x89\xfd\xd3i\x1f<\x16\x17`4\x09\xfb\xb1\x17\
+S3\xc9V\xc7\x87\x87\x96\xdc?\xea\xe99\xcf\x06|\
+X\x13\x85\xee\x10\x19\xad_\xe0\x1bqHO\xb2\xf0\x08\
+\xc2\xff2\xdda\x0e\x9a\xb8\xfcw5~#\xd2\xa2\x93\
+\x0a\xbc\x8d\xd7C\xb1`#{\xf5\xc4\x93\x8f\x08\x857\
+\xc9M\x99\x7f\x8f\xe7\x5c\xf9(\xf7f\xaep\x1b]\xd4\
+\x99\xd0\xdf'\xb7\xbc\xcb\xf4L\x84\x19x~\x04\x98\x80\
+%\xb5\x98\xe9y\x89c\xb6\xce\xe3\x98U\xf1\xdbji\
+\xa6\xa7\x91+|\x0fn\xfcCk\x11y\xe0\xec3\xa7\
+\x98\xb3\x99\xeb3\x19\x07@\x8a\x00_\xb7\x5c4\x7fc\
+\xf2\xeb\xeb\xec7\xfb\x159 \x04L\x9bU6 m\
+\xb6\x02\xd6\xd9\xf1\xb5\x95\xb9\xaa\x85C\x80\x83\x9b\xf5\x83\
+j\x9b\xa2NT\xcdq\xb8\x84b\xce.\xd3\xcc\xf5@\
+\xe2$\xb9\x92[\x09{\x90\xa5\xd7-\xb8\x13o\xdb\xe9\
+\xe6\xd4`P\xd3e`\x00\xcb\xafq\xa3\xa8\x93\xb9\xba\
+\xd5 \x8bO8\xf1>\x8dL\xd0O\xb6\xe3\xb7\x81\xbb\
+\xc6dh\xc9\x9e\xfe\x07\x86\xca\xd9\x82\xcejaM\x03\
+`\xb1[\xee\xcc\x9csm\x89\x17e\x96'\x8e\xfd\x91\
+\xd9O&\xb6;\xe4\x84\x9cT\x1a\xab\x09\xb3\x86|\x14\
+\xf8=\x15\xd6\xf5\x10\xe6w\x1bVM\x0d\x19x\x0eg\
+>b[\xc3\x050P\xd6\xce@v\xfd\xd8_\xdcl\
+\xa2C\xbf\xd8[FQ\x01(\xd8:\xdbj\xdb\x0b\x88\
+\xc8Hv\x9cy\x87lJ\x9f\xd7S\xa1vc+e\
+\xd8\xb4uz\x99\xeai\xbe\xff\x80\xb9\xbce\x1c%a\
+U\xd6\xd9\x0e\xdbN\x1c\xc2F:}\xfeJfT\xf3\
+\xa7j\x08\xf8\xb1\xda\x1a\xea\x01\xc1\xe0\x1a\xb6\xbd\x09\xb0\
+-\xf0[M\xd8\xeb\x0f\x03\x19\x91k\x8bk\xcd\xe1+\
+\xcd\xa8\xcb\x1c\x22\xbb!\xe9\x1a(\xc9&\xc5\xe4F\xb9\
+\x91b2\x9b\x083\x9b|Q\xfb9`\x0e\xe0\xd2\x0d\
+A(B\x1beI\x16+J\xcd\x1bg\x9a\x91\xf5\xe6\
+u\xc0\xed%7d\xaa\x9b*|\x94+j;G\x84\
+\x8f\xa6\x1ec\xded\x0e\xdd\x09\xf4\xe7\x01\x8e\xa9\xba\x85\
+f\x0e\x0d\xa3\x0b\x8f\x04\x92\x99\xe1G\xc9\xd4D\xc2U\
+t\xe0\x12\x19y\x8e\xf9\xfc\xbf\x88\xdb\x81\xe3\xc1\x18\x06\
+H\xf3u\x94\xbc\x1erF\x145\x1b\x97\x7f6\xf3k\
+\xad\xa5\x1c\x04\xb1.\xecT\xac\xba.\xd7a\x01\xd7\x05\
+\xcd\xa9O:oV\xcd\xc9\xcax^\x8aJ\x1aN\xd2\
+|\xe7a=\x0c\xb0)P\xbc6\xddW\xb6\x97\xfd\xf3\
+\x87\x10\xbbO\xfe\xbe\xec\xcb\xa7\x9e]4l\x5c\x99\xc0\
+|.\xba\xe5Z\xa9\x8e:o\x96;V\xaf\xda}\xce\
+#\x00\x9c\x8b\x06\xc3\xc1\x10\x0e\x85\xec\xc3I^\xfa\x10\
+\xe1\x0f\xb2;S\x93\x1e3\xc7\xae\xb8o\x96PX\xe3\
+\xed\xcd\x8cO{\x5cE}\x97\xc9\x03q\xe6J\x1f\x99\
+\xed0o<>\xf5\xab\xee\x84\xa1E\xf8\x07if\x7f\
+\xe0\x8fV\x0d\xf0,\xe6\x99+\xeb\xb9\xa3\xde\x83\xae\xf2\
+\xcc\xac4y&\x91\x82\x9b\xce\x93\xd1\x97&\xbd\xc3l\
+\x07V\xbe\xe8\xe7\xdb\x1c.:\x00\xd0Y8(YC\
+Z\xc0'\xe0\xe5\xc11\xf8%\x5c\x8ekq\x9d$\x0f\
+\x95Bb8\x10\xa2\x9ak]\xf1\xf5\xec\x1d\xcf\x99\xd7\
+\x99\x8f\x8f\xd8\xf5\xf8I\x81\xd9\xfe\xd1\x9e\x7f\xff\xaeU\
+\xd0\x1a\xb5&\xadYW\x86*5Jy\xa5\x93Yk\
+\xde\x95\xe7\x05R\x0a\x19\xd7\x14\xecH\xa5\x83\xcd\xe3\xe8\
+)\xb4\xae\xe8\x01,\xac\x8ae\xc5\x02\x1cvFT\xb2\
+\x08\xef\xe7\x99\x1d\xdaWQr0\xe4\x84\xaf\x81\xc0=\
+\xfe\xdfC\x1c\xcb*/\x7fF\xee\xdf\xf1\xc7c\xaf\xb7\
+M]\x1c\x12p\x03\xf6\x04=A\xbf\xe2\xf3\xd9\x87\x9b\
+7U.5s_d\x0b\x17p9}\x1f\x93\xeb\xcf\
+\xe5\xdeL\x17\x8e\xbd\xa67$\xc8\xcaT\xd1\xc7\xe7\xa6\
+\xbe\xc3\xec\x85\x88\xbe%3\xc7A,8\xfd\xd3Q6\
+\x12\x92@\x15\xd0$\xcd\xa7{#\x15\x8d\x1b\xa2\x9b(\
+\x05\x00\x19\xa8\x02!M\x17\x02\xdfXuE\xcd\x92\xe5\
+\xfaZ\xcd\xc52WF<o\x0e6\xf3$\x81\xf9x\
+\xa1b\x05\x943 \x0b\x94p\x1bh\xfe=\xd5:@\
+\xe0\x979\xf1\xfc\xd0(\xba\xb7\xeb\x9f\xfc\xfd\x85\xff_\
+\x11\xd8\x8b\x9b52H=A\x0a\xa3CAX\xd2!\
+{\x0a{\xcd9\xa9\xcc\xff\xc4=\xcdE\xbe\x0b\xeb\xce\
+\xcf<A\xd8\x8fK\xcf3\xbb\x99\xad;\xc9v\xc7\xa4\
+7\x17\xbe]\xcf3=e\xee\xcd\xeeU5\x94O\x94\
+$\xafsS\xc8\x17\xf3\xf3q_\x87\xa7\xc3G1\xaf\
+\x999\x937W\xbe\xe8\x9c\xf1\xfe\xf2?\x11\xdb\xf7\xef\
+}v\xfe\xe9\xf4\x98V\x9e91+\xfer,\xed\x8c\
+7E\xfa\x92|:\x9a0\x92:u\xb2\xf9\xc4\xd1\x1f\
+\x9c\xbb\xeb\xdf\xd8\xb8\x85\xff\xb8\xc9\xdaC\x87t\xa7Z\
+J\xf3c\x15\xab\xc7\x17T\xbd\x02\xb3[\xabqe\x15\
+\x90\xad\xf7\xce|\xf0n\x81\xdcdR\x8e\xa5k\x0f_\
+\xf9\xac\xfd\xe2\x9b\xfb\xdb\xa7=>l\xc3\xb2\xa5\x02\xf3\
+\x9a\xdf\xfc\xce1ka\xcf\x89\xa3\xbd\xdbvw\x0b\xb1\
+\xb0\x16\x8c\xca\xd4\xf9\xea\x0f6MwN\x9f\xb9\xf49\
+\xbe\xf0s\xd8\xf8\x9b\xde%\xcf&![\x8e_~\xfc\
+\x04\x99\xf0\x1e\xf3)\xf3\xa7\xd0\xcfw8\xb2y\x11\xd0\
+\x84\xdd\x925\xac\xfa|\xc2blnX\x03?\x0c@\
+_\x8a\x08]\x9c\xb9\xb4\xf6ZQ\x1f\x90 \x9a\xb2\x5c\
+\x1a4G\x00\xae\x1d\x9c\xf0j\x1f\x87A@sv\xea\
+\xef\x19}\xfcO\xcdG\xc8\xe8l\xec?h^\xbf@\
+\x19)\xbb\x04\xc5\xa3\xc0K\xd9\x00z\xe3@Sh\x06\
+9d{o\x8b\x92\xbaF\xc4WE}jP\xc7\xcd\
+\xc5Z_\x84\xd8N\x83x\xb0\xf9\xcb\xe7\x1e[h\x8e\
+\x9aV\xc5\xcb\x0db\xb5\xec\x86\xd2\xd1\x84[\xa0`~\
+\xaa_m$W\x8dl\xecUr\x85\xcfq_^.\
+:\xf4\xe5\xa4\xcbO\xbd\x03/f\xff\x1f3\xff\xe1(\
+\xad\xaa,\xdf\xdc^\xd3\xd6\xd6\x92jo\xabi\xde\x04\
+1\xf1\x909\xee\x1e\x9a\xd9}+\xc7\xec}\x84+4\
+o\x94c?\x17%\x92\xae\xa2\xf7>fv1g#\
+?\xdf\xee(\x070\x03\xf1\xf6\x9a\x0c\xc9\x04K\xc7/\
+h\xe6\xb4i\xb3T\xd3\xf7\xbf\xc8s\xd5\xc0\xcaEi\
+\x07\xdd\x8a\xd3\xb8\xbf7\xa5\xd0\xaff\xd3B\xd6@\xc6\
+1\x06d\x1cf\x17\xfe[\x84\xac\x89:C\x8a\x06S\
+#\xc7\xe5Xf\xd8\xbb\xcb\xe3E\x1f\x5c\x98|\x8c<\
+r\x82\x8c=\xc5\x5c\xca\x9c\x07\xa1D\xe4\x12\xf1(\x19\
+\xfa\xb1\x930\xe5_\xcc|l\xb19tJ5\x1f\xe0\
+\xeaa\x99b\x9f\x8d\xd8*\xbe\x98\xcd3\xa7\xc7\xbfl\
+\xde9\xb9\x0a\x14\x0c\x10O<\x22\x1e\x1a\x83z\x16\x85\
+\x97\xa0\x1d\x8f\x90\x11\xe1\xaczR\xc91\xaf\x9b\xb9e\
+\xd6\xec\xec\x03\xba\xd0o\x03\xa5\xce\x07\xf5l\xbdz\xcf\
+\x02's\x1aOS\xcd!\xeb\xb3:\xd4\x00t\xce\xf6\
+\xe3 \x08Qi\xdc\xdb\x93V\xba\xfe\xa5\x9f\xc0\xca\xb5\
+\xb0\xb3U;\xa9\xf7\xf3\x7fI\xec'c\x8e\xb0{\x9a\
+F\x9bC\x96\x06oV*\x05\xc5\xad\x80\x86R\xea\xc9\
+\xa25\xd0\xb1\xb2\x0aJ\xff\x96V\xa5\xcd~\xab\x8b\x83\
+6\xf5lV\x81\xf1\x82\xf6\x14s\xc6\xd5\xf7\x8d\xd7y\
+B'\xde 7\x1eew\xc5\x1f0\xaf[\xaa\x0c\x87\
+w\x0f\xc5_\x0e\xc8\xa5\x0d\x03\x80\xaf\x9d\xeb\x03\x01\xa6\
+\xe5\xda\xe8\x85\xff6\x10\x8d9\x1f\x9e'cN\xe5\xde\
+\xc1\x15.\xa1s\xfa\xa0\x84_\xcc\xbd\x8d.\x5c\x0f\xdf\
+\x8d8Rt\xea\xe2\xe4c\xccUr=\xa9r\xc4\x82\
+Q\x1c\xe1\xb5\xb7BD\x089\x0dE\xf7\xca\xbc\x99[\
+jU\x07dY~\xa7\xed_\xd2\xd1(<\x13:1\
+\x9e\x1a4opg\xd7\x9f\xa6\xffW>\x8a\x82\xf0\xbb\
+}\xcfn\xa5\x19& \x85da6Ha8\xbb\xfe\
+\x94vJ\xef\xe1\x89%\xf6\x06y\xf4\x1d6j\x04|\
+\xba\x10\xad\x8c\x94G*\xa0\xf0d\xe5H5\xac\x19B\
+\xe0\xafV?\xb4\x7f\xdd\xefU=,su\xd2+&\
+3\xa1F\x90A\xddR\xbcT\xe1+\xde\x96\xcc\xa4V\
+\xaf\xabh\xfb\xc9\xbf\xbf\xcd\x5c\xb9\x9fc\xf6\xcf\x01a\
+\xbb\x8d.\x9c\xe6\xed\xce\x8c\xe8\xa9J\x16\x9d:?\xef\
+\x14\xb3\x8b\xc43O8T\xc0\x0f\xcd\x9c\xc0\xf4\x9aC\
+Tug\xe8\x03\xbd\xbf\x18T^9P\xe1\xf1\xbb\xf9\
+\x1a\x9f\xe4\x93\xfd\x14sJ\xdc\xe4\x99/\xad\x87\xd5,\
+\xb4\xb9E\xd1/\x09\xb2(\xfb\x82\x12p\xd9`\xd0>\
+\xfc\x03l\xf5N\xf0\x9a\xd6\xd9N\xf3\x96=/\x9fK\
+E\xb0\x1a\xe5;\xf5\xceD<L\xbdB\x03\xbd3\xa0\
+)\xd9\x87Wzk\x03\x1e\x99\x92\xbd\x9e\xa0\x8f}y\
+\xe3\x1er\xb3\xc0\xec\xba\xa4]\x0a]\xe4\x0b\x9f\xa7\x8b\
+\x0e\x9e&\xf7\x9ff4\xa6q4\xc7\xf4\xdc\xce1\xd3\
+GpL\xe3$\xae\xb0]\xdeQ[\x9e\x99\x11/\xf2\
+\x93\x7f\x8c\xb9\xcal`zIUf\x91\x03\x14,5\
+\x00d<\x10\x96uQ\xa9/v\x8f.1\xa7\x95?\
+,y\xc4\xda\x81\x1e/7Jq9R\xf9i\x09Y\
+\xe9;\xa3\x84a\x9djOh(\x08d:\xc8\xe8\xe6\
+]6\xa83X\xdcDw\xf8B\xd0\xfa\x01\x93t\xde\
+r\xca\x8c\xb5N\xcf\xc2\x0cEc\xd3\xb6\xadXW\x8d\
+\xa6\xae3\x9f\x91\xfe\xc41-\xae\x1b!-\x9d\x85\x19\
+\x06\x88kc\xe9B\xb2^\xde\xf9kN,\xcb\xfa\xea\
+\x9b\x8a\x8c\xcc\xbe\xb1\xbf\x87\x1d\x1d\xbf\xdd\x01\xc0\x09\xb0\
+E\xfd\x97\x9b\xc8\xb2\xc0i*\xa2\xaaa\x95\xef\x0de\
+\xc1PV\xbf7\xef\x85\x81\xa5\xac\xbb\xd0\xee\x07\x80\x97\
+\x1d\xb8y\xcc\xebfw\xfa\x99\x81\x81U\xb6\xcd\xd6\x1b\
+\xd2\xa2\x9a\xd0r\xfc\x00\xb9'\xf9\x8e\x165Z\xb4\x04\
+\xa5\xd9\xb4*\xadV\xf5\xa6\x1e\xef7\x87\xb5<G\x89\
+\x03\x93l\xb1\xf5aC\x05=\x88\xe9M\xbf}\x96\x1c\
+n<\xa6\xc6\xf4HTK\x82\x02\x0f\x85\x1b\x84\xbe!\
+q\x1a\x86bN\xf5\x80\xd6o\x04\x14wq\xc3\xd8\xf5\
+\xe6\xd4\xea1\x8aG\xaa\x95\xae!!)\xa1D*?\
+[L\xd6\xd6\x9e\xa7\xa0\xeb\x83\xc2\x9bEA\x9b\x81?\
+I\xd5\xebL\xb4\xdc\x1c\xe5\x9aD1\xbb`_\xabe\
+\x0fU\xe8\xe1\x8a\xaa3\xd4\x83_1g\x99S\xb7\xd2\
+L\xef\x04\x1a\xfet\xf2\xed\x22Rp\xe4\xe8Q\xffW\
+\xcc\xe7\xcc\xa7\xf0\xe77'\xd0\xe6bbsT>\xc6\
+\x01A\xac\x03\x9c2\x8d+\xeb\xc8\xfc\xd2dN\x88\x10\
+\xa6\xf5\xc3\x0e\x9b9'\x91\xb7\xa93\xf3K\xdc|\x22\
+F\xaek\xfb\xa8\x95\xca\xe7\xe9\xdc\xc6\x11y/\xdb\xf3\
+y\xe5:\x8bM\xb0\xd3I\xfa\x02J\xda\xed\x17\xec\x05\
+d\xf5o\xc8'\x8e3\xcc5\x8b\xee\x5c\xce-9\xe1\
+\x9cw\x07\xcd\x18\x14\x1c\xf4\xce\xa0\x1fr\xf7\x0d.\x1f\
+\xfc?\xd6\x1a\xab\xdb\x1a\xb7\xee\xb3\x1e\xb2\xbee\xfd\xde\
+\x96k\x9be\x9bgk\xb7u\xdb\xb6\xdav\xd8>\xca\
+Cyw\xe4-\xc9[\x91\xb7)\xaf>oW\xde{\
+y\xff\x99\xf7\xdf\xd4 j4\xf5$\x05:\x0c\xf5\x06\
+u\x90:J]\xa0~\xa0\xfe\x9e\xef\xcc\xe7\x07\xac\xbb\
+;\xf3\x9f\xc9\x9f\x9b\xbf(\xbf,?\x94\xdf\x9c\x7f\x00\
+(\xd2\xc5\xfcO\xf2\xffF\x0f\xa2\x11]D\xdf@;\
+i\x9e\xbe\x93\xbe\x97\x9eL\xcf\xa2\xe7\xd1\xeb\xe8M\xb4\
+\x8bV\xe88\x9d\xa6\xdb\xe9nz\x1f}\x80~\x9f>\
+M_\xa0/\x83\xa9\xf7'\xfa\x1f\x08\xa1\xdf \x16\xdd\
+\x82\xee@\xf7\xa0G\x07l\xbd\xd9h\x1eZ\x84V\xa3\
+\xf5\xa8\x06y\x90\x84B(\x8eZP\x07\xda\x82\xfa\xd1\
+\x1e\xb4\x1f,\xbew\xd0Yt\x09}\x86\xae\xa2\x7fC\
+\xdf\xa2?\xa3\xbf\xa0\xbf\xa2\x7f\xd8mv\xbb\xfd:\xbb\
+\xc3^<`\xf6\x0d\xb7\xdfa\xbf\xc7>\xce\xfe\x84}\
+\x9a}\xbe\xfd%\xfb2\xfb\x9a=b[U\xac!E\
+\xdeL\x92\x9et\xd1\xe5O\x99\xf1\xe4\xaf?8t\xec\
+7\xa4\xa78wy\xfd\xe6\xfa\xf2\x80\xc7\x17p\xcb\x94\
+\xff\xe5\x17\xe5\x97Y\x9f\xac\xc5\x80\xcd\x94\xe0]\x02$\
+J\x14\xf3\x07\xb5\xf3j[\x1f\xadG\x0c\xd0[\xca'\
+j\xeas\x82\xd2k\x90\xf1\xc6G\x94\x8e\xd5\x08p\x89\
+\x13\x81-\x80\xa2\xc3\xb2\xe6\x8d\x96\xc66\xcd\x00\xa4\xa0\
+\x0b\xf2\x8f\xd64\x17\xe0\xdd\x0bds\xe4\x865\xb8\x92\
+M\xd0\xab\xc1\x8b\x8b\xcaj\x00|0\xb5,h\xce\xc3\
+\xcb(\xe6\x05p\xc2J\xe5\xb5<T\x92Jn\x95\xd7\
+:`\xfe1\xe3q\xe7V\xdc\xcd~zDQ\xfa\x05\
+&\xa5lK\x0030@\xc6\x00\x1a\x8e{\xd5Ki\
+\xe7\xf7\xae\xaf\x9f\x98\xbdp\xfd\xa3/\xf0\x01)\xe2\xd5\
+X<\x93\x13\x0e\xf6\xef\xdc\xd6\xc7\xeeN-\x9f\x10\x16\
+p\x8d\xb6\x16\x97Q\xa3\xcc\xf5\x8e\xb5\xae\xd7\xce_\xee\
+8\xb5\xef\xf5\xf6\x05\x15\x86\xa0B\x9d\x0c@\x05\xf6@\
+`\x8f\xabX\xb7`9X\x88GH\xd2\xf1\x97\xe5?\
+>v\xd3\x22s\x94\x99c\xdex\xe0\xa9\xaf;\xd3\xba\
+\xd1\xc8wFw\xb5\xa7\xe2P\xb7T\xa7.\x86+h\
+W]eC\xb5\x9f\x12\x1b\xaa\xc5\x0av\xee\xba\x93\x9f\
+\xfb\x05%\xa9\xf4\xb6:\x0fH\x7f\xc3]\x11\xaaQ\x8d\
+DRN\xb3\x90Lu\xbc\x111m/\x94y\xfd\x0d\
+\xa2P\x13\x98\xef\x7fE\xa7\xc8\x10\xbd\xf7\x93\xdd,\x0a\
+6(\xb5Ao\xb0\x0c/\xa9\xb6\x0f\x17\xa1_\xf3\xb1\
+\x10\x0d\xcaZ\xd3?\xdd\x10\x1d\xc4\x865\x8dV\xaf\xc8\
+\x85\x9d-\xda\x05u\x07\x8fH5\x149 N*$\
+0\x149\xc5\xc8\x169\xdf\xf8e\xe6\x13\x9b\x1f\x92<\
+R\x9dX\x9f%2q\xa9I\x8eT|^B\xe66\
+|\xa8D4`^[\xa0H\x81\x00>\x90\xfe#\xe3\
+4\xb8\xa1\x1d>\x03\x9cB\xa84\xdd\xe6\xa0\xd3f\xa0\
+\xe7q\xbd6\x18\x80\xb2\xfel\xd9\xec\xd9\xeb\xd8\x06\x9f\
+\xd1\xe4\x156\xee\xb1be9-\xf9|\xcfrmc\
+\xac\x015\x04\xa2\xf7\xe5\x0f\xc8\xf5_l\x15\x10y\xc9\
+\xeb \xb6\xcf\x08\x22e\xe4\xb1y\x846\xad\xe6\xf5\x93\
+\xcc{\xcd\xb9\xe6\xdc\xd3\xf7\xff\x87\xd0\xd8\xecxn\xc9\
+Od\x02\x99\xb0\x8b\xdcs\xe5B\x97\xc9\x99\xb7\x98/\
+\x94\x98\x05O\xc1\xad\xe3\xe0\xd6\xc2\x83d\x18)\x22\x85\
+\x0b\xbex\xc0\xcc\x9bg\x0a\xa6\xc3,8\xf8\xbb\xabB\
+K\xca\xf1\xe2\x9aOH\x01\xc9o%\xf6\x93\x87\xba\x1f\
+7\xaf7\xf3j\xcc\x82i\x02\xaa\x98\xeb\xd0k\xb5:\
+\xd5\xdd:f\x87yg\xd3\xf3+\x95\xc7\xf4\x15\x9aX\
+B\xe3P\xf3\x99^r]\xeb\xef\xd5\x88\x96\x80\xca\x88\
+.\x99\x8f\x94\x93\x19{276\xa5\x5c\x9d\xae\xa2C\
+\x1f\x901\x1f1\xa7\x99o\xd2\x99\xe9\x0e\xb9\x14\x94\x02\
+h\xa1`\x22Et\xa9V\x16\xc4e^\x93\x99\xe2\x9c\
+.\x9acTs\x04\xbf\x81\x8ew\x86\x22\x98\xd7\x8e\xe8\
+$G}\x8bZ\x1fkq\xb7\xb2\xc7v]&\xb9=\
+@N\xd4\xb8\xdaH\xe9+l\xca\xdc\xa0\x89D'x\
+w\xe0c\x85\xe8\xd6\xd6`\xc2~+\x04\x88\xec\xa7\x01\
+w\x5c3\xb1\xc8\xe2<\xe6\xd2IL\x86\xb6\x83Q\x81\
+\xfd|\x9d\xad\xb4\xbe\xa1Z\x11|\x8a\xbb\xce)O\xaa\
+\xbc\xab\xeey\xea\xa9\x9au\x8f/eWT\x1f!\xf7\
+\x0b\xcc\xe9\x83\x11r3N\xf3\x18r\x08\x04\xfe\xc2\xd1\
+\xe4\x5c\xcf\xe6\x18\xb9;u\xa1\xa7\xa8\xed\xe0W\x07\x16\
+\xbf\xc6T\x91\xd1\x99\x1b\x1c\x8a\x14\xf4H\xc0\x8f<N\
+Q\x0db>\x02\xdc\xa8\xa9)b\xbfy2\x07\xb26\
+h\xcb!k\xa0\x04\x1c\x9f&u\x0fn\xe5S\xea\x81\
+F\xe7\xf1\xba\xb7^X\xbe\xa6\xea\xa5\xb5\xbc(g\x85\
+D \x92\x02s\xa8\xb7\xbd\xad\xb9\x85mo\xaaz\xd9\
+\x10\xb0\x07\xbb\xbcNY\xd9\x02\xf8C+\x8ex\xea\xa2\
+\xe5\xec\xdc\x0d\xb3\x16-\xe8Y\xb7M`\xde\xdc\xd5\xd1\
+\xd7\xd9(0U\xaa\xa1\x86T\x83b\x0e\xcdZ\xec\xa8\
+\xack\xdd{ \xd1\xdf\xd3\x91(\xaf\x06n%\xaa\x01\
+\xd0\xbe\x80\x5c\x05\xf8\xb5~\xd7K\xeb\xd9\xc2{I]\
+\x9a\xfc.A\x86\xb7\x17\x91[\x8f\x94\x1cez\x99\xbf\
+\x90\x9c\xcc\x04\xa8;!\xc8bjwc\xff\x8e\xdd\xce\
+\xfd\xabw\xcc.Y[\xb6\xb1\x1e\x928\xe4\x81$\x86\
+\xb9\xb57\xb5\xa5\xba\xd9\xfet\xe9\xea\xc5\x9bWN\xf3\
+\x08\xf0\xda\x04\xe6[\x8f\x0a\xdb\xfd\xa1\xdc\xb3x\xa9s\
+\xce\x8a\xd2%\x15\x9bC\xd1z\x1e\xcb\xcbiYrK\
+\x9a\xe0Nt{\xba\xd9\xd3\xc7^\xfb`\xdf\xfa\x1d\xf3\
+`\xb6\x7f\x01\xba\x80E\xb6\xf0N\xe2M\x91\xb3\xdd9\
+\xe4\xb6\xb7r\xdf!QG\xc8\x88\x86\x8d\x10\xf5\xf6\xdb\
+g\xbf\xf9\xdcy\xe2\xd5\xdd\xf3JV\x96\xaf\xac\xca\xd6\
+\x90\x06\xd8\x1a\xa8!]\x89\xb6t\x17\xbb\xadc\xe3\xbc\
+\x87f\x8c\x9a\xf0\xb4 +AIvj~\xabO\xd3\
+\x83:{\xde\xf6\xf66%\xc4B\xdd\xd3\xc0\xb59a\
+\xd5\xc0\xb5Q\x06\x5c\x9b\xf2\x95R@R\x02rq`\
+\xe3\xbc,<V\xfcl\xe1}4\x06_\x86\xcbz-\
+\xc2.\xc5\x1a\x0e\x06\xc0\xb5^\xa3\x8d\x00\xd3\x1a\x91\xb6\
+\xccDGH\x17\xbdU\xd2\x0c\xb9B0\xb9\x9a\x12\xf3\
+\xf6\xe7\xd9\xd5U'\xc8\x1d\xc8\x0a\x9c\xe4>\x0e\x8d\xe3\
+0\x1aIz\xb7\xe7\xf4\x91\x09\xb9\xe4er\xca\x81\x17\
+\xd1\x0b\xe6)\xeat^\x14\xcb<\x1bh\xe1\xb0~>\
+\xf4\x86Nij\x93!\x14\xfe_q\xd7\xf7O\xa5\xab\
+\x0dw\xe1N\xf4A\xab#\x16\x8f\xb7\x18\xd1\xa3_~\
+G\xee>Ir(0\x22\xe0\x88\x83!G=I^\
+U@\x87q=\xa7\xccZ\xb8\x5c\xada\x03\x00\x8c\x15\
+\xc1}?\xcc \x22\xaa,\xb8hB\xff9p]a\
+\xdf\xd8\xc6\x93~q\x87\x80\xc0\x16\x90QO\xac+\xd1\
+\x1c\x1b\xa8\x8caI\xab\xa0k\xbc.O5\xc8\xf5\x0d\
+ur5\xbbh\xf11b\x7f\xbf\xe9\xfd\xa6~\xe1\xcd\
+T\xd7\xeb\xfd\x03\xdc\x19L'\xc9\xf0\xa9\xfe\xc6\xcd\xd1\
+\x8d\x8d\x1b)\x05\xe2\x14\xd4!\x1e=\x02\xb2*\x98\x08\
+<\xb2\xdf\xaa\xa2\xc9\x10\x83\x22\x07^DKO<\x99\
+\xeeh\xd9\xd84\x9dV\x07\xe4k\xaa\x96{\x95k\xfa\
+\xde\xaa\x89\x80\xf0\xe4\xa0\xcc\xd7m\xf0U\xd5\x95\x81U\
+&6(T\xa0\xcc-U\xb2\x0dR$\x1a\x12\xc0\x9c\
+z\xf7\xca\xee\x1f\xc9\xf5N\xf2\xd8\xf3\x84\x1ef\xe6O\
+6\xedf\x09_8\xb3\x1b\x5c\x81\x01\xca\x0e:\x11d\
+\x8b\xeb\xf5\xea\xdd\xbe4\x98\xdc\xa2\xe1e\x0b\xc7\x91s\
+)\xa2\xa6r\xba\x8e\xfcp$\x97\xd8\xc89\xc7\xa7\xdb\
+\xae^\xfax\xd5\xe1\x99\x8f\xbf:\xf6\xd1'\xb6.8\
+.4\xa5\x1c\xeb\x5c{/\x9c\x8b\x7f\xb4k[\xf3\xd2\
+\xc7'{\x9eY*\x14*%\x9c\x12D_\xc9M\xe4\
+\x95\x1er\xf1\xad\xa0\x0b\x91\xc5\x99\xffvT4\xf8\xaa\
+E\x01\x81\xd3\x05T\x04\xd6\xd4\xcdu\xb6%\x13\xcd\xe0\
+t%\xc1\xe9\xc2Y\xa7K\xbf\xe6t\x95\x81\xd3U}\
+\xcd\xe9\x02\xb3j\xe7\xd7\x17\x88\x9e|Ok\xd2\xc3a\
+\x00op\x18\x05\xf8_\xf6\x00\x059A\xc69>\x99\
+{t\xfaa~\xea\xd1M;\xdfr\x9e\xd9}\xe8\xdd\
+DB\x0a\x84\xf9PVw\x81\xa3\x0aM\x1bba\x1a\
+9\xda\xe9\x88;U\xc7\xd5\x821$\xcf\x06K\xb9?\
+s\xc5\x11p\xfb\xea|5\xb3\xcd|\x13\x99\x91\x89\xe6\
+\x8dTv\x0f\x15\xa7\x04\x96d\x80\xaf\x0f\x87\xe4H\xfb\
+6\xfc\xe1\x07\xfb\x94\x1e\x16\x9c:\x05 \xbd\xd0PY\
+\xbe\xa4|18u\xa0L\x87B\xc1\xc8@\xd4\x1b\x81\
+-@\x10\xfa,K>,%\x83~r\x92)\xfd\xc4\
+\xf9\xf1\xd9N\xf3F(\xf3L\xb9\xc9\xbc4\x03\x9c>\
+5\xb8\x8a\x13\xb6-\xe7<\xb8\x81\xf5\x88Y\xd7\xcfS\
+\xb5aiE\x0d\xed\xc8\xa6X\x7f\xe7\x1b\xbb\xe2\xad\xaa\
+\x11t\xd3\x94\xaf\x01.\xf1\x06\xb2\xce@\x03\x5cR\xe9\
+\xa2$)\xec\x0b:\x0b1\x08\xf7\x12\x88\xf6lY\xd5\
+\x9aU\x8a\xd0L\x874\xacc\xbe%\x14\x89 84\
+\xc3_\x13s\xef\xe3Zp?\xee\xe9\xdd\xa9t\x83-\
+%\xa1\xda\xb6\x0d%t7\x87\xd2\x99\xa9\x8eG\xf6\xbf\
+p\xe2\xc3\xf7N~\xb7\xbfjWY;\xdf\xef\xffB\
+\xee\xc6\xd3\xcd\x87~gnz\xc6\x9cL\x892\x8a\x8c\
+\xe7\x90\x0e\xbe\x1c\x1eK\xa3\xc0\xab4\x88\xfcPd|\
+\x8d\xe5QW\x14\xa6\x01\x9e(D\xbd\xe0\xfb\xf2\x9f\xf2\
+\x17\xba\xe8=PY\x9ey\xa2\xa9\xbe\x1f^q\x03W\
+N\xa3\xc4\xdc,\xed\x98I\xf7\xfa\xad1\xb8\xd3\xed\xc4\
+e\xba\xf9\xc22'jk\xdf\xd2\xe3j]'(5\
+\x8ed\xb4\xb6\xc2\xe5\xa9\xa9\xaeq\xc7[[b\xcd\xcd\
+Ba\xc0)\x97\xfbf\xd4\xcc\xa3\xc0\x12\x01cM\xe6\
+{6\xec]\xdaR\x01F)Xe\x9a\xaa\x01\x13p\
+\xb7\xac9\x8c\x14\xac eKR\x89\xb2!\xac\x82G\
+\x9c\x22\x83\xc1$\xf6\xea\x80\xda\xc0VP\xd0b8\xb3\
+\x11\xa3c\xce\x03\x069\xab~\xc7o\xcf3\xb0^o\
+\xd4\xe9\xdeb\xf4\x16\x003\x10<Y%\x18\x00\xdb\xe8\
+\xef\xde\xe6\xcc\x0f\xc9\x9c\x1dh\xb77\x95y:\x8d\xd4\
+U\x1c\xf8;*x\x19\x02\x8a\xd0\x86\x1f\x0a\x9f\x92\xa4\
+)$\xd1,\xf26\x13\xbdyO3\x09\xf4T6\x17\
+\xa5\x0f\x93\xdf\x1e\xee\xcd\xfe@\xf5\xa9T#X\xcbn\
+\xb0\x96\x0b\xbb\xb8\xa0\x82\xc8 s\x90\xe3\xd5\xd2}g\
+\xbe\xed;\xb8wW\xc7\x82g\x1e\x5c\xb3p\xa9\x80D\
+\x1c\x82\xd9\x05h\xb4X\x91\xf0\x16\xe8\x8a\xab88\x11\
+\xf5KKOS\x12e\xcf*\x85\xb8n\xbf5\xaah\
+>\xb4\xb1q:\x98T%YwQF\xd1t\xfb\xbe\
+\xb6\xd7\xf1\x16N\xf2s\x01\x98\x8a\x06\xaf\x05\xce$\xb4\
+\xbf\xdc\xba\x22\xbe\x09\x0e\xdf\x80P\xce\x16*np\xda\
+\x82\xe0j)\xe0\x8b\xc9\xe0\xb9\xfcMn\xd2\xcb\xbb\xca\
+\x7f\x1d\xb4h\xc0o\xdb\xe3jQ\xf0\x1aZ\x96E?\
+V\x1a+\xd0:Y\x90R4f\x0d\x03C\xb1n\x0b\
+!\x17%K\xa1\x81\xe0\x12c\xb4R\x8cT/\x8b\x1b\
+\x1a\x14$\xca\x01\x1f\x98p\x12XE\x1b\x1a\xea*6\
+\xb9:\xdc\x89\xf2\x1e\x19\xe8,X\xdfP\x8bt\xd9@\
+7\xb4\xd3`\x11#~\xb5\xc7\x8a\x0cp\x86\x83\xf0\x06\
+\x9a\xee\x82#\x0cX6X\xb0\xcap\x1a\xec(\xd8\x17\
+V\x85\x08\xbfJJ\xce\x91\xe9\x9f\xa3~N\x03\xfbT\
+|5k\xe9\xac\xa7d8\x96\xa4\x80\x19\x04g\x80d\
+'\xa4&\x9c\xdcBC{hp\xe1D0\xa7\x93\xc1\
+4\x1a\xcfe\x0f\x18\xa1\x0d\x9c\xa8 _\xa4\xd1\xd3\x08\
+\x9e \xd8EJ2\x0cQ`\xe0\x01\xf8K\xa9\x00\xcd\
+P'\x1c\xd9@\x10>2\xb8R\x18)\xe0\xa8)X\
+F\x01\xd8\x14\xcc\x16\xd6\xd1^VR\x90\xe1\xae\x01\x13\
+\xff\xc1\xe9OO\x01\x036\xebq\xa3$\x5ck\x03\x9b\
+\x0cA\x7f@\xe03\x22\x0d\x1cGI\x87\xfc\x961R\
+)\x0d\xa9\xfc@\xc7\x00I\x12%\xbd\xed\xa1\xf2\xcc\x8f\
+\xed\x1e\x17:\xdc\xb1\x85R{\xe8\xa0\x13\xc9\x22\xd4^\
+U\xa2\xda\xd6\x22\xe7\x22\x1a\xf3H\x0c\x803%\xa20\
+\x80\x86j\x16\xfd\x1fH\xfeq\xe4\x0aendst\
+ream \x0aendobj\x0a\x0a10\
+ 0 obj\x0a\x0a<<\x0a/CapH\
+eight 626\x0a/StemV\
+ 72\x0a/FontFile3 9\
+ 0 R\x0a/Leading 20\
+0\x0a/XHeight 465\x0a/\
+FontBBox [-102 -\
+250 774 752]\x0a/St\
+emH 15\x0a/Descent \
+-320\x0a/Type /Font\
+Descriptor\x0a/Flag\
+s 32\x0a/MaxWidth 9\
+38\x0a/AvgWidth 215\
+\x0a/FontName /ZSHT\
+RV+NuevaStd-Cond\
+\x0a/ItalicAngle 0\x0a\
+/Ascent 680\x0a>>\x0ae\
+ndobj\x0a\x0a11 0 obj\x0a\
+\x0a<<\x0a/Group \x0a<<\x0a/\
+S /Transparency\x0a\
+/Type /Group\x0a/I \
+true\x0a/CS /Device\
+RGB\x0a>>\x0a/Contents\
+ 12 0 R\x0a/Thumb 1\
+3 0 R\x0a/Type /Pag\
+e\x0a/Resources 14 \
+0 R\x0a/CropBox [0 \
+0 395.558 408.44\
+3]\x0a/Parent 5 0 R\
+\x0a/Rotate 0\x0a/Medi\
+aBox [0 0 395.55\
+8 408.443]\x0a>>\x0aen\
+dobj\x0a\x0a14 0 obj\x0a\x0a\
+<<\x0a/ExtGState \x0a<\
+<\x0a/a0 \x0a<<\x0a/CA 1\x0a\
+/ca 1\x0a>>\x0a>>\x0a>>\x0ae\
+ndobj\x0a\x0a12 0 obj\x0a\
+\x0a<<\x0a/Filter /Fla\
+teDecode\x0a/Length\
+ 36079\x0a>>\x0astream\
+\x0ax\x9c\xec\xbd\xcb\xce\xed\xca\x92.\xd4\xf7S\xfc/\
+p&\xce\x8b\xd3\xe9.\x1d$$\x1a@\x13\xd1@F\
+\x8b\x12\x9a\xb3q\xa0\xc1\xeb\x93\xdf%r\xd89V\xed\
+S{\x0b\x09\x1aTii\xcf\x88\xdf\xc3\xce{D\xc6\
+\xe5\x8b\xff\xbc\xa5\x1f\xfc\xff\xff\xf1\xbf\xfd\xfcW\xff\xcb\
+\xfe\xf3\xbf\xfd\x9f\xdb\xfe\x83\xff\xff\x1f\xfe\x9b\x9f\xfdW\
+*g\xfb\xf9\xbf\x06\xe7\xbf\x1d\xff\xfd\xef\xdb\xff\xf4?\
+\x0f\xde\xfe\xf3\xbfn\xf5\xe7\xbf\xfb\xf9\xcf\xe3Gx\xf0\
+?\xe1\x7f\xea\xde\x7f\xd5\x9a{M?\xf7\x9f\xad^\xbf\
+\xcaq\xfc\xa4\x9e\x7f]\xed\xfa\xf9\xf3\xb30\x06YK\
+\x1fd\xfdU{\xfd\xa9\xfd\xd7y\x9e\x22\xc7_o0\
+R:\x7f6r\x8e\xf2S\xea\xafk\xfcO\xaa\xc7\xaf\
+\xeb\xca\xe3\xc1_G\x19m\xae\xe7\xaf\xb3\xe3\xf9\x85Q\
+\xf2\xaf\xf3\x18\xaf\xaf\xe9\xd7\xb57\x7f|\x9b_\xbf\x7f\
+\xfe\xed\xbb\x85\xff\xf5\xcf\x7f\xff\x19\x889\x02\xff\xa0\x8f\
+G\xfe\x95\xd0\x85\xfd\xd7q\xa4\xf1\x827}\xa4_'\
+{\x98\x7f\xed{\x05\x992>7\xd8\xad\x8d\x16\x1c\xe3\
+\xb1\x94\xc98\xf2\xb9\xe1\x81\x9c\xc6\x03u\xff\xd5\xfb\xe8\
+\xf0\xf1+\xb5\xfa\x93J\xfbu\xf5\xf1\xf8\x9b\xc6\x8fk\
+!\x95Gw__\xde\xd8\xbd\xb5q\xfft\xef\xce\xfa\
++\x9d\xf9'\xa71\x01\xa9\x8e7,\x8c\xf3\x1837\
+\xa8\x03\xdf\x19D\xda\x0fRg.\xa3\x01\xe3\xe13\x9f\
+\x831\x1a\xd8\xda\x86\xe6\x97>\xe8\xbd\xfd\xda\xc7\x03\xf9\
+\xfc\xd5s\xfd\xc9y\xffu\xee\xe7x~a\x94\x9d\xa3\
+\x94\xf7\xe3\xd71\xba\xfb\xfe\xb4:\xf8\xd5\xbe\x7f\xbe\x87\
+cq\xe4\xf1\x91\x9c\x7f\x1d=\xa3\x87o\xc6Y\xc6\x9b\
+Iu\xb4\xa1\xfc\xcahy.\x5ci7\x18{\x19}\
+\xce\x153\xb3a\xcd\xd5\x13\x0f\xb4_cE\xe7k\xbc\
+k4\xaf\x96\xf1Wt\xf0E\x8f\xeeb9gt\xfb\
+J\xcb\x87\xdd\xbf\xb5u\xfft\xff\xda\xd8\x13\x07&\xa5\
+\xe3\x93\x7f~\xdet\x1b\x0d:ORm4a\x90\xed\
+\xba\x06yqE\xdd`T|\x7f0F\x13\xb7\x9f\xdc\
+\xb9\x950\xa3m\xecLL\xd6\xe8q\xb90\x14\x0fb\
+\x8cF\xee\xe3\x7f\xc6#\xef\xef\xa1Ok\x8b\xfe\xf9-\
+wq\xfb\xe7\xbdp]\x8c=\xf7f\xb44\xe6d\xf4\
+b\xaf\xecM\xdb\xb1\xb7\xb8\x8cR\xc2\xb2\x1c\x8c}|\
+y\xe3\xc2\x1a\xb3\x98\x8f\xb1\x1cy\xec\xf4\xb1\x98S\x19\
+\x8bo\xec\xaa\xabq\x0b\xde+c,\xceva\x0fc\
+\x0e\xbb\xbf\xbd\xcd\x8fs\xdb\xad\x0d\xfc\xe7\xbbX\xc6\xd2\
+\xd0N\xc1\x12\x19]|3\x8e\xd1\x97<Z\xbe\x9f\x5c\
+\x1f\xc7\xe8)6J\x1f\xa3\x8f&\x0c:a\x1e\x07\xa3\
+\x9fc\xda\xd2\xf9k\xbfF\x0f\xf2\xaf<f\xfb\xfc5\
+Z\xa6m\xc5)y\xd3)\xffj\x18\x8ek\x8c\x22\x0e\
+\x99\xd7\x87}\xac\xac\xad\xfb\xe7\xfb\x97F\xc3\xb0\x06\xf6\
+q\xde\xf1\xd8|3\x0em\x90\x948S\xe3\x18\xe3\x22\
+\x1d\x87d\xc591\xe8rb\x99\x8eS\xf5\xec\x1bf\
+\xa8\x1c\x18\xef\x9d\x13>N\x99v\xeaP\xe2\x19\xfb$\
+\x87\x88\xa9\x8dO\x0e\xb1\xb0|\xd5\x9d[\x9b\xf6\xcfo\
+\xb9}\xc8\xaf\xc47\xa09\x7f~\x16\xc6X\x9f\xe5\xb8\
+\xd8\x1fL\xde\xf8k\xdf\x13{\x93O\xaf\xcf<\x84\xc6\
+\x06N\xc3,\x8f\x8d2\x0e\x93\xd4O\x92\xa3#\x15\xa7\
+\xfa\xd5y\xdc\xde+\x03G\x11f\xbb\x0f\xf6\x98H}\
+|\x9b_\xe7\x16\x5c[\xf8O\xf7\xb1\x8e\x15WN\xb6\
+\x092h\x88\xf67\xa3\x1e\x14\xdd\xa9wH\xaa\xf1\xc7\
+J\xc9~q\xd8\x87d/\xbf\xd8\xa3!~w\xb4m\
+\xe7\x82JcYk\x02\xb1m\xd2\x18\xa7\xb3'\xce\xe0\
+\x93\x1e\x8b\x99b\x1d\xab\xa0.\xdf\xd5\x14~5\xee\x9f\
+\xef\xdeh>6\xf9U(\xb0\xff\xfc,\x0ch '\
+\xce\x84\xca\xf3\xb1B\xb0\x89\x94\xe4\x1b-8\xaf24\
+\x97\xeb\xe0\x0a\x1eS\x84=\x96\xda\xc9\x01\x80\xb4\x1f\xfd\
+h>9_dJRIZ\xa5\xd0\xd6\x87\xb7\xf9e\
+\xf6om\xdd\xbf\xd4?n\xf2\xc6%\xa5\xfe=\x18c\
+\x8f\xa4k\x88\xa5Z\xf1\x17*iX]l\xed\xe8[\
+?/2\x8erm80 \xb5\xd3\x10\x85\x18\xedq\
+\xb8\x1e\x17O\xd3=c\xb3\xbe\xe9\xb1\xffF\xc3\x87X\
++y\xf9\xe66\xbb\xf6j\xd8\xdfwml\x99\xa1\x8f\
+\xfe\xa3\x0e\x8e#\xa1\xa8\x138\x8a\xff`\xc5A\x13\xcb\
+\xfbh-\xbe]-\x14\xfa\xaf\xbds\x02\xaf\xd4\xb9!\
+ g\xef`l\xc1\xa9E2e\xac\xd4\x03\x8a\xd78\
+w\x86\xb4\x1b\xc7S\xcbR\xe3\x9e\x8c\xa1Ub\x85\xe6\
+\xa1\x98\x8d\x9f\x1e\x14Gc\x91\x97\x8b\xab\xe46g2\
+\xc6i\x8d\xfd\x9ekc\xdf\x8f\xae\x97\x0d\xf2\xacx\xfb\
+X\xf7c\x1f\x0d\xc68\xa8\x8fq\xdc\xb5N-0\xe3\
+3CY\x1c\xebf\x87<\x1d\x8d\x18{\xea^\xe8\xee\
+\xb6\xb4\xcc\x97\x8f-A\xc9pb\xf3P\x89zs~\
+z\xe3\xecf\x9c\x1e\xe3\x88\x80\x12\xd3\xa3!\x0fb,\
+=\x88\x92\xf1\x1f\xf7\xe4\xd6\xb5G\xf3\x90\x1a\x99;\xa0\
+\xf3l\x1e:\x1ct\xbf\xfc\xf3{e\x8c\xc6\x8c\xf5\x8d\
+\x0f\xf1\x84\xb8v\xff\x95\xc2v{\xbc`\x1cg\xc7\xe3\
+\xe7$/\x1d\x01e\xbf\xf8\xf51\xc1eh$\xd8\x1c\
+]W\x8a\x92\xb5\x18\xb7\xdf+'\x8d\xa5:\xce\x1c\xfd\
+\xee\xe2A\x5c\xb2\xfaz\xaf\x8cq\x9a\xea;\xa1\x92\x8d\
+s\x95\xddF+\xb8L\x16F\x1az\xe8\x99.~\xac\
+\xb7BZ\xad>|\xf0\x99\xb3M\xd6\xe8\x0a\x9bW\x0a\
+?yU\x8eJ\xa9:\xf3\xef\x95\x91F\xd3\xf9\xc1q\
+C\x00\xbd\x8d]\xc8/\x8e\xbf\xb3E\xa3\x0bX[\xe5\
+\xe8\x9c\xef\xdf+\x03\xe3\x8e\xd5\x86\x17\xa0\xc5\xe3}X\
+\xe8\xe5\x1cG\xf0N\xadsa\x8d&\x9f\xfa\xe4\x81!\
+N;\xfeR\xa2;\xa0\xc6\x92\xc0\x16\xf9\xfd\xa4p,\
+\xec\x10\xb8x\x96c9\x8e@\xb6\xa3K\x9d\xba\xbf8\
+)k\x8f\x8d\xbb&\xb4\x99\x04\x9dst\xb0t\xf7\xcc\
+\x0c\xd3\xa0\xb0n\xcb\xe5#u\xcc\x11\x07\xa2\xc7\xc8-\
+\x1c\xa8\x09\x07\x0e\xda\xd2\xfc=\xdc/\xf8wjO\xf7\
+\xca\x00\x89\xc9\xabCY\xc0u%\x8d)\xe2\x99\xf0\xf8\
+\x84Y\xc1IE[\xb9\x5c\x1c\xaaq\xf1\xc4\xa6\xa8\x18\
+r\x9e\x13\x0bg\xe3E\x0f\xa2\xaa\x8c=.\xd9\xbes\
+\xfb\x95\xb1\x1fj\xe6O\x8e\xeaVh\xfd\xfe\xfe\xe2\xa4\
+1/e\xbc\x0b\x1fe#\x8e1\xeaC\xd5\xdb\xb9\x0f\
+\x9f\x14\xc4\x0fF\xf0\xec\x9a\xd8\x96\xa9/\x8e\xff\xe2c\
+\xe2l\x93\x95N/\xbf\xae\xe5\x86\xcb\x16\xda\xa6\xf3\xe0\
+I\xa5\xa6\x13s\xb6\xaa\xf1\x5c\xd9\x06\xe3\xf4\xb1g\xd6\
+\xe4\xe0^\xca\xce\x9f\x97~\xd25:h\x9f\xc7\xeb\xcd\
+\xc1\xdd}\x1c\xf4)[\x1f\xea\xfa\xf9X?\xfe\xc0\xc2\
+\xa1\x80\x1cZ\x08\xfa\x0f\x05\xe2\x8a\xc1\x1d\xb3\xc3\x95\xfe\
+dPVp\x9d\x0f\xee\x94A|\x9b\xd4\x88\xfb\x8b\x03\
+5\x92#?:rI\xb6p\xb0\xc6!\x88\xdd\x7f\x7f\
+q\xc6\x95d\xfc[\xa7>\xf4m}\xaei}\x9b\xb1\
+\x05\x07\xb2\x09ZSM\xbe.\xef>\xc9\xae\xd3z\xd1\
+\xca\x81\xb0\xd2\x02n\xda\xcc\xb8\x02A\xb1*\xa7T\xc7\
+\xfb\x8b\x13\x97\xeb2.\xef\x10]\xb8\xb3\xf0\x08<?\
+} g\x9b,\x5c\xb6\xb9\xc8\xad\xcdE;K\x93\xfc\
+\xba\xbf8\xe3\x1e\xa8v\x0e\x19sl\xbc\xf9q\xdd\x81\
+\xc4\xe3/\x1aw\x1a\xecR\x5c2\xf0\xf6\xe4\x15x\xcc\
+^\x9b\xb3\x05\x0b\xdd\xe6\xefaO\x82Z\x8b\xc3xh\
+\xd4\xa3\xd5\x96\xcf+gh\xd6\xe3i\x09\x22\x5c\xd5u\
+\x22\xfb\x8bw\xb0>m\xc0\xad\xbe\x7f~\x9d\x9b\xbew\
+\xa4\xf9\xfe\x17gc\x1b\xb9\xb2\x8a\x96\xf2|C\xd6Q\
+\xf3\xa6\xf38\x16(g\xc6\x1eb\x87\xaa7\xe6\x90\xf4\
+c\xe67^\xae_\xac\xf1\x82\xea>\xeb\xeaW\xbc\x92\
+\xc7c\xda\xca+'\x97\x13\x13=\xba\x89\xdb\x12\xee\x1b\
+\xe7\xae\x81\xcdG\x0c\xec\xc2\xc9\xe78:\x8a\xf6f\xc6\
+\x1e\xcd\x1f\xc1'z\x0bF\xb6\x9aQ\xc6\xa9\x8c\xb35\
+O\xb1\x14:\xfc\xca)!e\x8a\x05O\x09\xc96\xae\
+;\x1c\xa3\x85\x01\xc5A\xb2\xf5\xe2\xca\x05-\xd9:\x9f\
+\x8f\x89\xf4\x0f`\xa4\x18\xb3W\x8a\xce\x8b\x92N-\xf5\
+\x92\xbc\x9fWN\x09\x09D\xfb\xdaF\x9a\x9b\xa1T\xaf\
+\xec\x95SBd\x8c_@{B\xe3p1\x0fq~\
+\x07g\x9b,<\x0a\xb9\x08\x0d\xb3\x8a\xc4J\x08\xf9\x8d\
+\x15\xc3\x89-\xda\xa0\xbf!\xa99\x0d\xd8{\xbf\xc7\xaa\
+\x7f\x90\x18L\x0e\xd1x7\x07\x15\xe2\xc4]\xd6\xdb\xf8\
+\xb0\xf6-\xe4\xb7\xfe\xe8\xc3\xb4\xe0\x1a\x88EX)\x0e\
+\xc6\xd3\xcdJ\x96\xa5\xd1\xef/\x0ev\xb4V\x954/\
+\xacX\xad\xaa\xda\xac9\x9b59\xa5yi@}\x1d\
++\x17j\x856W\x88\x91\x85\xb3QgP\xb7<s\
+-t\xb8\x10%+\x07G\xc7\x85\xc1\xcdRO\xf1\x86\
+\xb1\xba\xb6\xb9Z\xee`M\xdd\xec\xf7\x17\x07r\xa8\x85\
+\x8a9\x89i\x8d{s(d\xa8\x80$\x9d\xe7\xd0\x1a\
+x\xc6\xe4b\x15x\xe5\x94\x93\x87\xc28\x1d.\x1d\xb6\
+8A9T)\xa4\xfd\xca)\xe3I\xae\xb7\xa4\xa3\x07\
+\x92\x0cS\xb6\xd78\x18\xe2\x17\xd6\xa3q\xf4\x17\x92'\
+7\x22\x84\x19/\x17}\x0e\xdd\xc2)\x12\x82\xb0\xed\xb1\
+\xdf]\x1am\xee\x9fn\x9c\xe8w\x1e\xb2\x98\x0bv\xfe\
+\xde\xbdZ\xe8\xed\xfe\x9bG\xa4\xb1\xe0\xf2\xc0^\x8do\
+\xf0\xba\xd5b\xd1\xbf\x19\xe8\xb5\xaeL\xa7Dq\xe9\xba\
+\x84~\xeeD+'\x1aYy\x1c\x15z\x14\xc6\x99'\
+\x9dw\xbbW\x8e;\xcd\x93\x97\xeb\x9aWi\x9c\xbc;\
+\xf7\xf1\xfd\xc5\xc1\xc8w\xda*JL\x85;9\xb4J\
+I\xca\x95\x13\x8b2Q\xfd\xfa\x8c\xec~\xc5}wa\
+Q\xed\xe2m-\xcb@\x83F4\x8a\xd8\x1c\x93\xb1p\
+8\xdf\x075\xa3BK\x03e?L\x138\xa0O\xd9\
+#\xbf.\xc3\xb8T\xe3\x0a=\xbeRO\x5c\xcfa\x0e\
+\xc3\x19\xf0\x1f4\x1f<?\x82[\xf5\x1f\x8e\x7f5\x87\
+\x9e\x0b\xf4\xac\xc8\xf7\xc0\x83\xc2c\x03O\x88\x8fRq\
+\xb6\xc9\xc2\xac7ii\x9c\xd1k\x9aE\xfc\xfc\x93\xc6\
+|\xd2\xaeB\xcd\x0e\x7f\xa3\xb2\x09\x1b\x91d\xb8Y\x93\
+3\x94**\xa0\x8dw\x86\x22\x9b\xc6a\xd5\x0bm)\
+\xb0\xfd\x8e\x91jR\xe7\xa1\xd7\xa5\xb1Z\xb4\xd5AO\
+\xf2^\x19\xd0\xbfh\xa1\xb2\xac\xc5\x0d\x06\x8dK\xea\x09\
+\x97\x9f\x0e\x8b4\x84\xafO\xd6\x85S\x1a\xd5\x9e\xd8d\
+\x87\x86\xeb\x0c\xa5\xa7\xd0b\xb6\xfd\x9c\xec\xefo\xd3&\
+\x8b\xb5\xf4\xea\x93\xa9U\xb5\xce\x97\xb47\x8d\x8b \xf7\
+\xbb\xce\x8b#\x86\x09\xc6\xb4{\xa1q\x86s\xe3B\xfb\
+\x9f\xd2&\xf5\x90\x17bl\xc1\x09\x89\x8b\x8b\x1a\x0f-\
+]\xf0L\xdeT=dK\x22#\xdbh\xf0\x9f.\xfa\
+Vr)\x92\x94\x15\x1f\xbb\x83\x16\x99\xe1y\x18;\xc2\
+\x9aI\xd6\xee\x0fe\xe4I\x86\x12\xfc\x9fN\xcap\xd8\
+\x9a\xb0\xaa\xf6\xb8R\xbc\xe8\xd48\xe1)\xb1Aq!\
+2ys\xf1\xd0\x8cI\xc6x\x99\xc6n>\x7fd\xd9\
+5\xed\x9eK1\x5cZ\xd0\xf0Sj7\xeb\x86T\xb9\
+d3\x8en\xde>\x1e\xf4\x98\x1c\xd9\x84\x8an*Y\
+7\xa5R,\xbc\x16\x06\xae\xe4\xbawJ`\xc2\xaa\x80\
+\x86\xcf\xe31%n\x96\xaa\xf5\xfe{\xa1\xb10\xb1\xba\
+\x0e_\xcdw\x9d\xbe\x07\x8c\x996\x01<9\x83T\xbf\
+\x86\xbe\x0d\xcd\x11f\x11\x0c\xf7\xb4\xcf.\x8cK\x1a\xcc\
+\xd6\xa4\x00X\xf1\xf3Q~/\xb4\xed\x1fc\x05c>\
+\xc6\xcd\xe7\xbc\xce\x9f\xb3\xc7\xb3\xa4\xb7`\x5c\x1a$o\
+\x92\x8b3\xd9\xbd\x5c\x9e\x94\x17\xd6%\xb3,,\x12\x98\
+\xad\x1d\x16\x0f\x9a\x96\x9e\x0c\xbc\x8d\x8br\x87i\xef\x94\
+U\x01V\x12I\xe4\x85qv\xff\xb4I\x87:ug\
+\x04\xad\xa3aa\x9c\xde\x02\xbbn\x8cg\x93\xa1;\x85\
+\xeec\xc6\x16\x9cSg`\xe228%\xfc1\xbbZ\
+\xbc\x0b\xe3\xc4\x19\x83\xab\xeb\xe9u\x08;zG\x0f_\
+\x8c\x9fq\xb4\xf0g\x85G\xe7\x90\xb1l\x03-H0\
+/\xbe\xe8&\x89\x84\xc5\x89e:~\xca\xf6\xc3\xc2\xbd\
+c\xae\x17F\xd31<\x9eF{%Ta\xa0\xf0`\
+\xbc\x18\x1b\x5c\x9c8\xc2\x8f\x83\x83\x11\x1f\x1e\xcbJ\xba\
+\xf2\xc2\x80\x93\x8bG\x11\x0eg,V6L\xf6$t\
+\xf2\xcd\xf9\xf1\x0d\x09~\x0f\xb4l\x92\x97\xdf\x1e\x8c\xb1\
+P\xca~\x80l\x89&\xfaB\xfb5|\xb2\xa7\x84$\
+\x5c\xf2\xf7\xca\xa8\xb2&\xe1\x02\x0d\x9d\xb4U\xaeT\x90\
+\xec\xaa\xec\xa6\x1b/\xd4\x14\xdd\x8b\x88\x5ci\xc8\xe5o\
+1\xfa\x8f\x04\xf3!\xdb\x22\xce\xb7\x9e!\xc5\x8b\x19\xe8\
+X\x85\xcd^\x12\x16f\x8c\xbcP\x9f\xc1\x826\x0e5\
+\x06\xb2\x8f\x83}A\x93/_\xf4\xfd\xc5\xc9pi\xd2\
+\xb94\xc4\xfb\xd8,\x17\xaf\xda8\x12\xa4\x1e\xfb\xcc\xc0\
+\xc5\xf3\xd85\x00:\x0c\xb1\x0bW\x12\x22Q\xb6\x1d\xa8\
+d\xe8\xcfo\xea\xea'\x0c\xdc\xf9\xc4\xddh|\xc5\xc7\
+Z\xc6\xc1#\xe30\xdc|p\xe8\xb2\x85\xa3ER\x86\
+`\xd1c\x0b%\x07\xf3\x01\xbbC\xd9\xd4\xe4\x03\x13B\
+1aSp>*\xbf\x98\xc3\xd2~\xe2\x0e\x0dZ\xfa\
+\x1a\xe8]\xd6\x92J\x83\xd9\x96O\x18\x94\xd8\xdb\x03\xb7\
+\xed\xf1\xdd\x02cx\xb9\xd4 \x9c\xff\xfc\x02|R\x99\
+|\x8e\xe9x\x8e\x8bd(\x84-k\x9eiJ\x81\x9a\
+z\xd8&f\xcf\xc3\x01\xb3\x19\x17/\x04N\xce\xb8\xe0\
+\xa5/\xfa\xe6l\xe0\xd3\x09w\x16\xbav\xf5IM\xc4\
+JJ\xca\xa8\x0d'?\x90m\xa8\x87K\xb8M\x9b+\
+\x1c\xfaU\x17\x0a\x9c\x19\xf5\x94\xc3\x94\x9dH2z\xe1\
+\x8b\x90\x05\xf4\xcbv\xae8\xd9p\xe9\xcb\xcc\x85\x83\x0c\
+\xc1\x01W\xec&\xdfG\xa6\xcb\xc0/\xc2\xfe\x96El\
+\xac\x0e\xaf-(\xbaXO\x0bI?\xec\xba\xdc\xff\xda\
+`)\xb8\xfa^\xb1=\xc6\xff\x16l\x8f\xd1\xd3z\xd0\
+9\x84i\xdd\xf7NOF\xcb\x88,\xc8\xb8T#\xe0\
+\x04a\x14\xbdQ\x898.\x84e\x8c7\xd1\xc5\xb2k\
+>qe\xd5\x8a:\xa0Va\x09\x8e\xe1\xaaY&\xc4\
+\xce\x8b\xc38r\xe1\xe5\x1a\xfalE\x04\x04N\x87N\
+\xef+f\xbf\x1d\x9c\xfb\x04\xbfYo\x0c\x0c\xc0\xc7*\
+\xa2^\x16\x06\xedc\xbb\xda5\x8eypp\x82\xd1G\
+=&\xe7\xda\xeb\x17}\xf3\xb8\xed\xf0\xd7`\x5c\xf9\x95\
+\x0cUK\xc16m|=A\x8d@\x17\xa1s\xd1M\
+8T'\xb9\xb8\xb0\x89`.M\xb8!u\xba\x9d{\
+F\xbb\xb0\x04\xaa\xc2s.\xfa\xd51\xd5\xec\xdc\xd0X\
+v\xc4\x19\xc1\xf9\xb5W\xae\xdf|A\xaa\xeay\xbd\x90\
+\xe7\xf5\xce\xe5\x0c\xd1\xb9_\xd0\x0f2\x86\x13_\x1a\xc7\
+\xdaB2,\x81\xc6\xa1\xb1H0\xdc\xbfy\x82\x811\
+\xf4H\xae>\xe8/XE\xf0\xa3\x0e\xb9\xb1\x90<\xc4\
+p\xa1\x86\x1e\x9f\xe1#\xc5\x06\xc6xA\xe3\xa0\xe5[\
+\xf4\x16\x8c\xfb\xeb\x91<\xe6\x93\x9d\x80R6\xa4\xc0\xd8\
+$Z4s\xa8q\xf5\xe6|\xc2p\x83C\x04'\x17\
+,`\x18a\x5c\x04\xdf$\x0e2\xbf\xa2 \x8e\x87\x07\
+Y\xd95\xe3\x90\xfe\xbb\x14\xe1Za\xf9\x1cg\x11\x16\
+\x22\xee\xef\x5cx\xc7\xe5U\x84vqv\x9a\x8f\x16\x5c\
+\x86\xe0\xcc\xe7\x98\x1d\x9fvc\x917:\xee\xb0\x8ak\
+\xd7\xd1\x81\xa5\xca\x97\x8d\xa9\xc7a\x95a\xa7]\xf6\x03\
+6\xd5\xf7\x1e\xe1\xae\x1arn\xbc\x1b\xe1d\x905;\
+\xe4'\x0eBn\xaaC\xde\xc4\x13\x8e\xbd\xceM5\xce\
+\xf9!\x8fi-\xc4\x22Fg\xb1\x12\xc7\xe9\xdaS\xd5\
+\x95z\x08\xd6\x0c\xd5\x80AD\xf8\xe8qr\xf1\x1e|\
+\x09&\xb4_\x07\xad\xa0]v\x7f\x84\xf7\xd1\x0c\xda\xb9\
+\x10\xb1\xb2R\xa6\x0f\xf3\xc4\xbdl\xdc.\x11\x17\x87c\
+mo\xbc3\xbe\x18\xdcSI\xcdB\xcc\x08T\xa8S\
+!a\x98'\xac\xcd\x95\x96\xb6\xde\xe1Z\xc7\xde\xe6W\
+\xf2\xc9((\x1a\xb8\xdb\xc9\xb32\x95\xc2\x93O\x03\x08\
+\x97\xd2\xe8\x097.\xf5\xe8\xa1\xca\xf2\x9b\xb0\xd6\xe0\x1e\
+4\x18\xfb\xa5#\xef\xa8\xbc\x12\xc0\xf4\xcd \xaf}\xec\
+\xd3\x8b\x8ax;\x1a/7g\xa3n\xaa\x1f\xf0\x85\xdc\
+R\xe3F\xb8\xc9\xbb>\x0e\xfe\xb1\x87\x0e\x9d\xc5Cf\
+,\x147\x14\x1b\x8c\xc0\x9f\x0a=\x1f\x82\x86\xa7\xd5\xc5\
+\xef\xc3\xe4\xd6\x19<0V\xd5\xe8\x89\xe8I\xf2\x05\x05\
+\xa7\xda\x98+\xcc]\x82\x85\x1b\x1bk\xe8\xdd\xe8\xdf\x9b\
+\xbc\xb7\x95\x03\x81\xcb\xe6\x8f\xb3\xa6$\x0ah.\x969\
+\xc6\x05!:I\xf2\xe8\xb4w\xf0\xc4\x8dq\xee?1\
+&\xad\xed\xc4\x89\x82\x11\xf6\xe8\xdeN\x1cu\xc8\xe5\xce\
+[f\xa5`\x87\x10\x85\xbfd\xa8\x5c\x5cq\xf0\x07p\
+\xc1\xe1\xc0\xc0\xbc\x0cM\x81\xad\x1cg%\xe4\xf4\xd8(\
+\x08\xf7\x8aF\xd3\xf8\xae\xe7\xc7QY\xb8?a\xa9\xb9\
+\xf8C\xc6\x15\xd2\xe5q}\xed\x02m\xa5ugp+\
+\x8dVA,5\xec\x22\x88\xa8\xac]dG\xc8\xd0\xbe\
+zAD\x0aV6\xc4p\xc3\xf5\xa20r\x80^\xf8\
+>d\x84u:\x0a\xa6\xec\x1e\xe9\x05\x1b\xb7\x0c\xd7\xea\
+uP+\xc5\x0fOh\xe0\x9d\xbe\x13\x18\xab.y\xf2\
+\xec\xab`\x84k\xa1kL\xde\x8e\x03\x87\xf1\xb62\xec\
+\xac\xa2\x17\xeb\x22#\x9d\x87\xbd)p\xa2\xa5/\xfaf\
+\x9c\xed\xb8\x87m\x5c\xcc\xfcH\xe6}\x94\xab\xb9\xe3\x15\
+\xb9\xf1\xee\x8e\xc8\xa6\xc2Ve\xdd_\x19\xca\xc5X\x17\
+\x99\x91\xf1\xcd\xbd\xa0U\xc9>\xa5\xb1\x05\xc7\xad\x81\x1b\
+\xa8\xa3c\x88H<\x13/F}\xbf8\x0cxe?\
+\xfd\xb8\xde\xa7\xfds\xe2F\x0c\x97\xde\xf8\xd2X\x12\x8a\
+\xe6\xca\x5c\xe0\x0b\xa9\x1dt6:\x9d\xd0)\x18\x85\xc7\
+\x8b\xb5\xfa\x0e\xd8\xd5\xa0\x012\x9a\x0av\xad\xbe\x92|\
+\x01\xa3\x06qn7]V\xe4<<\xd4C\xd3[0\
+\xee\xafGp\xd4\xab\x13P\xa03\x85\x03\x17\xcb\x1ch\
+\xd8M\xa6\xe3\x09\xa1\xaf\xb0\xb6%\xacS\xec\xbbv|\
+\xd1\xdaE0\x86\xf0\xcawy\x13av\xe1\xba?\xe4\
+\xf9@\xb8\x14\xf6\x04\x16 \x9c'\x14H\xcd\x0b\x08\xad\
+\xe2\xd4\x1c\x97[)\xdbA>\x12[9[\x8d\x90\xe5\
+3mV\xc7q\xef\xc3\xda\x86\xfci\x8a\x05\x81\xa0\xa0\
+\xe4z\xef\x01\xed\xa1u_p\x0f\x15\xfc\x1f6Q\xdc\
+\x81\xea\xd1qE\xe3N\xc2\x8c\xcbR\x5c\xcb\xc1\x9d\x94\
+\x19Y4N\xec\xb1W\x14\x83\xca3\x90\x81-'5\
+5D\x13\xa390\x02\xde\xf1\x8e\x8d\xa2kG\xa0\x18\
+N\xb3\xde?t/\x8c4\xc4\xd5\xe4\xba\xb8\x0ai\xad\
+\xb8x!\xb8\x180\x8e\xc8\xb5\x8b'\xdd\x90\xf2\xdb\xca\
+\xf8\x91\xa7uw\x88Qf\xd0\xd3XQ\xd44\xbcc\
+\x17\x1a\xfb\x09&9\xb6+\xe9+\xb8\x10uE\x0a\xd6\
+\xb3R@e\xaat\xbb\x87\x10j_k\x0a\x5cBg\
+\xa1\xbc\xf7\xdc\xb9\x9e[\xa9\x8e\xc2\xe8\xda\x83\xe7A\xbd\
+0]\xea\x5c\xc2^h4@\xf2\xd6\x03W\xd6P\xae\
+\x18\xca\xf0y#\xb7T\xa6DB\xc8\xd4\x85\xf0$G\
+JAOyS\xf7\x8cD=\xf8n\x989\xb5\x0c\x0b\
+\xfb8:XhX\x85\xb5x\xb4A\xf4$o\x5c\xf9\
+\x0b\xb69\x22h\xf3)\xfb[\x95\xc2\xc0\xee\xbd\xe9-\
+Lt\x8fG2\xa3 :\xef(\x10\xa0\x10\x0e\x5c0\
+s\x98q\xabL\x9e\xaa+\x1d6]S&\xed\xdc,\
+fLZ\xe6[:]\xc7\x91\x7fi7%\x05:\x0f\
+=*\xc3\xea\x8e\xafis\x8c5\x08\x91tj\xd1\xc1\
+\xb7\xc6\x15\x94\xe9\xd4\xef\xbct\xaa\x9d\x0c\x85\xcb\xcc\x00\
+x4{\x9c\xd7\x189k\x84\x99\x97E\x98\xd2%\x0c\
+\xb8\xce\xc7Y\x89#k\xd9\x09\xdaO\xeb\xee\xe0~\xaa\
+\x07\x22y\x11\xeb\xe9K\xd3\xa1\x1d\xc6\xfd\xd4\x19K\x88\
+\xdd\xb3Wn\xa7q\xd6@\xd8\x8ek\x8d\x03\xba\xa1~\
+\xe2\x1eJqRe\xd2d\x883\xf5.\x9cf\x89\xa3\
+\xd7)\xaf\xa1\xb9($\x1e\xc1\x18\xca\xee\xe0\xa5\x8b\x0e\
+\xe8\xcb&X\x84\xa5\xc0ws4\x1a\xfc\x0b\xb5\x86q\
+dA\xb7{\xd1?\x0a\x8c`\x93vD`\x8f\x9f\x9f\
+\x0a \x1f\xd3S\xd27}3\x8af\xa7<\x87\xe6\xa0\
+H\x9e\x8e\x11\x1c\xcbt\xef\x14S\x88\xb4U\xf8\x04[\
+\x04\x8f7\xd4\xc9\xb1WO\xda_\x1d\x04\x0c3\x1f\xee\
+\x13\x83\xceV.\x8b\xae\xe1\x08\x04\xa4\xe26\x86\xe9\xec\
+\xbc\x08#\xba\x9c\xb7\x86!\x07\xe8\xfe\xa8\xf3\x85\xdaE\
+\xfd\x92*v\x8c3f\x8c;r^\x18\xc1=\x1a\xbf\
+\x90\xdaH\xd0\xaa\x11\xc4^\xa0\x05\x0d\xd1\x9e\x11\xba<\
+V^\x86\x01\x07w[\x9eD\xb8c\xa4\x95\xe4V\x82\
+U\x9d\xc6\xb4\xae`\x1f\x05\x8dfu\xd1\xf4\x16\x8c\xfb\
+\xeb\x11\x1c\xf9\xea5\x84\xe3E\x19\xc1\xb52\x07\x1a\x17\
+\x1b\xce$\x82\xeb\xe8\xe4\xeeN\xe1@BA\xbf\xbeh\
+m%\x9a\x13\xe0Ao\x87\xf7\x12-\x14P\xa4\x86\xfa\
+\x0f_\xe7xb\xe3\xde@\xb0\x9e}b\xb0\x90\x5cR\
+\xd7,\xc5\x8f\xe6v^z\xc1\xd8(h\xe7lwE\
+\x18J\xdf\xac\x11R\xceC~\xe3\xeb\x0d\xaa`\xe3\xb2\
+o\x94r\xafm\xa0\xbd\xb4\xec\x0cn\xa5q\x02\x0e\xa1\
+\x87[\x89nJm\xac\xfd\xd1\x0b\xee\xa41\xe5P~\
+\x1at\xf0\xcc\xadT\xe5Bl\x9a\x13\x9c\x82\xbc\xc3a\
+\x08\x12\x5c\x8b\x87\x22\xbf\xc7\x97\x1a\xad\x1e\x8c\xd2\xccX\
+\xb8\xb8\xde3\xe9`l\xf6.\xfd\x19*?\xa6\x97\x16\
+/\xe4\xfcp\x9aa\xf0a\xf8~\xd5\x0e\x85y\xb3R\
+{H\x98\xf7mep?5g\x0f\x1cZ\x1agg\
+\xc8?&\xe9\xa2\x99\xeaMcC%4c\xf3\xf2\x96\
+\xbbB\xc9\x10\x9d\xe3\x07I\x85\x8b\x04\xe3i\xab\xa2\xef\
+ty\xc7\x8a\xae\xb8\x80\x8f\xdd\xcc\xdc\x17\x18L\xa14\
+\x82\x91\xad\xfb]r\xcd\x8c\x16\xb2s\xb0a\xd8\xf2D\
+\x03\x02\xeee\x851\xa2\xfa\x81\xde\xc8=U\xaaO\x8c\
+\xa3R\x18!\xea\x9a1M\xf9XI\xed)\xdc\xe7\xc6\
+5\x05/\x18{*1\x18Xv\xbdqlCY\x86\
+\xbd\x1a\xcat[\xa8\x1bF*zC\xa0\xf8CK\x18\
+k\x08\x13\xae\x01\xae+-\xe1\xf4~\x04\x87\xbe\x12c\
+\x90\x22U)&\xb8f\xe6H\xe3r\xc3\xe9\x84\x0f\x89\
+\xfe](\xb4m\xe3&\x84\x8em\xc6\xa4\xe5\xda\xdea\
+\x91(\x85r\xe27\xe3&\xf8\x92\x13')\x22h\xc6\
+B\xed\x8a\x18\xdeqv\xc0V\xdbw\xd9\xac\xb4\x8c\xd0\
+2N\x0f\xac\xa5\x88R\x83\x89\xaaVn\x18\xb4t\xb6\
+|\xd0\xbb\x8d\xafL\xf3\xdax\x8c\xd7\xaa\x0b\x7f\xa1\xde\
+\x87|\xb4\xf2\xb5!\xb4\xa9\xd6M\xc2]\xd5\xf6\xb3\xd7\
+\x1f\x19\xbe\xdb\x05\xe3\x03w\x14\x12!\xa0\xfe\x8c\x17\x8f\
+\xbd\xcc\x1du\xe8^\x06\xb7\x1d\xc4+\xba\x8cs\x1b\x09\
+uU\xd1\x00\x9d7=\xe4\xb4H<\x8dk\x7f\x85\x14\
+\xcdZ\x05L\xfd\xa0\xaa\x0c\x8b\xdaA\xeb\x1c\xef\xd0\x05\
+\xc1\x1aT\xc3`?9\xa47\xc2\x0a\x80\x90\x8b\xaa\xd0\
+\xef\x1d\xd7\xcd\x85\xc1\x0du\xca\xde\x03\x95\xaf\x9f\xb4\xf3\
+R\x05\x85\x96\x8d|\xbf\x85\xbe\xe99L\x14\xee\xb8\x18\
+\xe3+p\xfc\x15\xbe\x09g $\x16\x14!l\xd5V\
+ez\xd0\xcd\x83\xc9s\xfb\xc1\xab\x14R\x16\xb9\x98+\
+\x9a\x85\xd0$\xaa~C\x15\xa1I\x04;L\xf6\x0c\xd8\
+\x96\x0e\xd9\x22\xe8K\x85\xd6}\xc2c\xa6\x1f\xe8\x8d\xdc\
+Ouo\xba\x1b\x8e\xcb\x0fr\x9bv\xde\x08\xc7\xb95\
+N\xc2\x85\xd4~\x82\xee2.\x8e:\xca\x11%\x8f'\
+\x10\x14\x06Q\x0eS\x11S\xab\xa0#\x1c+\xc9\x1du\
+a\x0e\xc6h\x1c\x97r\x1e0\xe1\xd8\xcf\xec\xa3\xe9-\
+\x18\xf7\xd7#8\xfb\xa1B\xd2(\x99\x1b\xa5\x05\xd7\xcc\
+\x1cj\x5cu\xb2\x84\xd6\x99\x11\x11\x84\xceA\x99CX\
+e*_\xb4cE\xeae\xe5'6T\xc3\xe03\x1f\
+\x0e\x81b\xc8\xeb\xdc\xb8\x1b\xb0\x0ea3\xd4\xba\xdb\xbd\
+\x88\xd0.N\x0f\x0dn\x07\x83\xd9:3\xe3\x1a\xdb9\
+\xdb]\xe1\xf0;6k\x88\xd0:+\xcc\xac\x9d[\x84\
+\xbe\x0d\x8e\xe5\xd7f\xe0n\xfa\xda \xdcM\xa7m\x10\
+=\xaeOg\xebmh\x8e\xdcR\x89\xa1 \x104\xbd\
+^\xdcRc\xb7BhB\xbb\xdcm\xe8\xc6\xa1\xdbw\
+\xda\x94(1\xe9\x83\x19\xfb\x85'\x05\xdau\xe1D\x82\
+/\xa8\xd0\xf0\xc6\x03)#I7Q\x99g\xa6\x05\xe2\
+\xdd\x92\x5c\xee\xe3\x95\x94\xcf\xbe##\xfc\xe2j\xa1\x14\
+l+\xe3G\x11\xa4l\xd5XZ\xe00T\xf8\x92\x9f\
+\x22\x95\x95\xc4~*>&qE\xc67\x10\x99}*\
+\xeb\x0f\xc3\x07\x81\xc5\xb5\x8f \xdbC\x1a\x9c4&j\
+X\xb0od\xa5\xea\xe0\x93;\xa5\xca\xe8P9\x0f\xef\
+\xee\xcb\xe6\x0bv\x0d\x06\x0d\x99\xff\xe8\xb4\x80\x1d\xea\x07\
+6\xb5\xf3\xf3:\xed\xa6\x06\x05\xabS\xcd\x1d\xbb\x87b\
+\x18Ij\xedXIm&3\xae\x92\xb4\x99\xce,I\
+\xb0c3\x0ee\x08\xd70\x04\xee\x8e\xd6\x90\x9c\xd4\xfd\
+C\x9f\xe9E\xd5\x17\x09\xc4c\x92\x18\xf2\x83\x88ht\
+n\xa1a\xca[X8\xf1#\xab\xee\xa21\xef\xd2R\
+\x891\xc6\x1d\x87\xd3\x88\x807\xed\x1b&\x17b\xeb5\
+D\xeb\x891i\x07\xc0\xe1Z\x84\xdb\xd2I\x83?T\
+\xa0\xac\xfb\xc9U\x19KG\xeb\x1f\xbc\x95;\x83S\x93\
+V\x1bBy\xb9x\xb0qv\xf9\xe6\xd4J\xb4N\x81\
+^j\xa5[]\xb1\xc6B9LX\x09\x88\xe59t\
+\x8f9\xa4\xf1a9/\x1b@\xdbh\xdd\x14\xdcF\xb2\
+\xde\xedh\x8fnM\xbd\x96T\xbc\x8d\xb22\x99\x1b,\
+\xd7\xb2B\xd8\xd9\x81l\xbeT\xed\xf2K\x8c\x93\x85\x1c\
+\x87.\x8a\xa3\x0e\xe7A\xe5\xd9\x87\x86\xc9\x04\x83\xc3\x84\
++'\xebv\x0f\x9f\x1c\xdc\xe4c<\xcf.+\xb9\x0e\
+&\x98\xe0\x0a\x852vy\xd5\x95\x1c\x92\x17G\x1c\xae\
+\x9d\x0b\xe3G!\xe2l\x17\x82i\xaf\xaa\xd4s\x5c#\
+\x90\xa9R\xf2\x17\xad\x84\x83\x9cO\xedo~\x05\xb7^\
+\xc6\x9fWN\x1aD\x15\x166\xe4@?d\x85\xd0\xc1\
+\x0e\x0eB\xab\xa1\xfb)\x98|,\xee\x83V\x88Cy\
+\xc4H\xa89\x0f\x1b.\xd89\x9c\x9c\x97\xd29Ng\
+V\xe3\xf4\xc3\x89\xc0\x1f\xe8\x8d\xdcM\x07\xcd\x10\xb8N\
+\xb6\x8a\xfd\x83\x0b6n\x9by\xa5\xb8\x99\x8e\xde\xa8>\
+\xb7\x0b\x0b\x0f\xb16\xb6\x0a\xe0s\xb0\xbe\x1e\xdcM\xf2\
+H\x88\x9e$\xb7\x13!\x06\xaa\xec\xd6p\xf2a\xc2\xe5\
+w\xc8+\xbd\xd9\x0f\xf8|\x04\x0bW\xb9\xd30.\x17\
+\xca\x08\xae\x999\xd2\x8c\x1c\xad\xba_]\xc5\xa1\x97\xd4\
+\xa8\x10\xa2\xcd<\x83K\x164\xd3\x0a{\xcc\x8e\xf7\xae\
+5v\x14?\xd3\xa8\xc3*\x98\x15\x0a[\xa5I\x7f\xa3\
+\x09\x9e+\xaf\xf6\x90o8\xe1h\xecKn\xe98+\
+\xa9\x1e\x16\xb54Z^3\x07K\xdaao\x14x\x99\
+\x9e7~\x0d\x0a-\xe2\x83yIzo\x08m\xabu\
+\x93h[\xf5\xb17~`\x95\xd0\x0d\xea\x1a\x0a\xdc8\
+\xb8\xb8\xab\x10\x1e&\xb3\xfd~\xd0\x81;T\xf8B?\
+\xd0%\xb38l\x080\xe1#\x1e\x087\xf8\xeaLk\
+\x18-\xd2\xe9]\xc5\x99\xc5L\xc3i\xc8\x15\xc4\x8c|\
+8^\x14\x0fB\x9d\xbf\xe0\xf2&s\x84\x12/\xe94\
+a\xc0\xc7\xe1\xab=n\xd0P\x87\xde\x0c|\x05s\x89\
+e\x00g\xfc%\xeb;\xaf\x1a\x9e\xa8\x95\xbeyi\xc8\
+T\x19pU\xc6W`\x99=\xa72\x05yE{>\
+\xe2\x8c\x0ejoEk\x12;\xb7'\xc7\x84%]\x09\
+3q,r\x13\xd6\xc0\x0e9\xd5l\xc6`\xdf`\xd8\
+\xa0\x19c\xd7E\x19\xae\xe01<\xc8V=?o\xd4\
+\xa6:\x1d\x82y\x9cY\x99\xf1\xb2L\x0fY\xff\xa6\xb4\
+\xa9N\xb9R+\x1d3c\x89I\xf7:9\xfaG\x92\
+\x1d\x0dWR8\xfcEO\xf2\xc6\x85\x8c\x19\xe6\xf5\xa0\
+\x83\x12n\x5c\xcc7.\xb5\xec\xe1\x9b\xd6\xa6z?\x82\
+\xa5\xcb.\xc0:\x89\x90\x10XFK}\xee\x10\x18'\
+\xb0\x22\x11\x18\xe5=t\xe04C\xb6\xf5\xd5MOR\
+[\xaa\xe1N1\x0e\xb1#\xc5\x96\xe206D>(\
+\xc5\x01r\xadB\xa19\x94A\xc1UW\x9b\x97\x10v\
+\x10\xad?\xb0\xde\xb1\x99\xb8\x22*\x91\x83\xcd\x8cf\xc3\
+\xd1-\xb3\x19\xf4C\x08O\xa4\xe1Q<u\xa6\xfbb\
+\xed\xb7\xeb\xfc\xda\x0b\xdaP\xeb\xfe\xf8\xeb\x93\x1a{(\
+\xf4\xc5\xf1>\xcc\xc7\xb6Z\x8c\xe8\x09\x06\xce\xee\x0c\xda\
+x\xfc\xf3\xa6J\xcfh\xae\xcc\xc7\xe0w\xd5\x14B\x05\
+NW0&}\x7fq\x22(\x07V\x1ax\xc7S\x16\
+\x22\x08B\xf4\x14\xa0\x9e\x15_\xc7\x04\xfc\xfa\x08\xfeF\
+\xf2y\xfb\xa6\xefG\xa8P\x8f8\x01\xe5\xd5mT>\
+O\x86\xd4;l\xa6f\x86\xeaD\xa8)\x94g\x05\xd2\
+\xef\x0e\xae\xecR\xd8\x1d\xc1\x88\xe1>+\x0d\xb4jv\
+\x8d\x80\x93\x19\xd1T.F\xb2@\xd5g\xa0\xccq1\
+\x92\x86\x17I\x99o\xd5J\xfe\x81\xd1\x0f\x081\xc8\xfa\
+%\x22\xc3\x90\x13\x0b\x0ft\x8e4\xdf#1\xfa\xe7\x8e\
+\xf0v,\xd6zH\xe0W\x9dL4\x9eE:\x1aV\
+\xa2\xd2\xf1N\x05G2j\x1dV\x96+Bq*\x83\
+hV\xfa\x96\x81\x92\x91\xaa\xf0\x1f\xe3\x91^\x14.\xc4\
+\xf9X\xc9\xdb\xc9\x8327\xe0\x0b\xe5T\xbc\x112d\
+\xc7\xcf7d42\xa4\x0aj\x98\x92$%\xd7\xb9:\
+2!<\x98)\x8e`\xa5|j)d\x87C\xe1\x84\
+b\x87\xf6\xaeP\x0a\xdcH\xe9\x13\x81\xabk\xc8\xe7\xeb\
+\xf8u|^\xc7\xf3H\x89\xfb\x08-\xc0\xf9\x03\x0d\xe5\
+b\xec\xd5\x930P\xc3\xb2\xe2\xff2b\xd1\xd8\x0c\x9d\
+a[\xbc\xc8\xe3//\xd2\x89\xc40\xcd`\x08\x1c\x8d\
+\x8a\x0b\x04\xc3\xd2^\xf4\xf6\xa3h+\x5cP\xc7|\xff\
+8\xe9\x808\x05\xcar~3\xbaB\xa7`sE\xac\
+\xa8CG\x11]Ds\xd0\x8b1\x839\xe9\xa9\x8d\xd0\
+H&\xd1\xff0\xcc\x92A\x0cZZ\xcf\x0el\xef\xee\
+`$\x96\xee\xfe\xe5\x10B\xfd7\x86c\xc6\x8c%.\
+\xe5?+#\xf3@k\x92\x8d\x0c*\xe2\xe6\xc0\xc5\xc5\
+qp)\xc7\xd1~r]\x80Qt\x90p\xe9;\xdd\
+\x0d:PW\xfa\x99S\xfe\x18`\x9d\x15.Cp\x15\
+\x86\x9dmo\xf2^\xfe,4\x1d\x89H\xdc\xf2J\xf5\
+\x94\xb5X\xe6o\x8e\x94}\x0e\xe6\xe9\xdd\x9a\x1d\xf2z\
+\xcdP\xbe\x85\x83!\xa0\xc7\xdd\x81p\x1c\x91m\x0e\x09\
+\x86\xf5k\xd8\x1e+,\xedB\xb0\x80\xc3\xa7\xc3q\xb9\
+0\xe0\xa8\x86M\x9a!\xe1\xf8\x9c\x93\xd9`\xe3\xd4>\
+\xda\x9bRmi\x18u\xfa\xb4rw\x82\x13\xe9\xe7\xcc\
+\x19\xe7;\x22e s\x5c\x98~\xedxbF0n\
+\xca\xc1~\xb2>\x0d\xc1\x8d\x9a\x91\xcb:\xd7\xd2>O\
+\xf4\x85\xe3\x98\xc0\x0d[\x81\x9f\xcd\x0a\x9cE\x12\xad\xad\
+J\x93\xf4\x96\xbf4\xea\xbc1\xe7\xe7\xabs\x92s\x88\
+\xdf\xa83\x5c\x90=E\xa2\x00\xf1f\xe6\x88D\xcbu\
+t\xfd\xfe\xe2$\xe5\x0f\xe8>\xc1\xd79\x9f\xa0\x84\xe8\
+@\x9c5\x05\x1a#\x11\xf8\x8a\x17\x03\xd7\x8c\xca@\x97\
+]\x96P\x84\xb8)D9Q:\xdd3\xd8}\xce\xe4\
+2\xb1o\x92\xebd]\x0b\xdf\x1bP\x91\xadL\x18A\
+\xbf\xff|qp\xac\x22;\x5c\xe7\xe85\x81\xcb$\x07\
+4\xca\x88\xd0Fxl@'\xb8O\x06C\x98\xe3\xf8\
+\xa61T\x0a\xe8\xe6\x99\xba|W'\xe9w\xf3\x86b\
+Q\x14\x1c\x0b\xc3\xc9E\x10\x95\x95\x8372\xadD\xf1\
+\xb5\x9f?W\x9f\x01\xf8\x8b\xf2\xee\xab\x84K\x8cuV\
+\xc0\xf2\x1ci/\xd5\xfb\x8bC\xad\xf8\xea\xf1\x86\xed\xab\
+\x0dl\xfdWKG\xeb\xab%\x09\xc2\xd8\x89p\xb3r\
+\x22\xd3\x1e7<\xc6\xe6\xce\xbfG0/\xfe\xa5\x1dZ\
+\xbdZ\xad\xc9P&r9J\xfcR\xcc\xa9\xc7\x0b\xc7\
+)\x1e~\xc1\xf6\xd5\x086\xff\xab\xa9\x18|eD\x12\
+^\x82\x07\xf6\x9b1\xc98\x19\xb2$@\xb2\x10s\x94\
+\xef\xa6\xdd_#\xad\xe2\x92\xee2TW\x04\xc0\x0a.\
+b\xfe;\x22\x83\x11\xa1\xa6\xf9|~\xd2\x0bem\x17\
+\x9a*-\x07\xc6e,\xde??+\x87K;K\x9f\
+\x98+mnz\xab\x10\xa4\xb7\xcfvM\xb1\xdb\x84V\
+\x81#%\x8e\xbc7'Y\x13\xc4\x1bJ\x8f\x8fo\xf3\
+\xebj\xf6\xda\xc6\xd1\xee\xc4\xd8\xed\xf3\x8a\xf3[\x192\
+ga;\x7f/\xb4\xb1'\xfct K\x9c\x8c\x5c\xdf\
+~\xee\x853!3\x9a\xa3\xb8\xbd,\xac\xbc\xde+\x03\
+\xe7\xe6\x85K\x8a\xe3\xde1JL\x8a\x095ca\x18\
+\xc8\x02\x0a\xc4\x9e\x83\xc2e\xa5\xc5\xb6C\xe4\x92\x19c\
+\x9b\x22\xbb\x86S\x5cup\x9cs\xbf\xbd\x19H\x7f\xc3\
+\x9btV\xfbo[\x9bCo\x8e\x19\x91\xde\x84\xd0\x18\
+\xec\xee\xaa\xc3\x1aI\x1c?\xf7\x9b4d\xc5\x86g\xb9\
+s\x8e\x12\x09C\x06\xb9x\xd2A\x1d\x940\x87\xe4\xd7\
+1\x8fx1\xb6\xe0P\xd9\x02\xaa\x99W\xcc!\xb9~\
+N\x19\xf9f$\xa7'\x03\xb8\xafQ\xf9\xa2Di\xa1\
+\xea\x98\x13\x0ch\x18L\xc4\xf3\xaf\x9d\xaa\xec~\xdc+\
+c\x83\xc6\x86\x85\xd0\xb4O\xbb\xa4\xbe\xf3\x13\xee\x95\x01\
+{\x13\x96\x15\xb7-\xb4\xde\xb1U\xce}.\xaa'\x83\
+W`\x0f\xb7H\xa5\xc3\x7f\xd6\xd4\x9b\x91\x9c\xe3\xb8U\
+\x09>\xa5\xd4\x22~M\xc9\x10\x0b\x83@]\x98\xae\xaa\
+\xa7\x95 &\xea\x0ez\x8b?\x1bgc,\x1b\x9e\x8b\
+Nsh9\x06\xe5\xcd\x88\xb7\xc5^\xba\x18\xd9\xbfy\
+\x0a\xee\xa9\x8a!i\xc96\x7fv\xa4\x9a\x9c\x13\xa2;\
+\xeb\xc2`t\x02\xaeOM\xd2\x93\x86\x9f\xa4\xcdn\xfd\
+x\xdd\xebO=\xce\x09\xfd\x5c\xa1Y\x92\xf9\xcd\xc1v\
+\xa2\xd6uxo\x1b\xc5$\xfe>qM\xb6\xcfO\x90\
+\x96\xc9D&\xf7\xf8TF\x1c\x22\xff4\x9e\xba\x86\xe1\
+\x87\xe7\x03\x0a\xc4\xda\xff\x16\x80\x16\x08\x94\x91\x94C\xa7\
+B\xe1U\xb2\xcc\xecf;\xd8\xedo\x0e\x03p(u\
+\x0e\xa6~D\x0a%\xf4\x14'\xc4\xe4H\xf6bN\xce\
+\xd4\xd9w\x89@\x0c4V\xdc%\xf1\xbd)D\x14\xcd\
+\xe8:k/\xa5\xe7\x9c\x16\x18\xa7\x8c\x09g\x08\xa1\x17\
+\x1d\xb9\x95\x88z\xa3L\x15\xfc\xc3|\xf8ES\xe1{\
+\x9cK\x89\x97\xd4\x1e2\xc3\xa8J\x9dKw\x9b*\x0e\
+\x8c\xbd8\x1d\xdf\xe4\xfd\xfd\xf7n\x8d8\xc4\xba\x85\xe7\
+\xa9\x8c\x9a\xcf\xbd\x95Q\x0d\x9fl\xcc\xa9\x02.+D\
+*\xd4\xba\x8e\xa8\x04\x86\xeb\xa0\xce\xe0z\xac\xb9\x1ap\
+wZ\xf0\x7f\xa4\x84\xe8\xfacy\xc0\x14\xc6\xfa\xf8\xd7\
+G\xf1\xeeU\x8a<t\x22\xc4\x8a\x9c\xf2I\xe2t\xc6\
+.\xd3\xdc(\x08\x0a\x97\xbaN\xbfGr\xba\xf18R\
+x\x8e\xbd\xc99\xb3\xdb\x0fc8\xe7\xfd.w\xdd\xc0\
+\xde\xe4\xfd\xf5\xf7,\xdc\x09\xf4\x83\xd7\xaf\x9d\x19\x96\x98\
+\xe6O\xde\x92S\x12\xdd\xe9u\x10VZ\xaa\xd1:P\
+\x18\xd4\x19\xc5\x96\x187\xf0C?\xa5G\xb6\xc8\xab\x9a\
+\x18n~pd\x93\xae\xb6E6v\x888&\xfe\xa2\
+\xa50\xc3~}\xd6\x9c\xed\xd3\xb2\xeb\xa3)R\xde\xda\
+&`\x03\x82\x10r\x186\x83\x08-E\xaf8C\x92\
+&\x94lP0\xea\xa99\x10l\x9e\x9c\xe4\x04\xed\xdc\
+,\x1d=T%2\xd7\xa0\xc2\xac=\xe3P\xbc\x93\x04\
+\xc7\xf756\x5cd\xd9\xa9\xca\xdaC\x7f\xbe8)P\
+\x19w\x8ah\x0bw^:u\x8a\x8b\xb3MV\x8a\xfc\
+oX7\xdb\xd4\xff\xf7\x10\x12/\xfa\xf3\xb0/5\xd5\
+\xe8,\xcc\xb3}fK\x9b\xe1=p\xe9:^u'\
+\x85\xe2\xaa4\x1ejc\x83\xe4\x8c\x1c\x87\xac\x5c\x97o\
+\x22\x87\x8e\x8b\xb8\xa16\xc1\xe9\x5cE_>\x95\x10\xee\
+7\xbf\xa8;\xe8m\xfeY\xa7}\x9c\x15]\x9bj\xb6\
+\xe3E\xc3\x06\x0a\x8f\xe0u*\xfd\xa8W[If\x17\
+\xbb\xed\x22\xbb%e\xb7\x11b\xf7R\xb2\xd4\xd5\x14H\
+\xcer\x12\x98x\x95d\xc6\xa3\xb6\x9bw\xc9\xe5s\xb1\
+\x22\x5c\xed\x97\xd5\xeb\xd2\xfff\x86_\xb4u\xf8\xaf\x85\
+\x01+\xf2#\xe1\xb4\xce5\xf4\x1f\x81\x82\xe0\xc2<\x9c\
+\x22\xa1u\xb6p\xa6MQ`\x05\xf83s\xa3\xae\xc0\
+\x81\xd3\xc1\xb5Mx\x90@IC2\x04a\xcb\xbcG\
+?\xe0\x82^j\xf9r~\xba\xc0\x10\x8ar\xb4u\xcd\
+*Y\xd1U\x8e_s\xbe<bc\x08\xa1\xf6\xa4C\
+\x87c\x1e\x09\xc5\xb7\xe4\xe0\x86\x17\x08\xda#X\xc1\xc1\
+\xc46\xba\xca:\xdd\xd11\xb1\xf9\x0a(\x80\x17CQ\
+x47\x19\x09\x8c!\xe7\xe8S\x0f|\x9aP{\x02\
+\x97%@\xb4\x18E\xc83\xd5\xf0`\x0c\xc9\xda\xcb\xe7\
+\xd0\xa6[\xa1X\xd1\xa2\xb1\xb6\x9cFJ=\x1d:9\
+\xd1\x0f\x9a\xe0\xbf\x98XB\xe4\x80&\xb9\xc5<\x11\xbc\
+b\x99\xbcy\xf6\xbc\xa68@9m\xdex\xc0r\xd6\
+\x7f\x0c\xcb9\xf1\xee\x920\x87\xfe\xfc\xac\x1c\x5cW\x02\
+\xa2\x0a\x06@\xe2\x88)\x1d\xfe\x9e\x8c\xcd\x9c\xd0\x13\xe0\
+[eJ\x05\xc2\x07\x14\xbcf\x80\xbe7#,l\x8c\
+]Cx\xa5r\x967\xba\x0b\xf4\x05g1\x9b\x81\x0f\
+\x10\xeb,{\x84\xb3\x00B\x0c&y/\x8c\x8d-\x84\
+r\x11@Dk\xf7B\xac\xbd\x07\xe1\x93\xf6\x9dc\x17\
+~Nr\xf8\xf7\xe0~d&/\xe3Jw\xa1?3\
+*\xb3*.\xba)\xd2\x17\x22nj\x93\xa1m*\xe4\
+-\x09\x0b\x03\x8e#F\xa4\x10\xa3\xaf)\x99\xe8\x0cH\
+]\xf9\x19>\xeb$\x84X,\x13^\xa6\xb8n\xbc&\
+\xa6\xdd|aP\xde\xf2\xd8\xcfr\x98\x97\xce\x0dC\x84\
+D\x89\x17q\xb6\xc9\x9a\x9e\xa5\xea\x5cb\xe4F\x01|\
+\x03Y\x18=\x92\x9a\x9e\x1c\xfa\xb1.\x19\xca\x18f\x10\
+\xfd \xcd]h\x18b1\x08e\x97t.\xd6\xb3\xaf\
+#K\x1f\xdb:\xd8/1\xbb\xcf\xa0\x10\x09\xdc\xb1\xe4\
+\xd3\xaf\xf6_X\xf2>]\xb0{\xb0\xe6\xfe\xfc\xac\x9c\
+d\x1c*\xa6\xda0\xa8\xc7\x8e\xa36\xcf\xaf30d\
+\xcd\xc2<\xc0s\xd2\x0dMi\x9c\x92\xcf\x09\xf9?\xfe\
+\xcb;\xb4\xa4\xe7\x0a\x979\xe7\xc1\xb0\xc1\xe6\xb3E\x0f\
+\xa3`\xf5\x80\x1e\x11g\x9b,\xac\x0cA\x9b\x08I)\
+\xecu\xd8SF7\xb1\x84@8\x10\xcf\x00\x84\xdb\x15\
+m\x22f\xbd-m\x08\x9b\xce\xab\x9d\xff\xde\x99\xf4\x0f\
+\xfb\x8a\xb0\xffd\xc4\xaf??o\x1a\xad@\x96*B\
+r\x91\xdaC\xb4\x9f\xech\xda\xe6\x15\x0c\xc6f\x0e\x96\
+\x15\x91\xa1\xb2p\xbbY\xc5\xa1\x88\xbe\x18\xe3\xc5\x8ev\
+\x05i \xe1\xe8\xf3D\xb3\xd5\xea\xd5\x02\xf5\xf3\xdd\xc6\
+\x7f\xa9\x9b\x17}\xcb\x9fn>i\x9eX\xc0\xfa\x89n\
+2J\xef\xd9M3>\xdd\xc4\xfdR\xb3\xc5\xe2\x15\x80\
+ <_\xdd\x84\xd2\xdd\x1f\xbd\x8c\x07\xd8\xcb\x9f\xa5A\
+!b\x9eM\xfcWz\x89\x80\x97\x22\x88\xc2\xd6(Y\
+^\x0c\xceN\x12, #\xe5\xa0o\xd6\x83\xfd\xb4\xbd\
+\x97\x8c-8t\x09\x1c\x9eNv\xe3b@\x06\xba%\
+$n\xfc\x82\x80K\xb3\xa3\xf1D\xb3A\xe0\xdd\x04\x1d\
+\xfeK3\xff\x95\xae\x1e\xaa`\xc0\xd1b\x81\x81\x95\x83\
+\x96i[*\xa3\x1fW\x0a}u\xe7\x09y\x07g\x9b\
+,(\xd5\x04q\x82\x8f\xb6H\xc9N\xdc\x84\xc5\x9a\x00\
+\xee\xb6Z\x19\xc2\x1a\xf8<\x81\x08A\x9c\xe4K+\xd8\
+\xdf\xaf\xb6\xfeK\x1d>&0s\x92\xffd\xe1\xf8\x82\
+\x808\x00\x9d\x8f\x02j\x8a3\xe7\x0e\xce\xf69\x86\x9a\
+\xe1\x81\xb3\xd0\x84\xe2\xd6\xf0\xc1\xef\xa3\x00\xbd\xce\xd8'\
+\xf3\xef\xa70>\xd7&\xa8\xb7kC%\xda\xff\xbd\x8b\
+\xda\x7fH\x80\xc4i\x08?\xa4l\xd5\x0b\x07\x12\x93\xb3\
+\xbd+{\x16)`\xf8[\xe8\xd7\x93\xda\xa69\x15\x0a\
+\x146\x05,T\xc4\xed\xccs\x9c\x0ca\x9d\x8c\x19l\
+\xf3j\xbc\xcf\xf4\xf6\xf8\x00d\xcd?\x9c<\xe16'\
+A\x0a\xff\xf9Y\x18aq-\xc6H\x0a\xbbQI\x01\
+\xafJm\x9bh\xa3I\x90`\xb6\x9f\x05J\xa2/^\
+\xd4\xc6\xad\xf7Y\xf0C\xa5\xe7\xe4v\x83\xed\xee\x81\xe4\
+m\xe4\xbd\x8f\xaa\xf8\xafK\xccSN\xaa\xb8>\xfc\xf9\
+Y9\xa1\xa7\xf8v\x90\x9aD\xe8\xe7z\x22\x10\x98\x8d\
+\xb1\xeaD\xe4\xb2\xba\xf5\x5c\xab\x12\x99\xd9\xc8J+\xe7\
+C\xb7P\xec\xfbTD\x03\xdc\xf9\xcd\x99w\x1aI\xd9\
+\xa9=\x05\x1c\xe6\xad\xf0\x03!\xaa\x1a\x9e\xfals\xf5\
+\xb0]KG\xb9\x05\xbe\x86\xe3\xff\x81-\xd0\xab\xbf;\
+\xb7\xc0\xc2I\xc2\x7f\xc4\x0e\xe0\x00~!k\xfe\x97\x16\
+\xe9\xb5+\xc7EW\xd8\x07E\xb0\x04\xdd5\xd9\xe5\x8b\
+\xd8~\xc8\xce\xfc\xac\xfe\x87Qj\xfd\x07m\xcc\xc2\x1b\
+\xeb\xd4\xc7\xff,t\xdcnO\xc7\xf8\xd8*s^a\
+\xa8\x7f1\xb68\xe9\xfc\xf7\x80\xf79\xc3\xdb\xb50\x22\
+~'HioO\xc7\xd5\x83\xc1\xeb\x0e\x8eM\xe0g\
+\xefyi\xa8\xcc\x9c\xef\xae\xfc\xf5\xaf*\x99\xe7\xcc\xe9\
+\xf3y\xbep\xd0K\xc4^L\xb2\x18\xba\xa9\x04\xe6\xdc\
+\xe1X\x80`\x85\x9f\x07\xb1\xa1J\xd3RdS\x97\x8e\
+\xf1\x22\xe3\x98\x8ej\x06L\x1f`\x12k\x9fP\xedb\
+MN2./\xf2%v\xfb\xe0\xd8\xc0\x1a\xdb\xab\xb8\
+$\x02\x04k\xfe\xdc\x04g\x17\x96\x1eJ\xedY\xc7\xe1\
+_\x10\x8e\xa7C\xdb\x84(\xf1\xe7\xe7M\xdb\xd0Kd\
+\xaa\xb1|\xa3n\xc3l\xf6\x9bA3X\x18k\xf8\xbc\
+\x8d5-\x0eV\xbb_\xe3\xe6\xe1\x8a\x09\x93\xd4\xfd\xdc\
+e!6\xbd\x9f\xb6\x9cS\x98o=\xb9\x1c\x85vS\
+g\x8d\x00\x06\xcd\x13/\xae\x1b\xbfK@\x83\xaf\x9el\
+K\xc7X\x1ek\xe9\xfa\xbf0zh\x1fc\xa1u\xef\
+\xfb\xf3\xb30p\x0a0\x91[\xa1\xb5\xc8\xc7LJ\xbe\
+nLH\x821X\x01\xca\xe5t\xcc\xcc\xa1xh<\
+\xb7\x90\xf7\xd7\xdf\x91\x9bT9\x1c\xe3\x9bc\xf42\xa2\
+\x86\x1br\x1c8x\x872\xb4\x9a\x8cG\xc0\x00b\xbd\
+*\xe4C\xaf\x0d\xc5x|u\x86Go\xf8\xba<\x15\
+\x1f\x17\xc5\xc2\xf0\xe4\x85\xcd\xdeS\xfb0\xe1\xef6\xd4\
+\x05\x8b\x81(\xb4\xbf\xee\x04\x91\xa0\xe9\xf7\xd2\x1blC\
+\xde\xe3NO\x1b\xf3.g\xff\x11\xce\xd2\x88\xdf\xa9\x97\
+\xef\xeb\xc0\xcdA\x0e\x112y\x19\xf9\x14\xc0\xaa\xe1H\
+\x97\xe9\xbd\xf6\x19\x8a\x84\xf9\xdf\x84DR\x04\x87P\xf4\
+9F\x198\xa4\xe1\xd8\xc3\xae\xe1\xf3k\xbar\x8a-\
+\x08\xc7\x11v\x8d\x17\xe3\xe7\xfe\xe2\xb8\xae\xc5\xf4\xed\x19\
+\x8a\x13\xb4\xbdS\xa7\x84\xb99i\xdf\xa9u\xed\x9a\xc0\
+\xe7\x80\xc7\x94\xbd&\xe5\xef\x8f\xd4\x7ft\x98\xda\x8b\x97\
+\x0d\xbb\xa8\xe0\xa2'\x07\xc3\xc2M}\xb8\xf0\x02\xf2\x98\
+x4]Fu\x04G\x18\x08\x06\xedH\xb9\x1b\xc1\xa9\
+\xbe\xfe}\xbf\xff\x02\xec\xa7K\x96\x0aZ5\x11\x88\xa5\
+\xd4\xb5K\xc1E\xb8\xa6s\x87W\x9d\x9a\xd9\xc1\xbe\xc6\
+\x1c_[\x1a\xd1H\xef\xfe\xfc+\xdbZ\x15\xec\x10\x9b\
+\xab\x12e\x0b\x03K\xb5;\xbb\x9b\x0d!\xc6\x80\xfe\x5c\
+t\xd0\x81\xb1MNry\xb4L+\x1b\x7f\xcfb[\
+\xb4$\xeb\x1c`z>\x10f\x10\xab\x85\x98\xd6\xa6|\
+\x1fl\xc9\xb5A\x9c\xfa\xb5\x8d\xff\xca\xcd(\x22\xcd!\
+\xfd\x0eN\xfe\xc2\x81\x09\x94\xa9\xa4\xcd\x05`\x98\xabx\
+\xf1\xef\xfb)\x8c\xaa]\xf0\xb6\xc1\x22\xa3i4z\x12\
+\xaa\x9f:\xa32\x81\x1a\x1d\xe2\x8e A\xc3^#V\
+J\xc0\xed\xa1\xb6\xed\xab\x15\x8a\x93[\xdb\xfa\xaft\x18\
+m\xe3\xc0_*\x1f\xb80\xb0\xfd\x94\x22|\xaa\x8a\x8c\
+C\xa4\x01X\xa1\xaa3-\xd0\x05\xc8\x01\x8d\xc8|L\
+\x02#\x12\x0fA\xe0\xb1\xab<d\x98\xec\xa7'p\xdb\
+\x05M\x985\xa0\x98*\xd2\xe8\xd5\x00\x05\x1c,\x8d\xfc\
+\x97:\xda\x04\xbdq(\x09\xe8\xcf\xcf\xcaa~/Z\
+B\xc3\xa9h\xa6a!\x87\xa0F\x06\xb0\x0a\x81\x98\x85\
+\x93\x80y\x95aj\xccy\x8a\xaf&\x08\xc0\xaeTf\
+$\xcf\xe3\x9d\xd0\x08w\xf5\x96%\xf2\xd6F\xa8\xbbk\
+Sm\xd0\x9e\x99s\xdfJ1\xbc\x1c81\x18d\x87\
+!BdL\xe93\x1e\xef7\xa3\xa5\x1bOj\xd0\xe7\
+i\xf7qc\xec\xf4\x93bh\xf5\xeb\xcf\xdd\xbeL\x18\
+X+]\xda\xb6L+>ea@\x05:$%:\
+\xec?\xf0*\xb1%\xcd\xb9g\x8c\xb0~\xb7\xf6/\x9a\
+\xacXv\x0f\xc2\x85Pz4lv\x19[\x90\xa8\x83\
+`\xe6\x22\xdd\x15\x99(P\x08i/;J\x08TU\
+\x91\xb0)\x81Y\xab\xa7\xdfy\x08\xc4\xae\x08g\xdc\xe4\
+\xbd2x\x178\xe7\xf3\x969\xb4]\xd5\xb8>,\x1c\
+uZ!\xed\x04\xa4\x83\xe0\xb1\xc8\xbdl\x19\x22g\x9b\
+,\xd6\xdb\xf5\xc7X}\xf6\xdd\xf1\xb0\xdf\xbd\x07\xe3\xaf\
+\x7f\x17\xc7\x16>T\x16 \xe1\x9ad\x9a\xd7\xee\xdc\x8a\
+Sf\xf9\xec\xb3\xb9\x1f\x84o\xcb^]\xb8r\x15\xc5\
+\xad\x9c\xb0\x89\xaaf\x08\x7f\x01\xc8\x90\xa4\x1c;F\xae\
+,\xf4\xad\x08\x05\xd8 \x13\xd3\xe5\x99\x1e\xa4\xda\x0c\xc0\
+W\xc45\x22\x09\xda\x8f5'\xec]\xeb\xc42E\xb1\
+\x0d\xe6=\x02\x921\xab\xa6\x8b \xd7\x5c\x9c\xc8\x7f\xd7\
+\x0d\xfb\x02\xb4&\xabsA\x11\x82\xef\x0e\x98\xeb\x99\xfe\
+\x07\xcdE\xe3\xb5>I\xca@1@\x1a+l\xe5\x99\
+\xb5\x9b\xec\x16d`\x85\x10\xc7\xa9p\x02\x92\xca\xd0\x01\
+\x17%\x15\x8a8a\xde\xe2\x17\x10<e%e;a\
+\x81\x00\x08e\xe2\xb8\x01\xb0\x87\xa7F\x11\xe6\xdf2\x1d\
+\x9c\xce\xaf)z\xc3D\x1e\x0d\xd2\x1e9p\xe4`R\
+G\xd7 \x10\x08\xde\x92he\xc6\x02c\xdec'T\
+[r\x862\xba\x06\xb4\x00:\xed\x91p\x0e4\x94\xb3\
+\xb8g\xca\x88\xc5\xd6\xe7\x95\xce?\x01:N-_\xb4\
+\x02\xa9\x94\x98/\xc0\xc5\xd4T\xae\x8f\xf7\x8b\xe4\xcc6\
+\x82\x09A\xaf\x11\x22\x04$w\xd6K\x14\xbb\xe2\x1a\xc2\
+\x84b\x14\xb6<\xe1\x84\x80\xbfD\x00,,\xc0\xabt\
+\x97\xa8\xb9\x94E\x0a{/\x96\x17\x0b\x22\xbd\xc8\xdb\xc0\
+QE\xb8m\xcc\x86j*\xd6@\xf4\xe4S\x8bm\xe7\
+b\x0b\xbc6\x02\xff\x14\xae-\xc6\x1d\x5c@\x0cM\xac\
+\x02\x83\xf40\xac\xb5\x86\xecN\xff]\xbe0&\x8bb\
+\xf9\x15\x86\xb4WUM\x06\xe6\xf7\xd5\xbffD\xe6\xc9\
+u\x96\x84\xb7v\x22\xa7\x13\xc6\xfd\xf1\x7f\x98\xe0\x0a\xbc\
+\x80C\xf3\x8ah#\xd5\x1f\xb94\xad\x85\xe0:0U\
+\xc1z\x01\xfdG\xaez\x22{\xf2.X\x9c^\x88\xd9\
+\x80<:\x99\xcc\xbd\xcd\x87\x09\x22\xd9VR\xb3I\xa5\
+\x8a\xa9\xb4\x95&WBI\x01\x03!+\xcd\x92\x00\x15\
+\x98\xcd\xf3\x94\xd7\xbcPNQ^\x093\x8f\xd0\x0d\xc0\
+\xdc\xbd\x8a\x0b?y2y\xba\x11\xfc\xa2\xa9\x06`B\
+\xdc\x07\xc1\x8c\xedC\xce\xcc\x7f\x7f\xd3\xb7\x12\xdeO\x99\
+D\xdb\xa1\x08\x1f\x08S\xfa\x9eX\xf0:)\x8d\x12\x18\
+{\xae\x99urm\x17\xde\xef\x13\xa7\x13\xa3\x08\x89\xc0\
+\xa4\xac\xc4\xc2\xd8\xf1g\xcd&\xb4K\xcco-I\x12\
+\xc1\xbe\xa6J\xa4\xdb\xd74h.\x97\x99\x11>\x91w\
+\xe6\x89\x8d\x09}\xa3M\xe8<\xfc\x80>\x80\xc4\xcb\x91\
+\xa6\x12\xb0XD\xc8\xa8r\xff\x12\x86\x01\x93y\x09\x0d\
+\x94@\x9b\x1dP#\xcd\x13ZY\xed\x98\x88&\xf9\xf3\
+\x93\xc3\xa0\x91\x0b\xad\x88\x19\xa2\xd3 1w\xd7\x9c\x12\
+\xb5\x96\xf0\x03\xda\xa0\xd5\x11\x09\xc2$%\xa2I\xb6R\
+R\x0c\x0d\x8a\xa4\xb1\xde\xd8,\x22\xef2\xb4\xa28\xfd\
+R\x98\xe2D\x02\xc5jVR\x0f}Z\xbbp\xe4V\
+Z\x01\x95g\xe1\x942\x9f9Q\xfd\x97\x03\xd2i@\
+2\xa7^\x91\x02\x8d\xc8t\xf8z\x00l\xdd\x1dP{\
+\xa8\xf2\x93`\x9f\x93\x8a\xce\xfb\xef\x9a\xd3\xbe\xc3\xe3@\
+\xe8mIiM\x80\x80\x1e\x97\x09\x89I}\xcd\x91\x00\
+=<\x97]\xdb\x12\xc6\x92\x00\xbd\xc6;\x91\xd0\x82\x1f\
+\xecTB\x0ei/\xf0\xfc\x9c\x5c9\x97\x10\x7fQ\xb2\
+\x84\x81n\x97\x92\xbd\x11\xbb\x94\x0eO\xea\xd5\x0eMj\
+o\xd7\xe7'\x84\x179\xbfh\x851K>\x18%\x9b\
+EV\x0eNj\x8fY\xe5\xe1\x0eH\x05\xa5L#\xd1\
+\xd9z8kbd\xe223\xe6\x87\xdb\x96\xe8\x89\xb8\
+\x0dk\x97\x02E\xa3hF\xcfC3\x9a\x88\xa3\xa2$\
+\xed\x95v\x88,\x84+\x8bs()\x12K\x11sJ\
+\x88z\x96r\xf5\x9c&}E\xa0\x97\x98\xb2=\xa9|\
+/\x1d\x9b\x82\xbbF'\x01\x10\x12\x7f\xbe\x8d\x02\x09\x0f\
+aiB\xdd&\x5c\xa66ai\xc7:\x1b\xe1\x11z\
+M\xd0#g7YOeboSh\x87\x83\x80\x8c\
+q\x8f\xdcPUcRh \x0b\xc1{\xed\xd3b\x82\
+\x91\xebU\xe3\xc4\x1f$\x95\x13S\x82\xc6\x9b\xfad\xe5\
+\x15\xe7x0\xf1/\xc9\x15\xaf\xb4\xbe\xfdSB\xad*\
+guW\x00<\x06\x85\xe6\x0f#\xa9!%\xb7\x16\x9d\
+e\xaa\xe36\x0d&\xf6v\x80s\xf6\xf2)5\x80!\
+\xe8\xb2\xcc\x1a\x80\x94B\xdfU@\x09\xf6\xf5\x88l\xe8\
+^YF\xa3G\xd4k+\x81\xf8Xm\x82L\xfb\xe7\
+\x17X\xc6oB1\xc8*,\xa5H\xeb\x88B\xce-\
+2r\x96)\x08\xed\xe7=-_\x09]T0;!\
+\xb8\x15C\xb70\x92\xcb\x9a\xd0\xdc\xdc\x05\xbfK-\xee\
+\x08\xd5\x9f\x8cmr\x10w\x88v_JC\x8bX\x98\
+\xec\x98\xf9\xfb\x8b\x13y\x0c4`0\xf2\xa8\xd5\xe8\x96\
+\xfdC\xeahe^\xf6\xd2\xbe\x85d\xe4\xcb\xda\xa5G\
+\x94|vz\x0b\x10^+/x+\x07A\xb1\x9c\xb6\
+\xec\xfe\xa7 \x1d\xbaC\xc669\x11\x12\x8f\x85\xcd\x1f\
+\xa8,Ov\xa6\xca\xbd2>\x81k\xbc\x1en\xebL\
+\xbe\xba\xec\xb8n\xbb\xc4\x08\xbf\xd7f\xdc>n\xcb\xb9\
+\x05\x9c\x8a4c\x15\xb5\xf8=g\xc1\x8c\x19\xc4G\xe4\
+\xb72s&r\x8b\x04\xed\x17\xe3\x13\xae\x99\xc3\x993\
+\xe9YT#8\x0a\xd3fR\xfcu\xcde\xa0\x0d\xab\
+P\xc8\xe4j\x97v\x11\xcc\x13\xc0\x15\x1b\xfa\xe5(\xff\
+\xf7Dp*\xbf\xa6\x8bQL^\xc0\x0e\x9b\xe6\xf9\xe3\
+\xda\x10\xac\x82\xc4@\xf4\xf3\xf2\xc1.\x0e2\x19\x88J\
+\x84H1&\xac\x98>#\xfd\xd1\x9c\x8d>\x02\x00n\
+\xccW@ ^\x9fo\x88t.\xc9\x87\xc1l\x90C\
+Y\xf3\x86\xb49q\xa5\x87\x03\xe2\x94G:\x9e\xc0\x1e\
+\xae\xf5\xf3\x82h\xe3\xd2\x0bm\xe1\xb5g\x18\x81\x12\x01\
+\xe3\xcd\xc9\x1f\xddhC\xc8\xd8\x1f\x9a\xc6\x1f'\x5c\x17\
+v\x06\x18\x17\x0c\xcd\x02\x08\x07\x80a\x0e\xa1\xc8\x0b?\
+\xff\xe0\xe9\xa7E\x94\xabU\xa2D%u\x17*\xc6\xbf\
+\xd7\x7fhW@q\x88\xfe\xa7\x89\xb7\x85\x0b\x0a\xeb\xd1\
+\x08W\x1c\x80oZeo\x0e\xde@\xdcH4\xb6\xd5\
+\xafnh\x00\xd6\xae=\xe5\x8ew\xe7\xe9\xcc\xf97M\
+\x9c\x9c\xc8t\xebZ\xccNtyPi\x96\x0d<\x03\
+\x8c\xe0\xf9\x12\xe5O\xbf?\xf3L\xbb\xe9\x82_@\xf0\
+5[\xd0\xd3\x83f\x1196\xde\x89\xa2\x93\xae\xb1\xd7\
+\xc5\xd1\xaaSd\xf5\xfc\xd6\xc5t\xa6\xf2$\x15\x10\xf0\
+\xfa\xbb\x81\xc3\xfd\xf3\xed\xc3\x98\x9f\x98\x1c7\x22\xde\xa0\
+&\xbe:\xa0\x11\x7fw\xe9\x1f\x18@vE/\xeb\x08\
+\xf8\xb3\xd0N\xdf\x85\xfb\x19\x9f\x95\x03\xae8\x8a\xfe~\
+\xd3\x1b]*\x0cu\x0e\x8f\x8cb9\xbcs\x1e\x14B\
+\xce\x9b\xa2W(`f5\xd5SB\xfa~T;\x97\
+\xe8\xf5\x97\x0aQ\x05.\xd7\xb3\xcd\xdd\xd6\x91\x85\xe1\x92\
+Z\xb8\xf1\xb2\xbc\x90\xab\xca3\xc0\x9a\xe7\xc4d4g\
+\xbb/\x8c\x9e\x1c\xb0\xa1\xc8\xf8S!\x22\xca<0v\
+\xc2\x87A\x7f5\xbe\xbe'[\x03\x15\xb3\xebt\xc27\
+\xad\x92ZY9\xea\xb3bW\x8e\x04\x807\x1d\x0fK\
+\x99\x81\xa2yE\x0e\x96\x81#\xa0\x99\x10B\xe4\xf7\xc2\
+\x81\xab\xb5\xf5X\xee\x8e\x1a\x88\x1c\xb7\x80w\x06\xf4\xb1\
+2qy@3\x1b\xaal\xcb\x12\x90\xb1\xfc\xbdH\x1e\
+\xdb\xf7#j{\xb86\x1e\xf4\xe5\xca\x18W'\x18\xee\
+%\xbb6\xc7\x82\xba\xfb\x9b\xb1}V\x02\xac\xcf\xb0^\
+\xee\xaco\xc2\xe8\x1bED?iP\xb2hU\x81\xa0\
+F\x15k*\xec\xaa\xaa\xbd\xab\xd2\x06c\xa0\xfa\xa7\x05\
+\xc0\xd7\x19:>\xf4\xc7\xac\x17\x5cZG\x1f\x12k\xa2\
+\xe8[\xd4i\xfa\xa9\xd8G,\x8a\xe2U$\xc6\xe1R\
++\x0b\xc3\xe9\x19D*\x1e\xe2\x13\x19c\xa3K[\xd9\
+\xab\xb7\x849\xc1\xc0\xa1\x9b]\xce\x0a\xc9iry\xf2\
+\xd2\xc1\xce/\x8cm\xcc-\x11\xbb.\x05 #\xd9\x13\
+\xa0\xa8\x88\xeb\xe1\x05ya\xcc\xc7\x0f\x22\xb3\xb2\xe6\xb6\
+\xc4r9\x88^N\x83\x87\xca'\xc3\x8e\xf9{e\xf4\
+:\xab/\xc3v\x17\x8b\xea\xb0\xd5\xe8:\x5c\x93\xf4\x94\
+\x98\xbb\xa2\xa0U'\x90\xd7{a\xd8\xe5\xf4Z:*\
+YA\x00.\xdc\x1f*\x0cIc\xdd\x09\x8f\x95GU\
+s \x12\xeb}\xc8\xbb\x84\xeb;\xce\x8d\xa6\x9c:^\
+\xb2\x808\x0boy\xa5\xc3\xa8\xcc\xf2Sbl\x93\x83\
+\x80\x8b]\x961(aP\xb0\xb2\xf202\xed9\x93\
+\xd18\xe0\xbf\x17\xc6\xc6\xf4\xb6K\xc1bDF\xd9\x09\
+x^\xf6H\x95Z\x18c\xe0\xb0\x1bh(\x1e\xd7M\
+\xd4\x91g\xd4W\x82\xd1d\xd3\x8c=8\x8c1`\x85\
+(jx\x980\xc0[_!X\x17\xc6|\x1a\xd8\xcb\
+\x07#\x14\xe8<B\xc1W-\xb7,dA\xe4\xf9\xe4\
+SG\xc6\x93\x01S\xd9%\xc9\x0e\x9c\xba\xcf\xa1\xd1\x84\
+rs\xe1\x03*C\x92YI\x91\xf7\x12\x03\x0c\xe1\x88\
+P\x88J\x0a3\xd2\xc2\xb9NU\x9a\x15z\xefg\xb6\
+\xf6\xc0\xc2_\x18\x10\x12:9/\x02\x86Qh\xe0\x96\
+\xcdt\xbf\xa6\xdd\xfdb\x91\x86{\xac\x10x\xf3XW\
+\x8c\x8e\xb2e\x11\x09\x94^Q`\xe7\x5c}\x82-\xd5\
+\xa2s\x08\xed\xe9\x15\xc7)\xa4\x15\xf6\x10\xd6\xc85M\
+\xa7T\x0e\xf9G\xfbv\x9e\xf4\xc6\xb2|UR\x90\xe5\
+\xc8T\x8d\xa7\x10f\xbdk\xbd\x89\xd1\x08\x05\xff{e\
+tE\x99c\xf5\xe1\xcc\xef\xae\xcb\xbb\x1bf\xeaM\x9f\
+\x0eb&\xd6\x0b\x85\x14\xa34\x89,\xe5\xd3\xe1\xc1\xe0\
+r!\xe6\xdbuI\xdat\xb9G\xb1\xb8hoX\x18\
+\xf3q\x9d\xab\x83\xec$\xf3/\x1d\xbc\xb8\xb6\xeab\xa0\
+R&o\xba\xbb\xea\xc1)\xf3{,\xb5j\x1f\xd7u\
+\x08\xd3\x0cI\xd88z]\xc43\x13\x5c\xbf\xfd\x5c\xbe\
+G\xa3V/mn\x0b\x03\xf7\xdd.\xad\x05v\xe0\x98\
+$\xc8\xe7\x93\xeb\xe6\xcdQAL\xe9-\x00\xf2\xe3*\
+b]\x12U\x17\xb9\xbf8LJ\x86\xcb'\xbb\xb0\xca\
+c\x91x\x91=\x16\xcd\x1b\x07\xb7\xc1\x5c\x86\xb5\xa6\x03\
+\x8eK\xecp\x86\x81\xe0\xae\xffPjIL5I-\
+\x15\xd3\x82I\x17\xeb\x00b\x8a\xc7^dG\x8a\xb1M\
+\x0eJ9^Y\xdb\x82\xa9\xc9\x0c\x0c\xc7f\xa1Oe\
+2\x9a\xa1\x92\x17\xc6\x063\x0al$Xw\xe3\xdcB\
+\x80\x1d\xec\x93{\xdc\x87\x17\x06\xcb,\xeb\xd8\x82'\xe9\
+\x94\x8c\xea\xe5\x94\xae\x14\x14\xeb\x8b\x1anxg\x98\x9f\
+\xce'\xef\xcd7=\x9f=\x84iy*>\x15\x0b,\
+\x13\xd3\x11b\x83\x95U.\x1e\xf6\xbfW\x06\x5cMY\
+\xe2\x87x\xeds\x89\xe1\x9e i\xe5\x1248\xbe\x1e\
+w\xe5]\x91fJ\x7f\xcbTC\xee\x95\x81$KV\
+\x16\xbc\x84\xfd\x18\x13\x84\x93\xbdX3~2\xd2\xee\xa4\
+\x92![\x88$\xd2\x88\x8bI\xd3\x17\xbcu\xdb\x17\x8b\
+5[\xb3t\x19z\xc6\x96E\x121\x0c\xef\x85\xf3\xb7\
+\x8a\xd9\xc5\xe2\x1bo\xfa\xff\x13\x8a\x99\xf20\x0e\xfa@\
+\xff\x7f\xc5\xec\xff\x0d\xc5\x0c~\xb7\xf7\xc2x+f\xd7\
+\xac\xdb\xf2\xb28^\xa7\xcd>\xa7A\x8e\x16\xc6y\xf9\
+\xda\xc8\xd2\xa7?\x8e\xa1'\xa68\xc7\xd7\x8c-8]\
+\xe1\xb0\x97\x22\xe3\xba\xbd\xc6W\x04\xcau\x05\xde\x05c\
+\xf9\x98\xc8m\xd2\xec\xc1\xda\xc0'\x1e\x9f\x93L\x99\xa0\
+\xfd\xe7M\xc6\xd0\x5c\x82\x92\x0b\xb2O\x81\x1e\x0c\xb8i\
+\x0b\x03TYy\x02U\x7f\xb1\xab\x22\xbe40m\xba\
+1\x07u\xb5B!\x16\x99\xcf|O}|Z\xf9\xd0\
+K\xdb\xfe\xdeRv9c\xcfF\xb7?+\x03{\xbb\
+\xc9j\xdd\xfa\xdfw\x82X:\xb0\xf3eE\x91J\x14\
+C\x16^\xaetjl=\x96\xb2\xd6ji\x04`\xe6\
+\xe9ZT\x83\xe7\xf0\x97\xb7\xf9i\x8e\xfd\xda\xbc\xa7\xa9\
+\x85\x89/\x8a\xe0\xe9\xce\xbf\x88\xcc\xe2\x93\xc5\x8bd3\
+\x17\x1d\x11\x02\x11C \x1b}3\x12@@]F\x95\
+\xd9&\x881\xc3\x9d\xc0\xd8\x16.\x00\xcfJ;~9\
+?\x83A\x80\x06\x81\x22\xb9M\xda\xd6\x99\xab\xcf\x17\xf6\
+\xcb\xf1\x8a\xce\xf3\x5ch\xa1I\xa8\x89l\xd0\xc3\xf2z\
+\x18Bc\xa1\x9d\x05\xab\x0ag\xc2\x98\xe1*9\x5c\xfa\
+\xd7\xf4\x16\x0c\x814P\xdb\xaeaxu\x90JVu\
+\xcd7y\x13J\xd4A,\xc4p)\xb2$\x9c\x86X\
+|\x93\xaanO\xbb\xc3)l\xbb\xecx\xf2N\x9b\xc5\
+\x8bbq\x00^\x1a\xaa>]\x1dD}Jo\x5c\xe9\
+\x9bp\x88D\x22U\xe5]`A\xd7\x1eF\xdbm\xa1\
+\xf1\xbc\xc1\xd0\xe8\xae\xc3\xe7\xab\xdc\x15\xa7\xe0\x18_\xd4\
+M\xba\xc8\x96F\x1bT\x8e\xb2\xf7\xcc\x0a\xa8\x0f:\xe6\
+\xf7\xc3\x91{\x00\x0d`\xa5\x97.\xe0\x19\x91[\xd0\xb7\
+p\xa6\xcbg\xdbf\x01\xa9)\xeb\x22\xad\xe4M\xdcW\
+%\x9dT)\xea9 \x01\x94\xc9\xb0\x90\xfa\x80,H\
+\xf6\x8f\x14\xfb_\xda\xdf\x90\x9b\xe7K\x07\xac\x02u\x03\
+M\x07\xe7\x06\x7f\xb1\xd0\x8a4\x90\x15\xdeK \xd7m\
+\x9a\xe43k\xaa\x84\xc9\x1en>j\xd3\xf1\xb2\x14\xee\
+#Y\xebV\xfa\xde\xa6\x07\xa7\x1bq%\x07f\x82K\
+agY#{\x09\xec\xd9|\xf8\x15rj\xe5\x1c\x05\
+\xcb\x85/\x93\xb3=T\x13\xf3\xd3\x98c\xd3\xf1\xa0\x84\
+[L*\xfd\x0eo\xf2fi\xcai7\xce\x86\x825\
+\xa0\xd9B*\x82K\xc9\x1a\xb1\x9b\x8c\xe7K\x04\xa4m\
+\xa1\x7f\xee\xd9\x9f3F\xdf.\xba\xd3\x01_9\xf2\x0a\
+\xc2\xf0\x80\x18\x9c\x8b\xab3\x10H\x1dK\xce\xd2O{\
+\xfe\xa2o:_Jv\x944]3\xc5q\xb2\xda5\
+o\x06\x7f`\xefM\xf3\xc64n\x13\xa3\x1f\xf27=\
+\xb1\xab\x1e\xa0\xc16\xba\xc6KWZ\xe7\x96\xcfZ\xb4\
+*\xf2/\x1a\xfdh\xdb\xca\xf8\x91\xa7\xbd==\x7fJ\
+\x16\x8c\x07VZ'\x1d\x81\x0eg?v\x8d$\xd7\xc9\
+\xe3\xdf\x0elQ\xfd\x06\xc1\xfa\x16_\x19sY\xc8\xcd\
+\xbd\xd5\x19W\xfd\xe9\x90t\xc6X^\xe8\x9b\xf3\x1a\xe9\
+%\xda&\xfb6\xcf\x91A<\xcf\x94\x80|\x9e\xae3\
+\x0fv,\xc1\x85\xc6\x0a\xddu\x01G{\xe8\x88\x0e\xc9\
+\xebco\xa5\xef\x0f$s\xb3\xafYrgs\xc0\x19\
+%\x93\xd6\xdd\xfc\x85-\xe1\xf3\x17\x91\xec\xdf\xa2@\xfb\
+\x8b\x96C\xdbE\x1b\xe1\x99tYk\xd6~\x03\xaap\
+S\xb4'\x83t\xbb\xe3\x16\x16\x06#\xfa\x0e\x08\xd4#\
+\xc9U\xb1\x88|\xc5!\xacj\xc0_[\xf1\xf8\xa3r\
+\x07t\x9f7\x8d\x93\x8e:{\x17\x8c[\xc6\xf5\xf6\xb3\
+\x12>\xd4&\xe5\x0d\xa1\x15\x95f\xb3b\x98\x8dOL\
+\xc0\xca)q\xb7)\xd2\xfa\x0a\xd7\x8e\xcc\x84z\x7f\xb1\
+c\xc3\x8cb`\xc8\x92\xb5\x9bK\xce3@G\xeb\xa1\
+\xf8\x88/\xaed\xff{\xe1\x0cR't1\xcai9\
+\x94LZ\xaa\x85N\x89T\xd7C\x0b\xba\x048`\xf4\
+\xba4{9\xfa\xe9\xfd\xbcr\xf0$\xcc\x1a\x97\x94\xcf\
+\x129\xc6\xb8v\x00@\xed\xcd(\x08\x84\xb8\xe4*.\
+\x87@\xf2\xca\x15\xf1\xa7+\xa7 s\x1c!\xab\xc8m\
+D\xc8G\x88\xb0\x87\x22\xb8\xce\xe8\x98c({\xb0\xc6\
+w\x95\xc2\x18\xb3\xbcpJ#\xb0\x05\xdb\x04\x93A9\
+\x1c\xad\x88\xb5\xce\xcb\x939\xdbd\xa1iH0\xc2g\
+\x0a\xcc\x22\x10\xe0\xac\xe6,\xfa\xfe\xe2\xc0@L\xfb\x08\
+\xfc\xfdx\x13\xa4\x0b\xec\x190\xa12\xb4y\xe5\x14\x87\
+\xfd\x16&3]\xaa\xc1T5P\x92P\xe6l\x93U\
+\x1ca\x8d\x8f\xe3\x0e\x8c\x11Bir,K\x17,\x04\
+v\x0e\xa7\xd8/e\xa1\xe7\xd1!\xde\x0f\xd1\xaeep\
+8\xa8_C\x88K\xc2D\x1f[\xff1tn\xfc\x82\
+\xb6\x07\xdc\x16\xf7\xeeA\x7fr\xca\xa1\xd2\xae\x18t\xd6\
+[cexM\xb6\xaa\x1c\x9a\xb3M\x16z\x89H9\
+V\x80C\xb0ZU~L\xd0\xf7\x17\x07\xbe;\xf6\x0e\
+\x97\xbd\xaeAG\x91\x15\x0e\xb1J\x81,\x9c\xc2\xba\x83\
+\x17\xc7\x87\xe5u\x8aq\x03\x8e\xdd\xa52\xcd\xd9&\x8b\
+\xb1PE\xcb\x93\x05H0\xe8\xfc\xdf\x8b\xe02\x1at\
+\xa4\x8d\xcc\x972\xff\xbbr\xd0\xdb\xe5A\x7f\x0eN\x0c\
+\xfa{\x081\xe8\xf5'\xfe\xe3(\xb3\xd4\x0f\x1fIY\
+K\xfb\xcd\xc1\x97`\xfd\x85q\x93\xcb\xf6\xa0q\x18\x06\
+\xad\xd2<\xc6\xa8\xde\x1b\x1c\xf4\x09e\x0cU\xb6\xb2\xa9\
+O\xc71\xe9\xfb\x8b\x83!Ff\x00\x868y]\xa3\
+\xeeW\x81\xaaC\xa3\xd9\xca\xa1\x1d\x1b6\xf6CU0\
+T\x12\xa9\xf0\xdbr\xd3\x98\xb3M\x16\x86\x18\x11\x108\
+\xa9P_\x8eC\xdc\xf9\xe7\xa4BK\xacCv}\xde\
+\x89\x1b\x1d6\x02+9\x220r\x19\x18\x8d\xf0:|\
+q\xf7\xd5\x7f\x1e\xe1C\xebI\xe5\x99\x17\x06\xbe\xc3\x05\
+\x06 \x7f\xd2\xaaJ^\x80ru\x16\x8f\xf0A\x07\x90\
+Yl4\x16:,\x0cX\x04\x18P,\x0a\xd3\xf7\x17\
+\x07\xc3\x81\x82\xc5(\xd4\xd1\x1de\x8b\x1c\x16\x0c\xa8b\
+\x0bWNq\x9dd~\x1c\xe1y.\x13XT\xab\xda\
+C\x9cY\xcb\xc3,\x86mbm\xa0\x1e\x1b\xecV\x18\
+bo:\xd5\xe6\xc4\x18\x1f\xcf\x97\x1e*\xf7\x801>\
+\x92\xc7\xf8161\xc4\xaf\xf1\xfb2\xebP\xe6\xf8\xc0\
+>j\xf7\x10?9\xd8\x08\x8cJD\xac\x11\xbfk\xc3\
+\x1e\xa2+\x98\x82j\xce6Y<\x0f\xbdH\xb9\x1c0\
+\xa2{\x9d\xf4\xfd\xc5\xc1x0@\x16\xc5P\x8a\xc6\xb8\
+z\xd1v\xd5UY8\x18c\xce\x12\x8e\xa9\xac\xb3\x06\
+\xb6d\x0c(\x8a\x0d\xde\xc1\xd9&\x0bc\x0c,\xc6R\
+\x9b\xaa\xa2\x10\x1b\xea\xe2\xdf\xf7\x12c\xcc\xb0\xf7x)\
+\xfa~h\x1d3,z\x1d\x9c\x18\xe4\xf7\x10>L\xb2\
+\x10]\xdcm]Q_\x7f\xbe8\xc5\xe0\x81\xe5\xd2\xcd\
+\xbfD@\xe2\x15\x88\xf0\xe6l\x93\x85\xa3M\xafP\xec\
+B\xd1}:\xc8{e`$\xf4<5\x8d\x0dcy\
+z\xbdJ\xc9_9E\x98\xa4\x14\xbc\x9e\x1e^o\x8f\
+\xa9\x1c\x88\xb3M\x16\x82\x8c\xa5\xcd(\xa0\xae\xf8\x06]\
+&\xda+\x06\x976\xd3x):\xae\xb1-\x92\xa2\xef\
+\x81\xd1\xd8\xae\xc3\x17g\x84Q\x1c\x14\xcc\xc3\xd0\x92l\
+O\xc8\x9f\x95\x81P>a\xcc\xc9\xba\x13\xa1|u\x9a\
+\x7f\x9a\xf1\xaf\x83\xc5<\xa8\xa8\xf26\xd3xY\xcd\xd9\
+\xe9\xaaoN`\x0aV\xa1\xe3n\x81\xd5\xc2\x8a\x83\x0e\
+\x0e|s\x02U\x815x\x1f8\x09,$\xa1\xa8+\
+q\xb6\xc9r1\x83\x0f\xed\xec\xe5<3\x86\x90j\xc9\
+\xfb`\xd6h\xfd^9\x1bQ\x17y+q\xe1\x19$\
+\xbb\xea\xa5\xd5)\xcdO:y\xcarU\x84\x89\xaaf\
+W\x99.'\xc1\xac0\xde[\x8e\xdd\xc5\x04\xb4\x9a\xe2\
+g\xf7\x17g\x02\xe1\x09D{\xfb1\xaaEv\x22\xf6\
+\x8b\x8c\x1c\x7fO_t\xa9~P\xef_\x9cm\xe6e\
+gg\xba}\xb0\x13\xa2\x12\xce\xcaI\xdeQ\xacP\xdb\
+~&^8\xb0\x0emR<l\xd0S\x85\x9f\x80\xa5\
+\xc9\x81_}\x18\xfa\xf0\x08\x03\xdb\xc2\xd9&\xdehT\
+\xf4a\xa1\x82\xf3zZ\x15\x17\x0e\xdc\xe9J\x1e\x95Q\
+\x9dV\xfemZ\x04\xef0\xfb\x9b\x8e\xfa\x1c\xac\xa1\xdb\
+r@\xc8\x7fL\x90o\xc66a\xddg\xbci\xd1\xb0\
+\xcfX\xe4\x85\xc1\x19o\x8e\xb0}D\xb7\x06l\xf1\x9b\
+\xf5\x81\xb0026\xab\xd4|\xfa\xff\x18\xd3CV/\
+\x16k\xe9[\xac\x0a\xd3\x9c\x94\xd8\xa8fx\x15u\xc7\
+\xa2\x16\x9bmm\xb4\xc9\xb2\x1bo\x8c\x8a[\xce\x86\xef\
+Pj{\x9a\x8d\xa0\xfege\xe4N\xef3\x0d\x00v\
+\x1c\xdb\x5c\xf3\xa0\xb2*\x1c0wSwU\xe1\xbf\xf4\
+(\xef\xb40\x82<\xb3\xc9\xd7'\xef\x9f\xed\xdf\xb6\xaf\
+v\x8d\xbb\xd4P\x11[5\xf9 x\xebr\x8d\x15\xd2\
+H\xf9\xcf1\xebO\x0aQ\xf3jg\xd0\xc2\xe49c\
+E!\x9b\xcbX\xe8\x0aI.\x86\x119\xeb\xdf2\x94\
+\x8b\x80v6\xde(?\x8d\xe2\xf1\xfdl\xf0h\x7f\xd7\
+FM6\x83\x8eN,\x1cDU$W\xc7\xe0\xed\x9c\
+i|\xd2\xfb\xe3\xdfE\xa1\xdb\x0aZ\xa3\xe8\xe9\xc2\xc9\
+\xbaj\x08\xa77\xa3D\xdd\xa3]{s\xf9\xa8\xdc0\
+\xdfm\xfbk\xcb\x86^h=\x96\xc6\x9b\x81\x84\xfb\x94\
+<\xa3\x81\x911\xd37_\x0c\xb9\xe2\x08y\xadF1\
+\xbex\xb4\xf1cOz3\xa2\xfeW\xa7\xbb\xe0\x90\xa1\
+\xaf;\xaa\xe4^88\xce\x7fd4y\xb7\x90\xd1\xd8\
+k/0\x11.\xca3\x17\xd7\xca\x81\x18'}yb\
+\xean\xba\xce\x95\x92\x94\xd8I\x0c`^\xad?\xa8\xf1\
+\x1a\xe6j\xd4y\xcf\xe0\x8b.\xdd\x928>\xbd\xcdo\
+k:\xd6\x16>\xd3\x01\x9a\xa1\xc6\x0f\x05\xf6\xbe\xe9l\
+\x14\x97.\xf9\x90;3\xb0\x11=}\xd3\x5c=N\xc0\
+N\x5c\xf5\xed\xb7\xc2A\x5c\xa9\x10\xc9\x98\xbfi\x90G\
+\xaeT\x92\xa9\xf8\x8bQX-D\xd9\x1c\xc5\x16\xd9-\
+*\xcc\xdc\xd3\x84\xe5r7%\x10@\x84\xe4\xbe\x90\xf7\
+\xca\xd8\xe8\xed\xb6\xc4\xa2\x16e\xb9\x99\x8a\x8bm-\x0c\
+\x84\xbfvBc\xbb.\x9d\xfc\x06\x04C\xd5\xca~s\
+\x84\x1ew\xf1 \xadPp\xab\xa1\x5ck\xd8\x0f\x8b\x91\
+\xaf\x03\x0b\xbeL\xdc\xecZ\xac|\x1a6\xbb\x86\xb7m\
+\xe5\x94(\xf9\xd3\x19\x1d[\x02\xd9[\xc5\xba\xd8\xa87\
+\x8b\xfajR)`\xccS1\x9e\x1c\x02\xb8\xad\x9fZ\
+\x9bD\xc2C,Gyl\x92\xc6\xa1(\x9d\x9aU\xe9\
+\xbb\xcd\x04t\x87(\xf39\xb4\xd3\x9c\xd5\xcf\x12\x10\xcf\
+I\xe3\x0c\xd3\xd8\xc2\x0a{\x0f\xc0\x8c!\xbd\xa2Q\xa1\
+\x5c\xdd_\x9cBTh\xd5T\xa4\xfd.\x1aUsT\
+\x16\x5c8\xf8\x06-\xfea!\x94_\xac\xce\x98\xe87\
+\x87_`\xaf\x8e\xcf\xf1\xad\x94\x93=\xda\xb4p\x98l\
+\xc6\x10\xbc.\xc5\xb3\x84\x8eq\xf6\xb9\x91#\xd4\xea0\
+\xf2\xc1\xca\x99\x83\xd9\xad`\x95\x12\x0e\xe6\xd0V\xe7X\
+\xd8\xda=i\x0b\xbc\x95\x9e\xbf\xd8>\x8f\xe46c4\
+\xe2\x06q\xd83~\xccU\xf0\xe403\x8eE\x98\x0b\
+\xc2\x077]\xab\x19My\xc5vy1\xca\x84S\xa6\
+\xf5\xbc\xb8\x1a\x10\xb3\x5c\xf3\xfbZ\x93\xe4\xcb\xfc\xfd\xb9\
+\xfb\x98S\x0c\xe1\x13\x91\xecEx<\x9f\x8c5\xc6\xa0\
+\x1f\xd34\xbc}l\xc5\xaeLU\xec|*\x9fM\xcd\
+e\x80\x13\xb5\xe5\x87\xa1\xd5\xad4\xb9\x99\xbe\xbf\x1e\x98\
+)l>\xbb\xadV\x11\x95Z\xa7\xd2\x9b\xb3}ng\
+\xcez\xc3\xdd\x8c\xaf\xd8\xc3\x96\xbbr\xe2\x9a\x9a]\xc4\
+\x09\xf7>\x85\x98\x5c\xa1\xbe\x9a59\x05+\xf7\xd2\xfe\
+4\x9c\xdaL+Z\x18\xccLv\x02--(\xb6\x95\
+\x87\x1f\xe6\xa6\xf1\xae\x5c\x1f?\xc6\xef/\xce\x5c\xd9r\
+Rna\x7f\xcf\xed\x8aa{\xd2\xb4\x8d|\xae \xb2\
+\xa7\x5c\x9fK\xccM\xe3\xac\xba\x18\xf6]\xd5I\xc0\xee\
+e\xff\xde\xe4\xfc\x01oE.\x1c\xda\xaa\xabz\x9e\xb4\
+\x99\xaf\x1c\x9a\xe0\xe3\x921\x7f^Z,\xf8\xa6\x93\x14\
+\xea\xebPp\x7f\x07c\x0b\xce\x1c\xa78P\x0e\x97\x0c\
+\xfc\xcc\xc9\x8bA\xb1\x8e{X\xd6Q\xbd\x15\x03p\xc2\
+Uf'\xc4\x8bA_D\xa7\x8c?\xfa\x9ca\x16\xd3\
+P\xe5Y;1\xb6yv\x1fQ\x1a\xd1k\xd3\x15\x05\
+\x8ekJ\x0b\x97\xd8:X\x1a\xac\x18\x0a\x0f\xf2\x86\xdf\
+kr\x9b>D\xaaW\x1e\x0b\x12s\xd8]\x06\xcde\
+\xdcb\x1d\xa4\x87+\xe6\x9c\xef\x94\x01\xc8\x154J\x8e\
+^\xd4\x1eE\xfc\xeeO\x93]\xe6\xaf\x18\xbc\x95\xd5\xe0\
+\xf2g?miO\xf1\x0b\x97E\x10#\x1c7\xae\xbb\
+P\x0ca\x0aU\xd2\xa6\x8f7\xe7\xe3;\x89\xbad!\
+\x00?;\xf6\xcd\x98\x12q/S\x10P\xfeEa\x08\
+3L\xc7\xf9,\x14\x8fI^\xd3\x1d\xf6f\x14W\xec\
+\xe2\xfd\xa1\xcfC\x93\xf0jS\xd7\xc3\x9c\xb9\xfeE\x91\
+\xaf\xfe\xf2qe_y\x8f\xe1\xdf\x8a@\xe9{hI\
+\x8c-\x9b\xa3i\xcc\xfck\xdeO\xde\x0c\x964h\x8a\
+\x9fd\xa6e1\xdc\xfc\xd4<\x1157\xd6\xb42S\
+~\xbf\xc9\xac\x92\xae\x11\xf2p\xd5P\x05Co~q\
+\xe8\xbf'\x19J\xf7S\x91\x8c\x22\xe2OU\x13\x97\x02\
+\xbb\xb8\xce\x99{\xbbp\x22\xd4\xa18|\xc5>e\xf8\
+8\x1c\x99\x91.\x1b\xf4N\x09\xfe\xacj\xc9%\x82'\
+\x9c\x13T\xda\xe7r\xf0\xe6\xc0\x0dMk\xdbaT\xce\
+Lk\xdd\xf4\xd9?\xa8\x1c\xa9Q\x87\xf4\x98\xdc\xf5\xad\
+#\x22{\xdf\x8c\xed\xf3\xad(\xa6\xd3#\x03\xbbG\x05\
+\xac\x85\x13\xb5\x8b\xa9'\xf0.\x5cie\xbc\x22\xdaB\
+\x9c`\xc4\x84\xf2&\x09\x03{\xf8V\x8b\x83-b\x09\
+@\xd9\x95ip\xef\xf1\xd7\xc7?\xef7\xdf\xdeH+\
+\xba\xd91p\xa5\x96\xe91\x0e4Y\xb3 \x9bh\x5c\
+\xac<K\x11'\xd3d\xb0\x8cQ40\xf0\xe1\xeb\x9e\
+.\x0f\xc5e`7\xfc\x80\xedV\x05\xdd\xfbgad\
+\xd5\xc5-:\x09\x99Q>^\xd6\xc2&\xc6\xc0x\x0c\
+\xc3\xe9\xa0V\xba\xb4\x1d\x1a\x90\x8d\x8b\x09\x83\xacc\xaa\
+\xbcr\xc1\x09\x8ft\xeb\xf6\xb5\x95\x09M\x5c\x94\xb8\xbe\
+Y\x11y\xb0\x94\xbcv\xc8\xf5A\x81\xb9\x1b\xe5\xb7G\
+R\xdd\x9cH\xdd%\x01\xb2A\x07\xa0cEN\xe7\xdc\
+M\x89\xbfr\xb2\x8f\xe6\xba;\x90\xc3\x95\x04\xea\x9e\xa3\
+\x00\xcc\xc2\xa2%\x04\xddp\xc1\x1b\xdc\x9f\xe4\xf4\xf7\x98\
+.\x0c\x05#o\xf4Fpu_\x12Wuw\xe6\xda\
+\xc2\x80\x91\xa6\x06\xda@\xe5|\xd4}\xc6\x10\x90\xb1M\
+N\xb6\xaa\x87\xe6_\xb3bo\x9d\xc7\xf8\xca\xc9\xbe\xe8\
+\x80\xd6\x0cf)f\xd1\x7f\x01I\x8c\xcd\x05\x86\xe0\x11\
+4`5\xeaK\xbaR]\xddC12g\x9b\xacd\
+\xebE\xf5i\xec\xd8\xc7rE!\xf0\x85\xc1h\x0c\xb8\
+\xc4NW\xd0\x8e\xa8\x82y\xfa\xaf\x1c\x02\xecC\xc3u\
+hV\xf2]\x1fw\xf0\xa8\xa4z\xb9\xa6B\x8f:\xdd\
+\x0e\xb88\xdb4#\xeb\xc8\x0b\x8f\xc2\xca!\xa4&\xfd\
+\xa9\xae\xb4\xe9\xea\xe4\xe5\x93\xa2\x7f(\xa6\x12v\x02\x97\
+rftAs\x02\xbe\xd1\xa3?\x10\x06Q9\x09?\
+\xa090\x00\xa5uX\x03\xffD\xcb=b\xbcW\x0e\
+,#:\x99qn\xd1P\xc2O>\x82$\x85\xea\xde\
+l\xff[\x0f\xfa\x85\x96\xb5e\x15\x0f\xff~\x22.\x8b\
+\xf1\xc8\x83'\xec\xcd\x85\x91\x95\xd1\x89ya\x14\x9b\xf3\
+=\x83\xbe\xa5\x1ec7\xc4\x13\x16g\x11\xb2\x91\x8d9\
+P\xe6E\x9a\xa8[\x95\x0c\xae`\xab>\xd8~\x92#\
+p&4\x05Zp\x00\x1e\xa4C\xeeJ\xd88\xed\xb2\
+\xf8,\xac\x85\xb3\xb1$}\xeb\x8e6\x81\x8d\xaa\x5cg\
+\x04XN\x82\xd6\xed\xb1KwGo6\x03z\x5c\x01\
+)m\xce6Y\x84;\xf0\x02\x96\xbc\xf4\x19q\xedQ\
+\xfe{\xe1d\xc3\x10\xdb\x8f\xa4\xa8C-\x858\xbb\xdf\
+\x0c\x5c1\x15\xec\x12\x06\xde8Kc\xf9\x99\xb3MV\
+v\xe6tl\xa3\xac\xdaX\xa5\xcf\x93\xe9I\x83b8\
+\xc9\xb4\x08'\x01\xa9\xccl\xf7\x7f\xdb\xbe\xd6\xc7\xd0>\
+\xba\xea7\x15\x96\xaf\x82\xb31\x1b\xea\x06\x9c\x0c4(\
+\xdc\xc9\x11C`<\x00\xc2a\xed2\x9bV\xe2m\x12\
+O\xe9j\xfa\x16\xb2\xa5\x18\xb4\x09\x91\xc2\xect\x83\xbd\
+%\xd1\xbd\xeb'Y\xa8+\xc8T0x\x00\xe32\xd0\
+\xb4+\xe9\x12\xcfY\xc3\x03\x02E\xea\xbb\xee\xcd\xd8\x95\
+@\x0f\x00Ds\xd7K\x0f[\x0a8\x00\x08;\xd7\x9c\
+u\xe4&z\x08\x00\xa6\x85\x0c3\xf8\xc6\xf5\x11\x9a#\
+\x0e\xbf\x80\x02\x14\xe0\x08E\x1d\xab\x82\x8c\x06\xd2\x13{\
+\x01T^\xec\x06\xe2f!\xb8FHZ\xa7\xb0\x11\xc8\
+\xa1\x81\x83\x91k\xf2\xa1\x03\x93\x0e\xf6\xa8\xcb>u\x09\
+i\xc2xn\x1cMN*\x91\x925\xba\x8c\x89\x8e\x80\
+\xaa(\x0e\x09\xc3\x0b#|\x98(\xaa \xb9\x8e\xe0\x13\
+\xa6D2\x86\xbd!\xf9\x90\x07_\xd1O\xe0\xaf\xc1\xa5\
+\x176\xcf\xa4M\xc9:\x17]\xf8\x90pc\xed:\x17\
+\xc7\x09\xc6\x1f$\x84t\xf8\xe4C+\x0e\xe1}\x16\x86\
+\xe8WzL\x0854\xe8z(@\xd9\xe8DX\xac\
+I1\xd2\xcd\xeb\xf9d`0,\x81|\x85\x9c\xe3\x8a\
+i\xa6u\x05\x9cC\xceP\x9d\xc8\x07\x11\xa6Hc\x95\
+\xc0\xed\xc2\xf4\xa4\xac\xe0\x14m\x09:\xe4\xaa\xc3Y\x84\
+f\xc1\xb0\xe9.\xbft%\xf6\x13\xc3\xa0\xab\x9f\xeft\
+\xf15;\xaeO\x04\xc6d\x15Z+3\x91\x01'J\
+9\x15ZP\xa1q\xa0\xce\x13\xc7\xeed\x1aSf\xa8\
+\x8at\x9c\xa6n\x8cCI\xe0\x5c\x08\x05\x83{\xa8x\
+\x0b\xcd\xd0eK\xaa\xa9\x06\xe1\xd4C\xa8H7\xd6S\
+\x91\xfa\x0a\xff>\xd7\xfah\x03\xfe\x0c\x1c\x10-\x12\x9a\
+\x0e\xe5\x9eG\xa2\xc4\xd0/\x19\xd4t\xedD\xc6\xc3@\
+rI\xa0\xd2\xb5\xf6\x06\x22\x10\xa4Z%F\x8ae\xdf\
+\xcb\xf5\x0a\xb9\x15\x15\x04\x10\x92EF\x82\x83\x1c@\xcf\
+\x81f\xde+^\xca\x93\x1b\xeaz\x15]\xf4\x91\x8b8\
+%\xe0 \xb6*\xb3\xc4\xbc\xfaq]\xc6\xb6/\x8e\xe7\
+\xd2\xf9\x0dL\xfb\xa4\x91\xda\x091k\x806\x9c\x9a\x88\
+\xc3\x85\xb4(\x0a\xaa\xdb\x19\xfd@X\xd6Cq\x1c\xfb\
+\xa9\xec\x06-\xc4\x13kf3>\xb1f\xd4\x802\x87\
+\x0f\xef.+\x077L\xd22\xcb\xce\x01\xe0\x1e\xec-\
+vm\xcb\x8a/%\xebR\xb4+\xd2\xa7\xf8\x8a\xac\x9f\
+\x00b\x98\xb4\xb7-\xd4g\xcd1\x03\xd8\xe1\xe1\xbc\xac\
+M\xe4S\xa1\xc6\x97~\xa1h\x11\xc2Sv\xbf\x13\x87\
+M;f\xb3\xb8\x8f\x81)}\xa8\xd9\xc6\x89\x83\x86r\
+\x5cj\x16\xa0\xccpV )K{J\xf1\xb4\xd5\xab\
+\xfb\xb0\xf4\xeds_\x1eMO\x10\x88\x0f[\x8a\xe6\xec\
+\xa6<1mS\x8ep\x93\x08\xc5N\xc6\xd1\x0c\x09\x9f\
+\xb4\x8f\x8f\xf4\xd1\xb0\x8b\x81\x9e\xa4`')\x05\x95\xb9\
+_`h\xc0\xc7~u\x0a\x08\x07\xaf\x12\xa7L\x9e\xa7\
+\xd4\xba\xdf\xa1\x83\x94\xc9\xa6\x90\x13\xbd\xc9u\x05\x10i\
+\xdeO\xaf8y\x11\x18\x06\xc6\xae\xec\xa7\x8a\xc59h\
+\xca \x04\x5c\xef\xfa\x01\x10bn\x9d\xe5Y\x0a$\xf7\
+-D\x0f\x96/2LB:0\xc8j\xf7\xe1\xdew\
+\xa6\xba\x83A\xd4=\x9c\xa7\x8c)\xda\x8da\xb9HB\
+\x0a\xcc/\xe98$f\xde\x151\x87\xadvQ\xcb\x82\
+\xc1\xa1HK\xaage\xdc=+1\xc1\xd7e\xe46\
+\xc6\x0b\x22\x1c\xbb\x0b\xad\x0f\xe9v\x8cp\xaaL'\x04\
+\x03\x09W|\x84\xf8}\xd51\xac\xd5AttLp\
+\x7f\x1e.\x13\xadB)\x85\xa9yM\x10\x7fTh\xaf\
+\x16\x18\x9c@\xcan\xe2\x00\x1a\x17\x11\xe4D\xd4\xbc\x9a\
+A\xb3v\x22\x1b1P\xd6\xa8\x9dPg\x9a4\xa3\x8b\
+Xi\x0c}$v\xcb!\xa8\xd1F\xe5\xce\xfa,\xb2\
+MpYD\xd5\x00\x9cL\xc8&\xc5M\x10\xb7\xaf\x04\
+\x15x\x97+\x07\xca\x98/0\xc4_\xab\xe4\xf0\xa4B\
+\xd6gn~\x05I\xb5\xf12\xd2\x0d\xdaD\xf8^\xfc\
+\x02{\x0b\x96DDj\x81\xee\x8a\x93\x87T\xa7\xbeW\
+\x84\x9c\x97\xe7'\x9aQ\xe1\x10M\x08\xba\x0a\x22S\x92\
+\x88\xad\x9a\xc1\xf7\xd8\xdf\x95IU\xc2O\xac<\xfd\x14\
+\xf4I\x88LN\xe1\xc5\xa14\xf4\x9c\x82\xd4.\x0a8\
+\xa2jv\xb5\x1c\x19\xe6\xf0\x14Q?\x19\x83g\xa5'\
+\x0b\xbb\x95\xc3\xd9\x85\x12\xc8(G(z\x94\x99\xc8m\
+\xdd\x15n}2\x14.\xf0>\x19V\x8b\x93*+O\
+\x134\x97\xb9\xae\x83\xc5Y\x92\x06\x1a\xcc\x8c\xedR\xde\
+7\xdfP\xa53\xf3\x0c\x86G\xb0(\x86t\x88\xc4\x1f\
+e\xd2\x00\xba\x90A\x8f\xbd\xbchZK\x9e?I\xb3\
+UU\xab\xf3\xf2'\x0f\xad\xd5\xd4\xdd\xa6\xaa\xb5\xac\xed\
+\x9d\xed\x9aaL\x1atH&\xf1Z\xe1.yB`\
+\xf2\x93g\xf1O$\xb0j\xe0\xa02M\x99\xe9\x91\x10\
+\xe4\xf3\xef\xe1\xcc\xa1+\xcew\x0b\xea0\xd9x\xbd\xb8\
+k@\x0b\xca\x11\xaan/I&8fS\xb4l\xdf\
+\xf5\x84\x96\x22\xa0\x93E\xe7\xaeo(\xdc\x9ayM]\
+\xd7\x9f*0Cn\xda]Q\xa9\xeb\xd1 \xec\xb2\xf5\
+\xb8\xf8kKaz\xc1\xc5R\xa0\xef@\xd8(\x87\x0f\
+\xee\xcb\xf5~t\xd4\x03.\x92\xe0M\xa1\xc7\x08u\x0b\
+\x0eH\x0b\x0b\x81h\x85\x1a\xd8\xa8z\x82\xeeW\x7f\xc8\
+0\x84\xb3\x84,e\xd2c\x17F(\xcc\xaa\x17\xaaM\
+\x22\x1d/\xc9X\xd3\x02\x8c\xb8\xea\x06#\xc0\xa8\xac\xfa\
+q\xb8\xd1\x18O\x92I\xd40k\xa9\xd4t\xc7V\xa4\
+\xbe\x06\x13m\x22CBO8\xa5\xa0\xab5!\x83s\
+\x9fF\xec\x80R\x01lNh\xd2\x87\xd4\x0e\x82\x97\xa7\
+\x00?\xbaf \xd4\x19\xa1\xe6\x89\x9a\x09\x91J\x93F\
+\x98\xc8\x0a\xbc\xe5*\xf4\xdc),\xc0\xd4=?a\xd1\
+,\xb7\xc5\xdd\x9c\xa8\xd9'\xdf`\xaf3\x8a\x1cSs\
+\xfd\xfcU\xe3B`\x0a\x95Ef\xc0\xf8\x15\xa9\x92\xaa\
+\xd7\xa5\xa5\xc6\x5cu\xa8\xd1n\xd1i\xcc\xb4++\x8c\
+\xd8\xb6\x89\xee\xbajt|\xb0~\x97'\xc7\xa1\x05)\
+L\xa2\xec\x84\x9a\xd5\x04\xdf\xadn%\xea\xc0\xe5\xd1J\
+\x97(\x7fv\xa4\x09\x1d\xf9\xf1\xc8\xe9f\x12\xdc\xd8\xa9\
+\xc5\xefo\x5cs\xe8\xb8&N)O\xf3\x15\x1f\x03@\
+|\xe4\x14\x10\xc6\xe3\x89\xfa\x1c\xac\x93\xae\x80\xe7`u\
+.;XGQ\x87\xa2[C\xc1\xd8u.|*\xcf\
+\x9c\x5c\xc2\xb9B-\xd6\xf3'\xee\x02\xa0\xabo\xe2\x18\
+k\xac\x0b\xad\x17\xe5\x19\xc0\xa5\x9f\x92\xb5m\xa02_\
+\xaa\x9f\xc4\x08w\x0a\x1c,\x93j5\xabE\xb1\xf8\xa4\
+\xb4\x82\xfdP\xf2,1z0'\x00\xcbsJZ\x89\
+\xca\xf5`p\xec\xc9P\xce\x1a\xc5`W\xb05\xb3o\
+\x0f\xedf\x8543\x87\xed\x92Z\x05\x95\x9deY\xb9\
+\xdf\xab\xd4\x17\x94\x92\xb8dxiFk?\x88\xa3\x07\
+\x0e\xf4\xc3\xbcK\x1d\xdaw\xfdZ7\xa5\x12z3!\
+Z\xc8\x18\xbb\x06\xa0{\x80\xd2k|\x7f\x11\x12\xec\xf3\
+\xc0\x11\x9a\xddz\x08\xfdE\xcc7\x06E\xa3>M%\
+<66\xfd\xa5\x10l\xa6\x94\x05\xd43|^U;\
+\x9a\x98\x13P\xed\xbb\xcf\x80F\xe5\x1aX\xf1G\x9c\x09\
+$\x05\xed\x07\xb0rR\xae@\x9e\x84S\xef\x0c\x16\xe2\
++\xefrz\xa1Y\xc2ng.C}\xc0j3\xb8\
+\x1b\xa5y\x01\xd1\xd3\xe5\x02E\x9b =\x22e\xad\x1c\
+\xcf5'\x1d\x16I\x1e\x84eL~D\xf2\x9e4c\
+\x04\xc2\x96+\x8e\x82\xbb!'\xb9\xec\xb2\x9e80U\
+i\xe6\x88\xcd\xb8\xd1\xee\x14\x0f\x97|\xe0\x1e\xdeE\xc7\
+\xb9A\xdf\x5c7ZQ\x92)e\xe3x\xebH\xae\xc2\
+QG\x82OW@\xe2s>\x02\x97\xef=G\x7fm\
+\x01!\xcb]C=\x15\x1c&\x19\x90S\x85\x16z\xea\
+\x08\x02\xdc\x1fHfk%\x0a\xe4[\x1c\x9a\x9f.\xd5\
+^G\xd2\xbc-^h<\x91\xf3u]l\xcc\xd1 \
+4}\xd2\xc9}\x0a\xae]\x11\xf80\x85\xd4\x1fB?\
+\xcb\x0a\xec\xe2FGU\x0d\x03\x88\x0f\x86\x0c%%5\
+\xb8\xcdk\x1f\xd8\xd7\xaf~=\x81\x00\xce2\xad\xaf\xc9\
+\x85\x88\xdf\x9c\x14\xa6\xbf@q=\xba\x9b4#\xb5\x8f\
+\xea*\x9a\xce\xf5f\xb9nc/\xc0\xdd+\x8bS\x94\
+Bz3R\xf6\xf9i\x17\x0c\x02\xa8\x95\xb7pL\xc4\
+\xc2Tf\x0a\x9e\x1e1\xceG\x84\xd4:\x06\xbb|b\
+j\xdf\x1c8\xae\x95\x98\xa8\xf2N)<@~\xfa\xcd\
+\x88J\xf30@\x13\xa6\xb7\xfae\xe7>\x0b\xe4\xbdY\
+\x9aXhV\x81\x90y\xb8Ze\xe0^.\x0c\x94L\
+\xa4\xf4\xeb\x84'\x0e\x13\xda\x0c\xc1}3\xa2\x82\xfb\xb4\
+\xdaweA:\x10\xe8\x96\x9f\xff\xc1I6Q\xc7\x14\
+t[\xe9?\xf8\xac\x0b\x07\x9b\x8c5\xb3\x8aqp\x93\
+K\xb2\xe1\x01o\xe5\xb0\xe3\xc7K\x8d\xbdH+=\x1a\
+lB\x1a\xf4\xb6p\xe6\xa2\xf2\xfb\x22\xe1\xb5L\x84\x8e\
+\x95c(\xe3-R\x11T\x1a\xe2\xe1j\xbb\xbf8\x88\
+N\xe0+\xda\xa1j\xe3Y\x05@\x19\xd0\xb8\xdd\x0b\x03\
+\xbe\x10Ns\xc4Ng\xb9\xee\xa6\xbfva$+\xcb\
+[\xa4J <\x91\x93\xfe\xa9\x0a\xb6p\x92\xb3\x8dK\
+\xe4\x13\xec\x96\xcb\xb5\x06\x82\xc0\xc2\xfa\xe0\xfbTAw\
+'\xdf\xfd@\xfb\x18^8\x0e\xb4\x97\x07U)\x08\xae\
+\xe6\x1a\xd9\x03/:Q\xcep\xd2\xb2\x16\xcda\xbf\xad\
+\xe9\xcd\x8c\xd8\x15\x87B,\xe7\xe0\x1dg\xec\xe3\x17#\
+\xc1z\xd1\xaa \x91\x15\xea\xb1M\xc6=\x93\x16\xe6#\
+QQ\xd6!q\x80\x03\xe7\xd0\xb5\xe9Izs6\x9d\
+u\x9c>'M7;\x07\x1e`\xcfo\x0e\xdcS\xdc\
+\xf8\x01\x1b~\xcauz\xce\xcaoMSl\x06K\xb5\
+\x1c\xda\x16\xdcG\xe1\x9aj\x01X\xbap6\xfa\xf9\xb4\
+\xa6\x22\xadE\xfe\x84\x099\xb00\xb0m\x8eO\xcat\
+(\xe6\x9b\xfd\xd1\xf7GUw.\xf9i\x01\xd0\xech\
+t\x9eLi\x9f$\x96\x17g\xfb\x80\xa7G\x84\x7fM\
+3\xb7\xd0+{\xe1 \xc6FK\xca\xadJ\xe1\xc4+\
+\x11 d\xd6\xe4\xb0\xf2\x19s\xb7\xbd\xc1wON\x89\
+\x04\xa9\x85\xc3\xa8\x18\xce\xa7\xd3s\xecF\xc9a\x22{\
+\xd3v@gF\x08\x12\x93\x8b\xb8\xb2\x97\x91O\xde\x1c\
+\xb6N\xc1|FJ\x9f\x89\xe1\x13\xd6{\xe1\xb0T[\
+S\x18 \xa7~wxH\x9a5S\x17\x0e\xb1\xe0\x08\
+Xo\xac\xf5]V\x834\x91\x0d\xde\x9c\xc0\xfbA\x0c\
+D\xfa\xc0\xff\x94i\xc4\x99\x18G\x13\xd3\xd7XL\x1e\
+\x1f'\xd8\x5c\x91\xd9\xec\xaa\x9b]\xe97\x11\xf8\xa7\x0b\
+]\xda\x03\xe9\xc3\x11c\x84\xf5bE\xb3\xee9\xf5\x88\
+Ep\x9f\xb1\xf6\xf2t[\xba\x0ec`)\xb0x[\
+\x12\xd8\x8a\x92\x94\x02\x84b\x86\x14\xc5\x1a\x98\xf8\xf4\x81\
+:A\xcfb\x0a4\x9d\xab\x87j'\xce6Y\xc9\xa0\
+\x14\x0ee\xf0\xf8\xe9\xe7\xf7\x9b\xc4\xa3\xb0\xf6\xc8;\xa9\
+?m\x8f\xc1\x8c\xb17cN\xd6\xee\xe3&\x0e\xcd=\
+\xb2\xf1\x88\x04\xe7\xf2\xd8\xb8~\xa0\xfbQ\xc5X\x07\xaf\
+]\xe3\xc9\x96\x8eyR\xa7\xf2>\xcc\x1d\xa0\x865\xa8\
+\xbbcjq\xe8\x85\xe2\x92\x84\x1f\xfd\xfb\x8b\x83\xc3;\
+\x0a\x1d\xb0\x9dqV\xa7\xae\x98\xd0{e\x81\xe6\xaa\xa5\
+\xccr\xb6\x19\x0bVM]\xe9\xc9I3\xaa\xa9X\xf2\
+f9o\xcaT\xebsT\xac\xb2>\xa6\xda\x0ax\x80\
+/x\xd3\x9b\xc5\xdc\xfb\x11'\x9f\x96\x88;\xb0\x18t\
+h\xed\xfd\xc5I\x82\xae\xd9\x22N(\x19\xb6c\xc6\x10\
+-\x0cL\x0e\xa7\xb3\x08w\x99\xe5\xf6\x1aC\xe4x\xca\
+n\xfc\x01\xe5\x8bc\xf4!\xadI;\x0e\x14j\xa6D\
+\xf1\x0c\x9f\xc8>\x11*\xc3\x05\x7f#\xafj\x9c\xc3\x0e\
+C\xfa\xcdZ\xbe\xfa\xbb~\xf1\xcd\x89\xcc\xb0\xf9\x8d\xe2\
+\x80\xde:SX\xa6.Y\x8bS\xdal\x91\xa8>\xce\
+C,\xd6\xb9\x0d\xabp\xb8\x0c@\x81\x88\x0cKw\xef\
+[\x87M:>\xea\x93\xd2\x16\xaf\x00\x1d=\x95\xde\xf4\
+\xa27\xff\xe4\xfd\x88\x85LuX\xc7\xf1\x89\xc1\xcaQ\
+/\xae\x96O\xdc\x16\xba!\x8d\xdf\x81]Lu`\x94\
+\xe2DJ\x8f \x06D\xc7c\xf0\xa2\xde\x87\xb5\x94/\
+\xce\xf6\x13%\xe05!C\xa7~\xce\x96\x03hj\x5c\
+J\x141\x119g\xcd\x85\xbf\xab\xc5\xf2C\x17\xa8\x1f\
+\xe1_|Y\x95~\xe9\xfd_?\xb2=\x16\x843\xf7\
+N\xd7\x7fVf\xfddL\xfa\xfe\xe2$!\x85\xcf\xd9\
+\x8e\xca\xe8\x9a\xed\xed)\xde\xab.\x88\xddB\xf2\xe8\x13\
+\xb1\xfeI\x87Q\xe2\xa4N\xa3e\x98\x99\xff\xb71\x00\
+\x86\x0b7p\x8f\x8a\x11u~\xbb\xe0\xfa\xfb^\x87\x88\
+\x17WWw\x9d\xc9\xff@\x85u\x15\x16\x84\xcb\xbb\xaa\
+\xc0\xfa\x8ba\xddF\x15p\x14\xdbs\xb8\x94\xbdt\x1f\
+1\xb6\xe0\xa4\x88\xe1m\xaeO\xef\xbc6\xfc\xb9\xffG\
+\xea\xb1{\x86\x12\xcbF\x11\xb5n\xe1xa\xea^=\
+\xf3w\xb9Z\x98j4\xf3w\x83\x15\xc5\x83\xdb\xa1\x12\
+\xf1I\x13\x8a\x9e\x1d\xff\x91\x06) X\xa5m\xd9\x9e\
+\x17#\xf6&Wo\x9f)\xb9\xc4\xdas\x0cW\x97\xa6\
+\x15\xac\xe40U\x16\x11\xaaq\xd0a\xc0\x92\x86\xf4\xcd\
+\x80HU\xfa\x96\xfa\xbfY\xa9\xc0B\xdc\xdb\x7fhH\
+%(\xf1\x02\x97\xb9_8*\xd9w\xba\xce\xde,\xc2\
+\xee\x06\xde\xa6\xb7\xd9b\x9fp\xa9\xca\xef\xea\x92\xe8 \
+\xb3\xb3|_\x0c\xe8\x9e\xca\xcd:9![\x88n\x96\
+2\x9b]\xf8\x18,\x1a\xce&ES\x94\x93f\x7f8\
+\x89\xab\x12Pa\xe0\xa3\x85\x96\xe1\xf4*\xf1\xf2&\xef\
+\x08\xf7\xdbh\xe4\x8cx?\xa6};\xfe~\xa5m6\
+\xa6\xe7\xc8\x07d i\x8e\x8d-\xa4\xc17\x83\x1b\xdd\
+\xea]U\xd4!-\xb0L\x0co\x7fK\xdf\xcc\xea\x13\
+\x0cX\xd15>[\x01\xca\xbb\x01\xb8^\xe4M\xa3,\
+5,\xeb\xb0\xb3NT2\xda\xd1\xc2\xf8\x91\xaf\xf1\xb2\
+7\x95!XQJj\x97$Xi\xb9\xa9p\xda$\
+\xe3QG\xb8e\x8a\xb0\xaf\x85F\xa0\x86u\xd3]c\
+\x81\x00N.i\x85\xb7m+\x83?q\xbe\x81\x81\xe6\
+\x10\xcc\xe1rj\xc2I|\x91\x0a\x9cQ\x12\xc8\xde'\
+4\x1f4\xc9\xdd\xe9\x85oR^\x5c2p\xbb\x98\xe5\
+\xab\x9c\x98fr\xfb$\xaa\xc5P'\x87-'c\x15\
+\xf8\xf97y\xab\xca\xd8)\x07\xa7P\xe1B36\xc0\
+\xfdJ\x7f0\xd3\xe2\x01\x87\xa0b\xfc\x85[\xe65\x1a\
+\x8c\xe9\xff\x93\xdb\xdb\xd0\x93\xca\xae\x93\xd6\xb5\xd2\x0a\xcb\
+Q*\x5cq\xe4_\xd5G\x93\x11\x1c\x9f\x94BS\x98\
+\x8e\x97>\x00\x91\xcc\xb5K\xca\xbdA\xc4\x0co\x04\x8a\
+\x81e\xdcp5b_L\xb5\xe3G\xe9\x89\xbb\xae/\
+\xfa\xf3\x91\x141\x80\xd5pZ\xc9A\xacfLZ\x91\
+&:\xd3\x8d\xd9\xe7,\xdb$\x1c\xd17\xa9Vi\xd9\
+;\xdb\x85\xd5\xb6\x9d\xed\x12\xe1\x95O\xfa\x16\xc6iV\
+iQ\x852z\xcd\xbbB{\xf6\xa9~\xcc^\xd8&\
+\xeaj\xee\xaa\x88\x9a\x5c\x82\xfeM\xdd\xfcue\xae\xe6\
+\xf1\xcag\x80n\xa8\xaf\xbdi\xb5G\xc5\x86\xf7_.\
+4\xf5\xc9\xfd\xdc\x16\xfa\xd1\x9a\xe2\x04\x0b\xabo\x91\x9b\
+\xb3\xd2\xb7#\x82\x086\xe0 \xebC\xc9\x84\xc9\x97\xdd\
+\x95~L\x5c<a[\xad\x009\xb6\xf8\xf7=\x97I\
+\xe2\xc5J)U\x90P\xbb\xe2\xf9\xdf\xe4\xfd\x13\xf1\xbd\
+N\xa2\xd1\xe9\x90\x84\xf9\xcbU\xf7&\xef\x89\xa0\xa9b\
+w\xb1\xeaiy~S\xdb<\xbd\x908_\xd35\x93\
+>ZT\xc9\xd2\xa9~~\x8e!\x89kY\xa6\xb3\xcb\
+\xd2\xf7\x00U|\xd1n\x89\x13v\x14\x85\xc8\x9b\x15\xee\
+*\xd9X\x7f\x0fR\xe1O\xc0*\x8f\x81\xf1\xa2\xb29\
+a!\x15\xfb\x04\x0d.\x06\xf9t\x96W\x80\x1b\x9cN\
+\xf5{b\x1fH\x1e\xc4\xc8\xcd\x0c{\xaf\xbb\x85V8\
+\x0f\x0b<@\x05\xde\xe6\xef\xe7\x17_\xe4\x1d\x91\xcfX\
+F\x8c\x089\x95\xb1U\x22\xde\xf7Ins\xe1SW\
+\xd1\xf3<\x94\x93\x0d\x8a\x0b\xa9t\x1am*\x87A\x87\
+36=r^\xb8q\xeb\xec\xb1\x1d\x9dI\x10\x83\xbf\
+\x05\x0d\xdb\xe6\xbet=\x22\xef\xebme\xe0\x0dWl\
+}%\xbe\xed\xb1\xb1\x9dW\xba\xd07-\x0a\x1a\xf7\xd3\
+9\x97\x91\x5c\xde\x9c0\xb8\xd07-H|Is^\
+e\xf2\xc0\xca\xcc\xb8\xad\x0c\xfc\xc4\xd0\xa5,UX\xcb\
+\xe7\x09\x1f\x9b+=\x7f\xb1Q\xaa*\x056\x0eR\x19\
+CWZ\x09dM\xdeb&\xc0J\xe69\x05d+\
+\x86ge\x04\xf8\xcf#\xc9\xdd\xc6\x1b\x5c\xf5\x94\xfd\xad\
+\x9c\xc97y\xcf\xcc\xcf-4\x87bO\x0fB\x8f\x5c\
+\x97\xe1A\xdeDq\x94X5TA\x0a\xf1%O\xe0\
+\xb62\xee\x9f\xc8\xcc\xcf\xb6v\xc0\x8c\xa2<N\xe2^\
+\xbc\xa8{\xd2\x1b\x04#\xb3u\x02 \xd6w\xc4\x95\xd6\
+\xa8R&\x1a\xb4f>q\x08\x92\xf6M\xabE<<\
+\x95\x09\x1dH\xaf\xeeP\xb4\xf6h3+\xd9\x85)\x93\
+\xdf\x16\x88\xd7\xc7\x13\x98\xc0\xe4\x1dy\xe3Q\xefpf\
+N\xcfd[\xd1\xdb\x03\xf1\x16\xabQ\xb0\xe1\xb1p\x9c\
+\x9fk\xcc\xdc\x95\xbe\x99:\xadBr6l\x96\x00l\
+\xb5\xa9\x90\xf8\xfe\xc7\x15\x89\xe7\xdc\x13\x01#,\xd3`\
+\xe48!\x1a\x9f\xa3\x96\x1c\x95\x1f\x0cMv\xeb\x13Z\
+y6\xc3Qq+\xadD1\x01'w\x1d\xc7\xd1\x8c\
+\xb2{0\x16\xfa\xa6)\x0f6\x83=F\xc7\x96\x93H\
+;w\xad\xbaO^z\xf8^\x9c\xdf\x99m\x92%\xa2\
+\xc4\x9e\xbf\xe8;\xb2\x1c\xa7\xb5.\x1a\xe9B\xa6\x0b\xf9\
+iQr\x94m$\x9be'\xa3=\xc9\xcd\xef?\xf2\
+\xe7\xef\xce/,\xc5I\x83o\xfa\xe6\x11\x7f\xe4\x09\xa8\
+J\xac\xf8\xc6\xccr\x01\x88\x8b\x0e2\x82L\xc3\xd6\x94\
+\xed.q\x94\xc2B2PV\x11\x09\x94.\x92WD\
+d\xec_\xe4M-K~]\xa5n\x84\xc9\xc9n\xde\
+me|\xee\x0d\xe1}a\x8c\xf8%\xef\x0c\xd5\x98\x85\
+VZ\x96,!g\x18\xed\x22\xf2\xf6\xb0\x9f5\xb2&\
+\x95\xb1\xbe\xd27\xd5\xccb\xeb\xa7<\xc5\x06\xef\x8d<\
+\xc8\x95\x9e\xf74\x8e\x22\xe5\xaaoY\x91Iiz\xfb\
+y\xe4Z&\xaf\x9c\xe2\x0bD\xcc\x83ov\x0b}O\
+\x1cc\x1b\xf5t\x95\x939M \xcbv\xe0\xd4+.\
+,\xf6\xd7V\x97\xfc3hq\xf1Q\x14\xf4\x16\x0c\x0d\
+\xde\xc7\xfd7=\xc2*\x98\xfb\xa2\xeeO \x95Up\
+\xdf<\x05\xd2\xc9\x0b\xb1\xaf\xa2\xe5\x03\x9bu\xd9\xd0\x15\
+\x0bD\x06\xfc\xc8p}\x93\x5c\xeb\xaei\x1aN\xa9\x1c\
+\xc8\x13N\xc4_i%\x11(\xbb\xd4\xfb\xa1\x04$\x9f\
+\xa77O\x83mL7\xd4\xcfH\xa3\x0d\x0c\xf2^\xed\
+\x11~\x11\xb7\xc1\xcf\xb7\x99Z:\x93\xc8\x9a\xd1\xf8_\
+\xe4\x1d\xf0\xfc%\xe0\xf2\x9d\xa0\x10\xfd/*\xe2\xfa\xd8\
+!\xc5\xc9F\xf6'G^\x96\xa7p!\x95\xd0\xa0\xa2\
+\xca\x91\x16\x16\x88\x13u\x02\xe6?H\xdd\x92\x99\xe1+\
+e\xe7\xb72P>E\x98\xe3\x17\xdb\x04L\x9e\xaf\x98\
+Y\xfbq\x09\x0c\xc8e\x22\xad\x9dBz\xe4&\xad\xbb\
+\x7f\x91\xe2\xcc*rx&k\xc5%\x0eM\x99\xeeW\
+Zs\xa2\xfabm\xd6\x01\xd0\xa9eg\x8d\x19\x0f\xe7\
+\xcd\xcc\xc4P\x89-b\x91a\xe9\xfc-\xb9)7G\
+\xce\x9e\xb8B:ql7\xee\xd3B\xeb\xf8\x8a\x92r\
+\x5c}\xc7e\x97\xf6\xeeKe\xd4\x9a\x89p\xb6\xa6\x88\
+\xba\xc8Z\x0dc\xf2\xae\xa0\x93\x95\xde\x94\xc5\xd4\xeb\xc4\
+\xf2\xc0q\x9bT\xa9\x5cg\xb7\xa5U\x0a\x9d0\x9f\x81\
+y\x92g\xa3\x95\x81\x17\xc5(\xa6\xd9~&\xe6D\xd8\
+I\xec!\x81,\xd8e\xff\xa6nAjhI\xdb\x1a\
+d\x83\xbcM\xe6TS.-\xc9#\x12:\xe4\xbd\x90\
+\xbed!\xb0\x05\xdcd\xdc\xdc?\xd1]\x9fWxj\
+\xc3\xac\xaf\x89\x0b\x0f\xbf}\x1b\x9b\x92H\xae\xee\xd8\x85\
+\xb8\x039\xa5\xddQ2\xd3\xf7\xc5\xf4\x05\xe3\xa7H\xbc\
+:\xbc\x99\x17\x18\xb8B\xfb\xcf\xa7\xf6(k\xbb4\xe3\
+\xd4tU\xb4bmMy\x0c\x17\x92\xcf\xf3\x8a\xc27\
+]\x86\x0c\x12\xe4\xfd\x8b\xba'p\x5c@\xee\xe5(\x08\
+}\x04\x00\xc2\x8b\x96\xa07l\xa4\x866\xd2\xcas\x0d\
+\xcc\xf5\x0f%\xad@\xd8\x8b\xa7\x152\xed\xc1-\x1b\xae\
+c\x0f\xc8\x92\xb0O\x85/\xd9\xf0&\xe1\xa7-\x067\
+]\xe8{\x9b\xd0\xec\xb8\xf3R\x83\xb3\x17\x22\xdbm\xb8\
+\xd2w\xc0\x09\xe4O\xe2\xbf\xb0\x1a\x8d\xf1g\xc6\xa4o\
+\x8e;G!;-]\xba\x14\x0ea\x9e\x13/\x92c\
+\xa4\x5c\xfdlL\x9f\xc8\xec\xcc9r\xd6\xdf\xb4\xaej\
+2`1\xd3\xf5rao\xe3\x0aY\xb7\xca\x13f\xc8\
+\x89\x9d\xd3\x04wY\x05\xb5\xf1t\xa17\xf7\x99\x0a}\
+2d\x87\x83$\xb2n\xf8\x0by\xab*WQJ\xc8\
+aT\x0d\x01f9\x8d\xdc\x8cI\x7fP\x17R(\xc6\
+v[\x07\xf6\xcb\x8b\xdc\xac\xc4\xea\x1e\x16 \xfa6#\
+(2`!oN\x0c=\x08\xba\x05j\x1au\xbbM\
+\xae\x8d\x85;\xfc9\xa5\x96\x17ob\x99K\xdf\x02N\
+y`\x8c\xcc\xf8\xa45q\x86\x1e\xa36\x11\x07\x1b\x1e\
+\x90Y\xe0M\xcb\xf2!?\x92\x13\xa8\xe5\xaa\xdb>?\
+\xb1\xef\xee\xf9\x93\xf8j\x97\xa5\xe7\xf4e\xf5,R|\
+\x9f\xa4\x10\x0f\xec\xba\xb2j\xef\xd4\xe44s\xb6\xdf\xb4\
+\xac\x13\xba>\xcb\x8e\xd5\x04y\x90\x22_\xb1i\xe6\x02\
+qGie4\xd8x`\xcf0z\xdb\x9a\xfa\xa67\
+k\xef]a\xb5j\x83\x9a\xe8;\xd3B\xde<\xff\xf8\
+\xb8\x0es\x1f~[\x16\xfcM\xd09\xe0q\x0c\x94\x91\
+\x1d\x8e2\xff\x9e\xe2\xae\xf0\xa6y\xf8^\xb6ZK\xe1\
+q\x87\xb0\x85C`=\xe9\x8f\x01\x0a\xa7\x02\xb7\xcc\x19\
+\xd8\xa8\x96'2\x11\xe5p+\xe7GE(\xa1\xc6\x9c\
+\x9a+]0\xfcu\x17?\x0a_\xa2i\xe5\xd4\xe9\x1e\
+*\xf5g\xd6l\xb6\xe2\xb1\xd0\xf3v\xe4\xe8\x93\xed\x03\
+\xc2\x12\xa8\x17\xdd\xda\xcf\xb4M\x86\x00\x09\xa1~6?\
+`7\xc5i3j0\xeeO\xb2\x7f\xe8\x0dq!\xd9\
+]he\xa1ovL\xdaJ\xf6%\xb2\xf9\x96\x7f\xc5\
+\xd5\xeaMki\xb1\xd0\x1cN\xacR&\xc2G\xdc\xc8\
+Mo\x8f+\xbae\xfd,\xd4c\x04*\xdb\xb0\x16R\
+\xa6\xbb\xe6U\xaa\xca4\x16q\xdeOo\x92\xaa\xe6O\
+T[\x0b\xfbz\x8e\x13\xe1MoV\x1c\x04\xebe\xd5\
+7@\xb6\x0eW\xf2Yh\xb5\x9f\x0d:\xd4\x80\xe6;\
+V@5G\xcaw\xd0\xf7\x17'\x07\x10n\x0d\x0d\xcd\
+R\xaf\xb6@@\x0cm#\xa0\xc20\x0a\x82\x0e\xf3\x12\
+\xb4\x99\xa3\xcc\xca=\xcd\xe8\xc1\xc5\xd8\x10-\x22\x9c\xca\
+9?\xaa\x1d\xf1\xc1M\xb0\x95\xab\xd8\xc8`\x17\x89\x05\
+\xe7\x9b\xdclx\xa7\x5c+\xc5\x9bDj}\x16P\x1d\
+\x1as\x08%E\xb7\x06;\x92J\x04\x07\x1bOc\x0b\
+u`\xfa\x89\xfe\x96\xbc\xbf\xff\xee\xc8\xb2b\xb3m\xb2\
+\x18-\xd3\xcd\xe4@\xa8\xf0d\xe6\x10\xec\xc5\x93\xb9\xd0\
+7\x85\xd9\xe1\x0b\xbd\xc4\x9f\xb5\x8d\x18\xb5\xdd\xe5r>\
+.\x0e\x9bf\xac\xc1\xe4\x09.m\xbf\xd3n\x04\xdd\x5c\
+}\xda\xf1\x5c\xa6\x8e\x84\xdeg\xa5D\x19\xebZ\x96\x80\
+7\xad\xc8\x0c\x81l; \xec\xfchi\xf4\x12/\xf4\
+'`\x04k\x12'\xf9)\x5cf\xbbqLny\xba\
+u>_p\x98<\xd3\xd8e#x\xfe[\x01\xe0\x81\
+\xaem\xd0\x14F\xa2\xb0\xa2Y\x0d:\xc8\xdb\xb8,\xc4\
+\xbe\x1d\x07\xaeCc\x0d\x84\x8dB+\x8b\xd3\x5c\xe0\xba\
+\xdf\x9e\xf4%D\x04\xde\xf6\xaa\xc0\x1a\x00&\x088e\
+\xe5D\x9c\x0f\xb6\xaa\xe2\x934\x0aG\x5c\xef\x8c'\xbd\
+M\xc4\xe8\xd4\xbc^\x22\xc4y\xa1\xef\xbfy\xe2p\x7f\
+}D\xa2\xe9r\xb7G%\xb3Y\x9ePW\x07\x98\xf3\
+\x89\xe1\xe9@\xde7y\x9b\xb1\xbd\xa0\xc6),l\x9a\
+]{\xc9\xf1\xfa\x1a\x8b\x7f\xa7,$\xb4\x7f\xe3\xc4$\
+\xd4\xdb!\x06\x90\xf0<Jc\x85[\x08\x06\x024\xf4\
+gUHY\xe5\x1fU#\x0f\x1cK\x8f2\x8e\x18\xbd\
+\x85\xbc\x81\xf0\xc6\x02\xbaH8DE\xe7\x8b\xc5\x11X\
+\x02\xae\xb0\xd2\xe5e\xc9\xe0C\xee\xcd\x81\x1b\xad\xf3\x9e\
+\x93\x90~\xb96\x9eu$\xd7\xfe\xa0\xdb%\xea\xdb4\
+-\x94\xc7CH\xd6c\xa7Y\xa6\x1a\xbfR\xbcj9\
+%\xab\x01f\x12\x85\x18\x9f\xbdF\xf8\xcb\xe6n\xbf\xba\
+\x89p\xe07\xf9\xeeu\xbf\x9e\xbd\xae)\xbb\x8f\x92\x7f\
+:\xa4\x1e\xbd&h{a\x1a \xc1{\xf6km\xfd\
+\xd2ku\xe8\x914s\x05\xa6\xe5\xe8[cM\xdf\xea\
+\xde\x89\x01\x08\xb3\xb3P\x9f`)\xcf g\x99h1\
+6\x89\xe7\xf6\xf9\xf9\xa9\x15\xf2\x81\xccT.6\x13z\
+\x1f\x7f\x87\xf5\xe6\xf8\x99\xbf&\xb9=\xdf\x1f\x0f\xf8\xfb\
+\xc7\xbbu\xef\xd6\xb3\xb3k\x87\xfe\xda\x9c\xe5\x93wc\
+\xec\xbd\xe9\xf0(_4\xb3\x9e\x81N\x19\xc1/o\xc6\
+\x06xmnN+=Q\x8du\x97\xa1M\x88l\xa0\
+\xa09_*\xf4\x22\x13\xe7\xf1#\x0cw\x92\xa5+\xca\
+\xdar{\x17:t\xc4\x86\x22\x14D\x91\xe8o\xfa\xfe\
+~B\xc5\xee6^\xe5\x14\xba\xeb\xfe\xa70\x9c\xc0\xcb\
+\xcd\x13\xe7\xf1\x04%R\x12\x8a\xd5\x8bT\x94\xee\xfb\x81\
+\xf0\x99X\x0d\xa4\xcf\xd7\xc3\x17\xe1\xe5o\x8e\xc3\xcde\
+\x80f\xf5X\x87]u{'\xde\xf4\xa9:\xd8\xb8n\
+Dep\x00s\x1b\xab\xf06c\x9b\x1c\x8dq\xf2\x12\
+\xb1M\xfb\xf1\xf8\x9ba\x03\x063\xe9\x88\x96\xae\x0b\xa1\
+\x8b\x8e\xdb\x0bk\xfc\xad\xdf+\x03\x09\xb3\xcc\x8ek\x84\
+\xd30\xf07\xfe\x8a\xeb\xc9\xfd3\xefb\x8a\xa6h\x0a\
+\xb6\x82!\x1e7\xb7\x85\xbcWFu\xc7Qqs\x08\
+\xb2\xf7\xb2\xc4Z^\x17.\x91\xbe,\xd4>E\x8c\x1c\
+a\x11K\xf6\xcf\xca8|\xb7\x92\xb3\xc3\x17\xd8\xf0\x8d\
+\xde\x0bc\xfb\xb1\xbd<\x1e\xb8\xe2\xe2\x1f\x1b\xc2\x93\xa7\
+U<\x97pxF#\xb8]+Z\x8b\xfc\xc9\x09!\
+\xe1\xb9\xf7\xc7\xd2\x15\xc8\xec\x0b\xc379=\xbd\xcd\x09\
+\x882\xaao\xba\x7f\x1c\xcd\x10\x84\xae\xb9\x9bf\xd9\xe1\
+7c\x8b\x85\xe4T4\xdd)S\x5c\x03\x9c\xd8\x9c\x0c\
+\xb3\xd6#\x92\x90S\xef\x9a\xca\xc4\x8c\xa3f\x1b\x9fn\
+\x02D\x8d\xf0\x04\xff8\xa2\x01&\x8c\xdb\xa9\xfc\x91`\
+4Ecl\xd1\x94\xd6\x0ct\x1f\xcay\x84\x0d\x19\xf9\
+Kz\x09\xae\xcfC?\x80\x98\xc7\xa2\x9a\x11ec\xdd\
+\xac+\x82\xd2=\x16\xce\x94we\xca\xf9\xb6+\x0d\x1b\
+\x9a\x93\xef\x16L\xa2Eq\x05\xedT\xea\xa2\xdf\xed\xba\
+\xdc1\xb5{[\xfa\xf5\xdd\xef\xf7\xb8,\xa3\xf6=\xaa\
+\xefA_f\xe4k\xbe\x9e\x93\xb9N\xf5\xd7Z(D\
+;\xe2Q\x90O\x9c1\xc0\x9bQ63\x9a\x09p\x0f\
+\xc6\x06\xbb\x18\xfb\x87\xde~l\xdb\xd0\x988\xf4c\x86\
+x\x9dD\xf4K\x866t\xa4\xb6--\xbeb\xa5n\
+\xe4\xd9\xfb\xc7\xc1\xde\xc9e\xc8c\x9e\x1dc\xe68\x9a\
+86}g\x8b\xa8\x87\xf9nc\xfe\xb6\xee\xb9\x8aP\
+\xcf\x98\x9dh\x8bC\x9a}oV\xbe\xd8\xa7\xe1\x11\xa3\
+\xd3\x1d\xe0\xad\x10\x9f\xf9\xe3\xdd`\x00Za\xcf\x05\xf3\
+7\x15\x93\x0c\xca$\xa9\xf8\xe7M\xda\xdb\x10\xa1y\x0a\
+-\xfa\x00J\xbf\xe8\x0dO7\xdd\xec\xa0\xcb\xda\xe4\x9e\
+]\x1f\xe1v#\xb3s\xa5B\xb7\xf6}N\xb5*\x8d\
+\x96\xbf}\x06$;A1*\x95\xda\xf6|\xba`u\
+\xf5p\x9f\xcdU\xc4u\x149\x9c]\xd5s7,\xa0\
+C\xe8k.(\x1fum\xd5\x91(\xf8\xed\xe0\xf7\x85\
+\xbc\x17\xc6\xf6cd\xd7\x1c\xe9{\xf6\x8a\xe2V\x1eI\
+>oN\xb7\x22\xd0\x9cV\xa6\x91\xd9\xf2\x04\x01\x9ey\
+T\xe6\x84M\xf9\x0c!\xed\x88\x8e>\xd3b\x85z\xc0\
+2\xec\x94\xb7\xfb\xa7\xec6%\xa9K\x92\x9f\x81_\xbe\
+0f\x8btHu_1\x9a\xf08)\xc7UlH\
+w\x0e[\x8f\xb2\xe2\x9bb.f\xf1\xcby/Tw\
+]\x874G\xe6\xc7\xa3\xc6\x16\xed[\xd3\x14\xa1\xb6\xb6\
+4W\x02\xd7\x8dt\x8a\x5c\x22\x22\xed\xcd\xe02\xebu\
+\x96\xdb:|\xa1\x8ejQ\x81\xe4\x9e\xe5p\x89\xe35\
+\xeb\xda1\xc9\x1a\xeblr\xb4w\x0e\x9b\xffu\x03\x04\
+\x14P\x8a\xab\xd8\x83p\x8eh\xde\xe7\x19\xcf[\xdd\x1e\
+Wn\x1e\xeb\xcf]\xf5\xa8\x02\x17\x96\x96=Y\xc3}\
+\xd1\x0eC\x8d@\xe8\x08j\x8c\xe8\xa6\x17\xbd\xe1\xb7\x92\
+\xa2\xdaS\x93\x8c\x89Y\x18\x11R\x7f*\x82\xe0H\xf3\
+\xa0\xad\x02\xe4\x8d\xbc\x81^\xdc\x16*#43\xbc\x08\
+\xf6p\xe9\xc7\xdf\x1c-\x8a\xe4\x88\x0b\xf8\x9f\x85>\xaa\
+\x0da\xd2U\xc3\x5c\x97C9\xb4\xb2\x9f\x03P\xf7\xf7\
+\xc2\xf91Fl\x1c8G~\xb8y\xa2u\x8e\x9c\x8f\
+o\xc9\x9a\xc4\x81\xc3Q5\xb3F\xdftU\xa2\x19\xc2\
+'\xf0\x9d\x1a\xf7\x86\xb0\x9d\xbe\x19\xdbO\xf5ez\xdf\
+c\xd2\x1c\xf4\xadYx\xd3Ua\xd78\xf4\x0c\xfc\x8e\
+\xefd\x9a\xbe\xdf\x8c\x1a\x9e*\x05\x9e\xd4\xcf\x00\xf1\xcc\
+{\xd3G\x9a\x05\xe0\x98\x8at\xd8\xc6]\xc2\x91\xb80\
+\x9c\xad\xcb\xb0\xd9ZB@aO\xeb\xf6b\xc6\x16\x9c\
+\xd3G\x9a\x0d,\xef\xa9\xa4\x98Y&\xfb\x85\xf6 \x87\
+\xae\xd5\xd4?\x04\x16!\xba\x19F\xd0H$rk\x17\
+\x22\x5c\x040\xc9\x1eN\x07\x0a{\xd6q\x80\xab\xbcH\
+\xa2\x13\x9a\x04\x1bL\xc8#\x84{\x02\x88\x19q\xae\x12\
+\xe3e\xc3\xbd\x7fY\xd4&Z\xc8;\x00O\x89V\x00\
+`\x16\x04\x02^\xfaH\xf1g\x87 ;DV\xf9\xd3\
+j\x12M\x5c\xa7A\xdb\xc6\x04l\x0a\xe2\xa5\x8c\xab\x9d\
+0\x92\x8cW\x88\x9b\x1d\xf5\x8e\x9d\x099p\x0d\xabf\
++Q\x95\x80\x9c\x81\x9b^\x17\xc4\x0a\x918\x10\xdf\xcc\
+zu\x1c\x8aCAuW\xc0,]\x0c\xf7R\xf5Y\
+]\x89\x180\x97\x99/f\xf4\xbc,\xf4<\xe7\x80\xb0\
+\xb2\xc0`\xc18\x03\x06<\xee,\x92p9\x19\x8c\xa4\
+\x907i!4\xe7p69\xd1>\x81\xb2\xd5\xf2f\
+\xa0\x85\xaa\xb4\xe5\x1aX\x11\xc4\xdeD\xb1$\x14?\x83\
+\xd9\xd11i@z\x01\xad\xb4\xe50\x850k\x8b\xd9\
+\xb30\xe5V\x19.\x9b\x83\xee\xba>z\x1a\xf5\x1b\xb0\
+\x97j\x16'\x15\x91\x99\xa9\xc6\x1b\xe4\xae,j\xd5i\
+,s\x01\xed\x91\xb3\x1b\xdd\xbc\x9d\xa4/\x96|9<\
+\x10\x06nD\xf8\x04\xa7\x03\xb9k\x84\xfd\xc0Q\x9e\xa4\
+\xa3\x12\x89l\x1ck@\xaa%\xa063\x9e\x81H\xa4\
+\x9e'\xa2\x5c1\xca\xeeP\xf4\xec\xeeb({>6\
++\xbd\x0a\xf1=\xd5\xaa\x9duy\xe1\xd4<h\x80\xdd\
+\xb5\xf7\x08\xe3\x96H+\x819`\xf8a\xe2\xad\x17\x8b\
+\x99g}\xa4\x09\xc3\x0e\x96\xa8F\xc8\x80\xc2\xb1\x831\
+F\x98C\xe0d!\xfc\xb3\xae%$\xd3A\x05a\x07\
+\xe6\x1a\xad\xae\xc4\xa1\xaf\xc6\xfai*\x1eLk\x8dR\
+\xc7J\x0e\xa7\x96>'[\x8fq{\xa0\x0f\xef\xb6m\
+a\x871O\xab\xcb:\xc4\x0d\x09\xa7(\xab\xb8\x9c\xbf\
+h\xde\x01\xe3\xf4\x03\xe1g\x05\x0e!B\xa5!z\xf9\
+wc\xe1;\xd7\xb23\x15\x8b\xa9\xe7\xbe<\x00\xbe\x08\
+c@\xb8\x22E\x0d\xe6k\xe6z\xc2\xdeCo\x0c\xa0\
+\xe9\x08\xf7Q\x89\xa3F\xdf\xdb\xee\x05S\x15\xee\x99S\
+\xc0\x22`\x0f\x13\x7f\x19\xd7\x15\x94eH\xf2?\x13\xa3\
+\x94k\xae\x8a\x815\xa7\xdd\xc4\x86\xc3\xe8t\x1c\x0f\xba\
+k\x8f\xc3\xa4\xafh\x88\xeao\x00bx\xe3\x12J\xb4\
+8\xe0\xde\xd2\xe4i\x03\xc4\xd1\xfb4\xa4\x8dw= \
+\x87\xbe\x80\x12p\xc00\xa2c\x9d\x09g\x08Ca\x10\
+D#\x0a&\x9fp\xfdz\xa2q\xe1\xefY'^W\
+\x8e\xee\x99U\xcb\x94U\x15p\x83\x80\xde\xdcu\x08\x02\
+\xa0\x09\xb4\xcfD\xc1A\x93q)x\x15G \xfcp\
+<\xa7O\xd4\x8b\xde\xf4wn\xa8\xeeR\xe9<\x08t\
+(\x02\xa2\x90\x182U\xf9\xec\xb5jJ\x14\x8b:\x93\
+\xb2\xf1\x04\xc3\xe5\x10\xcf\xea\x1b\xe9\xd1\x15\x9eZr#\
+\x8djz8\x12\xf7\xfd\xf0.%\xc2\xd38\x5c\x08\x1a\
+\x05\x88\xd1\xc4\x03\xf1\xda\xabZ\xd5\x80L\x95'\x0a\xc4\
+\xe9\xd3?\x1b\xca\xec4\xf4\x15r\x92\x0emQ\xfe \
+\xbb\x5c9\xf7 \xeb\x7f#\xb4\xba\x9f\xde\xa4\x87\xdei\
+\x1d*\xbb>\xd4\xd1\xe3'DOC(\x87\x9f .\
+X\xb6k=\x05>+N\xea\xf3\xf0O\x109\x83C\
+3\xe9\xb2\xccB\xf4\xc8\x06-\xa6\xd1\xeat\xd9\x0cN\
+N;\x14\xab_\x8d\x0d\xc2\x90\xb2\xe4\x19\xa4\xf5\xab\xe8\
+\x9c\x8dO\x10\xc1\x11\x03^\xb5\x8bx\x04\x22\x1a\x89x\
+&\xba\xf5~\x02\xe1\xd4\xee\xc4)\xcc\xd55\xfb(\x8c\
+!X\xd4\x04\x9e\x99\xcd\x08\xa8\xe0t\x06\x15\x86l\x05\
+\x032\x0b\x0e\xb5\x96\xfc\x13\xaf\xd4=\xf0\xf9)\x1ev\
+AN\xab\x94\x9f\xe2B*`e\xc1 \xe4!\xecg\
+\x96b:WY!\xc4Jn\xa9&5\xa3\xc7\xf2\xb8\
+\xc3\xf7\x0e\x9f\xb2\xd9\xe5\xbe\x0e\xa2\xd1\xad\x1bJ\xfbn\
+\xddd\xc0\x88\x1dj\x17%\xb2\xe0\xdd\xfe(\x9b\x07 \
+\x99I\x90m\x04\xc9<\x14\xb0M\xe4\xd4@\xa7\xdcg\
+\xf8\x22\x96Y\xf3\xbe#\x9e\xa8b4)\xb8t'\xc6\
+\x14D\x0a\x02h\x22\x96\xa2\xce\xd2\xa9\xf0P\xc2mA\
+\x11\xa9p\xe6\xe5\x19\xb3'\xac\xd7\xdc\x05\x93\x08F\x13\
+l5E\xe7X^\xf2\xf12h7\xc5\xed\x0f\x1c\xa0\
+cn\x98u\xc2\xfa\x0eM\xf7,\x0e\xea;\x14O\xc5\
+\xd0\xa1q>\x08#\xbc\x14!p\xa2(\xd8.\xb7/\
+\x07\xe5\x22\xe6\xd8\xc62\xab\x974\x821\x1e\xfe\x06\xd5\
+\x90\xccj\x82\xd4\xa5\xa1^\xe1b\xc5\x84\xaa$dR\
+\x0cM8\x88\xebN-EQ\xb0\xb0$5\x06\x9d\xa3\
+EQ\x17mj\xf4\x0c\xc4\xe5\x06\xecF\xfc<x\xee\
+\x96<\xb1Q\xa9]\x94Y\xcb\x06\x13\xc9j\xe0\x87\x5c\
+\xdeh\x19\xc0\xd7PR\xebT\x12\xaab\xb0\xcf\x80F\
+5\x22|\x09LW\xec\xcbS\xbf\xa0\xef\x1e\x07\x8e\x0a\
++\xda\xc9\x9d\x5c|\xbb\x1c\x025\xe7N\xd7'3\x83\
+\x89q\x1f:\xdc\xaa\xcb\xdf \xb2l\x11\xe2\xb2>q\
+\xa8\x18k{\xd3\x8e\x89xp\x8e\x88$\xdb\x0fU\xef\
+\x03\xa0{v\xd1\xb9\x89\x81\x80_\x10\x0b\x15s\x08\x87\
+\x0cT\xc9\xae\xd2\xf3\xca\xfa4*/k\xcd\x09\xde6\
+Y\xd5\xca\xc2\x03e\x0a*\x15\xbe&\xccC i\x08\
+\xde\xa38-4\x09Pt\x0cr=\x92\xf1S\x9b0\
+Bj94486r\x22X\xb5\x9aE\x85\x1b\xf7\
+\x99\xa4\xd1$./\xfa\xb3_\x1e\xcc\xaaz{%7\
+\x8fVh\xc7*\xb2\x92\x04\x1f\x9a\x1a\xc5\xcf\xbaW\x05\
+\xda\xba\xee_\x80\xb6\x16)+\x80\x04>\x8f\x00me\
+\xa6G\x970E`\x1a\xc6\x1f\xaa\x82\x82\xa1\xce]\xd1\
+wM\xca(\x82^ \x02\x19\x16y\xa9\xeeYb\x5c\
+\xcf\x87\x86\x1e\xfe\xfc\x89u\xae\x0bZg\xa2\xd9\xf7\xb0\
+\xb2\xd1\x1a3\xc1\x95\xdbNUQ\xf89\xb8\xd8S\x07\
+\x1a\x1c\xb8\xb9a\x09:\xd5,J%\x9a\xe4\xa5\xbf\x5c\
+:\xef\x11\xa1\xc7*\x16\x97\x848n\xa1\xf4\xfb\x81\x9e\
+\x1e-\xf5\xd4\xe1\xb9\xb83\x15i\xb0p\xdbg\x06\x07\
+\x1f\x1c\x9d\x9c\x08G\xbd[\x0b\xf8$\x06$-)\xc0\
+2s}@\xbc+@\x93\x13\x01\xfc\x97]\x89ku\
+\xa2dC63\x95\xad(X\x11\x1a)u\x9cS\xc9\
+\x07\xbc\xe7\xec%\x22c\x11\xe1\xe8\xc8\xd8v\xe9\x09\x9e\
+\x08\x8a\x9e\xde>\xf9\x0a{\x99\xfb\xafY\xb5\xaaB\xd7\
+\x1f\xeb\x04z+\xf1wp\x8a\xe0Ve\xfaJ\xd9\x0b\
+]\xe5\x12\x88\xda\xe9G\xaa%\x91\x7f\x22\xd9\x85B\x0c\
+Q\xa1\x8be\x1ev#\xce\xe7\xdd}E\xd0\xdf\xa1c\
+\x82]K\xbbuF^\xe0\x8bN\xe0\xd3\x17\xfa\x88>\
+\xcf\x08\x98\x00xOW\xd4uS\x98\x1c\xd2\x10\x98\xbd\
+\x91r\xe4j\x10n\x1fO\x5c\xf4\x08>c\xd7\xc7`\
+\xb2\x1a\x06\xa6\xa5\xd8\xfd\xe7\x9b\x12\xab\x14$\x1c\x82\x9b\
+\xfe\xae*\x03\x00)\xc7\xf1\x9c>\x13F\x04G\xfc\x02\
+\xa6,\xe0\x0f\xb9\x85\xa9\x07\x02y\xad\x92r\x5c_X\
+\x14\xbc\xd1\xed\x1c\x18\x16\x05T\xf0)\x0a\x1d( g\
+\xd7\xdfYk\x84\x80\x0f\x1a\x15\xe2\xc0\xef\xc6y\xfbH\
+I(\x18\x00\xe7\xdd\x0d\x1f\xde%R\xf6K\x05 @\
+\xef\x12r\xc2\xab%\xde\xf8\x94z\xcaw'v/B\
+\x81\xe4\xd8\x95\x18\xedQ\xb6\x02\xeb\xe2\xd0T\x01\xf6\x98\
+\x96\xa3K\x95\xa3\xa0\x8a3\x1d\xe4TQ\xb1\x00\xa7G\
+\xe1t\x9a\x05N\x9d\x84H\xab\xe9\x0a\xbe\x8b\xed\x14\x8a\
+\x0a\xaaS:\x09&b\x5c\xaf*;`=B\xf3\xd0\
+O\x8a\x03\xfcd\x05`vc?\xac\xfe(\xdb\xb1B\
+\x11\xc4:=\xb9\xa7}+\xad\xbc\xb7j\x9b\x13\x96\x98\
+\xc8Rz\xa4xe#\x12\x014!Nw\x81\xd2\xeb\
+\x17\xc4\xe9F\xc3yB\x03\x1f\xbdH\x99\xef\xf2\x026\
+\x0d\xe6\xcc\xe5\xa1\x22\x0f\xa9\xd88\x0e\xb2Cd\xc2=\
+;\xd6\x89Z;\xb3\xfa5\xba\xac&\x83\xb5\x8aU7\
+z\x83{.\xa1\xa9pY\xdd\x05\xccN\xfdWZE\
+\x00\xe3r\x0b\xc9[:\x94\xecM2\xe1\xaa\xf3h\xa2\
+1\xe3\x8c\xc3\xaauq.\xdcW\xb9O\xa5V\xe0l\
+E\xb3\x8a\xd4\x8a!\xca6\xcf \xa1\xd9!\xac\xaaf\
+\x90\x85\x16\x90\xfbw|\x92\x98r\x9e\xe7\xe1\xae\x95N\
+@\x0b\xa5\x9a\xd2\x8bM\xfbIQ\xac\xeba{\x88\x03\
+yp\x1e\xfb>\x91y\xb47w\xac\x08I\xf9:\x84\
+\xab\x9e\xeb\x04\xefD\xb4C\x91\x82\xd3\x09[\xeb\x22+\
+\x00\x84JEt{b\xc7\x91!\x85\x87\xb7\x1e\x98\x07\
+(\x1f\x11\x8a~\xd6`\x90\x8e\xe4\xaa\x0fG\xab\x02\x87\
+\x1cI\xe0\xba\xf2\x8d\x97hASBV\x15U\x06\xe6\
+\x85\xf9\xc2\xb9Y\x99B\xca\xab\xc0\xe5\xdc\x8f\x12>_\
+\xc6\x01C1@\xd2\xff\xd9\x5c\x13\xdc\xba\xc4nT\x13\
+Jy\xd6\xb1m\x96\x9c\xdc\xc7%s\x99@\xd4\x12\xda\
+\x1a\xaf\xa8\x0a&\xa0*1\xe8,74L\x06\xd5\x1c\
+\xe0\xf7\x22\xaa\xa8\x9d\x1f\xd4?DrT\xbdQ\xe5\x12\
+\x08\x1b\x0c\xed\x12\xe6O:\xd6\x88\x84\xa3f\x1dM!\
+\x08\xedp\x95\xe5\xaa\xe4\xb2\x83X6\x02\xf7\x12\xf07\
+\xef\x84\x00\xa0<D\xef,x\x8c\x13X\xe0N]\xb5\
+`\xd8\xf0CF\xc9]\xd0\x82Pqh\xcb\xcb\x1aM\
+\x87\xea\x01J\x95s~\xd9\xa4\x81\x9a\x1f\x1b\xe7\x9c\x1a\
+\x01}\x9c\xa7\x92\x92\xaf0PP\xfc\xa0\x90\xa6\x00\x81\
+dx\x1b\x8dQU\xb3\xcb+\xb92\xc5\x88\x18\xec\x87\
+/\xb6\x8c\xcc\x00\x02\x11\xabn\x13`5\xf3H\x06\x06\
+\x8dB \xbb\xb2\xef\xb2\x94dF7t\xd7\x1a?K\
+\xfe\xe4%\xe6\xfa\xc8T$\x0c<vS\xd1+;\xb2\
+\x8c\x81\x98\x98\xe4\xc2\x14\xc2\xe1\x07\x5c\x14\xe1\x1c\xde\x1c\
+\xb2\x8aV\x95\xef\xe0\x06T,{e*v\x0e$\xf9\
+n\xeba\x0e\x90\xf7\x13[V8\x89\x07]\x9f\x8a\x8b\
+\xe2\xed\xfcTO.\xdd\x91\xa0\x22\xd2f|i\xb7\xf0\
+\xa2,7m$\xc1:\x82\x07\xd07\x87\xcc\x0cE\x09\
+\x96\xd8\xb1\xb4B\x90\xa4\xca\x93\xa2\xb0\x12]\xb9\x06\xe2\
+\xdb\x85!\xbd7\xdbz\xb57\x92\x0c\x04)*\x0c\xa8\
+\x10\xc0%\xce%@\x9f\xb86\xbaP.\xd1\xe8\x84\xe4\
+\xb7\xf9\x17\x9d\x97q\x1eMTS\xfdM\x1a#QV\
+\xec\xd2\x1bte\xe5\x0f`\xe3\xc1)\xad\xcdF\xab\x1c\
+\x85*\xc3\xf4\x93\xf2\xe6\xf6S\xd5Y\x08\x85}\xa9\xae\
+\xe61!\xd7\x95\xc1A\xbc\xed(S\xb9O'Pb\
+\x9d\xa1*S;\xc2D\xfai\xd1\x12\xd0\xf3\x07\x8be\
+\xb0Z\xa3\x14\xdd.\xd8'*\x90W\x0dz{h\xd7\
+\xf1\x13\x94\xe3\x8a\xfdjU\x98\x1e\xce\xfeA\xa5\xe4F\
+1\xc2\x82\x95\xd6-&|\x97\x0e\xcf\xdd\x86\xe9\x84@\
+\x82\x92\xaa\x9eS\xf8@\xca\x9d\xa1\xb1\x13\x05|\xff\xe0\
+\x84\x9f\xccw\xdf\x857\xcf\xd1KBoT\xc9\x8e\xd0\
+\xe1\x99\xca\x043\x05\xa6\x8cRv\xb7 \xc8*\x06\x80\
+_\x5c5\x8e\xf5B}\x01o\x97\x92/%$\xfb'\
+m\xfa2l7\x82\xeeN\xc3\x84\xf4\x5cF\xb3\x1d2\
+A\xf3\xa8bP\xa2\xf5\xde\xc3\x97\x02\x8a\xc0]A\x81\
+\xc4<*\x92\xf5;o\x1e\xa18\xc1\xcb\xd5\xd4\xaa\xae\
+*HP\x80.\x01\xe9\xf3vF\xfc\xd1C\x22.\xc9\
+\xe1b+\x10\xa6\x8a\xa6\xf3\xa2\x00[\x84\xfd\x13\x01\x10\
+\xf0\x99|\xc5)I\xbbg\xc7\x07\x82C\xb4~\x08\xd8\
+,!\xa8\x853\x8e\xe9$\x9av\x13\x0d\xcdf\x99\xc6\
+\xea\x0dtxK@\x15'vA\xb7\x06-\x03e(\
+\xc6\x14\x9b\xbb\xea\xcaR\xbc\x14]\xc3ho\xed\xda#\
+\xcf\xab\x9d\xe0\xf1\xd7\xeb\xde\xb8\x02\xd6\xc0rTF\xd3\
+\x9f\x9f\x95C\xd0D\xa2\xc6\xbbm\xc5\xfb5\xa7\x0f\xf4\
+0\x03\xf8\xccI%\x8e\x98f\x5c\xe3P\x90\x8c\xc1\x1b\
+\x18\xe3\x01\xddj@\x0e\xda\x8d\x10u\x9a\x92rV'\
+t@\xda\xe5\x050\xf0\xe3\x832`\x5c<\xcaz\xd7\
+\x97\xb4\xb7\xc3\xe8\x98O\xce\xa35\x81\x1a\xdd\xe6\x8d$\
+\x80(\xdf\x1cc_j\xc2\x85\xf8\xd9\xe6\xe7\xef\x17\x05\
+\xf8P\x83\xb8\x0a\xf9yw\x1c\xe7\x84f\x0f\x90\x83\x09\
+\xeb*\xdc\x85\xc0DH\x86\x98\xa0\x89\xb1\x05\xea\xb5M\
+b\x84\xa33\x1ae\x90.D\xb1O\xc8\xe5\x1c94\
+F\x86tg\xb2\xd3\x9c\x007\x0d\xc7\x82\xc3+\x1eT\
+\x12:\x86/\x80M\x95\xc2\x9d\xd2\xe6IX8\xa9\xe4\
+\xb8\xe8\xd09f\xc4\x117\x86c\xef\x22\xd9Y\xe0@\
+\xc4\xf4T\xcc\x82\xf3\xb8\xbe9\x01\xe2\xc9tP\xfeU\
+\xf6B\x07\xcb\x89\x11t\x00\x0a\xce\x85T\x9c\xb3\x1e\x10\
+\x12Dl2\xee,\x850\xd66#\x14.\xc7\xf9O\
+z\xba\xe3\x16\x0e\xc2\xcc9\xe4F\xa1\xc07\x04C\x99\
+f\xfeDq\xa2\xefn\xd8\x1b\x8c\xcc\xe5+a\xff[\
+\xce\xac\x0d\x9b\x0c\xc2\x96Jd\x13\x1bmW\x9f\xb1o\
+2\xcdq\xa2n@\xac\xc67}\x07g\xfb<\x12\x09\
+\xeaI\xe0\x0b.\x8fn\xf2^\x19\xc9E\xedyc\x00\
+v\xe1\xc4\x04\xdf#\xf2`\xe5\x04\x0a\xa8w6A{\
+\xd8\xa6=\x16\xd8\x91\xa3M\xb3\x14\x81\xad_\xeeV\xb4\
+1\xcfP\xdf*\x0cpG\xbd\xfc~\x00\xaa\xee\xc6\xf8\
+vr@T\xd6^i%\x07\xac\xa7\xda8\xe9b\x0e\
+\xb2p\x7f\xfe\xfc\xac\x9c\x14\x06\xebI\xab\x7fy\xa2\x08\
+\x0a\x07E\x93\x1f\x10\xc2\xceL\x0f\x08a\xd5}\xff\xcc\
+\x9b\x9d\x06\x1e\xd5\xfb\xb3h\x95h\xbb}\xb7b\xa1\xd9\
+\x9f\xaf\xb6\x8f\xfe\xec\xfb\xb4$2\x88ma8\xcb\x18\
+C\xcf\x18\xfb0\xb5D\xea\x93E\xdd\x86\xe9\xc3~v\
+hw\xcc\xe6uN|e\x9e\xf2\x01\x98\xed\x15\x1c\xb7\
+d\xdc\x98\xf4\xef-2\xe1\x03\x1b{\xae\x8bh\x97\xe4\
+\x81c\xba\x9e\xd0\xde\xaeE\x93\xba\xcf\xff\xbd(\x95\xdc\
+c\xf8\xee\x17\xc7c\xed\xfb_\x9b\x0b\x95g\x978\xf8\
+\xf3\xb30\x1cz\x99\x9db\xda\x15\x15\x9ag&\xad\x0b\
+\x07\xb3>\xdexe\x97!\x8f\x18-C\xf5t\x94n\
+\x8e\x0a\x12p\x87\x9f\xa2aX\xb27/\x8eY\x91\xdb\
+\xa4#\xa4\x12Ne\x9c\xeb\xbf\x17\xdaY\x8a\xf9\x14\x82\
+\xb3c\x04\x22\x83\xef\xde~\x5c\x17\x969\xf6\x882u\
+h\xd8\xa95w:]0\x22\xc3fc9u*]\
+\xefwo\xd1\xcf<a\xd6\xe2\xd7:\xdf.gq\xfa\
+\xd5\xa1o\xb6\xc8\xa8\xfc\xb7\xef\x81\xfek\xeb\x0a\x8fn\
+\x8a\x0e\xfb\xf3\xf3\xa6\xddW\xe1\x1a8\xc2\x13\xb9|:\
+#\xde\x8c-\xc2I\xb3q;\x22h\xaeE^\xb8\xe3\
+i\x0e\xa5\xf8\xb5kF4\xa2\xefo\xd2\xf1\x92\xcf\x07\
+\x22\xc5\xf5P@\xa1\x01\x83Y^\x99+\xf7td\xb8\
+k\x9988~\xcb\xaeub:\xcfb(\x0b#2\
+n\x0f\xc6\xa5\xbd\x87\x01c\xb7\x0e\xd4#\xfe-\xbb\xa7\
+\xe9\x9a\x95\xae\x11J\x90\x94MN+n3\x5c\x1a\x8c\
+(\xb0\xd29`0}\x8aK\xa3\xc6\x00k\x5c]J\
+gB&)l\xc5\xd4{]iW\xa1\xeeM0b\
+hi7^(\xad\x93@\xea1nX:\x8bK\xf1\
+2\xe3}&\xff\x1d\x88\x15\xe0+i\x08d\xf2\xa9,\
+m\x04\xda\xc3\x9f\xe1WD\xf1C\x19\x02\x0f\xe4\xa6w\
+Y\xda`\x9d\xc7\xe8*\xa9$\xd3\x93\x0d\xba)~-\
+\x8a\xac\x9e\xd4\x90\xc1Q\xb5\xdfSa\x1d\xb0\x93A\x93\
+g3\x89\xc9\xda\xe8\x09\xf4OZ\x15\xc8(\x0a\x5c\x1d\
+\xba_\xc0\x88O/\x0a\xfa\xd1If\xd5\xab\xc4\x0f\x0a\
+\xb1|N\xc6\xdd(*VI\x22,M\x1a!\x93\xfb\
+\x19\xe6\xe5\x83\xe1'\xe40\xd1\x17\xbf8\x0f\xd2\xa3\x15\
+nV7\xa3\x05\xb4\xa3R\x11N\x15]<T\xc2.\
+\x07,\xa1\x13a\x8e\xd6\xe3\x03\xb0\xc2\xc3f|9\x13\
+\x98\x1b?\xe9\xf6f\x80\x8e\x1c\x0a\x0eQ\x0d\x99\xe4y\
+yI\xc0\xb0.\x88\x83\xb1\xae7,\x08&+\xef\x13\
+#$\x19\x1bu\xd7\xd0#7\x19\xf6BX\xaf\xb3B\
+]\x0f\xd7\xd1<\xe5\xe2\x00\x9c\xe5y\xaa\x18gc\x9d\
+X\x05K\xf0\x11X\x1e\x9b\x0f\x04\x18\xf1U\xb9\x0b{\
+\x98O\xa8P\x132uaB\xa2w\x04\xb6\x02\xacl\
+\x0edJ3\xed\xfadD\x18SI\xd9\x91\x8bA\x04\
+9)\x9a\x0b\xc7\x13\x0c\x89\x18\xab\x1e\x99\xdd'\xab\xd4\
+\xee}\x22\xb4(\x0a\xf2\xa4\xc5G@\x06\xca^-*\
+7\x0a\x8e\x0az*M\xfb\xa2}\x9a\x00\xaa\xf4W \
+\xcf\xb1\xc9>\xeb\x8a\x8d\x80\x10\xa9Z\x87\xd7\xa9C\xb2\
+*\x85\x16\xdekx\xe29\x1b\xf9WU\xc9W4\xbe\
+\x09@\x82\xdea\xb4)l\xab\xaeL{&\x1b\xcb\xe5\
+`DX\x02<\xa2\xbb\xc2+\x94~^\xff\xef\xce\xae\
+&\xc7y\x1dI\xeeu\x0a\x1dA\xfc\x11%m\xe7\x06\
+\x8d9\x82\x81\xc2,\xda\xf7\xdf\x8e\xe2'i\x91~\xe8\
+F\xd5\xe2\xe1}\xcc\xb2M\x8a\x92\xc8dfd\x84\xbe\
+Q<\xa8\xb3\xa9V\x05;\x8d\xbe\x02\xa0\x0d^0U\
+9\x9f\xa6.\x90x\xf9\xbc\x900\xf9\xf7\xb5\xb8\xfc,\
+9\xe8\xbfOm\xb3\xefU\x16\x15\x09P\xc2\x92o\x80\
+\xc2\x14\xc02\xe5=jU>\x8c6\x00\xfe\xb2L\xaa\
+\xf5\x05\xe6\xb0^Yf\xe1it\xd2\xac\xd2&t\xf9\
+\xf9\xf8\xc4\xc5S\xba\x7fa\xa1\x81E\x12\x9f^\xf0\x94\
+_\x12E\x93h\xf0\xbd\xf0%i\x1e^g\xd3\x13\xb9\
+\xb9\xf4a\xd3\x13X\xa0\xa2\xbd\xd0\x84\xbb\xcfZ\xf2\xa4\
+X$\x13u.YE\xfbC\x22K\xd8Z\xccj2\
+\xa9:\x17\xc6\xa5\x17\xc1\xa7\xae\xf3\xc42\xfd-\xe4\x96\
+.]\xab\xd0Ub\xf7\x89\xd2\x91\xa6\x12\x0c\x02\xedI\
+\x9c\x81\xf0&\x1eM\x18\x10CCMI\xd2\x0f\x1cM\
+8OA\xe48\x17\x9b\x86yx\xdb\xd3t&k\x86\
+N7\x917\xfb\xeb\xc6\xb2\xe8j\x8d\xff\x80<\xcd\x06\
+LK\xbe\xe4=\x1bP\x93W\x0d'Ev\xc7\xe7T\
+\x04\x10B\xa4\xcb\x9a4QCe.\xf5^?7\xb5\
+_\xdf\x9f0i\x14\xf3e\xa7\xdcz-#\xe13\xc5\
+y\x22\x18(\x83\x0a=\x9b\xcb*\xb98\x22u!\x1d\
+!\xf0\x97N\xba\xcc\x89F\x92\xc6\xcc\xd1\x04\xbb^\xd7\
+\x83\x949\x9dv?\x12\xcf\x9bA\x05\xa4\xe4\xcf2\xb5\
+_\xf3\x070=\x1as\xf4g\xde\xf1T\xbb$\x81N\
+\xb0\xd4\xefE\xbc\xe1p\xc9B\xe8\x9a\x98\x5c\x85\xebq\
+\x0e\xd5\xa4\xa7%\xceef\xa9YB\x83b\x8dz\xcd\
+~b\xdd\x1cv\x90\x1e<K\xf2\xf0}3|1\xa7\
+\xa1\x22\x09\x1d\x93\x97^o\x85\x8f\x84#\xa1\xf2k\xff\
+B\xf7\xd0k\xf0\x90\x1b\x82(24\xdf\xfb%\xce\xf9\
+\xcc\xf6\x88\xd8\xdf!\x9e`?\x9d\x1f\xaf\xb1I\x8f~\
+~\x22\x9f8ij_\xb9\xfe/\xf1q\x9d,<\x1f\
+5\xcd\xc9A\xda\xdbXFK`yeY\xba\x09\xcc\
+\xf8\x85\x0c\xabM\x01J(O\xc0\xd7`>\xb6yb\
+\x9f\x16*9eo\xb6(\xf1Eq\xfdvhs>\
+\x03\xceu\xeeJ\x96+D\x9c\xbd\xf1\x15\x0b\xd8\x16J\
+X\xe2\xf9\x08y\xd9\x22<@\x0e\xd4\x1f\xdc\xa8\xcd\x9d\
+d\xd1\x17n\xd7s\x17\xc3nc_\xe8\xba\xce\x0f\x9a\
+\x02\x07\xb3\xa2\x95\x98\xfc\xfb\x88\xb6\xd7\xdd\xd9\x96\x1d{\
+;\xa2\xe9\x84\xa4f\x02\x09\xf1\x89TE\xcf\xbb\xb3\xab\
+#D\x1c\xf1\x88\x01\x9f\xa3\x87\xeeb\xac\x00\x8b\xb66\
+\xae\xaas{ll\x87\xa7\xf7\x8az\xbd6\xdf\x9f\xe5\
+\xeb\x86\xe9P;\xdf\xd6\x7fX\xa7\x5cKy\x08\xf1\xfe\
+\xfe\xb2 V\xa8\xe2\x0d\xab\x078\xb2B\x04k\xf3J\
+\xc5E\xc1\x96\x08\xe8\x04a\xb0\x03\x0eQ$\xf6\x9a\x0d\
+!k\x17\xf5mKr\xe1\xcd\xa7\xe03\xf8\x0f\x82\xfe\
+\x97\x0a\xb3\xa5\xb3B\x05\xf9E\xeaH\x13V\xcf\xd9!\
+\xaeI\x11w:\x12\xd1\x0c2\xa2\x9e03ad/\
+Q\xbdD\xf3\x90.S\x9d&\xb1e\xf5\x82\x18\x89-\
+\xcb\xd1\xbf\xb8rF]]\x08\x22>\x0a\xe3^]r\
+f\x89\xca:\xb0\xa3Ky\xc3\xd3\xea\x15\x00\x10S\x7f\
+\xa5\x98\x81)n\xc4xc\x96\xaf;\xa5\xb7|\xbe\x9f\
+\xcf\xd7\xbc*\xcbJ1d\x16\xf9\xcf\x16\x8aU\xba.\
+\x82(Z\xfc]\xfb\xbe6q\x19\x96n!y\xb5\x0a\
+\xa9\x09$5\xb1`2\xef\xc1\xeb\xcb\x82\xbb\xad:I\
+8\x87\xad\xab\xe0\xa0-\xe0\xe9\xc6\xa2\x03\xa5\xbd\x84\xa6\
+D\x92\x96\x85\xac\xc8V\x1f\xf63\xf0V^\xc2Ig\
+QS!\x07}\xf8\xa6\x16\xb9\xa1[\xd5\x12\x95\x8f\x87\
+\x13\x19\xe2\x04\x92\x82W\x92\x83\x7f\x96\xf60 \x10\xb8\
+B\xd0X\xe4\xd8\xc2Nc\xa0p\x84\x830\xdfi\xe1\
+\x0d\xe2o\xe1C\xb8\xda<.\xba\xd1\xc9g\xc2\xf1\xa8\
+\xdaR\xe8\xc9\xc0ch\x0a\xa9\xf1\xcdd5I\x08\x06\
+\x86\xe3A\x86\xef\xe9\xc6\xa8\xbdtC0t\x8c\xf7\x13\
+A\xb8PD\x09Gt\xb6\xdc\x8f\xb7N\xa0!4\xd9\
+\x9f\xbcx\xa1\xb9;-\x8f7\xde\xe5\xf1(v\xc4;\
+2\xb5\xb5\xd4\xcc\xdd*\x1eX$\xfeyTG\x03?\
+m\x84S\xeb\xa7[\xf0\xa8\xef\xb9\xf7\xf9\x09\xe3\x11\x83\
+mM\xd3\xbe\x10\xf1\x15\x9d\xda\x11\xc6{vy\x0f\x22\
+\xab\xe0\xb7\xaa\xfe\xe7\xd1r \xb1_e\x8e\xd2\xe1\x1a\
+\x8b\x88c\xfb\xc1\xa2\x96\xc4\x18\xfey\x1f\x87\xa6\xde\xbe\
+ggw\xe7\xc1\x84\xee\x97\xfa\xbd\xce\x16DDC\xc0\
+F\xfbx\xf2\xb2\xd0+\x90\x18#\x95\xf2\x22\xe9\xf1\xcf\
+\xc7\xa0\xe6&\x07\xf1\xd5\xa9\x92Pra\xe4\xf2\xbf\xd7\
+\xd9\x02_\x90+d4\xc3\x07\xea\x92XA\xab\xe4\xcc\
+\x9dW\xf1\xa0\xb1\x98\x9a\x11#\x1e;\xc5@\x5c\xe0\xd9\
+\xcb\xceg\x0b\x16\xc6\xd3\xaf-3\xcb\xd5\xd4\x00\x91\x0c\
+\xab9\xe4l,T\xea\x90w_\xdc\xa7\xb6\x862w\
+\xfb\xc3\xdd\xb1\xf5\x15\xde>\xcf\xc3\x10\xc2=\xdeT\x22\
+qb\x0e\x90\x9e\x95p,H\x92\xa1}G\xfa\xfc3\
+6\xe2\xa1\xab\x9f%2Q.l|\xaf\x93!\x92A\
+q\x22\xe8\x0b\xfb\x15D\x11\x89\xd8\xec\x0f\x01~w\xf0\
+.\x138M\xedp\x02\x87^1\x90-\x0a\xc8}P\
+y\xb6\xe3!7IG\xc8\xccaI\x14\x80\x22\x07\x9d\
+\xe2aQ3\x8b\xe5\xc1\xc0I\x99\xda\x1a\xc5\xd8\xe5=\
+\x88]0\xcfd\xfa\xd1\xf7:[R\x84\xc9N\x97\x17\
+0\xa4U]^\xd7\xbc\xc5\xd6\xadio\xe2\xe6E\xa5\
+&9\x1a\x04\x03Lm\x0e\xe5\xabc\x0c\xe6\x22\x0a(\
+I\x0a\x92\x83\x19-\xd4^9\x85\x1e \xdc\xe9\xde\xfe\
+\x811W\xf5\xbb\xca\x96\xb2\xa2'\xd8\x02rO\xe5\xe8\
+T\xae\xb2\xa5\xb1\xad\xc1\xcc\x1dC\xa5\xfbd\xfc\x22\xee\
+\xe2{\x9d-x\xf5\xafl\xd4\x07\xcb\xf4\xb2\xc3\x17\x9b\
+\x85\xe4Y\xc1\xd08\x18A\xd8Y\xf1\xb4\x09\xed\xd0H\
+\xb05\xb6E\x975w\x8c\xda\xa0Ftr\x9cc\xde\
+\xebl\xe1\xdcV=\xfc\x1b\xe7Z\x01\x1a1\x8b\x84\xb3\
+\xdc\x189\x00\xc6\xa1f\x07\x00\xec\x94]\xf5\xab\xadz\
+\x89\xb9\xe3\x1f\xa6\xcf\x00u\xcb\xae\x00z\xaf\xb3\xc5\xe9\
+3\x01H\xa5\xa8|2\x14t\xf2\x0c\xf3\xa2.F\xdb\
+v\x85(7\xe9\x913\xfc\xe4\x8a\xab\xb1\xa9[4w\
+\x8a[\x94m\xcb\x8e:\xcf\x96$\xae\xe3L@\x8eJ\
+\xd28\x10\x9e\xbb\x9b\xcf\xa4\x1e\xc8\xa5\x8a\xb2\xe6S\xc9\
+%<\xc8\xd8\xd4\xfd\x99{\xfdY\xba\xeb\x0d0\xd6\x19\
+\xfe\xdd\xc7\x10+r\x92\x0e\xb7\xfd\xf0\xce\xd4\x81\x13\x1b\
+\xa3\xf1\x1f\xd7\xc0\xd4\x13&\xc3\x99\xdb\xdd\x09y\xf6\xf9\
+\x0f\xf5\xd8\xa7\x95\x94v%\x85\xdf\xb3\xc1\xe0/\xaa\xf0\
+\xf4\xfc\xc9\x1ea\x8a\xd1\xc0\x04\x8bR\x02\x87iV\xda\
+\x87R\xe1\xd5\xf3NN\x01\xcc=\x0dM\x11\xc3}\x8d\
+\xeeg9\x82oO\xb9\xfb\xf7:\x19\x22\xa7R\xb8\x17\
+XF9\xf7\x0a\x90\xd1\x00\xd6\x8d\xae\x8b\x16\xd5\xca\xde\
+V\xe3\x87\xacv9u35\x17\x8c\xf6kh_g\
+\xba\xf3\x88\x9a\x1f\xadh\xa7\x12\xbe\x0e\x0b\xfd;\xe6\xa0\
+X\x17\xe7\xcbp\x89Ht\xc9~\xd9\x82\x14\x22b\x09\
+c;\xc8\x9f\x9d\xce\x1f;\xe7\xf4N\xc3y\x12\x8b%\
+\x15\xcal\xa21{\x83H\xc8h\x0d\xb2Ql\xae\xee\
+\xba\xbb\xb8'\xe9r\xb9\x18\xa2\xf9|}\xb1)\x01\x11\
+H\xbe\xab\x93\xfc\x18\xc2]]\x0c\xbd#\xd3v\x0a\xcb\
+\xc1\xbd\xeaJ=\xc1\x8a:\xad\xbb\xe9\xd2\xa5\xbd\xa1\x91\
+\x8aP\xea\xe2\x15\xc6\x87\x09\x94\xe7q\x1b\xbf\xbc\x1b\x0f\
+wQ\xba\x99pc\xa1!Ip\xe6zb\xe4\x14\xae\
+\xa4j\x01\x00\x00\xc1\xdaQ\x04F\x068y\xf7\xa7U\
+[r\x8a2\xc3\x85\xbf\xac\xbd\xaf\xe0\x03\xdbX\xc7\x88\
+\xba_\xe6\x85\xc1jV\x01\x95D\x95\xd0\x1a\x12\x19\x88\
+\xce#\xa5L\xd4RN\x0a\x9f]\xcd\x95\x80\x89\xab\x08\
+\xf2Z\x87J\xa1\xf0\xec\x11\x11v\x86\x08\xf4\xa5[)\
+\xd4e\x0e\xde%b\xbb\xf1\xf9M\x1aT\xbb~m\xcf\
+\xfc\xf8)\xb01\xcb\x06\xef\xb7\x07O\xca\xa6K\xc3A\
+\x08\x8f\x80\xf2\xce\x89\xf7\x9e\xa3\x11L\x09S|\xff\xf5\
+\xc8*\xa1\xb9\xaf\x80N\xd3\xce\x1cv\xdb\x8eE\x17\x1a\
+\xa8%\x84D\x18\x09T\xa9A6K\xdc\xa5\xbb\xafC\
+\x16\x0c\xa7*B\x91\x06\xbb\xc4\xe0\xba\xb0\x8dyB[\
+\x09t\x1e\x97p:Te\xe0\x959\x8b\xc5`z\xc0\
+\xd2\xf8\xf0f\xe2.b\x1e\xcb\xb5/\x06\xd3\xf1\xca\x88\
+\x0aJ\xfar\xebX2\x85\xa5:\xb0\x0e^\xe6J\x82\
+b\x81\x12\xc9\xfd\xd7p\x1c]\x84\x1f\xd4$\xaa(\xfb\
+\xfe\xd8=~\xdc\x02C\x9c\x82)P\xa5\xc7:\xd30\
+\x09XI}\x8bg\x8d\xc02\xe5\xbd\x81t#\x18_\
+\xe8\xa3\x5c\xe3~&\xb6\xaf{\xe6\xd1Dn\xe7R\x85\
+>R\x8eH\xab\x5c\x02\x1a\xbf\xd6\xe5r\x88\x18\xe4\xef\
+\xb7\x85\x97)8\x91\xef'\x8aE\xd0\xc4\xaf\xf5\xc7+\
+38\x925K\xa7\x98\xc5O\x0a\x9e\x03s\xcce\x83\
+@H\xa4M\xb3\x0a\x98\xa9q\xdeXu\xc1\xfa\xa0\xca\
+[\xc0\xd4\xf0\x15EW\x9d&\x10\x89\xcd\x83/\x86\x80\
+\x81J\x83a\x8c\xc6;6\x16\x8ap\x8ed\x80G\x88\
+\x97\xd0\xec\xc6H\xb4\x01\xdfD\xd0:@\x82\x97?/\
+\xc4ia)\xe1\xa5\x93\x16\xc1\x8bZ\x0e\xb4Z\xec,\
+#\xe3\x0a\xb0\x13\xa4\x890\xe0=U`\xceT9\x06\
+\x1f\xafq\xe9b\xde~^\xcd~\x16\xc9s\x05]\xf2\
+{\x1d\xdbg\x80\xcd\xb4U]\xdb\xa4\x01dJ~\xa5\
+\x94\x96\x8e\x1c\xb8\x14W\x0b\x0e\xb6+\xb6\xef\x10-\xf1\
+\xcf\x9d!\xf8M\x9e\x94\xa1E\xa6\x9d\xf1\xcf\xa1\x1f\x0e\
+\xc7 \xf8\x0a\xfb@zWJQ_\x22-\xb9\xac|\
+\xd6\xc7\x1dG\xf7\xd3\xb4<6\x18\xa8m%\xa3h\xba\
+\xe3\xd7\xa7m\x8a\xaa3w\x98\x1b6\x81\xa9\xf9\xfa\xfa\
+\xbb%\x897y\x03f\x7f\xd8\x8e\x90\x1a\x18-\xeb\x19\
+\xb2\xf4\xfe\xf6pC\xb8]M\xb7\xec\x81 \xd8BI\
+\x18`\x91\xff,%l\xe2\xb1\xa4\x17\xf0\xbd\x8em$\
+\x9bH\xcc\xb83Z\xdd|PC)V\xd0l=\x0c\
+\x0bQ\x14\xf0\xe8\x91\x05\xb9\xaf\xd5\xa2oI\x19\xddW\
+\xbc\x87\x88\x05\xc00\xf5\xf5l-\xb1#\x0f\x83\xfb\x9f\
+\xf5_\xffp\x91\xff\xe9\xea.\xc2\xc3\xf1\x0b\x88s\xbf\
+\xd7\xc9\x80\xa8\xfc&\xdaHQ\xbc\xd0\xe9D\xed\x18\xdd\
+\xe8\xd1\xb0\xac\xe2\xc2\x10-\xe5\xbd\x8c!2\xc8\xe6\xc1\
+\x887W5\x8a\x1d\xa3\x1e\xee\x9e\x86\xb9\xb3\xa1\xe9+\
+\x9c\x07\xf8\xebK\xbcT\xa8\xcfI\x0a\xcf\xe4\xd3\x06\xac\
+\x88\xc1\x18\x95j4VA\x13\xa9\x961\xe0\xa1\xbd\x90\
+\xc9/KX\x10\xe7O,<`\xbe`5,W\x9a\
+K\x07\x9e,2\x9a\xb1\xab\xa1\xa5\xab\x9b\xc7\xf6\xfb\x8b\
+K:!\xa2\xba\xf5\xc2\xf4L\x06WE\xf0\xf2\xee\x83\
+\x13\x0e\x94\xa7\xe4/\xb1\x83\xbf\xc2\xb0\x84\x05\xd5&8\
+/\xa1\xd4\x1f;w\xe6\x06\x88\x0bL\x97/\x10\x15\x0b\
+\xb8@\x0a6\x8e\xbd\xa9\xb9\xf4\xb6\xd7\xd2q\x84\xbf\xbe\
+F\x86\xa4\x91kg\x18\x84\xdc?\x83\x81\x81\x03\x1c\x12\
+ss\x04\xa0\x10\xd6OE\xea\xd3\x99#bE\x10\x03\
+\xe1\xb6\x875\x01\x97\x81\xfdx\x13\xb7F\x22i\x8c\xc2\
+\xca\xa3\x85\xb9\xf4\xc2/\x1f\xadE\xefKt\xcf\xa3\xd3\
+<\xc4?\x5c\xa4\x9f%^\x84\x18\x8eF\x0b#\xf9\xbb\
+p\xd8\xa0|\xe01\x0d\x87a\x10\x93\x15e\xc8\x00w\
+852ba6\x87\xd8SfT\x801@$\xf4\
+R\xf6\xfa4[\x98\xa6\xb5\x9a\xf7\xbd\xc5/_\xa3\xd0\
+\xd5\xcec\xfd\xfd\xe5\x02x\x87\x1a\x1b\x81\xb6\xdf\xebd\
+@\xe8\xe0$\xe8\xfc$\xe7\x12\xdbX\x19\x11\xdb\x15i\
+\x08\xd6\x94E\xa1]'\x82P\x0f\xc9W33\xc8\x88\
+\xb24\x5cW\x11\xb9\xc0dA\x18\x0bNL\x22\x94\xb2\
+.\xf3\x08\x14\xac\x98F\xf9\x87\xebl\xac\xc7A\x10p\
+K\xd9q\x96\xa7E \x89\x8bm\x9cy\xd8n\x8a\x12\
+n\xc1H\xd4.K\xdeF~\x05\xd5eIt9\x94\
+\xd1\xc8\xda\x83\x90\xa5}}YX\x87\xc6\x08\x1e\xdc\x5c\
+^\xea8\x86\x08\xcc\x8c#\xc5\xc5\xceI\xc6=$O\
+\x02H;\x1a\xbaN|3\xb0z\xb7\xe8{\xc4\x92e\
+X\xba%\x05\xda\xc6\x8aC\xc9\x9a\x12\x1f\x02\xba\xd9\x92\
+L,\x98\xach\xc4\xcc\xdcq\xad\x1f\xb2Obp\xd2\
+\xf1I\x93\x5cA+\xcbX\xc9\x15\xc8\x9c\x9e\xd1\x0bM\
+8\xbe\xe8\x8aW;\x9eGf\x8c\x90u?\xbbTF\
+(\xd5X\xbf#\x9a\xeeo\xc9\xae\xb3\x1b\x04\xee\x22Y\
+bQ\xf7d-@\xc1S\x86\x0b6\x13e\xa2\xfe\xe0\
+\x229\xd6\xeb1\xa7\x81el\x1dk\xed\x1c\xa5\xef\xc1\
+tK\xdc\x5c\xdcV\xeck\xba\x8d\x8f\x93|6\x014\
+\x82\x8e\x97\xc8K&\x0bq\x83\x87b\x8c\x92\x11\x0c<\
+B\xd4?\xd8\xb2t\x13\xab\x95\x19nrR6\xe4o\
+\x03\xf03\x19B\x0d1\xb8\x97S0\xa7\xb6\xa0\x02\x9d\
+-\xc1\xe6\x8f\xd9Q.\xe1\x8c'\xcfA\xf6z\xf6'\
+O\xc9\x85\xec'\xef\x93\xf6\xe0$\xf6*\x81\xd1@\xbe\
+\xacS\xa4W'\x9f[\xc2\xdbS\x87\xfb\xa6\xe0\xcb\xb5\
+%\x85\x0aq\x90|\x9e\x91\x9d\xcb\xf12X\x96\xf8\xb0\
+\x9aD\x7fP\x1d\xb4\xbbgm\x0d\x1d\xdd\xc7\x83$&\
+\xda\xbc\x05\xc1\xab\xe1\x91\xe3]\x92\x7f\xf1}3\x15\xe4\
+\xc4\xf1KR\x0b\xbb\x83\x9cO\x0b\xae\xa0\x9e\xe2\xf0B\
+\xc14q6M\x93i\xd4\x83TVD\x0a\xc6B\xe2\
+f\xcf\x02$\xb6G\xf9jG\x9cs\xec\x18\xa1\xdf&\
+\xec\x18~\xf0R\x84~\xb4\x10C\x80u\x89\x90^%\
+\xe4\x99\xb3m\x82h\xbc\x14\x0d\xe6\xfb\xdb\x5c5\x89\x0c\
+C\xd6-cu\xdb\xd4\xd6+0w\xac\xdc\x9a\xde\xb4\
+\x12\x83\x99,T_`\x18\xb8\xa8\x10\x99\x8a\xcfI\x97\
+\xeb\xc1l\xe2\xa6\xc2\xbb\xc5\xba9@c\xf8`f\xb2\
+E\xcc\xed\xc8\xaf\x8d\x1dc0\x22\x02$+\xdb\xae\x14\
+\xffhA\x907\x1f\x1a\x0c(\x1c\x90o+~b\xcd\
+\x99\x149~jL\x9c\xfc\x85\xcao$\x95\xd1Nm\
+\x8de\xee\xf7g\x11\xe1V\xe2k\xe9\x89\x99,B\x11\
+\xe8\xc5\xbdh\xbf\xe4\x10\x01\x8cj\xc4\xd9i\xe7\x90\x91\
+R\x81\xff\xe8\x84\x81\xa9\xb8}\xb7\xb5)\xcd\x1d\xff,\
+Bf\x08]\x98K\xb6?\xf8\xb40\xa7\xe5\xdah>\
+2$\x8cKJ\xc5j\xc9G\x0e\x8b\x8b+X\xbd\x0e\
+\xf9x\xa8\xf7\xc3GT\x1f>\xb6\xc3\xc9\x1b;\x06-\
+\x0c\xae\x9b=\x89)f2\xb0v\xd3`Jf\xb2X\
+\xdb\xa9k=T\x01\x89\xe2D\xf2\xa2U`k\xd7(\
+\xb7\x95\x92J\xf9j\xab:q\xea\x15\x03\x01\x1a\xc3\xa8\
+\x03\x22\x19g\x8b\xf4\xb3\xb4k=\xd5n\xb8\xc20N\
+BX\x9ch\x11\x0f\xa2\x91\x03a\x85\x8fdV\x13\x8f\
+m\x8de\xeeX\xa9.\x94q2[\xb2E\xaa\xebi\
+!\xd3\x5c\x15\x19x>E(K\x9f\x1b\xca4*\x88\
+:\xc8\xf6\xb4\xc85\xd8\xc4SF/\x86jL\xfbW\
+;R]c\xc7\xfft\xe8\xffO\xfe\x1a\x22k8\xae\
+\xd4B\xd4\xfc{\x9d-L\x06c1\xac\x85\xb89\xb5\
+\xb3\xb2\xd9b\xdb\x94e\xd1\x0bK\xe5!{\xea\x05\x10\
+QQ\xcc\xe0\xbcR\xb6\xf0M'\x8b\xb0y\x82R\x1c\
+\x08\xa9\xce\x83\xd0\xc4\xcfC\xa5\xc3\xd6!B\x96*2\
+\xbe\xf2=\x1b\x08\xbcs\xc9-\xf7\x8f,\xcd\xfb\xa0\xe7\
+u{\xb1!\x17\xa1\xa6N\xed\x9e\xa4\x0f\xabf\x91\xd4\
+\x9e?Y\xc8\x97\x8cuN\x05\x1e\xe0T\xda\xb3\x1f\xf3\
+3\x18\xce\xe8\xe9{<\xf1y\x933\xf6\xf1\x9d!\x03\
+7\x18\xc4&\x13\xfa\x7f\xa2\xd6\x12\xee$\xf8\xd3\xc76\
+\x19\xab>l\xecl\x17o\x9f\x97T|\xed\xba\x1a\xbc\
+FP`\x0e\xb4Bx\x8d\x91\xa3{\xc9Y\xbc\xc4\x1d\
+\xcc'\x9a\xd3\xbb\xf4\xf9\x9d\xa6[wl\xba%\xbf}\
+8\x03\xe5\x9bw\xc7{fK2?3\xe6\x96\xc7\xa7\
+\xd08\xc2\xc1\x97\xbbSHI\xee<V\x81AM\xa2\
+[\x1b\xc3\xe6\xd9\x1aH\x10V\xea\x15,\x0fC\xce\x1b\
+?\xcb\xdcvT,F\xe7\xdaV\xe7!\xfe\xfe\xc8\x14\
+l\xded\xea\xe2UN\x96.\x99D\x9a\xc4\xea}\xff\
+4\xcd\xf1*\x94!\xce9\xf8B\xcbR{cm\x07\
+\xc2\x16Y\x82\xa8\xc8\x90\xaa\x82\xe6\xd1b-\xd7%\xb2\
+\xef\xfd\xcc\xd1\xf3\xd2\xbb\xd6\x223\x0f\xf0\x0f\xc7\xc2\xc0\
+6\x9f\xec\xe7\xbd\xce\x96\xce\xe8J|\xacw@5\x8f\
+3\xa8K54\xd2U\x88\x8e\xf1T<C\xa4#\xae\
+\xb7\x02\xb8\x85\xc1\xc5\xd9\x82BKA\xb0\x11\x1e1\xdb\
+\xe4s\x0c\xda\x81\xe7\x91\xfe\xe9\xac\xaf\x9f\xa8\x9cd\x1d\
+\xf6\x9f\x96\xd4%\x1c\x8b\x1e\xe3C\xa0\xe9\x14COg\
+\xdc\x07\x90\x82\x9d\xb9\x0b6\xd2\x85\xbe\xae\x8f\x86*\xb1\
+\xc0\x92\xfb\x1c-9\x90\xa68>\x8b[s\x1cD\x1c\
+\xf8\xc7\xa1\xfe\xfej\xb1h\x00c}\x0a(\x17\x0dA\
+x\xb9\x8e\xd2\xef\x8c\x82o\x10\xd2\x9c\xdc\xf0,\xcb\x0d\
+\xcb\x99\x97N.\x80\xdc3\x9f\x08W\xf7\xaaD(\x85\
+\xaf\xf9\xb0t\x9d/\x12\x1a\x96G\xef\xd6M{\x0e\xed\
+\xf7\x17\x96k\x1fO\x0e\x0c\xde`a\x84\xcc\xfd\x9f\x8f\
+\x8a\xfa\xc2\xe7k\x15\xd0\x89`\xdeR\xb9\xdc\x04\xe0^\
+\xe4\x92\x9fRm\x96Z\xb9\x14b\xb4D\xdd:5\x05\
+\x89%\x9c\xc6`\xf0\xde4\xd2\xdf_l\xf2z\xef\xc9\
+\x7f\xaf\xb3%y\x03!\xad%^\xd0dQ\x81\x12/\
+(\x09\xa8\x8e\xc5|\xe9\xb9\x17\xae\x13L@\x0a\x03\x03\
+\x1e8[\xaf\xa9\x1d\xe5\xd0\xa4\xd1\xcc)\xfa_\xfa\x00\
+\x84\x10\x9c\x87\xf9\xfb+\x85\xa2\x8c\xd1\xf4\xa0\xe2\xd0\x09\
+\xeci!v\xbf\x89b\x0c%Y\xd8\xd1y\x8e\xbbT\
+\x15&0\x7f\xda\x9b$\xa0\xe8\x040\x0d\xebC6\xf7\
+\x0f\x12Z\x13[*\x12\xbd\xd1@\x10N\x12\x92\xb3\xb0\
+\xa0~\x1cB\x9c\xd8\xc6\x81\xfeak\x91\xa0\x18\x91\xc2\
+\x07\xef\xeada4\xe0\x14\x1e]\x81\xac][\xce\xa5\
+0\xe3\x8b\x1e*o+\x5c\xf9@\xaf\xf0e;\xd4<\
+)\x9a\x87wqc4yhS\xcf\xe3\x10\x12w\xe3\
+\x06\xc3\xfe\x97>\x00m0\xf30\x7f\x7f\xa5\x00\x95l\
+\x82I\x02\xef\xa0\xa3\xec\xd3\x826\xb7\xf4M:z\x00\
+27\x97\x96*\x99\x81\x09?\x85\xc7\xd6JDT\x1b\
+\xe2\x13{\xd1I\x82\xa4\xd9\x8e\xf2\x9dA\xb5\xf2\xb4\xd0\
+\x1f?Th#\xd0\xf34\x8a8\xfd\x8ec\xfd\xcb\xa2\
+\xcbbN\xc0\xb0\x14\xd2\x18\x0dx\x99T\xf9\x91Y\xc3\
+\x99\xb8$\xc9\x9dK\x86\xc3'\x9c\x1cT\xbb\x99\x08\x80\
+?I\x14J\x01iD\x13\xe9\x97\xaeR\xd0\x89k}\
+\x18\xa8c$\xd2g\x5c\xcc<\xa4\xc04\x0f\xa3\xfc\xc3\
+mM\xbd\xc2\x091\xc2\xf7:[\xd0N\x0c\xf5\x1fD\
+M\xe0\x0dl\x9b\xeal\x93\xa1r8\x8a\x12\xa1&\xc1\
+:\xbaSI\xd0A\x9fg\xf8d6\x22!__\x16\
+\x1c\xbc\x88\x99\x84Z\x0f\x9f\x8fi\x0c\xba\xa9\xf3H\xff\
+\xb0\xe1\x1c\xbc\x13,b;\xb82M\x16& Lu\
+\xc9\x15\x09JA\x9bx?\x93\x1c\x07R\xda\xbah\x88\
+\x91\xb0*\xc6H\xc6\x08\x8ab\x04\xa0\x96cUH\xae\
+\xce,<-x\x0d\x98N\x82T\x12\x81\xa0\xd3(\xb4\
+\xe5\xccc\xfd\xc3\xe5Z\x05\x00\x98\xda\x8b\x01\x9f\xc9\x92\
+\xc8\x82(\xa1we\xe1\x92\xaa\x95\xf2\x16~\x12\xc8\x02\
+\xb9I\x80m\x177\x95\x12\xa9\x89\x0fkV\xb4+U\
+%\xc0Z\xbe\x1c\xc9{Zpb\xe0\xbc o\xc7\x03\
+\xdb4\x08]\xed<\xd4?%F\x9a\x85\xeaZs^\
+\xe4a\x08e\x06\xf2\x07\x1e\x8a\xa7\xe7\xa6j\x91\xac\xd2\
+\x0c\xb8\x80)\x0b~J1{\x0bJ\x10\xfch%\x0f\
+\x9e\xa2A\xa7\xc0\x0ds\xb6\x80T\x82\xa9\xb4J\x84\xec\
+2\x0f\x22\xf2\x22\xc3@\xff\xf0\xd2\x86\x10\x95\xb0I\xef\
+u\xb6\xa4PJ\xae\xba\xf6\x80\xec\xd78X\xf9\x5c\xb7\
+Xl%\xad\xbd\xc0\xb3:9\x18b,\x8d\xcf\xbb\x8f\
+zOKz\xa8J'\xfa\xbf\xd3 \xf4\xd6\xceC\xfd\
+\x83?a_\xbe\x02\x03@wb0\xa0)\x1d\xae\xa2\
+P\xaa\x92\x17\xf8\xeb\xf6\x14\xc4]\xfal\x1c\xbbg\xc3\
+\x97z\xd8%<\x8ep\x12'Kd\x0f\xd0\xc5\xc9x\
+\xd68\x04y\x13\xd30\xff\xe0L\xc8]\xab\x85\x0e\xfd\
+{\x9d\x0c\xc9je\x90\xfe}\x96\xe4\xd6\xec\xe3F\xcf\
+!\xf4\xa98-\xca\xed\xd9\x8f\xcc\x13\xf8C6'V\
+FK\xe4\x8a\xf0\xa3;\x0f\x0d\xe3\x18B-y\x18\xe7\
+\x1f\xae\xf4\xb2(\xb3jx\xdf\xebl\x91\xee\xb1d\x8f\
+\x93\x0e\xaf\xa4(p\x01\x87K\xbb\xf6\x22\x9d\xeb\x88\xbb\
+H\xac\xfb\xfa\x08\x16\x91\xb6\xe1\xb0\xa35[XqU\
+$6\x9d\x1b39\xe3 t\xb1\xf3P\xfft\x5c%\
+\xaf\xb7\x8b\xa3t\x5c}ZT+M\xb91\xae\x1e\x88\
+\x86\xc2?.\xe2\xe0W\x22\xfe %H9\xac\xf3\xa4\
+\xe0\x18\x86\x85\x82S\xbcf`\xc85\x8d\xc2\xeb\xcbB\
+\x06E \xfc\x0aW\xac\xe5k\x0cqZ\x1dG\xfa\x87\
+\xb5\xc9Bv\xf9\xe2\x8e\xf9^g\x0b\xda]\x85o+\
+\x9fbt\xb8\xeaZi*\xd1o\x0bM\x976N\xbe\
+\xb0\xe0\xeb\xff\x04\xe6p\xae\xd9?q95I\xd3\xc9\
+Kp\xbeH\xbd/\xbd{\xadJ\xf3 \xff\xe0 \xc6\
+\xb91s\xd4\xefu\xb6\xb0`\x92#\xd9t:\xebg\
+\xd3\xe4W)I\xd4k\xe9g\xf6\xa8J\x88\xf3\x5c\x94\
+\xb4\xb7\xcd\x07\xba\xd1\xd0\x8f\xeb8\xd9A?s\x1e\x82\
+|\xc4y\xa0\x7f\x80\x924\xbfZ\x95\xe7\xb5\xf7:[\
+\xa4)\xe9StQ\x15.p\xb0<k\xb6(\x8a\xad\
+|\x80Ew\x8d\xb8\x13R\x82x\x1e1\x1bdOA\
+\x94\x14dCI<\x12\xa3\x85y\x81\xdd\x01\x07\x15\xf3\
+\x8c\x83PJe\x1e\xea\xef\xaf\xf6\xb2(d\xe6\xa6\xff\
+^'\x03\xcbM%&\xc1\x0aK\x9ePt\x13\x0eU\
+\x1b]\xac\x02\xd7m%3>\xe8\xc6\xb6\xc3'\xef\x9d\
+\x0b\x10\x98\x81\xc9\xe9\xb1\xbe\xa66I\x1a\xd8\x9f8O\
+\xd5\xfd\xd2\xfb\x0f6\xc9a\x8c\xbf\xbeJ\x84\xa1\xf9N\
+\xe5\xd3?1[x:\x97\xea\x05a\xc6\x9b\xe4\xcc\xf8\
+\xda\x8a\xf6G\x07=\xbd\xa6\xbc\xce\x22Q\x87x\xc2)\
+\xc0\xd3\xb2+0\xe0.\x8d\x06\x96\xe6\x17E\xeauT\
+\x9a\x86\xa0\x8c\xf3<\xd01+\x91\x04\x089zVb\
+4\x98\xcf2J7\x89`\xd9\xafOQd\xa7\x95c\
+\xc2\xa8\x0a\xceS\x9dU'\x8eoh*F2u\x89\
+\x82\xc1f\xf0@vZ|\xb6D\xe9!\xc1\x16b\x8a\
+x\x02.\xb46(\xb1z\xd4NA\xc8\x9c\xef97\
+\xf5Z\xcf=\xa2^\xcf\xc8\x16\xf7\xf1^gK\xd0%\
+FN%\xb8\xed\x18\xf0\xf6\xf9&/\x1d\xe9\x11\xf5\xfc\
+\xcd\x8c\x99S[\x9e\xfb\xdc\xe7\xcf\xb2K\xe8\x8bJ6\
+<~O\x06$p\x9c\x81=(F|h\x87?\xe9\
+4\xee\xd5\x89<()\x9dT\x0dd\xd9X\x08J\x8e\
+M\xca>\xce\xfd\xddC\x10\xfb/\xb3\xa4\x85C\x18\x0d\
+$\xbeQ\x81\x13(\xc3\xc1PF\x19\xac\xd3\x9a\x1d\x08\
+\x0d\xdd\x87\x98\x05;3(r9(\x9d\x10r\x9eZ\
+\x1c\xc2\xdc\xdf\xcf\xc2\x0c\x87x'.\x8ej2\xdc\xa3\
+\xf6i\x1f5\x0a\xbbx\x7f\xc9\x8e-\xb5\xc8\x8dr:\
+\x0cT#cW\xc5F\x15\xc42S\x13c\xf8\xea\xf0\
+\x9b\xd2!\x09\x11\x8d\xc0\xa0\xea\x99fKR\xcc\xbf7\
+7W\x85\xe5\xfe|l\x87\x9fT\x9bB\x90;)i\
+fv\xf6\x94\x82\xe2n2\x98_\x10\x1f'n'9\
+\xe9\x10=\xea\x05\x9b\x87\xa9$=h\x90Q\x1d\x9f\x9b\
+s\xf4\xe0\xe2\xa8\xd2\xa5b\xb3R\x14],\xe3\xf4Q\
+\xd1j\x87\x93kX\x821Ib\xf3\xde\x09@EH\
+<\xd8\xa1\xef\xff\xdf\x7fu]\xe4\xa9\xfay\xeay&\
+\x01\x02\xd2\x8e\xc7B\x84@8\xefP{7\xea\x16\x91\
+\xa9\xdd\xc5%F\xb1\xb5{\x85\xe4\x81\xa0\x09\xa7p\xdf\
+I<\xf5:!\x1fR\xda\x80D\xabP=\xd4\xd5\xdb\
+\x8d5\xa0v\xdb\x89gl\x8bS) \xd0\x18\x09\xab\
+(\x05\x10G3\x89\xef\xbd\xfa\xd3\x9dM\x9d\xecK8\
+\xe0Q\xcc1s\x8d\xbdO\x80\xac\x00\x1d\xa71P\x08\
+\xc3\xcc\x02\x9eAtv\x05~\xe208\x03\xf5\x0b\xb5\
+\x92\xd9\x8e\x9av\xf7Gk\x11\xf0\x09\xd8\x83{M\xbd\
+\x8f\x0c\xd6Hl\x8c\x14\xe1\x5c\x22\xb2\x80\x93 f\x9c\
+\x17\x92\x89\x81.\xfeX\xb1\x16\xe1A\x1e\x87\x1a0'\
+\xf1\xcb\x83\xf5 Y\x92\xbb\xe8N\x8a\xf1\x1e\x10\x8e\x83\
+\xaa\xb4\xe6\xc8\xb8\xcftU\x84w\x846\xdeC\x86@\
+h\x0be\xb7{\xad\xc6\xf9\x97\x08\x91J\xd074h\
+\xb3E\xda\xf0\xa0\xed]\xc3\x18P\xaa\xcc\x1fo\xa6\xca\
+@,\x03\x0a\xcf\x97\xbe\x8e\xfa\x9c\xdaX%\xf2\xa2\xa1\
+\xc2-\xafF\x10\x10x\x85Vv\xeb3\x8b\xf2\xaf\xc7\
+y\x15(\x87\xcf\xca\xc6\xb2+ar\x1a\xdbU\xd1n\
+\xc4P\x80\xae#5D&G\xd5.\x11\xbf\x97hd\
+\xf1h%\x95,\xb2 >\xe3\xd6\x9ft\xb4\x0bQ\x02\
+{1\x16\x87\x89\xfd{.\x11\x91\xc1\xf8 \x86|\x9f\
+%\xc0?\xb2+\xd0\x07:B(\xdan\xe2o\xae\x92\
+5Gtv;\xd4\xc4;\x91\xc8\xfbG.\x88\x9d\x83\
+\xdb\x83\x1b\x02X\x8e]\xca\x1alB(\x0c\xa1\x08L\
+\x1e\xcee\x17\x17\xaej\xd2\xdc\x8bg\xbb\xea\x95\xa0\x80\
+,\x9fS\xcd\x8dIj5\xf5\xb0R\x13\x0d(x\xa8\
+\x16\x99\xc3\xc7Q\x96wQ\x10\x0e,J\xa8\xc8\xb9\x82\
+\xa0\xa1\x08\xd4U7VR\x91\xd8\xa2\xf2\xd7\x89\xb2\xc2\
+\x95#\xd9\x03\xe8\x94\x08\xd0)\x0c\xcd\x05\x83h3<\
+\xcbE\xeb\x01\xa9s\x87\xbb\x14\xa8\xa6\xe1\xc6a\xfbU\
+\xf9\xc9\xde+\xa0\xb3\x22%{\x10d7F\x9ePL\
+z)\x99\x85\x02\x81.8\x00~\xd9\xfbZ\x16\x00\x0e\
+U^\x0f\x0f\x96|k\xa7\x90\xe6\xf7l\xb7\xec\xc2B\
+.\x8e\xf7\x1fX\x18^\xb9\x1c\xc3=C_Ix\xfa\
+\x8c\xd2\xb2}\xef\xfc\xd7*)\xe2\xbaR\xe9\x17\x81U\
+\x08\x0b\xe0\xd9\xd8\xe4K\x19\xc5\xfbI\xdb:\xb2\xef\x98\
+\xbf\x9c\x84@\xd9-\xd20^\xaa\x1c\x81\xe9\xea\xc1q\
+\x91\xf8\x80\x91BN)\xaf\xc4^\xda\xa6\xda\xf8\xa4\xda\
+Ix\x1b\xa7\xf6\x1e\x00\xf3Z\x0a9\x0c\xf8^X\x1a\
+[\xd6\xcaa\x7f\xb1\x95O\xf3^\x03\x9a\xb9\xb8\xa2\xb9\
+\xb3\xc6\x10M\xdcr\xa4>\xa0\x07\x08\x921\x9c\xb5\xf0\
+gj\x03\x11\xa1~_b\x13\x17\x0c;;\xf9cE\
+\x1fG\xbd#0\x82|y\x13e\x93x\xbb\xf8\x04Q\
+\xf6\x0eC\x93\xbf\x06\xdf\xfa\xe2\x92\xaf\x91\xa3.\xf5^\
+\xd2\xb0\x05\xe0M\xdb\x8eX\xa5)\xf9\x8aP\xfa\xc9&\
+\x98\xa9\xb4\xa9\x12p\x88\xaar\xa4R\x80\xb2\xdc\xf9\xe0\
+\x90\x81~\x93\x90\x0e\xf8B\xa5\xc8\x81\xb2\xf5\xfb\xf1D\
+w\x1c\xecF\xc2\xdc\xdd\x82\x0b\x9a\xf6%\xe6][\xea\
+t+H\x7f\xa2\xa5\xb3R\xceU4\x13\x005\xd4]\
+\x83\xc8\x8d_A\x94,\xa9\x89\x07\xac\x8a\xac\xd4\xcf+\
+*!\xf1R\xb5\xcb\x8f7\x1d\x13\xd6N\x90\x22\xa3J\
+\x16\xc6\x81\xe4\xc27\x10\x88O\x91\x9bp\xa9$t/\
+'\x85\x99\x11e\xb9\x9c\xeb\xc4\xd7\xa1\x04\xa5J\x09D\
+l\xaa\xc4\xe3\xa6\x91G\x86v\xb8\x18\xf9\xe4\x85\xb7\xc0\
+\xb4&ElUp\xfd\xe0\xd2\x14U\xa8\x82th\x97\
+\x8b}\x8f\x1e\xc8OIm \x9fv\xe1\xc3\x09Z\x97\
+h\x02d\x89\x0c\x05\xee`a\xa8\x18\xd3\x99J\xace\
+\x17\x9e\x5c\x12PT\xe9\x0a\xd2%n\xca\xa0$>\x98\
+\x96\xdd\x01a\xd7=\x87\x08\xd7\x01o\x85\xc5\x0b\xa2\xf3\
+\x95\x84\xab\xfcm\xdc\xaa.\x83\x80\x98O\xe6\xd7w\xf1\
+0\xddn\x0f\x16\x09L\x18\x10]\xf7#\x82\xae\xe4\x8b\
+\xa0\x8d\xdf.\xd4Q#\xe0k\xe7P\xa4\x1f \x11]\
+4\xcf\x80\x08\xe8\xcf\x99\x1bb\x91\x9b\xd4\xccET\xa8\
+\xc5\x0aw_\xea\x0aE\x1b\x08\xd0\x9d><T^5\
+A\xbeH\xd2\xdf\x13\x8e?b\xca^b\xf5\xd9\xf8\x01\
+\xb1\xa6$\xbd\xbe\x9b\x97\xf8\xa4\xbfnt\xc1_<^\
+\xf01?\x85\x0d\xcc\x86T\x92\xd4V\xcb'\x82R\xfb\
+\xf6 \xe1\x81+T/\xf7\xbf1\xcd\xb2[\xceS\xa4\
+\xfa\xf4\xb2\xe8f\x90j\x055u\xc86\xab{x\x06\
+~\xfb\x19\x81Ak?BW!K\x92<t\x17\x90\
+\xf5\x0051\xce$hs1\xed\xba\x0ad\x1c\xd2\xe7\
+\xb3\xe7\x02\x8f\xcfNRL\xcc\x1b\xfd\x8cX.m\xe0\
+\xf2|\x19\xbc\x01\xf7\x1f\x83\x85\xfb]T<\x85+O\
+\xc1x\x948r\xb2\x95\x94Jo\x15\x14\x96{\xc0<\
+\x16>\xab\xda\x1a\xca\xce\x0au>\xfa\xba\xe9\xd8\xcc\xc8\
+g[\xd6\xf1\xbd\x88\xb3\xe4\xf3M\x81\xb7\xcd\xfeR\x8d\
+\xd3\xec\xd0&\x01\x17\xcb\xe5\xcd\xec\xa8\x92\x0bl\xf8\x86\
+\xa1?\x0dJlS\x19\xd1\xdf\xc6\xe97\xdc\xd5O#\
+\xb9v\xd4\xc4\xe3\xae\x80\xcd]^\xe1\x8c\xa0`\xf3\x07\
+\x9c\x7fkVgy\x8eP~\xedx\x0d\xd2/\xa6\x87\
+\xedR\x93g\x93N+\xe9\x16\xba\xd03KI\xe3\x88\
+7\x1a\x14+V\x14Sq\x85\xa6\xce:G\xe7\xd0\xa6\
+\xcb\x0a\x98\x98\xdc\xb8G\xbf\xc6\xd1\x8c\x03\xfbay\x02\
+\xc3h!N?\xb4\xfd\xe3\x96\xe3d\xfd\x01j\x85\x83\
+\xa3\xeb\xd9\xd6Y\x9e)\xcd\xa0\x9f+\xcfi{\xcd\x86\
+(\x83\xb0\xc6\xe9\xd0\xb1\x07;\x8dM\x98{\xcc]\xad\
+\x01,\x1f\x0d1\x84\x22\xfa\xa2\xdd\x0c{gpb\xda\
+\xb0\xc4\xe5\x99\xf5/\x8b\xe4\xba+\x1f\xf4gf4$\
+\xd3<\x17\x95\xc3\xa8\xeb%\xfa\x0e\xa0\xc70\xbe\x9f\xa5\
+3\x9b\x9d\xf1\x84\x8f\x06\x87f\xf1\x88\xf3\xd4\x1aZ\x09\
+\x115r{\x91\x81\xb8\xdc\x83\x0fG\xd0\xa6Q\xce\xa1\
+\xbf\x90\xa3\x01\xd0\x0dD]\xaa\x9f5\xf1\xfd-\xf8\xba\
+\xb9,\xcd\x00h\x03q\xf9$\xe9\xef\xc2\x19|5\xce\
+x\xdfF\x03\x99\x8b\x84\xf4\xd1\xe7\x9d\xfdK\xfdY\x1e\
+\x0d!FQ?\xda\x15\x9f\x99\xf0=\x9f\xa7Klr\
+X_k\x14n\x0d\xedX\xf1J6/\x9cX\xae:\
+?\xd6\xa7\xb9p\xa5\xe6\xfd\xb6\xc6K\xc8q|\xf8n\
+\x07\x03V+\xce\x9e\x8f\x8b\xcf~\x03\x966\x0eML\
+VLs\x91[ELV\x9fv\x87w\x99\xd7JI\
+\xb3RL\xe7\xf8l\x8bZ\xd1\xddK\xa7\x82\x1cd%\
+\xea\xe1\xc76X\xdf\x0a\xd9m\xd3a2\x7f\xafO\xcb\
+d1\xb8k\xa5\x0c\xde8\xbc\xe0\xc5z^\xc0O\x08\
+\xf5\xe4\xcbW\xf4l&k{\xd6\xe2 \x0b\xd1\x8f\xb5\
+k\x89<\xdbK'\x96\xab\xe6wK\xf2?j\xf7?\
+F\x83CD\x14\xf8\xeb\x01\x22Il,v}?\x96\
+\x90\xf0Y\x19\xcc\xce\xe30\xe5\x98\x0e\x97\xa1CCc\
+\xf0\xc0n\xdb\xd0\x8eyh&t\xb3ZE\xe7\xea|\
+\xb6\x17\x97f\xc2\xe7\xe4\xf9k\xf8\xa5\xf0\x8a\x9f}\xfd\
+,\x16\xee\xd8#\xb4;\xb6\xf1\xf3xS\x9afy\xd3\
+\x0e\xd4,\x99=\xb4\x97\x98\xa7Ch\xf8\xb4iO\xfc\
+\xd4\x9b\x8d\x86\xe4b\xacf\x96_\xebr\xecY[\xe8\
+k\xb2\xf4\xcf\x9b\x99h\x1c'\xcb\xa4\xa7+\xf9YJ\
+\xd3{\xd4#\xb5\x93\xa1\xec\xa4\x15\xd2?3J\xefU\
+\xa8\xf2h\x94f\x88\xf6\xae\xe7\xdbmD\x08\xf4\xaeN\
+\x86\xe2\xddd\xbf\xdc\x1c:\xbc\xdf\x82\xff\xfb\x1e\x15\x06\
+z\xae,\xad\xc4\x10\xfd\xcf\xe25\x8b\xdaD\xa5\xea\x05\
+\x07\x8c\x0c\x9d>\x9b\xc5\x1b\xb3\xb4F\x96O;\xf5!\
+\x0e\x86rl\x90\x8e\xb8>]a\xf6\x1eC\xb8\xc7\xe3\
+\x92J$\xcbU\x042[\xca!\xc8\xe1\xae\x1f\xb4\xec\
+\x80G\xf7l\xdf\xe39.\xd3'z\x8aN/\xc6\x97\
+\xd4\x87\xc6v9\xb7O'c\xa7Z\xeb\xbe\xc7\x86\xf1\
+:\xad\x5c4\xed\xf7x\x0dC'zg\x83*\xd2l\
+)AZ[\xb4\xf1\x97k\x93\x9b\x1b\xef\xca\xf7\x8fF\
+\x8d'Y/\xfe\x0b\xe9\x05\xc2t\xf4*6\xc3\xa0Q\
+\x04B^\xaf\xcaT\xd1\xbf\xd7\xff]\xff\xf5\x9f~\x00\
+Z_\xf7d \xbc\xc6\xc5.\x1aX_\xb89 P\
+\xef\x885\xe9{\xa4\xb6y\x0f\xfd\xbf\xfdp\xde\xfc\x85\
+\xea\x1f\x1f\x0d\x09H\xf8\xc3\xa9kGI\xca\x19\x90\x8b\
+\xff\xf6\xe3~\xb8\x0b\x89\x18\x931\x1dOK\xf8[\x85\
+\x81|\xd5S\xf0\xcf\xcf\x1e\xfe\xb5\xfc?\x80\xc7\x05\xe8\
+\x0aendstream \x0aendo\
+bj\x0a\x0a15 0 obj\x0a[/I\
+ndexed /DeviceRG\
+B 255 16 0 R]\x0aen\
+dobj\x0a\x0a16 0 obj\x0a\x0a\
+<<\x0a/Filter /Flat\
+eDecode\x0a/Length \
+336\x0a>>\x0astream\x0aH\x89\
+\xb4R[\x95BA\x0c\xab\x05,`\xa1\x16\xb0\x80\x85\
+X\xb8\x16\xb0\x10\x0bX\xc0B,`\x01\x0b\xd9d<\
+l\xffz\xa6M\xf3\x98\x99\xd4\xce`\x863\x9aq\xbb\
+\xddY\xccrV\xb3\xee#v\x80\x01\x07\x1a\xb8\xb3\xdc\
+!\x86\x1cj\xe8\xaejG\x18q\xa4\x91\x834\xde1\
+\xc6\x1ck\xec\x02\x17:XY\xce\xb4{\xa7\x85]\xee\
+j\xd7=\x9b\x0eXp\xa1\x85\xcb\x22\x8f\xc4\x92K-\
+]R\x99\x15V\x5ci\xe5p\xcc\xea\x1ak\xae\xb5v\
+)WCH\x87eh\xb9\x0az)\xd0\xc1\xca\xb2+\
+\xa8}\x8a\x80\x00W_\xce\xa6#A\x81\xae\xdc\xb0\xc8\
+\xa3\x08\x09r\xd4\x87Tfa\xc2\x82]3jV\xb6\
+cG\xf4\xbb\xdeTR\xc0B:,]\xabz8\xd8\
+\x81\x0e\x96\xeb\x5c\x9f\xd3\xa7D\xbaFF_\xce\xa6\x93\
+(\xc7\xd7\xc8\x0d\x8b<\xd2\xa2]\x9b\x9b\x0a:[\xa3\
+]\xd7\xeb\x1d\xbaZ;\xdc\x10\xaa\x10E*i7\x93\
+\xf2@\x81\x0b\xedF\xd4i\xf4N\xcbI,FF_\
+\xce\xa6\x93\xed\xf3\x1b|\xf2\xf6I\xd4'3\x9fT|\
+|\xf7q\xd6\xc7;\x1fw|\xf4\xfb(\xf4\xd1\xe0\xc3\
+\xd2\x87\x87\xcf%\x1f,\x9fi\x9f\xfev\xbb\xdd\xef\xf7\
+\xc7\xe3\xf1|>\xaf\xebz\xbd^\xef\xf7\xfb\xf3\xf9|\
+\xbf\xdf\xdf\xef\xe7\x7f\xab\xbf\x01\x00\x10q\xabc\x0ae\
+ndstream \x0aendobj\
+\x0a\x0a6 0 obj\x0a[/ICCB\
+ased 8 0 R]\x0aendo\
+bj\x0a\x0a7 0 obj\x0a\x0a<<\x0a\
+/Subtype /Type1\x0a\
+/FirstChar 32\x0a/F\
+ontDescriptor 10\
+ 0 R\x0a/BaseFont /\
+ZSHTRV+NuevaStd-\
+Cond\x0a/Type /Font\
+\x0a/Encoding /MacR\
+omanEncoding\x0a/La\
+stChar 121\x0a/Widt\
+hs [129 0 0 0 0 \
+0 0 0 0 0 0 0 0 \
+0 141 0 0 0 0 0 \
+0 0 0 0 0 0 0 0 \
+0 0 0 0 0 0 418 \
+0 0 0 0 0 0 218 \
+0 0 0 0 0 0 0 0 \
+0 340 387 0 0 61\
+1 0 0 0 0 0 0 0 \
+0 0 348 376 310 \
+377 324 241 354 \
+406 192 0 0 189 \
+629 414 364 0 0 \
+297 284 263 399 \
+347 544 0 348]\x0a>\
+>\x0aendobj\x0a\x0a17 0 o\
+bj\x0a\x0a<<\x0a/Type /En\
+coding\x0a/Differen\
+ces [24 /breve /\
+caron /circumfle\
+x /dotaccent /hu\
+ngarumlaut /ogon\
+ek /ring /tilde \
+39 /quotesingle \
+96 /grave 128 /b\
+ullet /dagger /d\
+aggerdbl /ellips\
+is /emdash /enda\
+sh /florin /frac\
+tion /guilsingll\
+eft /guilsinglri\
+ght /minus /pert\
+housand /quotedb\
+lbase /quotedbll\
+eft /quotedblrig\
+ht /quoteleft /q\
+uoteright /quote\
+singlbase /trade\
+mark /fi /fl /Ls\
+lash /OE /Scaron\
+ /Ydieresis /Zca\
+ron /dotlessi /l\
+slash /oe /scaro\
+n /zcaron 160 /E\
+uro 164 /currenc\
+y 166 /brokenbar\
+ 168 /dieresis /\
+copyright /ordfe\
+minine 172 /logi\
+calnot /.notdef \
+/registered /mac\
+ron /degree /plu\
+sminus /twosuper\
+ior /threesuperi\
+or /acute /mu 18\
+3 /periodcentere\
+d /cedilla /ones\
+uperior /ordmasc\
+uline 188 /onequ\
+arter /onehalf /\
+threequarters 19\
+2 /Agrave /Aacut\
+e /Acircumflex /\
+Atilde /Adieresi\
+s /Aring /AE /Cc\
+edilla /Egrave /\
+Eacute /Ecircumf\
+lex /Edieresis /\
+Igrave /Iacute /\
+Icircumflex /Idi\
+eresis /Eth /Nti\
+lde /Ograve /Oac\
+ute /Ocircumflex\
+ /Otilde /Odiere\
+sis /multiply /O\
+slash /Ugrave /U\
+acute /Ucircumfl\
+ex /Udieresis /Y\
+acute /Thorn /ge\
+rmandbls /agrave\
+ /aacute /acircu\
+mflex /atilde /a\
+dieresis /aring \
+/ae /ccedilla /e\
+grave /eacute /e\
+circumflex /edie\
+resis /igrave /i\
+acute /icircumfl\
+ex /idieresis /e\
+th /ntilde /ogra\
+ve /oacute /ocir\
+cumflex /otilde \
+/odieresis /divi\
+de /oslash /ugra\
+ve /uacute /ucir\
+cumflex /udieres\
+is /yacute /thor\
+n /ydieresis]\x0a>>\
+\x0aendobj\x0a\x0a18 0 ob\
+j\x0a\x0a<<\x0a/Name /Hel\
+v\x0a/Subtype /Type\
+1\x0a/BaseFont /Hel\
+vetica\x0a/Type /Fo\
+nt\x0a/Encoding 17 \
+0 R\x0a>>\x0aendobj\x0a\x0a1\
+9 0 obj\x0a\x0a<<\x0a/Nam\
+e /ZaDb\x0a/Subtype\
+ /Type1\x0a/BaseFon\
+t /ZapfDingbats\x0a\
+/Type /Font\x0a>>\x0ae\
+ndobj\x0a\x0a20 0 obj\x0a\
+\x0a<<\x0a/ColorSpace \
+15 0 R\x0a/Height 6\
+3\x0a/Filter /Flate\
+Decode\x0a/Width 49\
+\x0a/Length 561\x0a/Bi\
+tsPerComponent 8\
+\x0a>>\x0astream\x0aH\x89\x94\x96K\
+\x92\xc4 \x08\x86\x0f:\xbd\xe9\x1c\x06\x0e\x83\xb3\x90\x93\
+\xf4J\xaf3F\xc0\xb7\x19;]V\x85\xb4\x8a?\x9f\
+\x881\xdeO \xa6\x10\x8f\x1f\x847\xfc\xa4\xf6Bd\
+w\xd0\x1fR\xdf\xda.\x00\xa2\xf0\xe4\x0e\xd2\xec\xab\x1f\
+x\x0a+\x7fNf\xdd5?y\xc3\x1fU\xf0\xd4\xee\
+q\x9f\xa5\x82\xa7\x96F\xa5\x98\xb8\x8d\x82\xed/>*\
+X4w\xa0\xa0k\xf1T\x81\xb5\xef5\x8cqw1\
+D\xc7{\x15\xae[!V\x9e;>\x1d\x87n'\xf0\
+e\xbb\x8b\xc9C\xed\xd3\xac\x0fc\xf7\xb0}\xff4\xef\
+-\x07\x18\xb7\x99\x97\xef\xf7<\xb4\xe2\x10l7\x9a\xaf\
+ \xdfY\xbc\x8d\x1c.\x1f\xb5\xd7mS~\x97ye\
+\x96\x99\x83\xf4\x89$\x96\xe8\xbf\xdf^\x9d\x9e\x86C\xd9\
+\xbd\xd9fU\xc1.\xaf\x94\x11&\x0e6@l1\xd1\
+\xfcf\xa3\xe7\x80\xc5C\xb6U\xf6\xbbI7\xe89p\
+\x8d\x91\xacU:\xb5\x1ez\x0e\x5c\x82t\x95\xd8\xa4\x01\
+^]\x05Vu\x85\x83\xfa\xa6\x12oSd\xd4G\x0e\
+\xea\x81{\x1b5z\x0b\x0e\xb6P\xb3\xe5\x94 %\xb2\
+\xe0\xa0\x03\xd8\xec\xd1\xc3\x94\x0f\x8d\x87\xb2\x83\x129\xe5\
+\xc3s>\x98\x07\xb3\xcd\x03h,\xa6|\x984D\xd5\
+`Q\x1a\xf3!\x14\x0f-\x97\xd6\xc3u\xc2\x01\xf7\x1c\
+\xdc\xc0A&\x80=\x07\xdd4USP\xd2;\x0e\xa8\
+\xaa{.\xb0\xe7`\x03\xba|p\xb0\xe7P\x12Hl\
+_\x14\xed8\x98jj\xcf(\x80=\x07\xf0\x06\xa2\xc9\
+\xf0\xfb\xdd\xf0\xc0\x90\x0f\xcd)\x90l\xaa+\x17\x82\x8e\
+\x1d\x8f\xf5\x81\xca\x08;\xa3r\x16k\xa2\x18\x8b\xf6l\
+\x95\xbf\xd2i\xaf=d_\x95\x13\x94\xa7\xfa\xd0$|\
+\xa3\xc6\x08\x85E}\xc0\xb6\x86\x97]\x95\xa0\x22\xc1\xb2\
+>\x00\xd6\x0a\x81\x9b*7\xd68;\x0c\xbe\xa8\xd32\
+\xc0\x9f\xd7iWbxV\xa7\x8d\x01\x07Z(\xb8V\
+u\xba\x8f\xfb\xa8q\xac\xd35\xee\x85C\xd7\x82[\xac\
+TG\xf0B\x01n\xeeK\xe9>\xd5\xd6\xe6\xaa\x80\xbf\
+\xbb/%\xae\x9f\xf3\xfb\x92\xa7\xe7x\xd7<\x81\xfe6\
+\xbb\xbb\x17\xe5\xbbA\xd2\xc2\xb1\x7fv\x1a\x90\xeeY\x7f\
+s~\xf4\xcf\xb8\xda\xc5Mu\xf2`1\x96Y\xff{\
+,\xee\xa7\x97\xfb\xbf\x01\x00\xad\xb87H\x0aend\
+stream \x0aendobj\x0a\x0a\
+3 0 obj\x0a\x0a<<\x0a/Col\
+orSpace 15 0 R\x0a/\
+Height 52\x0a/Filte\
+r /FlateDecode\x0a/\
+Width 74\x0a/Length\
+ 160\x0a/BitsPerCom\
+ponent 8\x0a>>\x0astre\
+am\x0aH\x89\xec\x92\xc1\x0d\xc30\x0c\x03\xb9\x8f\xf6\
+\xd1>\xdcG\xfbx\x9d\x92n\x80\xa2\xfd\xa9q?\x85\
+\x0ev,\xe7A\x882\xd7\x1a\x86a\x18\x86\xdf\x92d\
+\xfa(m\xa8&\xa9\xd2\xff*\x9bJ\x01$\x92\x00$\
+\x13L\xdfT3\xc0\xa6\xd41\xd4A\xbd\xac\x14m\xd3\
+l\x93-\x88\x903}\xb1m\xc2\x17z\xa1\xabT`\
+\x5cUw\xc4\x9f\xc4nAM\xed\xdexO\xec\x0cE\
+\x9b\xd2\xe3\x97\xa2\xb5\xba\xb3yW\xd2\x98C[8\x96\
+\xc7Z\xbc\x81\xf3S\xe5<mg\xcaS~i\x91\xd7\
+\xd3\xc9\xdb3X\xd9\x0e\xd20\x0c\xc3\xdf\xf2\x18\x00.\
+eI\x96\x0aendstream \x0ae\
+ndobj\x0a\x0a13 0 obj\x0a\
+\x0a<<\x0a/ColorSpace \
+15 0 R\x0a/Height 5\
+1\x0a/Filter /Flate\
+Decode\x0a/Width 49\
+\x0a/Length 1076\x0a/B\
+itsPerComponent \
+8\x0a>>\x0astream\x0aH\x89\x8cV\
+=z\xe36\x10E\x95\x93 \x0d\xa6In\xe1\x0ah\
+\xc2ir\x85MC\xb80\xd1HS\xe4\x0aq#\xd0\
+\x05\xcdm\x8cSH\xc5\xdaM\xe2\xca\xbcN\xde\x00\xb2\
+$j\x95o\x03|\x82@af\xde\xfc\xbc\x01\xb5,\
+\xb7Fr\xc68\xc3\xd6\x1a\x0c\x9bn\xca\x5cH\xab\x94\
+q}6\x83\xf7}0\xce\x13\xd5\x03\xc3\xb7\xc4\x0bY\
+g\xc20Xc\x9d\xcf\x0fA?\x960U\xe3\x86|\
+\xe7\xe0\x8b\xad\xb3\xba\xe3\x87\x87\x87\x07\xdd\xa9\xad\x1b\x0a\
+\xddP\xe5\xba\xba\x92\x1d\x82\xd3\xef\xa3\xc2\x0d\x84\x10`\
+T}:\x0d\x17\x8f\x1b\x95\xa7ky\x09\x86\x9cJ;\
+\xd39\x8bh\xb1\x8d\x93\xad\x08\x05\x1e\xc9\xb5\xfcp\xb6\
+lB\x1fMD\x0c\xa6o\xcf\xc2\xe6;\x8f\x9e\xad\xf1\
+C\x0c~\x8a\x04\xffC\xb7\x09\x83\xd9`Gg\xaf\xd6\
+\x03\x89\x19v\xee.\xe7ED\x96\x8c\xaczc\x07\xe3\
+wY#w\xddw\x1e\x15T\xaa3\x1d\xe4\xd9\x90,\
+\xcee\xd8\x8e\x88+n\x80i\xc2f\xbb\x92/p\xd2\
+v&\xd8\xb2\xc0cC%\x98\xa1V\x1cK\x9fu\xf5\
+\xc3\xaa\xd4\x85$t\xc6\xd9I\x16R\x05\xa2N\x11\xfc\
+\x06\xa9\xa6<!c]\x9e^\xce\xf23\x93\xe9\xac\xb3\
+\x83_\x16\xc6\x1e\xfc\xd9E\x9bw\x01\xb926h\x1c\
+}\xdeug\x05\x16\xc7\xb1\xeb\x87<\xcd\x85\x17\x12.\
+\xaa\x95'|\x14g\x82{\x9b<\xb9\xb3\xbc\xdb\xfef\
+\x07\xf8:\xecf\xf8\x84\xa8) k\xd5\xae~\xef\xb2\
+\x05\x7fw\xf9\x14\xf7\x8b%\x9a\xf3\xa4s\x5c~\xdd\xfe\
+\xf2\xbbp&O\x81\xcc\x947Z\xef\xe8\x8c\x9e\x8e-\
+\x9f\xcbB\xb9\xaf\x16v\xf9\xaf\xd9\xd1O\x7f\x1a\xf2L\
+\x1c\x909\x9f\x90!\x8b\xee\x08z\x8e\x08\x8b,\xa8\x08\
+\x19x\x9f\xb3\xcfw}O^\x90#\x84\xe0Q\x11\x9a\
+\xe3\xb3\xd6-SE\xd8\xd4\x02@\xc7\xf9/\xb9\x8f}\
+\xbe\x8b\xd6\xfb\x81\x12\xa2p\xc0PM\x09Z\xb5\xf7\x16\
+\xc9\x03XP\xa4\xcc}V\xef\xef\xa6>\xfb\xde\xa7 \
+\xb4\x8d\x7f\x874\xbc\xb0(\xa5+Y\xb1\xf0\x92\x13\xa4\
+\x01\xe0\xb2\xfaw\x87\x89<e\x84J\x86\x9d\xc6 \xa4\
+\x8d\xcc\xda\x09\x80\x91\xf2\xeeA3\x96\xd4\xf7S\xfe\x9c\
+\xdf\x02S\x02\x9b\xf9\xccQ\xd2\x15UQf\xa0/\x84\
+\x1e\xfb^\xf3\x93_\x87\xbc{M \x06\x22F\xcc\xad\
+7\x05\x9d\xa3\xdeP\xeb\xebE\x11\xf2s\xff-\xbf>\
+\x7f\xcc2\xbf\xff\xc3T\x18\xf6I\x93\x0d~\xe1q\xd1\
+\x9aC\xe1\xc8Q\xc4\xf5\x9a\x86~\x08\x89\xa9\xd2H\x94\
+\xf7\xd22\xcbR\x88\x19Ah\xc7\x01\x0b\x03\x86d\xbb\
+\xcco\x98\xe0\x04\xf4\x95'\xb0\x02I1\xc5\xd4\x1f\x94\
+\xf9\x8c'\xecJ\x05\x91\x92\xd2[\x92&\x0fS\xb0\xcc\
+\xb5\x02\xac\xb1\xc0g\x84S\xa4\xde\x01\xed#\xa5\x8ci\
+\xe4#k\xe1\x93h\xb2U\x9e\x8b\xdaU]\xbd\xc6\x14\
+\xa2\xca\xa8NJz\xa2\xb6\x8b\xb4,\xc9\x11\xa7h\xbe\
+\x10\xbfQqn(\x90\xad.j\xac\xa2>\xa845\
+=\xccj\xbbe\xf5t\x11\x88tj\x9b\xb5\x06\x86\xb5\
+vT\xeb\xa1\xbc\xa3*E\xcd\xe2\xb9\xa5?^`\xab\
+\xe3$<\x869\xa6\x08]FV\x90\xd3\xa2\xb9\xe1\xa6\
+P.z\xf4eK\x05\xd7\xa1\xa4\xc71\x1e\xbe\xa4\x08\
+& \xb7\xe6(R\x8c\xe1\x15\xc2\xa2\xb1\x22\x92(\xe3\
+~,\xfb\xb7?\x9eL\x8d\xac\xbdEP\x93\xb6\xbbD\
+P\xa6\x17\x13\x1f\xd3\xe3a\x7fx\x1c\x83\x06)\x8d}\
+\x8d\x88R\xa5\xce\x08\xb0\x03\x22\xde\xbf\xed1\xc7\xf4\xa4\
+\xdc\xd4\x8cV\xa26\x85\xb2F\xe0\xb2Ew=\xc5\xc3\
+~\xde\xc71\xd5\x0b^\x19Q\xd9\xaa\xf2\xa4\xdc\xbe@\
+PRu_\x9f\xc68s\xba?\xfc\x0c\x96\x12W\xfa\
+\xe8\x9dSk\xa7\xd9\xbf\xbc\xc9P\x8b\x0fJ\xe1>|\
+\xc4C\x80\xc7\x1a\x93\xf2_\x1b\x14\x09\x5c>\xc9w*\
+\x9dj\xbcS\xe2Y\xbe\xde\x93\xb6\x81\xd2YY\xfe\x99\
+\x9e\x22\xeb\x1b\xbfT\x16)\xbe5j\x91\xaa9\xe5\xa6\
+\xd4\xabbU\x85z\xd4JY\xd4\xf0\x0a\xbfr\xfa\xf8\
+\xe3%\x80\x9c\xb2PW\xf4\xc9\x0a^\x91\xd6\x08\xe5\xb4\
+\xd4\x0d\xc9\xf5k\xf6\xfa\xaf\x83\x9c|(\xed\xf4\xa6\xc5\
+\xef}jS\xf8\xfa\x1dxc\x14\xdc05:\xa9\x97\
+\xc3\x8fG\xbd6K-\xc8\xb57\xff\x0d\xa2m\xd7\xd4\
+\xfe\xaf\x86\xd6oY\x93\xe0r\xfc;\x00+\x9eC\xe7\
+\x0aendstream \x0aendo\
+bj\x0a\x0a5 0 obj\x0a\x0a<<\x0a\
+/Kids [21 0 R 1 \
+0 R 11 0 R]\x0a/Typ\
+e /Pages\x0a/Count \
+3\x0a>>\x0aendobj\x0a\x0a22 \
+0 obj\x0a\x0a<<\x0a/Metad\
+ata 23 0 R\x0a/Type\
+ /Catalog\x0a/AcroF\
+orm 24 0 R\x0a/Outl\
+ines 25 0 R\x0a/Pag\
+eLabels 26 0 R\x0a/\
+Pages 5 0 R\x0a>>\x0ae\
+ndobj\x0a\x0a24 0 obj\x0a\
+\x0a<<\x0a/Fields []\x0a/\
+DA (/Helv 0 Tf 0\
+ g )\x0a/DR \x0a<<\x0a/Fo\
+nt \x0a<<\x0a/ZaDb 19 \
+0 R\x0a/Helv 18 0 R\
+\x0a>>\x0a/Encoding \x0a<\
+<\x0a/PDFDocEncodin\
+g 17 0 R\x0a>>\x0a>>\x0a>\
+>\x0aendobj\x0a\x0a21 0 o\
+bj\x0a\x0a<<\x0a/Contents\
+ 27 0 R\x0a/Thumb 2\
+0 0 R\x0a/Type /Pag\
+e\x0a/Resources \x0a<<\
+\x0a/ColorSpace \x0a<<\
+\x0a/CS0 28 0 R\x0a>>\x0a\
+/ProcSet [/PDF /\
+ImageC]\x0a/XObject\
+ \x0a<<\x0a/Im0 29 0 R\
+\x0a>>\x0a>>\x0a/CropBox \
+[55.8366 1.32904\
+ 454.04 511.205]\
+\x0a/Parent 5 0 R\x0a/\
+Rotate 0\x0a/MediaB\
+ox [0.0 0.0 511.\
+94 511.94]\x0a>>\x0aen\
+dobj\x0a\x0a28 0 obj\x0a[\
+/ICCBased 30 0 R\
+]\x0aendobj\x0a\x0a27 0 o\
+bj\x0a\x0a<<\x0a/Filter /\
+FlateDecode\x0a/Len\
+gth 42\x0a>>\x0astream\
+\x0aH\x89*\xe4254\xd4\xb3410002\
+Q0\x00Bt~r.\x97\xbeg\xae\x81\x82K>\
+W \x17@\x80\x01\x00\xdd\x16\x09s\x0aends\
+tream \x0aendobj\x0a\x0a3\
+1 0 obj\x0a\x0a<<\x0a/Col\
+orSpace /DeviceG\
+ray\x0a/Name /X\x0a/Su\
+btype /Image\x0a/He\
+ight 512\x0a/Filter\
+ /FlateDecode\x0a/T\
+ype /XObject\x0a/Wi\
+dth 512\x0a/Length \
+279\x0a/BitsPerComp\
+onent 8\x0a>>\x0astrea\
+m\x0aH\x89\xec\xc11\x01\x00\x00\x00\xc2\xa0\xfe\xa9\xe7\
+m\x07\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\xde\x04\x18\x00\x1f\x7f;\xc5\x0aendstr\
+eam \x0aendobj\x0a\x0a30 \
+0 obj\x0a\x0a<<\x0a/Alter\
+nate /DeviceRGB\x0a\
+/Filter /FlateDe\
+code\x0a/Length 257\
+4\x0a/N 3\x0a>>\x0astream\
+\x0aH\x89\x9c\x96yTSw\x16\xc7\x7fo\xc9\x9e\x90\
+\x95\xb0\xc3c\x0d[\x80\xb0\x06\x905la\x91\x1d\x04\
+Q\x08I\x08\x01\x12BH\xd8\x05AD\x05\x14ED\
+\x84\xaa\x952\xd6mtFOE\x9d.\xaec\xad\x0e\
+\xd6}\xea\xd2\x03\xf50\xea\xe88\xb4\x16\xd7\x8e\x9d\x17\
+8G\x9dNg\xa6\xd3\xef\x1f\xef\xf79\xf7w\xef\xef\
+\xdd\xdf\xbd\xf7\x9d\xf3\x00\xa0'\xa5\xaa\xb5\xd50\x0b\x00\
+\x8d\xd6\xa0\xcfJ\x8c\xc5\x16\x15\x14b\xa4\x09\x00\x03\x0a\
+ \x02\x11\x002y\xad.-;!\x07\xe0\x92\xc6K\
+\xb0Z\xdc\x09\xfc\x8b\x9e^\x07\x90i\xbd\x22L\xca\xc0\
+0\xf0\xff\x89-\xd7\xe9\x0d\x00@\x198\x07(\x94\xb5\
+r\x9c;q\xae\xaa7\xe8L\xf6\x19\x9cy\xa5\x95&\
+\x86Q\x13\xeb\xf1\x04q\xb64\xb1j\x9e\xbd\xe7|\xe6\
+9\xda\xc4\x0a\x8dV\x81\xb3)g\x9dB\xa30\xf1i\
+\x9cW\xd7\x19\x958#\xa98w\xd5\xa9\x95\xf58_\
+\xc5\xd9\xa5\xca\xa8Q\xe3\xfc\xdc\x14\xabQ\xcaj\x01@\
+\xe9&\xbbA)/\xc7\xd9\x0fg\xba>'K\x82\xf3\
+\x02\x00\xc8t\xd5;\x5c\xfa\x0e\x1b\x94\x0d\x06\xd3\xa5$\
+\xd5\xbaF\xbdZUn\xc0\xdc\xe5\x1e\x98(4T\x8c\
+%)\xeb\xab\x94\x06\x830C&\xaf\x94\xe9\x15\x98\xa4\
+Z\xa3\x93i\x1b\x01\x98\xbf\xf3\x9c8\xa6\xdabx\x91\
+\x83E\xa1\xc1\xc1B\x7f\x1f\xd1;\x85\xfa\xaf\x9b\xbfP\
+\xa6\xde\xce\xd3\x93\xcc\xb9\x9eA\xfc\x0bom?\xe7W\
+=\x0a\x80x\x16\xaf\xcd\xfa\xb7\xb6\xd2-\x00\x8c\xaf\x04\
+\xc0\xf2\xe6[\x9b\xcb\xfb\x000\xf1\xbe\x1d\xbe\xf8\xce}\
+\xf8\xa6y)7\x18ta\xbe\xbe\xf5\xf5\xf5>j\xa5\
+\xdc\xc7T\xd07\xfa\x9f\x0e\xbf@\xef\xbc\xcf\xc7t\xdc\
+\x9b\xf2`q\xca2\x99\xb1\xca\x80\x99\xea&\xaf\xae\xaa\
+6\xea\xb1Z\x9dL\xae\xc4\x84?\x1d\xe2_\x1d\xf8\xf3\
+yxg)\xcb\x94z\xa5\x16\x8f\xc8\xc3\xa7L\xadU\
+\xe1\xed\xd6*\xd4\x06u\xb5\x16Sk\xffS\x13\x7fe\
+\xd8O4?\xd7\xb8\xb8c\xaf\x01\xaf\xd8\x07\xb0.\xf2\
+\x00\xf2\xb7\x0b\x00\xe5\xd2\x00R\xb4\x0d\xdf\x81\xde\xf4-\
+\x95\x92\x072\xf05\xdf\xe1\xde\xfc\xdc\xcf\x09\xfa\xf7S\
+\xe1>\xd3\xa3V\xad\x9a\x8b\x93d\xe5`r\xa3\xben\
+~\xcf\xf4Y\x02\x02\xa0\x02&\xe0\x01+`\x0f\x9c\x81\
+;\x10\x02\x7f\x10\x02\xc2A4\x88\x07\xc9 \x1d\xe4\x80\
+\x02\xb0\x14\xc8A9\xd0\x00=\xa8\x07-\xa0\x1dt\x81\
+\x1e\xb0\x1el\x02\xc3`;\x18\x03\xbb\xc1~p\x10\x8c\
+\x83\x8f\xc1\x09\xf0Gp\x1e|\x09\xae\x81[`\x12L\
+\x83\x87`\x06<\x05\xaf \x08\x22A\x0c\x88\x0bYA\
+\x0e\x90+\xe4\x05\xf9Cb(\x12\x8a\x87R\xa1,\xa8\
+\x00*\x81T\x90\x162B-\xd0\x0a\xa8\x07\xea\x87\x86\
+\xa1\x1d\xd0n\xe8\xf7\xd0Q\xe8\x04t\x0e\xba\x04}\x05\
+MA\x0f\xa0\xef\xa0\x970\x02\xd3a\x1el\x07\xbb\xc1\
+\xbe\xb0\x18\x8e\x81S\xe0\x1cx\x09\xac\x82k\xe0&\xb8\
+\x13^\x07\x0f\xc1\xa3\xf0>\xf80|\x02>\x0f_\x83\
+'\xe1\x87\xf0,\x02\x10\x1a\xc2G\x1c\x11!\x22F$\
+H:R\x88\x94!z\xa4\x15\xe9F\x06\x91Qd?\
+r\x0c9\x8b\x5cA&\x91G\xc8\x0b\x94\x88rQ\x0c\
+\x15\xa2\xe1h\x12\x9a\x8b\xca\xd1\x1a\xb4\x15\xedE\x87\xd1\
+]\xe8a\xf44z\x05\x9dBg\xd0\xd7\x04\x06\xc1\x96\
+\xe0E\x08#H\x09\x8b\x08*B=\xa1\x8b0H\xd8\
+I\xf8\x88p\x86p\x8d0MxJ$\x12\xf9D\x01\
+1\x84\x98D, V\x10\x9b\x89\xbd\xc4\xad\xc4\x03\xc4\
+\xe3\xc4K\xc4\xbb\xc4Y\x12\x89dE\xf2\x22E\x90\xd2\
+I2\x92\x81\xd4E\xdaB\xdaG\xfa\x8ct\x994M\
+zN\xa6\x91\x1d\xc8\xfe\xe4\x04r!YK\xee \x0f\
+\x92\xf7\x90?%_&\xdf#\xbf\xa2\xb0(\xae\x940\
+J:EAi\xa4\xf4Q\xc6(\xc7(\x17)\xd3\x94\
+WT6U@\x8d\xa0\xe6P+\xa8\xed\xd4!\xea~\
+\xea\x19\xeam\xea\x13\x1a\x8d\xe6D\x0b\xa5e\xd2\xd4\xb4\
+\xe5\xb4!\xda\xefh\x9f\xd3\xa6h/\xe8\x1c\xba']\
+B/\xa2\x1b\xe9\xeb\xe8\x1f\xd2\x8f\xd3\xbf\xa2?a0\
+\x18n\x8chF!\xc3\xc0X\xc7\xd8\xcd8\xc5\xf8\x9a\
+\xf1\xdc\x8ck\xe6c&5S\x98\xb5\x99\x8d\x98\x1d6\
+\xbbl\xf6\x98Ia\xba2c\x98K\x99M\xccA\xe6\
+!\xe6E\xe6#\x16\x85\xe5\xc6\x92\xb0d\xacV\xd6\x08\
+\xeb(\xeb\x06k\x96\xcde\x8b\xd8\xe9l\x0d\xbb\x97\xbd\
+\x87}\x8e}\x9fC\xe2\xb8q\xe29\x0aN'\xe7\x03\
+\xce)\xce].\xc2u\xe6J\xb8r\xee\x0a\xee\x18\xf7\
+\x0cw\x9aG\xe4\x09xR^\x05\xaf\x87\xf7[\xde\x04\
+o\xc6\x9cc\x1eh\x9eg\xde`>b\xfe\x89\xf9$\
+\x1f\xe1\xbb\xf1\xa5\xfc*~\x1f\xff \xff:\xff\xa5\x85\
+\x9dE\x8c\x85\xd2b\x8d\xc5~\x8b\xcb\x16\xcf,m,\
+\xa3-\x95\x96\xdd\x96\x07,\xafY\xbe\xb4\xc2\xac\xe2\xad\
+*\xad6X\x8d[\xdd\xb1F\xad=\xad3\xad\xeb\xad\
+\xb7Y\x9f\xb1~d\xc3\xb3\x09\xb7\x91\xdbt\xdb\x1c\xb4\
+\xb9i\x0b\xdbz\xdaf\xd96\xdb~`{\xc1v\xd6\
+\xce\xde.\xd1Ng\xb7\xc5\xee\x94\xdd#{\xbe}\xb4\
+}\x85\xfd\x80\xfd\xa7\xf6\x0f\x1c\xb8\x0e\x91\x0ej\x87\x01\
+\x87\xcf\x1c\xfe\x8a\x99c1X\x156\x84\x9d\xc6f\x1c\
+m\x1d\x93\x1c\x8d\x8e;\x1c'\x1c_9\x09\x9cr\x9d\
+:\x9c\x0e8\xddq\xa6:\x8b\x9d\xcb\x9c\x07\x9cO:\
+\xcf\xb88\xb8\xa4\xb9\xb4\xb8\xecu\xb9\xe9Jq\x15\xbb\
+\x96\xbbnv=\xeb\xfa\xccM\xe0\x96\xef\xb6\xcam\xdc\
+\xed\xbe\xc0R \x154\x09\xf6\x0an\xbb3\xdc\xa3\xdc\
+k\xdcG\xdd\xafz\x10=\xc4\x1e\x95\x1e[=\xbe\xf4\
+\x84=\x83<\xcb=G</z\xc1^\xc1^j\xaf\
+\xad^\x97\xbc\x09\xde\xa1\xdeZ\xefQ\xef\x1bB\xba0\
+FX'\xdc+\x9c\xf2\xe1\xfb\xa4\xfat\xf8\x8c\xfb<\
+\xf6u\xf1-\xf4\xdd\xe0{\xd6\xf7\xb5_\x90_\x95\xdf\
+\x98\xdf-\x11G\x94,\xea\x10\x1d\x13}\xe7\xef\xe9/\
+\xf7\x1f\xf1\xbf\x1a\xc0\x08H\x08h\x0b8\x12\xf0m\xa0\
+W\xa02p[\xe0\x9f\x83\xb8AiA\xab\x82N\x06\
+\xfd#8$X\x1f\xbc?\xf8A\x88KHI\xc8{\
+!7\xc4<q\x86\xb8W\xfcy(!46\xb4-\
+\xf4\xe3\xd0\x17a\xc1a\x86\xb0\x83a\x7f\x0f\x17\x86W\
+\x86\xef\x09\xbf\xbf@\xb0@\xb9`l\xc1\xdd\x08\xa7\x08\
+Y\xc4\x8e\x88\xc9H,\xb2$\xf2\xfd\xc8\xc9(\xc7(\
+Y\xd4h\xd47\xd1\xce\xd1\x8a\xe8\x9d\xd1\xf7b<b\
+*b\xf6\xc5<\x8e\xf5\x8b\xd5\xc7~\x14\xfbL\x12&\
+Y&9\x1e\x87\xc4%\xc6u\xc7M\xc4s\xe2s\xe3\
+\x87\xe3\xbfNpJP%\xecM\x98I\x0cJlN\
+<\x9eDHJI\xda\x90tCj'\x95KwK\
+g\x92C\x92\x97%\x9fN\xa1\xa7d\xa7\x0c\xa7|\x93\
+\xea\x99\xaaO=\x96\x06\xa7%\xa7mL\xbb\xbd\xd0u\
+\xa1v\xe1x:H\x97\xa6oL\xbf\x93!\xc8\xa8\xc9\
+\xf8C&13#s$\xf3/Y\xa2\xac\x96\xac\xb3\
+\xd9\xdc\xec\xe2\xec=\xd9Osbs\xfarn\xe5\xba\
+\xe7\x1asO\xe61\xf3\x8a\xf2v\xe7=\xcb\x8f\xcb\xef\
+\xcf\x9f\x5c\xe4\xbbh\xd9\xa2\xf3\x05\xd6\x05\xea\x82#\x85\
+\xa4\xc2\xbc\xc2\x9d\x85\xb3\x8b\xe3\x17oZ<]\x14T\
+\xd4Ut}\x89`I\xc3\x92sK\xad\x97V-\xfd\
+\xa4\x98Y,+>TB(\xc9/\xd9S\xf2\x83,\
+]6*\x9b-\x95\x96\xbeW:#\x97\xc87\xcb\x1f\
+*\xa2\x15\x03\x8a\x07\xca\x08e\xbf\xf2^YDY\x7f\
+\xd9}U\x84j\xa3\xeaAyT\xf9`\xf9#\xb5D\
+=\xac\xfe\xb6\x22\xa9b{\xc5\xb3\xca\xf4\xca\x0f+\x7f\
+\xac\xca\xaf:\xa0!kJ4G\xb5\x1cm\xa5\xf6t\
+\xb5}uC\xf5%\x9d\x97\xaeK7Y\x13V\xb3\xa9\
+fF\x9f\xa2\xdfY\x0b\xd5.\xa9=b\xe0\xe1?S\
+\x17\x8c\xee\xc6\x95\xc6\xa9\xba\xc8\xba\x91\xba\xe7\xf5y\xf5\
+\x87\x1a\xd8\x0d\xda\x86\x0b\x8d\x9e\x8dk\x1a\xef5%4\
+\xfd\xa6\x19m\x967\x9flqlio\x99Z\x16\xb3\
+lG+\xd4Z\xdaz\xb2\xcd\xb9\xad\xb3mzy\xe2\
+\xf2]\xed\xd4\xf6\xca\xf6?u\xf8u\xf4w|\xbf\x22\
+\x7f\xc5\xb1N\xbb\xce\xe5\x9dwW&\xae\xdc\xdbe\xd6\
+\xa5\xef\xba\xb1*|\xd5\xf6\xd5\xe8j\xf5\xea\x895\x01\
+k\xb6\xacy\xdd\xad\xe8\xfe\xa2\xc7\xafg\xb0\xe7\x87^\
+y\xef\x17kEk\x87\xd6\xfe\xb8\xael\xddD_p\
+\xdf\xb6\xf5\xc4\xf5\xda\xf5\xd77Dm\xd8\xd5\xcf\xeeo\
+\xea\xbf\xbb1m\xe3\xe1\x01l\xa0{\xe0\xfbM\xc5\x9b\
+\xce\x0d\x06\x0en\xdfL\xddl\xdc<9\x94\xfaO\x00\
+\xa4\x01[\xfe\x98\xb8\x99$\x99\x90\x99\xfc\x9ah\x9a\xd5\
+\x9bB\x9b\xaf\x9c\x1c\x9c\x89\x9c\xf7\x9dd\x9d\xd2\x9e@\
+\x9e\xae\x9f\x1d\x9f\x8b\x9f\xfa\xa0i\xa0\xd8\xa1G\xa1\xb6\
+\xa2&\xa2\x96\xa3\x06\xa3v\xa3\xe6\xa4V\xa4\xc7\xa58\
+\xa5\xa9\xa6\x1a\xa6\x8b\xa6\xfd\xa7n\xa7\xe0\xa8R\xa8\xc4\
+\xa97\xa9\xa9\xaa\x1c\xaa\x8f\xab\x02\xabu\xab\xe9\xac\x5c\
+\xac\xd0\xadD\xad\xb8\xae-\xae\xa1\xaf\x16\xaf\x8b\xb0\x00\
+\xb0u\xb0\xea\xb1`\xb1\xd6\xb2K\xb2\xc2\xb38\xb3\xae\
+\xb4%\xb4\x9c\xb5\x13\xb5\x8a\xb6\x01\xb6y\xb6\xf0\xb7h\
+\xb7\xe0\xb8Y\xb8\xd1\xb9J\xb9\xc2\xba;\xba\xb5\xbb.\
+\xbb\xa7\xbc!\xbc\x9b\xbd\x15\xbd\x8f\xbe\x0a\xbe\x84\xbe\xff\
+\xbfz\xbf\xf5\xc0p\xc0\xec\xc1g\xc1\xe3\xc2_\xc2\xdb\
+\xc3X\xc3\xd4\xc4Q\xc4\xce\xc5K\xc5\xc8\xc6F\xc6\xc3\
+\xc7A\xc7\xbf\xc8=\xc8\xbc\xc9:\xc9\xb9\xca8\xca\xb7\
+\xcb6\xcb\xb6\xcc5\xcc\xb5\xcd5\xcd\xb5\xce6\xce\xb6\
+\xcf7\xcf\xb8\xd09\xd0\xba\xd1<\xd1\xbe\xd2?\xd2\xc1\
+\xd3D\xd3\xc6\xd4I\xd4\xcb\xd5N\xd5\xd1\xd6U\xd6\xd8\
+\xd7\x5c\xd7\xe0\xd8d\xd8\xe8\xd9l\xd9\xf1\xdav\xda\xfb\
+\xdb\x80\xdc\x05\xdc\x8a\xdd\x10\xdd\x96\xde\x1c\xde\xa2\xdf)\
+\xdf\xaf\xe06\xe0\xbd\xe1D\xe1\xcc\xe2S\xe2\xdb\xe3c\
+\xe3\xeb\xe4s\xe4\xfc\xe5\x84\xe6\x0d\xe6\x96\xe7\x1f\xe7\xa9\
+\xe82\xe8\xbc\xe9F\xe9\xd0\xea[\xea\xe5\xebp\xeb\xfb\
+\xec\x86\xed\x11\xed\x9c\xee(\xee\xb4\xef@\xef\xcc\xf0X\
+\xf0\xe5\xf1r\xf1\xff\xf2\x8c\xf3\x19\xf3\xa7\xf44\xf4\xc2\
+\xf5P\xf5\xde\xf6m\xf6\xfb\xf7\x8a\xf8\x19\xf8\xa8\xf98\
+\xf9\xc7\xfaW\xfa\xe7\xfbw\xfc\x07\xfc\x98\xfd)\xfd\xba\
+\xfeK\xfe\xdc\xffm\xff\xff\x02\x0c\x00\xf7\x84\xf3\xfb\x0a\
+endstream \x0aendob\
+j\x0a\x0a29 0 obj\x0a\x0a<<\x0a\
+/ColorSpace 28 0\
+ R\x0a/Name /X\x0a/Sub\
+type /Image\x0a/Hei\
+ght 512\x0a/Filter \
+/DCTDecode\x0a/Type\
+ /XObject\x0a/Width\
+ 512\x0a/SMask 31 0\
+ R\x0a/Length 14366\
+\x0a/BitsPerCompone\
+nt 8\x0a>>\x0astream\x0a\xff\
+\xd8\xff\xee\x00\x0eAdobe\x00d\x80\x00\x00\x00\
+\x01\xff\xdb\x00\x84\x00\x0c\x08\x08\x08\x08\x08\x0c\x08\x08\x0c\
+\x10\x0b\x0b\x0b\x10\x14\x0e\x0d\x0d\x0e\x14\x18\x12\x13\x13\x13\
+\x12\x18\x14\x12\x14\x14\x14\x14\x12\x14\x14\x1b\x1e\x1e\x1e\x1b\
+\x14$''''$25552;;;;\
+;;;;;;\x01\x0d\x0a\x0a\x0c\x0a\x0c\x0e\x0c\x0c\
+\x0e\x11\x0e\x0e\x0e\x11\x14\x0f\x0f\x0f\x0f\x14\x14\x10\x11\x12\
+\x11\x10\x14\x14\x13\x14\x15\x15\x14\x13\x14\x15\x15\x15\x15\x15\
+\x15\x15\x1a\x1a\x1a\x1a\x1a\x1a\x1e\x1e\x1e\x1e\x1e###\
+#''',,,\xff\xc0\x00\x11\x08\x02\x00\x02\x00\
+\x03\x01\x22\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x01B\x00\x00\
+\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\
+\x00\x01\x02\x04\x05\x06\x07\x08\x09\x0a\x0b\x01\x00\x01\x05\x01\
+\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x03\
+\x04\x05\x06\x07\x08\x09\x0a\x0b\x10\x00\x01\x04\x01\x03\x02\x04\
+\x02\x05\x07\x06\x08\x05\x03\x0c3\x01\x00\x02\x11\x03\x04!\
+\x121\x05AQa\x13\x22q\x812\x06\x14\x91\xa1\xb1\
+B#$\x15R\xc1b34r\x82\xd1C\x07%\x92\
+S\xf0\xe1\xf1cs5\x16\xa2\xb2\x83&D\x93Td\
+E\xc2\xa3t6\x17\xd2U\xe2e\xf2\xb3\x84\xc3\xd3u\
+\xe3\xf3F'\x94\xa4\x85\xb4\x95\xc4\xd4\xe4\xf4\xa5\xb5\xc5\
+\xd5\xe5\xf5Vfv\x86\x96\xa6\xb6\xc6\xd6\xe6\xf67G\
+Wgw\x87\x97\xa7\xb7\xc7\xd7\xe7\xf7\x11\x00\x02\x02\x01\
+\x02\x04\x04\x03\x04\x05\x06\x07\x07\x06\x02;\x01\x00\x02\x11\
+\x03!1\x12\x04AQaq\x22\x13\x052\x81\x91\x14\
+\xa1\xb1B#\xc1R\xd1\xf03$b\xe1r\x82\x92C\
+S\x15cs4\xf1%\x06\x16\xa2\xb2\x83\x07&5\xc2\
+\xd2D\x93T\xa3\x17dEU6te\xe2\xf2\xb3\x84\
+\xc3\xd3u\xe3\xf3F\x94\xa4\x85\xb4\x95\xc4\xd4\xe4\xf4\xa5\
+\xb5\xc5\xd5\xe5\xf5Vfv\x86\x96\xa6\xb6\xc6\xd6\xe6\xf6\
+'7GWgw\x87\x97\xa7\xb7\xc7\xd7\xe7\xf7\xff\xda\
+\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf5T\x92I\
+%)$\x92IJI$\x92R\x92I$\x94\xa4\x92\
+I%)%\x1b,\xae\xa6\x1b-pc\x1a$\xb8\xe8\
+\x02\xe7\xfa\x87\xd6W\x12j\xe9\xe3h\xe3\xd5p\xd4\xff\
+\x00U\xa7\xf8\xa8\xb3g\xc7\x80\x5c\xcf\x90\x1b\x95\xb2\x9c\
+a\xb9w\xae\xc8\xa3\x1d\xbb\xef\xb1\xb5\xb7\xc5\xc4\x0f\xca\
+\xb3\xae\xfa\xc9\xd3\xeb1^\xfbO\x8bD\x0f\xfaP\xb9\
+{m\xb6\xe7\x9b.y{\x8fw\x19?\x8a\x82\xa3\x93\
+\xe2S?$DG\x8e\xa7\xf80\xcb\x98'aOB\
+\xff\x00\xadM\xfc\xccb\x7f\xac\xf8\xfc\x8d*#\xeb[\
+\xbb\xe2\x8f\x95\x9f\xf9\x82\xc0IC\xf7\xdec\xf7\xff\x00\
+\x08\xff\x00\x05\x9e\xf4\xfb\xfe\x01\xe9k\xfa\xd3\x8a\x7f\x9d\
+\xa6\xc6\xfc!\xdf\xdc\xadW\xd7\xfa]\x9c\xdaXOg\
+\xb4\x8f\xc6\x08\x5c\x82I\xf1\xf8\x86q\xbf\x0c\xbc\xc7\xf0\
+\xa5\xc3<\xc7b\xf7Ufb]\xfc\xd5\xd5\xbf\xfa\xae\
+\x07\xf8\xa2\xae\x01\x16\xbc\x9c\x8a\x7f\x9a\xb5\xec\xfe\xab\x88\
+\xfc\x85K\x1f\x89\xfe\xf6?\xb0\xff\x00b\xe1\xccw\x8b\
+\xdd\xa4\xb8\xea\xba\xe7T\xabAqp\xf0x\x0e\xfcb\
+\x7f\x15j\xbf\xad\x19\x8d\xfev\xba\xdf\xf0\x96\xff\x00\x12\
+\xa6\x8f\xc4p\x9d\xf8\xa3\xe6?\x82\xe1\x9e\x07\xb8zt\
+\x96\x1d_Zh?\xcfP\xf6\xff\x00P\x87~]\x8a\
+\xd5\x7fX:]\x9c\xd8X|\x1e\xd2?$\xa9c\xcd\
+`\x96\xd9#\xf5\xf4\xfek\x86H\x1f\xd2\x1f\x93\xa4\x92\
+\xaf^~\x15\xd1\xe9\xdf[\x89\xed\xb8O\xdc\x8e\xa5\x12\
+\x12\xd4\x10|\x97\x82\x0e\xcb\xa4\x92H\xa9I$\x92J\
+RI$\x92\x94\x92I$\xa5$\x92I)I$\x92\
+JRI$\x92\x94\x92I$\xa5$\x92I)I$\
+\x92JRI$\x92\x94\x92I$\xa5$\x92I)I\
+$\x92JRI$\x92\x94\x92I$\xa5$\x92I)\
+I$\x92JRI$\x92\x94\x92I$\xa5$\x92I\
+)I$\x92JRI$\x92\x94\x87}\xf5cT\xeb\
+\xeev\xd60I(\x8b\x92\xeb\x9dL\xe7^i\xa8\xfe\
+\x82\xa3\x0d\x8f\xce?\xbd\xfd\xca\x1eg8\xe5\xe1\xc5\xbc\
+\x8e\x91\x1e?\xc0,\xc9>\x01}z\x22\xea}V\xee\
+\xa3f\xb2\xcaZ}\x95\xff\x00\x17y\xaa)$\xb1\xa7\
+9d\x91\x94\x8d\x92\xd5$\xc8\xd9\xd4\xa9$\x92MB\
+\x92I$\x94\xa4\x92I%)$\x92IJI$\x92\
+R\x92I$\x94\xa4J\xef\xbe\x9f\xe6l}\x7f\xd4q\
+o\xe4CI\x10H\xd4h\xa6\xf5}k\xa9\xd5\xc5\xee\
+?\xd6\x87\x7f\xd5\x02\xadW\xf5\x9f9\x9f\xce2\xbb\x07\
+\xc0\xb4\xfe\x06?\x05\x8e\x92\x92<\xc6h\xed\x92_m\
+\xfek\x86I\x8d\xa4^\x8a\xbf\xadU\x1f\xe7q\xdc\xdf\
+\xea\xb8;\xf2\x86\xabu\xfdb\xe9\x8f\xfaNu\x7f\xd6\
+i\xff\x00\xbe\xee\x5c\x92JX\xfcC<w\x22^c\
+\xf8R\xe1\x9ec\xb1{z\xba\x8e\x05\xdf\xcd\xe4V\xe3\
+\xe1\xb8\x03\xf7\x15`\x10\xe1-2<B\xe0\x14\xd9m\
+\xb5\x99\xad\xeea\xf1i#\xf2)\xa3\xf13\xfaX\xc1\
+\xf24\xbcs\x1d\xe2\xf7\xa9..\xae\xb1\xd4\xea\xfa9\
+\x0f>O\x87\xff\x00\xd5\x82\xad\xd7\xf5\x9b\xa83\xe9\xb6\
+\xbb> \x8f\xc8T\xb1\xf8\x8e\x13\xb8\x94~\x97\xfbW\
+\x0c\xf1;\xd8z\x94\x96\x05\x7fZ\x9b\xfe\x1b\x1c\x8f\x12\
+\xc7O\xe0@\xfc\xaa\xdd\x7fX\xfak\xfe\x91}g\xf9\
+M\xff\x00\xc8\xeeR\xc7\x9b\xc1-\xb2\x01\xe7\xe9\xfc\xd7\
+\x0c\xb0?\xa4?'Q%V\xbe\xa9\xd3\xad\xfa\x19\x15\
+\xfc\x1cv\xff\x00\xd5B\xb2\xd75\xc2ZA\x07\xb8\xd4\
+)\xa38\xcb\xe5\x90>F\xd7\x02\x0e\xc6\xd7I$\x91\
+J\x92I$\x94\xa4\x92I%)$\x92IJI$\
+\x92R\x92I$\x94\xa4\x92I%)$\x92IJI\
+$\x92R\x92I$\x94\xa4\x92I%)$\x92IJ\
+I$\x92R\x92I$\x94\xa4\x92I%)$\x92I\
+JI$\x92S\x97\xd7\xf3\x8e&\x19\xad\x86,\xbeX\
+<\x9b\xf9\xc5rkK\xaf\xe4\x9c\x8e\xa2\xf6\x83\xed\xa4\
+zm\xf8\x8d]\xf8\xac\xd5\x8d\xcee\xf7sK\xb4}\
+#\xe9\xbf\xe2\xd4\xcb.)\x1e\xc3E$\x92J\xba\xc5\
+$\x92I)I$\x92JRI$\x92\x94\x92I$\
+\xa5$\x92I)I$\x92JRI$\x92\x94\x92I\
+$\xa5$\x92I)I$\x92JRI$\x92\x94\x92\
+I$\xa5)1\xef\xac\xee\xad\xc5\x87\xc5\xa4\x83\xf8(\
+\xa4\x8a\x9bu\xf5n\xa3W\xd1\xc8~\x9f\xbcw\x7f\xd5\
+J\xb5W\xd6N\xa2\xcf\xa7\xe9\xd9\xfdf\xc1\xff\x00\xa2\
+Z\xb2\x92RG>Xm\x92C\xea\xb8NCi\x17\
+\xa0\xaf\xebW\xfal\x7f\x9b\x1d\xfd\xe1Z\xaf\xeb/N\
+~\x8f\x16W\xe6[#\xfe\x89+\x95IK\x1e\x7f<\
+w\x90\x97\x98\xfe\x14\xb8f\x98\xebokWV\xe9\xb7\
+}\x0c\x86I\xec\xe3\xb4\xfd\xce\x85e\x962\xc1,p\
+p\xf1\x06W\x02\x9d\xaesL\xb4\x90|\xb4R\xc7\xe2\
+r\xfd,`\xf9\x1a\xfe+\x870z\xc5\xef\xd2\x5cM\
+}O\xa8S\xfc\xdeE\x83\xc8\x9d\xc3\xeet\xabU\xfd\
+c\xeaL\xfaE\x96\x7fY\xb1\xff\x00S\x0ah\xfcG\
+\x11\xf9\xa3!\xf6\x15\xe3\x98\x8fPC\xd6$\xb9\xda\xfe\
+\xb5<iv8>lt~\x04\x1f\xca\xad\xd7\xf5\x9b\
+\xa7\xbf\xf9\xc6\xd9_\xc5\xa0\x8f\xfa$\xa9c\xce`\x97\
+\xe9\x81\xe7c\xf3\x5c2\xc0\xf5u\xd2T\xab\xeb\x1d2\
+\xdf\xa3\x90\xc1\xfdio\xfdT+U\xdbU\xa3uO\
+k\xc7\x8bH#\xf0R\xc6p\x9f\xcb!/#k\x81\
+\x07b\x0b4\x92I9*I$\x92R\x92I$\x94\
+\xa4\x92I%)$\x92IJI$\x92R\x92I$\
+\x94\xa4\x92I%)$\x92IJI$\x92R\x939\
+\xc1\x8d.:\x00$\xfc\x93\xaa\xddE\xdb:~K\x87\
+\x22\xa7\xc7\xc4\xb4\xa1#\xc3\x12{\x02PM\x02^*\
+\xcb\x0d\xb6:\xd7r\xf2\x5c~fTRI`n\xd2\
+RI$\x82\x94\x92I$\xa5$\x92I)I$\x92\
+JRI$\x92\x94\x92I$\xa5$\x92I)I$\
+\x92JRI$\x92\x94\x92I$\xa5$\x92I)I\
+$\x92JRI$\x92\x94\x92I$\xa5$\x92I)\
+I$\x92JRI$\x92\x94\x92I$\xa5$\x92I\
+)I\xc1-;\x9a`\xf8\x8d\x0ad\x92Sf\xbe\xa3\
+\x9fW\xf3y\x16\x0f-\xc4\xfeUj\xbf\xac=N\xbf\
+\xa4\xf6\xd8<\x1e\xd1\xff\x00}\xda\xb3\x12RG6X\
+|\xb3\x90\xfa\x94\x89\xc8lK\xbb_\xd6\xabG\xf3\xd8\
+\xed>lq\x1f\x81\x05[\xaf\xeb>\x13\xbf\x9c\xae\xc6\
+\x1f\x80p\xfc\xab\x97IK\x1e{<\x7fJ\xfc\xc0^\
+3Lu\xb7\xb2\xaf\xadt\xbb~\x8eC[\xe4\xf9g\
+\xfdP\x0a\xd5w\xd1o\xf3V5\xff\x00\xd5 \xfeE\
+\xc1\xa7\x1a\x1d\x14\xd1\xf8\x94\xc7\xcd\x08\x9f\x22G\xf1\x5c\
+9\x83\xd4\x07\xbfIW\xe9\xc4\x9e\x9f\x8cO\xfa\x1a\xff\
+\x00\xeaB\xb0\xb4bx\x80=\xc5\xb6\x01\xb1jI$\
+\x91R\x92I$\x94\xa4\x92I%)$\x92IJI\
+$\x92R\x92I$\x94\xa5S\xab\x7f\xc9\xb9?\xf1e\
+[U:\xb7\xfc\x9b\x93\xff\x00\x16S2\xff\x007?\
+\xee\x9f\xc9\x12\xf9O\x91x\xb4\xc9\xd3,\x16\x92\x92I\
+$\x94\xa4\x92I%)$\x92IJI$\x92R\x92\
+I$\x94\xa4\x92I%)$\x92IJI$\x92R\
+\x92I$\x94\xa4\x92I%)$\x92IJI$\x92\
+R\x92I$\x94\xa4\x92I%)$\x92IJI$\
+\x92R\x92I$\x94\xa4\x92I%)$\x92IJI\
+$\x92R\x92I$\x94\xa4\x92I%)8L\x9c$\
+\xa7\xb6\xe9\xdf\xf2~/\xfcM\x7f\xf5!YU\xbaw\
+\xfc\x9f\x8b\xff\x00\x13_\xfdHVV\xfe?\x92?\xdd\
+\x1f\x93v;\x0f%$\x92I\xc9RI$\x92\x94\x92\
+I$\xa5$\x92I)I$\x92JRI$\x92\x94\
+\xaauo\xf97'\xfe,\xabj\xa7V\xff\x00\x93r\
+\x7f\xe2\xcaf_\xe6\xe7\xfd\xd3\xf9\x22_)\xf2/\x16\
+\x99:e\x82\xd2RI$\x92\x94\x92I$\xa5$\x92\
+I)I$\x92JRI$\x92\x94\x92I$\xa5$\
+\x92I)I$\x92JRI$\x92\x94\x92I$\xa5\
+$\x92I)I$\x92JRI$\x92\x94\x92I$\
+\xa5$\x92I)I$\x92JRI$\x92\x94\x92I\
+$\xa5$\x92I)I$\x92JRI$\x92\x94\x92\
+I$\xa5'\x09\x93\x84\x94\xf6\xdd;\xfeO\xc5\xff\x00\
+\x89\xaf\xfe\xa4+*\xb7N\xff\x00\x93\xf1\x7f\xe2k\xff\
+\x00\xa9\x0a\xca\xdf\xc7\xf2G\xfb\xa3\xf2n\xc7a\xe4\xa4\
+\x92I9*I$\x92R\x92I$\x94\xa4\x92I%\
+)$\x92IJI$\x92R\x95N\xad\xff\x00&\xe4\
+\xff\x00\xc5\x95mT\xea\xdf\xf2nO\xfcYL\xcb\xfc\
+\xdc\xff\x00\xba\x7f$K\xe5>E\xe2\xd3'L\xb0Z\
+JI$\x92R\x92I$\x94\xa4\x92I%)$\x92\
+IJI$\x92R\x92N\x01q\x0dh\x92t\x00w\
+[\xbd7\xea\xe1p\x17u\x09\x03\x91H:\xff\x00h\
+\xff\x00\x05&,3\xcd.\x18\x0b\xeez\x05\xd1\x81\x99\
+\xa0\xe3c\xe2\xe4e?f=n\xb0\xf7\x81\xa0\xf8\x9e\
+\xcb[\x1b\xea\xbeC\xc0vU\xad\xab\xf9-\x1b\x8f\xdf\
+\xa0\xfc\xab\xa2\xaa\xaa\xa8`\xae\x96\x860p\xd6\x88\x0a\
+kC\x17\xc3\xb1\xc7\x5c\x84\xcc\xfd\x83\xf8\xb3\xc7\x04G\
+\xcd\xab\x95W\xd5\xbe\x9d_\xf3\x81\xf6\x9f\xe5:\x07\xfd\
+\x0d\xaa\xcb:GLg\x18\xd5\x9f\xeb\x0d\xdf\xf5R\xae\
+$\xac\xc7\x06(\xed\x8e?`^!\x11\xb4C[\xf6\
+oO\xff\x00\xb8\xd5\x7f\x98\xdf\xeePwH\xe9\x8f\xe7\
+\x1a\xb1\xfdQ\xb7\xfe\xa6\x15\xc4\x918\xb1\x9d\xe1\x1f\xb0\
+'\x86=\x87\xd8\xe5\xd9\xf5w\xa6?\xe8\xb5\xf5\xff\x00\
+U\xc4\xff\x00\xd5\xeeT\xee\xfa\xac9\xc7\xbf\xe4\xf6\xff\
+\x00\x16\xff\x00r\xe8\x12Q\xcb\x94\xc1=\xf1\x81\xfd\xdf\
+O\xe4\xb4\xe2\x81\xfd\x11\xf9<nOE\xea8\xd2]\
+Q{G\xe7W\xee\x1f\xdf\xf8*+\xd0\x15<\xce\x95\
+\x85\x9c\x09\xba\xb8y\xff\x00\x08\xdd\x1d\xf7\xf7\xf9\xaa\xd9\
+~\x1a7\xc5/\xa4\xbf\x8b\x1c\xb9\x7f\xdd?k\xc5\xa4\
+\xb4\xfa\x87B\xca\xc2\x06\xca\xff\x00MH\xfc\xe6\x8d@\
+\xfeSVb\xa3\x93\x1c\xf1\x1e\x19\x83\x12\xc3(\x98\x9a\
+\x22\x94\x92I&!I$\x92JRI$\x92\x94\x92\
+I$\xa5$\x92I)I$\x92JRI$\x92\x94\
+\x92I$\xa5$\x92I)I$\x92JRp\x998\
+IOm\xd3\xbf\xe4\xfc_\xf8\x9a\xff\x00\xeaB\xb2\xab\
+t\xef\xf9?\x17\xfe&\xbf\xfa\x90\xac\xad\xfc\x7f$\x7f\
+\xba?&\xecv\x1eJI$\x93\x92\xa4\x92I%)\
+$\x92IJI$\x92R\x92I$\x94\xa4\x92I%\
+)T\xea\xdf\xf2nO\xfcYV\xd5N\xad\xff\x00&\
+\xe4\xff\x00\xc5\x94\xcc\xbf\xcd\xcf\xfb\xa7\xf2D\xbeS\xe4\
+^-2t\xcb\x05\xa4\xa4\x92I%)$\x92IJ\
+I$\x92R\x92I$\x94\xa5&1\xd6<1\x80\xb9\
+\xce0\x00\xe4\x92\xa2\xban\x81\xd2\x86=c6\xf1\xfa\
+W\x8f`?\x9a\xd3\xdf\xe2T\xbc\xbe\x09g\x98\x88\xd0\
+~\x91\xec\x17B\x06f\xbe\xd4\xdd#\xa3W\x82\xd1u\
+\xe0; \xf7\xe43\xc9\xbe~kQ$\x96\xce<q\
+\xc5\x11\x18\x0a\x01\xb7\x18\x88\x8a\x0aI$\x93\xd2\xa4\x92\
+I%)$\x92IJI$\x92R\x92I$\x94\xa5\
+\x8b\xd5\xba\x03/\x0e\xc8\xc2\x01\x96\xf2\xea\xc6\x8dw\xc3\
+\xc0\xad\xa4\x932\xe2\x86h\xf0\xcc_\xe6<\x91(\x89\
+\x8a/\x00\xe6\xb9\x8e-p-sL\x10t \x84\xcb\
+\xa9\xeb}\x1ce\xb0\xe5c7\xf4\xed\x1e\xe0?<\x0f\
+\xe2\xb9u\x8f\xcc`\x96\x09\xf0\x9dA\xf9e\xdd\xa98\
+\x18\x1a?E\x92I%\x0a\xd5$\x92I)I$\x92\
+J]\xad.pku.0\x07\x99]I\xfa\xb5\xd3\
+\xcbF\xb6\x02\x04\x12\x1d\xc9\xf9\x82\xb0\xba=>\xbfR\
+\xa1\x9d\x83\xb7\x9f\xec\xfb\xbf\x82\xec\xd6\x87!\x82\x19#\
+9N\x22Z\x80/\xc3\x7f\xcd\x9b\x04\x04\x81$[\x86\
+\xff\x00\xaa\xd8\xe7\xe8^\xf6\xfc@?\xdc\x82\xff\x00\xaa\
+\xb6\x8f\xe6\xf2\x1a|\x9c\xc2?#\x8a\xe8\x92VO%\
+\xcb\x9f\xd0\xaf\x22\x7f\x8b)\xc3\x03\xd1\xe3\xb3\xfa6O\
+N\xa8]s\x98\xe6\xb9\xc1\x83i3$\x13\xdd\xa3\xc1\
+P]G\xd6\x7f\xe8\x15\xff\x00\xc77\xfe\xa5\xeb\x97Y\
+\xbc\xde(\xe1\xcaa\x0d\xa85\xf2\xc4FT\x14\x92I\
+(\x16)$\x92IJI$\x92R\x93\x84\xc9\xc2J\
+{n\x9d\xff\x00'\xe2\xff\x00\xc4\xd7\xff\x00R\x15\x95\
+[\xa7\x7f\xc9\xf8\xbf\xf15\xff\x00\xd4\x85eo\xe3\xf9\
+#\xfd\xd1\xf97c\xb0\xf2RI$\x9c\x95$\x92I\
+)I$\x92JRI$\x92\x94\x92I$\xa5$\x92\
+I)J\xa7V\xff\x00\x93r\x7f\xe2\xca\xb6\xaauo\
+\xf97'\xfe,\xa6e\xfen\x7f\xdd?\x92%\xf2\x9f\
+\x22\xf1i\x93\xa6X-%$\x92I)I$\x92J\
+RI$\x92\x94\x92I\xc0$\xc0\xd4\x9e\x02Jt\xba\
+\x17O\xfbnW\xa9`\x9ai\x87:x'\xf3Z\xba\
+\xd5S\xa5\xe1\x0c\x1c6S\xf9\xe7\xdda\xf1q\xe7\xee\
+\xe1[[\x5c\xa6\x0fg\x18\x07\xe6\x96\xb2\xfe\x1fF\xde\
+(pG\xc4\xee\xa4\x92IN\xbdI$\x92JRI\
+,\xde\xaf\xd5\xd9\xd3\x99\xe9\xb0\x07\xde\xf1-of\x8f\
+\xdernL\x91\xc5\x13)\x9a\x01\x12\x90\x88\xb2\xdf\xb2\
+\xda\xean\xfb^\xd64~s\x88\x03\xf1UOX\xe9\
+\x8d0r\x19\xf2\x93\xfc\x17#\x91\x95\x91\x97g\xab\x90\
+\xf2\xf7v\x9e\x07\xc0vBY\xf3\xf8\x94\xaf\xd1\x01_\
+\xd6\xfe\xc6\x03\xcc\x1e\x83\xed{\x9a3q2LQs\
+\x1e|\x01\x13\xf7r\x8e\xb8\x09#Q\xdb\x85\xaf\xd3:\
+\xfd\xd8\xee\x15f\x13mGM\xe7W7\xfb\xc2\x93\x0f\
+\xc4c#\xc3\x92<7\xfaCe\xd1\xce\x0e\x92\x15\xe2\
+\xf5\x09(\xb1\xed\xb1\xa1\xec!\xcdp\x90F\xa0\x82\xa4\
+\xaf3)$\x92IJ\x5c\xd7\xd6.\x98)\x7f\xdb\xa9\
+\x1e\xc7\x98\xb4\x0e\xce?\x9d\xf3]*\x85\xd4\xd7}O\
+\xa6\xd1,x-p\xf8\xa8\xb9\x8c#>3\x13\xbe\xf1\
+=\x8a\xd9\xc0N5\xf6<\x12H\xd9\x98\xcf\xc3\xc9\xb3\
+\x1d\xfa\x96\x18\x07\xc4v?r\x0a\xc4 \xc4\x90t \
+\xd1i\x91Z\x15$\x92H)I$\x92Jw>\xab\
+S\xbb\x22\xec\x83\xf9\x8c\x0c\x1f\x17\x19?\xf5+\xa4Y\
+_V\xe9\xf4\xfa\x7f\xa8y\xb9\xe5\xdf!\xed\xfe\x0bU\
+mrp\xe0\xc1\x0f\x11\xc5\xf6\xff\x00co\x10\xa8\x0f\
+\x1dT\x92I)\xd7\xb8\xff\x00Y\xff\x00\xa0W\xff\x00\
+\x1c\xdf\xfa\x97\xae]u\x1fY\xff\x00\xa0W\xff\x00\x1c\
+\xdf\xfa\x97\xae]d|C\xf9\xf3\xe4\x1a\xb9\xfe\x7f\xa2\
+\x92I%U\x8dI$\x92JRI$\x92\x94\x9c&\
+N\x12S\xdbt\xef\xf9?\x17\xfe&\xbf\xfa\x90\xac\xaa\
+\xdd;\xfeO\xc5\xff\x00\x89\xaf\xfe\xa4++\x7f\x1f\xc9\
+\x1f\xee\x8f\xc9\xbb\x1d\x87\x92\x92I$\xe4\xa9$\x92I\
+JI$\x92R\x92I$\x94\xa4\x92I%)$\x92\
+IJU:\xb7\xfc\x9b\x93\xff\x00\x16U\xb5S\xab\x7f\
+\xc9\xb9?\xf1e3/\xf3s\xfe\xe9\xfc\x91/\x94\xf9\
+\x17\x8bL\x9d2\xc1i)$\x92IJI$\x92R\
+\x92I$\x94\xa5\xa5\xd0q>\xd5\x9e\xd78K)\x1e\
+\xa3\xbe#\xe8\x8f\xbdf\xae\xa7\xea\xd67\xa5\x84o#\
+\xdd{\xa4\x7fU\xba\x0f\xc6U\x8eO\x1f\xbb\x9a \xed\
+\x1fQ\xfa\x7fj\xfcQ\xe2\x98\xf0\xd5\xd7I$\x96\xcb\
+mI$\x92JRI$\x92\x90fe3\x0f\x19\xf9\
+6j\x184\x1e'\xb0\x5cU\xf7\xd9\x93s\xef\xb4\xee\
+{\xcc\x92\xb6\xfe\xb4e\x12\xea\xb0\xdat\x03\xd4\x7f\xc4\
+\xe8\xdf\xe2\xb0\x16W\xc43\x19\xe4\xf6\xc7\xcb\x0f\xfaM\
+l\xf3\xb9p\xf4\x1f\x9a\x92I%M\x89I$\x92J\
+w~\xaeu\x12\xc7\xfd\x82\xe3\xedt\x9a\x89\xecy-\
+\xf9\xae\x8dp,{\xab{la\x874\x874\xf8\x11\
+\xa8]\xc6\x1eKr\xf1k\xc8o\x164\x12<\x0f\x04\
+|\x8a\xd4\xf8~c8\x9cr:\xc3o\xee\xff\x00c\
+c\x04\xecp\x9e\x9f\x92d\x92I]fRI$\x92\
+\x9c/\xac\xf8{\xaafk\x06\xac\xf6?\xfa\xa7\xe8\xfe\
+?\x95s\x8b\xbb\xc9\xa1\xb98\xf6P\xfe,io\xde\
+\xb8k\x18\xea\xde\xea\xde!\xcc%\xae\x1e`\xc1Y\x7f\
+\x10\xc5\xc1\x90Lm1\xaf\x98kg\x8dJ\xfb\xb1I\
+$\x95&%$\x92\xb3\xd3h\xfbF}\x14\x91!\xcf\
+\x05\xdf\xd5o\xb8\xfe\x01:12\x90\x88\xdc\x90>\xd5\
+\x01d\x0e\xefc\x87O\xd9\xf1)\xa3\x8d\x8ckO\xc6\
+5FI%\xbc\x00\x88\x00l\x057\x80\xad\x14\x92I\
+\x22\xa7\x1f\xeb?\xf4\x0a\xff\x00\xe3\x9b\xff\x00R\xf5\xcb\
+\xae\xa3\xeb?\xf4\x0a\xff\x00\xe3\x9b\xff\x00R\xf5\xcb\xac\
+\x8f\x88\x7f>|\x83W?\xcf\xf4RI$\xaa\xb1\xa9\
+$\x92IJI$\x92R\x93\x84\xc9\xc2J{n\x9d\
+\xff\x00'\xe2\xff\x00\xc4\xd7\xff\x00R\x15\x95[\xa7\x7f\
+\xc9\xf8\xbf\xf15\xff\x00\xd4\x85eo\xe3\xf9#\xfd\xd1\
+\xf97c\xb0\xf2RI$\x9c\x95$\x92I)I$\
+\x92JRI$\x92\x94\x92I$\xa5$\x92I)J\
+\xa7V\xff\x00\x93r\x7f\xe2\xca\xb6\xaauo\xf97'\
+\xfe,\xa6e\xfen\x7f\xdd?\x92%\xf2\x9f\x22\xf1i\
+\x93\xa6X-%$\x92I)I$\x92JRI$\
+\x92\x97\x00\xb8\x86\x81$\xe8\x07\x9a\xee\xb1\xa9\x18\xf8\xf5\
+\xd08\xad\xa1\xbfp\x5c\x87H\xa7\xd7\xeaT0\xea\x03\
+\xf7\x9f\xec\xfb\xbf\x82\xed\x16\x97\xc3a\xa4\xe7\xdc\x88\xfd\
+\x9a\xb3\xf2\xe3B~\x8aI$\x95\xf6u$\x92I)\
+I$\xa1k\xc5u\xbe\xc3\xc3\x1a]\xf7\x09Ke<\
+wW\xbb\xd7\xeaW\xbf\xb0y`\xf83\xdb\xfc\x154\
+\xee%\xc4\xb8\xeaN\xa52\xc0\x9c\xb8\xe5)\x1f\xd2$\
+\xfd\xad\x22l\x93\xdc\xa9$\x92MB\x92I$\x94\xa5\
+\xd2\xfdW\xbf~5\xb8\xe4\xeb[\x83\x87\xc1\xc3\xfb\xc2\
+\xe6\x96\xb7\xd5\xab}>\xa1\xe9\xf6\xb5\x85\xbf1\xee\x1f\
+\x90\xab\x1c\x9c\xf83\xc3\xc4\xf0\xfd\xbf\xda\xbf\x11\xa9\x8f\
+\x1d\x1e\xa9$\x92[-\xb5$\x92I)K\x92\xfa\xc3\
+\x8f\xe8u\x17<\x08m\xc0Y\xf3\xe0\xfeE\xd6\xac?\
+\xad\x14n\xc7\xab s[\x8b\x0f\xc1\xc3\xfb\xda\xabs\
+\xd0\xe3\xc0OX\x91/\xe3\xf81\xe6\x17\x03\xe1\xab\xcd\
+\xad\xfe\x87\xd30\xb30\x8d\x99\x15\xeexyn\xed\xce\
+\x1a\x00<\x0a\xc0]O\xd5\x9f\xf9=\xdf\xf1\x8e\xfc\x8d\
+Ty\x18\xc6y\xaa@Hp\x9d\x08\xb6\x1c \x19\xd1\
+\x17\xa37}\x5c\xe9\x8e\xe1\xafo\xc1\xc7\xf8\xca\x9e\x1f\
+D\xc4\xc2\xc8\x19\x14\x97\x97\x00@\x0e \x8d~KE\
+%\xa49| \x89\x0cq\x04\x1b\x14\x1b\x1c\x11\x06\xf8\
+B\x92I%*\xe5$\x92I)\xcd\xeb\xb8\x99\x19\x98\
+m\xab\x19\xbb\xdc,\x0e\x22@\xd05\xc3\xbf\xc5s\xce\
+\xe8\xddQ\xbc\xe3\xb8\xfc\x08?\x90\xae\xcd%[7'\
+\x0c\xf2\xe3\x94\xa4\x0dV\x95\xfc\x18\xe7\x8a36Ix\
+wt\xec\xf6},k\x7f\xccq\xfc\x81\x09\xd4\xda\xcf\
+\xa6\xc77\xfa\xc0\x8f\xca\xbb\xc4\xea\x13\xf0\xc8\xf4\xc8G\
+\x98\xbf\xe0\xb7\xee\xe3\xf7\x9f?Ih\xfd`\xff\x00\x95\
+m\xfe\xab?\xeaB\xceT2C\xdb\x9c\xa1w\xc2H\
+\xbf&\x09\x0e\x12Gb\xa4\x92I1\x0aN\x13'\x09\
+)\xed\xbaw\xfc\x9f\x8b\xff\x00\x13_\xfdHVUn\
+\x9d\xff\x00'\xe2\xff\x00\xc4\xd7\xff\x00R\x15\x95\xbf\x8f\
+\xe4\x8f\xf7G\xe4\xdd\x8e\xc3\xc9I$\x92rT\x92I\
+$\xa5$\x92I)I$\x92JRI$\x92\x94\x92\
+I$\xa5*\x9d[\xfeM\xc9\xff\x00\x8b*\xda\xa9\xd5\
+\xbf\xe4\xdc\x9f\xf8\xb2\x99\x97\xf9\xb9\xff\x00t\xfeH\x97\
+\xca|\x8b\xc5\xa6N\x99`\xb4\x94\x92I$\xa5$\x92\
+I)I$\x92Jv~\xacU\xbf6\xcbO\x15\xd7\
+\xf8\xb8\x8f\xe0\x0a\xe9\xd6\x17\xd5Z\xe2\x9b\xed\xfd\xe7\xb5\
+\xbf\xe6\x89\xff\x00\xbf-\xd5\xb1\xc8\xc7\x87\x04|l\xfe\
+-\xac\x22\xa0<T\x92I+,\x8aI$\x92R\x95\
+N\xabg\xa7\xd3\xb2]\xdf\xd3p\x1f\x13\xa7\xf1V\xd6\
+o\xd6\x07\xed\xe9v\x8f\xde,o\xfd&\x9f\xe0\xa3\xcc\
+xqd=\xa3/\xc9l\xcdFG\xc0\xbc\x8aI$\
+\xb0\x9ajI$\x92R\x92I$\x94\xa5o\xa4\xd9\xe9\
+\xf5,wx\xbc7\xfc\xefo\xf1U\x14\xe9\x7f\xa7u\
+v~\xe3\xda\xef\xf3H)\xd0\x97\x0c\xe3.\xc4\x1f\xb1\
+ \xd1\x07\xb1{\xd4\x92Io\xb7T\x92I$\xa5*\
+=f\xaf[\xa6^\xde\xedn\xf1\xfd\x9fw\xf0W\x94\
+l`\xb2\xb7V\xee\x1e\x0bO\xc0\xe8\x9b\x92<p\x94\
+\x7fx\x11\xf6\xa0\x8b\x04w\x0f\x02\xba\x9f\xab?\xf2{\
+\xbf\xe3\x1d\xf9\x1a\xb9r\x0bIk\xb9\x1a\x1f\x88]G\
+\xd5\x9f\xf9=\xdf\xf1\x8e\xfc\x8dY\x7f\x0f\xfe\x7f\xfc\x12\
+\xd6\xc1\xf3\xfd\x1dt\x92Ik6\x94\x92I$\xa5$\
+\x92I)I$\x92JRI$\x92\x9eG\xeb\x07\xfc\
+\xabo\xf5Y\xff\x00R\x16j\xd2\xfa\xc1\xff\x00*\xdb\
+\xfdV\x7f\xd4\x85\x9a\xb0\xf9\x8f\xe7\xb2\x7f~_\x9bN\
+\x7f<\xbc\xca\x92I%\x12\xd5'\x09\x93\x84\x94\xf6\xdd\
+;\xfeO\xc5\xff\x00\x89\xaf\xfe\xa4+*\xb7N\xff\x00\
+\x93\xf1\x7f\xe2k\xff\x00\xa9\x0a\xca\xdf\xc7\xf2G\xfb\xa3\
+\xf2n\xc7a\xe4\xa4\x92I9*I$\x92R\x92I\
+$\x94\xa4\x92I%)$\x92IJI$\x92R\x95\
+N\xad\xff\x00&\xe4\xff\x00\xc5\x95mT\xea\xdf\xf2n\
+O\xfcYL\xcb\xfc\xdc\xff\x00\xba\x7f$K\xe5>E\
+\xe2\xd3'L\xb0ZJI$\x92R\x92I$\x94\xa4\
+\x92I%=_\xd5\xb6m\xe9\xa1\xdf\xbe\xf7\x1f\xc8\xdf\
+\xe0\xb5U\x0e\x86\xdd\xbd.\x81\xe2\x0b\xbf\xces\x8f\xf1\
+W\xd6\xef.+\x0e1\xfdA\xf97 *\x11\xf2\x0a\
+I$\x94\x8b\x94\x92I$\xa5,\x8f\xac\xce\x8e\x9e\xc1\
+\xe3h\xff\x00\xa9qZ\xeb\x13\xebK\xa3\x16\x96\xf8\xd8\
+O\xdc\x0f\xf7\xa8y\xb3X2y,\xcb\xf2K\xc9\xe6\
+\x92I%\x88\xd4RI$\x92\x94\x92I$\xa5$\x92\
+t\x94\xf7\x94\xbf\xd4\xa5\x96~\xf3C\xbe\xf1*j\xbe\
+\x01\xdd\x83\x8e\x7f\xe0\x99\xff\x00R\x15\x85\xd0D\xdcA\
+\xee\x03tj\x02\x92I$R\xa4\x92I%<?P\
+g\xa7\x9d\x90\xcf\x0b\x1d\xf9J6\x17W\xcb\xc0\xab\xd1\
+\xa3n\xc2K\xbd\xc2u)\xfa\xe36uK\xc0\xeeA\
+\xfb\xda\xd2\xa8,9\xcaX\xb2\xcf\x80\x98\x91)\x0d<\
+\xdad\x98\xc8\xd1\xaa%\xd9\xaf\xeb6qsZYQ\
+\x92\x07\x07\xbf\xf6\x97L\xb8*\xff\x00\x9cg\xf5\x87\xe5\
+]\xe8W\xfe\x1f\x96yD\xf8\xe4eUW\xf5f\xc1\
+#.+7T\xbaI$\xae\xb3)$\x92IMl\
+\xdc\xeap*\x17_\xbbk\x9c\x19\xed\x12d\x82\x7f\x82\
+\xa8>\xb1\xf4\xc3\xf9\xcf\x1f\x16\x94?\xac\xff\x00\xd0+\
+\xff\x00\x8eo\xfdK\xd7.\xa8s\x5c\xdeL9L#\
+\xc3T7\x0c92\xca\x12\xa1O^:\xff\x00K?\
+\xe1H\xf8\xb5\xdf\xdc\xa6:\xdfK<d\x0f\x98p\xfc\
+\xad\x5cjJ!\xf1,\xbf\xbb\x0f\xb0\xff\x00\x15\x9fx\
+\x97`\xde\xebWU\x91\xd4l\xb6\x97\x07\xb0\x86\xc3\x87\
+\x1a\x00\xa8\xa4\x92\xa99\x19\xcaS;\xc8\x93\xf6\xb1\x93\
+d\x9e\xe5I$\x92j\x14\x9c&N\x12S\xdbt\xef\
+\xf9?\x17\xfe&\xbf\xfa\x90\xac\xaa\xdd;\xfeO\xc5\xff\
+\x00\x89\xaf\xfe\xa4++\x7f\x1f\xc9\x1f\xee\x8f\xc9\xbb\x1d\
+\x87\x92\x92I$\xe4\xa9$\x92IJI$\x92R\x92\
+I$\x94\xa4\x92I%)$\x92IJU:\xb7\xfc\
+\x9b\x93\xff\x00\x16U\xb5S\xab\x7f\xc9\xb9?\xf1e3\
+/\xf3s\xfe\xe9\xfc\x91/\x94\xf9\x17\x8bL\x9d2\xc1\
+i)$\x92IJI$\x92R\x92I$\x94\xf6\xdd\
+1\xbbzv0\xff\x00\x82a\xfb\xda\x0a\xb4\x83\x846\
+\xe1\xd0<+`\xff\x00\xa2\x11\x96\xfe1P\x88\xec\x07\
+\xe4\xdd\x8e\xc3\xc9I$\x92rT\x92I$\xa5,\x1f\
+\xadG\xf4X\xe3\xf9N\xfc\x81o,\x0f\xadG\xdb\x8c\
+<\xdf\xff\x00}U\xf9\xdf\xf7<\xfe\x9f\xf4\x82\xcc\xdf\
+!\xfe]^y$\x92X\xcdE$\x92I)I$\
+\x92JRI$\x92\x9e\xd7\xa5\x19\xe9\xd8\xe7\xfe\x0c+\
+j\x97F3\xd2\xf1\xff\x00\xa9\xfcJ\xba\xb7\xb1k\x8e\
+\x1f\xdd\x8f\xe4\xdd\x8f\xca<\x82\x92I$\xf4\xa9$\x92\
+IO'\xf5\x8d\xbbz\x99?\xbd[]\xf9[\xfc\x16\
+Z\xd8\xfa\xce#>\xb3\xe3H\x1fs\x9f\xfd\xeb\x1db\
+sB\xb3\xe4\xfe\xf1\xfcZy>yy\xb2\xaf\xf9\xc6\
+\x7fX~U\xde\x85\xc1W\xfc\xe3?\xac?*\xefB\
+\xb7\xf0\xcd\xb2\x7f\x83\xfbYy\x7f\xd2\xfa.\x92I-\
+\x06u$\x92I)\xc7\xfa\xcf\xfd\x02\xbf\xf8\xe6\xff\x00\
+\xd4\xbdr\xeb\xa8\xfa\xcf\xfd\x02\xbf\xf8\xe6\xff\x00\xd4\xbd\
+r\xeb#\xe2\x1f\xcf\x9f \xd5\xcf\xf3\xfd\x14\x92I*\
+\xacjI$\x92R\x92I$\x94\xa4\xe12p\x92\x9e\
+\xdb\xa7\x7f\xc9\xf8\xbf\xf15\xff\x00\xd4\x85eV\xe9\xdf\
+\xf2~/\xfcM\x7f\xf5!Y[\xf8\xfeH\xff\x00t\
+~M\xd8\xec<\x94\x92I'%I$\x92JRI\
+$\x92\x94\x92I$\xa5$\x92I)I$\x92JR\
+\xa9\xd5\xbf\xe4\xdc\x9f\xf8\xb2\xad\xaa\x9d[\xfeM\xc9\xff\
+\x00\x8b)\x99\x7f\x9b\x9f\xf7O\xe4\x89|\xa7\xc8\xbcZ\
+d\xe9\x96\x0bII$\x92JRI$\x92\x94\x91\xe0\
+\xa4\x91\xe0\xa4\xa7\xbb\xc6\x11\x8fP\xfeC\x7f EC\
+\xc7\xfe\x8fW\xf5\x1b\xf9\x11\x17A\x1d\x87\x93xl\xa4\
+\x92I\x15)$\x92IJ\x5c\xff\x00\xd6\xaf\xfbM\xfd\
+\xbf\xfb\xea\xe8\x17?\xf5\xab\x9co\xed\xff\x00\xdfU~\
+{\xfd\xcf?\xa7\xfd \xc7\x9b\xe4?O\xcd\xe7\xd2I\
+%\x8c\xd5RI$\x92\x94\x92I$\xa5$\x92I)\
+\xec\xba/\xfc\x97\x8f\xfdS\xf9J\xbc\xa8\xf4O\xf9/\
+\x1f\xfa\xa7\xf2\x95yn\xe1\xfek\x1f\xf7#\xf97!\
+\xf2\xc7\xc8)$\x92R.RI$\x92\x9eg\xebH\
+\xfdn\x93\xff\x00\x06\x7f\xea\x8a\xc5[\x7fZ\x7f\xa4\xd1\
+\xff\x00\x16\x7f*\xc4X\xbc\xe7\xf3\xf9<\xff\x00`j\
+e\xf9\xe4\xca\xbf\xe7\x19\xfda\xf9Wz\x17\x05_\xf3\
+\x8c\xfe\xb0\xfc\xab\xbd\x0a\xd7\xc36\xc9\xfe\x0f\xedd\xe5\
+\xff\x00K\xe8\xbaI$\xb4\x19\xd4\x92I$\xa7\x1f\xeb\
+?\xf4\x0a\xff\x00\xe3\x9b\xff\x00R\xf5\xcb\xae\xa3\xeb?\
+\xf4\x0a\xff\x00\xe3\x9b\xff\x00R\xf5\xcb\xac\x8f\x88\x7f>\
+|\x83W?\xcf\xf4RI$\xaa\xb1\xa9$\x92IJ\
+I$\x92R\x93\x84\xc9\xc2J{n\x9d\xff\x00'\xe2\
+\xff\x00\xc4\xd7\xff\x00R\x15\x95[\xa7\x7f\xc9\xf8\xbf\xf1\
+5\xff\x00\xd4\x85eo\xe3\xf9#\xfd\xd1\xf97c\xb0\
+\xf2RI$\x9c\x95$\x92I)I$\x92JRI\
+$\x92\x94\x92I$\xa5$\x92I)J\xa7V\xff\x00\
+\x93r\x7f\xe2\xca\xb6\xaauo\xf97'\xfe,\xa6e\
+\xfen\x7f\xdd?\x92%\xf2\x9f\x22\xf1i\x93\xa6X-\
+%$\x92I)I$\x92JRG\x84\x92IOw\
+\x8ag\x1a\xa3\xfc\x86\xfe@\x8a\x81\x82waP|j\
+a\xff\x00\xa2\x11\xd7A\x0dc\x1f \xdd\x1b\x05$\x92\
+H\xa5I$\x92JR\xe7\xfe\xb5\x7f\xdao\xed\xff\x00\
+\xdfW@\xb0>\xb5\x0fn1\xf3\x7f\xfd\xf5W\xe7\x7f\
+\xdc\xf3\xfa\x7f\xd2\x0b3|\x87\xe9\xf9\xbc\xf2I$\xb1\
+\x9a\x8aI$\x92R\x92I$\x94\xa4\x92I%=\x97\
+E\xff\x00\x92\xf1\xff\x00\xaa\x7f)W\x95.\x8d\xff\x00\
+%\xe3\xff\x00S\xf8\x95uoa\xfek\x1f\xf7#\xf9\
+7a\xf2\xc7\xc8)$\x92OJ\x92I$\x94\xf3_\
+Z\x7f\xa5Q\xff\x00\x16\x7f*\xc4[?Z\x0f\xeb\xb5\
+\x0f\x0a\xbf+\x9c\xb1\x96/7\xfc\xfeO?\xd8\x1a\x99\
+~yy\xb2\xaf\xf9\xc6\x7fX~U\xde\x85\xc1W\xfc\
+\xe3?\xac?*\xefB\xb5\xf0\xcd\xb2\x7f\x83\xfbY9\
+\x7f\xd2\xfa.\x92I-\x06u$\x92I)\xc7\xfa\xcf\
+\xfd\x02\xbf\xf8\xe6\xff\x00\xd4\xbdr\xeb\xa8\xfa\xcf\xfd\x02\
+\xbf\xf8\xe6\xff\x00\xd4\xbdr\xeb#\xe2\x1f\xcf\x9f \xd5\
+\xcf\xf3\xfd\x14\x92I*\xacjI$\x92R\x92I$\
+\x94\xa4\xe12p\x92\x9e\xdb\xa7\x7f\xc9\xf8\xbf\xf15\xff\
+\x00\xd4\x85eV\xe9\xdf\xf2~/\xfcM\x7f\xf5!Y\
+[\xf8\xfeH\xff\x00t~M\xd8\xec<\x94\x92I'\
+%I$\x92JRI$\x92\x94\x92I$\xa5$\x92\
+I)I$\x92JR\xa9\xd5\xbf\xe4\xdc\x9f\xf8\xb2\xad\
+\xaa\x9d[\xfeM\xc9\xff\x00\x8b)\x99\x7f\x9b\x9f\xf7O\
+\xe4\x89|\xa7\xc8\xbcZd\xe9\x96\x0bII$\x92J\
+RI$\x92\x94\x92I$\xa7\xb6\xe9n\xdd\xd3q\x8f\
+\xfc\x13\x07\xdc\x00V\x95\x0e\x86\xed\xdd*\x83\xe0\x1c>\
+\xe78+\xeb{\x09\xbcp=\xe3\x1f\xc9\xbb\x1db<\
+\x82\x92I$\xf4\xa9$\x92IJX_Z\x87\xe8\xb1\
+\xcf\xf2\x9d\xf9\x02\xddX\xbfZ\x1b8\x94\xbb\xc2\xc8\xfb\
+\xda\x7f\xb9A\xce\x0b\xe5\xf2y\x0f\xcc,\xcb\xf2I\xe6\
+RI%\x8a\xd4RI$\x92\x94\x92I$\xa5$\x92\
+I)\xed:@\x8e\x99\x8e?\x90\x15\xc5[\xa6\x8d\xbd\
+?\x1c\x7f\xc1\xb7\xf1\x0a\xca\xde\xc5\xa68\x0f\xea\x8f\xc9\
+\xbb\x1f\x94y\x05$\x92I\xe9RI$\x92\x9e[\xeb\
+1\x9e\xa2\xd1\xfb\xb54\x7f\xd2yY\x0bK\xeb\x0b\xb7\
+uK\x07\xee\xb5\x8d\xff\x00\xa2\x0f\xf1Y\xab\x13\x997\
+\x9b'\xf7\x8f\xe0\xd3\xc9\xf3\xcb\xcd\x95\x7f\xce3\xfa\xc3\
+\xf2\xae\xf4.\x0a\xbf\xe7\x19\xfda\xf9Wz\x15\xbf\x86\
+m\x93\xfc\x1f\xda\xcb\xcb\xfe\x97\xd1t\x92Ih3\xa9\
+$\x92IN?\xd6\x7f\xe8\x15\xff\x00\xc77\xfe\xa5\xeb\
+\x97]G\xd6\x7f\xe8\x15\xff\x00\xc77\xfe\xa5\xeb\x97Y\
+\x1f\x10\xfe|\xf9\x06\xae\x7f\x9f\xe8\xa4\x92IUcR\
+I$\x92\x94\x92I$\xa5'\x09\x93\x84\x94\xf6\xdd;\
+\xfeO\xc5\xff\x00\x89\xaf\xfe\xa4+*\xb7N\xff\x00\x93\
+\xf1\x7f\xe2k\xff\x00\xa9\x0a\xca\xdf\xc7\xf2G\xfb\xa3\xf2\
+n\xc7a\xe4\xa4\x92I9*I$\x92R\x92I$\
+\x94\xa4\x92I%)$\x92IJI$\x92R\x95N\
+\xad\xff\x00&\xe4\xff\x00\xc5\x95mT\xea\xdf\xf2nO\
+\xfcYL\xcb\xfc\xdc\xff\x00\xba\x7f$K\xe5>E\xe2\
+\xd3'L\xb0ZJI$\x92R\x92I$\x94\xa4\x92\
+I%=_\xd5\xb7\xee\xe9\xa0~\xe3\xdc?#\xbf\x8a\
+\xd5X\x7fU\xac\x9c{\xeb\xfd\xd7\x83\xfep\xff\x00b\
+\xdc[|\xa1\xe2\xc1\x8c\xff\x00V\xbe\xcd\x1bx\x8d\xc2\
+>JI$\x94\xcb\xd4\x92I$\xa5,\x8f\xac\xcd\x9e\
+\x9e\xd3\xfb\xb6\xb4\xfe\x0e\x1f\xc5k\xac\xee\xbe\xdd\xdd*\
+\xef\xe4\x96;\xeesT\x5c\xc8\xbc9?\xba\x7f\x0dV\
+\xe4\xd6\x12\xf2y\x04\x92Ia\xb4\xd4\x92I$\xa5$\
+\x92I)I$\x92J{\x9c!\xb7\x0e\x86\xf8T\xc1\
+\xff\x00D#\xa8\xb1\xbb\x18\xd6\x0f\xcd\x00}\xcaK\xa0\
+\x88\xa0\x07`\xde\x1a\x05$\x92H\xa9I$\x92Jx\
+\xce\xb0\xfd\xfdO \xf8?o\xf9\xa07\xf8*H\xd9\
+o\xf52\xee\xb3\xf7\xacq\xfcJ\x0a\xc1\xc8x\xa73\
+\xdeD\xfe-)\x1b$\xf8\xb2\xaf\xf9\xc6\x7fX~U\
+\xde\x85\xc1W\xfc\xe3?\xac?*\xefB\xbd\xf0\xcd\xb2\
+\x7f\x83\xfbY\xb9\x7f\xd2\xfa.\x92I-\x06u$\x92\
+I)\xc7\xfa\xcf\xfd\x02\xbf\xf8\xe6\xff\x00\xd4\xbdr\xeb\
+\xa8\xfa\xcf\xfd\x02\xbf\xf8\xe6\xff\x00\xd4\xbdr\xeb#\xe2\
+\x1f\xcf\x9f \xd5\xcf\xf3\xfd\x14\x92I*\xacjI$\
+\x92R\x92I$\x94\xa4\xe12p\x92\x9e\xdb\xa7\x7f\xc9\
+\xf8\xbf\xf15\xff\x00\xd4\x85eV\xe9\xdf\xf2~/\xfc\
+M\x7f\xf5!Y[\xf8\xfeH\xff\x00t~M\xd8\xec\
+<\x94\x92I'%I$\x92JRI$\x92\x94\x92\
+I$\xa5$\x92I)I$\x92JR\xa9\xd5\xbf\xe4\
+\xdc\x9f\xf8\xb2\xad\xaa\x9d[\xfeM\xc9\xff\x00\x8b)\x99\
+\x7f\x9b\x9f\xf7O\xe4\x89|\xa7\xc8\xbcZd\xe9\x96\x0b\
+II$\x92JRI$\x92\x94\x92I$\xa7o\xea\
+\xb5\xbbr\xae\xab\xf7\xd8\x1d\xf3a\xff\x00\xcc\x97J\xb8\
+\xee\x87o\xa5\xd4\xe9'\x87\x92\xc3\xfd\xa0\x7f\x8a\xecV\
+\xb7\xc3\xe5xk\xf7dG\xdb\xaf\xedl\xe07\x0a\xec\
+T\x92I+l\xaaI$\x92R\x95^\xa8\xcfS\xa7\
+d3\xc6\xb7\x11\xf2\x12\xad(\xd8\xc1en\xac\xf0\xf6\
+\x96\xfd\xe2\x13f8\xa3(\xf7\x04}\xa8\x22\xc1\x1d\xde\
+\x05$\xee\x05\xa4\xb4\xf24)\x96\x03II$\x92J\
+RI$\x92\x94\x8b\x8a\xcfS&\x9a\xff\x00~\xc67\
+\xefp\x08J\xefG\xaf\xd4\xeax\xe3\xc1\xfb\xbf\xcd\x04\
+\xff\x00\x04\xfcq\xe2\x9cc\xde@}\xa51\x16@\xee\
+^\xcd$\x92[\xcd\xd5$\x92I)Hy\x16\x8ah\
+\xb2\xe3\xfe\x0d\x8e\x7f\xf9\xa2Q\x15\x0e\xbbo\xa5\xd3.\
+=\xdf\x0c\x1f\xda#\xf8&\xe4\x97\x04%/\xdd\x89?\
+`D\x8d\x02{\x07\x8e\xd7\xbf)$\x92\xc0i2\xaf\
+\xf9\xc6\x7fX~U\xde\x85\xc1W\xfc\xe3?\xac?*\
+\xefB\xd1\xf8f\xd9?\xc1\xfd\xac\xfc\xbf\xe9}\x17I\
+$\x96\x83:\x92I$\x94\xe3\xfdg\xfe\x81_\xfcs\
+\x7f\xea^\xb9u\xd4}g\xfe\x81_\xfcs\x7f\xea^\
+\xb9u\x91\xf1\x0f\xe7\xcf\x90j\xe7\xf9\xfe\x8aI$\x95\
+V5$\x92I)I$\x92JRp\x998IO\
+m\xd3\xbf\xe4\xfc_\xf8\x9a\xff\x00\xeaB\xb2\xabt\xef\
+\xf9?\x17\xfe&\xbf\xfa\x90\xac\xad\xfc\x7f$\x7f\xba?\
+&\xecv\x1eJI$\x93\x92\xa4\x92I%)$\x92\
+IJI$\x92R\x92I$\x94\xa4\x92I%)T\
+\xea\xdf\xf2nO\xfcYV\xd5N\xad\xff\x00&\xe4\xff\
+\x00\xc5\x94\xcc\xbf\xcd\xcf\xfb\xa7\xf2D\xbeS\xe4^-\
+2t\xcb\x05\xa4\xa4\x92I%)$\x92IJI$\
+\x92S:\xacu6\xb2\xd6\xfd*\xdc\x1c>-2\xbb\
+\xb6=\xb61\xb60\xcb\x5c\x03\x81\xf2:\xae\x05v\x1d\
+\x0b#\xed\x1d6\xa92\xea\xe6\xb7\x7fg\x8f\xc0\x85\x7f\
+\xe1\xb3\xa9\xce\x1d\xc5\xfd\x9f\xef\xb3r\xe7R;\xba\x09\
+$\x92\xd2l)$\x92IJI$\x92S\xc5uZ\
+}\x0e\xa3\x91_m\xe5\xc3\xe0\xff\x00w\xf1U\x16\xd7\
+\xd6|}\x99U\xe4\x01\xa5\xad\xda~-\xff\x00aX\
+\xab\x0f\x98\x87\xb7\x9aq\xfe\xb1\xfb\x0e\xa1\xa7\x90p\xc8\
+\x8f\x15$\x92J%\xaaI$\x92R\x96\xbf\xd5\x9a\xb7\
+\xe7\xba\xce\xd5VO\xcd\xd0\xd1\xf8J\xc8]/\xd5z\
+6c[\x90F\xb6\xbfh\xf80\x7fyV9(q\
+\xe7\x87\x87\xab\xec\xfe\xd5\xf8\x85\xccxj\xed\xa4\x92K\
+e\xb6\xa4\x92I%)a}i\xbe*\xa7\x18~s\
+\x8d\x87\xe0\xd1\x03\xfe\xa9n\xaeG\xaf\xe4z\xfdI\xed\
+\x06[P\x15\x8f\x88\xd4\xfe%U\xe7\xe7\xc1\x80\x8e\xb2\
+\x22?\xb7\xf61\xe65\x03\xe3\xa3\x9a\x92I,\x86\xab\
+*\xff\x00\x9cg\xf5\x87\xe5]\xe8\x5c\x15\x7f\xce3\xfa\
+\xc3\xf2\xae\xf4-\x1f\x86m\x93\xfc\x1f\xda\xcf\xcb\xfe\x97\
+\xd1t\x92Ih3\xa9$\x92IN?\xd6\x7f\xe8\x0c\
+\xff\x00\x8eo\xfdK\xd7.\xba\xaf\xac\xad\x9e\x9c\x0f\xee\
+\xd8\xd3\xf88\x7f\x15\xca\xac\x9f\x88\x7f?\xfe\x08j\xe7\
+\xf9\xfe\x8aI$\x95F5$\x92I)I$\x92J\
+Rp\x998IOm\xd3\xbf\xe4\xfc_\xf8\x9a\xff\x00\
+\xeaB\xb2\xabt\xef\xf9?\x17\xfe&\xbf\xfa\x90\xac\xad\
+\xfc\x7f$\x7f\xba?&\xecv\x1eJI$\x93\x92\xa4\
+\x92I%)$\x92IJI$\x92R\x92I$\x94\
+\xa4\x92I%)T\xea\xdf\xf2nO\xfcYV\xd5N\
+\xad\xff\x00&\xe4\xff\x00\xc5\x94\xcc\xbf\xcd\xcf\xfb\xa7\xf2\
+D\xbeS\xe4^-2t\xcb\x05\xa4\xa4\x92I%)\
+$\x92IJI$\x92R\x96\xdf\xd5\x8c\x9d\x97\xd9\x8a\
+\xe3\xa5\x8d\xdc\xdf\x8by\xfc\x0a\xc4E\xc5\xbd\xd8\xb9\x15\
+\xe43\x9a\xdc\x1d\xf1\xf1\x1f0\xa4\xc1\x93\xda\xc9\x19\xf6\
+:\xf9u]\x09p\xc8\x17\xbbIF\xbb\x19mm\xb6\
+\xb3-x\x0ei\xf2:\xa9-\xd1\xae\xa1\xb8\xa4\x92I\
+%)$\x92INw]\xc4\xfbWO~\xd1/\xab\
+\xf4\x8d\xfe\xcf?\x82\xe4\x17\xa0.;\xact\xf3\x81\x96\
+CG\xe8l\x97V{y\xb7\xe4\xb3\xfe#\x84\xe9\x94\
+\x7fv_\xb0\xb0g\x86\xd2\x1eE\xa0\x92I,\xe6\x05\
+$\x92I)\x93\x18\xeb\x1e\xda\xd8%\xce!\xad\x1e$\
+\xe8\x17q\x87\x8e\xdcLZ\xf1\xdb\xc5m\x00\x9f\x13\xdc\
+\xfc\xca\xc2\xfa\xb9\xd3\x8b\xec\xfb}\xa3\xda\xc9\x15Ow\
+p]\xf2]\x1a\xd4\xf8~\x13\x08\x9c\x92\x1a\xcfo\xee\
+\xff\x00kc\x04(q\x1e\xbf\x92\x92I%u\x99I\
+$\x92JE\x93{q\xb1\xec\xbd\xfcV\xd2\xef\xb9p\
+\xcf{\xac{\xacy\x978\x97\x13\xe6u+\xa2\xfa\xcf\
+\x99\xb2\x96a4\xeba\xde\xff\x00\xea\x8e?\x1f\xc8\xb9\
+\xb5\x97\xf1\x1c\xbcY\x04\x06\xd0\x1a\xf9\x96\xb6y\x5c\xab\
+\xb2\x92I%I\x89pv\x90\xef\x03?r\xef\x87\x0b\
+\x80\xe7E\xdc\xe0\xdb\xeb\xe1Qo%\xd5\xb4\x9f\x8ck\
+\xf8\xad\x0f\x86\x1drG\xb8\x07\xec\xbf\xe2\xcf\xcb\x9f\x98\
+y'I$\x96\x8b:\x92I$\x94\xd3\xea\xf8\xee\xca\
+\xe9\xf7T\xc1.\x8d\xcd\x03\xb9i\x0e\xfe\x0b\x8b^\x80\
+\xb3r\xfa\x0e\x06]\x86\xd2\x1dS\xdd\xab\x8dd\x09>\
+0A\x0a\x9f9\xcaK9\x13\x81\x1c@Q\x07\xb3\x16\
+\x5cFtF\xef\x22\x92\xeaY\xf5g\xa7\xb4\xfb\x9dk\
+\xfe.\x03\xfe\xa5\xa1]\xc7\xe9\x98\x18\xa4:\x9aZ\x1c\
+8q\xf7\x1f\xbd\xd2\xabG\xe1\xd9O\xccc\x11\xf6\xb1\
+\x8c\x12;\x90\x1e<\xe1\xe4\xb6\x83\x92\xfa\xdc\xda\xa4\x0d\
+\xce\x11$\xf1\x12\x82\xba\xbf\xac\x9f\xf2a\xfe\xbb\x17(\
+\xa2\xe6p\x8c\x13\x10\x04\x9fH6~\xabrC\x82T\
+5\xd1I$\x92\x81b\x93\x84\xc9\xc2J{n\x9d\xff\
+\x00'\xe2\xff\x00\xc4\xd7\xff\x00R\x15\x95[\xa7\x7f\xc9\
+\xf8\xbf\xf15\xff\x00\xd4\x85eo\xe3\xf9#\xfd\xd1\xf9\
+7c\xb0\xf2RI$\x9c\x95$\x92I)I$\x92\
+JRI$\x92\x94\x92I$\xa5$\x92I)J\xa7\
+V\xff\x00\x93r\x7f\xe2\xca\xb6\xaauo\xf97'\xfe\
+,\xa6e\xfen\x7f\xdd?\x92%\xf2\x9f\x22\xf1i\x93\
+\xa6X-%$\x92I)I$\x92JRI$\x92\
+\x94\x92I$\xa7\xa4\xfa\xb5\x9c\x1fS\xb0l>\xea\xfd\
+\xd5\xf9\xb4\xf2>En.\x13\x1b\x22\xcc[\xd9\x91Q\
+\x870\xc8\xf0> \xfcWk\x89\x93^f;2*\
+>\xd7\x8e<\x0fp~\x0bW\x90\xcf\xeeC\xdb'\xd5\
+\x0d\xbcc\xfd\x8d\x9c3\xe2\x1c'q\xf9&I$\x95\
+\xc6U$\x92I)J\xben\x1d9\xd4\x1a.\x1a\x1d\
+Z\xe1\xcbO\x88V\x12BQ\x12\x062\x16\x0e\xe1D\
+^\x85\xe2\xf3\xfafWOy\x16\xb7u\x7f\x9bk~\
+\x89\xfe\xe5Mw\xe4\x02 \xea\x0f!U\x7fJ\xe9\xd6\
+\x1d\xce\xc7\xae|\x86\xdf\xc9\x0a\x86O\x86\xebx\xe7C\
+\xb4\xbf\x8b\x04\xb9\x7f\xdd?k\xc5\xc1\xe3\xc7\x85\xad\xd3\
+:\x05\xf9.\x16\xe5\x83U#]\xa7G;\xfb\x82\xe8\
+\xa9\xc2\xc4\xc73E,a\xfd\xe0\xd1?\x7f(\xe9\xd8\
+~\x1d\x18\x90rK\x8a\xbfDl\x98\xe0\x03Y\x1b\xf0\
+b\xc62\xb6\x0a\xeb\x01\xadh\x86\x81\xa0\x00)$\x92\
+\xbd\xb32\x92I$\x94\xa5\x1b,e5\xba\xdb\x0e\xd6\
+0\x178\x9e\xc0).{\xeb\x1fR\x93\xfb>\x93\xa0\
+\x83q\x1e<\x86\xff\x00z\x8f>a\x83\x19\x99\xfa\x0e\
+\xe5l\xe4!\x12\x5c|\xec\xa7f\xe5Y\x90\xed7\x9f\
+h\xf0h\xd0\x04\x04\x92Xr\x91\x912:\x92l\xb4\
+\xc9\xb3g\xaa\x92I$\x14\xa5\xd4\xfd[\xc9\x16\xe0\x9a\
+\x09\xf7P\xe2#\xf9.\xf7\x0f\xe2\xb9e{\xa3\xe7}\
+\x831\xafy\xfd\x13\xfd\x96y\x03\xdf\xe4\xa7\xe52\x8c\
+9\xa2O\xca}'\xeb\xfd\xab\xf1K\x86@\x9d\x8e\x8f\
+d\x92`A\x00\x83 \xea\x08N\xb6\x9bjI$\x92\
+R\x92I$\x94\xa4\x92I%9_Y?\xe4\xc3\xff\
+\x00\x18\xc5\xca.\xaf\xeb'\xfc\x98\x7f\xe3\x18\xb9E\x93\
+\xf1\x1f\xe7\xff\x00\xc1\x1f\xb5\xad\x9f\xe7\xfa)$\x92U\
+\x18\x94\x9c&N\x12S\xdbt\xef\xf9?\x17\xfe&\xbf\
+\xfa\x90\xac\xaa\xdd;\xfeO\xc5\xff\x00\x89\xaf\xfe\xa4+\
++\x7f\x1f\xc9\x1f\xee\x8f\xc9\xbb\x1d\x87\x92\x92I$\xe4\
+\xa9$\x92IJI$\x92R\x92I$\x94\xa4\x92I\
+%)$\x92IJU:\xb7\xfc\x9b\x93\xff\x00\x16U\
+\xb5S\xab\x7f\xc9\xb9?\xf1e3/\xf3s\xfe\xe9\xfc\
+\x91/\x94\xf9\x17\x8bL\x9d2\xc1i)$\x92IJ\
+I$\x92R\x92I$\x94\xa4\x92I%)itn\
+\xa8z}\xdb,3E\x87\xde?t\xfe\xf0\xfe+5\
+$\xfcy%\x8aBq4Bc#\x13c\xa3\xdf\xb5\
+\xcd{C\x9aAi\x12\x08\xd4\x10S\xaeW\xa3u\xa7\
+a\x11\x8f\x92K\xb1\xc9\xd0\xf2XO\xf0]C\x1e\xcb\
+\x18,\xad\xc1\xcdp\x90\xe1\xa8!lr\xfc\xc43\xc6\
+\xc6\x84|\xd1\xed\xfd\x8d\xb8LLi\xbfP\xc9$\x92\
+S.RI$\x92\x94\x92I$\xa5$\x92I)I\
+$\x92JRI,\xbe\xab\xd6\xea\xc1\x06\x9a\x08\xb3#\
+\xc3\x90\xcf\xeb\x7frfL\x91\xc5\x13)\x9a\x01\x12\x90\
+\x88\xb2\xcb\xac\xf5f\xe0U\xe9\xd4A\xc8x\xf6\x8f\xdd\
+\x1f\xbc\x7f\x82\xe4\x9c\xe2\xe2\x5c\xe3$\x99$\xf2IR\
+\xb6\xdb.\xb1\xd6\xda\xe2\xf7\xb8\xc9q\xee\xa0\xb29\x9e\
+b\x5c\xc4\xec\xe9\x11\xf2\x8f\xe5\xd5\xab\x92fg\xc3\xa2\
+\x92I%\x02\xc5$\x92I)I$\x92Jv\xfa7\
+\x5c\x18\xed\x18\x99\x87\xf4cFY\xce\xdf#\xe4\xba6\
+=\x964>\xb7\x075\xda\x82\x0c\x82\xb8\x14|l\xdc\
+\xacC8\xf6\xba\xb9\xe4\x03\xa1\xf8\x83\xa2\xbb\xcb\xf3\xf2\
+\xc4\x042\x0e(\x8d\x8fQ\xfcYa\x98\xc4T\xb5\x0f\
+r\x92\xe5\xab\xfa\xcd\xd4\x18!\xed\xae\xcf2\x08?\xf4\
+H\xfc\x88\xbf\xf3\xa7\x22?\x98g\xf9\xc5Z\x1c\xfe\x03\
+\xd4\x8f\xa7\xf0e\xf7\xe1\xdc\xfd\x8fH\x92\xe5\xdf\xf5\x9b\
+=\xda5\x953\xe0\x09?\x8b\x95[z\xd7S\xbbG\
+^\xe6\x8f\xe4C\x7f M\x97\xc4p\x8d\x84\xa5\xf4A\
+\xcf\x01\xb5\x97\xae\xb6\xfahn\xeb\x9e\xda\xc7\x8b\x88\x1f\
+\x95f\xe4\xfdd\xc1\xa6[D\xde\xef\xe4\xe8\xdf\xf3\x8f\
+\xf0\x5c\xbb\x9e\xf7\xb8\xb9\xee.q\xe4\xb8\xc9\xfb\xca\x8a\
+\x83'\xc4rKHDG\xc4\xfa\x8f\xf0Y.bG\
+a_\x8b\x7f\xa8u\x9c\xae\xa0\xdfI\xe1\xac\xaagc\
+Gq\xe2J\xa0\x92J\x9c\xe7,\x87\x8ad\xc8\xf8\xb1\
+\x12dl\x9bRI$\x9a\x85'\x09\x93\x84\x94\xf6\xdd\
+;\xfeO\xc5\xff\x00\x89\xaf\xfe\xa4+*\xb7N\xff\x00\
+\x93\xf1\x7f\xe2k\xff\x00\xa9\x0a\xca\xdf\xc7\xf2G\xfb\xa3\
+\xf2n\xc7a\xe4\xa4\x92I9*I$\x92R\x92I\
+$\x94\xa4\x92I%)$\x92IJI$\x92R\x95\
+N\xad\xff\x00&\xe4\xff\x00\xc5\x95mT\xea\xdf\xf2n\
+O\xfcYL\xcb\xfc\xdc\xff\x00\xba\x7f$K\xe5>E\
+\xe2\xd3'L\xb0ZJI$\x92R\x92I$\x94\xa4\
+\x92I%)$\x92IJI$\x92R\x95\xde\x9d\xd5\
+rzs\xa2\xb3\xbe\xa2e\xd5\xbb\x8f\x88\xf0*\x92I\
+\xd0\x9c\xb1\x91(\x92\x08\xea\x12\x09\x89\xb0i\xec\xf0z\
+\xbe\x1ep\x02\xb7l\xb3\xbdo\xd1\xdf/\x15uy\xfa\
+\xd0\xc5\xeb\x9dG\x14\x06\xfa\x9e\xabG\xe6\xd9\xee\xfcy\
+\xfcU\xfc_\x11\xe9\x96?\xe1G\xf83G\x98\xfd\xe1\
+\xf5\x0f`\x92\xc7\xc0\xfa\xc5^]\xec\xc6\xb2\xa3[\xec\
+0\x1c\x0c\xb6b|\x8a\xd8Wq\xe5\x86a\xc5\x03c\
+fh\xc8HX6\xa4\x92I=*I$\x92R\x95\
+|\xac\xfcL!9\x16\x06\x9eCyq\xf84j\x89\
+{\x1de61\xa4\xb5\xcei\x00\x8d\x08$D\x85\xc2\
+;qq\xdeIt\xfb\x89\xd4\xca\xad\xcd\xf32\xe5\xc4\
+DcfW\xa9\xdbF<\xb9\x0e:\xa1\xbb\xaf\xd4>\
+\xb1_\x90\x0dX\x80\xd3Y\xe5\xdf\x9e~\xee\x16G:\
+\x94\xc9,\xbc\x99g\x98\xf1NW\xfb\x1a\xd2\x91\x91\xb2\
+mI$\x92\x8d\x0aI$\x92R\x92I$\x94\xa4\x92\
+I%)$\x92IJI$\x92R\x92I$\x94\xa4\
+\x92I%)$\x92IJI$\x92R\x93\x84\xc9\xc2\
+J{n\x9d\xff\x00'\xe2\xff\x00\xc4\xd7\xff\x00R\x15\
+\x95[\xa7\x7f\xc9\xf8\xbf\xf15\xff\x00\xd4\x85eo\xe3\
+\xf9#\xfd\xd1\xf97c\xb0\xf2RI$\x9c\x95$\x92\
+I)I$\x92JRI$\x92\x94\x92I$\xa5$\
+\x92I)J\xa7V\xff\x00\x93r\x7f\xe2\xca\xb6\xaau\
+o\xf97'\xfe,\xa6e\xfen\x7f\xdd?\x92%\xf2\
+\x9f\x22\xf1i\x93\xa6X-%$\x92I)I$\x92\
+JRI$\x92\x94\x92I$\xa5$\x92I)I$\
+\x92JRI$\x92\x92Qi\xa2\xea\xeeo5\xb8<\
+\x7fd\xca\xee\xda\xe0\xf6\x87\xb7P\xe0\x08>Ep\x0b\
+\xb0\xe8y?h\xe9\xb5I\x97U\xfa7\x7fg\x8f\xc2\
+\x15\xff\x00\x86\xce\xa58w\x1cC\xe9\xfe\xfb7.u\
+#\xbe\xae\x82I$\xb4\x9b\x0aI$\x92R\x97\x1d\xd6\
+\xb1N/P\xb0\x01\xec\xb3\xf4\x8c\xf8;\x9f\xb8\xae\xc5\
+gu\xae\x9b\xfbC\x1ek\xfez\xadY\xe7\xe2\xdf\x9a\
+\xaf\xcea9\xb1zu\x94}C\xf6\x86<\xb0\xe3\x8e\
+\x9b\x87\x90II\xecun,x-sL\x10D\x10\
+TV;UI$\x92\x0aRI$\x92\x94\x92I$\
+\xa5$\x92I)I$\x92JRI$\x92\x94\x92I\
+$\xa5$\x92I)I$\x92JRI$\x92\x94\x9c\
+&K\x8dRS\xdb\xf4\xef\xf9?\x17\xfe&\xbf\xfa\x90\
+\xac\xa0\xe20\xd5\x89Mg\xf3+c~\xe6\x80\x8c\xb7\
+\xe0*\x11\x1d\x80n\x8d\x87\x92\x92I$\xe4\xa9$\x92\
+IJI$\x92R\x92I$\x94\xa4\x92I%)$\
+\x92IJU:\xb7\xfc\x9b\x93\xff\x00\x16U\xb5S\xab\
+\x7f\xc9\xb9?\xf1e3/\xf3s\xfe\xe9\xfc\x91/\x94\
+\xf9\x17\x8bL\x9d2\xc1i)$\x92IJI$\x92\
+R\x92I$\x94\xa4\x92I%)$\x92IJI$\
+\x92R\x92I$\x94\xa5\xb5\xf5g,W\x90\xfcW\x1d\
+.\x1b\x9b\xfdf\xff\x00\xb1b\xa9\xd3k\xe8\xb5\x97V\
+a\xccpp\xf8\x85&\x1c\x9e\xd6H\xcf\xb1\xd7\xcb\xaa\
+a.\x19\x03\xd9\xefRA\xc5\xc9\xaf/\x1d\x99\x15\xfd\
+\x17\x89\x8f\x03\xdc|\x91\x96\xe0\x22@\x11\xa8:\x86\xe8\
+7\xaa\x92I$T\xa4\x92I%5\xb2\xba~\x1en\
+\xb9\x15\x078p\xee\x1d\xfep\x82\xa9\x1f\xab=<\x99\
+\x06\xc1\xe5\xb8\x7f\xe4V\xb2J9`\xc53r\x84I\
+\xefKL\x22u \x17\x9c\xea\xbd\x0f\x13\x07\x0d\xf9\x15\
+9\xe5\xc0\xb4\x00\xe2#S\x1e\x0b\x09u\xbfX\x7f\xe4\
+\xb7\xff\x00Y\x9f\xf5ArK3\x9e\x84q\xe5\x02\x00\
+Dp\x83\xa7\x99k\xe6\x88\x8c\xa8\x0a\xd1I$\x92\xaa\
+\xc6\xa4\x92I%)$\x92IJI$\x92R\x92I\
+$\x94\xa4\x92I%)$\x92IJI$\x92R\x92\
+I$\x94\xa4\x5cj\x8d\xf9\x15R?=\xedo\xdeP\
+\x96\xaf\xd5\xcco[?\xd5#\xdbCK\xbf\xb4}\xad\
+Ra\x87\xb9\x92\x10\xeeG\xd9\xd51\x1cR\x03\xb9z\
+\xa4\xe9$\xb7[\xaaI$\x92R\x92I$\x94\xa4\x92\
+I%)$\x92IJI$\x92R\x92I$\x94\xa5\
+S\xab\x7f\xc9\xb9?\xf1e[U:\xb7\xfc\x9b\x93\xff\
+\x00\x16S2\xff\x007?\xee\x9f\xc9\x12\xf9O\x91x\
+\xb4\xc9\xd3,\x16\x92\x92I$\x94\xa4\x92I%)$\
+\x92IJI$\x92R\x92I$\x94\xa4\x92I%)\
+$\x92IJI$\x92S\xad\xd0z\xa0\xc3\xb7\xec\xd7\
+\x98\xa6\xd3\xa1<5\xde?\x02\xba\xa5\xe7\xebo\xa4\xf5\
+\xe3\x8e\xd6\xe3f\xcb\xaa\x1a2\xceKG\x81\xf1\x0a\xff\
+\x00%\xcd\x88\x0fk!\xa8\xfe\x8c\xbbx\x1f\x06l9\
+k\xd3-\xba\x17\xa5IB\xbbk\xb9\x82\xca\x9c\x1e\xd7\
+p\xe6\x99\x0akH\x1b\xd46\x14\x92I$\xa5$\x92\
+I)\xcc\xfa\xc3\xff\x00%\xbf\xfa\xcc\xff\x00\xaa\x0b\x92\
+]o\xd6\x1f\xf9-\xff\x00\xd6g\xfdP\x5c\x92\xca\xf8\
+\x8f\xf3\xc3\xfb\x83\xf3-l\xff\x00?\xd1I$\x92\xa6\
+\xc4\xa4\x92I%)$\x92IJI$\x92R\x92I\
+$\x94\xa4\x92I%)$\x92IJI$\x92R\x92\
+I$\x94\xa5\xd6\xf4\x0c3\x8b\x82\x1e\xf1\x16_\xefw\
+\x90\xfc\xd1\xf7,.\x8b\xd3\x8e~P/\x1f\xa1\xaa\x1d\
+g\x9f\x83~k\xb0Z\x1f\x0e\xc3\xbec\xe5\x1f\xda\x7f\
+c>\x08~\x91\xfa)$\x92Z,\xeaI$\x92R\
+\x92I$\x94\xa4\x92I%)$\x92IJI$\x92\
+R\x92I$\x94\xa5S\xab\x7f\xc9\xb9?\xf1e[U\
+:\xb7\xfc\x9b\x93\xff\x00\x16S2\xff\x007?\xee\x9f\
+\xc9\x12\xf9O\x91x\xb4\xc9\xd3,\x16\x92\x92I$\x94\
+\xa4\x92I%)$\x92IJI$\x92R\x92I$\
+\x94\xa4\x92I%)$\x92IJI$\x92R\x92I\
+$\x94\x9b\x1b3'\x11\xdb\xb1\xacug\xb8\x1c\x1f\x88\
+:-Z>\xb4d\xb0E\xf52\xcf6\x92\xc3\xff\x00\
+~X\x89)q\xe7\xcb\x8b\xe4\x99\x03\xb6\xe3\xec:.\
+\x8c\xe5\x1d\x8d=3>\xb4\xe1\x91\xef\xaa\xd6\x9f-\xa4\
+\x7f\xd5\x05?\xf9\xcd\xd3\xff\x00v\xdf\xf3G\xfeIr\
+\xc9)G\xc43\xf7\x07\xe8\xbb\xdf\x9f\x83\xd2\xbf\xebN\
+(\xfen\x9b\x1c|\xf6\xb7\xfe\xfc\xe5^\xcf\xadV\x9f\
+\xe6\xb1\xda\xdf\xeb8\xbb\xf2\x06\xac$\x90<\xf70\x7f\
+N\xbc\x80Q\xcd3\xd5\xd0\xcd\xeby\x99\xd5\x1a-\x0c\
+k\x09\x04\x86\x83\xdb^\xe4\xac\xf4\x92PO$\xb2\x1e\
+)\x93#\xe2\xb0\xc8\xc8\xd96\xa4\x92I5\x0aI$\
+\x92R\x92I$\x94\xa4\x92I%)$\x92IJI\
+$\x92R\x92I$\x94\xa4\x92I%)\x1f\x0f\x0e\xec\
+\xeb\xc5\x14\x09'W8\xf0\xd1\xe2U\x9e\x9f\xd1\xb2\xf3\
+\x88tzT\xf7\xb1\xc3\x91\xfc\x91\xddu\x18XX\xf8\
+\x14\xfaT6;\xb9\xc7\x97\x1f\x12U\xae[\x93\x96b\
+%0c\x0f\xc4\xf9\x7f\x16Lx\x8c\xb5:\x05\xf0\xb0\
+\xea\xc1\xc7n=<\x0dK\x8f.=\xc9GI%\xad\
+\x18\x88\x81\x10(\x0d\x83h\x0a\x14\x14\x92I\x22\xa5$\
+\x92I)I$\x92JRI$\x92\x94\x92I$\xa5\
+$\x92I)I$\x92JR\xa9\xd5\xbf\xe4\xdc\x9f\xf8\
+\xb2\xad\xaa\x9d[\xfeM\xc9\xff\x00\x8b)\x99\x7f\x9b\x9f\
+\xf7O\xe4\x89|\xa7\xc8\xbcZd\xe9\x96\x0bII$\
+\x92JRI$\x92\x94\x92I$\xa5$\x92I)I\
+$\x92JRI$\x92\x94\x92I$\xa5$\x92I)\
+I$\x92JRI$\x92\x94\x92I$\xa5$\x92I\
+)I$\x92JRI$\x92\x94\x92I$\xa5$\x97\
+\x1c\xa2W\x8f\x91w\xf3U=\xfemi(\x80N\x80\
+Z\x91\xa4\xaf\xd7\xd1:\x9d\xbcPZ<^C\x7f)\
+\x95j\xaf\xaa\xf9\x8e\xfev\xda\xd9\xf0\x97\x1f\xc8\xd5$\
+yl\xd3\xdb\x1c\xbe\xa2\xbf5\xc3\x1c\xce\xd1.2K\
+\xa4\xaf\xea\xb5\x03\xf9\xdb\xde\xef\xea\x80\xdf\xcb\xb9Z\xab\
+\xea\xff\x00K\xaf\x9a\x8d\x87\xc5\xee'\xf0\x04\x0f\xc1M\
+\x1f\x87\xe7\x96\xfc1\xf3?\xc2\xd7\x0c\x13=\x83\xc8\xa2\
+\xd7\x8d\x91w\xf35>\xcf\xea4\xbb\xf2\x05\xdaW\x85\
+\x87O\xf3TV\xcf\x83B:\x96?\x0c\xfd\xec\x9f`\
+\xfe\xd5\xe3\x97\xef'\x8e\xab\xa1\xf5K\x7f\xc0\x96\x0f\x17\
+\x90?\x09\x95n\xbf\xaa\xf9\x8e\xfev\xca\xd8<\xa5\xc7\
+\xf2\x05\xd3$\xa6\x8f\xc3\xf0\x8d\xf8\xa5\xe6\x7f\x82\xe1\x82\
+\x03\xb9p\xea\xfa\xad\x8e?\x9e\xb9\xef\xfe\xa8\x0d\x1f\x8e\
+\xe5\x7f\x1b\xa3t\xecR\x1c\xca\x83\x9c8s\xfd\xc7\xf1\
+\xd1]IM\x0e[\x0c5\x8c\x07\xe7\xf9\xaf\x18\xe06\
+\x01I$\x92\x95r\x92I$\x94\xa4\x92I%)$\
+\x92IJI$\x92R\x92I$\x94\xa4\x92I%)\
+$\x92IJI$\x92R\x95N\xad\xff\x00&\xe4\xff\
+\x00\xc5\x95mT\xea\xdf\xf2nO\xfcYL\xcb\xfc\xdc\
+\xff\x00\xba\x7f$K\xe5>E\xe2\xd3'L\xb0ZJ\
+I$\x92R\x92I$\x94\xa4\x92I%)$\x92I\
+JI$\x92R\x92I$\x94\xa4\x92I%)$\x92\
+IJI$\x92R\x92I\x12\xba/\xbb\xf9\x9a\xdfg\
+\xf5ZO\xe4D\x02t\x1a\xa9\x1aJ\xf5}\x17\xa9\xdb\
+\xc5\x0e\x1f\xd6!\xbf\xf5D+u}X\xcdw\xf3\xb6\
+WX\xf2\x97\x1f\xc8\x07\xe2\xa4\x8f-\x9a{c\x97\xd9\
+_\x9a\xe1\x8egh\x97\x19%\xd1\xd7\xf5Z\x81\xfc\xed\
+\xeew\xf5@o\xe5\xdc\xad\xd5\xf5\x7f\xa6W\xcdf\xc3\
+\xe2\xf7\x1f\xc8\xd8\x0ah\xfc?<\xb7\x11\x8f\x99\xfe\x16\
+\xb8`\x99\xec\x1eE\x12\xbc{\xee1Uoy\xfeK\
+K\xbf ]\xadX8T\xff\x005Em\xf84\x7f\
+r4\x01\xa0R\xc7\xe1\x87\xf4\xb2}\x83\xfbW\x8e_\
+\xbc\x9e>\xae\x89\xd5-\xe2\x82\xd1\xe2\xf2\x1b\xf8\x13*\
+\xd5\x7fV3]\xfc\xe5\x95\xb3\xe1.?\x90.\x9d%\
+4~\x1d\x84ne/3\xfc\x17\x0c\x10\x1b\xd9p\xea\
+\xfa\xad@\xfez\xf7\xbf\xfa\x807\xf2\xefV\xab\xfa\xbf\
+\xd2\xeb\xe6\xb2\xf3\xfc\xa7\x13\xf9!i$\xa5\x8f+\x82\
+;c\x8f\xd7\xd5\xf9\xae\x18\xe0?D \xab\x07\x0e\x8d\
+j\xa2\xb6\x11\xdc4O\xdf\xca:I)DDt\x00\
+\x0f%\xe0\x01\xb2\x92I$T\xa4\x92I%)$\x92\
+IJI$\x92R\x92I$\x94\xa4\x92I%)$\
+\x92IJI$\x92R\x92I$\x94\xa4\x92I%)\
+$\x92IJI$\x92R\x92I$\x94\xa4\x92I%\
+)T\xea\xdf\xf2nO\xfcYV\xd5N\xad\xff\x00&\
+\xe4\xff\x00\xc5\x94\xcc\xbf\xcd\xcf\xfb\xa7\xf2D\xbeS\xe4\
+^-2t\xcb\x05\xa4\xa4\x92I%)$\x92IJ\
+I$\x92R\x92IN\xban\xbbJku\x9f\xd4i\
+w\xe4D\x02t\x1a\xa9\x82J\xf5}\x17\xa9\xdb\xf4h\
+p\xfe\xb47\xfe\xa8\x85j\xaf\xab\x19\xcf\x83c\xeb\xac\
+|K\x8f\xe0\x00\xfcT\x91\xe5\xf3Klr\xfb+\xf3\
+\x5c1\xcc\xed\x12\xe3\xa4\xba:\xfe\xaa\xd2?\x9e\xbd\xce\
+\xfe\xabC\x7f.\xe5j\xbf\xab\xdd2\xbf\xa4\xc7Y\xfd\
+w\x1f\xfb\xee\xd54~\x1f\x9e[\x88\xc7\xcc\xff\x00\x0b\
+\x5c0L\xf6\x0f$\x89]\x17Zb\xaa\xdc\xf3\xe0\xd6\
+\x93\xf9\x17iV\x06\x15?\xcdQ[|\xc3D\xfd\xe8\
+\xe0\x00 h\x14\xb1\xf8a\xfd,\x9f`^9~\xf2\
+x\xea\xba/S\xb7\x8a\x1c\xd1\xe2\xf2\x1b\xf88\xca\xb5\
+_\xd5\x8c\xe7\x7f8\xfa\xd9\xf3.?\x91u\x09)\xa3\
+\xf0\xec#s)}k\xf2\x5c0@oe\xc2\xab\xea\
+\xad#\xf9\xeb\xdc\xef&\x00\xdf\xcb\xbd[\xaf\xea\xf7K\
+\xaf\x9a\xdc\xf3\xfc\xa7\x1f\xe1\x0bI%,y\x5c\x11\xdb\
+\x1c~\xbe\xaf\xcdp\xc7\x01\xfa#\xf3k\xd5\x81\x85L\
+\x1a\xa8\xad\xa4w\xda'\xef\xe5XI%(\x88\x8e\x80\
+\x01\xe5\xa2\xf0\x00\xd9I$\x92*RI$\x92\x94\x92\
+I$\xa5$\x92I)I$\x92JRI$\x92\x94\
+\x92I$\xa5$\x92I)I$\x92JRI$\x92\
+\x94\x92I$\xa5$\x92I)I$\x92JRI$\
+\x92\x94\x92I$\xa5$\x92I)I$\x92JRI\
+$\x92\x94\x92I$\xa5$\x92I)J\xa7V\xff\x00\
+\x93r\x7f\xe2\xca\xb6\x83\x99A\xc9\xc5\xb7\x1d\xa44\xd8\
+\xd2\xd0OiM\xc8\x09\x84\x80\xdc\xc4\x8f\xc1\x12\xd4\x11\
+\xe0\xf0\xc9\x97E_\xd5Z\x86\xb7d9\xdf\xd5ho\
+\xe5.V\xeb\xfa\xbb\xd3+\xfaMu\x9f\xd6q\xff\x00\
+\xbe\xedYQ\xf8~yn\x04|\xcf\xf0\xb6\xb0\xc13\
+\xd8<\x92\x9b)\xb6\xd3\x15\xb1\xcf?\xc9\x04\xfeE\xda\
+\xd5\xd3\xf0i\xfej\x8a\xda|v\x89\xfb\xf9G\x00\x01\
+\x00@\xf2SG\xe1\x87\xf4\xb2\x0f\xa0^9~\xf2x\
+\xda\xba7S\xb7\xe8\xe3\xb9\xa3\xc5\xf0\xcf\xfa\xa2\x0a\xb7\
+_\xd5\x8c\xe7\x7f8\xfa\xd9\xf3'\xf8.\xa1%,~\
+\x1d\x84ne/\xad~K\x86\x08\x0d\xec\xb85}U\
+\xa8\x7f=\x90\xe3\xe4\xc6\x86\xfe.\xdc\xad\xd5\xf5{\xa6\
+W\xcb\x1da\xf1{\x8f\xf0\x85\xa6\x92\x9a<\xae\x08\xed\
+\x8c}}_\x9a\xe1\x8e\x03\xf4G\xe6\xd6\xaf\xa7`\xd3\
+\x1e\x9d\x15\x828;A?yV\x22\x13\xa4\xa5\x11\x8c\
+t\x88\x03\xc8R\xf0\x00\xdbE$\x92H\xa9I$\x92\
+JRI$\x92\x94\x92I$\xa5$\x92I)I$\
+\x92JRI$\x92\x94\x92I$\xa5$\x92I)I\
+$\x92JRI$\x92\x94\x92I$\xa5$\x92I)\
+I$\x92JRI$\x92\x94\x92I$\xa5$\x92I\
+)I$\x92JRI$\x92\x94\x92I$\xa5$\x92\
+I)I$\x92JRI$\x92\x9f\xff\xd9\x0aen\
+dstream \x0aendobj\x0a\
+\x0a32 0 obj\x0a\x0a<<\x0a/S\
+ /GoTo\x0a/D [11 0 \
+R /FitH 718]\x0a>>\x0a\
+endobj\x0a\x0a25 0 obj\
+\x0a\x0a<<\x0a/Type /Outl\
+ines\x0a/Count 1\x0a/F\
+irst 33 0 R\x0a/Las\
+t 33 0 R\x0a>>\x0aendo\
+bj\x0a\x0a33 0 obj\x0a\x0a<<\
+\x0a/A 32 0 R\x0a/Pare\
+nt 25 0 R\x0a/Title\
+ (the tiger)\x0a>>\x0a\
+endobj\x0a\x0a23 0 obj\
+\x0a\x0a<<\x0a/Subtype /X\
+ML\x0a/Length 4031\x0a\
+/Type /Metadata\x0a\
+>>\x0astream\x0a<?xpac\
+ket begin=\x22\xef\xbb\xbf\x22 \
+id=\x22W5M0MpCehiHz\
+reSzNTczkc9d\x22?>\x0a\
+<x:xmpmeta xmlns\
+:x=\x22adobe:ns:met\
+a/\x22 x:xmptk=\x22Ado\
+be XMP Core 4.0-\
+c316 44.253921, \
+Sun Oct 01 2006 \
+17:08:23\x22>\x0a <r\
+df:RDF xmlns:rdf\
+=\x22http://www.w3.\
+org/1999/02/22-r\
+df-syntax-ns#\x22>\x0a\
+ <rdf:Descr\
+iption rdf:about\
+=\x22\x22\x0a \
+xmlns:xap=\x22http:\
+//ns.adobe.com/x\
+ap/1.0/\x22>\x0a \
+ <xap:ModifyDa\
+te>2015-12-04T10\
+:43:58+01:00</xa\
+p:ModifyDate>\x0a \
+ <xap:Crea\
+teDate>2015-12-0\
+4T10:38:02+01:00\
+</xap:CreateDate\
+>\x0a <xap:\
+MetadataDate>201\
+5-12-04T10:43:58\
++01:00</xap:Meta\
+dataDate>\x0a \
+</rdf:Descriptio\
+n>\x0a <rdf:De\
+scription rdf:ab\
+out=\x22\x22\x0a \
+ xmlns:dc=\x22htt\
+p://purl.org/dc/\
+elements/1.1/\x22>\x0a\
+ <dc:for\
+mat>application/\
+pdf</dc:format>\x0a\
+ <dc:tit\
+le>\x0a \
+<rdf:Alt>\x0a \
+ <rdf:li\
+ xml:lang=\x22x-def\
+ault\x22>Test Docum\
+ent for Qt PDF r\
+endering</rdf:li\
+>\x0a </\
+rdf:Alt>\x0a \
+ </dc:title>\x0a \
+ <dc:descr\
+iption>\x0a \
+ <rdf:Alt>\x0a \
+ <rd\
+f:li xml:lang=\x22x\
+-default\x22>testin\
+g of portable do\
+cument format</r\
+df:li>\x0a \
+ </rdf:Alt>\x0a \
+ </dc:desc\
+ription>\x0a \
+ <dc:creator>\x0a \
+ <rdf:\
+Bag>\x0a \
+ <rdf:li>The \
+Qt Company</rdf:\
+li>\x0a \
+</rdf:Bag>\x0a \
+ </dc:creator\
+>\x0a <dc:s\
+ubject>\x0a \
+ <rdf:Bag>\x0a \
+ <rd\
+f:li>PDF</rdf:li\
+>\x0a \
+ <rdf:li>renderi\
+ng</rdf:li>\x0a \
+ <rdf:\
+li>search</rdf:l\
+i>\x0a \
+ <rdf:li>TOC</r\
+df:li>\x0a \
+ </rdf:Bag>\x0a \
+ </dc:subj\
+ect>\x0a </rdf\
+:Description>\x0a \
+ <rdf:Descrip\
+tion rdf:about=\x22\
+\x22\x0a xm\
+lns:xapMM=\x22http:\
+//ns.adobe.com/x\
+ap/1.0/mm/\x22>\x0a \
+ <xapMM:Doc\
+umentID>uuid:2b0\
+b68ee-0b1f-6045-\
+a8ea-7f7d134162e\
+f</xapMM:Documen\
+tID>\x0a <x\
+apMM:InstanceID>\
+uuid:36d03ad5-25\
+6c-474c-822b-42b\
+ac4cfe5ad</xapMM\
+:InstanceID>\x0a \
+ </rdf:Descrip\
+tion>\x0a <rdf\
+:Description rdf\
+:about=\x22\x22\x0a \
+ xmlns:pdf=\
+\x22http://ns.adobe\
+.com/pdf/1.3/\x22>\x0a\
+ <pdf:Ke\
+ywords>PDF, rend\
+ering, search, T\
+OC</pdf:Keywords\
+>\x0a </rdf:De\
+scription>\x0a </\
+rdf:RDF>\x0a</x:xmp\
+meta>\x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a\
+ \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \
+\x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a\
+ \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \x0a<?xpacket \
+end=\x22w\x22?>\x0aendstr\
+eam \x0aendobj\x0a\x0a26 \
+0 obj\x0a\x0a<<\x0a/Nums \
+[0 \x0a<<\x0a/P (\xfe\xff\x00Q\x00\
+t)\x0a>> 1 \x0a<<\x0a/S /\
+D\x0a>> 2 \x0a<<\x0a/S /r\
+\x0a>>]\x0a>>\x0aendobj\x0a\x0a\
+34 0 obj\x0a\x0a<<\x0a/Ke\
+ywords (PDF, ren\
+dering, search, \
+TOC)\x0a/ModDate (D\
+:20151204104358+\
+01'00')\x0a/Creatio\
+nDate (D:2015120\
+4103802+01'00')\x0a\
+/Subject (testin\
+g of portable do\
+cument format)\x0a/\
+Author (The Qt C\
+ompany)\x0a/Title (\
+Test Document fo\
+r Qt PDF renderi\
+ng)\x0a>>\x0aendobj\x0axr\
+ef\x0a0 35\x0a00000000\
+00 65535 f \x0a0000\
+000015 00000 n \x0a\
+0000000266 00000\
+ n \x0a0000051153 0\
+0000 n \x0a00000001\
+67 00000 n \x0a0000\
+052661 00000 n \x0a\
+0000048499 00000\
+ n \x0a0000048533 0\
+0000 n \x0a00000006\
+99 00000 n \x0a0000\
+001891 00000 n \x0a\
+0000011311 00000\
+ n \x0a0000011576 0\
+0000 n \x0a00000118\
+80 00000 n \x0a0000\
+051448 00000 n \x0a\
+0000011815 00000\
+ n \x0a0000048037 0\
+0000 n \x0a00000480\
+87 00000 n \x0a0000\
+048939 00000 n \x0a\
+0000050266 00000\
+ n \x0a0000050368 0\
+0000 n \x0a00000504\
+56 00000 n \x0a0000\
+053003 00000 n \x0a\
+0000052734 00000\
+ n \x0a0000071321 0\
+0000 n \x0a00000528\
+56 00000 n \x0a0000\
+071177 00000 n \x0a\
+0000075438 00000\
+ n \x0a0000053307 0\
+0000 n \x0a00000532\
+71 00000 n \x0a0000\
+056564 00000 n \x0a\
+0000053886 00000\
+ n \x0a0000053424 0\
+0000 n \x0a00000711\
+22 00000 n \x0a0000\
+071253 00000 n \x0a\
+0000075521 00000\
+ n \x0atrailer\x0a\x0a<<\x0a\
+/Info 34 0 R\x0a/ID\
+ [<4d817246d2ed4\
+7c78e1b455cf09ed\
+407> <086f96dd45\
+7c4bbca529ed1348\
+a1b7b0>]\x0a/Root 2\
+2 0 R\x0a/Size 35\x0a>\
+>\x0astartxref\x0a7577\
+5\x0a%%EOF\x0a\
+\x00\x00\x02\xa5\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 24 24\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#232629;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h\x0a style=\x22fil\
+l:currentColor;f\
+ill-opacity:1;st\
+roke:none\x22\x0a\x09d=\x22M\
+ 8 3 L 0.9433593\
+8 10.056641 L 0 \
+11 L 0.94335938 \
+11.943359 L 8 19\
+ L 20.333984 19 \
+L 22 19 L 22 3 L\
+ 20.333984 3 L 8\
+ 3 z M 11.320312\
+ 7 L 14 9.679687\
+5 L 16.679688 7 \
+L 18 8.3203125 L\
+ 15.320312 11 L \
+18 13.679688 L 1\
+6.679688 15 L 14\
+ 12.320312 L 11.\
+320312 15 L 10 1\
+3.679688 L 12.67\
+9688 11 L 10 8.3\
+203125 L 11.3203\
+12 7 z \x22\x0a cla\
+ss=\x22ColorScheme-\
+Text\x22\x0a trans\
+form=\x22translate(\
+1,1)\x22\x0a />\x0a</s\
+vg>\x0a\
+\x00\x00\x015\
+<\
+svg height=\x2224\x22 \
+width=\x2224\x22 xmlns\
+=\x22http://www.w3.\
+org/2000/svg\x22>\x0a \
+ <style type=\x22\
+text/css\x22 id=\x22cu\
+rrent-color-sche\
+me\x22>\x0a .Co\
+lorScheme-Text {\
+\x0a col\
+or:#232629;\x0a \
+ }\x0a </styl\
+e>\x0a <path d=\x22\
+M4.707 16L4 15.2\
+93l8-8 8 8-.707.\
+707L12 8.707\x22 cl\
+ass=\x22ColorScheme\
+-Text\x22 fill=\x22cur\
+rentColor\x22/>\x0a</s\
+vg>\x0a\
+\x00\x00\x02\x02\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 24 24\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#232629;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h style=\x22fill:cu\
+rrentColor;fill-\
+opacity:1;stroke\
+:none\x22\x0a d=\x22M\
+ 4.7070312 8 L 4\
+ 8.7070312 L 10.\
+125 14.832031 L \
+12 16.707031 L 1\
+3.875 14.832031 \
+L 20 8.7070312 L\
+ 19.292969 8 L 1\
+3.167969 14.125 \
+L 12 15.292969 L\
+ 10.832031 14.12\
+5 L 4.7070312 8 \
+z \x22\x0a class=\x22\
+ColorScheme-Text\
+\x22\x0a />\x0a</svg>\
+\x0a\
+\x00\x00\x02\x02\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 24 24\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#232629;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h style=\x22fill:cu\
+rrentColor;fill-\
+opacity:1;stroke\
+:none\x22\x0a d=\x22M\
+ 15.292969 4 L 9\
+.1679688 10.125 \
+L 7.2929688 12 L\
+ 9.1679688 13.87\
+5 L 15.292969 20\
+ L 16 19.292969 \
+L 9.875 13.16796\
+9 L 8.7070312 12\
+ L 9.875 10.8320\
+31 L 16 4.707031\
+2 L 15.292969 4 \
+z \x22\x0a class=\x22\
+ColorScheme-Text\
+\x22\x0a />\x0a</svg>\
+\x0a\
+\x00\x00\x02\xfd\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 viewBox=\x22\
+0 0 24 24\x22>\x0a <d\
+efs id=\x22defs3051\
+\x22>\x0a <style ty\
+pe=\x22text/css\x22 id\
+=\x22current-color-\
+scheme\x22>\x0a .\
+ColorScheme-Text\
+ {\x0a color\
+:#232629;\x0a \
+}\x0a </style>\
+\x0a </defs>\x0a <pat\
+h style=\x22fill:cu\
+rrentColor;fill-\
+opacity:1;stroke\
+:none\x22\x0a d=\x22M\
+ 4 4 L 4 11 L 5 \
+11 L 5 5 L 19 5 \
+L 19 19 L 13 19 \
+L 13 20 L 20 20 \
+L 20 19 L 20 5 L\
+ 20 4 L 5 4 L 4 \
+4 z M 15.292969 \
+8 L 12 11.292969\
+ L 12 9 L 11 9 L\
+ 11 13 L 12 13 L\
+ 15 13 L 15 12 L\
+ 12.707031 12 L \
+16 8.7070312 L 1\
+5.292969 8 z M 4\
+ 14 L 4 16 L 5 1\
+6 L 5 15 L 6 15 \
+L 6 14 L 4 14 z \
+M 8 14 L 8 15 L \
+9 15 L 9 16 L 10\
+ 16 L 10 14 L 8 \
+14 z M 4 18 L 4 \
+20 L 6 20 L 6 19\
+ L 5 19 L 5 18 L\
+ 4 18 z M 9 18 L\
+ 9 19 L 8 19 L 8\
+ 20 L 10 20 L 10\
+ 18 L 9 18 z \x22\x0a \
+ class=\x22Color\
+Scheme-Text\x22\x0a \
+ />\x0a</svg>\x0a\
+"
+
+qt_resource_name = b"\
+\x00\x09\
+\x0d\xcf \x82\
+\x00p\
+\x00d\x00f\x00v\x00i\x00e\x00w\x00e\x00r\
+\x00\x09\
+\x0alxC\
+\x00r\
+\x00e\x00s\x00o\x00u\x00r\x00c\x00e\x00s\
+\x00\x11\
+\x09\x02%\xc7\
+\x00z\
+\x00o\x00o\x00m\x00-\x00f\x00i\x00t\x00-\x00b\x00e\x00s\x00t\x00.\x00s\x00v\x00g\
+\
+\x00\x0b\
+\x03\x03\x96\xc7\
+\x00z\
+\x00o\x00o\x00m\x00-\x00i\x00n\x00.\x00s\x00v\x00g\
+\x00\x13\
+\x0a\xb9\xc5\x87\
+\x00e\
+\x00d\x00i\x00t\x00-\x00s\x00e\x00l\x00e\x00c\x00t\x00-\x00a\x00l\x00l\x00.\x00s\
+\x00v\x00g\
+\x00\x11\
+\x0e\xab>\xc7\
+\x00z\
+\x00o\x00o\x00m\x00-\x00o\x00r\x00i\x00g\x00i\x00n\x00a\x00l\x00.\x00s\x00v\x00g\
+\
+\x00\x15\
+\x0f!\xbe\x07\
+\x00g\
+\x00o\x00-\x00n\x00e\x00x\x00t\x00-\x00v\x00i\x00e\x00w\x00-\x00p\x00a\x00g\x00e\
+\x00.\x00s\x00v\x00g\
+\x00\x0d\
+\x01\x1c\xbc'\
+\x00e\
+\x00d\x00i\x00t\x00-\x00c\x00o\x00p\x00y\x00.\x00s\x00v\x00g\
+\x00\x12\
+\x01\xfcA\x87\
+\x00z\
+\x00o\x00o\x00m\x00-\x00f\x00i\x00t\x00-\x00w\x00i\x00d\x00t\x00h\x00.\x00s\x00v\
+\x00g\
+\x00\x11\
+\x01\xa6\xc9\x07\
+\x00d\
+\x00o\x00c\x00u\x00m\x00e\x00n\x00t\x00-\x00o\x00p\x00e\x00n\x00.\x00s\x00v\x00g\
+\
+\x00\x10\
+\x0c\xa1\x91\x87\
+\x00r\
+\x00o\x00t\x00a\x00t\x00e\x00-\x00r\x00i\x00g\x00h\x00t\x00.\x00s\x00v\x00g\
+\x00\x0f\
+\x0e\xc2?'\
+\x00r\
+\x00o\x00t\x00a\x00t\x00e\x00-\x00l\x00e\x00f\x00t\x00.\x00s\x00v\x00g\
+\x00\x08\
+\x0c\xa7Y\xe6\
+\x00t\
+\x00e\x00s\x00t\x00.\x00p\x00d\x00f\
+\x00\x0e\
+\x0d\x8b4g\
+\x00e\
+\x00d\x00i\x00t\x00-\x00c\x00l\x00e\x00a\x00r\x00.\x00s\x00v\x00g\
+\x00\x10\
+\x00\xe9\xe4\xe7\
+\x00g\
+\x00o\x00-\x00u\x00p\x00-\x00s\x00e\x00a\x00r\x00c\x00h\x00.\x00s\x00v\x00g\
+\x00\x12\
+\x0f:\x80G\
+\x00g\
+\x00o\x00-\x00d\x00o\x00w\x00n\x00-\x00s\x00e\x00a\x00r\x00c\x00h\x00.\x00s\x00v\
+\x00g\
+\x00\x19\
+\x0d\x16K\xa7\
+\x00g\
+\x00o\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00-\x00v\x00i\x00e\x00w\x00-\
+\x00p\x00a\x00g\x00e\x00.\x00s\x00v\x00g\
+\x00\x0c\
+\x06\xeb\x9ag\
+\x00z\
+\x00o\x00o\x00m\x00-\x00o\x00u\x00t\x00.\x00s\x00v\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x18\x00\x02\x00\x00\x00\x10\x00\x00\x00\x03\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x01\xec\x00\x00\x00\x00\x00\x01\x00\x01D\xb8\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x01\x00\x00\x0er\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x01B\x00\x00\x00\x00\x00\x01\x00\x00\x12\x1d\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x01\x18\x00\x00\x00\x00\x00\x01\x00\x00\x10B\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x00X\x00\x00\x00\x00\x00\x01\x00\x00\x03\x10\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x02t\x00\x00\x00\x00\x00\x01\x00\x01I\xfd\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x000\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x00t\x00\x00\x00\x00\x00\x01\x00\x00\x06r\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x01j\x00\x00\x00\x00\x00\x01\x00\x00\x13\xa7\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x01\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x16\xb2\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x02<\x00\x00\x00\x00\x00\x01\x00\x01G\xf7\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x01\xca\x00\x00\x00\x00\x00\x01\x00\x01B\x0f\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x09\xe4\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x01\x90\x00\x00\x00\x00\x00\x01\x00\x00\x15$\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x01\x00\x00\x0cl\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+\x00\x00\x02\x12\x00\x00\x00\x00\x00\x01\x00\x01E\xf1\
+\x00\x00\x01\x83\x17\xd5\xbe\xab\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/pdf/quickpdfviewer/resources/document-open.svg b/examples/pdf/quickpdfviewer/resources/document-open.svg
new file mode 100644
index 000000000..bf23123a3
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/document-open.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ </defs>
+ <path style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="m4 4v24h24l-1-1h-22v-13h5l3-3h14v16l1 1v-21h-10l-3-3z"
+ class="ColorScheme-Text"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/edit-clear.svg b/examples/pdf/quickpdfviewer/resources/edit-clear.svg
new file mode 100644
index 000000000..1c35aaf04
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/edit-clear.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ </defs>
+ <path
+ style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 8 3 L 0.94335938 10.056641 L 0 11 L 0.94335938 11.943359 L 8 19 L 20.333984 19 L 22 19 L 22 3 L 20.333984 3 L 8 3 z M 11.320312 7 L 14 9.6796875 L 16.679688 7 L 18 8.3203125 L 15.320312 11 L 18 13.679688 L 16.679688 15 L 14 12.320312 L 11.320312 15 L 10 13.679688 L 12.679688 11 L 10 8.3203125 L 11.320312 7 z "
+ class="ColorScheme-Text"
+ transform="translate(1,1)"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/edit-copy.svg b/examples/pdf/quickpdfviewer/resources/edit-copy.svg
new file mode 100644
index 000000000..9dd16877d
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/edit-copy.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ </defs>
+ <path
+ style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="m4 3v1 13h1 2 1v1 1h6l4-4v-1-7-1h-2v-3h-1-10-1m1 1h10v2h-7v1 9h-1-2v-12m4 3h8v7h-3-1v1 3h-4v-11"
+ class="ColorScheme-Text"
+ transform="translate(1,1)"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/edit-select-all.svg b/examples/pdf/quickpdfviewer/resources/edit-select-all.svg
new file mode 100644
index 000000000..5f21950a0
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/edit-select-all.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ </defs>
+ <path style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 4 4 L 4 5 L 4 8 L 5 8 L 5 5 L 8 5 L 8 4 L 5 4 L 4 4 z M 16 4 L 16 5 L 19 5 L 19 8 L 20 8 L 20 4 L 16 4 z M 6 6 L 6 11 L 11 11 L 11 6 L 6 6 z M 13 6 L 13 11 L 18 11 L 18 6 L 13 6 z M 7 7 L 10 7 L 10 10 L 7 10 L 7 7 z M 14 7 L 17 7 L 17 10 L 14 10 L 14 7 z M 6 13 L 6 18 L 11 18 L 11 13 L 6 13 z M 13 13 L 13 18 L 18 18 L 18 13 L 13 13 z M 7 14 L 10 14 L 10 17 L 7 17 L 7 14 z M 14 14 L 17 14 L 17 17 L 14 17 L 14 14 z M 4 16 L 4 20 L 5 20 L 8 20 L 8 19 L 5 19 L 5 16 L 4 16 z M 19 16 L 19 19 L 16 19 L 16 20 L 20 20 L 20 19 L 20 16 L 19 16 z "
+ class="ColorScheme-Text"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/go-down-search.svg b/examples/pdf/quickpdfviewer/resources/go-down-search.svg
new file mode 100644
index 000000000..ae17ab93b
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/go-down-search.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ </defs>
+ <path style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 4.7070312 8 L 4 8.7070312 L 10.125 14.832031 L 12 16.707031 L 13.875 14.832031 L 20 8.7070312 L 19.292969 8 L 13.167969 14.125 L 12 15.292969 L 10.832031 14.125 L 4.7070312 8 z "
+ class="ColorScheme-Text"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/go-next-view-page.svg b/examples/pdf/quickpdfviewer/resources/go-next-view-page.svg
new file mode 100644
index 000000000..e453ddbec
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/go-next-view-page.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ </defs>
+ <path style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 8.7070312 4 L 8 4.7070312 L 14.125 10.832031 L 15.292969 12 L 14.125 13.167969 L 8 19.292969 L 8.7070312 20 L 14.832031 13.875 L 16.707031 12 L 14.832031 10.125 L 8.7070312 4 z "
+ class="ColorScheme-Text"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/go-previous-view-page.svg b/examples/pdf/quickpdfviewer/resources/go-previous-view-page.svg
new file mode 100644
index 000000000..b032309e9
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/go-previous-view-page.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ </defs>
+ <path style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 15.292969 4 L 9.1679688 10.125 L 7.2929688 12 L 9.1679688 13.875 L 15.292969 20 L 16 19.292969 L 9.875 13.167969 L 8.7070312 12 L 9.875 10.832031 L 16 4.7070312 L 15.292969 4 z "
+ class="ColorScheme-Text"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/go-up-search.svg b/examples/pdf/quickpdfviewer/resources/go-up-search.svg
new file mode 100644
index 000000000..5cc155873
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/go-up-search.svg
@@ -0,0 +1,8 @@
+<svg height="24" width="24" xmlns="http://www.w3.org/2000/svg">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ <path d="M4.707 16L4 15.293l8-8 8 8-.707.707L12 8.707" class="ColorScheme-Text" fill="currentColor"/>
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/rotate-left.svg b/examples/pdf/quickpdfviewer/resources/rotate-left.svg
new file mode 100644
index 000000000..90ce53c9d
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/rotate-left.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
+ <g color="#000" font-weight="400" fill="#474747">
+ <path d="M2 9v1c0 .265.093.53.281.719l3.72 3.719 3.718-3.72c.188-.187.281-.453.281-.718V9H9c-.265 0-.53.093-.719.281l-2.28 2.281-2.282-2.28A1.015 1.015 0 0 0 3 9z"/>
+ <path d="M8.5 3A3.515 3.515 0 0 0 5 6.5V12h2V6.5C7 5.66 7.66 5 8.5 5H13V3z"/>
+ </g>
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/rotate-right.svg b/examples/pdf/quickpdfviewer/resources/rotate-right.svg
new file mode 100644
index 000000000..7383d1c84
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/rotate-right.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
+ <g font-weight="400" fill="#474747">
+ <path d="M3 3v2h4.5C8.34 5 9 5.66 9 6.5V12h2V6.5C11 4.579 9.421 3 7.5 3z"/>
+ <path d="M6 9h1c.257 0 .529.13.719.313L10 11.592l2.281-2.28C12.471 9.13 12.743 9 13 9h1v1c0 .31-.09.552-.281.75L10 14.406 6.281 10.75C6.091 10.552 6 10.31 6 10z"/>
+ </g>
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/test.pdf b/examples/pdf/quickpdfviewer/resources/test.pdf
new file mode 100644
index 000000000..0832dfbed
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/test.pdf
Binary files differ
diff --git a/examples/pdf/quickpdfviewer/resources/zoom-fit-best.svg b/examples/pdf/quickpdfviewer/resources/zoom-fit-best.svg
new file mode 100644
index 000000000..adf302621
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/zoom-fit-best.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#4d4d4d;
+ }
+ </style>
+ </defs>
+ <path style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 4 4 L 4 5 L 4 8 L 5 8 L 5 5 L 8 5 L 8 4 L 5 4 L 4 4 z M 12 4 L 10 6 L 14 6 L 12 4 z M 16 4 L 16 5 L 19 5 L 19 8 L 20 8 L 20 5 L 20 4 L 19 4 L 16 4 z M 7 7 L 7 17 L 17 17 L 17 7 L 7 7 z M 8 8 L 16 8 L 16 16 L 8 16 L 8 8 z M 6 10 L 4 12 L 6 14 L 6 10 z M 18 10 L 18 14 L 20 12 L 18 10 z M 4 16 L 4 19 L 4 20 L 8 20 L 8 19 L 5 19 L 5 16 L 4 16 z M 19 16 L 19 19 L 16 19 L 16 20 L 20 20 L 20 19 L 20 16 L 19 16 z M 10 18 L 12 20 L 14 18 L 10 18 z "
+ class="ColorScheme-Text"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/zoom-fit-width.svg b/examples/pdf/quickpdfviewer/resources/zoom-fit-width.svg
new file mode 100644
index 000000000..985ee5205
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/zoom-fit-width.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#4d4d4d;
+ }
+ </style>
+ </defs>
+ <path style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 7 7 L 7 17 L 17 17 L 17 7 L 7 7 z M 8 8 L 16 8 L 16 16 L 8 16 L 8 8 z M 6 10 L 4 12 L 6 14 L 6 10 z M 18 10 L 18 14 L 20 12 L 18 10 z "
+ class="ColorScheme-Text"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/zoom-in.svg b/examples/pdf/quickpdfviewer/resources/zoom-in.svg
new file mode 100644
index 000000000..efdc9f17d
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/zoom-in.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ </defs>
+ <path style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 4 4 L 4 6 L 5 6 L 5 5 L 6 5 L 6 4 L 4 4 z M 9 4 L 9 5 L 11 5 L 11 4 L 9 4 z M 13 4 L 13 5 L 15 5 L 15 4 L 13 4 z M 18 4 L 18 5 L 19 5 L 19 6 L 20 6 L 20 4 L 18 4 z M 12 8 L 12 9 L 14.292969 9 L 11 12.292969 L 11.707031 13 L 15 9.7070312 L 15 12 L 16 12 L 16 8 L 15 8 L 12 8 z M 4 9 L 4 11 L 5 11 L 5 9 L 4 9 z M 19 9 L 19 11 L 20 11 L 20 9 L 19 9 z M 19 13 L 19 15 L 20 15 L 20 13 L 19 13 z M 4 14 L 4 20 L 10 20 L 10 14 L 4 14 z M 5 15 L 9 15 L 9 19 L 5 19 L 5 15 z M 19 18 L 19 19 L 18 19 L 18 20 L 20 20 L 20 18 L 19 18 z "
+ class="ColorScheme-Text"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/zoom-original.svg b/examples/pdf/quickpdfviewer/resources/zoom-original.svg
new file mode 100644
index 000000000..1b4080a03
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/zoom-original.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ </defs>
+ <path style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 4 4 L 4 5 L 4 7 L 5 7 L 5 5 L 7 5 L 7 4 L 5 4 L 4 4 z M 17 4 L 17 5 L 19 5 L 19 7 L 20 7 L 20 5 L 20 4 L 19 4 L 17 4 z M 6 6 L 6 18 L 18 18 L 18 6 L 6 6 z M 7 7 L 17 7 L 17 17 L 7 17 L 7 7 z M 4 17 L 4 19 L 4 20 L 7 20 L 7 19 L 5 19 L 5 17 L 4 17 z M 19 17 L 19 19 L 17 19 L 17 20 L 20 20 L 20 17 L 19 17 z "
+ class="ColorScheme-Text"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/resources/zoom-out.svg b/examples/pdf/quickpdfviewer/resources/zoom-out.svg
new file mode 100644
index 000000000..fcde9e526
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/resources/zoom-out.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs id="defs3051">
+ <style type="text/css" id="current-color-scheme">
+ .ColorScheme-Text {
+ color:#232629;
+ }
+ </style>
+ </defs>
+ <path style="fill:currentColor;fill-opacity:1;stroke:none"
+ d="M 4 4 L 4 11 L 5 11 L 5 5 L 19 5 L 19 19 L 13 19 L 13 20 L 20 20 L 20 19 L 20 5 L 20 4 L 5 4 L 4 4 z M 15.292969 8 L 12 11.292969 L 12 9 L 11 9 L 11 13 L 12 13 L 15 13 L 15 12 L 12.707031 12 L 16 8.7070312 L 15.292969 8 z M 4 14 L 4 16 L 5 16 L 5 15 L 6 15 L 6 14 L 4 14 z M 8 14 L 8 15 L 9 15 L 9 16 L 10 16 L 10 14 L 8 14 z M 4 18 L 4 20 L 6 20 L 6 19 L 5 19 L 5 18 L 4 18 z M 9 18 L 9 19 L 8 19 L 8 20 L 10 20 L 10 18 L 9 18 z "
+ class="ColorScheme-Text"
+ />
+</svg>
diff --git a/examples/pdf/quickpdfviewer/viewer.qml b/examples/pdf/quickpdfviewer/viewer.qml
new file mode 100644
index 000000000..998c41d20
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/viewer.qml
@@ -0,0 +1,307 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Dialogs
+import QtQuick.Layouts
+import QtQuick.Pdf
+
+ApplicationWindow {
+ id: root
+ width: 800
+ height: 1024
+ color: "lightgrey"
+ title: document.title
+ visible: true
+ required property url source // for main.py
+ property real scaleStep: Math.sqrt(2)
+
+ header: ToolBar {
+ RowLayout {
+ anchors.fill: parent
+ anchors.rightMargin: 6
+ ToolButton {
+ action: Action {
+ shortcut: StandardKey.Open
+ icon.source: "qrc:/pdfviewer/resources/document-open.svg"
+ onTriggered: fileDialog.open()
+ }
+ }
+ ToolButton {
+ action: Action {
+ shortcut: StandardKey.ZoomIn
+ enabled: view.sourceSize.width < 10000
+ icon.source: "qrc:/pdfviewer/resources/zoom-in.svg"
+ onTriggered: view.renderScale *= root.scaleStep
+ }
+ }
+ ToolButton {
+ action: Action {
+ shortcut: StandardKey.ZoomOut
+ enabled: view.sourceSize.width > 50
+ icon.source: "qrc:/pdfviewer/resources/zoom-out.svg"
+ onTriggered: view.renderScale /= root.scaleStep
+ }
+ }
+ ToolButton {
+ action: Action {
+ icon.source: "qrc:/pdfviewer/resources/zoom-fit-width.svg"
+ onTriggered: view.scaleToWidth(root.contentItem.width, root.contentItem.height)
+ }
+ }
+ ToolButton {
+ action: Action {
+ icon.source: "qrc:/pdfviewer/resources/zoom-fit-best.svg"
+ onTriggered: view.scaleToPage(root.contentItem.width, root.contentItem.height)
+ }
+ }
+ ToolButton {
+ action: Action {
+ shortcut: "Ctrl+0"
+ icon.source: "qrc:/pdfviewer/resources/zoom-original.svg"
+ onTriggered: view.resetScale()
+ }
+ }
+ ToolButton {
+ action: Action {
+ shortcut: "Ctrl+L"
+ icon.source: "qrc:/pdfviewer/resources/rotate-left.svg"
+ onTriggered: view.pageRotation -= 90
+ }
+ }
+ ToolButton {
+ action: Action {
+ shortcut: "Ctrl+R"
+ icon.source: "qrc:/pdfviewer/resources/rotate-right.svg"
+ onTriggered: view.pageRotation += 90
+ }
+ }
+ ToolButton {
+ action: Action {
+ icon.source: "qrc:/pdfviewer/resources/go-previous-view-page.svg"
+ enabled: view.backEnabled
+ onTriggered: view.back()
+ }
+ ToolTip.visible: enabled && hovered
+ ToolTip.delay: 2000
+ ToolTip.text: "go back"
+ }
+ SpinBox {
+ id: currentPageSB
+ from: 1
+ to: document.pageCount
+ editable: true
+ value: view.currentPage + 1
+ onValueModified: view.goToPage(value - 1)
+ Shortcut {
+ sequence: StandardKey.MoveToPreviousPage
+ onActivated: view.goToPage(currentPageSB.value - 2)
+ }
+ Shortcut {
+ sequence: StandardKey.MoveToNextPage
+ onActivated: view.goToPage(currentPageSB.value)
+ }
+ }
+ ToolButton {
+ action: Action {
+ icon.source: "qrc:/pdfviewer/resources/go-next-view-page.svg"
+ enabled: view.forwardEnabled
+ onTriggered: view.forward()
+ }
+ ToolTip.visible: enabled && hovered
+ ToolTip.delay: 2000
+ ToolTip.text: "go forward"
+ }
+ ToolButton {
+ action: Action {
+ shortcut: StandardKey.SelectAll
+ icon.source: "qrc:/pdfviewer/resources/edit-select-all.svg"
+ onTriggered: view.selectAll()
+ }
+ }
+ ToolButton {
+ action: Action {
+ shortcut: StandardKey.Copy
+ icon.source: "qrc:/pdfviewer/resources/edit-copy.svg"
+ enabled: view.selectedText !== ""
+ onTriggered: view.copySelectionToClipboard()
+ }
+ }
+ Shortcut {
+ sequence: StandardKey.Find
+ onActivated: searchField.forceActiveFocus()
+ }
+ Shortcut {
+ sequence: StandardKey.Quit
+ onActivated: Qt.quit()
+ }
+ }
+ }
+
+ FileDialog {
+ id: fileDialog
+ title: "Open a PDF file"
+ nameFilters: [ "PDF files (*.pdf)" ]
+ onAccepted: document.source = selectedFile
+ }
+
+ Dialog {
+ id: passwordDialog
+ title: "Password"
+ standardButtons: Dialog.Ok | Dialog.Cancel
+ modal: true
+ closePolicy: Popup.CloseOnEscape
+ anchors.centerIn: parent
+ width: 300
+
+ contentItem: TextField {
+ id: passwordField
+ placeholderText: qsTr("Please provide the password")
+ echoMode: TextInput.Password
+ width: parent.width
+ onAccepted: passwordDialog.accept()
+ }
+ onOpened: function() { passwordField.forceActiveFocus() }
+ onAccepted: document.password = passwordField.text
+ }
+
+ Dialog {
+ id: errorDialog
+ title: "Error loading " + document.source
+ standardButtons: Dialog.Close
+ modal: true
+ closePolicy: Popup.CloseOnEscape
+ anchors.centerIn: parent
+ width: 300
+ visible: document.status === PdfDocument.Error
+
+ contentItem: Label {
+ id: errorField
+ text: document.error
+ }
+ }
+
+ PdfScrollablePageView {
+ id: view
+ anchors.fill: parent
+ anchors.leftMargin: searchDrawer.position * searchDrawer.width
+ document: PdfDocument {
+ id: document
+ source: Qt.resolvedUrl(root.source)
+ onPasswordRequired: passwordDialog.open()
+ }
+ searchString: searchField.text
+ }
+
+ Drawer {
+ id: searchDrawer
+ edge: Qt.LeftEdge
+// modal: false
+// dim: false // commented out as workaround for QTBUG-83859
+ width: 300
+ y: root.header.height
+ height: view.height
+ clip: true
+ ListView {
+ id: searchResultsList
+ anchors.fill: parent
+ anchors.margins: 2
+ model: view.searchModel
+ currentIndex: view.searchModel.currentResult
+ ScrollBar.vertical: ScrollBar { }
+ delegate: ItemDelegate {
+ id: resultDelegate
+ required property int index
+ required property int page
+ required property string contextBefore
+ required property string contextAfter
+ width: parent ? parent.width : 0
+ RowLayout {
+ anchors.fill: parent
+ spacing: 0
+ Label {
+ text: "Page " + (resultDelegate.page + 1) + ": "
+ }
+ Label {
+ text: resultDelegate.contextBefore
+ elide: Text.ElideLeft
+ horizontalAlignment: Text.AlignRight
+ Layout.fillWidth: true
+ Layout.preferredWidth: parent.width / 2
+ }
+ Label {
+ font.bold: true
+ text: view.searchString
+ width: implicitWidth
+ }
+ Label {
+ text: resultDelegate.contextAfter
+ elide: Text.ElideRight
+ Layout.fillWidth: true
+ Layout.preferredWidth: parent.width / 2
+ }
+ }
+ highlighted: ListView.isCurrentItem
+ onClicked: view.searchModel.currentResult = resultDelegate.index
+ }
+ }
+ }
+
+ footer: ToolBar {
+ height: footerRow.implicitHeight
+ RowLayout {
+ id: footerRow
+ anchors.fill: parent
+ ToolButton {
+ action: Action {
+ icon.source: "qrc:/pdfviewer/resources/go-up-search.svg"
+ shortcut: StandardKey.FindPrevious
+ onTriggered: view.searchBack()
+ }
+ ToolTip.visible: enabled && hovered
+ ToolTip.delay: 2000
+ ToolTip.text: "find previous"
+ }
+ TextField {
+ id: searchField
+ placeholderText: "search"
+ Layout.minimumWidth: 150
+ Layout.maximumWidth: 300
+ Layout.fillWidth: true
+ onAccepted: searchDrawer.open()
+ Image {
+ visible: searchField.text !== ""
+ source: "qrc:/pdfviewer/resources/edit-clear.svg"
+ anchors {
+ right: parent.right
+ top: parent.top
+ bottom: parent.bottom
+ margins: 3
+ rightMargin: 5
+ }
+ TapHandler {
+ onTapped: searchField.clear()
+ }
+ }
+ }
+ ToolButton {
+ action: Action {
+ icon.source: "qrc:/pdfviewer/resources/go-down-search.svg"
+ shortcut: StandardKey.FindNext
+ onTriggered: view.searchForward()
+ }
+ ToolTip.visible: enabled && hovered
+ ToolTip.delay: 2000
+ ToolTip.text: "find next"
+ }
+ Label {
+ Layout.fillWidth: true
+ property size implicitPointSize: document.pagePointSize(view.currentPage)
+ text: "page " + (view.currentPage + 1) + " of " + document.pageCount +
+ " scale " + view.renderScale.toFixed(2) +
+ " original " + implicitPointSize.width.toFixed(1) + "x" + implicitPointSize.height.toFixed(1) + "pts"
+ visible: document.status === PdfDocument.Ready
+ }
+ }
+ }
+}
diff --git a/examples/pdf/quickpdfviewer/viewer.qrc b/examples/pdf/quickpdfviewer/viewer.qrc
new file mode 100644
index 000000000..3f5fae9f7
--- /dev/null
+++ b/examples/pdf/quickpdfviewer/viewer.qrc
@@ -0,0 +1,20 @@
+<RCC>
+ <qresource prefix="/pdfviewer">
+ <file>resources/document-open.svg</file>
+ <file>resources/edit-clear.svg</file>
+ <file>resources/edit-copy.svg</file>
+ <file>resources/edit-select-all.svg</file>
+ <file>resources/go-down-search.svg</file>
+ <file>resources/go-next-view-page.svg</file>
+ <file>resources/go-previous-view-page.svg</file>
+ <file>resources/go-up-search.svg</file>
+ <file>resources/rotate-left.svg</file>
+ <file>resources/rotate-right.svg</file>
+ <file>resources/test.pdf</file>
+ <file>resources/zoom-in.svg</file>
+ <file>resources/zoom-fit-best.svg</file>
+ <file>resources/zoom-fit-width.svg</file>
+ <file>resources/zoom-original.svg</file>
+ <file>resources/zoom-out.svg</file>
+ </qresource>
+</RCC>
diff --git a/examples/pdfwidgets/pdfviewer/doc/pdfviewer.rst b/examples/pdfwidgets/pdfviewer/doc/pdfviewer.rst
new file mode 100644
index 000000000..1e90c85b3
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/doc/pdfviewer.rst
@@ -0,0 +1,5 @@
+PDF Viewer Example
+==================
+
+The PDF Viewer example demonstrates how to use the QPdfView class to render
+PDF documents and the QPdfPageNavigator class to navigate them.
diff --git a/examples/pdfwidgets/pdfviewer/images/document-open.svgz b/examples/pdfwidgets/pdfviewer/images/document-open.svgz
new file mode 100644
index 000000000..5ddde5981
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/images/document-open.svgz
Binary files differ
diff --git a/examples/pdfwidgets/pdfviewer/images/go-next-view-page.svgz b/examples/pdfwidgets/pdfviewer/images/go-next-view-page.svgz
new file mode 100644
index 000000000..e7f7bece4
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/images/go-next-view-page.svgz
Binary files differ
diff --git a/examples/pdfwidgets/pdfviewer/images/go-next-view.svgz b/examples/pdfwidgets/pdfviewer/images/go-next-view.svgz
new file mode 100644
index 000000000..2f86541cc
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/images/go-next-view.svgz
Binary files differ
diff --git a/examples/pdfwidgets/pdfviewer/images/go-previous-view-page.svgz b/examples/pdfwidgets/pdfviewer/images/go-previous-view-page.svgz
new file mode 100644
index 000000000..f4df6df40
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/images/go-previous-view-page.svgz
Binary files differ
diff --git a/examples/pdfwidgets/pdfviewer/images/go-previous-view.svgz b/examples/pdfwidgets/pdfviewer/images/go-previous-view.svgz
new file mode 100644
index 000000000..688f55ffe
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/images/go-previous-view.svgz
Binary files differ
diff --git a/examples/pdfwidgets/pdfviewer/images/zoom-fit-best.svgz b/examples/pdfwidgets/pdfviewer/images/zoom-fit-best.svgz
new file mode 100644
index 000000000..0cb1b3074
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/images/zoom-fit-best.svgz
Binary files differ
diff --git a/examples/pdfwidgets/pdfviewer/images/zoom-fit-width.svgz b/examples/pdfwidgets/pdfviewer/images/zoom-fit-width.svgz
new file mode 100644
index 000000000..a467f6eae
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/images/zoom-fit-width.svgz
Binary files differ
diff --git a/examples/pdfwidgets/pdfviewer/images/zoom-in.svgz b/examples/pdfwidgets/pdfviewer/images/zoom-in.svgz
new file mode 100644
index 000000000..21d6c2ab2
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/images/zoom-in.svgz
Binary files differ
diff --git a/examples/pdfwidgets/pdfviewer/images/zoom-original.svgz b/examples/pdfwidgets/pdfviewer/images/zoom-original.svgz
new file mode 100644
index 000000000..afa79db19
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/images/zoom-original.svgz
Binary files differ
diff --git a/examples/pdfwidgets/pdfviewer/images/zoom-out.svgz b/examples/pdfwidgets/pdfviewer/images/zoom-out.svgz
new file mode 100644
index 000000000..b6db7a144
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/images/zoom-out.svgz
Binary files differ
diff --git a/examples/pdfwidgets/pdfviewer/images/zoom-previous.svgz b/examples/pdfwidgets/pdfviewer/images/zoom-previous.svgz
new file mode 100644
index 000000000..ad4c29215
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/images/zoom-previous.svgz
Binary files differ
diff --git a/examples/pdfwidgets/pdfviewer/main.py b/examples/pdfwidgets/pdfviewer/main.py
new file mode 100644
index 000000000..c4765fdda
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/main.py
@@ -0,0 +1,27 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from argparse import ArgumentParser, RawTextHelpFormatter
+
+from PySide6.QtWidgets import QApplication
+from PySide6.QtCore import QCoreApplication, QUrl
+
+from mainwindow import MainWindow
+
+"""PySide6 port of the pdfwidgets/pdfviewer example from Qt v6.x"""
+
+
+if __name__ == "__main__":
+ argument_parser = ArgumentParser(description="PDF Viewer",
+ formatter_class=RawTextHelpFormatter)
+ argument_parser.add_argument("file", help="The file to open",
+ nargs='?', type=str)
+ options = argument_parser.parse_args()
+
+ a = QApplication(sys.argv)
+ w = MainWindow()
+ w.show()
+ if options.file:
+ w.open(QUrl.fromLocalFile(options.file))
+ sys.exit(QCoreApplication.exec())
diff --git a/examples/pdfwidgets/pdfviewer/mainwindow.py b/examples/pdfwidgets/pdfviewer/mainwindow.py
new file mode 100644
index 000000000..d37475aca
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/mainwindow.py
@@ -0,0 +1,141 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import math
+import sys
+
+from PySide6.QtPdf import QPdfBookmarkModel, QPdfDocument
+from PySide6.QtPdfWidgets import QPdfView
+from PySide6.QtWidgets import (QDialog, QFileDialog, QMainWindow, QMessageBox,
+ QSpinBox)
+from PySide6.QtCore import QModelIndex, QPoint, QStandardPaths, QUrl, Slot
+
+from zoomselector import ZoomSelector
+from ui_mainwindow import Ui_MainWindow
+
+
+ZOOM_MULTIPLIER = math.sqrt(2.0)
+
+
+class MainWindow(QMainWindow):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.ui = Ui_MainWindow()
+ self.m_zoomSelector = ZoomSelector(self)
+ self.m_pageSelector = QSpinBox(self)
+ self.m_document = QPdfDocument(self)
+ self.m_fileDialog = None
+
+ self.ui.setupUi(self)
+
+ self.m_zoomSelector.setMaximumWidth(150)
+ self.ui.mainToolBar.insertWidget(self.ui.actionZoom_In, self.m_zoomSelector)
+
+ self.ui.mainToolBar.insertWidget(self.ui.actionForward, self.m_pageSelector)
+ self.m_pageSelector.valueChanged.connect(self.page_selected)
+ nav = self.ui.pdfView.pageNavigator()
+ nav.currentPageChanged.connect(self.m_pageSelector.setValue)
+ nav.backAvailableChanged.connect(self.ui.actionBack.setEnabled)
+ nav.forwardAvailableChanged.connect(self.ui.actionForward.setEnabled)
+
+ self.m_zoomSelector.zoom_mode_changed.connect(self.ui.pdfView.setZoomMode)
+ self.m_zoomSelector.zoom_factor_changed.connect(self.ui.pdfView.setZoomFactor)
+ self.m_zoomSelector.reset()
+
+ bookmark_model = QPdfBookmarkModel(self)
+ bookmark_model.setDocument(self.m_document)
+
+ self.ui.bookmarkView.setModel(bookmark_model)
+ self.ui.bookmarkView.activated.connect(self.bookmark_selected)
+
+ self.ui.tabWidget.setTabEnabled(1, False) # disable 'Pages' tab for now
+
+ self.ui.pdfView.setDocument(self.m_document)
+
+ self.ui.pdfView.zoomFactorChanged.connect(self.m_zoomSelector.set_zoom_factor)
+
+ @Slot(QUrl)
+ def open(self, doc_location):
+ if doc_location.isLocalFile():
+ self.m_document.load(doc_location.toLocalFile())
+ document_title = self.m_document.metaData(QPdfDocument.MetaDataField.Title)
+ self.setWindowTitle(document_title if document_title else "PDF Viewer")
+ self.page_selected(0)
+ self.m_pageSelector.setMaximum(self.m_document.pageCount() - 1)
+ else:
+ message = f"{doc_location} is not a valid local file"
+ print(message, file=sys.stderr)
+ QMessageBox.critical(self, "Failed to open", message)
+
+ @Slot(QModelIndex)
+ def bookmark_selected(self, index):
+ if not index.isValid():
+ return
+ page = index.data(int(QPdfBookmarkModel.Role.Page))
+ zoom_level = index.data(int(QPdfBookmarkModel.Role.Level))
+ self.ui.pdfView.pageNavigator().jump(page, QPoint(), zoom_level)
+
+ @Slot(int)
+ def page_selected(self, page):
+ nav = self.ui.pdfView.pageNavigator()
+ nav.jump(page, QPoint(), nav.currentZoom())
+
+ @Slot()
+ def on_actionOpen_triggered(self):
+ if not self.m_fileDialog:
+ directory = QStandardPaths.writableLocation(QStandardPaths.DocumentsLocation)
+ self.m_fileDialog = QFileDialog(self, "Choose a PDF", directory)
+ self.m_fileDialog.setAcceptMode(QFileDialog.AcceptOpen)
+ self.m_fileDialog.setMimeTypeFilters(["application/pdf"])
+ if self.m_fileDialog.exec() == QDialog.Accepted:
+ to_open = self.m_fileDialog.selectedUrls()[0]
+ if to_open.isValid():
+ self.open(to_open)
+
+ @Slot()
+ def on_actionQuit_triggered(self):
+ self.close()
+
+ @Slot()
+ def on_actionAbout_triggered(self):
+ QMessageBox.about(self, "About PdfViewer",
+ "An example using QPdfDocument")
+
+ @Slot()
+ def on_actionAbout_Qt_triggered(self):
+ QMessageBox.aboutQt(self)
+
+ @Slot()
+ def on_actionZoom_In_triggered(self):
+ factor = self.ui.pdfView.zoomFactor() * ZOOM_MULTIPLIER
+ self.ui.pdfView.setZoomFactor(factor)
+
+ @Slot()
+ def on_actionZoom_Out_triggered(self):
+ factor = self.ui.pdfView.zoomFactor() / ZOOM_MULTIPLIER
+ self.ui.pdfView.setZoomFactor(factor)
+
+ @Slot()
+ def on_actionPrevious_Page_triggered(self):
+ nav = self.ui.pdfView.pageNavigator()
+ nav.jump(nav.currentPage() - 1, QPoint(), nav.currentZoom())
+
+ @Slot()
+ def on_actionNext_Page_triggered(self):
+ nav = self.ui.pdfView.pageNavigator()
+ nav.jump(nav.currentPage() + 1, QPoint(), nav.currentZoom())
+
+ @Slot()
+ def on_actionContinuous_triggered(self):
+ cont_checked = self.ui.actionContinuous.isChecked()
+ mode = QPdfView.PageMode.MultiPage if cont_checked else QPdfView.PageMode.SinglePage
+ self.ui.pdfView.setPageMode(mode)
+
+ @Slot()
+ def on_actionBack_triggered(self):
+ self.ui.pdfView.pageNavigator().back()
+
+ @Slot()
+ def on_actionForward_triggered(self):
+ self.ui.pdfView.pageNavigator().forward()
diff --git a/examples/pdfwidgets/pdfviewer/mainwindow.ui b/examples/pdfwidgets/pdfviewer/mainwindow.ui
new file mode 100644
index 000000000..7cfcde4b3
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/mainwindow.ui
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>700</width>
+ <height>600</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>PDF Viewer</string>
+ </property>
+ <property name="unifiedTitleAndToolBarOnMac">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QWidget" name="widget" native="true">
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QSplitter" name="splitter">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="tabPosition">
+ <enum>QTabWidget::West</enum>
+ </property>
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <property name="documentMode">
+ <bool>false</bool>
+ </property>
+ <widget class="QWidget" name="bookmarkTab">
+ <attribute name="title">
+ <string>Bookmarks</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>2</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ <property name="rightMargin">
+ <number>2</number>
+ </property>
+ <property name="bottomMargin">
+ <number>2</number>
+ </property>
+ <item>
+ <widget class="QTreeView" name="bookmarkView">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="headerHidden">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="pagesTab">
+ <attribute name="title">
+ <string>Pages</string>
+ </attribute>
+ </widget>
+ </widget>
+ <widget class="QPdfView" name="pdfView" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>10</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menuBar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>700</width>
+ <height>23</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menuFile">
+ <property name="title">
+ <string>File</string>
+ </property>
+ <addaction name="actionOpen"/>
+ <addaction name="actionQuit"/>
+ </widget>
+ <widget class="QMenu" name="menuHelp">
+ <property name="title">
+ <string>Help</string>
+ </property>
+ <addaction name="actionAbout"/>
+ <addaction name="actionAbout_Qt"/>
+ </widget>
+ <widget class="QMenu" name="menuView">
+ <property name="title">
+ <string>View</string>
+ </property>
+ <addaction name="actionZoom_In"/>
+ <addaction name="actionZoom_Out"/>
+ <addaction name="actionPrevious_Page"/>
+ <addaction name="actionNext_Page"/>
+ <addaction name="separator"/>
+ <addaction name="actionContinuous"/>
+ </widget>
+ <addaction name="menuFile"/>
+ <addaction name="menuView"/>
+ <addaction name="menuHelp"/>
+ </widget>
+ <widget class="QToolBar" name="mainToolBar">
+ <property name="movable">
+ <bool>false</bool>
+ </property>
+ <property name="floatable">
+ <bool>false</bool>
+ </property>
+ <attribute name="toolBarArea">
+ <enum>TopToolBarArea</enum>
+ </attribute>
+ <attribute name="toolBarBreak">
+ <bool>false</bool>
+ </attribute>
+ <addaction name="actionOpen"/>
+ <addaction name="separator"/>
+ <addaction name="actionZoom_Out"/>
+ <addaction name="actionZoom_In"/>
+ <addaction name="separator"/>
+ <addaction name="actionBack"/>
+ <addaction name="actionForward"/>
+ </widget>
+ <widget class="QStatusBar" name="statusBar"/>
+ <action name="actionOpen">
+ <property name="icon">
+ <iconset theme="document-open" resource="resources.qrc">
+ <normaloff>:/icons/images/document-open.svgz</normaloff>:/icons/images/document-open.svgz</iconset>
+ </property>
+ <property name="text">
+ <string>Open...</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+O</string>
+ </property>
+ </action>
+ <action name="actionQuit">
+ <property name="icon">
+ <iconset theme="application-exit"/>
+ </property>
+ <property name="text">
+ <string>Quit</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+Q</string>
+ </property>
+ </action>
+ <action name="actionAbout">
+ <property name="icon">
+ <iconset theme="help-about"/>
+ </property>
+ <property name="text">
+ <string>About</string>
+ </property>
+ </action>
+ <action name="actionAbout_Qt">
+ <property name="text">
+ <string>About Qt</string>
+ </property>
+ </action>
+ <action name="actionZoom_In">
+ <property name="icon">
+ <iconset theme="zoom-in" resource="resources.qrc">
+ <normaloff>:/icons/images/zoom-in.svgz</normaloff>:/icons/images/zoom-in.svgz</iconset>
+ </property>
+ <property name="text">
+ <string>Zoom In</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl++</string>
+ </property>
+ </action>
+ <action name="actionZoom_Out">
+ <property name="icon">
+ <iconset theme="zoom-out" resource="resources.qrc">
+ <normaloff>:/icons/images/zoom-out.svgz</normaloff>:/icons/images/zoom-out.svgz</iconset>
+ </property>
+ <property name="text">
+ <string>Zoom Out</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+-</string>
+ </property>
+ </action>
+ <action name="actionPrevious_Page">
+ <property name="icon">
+ <iconset theme="go-previous-view-page" resource="resources.qrc">
+ <normaloff>:/icons/images/go-previous-view-page.svgz</normaloff>:/icons/images/go-previous-view-page.svgz</iconset>
+ </property>
+ <property name="text">
+ <string>Previous Page</string>
+ </property>
+ <property name="shortcut">
+ <string>PgUp</string>
+ </property>
+ </action>
+ <action name="actionNext_Page">
+ <property name="icon">
+ <iconset theme="go-next-view-page" resource="resources.qrc">
+ <normaloff>:/icons/images/go-next-view-page.svgz</normaloff>:/icons/images/go-next-view-page.svgz</iconset>
+ </property>
+ <property name="text">
+ <string>Next Page</string>
+ </property>
+ <property name="shortcut">
+ <string>PgDown</string>
+ </property>
+ </action>
+ <action name="actionContinuous">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>Continuous</string>
+ </property>
+ </action>
+ <action name="actionBack">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/icons/images/go-previous-view.svgz</normaloff>:/icons/images/go-previous-view.svgz</iconset>
+ </property>
+ <property name="text">
+ <string>Back</string>
+ </property>
+ <property name="toolTip">
+ <string>back to previous view</string>
+ </property>
+ </action>
+ <action name="actionForward">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/icons/images/go-next-view.svgz</normaloff>:/icons/images/go-next-view.svgz</iconset>
+ </property>
+ <property name="text">
+ <string>Forward</string>
+ </property>
+ <property name="toolTip">
+ <string>forward to next view</string>
+ </property>
+ </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+ <customwidget>
+ <class>QPdfView</class>
+ <extends>QWidget</extends>
+ <header location="global">qpdfview.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
+ <resources>
+ <include location="resources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/examples/pdfwidgets/pdfviewer/pdfviewer.pyproject b/examples/pdfwidgets/pdfviewer/pdfviewer.pyproject
new file mode 100644
index 000000000..cbd5f156f
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/pdfviewer.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "mainwindow.py", "zoomselector.py",
+ "mainwindow.ui","resources.qrc"]
+}
diff --git a/examples/pdfwidgets/pdfviewer/rc_resources.py b/examples/pdfwidgets/pdfviewer/rc_resources.py
new file mode 100644
index 000000000..7e386e99b
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/rc_resources.py
@@ -0,0 +1,3468 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.4.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x001G\
+\x1f\
+\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xec}\xebs\x1b\xc7\xb1\
+\xef\xe7\xe4\xaf\xe0U\xbeDU\xc0\xb0\xdf\x0f%\xce\xa9\
+\xc4\x8eS\xa9r\xea\xa4n\x1e\xf7\xdcO.\x88\x04%\
+\x1e\xd3\xa4\x0eI\xf9\x91\xbf\xfe\xee\x02$g!h\xb1\
+\x00\x16P$_s\x5c\xf2b\xb6\xb7{\xfa7==\
+=\xb33\xb3\xbf\xfd\x8f\x1f\xbe\xbd:\xf9n~{w\
+ys\xfd\xd93,\xf0\xecd~}vs~y\xfd\
+\xea\xb3g\xff\xf8\xfb\x97\xd3xvrw?\xbb>\x9f\
+]\xdd\x5c\xcf?{v}\xf3\xec?~\xf7\xcb\xdf\xfe\
+\xaf\xe9\xf4\xe4O\xf3\xeb\xf9\xed\xec\xfe\xe6\xf6\xc5\xc9\xef\
+\xcfo^\xceO\xfe|u\xf5\xf6\xee~\x91u\x82T\
+\xa0\xc0\xe4\xe4o\xff\xfc\xd3\xc9\x1f\x7fxss{\x7f\
+\xf2\xd7\xab\xb7\xaf\xa6\x7f\xbe>)\x8b\xcc\x7f.e\xbe\
+8\xb1\x02p\xf2\x87\xb7\x97W\xe7'\x8a\x22\xf1\xfc\xe4\
+d:mD\xdc}\xf7\xea\x97'''M\xf9\xae\xef\
+^\x5c\xdf}\xf6\xec\xf5\xfd\xfd\x9b\x17\xa7\xa7\xd7we\
+\xd6\x8a+g7\xdf\x9e\xfem\xf6\xdd\xfc\xcb\x9b\xdb\xff\
+3\x7fy\x8a\x05N\x9f\xd5'f\xef\x7f`Q\xd2F\
+\xfe?/\xe7\xdf\xcfo\xff\xf8\xc3\xfd\xfc\xba-\xc6\xdd\
+)\xaf>~\xb9\xe1\xf1\x8e\x9e\xa7\x08\xab\xcf\x9d\x9f=\
+=\xf8\xe6\xed\xedU\xb9\xb9}uz~v:\xbf\x9a\
+\x7f;\xbf\xbe\xbfkJ\x89]\xf2\xb3J~v;\x9f\
+\xdd_~7o\xc4|\xdb\x14\xa8}\xb2\x91\xfd\xab\x0e\
+\xf1\xed\xf9\xc5\x13\xf5\xf7\xdf\x7f_\xbe\xe7\x05\x11f\xe6\
+)\xd0)\xd1\xb4\xa1\x98\xde\xfdx}?\xfba\xba\xfa\
+h\x03\xe6\xfb\x1e%\x008m\xeeU\xca\xed\xa8^\xfc\
+puy\xfdMoa\x16w\xbb\xd2\x1b{zss\
+^1}\xcc(w7oo\xcf\xe6\x17\xcd\x93\xf3r\
+=\xbf?\xfd\xe2\xef_<\xdd\x9cB9\xbf?\xef\xb0\
+i\x98\xde\x9d\xcd\xde\xccW\xe4>f.\xf1\x9a};\
+\xbf{3;\x9b\xdf\x9d>\xe6\xb7\xcfw\x0d\x1c\x17\x19\
+\x97\xe7\x9f=\xfbj\xf6\xe3\xfc\xf6\xeb\xe5\xef\xef/\xcf\
+\xef_7\xb7)\x16?_\xcf/_\xbd\xbe\xaf\xbf\xbf\
+k\xac\xe5\x0f7?|\xf6\x0cN\xe0\x04)N\x1eo\
+\xdc4\x9c/\xaen\xbe\xff\xec\xd9w\x97w\x97/\xaf\
+\x96\xe2\xe6\xd7\xb3\xe6r\xfarv\xf6\xcd\xab\xdb\x9b\xb7\
+\xd7\x8d\xb0\xeb\xf9\xf7'\x9d\x87\x1f\xb5z\xd1\x96\xb6Q\
+\xe8\xcd\xed\xfcn~\xfb\xdd\xf2\xf1G\x00^<\x15\x1b\
+\x0a\xd3\xe2\xd6\xa3V\xdd[b\xabO\x9d\xdf\x9c58\
+4L_\xddL\xaf\xe7?\xdcO\xdf\xcc\x1at\x9b\xfa\
+\xfb\xd7\x1a\xdd\xcb\xd9]Cw\xfa\x8f\xbb\x86\xdb\xe9\xf9\
+\xec\xbb\xcb\xf3\xd3/\xe6w\xdf\xdc\xdf\xbc9\xbdk\xda\
+\xfc\xcb\x9b\x1fV\xa5\xde\xbc\xbd\x7f\xf3\xf6\xfe\xeby\xdb\
+l\x96\xe2\x1b\xd4k\x15,o/D=e\xae2\x98\
+/\x5c\xc1\xf4\xe2\xf2j\xbe,\xe3\xe9\xeb\x9bo\xe7\xa7\
+o.\xaf\x1b\xc8oo\x9a\x8b\xb3\xbb\xd3\x9b\x1f~|\
+5\xbf>m\x9e\xb8jq<\x9d\x9d\xdd/\x9a\xe8\x8a\
+>o\xae_\xbd\x97\xf5\x0f\xe7o\x1a;3/\xfa\xde\
+\xdb?\xd6\xdb\xbf\xfb\xed\xf9\xfc\xe2\xee\xd1\x1a\xdak\x84\
+6\xf7\xe9\x917\x0d*o\xe6gm\xa3\x5c\x01\xee\xfe\
+\xc7\xd6\x06W\xc9\xf8\xfc\x9d\xfay\xf3uc.S\x85\
+\x93\xc6\xc3A\xfb/\xae\x11\xfc\xd8\xd4^{\x03\x16\xf7\
+a\xed\xfe\xbf>{\xe6\xb0\xce`U\xec\xf4\xe6\xf6\xf2\
+\xd5eS\x13\xbc \x92J\xbaP\xab\xa3\x03!=;\
+9\xfd\xe9\xea\x87\xa6\x0b\xfd\xbe\x9d\xdd~3\xbf]\xe1\
+uw\x7fs\xf6MK\xfe\xfb\xdb\xdb\x9b\xef\xf1/\xf3\
+\xeb\xa5:\x0d\xef\xf9u\xd3\xcego\xefo\x16\x19\xb7\
+\xf3\x8b\xff\xdb\xb6)x\xfc\xf5_\xf5\xd7{\x9e\xbf\xbb\
+\xff\xf1\xaa\x81\xea\xd1\x0b\xbcxp\x02\xbfi\xac\xe8\xcd\
+\xec\xfeuK\xb2|\xae\xfd\xc5\xac\xfel\x99\xd5\xe4\xfc\
+\xe5\xa4\xed\x1f\xa1\xc0\xc9W'\xda\x5cMuq9E\
+*\xda\xc9^\xe4>\x91\xfe\xeb\xa4eP\x057\xed\xe8\
+jz\xfb\xf6\xaa1\xef\xef\xe6\xd77\xe7\xe7\xbfi\xfa\
+\xa5\x9bo\xe6/~\x05\x8b\xbf\x87\x9f\xd3\x85{{\x81\
+\x05\xde\xdc\xfff\x09\xcf\xb4\xe9\xd4o\xef_\x5c7\x9d\
+\xfao\x1ex6=\xda\xf5]\xe3\x8a\xbf\xfd\xecY\xdb\
+\xf4\xe6\xbf\x86\x22\xcfOno\xeeg\xf7\xf3_c\xc0\
+\xf3%\xc5\xd5\xe2'L\xe0\xf9\x02\xed\xd3%\xbf\xad`\
+_\xc8\x1c\x01|\xe5\xd0\x0b}\x1f\xf2\xf21\x22\xbf\x01\
+\xf8\xd1`\xffm4\xd8\x7f\xdb\x17l\x83O\x0bl\xea\
+\x82m{`\xfd\xd5H\x7f\xf2\xd5\xbe\xfe\x04?1\x7f\
+\x12\xbd\xfe\x84\x8a\xee\x03\xfch#\xffj_#\x97\xf8\
+\xb4\x8c<\x06\xe0>h\x5c\xb0\xe8\xd4e\xdf\xa0\x00)\
+\xea\xf3\x1bc\x82\x05\x8dP\xb1\xf6\xcf{\x03\x83\xf0\x85\
+\xa6\xcd\xa8d>\xbb\xfd\xd3\xed\xec\xbc5\x95\x15\xc6g\
+7WW\x0dqc>W\xdf\xcf~\xbc{\xe2\xb2\xfa\
+\x88!rc\x0e\x8d\x11\xbeY\xa9\xba6c\xda\xb0\xb8\
+\xb9\xad\x95\xd5f\xdd4\xc1\xfd\xe5\xfd\x8f/\xf0\xb1I\
+\xdc\x5c\x5c\xdc\xcd\x1b)\xf0\xac\x9aSKi\x88m\xec\
+\xb2\x07kx\x975\xae\xb3\xf6e=\xaf\xea\xf2\xbb\xdf\
+\xb6\x17\xb3\xab\xad\xe1X\x0c\xea^\xbc\xbe\x9d7\x83\xd0\
+_\xad\xf2b\x02\x7f\x82l\x95-Q\xe8\xe2\xd6\xab\x87\
+\x8c\x7f\x5c_\xde7\xa3\xcc\xb7\xcd\x90\xe3o\xed\xd8\xe7\
+?\xaf\x9b\xd1\xc7\x0a\xc5\xdf\xab\xf1~;\xbb\xbf\xbd\xfc\
+\xe1\xd7X@\x88T&\xd0\xa6\x82d\x802!,\x9a\
+\xed\xc54\xa8\x18z\xe2\xf3\x05\x9f\xb3\xc6\x00%\x0b \
+\xa6\xe32\xa71:*\xe6\xc2\xe0\xb1\xc8\xb9X\xa3\xb9\
+X\xa3\xb9m\x87\x8bNb\x98\xdcc?\xeb&B\xc4\
+4d\x22/%\x85f;\x9a\x08\x11\xcb\xb0\x89\xcc\xe5\
+\xfc\xec,\xdfa=`!Dl\xef\xb7\x90\xfa{\x84\
+\x85TX\xfa\x10\x0b\x1em!P<\x125\x17\x16\xf2\
+\xf4\x83\xb0\x80\x85\xca\x84\x8b\xa4\x13\xc5|J\xcf\x97E\
+\xc5E\xfd\xa32,\x85\xff\xd8d\xb8\x16F`\x8c%\
+\x09}\xf6,\xa8H\x88\x09-i\xa8C\xb3\xb5E0\
+\xb1>\xdb\x88]\xad\xd3Z)L\xeck\x16\xd1[\xed\
+\x17\x8b\xbf5\x8b:9\xeda\x9dk&\xb1\x13k\xf8\
+\xcd\xf1\xec\xa5\x82\xd6o/x\x00\x8f\x82H\xc29\xc1\
+\x02\xac\xc26\x99\xb6Wh\xc6\x93\xf6\x9e)\xf8\xc4\xb4\
+\xa8\x83\xf2d*YP\x08\xa5c<Q$C\x8d\x9e\
+\xac\x07J *H\xda\x93\xf9H\x14gr\xe2'\xf3\
+\xa1\xc2\xa6N\x96;\x98\x0fx\xb5\x90\x81:\xda\xc5\xa1\
+0A\x0e;\x14\xd26\xed\xd8\xe70!\xfe[\xfb\x1c\
+\xcf\x03X\x88bz\xedsBRh\x82R\x02\x12\x1a\
+\x93p/\x88\xea\x1fC\x9f\xc3Dz$\x13!\x1f6\
+\x91\xd9\xbcM\x03\xacq\x9du\x1e\xdfDH\xfbM\xc4\
+\x8f\xe1D\xa0p\x84yL\xa0\x08\x81\x89L\x0c\x0aB\
+\xd0d*\x5c\x88Am\xd5` #\xe4\xc9`\xa2H\
+*#Q5\x18/\xec\x10\x11O\x06c\xc5\x1d\xd0\xd2\
+\x1f\x0d\x86K\xba\x82\x80no0L\xfa\xfe^\x87\xe9\
+h\xbd\x0e\xd3\x11{\x9da\x8d\x81\xf7i\x22P,X\
+\x94\xc9\x06\xdb\x0a/*`\x0f\x19\xc3\xee\x94\xe1\xf8!\
+<\x03\xf7\xb7\x95C\x04h\x99\x99m\xb0\xee%\x04M\
+l>\xe5\x89\x163\x03\xcf\xf9T&T@\x82\xa1\xc9\
+\xa7\xb63&!bi\x89\xbch \xab\xd7\x86\xc3R\
+\xcc\xdd8\x9f\x1a\x8e\x171\x22\xb7e\xce\xc5\x1a\xcd\xc5\
+\x1a\xcd\xed\xa2mi*f\x0b\xeeA\x83\x17\xd0\xe8\x0d\
+^\x1c\x0f\x80e\xa8)P\x1b\xe8f\xea\xd2\xefx\x9a\
+Q\x9b\x15\x9a\xc62A\xd4\xa2H<\x99\x12\x96d\xf1\
+\xac\xc1\x0bba2\x0ey\x0a^\xd4\x0b\x07g\xe6S\
+\xec\x82R$Y\x19\x974Tiv\x88]@\xe3\xfd\
+~\x06\x0c\xb6\xf739s[\x1fRo1\x18\xe2\xd9\
+\xf9\xf0P\xbc@R\x12\xb0=[+\xa3\xf5\xf92p\
+Xc\xa3 \x8c\xbe\xd1\xa7\x9d\x9d\xd3\xd9\xb6\xee\x12,\
+\xd6D$\xaa#\x87>\x1bPy{\x19\xb4\xbdK~\
+\x99\xd1\xc3\xfa\xa8~\x094z\xfd\x92\x8d\x0f\xf3\xb4\x90\
+9\x0b\xb6^G\x0b(\x1a\xca\x83\x07\x02uOY\x0e\
+\x07\x88\x9b\x8b\xe0\xe2\xae8\x99\x9a\x15\xe5\xd0\xe8x$\
++\xe6j\x12O\x1e)\xb5\xb8%y\xf5Hh\x85\xd0\
+Y\xa5v\xe5RP\x90\x02;\x1e\xc9\xc5\x04v\x98o\
+\xd0|\x7f\x13#\x83\x1d\x9aX\x0d\xf3\x87\x9b\xd8\xf0s\
+\xebm\xe3\xd9Z\xe1\xfa\xda\x16\x19\xac\x1b\xbe\xeb\xb8\xa2\
+w\xb9\xef`\xf2\x00\x00\x1f\xde\xe4Is\x83\xc9\x1f\x22\
+lU\x09\xe5\x09\x16\xb1D\x94E\x0f\x01\x8a\x16\x13\xa2\
+b\xa1\x19\x13$\xa7\x92\xd2\x0e\x8b)\xb1\x08P\xb5u\
+\xd4\xe2\xe4\xe0\xfed\xeb\x1a\x05\x22-\xbc\xda\xfa\x0a\xcd\
+\xc5\x1a\xcd\xedb\xe0\x83\xc2i\xba\xc3\xdc\x9a\xfa\x91\xe6\
+\xd64\x8f5\xb7fxt{!\xf5~{9\xc4\xec\
++1\x1a\xda\x04\x0b%\x0aac\x14X\x1c\x16YX\
+\xd0\xa3u\x8e\x82X\xc2\xa5\xb9\xc7\xa4E\xb5c0B\
+\xc5\xd0\x95\xeb\xc0\x18\x09\x8a\x09>\x8ej\xd6h.\xba\
+4u\x9c#`\x11\xbb\xcc\xbc%\x0e\xd8\xcb\xcb\xabf\
+\x8d\xceZ\x95\x0e\x0c\x8a\x17C\xf3\x9d\xf9\xc2\xe0\x888\
+u\xdb\x01N\x1b\x8e\xc1S\xa8F\xd1\x8d\xe3\xf4)\xcc\
+\xa3\xd8\xb2\xee\xd7\xa1\xc30k\xfa\x95_\xfe\xe2\x17\xbf\
+x\xd0\xb3\x16\x14\xc3\xda\xf0\xa7w\x80sv\xf6\xdey\
+\x86\x0ah\xa3e?g\xea\xe1\xfc\xfd\xeb\xcb\xfb\xf9\xfa\
+\xc0\xa9\x0b\xe8\x03\xdf\x8f\x03@M\xf3>\x005-\x07\
+\xd4\xdc\x0b>M\xc7#\xc3W\xdb\xda\x7f\xfd\xe5\xab?\
+\x7f\xf15}\xbd\x1dD\x15\xcf\x8as\x17\xffZ)U\
+\xb7n\xe9z\x0d\xee\xcb/\xff\xf8{\x80g+8\xd0\
+\x1aDU\xc9^6\x9f\x7f\xfe.\x1b\x19@d?\xe7\
+\xbd\xc4-\xbf\xee\x1b!r\xe2\x0e\x90\xa6\x14\x16\xae\xb8\
+\x22Pa\x11\xaf\xaf0\xac(\xab=\x01\x9cR\x94\x1f\
+F6\xe3\xd5@\xd8\xa0\x07\xef\xa2\x87vT\xe0\x95\xd2\
+\x87\xe9J\xe9\xc3\xf4P\xa5\xc7\x0d\xa5\xd7\x03\x94\xde\x0b\
+%\xd7\xc2k\xfb\xf3Pe\xa7\x0de\xf7]\xcan\x9d\
+\xb2K-{\x14\x00\xa0Zx[\xfe>9\xad\xb1\xcb\
+\xfe\xa5\xf7\xaf\xfb\x22\x16\xd9&b\xa9\xb1(P\x0d*\
+\x90\x0a\x83<\x05\x98\xc8YTC\x0fT\xe4\xd8Pd\
+?p\x91s\xe9y~\xdb\xc4a\xcdJ\xe4\xeb\xff|\
+\xf9\xdfM\x01\x174\xf3\xffy{y;?\xaf\x0b\xd7\
+w_\xa7\xfe\xe8L\x1b\xf9\xb0\xb2\xf8yu\xe9\xf3\x93\
+\xb6+\x85X\xf6i\xbf\xbd|\xf1\xe6\xd5\xc5\xff\x9e_\
+\xaca\xb5(\xc2\xd7\x97U\xf2\xd7\x0d\xe1\xf2\x99\xd3\xc7\
+\x87Z\xcdNW\xb869\xbf<\xa6SEb\x87O\
+\xdb\xabVE\xe8St\xab\xb5\xf8\xf2\xe9\xf9\xd5Zx\
+;\xaec\x1d_\xfc\x8d\xa5\x8f\x03\xc7j\x07\x9e7'\
+\x86\xec+\xbd`\xec\xd2\x80\xa7.%\x08\x1c\xbcS\x07\
+P\x82\xd8\xeb\xea\x8e)FA\xc2\xac\x0d\xa1\x12}X\
+\xd5\xf2\xd3T\xad\x8et\xfaGA\xce\xbb\x18\x9d\x17\xc7\
+t\xa9-\xc7K\x04\xd6\xe6\xb3F\xd2\xe40\x14\x11\xc4\
+\xd0\xbey\x8c\xce\xba\xc7\x22\x0e\x826\x9f\xb6\xcb\x1f?\
+`\x1dk\xba\x7f\xd0:\xae1\xcf\xe1\xebx\x95/j\
+\x86=E7d%U\xba1\x0ec\x01Q\xd0e)\
+/\xd6h.\xd6h\x9a@(JZ\xa0\xf2\xf0\xb2/\
+\x95\xf4\x98L\xa9\xa4&\xc7b\x1e\x1f&P\x12\xd4\x9d\
+&^L\x81\x5c'\x08%<\xc0\x9f\x0f\xd7\xc2\xd1=\
+q\x98\xfa\x11<q\x1bc\xadJ\xea\x95/\xf9\x11\x8e\
+\xda\xc3\x14G\x0e\xdc+'\xee\x19\xbb\xb7yM\xf8y\
+@\xf7\x17f\xd1_\xd3.\xbb4{\xce\xa2\x8cT\xa3\
+\x9e\xda\xdc\xeb\xcd\xfaB\x16\x0b\x86\xeb\xf1\xed\xd5E\x8e\
+`\xaf\x1f\xac\x12\x5c\xec\xd8\x95p\xf4A\xa6i\xc8!\
+\x16ax8\xf1\xe3\xa2\xb6\x0cl\x12M\xb2\xb0\xa1\x03\
+\xe1\x04\x0b\x1a7I\x9e\xef6^=\xf6\xb4\x80i\xf8\
+\xfe\xea\xd7\x00 \x9an\x7f\xe4\xe4\xc1xC\xed\xd11\
+\x95\xa0\xbeP\x86\x02\x08\xc8Y\xfbQ)\xae\x80R_\
+(\xaf\xd2\x5c\xac\xd14j\x10\x14\x0f$\x1dz\xc5\xb3\
+0\x08,\x94h\x08\xadyLQ\x8bzrl\xd1a\
+\x1e}N\x88>\xcd\xca\x1f\x9e9\xa2\xc8\x8f\xbbQ\x1f\
+w\xaa\x9b~\x22S\xdd\xf4IOu\xd3'<\xd5M\
+G\x9c\xea>~\xebw:Z\xeb\x9fb\x14\xe3\xa0\xb4\
+\xc9\xd4J\xb0\xb5\xe9#\xeb\xd4\x89\x5c\x0f\xe1\xd7\xa7\x98\
+%\xdb\xbf\x98Lc\x0f\x0f\xdf\xec\xbc\xbc\x9f\xdfn\xb5\
+\x1fpI\xca$\xf8\xacyn\xfe\xa7\xd9\xdb\xbb\xbb\xcb\
+\xd9\xf5\x1f\xae\xde\xb6\xcf\x0fqh\x070\xe7_\xcc\xbf\
+\xbb\x9c\xdd?\x1e\xb7\xc3)\x8a\xd2Y\x0a\xb0\xca\x94I\
+x\xb9(`)\xf9\xa8\xf5! v\x88\xfa\xa0\x22\xd0\
+\xfe\xe1|j\xbbv\xb9\x07\x1e\x18\x18\x22\xf7o\xe6\xcc\
+:f\xe1\x22\xe1Fu3\x98x\x81\x8c\xf0\xda\xbd`\
+1\xf5\xb4\xac\x1d\x0ceAb%\xdbkRa\x10G\
+\xe3\x92\x92\x16-\x88O2\xa7X\x04\xc4M\xa2\xfa\xaf\
+B\x1c\x86\x91O\x85\x9f\x22\x970\xc9\xa4G\x0d+\xd1\
+\xdeK\x1a\x982\x86\xb7\x5cDl\xde\xec\xb6\x8eC\x9d\
+\xbc\xf2\x92*Y;\x15\xe7\x22F\x16\x9d.\xc7K\xfb\
+\x1b\xa3\xea\x05\x85\xc5\x1c\x87\xd7L33?\xf9\xc9h\
+\xff\x12'\x98\xc5\xc5\xc3x\xc2X C\xd9\x9f\xef\x8d\
+\x10\x11\xf8 BL\xbc?BYB\x12\xac\x8e\xa9\xa1\
+3J-h\x0a\xd01j\x18\x02e\xc2\x85\x1f`\xa1\
+\xa2\x9a\xbc\xd8\xa9\x02\xc58\x83|2E\xcbB\x8c\x8e\
+\x13\xcbb\x0a\x969\x0a\x1d\x19F\x07e_tH\x8b\
+\x87\xa1U\xfb\xe1,d\x81\xd5~*Mg-<\x17\
+T'\x1e\xf6k\x88%\x17\x7f\x13\xd8\x1f\x05V\xe5\xe1\
+\x99\xe4\xcc\x8f\xc5F\xaa\x85@\xb5\x8cj-\x0b\xc3\xe0\
+@\xb4\x07k\xc1D\x1e\x85\x0e\x8e\xb0\x91\x8f\xcb\xc7$\
+\x1a\x89\xc6D\xa0X\xfb\xa7\x13\xa6\x02\x16\x064\x06!\
+\xc9c\xfa\x18\xa6\x0a\x8d\x14f`\xa2\xda\xafh\x09\x06\
+B\xb2\xda~\x80\x0a#\x92\x0c\xaf:v\x14\x0a[\x80\
+C\x8b\x0d\x94\xa2\xca\xea\x93)\xc9(<|\x0b\x8b\x81\
+\xbd\xbd\x8a/\x1b}\x85\x05I\x0a$j\x85%sA\
+\x13Z\xb7\x07Sq\x0ac\xd9\xab[\x9aLu\xd9\xea\
+\x96\xadj\x99k\xa30\xd2A\x9f#\x8c\xfbb\xa4\x92\
+\x05\x0cY:\x9e7\x8b\xbbXg\xc0\x85&\xc5,\xab\
+\xe5T\x9a\xcd\x18eq4\xd5\xc8\xf9\x94\x1e`B\x06\
+\xc4\xe4vh\xc3`h\xe9\x8d=aQ`\xe5q8\
+\x0d\xfaf\x17\xa2]q:t\xcfr\xa0\x1e\xaf\x17\x05\
+\x941=\xd4O\xdf\x07\x93\xb2\x8c\xf0\xc1?\xf1>\x9c\
+\x94\xc7\xf7\xe1\xbb\xece\xe6\xbe\xbd\xcc\xba\xfd\x06\xa83\
+?;?\xf7m7\xce\x89\xc6\xb8\xbd\xcc8\xfe\x04\x8d\
+>8P\x8es\x16\x00\xa3\x1dm\x7f3\xc6\xf1\xe0\x80\
+c\xc1A\xc7\x83C\xf6\xdf\xe9\xeeB\xf4\xde\xf6\xe0B\
+\xb2}{x)M\xb2\xdd7\x04\xe6Y\x9e\xcdp\xe7\
+\x0d\x81\xca\x12\xc3\xcc\xcf\xce\x9bF\x8a;\x9e4\xe1B\
+\xb6?\x9c$\x8c\xef\x85\x93\x84\xf90G%\x8c\xb7\xcd\
+\x22\xa4\xe9\xe0\xf9l\xad\x8c\xba\x85\x0cl\xd3p\x95E\
+\x92\x07\xae\x8b\xf0\xbe\xbd\x96\xc2\xb9\xc6%\x800=6\
+\xb8\xcb\xf9\xacM\xdb\xee\xe7\x14\xc1\xed=\xf1\xf9E\x93\
+\xd6\xd0\x1ca\x1c\x9c9\xe4] -\xe6\xbbz\x17\x12\
+\xc0m\x0e^9kv[\xed\xd8\x1cH\x80\xc7;\xdb\
+\xe1\x18\xb9\xcf!\x8fx\x97;rD\xf0\x03n1.\
+\xa1.\xcd\xda\xf8\xe6\xd0+\x06\x85\xb1\x1f\xa7\x1c\xc6\xe9\
+\x90\xa3\xcb\xf5\xb1\xeb\xfa\xf8\xb6o\x0c\xdc\x1d'\x1f\x18\
+#f\x84^\x8c\x92\x861\x1a;/\xb1>\xcf\xb1>\
+\x19\xb2>cR\xa7Sv\xd8\xae\x1a\xb1\xcfAq\xb9\
+\xc3>\x7f\xc3\xb88\xa7\xad\x0f\x8a\xcb\x1d6\xcb\xcf\xe4\
+\x0c\xe6\xf2\x0e\xeb\xf7y\x9a\x9e\x93F\xd7\xcf\xedd!\
+\xdd\xe1L\xf0\xa1\xf3\xc5\x87\xcf\x22\x1d>\xe1|\xf88\
+\xd4\x83/*\xce\xec3\x7f\x07\x19m\xfe\xd3\x87\xa5?\
+\x13$\x99\xac\x98;\x14\xa0\xd0\xac\x13\x09P\x10\x03\xba\
+\x93<Q\xc0X\xc1\x1f\xad\xbd\xd2\xec\xf9^\xd5\x9d\x0e\
+\xf1^\x15\x8a\x02\x18\x93lx\xb1\xea.\x1f\xec\xc5*\
+\x19\xc8A\x160\x15h\xffh\x22\x1f\xd9:&\x03;\
+\xf6:&\x9d\xe8\xc7\xba\x8c\xc9 ~\x12\xcb\x98\x0c\xe1\
+\x13^\xc6dH\x9f\xec2&C\xf9\xd0\x1b\xcbZ\x0a\
+\xb3B$\xa2\xd5\xf6\x94\x0aa\x88U\xf34.\xc8\xa1\
+\xa8\xb5kH+b!6\xec\xb0\x90\xa3x\xb8\xc4d\
+\x0aK6\x9e#\xa6\xe7Ilx\x01\x82\xc1\xfe\xd3\xae\
+V\x84\x5c\xad\x86\xb9h\xc51\xc4k\xd0\x07\x85\x0d%\
+H\xadNM\xfb\x12\x8f\xf87\x00\x22\xc7\x04$t\x81\
+\x87\xe6\x13 \x92\x0b\xfbp\xaa\x16h\x0fz\xd4\xf1\x83\
+\x97\xb4\x96f;8t\x02\xa3\x10\xa0a\x04\x80\xf6E\
+\xc0\xb4\x88\x04\x22U\x93p.\x19\xe0X\x11 .\xae\
+aR[\x88gA'\x921z\xc1\xb0^\xa9\xff&\
+\xbd\x86k6}\x5c\xb5r\x8cV\xbf'\xeaiB\x03\
+\xb5z(\xa4\xd53\xab\xbc\x06\x13n5\xc6p\xdar\
+\xf5<rpR.V\xcfCQ\xf4P\xdf\x05\x83\xd5\
+\xb22\xb1\xf5u%\xf2\xf5x\xcd\x91\xb0\x88\x10r\x05\
+ \xa2D\xa0\xf3G\x06\xc3\xa0\x8f33\xdb\xfb\xdd\xb5\
+\x17\xf2$\xae-\x81\xc8\x8au\x06>\xca\xc5CP\xb9\
+\xbep#.L\xfe\xd0z\xee\xde\xdc\xceg\xe7\x7f\x99\
+\xdf\xbf\xbeiK?\xbfh%o\x85\x15\x940\x041\
+n\x91\x8a\x82\x86\x1c\xcde\x116\x0c\xf3Q\xed\x87\x8e\
+\xdaSZq\x05\xeft\x0c\x1e%9\x99+l(\x85\
+\x5c#\xaa\xfbp)\xae\xfd\x90\x8d\xd0\x96\xf2\x88\xde\xc2\
+\xa0\x1e\xd8h\x85E\x14\xea^V\xa7\x02\x04\x81\xb5\xcd\
+\xac\xd2\x9cui\x86\xc6\xe2P4\xd0(t\x82\xc5\xcd\
+\xdd\xbc\x9d\xe0\xa4b\x19F\x92\xed\x0f(\x11\x1e\x19M\
+6k\x01\x0f\xb4\x89\x96\x14LH\x19\xd3\xca\xc8\x07!\
+\x14\xc9\x9f[Y7l\x0f\xb2\x91\xc1\xc7\xf8V\xa6\x85\
+\xd9T:\xad\x8c\x8b\x0b\x19\xc7qZ\x1ao\xe3W\xc6\
+\xb7\xb4\xb0\x12di\xb5\xa5M\xd1\x8aYH\xd43V\
+W\x89\xceV\x88\x86\xdb\x1ai\x98\x81\xb7\x91\xb8\x12\x92\
+\xb8\xb4\x97A.,2\x81\x22\x08\x06\x88\x13\x06*\xca\
+):Q(\xa0\xaa\xa9\xa3\x1a\x1a\x1e\xb5\xa1\x15TM\
+\x8dN`\x07RHW\xa2\xba\x04\x0b\xee\x8c\xe7\xa4\xe8\
+\x10\x5c\xef6%v=PO\x85\x83\xbe\xdb\x04\x0e\xb4\
+X\x842\x07\x97\x03\x9c{\x9bv}a\x97I\x07z\
+\x9b\x8b\xeb\xacG,\x07`b\x1f\xd4X\xe7\xb6\xf3\x02\
+\x08\x0a<\xday\xf7$\xb8\xbf\xc6f.C\x1a\x03\xa0\
+I\xec\xa8\xb1\x99\xdb\xb0\xc6\x88\xb3\xdcYc3\x8f1\
+\x1a\x9bU\x8dW\xd8Z\xecp\xcc\xfa\xc5\x19^\xd0\xee\
+k\x144|\xfer\xf73\xa0\x19\x83+\xf3w\xe1\x80\
+\x1dNi>\xa3\x99\xaeU\xe6\x188e\x9boE\x9c\
+\x9f\x9f\xedl@\xb2U\x939\xbfx\xb9\xbb\x01\x89\x8f\
+\xd1\x98qHc\x07v\x80\x9d5f\x1e\xd6\xf8\xe5\x85\
+\xce\x01v\xd6\x98u\x84\xc6\x22v\x94ua&\x12G\
+r\x8b&\x0ac4\x86a\xb7\x188\xe7\xf9\xce\x1a\x83\
+\x0dk\xcc\xe1\xe7ko\x87\x875\x868\xf6\xe9\xd9f\
+f}\x072\xd8A\xd6\x17p\x9a\x92\xf2\xc4J\x06\xa3\
+(\xb6\x1f5\x99z\xf1@Ik\x7f`Q5\x0cn\
+C*\xa2\x12d\x88\x93\xa9e\xb1\x0cC{\xfe\x9eH\
+\xfe\xcd\xec\xbc{\xbe\xb6\x03\xb0v\xde\x85\x01\x17\x0d\xa8\
+S;\xab$\x17\xef\x92\xdc.(TSb\xc4{\xa6\
+\xfe\xe0\xad\xcf$\x11\xea\xca\x9c:\xa5\x1cQG\x89R\
+7>n3\x9dz\xf0\xc2\x8b\xf5\x16^\xa9\x0eU\xb1\
+@J\xe6Ci\x979\x08\x98)5\x0e\xd7\x82\x91\xc8\
+\xdc]2\x03\xe0\xa1\xdb\xe8\xd5?\x96\x1b\xde\x1e\xedE\
+\xc3!-Z\xab\xe3\x00\x13\xa5\xe7\x1f\x12);\xc8\xdb\
+o(\x82\x94\xc04\x81b\x98\xac\x12\xcf\xfbq\xd9\xb9\
+n\xc8\x22b\xa5n\x1c \xf3C\xe2\xe4\xf0\xb1\xe3\xc4\
+%\x0dA*LQ\x885\xc5?(L\xf43L\x9d\
+\xc0\xad7\xa6\xab\xaf\xe4T\x0b\xb7\xba\xd6\xed\xed\xf5\xd5\
+\xcf\xda\xdd\xe5:\xb6DF\xf1\x0f\xefqM\xb8W#\
+\xa9{^\x8c\x0ap8Rw&,\x91\x1d\x1f\xd4Z\
+#i\x15\x85\xe2\x14\x19z\x10\xfb\x99\xf0\xc1\x9d\xa8\xb9\
+\xf4*\x1f\xd0\x99\xb1)\x90\xe6\xaeu\xf6\x14\x8a\x06\x98\
+x\xb5\xc1,\xc9\xc2\x5c\xd7\x91D\x14c\x96\xf8\xa8\xba\
+Q\x0a\xdc\xe5p6\xeb,\xbf$+\xc9f\xab\xcb/\
+E\xdc\x8d\xaa\xceT\x802T>\x9cFL\x8c\x87\xf1\
+Od\xc4F9\xc1\xba,O\xb3\x10i\x80w\x0fH\
+Mg\xc2Z\xf3\x95\xe6\x11\x05\xb1B\x14\xa1\xf9AQ\
+\xe0\x03\xa1\xc0L\xd4\xa2P\x12\x15R:h jq\
+3\x8f\x8a\x06\x16\x08I\xa8\x11$c\xe1\x0e\x0d-=\
+8#\xe9\x81\xc1`b\xef\x05C\xb8\x9e/hPR\
+\x94\x14\xab\xeb\x02-\xc1\xa0\xb5\x07i\x88\xaa\x0d\x0f\xe3\
+\xf8\xe1\xfc\x10y\xc0.\xed\x15\x8a\x00\x81UOeR\
+\xc0\x0d\xa5\xbe\xd4\xa845\xd4\x87\x92F\x84r\xe0\xe3\
+\xf7(\x13zO\xf1\x87<\xc0j\xda\x82 \x10\xa1\x13\
+(A\x01f\x8b\xf7\x0bf\xe2\x92\xd6^F\x183\xf9\
+\x04\x13\x8b\x88\x11O\x8c\x0a)'\xd8P\xf8\xd1\x8e\xf5\
+\x8c\x0b\x08\xbak}G/%=\x05\xa2\xbe\x93\xe4\xa2\
+\x8a\x84\xf5]\xbfb\xd1\xa4\xcc\xfa\xa19.\xe2\xe2F\
+\x0b\x80\xcf\xae.\xdf\xfcuv\xff\xba\xbd\xf9x\xbdy\
+\x12\xff\x91\x8a\x91\xda\x1d0o\x9a\xcb\xee\xd0\xbf]\xcf\
+{\xf5\xe2\xed\xed\xd5\xaf\x7f\xb5\x8a2#\xf3\xf3\xdf\xb4\
+w;\xb3\x00w\xf7\xb77\xdf\xcc_\x5c\xdf\x5c\xcf\x1f\
+\xae\xa7\x8bO\x12\xbc@+\x92\x0a\x00!\x8f7\xda\xfa\
+lj\xfe\xc5\xed\xcd\xdb\xeb\xf3n\xe6\x7f\xdf\x5c^\xaf\
+\xe6~{\xd9\xac\xeb\xbd\xbal\xfe\xf7\xe2\xe9\xf1\xf3\xd9\
+\xdd\xeb\xd9\xed\xed\xec\xc7\x07i5w9\x07\xf1B\x0a\
+\xeaC\xf6\xda\x17\xa1\x1a\xbd\xffr2\xc5\x90\xe2l\xa2\
+\x13\xf2\x92\xc2\xae'\x9f7\xb9)%]\xdd\x9er\xf1\
+dJ\xa0\x85@\xcd'\x8c%0\xd0\xad\xc9D*\xe9\
+@6\xe1,\x1a\xe4F-\x03\x22(\xe9.1\x11/\
+\x1a\x99\xc9m\xa6\x94\xd0\xd4\x89F!\x22\xc3\x87<\x83\
+$\x9fX\x14\xf7\x14\xc8\x93\xaf\xba\xd9i%\x88@\xb0\
+e[\xb3\x11\xa0\x84\xb3G\x9b\x89\x85U\xbc\xcd\x94\x82\
+\x14\xd4f\xa2\x17\x86&\xd5\xcc\x96/*\x15\xb4\x8c.\
+m\xab\xafDA\x0c\xe4.\x0b\x14)al\x5c\x85u\
+3k\xc1\xbe\xeafW5>_f\x1b\xb2<iL\
+KY\x92*\xd8\x85\x06\xd5\x8a\x02\x99\xac\xc2\x88&\x85\
+\xcc\x89\x9e \xc7&\xd3\xa5H:\xf2c\xe5H\xbe\xb7\
+\x1e\xffu\xb2R\xbf\xc2E\x02\x01e\xc1\xd8\xa3p:\
+\xe4S\xb6\xb6\x99T@\x02}\x22Z\x12\xbdek^\
+\xd0#p\xa2P<\x9c\xd4\x96\xe5\xa2\xc2\xe6\x9c\x13\xd5\
+\xa2\x19\x16\xad\x0aY\x92\xb2!5,\xc1\xccA\xcb\xcc\
+\xf6\xa9E\xf5B\x02\xd0\x02.\x82,\xea\x04\xd8\xc9\xfe\
+\xfc!\x1b\xc5\xed\x89\x05\xb6\x99^\x10T\x1fEy\xb6\
+yT(\x05\xe2\x9db\xa5\x17!qzP R\xdb\
+L,\xe0\x1aO\x9a\xf2\xfbQ\xf9Wg\xba\xae\xf5\x00\
+\x8c\xcb\xc8\xa7\xbbI\xe2\xfa\xe6|\xden\x94\xb8k|\
+\xc6\xdd\xd9\xe2\xef\xee\xe1\xbf\xe5\xcc\xde\xa3'9\xba\x9b\
+\xaf\x0eh\xbc\x9b\x87\x22i\x08j\x13(\x22\x90A\xd9\
+\xfavg\x03Mi/\x97\xce\xdf&\xd3\xcc\x82\x82\xe2\
+\x93XDj\xa0\xb1\x8d\x9bw/\xca\xcc\x8e\xef\xbay\
+\xac\xeb\xd5\x22\x0a\x08\x05\xe4\x87p\xf3\xac\xd5\xcdoY\
+\xbf\xeb\xd6\xe1+\x8e4\xbd0a\xe0\xaa\x1f\x05/j\
+\x88\xd4\xf5\xa3\x88^<\x11\xb8\xebG\x91\xb4\xa8\xaa\xd1\
+;\x0e\x80\xb9\xa8Q\xc8\x8a\xb3`/\x22\x12V\x1d\xe9\
+2\x13S\x8cW\x1ci\xcd\xee:\xd2\x9a\xbd\xea\xdb\x98\
+K\x0a\xbc\xe3\x05)KDp\xae:R\x93\xe2\xaa\xc4\
+\xba\xeaH\x0d\x8a\x03Kj\x97\x85\xb6\xc5\x8dL\xad\xc2\
+\xba\x99]GZ\xb3W\x1d\xa9\xb6\xc5\x0d7\xedzR\
+\xc3\x02\x01\xee\xda\x05\xc7\xb2@\x04\x00\xae\x02\xe9VB\
+I\x03\xbb\x9e4\xbc@\x90\xa4WOZ+r\xc5\x91\
+\xd6\xecU?\x9aP2H4\xba~4\xa4\x18\xb3\xb2\
+V?\xeaY\xdc\x04\xddV\x1d\x96KI%\xd7\x8e\x1b\
+u*\x8a\x8a\x9e\xd5\x8d.2E=YV\xdd(\x12\
+\x15Tg\xef\xba\xd1\x87l\x00\xa4\xae\x1bE\xccb\x09\
+a]?\x8a(%<E\xde\xf1\xa3\x08\x05\x10 V\
+\xfc(p1C\xb4\xeaH+*+~t\xdb\xd8)\
+?\xbd\xd8\xe9\xdf\xe5\xe5\xf3\x83zy\xc4\xe2d\xc1\xfa\
+\x11\xb8\xf9\x8fk%;\x11\xd9\xff\xf7K\xb9\x8d\xf2\x90\
+K\xb9\xc7o\xb4Kz\xdce\xe7\xa4\x13d.\x00@\
+\x13\x82\x12n\xd4j\xbaDW\x0bv\xbei>\x85B\
+(Q_<\xc6\x93\xc2\x8f\xca\xf4|\xee?\xa8\x7f\xfd\
+\x86\xd3\x17\xc8_\xac\xbde\xee\xfbf}H?+\xd6\
+\xdf\x7f\x8e\x9f\xbf\xcb\xaa\xb0*\xf7\xf3\xb3~~\xf0e\
+*\xc4\x1a?\xc3\x94~~\xb1\x81\x1f\xc4\xe7\x00k\xfc\
+\x5c\xbd\x9f_\xc2&~\xfe\xfb5~\x0f.\xb7\x1a\xcd\
+.\xab\xc5\x80zv\x99\x83\xecp\x98\xd2\xf9|>t\
+\xdaI\x97\xb5\xedp\x84\x07\xcdc~\xbe\xb6rb\xc4\
+\xfa8\x83}6\xdd\x1b\x1d\xf6\xf0\x97.k\x19q\xb6\
+\xd4h8R{4N\xdf^c\xe3y\xee\xa0q\xe6\
+\xbfQc\x91\xdc\xc3\x00Dq{8`\xf1\xb7\xfd\xe1\
+b\xdc\x03\xc7\x00\xeb\x0a\xc7\xa8c\x17\xc8Y6\x1f\xbb\
+`\xd2\x9e\xba@\xc5\xda?\xef;{\x01)\x9a[&\
+\xfb\x1e\xbd\x00\xf5\xe9\xbd\xce]\xa8\xdb\x18\xa1 Ag\
+[\xa7qAM`]y\x87\xeb\x085\xf2\xa94\x83\
+\xeb{@\xb9\xfd{\xecP\x093E'\x88\xc5m\x22\
+%\x93\x84l\xcc\xb1\xc9\x1c\xc3{y|\xff\x03N%\
+\x0a!\xa1b}e\xa2E-\xba\xf0X\x96$\x86\x88\
+\x95]\x06\x9cd\x1f\x03<0\x1a\x9e\x9f\xb0\xf1x\x0c\
+\xa2\xc3\x86{\x1b\x8f\x14\x0a\xef\xc2\x93\xd8\x96\xda\xc1\xba\
+K\x0d\xea7\xf5\xdb\xfb\x1eJ\xb2\xc5fi\x82\x09\x8c\
+R\xdd\x06U\x17\x80\x9f\xa6\xea2B\xf5\xc11W\xdd\
+\xa6\x93X\x02\x14:\xc3U\xf5\x02\x1a\x8aR\x07`Y\
+@5 \x9f\xc6\x0d\xca\xc5\x18hx4V\x143%\
+'^X1\x89s>\x8d\xc94\x0a\x18\x93\xb0\xb6\xbf\
+\xb0\x90;!\xcadJP\x88\xc4\xc9\x9aK.\x99f\
+\x9c\xfb\x0f\xda\x88\x9d\x86\x9b\x8e\xc4\x9e rQ\x0f$\
+\xad{\x0b\xa5(#i\x1d\xc4b\x97\xe4\xec]\x92\xb3\
+.\xc9\x00\x90V\x14<\xc3\xf2ax\xab\x08\x89>\x99\
+\x1a\x97\x16<\xc3\xc9\x94\xa9\xa4\x03\xa2\x8eB\xec\xa8\xae\
+8\xad\xb01hg\xe5R\x14\x03\xc3\xce6B\xa6\x02\
+\x8aa\xb5\xd5\x09\x17\xcf\x04\xb2=}\xb1\x17\x1533\
+?\x8c?\xb6m6\xb6\xcb\xdeF\x85j\x1d\x9bB+\
+\x10VM\xca\xb1\xb8+Q\xdd\xad\xda\xa58\xebR\x0c\
+O\x22\x98B\xa04H\x91a*\xd0d\xda\x82\x06\x98\
+!\x13.\x9c@\x086A/\x0c\x09\xd6\xdcV/\x96\
+L\xe3\x1a\xa5\x0d;u\x8b\xdc\xdb\xa9\xb7pdp5\
+\xb1\xb4\xc2\xceH\x5c\x9d:A\x11\xf2\x1a\x0cU\x9aA\
+\x13CwR\x89\x87f\x08\xee\x84\xe1\x13+\xaaJ)\
+6\x99JIAs\xc0Q66\xec\xfd\x15\xf1\xa7c\
+c\xcc\x07\xb61\x1a\xb61\xdb\xdb\xc6(J\x0a%\xd5\
+5Jb\x85HS\xde\x99\x89\xe5\xf0\xea\xc6\x1c\x8b\x91\
+\x09\xc8\x9e6\x86%\xc4\xc8\x95\x0fec0lc\xc0\
+?w\x8e\x151\xe1m:\xc7\x9f=\x7f/~8\xd6\
+\xf3\xff\xf4[%\xc76\xad\xf2g\xcf\xdfgc\xac\xc7\
+\xf0\xfc\x87\x8c\x0a\x0e\x14\xa9\x8c\xb11\x1a\x19]\xfc\xf4\
+\x83|\xda*\xc8\xffy\xf8\xbd\xb1-\x92\x8c\x18~\x0f\
+\xb4\xc5\xe1\xa9\x97\xf1\xb3<c\xec\x07GL\xdf|\xda\
+\xaac\x1cU\xf5\xf1\xd3\xb0\xe3'\x85\xc7\xa0\xa3\xa3f\
+s\x8f\x8f\xce\xf87\x0a\xa3\xe0\x19\xf1\xa6\xe4\xa7o<\
+\x90\xc7@\xe7\xdf\xe9.8$\x8e9\xc7\xefZ\x9c\xc2\
+\xb9\xb3\xad\x0e\xa28\x88p\xd5\xc9\xaaBT\x1c\x00M\
+\xc7(d\xc3\x0a%\xef\xab\x10e\xd1`\xd4\xce\x89\xc7\
+Y \x08\xbdV\x92[1[=!\x0a\xad\xa0\x90\xd1\
+\x18\xbd\xb6\xe8\xcd\xc3\xf6\xd5+l\x11\xe8zV\xe3\x83\
+\x22\x18\xa8T]NafJ\xc4\x07\xbd*\xcd(\xbd\
+h\x84G\xfeX\x1b\x15|\x98\xb7G\xc1E\x11C\xad\
+\xbbu\x89\x04\x11\xb3\x86\xafV\xc8\x05\xb53\x88\x84\xa2\
+\x16.8|\xf2\x06QF\xda\xc3\xb8\x8a\x1c\xc0\x01'\
+S\xa2\x92\x14\x99\xb6\xb8DO\x8c\x18\xb1\xb8/8~\
+~O\xb4#bv\xc4\xa90)\x9a\xec\x150\x91\x82\
+\x99a^\xad\x8c:$gk$g\x1d\x92\xe1/\xec\
+\x98\x01\xa9L\xa0hcNE\x83\x04\xd4'R\xc4)\
+\xd4c\x82$\x85\xcd\xbd\xc1\x0e#\x0b\xa59\x8f\xc2N\
+\x86\xb1c\xde\x13;/i\xd1\xc1\x8e\xa3\x88\xb0q\x17\
+\xbajh\xf5v\x076\xd2\xe1v)\xc8\xd1\x02\x02\x05\
+\x0d\xd84\x1b\xf8\x048\x09y\xc2\x85=\x0c\xad\x9d\x12\
+\x83\x82\xc9\x82\xb1\xf8\x96\x13\xa2j\x8e3;\x1a\xf6k\
+d\x1f\xd7\xccE\xf7 \x17\x19u\xa6v0l=+\
+1\xder\x22\x8b\xa2{R\xd7tB!\xb2.v_\
+\xa59\xeb\xd2\x0c\xda\x10e\xaa\xb0\xb66\xe4\x0a\x94\x18\
+\x13,\xa0\xee\xc4\xd6\x5c\x05\x13p\xdb\xe4p\xe1\xd3 \
+'S\x8a\x22\xe4\x068\xc6\x84h\x8bx\x93\xe3g\xcf\
+\xf5^\xecl\x1b\xcf\xf5\xf3\x0b\x90^\xfcd\x9b\x17 \
+?\xe3\xd7\x8b\x1f}\xc4K\x07F\xf8u\x82m&\xe4\
+\x7f\xb6\x8b>\xbb\xc0\x18\xf1\xd2\xe7\x13\xc4O\x0f\x8d\x9f\
+}\xc4\xcb%\x8e\x1fV\xa1\x1c\xe6\x9dk\xfd\x5c^\xf7\
+\x8bx\x0fN\xeb\xf5\xfc\xf2\xd5\xeb\x86\x1e\x8bf\x90\xe9\
+\x12\xce\x87=Y\x99\xf8\xb4\x85n\xb1\xfb\xb3\xa5K\xe0\
+d\xc0e\xd9\x16t\xa2\x98\xa6\xe0\x1b\x8b\xb2\xf6\xfd\xbd\
+\xfe/\xe8\x91\xbc\xf7\xeb{XX\xdc\xd4\x16\x05\xdf\xa8\
+t\xfd\xfc^\x8f\xf6\x16\xf8\x8e\xf6\xa8\x9eB]\xed\xc1\
+#\x1d\xc5pU}\x12\xf1\xa0\xae\xfaH\xc4\x89\x07S\
+\xdf\x82{>>\xc8\x84\x892^{e>PY\x95\
+\xb5\xa7\xaa\xc0\x00Xu|a9\xed@\x85\xe5\x8c\x1e\
+`%w+\xe8\xaa\xa3\x1a\xf2\x9e\x18l\xb8\x9c,\x9a\
+b\x11\xa34\x9fO\x97>\xd4h1\x0f\xe2\x854\xb6\
+\x0d\x82\xeb\xd1\x07D\xa9_\xe3\xd7O}\xc0\xd4\xc0\xa3\
+\xb0\xd6a5[\x16%\xa1\xc7\x8d\x97\xa4\x5c\x00\xa3n\
+\x0c\xae\xcf<\xf5\x0bdZ8{>O\x1e#w'\
+\xf5lNB\xd8\x7f\xa7V\xe5;{\xf1\xed\xe5\xf9_\
+\x9bM\xe7\xf7\x7fkn\xeeX\xd0a\x0eEG\xf0\x18\
+T\xeb\xcb\xc5\xdfV{,\x87{\x9e\x90\xc9\xd4\x5c\xea\
+\xcb!s\xa9\xd3\x07\x1c\xc5\x9d\xb9s\xbcY\xd6I\xf9\
+zw\xef7B\x89\xf2^\xe3\xa1D\xeb\x07\x80\xacM\
+C\xa7D\xf7\x18\x10%F?k\xc66\x0d\xb1.\x88\
+$\xbd\xfci\x83\x05\xc9y\x9b\x06\xf9\xb3\x8b\x02\x00\xf6\
+\xcb\xa0~\x19\x0am\x1a\x94!\xc4\x90\x99\xd9/C6\
+\xc8\xf06\x0d\xcb`\x8b\xcd26T\xb3I\x9b\x86e\
+H\x0e\xe8\xb1\xa1\xbe]\xdb4,\xc3@{\xf9\xf3\x86\
+\xfa\x8eY\x9b\x86\xf9;\xe2F\x1dxC}\xcf\xb8M\
+\xc32\x02e\xa3Mq\x7f}\xdf]^}7\xbf\x1d\
+\x16\x91\x88\x9bEl\xa8\xee\xf3\x8b6m!Cx3\
+T\xb1\x01\xaa\x8b&\x0d\xcbPt\x09\x8f\xe8\x95!\x1b\
+\xaa<\xa5M\xc32\x98t\xa3\x1eB\x1b\xcc\xf6\xacM\
+\xc32T137\xe8!\x1b\x9a\x9f\xb6iXF\x88\
+\x0a\x98\xf7\xcb\xd8P\xe7Jm\x1a\x94a\x10\x06\x00\xd4\
+/cC\x9d\x0b\xb7iX\x86\xa0m\xb4]\xc5~\x19\
+\x9cm\x1a\x96\x91\x14\x1aD\xfd2x\x83\x0c\x1eV\xc2\
+9}c\x85\xab\x8e\xee\xfb\x22#2\xd3\xfbe\xf8\x86\
+\x06h\xb3\x98\x0d5\x8e\x9eo\xef\x8c;\x84d8\xfa\
+\xb9]~\x92R\xc5\xac\xb3v\x91J\xa6\xad\xac]\x8c\
+\xe2NJ}\xcb\x06\xc3\xed\xfd1Mxl\xf0~\xd9\
+\xa6}c\x9a\x88M\x87ax\x9b\x06\xeb\x15$\xa5\x9f\
+?\xf5\xf3\x7f\x99m\x1a\xe4\x8f \xd9\xcf_6\xd8\xcc\
+\xbcM\xc3\xfc\x85\x09\x93\xb8_\x86m\x90\x91M\x1a\xd6\
+\x81P\xad\x9f\x7fl\xb2\xfb6\x0d\xf3\xb7\xb4M\x9dB\
+\xe4\x86z6o\xd3pl\x99\xb1\x81?\x1d\x80\x7fn\
+\x8c]#7\xc5\x95\xd2\xa4mb\xbe\xe0\xcd8m\xa8\
+k\xc16\x0d\xcbH\xd5\xcd26\x8d#\xb4M[\x04\
+\x01\x19\x91\xda\xefK\x01F\xfbkuHS\xe2~\x19\
+\xb4A\xc6\xbcM\xc32R\xa2\x9f\xff\xa6\xfa\xbeh\xd3\
+\x16\x9d\xb3n\x0e\x00`C};\xb4iXF\xf2\xe6\
+\x18\x1cb\x83\x8c\x97m\xda\xa2\x7f\xd6\xd8\xd8?#l\
+\x90q\xd1\xa6a\x19\x03>$\x91F\xda\x14\x1ek\xee\
+\xc1#\x0b\x12\x81o\x98\x810\xf7\x12\xee\x80\x87\x9c\x87\
+\x08\xa3\x9e>\xdbd\xf4`\x1e`C\xa7a6\xda\xe1\
+\x22K\xf4\xf3\x8f\x0d\x1d7\xb5i\x8b\x81#\xf7;s\
+\x87\x0d\x9d\xdelx\xe4k\x94\x1b[D8m\x10\x80\
+m\x1a\x8eX\x95bc\x8f\xe4\x1b*9\xcf\xdb\xf4\x11\
+G\xacV\x80X\xea\xd2;\xc5\x82\xc0J\xefD\xac\xcc\
+\xd1\x1b\xb1\xaa\xf4X\xbf\xda\x86\xb0\xf2e\x9b\xf6\x8eX\
+u\x83aR\xb4i\x9b\xde\x937\xf5\x0aa0\xa2^\
+G\x9fd\x97\xb2\xcf\xb9ni\xdbO\x9c\xf3\xffk\xef\
+\xca\x9a\xdb8\x92\xf4\xf3\xfaW0\xfc\xa6X\xaa\x94\xf7\
+\xa1\xf1:B\xa6\xad\x89\x89\xf0\xecN\xec<\xec\xa3\x83\
+\x92@\x8df$\xd3AQ\xbe~\xfdVv\x03l4\
+\x89&\x05\x8a\x1c\xcb\x07a\x19\xa8\xaf\xd1\xd9\x95_\xe5\
+U\x05\xa0\xcb\x8f\x85\x9e\xbf\xff]\xce\xe2\xfd\xd7\xce\x9f\
+\x9d\x9c\xe8\xd55\xf9\xdb\xdf\xe4\x8c%n\xc1\x06+\xec\
+q\xd3\xbf\xdeg\xdc\xd1\xe5\x05\xc9\xb4\xcf=\xce\xe4\xc5\
+\x9d\x92ax\x1b2\x8c\xdf\x9f\x8c\xd5\x8b\x93\xda\xc4\xf3\
+=M\x83M\x17\xd8X\x12}\x977\xc0\xe3\xb0\xdb\xd0\
+\x11q_w@\xe4\x84_\xf2~\x80\x00\xb7\xa0C\x80\
+\xf6\xb0\x0e=9\xd9\xe3~\x80 \x0bt,\x8a\xbeK\
+:\xc8nC\x07\xeda\x1d\xe5\xdf{\xd0\xc1\xb0_\xe8\
+\xb8[:8nC\x87\xc0>t\x10\xeeA\x87\xec\x15\
+I\x09\xef\x96\x8e\xe4\xdb\xd0\x91z_\xb1C\xd2\xffM\
+\xb1cY\xe7\x05\xae\x14\xf8\xe6}\xc9\xf5\x04/\xcf\xf7\
+o\xd8\x7f\x97\x15\xdecWi\xe1\x14~~\xbdd\xbc\
+*\xd9?\xc06\x14o\x93f\x15y/W9\x86\x17\
+\xefk\x1b\x8a\x0bivY\xf4\x1d\xba\x8aY\xde\x82\x0e\
+s\xbc/W1\xe7\x8f\xd5U,\xf2\xc6\xdd\xb9\xe1\xe4\
+$`OW\xb1\xac\xba\xf1\x16\x92\xe1&W\xb1\xe4\x0f\
+\xb0\x0d\xc7\xdb\xd4\x1c\x8et_\xb6\xe1(\xbf`\x09\xe6\
+\xcc\xb7\xa1\x83\xf5\xbeJ0g\xdf\xaf\x04\xbb\xe3[2\
+3`\xfe*o\xc9|\xfb\xfd>\xa6\x1d\x12\xfc\x9b\xc5\
+m\x15\xfcNvr}\x88\xd9\xb2\xfe\xea\xe6&\x0f\xa6\
+\x1fM\xc2\xd6\x86\xeaH\x8dA\xfcb\xdd\x87\xb3\xa9\x86\
+\xde\x91\x8aq\x8d\x8a\xfe\xe9]l\xf8\x10N,\x9b;\
+\x14\x04\xf6\x07\xd5\xafz\x9aqP\xfd\x10\xd6Z\xb0\xd5\
+c?\xfd\xe7;\x8a\xde\x9e\x80\xfcf1\x15x\xee\xb1\
+\xdfdJc\x99\x96\xabK\x87\x0elm\x8b\x1b\xd6\x94\
+u\xda\x147\xa5\xb7\xcd\xeeH\x0d\x84e=\x02\xf7\xd1\
+C\xb7T\xe0Y\xef\xc3t\xd6\xfbj\xdfQ\xef\xf1\x9a\
+\xde\xf3\x1d\xf4\xde\x1b%O\x9d\xd7j\xdeU\xdf\xe9\x9a\
+\xbe\xeb>}\xb7\xad\xbe\xcb\xd4\xf7h\x00@S\xe7m\
+h\x8fQ\xfd\xc5\xea\xe4\xed\xe7\x9fM{\xa2\x1d\xbfY\
+\xbd\xf8\xfe\xd5\xea\x87\x99\x22?\xbc\xfa\xf6\xc5\xe9\x0f\x0f\
+7_e\xb7\xf0Ow\x1d\xdf|\x81\x1d\x88.E\xfc\
+\xe3\x97\xab\xbe\x01S\x7f\xcf\x7f}\xba\xe3\xd0:\xd3\x0c\
+\x9fx\x8c\xea\xbe{\xd5\xb7f;}\xbd\xea\xf1\xe0\xf9\
+\xaa$n\x0e\x9c\xf5K\xec\xc0O\x9f\xfd\xb3\x13\xbd\xeb\
+\xc8\xb3\xd3\xb3\x17\xab\xb3\x8b+\xe0\x0c\x1e\xb2^\x1f\x07\
+\xab\xbf\x91\xbc\xea\xcf\x06\x1e\x8b\x83\x8b\xb1yv\xdc\xb9\
+\x9eu\xfe\xe7\xd3\xd3\x1e\xaa\xa8\xa9\x12!\xeb\xfc\xe0\xf8\
+=\xe7\xa6$pe=\xb7V\xdb\xa9\xa9G\x04\xed\xa4\
+\xb2b\x98\xc1\xceC?\x95X\xbf$\xf0\xdd\xd9Y7\
+\x8f\x87\xaf\x8f\x7fZ\xf5\x9e\x7f]O\xdf\xac\x13\xdd?\
+N\x7f(\xda*k\xbc[MPQ\xfcv\x02'Y\
+\xc3\x91\x87\xcf\x9e\x9d\xfe\xb8>\xba\x95\xeaK\xd0T_\
+\xfc\xb9\xb7\x9e\x9e\x9d\xbe\xf9\xdb\xd9\x0a\xc4\xfe\xbe:?\
+\x7f\xf5\xed\xcb2\xf3\xfa\x1b\xf3\xea\x8f?\xd5)kh\
+L\xf8\x95\x8b\xbf\xfbq\x06\xfd\xb4\x0d\xbd\xedc\xd5\xe5\
+\x14{\xcd\xcc\xfc\xf2\x81\x9f\xae\x1c\xd8\x8c\x17\x00\xf4\xfa\
+w\x0d\xae\xde|\xb7\x13\xdf26\x9a\xde\xba\x85\xca\x84\
+\xae\xaf\xd8/\xb8\xc1\xbe=~\xf6z5qY\x7f\xdf\
+\xbfz\xfb\xaa\x83#6:\xd5Uw\xfa\xfc\x93\xcf\xde\
+\xac\xce\x8f_\x1c\x9f\x1fo\xcci\xd3\xee3\xebO\xfe\
+\xe3\xb3o\xdf>~{\xf2C\x7f5\xbe|\xfd\xea\xf9\
+\xeam\xb5\xa6\xe6\xe0\xbe\x9b\xc2\xb0H\x9c\xff\xbc\x84b\
+\xfa\x11\xc9\xd4\x1c\xce\xfc\xcb\x97\x1d`4\x17&\x96\xea\
+b]\xe6\xd1t\x9d\xed\xab\xfe\xfd\xf4\xdd\xd9\xf3\xd5\x17\
+\xb5\xa3\xda\xdb[\x5c\xb2\x5c\xab;\xe2\x9b\xafW'\xe7\
+\xff3\x0c\xeeD\xcc\xfa2\xa7\xdf\x9d\xf7\xdd\xd9~\x1e\
+~\x1a\xb16\x9aI\xd5\xf3\xe3\xb3\x97\xab\xf3\x0d\x5c\xf2\
+\xe6H\xe92v\xa3\xffRb\xf5\xb4\xd7\x0a\xc7\xbd+\
+\x7f\xfb\xef?\x93\x8c\x8dbs-k\x0b\xad\x13\xaaj\
+\xea#\xda\x1d\xa5\xfb\xdf4\x82\xe3/.jPO\x8e\
+_\xaf=\xbc\x9fq\xbe:Z\x9b\xcf\xd3\xe1o\xc0\xbf\
+=\xfd\xebtdz\x7fw\x9e\xdas\xee\xf8\xf9$e\
+\xe8E\xb1<\xefG\xc1\x05N\x8a\xdeB\x7f\xb44g\
+%\xc5\xdf\x22\x11\x05/[I\x1d\x1b=\xe5\xb3\xb3\x17\
+'\x8f\xff\xf7\xcb\xa7}s\xd0\xe7\x8f\xff\xef\xf4\xec_\
+\xa3;\x16z\xfc\xec\xf4]'\xa3G\xae\x17\xcf\x1f\x9f\
+\x8c\xd7{\xf5\xa6G\xf6Go\xbf\x7f\xf9\x9f?\xbey\
+\xfd\xd9\xa3\xe9@\xbd\xa7\x82U\x9d\xbe\x11p\xb6z[\
+n\xd0\x9d\xfa\x1f\xe7\xe7\xdf=~\xf4\xe8\xbb\xbe\xa9a\
+;={\xd9\xcf\xeb\xff\xbdyU'<\xfa\xfby\xdf\
+\xd0\xf0/%wt\xfbu?\xfa\xab\x8b\xae=\xdax\
+\xf9\xe7\x9f|\xb2\xab\xd8\xee4M3\x85=\x8a\xd7\x9b\
+\xab\x82\x22~\x9c\x0f\xceg\x95\x8b\xabw\xec\xb5\x91\xd9\
+4s\xc4\xaa,w\x0ai\x80\x8aK\x920\x8c#\xe7\
+\x92bY\x92j,IR\x8d\xa3'1\x93D\xb0,\
+)M\x96$E>yz\xc4sI\xb4(\x09Y}\
+I\xd2\x17|t\xf4\xe5\xa5>\xc9\xb2$\xe7EI_\
+\xcaW\xf4U\xce%-3N\x90\xb9$\xe9\xab\xa3\xa7\
+\xf4T\xe7\x92bY\x92\xb0.Iz\xdaiz:\xb7\
+\x02\x86eIN\xb4(i\xf8\x9bK\x1a\x19\xbf\xfc\x99\
+\xf8M\x8e\x11\xfb9F\xde\xb5g(\xab\xaa\xcf5\xf1\
+\x91\x93\xddc\x8el\x86\xa2\xcb\xb6\x18O\xe2h&O\
+p#oa\xec)\xcd\x22\x96\xc7\xbf\x1es\x89\xbe<\
+jl\xbc<\xfe\xf5\x98K\xca\xbb\x1a\x7f\xc5EI\xca\
+\xb8O\x9f\x94\x17%\x85\xc8\xb2\x9f|q\x85'\xd5\x05\
+I\xb8(\x04\xbb\xdb\xf2\x5c\x88/\x19\xf6\xc2\x92\xe1\xb4\
+np\xff\x8b\x03;i\xdac\xd4\x8c\xf6e\xa8\xdcE\
+y.D\xd6\x0c\xcd\xf8\xb8\x91!\x84o\xeem\xdd\xe1\
+\xc3\x89\xc9; \xc6\xf1v\xc4\xe07\xf7\xb4\xa4\xf1\xc1\
+\xb4\xb8\xedK\x0b'\x7f\xc11\x17\x12\xb7\xa3\x85\xbe\xb9\
+\xb7\xd5\x92\xfd\x88\x89\x88'1O\xc9\xb1\x1c\xb4\x00\x9c\
+\x16%\x1d\xc5W\x91sI\xba,\xc9|1\x90>\xf9\
+\xe2\xc9\xd1\x93K\x92\xfc\x9a\x22H|I\xd2\x91\x1e\xd9\
+\x91\xcc%]\x93&\x10u\xb1\x08\xfa\xa2?\xe6\xc1=\
+\x97\xd3\x04\x03\xd2rp\xaf\xc7\x5c\xd22\xe3\x82\xd7\xa4\
+.\xef\x0f\x9bKZf\x5c\xcdsQ\xd2\x97\xf5\x98K\
+Zb\x1c\xf7\xf0\xb1\xcc\x05\xf7\xf8\xec\xe5\xe6m/\xd9\
+\xd6\xa1\xe6|\xe7\xdd\xb2\xb31\xb3\x1f\x22\xd7\xb3\x02?\
+\xe8s\xa5\xfa\xb9\xff8\x09\x9a\xd6/N_\xacj\xaa\
+\xd3\xbd\xe8\xf9\xfao\xb3\xbc\xb3\xebf\xc2\x82f\xe6\x9b\
+\xbd\x00X\x1d\x85\x0f\x1fR\xb6\xd4`\xee/\x11\x1b\x13\
+*\xcb\x83\xf9gP\x17\x9f5\xb5H\x8d\x04\xa1a\xb3\
+\xf8\xcdo\xde/\xef\x1c?\xceT\xc7\x8d\xe6\xc7\xd7\xec\
+N\x1b\x99]\xfd\xbf\x1e0\xb7\x08\x00\xe3C\xb4\x06\x9e\
+\x10x\xf0\xf56\x8a\xd9\xc0\x22\xbc\xa3\xc1M\xd36P\
+z\xdf\x15?\xa4!mA\x05\x18k\x07\xa2\x85z\x01\
+\xda\x00\x87\xb6\x04e\x89A\xf4\x96,\x87a\xcd\xd1\x81\
+\xa5\xcb\xa9\xe3\x0cY\x18\x0b\x15V\x88\xd2ah\x0b\xe6\
+9\xc0P@I\xaa\xb3\x0c\x91\x16:?\xa1\xe3\xfe\xfb\
+\xd3\xed\x1a\xd8\x86\x92f\x1a\xcc\xd9!\x9f1Tc\x01\
+\xc0XV\xa0 \xccV\x17\x99P\xc2f\xc2F\x1d-\
+:\x9cF\xc85ld\xc8a\x1b\x0a-W\x1f\x001\
+\x19\x81\x8e\x0f\x00DFIG\x82\xc6E\x91\xb7QJ\
+\x01\x0eY\x00!\x0e\xcd\xa4\x81A\xa0\xad\x16z\xf5b\
+l#\xeaB\x8f'\xf4\xe7%\xf3b\xb0\x90d\xd9\xd7\
+\xbcH\xf0\xc1\x9dY\xfe\xcd>\xb6\x19\xc1\x99\x16\xd5\xcb\
+\xb1SW?K\x9c\xd9\xbe6.\x92\xeb\x09\xa33\xb4\
+n#b\xcb\xcc\x01\xf1\xa2\x14\x80:H\x07G\xd5v\
+\xb8hk\xd4`\x8c-l\x1eY\x88\x86m\x10\xc12\
+\xd2\xa4\x96(\x87\x1e\xeb\xa1Ln\x14YmB\xac\x96\
+\x1e\xfa v\xf3z\x1c\xc5j1\x8b^\xe9\xde\xd8\xde\
+e\xd1y\x1f\x94\xf9\x83K\xc3\xbe\xcd`V\xce\xc7C\
+o\x99\xa1e\xecM\x0c\x82d\x83D\x03Bv?\x8c\
+&\x9c\xcc\xb6\x8dd\xc0\xa8\x98\xb7t\x01\x8aC\x84h\
+\xacH\xd1E\xcd\xc0H&-\xe9\xc8\xe2\xda\xa1,.\
+\xb0#\xa9\xe4\x8a\x13\xd2i\xb2\x16\x89.>\x802\x8e\
+\x1aJ\xa2\xe2\x88T[\x00\xcdhhSjra\x1a\
+\xec \x03\x86H\xcc5\x06P\x97$\xae\xd1\x82(\x13\
+(H\xd3\xc8j\xa0\x22\xdd\x0a\xf0j\x98(9_4\
+9\x1cTG\x19f\x1e\x87\xd9\x00%\x8b\xa5\x0d\x12M\
+\x9c\xd3\xa2\x00\xa2d\xee\x080#\xd3Ad\xb3H\x88\
+\x09\xf9zN\xf6\x8e\xf17\xbcq\xfc'\x13\xa8\x0c8\
+\xe5@\xe3\xc9io\xfc\xf0|\xb2\x9f\x9d\xa1\x03\xff4\
+Y\xd3\xd5\x0fz\xd7\x0e8\xef\xb8\x168Y\xd5\xe8;\
+\x95 \xd6.S\x80\xd9\x000[y\x06\xb0\x1e&\x1f\
+D\xa7\x95\xcb\xee*m\xd8\x80t\x5c\xaa1\xbc\xb2:\
+V\xf6\x82u\xc6\x81G\x9d_\xd9\xaa\xc4USch\
+\x8e\xaez\xf9\xc2?\x17S\xb7W6p\xa7\xb2\xfe\x1e\
+\xcazd\x01C\x80\xf0&\x22]\xa9AY\x19\x95\x8d\
+\xf4\x01\xb1RvH\xbb6*[\xea\x80\xd6\x19\xa5\x1d\
+!\x96v%\xee\xde\x95\xe5\x9d\xca\xe6\xfb\x8c\xacr\x01\
+,^\xca\x06t\xd5tPVK\xa1R\x7fD\xea\xff\
+\xd5\xa8W\xa3\xb2^\xca\xd6\x19\xc3\xc8\x8a\x8f#\xab|\
+{e\xafQPw)\xe88S\xf0\xf2\x85\x8f.\x03\
+\x09m\x0c_z\x90\x1d\x05)\x0e\x00;\x98\xd1\xf4R\
+7w\xd05\x072\x1a\x0dV\x1e\xb1f\xa4\xc2\xa5u\
+\xf0\xf2u\xe7\xcd\xb5\xfe\x8f^.\xa4\x82\x1e8\xbe]\
+\x8da\xff\xec\xdd\xeb\xd5\xe3\xd5\xf7\xab\x1eJ\xea\x9b\x92\
+g\xa7\xffZm\xca\x81us\xfc8\xfb1~\xf7\xe3\
+\x06(\xea\xfa\xc7\xa0\x8f\x9f\xbd;?\xdf\xc6\xfe\xd9o\
+\xc4\xd4o\xc8\xd4\xeb\x845\xba;\xa9\xb8\x1d\x12TZ\
+\xa8\xe7\x1dq\xcey\xde\xfb\xad\x83d5#\xbd\xb06\
+\x90\xc3\x8a\x9c\xeb\x17%\xea\x17\xd7\xb3&$\xf3\xf9\x87\
+\xe0\xa7;\xcbP'\xfb=\x16\xea\xf70\xe1\xf9\x05+\
+\xd2\xfb\x9f \xdeG\x05\xff\xfb\x9a\xfeL>g\x9a\xb2\
+\xf7\x08N\x1e+\xbf\xad\xc9\xc5\xcd\xd3\x03\x22\xd7\x07{\
+\x10v\x953\xcd?\xa6\x13\x1f\xc3tb\x8f\x11\xa7\xcb\
+\x13\xc2q>\xf1\xfe\xf3\x87\xad\x99\x07\xa6\xf3\x94\xfd>\
+\xc2\x19\xc0\x95\x92\xcf\xac\xa0}\xebc\xa2\xc4\xc9Q>\
+\xaa\xfa\x7fYU\xe7[\xaa\xca\x93\xaa\x1fU\xf5\xbf\xac\
+j\xc0-U\xd5I\xd5_\xe1<`\x07\x13\x08x\x99\
+\x8ak\xd4\xf7\x07\xf3R|\x9e\x0fYn\xaa\xeb?\x86\
+r\xbcz?\x15\xe4\xc37C/\xfdp\xe2\xf5\xf1\xb3\
+\xd5\xeb\xf5\xb7E\x0f\xea\xd8\xae\xaa\xad\x06\x14\xfa\xa3\x9e\
+\xd5\x1a\x90\x99\xc5\xe1\x10\xf9\xa2\xccd\xbc\xc6\xceS\x1f\
+\xe2pf\x15E\x95\xa6\xaa\xc0\xc3\xe6(&!\xab\x87\
+4\x8b\x98\xc4\xa27\xad\xc0$(\x19\x13\xfeiN\xea\
+\xa4\xf65\x1c\x1b\xc7e\x8eK\xa2if\xda{1}\
+V_\x89\xdc\xa0\x03\xed\xaf_\xf5\xa7\xc7\xb2\xc1^\x1c\
+\xf7\xef8\x9f\x9d\x1d\xff4vmD\xaf/J\x95\xf9\
+\xc1|\xa2\x1d\xde\xa2R7\x8dQ\x02 %\xbd7\x8b\
+\xf8d\xad \x89n\x08X\x183\xa7\x8f\x95f5\xc3\
++\x91R\xb5\x0c\xaa\xd5e\x904U@\x91C\xc3f\
+,H\xd9\xb1C\xa3\xe6!`<4\xcaK\xebY\x1b\
+\xa1&\xfb\xf6Y\xd6\xd84\x1c\xd7r\xbd!\xd5U\xc6\
+k\xa2Vs\x8c\xdd\x0e\x90\xc6\x1d\xb3\x06aX)\xac\
+1\x93\xb0\x0f\x18\x19\x90V\xc2v\x0c\x1fO\xd5\xe4\xa1\
+\x8f\x89\x0dA\xc1\xea\x8d\xd2\x92\x9c\xb4\x0a@\x000\xa1\
+\x8eqS\x0e\xc2\x83\xacFO\xf1\xf5\xa2\x84#\xe9\xd8\
+\xf0h`c\xa3\xcc\xd4m\xad|d\xa3L\xe8=p\
+m\x89\x1c^\x9c\x9a\xb9\x1a\x17\xe4\x9c\xae\x5c\x9d\xa7@\
+\x1aN\x14\xb0Q\xa1\xca?\x92\xccU\xa4\x80\x93K\xd4\
+\xf433Y\xa3.(\x86^YY\x0e\x03\x8a\x8f\xaa\
+\x88\xb8\xd98\x06,\xa3\xa0\xa2v8F\xb2\xeen5\
+\xa4\x0a\xb7I\x98\xe4\xa0\x1f\xf8\xc5E\xedPa\xe0a\
+\xbbs\x8a\x1b\xc2.\x948T\x1ax\x15\x9bT-l\
+\xe4\xbf\xb8\xa8\xb3.h\x92l\xc9\xbenp6\x8bM\
+\x03+\xb8\x8e\x94\x0b\xfaa\x8d\x02:*\xd5\xd0\xa8\x86\
+Q\xc7\xb8\x85G\x10\x96\x5c\x1fz\x84<\x8e~!\x00\
+\x1c\xce\x83Q:b\xd4\xe0\xa7:S\x87\xb0\xa5\x199\
+O\xb6\xbd#>\xb3b^\x80\xe77\xecT\xda[\xe8\
+\xec\x5c\xbb@4\xc8\xf1\xc0Cl\x88\x18H\xf2`\xdf\
+U0b\x83\x07\xef\x1dK\xca\xbb\xe7\x81$\xfe-\x01\
+d\x1e(\xcai\x1c$\xab\xd0\x0dI\x95u\xd5\x8d\x8a\
+\xeaC\x89\x8c\x9c\x96X\x96Qo\xd4\xc2X\xc41u\
+pM\x17\xc5\x0e%\xb9\x12\x0c\xb3S/\x87 \x1c\xa2\
+\x87\xb1\x00\x96\x9d\xa25#\xc8\xa4\x0a \xa2\xe8f\x07\
+\xa8c8\xe7\x8a#\x96 9\xc3\xa4\xec\x88\xc9\xeb\xec\
+\x09\xd5\xc6\x08\xa8\xbe-\xd1\x9aJD\xf8\xf6\xb5\xbd\xb1\
+\x99q\xb7\xcc\xa9\x9b\x95\xd7\xc1\x19ytj\x8f\xe0\xae\
+9\x124\x84\x90(2\x1c\x12p\x80(\x0dd\x98\x09\
+\x0a\x82\xf2p\xb2z@\x14AR\xfdA(4Z\x18\
+T%ZY\xcd\x85\xb4cuq\x8e5ff>\x04\
+*\x07\x8b\x9a\xe7Lh\x11\x9d@`34\xb4\x09\x02\
+H\xccP\xcf\x86\x12\x8e:C%Z(&\xe7\x1c\xad\
+X\xc7\xe84C\xd9[ \x88\xf8\x0cEj\x94\x1c\x94\
+\xa5W\xa1\x8eF\xe5nH\xce\xa6\x07\xa9M\xc1A\xab\
+fj\x00\x11\xaa\xa5\xbf&F\xd5\x9a\x0d\xd3\x82T\xc7\
+\xd9\xb5\xb99Z\x99H\x88\xa7QE\x03\x111+\xfb\
+\x920\xa2\xdcer?\x1f\xf4\x94e\xcd`\x88\x11\x84\
+\x8d$\x08J\xa7\x09\x15j\xa2\x9aZ:Y\xb4\x94\x0c\
+\x90-\xf4\xa8PJ7\xd0-\xd4\xbc\xb9\x93J\x14\x96\
+l\x9c<a3\x9e&t\xe2\xffh\x1b\xb5\x06`A\
+1]\xa70\x09'\xf3\xa9G\x13\xb6\xdd\xfb\x05\x14\xc1\
+\x9a+\xc9\x90p\xa3\x11\x09\x0aN\x96\xdf\xd1\x1d\xac\xec\
+\x0a{\x0ct\xf3\x07\x14\xa1\x7fZ\x9c\xb8\xb2\xd1\xc7\x1c\
+\xba\x96k\x1f\x0b\xbc\xa1\xf6qM\xcd\xb1\xf6\x910/\
+J\x19\x08T\x0a\xa3\xe0\x94\xa8:\xc4\xd4H\x0br]\
+\xf3NZ\xa4{\xac3_%\xa0A\xb0\xd6\xa1\xb1\xe0\
+\x88\x80\xd4\xa8Lg\x1e\x1eY\x98X\x92\x0e\x99\xce\x93\
+P\xf3\x9e2\x9d)\xdec\xa6[.\x9a\x97\x93\x9f\xfc\
+\x91\xfc\xfeH~\xf7\x93\xfcB\x9aY\x8a\xddmF,\
+\xb4\x83\x98\x7f\xe4\xc9\xdfI\x9eT\xc8Y\xac\x9bG\xd4\
+\xd0y|p\x9c2\x89\xe3\xd5L\xe2p5\x93X^\
+\xca$\x0e\x973\x89\xeb\xe5L\xe2z5\x93\xb8^\xcd\
+$.\x973\x89\xcb\x95L\xe2t5\x938N\x99d\
+1\xc6\xf3\xb5\xf5\x81\xfd\xea\xeb\x83\x9b\xf3\xe4\xc3)Q\
+\x226\xb7NX\xb4\x08\x17\xbe\xcdd0\xf6c\xec.\
+W\xee\xe6vL\xd2d\xed-\xe0\x5c\xde\xe2\xcdj\xf1\
+\xcdE\x98\xf3\x02\x80h\xa4\x1a\xd8\x81\xf9);\x5c\x89\
+\x98\xb8\xc0k?\xd5\xba\xb9\xae\xb8\xce\xe4\x1c~\x9d&\
+\xe7D\x97JR\xc468\xbc\xe6f\x19e{q-\
+\xd6\xabd\xb8\xb5\xb8\x16\xd3\xdaZ\xbd\x96\xe1m0\xfc\
+\xe1\xb4\xc26\x9d\xba\xb5\xc2\x96\xdb\x0bl\xc8\x0d\x18\xa9\
+#\x17\xab6\xa8\x0d\xd5\x0a\xbaXM\x9a\xf7oW\xe0\
+t\xd0\x0f\xf1\xa2l\x16B\xcb^t\x8d\x11\xd0G\xe2\
+EW\x9cf\xc9\xad&/\x1a\x01\x8f\xe6\x8a\x19\xba\x01\
+$+C\xa1\xd1\x15O\xdc\xc5<\x13,\xb1\xb6\xf7\x02\
+\xf6\xee@\xe5\xf2\xe0\x12k\x0dP\x9c\xd5o\xc9\xde\xb2\
+kp\xda\xdc5\xc6e\xc3N\x04\xd3\xb0\xca9_\x9d\
+\x85\xf1Yb}\xc0v\x12\x94\xf2\xde\xa6\x09-\x093\
+E\x0f\x1ffc\xb0\xb1\x0al\x99$d\xf9`\xb96\
+\x88\xd4\x0f\xec\xf7=\x8d\x9d\xfd\x02c\xf7\xe1D\xef\x9f\
+M=>\xe68\xa0\x8c\xa5\xa0qKd\xe3Z\x07g\
+lL\xaa4L\xe6\xdcI\x9c\x0e8\x9aJ\xa8\xc7\x10\
+\xc29\x01\xe4@\xac\x81&\x9a_`\x5c\xf546u\
+\x0a\xc2-\xd4\xb5%\x03a\xd6u\xc80C\xc7\xceh\
+\xb6\x84p\xe2\xdbE\x98H\xdf\x7f<\x02>\xda\xf1\x08\
+k\x8e\x95\xf3\x08\x1a{\x10nc\x12-D|\xf6>\
+\xcd\xc6\x86\x149\x96\xe2\x04L0\xce\xcb-\xc0\xa3\x06\
+\x03\x0c\xd5\x86\x94i\xa0\xc8| \xda\xdc(\xd1'\xac\
+\x06=\x9a1\x0a\xdb\x16\xca\x95\x03\xd3u\xc00\xc8{\
+'I\x1bE\xb8\xd6Hr*\xa0\xfc\x06\xec(\x11n\
+aG\xf4+\xf3k\x8a\x86D\x198\xd4O\xe6F^\
+c\x14\xe2$Y\x98eP\xd8\x01k3u-$\x89\
+\xc0\xa2\xc6\x92\x1aZ\x8ax\xa1\x0eb\xce%\xcf\x15(\
+\x0bbM\xe22\x0e\x19B\xe9p]!\x91X\xcfp\
+=\x0a\xa52\xc7t\xd0\x19*\xd9\x1c\x125g\xa8A\
+\x03%\x8f\xa1\x80\xa4&\x0cY\x86\x88\x8d\x9cI\xf1\xc0\
+\xbd\x05a \x95\xb93\xa1\x99\x0c\x13HL\x1c\xf5F\
+V\x87\xf5W4P!M\xea\x9d\x14\x0a)\x07\xc1\x0d\
+B\x98b\x90\x08FA{[R-j\xec&\xcb\x9b\
+\x00)p\x99.\x90\xa8\xea\x01gC'\xd5,\x0c\x01\
+\x1d\xfd@\xa0\xa5:\x04\x0f\x98\x92\xda\xe06\xd9\xea(\
+E\xa1\x90\x0eI\xa3DT\xb2\x01cp\xd3\xabW\xde\
+m\xd9y\xf1]\x88\xfaW7\x80\xf9\xfc\xff\x01\x9e\xd5\
+\xc9%:P\x01\x00\
+\x00\x00\x18\xd8\
+\x1f\
+\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xed}ms\xdbH\x92\
+\xe6\xf7\xf9\x15:\xcf\x97q\x1c\x99\xca\xf7\xccrw\xcf\
+F\xdcL\xec\xc6F\xf4\xc6]\xec\xce\xc4~\xdc\x90%\
+\xda\xd6\x8e,)$\xb9m\xf7\xaf\xbf*\x90\x12X\x14\
+-\xd0l\xda\xdd;c\xb8\xdd&\x1eTUV=\xf9\
+\x06\x14\x80\xc2\xf7\xff\xf4\xe1\xed\xc5\xd1O\x8b\x9b\xdb\xf3\
+\xab\xcb\x1f\x9e\x11\xe0\xb3\xa3\xc5\xe5\xe9\xd5\xd9\xf9\xe5\xeb\
+\x1f\x9e\xfd\xf5/\xff<\xcfgG\xb7w'\x97g'\
+\x17W\x97\x8b\x1f\x9e]^=\xfb\xa7?\xfe\xee\xfb\xff\
+5\x9f\x1f\xfd\xe9fqr\xb78;z\x7f~\xf7\xe6\
+\xe8_/\xffv{zr\xbd8\xfa\xc3\x9b\xbb\xbb\xeb\
+\x17\xc7\xc7\xef\xdf\xbf\x87\xf3\x15\x08W7\xaf\x8f\x9f\x1f\
+\xcd\xe7\xb5\xe6\xedO\xaf\x7fwttT\xc5^\xde\xbe\
+8;\xfd\xe1\xd9\xaa\xfc\xf5\xbb\x9b\x8b\xa1\xdc\xd9\xe9\xf1\
+\xe2b\xf1vqyw{L@\xc7\xcf\xc6\xe2\xa7c\
+\xf1\xd3&\xfc\xfc\xa7\xc5\xe9\xd5\xdb\xb7W\x97\xb7C\xcd\
+\xcb\xdb\xdf\xaf\x15\xbe9{UK\x8f\x9dy/C!\
+*\xa5\x1c#\x1f3\xcfk\x89\xf9\xed\xc7\xcb\xbb\x93\x0f\
+\xf3\xbej\xed\xe3\xb6\xaa\x8c\x88\xc7\xf5\xd8Xr\xb7R\
+/>\x5cT&>\xd9\x99\xe1\xe8\xba\xf4\xca\xfeu\xfd\
+\xfbP\xe1\x1e\x80\xdb\xabw7\xa7\x8bW\xb5\xe6\x02.\
+\x17w\xc7\x7f\xfe\xcb\x9f\x1f\x0e\xce\x11\xce\xee\xce\xd6\x9a\
+\xb9'\xbf\x93\xdbi\xe4\xf2\xe4\xed\xe2\xf6\xfa\xe4tq\
+{|\x8f\xb7\xfa\x9d94\xa0j\xf8\xec\xeeM\xdd\xe5\
+\x1cv\xdf,\xce_\xbf\xb9\x1b\xf7\xcf\xcf~xV\x07\
+\xcc\x8e>\xec\xdfw\xe9\xc5CC\x08\xc2\xc3\xa1{9\
+\xeb\x87t\xa3\xd6\xd9\xd5i\xedY\xed\xf7\xeb\xab\xf9\xe5\
+\xe2\xc3\xdd\xfc\xa7\xf3\xc5{\xa8\x02~\xee\x9b\xb8zw\
+w\xfd\xee\xee\xbfj\x89\xc5\xe5\xb2\xad:\xa8q\x84\xcb\
+\xc3C\xbd\x07\xb0o`\xf1\xe1\xfa\xea\xe6n\xfe\xea\xfc\
+b\xb1\x14x\xfc\xe6\xea\xed\xe2\xf8\xfa\xfc\xb2\x8e\xf0\xe6\
+\xaa\xfe8\xbd=\xbe\xfa\xf0\xf1\xf5\xe2\xf2\xb8\xd6\xb88\
+yy\xb18>9\xbd\xab\xb2n\x8fk\xe7.Nn\
+W\x9d\xbb\xbe|\xbd\xb5\xe9\x0fg\xd7U\x8d\x1e`[\
+\x0f\x7f\x1c\x0f\xff\xb1\x1e\xff\xfe\xed\xe2\xee\xe4\xec\xe4\xee\
+\xa4\xfe^\xd1z\x8fh\x0c%j\x99j\xb4/\xfe\xfd\
+\xcf\xff\xdc\xf6\x86\xfd\xd3\xd3\x17\xffyu\xf3\xb7\xba\xbb\
+\xdaZ\x81\x93\x97W\xef\xaa\x82\x86:\xabrg\xa7/\
+\xaa\xe1\xbc=\xb9\xfb\xe3\xf9\xdb\x93\xd7\x8bf\xa1\xff\xbb\
+\x1a\xca\xf7\xc7\xe3\x81\xae\xf0\xdd\xc7\xebE\x05\xbafo\
+\x16K\x0b\xdc\xe6\xb4\xf5\xbf\xb7\xe7\xad\xd2\xf1\x7f\xdc\x9d\
+_\x5c\xfck\x13\xf2\xec\xe8\xf8\xa1\x9f\xc7\xab\x8e6\xa0\
+\xed\x8e\xe3\xa8;\xf7\xc3\x1c\xf6\x1e\x0c\xa1)\xe5\xac\xf1\
+[\xd1u\xf6\xde\x9f_\x9e]\xbd\x9f\xdf\x9b\xa1G>\
+\xdb^\xe2\xden)c\xb3\xc4u\xed\xde\xed\x9b\x93Z\
+\xea\x87g\xbc\xed\xe0Uu\x8c:\x9ef\xa0\xb8:\xfe\
+\xfa\xdd\xf9\xd9\xe2\xee\xeabqsr\xd9H\xa0\xb5C\
+7U\xd4\xd6#W/\xff{qz\xb7\xfd\xd8\xcb\xab\
+\x9b\xb3\xc5\xcd\x83$\xda8pzuqu\xf3\xc3\xb3\
+\xdf\xfb\xb0\xad\x0e\xb5\xbe\xdd\x1fx5l\xcfFsy\
+yr\xbbX\xed\xde\xbe\xb9z_{U\xc1\xbb\x9bw\
+\x8b\xcd\x11\xfe|u\xf5\xb6\x0d\xcd%\xd1D\x1e\x11x\
+\xfa\xe1\x87gs\x12\x04\x16\x11\x7ft\xb4u\x96\x02\x9c\
+)?\xc5}m\x00?q\xa8\xd6V{\xdc\xe8\xbb\x9b\
+\x9b\x1a\xf4\xabW}\x5c\xdc\x8c\x01e\x1c\xcd@\xff\xed\
+\xf6\xf1\x0c\xc7\xe6/_^}X\x1d_\x99\xd9X\xa0\
+Rqo\xce\xd5J\xab\x1e\xaa_W\xac5\xf4@_\
+\x03X\x99\x1f\xc0\x9f\xceo\xcf\xab\xd3\x8f2\x87\xadF\
+\x8b\x0a\x9em\xa0-\x92\xd6\xacY;\xc0\xe0u\xbb\xfe\
+\xb0y\xe8\xe3\x96C\x8b\xb7\xd7\xab\xa3\xf5`\xf3\x97\xc1\
+\x1f\x1e\xbb\xc0\x80\x9f-^\xdd\x8e\xcan{\xec\x98\x8f\
+\xc6z]c\xeb\xf5\xe2\xb4\xa5\xc7\x95\x981\xb8.\xc7\
+\xde\x17\x95\x91\x851>_\xffW\xd3\xe0\xd1\x8b#\xd7\
+\xfa?\xdaZ\xe2\xe3\xb2\x04!\xb6\x7fpk\x99\x9f\x87\
+<\xb1\xad\x9d\xbe\x0b\xf3\xab\x9b\xf3\xd7\xe75\x88\x0f\xe5\
+tI\x94G\xab\xd3\xe9hmpZ\x1e\x02\xcc\xf75\
+\x87.Nn\xfe\xe5\xe6\xe4\xec\xbc\x1a\xd1z\x85\xfe\x88\
+h\xad\xf5\x10\x94n\xef\xae\xae\xdb\xef\xb1tCDm\
+\x94Y\xb9\xbb\xfbx\xb1X\x1e\x99\x0f\x9e\xf7\xe2\xf78\
+l\xdf\x0d\xd0\xca}_\xacW\xb9z\xf5\xeavQC\
+\x13\xd6\x0eN\x0b\x93\xcf\x17\x86[\x84\xd1\xc8\xc6q?\
+\xe8\xcf\xe5\x88\x8bMr\xc4%\x9e\xee\xb6\xcb\xa2\xbcz\
+u\x18\x8e\xb8\x94'\x85\xad\x22\xe1W\xe5\xc8q\x9a#\
+\xe7\xe9n\x1f\x8c#\xd7\xdf\x1cG\xc8\xd3\x1c\xe1D\xb7\
+O\xcf\x16\x8b\x83q\x84\xfe\xb4\xb03^\xe4\xe2\xec\x00\
+\x1c\xd5\x93\xca\xbb\xc5\xcd}\xc5\x96M\x11\x08\x19\x03\xc9\
+V\xed\x8d\xe7\xd5\xc0\xa8\xa48\xc6\x81\x8f\xcb\xf2\xac\xc5\
+\x1c\xe9\x1e\x1eO\xbc\x81\xb5\x14\xe2.0.%\x8ad\
+\x8c\x9c\xbfZ\xfc\xcb\xc9\xbb\xdb\xdb\xf3\x93\xcb\xffs\xf1\
+\xae\xf5f3\xf8\xd6a_,Nk\x93'\x17\xefO\
+>\xdev\xe4\x9c\xfdy\xf1\xd3\xf9\xc9\xdd\xfdY\xba\xba\
+\x99\x17z\xd6\xd3\xdaK\x10\xc9\xb2\xc6\xcc\xb2K\x9fi\
+5\xae\xa8SV\xe3:\xa5HLZ\xc8\xe2 V\xe3\
+\x8a\xf9\xb40\xc98[\xe8\x84\xb0Cz\x96\xd7m\x92\
+#\xf7\x89n\x97W\xa7\xf4\x8a\x0f\xe3Y\x94\x13Y\xcc\
+2\x16/m\x07a`;\xa8\xc4\x03'\xf4\x7f\xca'\
+\x96\xdb\xc4\xed\xef\xc8\xbd\xa3\xd1\x17r4scK\xce\
+\xa7\x1d\x8d>\xd7\xd1>\xd0\x0f\xcfB \x94]r\x0c\
+4\x15%\x03\x117\xd5\x07\xf4\x03\xd7\xb2\x09E\x8aH\
+\x19\xcbV\x94\x1c\xc20lD\x1f\x1b\xa7\xa9\x8c\xca\x19\
+&7^\xbc\xb9Y\xbc\xaa\xd7+\x8fR\xe8X\xee\xf5\
+\x0a\xfc\xeb\xe5\xf9]=\xc7\x7fw\xbb\xb8\xf9\x8f65\
+\xf1\x7f/\xffz\xbb~\x8e]\xa7}\xce\xfemq\xf7\
+\xe6\xaa\x8a\xad\x8d6N+\x0f\xd3#W\x08\xebG\xad\
+\xc0a\x99\x07\x1c5\xef6\xeab_k\xd4\x14\x05(\
+\x98\xb5\x1f9\x0b\x84\xa5\xf7#\xa7\x10(\x89A\xdd\xc8\
+\xdd@5\x89\xf8\xe9\x91\xfb\xc1G\xde\x97\xfaK\xbdv\
+\xbem\xb3\x14\xf5\x9a\xab\xfd\xbc\xa8\x13\x8f\x7f(1\xc3\
+\xe7;\xd1P\x1c\xd4S\xbd\xa3\xc1\x05H\xd2\xc8:\x1a\
+\x8c\x81)\xd5\xb3\xa7\xc1\x81Y\xd5\xe2\x09\x1a\xb8\x98\x1c\
+\xca\xec\xa7i\xa8\xf357\xe7\x1f\xfe@\x80\xec\xc5\xd1\
+gX\xff\x8c{sF`\xd4\x882\x9b\x13\xa4\x98\x87\
+\xf9Nde,\xb9\xeac\xc4\x1cA\x9c4\xd9\xbc\xb7\
+\x1ar\x08J\x8d\xde_\xd0A9\xcc\x9f\xa6\xcb\xff\x0e\
+\xe8\xd2\x80\xe2\xa9\xc1\xbd\x8b\xf9\xd2\xb6\xa2#K\x0b0\
+\xf5e+\x9a6pe\xe5i\xb2\xcand!\x7f\x15\
+\xb2\x0c\xeb&\x8d,/\xa2,\xb4FVk\xf0\xe4b\
+\x93\xac6\xa3DkCosH1Z\xc0Mu\xbd\
+q\xefU+\x9c\x09\x99\x142\xa2\xb5\x0a1\x81*\x93\
+tl\xf5\x22\xb9\xf8N\x9e\xe8u;\x18[\xf3Gt\
+\xa1\x9b\xfb\x8c\x99A\xc2)*Y\x0c\xea^<w\x22\
+kN\x0e\xee\xa9\x99\x1dg\xe9\x90M\x8e\xadS\xe78\
+\x92\xd4U\x1d\xe1\xae\xea\x93\xdc\xe5N\x96\xa6Z\x0e\xc7\
+\x1d\x02[\xbac%\x09\xc1\x98XC\xdb\xcf\xe4PQ\
+\x9d!(\xa1#\xd1\x8c\xd4\x81\xa5\xa8\xcd\x0c\x01\xcd\xac\
+\xd8\x8e9@\xc1\x1e\xa5\xc1\x82\x9e\xd2\x074T`\xeb\
+\x1c\xd4\x80\x9a\x98\xe4'\x1d4h'\x93S\xd4\x03\x9a\
+\xdc`j\x08\xe9\x84\xea2cJ\x88\xe6\x94*N\xe9\
+1\xc9\xcc\x10\xac\xa3\x0f\xe9s\x16\xef\x89B\x1d\x0b\xd0\
+X`:C\xe3l\x9eM]\x9c\xa2\xcfw\x1b\xf6\x13\
+\x1c\x0b\xeeh\x9a\xc8U\x17\x13'\xe0\x13\x1e\xd8\x9cJ\
+\x0c\x948K\xe9\x9c(\x1c\x0a\x9a\x17\xe9=\xae\x00\xc9\
+\x90A:gu}\xd6\xb94\xe3n\xc4\xcd\x89\x0b4\
+)\xd5\x0b\x18,\x8d\x8b\xe8b\xee\xfb\x90\xd8\x8fOp\
+\xb7L\xc2\xa5\xe0g\x90xzq~\xfd\xffN\xee\xde\
+\xac\x0b\xbe\xc7\x04mt\xa8{pk\xbf\xc7\xeb\xa9\xeb\
+\xb1\xad\xf1\xfa\xee\xe1:\xee\xbbz\xbds\xf1\xa2\xde{\
+\xfa\xc3\xef\x1f\x8f\xee\xf9pt>\x16\xbe\xbd\xbb\xb9\xfa\
+\xdb\xe2\xc5e\xbd\x7f\xbd\xfa\xbd\xbc1\xf4\x02\x81$\xb4\
+\xd4\xed\x1eo\x1c\xd4\x81\xbe\xb8\xb9zwy\xb6\x0e\xfe\
+\xf7\xd5\xf9e\x8f\xd6\x9b]\x8b\x9b\x8b\xf3\xfa\xcf\x0b\xbd\
+\xc7\xceN\xea-\xa5\x9b\x9b\x93\x8f\x9d\xb0\x86\x0e\x97\x9b\
+\xb5$\x90\xad\xe0\xadW\xa5\x95\xb5\x7f;\x9a\x13\x13p\
+b\x99q\x013t\xe5\xa3?5\x94\xc1\xdc\x9cg\x9c\
+\xc0n\x85\x1b\xa6\xe0\xe2\x16\x1dfP\x98x\xbd\xfa\x8f\
+\x15\xd6{\x8b2\x06O\xe7\xb2\x84\x83\x81\x0a\xdb\xa6\xb0\
+\x10\xd0\x08\xa1\xf5\x86\xc3\xc04\xd9;\xcc!\x85Kn\
+\x08K\x01C\x97\x9980K\xf1e\xa3\xa9\x10\x85\x90\
+g\x12`\x98\x9e\xd2\x81\x05,\x8asY\xab\xaf\x08\xe9\
+*64\xea\x08\x12\xe86s\xed\x84d\x00\x89\xb9\xf5\
+22A\x19%h\x1d,\x08ZH(\xd6\xaa\x17\x82\
+\x08G\xc9\xd6\xe88\xa0\x92\xa0Z\xc4\xb25;\x8e\xbd\
+\x14\x08Q\xcc5\x8eFl\xa4s\xac\xde\x93\x1f\x06B\
+\x12\xd8\xe0QU\x9d\xb0Q\xabc\xc3\xa3\xf6Gl\xb4\
+\x93^\x16)8\x86\xe58\xb0\xa1Q\x12\x10\xe6\xf4\x91\
+\x83updkl`$\xb65+\x01\xa1\xc2R\xd9\
+\xef\xc4\x8c:\xea\xa4\x8c\xda\x1c\xc1Q\xef\xeb\xf5G\x1b\
+\xf9q\xab\xed\xff\xbc1\x13r\xbd\x8c)\xb16\xffq\
+\x1fU~\xcb!\x9d\x99@E\xedK\x84t\xf9\xea!\
+]\xcb\xde!}S\x91\x8f\x03 \x93\x80[Z\x1f\x93\
+\x98\x14\x8a\x0a\xaf\x07@\xa6\x00$\xa5\xe8\xb0\x04.\x99\
+\x1b\x01\x90u\xc5\x7f\x1f\x00\xd9\x15,\x90\xca\x8607\
+H\xd3B\xeb\x0d{@aK\xef\xb0\x02Lh\xb9!\
+,\x0c2\xa5\xf4\x01\x90#\x80<}=\x00\x8e\xe0\xe8\
+2c\xfd.\x00\xb21\x84&\xb7\x00\xd8\x09\xb9\xf7\xd3\
+^\xc6\xe8\xd2#8:\xffX\xbd\x0b\x80\xe3\x80\xba\x98\
+4\x8e}\x8c?#G#6\xd29V\xef\xc8\xef\x02\
+\xe0\xa8\xaaN\xd8\xa8\xd5\xb1\xe1Q\xfb#6\xdaI/\
+\x0b\x1dJ\x1am\x04@F\x83@\xd4.\x00\x8e\xe0\xc8\
+\xd6\xd8@\x17\x00Y\x10\x881[\x00\xec\xc4\x8c:\xea\
+\xa4\x8c\xda\x1c\xc1Q\xefc\xfd.\x00\x8ec\xea\x02\xe0\
+~\xa7B\xf2?\xeeT\xe8\xd3!\xbd\x0fe_\xfa\xea\
+c\xff\x0b\xa3'\xaf_8\xfe\xf1\xae_\x0a\x01R!\
+\xe4C$:\xca]\x13\xdd\xdf\x0f\x81\x99\x87$\xd0\xff\
+\xfe\x09\xecO\xb7\x0eL \x96\x7f<\x0b,zH\x02\
+\xe3\x1f\xd0\x02\xed\x90\x04\xd2\xae\x04~K\x22['\xb8\
+\xcbA\x93\xc8?\xe4%'\x97\xc2\xbb\x92\xf8m*\xf6\
+\x93$\xe6\x97\xb7\xc4\x03\xdeo\x9f+B\x98&\xcb&\
+\x13_KS\xdbI\xd4\xafi\x89*\xa0\xa1\xe1\xdc\x8d\
+\x8f\xd0\x80C\x95\xbb\xf1\xb9C&%Z7\xbc$\x10\
+\xb6\x08\xebF\xe9:\xf1\xb8\xc7\xf4\xed \x84 \x16\xcd\
+v\xe3\x8c\xd8\xd1\x92f\x08$j\xc1Z\x7f\x85\xa3:\
+\xc5,@\xdd\x8c\xd1f\x8c@\xa1$\x87\x08\xabR\xbe\
+\xe9\xe1\xf3\xf40'D0Q\xcdC*B\x88\xf2k\
+\xcf\x06\x12\xe9An\xf0\xf4s\x19\xfd\x98v\x9f\xcb \
+\x07-\x86\x88\xa9\xbf\xad\xfb:^\x00\x8b\x84\xcd\xd8\xc0\
+\xa5\xe0r\xa61\x08XRK\x19\xe0\x82%\xb3\x82\x02\
+\x1c\xe9<c\x07\x0b7\xb1\x8a)D\x12\xd7\xea\x09\x84\
+\x11e\xa8^\x08\x02\xadH\xce\xd4\x00\x855l\x04\xcb\
+,\x18B\xcd\xb1\xac\xd5\xcf\x02\x1e\xc8\xc5[}\x0bH\
+s\x0b\x9e\x11:X\xd1R\x8b\x0a\x02\xa9\xa8\x94\x07\xb0\
+\xf6\x89\x04\x982\xfa\xfa\xb2\x14\xf4 'W\x08?t\
+\xc7\xc7\x9a}\xcf\x9b\x9e\xd4\xc9u\xc6\x0a\x99\x051\xda\
+\xf4\x17\xb89\x935\xb0\x109g\x05\x15\xeek?\xd0\
+\xc69\x90\x996\x13\x02qW\xf3\x01$d%\x9d\xc9\
+\x927\x8c\x87\xdaR \x8a\xf1J\xb6\x02;\x91\xe8\xcc\
+\x10\x14\x0b\xb9\x8d \xcd<*\x88\xe4\xa3\xecH@R\
+\xd4\x8131\xd0\xac\xdbpm\xe9\x1c\x85\xablc0\
+\x22\x92{\x8c*\xe6\x02\xc4\x1b\x95C $3\xca\x83\
+\x94\x18\xc1|\xe8O\xdc\xd7\xee;\xee\x08^\xc8\x0a\xcd\
+$@\xd9\xa3P\x15]\xa08\x15\xe3\x99\x08D)\x82\
+\xad6\x01\xe7P\x1f\x9b\xba\xee\xeb38\xa2\xb5\x98\x13\
+`J\x1c^\xc1fx\x85$\x9a\x09\x9a!\x9bn\xb5\
+\xd6\x9f\x8f\xaa\x15\xab\x0e\xbdb\x07\xb1{Uj\x02\x9b\
+&G\x83[\xafHj\xaf\x08\xcc(\xb2\x82\x05\x92I\
+\xdd\x96`\xebe1\xb26U\xbeB\xdc\xee\x91?-\
+\x11I6\x9ey\x82\x9b\x0bQ\x05\x11\x88B\x93fA\
+@I\xa1Z\xe5\xc6\xca\xa4\x83\xc1\xf4\x9e#5P5\
+\xe4Y\x08\x14\xcc\x94\xac\x18\x83\x99\x96|\x00[m\x5c\
+\x9ae_[\x022\xd9(\x1e\x04q\x05\x1d\xd4\x9b\xf8\
+\xf5.\x89w=\xffq\x85\x88\x8cc\x19*\x86ZJ\
+3\xd3\xc2\xaa\x1c\x83\x08N\x16j\xc4\x94\xb0T\xabX\
+B\xac|d}(\x08dF\x85\x9b\xba\x884Vc\
+\xc1\x92\x88>(\x81\x15\x8d\x1e\xabe\xfbm3\x22\xdf\
+2\xc7\xfa\x0f\x91lK\x80\xbb'\x1d8\xd9\xf2WO\
+\xb6\x98\x07\xba\xf5F\x84\x8fr\x14\xb9\x03\xb3c\xf6I\
+\x8a<A\x02\x93\xd7\x93\x14\x05\x82\x12\x16[\xcfR\x14\
+\x04\x85\xc4r#\xd8gBJ\xb2\x8fij\x1d\x1c\xd3\
+\xd4\xd8@\x9f\xa7\xc8\x14JfYOS\xc4\x01\x1c\x16\
+\xde\xa5)B\x10#\xdc\xa8_\x04\x94]J\x8c\xa9\xea\
+\x1eT\x8c1[\x8d\x0dl\x8e\x80\x04,R\xcbz\xba\
+\x22J\x88L\xd3\xf5tE\xcc\x80\x18\x22}\xc6\x22\xb6\
+F-\xd1\x98\xb1V\xa0ht\x19kl\xa0OZD\
+ E\xd4\xc7\xa4\xb5\x0e\x8eIkl\xa0O=$\x0c\
+\xce\xc4\xb4\x9e\xb7H\x0b\xb8\x8a\xfaz\xe2\x22G`{\
+\xdc@ d\x10\x8f\xa9k\xc4\xc6\xcc5V\xdf\x1c\x80\
+\x05$K\xe11y-A,\xca\xb9\x9e\xbc\xc8\x12\x94\
+\xc4\xb2\xcf^d\x05B8c={\x913\xa4\x90\xfa\
+\x98\xbd:;\xee\xd3\x17)-\xbb\xd6g0R\x03\xc9\
+ [\xcf`\xa4\x09\x9eJ4f\xb0\x15(,\xd2\xa5\
+\xb1\x11\xees\xd9\x00\x07Z\x978H\x03XK\x9f\xcb\
+Hui\xf7}:\x22e\xb0\x08\xb1\xf5lFR\xc0\
+3\x84\xeeAmX\xac\xcc\xb6\xaf/\xd6\x14\x98\xba\x9e\
+\xceH\xa4\xb9\x0bF\xd7+\x91G#\xf8q\x0d\xee\x13\
+\xdb\x00\xa3\x17ZOl$\x0aJ\xea:f\xb6e\x0f\
+r\xe5O]\xc7\x028\xc3\xba\xd4\xd6\x06\xc6\x82\x22c\
+j\xebT\xd6e\xb7\xdd\xaf\x1e\xf8\x7f\xde\xd5\xc3\x964\
+\xfd\xed\x9ax\xffIs<d\x9a\x9ez5\x8c\x93&\
+\x9b\x99xwl\xfb[_\x9c\xf2\xc4\x9bc\xc2\x19\x9c\
+\x91\xad\xc8\x84\xf4]\xdf\x1d\x1b\xef\x863\x01\x0aq\xff\
+\xb6\x8c\x10H\xb8G\xf6o\xd6 \xb8k\x1aww\xc7\
+\x0bCVPt\xc7g\x87\x81E\x98\xb9\xcc\x08\x0a\x19\
+\x16\xa5\x03<B\xccl\xbb=\xa6\xad\xbe\x8b!L\xb2\
+\xa6\x0e\xcc\x99V:\xda\xacT\xd4\x12\xa3\xa3- K\
+\x08St\xb4\x8dew\xa5\xcdY\xbc\xd2v\x10\xba\xb0\
+|U\xba\x88\x02\x84\xc5s\x07\xba\x18\x81S2h\x82\
+\xae}\x07\xefn\xb1\xd3\xe0\x9dv\x0c\x1a\xfb?\xc8B\
+\xe0FN\x5c\xaaN\x7f\xbbt\xd9\xc1\xe8\x9a\x8e\xb1\xae\
+\x96_$\xc6\xba:>\x11c9U\x952\xf6\x8a\xb1\
+\xdb\xf3\xf7\xf4{XQ\x8c\x90\x96o{\x8c{\xf3\x02\
+\x16\xe2\xe4^\x7f\x0a\x14\x09cy>\x91\xaawU\xf3\
+xR\xc1`V4\xbd?\xa9\xa0\x04R\x93\xec_\xd9\
+b@\xc50\x19O\x1f\xb6\x96=\xed\xca~:o\x17\
+7\xda\xc5\xa6\x8a\xab\xfcb\x17l\xe2\x1f7;\xf5\x96\
+}q\xb5mo\xb1O-\xc5\xb1e\xfd\x98\xefj\x0f\
+\xa7\xa5\xc5\x16i\xf4\xb44\xe7m\xd2\x0e\xb5\x16\x01[\
+\xe4\x14Kl\x89\x9f\xcfR\xc4~,\xb1%\x7f>K\
+\xa7\xf4%YrU\x9f^\xd5Bs\x1f[j\xdb\xe7\
+\xb3\xe4j8\xc1\xd2\x8e\xd2\xf0\x10,\xed\x9e\x1c&i\
+t\xe2}h|\xf9*q\x0f\x1a\x9dt\x82\xc6Ii\
+\x87\xa7Qh\x9a%\x91=\x5c\x12%p/\x96\xc4>\
+\x9f\xa5\x97\xafl\x81_\x90\xa5\xe9\xf0\xee{\x86w7\
+\xb7}X\xd2\xd8\xc7\x96\xce\xaa5})\x96\xd8\x1c{\
+\x96&:c\xe5\xb1\x81LP8\x06n\xe7\x8e\xa5)\
+iy\x86\xb8\x934\xda.M\x0fgK\xa1\xd3\xb6\x14\
+\xfe\xf9\xb6\xf4r\xcfS\x05\xf7\xc8}l\x89\xea\xf6\xa5\
+lIXbzA0)\xfbx\xdc\xe2e\xbe\xfc|\
+\x96\x84\x95~kI\x90K\xc1)\x96j\x99=r\xdc\
+\xe9\xb0\xed\xc8R/m\x9f\x1cG\xed\xcf\x97:\xa1\x12\
+d\x9a\xb4%\xe4=r\x1c\xe2.\x1e\xf7\xd9M \x90\
+\xb9\xb8\xb8~\xf7\x89e\xaf\xb6\x0e\xa0\xec`\xc4(\xb4\
+\xb5Igv\xa5\xca\xd3\x1e\x9d\xf5\x0c\x0e\x0e\xd9\xc5\x89\
+\x90'\x92\xfb\xeeb\xc5\x87?1e'\xdbW;\xdd\
+\xbeN(\x9b\xca\xde\xeb\x8eN\xafg:\xbd.\xea\xf4\
+\xea\xaa;\xae\xd3:q\x0d;\xb5\xdc\xd8\xf4$\xde\x13\
+Q\xc9\x83>o\xf6\xa0\x9f`\xea\x97\x13\x12\x82 \x0e\
+\xf5\xa9\x99\xab\x8a\x96\x04\xf2\xa0\xb0\x9d\xd6\xac!W\xb3\
+\x90\x875k\x8a\x13\xc5L\x1c0\x8bV|N\x90a\
+%\xb0<\xffU\xd9\xcc8\xe4ZX)\xa0\xc4e\x86\
+\xe0\x8ai61\x0d\xd4\xa9\x88\x09\xb0h)\xda\xa9\xa8\
+\xa2\x84T\xd1NCd@YH\xa4\xd3\x10\x07 F\
+\x9an>\xb8yPF\xeb\xf6\xd4\x03\xa8^\xf0\x90\x0b\
+\xd2\xb8y\x88\xd8\xca\x8e\x98\x95\x0b\xc6\x8c$\xc1]\xb2\
+\xcc\xe6\xa2@\x89Q>E\xf5\xf5\xc9Y7\xe1\xa5\x0c\
+\x81(\xc6\xfd\xe4\x18\x0aXb\xf7`\xf4XtD\xbb\
+\xa2[f\xe7\xbe\xac-\xa3>i\xcb\xc5\xf7\x88\x0cR\
+ \x94\xca\xe6;\x95$`\x9a\xd2\xdd0\xd9V\xb6\xa2\
+s\x83\xc2b\x9c\xb1\x9b\x93\xa8\x83\xcf\x18\xc8\x16s\xfe\
+\xa2\xce/\x5c\xec)\xc2\x02e\x0f\xc2\xe6\x8eP\xd4\xd8\
+\xa8g\x0c\x0dR\xd0zG\x9d[\x01%c\xb5\x8e2\
+5p!\xc6\xf85c_\xa0\xed8\xfc\xfdoy}\
+\xa0\xc9\xdbl\x13\xa9\xa7\xbb}\xf7\xeb\xd2u\xa8T1\
+}c\xb5\xd1Fd\xf0\xf8\xa6n\x10`j\xc1\x9c\xb8\
+\x01\xdc\xdd+\xfeUY+\x87eM\x89\x0b\x0a\xb7\x14\
+KEL\xf3\x8b\xe5X\x81\xe2\x84\xdaS\x9a\xc0bE\
+\x7f]\xc7%\xfa\xc6\xe9\xc19\x95\xdf\x10\xa7V\x00\xc9\
+\xbd\xc4\xe6\x0a\xc1\x8e\x8aB\x1d\xa7.\xa0\xa6\x86}R\
+&\x02\xb1B\xfa\x84\xf3O\x9d}m.k7\xcf\xec\
+\x16\xb5\xdb\x89\xae\x03\x9c\xd8\xa8\xb0N\xac\x048.\x19\
+8\xb5\xb6`C\x8bB\xa3e\xcf\xfb\xc0[\x17I\xdc\
+\xb6F\xe2\x9c\x0c\xac_#\xf1\x80\xa4\x89jy\xe2<\
+\x5c\x85ib\xd5\xc9~\x89\xca~\x1d\xcb\x89\xb5.O\
+\xbb\xaaO\x98\xd8\x84\xbdO\xfa\x11WB\x0fI\x1a;\
+>ii\x94\x13+Nw\xabSO\xac\xdf\xdd\xad\xf5\
+=ep\xd3~X\x12I\xb1\xac\xfc\x10A\x0b\x06\x1d\
+\x8a\x9c\xe9+;\x15\xd2\xce\xa2\x8aA\xa0\x11\xd2\xc6z\
+\xb1\x08\x22\xa4\xfa\x895eO\xb7\xd6<\xedj\xfe\x92\
+\xa7t\x18\x0fl1\xc8O[\x0cn.#\xecAI\
+}\xde\xcb\x84\x10\xd1\xf2hubS\xce\xde`\xd2\xc1\
+4(\x7f\x19\x09\x04\xc9\xee\x143\x01\xd1t\xe1\xfc\x9a\
+^\xb4q\xfa\xee\x04\x94\x8e\xee='\x0clE\xc9\xbe\
+\x16)\xf3\x82P\xac\x98\xcd\xe6\xd1~\x09\x17\xf9\xaa\xac\
+ho)\x01\xa4\x18E:V\x86\xe4\x84a\x1b\xac\x98\
+B\xbaYt\xac\xb0\xe4r@\xbf\x88\x96\x12\x87s\x98\
+\xe9\x8bn\x11\xf6\x89\xa5\xed\xbbe\xf0'\x96\xcc\xef\x96\
+\xd7\xdf+\x0f}\xcd\x91\xf3\xbe\xc9\xa5\xffLB\xff9\
+\x85\xe9\x87\xf4\xd8Y\xf7y\x06\x8f\x9d}\xfa\x0b\x19\x87\
+~\xcey\xfb\xdc\x16m{l\xa7\xbf\xcf\xb2\xf7WV\
+\xfa\x9bl>\x84\x99)a`\xfb\x7fg\xa5\x17\xc78\
+-\x8ev\xfc\xca\xca\xb40>\xd8\xedQ'\xdc_%\
+\xfd\xc7\x81\xa6U\xc2{s\xd4\x7f\x1ch'a\xba\xef\
+\xc7h\xd8\xd1\xa7\xbf\x12\xd5\x7fUj\xfa+T\xfdW\
+\xab\xf6sd\xcc\x1d\xbe)\xf5U\x1c\x19\xf7\xb7\x9a\xfe\
+Cd\xd3\x8a\xc4\x9d\xacf\xff\x0f\x91\xf5\xc2\xf4`\x9e\
+eE\x7f!G\xaf\xea\xb6\x13GV|\x0f\x8e\xa6\x85\
+\xe1vay8\x8e2\x7f!G.\x8b\xb2#G\xf8\
+59\xe2\x03r\xc4\xbf4B\x0f\xdb.\x1c\xa5\xee\xc1\
+\xd1\xb40\xdc.\xcc\x0f\xf8X\x82\xe6\xdf\xd1C\x09\x8d\
+\x90\xf6A\xda\xfak\xf5\xbe\xf9\xf8R\xb9\x04h\x12\xdb\
+\x8c\x18\xc8M\xd5\xeb{\xa5\x84\x06\xa4\x89>s\x02\xd2\
+\x88\xd4\xa3?U\xd4\x81\x84\xb4\x81i\x82\xc6\x03\x143\
+g\xc8\x92\xa8~\xbf\xdfJ\xaf~\x1a\x10R1]\xab\
+\xed@\xeaEs]\x8cC\x1a35\xe1\xe2\x10\xc3\xda\
+\x16D\x06\xc9&T[\x13\x067t\xa9`\x82\x9a\xc5\
+\x11;\xc4\xb0\x97\x9c\xca\xf7\xbbR\x1bX\xfe4(\xc3\
+V+/\x01\x06\xc2L\x97#\x11\x08F\xe3Y\x01U\
+\x0f\xb4\xdc\xc2B{\x89\xb5{#\x9f\x87\xe9\xb0\xed\xef\
+\xb4>\xfe\xde\xc8\xe6;\xad\xcb\xdd\x9bw\x17\x8b\x17\x8b\
+\x9f\x16\x97Wgg\xebo\xb9V-}\xd3\xcd/\xd0\
+\x8d\x98p\xaf\x9b\xf1\xa1%6\xf5$\xd7O.\xc6\xcc\
+\xc5\xf3 \xea\x0a\x86F\x0c\xa0\xb3\xd5\x91\x05\x812\x17\
+\xe2\x86\x11G\xe4Q H:\x96\xd2 \x95\xc2\xe9G\
+^Z-\xae\xdc\x04A6j\x0b8[\xddO\x9c\x91\
+\x83z\xc6\xc3^m\xb6\xfd+\x80mH\xb5A\x07t\
+\xc2\xa8\x0d\x22\xa4\xba{\xdf\x8b\x1f\xbb\xdd\x07\xde\xee\xb6\
+=T\x91B\x85\xa2\x0c\xf3\x8a\xe3^Q #,:\
+c\x10\x13J\xe3\xe7\x9b\xecs\xf0n\x9ea*\xf8y\
+T\x7f\xb7<\xa1\x5c66~E\xf5\xf9\xaf\xac\x02P\
+TEn&\x19E$*\xed\x01\x5cH]f\x05\x8a\
+\x17+Y\xf6WEh\xbaR\x0e\xaa\xa8\xbb\x05\x91J\
+\xce\xd2!-B\xb5\x8auH\x14\x8bG\xaa\x90B\x9f\
+r\x84@%*\x19\xdf=\xa1\x1d>\x90v~\xd7\xe7\
+\xa6Zo\xd1\xf2S\x9dA9]n\x9f\x8ax\x06E\
+\x08\xb9\xb4\x18\x91\xc4Tt\x08y\x04\x81\xec\xa5E3\
+,\x5c\xdc\x86 &@li3\x170rb\xaa\xd8\
+*\xdc\xcd\x5c!\x5c9c\xa8\x9d\x18Yk\x1b\xa4\xa9\
+J\xb6H\x16`,\xadM\x22\x84\xe2:hV\x04\x94\
+L9*\xaaCH,G\x5c@0,u\xc0\x04Q\
+m\xc4\xd6j\xff\xb8\x8e\x06\x94BDC\x84\x1bQ\x03\
+\xf2\x12\xc6-d\x9a\x9aZ4_N\x0b\x13\xde>\xf6\
+m\xe8\xe3\xf0\xa7\xa1\xbd\xd6\x9f\x88ur\x90X\xc7\x91\
+`\x86\xaa3&P\xd7\xa1\xaf\xdc8C\xd3\x98\x85@\
+\xa2\x17\x1b\xc6O\x0cA\xc5+j\xa0\xe4\x864`E\
+\xc9f\xe1\x90\x9c$1TF\x14\x5c\xaej\xe2\x84N\
+\xad\xc9h\xd9\xa1\x00F\xba\xb7\xc6\x92*e\x0c\xee\x98\
+u\xc7\x86\x9d4\xca2\xec\x8dE\x7f\x1c\xf6Y\xa0p\
+a\xe1V\xb5\xed#\x84\xa4X+M\x90\x1a$\xcd\xd9\
+\xd9\x94S\xb6\x0ej\x0b8\xfa\xee\xd4\x87\xe6\x102\x95\
+J\xe1\x990\x83\xa2\xb1\xcd\xe6\x02\xe4\x81\x99\xf6\xfc\xb1\
+\x1a\xe9\xb1\x1a\xd7\x17\xa6\xf8\x84\xd7\xfa\xf3\x8de2\x00\
+#\x02K|\xd1\x0f\x06\xf4\x16\xb4\x19\x06\xe8\xd3AZ\
+\x18\xc4\x5c\xa2R\xaf\xcd[\x15\xb3\xb9\x1e\x82%1W\
+\xd4\x00M\x1cc\xddu\x1c\x98\xac\x88m8Y\x14.\
+\x9d\xe7\xa9\x80\x16N\xe5\x0eu\x87b\xac!U\x90\x09\
+\x18\x12F6\x94\x22\xbc\x96\x0d\x03'v\xd1\x16a\xb8\
+8\x16;*\x02\xe2\xca63\x07\x16\xb1\xe0\x95;R\
+\xba\x0e\xbd\x8c\xe2\xcb\x93\x18Qp-h\xdaPt\x1d\
+\xe2\x08\x93\xba\x0eCD\xe3,[\x87\xfd\xe3Vt\xd3\
+\xbf\x99\x85w=\xf5\xb4r\x10\xff\xee\xbb\xe5.\xcb\xf0\
+H\xa0V\xdc\x07\xb4\xa8\x06Y\xd3[\x90\x09S\x1b;\
+gA\x1b0\x0a\xc5\x94\x86%\x17,\xbc\x0c\x84\x85(\
+\xc4\x9a6\xb1`\x9a6\xcc\xc3E\x07L\xc2\x82\xaca\
+&m\xcc\x0d\x0b\x0eOY\xd66N]\xa1\xe2N\xb1\
+,iE\x06\xc8027*[\x89\xb0eeu%\
+\xd2\x86\x16!v\x1e0\xcc\xa1\x93\x01D\x9aKL\x82\
+\xc2K\xc3\x04M4V\x11\xdcK\x90\x0f(\x99k.\
+KJ\xf0\x00q`\xe4Fe\x09\xd5U\xdd\x8aR\xc3\
+\x8c\x0b\x97\xd2[pH\xf8\x06T4\xa8\xe4C\xe6\xd0\
+\xc2\x03j\x89.\x1b%=%t\xca%\xa8\x00\xa2\xb3\
+\xd1\xa6\xa3\xb08!\xafP)\x1e\xd1\xa1\x82\xa0\xce\x85\
+\xac5\x9b\x94\xc9+?MUod\x18hJ\xb27\
+sO\x0b'i\x98%K\xe6\xba\xa78T\xa8X\xeb\
+Ua`%$\x9e\x99Aj\xaaSm3\x12\xc4\xd0\
+\x9cf\x8ePP\x92\xf4\xc8\x11(\xd2\x88[*7J\
+B?Rjn\x8c\xe2\x83\xeb&\xb35\xcbp\x84\xd0\
+b*\xad\xa4\x17\xb7\xe5\xe9X\x11\x1b0\x02\xe1\x94\xb0\
+&[$8K\xf3hcV\xd4e\x8f\xc4\x8b\x8a\x0e\
+\xa8\xa9\x96\xaa\xf2\x86zI\x13i\xa8\xaa\x9a\x97\x16\x10\
+Z\xd78\x1b&\xaa\xc5}\x15$\x04\xa9\x8b\x12\x0d\x15\
+&\xcb\x01E\xd2hcw\x06\x0cE\xb5\x99(P:\
+\xd2\x93\x11%\x85)\xe8\xfe\xa4\x81\xa9\xb1\x1c\x19\x8c1\
+x\x1fFX\xc5\x18R\x22\x9c\xbbX\xdaP\xc7\x94\x18\
+\xd0,\x91<`\x91\x962`\xa1\x1a\x0d*HE\xbd\
+w\xf2e\xba.\xbcD\x991\x1bf\x82\x1a:`F\
+X|k\x88\xf8q\x1b\xba\xe5|\xc5w\x8fg\xfe-\
+\x9e}\x8bg\xdf\xe2\xd9\xb7x\xf6\x1b\x8eg\xc6\xbas\
+<\xdb\xe7\xfa\xeb\xfb\xe3\xdb\x9f^\xff\xf1w\xff\x1f\x87\
+I\xee\xb2\x11\x94\x00\x00\
+\x00\x00\x19\x91\
+\x1f\
+\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xed}mo\x1c9\x92\
+\xe6\xf7\xf9\x15:\xcf\x971\xae*\x14\xef\x11\xf4t\xcf\
+\x027\x83],\xd0\x8b;\xdc\xce\xe0>.d\xa9d\
+kG\x96\x04In\xdb\xf3\xeb\x97\x99%\x89E)[\
+Y\x96J\xee\xde\xeb.\xb7\xdb\x95O2\x18\x8c\x87\xc1\
+\x88L2\x8b\xf9\xdd?}\xfep\xba\xf7\xe3\xea\xf2\xea\
+\xe4\xfc\xec\xfbW\x04\xf8jouvx~tr\xf6\
+\xee\xfbW\x7f\xfb\xeb?/\xf3\xd5\xde\xd5\xf5\xc1\xd9\xd1\
+\xc1\xe9\xf9\xd9\xea\xfbWg\xe7\xaf\xfe\xe9O\xbf\xfb\xee\
+\x7f,\x97{\x7f\xbe\x5c\x1d\x5c\xaf\x8e\xf6>\x9d\x5c\xbf\
+\xdf\xfb\xd7\xb3\xbf_\x1d\x1e\x5c\xac\xf6\xfe\xf0\xfe\xfa\xfa\
+\xe2\xcd\xfe\xfe\xa7O\x9f\xe0\xe4\x06\x84\xf3\xcbw\xfb\xaf\
+\xf7\x96\xcb*y\xf5\xe3\xbb\xdf\xed\xed\xedU\xb5gW\
+o\x8e\x0e\xbf\x7fuS\xfe\xe2\xe3\xe5\xe9X\xee\xe8p\
+\x7fu\xba\xfa\xb0:\xbb\xbe\xda'\xa0\xfdW\xad\xf8a\
++~8(?\xf9qux\xfe\xe1\xc3\xf9\xd9\xd5(\
+yv\xf5\xfb\x8d\xc2\x97G\xc7\xb5tk\xcc'\x19\x0b\
+Q)e\x1fy\x9fyYK,\xaf\xbe\x9c]\x1f|\
+^\xf6\xa2\xb5\x8dS\xa2\x8c\x88\xfb\xf5\x5c+\xb9]\xa9\
+7\x9fO+\x13?\xd9\x98\xf1\xec\xa6\xf6\xca\xfeE\xfd\
+{'p\x0b\xc0\xd5\xf9\xc7\xcb\xc3\xd5q\x95\x5c\xc1\xd9\
+\xeaz\xff/\x7f\xfd\xcb\xdd\xc9%\xc2\xd1\xf5\xd1F5\
+\xb7\xe4wz\xbb\x1e9;\xf8\xb0\xba\xba88\x5c]\
+\xed\xdf\xe2\x83|\xef\x0e\x15\xa8=|t\xfd\xbe\x1er\
+\x8e\x87\xefW'\xef\xde_\xb7\xe3\x93\xa3\xef_U\x83\
+\xd9\xd1\xc7\xe3\xdb&\xbd\xb9\xab\x08Ax<u\xabg\
+\xf3\x94\xde\x93::?\xac-\xab\xed~w\xbe\xbc\xb8\
+\x5c\xfdxr\xfe\xf1j\xf9\xe3\xc9\xea\x13T%\xff\xe8\
+\xab9\xffx}\xf1\xf1\xfa?V\x9f\xafWg\xeb\xfa\
+\xaaa\xcd\xca\xf5\xe9Q\xee\x0e\xec+X}\xbe8\xbf\
+\xbc^\x1e\x9f\x9c\xae\xd6J\xf7\xdf\x9f\x7fX\xed_\x9c\
+\x9cU+/\xcf\xeb\x97\xc3\xab\xfd\xf3\xcf_\xde\xad\xce\
+\xf6\xab\xc4\xe9\xc1\xdb\xd3\xd5\xfe\xc1\xe1u\xd5u\xb5\xff\
+\xa0\x81\x17g\xef&\xab\xff|tQ\xbb\xd3\x03l\xf2\
+\xf4\x97v\xfaO\xf5\xfcw\x1fV\xd7\x07G\x07\xd7\x07\
+\xf5\xfb\x0d\xbd\xb7\x88\xc6X\xa2\x96\xa9\xce\xfb\xe6\xff\xfe\
+\xe5\x9f\x87\xa3\xf1\xf8\xf0\xf0\xcd\xff;\xbf\xfc\xfbx8\
+~\x86\x02\x07o\xcf?\xd6\x8e\x1aen\xca\x1d\x1d\xbe\
+\xa9\x0e\xf4\xe1\xe0\xfaO'\x1f\x0e\xde\xad\x06O\xfd\x9f\
+\xd5a\xbe\xdbo'\xba\xc2\xd7_.V\x15\xe8\xaa\xbd\
+\x5c\xad=qj\xf0\xd6\xff>\x9c\x0cB\xfb\xff~}\
+rz\xfa\xaf\x83\x92W{\xfbw\xed\xdc\xbfih\x05\
+\xc6\xc3fG=\xb85s<\xbas\x88\xa1c\x8e\x06\
+~+\xba\xc9\xde\xa7\x93\xb3\xa3\xf3O\xcb[w\xf4\xc8\
+W\xd3%n\xfd\x972\xee\x97\xb8\xa8\xcd\xbbz\x7fP\
+K}\xff\x8a\xa7N\x9e\xd7\x01R\xed\x19\x1c\x15o\xce\
+\xbf\xfbxr\xb4\xba>?]]\x1e\x9c\x0d$\xd0\xc6\
+\xa9\xcb\xaaj\xf2\xcc\xf9\xdb\xff\x5c\x1d^O\x9f{{\
+~y\xb4\xba\xbc\xd3D\xf7N\x1c\x9e\x9f\x9e_~\xff\
+\xea\xf7>~nN\x0dm\xbb=q<~^5w\
+y{p\xb5\xba9\xbcz\x7f\xfe\xa9\xb6\xaa\x82\xd7\x97\
+\x1fW\xf7-\xfc\xc7\xf9\xf9\x87Aa\xa2z\x86\xdd?\
+}\xf8\xf9\xfbWKc\x08\xe7\xd0\xf2\xe0lmk\x09\
+ \x8e\x92\xf1\x13\xd4\xd7\x0a\xf0'NUi5\x7fP\
+\xe9\xc7\xcb\xcb\x1a\xfb\x97\xa7\x07_V\x97-\xae\xdc\xb8\
+\xcb]\xb1\xc1\xa4[\xb7\xac\xdeV\xf9\xacc\xb4bC\
+uw4\x0c\x00+\xf3\x1d\xf8\xe3\xc9\xd5I\x1d\xc0\x8d\
+\x8b\xf1SG~\x05\x8f\xee\xa1Cd\xacY\xb0\x1a\xc0\
+0\xf0~\xf1\xf9\xfe\xa9/\x13\xa7V\x1f.n\xce\xd6\
+\x93\xd5\xef\xd7~\xfd\xd0\x95G\xfchu|\xd5:m\
+8b\xc7|`\xebE\x8d\x95\x17\xab\xc3!\xdd\xdd\xa8\
+i\xc1rm{_T\x1a\x0b-\xde^\xfc\xc7\xd0\x15\
+{o\xf6\x5c\xeb\xffh\xb2\xc4\x97u\x09B\x1c\xfe\xc1\
+\xc92\xff\x18\xe3\xfeT=}\x13\x96\xe7\x97'\xefN\
+j@\x1e\xcb\xe9\x9a(\x8f^\xa6Z\xbda\x9c\x96\xbb\
+@\xf1]\xcd\x89\xab\x83\xcb\x7f\xb9<8:\xa9\xde\xb0\
+)\xd0\x9f\x11\xadRw\xc1\xe5\xea\xfa\xfcb\xf8\xdeJ\
+\x0f\x88\xa85\x9d\x95\xbb\xeb/\xa7\xab\xf5\x99\xe58\x82\
+\xde\xfc\x1e\xc7\xcf\x1fG\xe8f\x18\xbe\xd9\x149?>\
+\xbeZ\xd5\x10\x83\xb5\x81\xf3\xca\xe4\xeb\x95\xe1\x842j\
+l\xec\xf7F\x7f-G\x5cl\x96#.\xf1x\xb3]\
+V\xe5\xf8x7\x1cq)\x8f+[G\xb4o\xca\x91\
+\xe3<G\xce\xf3\xcd\xde\x19G\xae\xbf8\x8e\x90\xe79\
+\xc2\x99f\x1f\x1e\xadV;\xe3\x08\xfdqeG\xbc\xca\
+\xd5\xd1\x0e8\xaa\x17\x88\xd7\xab\xcb[\xc1!-\x22\x10\
+2\x06\xd2m\xd6l\xd7\xc9\xc0\xa8\xa4\xd8\xe2\xc0\x97u\
+y\xd6b\x8ew\xc6\xb6\x0bi`-\x85\xb8\x0b\x8ck\
+\x8d\x22\x19\x8d\xf3\xe3\xd5\xbf\x1c|\xbc\xba:98\xfb\
+_\xa7\x1f\xd7\xad\xe9\x83o5\xfbtuX\xab<8\
+\xfdt\xf0\xe5\xaa#\xe7\xe8/\xf5R\xf5\xe0\xfa\xf6\xaa\
+[\xdd\xcc\x0b\xbd\xeai\xed5\x88d\xd9`f\xdd\xa4\
+\xaf\xf4\x1aW\xd49\xafq\x9d\xebHLZ\xc9j'\
+^\xe3\x8a\xf9\xb82\xc98Z\xe9\x8c\xb2]\x8e,\xaf\
+\x9fY\x8e\xdcg\x9a]\x8e\x0f\xe9\x98w3\xb2(g\
+\xb2\x98e\xac\xde\xda\x16\xca\xc0\xe6\xd5\xb9\x07\xce\xf4\xff\
+!\x1fXN\xa8{\xc6@\xee\x07\x1a\xbd\xd0@37\
+\xb6\xe4||\xa0\xd1\xd7\x0e\xb4\xcf\xf4\xfd\xab\x10\x08e\
+\x97l\x81\xa6\xa2d \xe2\xa6-\x0e\x7f\xe6Z6\xa1\
+H\x11)\xadlE\xc9!\x0c\xc3\x1a\xfa\xd09M\xa5\
+u\xce8Y\xf1\xe6\xfd\xe5\xea\xb8\xdew<H\xa1\xad\
+\xdc\xbb\x1b\xf0og'\xd7u\x9a\xe4\xe3\xd5\xea\xf2\xdf\
+\x87\xa9\x86\xff}\xf6\xb7\xab\xcdk\xec:\x8ds\xf4o\
+\xab\xeb\xf7\xe7Um\xadt\xe0\xb4\xf20o\xb9BX\
+o\xb5\x02\x87e\xee\xd0j\xde\xce\xeab\xdf\xcaj\x8a\
+\x02\x14\xcc\xda[\xce\x02a\xe9\xbd\xe5\x14\x02%1\xa8\
+\xb3\xdc\x0dT\x93\x88\x1f\xb7\xdcwny_\xea\xaf\xf5\
+\x1e\xf8j\x98m\xa8\xf7\x5c\xc3\xd7\xd3:\x91\xf8\x87\x12\
+\x0b|\xbd\x15\x0d\xc5A=\xd5;\x1a\x5c\x80$\x8d\xac\
+\xa3\xc1\x18\x98R={\x1a\x1c\x98U-\x1e\xa1\x81\x8b\
+\xc9\xae\xdc~\x9e\x86:\xefry\xf2\xf9\x0f\x04\xc8^\
+\x1c}\x81\xf5O;Z\x8a\x03\xa3F\x94\xc5\x92 \xc5\
+<\xcc\xb7\x22+c\xcdU\x1f#\x96\x08\xe2\xa4\xc9\xe6\
+\xbd\xd7\x90CPj\xf4\xe3\x05\x1d\x94\xc3\xfcq\xba\xfc\
+\xff\x03\xba4\xa0xjp?\xc4|\xed[\xd1\x91\xa5\
+\x05\x98\xfa\xb2\x15M\x1b\xb9\xb2\xf28Ye;\xb2\x90\
+\xbf\x09Y\x86\xf5#\x03Y^DYh\x83\xac\xa1\xc2\
+\x83\xd3\xfbd\x0dSC\xb4a\xfa0\x19\x14\xcd\x03\xea\
+\xd4\x8d\xb5\xa3\xe3\xa1p&dRHC\xab\x081\x81\
+*\x93tl\xf5*\xb9\xf8V#\xd1\xebggl-\
+\x1f\xd0\x85n\xee\x0bF\x07\x09\xa7\xa8d1\xa8{\xf1\
+\xdc\x8a\xac%9\xb8\xa7fv\x9c\xa5C\x0ezl\x93\
+:\xc7F\xd2\xb4\xe8q'\xfa(w\xb9\x95\xa7\xa9\x96\
+\xddq\x87\xc0\x96\xeeXIB0&\xd6\xd0\xe1kr\
+\xa8\xa8.\x10\x94\xd0\x91hA\x82\xc0R\xd4\x16\x86\x80\
+fVl\xcb\x1c\xa0`\x0f\xd2`AO\xe9\x03\x1a*\
+\xb0u\x03\xd4\x80\x065\xc9\x8f\x0e\xd0\xa0\xad\x5cNQ\
+w\xe8r\xa3\xab!\xa4\x13\xaa\xcb\x82\x91!\x86A\xa9\
+\xe2\x94\x1e\xb3\xcc\x8c\xc1:\xfa\x90\xbed\xf1\x9e(\xd4\
+V\x80Z\x81\xf9\x0c\x8d\x8be:\xb0p\x8a\xbe\xde\xce\
+\xecG8\x16\xdc\xd25\x91k_\xcc\x5c\x80\xcf\x8d\xc0\
+:\xa8\xc4@\x89\xb3\x94n\x10\x85CA\xf3\x22\xfd\x88\
++@2f\x90n\xb0\xba\xbe\xea\x864\xe3v\xc4-\
+\x89\x0b\x0cZ\xea(`\xb04.\xa2\xab\xa5?\x85\xc4\
+\xde>\xc1\xed2\x09\x97\x82_A\xe2\xe1\xe9\xc9\xc5\xff\
+9\xb8~\xbf\xa9\xf8\x16\x13\xb46\xa0n\xc1\xc9v\xb7\
+\xfb\xa9\x8bVW\xbb\xbf\xbb\xbb\x8f\xfb\xe3q])z\
+S\xd7\x90\xfe\xf0\xfb\x87\xd6\xbd\x1e\xcf.[\xe1\xab\xeb\
+\xcb\xf3\xbf\xaf\xde\x9c\xd5\xf5\xe8\x9b\xef\xeb\x05\x9e7\x08\
+$\xa1\xa5~n\xf1\x81\x83j\xe8\x9b\xcb\xf3\x8fgG\
+\x9b\xe0\x7f\x9e\x9f\x9c\xf5h]\xb4Z]\x9e\x9e\xd4\x7f\
+\xde\xe8-vtP\x97\x86./\x0f\xbet\xca\x06t\
+\xbc\xdd\xac%\x81\xec\x06\x9e\xbc+\xad\xac\xfd\xdb\xde\x92\
+\x98\x80\x13\xcb\x82\x0b\x98\xa1+\xef\xfdy@\x19\xcc\xcd\
+y\xc1\x09\xecVx\xc0\x14\x5c\xdc\xa2\xc3\x0c\x0a\x13o\
+\x8a\xffPa\xbd\xf5(c\xf0t.k8\x18\xa8\xb0\
+\xddW\x16\x02\x1a!\xb4Yq\x18\x98&{\x879\xa4\
+p\xc9{\xcaR\xc0\xd0e!\x0e\xccR|]i*\
+D!\xe4\x85\x04\x18\xa6\xa7t`\x01\x8b\xe2\x5c6\xe4\
+\x15!]\xc5\xc6J\x1dA\x02\xdd\x16\xae\x9d\x92\x0c \
+1\xb7^G&(\xa3\x04m\x82\x05A\x0b\x09\xc5\x86\
+x!\x88p\x94\x1c*m\x06\x95*\xafE,\x87j\
+\x9b\xed\xa5@\x88bnp\xd4\xb0Fg\x13\xef\xc9\x0f\
+\x03!\x09\x1c\xe0\xd6U\x9d\xb2\xd6\xab\xad\xe2\xd6\xfb\x0d\
+k~\xd2\xeb\xa2*\x8da\xd9\x0c\x1b+%\x01aN\
+o\x1cl\x82\x8d\xadVA#v\xa8V\x02B\x85\xa5\
+\xb2\xdf\xa9i}\xd4ii\xbd\xd9\xc0\xd6\xef\x9b\xf2\xcd\
+G~\x98\xf4\xfd\x7f\xdc\x9b\x09\xb9X\xc7\x94\xd8\x98\xff\
+\xb8\x8d*\xbf\xe4\x90\xceL\xa0\xa2\xf6\x12!]\xbey\
+H\xd7\xf2\x8c\x90\xdew\xe4\xc3\x00\xc8$\xe0\x96\xd6\xc7\
+$&\x85\xa2\xc2\x9b\x01\x90)\x00I):,\x81K\
+\xe6\xbd\x00\xc8z\xc3\x7f\x1f\x00\xd9\x15,\x90\xca=e\
+n\x90\xa6\x856+\xf6\x80\xc2\x96\xdea\x05\x98\xd0\xf2\
+\x9e\xb2\xa8\xe2)\xa5\x0f\x80\x1c\x01\xe4\xe9\x9b\x01\xb0\x81\
+m\xc84\xf9.\x00\xb21\x84&\xaf\x03`+\xd4\xc6\
+i\xa7\xa3\x0d\xe9\x06\xb6\xc1\xdf\xc4\xbb\x00\xd8\x0c\xeab\
+R\xb3\xbd\xc5\x9f\xc6Q\xc3\x1a\x9dM\xbc#\xbf\x0b\x80\
+\xad\xab:e\xadW[\xc5\xad\xf7\x1b\xd6\xfc\xa4\xd7\x85\
+\x0e%\x8d\xfa\x00Xa\x83@\xd4.\x006\xb0\xb1\xd5\
+*\xe8\x02 \x0b\x021\xe6\x10\x00;5\xad\x8f:-\
+\xad7\x1b\xd8\xfa\xbd\xc9w\x01\xb0\xd9\xd4\x05\xc0\xa7]\
+\x0a\xc9\x7f\xbbK\xa1\x9f\x0e\xe9}({\xb1\xbb\x8f]\
+\xdd\x18M\xdf\xbfp\xfc\xfa\xee_\x0a\x01R!\xe4]\
+$:\xca]'\xba_>\x81\x99\xbb$\xd0\x7f\x1d\x04\
+\xb6\xcb\xad\x1d\x13\x88\xe5\xd7\xe7\x81EwI`\xfc\x0a\
+=\xd0vI mK\xe0oIdr\x82\xbb\xec4\
+\x89\xfc*o9\xb9\x14\xde\x96\xc4\xdf\xa6b\x7f\x92\xc4\
+|yO\xdc\xe1z\xfbR\x11\xc24Y\xa6\x99x\xf9\
+\x9e\x9a&Q\xbf\xa5'\xaa\x80\x86\x86sg\x1f\xa1\x01\
+\x87*w\xf6\xb9C&%Zg^\x12\x08[\x84u\
+V\xba\xce<\xee1\xbf\x1c\x84\x10\xc4\xa29,\x9c\x11\
+;Z\xd2\x02\x81D-X\xeb\xb7pT\xa7X\x04\xa8\
+\x9b1\xda\x82\x11(\x94d\x17aU\xcao\xfd\xf0u\
+\xfd\xb0$D0Q\xcd]v\x84\x10\xe5\xb7\x9e\x0d$\
+\xd2\x9d,\xf0\xf4s\x19\xbdM\xdb\xcfe\x90\x83\x16C\
+\xc4\xd4_\xd6\xba\x8e\x17\xc0\x22a\x0b6p)\xb8\x9e\
+i\x0c\x02\x96\xd4RF\xb8`\xc9\xac\xa0\x00G:/\
+\xd8\xc1\xc2M\xacb\x0a\x91\xc4U<\x810\xa2\x8c\xe2\
+\x85 \xd0\x8a\xe4B\x0dPX\xc3\x1aX\x16\xc1\x10j\
+\x8eeC>\x0bx \x17\x1f\xe4- \xcd-xA\
+\xe8`EK-*\x08\xa4\xa2R\xee\xc0\xda&\x12`\
+\xca\xe8\xe5e\xad\xe8NO\xde |\xd7\x1co\x92}\
+\xcb\xc9A\xd5\xc9u\xc1\x0a\x99\x051\x86\xe9/ps\
+&\x1b\xc0B\xe4\x9c\x15T\xb8\x95\xbe\xa3\x8ds$3\
+m!\x04\xe2\xae\xe6#H\xc8J\xba\x905o\x18w\
+\xd2R \x8a\xf1\x8dn\x05v\x22\xd1\x85!(\x16r\
+k -<*\x88\xe4Mw$ )\xea\xc8\x99\x18\
+h\xd6\xcfxo\xe9\x1c\x85\xabnc0\x22\x92[\x8c\
+*\xe6\x02\xc4\xf7\x84C $3\xca\x9d\x96h`\xde\
+\xb5'n\xa5\xfb\x86;\x82\x17\xb2B\x0b\xa9\xd2\xecQ\
+\xa8\xaa.P\x9c\x8a\xf1B\x04\xa2\x14\xc1A\x9a\x80s\
+\x94\xaf\x22\x81\xb7\xf2\x0c\x8ehC\xcc\x090%\x0e\xaf\
+\xa0\x81\x97B\x12\x83\x0b\x9a!\x9bNz\xeb?\xf6\xaa\
+\x17\xab\x8e\xadb\x07\xb1\xdb\xae\xd4\x046M\x8e\x0a\x8f\
+\xad\x22\xa9\xad\x220\xa3\xc8\x0a\x16H&u[\x83C\
++\x8b\x91\x8dS\xe5k\xc4\xed\x16\xf9\xf3\x1a\x91\xe4j\
+\x8e'\xb8\xb9\x10U\x10\x81(4i\x11\x04\x94\x14\xaa\
+Uo\xdc\xb8t0\x98\xder\xa4\x06\xaa\x86\xbc\x08\x81\
+\x82\x99\x92\x15c0\xd3\x92w\xe0 \x8dk\xb7\xec\xa5\
+% \x93\x8d\xe2N\x11W\xd0A}P\xbf\xd9$\xf1\
+\xae\xe5?\xdc \x22\xcd\x96Q0\xd4R\x067-\xac\
+\xca1\xaa\xe0d\xa1\x81\x98\x12\x96j\x15K\x88\x9b1\
+\xb2i\x0a\x02\x99Q\xe1\xa1\xbb\x884nl\xc1\x92\x88\
+>v\x02+\x1aMt\xcb\xe4\xb2\x19\x91O\xcc\xb1\xfe\
+*\x92m\x09p\xf7\xa4\x1d'[\xfe\xe6\xc9\x16sG\
+KoD\xf8 G\x91;0;f\x9f\xa4\xc8\x13$\
+0y3IQ (a\xb1\xcd,EAPH,\
+\xef\x05\xfbLHI\xf6\x96\xa66\xc1\x96\xa6Z\x05}\
+\x9e\x22S(\x99e3M\x11\x07pXx\x97\xa6\x08\
+A\x8c\xf0\x9e|\x11Pv)\xd1R\xd5-\xa8\x18-\
+[\xb5\x0a\xee[@\x02\x16\xa9e3]\x11%D\xa6\
+\xe9f\xba\x22f@\x0c\x91>c\x11\xdb@-Q\xcb\
+X7\xa0ht\x19\xabU\xd0'-\xaarE\xd4[\
+\xd2\xda\x04[\xd2j\x15\xf4\xa9\x87\x84\xc1\x99\x986\xf3\
+\x16i\x01WQ\xdfL\x5c\xe4\x08l\x0f+\x08\x84\x0c\
+\xe2\x96\xba\x1a\xd62W\x13\xbfo\x80\x05$K\xe1\x96\
+\xbc\xd6 \x16\xe5\xdcL^d\x09Jb\xd9g/\xb2\
+\x02!\x9c\xb1\x99\xbd\xc8\x19RH\xbde\xaf\xce\x8f\xfb\
+\xf4EJ\xeb\xa6\xf5\x19\x8c\xd4@2\xc863\x18i\
+\x82\xa7\x12\xb5\x0cv\x03\x0a\x8bti\xac\xc1}.\x1b\
+\xe1@\xeb\x12\x07i\x00k\xe9s\x19\xa9\xae\xfd\xbeO\
+G\xa4\xf5(Bl3\x9b\x91\x14\xf0\x0c\xa1\x96\xcd*\
+\x167n\xdb\xcb\x8b\x01\x92\xa6n\xa63\x12\x01+\x8a\
+\xd1\xb5J\xa4Y\xd0\x0ckp\x97\xd8F\x18\xbd\xd0f\
+b#QPR\xd7\x96\xd9\xd6-\xc8\x9b\xf1\xd45,\
+\x803\xacKm\x83a,(\xd2R[\xd7e]v\
+\xdb\xfe\xee\x81\xff\xfb\xdd=L\xa4\xe9\xdf\xee\x89\x9f>\
+i\x8e\xbbL\xd3s?\x0d\xe3\xa4\xd9jf~;6\
+\xfd\xab/Ny\xe4\x97c\xc2\x19\x9c\x91\xad\xc8\x8c\x11\
+\xf3\xbf\x1dk\xab\xe1L\x80B\xdc\xffZF\x08$\xdc\
+#\xfb_\xd6 \xb8k\x1aw\xab\xe3\x85!+(\xba\
+\xe5\xb3\xc3\xc0\x22\xcc\x5c\x16\x04\x85\x0c\x8b\xd2\x0e\x1e!\
+f\xb6\xed\x1e\xd3V\xdf\xc6\x11fYS\x07\xe6L+\
+\x1dmV*j\x89\xd1\xd1\x16\x90%\x84):\xdaZ\
+\xd9mis\x16\xaf\xb4\xed\x84.,\xdf\x94.\xa2\x00\
+a\xf1\xdc\x82.F\xe0\x94\x0c\x9a\xa6\xeb\xd9\xc6\xbb[\
+le\xbc\x13>\xcf\xf8\xf9\x07Y\x08\xdc\xc8\x89K\xed\
+\xd3_.]\xb63\xba\xe6c\xac\xab\xe5\x8b\xc4XW\
+\xc7Gb,\xa7\xaaR\xc63bl\x9f\x9b\xb6\xf9\x1d\
+V\x14#\xa4\xf5\xaf=\xda\xd1\xb2\x80\x858\xb9\xd7\xaf\
+\x02E\xc2X^\xcf\xa4\xeam\xbb\xb9]T0\x98\x15\
+M\xef/*(\x81\xd4$\xfb\x9fl1\xa0b\x98\xb4\
+\xcb\x87\xc9\xb2\x87\x13e\xa7\xf2vq\xdbj\xb1\xbb\xb8\
+\xca3\x86`S?Q\xed\xcc/\xd1\x8b\xabM\xfd\x8a\
+}n+\x8e\x89\xfdc\xfeX[8\xaf-&\xb4\xd1\
+\xe3\xda\x9c\xa7\xb4\xedj/\x02\xb6\xc89\x96\xd8\x12\xbf\
+\x9e\xa5\x88\xa7\xb1\xc4\x96\xfc\xf5,\x1d\xd2K\xb2\xe4\xaa\
+>\xbf\xab\x85\xe6\x13|i\xfc|=K\xae\x863,\
+m\xa9\x0dw\xc1\xd2\xf6\xc9a\x96F'~\x0a\x8do\
+\x8f\x13\x9f@\xa3\x93\xce\xd08\xabm\xf74\x0a\xcd\xb3\
+$\xf2\x84!\x89\x12\xf8$\x96\xc4\xbe\x9e\xa5\xb7\xc7\xb6\
+\xc2\x17di>\xbc\xfb\x13\xc3\xbb\x9b\xdbSX\xd2x\
+\x8a/\x1dUoz)\x96\xd8\x1c{\x96f\x1ac\xe5\
+\xa1\x83\xccP\xd8\x02\xb7s\xc7\xd2\x9c\xb6<B\xdcJ\
+\x1bMk\xd3\xdd\xf9R\xe8\xbc/\x85\x7f\xbd/\xbd}\
+\xe2\xa5\x82{\xe4S|\x89\xea\xe7\xa5|IXb~\
+C0)O\x19q\xab\xb7\xf9\xf6\xebY\x12V\xfa\xa5\
+%A.\x05\xe7X\xe2R\x9e\x90\xe3\x0e\xc7\xcf\xd7\xb3\
+\xc4\xa5<%\xc7\xd1\xf0\xe7\xa5.\xa8\x04\x99f}\x09\
+\xf9\x099\x0eq\x9b\x11\xf7\xd5U \x90\xb9\xb8\xb8N\
+\x86C\xb0W\x93\x06\x94-\x9c\x18\x85&\xabtfW\
+\xaa<=\xa1\xb1\x9e\xc1\xc1!\xdb\x0c\x22\xe4\x99\xe4\xbe\
+\xbdZ\xf1\xf1O\xcc\xf9\xc9\xf4n\xa7\xd3\xfb\x84\xb2\xa9\
+<o\xdf\xd1\xf9\xfdL\xe7\xf7E\x9d\xdf]u~\x9f\
+\xd6\x99{\xd8\xb9\xed\xc6\xe6'\xf1\x1e\x89J\x1e\xb4\xfd\
+\xec\xc1\xf4\x04S\xdbNH\x08\x828\xd4\xe7f\xae*\
+Z\x12\xc8\x83\xc2\xb6\xda\xb3\x86\x5c\xcdB\xee\xf6\xac)\
+N\xc3\xba\x829\x14B\xe3\xfa\x95 \xc3J`y\xfd\
+\xb3\xd2\x99\xb1\xcb\xcd\xb0R@\x89\xcb\x02\xc1\x15\xd3l\
+~\x1e\xa8\xf5\x11\x13`\xd1R\xb4\xd1\xbeF\x09\xa9\xa2\
+]\x17\x91\x01e!\x91\xae\x8b8\x001\xd2t\xe2\xc9\
+\xcd\xdd1Z?\x8f=\x81\xea\x05w\xb9#\x8d\x9b\x87\
+\x88\xdd8\x12\xb3rY?'\xe0.Y\x16KQ\xa0\
+\xc4(?\xc5\xf4\xc5\xc1Q7\xe1\xa5\x0c\x81(\xc6\xfd\
+\xe4\x18\x0aXb\xa3\xf3x\xb2\xe8qWtbv\xee\
+e]\x19\xf5QW.\xfe\x84\xc8 \x05B\xa9\xdc\xff\
+M%\x09\x98\xa6\x94V\x96'\xcbVtiPX\x8c\
+3\xb6}\x80\xddA\x17\x0cd\xab%\xbf\xe8\xe0\x17.\
+\xf6\x18c\x81\xf2\x04\xc6\x96\x8eP\xd4\xd8\xa8\xa7\x0c\x0d\
+R\xd0\xfa\x81\xba\xb4\x02J\xc6j\x1dgj\xe0B\x8c\
+\xf1s\xc6\xbe@\xdb\xce\xfcg\xacy}\xa6\xd9u\xb6\
+\xf9\xdc\xd3\xd6\xef~^\xba\x9e\x9f*\xe6WV\x1bm\
+D\x06\x0fWu\x83\x00S\x0b\xe6\xcc\x0ap\xb7X\xfc\
+\xb3\xb2Vv\xcb\x9a\x12\x17\x14\x1eR,\x151\xcd\x17\
+\xcb\xb1\x02\xc5\x09\xb5\xa74\x81\xc5\x8a\xfe\xbc\x03\x97\xe8\
+7Nw\xce\xa9\xfc\x828\xb5\x02H\xee%\xeeo\x11\
+\xec\xa8(\xd4q\xea\x02jj\xd8ge\x22\x10+\xa4\
+\x13\x83\x7f\xdb\x15\xcf\xfb\xfb\xda-3\xbb]\xed\xb6\xa2\
+k\x07W6*\xac3[\x01\xb6=\x03g6\x17l\
+\x9b\x10VZ\x9e\xb6\x10<\xb9K\xe2\xd4&\x89K2\
+\xb0~\x93\xc4\x1d\x92&\xaa\xe5\x91\xebp\x15\xa6\x99m\
+'\xfb=*\xfb\x8d,g6\xbb<\xecDg\x5cl\
+\xda\xdf\xb7\x1bG\x5c\x09\xdd%i\xec\xf8\xa8\xa7Q\xce\
+l9\xddmO=\xb3\x81w\xb7\xd9\xf7\x9c\xc3\xcd\x8f\
+\xc3\x92H\x8a\xe5f\x1c\x22h\xc1\xa0]\x913\x7fg\
+\xa7B\xdayT1\x084B\xea<\x8a\x12A\x84T\
+\x7fbS\xd9\xc3I\xc9\xc3N\xf29\x8f\xe90\xee\xd8\
+c\x90\x1f\xf7\x18\xbc\xbf\x8f\xb0\x07%\xf5y/\x13B\
+D\xcb\x83\xed\x89M9{\x87I\x07\xd3\xa0|\x1e\x09\
+\x04\xc9\xee\x14\x0b\x01\xd1t\xe1\xfc\x96\xa3\x08\xa3\xe3\xc4\
+\x09(\x1d\xdd{N\x18\xd8\x8a\x92}+R\x96\x05\xa1\
+X1[,c\xf8&\x5c\xe4\x9b\xb2\xa2\xbd\xa7\x04\x90\
+b\x14\xe9X\x19\x93\x13\x86\xddc\xc5\x14\xd2\xcd\xa2c\
+\x85%\xd7\x06=\x8b\x96\x12\xbb\x1b0\xf37\xdd\x22\xec\
+3{\xdbw\xfb\xe0\xcf\xec\x99\xdf\xed\xaf\xff\xcc<\xf4\
+\xf2\x96\xf3S\x93K\xff\x9e\x84\xfe}\x0a\xf3O\xe9\xb1\
+\xb3>\xe5!<v\xf6\xf9Wd\xec\xfaA\xe7\xe9\xc9\
+-\x9azn\xa7_hy\xd6kV\xda*\x9b\x8fa\
+fN\x19\xd8\xf3^\xb4\xd2\xd41\xce\xab\xa3g\xbcf\
+\xa5W\xc6;[\x1fu\xc2\xe7uI{;\xd0|\x97\
+\xf0s9jo\x07\x9aW\xa6O}\x1b\x0d;\xfa\xfc\
+k\xa2\xfa\xd7J\xcd\xbf\x86\xaa\x7fm\xd5\xd3\x062\xe6\
+v/\x95z\xf9\x81\x8c\xcf\xf3\x9a\xf6&\xb2\xf9\x8e\xc4\
+gy\xcd\xfc\x9b\xc8ze\xba\xb3\x91eE\x9f\xc9\xd1\
+q\xfdl\xc5\x91\x15\x7f\x02G\xf3\xcapZY\xee\x8e\
+\xa3\xccgr\xe4\xb2*[r\x84\xdf\x92#\xde!G\
+\xfc\xdc\x08=~\xb6\xe1(\xf5\x99\x1c5e\xf3\x1c\xa5\
+\xef\xf0\xb9\x04\xcd\xdf\x9eJx\xe6\xbd\x0d{\xd8N_\
+x#\xc2\xac\xe3\xb4G;Z\x122\xa0E\xf1\xc52\
+\x14L\xc2\xc5^O\xdd\x10\xcd\xdd<\xf57Z\xd37\
+e?/\x9b\xf9\xe2l\x92\x80X\xbaK\xc5\xb4\x04\x15\
+\xa3\xd7\x93\xb7\xdc3w\xe7\xdd\x9d\xfc\xf4]\xff\xcbR\
+\x89\xfc(\x95I/O%\x81fQ\x1d\x5c\x14\x0a\x17\
+\x13\x7f\x06\x97\xfdLQ?\xa9\xf4\xf3>\xd8\x91/8\
+\xc6Q\x10\x91\x17\xcbR\x00\xb9Hz\xe5\x92\xc1]\x0b\
+\xf9\xeb\xe9Y\xc2\x86\xce\xcfEN\xcf[\xf63\x94?\
+\xeb\x88\xcf\x9d\xae\x92\x92A)\xe18\xbe\xbdI\xa5\xa0\
+\x95\xb9\xd5\xa7\x17zA\xe5\x8b9\xec\xfc\x0a\x08{\xe1\
+-I\xdd\xe5\xa2\x0f\x0b\x98R\xaa/\xb4\x80\x93\x9b4\
+\x07\xde\xf6\x8db\xdb\xbfC\xac_\xb5\xf9y\x1f?z\
+rx\x98_y,\x0e\x88,\xc5o\x9e\x1bd\xb5\xa8\
+\xac\xee\xf8\xcdb?\xe7\xb3H^b\xf7o\xe5|\xa9\
+\xb7\x90\xaey\xfan\xffhu|5~\x1b\xb76j\
+\xfb\x17\xa5\x01\x93\x8b\x8d\xb91\xd8%\xa3\xeeaB\x01\
+\xa6\xc5T\x17\x8e\x10\x98\xc1\xc3\xbb\x1a\xc8\xc1\xdc\x19+\
+J\xa0$\xa5\xc8^\x8b_\xce\xa0\x96%c\x13\x93*\
+\x81Ei\x90n\xa8\x82;g\xb1\xcd\x1a\x0d\x02#\xb3\
+l\xea\xf6A\x0b\xd9\xd0\xa2\xac\xd2(9\xb6\xd3@\xd2\
+\xc7\x16\x15\x04T/1\xa0\x09H\xee\xbaWn\xf5\x8c\
+\x98d\x11\xef0^7\xa9\xd6\xb9\x81\xda\x0d\xf8\xe7\xae\
+(\xb8\x97D\xdd\xcb\x84\x12\x81\xa9\x8b\x02\x88\xe1\xea9\
+I\x5c\xddc\xa5\xdb0\xaa\xa2\xa5B\x93[\xae<\x1c\
+\x93\x0f\xb6\x5c\x19\x0f/?\x9e\xae\xde\xac~\x5c\x9d\x9d\
+\x1f\x1dmn\xc2R{\xf6\xb7\xfe\xfc\xe6\xfd\xa9\xd4\xf7\
+g{\x0e\x9fM=\xc9u\xe2\xfd\x22-\xc9\xed\xa6\x8b\
+\x13\xf4\xc6\x22\x04g\xd1\xb1;2@\x19\x8d\xd6hf\
+0\xed\xa5\x83\xa4\xc4\xdavDd\x8ej\xe7\x9d4\xdd\
+v\xe6\x0f\x83t\x06\x8fh\x01J\xabhO\xa8\x03r\
+\xf1B\x934S\xcf3\x83+[\x96\xbd\xc2\x80\x96\x9e\
+c\x9b\x14\xc3\x91&[\xff\xc3\x14:\xc5\xbel;\x9a\
+\xb2|\x1d\xd5\x7f\x5cO\x91\xae+[\x7f\x17\xc9x\xfd\
+\x13]\x10\x0c6r\xbav\xdb P\xe6B<`\xc4\
+\x11\xb9\x17\x08\x92\x8e\xa5\x0c\x90J\xe1\xf4=/\x83\x14\
+WscL\x8d\x03\xd7\xce6\x98\x8f\x03\xc3\xea\x19w\
+G\xb5\xda\xe1_\x01Lr\xad\x15:\xa0\x13F\x19\x18\
+Ju\xf7\xbe\x15?t\x87w\xe4]O\x5c\x1f\xa5\x90\
++\xf1\x98\xb9\x97\xe3V]\xea.c\xcf%\x88\x1a\x96\
+\xd7\x0f\xa9\xb7\x9fr\xfc@%*\x19\x1b\x8e\xffp5\
+\xedE{#\x1d\xc2\x8c}\xed\x90\xa4\xe8^\xe9`\x02\
+&w\xb4!\xba\xb9`\xa6\x0cQ\xab@\x94\xd4\xac\xa8\
+\x00j\x96\x12{\x8c\x80l\x9a9D2.\x1c\xca\x83\
+4\x11E\xf8\x10\xc9$\x0a\x0a\xad\xa3\x16y\xfa\xa0\x89\
+\x10\x84s\x0c1Y\x80\x9d\x8a\x0d\xa8\x80\xa6\xa1\xed\x15\
+\x011c]cn\xa2\xd4\xb0\x0d\xe9\x1f6\xd1\x00O\
+\xe3\x18\x87SC\x152\xa4\x0c\xb1\x918s@\x04\xcc\
+]\xb8LY>5lbb\xd8LF\xa8\xdcM\x12\
+\xe2H0C\xd5\x05\x13\xa8\xebh'\x93\x02\xa1i,\
+B \xd1\x8b\x95j'\x13CP\xf1\x8a\x1a(\xb9!\
+\x8dXQ\xb2E8$'I\x8c\xc2\x88\x82\xeb\xed\xf5\
+\x9c\xd0i\xa82bA\x5c\x00#\xdd\x87\xca\x92*9\
+\x0c\xee\x98\xf5\xc0\xc6\x834\xca2\x1e\xb5\xa2?\x8c\xc7\
+,P\xb8\xb0p\x15\x1d\x8f\x11BRl(M\x90\x1a\
+$\xc3\x10eSN\x994j\x02l#o\xe6V\x1a\
+!\x93\xd0=\xeb\x18,\x09Z\xca0-!\xe0\xc8\xae\
+\xa6\x13Cp\xe2Zbs\x87\xb4\xe9HX\xe2\xf5\xbd\
+\xfd\xda\x00#\x02K\xbc\xe8\x9b\xab\x9a\x07M\x0dfz\
+d0\x17\x88\x10\xa7\xd1\xf1\x1d\xc5(\x87!\x96\x90\xca\
+\x98k\x94KJ\x8e9\x8b)m\xc4\xb2 \x9b\x8f\x03\
+\xc2os\x93\x96,l\xb7\xa1\x80\x10c\x0c\x05\xaa\x12\
+|\x1b\x0a83\xc7P\xe0\xacY\xd6\xa1 #u\x1d\
+\x0a\x8ac\xacC\x81a\x8c\x91 -\xd7\x1d\xcf`\xa6\
+D9^\xd5`a\x8aZ\xa58\xa4\x92\x86,\xbc@\
+h\x18\xe6\x9e1\x84\x8f\xf7FA\xe0L\xe1\xebL\xe0\
+\x5c\x8a6\xacJG@\x88\x16\xcd\x0d4\x0d<]q\
+,IQ\x10\xcbFl\x08\x04Qv\x92.\x8e\xa8\x00\
+\x16w\x93\x07\xd1%D\xd3\xfa\xe8b\x10\x8a\xee\xb1W\
+\x08\x92\xb9\xc4H\xa7\xa99O\xf5\xc5\xc3\xf0\xa2\x8c[\
+gezl[\xc1m\x1c\xc2\x82L\xca}\x87\xb0\x12\
+iv\xcf!,9\xf2\x9eC\xb8\x17\xf5\x07\x0eA,\
+c\x1cg\x04\xc1\x22\xa5,\x9c\xc1H\x07\x00\xd3\xad\xd0\
+\xe0!\xa2\x12\x98c!2\xc7\x8a)\x10z(\xafE\
+U\xdc\xc8\x87\x92\xae\xea6J\x07*\x8a\x0c\x18){\
+\xe1M\xc5\x0c.\x16T\x9b\xb3\xd9H\x07-\xc8>\x9a\
+\xd8\xcc1\xc8$oF\x0f\x883Qd\xa3g\xc0\xac\
+h:U\xd9\xd6\x99\x03*^\x9c7;\xdd!\x84\x91\
+6\xa1\x04wM.\x0f|F\xc9\xd0\x1f\xf8\x0c\xa6\xe7\
+}\x9f!q\xa5\xa9\xfez\xe04\x82\xea\xdb:M\xe4\
+\x13\x9c\xa6\x10H\xb0\xd9\xdas\xc5\xb4\xf8\x9a\x95\x12%\
+\xd6\x8c\x92\x07\xa5\xef\x15\x06\x11*4bE4T6\
+1\x87\x0cE\x1a\xa2HC\x95\x81KP\xf2v\x03\xac\
+0\xa9\x8dd\x93\xa8\xae]6\x0aI\xe1\xc9v\xfe0\
+\x85\x8e{\xb12C\x86\x14\x1c/J\xb2\x84\xd9\xe8\xcc\
+\x02\x16\xa1J}(\x0aH\xd7(](\x12\x88\x94H\
+\xdb\x080\x81`\xe9B\xde\x87\xa2\x04CB\xe2\x0d4\
+\x1d0L}\x1d\x8a\x0a\xabQ\x1f\x8a\x14\xdd\xa2\xa3\xc4\
+\x0b(\x19\xf3\xd0\xa04\x90 \xb6\xb1\xa8\xb0\x15.C\
+\xc4\xc3\x08\xcc\x1c\xb0d\xe6b{\x9e`R<\xa8a\
+U\xda\x18\xd8\xccs\x13\x15\x87\xa4`-\x83\x1eT\xcd\
+\xe0i\x8a\xa6\xd0\x09\x9f4\xdd\xda'm\xd6'\xbf\xdb\
+\xbf\xfa\xf1\xdd\x9f~\xf7_\xea_?\x7f\x00\x9a\x00\x00\
+\
+\x00\x00\x15,\
+\x1f\
+\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xed=ko\xe3F\x92\
+\xdf\xe7W\xf0\x9c/1N\xa4\xfa\xfd\xf0xf\x81\xdd\
+A\x82\x00\x17\x1c\xb0\x9b`\xf7[@K\x94\xad\x8b,\
+\x1a\x92<\x96\xe7\xd7_U\xf3\xd5$[\x14\xe5\x91'\
+A`;\x89\xa9\xea\xeaWu\xbdY\xad\x5c\xffm\x7f\
+\xbf\x8a>g\x9b\xed2_\x7f\xb8\xa0\x09\xb9\x88\xb2\xf5\
+,\x9f/\xd7\xb7\x1f.~\xfd\xe5\x87\xd8\x5cD\xdb]\
+\xba\x9e\xa7\xab|\x9d}\xb8X\xe7\x17\x7f\xfb\xf8\xee\xfa\
+\xbf\xe28\xfa\xc7&Kw\xd9<zZ\xee\xee\xa2\x9f\
+\xd6\xbfog\xe9C\x16}\x7f\xb7\xdb=\x5cM\xa7O\
+OO\xc9\xb2\x04&\xf9\xe6vz\x19\xc5\xf1\xc7w\xef\
+\xae\xb7\x9fo\xdfEQ\x04\xf3\xae\xb7W\xf3\xd9\x87\x8b\
+\xb2\xc3\xc3\xe3f\xe5\x10\xe7\xb3i\xb6\xca\xee\xb3\xf5n\
+;\xa5\x09\x9d^4\xe8\xb3\x06}\x86\xb3/?g\xb3\
+\xfc\xfe>_o]\xcf\xf5\xf6;\x0fy3_\xd4\xd8\
+\xb8\x9a'\xee\x90\xa8\xb5vJ\xd8\x94\xb1\x180\xe2\xed\
+\xf3z\x97\xee\xe3vWXc\xa8+#\x84L\xa1\xad\
+\xc1\x1c\x87u\xb5_\x01)\x0e.\xc6\xb5\xfa\xb3\x03\xf9\
+\x1f\xe0\xdf\xbaC\x05H\xb6\xf9\xe3f\x96-\xa0g\x96\
+\xac\xb3\xdd\xf4\xd3/\x9f\xea\xc6\x98$\xf3\xdd\xdc\x1b\xa6\
+\xa2~k\xde\xd6\x91\xac\xd3\xfbl\xfb\x90\xce\xb2\xed\xb4\
+\x82\xbb\xfeO\xcb\xf9\xee\x0e\xb8\x81\x19\xf7\xf1.[\xde\
+\xde\xed\x9a\xcf\xcb\xf9\x87\x0b\xd8\x1f\x17\xa4\xf8\x5c\xad\xe0\
+\xaa\xe6#\x92pV\xa0\x96\xc3\xfaM\xc2$4\xdaX\
+\xad\x88Ci1_k\xb8y>\xc3\x15~\xb8xH\
+o\xb3\xf8K\x9e\xdf'0\xed\x97\xf6\xc0\xf9\xe3\xee\xe1\
+q\xf7[\xb6\xdfe\xebb\x1c\xd8\x99\xb7M\xd7\xec\xfa\
+%\xad=\xd6\x03d\xfb\x87|\xb3\x8b\x17\xcbUV\xcc\
+6\xbd\xcb\xef\xb3\xe9\xc3r\x0d\xfb\xde\xe4\xf00\xdbN\
+\xf3\xfd\xf3m\xb6\x8e\x973`\xb5)\xf4[\xa57\xab\
+l\x9a\xcevK\x07\xb8OW\xab\xa90{a\xa6\xdb\
+u\xfa\x10\xc3\x80y\xf2\xb0\xbe\x0d\xce\xb4\x9f?\xc0\xd1\
+R.\x83\xad\xcfu\xebGh\xbe\x9eg\x8b-\xa2\x15\
+T\xc7O\x5cP\xe2\xda\xa0\x15\x18'K7?n\xd2\
+\xf9\x12\xc4\xa5\xc0\xf3\x86\x9c\xe5\xabU6\x83\x93KW\
+O\xe9\xf3\xf6\xa2F\x80\xa1\xda]\xb9\xa5\xaa\x1c\x14\x86\
+\xdd\xee\xf2\x87\x0a\x17\xcec\xf7\xbc\x02\xb2 0\x86\x11\
+\xf3\xcd\xd5w\xf4\x86I\xce\xdf;P\x0e\x0c\xb4\xdc=\
+_\xd1\xf7\x17M\x9f|\xb1\xd8f01\xf1`\x8em\
+\xa0\x07\xcc\x05Je\xfau\xb3\x91\xd0l48\x1b#\
+\xf5l\xd7\xd3\xf6\xb6\xbf\x8e\x8cNn\xaf\xee6\x19\xe8\
+\x99\xef\xfe\xf3\xf3\xff\xfc\xf4\xe97\xfb[\xac\x06\xc8\xcc\
+\x0c5\xa2n\xbf-\xa1\xbf\xae\x97;\xd0$\x8f\xdbl\
+\xf3/\x94\xc6\xff]\xff\xba\xcdzX\xbfl\xd2\xf5\x16\
+D\xff\xfe\xc3\xc5\x0e\x1fW\xa0|\xbfg6\xb1\x8a+\
+i'1\xb0L\xa2\x14\x93\x97\xcd\xfa(\x90DX\x90\
+E\xab\x1a\xd2<\x03\xd4\xc8\x84s!H\xb3\x96=\x03\
+\x5c)p\x04\xe3\xe12\x1f\xb7\xa6\xe2\x01z\xc1v\x03\
+T\x18\xb7K\x5c\xab\x15\x09\x17\xdc\x10\xdeZ+%\x0c\
+\xc0B\xb7\x96jT\x22\xb9\x94\xd6\xb6\x96\x0a\x03H$\
+\x869\xc4\xca!\xb6\x0c0\x9c\x9c\xe1\xef\x00{W\xcc\
+\xa5X,\x0f\xb3r\x85\xa5\x85f\xf1\x91)\xb3\xc5\x82\
+d\x8b1\x12\x95p\xca\xadPz\xdc\xc4$\xa6\xc3\x13\
+\xa7iz\x93\xdaQ\x13k\x06ZB){x\xe2\x90\
+ \x86\xe8\x0bG'\xe9\x18\xfa\x0a\x8f\xbe\x7f\x06\xe1=\
+\x95\xad\x03\xc2{\x9f\xee6\xcb\xfd\xf74\xb1\xf8c\xe8\
+\x84\xc0\xaf*>Y\x09r\xccXB8cz\x12+\
+NA -\xb3\xdf@\xa6q\xa1\xe9\xeaU\xc8\xd8\x1e\
+\x1a\xc9h\xceFF\xa0\x95\xfb1\x8e\x8c\xe5'\x0aT\
+\x14\x0a\xf6\xcd)>R\x0d\xbb\xe5\xba!\xe2l\x8fD\
+D\x04\xe6i\x90\xd93\xba8\x04\x87\xa0\x0dt\x11\xc4\
+]\x04q7\x1f.\x90\xb0\xe0\xfb\x1cS\x95'\x91\xb5\
+=\x86\x16\x96\x0ds\xa9%_O\xde\x03&\xc6 \xe3\
+Q\xde\xe5G\x9dP\xaa\xba\xdc\xa8\x8d\xe6\xa6\xcb\x8d&\
+\xd1\xd2\x18\xde\xe2F\x0aS0nGX\x98\xd3\x1d\x1b\
+G\xad\xf1\xae\xc6\xc2\xfd\xbc\xd0\xb1\x81\xb9\xc4I\x8eM\
+h\xb6\xd1\x8e\x0d\xcc\xa6\x8e\xe9\xc6s\x08u\x87\x9e\x94\
+\x9aa\xe1\xf6\xb8s\x1c\xf7\xa14\x1a\x9d\xc8\x96 \x82\
+3c\xb4$\x9e6CA461\x82\x1a.[\x82\
+\x08\xeaPjmmK\x10)\xa0j\xc6H\x7f5}\
+%B@\xfbRI\xb8\x14\x13\x88\xa2('\xe0n\x10\
+>)\x1fQ\xb7 \x82\x90\x0a\xb4\x09O,W\x94q\
+>\xa1\x14,\x22\x01\xddz9\xc63\x0a\x90q<\xa3\
+\xcc\xf9b6\x8aQ\x82lI=\x0f\xf8\xb0\xafPE\
+w\x9d\x01\x13)A\x8b\x12O\x90\x83+\xbcI\x17r\
+\xd1q\x99H\xc2\x80\x8e \xee\xec\xfd\xa8\xf9Up~\
+-\xa5b\xd4;\xc7\xe0\xfc\x86\xdf\xc8\xec\xa6;\xbf\xb0\
+\xe0MZ64\x7f\xd0=\xd1\x8b\x99\xea\x8e\xa5\x8d\x10\
+\x86i3Z>\xc1\x90\xff\x01\xf2\x09+\x1c\x90O\xcd\
+\xbc\x83tfP\x83\xee\x06\xcbF[\xd2'X\xa2\xa4\
+\x96\xac%|}\xd4E\x08\x15d\x8f\xb3DR\xa6U\
+?\xd4\x09\xf9A\x1a\xf8\x8b\x17\xe2f9\x08\x86\xd0N\
+\x0a-D\x02 r\x13\x87`\x15\xe3\xe8\x1aQ0\x14\
+\xda\xc0\xa3\x92\xc0\x98`\xd9/G*\x9bW\xb0,H\
+\xe9\xf1LU\xb8)/\xb5,\xcc\x0c\x88\xf0\xc8\xd9\xc6\
+[\x16f\x8er\xeeb\xb9\xdae\x9b\x9agp\xd6x\
+\xb9\x06\xd0C\x0e^\xc32_\xc7\x05\x06\x9c\xc4\xf6\x9f\
+?\xfe\xfd\xe2$B\x17]a\x19^Nb\x91\xfd\x98\
+>n\xb7\xcbt\xfd\xf7\xd5\xe3\xc6[\xf4\xb1\x01\x91>\
+\xf3O\xd9\xe7\xa5[\x16j\x14\xa54\xea_\xdd\xd9z\
+{\x06\x98\xddxD(\x96\xf4jb\x0bq\xaf\x8a\xb9\
+\x17$\x06DW\x04l\xd9\x8b\xa3\x0f\xe7.S\xf4_\
+\x85!\x0a\x9eA\xe4\xc0\x00\x1a\x10.\xd1q\x94-8\
+\x80V\xd3\xb6\xa3lUb\x94\x91T\xb6UD\x0fw\
+\x11\xc4m\xe9\x88\xf3\x8bfM\xcdo\xe4\xf8a\xd6\x22\
+\x96\xf1@`|n\xe7\x0f\x837\x98\xf1hf\xeb[\
+\x88\xa9\xa0\xaf!\xa6\x10\xca\x19\xcb\x055\xc3R*\xe8\
+A)=_b\x80\x92\xdfb3\xc0o\xe8\xf5\x9e\x9a\
+\xd6s\x81\x13X1%\x8c'\x18\x18:q\x9epb\
+\x98\xe7\xe4\xba\xd0\xc9\x9a\x84\x1aF<\x5c\xe6\x1cb%\
+\x8d\x1a\x9f\x9ako\xe5\x84\xdc\x5c{\x8d\xd4K\xd2U\
+\xf98\xa3\xa4\xa7\xa1\xaa|\x5c\x01\xfd\xba|\xdc\x0f\xee\
+'\x94\x1f\xb2\xb1\xfa\xfal\x94\x04\xff\x85\x07F\xd7\xf4\
+x\xf6\xe9\x8f1\x05\xec\xe4 \xeb<\xa6\xe0u\x9d\xc5\
+\xd7L\x9a\x10A\xbdLhX\x84OM\xeem\x1f6\
+Y:\xff9\xdb\xdd\xe5xD\xd9\x02W\xd5\x16p\xc3\
+\x13E\x88l\xe7F\x804\x84C\x10\xd9\x16p\x10\xed\
+\x84\xa3\xe7\xe5K\x10x\xc3\xe8\xae\xbc \xc0,6\xfc\
+\xad2\x1fD\xf0x \xf7\xe1\xe1\xd9X\x86\x06Mh\
+\x91\x00U\xc3\xb2z\xc0h~\xbb\xa4\x0b\x84$@\xd6\
+?\x81\xd5eZ\xbc\x8asL-\xa3\x82(\xd6\xd9|\
+\xd79\xd6\xea\xcf\xe5\x1cs{\xbe\x9c\xf2\x9f\xd29\xfe\
+&\x9e\x1c{%\x9e\x92BA<e\x87yJ\xb0\x83\
+<u~\x83\x10\xe4\xa96\x8a\x12\xe2\x0c\xefj\xeb4\
+\x07a`\x098\xe6\x12\xc1 \x80y4\xca\xb1\x15\x91\
+\x9c0m\x90\xdd$\xd1R\xc9I,T\xc2\x158\xb6\
+\x98qg\x98p\x07\x93\xd9\xc9\xb8\x13\x9aHNE\xcb\
+\xacP\x93(0\x22\x9a\xb6\xccJ\x1f\x15\x80\x12P)\
+\x0c\xcb\xce\xfb\xfe\xa7c\x828e\x83\x22\xeb\xf9\xf6(\
+K\x1a_\x89\x81\x19n\xcb\x92@\x1a1FhK\x96\
+\xfa\xb8\x8b n\xf3Ff\xdcA\xbeB\x9a\x08\xa9\xf0\
+\xad\xcc0\x9e\xf3\xb7\xb3\x85\x9c\xfe\x11/ \x8eq\x15\
+{\xc9\xfb\x87\xd7\xe5\xbd\x93\xbd7n\xac\x8eu\xcc\x0f\
+1N\x9d\x060\xd6\xc6\xa2\xf5\x8a\x7fdH\xb5\x98\xe1\
+o\x87\xcfN\xe3\x1d\x83\xbf\xdd\x11B\xae\x9dd\x0c\x02\
+,\xdd\x8d\xe4\x8b\xea\x1c\x02AV\xac\x8f\xbb\x8e\x80\xc9\
+cv\xc0y\xd4\x8cs\xad\xa5=\xb2g\x92-\x025\
+\x16c\xa6\x96.\xbd\x13\x9a\xdaX\xc2\x84\x1f\xe7\x84\xcb\
+;xF\xb3~\xc5\xc3\x98\xa95\x1cp\xe8\xcd\xc8\x91\
+\x19g\xd9\xecfvs\xe8\x80O\xab\xa5\xe8GK\x1c\
+\xb8\xff\xc8\xd2\x99 /\xe0Kb\x95y\xc9\x19\xc1l\
+\xfct\x22\xa5\xd9l\xd1\x93\x82\xf7\xe7\xa2\x92\x90\xd4\x80\
+\x8f\xa1\x8fQJHFb\x1af\xed#l\x95ep\
+\xce_%\xc5\x02\x7f\xc7H\xb1(\xde)\x84,\x81\xb4\
+\x0a\xd5\x10?~L\xb0U\x16\xdb8\xf4\xa6\xf1\xc8Q\
+-\xd4B.\xe4y\xf8\xf9k\xfcFK\x87j\x84\xf0\
+ec\xcbSS\x1c\x8d\x85\x9f\xbaw)>\xacH\x91\
+\xca\x83\xa2\xab\x16\xc0eE\xceD\x8d\xae\x98y\xc5\x1c\
+\xca\xd1\xad{\x19\xcb\xf1\x89\xc5\xd7#\xd0\xa1\xc0\x0e_\
+\x0b\xbb\xd2+\x81Q\x9e\xc1\xfc\x8a!\xfa\xf8K\xfcW\
+%\x9d=\x91tC\xc5\x0c\x8c\x13\xad\x80\x11\xbb\xbb\x8d\
+\xa5L\xa8\xa1\xd0:aHI\xd8\xb6\xb9|\xa5\xc3\xf8\
+#\x89)\xf8k\x11\x93\x96\xd5f-Zb\xda\x0e(\
+a\xe8_\x92\x96\xfa\x9b\xd22.\x13\x9e\xe4/IL\
+I_]\xcay\x8b\x9aVb])\xb5\xafK\xcc\xeb\
+)\xdeKpO\xf5\xdd\x0d\xbcJ1\xff\xbc\xcc\x9e\xde\
+\xd5\xd4\xb8I\xeb\x9d\xe1\x85\x0eg\xd7\x81\x86E\x0cZ\
+6\xdc\xe4\x9by\xb6\xa9\x9a\x94\xfbi5\x95\xa6\xbf\xb9\
+-\xe2\x1d\x19\x8eZ\xb7\x93p\xfb\xf6.\x9d\xe7O\x1f\
+.X\xb7\x11\xaf\x97`\xc0\xa6\xa42R\xf4\x9a]\x90\
+\xc8\x13\xad\x89\xe5\xa6\xd7\x88\xeb!\x22\xa1\xa4\xb1Cu\
+\xe3<\x9f=\xe2e\xa6\xf8\xb18\xea\x87}\xaf\xfb\xe3\
+f\x83\x08\xab\xf49\xdb\xb4\xaf\xd64\x97o\x8c\xa9;\
+\x96\xd7s<\xc8\xf6.\x7f*\xe8\x83\x95\x9b\x8fYw\
+\x06l\xf7w\xef\xe1`\xd3\xed\x06\xcf'\xd4\xf1i\xb9\
+\x86\x0equ!\x88\xca\x1eaJ\x8cj\x99\xba\xae/\
+\xeab\x00\x01\x03t-\x1b\x9f\xf1\x15\xa2\xbf\xa2\xc7\xe5\
+<\xdb\x86\xd7\xe4\xda\xe2\x9b\x9b|\x1fn\xcfo\xfe\x0f\
+\x047~Hww0\xc2\x22]m\x0f\xa1\xacs7\
+\x89\x8fR\xb4\xec\xf2U\x06\x227\xcb\x1a\xb7\x14i\xe4\
+\x83M\x8b-\xcb\xa3\x0b\xd2\x1e/\x04\xdd\xae\xf2\x9bt\
+5H\xe3\xfbt\xbf\xbc_~\xc9\xe6\x8d\xd7\xdf\x1e\xc3\
+\xdbq\xa9\xc2\x1a\x92\xc0\xe2*\xf9\xdc=\xe3\x95\xaf\xfd\
+3\xc2Z\xda\x08\x01L\x88\xc6I\xc3\xab_\xcb\xf5\xed\
+\x1e_\xb6\xa3\xa0\xd5\xecT7=\x07\x9a\xb2\xfb\x87\xb2\
+\xb5\x91\xa2(\xfa\xbc\xdc.o\xd0g\xf7v\x08\xb8k\
+\xbc'5\xef@q7%>\xae\x09\xb5\xe46_\xaf\
+\x9eK\xb4J\xa9\xf4u\x89\x83\xdfg\xbbt\x9e\xee\xd2\
+F\xb1T\x10.h\x951\xb9\xde\xcc\x17W\xff\xfc\xf4\
+C\x1d\x8e\xccfW\xff\xce7\xbf7!\x06\x22\xa47\
+\xf9#\xf0l\x1d\x9f\xe1}\xab\xd9\x15\xea\xd9t\xf7q\
+y\x0f\x02\x83\xf7\xf8\xfe{\x7f\xbf\x02\x15W7\xb4\x90\
+\x91\xda\xcd\xa0\xc5\xb0\x9b\xac\xb8\xa7\x17\xbc\xda8\x9f\xdd\
+/\xb1\xd3\xf4_\xbb\xe5j\xf5\x13N\xe2\x85M\xe5\xa0\
+\xcb\xdd*\xfb\xe8\xe6,\x1e\xab]L\xcbmTA\x8f\
+\xb7\xcb\xebiE\x06\xf7\xe9\xb6!\xcf\xadVu\x22{\
+\x17\xaa\xf06\xa0\xd6\xa4\x92LMb\xbcz\x90\xc5\xea\
+\xb2\x22\xe3m\xcdU\x01\x0b\xc4\x85`\x8a\xa1\x01\xa7\x09\
+3`\xb3\xb1X\x8fY\xc9a\xc2\x89k\x96V\x13\xbc\
+\xd2@t\x02\xce&\x07\xbfS\xf2D\x12a\xd9e\x9b\
+5\xb1\xd4\xb7\x09\x937 \x82\xbd`\xb0\xa9\xc4\xb4\x9a\
+\x12\x0a\x91\xe4\xfb\x05P\xf0\x0ah\xfb}\xc7\x10\xbbk\
+V\x97\xae\xd9\x0b\xeb\xb7\xbbM\xfe{v\xb5\xce\xd7\x0d\
++\x96)D\x98O\x0b\xe5\x07\xdb\xa5\xc6\xeb$\x8f\x1b\
+u\x8c\xf5\x0e\xae,\xd1ks\xaf\xbd-P\x80\xb7J\
+Y\x81\xafc)\x12\x10=\xdd\x1a*DRM`o\
+\x10\x8fL\xbc\xc78\x0c\x06\xa3\x7f\xe9\x07\xdcm\xa2\xe1\
+\xa4B\x83\xec\xd2Vi\x83[\xa2J\x14k\xec\xaa\xbf\
++\xeen\xa5\xb0V*\xa5\xd2\xfdX7\xa7x\xef%\
+NA;\x1d(\x0f\x1e:\x1d5\xf2t\xceL#\xb4\
+\x09\xde:+\x05S\xa8\xcct3\x1b\xdaD\xaf\xd0\xdd\
+\x98\x13X\x0cg\xd6\xc2\xb4\xf29\xd5\xf4\xeeE\xa2D\
+\xd2\xb7\xd8\xa9iw\x97M\x9c\x226\xa1\xf6\xcd>\xc0\
+\xa8M\xebs\xa0\x15\xb5fD\xa5\xc6\xd0EL\xaa\xc1\
+\xa3Y\x84wh\xac\x90BF\xa0\x0b\xb8\x01\xc50)\
+:Gq\xf1\xb7\xfeX\xe0\x81\xa0\xd7-U\x8f\x06P\
+\xe2\xc21\xd4\xff\xae\xa2\xb2\x91D_B\xcb\xdd\xee\xd2\
+M7\xf1U\xb5ekX7O\xa8\xa0\xd22}>\
+6\xa1\xd4\x82\xefF,x\xcc \x1c\x9aI+\xed\x80\
+l\xbdH!Yr\xb2B\xb2\x01\x85\xe4\x0eJ\x9a\x83\
+\xb2\xeb\xbf\x96\x18\xd4H\x01\xe5pNa\xbb\x9e\xde\x96\
+\x0f\xbe\xcc\xf5g\xa0\x89\xd4\x960\xa5'\x18\xd1X\xc6\
+\x85b8A\xfd\xdc \xc4\xb0\x13\x89\xaf-\xc1\xe0p\
+\x99H\xce\x98\x97\xbe(8\x1a\x0c\x0d\xd7\x10\x13\xd5\xd7\
+G\x1cKS<\x22\x09\xa1e\x14\x9b\xc4\x80M2`\
+\xa9\xaa\xfb!Q\x5c>\xb6@U\x0fd\xef\x1a>\xa9\
+\xba\x9b\x16\xb0\xe9G&M\xcf\xa8\xc2\xf5\x11\x82\xbd\xfc\
+\xc9\xaa\xb5\xd4\x13\xf5\x17\xd7\x88MK\xc6\xfb\x17^Z\
+\x0ab\xa09|\xdf\xa6\xa5\x9eZ\xf7sj}\xe6_\
+\xfa:\xae/\xc1\xe8\x8f\x91\x80\x80V\xae\x99j\xc0\x1d\
+\x81xPIK\x84\xbbG\xa0(\xb8\x18\xcaqj\xfd\
+\xdc \xc4\x94\xe3=\x02\xc5\xc05Q*1\x10*\x8b\
+\x9eCB\x14V*\x8d\xb3\x1cM\x5c\xe1r\xd9\xbe0\
+W-H\x86G\x885b|\x1d&\xc0\x15b\x22\x84\
+\x96o\x96\xb7\xcb5F\x0a?G\x10\xc4\xe3}h\xd0\
+\xa7\xael\x0e\x96\x1b\xfd#\xa2\x10\x90+\x108\xd3\x00\
+\xdduP\x87'Ub\x0d\x07y\xf1`Z4}k\
+\xa0\xc5\xb2\x02c\x19\xf5\xc6\x03!\xae\x06\xac'n`\
+\xd0\xdb\xda\x04\x5c<\xc1<(\xa3<\xe1\x94\xf9\x03\xd6\
+ o\xe2\x1a\xe6-\xb0\x1e\xad\xd9G\x7f\xbf_\xa2\x16\
+\x19d\xf9\x80\x8b\x01\x86\x84\xe7\x06\xc6\xd0Aq\x9d\xa4\
+I\x84T\x1c$\xa5\x81\xb5\x16S\x01-I\x0c*\x14\
+\xd3\x0c\x07Q|k\xfb\xc2\x91\x5c\x82\xc9\xe1\xa6h\x94\
+\xcc\xef\x07\x9f|\x02\xc3\xc7f\xf6\xba_\xbd\xc6\xc0V\
+\xbeD\xe3}\x0e\xbc\xbc3$B\xef\x8b\x9a\x99\xa2k\
+s\x87\xe22\xe4\x8a`\x01W\xd7\x1d\xa8V7\x11`\
+cA\x1b\x80\xee\x8c\xf1\xee\xac\xb1\x85\x99\x07\xa9\x11\x0a\
+\xe0\x13*\x12\xa2-'\xca\x83U\x0f\xa8n\xcb>@\
+\xad\x02\x916\xad}|o\x06\x84\xe1\xfc\xb1\xebg\x14\
+\xa8\xbf\x1a\xe4\x8d\xef\x16e\x09Q\xa8\xa8\x01\xd3\x15i\
+5\x08q\xbf\xcf\x97\xe8\x1e\xd7\x95\xe01\xcd\xe0`\x12\
+\xbc\xc9\x05\x9a\x22bx\xa1\x10q\x91C\x15%\xc8\xd3\
+\x15\xa8z\xc0\x9eE\x0fh\x8d\x1d\x22\xe1E3\xce\xd6\
+\xc2G\x80C\xe6\x8eb\x05h\xe2:Y\xaa\x08m@\
+%6\xee\xc6\xe1s\x0bB\x81h\xee\xe6w=\xb7\x8f\
+^0\xcc\x11\x83\x0d\xd3P\x8dQW\x91\x16\xac?R\
+\x89%\x96\x92\xd1\x89J\x984\xc4\xdd*?\xe8\x1a\x87\
+F6TS\xa6\xa9-G\xae?r\xe0\x16\xd8\x1a\x9c\
+\x01\xac\x1f\xc2Hk\xf5\xe5\x00oA\x88iy\xcd\x5c\
+\x16\xdc\x1c\xed\x98\x8b%(E\xc8[\x12v\xccE\x03\
+*\xff\x16\x9c\x85\x1d\x94\x8a*\xb4\xba\xb1\x8b\xec\x8d\x8d\
+ T?\x8e\xaf\xa4\x01K\xc4=X3z\xb9\x1e0\
+\x07\x8e\xaf\xf0\xde\xa1i\xda\xe3~\x97\x82\xad8\x90\xa2\
+\xe0+\xb0\xa1\xd6P\xc7Wx\xcf\x19\xfcjP\x14\x10\
+\xec\x98\xf2\xb3\xfb/n\xa3DD\xfeE\x14p8]\
+\x9b\x1b'np\x8b\xcf\x0e[\x0b\xea\x18\xaa\x84\xba\xca\
+0c\xb8\x01\x9d\xe5\x01\xebN\xb8\x99\xb2\x1b\x8f\x0aT\
+\xca\x8av\x19\xb5\xf1\xdb,\xd5\xc4*$\xf0\xee\xb9q\
+y\xa5 \xa0\xc9\x15}\x7fPY\x092h\xefC\xca\
+J\xd0\xb6\xb2z\xb3\x8aoV1\xe0C\xe1\x9dd0\
+*\x96\x04\xa3\xe1\xb0KvP\xd3\x1dSO\x9a\xf5\xb4\
+\x93\xe4\x07u\x93fQ\x892\xac\x98\xdc\xa8\x1d\xbd$\
+\xad\x12\x03zII\xaeJ\xbd$\x88<Y/\x81\x8a\
+i\xa9%\x94\xdf\x90Z\x02\x17\xb9RK`\xf2\x8e\xa9\
+%\xd0n\x01\xb5\xa4\x88f\x83jIRm\x0a\xb5$\
+\xb9<I-\xb1V\xec{<\xd3dG\xe7\x01\xdf\x94\
+\xcd\x9b\xb2\x09+\x1b\xc5\x05\x16l\x9fA\xd9\x04\xc3V\
+N\xc1?\xe3\xd5;\xf1\xf2S,\x13L\x00Ye]\
+ZMi\xa2\xb9\x1cr\xab\xe0xk\xad\xc5 \xa4\xa5\
+\xa5\xc7\xce\x9cHQ\xf7\x1a\x97\x09\xee\xc1\xaa\x87Bw\
+a\x1fp|*\xc4\xa6\xb5\x8f\xef\xcd\x80\xb0\xc2\xbf\x05\
+\xaf\x8f\xa3_U\x00\xbc\xb1\xcb\x05\x19\xa9\x9d\xf3\x0c\xce\
+\x9b\xb5\x1eB\xdc\xedQ\xf9\xea\x95\xab.\x0dj.\x8e\
+70\xca\x9d\x08\xc1\x98T\x0d\xa8z(\x1cup\xf0\
+\xac\x15n.\x01\xde\x0fw\xcd\x85\xa2\xf4;8H1\
+\xbc-T|\x01t\x9b\x11\xa0g@B\x1aX\xd5\xa3\
+p\xd7]\x1f\x1a9D^\xb6\xba\x05\xb4\xf0\x1d$\xac\
+\xc4\xec\xb0oE-t5\xe2\xb0o\xc5F\xe6R\xde\
+\xd4\xda\x9bZ\x0b\xab5\xcc\xe12b[\xdf\x07rN\
+'\xca\xaa&\x81\x00Q\x18\xd1\xa5:\xaa\xf2\x07\xe0\xbd\
+\x09\xa6\x1aP\xf9\xb7\xd0E\xae\x83\xcb\x1eP\x97\xb0\xab\
+\x1a\xbb\xc8\xde\xd8\x08\x92\xaa\xf4\xa5\xa0\x17t\xf3`\xcd\
+\xe8\xe5z\x84,b<*-5M{\xdc\xefR\xa8\
+#V\x88\xbfSH\xb0C\xa6\x8b\xdc\x81*\x14\x12\x83\
+\x11!`-\x01\xc5\x9fB\x19!\xaeRN\x19\x01\x12\
+\xa7\xae\xb1p\xdb<lY)#@W\xb6L\x1cT\
+\xdb\x81\x9e\x86H\x1c\xa4\x01\xd6\x9d\x0a}\x84\xdd\x8c\x88\
+\x0aTk&\xe5\xd8Q\xbb\xc3Am$O{yg\
+\x07_\xde\x05\x93PZ\xbc\xc5uo:i\x84N\xe2\
+L\x18\xabZE\xe6/\xd5I_\x91\xa3\x077\x0c\xe4\
+\xd9\xb4^\x91\xbf1\xed\x1b\xd3\x86\xd4c\xff\x1e\xf2\xc9\
+Y/&\x82)zn\x87S\xf4\xda\xcb\xd1\x13\x0b\x82\
+Sz\xb1\xb6\xccg\x1b!\x09\xd5\x0d\xa8\xfc[\x98X\
+\xd7\x81G%\x1a\xab\x1b\xbb\xc8\xde\xd8\x08\xaa=d\x97\
+\x8c\xa6\x1e\xac\x19\xbdX\x0f\x87\xf0\xc5\xd9=C\xb9\xd6\
+M{\xdc\xefR\x98XR\xe4.\x9c\x89\xd5\xda\x15\xb6\
+\xe2\xf0\xe5f\xa4\x95\xda\xc8\x0aP\xfc)L,\xe2\xd2\
+\x221/\xf15\x02\xc7\xab*\x95\xbf_\x22\x8b\xda\xdd\
+\xd7\xeeB\xb7k\x13\xf5f\xe0\xaf\x92\xc2\x07\xd6}\x0a\
+\x03\x0b\xbd\xa4U\x91C\xc5o\x06,\x87\x8eZ\x1dF\
+e\xe7%\x97\xcc\xa8\xaah\xb7\xfe\x08\x1c\xc9\x94\xb4\x1c\
+\x0e\x22\x11\xca\x0a\xad\xcd\xb1w\xe9My\x5c>\xcfP\
+\xc7\x81\xe6\x9am\xb7\xdbf\x09\xcd{Z\xdd\xbc\xbcu\
+|$q\xdd\xd2\xc2\xb9P\x86R\x05\x8bp\x8c\xc4A\
+\xf1I|w\x817\x93\xf1\x8b\x94\xc1\xe9\xd0x1Y\
+BDH\xf1\xd5\xa5\xa4R\x15@+1N\xa5\xa8\xaf\
+\x8cf\x10Xb\xc8\xc3\xb8\x9d\xa8DP-\x84F\xff\
+M\x80<\xc0,\x16B1x\x8c\x98\x04v\xc0\xea\x0d\
+\x80 sB\x9c\x86\xdf.\x0aS\xe1\xfb\x7f\x98\x07\x5c\
+Bf\xe0\x1c\x89A*\xd3\xc40\xae\x15G\x98b\xc4\
+h\x80a%\x19\x84\x7f\x1cdY\xc33\x9c8,\x97\
+\x09\xbcH\x8dN\x9d\x02\xd7S\xe2\xeb}\xd0O\x04\x1c\
+8\x15\xdc\xab\xf7\x0a}\xd8\xdd\xc1;\xe0\xa3\x22-\xaf\
+n|\xbd\xcef\xbb|\x13\xcf\x1e7\x9f\xd3\xdd\xe3&\
+\xc3j\x96\xfa,\x8f\x96C\x94\x89\x00\xe9\x8a\x1c\xac\xb5\
+\x04\xc3eW\xa0\xa35a\x9d\x82\x07\x8dE\xdb\x94\x03\
+J}\xff\xd4+\xe2\xf1\xaax\x8e\x95\xf1\xc8@\x1dO\
+\xa8\x90\xa7\xc6\x8f\xea\x81\xab\xc6\x0e\xae7p\xd9R\x0f\
+\xdb^\xc2\x81z\x86N\xcd\xd2P\xb5S\xab\x92\xa1\x7f\
+\x11\xb7U\xc9\xd0\xbf\xbd\xdb(\x5cJ\xba|\xe1\x05\xe5\
+L\x00[\xd2\x81\x17\x1e\x9c\x8e+\x08\x1b*p\x08\x0a\
+x\xbf<\xed%\xabc\xe3R\x06\x0d5\x18\x19K\xc1\
+\xb1\xf4\x1f:\xba\xc0\x91\xff\x059<X\x7f\x8b_\xf8\
+ \xc1\x0c\x1b\x8b)xP\xffL\xd5\xd7\xd1J\xdd\xdf\
+\xaa\xe7\xe5\xb6\xfe\xaa\xd6\x1e#@$JE\xf3\xc5\x89\
+\xad\xca5<\x1c\x5c\x91\x17\xef\xed\xcb\xbb\x1c\xde7\x14\
+U\xf5dE\xa5\x99\xf5\xbe9\xbc,A\xe3xC\x07\
+\x1c\xc4\xce\xf7\x8c\xc2D\x9c\x8a^AP\xb34C\xdd\
+/'\xd5O\xc1\xac\xdf-\x88\xfb\x12\x82\x01\xdel\xbe\
+\xa4\xc2\xdb\x8dGJ\xfc\x1fr\x00\x19\xe9\xc4\xbb5\xd4\
+\xa7\x8cbF\x02qN\x9f\xbe\xb7M\xeb\x15\xef\xb4\xea\
+\xf2\xacG\x94\xfa\xff\x9aR\x14\xcez-{,\xbf\xeb\
+P\xfd\xd9\xbf\x80\x13\xdc\xefs\xf0\x8a\x0e\x0c\xa5\xf1k\
+e\x8c\x7f3\xf7\xf0\xd4\x07W\xeb\xedm\xe0\x08K\x1a\
+\xb2\x8a\x84\xf4d\x1a\x1e8\xb5!f\xafk\x14{\xcb\
+\xd1\xc6\x9d(?\xc0\xecAr\x1dbw\x8d\xb6\x16\xa8\
+\xc8Nb\xf7\x01\x83q\x88\xdd\xf9Bff\xde\xa6\x15\
+l\xc5\x82\xc2U\xaa\xfc\x16,\xf89.\x00cg\x0c\
+\xb85Xe2\xda\x1a\x94[\xed\xb1|\x9f0\x15-\
+\x9d\xda\xa3\xbe\xea\x08\x10\xfe\xe5\x1c\x7fN\x8de9?\
+\xf9\x08\x83\x04\xe5r\x90\xa0\xc7TX\x15!LP\x1e\
+\x8a\xe8`@\x97\x9d\xb40{\xdaICH\xd6\xa5\x9f\
+\x93\x0d\x0d\xff\x8c \xb9Sn\x1d+\xf3\xdc\x9c\xd9\xa1\
+\x83\xee\x9eih\x98\x16{\xf5\xe4\xb4\xbf\xc8fK\x82\
+\x9e\x87\x96\x82\x8f\xa2\xe5\xb1s=\x85\x19\xe2\xf3r\x83\
+\xd0'r\x83w_\xec(7t\x0e\xe6\x00+\xc4\x95\
+Kg\x0er\x83\x872\x86!\x0e\x0a\xfe O\xd8\xf3\
+PT\xd2\xaf\xe1\x89\xb8\xc3\x14\xce\x04^\xe3\xb5\xb3\x8f\
+\xef\xfe\x1f2\x91g\xd1\x9do\x00\x00\
+\x00\x00\x10\xb4\
+\x1f\
+\x8b\x08\x08\xd3\x9cBb\x00\x03Gnome-f\
+s-directory.svg\x00\
+\xd5Z\xedn\x1bG\x96\xfd\xef\xa7h\xd0X$A\xc8\
+f}\x7fp$\x0f\x12\x09\xde\x0d`\xef\x06\x1b\x07\xb3\
+\x98?\x03\x9al\xda\x84)R\xa0([\xca\xab\xed\x8f\
+}\xa4}\x85=\xe7\x16I\x91R\xb7V\x1e\xc7\xd9Y\
+F1\xbb\xba\xabnU\x9d\xba\x1f\xe7\xde\xe6\xc9\x9fo\
+.\x16\xd5\xc7f}5_-O{\xbaV\xbd\xaaY\
+NV\xd3\xf9\xf2\xddi\xef\xd77/\x07\xa9W]m\
+\xc6\xcb\xe9x\xb1Z6\xa7\xbd\xe5\xaa\xf7\xe7\x17\xcfN\
+\xae>\xbe\xab0ry5\xba\x19_\xbe~}\xda{\
+\xbf\xd9\x5c\x8e\x86\xc3\xe5U=\x9e\xae\xde6\xf5du\
+1\xc4\xa3!$\x0e/.\x86\xbd\xbb\xde\x8f\xf7\xddu\
+\xbc\x9c\xce\xda;\xe2\x01:\xda;\x89\xa7=y8\xc2\
+\xf5E\xb3\x19\xef\x1fL'{\x01\x97\xd7\xebE\xbdZ\
+\xbf\x1bN'\xc3f\xd1\x5c4\xcb\xcd\x15\x84\xe8}\xdf\
+\xc9]\xdf\xc9\xba\x19o\xe6\x1f\x1b\xccu\xb1\xc2\xcc\x1c\
+\xb6\xbcz\xbe\xeb\xb9>X\xd7\xa7O\x9f\xeaOVz\
+\xe8\x9c\xf3P\x99\xa11\x03\xf4\x18\x5c\xdd.7\xe3\x9b\
+\xc1\xc18\x00\xd66\xce(\xa5\x86x\xb6\xed\xf6\x84.\
+\xa3\x9b\xc5|\xf9\xa1s\x0d\xf2\xb4W}\x9aO7\xef\
+O{.]nz\xd5\xfbf\xfe\xee\xfdf\xd7\xfa8\
+o>\xfd\xb8\x02l\xaaR\x95K\xf8\xe3\x09\xdf.p\
+\xb8+(\xc2l\xb1\xfa4\xfa8\xbf\x9a\xbf]4\x7f\
+j\x96c|\x0d\xde\x8e'\x1f\xde\xadW\xd7\xcb\xe9h\
+\xd9|\xaa\x0e\x06\xce\xa7\xa7=\xac\xcd\xf3\xfa@\x8bt\
+\xef\xc5\x09\x17\xb2\xdbU\xaf\xda\xdc^b\x82Ms\xb3\
+\x19N\xae\xaez\xd5\xbaY`$\xa7\xbdz\xdf4\x9b\
+\x22i:^\x7f\x18\x5c\xac\xa6\xcd`r}\xb5Y]\
+\x0cd3\xc3/\x94\xf5\xaeY6\xeb\xf1b/Lz\
+\xdeI[\x8c\xa9\xea\xcd\xf2\xa1\xdc\xd6%\xc9\xe8/\x10\
+\xb3\x14\xed\xda\x8byVU'\xd3fvUz\xe1\x22\
+\x04\xd7\xe3]\xdc_\x8f\xa7\xf3\xf1\xe2\x9f\xf9\x05\x8d\xad\
+\xdem/~]\xce7\x98\xf2\xfa\xaaY\xffr9\x9e\
+4\xff\xb6\xfc\xf5\xaa\xe9\xed\x1f\xbfY\x8f\x97W\xb3\xd5\
+\xfa\xe2\xb4w1\xde\xac\xe77\xdf\xaa\xdaF\x97\xfb\x8a\
+\xff\xe1\xd2\xf7\xb5\xabs\xf6\xb9\xaf\xfdw\xbdjv\x0b\
+\xcd\x88\xb5\xca\x1ag8\x83^\xb8\x5cg\xe5,p=\
+\xedYU\xabdC\xaf\x9a\x1c\xf6\x9a\x1c\xf6\xe2\xc2\xff\
+\xe3\xf5\xab\x9f\xce\xff\xa6\xfd\xdf\xb6K\xc7\xe2\x01\xd6e\
+Q\x0f\x5cx\xef\xf7J\xc6\xf6`\xb2Z\xac\xd6\xa3\xe7\
+\xc9\x9f\xfd\xf0\xf2e\xafZ\xcdfW\x0d4T\x15D\
+\xda\x04\x84V\x01J\xd9\xf3\x1f\xf2\x9d\x00\xbd\x13p2\
+<Fo{\x17:\xd0\x8c\xd7{Ho\x0d6\xa2\xea\
+l\x02\xc4\xdf\xa0am\x1d\x95\xd7\xbd\xeaV\x9f\xf6\x0c\
+\xb6h\x0c\xa4\xdf\xe8\x83'\xff\xcb1\x1c\xc0\x11:\xe1\
+\x08\xa6u7\xd6\xe6\xfc48\x82}\x92\x80\x038\x8e\
+w\xde\x0d\x076\xedc2[8B\x9dB\xde\xa2\xe1\
+j\xaf\xa3.h8[\x07\x1d\xcd\xe7\xa0\x11\xbb\xd1\xc8\
+_\x88FT\x1d\xca\xc1\xcf\xdf\x8d\xc6c\x06\x95}\xb4\
+0&\x93r\x7fP\xbe\xb6\xf7`Z\xd1Z\xd3\x0f\xb6\
+\xce:\xd0\xbe\x08\xea\x80\xa6\x93\xa2+\xa8j_\x07o\
+m\x81\xf5\xe0\x11[\xda\xd4^}\x16\xae\xa9\x13\xd7\x98\
+\xda\x8dN>O\xc2\xb5\xfd`\xbc|\xfe!p5\x88\
+5N\xdb\x82\xab\x89\xb57z\x87\xab7\xe8\x99\xb6\xd6\
+;p\xb5\x11\xa3y:\xae\xb9\x13\xd7\xd4\xee\x8b^\xca\
+\xe7)\xb8\xa6\xd8* \xe7\xb3\xb3\xcf\xb1\xde?.>\
+\xd8\x88\x1bA\x97\xf8\xa0Cm\xbd\x0e\x12\x1f\x10\x05\x9c\
+f\xf0\x9f\x1c\xf6\x9a\x1c\xf6\xba\x83\xd4\xa8NH\xb3\xfb\
+\xc2\xf8\x90\xdb\x03\xcc\xe7\xc6\x87\xdf\x13R\xed\xa8\xc3\x88\
+\x19\xa6/_Z\xd0\xd5\x80\xd7\xd6\x088\xa1\xaf\xc5\xf2\
+\xed\x16c\x9dj\xc5\xb8@\x88m\xaauH\x82p\x86\
+\x19\x04\xfa\xe3\xc9A\x9f\xc9A\x9f\x03|u\x17\xbeA\
+\xb5\x07\x9c\xfb\x1a\xd7\x89oPO\x0b8\xaa\xf6\xdd\x22\
+\xda\xcf\xd8\xda\x10:\xb4\xfe)!\xfcQo\x92U\xe4\
+\x19h\x1b\x5c\x7f\xffU\xee:\x040\xeb\xfa\xbe\xf6!\
+\xc4\xad;\xd1\x1a\x01\x9f\xc6Io\x92\xeb\x10L(\xce\
+\x84\x06a\xb2)\xbed\xf7\xe0\xc9\xae\xc4\x98\xces\xd1\
+_H\x04\x82\xee8\x97\x1f\xf3\xf9\xf1\xb9(\xefB\xb7\
+\x94\xf6\xa3\x09\xeeG},\xc5:\x1b\xbb\xa5t\x90<\
+}\xa6\x8e\xa5\x04\x15\xbb\xd5D\xb7{\xd7l\xcf\xeei\
+Z\xb2\x8f\x08\xf9}<\xecW\xd45\xeb\x8a)\xdf\x14\
+\xce\x85\xe3\xd9\xb2Nx\x87h}*\xba\x86\x86\x93\xd3\
+y\xba\xb2\xd9Ne3\xed\xba\xf2\xe4\xb8\x15L\x87\x9a\
+\x84\x1f\xed\x17\xb2N\xe7jg\xdd\x16\x0e\x04\x15\x13\xf7\
+p0\xcf\x08\xb1\xc0\x01\x0e\x1a]\xf8,\xdbs\x9dp\
+\xd8v\xdb{:\x1c\xb6\x1d\xcf/T\xb2\xdb\x92\x86\x84\
+`\xd3\x16\x0e\x0bJ\xb8c\xe1\xf0D)\xee\xd8\x22c\
+l\xd4\x9f\x93\x93\x98\xce\x14-\xd8/d\xe1\xc1u\xb1\
+\xf0\x10\xce\xce\xbe,'\x09\xc8\xbd\xa8\x107%_\xf3\
+\x8a\xd4V\x92\x92\xfd\x13\xc2aj\xa7\xec\xe7\x90<\xd3\
+\x99\x94\x04\xd7\xeeA\x9eL\x9e\x83kg\xdf_H\x9e\
+oKV\x16\x5c\x8e\xfb\x14M;xB\x81\x03\xd8\x04\
+\x13\xb7\x9c\xd7\xe9\xda;\x97?\x07\x8e\xce\x5c\x22t$\
+\xf0g\xfe\xa5z\x9avt$\xf0\xfa<\xba\xf3v\x82\
+\xf6\x10\x8e\x93!+$r\xc5R\xdft\xbc\x19\xcb\x04\
+\xbb\x86\xc7n\xb7\xa3o\xb0\xc1\x0f\x0dF\xbdm\xde\xcd\
+\x97\xa7\xdf\xfc\xf7\x7f\xfe\xd77\xec\xfb\xcd_\xfck\xf5\
+\xfa\xf2\xacy?\xff\x97\xdf\xd6\xcd/\xbf\xfd\xeb\x9b\xc9\
+o\x1f&y\xfa\xcd\xc9p?\xa6H\x18\xdd\x5c\x5cR\
+r%W\x9b\x0fD\xe9\xe7j\xb3Z->\xcc7\x95\
+\xad\xd5\xc0\xe4~5[\x8f/\x9aO\xab\xf5\x87J\xd7\
+\xe1\x0e\xbd\xdd\x92v7\xc8-\xa7\xb3\xd1\xbf\x9f\xbf\xbc\
+\xbb\xb3\xbdw\xde\x5cM\xd6\xf3\xcb\xcd|\xb5\xac\xd8\x1e\
+\xbf]]\x03\x89\xeb\xeb\xf9t\xa4\xa7\xde\x197\x9e\x0d\
+\xdeNfa\xe0&6\x0f\x92J\xb3\x81\x091\x1b\x03\
+\xcd\x9fNL\xefP\x22d^B\xc6\xcf\xeb\xd5\xf4z\
+\xd2\xac_<\xfb\x81\xc5\xd1\xea\xe7\xf3\x97\xd5b\xfev\
+=^\xdfV\xbeV\xeadx\xdc\xeb`\xf8\xf0\xde\x9a\
+~\xff\xf5\x0e\xff_\x88\xbc\x87\xea\xcd\xf8rt\xc6\xda\
+ps\x8e\xff_<3H-\x06\xf8\xd3\xea\x8d2#\
+\xfc\xe9\xf0=/\x00\xed\xfd\xae\x0f\xe4\xbc^M\xe7\xb3\
+\xdb\xbd\x1cG9&\xbfQi\xe4\xf3\xc8\xc5\xbf\x16\x11\
+\x87\xbd\xda\x97\xb2Z\xbf\x816\xee\xce\xf8\xa7\xc5\xe2\xfa\
+j\xb3\xe6\xedJ\x83\xf0\x1d,d\xd7\xf1\xe1J\xb6j\
+z\xb8\x16=\xd0\xe9\x8dN#\xe7F\xda|\xaf\xf4~\
+O\xc7\x9d\xffP\x95y\xb8\xf4\xd7\xafG\xe7\xab\xc95\
+k\xf9?\x9d\xbfx&\xa2&j2V\xd3\x94\x06S\
+;U\x037m\xdc \xa5\xd9\xdb\x81\x8fa\x12\xa6!\
++\xedg\xb2\x95{\x83\xff/\xb72\x9d\x8c\xc8$\xc7\
+p;\xf3\x8b\xf1\xbb\x86\xa5\xfe\xefo.\x16\xf0uw\
+O\xee\x8f\xd8\xcc7\x8b{Z\xb1]\xde\x0f\x8b\xcd\xfd\
+\xfb\xdb'\x8b9\x8b\xd5\xa3R\xa7\xbe\x19\xc0\x93\x8e\xaf\
+\x17\x1b,g\xb6ZL\x9b\xf5@\xd7\xe3y\xd9\xfeb\
+\xfe@\xf4\xb0U\xb6\xac\xf1\xc1Z\x1e\xc7p2\x19\xfd\
+\x85\xde\xf2\x00\xbbnH>\x03\x91\xdb\xcbFd\xae\x9b\
+\xab\xd5\xf5z\xd2\xb4\xbe\xfc\x99N.\xe6\xec9\xfce\
+3_,~\xa2\xf4c\xd7q\x00\xef\xb1K\x19n\xd7\
+}\xe0\xcf\x87\xf7\x1c\xfa\xc9\xf0\xd8\xe9C\xd3v!\xe4\
+~Pj\x96\x88D\x9f\x8eC\xce\xf1\xf0\x93\xcb\xf1\xe6\
+\xbd\x047^x\x16\x9eq\xfd\xbar\x11\x09\x81\xef\x93\
+\x08'[\x9d\xb1m\xd9\xf2\x99\x97\xca%6\x5c6\x95\
+\x033\xca\xd2\xd1\x9bP\xbd\xaa@\x0d\xac\xc5S_\xdb\
+\x14+\x9b\xea\x94\xa4\xd0\x03)\x93\x8au\x0a+\xe5\x0a\
+\xe3\x22[\x1as\xe0\xcb\x85\xcc\x96\x0d\x96\xad\xa0\xa5\xa5\
+s\x92D\xc7\xb3\xe1\x9cd=F\x07\xb6B\x96\x8e:\
+\x99J\xf5U50`d.\xf4-\xdf\x1b\xa0\xe5 \
+7\xa3eM\x92)\x95T\xf9Tp\xd22\xa5\xe6\xa7\
+\xf5\xc3\x96\xf1\xa6\x0f\x05M\xd6V\xfc\x8aX\xaa\xad5\
+\xa5\xb0\x0e\x8d\xa5\x1al'W\x8bj\x80\x1c+\xb1\xd0\
+\x12\xb1r\xd9W\xd2,(jm8\x12I\x16\x1a0\
+R,\x06`\xe5\xbe\xc6\x0c\xa6\xec\x83\xe9\x9aOe\x1b\
+\xc9\xe2\x895z\xd7@g\xc8cyL\x03h\xac\xae\
+\x14st\xe2\xb5e}\xc7\xc5\x88\xe9\xb1(\xaf\xfb\xd8\
+u\x8a\x06\xd3\xb3c.\xc9 \xafC`i3x\x5c\
+k'\xc5\xa0\x0c\xd2\xa0\x95\xc3d\x11\xd8\x02,c\xfa\
+,\x0e\xe9\x8ae\xce\xd8\xc7\xe1\xe1|0Hy\x8aI\
+\xba\xe2LY\xc48\x5cK\xd9\xae6F\xe6\xe6\x8e<\
+\x93M\xa7\xadLn\x00}9\xd9J\x8eR\x8eF\xc6\
+\x05-Gh\x83\x915\xcaYc\xa9l\x18[\xc6H\
+\xc3\x16\x01\xb2g\x9dd\x8cJl\xec\x94\x85\xd7N\x19\
+\xd1\x15\xcfU@\xa1(\x1b\x99\x09\x92\xb6\x02A\xf4\xa5\
+o\xd8\xe2\x81\x86\x17duY\x1f\x08|\xf5\xdb\xdd;\
+HX\x04lt\x84\x11\xdb\xd7c\xe0\xab\xfbW\x98Z\
+\xa9\x7f\xda\xbf\xdd,\x8d\xcd]2.\x97\x0bD\xa7o\
+\xcb\xe2d\x8f\x91EL\x1a\x12\xe4x\xcf\x14\x93/\x02\
+G\xef\xd7\xcd\xec\xb4\xf7|o]\xb7$\xaf\xd5\xcd\x9e\
+\xc2\xfe\xbd\xd3\x22I\xee\x8b\xda\x99\xef\xb6\xe2v\xa2[\
+\xa7\xdd/\xccn\xa7=\xb6\xfb\xa0vv\xefa\xce\xb1\
+o,\xad\xb82\x1a\x87\x0c\xe3\x0e\xb4{Qs\x9b\xad\
+T\x19E\x99C\xa4\xa6\x89U!\x0d\xa15\xe4\x80\xb3\
+Q5,WC\xb3T\xd1\x0f\xda\x18\x8fO\x0e4Q\
+\x8b#\xf5\x01\xb1\xaaOS\xe6\x10\x9d\xa0\x81b{*\
+%\x19d\xb7eM\xf6\xf4\xa9\xa8\x81\xa5^\x86r\xce\
+\x1e6z\xac\x06i\xab\x06\xb6\xa8\x81;P\x03\x95\x8a\
+\x1e\xc4\xa2\x07\xa6\xb8\x1e\xd1\x0a\x9d\xad\xd8e\xd1T\x93\
+r\xd9\x984|8P\x98\x19<\xf9\x08>\xfe\xdb\xe7\
+\xfb\xb7\x90\xdf\xb5c\x19\x05\xcb\x0b\xa2\xe7\x89\x1e\x5c\xa7\
+\x98\xc6\x1d*\xc7\xdb\xe5&\xf2^\x97\x1f\x991t\xcc\
+\xc8<}7\xa3\xd6\x813fG\x9f\x91\xbdT\x81\x91\
+\x9eqJ\xc3ma\xca\x88\x19C\xe6\xb5g\xfa\xdfj\
+\x14\xfeO\x0ff\x8f]\xb3\xfb\xdd\xec\x16gJ\x8f\x96\
+\xe1\x85'\xf4\x83F\xd9b\xff\x96\x8e\x10\xbe\x8b\xdeH\
+\x9cb\xa23\xf2\x86g8\x88\xf0/\x121B\xdc\x06\
+\x09\x06\x02\x19ME0}\x0e\xa5\x0bC\xff>\x87\x1a\
+\x8c\x82\xf3\x83\x17\xed\x07b\x87Ae\xae2\x15\xbb\x17\
+\xbfc*v\xd7\xdc5\xe7z\xc5\xd8\x95\xe1F4r\
+(\xf8\x06\x845\xa2\x02\x8c\xe8\x98\x13\x9f\xf2Xr\xad\
+\xb1\x10\x046\xc41\xc4/]\xfd\xf5\xf7\xf7\x1a\xb6h\
+1\x1c\xeb\x81\xd7\x88\xa1\xcd|\x89\xef\x03\xafq|\x04\
+\xc9\xde\x1d\x81\x92\x97Y)\x84\x7f\xdc#\xd09\x13r\
+\x12\x06a\x16>h\x80n\x8d\x80\x9e\x10w\x12\x19\x06\
+}\x11=LDh\xf4\x07g\xf0@1S\x87b\xa6\
+\x9dY\xc0\x04\xb4\xc3\xba\x93\x98\xf4\xa4Dz\xba\xae\xe4\
+\xe9^\x8c\xf1\x8c\x8c\x8e\xfbc\x14A\x80Sa\xb7\xbf\
+\xc8\xfd\x95 \x9b<\xa31Eh\x81k C+v\
+\xf7\xc5\xb0\x84\x00\xc1Y\xfa\xc8\xfdY+\xcc\x89\xf88\
+\xec\xcf%aK|\xbbH\xf3w\xdc\x9fC\xd0O\xc2\
+S^q\xba\x94\x03\xcf\x04\xee\xea\x8cM\xc6Y\xa0\x0a\
+M\x95\xf7\x8f\x89\xab\x84L\x83\xa5d\x84\x7f\x09\xda\xf7\
+py\x9e\xf3d2\x9b\xb5\xe2\x91w\xe4\x0e\xa2\xe1\x04\
+!@c\xcf2\x93Q\xf0\xf9\x9c%$\xde7I\xa6\
+\xf4r\xf0\x11\x94\xe3\x151\x8c`r\xc0\xd0\xf9\x02\xa1\
+&WpYh\x06:b\xffF\xfc\xb3\xc1\xe6aA\
+G\x0aR\x00Dg\xd2\x0b\x1c-;\x97*\xb6!5\
+)\x9c!\x08\x0c@%\xc3\x87i>\xcc\x05?07\
+\xe0\x17\x9c\x95\xf0\x04\xc8`\xa1Z\xf4\xc3$\x9ah\x06\
+izD?r\x87~\xf0E\x8b\xe8\x87\xf5\x0c\x03|\
+O\x96\x0c\xc9\x84e\xc9\x5c4\x16\xb3\x04x\x08iD\
+(K\xc6-\xc7\x86\x0d\xdc 8\x22N>\x80\x22\xc6\
+\xaf\x7f\xd2\x85u\xa2\x1f\xc4\x88\x83\xc5\xca\x10\xb5X\x8c\
+\xd4<\x1e\x1fM\xa1\xb2\x95\xce\xd4l\xe1\xae.\xb6\xba\
+wW\xdc\xfb\xf3\x99|\xda\xd1\xc9;tx~0X\
+\xb1c\x9e\xe3=\xc6m\xb6\x8c;\x09\xe3\xe6\x91\xa1k\
+\xc0\xfc\x08h\x1a\x86\xc4\x16\xf5\x03\xe7\x0a\x16\xf1\xa0\x05\
+'\x8b\xf4@\xc3\x17\xe0\xc8\xa3O2\x91\x05\xd2JK\
+\xbcT\xd4>[;\x1b\xd9J\xa2\x13\x90\x01?\xc4`\
+\xeay\x06\xc4\xd2A\x10\xae-\x14\x02\xb2\xd5VG\xef\
+\xd1m't{w\xfd8\xdb\xb6ml[\x1f\xb1m\
+\xdf\xca\xb6\x93\x90mq)\xb0\x02\x92mK\xb2\x8d)\
+\xee\xc8\xb69 \xdbF\xc8v\xea&\xdb\xae\x90mw\
+L\xb6\xedC\xb2]\x88h\xa0\x15\x16\xae\x8d\x14\xaa\x92\
+\xa4I\x88\xb3P\x02\x9dDKBv\x845\x96\xf4\xcc\
+\x8aqm\xf33{\x94\x9f\xb9\xa3\xfcL\x17;-\xe9\
+Y>L\xcf\xf2Qz\xe6w\xe9Y7\x9b1\xaa\xdd\
+,\x83R;\xc5CL(\xc9c\x14\x8e\xdf\x92=\x1e\
+\xaf\xce\x1c\xae\xae-y\xf4\xf7\x92G\x98\x94\x11,\x18\
+\xd3<\xb3<\xce\x07\x97\xb7\xa3\xbb_\xc5\xc7aP\x9d\
+\x09s\x86\x86\xf8V\xfb\xd4\xad\xc8\xe8\x1dK\x87If\
+/\xf6\x00\x05\x05\x99I\xf2\x92\xdf\xd0\x86\xa0u\x88\xc2\
+\xe4\x92\x89\xd1U3\xec\xea\x82\xa1\xa5\x85\xc9\xef.\xb0\
+O\xac\x03^\xd4I#\xe7\xd4\x92\xd3\xc2\x1fIJK\
+t\xa1\x86x\xa4%\x95df\x9c\xe9wH\xa4\x8bu\
+\xdc\x19\x87\xde\xba\xb2\x80\xb5\xc0\xb6aQx\x0e\xd5\xc5\
+J}\x9f6\x9aJ\x8d\x00\x9a\xc4J\x81~,\xb0\x1b\
+\xdd\xa1!f\x17\xc8\xa8\xb7\x9a\xf6n\x8d\x13\xb7\x10\xc5\
+\xb38\xfaQ\xfe\xa0\xb0/o\xae\x98\xf1\x1a#\xfe\xdd\
+f#\x09\x8a5\x0c\xf3\xd6\x97\xd4\x11\x81\x86G\x8bt\
+\x16\xff\x92\x1e\xc2\xf9\x821\xd7\xd9\xd0a\x04\xc5s.\
+\xe0\x0cv\xe8\xf0\xc7|\xe5t\x09:\xdcr\x12\x06\xe0\
+9Lr\x09#\x19\xc9B\x14\x93\xa9\xdan6\xc9C\
+\xa4\xaf\x96\x22\x83\x22?+\x13\x0e\xca\x8c\x03N\x99\x1e\
+\xb3\x1c\xd3\x85K\xda\xd1@@\x00?\x98%\xbd0\xa2\
++L\xe5J\x86\xa4%\xef\x22\x8da:G\xf7\xa8x\
+\xe9%\xb3\x8b\xc2\x88\xb0\x0fF\x8f\xac\xa9\xb9\x81{c\
+F\xa1\x99\xa9\x90\xd616{\xe6- \xfa\xec\x17\x94\
+(\x1e\x9c\xbd\xc4\x1cdw\xc0=\x1b)\x12\xc0\xbf\xa0\
+c\x8c\xc2\x908S\x02\xdc\xd8\xb2\xc7\x13\x83FrV\
+\x042\xc2\xd1\xc0\x8b\xddFU\x0c\x5cf\xabM>n\
+\xb4YLz\x90\xb0\x18\xdb\x05S\xde\xaa\x0f\x0c`\x1b\
+:\x02\x9d3+<\xd0\x1emS\x091\xa4\x04^\x5c\
+;\x0e\x93\xe6\x16$[\x04mB\xf2D{S\xe4{\
+8X6r\xa1R5\xa9\x0b6o\xa9\xfe\xcc\xa4i\
+\x898M\xe8\xbf\x96\xc8\x94@\xadZ\xb5I\x17m\x8a\
+$\x97\x89>\xc4\xe7c\x1d|%\x18\x97\xd0\x19\xc5\xb6\
+\x99R\x8am\xe7b\xdbZK,5\xce\x1co\xed>\
+G\xec\x8e\xfa\xc1\xaa\xbd\x0aYn%q\x01\xe2\xaf2\
+Uhg1$\x1e\xf87Gz<\xe7\xb71\x96a\
+\x95\xac\x1a\x9e\x80!\xdb\x98\x5c\xd4\x8e\x8b%\xa7\x82\xd3\
+\xa0\xcd\x97@h\xa8\x9f\x06X{:\x08Q\xd6H\x92\
+c\xb9IM\xd51)\x14\x85\xd5\xb1\x14\x8e8\x83)\
+\xf1I\xea\x02\xb6D\x1dV\x94\xc4\xd0@\xc0%\xdd\xf7\
+\xf6\xbe\xf5<\xba\xe5\xb8\xf3&q\xc7?\x22]\x01Z\
+\xe2L\xa2\xff\xa3\xc8/\x09%\xd3S0J\xab\xda\xf3\
+r\xfbP\xcd]\x87\x9a\xbb]\xfa\xe3\x88L\x9f?\xb8\
+U\xe2\xbd9E\x99a\xeb\x8e\xa4<\x93K\xe8\x8e\xe4\
+0\x11\xfa5(K\xdb\xd1r-\xf5>J\x09f\xcb\
+\xad\xb6Q\xde\x89u\x22K\x90m\xc4\x12c\x8d\x94\x1a\
+t\xa1OY<\x1e\x94(J\xadH~z\xa9AZ\
+\x19o\x09\x18l-}\xdd\xb4\x8c\xc8\xb2\xa0\x09\xad\xc2\
+\xee\xdb\x91\x8d\xf23^\xf3\x10\xe0\x8eBO\xf0\xe6\x0e\
+`\xfe\x84\x94\x9a\xab\xc4\xa9s\xaa2\xd3vWq\xbb\
++b\xe2\x85\x85\x96\x1c\x5c\x09O,+\x1cl76\
+\xd8\xee\x8c\xd5\xbdR\xd2\x84\xd1\x0ddH\xbf\x8c\x97\xb8\
+\x11\xa5\x1c\xad\xc4\x07\xd1\xe3\x84,X\xc2\xb3\xc4\xe0\x91\
+\xfd\xe3\x9ea\x5c\x93$\xba\x92\xdf\xfbjj\xb0\xda\x9d\
+\xdfW\xca\xf0\x095\xbd\xe5\x80?'y\xb2\x12\x1f\x14\
+\x97V\x8b\xdbw\xabe\x81\xb9\x5c\x07o{\xd5\xe5j\
+\xbe\xe4\xcf\x0a\x1cy\x89!{\x80\xbb\x00EL\xf0\x0e\
+V8\x1e\xdf6DV\xb6\x09\x8b\xa6#\xa1\x1a::\
+o[\xdd\xf3\x07\x08\xbb\xd3q~dJVDwS\
+\x92\x88\x82xB\xaeC\x98\xb6\xf0l6\xf4\x1d\xcf\xc0\
+\xc9\xfb\x0e\xe4\x1c\xaeT\xac\xbbcvG\x91\x22\x04}\
+\xc7v5\x18\xbcEz`K\xf0\xd3z[\xe1\xad\x06\
+\xfcU2\xcf\xa1\x10af`\xd8q\xa9\x93\x07z\xc5\
+\xe8\x8bGQN\x18X\x96\xc3@\xdcU\xb4QO\x13\
+9nt\xbb\xc7\x13\xbe\x06{\xf1?\xc6\xc8&\x02\xb0\
+5\x00\x00\
+\x00\x001:\
+\x1f\
+\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xec}ms\x1bG\x92\
+\xe6\xe7\x9d_\xc1\xd3|\x19E\x00\xc5|\x7f\xd1\x8cw\
+c\xd6\xde\x99\xd8\x08O\xec\xc6\xcd\xee\xde\xde'\x07\x04\
+\x822ohRGR~\x99_\x7f\xdd\x00\xc9j\x08\
+j4\x80\x06d\xc9g\x94)\x03\xd5\xd9Y\x95Oe\
+eeeWU\xff\xe1\x9f~\xfc\xee\xfa\xec\xfb\xc5\xdd\
+\xfd\xd5\xed\xcd\x17/\xb0\xc0\x8b\xb3\xc5\xcd\xfc\xf6\xe2\xea\
+\xe6\xcd\x17/\xfe\xf3?\xfe4\x8d\x17g\xf7\x0f\xb3\x9b\
+\x8b\xd9\xf5\xed\xcd\xe2\x8b\x177\xb7/\xfe\xe9\x1f\x7f\xf3\
+\x87\xff1\x9d\x9e\xfdyq\xb3\xb8\x9b=\xdc\xde\xbd:\
+\xfb\xe3\xc5\xed\xeb\xc5\xd9\xbf^_\xbf\xbb\x7fXf\x9d\
+!\x15(09\xfb\xeb\x7f\xfd\xf9\xec_~|{{\
+\xf7p\xf6\xef\xd7\xef\xdeL\xff\xf5\xe6\xac,3\xffk\
+U\xe6\xab3+\x00g\xff\xfc\xee\xea\xfa\xe2LQ$\
+^\x9e\x9dM\xa7M\x11\xf7\xdf\xbf\xf9\xcd\xd9\xd9YS\
+\xbf\x9b\xfbW7\xf7_\xbc\xf8\xf6\xe1\xe1\xed\xab\xf3\xf3\
+\x9b\xfb2k\x8b+\xf3\xdb\xef\xce\xff:\xfb~\xf1\xa7\
+\xdb\xbb\xff\xb5x}\x8e\x05\xce_\xd4;f\x1f\xbea\
+Y\xd3\xa6\xfc\xff\xbaZ\xfc\xb0\xb8\xfb\x97\x1f\x1f\x167\
+m5\xee\xcfy\xfd\xf6\xab-\xb7w\xe4<GX\xbf\
+\xefb\xfe|\xe3\xdbww\xd7\xe5\xf6\xee\xcd\xf9\xc5\xfc\
+|q\xbd\xf8nq\xf3p\xdf\xd4\x12\xbb\xe4\xf3J>\
+\xbf[\xcc\x1e\xae\xbe_4\xc5|\xd7T\xa8\xbd\xb3)\
+\xfb\xb7\x1d\xe2\xbb\x8b\xcbg\xea\x1f~\xf8\xa1\xfc\xc0K\
+\x22\xcc\xccs\xa0s\xa2iC1\xbd\xff\xe9\xe6a\xf6\
+\xe3t\xfd\xd6\x06\xcc\x0f\xddJ\x00p\xde\x5c\xab\x94\xbb\
+Q\xbd\xfa\xf1\xfa\xea\xe6o\xbd\x95Y^\xed\x96\xde\xe8\
+\xd3\xdb\xe6\xef\xf9\x86\xa7\x8cr\x7f\xfb\xeen\xbe\xb8l\
+\xee\x5c\x94\x9b\xc5\xc3\xf9W\xff\xf1\xd5\xf3\xc5)\x94\x8b\
+\x87\x8b\x0e\x9b\x86\xe9\xfd|\xf6v\xb1V\xeeS\xe6\x0a\
+\xaf\xd9w\x8b\xfb\xb7\xb3\xf9\xe2\xfe\xfc)\xbf\xbd\xbf\xab\
+\xe0\xb8\xcc\xb8\xba\xf8\xe2\xc5\xd7\xb3\x9f\x16w\xdf\xac~\
+\xffpu\xf1\xf0ms\x99b\xf9\xf3\xdb\xc5\xd5\x9bo\
+\x1f\xea\xef\xef\x1bm\xf9\xe7\xdb\x1f\xbfx\x01gp\x86\
+\x14gO\x17n\x1b\xce\x97\xd7\xb7?|\xf1\xe2\xfb\xab\
+\xfb\xab\xd7\xd7\xab\xe2\x167\xb3\xe6\xeb\xf4\xf5l\xfe\xb7\
+7w\xb7\xefn\x9a\xc2n\x16?\x9cun~\x92\xea\
+U[\xdbF\xa0\xb7w\x8b\xfb\xc5\xdd\xf7\xab\xdb\x9f\x00\
+x\xf5\x5cm(L\xcbKORu/\x89\xad\xdfu\
+q;oph\x98\xbe\xb9\x9d6|\xbf\xbf\xba}w\
+?};k\x10n\xda\xf0\xef\x1b\xb4\xafg\xf7\x0d\xed\
+\xf9\x7f\xde7\x1c\xcf/f\xdf_]\x9c\x7f\xb5\xb8\xff\
+\xdb\xc3\xed\xdb\xf3\xfb\xa6\xdf\xbf\xbe\xfdq\xbd\xe4\xdbw\
+\x0fo\xdf=|\xb3h\xbb\xce\xaa\x0a\x0d\xf2\xb5\x19V\
+\x97\x97E=g\xae3X,\xcd\xc1\xf4\xf2\xeaz\xb1\
+\xaa\xe7\xf9\xb7\xb7\xdf-\xce\xdf^\xdd4\xb0\xdf\xdd6\
+_\xe6\xf7\xe7\xb7?\xfe\xf4fqs\xde\xdcq\xddb\
+y>\x9b?,\xbb\xe9\x86Loo\xde|\x90\xfd\x8f\
+\x17o\x1b}3/\xfa\xc1\xcb?\xd5\xcb\xff\xf8\x87\x8b\
+\xc5\xe5\xfd\x93V\xb4\xdf\x11\xda\xdcF\x89\x17\xb3\xbb?\
+\xdf\xcd.\xae\x9a\xae\xbb\xc6d~{}\xbd\x987\x0a\
+2\xbb\xfea\xf6\xd3\xfd\xb3J\xad\xdf\xc2\x8e\xde\xf0\xb9\
+o\xa0l\x08Z\xd8\x1f~\xban\xe4m3\xa6\x0d\x8b\
+\xc6r\xfe\xf6r\xf9\xf9\xfd2\xeb\xb6\xd1\x85\xab\x87\x9f\
+^\xe1\xef_\xac\xe8o//\xef\x17M)\xd0\xfe~\
+,\xa2\xa5d\xc7|qv~\x00kx\x9f5n\xb0\
+&\x5c\xb2>_\x97\xe5\x1f\xff\xf0,\xfc\xdbFQ\xde\
+.\xe6\xad\xadZ\xd3\xa5\x87\x9f\xda\xae\xb9N\xc6\x17\xef\
+\xa9\xed\xdbo\x9a^4U8k\x0c?\xb4\xff\xe2\x06\
+\xc1O\x8d\xc0\xed\x05X^\x87\x8d\xeb\x7f\xff\xe2\x85\xc3\
+&\x83\xf5b\xa7\xb7wWo\xae\x1a\xe5\xe4%\x91T\
+\xd2\xa5\xa8\x1d\x19\x08\xa9\x11\xf8\x97+\x1f\x9a.\xe5\xfb\
+nv\xf7\xb7\xc5\xdd\x1a\xaf\xa6\xc1\xe7\x7fk\xc9\xffx\
+ww\xfb\x03\xfeeq\xb3\x12\xa7\xe1\xbd\xb8i\xb5\xfb\
+\xdd\xc3\xed2\xe3nq\xf9\xbf[S\x03O\xbf\xfe\xbb\
+\xfez\xff\xfe\xaa\x8cO\xc6\xf1\xd5\xa3m\xfc}\xd3\x19\
+\xde\xce\x1e\xbe\xad\x1a\xd7\xfebV\x7fT\xc2&\xe7/\
+g\xad\xdb\xd0\xfc\x9d}}\xa6\xcd\xb7\xa9.\xbfN\x91\
+\x8av\xb2\x97\xb9\xcf\xa4\x7f?{\xb1\xd6\x0b\x1a\xd3r\
+=\xbd{w\xdd\xf4\xf6\xef\x177\xb7\x17\x17M'\xb8\
+\xbb\xfd\xdb\xe2\xd5oa\xf9y\xfc9]Z\xfdWX\
+\xe0\xed\xc3\xefW\xf0L\x1b_\xe7\xee\xe1\xd5M\xe3\xeb\
+<\xf5\x94f\xa0\xbf\xb9oF\xa8\xef\xbex\xd1Z\xa3\
+\xc5\xef\xa0\xc8\xcb\xb3\xbb\xdb\x87\xd9\xc3\xe2w\x18\xf0r\
+Eq\xbd\xfc\x09\x13x\xb9\xea>+~;\xc1\xbe,\
+s\x04\xf0\x95C/\xf4}\xc8\xcb\xa7\x88\xfc\x16\xe0G\
+\x83\xfd\xd7\xd1`\xff\xf5P\xb0\x0d>/\xb0\xa9\x0b\xb6\
+\x1d\x80\xf5\xd7#\xed\xc9\xd7\x87\xda\x13\xfc\xcc\xecI\xf4\
+\xda\x13*z\x08\xf0\xa3\x95\xfc\xebC\x95\x5c\xe2\xf3R\
+\xf2\x18\x80\xfb\xa8~\xc1rP\x97C\x9d\x02\xa4\xa8\xf7\
+o\xf5\x09\x964B\xc5\xda\x8f\xf7:\x06\xe1\xad\xa4\xe3\
+\xfd\x5cC\xe4\x01?\xb76\xd6>~\xae!\xb6\xbe\xcb\
+\xfe\xac\x87\xfd\x5cC\xf4\x0f\xfb\xb9\xed\x97\xd9\xf5\xcep\
+,\xe7\xba\xaf\xbe\xbd[4s\xf3\xdf\xae\xf3b\x02\x7f\
+\x86l\x9d-Q\xe8\xf2\xd2\x9b\xc7\x8c\xff\xbc\xb9zh\
+&\xdf\xef\x9aY\xd8_\xdb)\xe1\xbf\xdd4\x13\xb25\
+\x8a\xff\xa8\xca\xfb\xdd\xec\xe1\xee\xea\xc7\xdfa\x01!R\
+\x99@\x9b\x0a\x92\x01\xca\x84\xb0h\xb6_\xa6A\xc5\xd0\
+\x13_.\xf9\xcc\x1b\x05\x94,\x80\x98\x8e\xab\x9cF\xe9\
+\xa8\x98\x0b\x83\xc72\xe7r\x83\xe6r\x83\xe6\xae\x9dE\
+;\x89ar\x8f\xfel\xaa\x08\x11\xd3\x90\x8a\xbc\x96\x14\
+\x9a\xed\xa9\x22D,\xc3*\xb2\x90\x8b\xf9<\xdfc=\
+\xa0!Dl\x1f\xd6\x90\xfa{\x84\x86TX\xfa\x10\x0b\
+\x1e\xad!P<\x125\x97\x1a\xf2\xfc\x83\xb0\x80\x85\xca\
+\x84\x8b\xa4\x13\xc5bJ/WU\xc5e\xfb\xa32\xac\
+\x0a\xff\xa9\xc9p-\x8c\xc0\x18+\x12\xfa\xe2EP\x91\
+\x10\x13Z\xd1P\x87fg\x8d`b}\xb1\x15\xbb\xda\
+\xa6\xb5Q\x98\xd874b\xdf\xc9\xf5\xd9y\x0f\xeb\xdc\
+P\x89='\xd7\xa7\xd3\x97\x0aZ\xbf\xbe\xe0\x11,\x0a\
+\x22\x09\xe7\x04\x0b\xb0\x0a\xdbd\xda~C3\x9e\xb4\xd7\
+L\xc1'\xa6E\x1d\x94'S\xc9\x82B(\x1d\xe5\x89\
+\x22\x19j\xf4\xac=P\x02QA\xd2\x9e\xd5G\xa28\
+\x93\x13?\xab\x0f\x156u\xb2\xdcC}\xe0D\xb1\x15\
+\x82\x1db+\xa4m\xda7\xb6B\x88?\xeb\x98\xe3y\
+\x04\x0dQL\xafcNH\x0aMPJ@B\xa3\x12\
+\xee\x05Q\xfdS\x18s\x98HO\xa4\x22\xe4\xc3*2\
+[\xb4i\x805n\xb2\xce\xd3\xab\x08i\xbf\x8a\xf8)\
+\x8c\x08\x14\x8e0\x8f\x09\x14!0\x91\x89AA\x08\x9a\
+L\x85\x0b1\xa8\xad+\x0cd\x84<+L\x14Ie\
+$\xaa\x0a\xe3\x85\x1d\x22\xe2Ya\xac\xb8\x03Z\xfa\x93\
+\xc2pIW\x10\xd0\xdd\x15\x86I?<\xea0\x9dl\
+\xd4a:\xe1\xa83,1\xf0!]\x04\x8a\x05\x8b2\
+\xd9`_a\xd0S\x85\xaa\x19N\xef\xc23p\x7f_\
+9\x86\x83\x96\x99\xd9:\xeb^B\xd0\xc4\x16S\x9eh\
+13\xf0\x5cLeB\x05$\x18\x9a|j\x07c\x12\
+\x22\x96\x96\xc8\x8b\x06\xb2z\xed8,\xc5\xdc\x8d\xf3\xb9\
+\xe3x\x11#r[\xe5\x5cn\xd0\x5cn\xd0\xdc-\xfb\
+\x96\xa6b\xb6\xe0\x1e\xd5y\x01\x8d^\xe7\xc5\xf1\x08X\
+\x86\x9a\x02\xb5\x8en\xa6\xae\xec\x8e\xa7\x19\xb5Y\xa1i\
+,\x13D-\x8a\xc4\x93)aI\x16\xcf\xea\xbc \x16\
+&\xe3\x90g\xe7E\xbdppf>\xfb.(E\x92\
+\x95qEC\x95f\x0f\xdf\x054>lg\xc0`w\
+;\x933\xb7\xcd)\xf5\x0e\x93!\x9e]\x0cO\xc5\x0b\
+$%\x01\xdb\x8b\x8d:Z\x9f-\x03\x87\x0d6\x0a\xc2\
+\xe8[m\xda\xfc\x82\xe6\xbb\x9aK\xb0\xd8(\x22Q\x1d\
+9\xf4\xc5\x80\xc8\xbb\x97A\xbb\x9b\xe4\xd7\x19=\xacO\
+j\x97@\xa3\xd7.\xd9x7O\x0b\x99\xb3`ku\
+\xb4\x80\xa2\xa1<Z P\xf7\x94\xd5t\x80\xda\x1e\x15\
+\x5c\xdc\x15'S\xb3\xa2\x1c\x1a\x1d\x8bd\xc5\x5cM\xe2\
+\xd9\x22\xa5\x16\xb7$\xaf\x16\x09\xad\x10:\xab\xd4\xa1\x5c\
+\x0a\x0aR`\xc7\x22\xb9\x98\xc0\x1e\xf1\x06\xcd\x0fw1\
+2\xd8\xa3\x8bU7\x7f\xb8\x8b\x0d\xdf\xb7\xd97^l\
+T\xae\xafo\x91\xc1\xa6\xe2\xbb\x8e\xabz\x97\xfb\x1e*\
+\x0f\x00\xf0\xf1U\x9e4\xb7\xa8\xfc1\xdcV\x95P\x9e\
+`\x11KDY\x8e\x10\xa0h1!*\x16\x9a1A\
+r*)\xed\xb4\x98\x12\x8b\x00U]G-N\x0e\xee\
+\xcf\xba\xaeQ \xd2\xc2\xab\xae\xaf\xd1\x5cn\xd0\xdc-\
+'>(\x9c\xa6{\xc4\xd6\xd4O\x14[\xd3<Ul\
+\xcd\xf0\xe4\xfaB\xea\xfd\xfar\x8c\xe8+1\x1a\xda\x04\
+\x0b%\x0aa\xa3\x14X\x1c\x96YX\xd0\xa35\x8e\x82\
+X\xc2\xa5\xb9\xc6\xa4E\xb5\xa30B\xc5\xd0\x95\xeb\xc4\
+\x18\x09\x8a\x09>\xcdj6h.\xbb4u\x9e#`\
+\x11\xfbD\xde\x12\x07\xf4\xe5\xf5u\xb3ti\xa3I\x07\
+&\xc5\xcb\xa9\xf9\xde|apF\x9c\xba\xeb\x04\xa7u\
+\xc7\xe0\xd9U\xa3\xe8\xfaq\xfa\xec\xe6Q\xec\xd8\xf6\x9b\
+\xd0a\x985\xe3\xcao\xfe\xe1\x1f\xfe\xe1Q\xceZQ\
+\x0ck\xdd\x9f\xde\x09\xce|\xfe\xc18C\x05\xb4\x91\xb2\
+\x9f3\xf5p\xfe\xe1\xdb\xab\x87\xc5\xe6\xc4\xa9\x0b\xe8#\
+\xdfO\x03@M\xf3>\x005-\x07\xc4<\x08>M\
+\xc7\x13\xc3W\xfb\xda\x7f\xff\xe5\xeb\x7f\xfd\xea\x1b\xfaf\
+7\x88*\x9e\x15\xe7.\xfe\xb5Q\xaal\xdd\xda\xf5*\
+\xdc\x9f\xfe\xf4/\x7f\x04x\xb1\x86\x03m@T\x85\xec\
+e\xf3\xe5\x97\xef\xb3\x91\x8a\xc8\x11\x03\xdd+\xdc\xf2\x9b\
+\xbe\x19\x22'\xee\x01iJa\xe1\x8a+\x02\x15\x16\xf1\
+\xfa\x08\xc3\x8a\xb2\xda3\xc0)E\xf9qf3^\x0c\
+\x84-r\xf0>rhG\x04^\xab}\x98\xae\xd5>\
+L\x8fU{\xdcR{=B\xed\xbdPr\xad\xbc\xb6\
+?\x8fUw\xdaRw\xdf\xa7\xee\xd6\xa9\xbb\xd4\xbaG\
+\x01\x00\xaa\x95\xb7\xd5\xef\xb3\xf3\xea\xbb\x1c^{\xff\xa6\
+\xcfc\x91]<\x96\xea\x8b\x02U\xa7\x02\xa90\xc8\xb3\
+\x83\x89\x9cE5\xf4HU\x8e-U\xf6#W9W\
+\x96\xe7\x0f\x8d\x1f\xd6,\xd0\xbe\xf9\xb7\xd7\xff\xa7\xa9\xe0\
+\x92f\xf1\x7f\xdf]\xdd-.\xeaz\xfe\xfd\x97\xef?\
+\x19\xd3\xa6|X[\x13\xbe\xbe\x22\xfcY\xda\xb5J\xac\
+\xc6\xb4?\x5c\xbdz\xfb\xe6\xf2\x7f..7\xb0ZV\
+\xe1\x9b\xabZ\xf27\x0d\xe1\xea\x9e\xf3\xa7\x9bZ\xc9\xce\
+\xd7\xb869\xbf9\xa5QEb\x87\xcf\xdb\xaaVA\
+\xe8s4\xab\xb5\xfa\xf2\xf9\xd9\xd5Zy;\xada\x1d\
+_\xfd\xad\xb5\x8f#\xfbjG\x8e\x9b\x13C\xf6\xd5^\
+0\xf6\xe9\xc0S\x97\x12\x04\x0e\xdei\x03(A\xecu\
+u\xc7\x14\xa3 a\xd6\x8eP\x89>\xaeh\xf9y\x8a\
+Vg:\xfd\xb3 \xe7}\x94\xce\x8bc\xba\xd4\x9e\xe3\
+%\x02k\xf7\xd9 ir\x18\x8a\x08bh_\x1c\xa3\
+\xb3\xee\xb1\x88\x83\xa0-\xa6\xed\xf2\xc7\x8f\xd8\xc6\x9a\xee\
+\x1f\xb5\x8d\xab\xcfs\xfc6^\xe7\x8b\x9aa\xcf\xde\x0d\
+YI\x95\xae\x8f\xc3X@\x14TW\x91\x9d\x0d\x9a\xcb\
+\x0d\x9a\xc6\x11\x8a\x92\x16\xa8<\xbc\xecK%=&S\
+*\xa9\xc9\xb1\x8c\xe3\xc3\x04J\x82\xba\xd3\xc4\x8b)\x90\
+\xeb\x04\xa1\x84\x07\xf8\xcb\xe1V8\xb9%\x0eS?\x81\
+%n}\xac\xf5\x92z\xcb\x97\xfc\x04g\xeda\x8a#\
+'\xee\x95\x13\xf7\xcc\xdd\xdb\xbc\xc6\xfd<\xa2\xf9\x0b\xb3\
+\xe8oi\x97}\xba=gQF\xaa^O\xed\xee\xf5\
+b} \x8b\x05\xc3\xf5\xf4\xfa\xea\x22'\xd0\xd7\x8f\xd6\
+\x08.v\xeaF8\xf9$\xd34\xe4\x18\x8b0<\x9c\
+\xf8iQ[\x066\x89&Y\xd8\xd0\x81p\x82\x05\x8d\
+\x9b$/\xf7\x9b\xaf\x9e:,`\x1a~\xb8\xf8\xd5\x01\
+\x88f\xd8\x1f\x19<\x18\xaf\xa8=2\xa6\x12\xd4\x07\xca\
+P\x00\x019\xeb8*\xc5\x15P\xea\x03\xe5u\x9a\xcb\
+\x0d\x9aF\x0c\x82\xe2\x81\xa4\x03\x8a\x81K\x85\xc0B\x89\
+\x86\xd0\xaa\xc7\x14\xb5\xa8'\xc7\x0e\x03\xe6\xc9cB\xf4\
+y6\xfep\xe4\x88\x22?\xedN}\xdaP7\xfdB\
+B\xdd\xf4Y\x87\xba\xe93\x0eu\xd3\x09C\xdd\xa7\xef\
+\xfdN'\xeb\xfdS\x8cb\x1c\x946\x99Z\x09\xb66\
+}b\x83:\x91\xeb1\xec\xfa\x14\xb3d\xfb\x89\xc94\
+\x0e\xb0\xf0\xcd\xce\xcb\x87\xc5\xddN\xfb\x01W\xa4L\x82\
+/\x9a\xfb\x16\x7f\x9e\xbd\xbb\xbf\xbf\x9a\xdd\xfc\xf3\xf5\xbb\
+\xf6\xfe!\x0e\xed\x04\xe6\xe2\xab\xe6P\x8f\xd9\xc3\xd3)\
+D\x9c\xa2(\x9d\xa5\x00\xebL\x99\x84W\x8b\x02V%\
+\x9f\xb4=\x04\xc4\x8e\xd1\x1eT\x04\xda\x0f.\xa6\xb6\xef\
+\x90{\xe4\x89\x81!r\xfff\xce\xacs\x16.\x12n\
+T7\x83\x89\x17\xc8\x08\xaf\xc3\x0b\x16SO\xcb:\xc0\
+P\x16$V\xb2\x83\x82\x0a\x838\x1a\x97\x94\xb4hA\
+|.s\x8aE@\xdc$\xaa\xfd*\xc4a\x18\xf9\x5c\
+\xf9)r\x09\x93Lz\x92\xb0\x12\x1d\xbc\xa4\x81)c\
+x\xcbE\xc4\xf6\xcdn\x9b8\xd4\xe0\x95\x97T\xc9:\
+\xa88\x171\xb2\xe8\x0c9^\xda\xdf\x18U.(,\
+\xe68\xbcf\x9a\x99\xf9\xd9NF\xfbI\x9c`\x16\x17\
+\x0f\xe3\x09c\x81\x0ce\x7fy0BD\xe0\x83\x081\
+\xf1\xe1\x08e\x09I\xb0:\xa7\x86\xce,\xb5\xa0)@\
+G\xa9a\x08\x94\x09\x17~\x84\x85\x8aj\xf2r\xa7\x0a\
+\x14\xe3\x0c\xf2\xc9\x14-\x0b1:N,\x8b)X\xe6\
+(td\x18\x1d\x94C\xd1!-\x1e\x86V\xf5\x87\xb3\
+\x90\x05V\xfd\xa94\x9d\xb5\xf0\x5cP\x9dx\x87\xe81\
+\x96\x5c~&p8\x0a\xac\xca\xc3\x91\xe4\xccOEG\
+\xaa\x86@\xd5\x8c\xaa-K\xc5\xe0@\xb4Gm\xc1D\
+\x1e\x85\x0e\x8e\xd0\x91O\xcb\xc6$\x1a\x89\xc6D\xa0X\
+\xfb\xd1\x09S\x01\x0b\x03\x1a\x83\x90\xe4)m\x0cS\x85\
+F\x0a30Q\x1dW\xb4\x04\x03!Y\xed?@\x85\
+\x11I\x86W\x1d;\x0a\x85-\xc1\xa1\xe5\x06JQe\
+\xf5\xc9\x94d\x14\x1e\xbe\x83\xc6\xc0\xc1V\xc5W\x9d\xbe\
+\xc2\x82$\x05\x12\xb5\xc2\x92\xb9\xa4\x09\xad\xdb\x83\xa98\
+\x85\xb1\x1c4,M\xa6\xba\xeau\xab^\xb5\xca\xb5Q\
+\x18\xe9\xa0\xcd\x11\xc6C1R\xc9\x02\x86,\x1d\xcb\x9b\
+\xc5]\xac3\xe1B\x93b\x96Us*\xcdv\x8c\xb2\
+8\x9aj\xe4bJ\x8f0!\x03br;\xb5a0\
+\xb4\xf4F\x9f\xb0(\xb0\xf28\x9c\x06m\xb3\x0b\xd1\xbe\
+8\x1d{d9\xd2\x88\xd7\x8b\x02\xca\x98\x11\xea\x97o\
+\x83IYF\xd8\xe0_\xf8\x18N\xca\xe3\xc7\xf0}\xf6\
+2s\xdf^f\xdd}\x03\xd4\xdc\xe7\x17\x17\xbe\xeb\xc6\
+9\xd1\x18\xb7\x97\x19\xc7\x9f\xa0\xd1\x07\x07\xcai\xce\x02\
+`\xb4\x93\xedo\xc68\x1d\x1cp*8\xe8tp\xc8\
+\xe1;\xdd]\x88>\xd8\x1f\x5cHv\xef\x0f\xaf\xa5I\
+\xb6\xff\x86\xc0\x9c\xe7|\x86{o\x08T\x96\x18f>\
+\xbfh:)\xeey\xd2\x84\x0b\xd9\xe1p\x920~\x10\
+N\x12\xe6\xe3\x1c\x950^7\x8b\x90\xa6\x83\xe7\x8b\x8d\
+:\xea\x0ee`\x9b\x86\x9b,\x92<p\xb3\x08\xef\xdb\
+k)\x9c\x1b\x5c\x02\x08\xd3c\x8b\xb9\x5c\xcc\xda\xb4\xeb\
+~N\x11\xdc\xdd\x12_\x5c6i\x03\xcd\x11\xca\xc1\x99\
+C\xd6\x05\xd2b\xb1\xafu!\x01\xdc\xe5\xe0\x95y\xb3\
+\xdbj\xcf\xee@\x02<\xde\xd8\x0e\xfb\xc8}\x06y\xc4\
+\xb3\xdc\x913\x82\x1fq\x87y\x09ui6\xe67\xc7\
+^1(\x8c\xfd8\xe50N\xc7\x9c]n\xce]7\
+\xe7\xb7}s\xe0\xee<\xf9\xc8\x181#\xf4b\x944\
+\x8c\xd1\xd8\xb8\xc4f\x9cc3\x18\xb2\x191\xa9\xe1\x94\
+=\xb6\xabF\x1crP\x5c\xee\xb1\xcf\xdf0./h\
+\xe7\x83\xe2r\x8f\xcd\xf23\x99\xc3B\xd6Y\xefs\xc2\
+\xfa\xe6\xb9\x9d,\xa4{\x9c\x09>t\xbe\xf8\xf0Y\xa4\
+\xc3'\x9c\x0f\x1f\x87z\xf4E\xc5\x99}\xea\xef \xa3\
+\xd5\x7f\xfa\xb8\xf4g\x82$\x935u\x87\x02\x14\x9a5\
+\x90\x00\x051\xa0\x1b\xe4\x89\x02\xc6\x0a\xfe\xa4\xed\x95\xe6\
+\xc0\xe7\xaa\xeet\x8c\xe7\xaaP\x14\xc0\x98d\xcb\x83U\
+w\xe9>X\xed\x9b\x8a\x9b\x15\x22\x11\xad\x8f\x01\x95\x0a\
+a\x88\xd5\x85(\xc6\x059\x14\xb5\xa2\x97V\xc4Bl\
+\x87\x87\x0a\x1c\xc5\xc3%&SX\xb1\xf1\x1c\x11\xc1\x22\
+\xb1\xe1gt\x06\x87G&\xac\x08\xb9V\x93\x87h\xc5\
+1\xc4\xab]\x84\xc2\x86\x12\xa4V\xa37\xbe\xc2#~\
+\x06@\xe4\x94\x80\x84.\xf1\xd0|\x06Dr\xa9\x1fN\
+\xd5\xc5\xb0G9\xea\x10\xeb%\xad\xa5\xd9\x0d\x0e\x9d\xc0\
+(\x04h\x18\x01\xa0C\x110-\x22\x81HU%\x9c\
+K\x068V\x04\x88\x8bk\x98\xd4\x1e\xe2Y\xd0\x89d\
+\x8c\x5c0,W\xea\xcf$\xd7p\xcb\xa6\x8fkV\x8e\
+\xd1\xe2\xf7\xac\xf0\xb9k\xac\x9c\xd5s\xd3\xac\x1e\xeb\xf2\
+\xa8\xb1\xf3\x9a=\xaf\xd9;,0E\x0eN\xca\xe5\x02\
+S(\x8a\x1e\xea\xfb`\xb0^W&\xb6\xbeU.\xf2\
+\xcdx\xc9\x91\xb0\x88\x10r\x05 \xa2D\xa0\xf3'\x06\
+\xc3\xa0\x8d33;\xf8\xf1\x8e\x17\xf2$\xae=\x81\xc8\
+\x8au|\x03\xe5\xe2!\xa8\x5cc\xd2\xc4\x85\xc9\x91V\
+>\xd3\xdb\xbb\xc5\xec\xe2/\x8b\x87oo\xdb\xda/.\
+\xdb\x92w\xc2\x0aJ\x18\x82\x18\xb7HEAC\x8e\xe6\
+k\x116\x0c\xf3Q\xfd\x87N:RZq\x05\xef\x0c\
+\x0c\x1e%9\x99+l(\x85\x5c#\xaa\xf9p)\xae\
+\xfd\x90\x8d\x90\x96\xf2\x84\xd6\xc2\xa0\x9eif\x85E\x14\
+\xeav/\xa7\x02\x04\x81\xb5\xcf\xac\xd3\xcc\xbb4C\xee\
+*\x14\x0d4\x0a\x9d`qs7oc\x00T,\xc3\
+HV\x01\x81\x12\xe1\x91\xd1d\xb3\x16\xf0@\x9bhI\
+\xc1\x84\x941\xbd\x8c|\x10B\x91\xfc\xb5\x97u\x84\xa3\
+ \x1b\xe9|\x8c\xefeZ\x98M\xa5\xd3\xcb\xb8\xb8\x90\
+q\x9c\xa6\xa7\xf1.ve|O\x0b+A\x96V{\
+\xda\x14\xad\x98\x85D=\x86p\x9dh\xbeF4\xdc\xd7\
+H\xc3\x0c\xbc\xf5\xc4\x95\x90\xc4\xa5\xfd\x1a\xe4\xc2\x22\x13\
+(\x82`\x808a\xa0\xa2\x9c\xa2\x13\x85\x02\xaa\x9a:\
+\xaa\xa3\xe1I;ZA\xd5\xd4\xe88v \x85t\xcd\
+\xabK\xb0\xe0\xce|N\x8a\x0e\xc1\xf5~Wb\xd7#\
+\x8dT8h\xbbM\xe0H\xcfS)s\xf0\x89\xd9\x85\
+\xb7i\xdf\x98v&\x1d\xe9\x81\x07n\xb2\x1e\xf1\xc4\x8c\
+\x89}Pb]\xd8\xde\xcf\x08)\xf0dGB\x93\xe0\
+\xe1\x12\x9b\xb9\x0cI\x0c\x80&\xb1\xa7\xc4fn\xc3\x12\
+#\xcero\x89\xcd<\xc6HlV%^ck\xb1\
+\xc7I\xc4\x97s\xbc\xa4\xfd\x1f\xe3i\xf8\xe2\xf5\xfe\xc7\
+\xa42\x06W\xe6\xef\xc3\x01{\x1cd:\xa7\x99n4\
+\xe6\x188e\x97\xe3\xd4/.\xe6{+\x90\xec\xd4e\
+.._\xef\xaf@\xe2c$f\x1c\x92\xd8\x81\x1d`\
+o\x89\x99\x87%~}\xa9\x0b\x80\xbd%f\x1d!\xb1\
+\x88\x9dd\xe9\x84\x89\xc4\x89\xcc\xa2\x89\xc2\x18\x89a\xd8\
+,\x06.x\xb1\xb7\xc4`\xc3\x12s\xf8\xc5\xc6\x03\x94\
+a\x89!N}\xc0\xac\x99Y\xdf\x9ee;\xca#8\
+NSR\x9eX\xc9`\x14\xc5\xf6\xdc\xff\xa9\x17\x0f\x94\
+\xb4\xf6\x07\x16U\xc3\xe0\xd6\xa5\x22*A\x868\x99Z\
+\x16\xcb0\xb4\x97\x1f\xf0\xe4\xdf\xce.\xbaG\xd0:\x00\
+kg\x03\x12p\xd1\x80\x1a\xdaY'\xb9|\x9f\xe4n\
+I\xa1\x9a\x12#v\x94\xf6;o}*\x89P\x1f^\
+\xd7\x90rD\x9d%J\xdd\x1b\xb4K8\xf5\xe8\x95\x17\
+\xeb\xad\xbcR\x9d\xaab\x81\x94\xcc\xc7\xda\xaer\x100\
+S\xaa\x1f\xae\x05#\x91\xb9\xfbT\x19\xc0Cw\x91\xab\
+\x7f.7\xbc\x83\xd0\x8b\x86CZ\xb4Z\xc7\x01&J\
+/?&R&\xc7\xd8y\x07E\x90\x12\x98&P\x0c\
+\x93U\xe2e?.{\xb7\x0dYD\xac\xb5\x8d\x03d\
+~L\x9c\x1c>u\x9c\xb8\xa4!H\x85)\x0a\xb1\xa6\
+\xf8G\x85\x89~\x85\xa9\xe3\xb8\xf5\xfat\xf5\x91\x9cj\
+\xe1V\xd6\xba\x03\xb4>\xfa\xd9\xb8\xbaZ\xea\x91\xc8(\
+\xfe\xf1-\xae\x09\xf7J$uY\xb8Q\x01\x0eG\xea\
+F\xc2\x12\xd9\xf1Q\xac\x0d\x92VP(N\x91\xa1G\
+\xd1\x9f\x09\x1f\xdd\x88\x9aK\xaf\xf0\x01\x9d\x88M\x814\
+w\xad\xd1S(\x1a`\xe2U\x07\xb3$\x0bs]\xe8\
+\x15Q\x8cY\xe2\x93\x1aF)p\x9f\xf3\x8b\xac\xb3B\
+\x89\xac$\x9b\xad\xafP\x12q7\xaa2S\x01\xcaP\
+\xf9x\x1211\x1e\xc7>\x91\x11\x1b\xe5\x04\xeb\xca\x15\
+\xcdB\xa4\x01\xde=C0\x9d\x09k\xcbW\x9a'\x14\
+\xc4\x0aQ\x84\xe6GE\x81\x8f\x84\x023Q\x8bBI\
+TH\xe9\xa0\x81\xa8\xc5\xcd<*\x1aX $\xa1z\
+\x90\x8c\x85;4\xb4\xb2\xe0\x8c\xa4G\x06\x83\x89\xbd\x17\
+\x0c\xe1z\x04\x97AIQR\xac\xa6\x0b\xb4\x04\x83\xd6\
+\x11\xa4!\xaa:<\x8c\xe3\xc7\xb3C\xe4\x01\xfb\xf4W\
+(\x02\x04V-\x95I\x017\x94\xfaP\xa3\xd2TW\
+\x1fJ\x1a\x11\xca\x91O\xa8\xa2L\xe8=\xe8\x1a\xf2\x08\
+\x0b\xce\x0a\x82@\x84N\xa0\x04\x05\x98\xf9rS\x92\x89\
+KZ\xfb5\xc2\x98\xc9'\x98XD\x8cxbTH\
+9\xc1\x86\xdc\x8fv\xaeg\x5c@\xd0]\xeb3z)\
+\xe9)\x10\xf5\x99$\x17U$\xac\xcf\xfa\x15\x8b&e\
+\xd6w1q\x11\x177Z\x02<\xbf\xbez\xfb\xef\x8f\
+\xaf\x81\x7f\xfa\xbe=\x88\xffD\xc5HY\xdf!\xbf\xfe\
+\xbe\xf7W\xef\xee\xae\x7f\xf7\xdbu\x94\x19\x99_\xfe\xbe\
+\xbdZ\xa3\x00\x8f\xef~_\xbd^\x7f\xfd=\xf0V$\
+\x15\x00B\x9e.\xb4\xed\xd9\xb4\xfc\xab\xbb\xdbw7\x17\
+\xdd\xcc\xffs{u\xb3\x9e\xfb\xddU\xb3\xf4\xed\xfa\xaa\
+\xf9\xdf\xab\xe7\xdb/f\xf7\xdf\xce\xee\xeef?=\x96\
+VsW1\x88WRP\x1f\xb3k\x0d\xbb/\xc3\x9f\
+bHq6\xd1\x09yIa\xd7\xb3/\x9b\xdc\x94\x92\
+\xaen\xcf\xb9x6%\xd0\xd2\xfc\x99O\x18K`\xa0\
+[\x93\x89T\xd2\x81l\xc2Y4\xc8\x8dZ\x06DP\
+\xd2]b\x22^42\x93\xdbL)\xa1\xa9\x13\x8dB\
+D\x86\x8fy\x06I>\xb1(\xee)\x90g_w\xb3\
+\xd3J\x10\x81`\xcb\xb6f#@\x09g\x8f6\x13\x0b\
+\xabx\x9b)\x05)\xa8\xcdD/\x0cM\xaa\x99-_\
+T*h\x19]\xdaV^\x89\x82\x18\xc8]\x16(R\
+\xc2\xd8\xb8\x16\xd6\xcd\xac\x15\xfb\xba\x9b]\xc5\xf8r\x95\
+m\xc8\xf2,1\xad\xca\x92T\xc1.4\xa8V\x14\xc8\
+d\x1dF4)dN\xf4\x0c96\x99.E\xd2\x91\
+\x9f\x1aG\xf2\x83\xed\xf8\xf7\xb3\xb5\xf6\x15.\x12\x08(\
+K\xc6\x1e\x85\xd3!\x9f\xb3\xb5\xcd\xa4\x02\x12\xe8\x13\xd1\
+\x92\xe8-[\xf3\x82\x1e\x81\x13\x85\xe2\xe1\xa4\xb6\xaa\x17\
+\x156\xe7\x9c\xa8\x16\xcd\xb0hE\xc8\x92\x94\x0d\xa9a\
+\x09f\x0eZe\xb6w-\x9b\x17\x12\x80\x96p\x11d\
+Q'\xc0N\xf6\x97\x8f\xd9(n\xcf,\xb0\xcd\xf4\x82\
+\xa0\xfaT\x94g\x9bG\x85R \xde\xabVz\x11\x12\
+\xa7G\x01\x22\xb5\xcd\xc4\x02\xae\xf1,)\x7f\x18\x95\xbf\
+w\xc2u\xad\x05`\x5cy>\xddu\xc47\xb7\x17\x8b\
+v-qcJ\xe6\xf7\xf3\xe5\xe7\xfe\xf1\xbfUd\xef\
+\xc9\x92\x9c\xdc\xccW\x034\xde\xccC\x914\x04\xb5\x09\
+\x14\x11\xc8\xa0lm\xbb\xb3\x81\xa6L\xa6O\xc6\xdf&\
+\xd3\xcc\x82\x82\xe2\x93Xzj\xa0\xb1\x8b\x99w/\xca\
+\xcc\x8e\xef\x9by\xac\xeb\xd5\x22\x0a\x08\x05\xe4\xc70\xf3\
+\xac\xd5\xcc\xef\xd8\xbe\x9b\xda\xe1k\x864\xbd0a\xe0\
+\xba\x1d\x05/j\x88\xd4\xb5\xa3\x88^<\x11\xb8kG\
+\x91\xb4\xa8\xaa\xd1{\x06\x80\xb9\xa8Q\xc8\x9a\xb1`/\
+\x22\x12V\x0d\xe9*\x13S\x8c\xd7\x0ci\xcd\xee\x1a\xd2\
+\x9a\xbdn\xdb\x98K\x0a\xbcg\x05)KDp\xae\x1b\
+R\x93\xe2\xaa\xc4\xbanH\x0d\x8a\x03Kj\x97\x85\xb6\
+\xd5\x8dL\xad\x85u3\xbb\x86\xb4f\xaf\x1bRm\xab\
+\x1bn\xda\xb5\xa4\x86\x05\x02\xdc\xb5\x0b\x8ee\x81\x08\x00\
+\x5c\x07\xd2\xad\x84\x92\x06v-ix\x81 I\xaf\x96\
+\xb46\xe4\x9a!\xad\xd9\xebv4\xa1d\x90ht\xed\
+hH1fe\xadv\xd4\xb3\xb8\x09\xba\xad\x1b,\x97\
+\x92J\xae\x1d3\xeaT\x14\x15=\xab\x19]f\x8az\
+\xb2\xac\x9bQ$*\xa8\xce\xde5\xa3\x8f\xd9\x00H]\
+3\x8a\x98\xc5\x12\xc2\xbav\x14QJx\x8a\xbcgG\
+\x11\x0a @\xac\xd9Q\xe0b\x86h\xd5\x90VT\xd6\
+\xec\xe8\xae\xbeS~~\xbe\xd3\xcfe\xe5\xf3\xa3Zy\
+\xc4\xe2d\xc1\xfa\xf3\x9a\xf9Op%;\x11\xd9\xff\xf7\
+K\xb9\x8d\xf2\x98K\xb9\xc7\x9f\xaa\x99O[K\xd3I\
+'\xc8\x5c\x00\x80&\x04%\xdc\xa8\x95t\x85\xae\x16\xec\
+\xbc\xf6w\x0a\x85P\xa2>x\x8cg\x81\x9f\x84\xe9y\
+#vP\xff\xfa\x0d\xa7\xaf\x90\xbf\xdax\xca\xdc\xf7Z\
+\xe7\x90~V\xac\x7f\xfc\x12\xbf|\x9fUaU\xee\xe7\
+g\xfd\xfc\xe0O\xa9\x10\x1b\xfc\x0cS\xfa\xf9\xc5\x16~\
+\x10_\x02l\xf0s\xf5~~\x09\xdb\xf8\xf9\x1f7\xf8\
+=\x9a\xdc\xaa4\xfb\xac\x16\x03\xea\xd9\x88\x09\xb2\xc7y\
+#\x17\x8b\xc5\xd0\x81\x00]\xd6\xb6\xc7.wZ\xc4\xe2\
+bc\xe5\xc4\x88\xf5q\x06\x87\xecK5:\xee\xf9\x08\
+]\xd62\xe2\xf8\x95\xd1p\xa4\xf6H\x9c\xbe\xbb\xc4\xc6\
+\x8b\xdcC\xe2\xcc\x9fQb\x91<@\x01Dq\x10\x8e\
+\xe1Wm\xf7\xb0\xe6qo\xf1\x86\xdf\x8f\xda\x99L\xce\
+\xb2}g\xb2I\xbb1\x99\x8a\xb5\x1f\xef\xdb\x9e\x8c\x14\
+\xcd%\x93Cw'C\xbd\xfb\xa0\xad\xc9u\x1b#\x14\
+$P\xab\x11g.\xa8\x09\xack\xcfp\x1d\xa1z>\
+\x95fp}\x0f(\xb7\x9f\xa7\x01\x950St\x82X\
+\xdc&R2I\xc8\xc6\x9c,\xca1\xbc\x97\xc7\x0f?\
+\x03P\xa2\x10\x12*\xd6G&Z\xd4\xa2\x0b\x8feI\
+b\x88X\xdbe\xc0I\xf6)\xc0\x03\xa3\xe1\xf9\x05+\
+\x8f\xc7 :lx\xb0\xf2H\xa1\xf0.<\x89m\xad\
+\x1d\xac\xbb\xd4\xa0\xbev\xba\xbd\xee\xa1$;l\x96&\
+\x98\xc0(\xd1mPt\x01\xf8e\x8a.#D\x1f\x9c\
+s\xd5m:\x89%@\xa13]U/\xa0\xa1(u\
+\x02\x96\x05T\x03\xf2y\xde\xa0\x5c\x8c\x81\x86gcE\
+1Sr\xe2\x85\x15\x938\x17\xd3\x98L\xa3\x801\x09\
+k\xfb\x0b\x0b\xb9\x13\xa2L\xa6\x04\x85H\x9c\xac\xf9\xca\
+%\xd3\x8c\xf3\xf0I\x1b\xb1\xd3p\xd7\x918\x10D.\
+\xea\x81\xa4uo\xa1\x14e$\xad\x93X\xec\x92\xcc\xdf\
+'\x99wI\x06\x80\xb4\xa2\xe0\x19\x96\x8f\xd3[EH\
+\xf4\xc9\xd4\xb8\xb4\xe0\x19N\xa6L%\x1d\x10u\x14b\
+'5\xc5i\x85\x8dA;+\x97\xa2\x18\x18v\xb6\x11\
+2\x15P\x0c\xab\xbdN\xb8x&\x90\x1dh\x8b\xbd\xa8\
+\x98\x99\xf9q\xec\xb1\xed\xb2\xb1]\x0eV*T\xeb\xe8\
+\x14Z\x81\xb0\xaaR\x8e\xc5]\x89\xean\xd5.\xc5\xbc\
+K1\x1cD0\x85@i\x90\x22\xc3TX\x9e\xad\x9e\
+\x04\x98!\x13.\x9c@\x086A/\x0c\x09\xd6\x5cV\
+/\x96L\xe3:\xa5\x0d\x1bu\x8b<\xd8\xa8\xb7pd\
+pU\xb1\xb4\xc2\xceH\xdc\x89\x92A\x11\xf2\xea\x0cU\
+\x9aA\x15CwR\x89\xc7n\x08\xee\x84\xe1\x13+\xaa\
+J)6\x99JIAs\xc0Q:6l\xfd\x15\xf1\
+\x97\xa3c\xccG\xd61\x1a\xd61;X\xc7(J\x0a\
+%\xd55Jb\x85HS\xde\x8b\xc4rx5c\x8e\
+\xc5\xc8\x04\xe4@\x1d\xc3\x12b\xe4\xca\xc7\xd21\x18\xd6\
+1\xe0_\x07\xc7\x8a\x98\xf0.\x83\xe3\xaf\x96\xbf\x17?\
+\x1ck\xf9\x7f\xf9\xbd\x92c\x97^\xf9\xab\xe5\xef\xd31\
+\xd6SX\xfecz\x05G\xf2T\xc6\xe8\x18\x8d\xf4.\
+~\xf9N>\xed\xe4\xe4\xff:\xfd\xde\xda\x17IFL\
+\xbf\x07\xfa\xe2p\xe8e|\x94g\x8c\xfe\xe0\x88\xf0\xcd\
+\xe7-:\xc6IE\x1f\x1f\x86\x1d\x1f\x14\x1e\x83\x8e\x8e\
+\x8a\xe6\x9e\x1e\x9d\xf1O\x14F\xc13\xe2I\xc9/_\
+y O\x81\xce\xcfi.8$N\x19\xe3w-N\
+\xe1\xdc\xd9V\x07Q\x1cD\xb8\xcadU *\x0e\x80\
+\xa6c\x04\xb2a\x81\x92\x0f\x15\x88\xb2h0j\xe7\xdd\
+\xc6Y \x08\xbd6\x92[1[?!\x0a\xad\xa0\x90\
+\xd1\x18\xb9v\x18\xcd\xc3\x0e\x95+l\xe9\xe8zV\xe5\
+\x83\x22\x18\xa8TMNafJ\xc4G\xb9*\xcd(\
+\xb9h\x84E\xfeT;\x15|\x9c\xa7G\xc1E\x11C\
+\xad\xbbu\x89\x04\x11\xb3\xba\xafV\xc8\x05\xb53\x89\x84\
+\xa2\x16.8|\xf2\x06QF\xda\xd3\xfb\xff\x1d\xc0\x01\
+'S\xa2\x92\x14\x99\xb6\xfc\x8a\x9e\x181bq_p\
+\xfc\xfa\x9chO\xc4\xec\x84\xa10)\x9a\xec\x150\x91\
+\x82\x99a^\xb5\x8c:$\xf3\x0d\x92y\x87d\xf8%\
+\x14f@*\x13(\xda\xa8S\xd1 \x01\xf5\x89\x14q\
+\x0a\xf5\x98 Iaso\xb0\xc3\xc8Bi\xce\xa3\xb0\
+\x93a\xec\x98\x0f\xc4\xceKZt\xb0\xe3(\x22l\xdc\
+\x85\xae*\xda\xfa\xe5y\xbd<\xd4/\x059Z@\xa0\
+\xa0\x01\x9bf\x03\x9f\x00'!O\xb8\xb0\x87\xa1\xb5!\
+1(\x98,\x18\xcb\xd7\x9d \xaa\xe68\xb5\xa3a\xbb\
+F\xf6iE.\xba\x07\xb9\xc8\xa83\xb5\x83a\xe7\xa8\
+\xc4x\xcd\x89,\x8a\xeeI]\xd5\x09\x85\xc8\xba\xd8}\
+\x9df\xde\xa5\x19\xd4!\xcaTamu\xc8\x15(1\
+&X@\xdd\x89\xad\xf9\x16L\xc0m\x97\xc3\xa5M\x83\
+\x9cL)\x8a\x90\x1b\xe0\x18\x15\xa2\x1d\xfcM\x8e_-\
+\xd7\x07\xb1\xb3],\xd7\xaf\x0f@z\xf1\x93]\x1e\x80\
+\xfc\x8a_/~\xf4\x09/\x1d\x18a\xd7\x09v\x09\xc8\
+\xff\xaa\x17}z\x811\xe2\xa1\xcfg\x88\x9f\x1e\x1b?\
+\xfb\x84\x97K\x9c\xde\xadB9\xce3\xd7\xfaF\xa9\xee\
+K\xa3\x1e\x8d\xd6\xb7\x8b\xab7\xdf6\xf4X4\x83L\
+Wp>\xee\xc9\xca\xc4\xe7-t\xcb\xdd\x9f-]\x02\
+'\x03\xae\xea\xb6\xa4\x13\xc54\x05\xdfZ\x95\x8dWT\
+\xf5\xbfd\x8a\xe4\x83/\xa8\xc2\xc2\xe2\xa6\xabh\xd1V\
+\xa1\xeb\x1b\xaaz\xa4\xb7\xc0\xf7\xa4G\xf5\x14\xeaJ\x0f\
+\x1e\xe9(\x86\xeb\xe2\x93\x88\x07u\xc5G\x22N<\x9a\
+\xf8\x16\xdc\xf3~.&L\x94\xf1\xd2+\xf3\x91\xea\xaa\
+\xac=M\x05\x06\xc0\xaa\xe3+\xcbiG\xaa,g\xf4\
+\x00+\xb9_E\xd7\x0d\xd5\x90\xf5\xc4`\xc3U\xb0h\
+\x8aE\x8c\xd2|1]\xd9P\xa3e\x1c\xc4\x0bi\xec\
+\xea\x04\xd7\xa3\x0f\x88R\xbf\xc1o\x9e\xc7\x80\xa9\x81G\
+a\xad\xd3j\xb6,JBO\x1b/I\xb9\x00F\xdd\
+\x18\x5c\xefy\x1e\x17\xc8\xb4p\xf6\xbc\xc17F\xeeN\
+\xea\xd9\x9c\x84p\xf8N\xad\xcaw\xf6\xea\xbb\xab\x8b\x7f\
+o6\x9d?\xfc\xb5\xb9\xb8gE\x879\x14\x1d\xc1c\
+P\xac?-?;\xed\xb1\x1c\x1eyB&Ss\xa9\
+\x0f\x87\xcc\xa5\x86\x0f8\x8a;s\xd4\xd0|\xd6\xa0|\
+\xbdz\xf0\x13\xa1D\xf9\xa0\xf2P\xa2\xf5\x03@\xd6\xa6\
+\xa1S\xa2{\x14\x88\x12\xa3\x9f5c\x9b\x86X\x17D\
+\x92^\xfe\xb4E\x83\xe4\xa2M\x83\xfc\xd9E\x01\x00\xfb\
+\xcb\xa0\xfe2\x14\xda4X\x86\x10Cff\x7f\x19\xb2\
+\xa5\x0co\xd3p\x19l\xb1\xbd\x8c-\xcdl\xd2\xa6\xe1\
+2$\x07\xe4\xd8\xd2\xde\xaem\x1a.\xc3@{\xf9\xf3\
+\x96\xf6\x8eY\x9b\x86\xf9;\xe2V\x19xK{\xcf\xb8\
+M\xc3e\x04\xcaV\x9d\xe2\xfe\xf6\xbe\xbf\xba\xfe~q\
+7\x5cD\x22n/\xc2\x06_\x1f>\x5c\x86\xf0v\xa8\
+b\x0bT\x97M\x1a.C\xd1%<\xa2\xb7\x0c\xd9\xd2\
+\xe4)m\x1a.\x83I\xb7\xca!\xb4Em\xe7m\x1a\
+.C\x153s\x8b\x1c\xb2\xa5\xfbi\x9b\x86\xcb\x08Q\
+\x01\xf3\xfe2\xb6\xb4\xb9R\x9b\x06\xcb0\x08\x03\x00\xea\
+/cK\x9b\x0b\xb7i\xb8\x0cA\xdb\xaa\xbb\x8a\xfde\
+p\xb6i\xb8\x8c\xa4\xd0 \xea/\x83\xb7\x94\xc1\xc3B\
+8\xa7omp\xd5\xd1c_dDfz\x7f\x19\xbe\
+\xa5\x03\xda,fC\x9d\xa3\xe7\xdd;\xe3\x0e!\x19\xf6\
+~\xeeV\xaf\xa4T1\xeb\xac]\xa4\x92ikk\x17\
+\xa3\xb8\x93R\xdf\xb2\xc1p\xfb\xb0O\x13\x1e[\xac_\
+\xb6\xe9P\x9f&b\xdba\x18\xde\xa6\xc1v\x05I\xe9\
+\xe7O\xfd\xfc_g\x9b\x06\xf9#H\xf6\xf3\x97-:\
+\xb3h\xd30\x7fa\xc2$\xee/\xc3\xb6\x94\x91M\x1a\
+\x96\x81P\xad\x9f\x7fl\xd3\xfb6\x0d\xf3\xb7\xb4m\x83\
+B\xe4\x96v6o\xd3\xb0o\x99\xb1\x85?\x1d\x81\x7f\
+n\xf5]#\xb7\xf9\x95\xd2\xa4]|\xbe\xe0\xed8m\
+ik\xc16\x0d\x97\x91\xaa\xdb\xcb\xd86\x8f\xd06\xed\
+\xe0\x04dDj\xbf-\x05\x18m\xaf\xd5!M\x89\xfb\
+\xcb\xa0-e,\xda4\x5cFJ\xf4\xf3\xdf\xd6\xde\x97\
+m\xdaap\xd6\xed\x0e\x00lio\x876\x0d\x97\x91\
+\xbc\xdd\x07\x87\xd8R\xc6\xeb6\xed0>kl\x1d\x9f\
+\x11\xb6\x94q\xd9\xa6\xe12\x06lH\x22\x8d\xd4)<\
+U\xec\xc1#\x0b\x12\x81o\x89@\x98{\x09w\xc0c\
+\xc6!\xc2\xa8g\xcc6\x19=\x99\x07\xd82h\x98\x8d\
+6\xb8\xc8\x12\xfd\xfcc\xcb\xc0Mm\xdaa\xe2\xc8\xfd\
+\xc6\xdca\xcb\xa07\x1b\x9e\xf9\x1a\xe5\xd6\x1e\x11N[\
+\x0a\xc06\x0d{\xacJ\xb1uD\xf2-\x8d\x9c\x17m\
+\xfa\x84=V+@,u\xe9\x9dbA`\xa5\xf7<\
+V\xe6\xe8\xf5XUz\xb4_m\x8b[\xf9\xbaM\x07\
+{\xac\xbaE1)\xda\xb4\xcb\xe8\xc9\xdbF\x850\x18\
+\xd1\xae\xa3O\xb2K9\xe4\x5c\xb7\xb4\xdd\x03\xe7\xec3\
+\xa1\xf9\xee\xa7\x9c\xc5\xee\xb1\xf3\xd7\x97\x97\xba\x11\x93\x1f\
+q\xc8\x19K\x1c\x80\x06+\xec\x8e\xc6\xbc\xa93~\xa0\
+\xca=\x9ci\x9f3\xce\xe4\xe2\xa8`\x18\x1e\x02\x86\xf1\
+\xee`,..\xebK<\x07U\x83M{\xd0\x18f\
+=\xfe\x00<\x0e;\x04\x8e\x88S\x9d\x80\xc8\x09?\xe7\
+y\x80\x00\x07\xc0!@{h\xc7\xffk\xef\xda\x9a\x9c\
+8\xb2\xf4\xf3\xfaWt\xf0F\xacH\xce\xfd\x82YG\
+@\xdbLL\x84\xbd;\xb1~\xd8G\xa2\x01\xc10\x03\
+\xb4\xa3il\xe3_\xbfu\xaa$\x95J\xa8\xbaQ\xd3\
+=`\x8f%\xe3V~Yu\xf2\x9c\x93\xe7\x96\xa9K\
+\xea\xf3\xe7\x07\xfc\x1e \xc8\x8c:fI_\xa7:\xc8\
+\xae\xa2\x0e:\xc0:\xca\xbf\x0fP\x07\xc3a\xa1\xe3z\
+\xd5\xc1q\x15u\x08\x1c\xa2\x0e\xc2\x03\xd4!\x07ER\
+\xc2\xebUG\xf2U\xd4\x91zS\xb1C\xd2\xffE\xb1\
+c^\xe6\x19])\xf0\xe5\xe7\x92\xebs\xdc]\xef_\
+r\xfe.+|\xc4\xa9\xd2\xc2)\xfc\xf4b\xca\xf8!\
+e\xff\x04\xdbP\xbcJ\x9aU\xe4\x83\x5c\xe5\x04\x9e}\
+\xacm(\xce\xa4\xd9y\xd2\xd7\xe8*fy\x05u\x98\
+\xe3M\xb9\x8a9\x7f\xa9\xaeb\x91\x97\x9e\xce\x0d\xcf\x9f\
+\x07\x1c\xe8*\x96X,\x1fN\x19.s\x15K\xfe\x04\
+\xdbp\xbcJ\xcd\xe1H7e\x1b\x8e\xf2\x19K0g\
+\xbe\x8a:Xo\xaa\x04s\xf6\xc3J\xb0k\xfeIf\
+\x06\xcc\xdf\xe5O2_\xfd\xbc\x8f\xf1\x84\x04\x7f<{\
+\xac\x82_\xcbI\xaew0[\xd6\xa3~\xdc\xe4\xf6\xf8\
+\xa5I\xd8:P\x1d\xa91\x88o\xf6}8\x9bj\xe8\
+5\x89\x18\x17\x88\xe8\xb7\xae\xe3\xc0\x87pbY\xffB\
+A``P}\xab\xa7\x19\x07\xd5\x17a\xad\x05[=\
+\x0f\x93\x7fz\xa2\xe8\xd5\x15\x90\x8fgS\x81\xe7\x01\xe7\
+M\xa64\x96q\xbb\xbad\xe8\x80\xadcq\xc3\x9a\xb2\
+\x8e\x87\xe2\xa6tm\xb3k\x12\x03a^\x8e\xc0C\xe4\
+\xd0-\x11x\xc2}\x98N\xb8\xaf\xf65q\x8f\x17p\
+\xcf\xd7\xc0\xbd7J\x1e\x99\xd7j^\x17\xeft\x01\xef\
+z\x08\xef\xb6\xc5\xbb\x8c\xbcG\x03\x00\x1a\x99\xb7\xbe}\
+\xddg\xc8:\xfa\x9c\x18N\xbca\x92\xbd!b\x1an\
+xUn\xcc$\x80\x1b\x8e\x11\xb0\x83Ds\xc5\xf3x\
+\xcdGL\xe5\x90\xad\x9e-\x9f\xbf\xfd\xe6\xfex\xd6\xdb\
+\xc9\xeb\xe5\xb3\x9f_.\x7f\x99\x88\xf8\xcb\xcb7\xcfN\
+\x7f\xb9\xb3\xfe\x88\xbe\x85\xdf\xda\xd7\xbf\xfe`>\x10\xed\
+d\xb2\x93\x17\xcb\xee`\xa9\xee\x9a\xff\xba\xb5\xa7k\x95\
+A\xfbwr\x06\xbe\xdf\xbd\xec\x8e\x9c;}\xb5\xec\xe2\
+\xdc\xd3eQ\x5cw\x9cuC\xec\xc1O\x9f\xfc\xa3\x9b\
+\x82}=ON\xcf\x9e-\xcf6#\xe0\x04\xee\xb3y\
+7C\xd6?\xfa\x8e\xe2g\x0d\x0fE\xcff\xb2\x9e\x9c\
+\xbc]N\x99\xff\xed\xf4\xb4\x0b\xc1\xd4T\x89\x90u\xda\
+9|~\xbb)\x09\xa4L\xbb*\xdc\x1a5\xf5\x88\xa0\
+\xbd\xaa\xac\xd8l\xb0\xb7\xeb}\x91\xf5\x1d\x82\xef\xce\xce\
+\xbay\xbe\xf3\xea\xe4\xfd\xb2\xe3\xfc\xfb\xfa\xf3x\x95\xc0\
+\xff~\xfaK\xa9\xad\xb2\xe1\xbb\xe5\x08\x95\x8a\xdf\x8e\xe0\
+H\xab\xef\xb9\xf3\xe4\xc9\xe9\xaf\xab\xde\xad\x12\xa6\x08\x8d\
+u\xd3_\xba\xd6\xa3\xb3\xd3\xd7\x7f;[\x82\xd8\x8f\xcb\
+\xf3\xf3\x97o^\x94\x03\xd4c\xa8\x17~}_\xb7\xac\
+\xa0\xa1\x90\xa9\x1a\xe3\xa7_'\xd0\xfbm\xe8m7W\
+\x1d\x9d\xd2^33\xdf\xedx\xffA\xc7z\xbe\x00\x00\
+j\xbezp\xf9\xfa\xa7\xbd\xf8\x96\xb1\xd1x\xe9\x16*\
+#\xba\x1a\xb1\x1bp\x8d\xbd9y\xf2j9\xea\xb2\x1e\
+?\xbf|\xfb\xb2\x03\x07lp\xaa\x0f\xdd\xe9\x9b\xaf\xee\
+\xbf^\x9e\x9f<;9?Y\x9b\xd3\xba\xdd\xed\x18|\
+\xf5\x1f\xf7\xdf\xbc\xbd\xf7\xf6\xf9/\xdd\xab\xe1\xe5\xab\x97\
+O\x97o\xab56{\x17_\x17\xbc\xa5\xc4\xe9\xd7f\
+(\xc6/\xc7\x8c\xcd\xfe\xce\xbf~\xdb\x01\x8c\xe6\xc2\xc4\
+R,\xd60w7\xe3LF\xfd\xf1\xf4\xdd\xd9\xd3\xe5\
+\xc3:)\xee\xed\x15\x86,\xd7\xea\x1c\xf1\xf5\xf7\xcb\xe7\
+\xe7\xff\xd3O\xee\xa8\x98\xd50\xa7?\x9dw\xa7\xce\xfd\
+\xd6\x7f\xe5ce4\xa3\xa8\xe7'g/\x96\xe7k\xb8\
+\xe8M\x91\x92e`\xa3\xfb\x06\xc8\xf2QW\x03\x9dt\
+\xac\xfc\xed\xbf\xffB24J\x9b+Z[h\xddP\
+\xd5`7\xa3\x9d\xa3\x94\xffmfp\xf8&IM\xea\
+\xf3\x93W+\x0f\xef\xee8_\x1e\xaf\xcc\xe7Q\xff\xe8\
+\xf17\xa7?lz\xc6\xeb\xcby\xea,\xbd\x93\xa7#\
+\x95\x9e\x8b\xd2\xf2\x94\x8f\x82\x0b\x1c\x05\xbd\x82\xfchi\
+\xceJ\x8a\x7fDE\x14<o%\xd57x\xca\xfd\xb3\
+g\xcf\xef\xfd\xef\xb7\x8f\xbaCO\x9f\xde\xfb\xbf\xd3\xb3\
+\x7f\x0e\xeeX\xe8\xc9\x93\xd3w\x9d2\xba\xc8\xf5\xec\xe9\
+\xbd\xe7\xc3x/_w\x91\xfd\xee\xdb\x9f_\xfc\xe7\xaf\
+\xaf_\xdd\xbf;v\xd45\x15\xac\xea\xf65\x81\xb3\xe5\
+\xdbr\x83\xce\xa9\xff~~\xfe\xd3\xbd\xbbw\x7f\xea\x0e\
+kl\xa7g/\xba\xfb\xba\xff^\xbf\xac\x1b\xee\xfex\
+\xde\x1d\xd4\xf8\xd7\xa2;\xb8\xfd\x8a\x8f\xee\xd5\x86\xb5\xbb\
+k/\xff\xe6\xab\xafv\x16\x11\xd3c\xd5\xfc\xf1AE\
+\xf9\xe5\xe9\xbd\x14?\xacs\xa7\xab\xe5\xd9]I\xf6o\
+7\xa9\xae\xba\xb0*\xe6\xbdD\x1a\xa0\xe2\x1c%\x0c\xe3\
+\xc8)\xa5\x98\xa7\xa4\x1as\x94T\xe3\xf8AL(\x11\
+\xccSJ\x939J\x91\x0f\x1e\x1d\xf3\x94\x12\xcdRB\
+V\x9f\xa3\xf4\x90\x8f\x8f\xbf\xdd\xe1I\xe6)9\xcfR\
+\xfaV\xbe\xa3\xefrJi^\xe3\x04\x99s\x94\xbe;\
+~D\x8ftJ)\xe6)\x09\xeb\x1c\xa5G\x9d\x9a\x1e\
+M\xad\x80a\x9e\x92\x13\xcdR\xea\x1fSJ\x83\xc6w\
+\xdf\xeb\xbf\xcc1\xe20\xc7\xc8\xeb\xf6\x0ceU\xf5\xa9\
+$>\xe8d\xff\x9c#\x9b\xa1\xe8\xbc-\xc6\x838\x9e\
+\xd0\x13\x5c\xd3\x9b\x99{J\xb3\x88\xf9\xf9\xaf\xe7\x94\xa2\
+\xcf\xcf\x1a\x1b\xcf\xcf\x7f=\xa7\x94\xf2\xba\xe6_q\x96\
+\x922\x1e\xc2\x93\xf2,\xa5\x10\x99\xf7\x93\x87\x1f\xe8I\
+u\x86\x12\xce\x12\xc1\xcemyJ\xc4\xe7\x0c{f+\
+t\xdc\x0f\xb9\xf9M\x8f\xbdj:`\xd6\x8c\x0e\xd5P\
+\xb9\x8b\xf2\x94\x88\xac44\xd1\xc7\xa5\x1aBx|c\
+\xfb)\x9f\xae\x98\xbc\x06\xc58^M1\xf8\xf8\x86\xb6\
+j>Y-n\x87\xaa\x85\x93\x1frL\x89\xc4\xd5\xd4\
+B\x8fol\x17\xe80\xc5D\xc4\x83\x98\xa6\xe4\x98\x0f\
+Z\x00N\xb3\x94\x8e\xe3\xbb\xc8)%\x9d\xa7d>\x1b\
+H\x1f<|p\xfc`\x87\x92_P\x04\x89\xcfQ:\
+\xd6c;\x96)\xa5\x0b\xd2\x04\xa2\xce\x16A\x0f\xbb\xe7\
+4\xb8\xe7|\x9a`@\x9a\x0f\xee\xf5\x9cR\x9a\xd7\xb8\
+\xe0\x05\xa9\xcb\xbb\xa7M)\xcdk\x5c\xcds\x96\xd2\xb7\
+\xf5\x9cR\x9a\xd38\x1e\xe0c\x993\xeeq\xff\xc5\xfa\
+\xb2\x17lR\xbf\x1aP?M0n\xd8T\x8b}\xf3\
+\x8d\xe0\x0e\xf9\xe1\x88\xb9E\x00\x18/\xd0\x1axB\xe0\
+\xd1\xf7\xdb(f\x03\x8b\xf0\x0e\x0dn\x9a\xb6\x86\xd2\xbb\
+c\xf1C\x1a\xd2\x16T\x80\xb1v@\xb4P/@\x1b\
+`\xdf\x96\xa0,2\x88\xde\x92e\x11\xd6\x1c\x1dX:\
+:\xd5\xcf\x90\x85\xb1Pa\x85(-B[0O\x01\
+\x86\x02\x8aR\xdde\x884\xc3\xfc\x88\xee\x1c\xc0\xbfy\
+\xd3\xaeEj$\x08\xf5\xa7\xee\xaf\x7f<`\xf7\x08\xfe\
+ai<\x9c\xd8?\xbcfw\xba\xbd\xde\xea\xda\xf7\x83\
+\xd1\x82f\xe6\xeb\xf3\x1eX\x1d\x85\x17w([j0\
+s\x7f\x9e<\x13*\xcb\x9a\xcc\xb8kt\xfalY\x0b\
+\xcc.v=]=j\xc2\xfb\xc9\xbc\xfc\xd2kbj\
+N_\x0c\x16\x92,\x87\xea\x8b\x04oO\xec\xaeF\x02\
+`\x5c 7\x05a\xb6\x9a\xba\x11%l&l\xd4\xa1\
+edN\x03\xe4\x1a6\xd8\x9d\xc36\x14\xda\x08\x87\xdb\
+\xc4d\x00:\xbc\x07 2\x8a:\x124.\xc3\xf36\
+P)\xc0!\x0b \xc4\xbe\x99\xd4\xdb%\xd0V\x0b\xbd\
+\xb8\x18\xda\x88\xba\x9f\xe3\x11-c\x9b\xf8\x9ci\xca\xc1\
+38z\xacl\xebM\x1b\x97\x08\xf5\x07\xa3\x1b\x7f\xd5\
+F\xc4\x96\x99=\xe2\xc50\x94v\x90\x8e\x8e\xab\xed\xb0\
+ik\x94\xa8C\x0b\x9bG\x16\xa2akD\xb0\x1c+\
+\xa9%\xca\xc2c\xa5\xa8\xe4F\x91\xd5&\xc4j\xe9\xc2\
+{\xb2\x9b\xd7\x83\x8e\x92K\xc1\xba\xcb\xde\xaa\xbd\xeb\x85\
+e5\x83\x91LKg\x22\xd7\xdb\x1f\xa7\xb0\x19\x9di\
+n\xeb,+\x85\xe3\xc2[fh\x19O\x13\x83 Y\
+#\xd1\x80\x90\xdd\x17\xd1\x84\x93\xd9\xb6\x91\x0c\x18D\xf1\
+\x96.@\xb1@\x88\xc6\x8a\x14\x1d\xa9\x09\x18\xc9\xa4E\
+\x1dY\x5c;(Kz\xec\x90Tr\xc5\x0dR\x8a\xb1\
+\x16\x89.\xde\x832\xcc\x13J\xa2\xe2\x80T[\x00\xcd\
+\xa8oSjra\x1a\xec =\x86H\xcc\xa5u\xa8\
+!\x89k~ j\xd2\x0b\xd24\xb2\x9a\x9aH\xb7\x02\
+\xbc\x1a&J\xce\x9b&\x87\x83\xea@\xc3\xccc\x91\x0d\
+P\xb2\xb4\xb4F\xa2\x89sZ\x14@\x94\xcc\x1d\x02\xcc\
+\xc8t\x14\xd9,\x12bD\xbe\x9f*\xfb\x80\x19\xa7\xdb\
+;Q\xa47\x80\x17\x93hv\xd9\x9b\xfa\xeb\xec\x87\xe9\
+<f\xbf\xd1\x10V\x06\xbe\x08[\xd9u\x01f=\xc0\
+le\xbe\xc0\xbaH>\x8aX$w\x17T\x87X\x8f\
+t\xb8T\xa3\x7fe\xd5WS\x8cu\xc7\x91G\xdd_\
+i\xb0\xc8USch\x0e\xfe4\x1dx\xd0\xca4D\
+XA\xfbC.~=\xaam\x9a\xf2\x89\x12\xcbQ>\
+VT\x8f,\xa0\xf7ao\x22\xb2H\xe9E\x95A\xd4\
+H\xef\x11+Q\xfbln\x83\xa8%\x0ch\xddQ\xb2\
+\x11b\xc9V\xe4\xae \xaa\xf3\x15E\xe5CD5\xe5\
+\x02X\xbcD\x0d\xf0Ej/\xaa\x968%\xfc\x80\xd4\
+\xff\xab\xd1\xbf\xb2\xbe\xafD\xad;\xfaY\x15\x1ffU\
+\xf9\x0a\xa2\x06\x5cQT\x9d\x11u\x87\x85\xe3] \xa1\
+\x0dqG\x8f\xb2\xa6\xac.A\xc0\x0e\xcch\xba\xcb\xf0\
+\xae\xe2v\x81\x8cF\xbd\xadG\xactSq\xce:p\
+w\xdcis\x8f&\x10pW\x15\x17\x88\xef\x83\xf8w\
+_\xec\xad`Yp;\xba\xbb-\x08*>\xd7\xdf\xbd\
+\x01\xe7\xcd\xe9\x9b\xe5\x10\x5c\xce\xde\xbdZ\xde[\xfe\xbc\
+\xec\x92H}\xf0\xf3\xec\xf4\x9f\xcbM\x0d34\x87w\
+\xb1\xef\xe1O\xbf\xae\x81\xe2\xae{\xf7\xf3\xde\x93w\xe7\
+\xe7\xdb\xd8?\xba\xdf\x95\xea~_\xaa+nV\xe84\
+t\x15\xf7\x93\x82\xbc\xd6\xfes\xa1\x8c\xfa\xbc\xe0\x0b\xe4\
+\xfa\xab\xd0\x99\xfag\xa8\xf7\xae\xbb>\xfe\xf7]g\x8c\
+\xc6j\xaa\xa3+\xefv\xf9\xbfME|\x03\xcb\x89\xcf\
+\xb4\xfc\xba\xbc\x98as\xbd\xfd\xc7\xaa\xd9\xa7f\x9b7\
+\xa12\xdf\xad\xff\xfe\xac\xe0\xbf\xa8\x0a~\x9c\x7f\xc3\xcb\
+\xe7\xbf\x1e\x9b\x02~\xcc\x81\xc6\xb7>\xbe\xa0\x1f\xed\xe7\
+\xc0\x02\x8a\xcd\xb3w\xc0]\xc6\xf5\xd6\x97\xb9\x1c(M\
+]]\xd8\xc0\xbd\xc2\xfa\xad\xcf\xb1 \xb8qay\xaf\
+\xb0y\xebK\x5c\x12\xcc\x0b{\x81\x80\xbaO@\xc7[\
+\xbf\xcb\x85\xc0\xa4\x8e\xff\xfc\x95\xf9e\x0b\x87\xa9\xcey\
+\x87\xfb\xb1\x93\x0c\xa8\xae\x1f\x08\x916&3\xb3E\xc5\
+\xcfI\xb3\xc8~\x09\xab\x91\xaf\xb6\xde\x1c\xe8?%\xba\
+\xf3\xe5\x90W'O\x96\xafV\x9f\x1c=\xaa\xbe}u\
+\xd5\x9d2*\xa8g\xd5\x0f\xdcx\xd1\x07\xec\xa8\xe5\xea\
+\x10\xe9\xf7\xdf\x86\xfdMU\x8aV\xb2\xad\xf2\x0b\x9b\xa3\
+\x98\x84,\xef\xd0d\xe7\x86X\xf4\xb2\xc0\x9f\xa0dL\
+\xf8\xf5T\x9d\xa3\xc0\x17h\xd78v\xb5[\x14M3\
+\xd3>J\xc7g\xf5\xd1\xc85\xda+\xfc\xd5\xcb\xee\xcf\
+=Yc\xcfN\xba\xcf:\x9f\x9d\x9d\xbc\x1fX\x1b\xd0\
+\x8b\xabYe\xbe=\xf5\xef\xf0\x16U\x80\xd0\x10\x9a\x00\
+R\xd2\xbbf\x03\xb2d\xad\xd8\x8cn\x08X\x183\xa7\
+\x0f\xf5}5\xc3\xb5\xac\xb0Z\x06\xd5\xeah\x904U\
+@\x91\x85a3\x16\xa4\xec\xb0\x85Q\xf3\x100\xee\x1b\
+\x15$\xea\xaf6BM\xf6\xed\xbb\xac\xb1i8\xae\xe8\
+zC\xaaQ\x861Q\xab9\xa4\x0c\x07H\xe3\x0e\xb3\
+\x06aX\xb9\xb31\x93\xb0\xf7Xy\x8eV\xd9\xe1\x18\
+>\xdc\xaa\xc9=\x8f\x89\x0dA\xc1\xeaBiINZ\
+E-\x00\x98P\x87qS\x0e\xc2\xa3\xacF\xe7h\xf5\
+\xa2\x88#\xe9\xd0\xf0h`C\xa3\xb7P\x1b\x84\xaf\xd1\
+(\x13\xd8\x17\xae-\x91\xc3K\xa7f\xae\xc6\x059\xa7\
++\x17\xf3\x14H\xfd\x8d\x026\x08TiO\x92\xb9J\
+-pr\x89Z\x9ef&k\xd4\x80b\xe8U\x0e\xc8\
+\x22\xa0\xf4Qu\x1d7\x1b\xe6\x80e \xb40\x19\xfa\
+HV\xecVC\xaa\xfc\x1c\x89I\xf6\xf2\x81o\x06\xb5\
+\x85B\xaf\x87m\xe6\x14\xd7\x0a\xdb\x08\xb1P\xea\xf5*\
+6\x8aZ\xd8\xa0\xff\x84\xd6\xdf\xb5Q\x93dK\xf6U\
+\x83\xb3Y\xac\x1bX\xb1}P\xb9\xa0/j\x16\xd0Q\
+\xa9\xa6F5\x8c:\x8c[x\x04a\xd1\xf5\x9e#\xe4\
+a\xf6\x0b\x01\xe0p\xee\x8d\xd2\x11\xa3&?\xd5\x99\xca\
+ Z\x9a\x91\xf3h\xdb{\xf6\x89X17\xe0\xf9%\
+'\xb1v-tv\xaeS.\x1a\xe4\xd0q\x07\x1b\x22\
+\x06\x92\xdc>4\xf9\x12\x1b\xdc\xfe\xe8XR\xde=\x0d\
+$\xf1/\x09 \xd3@QN\xe3 Y\xe5zH\xaa\
+\xac\xd6\x0e\xa8\xa8\xde\x17\xfa\xc8i\x89e\x19u\xa1\x16\
+\xc6\x22\x8e\xa9\xbdk\xba(vP\x92+A\xbf'\xe0\
+\xe5\x10\x84}\xf40\x16\xc0\xb2S\xb4f\x04\x99T\x01\
+D\x14\xdd\xec\x08u\x08\xe7\x5cq\xc4\x12$'\x98\x94\
+\x1d1y\xdd=\xa2\xda\x18\x01\xd5\xb7)ZS\x89\x08\
+\xdf\x1e\xdb\x1b\x9b\x19\x97en\xd8D\xcc\x06\xce\xc8\x83\
+S{\x04K.\x90\xa0!\x84D)\xc3!\x01{\x88\
+\xd2@\xfa\xd5\xad (\xf77\xab\x07\x944)\xc5\x0f\
+B\xa1\xd1\xc2\xa0\x0a`k@.\xa4\x1dV\x83s\xac\
+03\xf3>P9X\xd4jmDK\xd1\x09\x046\
+AC\x9b \x80\xc4\x04\xf5l(\xe1\xa8\x13T\xa2\x85\
+brN\xd1\x8au\x8cN\x13\x94\xbd\x05\x82\x88OP\
+\xa4F\xc9AYr\x15\xeahT\xee\x86\xe4lz\x94\
+\xda\x14\x1c4\x16X\xfe\x19\xa1Z\xf2kbT\x81\xdb\
+0-Hu\xd8107G+\x13\x09\xf14\xaah\
+ \x22fe_\x12F\x94\xfbL\xee\xb7\xa3\x1f*B\
+\x19\xf41\x82\xb0\x91\x04A\xc94\xa2BMTSK\
+&\x8b\x96\x92\x01\xb2\x85\x1e\x17J\xe9\x06\xba\x85\x9a7\
+wR\x89\xc2\x92\x8d\x93Gl\xa2\xa7\x11\x1d\xf5\x7f\xbc\
+\x8dZ\x03\xb0\xa0\x18\xc7)L\xc2\xc9|\xe4h\xc4\xb6\
+\xb9\x9fA\x11\xac\xb9\x92\xf4\x097\x1a\x91\xa0\xe0\x96\xe5\
+\x7f\xbfO+\xfb\xc2\x1e\x03]\xbe.\x0a\xfdz\xf6\x0d\
+46\xfa\x92C\xd7|\xedc\x81\x97\xd4>\xae\xa99\
+\xd4>\x12\xe6\xa5R\x06\x02\x95\xc2(8%\xaa\x0e1\
+5\xd2\x82\x5cWz'-\xa5{\xac2_%\xa0\x9e\
+\xb0V\xd7PpD@jT\xa63\x0f\x8f,L,\
+I\xfbL\xe7I\xa8yC\x99\xce\x14o0\xd3\xcd\x17\
+\xcd\xf3\xc9O\xfeL~\x7f&\xbf\x9bI~!\xcd,\
+\xc5\xae7#\x16\xda\x81\x98\x7f\xe6\xc9\x7f\x93<\xa9\x90\
+c\xac\xdb\xed\xb4\xd0\x9d]2\x1c3\x89\xe3\x87\x99\xc4\
+\xe1\xc3Lb\xb9\x93I\x1cv3\x89\xebn&q\xfd\
+0\x93\xb8~\x98I\x5cv3\x89\xcb\x07\x99\xc4\xe9\xc3\
+L\xe28f\x92\xd9\x18\xcf\x17\xd6\x07\xf6\xbb\xaf\x0f.\
+\xcf\x93w\xc6D\x89\xd8\xdc\x16H\xd1\x22\x5c\xf8*\x8b\
+\xc18Lc\xd7\xbdO9\xda1I\x93\x95\xb7\x80s\
+y\x8b7\xab\xcd7\x17a\xce\x0d\x00\xd1H5\xb0\x03\
+\xa6\xb7\xecq%b\xe2\x02/|'\xe7\xf2\xba\xe2\x22\
+\x93s\xf8}\x9a\x9c\x13\xed\x94\xa4\x88\xadwx\xcd\xf5\
+6\xca\xf6\xe6Z\xacv\xc9pks-\xc6\xbd\xb5z\
+-\xfde\xd0?p\xdca\x1bo\xdd\xdaa\xcb\xed\x0d\
+6\xe4\x06\x8c\xd4!\x9b]\x1b\xd4\x86j\x05mv\x93\
+\xa6\xfc\xed\x0b\x9c\x0e\xfa)^\x94\xcdBh\xde\x8b.\
+0\x02\xfaR\xbch\xd7i\xe6\xdcj\xf4\xa2\x01\xf0h\
+\xae\x98\xa1k@\xb22\x14\x1a\xedz\xe2\xfe\xa5\x1d\xc1\
+\x9c\xd6\x0e\xde\xc0\xde\x1f\xa8\x5cn\xefh\xad\x01\x8a\xb3\
+\xfa\x15\xb57\xef\x1a\x9c6u\x8da\xdb\xb0\xf6:\xa9\
+\xdf\xe5\x9c\xee\xce\xc2\xf0Wb\xd5a{\x15\x94\xf2\xd1\
+\xa6\x09-\x093E\x17w\xb21\xd8P\x05\xb6L\x12\
+\xb2\xbc=_\x1bD\xea'\xf2}Csg\x9fa\xee\
+>]\xd1\x87gS\x8f/9\x0e(c\x09h\xdc\x12\
+\xd9\xb8\xf6\xc1\x19\x1b\x93*\xf5\x8b9w\x12\xa7#\x8e\
+\xa6\x12\xea\xd1\x87pN\x009\x12k\xa0\x89\xe6\x1b\x8c\
+\xab\x9e\xc6\xa6NA\xb8\x85\xba\xb6d \xcc\x1a\x87\x0c\
+3t`F\xb3%\x84\x13_-\xc2D\xfa\xe1\xf3\x11\
+\xf0\xc5\xceGXs\xac\x9cG\xd0\xd8\x83p\x1b\x93h\
+!\xe2\x93\xeb4\x1b\x1bR\xe4P\x8a\x130\xc1\xb0.\
+\xb7\x00\x8f\x9a\x0c0T\xebS\xa6\x81\x22\xf3\x91hs\
+\xa3D\x1f\xb1\x9a\xf4h\xc6(l[(W\x0eL\xd7\
+\x1e\xc3 \xef\x98$m\x14\xe1Z3\xc9\xa9\x80\xf2\x07\
+\xb0\xa3D\xb8\x82\x1d\xd1\xef\xcc\xaf)\x1a\x12e`_\
+?\x99\x1by\xcdQ\x88\x93da\x96AaG\xac\xcd\
+\xd4\xb5\x90$\x02\x8b\x9aKjh)\xe2\x85:\x889\
+\x17=W\xa0,\x885\x89\xcb8\xa4\x0f\xa5\xfd\xb8B\
+\x22\xb1Z\xe1z\x14Je\x8e\xe9\xa0\x13T\xb29$\
+jNP\x83\x06J\x1e}\x01IM\x18\xb2\x0c\x11\x1b\
+9\x93\xe2\x91{\x0b\xc2@*sgB3\xe9\x17\x90\
+\x988\xc8\x8d\xac\x0e\xabO\x88\xa0B\x9a\xd4\x95\x14\x0a\
+)G\xc1\x0dB\x98\xa2\xa7\x08FAW\xb0\xa4\xa3\x1f\
+\xf6+\xcb\x9b\x00)p\x99.\x90\xa8\xea\x11gC'\
+\xd5,\x0c\x01\x1d\xfdH\xa0\xa5:\x04\xf7\x98\x92Z\xef\
+6\xd9\xaa\x97\xa2PH\x87\xa4\x81\x22*Y\x8f1\xb8\
+\xe9\x9e\x91\xf7Zvn>\xcbQ\xff\xea\x87`\xbe\xf9\
+\x7f\xaf\xd7Z\xe4TM\x01\x00\
+\x00\x00\x17\x91\
+\x1f\
+\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xed=io\xe3F\x96\
+\xdf\xfbWp\x9d/i\xacH\xd5}\xb8\x8f\x01f\x82\
+\x04\x016X`&\xc1\xcc\xb7\x80\x96([\x1bY2\
+$\xb9-\xf7\xaf\xdf\xf7\x8aW\x91,Q\x94,\xbb\x03\
+\xc7v:\xa6\xaa^]\xaf\xde\xcd\xaa\xa7\x8f\x7f\xdb\xdd\
+.\xa2/\xd9z3_-?]\xd0\x84\x5cD\xd9r\
+\xb2\x9a\xce\x97\xd7\x9f.~\xfb\xf5\xc7\xd8\x5cD\x9bm\
+\xba\x9c\xa6\x8b\xd52\xfbt\xb1\x5c]\xfc\xed\xf3\xbb\x8f\
+\xff\x15\xc7\xd1?\xd6Y\xba\xcd\xa6\xd1\xc3|{\x13\xfd\
+\xbc\xfcc3I\xef\xb2\xe8\xfb\x9b\xed\xf6\xeer<~\
+xxH\xe6Ea\xb2Z_\x8f\xdfGq\xfc\xf9\xdd\
+\xbb\x8f\x9b/\xd7\xef\xa2(\x82q\x97\x9b\xcb\xe9\xe4\xd3\
+E\xd1\xe0\xee~\xbdp\x80\xd3\xc98[d\xb7\xd9r\
+\xbb\x19\xd3\x84\x8e/j\xf0I\x0d>\xc1\xd1\xe7_\xb2\
+\xc9\xea\xf6v\xb5\xdc\xb8\x96\xcb\xcdw\x1e\xf0z:\xab\
+\xa0q6\x0f\xdc\x01Qk\xed\x98\xb01c1@\xc4\
+\x9b\xc7\xe56\xdd\xc5\xcd\xa60\xc7PSF\x08\x19C\
+]\x0d9\x0c\xear\xb7\x00T\xec\x9d\x8c\xab\xf5G\x07\
+\xf4\xdf\xc1\xbf\xaaAY\x90lV\xf7\xebI6\x83\x96\
+Y\xb2\xcc\xb6\xe3\x1f~\xfd\xa1\xaa\x8cI2\xddN\xbd\
+nJ\xec7\xc6ml\xc92\xbd\xcd6w\xe9$\xdb\
+\x8c\xcbr\xd7\xfea>\xdd\xde\x0050\xe3>\xded\
+\xf3\xeb\x9bm\xfdy>\xfdt\x01\xeb\xe3\x82\xe4\x9f\xcb\
+\x19\x5cVtD\x12\xcer\xd0\xa2[\xbfJ\x98\x84F\
+k\xab\x15q \x0d\xe2kt7]Mp\x86\x9f.\
+\xbe\xaeV\xb7\xf1\xea~\x9b\xc0\xa8_\x9b\xfdB\xe9\xdd\
+\xfd\xf6\xf7l\xb7\xcd\x96y7\xb00o\x95\xae\xda\xb5\
+K\x1aK\xac:\xc8vw\xab\xf56\x9e\xcd\x17Y>\
+\xd8\xf8fu\x9b\x8d\xef\xe6KX\xf6z\x05\x0f\x93\xcd\
+x\xb5{\xbc\xce\x96\xf1|\x02\x946\x86v\x8b\xf4j\
+\x91\x8d\xd3\xc9v\xee\x0an\xd3\xc5b,\xccN\x98q\
+5\xd5\xbb\xe5up\xa0\xdd\xf4\x0e6\x96r\x19\xac}\
+\xacj?C\xf5\xc7i6\xdb X\x8es\xfc\xc4\x05\
+%\xae\x0ej\x81l\xb2t\xfd\xd3:\x9d\xce\x81Yr\
+8\xaf\xcb\xc9j\xb1\xc8&\xb0o\xe9\xe2!}\xdc\x5c\
+T\x00\xd0U\xb3)\xb7T\x15\x9dB\xb7\x9b\xed\xea\xae\
+\x84\x85\xdd\xd8>.\x00+X\x18C\x8f\xab\xf5\xe5w\
+\xf4\x8aI\xce?\xb8\xa2\x15\x90\xcf|\xfbxI?\x5c\
+\xd4mV\xb3\xd9&\x83\x81\x89W\xe6\x88\x06Z\xc0X\
+ R\xc6O\x1b\x8d\x84F\xa3\xc1\xd1\x18\xa9F\xfb8\
+n.\xfbiht\x5c{y\xb3\xce@\xca|\xf7\x9f\
+_\xfe\xe7\xe7\x1f~\xb7\xbf\xc7\xaa\x07\xcd\xccP#\xaa\
+\xfa\xeb\xa2\xf4\xb7\xe5|\x0br\xe4~\x93\xad\xff\x85\xbc\
+\xf8\xbf\xcb\xdf6Y\x07\xea\xd7u\xba\xdc\x00\xe3\xdf~\
+\xba\xd8\xe2\xe3\x02D\xef\xf7\xcc&Vq%\xed(\x06\
+\x92I\x94b\xf2}=?\x0a(\x11\x168\xd1\xaa\x1a\
+5\x8fPjd\xc2\xb9\x10\xa4\x9e\xcb\x8e\x01\xac\x14\xd8\
+\x83\xf1`\x99\x0f[aq\x0f\xbe`\xb9\x01,\x0c[\
+%\xce\xd5\x8a\x84\x0bn\x08o\xcc\x95\x12\x06\xc5B7\
+\xa6jT\x22\xb9\x94\xd66\xa6\x0a\x1dHD\x86\xd9G\
+\xca!\xb2\x0c\x10\x9c\x9c\xe0o\x0fy\x97\xc4\xa5X,\
+\xf7\x93r\x09\xa5\x85f\xf1\x81!\xb3\xd9\x8cd\xb3!\
+\x1c\x95p\xca\xadPz\xd8\xc0$\xa6\xfd\x03\xa7iz\
+\x95\xdaA\x03k\x06RB)\xbb\x7f\xe0\x10#\x86\xf0\
+\x0b['\xe9\x10\xfc\x0a\x0f\xbf\x7f\x06\xe6=\x96\xac\x03\
+\xcc{\x9bn\xd7\xf3\xdd\xf74\xb1\xf8c\xe8\x88\xc0\xaf\
+\xca?Y\x09|\xccXB8cz\x14+N\x81!\
+-\xb3/\xc0\xd38\xd1t\xf1,hlv\x8dh4\
+gC#\xe0\xca\xfd\x18\x87\xc6\xe2\x13\x05,\x0a\x05\xeb\
+\xe6\x14\x1f\xa9\x86\xd5r]#q\xb2C$\x22\x00\xf3\
+$\xc8\xe4\x11\x0d\x1c\x82]\xd0\xbat\x16\x84\x9d\x05a\
+\xd7\x9f.\x10\xb1`\xf9\x1c\x12\x95G\xa1\xb5\xd9\x87\x16\
+\x96\xf5S\xa9%OG\xef\x1e\x15c\x90\xf0(o\xd3\
+\xa3N(Umj\xd4Fs\xd3\xa6F\x93hi\x0c\
+oP#\x85!\x18\xb7\x034\xcc\xf1\x86\x8d\xc3\xd6p\
+Sc\xe6~N4l`,q\x94a\x13\x1am\xb0\
+a\x03\xa3\xa9C\xb2\xf1\x1cL\xdd\xc2'\xa5\xa6\x9f\xb9\
+=\xea\x1cF}\xc8\x8dF'\xb2\xc1\x88`\xcc\x18-\
+\x89'\xcd\x90\x11\x8dM\x8c\xa0\x86\xcb\x06#\x828\x94\
+Z[\xdb`D\x0a\xa0\x9a1\xd2\x9dMW\x88\x10\x90\
+\xbeT\x12.\xc5\x08|(\xca\x09\x98\x1b\x84\x8f\x8aG\
+\x94-\x08 \xa4\x02i\xc2\x13\xcb\x15e\x9c\x8f(\x05\
+\x8dH@\xb6\xbe\x1fb\x19\x05\xd08\x9cP\xa6|6\
+\x19D(A\xb2\xa4\x9e\x05\xbc\xdfV(}\xbbV\x87\
+\x89\x94 E\x89\xc7\xc8\xc1\x19^\xa539k\x99L\
+$a\x80G`w\xf6a\xd0\xf8*8\xbe\x96R1\
+\xea\xedcp|\xc3\xafdv\xd5\x1e_X\xb0&-\
+\xeb\x1b?h\x9e\xe8\xd9D\xb5\xfb\xd2F\x08\xc3\xb4\x19\
+\xcc\x9f\xa0\xc8\xbf\x01\x7f\xc2\x0c{\xf8S3o#\x9d\
+\x1a\xd4 \xbbA\xb3\xd1\x06\xf7\x09\x96(\xa9%k0\
+_\x17t\x16\x02\x05\xde\xe3,\x91\x94i\xd5uuB\
+v\x90\x06\xfa\xe29\xbbY\x0e\x8c!\xb4\xe3B\x0b\x9e\
+\x00\xb0\xdc\xc8\x01X\xc58\x9aF\x14\x14\x856\xf0\xa8\
+$\x10&h\xf6\xf7\x03\x85\xcd3h\x16\xc4\xf4p\xa2\
+\xca\xcd\x94S5\x0b3=,<p\xb4\xe1\x9a\x85\x99\
+\x83\x94;\x9b/\xb6\xd9\xba\xa2\x19\x1c5\x9e/\xa1\xe8\
+n\x05V\xc3|\xb5\x8cs\x08\xd8\x89\xcd?\x7f\xfa\xfb\
+\xc5Q\x88\xce\x9b\xc24\xbc\x98\xc4,\xfb)\xbd\xdfl\
+\xe6\xe9\xf2\xef\x8b\xfb\xb57\xe9C\x1d\x22~\xa6?d\
+_\xe6nZ(Q\x94\xd2(\x7fuk\xe9\xcd\x11`\
+t\xe3!!\x9f\xd2\xb3\xb1-\xf8\xbd*\xe6\x9e\x93\x18\
+`]\x11\xd0e'{\x1f\xce\x5c\xa6h\xbf\x0aC\x14\
+<\x03\xcb\x81\x024\xc0\x5c\xa2e([0\x00\xad\xa6\
+MC\xd9\xaa\xc4(#\xa9l\x8a\x88\x0e\xec,\x08\xdb\
+\x90\x11\xe7g\xcd\x0a\x9b/d\xf8a\xd4\x22\x96q\x8f\
+c|n\xe3\x0f\x9d7\x18\xf1`d\xeb%\xd8T\xd0\
+\xe7`Sp\xe5\x8c\xe5\x82\x9a~.\x15t/\x97\x9e\
+/0@\xc9\xef\xb1\xe9\xa17\xb4z\x8f\x0d\xeb9\xc7\
+\x09\xb4\x98\x12\xc6c\x0ct\x9d8O81\xcc3r\
+\x9d\xebdMB\x0d#\x1e,s\x06\xb1\x92F\x0d\x0f\
+\xcd5\x97rDl\xae9G\xea\x05\xe9\xcax\x9cQ\
+\xd2\x93Pe<./}Z<\xeeG\xf7\x13\x8a\x0f\
+\xd9X==\x1a%\xc1~\xe1\x81\xde5=\x1c}\xfa\
+6\xaa\x80\x1d\xedd\x9dG\x15<\xaf\xb1\xf8\x9cA\x13\
+\x22\xa8\x17\x09\x0d\xb3\xf0\xb1\xc1\xbd\xcd\xdd:K\xa7\xbf\
+d\xdb\x9b\x15nQ6\xc3Y5\x19\xdc\xf0D\x11\x22\
+\x9b\xb1\x11@\x0d\xe1\xe0D6\x19\x1cX;\xe1hy\
+\xf9\x1c\x04\xd60\x9a+'8\x98\xf9\x82_*\xf2A\
+\x04\x8f{b\x1f\x1e\x9c\x8de\xa8\xd3\x84\xe6\x01P\xd5\
+\xcf\xab{\x94\xe6\xcb\x05]\xc0%\x01\xb4\xfe\x09\xb4.\
+\xd3\xe2Y\x8ccj\x19\x15D\xb1\xd6\xe2\xdb\xc6\xb1V\
+\x7f.\xe3\x98\xdb\xf3\xc5\x94\xff\x94\xc6\xf1\x8bXr\xec\
+\x99hJ\x0a\x05\xfe\x94\xed\xa7)\xc1\xf6\xd2\xd4\xf9\x15\
+B\x90\xa6\x9a J\x883\xbc\xab\xad\xc2\x1c\x84\x81&\
+\xe0\x18K\x04\x85\x00\xea\xd1(GVDr\xc2\xb4A\
+r\x93DK%G\xb1P\x09W`\xd8b\xc4\x9da\
+\xc0\x1dTf+\xe2Nh\x229\x15\x0d\xb5BM\xa2\
+@\x89h\xdaP+]P(\x94\x00J\xa1[v\xde\
+\xf7?-\x15\xc4)\xebeY\xcf\xb6G^\xd2\xf8J\
+\x0c\xd4p\x93\x97\x04\xe2\x881B\x1b\xbc\xd4\x85\x9d\x05\
+a\xeb72\xc36\xf2\x19\xc2D\x88\x85\x97R\xc3\xb8\
+\xcf/\xa7\x0b9\xfd\x16/ \x0eQ\x15;\xe5\xfd\xc3\
+\xf3\xd2\xde\xd1\xd6\x1b7V\xc7:\xe6\xfb\x08\xa7\x0a\x03\
+\x18kc\xd1x\xc5?\xd0\xa5\x9aM\xf0\xb7Eg\xc7\
+\xd1\x8e\xc1\xdfv\x0f!\xd3N2\x06\x0e\x96n{\xf2\
+\xf9\xe9\x1c\x02NV\xac\x0f\x9b\x8e\x00\xc9c\xb6\xc7x\
+\xd4\x8cs\xad\xa5=\xb0f\x92\xcd\x02g,\x86\x0c-\
+]x'4\xb4\xb1\x84\x09\xdf\xcf\x09\x1f\xef\xe0\x19\xcd\
+\xba'\x1e\x86\x0c\xada\x83CoF\x0e\x8c8\xc9&\
+W\x93\xab}\x1b|\xdcY\x8a\xae\xb7\xc4\x81\xfa\x0fL\
+\x9d\x09r\x02]\x12\xab\xcc){\x04\xa3\xf1\xe3\x91\x94\
+f\x93Y\x87\x0b>\x9c\x0bKBR\x036\x86>\x84\
+)!\x19\x89i\x98\xb4\x0f\x90U\x96\xc1>?\x89\x8b\
+\x05\xfe\x0e\xe1b\x91\xbfS\x08i\x02i\x15\x8a!~\
+x\x9b`\xa9,\xb6q\xe8M\xe3\x81\xad\x9a\xa9\x99\x9c\
+\xc9\xf3\xd0\xf3S\xecFK\xfb\xce\x08\xe1\xcb\xc6\x86\xa5\
+\xa68*\x0b?t\xefB|x\x22E*\xaf\x14M\
+\xb5\x00,\xcbc&j\xf0\x89\x99g\x8c\xa1\x1c\x5c\xba\
+\x17\xb1\x1c\x1eX|>\x04\xeds\xec\xf0\xb5\xb0;z\
+%\xd0\xcb3\x18_1D\x1f~\x89\xff\xac\xa8\xb3G\
+\xa2\xae\xef0\x03\xe3D+ \xc4\xf6jc)\x13j\
+(\xd4\x8e\x18b\x12\x96m\xde?\xd3f|Kd\x0a\
+\xfe\x5c\xc8\xa4\xc5i\xb3\x06.1l\x07\x980\xf4U\
+\xe2R\xbf(.\xe3\x22\xe0I^%2%}v.\
+\xe7\x0dlZ\x89\xe7J\xa9}}\xc8\x14D\x9e\xf2\xc6\
+\xed\x95,\xfd\x8c\xc7\x90{U\xe2+D\xdd\xf9\xc2\xc4\
+\x7fuE+\x88:\xc3A\xe37E[\xe0\xf2|o\
+t\xff\xea\x8a\x16\x90y\xbe\xc0\xfd\x9b\xa2Uo\xda\xe6\
+d\xd4\xbdi\x9b\xf3!S\xbfi\x9b\xf3\xe1\xf2M\xdb\
+\x9c\x11\x99o\xda\xe6\x8c\xc8|\xb6\x80\x83\x87L\xa1\x12\
+*\x99\xb2|\xe4.B\xbeN\x1e7/ /kD\
+\xc6\x94\xe3\xcb\xce\xd7\xc9\xe1\xe6\x05\x22\x8a\x1e*\xad\x82\
+RA({\x95\xb8<\x9f9\xb9\xdf&\xf2\x90\xa9\x11\
+?\x8a\xda\xd7\x89\xcc\xf3\xbd7\xe8\xd8\xe61\x1e\x1d\x02\
+\xe98\x8a\x0d\xae\x14P\xc8_#\x0a\xcfx\x94\x9a$\
+\xdc\x08E%7m\x5c\xeaDZ\xa6\xa5\x10#\x87\x1e\
+\xf2:5\xce\x19\xcf`\x0eAeI\x97\xe65\x1aB\
+\x94\x9c\xd3\xaa\xdc\x87Lf\x12\xcb$\xfc\xbcf\xba\xa4\
+\xe4\x9c*\xe70*_9]>\xff\xab\xea\xbf\x8c\xb7\
+C\xe99\x95\xcf_\xdc\x0f\xa7\xf4\xd8\xf3'o\x01\xa2\
+\xfd\xb8|\x8b\x5c\x9e\x0f\x99\xec|\xef\xfdi\xd2\xc5\xa2\
+I$\xe7\x94Z\xf3\xaa\x83\xe9\x94\xfde_\xf8S~\
+,\x01\xbd\xd8\xc9\xba:O\x14\xe8\x16w\xbfiD\xbe\
+\xe5Q:\xc0\xd5\xf9b5!f\xa3\x0c\xd9\x8dP\xf6\
+R\xcc\xf6q\x8cY?\xddS\x95\x17\x15\xf3\x94N\xbf\
+\xcc\xb3\x87w\x15\x1a\xae\xd2jIw\xe9u\xe6N\xcd\
+\x02\xf2\xf2\x1b\x1eE\xc5\xd5j=\xcd\xd6e\x95r?\
+\x8d\xaa\xe2`m\x9d\x89\xd5\xdb+\xec\xb5\xaa'\xe1\xfa\
+\xcdM:]=|\xba`\xedJL\x8a\x0a\x0bk\x17\
+\xe3\xd5\x0b\xa1\x13\x0b\x9ec\xa7\x09^\xc0\xd0\x98F\x16\
+\xdc=\xda\xae\x9c\xae&\xf7\x98\x1f8\xbe\xcf\xb7\xf6n\
+\xd7i~\xbf^#\xc0\x22}\xcc\xd6\xcdl\xb5u>\
+[c\xaa\x86E\xc6[\xafds\xb3z\xc8\xd1\x82d\
+~\x9f\xb5G\xc0z\x7f\xd1\x1e\x0cV]\xafq[B\
+\x0d\x1f\xe6Kh\x10\x979v\xa9\xec\xac\xbd\x80(\xa7\
+\xa9M\x07s\x05\x04\xe0O\x8a}\xcd\x1f\xf1^\xbe?\
+\xa3\xfb\xf94\xdb\x84\xe7\xe4\xea\xe2\xab\xab\xd5.\x5c\xbf\
+\xba\xfa?`\xd4\xf8.\xdd\xde@\x0f\xb3t\xb1\xd9\x07\
+\xb2\x5c\xb9A|\x90\xbcf\xbbZd\xc0b\x93\xac>\
+\xeb\x8d8\xf2\x8bM\x83\x1a\x8b\xad\x0b\xe2~\x99\xde\xc5\
+\xd7\x8b\xd5U\xba\xe8\xc5\xf1m\xba\x9b\xdf\xce\xbff\xd3\
+\xfa(}\xb3\x0fo\xc5\x85\xc8\xaaQ\x02\x93+\xd9r\
+\xfb\x88Y\x94w\x8fX\xd6\x90>X\xc0\x84\xa8-O\
+\xcc\xa6<_^\xef0\x83\x05\xf2WENU\xd5c\
+\xa0*\xbb\xbd+jk\xe6\x89\xa2/\xf3\xcd\xfc\x0a\x0f\
+\xc2{+\x04\xd8%\xe6\x1e\x9e\xb6Jq5\x05<\xce\
+\x09\xa5\xe2f\xb5\x5c<\x16`\xa5,\xe9\x8a\x10W~\
+\x9bm\xd3i\xbaMkyR\x96p\x90\xa8%j\xd6\
+\xd3\xd9\xe5?\x7f\xf8\xb1:\xe3?\x99\x5c\xfe{\xb5\xfe\
+\xa3\x9cB\x14!@z\xb5\xba\x07\x9a\xad.=`\x12\
+\xe3\xc9%\xca\xd5t\xfby~\x0b\x0c\x83\xa9\xb1\xff{\
+w\xbb\x00\xc9VU4\x80\x11\xdbu\xa7y\xb7\xeb,\
+O}\x1d\xcc\x16>\x9d\xdc\xce\xb1\xd1\xf8_\xdb\xf9b\
+\xf13\x0e\xe2\xddE(:\x9do\x17\xd9g7f\xfe\
+X\xaeb\x5c,\xa3\xbcI\xe0\xad\xf2\xe3\xb8D\x83\xfb\
+t]\xa3\xe7Z\xab\xeav\xe86\xa4\x0eM\xa2\xf16\
+'S\xa3\x18\xf3yf\xb1z_\xa2\xf1\xba\xa2\xaaP\
+xA\x08\xa6\x18z\x1a\xa0}\x0cxj\x98\x01\x8bY\
+\xc9a\xc0\x91\xab\x96V\x13\xcc\x13Jt\x02\xda\x87\x83\
+\xed,y\x22\x89\xf0#\xdc\xf9\x14%\xf1R\xe0\xac\x81\
+\x05k\xa4\x167,\xea\xf4fVSB\x85d\x1ff\
+\x80\xc1K\xc0\xed\xf7-\xc5\xebr\x17\xbfw\xd5\xde]\
+\x99\xcdv\xbd\xfa#\xbb\x5c\xae\x965)\x16\xf7\xf2`\
+<-\x94\x7f\x83\xa5\x90x\xad\x1b\x99\xb58\xc6$\x22\
+.\xd7\x97W\xe7rIX\xc0\x00o\xe4\x87\x03\xba\x8e\
+\xa5H\x80\xf5t\xa3\xab\x10J5\x81\xb5\x81\xa6\x1ey\
+\x8fq\xb8\x98\xf8\xd6K\x07i8(\xa8+\x85\xf1\x9f\
+\xf6\x14U\xa2\x98R*\xb0*\xeeR\xbd\xb2\xc6\xfd\xa4\
+R\xf6c2*\xc5;7\xa3s\xdc\xe9@\xce\xbd\xbe\
+\xddQ\x03w\xe7\xcc8B\x9d\xe0\xcd\xb3\x140\xb9\xc8\
+L\xd7\x93\xbeE\xe0\xec[\xa9a\x8f 1\x1cY\x0b\
+\xd3\xb8$U\x0e\xefn\xe7KD}\x83\x9c\xeaz\x97\
+\xc1\xd5\x09b\x13\xaa_\xef\x02\x84Z\xd7>\x06jQ\
+jFTj\x8c\x0b\x88Q\xd9y4\x8901\xad\x15\
+R\xc8\x08d\x017 \x18Fy\xe3(\xce\xffV\x1f\
+s8`\xf4\xaa\xa6lQ\x17\x14\xb0\xb0\x0d\xd5\xbfE\
+TT\x92\xe8kh\xba\x9bm\xban\xdf&+\xeb\xb2\
+%\xcc\x9b'TP\x8c\xab\x9f\x8fL\xd0\x1d\xa0\x84\x80\
+C\x10\x03sh0\xe3\xa4\xed\xe1\xad\x93\x04\x92%G\
+\x0b$\x1b\x10Hn\xa3\xa4\xd9\xcb\xbb\xfe]\xdf^\x89\
+\x14\x10\x0e\xe7d\xb6\x8f\xe3\xeb\xe2\xc1\xe7\xb9\xee\x084\
+\x91\xda\x12\xa6\xc0\x17\xc3\xc4\xba\x8c\x0b\xc5p\x80\xea\xb9\
+\x06\x88a%\x12s\x01\x80\xc2\xe1\x12<\x1b\xc6\xbc\x10\
+LN\xd1\xa0h\xb8flT\xe5du$Mq\x8b\
+$\xa5\x22\x8aMb@'\x19\xd0Te\xd2\xd5(.\
+\x1e\x1bEe\x0b$\xef\xaa|T67\x8d\xc2\xba\x1d\
+\x19\xd5-\xa3\x12\xd6\x07\x08\xb6\xf2\x07+\xe7R\x0d\xd4\
+\x9d\x5c\xcd6\x0d\x1e\xeff\x91m\x08\x88\x9e\xeap\x12\
+\xdb\x86xj$\xbd\xad\xe4\x99\x9fI\xf9\xb0\xbc\x04\xa5\
+?\x84\x03\x02R\xb9\x22\xaa\x1es\x04\xdc@%-\x11\
+.9\xa7\xa2`b(G\xa9\xd5s\x0d\x10S\x8e\xc9\
+9\x15\x03\xd3D\xa9\xc4p\xa2E\xc7 !\x0a\xd3\xff\
+\x0c\xd3\x1c\xb5_\xe1.\x88\xfa\xcc\x5c\xd6 \x1a\xee\xc1\
+\xd7\x88\xf1\x8e\xb9\x00S\x88\x89\x10\xd8j=\xbf\x9e/\
+\xd1S\xf8%\xa2\x86\xe2\x97\x0c\x80<u\xb9\xa8`\xba\
+\xd1?\x22\x0a~\xb8\x02\x863u\xa1\xcb\xb1\xee\xe0\xa4\
+J\xac\xe1\xc0/^\x99\x16u\xdb\xaa\xd0b\xae\x0e\x03\
+\xce\xaa\xd7\x1f0q\xd9a5p]\x06\xad\xadM\xc0\
+\xc4\x13\xcc+ex\x92\x862\xbf\xc3\xaa\xc8\x1b\xb8*\
+\xf3&X\xf5V\xaf\xa3\xbb\xde\xafQ\x03\x0d\xb2x\xc0\
+\xc9\x00A\xc2s]\xc6\xd0@q\x8d\xa4I\x84T\x1c\
+8\xa5.kL\xa6,\xb4$1(PL\xdd\x1d\x05\
+\x89\xe1/_8\x94KP9\xdc\xe4\x95\x92\xf9\xed\xe0\
+\x93\x8f`\xf8X\x8f^\xb5\xab\xe6\x18X\xca\xd7h\xb8\
+\xcd\x81\x19q\xfbX\xe8C\x9e\x88&oZ'&}\
+\x1f2E0+R\xdb\x1c(g7\x12\xa0cA\x1a\
+\x80\xec\x8c1!\xbd\xb1\xb9\x9a\x07\xae\x11\x0a\xcaGT\
+$D[N\x94WV>\xa0\xb8-\xda\x00\xb6r@\
+Z\xd7v\xe1\xbd\x11\xb0\x0c\xc7\x8f];\xa3@\xfcU\
+E^\xffnR\x96\x10\x85\x82\x1a ]\xe6\xa3\x1a \
+\xee\xb6\xf9\x1a\xdd\xe2\xbc\x12\xdc\xa6\x09lL\x82\xe9\x91\
+ARD\x0c\xb3t#,R\xa8\xa2\x04i\xba,*\
+\x1f\xb0e\xde\x02j\xdd\xd91Ex^\x8d\xa35\xe0\
+\xb1\xc0\x01s\x87\xb1\xbc(?pf\xa9\x22\xb4.*\
+\xa0q5\x0e\x9e[`\x0a\x04s_\xa7P\x8d\xed\x83\
+\xe7\x04s@a\xc30T\xa3\xd7\x95G\x03\xab\x8fT\
+b\xde2\xc9\xe8H%L\x1a\xe2\xbe\xaaa\xafi\x1c\
+\xea\xd9PM\x99\xa6\xb6\xe8\xb9\xfa\xc8\x81Z`i\xb0\
+\x070\x7fp#\xad\xd5\xef{h\x0b\x5cL\xcb+\xe2\
+\xb2`\xe6hG\x5c,A.B\xda\x92\xb0b.\xea\
+\xa2\xe2oNY\xd8@\xa9\xa8\x04\xab*\xdb\xc0^\xdf\
+X\x84\xe2\xc7\xd1\x954\xa0\x89\xb8WV\xf7^\xcc\x07\
+\xd4\x81\xa3+L\xe6m\xea\xfa\xb8\xdb$'+\x0e\xa8\
+\xc8\xe9\x0at\xa85\xd4\xd1\x15~y\x00\xd8\xd5 (\
+\xc0\xd91\xc5g\xf7\x7f\x5cF\x01\x88\xf4\x8b `p\
+\xba:\xd7O\x5c\xc3\xe6\x9f\x1d\xb4\x16\xd4\x11TQ\xea\
+\xd2-\x19\xc3\x0d\xc8,\xaf\xb0j\x84\x8b)\x9a\xf1(\
+\x07\xa5,\xaf\x97Q\x13\xbeIR\xb5\xafB\x02\x09\x1d\
+j\x93W\xe2\x11\x1a\xe0\x98\x0f{\x85\x95 \xbd\xfa>\
+$\xac\x04m\x0a\xab7\xad\xf8\xa6\x15\x036\x14&\xfa\
+\x07\xa5bI\xd0\x1b\x0e\x9bd{%\xdd!\xf1\xa4Y\
+G:I\xbeW6i\x16\x15 \xfd\x82\xc9\xf5\xda\x92\
+K\xd2*\xd1#\x97\x94\xe4\xaa\x90K\x82\xc8\xa3\xe5\x12\
+\x88\x98\x86XB\xfe\x0d\x89%0\x91K\xb1\x04*\xef\
+\x90X\x02\xe9\x16\x10K\x8ah\xd6+\x96$\xd5&\x17\
+K\x92\xcb\xa3\xc4\x12k\xf8\xbe\x87#Mvp\x1c\xf0\
+M\xd8\xbc\x09\x9b\xb0\xb0Q\x5c`\x16\xc43\x08\x9b\xa0\
+\xdb\xca)\xd8g\xbc<\xbcS|\x8ae\x82\x01 \xab\
+\xac\x0b\xab)M4\x97}f\x15lo%\xb5\x18\xb8\
+\xb4\xb4\xb0\xd8\x99c)\xea\xde\xde2\xc1\xbd\xb2\xf2!\
+\x97]\xd8\x06\x0c\x9f\x12\xb0\xae\xed\xc2{#`Yn\
+\xdf\x82\xd5\xc7\xd1\xae\xca\x0b\xbc\xbe\x8b\x09\x19\xa9\x9d\xf1\
+\x0c\xc6\x9b\xb5\x1e@\xdcnQ\xda\xea\xa5\xa9.\x0dJ\
+.\x8eiM\x8b\x95\x08\xc1\x98TuQ\xf9\x90\x1b\xea\
+`\xe0Y+\xdcX\x02_\xb1\xbb\xea\x5cP\xfa\x0d\x5c\
+I\xde\xbd\xcdE|^\xe8\x16#@\xce\x00\x87\xd4e\
+e\x8b\xdc\x5cwmh\xe4\x00yQ\xeb&\xd0\x80w\
+%a!f\xfbm+j\xa1\xa9\x11\xfbm+60\
+\x96\xf2&\xd6\xde\xc4ZX\xaca\x0c\x97\x11\xdb\xf8\x92\
+\x9ds\x1aQV\xd5\x01\x04\xf0\xc2\x88.\xc4Q\x19?\
+\x00\xebM0U\x17\x15\x7fsY\xe4\x1a\xb8\xe8\x01u\
+\x01\xbb\xb2\xb2\x0d\xec\xf5\x8dER\x15\xb6\x14\xb4\x82f\
+^Y\xdd{1\x1f!s\x1f\x8fJKM]\x1fw\
+\x9b\xe4\xe2\x88\xe5\xec\xef\x04\x12\xac\x90\xe9<v\xa0r\
+\x81\xc4\xa0GpX\x8b\x82\xfcO.\x8c\x10V)'\
+\x8c\x00\x88SW\x99\x9bm\x1e\xb4,\x85\x11\x80+[\
+\x04\x0e\xca\xe5@KC$vR\x17V\x8dry\x84\
+\xcd\x8c\x88rPkFE\xdfQ\xb3\xc1^i$\x8f\
+{yg{_\xde\x05\x83PZ\xbc\xf9uo2i\
+\x80L\xe2L\x18\xab\x1a\x99\x1bO\x95IO\x88\xd1\x83\
+\x19\x06\xfcl\x1a\xaf\xc8\xdf\x88\xf6\x8dhC\xe2\xb1e\
+\x99q\xdb{* \x18\xf5b\x22\x18\xa2\xe7\xb6?D\
+\xaf\xbd\x18=\xb1\xc08\x85\x15k\x8bx\xb6\x11\x92P\
+]\x17\x15\x7fs\x15\xeb\x1a\xf0\xa8\x00cUe\x1b\xd8\
+\xeb\x1b\x8b*\x0b\xd9\x05\xa3\xa9WV\xf7\x9e\xcf\x87\x83\
+\xfb\xe2\xf4\x9e\xa1\x5c\xeb\xba>\xee6\xc9U,\xc9c\
+\x17N\xc5j\xed\x8e\xe0c\xf7\xc5b\xa4\x95\xda\xc8\xb2\
+ \xff\x93\xabX\x84\xa5y`^\xe2k\x04\x8e\xf9_\
+K{\xbf\x00\x16\x95\xb9\xaf\xdd\xb7$\xb8:Q-\x06\
+\xfe*)\xfc\xc2\xaaM\xae`\xa1\x95\xb4*r\xa0\xf8\
+u\x9bE\xd7Q\xa3\xc1\xa0\xe8\xbc\xe4\x92\x19U\x9e\xd5\
+\xad>\x02E2%-\x87\x8dH\x84\xb2Bks\xe8\
+]z}<n5\xcdP\xc6\x81\xe4\x9al6\x9bz\
+\x0a\xf5{Z]\xbf\xbcut$q\xde\xd2\xc2\xbeP\
+\x86\x5c\x05\x93p\x84\xc4A\xf0I|w\x81\xe9\xfe\xf1\
+\xdb\xc9\xc1\xe8\xd0\x98\xed_\x82GH\xf1\xd5\xa5\xa4R\
+\xe5\x85V\xa2\x9fJQ^\x19\xcd\xc0\xb1D\x97\x87q\
+;R\x89\xa0Z\x08\x8d\xf6\x9b\x00~\x80Q,\xb8b\
+\xf0\x181\x09\xe4\x80\xa77\xa0\x04\x89\x13\xfc4\xfc\xca\
+^\x18\x0a\xdf\xff\xc38`\x12\xe2\xa1eK\x0cb\x99\
+&\x86q\xad8\x96)F\x8c\xc6;\xd2\xb0\x19\xe0\xfe\
+q\xe0e\x0d\xcf\xb0\xe30]&\xf0\xdb\x09\xd0\xa8S\
+`zJ|\xbd\x0f\xf2\x89\x80\x01\xa7\x82k\xf5^\xa1\
+\xf7\x9b;\xf8\xc5\x0a\x83<-\xef\x9c\xf8r\x99M\xb6\
+\xabu<\xb9_\x7fI\xb7\xf7\xeb\x0cO\xb3T{y\
+\xf08D\x11\x08\x90\xee\x90\x83\xb5\x96\xa0\xbb\xec\x0e\xe8\
+hMX\xeb\xc0\x83\xbb1N9\x80TI\xdd\xbdC\
+<\xde)\x9eC\xc7xd\xe0\x1cO\xe8 O\x05\x1f\
+U\x1d\x97\x95-X\xaf\xe3\xa2\xa6\xea\xb69\x85=\xe7\
+\x19Zg\x96\xfaN;5N2t\xb3\xdb7N2\
+tS\xe2\xd7\x02\x97\x926]xN9\x13@\x96\xb4\
+\xe7\x85\x07\xa7\xc3\x0e\x84\xf5\x1dp\x082x\xf7x\xda\
+)\xb3c\xc3B\x0656\x18\x19\x8a\xc1\xa1\xf8\xef\xdb\
+\xba\xc0\x96\xbfB\x0a\x0f\x9e\xbf\xc5oQ\x91\xa0\x86\x8d\
+\xc5\x10<\x88\x7f\xa6\xaa\x1c\xcf\x85\xeco\x9c\xe7\xe5\xb6\
+\xfa\xfe\xe3\x0e!\x80'JE\xfdm\xa4\x8d\x93k\xb8\
+98#\xcf\xdf\xdb\x15W8\xbc4\x9d\xe5y\xb2\xfc\
+\xa4\x19ltUS\x1cA\xe3x/\x13\x0c\xc4\xd6\x97\
+\xf7\xc2@\x9c\x8a\xce\x81\xa0zj\x86\xba_N\xca\x9f\
+\x9cX\xbf\x9b\x11\xf7\xcd\x1e=\xb4Y\x7f\xf3\x8b\xb7\x1a\
+\x0f\x95 y\x17x\xabg\xe4\xddo\xecbF1#\
+\x019\xc7\x0f\xdfY\xa6\xf5\x0e\xef4\xce\xe5Y\x0f)\
+%\x1e\x8b\x83\xb3^\xcd\x0e\x8f\xdf\xb5\xb0\xfe\xe8\xdf\xbb\
+\x09\xae\xf71x3\x07\xba\xd2x\x97\xc9\xf8\xe9\xee\xf7\
+\x0f\xbdw\xb6\xde\xdaz\xb6\xb0\xc0!+QH\x8f\xc6\
+\xe1\x9e]k\x12{\xbd\xec\xce\x0c\x94\x90\xd4\x82kV\
+\x0c\xccg23\xd3\xe6\xc0\x04\xac\x02\x90^J\x05&\
+\xe0Qj)\xdd\xf6Puu\xa1\x05u0`\xb7\xc4\
+y\x87c\x02;\xe7- \xb0k\x9d\x1e\xca\xa1\x9c\xb4\
+\xa05\xc7\x95'\xaf]\xb6\xa2\xee\x02\xc4>\x19\xd0\xc4\
+Q\xc0\xaa\xc1\x0b\x8a\xbd\xca\xa0\xb3\x8c=cX\xd37\
+\x06\x1d\xa0pj\xba\xab\x96X.[$\x86\x83\x91\xc9\
+[Xj\xcb\xa5\xe37\xa4\x09\xee\xb8\xb1!\x16\xf7\x8d\
+TL\xccQ\x84\x86\xff\xbaK\xd0O\xd8\x92A\xd6C\
+\xc0\xa7\x18!\x07\xe5\xfe\xc4\xfb\xeer\x0f5x\xc2|\
+\xe5Q\xdb+\x0e`\xb1\xc1\x04l\xef\xdex\xdb\x17\xda\
+\xda\xb84\x17\xcc\xc1\xddm\x0ctpk\xabkS'\
+\xa1j\x88\xe9\xb5g\xa7\xe2\xa3\xf76>\xc3\xe6\x12{\
+\xdc\xe6\xdaa\x9b\x1b\xe0\xdd\xee\xfez{\x18\xdc\xe2\xfc\
+&js\x8b\xdb2v\x9f\xf4\xf6E*\xab\xf5_\xb9\
+\x12A*\xb5\xb0O\xe2\xb1\x135\xcfy\xb6w \xe7\
+J\x22\xf6o.\x19\xf4\xf2\xd0C\x89\x0a o\x80T\
+vN9\xf3\xa4\xb2D\x7f\xd6\x04\x18\xf7\x04\x0a%f\
+\xc8}\x8az\x11\x92\x9c&~\xca9W\x8b(V\xb5\
+G\xb5\xd4\xb5{z8Q\xb7\xc0\x02\xd8\xe9\xecL\xb4\
+>N\xdd?M\xb2\x94V\xc1\xc9\xd6\x19\x90\xa8\xe8g\
+\xd8\x1e\xeb,\xc6o\x8cT\xc6\x17(\xb5\xc4\xe8\x11(\
+\xc2\xef\xa4I\xbb\x076-h\xa0\xc1\x1a\xd4Sx\xf4\
+Tk\xa0W\xa4<\xb6\xc9q\xd7v\x09OZ*%\
+\xfdR\xb3w\xa9\x94\x0c\x89\xb0\x1d\x10\x86\x03\x85\xe70\
+\x02>0\xdd!w\x17=\xd4\x84T\xcf\x10\x9b\xb6\xa3\
+\x16k2=\x8by\xce\x8f1\xcf\xc1\x9a\xd7\x03\xd6\xd1\
+\xf6`v\x01\x8b,\xe0\x11\xf5;\x85\x87\x9c\xa9\xce\x08\
+\x87h\xb8\xe5Xxk\xb4O\xa0\x0b\xce\x8f#\xe3\xde\
+\x95v&\xa0\x8d\x0b^\x1c\xebp\xd7k\xab\xbe\xf1\xcc\
+\xd74\x9e\xe4l \xcd\x13\x0f\x1d\x05X\x8aW\x9c\xf3\
+G\xbc\x1f\xff\xf9\xdd\xff\x03\x0b\xb0\x0a\x0c\x99\x9b\x00\x00\
+\
+"
+
+qt_resource_name = b"\
+\x00\x05\
+\x00o\xa6S\
+\x00i\
+\x00c\x00o\x00n\x00s\
+\x00\x06\
+\x07\x03}\xc3\
+\x00i\
+\x00m\x00a\x00g\x00e\x00s\
+\x00\x16\
+\x02\x1b\xe1\x0a\
+\x00g\
+\x00o\x00-\x00n\x00e\x00x\x00t\x00-\x00v\x00i\x00e\x00w\x00-\x00p\x00a\x00g\x00e\
+\x00.\x00s\x00v\x00g\x00z\
+\x00\x11\
+\x04\xf3\xa4*\
+\x00g\
+\x00o\x00-\x00n\x00e\x00x\x00t\x00-\x00v\x00i\x00e\x00w\x00.\x00s\x00v\x00g\x00z\
+\
+\x00\x15\
+\x01\x09v*\
+\x00g\
+\x00o\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00-\x00v\x00i\x00e\x00w\x00.\
+\x00s\x00v\x00g\x00z\
+\x00\x0d\
+\x0e\xb9\xa6*\
+\x00z\
+\x00o\x00o\x00m\x00-\x00o\x00u\x00t\x00.\x00s\x00v\x00g\x00z\
+\x00\x12\
+\x0al\x90\xca\
+\x00d\
+\x00o\x00c\x00u\x00m\x00e\x00n\x00t\x00-\x00o\x00p\x00e\x00n\x00.\x00s\x00v\x00g\
+\x00z\
+\x00\x1a\
+\x01d\xbbJ\
+\x00g\
+\x00o\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00-\x00v\x00i\x00e\x00w\x00-\
+\x00p\x00a\x00g\x00e\x00.\x00s\x00v\x00g\x00z\
+\x00\x0c\
+\x009l\x8a\
+\x00z\
+\x00o\x00o\x00m\x00-\x00i\x00n\x00.\x00s\x00v\x00g\x00z\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x10\x00\x02\x00\x00\x00\x07\x00\x00\x00\x03\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x010\x00\x00\x00\x00\x00\x01\x00\x00\xba\xe2\
+\x00\x00\x01\x81\x8a\xd9\xf0\x94\
+\x00\x00\x00|\x00\x00\x00\x00\x00\x01\x00\x00J'\
+\x00\x00\x01\x81\x8a\xd9\xf0\x94\
+\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x89\xa4\
+\x00\x00\x01\x81\x8a\xd9\xf0\x94\
+\x00\x00\x00\x22\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x81\x8a\xd9\xf0\x94\
+\x00\x00\x00T\x00\x00\x00\x00\x00\x01\x00\x001K\
+\x00\x00\x01\x81\x8a\xd9\xf0\x94\
+\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x00x\xec\
+\x00\x00\x01\x81\x8a\xd9\xf0\x94\
+\x00\x00\x00\xac\x00\x00\x00\x00\x00\x01\x00\x00c\xbc\
+\x00\x00\x01\x81\x8a\xd9\xf0\x94\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/pdfwidgets/pdfviewer/resources.qrc b/examples/pdfwidgets/pdfviewer/resources.qrc
new file mode 100644
index 000000000..db77763d2
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/resources.qrc
@@ -0,0 +1,11 @@
+<RCC>
+ <qresource prefix="/icons">
+ <file>images/document-open.svgz</file>
+ <file>images/go-next-view.svgz</file>
+ <file>images/go-previous-view.svgz</file>
+ <file>images/go-next-view-page.svgz</file>
+ <file>images/go-previous-view-page.svgz</file>
+ <file>images/zoom-in.svgz</file>
+ <file>images/zoom-out.svgz</file>
+ </qresource>
+</RCC>
diff --git a/examples/pdfwidgets/pdfviewer/ui_mainwindow.py b/examples/pdfwidgets/pdfviewer/ui_mainwindow.py
new file mode 100644
index 000000000..9ed525dbf
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/ui_mainwindow.py
@@ -0,0 +1,259 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'mainwindow.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
+ QCursor, QFont, QFontDatabase, QGradient,
+ QIcon, QImage, QKeySequence, QLinearGradient,
+ QPainter, QPalette, QPixmap, QRadialGradient,
+ QTransform)
+from PySide6.QtPdfWidgets import QPdfView
+from PySide6.QtWidgets import (QApplication, QHeaderView, QMainWindow, QMenu,
+ QMenuBar, QSizePolicy, QSplitter, QStatusBar,
+ QTabWidget, QToolBar, QTreeView, QVBoxLayout,
+ QWidget)
+import rc_resources
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ if not MainWindow.objectName():
+ MainWindow.setObjectName(u"MainWindow")
+ MainWindow.resize(700, 600)
+ MainWindow.setUnifiedTitleAndToolBarOnMac(True)
+ self.actionOpen = QAction(MainWindow)
+ self.actionOpen.setObjectName(u"actionOpen")
+ icon = QIcon()
+ iconThemeName = u"document-open"
+ if QIcon.hasThemeIcon(iconThemeName):
+ icon = QIcon.fromTheme(iconThemeName)
+ else:
+ icon.addFile(u":/icons/images/document-open.svgz", QSize(), QIcon.Normal, QIcon.Off)
+
+ self.actionOpen.setIcon(icon)
+ self.actionQuit = QAction(MainWindow)
+ self.actionQuit.setObjectName(u"actionQuit")
+ icon1 = QIcon(QIcon.fromTheme(u"application-exit"))
+ self.actionQuit.setIcon(icon1)
+ self.actionAbout = QAction(MainWindow)
+ self.actionAbout.setObjectName(u"actionAbout")
+ icon2 = QIcon(QIcon.fromTheme(u"help-about"))
+ self.actionAbout.setIcon(icon2)
+ self.actionAbout_Qt = QAction(MainWindow)
+ self.actionAbout_Qt.setObjectName(u"actionAbout_Qt")
+ self.actionZoom_In = QAction(MainWindow)
+ self.actionZoom_In.setObjectName(u"actionZoom_In")
+ icon3 = QIcon()
+ iconThemeName = u"zoom-in"
+ if QIcon.hasThemeIcon(iconThemeName):
+ icon3 = QIcon.fromTheme(iconThemeName)
+ else:
+ icon3.addFile(u":/icons/images/zoom-in.svgz", QSize(), QIcon.Normal, QIcon.Off)
+
+ self.actionZoom_In.setIcon(icon3)
+ self.actionZoom_Out = QAction(MainWindow)
+ self.actionZoom_Out.setObjectName(u"actionZoom_Out")
+ icon4 = QIcon()
+ iconThemeName = u"zoom-out"
+ if QIcon.hasThemeIcon(iconThemeName):
+ icon4 = QIcon.fromTheme(iconThemeName)
+ else:
+ icon4.addFile(u":/icons/images/zoom-out.svgz", QSize(), QIcon.Normal, QIcon.Off)
+
+ self.actionZoom_Out.setIcon(icon4)
+ self.actionPrevious_Page = QAction(MainWindow)
+ self.actionPrevious_Page.setObjectName(u"actionPrevious_Page")
+ icon5 = QIcon()
+ iconThemeName = u"go-previous-view-page"
+ if QIcon.hasThemeIcon(iconThemeName):
+ icon5 = QIcon.fromTheme(iconThemeName)
+ else:
+ icon5.addFile(u":/icons/images/go-previous-view-page.svgz", QSize(), QIcon.Normal, QIcon.Off)
+
+ self.actionPrevious_Page.setIcon(icon5)
+ self.actionNext_Page = QAction(MainWindow)
+ self.actionNext_Page.setObjectName(u"actionNext_Page")
+ icon6 = QIcon()
+ iconThemeName = u"go-next-view-page"
+ if QIcon.hasThemeIcon(iconThemeName):
+ icon6 = QIcon.fromTheme(iconThemeName)
+ else:
+ icon6.addFile(u":/icons/images/go-next-view-page.svgz", QSize(), QIcon.Normal, QIcon.Off)
+
+ self.actionNext_Page.setIcon(icon6)
+ self.actionContinuous = QAction(MainWindow)
+ self.actionContinuous.setObjectName(u"actionContinuous")
+ self.actionContinuous.setCheckable(True)
+ self.actionBack = QAction(MainWindow)
+ self.actionBack.setObjectName(u"actionBack")
+ self.actionBack.setEnabled(False)
+ icon7 = QIcon()
+ icon7.addFile(u":/icons/images/go-previous-view.svgz", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionBack.setIcon(icon7)
+ self.actionForward = QAction(MainWindow)
+ self.actionForward.setObjectName(u"actionForward")
+ self.actionForward.setEnabled(False)
+ icon8 = QIcon()
+ icon8.addFile(u":/icons/images/go-next-view.svgz", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionForward.setIcon(icon8)
+ self.centralWidget = QWidget(MainWindow)
+ self.centralWidget.setObjectName(u"centralWidget")
+ self.verticalLayout = QVBoxLayout(self.centralWidget)
+ self.verticalLayout.setSpacing(0)
+ self.verticalLayout.setContentsMargins(11, 11, 11, 11)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.verticalLayout.setContentsMargins(0, 0, 0, 0)
+ self.widget = QWidget(self.centralWidget)
+ self.widget.setObjectName(u"widget")
+ self.verticalLayout_2 = QVBoxLayout(self.widget)
+ self.verticalLayout_2.setSpacing(0)
+ self.verticalLayout_2.setContentsMargins(11, 11, 11, 11)
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
+ self.splitter = QSplitter(self.widget)
+ self.splitter.setObjectName(u"splitter")
+ self.splitter.setOrientation(Qt.Horizontal)
+ self.tabWidget = QTabWidget(self.splitter)
+ self.tabWidget.setObjectName(u"tabWidget")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.tabWidget.sizePolicy().hasHeightForWidth())
+ self.tabWidget.setSizePolicy(sizePolicy)
+ self.tabWidget.setTabPosition(QTabWidget.West)
+ self.tabWidget.setDocumentMode(False)
+ self.bookmarkTab = QWidget()
+ self.bookmarkTab.setObjectName(u"bookmarkTab")
+ self.verticalLayout_3 = QVBoxLayout(self.bookmarkTab)
+ self.verticalLayout_3.setSpacing(0)
+ self.verticalLayout_3.setContentsMargins(11, 11, 11, 11)
+ self.verticalLayout_3.setObjectName(u"verticalLayout_3")
+ self.verticalLayout_3.setContentsMargins(2, 2, 2, 2)
+ self.bookmarkView = QTreeView(self.bookmarkTab)
+ self.bookmarkView.setObjectName(u"bookmarkView")
+ sizePolicy.setHeightForWidth(self.bookmarkView.sizePolicy().hasHeightForWidth())
+ self.bookmarkView.setSizePolicy(sizePolicy)
+ self.bookmarkView.setHeaderHidden(True)
+
+ self.verticalLayout_3.addWidget(self.bookmarkView)
+
+ self.tabWidget.addTab(self.bookmarkTab, "")
+ self.pagesTab = QWidget()
+ self.pagesTab.setObjectName(u"pagesTab")
+ self.tabWidget.addTab(self.pagesTab, "")
+ self.splitter.addWidget(self.tabWidget)
+ self.pdfView = QPdfView(self.splitter)
+ self.pdfView.setObjectName(u"pdfView")
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
+ sizePolicy1.setHorizontalStretch(10)
+ sizePolicy1.setVerticalStretch(0)
+ sizePolicy1.setHeightForWidth(self.pdfView.sizePolicy().hasHeightForWidth())
+ self.pdfView.setSizePolicy(sizePolicy1)
+ self.splitter.addWidget(self.pdfView)
+
+ self.verticalLayout_2.addWidget(self.splitter)
+
+
+ self.verticalLayout.addWidget(self.widget)
+
+ MainWindow.setCentralWidget(self.centralWidget)
+ self.menuBar = QMenuBar(MainWindow)
+ self.menuBar.setObjectName(u"menuBar")
+ self.menuBar.setGeometry(QRect(0, 0, 700, 23))
+ self.menuFile = QMenu(self.menuBar)
+ self.menuFile.setObjectName(u"menuFile")
+ self.menuHelp = QMenu(self.menuBar)
+ self.menuHelp.setObjectName(u"menuHelp")
+ self.menuView = QMenu(self.menuBar)
+ self.menuView.setObjectName(u"menuView")
+ MainWindow.setMenuBar(self.menuBar)
+ self.mainToolBar = QToolBar(MainWindow)
+ self.mainToolBar.setObjectName(u"mainToolBar")
+ self.mainToolBar.setMovable(False)
+ self.mainToolBar.setFloatable(False)
+ MainWindow.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.mainToolBar)
+ self.statusBar = QStatusBar(MainWindow)
+ self.statusBar.setObjectName(u"statusBar")
+ MainWindow.setStatusBar(self.statusBar)
+
+ self.menuBar.addAction(self.menuFile.menuAction())
+ self.menuBar.addAction(self.menuView.menuAction())
+ self.menuBar.addAction(self.menuHelp.menuAction())
+ self.menuFile.addAction(self.actionOpen)
+ self.menuFile.addAction(self.actionQuit)
+ self.menuHelp.addAction(self.actionAbout)
+ self.menuHelp.addAction(self.actionAbout_Qt)
+ self.menuView.addAction(self.actionZoom_In)
+ self.menuView.addAction(self.actionZoom_Out)
+ self.menuView.addAction(self.actionPrevious_Page)
+ self.menuView.addAction(self.actionNext_Page)
+ self.menuView.addSeparator()
+ self.menuView.addAction(self.actionContinuous)
+ self.mainToolBar.addAction(self.actionOpen)
+ self.mainToolBar.addSeparator()
+ self.mainToolBar.addAction(self.actionZoom_Out)
+ self.mainToolBar.addAction(self.actionZoom_In)
+ self.mainToolBar.addSeparator()
+ self.mainToolBar.addAction(self.actionBack)
+ self.mainToolBar.addAction(self.actionForward)
+
+ self.retranslateUi(MainWindow)
+
+ self.tabWidget.setCurrentIndex(0)
+
+
+ QMetaObject.connectSlotsByName(MainWindow)
+ # setupUi
+
+ def retranslateUi(self, MainWindow):
+ MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"PDF Viewer", None))
+ self.actionOpen.setText(QCoreApplication.translate("MainWindow", u"Open...", None))
+#if QT_CONFIG(shortcut)
+ self.actionOpen.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+O", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionQuit.setText(QCoreApplication.translate("MainWindow", u"Quit", None))
+#if QT_CONFIG(shortcut)
+ self.actionQuit.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+Q", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionAbout.setText(QCoreApplication.translate("MainWindow", u"About", None))
+ self.actionAbout_Qt.setText(QCoreApplication.translate("MainWindow", u"About Qt", None))
+ self.actionZoom_In.setText(QCoreApplication.translate("MainWindow", u"Zoom In", None))
+#if QT_CONFIG(shortcut)
+ self.actionZoom_In.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl++", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionZoom_Out.setText(QCoreApplication.translate("MainWindow", u"Zoom Out", None))
+#if QT_CONFIG(shortcut)
+ self.actionZoom_Out.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+-", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionPrevious_Page.setText(QCoreApplication.translate("MainWindow", u"Previous Page", None))
+#if QT_CONFIG(shortcut)
+ self.actionPrevious_Page.setShortcut(QCoreApplication.translate("MainWindow", u"PgUp", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionNext_Page.setText(QCoreApplication.translate("MainWindow", u"Next Page", None))
+#if QT_CONFIG(shortcut)
+ self.actionNext_Page.setShortcut(QCoreApplication.translate("MainWindow", u"PgDown", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionContinuous.setText(QCoreApplication.translate("MainWindow", u"Continuous", None))
+ self.actionBack.setText(QCoreApplication.translate("MainWindow", u"Back", None))
+#if QT_CONFIG(tooltip)
+ self.actionBack.setToolTip(QCoreApplication.translate("MainWindow", u"back to previous view", None))
+#endif // QT_CONFIG(tooltip)
+ self.actionForward.setText(QCoreApplication.translate("MainWindow", u"Forward", None))
+#if QT_CONFIG(tooltip)
+ self.actionForward.setToolTip(QCoreApplication.translate("MainWindow", u"forward to next view", None))
+#endif // QT_CONFIG(tooltip)
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.bookmarkTab), QCoreApplication.translate("MainWindow", u"Bookmarks", None))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.pagesTab), QCoreApplication.translate("MainWindow", u"Pages", None))
+ self.menuFile.setTitle(QCoreApplication.translate("MainWindow", u"File", None))
+ self.menuHelp.setTitle(QCoreApplication.translate("MainWindow", u"Help", None))
+ self.menuView.setTitle(QCoreApplication.translate("MainWindow", u"View", None))
+ # retranslateUi
+
diff --git a/examples/pdfwidgets/pdfviewer/zoomselector.py b/examples/pdfwidgets/pdfviewer/zoomselector.py
new file mode 100644
index 000000000..6f9f972e0
--- /dev/null
+++ b/examples/pdfwidgets/pdfviewer/zoomselector.py
@@ -0,0 +1,59 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtPdfWidgets import QPdfView
+from PySide6.QtWidgets import QComboBox
+from PySide6.QtCore import Signal, Slot
+
+
+class ZoomSelector(QComboBox):
+
+ zoom_mode_changed = Signal(QPdfView.ZoomMode)
+ zoom_factor_changed = Signal(float)
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.setEditable(True)
+
+ self.addItem("Fit Width")
+ self.addItem("Fit Page")
+ self.addItem("12%")
+ self.addItem("25%")
+ self.addItem("33%")
+ self.addItem("50%")
+ self.addItem("66%")
+ self.addItem("75%")
+ self.addItem("100%")
+ self.addItem("125%")
+ self.addItem("150%")
+ self.addItem("200%")
+ self.addItem("400%")
+
+ self.currentTextChanged.connect(self.on_current_text_changed)
+ self.lineEdit().editingFinished.connect(self._editing_finished)
+
+ @Slot(float)
+ def set_zoom_factor(self, zoomFactor):
+ percent = int(zoomFactor * 100)
+ self.setCurrentText(f"{percent}%")
+
+ @Slot()
+ def reset(self):
+ self.setCurrentIndex(8) # 100%
+
+ @Slot(str)
+ def on_current_text_changed(self, text):
+ if text == "Fit Width":
+ self.zoom_mode_changed.emit(QPdfView.ZoomMode.FitToWidth)
+ elif text == "Fit Page":
+ self.zoom_mode_changed.emit(QPdfView.ZoomMode.FitInView)
+ elif text.endswith("%"):
+ factor = 1.0
+ zoom_level = int(text[:-1])
+ factor = zoom_level / 100.0
+ self.zoom_mode_changed.emit(QPdfView.ZoomMode.Custom)
+ self.zoom_factor_changed.emit(factor)
+
+ @Slot()
+ def _editing_finished(self):
+ self.on_current_text_changed(self.lineEdit().text())
diff --git a/examples/qml/editingmodel/MovingRectangle.qml b/examples/qml/editingmodel/MovingRectangle.qml
new file mode 100644
index 000000000..b99a5f4dc
--- /dev/null
+++ b/examples/qml/editingmodel/MovingRectangle.qml
@@ -0,0 +1,78 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+import QtQuick
+import QtQuick.Controls
+
+Rectangle {
+ id: root
+ property int modelIndex
+ property Item dragParent
+ property Item sizeParent
+ property alias text: zone.text
+ property alias bgColor: root.color
+
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ verticalCenter: parent.verticalCenter
+ }
+ color: backgroundColor
+ anchors.fill: sizeParent
+ border.color: "yellow"
+ border.width: 0
+ TextArea {
+ id: zone
+ anchors.centerIn: parent
+ text: display
+ onTextChanged: model.edit = text
+ }
+
+ MouseArea {
+ id: zoneMouseArea
+ anchors.fill: parent
+
+ acceptedButtons: Qt.MiddleButton
+ onClicked: function(mouse) {
+ if (mouse.button == Qt.MiddleButton)
+ lv.model.remove(index)
+ else
+ mouse.accepted = false
+ }
+ }
+ DragHandler {
+ id: dragHandler
+ xAxis {
+
+ enabled: true
+ minimum: 0
+ maximum: lv.width - droparea.width
+ }
+ yAxis.enabled: false
+ acceptedButtons: Qt.LeftButton
+ }
+ Drag.active: dragHandler.active
+ Drag.source: root
+ Drag.hotSpot.x: width / 2
+
+ states: [
+ State {
+ when: dragHandler.active
+ ParentChange {
+ target: root
+ parent: root.dragParent
+ }
+
+ AnchorChanges {
+ target: root
+ anchors.horizontalCenter: undefined
+ anchors.verticalCenter: undefined
+ }
+ PropertyChanges {
+ target: root
+ opacity: 0.6
+ border.width: 3
+ }
+ }
+ ]
+}
diff --git a/examples/qml/editingmodel/doc/editingmodel.rst b/examples/qml/editingmodel/doc/editingmodel.rst
new file mode 100644
index 000000000..2b45b23f0
--- /dev/null
+++ b/examples/qml/editingmodel/doc/editingmodel.rst
@@ -0,0 +1,16 @@
+QAbstractListModel in QML
+=========================
+
+.. tags:: Android
+
+This example shows how to add, remove and move items inside a QML
+ListView, but showing and editing the data via roles using a
+QAbstractListModel from Python.
+
+You can add new elements and reset the view using the two top buttons,
+remove elements by 'middle click' the element, and move the elements
+with a 'left click' plus dragging the item around.
+
+.. image:: qabstractlistmodelqml.png
+ :width: 400
+ :alt: QAbstractListModel/ListView Screenshot
diff --git a/examples/qml/editingmodel/doc/qabstractlistmodelqml.png b/examples/qml/editingmodel/doc/qabstractlistmodelqml.png
new file mode 100644
index 000000000..6e181fba1
--- /dev/null
+++ b/examples/qml/editingmodel/doc/qabstractlistmodelqml.png
Binary files differ
diff --git a/examples/qml/editingmodel/main.py b/examples/qml/editingmodel/main.py
new file mode 100644
index 000000000..5240a9de0
--- /dev/null
+++ b/examples/qml/editingmodel/main.py
@@ -0,0 +1,21 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from pathlib import Path
+
+from PySide6.QtCore import QUrl
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQml import QQmlApplicationEngine
+
+from model import BaseModel # noqa: F401
+
+if __name__ == "__main__":
+ app = QGuiApplication(sys.argv)
+ engine = QQmlApplicationEngine()
+ qml_file = Path(__file__).parent / "main.qml"
+ engine.load(QUrl.fromLocalFile(qml_file))
+
+ if not engine.rootObjects():
+ sys.exit(-1)
+ sys.exit(app.exec())
diff --git a/examples/qml/editingmodel/main.pyproject b/examples/qml/editingmodel/main.pyproject
new file mode 100644
index 000000000..71272a973
--- /dev/null
+++ b/examples/qml/editingmodel/main.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["model.py","main.qml","main.py","MovingRectangle.qml"]
+}
diff --git a/examples/qml/editingmodel/main.qml b/examples/qml/editingmodel/main.qml
new file mode 100644
index 000000000..2318ae8b3
--- /dev/null
+++ b/examples/qml/editingmodel/main.qml
@@ -0,0 +1,106 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Window
+import BaseModel
+
+Window {
+ title: "Moving Rectangle"
+ width: 800
+ height: 480
+ visible: true
+ id: mainWindow
+
+ Column {
+ spacing: 20
+ anchors.fill: parent
+ id: mainColumn
+ Text {
+ padding: 20
+ font.pointSize: 10
+ width: 600
+ wrapMode: Text.Wrap
+ text: "This example shows how to add, remove and move items inside a QML ListView.\n
+It shows and edits data via roles using QAbstractListModel on the Python side.\n
+Use the 'Middle click' on top of a rectangle to remove an item.\n
+'Left click' and drag to move the items."
+ }
+
+ Button {
+ anchors {
+ left: mainColumn.left
+ right: mainColumn.right
+ margins: 30
+ }
+ text: "Reset view"
+ onClicked: lv.model.reset()
+ }
+
+ Button {
+ anchors {
+ left: mainColumn.left
+ right: mainColumn.right
+ margins: 30
+ }
+ text: "Add element"
+ onClicked: lv.model.append()
+ }
+
+ ListView {
+ id: lv
+ anchors {
+ left: mainColumn.left
+ right: mainColumn.right
+ margins: 30
+ }
+
+ height: 200
+ model: BaseModel {}
+ orientation: ListView.Horizontal
+ displaced: Transition {
+ NumberAnimation {
+ properties: "x,y"
+ easing.type: Easing.OutQuad
+ }
+ }
+ delegate: DropArea {
+ id: droparea
+ width: ratio * lv.width
+ height: lv.height
+
+ onEntered: function (drag) {
+ let dragindex = drag.source.modelIndex
+ if (index === dragindex)
+ return
+ lv.model.move(dragindex, index)
+ }
+
+ MovingRectangle {
+ modelIndex: index
+ dragParent: lv
+ sizeParent: droparea
+ }
+ }
+
+ MouseArea {
+ id: lvMousearea
+ anchors.fill: lv
+ z: -1
+ }
+ Rectangle {
+ id: lvBackground
+ anchors.fill: lv
+ anchors.margins: -border.width
+ color: "white"
+ border.color: "black"
+ border.width: 5
+ z: -1
+ }
+ Component.onCompleted: {
+ lv.model.reset()
+ }
+ }
+ }
+}
diff --git a/examples/qml/editingmodel/model.py b/examples/qml/editingmodel/model.py
new file mode 100644
index 000000000..02a1e5717
--- /dev/null
+++ b/examples/qml/editingmodel/model.py
@@ -0,0 +1,156 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+from PySide6.QtCore import QAbstractListModel, QByteArray, QModelIndex, Qt, Slot
+from PySide6.QtGui import QColor
+from PySide6.QtQml import QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "BaseModel"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class BaseModel(QAbstractListModel):
+
+ RatioRole = Qt.UserRole + 1
+
+ def __init__(self, parent=None):
+ super().__init__(parent=parent)
+ self.db = []
+
+ def rowCount(self, parent=QModelIndex()):
+ return len(self.db)
+
+ def roleNames(self):
+ default = super().roleNames()
+ default[self.RatioRole] = QByteArray(b"ratio")
+ default[Qt.BackgroundRole] = QByteArray(b"backgroundColor")
+ return default
+
+ def data(self, index, role: int):
+ if not self.db:
+ ret = None
+ elif not index.isValid():
+ ret = None
+ elif role == Qt.DisplayRole:
+ ret = self.db[index.row()]["text"]
+ elif role == Qt.BackgroundRole:
+ ret = self.db[index.row()]["bgColor"]
+ elif role == self.RatioRole:
+ ret = self.db[index.row()]["ratio"]
+ else:
+ ret = None
+ return ret
+
+ def setData(self, index, value, role):
+ if not index.isValid():
+ return False
+ if role == Qt.EditRole:
+ self.db[index.row()]["text"] = value
+ return True
+
+ @Slot(result=bool)
+ def append(self):
+ """Slot to append a row at the end"""
+ return self.insertRow(self.rowCount())
+
+ def insertRow(self, row):
+ """Insert a single row at row"""
+ return self.insertRows(row, 0)
+
+ def insertRows(self, row: int, count, index=QModelIndex()):
+ """Insert n rows (n = 1 + count) at row"""
+
+ self.beginInsertRows(QModelIndex(), row, row + count)
+
+ # start database work
+ if len(self.db):
+ newid = max(x["id"] for x in self.db) + 1
+ else:
+ newid = 1
+ for i in range(count + 1): # at least one row
+ self.db.insert(
+ row, {"id": newid, "text": "new", "bgColor": QColor("purple"), "ratio": 0.2}
+ )
+ # end database work
+ self.endInsertRows()
+ return True
+
+ @Slot(int, int, result=bool)
+ def move(self, source: int, target: int):
+ """Slot to move a single row from source to target"""
+ return self.moveRow(QModelIndex(), source, QModelIndex(), target)
+
+ def moveRow(self, sourceParent, sourceRow, dstParent, dstChild):
+ """Move a single row"""
+ return self.moveRows(sourceParent, sourceRow, 0, dstParent, dstChild)
+
+ def moveRows(self, sourceParent, sourceRow, count, dstParent, dstChild):
+ """Move n rows (n=1+ count) from sourceRow to dstChild"""
+
+ if sourceRow == dstChild:
+ return False
+
+ elif sourceRow > dstChild:
+ end = dstChild
+
+ else:
+ end = dstChild + 1
+
+ self.beginMoveRows(QModelIndex(), sourceRow, sourceRow + count, QModelIndex(), end)
+
+ # start database work
+ pops = self.db[sourceRow: sourceRow + count + 1]
+ if sourceRow > dstChild:
+ self.db = (
+ self.db[:dstChild]
+ + pops
+ + self.db[dstChild:sourceRow]
+ + self.db[sourceRow + count + 1:]
+ )
+ else:
+ start = self.db[:sourceRow]
+ middle = self.db[dstChild: dstChild + 1]
+ endlist = self.db[dstChild + count + 1:]
+ self.db = start + middle + pops + endlist
+ # end database work
+
+ self.endMoveRows()
+ return True
+
+ @Slot(int, result=bool)
+ def remove(self, row: int):
+ """Slot to remove one row"""
+ return self.removeRow(row)
+
+ def removeRow(self, row, parent=QModelIndex()):
+ """Remove one row at index row"""
+ return self.removeRows(row, 0, parent)
+
+ def removeRows(self, row: int, count: int, parent=QModelIndex()):
+ """Remove n rows (n=1+count) starting at row"""
+ self.beginRemoveRows(QModelIndex(), row, row + count)
+
+ # start database work
+ self.db = self.db[:row] + self.db[row + count + 1:]
+ # end database work
+
+ self.endRemoveRows()
+ return True
+
+ @Slot(result=bool)
+ def reset(self):
+ self.beginResetModel()
+ self.resetInternalData() # should work without calling it ?
+ self.endResetModel()
+ return True
+
+ def resetInternalData(self):
+ self.db = [
+ {"id": 3, "bgColor": QColor("red"), "ratio": 0.15, "text": "first"},
+ {"id": 1, "bgColor": QColor("blue"), "ratio": 0.1, "text": "second"},
+ {"id": 2, "bgColor": QColor("green"), "ratio": 0.2, "text": "third"},
+ ]
diff --git a/examples/qml/signals/pytoqml1/main.py b/examples/qml/signals/pytoqml1/main.py
new file mode 100644
index 000000000..5bc27a521
--- /dev/null
+++ b/examples/qml/signals/pytoqml1/main.py
@@ -0,0 +1,31 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from pathlib import Path
+import sys
+from PySide6.QtCore import QTimer, QUrl
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+
+ timer = QTimer()
+ timer.start(2000)
+
+ view = QQuickView()
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+ root = view.rootObject()
+
+ timer.timeout.connect(root.updateRotater)
+
+ view.show()
+ res = app.exec()
+ # Deleting the view before it goes out of scope is required to make sure all child QML instances
+ # are destroyed in the correct order.
+ del view
+ sys.exit(res)
diff --git a/examples/declarative/signals/pytoqml1/pytoqml1.pyproject b/examples/qml/signals/pytoqml1/pytoqml1.pyproject
index e6f087cce..e6f087cce 100644
--- a/examples/declarative/signals/pytoqml1/pytoqml1.pyproject
+++ b/examples/qml/signals/pytoqml1/pytoqml1.pyproject
diff --git a/examples/qml/signals/pytoqml1/view.qml b/examples/qml/signals/pytoqml1/view.qml
new file mode 100644
index 000000000..af2d966be
--- /dev/null
+++ b/examples/qml/signals/pytoqml1/view.qml
@@ -0,0 +1,36 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Rectangle {
+ id: page
+
+ function updateRotater() {
+ rotater.angle = rotater.angle + 45
+ }
+
+ width: 500; height: 200
+ color: "lightgray"
+
+ Rectangle {
+ id: rotater
+ property real angle : 0
+ x: 240
+ width: 100; height: 10
+ color: "black"
+ y: 95
+
+ transform: Rotation {
+ origin.x: 10; origin.y: 5
+ angle: rotater.angle
+ Behavior on angle {
+ SpringAnimation {
+ spring: 1.4
+ damping: .05
+ }
+ }
+ }
+ }
+
+}
diff --git a/examples/qml/signals/pytoqml2/main.py b/examples/qml/signals/pytoqml2/main.py
new file mode 100644
index 000000000..3a3650aba
--- /dev/null
+++ b/examples/qml/signals/pytoqml2/main.py
@@ -0,0 +1,54 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from pathlib import Path
+import sys
+from PySide6.QtCore import QObject, QTimer, QUrl, Signal, Slot
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView
+from PySide6.QtQml import QmlElement
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "examples.signals.pytoqml2"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class RotateValue(QObject):
+ valueChanged = Signal(int, arguments=['val'])
+
+ def __init__(self):
+ super().__init__()
+ self.r = 0
+
+ @Slot()
+ def increment(self):
+ self.r = self.r + 10
+ self.valueChanged.emit(self.r)
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ view = QQuickView()
+
+ rotatevalue = RotateValue()
+ timer = QTimer()
+ timer.start(2000)
+ view.setInitialProperties({"rotatevalue": rotatevalue})
+
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+
+ timer.timeout.connect(rotatevalue.increment)
+
+ view.show()
+ res = app.exec()
+ # Deleting the view before it goes out of scope is required to make
+ # sure all child QML instances are destroyed in the correct order.
+ del view
+ sys.exit(res)
diff --git a/examples/declarative/signals/pytoqml2/pytoqml2.pyproject b/examples/qml/signals/pytoqml2/pytoqml2.pyproject
index e6f087cce..e6f087cce 100644
--- a/examples/declarative/signals/pytoqml2/pytoqml2.pyproject
+++ b/examples/qml/signals/pytoqml2/pytoqml2.pyproject
diff --git a/examples/qml/signals/pytoqml2/view.qml b/examples/qml/signals/pytoqml2/view.qml
new file mode 100644
index 000000000..2e9128f53
--- /dev/null
+++ b/examples/qml/signals/pytoqml2/view.qml
@@ -0,0 +1,30 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQml
+
+import examples.signals.pytoqml2 1.0
+
+Rectangle {
+ id: page
+
+ width: 500; height: 200
+ color: "lightgray"
+ required property RotateValue rotatevalue
+
+ Text {
+ id: helloText
+ text: "Hello world!"
+ anchors.horizontalCenter: page.horizontalCenter
+ y: 30
+ font.pointSize: 24; font.bold: true
+ }
+
+ Connections {
+ target: rotatevalue
+ function onValueChanged(val) {
+ helloText.rotation = val
+ }
+ }
+}
diff --git a/examples/qml/signals/qmltopy1/main.py b/examples/qml/signals/qmltopy1/main.py
new file mode 100644
index 000000000..83966903c
--- /dev/null
+++ b/examples/qml/signals/qmltopy1/main.py
@@ -0,0 +1,50 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from pathlib import Path
+import sys
+from PySide6.QtCore import QObject, QUrl, Slot
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView
+from PySide6.QtQml import QmlElement
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "examples.signals.qmltopy1"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class Console(QObject):
+ """Output stuff on the console."""
+
+ @Slot(str)
+ @Slot('double')
+ def output(self, s):
+ print(s)
+
+ @Slot(str)
+ def outputStr(self, s):
+ print(s)
+
+ @Slot('double')
+ def outputFloat(self, x):
+ print(x)
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ view = QQuickView()
+
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+ view.show()
+ res = app.exec()
+ # Deleting the view before it goes out of scope is required to make sure all child QML instances
+ # are destroyed in the correct order.
+ del view
+ sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy1/qmltopy1.pyproject b/examples/qml/signals/qmltopy1/qmltopy1.pyproject
index e6f087cce..e6f087cce 100644
--- a/examples/declarative/signals/qmltopy1/qmltopy1.pyproject
+++ b/examples/qml/signals/qmltopy1/qmltopy1.pyproject
diff --git a/examples/qml/signals/qmltopy1/view.qml b/examples/qml/signals/qmltopy1/view.qml
new file mode 100644
index 000000000..b10e2e77d
--- /dev/null
+++ b/examples/qml/signals/qmltopy1/view.qml
@@ -0,0 +1,54 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+import QtQuick
+
+import examples.signals.qmltopy1 1.0
+
+Rectangle {
+ id: page
+
+ width: 500; height: 200
+ color: "lightgray"
+
+ Console {
+ id: pyConsole
+ }
+
+ Text {
+ id: helloText
+ text: "Hello world!"
+ anchors.horizontalCenter: page.horizontalCenter
+ y: 30
+ font.pointSize: 24; font.bold: true
+ }
+
+ Rectangle {
+ id: button
+ width: 150; height: 40
+ color: "darkgray"
+ anchors.horizontalCenter: page.horizontalCenter
+ y: 120
+ MouseArea {
+ id: buttonMouseArea
+ objectName: "buttonMouseArea"
+ anchors.fill: parent
+ onClicked: {
+ // once the "console" context has been declared,
+ // slots can be called like functions
+ pyConsole.outputFloat(123)
+ pyConsole.outputStr("foobar")
+ pyConsole.output(helloText.x)
+ pyConsole.output(helloText.text)
+ }
+ }
+ Text {
+ id: buttonText
+ text: "Press me!"
+ anchors.horizontalCenter: button.horizontalCenter
+ anchors.verticalCenter: button.verticalCenter
+ font.pointSize: 16
+ }
+ }
+}
diff --git a/examples/qml/signals/qmltopy2/main.py b/examples/qml/signals/qmltopy2/main.py
new file mode 100644
index 000000000..bc2e8d3ed
--- /dev/null
+++ b/examples/qml/signals/qmltopy2/main.py
@@ -0,0 +1,45 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from pathlib import Path
+import sys
+from PySide6.QtCore import QObject, QUrl, Slot
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView
+from PySide6.QtQml import QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "examples.signals.qmltopy2"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class RotateValue(QObject):
+ def __init__(self):
+ super().__init__()
+ self.r = 0
+
+ # If a slot returns a value, the return value type must be explicitly
+ # defined in the decorator.
+ @Slot(result=int)
+ def val(self):
+ self.r = self.r + 10
+ return self.r
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ view = QQuickView()
+
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+ view.show()
+ res = app.exec()
+ # Deleting the view before it goes out of scope is required to make sure all child QML instances
+ # are destroyed in the correct order.
+ del view
+ sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy2/qmltopy2.pyproject b/examples/qml/signals/qmltopy2/qmltopy2.pyproject
index e6f087cce..e6f087cce 100644
--- a/examples/declarative/signals/qmltopy2/qmltopy2.pyproject
+++ b/examples/qml/signals/qmltopy2/qmltopy2.pyproject
diff --git a/examples/qml/signals/qmltopy2/view.qml b/examples/qml/signals/qmltopy2/view.qml
new file mode 100644
index 000000000..4bbda574c
--- /dev/null
+++ b/examples/qml/signals/qmltopy2/view.qml
@@ -0,0 +1,49 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+import examples.signals.qmltopy2 1.0
+
+Rectangle {
+ id: page
+
+ width: 500; height: 200
+ color: "lightgray"
+
+ RotateValue {
+ id: rotatevalue
+ }
+
+ Text {
+ id: helloText
+ text: "Hello world!"
+ anchors.horizontalCenter: page.horizontalCenter
+ y: 30
+ font.pointSize: 24; font.bold: true
+ }
+
+
+ Rectangle {
+ id: button
+ width: 150; height: 40
+ color: "darkgray"
+ anchors.horizontalCenter: page.horizontalCenter
+ y: 120
+ MouseArea {
+ id: buttonMouseArea
+ objectName: "buttonMouseArea"
+ anchors.fill: parent
+ onClicked: {
+ helloText.rotation = rotatevalue.val()
+ }
+ }
+ Text {
+ id: buttonText
+ text: "Press me!"
+ anchors.horizontalCenter: button.horizontalCenter
+ anchors.verticalCenter: button.verticalCenter
+ font.pointSize: 16
+ }
+ }
+}
diff --git a/examples/qml/signals/qmltopy3/main.py b/examples/qml/signals/qmltopy3/main.py
new file mode 100644
index 000000000..6a5554842
--- /dev/null
+++ b/examples/qml/signals/qmltopy3/main.py
@@ -0,0 +1,33 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from pathlib import Path
+import sys
+from PySide6.QtCore import QUrl
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView
+
+
+def sayThis(s):
+ print(s)
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ view = QQuickView()
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+
+ root = view.rootObject()
+ root.textRotationChanged.connect(sayThis)
+ root.buttonClicked.connect(lambda: sayThis("clicked button (QML top-level signal)"))
+
+ view.show()
+ res = app.exec()
+ # Deleting the view before it goes out of scope is required to make sure all child QML instances
+ # are destroyed in the correct order.
+ del view
+ sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy3/qmltopy3.pyproject b/examples/qml/signals/qmltopy3/qmltopy3.pyproject
index e6f087cce..e6f087cce 100644
--- a/examples/declarative/signals/qmltopy3/qmltopy3.pyproject
+++ b/examples/qml/signals/qmltopy3/qmltopy3.pyproject
diff --git a/examples/qml/signals/qmltopy3/view.qml b/examples/qml/signals/qmltopy3/view.qml
new file mode 100644
index 000000000..3e8a0f564
--- /dev/null
+++ b/examples/qml/signals/qmltopy3/view.qml
@@ -0,0 +1,66 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Rectangle {
+ id: page
+
+ signal buttonClicked
+ signal textRotationChanged(double rot)
+
+ width: 500; height: 200
+ color: "lightgray"
+
+ Text {
+ id: helloText
+ text: "Hello world!"
+ y: 30
+ x: page.width/2-width/2
+ font.pointSize: 24; font.bold: true
+ onRotationChanged: textRotationChanged(rotation)
+
+ states: State {
+ name: "down"; when: buttonMouseArea.pressed === true
+ PropertyChanges {
+ target: helloText;
+ rotation: 180;
+ y: 100;
+ }
+ }
+
+ transitions: Transition {
+ from: ""; to: "down"; reversible: true
+ ParallelAnimation {
+ NumberAnimation {
+ properties: "y,rotation"
+ duration: 500
+ easing.type: Easing.InOutQuad
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ id: button
+ width: 150; height: 40
+ color: "darkgray"
+ anchors.horizontalCenter: page.horizontalCenter
+ y: 120
+ MouseArea {
+ id: buttonMouseArea
+ objectName: "buttonMouseArea"
+ anchors.fill: parent
+ onClicked: {
+ buttonClicked()
+ }
+ }
+ Text {
+ id: buttonText
+ text: "Press me!"
+ anchors.horizontalCenter: button.horizontalCenter
+ anchors.verticalCenter: button.verticalCenter
+ font.pointSize: 16
+ }
+ }
+}
diff --git a/examples/qml/signals/qmltopy4/main.py b/examples/qml/signals/qmltopy4/main.py
new file mode 100644
index 000000000..8a56073d1
--- /dev/null
+++ b/examples/qml/signals/qmltopy4/main.py
@@ -0,0 +1,33 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from pathlib import Path
+import sys
+from PySide6.QtCore import QObject, QUrl
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView
+
+
+def sayThis(s):
+ print(s)
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ view = QQuickView()
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+
+ root = view.rootObject()
+ button = root.findChild(QObject, "buttonMouseArea")
+ button.clicked.connect(lambda: sayThis("clicked button (signal directly connected)"))
+
+ view.show()
+ res = app.exec()
+ # Deleting the view before it goes out of scope is required to make sure all child QML instances
+ # are destroyed in the correct order.
+ del view
+ sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy4/qmltopy4.pyproject b/examples/qml/signals/qmltopy4/qmltopy4.pyproject
index e6f087cce..e6f087cce 100644
--- a/examples/declarative/signals/qmltopy4/qmltopy4.pyproject
+++ b/examples/qml/signals/qmltopy4/qmltopy4.pyproject
diff --git a/examples/qml/signals/qmltopy4/view.qml b/examples/qml/signals/qmltopy4/view.qml
new file mode 100644
index 000000000..771b14c47
--- /dev/null
+++ b/examples/qml/signals/qmltopy4/view.qml
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Rectangle {
+ id: page
+
+ width: 500; height: 200
+ color: "lightgray"
+
+ Rectangle {
+ id: button
+ width: 150; height: 40
+ color: "darkgray"
+ anchors.horizontalCenter: page.horizontalCenter
+ anchors.verticalCenter: page.verticalCenter
+ MouseArea {
+ id: buttonMouseArea
+ objectName: "buttonMouseArea"
+ anchors.fill: parent
+ }
+ Text {
+ id: buttonText
+ text: "Press me!"
+ anchors.horizontalCenter: button.horizontalCenter
+ anchors.verticalCenter: button.verticalCenter
+ font.pointSize: 16
+ }
+ }
+}
diff --git a/examples/declarative/textproperties/doc/textproperties.png b/examples/qml/textproperties/doc/textproperties.png
index b14bb73d7..b14bb73d7 100644
--- a/examples/declarative/textproperties/doc/textproperties.png
+++ b/examples/qml/textproperties/doc/textproperties.png
Binary files differ
diff --git a/examples/qml/textproperties/doc/textproperties.rst b/examples/qml/textproperties/doc/textproperties.rst
new file mode 100644
index 000000000..81829dfdc
--- /dev/null
+++ b/examples/qml/textproperties/doc/textproperties.rst
@@ -0,0 +1,9 @@
+Text Properties Example
+=======================
+
+A Python application that demonstrates how to load a qml file
+using Material design, to change the look of text.
+
+.. image:: textproperties.png
+ :width: 400
+ :alt: Text Properties Screenshot
diff --git a/examples/qml/textproperties/main.py b/examples/qml/textproperties/main.py
new file mode 100644
index 000000000..4e6afc9ff
--- /dev/null
+++ b/examples/qml/textproperties/main.py
@@ -0,0 +1,76 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from pathlib import Path
+
+from PySide6.QtCore import QObject, Slot
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQml import QQmlApplicationEngine, QmlElement
+from PySide6.QtQuickControls2 import QQuickStyle
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "io.qt.textproperties"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class Bridge(QObject):
+
+ @Slot(str, result=str)
+ def getColor(self, s):
+ if s.lower() == "red":
+ return "#ef9a9a"
+ elif s.lower() == "green":
+ return "#a5d6a7"
+ elif s.lower() == "blue":
+ return "#90caf9"
+ else:
+ return "white"
+
+ @Slot(float, result=int)
+ def getSize(self, s):
+ size = int(s * 34)
+ if size <= 0:
+ return 1
+ else:
+ return size
+
+ @Slot(str, result=bool)
+ def getItalic(self, s):
+ if s.lower() == "italic":
+ return True
+ else:
+ return False
+
+ @Slot(str, result=bool)
+ def getBold(self, s):
+ if s.lower() == "bold":
+ return True
+ else:
+ return False
+
+ @Slot(str, result=bool)
+ def getUnderline(self, s):
+ if s.lower() == "underline":
+ return True
+ else:
+ return False
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ QQuickStyle.setStyle("Material")
+ engine = QQmlApplicationEngine()
+
+ # Get the path of the current directory, and then add the name
+ # of the QML file, to load it.
+ qml_file = Path(__file__).parent / 'view.qml'
+ engine.load(qml_file)
+
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ sys.exit(app.exec())
diff --git a/examples/declarative/textproperties/textproperties.pyproject b/examples/qml/textproperties/textproperties.pyproject
index e6f087cce..e6f087cce 100644
--- a/examples/declarative/textproperties/textproperties.pyproject
+++ b/examples/qml/textproperties/textproperties.pyproject
diff --git a/examples/qml/textproperties/view.qml b/examples/qml/textproperties/view.qml
new file mode 100644
index 000000000..c722eb4eb
--- /dev/null
+++ b/examples/qml/textproperties/view.qml
@@ -0,0 +1,160 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import QtQuick.Window
+import QtQuick.Controls.Material
+
+import io.qt.textproperties
+
+ApplicationWindow {
+ id: page
+ width: 800
+ height: 400
+ visible: true
+ Material.theme: Material.Dark
+ Material.accent: Material.Red
+
+ Bridge {
+ id: bridge
+ }
+
+ GridLayout {
+ id: grid
+ columns: 2
+ rows: 3
+
+ ColumnLayout {
+ spacing: 2
+ Layout.columnSpan: 1
+ Layout.preferredWidth: 400
+
+ Text {
+ id: leftlabel
+ Layout.alignment: Qt.AlignHCenter
+ color: "white"
+ font.pointSize: 16
+ text: "Qt for Python"
+ Layout.preferredHeight: 100
+ Material.accent: Material.Green
+ }
+
+ RadioButton {
+ id: italic
+ Layout.alignment: Qt.AlignLeft
+ text: "Italic"
+ onToggled: {
+ leftlabel.font.italic = bridge.getItalic(italic.text)
+ leftlabel.font.bold = bridge.getBold(italic.text)
+ leftlabel.font.underline = bridge.getUnderline(italic.text)
+
+ }
+ }
+ RadioButton {
+ id: bold
+ Layout.alignment: Qt.AlignLeft
+ text: "Bold"
+ onToggled: {
+ leftlabel.font.italic = bridge.getItalic(bold.text)
+ leftlabel.font.bold = bridge.getBold(bold.text)
+ leftlabel.font.underline = bridge.getUnderline(bold.text)
+ }
+ }
+ RadioButton {
+ id: underline
+ Layout.alignment: Qt.AlignLeft
+ text: "Underline"
+ onToggled: {
+ leftlabel.font.italic = bridge.getItalic(underline.text)
+ leftlabel.font.bold = bridge.getBold(underline.text)
+ leftlabel.font.underline = bridge.getUnderline(underline.text)
+ }
+ }
+ RadioButton {
+ id: noneradio
+ Layout.alignment: Qt.AlignLeft
+ text: "None"
+ checked: true
+ onToggled: {
+ leftlabel.font.italic = bridge.getItalic(noneradio.text)
+ leftlabel.font.bold = bridge.getBold(noneradio.text)
+ leftlabel.font.underline = bridge.getUnderline(noneradio.text)
+ }
+ }
+ }
+
+ ColumnLayout {
+ id: rightcolumn
+ spacing: 2
+ Layout.columnSpan: 1
+ Layout.preferredWidth: 400
+ Layout.preferredHeight: 400
+ Layout.fillWidth: true
+
+ RowLayout {
+ Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
+
+
+ Button {
+ id: red
+ text: "Red"
+ highlighted: true
+ Material.accent: Material.Red
+ onClicked: {
+ leftlabel.color = bridge.getColor(red.text)
+ }
+ }
+ Button {
+ id: green
+ text: "Green"
+ highlighted: true
+ Material.accent: Material.Green
+ onClicked: {
+ leftlabel.color = bridge.getColor(green.text)
+ }
+ }
+ Button {
+ id: blue
+ text: "Blue"
+ highlighted: true
+ Material.accent: Material.Blue
+ onClicked: {
+ leftlabel.color = bridge.getColor(blue.text)
+ }
+ }
+ Button {
+ id: nonebutton
+ text: "None"
+ highlighted: true
+ Material.accent: Material.BlueGrey
+ onClicked: {
+ leftlabel.color = bridge.getColor(nonebutton.text)
+ }
+ }
+ }
+ RowLayout {
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
+ Text {
+ id: rightlabel
+ color: "white"
+ Layout.alignment: Qt.AlignLeft
+ text: "Font size"
+ Material.accent: Material.White
+ }
+ Slider {
+ width: rightcolumn.width*0.6
+ Layout.alignment: Qt.AlignRight
+ id: slider
+ value: 0.5
+ onValueChanged: {
+ leftlabel.font.pointSize = bridge.getSize(value)
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/adding/People/Main.qml b/examples/qml/tutorials/extending-qml-advanced/adding/People/Main.qml
new file mode 100644
index 000000000..8d963a861
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/adding/People/Main.qml
@@ -0,0 +1,9 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import People
+
+Person {
+ name: "Bob Jones"
+ shoe_size: 12
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/adding/People/qmldir b/examples/qml/tutorials/extending-qml-advanced/adding/People/qmldir
new file mode 100644
index 000000000..a2bd9515a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/adding/People/qmldir
@@ -0,0 +1,3 @@
+module People
+typeinfo coercion.qmltypes
+Main 1.0 Main.qml
diff --git a/examples/qml/tutorials/extending-qml-advanced/adding/adding.pyproject b/examples/qml/tutorials/extending-qml-advanced/adding/adding.pyproject
new file mode 100644
index 000000000..3219f79ca
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/adding/adding.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "person.py",
+ "People/Main.qml", "People/qmldir"]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/adding/doc/adding.rst b/examples/qml/tutorials/extending-qml-advanced/adding/doc/adding.rst
new file mode 100644
index 000000000..4c1b3bdae
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/adding/doc/adding.rst
@@ -0,0 +1,67 @@
+.. _qml-adding-types-example:
+
+Extending QML - Adding Types Example
+====================================
+
+The Adding Types Example shows how to add a new object type, ``Person``, to QML.
+The ``Person`` type can be used from QML like this:
+
+.. code-block:: javascript
+
+ import examples.adding.people
+
+ Person {
+ name: "Bob Jones"
+ shoe_size: 12
+ }
+
+Declare the Person Class
+------------------------
+
+All QML types map to C++ types. Here we declare a basic C++ Person class
+with the two properties we want accessible on the QML type - name and shoeSize.
+Although in this example we use the same name for the C++ class as the QML
+type, the C++ class can be named differently, or appear in a namespace.
+
+The Person class implementation is quite basic. The property accessors simply
+return members of the object instance.
+
+.. code-block:: python
+
+ from PySide6.QtCore import QObject, Property
+ from PySide6.QtQml import QmlElement
+
+ # To be used on the @QmlElement decorator
+ # (QML_IMPORT_MINOR_VERSION is optional)
+ QML_IMPORT_NAME = "People"
+ QML_IMPORT_MAJOR_VERSION = 1
+
+
+ @QmlElement
+ class Person(QObject):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._name = ''
+ self._shoe_size = 0
+
+ @Property(str)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, n):
+ self._name = n
+
+ @Property(int)
+ def shoe_size(self):
+ return self._shoe_size
+
+ @shoe_size.setter
+ def shoe_size(self, s):
+ self._shoe_size = s
+
+Running the Example
+-------------------
+
+The main.py file in the example includes a simple shell application that
+loads and runs the QML snippet shown at the beginning of this page.
diff --git a/examples/qml/tutorials/extending-qml-advanced/adding/main.py b/examples/qml/tutorials/extending-qml-advanced/adding/main.py
new file mode 100644
index 000000000..ec703dbf3
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/adding/main.py
@@ -0,0 +1,30 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the qml/examples/qml/referenceexamples/adding example from Qt v6.x"""
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtQml import QQmlComponent, QQmlEngine
+
+from person import Person # noqa: F401
+
+
+if __name__ == '__main__':
+ app = QCoreApplication(sys.argv)
+
+ engine = QQmlEngine()
+ engine.addImportPath(Path(__file__).parent)
+ component = QQmlComponent(engine)
+ component.loadFromModule("People", "Main")
+
+ person = component.create()
+ if person:
+ print(f"The person's name is {person.name}")
+ print(f"They wear a {person.shoe_size} sized shoe")
+ else:
+ print(component.errors())
+ del engine
+ sys.exit(0)
diff --git a/examples/qml/tutorials/extending-qml-advanced/adding/person.py b/examples/qml/tutorials/extending-qml-advanced/adding/person.py
new file mode 100644
index 000000000..526eae714
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/adding/person.py
@@ -0,0 +1,34 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property
+from PySide6.QtQml import QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class Person(QObject):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._name = ''
+ self._shoe_size = 0
+
+ @Property(str)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, n):
+ self._name = n
+
+ @Property(int)
+ def shoe_size(self):
+ return self._shoe_size
+
+ @shoe_size.setter
+ def shoe_size(self, s):
+ self._shoe_size = s
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/People/Main.qml b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/People/Main.qml
new file mode 100644
index 000000000..c14051371
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/People/Main.qml
@@ -0,0 +1,16 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import People
+
+BirthdayParty {
+ host: Person {
+ name: "Bob Jones"
+ shoe_size: 12
+ }
+ guests: [
+ Person { name: "Leo Hodges" },
+ Person { name: "Jack Smith" },
+ Person { name: "Anne Brown" }
+ ]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/People/qmldir b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/People/qmldir
new file mode 100644
index 000000000..a2bd9515a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/People/qmldir
@@ -0,0 +1,3 @@
+module People
+typeinfo coercion.qmltypes
+Main 1.0 Main.qml
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/advanced1-Base-project.pyproject b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/advanced1-Base-project.pyproject
new file mode 100644
index 000000000..09942ebcc
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/advanced1-Base-project.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "birthdayparty.py", "person.py",
+ "People/Main.qml", "People/qmldir"]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/birthdayparty.py b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/birthdayparty.py
new file mode 100644
index 000000000..764815175
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/birthdayparty.py
@@ -0,0 +1,46 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtQml import QmlElement, ListProperty
+
+from person import Person
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class BirthdayParty(QObject):
+ host_changed = Signal()
+ guests_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._host = None
+ self._guests = []
+
+ @Property(Person, notify=host_changed, final=True)
+ def host(self):
+ return self._host
+
+ @host.setter
+ def host(self, h):
+ if self._host != h:
+ self._host = h
+ self.host_changed.emit()
+
+ def guest(self, n):
+ return self._guests[n]
+
+ def guestCount(self):
+ return len(self._guests)
+
+ def appendGuest(self, guest):
+ self._guests.append(guest)
+ self.guests_changed.emit()
+
+ guests = ListProperty(Person, appendGuest, notify=guests_changed, final=True)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/doc/advanced1-Base-project.rst b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/doc/advanced1-Base-project.rst
new file mode 100644
index 000000000..90a73b78d
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/doc/advanced1-Base-project.rst
@@ -0,0 +1,57 @@
+.. _qml-advanced1-base-project:
+
+Extending QML (advanced) - BirthdayParty Base Project
+=====================================================
+
+This is the first of a series of 6 examples forming a tutorial using the
+example of a birthday party to demonstrate some of the advanced features of
+QML. The code for the various features explained below is based on this
+birthday party project and relies on some of the material in the basic
+tutorial. This simple example is then expanded upon to illustrate the various
+QML extensions explained below. The complete code for each new extension to the
+code can be found at the end of the respective page.
+
+The base project defines the ``Person`` class and the ``BirthdayParty`` class,
+which model the attendees and the party itself respectively.
+
+.. literalinclude:: person.py
+ :lineno-start: 13
+ :lines: 13-41
+
+.. literalinclude:: birthdayparty.py
+ :lineno-start: 16
+ :lines: 16-46
+
+All the information about the party can then be stored in the corresponding QML
+file.
+
+.. literalinclude:: People/Main.qml
+ :lineno-start: 4
+ :lines: 4-16
+
+
+The ``main.py`` file creates a simple shell application that displays whose
+birthday it is and who is invited to their party.
+
+.. literalinclude:: main.py
+ :lineno-start: 17
+ :lines: 17-21
+
+The app outputs the following summary of the party::
+
+ "Bob Jones" is having a birthday!
+ They are inviting:
+ "Leo Hodges"
+ "Jack Smith"
+ "Anne Brown"
+
+Outlook
+-------
+
+The following sections go into how to add support for ``Boy`` and ``Girl``
+attendees instead of just ``Person`` by using inheritance and coercion, how to
+make use of default properties to implicitly assign attendees of the party as
+guests, how to assign properties as groups instead of one by one, how to use
+attached objects to keep track of invited guests' reponses, how to use a
+property value source to display the lyrics of the happy birthday song over
+time, and how to expose third party objects to QML.
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/main.py b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/main.py
new file mode 100644
index 000000000..560db6602
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/main.py
@@ -0,0 +1,33 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the
+ qml/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project example from Qt v6.x"""
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtQml import QQmlComponent, QQmlEngine
+
+from person import Person # noqa: F401
+from birthdayparty import BirthdayParty # noqa: F401
+
+
+app = QCoreApplication(sys.argv)
+engine = QQmlEngine()
+engine.addImportPath(Path(__file__).parent)
+component = QQmlComponent(engine)
+component.loadFromModule("People", "Main")
+party = component.create()
+if not party:
+ print(component.errors())
+ del engine
+ sys.exit(-1)
+host = party.host
+print(f"{host.name} is having a birthday!\nThey are inviting:")
+for g in range(party.guestCount()):
+ name = party.guest(g).name
+ print(f" {name}")
+del engine
+sys.exit(0)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/person.py b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/person.py
new file mode 100644
index 000000000..60dc9d882
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced1-Base-project/person.py
@@ -0,0 +1,41 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtQml import QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class Person(QObject):
+ name_changed = Signal()
+ shoe_size_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._name = ''
+ self._shoe_size = 0
+
+ @Property(str, notify=name_changed, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, n):
+ if self._name != n:
+ self._name = n
+ self.name_changed.emit()
+
+ @Property(int, notify=shoe_size_changed, final=True)
+ def shoe_size(self):
+ return self._shoe_size
+
+ @shoe_size.setter
+ def shoe_size(self, s):
+ if self._shoe_size != s:
+ self._shoe_size = s
+ self.shoe_size_changed.emit()
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/People/Main.qml b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/People/Main.qml
new file mode 100644
index 000000000..b2b7ace93
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/People/Main.qml
@@ -0,0 +1,16 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import People
+
+BirthdayParty {
+ host: Boy {
+ name: "Bob Jones"
+ shoe_size: 12
+ }
+ guests: [
+ Boy { name: "Leo Hodges" },
+ Boy { name: "Jack Smith" },
+ Girl { name: "Anne Brown" }
+ ]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/People/qmldir b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/People/qmldir
new file mode 100644
index 000000000..a2bd9515a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/People/qmldir
@@ -0,0 +1,3 @@
+module People
+typeinfo coercion.qmltypes
+Main 1.0 Main.qml
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/advanced2-Inheritance-and-coercion.pyproject b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/advanced2-Inheritance-and-coercion.pyproject
new file mode 100644
index 000000000..09942ebcc
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/advanced2-Inheritance-and-coercion.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "birthdayparty.py", "person.py",
+ "People/Main.qml", "People/qmldir"]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/birthdayparty.py b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/birthdayparty.py
new file mode 100644
index 000000000..764815175
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/birthdayparty.py
@@ -0,0 +1,46 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtQml import QmlElement, ListProperty
+
+from person import Person
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class BirthdayParty(QObject):
+ host_changed = Signal()
+ guests_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._host = None
+ self._guests = []
+
+ @Property(Person, notify=host_changed, final=True)
+ def host(self):
+ return self._host
+
+ @host.setter
+ def host(self, h):
+ if self._host != h:
+ self._host = h
+ self.host_changed.emit()
+
+ def guest(self, n):
+ return self._guests[n]
+
+ def guestCount(self):
+ return len(self._guests)
+
+ def appendGuest(self, guest):
+ self._guests.append(guest)
+ self.guests_changed.emit()
+
+ guests = ListProperty(Person, appendGuest, notify=guests_changed, final=True)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/doc/advanced2-Inheritance-and-coercion.rst b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/doc/advanced2-Inheritance-and-coercion.rst
new file mode 100644
index 000000000..16c0dbc9a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/doc/advanced2-Inheritance-and-coercion.rst
@@ -0,0 +1,62 @@
+.. _qml-advanced2-inheritance-and-coercion:
+
+Extending QML (advanced) - Inheritance and Coercion
+===================================================
+
+This is the second of a series of 6 examples forming a tutorial using the
+example of a birthday party to demonstrate some of the advanced features of
+QML.
+
+Right now, each attendant is being modelled as a person. This is a bit too
+generic and it would be nice to be able to know more about the attendees. By
+specializing them as boys and girls, we can already get a better idea of who's
+coming.
+
+To do this, the ``Boy`` and ``Girl`` classes are introduced, both inheriting from
+``Person``.
+
+.. literalinclude:: person.py
+ :lineno-start: 43
+ :lines: 43-46
+
+.. literalinclude:: person.py
+ :lineno-start: 49
+ :lines: 49-52
+
+The ``Person`` class remains unaltered and the ``Boy`` and ``Girl`` classes are
+trivial extensions of it. The types and their QML name are registered with the
+QML engine with ``@QmlElement``.
+
+Notice that the ``host`` and ``guests`` properties in ``BirthdayParty`` still
+take instances of ``Person``.
+
+.. literalinclude:: birthdayparty.py
+ :lineno-start: 26
+ :lines: 26-26
+
+.. literalinclude:: birthdayparty.py
+ :lineno-start: 46
+ :lines: 46-46
+
+The implementation of the ``Person`` class itself has not been changed.
+However, as the ``Person`` class was repurposed as a common base for ``Boy``
+and ``Girl``, ``Person`` should no longer be instantiable from QML directly. An
+explicit ``Boy`` or ``Girl`` should be instantiated instead.
+
+.. literalinclude:: person.py
+ :lineno-start: 13
+ :lines: 13-15
+
+While we want to disallow instantiating ``Person`` from within QML, it still
+needs to be registered with the QML engine so that it can be used as a property
+type and other types can be coerced to it. This is what the ``@QmlUncreatable``
+macro does. As all three types, ``Person``, ``Boy`` and ``Girl``, have been
+registered with the QML system, on assignment, QML automatically (and
+type-safely) converts the ``Boy`` and ``Girl`` objects into a ``Person``.
+
+With these changes in place, we can now specify the birthday party with the
+extra information about the attendees as follows.
+
+.. literalinclude:: People/Main.qml
+ :lineno-start: 6
+ :lines: 6-16
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/main.py b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/main.py
new file mode 100644
index 000000000..cc77e2b40
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/main.py
@@ -0,0 +1,38 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the
+ qml/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion example
+ from Qt v6.x"""
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtQml import QQmlComponent, QQmlEngine
+
+from person import Boy, Girl # noqa: F401
+from birthdayparty import BirthdayParty # noqa: F401
+
+
+app = QCoreApplication(sys.argv)
+engine = QQmlEngine()
+engine.addImportPath(Path(__file__).parent)
+component = QQmlComponent(engine)
+component.loadFromModule("People", "Main")
+party = component.create()
+if not party:
+ print(component.errors())
+ del engine
+ sys.exit(-1)
+host = party.host
+print(f"{host.name} is having a birthday!")
+if isinstance(host, Boy):
+ print("He is inviting:")
+else:
+ print("She is inviting:")
+for g in range(party.guestCount()):
+ name = party.guest(g).name
+ print(f" {name}")
+del engine
+sys.exit(0)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/person.py b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/person.py
new file mode 100644
index 000000000..57e73e6f5
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced2-Inheritance-and-coercion/person.py
@@ -0,0 +1,52 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtQml import QmlElement, QmlUncreatable
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+@QmlUncreatable("Person is an abstract base class.")
+class Person(QObject):
+ name_changed = Signal()
+ shoe_size_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._name = ''
+ self._shoe_size = 0
+
+ @Property(str, notify=name_changed, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, n):
+ if self._name != n:
+ self._name = n
+ self.name_changed.emit()
+
+ @Property(int, notify=shoe_size_changed, final=True)
+ def shoe_size(self):
+ return self._shoe_size
+
+ @shoe_size.setter
+ def shoe_size(self, s):
+ self._shoe_size = s
+
+
+@QmlElement
+class Boy(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+
+@QmlElement
+class Girl(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/People/Main.qml b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/People/Main.qml
new file mode 100644
index 000000000..9971a2315
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/People/Main.qml
@@ -0,0 +1,15 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import People
+
+BirthdayParty {
+ host: Boy {
+ name: "Bob Jones"
+ shoe_size: 12
+ }
+
+ Boy { name: "Leo Hodges" }
+ Boy { name: "Jack Smith" }
+ Girl { name: "Anne Brown" }
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/People/qmldir b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/People/qmldir
new file mode 100644
index 000000000..a2bd9515a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/People/qmldir
@@ -0,0 +1,3 @@
+module People
+typeinfo coercion.qmltypes
+Main 1.0 Main.qml
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/advanced3-Default-properties.pyproject b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/advanced3-Default-properties.pyproject
new file mode 100644
index 000000000..09942ebcc
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/advanced3-Default-properties.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "birthdayparty.py", "person.py",
+ "People/Main.qml", "People/qmldir"]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/birthdayparty.py b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/birthdayparty.py
new file mode 100644
index 000000000..3f6102c66
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/birthdayparty.py
@@ -0,0 +1,47 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, ClassInfo, Property, Signal
+from PySide6.QtQml import QmlElement, ListProperty
+
+from person import Person
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+@ClassInfo(DefaultProperty="guests")
+class BirthdayParty(QObject):
+ host_changed = Signal()
+ guests_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._host = None
+ self._guests = []
+
+ @Property(Person, notify=host_changed, final=True)
+ def host(self):
+ return self._host
+
+ @host.setter
+ def host(self, h):
+ if self._host != h:
+ self._host = h
+ self.host_changed.emit()
+
+ def guest(self, n):
+ return self._guests[n]
+
+ def guestCount(self):
+ return len(self._guests)
+
+ def appendGuest(self, guest):
+ self._guests.append(guest)
+ self.guests_changed.emit()
+
+ guests = ListProperty(Person, appendGuest, notify=guests_changed, final=True)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/doc/advanced3-Default-properties.rst b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/doc/advanced3-Default-properties.rst
new file mode 100644
index 000000000..0857f9d0a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/doc/advanced3-Default-properties.rst
@@ -0,0 +1,40 @@
+.. _qml-advanced3-default-properties:
+
+Extending QML (advanced) - Default Properties
+=============================================
+
+This is the third of a series of 6 examples forming a tutorial using the
+example of a birthday party to demonstrate some of the advanced features of
+QML.
+
+Currently, in the QML file, each property is assigned explicitly. For example,
+the ``host`` property is assigned a ``Boy`` and the ``guests`` property is
+assigned a list of ``Boy`` or ``Girl``. This is easy but it can be made a bit
+simpler for this specific use case. Instead of assigning the ``guests``
+property explicitly, we can add ``Boy`` and ``Girl`` objects inside the party
+directly and have them assigned to ``guests`` implicitly. It makes sense that
+all the attendees that we specify, and that are not the host, are guests. This
+change is purely syntactical but it can add a more natural feel in many
+situations.
+
+The ``guests`` property can be designated as the default property of
+``BirthdayParty``. Meaning that each object created inside of a
+``BirthdayParty`` is implicitly appended to the default property ``guests``.
+The resulting QML looks like this.
+
+.. literalinclude:: People/Main.qml
+ :lineno-start: 6
+ :lines: 6-15
+
+The only change required to enable this behavior is to add the ``DefaultProperty``
+class info annotation to ``BirthdayParty`` to designate ``guests`` as its default
+property.
+
+.. literalinclude:: birthdayparty.py
+ :lineno-start: 16
+ :lines: 16-18
+
+You may already be familiar with this mechanism. The default property for all
+descendants of ``Item`` in QML is the ``data`` property. All elements not
+explicitly added to a property of an ``Item`` will be added to ``data``. This
+makes the structure clear and reduces unnecessary noise in the code.
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/main.py b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/main.py
new file mode 100644
index 000000000..020974c9b
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/main.py
@@ -0,0 +1,38 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the
+ qml/examples/qml/tutorials/extending-qml-advanced/default advanced3-Default-properties example
+ from Qt v6.x"""
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtQml import QQmlComponent, QQmlEngine
+
+from person import Boy, Girl # noqa: F401
+from birthdayparty import BirthdayParty # noqa: F401
+
+
+app = QCoreApplication(sys.argv)
+engine = QQmlEngine()
+engine.addImportPath(Path(__file__).parent)
+component = QQmlComponent(engine)
+component.loadFromModule("People", "Main")
+party = component.create()
+if not party:
+ print(component.errors())
+ del engine
+ sys.exit(-1)
+host = party.host
+print(f"{host.name} is having a birthday!")
+if isinstance(host, Boy):
+ print("He is inviting:")
+else:
+ print("She is inviting:")
+for g in range(party.guestCount()):
+ name = party.guest(g).name
+ print(f" {name}")
+del engine
+sys.exit(0)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/person.py b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/person.py
new file mode 100644
index 000000000..503aaf65e
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced3-Default-properties/person.py
@@ -0,0 +1,51 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtQml import QmlAnonymous, QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlAnonymous
+class Person(QObject):
+ name_changed = Signal()
+ shoe_size_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._name = ''
+ self._shoe_size = 0
+
+ @Property(str, notify=name_changed, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, n):
+ if self._name != n:
+ self._name = n
+ self.name_changed.emit()
+
+ @Property(int, notify=shoe_size_changed, final=True)
+ def shoe_size(self):
+ return self._shoe_size
+
+ @shoe_size.setter
+ def shoe_size(self, s):
+ self._shoe_size = s
+
+
+@QmlElement
+class Boy(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+
+@QmlElement
+class Girl(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/People/Main.qml b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/People/Main.qml
new file mode 100644
index 000000000..3c34234fd
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/People/Main.qml
@@ -0,0 +1,33 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+import People
+
+BirthdayParty {
+ host: Boy {
+ name: "Bob Jones"
+ shoe { size: 12; color: "white"; brand: "Bikey"; price: 90.0 }
+ }
+
+ Boy {
+ name: "Leo Hodges"
+ shoe { size: 10; color: "black"; brand: "Thebok"; price: 59.95 }
+ }
+ Boy { name: "Jack Smith"
+ shoe {
+ size: 8
+ color: "blue"
+ brand: "Luma"
+ price: 19.95
+ }
+ }
+ Girl {
+ name: "Anne Brown"
+ shoe.size: 7
+ shoe.color: "red"
+ shoe.brand: "Job Macobs"
+ shoe.price: 699.99
+ }
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/People/qmldir b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/People/qmldir
new file mode 100644
index 000000000..a2bd9515a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/People/qmldir
@@ -0,0 +1,3 @@
+module People
+typeinfo coercion.qmltypes
+Main 1.0 Main.qml
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/advanced4-Grouped-properties.pyproject b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/advanced4-Grouped-properties.pyproject
new file mode 100644
index 000000000..09942ebcc
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/advanced4-Grouped-properties.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "birthdayparty.py", "person.py",
+ "People/Main.qml", "People/qmldir"]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/birthdayparty.py b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/birthdayparty.py
new file mode 100644
index 000000000..3f6102c66
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/birthdayparty.py
@@ -0,0 +1,47 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, ClassInfo, Property, Signal
+from PySide6.QtQml import QmlElement, ListProperty
+
+from person import Person
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+@ClassInfo(DefaultProperty="guests")
+class BirthdayParty(QObject):
+ host_changed = Signal()
+ guests_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._host = None
+ self._guests = []
+
+ @Property(Person, notify=host_changed, final=True)
+ def host(self):
+ return self._host
+
+ @host.setter
+ def host(self, h):
+ if self._host != h:
+ self._host = h
+ self.host_changed.emit()
+
+ def guest(self, n):
+ return self._guests[n]
+
+ def guestCount(self):
+ return len(self._guests)
+
+ def appendGuest(self, guest):
+ self._guests.append(guest)
+ self.guests_changed.emit()
+
+ guests = ListProperty(Person, appendGuest, notify=guests_changed, final=True)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/doc/advanced4-Grouped-properties.rst b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/doc/advanced4-Grouped-properties.rst
new file mode 100644
index 000000000..7748d3189
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/doc/advanced4-Grouped-properties.rst
@@ -0,0 +1,39 @@
+.. _qml-advanced-advanced4-grouped-properties:
+
+Extending QML (advanced) - Grouped Properties
+=============================================
+
+This is the fourth of a series of 6 examples forming a tutorial using the
+example of a birthday party to demonstrate some of the advanced features of
+QML.
+
+More information is needed about the shoes of the guests. Aside from their
+size, we also want to store the shoes' color, brand, and price. This
+information is stored in a ``ShoeDescription`` class.
+
+.. literalinclude:: person.py
+ :lineno-start: 14
+ :lines: 14-66
+
+Each person now has two properties, a ``name`` and a shoe description ``shoe``.
+
+.. literalinclude:: person.py
+ :lineno-start: 69
+ :lines: 69-90
+
+Specifying the values for each element of the shoe description works but is a
+bit repetitive.
+
+.. literalinclude:: People/Main.qml
+ :lineno-start: 26
+ :lines: 26-32
+
+Grouped properties provide a more elegant way of assigning these properties.
+Instead of assigning the values to each property one-by-one, the individual
+values can be passed as a group to the ``shoe`` property making the code more
+readable. No changes are required to enable this feature as it is available by
+default for all of QML.
+
+.. literalinclude:: People/Main.qml
+ :lineno-start: 9
+ :lines: 9-12
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/main.py b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/main.py
new file mode 100644
index 000000000..9757b6daa
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/main.py
@@ -0,0 +1,46 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the
+ qml/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties example
+ from Qt v6.x"""
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtQml import QQmlComponent, QQmlEngine
+
+from person import Boy, Girl # noqa: F401
+from birthdayparty import BirthdayParty # noqa: F401
+
+
+if __name__ == '__main__':
+ app = QCoreApplication(sys.argv)
+ engine = QQmlEngine()
+ engine.addImportPath(Path(__file__).parent)
+ component = QQmlComponent(engine)
+ component.loadFromModule("People", "Main")
+
+ party = component.create()
+ if not party:
+ print(component.errors())
+ del engine
+ sys.exit(-1)
+ host = party.host
+ print(f"{host.name} is having a birthday!")
+ if isinstance(host, Boy):
+ print("He is inviting:")
+ else:
+ print("She is inviting:")
+ best_shoe = None
+ for g in range(party.guestCount()):
+ guest = party.guest(g)
+ name = guest.name
+ print(f" {name}")
+ if not best_shoe or best_shoe.shoe.price < guest.shoe.price:
+ best_shoe = guest
+ if best_shoe:
+ print(f"{best_shoe.name} is wearing the best shoes!")
+ del engine
+ sys.exit(0)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/person.py b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/person.py
new file mode 100644
index 000000000..ccd439e88
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced4-Grouped-properties/person.py
@@ -0,0 +1,102 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtGui import QColor
+from PySide6.QtQml import QmlAnonymous, QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlAnonymous
+class ShoeDescription(QObject):
+ brand_changed = Signal()
+ size_changed = Signal()
+ price_changed = Signal()
+ color_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._brand = ''
+ self._size = 0
+ self._price = 0
+ self._color = QColor()
+
+ @Property(str, notify=brand_changed, final=True)
+ def brand(self):
+ return self._brand
+
+ @brand.setter
+ def brand(self, b):
+ if self._brand != b:
+ self._brand = b
+ self.brand_changed.emit()
+
+ @Property(int, notify=size_changed, final=True)
+ def size(self):
+ return self._size
+
+ @size.setter
+ def size(self, s):
+ if self._size != s:
+ self._size = s
+ self.size_changed.emit()
+
+ @Property(float, notify=price_changed, final=True)
+ def price(self):
+ return self._price
+
+ @price.setter
+ def price(self, p):
+ if self._price != p:
+ self._price = p
+ self.price_changed.emit()
+
+ @Property(QColor, notify=color_changed, final=True)
+ def color(self):
+ return self._color
+
+ @color.setter
+ def color(self, c):
+ if self._color != c:
+ self._color = c
+ self.color_changed.emit()
+
+
+@QmlAnonymous
+class Person(QObject):
+ name_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._name = ''
+ self._shoe = ShoeDescription()
+
+ @Property(str, notify=name_changed, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, n):
+ if self._name != n:
+ self._name = n
+ self.name_changed.emit()
+
+ @Property(ShoeDescription, final=True)
+ def shoe(self):
+ return self._shoe
+
+
+@QmlElement
+class Boy(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+
+@QmlElement
+class Girl(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/People/Main.qml b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/People/Main.qml
new file mode 100644
index 000000000..795d63867
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/People/Main.qml
@@ -0,0 +1,22 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import People
+
+BirthdayParty {
+ Boy {
+ name: "Robert Campbell"
+ BirthdayParty.rsvp: "2009-07-01"
+ }
+
+ Boy {
+ name: "Leo Hodges"
+ shoe_size: 10
+ BirthdayParty.rsvp: "2009-07-06"
+ }
+
+ host: Boy {
+ name: "Jack Smith"
+ shoe_size: 8
+ }
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/People/qmldir b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/People/qmldir
new file mode 100644
index 000000000..a2bd9515a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/People/qmldir
@@ -0,0 +1,3 @@
+module People
+typeinfo coercion.qmltypes
+Main 1.0 Main.qml
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/advanced5-Attached-properties.pyproject b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/advanced5-Attached-properties.pyproject
new file mode 100644
index 000000000..09942ebcc
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/advanced5-Attached-properties.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "birthdayparty.py", "person.py",
+ "People/Main.qml", "People/qmldir"]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/birthdayparty.py b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/birthdayparty.py
new file mode 100644
index 000000000..f38bfd305
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/birthdayparty.py
@@ -0,0 +1,71 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QDate, QObject, ClassInfo, Property, Signal
+from PySide6.QtQml import QmlAnonymous, QmlAttached, QmlElement, ListProperty
+
+from person import Person
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlAnonymous
+class BirthdayPartyAttached(QObject):
+ rsvp_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._rsvp = QDate()
+
+ @Property(QDate, notify=rsvp_changed, final=True)
+ def rsvp(self):
+ return self._rsvp
+
+ @rsvp.setter
+ def rsvp(self, d):
+ if self._rsvp != d:
+ self._rsvp = d
+ self.rsvp_changed.emit()
+
+
+@QmlElement
+@ClassInfo(DefaultProperty="guests")
+@QmlAttached(BirthdayPartyAttached)
+class BirthdayParty(QObject):
+ host_changed = Signal()
+ guests_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._host = None
+ self._guests = []
+
+ @Property(Person, notify=host_changed, final=True)
+ def host(self):
+ return self._host
+
+ @host.setter
+ def host(self, h):
+ if self._host != h:
+ self._host = h
+ self.host_changed.emit()
+
+ def guest(self, n):
+ return self._guests[n]
+
+ def guestCount(self):
+ return len(self._guests)
+
+ def appendGuest(self, guest):
+ self._guests.append(guest)
+ self.guests_changed.emit()
+
+ @staticmethod
+ def qmlAttachedProperties(self, o):
+ return BirthdayPartyAttached(o)
+
+ guests = ListProperty(Person, appendGuest, notify=guests_changed, final=True)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/doc/advanced5-Attached-properties.rst b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/doc/advanced5-Attached-properties.rst
new file mode 100644
index 000000000..14b4bddb0
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/doc/advanced5-Attached-properties.rst
@@ -0,0 +1,51 @@
+.. _qml-advanced-advanced5-attached-properties:
+
+Extending QML (advanced) - Attached Properties
+==============================================
+
+This is the fifth of a series of 6 examples forming a tutorial using the
+example of a birthday party to demonstrate some of the advanced features of
+QML.
+
+The time has come for the host to send out invitations. To keep track of which
+guests have responded to the invitation and when, we need somewhere to store
+that information. Storing it in the ``BirthdayParty`` object iself would not
+really fit. A better way would be to store the responses as attached objects to
+the party object.
+
+First, we declare the ``BirthdayPartyAttached`` class which holds the guest reponses.
+
+.. literalinclude:: birthdayparty.py
+ :lineno-start: 16
+ :lines: 16-32
+
+And we attach it to the ``BirthdayParty`` class and define
+``qmlAttachedProperties()`` to return the attached object.
+
+.. literalinclude:: birthdayparty.py
+ :lineno-start: 34
+ :lines: 34-38
+
+.. literalinclude:: birthdayparty.py
+ :lineno-start: 67
+ :lines: 67-69
+
+Now, attached objects can be used in the QML to hold the rsvp information of
+the invited guests.
+
+.. literalinclude:: People/Main.qml
+ :lineno-start: 6
+ :lines: 6-22
+
+Finally, the information can be accessed in the following way.
+
+.. literalinclude:: main.py
+ :lineno-start: 36
+ :lines: 36-39
+
+The program outputs the following summary of the party to come::
+
+ "Jack Smith" is having a birthday!
+ He is inviting:
+ "Robert Campbell" RSVP date: "Wed Mar 1 2023"
+ "Leo Hodges" RSVP date: "Mon Mar 6 2023"
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/main.py b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/main.py
new file mode 100644
index 000000000..9a92afeb5
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/main.py
@@ -0,0 +1,48 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the
+ qml/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties example
+ from Qt v6.x"""
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtQml import QQmlComponent, QQmlEngine, qmlAttachedPropertiesObject
+
+from person import Boy, Girl # noqa: F401
+from birthdayparty import BirthdayParty # noqa: F401
+
+
+app = QCoreApplication(sys.argv)
+engine = QQmlEngine()
+engine.addImportPath(Path(__file__).parent)
+component = QQmlComponent(engine)
+component.loadFromModule("People", "Main")
+party = component.create()
+if not party:
+ print(component.errors())
+ del engine
+ sys.exit(-1)
+host = party.host
+print(f"{host.name} is having a birthday!")
+if isinstance(host, Boy):
+ print("He is inviting:")
+else:
+ print("She is inviting:")
+for g in range(party.guestCount()):
+ guest = party.guest(g)
+ name = guest.name
+
+ rsvp_date = None
+ attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False)
+ if attached:
+ rsvp_date = attached.rsvp.toString()
+ if rsvp_date:
+ print(f" {name} RSVP date: {rsvp_date}")
+ else:
+ print(f" {name} RSVP date: Hasn't RSVP'd")
+
+del engine
+sys.exit(0)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/person.py b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/person.py
new file mode 100644
index 000000000..503aaf65e
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced5-Attached-properties/person.py
@@ -0,0 +1,51 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtQml import QmlAnonymous, QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlAnonymous
+class Person(QObject):
+ name_changed = Signal()
+ shoe_size_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._name = ''
+ self._shoe_size = 0
+
+ @Property(str, notify=name_changed, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, n):
+ if self._name != n:
+ self._name = n
+ self.name_changed.emit()
+
+ @Property(int, notify=shoe_size_changed, final=True)
+ def shoe_size(self):
+ return self._shoe_size
+
+ @shoe_size.setter
+ def shoe_size(self, s):
+ self._shoe_size = s
+
+
+@QmlElement
+class Boy(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+
+@QmlElement
+class Girl(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/People/Main.qml b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/People/Main.qml
new file mode 100644
index 000000000..254265a80
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/People/Main.qml
@@ -0,0 +1,27 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import People
+
+BirthdayParty {
+ HappyBirthdaySong on announcement { name: "Bob Jones" }
+
+ onPartyStarted: (time) => { console.log("This party started rockin' at " + time); }
+
+ host: Boy {
+ name: "Bob Jones"
+ shoe_size: 12
+ }
+
+ Boy {
+ name: "Leo Hodges"
+ BirthdayParty.rsvp: "2009-07-06"
+ }
+ Boy {
+ name: "Jack Smith"
+ }
+ Girl {
+ name: "Anne Brown"
+ BirthdayParty.rsvp: "2009-07-01"
+ }
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/People/qmldir b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/People/qmldir
new file mode 100644
index 000000000..a2bd9515a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/People/qmldir
@@ -0,0 +1,3 @@
+module People
+typeinfo coercion.qmltypes
+Main 1.0 Main.qml
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/advanced6-Property-value-source.pyproject b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/advanced6-Property-value-source.pyproject
new file mode 100644
index 000000000..fe2980fa9
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/advanced6-Property-value-source.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "birthdayparty.py", "happybirthdaysong.py", "person.py",
+ "People/Main.qml", "People/qmldir"]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/birthdayparty.py b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/birthdayparty.py
new file mode 100644
index 000000000..eacb5201d
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/birthdayparty.py
@@ -0,0 +1,89 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QDate, QObject, ClassInfo, Property, QTime, Signal
+from PySide6.QtQml import QmlAnonymous, QmlAttached, QmlElement, ListProperty
+
+from person import Person
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlAnonymous
+class BirthdayPartyAttached(QObject):
+ rsvp_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._rsvp = QDate()
+
+ @Property(QDate, notify=rsvp_changed, final=True)
+ def rsvp(self):
+ return self._rsvp
+
+ @rsvp.setter
+ def rsvp(self, d):
+ if self._rsvp != d:
+ self._rsvp = d
+ self.rsvp_changed.emit()
+
+
+@QmlElement
+@ClassInfo(DefaultProperty="guests")
+@QmlAttached(BirthdayPartyAttached)
+class BirthdayParty(QObject):
+
+ announcement_changed = Signal()
+ host_changed = Signal()
+ guests_changed = Signal()
+ partyStarted = Signal(QTime)
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._announcement = ""
+ self._host = None
+ self._guests = []
+
+ def startParty(self):
+ self.partyStarted.emit(QTime.currentTime())
+
+ @Property(Person, notify=host_changed, final=True)
+ def host(self):
+ return self._host
+
+ @host.setter
+ def host(self, h):
+ if self._host != h:
+ self._host = h
+ self.host_changed.emit()
+
+ @Property(str, notify=announcement_changed, final=True)
+ def announcement(self):
+ return self._announcement
+
+ @announcement.setter
+ def announcement(self, a):
+ if self._announcement != a:
+ self._announcement = a
+ self.announcement_changed.emit()
+ print(a)
+
+ def guest(self, n):
+ return self._guests[n]
+
+ def guestCount(self):
+ return len(self._guests)
+
+ def appendGuest(self, guest):
+ self._guests.append(guest)
+ self.guests_changed.emit()
+
+ @staticmethod
+ def qmlAttachedProperties(self, o):
+ return BirthdayPartyAttached(o)
+
+ guests = ListProperty(Person, appendGuest, notify=guests_changed, final=True)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/doc/advanced6-Property-value-source.rst b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/doc/advanced6-Property-value-source.rst
new file mode 100644
index 000000000..4e1dc393a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/doc/advanced6-Property-value-source.rst
@@ -0,0 +1,43 @@
+.. _qml-advanced/advanced6-property-value-source:
+
+Extending QML (advanced) - Property Value Source
+================================================
+
+This is the last of a series of 6 examples forming a tutorial using the example
+of a birthday party to demonstrate some of the advanced features of QML.
+
+During the party the guests have to sing for the host. It would be handy if the
+program could display the lyrics customized for the occasion to help the
+guests. To this end, a property value source is used to generate the verses of
+the song over time.
+
+.. literalinclude:: happybirthdaysong.py
+ :lineno-start: 13
+ :lines: 13-49
+
+The class ``HappyBirthdaySong`` is added as a value source. It must inherit
+from ``QQmlPropertyValueSource`` and implement its interface. The
+``setTarget()`` function is used to define which property this source acts
+upon. In this case, the value source writes to the ``announcement`` property of
+the ``BirthdayParty`` to display the lyrics over time. It has an internal timer
+that causes the ``announcement`` property of the party to be set to the next
+line of the lyrics repeatedly.
+
+In QML, a ``HappyBirthdaySong`` is instantiated inside the ``BirthdayParty``.
+The ``on`` keyword in its signature is used to specify the property that the
+value source targets, in this case ``announcement``. The ``name`` property of
+the ``HappyBirthdaySong`` object is also bound to the name of the host of the
+party.
+
+.. literalinclude:: People/Main.qml
+ :lineno-start: 6
+ :lines: 6-7
+
+The program displays the time at which the party started using the
+``partyStarted`` signal and then prints the following happy birthday verses
+over and over::
+
+ Happy birthday to you,
+ Happy birthday to you,
+ Happy birthday dear Bob Jones,
+ Happy birthday to you!
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/happybirthdaysong.py b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/happybirthdaysong.py
new file mode 100644
index 000000000..c35f9bffa
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/happybirthdaysong.py
@@ -0,0 +1,49 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QTimer, Property, Signal, Slot
+from PySide6.QtQml import QmlElement, QPyQmlPropertyValueSource
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class HappyBirthdaySong(QPyQmlPropertyValueSource):
+ name_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.m_target = None
+ self.m_name = ""
+ self.m_line = -1
+ self.m_lyrics = []
+
+ self.m_timer = QTimer(self)
+ self.m_timer.timeout.connect(self.advance)
+ self.m_timer.start(1000)
+
+ def setTarget(self, property):
+ self.m_target = property
+
+ @Property(str, notify=name_changed, final=True)
+ def name(self):
+ return self.m_name
+
+ @name.setter
+ def name(self, n):
+ if self.m_name != n:
+ self.m_name = n
+ self.m_lyrics = ["Happy birthday to you,",
+ "Happy birthday to you,",
+ f"Happy birthday dear {self.m_name},",
+ "Happy birthday to you!",
+ ""]
+
+ @Slot()
+ def advance(self):
+ self.m_line = (self.m_line + 1) % len(self.m_lyrics)
+ self.m_target.write(self.m_lyrics[self.m_line])
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/main.py b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/main.py
new file mode 100644
index 000000000..ea412a547
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/main.py
@@ -0,0 +1,53 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the
+ qml/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source example
+ from Qt v6.x"""
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtQml import QQmlComponent, QQmlEngine, qmlAttachedPropertiesObject
+
+from person import Boy, Girl # noqa: F401
+from birthdayparty import BirthdayParty
+from happybirthdaysong import HappyBirthdaySong # noqa: F401
+
+
+app = QCoreApplication(sys.argv)
+engine = QQmlEngine()
+engine.addImportPath(Path(__file__).parent)
+component = QQmlComponent(engine)
+component.loadFromModule("People", "Main")
+party = component.create()
+if not party:
+ print(component.errors())
+ del engine
+ sys.exit(-1)
+host = party.host
+print(f"{host.name} is having a birthday!")
+if isinstance(host, Boy):
+ print("He is inviting:")
+else:
+ print("She is inviting:")
+for g in range(party.guestCount()):
+ guest = party.guest(g)
+ name = guest.name
+
+ rsvp_date = None
+ attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False)
+ if attached:
+ rsvp_date = attached.rsvp.toString()
+ if rsvp_date:
+ print(f" {name} RSVP date: {rsvp_date}")
+ else:
+ print(f" {name} RSVP date: Hasn't RSVP'd")
+
+party.startParty()
+
+r = app.exec()
+
+del engine
+sys.exit(r)
diff --git a/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/person.py b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/person.py
new file mode 100644
index 000000000..503aaf65e
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/advanced6-Property-value-source/person.py
@@ -0,0 +1,51 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtQml import QmlAnonymous, QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlAnonymous
+class Person(QObject):
+ name_changed = Signal()
+ shoe_size_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._name = ''
+ self._shoe_size = 0
+
+ @Property(str, notify=name_changed, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, n):
+ if self._name != n:
+ self._name = n
+ self.name_changed.emit()
+
+ @Property(int, notify=shoe_size_changed, final=True)
+ def shoe_size(self):
+ return self._shoe_size
+
+ @shoe_size.setter
+ def shoe_size(self, s):
+ self._shoe_size = s
+
+
+@QmlElement
+class Boy(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+
+@QmlElement
+class Girl(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
diff --git a/examples/qml/tutorials/extending-qml-advanced/binding/People/Main.qml b/examples/qml/tutorials/extending-qml-advanced/binding/People/Main.qml
new file mode 100644
index 000000000..75add22af
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/binding/People/Main.qml
@@ -0,0 +1,29 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import People
+
+BirthdayParty {
+ id: theParty
+
+ HappyBirthdaySong on announcement { name: theParty.host.name }
+
+ onPartyStarted: (time) => { console.log("This party started rockin' at " + time); }
+
+ host: Boy {
+ name: "Bob Jones"
+ shoe_size: 12
+ }
+
+ Boy {
+ name: "Leo Hodges"
+ BirthdayParty.rsvp: "2009-07-06"
+ }
+ Boy {
+ name: "Jack Smith"
+ }
+ Girl {
+ name: "Anne Brown"
+ BirthdayParty.rsvp: "2009-07-01"
+ }
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/binding/People/qmldir b/examples/qml/tutorials/extending-qml-advanced/binding/People/qmldir
new file mode 100644
index 000000000..a2bd9515a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/binding/People/qmldir
@@ -0,0 +1,3 @@
+module People
+typeinfo coercion.qmltypes
+Main 1.0 Main.qml
diff --git a/examples/qml/tutorials/extending-qml-advanced/binding/binding.pyproject b/examples/qml/tutorials/extending-qml-advanced/binding/binding.pyproject
new file mode 100644
index 000000000..fe2980fa9
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/binding/binding.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "birthdayparty.py", "happybirthdaysong.py", "person.py",
+ "People/Main.qml", "People/qmldir"]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/binding/birthdayparty.py b/examples/qml/tutorials/extending-qml-advanced/binding/birthdayparty.py
new file mode 100644
index 000000000..a337d4a16
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/binding/birthdayparty.py
@@ -0,0 +1,83 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QDate, QObject, ClassInfo, Property, QTime, Signal
+from PySide6.QtQml import QmlAnonymous, QmlAttached, QmlElement, ListProperty
+
+from person import Person
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlAnonymous
+class BirthdayPartyAttached(QObject):
+
+ rsvp_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._rsvp = QDate()
+
+ @Property(QDate, notify=rsvp_changed)
+ def rsvp(self):
+ return self._rsvp
+
+ @rsvp.setter
+ def rsvp(self, d):
+ if self._rsvp != d:
+ self._rsvp = d
+ self.rsvp_changed.emit()
+
+
+@QmlElement
+@ClassInfo(DefaultProperty="guests")
+@QmlAttached(BirthdayPartyAttached)
+class BirthdayParty(QObject):
+
+ partyStarted = Signal(QTime)
+ host_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._host = None
+ self._guests = []
+
+ def startParty(self):
+ self.partyStarted.emit(QTime.currentTime())
+
+ @Property(Person, notify=host_changed)
+ def host(self):
+ return self._host
+
+ @host.setter
+ def host(self, h):
+ if self._host != h:
+ self._host = h
+ self.host_changed.emit()
+
+ @Property(str)
+ def announcement(self):
+ return ""
+
+ @announcement.setter
+ def announcement(self, a):
+ print(a)
+
+ def guest(self, n):
+ return self._guests[n]
+
+ def guestCount(self):
+ return len(self._guests)
+
+ def appendGuest(self, guest):
+ self._guests.append(guest)
+
+ @staticmethod
+ def qmlAttachedProperties(self, o):
+ return BirthdayPartyAttached(o)
+
+ guests = ListProperty(Person, appendGuest)
diff --git a/examples/qml/tutorials/extending-qml-advanced/binding/doc/binding.rst b/examples/qml/tutorials/extending-qml-advanced/binding/doc/binding.rst
new file mode 100644
index 000000000..5c0ed21be
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/binding/doc/binding.rst
@@ -0,0 +1,17 @@
+.. _qml-binding-example:
+
+Extending QML - Binding Example
+===============================
+
+This example builds on the :ref:`qml-adding-types-example`,
+the :ref:`qml-attached-properties-example`,
+the :ref:`qml-default-property-example`,
+the :ref:`qml-inheritance-and-coercion-example`
+the :ref:`qml-object-and-list-property-types-example`
+and the :ref:`qml-valuesource-example`.
+
+Running the Example
+-------------------
+
+The ``main.py`` file in the example includes a simple shell application that
+loads and runs the QML snippet shown below.
diff --git a/examples/qml/tutorials/extending-qml-advanced/binding/happybirthdaysong.py b/examples/qml/tutorials/extending-qml-advanced/binding/happybirthdaysong.py
new file mode 100644
index 000000000..59ebfe4c6
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/binding/happybirthdaysong.py
@@ -0,0 +1,47 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QTimer, Property, Slot
+from PySide6.QtQml import QmlElement, QPyQmlPropertyValueSource
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class HappyBirthdaySong(QPyQmlPropertyValueSource):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.m_target = None
+ self.m_name = ""
+ self.m_line = -1
+ self.m_lyrics = []
+
+ self.m_timer = QTimer(self)
+ self.m_timer.timeout.connect(self.advance)
+ self.m_timer.start(1000)
+
+ def setTarget(self, property):
+ self.m_target = property
+
+ @Property(str)
+ def name(self):
+ return self.m_name
+
+ @name.setter
+ def name(self, n):
+ self.m_name = n
+ self.m_lyrics = ["Happy birthday to you,",
+ "Happy birthday to you,",
+ f"Happy birthday dear {self.m_name},",
+ "Happy birthday to you!",
+ ""]
+
+ @Slot()
+ def advance(self):
+ self.m_line = (self.m_line + 1) % len(self.m_lyrics)
+ self.m_target.write(self.m_lyrics[self.m_line])
diff --git a/examples/qml/tutorials/extending-qml-advanced/binding/main.py b/examples/qml/tutorials/extending-qml-advanced/binding/main.py
new file mode 100644
index 000000000..64929a807
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/binding/main.py
@@ -0,0 +1,52 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the qml/examples/qml/referenceexamples/binding example from Qt v6.x"""
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtQml import QQmlComponent, QQmlEngine, qmlAttachedPropertiesObject
+
+from person import Boy, Girl # noqa: F401
+from birthdayparty import BirthdayParty # noqa: F401
+from happybirthdaysong import HappyBirthdaySong # noqa: F401
+
+
+if __name__ == "__main__":
+ app = QCoreApplication(sys.argv)
+ engine = QQmlEngine()
+ engine.addImportPath(Path(__file__).parent)
+ component = QQmlComponent(engine)
+ component.loadFromModule("People", "Main")
+ party = component.create()
+ if not party:
+ print(component.errors())
+ del engine
+ sys.exit(-1)
+ host = party.host
+ print(f"{host.name} is having a birthday!")
+ if isinstance(host, Boy):
+ print("He is inviting:")
+ else:
+ print("She is inviting:")
+ for g in range(party.guestCount()):
+ guest = party.guest(g)
+ name = guest.name
+
+ rsvp_date = None
+ attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False)
+ if attached:
+ rsvp_date = attached.rsvp.toString()
+ if rsvp_date:
+ print(f" {name} RSVP date: {rsvp_date}")
+ else:
+ print(f" {name} RSVP date: Hasn't RSVP'd")
+
+ party.startParty()
+
+ r = app.exec()
+
+ del engine
+ sys.exit(r)
diff --git a/examples/qml/tutorials/extending-qml-advanced/binding/person.py b/examples/qml/tutorials/extending-qml-advanced/binding/person.py
new file mode 100644
index 000000000..a6942763a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/binding/person.py
@@ -0,0 +1,53 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Signal
+from PySide6.QtQml import QmlAnonymous, QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlAnonymous
+class Person(QObject):
+ name_changed = Signal()
+ shoe_size_changed = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._name = ''
+ self._shoe_size = 0
+
+ @Property(str, notify=name_changed)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, n):
+ if self._name != n:
+ self._name = n
+ self.name_changed.emit()
+
+ @Property(int, notify=shoe_size_changed)
+ def shoe_size(self):
+ return self._shoe_size
+
+ @shoe_size.setter
+ def shoe_size(self, s):
+ if self._shoe_size != s:
+ self._shoe_size = s
+ self.shoe_size_changed.emit()
+
+
+@QmlElement
+class Boy(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+
+@QmlElement
+class Girl(Person):
+ def __init__(self, parent=None):
+ super().__init__(parent)
diff --git a/examples/qml/tutorials/extending-qml-advanced/extended/doc/extended.rst b/examples/qml/tutorials/extending-qml-advanced/extended/doc/extended.rst
new file mode 100644
index 000000000..745960535
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/extended/doc/extended.rst
@@ -0,0 +1,41 @@
+.. _qml-extension-objects-example:
+
+Extending QML - Extension Objects Example
+=========================================
+
+This example builds on the the :ref:`qml-adding-types-example`.
+
+Shows how to use QmlExtended decorator to provide an extension object to a
+QLineEdit without modifying or subclassing it.
+
+Firstly, the LineEditExtension class is registered with the QML system as an
+extension of QLineEdit. We declare a foreign type to do this as we cannot
+modify Qt's internal QLineEdit class.
+
+.. code-block:: python
+
+ @QmlNamedElement("QLineEdit")
+ @QmlExtended(LineEditExtension)
+ @QmlForeign(QLineEdit)
+ class LineEditForeign(QObject):
+
+
+Note the usage of ``QmlNamedElement()`` instead of ``QmlElement()``.
+``QmlElement()`` uses the name of the containing type by default,
+``LineEditExtension`` in this case. As the class being an extension class is
+an implementation detail, we choose the more natural name ``QLineEdit``
+instead.
+
+The QML engine then instantiates a QLineEdit.
+
+In QML, a property is set on the line edit that only exists in the
+``LineEditExtension`` class:
+
+.. code-block:: javascript
+
+ QLineEdit {
+ left_margin: 20
+ }
+
+The extension type performs calls on the ``QLineEdit`` that otherwise will not
+be accessible to the QML engine.
diff --git a/examples/qml/tutorials/extending-qml-advanced/extended/example.qml b/examples/qml/tutorials/extending-qml-advanced/extended/example.qml
new file mode 100644
index 000000000..e4af3bec5
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/extended/example.qml
@@ -0,0 +1,8 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import examples.extend 1.0
+
+QLineEdit {
+ left_margin: 20
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/extended/extended.pyproject b/examples/qml/tutorials/extending-qml-advanced/extended/extended.pyproject
new file mode 100644
index 000000000..127a3a76a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/extended/extended.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "example.qml"]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/extended/main.py b/examples/qml/tutorials/extending-qml-advanced/extended/main.py
new file mode 100644
index 000000000..6ee386401
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/extended/main.py
@@ -0,0 +1,95 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the qml/examples/qml/referenceexamples/extended example from Qt v6.x"""
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QObject, QUrl, Property
+from PySide6.QtWidgets import QApplication, QLineEdit
+from PySide6.QtQml import (QQmlComponent, QQmlEngine, QmlForeign, QmlExtended,
+ QmlNamedElement)
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "examples.extend"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+class LineEditExtension(QObject):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._line_edit = parent
+
+ @Property(int)
+ def left_margin(self):
+ return self._line_edit.textMargins().left()
+
+ @left_margin.setter
+ def left_margin(self, m):
+ margins = self._line_edit.textMargins()
+ margins.setLeft(m)
+ self._line_edit.setTextMargins(margins)
+
+ @Property(int)
+ def right_margin(self):
+ return self._line_edit.textMargins().right()
+
+ @right_margin.setter
+ def right_margin(self, m):
+ margins = self._line_edit.textMargins()
+ margins.setRight(m)
+ self._line_edit.setTextMargins(margins)
+
+ @Property(int)
+ def top_margin(self):
+ return self._line_edit.textMargins().top()
+
+ @top_margin.setter
+ def top_margin(self, m):
+ margins = self._line_edit.textMargins()
+ margins.setTop(m)
+ self._line_edit.setTextMargins(margins)
+
+ @Property(int)
+ def bottom_margin(self):
+ return self._line_edit.textMargins().bottom()
+
+ @bottom_margin.setter
+ def bottom_margin(self, m):
+ margins = self._line_edit.textMargins()
+ margins.setBottom(m)
+ self._line_edit.setTextMargins(margins)
+
+
+@QmlNamedElement("QLineEdit")
+@QmlExtended(LineEditExtension)
+@QmlForeign(QLineEdit)
+class LineEditForeign(QObject):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ qml_file = Path(__file__).parent / "example.qml"
+ url = QUrl.fromLocalFile(qml_file)
+ engine = QQmlEngine()
+ component = QQmlComponent(engine, url)
+ widget = component.create()
+ if not widget:
+ print(component.errors())
+ del engine
+ sys.exit(-1)
+
+ widget.show()
+ r = app.exec()
+ # Deleting the engine before it goes out of scope is required to make sure
+ # all child QML instances are destroyed in the correct order.
+ del engine
+ sys.exit(r)
diff --git a/examples/qml/tutorials/extending-qml-advanced/methods/People/Main.qml b/examples/qml/tutorials/extending-qml-advanced/methods/People/Main.qml
new file mode 100644
index 000000000..69b2119ab
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/methods/People/Main.qml
@@ -0,0 +1,19 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import People
+
+BirthdayParty {
+ host: Person {
+ name: "Bob Jones"
+ shoe_size: 12
+ }
+ guests: [
+ Person { name: "Leo Hodges" },
+ Person { name: "Jack Smith" },
+ Person { name: "Anne Brown" }
+ ]
+
+ Component.onCompleted: invite("William Green")
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/methods/People/qmldir b/examples/qml/tutorials/extending-qml-advanced/methods/People/qmldir
new file mode 100644
index 000000000..a2bd9515a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/methods/People/qmldir
@@ -0,0 +1,3 @@
+module People
+typeinfo coercion.qmltypes
+Main 1.0 Main.qml
diff --git a/examples/qml/tutorials/extending-qml-advanced/methods/birthdayparty.py b/examples/qml/tutorials/extending-qml-advanced/methods/birthdayparty.py
new file mode 100644
index 000000000..a3942b671
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/methods/birthdayparty.py
@@ -0,0 +1,47 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property, Slot
+from PySide6.QtQml import QmlElement, ListProperty
+
+from person import Person
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class BirthdayParty(QObject):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._host = None
+ self._guests = []
+
+ @Property(Person)
+ def host(self):
+ return self._host
+
+ @host.setter
+ def host(self, h):
+ self._host = h
+
+ def guest(self, n):
+ return self._guests[n]
+
+ def guestCount(self):
+ return len(self._guests)
+
+ def appendGuest(self, guest):
+ self._guests.append(guest)
+
+ @Slot(str)
+ def invite(self, name):
+ guest = Person(self)
+ guest.name = name
+ self.appendGuest(guest)
+
+ guests = ListProperty(Person, appendGuest)
diff --git a/examples/qml/tutorials/extending-qml-advanced/methods/doc/methods.rst b/examples/qml/tutorials/extending-qml-advanced/methods/doc/methods.rst
new file mode 100644
index 000000000..bda2ede5a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/methods/doc/methods.rst
@@ -0,0 +1,15 @@
+.. _qml-methods-example:
+
+Extending QML - Methods Example
+===============================
+
+This example builds on the :ref:`qml-adding-types-example`,
+the :ref:`qml-object-and-list-property-types-example` and
+the :ref:`qml-inheritance-and-coercion-example`.
+
+The Methods Example has an additional method in the ``BirthdayParty`` class:
+``invite()``. ``invite()`` is decorated with ``@Slot`` so that it can be
+called from QML.
+
+In ``example.qml``, the ``invite()`` method is called
+in the ``QtQml.Component.completed()`` signal handler.
diff --git a/examples/qml/tutorials/extending-qml-advanced/methods/main.py b/examples/qml/tutorials/extending-qml-advanced/methods/main.py
new file mode 100644
index 000000000..fb656f266
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/methods/main.py
@@ -0,0 +1,32 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the qml/examples/qml/referenceexamples/methods example from Qt v6.x"""
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtQml import QQmlComponent, QQmlEngine
+
+from person import Person # noqa: F401
+from birthdayparty import BirthdayParty # noqa: F401
+
+
+app = QCoreApplication(sys.argv)
+engine = QQmlEngine()
+engine.addImportPath(Path(__file__).parent)
+component = QQmlComponent(engine)
+component.loadFromModule("People", "Main")
+party = component.create()
+if not party:
+ print(component.errors())
+ del engine
+ sys.exit(-1)
+host = party.host
+print(f"{host.name} is having a birthday!\nThey are inviting:")
+for g in range(party.guestCount()):
+ name = party.guest(g).name
+ print(f" {name}")
+del engine
+sys.exit(0)
diff --git a/examples/qml/tutorials/extending-qml-advanced/methods/methods.pyproject b/examples/qml/tutorials/extending-qml-advanced/methods/methods.pyproject
new file mode 100644
index 000000000..09942ebcc
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/methods/methods.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "birthdayparty.py", "person.py",
+ "People/Main.qml", "People/qmldir"]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/methods/person.py b/examples/qml/tutorials/extending-qml-advanced/methods/person.py
new file mode 100644
index 000000000..526eae714
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/methods/person.py
@@ -0,0 +1,34 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property
+from PySide6.QtQml import QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class Person(QObject):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._name = ''
+ self._shoe_size = 0
+
+ @Property(str)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, n):
+ self._name = n
+
+ @Property(int)
+ def shoe_size(self):
+ return self._shoe_size
+
+ @shoe_size.setter
+ def shoe_size(self, s):
+ self._shoe_size = s
diff --git a/examples/qml/tutorials/extending-qml-advanced/properties/People/Main.qml b/examples/qml/tutorials/extending-qml-advanced/properties/People/Main.qml
new file mode 100644
index 000000000..0600b3557
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/properties/People/Main.qml
@@ -0,0 +1,16 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import People
+
+BirthdayParty {
+ host: Person {
+ name: "Bob Jones"
+ shoe_size: 12
+ }
+ guests: [
+ Person { name: "Leo Hodges" },
+ Person { name: "Jack Smith" },
+ Person { name: "Anne Brown" }
+ ]
+}
diff --git a/examples/qml/tutorials/extending-qml-advanced/properties/People/qmldir b/examples/qml/tutorials/extending-qml-advanced/properties/People/qmldir
new file mode 100644
index 000000000..a2bd9515a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/properties/People/qmldir
@@ -0,0 +1,3 @@
+module People
+typeinfo coercion.qmltypes
+Main 1.0 Main.qml
diff --git a/examples/qml/tutorials/extending-qml-advanced/properties/birthdayparty.py b/examples/qml/tutorials/extending-qml-advanced/properties/birthdayparty.py
new file mode 100644
index 000000000..47dddc85d
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/properties/birthdayparty.py
@@ -0,0 +1,41 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property
+from PySide6.QtQml import QmlElement, ListProperty
+
+from person import Person
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class BirthdayParty(QObject):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._host = None
+ self._guests = []
+
+ @Property(Person)
+ def host(self):
+ return self._host
+
+ @host.setter
+ def host(self, h):
+ self._host = h
+
+ def guest(self, n):
+ return self._guests[n]
+
+ def guestCount(self):
+ return len(self._guests)
+
+ def appendGuest(self, guest):
+ self._guests.append(guest)
+
+ guests = ListProperty(Person, appendGuest)
diff --git a/examples/qml/tutorials/extending-qml-advanced/properties/doc/properties.rst b/examples/qml/tutorials/extending-qml-advanced/properties/doc/properties.rst
new file mode 100644
index 000000000..9337ad2ab
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/properties/doc/properties.rst
@@ -0,0 +1,89 @@
+.. _qml-object-and-list-property-types-example:
+
+Extending QML - Object and List Property Types Example
+======================================================
+
+Exporting C++ Properties.
+
+This example builds on :ref:`qml-adding-types-example`.
+
+The Object and List Property Types example shows how to add object and list
+properties in QML. This example adds a BirthdayParty type that specifies a
+birthday party, consisting of a celebrant and a list of guests. People are
+specified using the People QML type built in the previous example.
+
+import examples.properties.people
+
+.. code-block:: javascript
+
+ BirthdayParty {
+ host: Person {
+ name: "Bob Jones"
+ shoe_size: 12
+ }
+ guests: [
+ Person { name: "Leo Hodges" },
+ Person { name: "Jack Smith" },
+ Person { name: "Anne Brown" }
+ ]
+ }
+
+Declare the BirthdayParty
+-------------------------
+
+The BirthdayParty class is declared like this:
+
+.. code-block:: python
+
+ from person import Person
+
+
+ # To be used on the @QmlElement decorator
+ # (QML_IMPORT_MINOR_VERSION is optional)
+ QML_IMPORT_NAME = "People"
+ QML_IMPORT_MAJOR_VERSION = 1
+
+
+ @QmlElement
+ class BirthdayParty(QObject):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._host = None
+ self._guests = []
+
+ @Property(Person)
+ def host(self):
+ return self._host
+
+ @host.setter
+ def host(self, h):
+ self._host = h
+
+ def guest(self, n):
+ return self._guests[n]
+
+ def guestCount(self):
+ return len(self._guests)
+
+ def appendGuest(self, guest):
+ self._guests.append(guest)
+
+ guests = ListProperty(Person, appendGuest)
+
+The class contains a member to store the celebrant object, and also a
+list member storing the Person instances.
+
+In QML, the type of a list properties - and the guests property is a list of
+people - are all of type ListProperty. ListProperty is simple value
+type that contains a set of functions. QML calls these functions
+whenever it needs to read from, write to or otherwise interact with
+the list. In addition to concrete lists like the people list used in this
+example, the use of QQmlListProperty allows for "virtual lists" and other advanced
+scenarios.
+
+Running the Example
+-------------------
+
+The main.py file in the example includes a simple shell application that
+loads and runs the QML snippet shown at the beginning of this page.
diff --git a/examples/qml/tutorials/extending-qml-advanced/properties/main.py b/examples/qml/tutorials/extending-qml-advanced/properties/main.py
new file mode 100644
index 000000000..11757d5f3
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/properties/main.py
@@ -0,0 +1,34 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the qml/examples/qml/referenceexamples/properties example from Qt v6.x"""
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtQml import QQmlComponent, QQmlEngine
+
+from person import Person # noqa: F401
+from birthdayparty import BirthdayParty # noqa: F401
+
+
+if __name__ == '__main__':
+ app = QCoreApplication(sys.argv)
+
+ engine = QQmlEngine()
+ engine.addImportPath(Path(__file__).parent)
+ component = QQmlComponent(engine)
+ component.loadFromModule("People", "Main")
+
+ party = component.create()
+ if party:
+ print(f"{party.host} is having a birthday!\nThey are inviting:")
+ for g in range(party.guestCount()):
+ name = party.guest(g).name
+ print(f" {name}")
+ else:
+ print(component.errors())
+
+ del engine
+ sys.exit(0)
diff --git a/examples/qml/tutorials/extending-qml-advanced/properties/person.py b/examples/qml/tutorials/extending-qml-advanced/properties/person.py
new file mode 100644
index 000000000..526eae714
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/properties/person.py
@@ -0,0 +1,34 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QObject, Property
+from PySide6.QtQml import QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "People"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class Person(QObject):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._name = ''
+ self._shoe_size = 0
+
+ @Property(str)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, n):
+ self._name = n
+
+ @Property(int)
+ def shoe_size(self):
+ return self._shoe_size
+
+ @shoe_size.setter
+ def shoe_size(self, s):
+ self._shoe_size = s
diff --git a/examples/qml/tutorials/extending-qml-advanced/properties/properties.pyproject b/examples/qml/tutorials/extending-qml-advanced/properties/properties.pyproject
new file mode 100644
index 000000000..adb34b2d0
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml-advanced/properties/properties.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "person.py", "birthdayparty.py",
+ "People/Main.qml", "People/qmldir"]
+}
diff --git a/examples/qml/tutorials/extending-qml/chapter1-basics/app.qml b/examples/qml/tutorials/extending-qml/chapter1-basics/app.qml
new file mode 100644
index 000000000..6feef5633
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter1-basics/app.qml
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import Charts
+import QtQuick
+
+Item {
+ width: 300; height: 200
+
+ PieChart {
+ id: aPieChart
+ anchors.centerIn: parent
+ width: 100; height: 100
+ name: "A simple pie chart"
+ color: "red"
+ }
+
+ Text {
+ anchors {
+ bottom: parent.bottom;
+ horizontalCenter: parent.horizontalCenter;
+ bottomMargin: 20
+ }
+ text: aPieChart.name
+ }
+}
diff --git a/examples/qml/tutorials/extending-qml/chapter1-basics/basics.py b/examples/qml/tutorials/extending-qml/chapter1-basics/basics.py
new file mode 100644
index 000000000..47d0a0e0c
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter1-basics/basics.py
@@ -0,0 +1,68 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the qml/tutorials/extending-qml/chapter1-basics example from Qt v5.x"""
+
+import os
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import Property, Signal, QUrl
+from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
+from PySide6.QtQml import QmlElement
+from PySide6.QtQuick import QQuickPaintedItem, QQuickView
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "Charts"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class PieChart (QQuickPaintedItem):
+
+ nameChanged = Signal()
+
+ def __init__(self, parent=None):
+ QQuickPaintedItem.__init__(self, parent)
+ self._name = u''
+ self._color = QColor()
+
+ def paint(self, painter):
+ pen = QPen(self.color, 2)
+ painter.setPen(pen)
+ painter.setRenderHints(QPainter.Antialiasing, True)
+ painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
+
+ @Property(QColor, final=True)
+ def color(self):
+ return self._color
+
+ @color.setter
+ def color(self, value):
+ self._color = value
+
+ @Property(str, notify=nameChanged, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, value):
+ self._name = value
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+
+ view = QQuickView()
+ view.setResizeMode(QQuickView.SizeRootObjectToView)
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+ view.show()
+ res = app.exec()
+ # Deleting the view before it goes out of scope is required to make sure all child QML instances
+ # are destroyed in the correct order.
+ del view
+ sys.exit(res)
diff --git a/examples/declarative/extending/chapter1-basics/chapter1-basics.pyproject b/examples/qml/tutorials/extending-qml/chapter1-basics/chapter1-basics.pyproject
index 869556bb8..869556bb8 100644
--- a/examples/declarative/extending/chapter1-basics/chapter1-basics.pyproject
+++ b/examples/qml/tutorials/extending-qml/chapter1-basics/chapter1-basics.pyproject
diff --git a/examples/qml/tutorials/extending-qml/chapter1-basics/doc/chapter1-basics.rst b/examples/qml/tutorials/extending-qml/chapter1-basics/doc/chapter1-basics.rst
new file mode 100644
index 000000000..38233aae2
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter1-basics/doc/chapter1-basics.rst
@@ -0,0 +1,107 @@
+.. _qml-chapter1-basics:
+
+Extending QML - Creating a New Type
+===================================
+
+This is the first of a series of 6 examples forming a tutorial
+about extending QML with Python.
+
+The Qt QML module provides a set of APIs for extending QML through Python
+extensions. You can write extensions to add your own QML types, extend existing
+Qt types, or call Python functions that are not accessible from ordinary QML
+code.
+
+This tutorial shows how to write a QML extension using Python that includes
+core QML features, including properties, signals and bindings. It also shows
+how extensions can be deployed through plugins.
+
+A common task when extending QML is to provide a new QML type that supports
+some custom functionality beyond what is provided by the built-in Qt Quick
+types. For example, this could be done to implement particular data models, or
+provide types with custom painting and drawing capabilities, or access system
+features like network programming that are not accessible through built-in QML
+features.
+
+In this tutorial, we will show how to use the C++ classes in the Qt Quick
+module to extend QML. The end result will be a simple Pie Chart display
+implemented by several custom QML types connected together through QML features
+like bindings and signals, and made available to the QML runtime through a
+plugin.
+
+To begin with, let's create a new QML type called ``PieChart`` that has two
+properties: a name and a color. We will make it available in an importable type
+namespace called ``Charts``, with a version of 1.0.
+
+We want this ``PieChart`` type to be usable from QML like this:
+
+.. code-block:: javascript
+
+ import Charts 1.0
+
+ PieChart {
+ width: 100; height: 100
+ name: "A simple pie chart"
+ color: "red"
+ }
+
+To do this, we need a C++ class that encapsulates this ``PieChart`` type and
+its two properties. Since QML makes extensive use of Qt's Meta-Object System
+this new class must:
+
+* Inherit from ``QObject``
+* Declare its properties using the ``Property`` decorator
+
+Class Implementation
+--------------------
+
+Here is our ``PieChart`` class, defined in ``basics.py``:
+
+.. literalinclude:: basics.py
+ :lineno-start: 21
+ :lines: 21-51
+
+The class inherits from ``QQuickPaintedItem`` because we want to override
+``QQuickPaintedItem.paint()`` to perform drawing operations with the
+``QPainter`` API. If the class just represented some data type and was not an
+item that actually needed to be displayed, it could simply inherit from
+``QObject``. Or, if we want to extend the functionality of an existing
+``QObject``-based class, it could inherit from that class instead.
+Alternatively, if we want to create a visual item that doesn't need to perform
+drawing operations with the ``QPainter`` API, we can just subclass
+``QQuickItem``.
+
+The ``PieChart`` class defines the two properties, ``name`` and ``color``, with
+the ``Property`` decorator, and overrides ``QQuickPaintedItem.paint()``. The
+``PieChart`` class is registered using the ``QmlElement`` decorator, to allow
+it to be used from QML. If you don't register the class, ``app.qml`` won't be
+able to create a ``PieChart``.
+
+QML Usage
+---------
+
+Now that we have defined the ``PieChart`` type, we will use it from QML. The
+``app.qml`` file creates a ``PieChart`` item and displays the pie chart's details
+using a standard QML ``Text`` item:
+
+.. literalinclude:: app.qml
+ :lineno-start: 7
+ :lines: 7-26
+
+Notice that although the color is specified as a string in QML, it is
+automatically converted to a ``QColor`` object for the PieChart ``color``
+property. Automatic conversions are provided for various other QML value types.
+For example, a string like "640x480" can be automatically converted to a
+``QSize`` value.
+
+We'll also create a main function that uses a ``QQuickView`` to run and display
+``app.qml``. Here is the application ``basics.py``:
+
+.. literalinclude:: basics.py
+ :lineno-start: 54
+ :lines: 54-68
+
+.. note:: You may see a warning `Expression ... depends on non-NOTIFYable properties:
+ PieChart.name`. This happens because we add a binding to the writable ``name``
+ property, but haven't yet defined a notify signal for it. The QML engine therefore
+ cannot update the binding if the ``name`` value changes. This is addressed in
+ the following chapters.
diff --git a/examples/qml/tutorials/extending-qml/chapter2-methods/app.qml b/examples/qml/tutorials/extending-qml/chapter2-methods/app.qml
new file mode 100644
index 000000000..d9477e253
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter2-methods/app.qml
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import Charts
+import QtQuick
+
+Item {
+ width: 300; height: 200
+
+ PieChart {
+ id: aPieChart
+ anchors.centerIn: parent
+ width: 100; height: 100
+ color: "red"
+
+ onChartCleared: console.log("The chart has been cleared")
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: aPieChart.clearChart()
+ }
+
+ Text {
+ anchors {
+ bottom: parent.bottom;
+ horizontalCenter: parent.horizontalCenter;
+ bottomMargin: 20
+ }
+ text: "Click anywhere to clear the chart"
+ }
+}
diff --git a/examples/declarative/extending/chapter2-methods/chapter2-methods.pyproject b/examples/qml/tutorials/extending-qml/chapter2-methods/chapter2-methods.pyproject
index cdf33be7f..cdf33be7f 100644
--- a/examples/declarative/extending/chapter2-methods/chapter2-methods.pyproject
+++ b/examples/qml/tutorials/extending-qml/chapter2-methods/chapter2-methods.pyproject
diff --git a/examples/qml/tutorials/extending-qml/chapter2-methods/doc/chapter2-methods.rst b/examples/qml/tutorials/extending-qml/chapter2-methods/doc/chapter2-methods.rst
new file mode 100644
index 000000000..245d0ddb2
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter2-methods/doc/chapter2-methods.rst
@@ -0,0 +1,36 @@
+.. _qml-chapter2-methods:
+
+Extending QML - Connecting to C++ Methods and Signals
+=====================================================
+
+This is the second of a series of 6 examples forming a tutorial about extending
+QML with Python.
+
+Suppose we want ``PieChart`` to have a ``clearChart()`` method that erases the
+chart and then emits a ``chartCleared`` signal. Our ``app.qml`` would be able
+to call ``clearChart()`` and receive ``chartCleared()`` signals like this:
+
+.. literalinclude:: app.qml
+ :lineno-start: 4
+ :lines: 4-32
+
+To do this, we add a ``clearChart()`` method and a ``chartCleared()`` signal
+to our C++ class:
+
+.. literalinclude:: methods.py
+ :lineno-start: 54
+ :lines: 54-58
+
+The use of the ``Slot`` decorator makes the ``clearChart()`` method available
+to the Qt Meta-Object system, and in turn, to QML. The method simply changes
+the color to ``Qt::transparent``, repaints the chart, then emits the
+``chartCleared()`` signal:
+
+.. literalinclude:: methods.py
+ :lineno-start: 21
+ :lines: 21-24
+
+Now when we run the application and click the window, the pie chart disappears,
+and the application outputs::
+
+ qml: The chart has been cleared
diff --git a/examples/qml/tutorials/extending-qml/chapter2-methods/methods.py b/examples/qml/tutorials/extending-qml/chapter2-methods/methods.py
new file mode 100644
index 000000000..d455c317b
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter2-methods/methods.py
@@ -0,0 +1,75 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the qml/tutorials/extending-qml/chapter2-methods example from Qt v5.x"""
+
+import os
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import Property, Signal, Slot, Qt, QUrl
+from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
+from PySide6.QtQml import QmlElement
+from PySide6.QtQuick import QQuickPaintedItem, QQuickView
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "Charts"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class PieChart(QQuickPaintedItem):
+
+ chartCleared = Signal()
+ nameChanged = Signal()
+
+ def __init__(self, parent=None):
+ QQuickPaintedItem.__init__(self, parent)
+ self._name = u''
+ self._color = QColor()
+
+ def paint(self, painter):
+ pen = QPen(self.color, 2)
+ painter.setPen(pen)
+ painter.setRenderHints(QPainter.Antialiasing, True)
+ painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
+
+ @Property(QColor, final=True)
+ def color(self):
+ return self._color
+
+ @color.setter
+ def color(self, value):
+ self._color = value
+
+ @Property(str, notify=nameChanged, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, value):
+ self._name = value
+
+ @Slot() # This should be something like @Invokable
+ def clearChart(self):
+ self.color = Qt.transparent
+ self.update()
+ self.chartCleared.emit()
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+
+ view = QQuickView()
+ view.setResizeMode(QQuickView.SizeRootObjectToView)
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+ view.show()
+ res = app.exec()
+ # Deleting the view before it goes out of scope is required to make sure all child QML instances
+ # are destroyed in the correct order.
+ del view
+ sys.exit(res)
diff --git a/examples/qml/tutorials/extending-qml/chapter3-bindings/app.qml b/examples/qml/tutorials/extending-qml/chapter3-bindings/app.qml
new file mode 100644
index 000000000..f1530516a
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter3-bindings/app.qml
@@ -0,0 +1,40 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import Charts
+import QtQuick
+
+Item {
+ width: 300; height: 200
+
+ Row {
+ anchors.centerIn: parent
+ spacing: 20
+
+ PieChart {
+ id: chartA
+ width: 100; height: 100
+ color: "red"
+ }
+
+ PieChart {
+ id: chartB
+ width: 100; height: 100
+ color: chartA.color
+ }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: { chartA.color = "blue" }
+ }
+
+ Text {
+ anchors {
+ bottom: parent.bottom;
+ horizontalCenter: parent.horizontalCenter;
+ bottomMargin: 20
+ }
+ text: "Click anywhere to change the chart color"
+ }
+}
diff --git a/examples/qml/tutorials/extending-qml/chapter3-bindings/bindings.py b/examples/qml/tutorials/extending-qml/chapter3-bindings/bindings.py
new file mode 100644
index 000000000..a9b61e7f1
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter3-bindings/bindings.py
@@ -0,0 +1,79 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the qml/tutorials/extending-qml/chapter3-bindings example from Qt v5.x"""
+
+import os
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import Property, Signal, Slot, QUrl, Qt
+from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
+from PySide6.QtQml import QmlElement
+from PySide6.QtQuick import QQuickPaintedItem, QQuickView
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "Charts"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class PieChart (QQuickPaintedItem):
+
+ chartCleared = Signal()
+ nameChanged = Signal()
+ colorChanged = Signal()
+
+ def __init__(self, parent=None):
+ QQuickPaintedItem.__init__(self, parent)
+ self._name = u''
+ self._color = QColor()
+
+ def paint(self, painter):
+ pen = QPen(self._color, 2)
+ painter.setPen(pen)
+ painter.setRenderHints(QPainter.Antialiasing, True)
+ painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
+
+ @Property(QColor, notify=colorChanged, final=True)
+ def color(self):
+ return self._color
+
+ @color.setter
+ def color(self, value):
+ if value != self._color:
+ self._color = value
+ self.update()
+ self.colorChanged.emit()
+
+ @Property(str, notify=nameChanged, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, value):
+ self._name = value
+
+ @Slot() # This should be something like @Invokable
+ def clearChart(self):
+ self.color = Qt.transparent
+ self.update()
+ self.chartCleared.emit()
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+
+ view = QQuickView()
+ view.setResizeMode(QQuickView.SizeRootObjectToView)
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+ view.show()
+ res = app.exec()
+ # Deleting the view before it goes out of scope is required to make sure all child QML instances
+ # are destroyed in the correct order.
+ del view
+ sys.exit(res)
diff --git a/examples/declarative/extending/chapter3-bindings/chapter3-bindings.pyproject b/examples/qml/tutorials/extending-qml/chapter3-bindings/chapter3-bindings.pyproject
index 6e21f86f9..6e21f86f9 100644
--- a/examples/declarative/extending/chapter3-bindings/chapter3-bindings.pyproject
+++ b/examples/qml/tutorials/extending-qml/chapter3-bindings/chapter3-bindings.pyproject
diff --git a/examples/qml/tutorials/extending-qml/chapter3-bindings/doc/chapter3-bindings.rst b/examples/qml/tutorials/extending-qml/chapter3-bindings/doc/chapter3-bindings.rst
new file mode 100644
index 000000000..3b7191191
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter3-bindings/doc/chapter3-bindings.rst
@@ -0,0 +1,54 @@
+.. _qml-chapter3-bindings:
+
+Extending QML - Adding Property Bindings
+========================================
+
+This is the third of a series of 6 examples forming a tutorial about extending
+QML with Python.
+
+Property binding is a powerful feature of QML that allows values of different
+types to be synchronized automatically. It uses signals to notify and update
+other types' values when property values are changed.
+
+Let's enable property bindings for the ``color`` property. That means if we
+have code like this:
+
+.. literalinclude:: app.qml
+ :lineno-start: 7
+ :lines: 7-40
+
+The ``color: chartA.color`` statement binds the ``color`` value of ``chartB``
+to the ``color`` of ``chartA.`` Whenever ``chartA`` 's ``color`` value changes,
+``chartB`` 's ``color`` value updates to the same value. When the window is
+clicked, the ``onClicked`` handler in the ``MouseArea`` changes the color of
+``chartA`` , thereby changing both charts to the color blue.
+
+It's easy to enable property binding for the ``color`` property. We add a
+``notify`` parameter to its ``Property`` decorator to indicate that a
+``colorChanged`` signal is emitted whenever the value changes.
+
+.. literalinclude:: bindings.py
+ :lineno-start: 39
+ :lines: 39-39
+
+.. literalinclude:: bindings.py
+ :lineno-start: 21
+ :lines: 21-26
+
+Then, we emit this signal in ``setColor()``:
+
+.. literalinclude:: bindings.py
+ :lineno-start: 43
+ :lines: 43-48
+
+It's important for ``setColor()`` to check that the color value has actually
+changed before emitting ``colorChanged().`` This ensures the signal is not
+emitted unnecessarily and also prevents loops when other types respond to the
+value change.
+
+The use of bindings is essential to QML. You should always add ``notify``
+signals for properties if they are able to be implemented, so that your
+properties can be used in bindings. Properties that cannot be bound cannot be
+automatically updated and cannot be used as flexibly in QML. Also, since
+bindings are invoked so often and relied upon in QML usage, users of your
+custom QML types may see unexpected behavior if bindings are not implemented.
diff --git a/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/app.qml b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/app.qml
new file mode 100644
index 000000000..a5c5ff9fa
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/app.qml
@@ -0,0 +1,22 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import Charts
+import QtQuick
+
+Item {
+ width: 300; height: 200
+
+ PieChart {
+ id: chart
+ anchors.centerIn: parent
+ width: 100; height: 100
+
+ pieSlice: PieSlice {
+ anchors.fill: parent
+ color: "red"
+ }
+ }
+
+ Component.onCompleted: console.log("The pie is colored " + chart.pieSlice.color)
+}
diff --git a/examples/declarative/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject
index af1cfefb7..af1cfefb7 100644
--- a/examples/declarative/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject
+++ b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject
diff --git a/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/customPropertyTypes.py b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/customPropertyTypes.py
new file mode 100644
index 000000000..659850f38
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/customPropertyTypes.py
@@ -0,0 +1,83 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the qml/tutorials/extending-qml/chapter4-customPropertyTypes example
+ from Qt v5.x"""
+
+import os
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import Property, QUrl
+from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
+from PySide6.QtQml import QmlElement
+from PySide6.QtQuick import QQuickPaintedItem, QQuickView, QQuickItem
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "Charts"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class PieSlice (QQuickPaintedItem):
+
+ def __init__(self, parent=None):
+ QQuickPaintedItem.__init__(self, parent)
+ self._color = QColor()
+
+ @Property(QColor, final=True)
+ def color(self):
+ return self._color
+
+ @color.setter
+ def color(self, value):
+ self._color = value
+
+ def paint(self, painter):
+ pen = QPen(self._color, 2)
+ painter.setPen(pen)
+ painter.setRenderHints(QPainter.Antialiasing, True)
+ painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
+
+
+@QmlElement
+class PieChart (QQuickItem):
+ def __init__(self, parent=None):
+ QQuickItem.__init__(self, parent)
+ self._name = None
+ self._pieSlice = None
+
+ @Property(str, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, value):
+ self._name = value
+
+ @Property(PieSlice, final=True)
+ def pieSlice(self):
+ return self._pieSlice
+
+ @pieSlice.setter
+ def pieSlice(self, value):
+ self._pieSlice = value
+ self._pieSlice.setParentItem(self)
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+
+ view = QQuickView()
+ view.setResizeMode(QQuickView.SizeRootObjectToView)
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+ view.show()
+ res = app.exec()
+ # Deleting the view before it goes out of scope is required to make sure all child QML instances
+ # are destroyed in the correct order.
+ del view
+ sys.exit(res)
diff --git a/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/doc/chapter4-customPropertyTypes.rst b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/doc/chapter4-customPropertyTypes.rst
new file mode 100644
index 000000000..f7c3efb11
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter4-customPropertyTypes/doc/chapter4-customPropertyTypes.rst
@@ -0,0 +1,73 @@
+.. _qml-chapter4-custompropertytypes:
+
+Extending QML - Using Custom Property Types
+===========================================
+
+This is the fourth of a series of 6 examples forming a tutorial about extending
+QML with Python.
+
+The ``PieChart`` type currently has a string-type property and a color-type property.
+It could have many other types of properties. For example, it could have an
+int-type property to store an identifier for each chart:
+
+.. code-block:: python
+
+ class PieChart(QQuickPaintedItem):
+ chartIdChanged = Signal()
+
+ @Property(int, notify=chartIdChanged)
+ def chartId(self):
+ pass
+
+ @chartId.setter
+ def setChartId(self, chartId):
+ pass
+
+.. code-block:: javascript
+
+ // QML
+ PieChart {
+ ...
+ chartId: 100
+ }
+
+Aside from ``int``, we could use various other property types. Many of the Qt
+data types such as ``QColor``, ``QSize`` and ``QRect`` are automatically
+supported from QML.
+
+If we want to create a property whose type is not supported by QML by default,
+we need to register the type with the QML engine.
+
+For example, let's replace the use of the ``property`` with a type called
+``PieSlice`` that has a ``color`` property. Instead of assigning a color,
+we assign an ``PieSlice`` value which itself contains a ``color``:
+
+.. literalinclude:: app.qml
+ :lineno-start: 4
+ :lines: 4-22
+
+Like ``PieChart``, this new ``PieSlice`` type inherits from
+``QQuickPaintedItem``, is exposed via the ``QmlElement`` decorator and declares
+its properties with the ``Property`` decorator:
+
+.. literalinclude:: customPropertyTypes.py
+ :lineno-start: 21
+ :lines: 21-40
+
+To use it in ``PieChart``, we modify the ``color`` property declaration
+and associated method signatures:
+
+.. literalinclude:: customPropertyTypes.py
+ :lineno-start: 58
+ :lines: 58-65
+
+There is one thing to be aware of when implementing ``setPieSlice()``. The
+``PieSlice`` is a visual item, so it must be set as a child of the ``PieChart``
+using ``QQuickItem.setParentItem()`` so that the ``PieChart`` knows to paint
+this child item when its contents are drawn.
+
+As with ``PieChart``, we add the ``Charts`` type namespace, version 1.0:
+
+.. literalinclude:: customPropertyTypes.py
+ :lineno-start: 15
+ :lines: 15-18
diff --git a/examples/qml/tutorials/extending-qml/chapter5-listproperties/app.qml b/examples/qml/tutorials/extending-qml/chapter5-listproperties/app.qml
new file mode 100644
index 000000000..ac99d5a40
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter5-listproperties/app.qml
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import Charts
+import QtQuick
+
+Item {
+ width: 300; height: 200
+
+ PieChart {
+ anchors.centerIn: parent
+ width: 100; height: 100
+
+ slices: [
+ PieSlice {
+ anchors.fill: parent
+ color: "red"
+ fromAngle: 0; angleSpan: 110
+ },
+ PieSlice {
+ anchors.fill: parent
+ color: "black"
+ fromAngle: 110; angleSpan: 50
+ },
+ PieSlice {
+ anchors.fill: parent
+ color: "blue"
+ fromAngle: 160; angleSpan: 100
+ }
+ ]
+ }
+}
diff --git a/examples/declarative/extending/chapter5-listproperties/chapter5-listproperties.pyproject b/examples/qml/tutorials/extending-qml/chapter5-listproperties/chapter5-listproperties.pyproject
index a3f89d575..a3f89d575 100644
--- a/examples/declarative/extending/chapter5-listproperties/chapter5-listproperties.pyproject
+++ b/examples/qml/tutorials/extending-qml/chapter5-listproperties/chapter5-listproperties.pyproject
diff --git a/examples/qml/tutorials/extending-qml/chapter5-listproperties/doc/chapter5-listproperties.rst b/examples/qml/tutorials/extending-qml/chapter5-listproperties/doc/chapter5-listproperties.rst
new file mode 100644
index 000000000..90cb41107
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter5-listproperties/doc/chapter5-listproperties.rst
@@ -0,0 +1,46 @@
+.. _qml-chapter5-listproperties:
+
+Extending QML - Using List Property Types
+=========================================
+
+This is the fifth of a series of 6 examples forming a tutorial about extending
+QML with Python.
+
+Right now, a ``PieChart`` can only have one ``PieSlice.`` Ideally a chart would
+have multiple slices, with different colors and sizes. To do this, we could
+have a ``slices`` property that accepts a list of ``PieSlice`` items:
+
+.. literalinclude:: app.qml
+ :lineno-start: 4
+ :lines: 4-32
+
+To do this, we replace the ``pieSlice`` property in ``PieChart`` with a
+``slices`` property, declared as a class variable of the ``QQmlListProperty``
+type. The ``QQmlListProperty`` class enables the creation of list properties in
+QML extensions. We replace the ``pieSlice()`` function with a ``slices()``
+function that returns a list of slices, and add an internal ``appendSlice()``
+function (discussed below). We also use a list to store the internal list of
+slices as ``_slices``:
+
+.. literalinclude:: listproperties.py
+ :lineno-start: 62
+ :lines: 62-65
+
+.. literalinclude:: listproperties.py
+ :lineno-start: 75
+ :lines: 75-79
+
+Although the ``slices`` property does not have an associated setter, it is
+still modifiable because of the way ``QQmlListProperty`` works. We indicate
+that the internal ``PieChart.appendSlice()`` function is to be called whenever
+a request is made from QML to add items to the list.
+
+The ``appendSlice()`` function simply sets the parent item as before, and adds
+the new item to the ``_slices`` list. As you can see, the append function for
+a ``QQmlListProperty`` is called with two arguments: the list property, and the
+item that is to be appended.
+
+The ``PieSlice`` class has also been modified to include ``fromAngle`` and
+``angleSpan`` properties and to draw the slice according to these values. This
+is a straightforward modification if you have read the previous pages in this
+tutorial, so the code is not shown here.
diff --git a/examples/qml/tutorials/extending-qml/chapter5-listproperties/listproperties.py b/examples/qml/tutorials/extending-qml/chapter5-listproperties/listproperties.py
new file mode 100644
index 000000000..98952cef1
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter5-listproperties/listproperties.py
@@ -0,0 +1,97 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the qml/tutorials/extending-qml/chapter5-listproperties example from Qt v5.x"""
+
+import os
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import Property, QUrl
+from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
+from PySide6.QtQml import QmlElement, ListProperty
+from PySide6.QtQuick import QQuickPaintedItem, QQuickView, QQuickItem
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "Charts"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class PieSlice (QQuickPaintedItem):
+ def __init__(self, parent=None):
+ QQuickPaintedItem.__init__(self, parent)
+ self._color = QColor()
+ self._fromAngle = 0
+ self._angleSpan = 0
+
+ @Property(QColor, final=True)
+ def color(self):
+ return self._color
+
+ @color.setter
+ def color(self, value):
+ self._color = value
+
+ @Property(int, final=True)
+ def fromAngle(self):
+ return self._angle
+
+ @fromAngle.setter
+ def fromAngle(self, value):
+ self._fromAngle = value
+
+ @Property(int, final=True)
+ def angleSpan(self):
+ return self._angleSpan
+
+ @angleSpan.setter
+ def angleSpan(self, value):
+ self._angleSpan = value
+
+ def paint(self, painter):
+ pen = QPen(self._color, 2)
+ painter.setPen(pen)
+ painter.setRenderHints(QPainter.Antialiasing, True)
+ painter.drawPie(
+ self.boundingRect().adjusted(1, 1, -1, -1), self._fromAngle * 16, self._angleSpan * 16)
+
+
+@QmlElement
+class PieChart (QQuickItem):
+ def __init__(self, parent=None):
+ QQuickItem.__init__(self, parent)
+ self._name = u''
+ self._slices = []
+
+ @Property(str, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, value):
+ self._name = value
+
+ def appendSlice(self, _slice):
+ _slice.setParentItem(self)
+ self._slices.append(_slice)
+
+ slices = ListProperty(PieSlice, appendSlice, final=True)
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+
+ view = QQuickView()
+ view.setResizeMode(QQuickView.SizeRootObjectToView)
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+ view.show()
+ res = app.exec()
+ # Deleting the view before it goes out of scope is required to make sure all child QML instances
+ # are destroyed in the correct order.
+ del view
+ sys.exit(res)
diff --git a/examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/piechart.py b/examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/piechart.py
new file mode 100644
index 000000000..3ab8bcc08
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/piechart.py
@@ -0,0 +1,41 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Property
+from PySide6.QtQml import QmlElement, ListProperty
+from PySide6.QtQuick import QQuickItem
+
+from pieslice import PieSlice
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "Charts"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class PieChart(QQuickItem):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._slices = []
+ self._name = ''
+
+ @Property(str, final=True)
+ def name(self):
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ self._name = name
+
+ def slice(self, n):
+ return self._slices[n]
+
+ def sliceCount(self):
+ return len(self._slices)
+
+ def append_and_setparent(self, slice):
+ self._slices.append(slice)
+ slice.setParentItem(self)
+
+ slices = ListProperty(PieSlice, append_and_setparent)
diff --git a/examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/pieslice.py b/examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/pieslice.py
new file mode 100644
index 000000000..6f82f1f10
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/pieslice.py
@@ -0,0 +1,53 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Property, QRectF
+from PySide6.QtGui import QColor, QPainter, QPen
+from PySide6.QtQuick import QQuickPaintedItem
+from PySide6.QtQml import QmlElement
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "Charts"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class PieSlice(QQuickPaintedItem):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self._color = QColor()
+ self._from_angle = 0
+ self._angle_span = 0
+
+ @Property(QColor, final=True)
+ def color(self):
+ return self._color
+
+ @color.setter
+ def color(self, color):
+ self._color = QColor(color)
+
+ @Property(int, final=True)
+ def fromAngle(self):
+ return self._from_angle
+
+ @fromAngle.setter
+ def fromAngle(self, fromAngle):
+ self._from_angle = fromAngle
+
+ @Property(int, final=True)
+ def angleSpan(self):
+ return self._angle_span
+
+ @angleSpan.setter
+ def angleSpan(self, angleSpan):
+ self._angle_span = angleSpan
+
+ def paint(self, painter):
+ painter.setPen(QPen(self._color, 2))
+ painter.setRenderHint(QPainter.RenderHint.Antialiasing, True)
+
+ rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1)
+ painter.drawPie(rect, self._from_angle * 16, self._angle_span * 16)
diff --git a/examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/plugins.png b/examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/plugins.png
new file mode 100644
index 000000000..8992e89c0
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter6-plugins/Charts/plugins.png
Binary files differ
diff --git a/examples/qml/tutorials/extending-qml/chapter6-plugins/app.qml b/examples/qml/tutorials/extending-qml/chapter6-plugins/app.qml
new file mode 100644
index 000000000..1a4772e15
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter6-plugins/app.qml
@@ -0,0 +1,32 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import Charts 1.0
+
+Item {
+ width: 300; height: 200
+
+ PieChart {
+ anchors.centerIn: parent
+ width: 100; height: 100
+
+ slices: [
+ PieSlice {
+ anchors.fill: parent
+ color: "red"
+ fromAngle: 0; angleSpan: 110
+ },
+ PieSlice {
+ anchors.fill: parent
+ color: "black"
+ fromAngle: 110; angleSpan: 50
+ },
+ PieSlice {
+ anchors.fill: parent
+ color: "blue"
+ fromAngle: 160; angleSpan: 100
+ }
+ ]
+ }
+}
diff --git a/examples/qml/tutorials/extending-qml/chapter6-plugins/chapter6-plugins.pyproject b/examples/qml/tutorials/extending-qml/chapter6-plugins/chapter6-plugins.pyproject
new file mode 100644
index 000000000..cc684401f
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter6-plugins/chapter6-plugins.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["app.qml", "Charts/piechart.py", "Charts/pieslice.py"]
+}
diff --git a/examples/qml/tutorials/extending-qml/chapter6-plugins/doc/chapter6-plugins.rst b/examples/qml/tutorials/extending-qml/chapter6-plugins/doc/chapter6-plugins.rst
new file mode 100644
index 000000000..a9d100812
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter6-plugins/doc/chapter6-plugins.rst
@@ -0,0 +1,26 @@
+.. _qml-chapter6-plugins-example:
+
+Extending QML - Plugins Example
+===============================
+
+This is the last of a series of 6 examples forming a tutorial
+about extending QML with Python.
+
+This example refers to the Python version of using a QML plugin in Python. The
+idea of plugins in Python is non-existent because Python modules are
+dynamically loaded anyway. We use this idea and our QML type registration
+decorators - ``QmlELement``/``QmlNamedElement`` - to register the QML modules as they
+are imported. The ``pyside6-qml`` tool does this for you by simply pointing to the
+``.qml`` file.
+
+.. image:: plugins.png
+ :width: 400
+ :alt: Plugins Example
+
+
+Running the Example
+-------------------
+
+.. code-block:: shell
+
+ pyside6-qml examples/qml/tutorials/extending-qml/chapter6-plugins/app.qml -I examples/qml/tutorials/extending-qml/chapter6-plugins/Charts
diff --git a/examples/qml/tutorials/extending-qml/chapter6-plugins/doc/plugins.png b/examples/qml/tutorials/extending-qml/chapter6-plugins/doc/plugins.png
new file mode 100644
index 000000000..8992e89c0
--- /dev/null
+++ b/examples/qml/tutorials/extending-qml/chapter6-plugins/doc/plugins.png
Binary files differ
diff --git a/examples/declarative/usingmodel/doc/usingmodel.png b/examples/qml/usingmodel/doc/usingmodel.png
index b4240951b..b4240951b 100644
--- a/examples/declarative/usingmodel/doc/usingmodel.png
+++ b/examples/qml/usingmodel/doc/usingmodel.png
Binary files differ
diff --git a/examples/qml/usingmodel/doc/usingmodel.rst b/examples/qml/usingmodel/doc/usingmodel.rst
new file mode 100644
index 000000000..06a1b27b0
--- /dev/null
+++ b/examples/qml/usingmodel/doc/usingmodel.rst
@@ -0,0 +1,11 @@
+Using Model Example
+===================
+
+.. tags:: Android
+
+A Python application that demonstrates how to use a :ref:`QAbstractListModel`
+with QML.
+
+.. image:: usingmodel.png
+ :width: 400
+ :alt: Using Model Screenshot
diff --git a/examples/qml/usingmodel/usingmodel.py b/examples/qml/usingmodel/usingmodel.py
new file mode 100644
index 000000000..008a1b94b
--- /dev/null
+++ b/examples/qml/usingmodel/usingmodel.py
@@ -0,0 +1,74 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from dataclasses import dataclass
+from pathlib import Path
+import sys
+from PySide6.QtCore import QAbstractListModel, Qt, QUrl, QByteArray
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView
+from PySide6.QtQml import QmlElement, QmlSingleton
+
+
+QML_IMPORT_NAME = "PersonModel"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@dataclass
+class Person:
+ name: str
+ myrole: str
+
+
+@QmlElement
+@QmlSingleton
+class PersonModel (QAbstractListModel):
+ MyRole = Qt.UserRole + 1
+
+ def __init__(self, data, parent=None):
+ super().__init__(parent)
+ self._data = data
+
+ def roleNames(self):
+ roles = {
+ PersonModel.MyRole: QByteArray(b'myrole'),
+ Qt.DisplayRole: QByteArray(b'display')
+ }
+ return roles
+
+ def rowCount(self, index):
+ return len(self._data)
+
+ def data(self, index, role):
+ d = self._data[index.row()]
+ if role == Qt.DisplayRole:
+ return d.name
+ if role == Qt.DecorationRole:
+ return Qt.black
+ if role == PersonModel.MyRole:
+ return d.myrole
+ return None
+
+ @staticmethod
+ def create(engine):
+ data = [Person('Qt', 'myrole'), Person('PySide', 'role2')]
+ return PersonModel(data)
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ view = QQuickView()
+ view.setResizeMode(QQuickView.SizeRootObjectToView)
+
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+ view.show()
+
+ r = app.exec()
+ # Deleting the view before it goes out of scope is required to make sure all child QML instances
+ # are destroyed in the correct order.
+ del view
+ sys.exit(r)
diff --git a/examples/declarative/usingmodel/usingmodel.pyproject b/examples/qml/usingmodel/usingmodel.pyproject
index 600cdb409..600cdb409 100644
--- a/examples/declarative/usingmodel/usingmodel.pyproject
+++ b/examples/qml/usingmodel/usingmodel.pyproject
diff --git a/examples/qml/usingmodel/view.qml b/examples/qml/usingmodel/view.qml
new file mode 100644
index 000000000..e8b1fb2fb
--- /dev/null
+++ b/examples/qml/usingmodel/view.qml
@@ -0,0 +1,21 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import PersonModel
+
+ListView {
+ width: 100
+ height: 100
+ anchors.fill: parent
+ model: PersonModel
+ delegate: Component {
+ Rectangle {
+ height: 25
+ width: 100
+ Text {
+ text: display + ": " + myrole
+ }
+ }
+ }
+}
diff --git a/examples/quick/models/objectlistmodel/doc/objectlistmodel.png b/examples/quick/models/objectlistmodel/doc/objectlistmodel.png
new file mode 100644
index 000000000..416e08a85
--- /dev/null
+++ b/examples/quick/models/objectlistmodel/doc/objectlistmodel.png
Binary files differ
diff --git a/examples/quick/models/objectlistmodel/doc/objectlistmodel.rst b/examples/quick/models/objectlistmodel/doc/objectlistmodel.rst
new file mode 100644
index 000000000..a4af62706
--- /dev/null
+++ b/examples/quick/models/objectlistmodel/doc/objectlistmodel.rst
@@ -0,0 +1,14 @@
+Object List Model Example
+=========================
+
+.. tags:: Android
+
+A list of QObject values can also be used as a model.
+A list[QObject,] provides the properties of the objects in the list as roles.
+
+The following application creates a DataObject class with Property values
+that will be accessible as named roles when a list[DataObject,] is exposed to QML:
+
+.. image:: objectlistmodel.png
+ :width: 400
+ :alt: Object List Model Screenshot
diff --git a/examples/quick/models/objectlistmodel/objectlistmodel.py b/examples/quick/models/objectlistmodel/objectlistmodel.py
new file mode 100644
index 000000000..968761e5c
--- /dev/null
+++ b/examples/quick/models/objectlistmodel/objectlistmodel.py
@@ -0,0 +1,61 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from pathlib import Path
+import sys
+from PySide6.QtCore import QObject, QUrl, Property, Signal
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView
+
+# This example illustrates exposing a list of QObjects as a model in QML
+
+
+class DataObject(QObject):
+
+ nameChanged = Signal()
+ colorChanged = Signal()
+
+ def __init__(self, name, color, parent=None):
+ super().__init__(parent)
+ self._name = name
+ self._color = color
+
+ def name(self):
+ return self._name
+
+ def setName(self, name):
+ if name != self._name:
+ self._name = name
+ self.nameChanged.emit()
+
+ def color(self):
+ return self._color
+
+ def setColor(self, color):
+ if color != self._color:
+ self._color = color
+ self.colorChanged.emit()
+
+ name = Property(str, name, setName, notify=nameChanged)
+ color = Property(str, color, setColor, notify=colorChanged)
+
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+
+ dataList = [DataObject("Item 1", "red"),
+ DataObject("Item 2", "green"),
+ DataObject("Item 3", "blue"),
+ DataObject("Item 4", "yellow")]
+
+ view = QQuickView()
+ view.setResizeMode(QQuickView.SizeRootObjectToView)
+ view.setInitialProperties({"model": dataList})
+
+ qml_file = Path(__file__).parent / "view.qml"
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ view.show()
+
+ r = app.exec()
+ del view
+ sys.exit(r)
diff --git a/examples/quick/models/objectlistmodel/objectlistmodel.pyproject b/examples/quick/models/objectlistmodel/objectlistmodel.pyproject
new file mode 100644
index 000000000..556e399f4
--- /dev/null
+++ b/examples/quick/models/objectlistmodel/objectlistmodel.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["objectlistmodel.py", "view.qml"]
+}
diff --git a/examples/quick/models/objectlistmodel/view.qml b/examples/quick/models/objectlistmodel/view.qml
new file mode 100644
index 000000000..b7cf68a9b
--- /dev/null
+++ b/examples/quick/models/objectlistmodel/view.qml
@@ -0,0 +1,15 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+ListView {
+ width: 100; height: 100
+
+ delegate: Rectangle {
+ color: model.modelData.color
+ height: 25
+ width: 100
+ Text { text: model.modelData.name }
+ }
+}
diff --git a/examples/quick/models/stringlistmodel/doc/stringlistmodel.png b/examples/quick/models/stringlistmodel/doc/stringlistmodel.png
new file mode 100644
index 000000000..eeb9b518a
--- /dev/null
+++ b/examples/quick/models/stringlistmodel/doc/stringlistmodel.png
Binary files differ
diff --git a/examples/quick/models/stringlistmodel/doc/stringlistmodel.rst b/examples/quick/models/stringlistmodel/doc/stringlistmodel.rst
new file mode 100644
index 000000000..ce11674b4
--- /dev/null
+++ b/examples/quick/models/stringlistmodel/doc/stringlistmodel.rst
@@ -0,0 +1,11 @@
+String List Model Example
+=========================
+
+.. tags:: Android
+
+A model may be a simple 'list',
+which provides the contents of the list via the modelData role.
+
+.. image:: stringlistmodel.png
+ :width: 400
+ :alt: String List Model Screenshot
diff --git a/examples/quick/models/stringlistmodel/stringlistmodel.py b/examples/quick/models/stringlistmodel/stringlistmodel.py
new file mode 100644
index 000000000..3982b1ffc
--- /dev/null
+++ b/examples/quick/models/stringlistmodel/stringlistmodel.py
@@ -0,0 +1,26 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from pathlib import Path
+import sys
+from PySide6.QtCore import QUrl
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView
+
+# This example illustrates exposing a QStringList as a model in QML
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+
+ dataList = ["Item 1", "Item 2", "Item 3", "Item 4"]
+
+ view = QQuickView()
+ view.setInitialProperties({"model": dataList})
+
+ qml_file = Path(__file__).parent / "view.qml"
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ view.show()
+
+ r = app.exec()
+ del view
+ sys.exit(r)
diff --git a/examples/quick/models/stringlistmodel/stringlistmodel.pyproject b/examples/quick/models/stringlistmodel/stringlistmodel.pyproject
new file mode 100644
index 000000000..5ec3e85d1
--- /dev/null
+++ b/examples/quick/models/stringlistmodel/stringlistmodel.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["stringlistmodel.py", "view.qml"]
+}
diff --git a/examples/quick/models/stringlistmodel/view.qml b/examples/quick/models/stringlistmodel/view.qml
new file mode 100644
index 000000000..5db5576f4
--- /dev/null
+++ b/examples/quick/models/stringlistmodel/view.qml
@@ -0,0 +1,17 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+ListView {
+ width: 100
+ height: 100
+ required model
+
+ delegate: Rectangle {
+ required property string modelData
+ height: 25
+ width: 100
+ Text { text: parent.modelData }
+ }
+}
diff --git a/examples/quick/painteditem/doc/painteditem.rst b/examples/quick/painteditem/doc/painteditem.rst
index 6f12355ca..5c3e8935b 100644
--- a/examples/quick/painteditem/doc/painteditem.rst
+++ b/examples/quick/painteditem/doc/painteditem.rst
@@ -1,6 +1,8 @@
Scene Graph Painted Item Example
================================
+.. tags:: Android
+
Shows how to implement QPainter-based custom scenegraph items.
The Painted Item example shows how to use the QML Scene Graph framework to
diff --git a/examples/quick/painteditem/main.qml b/examples/quick/painteditem/main.qml
index d3404cad6..44be89dc3 100644
--- a/examples/quick/painteditem/main.qml
+++ b/examples/quick/painteditem/main.qml
@@ -1,45 +1,8 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-import QtQuick 2.0
-import TextBalloonPlugin 1.0
+import QtQuick
+import TextBalloonPlugin
Item {
height: 480
@@ -62,7 +25,7 @@ Item {
anchors.top: parent.top
id: balloonView
delegate: TextBalloon {
- anchors.right: index % 2 == 0 ? undefined : parent.right
+ anchors.right: index % 2 == 0 ? undefined : balloonView.contentItem.right
height: 60
rightAligned: index % 2 == 0 ? false : true
width: balloonWidth
diff --git a/examples/quick/painteditem/painteditem.py b/examples/quick/painteditem/painteditem.py
index ff744063a..cf5a05ada 100644
--- a/examples/quick/painteditem/painteditem.py
+++ b/examples/quick/painteditem/painteditem.py
@@ -1,52 +1,22 @@
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+from argparse import ArgumentParser, RawTextHelpFormatter
+from pathlib import Path
import sys
from PySide6.QtGui import QPainter, QBrush, QColor
from PySide6.QtWidgets import QApplication
-from PySide6.QtQml import qmlRegisterType
+from PySide6.QtQml import QmlElement, QQmlDebuggingEnabler
from PySide6.QtCore import QUrl, Property, Signal, Qt, QPointF
from PySide6.QtQuick import QQuickPaintedItem, QQuickView
+QML_IMPORT_NAME = "TextBalloonPlugin"
+QML_IMPORT_MAJOR_VERSION = 1
+QML_IMPORT_MINOR_VERSION = 0 # Optional
+
+@QmlElement
class TextBalloon(QQuickPaintedItem):
rightAlignedChanged = Signal()
@@ -60,7 +30,7 @@ class TextBalloon(QQuickPaintedItem):
return self._rightAligned
@rightAligned.setter
- def rightAlignedSet(self, value):
+ def rightAligned(self, value):
self._rightAligned = value
self.rightAlignedChanged.emit()
@@ -93,11 +63,18 @@ class TextBalloon(QQuickPaintedItem):
if __name__ == "__main__":
+ argument_parser = ArgumentParser(description="Scene Graph Painted Item Example",
+ formatter_class=RawTextHelpFormatter)
+ argument_parser.add_argument("-qmljsdebugger", action="store",
+ help="Enable QML debugging")
+ options = argument_parser.parse_args()
+ if options.qmljsdebugger:
+ QQmlDebuggingEnabler.enableDebugging(True)
app = QApplication(sys.argv)
view = QQuickView()
view.setResizeMode(QQuickView.SizeRootObjectToView)
- qmlRegisterType(TextBalloon, "TextBalloonPlugin", 1, 0, "TextBalloon")
- view.setSource(QUrl.fromLocalFile("main.qml"))
+ qml_file = Path(__file__).parent / "main.qml"
+ view.setSource(QUrl.fromLocalFile(qml_file))
if view.status() == QQuickView.Error:
sys.exit(-1)
diff --git a/examples/quick/rendercontrol/rendercontrol_opengl/cuberenderer.py b/examples/quick/rendercontrol/rendercontrol_opengl/cuberenderer.py
new file mode 100644
index 000000000..69e7321f9
--- /dev/null
+++ b/examples/quick/rendercontrol/rendercontrol_opengl/cuberenderer.py
@@ -0,0 +1,183 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import ctypes
+import numpy
+from OpenGL.GL import (GL_COLOR_BUFFER_BIT, GL_CULL_FACE, GL_CW,
+ GL_DEPTH_BUFFER_BIT, GL_DEPTH_TEST, GL_FALSE, GL_FLOAT,
+ GL_TEXTURE_2D, GL_TRIANGLES)
+
+from PySide6.QtGui import QMatrix4x4, QOpenGLContext
+from PySide6.QtOpenGL import (QOpenGLBuffer, QOpenGLShader,
+ QOpenGLShaderProgram, QOpenGLVertexArrayObject)
+from shiboken6 import VoidPtr
+
+
+VERTEXSHADER_SOURCE = """attribute highp vec4 vertex;
+attribute lowp vec2 coord;
+varying lowp vec2 v_coord;
+uniform highp mat4 matrix;
+void main() {
+ v_coord = coord;
+ gl_Position = matrix * vertex;
+}
+"""
+
+
+FRAGMENTSHADER_SOURCE = """varying lowp vec2 v_coord;
+uniform sampler2D sampler;
+void main() {
+ gl_FragColor = vec4(texture2D(sampler, v_coord).rgb, 1.0);
+}
+"""
+
+
+FLOAT_SIZE = ctypes.sizeof(ctypes.c_float)
+
+
+VERTEXES = numpy.array([-0.5, 0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5,
+ 0.5, -0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
+ -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5,
+ 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5, -0.5, -0.5,
+
+ 0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5, 0.5, -0.5,
+ 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, -0.5, 0.5,
+ -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5,
+ -0.5, -0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5,
+
+ 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5,
+ -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5,
+ -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, 0.5, -0.5, -0.5,
+ 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, -0.5, 0.5],
+ dtype=numpy.float32)
+
+
+TEX_COORDS = numpy.array([0.0, 0.0, 1.0, 1.0, 1.0, 0.0,
+ 1.0, 1.0, 0.0, 0.0, 0.0, 1.0,
+ 1.0, 1.0, 1.0, 0.0, 0.0, 1.0,
+ 0.0, 0.0, 0.0, 1.0, 1.0, 0.0,
+
+ 1.0, 1.0, 1.0, 0.0, 0.0, 1.0,
+ 0.0, 0.0, 0.0, 1.0, 1.0, 0.0,
+ 0.0, 0.0, 1.0, 1.0, 1.0, 0.0,
+ 1.0, 1.0, 0.0, 0.0, 0.0, 1.0,
+
+ 0.0, 1.0, 1.0, 0.0, 1.0, 1.0,
+ 1.0, 0.0, 0.0, 1.0, 0.0, 0.0,
+ 1.0, 0.0, 1.0, 1.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0, 0.0, 1.0, 1.0], dtype=numpy.float32)
+
+
+class CubeRenderer():
+ def __init__(self, offscreenSurface):
+ self.m_angle = 0
+ self.m_offscreenSurface = offscreenSurface
+ self.m_context = None
+ self.m_program = None
+ self.m_vbo = None
+ self.m_vao = None
+ self.m_matrixLoc = 0
+ self.m_proj = QMatrix4x4()
+
+ def __del__(self):
+ # Use a temporary offscreen surface to do the cleanup. There may not
+ # be a native window surface available anymore at self stage.
+ self.m_context.makeCurrent(self.m_offscreenSurface)
+ del self.m_program
+ del self.m_vbo
+ del self.m_vao
+ self.m_context.doneCurrent()
+
+ def init(self, w, share):
+ self.m_context = QOpenGLContext()
+ self.m_context.setShareContext(share)
+ self.m_context.setFormat(w.requestedFormat())
+ self.m_context.create()
+ if not self.m_context.makeCurrent(w):
+ return
+
+ f = self.m_context.functions()
+ f.glClearColor(0.0, 0.1, 0.25, 1.0)
+ f.glViewport(0, 0, w.width() * w.devicePixelRatio(),
+ w.height() * w.devicePixelRatio())
+
+ self.m_program = QOpenGLShaderProgram()
+ self.m_program.addCacheableShaderFromSourceCode(QOpenGLShader.Vertex,
+ VERTEXSHADER_SOURCE)
+ self.m_program.addCacheableShaderFromSourceCode(QOpenGLShader.Fragment,
+ FRAGMENTSHADER_SOURCE)
+ self.m_program.bindAttributeLocation("vertex", 0)
+ self.m_program.bindAttributeLocation("coord", 1)
+ self.m_program.link()
+ self.m_matrixLoc = self.m_program.uniformLocation("matrix")
+
+ self.m_vao = QOpenGLVertexArrayObject()
+ self.m_vao.create()
+
+ self.m_vbo = QOpenGLBuffer()
+ self.m_vbo.create()
+ self.m_vbo.bind()
+
+ vertexCount = 36
+ self.m_vbo.allocate(FLOAT_SIZE * vertexCount * 5)
+ vertex_data = VERTEXES.tobytes()
+ tex_coord_data = TEX_COORDS.tobytes()
+ self.m_vbo.write(0, VoidPtr(vertex_data),
+ FLOAT_SIZE * vertexCount * 3)
+ self.m_vbo.write(FLOAT_SIZE * vertexCount * 3,
+ VoidPtr(tex_coord_data),
+ FLOAT_SIZE * vertexCount * 2)
+ self.m_vbo.release()
+
+ if self.m_vao.isCreated():
+ self.setupVertexAttribs()
+
+ def resize(self, w, h):
+ self.m_proj.setToIdentity()
+ self.m_proj.perspective(45, w / float(h), 0.01, 100.0)
+
+ def setupVertexAttribs(self):
+ self.m_vbo.bind()
+ self.m_program.enableAttributeArray(0)
+ self.m_program.enableAttributeArray(1)
+ f = self.m_context.functions()
+
+ null = VoidPtr(0)
+ pointer = VoidPtr(36 * 3 * FLOAT_SIZE)
+ f.glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, null)
+ f.glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, pointer)
+ self.m_vbo.release()
+
+ def render(self, w, share, texture):
+ if not self.m_context:
+ self.init(w, share)
+
+ if not self.m_context.makeCurrent(w):
+ return
+
+ f = self.m_context.functions()
+ f.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
+
+ if texture:
+ f.glBindTexture(GL_TEXTURE_2D, texture)
+ f.glFrontFace(GL_CW) # because our cube's vertex data is such
+ f.glEnable(GL_CULL_FACE)
+ f.glEnable(GL_DEPTH_TEST)
+
+ self.m_program.bind()
+ # If VAOs are not supported, set the vertex attributes every time.
+ if not self.m_vao.isCreated():
+ self.setupVertexAttribs()
+
+ m = QMatrix4x4()
+ m.translate(0, 0, -2)
+ m.rotate(90, 0, 0, 1)
+ m.rotate(self.m_angle, 0.5, 1, 0)
+ self.m_angle += 0.5
+
+ self.m_program.setUniformValue(self.m_matrixLoc, self.m_proj * m)
+
+ # Draw the cube.
+ f.glDrawArrays(GL_TRIANGLES, 0, 36)
+
+ self.m_context.swapBuffers(w)
diff --git a/examples/quick/rendercontrol/rendercontrol_opengl/demo.qml b/examples/quick/rendercontrol/rendercontrol_opengl/demo.qml
new file mode 100644
index 000000000..00f6a81e9
--- /dev/null
+++ b/examples/quick/rendercontrol/rendercontrol_opengl/demo.qml
@@ -0,0 +1,161 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Particles 2.0
+
+Rectangle {
+ id: root
+
+ gradient: Gradient {
+ GradientStop { position: 0; color: mouse.pressed ? "lightsteelblue" : "steelblue" }
+ GradientStop { position: 1; color: "black" }
+ }
+
+ Text {
+ anchors.centerIn: parent
+ text: "Qt Quick in a texture"
+ font.pointSize: 40
+ color: "white"
+
+ SequentialAnimation on rotation {
+ PauseAnimation { duration: 2500 }
+ NumberAnimation { from: 0; to: 360; duration: 5000; easing.type: Easing.InOutCubic }
+ loops: Animation.Infinite
+ }
+ }
+
+ ParticleSystem {
+ id: particles
+ anchors.fill: parent
+
+ ImageParticle {
+ id: smoke
+ system: particles
+ anchors.fill: parent
+ groups: ["A", "B"]
+ source: "qrc:///particleresources/glowdot.png"
+ colorVariation: 0
+ color: "#00111111"
+ }
+ ImageParticle {
+ id: flame
+ anchors.fill: parent
+ system: particles
+ groups: ["C", "D"]
+ source: "qrc:///particleresources/glowdot.png"
+ colorVariation: 0.1
+ color: "#00ff400f"
+ }
+
+ Emitter {
+ id: fire
+ system: particles
+ group: "C"
+
+ y: parent.height
+ width: parent.width
+
+ emitRate: 350
+ lifeSpan: 3500
+
+ acceleration: PointDirection { y: -17; xVariation: 3 }
+ velocity: PointDirection {xVariation: 3}
+
+ size: 24
+ sizeVariation: 8
+ endSize: 4
+ }
+
+ TrailEmitter {
+ id: fireSmoke
+ group: "B"
+ system: particles
+ follow: "C"
+ width: root.width
+ height: root.height - 68
+
+ emitRatePerParticle: 1
+ lifeSpan: 2000
+
+ velocity: PointDirection {y:-17*6; yVariation: -17; xVariation: 3}
+ acceleration: PointDirection {xVariation: 3}
+
+ size: 36
+ sizeVariation: 8
+ endSize: 16
+ }
+
+ TrailEmitter {
+ id: fireballFlame
+ anchors.fill: parent
+ system: particles
+ group: "D"
+ follow: "E"
+
+ emitRatePerParticle: 120
+ lifeSpan: 180
+ emitWidth: TrailEmitter.ParticleSize
+ emitHeight: TrailEmitter.ParticleSize
+ emitShape: EllipseShape{}
+
+ size: 16
+ sizeVariation: 4
+ endSize: 4
+ }
+
+ TrailEmitter {
+ id: fireballSmoke
+ anchors.fill: parent
+ system: particles
+ group: "A"
+ follow: "E"
+
+ emitRatePerParticle: 128
+ lifeSpan: 2400
+ emitWidth: TrailEmitter.ParticleSize
+ emitHeight: TrailEmitter.ParticleSize
+ emitShape: EllipseShape{}
+
+ velocity: PointDirection {yVariation: 16; xVariation: 16}
+ acceleration: PointDirection {y: -16}
+
+ size: 24
+ sizeVariation: 8
+ endSize: 8
+ }
+
+ Emitter {
+ id: balls
+ system: particles
+ group: "E"
+
+ y: parent.height
+ width: parent.width
+
+ emitRate: 2
+ lifeSpan: 7000
+
+ velocity: PointDirection {y:-17*4*2; xVariation: 6*6}
+ acceleration: PointDirection {y: 17*2; xVariation: 6*6}
+
+ size: 8
+ sizeVariation: 4
+ }
+
+ Turbulence { //A bit of turbulence makes the smoke look better
+ anchors.fill: parent
+ groups: ["A","B"]
+ strength: 32
+ system: particles
+ }
+ }
+
+ onWidthChanged: particles.reset()
+ onHeightChanged: particles.reset()
+
+ MouseArea {
+ id: mouse
+ anchors.fill: parent
+ }
+}
diff --git a/examples/quick/rendercontrol/rendercontrol_opengl/doc/rendercontrol_opengl.rst b/examples/quick/rendercontrol/rendercontrol_opengl/doc/rendercontrol_opengl.rst
new file mode 100644
index 000000000..f47567f52
--- /dev/null
+++ b/examples/quick/rendercontrol/rendercontrol_opengl/doc/rendercontrol_opengl.rst
@@ -0,0 +1,5 @@
+QQuickRenderControl OpenGL Example
+==================================
+
+The QQuickRenderControl OpenGL Example shows how to render a Qt Quick scene into a
+texture that is then used by a non-Quick based OpenGL renderer.
diff --git a/examples/quick/rendercontrol/rendercontrol_opengl/main.py b/examples/quick/rendercontrol/rendercontrol_opengl/main.py
new file mode 100644
index 000000000..ee885ae6d
--- /dev/null
+++ b/examples/quick/rendercontrol/rendercontrol_opengl/main.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickWindow, QSGRendererInterface
+
+from window_singlethreaded import WindowSingleThreaded
+
+
+if __name__ == "__main__":
+ app = QGuiApplication(sys.argv)
+ # only functional when Qt Quick is also using OpenGL
+ QQuickWindow.setGraphicsApi(QSGRendererInterface.OpenGLRhi)
+ window = WindowSingleThreaded()
+ window.resize(1024, 768)
+ window.show()
+ ex = app.exec()
+ del window
+ sys.exit(ex)
diff --git a/examples/quick/rendercontrol/rendercontrol_opengl/rendercontrol_opengl.pyproject b/examples/quick/rendercontrol/rendercontrol_opengl/rendercontrol_opengl.pyproject
new file mode 100644
index 000000000..b2e80ab23
--- /dev/null
+++ b/examples/quick/rendercontrol/rendercontrol_opengl/rendercontrol_opengl.pyproject
@@ -0,0 +1,6 @@
+{
+ "files": ["cuberenderer.py",
+ "main.py",
+ "window_singlethreaded.py",
+ "demo.qml"]
+}
diff --git a/examples/quick/rendercontrol/rendercontrol_opengl/window_singlethreaded.py b/examples/quick/rendercontrol/rendercontrol_opengl/window_singlethreaded.py
new file mode 100644
index 000000000..6f1e61f94
--- /dev/null
+++ b/examples/quick/rendercontrol/rendercontrol_opengl/window_singlethreaded.py
@@ -0,0 +1,272 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import numpy
+from pathlib import Path
+import weakref
+from OpenGL.GL import (GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER,
+ GL_NEAREST, GL_RGBA, GL_TEXTURE_2D, GL_UNSIGNED_BYTE)
+
+from PySide6.QtGui import (QMouseEvent, QOffscreenSurface,
+ QOpenGLContext, QSurface,
+ QSurfaceFormat, QWindow)
+from PySide6.QtOpenGL import QOpenGLFramebufferObject
+from PySide6.QtQml import QQmlComponent, QQmlEngine
+from PySide6.QtQuick import (QQuickGraphicsDevice,
+ QQuickRenderControl,
+ QQuickRenderTarget, QQuickWindow)
+from PySide6.QtCore import QCoreApplication, QTimer, QUrl, Slot
+from shiboken6 import VoidPtr
+
+from cuberenderer import CubeRenderer
+
+
+class RenderControl(QQuickRenderControl):
+ def __init__(self, window=None):
+ super().__init__()
+ self._window = window
+
+ def renderWindow(self, offset):
+ return self._window() # Dereference the weak reference
+
+
+class WindowSingleThreaded(QWindow):
+
+ def __init__(self):
+ super().__init__()
+ self.m_rootItem = None
+ self.m_device = None
+ self.m_texture_ids = numpy.array([0], dtype=numpy.uint32)
+
+ self.m_quickInitialized = False
+ self.m_quickReady = False
+ self.m_dpr = 0
+ self.m_status_conn_id = None
+ self.setSurfaceType(QSurface.OpenGLSurface)
+
+ format = QSurfaceFormat()
+ # Qt Quick may need a depth and stencil buffer. Always make sure these
+ # are available.
+ format.setDepthBufferSize(16)
+ format.setStencilBufferSize(8)
+ self.setFormat(format)
+
+ self.m_context = QOpenGLContext()
+ self.m_context.setFormat(format)
+ self.m_context.create()
+
+ self.m_offscreenSurface = QOffscreenSurface()
+ # Pass m_context.format(), not format. Format does not specify and
+ # color buffer sizes, while the context, that has just been created,
+ # reports a format that has these values filled in. Pass self to the
+ # offscreen surface to make sure it will be compatible with the
+ # context's configuration.
+ self.m_offscreenSurface.setFormat(self.m_context.format())
+ self.m_offscreenSurface.create()
+
+ self.m_cubeRenderer = CubeRenderer(self.m_offscreenSurface)
+
+ self.m_renderControl = RenderControl(weakref.ref(self))
+
+ # Create a QQuickWindow that is associated with out render control.
+ # Note that this window never gets created or shown, meaning that
+ # will never get an underlying native (platform) window.
+ self.m_quickWindow = QQuickWindow(self.m_renderControl)
+
+ # Create a QML engine.
+ self.m_qmlEngine = QQmlEngine()
+ if not self.m_qmlEngine.incubationController():
+ c = self.m_quickWindow.incubationController()
+ self.m_qmlEngine.setIncubationController(c)
+
+ # When Quick says there is a need to render, we will not render
+ # immediately. Instead, a timer with a small interval is used
+ # to get better performance.
+ self.m_updateTimer = QTimer()
+ self.m_updateTimer.setSingleShot(True)
+ self.m_updateTimer.setInterval(5)
+ self.m_updateTimer.timeout.connect(self.render)
+
+ # Now hook up the signals. For simplicy we don't differentiate between
+ # renderRequested (only render is needed, no sync) and sceneChanged
+ # (polish and sync is needed too).
+ self.m_quickWindow.sceneGraphInitialized.connect(self.createTexture)
+ self.m_quickWindow.sceneGraphInvalidated.connect(self.destroyTexture)
+ self.m_renderControl.renderRequested.connect(self.requestUpdate)
+ self.m_renderControl.sceneChanged.connect(self.requestUpdate)
+
+ # Just recreating the texture on resize is not sufficient, when moving
+ # between screens with different devicePixelRatio the QWindow size may
+ # remain the same but the texture dimension is to change regardless.
+ self.screenChanged.connect(self.handleScreenChange)
+
+ def __del__(self):
+ # Make sure the context is current while doing cleanup. Note that
+ # we use the offscreen surface here because passing 'self' at self
+ # point is not safe: the underlying platform window may already be
+ # destroyed. To avoid all the trouble, use another surface that is
+ # valid for sure.
+ self.m_context.makeCurrent(self.m_offscreenSurface)
+
+ del self.m_qmlComponent
+ del self.m_qmlEngine
+ del self.m_quickWindow
+ del self.m_renderControl
+
+ if self.texture_id():
+ self.m_context.functions().glDeleteTextures(1, self.m_texture_ids)
+
+ self.m_context.doneCurrent()
+
+ def texture_id(self):
+ return self.m_texture_ids[0]
+
+ def set_texture_id(self, texture_id):
+ self.m_texture_ids[0] = texture_id
+
+ @Slot()
+ def createTexture(self):
+ # The scene graph has been initialized. It is now time to create a
+ # texture and associate it with the QQuickWindow.
+ self.m_dpr = self.devicePixelRatio()
+ self.m_textureSize = self.size() * self.m_dpr
+ f = self.m_context.functions()
+ f.glGenTextures(1, self.m_texture_ids)
+ f.glBindTexture(GL_TEXTURE_2D, self.texture_id())
+
+ f.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
+ f.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
+ null = VoidPtr(0)
+ f.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, self.m_textureSize.width(),
+ self.m_textureSize.height(), 0,
+ GL_RGBA, GL_UNSIGNED_BYTE, null)
+ target = QQuickRenderTarget.fromOpenGLTexture(self.texture_id(),
+ self.m_textureSize)
+ self.m_quickWindow.setRenderTarget(target)
+
+ @Slot()
+ def destroyTexture(self):
+ self.m_context.functions().glDeleteTextures(1, self.m_texture_ids)
+ self.set_texture_id(0)
+
+ @Slot()
+ def render(self):
+ if not self.m_context.makeCurrent(self.m_offscreenSurface):
+ return
+
+ # Polish, synchronize and render the next frame (into our texture).
+ # In this example everything happens on the same thread and therefore
+ # all three steps are performed in succession from here. In a threaded
+ # setup the render() call would happen on a separate thread.
+ self.m_renderControl.beginFrame()
+ self.m_renderControl.polishItems()
+ self.m_renderControl.sync()
+ self.m_renderControl.render()
+ self.m_renderControl.endFrame()
+
+ QOpenGLFramebufferObject.bindDefault()
+ self.m_context.functions().glFlush()
+
+ self.m_quickReady = True
+
+ # Get something onto the screen.
+ texture_id = self.texture_id() if self.m_quickReady else 0
+ self.m_cubeRenderer.render(self, self.m_context, texture_id)
+
+ def requestUpdate(self):
+ if not self.m_updateTimer.isActive():
+ self.m_updateTimer.start()
+
+ def run(self):
+ if self.m_status_conn_id:
+ self.m_qmlComponent.statusChanged.disconnect(self.m_status_conn_id)
+ self.m_status_conn_id = None
+
+ if self.m_qmlComponent.isError():
+ for error in self.m_qmlComponent.errors():
+ print(error.url().toString(), error.line(), error.toString())
+ return
+
+ self.m_rootItem = self.m_qmlComponent.create()
+ if self.m_qmlComponent.isError():
+ for error in self.m_qmlComponent.errors():
+ print(error.url().toString(), error.line(), error.toString())
+ return
+
+ if not self.m_rootItem:
+ print("run: Not a QQuickItem")
+ del self.m_rootItem
+
+ # The root item is ready. Associate it with the window.
+ self.m_rootItem.setParentItem(self.m_quickWindow.contentItem())
+
+ # Update item and rendering related geometries.
+ self.updateSizes()
+
+ # Initialize the render control and our OpenGL resources.
+ self.m_context.makeCurrent(self.m_offscreenSurface)
+ self.m_device = QQuickGraphicsDevice.fromOpenGLContext(self.m_context)
+ self.m_quickWindow.setGraphicsDevice(self.m_device)
+ self.m_renderControl.initialize()
+ self.m_quickInitialized = True
+
+ def updateSizes(self):
+ # Behave like SizeRootObjectToView.
+ w = self.width()
+ h = self.height()
+ self.m_rootItem.setWidth(w)
+ self.m_rootItem.setHeight(h)
+ self.m_quickWindow.setGeometry(0, 0, w, h)
+ self.m_cubeRenderer.resize(w, h)
+
+ def startQuick(self, filename):
+ url = QUrl.fromLocalFile(filename)
+ self.m_qmlComponent = QQmlComponent(self.m_qmlEngine, url)
+ if self.m_qmlComponent.isLoading():
+ self.m_status_conn_id = self.m_qmlComponent.statusChanged.connect(self.run)
+ else:
+ self.run()
+
+ def exposeEvent(self, event):
+ if self.isExposed() and not self.m_quickInitialized:
+ texture_id = self.texture_id() if self.m_quickReady else 0
+ self.m_cubeRenderer.render(self, self.m_context, texture_id)
+ qml_file = Path(__file__).parent / "demo.qml"
+ self.startQuick(qml_file)
+
+ def resizeTexture(self):
+ if self.m_rootItem and self.m_context.makeCurrent(self.m_offscreenSurface):
+ self.m_context.functions().glDeleteTextures(1, self.m_texture_ids)
+ self.set_texture_id(0)
+ self.createTexture()
+ self.m_context.doneCurrent()
+ self.updateSizes()
+ self.render()
+
+ def resizeEvent(self, event):
+ # If self is a resize after the scene is up and running, recreate the
+ # texture and the Quick item and scene.
+ if (self.texture_id()
+ and self.m_textureSize != self.size() * self.devicePixelRatio()):
+ self.resizeTexture()
+
+ @Slot()
+ def handleScreenChange(self):
+ if self.m_dpr != self.devicePixelRatio():
+ self.resizeTexture()
+
+ def mousePressEvent(self, e):
+ # Use the constructor taking position and globalPosition. That puts
+ # position into the event's position and scenePosition, and
+ # globalPosition into the event's globalPosition. This way the
+ # scenePosition in `e` is ignored and is replaced by position.
+ # This is necessary because QQuickWindow thinks of itself as
+ # a top-level window always.
+ mappedEvent = QMouseEvent(e.type(), e.position(), e.globalPosition(),
+ e.button(), e.buttons(), e.modifiers())
+ QCoreApplication.sendEvent(self.m_quickWindow, mappedEvent)
+
+ def mouseReleaseEvent(self, e):
+ mappedEvent = QMouseEvent(e.type(), e.position(), e.globalPosition(),
+ e.button(), e.buttons(), e.modifiers())
+ QCoreApplication.sendEvent(self.m_quickWindow, mappedEvent)
diff --git a/examples/quick/scenegraph/openglunderqml/doc/openglunderqml.rst b/examples/quick/scenegraph/openglunderqml/doc/openglunderqml.rst
new file mode 100644
index 000000000..6a89a99d9
--- /dev/null
+++ b/examples/quick/scenegraph/openglunderqml/doc/openglunderqml.rst
@@ -0,0 +1,21 @@
+OpenGL under QML Squircle
+=========================
+
+The OpenGL under QML example shows how an application can make use of the
+QQuickWindow::beforeRendering() signal to draw custom OpenGL content under a Qt
+Quick scene. This signal is emitted at the start of every frame, before the
+scene graph starts its rendering, thus any OpenGL draw calls that are made as
+a response to this signal, will stack under the Qt Quick items.
+
+As an alternative, applications that wish to render OpenGL content on top of
+the Qt Quick scene, can do so by connecting to the
+QQuickWindow::afterRendering() signal.
+
+In this example, we will also see how it is possible to have values that are
+exposed to QML which affect the OpenGL rendering. We animate the threshold
+value using a NumberAnimation in the QML file and this value is used by the
+OpenGL shader program that draws the squircles.
+
+.. image:: squircle.png
+ :width: 400
+ :alt: Squircle Screenshot
diff --git a/examples/quick/scenegraph/openglunderqml/doc/squircle.png b/examples/quick/scenegraph/openglunderqml/doc/squircle.png
new file mode 100644
index 000000000..c099a6b7e
--- /dev/null
+++ b/examples/quick/scenegraph/openglunderqml/doc/squircle.png
Binary files differ
diff --git a/examples/quick/scenegraph/openglunderqml/main.py b/examples/quick/scenegraph/openglunderqml/main.py
new file mode 100644
index 000000000..0e24877bd
--- /dev/null
+++ b/examples/quick/scenegraph/openglunderqml/main.py
@@ -0,0 +1,27 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from pathlib import Path
+
+from PySide6.QtCore import QUrl
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQuick import QQuickView, QQuickWindow, QSGRendererInterface
+
+from squircle import Squircle # noqa: F401
+
+if __name__ == "__main__":
+ app = QGuiApplication(sys.argv)
+
+ QQuickWindow.setGraphicsApi(QSGRendererInterface.OpenGL)
+
+ view = QQuickView()
+ view.setResizeMode(QQuickView.SizeRootObjectToView)
+ qml_file = Path(__file__).parent / "main.qml"
+ view.setSource(QUrl.fromLocalFile(qml_file))
+
+ if view.status() == QQuickView.Error:
+ sys.exit(-1)
+ view.show()
+
+ sys.exit(app.exec())
diff --git a/examples/quick/scenegraph/openglunderqml/main.qml b/examples/quick/scenegraph/openglunderqml/main.qml
new file mode 100644
index 000000000..73bfa3262
--- /dev/null
+++ b/examples/quick/scenegraph/openglunderqml/main.qml
@@ -0,0 +1,39 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import OpenGLUnderQML
+
+Item {
+
+ width: 320
+ height: 480
+
+ Squircle {
+ SequentialAnimation on t {
+ NumberAnimation { to: 1; duration: 2500; easing.type: Easing.InQuad }
+ NumberAnimation { to: 0; duration: 2500; easing.type: Easing.OutQuad }
+ loops: Animation.Infinite
+ running: true
+ }
+ }
+ Rectangle {
+ color: Qt.rgba(1, 1, 1, 0.7)
+ radius: 10
+ border.width: 1
+ border.color: "white"
+ anchors.fill: label
+ anchors.margins: -10
+ }
+
+ Text {
+ id: label
+ color: "black"
+ wrapMode: Text.WordWrap
+ text: "The background here is a squircle rendered with raw OpenGL using the 'beforeRender()' signal in QQuickWindow. This text label and its border is rendered using QML"
+ anchors.right: parent.right
+ anchors.left: parent.left
+ anchors.bottom: parent.bottom
+ anchors.margins: 20
+ }
+}
diff --git a/examples/quick/scenegraph/openglunderqml/openglunderqml.pyproject b/examples/quick/scenegraph/openglunderqml/openglunderqml.pyproject
new file mode 100644
index 000000000..e7cfbc570
--- /dev/null
+++ b/examples/quick/scenegraph/openglunderqml/openglunderqml.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": [ "main.py", "main.qml", "squircle.py", "squirclerenderer.py"]
+}
diff --git a/examples/quick/scenegraph/openglunderqml/squircle.py b/examples/quick/scenegraph/openglunderqml/squircle.py
new file mode 100644
index 000000000..d2900198b
--- /dev/null
+++ b/examples/quick/scenegraph/openglunderqml/squircle.py
@@ -0,0 +1,79 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Property, QRunnable, Qt, Signal, Slot
+from PySide6.QtQml import QmlElement
+from PySide6.QtQuick import QQuickItem, QQuickWindow
+
+from squirclerenderer import SquircleRenderer
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "OpenGLUnderQML"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+class CleanupJob(QRunnable):
+ def __init__(self, renderer):
+ super().__init__()
+ self._renderer = renderer
+
+ def run(self):
+ del self._renderer
+
+
+@QmlElement
+class Squircle(QQuickItem):
+
+ tChanged = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._t = 0.0
+ self._renderer = None
+ self.windowChanged.connect(self.handleWindowChanged)
+
+ def t(self):
+ return self._t
+
+ def setT(self, value):
+ if self._t == value:
+ return
+ self._t = value
+ self.tChanged.emit()
+ if self.window():
+ self.window().update()
+
+ @Slot(QQuickWindow)
+ def handleWindowChanged(self, win):
+ if win:
+ win.beforeSynchronizing.connect(self.sync, type=Qt.DirectConnection)
+ win.sceneGraphInvalidated.connect(self.cleanup, type=Qt.DirectConnection)
+ win.setColor(Qt.black)
+ self.sync()
+
+ @Slot()
+ def cleanup(self):
+ del self._renderer
+ self._renderer = None
+
+ @Slot()
+ def sync(self):
+ window = self.window()
+ if not self._renderer:
+ self._renderer = SquircleRenderer()
+ window.beforeRendering.connect(self._renderer.init, Qt.DirectConnection)
+ window.beforeRenderPassRecording.connect(
+ self._renderer.paint, Qt.DirectConnection
+ )
+ self._renderer.setViewportSize(window.size() * window.devicePixelRatio())
+ self._renderer.setT(self._t)
+ self._renderer.setWindow(window)
+
+ def releaseResources(self):
+ self.window().scheduleRenderJob(
+ CleanupJob(self._renderer), QQuickWindow.BeforeSynchronizingStage
+ )
+ self._renderer = None
+
+ t = Property(float, t, setT, notify=tChanged)
diff --git a/examples/quick/scenegraph/openglunderqml/squirclerenderer.py b/examples/quick/scenegraph/openglunderqml/squirclerenderer.py
new file mode 100644
index 000000000..d824f96ab
--- /dev/null
+++ b/examples/quick/scenegraph/openglunderqml/squirclerenderer.py
@@ -0,0 +1,98 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from textwrap import dedent
+
+import numpy as np
+from OpenGL.GL import (GL_ARRAY_BUFFER, GL_BLEND, GL_DEPTH_TEST, GL_FLOAT,
+ GL_ONE, GL_SRC_ALPHA, GL_TRIANGLE_STRIP)
+from PySide6.QtCore import QSize, Slot
+from PySide6.QtGui import QOpenGLFunctions
+from PySide6.QtOpenGL import QOpenGLShader, QOpenGLShaderProgram
+from PySide6.QtQuick import QQuickWindow, QSGRendererInterface
+
+VERTEX_SHADER = dedent(
+ """\
+ attribute highp vec4 vertices;
+ varying highp vec2 coords;
+ void main() {
+ gl_Position = vertices;
+ coords = vertices.xy;
+ }
+ """
+)
+FRAGMENT_SHADER = dedent(
+ """\
+ uniform lowp float t;
+ varying highp vec2 coords;
+ void main() {
+ lowp float i = 1. - (pow(abs(coords.x), 4.) + pow(abs(coords.y), 4.));
+ i = smoothstep(t - 0.8, t + 0.8, i);
+ i = floor(i * 20.) / 20.;
+ gl_FragColor = vec4(coords * .5 + .5, i, i);
+ }
+ """
+)
+
+
+class SquircleRenderer(QOpenGLFunctions):
+ def __init__(self):
+ QOpenGLFunctions.__init__(self)
+ self._viewport_size = QSize()
+ self._t = 0.0
+ self._program = None
+ self._window = QQuickWindow()
+
+ def setT(self, t):
+ self._t = t
+
+ def setViewportSize(self, size):
+ self._viewport_size = size
+
+ def setWindow(self, window):
+ self._window = window
+
+ @Slot()
+ def init(self):
+ if not self._program:
+ rif = self._window.rendererInterface()
+ assert (rif.graphicsApi() == QSGRendererInterface.OpenGL)
+ self.initializeOpenGLFunctions()
+ self._program = QOpenGLShaderProgram()
+ self._program.addCacheableShaderFromSourceCode(QOpenGLShader.Vertex, VERTEX_SHADER)
+ self._program.addCacheableShaderFromSourceCode(QOpenGLShader.Fragment, FRAGMENT_SHADER)
+ self._program.bindAttributeLocation("vertices", 0)
+ self._program.link()
+
+ @Slot()
+ def paint(self):
+ # Play nice with the RHI. Not strictly needed when the scenegraph uses
+ # OpenGL directly.
+ self._window.beginExternalCommands()
+
+ self._program.bind()
+
+ self._program.enableAttributeArray(0)
+
+ values = np.array([-1, -1, 1, -1, -1, 1, 1, 1], dtype="single")
+
+ # This example relies on (deprecated) client-side pointers for the vertex
+ # input. Therefore, we have to make sure no vertex buffer is bound.
+ self.glBindBuffer(GL_ARRAY_BUFFER, 0)
+
+ self._program.setAttributeArray(0, GL_FLOAT, values, 2)
+ self._program.setUniformValue1f("t", self._t)
+
+ self.glViewport(0, 0, self._viewport_size.width(), self._viewport_size.height())
+
+ self.glDisable(GL_DEPTH_TEST)
+
+ self.glEnable(GL_BLEND)
+ self.glBlendFunc(GL_SRC_ALPHA, GL_ONE)
+
+ self.glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)
+
+ self._program.disableAttributeArray(0)
+ self._program.release()
+
+ self._window.endExternalCommands()
diff --git a/examples/quick/scenegraph/scenegraph_customgeometry/doc/scenegraph_customgeometry.rst b/examples/quick/scenegraph/scenegraph_customgeometry/doc/scenegraph_customgeometry.rst
new file mode 100644
index 000000000..190ab80c2
--- /dev/null
+++ b/examples/quick/scenegraph/scenegraph_customgeometry/doc/scenegraph_customgeometry.rst
@@ -0,0 +1,7 @@
+Scene Graph - Custom Geometry
+=============================
+
+The custom geometry example shows how to create a QQuickItem which uses the
+scene graph API to build a custom geometry for the scene graph. It does this
+by creating a BezierCurve item which is made part of the CustomGeometry module
+and makes use of this in a QML file.
diff --git a/examples/quick/scenegraph/scenegraph_customgeometry/main.py b/examples/quick/scenegraph/scenegraph_customgeometry/main.py
new file mode 100644
index 000000000..60a904065
--- /dev/null
+++ b/examples/quick/scenegraph/scenegraph_customgeometry/main.py
@@ -0,0 +1,152 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Qt Quick customgeometry example from Qt v6.x"""
+
+import sys
+from pathlib import Path
+
+from PySide6.QtQuick import (QQuickView, QQuickItem, QSGNode, QSGGeometryNode,
+ QSGGeometry, QSGFlatColorMaterial)
+from PySide6.QtQml import QmlElement
+from PySide6.QtGui import QGuiApplication, QColor
+from PySide6.QtCore import (QPointF, QUrl, Property, Signal, Slot)
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "CustomGeometry"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class BezierCurve(QQuickItem):
+ p1Changed = Signal()
+ p2Changed = Signal()
+ p3Changed = Signal()
+ p4Changed = Signal()
+ segmentCountChanged = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self._p1 = QPointF(0, 0)
+ self._p2 = QPointF(1, 0)
+ self._p3 = QPointF(0, 1)
+ self._p4 = QPointF(1, 1)
+ self._segmentCount = 32
+
+ self._node = None
+ self._geometry = None
+ self.setFlag(QQuickItem.Flags.ItemHasContents, True)
+
+ def p1(self):
+ return self._p1
+
+ def p2(self):
+ return self._p2
+
+ def p3(self):
+ return self._p3
+
+ def p4(self):
+ return self._p4
+
+ def segmentCount(self):
+ return self._segmentCount
+
+ @Slot(QPointF)
+ def setP1(self, p):
+ if p != self._p1:
+ self._p1 = p
+ self.p1Changed.emit()
+ self.update()
+
+ @Slot(QPointF)
+ def setP2(self, p):
+ if p != self._p2:
+ self._p2 = p
+ self.p2Changed.emit()
+ self.update()
+
+ @Slot(QPointF)
+ def setP3(self, p):
+ if p != self._p3:
+ self._p3 = p
+ self.p3Changed.emit()
+ self.update()
+
+ @Slot(QPointF)
+ def setP4(self, p):
+ if p != self._p4:
+ self._p4 = p
+ self.p4Changed.emit()
+ self.update()
+
+ @Slot(int)
+ def setSegmentCount(self, p):
+ if p != self._segmentCount:
+ self._segmentCount = p
+ self.segmentCountChanged.emit()
+ self.update()
+
+ def updatePaintNode(self, oldNode, updatePaintNodeData):
+ self._node = oldNode
+ if not self._node:
+ self._default_attributes = QSGGeometry.defaultAttributes_Point2D()
+ self._geometry = QSGGeometry(self._default_attributes, self._segmentCount)
+ self._geometry.setLineWidth(2)
+ self._geometry.setDrawingMode(QSGGeometry.DrawingMode.DrawLineStrip)
+
+ self._node = QSGGeometryNode()
+ self._node.setGeometry(self._geometry)
+ self._node.setFlag(QSGNode.Flags.OwnsGeometry)
+ self._material = QSGFlatColorMaterial()
+ self._material.setColor(QColor(255, 0, 0))
+ self._node.setMaterial(self._material)
+ self._node.setFlag(QSGNode.Flags.OwnsMaterial)
+ else:
+ self._geometry = self._node.geometry()
+ self._geometry.allocate(self._segmentCount)
+
+ item_size = self.size()
+ item_width = float(item_size.width())
+ item_height = float(item_size.height())
+ vertices = self._geometry.vertexDataAsPoint2D()
+ for i in range(self._segmentCount):
+ t = float(i) / float(self._segmentCount - 1)
+ inv_t = 1 - t
+ pos = ((inv_t * inv_t * inv_t * self._p1)
+ + (3 * inv_t * inv_t * t * self._p2)
+ + (3 * inv_t * t * t * self._p3)
+ + (t * t * t * self._p4))
+ vertices[i].set(pos.x() * item_width, pos.y() * item_height)
+
+ self._geometry.setVertexDataAsPoint2D(vertices)
+
+ self._node.markDirty(QSGNode.DirtyGeometry)
+ return self._node
+
+ p1 = Property(QPointF, p1, setP1, notify=p1Changed)
+ p2 = Property(QPointF, p2, setP2, notify=p2Changed)
+ p3 = Property(QPointF, p3, setP3, notify=p3Changed)
+ p4 = Property(QPointF, p4, setP4, notify=p4Changed)
+
+ segmentCount = Property(int, segmentCount, setSegmentCount,
+ notify=segmentCountChanged)
+
+
+if __name__ == "__main__":
+ app = QGuiApplication([])
+ view = QQuickView()
+ format = view.format()
+ format.setSamples(16)
+ view.setFormat(format)
+
+ qml_file = Path(__file__).parent / "main.qml"
+ view.setSource(QUrl.fromLocalFile(qml_file))
+ if not view.rootObject():
+ sys.exit(-1)
+ view.show()
+ ex = app.exec()
+ del view
+ sys.exit(ex)
diff --git a/examples/quick/scenegraph/scenegraph_customgeometry/main.qml b/examples/quick/scenegraph/scenegraph_customgeometry/main.qml
new file mode 100644
index 000000000..88431a176
--- /dev/null
+++ b/examples/quick/scenegraph/scenegraph_customgeometry/main.qml
@@ -0,0 +1,34 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import CustomGeometry
+
+Item {
+ width: 300
+ height: 200
+
+ BezierCurve {
+ id: line
+ anchors.fill: parent
+ anchors.margins: 20
+ property real t
+ SequentialAnimation on t {
+ NumberAnimation { to: 1; duration: 2000; easing.type: Easing.InOutQuad }
+ NumberAnimation { to: 0; duration: 2000; easing.type: Easing.InOutQuad }
+ loops: Animation.Infinite
+ }
+
+ p2: Qt.point(t, 1 - t)
+ p3: Qt.point(1 - t, t)
+ }
+
+ Text {
+ anchors.bottom: line.bottom
+ x: 20
+ width: parent.width - 40
+ wrapMode: Text.WordWrap
+
+ text: "This curve is a custom scene graph item, implemented using GL_LINE_STRIP"
+ }
+}
diff --git a/examples/quick/scenegraph/scenegraph_customgeometry/scenegraph_customgeometry.pyproject b/examples/quick/scenegraph/scenegraph_customgeometry/scenegraph_customgeometry.pyproject
new file mode 100644
index 000000000..a5247ef6c
--- /dev/null
+++ b/examples/quick/scenegraph/scenegraph_customgeometry/scenegraph_customgeometry.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py","main.qml"]
+}
diff --git a/examples/quick/shared/Button.qml b/examples/quick/shared/Button.qml
new file mode 100644
index 000000000..2d4797a96
--- /dev/null
+++ b/examples/quick/shared/Button.qml
@@ -0,0 +1,50 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Window 2.1
+
+Item {
+ id: container
+
+ property alias text: buttonLabel.text
+ property alias label: buttonLabel
+ signal clicked
+ property alias containsMouse: hoverHandler.hovered
+ property alias pressed: tapHandler.pressed
+ implicitHeight: Math.max(Screen.pixelDensity * 7, buttonLabel.implicitHeight * 1.2)
+ implicitWidth: Math.max(Screen.pixelDensity * 11, buttonLabel.implicitWidth * 1.3)
+ height: implicitHeight
+ width: implicitWidth
+
+ SystemPalette { id: palette }
+
+ Rectangle {
+ id: frame
+ anchors.fill: parent
+ color: palette.button
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: tapHandler.pressed ? Qt.darker(palette.button, 1.3) : palette.button }
+ GradientStop { position: 1.0; color: Qt.darker(palette.button, 1.3) }
+ }
+ antialiasing: true
+ radius: height / 6
+ border.color: Qt.darker(palette.button, 1.5)
+ border.width: 1
+ }
+
+ TapHandler {
+ id: tapHandler
+ onTapped: container.clicked();
+ }
+ HoverHandler {
+ id: hoverHandler
+ }
+
+ Text {
+ id: buttonLabel
+ text: container.text
+ color: palette.buttonText
+ anchors.centerIn: parent
+ }
+}
diff --git a/examples/quick/shared/CheckBox.qml b/examples/quick/shared/CheckBox.qml
new file mode 100644
index 000000000..45c4f4e67
--- /dev/null
+++ b/examples/quick/shared/CheckBox.qml
@@ -0,0 +1,59 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Item {
+ id: root
+ implicitHeight: frame.height
+ implicitWidth: row.implicitWidth
+ width: implicitWidth
+ height: implicitHeight
+ property alias text: label.text
+ property bool checked
+ property alias pressed: tapHandler.pressed
+ property alias row: row
+ signal clicked
+
+ SystemPalette { id: palette }
+
+ Row {
+ id: row
+ anchors.verticalCenter: parent.verticalCenter
+ spacing: 6
+ Rectangle {
+ id: frame
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: tapHandler.pressed ? Qt.darker(palette.button, 1.3) : palette.button }
+ GradientStop { position: 1.0; color: Qt.darker(palette.button, 1.3) }
+ }
+ height: label.implicitHeight * 1.5
+ width: height
+ anchors.margins: 1
+ radius: 3
+ antialiasing: true
+ border.color: Qt.darker(palette.button, 1.5)
+ Image {
+ id: theX
+ source: "images/checkmark.png"
+ anchors.fill: frame
+ anchors.margins: frame.width / 5
+ fillMode: Image.PreserveAspectFit
+ smooth: true
+ visible: root.checked
+ }
+ }
+ Text {
+ id: label
+ color: palette.text
+ anchors.verticalCenter: frame.verticalCenter
+ }
+ }
+ TapHandler {
+ id: tapHandler
+ onTapped: {
+ parent.checked = !parent.checked
+ parent.clicked()
+ }
+ }
+}
diff --git a/examples/quick/shared/FlickrRssModel.qml b/examples/quick/shared/FlickrRssModel.qml
new file mode 100644
index 000000000..e78d1ffa2
--- /dev/null
+++ b/examples/quick/shared/FlickrRssModel.qml
@@ -0,0 +1,45 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+ListModel {
+ id: flickrImages
+ property string tags : ""
+ readonly property string queryUrl : "http://api.flickr.com/services/feeds/photos_public.gne?"
+
+ function encodeParams(x) {
+ return encodeURIComponent(x.replace(" ",","));
+ }
+ function fetchImages(format) {
+ var requestURL = queryUrl + (tags ? "tags="+encodeParams(tags)+"&" : "") + "format=" + format + "&nojsoncallback=1";
+ var xhr = new XMLHttpRequest;
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState === XMLHttpRequest.DONE) {
+
+ if (xhr.status !== 200) {
+ console.log("Failed to get images from flickr. status code: " + xhr.status);
+ return;
+ }
+
+ var jsonText = xhr.responseText;
+ var objArray = JSON.parse(jsonText.replace(/\'/g,"'"))
+ if (objArray.errors !== undefined)
+ console.log("Error fetching tweets: " + objArray.errors[0].message)
+ else {
+ for (var key in objArray.items) {
+ var rssItem = objArray.items[key];
+ var jsonObject = "{ \"title\": \"" + rssItem.title +"\",\"media\": \"" + rssItem.media.m + "\", \"thumbnail\": \"" + rssItem.media.m.replace(/\_m\.jpg/,"_s.jpg") +"\"}"
+ flickrImages.append(JSON.parse(jsonObject));
+ }
+ }
+ }
+ }
+ xhr.open("GET", requestURL, true);
+ xhr.send();
+ }
+ Component.onCompleted: {
+ fetchImages("json");
+ }
+}
+
diff --git a/examples/quick/shared/Images.qml b/examples/quick/shared/Images.qml
new file mode 100644
index 000000000..ade3619d8
--- /dev/null
+++ b/examples/quick/shared/Images.qml
@@ -0,0 +1,14 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma Singleton
+import QtQml
+
+QtObject {
+ readonly property url back: Qt.resolvedUrl("images/back.png")
+ readonly property url checkmark: Qt.resolvedUrl("images/checkmark.png")
+ readonly property url next: Qt.resolvedUrl("images/next.png")
+ readonly property url qtLogo: Qt.resolvedUrl("images/qt-logo.png")
+ readonly property url sliderHandle: Qt.resolvedUrl("images/slider_handle.png")
+ readonly property url tab: Qt.resolvedUrl("images/tab.png")
+}
diff --git a/examples/quick/shared/Label.qml b/examples/quick/shared/Label.qml
new file mode 100644
index 000000000..5393336ca
--- /dev/null
+++ b/examples/quick/shared/Label.qml
@@ -0,0 +1,9 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Text {
+ SystemPalette { id: palette }
+ color: palette.text
+}
diff --git a/examples/quick/shared/LauncherList.qml b/examples/quick/shared/LauncherList.qml
new file mode 100644
index 000000000..ff383e4e4
--- /dev/null
+++ b/examples/quick/shared/LauncherList.qml
@@ -0,0 +1,205 @@
+// Copyright (C) 2017 Crimson AS <info@crimson.no>
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQml
+import QtQml.Models 2.12
+import QtQuick
+
+Rectangle {
+ id: root
+ property int activePageCount: 0
+
+ //model is a list of {"name":"somename", "url":"file:///some/url/mainfile.qml"}
+ //function used to add to model A) to enforce scheme B) to allow Qt.resolveUrl in url assignments
+
+ color: "#eee"
+ function addExample(name, desc, url) {
+ myModel.append({"name":name, "description":desc, "url":url})
+ }
+ function showExample(url) {
+ pageComponent.createObject(pageContainer, { exampleUrl: url }).show()
+ }
+
+ // The container rectangle here is used to give a nice "feel" when
+ // transitioning into an example.
+ Rectangle {
+ anchors.fill: parent
+ color: "black"
+
+ ListView {
+ id: launcherList
+ clip: true
+ delegate: SimpleLauncherDelegate{
+ required property url url
+ onClicked: root.showExample(url)
+ }
+ model: ListModel {id:myModel}
+ anchors.fill: parent
+ enabled: opacity == 1.0
+ }
+ }
+
+ Item {
+ id: pageContainer
+ anchors.fill: parent
+ }
+
+ Component {
+ id: pageComponent
+ Rectangle {
+ id: page
+ clip: true
+ property url exampleUrl
+ width: parent.width
+ height: parent.height - bar.height
+ color: "white"
+ TapHandler {
+ //Eats mouse events
+ }
+ Loader{
+ focus: true
+ source: parent.exampleUrl
+ anchors.fill: parent
+ }
+
+ function show() {
+ showAnim.start()
+ }
+
+ function exit() {
+ exitAnim.start()
+ }
+
+ ParallelAnimation {
+ id: showAnim
+ ScriptAction {
+ script: root.activePageCount++
+ }
+ NumberAnimation {
+ target: launcherList
+ property: "opacity"
+ from: 1.0
+ to: 0.0
+ duration: 500
+ }
+ NumberAnimation {
+ target: launcherList
+ property: "scale"
+ from: 1.0
+ to: 0.0
+ duration: 500
+ }
+ NumberAnimation {
+ target: page
+ property: "x"
+ from: -page.width
+ to: 0
+ duration: 300
+ }
+ }
+ SequentialAnimation {
+ id: exitAnim
+
+ ScriptAction {
+ script: root.activePageCount--
+ }
+
+ ParallelAnimation {
+ NumberAnimation {
+ target: launcherList
+ property: "opacity"
+ from: 0.0
+ to: 1.0
+ duration: 300
+ }
+ NumberAnimation {
+ target: launcherList
+ property: "scale"
+ from: 0.0
+ to: 1.0
+ duration: 300
+ }
+ NumberAnimation {
+ target: page
+ property: "x"
+ from: 0
+ to: -page.width
+ duration: 300
+ }
+ }
+
+ ScriptAction {
+ script: page.destroy()
+ }
+ }
+ }
+ }
+ Rectangle {
+ id: bar
+ visible: height > 0
+ anchors.bottom: parent.bottom
+ width: parent.width
+ height: root.activePageCount > 0 ? 40 : 0
+
+ Behavior on height {
+ NumberAnimation {
+ duration: 300
+ }
+ }
+
+ Rectangle {
+ height: 1
+ color: "#ccc"
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ }
+
+ Rectangle {
+ height: 1
+ color: "#fff"
+ anchors.top: parent.top
+ anchors.topMargin: 1
+ anchors.left: parent.left
+ anchors.right: parent.right
+ }
+
+ gradient: Gradient {
+ GradientStop { position: 0 ; color: "#eee" }
+ GradientStop { position: 1 ; color: "#ccc" }
+ }
+
+ Image {
+ id: back
+ source: "images/back.png"
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.verticalCenterOffset: 2
+ anchors.left: parent.left
+ anchors.leftMargin: 16
+
+ TapHandler {
+ id: tapHandler
+ enabled: root.activePageCount > 0
+ onTapped: {
+ pageContainer.children[pageContainer.children.length - 1].exit()
+ }
+ }
+ Rectangle {
+ anchors.centerIn: back
+ width: 38
+ height: 31
+ anchors.verticalCenterOffset: -1
+ opacity: tapHandler.pressed ? 1 : 0
+ Behavior on opacity { NumberAnimation{ duration: 100 }}
+ gradient: Gradient {
+ GradientStop { position: 0 ; color: "#22000000" }
+ GradientStop { position: 0.2 ; color: "#11000000" }
+ }
+ border.color: "darkgray"
+ antialiasing: true
+ radius: 4
+ }
+ }
+ }
+}
diff --git a/examples/quick/shared/README b/examples/quick/shared/README
new file mode 100644
index 000000000..2bf26d7c8
--- /dev/null
+++ b/examples/quick/shared/README
@@ -0,0 +1,11 @@
+These files are shared between multiple examples as a set of common and
+reusuable components. While they do demonstrate the building of reusable
+components in QML, they are not official examples themselves.
+Consequently they do not have entries in the Qt documentation, and are
+documented only through the code comments within the files. Developers
+new to QML are strongly encouraged to go through the official examples
+before delving into this directory.
+
+For most application use, see the Qt Quick Components project to find
+ready-made Components you can use in your own projects. Qt Quick
+examples do not use them only to avoid external dependencies.
diff --git a/examples/quick/shared/SimpleLauncherDelegate.qml b/examples/quick/shared/SimpleLauncherDelegate.qml
new file mode 100644
index 000000000..c6ca9802d
--- /dev/null
+++ b/examples/quick/shared/SimpleLauncherDelegate.qml
@@ -0,0 +1,96 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+import QtQuick
+
+Rectangle {
+ id: container
+ required property string name
+ required property string description
+
+ property Item exampleItem
+ width: ListView.view.width
+ height: button.implicitHeight + 22
+
+ signal clicked()
+
+ gradient: Gradient {
+ GradientStop {
+ position: 0
+ Behavior on color {ColorAnimation { duration: 100 }}
+ color: tapHandler.pressed ? "#e0e0e0" : "#fff"
+ }
+ GradientStop {
+ position: 1
+ Behavior on color {ColorAnimation { duration: 100 }}
+ color: tapHandler.pressed ? "#e0e0e0" : button.containsMouse ? "#f5f5f5" : "#eee"
+ }
+ }
+
+ Image {
+ id: image
+ opacity: 0.7
+ Behavior on opacity {NumberAnimation {duration: 100}}
+ source: "images/next.png"
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.right: parent.right
+ anchors.rightMargin: 16
+ }
+
+ Item {
+ id: button
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.bottom: parent.bottom
+ anchors.right:image.left
+ implicitHeight: col.height
+ height: implicitHeight
+ width: buttonLabel.width + 20
+ property alias containsMouse: hoverHandler.hovered
+
+ TapHandler {
+ id: tapHandler
+ onTapped: container.clicked()
+ }
+ HoverHandler {
+ id: hoverHandler
+ }
+
+ Column {
+ spacing: 2
+ id: col
+ anchors.verticalCenter: parent.verticalCenter
+ width: parent.width
+ Text {
+ id: buttonLabel
+ anchors.left: parent.left
+ anchors.leftMargin: 10
+ anchors.right: parent.right
+ anchors.rightMargin: 10
+ text: container.name
+ color: "black"
+ font.pixelSize: 22
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ styleColor: "white"
+ style: Text.Raised
+
+ }
+ Text {
+ id: buttonLabel2
+ anchors.left: parent.left
+ anchors.leftMargin: 10
+ text: container.description
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ color: "#666"
+ font.pixelSize: 12
+ }
+ }
+ }
+
+ Rectangle {
+ height: 1
+ color: "#ccc"
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ }
+}
diff --git a/examples/quick/shared/Slider.qml b/examples/quick/shared/Slider.qml
new file mode 100644
index 000000000..b8bb6ed30
--- /dev/null
+++ b/examples/quick/shared/Slider.qml
@@ -0,0 +1,82 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Item {
+ id: slider
+ height: 26
+ // default drag range is 180: divisible by 2, 3, 4, 5, 6, 9, 10, ...
+ width: sliderName.width + 223 + handle.width / 2
+
+ property real min: 0
+ property real max: 1
+ property real value: min + (max - min) * dragHandler.value
+ property real init: min+(max-min)/2
+ property string name: "Slider"
+ property color color: "#0066cc"
+ property real minLabelWidth: 44
+
+ DragHandler {
+ id: dragHandler
+ target: handle
+ xAxis.minimum: Math.round(-handle.width / 2 + 3)
+ xAxis.maximum: Math.round(groove.width - handle.width / 2 - 3)
+ property real value: (handle.x - xAxis.minimum) / (xAxis.maximum - xAxis.minimum)
+ }
+
+ Component.onCompleted: setValue(init)
+ function setValue(v) {
+ if (min < max) {
+ handle.x = Math.round( v / (max - min) *
+ (dragHandler.xAxis.maximum - dragHandler.xAxis.minimum)
+ + dragHandler.xAxis.minimum);
+// console.log(name, v, "-> handle.x", handle.x, "from fraction", (v / (max - min)),
+// "of drag range", (dragHandler.xAxis.maximum - dragHandler.xAxis.minimum), "px", min, ":", max)
+ }
+ }
+ Rectangle {
+ id:sliderName
+ anchors.left: parent.left
+ anchors.leftMargin: 16
+ height: childrenRect.height
+ width: Math.max(slider.minLabelWidth, childrenRect.width)
+ anchors.verticalCenter: parent.verticalCenter
+ Text {
+ text: slider.name + ":"
+ font.pointSize: 12
+ color: "#333"
+ }
+ }
+
+ Rectangle {
+ id: groove
+ width: parent.width - 8 - sliderName.width
+ color: "#eee"
+ height: 7
+ radius: 3
+ antialiasing: true
+ border.color: Qt.darker(color, 1.2)
+ anchors.left: sliderName.right
+ anchors.right: parent.right
+ anchors.leftMargin: 10
+ anchors.rightMargin: 24
+ anchors.verticalCenter: parent.verticalCenter
+
+ Rectangle {
+ height: parent.height
+ anchors.left: parent.left
+ anchors.right: handle.horizontalCenter
+ color: slider.color
+ radius: 3
+ border.width: 1
+ border.color: Qt.darker(color, 1.3)
+ opacity: 0.8
+ }
+ Image {
+ id: handle
+ source: "images/slider_handle.png"
+ anchors.verticalCenter: parent.verticalCenter
+ }
+ }
+}
diff --git a/examples/quick/shared/TabSet.qml b/examples/quick/shared/TabSet.qml
new file mode 100644
index 000000000..e78880b91
--- /dev/null
+++ b/examples/quick/shared/TabSet.qml
@@ -0,0 +1,69 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Window 2.1
+
+Item {
+ id: tabWidget
+
+ // Setting the default property to stack.children means any child items
+ // of the TabWidget are actually added to the 'stack' item's children.
+ // See the "Property Binding"
+ // documentation for details on default properties.
+ default property alias content: stack.children
+
+ property int current: 0
+
+ onCurrentChanged: setZOrders()
+ Component.onCompleted: setZOrders()
+
+ function setZOrders() {
+ for (var i = 0; i < stack.children.length; ++i) {
+ stack.children[i].z = (i == current ? 1 : 0)
+ stack.children[i].enabled = (i == current)
+ }
+ }
+
+ Row {
+ id: header
+
+ Repeater {
+ model: stack.children.length
+ delegate: Rectangle {
+ required property int index
+ width: tabWidget.width / stack.children.length
+ height: Math.max(Screen.pixelDensity * 7, label.implicitHeight * 1.2)
+
+ Rectangle {
+ width: parent.width; height: 1
+ anchors { bottom: parent.bottom; bottomMargin: 1 }
+ color: "#acb2c2"
+ }
+ BorderImage {
+ anchors { fill: parent; leftMargin: 2; topMargin: 5; rightMargin: 1 }
+ border { left: 7; right: 7 }
+ source: "images/tab.png"
+ visible: tabWidget.current == parent.index
+ }
+ Text {
+ id: label
+ horizontalAlignment: Qt.AlignHCenter; verticalAlignment: Qt.AlignVCenter
+ anchors.fill: parent
+ text: stack.children[parent.index].title
+ elide: Text.ElideRight
+ font.bold: tabWidget.current == parent.index
+ }
+ TapHandler {
+ onTapped: tabWidget.current = parent.index
+ }
+ }
+ }
+ }
+
+ Item {
+ id: stack
+ width: tabWidget.width
+ anchors.top: header.bottom; anchors.bottom: tabWidget.bottom
+ }
+}
diff --git a/examples/quick/shared/TextField.qml b/examples/quick/shared/TextField.qml
new file mode 100644
index 000000000..66854c89b
--- /dev/null
+++ b/examples/quick/shared/TextField.qml
@@ -0,0 +1,43 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Item {
+ id: root
+
+ property alias textInput: textInput
+ property alias text: textInput.text
+ signal accepted
+ signal downPressed
+ implicitWidth: textInput.implicitWidth + rect.radius * 2
+ implicitHeight: textInput.implicitHeight
+
+ function copyAll() {
+ textInput.selectAll()
+ textInput.copy()
+ }
+
+ SystemPalette { id: palette }
+ height: textInput.implicitHeight + 8
+ clip: true
+
+ Rectangle {
+ id: rect
+ anchors.fill: parent
+ radius: height / 4
+ color: palette.button
+ border.color: Qt.darker(palette.button, 1.5)
+ }
+
+ TextInput {
+ id: textInput
+ color: palette.text
+ anchors.fill: parent
+ anchors.leftMargin: rect.radius
+ anchors.rightMargin: rect.radius
+ verticalAlignment: Text.AlignVCenter
+ onAccepted: root.accepted()
+ Keys.onDownPressed: root.downPressed()
+ }
+}
diff --git a/examples/quick/shared/images/back.png b/examples/quick/shared/images/back.png
new file mode 100644
index 000000000..53402096b
--- /dev/null
+++ b/examples/quick/shared/images/back.png
Binary files differ
diff --git a/examples/quick/shared/images/checkmark.png b/examples/quick/shared/images/checkmark.png
new file mode 100644
index 000000000..821aafccd
--- /dev/null
+++ b/examples/quick/shared/images/checkmark.png
Binary files differ
diff --git a/examples/quick/shared/images/next.png b/examples/quick/shared/images/next.png
new file mode 100644
index 000000000..cdef8db6e
--- /dev/null
+++ b/examples/quick/shared/images/next.png
Binary files differ
diff --git a/examples/quick/shared/images/qt-logo.png b/examples/quick/shared/images/qt-logo.png
new file mode 100644
index 000000000..a3e793b87
--- /dev/null
+++ b/examples/quick/shared/images/qt-logo.png
Binary files differ
diff --git a/examples/quick/shared/images/slider_handle.png b/examples/quick/shared/images/slider_handle.png
new file mode 100644
index 000000000..63c518be7
--- /dev/null
+++ b/examples/quick/shared/images/slider_handle.png
Binary files differ
diff --git a/examples/quick/shared/images/tab.png b/examples/quick/shared/images/tab.png
new file mode 100644
index 000000000..2ea989b68
--- /dev/null
+++ b/examples/quick/shared/images/tab.png
Binary files differ
diff --git a/examples/quick/shared/qmldir b/examples/quick/shared/qmldir
new file mode 100644
index 000000000..5ccdf6021
--- /dev/null
+++ b/examples/quick/shared/qmldir
@@ -0,0 +1,11 @@
+module shared
+Button 2.0 Button.qml
+CheckBox 2.1 CheckBox.qml
+FlickrRssModel 2.0 FlickrRssModel.qml
+Label 2.0 Label.qml
+LauncherList 2.0 LauncherList.qml
+SimpleLauncherDelegate 2.0 SimpleLauncherDelegate.qml
+Slider 2.0 Slider.qml
+TabSet 2.1 TabSet.qml
+TextField 2.1 TextField.qml
+singleton Images 2.2 Images.qml
diff --git a/examples/quick/shared/quick_shared.qrc b/examples/quick/shared/quick_shared.qrc
new file mode 100644
index 000000000..21f393a64
--- /dev/null
+++ b/examples/quick/shared/quick_shared.qrc
@@ -0,0 +1,15 @@
+<RCC>
+ <qresource prefix="/quick/shared">
+ <file>LauncherList.qml</file>
+ <file>SimpleLauncherDelegate.qml</file>
+ <file>Button.qml</file>
+ <file>CheckBox.qml</file>
+ <file>Label.qml</file>
+ <file>TextField.qml</file>
+ <file>images/back.png</file>
+ <file>images/next.png</file>
+ <file>images/checkmark.png</file>
+ <file>Slider.qml</file>
+ <file>images/slider_handle.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/quick/shared/shared.qrc b/examples/quick/shared/shared.qrc
new file mode 100644
index 000000000..c19063a58
--- /dev/null
+++ b/examples/quick/shared/shared.qrc
@@ -0,0 +1,21 @@
+<RCC>
+ <qresource prefix="/shared">
+ <file>Button.qml</file>
+ <file>CheckBox.qml</file>
+ <file>FlickrRssModel.qml</file>
+ <file>Images.qml</file>
+ <file>Label.qml</file>
+ <file>LauncherList.qml</file>
+ <file>SimpleLauncherDelegate.qml</file>
+ <file>Slider.qml</file>
+ <file>TabSet.qml</file>
+ <file>TextField.qml</file>
+ <file>images/back.png</file>
+ <file>images/checkmark.png</file>
+ <file>images/next.png</file>
+ <file>images/qt-logo.png</file>
+ <file>images/slider_handle.png</file>
+ <file>images/tab.png</file>
+ <file>qmldir</file>
+ </qresource>
+</RCC>
diff --git a/examples/quick/shared/shared_rc.py b/examples/quick/shared/shared_rc.py
new file mode 100644
index 000000000..14a9da5b9
--- /dev/null
+++ b/examples/quick/shared/shared_rc.py
@@ -0,0 +1,2253 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.5.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x06\xd1\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0d\x0a// SPD\
+X-License-Identi\
+fier: LicenseRef\
+-Qt-Commercial O\
+R BSD-3-Clause\x0d\x0a\
+\x0d\x0aimport QtQuick\
+\x0d\x0a\x0d\x0aItem {\x0d\x0a \
+id: root\x0d\x0a im\
+plicitHeight: fr\
+ame.height\x0d\x0a \
+implicitWidth: r\
+ow.implicitWidth\
+\x0d\x0a width: imp\
+licitWidth\x0d\x0a \
+height: implicit\
+Height\x0d\x0a prop\
+erty alias text:\
+ label.text\x0d\x0a \
+ property bool c\
+hecked\x0d\x0a prop\
+erty alias press\
+ed: tapHandler.p\
+ressed\x0d\x0a prop\
+erty alias row: \
+row\x0d\x0a signal \
+clicked\x0d\x0a\x0d\x0a S\
+ystemPalette { i\
+d: palette }\x0d\x0a\x0d\x0a\
+ Row {\x0d\x0a \
+ id: row\x0d\x0a \
+ anchors.vert\
+icalCenter: pare\
+nt.verticalCente\
+r\x0d\x0a spaci\
+ng: 6\x0d\x0a R\
+ectangle {\x0d\x0a \
+ id: fram\
+e\x0d\x0a g\
+radient: Gradien\
+t {\x0d\x0a \
+ GradientSto\
+p { position: 0.\
+0; color: tapHan\
+dler.pressed ? Q\
+t.darker(palette\
+.button, 1.3) : \
+palette.button }\
+\x0d\x0a \
+ GradientStop {\
+ position: 1.0; \
+color: Qt.darker\
+(palette.button,\
+ 1.3) }\x0d\x0a \
+ }\x0d\x0a \
+ height: labe\
+l.implicitHeight\
+ * 1.5\x0d\x0a \
+ width: heigh\
+t\x0d\x0a a\
+nchors.margins: \
+1\x0d\x0a r\
+adius: 3\x0d\x0a \
+ antialiasi\
+ng: true\x0d\x0a \
+ border.col\
+or: Qt.darker(pa\
+lette.button, 1.\
+5)\x0d\x0a \
+Image {\x0d\x0a \
+ id: the\
+X\x0d\x0a \
+ source: \x22imag\
+es/checkmark.png\
+\x22\x0d\x0a \
+ anchors.fill:\
+ frame\x0d\x0a \
+ anchors.\
+margins: frame.w\
+idth / 5\x0d\x0a \
+ fillMo\
+de: Image.Preser\
+veAspectFit\x0d\x0a \
+ smo\
+oth: true\x0d\x0a \
+ visib\
+le: root.checked\
+\x0d\x0a }\x0d\
+\x0a }\x0d\x0a \
+ Text {\x0d\x0a \
+ id: labe\
+l\x0d\x0a c\
+olor: palette.te\
+xt\x0d\x0a \
+anchors.vertical\
+Center: frame.ve\
+rticalCenter\x0d\x0a \
+ }\x0d\x0a }\x0d\x0a\
+ TapHandler {\
+\x0d\x0a id: ta\
+pHandler\x0d\x0a \
+ onTapped: {\x0d\x0a \
+ paren\
+t.checked = !par\
+ent.checked\x0d\x0a \
+ parent.\
+clicked()\x0d\x0a \
+ }\x0d\x0a }\x0d\x0a}\x0d\x0a\
+\
+\x00\x00\x04C\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0d\x0a// SPD\
+X-License-Identi\
+fier: LicenseRef\
+-Qt-Commercial O\
+R BSD-3-Clause\x0d\x0a\
+\x0d\x0aimport QtQuick\
+\x0d\x0a\x0d\x0aItem {\x0d\x0a \
+id: root\x0d\x0a\x0d\x0a \
+property alias t\
+extInput: textIn\
+put\x0d\x0a propert\
+y alias text: te\
+xtInput.text\x0d\x0a \
+ signal accepte\
+d\x0d\x0a signal do\
+wnPressed\x0d\x0a i\
+mplicitWidth: te\
+xtInput.implicit\
+Width + rect.rad\
+ius * 2\x0d\x0a imp\
+licitHeight: tex\
+tInput.implicitH\
+eight\x0d\x0a\x0d\x0a fun\
+ction copyAll() \
+{\x0d\x0a textI\
+nput.selectAll()\
+\x0d\x0a textIn\
+put.copy()\x0d\x0a \
+}\x0d\x0a\x0d\x0a SystemP\
+alette { id: pal\
+ette }\x0d\x0a heig\
+ht: textInput.im\
+plicitHeight + 8\
+\x0d\x0a clip: true\
+\x0d\x0a\x0d\x0a Rectangl\
+e {\x0d\x0a id:\
+ rect\x0d\x0a a\
+nchors.fill: par\
+ent\x0d\x0a rad\
+ius: height / 4\x0d\
+\x0a color: \
+palette.button\x0d\x0a\
+ border.c\
+olor: Qt.darker(\
+palette.button, \
+1.5)\x0d\x0a }\x0d\x0a\x0d\x0a \
+ TextInput {\x0d\x0a\
+ id: text\
+Input\x0d\x0a c\
+olor: palette.te\
+xt\x0d\x0a anch\
+ors.fill: parent\
+\x0d\x0a anchor\
+s.leftMargin: re\
+ct.radius\x0d\x0a \
+ anchors.right\
+Margin: rect.rad\
+ius\x0d\x0a ver\
+ticalAlignment: \
+Text.AlignVCente\
+r\x0d\x0a onAcc\
+epted: root.acce\
+pted()\x0d\x0a \
+Keys.onDownPress\
+ed: root.downPre\
+ssed()\x0d\x0a }\x0d\x0a}\
+\x0d\x0a\
+\x00\x00\x00\xcc\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0d\x0a// SPD\
+X-License-Identi\
+fier: LicenseRef\
+-Qt-Commercial O\
+R BSD-3-Clause\x0d\x0a\
+\x0d\x0aimport QtQuick\
+\x0d\x0a\x0d\x0aText {\x0d\x0a \
+SystemPalette { \
+id: palette }\x0d\x0a \
+ color: palett\
+e.text\x0d\x0a}\x0d\x0a\
+\x00\x00\x039\
+\x00\
+\x00\x0a\xd3x\xda\xc5VYO\xdb@\x10~\x8f\x94\xff\
+0\x0a/\xa0*\xceQ5H~\xa9 H\x05\x09J\
+9T\xfa\xba\xb1'\xf6\x0a{\xd7\xdd]\x13R\xc4\x7f\
+\xef\xac\x8f\xf8J(\xa0\xaauP\xd8\x9d\xf9fw\x8e\
+o\xc6\x19\x8d`.\x93\xb5\xe2Ah`\x7f~\x00\xd3\
+\xf1\xe4\x10nC\x84+C\x9a8ab\x0d\xe7\xc6w\
+\xfa\xbd\xd1\x08n\xbe\x9d\xfc\x18\x9es\x0f\x85\xc6\xe1\x99\
+\x8f\xc2\xf0%G\xe5B!\xbb\xc6\xe5\xf0\xca\x0c\xc9.\
+F\xe5q\x16\xc1\xe55\x1c\xdf\x9c\x0c?\x0e\xe7\x11K\
+5\xf6{<N\xa42t\xfaU\xca\xbd\xfb~\xaf\xdf\
+\xbbF\xcf0\x11D\x08O\xfd\x1e\xd0\xc3}\x17<)\
+\x0c\xe3\x02U.R\xf83\xe5\x0a}H\x94LP\x99\
+5h\xa3\xb8\x08@\xb0\x18\xff\x00\xf1Q{\x8a'\x86\
+Ka\xaf\xb3\xd8\x0d\xe4\xcc`\x0c\xf8\xc8\xe2$B\xbb\
+\xce\xd5+\xee\x9b\xd0\x06\xa5\xcdw\x8e+\xe7\xc1~e\
+\xc2\x5c\x1f\xa2M\x97\x0b\x8b\xd4\x18)\x1c\x0a)\xe2\x1e\
+7\xa7\x99\x18>\xc0tZ^\xa4y (\x0b\x1e\xe9\
+\xef\xd1\xdf?(\xe5\x81b>\xa7\xf4\xb9\xf0\xa5X\x95\
+\xc1\xdb\xa7\x94\xdd\x18\x99\xd4\xe5\x99\xebRs\x1b\x8a\x0b\
+\xe3\xa6\xe2\x18C\xf6\xc0\xa5\x02)({\x11-\x9e\xe6\
+\xf6\xdf\x91\xe01\xb3\x16\xf0\x04~\xaaXn<\x19\x8f\
+\xe1\xf9\xb9yBf\xe5\x82a\xc9)\x13~\x84\xcaI\
+\x14jM)\xfd\x0c\x83=\x1c\xdb\xcf\x00\x5cZ/\x97\
+\xcbAe\xfb\xfcV\xcf'\xff\xcb\xf3\xa2`\x05\xb9\xf4\
+\x85$Jf\x90\xe5'\xfb\xc9\x83C\xc4np\xcfe\
+\xe5\xceb\x16`=4\xcbVn\x85\x95H&\x8c\xe8\
+\xb0\xa6\x129\x87\x95\xb4\x1ef\x81\x80\xa7\xafi\xbc\xc0\
+z\xa4\x8d@\xebqj\x99*\x0f\xc9\xc1\xec2=\x12\
+\xf8h\x9cD\x045_\x99\xf0B\xa9\xb4\xf3@\xdc\xe6\
+\x1e\x8b\xe6T\x09\xdb\x9d\x09S\xb4j\x89\xbbf*g\
+u\x81\xcev;@\x17L\x05\xdc\xba8kg\xc7\xf6\
+S+9y\xd2\xbb'\x11E6\x97\xd1\xba\x0b\x88p\
+Y\xb9c7]\xc8B\xd2\xd9\xf1\x06\x94owE\x96\
+%\xaeuP\xb3w\xed\xdc\x89\x9c\xbc\xbd+L\xd9\xee\
+Ml\xa5/\xc6E\x1e\xe79[`\x94\x0f\x0b;\x09\
+jM\xba\x19:,\xe2LC\x83\x84.\x84\x92\xcaS\
+\xb27\xdb\xa0_f\xd5>\xb7\x1bn\xb7\xfb\xca\xe6\xb8\
+b~S'\x05\xd9%X\x1f\xa8Nm\x18m\xe9\xe0\
+\xd3\x9a\x1f\xdbn\xaa\xfb\xd98\xa0\xdaP\xf3\xa6\xb1h\
+\x1bkKy\x11\xb80\xed\x1eJYo\x0a\xdf\xc9\xe4\
+Z5\x0admjo2I\x8d\xd3v\xae\xc9\xd5\xac\
+\x86]\xc0+x\xb9\x0d\xbai\x96\xf1n\xdc\x8b\xad\xf7\
+r\x0bn9\xd5P\x84\xf5\x8aW/\xc9-Cs\xb0\
+\x88\x98w?\xe8\xea\x97d\xef$\xfc\x11\xa3\x1b\xfe\x8b\
+\x18:\x9dv1+\xc5\x92\x0b\xe9\x93\xd6f\xd5\xb9\xa3\
+\xed\x91\xb9\x93\xca?\x96\xa9\xf0\x99Z_\xd2l[\xaf\
+Bbs\xd7X\x9bu\x84\xf3\xc2\x8bU\xc8\x0d\x0ev\
+\x80\x8a\xe3\xaf\x19\xd7\xcd\xaeh\x91\xf7\x0d\xe5\x9d\xfe\x93\
+\xfa\xb6+\xd1\xf8-\xf2W\x93YVso6\x9b\xbd\
+\xa2\x98\x93\xe9\xce$\xb6\xdfx\x9d\xdfg\xf5\x99X{\
+\x95o<\xf0<o\xf0\xeeQ\xfd\x8a\xa1\xbf\xb3Y\xc8\
+e\xfa\xfb\x0d5\xf4\xfb\x95\
+\x00\x00\x05\xa1\
+\x00\
+\x00\x17\xafx\xda\xd5\x18ko\xdb6\xf0{\x80\xfc\x07\
+B\xfdb\xa3\xb1d;\xdd\x03\xda\xda.u\x8b.@\
+\xba>\xdc\x0d\x03\x86}\xa0\xa5\x93\xcdU\x22U\x92N\
+\x1a\x18\xfe\xef;J\xa2-\xc9\x94\xe2\xac\xdd\x86\x12y\
+\x88\xc7\xbb\xe3\xbdyd\x10\x90\x99\xc8o%[\xae4\
+\x19\xcc\x86d:\x9e|Gf\x92eJpr1'\
+?2\x9e\x88\x9f\xa2\x12\xe0s\xf1\xe4\xf4$p\xd2\xbc\
+_\x01y\xabq%\xcb)\xbf%W:\xf6\x0b\xd4\xf9\
+\x9b\xe7\xbf\x8f\xaeX\x04\x5c\xc1\xe82\x06\xaeY\xc2@\
+\x86\xa4\x82\xbd\x83d\xf4V\x8f\x90.\x03\x191\x9a\x92\
+\xd7\xef\xc8\xb3\xf9\xf3\xd1\xf9h\x96\xd2\xb5\x82\xd3\x93\xd3\
+\x13\x96\xe5Bj\xe4\xff6K\x9b3\xff\x95\x88!U\
+d\xeaO\xa6\xf5\x955\x8b>\x18\xcaw\x10i\xca\x97\
+)\x90\xcd\xe9\x09\xc1\xc1\xe2\x90H!t9\xcb\xa5\xc8\
+A\xea[\xc2\xb8&4\xd2\xec\x1a\xde\xd0%\xcc\xc4\x9a\
+\xeb\x90\x8c\x0d\x07\x83\x16\x04\x99\xd9\x860E(I\x99\
+\xd2D$d\xe3q\x9a\x81\x17zJdP|\x9e\x11\
+o-S\x84$,\x850\x08\x02\xb3\x12 (\xc8(\
+\xda\x11\x81\xfe\xc7,\xf5\xb6\x96i\xb2\xe6\xb8%\x1a\x1a\
+\xd5\x8c\x89\x16\x84\xc6\xc5\xbfr\xb3\x8b\xa1\xf9\x06\xb4\xbf\
+\x8c\x80\xa8h\x05\x19\x90g\x05\x90\xa6\xa9\xb8A5}\
+\x09J\xa4\xd7\xf0\xabD\xd9\x90\x0d\xfe\xa3J\xb1%G\
+\x81\xb4\xb2\xd2G\x22\x15hp\xef\x01\x00x%h\xb7\
+3\xee\xf8\xe2\x13\xcd\xf2\x14\x06F\x853\x12\x83\x8a\xce\
+\x0c\xa7\xa1\xb5\x98\x19\xd9mag\x9f\xe69\xf0x`\
+U/I<C#Yn\x18za\xc9\xa04\x04\xfe\
+\xd9\x0eK.\xdb\xd6\xc6j%n\xec\xce\xed\xdd\xf2\xc2\
+\x05\xe8K\x8ej\xf8\x91\x04\xaa\xe1\xf5\xe2/t\xe5\xa0\
+\x5c\xe2\x1a\xed\x09\xf2\x8cl\x08\x94<\xd0\x02a\xa1\xff\
+v\xe8\x1b\xd6\x83\xfd\xb6\xd6\xdaE\x88F\x96\x96\xc8]\
+d\xac@\x82q\xad\xf5\xc2\x12\xa3\x00\xfd\xcc1@\x89\
+\x97\x00\xa4\x1e\xb9Y\x01\xdf\xf1\xd1\x92r\xc5\x8c\x16\x8c\
+/M\xe4\xa0C\xb8\x15\xc4/\xd1\x0e\xe2\xce\x0c\xca\xa3\
+\x95\x90\xca\xc7H@is*Q\xbd\xfd\xaau\xd3\x22\
+\xa5\xd1\x07\xcf\xcam\xc6\x15F\xdco\x0cn\xea\xbcl\
+,c\x8e W\x90\x06\xa7\xb9\x1a\xa5,\x0fQ\xd85\
+4\xe1\xe8GX\xa2EC2gF\xe2\xab\x8a\xc3\xf3\
+\x0a\xde\xda\xc4\x0c\x09\x1f\xd7L\xa2uv\xf9bL\x8d\
+\xbf\x87\xa8\x82\xcfR\xcc=\xa8\xd2\xcco\xfb\xb9I\xb1\
+mN\x8b\xc0\x0f\x0b}\x8bx#\x1bT\xb1\x8a\xbd\x16\
+j\xbf-\xcd\xc0\x9c\x5c\xa4F\x0e\x91\xd3\x88\xa1\xcc\x8f\
+\x1f\x93\x89?\xde#m[!r\xa9!\xab\x9b\xd8\x98\
+\xb7\x11o\xc7xr\xc7m\x17\xc0n\x96\xd5\xe2~\xc9\
+\x191u\x9a\xe3\xbc\xdb\xf0\xd0>9\x9aH7,\xd6\
+++\xb7_\xcc\x9a\x08+0\xd5}\x87QN\xc9\x88\
+,\xa8\xac&-i\xaa\xd8\xbdY1mk\x8c\x1d\xef\
+i\xfe3\xe5q\x8a9\xe7\x08\xad xA\xb5B\xcf\
+c\xf6\x11\xb8.\xebVO\x88\x5c\x09\x1a\x83t0J\
+D\xb4V.\x8b\x98\xa1\xc4\x1a\x8b\xe8N\x9f.\xbb\x1c\
+\x17X\xdbzn\x1e\x14\xb5\xc1\xd0\xa5\xa6Y\xb9\xe0,\
+\xf3\x95\xa6R\x0f\x86\xc7r\x84OL\xbb9\x9a\x95{\
+p|C%\x9e\x1a\x90\x1a\x12Z\xb0v\xf04\xa1f\
+%=\x5c\x9d\x17E\xfe\x22\xea\xa2.\xf4,p\xaa\xdc\
+o\x1d\xa8\x0f\x1f\x1e\xd2l\x0fA\xbf\xac\xb3\x05\xc8^\
+9\xcd@\xad\x97\xa0\xfb\x0a`;%0>\xabR\xe0\
+\xb9\x11\x13)\xb2\xb0Y#\x1a;\x0al\x09\xba\x16\xe3\
+\xb5,\xc4\x0d\xc97\xe3\xf1\xff\xae\xa7\x8ah\x0a_\xa3\
+\x96\x87\x85\xce\xa1\xdd\xa7^\xcdF\x86\x87\xab\xa854\
+\xbcK\xbf\xf3#\xf4kM\xe7xJ\x9a\xfe\x96\xde\x9d\
+d6y\xdbY\xfa%\xd2l4r\x0a~\x08<\xaa\
+$\xdc\xc3\x87\xf7\x8b\xd6{e\xe6\xde\xbb\x9d\xa1i=\
+;\xe9C\xb8\xc3\xbf\x1d1\xfc_\xd9\xa0/k\xbfJ\
+\x0btg\xf3\x91\x19]\xd3\xba_\xe7;\x93\xfe\x9f\xeb\
+\xbe\xfd\xdc$-D\xc3k\x91\x96\xe2\xb6}N\xf7W\
+\x95m\xe3\xee\xe4\xec\x10M5\xc1\xael\x0f\xb8f\x8a\
+a\xdf\x1bV=\x1cyR7\x9dmn\x16Bkc\
+\xd5\xaa\x1f*\xa7{\xb4\xde\xfe\xd0\xf6\x86\xae\xdacv\
+#O\xc9\xa31\xa9\xdd\x9e\xcdx\x06+z\xcd\x84\xc4\
+\xfb\x81\x15\xace\xb5#\xc2\xab\xc7\x7fM\xa3\x1d\xd1U\
+[-&\xeeF\xf6A\x14E\x9e\xfb\xc6\xa1E\xbe3\
+\x0d~\xbb\x91RH\xf6\xed\xb3\x99\xb8\xd1d\xa3\xcd\x96\
+\xcd\xc6\xfa\xcb(\x92$\xc9\xe7(\x82\x0b\xaf0\x9b\x19\
+?\xd8\xe1_Su)i\xcc\xc0<\xc0\xbc\xac\xbe\xda\
+:[\xf8\x1c\xa5#\x1b\x92\x8b\xf2:\x8e1G~h\
+>w\xb4\x93\xab\x93rR\xa74\xce\xef\x0c\xa9\xcb\x0c\
+\xa3\xdduI[P\xf3\xe6\xe4\xbavx\xcc\xd0\xa8\xc0\
+`\xf89_v8\xe4\x1a\xab!\xc33`\x86\x02\x9a\
+'\xb2\xcaVM\xf01\xa4\xaf\x93D\x99\xfa;\xfd,\
+\x8f\x99\x95\x9d\xef\xbfmW\xc1\xfek\x9d\xb1\x87\xdea\
+8n/\xf6r\xdeUE\x5c/\x0b\xef\xcd\xf3\x13\xd2\
+t\xd4\xdb\xc6]\xdd\x8fV,\x8dQ\xc3?\xdc`\xd4\
+\x8e/\xf5\x0a\xef\xb4\x93?\xfd\xf2\x96u\xdf~\xaf3\
+%\xebF\x8c\x0a\x87\x5crWx\xd4J\xed\xf9\xf7\x87\
+K6\xb3\xcf'\xdd\xec\xdd~\x1f9(\xaa\x06\xab\xee\
+\x16?\x97\xa0\xcc\xa3\xd7S\x0c\x7f\xe7\x11[/\xdb\xf6\
+\x19e\xd3.\xd5\x9bZa\x9e\x8c\xc7d\xeb8D\xef\
+\xce\xe9\xfb\xe5\xf6t:.\x86\xd7\xd5\xadt\xb3\xf1\xa7\
+uF\x93I\x0f#\x07h!dl\xc2\xa8\xa2\x8f\xa9\
+\xfc\x80\xba\xb9\xfaVZ\x5c\x05\x18U\x8c/\xbb\xde%\
+\x8c\x90\xe6\xd5\xe2\xd1\x11-\x00\xfe\xfc\x0d[\xcf\xd1\xfe\
+\
+\x00\x00\x0a\x95\
+/\
+/ Copyright (C) \
+2016 The Qt Comp\
+any Ltd.\x0d\x0a// SPD\
+X-License-Identi\
+fier: LicenseRef\
+-Qt-Commercial O\
+R BSD-3-Clause\x0d\x0a\
+\x0d\x0aimport QtQuick\
+\x0d\x0a\x0d\x0aItem {\x0d\x0a \
+id: slider\x0d\x0a \
+height: 26\x0d\x0a \
+// default drag \
+range is 180: di\
+visible by 2, 3,\
+ 4, 5, 6, 9, 10,\
+ ...\x0d\x0a width:\
+ sliderName.widt\
+h + 223 + handle\
+.width / 2\x0d\x0a\x0d\x0a \
+ property real \
+min: 0\x0d\x0a prop\
+erty real max: 1\
+\x0d\x0a property r\
+eal value: min +\
+ (max - min) * d\
+ragHandler.value\
+\x0d\x0a property r\
+eal init: min+(m\
+ax-min)/2\x0d\x0a p\
+roperty string n\
+ame: \x22Slider\x22\x0d\x0a \
+ property colo\
+r color: \x22#0066c\
+c\x22\x0d\x0a property\
+ real minLabelWi\
+dth: 44\x0d\x0a\x0d\x0a D\
+ragHandler {\x0d\x0a \
+ id: dragHa\
+ndler\x0d\x0a t\
+arget: handle\x0d\x0a \
+ xAxis.min\
+imum: Math.round\
+(-handle.width /\
+ 2 + 3)\x0d\x0a \
+ xAxis.maximum: \
+Math.round(groov\
+e.width - handle\
+.width / 2 - 3)\x0d\
+\x0a propert\
+y real value: (h\
+andle.x - xAxis.\
+minimum) / (xAxi\
+s.maximum - xAxi\
+s.minimum)\x0d\x0a \
+}\x0d\x0a\x0d\x0a Compone\
+nt.onCompleted: \
+setValue(init)\x0d\x0a\
+ function set\
+Value(v) {\x0d\x0a \
+ if (min < ma\
+x) {\x0d\x0a \
+ handle.x = Mat\
+h.round( v / (ma\
+x - min) *\x0d\x0a \
+ \
+ (dra\
+gHandler.xAxis.m\
+aximum - dragHan\
+dler.xAxis.minim\
+um)\x0d\x0a \
+ \
+ + dragHandl\
+er.xAxis.minimum\
+);\x0d\x0a// \
+ console.log(na\
+me, v, \x22-> handl\
+e.x\x22, handle.x, \
+\x22from fraction\x22,\
+ (v / (max - min\
+)),\x0d\x0a// \
+ \x22of drag \
+range\x22, (dragHan\
+dler.xAxis.maxim\
+um - dragHandler\
+.xAxis.minimum),\
+ \x22px\x22, min, \x22:\x22,\
+ max)\x0d\x0a }\
+\x0d\x0a }\x0d\x0a Rec\
+tangle {\x0d\x0a \
+ id:sliderName\x0d\
+\x0a anchors\
+.left: parent.le\
+ft\x0d\x0a anch\
+ors.leftMargin: \
+16\x0d\x0a heig\
+ht: childrenRect\
+.height\x0d\x0a \
+ width: Math.max\
+(slider.minLabel\
+Width, childrenR\
+ect.width)\x0d\x0a \
+ anchors.vert\
+icalCenter: pare\
+nt.verticalCente\
+r\x0d\x0a Text \
+{\x0d\x0a t\
+ext: slider.name\
+ + \x22:\x22\x0d\x0a \
+ font.pointSi\
+ze: 12\x0d\x0a \
+ color: \x22#333\
+\x22\x0d\x0a }\x0d\x0a \
+ }\x0d\x0a\x0d\x0a Recta\
+ngle {\x0d\x0a \
+id: groove\x0d\x0a \
+ width: paren\
+t.width - 8 - sl\
+iderName.width\x0d\x0a\
+ color: \x22\
+#eee\x22\x0d\x0a h\
+eight: 7\x0d\x0a \
+ radius: 3\x0d\x0a \
+ antialiasin\
+g: true\x0d\x0a \
+ border.color: Q\
+t.darker(color, \
+1.2)\x0d\x0a an\
+chors.left: slid\
+erName.right\x0d\x0a \
+ anchors.ri\
+ght: parent.righ\
+t\x0d\x0a ancho\
+rs.leftMargin: 1\
+0\x0d\x0a ancho\
+rs.rightMargin: \
+24\x0d\x0a anch\
+ors.verticalCent\
+er: parent.verti\
+calCenter\x0d\x0a\x0d\x0a \
+ Rectangle {\
+\x0d\x0a he\
+ight: parent.hei\
+ght\x0d\x0a \
+ anchors.left: p\
+arent.left\x0d\x0a \
+ anchors.\
+right: handle.ho\
+rizontalCenter\x0d\x0a\
+ colo\
+r: slider.color\x0d\
+\x0a rad\
+ius: 3\x0d\x0a \
+ border.width\
+: 1\x0d\x0a \
+ border.color: Q\
+t.darker(color, \
+1.3)\x0d\x0a \
+ opacity: 0.8\x0d\x0a\
+ }\x0d\x0a \
+ Image {\x0d\x0a \
+ id: hand\
+le\x0d\x0a \
+source: \x22images/\
+slider_handle.pn\
+g\x22\x0d\x0a \
+anchors.vertical\
+Center: parent.v\
+erticalCenter\x0d\x0a \
+ }\x0d\x0a }\x0d\
+\x0a}\x0d\x0a\
+\x00\x00\x06\xed\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0d\x0a// SPD\
+X-License-Identi\
+fier: LicenseRef\
+-Qt-Commercial O\
+R BSD-3-Clause\x0d\x0a\
+\x0d\x0aimport QtQuick\
+\x0d\x0a\x0d\x0aListModel {\x0d\
+\x0a id: flickrI\
+mages\x0d\x0a prope\
+rty string tags \
+: \x22\x22\x0d\x0a readon\
+ly property stri\
+ng queryUrl : \x22h\
+ttp://api.flickr\
+.com/services/fe\
+eds/photos_publi\
+c.gne?\x22\x0d\x0a\x0d\x0a f\
+unction encodePa\
+rams(x) {\x0d\x0a \
+ return encode\
+URIComponent(x.r\
+eplace(\x22 \x22,\x22,\x22))\
+;\x0d\x0a }\x0d\x0a fu\
+nction fetchImag\
+es(format) {\x0d\x0a \
+ var reques\
+tURL = queryUrl \
++ (tags ? \x22tags=\
+\x22+encodeParams(t\
+ags)+\x22&\x22 : \x22\x22) +\
+ \x22format=\x22 + for\
+mat + \x22&nojsonca\
+llback=1\x22;\x0d\x0a \
+ var xhr = ne\
+w XMLHttpRequest\
+;\x0d\x0a xhr.o\
+nreadystatechang\
+e = function() {\
+\x0d\x0a if\
+ (xhr.readyState\
+ === XMLHttpRequ\
+est.DONE) {\x0d\x0a\x0d\x0a \
+ i\
+f (xhr.status !=\
+= 200) {\x0d\x0a \
+ co\
+nsole.log(\x22Faile\
+d to get images \
+from flickr. sta\
+tus code: \x22 + xh\
+r.status);\x0d\x0a \
+ \
+return;\x0d\x0a \
+ }\x0d\x0a\x0d\x0a \
+ va\
+r jsonText = xhr\
+.responseText;\x0d\x0a\
+ \
+var objArray = J\
+SON.parse(jsonTe\
+xt.replace(/\x5c'/g\
+,\x22'\x22))\x0d\x0a \
+ if (objA\
+rray.errors !== \
+undefined)\x0d\x0a \
+ \
+console.log(\x22Err\
+or fetching twee\
+ts: \x22 + objArray\
+.errors[0].messa\
+ge)\x0d\x0a \
+ else {\x0d\x0a \
+ \
+ for (var key in\
+ objArray.items)\
+ {\x0d\x0a \
+ var \
+rssItem = objArr\
+ay.items[key];\x0d\x0a\
+ \
+ var json\
+Object = \x22{ \x5c\x22ti\
+tle\x5c\x22: \x5c\x22\x22 + rss\
+Item.title +\x22\x5c\x22,\
+\x5c\x22media\x5c\x22: \x5c\x22\x22 +\
+ rssItem.media.m\
+ + \x22\x5c\x22, \x5c\x22thumbn\
+ail\x5c\x22: \x5c\x22\x22 + rss\
+Item.media.m.rep\
+lace(/\x5c_m\x5c.jpg/,\
+\x22_s.jpg\x22) +\x22\x5c\x22}\x22\
+\x0d\x0a \
+ flickr\
+Images.append(JS\
+ON.parse(jsonObj\
+ect));\x0d\x0a \
+ }\x0d\x0a \
+ }\
+\x0d\x0a }\x0d\
+\x0a }\x0d\x0a \
+ xhr.open(\x22GE\
+T\x22, requestURL, \
+true);\x0d\x0a \
+xhr.send();\x0d\x0a \
+ }\x0d\x0a Componen\
+t.onCompleted: {\
+\x0d\x0a fetchI\
+mages(\x22json\x22);\x0d\x0a\
+ }\x0d\x0a}\x0d\x0a\x0d\x0a\
+\x00\x00\x01C\
+m\
+odule shared\x0d\x0aBu\
+tton 2.0 Button.\
+qml\x0d\x0aCheckBox 2.\
+1 CheckBox.qml\x0d\x0a\
+FlickrRssModel 2\
+.0 FlickrRssMode\
+l.qml\x0d\x0aLabel 2.0\
+ Label.qml\x0d\x0aLaun\
+cherList 2.0 Lau\
+ncherList.qml\x0d\x0aS\
+impleLauncherDel\
+egate 2.0 Simple\
+LauncherDelegate\
+.qml\x0d\x0aSlider 2.0\
+ Slider.qml\x0d\x0aTab\
+Set 2.1 TabSet.q\
+ml\x0d\x0aTextField 2.\
+1 TextField.qml\x0d\
+\x0asingleton Image\
+s 2.2 Images.qml\
+\x0d\x0a\
+\x00\x00\x09\x1c\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0d\x0a// SPD\
+X-License-Identi\
+fier: LicenseRef\
+-Qt-Commercial O\
+R BSD-3-Clause\x0d\x0a\
+\x0d\x0aimport QtQuick\
+\x0d\x0aimport QtQuick\
+.Window 2.1\x0d\x0a\x0d\x0aI\
+tem {\x0d\x0a id: t\
+abWidget\x0d\x0a\x0d\x0a \
+// Setting the d\
+efault property \
+to stack.childre\
+n means any chil\
+d items\x0d\x0a // \
+of the TabWidget\
+ are actually ad\
+ded to the 'stac\
+k' item's childr\
+en.\x0d\x0a // See \
+the \x22Property Bi\
+nding\x22\x0d\x0a // d\
+ocumentation for\
+ details on defa\
+ult properties.\x0d\
+\x0a default pro\
+perty alias cont\
+ent: stack.child\
+ren\x0d\x0a\x0d\x0a prope\
+rty int current:\
+ 0\x0d\x0a\x0d\x0a onCurr\
+entChanged: setZ\
+Orders()\x0d\x0a Co\
+mponent.onComple\
+ted: setZOrders(\
+)\x0d\x0a\x0d\x0a functio\
+n setZOrders() {\
+\x0d\x0a for (v\
+ar i = 0; i < st\
+ack.children.len\
+gth; ++i) {\x0d\x0a \
+ stack.c\
+hildren[i].z = (\
+i == current ? 1\
+ : 0)\x0d\x0a \
+ stack.childre\
+n[i].enabled = (\
+i == current)\x0d\x0a \
+ }\x0d\x0a }\x0d\
+\x0a\x0d\x0a Row {\x0d\x0a \
+ id: header\
+\x0d\x0a\x0d\x0a Repe\
+ater {\x0d\x0a \
+ model: stack\
+.children.length\
+\x0d\x0a de\
+legate: Rectangl\
+e {\x0d\x0a \
+ required pr\
+operty int index\
+\x0d\x0a \
+ width: tabWidg\
+et.width / stack\
+.children.length\
+\x0d\x0a \
+ height: Math.m\
+ax(Screen.pixelD\
+ensity * 7, labe\
+l.implicitHeight\
+ * 1.2)\x0d\x0a\x0d\x0a \
+ Recta\
+ngle {\x0d\x0a \
+ widt\
+h: parent.width;\
+ height: 1\x0d\x0a \
+ \
+anchors { bottom\
+: parent.bottom;\
+ bottomMargin: 1\
+ }\x0d\x0a \
+ color: \x22\
+#acb2c2\x22\x0d\x0a \
+ }\x0d\x0a \
+ Bor\
+derImage {\x0d\x0a \
+ \
+anchors { fill: \
+parent; leftMarg\
+in: 2; topMargin\
+: 5; rightMargin\
+: 1 }\x0d\x0a \
+ borde\
+r { left: 7; rig\
+ht: 7 }\x0d\x0a \
+ sou\
+rce: \x22images/tab\
+.png\x22\x0d\x0a \
+ visib\
+le: tabWidget.cu\
+rrent == parent.\
+index\x0d\x0a \
+ }\x0d\x0a \
+ Text {\
+\x0d\x0a \
+ id: label\x0d\
+\x0a \
+ horizontalA\
+lignment: Qt.Ali\
+gnHCenter; verti\
+calAlignment: Qt\
+.AlignVCenter\x0d\x0a \
+ \
+ anchors.fill:\
+ parent\x0d\x0a \
+ tex\
+t: stack.childre\
+n[parent.index].\
+title\x0d\x0a \
+ elide\
+: Text.ElideRigh\
+t\x0d\x0a \
+ font.bold\
+: tabWidget.curr\
+ent == parent.in\
+dex\x0d\x0a \
+ }\x0d\x0a \
+ TapHandl\
+er {\x0d\x0a \
+ onTapp\
+ed: tabWidget.cu\
+rrent = parent.i\
+ndex\x0d\x0a \
+ }\x0d\x0a \
+ }\x0d\x0a \
+}\x0d\x0a }\x0d\x0a\x0d\x0a \
+Item {\x0d\x0a \
+id: stack\x0d\x0a \
+ width: tabWid\
+get.width\x0d\x0a \
+ anchors.top: \
+header.bottom; a\
+nchors.bottom: t\
+abWidget.bottom\x0d\
+\x0a }\x0d\x0a}\x0d\x0a\
+\x00\x00\x02v\
+/\
+/ Copyright (C) \
+2021 The Qt Comp\
+any Ltd.\x0d\x0a// SPD\
+X-License-Identi\
+fier: LicenseRef\
+-Qt-Commercial O\
+R BSD-3-Clause\x0d\x0a\
+\x0d\x0apragma Singlet\
+on\x0d\x0aimport QtQml\
+\x0d\x0a\x0d\x0aQtObject {\x0d\x0a\
+ readonly pro\
+perty url back: \
+ Qt.resol\
+vedUrl(\x22images/b\
+ack.png\x22)\x0d\x0a r\
+eadonly property\
+ url checkmark: \
+ Qt.resolvedUr\
+l(\x22images/checkm\
+ark.png\x22)\x0d\x0a r\
+eadonly property\
+ url next: \
+ Qt.resolvedUr\
+l(\x22images/next.p\
+ng\x22)\x0d\x0a readon\
+ly property url \
+qtLogo: Qt\
+.resolvedUrl(\x22im\
+ages/qt-logo.png\
+\x22)\x0d\x0a readonly\
+ property url sl\
+iderHandle: Qt.r\
+esolvedUrl(\x22imag\
+es/slider_handle\
+.png\x22)\x0d\x0a read\
+only property ur\
+l tab: \
+Qt.resolvedUrl(\x22\
+images/tab.png\x22)\
+\x0d\x0a}\x0d\x0a\
+\x00\x00\x05\xa1\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0d\x0a// SPD\
+X-License-Identi\
+fier: LicenseRef\
+-Qt-Commercial O\
+R BSD-3-Clause\x0d\x0a\
+\x0d\x0aimport QtQuick\
+\x0d\x0aimport QtQuick\
+.Window 2.1\x0d\x0a\x0d\x0aI\
+tem {\x0d\x0a id: c\
+ontainer\x0d\x0a\x0d\x0a \
+property alias t\
+ext: buttonLabel\
+.text\x0d\x0a prope\
+rty alias label:\
+ buttonLabel\x0d\x0a \
+ signal clicked\
+\x0d\x0a property a\
+lias containsMou\
+se: hoverHandler\
+.hovered\x0d\x0a pr\
+operty alias pre\
+ssed: tapHandler\
+.pressed\x0d\x0a im\
+plicitHeight: Ma\
+th.max(Screen.pi\
+xelDensity * 7, \
+buttonLabel.impl\
+icitHeight * 1.2\
+)\x0d\x0a implicitW\
+idth: Math.max(S\
+creen.pixelDensi\
+ty * 11, buttonL\
+abel.implicitWid\
+th * 1.3)\x0d\x0a h\
+eight: implicitH\
+eight\x0d\x0a width\
+: implicitWidth\x0d\
+\x0a\x0d\x0a SystemPal\
+ette { id: palet\
+te }\x0d\x0a\x0d\x0a Rect\
+angle {\x0d\x0a \
+ id: frame\x0d\x0a \
+ anchors.fill\
+: parent\x0d\x0a \
+ color: palette\
+.button\x0d\x0a \
+ gradient: Gradi\
+ent {\x0d\x0a \
+ GradientStop \
+{ position: 0.0;\
+ color: tapHandl\
+er.pressed ? Qt.\
+darker(palette.b\
+utton, 1.3) : pa\
+lette.button }\x0d\x0a\
+ Grad\
+ientStop { posit\
+ion: 1.0; color:\
+ Qt.darker(palet\
+te.button, 1.3) \
+}\x0d\x0a }\x0d\x0a \
+ antialiasi\
+ng: true\x0d\x0a \
+ radius: height\
+ / 6\x0d\x0a bo\
+rder.color: Qt.d\
+arker(palette.bu\
+tton, 1.5)\x0d\x0a \
+ border.width\
+: 1\x0d\x0a }\x0d\x0a\x0d\x0a \
+ TapHandler {\x0d\x0a\
+ id: tapH\
+andler\x0d\x0a \
+onTapped: contai\
+ner.clicked();\x0d\x0a\
+ }\x0d\x0a Hover\
+Handler {\x0d\x0a \
+ id: hoverHand\
+ler\x0d\x0a }\x0d\x0a\x0d\x0a \
+ Text {\x0d\x0a \
+ id: buttonLabe\
+l\x0d\x0a text:\
+ container.text\x0d\
+\x0a color: \
+palette.buttonTe\
+xt\x0d\x0a anch\
+ors.centerIn: pa\
+rent\x0d\x0a }\x0d\x0a}\x0d\x0a\
+\
+\x00\x00\x03)\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\
+\x00\x00\x02\xf0IDATx\xda\xe5\x9b_h\xcda\
+\x18\xc7?\x9bm1\xab\x91\xc2\xd0Y+5\xbb`h\
+\xc9\x85\x0b7HJ\x93H))\xe5\xc2\xcd\xb0\x91R\
+\xdc(7\xbbP\xae\x88\x5cXI[v%\xc9\x9fb\
+.\xfc\xbd\xc0(\xffN\xc8\xc6\xd9p16\x8c9.\
+~?u\xac\xe3\x9c\xf3}\xb7\xc3\xfb{\xce\xb7\xde\xab\
+\xd3\xef=\xef\xe7y\xdf\xe7\xf7{\xde\xe7}^\xb0\xa7\
+\x12\xa0\x1aX\x03\xb4\x02W\x8080\x00\x0c\x03\x83@\
+w\xf8\xbb9m\x04n\x03\x9f\x80d\x96v\xc3\x12x\
+\x05p1\x07\xe8\xd4\xb6\xc2\x0a|5\xf0Z\x84?\x0f\
+L\xb0\x00_\x16\xfa\xb6\x02\xff\xde\xca\xccO\x04\xee\x89\
+\xf0\x1f\x81\x1a+\x068)\xc2'\x81uV\xe0\x0f8\
+\xc0\xef\xb6\x02\xbf\x0a\xf8.\xc2\xb7\x01\xc5\x16\xe0k\x80\
+!\x11\xfe!Pj\x01~*\xd0#\xc2\xf7\x02\x95V\
+\x96~\x9b\x08?b)\xd89\xec\xf0\xd2\xdbb\xe9\xa5\
+\xa7\xc2\x1f\xb3\x14\xec$D\xf8\xa7\xe1s&\xd4-\xc2\
+\x0f\x02\xe5\x85\xea\xf7?\x81\x95V\xe0\xeb\x1d\xfc\xbe\xd5\
+\x0a\xfcl\xe0\xb3\x08\x7f\xd6\x0a|)pI\x84\xef\x01\
+\xa6Y1@\x93\x83\xdf7X\x81_V\xc8\xdb\xdb\x0a\
+\xe0\xb9\x83\xdf\x17Y1\xc0\x09\x11>\x8e!m\x10\xe1\
+\x07\x809V\xe0g\x02}\xa2\x01\xb6Y\x9a\xfd\x0e\x87\
+\xcc\x8e\x19\xed\x13\xe1\xef[\xda\xe4\xd4\x91\xdb\xf1Uj\
+rc\x91\xa5\xd9\xbf.\xce\xfe&K\xf0\x07E\xf8\xd3\
+\x96\xbe\xf7\x0b\xd0R\xda\x09`J!/\xfd\x98%\xf8\
+\xfd\x22\xfc^K\xf0\x0d\xc07\xb4\xc3\x0cS\xba\x8av\
+\x82;\xd9\x12\xfc\x1e\xf1{\xdf\xe8\xcb\xc0g\x01k\x09\
+\x8e\xa1\xaf\x01G\x80*\xb1\x8fZ\xd1\xef;|\x00/\
+&8X\xe8O3\xc0w\xe2\xf2\xbc \xc0?\xc2\x83\
+\x13\xdc%\xc0\x87,\x03=\x9ac_\x8d\x02\xfcW\x1f\
+B\xdd\x96\xd0\x07\xb3\x0d\xf6Y\x98\xc1\xc9\xa4\x18AM\
+^\xae\x068\xf4\xbf\xe1\xeb\xc5\x08m^\x16\x17:'\
+\xf4u\xc7\x07\xbfW\x8f\x9e\x8fg\xe8k\xb9\x98\xdd\xf1\
+\xa2h\xe9.zF6\x9d\x8a\xc4\xa5\xdf\xe2\xcb'\xaf\
+\xdd\xc1\x00;\xd2\xf4\xa3$7;}\x0aV\x9a\x1c\x0c\
+p\x8b?ko\xe6\x0a\xef\x91^`\xbaO\x06X\xec\
+`\x80a`~J\x1f\x0f\x84g\xb7\xfa\x16\xaeV\x85\
+A\x8ej\x84\xc7\x0e.\xe4eb\xb3$\x5c\xd2\xc9<\
+\xb77\xc0$\x9f\xc0\x7f\x87\x9e?\x80\xcb\xff\xe0\xff\x9a\
+\x81/\xbe\xee\xdaj\xf3<\xfb\xedQ\xd8\xba\xbe\xca\x13\
+\xfc\x8b\x1c\xc2g/\xb4+O\x06\x88LZ;\x86^\
+\x88\x9c\xad\x9d\x89R\xf6\xa6\x1c\xfd\x12B\xa6\xf6\xd6w\
+\xe0\xd1\x09\x88!\xa0k\x1c\xfb\xdf\x19\xc5\x1c\xde\xc2q\
+\x9a\xfd.\x22\xac'c\x84\xef'\xe2\x15\x9b\xab\xc7\x00\
+?\x02l&\xe2*\x03^:\x1a\xe0f\x94@\xffv\
+yp\x04\x98AP\xba\xa6\xaa.\xdc)F^\x95\xe8\
+%\xab\xdb1\xa6\xa5\x02\xfc)\x8c\xdc\xcc\x1a\xad\xf5a\
+\xce0\x1efr\xfa\x08\xae\x9f&\x08.'t:\xba\
+\x8a\x17\xfa\x05\xc1\xf2\xa6\x01\x10\xe5*G\x00\x00\x00\x00\
+IEND\xaeB`\x82\
+\x00\x00\x015\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x10\x00\x00\x00\x1f\x08\x00\x00\x00\x00\xcb\xce\x12h\
+\x00\x00\x00\xfcIDAT(\x15\x05\xc1AjTa\
+\x10\x06\xc0\xea\x9e\x7fF\x12\x17\x22(\xe8\x01t#\xf1\
+\x12\x9e\xdc\xadk\x97\x0a\x0aB\x5cj\x22$\x99y\xaf\
+?\xabj\xeb\xbbo\x7f\x1f\x8e[e\xbd}\xf5&U\
+\xf3\xfd\xc7\xcd\xcbc\x0a\xbf\x7f\x9d>V\xfd\xf9\xf2i\
+{\x08\xb8:|}\xfe\xae\x7f~\xd8\xee\x0a\xd8\xee\xdf\
+\xdfN\xff{vn@\xf4<\xae\xfb\xeb\xc7\x9e\x80\xbd\
+\xfa\xf2\xd4\xe7\x95\x00Fm\xb3ZK\x81\xe9\x9a\xee\xde\
+;\x80JJ\xc7\x000\x95\x85t\x80\x99\xb2jT\x88\
+\xa8\xb2[\x95)AIfY\x22\x22\xe8\x12\x0bB)\
+\xfb!,\x12\x80$\x96\x1a*%\xe20\x16Q#J\
+\xd2m\x91\xda+\x85\xba\xecc\xc5t\x22\xe8\xde\x97%\
+\x00b\xc6\x22\x09P\x11-\x00Bi\x00D\xd3I\x12\
+\x01I,\x92\x10\xa8\xa2\x8bD\x00t\x0e\xba\x04\xb2\x1d\
+j\xfa\xf0\x94\xcbX\xe0x\xc9iM\x9f\xe6\x9cKc\
+j{\xfd\xb9\xce\xe7\xdb\xab\x9a\x14\xb6\xd3\x8b\xe3\xf1?\
+V\x8e\x9e\xad\xee\x91\x1e\xc8\x00\x00\x00\x00IEND\
+\xaeB`\x82\
+\x00\x00\x066\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x0d\x00\x00\x00\x17\x08\x06\x00\x00\x00\xd0\xa6\xc5\x81\
+\x00\x00\x00\x19tEXtSoftware\
+\x00Adobe ImageRead\
+yq\xc9e<\x00\x00\x03$iTXtXML\
+:com.adobe.xmp\x00\x00\
+\x00\x00\x00<?xpacket beg\
+in=\x22\xef\xbb\xbf\x22 id=\x22W5M\
+0MpCehiHzreSzNTc\
+zkc9d\x22?> <x:xmpm\
+eta xmlns:x=\x22ado\
+be:ns:meta/\x22 x:x\
+mptk=\x22Adobe XMP \
+Core 5.3-c011 66\
+.145661, 2012/02\
+/06-14:56:27 \
+ \x22> <rdf:RDF \
+xmlns:rdf=\x22http:\
+//www.w3.org/199\
+9/02/22-rdf-synt\
+ax-ns#\x22> <rdf:De\
+scription rdf:ab\
+out=\x22\x22 xmlns:xmp\
+=\x22http://ns.adob\
+e.com/xap/1.0/\x22 \
+xmlns:xmpMM=\x22htt\
+p://ns.adobe.com\
+/xap/1.0/mm/\x22 xm\
+lns:stRef=\x22http:\
+//ns.adobe.com/x\
+ap/1.0/sType/Res\
+ourceRef#\x22 xmp:C\
+reatorTool=\x22Adob\
+e Photoshop CS6 \
+(Macintosh)\x22 xmp\
+MM:InstanceID=\x22x\
+mp.iid:DCE827695\
+74811E2B0EE92BEE\
+27047DB\x22 xmpMM:D\
+ocumentID=\x22xmp.d\
+id:DCE8276A57481\
+1E2B0EE92BEE2704\
+7DB\x22> <xmpMM:Der\
+ivedFrom stRef:i\
+nstanceID=\x22xmp.i\
+id:DCE8276757481\
+1E2B0EE92BEE2704\
+7DB\x22 stRef:docum\
+entID=\x22xmp.did:D\
+CE82768574811E2B\
+0EE92BEE27047DB\x22\
+/> </rdf:Descrip\
+tion> </rdf:RDF>\
+ </x:xmpmeta> <?\
+xpacket end=\x22r\x22?\
+>\x97\xa0=\xd8\x00\x00\x02\xa8IDATx\xda\x8c\
+\x94_HSQ\x1c\xc7\xcf\xbd\xbb\xd7;\xb7\xdd\xddQ\
+\x90\xbe\x0cb\x9b\x93\xd4\xf5\x10\xc1\x0a\xf4\xc5)\xd8\x1f\
+)Fd\xd4C\xeaK\xe4CB\xf6\x98\xb4\xb5\xad=\
+\xc8\xe8\xc9\xf5\x1e\xf4\x92\xd2\x96E\xeb!Y\x96\xc5\x94\
+\xc2\x94\x05\xb2\xf9\x10H\xed\xa1\x8767\xc1\xfd\xf3\xf6\
+=\xd7ML\x97z\xe0\xcb\xdd\xef\xdc}8\xbf\xf3\xfd\
+\x9es\x19Y\x96\xc9A\xc3j\xb5\x0ep\x1c\xf7\x98\xc8\
+r\xa1P,\xde`\x0e\x82\xdaZ[\xefiu\xba1\
+\xb5 \x90r\xb9Lr\xeb\xeb1n?\xc0f\xb3\xb9\
+\x0c\x06\xc3\x03Q\xaf'u<O\x0a\x85\x02\x11Eq\
+\xb5&d6\x99\x18\xadV;\x06`D\x02\xa0\xd1h\
+\x94\xf9c\x0d\x0d?\xfc~\xff\xcc\x1e\xc8l6\xabt\
+:\xdd\xb8$I\xb7 R__O\x18\x86!\x8d\x8d\
+\x8d\x09\xaf\xcf7\xb1g%\xcb\x16\xf0\xd4 I\xd7\xf5\
+U\x00\xf3F\xa3\xf1\xbb\xc7\xeb\x0d\xa1^A\xf9v\x1b\
+\xb2X,u:Q\x9c\x04\xd0\xabGK\xea\x0a`2\
+\x99\xbe=\xf4x\xa6x\x9e_F9\x09\x15\xb9\x0a\xa0\
+\xc1\xb2/\x01t)\x80ZM\xa8\xa7\xd6\xe6\xe6y\xb7\
+\xdb\x1daY6\x8e2\x04\x95\xe9\xff\x19\xb4$\x01x\
+-\x19\x0c\xedzQ\xdc\x06N\xdal\xb3\xf7GG\xa7\
+\xf1s\x01z\x05mV\xbb\xe2\x90\xc1sl\xb8]\xaa\
+\xae\x80\xdc\xce\xd8\xed\xd3wGFf\xf1~\x1e\x8a@\
+\xff\x84\xc9\xc1\xdaN\xecE\xb1\x95\xba\x84\xf6V\xef\x0c\
+\x0f\x7f\xc2;\x0a\xbd\xab\x15\x09\xdb\xda\xd2\xf2\x91\xe78\
+\x82\xbe\x95\x89T*e\xbc\xd6\xd7w\x16'\xe1\xfd\xff\
+Bg\xc7\x83\xc1\x0f8[\x0b\xa5RI\x99P\xa9T\
+$\x9dNw\xd7\x09\xc2\x0b\xeahM\x08V~y\xe4\
+\xf7O\xc1\xa99\x0a\xa2&h\x99`\x8f\xbd0(\xd2\
+\x04gwC\xf4\xc0\xd2\xbe.B\xa7|^o\xe7\xe2\
+\xd2R\x07\xcd'\x9f\xcf\x93\xcc\xda\x1a\xc9\xa4\xd3\x9f\xb3\
+\xb9\xdc\xf9d2\x99\xd9\x09)O\xa8\x07\xb2\x07\x02\x81\
+\xf6\xb9X\xccA\xf7\xb8\xb1\xb1A\xd6\x00\xa63\x99\xaf\
+\xb9\x5c\xee\x5c\x22\x91\xf8\xbd\x13\xaa\x0e\x07\xd4\xf1$\x18\
+<\x1d\x8dF/( V\xccf\xb3t\x9fq<{\
+\x00\xfe\xdc}`i\x98\xf9\xdbCC4\xb3\xe2\x9bH\
+\xe4\x12\xee\x11\xc3l\xb5\xd2\x06\xcd\xc04G\xad\xabA\
+\xf3\xc9\x0f\x0c\x0eR\xb0\x10\x0e\x87\xaf\x08\x82\xc0\xd2\x0c\
+\xd1\x93yS\x96C*\x97\xcbU\xcb\xd5_\xd0\x1f\x5c\
+\xc2\xa3\x88 \x15\x8f\xc7O\xe0\xc9\x22}\xb2Y.\x1f\
+a\xf7\xb9\xb8\x8b\xd0\x84\xd3\xe9\x5c\xbe\xd9\xdf\xff\x0c\xdf\
+\x88\x0c\x96+uuw\x87\x99C|X\x9a\xa0\xab\x10\
+_\xa9K\x87\x81\xe88\x0e]\x86\xb4\xf4<\xfe\x15`\
+\x00\x07\x7f\xeb\x18\x9af\x83_\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
+\x00\x00\x05[\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x12\x00\x00\x00\x1f\x08\x06\x00\x00\x00\xeaP\x9d\x89\
+\x00\x00\x00\x19tEXtSoftware\
+\x00Adobe ImageRead\
+yq\xc9e<\x00\x00\x03$iTXtXML\
+:com.adobe.xmp\x00\x00\
+\x00\x00\x00<?xpacket beg\
+in=\x22\xef\xbb\xbf\x22 id=\x22W5M\
+0MpCehiHzreSzNTc\
+zkc9d\x22?> <x:xmpm\
+eta xmlns:x=\x22ado\
+be:ns:meta/\x22 x:x\
+mptk=\x22Adobe XMP \
+Core 5.3-c011 66\
+.145661, 2012/02\
+/06-14:56:27 \
+ \x22> <rdf:RDF \
+xmlns:rdf=\x22http:\
+//www.w3.org/199\
+9/02/22-rdf-synt\
+ax-ns#\x22> <rdf:De\
+scription rdf:ab\
+out=\x22\x22 xmlns:xmp\
+=\x22http://ns.adob\
+e.com/xap/1.0/\x22 \
+xmlns:xmpMM=\x22htt\
+p://ns.adobe.com\
+/xap/1.0/mm/\x22 xm\
+lns:stRef=\x22http:\
+//ns.adobe.com/x\
+ap/1.0/sType/Res\
+ourceRef#\x22 xmp:C\
+reatorTool=\x22Adob\
+e Photoshop CS6 \
+(Macintosh)\x22 xmp\
+MM:InstanceID=\x22x\
+mp.iid:DCE827655\
+74811E2B0EE92BEE\
+27047DB\x22 xmpMM:D\
+ocumentID=\x22xmp.d\
+id:DCE8276657481\
+1E2B0EE92BEE2704\
+7DB\x22> <xmpMM:Der\
+ivedFrom stRef:i\
+nstanceID=\x22xmp.i\
+id:DCE8276357481\
+1E2B0EE92BEE2704\
+7DB\x22 stRef:docum\
+entID=\x22xmp.did:D\
+CE82764574811E2B\
+0EE92BEE27047DB\x22\
+/> </rdf:Descrip\
+tion> </rdf:RDF>\
+ </x:xmpmeta> <?\
+xpacket end=\x22r\x22?\
+>\xd9\x0c\xdf\xc0\x00\x00\x01\xcdIDATx\xda\xac\
+\x95;K\x03A\x14\x857\x994\xdaF1>@\xc5\
+\x88A\x8c,*\x16b#XZ\x08\x06\x04\x0b\xa3\xad\
+\x85\x9d`\x13\x0b\x1bm,5\x8d\x88\x89\xd8(B4\
+>@B\x88\x16\x16\x22b:\xff\x86 X\x04]\xcf\
+\x95+\x84e\xe6\xee\xaef\xe0\xec\xcc\xee\x1c\xbey\xec\
+\xbd3\x91\xa5t\xba\xd9\xb2\xac\x03h\x0ez\x832\x87\
+\xb9\x5c\xd6\x0aX\xc2\xd0\x064\x0fE\xa0(\xb4\x07\xf8\
+\xfa_@\xe3\x9a\xef[\x80e\x82\x82\x1e\x0d}\x9b\x80\
+m\xfb\x05)\xdb\xb6\x1fPO@\xbd\x9a\xfeI\xf47\
+\xbdT\xab%/P\x88\x1e\xbc\xe1\x97\xd0\x94\xc1\xb7\x03\
+\xad\xe1'8\xc6\x19\xd1\x03#\xd60\xf2\xa903\xfa\
+\xde\x06\xcf5\xbcf\x90\x0b6\x0c\x0dh\xbcc\x12L\
+\xd5\xbf0\xec\x0cM[\x80\xb5\xc3s\x03\xafc\x041\
+\xec\xd3\x036\x0a\xc5\xe19\xaf\x87)\xddz\xeb`q\
+(\xa9\xb1$\xdd0e\xfa\x0b\x0c+x\xc0\xfa\xe1)\
+\x927\xe4\x15\x1f\x08\x0d\x1a,\x0f-\x18,E(\xa5\
+\xbc@4uZ\x02\x9a1\xde\x1fw\xa1}\x8c)?\
+\xe1\xcf\xb0+4;\xa1\x11\xdd2\xc3\x01\xf22\xca1\
+\xa6+\xef!?\x04\xecS+\xaa24d\xb0\xac\xa8\
+\x06@V\x91\x83\xbb\xca\x03\xd2\x81\xaa$\xcd\x84 b\
+\x1c\x01\xd2\x85\xea\x0eJ\x08\x90\xac\x18\xd9\x0c\xa9@}\
+\x9a\xee/h\x19\x90}1\xd7\x00\xe9\xe1=1A\x16\
+\x019\x12\xb3\x1f\x10J\x87{\xa8[\x80\x1c\x8b\xe7\x11\
+C*\x1ct\xeeR\xa3\x9b\x06\x90\x13\xf1\x84\x04$\xc1\
+\xcb1AR\x80\x14\xc4\xc3\x1f\x90A^NL\x80\x5c\
+x\xc5\x1b]\x8a\xb4q-\x9a\xbe\x0fh\x16\x90[?\
+\xd1\x1f1$!Af\x00)\x07\xb9 \x9f\xff\x0b\xf9\
+\x05\xd1\x81\xf5\xc4\xef\xaf\xd0tP\xc8\xcf\x05\xe98\x8e\
+\xd5\x88\xf2-\xc0\x00\xaa\xfa\xae\x1fG|9m\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x03w\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x1b\x00\x00\x00\x1c\x08\x06\x00\x00\x00\x90\xd1\xc4\xed\
+\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\
+\x01\x00\x9a\x9c\x18\x00\x00\x03)IDATH\x0d\xbd\
+V=LZQ\x14\x06\xa4\xd1PE\x03\x14\x08\x83\xc8\
+fL\xd3\x10\x93\x06\x97\xa6\xdd\xbb3th\x8c\xa1\x1b\
+\x9d\x18\xbauaj\x22k'6\x17\x87v\xec\xd6\xa5\
+\x1b.\x84\x04\x02&\x18\x15\x02\x89\xd2\x8a\xfc$\xb6D\
+y\xaf\xdfw\xfb\xde\xf5\xf9\xfa\xe4\xa76\x9e\xe4\xe4\xde\
+\xc7\xbd\xdf\xf9\xee\xf9\xdey\xe7bWU\xd5v_\xe6\
+\xb8/\x22\xf28'%\xb3\xc3\xb4\xbd\xfah\x84\x0ay\
+\xa0\xd2H\x99\xecc\xd6m\x1a\x09\x09\x8cn$\xe2\x9c\
+$\xd2o#\x1dI\x06\x22\xcaL\x12\xf3\xa8\x13K\x02\
+\xecQ4B1\x82\x90\xe3\x0d\xb3\x94\xd1\x90\x0dI\xe8\
+3\xf0\xd9\x85\x85\x85@\x22\x91x\xbe\xbc\xbc\xbc\xb6\xb8\
+\xb8\xf8\xa8\xdb\xed~\xaf\xd7\xeb\xe5l6\xfb\xad\xdf\xef\
+\x9fb\xcf\x00>\x84+\x9a\xeaL\xf2ZZ\xce\xcd\x8e\
+\xcd$\xe0Af\xe1\x0f\xa3\xd1\xe8\xd3\x9d\x9d\x9dO\xd5\
+j\xf5\xe7\xd9\xd9\x99z~~\xae\xb6\xdbm1\xf2\x99\
+\xbfs=\x16\x8b=\xe1~\x0dG\xbc\xc3\x18{\x1c\xd1\
+<2y]\xa9T\xba$h6\x9b\xea\xe1\xe1!\x83\
+K\xe73\x7f\xe7z\xa9T\xea\xc6\xe3\xf17 \x99\xb7\
+\x22\xbc\xf1\xce4\xf9t\xd9\x1e\x00\xf8j{{\xfb#\
+\xe4s\x22\x03q0\x04\xb14\xca\xe6\xf7\xfbm \xbd\
+L\xa7\xd3\x09H\xfb\x19\x1b/\xe1BVd\xa8\x9a\xc9\
+t\x22'\xa4{\xbc\xbb\xbb\xfb5\x14\x0a\xb9OO\xf9\
+:&3\x9f\xcfg;99\xe9mnn>\xdb\xdb\
+\xdb\xab\x02u\x05\x1f\x82Kapa\x86\xa2`\xa5\xcd\
+\xa6R\xa9w\x81@\xc0\xddj\xb5\xb4\x1d\x93\x0dT \
+\x18\x0c\xba\x93\xc9\xe4{\xc6\x81\x8b\xcae|I\xa6\x85\
+\x12e\xce\xaa\xdb\xd8\xd8xyqq1R:+z\
+\x16\x04q\xc43\x0e\xf6\x90\x83q\xc5\x84#M\x9c\x80\
+\xe3\xd6\xd6\xd6\x0b\x8f\xc737\x18\xb0\x92\xa77\xe2\x88\
+g\x1c\xa0e\x5csf\x8cl\x8fD\x22\xab\x0e\x87\xc3\
+6\x1c\xf2\xddNo\xc4\x11\x1f\x0e\x87\xd7\x80&\x990\
+K2\xb7\xdb\xed\xa7\x1cw1\xe2\x97\x96\x96|\x881\
+\x92L\xed\xf5z-\x96\xf2]\x8c\xf8N\xa7\xf3\x031\
+\xe4\xa9\xad2S\x8f\x8e\x8e\xf6\x15E\xb1\xcd\xcc\xb0K\
+Mo\xc4\x11_\xab\xd5\xca@K2\xf9\x9d\xb14\xb1\
+\xc0\xe8NTQ8\x9f\xcf\x17\x5c.\xd7\x1c+kZ\
+\x03\x8e\x15\xf9k}}=\x8a\x9eY\x03^|k\xe6\
+\xccx\x0a\x85M5\x97\xcb}!hZ9\xb9\x9f8\
+\xe2\xb5\xe6\xac\xdf\x06\xd7\xa5\x8f\x17J\x22\xdd\x07\x99L\
+\xe6\x03;\x81\xd7\xeb\x9d*1\xb6\xacF\xa3\xd1'\x1e\
+@~;\x22&\xe3[f\x86\x0d\xc3B\xa1P\x06\xe0\
+-Nw\x85N26Cf\xc4V\x85\xa2\xb8Bo\
+L\x11\xcf8p\x99\xd9\xd8\xae\xcf.^,\x16{\x93\
+t\xfd\x83\x83\x83\x0eo\x09\x10Xv\xfd\xbf\xc8\xfe\xa8\
+\xf9o\xf7\x19\xef=\x10\xddz\x9f\xc9j\xc4&i\x90\
+\x84\x95I\xa7\xcc\xf4\x1b7\xf5\xca\xca\xca*\xfb\x1e\x0b\
+\xe0\xf8\xf8x\xdf\xea\xa6\x06F\xc8\xc7w\x85\xb90K\
+2\xb9\xf8\x9f\xff\x83\x8c$#\xa9!K=[\x8ef\
+\xd3\xabXV\x9ey\x03\x9f\xc7\x92\xe9 \x8dT`\xf4\
+\xdf\x0c\xa3\x90\xca(\x99aMN'&\x93\x88;L\
+~\x03}U80w\xf4\xee\xee\x00\x00\x00\x00IE\
+ND\xaeB`\x82\
+\x00\x005\x1c\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x01\x00\x00\x00\x01\x00\x08\x03\x00\x00\x00k\xacXT\
+\x00\x00\x18\x8azTXtRaw prof\
+ile type exif\x00\x00x\
+\xda\xd5\x9bYv\xdc\xb8\x96E\xff1\x8a\x1a\x02\xfaf\
+8h\xd7\xaa\x19\xd4\xf0k\x1f0\xa4\xb4l\xcb\x96^\
+~=+\x1d!\x07\x19$p\x9b\xd3\x00L\xb3\xff\xef\
+\x7f\x8f\xf9\x1f\xfe\x14\xe7\xac\x89\xa9\xd4\xdcr\xb6\xfc\x89\
+-6\xdf\xf9\xa5\xda\xe7O\xbf\xaf\xce\xc6\xfb\xfa\xf6\xc7\
+\xbd^?|n\xde\x7f\xf5\xbc\x07\xde\xc3s\xa0\xe6\xd7\
+\xb7\xde>w\x1f.c]\xe7\xb7\xf4\xc3\x85\xea|\x1d\
+\x18\x1f\x0f\xb4\xf8\xbc\xfb\xfa\xd3\x85^7\x0a\x1a\x91\xe7\
+\x97\xf5\xbaP{](\xf8\xe7\x80{]\xa0?\xd3\xb2\
+\xb9\xd5\xf2\xe3\x14\xc6~\xde\xd7\xdbD\xeb\xf3\xd7\xe8\xa5\
+\x8e\xe7>.\xbd\x8e\xfd\xf4\xefX\x88\xdeJ\xdc'x\
+\xbf\x83\x0b\x96\xd7\x10^\x03\x08\xfa\x1bL\xe8\xfc\x12x\
+\xf5!r\xa2\xe3\xa7\x87x_]x\x8b\x09\x01\xf9]\
+\x9c\xde\xff4Ft4\xd4\xf8\xdb\x93\xbe\x94\xad\xb7\xdf\
+\xcc\xcf\xd9\x8a\xfeuJ\xf8)\xc8\xf9\xfd\xfd\xb7\x9f\x1b\
+\xe2\xf0\xdb\xac\xdc\xd0\xffp\xe7X\xdf\xcb\xe4\xc3\xe7\xa5\
+\xb8\xfeVG\x1f\xa2\xaf\xbf\xe7\xacz\xee\x9c\x99E\x8f\
+\x99P\xe7\xd7\xa4\xde\xa3\xa6_8op\x0b\xdd\xba\x1a\
+\x86\x96m\xe1o\xe2\x12\xe5\xfe4~*U=)\x85\
+e\xa7\x1d\xfcL\xd7\x9c'\xfa\xc7E\xb7\x5cw\xc7\xed\
+\xfb>\xddd\x88\xd1o\xe3\x0b\xbfx?}\xb8\x1f\xd6\
+P|\xf33(\x7fQ?\xee\xf8\x12ZX\xa1\x92\xd7\
+y\xd3\x1e\x83\x7f\x1f\x8b\xbb\xb7mv\x9a{\xb7\xca\x9d\
+\x97\xe3T\xef\xb8\x98\xe3+\xdf\xfe1\xdf\xfd\xc29j\
+\x05\xda\xbd\xbe\xc7\x8aqy\xaf`3\x0ceN\xaf\x9c\
+FF\xdcy\x055\xdd\x00\xbf\xfd\xfc\xfcGy\x0dd\
+0)\xcaj\x91F`\xc7s\x89\x91\xdc?H\x10n\
+\xa2\x03'&\xde\x9f\x1ete\xbd.@\x88\xb8ub\
+0tCtd\xcd\x85\xe4\xb2\xb3\xc5{\x00\x8a@V\
+\x12\xd4\x19\xbazf\x90\x01\x97\x92_\x0c\xd2\xc7\x102\
+\xb9\xa9^\xb7\xe6+\xc5\xddS}\xf2|l\xf8\x1c0\
+#\x13)\xe4P\xc8M\x0b\x9dd\xc5\x98\xa8\x9f\x12+\
+5\xd4SH1\xa5\x94SI5\xb5\xd4s\xc81\xa7\
+\x9cs\xc9\x02\xc5^B\x89\xa6\xa4\x92K)\xb5\xb4\xd2\
+k\xa8\xb1\xa6\x9ak\xa9\xb5\xb6\xda\x9bo\x01\xd0L-\
+\xb7\xd2jk\xadw\xee\xd9\xb9r\xe7\xdb\x9d\x13z\x1f\
+~\x84\x11G2#\x8f2\xeah\xa3O\xcag\xc6\x99\
+f\x9ee\xd6\xd9f_~\x85\x05~\xac\xbc\xca\xaa\xab\
+\xad\xbe\xdd\xa6\x94v\xdci\xe7]v\xddm\xf7C\xa9\
+\x9d`N<\xe9\xe4SN=\xed\xf4\xf7\xac\xbd\xd2\xfa\
+\xcb\xcf7\xb2\xe6^Y\xf37S:\xb1\xbcg\x8dO\
+Ky\xbb\x84\x13\x9c$\xe5\x8c\x84y\x13\x1d\x19/J\
+\x01\x05\xed\x953[]\x8c^\x99S\xcel\x03\xfeB\
+\xf2\x0c2)g\xcb)cd0n\xe7\xd3qo\xb9\
+3\xfe\xc9\xa82\xf7\xaf\xf2fJ\xfc\x907\xff\x9ff\
+\xce(u\xdf\xcc\xdc\xafy\xfb]\xd6\x96\xf0n\xde\x8c\
+=]\xa8\xa0\xda@\xf7q|\xd7\xeek\x17\xd9\xfd\xf2\
+n>;\xf0\xdd\xf7\xff\x9a\x0b\x8dQ\x8e]g\x862\
+\xd6*!.\xe0\x83\xec\x12M[{\x14\xa4\x86\x98\xc6\
+\xea1\x9d}\xb2\xd8\xd6\x80\xc6\xab\xf4\xc3\xc1P\x00\xbf\
+\xb2\x09\xec\xc8\x87Z\x99yPn\xa7S\x8b+\x9f<\
+w8\xbcw\xa8\xfa\xec}:\xaf\xfe\xf4\xb2\xf6I\x8d\
+s\xe9~\xbf\xba\x0f\xbb\x9c\xe0\xe7Z+\xb42\xa8\x81\
+\xb1R\xde\xe7\x08\xe0\xe7\xd0\xfbv\xf1\xe8}\xc5R\xf4\
+\xeeS8g@\xec\xe79b~=t\x92U\xcd1\
+\xee1\xda\x8e\xe5\xe4\xb1\x19m\xd39\x96\xa9D*W\
+\xbfO\xdf\xee\xa5{\xe5\x8e\xdb\xc4\xce\xa7\x99\xfa>\x1f\
+\x0f\xbc>O\xbb\xbb\x98\xdc^>\xad\xc9\xa4\xe9\xaeq\
+\xe69\x15\x16\xf0w\xb0w@\x12\x11\xcf\x80\xeep\xe8\
+\xfe\xf7\xb1R\x80?\x1f\xb9C\xad'7\xbf\xb7\xa3r\
+O]\x87\x90L\x02\xd9\x9c\xd9\xe9~\xc9\xf6;\xdc\xdd\
+\xc3\x8dH\xd3\xe8\xe8\x07h\xe5\x93#\xb4Yr\xb1\x8c\
+\xd8\x00\x96\xb3\x97)3\x9f\xc3(@\xa4Yi\x1a\x9d\
+\x5c5\x08\xde\x93[\xc0T\xbb\xe3\xdbs\xd7?\x1c\x1b\
+fE*\xe7\x89l\xfd1\xae\xefQ\xbd\xa1c\xcc7\
+t|)>#\xfc'\xac\xcf1\xf3\xf1\xe0g\xb1e\
+$\xfef\xf6\xd3b0\x1f\xab\xe1\x93b\xf8,\xc2\x0a\
+\xb0\x8a\x82q \xfdn\x14\xdb3\xc8W|\xef\xa1_\
+\x8e\xfc\x1c\xdf\x1b^A\x8c\x02l\x9e\x083\xcf\xfa\xa4\
+\xf9\xdc(Rn\x8a\xe3\x13\xe1O\x8e\x8c\x0f\xe15_\
+\xab\xdb\xbf\x97\xad\xf9Z\xdd\xfe\xbdl\xcd\xd7\xea\xf6\xef\
+ek\xbeV\xb7\x7f/[\xf3\xb5\xba\xfd{\xd9\x9a\xaf\
+\xd5\xed\xdf\xcb\xd6|\xac\xdb\x9d-h\x99\xe1\xe7S5\
+\xa5\xb1\x138\xd9\xa7 \xb5\x8e\x19\x80\xd7\x11\xee\xd8\xd3\
+\xd8u\xea*\xbc\x87S\x87\xd9\xed\x94\xfa\x1f|Q\xdf\
+\x1b+\xe7\xbe{\x8a\xbbVsR\x09i\xae\xd2\xf2!\
+\x0e\xc2\xefq\x96\xb4!cO\xb5\x1d\x982\xea\x1f\xf6\
+/\xef\xc6~\xf1\xc4\x7fy\xa1\x04\xa1\xe7\x05?\x8c\x98\
+\x97\xdf\x85\xec\xed9\x08\xa9Ksd4B\xf3\xf1z\
+\xd0b\x90\x1b\xd1\x9e\xb8s\x05\xf0]\xf1\x99\xd7\xb5\x9a\
+_\x9b\x9f\x91\xdb\xca\x5c\x06\xc5\x10\xf9\xfe\x1aS\x84\xb0\
+\xd6\xc0\x19S\xd2\xb0\x5c\x18\xad\x1f8'\x9b\xb0\xfd\x9c\
+\xc9\x8d\xd9\x5c\xa6\xae\xe1\xa5\x1cjB\x9bT\xac\x0a\x8a\
+f\x17\x8bb\xf2\x16\xd9\xc1\xeb\x09\xb3n>th\x96\
+\xb6}\x1c\xeb\xb8\x901P\xdbt\x94\xc9\xac\x0d\xb5&\
+\xa5F\xd2\x90a\xbb\xc7S\xc2\xc2l\xc9\xd8\x85\x94\x8f\
+\xa3\x14{;\x09\x19\xc6l\xda\xf4\xbe\xa7D\x9e\x18\x9b\
+\x7f\xa0\x04\x18\xd9$\xacL(\xd3\x93b\xe4\x98\x1b\xc9\
+\x97\x9aCs\x08\xdflc\xaa\x93\xd1\xb7+N\xc7\xa0\
+N\x0e$\x9e\xda\x85\x14z\x8a\xb2\xbft\x14\x1d\xf5\x7f\
+\xfb\xcc\xaa\x90\xe1i\x8f\x0a\x82p\xa9\xdc\x19\x0b\x88I\
+\x8d\xe2\x9c\x18\xa8\x8fh4\xea\x9d\xc1\xa1\xa7\x96\xcd'\
+]\x8f\xa3\x82w\x04{\xaf03\xfa\xd9\x0f\xdf\xa2B\
+5\x5c\xc9\xc4\xad\xe4\xeds\x0b\x93\xab\xc0\xf8;\xe6R\
+\xb9;G%5f\xa5\xfcOl\x9dz\xedg\x88\xd7\
+\xea\xe8\xa9\xcc\xd4\xc6\xaa\x05\xf1\xd9\xfb\xaa\xb3(\xc2\xb9\
+\xb7\x86Qa2\x0e\xe9<\xa3\xe3\xcb\x04\xce\x06\x92\x82\
+\xe0\xab\xad\x13\x81Vb;\xe8\xe4h\xe8\x07\xbf\xd1\x1e\
+\xd1\x8eV\xaa;D\x09\xcf\x9f\x8bW+x\x8bxe\
+(\x03\x1c\xd9+\x85\xd5\xd2^s\x033\xc3%\xce\x9c\
+\x13\xc38c\x5c\xa3\x19'\xec\x09\xc2\xb9\xecC\xc7\x0a\
+9\xdfs\xdb\xb34$\xedl\xb9\xa6\x14\xd1(\x07m\
+$\xbc+\xd8Y\xc4*\xf58\x0f_\x9b(&\xb2\x84\
+\x801\xbeSv\x8e\x8a\xf5I\xd7\xb7\x01_u\x16\x02\
+\x95\xf4\xee\xb4\xecA\x87#\x84)\xaf>7\xdfF\x90\
+\x0f\xf0$\xe6L1\xa1\xb4\xebK\x9c\x99\x89!F\xdf\
+\xd6SQ\xbe\x83VV\xdc\xe3(\x0c\x07\xda\x18c\xe4\
+:\x171u\xb1\xa2\xcfq\x12\xfb\x14\x8a\x14N\xd96\
+\x15W\xde\x8a\xc0\x8c\x9b\xfa_\x8b\x00\xdd\xbf\x06\xc8\xb0\
+\xfa$c\x94\x16\xff\xd5\x15\x93\x8f\x8c\x0e%\x18Si\
+\x93Z\xe0{\xfd\xd6Q\x22\xbe(\xba\xc1T\xd7$\x90\
+\x13{\x9eK;\x88y\xc5\xf5\xa0\xf8H\x8e0\xc8\x0b\
+\xf2zm2h\x0e\xb5\xee\x87\xdd\x94\x00\xa5\xe9\x11w\
+\x06P\xf7\xa3^\xf8\x89\x951\xf7;g\xfb\xf5\xf7\xe3\
+\x08{;\xa6_\xb0\xc7\x9aP\x8e`\x9d\xf3\x99\xb1\xc1\
+h\x80\xdf\x22\x9e\xd8\x19ej\xba\xd5\x03\xe3\x02@p\
+5\xa5/\xd2\xb1&\xa6\x0a5:\x17h\xeeL\x83\x88\
+\xa8+\x82l\x99n\xc5\x99\xb5Y\xc6q\xe9\x84\xac\xb9\
+\xce\x01K`\x8e\x16Q\x1e;7R\x12\xe9B\xee\x0d\
+~\xce\x16\xaa\x9b:\xdc\x0dL\x805\x0a\x8c\xa22\xe7\
+^RZ\x09\xc2)4R\xc6Y\x95\x13\x09-\x99J\
+\x8b\xa8\x12\x9c\xe1\xea(t1 P*\xdekS\x13\
+eXw\xf5\xd1\xcaN\xf0\xd6;\xe5\xba\x86\x94z\xf4\
+\xc8\x84v\xec\xf6k\xcd~\x9d\x13m\xd2I\x88{\xf8\
+\x14#\x07X\xd0>m\xd8\xc2t\x86AWK\x0b3\
+\x87\xe0\x00\x9c\xd4\x03|XJ\xf7\x9e\x91\x04\x8a\x99\xda\
+\xee\xb8@+h\xc5\x0f\x14\x1b\x89L\x1a-Y\xd4x\
+.\xb6Q\xc582S\x99\x8eZ\xbc\xe0f\xc9\x1c\x97\
+\xf3Q\xcb\x0b\xb38\xb2\x92\xb8\x84\xd3\x12P\xc1\xd2\x12\
+\xdb\x88\x11\xe0\x1aX\x83\x02\xb4\xe6N\x22\xf0\x84\x07\x7f\
+iZ\xc8\xd0\x0ee\xc7\x8c\xa9\xb2U\xb8\x10U\x05\x9a\
+\xa5](\x1e\xea%$J\x17g\x89\x8b\x83\xb0}q\
+\x9b\xd7\x1be\x97\x06\x9e\x84A\xd5f\xb8i[\xa1\xd0\
+f\x05\x87\x0a\xe3V\xa2\xe1\x1d7$\xaa\xccx\x8c\x9e\
+W\x00\x82g\x0c\x80\xe6T\x83\xa3(`\xe3-\x10]\
+\xd3\xeeLk5C^G\xa4\x91\xc9V\xe0\xee`\x0a\
+}a\xd1\x144Z\xb5\xb1\x12\xf7\x10\xd6t\x88\x85Q\
+U\x14*\x9cA\xc0\x8a\xb2>\xe2n\xc3\x13\xc6e:\
+\x97-\x1e\x99Z\xb5\x9e\xd2T\x15.-h\xa0PB\
+)\xec\x19<\xd3\x1e3\xa5P\xc8\x06\x08r\xb0\xbbS\
+\xab.\x8b\xacP\x03\x85\xfe\x1d\xd9\x0cn9\xc5\x14\x90\
+\xbc\xbf\x8c\xe0f.4\xd1\x14\xa2-\x01\xec\xd4H0\
+\xf0\x89\x0c\x88\x86\xfc\x8c{\x00\xe0h\x12\xe6\x16w\x0c\
+\x80\x8f\xa9\x90U\xd1\x90A8B9U\xc3\xfe\x02A\
+\xd1w\x98\xedB\xc4\xe1\xc4\x01\xe2\x025V\xb2\x8e\xd2\
+\xe1~\xd5\xcb\xc11H\x90\xb0wC\xf6=g\xd4\x12\
+\xb7s\x9d\xc1&\xe9\xc3q:\xad?\x1eW=\xe3i\
+\x0c\x85\xf0z4\xd0\xacX9n\x04\xf9\x028\x1d\xfc\
+\xa1\x96\x88\x11~\x93B@&\x82\xfa\x85+\xd0>\x87\
+y\x94\xbe\x9d\x1f\xd4:\xba1`\x18=\xe4U@F\
+2/Jr\xb7\xd5[\x9dw\xf9\xef\xe2\xd1\xa2\xa2\xb6\
+z\xe3\xcaM\xfb(\xca\x1c\xaeD\xcd\xe8\xa1\x93!\x19\
+\x14%\xd5\xa6\x12,\xe4\xeb\xcatZ80\xd0\x1d_\
+Xk\xe0\xe0\xf5]\x10\x0a\x8c\xbaBv\x95F;\x16\
+\x90\x80\x13\xcdD\x8ePBP\x00\xa0\x9e\x8b\x93\xe4\xb2\
+\x05\xdaJ)\xc1N\x09\x84\xec\xda\x16`X +b\
+F\x08\x9e\xaeJA\xa3\x14q\x13\x15{\x1a\xd2oh\
+\xe5F\x18\xd4\x1a\xae\x99\xd8\xb5\xa0f\xf1 D;9\
+q\x1f\x0a{zJ\xb1\xf0\x0d>\xd3\xb2\xcfD.\xc5\
+\x15\xe9\x9e\x01$\xd6Fe\xe78jC\x84 \xa1 \
+\x07\xce\xa1\x99\xcf@&\x9c\xd8\x85\xbf\xb4;H\x16c\
+\x1d\x14X%\x9a4w\xb6\x9e\xfa\xb5\xb7\x8fa\x93\xb6\
+-\x05\x09R#F2\xc4=\x93gZ\x1d\xccm\xe8\
+3-$1.j\xc5\xceNz\xa0\x94q\xb4\x8a\x04\
+\xab\x13\xd7\xedmo\xf4\xbe\xa5\xbe\x80\xbf\xf1\x18?\xf7\
+\x0a\xfd\xd4\x92\xcd\x0f\xb8~\x13\x0b\xbfC\x88\xdc{\x07\
+\xdb$6\x98\xda\x96\x06B\xe3u4\x95\xe4X\x0a\xa8\
+Z\x98\xaaA\xa7+\x81\xd4\x94\x8c*\xa1\x1c\x07\xc0\xf3\
+\xeb\xb8\x5cC\x9f\xb9\x10!\xa2\x09\xef\x00^\x9d\x92\x91\
+Pd\xd4~\x12\xe8\xb3\xc8\x1a\x818k\x87\x95\xe1y\
+\x11\x85G\x05\x80\x1c\xcc\x02\x05t\x02\xec\x07\x02T\xe8\
+\x10\xa0\x93\x96k\xd0m(\xb4\xbc\x1a\x88\x99\xddD8\
+o\x0d\xb4\x89\x09r\xb4\x04G\xc1\xc9[\x96so\xd8\
+\xf5*>\x07Z2\x80\x81\xa4\x88\xa2\x0d\x10\xc9:\x8c\
+\x15\x84\xd0\x22\xf2-g\x14+\xfdf\xe6!\xca\xb3\x8b\
+\xe5bG\xec\xc3s\xe8\x05\xfa7\xa9F>\xca\xbb_\
+\x89]\xea\xea\x00\x8cg\x1b:uq\x03\xb8\xaf\x91\x05\
+\x8c\x94\x1f2\x9f9\xc1\x194\xee\xd1\xa2\x22\xect\xc6\
+\xc4\xca\xe5-6\x99]\x0c\xc6\xb7\x0a\xe2\x03\x01\x0a\x9e\
+\x94aZ\xb3~\xdfh\xd4\x04\xf0\x80\xd9-\xa0\x9b\xe8\
+\xa3\x15i\xaf\xb5V\xd5\xdf\x08\xad\x80\x8b\x09\xa1\xd8\xa3\
+\x1f\x12\xcf\xcb5\x00\x87\xeeF\xfalm\xb0\xa4dS\
+&T\x01q\x05]\xc3x\x09exEF\xdcwJ\
+\x99)\xc1l\xf9\x84 \xabJ\xfd\xb6\x80\x1cG\xd7\xa9\
+\x99@\x83\xd0\x87Qt_Ax\x0f\xc1\xe3\xd3&p\
+\xb5\x1a\x93)o\x8e\x0d\xbd\xd70@\xa8\xad\x22\x9f\x0a\
+U\xdd\x1eX\x01J1\xb3D\xa6\x011\x12\x99\x98G\
+\xe2\x82\xdd\xc2X\xdc\x00>{\xad:\xc07\x13,\x9a\
+\x81\xc4\xca\xe7\xa1~\xdcO\x030?\x8e` 9\xa6\
+\x05\x0d\x91\x02\xa5\x86\x002n\xf1\xa7GP\x12\xe3\xb5\
+\xa4\xb2R\xa3\xd8\xe8\xb6\x00\xff\x85\x85j\xab7\x8ff\
+\xc2\x7f\xfd\x0e|Y\xa7\xc5]]\x92\xc3\xcfz\x04\x84\
+\xcd}`\x1d\x12\x873\x86\xe0\x10\xbf\x04\xba\xfa\x0c\xcc\
+\x07:\x87\x86\x01\xf4\xe8~Wa\x890AW\xe6\xaf\
+\xe5\xd6\x18@\x9d\xadM\x9f\x956\xce\x83qRjc\
+h\xeb\xecv\xe1p\xb7\x9a\x7fZ(4\x9f-->\
+\x0b\x1dU\xb1\x08\xf6\x82\xeb\xb8\xaf\x07N\x1cS\xda\x91\
+*\x0c@\xf3\x9cdr/\xc5\x08\x0f\x81k\xb1}7\
+2)\xac_R\xb9|\xa9x\xf8\x89\x0b\xe1\xab!\x81\
+\xbb\x84\x01\xf0\xe1\xd4)\xa6\x9b\x86\xda\x0b\xb6\x84\xbf\x16\
+O[_\xcb<\x04\xb8\xdd\xb0e\xd8\xe4DI\xbe\x81\
+\xf5\x00\x7f\x90\x11\x93\xc9\xdf8\xc2\x0b\x08\xf7$Y\xf4\
+\xcc3@\x99\xfa\xd5\xbc\x90\xe7O\x13\x811)\xea\x0f\
+\x13y\xcdc0\x05\xc7\x10\xfc\xec\x06\xb2<\xd9\x1d\xdc\
+@k\x1b\xe0\x04E\xe6ky\x83\x06\x8f\xeb\xb9(\x1f\
+t\xdf6v\x05{\x8eP\xd1:E=X\x02\xf1Z\
+zx\x0d\xf1\x94\xb8\xe1v\xf0-u\x8f\x11[\x9d\x1b\
+\xd5\xbbZ\xc1\xe4\xaeGV9\xf2S?\xa7S\x03\x9f\
+\x22\xfe+lw\xa8\xa8t\x83\xb8T\x83\x00\x02\x82t\
+\xa2USd\x0chR<2\xd3\xda-\x0a\xf2\xe2\x91\
+\xa9\xb96\x14\x91\x02f\xe7\xab.e\x11\xdeBa\xef\
+\xe1\x89&!\x0eU/\xf1\xae\x09!\x16\xd0\x154Z\
+\x9ew\xc2K\xe8\xe2\x09\xc9]m\xd0ffi\xfd\xbb\
+\x8b\x06Z\xa1\x99\x99[\xb6\xaa`\x0c-\xd6-\xb4\xb5\
+\xa2\xac\xfe\x83\x1eV\xf7yY\xc1|\xed\x1b\x17\xb5\xb7\
+`\x08D\xdfj\xfd\xda\xe4Kq\xd6\x80\x0f\xba\x08\x8a\
+\x8eT\x03\x95W\x0c\xb6\x15\xd5\x851\xe5\x1f$\xf7\x93\
+\x9c\xdc\x94 Jh0a\xf2e\xa3\x04\xd5\xe0ya\
+V\x00a\x1a\x04\xbd@\xb1\xda\x82\xe0\x0c#Udh\
+'\xf5\xd2h\x89\x92\xc6\x15 \xf5\xb4\x08\x8er\x14\xdf\
+\x9f\xfeV\x8b\xda\xdc|'Ask\xf1V\xa2\x8c=\
+cP%*\xfco\x95\xd8\xc6\xf6\xda\x04\xa1\x87\x0b\x16\
+\xces>\xcatZ\xb4\xeb\xc1\x1bb\x06*\xd2\x91^\
+\x93\x13*\x94\x0e\x94\x81\xcf\x97zgJN\xae]\xe0\
+\x86\x22jW\xcd\x7f\xdak\xdcd\x003\xe8l4\x22\
+r\x99QY\xc1\x16B\x19,\x81\x96\x98,\xd8N$\
+\x91$@\xa3\xd8\x94\x5cM\xd4_\x1fS\xfb\xf6\xc5.\
+$\xf4\x9eO\xa7\xa2\xd8\x1e\xa1\xb8\x11/6j\x1d\xf2\
+\x8f\xc5)jT\x81\xe1%\x9f4\x10\x9ag\x85}I\
+.\xc36\xbb\x03\x19\xa0\x07\x83\x19j\x13/\x1dt\x19\
+R\xab\xb6W\x0b^%\x08:<Z\xf0\x96\xd2?Z\
+\xd2\xbc\x89\xc97-\x89\xa5\xc0Y\xe2i\xd7\x03*\x1a\
+;\xa9j\xaf\xfct1\xe0\xef\xc0\xd0\xfci\x03F\x0b\
+\xa3\x85\xa8#\xdep)#E>\x07\xa3k\xc4\xab\xe1\
+o\x90WZ\x82\xe1\xac(YSW\xa9\x80\xfd\x0a\x08\
+\x0cl\x16&\x0d\xc1\xd5=ra0\xc8\xa2*\x83\x0d\
+h\xb6X\xae\xb0G\x19\xd0\x0c\xb1\xf5\xb8/:\x16\x0a\
+\xa4jWt\x22\xaf`\x81\x00\xb3k5v]\x1b\xc3\
+\xb7\x06\xa2\xa07\x81\x167Ar\xad\x94\x00\x8d\xce\xe0\
+\x08a81&\x84 \x0a\xd36\xfcA\xcd&\xd2N\
+\xf85m\xc2#I\x82\x97n\xd1B\x18\xb6{7\xcf\
+8\x91\x9bE\xb5\x88)\x18\x9b\xae[\xcb\xc6-\x91\x80\
+\x81\xd3Z\x1a\xe4\x94\xa3\xdb\x06|=\xe8\x15\xc4I\xef\
+\x97\x19p\xe0uh\xaf\x89b`\x1c'\xb6-\xc7H\
++;\xf2\x82m\xda\xc8l-\xb7\x04ms\xeaz'\
+\x92I\xc3\xd7;\xbe\x0f;4\xb4|\x02\xb7U\x89\x0d\
+ej\x95\xdd\x9feda$\x9a\xba\xbe\x16\x1a\xac\xf8\
+\x15H\x8e\xc8\xbbp\xc4\x84\xb9\x18\xd0\x14O\x80\x08b\
+\x02\x03\xfds\xd0\xb1Yf:x\xc4H\xb1J=\xe2\
+\xba\x82m\xd4\x22*\xb0bz\xec\xdeb\xf4\xc9\xbd\x91\
+\x9ah\xca\xe4\xcdjz\x1c ]\x1esx'=\xae\
+@\xc3\xa3\xe0#\x8d\x93\x94Q\x92\xac5\x84\xcd\x99D\
+1\x90\x1e\xa0\x1c\xdb\xab-\xcb\xc7\xc7\xe0}\x88\x117\
+\x06\xe9\x88\xaf\x9a\x15?\xae\x95%\xf4\x8fv\xdb\xda|\
+\xd9\x9b\xa4\x85#.\xb5\x04s\x82\xc01\x1d~\xcc\xaa\
+Xd\xe8\xacC\xf9\xa3\xc2\xa4\x08\x98\x06\x9a.\xa2\xbf\
+m\x90\x1b\x8c\x1e\x81\x05\xf3n4\x0f\x86\xb7\xfb\x82\x1a\
++\xa0$l\x89\x03\xd5\xc6\xed\xe9M\xcfR\xdc\x10\xa2\
+j)^\x12\xf1\xa1\x17\x9fN|\xda0\xa0U\xc2\xa7\
+\x96\xaf\xa4\x95\xb4\x15\xe2\x0c\xc5\xd9\x04g=QdA\
+\xf9\xff\x8cEd\xfejt\xc09v*\xe1\x00v\xa7\
+\x84\xee\x964n\xc4\xc4\x0ar\xdcu_\xc0\xec\xdc\xec\
+\xf8\x7f\x98\xa7\xdc\x9d\xc7\x0f\xbcsi\xa7\xfeB/\xe6\
+o\xfc#\x90E#\x0f\x10\x8d\xe2s\xe0S\xe7\xe2\x99\
+\x86\x92\xc5*Q\xe5\x80ro\xc0\xc8\x96\x88\xc74Q\
+\xa5J\xba\xc5?,O\xf7\xd3\xad\xa9a\x91+\x05\x01\
+\xe2V\xb4i\xefQ\xb5\xcfP\xe5\x82\xa4\x0c\xa8,b\
+\xdf,\x1a2\x00T]\x126\x07OK\xc6\x11\xa8\x0b\
+,\xfc\xa1[\x8bl\xbd\xe0}\x07\xad\xfa\xc2\xa4q \
+MI\xefq\xf8\x84E_\xd6IJqr\x06\xd7\xc5\
+\xd9\xce\xa1\xcbK\x9c9\xa2\xf2\xdc\xc1R\xe2\xdeh\xfc\
+\x08Zw\x10\x8e\x82\xc4h\x8dN_$\xbbr\x9f\x88\
+\x19\xa1/\x0d\xa1=\xaa:\xa7\xa1'0HT\x9cu\
+\xa32\x82\xa1Up\xac\xd4\x8e\x5c\xf8d\xb1/}\x9b\
+\x89\xee\xa2\xf0\x0e\xe8\xa2\xb5A\xcc\xf5@\xb1W\x00O\
+\x0bE8,\xe3\xf6\x12\xf9\xe2\x15A\x0aOk\xf6\x81\
+1\xe5\x18\x22\xa5\xaevTwR\x5c9<;9#\
+\xf4\x0b\xcd\x90\xc9\x15\xe3L\x18\xc9u7|\xab\x9e\x17\
+\xa0\x8d\xb5\x0c\xb6\x19\x04S_Z\x98w\x8b\xfc,|\
+\x858\xb4\xc1]Y52\x22\xf81\xddlZ\xb3\xef\
+NK\xe6w\xc1\xcal_k\xcd\x00~\xac\x085j\
+na4\xee\xce\x81t@\x19\xaf\x9d\x83\x15\x92\xd6\xd8\
+\x9e\x9d\x03\xd4\x95\x96\x9b,\x83\xa3\xaa\xb4\xbac!H\
+J\x04\x98\xddx\xd1\xdc\x18\x82VS*\x91Dqp\
+\xe7\xeeI#\xf3\xe8\xb6j\x1dkg\x9aV\xad\x83<\
+\xc1\x9e\xc8\x91\xca\xd3\x8e\x16\xb1\xa2U\x8fgH\x81P\
+\xeb\x05\xcb\x12\xa1\xe3\x0d \xb9\xcd\x84]E\xde\xe0^\
+<\xfeeG\x8a\xed\xc0\xfa[\xf2\x12\x0a\xb1\xb02\x11\
+F\xe0\x80\xfb\x86\xe1j5\xa8j\x91\x19\x09T\x05\x22\
+\xf4z\xadc\x11bY\xba\x0d\xdf'\x89\xa56Gk\
+\x22w\xeav\x0b\xc3F\xd7\xf8\xf0\x03\xf6\xf2\x1a\xc9\x93\
+\x92\xc6gxd)\x81\x90|\xa0\x88z\xce\xae\x12~\
+\x8c\xdfP\xd5d\x0b\xca\xe8\xd1\x80\x84\x0c\xe1\x12]\xcb\
+B\xa0\x86\xe7\x15`\xab5\x90\x0a\xf47\xe7\xa9\x99!\
+\x89\xfb\xf8\x01\xb1Gw\xce\xcdD\xb4\xe5\x02ZQX\
+\xb2g@c\x09Ryw\x9d\xad\xa1\x7f\x82\x9e\x821\
+\xe8|-r\xd9\xd7>\xdf$\xa6\xf1.\x8d\x00b9\
+l!\xc3\x8cZ +\x87\xbbPM-<\xe2^\xab\
+dwq\x90\x89/\x7f\xcc^\xd4\x1fc*\x996\xa2\
+\x9b\xa5e\x9cx\xa6\xea\xec\xa0\xcdI\xd9\xa7\xdd\x8a\xa3\
+=:x8c\xcdi\xd0\x1b\xa9Y\xfam\xd3\xcaH\
+\x22\xa3\xf83\x10\x18`\xe1\xccP>\xbd\xf6\x0e.D\
+<\xe6\x08\xa8\xa3\x82\x80\xc6j\xef\x8c\x99O\xe1>r\
+\xe7\xf2\xd4J\xb94\xde\xbe\xde\x1c\x0c7\xda\x05\xc6Q\
+\xf6\xb5\x1c4Z\xb5i\xe7\xb3\x05\x14W\x22\xe7\x84\x98\
+P\x83\xeb\xd2\x85tURU\xc3\xc9\x95\x9a\x1d \x15\
+\xce0\xabk\x11ZC\x22U\x9a3\x83\x9a\xfb8 \
+\x98a`\xb6r\xbfe\xa3uen\xa5us.!\
+QA\x07B\xbe-\x06+l\xd6\xca\xf9\x86\x15L\xb8\
+P\x98\xc1\x87\xfd\x0f\x8f~\xf5\x9d\x8b\xe8\xe9M\x9a6\
+\x99\x5ca*\xe4\xeb\x94[\x95Q\xe8=\xc7\x88\x9c\xa4\
+\xa6%2urh\x22N\x0b.\x80\xbeA\x0f\x01Q\
+%D0P\xb6p/\x8e\x0e\x11\xd16\xaa\xdb\xeb\x89\
+\x15R\xc6I\xbaW\xb7\x1d\x08\xe4\x03\x88r\x03\xfa]\
+\xfb\xc6\x7f\xdcc\xc7\x1d!\x05IOw\xadg\xbf5\
+\xa0|\xb8t9\x8a\xc3\x9f\xf6\xaf)\xc6:0g{\
+j\xf5|Y\x83\xd6\xd6\xbc6zZ6$\xa5\xd1\xf0\
+\xe1 \x22\x93\xc9 \x08\xcd\xb9\xa7E\xfc/\xd0\x11\xf3\
+Z\xb4\x0e\x1c1\xdf^\xf0\x08\xbd\xb5\xe42mdH\
+4\xba\xc6\xce\x9am\x91\xc2:Q+\xaf\xa8\x5c\xa4\xc3\
+a\xaa\x89le\xb2N\xf5\xee\x96\xaf\x1b\x9c\x93\xa2\x1f\
+@o\x04{\xb4\x83C\xdf\x1c\x83\xa8\x99q\x11B\xba\
+'\x22\xd2\xc5\x04\xd3YZK\xff\xa9\xc3\x98\xa1C\xd7\
+9\x8f\x8f\xa6\xcc\x88\x18J\xa7\xa2\xa0\x8e\xd7b\xa6\x05\
+\xd0g\xf3\x06v\xa17%\xda\xe8N\xb4C\x9e\xb4X\
+R\xff\xa1\xb9\x91s\xa8\x16\xa4\x02\xc4\xd1\xf0M\x0d\xc9\
+\x00\x9fP\xe2X\xd4.gQ\xa3D\x0f\xb6\x02\xe3\xb7\
+\xa1.\xbe\x06\xd8p\x87\xa2\x87\x13\xdbD\xd0u\x9ai\
+\xab?\xb5;K\x0dc9\xa2\xd6\x18\xc7\x09\xb4\x1c\x8a\
+\x82\xf2\x86n\xa5\x9d+4d\x9c\x96\xeaH\xed\xd4\xc6\
+\x8ev\xba\x06\xcd\x1f\xe2\x0e\xa0\x9e l\x06\xe2\x86U\
+m3\xf4\x80(\xd5\xda\xf1k\xd1\x16\x1cs\xe4\x99\xee\
+\x07\xad\x0d\xa4\x97GM\xf6\xee\xac!5'~\xe0\xee\
+\x5c\xa1\x99\xb7\x9eD%l\xd8G\x8a\xaf\x93\x17O?\
+-=\xc9\xe6D\xf8\x98\x80$\xc6r[\x0f\xc4\xb5\x83\
+X\xc3Thu\x1cq?\x1a4\xd9\xb4\x12xwZ\
+\xd1\xd8\xc0$*\x1fo\xae\x0d\xa0O\x9f\x042\xf7\xa9\
+\xa5\xf3<\xb5DG\x87,\xf9C\xbe\xdf\x9e\xaa\x80\x5c\
+\xc0\x97\x16\xd0\xbb\xd22D\xdd\xc1QQl+\x19\xed\
+}\x13\xdb\xfaf,n\x0fL\xca\x03\x06\xf3\xdaaA\
+o\xf9q\xd7\xb6BVL\xab6?I\xc5Xw\x15\
+\xd3\x92\x8a\xe1\xc0%Z\x0f\xf8f\x06\xb4\x17i7h\
+\x06l\x11|\x90\x226\xe2\xb5f\x0b\x9b~h\xf5\x80\
+\xd0\x04\xb8\xb3G\xdd\xe9\xb9\xc1}\xb7$6\x83\xd2\x83\
+\xe1\xbbSBf\xea\xd9\xf2\xf5\x1f>3\x80\xf2\x22\xe5\
+GOS\x1a=\xfcB}\xc0E(\x12\x04s^-\
+k\xdfjC\xca\xa1\xae\xd9\xe5\xb2\xbd*\x1e\xb8\xd3\x7f\
+\x90\x22\x10p\xe2Y\x04s\xc8\x01\xc48\xf22\xb4\xa5\
+\x9eu\xa4\xae\xf4\x08Kn\xc8\xf9\xb1\x93Oz\x18\x19\
+}#\xa7G\xebo\x22\x03\x80`\xeb\xb5.<\x22\xaa\
+a\xa7\x94s\xa1\xc0\xc0Vj\xd7\xa4\x8eo`jE\
+a\x86\xac\x91\x08\x1b\x00\x0d\xd4\x11BY\x9b+\xc8\x0d\
+4\x88\x5c\x0d\x15\x88\xc0@*\xe89\xc7\xa0\x07\x04N\
+\x81\x17\x81=Oe\xa3\x08\xe1\xd65igl4\xc6\
+S\xef\x03\xb6\x05O\xc8\xc0b\x5c\x11\x8d\x94\x11\x0c\x07\
+\xd3\xe8\x1e\x19\x16z\xd3F\xac\xb6\xd8P#\xb833\
+\xd0\xa1\x8dXh\xe3\xc6\xa3\x06b\xd3\x86O_\xafe\
+=\xadQ|\xe5\xd1\xc1f\x9a\xa7, \x9a\x80\xd5A\
+qi\x9f\xaf\xe9\xc9\xcfp\xf7\xf9\xa0\xa4\x93U\x04\x91\
+\x1a\xc2c0Cq\xfe\xddF@\xf2R\x96\xdaF\xa0\
+\xff\xf1\xfd\xf5\xaemR\x1a\x5c\x04\xd69 UM2\
+Q\x05\xb5+\xd7A\x84\x10LL4\x92+\x87\x05\xbf\
+\xbb\x15J\xbb\x9bX[\x04\xc5\xca\x0eU\x8b\x1d\x06\xfa\
+\x98\x5c\xc3~\x96_\xbe\x01S\x03>zp#\xd1\x8d\
+\xda\x0fh\xe90\xf8\x94\xd5\xf7\xf86I\x0eZ\xd5\x88\
+\x8b\x8e6\x97\xee^\xf2\xb9j\x13\x91-\xad)\xe3_\
+\x9e\x85\xe8\x83\x16\x0a\x0fWk\x99WL\x9d\x9fU\xad\
+\xf1P\x837\xf4)2\xe3>G\xb5\xf5\xfc*\xff8\
+J\x9e\xb6\xcf\xab\x8c\xbf\xd7sM\x1c\x04\x07^k\x80\
+\xe7Y\xcf\x81\xdc\x9e'\xcc\x86\x1e$\xba\xfb\x22L\xe6\
+\xae\xc1\x1c\xad/\xcaIB\xccCHt\xb2\xcf\x9e\x89\
+\xdc\x85z\x94\x19\x1a\xe3\xb3q=\x1b,\xfe\xedy\xa8\
+\x8f\xf3\xba\x1a\xfay\x8c\x8a\x99\xad\x86\xf8:t\xbe+\
+\xab\x95\x85\x22t\x0b\xa0\x0e\xd2\xe1COh\xca\x88\xfe\
+8$\x22\xe2\x9e\x07\xa2\xfe4)\x95\x1c0][\x1d\
+h\xb7}\x0c\xc8\xf2\xaf\x03\xcd|\xb2IP\xd0\x97\xa2\
+|\x87\xc3e_1\xbe\x11\xfea.\xe6\x87\xc9|!\
+\xbe\x8fF\xd3j\xe0\x1d\xce\x13\xdc;\x13\xf3\xc9T\xfe\
+\x14Y\xfb6\x9c\x1f\xf3m\xfeI\xf8\x1f'\xf3sl\
+\x7f\x08\xed\x93m\xf3y\xba\xff<\xa1\xfcSp\xcd\xf7\
+k\xf8\xf7%l\xbe_\xc3\xbf/a\xf3\xfd\x1a\xfe}\
+\x09\x9b\xef\xd7\xf0\xefK\xd8|\xbf\x86\x7f_\xc2\xe6\xfb\
+5\xfc\xfb\x126\xaf\xf8\x22\xe0`bW\xa5\xe9e\x82\
+p\xc8q\x04\x84\xc5\xb4H\xeb\xde|\x19z\x8c\xa60\
+\xa3\xa2M\xa8\xa5Uk\xfd_;9#;\xd1\x0a\x06\
+_}\x9f\x9a\xc0\x19bc\xa1\xc3)\x0d\x0a\xa4\x8b\xb1\
+H\x9d\x1e\xdf\xc0^\xae,\xf9\x81\xa4\xc8\xe2\xb5]\xf0\
+<h\x16\xe7q\xfb\xc8\x8f\xb8\xa3\xb1{\xdcDZW\
+\xf5\xb8\x05\x1c\x1aF\xd6CL\xa8\x13\xf8z\x91>\x94\
+\x89\x085\xde\x95o\xff\xf0\xfe\xdd\xef\xfcQ\x0a\x98\x7f\
+\xff\xdc\xe1\x7f\xe5\x85(\x1el\x87\xb5\xe6\xff\x015\x94\
+3\xa6\xf6\xe2\x8e\xf3\x00\x00\x01\x85iCCPIC\
+C profile\x00\x00x\x9c}\x91=\
+H\xc3@\x1c\xc5_S\xa5R*\x0ev\xa8\xe2\x90\xa1\
+\x8a\x83\x05Q\x11G\xadB\x11*\x84Z\xa1U\x07\x93\
+K\xbf\xa0IC\x92\xe2\xe2(\xb8\x16\x1c\xfcX\xac:\
+\xb88\xeb\xea\xe0*\x08\x82\x1f \xae.N\x8a.R\
+\xe2\xff\xd2B\x8b\x18\x0f\x8e\xfb\xf1\xee\xde\xe3\xee\x1d \
+\xd4\xcbL\xb3\xba\xc6\x01M\xb7\xcdT\x22.f\xb2\xab\
+b\xe0\x15~D\x10\xc4(\x06df\x19s\x92\x94\x84\
+\xe7\xf8\xba\x87\x8f\xafw1\x9e\xe5}\xee\xcf\xd1\xab\xe6\
+,\x06\xf8D\xe2Yf\x986\xf1\x06\xf1\xf4\xa6mp\
+\xde'\x0e\xb3\xa2\xac\x12\x9f\x13\x8f\x99tA\xe2G\xae\
++M~\xe3\x5cpY\xe0\x99a3\x9d\x9a'\x0e\x13\
+\x8b\x85\x0eV:\x98\x15M\x8dx\x8a8\xaaj:\xe5\
+\x0b\x99&\xab\x9c\xb78k\xe5*k\xdd\x93\xbf0\x94\
+\xd3W\x96\xb9Ns\x08\x09,b\x09\x12D(\xa8\xa2\
+\x842l\xc4h\xd5I\xb1\x90\xa2\xfd\xb8\x87\x7f\xd0\xf5\
+K\xe4R\xc8U\x02#\xc7\x02*\xd0 \xbb~\xf0?\
+\xf8\xdd\xad\x95\x9f\x9ch&\x85\xe2@\xf7\x8b\xe3|\x0c\
+\x03\x81]\xa0Qs\x9c\xefc\xc7i\x9c\x00\xfeg\xe0\
+Jo\xfb+u`\xe6\x93\xf4Z[\x8b\x1e\x01}\xdb\
+\xc0\xc5u[S\xf6\x80\xcb\x1d \xf2d\xc8\xa6\xecJ\
+~\x9aB>\x0f\xbc\x9f\xd17e\x81\xfe[ \xb8\xd6\
+\xec\xad\xb5\x8f\xd3\x07 M]%o\x80\x83C`\xa4\
+@\xd9\xeb\x1e\xef\xee\xe9\xec\xed\xdf3\xad\xfe~\x00p\
+\xa2r\xa6'\xfd-\xde\x00\x00\x0d\x1aiTXtX\
+ML:com.adobe.xmp\
+\x00\x00\x00\x00\x00<?xpacket b\
+egin=\x22\xef\xbb\xbf\x22 id=\x22W\
+5M0MpCehiHzreSzN\
+Tczkc9d\x22?>\x0a<x:xm\
+pmeta xmlns:x=\x22a\
+dobe:ns:meta/\x22 x\
+:xmptk=\x22XMP Core\
+ 4.4.0-Exiv2\x22>\x0a \
+<rdf:RDF xmlns:r\
+df=\x22http://www.w\
+3.org/1999/02/22\
+-rdf-syntax-ns#\x22\
+>\x0a <rdf:Descrip\
+tion rdf:about=\x22\
+\x22\x0a xmlns:xmpM\
+M=\x22http://ns.ado\
+be.com/xap/1.0/m\
+m/\x22\x0a xmlns:st\
+Evt=\x22http://ns.a\
+dobe.com/xap/1.0\
+/sType/ResourceE\
+vent#\x22\x0a xmlns\
+:dc=\x22http://purl\
+.org/dc/elements\
+/1.1/\x22\x0a xmlns\
+:GIMP=\x22http://ww\
+w.gimp.org/xmp/\x22\
+\x0a xmlns:tiff=\
+\x22http://ns.adobe\
+.com/tiff/1.0/\x22\x0a\
+ xmlns:xmp=\x22h\
+ttp://ns.adobe.c\
+om/xap/1.0/\x22\x0a \
+xmpMM:DocumentID\
+=\x22gimp:docid:gim\
+p:b21310e5-9d21-\
+44d1-ab3c-9dd6d0\
+c05628\x22\x0a xmpMM\
+:InstanceID=\x22xmp\
+.iid:a07b1f50-06\
+03-4181-85bb-849\
+97bf046ec\x22\x0a xm\
+pMM:OriginalDocu\
+mentID=\x22xmp.did:\
+568dcc6e-5cfb-43\
+c4-9d41-f5c9e488\
+6fd8\x22\x0a dc:Form\
+at=\x22image/png\x22\x0a \
+ GIMP:API=\x222.0\x22\
+\x0a GIMP:Platfor\
+m=\x22Linux\x22\x0a GIM\
+P:TimeStamp=\x22167\
+9654470333966\x22\x0a \
+ GIMP:Version=\x22\
+2.10.30\x22\x0a tiff\
+:Orientation=\x221\x22\
+\x0a xmp:CreatorT\
+ool=\x22GIMP 2.10\x22>\
+\x0a <xmpMM:Histo\
+ry>\x0a <rdf:Seq\
+>\x0a <rdf:li\x0a \
+ stEvt:actio\
+n=\x22saved\x22\x0a \
+stEvt:changed=\x22/\
+\x22\x0a stEvt:in\
+stanceID=\x22xmp.ii\
+d:e3a96143-5dee-\
+4ed6-917c-416fe8\
+b91c1a\x22\x0a st\
+Evt:softwareAgen\
+t=\x22Gimp 2.10 (Li\
+nux)\x22\x0a stEv\
+t:when=\x222023-03-\
+24T11:41:10+01:0\
+0\x22/>\x0a </rdf:S\
+eq>\x0a </xmpMM:H\
+istory>\x0a </rdf:\
+Description>\x0a </\
+rdf:RDF>\x0a</x:xmp\
+meta>\x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a\
+ \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \
+\x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a\
+ \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \
+ \
+ \
+ \
+ \x0a \
+ \
+ \x0a<?xpacket \
+end=\x22w\x22?>\x88u\x1fu\x00\x00\x00\
+\x09pHYs\x00\x00\x10\xdf\x00\x00\x10\xdf\x01tU\
+^0\x00\x00\x00\x07tIME\x07\xe7\x03\x18\x0a)\
+\x0a\xbc\x9cw\x19\x00\x00\x02\xdfPLTE\x00\x00\x00\
+\x00\xff\xff\x00\xff\x80U\xff\xaa@\xbf\x803\xcc\x99+\
+\xd5\x80$\xdb\x92 \xdf\x809\xe3\x8e3\xe6\x80.\xe8\
+\x8b+\xd5\x80$\xdb\x803\xdd\x880\xdf\x80-\xe1\x87\
++\xe3\x80(\xe4\x86&\xd9\x801\xdb\x86,\xde\x85+\
+\xdf\x8a)\xe0\x85'\xe2\x89/\xe3\x84.\xdb\x89,\xdc\
+\x84+\xdd\x88)\xde\x840\xdf\x87.\xe0\x83-\xe1\x87\
+,\xdb\x83+\xdc\x87)\xdd\x83/\xdd\x86.\xde\x83-\
+\xdf\x86,\xe0\x83+\xe1\x86*\xdb\x82.\xdc\x85-\xdd\
+\x82,\xde\x85+\xde\x88+\xdf\x85*\xe0\x87.\xe0\x85\
+-\xdc\x87,\xdd\x84+\xdd\x87+\xde\x84*\xdf\x86.\
+\xdf\x84-\xe0\x86,\xdc\x84+\xdc\x86+\xdd\x84.\xde\
+\x86-\xde\x84-\xdf\x86,\xdf\x83+\xe0\x85+\xdc\x83\
+.\xdd\x85-\xdd\x83,\xde\x85,\xde\x87+\xdf\x85+\
+\xdf\x87-\xe0\x85-\xdd\x86,\xdd\x85,\xdd\x86+\xde\
+\x84+\xde\x86-\xdf\x84-\xdf\x86,\xe0\x84,\xdd\x86\
++\xdd\x84+\xde\x86-\xde\x84,\xde\x85,\xdf\x84+\
+\xdf\x85+\xdd\x84-\xdd\x85,\xde\x85,\xde\x86+\xde\
+\x85+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85,\xde\x86\
++\xde\x85+\xde\x86-\xdf\x85,\xdf\x84,\xdd\x86+\
+\xdd\x84+\xde\x85-\xde\x84,\xde\x85,\xdf\x85+\xdf\
+\x84+\xdd\x85-\xdd\x84,\xde\x85,\xde\x84,\xde\x85\
++\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85,\xde\x86,\
+\xde\x85+\xde\x86-\xde\x85-\xdf\x86,\xdf\x85,\xdd\
+\x85+\xdd\x84+\xde\x85-\xde\x84,\xde\x85,\xde\x84\
+,\xdf\x85+\xdf\x84+\xdd\x85-\xdd\x84,\xde\x84,\
+\xde\x85+\xde\x86+\xdf\x85-\xdd\x86,\xdd\x85,\xde\
+\x86,\xde\x85+\xde\x86-\xde\x85,\xde\x85,\xdf\x85\
+,\xdd\x85,\xdd\x85+\xde\x85-\xde\x84,\xde\x85,\
+\xde\x84+\xdd\x85-\xde\x84,\xde\x85,\xde\x84,\xde\
+\x85,\xde\x86+\xdf\x85-\xdf\x86,\xdd\x85,\xde\x86\
+,\xde\x85,\xde\x86-\xde\x85,\xde\x85,\xdf\x85,\
+\xdd\x85,\xdd\x85+\xde\x85-\xde\x85,\xde\x85,\xde\
+\x84,\xde\x85,\xdf\x84+\xdd\x85-\xde\x84,\xde\x85\
+,\xde\x84,\xde\x85+\xde\x85-\xdf\x86,\xdd\x85,\
+\xde\x86,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xdf\
+\x85,\xde\x85,\xde\x85-\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xdf\x85,\xdd\x85-\xde\x84,\xde\x85,\
+\xde\x84,\xde\x85,\xde\x86,\xde\x85-\xdf\x86,\xdd\
+\x85,\xde\x85,\xde\x85,\xde\x85+\xde\x85,\xde\x85\
+,\xdf\x85,\xde\x85,\xde\x85+\xde\x85,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xdd\x85-\xde\x85,\xde\
+\x85,\xde\x84,\xde\x85,\xde\x86,\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\
+\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85\x1ci\x96\x02\
+\x00\x00\x00\xf4tRNS\x00\x01\x02\x03\x04\x05\x06\x07\
+\x08\x09\x0a\x0b\x0c\x0e\x0f\x10\x11\x12\x13\x14\x15\x17\x18\x19\
+\x1a\x1b\x1c\x1d\x1e\x1f !\x22#$%&'()\
+*+,-./0123456789\
+:;<=>?@ABCDEFGHI\
+JKLMNOPQRSTUVWXY\
+Z\x5c]^_`abcdefhijk\
+lmopqrstuvwxyz{|\
+}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8b\x8c\x8d\
+\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9f\
+\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\
+\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbc\xbd\xbe\xbf\xc0\
+\xc1\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\
+\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdc\xdd\xde\xdf\xe0\xe1\xe2\
+\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\
+\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\x88\x04\x8a\x05\
+\x00\x00\x00\x01bKGD\x00\x88\x05\x1dH\x00\x00\x09\
+vIDATx\xda\xed\x9d\xf9_UE\x18\xc6\x0f\
+\x8ak\xd2&Y\xeeK\x0be\x92\x91\xa5\xa5\x94\x8a\x9a\
+\x99\xa6Yi\x0b\xe6Jfj\x8bXR\x16b\xde\x8a\
+\xd2\x16\xcb\x12\x836\xcd\xca\xa5\x05\x13\xc3\x0c\xcd\xc4\xd4\
+J\x055KD\xad@\x13Q\x90\xcb\x9d? \xf9T\
+Z\xcc{\xce\x9d\x99{\xb9s\xde;\xef\xf3\xabg\x9e\
+\x99\xe7\x8b\xf7\x9c3s\xde3\xc7\xb2H$\x12\x89D\
+\x22\x91H$\x12\x89D\x22\x91H$\x12\x89D\x22\x91\
+H$\x12\x89D\x22\x91H$\x92\xb1\xea\x7f\x9c\x85\xbd\
+L\xcf\xef\x04\xa0\x9f\x09\xf9\x99\xe9\xf9\x99\xe9\xf9\x99\xe9\
+\xf9\x99\xe9\xf9\x99\xe9\xf9\x99\xe9\xf9\x99\xe9\xf9\x99\xe9\xf9\
+\x99\xe9\xf9\x99\xe9\xf9\x99\xe9\xf9k\x03\x88?\xc6\x8c\x06\
+`^~fz~fz~fz~fz~f\
+z~fz\xfe\x7f\x01\xc4\x971\xa3\x01\x98\x9b\x9f\x99\
+\x9e\x9f\x99\x9e\xbf\x06@/\x93\xf33\xd3\xf33\xabO\
+y\x1d\xb8V\xee\xca\xc9\x98y\xff\xa0\x84\xeb\xe2:\xb6\
+k\xd9!6\xaeo\xff{\xa6\xbd\xba\xf2\x87?\xdd\x08\
+ \xe8\xf9\x0b2'v\x8d\xb4Ymo;\xf2\xa5\xf5\
+\x15.\x03\x10T\xb7\xaa\xec1\xcd\xfd=rn\xd4\x7f\
+aI\x98\x02\xc8\x1d\x7f\xbe\xd8c\xf7\x06\x03\x17\x1d\x0f\
+;\x00\xde\xb7\xaf\x92)=\x88~\xf2\x8f\xf0\x02\xb0\xf4\
+2\xd9\xea\x8b\xa8\xd4\xf2\xf0\x01P\xd8O\xa5\x00\xa5\xdd\
+\x8ap\x01\x90y\x96b\x0dN\xe2\xd1p\x00P>B\
+\xbd\x0a\xe9\x92\x9d\xfe\xfdWyj\xeb\x90\xab\x00\x14\xc7\
+\x05R\x87uN\x8e\xdf\x0e&r\x8d\xbew\x13\x80\xe2\
+\xcb\x03\xabDk\xb4\x0c7\x80\x83\x9d\x02\xad\xc5k\xb8\
+\x1a3\x80\xb2k\x02\xafF\x8c\xda\x8a\x18\xc0}\xc1\xa8\
+\xc7l[\x82\x16\xc0[\xc1\xa9H\x1d\x8e\x15\xc0\x81s\
+\x82T\x93\xbb\x0c)\x80;\x9dB]<2%#w\
+S\xc1\xde\xe2\xdd\xf9y\x1f\xce\x19\xd7#\xd2\xe1\xd8\xd6\
+e(\x01|f\x1b(rX\xe6>\xee|\xf9\xc5d\
+\xfb\xc9\xe2T\x8c\x00*\xdb\xdb\xa49?\xad\x18nQ\
+\xf1\xee\xd5v\xc4\xb6#\x04\xb0\xd0f\xb2?\xe1w\xfb\
+6\xbe\xcc\x166\xb3\x02|\x00\xbc\x17\xc3\xd7\xb4|\xe7\
+f\xa5\x03\xe1\xff\x02{\xd0\x01x\x1f\x0cr\xd3o\xfe\
+\xdaUO\x07\x1b>\x80\x0d\x80\xaf\x0b\x14\xa3\xa7\xc8R\
+\xd7\x0c\xa8e\xe3\x83\xc8\x00\xe4A)\xae,\x15b7\
+\x16j\xfb\x022\x00I\xd0\xcc\xee'\xc1\xebGg\xa0\
+q,.\x00\x95\xd05\xfd9\xd1\xd6\x9b\x1b\x00\xad\xb7\
+\xa2\x02\xb0\x14Hpy\x95p\xf3\x07\x81\xe6\x8f\xa2\x02\
+0\x14H\xf0\xbex\xf3_\x1b\xf2\xcd[\xfa\x10\x01\xa8\
+l\xc6\x07\x88\xa9\x960\x80\xce\x83\xdb\x10\x01\xc8\x05\xc6\
+?_\xc6`\xab\xf8u\xc0\x95\x00\x80Ky\xe3R)\
+\x87X\xdea\x00\x22\x00\xdd\xf8\xe1\x8f\x90sH\xe7\x1d\
+\x9a\x9c@\x03\xa0\xa4>?\xfc\x8f\xe5,\xf6\x01\xbf\x81\
+\xff,\x8f\x96L8-~\xd9y\xf8\x04H\xd3B\x08\
+\xe0S`\x12xD\xd2\x03XN\x9f}\xe6_\x7f\x91\
+_V\xba(\x84\x00R\x81Y\x90\xac\xc7T\xde\xe3\x0e\
+4\x00n\xe7\xbb\x9f#\xeb\xf19\xef\xd1\x11\x0d\x80\xb6\
+|\xf7ke=J#8\x8f\x88R$\x00\xfe\xe0{\
+\xaf'\xff\x9c\x17x\xa6\x94\x8b\x04\xc0j`\x1e \xef\
+2\x92w\x99\x8b\x04\xc0\xebRkzvz\x9ew\x99\
+\x84\x04\xc04\xbe\xf7g\xe5]V\xf0.\xb7\x22\x01\x00\
+<\x10Y*\xef\xb2\x83w\xe9\x8c\x04@7\xe1\x99\x9c\
+\xe3\x8c\x92\xbf\x9d<\x0b\x09\x80h\xfe\x02\xa6R\xf1\xd5\
+\x81\x0fq\x08\x05\x802\xa0\xecO\xa5\xef\x1by\x9fo\
+Q\x00(\xe0;\xef\xa2\xd27p\x1d\x5c\x8e\x02\xc0z\
+\xe1\xa9\xbc\xb3\xa6\xf0>\x19(\x00\x00w\xf1\xa3T\xfa\
+\xf6\xf0>\xe9\xff\xfe\xdb\xa1\x84\xd3j\xc5\x1du]\x02\
+\xa4\x11!\x03\x90\xc5\x0f\x5ci.\xbe\x88\xf7\x99\x81b\
+Ad\xae\xe3L^\x5c\x1f\xf3>\x13Q\x00\x98\xc9\x0f\
+\xfc\x95 M)F\xa2\x00\xf0\x10?\xf0E*}o\
+\x046\xb0C\x01`\x5c\xc0\x0b\x82\xb6\xf7\xc2\xf1(\x00\
+\x8c\xe2\x07\xfe\xa5J\xdfE\xbcOw\x14\x00\xeevZ\
+\xc9\x90\xd0o\xbcO\x1c\x0a\x00\xc3\xf9\x81\xafS\xe9\xbb\
+\x14(0@\x01`\x08?\xf0\x0d*}\x1f\xe5}.\
+E\x01\xe0f~\xe0\x9bT\xfa>\xc1\xfbt@\x01\xa0\
+/?\xf0-*}W\x01\x8f\xc8Q\x00H\xb0\x823\
+$/P3\x8b\xf5'\xf0\x9dJ\xdf\x15@\x811\xd6\
+\x93\xe0z\x95\xbe\xcb\x9c\x16\x05M\xb8\x0c\x1e\xc6z\x1f\
+\x10\xac\x1b\xa1\xdfy\x9f\xebQ\x00H\xe4\x07\xbeJ\xa5\
+\xefb\xde\xa77\x0a\x00@\x81\xd3G*}\x17\xf2>\
+\x03\xb1N\x873T\xfa\xce\xe7}\x86b]\x10yY\
+\xa5\xef\x5c\xb1B#\xf7\x01\x98\xc7\x0f<M\xa5\xef\x95\
+\xbc\xcfh\x14\x00\xb2\xc4\xcb\x5c\x1d\xf5\x8e\x98\x8f\xfb\x00\
+\x00%R\xf7\xa9\xf4\x0dT\xcayP\x00\x00^\x15H\
+P\xe9\x1bx\xca\xbe\x10\x05\x80\x02\xb1[X\x95\xa5\xb5\
+OP\x00\x00\xee\xe1\x9b\xab\xf4=\xc0\xe1\xe1\xa8\xab\x01\
+0`\xaf \x95\xbd0\xae\xe0m\xf6\xe3\x00\x00\xbc3\
+\xbfY\xde\xa5\xba\x09_n\xea\xc5\x01\x00(\x91\xf9@\
+\xde\x05x\x00\xdc\x86\xe1\x00\xf0\x18?\xf4Ty\x97\x1c\
+\xde\xa5/\x12\x00\xf3\x03.\x96\xb7qy\x00\x09\x80\xd5\
+b\xcb\xb9~4\x86w\x99\x87\x04@\x09P\xe6+\xbf\
+5\x18\xf0\xeai6\x12\x00\xac\x9d\xe0\xd8\x9dt\x0c\xd8\
+Q\xe1 \x16\x00@\xb9\xfc\xf4 \x9c\x03[1,\x00\
+f\xf1\x83\xbf*\x083\x81!h\x00\x00\x9bgD\x14\
+Kz\x00\xdb\x0f\xce\x12\x04\x90\xaf\x1d\xc0a\xe0\xf7\xbb\
+@\xce\xa2\x88?\x91Z_\x0b\x02\xd8\xa0\x1d\x00\xeb!\
+\xb6\xa2\xed \xa0F\xae)\xbc\xdf\xea\xa4\xe0<\x85\x08\
+.\x80\xa7\x80B\xc5\x9dR\x0e1\x82\xf7\x81\xd0\xdbU\
+k\xf4\x03X'\xb9\x15\x8e\x90\xc1K\xa27\xde\xd9\xfa\
+\x01T\x9d\x0d\xbc;\xbb_\xc2\x00\xdaJe7|\xe8\
+\xe3\x81\xbc\xa6^W\x00\xd8=@\x80)\xe2\xcd\xbf\xb5\
+\xc4\xcacj\xc4\xbf\xa4\xf8\xaa\x0b\x00d\x03\x09\x1a\x0a\
+_\x9f\xab\x80\x93(\xb8 Z\xa3\x97\xb9#\x9fq\x01\
+\x00\xefE@\x84\xce\xa2\xdbf\xa7B;\x09\xd9\xddH\
+dr\x87&\xb9\x00\x00\xb4&`Y\xa3\xc4\xf6P\xf8\
+\x12\xdaBd\xb0\xdd\xd1+\x84\x1e\xa1\x86\x1c\xc0\x8f`\
+\xcd\xfeD\x9f@\xd3\xdc\xa6P\xd3\x1c\xbb\xc3\xf9\xd7\x13\
+.t\x03\x00\xa8P\xe6\x94\xee\xf5\xff\xb5\x9a\xc5\xcd\xa0\
+\x86\xd7\xda\x1e\x0f\xbch\xbf\xcf\x0d\x00\xbe\x81\xdf\xdb\x88\
+\xf1\xb3Chy\x12\xdc\xce~OEod]^\x06\
+\x02\xd8M\xae\x0f\x9c\xa4\xfeX\x87\xbfO\xd5\x9b-\xe1\
+V\xbd\x1c:j\xc3\x1d}\x8d\xcf\x0d\x00\xd6\xd8\xbd\xbc\
+\xd3$1\x07>\x19\xeeM\xebh\xd3\xa4\xde&\xb9\x1f\
+\xdb\x0c7\x00`\xb7\xd9\xbf\xc0\xd4ztF\xe1\xff\x0f\
+>\xf2\xd9\xe3=\x22l\x8fO\x92\x5c9\xb0\x06o\xf4\
+\xe9\x07P\x14\xe5\xf8\x16W\xe3\x98A\xe3\xa7\xa5x<\
+\xa9\xc9\x0f\xdeum\xb4\xe3\xa1\xed\x1d\x1f,e\x81m\
+.\xb8{\xca\xactOJr\xd2\xf8;\x87%\xf4\x8a\
+\x8b\xe90$\xe4\x00\xa0\x85m%\xd5w.2\xdb%\
+\xe6\x12\x1bz\x00\xd5\xbd\x82\x03\xe0\x05?\xfd\xb4\x11r\
+i\x1fz\x00\xac\xe8\x82`\xe4\xbf\xd7_7\xf7\x0b\xd9\
+\x9c\xa7\x01\x00[\xd7$\xf0\xfc\xb7T*,AB\x93\
+\x09\x9f\x06\x00le\x83@\xf3\xf7\xf1\xbf\x0b\xe7\xc9h\
+!\xa7c:\x00\xb0\xe5\x8d\x03\xcb?\x5cd\x17\xd2d\
+!\xab\xfdZ\x00\xb0\xb5\xcd\x03\xc9?Uh\xfexH\
+\xe8#&\xdb\xf5\x00`{\xd5\xbf\xb1q\xf6\x12\xc1>\
+\x9e\x14q\xdb\xa0\x09\x00;\x99\x12\xa9\x08@\xf8=\x8b\
+\xcaX\x01\xb7U\xba\x000\xb6%^\x0d\xc08\xe1\x1e\
+\x0a[\xf8w[\xa2\x0f\x00\xf3\xadP\xba'\x8a\x10\x7f\
+\xc4\xb1\xedB\xbfn\x0b5\x028\xa5\xbca\xf5\xe4\x09\
+t>)\xec\x7f\xa0\xb7?\xb3t\xbd\x00\x18\xfb9\xbd\
+\xa74\x03\x89M\xe8\xaa3[;{\xcd\xd4\x0d\xa0\xe6\
+\xcf\xf4\xc6\xb0VR\x00\x9a\xee\x91p\xafx'\xdev\
+F\xdd\xac\xfb\x84\x5c\x17\x00\xa8Q\xf1\xf2\x94\xc1W\x9e\
+\xcb\x8f\xb0\x1f\xb8\x1f\xff@I\xc2o'v\xa9u\xf3\
+\x19}\xc3\xe89\x1f\xed\xaaV\x1cm\x1d\x00\xf8[e\
+?e/^0\xdf\x93\x96\x9c\xfc\x8cg\xc1\xa2%_\
+\xfd\xeacy\xe0\x0fd\xb1\xfcew{NV\xba\xe7\
+\x89\xe4\xe9\x9e\xb9Ykv\x04\xf8\xcd\xd8:\x03\x00i\
+\x1c\x04\xa0\xc5a\xa6S!\x05P\x02\xde5O2\x07\
+\x00{\x13\x5c\x10\xcd3\x07@5\xf4P\xd4\xear\xd2\
+\x18\x00l\x1b8kx\xd1\x1c\x00l2x3\xf0\xb3\
+9\x00\x8e\x82O\x86\x86\x9a\x03\x80\xbd'\xf9d0\xec\
+\x00@\x1bp\xf8\xf9\xdaZ]\xaa<\xf4\x00\x0a\x1bA\
+\x04\x1e\xd6\x94\xbfo\xe8\x01\xc0\xdfY\xaa\xbfYS~\
+\x0d\x00\x8e\x83_\xa9\xeb\xe6\xd5\x93_\x03\x00hG\xca\
+SzMO~\x1d\x00\xa0]X,+\xaaHK~\
+-\x00\xf6\x82UR\x8fh\xc9\xaf\x05\x00\x9b\xcd\xc7\xbf\
+:\xd3\xab%\xbf\x1e\x00\x95\xb5k\xc5{\xae\x0c\xf5\x99\
+\xf8\xf4\xed\x88\x9e\xeb\xef\xda\xff\xae\xed\xd5\x1b\xbc1\xe4\
+W\xa23\xdb\x81i\xba\x03;Sl\xdd(\xb1\x80i\
+\xcc\xaf\x0b\xc0\xc1\x7f\xbe\xd9\x1c5\xb9\x98i\xcd\xaf\x0b\
+\xc0\xdf;\xb1\xb4x\xfa\x08\xd3\x9c_\x1b\x00oW\xab\
+\xd3\xbc\x13L{~m\x00X\xfe\xb2j\xe6\x82\xfc\xfa\
+\x00hR\xed\xfc\x96\xe9\xf9-\xd3\xf3[\xa6\xe7\xb7L\
+\xcfo\x99\x9e\xdf \x00\x15\x83,\xa3\x01\xd8\xe4\xb7L\
+\xcfo\x99\x9e\xdf2=\xbfez~\xcb\xf4\xfc\x96\xe9\
+\xf9-\xd3\xf3\x93H$\x12\x89D\x22\x91H$\x12\x89\
+D\x22\x91H$\x12\x89D\x22\x91H$\x12\x89D\x22\
+\x91H$RX\xeb/\xa5p6\xac\x5c\xb9\xe4\xd3\x00\
+\x00\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x06\
+\x07\x9e\x88\xb4\
+\x00s\
+\x00h\x00a\x00r\x00e\x00d\
+\x00\x0c\
+\x00V'\xdc\
+\x00C\
+\x00h\x00e\x00c\x00k\x00B\x00o\x00x\x00.\x00q\x00m\x00l\
+\x00\x0d\
+\x01\xb8P\x9c\
+\x00T\
+\x00e\x00x\x00t\x00F\x00i\x00e\x00l\x00d\x00.\x00q\x00m\x00l\
+\x00\x09\
+\x08\xbf\xf4\xdc\
+\x00L\
+\x00a\x00b\x00e\x00l\x00.\x00q\x00m\x00l\
+\x00\x1a\
+\x04'S\xdc\
+\x00S\
+\x00i\x00m\x00p\x00l\x00e\x00L\x00a\x00u\x00n\x00c\x00h\x00e\x00r\x00D\x00e\x00l\
+\x00e\x00g\x00a\x00t\x00e\x00.\x00q\x00m\x00l\
+\x00\x10\
+\x09\x8e}\x5c\
+\x00L\
+\x00a\x00u\x00n\x00c\x00h\x00e\x00r\x00L\x00i\x00s\x00t\x00.\x00q\x00m\x00l\
+\x00\x0a\
+\x0a\xce\x15\xdc\
+\x00S\
+\x00l\x00i\x00d\x00e\x00r\x00.\x00q\x00m\x00l\
+\x00\x12\
+\x06\xc0(<\
+\x00F\
+\x00l\x00i\x00c\x00k\x00r\x00R\x00s\x00s\x00M\x00o\x00d\x00e\x00l\x00.\x00q\x00m\
+\x00l\
+\x00\x06\
+\x07\x03}\xc3\
+\x00i\
+\x00m\x00a\x00g\x00e\x00s\
+\x00\x06\
+\x07\x84+\x02\
+\x00q\
+\x00m\x00l\x00d\x00i\x00r\
+\x00\x0a\
+\x09\xcc\x1a\xdc\
+\x00T\
+\x00a\x00b\x00S\x00e\x00t\x00.\x00q\x00m\x00l\
+\x00\x0a\
+\x0d\xd0R\xdc\
+\x00I\
+\x00m\x00a\x00g\x00e\x00s\x00.\x00q\x00m\x00l\
+\x00\x0a\
+\x0bhq\x5c\
+\x00B\
+\x00u\x00t\x00t\x00o\x00n\x00.\x00q\x00m\x00l\
+\x00\x0d\
+\x0b]\x12\x87\
+\x00c\
+\x00h\x00e\x00c\x00k\x00m\x00a\x00r\x00k\x00.\x00p\x00n\x00g\
+\x00\x07\
+\x0auW\xa7\
+\x00t\
+\x00a\x00b\x00.\x00p\x00n\x00g\
+\x00\x08\
+\x07\x9eZG\
+\x00b\
+\x00a\x00c\x00k\x00.\x00p\x00n\x00g\
+\x00\x08\
+\x0c\xf7Y\xc7\
+\x00n\
+\x00e\x00x\x00t\x00.\x00p\x00n\x00g\
+\x00\x11\
+\x02G!g\
+\x00s\
+\x00l\x00i\x00d\x00e\x00r\x00_\x00h\x00a\x00n\x00d\x00l\x00e\x00.\x00p\x00n\x00g\
+\
+\x00\x0b\
+\x05R\xbf'\
+\x00q\
+\x00t\x00-\x00l\x00o\x00g\x00o\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x87\xc7\xa1\xf0\xe5\
+\x00\x00\x000\x00\x00\x00\x00\x00\x01\x00\x00\x06\xd5\
+\x00\x00\x01\x87\xc7\xa1\xf0\xe5\
+\x00\x00\x00h\x00\x01\x00\x00\x00\x01\x00\x00\x0b\xec\
+\x00\x00\x01\x87\xc7\xa1\xf0\xe5\
+\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x1fg\
+\x00\x00\x01\x87\xc7\xa1\xf0\xe5\
+\x00\x00\x01\x0c\x00\x02\x00\x00\x00\x06\x00\x00\x00\x0e\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x01\x1e\x00\x00\x00\x00\x00\x01\x00\x00&X\
+\x00\x00\x01\x87V\x12\x92B\
+\x00\x00\x00P\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x1c\
+\x00\x00\x01\x87\xc7\xa1\xf0\xe5\
+\x00\x00\x00\xa2\x00\x01\x00\x00\x00\x01\x00\x00\x0f)\
+\x00\x00\x01\x87\xc7\xa1\xf0\xe5\
+\x00\x00\x010\x00\x00\x00\x00\x00\x01\x00\x00'\x9f\
+\x00\x00\x01\x87\xc7\xa1\xf0\xe5\
+\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x01\x00\x00\x14\xce\
+\x00\x00\x01\x87\xc7\xa1\xf0\xe5\
+\x00\x00\x01d\x00\x00\x00\x00\x00\x01\x00\x0039\
+\x00\x00\x01\x87\xc7\xa1\xf0\xe5\
+\x00\x00\x01J\x00\x00\x00\x00\x00\x01\x00\x000\xbf\
+\x00\x00\x01\x87V\x12\x92B\
+\x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x00H\xdd\
+\x00\x00\x01\x87V\x12\x92B\
+\x00\x00\x02\x06\x00\x00\x00\x00\x00\x01\x00\x00LX\
+\x00\x00\x01\x87V\x12\x92B\
+\x00\x00\x01\xb2\x00\x00\x00\x00\x00\x01\x00\x00=D\
+\x00\x00\x01\x87V\x12\x92B\
+\x00\x00\x01\x9e\x00\x00\x00\x00\x00\x01\x00\x00<\x0b\
+\x00\x00\x01\x87V\x12\x92B\
+\x00\x00\x01~\x00\x00\x00\x00\x00\x01\x00\x008\xde\
+\x00\x00\x01\x87V\x12\x92B\
+\x00\x00\x01\xc8\x00\x00\x00\x00\x00\x01\x00\x00C~\
+\x00\x00\x01\x87V\x12\x92B\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/quick/window/AllScreens.qml b/examples/quick/window/AllScreens.qml
new file mode 100644
index 000000000..25438f21a
--- /dev/null
+++ b/examples/quick/window/AllScreens.qml
@@ -0,0 +1,42 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Column {
+ id: root
+ spacing: 8
+
+ Label {
+ text: "Total number of screens: " + screenInfo.count
+ font.bold: true
+ }
+
+ Flow {
+ spacing: 12
+ width: parent.width
+
+ Repeater {
+ id: screenInfo
+ model: (Qt.application as Application).screens
+ Label {
+ required property string name
+ required property int virtualX
+ required property int virtualY
+ required property var modelData // avoid shadowing Label.width and height
+
+ lineHeight: 1.5
+ text: name + "\n" + virtualX + ", " + virtualY + " " + modelData.width + "x" + modelData.height
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ var screens = (Qt.application as Application).screens;
+ for (var i = 0; i < screens.length; ++i)
+ console.log("screen " + screens[i].name + " has geometry " +
+ screens[i].virtualX + ", " + screens[i].virtualY + " " +
+ screens[i].width + "x" + screens[i].height)
+ }
+}
diff --git a/examples/quick/window/CurrentScreen.qml b/examples/quick/window/CurrentScreen.qml
new file mode 100644
index 000000000..1f4da7f0b
--- /dev/null
+++ b/examples/quick/window/CurrentScreen.qml
@@ -0,0 +1,83 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Item {
+ id: root
+ width: 400
+ height: propertyGrid.implicitHeight + 16
+
+ function orientationToString(o) {
+ switch (o) {
+ case Qt.PrimaryOrientation:
+ return "primary";
+ case Qt.PortraitOrientation:
+ return "portrait";
+ case Qt.LandscapeOrientation:
+ return "landscape";
+ case Qt.InvertedPortraitOrientation:
+ return "inverted portrait";
+ case Qt.InvertedLandscapeOrientation:
+ return "inverted landscape";
+ }
+ return "unknown";
+ }
+
+ Grid {
+ id: propertyGrid
+ columns: 2
+ spacing: 8
+ x: spacing
+ y: spacing
+
+ //! [screen]
+ Label {
+ text: "Screen \"" + Screen.name + "\":"
+ font.bold: true
+ }
+ Item { width: 1; height: 1 } // spacer
+
+ Label { text: "manufacturer" }
+ Label { text: Screen.manufacturer ? Screen.manufacturer : "unknown" }
+
+ Label { text: "model" }
+ Label { text: Screen.model ? Screen.model : "unknown" }
+
+ Label { text: "serial number" }
+ Label { text: Screen.serialNumber ? Screen.serialNumber : "unknown" }
+
+ Label { text: "dimensions" }
+ Label { text: Screen.width + "x" + Screen.height }
+
+ Label { text: "pixel density" }
+ Label { text: Screen.pixelDensity.toFixed(2) + " dots/mm (" + (Screen.pixelDensity * 25.4).toFixed(2) + " dots/inch)" }
+
+ Label { text: "logical pixel density" }
+ Label { text: Screen.logicalPixelDensity.toFixed(2) + " dots/mm (" + (Screen.logicalPixelDensity * 25.4).toFixed(2) + " dots/inch)" }
+
+ Label { text: "device pixel ratio" }
+ Label { text: Screen.devicePixelRatio.toFixed(2) }
+
+ Label { text: "available virtual desktop" }
+ Label { text: Screen.desktopAvailableWidth + "x" + Screen.desktopAvailableHeight }
+
+ Label { text: "position in virtual desktop" }
+ Label { text: Screen.virtualX + ", " + Screen.virtualY }
+
+ Label { text: "orientation" }
+ Label { text: root.orientationToString(Screen.orientation) + " (" + Screen.orientation + ")" }
+
+ Label { text: "primary orientation" }
+ Label { text: root.orientationToString(Screen.primaryOrientation) + " (" + Screen.primaryOrientation + ")" }
+ //! [screen]
+
+ Label { text: "10mm rectangle" }
+ Rectangle {
+ color: "red"
+ width: Screen.pixelDensity * 10
+ height: width
+ }
+ }
+}
diff --git a/examples/quick/window/Splash.qml b/examples/quick/window/Splash.qml
new file mode 100644
index 000000000..0a7da219d
--- /dev/null
+++ b/examples/quick/window/Splash.qml
@@ -0,0 +1,42 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import shared
+
+//! [splash-properties]
+Window {
+ id: splash
+ color: "transparent"
+ title: "Splash Window"
+ modality: Qt.ApplicationModal
+ flags: Qt.SplashScreen
+ property int timeoutInterval: 2000
+ signal timeout
+//! [splash-properties]
+//! [screen-properties]
+ x: (Screen.width - splashImage.width) / 2
+ y: (Screen.height - splashImage.height) / 2
+//! [screen-properties]
+ width: splashImage.width
+ height: splashImage.height
+
+ Image {
+ id: splashImage
+ source: Images.qtLogo
+ MouseArea {
+ anchors.fill: parent
+ onClicked: Qt.quit()
+ }
+ }
+ //! [timer]
+ Timer {
+ interval: splash.timeoutInterval; running: true; repeat: false
+ onTriggered: {
+ splash.visible = false
+ splash.timeout()
+ }
+ }
+ //! [timer]
+ Component.onCompleted: visible = true
+}
diff --git a/examples/quick/window/doc/window.png b/examples/quick/window/doc/window.png
new file mode 100644
index 000000000..72487b4d9
--- /dev/null
+++ b/examples/quick/window/doc/window.png
Binary files differ
diff --git a/examples/quick/window/doc/window.rst b/examples/quick/window/doc/window.rst
new file mode 100644
index 000000000..6a8f73eed
--- /dev/null
+++ b/examples/quick/window/doc/window.rst
@@ -0,0 +1,35 @@
+Qt Quick Examples - Window and Screen
+=====================================
+
+This example demonstrates the Window and Screen types in QML.
+
+.. image:: window.png
+ :width: 392
+ :alt: Window and Screen screenshot
+
+In addition, this example demonstrates the usage of the Qt Resource System in
+Qt for Python for more advanced scenarios. There are several QML files, one of
+which imports a module from this sibling directory. Both this "shared" module
+and the QML files of the example need to be compiled into Python modules with
+the resource compiler rcc.
+
+For the "shared" module approach to work with QML and rcc, you need:
+
+* A module definition *qmldir* file
+* A Qt Resource Collection file (.qrc) specifying all the QML files and other
+ resources, plus the *qmldir* file
+
+The .qrc file is the input to rcc. This will generate a Python module (called
+*shared_rc* here) that can then be imported from the Python code. At runtime,
+only this Python module is needed, not the .qrc file or any of the .qml files
+or even the image resources, as they have all been compiled into the Python
+module.
+
+For the example, rcc needs:
+
+* A Qt Resource Collection file (.qrc) specifying all the QML files and other
+ resources. There is no qmldir file here because this is not a module.
+
+This will generate a Python module (called *window_rc* here) that can then be
+imported from the Python code. Again, only the Python module is needed at
+runtime.
diff --git a/examples/quick/window/main.py b/examples/quick/window/main.py
new file mode 100644
index 000000000..62ba6a5e9
--- /dev/null
+++ b/examples/quick/window/main.py
@@ -0,0 +1,40 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QUrl, qWarning
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQml import QQmlComponent, QQmlEngine
+from PySide6.QtQuick import QQuickWindow
+from PySide6.QtQuickControls2 import QQuickStyle
+
+import rc_window # noqa: F401
+
+# Append the parent directory of this file so that Python can find and
+# import from the "shared" sibling directory.
+sys.path.append(os.fspath(Path(__file__).parent.parent))
+from shared import shared_rc # noqa: F401, E402
+
+
+if __name__ == "__main__":
+ app = QGuiApplication(sys.argv)
+ if sys.platform == "win32":
+ QQuickStyle.setStyle("Fusion")
+ engine = QQmlEngine()
+
+ # Add the qrc root as QML import path so that the "shared" module
+ # can be found.
+ engine.addImportPath(":/")
+
+ component = QQmlComponent(engine)
+ QQuickWindow.setDefaultAlphaBuffer(True)
+ component.loadUrl(QUrl("qrc:///window/window.qml"))
+ if component.isReady():
+ component.create()
+ else:
+ qWarning(component.errorString())
+ app.exit(1)
+ app.exec()
diff --git a/examples/quick/window/rc_window.py b/examples/quick/window/rc_window.py
new file mode 100644
index 000000000..30b1fbf0a
--- /dev/null
+++ b/examples/quick/window/rc_window.py
@@ -0,0 +1,335 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.5.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x05\x12\
+/\
+/ Copyright (C) \
+2021 The Qt Comp\
+any Ltd.\x0d\x0a// SPD\
+X-License-Identi\
+fier: LicenseRef\
+-Qt-Commercial O\
+R BSD-3-Clause\x0d\x0a\
+\x0d\x0aimport QtQuick\
+\x0d\x0aimport QtQuick\
+.Controls\x0d\x0a\x0d\x0aCol\
+umn {\x0d\x0a id: r\
+oot\x0d\x0a spacing\
+: 8\x0d\x0a\x0d\x0a Label\
+ {\x0d\x0a text\
+: \x22Total number \
+of screens: \x22 + \
+screenInfo.count\
+\x0d\x0a font.b\
+old: true\x0d\x0a }\
+\x0d\x0a\x0d\x0a Flow {\x0d\x0a\
+ spacing:\
+ 12\x0d\x0a wid\
+th: parent.width\
+\x0d\x0a\x0d\x0a Repe\
+ater {\x0d\x0a \
+ id: screenIn\
+fo\x0d\x0a \
+model: (Qt.appli\
+cation as Applic\
+ation).screens\x0d\x0a\
+ Labe\
+l {\x0d\x0a \
+ required pr\
+operty string na\
+me\x0d\x0a \
+ required pro\
+perty int virtua\
+lX\x0d\x0a \
+ required pro\
+perty int virtua\
+lY\x0d\x0a \
+ required pro\
+perty var modelD\
+ata // avoid sha\
+dowing Label.wid\
+th and height\x0d\x0a\x0d\
+\x0a \
+ lineHeight: 1.5\
+\x0d\x0a \
+ text: name + \x22\
+\x5cn\x22 + virtualX +\
+ \x22, \x22 + virtualY\
+ + \x22 \x22 + modelDa\
+ta.width + \x22x\x22 +\
+ modelData.heigh\
+t\x0d\x0a }\
+\x0d\x0a }\x0d\x0a \
+ }\x0d\x0a\x0d\x0a Compon\
+ent.onCompleted:\
+ {\x0d\x0a var \
+screens = (Qt.ap\
+plication as App\
+lication).screen\
+s;\x0d\x0a for \
+(var i = 0; i < \
+screens.length; \
+++i)\x0d\x0a \
+ console.log(\x22s\
+creen \x22 + screen\
+s[i].name + \x22 ha\
+s geometry \x22 +\x0d\x0a\
+ \
+ screens[\
+i].virtualX + \x22,\
+ \x22 + screens[i].\
+virtualY + \x22 \x22 +\
+\x0d\x0a \
+ screen\
+s[i].width + \x22x\x22\
+ + screens[i].he\
+ight)\x0d\x0a }\x0d\x0a}\x0d\
+\x0a\
+\x00\x00\x04\x8a\
+\x00\
+\x00\x16\xa7x\xda\xcdXYo\xdbF\x10~7\xe0\xff\
+0a_\xec\x06\xba\x93\x17\x15Fa+H\x1d\xc0A\
+b\xcb\xa8\x03\x14}\xa0\xc9\x91\xb8\xf5\x8a+\xec.-\
+9\xae\xff{\x87\xc7\x92\x94\xb8$\xe5ZnJ\x08\x10\
+\xb9;;\xc77\x07g\xd8\xeb\xc1D,\x1f$\x9b\x07\
+\x1a\x8e&\xc70\xec\x0f\x07p\x1d \x5cj\xdaY,\
+\xdd\xf0\x01.\xb4\xdf=<\xe8\xf5`\xfa\xf5\xc3\xb7\xce\
+\x05\xf30T\xd8\xf9\xe4c\xa8\xd9\x8c\xa1\x1cC\xb6v\
+\x85\xb3\xce\xa5\xee\xd0\xb9\x05J\x8f\xb9\x1c\xbe\x5c\xc1\xd9\
+\xf4Cg\xd4\x99p7Rxxpx\xc0\x16K!\
+5\xf1\xbf\x8c\x98w\xb7\xfd\xdc\x9d\x88PK\xc1UL\
+z\xa9\xbf\xdc\xfe\x85\x9e\x86\xc7\xc3\x03\xa0\x8b\xf9c\x90\
+B\xe8\xf4i)\xc5\x12\xa5~\x00\x89$\xc9\xc7\x99\x1b\
+q=]\xba\x1e\x0b\xe7c\x18\xf4\xb7\xa8\xa6\x0fJ\xe3\
+\xe2\xab\xcbQk\x84e\xfa?\xdeZ~\x84\xa7X\xf0\
+\xc6\xc1{W\x82\x97ju\xc3B_\xac\xc6\x90\xfe\x1b\
+\xb5\xe2k\xc5|\x1d\x8c\x89\x8ew\xc9 \xce<\xa6o\
+\xe2%x\x9bh\xdc\xddT\x0f~\x86aq6\xc0\x18\
+\xfe\xcd\xc3\xe7\xc9\xda.\xa7\xe9\x94\x90).\xdd\xcc\xaa\
+\xee*\xd1\xaf\xa0\xd1Ls\xb2\xd5\xc9\xc0\xcd\xf4w\x0a\
+\x82\x89\xe0\xd1\x22,\x1bd\xf0&\xf6\x9b\x8bn\xe8\x05\
+B\xaa\xee\x8cq>&\x1c%\x85\x81\x9db\xe1\xca9\
+\x0b\xd5\xd8f\xc3\xe6\x09e\xbc\xd6J\xb9\xe9t\x0f9\
+\xbf)\x90O\x9c\x00=\x18A\xc7\xb0\xdc<}\xe1\xde\
+\x22''k\x5c\xeb\x12\x1c\x9a\xe2]!\xf9\xd8\x87\x14\
+\xb9\xb1\x13\xc7A\xf9\xe4o\x92\xf9\xdb\xf0\x18\x88\xe6\xb4\
+W\xdd\xf1\x12H\xc9\xfaQuow{K\xb1\x95B\
+\x9d\x1aY%:\x8b\xb4\x16\xa1ME\xa3\xa6\x0a\xc4*\
+\xa5\xb2\xd3\x94B8\xc7\xd5N\x99\xc2\x97\xe8\xaeQ\xe9\
+4\x9a\xba\xf7L\xb1[\x8e\xf0+8\xe7\xccG\x07\x08\
+\xe1i\xb0\x11f\xe5K\x84\x13\x8a\xf4;\xf4\xeb9\x9d\
+\xc0\x9b\x9a\xad*\xcb\xa7\xeaR\xaf\xf7\x06\xfeH\x1d\x8a\
+\xfe$@\xef\xeeV\xac\xff\xac\xd2%[gb]\x07\
+^\x16-7\x19\xa7\x1a{L\x16\x170w\xd3\xa5\x97\
+\xa2}Fr\xe3\xac'\xefz\xb1\xa6H\x81HE\x89\
+GX\x83\x1c\xe3\x8c\x12\xe4\xe4\xe4$\xcb\xf3\xae\xd1\xdc\
+\x06\xd2.\xae\xc8\x18n\xb3\xfbO\x9d\xf0j\xf0f\xde\
+\xfd\x18q\x0eSO\x22\x86\xcek\xf9!\x96\x91\x8a\xd8\
+\x93'\x0a\x86;\xf9\xa2\xbdF\xb8\x91\x16\xfb\xac\x11\xce\
+)1\x5c\xb8\x9ay\xce^\x0c\xce\xd9\xfd\x9eo\xeed\
+\xf9\xae\xd1U\xd8\xdf\x18]\x99q\x9fY\xc8\x16\xec{\
+mIxy\xc4\xe4\x12\xf6\x1409\xbf\x1f\x89\x9a\xbb\
+~m\xd4\x8c\x84}\xa1f\xf8\xb5\xa2\xb6\xf58\x8bB\
+O32\xa4\xe0z-\xa6Z\x92yG\xf7\xc76X\
+\xd5\x8ai/\x80\x9a]\xcfU\xb8]\x85\xc7v\x13%\
+\xeaH\x86\xe0\x98\xd2\xeb\xfc\xd2\xcc.\x8f\x8c\x16~\x8b\
+<\xe6\xdb\x18\x1a\xd0\xda\x18\xe6\xe1\xd0\xc2\xb0(v-\
+\x1cgD\xa8\xd2J\xde\xc2\xd2RNZx\xbby=\
+kaM-\x90\xdf\xaai\x90\x10\xd9XY\x02\xd7\x1c\
+\x8a\xc2\xbbP\xac*\xa7\x9e\xac\xad\xae\xbdc-\xc21\
+!\xab\x12e\xa9\xba\xd1\x14\x03S\xe0\xd0Dr\xd4\xd0\
+\xf8e\xb7I\xef\xc7B\xf3t\x0co\xed8\x001t\
+I@\xe0\xaa\x92N\x89\x94\xac\xdb\xb5$N}\xc6\x1e\
+7\x22rE\x93\xa4\x1b\xceI\xd1Gk\xb7^\x99\xa2\
+b\x10\xfee7n*\xe3\xa0Q\xa3I$c&Y\
+K\xf0\xf8\xffW\xf8\xd4d\xa0\x22m-|\xcb\xf4\xd9\
+\xad}\x9e.\xdc\xd70L\x8f\x86\xfd\xea\x90<|\xd7\
+\xaf\xcc\xbe\xceO\xc3\xc1\xfbw\xfd\xbeS\x9dx\xafI\
+\x90\x91@\xa55H\x8f$\x11\x96\xdc\x15'f\xdc\x9d\
+\xd3\xb4v\xa9\xb3\xca\x0a\x7f\x17\xf7\x1f\xf3\x8a\x92\xbe\xe6\
+\xceYy\xe6\xad\xf5\xd3k\x8c\xca\xb5ymXy$\
+\x04\xe5\xa7\xd0.\xb0\x94\xdc\xd34\xb9+\xdf\x02,~\
+\xff,\x22\x85\xa74r7\x09\xae\xb7\xb2\xe5\x95\x9b\xba\
+\xe4\x84\xdc\x88}o4\xc0f]\xea\x9bX\xa3\x88L\
+#%\x0bLioH\x0c\xb1\x16\xcb\x9c\x94\xee\xeb\x09\
+wwQ\xcb\x88\xdc4\x16P\x09\xc55\xd3Pz\x85\
+\xc5\xa5t.\xca+\xb5)>x\xdfo\x04\xbe\xae\xf1\
+\x9f\xc1\xd1s5=\xae+\xe8\xb0\xbf>>\xbe\x90+\
+|\x99\xa8g\xccH\xcf\x8e4\x8e\xb3\x22\xd0\xe2\x87\x1f\
+\x14g\xce\xb7\xfa\xa0\x18\xf5\x9f\x97\x8c\x5c(<\xaa\x7f\
+\x936\x96u\xb5\xe4\xae\x0aLa\x9f&Oe\xfcD\
+x\xcd\x16(\x22\x93\x1a\x1b\x9fUK\x9f}\xb4\x8c0\
+\x97C\xbf\x7f\x00\xe8k\x05\xe6\
+\x00\x00\x04$\
+/\
+/ Copyright (C) \
+2021 The Qt Comp\
+any Ltd.\x0d\x0a// SPD\
+X-License-Identi\
+fier: LicenseRef\
+-Qt-Commercial O\
+R BSD-3-Clause\x0d\x0a\
+\x0d\x0aimport QtQuick\
+\x0d\x0aimport shared\x0d\
+\x0a\x0d\x0a//! [splash-p\
+roperties]\x0d\x0aWind\
+ow {\x0d\x0a id: sp\
+lash\x0d\x0a color:\
+ \x22transparent\x22\x0d\x0a\
+ title: \x22Spla\
+sh Window\x22\x0d\x0a \
+modality: Qt.App\
+licationModal\x0d\x0a \
+ flags: Qt.Spl\
+ashScreen\x0d\x0a p\
+roperty int time\
+outInterval: 200\
+0\x0d\x0a signal ti\
+meout\x0d\x0a//! [spla\
+sh-properties]\x0d\x0a\
+//! [screen-prop\
+erties]\x0d\x0a x: \
+(Screen.width - \
+splashImage.widt\
+h) / 2\x0d\x0a y: (\
+Screen.height - \
+splashImage.heig\
+ht) / 2\x0d\x0a//! [sc\
+reen-properties]\
+\x0d\x0a width: spl\
+ashImage.width\x0d\x0a\
+ height: spla\
+shImage.height\x0d\x0a\
+\x0d\x0a Image {\x0d\x0a \
+ id: splas\
+hImage\x0d\x0a \
+source: Images.q\
+tLogo\x0d\x0a M\
+ouseArea {\x0d\x0a \
+ anchors.\
+fill: parent\x0d\x0a \
+ onClic\
+ked: Qt.quit()\x0d\x0a\
+ }\x0d\x0a }\
+\x0d\x0a //! [timer\
+]\x0d\x0a Timer {\x0d\x0a\
+ interval\
+: splash.timeout\
+Interval; runnin\
+g: true; repeat:\
+ false\x0d\x0a \
+onTriggered: {\x0d\x0a\
+ spla\
+sh.visible = fal\
+se\x0d\x0a \
+splash.timeout()\
+\x0d\x0a }\x0d\x0a \
+ }\x0d\x0a //! [tim\
+er]\x0d\x0a Compone\
+nt.onCompleted: \
+visible = true\x0d\x0a\
+}\x0d\x0a\
+\x00\x00\x03\x08\
+\x00\
+\x00\x0a\xb7x\xda\xadV\xdfo\xda0\x10~G\xe2\x7f\
+\xb8\xe5\x09\xb6\x91\x00\xeb\xa6)}\x986\xaam\x95\xd0\
+\xdaB\xa5uZ\xf7`\x92\x03\xac&v\xe48\x144\
+\xf5\x7f\x9f\x9d\x1f\x8d\x01\x0f\x82\xb6\x08\x89\xdc\xf9\xbb\xfb\
+>\xdbg_<\x0fF<\xd9\x08\xbaXJ\xe8\x8c\xba\
+0\xec\x0f\x07p\xbbD\xb8\x91j$N\x08\xdb\xc0X\
+\x86n\xbb\xe5y0\xbd\xbe\xb8\xeb\x8di\x80,\xc5\xde\
+e\x88L\xd29E\xe1C\xe9\x9b\xe0\xbcw#{*\
+.F\x11P\x12\xc1\xd5\x04>M/zoz\xa3\x88\
+d)\xb6[\xed\x16\x8d\x13.\xa4\xca\x7f\x93\xd1\xe0a\
+\xd7vG\x9cI\xc1\xa3TC/%\xc6\xf0\xbb\xdd\x02\
+\xf5\xd0\xd0\x07\xc1\xb9,\xacG\x1a\xca\xa5\x0fg\xfd~\
+a/Q\xcf\xc0\x87D\xf0\x04\x85\xdc|\x114tU\
+\xe6\x88\x06T~\xcd\x07\xe1\x15\x0c\xde\xe9\xac\x1a?\xcf\
+X )g\xc0\x05U\xd3 \xfa\xfd\x96O\xa5\xa0l\
+\xd1\xe1\xdd\x8aT?\xe9#\x95\xc1\x12v\xbc\x01I\xf5\
+\x1a\xb9\xd7\x82\xc6Dl\xae\xea4~\x0d\xd2\x8f@\x99\
+\x09\x06NR\x00\x9dsK\x0e5\x7fA\xa8l\x90\xa4\
+D\xda\xb2\x8c\x09\x0b\xd3\x80$x<MTAmy\
+.\xd9J\xad \x86\xcdU\xd12\x02\x0e\xc9\xab\xd2\x9e\
+ \xf39\xafU\xefS\xfdZ\x05d\xec\x81\xf1GV\
+\xa1\x9e\xaa\xdd\xd6\xd5`n\x9e\xae%\xb3R\x0c\xb5<\
+\xcab\x96\xfa04\x0a !\x81*\x0b\x1f\xde\xd7\xbe\
+\xb5_\xb9k\xdf\xc6\xf0\xd5^\xcf{\x01?\xd3@ \
+\xb2_\xb5wLf\x18\x99\x92\xf4#q\xadJ\xd8\x99\
+\xe6`\xb8w\x1cU\xb2\x85\xe12\x12\xa3\xb2\x9c{\xc7\
+w\xb6\x83\xe6\xea\xbc\xb83\x1e\xa9)I\x91\xa1u}\
+\x8asT\x1d\x9a\xc1\xf9\xf3q\x19\xc0\x93\x12\x98\xcbF\
+a\xaa.\xf5U\x92b\xc2\xb29\x09\xd4*\xa3p\xcc\
+\xcc\xdb\xb8R\xac\x89\x86\x0fV\xaf_oV\xbdM6\
+b\x1eb\xd4\x80Q\xc3\x0c\xaa\xdcl\xca\x91\xa2\xd0W\
+\x15\xcb\xe2Y\x93\xd9\x15\xf0o9\xba\xa6\xdc\xf26e\
+\x0ei\xac\xaeMu\x00\xd2\xe3\xb4\xf9\xe6\xe9\x12X\x1b\
+eQ\xec\xe3A\x8e\x84\xae\x95\x19j\x1e\xb99N\x93\
+\xc3/\x0a\xb4+\xf9ge\x86\x9daW\x13C\xc8e\
+\xea\xc51t\xb4\x82\x8e%\x00^\xc2\xf0\xad{\xd6\xb5\
+\x06R\x16,\xbb\x87\xd7#\xe2\x0b\x1a\xa8\xad8Qs\
+\x19v}\xaatK\xdc\xbf\xce \xc4\x95j\x85\xe5\x04\
+\x84\xbe\xdc\x8e\xcb/br\x15\x13\x1dar\x1f\xe2\x22\
++B#2\x8b\x10VT\xc8\x8c\xe8\x15K\x1f$O\
+\x9aP\xe6\xc0\x8fU\x86\xef\xb6\xe2\xda\x05}mPl\
+\x5c-\xa2n\xab\x94\x9d.\xaa\x0c\xb8\xd3:^\x83!\
+\xa4\x1c\xf8q\x90\xdah\xe4\x07\xa8\xf4\x17\x84k\xeb\xf9\
+%\x951Tl|\xc7\xd0a\x0c\xea\xb1#\xa5P6\
+|\xf8?\xc2\x92\xbd\xef\x8c}}\xfb\x98Z\xa6\xbd\x1d\
+\xfdU\xfc\xa0\xaf\x0e\x8b\xc0@\x12\xb6\x88p+\xc3\xa4\
+\xf2\xee\xb6/\xd5;\xb9\xfa\x16t\x04\x86;=\xaal\
+<\xf6\x1bc\xd0\xdf\x06W\xbd)\x0f\xdakg\xeaO\
+\xfd\xfe\x00\x1e\x91\x1e\xa9\
+"
+
+qt_resource_name = b"\
+\x00\x06\
+\x07\xe0Kg\
+\x00w\
+\x00i\x00n\x00d\x00o\x00w\
+\x00\x0e\
+\x0ei\x17\x5c\
+\x00A\
+\x00l\x00l\x00S\x00c\x00r\x00e\x00e\x00n\x00s\x00.\x00q\x00m\x00l\
+\x00\x0a\
+\x0bi\x98\xbc\
+\x00w\
+\x00i\x00n\x00d\x00o\x00w\x00.\x00q\x00m\x00l\
+\x00\x0a\
+\x08\x90\x1a|\
+\x00S\
+\x00p\x00l\x00a\x00s\x00h\x00.\x00q\x00m\x00l\
+\x00\x11\
+\x02YG\x1c\
+\x00C\
+\x00u\x00r\x00r\x00e\x00n\x00t\x00S\x00c\x00r\x00e\x00e\x00n\x00.\x00q\x00m\x00l\
+\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00h\x00\x01\x00\x00\x00\x01\x00\x00\x0d\xcc\
+\x00\x00\x01\x87V\x12\x92R\
+\x00\x00\x00N\x00\x00\x00\x00\x00\x01\x00\x00\x09\xa4\
+\x00\x00\x01\x87V\x12\x92R\
+\x00\x00\x004\x00\x01\x00\x00\x00\x01\x00\x00\x05\x16\
+\x00\x00\x01\x87V\x12\x92R\
+\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x87V\x12\x92R\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/quick/window/resources/icon.icns b/examples/quick/window/resources/icon.icns
new file mode 100644
index 000000000..88b4b2444
--- /dev/null
+++ b/examples/quick/window/resources/icon.icns
Binary files differ
diff --git a/examples/quick/window/resources/icon.ico b/examples/quick/window/resources/icon.ico
new file mode 100644
index 000000000..52af30a6c
--- /dev/null
+++ b/examples/quick/window/resources/icon.ico
Binary files differ
diff --git a/examples/quick/window/resources/icon.svg b/examples/quick/window/resources/icon.svg
new file mode 100644
index 000000000..0b6153206
--- /dev/null
+++ b/examples/quick/window/resources/icon.svg
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="128"
+ height="128"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.2 r9819"
+ version="1.0"
+ sodipodi:docname="icon.svg"
+ inkscape:export-filename="/Users/rutledge/dev/qt5-stable/qtdeclarative/examples/quick/window/window/icon80.png"
+ inkscape:export-xdpi="61.509998"
+ inkscape:export-ydpi="61.509998"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient4009">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4011" />
+ <stop
+ id="stop4019"
+ offset="0.875"
+ style="stop-color:#ffffff;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop4013" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 186.64798 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="559.62469 : 186.64798 : 1"
+ inkscape:persp3d-origin="279.81235 : 124.43199 : 1"
+ id="perspective4876" />
+ <inkscape:perspective
+ id="perspective2836"
+ inkscape:persp3d-origin="22 : 14.666667 : 1"
+ inkscape:vp_z="44 : 22 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 22 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <filter
+ inkscape:collect="always"
+ id="filter4063"
+ x="-0.195491"
+ width="1.390982"
+ y="-0.16235915"
+ height="1.3247183">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="3.3077485"
+ id="feGaussianBlur4065" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10"
+ guidetolerance="10"
+ objecttolerance="10000"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.9775825"
+ inkscape:cx="62.656189"
+ inkscape:cy="42.423381"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ inkscape:window-width="1280"
+ inkscape:window-height="744"
+ inkscape:window-x="2003"
+ inkscape:window-y="156"
+ showgrid="true"
+ borderlayer="true"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:snap-global="false"
+ inkscape:window-maximized="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid7194"
+ visible="true"
+ enabled="true"
+ spacingx="8px"
+ spacingy="8px" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-66.38047,-391.3222)">
+ <path
+ id="path7304"
+ d="M 95.556318,434.65407 L 165.25811,434.65407 L 165.25811,490.10429 L 95.556318,490.10429 L 95.556318,434.65407 z"
+ style="fill:#01afaf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141000000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ style="fill:#a7c706;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 96.869177,465.30846 c 27.677903,3.04574 41.155393,12.11589 48.000003,24 l -48.000003,0 0,-24 z"
+ id="path7300"
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path7302"
+ d="M 165.46767,465.22201 C 137.78977,468.26775 124.31228,477.33791 117.46767,489.22201 L 165.46767,489.22201 L 165.46767,465.22201 z"
+ style="fill:#966406;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1" />
+ <path
+ style="fill:#80ffff;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1;fill-opacity:1"
+ d="M 95.532809,434.35736 L 74.567964,420.38079 L 74.567964,497.25189 L 95.532809,490.26361 L 95.532809,434.35736 z"
+ id="path7270"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:#00ffff;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 74.567964,455.3222 L 95.532809,462.31048"
+ id="path7272"
+ sodipodi:nodetypes="cc" />
+ <g
+ style="fill:#80ffff;fill-opacity:1"
+ id="g7278"
+ transform="matrix(-0.8735352,0,0,0.8735352,244.36615,64.570513)">
+ <path
+ style="fill:#80ffff;fill-rule:evenodd;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ d="M 24,32 L 0,16 L 0,104 L 24,96 L 24,32 z"
+ id="path7280"
+ transform="translate(66.38047,391.3222)" />
+ <path
+ style="fill:#80ffff;fill-rule:evenodd;stroke:#000000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ d="M 0,56 L 24,64"
+ id="path7282"
+ transform="translate(66.38047,391.3222)"
+ sodipodi:nodetypes="cc" />
+ </g>
+ <path
+ style="fill:#ffffff;fill-opacity:1;filter:url(#filter4063)"
+ d="m 119.74679,437.94232 c -0.0487,0.003 -0.0932,0.0315 -0.14149,0.0354 -0.1659,0.0132 -0.33372,0.008 -0.49523,0.0354 -0.96156,0.0643 -1.9037,0.14607 -2.86523,0.21224 -2.94807,0.23566 -5.19987,2.66253 -5.19987,6.01345 l 0,39.51194 3.32508,3.07747 0,-0.0354 33.2155,-5.58898 c 2.28673,-0.39587 4.06792,-3.06727 4.06792,-5.97808 l 0,-32.18967 -30.5625,-5.023 c -0.45263,-0.0748 -0.91269,-0.0942 -1.34418,-0.0708 z"
+ id="path3987"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g3"
+ transform="matrix(0.20572087,0,0,0.20572087,113.4162,440.80626)">
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path5"
+ style="fill:#006225"
+ d="M 43.09,0.3586 C 40.94,0.0036 38.84,-0.0824 36.81,0.0776 31.968136,0.39505671 27.122677,0.73638425 22.28,1.0696 9.62,2.0816 0,12.4996 0,26.8896 l 0,169.7 14.19,13.2 28.87,-209.42 0.03,-0.011 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7"
+ style="fill:#80c342"
+ d="m 174.4,160 c 0,12.5 -7.75,24.07 -17.57,25.77 L 14.23,209.73 V 25.93 C 14.23,9.21 27.57,-2.27 43.12,0.3 l 131.3,21.52 v 138.2 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path11"
+ style="fill:#006225"
+ d="m 154.9,80.96 -12.96,-0.598 0,0.278 6.945,0.32 6.016,0 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path13"
+ style="fill:#006225"
+ d="m 144.6,135.6 c 0.66,0.328 1.43,0.476 2.351,0.476 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 h -6.015 c -1.821,0.832 -3.532,1.457 -5.176,1.848 z"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 91.15,132.4 c 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -4.34,0 -7.68,2.535 -10.01,7.625 -2.52,5.543 -3.793,17.04 -3.793,34.44 0,16.82 1.238,28.75 3.734,35.75 2.356,6.672 5.879,9.976 10.5,9.976 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 m 17.98,3.75 c -4.117,9.707 -10.39,16.06 -18.99,19 0.867,4.449 2.176,7.441 3.922,9.019 1.351,1.211 3.433,1.821 6.222,1.821 0.805,0 1.668,-0.055 2.59,-0.157 v 13.12 l -5.961,0.782 c -1.758,0.23 -3.426,0.343 -5.004,0.343 -5.218,0 -9.445,-1.265 -12.62,-3.824 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 1.629,0 3.309,0.102 5.043,0.305 11.95,1.375 20.62,7.016 26.26,16.79 5.535,9.562 8.254,23.27 8.254,41.26 0,16.48 -2,29.45 -6.043,39.02 z M 130.4,45.91 l 11.52,1.238 0,20.21 12.96,0.914 0,12.68 -12.96,-0.598 0,46.33 c 0,4.032 0.445,6.625 1.34,7.789 0.8,1.067 2.046,1.594 3.71,1.594 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 v 11.65 c -5.136,2.258 -10.18,3.598 -15.12,4.02 -0.718,0.055 -1.41,0.086 -2.078,0.086 -4.48,0 -7.906,-1.301 -10.25,-3.934 -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.535 L 118.046,79.25 V 65.66 l 7.586,0.547 4.773,-20.3 z"
+ style="fill:#ffffff"
+ id="path17"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path19"
+ style="fill:#006225"
+ d="m 100.3,166 c 0.809,0 1.672,-0.055 2.59,-0.157 H 98.054 C 98.73,165.949 99.507,166 100.3,166 z"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 84.85,63.98 c 2.336,5.997 3.484,16.92 3.484,32.81 0,17.7 -1.16,29.57 -3.512,35.62 -1.894,4.879 -4.527,7.902 -7.863,9.07 0.965,0.368 1.992,0.551 3.078,0.551 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -1.09,0 -2.117,0.16 -3.082,0.481 h -0.004 c 3.601,1.121 6.379,4.215 8.336,9.261 z m -2.344,114.3 c -0.113,-0.05 -0.227,-0.105 -0.336,-0.16 -0.012,-0.004 -0.023,-0.012 -0.035,-0.015 -0.102,-0.051 -0.207,-0.106 -0.309,-0.157 -0.019,-0.011 -0.039,-0.019 -0.058,-0.031 -0.09,-0.051 -0.184,-0.098 -0.278,-0.148 -0.027,-0.016 -0.054,-0.036 -0.086,-0.051 -0.082,-0.043 -0.164,-0.09 -0.242,-0.137 -0.039,-0.023 -0.078,-0.047 -0.113,-0.07 -0.07,-0.039 -0.145,-0.082 -0.215,-0.125 -0.047,-0.031 -0.094,-0.059 -0.14,-0.09 -0.059,-0.039 -0.118,-0.074 -0.176,-0.113 -0.059,-0.039 -0.114,-0.075 -0.168,-0.114 -0.051,-0.031 -0.102,-0.066 -0.149,-0.097 -0.066,-0.047 -0.132,-0.094 -0.195,-0.137 -0.039,-0.027 -0.078,-0.055 -0.113,-0.082 -0.078,-0.055 -0.153,-0.113 -0.231,-0.172 -0.023,-0.016 -0.05,-0.035 -0.078,-0.055 -0.098,-0.078 -0.199,-0.156 -0.297,-0.234 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 h -6.351 c -10.15,0.008 -18.22,3.977 -24,12.04 -6.855,9.563 -10.34,24.64 -10.34,45.07 0,18.95 2.547,33.44 7.551,43.34 4.934,9.75 12.05,15.56 21.19,17.5 1.989,9.641 5.09,16.16 9.297,19.54 3.176,2.559 7.403,3.824 12.62,3.824 0.098,0 0.199,0 0.297,-0.004 h 5.539 c -3.406,-0.05 -6.383,-0.66 -8.906,-1.828 L 82.498,178.28 z M 128.4,145.6 c -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.57 l -6.226,-0.285 v -13.59 h -6.016 v 3.035 c 0.871,3.273 1.555,6.82 2.063,10.64 l 4.164,0.192 v 51.36 c 0,6.723 1.367,11.62 4.09,14.67 2.343,2.633 5.765,3.934 10.25,3.934 h 6.015 c -4.48,0 -7.906,-1.301 -10.25,-3.934 z m 2.043,-99.66 -6.016,0 -4.668,19.88 5.911,0.422 4.773,-20.3 z"
+ style="fill:#006225"
+ id="path21"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 96.506224,434.65407 L 166.20801,434.65407 L 166.20801,490.10429 L 96.506224,490.10429 L 96.506224,434.65407 z"
+ id="rect7265" />
+ </g>
+</svg>
diff --git a/examples/quick/window/resources/icon64.png b/examples/quick/window/resources/icon64.png
new file mode 100644
index 000000000..0fa324401
--- /dev/null
+++ b/examples/quick/window/resources/icon64.png
Binary files differ
diff --git a/examples/quick/window/window.pyproject b/examples/quick/window/window.pyproject
new file mode 100644
index 000000000..d3375e95b
--- /dev/null
+++ b/examples/quick/window/window.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "window.qml", "window.qrc", "Splash.qml", "AllScreens.qml", "CurrentScreen.qml"]
+}
diff --git a/examples/quick/window/window.qml b/examples/quick/window/window.qml
new file mode 100644
index 000000000..47cc5257b
--- /dev/null
+++ b/examples/quick/window/window.qml
@@ -0,0 +1,151 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+QtObject {
+ id: root
+ property real defaultSpacing: 10
+ property SystemPalette palette: SystemPalette { }
+
+ property var controlWindow: Window {
+ width: col.implicitWidth + root.defaultSpacing * 2
+ height: col.implicitHeight + root.defaultSpacing * 2
+ color: root.palette.window
+ title: "Control Window"
+ Column {
+ id: col
+ anchors.fill: parent
+ anchors.margins: root.defaultSpacing
+ spacing: root.defaultSpacing
+ property real cellWidth: col.width / 3 - spacing
+ Label { text: "Control the second window:" }
+ Grid {
+ id: grid
+ columns: 3
+ spacing: root.defaultSpacing
+ width: parent.width
+ Button {
+ id: showButton
+ width: col.cellWidth
+ text: root.testWindow.visible ? "Hide" : "Show"
+ onClicked: root.testWindow.visible = !root.testWindow.visible
+ }
+ //! [windowedCheckbox]
+ CheckBox {
+ text: "Windowed"
+ height: showButton.height
+ width: col.cellWidth
+ Binding on checked { value: root.testWindow.visibility === Window.Windowed }
+ onClicked: root.testWindow.visibility = Window.Windowed
+ }
+ //! [windowedCheckbox]
+ CheckBox {
+ height: showButton.height
+ width: col.cellWidth
+ text: "Full Screen"
+ Binding on checked { value: root.testWindow.visibility === Window.FullScreen }
+ onClicked: root.testWindow.visibility = Window.FullScreen
+ }
+ Button {
+ id: autoButton
+ width: col.cellWidth
+ text: "Automatic"
+ onClicked: root.testWindow.visibility = Window.AutomaticVisibility
+ }
+ CheckBox {
+ height: autoButton.height
+ text: "Minimized"
+ Binding on checked { value: root.testWindow.visibility === Window.Minimized }
+ onClicked: root.testWindow.visibility = Window.Minimized
+ }
+ CheckBox {
+ height: autoButton.height
+ text: "Maximized"
+ Binding on checked { value: root.testWindow.visibility === Window.Maximized }
+ onClicked: root.testWindow.visibility = Window.Maximized
+ }
+ }
+ function visibilityToString(v) {
+ switch (v) {
+ case Window.Windowed:
+ return "windowed";
+ case Window.Minimized:
+ return "minimized";
+ case Window.Maximized:
+ return "maximized";
+ case Window.FullScreen:
+ return "fullscreen";
+ case Window.AutomaticVisibility:
+ return "automatic";
+ case Window.Hidden:
+ return "hidden";
+ }
+ return "unknown";
+ }
+ Label {
+ id: visibilityLabel
+ text: "second window is " + (root.testWindow.visible ? "visible" : "invisible") +
+ " and has visibility " + parent.visibilityToString(root.testWindow.visibility)
+ }
+ Rectangle {
+ color: root.palette.text
+ width: parent.width
+ height: 1
+ }
+ CurrentScreen { }
+ Rectangle {
+ color: root.palette.text
+ width: parent.width
+ height: 1
+ }
+ AllScreens { width: parent.width }
+ }
+ }
+
+ property var testWindow: Window {
+ width: 320
+ height: 240
+ color: "#215400"
+ title: "Test Window with color " + color
+ flags: Qt.Window | Qt.WindowFullscreenButtonHint
+ Rectangle {
+ anchors.fill: parent
+ anchors.margins: root.defaultSpacing
+ Label {
+ anchors.centerIn: parent
+ text: "Second Window"
+ }
+ MouseArea {
+ anchors.fill: parent
+ onClicked: root.testWindow.color = "#e0c31e"
+ }
+ Button {
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.margins: root.defaultSpacing
+ text: root.testWindow.visibility === Window.FullScreen ? "exit fullscreen" : "go fullscreen"
+ width: 150
+ onClicked: {
+ if (root.testWindow.visibility === Window.FullScreen)
+ root.testWindow.visibility = Window.AutomaticVisibility
+ else
+ root.testWindow.visibility = Window.FullScreen
+ }
+ }
+ Button {
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.margins: root.defaultSpacing
+ text: "X"
+ width: 30
+ onClicked: root.testWindow.close()
+ }
+ }
+ }
+
+ property var splashWindow: Splash {
+ onTimeout: root.controlWindow.visible = true
+ }
+}
diff --git a/examples/quick/window/window.qrc b/examples/quick/window/window.qrc
new file mode 100644
index 000000000..89d1de1b1
--- /dev/null
+++ b/examples/quick/window/window.qrc
@@ -0,0 +1,8 @@
+<RCC>
+ <qresource prefix="/window">
+ <file>window.qml</file>
+ <file>Splash.qml</file>
+ <file>CurrentScreen.qml</file>
+ <file>AllScreens.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/quick3d/customgeometry/customgeometry.pyproject b/examples/quick3d/customgeometry/customgeometry.pyproject
new file mode 100644
index 000000000..3e31ac931
--- /dev/null
+++ b/examples/quick3d/customgeometry/customgeometry.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["examplepoint.py", "exampletriangle.py", "main.py", "main.qml", "resources.qrc"]
+}
diff --git a/examples/quick3d/customgeometry/doc/customgeometry-example.jpg b/examples/quick3d/customgeometry/doc/customgeometry-example.jpg
new file mode 100644
index 000000000..8f443c3e9
--- /dev/null
+++ b/examples/quick3d/customgeometry/doc/customgeometry-example.jpg
Binary files differ
diff --git a/examples/quick3d/customgeometry/doc/customgeometry.rst b/examples/quick3d/customgeometry/doc/customgeometry.rst
new file mode 100644
index 000000000..32a18a5fe
--- /dev/null
+++ b/examples/quick3d/customgeometry/doc/customgeometry.rst
@@ -0,0 +1,17 @@
+Custom Geometry Example
+=======================
+
+This example makes use of QQuick3DGeometry and the geometry property
+of Model to render a mesh with vertex, normal, and
+texture coordinates specified from Python instead of a pre-baked asset.
+
+In addition, the GridGeometry is also demonstrated. GridGeometry is a
+built-in QQuick3DGeometry implementation that provides a mesh with line
+primitives suitable for displaying a grid.
+
+The focus on this example will be on the code that provides the custom
+geometry.
+
+.. image:: customgeometry-example.jpg
+ :width: 400
+ :alt: QtQuick3D Custom Geometry Screenshot
diff --git a/examples/quick3d/customgeometry/examplepoint.py b/examples/quick3d/customgeometry/examplepoint.py
new file mode 100644
index 000000000..0360806ae
--- /dev/null
+++ b/examples/quick3d/customgeometry/examplepoint.py
@@ -0,0 +1,51 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import random
+
+import numpy as np
+from PySide6.QtGui import QVector3D
+from PySide6.QtQml import QmlElement
+from PySide6.QtQuick3D import QQuick3DGeometry
+
+QML_IMPORT_NAME = "ExamplePointGeometry"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class ExamplePointGeometry(QQuick3DGeometry):
+ def __init__(self, parent=None):
+ QQuick3DGeometry.__init__(self, parent)
+ self.updateData()
+
+ def updateData(self):
+ self.clear()
+
+ # We use numpy arrays to handle the vertex data,
+ # but still we need to consider the 'sizeof(float)'
+ # from C to set the Stride, and Attributes for the
+ # underlying Qt methods
+ FLOAT_SIZE = 4
+ NUM_POINTS = 2000
+ stride = 3
+
+ vertexData = np.zeros(NUM_POINTS * stride, dtype=np.float32)
+
+ p = 0
+ for i in range(NUM_POINTS):
+ vertexData[p] = random.uniform(-5.0, +5.0)
+ p += 1
+ vertexData[p] = random.uniform(-5.0, +5.0)
+ p += 1
+ vertexData[p] = 0.0
+ p += 1
+
+ self.setVertexData(vertexData.tobytes())
+ self.setStride(stride * FLOAT_SIZE)
+ self.setBounds(QVector3D(-5.0, -5.0, 0.0), QVector3D(+5.0, +5.0, 0.0))
+
+ self.setPrimitiveType(QQuick3DGeometry.PrimitiveType.Points)
+
+ self.addAttribute(
+ QQuick3DGeometry.Attribute.PositionSemantic, 0, QQuick3DGeometry.Attribute.F32Type
+ )
diff --git a/examples/quick3d/customgeometry/exampletriangle.py b/examples/quick3d/customgeometry/exampletriangle.py
new file mode 100644
index 000000000..854430c46
--- /dev/null
+++ b/examples/quick3d/customgeometry/exampletriangle.py
@@ -0,0 +1,188 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import numpy as np
+from PySide6.QtCore import Property, Signal
+from PySide6.QtGui import QVector3D
+from PySide6.QtQml import QmlElement
+from PySide6.QtQuick3D import QQuick3DGeometry
+
+QML_IMPORT_NAME = "ExampleTriangleGeometry"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class ExampleTriangleGeometry(QQuick3DGeometry):
+
+ normalsChanged = Signal()
+ normalXYChanged = Signal()
+ uvChanged = Signal()
+ uvAdjustChanged = Signal()
+
+ def __init__(self, parent=None):
+ QQuick3DGeometry.__init__(self, parent)
+ self._hasNormals = False
+ self._normalXY = 0.0
+ self._hasUV = False
+ self._uvAdjust = 0.0
+
+ self.updateData()
+
+ @Property(bool, notify=normalsChanged)
+ def normals(self):
+ return self._hasNormals
+
+ @normals.setter
+ def normals(self, enable):
+ if self._hasNormals == enable:
+ return
+
+ self._hasNormals = enable
+ self.normalsChanged.emit()
+ self.updateData()
+ self.update()
+
+ @Property(float, notify=normalXYChanged)
+ def normalXY(self):
+ return self._normalXY
+
+ @normalXY.setter
+ def normalXY(self, xy):
+ if self._normalXY == xy:
+ return
+
+ self._normalXY = xy
+ self.normalXYChanged.emit()
+ self.updateData()
+ self.update()
+
+ @Property(bool, notify=uvChanged)
+ def uv(self):
+ return self._hasUV
+
+ @uv.setter
+ def uv(self, enable):
+ if self._hasUV == enable:
+ return
+
+ self._hasUV = enable
+ self.uvChanged.emit()
+ self.updateData()
+ self.update()
+
+ @Property(float, notify=uvAdjustChanged)
+ def uvAdjust(self):
+ return self._uvAdjust
+
+ @uvAdjust.setter
+ def uvAdjust(self, f):
+ if self._uvAdjust == f:
+ return
+
+ self._uvAdjust = f
+ self.uvAdjustChanged.emit()
+ self.updateData()
+ self.update()
+
+ def updateData(self):
+ self.clear()
+
+ stride = 3
+ if self._hasNormals:
+ stride += 3
+ if self._hasUV:
+ stride += 2
+
+ # We use numpy arrays to handle the vertex data,
+ # but still we need to consider the 'sizeof(float)'
+ # from C to set the Stride, and Attributes for the
+ # underlying Qt methods
+ FLOAT_SIZE = 4
+ vertexData = np.zeros(3 * stride, dtype=np.float32)
+
+ # a triangle, front face = counter-clockwise
+ p = 0
+ vertexData[p] = -1.0
+ p += 1
+ vertexData[p] = -1.0
+ p += 1
+ vertexData[p] = 0.0
+ p += 1
+
+ if self._hasNormals:
+ vertexData[p] = self._normalXY
+ p += 1
+ vertexData[p] = self._normalXY
+ p += 1
+ vertexData[p] = 1.0
+ p += 1
+
+ if self._hasUV:
+ vertexData[p] = 0.0 + self._uvAdjust
+ p += 1
+ vertexData[p] = 0.0 + self._uvAdjust
+ p += 1
+
+ vertexData[p] = 1.0
+ p += 1
+ vertexData[p] = -1.0
+ p += 1
+ vertexData[p] = 0.0
+ p += 1
+
+ if self._hasNormals:
+ vertexData[p] = self._normalXY
+ p += 1
+ vertexData[p] = self._normalXY
+ p += 1
+ vertexData[p] = 1.0
+ p += 1
+
+ if self._hasUV:
+ vertexData[p] = 1.0 - self._uvAdjust
+ p += 1
+ vertexData[p] = 0.0 + self._uvAdjust
+ p += 1
+
+ vertexData[p] = 0.0
+ p += 1
+ vertexData[p] = 1.0
+ p += 1
+ vertexData[p] = 0.0
+ p += 1
+
+ if self._hasNormals:
+ vertexData[p] = self._normalXY
+ p += 1
+ vertexData[p] = self._normalXY
+ p += 1
+ vertexData[p] = 1.0
+ p += 1
+
+ if self._hasUV:
+ vertexData[p] = 1.0 - self._uvAdjust
+ p += 1
+ vertexData[p] = 1.0 - self._uvAdjust
+ p += 1
+
+ self.setVertexData(vertexData.tobytes())
+ self.setStride(stride * FLOAT_SIZE)
+ self.setBounds(QVector3D(-1.0, -1.0, 0.0), QVector3D(+1.0, +1.0, 0.0))
+ self.setPrimitiveType(QQuick3DGeometry.PrimitiveType.Triangles)
+ self.addAttribute(
+ QQuick3DGeometry.Attribute.PositionSemantic, 0, QQuick3DGeometry.Attribute.F32Type
+ )
+
+ if self._hasNormals:
+ self.addAttribute(
+ QQuick3DGeometry.Attribute.NormalSemantic,
+ 3 * FLOAT_SIZE,
+ QQuick3DGeometry.Attribute.F32Type,
+ )
+
+ if self._hasUV:
+ self.addAttribute(
+ QQuick3DGeometry.Attribute.TexCoordSemantic,
+ 6 * FLOAT_SIZE if self._hasNormals else 3 * FLOAT_SIZE,
+ QQuick3DGeometry.Attribute.F32Type,
+ )
diff --git a/examples/quick3d/customgeometry/main.py b/examples/quick3d/customgeometry/main.py
new file mode 100644
index 000000000..148330d91
--- /dev/null
+++ b/examples/quick3d/customgeometry/main.py
@@ -0,0 +1,29 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+import os
+import sys
+
+from PySide6.QtCore import QUrl
+from PySide6.QtGui import QGuiApplication, QSurfaceFormat
+from PySide6.QtQml import QQmlApplicationEngine
+from PySide6.QtQuick3D import QQuick3D
+
+# Imports to trigger the resources and registration of QML elements
+import resources_rc # noqa: F401
+from examplepoint import ExamplePointGeometry # noqa: F401
+from exampletriangle import ExampleTriangleGeometry # noqa: F401
+
+if __name__ == "__main__":
+ os.environ["QT_QUICK_CONTROLS_STYLE"] = "Basic"
+ app = QGuiApplication(sys.argv)
+
+ QSurfaceFormat.setDefaultFormat(QQuick3D.idealSurfaceFormat())
+
+ engine = QQmlApplicationEngine()
+ engine.load(QUrl.fromLocalFile(":/main.qml"))
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ sys.exit(app.exec())
diff --git a/examples/quick3d/customgeometry/main.qml b/examples/quick3d/customgeometry/main.qml
new file mode 100644
index 000000000..45bb4462e
--- /dev/null
+++ b/examples/quick3d/customgeometry/main.qml
@@ -0,0 +1,240 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import QtQuick3D
+import QtQuick3D.Helpers
+import ExamplePointGeometry
+import ExampleTriangleGeometry
+
+
+Window {
+ id: window
+ width: 1280
+ height: 720
+ visible: true
+ color: "#848895"
+
+ View3D {
+ id: v3d
+ anchors.fill: parent
+ camera: camera
+
+ PerspectiveCamera {
+ id: camera
+ position: Qt.vector3d(0, 0, 600)
+ }
+
+ DirectionalLight {
+ position: Qt.vector3d(-500, 500, -100)
+ color: Qt.rgba(0.4, 0.2, 0.6, 1.0)
+ ambientColor: Qt.rgba(0.1, 0.1, 0.1, 1.0)
+ }
+
+ PointLight {
+ position: Qt.vector3d(0, 0, 100)
+ color: Qt.rgba(0.1, 1.0, 0.1, 1.0)
+ ambientColor: Qt.rgba(0.2, 0.2, 0.2, 1.0)
+ }
+
+ Model {
+ visible: radioGridGeom.checked
+ scale: Qt.vector3d(100, 100, 100)
+ geometry: GridGeometry {
+ id: grid
+ horizontalLines: 20
+ verticalLines: 20
+ }
+ materials: [
+ DefaultMaterial {
+ lineWidth: sliderLineWidth.value
+ }
+ ]
+ }
+
+ //! [model triangle]
+ Model {
+ visible: radioCustGeom.checked
+ scale: Qt.vector3d(100, 100, 100)
+ geometry: ExampleTriangleGeometry {
+ normals: cbNorm.checked
+ normalXY: sliderNorm.value
+ uv: cbUV.checked
+ uvAdjust: sliderUV.value
+ }
+ materials: [
+ DefaultMaterial {
+ Texture {
+ id: baseColorMap
+ source: "qt_logo_rect.png"
+ }
+ cullMode: DefaultMaterial.NoCulling
+ diffuseMap: cbTexture.checked ? baseColorMap : null
+ specularAmount: 0.5
+ }
+ ]
+ }
+ //! [model triangle]
+
+ Model {
+ visible: radioPointGeom.checked
+ scale: Qt.vector3d(100, 100, 100)
+ geometry: ExamplePointGeometry { }
+ materials: [
+ DefaultMaterial {
+ lighting: DefaultMaterial.NoLighting
+ cullMode: DefaultMaterial.NoCulling
+ diffuseColor: "yellow"
+ pointSize: sliderPointSize.value
+ }
+ ]
+ }
+ }
+
+ WasdController {
+ controlledObject: camera
+ }
+
+ ColumnLayout {
+ Label {
+ text: "Use WASD and mouse to navigate"
+ font.bold: true
+ }
+ ButtonGroup {
+ buttons: [ radioGridGeom, radioCustGeom, radioPointGeom ]
+ }
+ RadioButton {
+ id: radioGridGeom
+ text: "GridGeometry"
+ checked: true
+ focusPolicy: Qt.NoFocus
+ }
+ RadioButton {
+ id: radioCustGeom
+ text: "Custom geometry from application (triangle)"
+ checked: false
+ focusPolicy: Qt.NoFocus
+ }
+ RadioButton {
+ id: radioPointGeom
+ text: "Custom geometry from application (points)"
+ checked: false
+ focusPolicy: Qt.NoFocus
+ }
+ RowLayout {
+ visible: radioGridGeom.checked
+ ColumnLayout {
+ Button {
+ text: "More X cells"
+ onClicked: grid.verticalLines += 1
+ focusPolicy: Qt.NoFocus
+ }
+ Button {
+ text: "Fewer X cells"
+ onClicked: grid.verticalLines -= 1
+ focusPolicy: Qt.NoFocus
+ }
+ }
+ ColumnLayout {
+ Button {
+ text: "More Y cells"
+ onClicked: grid.horizontalLines += 1
+ focusPolicy: Qt.NoFocus
+ }
+ Button {
+ text: "Fewer Y cells"
+ onClicked: grid.horizontalLines -= 1
+ focusPolicy: Qt.NoFocus
+ }
+ }
+ }
+ RowLayout {
+ visible: radioGridGeom.checked
+ Label {
+ text: "Line width (if supported)"
+ }
+ Slider {
+ id: sliderLineWidth
+ from: 1.0
+ to: 10.0
+ stepSize: 0.5
+ value: 1.0
+ focusPolicy: Qt.NoFocus
+ }
+ }
+ RowLayout {
+ visible: radioCustGeom.checked
+ CheckBox {
+ id: cbNorm
+ text: "provide normals in geometry"
+ checked: false
+ focusPolicy: Qt.NoFocus
+ }
+ RowLayout {
+ Label {
+ text: "manual adjust"
+ }
+ Slider {
+ id: sliderNorm
+ from: 0.0
+ to: 1.0
+ stepSize: 0.01
+ value: 0.0
+ focusPolicy: Qt.NoFocus
+ }
+ }
+ }
+ RowLayout {
+ visible: radioCustGeom.checked
+ CheckBox {
+ id: cbTexture
+ text: "enable base color map"
+ checked: false
+ focusPolicy: Qt.NoFocus
+ }
+ CheckBox {
+ id: cbUV
+ text: "provide UV in geometry"
+ checked: false
+ focusPolicy: Qt.NoFocus
+ }
+ RowLayout {
+ Label {
+ text: "UV adjust"
+ }
+ Slider {
+ id: sliderUV
+ from: 0.0
+ to: 1.0
+ stepSize: 0.01
+ value: 0.0
+ focusPolicy: Qt.NoFocus
+ }
+ }
+ }
+ RowLayout {
+ visible: radioPointGeom.checked
+ ColumnLayout {
+ RowLayout {
+ Label {
+ text: "Point size (if supported)"
+ }
+ Slider {
+ id: sliderPointSize
+ from: 1.0
+ to: 16.0
+ stepSize: 1.0
+ value: 1.0
+ focusPolicy: Qt.NoFocus
+ }
+ }
+ }
+ }
+ TextArea {
+ id: infoText
+ readOnly: true
+ }
+ }
+}
diff --git a/examples/quick3d/customgeometry/qt_logo_rect.png b/examples/quick3d/customgeometry/qt_logo_rect.png
new file mode 100644
index 000000000..129b873d5
--- /dev/null
+++ b/examples/quick3d/customgeometry/qt_logo_rect.png
Binary files differ
diff --git a/examples/quick3d/customgeometry/resources.qrc b/examples/quick3d/customgeometry/resources.qrc
new file mode 100644
index 000000000..dc55e9ddd
--- /dev/null
+++ b/examples/quick3d/customgeometry/resources.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ <file>qt_logo_rect.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/quick3d/customgeometry/resources_rc.py b/examples/quick3d/customgeometry/resources_rc.py
new file mode 100644
index 000000000..1422353a3
--- /dev/null
+++ b/examples/quick3d/customgeometry/resources_rc.py
@@ -0,0 +1,585 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.2.2
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x09C\
+\x00\
+\x00#\x9fx\x9c\xe5ZQs\xdaH\x12~\xe7W\xf4\
+\xf9\xf2`\xef\x11\x19;\x9b\x5c\x8e\xab\xab+\x01\xb2\xad\
+*,\x11I\xd8qmm\xa5\x844\xc0l\x84\x86\x95\
+F&l\xca\xff\xfd\xbaG\x12\x08\x108N\xec\xbd\xba\
+\xba)\x17\xa0\x99\x9e\xee\xaf\xbf\xee\xe9\x99Qr\xfa\xd3\
+3\xb6\x86\xfa\x83\xae\x98/\x13>\x99J8\xee\x9e\xc0\
+y\xeb\xfc\x0c\xbc)\x83\x0f\x12Gfs?^B_\
+\x86Z.\x19K?\x90m\x98J9O\xdb\xa7\xa7\x8b\
+\xc5B\xfb]j\x5c\x9cF<`q\xca\xe3\xc9i\xa1\
+\xd5\x9b\xf2\x14\xc6<b\x80\xdfs?\x91 \xc6 s\
+\xbdc\x91\xc0`)\xa7\x22\x06\xf6\xc5\x9f\xcd#\x96V\
+F=!\xa2\xcf\x5cj\x85\xa2W\x1f\xbcO\x1d\xe3\xd2\
+\xb4>\xf5\xcd\xaea\xb9F\xbb\xe3\xf6^\xe5pf3\
+\x96\x04\xdc\x8f\xa0\xaf\xcc3\x18\xa6\xfe\x84\xd1X\xd1\x81\
+\x8a\xa7\x22\x0a\x11\x17\xdc\xfb\x11\x0f!X\xcfAS9\
+j\x14\x9a\xf9K\xc8p\xbe\x5c\xa3\x8eI\x8d\x1f\x04\x22\
+\x09\xfd8`\xb0\xe0r\xaa VT\x14\xf3\xc1\x9f$\
+\x8c\xcdX,a\x9e\x88{\x1e\xb2p%NZ\x5c1\
+\x96\x0b?a \x92&\xf8\x91dI\xecK~\xcf\xa2\
+e\x13\xed\xd4\x1aA\x99Y\x8a\xa6\x90p\x1e\xa3\xba\x02\
+\x0e,\x12.%\x8b+\x16GL.\x18\xf6,E\x06\
+~\x1cn\xc5N\x83\x0b${\x15\x9d\x5c\xafR\x15\x13\
+\x19q\xc8%\x17q\x0aHUMT\x95\xf4\xeb\xb5X\
+\xaem\x9c%\x081!-<\xc6X\xce|\x1a,\xf8\
+c9\xe8@Ey\x06\xbe\xacQ[H\xbc\xce\xd22\
+\xc8\x18\xd2\xdd\x18\xea\x9bL\x91\x83\xbbq\xca\xe2\x90%\
+\x15\xca\x8a<\x22\x85Et\x94\xb7(-\xa2H,\xd2\
+va\xf1\xc8a!Oe\xc2G\x99BO|\x90f\
+\x8cG*\xb2\x04cA=#\x1e\xfb\xc9R\xb9\x926\
+\xf3\xe8 \x01\xf4-2Ijf\x22\xe4c\x1e(\x06\
+0\xb6\x18\xe39\xc2\xa0\x18\x85\xeb\x5c\x90S\xa4\x81P\
+\xe5\x18(\x0e\x15\xeaq\x92\xd2\xc4$a\x03\x80\x9f`\
+\x13\x9br\xaa\x00\x15\x88\x90\xc1,K%$\x8cRC\
+\xa9\xf5G\xe2\x9e\x86\x8au\x9ck\x01\x88\x85D\x06\x9a\
+9Y\x11*$=U\xc3q\xb8\x85\x0a\xad\x06\x91\xcf\
+1\xbd\xb5}P\xd0d\x85\x94\x12\x0a\xba\x1af\x01{\
+)4E\xfaS#\x91P\x04\x19\xe5\xbe_F\xee\x14\
+\x83\x22('1A0\x0dpi\xa6\xf5+\x91Z\xd5\
+\x9f\x95\x9b\x16\xe3j>\xa9\x8f\xfd\x19#p\xbbU\x10\
+\x9dX\x8b\xa8\xb0p\x99\x96z)\xab\x95^\x91\xe4\x05\
+e\xc4(\xa3\xd0+\x01,\x0e\xb1\x97\x0a\x00\xe1\x9a\x09\
+\xc9 \xa7L\xa6\x80\xf9\x8b\x19\x1e\x96j\xc68\x9e\x93\
+\x94\x96e\xa3\xc87H\xe7,\xa0l\xc3\xb9\x9c\xd2\xb0\
+\xa8\x05*\xe3\xd2\xb4p\xa7\xac\xbfW\xa6\x0b\xae}\xe1\
+\xdd\xea\x8e\x01\xf8{\xe0\xd87f\xcf\xe8A\xe7\x0e\x07\
+\x0d\xe8\xda\x83;\xc7\xbc\xbc\xf2\xe0\xca\xee\xf7\x0c\xc7\x05\
+\xdd\xeaa\xaf\xe59fg\xe8\xd9\x8e\xab\x96\x89\xee\xe2\
+\xe4#5\xa6[w`|\x1c8\x86\xeb\x82\xed\x80y\
+=\xe8\x9b\xa8\x0f\x0d8\xba\xe5\x99\x86\xdb\x04\xd3\xea\xf6\
+\x87=\xd3\xbal\x02\xea\x00\xcb\xf6T16\xafM\x0f\
+%=\xbb\xa9L\xef\xce\x04\xfb\x02\xae\x0d\xa7{\x85\x8f\
+z\xc7\xec\x9b\xde\x9d2yaz\x16\x99\xbb\xb0\x1dU\
+\x11`\xa0;\x9e\xd9\x1d\xf6u\x07\x06Cg`\xbb\x06\
+\x90\x7f=\xd3\xed\xf6u\xf3\xda\xe8i\x88\x01\xed\x82q\
+cX\x1e\xb8Wz\xbf\xbf\xe9.\xe9\xb1o-\xc3!\
+\x1f\xaa\xeeB\xc7@\xa4z\xa7o\x909\xe5m\xcft\
+\x8c\xaeGn\xad\x7fu\x91D\x04\xd9o\xaa\xca>0\
+\xba&\xfeF^\x0ctJw\xee\x9a\x85Z\xd7\xf80\
+D9\x1c\x84\x9e~\xad_\xa2\x8f\xc7\x8f\xb3\x83A\xea\
+\x0e\x1d\xe3\x9a\xb0#%\xee\xb0\xe3z\xa67\xf4\x0c\xb8\
+\xb4\xed\x9e\xa2\xdd5\x9c\x1b\xdc\x08\xdd\x7fB\xdfv\x15\
+qC\xd7P`z\xba\xa7+\xf3\xa8\x05\x89C\x09\xfc\
+\xdd\x19\xba\xa6\xa2\xd0\xb4<\xc3q\x86\x03\xcf\xb4\xad\x13\
+\x8c\xf9-2\x84Hu\x9c\xddS\x5c\xdb\x16\xf9\x9c\xe7\
+\x8ea;w\xa4\x9a\xf8P\xd1h\xc2\xed\x95\x81\xfd\x0e\
+\xd1\xabX\xd3\x89\x0e\x17\xd9\xebzU14\x89d*\
+\xc7\xd6\xfe\x82e\x5c\xf6\xcdK\xc3\xea\x1a$`\x93\xa2\
+[\xd35N0x\xa6K\x02\xa62\x8e\x19\x81f\x87\
+\xcaw\x0a\x1abS\xe1\xba\xd8L\xe7\xa6\x8a.\x98\x17\
+\xa0\xf7nL\xc2_\xc8c>\xb8f\x91>\x8a\xbe\xee\
+U\xc1\xbevT9N\x18V\xaf<L\xbc\xca\xbb\x9f\
+\xaf\x9d6\x1a|6\x17x\xde\xf9 ?d<\xf8\xbc\
+\xf5\xa8\xd1!*\x11Q\xba\xdd\xdf\xf7q\x83\x93\xdb\xdd\
+oz;\x1d\xda\x15\x8bp\xc9\xaf$\x8d\xfc\x085\x10\
+<\x96\x97L\xe0>\x92,\xb7\xc6<,\x89\xf1$b\
+\xab\xe1F\xe3\x96cIZ\xc0\xd7\x06\xd5\x1c\x1e\xb6\xb1\
+\xc8P\x87z\x5c\xf0PN\xdbpv\xfe\xbe\xa5\x9e\xa7\
+\x8c\x0ay\x1b\xfe~\x9e?\xdf\xf3\x94\x8f\x22\xd6\x06\x99\
+d\xac\x91\xd7\xbeH$m8\xfa\xeb\xfb\x9f\xdf\xbf\xff\
+\xc7\xdb\xa3\x86\xea\xbd\xe1l\xf1\xa6W\xd8(\xed\xdc\xbf\
+\x09W\xcfx\xe6\x99b]\xd4p'\x8f\xdatJ\xc4\
+\xa2\xbe\x1a\x0c\xb0\xc6&~\xbb\xf8n\xac\xfa\x07\xe8;\
+\x16B:\x16t\xd5P\xc5@i\xa4\x98S\xed\x9e\x8b\
+T\xed4mdR\xbb\xc7\xf9\x22y\x13\x1e\xb7\x9a\x80\
+\x7f\xefZ\xad\x93\x95\xf0\xc3\xdaT\x8f'dH\xc4~\
+\xd4W'\xe4\xaf\xdf\xa0\xf2\xf5\xdb\x16\xaaT\x1f\xaf\xcf\
+\xaa\x8a+D\xa1|2\x19\xf9\xc7-\xedg\x04\xa0\x9d\
+\xd3\xc7\xbb&\x9ci[\xe2\xfel\xc4\x91\x93\xee\xf6\xac\
+3\x9aP~l\xcc\xaa\xa0W\x19\xf1\xed\xb8s*\x1e\
+G\x9c[\xac\xb3}\x08\xf1\xf9\xca\xcf\xf3\xfd\x88\xaf\xf1\
+t\x13m\x81]%[\xe2\x87\x5c\x5c&<\xa4,\xd6\
+\x82)\x0b>\xb3pC4\x0d|\x12\xac:u\xd6\xca\
+}\xaaqlR,\x866\x94J\xe9i\xcb:5J\
+\xa8\x09\x8a\xec\x0c`\xee\xf2?\xe8,\x8b\xd9\x11\xb3\xb4\
+\x0d\xc5\xfa\xd8\x80\xcf\x12<\xf7\xec\x93x\xd8xZ\x1d\
+^\xda\xf0\xcb\x8e\xa2\x1e\x1b\xfbY$\xaf\x0b\x99\x1a\x9c\
+\xd4\x224s\x9b/\xdf\x14\xef;,\xe9\x97\x1d\x1a^\
+\x80\x8a\xd5\xba\x1f\xc1\xafuQ9=\xfd\x0b\xfc2S\
+\xa1\x91E!\xf9\xf5\x09!\xeb\xe2\x11\xf1\xd9C\xb6\xa7\
+\xb0\xd5\xb0\x12\xd3\x05\x85(\x0dF\x16\xfe\xacE\xb1\x96\
+\xfbxW\x12\xa7\x84\xeb9\xcb\xeeI\xdb\xf0f\xaf\xae\
+\xec^\x0f\x7fC\xb7K](\xba\xab\xe9\xd9c\xef\xb1\
+/2\xc3\xe3b\xfd(5\xca\xe4\x91\x9f2\xb5:\xaf\
+\xfd\xf9^\xc1\xfc\xb6\x81\x05\xfdw\xf9)\x12\x13\xf1\x89\
+\xea\xa06\x8f'G\xb5S\x1ej{\x83,\x8a(=\
+\xda\xdb\xf85\x0b\x93\x22\xc2T\x9d\xd4\xce\xc3\x1b\xd5\x18\
+\x0f\xce\x88\x8fh.\xbc*\xb9\x86\x7fox\x00m\x88\
+QU\xad\x1e\xda%\xb2\xc8O\xf4\x99\xc8b\x8cEK\
+{\xfb\x84\xf4/\x7f\xd5f\xff\x13\xd2\x7f\xb5/\xbfD\
+\xfeol\xfa\xf0\xf5%\xea\x09n\x1f\x18\xa8\xba\x18\xf6\
+\x8b\xb1\x97\x08~\xb1\x7f\x1c-\x19\xdd\x06\xeb\xb3nN\
+\xce\xbb\xfc\x0fV.\xb3A\xd9\xf1\xe4Z\x97\x7f\xaa\xaf\
+[?\x0d\x8b3Z\x84\x17\xc25-A\xd9\x19\xda\xa3\
+\xdf\x18\xbd\x06\xab\x9c2\x8a\xc9\x08;\x9b\xc5\xf9Q\xae\
+2\xb5\xef\x8fv\xb2Db^\xa3\x83C\xbc\x15\xde\xea\
+nO\xdd\x7f1Q\xe9\xe5\x86\xc0\xfb\xe5=\x9f a\
+\x9b\x8e\x8f\x11\x816\x12QX9ym\xfa\xd5\xc9\xa4\
+\x14\xf1e\x22\xb2\xf9\x96\xb9\x91\x1a\xa1L\xd8\xdcH\x9b\
+\x9bE\xba\xb9\x95\xb4\xb5K\xc2!\x91\xdcT\xcd\xd9k\
+C}\x9d\xcb\xd5\xedv\xd3\xc1b\x85l\xb9\x97\xbb\x1e\
+d\xe9@D<X\xaa\xd5b\x89\x0b\xea\xf9>p\xa5\
+\xb3u\xe0h\x0c\xdd.WZ~\x1d\xf7\xe7\xf3\xa8x\
+\xc9\x03\xc7e\x158\xd9\x83}\x8c\x0b\xee\x05\xc1\xafB\
+\xf3}\xe8\xd5\xa2I_\x04\xbbX\xec$>\xb5'\x1c\
+\xe0\xf6,\x9f\xb2\xd5\x12\xb3\xc5\xc0\xb5\xc0\x1d\xf0#\x04\
+X7\xd2\xfa\xb2!\xe2.z\xa3\xdc\xa5S\x9d\xb6q\
+B\x83\xbf\xfd\x0b\xcej\xa7=F\xc4.![\xb0\x0f\
+\xe3\xbe`\x0b\xac6?\x00\xfc\xf5\xf3\x02\x7fx\x91\xc0\
+\xdc=\xc5\xbf\xad\xe3\xf5\x7f94?\x04\xfd\xc5\x82\xf3\
+\xac\xcb\xafn\x9b\xaa\xf0@\xae\xe4\xef\x06\xe0\x98\x8f!\
+\xcd\xe6\xf4\x8e\x81\x85[\xc5d\x13\xaa\xabv\xe6=\xb7\
+\xaa\xad+\xca\x8e\x0c\x95\xaf6\xdd\x16w!\x09\xeco\
+\xd5\x0c\xa4\x92\xcd\xf33A\xddqO\x9d\x0b\xea5~\
+K$\xbe\x9f\xf7\x83\x97\xa0.\xf5u\xc4\x97=,\xe5\
+\x17\x97}Q)\xdes\x97\xf7\x1czA?\xa9\xdd\x5c\
+\xa9\x1d(\xf4O\xe7\xe0\x90\xf7\xd4\xf6\xa5S\x05\xfc\xcc\
+\x8f3<{\xfa\xea\xb6\xb4\x0bww\xc1\xeeM'j\
+\xeb\x94\xaa%Ly\xa82\xaa.q\x14*Q\x9f\x1b\
+\xd4\xaa\x89\xd5\xaa_\xccEv\xed\xd3\xfeg\xaf\xf5\x1f\
+\xcb\xb9\xe2\xde\xb5/\xedX\xec\xa3%u\x17\xcb_\x11\
+\xe1mc\xfe'$\xdc\xa3\xb8\x877\x8f\xad\x94\xe1\xcd\
+\xff\xd6\x22A\xbc\xcf\xbe@jXR\xbe\xfd\x1f-\x8f\
+\xc3\x17\xf3GN<\x87BJ\xedPX\xa9\x15\xa1U\
+\x18 E\xde\x0en\xa9\xf5\xae\x97\xed`\xc8\xa9\xad\xc3\
+\xbe\xba!\xef\x95\xdd\xbf\xe5\xae\xa0S\x16\xbc; \xb0\
+N\x85Cj\x0el\xc5+,\xdf\x98\x11\xd4v\xa9y\
+<O\xa8\xc4\xe9\x09\xab\xfb\x07\x04\xfa\x8f\x0d4\xbc1\
+\x80\xa2\xa1\x1dG\xcb\xda\xeb\xf7C\xe3\xa1\xf1\x1f\x04$\
+=\xda\
+\x00\x00\x18\xaf\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x01_\x00\x00\x01)\x08\x02\x00\x00\x00\xbb\xac\xb6\x0a\
+\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00\
+\x09pHYs\x00\x00\x0e\xc3\x00\x00\x0e\xc3\x01\xc7o\
+\xa8d\x00\x00\x18DIDATx^\xed\x9d\xffk\
+\x14\xd7\xfa\xc7\xef\x7fT\xb8\x5c\x8a\x88\xc8m)Wi\
+S\x09%\x10h\xa9\xd4\x22\xc1\x82\x12\xb0\xa2\x1fR\xa4\
+\x85\x16,---T\x0a\xf9A\xa1\x22\x96\xa2PA\
+\xc1R\x11\x94\x16\xb1\xb9\xc1\xa61,!JZcX\
+B\x1aC\x88\x12\x97\xdc\xe0\xe7=\xf3\xec\x9eLf\x9f\
+]\x93\xcd\x99|\xf3\xf5\xf0b\x98\xcc\x9eo\x1b\xe6y\
+\xed9\xb3\xbb\xb3\xff\xf8w\xff\x1b\x00\x00\xf5`\x07\x00\
+\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\
+\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\
+\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\
+\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\
+\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0f\
+v\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8\
+`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\
+\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\
+\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\
+\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\
+\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\
+\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\
+\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07\
+;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\
+\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\
+\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00\
+|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\
+\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\
+\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\
+\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\
+\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\
+\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\
+\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\
+\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00\
+>\xd8a}i\xaf;\x02\xab\x81\xffgL\xb0\xc3:\
+\xc2\xa9\x1c\x1d\xfe\xa51\xc1\x0e\xebE\xf5<\xde\xd9\xb7\
+g{_\x1b\xac\x92\x1d}m\xb5\x7f)\x82\x88\x06v\
+X/\xda_\xee\x7fcG\xdf\x9e\xd7n\xbf\xb5o\xa8\
+{\xef\xd0Ah\x19\xfd\x03;\x07\xbb^\xee\xef@\x0d\
+q\xc1\x0e\xeb\x82\xa9\xa1\xad}\xe0\x9d\xdfg\xef<%\
+V\x1dw\x1f\x8fv\xfc\xf1\xael\xab\x7fl\xdd\x7f\x1b\
+Z\x04;\xac=\x8b\xb3\x86[3\xfd:\xb3\xe7\x9f\xce\
+/<]\x80\xd6\xa8,\xcc\xeb\x7f88[zc\x00\
+;D\x06;\xac1\x89\x1av\xf6\xed\xd9u\xbb\xf3\xc6\
+\xf4\xcdD\x0d\x0b\xff\xd3Vg\xb9\xb6D\x0ba\xff\xc0\
+\xa1\xd9a\xec\x10\x1d\xec\xb0fhI\x9c\xaa\xa1\xbf\xfd\
+\x95\xfe\x8e\x9f\xa7\xae\xdb\x99\x1d^\x03\xd3S\x9dXq\
+`\x87\xe2\xc0\x0ekFU\x0d\xda^\x9e\xbcj\xa7\xb5\
+I\x015\xac&\xb0Cq`\x87\xb5!\x91\x82M\x1f\
+.N^\xb1s:\xa8\x01;\xac&\xb0Cq`\x87\
+5\xa0\xfa6\xdb\xce\xbe=\xdf\x97\x7f\xd4\xa9\x1c\x8c\x80\
+\x1aV\x1f\xd8\xa18\xb0C\xd1T\xd5\xb0\xbd\xaf\xedl\
+\xf9\x82\xcec\xbc\x107\xb0Cq`\x87BI\xd4\xa0\
+\xf3u[\xdf\xab\xa7\xc6\xcf\xe9$\x0eR@\x0d\xb1\x02\
+;\x14\x07v(\x8eE5\x9c\x1c;\xad3\x185\x14\
+\x11\xd8\xa18\xb0CA\x045\xec\xfe\xea~\xaf\x9d\xc7\
+A\x0d\xd8!b`\x87\xe2\xc0\x0eE\xf1r\x7f\xc7\x8b\
+}\xbb\xbf\xf8\xeb[;\x89QCA\x81\x1d\x8a\x03;\
+\x14A\xbb\xd4\xf0\xaf[\xff91\xfau\x90\x82mQ\
+C\xf4\xc0\x0e\xc5\x81\x1d\xe2\xa2\x05EU\x0d\x1f\x8f~\
+YY\xa8\xe8\xc4\xcd\x0a\x82\x88\x1e\xd8\xa18\xb0CD\
+\xecZC\xa2\x86\x0f\xee}\xfaxaNgm\xa1j\
+P\xb3\xa1\xfd\x1c\xf35r\xc7\x85\x95O\x1b\xd8\x0a\x81\
+\x1d\x8a\x03;\xc4\xa2z\x19\xf2\xc5\xbe\xdd\xc7F>\x99\
+\x9d\x7f\x94\x9c\xb8\x85\xa5bHr\xa1\xf4\xb0\x0cYN\
+$\xe5\x95P\x19M\xd8\xce\xe6\x0d\xecP\x1c\xd8!\x0a\
+\x89\x1a\xc4\xf6\xbe\xb6\xee\xe1\xe3\xd3\xf33\xe1\xacU\xc4\
+M\xbf\x90\xd5\x89\x14\xe4\x9fZh\x15\xf3wejl\
+n\xfc\xee\xe3\xd1\xe1\xc7#\xca\x96\xc1\xd9\x92\xb6\xda\xd7\
+\x11\x1d\xd7\xa3s\x0bO\xaa\xa5\xd3\xe1\x89\xd0\x9a\x1d\xdc\
+\x8c\x81\x1d\x8a\x03;DcG_[\xe7`\x97\x920\
+9ekY\x171\xf1Bk\xda\x06\xf5LT&\x7f\
+\x9d\xfe\xedl\xf9\xc2\xc7\xa3_\x1e(\x1d\xed\x18\xdc\xaf\
+\xa5\x8d$\xa5\xd5\xcd?o\xbd\xa2\xed\xf6\xbeW\x950\
+\xca\x9c\xae\xd2\x91\x0f\xef}\xfe]\xf9\x87\x1b\xd37%\
+\x0b\xab\x9e\x15\x84\xed,3\xb2\xb5\x9a\x10J\x16\x17\xd8\
+\xa18\xb0C4\x94\x93\x87\x86{\xc2\xf9\x1a7+B\
+kaGS\x83\xaf\xee\xf7*\xe7w\xf6\xedy\xe1\xd6\
+KZ\xd1h\x00\xda\xd7H$\x88Wjh_Gv\
+\xf6\xb7\xebQ\x95\x912\xb4\xb3o\xa8\xfb\xb3?\xbf\xb1\
+{\xcf(B\x1a\x1bv\xf0\x99\xb1\x9c\x92\xcbo\xad\xe5\
+\xc0\x0e\xc5\x81\x1d\xa2\xa1\xac;8\xfc\x7f:SW\x94\
+c\xcb\x09k-4;\xfe\xa4\xac\x99\xc2\xeb\x03ok\
+j\xb0-\x9d\x1a\xec\xba\xdd\x99\x8a \xb9\xf0\x91\x1b\x95\
+a\x0f\x995lr!M\xa8\xd6\xb1\x91O\xb4\xf4\xc8\
+6n\xfb\xb6\xd3$\xac\x8c\xb6\xe5\xca\x84f\x22\x1aR\
+\x16[\xc8\x842i\x8d\xa2\x02;\x14\x07v\x88F\xb0\
+\x83\x9d\xaf\xb1\x22\x97c?M]W\x1aH\x0a\xca\x84\
+05\x08\x17>\x96A\xf5\xea\xa9\xeaj\xa2\xa1v^\
+\xbb\xfd\x96}sT\x11zyfJ[\x01=SM\
+C\xd4\x82T\x15h\x1fxG\x8d\xcb_\xd9wm\x8a\
+\x0b\xecP\x1c\xd8!\x1aE\xd8\xc1R+$\xd8\xd9\xf2\
+\x05\xf5b9PK\x83\xe5{!\x8f5\xa2E\x87\x1c\
+\xa1E\x8a\x0d;\xd7c\xa3\xb0\x02\xaa\x12T\x15\xd0\x90\
+41\xd1\xac\x04;lv\xb0C4\x8a\xb3\x835(\
+5(\x0f\x95\xcc\xb5\x1e\xeb\xbdP=bi\x1f\xc8=\
+\x9aa\xb1\xbc\x16)\xd9\x0f}/\xdf\x0e\x9d\x83]v\
+\xb1#\xa0\x89\xc3\x8b}\xbb{\xee\x9e\xc0\x0e\x9b\x1d\xec\
+\x10\x8d\xe8v\xa8f`\xfa\xb6\xe5\xb5\x87\xbf(\x99k\
+j\xf0\xf3<uA\xf5\x1a\xe4\x8e\xdao\xc0\x84\xeb\x94\
+\xb5\xb4q\xeb&\xb7\xae\x92zrw\xa0\xd0\xb6Q\x04\
+;t\x0c\xeeO\xe7\x0b\x8b\x0db\x87-\x03v\x88F\
+\x5c;\x84\xf4\xd3vln\x5c/\xd1j?M\xfel\
+z'\x89m\xfb\xe1]\x09\x95\xe9\xf8\xe3\xdd\xfd\xa5\xc3\
+\xdd\xc3\xc7\xb5U\xf6Z\xbano6\xef\xb0?\xdbw\
+\xdd\xee\x0c\x17)\xc3\xd6\x0d\xec\xf0<\x80\x1d\xa2Q\xc4\
+\xdc\xc1R\xeb\xab\xfb\xbd\x9a\xf9+\xeb\x96f\xb5\xf6\x93\
+?\xcd\x0b\xaf\x0f\xbc}b\xf4\xeb_\xa7\x7f\x1b\x7fR\
+\x9e\xa8LN\xcf\xcf\xcc\xce?\xd2V\xfb:\xd2?3\
+\xa0\x85C\xfb\xc0^\x9bM\xa4)\x94\x17\x84\x0e\xaa\x1d\
+9%t\xdd$\xb1\xed!\xec\xb0\xb5\xc1\x0e\xd1\x88h\
+\x07\xcbL\xfbH\xd5\xe0l\xc9\xbcP\x97\xd2U5h\
++}\xd8g\xb7\x9b\x87\xd2\xb5\xf7\xc1\x19M.jY\
+\x94\x13D\xd2\x9a\xfa\xd2*F\x85\x9b?\x0b\xec\xf0<\
+\x80\x1d\xa2\x11\xdd\x0e\xb6\xd3`\xe2\x90\xa0d\xd6\x94\xc1\
+~5\xc7\xc2*\xbaTK<}\xaayD\x9a\xd2\xf5\
+\xeb\x94\xe4\xf2\x84\x12\xfb\xd8\xc8'*\xa6g\x91\xab\x98\
+\x0d;\x8e\x1d\xb66\xd8!\x1aE\xd8\xa1\x5c\x99x\xed\
+\xf6[\xf5^HI.R\x86\xd7y\xabb\xb5lk\
+;\xe1\x88a\xd78%\x88]\xb7;\xebf\x10\xc9\xf4\
+D\x07e\x1c\x15P\xb1&O\xc4\x9a\xc5\x0e[\x1b\xec\
+\x10\x8d\x22\xecpe\xea\x9a2mi\x0e'\xfb:\xb2\
+\xadv\xbbJ\xeb.Ti\x14\xf6\xa8\xb6V\xfe\xbb\xf2\
+\x0f\xb6*\xc9\xa1\xdc\xd6T\xc5\xee\x91\x9b\xfd\x81O\xab\
+\x9b%)\xb0<;4\xc1\x0ah\xdbr`\x87\xe2\xc0\
+\x0e\xd1\x88k\x07\xdby\x7f\xe4\xa3\x5c\xee\x19J\xec\xf6\
+\x81w\xec\x1b_\xd9Lk\x1eV\xc6\xb6\x95\x85\xca\xde\
+\xa1\x83R\xccR\xf5\xc8;In\x87o\x9a\x86\x96\x1b\
+\xb5\xdf\xc4\x0ev\xf3\x9b\xe6\xd1\xa8\xd9\xe5\x07v(\x0e\
+\xec\x10\x8d\xe8v\x98\x9d\x7f\xa4\xf9\x7f\xdd+|r\xe1\
+P/\xef\xbd\x0f\xce\x84\xc2\xcb\xcf1+i\xeb\x0b\xb5\
+\x90~\x1abI\xfb&\x0b-g\x94oI\xc9\xf4\xb9\
+X-m\xe7\x16\x9ehF`h_#\xec\xf8\xe3\xdd\
+\xdc\xa7\xa1\xc2\xc5\x8b\x87\xf3\xd3\x12D(\x9fC\x0f\x85\
+f\xb5m9\xb0Cq`\x87hD\xb7\xc3\xaf\xd3\xbf\
+\xa5\xa9\x9b\x9f\xff+\x01\xa4\x8c\xc1\xd9\x92\x954\xd2z\
+\xcb\x8aP~ln\x5c\x16\xc8\xe5\xb6\x90}\xfey\xeb\
+\x15-jTF\xcf%\x94\x97\x0b\xbaJG:\x07\xbb\
+\xde\xbc\xf3^\xa0\xfe\xd2\xa6\xd0\xf0\xe4\xb5l\xb1,\x9a\
+\xb3(\x93\xbf\xf8\xeb[9\xc2\xc6\xa3m\xcb\x81\x1d\x8a\
+\x03;D#\x96\x1dB6\x9e\x1c;\x9dN\xdas\xaf\
+\xed\x1d\xdb\xfb^=4\xdc\xa3Wf+\x9cVZA\
+X\x15\xdb\x1e(\x1d\xdd\xd1\xd7\x96m_\xdd\xd9\xdc\xe4\
+\xab\xfb\xbd\xa1\xa4\xed\xc8\x0e\xb2\x89}\x9a[N1j\
+\xc3\xcb\x0e\xb2z$\x94\xc9\xa1G\xd5~\xac\xcb\x96\xd8\
+\xa18\xb0C4\x22\xce\x1d\xac\x05-\xfe\xd5\xe6\xd2^\
+\x92\xd4\xd5\x0b\xbb}'\xc2\xf2\xb6\x85\xec\x0a\xb5R\x01\
+\xe5\xbaH\xe6&\xeaW\xbd\xdbg(Ba\xfd\xf9\xfa\
+\xc0\xdb^\x06\xe6\xe7\x0e\xde\x91E\xf4\x14\xa4\x98\xdc\xad\
+7[\x0e\xecP\x1c\xd8!\x1aq\xe7\x0eB\x93\xf0:\
+;T\xa7\xfd\xe7'.\xa9\xa4\xbd\xa7`\xb5V\x14\xd6\
+\xbev\xae=\xfc\xa5\xd6\xc5b>+\xc14;P\xb2\
+\x95+\x13\xd9\xc25;\xe4\x87\xb4R\xec\xc2\x04v\xd8\
+\xf8`\x87hD\xb4\x83\xb6cs\xe3\xed\x03\xef\xe4R\
+1=\xf5\x93%\xbd\xdd\xd6\xa9\xe5\x8eB\xc2\x8f?)\
+\xa7\x8b\x97\xc5.\x0cK\xe0\xbb\x8fG\xb3\x85\xb1\xc3\xf3\
+\x06v\x88F,;\xd8\x07\xa8\xfbg\x06\xb4\xc8\xcf\xa5\
+\xaeN}%\xa7\xe6\x14\x96\xb7vC\xfa\xb4\xd2\x8a#\
+$\xbc\x1cT\xff\xb6\x88\x12\xf8_\xb7\xfec\x0e\xca\xda\
+\xc1\x0a\xeb\xd1\x80\x95_Z\xbdz$[,\x8b\xec\xb6\
+\xbd\xef\xd5\x0f\xef}\x8e\x1d68\xd8!\x1a\xd1\xec\x90\
+V\xbf<yU\x8b\x88\x5c\xde*\xb5\xb4b\xdf_:\
+<Q\x99T\x99\xd5\xe4\x95\xd5U~\xaa\xb5\xfa\xa4\xd2\
+\x9fzy\xbf8y\xc5J\x06;(\xb1e\x0d\x8d!\
+PSCv\x9c\xc9\xfe\xce\xf4\xc6S.\x12\xdc\x0b\xb7\
+^\x0a\xf7\xf5\xc7\x0e\x1b\x16\xec\x10\x8dxs\x87\xe4\xc3\
+\x08\xb5\xcf2\xe6\xed\xa0\xa4\xed\x1e>\xbe\xfaW]\xab\
+[Y\xa8(K5\xf2z;(\x8d\xb3\x1f\xa9\xd0V\
+\x9d\xbe?\xf2QW\xe9\xc8\x81\xd2\xd1\x80\x14\x96\x1b\xa4\
+\x90\x1a\xda\x07\xf6f\x8be\xd1\x7fi\xdfP\xb7\x1a\xb7\
+;\xe8c\x87\x0d\x0bv\x88F\x14;(U\xac\xfa\xc9\
+\xb1\xd3j0\xd7\x85RQ/\xdd\x9a\x93[\xc9\xd5\xe4\
+\x95\xd5\xd5\xf6\x8b\xbf\xbe\x95\x08\xe4\x9dlG\xca1M\
+\xfe\xf5P(f\xdb\xbf+S\x9a\xb6hkh_9\
+ioR\x064H)L\x83,W&r\xe5\x03:\
+8=?\x93m\xbc\xe5\xc0\x0e\xc5\x81\x1d\xa2\x11k\xee\
+PYH\xe6\x0e\x9f\xfd\xf9\xcd\xb6\xea7,\x02\xd5\xb7\
+3O\x8c~m\xc5V\x93W\xa1\xee\xa9\xf1sJf\
+\xcf\x0em\xca\xf0\x90\xc0\x8d\xfa\xea\x1c\xecRNf\xeb\
+\x9a\xc2l\x90\xcf\x8c\xd5<\x05\x0b\xecP\x1c\xd8!\x1a\
+\xb1\xe6\x0e\xf6\xf5\x84\x0f\xee}\xaa\x1c\xcb%\xad\xd9\xc1\
+>\xec\xb0\x9co14\x89\x90\x96g\xcb\x17\xea;2\
+;h\x1da\xcf\xc5\x0ak\x9bC\x86r\xbfgav\
+\xb0\xcfJ\xab\x85l\x95\x1c\xa1\xf1\x96\x03;\x14\x07v\
+\x88F<;$s\x87c#\x9f\xd4\x92vqUo\
+v\xf8\xea~\xaf\x0a\x84\xef)\xb4\x16!9\xbf/\xff\
+\xa8\x8e\xd4r\xe8\xc5P\xa6\xe9\xe9d\xed\x90\x0d;\xa2\
+G\x9b\xd8\xa1Q\xdd\xb8\x81\x1d\x8a\x03;D#\x96\x1d\
+\xec\xaa\xa4^\xb7\xbd\x97\xf4$\xf1\xec\x8b\xdb\xb1\xecp\
+q\xf2J#;\x1c(\x1d\xb5\x19J}Gv\x04;\
+lm\xb0C4\xa2\xd9!\xad\xde\xc0\x0e\xc9\x1b\x8d\xf6\
+V\xc2\xeaW\x16\x96\xb7\x97'\xaf6\xb2\xc3\xfe\xd2a\
+\xec\xf0<\x83\x1d\xa2\x11\xd7\x0e\xdd\xc3\xc7];l\xeb\
+{\xd5n\xcdb\x0b\x90\x96C\x1dY\xde\xfe4u]\
+\xab\x15\xd7\x0e\xfb\x86\xba\xb1\xc3\xf3\x0cv\x88\xc6\xda\xcc\
+\x1d\xd6\xd2\x0e\xcc\x1d\x9es\xb0C4\xd6\xcc\x0e\xb5\x95\
+E\x1c;\x5c\x99\xba\xd6\xc8\x0e\xe9u\x87\xa4\x97\xfa\x0c\
+\xb7#\xd8ak\x83\x1d\xa2\x11\xd7\x0e\xee{\x16\xfa3\
+{\xdda5\x89\xa7\xbaV\xbd\xf1u\x87\xb6C\xc3=\
+\x8d2\xdc\x8e\xe8Q\xec\xb0\x85\xc1\x0e\xd1\x88e\x07\x9b\
+\xcc\xf7\xdc=Q?wP\xe2e\xdf\xd1Lk\xb4\x18\
+\xea\xc8\xf2\xf6\xfc\xc4\xa5Fv\xe8\x1e>no\xa0\xd4\
+g\xb8\x1d\xc1\x0e[\x1b\xec\x10\x8d(vPX\xda\x7f\
+<\xfae\xfa\x11\xc6%]\x98\x1d>\xfb\xf3\x1b+\xb6\
+\x9a\xc4\x0bu\xbf+\xff\xd0\xe8\xb3\x92\x9a\xbf4\xcap\
+\xec\xf0<\x80\x1d\xa2\x11we\xa1\x09B\xfa\xf5\x87l\
+\x17\xd5ORK\x1c*\xa0b\xabI\xbcP\xf7\xe4\xd8\
+\xe9FvP\x86[\xb1\xfa\x8e\xec\x88\xc6\x80\x1d\xb60\
+\xd8!\x1a\xb1\xe6\x0e\xe1\x86\xd1\xb9\xac\x13\xcaa%\x9e\
+^\xd2\x95r\x86Ui!Bz+\x8d\xeb4\xb4\xe4\
+\xf2g(\x9c\x8dP\x1d;la\xb0C4\xa2\xd9!\
+\xad~~\xe2R\xda\xac\xf3\x0d\xeeC\xc3=\xe1\xc7&\
+\xd2\x1a\xad\x84\xd5\xd5\xf2\xe4\xfd\x91\x8f4r\xcf\x0e\xbb\
+\xbf/\xff\x98-\x9c\x0d\xec\xf0<\x80\x1d\xa2\x11\xd7\x0e\
+7\xa6o&?f\xb14\xf1t\xea\xab\x97\xbdC\x07\
+\xc7\xe6\xc6\x93\x92\xabH<K\xda\xd9\xf9Gj\xcd\x9d\
+\xa4HCv\xd3z\x95\xc4\x0e\xcf'\xd8!\x1a\xb1\xec\
+`\xe9\xa4\xd3\xddn\x00\x9d\xedB\xa7\xfe\xce\xf4\x97u\
+\x7f\x9f\xbd\xa32\xea\xa8\xe5\xdc\xb3\x8a\x9a\x83\xa4W\x1c\
+r\xb7o\xa9\xde9.\xfb\x93\x19i\xa5\xc5\xb0#\xd8\
+ak\x83\x1d\xa2\x11\xd7\x0e\xca\xdb\x8e?\xdeU\x9bi\
+\xe3\xf9\x8f<\x84\x9f\xa2Ik\xac8B\xc2+\xa9\xea\
+\xbb0\x94\xe46Cq\xd3\xdb\x0eb\x87\xad\x0dv\x88\
+FD;\xd8\x92a\xdfP\xf7\xf6\xe4\xc6\x8d\xd9^\xaa\
+o[\xd8\xf5B\x954\xd2z+\x88P\xeb\xfc\xc4\xa5\
+\xfa{L+\xc1\x94f\xea\xfd\xef\xcc\xeft\xa6\xf5\x16\
+\xc3\x8e`\x87\xad\x0dv\x88F,;(,\xa3>\x1e\
+\xfd\xd2K\xdd\xe4\xc6\xb3\xdd\x99_\xc1Mk\xac8\xac\
+b\xcf\xdd\x13\x8d\xba\xc8\xde3\xba\xbe\x17;\xa2g\xda\
+\xe8\xdeP\x1a\xbc}p\xa3\xe5\x11.3\xb0Cq`\
+\x87hD\x9c;XF]\x9c\xbc\x92N\xf8\xf3s~\
+\xa1\x1cX\xfd\xefh\xa6w\xa0\xdf\x9b\xcb\xed0=\xb1\
+7,\x1a5n\x075\xc7\xa9\xbf\xa8\xa9\xeaZ\xfbH\
+.\xd8a\xb3\x83\x1d\xa2\x11}\xee\xa0e\xbf\x9a\xad\xff\
+\xb1\x09\xcb\xde\x93c\xa7\xad\x98\xb6\xcb\xcf@+i+\
+\x97\xcb\x93W\x95Ku\xedWW\x16\xfd3\x03I\xc9\
+\x06\xcf%tm7\xbc_Z=\xb1\xc3\xb1H7\xa4\
+\x7ff`\x87\xe2\xc0\x0e\xd1\x88n\x07\xb5\xa3W\xe6\xdc\
+\x9b\x9a5\x92\x1f\xd1\x0f\xd7\x05l\xdb<\x0fC\x81\xb0\
+sh\xb8\xa7\xfe\xe3\x98\xfaSOd\xdfP\xf7\xf8\x93\
+r\xb6p.BSz\xca\xf5vP\xb3\xd9\xdf\x01v\
+[\x88\x15\xd8\xa18\xb0C4\xa2\xdbAqj\xfc\x5c\
+-\x81\xb3\xaf\xf0\xc9\xbe\xba\xb3\x8fT+B\xf9Fy\
+\x18RT[\x1b\x9e\x16\x0e\xa9w\xac\xd9\xd0xub\
+b_\xf4\xb2ZV1\x17\xa1\xb5\xf7G>\xca]\xb9\
+\xd0h\x95\xa5o\xdey/\xfb\x96\x87\xdbH\x94\xc0\x0e\
+\xc5\x81\x1d\xa2\x11\xd7\x0e\x96Nw\x1f\x8f\xaaY\xbd\x1a\
+\xe7\xfaJiW2|W\xfe\xc1\xaaT\x16\xe6\xc3\x0f\
+\xe7eS1\x1c\x11\x1a\x98\xfd\xf9\xeb\xf4o\x9az\xc8\
+\x0eK\xbd\x93L\x1c\xb4\xd0\xd0C\xcf\xfc\x9d\xce\xd0\xc5\
+\x17\x7f}\x9b\x8e\xd0Z\xa8\xa2\x01\xeb\xa0]\x19\xa9,\
+T\xd4\xce\x22O5\xce\xf9d\xb4\xb5\xc1\x84\xa6Z\x0b\
+\xb5\xa3-v(\x02\xec\x10\x8d\x88vPX\xce(\xb5\
+z\xee\x9eH\x7f\xd8\x22\xf7\x99\xa5d\xdf.\x19\xf4>\
+8c\xef_(\xd4u}6\xa6\xe2\xa8\xde*FG\
+.N^Q\x22\xd5RzI\x9b\xe9\xa2`\xb7\xa6\x03\
+\xea=`\x15s\x11\x8e\x9f-_\xd8\xee,O\x92K\
+\x0f'\xd2\x9b\xd6[\xb1F\xd1\xa8\xfd\xe5\x87\x9e\x91\xb6\
+\xd8\xa1\x08\xb0C4\x22\xda!\x9b\x997\xa6o*\xfd\
+4\xe1\xcfu\x17\x12[yx\xa0t\xf4\xf2\xe4\xd5\xd1\
+\xb9\xfbV\xdd\x8d\x89\xca\xa4\x9a\xfa\xf0\xde\xe7Z\xaa\xd4\
+\xcd\x1a\xaa\xfb:\xae\x8e4\xb3Py{\x16\x8d\xb27\
+;<\x0d\xc0\x13Mr\x87\x08u\xa7\x81i&\xd2?\
+3\xa0fU\xf8\xe7\xa9\xebW\xa6\xae\x9d\x9f\xb8\xa4#\
+vq\xb4Q\x17\xcb\x0c\xecP\x1c\xd8!\x1aq\xe7\x0e\
+\x0aK\x1b\xbd\xfc\xda}\xa2RAd3P$\x7f\xea\
+\xb8\x12^\xbdk\xa9\xff\xc1\xbdO5\x95\xf8\xbe\xfc\xa3\
+rR\xa9hyxj\xfc\x9c^\xc6\xf7\x97\x0e\xeb%\
+]\xedh[\x97\xccU\xd4\x88\xf2Y\x9d6W\x83\x22\
+\xd8AJr\x9b2A\xa8;\x8dMK\x15\xb1\xebv\
+g\xed)\xb4\xbfp\xeb%\xcd\x89\xf8\x1d\xcd\x0d\x0ev\
+\x88F\x5c;X\xceXS\xbf\xcf\xdeQv\xd5N\xfd\
+zA$3y=\xa4\x01X6\xda\x14@\xd9(\xf4\
+h8\xae\xf2i~:\x8d\xa8\xba^\xea\x95`\xe1\xad\
+\x8a\xb0m\x14\xf6\xe8\xec\xfc#=kuQ\x97\x96I\
+\x17\xeaNc\xd3\x0aHCJ\xd7A\xd5\x83*/;\
+\xf0\x1b\xdc\x1b\x1c\xec\x10\x8d\xb8vP(m\x84\xb5\xa6\
+\xe9@\xfa\xd6@\x92\xc6u\xb9]=\xa2\x87j\xf3\x82\
+\xe4\x92DH\xc8\xda\xf1\xe0\x85\x5c\xf5D.i^u\
+\xd8g\x1c,]\x9b'\xad\x8d\xcd\xca|W\xfeA\xf6\
+1\x13\xe5Z\xb6#\xe9\x00\x12\xec\xb8:\xd2Zi\xf5\
+\x1f\xf7\xb4\xc0\x0e\xc5\x81\x1d\xa2Q\x84\x1dlk;'\
+\xc7N\xdb\xeb\x7f\x9a\xe7\xb9<4\xdc\x83\x81\xfaG\x93\
+\xecU:\xd9+\xffOS\xd7Cw\xd6\xe33\xc3\x8a\
+\x8d\xcd\x8d\xb7\x0f\xbc\xa3\xcc\xac-\x1cr\xbd\xe4\xb1\x1e\
+\xbbJG&*\x93\xa1\x91\x96\x03;\x14\x07v\x88F\
+t;(,s\xd2tM\xa2\xf7\xc1\x19\xcd\x08\xd4Q\
+\x83\x05Bk\xb4w\x0ev\xdd\x98\xbeY\xeb\xa8\xdac\
+\xdaa\xb3\xb0\xc2V\xf2\xe2\xe4\x95m}\xbb\xd5ZM\
+\x10\xcd\x06\xa6\x04V\x1a\xef\x1d:X\xaeLX;i\
+{-\x06v(\x0e\xec\x10\x8d\x22\xec\xa0\xb0\xe4\x09y\
+\xf8\xf3\xd4\xf57\xef\xbc\xf7\xcf[\xaf\xa8\xc7\x06\x99P\
+\x9f\x99\xd9#K\x1e\xb5\x97\xf1\xb3\xe5\x0bj\xb9R\xbb\
+\x8d\xed\x8a\xd25TI\xdf\xdal\xd3\xecFm6O\
+Q\xcd}\xb4\xe4\xe9\x18\xdc\xdf\xe4\x1b\xe2\xcb\x0f\xecP\
+\x1c\xd8!\x1a\x05\xd9A\x112\xd0v\xf4\x92{j\xfc\
+\xdc\xeb\x03o+\x15\x95\x0f\xd9\x0b~\x96\x99\xf5d\xc6\
+\x99\xb7\x83\x1ay\x7f\xe4\xa3\xec\x05\xc2\xe5\xa7k\xae|\
+\xff\xcc\xc0\xb1\x91O\xb6'o\xa0$\xef\xa1\xecH\xd8\
+\x93\xa1M\x07\x0du*\xc7e\xaf\x80\xb6\x1c\xd8\xa18\
+\xb0C4\x0a\xb5C\xc8\xc3\xd0\xb8\x16\xed\x9a\xcfw\x0f\
+\x1f\xdfu\xbbS)a+\x0ee\x9d\xb0\xe4\xacaG\
+\x92D\xad\x0d5\x08\xa2*\x94\x17\xfbv\x9f\x9f\xb8\xa4\
+6\xd5\xf8Js5\x0c\xcc\xfe\xd4\x04dt\xee\xfe\xe5\
+\xc9\xab'F\xbf\xd6\xd8\xbaJGd\x01\xad\x5c\xf6\x0d\
+u\xcbA\x9f\xfd\xf9\x8d\xa6\x18\xd7\x1e\xfe\xa22\xd3\xf3\
+3\xf6\x5cV\xdac.\xb0Cq`\x87h(\x03\x0b\
+\xb2\x83E\xc8\xc3\x5c:\xfd]\x99\xba1}\xb3\xf7\xc1\
+\x99\x0f\xef}~\xa0tT\xebyKHC\xfb:\xd2\
+s\xf7\xc4\xa1\xe1\x9et\x9c\xa6\x86EA(\x9d\x94T\
+*\xd9\xf2\xd7\x22\x1a\x0d\xcc\xa2\xd1q\x8b&\x0f-3\
+\xb0Cq`\x87h\x14m\x07E\xc84\xdbi\x94Z\
+z\x01\xd7JA/\xce\xc2>q\xa4\xd0\xbe\x14\x90\x99\
+A\x04\xaa\xdf\xbc\xfa\xe2\xafo\xadd\x93\x96\x1b\x85\x95\
+\xb7\x8a\xcd\xabg\xcbX1\xdb\xb6\x1c\xf6\xdf\x1e\x9c-\
+a\x87\xe8`\x87h\xac\x81\x1d,BR\xe5P\xbf\xc2\
+\xf6\xad\xa4\x85\xfe\xb4\xef;h%\xa2A\xa6\x13\x870\
+w\xa8\x92&U{\xcbw\x94\xb1\xb0*\xa1zsB\
+\xf9\x96\xc3\xda\x09v\xe8\xf8\x03;D\x06;Dc\xcd\
+\xec\xe0F\xc87\x17{H\x03\xd3\x08\xd3OUi\xc0\
+YA$\xfb:n\xe3\x0f\xed\xd8\xfe\xc6\x8c0<\xfb\
+oke\xd1>\xb0w'v\x88\x0av\x88\xc6\xfa\xda\
+\xa1y\x84l\xff}\xf6N\x93\x17Xe\x97\xe6\x17*\
+fOa#\x0b\xc2\xc6\x16\xb6Z\x16mK\xdeL\xb5\
+\x8f\x81@\x1c\xb0C46\x85\x1d\xb4\xfd\xec\xcfo^\
+\xec\xdb\xed~\xaeQO\xa1s\xb0+\xfb\x01g\xdbn\
+\xb4\xc8\x8d\xad\xf7\xc1\x19\xa9\xa1\xf6,\xf2O\x0aZ\x06\
+;Dc\x83\xdbA[\xfb\xc6\xf4\xe8\xdc}\xfb\xe0\xb3\
+]k\xa8\x8d?\xd9\xd1\x11=\x8b\x93c\xa7\xd3\xc2\xf3\
+\xaa\xb5\x01\xed\x10\xd4`;\xa7\xc6\xcfIv\xd9g\x01\
+\xb1\xc0\x0e\xd1\xd8\xf8s\x07ac;[\xbe\xe0\xcd\xc3\
+\x93w7\xb5\xb8\xd0\x02>\xfc\xd6VZ{\x03\x85\x19\
+\xc1\x9e\x8bv\xec\x89\x84\xf1g\x9e\x0bD\x00;Dc\
+#\xdbA\x11\xf2J\xdb\xd9\xf9G]\xa5#\xe9][\
+\x96\xac/\x12;\xa47_\xd0\x5c]\xc5\xc2\xad\xe86\
+B\x04#\x84\x9d\xa5?\xd5\x83\x1a\xe2\x83\x1d\xa2\xb1\xc1\
+\xed\xa0\xb0\xa4\xb2\xe1\xfd4u\xdd\xbe\xef #\x98\x14\
+\xb4\xd6\xd0S\xd8_:\xfc\xf3\xd4\xf5\x87\xf3\xd3Qn\
+\xdc\x141rj\xb88yE\x03\xb6\xf9\x0ej(\x08\
+\xec\x10\x8d\x8do\x07\x85e\x97\x8d0\xfdND\x9b\xbc\
+\xa0\xad\x12L^\xb8\xf6\xf0\x97\xf0\xe9\xa9\x90\x87\x1b!\
+l$aH\x97'\xaf\xdaWKPC\xa1`\x87h\
+l\x16;\x84\xed\xdd\xc7\xa3\xf6\x1d\x8dC\xc3=\xf2\x82\
+\x1d\xb4GC\xb1pp\x1d#\x0c\xc3\xfe\xb1\x9a\xda\xc8\
+\x086\xebA\x0d\x85\x82\x1d\xa2\xb1)\xec\xa0\x08\x99\xaf\
+\xad\xdd\x812=\x9c\x1c\x09\xd8\x9fv|}#\x8c\xc7\
+\xfe\xab7\xa6o\xda\x82(\xfd\x9f\xa3\x86b\xc1\x0e\xd1\
+\xd8,vP\xe4\xf2?d\xa0\xed\xdb\xceF\x8800\
+\xbb\xe3\xfe\xad\x99~MvvV\xbf*\x82\x1a\x0a\x07\
+;Dcs\xd9\xa1\x9au\xb5\xaff\xd8\xc1\xf4\xc1\x8d\
+\x12aT\xf6\xff\xec\x9f\x19\xf0~\xa1\x07\x0a\x04;D\
+c\x13\xd9\xc1B\x89\xb71\xbd\xa0\xc8\xa9\xe1\xf7\xd9;\
+\xf6s\xe1\xb5\xb7`\xb1\xc3Z\x80\x1d\xa2\xb1\xe9\xec\xb0\
+\x91\xc3\xec`\xff\xc9\xda\xbd\x1b\xec\x17\x03Q\xc3\xda\x81\
+\x1d\xa2\x81\x1dbEV\x0d\xc3\x8fG:\x07\xbb\xf4\xbf\
+\xad-(P\xc3\xda\x81\x1d\xa2\x81\x1d\xa2DV\x0d\xa3\
+s\xf7\xf7\x0e\x1d\xcc\xa8a\xc9?\x1c\x8a\x06;D#\
+k\x07\x9d\xe2\xd02\xa6\x86\xf1'\xe5\xfd\xa5\xc3\xdb\xab\
+?\xe1\x8b\x1a\xd6\x01\xec\x10\x0d\xd9\xe1\xd0p\x8fNk\
+b\xf5Q\xaeL\x1c(\x1d\xcd|U\x0c;\xac\x03\xd8\
+!\x1a\xb2\x83N\xe8\xcaB\xe5\xef\xca\x94\xdd\xd3\x11V\
+\xca\xc3\xf9\xe9\xd9\xf9Gcs\xe3\xdd\xc3\xc7k_\x12\
+\xd3\xff\x165\xac\x0f\xd8!\x0av\xfaj\x0b\x11\xd8\x99\
+\xfe\xfe\xc5\xd2\xff-\xac\x03\xd8!\x22\x9c\xc7\xd1\xe1_\
+\xba\x9e`\x87\x88p*G\x84\x7f\xe6\xfa\x83\x1d\x00\xc0\
+\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00\
+|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\
+\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\
+\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\
+\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\
+\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\
+\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\
+\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\
+\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00\
+>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\
+\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\
+\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\
+\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\
+\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\
+\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\
+\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\
+\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\
+\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\
+\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\
+\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\
+\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\
+\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\
+\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0f\
+v\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8\
+`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\xe7\x1f\xff\xfe\
+\xef\x1b\x00\x00y\xfe\xfb\xc6\xff\x034\xc3}\xffR)\
+\xdb\xa4\x00\x00\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x08\
+\x08\x01Z\x5c\
+\x00m\
+\x00a\x00i\x00n\x00.\x00q\x00m\x00l\
+\x00\x10\
+\x0d\x0d\xd3\xc7\
+\x00q\
+\x00t\x00_\x00l\x00o\x00g\x00o\x00_\x00r\x00e\x00c\x00t\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01}k\x86\xb3\x9c\
+\x00\x00\x00\x16\x00\x00\x00\x00\x00\x01\x00\x00\x09G\
+\x00\x00\x01}k\x86\xb3\x9c\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/quick3d/intro/doc/intro.png b/examples/quick3d/intro/doc/intro.png
new file mode 100644
index 000000000..ae54997c4
--- /dev/null
+++ b/examples/quick3d/intro/doc/intro.png
Binary files differ
diff --git a/examples/quick3d/intro/doc/intro.rst b/examples/quick3d/intro/doc/intro.rst
new file mode 100644
index 000000000..0afebd5be
--- /dev/null
+++ b/examples/quick3d/intro/doc/intro.rst
@@ -0,0 +1,9 @@
+Introduction Example Qt Quick 3D
+================================
+
+This example gives an introductory overview of the basic Quick 3D features by going
+through the code of a simple example.
+
+.. image:: intro.png
+ :width: 400
+ :alt: QtQuick3D Introduction Screenshot
diff --git a/examples/quick3d/intro/intro.pyproject b/examples/quick3d/intro/intro.pyproject
new file mode 100644
index 000000000..428f88dc1
--- /dev/null
+++ b/examples/quick3d/intro/intro.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "main.qml"]
+}
diff --git a/examples/quick3d/intro/main.py b/examples/quick3d/intro/main.py
new file mode 100644
index 000000000..827434038
--- /dev/null
+++ b/examples/quick3d/intro/main.py
@@ -0,0 +1,24 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import os
+import sys
+from pathlib import Path
+from PySide6.QtCore import QUrl
+from PySide6.QtGui import QGuiApplication, QSurfaceFormat
+from PySide6.QtQml import QQmlApplicationEngine
+
+from PySide6.QtQuick3D import QQuick3D
+
+if __name__ == "__main__":
+ app = QGuiApplication(sys.argv)
+
+ QSurfaceFormat.setDefaultFormat(QQuick3D.idealSurfaceFormat(4))
+
+ engine = QQmlApplicationEngine()
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'main.qml')
+ engine.load(QUrl.fromLocalFile(qml_file))
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ sys.exit(app.exec())
diff --git a/examples/quick3d/intro/main.qml b/examples/quick3d/intro/main.qml
new file mode 100644
index 000000000..648cfcf5c
--- /dev/null
+++ b/examples/quick3d/intro/main.qml
@@ -0,0 +1,80 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+//! [import]
+import QtQuick
+import QtQuick3D
+//! [import]
+
+Window {
+ id: window
+ width: 1280
+ height: 720
+ visible: true
+
+ View3D {
+ id: view
+ anchors.fill: parent
+
+ //! [environment]
+ environment: SceneEnvironment {
+ clearColor: "skyblue"
+ backgroundMode: SceneEnvironment.Color
+ }
+ //! [environment]
+
+ //! [camera]
+ PerspectiveCamera {
+ position: Qt.vector3d(0, 200, 300)
+ eulerRotation.x: -30
+ }
+ //! [camera]
+
+ //! [light]
+ DirectionalLight {
+ eulerRotation.x: -30
+ eulerRotation.y: -70
+ }
+ //! [light]
+
+ //! [objects]
+ Model {
+ position: Qt.vector3d(0, -200, 0)
+ source: "#Cylinder"
+ scale: Qt.vector3d(2, 0.2, 1)
+ materials: [ DefaultMaterial {
+ diffuseColor: "red"
+ }
+ ]
+ }
+
+ Model {
+ position: Qt.vector3d(0, 150, 0)
+ source: "#Sphere"
+
+ materials: [ DefaultMaterial {
+ diffuseColor: "blue"
+ }
+ ]
+
+ //! [animation]
+ SequentialAnimation on y {
+ loops: Animation.Infinite
+ NumberAnimation {
+ duration: 3000
+ to: -150
+ from: 150
+ easing.type:Easing.InQuad
+ }
+ NumberAnimation {
+ duration: 3000
+ to: 150
+ from: -150
+ easing.type:Easing.OutQuad
+ }
+ }
+ //! [animation]
+ }
+ //! [objects]
+ }
+}
diff --git a/examples/quick3d/proceduraltexture/ProceduralTextureModule/Main.qml b/examples/quick3d/proceduraltexture/ProceduralTextureModule/Main.qml
new file mode 100644
index 000000000..610c08a27
--- /dev/null
+++ b/examples/quick3d/proceduraltexture/ProceduralTextureModule/Main.qml
@@ -0,0 +1,188 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick3D
+import QtQuick3D.Helpers
+import QtQuick.Controls
+import QtQuick.Layouts
+
+import ProceduralTextureModule
+
+ApplicationWindow {
+ id: window
+ width: 480
+ height: 320
+ visible: true
+ title: "Procedural Texture Example"
+
+ QtObject {
+ id: applicationState
+ property int size: size256.checked ? 256 : 16
+ property color startColor: "#00dbde"
+ property color endColor: "#fc00ff"
+ property int filterMode: size === 256 ? Texture.Linear : Texture.Nearest
+ property Texture texture: pythonModeRadio.checked ? textureFromPython : textureFromQML
+
+ function randomColor() : color {
+ return Qt.rgba(Math.random(),
+ Math.random(),
+ Math.random(),
+ 1.0);
+ }
+ }
+
+ View3D {
+ anchors.fill: parent
+
+ DirectionalLight {
+ }
+
+ PerspectiveCamera {
+ z: 300
+ }
+
+ Texture {
+ id: textureFromPython
+
+ minFilter: applicationState.filterMode
+ magFilter: applicationState.filterMode
+ textureData: gradientTexture
+
+ GradientTexture {
+ id: gradientTexture
+ startColor: applicationState.startColor
+ endColor: applicationState.endColor
+ width: applicationState.size
+ height: width
+ }
+ }
+
+ Texture {
+ id: textureFromQML
+ minFilter: applicationState.filterMode
+ magFilter: applicationState.filterMode
+ textureData: gradientTextureDataQML
+
+ ProceduralTextureData {
+ id: gradientTextureDataQML
+
+ property color startColor: applicationState.startColor
+ property color endColor: applicationState.endColor
+ width: applicationState.size
+ height: width
+ textureData: generateTextureData()
+
+ function linearInterpolate(startColor : color, endColor : color, fraction : real) : color{
+ return Qt.rgba(
+ startColor.r + (endColor.r - startColor.r) * fraction,
+ startColor.g + (endColor.g - startColor.g) * fraction,
+ startColor.b + (endColor.b - startColor.b) * fraction,
+ startColor.a + (endColor.a - startColor.a) * fraction
+ );
+ }
+
+ function generateTextureData() {
+ let dataBuffer = new ArrayBuffer(width * height * 4)
+ let data = new Uint8Array(dataBuffer)
+
+ let gradientScanline = new Uint8Array(width * 4);
+
+ for (let x = 0; x < width; ++x) {
+ let color = linearInterpolate(startColor, endColor, x / width);
+ let offset = x * 4;
+ gradientScanline[offset + 0] = color.r * 255;
+ gradientScanline[offset + 1] = color.g * 255;
+ gradientScanline[offset + 2] = color.b * 255;
+ gradientScanline[offset + 3] = color.a * 255;
+ }
+
+ for (let y = 0; y < height; ++y) {
+ data.set(gradientScanline, y * width * 4);
+ }
+
+ return dataBuffer;
+ }
+ }
+ }
+
+ Model {
+ source: "#Cube"
+
+ materials: [
+ PrincipledMaterial {
+ baseColorMap: applicationState.texture
+ }
+ ]
+
+ PropertyAnimation on eulerRotation.y {
+ from: 0
+ to: 360
+ duration: 5000
+ loops: Animation.Infinite
+ running: true
+ }
+ }
+ }
+
+ Pane {
+ ColumnLayout {
+
+ GroupBox {
+ title: "Size:"
+
+ ButtonGroup {
+ id: sizeGroup
+ }
+
+ ColumnLayout {
+ RadioButton {
+ id: size256
+ text: "256x256"
+ checked: true
+ ButtonGroup.group: sizeGroup
+ }
+ RadioButton {
+ id: size512
+ text: "16x16"
+ checked: false
+ ButtonGroup.group: sizeGroup
+ }
+ }
+ }
+
+ GroupBox {
+ title: "Backend:"
+
+ ButtonGroup {
+ id: backendGroup
+ }
+
+ ColumnLayout {
+ RadioButton {
+ id: pythonModeRadio
+ text: "Python"
+ checked: true
+ ButtonGroup.group: backendGroup
+ }
+ RadioButton {
+ id: qmlModeRadio
+ text: "QML"
+ checked: false
+ ButtonGroup.group: backendGroup
+ }
+ }
+
+ }
+
+ Button {
+ text: "Random Start Color"
+ onClicked: applicationState.startColor = applicationState.randomColor();
+ }
+ Button {
+ text: "Random End Color"
+ onClicked: applicationState.endColor = applicationState.randomColor();
+ }
+ }
+ }
+}
diff --git a/examples/quick3d/proceduraltexture/ProceduralTextureModule/app.qrc b/examples/quick3d/proceduraltexture/ProceduralTextureModule/app.qrc
new file mode 100644
index 000000000..f0719ad5b
--- /dev/null
+++ b/examples/quick3d/proceduraltexture/ProceduralTextureModule/app.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/qt/qml/ProceduralTextureModule">
+ <file>qmldir</file>
+ <file>Main.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/quick3d/proceduraltexture/ProceduralTextureModule/qmldir b/examples/quick3d/proceduraltexture/ProceduralTextureModule/qmldir
new file mode 100644
index 000000000..7a5644075
--- /dev/null
+++ b/examples/quick3d/proceduraltexture/ProceduralTextureModule/qmldir
@@ -0,0 +1,2 @@
+module ProceduralTextureModule
+Main 1.0 Main.qml
diff --git a/examples/quick3d/proceduraltexture/doc/proceduraltexture-example.webp b/examples/quick3d/proceduraltexture/doc/proceduraltexture-example.webp
new file mode 100644
index 000000000..60bc9a3df
--- /dev/null
+++ b/examples/quick3d/proceduraltexture/doc/proceduraltexture-example.webp
Binary files differ
diff --git a/examples/quick3d/proceduraltexture/doc/proceduraltexture.rst b/examples/quick3d/proceduraltexture/doc/proceduraltexture.rst
new file mode 100644
index 000000000..f2af3ee52
--- /dev/null
+++ b/examples/quick3d/proceduraltexture/doc/proceduraltexture.rst
@@ -0,0 +1,12 @@
+Procedural Texture Example
+==========================
+
+Demonstrates how to provide custom texture data from Python.
+
+.. image:: proceduraltexture-example.webp
+ :width: 400
+ :alt: QtQuick3D Procedural Texture Example
+
+In this example, we leverage `QQuick3DTextureData` and the `textureData`
+property of `Texture` to produce texture data dynamically from Python, rather
+than sourcing it from a static asset.
diff --git a/examples/quick3d/proceduraltexture/gradienttexture.py b/examples/quick3d/proceduraltexture/gradienttexture.py
new file mode 100644
index 000000000..a577f7ebd
--- /dev/null
+++ b/examples/quick3d/proceduraltexture/gradienttexture.py
@@ -0,0 +1,105 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Signal, Property, QSize
+from PySide6.QtGui import QColor
+from PySide6.QtQuick3D import QQuick3DTextureData
+from PySide6.QtQml import QmlElement
+
+QML_IMPORT_NAME = "ProceduralTextureModule"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class GradientTexture(QQuick3DTextureData):
+
+ heightChanged = Signal(int)
+ widthChanged = Signal(int)
+ startColorChanged = Signal(QColor)
+ endColorChanged = Signal(QColor)
+
+ def __init__(self, parent=None):
+ super().__init__(parent=parent)
+ self._height = 256
+ self._width = 256
+ self._startcolor = QColor("#d4fc79")
+ self._endcolor = QColor("#96e6a1")
+ self.updateTexture()
+
+ @Property(int, notify=heightChanged)
+ def height(self):
+ return self._height
+
+ @height.setter
+ def height(self, val):
+ if self._height == val:
+ return
+ self._height = val
+ self.updateTexture()
+ self.heightChanged.emit(self._height)
+
+ @Property(int, notify=widthChanged)
+ def width(self):
+ return self._width
+
+ @width.setter
+ def width(self, val):
+ if self._width == val:
+ return
+ self._width = val
+ self.updateTexture()
+ self.widthChanged.emit(self._width)
+
+ @Property(QColor, notify=startColorChanged)
+ def startColor(self):
+ return self._startcolor
+
+ @startColor.setter
+ def startColor(self, val):
+ if self._startcolor == val:
+ return
+ self._startcolor = val
+ self.updateTexture()
+ self.startColorChanged.emit(self._startcolor)
+
+ @Property(QColor, notify=endColorChanged)
+ def endColor(self):
+ return self._endcolor
+
+ @endColor.setter
+ def endColor(self, val):
+ if self._endcolor == val:
+ return
+ self._endcolor = val
+ self.updateTexture()
+ self.endColorChanged.emit(self._endcolor)
+
+ def updateTexture(self):
+ self.setSize(QSize(self._width, self._height))
+ self.setFormat(QQuick3DTextureData.RGBA8)
+ self.setHasTransparency(False)
+ self.setTextureData(self.generate_texture())
+
+ def generate_texture(self):
+ # Generate a horizontal gradient by interpolating between start and end colors.
+ gradientScanline = [
+ self.linear_interpolate(self._startcolor, self._endcolor, x / self._width)
+ for x in range(self._width)
+ ]
+ # Convert the gradient colors to a flattened list of RGBA values.
+ flattenedGradient = [
+ component
+ for color in gradientScanline
+ for component in (color.red(), color.green(), color.blue(), 255)
+ ]
+ # Repeat the gradient vertically to form the texture.
+ return bytearray(flattenedGradient * self._height)
+
+ def linear_interpolate(self, color1, color2, value):
+ output = QColor()
+
+ output.setRedF(color1.redF() + (value * (color2.redF() - color1.redF())))
+ output.setGreenF(color1.greenF() + (value * (color2.greenF() - color1.greenF())))
+ output.setBlueF(color1.blueF() + (value * (color2.blueF() - color1.blueF())))
+
+ return output
diff --git a/examples/quick3d/proceduraltexture/main.py b/examples/quick3d/proceduraltexture/main.py
new file mode 100644
index 000000000..a732cc015
--- /dev/null
+++ b/examples/quick3d/proceduraltexture/main.py
@@ -0,0 +1,30 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQml import QQmlApplicationEngine
+
+from gradienttexture import GradientTexture # noqa: F401
+
+from pathlib import Path
+
+import os
+import sys
+
+if __name__ == "__main__":
+ app = QGuiApplication(sys.argv)
+ app.setOrganizationName("QtProject")
+ app.setApplicationName("ProceduralTexture")
+
+ engine = QQmlApplicationEngine()
+ app_dir = Path(__file__).parent
+ engine.addImportPath(os.fspath(app_dir))
+ engine.loadFromModule("ProceduralTextureModule", "Main")
+
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ ex = app.exec()
+ del engine
+
+ sys.exit(ex)
diff --git a/examples/quick3d/proceduraltexture/proceduraltexture.pyproject b/examples/quick3d/proceduraltexture/proceduraltexture.pyproject
new file mode 100644
index 000000000..0815cd8b8
--- /dev/null
+++ b/examples/quick3d/proceduraltexture/proceduraltexture.pyproject
@@ -0,0 +1,9 @@
+{
+ "files": [
+ "main.py",
+ "gradienttexture.py",
+ "ProceduralTextureModule/qmldir",
+ "ProceduralTextureModule/Main.qml",
+ "ProceduralTextureModule/app.qrc"
+ ]
+}
diff --git a/examples/quickcontrols/contactslist/Contact/ContactDelegate.ui.qml b/examples/quickcontrols/contactslist/Contact/ContactDelegate.ui.qml
new file mode 100644
index 000000000..affcccc3e
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/ContactDelegate.ui.qml
@@ -0,0 +1,82 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+ItemDelegate {
+ id: delegate
+
+ checkable: true
+
+ contentItem: ColumnLayout {
+ spacing: 10
+
+ Label {
+ text: fullName
+ font.bold: true
+ elide: Text.ElideRight
+ Layout.fillWidth: true
+ }
+
+ GridLayout {
+ id: grid
+ visible: false
+
+ columns: 2
+ rowSpacing: 10
+ columnSpacing: 10
+
+ Label {
+ text: qsTr("Address:")
+ Layout.leftMargin: 60
+ }
+
+ Label {
+ text: address
+ font.bold: true
+ elide: Text.ElideRight
+ Layout.fillWidth: true
+ }
+
+ Label {
+ text: qsTr("City:")
+ Layout.leftMargin: 60
+ }
+
+ Label {
+ text: city
+ font.bold: true
+ elide: Text.ElideRight
+ Layout.fillWidth: true
+ }
+
+ Label {
+ text: qsTr("Number:")
+ Layout.leftMargin: 60
+ }
+
+ Label {
+ text: number
+ font.bold: true
+ elide: Text.ElideRight
+ Layout.fillWidth: true
+ }
+ }
+ }
+
+ states: [
+ State {
+ name: "expanded"
+ when: delegate.checked
+
+ PropertyChanges {
+ // TODO: When Qt Design Studio supports generalized grouped properties, change to:
+ // grid.visible: true
+ target: grid
+ visible: true
+ }
+ }
+ ]
+}
diff --git a/examples/quickcontrols/contactslist/Contact/ContactDialog.qml b/examples/quickcontrols/contactslist/Contact/ContactDialog.qml
new file mode 100644
index 000000000..d906f00e6
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/ContactDialog.qml
@@ -0,0 +1,45 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Dialog {
+ id: dialog
+
+ signal finished(string fullName, string address, string city, string number)
+
+ function createContact() {
+ form.fullName.clear();
+ form.address.clear();
+ form.city.clear();
+ form.number.clear();
+
+ dialog.title = qsTr("Add Contact");
+ dialog.open();
+ }
+
+ function editContact(contact) {
+ form.fullName.text = contact.fullName;
+ form.address.text = contact.address;
+ form.city.text = contact.city;
+ form.number.text = contact.number;
+
+ dialog.title = qsTr("Edit Contact");
+ dialog.open();
+ }
+
+ x: parent.width / 2 - width / 2
+ y: parent.height / 2 - height / 2
+
+ focus: true
+ modal: true
+ title: qsTr("Add Contact")
+ standardButtons: Dialog.Ok | Dialog.Cancel
+
+ contentItem: ContactForm {
+ id: form
+ }
+
+ onAccepted: finished(form.fullName.text, form.address.text, form.city.text, form.number.text)
+}
diff --git a/examples/quickcontrols/contactslist/Contact/ContactForm.ui.qml b/examples/quickcontrols/contactslist/Contact/ContactForm.ui.qml
new file mode 100644
index 000000000..56c918619
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/ContactForm.ui.qml
@@ -0,0 +1,72 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+GridLayout {
+ id: grid
+ property alias fullName: fullName
+ property alias address: address
+ property alias city: city
+ property alias number: number
+ property int minimumInputSize: 120
+ property string placeholderText: qsTr("<enter>")
+
+ rows: 4
+ columns: 2
+
+ Label {
+ text: qsTr("Full Name")
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ }
+
+ TextField {
+ id: fullName
+ focus: true
+ Layout.fillWidth: true
+ Layout.minimumWidth: grid.minimumInputSize
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ placeholderText: grid.placeholderText
+ }
+
+ Label {
+ text: qsTr("Address")
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ }
+
+ TextField {
+ id: address
+ Layout.fillWidth: true
+ Layout.minimumWidth: grid.minimumInputSize
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ placeholderText: grid.placeholderText
+ }
+
+ Label {
+ text: qsTr("City")
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ }
+
+ TextField {
+ id: city
+ Layout.fillWidth: true
+ Layout.minimumWidth: grid.minimumInputSize
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ placeholderText: grid.placeholderText
+ }
+
+ Label {
+ text: qsTr("Number")
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ }
+
+ TextField {
+ id: number
+ Layout.fillWidth: true
+ Layout.minimumWidth: grid.minimumInputSize
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ placeholderText: grid.placeholderText
+ }
+}
diff --git a/examples/quickcontrols/contactslist/Contact/ContactList.qml b/examples/quickcontrols/contactslist/Contact/ContactList.qml
new file mode 100644
index 000000000..0b7af32b5
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/ContactList.qml
@@ -0,0 +1,70 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ApplicationWindow {
+ id: window
+
+ property int currentContact: -1
+
+ width: 320
+ height: 480
+ visible: true
+ title: qsTr("Contact List")
+
+ ContactDialog {
+ id: contactDialog
+ onFinished: function(fullName, address, city, number) {
+ if (currentContact == -1)
+ contactView.model.append(fullName, address, city, number)
+ else
+ contactView.model.set(currentContact, fullName, address, city, number)
+ }
+ }
+
+ Menu {
+ id: contactMenu
+ x: parent.width / 2 - width / 2
+ y: parent.height / 2 - height / 2
+ modal: true
+
+ Label {
+ padding: 10
+ font.bold: true
+ width: parent.width
+ horizontalAlignment: Qt.AlignHCenter
+ text: currentContact >= 0 ? contactView.model.get(currentContact).fullName : ""
+ }
+ MenuItem {
+ text: qsTr("Edit...")
+ onTriggered: contactDialog.editContact(contactView.model.get(currentContact))
+ }
+ MenuItem {
+ text: qsTr("Remove")
+ onTriggered: contactView.model.remove(currentContact)
+ }
+ }
+
+ ContactView {
+ id: contactView
+ anchors.fill: parent
+ onPressAndHold: {
+ currentContact = index
+ contactMenu.open()
+ }
+ }
+
+ RoundButton {
+ text: qsTr("+")
+ highlighted: true
+ anchors.margins: 10
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ onClicked: {
+ currentContact = -1
+ contactDialog.createContact()
+ }
+ }
+}
diff --git a/examples/quickcontrols/contactslist/Contact/ContactView.ui.qml b/examples/quickcontrols/contactslist/Contact/ContactView.ui.qml
new file mode 100644
index 000000000..3b82b681e
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/ContactView.ui.qml
@@ -0,0 +1,36 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import Backend
+
+ListView {
+ id: listView
+
+ signal pressAndHold(int index)
+
+ width: 320
+ height: 480
+
+ focus: true
+ boundsBehavior: Flickable.StopAtBounds
+
+ section.property: "fullName"
+ section.criteria: ViewSection.FirstCharacter
+ section.delegate: SectionDelegate {
+ width: listView.width
+ }
+
+ delegate: ContactDelegate {
+ id: delegate
+ width: listView.width
+ onPressAndHold: listView.pressAndHold(index)
+ }
+
+ model: ContactModel {
+ id: contactModel
+ }
+
+ ScrollBar.vertical: ScrollBar { }
+}
diff --git a/examples/quickcontrols/contactslist/Contact/SectionDelegate.ui.qml b/examples/quickcontrols/contactslist/Contact/SectionDelegate.ui.qml
new file mode 100644
index 000000000..3a62409a8
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/SectionDelegate.ui.qml
@@ -0,0 +1,17 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ToolBar {
+ id: background
+
+ Label {
+ id: label
+ text: section
+ anchors.fill: parent
+ horizontalAlignment: Qt.AlignHCenter
+ verticalAlignment: Qt.AlignVCenter
+ }
+}
diff --git a/examples/quickcontrols/contactslist/Contact/qmldir b/examples/quickcontrols/contactslist/Contact/qmldir
new file mode 100644
index 000000000..339d45a1d
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/qmldir
@@ -0,0 +1,7 @@
+module Contact
+ContactList 1.0 ContactList.qml
+ContactDialog 1.0 ContactDialog.qml
+ContactDelegate 1.0 ContactDelegate.ui.qml
+ContactForm 1.0 ContactForm.ui.qml
+ContactView 1.0 ContactView.ui.qml
+SectionDelegate 1.0 SectionDelegate.ui.qml
diff --git a/examples/quickcontrols/contactslist/contactlist.pyproject b/examples/quickcontrols/contactslist/contactlist.pyproject
new file mode 100644
index 000000000..75b0bd693
--- /dev/null
+++ b/examples/quickcontrols/contactslist/contactlist.pyproject
@@ -0,0 +1,10 @@
+{
+ "files": ["main.py",
+ "contactmodel.py",
+ "Contact/ContactDialog.qml",
+ "Contact/ContactDelegate.ui.qml",
+ "Contact/ContactForm.ui.qml",
+ "Contact/ContactList.qml",
+ "Contact/ContactView.ui.qml",
+ "Contact/SectionDelegate.ui.qml"]
+}
diff --git a/examples/quickcontrols/contactslist/contactmodel.py b/examples/quickcontrols/contactslist/contactmodel.py
new file mode 100644
index 000000000..5d2746c2e
--- /dev/null
+++ b/examples/quickcontrols/contactslist/contactmodel.py
@@ -0,0 +1,116 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import bisect
+from dataclasses import dataclass
+from enum import IntEnum
+
+from PySide6.QtCore import (QAbstractListModel, QEnum, Qt, QModelIndex, Slot,
+ QByteArray)
+from PySide6.QtQml import QmlElement
+
+QML_IMPORT_NAME = "Backend"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class ContactModel(QAbstractListModel):
+
+ @QEnum
+ class ContactRole(IntEnum):
+ FullNameRole = Qt.DisplayRole
+ AddressRole = Qt.UserRole
+ CityRole = Qt.UserRole + 1
+ NumberRole = Qt.UserRole + 2
+
+ @dataclass
+ class Contact:
+ fullName: str
+ address: str
+ city: str
+ number: str
+
+ def __init__(self, parent=None) -> None:
+ super().__init__(parent)
+ self.m_contacts = []
+ self.m_contacts.append(self.Contact("Angel Hogan", "Chapel St. 368 ", "Clearwater",
+ "0311 1823993"))
+ self.m_contacts.append(self.Contact("Felicia Patton", "Annadale Lane 2", "Knoxville",
+ "0368 1244494"))
+ self.m_contacts.append(self.Contact("Grant Crawford", "Windsor Drive 34", "Riverdale",
+ "0351 7826892"))
+ self.m_contacts.append(self.Contact("Gretchen Little", "Sunset Drive 348", "Virginia Beach",
+ "0343 1234991"))
+ self.m_contacts.append(self.Contact("Geoffrey Richards", "University Lane 54", "Trussville",
+ "0423 2144944"))
+ self.m_contacts.append(self.Contact("Henrietta Chavez", "Via Volto San Luca 3",
+ "Piobesi Torinese", "0399 2826994"))
+ self.m_contacts.append(self.Contact("Harvey Chandler", "North Squaw Creek 11",
+ "Madisonville", "0343 1244492"))
+ self.m_contacts.append(self.Contact("Miguel Gomez", "Wild Rose Street 13", "Trussville",
+ "0343 9826996"))
+ self.m_contacts.append(self.Contact("Norma Rodriguez", " Glen Eagles Street 53",
+ "Buffalo", "0241 5826596"))
+ self.m_contacts.append(self.Contact("Shelia Ramirez", "East Miller Ave 68", "Pickerington",
+ "0346 4844556"))
+ self.m_contacts.append(self.Contact("Stephanie Moss", "Piazza Trieste e Trento 77",
+ "Roata Chiusani", "0363 0510490"))
+
+ def rowCount(self, parent=QModelIndex()):
+ return len(self.m_contacts)
+
+ def data(self, index: QModelIndex, role: int):
+ row = index.row()
+ if row < self.rowCount():
+ if role == ContactModel.ContactRole.FullNameRole:
+ return self.m_contacts[row].fullName
+ elif role == ContactModel.ContactRole.AddressRole:
+ return self.m_contacts[row].address
+ elif role == ContactModel.ContactRole.CityRole:
+ return self.m_contacts[row].city
+ elif role == ContactModel.ContactRole.NumberRole:
+ return self.m_contacts[row].number
+
+ def roleNames(self):
+ default = super().roleNames()
+ default[ContactModel.ContactRole.FullNameRole] = QByteArray(b"fullName")
+ default[ContactModel.ContactRole.AddressRole] = QByteArray(b"address")
+ default[ContactModel.ContactRole.CityRole] = QByteArray(b"city")
+ default[ContactModel.ContactRole.NumberRole] = QByteArray(b"number")
+ return default
+
+ @Slot(int)
+ def get(self, row: int):
+ contact = self.m_contacts[row]
+ return {"fullName": contact.fullName, "address": contact.address,
+ "city": contact.city, "number": contact.number}
+
+ @Slot(str, str, str, str)
+ def append(self, full_name: str, address: str, city: str, number: str):
+ contact = self.Contact(full_name, address, city, number)
+ contact_names = [contact.fullName for contact in self.m_contacts]
+ index = bisect.bisect(contact_names, contact.fullName)
+ self.beginInsertRows(QModelIndex(), index, index)
+ self.m_contacts.insert(index, contact)
+ self.endInsertRows()
+
+ @Slot(int, str, str, str, str)
+ def set(self, row: int, full_name: str, address: str, city: str, number: str):
+ if row < 0 or row >= len(self.m_contacts):
+ return
+
+ self.m_contacts[row] = self.Contact(full_name, address, city, number)
+ self.dataChanged(self.index(row, 0), self.index(row, 0),
+ [ContactModel.ContactRole.FullNameRole,
+ ContactModel.ContactRole.AddressRole,
+ ContactModel.ContactRole.CityRole,
+ ContactModel.ContactRole.NumberRole])
+
+ @Slot(int)
+ def remove(self, row):
+ if row < 0 or row >= len(self.m_contacts):
+ return
+
+ self.beginRemoveRows(QModelIndex(), row, row)
+ del self.m_contacts[row]
+ self.endRemoveRows()
diff --git a/examples/quickcontrols/contactslist/doc/contactslist.rst b/examples/quickcontrols/contactslist/doc/contactslist.rst
new file mode 100644
index 000000000..b5540e39b
--- /dev/null
+++ b/examples/quickcontrols/contactslist/doc/contactslist.rst
@@ -0,0 +1,15 @@
+Qt Quick Controls - Contact List
+================================
+
+.. tags:: Android
+
+A QML app using Qt Quick Controls and a Python class that implements a simple
+contact list. This example can also be deployed to Android using
+**pyside6-android-deploy**
+
+A PySide6 application that demonstrates the analogous example in Qt
+`ContactsList <https://doc.qt.io/qt-6.6/qtquickcontrols-contactlist-example.html>`_
+
+.. image:: qtquickcontrols-contactlist.png
+ :width: 400
+ :alt: ContactList Screenshot
diff --git a/examples/quickcontrols/contactslist/doc/qtquickcontrols-contactlist.png b/examples/quickcontrols/contactslist/doc/qtquickcontrols-contactlist.png
new file mode 100644
index 000000000..9f1c30654
--- /dev/null
+++ b/examples/quickcontrols/contactslist/doc/qtquickcontrols-contactlist.png
Binary files differ
diff --git a/examples/quickcontrols/contactslist/main.py b/examples/quickcontrols/contactslist/main.py
new file mode 100644
index 000000000..d501bbdb4
--- /dev/null
+++ b/examples/quickcontrols/contactslist/main.py
@@ -0,0 +1,28 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""
+PySide6 port of Qt Quick Controls Contact List example from Qt v6.x
+"""
+import sys
+from pathlib import Path
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQml import QQmlApplicationEngine
+
+from contactmodel import ContactModel # noqa: F401
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ app.setOrganizationName("QtProject")
+ app.setApplicationName("ContactsList")
+ engine = QQmlApplicationEngine()
+
+ engine.addImportPath(Path(__file__).parent)
+ engine.loadFromModule("Contact", "ContactList")
+
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ ex = app.exec()
+ del engine
+ sys.exit(ex)
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/Main.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/Main.qml
new file mode 100644
index 000000000..7f7798ed8
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/Main.qml
@@ -0,0 +1,185 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls.Basic
+import QtQuick.Layouts
+import FileSystemModule
+
+pragma ComponentBehavior: Bound
+
+ApplicationWindow {
+ id: root
+
+ property bool expandPath: false
+ property bool showLineNumbers: true
+ property string currentFilePath: ""
+
+ width: 1100
+ height: 600
+ minimumWidth: 200
+ minimumHeight: 100
+ visible: true
+ color: Colors.background
+ flags: Qt.Window | Qt.FramelessWindowHint
+ title: qsTr("File System Explorer Example")
+
+ function getInfoText() : string {
+ let out = root.currentFilePath
+ if (!out)
+ return qsTr("File System Explorer")
+ return root.expandPath ? out : out.substring(out.lastIndexOf("/") + 1, out.length)
+ }
+
+ menuBar: MyMenuBar {
+ dragWindow: root
+ infoText: root.getInfoText()
+ MyMenu {
+ title: qsTr("File")
+
+ Action {
+ text: qsTr("Increase Font")
+ shortcut: StandardKey.ZoomIn
+ onTriggered: editor.text.font.pixelSize += 1
+ }
+ Action {
+ text: qsTr("Decrease Font")
+ shortcut: StandardKey.ZoomOut
+ onTriggered: editor.text.font.pixelSize -= 1
+ }
+ Action {
+ text: root.showLineNumbers ? qsTr("Toggle Line Numbers OFF")
+ : qsTr("Toggle Line Numbers ON")
+ shortcut: "Ctrl+L"
+ onTriggered: root.showLineNumbers = !root.showLineNumbers
+ }
+ Action {
+ text: root.expandPath ? qsTr("Toggle Short Path")
+ : qsTr("Toggle Expand Path")
+ enabled: root.currentFilePath
+ onTriggered: root.expandPath = !root.expandPath
+ }
+ Action {
+ text: qsTr("Reset Filesystem")
+ enabled: sidebar.currentTabIndex === 1
+ onTriggered: fileSystemView.rootIndex = undefined
+ }
+ Action {
+ text: qsTr("Exit")
+ onTriggered: Qt.exit(0)
+ shortcut: StandardKey.Quit
+ }
+ }
+
+ MyMenu {
+ title: qsTr("Edit")
+
+ Action {
+ text: qsTr("Cut")
+ shortcut: StandardKey.Cut
+ enabled: editor.text.selectedText.length > 0
+ onTriggered: editor.text.cut()
+ }
+ Action {
+ text: qsTr("Copy")
+ shortcut: StandardKey.Copy
+ enabled: editor.text.selectedText.length > 0
+ onTriggered: editor.text.copy()
+ }
+ Action {
+ text: qsTr("Paste")
+ shortcut: StandardKey.Paste
+ enabled: editor.text.canPaste
+ onTriggered: editor.text.paste()
+ }
+ Action {
+ text: qsTr("Select All")
+ shortcut: StandardKey.SelectAll
+ enabled: editor.text.length > 0
+ onTriggered: editor.text.selectAll()
+ }
+ Action {
+ text: qsTr("Undo")
+ shortcut: StandardKey.Undo
+ enabled: editor.text.canUndo
+ onTriggered: editor.text.undo()
+ }
+ }
+ }
+ // Set up the layout of the main components in a row:
+ // [ Sidebar, Navigation, Editor ]
+ RowLayout {
+ anchors.fill: parent
+ spacing: 0
+
+ // Stores the buttons that navigate the application.
+ Sidebar {
+ id: sidebar
+ dragWindow: root
+ Layout.preferredWidth: 50
+ Layout.fillHeight: true
+ }
+
+ // Allows resizing parts of the UI.
+ SplitView {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ // Customized handle to drag between the Navigation and the Editor.
+ handle: Rectangle {
+ implicitWidth: 10
+ color: SplitHandle.pressed ? Colors.color2 : Colors.background
+ border.color: SplitHandle.hovered ? Colors.color2 : Colors.background
+ opacity: SplitHandle.hovered || navigationView.width < 15 ? 1.0 : 0.0
+
+ Behavior on opacity {
+ OpacityAnimator {
+ duration: 1400
+ }
+ }
+ }
+
+ Rectangle {
+ id: navigationView
+ color: Colors.surface1
+ SplitView.preferredWidth: 250
+ SplitView.fillHeight: true
+ // The stack-layout provides different views, based on the
+ // selected buttons inside the sidebar.
+ StackLayout {
+ anchors.fill: parent
+ currentIndex: sidebar.currentTabIndex
+
+ // Shows the help text.
+ Text {
+ text: qsTr("This example shows how to use and visualize the file system.\n\n"
+ + "Customized Qt Quick Components have been used to achieve this look.\n\n"
+ + "You can edit the files but they won't be changed on the file system.\n\n"
+ + "Click on the folder icon to the left to get started.")
+ wrapMode: TextArea.Wrap
+ color: Colors.text
+ }
+
+ // Shows the files on the file system.
+ FileSystemView {
+ id: fileSystemView
+ color: Colors.surface1
+ onFileClicked: path => root.currentFilePath = path
+ }
+ }
+ }
+
+ // The main view that contains the editor.
+ Editor {
+ id: editor
+ showLineNumbers: root.showLineNumbers
+ currentFilePath: root.currentFilePath
+ SplitView.fillWidth: true
+ SplitView.fillHeight: true
+ }
+ }
+ }
+
+ ResizeButton {
+ resizeWindow: root
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/app.qrc b/examples/quickcontrols/filesystemexplorer/FileSystemModule/app.qrc
new file mode 100644
index 000000000..fec76fe67
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/app.qrc
@@ -0,0 +1,15 @@
+<RCC>
+ <qresource prefix="/qt/qml/FileSystemModule">
+ <file>qmldir</file>
+ <file>Main.qml</file>
+ <file>qml/About.qml</file>
+ <file>qml/Editor.qml</file>
+ <file>qml/Colors.qml</file>
+ <file>qml/FileSystemView.qml</file>
+ <file>qml/MyMenu.qml</file>
+ <file>qml/MyMenuBar.qml</file>
+ <file>qml/ResizeButton.qml</file>
+ <file>qml/Sidebar.qml</file>
+ <file>qml/WindowDragHandler.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons.qrc b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons.qrc
new file mode 100644
index 000000000..97d8a3d79
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons.qrc
@@ -0,0 +1,14 @@
+<RCC>
+ <qresource>
+ <file>icons/app_icon.svg</file>
+ <file>icons/folder_closed.svg</file>
+ <file>icons/folder_open.svg</file>
+ <file>icons/generic_file.svg</file>
+ <file>icons/globe.svg</file>
+ <file>icons/info_sign.svg</file>
+ <file>icons/light_bulb.svg</file>
+ <file>icons/qt_logo.svg</file>
+ <file>icons/read.svg</file>
+ <file>icons/resize.svg</file>
+ </qresource>
+</RCC>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/app_icon.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/app_icon.svg
new file mode 100644
index 000000000..5aae4221f
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/app_icon.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="#EBDBB2" d="M13.25 8.5a.75.75 0 1 1-.75-.75.75.75 0 0 1 .75.75zM9.911 21.35l.816.578C10.819 21.798 13 18.666 13 13h-1a15.503 15.503 0 0 1-2.089 8.35zM4 6.703V10a2.002 2.002 0 0 1-2 2v1a2.002 2.002 0 0 1 2 2v3.297A3.707 3.707 0 0 0 7.703 22H9v-1H7.703A2.706 2.706 0 0 1 5 18.297V15a2.999 2.999 0 0 0-1.344-2.5A2.999 2.999 0 0 0 5 10V6.703A2.706 2.706 0 0 1 7.703 4H9V3H7.703A3.707 3.707 0 0 0 4 6.703zM20 10V6.703A3.707 3.707 0 0 0 16.297 3H15v1h1.297A2.706 2.706 0 0 1 19 6.703V10a2.999 2.999 0 0 0 1.344 2.5A2.999 2.999 0 0 0 19 15v3.297A2.706 2.706 0 0 1 16.297 21H15v1h1.297A3.707 3.707 0 0 0 20 18.297V15a2.002 2.002 0 0 1 2-2v-1a2.002 2.002 0 0 1-2-2z"/><path fill="none" d="M0 0h24v24H0z"/></svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_closed.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_closed.svg
new file mode 100644
index 000000000..36f119c96
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_closed.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1792 1792"
+ id="svg51"
+ sodipodi:docname="folder_closed.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs55" />
+ <sodipodi:namedview
+ id="namedview53"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.45033482"
+ inkscape:cx="842.70632"
+ inkscape:cy="896"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg51" />
+ <path
+ fill="currentColor"
+ d="m 1718,672 v 704 q 0,92 -66,158 -66,66 -158,66 H 278 q -92,0 -158,-66 -66,-66 -66,-158 V 416 q 0,-92 66,-158 66,-66 158,-66 h 320 q 92,0 158,66 66,66 66,158 v 32 h 672 q 92,0 158,66 66,66 66,158 z"
+ id="path49" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_open.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_open.svg
new file mode 100644
index 000000000..daa55a7a1
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_open.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1792 1792"
+ id="svg139"
+ sodipodi:docname="folder_open.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs143" />
+ <sodipodi:namedview
+ id="namedview141"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.24358259"
+ inkscape:cx="149.84651"
+ inkscape:cy="1098.1901"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg139" />
+ <path
+ fill="currentColor"
+ d="M 1590,1376 V 672 q 0,-40 -28,-68 -28,-28 -68,-28 H 790 q -40,0 -68,-28 -28,-28 -28,-68 v -64 q 0,-40 -28,-68 -28,-28 -68,-28 H 278 q -40,0 -68,28 -28,28 -28,68 v 960 q 0,40 28,68 28,28 68,28 h 1216 q 40,0 68,-28 28,-28 28,-68 z m 128,-704 v 704 q 0,92 -66,158 -66,66 -158,66 H 278 q -92,0 -158,-66 -66,-66 -66,-158 V 416 q 0,-92 66,-158 66,-66 158,-66 h 320 q 92,0 158,66 66,66 66,158 v 32 h 672 q 92,0 158,66 66,66 66,158 z"
+ id="path137" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/generic_file.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/generic_file.svg
new file mode 100644
index 000000000..9c855676e
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/generic_file.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1792 1792"
+ id="svg147"
+ sodipodi:docname="generic_file.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs151" />
+ <sodipodi:namedview
+ id="namedview149"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.12179129"
+ inkscape:cx="-578.85911"
+ inkscape:cy="1687.3127"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg147" />
+ <path
+ fill="currentColor"
+ d="m 1586,476 q 14,14 28,36 H 1142 V 40 q 22,14 36,28 z m -476,164 h 544 v 1056 q 0,40 -28,68 -28,28 -68,28 H 214 q -40,0 -68,-28 -28,-28 -28,-68 V 96 Q 118,56 146,28 174,0 214,0 h 800 v 544 q 0,40 28,68 28,28 68,28 z m 160,736 v -64 q 0,-14 -9,-23 -9,-9 -23,-9 H 534 q -14,0 -23,9 -9,9 -9,23 v 64 q 0,14 9,23 9,9 23,9 h 704 q 14,0 23,-9 9,-9 9,-23 z m 0,-256 v -64 q 0,-14 -9,-23 -9,-9 -23,-9 H 534 q -14,0 -23,9 -9,9 -9,23 v 64 q 0,14 9,23 9,9 23,9 h 704 q 14,0 23,-9 9,-9 9,-23 z m 0,-256 v -64 q 0,-14 -9,-23 -9,-9 -23,-9 H 534 q -14,0 -23,9 -9,9 -9,23 v 64 q 0,14 9,23 9,9 23,9 h 704 q 14,0 23,-9 9,-9 9,-23 z"
+ id="path145" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/globe.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/globe.svg
new file mode 100644
index 000000000..081433813
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/globe.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1792 1792"
+ id="svg155"
+ sodipodi:docname="globe.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs159" />
+ <sodipodi:namedview
+ id="namedview157"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.12179129"
+ inkscape:cx="504.9622"
+ inkscape:cy="1720.1558"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg155" />
+ <path
+ fill="currentColor"
+ d="m 886,128 q 209,0 385.5,103 176.5,103 279.5,279.5 103,176.5 103,385.5 0,209 -103,385.5 Q 1448,1458 1271.5,1561 1095,1664 886,1664 677,1664 500.5,1561 324,1458 221,1281.5 118,1105 118,896 118,687 221,510.5 324,334 500.5,231 677,128 886,128 Z m 274,521 q -2,1 -9.5,9.5 -7.5,8.5 -13.5,9.5 2,0 4.5,-5 2.5,-5 5,-11 2.5,-6 3.5,-7 6,-7 22,-15 14,-6 52,-12 34,-8 51,11 -2,-2 9.5,-13 11.5,-11 14.5,-12 3,-2 15,-4.5 12,-2.5 15,-7.5 l 2,-22 q -12,1 -17.5,-7 -5.5,-8 -6.5,-21 0,2 -6,8 0,-7 -4.5,-8 -4.5,-1 -11.5,1 -7,2 -9,1 -10,-3 -15,-7.5 -5,-4.5 -8,-16.5 -3,-12 -4,-15 -2,-5 -9.5,-10.5 -7.5,-5.5 -9.5,-10.5 -1,-2 -2.5,-5.5 -1.5,-3.5 -3,-6.5 -1.5,-3 -4,-5.5 -2.5,-2.5 -5.5,-2.5 -3,0 -7,5 -4,5 -7.5,10 -3.5,5 -4.5,5 -3,-2 -6,-1.5 -3,0.5 -4.5,1 -1.5,0.5 -4.5,3 -3,2.5 -5,3.5 -3,2 -8.5,3 -5.5,1 -8.5,2 15,-5 -1,-11 -10,-4 -16,-3 9,-4 7.5,-12 -1.5,-8 -8.5,-14 h 5 q -1,-4 -8.5,-8.5 -7.5,-4.5 -17.5,-8.5 -10,-4 -13,-6 -8,-5 -34,-9.5 -26,-4.5 -33,-0.5 -5,6 -4.5,10.5 0.5,4.5 4,14 3.5,9.5 3.5,12.5 1,6 -5.5,13 -6.5,7 -6.5,12 0,7 14,15.5 14,8.5 10,21.5 -3,8 -16,16 -13,8 -16,12 -5,8 -1.5,18.5 3.5,10.5 10.5,16.5 2,2 1.5,4 -0.5,2 -3.5,4.5 -3,2.5 -5.5,4 -2.5,1.5 -6.5,3.5 l -3,2 q -11,5 -20.5,-6 -9.5,-11 -13.5,-26 -7,-25 -16,-30 -23,-8 -29,1 -5,-13 -41,-26 -25,-9 -58,-4 6,-1 0,-15 -7,-15 -19,-12 3,-6 4,-17.5 1,-11.5 1,-13.5 3,-13 12,-23 1,-1 7,-8.5 6,-7.5 9.5,-13.5 3.5,-6 0.5,-6 35,4 50,-11 5,-5 11.5,-17 6.5,-12 10.5,-17 9,-6 14,-5.5 5,0.5 14.5,5.5 9.5,5 14.5,5 14,1 15.5,-11 1.5,-12 -7.5,-20 12,1 3,-17 -5,-7 -8,-9 -12,-4 -27,5 -8,4 2,8 -1,-1 -9.5,10.5 Q 927,340 919,346 q -8,6 -16,-5 -1,-1 -5.5,-13.5 Q 893,315 888,314 q -8,0 -16,15 3,-8 -11,-15 -14,-7 -24,-8 19,-12 -8,-27 -7,-4 -20.5,-5 -13.5,-1 -19.5,4 -5,7 -5.5,11.5 -0.5,4.5 5,8 5.5,3.5 10.5,5.5 5,2 11.5,4 6.5,2 8.5,3 14,10 8,14 -2,1 -8.5,3.5 -6.5,2.5 -11.5,4.5 -5,2 -6,4 -3,4 0,14 3,10 -2,14 -5,-5 -9,-17.5 -4,-12.5 -7,-16.5 7,9 -25,6 l -10,-1 q -4,0 -16,2 -12,2 -20.5,1 -8.5,-1 -13.5,-8 -4,-8 0,-20 1,-4 4,-2 -4,-3 -11,-9.5 -7,-6.5 -10,-8.5 -46,15 -94,41 6,1 12,-1 5,-2 13,-6.5 8,-4.5 10,-5.5 34,-14 42,-7 l 5,-5 q 14,16 20,25 -7,-4 -30,-1 -20,6 -22,12 7,12 5,18 -4,-3 -11.5,-10 -7.5,-7 -14.5,-11 -7,-4 -15,-5 -16,0 -22,1 -146,80 -235,222 7,7 12,8 4,1 5,9 1,8 2.5,11 1.5,3 11.5,-3 9,8 3,19 1,-1 44,27 19,17 21,21 3,11 -10,18 -1,-2 -9,-9 -8,-7 -9,-4 -3,5 0.5,18.5 3.5,13.5 10.5,12.5 -7,0 -9.5,16 -2.5,16 -2.5,35.5 0,19.5 -1,23.5 l 2,1 q -3,12 5.5,34.5 8.5,22.5 21.5,19.5 -13,3 20,43 6,8 8,9 3,2 12,7.5 9,5.5 15,10 6,4.5 10,10.5 4,5 10,22.5 6,17.5 14,23.5 -2,6 9.5,20 11.5,14 10.5,23 -1,0 -2.5,1 -1.5,1 -2.5,1 3,7 15.5,14 12.5,7 15.5,13 1,3 2,10 1,7 3,11 2,4 8,2 2,-20 -24,-62 -15,-25 -17,-29 -3,-5 -5.5,-15.5 Q 541,919 539,915 q 2,0 6,1.5 4,1.5 8.5,3.5 4.5,2 7.5,4 3,2 2,3 -3,7 2,17.5 5,10.5 12,18.5 7,8 17,19 10,11 12,13 6,6 14,19.5 8,13.5 0,13.5 9,0 20,10 11,10 17,20 5,8 8,26 3,18 5,24 2,7 8.5,13.5 6.5,6.5 12.5,9.5 l 16,8 q 0,0 13,7 5,2 18.5,10.5 13.5,8.5 21.5,11.5 10,4 16,4 6,0 14.5,-2.5 8.5,-2.5 13.5,-3.5 15,-2 29,15 14,17 21,21 36,19 55,11 -2,1 0.5,7.5 2.5,6.5 8,15.5 5.5,9 9,14.5 3.5,5.5 5.5,8.5 5,6 18,15 13,9 18,15 6,-4 7,-9 -3,8 7,20 10,12 18,10 14,-3 14,-32 -31,15 -49,-18 0,-1 -2.5,-5.5 -2.5,-4.5 -4,-8.5 -1.5,-4 -2.5,-8.5 -1,-4.5 0,-7.5 1,-3 5,-3 9,0 10,-3.5 1,-3.5 -2,-12.5 -3,-9 -4,-13 -1,-8 -11,-20 -10,-12 -12,-15 -5,9 -16,8 -11,-1 -16,-9 0,1 -1.5,5.5 -1.5,4.5 -1.5,6.5 -13,0 -15,-1 1,-3 2.5,-17.5 1.5,-14.5 3.5,-22.5 1,-4 5.5,-12 4.5,-8 7.5,-14.5 3,-6.5 4,-12.5 1,-6 -4.5,-9.5 -5.5,-3.5 -17.5,-2.5 -19,1 -26,20 -1,3 -3,10.5 -2,7.5 -5,11.5 -3,4 -9,7 -7,3 -24,2 -17,-1 -24,-5 -13,-8 -22.5,-29 -9.5,-21 -9.5,-37 0,-10 2.5,-26.5 2.5,-16.5 3,-25 0.5,-8.5 -5.5,-24.5 3,-2 9,-9.5 6,-7.5 10,-10.5 2,-1 4.5,-1.5 2.5,-0.5 4.5,0 2,0.5 4,-1.5 2,-2 3,-6 -1,-1 -4,-3 -3,-3 -4,-3 7,3 28.5,-1.5 21.5,-4.5 27.5,1.5 15,11 22,-2 0,-1 -2.5,-9.5 Q 870,931 872,926 q 5,27 29,9 3,3 15.5,5 12.5,2 17.5,5 3,2 7,5.5 4,3.5 5.5,4.5 1.5,1 5,-0.5 3.5,-1.5 8.5,-6.5 10,14 12,24 11,40 19,44 7,3 11,2 4,-1 4.5,-9.5 0.5,-8.5 0,-14 Q 1006,989 1005,982 l -1,-8 v -18 l -1,-8 q -15,-3 -18.5,-12 -3.5,-9 1.5,-18.5 5,-9.5 15,-18.5 1,-1 8,-3.5 7,-2.5 15.5,-6.5 8.5,-4 12.5,-8 21,-19 15,-35 7,0 11,-9 -1,0 -5,-3 -4,-3 -7.5,-5 -3.5,-2 -4.5,-2 9,-5 2,-16 5,-3 7.5,-11 2.5,-8 7.5,-10 9,12 21,2 7,-8 1,-16 5,-7 20.5,-10.5 15.5,-3.5 18.5,-9.5 7,2 8,-2 1,-4 1,-12 0,-8 3,-12 4,-5 15,-9 11,-4 13,-5 l 17,-11 q 3,-4 0,-4 18,2 31,-11 10,-11 -6,-20 3,-6 -3,-9.5 -6,-3.5 -15,-5.5 3,-1 11.5,-0.5 8.5,0.5 10.5,-1.5 15,-10 -7,-16 -17,-5 -43,12 z m -163,877 q 206,-36 351,-189 -3,-3 -12.5,-4.5 -9.5,-1.5 -12.5,-3.5 -18,-7 -24,-8 1,-7 -2.5,-13 -3.5,-6 -8,-9 -4.5,-3 -12.5,-8 -8,-5 -11,-7 -2,-2 -7,-6 -5,-4 -7,-5.5 -2,-1.5 -7.5,-4.5 -5.5,-3 -8.5,-2 -3,1 -10,1 l -3,1 q -3,1 -5.5,2.5 -2.5,1.5 -5.5,3 -3,1.5 -4,3 -1,1.5 0,2.5 -21,-17 -36,-22 -5,-1 -11,-5.5 -6,-4.5 -10.5,-7 -4.5,-2.5 -10,-1.5 -5.5,1 -11.5,7 -5,5 -6,15 -1,10 -2,13 -7,-5 0,-17.5 7,-12.5 2,-18.5 -3,-6 -10.5,-4.5 -7.5,1.5 -12,4.5 -4.5,3 -11.5,8.5 -7,5.5 -9,6.5 -2,1 -8.5,5.5 -6.5,4.5 -8.5,7.5 -3,4 -6,12 -3,8 -5,11 -2,-4 -11.5,-6.5 -9.5,-2.5 -9.5,-5.5 2,10 4,35 2,25 5,38 7,31 -12,48 -27,25 -29,40 -4,22 12,26 0,7 -8,20.5 -8,13.5 -7,21.5 0,6 2,16 z"
+ id="path153" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/info_sign.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/info_sign.svg
new file mode 100644
index 000000000..517f76360
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/info_sign.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1792 1792"
+ id="svg163"
+ sodipodi:docname="info_sign.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs167" />
+ <sodipodi:namedview
+ id="namedview165"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.48716518"
+ inkscape:cx="72.870561"
+ inkscape:cy="896"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg163" />
+ <path
+ fill="currentColor"
+ d="m 1142,1376 v -160 q 0,-14 -9,-23 -9,-9 -23,-9 h -96 V 672 q 0,-14 -9,-23 -9,-9 -23,-9 H 662 q -14,0 -23,9 -9,9 -9,23 v 160 q 0,14 9,23 9,9 23,9 h 96 v 320 h -96 q -14,0 -23,9 -9,9 -9,23 v 160 q 0,14 9,23 9,9 23,9 h 448 q 14,0 23,-9 9,-9 9,-23 z M 1014,480 V 320 q 0,-14 -9,-23 -9,-9 -23,-9 H 790 q -14,0 -23,9 -9,9 -9,23 v 160 q 0,14 9,23 9,9 23,9 h 192 q 14,0 23,-9 9,-9 9,-23 z m 640,416 q 0,209 -103,385.5 Q 1448,1458 1271.5,1561 1095,1664 886,1664 677,1664 500.5,1561 324,1458 221,1281.5 118,1105 118,896 118,687 221,510.5 324,334 500.5,231 677,128 886,128 1095,128 1271.5,231 1448,334 1551,510.5 1654,687 1654,896 Z"
+ id="path161" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/light_bulb.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/light_bulb.svg
new file mode 100644
index 000000000..ed2ed55fb
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/light_bulb.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1538 1538"
+ id="svg4"
+ sodipodi:docname="light_bulb.svg"
+ width="1538"
+ height="1538"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ id="namedview6"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ fit-margin-top="1"
+ fit-margin-left="1"
+ fit-margin-right="1"
+ fit-margin-bottom="1"
+ lock-margins="true"
+ inkscape:zoom="0.16"
+ inkscape:cx="1234.375"
+ inkscape:cy="409.375"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg4" />
+ <path
+ fill="currentColor"
+ d="m 983,449 q 0,13 -9.5,22.5 Q 964,481 951,481 938,481 928.5,471.5 919,462 919,449 919,403 865,378 811,353 759,353 746,353 736.5,343.5 727,334 727,321 q 0,-13 9.5,-22.5 9.5,-9.5 22.5,-9.5 50,0 99.5,16 49.5,16 87,54 37.5,38 37.5,90 z m 160,0 q 0,-72 -34.5,-134 -34.5,-62 -90,-101.5 Q 963,174 895.5,151.5 828,129 759,129 690,129 622.5,151.5 555,174 499.5,213.5 444,253 409.5,315 375,377 375,449 q 0,101 68,180 10,11 30.5,33 20.5,22 30.5,33 128,153 141,298 h 228 q 13,-145 141,-298 10,-11 30.5,-33 20.5,-22 30.5,-33 68,-79 68,-180 z m 128,0 q 0,155 -103,268 -45,49 -74.5,87 -29.5,38 -59.5,95.5 -30,57.5 -34,107.5 47,28 47,82 0,37 -25,64 25,27 25,64 0,52 -45,81 13,23 13,47 0,46 -31.5,71 -31.5,25 -77.5,25 -20,44 -60,70 -40,26 -87,26 -47,0 -87,-26 -40,-26 -60,-70 -46,0 -77.5,-25 -31.5,-25 -31.5,-71 0,-24 13,-47 -45,-29 -45,-81 0,-37 25,-64 -25,-27 -25,-64 0,-54 47,-82 Q 514,957 484,899.5 454,842 424.5,804 395,766 350,717 247,604 247,449 247,350 291.5,264.5 336,179 408.5,122.5 481,66 572.5,33.5 664,1 759,1 q 95,0 186.5,32.5 91.5,32.5 164,89 72.5,56.5 117,142 Q 1271,350 1271,449 Z"
+ id="path2" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/qt_logo.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/qt_logo.svg
new file mode 100644
index 000000000..062daff3e
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/qt_logo.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ width="462pt"
+ height="339pt"
+ viewBox="0 0 462 339"
+ version="1.1"
+ id="svg2"
+>
+ <path
+ fill="#41cd52"
+ d=" M 63.50 0.00 L 462.00 0.00 L 462.00 274.79 C 440.60 296.26 419.13 317.66 397.61 339.00 L 0.00 339.00 L 0.00 63.39 C 21.08 42.18 42.34 21.13 63.50 0.00 Z"
+ id="path6"/>
+ <path
+ d=" M 122.37 71.33 C 137.50 61.32 156.21 58.79 174.00 58.95 C 190.94 59.16 208.72 62.13 222.76 72.24 C 232.96 79.41 239.59 90.48 244.01 101.93 C 251.16 120.73 253.26 141.03 253.50 161.01 C 253.53 181.13 252.62 201.69 245.96 220.86 C 241.50 233.90 233.01 245.48 221.81 253.52 C 229.87 266.58 238.09 279.54 246.15 292.60 C 236.02 297.27 225.92 301.97 215.78 306.62 C 207.15 292.38 198.56 278.11 189.90 263.89 C 178.19 265.81 166.21 265.66 154.44 264.36 C 140.34 262.67 125.97 258.37 115.09 248.88 C 106.73 241.64 101.48 231.51 97.89 221.21 C 92.01 203.79 90.43 185.25 90.16 166.97 C 90.02 147.21 91.28 127.14 97.24 108.18 C 101.85 93.92 109.48 79.69 122.37 71.33 Z"
+ id="path8"
+ fill="#ffffff"/>
+ <path
+ d=" M 294.13 70.69 C 304.73 70.68 315.33 70.68 325.93 70.69 C 325.96 84.71 325.92 98.72 325.95 112.74 C 339.50 112.76 353.05 112.74 366.60 112.75 C 366.37 121.85 366.12 130.95 365.86 140.05 C 352.32 140.08 338.79 140.04 325.25 140.07 C 325.28 163.05 325.18 186.03 325.30 209.01 C 325.56 215.30 325.42 221.94 328.19 227.75 C 330.21 232.23 335.65 233.38 340.08 233.53 C 348.43 233.50 356.77 233.01 365.12 232.86 C 365.63 241.22 366.12 249.59 366.60 257.95 C 349.99 260.74 332.56 264.08 316.06 258.86 C 309.11 256.80 302.63 252.19 299.81 245.32 C 294.76 233.63 294.35 220.62 294.13 208.07 C 294.11 185.40 294.13 162.74 294.12 140.07 C 286.73 140.05 279.34 140.08 271.95 140.05 C 271.93 130.96 271.93 121.86 271.95 112.76 C 279.34 112.73 286.72 112.77 294.11 112.74 C 294.14 98.72 294.10 84.71 294.13 70.69 Z"
+ id="path10"
+ fill="#ffffff"/>
+ <path
+ fill="#41cd52"
+ d=" M 160.51 87.70 C 170.80 86.36 181.60 86.72 191.34 90.61 C 199.23 93.73 205.93 99.84 209.47 107.58 C 214.90 119.31 216.98 132.26 218.03 145.05 C 219.17 162.07 219.01 179.25 216.66 196.17 C 215.01 206.24 212.66 216.85 205.84 224.79 C 198.92 232.76 188.25 236.18 178.01 236.98 C 167.21 237.77 155.82 236.98 146.07 231.87 C 140.38 228.84 135.55 224.09 132.73 218.27 C 129.31 211.30 127.43 203.69 126.11 196.07 C 122.13 171.91 121.17 146.91 126.61 122.89 C 128.85 113.83 132.11 104.53 138.73 97.70 C 144.49 91.85 152.51 88.83 160.51 87.70 Z"
+ id="path12"/>
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/read.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/read.svg
new file mode 100644
index 000000000..c3af473d2
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/read.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-11 0 1792 1792"
+ id="svg184"
+ sodipodi:docname="read.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs188" />
+ <sodipodi:namedview
+ id="namedview186"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.24358259"
+ inkscape:cx="519.33104"
+ inkscape:cy="1089.9794"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg184" />
+ <path
+ fill="currentColor"
+ d="m 1691.8576,478 q 40,57 18,129 l -275,906 q -19,64 -76.5,107.5 -57.5,43.5 -122.5,43.5 H 312.85764 q -77,0 -148.5,-53.5 Q 92.857644,1557 64.857644,1479 q -24,-67 -2,-127 0,-4 3,-27 3,-23 4,-37 1,-8 -3,-21.5 -4,-13.5 -3,-19.5 2,-11 8,-21 6,-10 16.5,-23.5 10.5,-13.5 16.499996,-23.5 23,-38 45,-91.5 22,-53.5 30,-91.5 3,-10 0.5,-30 -2.5,-20 -0.5,-28 3,-11 17,-28 14,-17 17,-23 21,-36 42,-92 21,-56 25,-90 1,-9 -2.5,-32 -3.5,-23 0.5,-28 4,-13 22,-30.5 18,-17.5 22,-22.5 19,-26 42.5,-84.5 23.5,-58.5 27.5,-96.5 1,-8 -3,-25.5 -4,-17.5 -2,-26.5 2,-8 9,-18 7,-10 18,-23 11,-13 17,-21 8,-12 16.5,-30.5 8.5,-18.5 15,-35 6.5,-16.5 16,-36 9.5,-19.5 19.5,-32 10,-12.5 26.5,-23.5 16.5,-11 36,-11.5 19.5,-0.5 47.5,5.5 l -1,3 q 38,-9 51,-9 h 760.99996 q 74,0 114,56 40,56 18,130 l -274,906 q -36,119 -71.5,153.5 -35.5,34.5 -128.5,34.5 H 208.85764 q -27,0 -38,15 -11,16 -1,43 24,70 144,70 h 922.99996 q 29,0 56,-15.5 27,-15.5 35,-41.5 l 300,-987 q 7,-22 5,-57 38,15 59,43 z m -1063.99996,2 q -4,13 2,22.5 6,9.5 20,9.5 h 607.99996 q 13,0 25.5,-9.5 12.5,-9.5 16.5,-22.5 l 21,-64 q 4,-13 -2,-22.5 -6,-9.5 -20,-9.5 H 690.85764 q -13,0 -25.5,9.5 -12.5,9.5 -16.5,22.5 z m -83,256 q -4,13 2,22.5 6,9.5 20,9.5 h 607.99996 q 13,0 25.5,-9.5 12.5,-9.5 16.5,-22.5 l 21,-64 q 4,-13 -2,-22.5 -6,-9.5 -20,-9.5 H 607.85764 q -13,0 -25.5,9.5 -12.5,9.5 -16.5,22.5 z"
+ id="path182" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/resize.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/resize.svg
new file mode 100644
index 000000000..e86d612f3
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/resize.svg
@@ -0,0 +1,6 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'>
+ <line x1="00" y1="100" x2="100" y2="00" stroke="black" stroke-width="3" />
+ <line x1="20" y1="100" x2="100" y2="20" stroke="black" stroke-width="3" />
+ <line x1="40" y1="100" x2="100" y2="40" stroke="black" stroke-width="3" />
+ <line x1="60" y1="100" x2="100" y2="60" stroke="black" stroke-width="3" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/About.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/About.qml
new file mode 100644
index 000000000..178bf03e4
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/About.qml
@@ -0,0 +1,93 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls.Basic
+import FileSystemModule
+
+ApplicationWindow {
+ id: root
+ width: 650
+ height: 550
+ flags: Qt.Window | Qt.FramelessWindowHint
+ color: Colors.surface1
+
+ menuBar: MyMenuBar {
+ id: menuBar
+
+ dragWindow: root
+ implicitHeight: 27
+ infoText: "About Qt"
+ }
+
+ Image {
+ id: logo
+
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.margins: 20
+
+ source: "../icons/qt_logo.svg"
+ sourceSize.width: 80
+ sourceSize.height: 80
+ fillMode: Image.PreserveAspectFit
+
+ smooth: true
+ antialiasing: true
+ asynchronous: true
+ }
+
+ ScrollView {
+ anchors.top: logo.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ anchors.margins: 20
+
+ TextArea {
+ selectedTextColor: Colors.textFile
+ selectionColor: Colors.selection
+ horizontalAlignment: Text.AlignHCenter
+ textFormat: Text.RichText
+
+ text: qsTr("<h3>About Qt</h3>"
+ + "<p>This program uses Qt version %1.</p>"
+ + "<p>Qt is a C++ toolkit for cross-platform application "
+ + "development.</p>"
+ + "<p>Qt provides single-source portability across all major desktop "
+ + "operating systems. It is also available for embedded Linux and other "
+ + "embedded and mobile operating systems.</p>"
+ + "<p>Qt is available under multiple licensing options designed "
+ + "to accommodate the needs of our various users.</p>"
+ + "<p>Qt licensed under our commercial license agreement is appropriate "
+ + "for development of proprietary/commercial software where you do not "
+ + "want to share any source code with third parties or otherwise cannot "
+ + "comply with the terms of GNU (L)GPL.</p>"
+ + "<p>Qt licensed under GNU (L)GPL is appropriate for the "
+ + "development of Qt&nbsp;applications provided you can comply with the terms "
+ + "and conditions of the respective licenses.</p>"
+ + "<p>Please see <a href=\"http://%2/\">%2</a> "
+ + "for an overview of Qt licensing.</p>"
+ + "<p>Copyright (C) %3 The Qt Company Ltd and other "
+ + "contributors.</p>"
+ + "<p>Qt and the Qt logo are trademarks of The Qt Company Ltd.</p>"
+ + "<p>Qt is The Qt Company Ltd product developed as an open source "
+ + "project. See <a href=\"http://%4/\">%4</a> for more information.</p>")
+ .arg(Application.version).arg("qt.io/licensing").arg("2023").arg("qt.io")
+ color: Colors.textFile
+ wrapMode: Text.WordWrap
+ readOnly: true
+ antialiasing: true
+ background: null
+
+ onLinkActivated: function(link) {
+ Qt.openUrlExternally(link)
+ }
+ }
+ }
+
+ ResizeButton {
+ resizeWindow: root
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Colors.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Colors.qml
new file mode 100644
index 000000000..285667773
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Colors.qml
@@ -0,0 +1,23 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+pragma Singleton
+
+QtObject {
+ readonly property color background: "#292828"
+ readonly property color surface1: "#171819"
+ readonly property color surface2: "#090A0C"
+ readonly property color text: "#D4BE98"
+ readonly property color textFile: "#E1D2B7"
+ readonly property color disabledText: "#2C313A"
+ readonly property color selection: "#4B4A4A"
+ readonly property color active: "#292828"
+ readonly property color inactive: "#383737"
+ readonly property color folder: "#383737"
+ readonly property color icon: "#383737"
+ readonly property color iconIndicator: "#D5B35D"
+ readonly property color color1: "#A7B464"
+ readonly property color color2: "#D3869B"
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Editor.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Editor.qml
new file mode 100644
index 000000000..80f7c04c5
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Editor.qml
@@ -0,0 +1,160 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import FileSystemModule
+
+pragma ComponentBehavior: Bound
+
+// This is the text editor that displays the currently open file, including
+// their corresponding line numbers.
+Rectangle {
+ id: root
+
+ required property string currentFilePath
+ required property bool showLineNumbers
+ property alias text: textArea
+ property int currentLineNumber: -1
+ property int rowHeight: Math.ceil(fontMetrics.lineSpacing)
+
+ color: Colors.background
+
+ onWidthChanged: textArea.update()
+ onHeightChanged: textArea.update()
+
+ RowLayout {
+ anchors.fill: parent
+ // We use a flickable to synchronize the position of the editor and
+ // the line numbers. This is necessary because the line numbers can
+ // extend the available height.
+ Flickable {
+ id: lineNumbers
+
+ // Calculate the width based on the logarithmic scale.
+ Layout.preferredWidth: fontMetrics.averageCharacterWidth
+ * (Math.floor(Math.log10(textArea.lineCount)) + 1) + 10
+ Layout.fillHeight: true
+
+ interactive: false
+ contentY: editorFlickable.contentY
+ visible: textArea.text !== "" && root.showLineNumbers
+
+ Column {
+ anchors.fill: parent
+ Repeater {
+ id: repeatedLineNumbers
+
+ model: LineNumberModel {
+ lineCount: textArea.text !== "" ? textArea.lineCount : 0
+ }
+
+ delegate: Item {
+ required property int index
+
+ width: parent.width
+ height: root.rowHeight
+ Label {
+ id: numbers
+
+ text: parent.index + 1
+
+ width: parent.width
+ height: parent.height
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ color: (root.currentLineNumber === parent.index)
+ ? Colors.iconIndicator : Qt.darker(Colors.text, 2)
+ font: textArea.font
+ }
+ Rectangle {
+ id: indicator
+
+ anchors.left: numbers.right
+ width: 1
+ height: parent.height
+ color: Qt.darker(Colors.text, 3)
+ }
+ }
+ }
+ }
+ }
+
+ Flickable {
+ id: editorFlickable
+
+ property alias textArea: textArea
+
+ // We use an inline component to customize the horizontal and vertical
+ // scroll-bars. This is convenient when the component is only used in one file.
+ component MyScrollBar: ScrollBar {
+ id: scrollBar
+ background: Rectangle {
+ implicitWidth: scrollBar.interactive ? 8 : 4
+ implicitHeight: scrollBar.interactive ? 8 : 4
+
+ opacity: scrollBar.active && scrollBar.size < 1.0 ? 1.0 : 0.0
+ color: Colors.background
+ Behavior on opacity {
+ OpacityAnimator {
+ duration: 500
+ }
+ }
+ }
+ contentItem: Rectangle {
+ implicitWidth: scrollBar.interactive ? 8 : 4
+ implicitHeight: scrollBar.interactive ? 8 : 4
+ opacity: scrollBar.active && scrollBar.size < 1.0 ? 1.0 : 0.0
+ color: Colors.color1
+ Behavior on opacity {
+ OpacityAnimator {
+ duration: 1000
+ }
+ }
+ }
+ }
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ ScrollBar.horizontal: MyScrollBar {}
+ ScrollBar.vertical: MyScrollBar {}
+
+ boundsBehavior: Flickable.StopAtBounds
+
+ TextArea.flickable: TextArea {
+ id: textArea
+ anchors.fill: parent
+
+ focus: false
+ topPadding: 0
+ leftPadding: 10
+
+ text: FileSystemModel.readFile(root.currentFilePath)
+ tabStopDistance: fontMetrics.averageCharacterWidth * 4
+
+ // Grab the current line number from the C++ interface.
+ onCursorPositionChanged: {
+ root.currentLineNumber = FileSystemModel.currentLineNumber(
+ textArea.textDocument, textArea.cursorPosition)
+ }
+
+ color: Colors.textFile
+ selectedTextColor: Colors.textFile
+ selectionColor: Colors.selection
+
+ textFormat: TextEdit.PlainText
+ renderType: Text.QtRendering
+ selectByMouse: true
+ antialiasing: true
+ background: null
+ }
+
+ FontMetrics {
+ id: fontMetrics
+ font: textArea.font
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/FileSystemView.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/FileSystemView.qml
new file mode 100644
index 000000000..db955168c
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/FileSystemView.qml
@@ -0,0 +1,156 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Effects
+import QtQuick.Controls.Basic
+import FileSystemModule
+
+pragma ComponentBehavior: Bound
+
+// This is the file system view which gets populated by the C++ model.
+Rectangle {
+ id: root
+
+ signal fileClicked(string filePath)
+ property alias rootIndex: fileSystemTreeView.rootIndex
+
+ TreeView {
+ id: fileSystemTreeView
+
+ property int lastIndex: -1
+
+ anchors.fill: parent
+ model: FileSystemModel
+ rootIndex: FileSystemModel.rootIndex
+ boundsBehavior: Flickable.StopAtBounds
+ boundsMovement: Flickable.StopAtBounds
+ clip: true
+
+ Component.onCompleted: fileSystemTreeView.toggleExpanded(0)
+
+ // The delegate represents a single entry in the filesystem.
+ delegate: TreeViewDelegate {
+ id: treeDelegate
+ indentation: 8
+ implicitWidth: fileSystemTreeView.width > 0 ? fileSystemTreeView.width : 250
+ implicitHeight: 25
+
+ // Since we have the 'ComponentBehavior Bound' pragma, we need to
+ // require these properties from our model. This is a convenient way
+ // to bind the properties provided by the model's role names.
+ required property int index
+ required property url filePath
+ required property string fileName
+
+ indicator: Image {
+ id: directoryIcon
+
+ x: treeDelegate.leftMargin + (treeDelegate.depth * treeDelegate.indentation)
+ anchors.verticalCenter: parent.verticalCenter
+ source: treeDelegate.hasChildren ? (treeDelegate.expanded
+ ? "../icons/folder_open.svg" : "../icons/folder_closed.svg")
+ : "../icons/generic_file.svg"
+ sourceSize.width: 20
+ sourceSize.height: 20
+ fillMode: Image.PreserveAspectFit
+
+ smooth: true
+ antialiasing: true
+ asynchronous: true
+ }
+
+ contentItem: Text {
+ text: treeDelegate.fileName
+ color: Colors.text
+ }
+
+ background: Rectangle {
+ color: (treeDelegate.index === fileSystemTreeView.lastIndex)
+ ? Colors.selection
+ : (hoverHandler.hovered ? Colors.active : "transparent")
+ }
+
+ // We color the directory icons with this MultiEffect, where we overlay
+ // the colorization color ontop of the SVG icons.
+ MultiEffect {
+ id: iconOverlay
+
+ anchors.fill: directoryIcon
+ source: directoryIcon
+ colorization: 1.0
+ brightness: 1.0
+ colorizationColor: {
+ const isFile = treeDelegate.index === fileSystemTreeView.lastIndex
+ && !treeDelegate.hasChildren;
+ if (isFile)
+ return Qt.lighter(Colors.folder, 3)
+
+ const isExpandedFolder = treeDelegate.expanded && treeDelegate.hasChildren;
+ if (isExpandedFolder)
+ return Colors.color2
+ else
+ return Colors.folder
+ }
+ }
+
+ HoverHandler {
+ id: hoverHandler
+ }
+
+ TapHandler {
+ acceptedButtons: Qt.LeftButton | Qt.RightButton
+ onSingleTapped: (eventPoint, button) => {
+ switch (button) {
+ case Qt.LeftButton:
+ fileSystemTreeView.toggleExpanded(treeDelegate.row)
+ fileSystemTreeView.lastIndex = treeDelegate.index
+ // If this model item doesn't have children, it means it's
+ // representing a file.
+ if (!treeDelegate.hasChildren)
+ root.fileClicked(treeDelegate.filePath)
+ break;
+ case Qt.RightButton:
+ if (treeDelegate.hasChildren)
+ contextMenu.popup();
+ break;
+ }
+ }
+ }
+
+ MyMenu {
+ id: contextMenu
+ Action {
+ text: qsTr("Set as root index")
+ onTriggered: {
+ fileSystemTreeView.rootIndex = fileSystemTreeView.index(treeDelegate.row, 0)
+ }
+ }
+ Action {
+ text: qsTr("Reset root index")
+ onTriggered: fileSystemTreeView.rootIndex = undefined
+ }
+ }
+ }
+
+ // Provide our own custom ScrollIndicator for the TreeView.
+ ScrollIndicator.vertical: ScrollIndicator {
+ active: true
+ implicitWidth: 15
+
+ contentItem: Rectangle {
+ implicitWidth: 6
+ implicitHeight: 6
+
+ color: Colors.color1
+ opacity: fileSystemTreeView.movingVertically ? 0.5 : 0.0
+
+ Behavior on opacity {
+ OpacityAnimator {
+ duration: 500
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenu.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenu.qml
new file mode 100644
index 000000000..1f1d30c56
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenu.qml
@@ -0,0 +1,45 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls.Basic
+import FileSystemModule
+
+Menu {
+ id: root
+
+ delegate: MenuItem {
+ id: menuItem
+ contentItem: Item {
+ Text {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.leftMargin: 5
+
+ text: menuItem.text
+ color: enabled ? Colors.text : Colors.disabledText
+ }
+ Rectangle {
+ id: indicator
+
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.right: parent.right
+ width: 6
+ height: parent.height
+
+ visible: menuItem.highlighted
+ color: Colors.color2
+ }
+ }
+ background: Rectangle {
+ implicitWidth: 210
+ implicitHeight: 35
+ color: menuItem.highlighted ? Colors.active : "transparent"
+ }
+ }
+ background: Rectangle {
+ implicitWidth: 210
+ implicitHeight: 35
+ color: Colors.surface2
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenuBar.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenuBar.qml
new file mode 100644
index 000000000..4874a2c03
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenuBar.qml
@@ -0,0 +1,177 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls.Basic
+import FileSystemModule
+
+// The MenuBar also serves as a controller for our window as we don't use any decorations.
+MenuBar {
+ id: root
+
+ required property ApplicationWindow dragWindow
+ property alias infoText: windowInfo.text
+
+ // Customization of the top level menus inside the MenuBar
+ delegate: MenuBarItem {
+ id: menuBarItem
+
+ contentItem: Text {
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ text: menuBarItem.text
+ font: menuBarItem.font
+ elide: Text.ElideRight
+ color: menuBarItem.highlighted ? Colors.textFile : Colors.text
+ opacity: enabled ? 1.0 : 0.3
+ }
+
+ background: Rectangle {
+ id: background
+
+ color: menuBarItem.highlighted ? Colors.selection : "transparent"
+ Rectangle {
+ id: indicator
+
+ width: 0; height: 3
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+
+ color: Colors.color1
+ states: State {
+ name: "active"
+ when: menuBarItem.highlighted
+ PropertyChanges {
+ indicator.width: background.width - 2
+ }
+ }
+ transitions: Transition {
+ NumberAnimation {
+ properties: "width"
+ duration: 175
+ }
+ }
+ }
+ }
+ }
+ // We use the contentItem property as a place to attach our window decorations. Beneath
+ // the usual menu entries within a MenuBar, it includes a centered information text, along
+ // with the minimize, maximize, and close buttons.
+ contentItem: RowLayout {
+ id: windowBar
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ spacing: root.spacing
+ Repeater {
+ id: menuBarItems
+
+ Layout.alignment: Qt.AlignLeft
+ model: root.contentModel
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Text {
+ id: windowInfo
+
+ width: parent.width; height: parent.height
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ leftPadding: windowActions.width
+ color: Colors.text
+ clip: true
+ }
+ }
+
+ RowLayout {
+ id: windowActions
+
+ Layout.alignment: Qt.AlignRight
+ Layout.fillHeight: true
+
+ spacing: 0
+
+ component InteractionButton: Rectangle {
+ id: interactionButton
+
+ signal action()
+ property alias hovered: hoverHandler.hovered
+
+ Layout.fillHeight: true
+ Layout.preferredWidth: height
+
+ color: hovered ? Colors.background : "transparent"
+ HoverHandler {
+ id: hoverHandler
+ }
+ TapHandler {
+ id: tapHandler
+ onTapped: interactionButton.action()
+ }
+ }
+
+ InteractionButton {
+ id: minimize
+
+ onAction: root.dragWindow.showMinimized()
+ Rectangle {
+ anchors.centerIn: parent
+ color: parent.hovered ? Colors.iconIndicator : Colors.icon
+ height: 2
+ width: parent.height - 14
+ }
+ }
+
+ InteractionButton {
+ id: maximize
+
+ onAction: root.dragWindow.showMaximized()
+ Rectangle {
+ anchors.fill: parent
+ anchors.margins: 7
+ border.color: parent.hovered ? Colors.iconIndicator : Colors.icon
+ border.width: 2
+ color: "transparent"
+ }
+ }
+
+ InteractionButton {
+ id: close
+
+ color: hovered ? "#ec4143" : "transparent"
+ onAction: root.dragWindow.close()
+ Rectangle {
+ anchors.centerIn: parent
+ width: parent.height - 8; height: 2
+
+ rotation: 45
+ antialiasing: true
+ transformOrigin: Item.Center
+ color: parent.hovered ? Colors.iconIndicator : Colors.icon
+
+ Rectangle {
+ anchors.centerIn: parent
+ width: parent.height
+ height: parent.width
+
+ antialiasing: true
+ color: parent.color
+ }
+ }
+ }
+ }
+ }
+
+ background: Rectangle {
+ color: Colors.surface2
+ // Make the empty space drag the specified root window.
+ WindowDragHandler {
+ dragWindow: root.dragWindow
+ }
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/ResizeButton.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/ResizeButton.qml
new file mode 100644
index 000000000..0df65bf82
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/ResizeButton.qml
@@ -0,0 +1,23 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick.Controls
+import FileSystemModule
+
+Button {
+ required property ApplicationWindow resizeWindow
+
+ icon.width: 20; icon.height: 20
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ rightPadding: 3
+ bottomPadding: 3
+
+ icon.source: "../icons/resize.svg"
+ icon.color: hovered ? Colors.iconIndicator : Colors.icon
+
+ background: null
+ checkable: false
+ display: AbstractButton.IconOnly
+ onPressed: resizeWindow.startSystemResize(Qt.BottomEdge | Qt.RightEdge)
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Sidebar.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Sidebar.qml
new file mode 100644
index 000000000..aac530394
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Sidebar.qml
@@ -0,0 +1,138 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls.Basic
+import FileSystemModule
+
+Rectangle {
+ id: root
+
+ property alias currentTabIndex: topBar.currentIndex
+ required property ApplicationWindow dragWindow
+ readonly property int tabBarSpacing: 10
+
+ color: Colors.surface2
+
+ component SidebarEntry: Button {
+ id: sidebarButton
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+
+ icon.color: down || checked ? Colors.iconIndicator : Colors.icon
+ icon.width: 27
+ icon.height: 27
+
+ topPadding: 0
+ rightPadding: 0
+ bottomPadding: 0
+ leftPadding: 0
+ background: null
+
+ Rectangle {
+ id: indicator
+
+ anchors.verticalCenter: parent.verticalCenter
+ x: 2
+ width: 4
+ height: sidebarButton.icon.height * 1.2
+
+ visible: sidebarButton.checked
+ color: Colors.color1
+ }
+ }
+
+ // TabBar is designed to be horizontal, whereas we need a vertical bar.
+ // We can easily achieve that by using a Container.
+ component TabBar: Container {
+ id: tabBarComponent
+
+ Layout.fillWidth: true
+ // ButtonGroup ensures that only one button can be checked at a time.
+ ButtonGroup {
+ buttons: tabBarComponent.contentChildren
+
+ // We have to manage the currentIndex ourselves, which we do by setting it to the index
+ // of the currently checked button. We use setCurrentIndex instead of setting the
+ // currentIndex property to avoid breaking bindings. See "Managing the Current Index"
+ // in Container's documentation for more information.
+ onCheckedButtonChanged: tabBarComponent.setCurrentIndex(
+ Math.max(0, buttons.indexOf(checkedButton)))
+ }
+
+ contentItem: ColumnLayout {
+ spacing: tabBarComponent.spacing
+ Repeater {
+ model: tabBarComponent.contentModel
+ }
+ }
+ }
+
+ ColumnLayout {
+ anchors.fill: root
+ anchors.topMargin: root.tabBarSpacing
+ anchors.bottomMargin: root.tabBarSpacing
+
+ spacing: root.tabBarSpacing
+ TabBar {
+ id: topBar
+
+ spacing: root.tabBarSpacing
+ // Shows help text when clicked.
+ SidebarEntry {
+ id: infoTab
+ icon.source: "../icons/light_bulb.svg"
+ checkable: true
+ checked: true
+ }
+
+ // Shows the file system when clicked.
+ SidebarEntry {
+ id: filesystemTab
+
+ icon.source: "../icons/read.svg"
+ checkable: true
+ }
+ }
+
+ // This item acts as a spacer to expand between the checkable and non-checkable buttons.
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ // Make the empty space drag our main window.
+ WindowDragHandler {
+ dragWindow: root.dragWindow
+ }
+ }
+
+ TabBar {
+ id: bottomBar
+
+ spacing: root.tabBarSpacing
+ // Opens the Qt website in the system's web browser.
+ SidebarEntry {
+ id: qtWebsiteButton
+ icon.source: "../icons/globe.svg"
+ checkable: false
+ onClicked: Qt.openUrlExternally("https://www.qt.io/")
+ }
+
+ // Opens the About Qt Window.
+ SidebarEntry {
+ id: aboutQtButton
+
+ icon.source: "../icons/info_sign.svg"
+ checkable: false
+ onClicked: aboutQtWindow.visible = !aboutQtWindow.visible
+ }
+ }
+ }
+
+ About {
+ id: aboutQtWindow
+ visible: false
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/WindowDragHandler.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/WindowDragHandler.qml
new file mode 100644
index 000000000..0e140aca3
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/WindowDragHandler.qml
@@ -0,0 +1,16 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+// Allows dragging the window when placed on an unused section of the UI.
+DragHandler {
+
+ required property ApplicationWindow dragWindow
+
+ target: null
+ onActiveChanged: {
+ if (active) dragWindow.startSystemMove()
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qmldir b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qmldir
new file mode 100644
index 000000000..b1f684600
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qmldir
@@ -0,0 +1,11 @@
+module FileSystemModule
+Main 1.0 Main.qml
+About 1.0 qml/About.qml
+Editor 1.0 qml/Editor.qml
+MyMenu 1.0 qml/MyMenu.qml
+Sidebar 1.0 qml/Sidebar.qml
+MyMenuBar 1.0 qml/MyMenuBar.qml
+singleton Colors 1.0 qml/Colors.qml
+ResizeButton 1.0 qml/ResizeButton.qml
+FileSystemView 1.0 qml/FileSystemView.qml
+WindowDragHandler 1.0 qml/WindowDragHandler.qml
diff --git a/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.rst b/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.rst
new file mode 100644
index 000000000..b46cbec79
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.rst
@@ -0,0 +1,52 @@
+.. _filesystemexplorer_example:
+
+Qt Quick Controls - Filesystem Explorer
+=======================================
+
+This example demonstrates how to create a **modern-looking** filesystem
+explorer with a dark-themed user interface that has a uniform look
+across all operating systems. Custom Qt Quick Controls have been
+implemented to provide a clean and intuitive UI for opening and
+navigating text-files from the filesystem.
+
+Frameless Window
+----------------
+
+To maximize the available space, we use a **frameless window**. The basic
+functionality, such as minimizing, maximizing, and closing the window,
+has been moved to a customized MenuBar called ``MyMenuBar``. Users can
+drag the window thanks to the ``WindowDragHandler`` added to the Sidebar
+and MenuBar.
+
+Customization
+-------------
+
+Combining **customized animations** and **colors** with QtQuick Controls
+allows us to easily create custom user interfaces. This example
+showcases the potential of QtQuick Controls for creating aesthetically
+pleasing UIs.
+
+..
+
+ With the knowledge gained from this example, developers can apply
+ similar techniques to create **their own** customized UIs using PySide's
+ QtQuick Controls.
+
+
+
+.. image:: filesystemexplorer.webp
+ :target: filesystemexplorer.webp
+ :alt: QtQuickControls Filesystem Explorer Screenshot
+
+References
+----------
+
+If you're interested in the C++ version of this example, you can find it
+`here <https://doc-snapshots.qt.io/qt6-dev/qtquickcontrols-filesystemexplorer-example.html>`_.
+
+Additionally, there is a detailed
+`tutorial <https://doc.qt.io/qtforpython-6/tutorials/extendedexplorer/extendedexplorer.html>`_
+available that provides step-by-step instructions on how to extend this example
+with additional features. This tutorial can be helpful if you want to explore
+and learn more about building upon the existing functionality of the filesystem
+explorer.
diff --git a/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.webp b/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.webp
new file mode 100644
index 000000000..10ad0d26e
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.webp
Binary files differ
diff --git a/examples/quickcontrols/filesystemexplorer/editormodels.py b/examples/quickcontrols/filesystemexplorer/editormodels.py
new file mode 100644
index 000000000..688147726
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/editormodels.py
@@ -0,0 +1,116 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWidgets import QFileSystemModel
+from PySide6.QtQuick import QQuickTextDocument
+from PySide6.QtQml import QmlElement, QmlSingleton
+from PySide6.QtCore import (Qt, QDir, QAbstractListModel, Slot, QFile, QTextStream,
+ QMimeDatabase, QFileInfo, QStandardPaths, QModelIndex,
+ Signal, Property)
+
+QML_IMPORT_NAME = "FileSystemModule"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+@QmlSingleton
+class FileSystemModel(QFileSystemModel):
+
+ rootIndexChanged = Signal()
+
+ def getDefaultRootDir():
+ return QStandardPaths.writableLocation(QStandardPaths.StandardLocation.HomeLocation)
+
+ def __init__(self, parent=None):
+ super().__init__(parent=parent)
+ self.mRootIndex = QModelIndex()
+ self.mDb = QMimeDatabase()
+ self.setFilter(QDir.Filter.AllEntries | QDir.Filter.Hidden | QDir.Filter.NoDotAndDotDot)
+ self.setInitialDirectory()
+
+ # check for the correct mime type and then read the file.
+ # returns the text file's content or an error message on failure
+ @Slot(str, result=str)
+ def readFile(self, path):
+ if path == "":
+ return ""
+
+ file = QFile(path)
+
+ mime = self.mDb.mimeTypeForFile(QFileInfo(file))
+ if ('text' in mime.comment().lower()
+ or any('text' in s.lower() for s in mime.parentMimeTypes())):
+ if file.open(QFile.OpenModeFlag.ReadOnly | QFile.OpenModeFlag.Text):
+ stream = QTextStream(file).readAll()
+ file.close()
+ return stream
+ else:
+ return self.tr("Error opening the file!")
+ return self.tr("File type not supported!")
+
+ @Slot(QQuickTextDocument, int, result=int)
+ def currentLineNumber(self, textDocument, cursorPosition):
+ td = textDocument.textDocument()
+ tb = td.findBlock(cursorPosition)
+ return tb.blockNumber()
+
+ def setInitialDirectory(self, path=getDefaultRootDir()):
+ dir = QDir(path)
+ if dir.makeAbsolute():
+ self.setRootPath(dir.path())
+ else:
+ self.setRootPath(self.getDefaultRootDir())
+ self.setRootIndex(self.index(dir.path()))
+
+ # we only need one column in this example
+ def columnCount(self, parent):
+ return 1
+
+ @Property(QModelIndex, notify=rootIndexChanged)
+ def rootIndex(self):
+ return self.mRootIndex
+
+ def setRootIndex(self, index):
+ if (index == self.mRootIndex):
+ return
+ self.mRootIndex = index
+ self.rootIndexChanged.emit()
+
+
+@QmlElement
+class LineNumberModel(QAbstractListModel):
+
+ lineCountChanged = Signal()
+
+ def __init__(self, parent=None):
+ self.mLineCount = 0
+ super().__init__(parent=parent)
+
+ @Property(int, notify=lineCountChanged)
+ def lineCount(self):
+ return self.mLineCount
+
+ @lineCount.setter
+ def lineCount(self, n):
+ if n < 0:
+ print("lineCount must be greater then zero")
+ return
+ if self.mLineCount == n:
+ return
+
+ if self.mLineCount < n:
+ self.beginInsertRows(QModelIndex(), self.mLineCount, n - 1)
+ self.mLineCount = n
+ self.endInsertRows()
+ else:
+ self.beginRemoveRows(QModelIndex(), n, self.mLineCount - 1)
+ self.mLineCount = n
+ self.endRemoveRows()
+
+ def rowCount(self, parent):
+ return self.mLineCount
+
+ def data(self, index, role):
+ if not self.checkIndex(index) or role != Qt.ItemDataRole.DisplayRole:
+ return
+ return index.row()
diff --git a/examples/quickcontrols/filesystemexplorer/filesystemexplorer.pyproject b/examples/quickcontrols/filesystemexplorer/filesystemexplorer.pyproject
new file mode 100644
index 000000000..8053cfab0
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/filesystemexplorer.pyproject
@@ -0,0 +1,29 @@
+{
+ "files": [
+ "main.py",
+ "editormodels.py",
+ "FileSystemModule/qmldir",
+ "FileSystemModule/app.qrc",
+ "FileSystemModule/qmldir",
+ "FileSystemModule/Main.qml",
+ "FileSystemModule/qml/About.qml",
+ "FileSystemModule/qml/Colors.qml",
+ "FileSystemModule/qml/Editor.qml",
+ "FileSystemModule/qml/FileSystemView.qml",
+ "FileSystemModule/qml/MyMenu.qml",
+ "FileSystemModule/qml/MyMenuBar.qml",
+ "FileSystemModule/qml/ResizeButton.qml",
+ "FileSystemModule/qml/Sidebar.qml",
+ "FileSystemModule/qml/WindowDragHandler.qml",
+ "FileSystemModule/icons/app_icon.svg",
+ "FileSystemModule/icons/folder_closed.svg",
+ "FileSystemModule/icons/folder_open.svg",
+ "FileSystemModule/icons/generic_file.svg",
+ "FileSystemModule/icons/globe.svg",
+ "FileSystemModule/icons/info_sign.svg",
+ "FileSystemModule/icons/light_bulb.svg",
+ "FileSystemModule/icons/qt_logo.svg",
+ "FileSystemModule/icons/read.svg",
+ "FileSystemModule/icons/resize.svg"
+ ]
+}
diff --git a/examples/quickcontrols/filesystemexplorer/main.py b/examples/quickcontrols/filesystemexplorer/main.py
new file mode 100644
index 000000000..1477023e9
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/main.py
@@ -0,0 +1,48 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""
+This example shows how to customize Qt Quick Controls by implementing a simple filesystem explorer.
+"""
+
+# Compile both resource files app.qrc and icons.qrc and include them here if you wish
+# to load them from the resource system. Currently, all resources are loaded locally
+# import FileSystemModule.rc_icons
+# import FileSystemModule.rc_app
+
+from editormodels import FileSystemModel # noqa: F401
+from PySide6.QtGui import QGuiApplication, QIcon
+from PySide6.QtQml import QQmlApplicationEngine
+from PySide6.QtCore import QCommandLineParser, qVersion
+
+import sys
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ app.setOrganizationName("QtProject")
+ app.setApplicationName("File System Explorer")
+ app.setApplicationVersion(qVersion())
+ app.setWindowIcon(QIcon("FileSystemModule/icons/app_icon.svg"))
+
+ parser = QCommandLineParser()
+ parser.setApplicationDescription("Qt Filesystemexplorer Example")
+ parser.addHelpOption()
+ parser.addVersionOption()
+ parser.addPositionalArgument("", "Initial directory", "[path]")
+ parser.process(app)
+ args = parser.positionalArguments()
+
+ engine = QQmlApplicationEngine()
+ # Include the path of this file to search for the 'qmldir' module
+ engine.addImportPath(sys.path[0])
+
+ engine.loadFromModule("FileSystemModule", "Main")
+
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ if (len(args) == 1):
+ fsm = engine.singletonInstance("FileSystemModule", "FileSystemModel")
+ fsm.setInitialDirectory(args[0])
+
+ sys.exit(app.exec())
diff --git a/examples/quickcontrols/gallery/+Material/ToolBar.qml b/examples/quickcontrols/gallery/+Material/ToolBar.qml
new file mode 100644
index 000000000..f7ecbf116
--- /dev/null
+++ b/examples/quickcontrols/gallery/+Material/ToolBar.qml
@@ -0,0 +1,8 @@
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick.Controls.Material
+
+ToolBar {
+ Material.foreground: "white"
+}
diff --git a/examples/quickcontrols/gallery/ToolBar.qml b/examples/quickcontrols/gallery/ToolBar.qml
new file mode 100644
index 000000000..03d68dfba
--- /dev/null
+++ b/examples/quickcontrols/gallery/ToolBar.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick.Controls
+
+ToolBar {}
diff --git a/examples/quickcontrols2/gallery/doc/gallery.png b/examples/quickcontrols/gallery/doc/gallery.png
index 615ea9e3c..615ea9e3c 100644
--- a/examples/quickcontrols2/gallery/doc/gallery.png
+++ b/examples/quickcontrols/gallery/doc/gallery.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/doc/gallery.rst b/examples/quickcontrols/gallery/doc/gallery.rst
new file mode 100644
index 000000000..acd5096f6
--- /dev/null
+++ b/examples/quickcontrols/gallery/doc/gallery.rst
@@ -0,0 +1,9 @@
+Qt Quick Controls 2 - Gallery
+=============================
+
+.. tags:: Android
+
+The gallery example is a simple application with a drawer menu that contains
+all the Qt Quick Controls 2. Each menu item opens a page that shows the
+graphical appearance of a control, allows you to interact with the control, and
+explains in which circumstances it is handy to use this control.
diff --git a/examples/quickcontrols2/gallery/doc/images/qtquickcontrols2-gallery-drawer.png b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-drawer.png
index 0df43fbc4..0df43fbc4 100644
--- a/examples/quickcontrols2/gallery/doc/images/qtquickcontrols2-gallery-drawer.png
+++ b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-drawer.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/doc/images/qtquickcontrols2-gallery-menu.png b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-menu.png
index 3bdaae942..3bdaae942 100644
--- a/examples/quickcontrols2/gallery/doc/images/qtquickcontrols2-gallery-menu.png
+++ b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-menu.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/doc/images/qtquickcontrols2-gallery-welcome.png b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-welcome.png
index ded30381d..ded30381d 100644
--- a/examples/quickcontrols2/gallery/doc/images/qtquickcontrols2-gallery-welcome.png
+++ b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-welcome.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/gallery.py b/examples/quickcontrols/gallery/gallery.py
new file mode 100644
index 000000000..6c2a3612e
--- /dev/null
+++ b/examples/quickcontrols/gallery/gallery.py
@@ -0,0 +1,52 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""
+The gallery example is a simple application with a drawer menu that contains
+all the Qt Quick Controls. Each menu item opens a page that shows the
+graphical appearance of a control, allows you to interact with the control,
+and explains in which circumstances it is handy to use this control.
+"""
+
+import os
+import sys
+import platform
+
+from PySide6.QtGui import QGuiApplication, QIcon
+from PySide6.QtCore import QSettings, QUrl
+from PySide6.QtQml import QQmlApplicationEngine
+from PySide6.QtQuickControls2 import QQuickStyle
+
+import rc_gallery # noqa: F401
+
+if __name__ == "__main__":
+ QGuiApplication.setApplicationName("Gallery")
+ QGuiApplication.setOrganizationName("QtProject")
+
+ app = QGuiApplication()
+ QIcon.setThemeName("gallery")
+
+ settings = QSettings()
+ if not os.environ.get("QT_QUICK_CONTROLS_STYLE"):
+ style_name = settings.value("style")
+ if style_name:
+ QQuickStyle.setStyle(style_name)
+
+ engine = QQmlApplicationEngine()
+
+ built_in_styles = ["Basic", "Fusion", "Imagine", "Material", "Universal"]
+ if platform.system() == "Darwin":
+ built_in_styles.append("macOS")
+ elif platform.system() == "Windows":
+ built_in_styles.append("Windows")
+ engine.setInitialProperties({"builtInStyles": built_in_styles})
+
+ engine.load(QUrl.fromLocalFile(":/gallery.qml"))
+ rootObjects = engine.rootObjects()
+ if not rootObjects:
+ sys.exit(-1)
+
+ window = rootObjects[0]
+ window.setIcon(QIcon(':/qt-project.org/logos/pysidelogo.png'))
+
+ sys.exit(app.exec())
diff --git a/examples/quickcontrols/gallery/gallery.pyproject b/examples/quickcontrols/gallery/gallery.pyproject
new file mode 100644
index 000000000..5b5fe35da
--- /dev/null
+++ b/examples/quickcontrols/gallery/gallery.pyproject
@@ -0,0 +1,36 @@
+{
+ "files": ["gallery.py",
+ "gallery.qml",
+ "gallery.qrc",
+ "qmldir",
+ "qtquickcontrols2.conf",
+ "ToolBar.qml",
+ "+Material/ToolBar.qml",
+ "pages/ComboBoxPage.qml",
+ "pages/FramePage.qml",
+ "pages/SliderPage.qml",
+ "pages/TumblerPage.qml",
+ "pages/SpinBoxPage.qml",
+ "pages/ProgressBarPage.qml",
+ "pages/DelegatePage.qml",
+ "pages/StackViewPage.qml",
+ "pages/DialPage.qml",
+ "pages/PageIndicatorPage.qml",
+ "pages/SwipeViewPage.qml",
+ "pages/TabBarPage.qml",
+ "pages/TextFieldPage.qml",
+ "pages/GroupBoxPage.qml",
+ "pages/RadioButtonPage.qml",
+ "pages/ButtonPage.qml",
+ "pages/ScrollIndicatorPage.qml",
+ "pages/ScrollablePage.qml",
+ "pages/DialogPage.qml",
+ "pages/ToolTipPage.qml",
+ "pages/CheckBoxPage.qml",
+ "pages/TextAreaPage.qml",
+ "pages/RangeSliderPage.qml",
+ "pages/DelayButtonPage.qml",
+ "pages/SwitchPage.qml",
+ "pages/ScrollBarPage.qml",
+ "pages/BusyIndicatorPage.qml"]
+}
diff --git a/examples/quickcontrols/gallery/gallery.qml b/examples/quickcontrols/gallery/gallery.qml
new file mode 100644
index 000000000..65851f8c9
--- /dev/null
+++ b/examples/quickcontrols/gallery/gallery.qml
@@ -0,0 +1,318 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+
+import QtCore
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+import "." as App
+
+ApplicationWindow {
+ id: window
+ width: 360
+ height: 520
+ visible: true
+ title: "Qt Quick Controls"
+
+ //! [orientation]
+ readonly property bool portraitMode: window.width < window.height
+ //! [orientation]
+
+ function help() {
+ let displayingControl = listView.currentIndex !== -1
+ let currentControlName = displayingControl
+ ? listView.model.get(listView.currentIndex).title.toLowerCase() : ""
+ let url = "https://doc.qt.io/qt-6/"
+ + (displayingControl
+ ? "qml-qtquick-controls2-" + currentControlName + ".html"
+ : "qtquick-controls2-qmlmodule.html");
+ Qt.openUrlExternally(url)
+ }
+
+ required property var builtInStyles
+
+ Settings {
+ id: settings
+ property string style
+ }
+
+ Shortcut {
+ sequences: ["Esc", "Back"]
+ enabled: stackView.depth > 1
+ onActivated: navigateBackAction.trigger()
+ }
+
+ Shortcut {
+ sequence: StandardKey.HelpContents
+ onActivated: window.help()
+ }
+
+ Action {
+ id: navigateBackAction
+ icon.name: stackView.depth > 1 ? "back" : "drawer"
+ onTriggered: {
+ if (stackView.depth > 1) {
+ stackView.pop()
+ listView.currentIndex = -1
+ } else {
+ drawer.open()
+ }
+ }
+ }
+
+ Shortcut {
+ sequence: "Menu"
+ onActivated: optionsMenuAction.trigger()
+ }
+
+ Action {
+ id: optionsMenuAction
+ icon.name: "menu"
+ onTriggered: optionsMenu.open()
+ }
+
+ header: App.ToolBar {
+ RowLayout {
+ spacing: 20
+ anchors.fill: parent
+ anchors.leftMargin: !window.portraitMode ? drawer.width : undefined
+
+ ToolButton {
+ action: navigateBackAction
+ visible: window.portraitMode
+ }
+
+ Label {
+ id: titleLabel
+ text: listView.currentItem ? (listView.currentItem as ItemDelegate).text : "Gallery"
+ font.pixelSize: 20
+ elide: Label.ElideRight
+ horizontalAlignment: Qt.AlignHCenter
+ verticalAlignment: Qt.AlignVCenter
+ Layout.fillWidth: true
+ }
+
+ ToolButton {
+ action: optionsMenuAction
+
+ Menu {
+ id: optionsMenu
+ x: parent.width - width
+ transformOrigin: Menu.TopRight
+
+ Action {
+ text: "Settings"
+ onTriggered: settingsDialog.open()
+ }
+ Action {
+ text: "Help"
+ onTriggered: window.help()
+ }
+ Action {
+ text: "About"
+ onTriggered: aboutDialog.open()
+ }
+ }
+ }
+ }
+ }
+
+ Drawer {
+ id: drawer
+
+ width: Math.min(window.width, window.height) / 3 * 2
+ height: window.height
+ modal: window.portraitMode
+ interactive: window.portraitMode ? (stackView.depth === 1) : false
+ position: window.portraitMode ? 0 : 1
+ visible: !window.portraitMode
+
+ ListView {
+ id: listView
+
+ focus: true
+ currentIndex: -1
+ anchors.fill: parent
+
+ model: ListModel {
+ ListElement { title: "BusyIndicator"; source: "qrc:/pages/BusyIndicatorPage.qml" }
+ ListElement { title: "Button"; source: "qrc:/pages/ButtonPage.qml" }
+ ListElement { title: "CheckBox"; source: "qrc:/pages/CheckBoxPage.qml" }
+ ListElement { title: "ComboBox"; source: "qrc:/pages/ComboBoxPage.qml" }
+ ListElement { title: "DelayButton"; source: "qrc:/pages/DelayButtonPage.qml" }
+ ListElement { title: "Dial"; source: "qrc:/pages/DialPage.qml" }
+ ListElement { title: "Dialog"; source: "qrc:/pages/DialogPage.qml" }
+ ListElement { title: "Delegates"; source: "qrc:/pages/DelegatePage.qml" }
+ ListElement { title: "Frame"; source: "qrc:/pages/FramePage.qml" }
+ ListElement { title: "GroupBox"; source: "qrc:/pages/GroupBoxPage.qml" }
+ ListElement { title: "PageIndicator"; source: "qrc:/pages/PageIndicatorPage.qml" }
+ ListElement { title: "ProgressBar"; source: "qrc:/pages/ProgressBarPage.qml" }
+ ListElement { title: "RadioButton"; source: "qrc:/pages/RadioButtonPage.qml" }
+ ListElement { title: "RangeSlider"; source: "qrc:/pages/RangeSliderPage.qml" }
+ ListElement { title: "ScrollBar"; source: "qrc:/pages/ScrollBarPage.qml" }
+ ListElement { title: "ScrollIndicator"; source: "qrc:/pages/ScrollIndicatorPage.qml" }
+ ListElement { title: "Slider"; source: "qrc:/pages/SliderPage.qml" }
+ ListElement { title: "SpinBox"; source: "qrc:/pages/SpinBoxPage.qml" }
+ ListElement { title: "StackView"; source: "qrc:/pages/StackViewPage.qml" }
+ ListElement { title: "SwipeView"; source: "qrc:/pages/SwipeViewPage.qml" }
+ ListElement { title: "Switch"; source: "qrc:/pages/SwitchPage.qml" }
+ ListElement { title: "TabBar"; source: "qrc:/pages/TabBarPage.qml" }
+ ListElement { title: "TextArea"; source: "qrc:/pages/TextAreaPage.qml" }
+ ListElement { title: "TextField"; source: "qrc:/pages/TextFieldPage.qml" }
+ ListElement { title: "ToolTip"; source: "qrc:/pages/ToolTipPage.qml" }
+ ListElement { title: "Tumbler"; source: "qrc:/pages/TumblerPage.qml" }
+ }
+
+ delegate: ItemDelegate {
+ id: delegateItem
+ width: ListView.view.width
+ text: title
+ highlighted: ListView.isCurrentItem
+
+ required property int index
+ required property var model
+ required property string title
+ required property string source
+
+ onClicked: {
+ listView.currentIndex = index
+ stackView.push(source)
+ if (window.portraitMode)
+ drawer.close()
+ }
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator { }
+ }
+ }
+
+ StackView {
+ id: stackView
+
+ anchors.fill: parent
+ anchors.leftMargin: !window.portraitMode ? drawer.width : undefined
+
+ initialItem: Pane {
+ id: pane
+
+ Image {
+ id: logo
+ width: pane.availableWidth / 2
+ height: pane.availableHeight / 2
+ anchors.centerIn: parent
+ anchors.verticalCenterOffset: -50
+ fillMode: Image.PreserveAspectFit
+ source: "images/qt-logo.png"
+ }
+
+ Label {
+ text: "Qt Quick Controls provides a set of controls that can be used to build complete interfaces in Qt Quick."
+ anchors.margins: 20
+ anchors.top: logo.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: arrow.top
+ horizontalAlignment: Label.AlignHCenter
+ verticalAlignment: Label.AlignVCenter
+ wrapMode: Label.Wrap
+ }
+
+ Image {
+ id: arrow
+ source: "images/arrow.png"
+ anchors.left: parent.left
+ anchors.bottom: parent.bottom
+ visible: window.portraitMode
+ }
+ }
+ }
+
+ Dialog {
+ id: settingsDialog
+ x: Math.round((window.width - width) / 2)
+ y: Math.round(window.height / 6)
+ width: Math.round(Math.min(window.width, window.height) / 3 * 2)
+ modal: true
+ focus: true
+ title: "Settings"
+
+ standardButtons: Dialog.Ok | Dialog.Cancel
+ onAccepted: {
+ settings.style = styleBox.displayText
+ settingsDialog.close()
+ }
+ onRejected: {
+ styleBox.currentIndex = styleBox.styleIndex
+ settingsDialog.close()
+ }
+
+ contentItem: ColumnLayout {
+ id: settingsColumn
+ spacing: 20
+
+ RowLayout {
+ spacing: 10
+
+ Label {
+ text: "Style:"
+ }
+
+ ComboBox {
+ id: styleBox
+ property int styleIndex: -1
+ model: window.builtInStyles
+ Component.onCompleted: {
+ styleIndex = find(settings.style, Qt.MatchFixedString)
+ if (styleIndex !== -1)
+ currentIndex = styleIndex
+ }
+ Layout.fillWidth: true
+ }
+ }
+
+ Label {
+ text: "Restart required"
+ color: "#e41e25"
+ opacity: styleBox.currentIndex !== styleBox.styleIndex ? 1.0 : 0.0
+ horizontalAlignment: Label.AlignHCenter
+ verticalAlignment: Label.AlignVCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ }
+ }
+
+ Dialog {
+ id: aboutDialog
+ modal: true
+ focus: true
+ title: "About"
+ x: (window.width - width) / 2
+ y: window.height / 6
+ width: Math.min(window.width, window.height) / 3 * 2
+ contentHeight: aboutColumn.height
+
+ Column {
+ id: aboutColumn
+ spacing: 20
+
+ Label {
+ width: aboutDialog.availableWidth
+ text: "The Qt Quick Controls module delivers the next generation user interface controls based on Qt Quick."
+ wrapMode: Label.Wrap
+ font.pixelSize: 12
+ }
+
+ Label {
+ width: aboutDialog.availableWidth
+ text: "In comparison to Qt Quick Controls 1, Qt Quick Controls "
+ + "are an order of magnitude simpler, lighter, and faster."
+ wrapMode: Label.Wrap
+ font.pixelSize: 12
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols2/gallery/gallery.qrc b/examples/quickcontrols/gallery/gallery.qrc
index 330197941..330197941 100644
--- a/examples/quickcontrols2/gallery/gallery.qrc
+++ b/examples/quickcontrols/gallery/gallery.qrc
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20/back.png b/examples/quickcontrols/gallery/icons/gallery/20x20/back.png
index 1f89ee058..1f89ee058 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20/back.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20/back.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20/drawer.png b/examples/quickcontrols/gallery/icons/gallery/20x20/drawer.png
index 1e974efae..1e974efae 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20/drawer.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20/drawer.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20/menu.png b/examples/quickcontrols/gallery/icons/gallery/20x20/menu.png
index a10473d9e..a10473d9e 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20/menu.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20/menu.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20@2/back.png b/examples/quickcontrols/gallery/icons/gallery/20x20@2/back.png
index 88e290b13..88e290b13 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20@2/back.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@2/back.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20@2/drawer.png b/examples/quickcontrols/gallery/icons/gallery/20x20@2/drawer.png
index eba3b6ccc..eba3b6ccc 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20@2/drawer.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@2/drawer.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20@2/menu.png b/examples/quickcontrols/gallery/icons/gallery/20x20@2/menu.png
index 649c2a08c..649c2a08c 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20@2/menu.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@2/menu.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20@3/back.png b/examples/quickcontrols/gallery/icons/gallery/20x20@3/back.png
index 4402c7d30..4402c7d30 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20@3/back.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@3/back.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20@3/drawer.png b/examples/quickcontrols/gallery/icons/gallery/20x20@3/drawer.png
index 3584ed6d8..3584ed6d8 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20@3/drawer.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@3/drawer.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20@3/menu.png b/examples/quickcontrols/gallery/icons/gallery/20x20@3/menu.png
index 9554b6952..9554b6952 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20@3/menu.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@3/menu.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20@4/back.png b/examples/quickcontrols/gallery/icons/gallery/20x20@4/back.png
index 9982478c1..9982478c1 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20@4/back.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@4/back.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20@4/drawer.png b/examples/quickcontrols/gallery/icons/gallery/20x20@4/drawer.png
index 60d93aff7..60d93aff7 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20@4/drawer.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@4/drawer.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/20x20@4/menu.png b/examples/quickcontrols/gallery/icons/gallery/20x20@4/menu.png
index 187c171cd..187c171cd 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/20x20@4/menu.png
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@4/menu.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/icons/gallery/index.theme b/examples/quickcontrols/gallery/icons/gallery/index.theme
index a1bcd5e03..a1bcd5e03 100644
--- a/examples/quickcontrols2/gallery/icons/gallery/index.theme
+++ b/examples/quickcontrols/gallery/icons/gallery/index.theme
diff --git a/examples/quickcontrols2/gallery/images/arrow.png b/examples/quickcontrols/gallery/images/arrow.png
index 9835108eb..9835108eb 100644
--- a/examples/quickcontrols2/gallery/images/arrow.png
+++ b/examples/quickcontrols/gallery/images/arrow.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/images/arrow@2x.png b/examples/quickcontrols/gallery/images/arrow@2x.png
index a5187d48c..a5187d48c 100644
--- a/examples/quickcontrols2/gallery/images/arrow@2x.png
+++ b/examples/quickcontrols/gallery/images/arrow@2x.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/images/arrow@3x.png b/examples/quickcontrols/gallery/images/arrow@3x.png
index a512f648c..a512f648c 100644
--- a/examples/quickcontrols2/gallery/images/arrow@3x.png
+++ b/examples/quickcontrols/gallery/images/arrow@3x.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/images/arrow@4x.png b/examples/quickcontrols/gallery/images/arrow@4x.png
index fd893ebb0..fd893ebb0 100644
--- a/examples/quickcontrols2/gallery/images/arrow@4x.png
+++ b/examples/quickcontrols/gallery/images/arrow@4x.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/images/arrows.png b/examples/quickcontrols/gallery/images/arrows.png
index 3a4cc9b95..3a4cc9b95 100644
--- a/examples/quickcontrols2/gallery/images/arrows.png
+++ b/examples/quickcontrols/gallery/images/arrows.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/images/arrows@2x.png b/examples/quickcontrols/gallery/images/arrows@2x.png
index 8c80a2b45..8c80a2b45 100644
--- a/examples/quickcontrols2/gallery/images/arrows@2x.png
+++ b/examples/quickcontrols/gallery/images/arrows@2x.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/images/arrows@3x.png b/examples/quickcontrols/gallery/images/arrows@3x.png
index 22f23cefb..22f23cefb 100644
--- a/examples/quickcontrols2/gallery/images/arrows@3x.png
+++ b/examples/quickcontrols/gallery/images/arrows@3x.png
Binary files differ
diff --git a/examples/quickcontrols2/gallery/images/arrows@4x.png b/examples/quickcontrols/gallery/images/arrows@4x.png
index 6d1afeef5..6d1afeef5 100644
--- a/examples/quickcontrols2/gallery/images/arrows@4x.png
+++ b/examples/quickcontrols/gallery/images/arrows@4x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/qt-logo.png b/examples/quickcontrols/gallery/images/qt-logo.png
new file mode 100644
index 000000000..05684292b
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/qt-logo.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/qt-logo@2x.png b/examples/quickcontrols/gallery/images/qt-logo@2x.png
new file mode 100644
index 000000000..2b7683ca0
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/qt-logo@2x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/qt-logo@3x.png b/examples/quickcontrols/gallery/images/qt-logo@3x.png
new file mode 100644
index 000000000..7cc98348d
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/qt-logo@3x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/qt-logo@4x.png b/examples/quickcontrols/gallery/images/qt-logo@4x.png
new file mode 100644
index 000000000..0e1bc9d93
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/qt-logo@4x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/pages/BusyIndicatorPage.qml b/examples/quickcontrols/gallery/pages/BusyIndicatorPage.qml
new file mode 100644
index 000000000..5f391abfb
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/BusyIndicatorPage.qml
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "BusyIndicator is used to indicate activity while content is being loaded,"
+ + " or when the UI is blocked waiting for a resource to become available."
+ }
+
+ BusyIndicator {
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/ButtonPage.qml b/examples/quickcontrols/gallery/pages/ButtonPage.qml
new file mode 100644
index 000000000..06051767e
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ButtonPage.qml
@@ -0,0 +1,44 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Button presents a push-button that can be pushed or clicked by the user. "
+ + "Buttons are normally used to perform an action, or to answer a question."
+ }
+
+ ColumnLayout {
+ spacing: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Button {
+ text: "First"
+ Layout.fillWidth: true
+ }
+ Button {
+ id: button
+ text: "Second"
+ highlighted: true
+ Layout.fillWidth: true
+ }
+ Button {
+ text: "Third"
+ enabled: false
+ Layout.fillWidth: true
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/CheckBoxPage.qml b/examples/quickcontrols/gallery/pages/CheckBoxPage.qml
new file mode 100644
index 000000000..003e44c82
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/CheckBoxPage.qml
@@ -0,0 +1,40 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "CheckBox presents an option button that can be toggled on or off. "
+ + "Check boxes are typically used to select one or more options from a set of options."
+ }
+
+ Column {
+ spacing: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ CheckBox {
+ text: "First"
+ checked: true
+ }
+ CheckBox {
+ text: "Second"
+ }
+ CheckBox {
+ text: "Third"
+ checked: true
+ enabled: false
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/ComboBoxPage.qml b/examples/quickcontrols/gallery/pages/ComboBoxPage.qml
new file mode 100644
index 000000000..2dc10cee3
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ComboBoxPage.qml
@@ -0,0 +1,51 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "ComboBox is a combined button and popup list. It presents "
+ + "a list of options to the user that occupies minimal screen space."
+ }
+
+ ComboBox {
+ model: ["First", "Second", "Third"]
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "ComboBox can be made \l editable. An editable combo box auto-"
+ + "completes its text based on what is available in the model."
+ }
+
+ ComboBox {
+ id: comboBox
+
+ editable: true
+ model: ListModel {
+ ListElement { text: "Banana" }
+ ListElement { text: "Apple" }
+ ListElement { text: "Coconut" }
+ }
+ onAccepted: {
+ if (find(editText) === -1)
+ comboBox.model.append({text: comboBox.editText})
+ }
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/DelayButtonPage.qml b/examples/quickcontrols/gallery/pages/DelayButtonPage.qml
new file mode 100644
index 000000000..4c0e8725b
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/DelayButtonPage.qml
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "DelayButton is a checkable button that incorporates a delay before the "
+ + "button is activated. This delay prevents accidental presses."
+ }
+
+ DelayButton {
+ text: "DelayButton"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/DelegatePage.qml b/examples/quickcontrols/gallery/pages/DelegatePage.qml
new file mode 100644
index 000000000..26d346a91
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/DelegatePage.qml
@@ -0,0 +1,201 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+Pane {
+ ColumnLayout {
+ spacing: 40
+ anchors.fill: parent
+ anchors.topMargin: 20
+
+ Label {
+ Layout.fillWidth: true
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Delegate controls are used as delegates in views such as ListView."
+ }
+
+ ListView {
+ id: listView
+ clip: true
+ section.property: "type"
+ section.delegate: Pane {
+ id: sectionPane
+ required property string section
+ width: ListView.view.width
+ height: sectionLabel.implicitHeight + 20
+ Label {
+ id: sectionLabel
+ text: sectionPane.section
+ anchors.centerIn: parent
+ }
+ }
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ readonly property var delegateComponentMap: {
+ "ItemDelegate": itemDelegateComponent,
+ "SwipeDelegate": swipeDelegateComponent,
+ "CheckDelegate": checkDelegateComponent,
+ "RadioDelegate": radioDelegateComponent,
+ "SwitchDelegate": switchDelegateComponent
+ }
+
+ Component {
+ id: itemDelegateComponent
+
+ ItemDelegate {
+ // qmllint disable unqualified
+ text: value
+ // qmllint enable unqualified
+ width: parent.width
+ }
+ }
+
+ Component {
+ id: swipeDelegateComponent
+
+ SwipeDelegate {
+ id: swipeDelegate
+ // qmllint disable unqualified
+ text: value
+ // qmllint enable unqualified
+ width: parent.width
+
+ Component {
+ id: removeComponent
+
+ Rectangle {
+ color: SwipeDelegate.pressed ? "#333" : "#444"
+ width: parent.width
+ height: parent.height
+ clip: true
+
+ SwipeDelegate.onClicked: {
+ // qmllint disable unqualified
+ view.model.remove(ourIndex)
+ // qmllint enable unqualified
+ }
+
+ Label {
+ // qmllint disable unqualified
+ font.pixelSize: swipeDelegate.font.pixelSize
+ // qmllint enable unqualified
+ text: "Remove"
+ color: "white"
+ anchors.centerIn: parent
+ }
+ }
+ }
+
+ SequentialAnimation {
+ id: removeAnimation
+
+ PropertyAction {
+ // qmllint disable unqualified
+ target: delegateItem
+ // qmllint enable unqualified
+ property: "ListView.delayRemove"
+ value: true
+ }
+ NumberAnimation {
+ // qmllint disable unqualified
+ target: delegateItem.item
+ // qmllint enable unqualified
+ property: "height"
+ to: 0
+ easing.type: Easing.InOutQuad
+ }
+ PropertyAction {
+ // qmllint disable unqualified
+ target: delegateItem
+ // qmllint enable unqualified
+ property: "ListView.delayRemove"
+ value: false
+ }
+ }
+
+ swipe.left: removeComponent
+ swipe.right: removeComponent
+ ListView.onRemove: removeAnimation.start()
+ }
+ }
+
+ Component {
+ id: checkDelegateComponent
+
+ CheckDelegate {
+ // qmllint disable unqualified
+ text: value
+ // qmllint enable unqualified
+ }
+ }
+
+ ButtonGroup {
+ id: radioButtonGroup
+ }
+
+ Component {
+ id: radioDelegateComponent
+
+ RadioDelegate {
+ // qmllint disable unqualified
+ text: value
+ ButtonGroup.group: radioButtonGroup
+ // qmllint enable unqualified
+ }
+ }
+
+ Component {
+ id: switchDelegateComponent
+
+ SwitchDelegate {
+ // qmllint disable unqualified
+ text: value
+ // qmllint enable unqualified
+ }
+ }
+
+ model: ListModel {
+ ListElement { type: "ItemDelegate"; value: "ItemDelegate1" }
+ ListElement { type: "ItemDelegate"; value: "ItemDelegate2" }
+ ListElement { type: "ItemDelegate"; value: "ItemDelegate3" }
+ ListElement { type: "SwipeDelegate"; value: "SwipeDelegate1" }
+ ListElement { type: "SwipeDelegate"; value: "SwipeDelegate2" }
+ ListElement { type: "SwipeDelegate"; value: "SwipeDelegate3" }
+ ListElement { type: "CheckDelegate"; value: "CheckDelegate1" }
+ ListElement { type: "CheckDelegate"; value: "CheckDelegate2" }
+ ListElement { type: "CheckDelegate"; value: "CheckDelegate3" }
+ ListElement { type: "RadioDelegate"; value: "RadioDelegate1" }
+ ListElement { type: "RadioDelegate"; value: "RadioDelegate2" }
+ ListElement { type: "RadioDelegate"; value: "RadioDelegate3" }
+ ListElement { type: "SwitchDelegate"; value: "SwitchDelegate1" }
+ ListElement { type: "SwitchDelegate"; value: "SwitchDelegate2" }
+ ListElement { type: "SwitchDelegate"; value: "SwitchDelegate3" }
+ }
+
+ delegate: Loader {
+ id: delegateLoader
+ width: ListView.view.width
+ // qmllint disable unqualified
+ sourceComponent: listView.delegateComponentMap[type]
+ // qmllint enable unqualified
+
+ required property string value
+ required property string type
+ required property var model
+ required property int index
+
+ property Loader delegateItem: delegateLoader
+ // qmllint disable unqualified
+ property ListView view: listView
+ // qmllint enable unqualified
+ property int ourIndex: index
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/DialPage.qml b/examples/quickcontrols/gallery/pages/DialPage.qml
new file mode 100644
index 000000000..17c9e090b
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/DialPage.qml
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "The Dial is similar to a traditional dial knob that is found on devices such as "
+ + "stereos or industrial equipment. It allows the user to specify a value within a range."
+ }
+
+ Dial {
+ value: 0.5
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/DialogPage.qml b/examples/quickcontrols/gallery/pages/DialogPage.qml
new file mode 100644
index 000000000..ffabb415e
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/DialogPage.qml
@@ -0,0 +1,179 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ readonly property int buttonWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 2, page.availableWidth / 3))
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Dialog is a popup that is mostly used for short-term tasks "
+ + "and brief communications with the user."
+ }
+
+ Button {
+ text: "Message"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: page.buttonWidth
+ onClicked: messageDialog.open()
+
+ Dialog {
+ id: messageDialog
+
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+
+ title: "Message"
+
+ Label {
+ text: "Lorem ipsum dolor sit amet..."
+ }
+ }
+ }
+
+ Button {
+ id: button
+ text: "Confirmation"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: page.buttonWidth
+ onClicked: confirmationDialog.open()
+
+ Dialog {
+ id: confirmationDialog
+
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+ parent: Overlay.overlay
+
+ modal: true
+ title: "Confirmation"
+ standardButtons: Dialog.Yes | Dialog.No
+
+ Column {
+ spacing: 20
+ anchors.fill: parent
+ Label {
+ text: "The document has been modified.\nDo you want to save your changes?"
+ }
+ CheckBox {
+ text: "Do not ask again"
+ anchors.right: parent.right
+ }
+ }
+ }
+ }
+
+ Button {
+ text: "Content"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: page.buttonWidth
+ onClicked: contentDialog.open()
+
+ Dialog {
+ id: contentDialog
+
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+ width: Math.min(page.width, page.height) / 3 * 2
+ contentHeight: logo.height * 2
+ parent: Overlay.overlay
+
+ modal: true
+ title: "Content"
+ standardButtons: Dialog.Close
+
+ Flickable {
+ id: flickable
+ clip: true
+ anchors.fill: parent
+ contentHeight: column.height
+
+ Column {
+ id: column
+ spacing: 20
+ width: parent.width
+
+ Image {
+ id: logo
+ width: parent.width / 2
+ anchors.horizontalCenter: parent.horizontalCenter
+ fillMode: Image.PreserveAspectFit
+ source: "../images/qt-logo.png"
+ }
+
+ Label {
+ width: parent.width
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc finibus "
+ + "in est quis laoreet. Interdum et malesuada fames ac ante ipsum primis "
+ + "in faucibus. Curabitur eget justo sollicitudin enim faucibus bibendum. "
+ + "Suspendisse potenti. Vestibulum cursus consequat mauris id sollicitudin. "
+ + "Duis facilisis hendrerit consectetur. Curabitur sapien tortor, efficitur "
+ + "id auctor nec, efficitur et nisl. Ut venenatis eros in nunc placerat, "
+ + "eu aliquam enim suscipit."
+ wrapMode: Label.Wrap
+ }
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator {
+ parent: contentDialog.contentItem
+ anchors.top: flickable.top
+ anchors.bottom: flickable.bottom
+ anchors.right: parent.right
+ anchors.rightMargin: -contentDialog.rightPadding + 1
+ }
+ }
+ }
+ }
+
+ Button {
+ text: "Input"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: page.buttonWidth
+ onClicked: inputDialog.open()
+
+ Dialog {
+ id: inputDialog
+
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+ parent: Overlay.overlay
+
+ focus: true
+ modal: true
+ title: "Input"
+ standardButtons: Dialog.Ok | Dialog.Cancel
+
+ ColumnLayout {
+ spacing: 20
+ anchors.fill: parent
+ Label {
+ elide: Label.ElideRight
+ text: "Please enter the credentials:"
+ Layout.fillWidth: true
+ }
+ TextField {
+ focus: true
+ placeholderText: "Username"
+ Layout.fillWidth: true
+ }
+ TextField {
+ placeholderText: "Password"
+ echoMode: TextField.PasswordEchoOnEdit
+ Layout.fillWidth: true
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/FramePage.qml b/examples/quickcontrols/gallery/pages/FramePage.qml
new file mode 100644
index 000000000..852644253
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/FramePage.qml
@@ -0,0 +1,47 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ readonly property int itemWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 3, page.availableWidth / 3 * 2))
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Frame is used to layout a logical group of controls together, within a visual frame."
+ }
+
+ Frame {
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Column {
+ spacing: 20
+ width: page.itemWidth
+
+ RadioButton {
+ text: "First"
+ checked: true
+ width: parent.width
+ }
+ RadioButton {
+ id: button
+ text: "Second"
+ width: parent.width
+ }
+ RadioButton {
+ text: "Third"
+ width: parent.width
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/GroupBoxPage.qml b/examples/quickcontrols/gallery/pages/GroupBoxPage.qml
new file mode 100644
index 000000000..9e24d8e6c
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/GroupBoxPage.qml
@@ -0,0 +1,48 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ readonly property int itemWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 3, page.availableWidth / 3 * 2))
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "A GroupBox provides a frame, a title on top of it, and a logical group of controls within that frame."
+ }
+
+ GroupBox {
+ title: "Title"
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Column {
+ spacing: 20
+ width: page.itemWidth
+
+ RadioButton {
+ text: "First"
+ checked: true
+ width: parent.width
+ }
+ RadioButton {
+ id: button
+ text: "Second"
+ width: parent.width
+ }
+ RadioButton {
+ text: "Third"
+ width: parent.width
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/PageIndicatorPage.qml b/examples/quickcontrols/gallery/pages/PageIndicatorPage.qml
new file mode 100644
index 000000000..e83c86563
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/PageIndicatorPage.qml
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "PageIndicator is used to indicate the currently active page in a container of pages."
+ }
+
+ PageIndicator {
+ count: 5
+ currentIndex: 2
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/ProgressBarPage.qml b/examples/quickcontrols/gallery/pages/ProgressBarPage.qml
new file mode 100644
index 000000000..d712aae10
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ProgressBarPage.qml
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "ProgressBar indicates the progress of an operation. It can be set in an "
+ + "indeterminate mode to indicate that the length of the operation is unknown."
+ }
+
+ ProgressBar {
+ id: bar
+ value: 0.5
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ ProgressBar {
+ indeterminate: true
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/RadioButtonPage.qml b/examples/quickcontrols/gallery/pages/RadioButtonPage.qml
new file mode 100644
index 000000000..644543c00
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/RadioButtonPage.qml
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "RadioButton presents an option button that can be toggled on or off. "
+ + "Radio buttons are typically used to select one option from a set of options."
+ }
+
+ Column {
+ spacing: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ RadioButton {
+ text: "First"
+ }
+ RadioButton {
+ text: "Second"
+ checked: true
+ }
+ RadioButton {
+ text: "Third"
+ enabled: false
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/RangeSliderPage.qml b/examples/quickcontrols/gallery/pages/RangeSliderPage.qml
new file mode 100644
index 000000000..0ca235822
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/RangeSliderPage.qml
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "RangeSlider is used to select a range specified by two values, by sliding each handle along a track."
+ }
+
+ RangeSlider {
+ id: slider
+ first.value: 0.25
+ second.value: 0.75
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ RangeSlider {
+ orientation: Qt.Vertical
+ first.value: 0.25
+ second.value: 0.75
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/ScrollBarPage.qml b/examples/quickcontrols/gallery/pages/ScrollBarPage.qml
new file mode 100644
index 000000000..248e74ca7
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ScrollBarPage.qml
@@ -0,0 +1,40 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Flickable {
+ id: flickable
+
+ contentHeight: pane.height
+
+ Pane {
+ id: pane
+ width: flickable.width
+ height: flickable.height * 1.25
+
+ Column {
+ id: column
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "ScrollBar is an interactive bar that can be used to scroll to a specific position. "
+ + "A scroll bar can be either vertical or horizontal, and can be attached to any Flickable, "
+ + "such as ListView and GridView."
+ }
+
+ Image {
+ rotation: 90
+ source: "../images/arrows.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+ }
+
+ ScrollBar.vertical: ScrollBar { }
+}
diff --git a/examples/quickcontrols/gallery/pages/ScrollIndicatorPage.qml b/examples/quickcontrols/gallery/pages/ScrollIndicatorPage.qml
new file mode 100644
index 000000000..04ce97483
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ScrollIndicatorPage.qml
@@ -0,0 +1,40 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Flickable {
+ id: flickable
+
+ contentHeight: pane.height
+
+ Pane {
+ id: pane
+ width: flickable.width
+ height: flickable.height * 1.25
+
+ Column {
+ id: column
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "ScrollIndicator is a non-interactive indicator that indicates the current scroll position. "
+ + "A scroll indicator can be either vertical or horizontal, and can be attached to any Flickable, "
+ + "such as ListView and GridView."
+ }
+
+ Image {
+ rotation: 90
+ source: "../images/arrows.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator { }
+}
diff --git a/examples/quickcontrols/gallery/pages/ScrollablePage.qml b/examples/quickcontrols/gallery/pages/ScrollablePage.qml
new file mode 100644
index 000000000..69bc0cd97
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ScrollablePage.qml
@@ -0,0 +1,24 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Page {
+ id: page
+
+ default property alias content: pane.contentItem
+
+ Flickable {
+ anchors.fill: parent
+ contentHeight: pane.implicitHeight
+ flickableDirection: Flickable.AutoFlickIfNeeded
+
+ Pane {
+ id: pane
+ width: parent.width
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator { }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/SliderPage.qml b/examples/quickcontrols/gallery/pages/SliderPage.qml
new file mode 100644
index 000000000..fd03680a0
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/SliderPage.qml
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Slider is used to select a value by sliding a handle along a track."
+ }
+
+ Slider {
+ id: slider
+ value: 0.5
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Slider {
+ orientation: Qt.Vertical
+ value: 0.5
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/SpinBoxPage.qml b/examples/quickcontrols/gallery/pages/SpinBoxPage.qml
new file mode 100644
index 000000000..18c9b06c1
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/SpinBoxPage.qml
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "SpinBox allows the user to choose an integer value by clicking the up or down indicator buttons, "
+ + "by pressing up or down on the keyboard, or by entering a text value in the input field."
+ }
+
+ SpinBox {
+ id: box
+ value: 50
+ anchors.horizontalCenter: parent.horizontalCenter
+ editable: true
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/StackViewPage.qml b/examples/quickcontrols/gallery/pages/StackViewPage.qml
new file mode 100644
index 000000000..841d491ef
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/StackViewPage.qml
@@ -0,0 +1,58 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+
+import QtQuick
+import QtQuick.Controls
+
+StackView {
+ id: stackView
+ initialItem: page
+
+ Component {
+ id: page
+
+ Pane {
+ id: pane
+ width: parent ? parent.width : 0 // TODO: fix null parent on destruction
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "StackView provides a stack-based navigation model which can be used with a set of interlinked pages. "
+ + "Items are pushed onto the stack as the user navigates deeper into the material, and popped off again "
+ + "when he chooses to go back."
+ }
+
+ Button {
+ id: button
+ text: "Push"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 2, pane.availableWidth / 3))
+ onClicked: stackView.push(page)
+ }
+
+ Button {
+ text: "Pop"
+ enabled: stackView.depth > 1
+ width: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 2, pane.availableWidth / 3))
+ anchors.horizontalCenter: parent.horizontalCenter
+ onClicked: stackView.pop()
+ }
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Stack Depth: " + stackView.depth
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/SwipeViewPage.qml b/examples/quickcontrols/gallery/pages/SwipeViewPage.qml
new file mode 100644
index 000000000..03958320e
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/SwipeViewPage.qml
@@ -0,0 +1,49 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Pane {
+ id: pane
+
+ SwipeView {
+ id: view
+ currentIndex: 1
+ anchors.fill: parent
+
+ Repeater {
+ model: 3
+
+ Pane {
+ width: SwipeView.view.width
+ height: SwipeView.view.height
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "SwipeView provides a navigation model that simplifies horizontal paged scrolling. "
+ + "The page indicator on the bottom shows which is the presently active page."
+ }
+
+ Image {
+ source: "../images/arrows.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+ }
+ }
+ }
+
+ PageIndicator {
+ count: view.count
+ currentIndex: view.currentIndex
+ anchors.bottom: parent.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/SwitchPage.qml b/examples/quickcontrols/gallery/pages/SwitchPage.qml
new file mode 100644
index 000000000..cca200582
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/SwitchPage.qml
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Switch is an option button that can be dragged or toggled on or off. "
+ + "Switches are typically used to select between two states."
+ }
+
+ Column {
+ spacing: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Switch {
+ text: "First"
+ }
+ Switch {
+ text: "Second"
+ checked: true
+ }
+ Switch {
+ text: "Third"
+ enabled: false
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/TabBarPage.qml b/examples/quickcontrols/gallery/pages/TabBarPage.qml
new file mode 100644
index 000000000..d4dfeb895
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/TabBarPage.qml
@@ -0,0 +1,57 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Page {
+ id: page
+
+ SwipeView {
+ id: swipeView
+ anchors.fill: parent
+ currentIndex: tabBar.currentIndex
+
+ Repeater {
+ model: 3
+
+ Pane {
+ width: SwipeView.view.width
+ height: SwipeView.view.height
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "TabBar is a bar with icons or text which allows the user "
+ + "to switch between different subtasks, views, or modes."
+ }
+
+ Image {
+ source: "../images/arrows.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+ }
+ }
+ }
+
+ footer: TabBar {
+ id: tabBar
+ currentIndex: swipeView.currentIndex
+
+ TabButton {
+ text: "First"
+ }
+ TabButton {
+ text: "Second"
+ }
+ TabButton {
+ text: "Third"
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/TextAreaPage.qml b/examples/quickcontrols/gallery/pages/TextAreaPage.qml
new file mode 100644
index 000000000..3e9d7ee52
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/TextAreaPage.qml
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "TextArea is a multi-line text editor."
+ }
+
+ TextArea {
+ width: page.availableWidth / 3
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ wrapMode: TextArea.Wrap
+ text: "TextArea\n...\n...\n..."
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/TextFieldPage.qml b/examples/quickcontrols/gallery/pages/TextFieldPage.qml
new file mode 100644
index 000000000..2b06894c8
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/TextFieldPage.qml
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "TextField is a single-line text editor."
+ }
+
+ TextField {
+ id: field
+ placeholderText: "TextField"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/ToolTipPage.qml b/examples/quickcontrols/gallery/pages/ToolTipPage.qml
new file mode 100644
index 000000000..dd92c89b4
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ToolTipPage.qml
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "A tool tip is a short piece of text that informs the user of a control's function."
+ }
+
+ Button {
+ text: "Tip"
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ ToolTip.timeout: 5000
+ ToolTip.visible: pressed
+ ToolTip.text: "This is a tool tip."
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/TumblerPage.qml b/examples/quickcontrols/gallery/pages/TumblerPage.qml
new file mode 100644
index 000000000..4d01f02e8
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/TumblerPage.qml
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Tumbler is used to select a value by spinning a wheel."
+ }
+
+ Tumbler {
+ model: 10
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols2/gallery/qmldir b/examples/quickcontrols/gallery/qmldir
index 6b7f86bfa..6b7f86bfa 100644
--- a/examples/quickcontrols2/gallery/qmldir
+++ b/examples/quickcontrols/gallery/qmldir
diff --git a/examples/quickcontrols2/gallery/qtquickcontrols2.conf b/examples/quickcontrols/gallery/qtquickcontrols2.conf
index da1a8f41d..da1a8f41d 100644
--- a/examples/quickcontrols2/gallery/qtquickcontrols2.conf
+++ b/examples/quickcontrols/gallery/qtquickcontrols2.conf
diff --git a/examples/quickcontrols/gallery/rc_gallery.py b/examples/quickcontrols/gallery/rc_gallery.py
new file mode 100644
index 000000000..786c9cfbc
--- /dev/null
+++ b/examples/quickcontrols/gallery/rc_gallery.py
@@ -0,0 +1,4410 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.5.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x09\xc1\
+\x00\
+\x00)\xbbx\xda\xc5Z\xdds\xdb6\x12\x7f\xd7_\x81\
+\xb0/RcQ\xb6s\xc9\x03\xdb\xdc\x8d-'\x8d\xe7\
+\x9cKb\xf9\x9a\xcet\xfa\x00\x91\x90\x843\x04\xd0\x00\
+h[\xcd\xf9\x7f\xbf\x05\xf8!~\x00\xb2\xc4I\xe78\
+\x93\x98\x04\x16\x8b\xc5b?~Xh2AS\x91n\
+$]\xae4\x1aNG\xe8\xf4\xf8\xf4\x04\xdd\xac\x08\xfa\
+\xa2\xa1g\x9db\xbeAW:\x09\x07\x93\x09\x9a}\xbe\
+\xf8m|Ec\xc2\x15\x19_&\x84k\xba\xa0DF\
+\xa8h\xbb&\x8b\xf1\x17=\x86ak\x22c\x8a\x19\xfa\
+t\x8d\xceg\x17\xe3W\xe3)\xc3\x99\x22\x83A*\xf1\
+r\x8d-g\xc1\x81\xc19Y\xe1{*\x80\xc7\xb9\xc8\
+x2\x18P\xe8\x90\x1af\x9f\x0aI\xb6__2\x1a\
+\xdf\xb6>\xc3+\xbc\x11\x99V\xed\xe6\xa9\xe0Z\x0a\xa6\
+*fA\x18 \xac\xd0Y\x9a\x0e\x06\xf0\x1f\xa31\xd6\
+T\xf0\xaf\x94'\xe2\x01}\x1b xh\x12\xa1\x07\xdb\
+`?\x1fh\xa2W\x11z\xf5\xe6\xd8~\xae\x88QP\
+\x84^\x9f\xe6\xdf\xf7T\xd19#\x11\xd22#\xb6E\
+Sm\xbe\x03P\x9b\x95\x02\x95R\x04\x03\xdb?\x99\xbc\
+@\xbf\x0bIa\xcdv\xf2?l\xab$8\x11\x9cm\
+P*EJ\xa4\xde\xa0\xb9\x10\x0c\x19\xa9%\xa6\xfa\xa3\
+HH)VhEB?\x97\x9f\xb9H\x1e\xde\xb6y\
+\x91\xf1\xd8|\x82\xf4,\x1d\x8e\x8a\x85\x9a\x87\x11\x8d\x12\
+\xaaR\x867\x94/\x0bI\xd1[\xc4\xa8\xd2\xbfR\xf2\
+\x10\xc6\x99\x94\xc0\xed\x92'\xe4\x11\xbdx\xfb\x16\x8dO\
+\x1a\x83\x8b\xfeb\xe4\xbf\xf0\x9a\xc0\xe8\x0e\xc7j\x88y\
+\xfe\xb1\xe5\xbe\x86e\xb1pI\xf4\xd09\xe1(\xb4\xca\
+\x0c\xb5\xb8\x12\x0fDN\xb1\x22 =\xe86h\xc8\x90\
+I#r\xb0\xd2:U\xd1d\x92\x888\xbc\xd3!\x15\
+\x93;=~3\x09\x1a\x93\xbfD\xc3\xdd\xd2Y\x01\x83\
+\xbb5\x1b\xdf\xe9;\xb3\x7f\xe3\xb8\xd8\xbf\xd3q\x00\xc3\
+\x1d\x0b~\x09v\xb5\xd2k\x16\xb4\x19\x81\xa4]&\xc0\
+\x1a\x96\x9d\xc1\xb2\xec\x98\xd1O\xd5\xa8/:\x84\xbd\xe7\
+\xff\x96\xec\xdd\xa3&\x92c\xc66CX\xdc\xc8R<\
+\x0d\x0aC\x01\x86\x92$[C\xb9\xc7\x12\xcd3\xca@\
+g3\xbdaD\xe5\x843\xa25\xacQ\xd5v\xdb\x98\
+\xb6*\x9a\xab\xc6\x8a\x8f\xd2\x12:\xe0\x0f\xf0\xa8\xcf8\
+[\x81\x11\xc6\x99\xae1R \x04\xe11Q\x11\xfa=\
+x\xa7\xe2\xe0\x08\x05\xe78\xbe\x0d\xfe\xa8H\x08\xc7\xe0\
+\x17fB\x0d\x1dvk\x13\x92\x82\xdd\xfe\x1dm-H\
+\xf030\xcc{\xac\x0d!\x07\xff_\xc2\xabatf\
+\xed5\x04\x89\x96K\x22\x87\xa3=\xe5\x89\xd0Lc\x9e\
+`\x99\xfc\x93l\xc2\x0f`\xedf\x9f`\xbb\x94{\xca\
+\xca\x83\x8c[\xd4\xe7\xc8\xe7o\xa9\xae+\xe0\xb6\x1b\xf6\
+7\xe4`\x0c\xce\xf5\x1a\x8b\x9a\x1b\xf5\x18\x8bH$\x06\
+[\x0ej\x02\xdd\xe4\xab4\x02}k\x98\x10]\xa0\xa1\
+\x83\xdd\xa8Ef5P\x91\xa5\xa2\x5cK\xfdq;t\
+\xc3\x9d\xed\xf2\x11a\x8a8\xf8\xe7R[\xfblq\x7f\
+\x1a4\xdf\xf6\xd9\xa5\xe0#\xe1Y\xe0\xde\x13\x91\x1a\xcd\
+*C\xb1\xcb\x0a\x9c;\xd4\x19\xeb\xda\xa0`\xdd\x9a\xbc\
+\xa6\xff\x1a\x83\xfaZ\x8b9W\x10\xa4M\x96\x83\xd4\x11\
+\xde@x>\x07\xcf\xdb\x0ap-\x1e\xf2<\xd4R\x9f\
+Jq\x0c\x8e\x15\xa1\x22e\x94\x0f\xe61\xe8H\x85\x0b\
+\xcaX\x84Rl\xb6\xc5I\xc0\xc8B\x7f\xc4rIy\
+\x84^\x14&[O\x0c`^\xc5\xf6\xe4\x99!B\x90\
+@\xc9\x82r\x92\x0c\x1a\x0c\xad\xcc\x99\xd6\x0d\xbdU\xb3\
+Y\x85\xed\xb4\xf2\xf2\xa9\x92\x9eC\x98\x96m4>\xaf\
+\xf0\x9c0\xc7\xd4f\xebl\xa4\xb7\x04\x9dnM\x1e!\
+\xe3v,X\x935\xac|\xe8l\x87$o\xfe^\x10\
+F\xccZ \x91\x00\x0f\xe3}\xbf@P%r\xd3\x09\
+\xd5h\x01\x81\x22L\xe9#a3\xfa'\xe9l\x96\x0d\
+i\x8c\x9a,l\x85\x0c\xdf\x99\x8f\xeb*\xf3\xd6\x1f\xd8\
+4\xfa'\xb0\xc3\xec\x8c\xd1%\x07s\x03\xf1!\xb8\xdb\
+\xaf\x0fS\xf8$\xb2\xabS\x88\xc1\x00G\x5cC~\xf5\
+\x0c\xc9\xad\xcd\xda\xcf\xd7\x1c\xa5T \xc4\xb3\x01{\x19\
+@\xd7\x89:\xa4\xa6\xcf\xc1\xc1\xe1\x86N\x9a\xc7\xd2\xdc\
+\x0b\x83\x1d\xe7(\xcbI\x0b\x86\xc5\xd5B\xc8\xf5'\xf0\
+R\xe3\x01\xd67oD\x9a\xeb\xde9\xa6\x13\x1b\xdc\x16\
+\x15\x94)2\xf0\x126\x82C\x99:/\x00\xd0\x8a\xa5\
++\x16vcb\x1f\xb1L\xde\xdaS\xa4n\x02\xfb\xbe\
+\xa2\x9c\xcd\xc1\xc2\xf6\x94\x05\x1b\xda>\xbay\xda'\x9f\
+\x5c\xd8\x08\xd7\x8a\xf7y\xd8\xdb\x1aA\x01\xd6?b\xbd\
+\x0a\xd7\x94\x0f\xeb\x80\xf9\xa8\x89\x97Gh\x82^\xa1\x1f\
+\xd1i5\xb8\x84\xf6]Xm\x1e\xc0l\x98\xed\x8ex\
+\xd4x\xa9\xf1\xa2{wh4\xd1\xaa\x9d\xce\xdf\x02\xa4\
+>1\x98v\x81!\xf1nA\x99P4\xf7F7\x9f\
+c\x18\xb1\xcd\xdcU<ve\x87\xadv\xae\x8aH\xd9\
+F\x19\xc96\xb86\xfdi!\xe2L9\xa2J\x1dC\
+Dm\x08\xe1Lk\x0d\x0a\x8b\xfa#+\x8e\x11\xd0\x95\
+\x11L\xdf;FL\x1cD\xdf\xaa#\xd5y\xa660\
+\xa99\xb5\x09\x19\xfc\x84\x94\xc8\xa4\x85\x13w2\x8e&\
+)^\x125i\xd0|\x86\xa6\x10\x00w\xe0\xb0:\xdf\
+\x14&:zy\x9b\xce\xc3\x99NW$\xbe=\x17\x8f\
+\x1e\xb6ew\x0f\xc6b=\x17;\x18\x17\xdd\x873\x86\
+\xc4\x897;uQ\xa3\xe8\xc1\x1e\xa2\x84\x8f/t\xf5\
+c(\x96;X\x8ae/%X\xf4\xa0\xfc*\xb0\xfd\
+\x87s~/\x01\x89z\xb8\xda\xbe\xc3Y\xfe\x22E\x96\
+\xfaM\xa1\xec>\x9c\xb1\x19\xf1\x9c\xd35hzL!\
+\xc5R\x12\xa5\x00O\xfb&\xd8R\x1c\xce\xfe\x1a'T\
+\xec4\xe6\x1aE\x1f\xf6|If\x06\x0eJ/\xfb\x8a\
+\xe2p\xf6\xb3X\x0a\xc6\xfc\xaa\xa9\xfa\xfb\xb2~ns\
+[T=\xa6\xd9\xa5\x9b\xdejI)\xf7\x9b{\xd1\xdb\
+\x83m\x99\x9f}\x8c\xcb\xfe\x1e\xac\x1fhJv\xb1.\
+\xfb{\xb1\xd6\xf1\xca\xcf\x17:\x0fgz\x83\xe7~\xab\
+\xcb;{0\x05\x5cy&\x09\xf6\xb1-\xba\xfb1~\
+O\x09Kvp\xb6\xfd=X\xc3\xa9\xe9\x86\xa6>\xc6\
+yo\x0f\xb6\xd9\x1a@\x9bW\xc1y\xaf\x8fm\xeb`\
+\x97\x14\xa9(j\x1c{=G\xed\x92\xd8\x90v\x08\x0a\
+\x08]b\xc5\xf0\xde\xfc\xe7>\x9e\xe5g\x04\xbb\x9c\xee\
+\x19\x18\xc033\x00\xda\x9c\x0c*fTM\xb7\x87\xf4\
+\xee\xd9\xad[\xdb\x04H\x0d\xff\x00f\xeeAk\xea\xa0\
+\x16Z\xeeA[\xd4:\xdd\xb2{\xc9\xf3}\xea\xca-\
+\xf8\x94\xd1\xf8\xb6[\xc0{\xae\xfa\xe6^Z\xab\x9e\x97\
+\xa9\xd50\x9f\xd9}\xa02UB\x07\xee\x1fyOm\
+E\xb1(f\xc2\xd4\xd3\x9f=\x8e5>[\xc9 ,\
+\xcb\x16Q\xbb\x07\x0c\xddW\x19,\x97\xd6\xaeL\x97\xed\
+\xdb\x19w\x96\xc8\xbeky\x8cr8oaf\xec2\
+B\x9f1'\x8eCR\x0a\xcdMm\x5c\xae\xc1==\
+^\x06\x90S\xf8\xbc\xcbp\x0a\xf1=\xa6\xcc\x14\xc9m\
+\xf1\x06\x8e\xa3\xa7]/*\x8e\xa4M\xfa\x0f\xb6\xd59\
+\xa0\xd4Il+F\x97\xdcYW\xac\x13\x96\xfb\x97\x97\
+\x98>-\x16\x8a\xc0|\xe3\xd7\xdd\xea\x97\xd9\x83\xfc\x1a\
+\xca\xae:\xfc\x0cx\x8c\xc8{r\xa6R\x12Ch\xed\
+\xceQ\x855\xba\xb6!\xedN\x8f\x8dR\xc2\x94/\x83\
+>e\xc2\xa2&\xd1\xb9X3~z\x0f(B!l\
+j4H,Py\xdd\x82\xf4\x0ak\x14c\x8e\xe6\x04\
+e\x0a|Z\x0b{Y\x92\x00\xc9:e\x04\x82\xa4=\
+\xb6/p\x0c\xe3)G%\xf70\xf0\xealm\x8dM\
+9k\x84%\x8d\x16in\x02\xe1\x5c\x00\xac\x5c{\x09\
+\x8d\xf5V\xe50\xf3\xe1\xa5\x94\xa5-XR\xe9,=\
+\x96\xb4\xf9\xa4\x11\xc2R\x827\x800\xfb\x15)\xf3\xd2\
+\xe6\xa1u\xca\xda(_\xa9\xf2A\xe247\x9e\x9c\xf8\
++|\xef2\x81]\x8ee\xd7\xf4\xac\xb1\xe5+\xef\x98\
+Z?\xd5\x97\xea,h=[z@Y\xdc]\xe2\xb2\
+\xe7T\xcf}]\xde9\xa8\x95Pm\x95K\x9a\xcb\xf2\
+a\xa3\xd0U\x96SM\x85\xebt\x1b\xde7\x8d\x11\x8d\
+\x22\x17\x10\xbe\x199\x8bh9\xf1A\xf5\xb4Q\xbbd\
+\xd6(\x1f\xb9JJ\x15\x8a\xad\xca\xb1\x83Z\x1a\xb4\xd7\
+y\xf9\xd9\x0c\x06\x16\xf5\xc5O\xb7\xe8\xbf\xe5\xfb\x14v\
+\xa9\x96\xf4\xcdeRLR\xdd\xcd\xc6\xa5*C{\xc5\
+\x09\xe9\xd7\xfe\x85cBX\x5c\x09\x1b\x8c\xe8\x1cQ\xcc\
+\xd4\xce\x98O\xb5I\xaf\xc9\x7f \x0c:&-\xe7h\
+\xa5\xfe\xaa\xdd\xbe\x5cv\x80\xc0\xb3SW\xafq~\xc5\
+\x99\xa7\xae\xa9`\xd9\x9a;\xef\xa1\xea\xd6\x94\x93y\xaf\
+\xa9\x1a\x1d\xbe{\xad\xc6\xa0\x93\xe3\x81\xe3~\xc2\x1d\xc7\
+\xeb\x15x\xb3\xf8(p`\x90NSY\xcc\xdaq\xef\
+P\xea\xd4I\xd0\xc0\x94[\xa5w\xea\x97\xad*ea\
+\xe4\xcd\x0bv\x17}\xf5K\x96\x10\xe0`\x91[\xbc\x80\
+\xb0\xb2\x8c\xd2\x1c\x00\x8e$\xc3\xa6\x81\x1e\x99\x0b p\
+\xbdx\xf5\x9e>\x92df1\xa8\x1f\xd5\xe5\x97\xc5\x15\
+\xcb\xfc\xb7\x1a~\xf2v\x1d\xb74\xc9K/$u\xdf\
+$\xecq\x09\xf5,\xa8|&\xe1_\x13\x08\x03RW\
+\xb8\xbck.\xb1`\xe6\x97C\xc1\x0f\xe4o'\xe4\xf4\
+u\x97@\x18;\xd5\x9b\xc8\xe3\x8eFY\x0e\x87\x04\xe4\
+x\x12\x9aR\xfbqx\xfc\x7fN\xa0{\xaa\xb9F\xf6\
+\xa1\xc0\x8e\x8e;\xc1\xfd\xb3O\xedN\xa7wXo\xdd\
+!\x81\xc7\xf9\xd3U=[uR\xd4\xf7\xb9\xe6)\xc2\
+e\xa9\x1e\xbb\xc2<\x1c\x96W>\x83\xadK\x9bfG\
+\x18\xad\x0d\xda/\x86\xfa,\xbcXI\xfd\xea\xacy,\
+\xf0\xf9D\xf1\xc3\xbc\x16\x10\xce\x7fXd\x0e\xf8\x14\xcc\
+\xcc\xa0_\x82\xb8\xb9\xf9^\x12N\xa4\xfdI\x98A\xc1\
+r\x8by\xb7Hy\x8e\x0d<\x16;\x11\xf0\xb30\xce\
+u\x93~r\xda\xc7\xf7{k\xe6\x92[h\x8f%U\
+\xb0\x18\x80\xfb]5\x9d\x1c9\x1a\xdd\xb7\x9c/Q\x00\
+\x98\x0f\x80 \x122\x01\xc5\xc1\xd9\x02\xf0%\x1c\x163\
+8X*j\xc2\xbc<By\xa5\x03^\x00\xad\xa0\x05\
+V\xf0\xfe\x97i\xaf\xed\xbcO\x83\xff\x01\x9e\xca\xab\x1d\
+\
+\x00\x00\x00`\
+[\
+Material]\x0aPrimar\
+y=#41cd52\x0aAccent\
+=#41cd52\x0aTheme=S\
+ystem\x0a\x0a[Universa\
+l]\x0aAccent=#41cd5\
+2\x0aTheme=System\x0a\
+\x00\x00\x00\x94\
+/\
+/ Copyright (C) \
+2021 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick.Co\
+ntrols\x0a\x0aToolBar \
+{}\x0a\
+\x00\x00\x00\x0b\
+m\
+odule App\x0a\
+\x00\x00\x03\x0b\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22SpinBox\
+ allows the user\
+ to choose an in\
+teger value by c\
+licking the up o\
+r down indicator\
+ buttons, \x22\x0a \
+ + \x22b\
+y pressing up or\
+ down on the key\
+board, or by ent\
+ering a text val\
+ue in the input \
+field.\x22\x0a \
+}\x0a\x0a SpinB\
+ox {\x0a \
+ id: box\x0a \
+ value: 50\x0a \
+ ancho\
+rs.horizontalCen\
+ter: parent.hori\
+zontalCenter\x0a \
+ editabl\
+e: true\x0a \
+}\x0a }\x0a}\x0a\
+\x00\x00\x02\x84\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22PageInd\
+icator is used t\
+o indicate the c\
+urrently active \
+page in a contai\
+ner of pages.\x22\x0a \
+ }\x0a\x0a \
+ PageIndicator \
+{\x0a co\
+unt: 5\x0a \
+ currentIndex:\
+ 2\x0a a\
+nchors.horizonta\
+lCenter: parent.\
+horizontalCenter\
+\x0a }\x0a }\
+\x0a}\x0a\
+\x00\x00\x05{\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aPage {\x0a \
+ id: page\x0a\x0a \
+SwipeView {\x0a \
+ id: swipeVie\
+w\x0a anchor\
+s.fill: parent\x0a \
+ currentIn\
+dex: tabBar.curr\
+entIndex\x0a\x0a \
+ Repeater {\x0a \
+ model: \
+3\x0a\x0a P\
+ane {\x0a \
+ width: Swi\
+peView.view.widt\
+h\x0a \
+ height: SwipeV\
+iew.view.height\x0a\
+\x0a \
+ Column {\x0a \
+ sp\
+acing: 40\x0a \
+ wi\
+dth: parent.widt\
+h\x0a\x0a \
+ Label {\x0a \
+ \
+ width: pa\
+rent.width\x0a \
+ \
+ wrapMode: Lab\
+el.Wrap\x0a \
+ \
+horizontalAlignm\
+ent: Qt.AlignHCe\
+nter\x0a \
+ tex\
+t: \x22TabBar is a \
+bar with icons o\
+r text which all\
+ows the user \x22\x0a \
+ \
+ + \x22\
+to switch betwee\
+n different subt\
+asks, views, or \
+modes.\x22\x0a \
+ }\x0a\x0a \
+ \
+ Image {\x0a \
+ \
+ source: \x22../i\
+mages/arrows.png\
+\x22\x0a \
+ anchor\
+s.horizontalCent\
+er: parent.horiz\
+ontalCenter\x0a \
+ \
+}\x0a \
+ }\x0a \
+}\x0a }\x0a \
+}\x0a\x0a footer: T\
+abBar {\x0a \
+id: tabBar\x0a \
+ currentIndex:\
+ swipeView.curre\
+ntIndex\x0a\x0a \
+ TabButton {\x0a \
+ text: \x22\
+First\x22\x0a }\
+\x0a TabButt\
+on {\x0a \
+ text: \x22Second\x22\x0a\
+ }\x0a \
+ TabButton {\x0a \
+ text: \
+\x22Third\x22\x0a \
+}\x0a }\x0a}\x0a\
+\x00\x00\x02\xc6\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ap\
+ragma ComponentB\
+ehavior: Bound\x0a\x0a\
+import QtQuick\x0ai\
+mport QtQuick.Co\
+ntrols\x0a\x0aScrollab\
+lePage {\x0a id:\
+ page\x0a\x0a Colum\
+n {\x0a spac\
+ing: 40\x0a \
+width: parent.wi\
+dth\x0a\x0a Lab\
+el {\x0a \
+ width: parent.w\
+idth\x0a \
+ wrapMode: Label\
+.Wrap\x0a \
+ horizontalAlig\
+nment: Qt.AlignH\
+Center\x0a \
+ text: \x22BusyIn\
+dicator is used \
+to indicate acti\
+vity while conte\
+nt is being load\
+ed,\x22\x0a \
+ + \x22 or wh\
+en the UI is blo\
+cked waiting for\
+ a resource to b\
+ecome available.\
+\x22\x0a }\x0a\x0a \
+ BusyIndicat\
+or {\x0a \
+ anchors.horizon\
+talCenter: paren\
+t.horizontalCent\
+er\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x02\x01\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aPage {\x0a \
+ id: page\x0a\x0a \
+default property\
+ alias content: \
+pane.contentItem\
+\x0a\x0a Flickable \
+{\x0a anchor\
+s.fill: parent\x0a \
+ contentHe\
+ight: pane.impli\
+citHeight\x0a \
+ flickableDirec\
+tion: Flickable.\
+AutoFlickIfNeede\
+d\x0a\x0a Pane \
+{\x0a id\
+: pane\x0a \
+ width: parent\
+.width\x0a }\
+\x0a\x0a Scroll\
+Indicator.vertic\
+al: ScrollIndica\
+tor { }\x0a }\x0a}\x0a\
+\
+\x00\x00\x03O\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22Progres\
+sBar indicates t\
+he progress of a\
+n operation. It \
+can be set in an\
+ \x22\x0a \
+ + \x22indetermin\
+ate mode to indi\
+cate that the le\
+ngth of the oper\
+ation is unknown\
+.\x22\x0a }\x0a\x0a \
+ ProgressBa\
+r {\x0a \
+id: bar\x0a \
+ value: 0.5\x0a \
+ ancho\
+rs.horizontalCen\
+ter: parent.hori\
+zontalCenter\x0a \
+ }\x0a\x0a \
+ProgressBar {\x0a \
+ indete\
+rminate: true\x0a \
+ anchor\
+s.horizontalCent\
+er: parent.horiz\
+ontalCenter\x0a \
+ }\x0a }\x0a}\x0a\
+\x00\x00\x02\xda\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22A tool \
+tip is a short p\
+iece of text tha\
+t informs the us\
+er of a control'\
+s function.\x22\x0a \
+ }\x0a\x0a \
+Button {\x0a \
+ text: \x22Tip\x22\
+\x0a anc\
+hors.horizontalC\
+enter: parent.ho\
+rizontalCenter\x0a\x0a\
+ Tool\
+Tip.timeout: 500\
+0\x0a To\
+olTip.visible: p\
+ressed\x0a \
+ ToolTip.text:\
+ \x22This is a tool\
+ tip.\x22\x0a }\
+\x0a }\x0a}\x0a\
+\x00\x00\x02\x9b\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22TextAre\
+a is a multi-lin\
+e text editor.\x22\x0a\
+ }\x0a\x0a \
+ TextArea {\x0a \
+ width:\
+ page.availableW\
+idth / 3\x0a \
+ anchors.hor\
+izontalCenter: p\
+arent.horizontal\
+Center\x0a\x0a \
+ wrapMode: Te\
+xtArea.Wrap\x0a \
+ text: \x22T\
+extArea\x5cn...\x5cn..\
+.\x5cn...\x22\x0a \
+}\x0a }\x0a}\x0a\
+\x00\x00\x02\xff\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22Slider \
+is used to selec\
+t a value by sli\
+ding a handle al\
+ong a track.\x22\x0a \
+ }\x0a\x0a \
+ Slider {\x0a \
+ id: slider\
+\x0a val\
+ue: 0.5\x0a \
+ anchors.hori\
+zontalCenter: pa\
+rent.horizontalC\
+enter\x0a }\x0a\
+\x0a Slider \
+{\x0a or\
+ientation: Qt.Ve\
+rtical\x0a \
+ value: 0.5\x0a \
+ anchor\
+s.horizontalCent\
+er: parent.horiz\
+ontalCenter\x0a \
+ }\x0a }\x0a}\x0a\
+\x00\x00\x02E\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22Tumbler\
+ is used to sele\
+ct a value by sp\
+inning a wheel.\x22\
+\x0a }\x0a\x0a \
+ Tumbler {\x0a \
+ model:\
+ 10\x0a \
+anchors.horizont\
+alCenter: parent\
+.horizontalCente\
+r\x0a }\x0a \
+}\x0a}\x0a\
+\x00\x00\x04i\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Lay\
+outs\x0aimport QtQu\
+ick.Controls\x0a\x0aSc\
+rollablePage {\x0a \
+ id: page\x0a\x0a \
+ Column {\x0a \
+ spacing: 40\x0a \
+ width: par\
+ent.width\x0a\x0a \
+ Label {\x0a \
+ width: pa\
+rent.width\x0a \
+ wrapMode:\
+ Label.Wrap\x0a \
+ horizont\
+alAlignment: Qt.\
+AlignHCenter\x0a \
+ text: \x22\
+Button presents \
+a push-button th\
+at can be pushed\
+ or clicked by t\
+he user. \x22\x0a \
+ + \x22Bu\
+ttons are normal\
+ly used to perfo\
+rm an action, or\
+ to answer a que\
+stion.\x22\x0a \
+}\x0a\x0a Colum\
+nLayout {\x0a \
+ spacing: 2\
+0\x0a an\
+chors.horizontal\
+Center: parent.h\
+orizontalCenter\x0a\
+\x0a But\
+ton {\x0a \
+ text: \x22Fir\
+st\x22\x0a \
+ Layout.fillW\
+idth: true\x0a \
+ }\x0a \
+ Button {\x0a \
+ id\
+: button\x0a \
+ text: \x22\
+Second\x22\x0a \
+ highligh\
+ted: true\x0a \
+ Layout\
+.fillWidth: true\
+\x0a }\x0a \
+ Butto\
+n {\x0a \
+ text: \x22Third\
+\x22\x0a \
+ enabled: false\
+\x0a \
+ Layout.fillWidt\
+h: true\x0a \
+ }\x0a }\x0a\
+ }\x0a}\x0a\
+\x00\x00\x03\xa5\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22Switch \
+is an option but\
+ton that can be \
+dragged or toggl\
+ed on or off. \x22\x0a\
+ \
++ \x22Switches are \
+typically used t\
+o select between\
+ two states.\x22\x0a \
+ }\x0a\x0a \
+ Column {\x0a \
+ spacing: 2\
+0\x0a an\
+chors.horizontal\
+Center: parent.h\
+orizontalCenter\x0a\
+\x0a Swi\
+tch {\x0a \
+ text: \x22Fir\
+st\x22\x0a \
+}\x0a Sw\
+itch {\x0a \
+ text: \x22Se\
+cond\x22\x0a \
+ checked: t\
+rue\x0a \
+}\x0a Sw\
+itch {\x0a \
+ text: \x22Th\
+ird\x22\x0a \
+ enabled: fa\
+lse\x0a \
+}\x0a }\x0a \
+}\x0a}\x0a\
+\x00\x00\x02a\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22TextFie\
+ld is a single-l\
+ine text editor.\
+\x22\x0a }\x0a\x0a \
+ TextField {\
+\x0a id:\
+ field\x0a \
+ placeholderTe\
+xt: \x22TextField\x22\x0a\
+ anch\
+ors.horizontalCe\
+nter: parent.hor\
+izontalCenter\x0a \
+ }\x0a }\x0a}\x0a\
+\
+\x00\x00\x05\xcc\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22ComboBo\
+x is a combined \
+button and popup\
+ list. It presen\
+ts \x22\x0a \
+ + \x22a list o\
+f options to the\
+ user that occup\
+ies minimal scre\
+en space.\x22\x0a \
+ }\x0a\x0a Co\
+mboBox {\x0a \
+ model: [\x22Fi\
+rst\x22, \x22Second\x22, \
+\x22Third\x22]\x0a \
+ anchors.hor\
+izontalCenter: p\
+arent.horizontal\
+Center\x0a }\
+\x0a\x0a Label \
+{\x0a wi\
+dth: parent.widt\
+h\x0a wr\
+apMode: Label.Wr\
+ap\x0a h\
+orizontalAlignme\
+nt: Qt.AlignHCen\
+ter\x0a \
+text: \x22ComboBox \
+can be made \x5cl e\
+ditable. An edit\
+able combo box a\
+uto-\x22\x0a \
+ + \x22complet\
+es its text base\
+d on what is ava\
+ilable in the mo\
+del.\x22\x0a }\x0a\
+\x0a ComboBo\
+x {\x0a \
+id: comboBox\x0a\x0a \
+ editab\
+le: true\x0a \
+ model: List\
+Model {\x0a \
+ ListElem\
+ent { text: \x22Ban\
+ana\x22 }\x0a \
+ ListEleme\
+nt { text: \x22Appl\
+e\x22 }\x0a \
+ ListElement\
+ { text: \x22Coconu\
+t\x22 }\x0a \
+ }\x0a o\
+nAccepted: {\x0a \
+ if \
+(find(editText) \
+=== -1)\x0a \
+ comb\
+oBox.model.appen\
+d({text: comboBo\
+x.editText})\x0a \
+ }\x0a \
+ anchors.h\
+orizontalCenter:\
+ parent.horizont\
+alCenter\x0a \
+ }\x0a }\x0a}\x0a\
+\x00\x00\x04\xce\
+\x00\
+\x00\x1c\xd2x\xda\xedY\xddo\xdb6\x10\x7f\xd7_A\
+\xa8/\x096+\xb1\x13`\x80\xfa0\xb4N\xb1\x04p\
+\xd6\xc4\x1e\xd6\x02\xc3\x1e\x18\xe9l\x13\xa1H\x85\xa2\xe2\
+\xb8C\xfe\xf7\x91\x92,\x93\xd6\x87\xe5D)V`~\
+\x08B\xde\x07y\xbf;\xde\x1d\xa9\x93\x134\xe6\xf1Z\
+\x90\xc5R\xa2\xa3\xf11\x1a\x9d\x0e\x7fA\x7f,\x01\xdd\
+JE\x89b\xcc\xd6h\x22C\xcf99A\xb3\x9b\x8b\
+\xaf\x83\x09\x09\x80%0\xb8\x0a\x81I2' |T\
+\xccMa>\xb8\x95\x03%\x16\x81\x08\x08\xa6\xe8\xf3\x14\
+}\x9c]\x0c\xce\x06c\x8a\xd3\x04\x1c\x87D1\x17R\
+)\xbfMIp\xbf3\xf4&x\xcdS\x99\xecN\x8f\
+9\x93\x82\xd3\xc4qn0\x03\xf4\x8f\x83\xd4o\xcci\
+\x1a\xb1\x5c\xa2\x98\xd2\xbf$\xc6\x01a\x0b\x1f\x9d\x9f\x96\
+s\x98\x05K.\x12oN(\xf5Q\x8c\x85\xday\x85\
+(y|\x8d\xc5\x820_a\xe0\x94\xe4\x09\xbe\x03j\
+\xe8\xcf\xe7\xf4\xa2\x99\xba/$\x94K\x1fI\x91\x82\xc5\
+\xb2\x128\xbe\xe6!\xf8\xb9\x02\xef\x8b\x1a[\x0cjM\
+\xf2M\xd9\x85\xe9\x07J\x16,R[\xf2\x95\xc1^6\
+\xba\x1c\xab!\x08K@\xc2\x93\xe2p/\x80\xc2\x02K\
+@A\x01\x0aR\xe6 \x85m\x88p\x82\xc2\x82\x9a \
+\xc2\xd0#\x81U\x82\x924Xj\xd2\x84$\xf2O5\
+\xe3\xb9\xa5\xdag\xc3\xcc\x82\xbac)\x09}D\x0b\x92\
+E\x08(\x89k\xccN \x90\x843/\x16<\x06!\
+\xd7j\xc3r\x1d\x83[\xcb\xb4\xd9\xac\x8f\x0c\xb7\xee\xae\
+^0k\x8e\x0a]\xc0CJ\x84\xb2|\xb3\x1cJ\xa4\
+P\xce\xdf\x08U\x04V\xb9\xb7J(4B^6Y\
+a]\x82>\x12\xe5\xfa\xb9\x17U\x5cR\x12\x10y\x99\
+\x11\xd1O:Rv\x05\xeb\x02\xa6\xc6\xa0\x8c\xad\x96)\
+w\xb4a\xb7\xd7d\x8e\x19\xbeA\x161W\xac\x12\xdf\
+[g\xdb\xa3C#\xda`\xb9,\xb0\xc9x\x1c\xdb#\
+8\xe4\x8c\xae\xb7\x1ey\xc4\xa2\x8cJ\x9dO8S\x9b\
+\xbb\xc6*x\xaa\x10\xb9W\x12\xa2M\x80\xbb>\x22\xc6\
+\xb0\x94\xfd\xb9*6[\x91\x18\x0c\xb9\xc4\x1c\xb7\x09\x8e\
+\x97\x10\xdc\x1b\x82\x819n\x13\x9c\xe2\x90pCP\x98\
+\xe3=[\x95\xc1\xd2\xde\xab1Q\x8a\xb69\xabdj\
+82\xb5\xb09\x15V\x13\xec\x86xU9\xff!\xa2\
+\x94\xa8\xa5B\x92\xe0;\xaa2\x0d{H1\xd5y?\
+l\x89\xdeGLS\xd8\xa7\x12X'\x8d\xc5\xa1\xcd\xc3\
+\xba\xe1\xb4>\xbf\x06\xaf\xfap\xa9\x02f\x85Y\xdb\x09\
+7\xf9~,\x5ck\x19\xdb\xf03\xed\x16\x10\xf1\xc76\
+\x007\xbf\xa9\xcag\x98-(\xb4(\xcc\x8a\x0c\xa7\x5c\
+u\x17\x16\xee\xaa\xb4@\xa2\xab\xdd\xaf\xc8}wvv\
+\xe6\x22Uc\xde\x9d\x9f\x9f\xbb\xad\xaa\xba\x04Q]\xfa\
+/\x04\xf2a\xfbf\xb7\x15\xb1\x95\xcf\xb6\x86\xb3\xb1\xaa\
+(\xf7\x10\xfa{\xb0xa\xd8\x98\xbf\xac\xdaE\xaa)\
+\xa1^\xee\xaa#\x9e\xaa\x8a\x11\xc2\xd3\xf1!Kw\x0c\
+\xaf\x86\xc3xH\xb9\xec\xd1\xf6\xb9\xea\x96\xbc\x98<\x01\
+\x9d\x91o\xb0sF=\x9b\xfa\x86`\x18\x8d\xdc4s\
+\x81\xbb\x97\xbd8\x04\xeej\xa9\xf2\xfa~\xf6\xce\xfd@\
+s\xfa\xdcOi\xf0\xe9L\xf5c\xfaR\xa0zZF\
+\x22\xac{\x96N)\xa3\xe4n\x0e\x95\x9b\xa2\x9f\xf8\x10\
+\xec\xd1\xfa\xcaX\x91\xea\x0a\x00\xca=\x9b\x96E\x17I\
+\xe7mb\xc1\xe8\x91\xcb\x86T-\x8b\xd7]\x22#+\
+\x045]Z7\xaf\xfe\x9eFw \xba8\xe9\x0d\xe0\
+\xf4\xc8w\xc14O\xd9\xed(J\xee\xa3\xd3V\x0e\xc0\
+\x89\xbaPx\xfa\x12\xe3\xa3O\xf9\xe0\x8a}N\xd5\xcd\
+\x14\x87/@\xfe\xff8\xae\x8d\xe39\xa6\x09\xf4\x93\x84\
+\xb2\xcc\xeeQ\x98\xcbjG\xd2\xcc/\xf2r\xdfE\xa0\
+4\x92\xb3\xdc\xc2J\x1a\xf3\x12\x05\xbf<:\xee\xb7M\
+\xad\xbf\x9cTA\xb0.5\xff\xd5\xc6\xbe\x15\x89\x8f\xa9\
+\x94\x9c\xfd&x\x1a7`\x91\xdd\xb7\x0c\xb6\xd7\xe0Z\
+\x7fw\xab\xe2j\xdd\xf9\xbe\x1f\xae\x86\x95\xdeB\xff\xdd\
+c\xfd\x1b\xf8\xa3\xc3\x05\xaa\xf6\x0e[w\x832\x18\x7f\
+\xc8\xd8\xcc\xfa\xe7\xfc\x09I\xbf\xef\xd5\xb5\xae\x9a\xf6\x89\
+B\x94\x01\x86\xf2\xd2a?m\xbc\xdf\xe4=kz\xe8\
+\xd6d\xba\x97*\x1b\xf5\xa9\xec\xac\xb32\xfb)f\xab\
+\xcd\x9a\x1f\xf6\xabn\xd4\xaf\xba\xee\xc6\xda\xcfG[u\
+\xd6\xfc\xb0_u\xa3~\xd5u7\xd6~\xf2\xda\xaa\xb3\
+\xe6\x87\xfd\xaa\x1b\xf5\xab\xee\xa006\x9f\xe9\xacH1\
+\x08\xc3\xbe\x15\x8e\xfaVX1y'\x9dm\xdf\xe0'\
+\x1c\x87 \x1a2\xfc\x86-gz\xcd\xbb\xfa\x81\xd9=\
+\xe1\xa9\x08\xb6%e\xfb5\xc2\xab{T\xfeK\x83\xf3\
+\xb7sX\xfa\xef\xfeY\xa1\xbe\xc04\xb2\xeb\xcdt\xe0\
+\xd6/\xe4YU\xe9\xc0\xabM \xfa\xc5\xa6\xba\xeb\x92\
+\xa7p\xa4\xd9\xf9\xefu\xe0\x81^\xd9\xae\xb5\xf9l\xa4\
+=\xde\xf0\xa9\xe8\xf0\x02l\x99\xbby\xa3\xf2\x0b\xc3\xeb\
++u\xfe\xdf\xb3\xf3\xec\xfc\x0b\x01\xe6r&\
+\x00\x00\x02\xc8\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22The Dia\
+l is similar to \
+a traditional di\
+al knob that is \
+found on devices\
+ such as \x22\x0a \
+ + \x22st\
+ereos or industr\
+ial equipment. I\
+t allows the use\
+r to specify a v\
+alue within a ra\
+nge.\x22\x0a }\x0a\
+\x0a Dial {\x0a\
+ valu\
+e: 0.5\x0a \
+ anchors.horiz\
+ontalCenter: par\
+ent.horizontalCe\
+nter\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x04\xe8\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a readon\
+ly property int \
+itemWidth: Math.\
+max(button.impli\
+citWidth, Math.m\
+in(button.implic\
+itWidth * 3, pag\
+e.availableWidth\
+ / 3 * 2))\x0a\x0a \
+Column {\x0a \
+ spacing: 40\x0a \
+ width: pare\
+nt.width\x0a\x0a \
+ Label {\x0a \
+ width: par\
+ent.width\x0a \
+ wrapMode: \
+Label.Wrap\x0a \
+ horizonta\
+lAlignment: Qt.A\
+lignHCenter\x0a \
+ text: \x22F\
+rame is used to \
+layout a logical\
+ group of contro\
+ls together, wit\
+hin a visual fra\
+me.\x22\x0a }\x0a\x0a\
+ Frame {\x0a\
+ anch\
+ors.horizontalCe\
+nter: parent.hor\
+izontalCenter\x0a\x0a \
+ Colum\
+n {\x0a \
+ spacing: 20\x0a\
+ \
+width: page.item\
+Width\x0a\x0a \
+ RadioButt\
+on {\x0a \
+ text: \x22\
+First\x22\x0a \
+ check\
+ed: true\x0a \
+ wid\
+th: parent.width\
+\x0a \
+ }\x0a \
+ RadioButton {\
+\x0a \
+ id: button\x0a\
+ \
+ text: \x22Secon\
+d\x22\x0a \
+ width: pa\
+rent.width\x0a \
+ }\x0a \
+ Rad\
+ioButton {\x0a \
+ t\
+ext: \x22Third\x22\x0a \
+ \
+ width: parent.w\
+idth\x0a \
+ }\x0a \
+ }\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x05B\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aPane {\x0a \
+ id: pane\x0a\x0a \
+SwipeView {\x0a \
+ id: view\x0a \
+ currentInde\
+x: 1\x0a anc\
+hors.fill: paren\
+t\x0a\x0a Repea\
+ter {\x0a \
+ model: 3\x0a\x0a \
+ Pane {\x0a \
+ w\
+idth: SwipeView.\
+view.width\x0a \
+ heigh\
+t: SwipeView.vie\
+w.height\x0a\x0a \
+ Column\
+ {\x0a \
+ spacing: \
+40\x0a \
+ width: pa\
+rent.width\x0a\x0a \
+ \
+Label {\x0a \
+ \
+width: parent.wi\
+dth\x0a \
+ wrap\
+Mode: Label.Wrap\
+\x0a \
+ horizon\
+talAlignment: Qt\
+.AlignHCenter\x0a \
+ \
+ text: \x22Swi\
+peView provides \
+a navigation mod\
+el that simplifi\
+es horizontal pa\
+ged scrolling. \x22\
+\x0a \
+ + \x22The \
+page indicator o\
+n the bottom sho\
+ws which is the \
+presently active\
+ page.\x22\x0a \
+ }\x0a\x0a \
+ \
+ Image {\x0a \
+ \
+ source: \x22../i\
+mages/arrows.png\
+\x22\x0a \
+ anchor\
+s.horizontalCent\
+er: parent.horiz\
+ontalCenter\x0a \
+ \
+}\x0a \
+ }\x0a \
+}\x0a }\x0a \
+}\x0a\x0a PageIndic\
+ator {\x0a c\
+ount: view.count\
+\x0a current\
+Index: view.curr\
+entIndex\x0a \
+ anchors.bottom:\
+ parent.bottom\x0a \
+ anchors.h\
+orizontalCenter:\
+ parent.horizont\
+alCenter\x0a }\x0a}\
+\x0a\
+\x00\x00\x04;\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aFlickable\
+ {\x0a id: flick\
+able\x0a\x0a conten\
+tHeight: pane.he\
+ight\x0a\x0a Pane {\
+\x0a id: pan\
+e\x0a width:\
+ flickable.width\
+\x0a height:\
+ flickable.heigh\
+t * 1.25\x0a\x0a \
+ Column {\x0a \
+ id: colum\
+n\x0a sp\
+acing: 40\x0a \
+ width: par\
+ent.width\x0a\x0a \
+ Label {\x0a \
+ w\
+idth: parent.wid\
+th\x0a \
+ wrapMode: Lab\
+el.Wrap\x0a \
+ horizont\
+alAlignment: Qt.\
+AlignHCenter\x0a \
+ tex\
+t: \x22ScrollBar is\
+ an interactive \
+bar that can be \
+used to scroll t\
+o a specific pos\
+ition. \x22\x0a \
+ + \x22\
+A scroll bar can\
+ be either verti\
+cal or horizonta\
+l, and can be at\
+tached to any Fl\
+ickable, \x22\x0a \
+ +\
+ \x22such as ListVi\
+ew and GridView.\
+\x22\x0a }\x0a\
+\x0a Ima\
+ge {\x0a \
+ rotation: 9\
+0\x0a \
+ source: \x22../im\
+ages/arrows.png\x22\
+\x0a \
+ anchors.horizon\
+talCenter: paren\
+t.horizontalCent\
+er\x0a }\
+\x0a }\x0a }\
+\x0a\x0a ScrollBar.\
+vertical: Scroll\
+Bar { }\x0a}\x0a\
+\x00\x00\x03v\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22RangeSl\
+ider is used to \
+select a range s\
+pecified by two \
+values, by slidi\
+ng each handle a\
+long a track.\x22\x0a \
+ }\x0a\x0a \
+ RangeSlider {\x0a\
+ id: \
+slider\x0a \
+ first.value: \
+0.25\x0a \
+ second.value: 0\
+.75\x0a \
+anchors.horizont\
+alCenter: parent\
+.horizontalCente\
+r\x0a }\x0a\x0a \
+ RangeSlider\
+ {\x0a o\
+rientation: Qt.V\
+ertical\x0a \
+ first.value:\
+ 0.25\x0a \
+ second.value: \
+0.75\x0a \
+ anchors.horizon\
+talCenter: paren\
+t.horizontalCent\
+er\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x05\x17\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a readon\
+ly property int \
+itemWidth: Math.\
+max(button.impli\
+citWidth, Math.m\
+in(button.implic\
+itWidth * 3, pag\
+e.availableWidth\
+ / 3 * 2))\x0a\x0a \
+Column {\x0a \
+ spacing: 40\x0a \
+ width: pare\
+nt.width\x0a\x0a \
+ Label {\x0a \
+ width: par\
+ent.width\x0a \
+ wrapMode: \
+Label.Wrap\x0a \
+ horizonta\
+lAlignment: Qt.A\
+lignHCenter\x0a \
+ text: \x22A\
+ GroupBox provid\
+es a frame, a ti\
+tle on top of it\
+, and a logical \
+group of control\
+s within that fr\
+ame.\x22\x0a }\x0a\
+\x0a GroupBo\
+x {\x0a \
+title: \x22Title\x22\x0a \
+ ancho\
+rs.horizontalCen\
+ter: parent.hori\
+zontalCenter\x0a\x0a \
+ Column\
+ {\x0a \
+ spacing: 20\x0a \
+ w\
+idth: page.itemW\
+idth\x0a\x0a \
+ RadioButto\
+n {\x0a \
+ text: \x22F\
+irst\x22\x0a \
+ checke\
+d: true\x0a \
+ widt\
+h: parent.width\x0a\
+ \
+}\x0a \
+ RadioButton {\x0a\
+ \
+ id: button\x0a \
+ \
+ text: \x22Second\
+\x22\x0a \
+ width: par\
+ent.width\x0a \
+ }\x0a \
+ Radi\
+oButton {\x0a \
+ te\
+xt: \x22Third\x22\x0a \
+ \
+width: parent.wi\
+dth\x0a \
+ }\x0a \
+ }\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x03\xc7\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22RadioBu\
+tton presents an\
+ option button t\
+hat can be toggl\
+ed on or off. \x22\x0a\
+ \
++ \x22Radio buttons\
+ are typically u\
+sed to select on\
+e option from a \
+set of options.\x22\
+\x0a }\x0a\x0a \
+ Column {\x0a \
+ spacing\
+: 20\x0a \
+ anchors.horizon\
+talCenter: paren\
+t.horizontalCent\
+er\x0a\x0a \
+RadioButton {\x0a \
+ te\
+xt: \x22First\x22\x0a \
+ }\x0a \
+ RadioButto\
+n {\x0a \
+ text: \x22Secon\
+d\x22\x0a \
+ checked: true\
+\x0a }\x0a \
+ Radio\
+Button {\x0a \
+ text: \x22\
+Third\x22\x0a \
+ enabled: \
+false\x0a \
+ }\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x04U\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aFlickable\
+ {\x0a id: flick\
+able\x0a\x0a conten\
+tHeight: pane.he\
+ight\x0a\x0a Pane {\
+\x0a id: pan\
+e\x0a width:\
+ flickable.width\
+\x0a height:\
+ flickable.heigh\
+t * 1.25\x0a\x0a \
+ Column {\x0a \
+ id: colum\
+n\x0a sp\
+acing: 40\x0a \
+ width: par\
+ent.width\x0a\x0a \
+ Label {\x0a \
+ w\
+idth: parent.wid\
+th\x0a \
+ wrapMode: Lab\
+el.Wrap\x0a \
+ horizont\
+alAlignment: Qt.\
+AlignHCenter\x0a \
+ tex\
+t: \x22ScrollIndica\
+tor is a non-int\
+eractive indicat\
+or that indicate\
+s the current sc\
+roll position. \x22\
+\x0a \
+ + \x22A scroll\
+ indicator can b\
+e either vertica\
+l or horizontal,\
+ and can be atta\
+ched to any Flic\
+kable, \x22\x0a \
+ + \x22\
+such as ListView\
+ and GridView.\x22\x0a\
+ }\x0a\x0a \
+ Image\
+ {\x0a \
+ rotation: 90\x0a\
+ \
+source: \x22../imag\
+es/arrows.png\x22\x0a \
+ a\
+nchors.horizonta\
+lCenter: parent.\
+horizontalCenter\
+\x0a }\x0a \
+ }\x0a }\x0a\x0a\
+ ScrollIndica\
+tor.vertical: Sc\
+rollIndicator { \
+}\x0a}\x0a\
+\x00\x00\x05\x99\
+\x00\
+\x00\x17\x96x\xda\xcdXKs\xdb6\x10\xbe\xf3W\xec\
+\xf8d'\x16\x948\x99\xe9\x8c.\x9dD\x8e'\x9e\xb1\
+\xe3W\xd2\xb43\xbd@\xc4RB\x0d\x024\x00\xdaV\
+S\xff\xf7.H=(\xf1!\xc5I\xed\xf2 \x11\xc0\
+.\xf6\xf5\xedb\xc1~\x1f\x86&\x9bZ9\x9ex\xd8\
+\x1d\xee\xc1\xc1\xab\xd7\xbf\xc0\xe7\x09\xc2\x85\xa7\x954\xe3\
+z\x0a'^\xb0\xa8\xdf\x87\xab\xf3\xc3\xdf{'2F\
+\xed\xb0w,P{\x99H\xb4\x03\x98\xcd]b\xd2\xbb\
+\xf0=bK\xd1\xc6\x92+8\xbb\x84\xf7W\x87\xbd7\
+\xbd\xa1\xe2\xb9\xc3(\x92if\xac\xa7\xcd/r\x19_\
+\xaf\x0d\xd9\x09\x9f\x9a\xdc\xbb\xf5\xe9\xa1\xd1\xde\x1a\xe5\xa2\
+\xe8*\xa6\x7f\xc5G\x0a\xcf\xf9\x18\xe1[\x04\xf4H1\
+\x80\x8c\x86Q1\xb2\xc8\x85\xd1j\x0a\x995\x19Z?\
+\x05\xa9=\x8cr\xef\x8d\xfe*\x85\x9f\x0c\xe0\x94\xfb\x09\
+K\xf9\xfdn9\xcbH\x9c\x92\xb1\xf4\xc5\xf2\xfelY\
+\xea\xc6ex\x01\x07\xfb\x858\xc6o\xb9,t)\x17\
+\xfa\xf0fo\xaf\xd4ahT\x9e\xea\x99z\xe1q\x19\
+\x8f\xa5\x1e\x0f\xe0\xed\xab\xc5\xdc]\xa9L\xc6-9\x92\
+\x15\xa3h\xb1x\xc2G\xa8*\x1b\xb41\xac\xac[\x9e\
+\x9d\x1a\x81\x83\x92\x9b}\xa5\xf1\x0a\xc1\xc4X\xf97\xf9\
+\x92\xabwJ\x8euJ\xdb\x0c\xc8\xc9\xac\x18}\x1c\xd2\
+\x10\xed\x0a\x83\xc7{\xa2\xd89\xa4P\x9a1H\x07\x1c\
+2\x93\xe5\x19\xf8\x09\xf7a\x9c\x1a\xe7\xc9\xd5\x14Z\x01\
+\x89\xb1\xe0H\x84\xef\xd16)x\xee\xae\x1d\xec\xac\xec\
+\x17\x9e\x97\xb0\xc3\xb5\x80\x91\x95\x98@LP\xc9\xb5\x8c\
+\xb9\x97F;\xb2\x90\xfc\xe8\x09|\xb4\xa1eK\xde\x87\
+\xa5c\xde\x171Y\xf3\xccL\xcfSt\x8e\x02\xb3*\
+\x93\xeb\x98\x94rli|i\xe8\xc2\x91\xeb\x0b\xcd>\
+\xa7xW0\xb4Bc\xf4\x90\xf0q\x8d\x04\xc3\xb4\xd4\
+\xa0t\x18#\xfc\xe9\xdd\xbdh\x85x\xe6\xcbo5\xbf\
+\xc8u\xf6\xa8Fr?\x80\xddj\xf4\xa1W\xea\xb7G\
+\xd8;\xa8QO\x97\xd4\x13,\xf2\xbb\x07\xe5KI_\
+c\xf0\xd2+\xac\xba\xb1F\xd1\x84\xca\xb5\x18\x9c\x18\x8b\
+)\xc8\xcc\xe5)\x08\xa3\x02&\xa4\x07\x9e\xa2g\x8c\xd5\
+\xd1\xf0\x105\x8f6E<x\xab\x8cG\x13\x10\xa8`\
+$\xd2\xa6\x05\xaa\x9e\x11\x0dqE\x8d\xc7B\xa2\xbe\xc7\
+\x7f\x8d\x8bu\xfa\x92v\x00g\xb7h\x15\x9f2S\xfe\
+\xd7\xd5H\x8d\xe0j\x00\xde\xe6\xd8\x8a\xad\xf6\xc8\x14e\
+\xd2Si\xe0V\x94!w\x83\x99k\xd8\x1f\xe8\xe0\x9f\
+\xf9\xe0\x93\xa9\x8b\xae\x15\xdc\x95]\xe7\xc5\xf7\xe0U\xe3\
+\xfa\x1c\x13\x89Tj\x8e\x83F\xc2.\xf8W\xd0\x17N\
+Oa\xe2<\xd4W\x98p\x07#D\x1d\xbc\x13NK\
+\xc1\xfe\xd4\x87\x06\xe8\x9c\x83;N\xeb\xde\x80\xe3\xb7\x18\
+&,\xc4\x13\xae\xc7\xe8~\xddi\x14\xf1\xd08;\x9c\
+`|\xfd\xde\xdco\xd6\x8b\xc4jC\xb9\xe8\xae\x81\x8f\
+\xb9\xd4;\xad\x0cs\x8f\x14m\xc1\x225\x8a\xd1\x96\x9a\
+=6\xaf\x97\x09\xecI\xe4\xf3\xe6n\xd0\xe0\x07\xd2v\
+\xc9\xfe\xd4\x19{Wms\xa8\x8f)l\xbe+\x9b\x9b\
+\xe2}\xc9\xfc&\xf43\xb5\x0df\xda\x7f\xc42\xfed\
+\x82\x99K~\xf1\x04\x15\xa2\x1e\xfa\xae\xe20T\xc6a\
+]\xd6Q\x88d\xe8\xceZ\x12#D)\x99\xd34R\
+\xc4Jf-\xca~W\xd9X\xf3f\x5c\xd4\xaa\x99?\
+\xa3\xe6\x9c\xee*gK\x88\x05\xa2V\x92MUoc\
+\x0b\xba\xfe\x1c\xa7\xcb\x96\xbbK\xaf\x80\x96N\xa2\x06\xa9\
+\x8d0\xfey\xb9\xbf\xfe\x84\x90\x95\x9dra\x14;\xb7\
+H\x0d\xe7-\xbes\x19\xc6\xfeH\xfaNnG\xa5:\
+\x0ePe\xac/\x03\xbf\xeb\xdf\xf8^\x91$\x99\x1e\xb7\
+W\xd5\x87v\xdfn:Y\xb6i\xff\xbf\xbb!\xdb\x0f\
+\xc8td0z:{\xb8\x90\x99t\x012\x80Jz\
+\x06\x9fr\x1d\x93\xa7\xb4\x1c\xe5M}|C_/5\
+\xa0\xf3p\x93\xd3\xcd@q\x92KM\x1f\x1c\x87h\x08\
+\x12\x8e\x1eR\xae\xd0\xe5\x5cpHH\x01\xbaN\xc4\x14\
+X\x8f3\xed2+S\xb9\xbd\xa8\x84\xe7q\xd0\x8d\xc1\
+0\xb7|$\x83\x118&)\x7f\xe5.\x9c\xaatQ\
+\x0c\xb7\xb6\x5c\x04\xb5\xb4L\x17\x0c0\x92#\xd4\xa4\x12\
+\xdbN\xd6UN\xb0\xd0B:\x87t\xfd\x09\xa9,\x19\
+\xfcF\x96\xd2f\x94\x82\x10\xe7\xd6\xd1\xae\x853or\
+\x1e\xcc\xcc-\x19\x22\xc5\x8a\x12[J;\x0c\xdeK(\
+w\x95t\xf46!\xc9\x16-\x85\xac\x12\xac\xaa\xc9\x8e\
+g\x92\xda\x0bO\x17/c\xf7\x01\x93\xa4\x10h\xb7\xf4\
+\xa3\x00\xf2\x0aq\x82\xc6\xb8\xcaM~\xd4\xd2)\x06_\
+<\xdc\xa2FM-\x9b\x03\xb4\x86\xec\xd2\xa0\x0362\
+\xc5c\xb4\x9cp\xb4\x95(\xcc\x81+I\x0eJ\xcbp\
+\x90\xcfb\x82\x9cg\xdd\xdc\x1bo\xb5\x9b[\xa4\x96\xc4\
++?&\x1cSd\xe9\xfei,\xa3S\xcb\xd3+\x15\
+\xf3\xb5\x95\x8e\xc4\x9c\x1f}\xab\xed\xc2lt\xec1\xdd\
+\xd8cy\x93U\x0e\xa20\xdc\xc822t\x02\xa6U\
+\xaer\xe6\xa7\xf5s5\x9eSn\xc7R\x0f\xa0\xb7j\
+g\xb1v\xce\x85\x08U\xe3%\xbc~\x9a\xe6\xf0Xg\
+\xf9s\xb6\x862\xc8\x7flcXa\xfe\xdf^\xe4\x12\
+\xba\xbc\xb8\x96\xceg\x9b\x16\xae!@]\x0d\xdc\xd9\xf5\
+\xf2r7\xa4H\xa2j\xbb\xe0\x95\xdf\x07\x9f\xfb\x9aG\
+\xc7\xe3\xb2\x1c}\x08\x83\xcb\xceL\x9a\xc1\xf6\x5c!\xa7\
+\x13\xa4\x80_\xf1\x91+\xb6X|C\xe5\xca\x0dv:\
+Z\x83`s\xa1\xf5\xec\xf3ekG\xda\x5c\xfd>\x93\
+\xf8#\x89Jt\x98\xd4\x15\xf1\x05|B\xb9\x9f\x18%\
+\xd0~.-\xfaBM\x93\xa6\x83\xfc\x99\x95\xaf+v\
+\xce\x9d\xbb3V\xb4+\x86\x84\x85\xf2TYH`s\
+\xae\x0f\xb4v\xa6?\x88\x8e6\xf0\x87\xecj/\x7f\xe5\
+\xefC\xf4/yY\x0ax\
+\x00\x00\x03\xe0\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22CheckBo\
+x presents an op\
+tion button that\
+ can be toggled \
+on or off. \x22\x0a \
+ + \x22\
+Check boxes are \
+typically used t\
+o select one or \
+more options fro\
+m a set of optio\
+ns.\x22\x0a }\x0a\x0a\
+ Column {\
+\x0a spa\
+cing: 20\x0a \
+ anchors.hor\
+izontalCenter: p\
+arent.horizontal\
+Center\x0a\x0a \
+ CheckBox {\x0a \
+ t\
+ext: \x22First\x22\x0a \
+ che\
+cked: true\x0a \
+ }\x0a \
+ CheckBox {\x0a\
+ \
+text: \x22Second\x22\x0a \
+ }\x0a \
+ CheckBo\
+x {\x0a \
+ text: \x22Third\
+\x22\x0a \
+ checked: true\x0a\
+ \
+enabled: false\x0a \
+ }\x0a \
+ }\x0a }\x0a}\x0a\
+\x00\x00\x02\xb5\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22DelayBu\
+tton is a checka\
+ble button that \
+incorporates a d\
+elay before the \
+\x22\x0a \
+ + \x22button is a\
+ctivated. This d\
+elay prevents ac\
+cidental presses\
+.\x22\x0a }\x0a\x0a \
+ DelayButto\
+n {\x0a \
+text: \x22DelayButt\
+on\x22\x0a \
+anchors.horizont\
+alCenter: parent\
+.horizontalCente\
+r\x0a }\x0a \
+}\x0a}\x0a\
+\x00\x00\x07\x9f\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ap\
+ragma ComponentB\
+ehavior: Bound\x0a\x0a\
+import QtQuick\x0ai\
+mport QtQuick.Co\
+ntrols\x0a\x0aStackVie\
+w {\x0a id: stac\
+kView\x0a initia\
+lItem: page\x0a\x0a \
+ Component {\x0a \
+ id: page\x0a\x0a \
+ Pane {\x0a \
+ id: pa\
+ne\x0a w\
+idth: parent ? p\
+arent.width : 0 \
+// TODO: fix nul\
+l parent on dest\
+ruction\x0a\x0a \
+ Column {\x0a \
+ sp\
+acing: 40\x0a \
+ width:\
+ parent.width\x0a\x0a \
+ L\
+abel {\x0a \
+ width\
+: parent.width\x0a \
+ \
+ wrapMode: Lab\
+el.Wrap\x0a \
+ hori\
+zontalAlignment:\
+ Qt.AlignHCenter\
+\x0a \
+ text: \x22Stac\
+kView provides a\
+ stack-based nav\
+igation model wh\
+ich can be used \
+with a set of in\
+terlinked pages.\
+ \x22\x0a \
+ + \x22Items \
+are pushed onto \
+the stack as the\
+ user navigates \
+deeper into the \
+material, and po\
+pped off again \x22\
+\x0a \
+ + \x22when he \
+chooses to go ba\
+ck.\x22\x0a \
+ }\x0a\x0a \
+ Button {\
+\x0a \
+ id: button\x0a\
+ \
+ text: \x22Push\x22\
+\x0a \
+ anchors.hor\
+izontalCenter: p\
+arent.horizontal\
+Center\x0a \
+ width\
+: Math.max(butto\
+n.implicitWidth,\
+ Math.min(button\
+.implicitWidth *\
+ 2, pane.availab\
+leWidth / 3))\x0a \
+ \
+ onClicked: sta\
+ckView.push(page\
+)\x0a \
+ }\x0a\x0a \
+ Button {\x0a \
+ \
+ text: \x22Pop\x22\x0a \
+ \
+ enabled: stack\
+View.depth > 1\x0a \
+ \
+ width: Math.m\
+ax(button.implic\
+itWidth, Math.mi\
+n(button.implici\
+tWidth * 2, pane\
+.availableWidth \
+/ 3))\x0a \
+ anchor\
+s.horizontalCent\
+er: parent.horiz\
+ontalCenter\x0a \
+ \
+onClicked: stack\
+View.pop()\x0a \
+ }\x0a\x0a \
+ La\
+bel {\x0a \
+ width:\
+ parent.width\x0a \
+ \
+ wrapMode: Labe\
+l.Wrap\x0a \
+ horiz\
+ontalAlignment: \
+Qt.AlignHCenter\x0a\
+ \
+ text: \x22Stack\
+ Depth: \x22 + stac\
+kView.depth\x0a \
+ }\x0a \
+ }\x0a \
+ }\x0a }\x0a}\x0a\
+\x00\x00\x01?\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x04\x03\x00\x00\x00~\xd0\xa5^\
+\x00\x00\x000PLTE\x00\x00\x00\xff\xff\xffA\xcd\
+RP\xcaNA\xcdRA\xcdRH\xcbPB\xccQ\
+I\xcbPD\xccQE\xccQE\xccQD\xccQD\
+\xccQC\xccQA\xcdR\xb0DE*\x00\x00\x00\x0f\
+tRNS\x00\x00\x186Oc\xab\xae\xb8\xbd\xc9\xd6\
+\xdf\xe9\xf0r\xc1;\x05\x00\x00\x00\xafIDAT(\
+\xcf\x8d\xd2\xb1\x0d\xc20\x14\x04\xd0[\x81\x0d~\x81\x98\
+\x81\x01\xe8-e\x01F@\xf2\x14t\xec\xe0E\xd8!\
+\xca\x08\xac\x10YXXG\x11'v\xf0\x15\x5c\xf9\xf4\
+\x8b\xff\xed\x03\xd6\xb8\x80>.\x99@\x06\x85\xd9\x04r\
+T\xd8\x8f:\x92/\x13\xc8A\xe1l\x02\x7fG\x17\x8c\
+\x06\x00\xe7{\xc9\x93$I\x0f\x00\x0f\xee\x13M \xbd\
+\xc2d\x02\x19\x14&\x13\xc8\xa00+\xe4\xdf8+\x1c\
+\x04Nb\xa5\xac.\x1a\xc5\xed\x1f\x03p\xeb/\x07\x8e\
+\x97\x92\xeb\xf6F\xddw,\xd59\xacq$\xf96\x81\
+\x1e=F\x13X\x06w\xb8\xf5\xa3\xc5\xad\x1e\x0d\xd6\x22\
+5X{Tq\xb2\x1eO\xd5\xbe:U\x87P(\x16\
+\xe3k\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x01\xca\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00@\x00\x00\x00;\x04\x03\x00\x00\x009\xa2\x91\xef\
+\x00\x00\x000PLTE\x00\x00\x00A\xcdRP\xca\
+NA\xcdRA\xcdRF\xccPH\xcbPB\xccQ\
+I\xcbPD\xccQE\xccQE\xccQD\xccQD\
+\xccQC\xccQA\xcdR\x96\x12X7\x00\x00\x00\x0f\
+tRNS\x00\x186Oc\x9d\xab\xae\xb8\xbd\xc9\xd6\
+\xdf\xe9\xf0URDE\x00\x00\x01:IDAT8\
+\xcb\x85\xd4\xcdM\xc40\x10\x05\xe0\x99\x0e,\x05\x11)\
+\x88;\xc7E\x14`QAj\xa0\x02D\x05{B\xe2\
+F\x0d[\x81K\xa0\x06D\x019P\xc0\x1e\x12\x09\xf1\
+\xb3z\x1c\x9c\xc4\xcex\xd63\xd7|yR</&\
+\xd2\xc6\x1f\xa8>\xfe\xc7\x19\x00\x07\x0b\x9c\x9c\x01\xf0n\
+\x81z\x84\x07\xf0\xe9\x0c\x80{\x0bL\xce\x00\xb5\x88\x08\
+\xbe\x8a\x88\x9b\x97y\xde\x00\x00x\x92\xe0\x15\xdb)\x22\
+$(\x22\x0a wV\x00\xb9\xb3\x12\x88\x88\x12\x88\x08\
+\x05\x9c\xd2S~\xd0\x00\x12\xe8\xc6:\xe0\xa0\x82i\x05\
+\xd7P\xc1\xba0\x1eT\xf0\xe1R\x80\x06R\xef\x9a\xa3\
+\x0a\xd6\xe6r\x0f\x0d\xfc\xad\x01\x17\x000\xd2\xe3\xb9c\
+\xe4>\x82\xe6n\x9e^,\xa2E\x04\xa2r)`\x1f\
+\xcfdy\xff6\x82o\x11\x90\x7f\x9c\xdf\xd4i\x0e\xc8\
+f\xe7\x91\x17\xb2\x83\x0aR@P\xc1T\x09\xc0\xce\xe7\
+[\x0a*\x98\xf2-i \xfd\x97\x83\x0a\xd2\x9a\x09\x1a\
+\xb8\xcc\xda\x1e4\x90W\xbd\xb5@y\x8e\x02h\x11[\
+\xa0DlA\xacS\x0d\xc4>U\xc0\x12\xf1\xbb\xdcP\
+\xcf\xf2\xe6\x99#F:;\xcd`\x80\xb8\xb1\x1a\xe0\xc1\
+\x00te\x01\x0e\x06\xa0\xce\x02\x1c\x0c@\xad\x05xo\
+\x00ju\xf0\x0fRR\x00X\xeb\xfc\xd3\xe9\x00\x00\x00\
+\x00IEND\xaeB`\x82\
+\x00\x00%!\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x03 \x00\x00\x02;\x08\x03\x00\x00\x00#\xc8\x0f\xb6\
+\x00\x00\x00\x09pHYs\x00\x004\xba\x00\x004\xba\
+\x010P\xac\x88\x00\x00\x00\x19tEXtSof\
+tware\x00www.inksca\
+pe.org\x9b\xee<\x1a\x00\x00\x03\x00PL\
+TE\x00\x00\x00\x00\xff\xff\x00\xff\x80U\xff\xaa@\xbf\
+\x803\xcc\x99+\xd5\x80$\xdb\x92 \xdf\x809\xe3\x8e\
+3\xe6\x80.\xe8\x8b+\xd5\x80'\xd8\x89$\xdb\x803\
+\xdd\x880\xdf\x80-\xe1\x87+\xe3\x80(\xe4\x86&\xd9\
+\x801\xdb\x86.\xdc\x80,\xde\x85+\xdf\x8a)\xe0\x85\
+'\xe2\x89/\xe3\x84.\xdb\x89,\xdc\x84+\xdd\x88)\
+\xde\x840\xdf\x87.\xe0\x83-\xe1\x87,\xdb\x83+\xdc\
+\x87)\xdd\x83/\xdd\x86.\xde\x83-\xdf\x86,\xe0\x83\
++\xe1\x86*\xdb\x82.\xdc\x85-\xdd\x82,\xde\x85+\
+\xde\x88+\xdf\x85*\xe0\x87.\xe0\x85-\xdc\x87,\xdd\
+\x84+\xdd\x87+\xde\x84*\xdf\x86.\xdf\x84-\xe0\x86\
+,\xdc\x84+\xdc\x86+\xdd\x84.\xde\x86-\xde\x84-\
+\xdf\x86,\xdf\x83+\xe0\x85+\xdc\x83.\xdd\x85-\xdd\
+\x83,\xde\x85,\xde\x87+\xdf\x85+\xdf\x87-\xe0\x85\
+-\xdd\x86,\xdd\x85,\xdd\x86+\xde\x84+\xde\x86-\
+\xdf\x84-\xdf\x86,\xe0\x84,\xdd\x86+\xdd\x84+\xde\
+\x86-\xde\x84,\xde\x85,\xdf\x84+\xdf\x85+\xdd\x84\
+-\xdd\x85-\xdd\x84,\xde\x85,\xde\x86+\xde\x85+\
+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85,\xde\x86+\xde\
+\x85+\xde\x86-\xdf\x85-\xdf\x86,\xdf\x84,\xdd\x86\
++\xdd\x84+\xde\x85-\xde\x84,\xde\x85,\xdf\x84,\
+\xdf\x85+\xdf\x84+\xdd\x85-\xdd\x84,\xde\x85,\xde\
+\x84,\xde\x85+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85\
+,\xde\x86,\xde\x85+\xde\x86-\xde\x85-\xdf\x86,\
+\xdf\x85,\xdd\x85+\xdd\x84+\xde\x85-\xde\x84,\xde\
+\x85,\xde\x84,\xdf\x85+\xdf\x84+\xdd\x85-\xdd\x84\
+,\xde\x85,\xde\x84,\xde\x85+\xde\x86+\xdf\x85-\
+\xdd\x86,\xdd\x85,\xde\x86,\xde\x85+\xde\x86-\xde\
+\x85,\xde\x85,\xdf\x85,\xdd\x85,\xdd\x85+\xde\x85\
+-\xde\x84,\xde\x85,\xde\x84,\xdf\x85,\xdf\x84+\
+\xdd\x85-\xde\x84,\xde\x85,\xde\x84,\xde\x85,\xde\
+\x86+\xdf\x85-\xdf\x86,\xdd\x85,\xde\x86,\xde\x85\
+,\xde\x86-\xde\x85,\xde\x85,\xdf\x85,\xdd\x85,\
+\xdd\x85+\xde\x85-\xde\x85,\xde\x85,\xde\x84,\xde\
+\x85,\xdf\x84+\xdd\x85-\xde\x84,\xde\x85,\xde\x84\
+,\xde\x85,\xde\x86+\xde\x85-\xdf\x86,\xdd\x85,\
+\xde\x86,\xde\x85,\xde\x85+\xde\x85,\xde\x85,\xde\
+\x85,\xdf\x85,\xde\x85,\xde\x85-\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xdf\x85,\xdd\x85-\xde\x84,\
+\xde\x85,\xde\x84,\xde\x85,\xde\x86,\xde\x85-\xdf\
+\x86,\xdd\x85,\xde\x85,\xde\x85,\xde\x85+\xde\x85\
+,\xde\x85,\xde\x85,\xdf\x85,\xde\x85,\xde\x85+\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xdd\
+\x85-\xde\x85,\xde\x85,\xde\x84,\xde\x85,\xde\x86\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\
+\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85\xf8\xdf\x16\xb8\x00\x00\x00\xfftRNS\x00\x01\
+\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\
+\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\
+\x22#$%&'()*+,-./01\
+23456789:;<=>?@A\
+BCDEFGHIJKLMNOPQ\
+RSTUVWXYZ[\x5c]^_`a\
+bcdefghijklmnopq\
+rstuvwxyz{|}~\x7f\x80\x81\
+\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\
+\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\
+\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\
+\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\
+\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\
+\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\
+\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\
+\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xeb\x08\xd9\
+5\x00\x00 \x97IDATx\xda\xed\x9dy\x80\x8f\
+\xd5\xfe\xc7\x9f\x991\xf6m\x0a\xd9\xcb(\x09\x89\x88H\
+\x12\x92\x8aV$\x22\xf5+*j\xda\x10mC\xc9T\
+7.\xb7M\xbb\xa5\xba\xd9Z\xdc\xeaj,\xddH*\
+\x89\xac\x955\xfb\xbe\xaf\xb3|\x7f\xc9u\xb9\xb7\x06s\
+>\xe7y\xce9\xcf\xf3z\xfd_\xf3y\x9f\xcf\xe7\xe5\
+\xfb\xac\xe7\xf1<\xdf8{m\x0c\xc0q\xf0\x03\xc0\x84\
+ \xf8\x01\x08\x82\x1f\x80 \xf8\x01\x08\x82\x1f\x00A\x09\
+\x82\x1f\x80 9S\x15?\x00A\xf0\x03\x10\x04?\x00\
+A\xf0\x03 A\xf0\x03\x10\x04?\x00A\xf0\x03 \
+\x86\x1f\x00\x01\x09\x82\x1f\x80 \xf8\x01\x08\x82\x1f\x00z\
+\x05\xa9\xba\x8e\xc5\x04\x04\xc1\x0f@\x10\xfc\x00\xd0)\x08\
+~\x00\x82\xe0\x07 \x08~\x00\xe8\x15\x04?\x00A\xf0\
+\x03\x10\x04?\x00\xf4\x0ar\x0e~\x00\x82\xe0\x07 \x08\
+~\x00h\x15\x04?\x00A\xf0\x03\x10\x04?\x00\xf4\x0a\
+\x82\x1f\x80 \xf8\x01\x08\x82\x1f\x00z\x05\xa9\xb9\x89\xa5\
+\x03\x04\xc1\x0f@\x10\xfc\x00\xd0)\x08~\x00\x82\xe0\x07\
+\x80\x8a \xf8\x01\x08\x82\x1f\x00*\x82\x9c\x87\x1f\x80 \
+\xf8\x01\xa0 \x08~\x00\x82\xe0\x07\x80\x8a \xf8\x01\x08\
+\x82\x1f\x00*\x82\xe0\x07 \x08~\x00\xa8\x08\x82\x1f\x80\
+ \xf8\x01\xa0\x22\x08~\x00\x82\xe0\x07\x80\x8a \xf8\x01\
+\x08\x82\x1f\x00*\x82\xe0\x07 H\xce\xd4\xc2\x0f@\x90\
+\x9c\xfd\xd8\xcc\x1a\x01\x82\xe0\x07@\xee\x05\xc1\x0f@\x10\
+\xfc\x00P\x11\x04?\x00A\xf0\x03@E\x10\xfc\x00\x88\
+\xe1\x07\x80\x82 \xf8\x01\x90\xb3 \xf8\x01\x90\xb3 \xf8\
+\x01\x90\xb3 \xf8\x01\x90\xb3 \xf8\x01\x90\xb3 \xf8\x01\
+\x90\xb3 \xf8\x01\x90\xb3 \xf8\x01\x90\xb3 \xf8\x01\x90\
+\xb3 \xf8\x01\x90\xb3 \xf8\x01\x90\xb3 \xb5\xf1\x03 \
+GA\xf0\x03 gA\xf0\x03 gA\xf0\x03 g\
+A\xf0\x03 gA\xf0\x03 gAjoa)\x00\
+r\x12\x04?\x00r\x16\x04?\x00r\x16\xa4\xeeV\xd6\
+\xe1x\xec^\xbbx\xd6\xacY\x93\xd2\xd3?\x1b}\x88\
+\x09\xe9\xe9\xe9\xdf\xce\x9a\xb5`\xd5\x0e\x96&\x12\x82\xe0\
+\xc7\x1f\xd9\xb1p\xea\xa8A\x0ftl\xd5\xb8VrR\
+B\xce[#%\x9d~n\xc3\x96\xedS\xd2\x86O\x9c\
+\xc7&\xf8a\x15\x04?\x8e\xfd\xb1\xf8a\xcc\xd3\xb7]\
+\x5c\xb9\xa0\x97{\xf2Vh\xd0\xe1\x89Q3\xb9\x1a\x18\
+2A\xeanc\x11\x0e\xb1m\xea\xa0\xdb/)\xe7\xc9\
+9\xa5^\x87''\xacfA\xc3\x22\x08~\xc4\xd6~\
+\xf2\xd4\x0d\xc9\x9e^J]\xfe\xf0\xe8_\xb2Y[\xf7\
+\x05\x89x\xfe\x85\xaf\xdcT\xd6\xf3\x8bb\xad\x9e\x9d\x99\
+\xc1\x8c!\x88\xa3,\x1d\xd6\xb9\x82\xe77\x85\x9a\xa7\xa6\
+\xefg\xce\x10\xc41\xf6\xa5\xa7\x94\xf7\x82\xa2`\xeba\
+\xeb\x185\x04q\x86\xcd\xa3;\x17\xf5\x82%\xa1N\xea\
+\x02\xa6\x0dA\x1c`\xdb+\x8d\x13<#\x9c\xd3o\x19\
+\x03\x87 V\x93\x95\xde\xb9\x90g\x90:\xc3\xb8\xfd\x8e\
+ \xd62\xff\xa12\x9ei\x0a\xde\xfcy\x16c\x87 \
+6\xfex\xb4\xf6\xec\xa0r\xdav\x06\x0fA\xecb\xd7\
+\xb0s<{(\x9a\xb2\x92\xd1C\x10{\xf8\xb5Wq\
+\xcf.\x12\xdb\x7f\xcb\xf0!\x88\x1dl\xec\x9d\xdf\xb3\x90\
+\xe6\xb3\x18?\x041\xcf\xd6\xd4\x22\x9e\x9d\xc4\xb5]\xcc\
+\x00\x22\x88Yv\xa7%y\xf6\x12\xdfv)#\x88 \
+\xe6\xc8~\xfd4\xcfn\xf2\xf5\xde\xcd\x10\x22\x88!\xe6\
+^\xe4\xd9O\xb9\x11L!\x82\x98`Oj^\xcf\x09\
+Z/g\x0e\x11$p\xc6W\xf0\x5c\xa1`\xdaA&\
+\x11A\x02eGG\xcf%\xea\xfe\xc4(\x22H\x80|\
+\x9d\xec\xb9E\x81!\xcc\x22\x82\x04EFZ\xa2\xe7\x1c\
+\xd7\xb3\x1f\x0a\x82\x04\xc3\xf2\x86\x9e\x8bT\x98\xca8\x22\
+H\x00L,\xee\xb9I\xc2\xe0`\x17j\xdfV5\xb2\
+\x11\xc4e\x86%z\xce\xf2\x7f\x07\x82\x5c\xa9g\x15\xab\
+\xdc\x80 \x0e\x9f~\xf4\xf0\x5c\xe6\xa2\x0d\x08\x82 >\
+\xb2\xa5\xa9\xe76\xc9\xf3\x11\x04A|\xe3\x973=\xd7\
+):\x05A\x10\xc4'\x16\x97\xf3\xdc'\xdfG\x08\x82\
+ \xbe\xb0\xb0\x8c\x17\x06\xf2\x8eG\x10\x04\xf1\x81\xd9%\
+\xbcp\x900\x12A\x10D;\xdf\x9d\xe2\x85\x85\x84\xb7\
+\x10\x04At\xfbQ\xc4\x0b\x0f\xf1\xa3\x11\x04A\xb4\xb2\
+\xf44/L\xe4MG\x10\x04\xd1\xc8\xa6*^\xb8(\
+:\x07A\x10D\x1b{\x1axa\xa3\xecJ\x04A\x10\
+Md^\xe3\x85\x8fj[\x11\x04A\xf4\xd0\xcd\x0b#\
+\xcd3\x11\x04At\xf0\x8e\x17N\x1eC\x10\x04\xd1\xc0\
+\xbc\x82!\x15$\xfeS\x04A\x101\xbb\xce\xf1\xc2J\
+\xd22\x04A\x10)\x1d\xbd\xf0Ro?\x82 \x88\x8c\
+!^\x98\xb9\x17A\x10D\xc4\xa2\xfc\xa1\x16$n\x22\
+\x82 \x88\x80\xccz^\xb89c'\x82 \x88:\x03\
+\xbd\xb0\xd3\x1dA\x10\x84\x03\xac\xe3\x1cd}\x8e \x08\
+b\xfb\x01V\xe1\x0a5\x1b_\xd3\xb6}\xd7\xae]{\
+\xdd\xdd\xb5k\xe7\xb6m\x9a\xd5IN\x8a\x0b\xe6o'\
+\xefF\x10\x04Q\xe3\x19\x9fg3O\x95\xebR\x06\x8d\
+\x9e\xb1:\xe3\xcf\xff\xfc\xc69\x1f\xbf\xd8\xa7c\x1d\xbf\
+\xefS\xde\x87 \x08\xa2\xc4\xaf\x85\xfc\x9b\xca\x22\xcd\xfa\
+\xbc;\xe7\xe4\xeeBd-\xfdx`\x9b\xb2>j:\
+\x1fA\x10D\x85\xf6>M\xe4i\x9d^\x9a\x93\xeb\x07\
+\x05W\xbe{o5\x9f\xeai\x86 \x08\xa2\xc0t?\
+N\x02\xe2\xeb\xf4\x9e\x9e\xa5Z\xd1\xf2am}y\xf1\
+w\x1c\x82 H\xee\xcf\xd0\xcf\xd3?\x89\xd5\xd3\xd6\x0a\
+\xab\xda7\xa1\xad\xfe\xbd\x81+\xeeA\x10\x04\xc9-/\
+\xeb\x1e\xc3\xd2}\x17h)l\xc3\xd0\x9a\xbaK\xeb\x8f\
+ \x08\x92K\xb6h\xde\x05\xab\xd6\xdb\x1a\x1f\x0c\x9c\xdc\
+:^kq\x05W!\x08\x82\xe4\x8e^Z'\xb0\xc5\
+T\xcd\xe5\xfd\xdcM\xeb\x91V7\x04A\x90\x5c\xb1N\
+\xe7\xdd\x87\x0b'\xfbP\xe1\x8a\xae\x09\xfa*L\x5c\x8a\
+ \x08\x92\x1bR\xf4\x0d_\xb5\x09>\xd58\xb7\xa5\xbe\
+\x22oE\x10\x04\xc9\x05k\x0a\xe8\x9a\xbc\x02\xa9>\xbe\
+\x944\xa1\xbc\xae2\x13\x16#\x08\x82\x9c<\xda\xf61\
+i\xb2\xc8\xd7:\xb7\xa7\xe8:\xce\xba\x19A\x10\xe4\xe4\
+\x8f\xef\xf3\xea\x99\xba\xfcC|\xff \xe5\x14M\x0f\xa1\
+$,D\x10\x049Yn\xd53tU\xe7\x06P\xeb\
+\xfa\x16z\x8a\xed\x88 \x08r\xb2g z~@:\
+\xed\x0e\xa4\xda\xac\x01Zn\x8a$\xfe\x8a \x08rr\
+<\xac\xe5M\xa4\xd4\xc0\xea\x1d\xaf\xe5\x9atO\x04A\
+\x90\x93b\xcf\xa9\x1a\xc6-\xef\xc8\x00+\x9eYJC\
+\xc5E\xb7#\x08\x82\x9c\x0c\x7f\xd3\xf1\xbe\xc7\x17\x81\x96\
+\xbc\xe4\x0c\x0d5\x0fF\x10\x049\x092+\xcbg\xad\
+\xd0\xd4\x80\x8b^\xa9\xc1\x90\xd33\x10\x04AN\xccX\
+\x0d\x0f\xffM\x0d\xbc\xea\x15\xa7\xcb\xcb\x1e\x8d \x08r\
+b\x1a\xc9o\x7f|a\xa0\xec\x9f\xe4\xe7!\x8d\x10\x04\
+AN\xc8B\xf9\xf5\xabQF\x0a\xff*\x9f\xb8\xf2\x85\
+\x08\x82 'B\xfe\x98b\xaa\xa1\xca\xdf\x17\xbf#\xdc\
+\x13A\x10\xe4\x04\xec\x13_\xe3m\x9fm\xaa\xf6\xbe\xd2\
+\xd2K\x1d@\x10\x049>\xefJ\x87\xec\xac]\xc6j\
+\xcfj*-~,\x82 \xc8\xf1\xb9T8b\xf9f\
+\x1b,~\xb5\xf4\xe7\xef\x0a\x04A\x90\xe3\xb2Tz\x1c\
+?\xd8h\xf9\xe3\x85\xd5\xc7\xaf@\x10\x049\x1e\xd2\xc7\
+\xb0Zd\x9b\xad_\xfa\x1cr\x7f\x04A\x90\xe3\x90-\
+\xbc\xddV`\x89\xe1\x00[J\x0a\x9f\xd0G\x10\x049\
+\x0e\xd3\x84\xff\x00?i<\xc1k\xc2\x04\xf3\x10\x04A\
+r\xa6\x87\xf0\x0a\xd6>\xe3\x09\xb2\x1a\xc8\x22<\x8a \
+\x08\x92#\x99ed\xd3\xf5O\x0b2\xcc\x92]f8\
+\x0bA\x10$G&\xcb\xfc\xb8\xc4\x8a\x10md!f\
+#\x08\x82\xe4DW\xd9l}mE\x88\xc5yD!\
+z#\x08\x82\xe4@\x86\xec\x81\xd8\xeb,\x89\xd1I\x94\
+\xa2R6\x82 \xc8\x9f3Qv\x93m\xbe%1\x96\
+\xc8\xf6\xca\xfa\x1eA\x10\xc4\x8fkX\xd7X\x93\xa3\x9d\
+\x1d\x97\xaa\x11$l\x82\xc8\xde\xb5\x9dnM\x8e\xefD\
+9.D\x10\x04\xf9S\xe6\x8b\xe6\xaa\xbeEI.\x16\
+\x1d*n@\x10\x04\xf93d_}\xfe\xd0\xa2$\x1f\
+\x8a\x92\x8c@\x10\x04\xf93\x1aK\xa6\xaab\xa6EI\
+\xb2D\x8f\x94\xb5G\x10\x04\xf9\x13\xb6\x8a\xee\x1f\x0c\xb0\
+*K\xaa$JR\x06\x82 \xc8\x1f\x11\xbdK\x98g\
+\x8dUYV\x89\xae\xf4~\x89 \x08\xf2GD\xf7\xd7\
+\xae\xb7,\xccU\x920}\x11\x04A\xfeH9\xd7\x1f\
+S<\x96\x0f$a\x1a \x08\x82\xfc\x81\x9f$#U\
+:\xd3\xb24\x07N\x91\x1c/\xeeD\x10\x04\xf9_\x86\
+I\x04\xb9\xcf\xba8\xb7I\xe2LD\x10\x04\xf9_n\
+\x92L\xd47\xd6\xc5\x99h\xfe$\x04AB%\x88\xe4\
+[\x7f\x95\xb3\xad\x8b\x93y\x9a OC\x04A\x10\x9d\
+\xa7 }-\x0ct\x97 O\xe2.\x04A\x10\x8d\xa7\
+ \xdfY\x18\xe8\x9f~_\x94\x9b\xd1\xf5\x04\xd4W\xfc\
+\xe3\x9d\xbaja/\x82\xd8r\x0aR.\xdb\xc2@\xfb\
+\x0b\x0b\x12\xf59\x89?\xf0\xb6g7\xdb\x11D'\xe5\
+\x05\xad\xe8fe\xa2\xeb\x04\x89\x9a \x08\x82\xfc\x17k\
+$\xad\xf8\xd4\xcaHo\x08\x12\x15\xceD\x10\x049\x96\
+q\x92i\xdage\xa4\x0d\x92\xcf\xa7\xcfG\x10\x049\
+\x16\xc9\x9e\xbc\xad,\xcdT[\x90\xe9M\x04A\x90c\
+i\x22\xe8\xc4_-\xcd\xf4\xa0 \xd3]\x08\x82 \xc7\
+\x90UT\xd0\x89y\x96\x86\xfa\x87 S\x1d\x04A\x90\
+c\x98'hD\xa9lKC\xedL\x14\xdc*\xdc\x8b\
+ \x08r\x94\xd7\x05\x8d\xe8`m*\xc9>\xd63\x10\
+\x04A\x8e\xd2M\xd0\x88\xd7\xadM%\xf9\xa8\xe7\x10\x04\
+A\x90\xa3\xd4\x154b\xb1\xb5\xa9>\x11\xa4\xfa?\x04\
+A\x90\xa3\xe7\xe8\x85\xd4\xfbpj\xb6\xb5\xb1\xb6\x0a\xbe\
+\x84P\x0fA\x10\xe4?H\x1e\xe5mmq\xae\xb3\xd5\
+c\x15\xcaB\x10\x049\xc2XA\x1f\x9e\xb68W\x17\
+A\xae%\x08\x82 GxB\xd0\x87/,\xce\xf5\x8a\
+ \xd7\x07\x08\x82 G\xb8A\xbd\x0d\x09\xbb-\xce5\
+G0_\xfd\x10\x04A\x8ep\x96z\x1bj\xd8\x9c+\
+#\xbfz\xb0\xb6\x08\x82 \xfff\x8f\xe0\xb9\xd7Na\
+\xbd|]\x15A\x10\xe4\xdfH\xbe\xa7\xf1\xbc\xd5\xc9n\
+\x17\x1c;\xeeC\x10\x04\x91\xb7z\x8a\xd5\xc9^\xf0\xf1\
+\x19L\x04\x89\x8c \x8f\xa8w!n\xab\xd5\xc9\xbe\xf2\
+\xf12\x16\x82DF\x90\x1b\xd5\xbbP\xc9\xeed\xbb\x04\
+gW\xcf\x22\x08\x82\x1c\xe6\xfcp\xdeG?D%\xf5\
+h\xdd\x10\x04A\x0eSL\xbd\x0b\xbd-\x8fv\xa5z\
+\xb4\xa6\x08\x82 \xbf\xb3^\xd0\x85\xb7-\xcf\xf6\x80z\
+\xb4\x8a\x08\x82 \xbf3M\xd0\x85o,\xcf\xf6\xaaz\
+\xb4\xf8\xbd\x08\x82 \x87xSp\x11kG\x88\xe5\x9f\
+\x8f \x08r\x08\xc1\x8bw\x15l\xcf\xb6Y0a\x1f\
+\x22\x08\x82\x1c\xa2\x9dz\x13\x9a[\x1f\xae\x84o\x0f\x09\
+ HT\x04\xb9\xc0\xbfK\xa1\xe6\xa9\xa7\x1e.\x05A\
+\x10\xe4\x10\xa5\xd5\x9b\xf0\x8c\xf5\xe1\xda\xab\x87\xbb\x1eA\
+\x10\xe47\x0e\x0a\xee6\x8f\xb1>]\x1f\xf5p\x17 \
+\x08\x82\xfc\xc6rA\x13f[\x9fNp\x9d\xb7\x0c\x82\
+ \xc8o|)h\xc26\xeb\xd3M\x12\xdc\x089\x80\
+ \x08\x12\x8b\xbd\xa3\xde\x83S\xedO\xb7L0b\xcb\
+\x11\x04Ab\xb1g\xd4{p\xbe\xfd\xe92\x12\xd4\xe3\
+}\x89 \x08\x12\x8b\xf5P\xef\xc15\x0et\xa0\x9cz\
+\xbcw\x10\x04Ab\xb1k\xd4{\xd0\xdd\x81\x0e\x08n\
+\x84\xa4!\x08\x82\x8866x\xda\x81\x0e\x08\xbe\xe5y\
+\x0f\x82 \x88\xe8\x18d\x84\x03\x1d\xb8G=\xde\x8d\x08\
+\x82 \xb1\xec\xbc\xea=\x98\xe2@\x07\xd2\xd4\xe3]\x8a\
+ \x08\x12\xdb&\xe8\xc1\xcf\x0et`\xa4z\xbc\x1a\x08\
+\x82 \xb1\x9f\x05=\xd8\xe5@\x07&\xab\xc7+\x85 \
+\x08\x22y\xa5\xa8\xa0\x0b\x1d\x10|~1!\x13A\x10\
+d\x9cz\x0b\xcep\xa1\x03\x1b\x043\xb6\x09A\x10\xe4\
+e\xf5\x16\xd4s\xa1\x03\x99\x82[\xe9\x0b\x10\x04A\xfa\
+\xab\xb7\xa0\x95\x13-(\xa9\x1e\xf0\x0b\x04A\x10\xc1}\
+\x82[\x9dhA5\xf5\x80\xa3\x8f\xf7\xff\xdd<\xeb\x04\
+\xa4(\xfe\xd5\xcfgi!\x13A\xb4 x\xe5\xae\xb7\
+\x13-h\xa2\x1e\xf0E\xd1\x1f~V\xf1\xafn\x88E\
+\x08\xfb\x05\xb9L}~\xfe\xe2D\x0b\xda\xaa\x07|\x0a\
+A\x10D\xb0e\xc3\x9bN\xb4\xe0N\xf5\x80\xbd\x10\x04\
+A\xaa\xa8\xcf\xcfx'Z\xf0\xb0z\xc0n\x08\x82 \
+\xa7\xa9\xcf\xcfT'Z0P=`{\x04A\x10\xc1\
+w.\x7fp\xa2\x05\x82\x1b=W H\xe4\x059 \
+\xb8\xd2\xbe\xc2\x89\x16\xbc\xa7\x1e\xb0!\x82D^\x90\x8d\
+\xa1\xbf\x15\xf5\x99z\xc0\xea\x08\x12yA\x96\xa8\x8fO\
+|\x96\x13-\xf8Z=ay\x04\x89\xbc \xdf\xab\x8f\
+O17Z\xb0H=a\x11\x04\x89\xbc S\xd4\xc7\
+\xa7\x9c\x1b-X\xa5\x9e0.\x13A\xa2.\xc8\x07\xea\
+\xe3S\xc5\x8d\x16l5u\x96\x85 a\x10d\x94\xfa\
+\xf4\xd4v\xa3\x05\x92\xebt\xeb\x10$\xea\x82\xbc\xa6>\
+=\x17;\xd2\x83D\xf5\x88\xcb\x10$\xea\x82\xfcM}\
+zZ:\xd2\x83\xe2>\xbd1\x85 Q\x10\xe4Y\xf5\
+\xe9\xb9\xc1\x91\x1e\x086\xfe\xfa\x1eA\xa2.H?\xf5\
+\xe9\xe9\xecH\x0f\x04\x8fcNG\x90\xa8\x0b\x22\xf8\x02\
+S7Gzp\xbez\xc4t\x04\x89\xba \xf7\xa9O\
+\xcf=\x8e\xf4\xa0\xbez\xc4\x09\x08\x12uA\x04\xaf\x13\
+\xdd\xefH\x0f.\xf2\xe9\xa5t\x04\x89\x82 \xb7\xa8O\
+OOGzp\x89z\xc4\xe1\x08\x12uA\xda\xa9O\
+O\x1fGz\xd0\x5c=\xe20\x04\x89\xba W\xabO\
+\xcfc\x8e\xf4\xa0\xa5z\xc4\xbf\x22H\xd4\x05\xb9B}\
+z\xfa9\xd2\x83V\xea\x11\x9fG\x90\xa8\x0b\xd2B}\
+z\x068\xd2\x83k\xd5#>\x8b Q\x17\xa4\x99\xa1\
+\xe9\x09\x10\xc1\xc6X\x03\x11$\xea\x824Q\x9f\x9eA\
+\x8e\xf4\xe0&\xf5\x88O!H\xd4\x05i\xac>=C\
+\x1d\xe9A'C\xa7Y\x08\x12\x06A\x04w\xd1^r\
+\xa4\x07\xb7\xaaG|\x1cA\xa2.\xc8\x85\xea\xd3\xf3\x9a\
+#=\xb8C=\xe2#\x08\x12uA\xea\xa9O\xcf[\
+\x8e\xf4\xe0nC\xf7B\x11$\x0c\x82\xd4Q\x9f\x9e\x91\
+\x8e\xf4\xe0^\xf5\x88\xbd\x10$\xea\x82\xd4R\x9f\x9e\xbf\
+;\xd2\x83\x07\xd4#>\x88 Q\x17\xa4\xa6\xfa\xf4\x8c\
+u\xa4\x07\xbd\xd4#\xde\x87 Q\x17\xa4\x86\xfa\xf4\x8c\
+s\xa4\x07}\xd5#\xa6 \x08\xbf \xca\xbc\xefH\x0f\
+\x1e\xe6\x10\x0bA\x94\xa9\xad>=\xef8\xd2\x83\x87\xd4\
+#\xf6F\x90\xa8\x0bR\xd7\xd0\xdbD\x01\x22x\xab\xb8\
+/\x82D]\x10\xc1}\x907\x1c\xe9A\x0f\xee\xa4#\
+\x882\x0d\x0c\xbdn\x17 \x82\xd7\xeey\x16+\xf2\x82\
+4R\x9f\x9e\x17\x1d\xe9\xc1\xed<\xcd\x8b \xca\x08\x9e\
+\xe6\x1d\xe2H\x0f\xba\xa8GLC\x90\xa8\x0br\xa9\xfa\
+\xf4\xfc\xc5\x91\x1e\xdcl(\x22\x82\x84A\x90\xe6\x86\xfe\
+y\x0d\x90\xf6\xea\x11\x07#H\xd4\x05ia\xe8\x00=\
+@\xda\xa8G\xfc\x1b\x82D]\x90+\xd5\xa7'\xd5\x91\
+\x1e\x086mx\x09A\xa2.\x88`z\x5c\xd9\x17\xeb\
+*\xf5\x88\xaf\x22H\xd4\x05\x11\x1c\xa0\xbb\xb2\xb3\xe2\xe5\
+\xea\x11\xdfD\x90\xa8\x0b\x22xa\xdb\x95\xbdy\x05;\
+\x1b\xb17o\xe4\x05\x11\xbc\x8fz\x9f#=\x10l^\
+\xfd\x1e\x82D]\x10\xc1\xebv\xae|\x1fD\xb0q\xcb\
+\xc7\x08\x12uA\x1eQ\x9f\x9e\xdb\x1d\xe9\x81\xe0\x03:\
+\x93\x11$\xea\x82<\xa9>=\x1d\x1c\xe9Au\xf5\x88\
+3\x11$\xea\x82<\xa7>=\xd78\xd2\x83\x8a\xea\x11\
+\xe7!H\xd4\x05yA}z\x9a;\xd2\x03\xc1w\xd2\
+\x97!H\xd4\x05yC}z\x1a8\xd2\x83<\xea\x11\
+7 H\xd4\x05yW}zj\xba\xd1\x82\xbd\xea\x09\
+\xbd\xdd\x08\x12uA>R\x9f\x9e\xcan\xb4`\x83z\
+\xc2\xb8l\x04\x89\xba _\xa8\x8fOi7Z\xb0D\
+=a\xa1\x18\x82D]\x90\x1f\xd4\xc7\xa7\xa0\x1b-\x10\
+$,\x85 \x91\x17d\xa9\xe0\x08}\xbf\x13-\xf8R\
+=`%\x04\x89\xbc \x9b=C\xd7x\x02\xe3\x1f\xea\
+\x01k H\xe4\x05\xc9\x10\x08\xf2\x93\x13-xO=\
+`}\x04\x89\xbc \xb1B\xea\xf3\xf3\x8d\x13-xM\
+=`S\x04A\x90\xd2\xea\xf33\xd1\x89\x16<\xaf\x1e\
+\xb0\x1d\x82 \xc8\xd9\xea\xf3\xe3\xc6\xf6\xee\xa9\xea\x01\xef\
+B\x10\x04\x11<\x0c\xee\xc6\xde\xa3\x0f\xaa\x07|\x04A\
+\x10D\xb0\xef\xcf\x00'Z \xd8yt0\x82 H\
+\x87\xb0\xbfs{\x8dz\xc0\x91\x08\x82 )a\x7fc\
+J\xb0\x7f\xfd\xa7\x08\x82 O\xa9\xcf\xcfeN\xb4\xe0\
+L\xf5\x80\xdf\x22\x08\x82\xbc\xaa>?\xb5\x9chA1\
+\xf5\x80K\x11\x04A>P\x9f\x9f\xb2.t\xe0@\x9c\
+z\xc0\xed\x08\x82 _\xa9\xcfO\xdel\x07:\xb0F\
+=_\x9el\x04A\x90\x9f\x05\x0fcmv\xa0\x03s\
+\xd4\xe3\x9d\x16C\x10\x04\xd9.\x10d\x8e\x03\x1d\xf8D\
+=^u\x04A\x90X,\x9f\xfa\x04}\xe2@\x07\x04\
+\xcf*6F\x10\x04\x89\xc5\xca\x85\xfbY\x93~\xea\xf1\
+\xda \x08\x82\xc4b\x17\xa8O\xd0\xe3\x0et\xe0\x0e\xf5\
+x\x0f \x08\x82\xc4b\xd7\xa9O\xd0m\x0et@\xf0\
+\x09\xadA\x08\x82 \xb1\xd8\xbd\xea\x13t\xb9\x03\x1d8\
+O=\xde\x18\x04A\x10\xf5>\xfeFU\x07:PJ\
+=\xde\x0c\x04A\x10\xd1;\xdb\xf9\xb3\xacO\xb7Gp\
+#}5\x82 H,6\xcd36B\x010_p\
+#=\x13A\x10$\x16[!\x10d\x9a\xf5\xe9&\xa8\
+\x87\xab\x18C\x10\x04\x89\xc5\x0e&\xa8\xcf\xd0p\xeb\xd3\
+\x0dU\x0f\xd7\x10A\x10\xe4\x10e\xd5g(\xd5\xfap\
+\xf7\xab\x87\xbb\x11A\x10\xe4\x10\xf5\xd4g\xa8\x93\xf5\xe1\
+\xae5v\x9f\x10A\xc2\x22H{\xf5\x19\xaag}\xb8\
+\x9a\xa6\xb6l@\x90\xd0\x08\xf2\x98\xfa\x0c\x15\xb5\xfd\x8d\
+\x90\xac\x02\xc6\xee\x13\x22HX\x04\x19\x1e\xe2\xeb\xbc\x92\
+\xcd\xeb\x7f@\x10\x049\x84\xe0\x9dB\xefs\xcb\xb3\x09\
+\xde\x06\x89\xdb\x85 \x08r\x88\x8d\x02A\x86X\x9eM\
+\xb01o\x85\x18\x82 \xc8\xef\x08\xbe\x93|\xa7\xe5\xd1\
+\xba\xaaGk\x8e \x08r\x98\xba\xeaS\xd4\xc8\xf2h\
+\x8d\xd5\xa3uG\x10\x049\x8c\xe0:oa\xbb\x1fW\
+\xccNR\x8f6\x14A\x10\xe40\x82\xeb\xbc\xde\xcfV\
+'[.H6\x11A\x10\xe40\xa3\x04cd\xf77\
+B>\x14$[\x81 \x08r\x18\xc1\xd6Q^\x1f\xab\
+\x93=\xa1\x1e\xac@\x16\x82 \xc8a\xf6'\xaa\xcfQ\
+K\xab\x93\x09>}p^\x0cA\x10\xe4\xdfTW\x9f\
+\xa3\x92V?lr\x86z\xb0v\x08\x82 G\xb81\
+\xa4g\xe9\x1b\x04\xb9\x1eC\x10\x049\x82\xe0\x1b!V\
+\xbf3\xf5\x91 \xd7h\x04A\x10\x1d\x83d\xf3\xbd\xf4\
+\x87\x05\xb9\x96\x22\x08\x82\x1ca\x99`\x90jZ\x9c\xeb\
+\x12\xf5X\xc5\xb3\x11\x04A\x8e\x90]D}\x92\x12v\
+X\x1b+\xa3\xb0z\xacKc\x08\x82 \xff\xa1\xa1\xe0\
+'\xc4\xde-\xdeg\x0bR=\x88 \x08r\x94\x14\xb3\
+\xa3\xe4\x13\x83\x04\xa9\xdeC\x10\x049\xca;\x82Q\xb2\
+\xf7S\x9e\xad\x04\xa9~B\x10\x049\xca\x12\xc1(\xc5\
+m\xb4\xf5\x14\xa4\xa8\xe0e\xfb,\x04A\x90c\xce\xd2\
+K\x18\xbdc\xe0\x0f_\x0b2]\x12C\x10\x049\x86\
++\x04\xc3t\x87\xa5\x99\x06\x082\xdd\x87 \x08r,\
+\x82\xc7^\xbd2\x96>\x8e%\xb8\x0b\xe2\x8d4(\xc8\
+z\x04\xb1\x0f\xc1\xee\x1f\x9e\xf7\x8d\x95\x91\xb6\xe6\x11D\
+ZlP\x90\xb5\x08b\x1f\x9b\x05\x9f\xd1\xf0\x1e\xb52\
+\x92\xe45\xb0\xd2\xd9\x06\x05Y\x8d \x16R%tO\
+\x9b\x08\xde\xb4\x17\xef[-\x12d%\x82XHW\xc9\
+1\xd62\x0b\x03\x1d\x14lf\xe4\xbdlR\x90\xe5\x08\
+b!\xefJ\x04y\xda\xc2@\xe9\x92@\x8bL\x0a\xb2\
+\x14A,d\xadd\x9ejX\x18\xe86\xd3\xa7 \xb1\
+\xe7B\xb9QLT\x05\x89U\x95\x182\xd7\xba8\xfb\
+%GX\xed\xb5\x940\xd8\xe0\x154\x04\xd1N7\x89\
+ \xf6\xedm2^\x12\xe7\x15-%\xbc\xa0\xf8\xd7\x7f\
+D\x10\x1b\xf9\xbbd\xa2*f\xda\x16\xa7\x9d\xf1S\x90\
+\xd8\xb0P\xddV\x8a\xbc \xeb$wB\xbc\x7fX\x96\
+f\x8b\xe0\xc39^\x19=5\xbc\xa9\xf8\xe7\xff\x85 \
+VRM\x22H+\xcb\xc2\x0c\xf6\x8c\x9f\x82\xc4F(\
+\xfe\xf9\x89\x08b%=%3\x15\xbf<D\xb6\xbf\xa9\
+\xa7\x06\xd5+\xe7\x1f#\x88\x95|!\x99)\xcb\x1e7\
+\x11e\x89[\xa7\xa7\x88\xb1\x8a\x7f\xff}\x04\xb1\x92\x0c\
+\xc9\x85Q\xaf\xe4\x1e\x9b\xb2Hv\xc2\xf3\xeaj*B\
+u\xe7\xec\xe1\x08b'\xedE?!C-J\xb2L\
+\xf2 \xaf\x97\xaa\xa9\x0a\xd5'\xa4_@\x10;\x19)\
+\x12\xa4\xc2A{\x92\xdc%J\xf2\x9d\xa6*&*\xfe\
+\xfd\x01\x08b'[\x12Ds5\xc2\x9a \x1b$\xd7\
+x\xbdr\xba\xde\xff\x9a\xa2X@/\x04\xb1\x94\x8bD\
+\x82T\xcd\xb0%G_Q\x8e\x1e\xba\xca\x98\xa6X@\
+7\x04\xb1\x944\xd1`y\xafZ\x12c}aQ\x8c\
+\xa9\xba\xea\x98\xa9X\xc0M\x08b)KE7\xd3\xbd\
+\xb2\x96\x5c\xc8\xea.JQJ\xdbS3\x0b\x14+\xb8\
+\x12Al\xa5\x9e\xec'\xc4\x8e\xb3\xcb_\x12E!\xba\
+j+d\x8db\x05\x17 \x88\xad\x0c\x92\x09Rd\x95\
+\x0d!\xdazv\x1ca\xc5\xf6\xa8^\x0fD\x10[Y\
+\x13/\x1b.\x1b\x0e\x0e>\x95E8]\xe3\x87\xdf\xf3\
+\xaa\x95\x90/\x1bAl\xa5\xb1l\xba\xbc\xb1\xc6\x13\xec\
+\xae$K\xf0\x88\xc6ZJ*\xd6\xb0\x15Al\xe5E\
+\xa1 e\x8c\xf7\xf6\x1ea\x82E\x1ak9K\xb1\x86\
+\x85\x08b+\x1b\xf2\x08\xe7\xebZ\xc3\x87\x07\x93\x84\x07\
+\x89\xf5u\x16s\x81b\x11\x93\x11\xc4ZZ\x09\x05\xf1\
+\x06\x1b-\x7f}\x19a\xf9o\xe8\xac\xe62\xc5\x22^\
+G\x10k\xf9H*H\xe2W\x06\xab\xcfl&\xac\xbe\
+\xd8n\x1b\xae\xa7\xf5E\x10k\xc9('5\xa4\x82\xc1\
+\x9d3\x1f\x92\x16\xdfCk9\xb7\x9b}\xa3\x11A\xfc\
+\xe0Q\xe9\x8cy\xd5\x8d\x9d\xa8\xbf,\xae\xfdG+|\
+\xad\x87 \xf6\xb2\x22^<eM\x0f\x98)}\xac\xb8\
+\xf4K\xf4\x16\xf4\x94b\x19\xc5\xb3\x11\xc4^Z\x8a\x05\
+\xf1\xda\x18y5dJ~q\xe1\x1f\xe9\xadHu\xdf\
+\x9f(\xed\xce\xeb\x9e \xe3\xe4\x82xW\xed\x0b\xbe\xee\
+\xcf\x0a\x88\xcb\xae\x92\xa5\xb7\xa4\x8fU\x0b\x19\x8f \xf6\
+r\xb0\xa2\x06CZ\x04\xfe`\xef\xb8\xbc\xf2\xaa_\xd6\
+\x5c\xd3w\xaa\x85<\x8e \x16\xf3\xbc\x06A\xbc\x86\x01\
+\x7fG\xec\x8d<\xf2\x9a\xb5\xef;\xb1Z\xf9\x17\x18A\
+,fgq\x1d\x86\x94\xfb6\xc0\x923z\xeb(y\
+\xa0\xf6\xb2T\xdfa.r\x10A,F\xcb\xb4y\x05\
+\xdf\x0b\xac\xe0M\x97\xea(\xf8\x94\x9d\xda\x0b+\xadZ\
+\xcbW\x08b1k\xf2j1\xc4\xbb}g0\xf5N\
+\xae\xa8\xa5\xdc\xfe\xfa+\xab\xafZK?\x04\xb1\x99.\
+z\x04\xf1\x92\xa7\x05P\xec\xde{\xe3\xb4\x14[|\xbb\
+\xfe\xda\x94w\x1a\xab\x85 63/N\x93!\x09\x0f\
+\xec\xf0\xbb\xd6igk\xaa5\xcd\x87\xe2\xfa(W\xf3\
+\x03\x82\xd8L\x1bO\x17\xa5\xdf\xf6\xf5\xae\xf0\xaf7\xe9\
+r\xb9\xfc^\x1f\xcaS\xbeS\xe8\xa5 \x88\xcd,L\
+\xd0f\x88w\xe1t\xdf\xca\xdc\xdd\xaf\xa0\xb62\xdf\xf0\
+\xa3\xc0\xcf\x95\xcb)\xbc\x06Al\xe6\x16O#\xcd\xbf\
+\xf4\xa5\xc6\x1d\x03J\xe8\xab\xb1\x86/\x9f\xc8Z\xa6^\
+Pg\x04\xb1\x99\xe5yu\x1a\xe25\x99\x98\xa5\xbb\xc2\
+\x8dO$\xe9\xac0\xdd\x97e\xccR\xff\x85\x8b\xff\x0c\
+Al\xa6\xbb\xa7\x97\xcai\x1bu\x967\xabk\x01\xad\
+\xe5\xdd\xe0\xd32\xd6R/\xa9\xc8l\x04\xb1\x98\xb5\x05\
+5\x1b\xe2\xe5\xef8a\xbf\xa6\x03\x97\xb4\xb35\xd7V\
+p\x85O\xcbx\x93\xa0\xa8\xb2\xb3\x11\xc4b\x1e\xf5\xf4\
+S\xbc\xb3\xdc\x91%\x03\xeb\xe8/\xac\xbf_\xab\xd8O\
+RU\x817\x10\xc4^\xf6T\xf4\xfc\xa0`\xcb\xbf\xcc\
+U\xbe\xf0\xbbe\xdc]U\xfc(\xaa\xda~\xbfVQ\
+\xf8\xee\xc0\xb5\x0b\x10\xc4Z\xc6y~q\xdauOO\
+\xca\xedm\xeb\xcc\xf9ow\xaf\x93\xe0O=\xf13|\
+[\xc4e\xc2\xd2\x12\xba\xccF\x10[i\xe1\xf9H\x5c\
+\xd5\xb6\x8f\xbe3\xebd\x1e\xd6\xca\x5c\xf2\xe9\xa0n\x8d\
+\x0b\xfbX\x8b\x8f7\xe5\xb2O\x11WwN\xff9\xb9\
+\xb9\x04}p\xeb\xda\xa5?\xce\x9a\x92>z\x0e\x82\xf8\
+\xcc\xe2\xbc\x9e\xef\x94\xa9{\xf5\xddO\xbe\xfd\xf1\xbf\xe6\
+\xae\xd8\xf6_\x7f{\xef\xbaE3'\xbe;\xf8\xc1\x0e\
+\x17\x9f\xe5{\x15\x95v\xfb\xb8\x88\xcdtTX\xa4i\
+\xdf\xe1S\x96\x1cs\x1c\xb8k\xeb\xf2%\xb3\xbeI\xff\
+d\xf4\xf0a\xcf\xa7\xf5\xe9\xd5\xf5\xb6\xb6W7oX\
+\xa7J\xf2)\xc5\x8e\xfeGw\x22\x88\xdf<\xec\x05J\
+|RRR\xc5\xe4\xe4\x12II\x05\x83\xfc\xb3\x09\xbe\
+>Q\xd9Sc\xa5E\x92*\x9dY+\xb9|\xd2\xc9\
+\xbd{\xdf\x01A\xfcfwe/\x02\xf8\xfb\x81\xf71\
+\xc6r]\x85 \xbe\xf3UB\xf8\xfd\xa8\xe3\xef\xcb{\
+\xeb\x8d\x05k\x84 \xfe\xd33\xf4~\x14\xfd\xd9\xe7%\
+<\xd3T\xb2s\x11\xc4\x7f\xf6\xd7\x0c\xb9\x1fqc\xfc\
+^\xc2[LE;\x1dA\x02`v\xdep\x0b\xd2\xd3\
+\xf7\x15|\xcdT\xb4\xe2\x08\x12\x04O\x85\xda\x8f&\xfe\
+\x7f\xda}\x85\xa9l\xf1\xd9\x08\x12\x00YW\x86\xd8\x8f\
+36\x04\xb0\x82g\x9bJ\xb7\x0bA\x82`\xeb\x99\xa1\
+\xf5\xa3\xc8\x8fA,`\x8a\xa9x\xab\x11$\x10\xe6\x16\
+\x0a\xa9\x1f\x09\xc1\xbc\x92\xf4\xa9\xa9|\xf3\x11$\x18\xde\
+\x0b\xa9 /\x05\xb3|\xfb\x8a\x18\xca7\x03A\x02\xe2\
+\xa1P\xfa\x11\xd8\xdel7\x19\x0a\xf8O\x04\x09\x88\xcc\
+kC\xe8G\x8f\xc0\x96o\x9c\xa1\x84\x7fG\x90\xa0\xd8\
+\xd74t~t\xc8\x0al\xf5\xf6\x18:\x89\x1b\x86 \
+\xc1\xf5\xb8a\xc8\xfch\x9b\x11\xe0\xeau2\x93\xf19\
+\x04\x09\x8eM\xd5B\xe5G\x9b \xfd\x88}a&\xe4\
+c\x08\x12 \xab*\x86\xc8\x8f\x1b\x03\xf5#\x96}\x96\
+\x91\x94\xf7\x22H\x90,\x0b\xcf\x0d\xc3n\x99\x01\xaf]\
+\x9a\x91\x98\xb7 H\xa0\xac\xaf\x15\x12?z\x07\xbet\
+[\x0a\x9b\xc8y\x1d\x82\x04\xcb\xb6F\xa1\xb8\x7f\xfe\x82\
+\x81\xa5\xeba\x22iS\x04\x09\xfaZV\x08\x1e\x5c,\
+\xfc\xa1\x91\xe3\xd3<\x06\xa2\xd6A\x90\xa09\xd8\xd9u\
+?N\x9fkf\xe5:\x1a\xc8z\x16\x82\x04\xcf_\xf3\
+8\xedG\xd0\x1f\xa7\xfe\x0fK\x0c\xbcxV\x0aA\x0c\
+\xf0ei\x87\xfd\xe8z\xc0\xd8\xbau\x0f>m>\x04\
+1\xc1\xca\xba\xae\xeaQ\xe4}\x93\xd7\x00\x8b\x05\x1fx\
+\x1f\x82\x98`\xdf\xadn\xfaQ{\x91\xd1e{)\xf8\
+\xc4\x1b\x10\xc4\x0ccJ\xb8\xa7G\x5c\xca~\xb3\x8b\x96\
+\x15\xfc\xe3l\xbf \x88!\xd6\xb5v\xcd\x8f\x0aS\x8d\
+/\xda\xfc\x02A\x87\xfe\x0eA\x8c1:\xc9-A\xaa\
+\xec7\xbff\xaf\x06\x1dz2\x82\x98c\xc5en\x19\
+\xd2\xdf\x825\x0b\xfa\xd5\xc2\xf1\x08b\x92\x09\xc9.\x09\
+\x92o\xb1\xf9\x15\xdb{a\xb0\x99\xdfF\x10\xa3\x1c\x18\
+R\xd8!C\x9aX\xb0\x8f\xda\xa6`\x9f{\x1f\x82 \
+\xa6\xef\x89\xb4s\xc8\x90\x91\x16,\xd8\xe22Q;\xac\
+\x8c\xb6 \xb1\xd8\xf4\xe6\xce\x08Rj\x8b\x05\xeb\xf5S\
+\x85\x00\x13?\x84 \x160\xcd\x19E\xee\xb0a\xb9\x96\
+U\x8eX\xe0\xc8\x0b\x12\x8b\xcdp\xe4\xaeH\xdct\x1b\
+VkK\xb3\xc0\x02\xdf\x88 \x96\xf0U\x1b'\x1e\xf2\
+\xadq\xd0\x86\xc5:xwPy[\x22\x885\xacM\
++\xe7\x80!\x03\xedX\xacq\xa7\x06\x13\xb7\x01\x82X\
+\xc4\xfe\x91\xf5\xad\x17\xa4\xe0R;\xd6j\xcd\xe5\x81\xc4\
+\xad\x86 v\xf1\xfd}e,7\xc4\x9a\x83\x8e\xf7\xcb\
+\x07\x90\xb6<\x82\xd8F\xe6\xa4\xdb\x8a[m\x885\xfb\
+\xd5\xeez\xd8\xff\x8f\xc1\x17A\x10\x1b\x0f\xb5\xc6\xb7\xb1\
+\xf8\x06{\x99\xed\xd6,\xd4\xba{\xf3\xfb}\xd9.\x13\
+A\xect$\xfd\xfe*\xb6\x1ar\xb7E\xeb\xb4\xfaa\
+\x9f\xcf\xd6\xb7!\x88\xb5,\x19zy~\x1b\x05\x89\x9f\
+i\xd3*\xed}\xb5\xb6_A\x13kv|f/\x82\
+\xd8L\xc6\xac!m\xed{\xf7\xf0\xdc\x83v\xad\xd2\x82\
+\xd43tGLj\x942l\xfa^G\xa6$\xc2\x82\
+\x1c\x22{\xc1\xb0\xceU\xe2\xad2\xc4\xba\xaf\x02dN\
+\xef\xadk\xef\xfc\xfc\xe7w\x194i\xa3S\x13\x12q\
+A~g\xf7\xccaw7*\xaa\xe7\xbc3N\xfc\xbf\
+(\xb4\xc2\xc6#\xd2a\x1d\xca\x8aR\x95h\xd0e\xc0\
+\x98\x05\x19\xee\x0d\x07\x82\x1c\xf9-Y\xfa\xe1sw]\
+~f\xa2@\x8e*\x9dG\xac\xd3\xf01\x9a\xd6\x96\xae\
+\xd0O#R\x1a\xe5\xfecT\x85k\xb7{t\xc4\xcc\
+-\xce\xce\x05\x82\xfc\xcf\x89\xc9\xb2I\xc3\xfav\xb9\xb2\
+v\xd9\xdc<\xbdU\xe8\xdck\x1f|\xf1\xf3\xdf\xaf\xc9\
+\xac\xd7p\x9fe\x9c\xbd\xcb\x93\xf9\xf3G\xcf\xdcvQ\
+\xb9\x938(-pv\xb3.O\xbc>u\xb5\xeb\x03\
+\x81 9\xfd\xa2\xac\xffq\xe2\xa8\x97\xd3\xfa\xf4\xb8\xe5\
+\xfa\xe6u\xab&'\x9f\x9a\x94td\xf6\x93\x92\x92\xca\
+%'W\xa9\x7fE\x87\xee\x8f>\xff\xe6\x87\xd3\xd7\x1d\
+\xfb\xdf\xbd\xa8\xe1\x0e\xf3N\xdb\x17\xe7\xe0\x8ai\xef\x0e\
+}\xa2\xfb\x8d\xcd/</\xb9dR\xbe\xc3e\xe7K\
+*Q\xb9N\xb3\xebo\xed5h\xd4\xa4y\x1b\xc32\
+\x07\x08\xa2\x99,\x0d\x8f|\xa5\xb0\x8c\x08\x12Zf%\
+\x84\xecf\x08\x82\x80V\xee\x92\xff\x84\xd4\xc9d\x19\x11\
+$\xacl\xd7\xf0\xcc\xf0\x10\x96\x11AB\xcbp\x0d\x0f\
+\xba\xaeb\x19\x11$\xacd_*7\xe4z\x96\x11A\
+B\xcb\x82D\xb9!\x1f\xb1\x8c\x08\x12Zz\xc9\x05\xa9\
+\xb8\x8beD\x90\xb0\xb2G\xc3\x13\xb0\x0f\xb1\x8c\x08\x12\
+Z\xc6\xcb\x05\xc93\x9beD\x90\xd0\xd2Jn\xc8\x05\
+\xdc\x0cA\x90\xd0\xb2\xa2\x90\xdc\x90\x17YF\x04\x09-\
+\xfd\xe5\x82\x14]\xcd2\x22HX9P5\x22\x9b\xd7\
+\x22\x08(\x91\xae\xe1\x05\xc5\x09,#\x82\x84\x96\xf6r\
+AN\xdf\xcd2\x22HXYWLnH\x1f\x96\x11\
+AB\xcb`\x0d7C\xe6\xb0\x8c\x08\x12V25\xec\
+\xbaV?\x8buD\x90\xb0\xf2\xad\x86\x1d\xb7^e\x19\
+\x11$\xb4\xdc\xaea\x1b\xc2\x0d,#\x82\x84\x95-%\
+\xe5\x86\xdc\xcc2\x22Hhy]\xc3\xcd\x90t\x96\x11\
+A\xc2J\xf6%rA\xce\xdc\xc7:\x22HX\x99\xa7\
+\xe1\xe5\xc2\xc7YF\x04\x09-\xf7\xcb\x05\xc9\xbb\x90e\
+D\x90\xb0\xb2S\xc3\xf7\xa7\x1bg\xb3\x8e\x08\x12V\xde\
+\xd7p\x9e\xfe\x16\xcb\x88 \xa1\xa5\x85\x5c\x90\x12\x9bX\
+F3lC\x10\xdf\xf9E\xc3\xc7\x10oe\x19\x8d\xb0\
+\xbd\x1e\x82\xf8\xcf\xe3\x1a\xbe\x5c5\x99e4\xe3\x07\x82\
+\xf8\xcf~\x0d\x1f\x9d\xae\xc2\xcd\x10\x03\xc7W\xbf\xf9\x81\
+ \x010Q\xc3yz\x7f\x96\xd1\x88\x1f\x08\x12\x047\
+\xc8\x05\xc9\xb7\x98e4\xe1\x07\x82\x04\xc1\xaa\xc2rC\
+\x9ap3\xc4\x84\x1f\x08\x12\x08\xcfj8\xc8\x1a\xc52\
+\x1a\xf0\x03A\x02!\xe3<n\x86\xb8\xe9\x07\x82\x04\xc3\
+\xb48\xb9!w\xb0\x8c\x81\xf9q\x81\x87 \xc1\xd2E\
+\xc3\xcd\x90\xe9,c\xe0~ H@l.!7\xa4\
+\xfaA\xd61h?\x10$(^\xd6p\x9e>\x90e\
+\x0c\xda\x0f\x04\x09\x8a\xac\x0b\xe5\x82\x14X\xc2:\x06\xec\
+\x07\x82\x04\xc6\xf7\x09rC.g\x19\x03\xf6\x03A\x82\
+\xa3\x87\x86\x83\xac\xf7Y\xc6`\xfd@\x90\xe0\xd8QV\
+.H\xe9m\xacc\xa0~ H\x80\x8c\xd2\xf0\x13r\
+7\xcb\x18\xa8\x1f\x08\x12$M\xe5\x82\xc4\xcf`\x19\x83\
+\xf4\x03A\x82dQ^\xf9\xf7\xd3\xc7\xb0\x8c~\xb1\xe5\
+|\x0fA\xcc\xd2G\xba\x89\xdc\x90\xfd,b\x90\xbf\x1f\
+\x08\x12,{+I\xf4\xa83\x82\x8f!\x04\xed\x07\x82\
+\x04\xcb\xa7\xeaOb\xb5\xe6Q,\x03~ H\xc0\x5c\
+\xad\xa6Gb\xe7\xf9\xac\x9d\x09?\x10$`V\x16R\
+\xd0\xa3P\xcaJV\xce_?\xeaz\x08b\x07\x03r\
+\xff\xa6T\xeaf\x96\xcd\x94\x1f\x08\x124\x07\xce\xc9\xe5\
+\xa7\xa0\x87\xeca\xd1\xcc\xf9\x81 \x81\xf3\xaf\xdc\xbc\x5c\
+x\xee\x88\x0cV\xcc\xa4\x1f\x08\x12<\x1dOZ\x8fF\
+\x13\xd8\xca\xc4\xb0\x1f\x08\x12<\xeb\x8b\x9f\xdcC%\xad\
+y\xaa\xc4\xbc\x1f\x08b\x80\xa1'\xf3\xd5\x9c\xce\x0bX\
+(\x0b\xfc@\x10\x03d\xd5;\x91\x1e\x85S~e\x99\
+\xac\xf0\x03AL\xf0\xdd\xf1_.,\x99\xba\x855\xb2\
+\xc4\x0f\x041\xc2\x9d\xc7\xe9H%\xae\xeb\x06\xc6\xd6\x13\
+\xfa\x81 f\x1aS*\xa7~\x9c\xc7u]\xab\xfc@\
+\x103\xbc\xc5u]7\xfc@\x103d7\xf9\xb3\xeb\
+\xba_\xb30\xb6\xf9\x81 \x86\x98\x9f\xf8\x87\xeb\xba\x8b\
+X\x15\xfb\xfc@\x10S\xf4\xfc\xaf6\x14IY\xcd\x92\
+\xd8\xe8\x07\x82\x98b\xcf\x19G\x9bP*u+\x0b\x12\
+\xb0\x1fu<\x04\xb1\x9b\xb1GZ\x90<d/\xaba\
+\xab\x1f\x08b\x8e\xab~o@\xad\x11\x99,\x85\xbd~\
+ \x889\x96\xe4?t]\x97u\xb0\xda\x0f\x041\xc8\
+\x80\xf6\xb3Y\x04\x03l\xca\xcd\x07\xf1X.\xe0\xf7\x03\
+A\x00\x94\xfc@\x10\xc0\x0f\x04\x01P\xf3\x03A\x00?\
+\x10\x04@\xcd\x0f\x04\x01\xfc@\x10\x80XlcM\x0f\
+A\x00t\xfa\x81 \x80\x1f\x08\x02\xf8q\xae\x87 \x00\
+\x9a\xfd@\x10\xc0\x0f\x04\x01\xfc@\x10\x00\xed~ \x08\
+\xe0\x07\x82\x00~ \x08\x80v?\x10\x04\xf0\x03A\x00\
+?\x10\x04@\xbb\x1f\x08\x02\xf8\x81 \x80\x1f\x08\x02\xa0\
+\xdd\x0f\x04\x01\xfc@\x10\xc0\x0f\x04\x01\xd0\xee\x07\x82\x00\
+~ \x08\xe0\x07\x82\x00h\xf7\x03A |l\xd0\xe7\
+\x07\x82@\xf8\xfc\xa8\xe1!\x08@\x10~ \x08\xe0\x07\
+\x82\x00~ \x08\x80v?\x10\x04\xf0\x03A\x00?\x10\
+\x04\xf0\xc3C\x10\x80\x00\xfd@\x10\xc0\x0f\x04\x01\xfc@\
+\x10\xc0\x0f\x04\x01\x08\xd2\x0f\x04\x01\xfc@\x10\xc0\x0f\x04\
+\x81\xc8\xfaQ\xddC\x10\x00\x03~\xfc?\xf8\x1a\xb7\x9e\
+cx\x86\x0f\x00\x00\x00\x00IEND\xaeB`\x82\
+\
+\x00\x00\x02\xbb\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00v\x08\x03\x00\x00\x007+k\xfd\
+\x00\x00\x003PLTE\x00\x00\x00A\xcdRP\xca\
+NA\xcdRA\xcdRF\xccPH\xcbPB\xccQ\
+I\xcbPD\xccQE\xccQJ\xcbOE\xccQD\
+\xccQD\xccQC\xccQA\xcdRz\x18s\xcb\x00\
+\x00\x00\x10tRNS\x00\x186Oc\x9d\xab\xae\xb8\
+\xbd\xc9\xcd\xd6\xdf\xe9\xf0\xb8\x82#\xe9\x00\x00\x02'I\
+DATh\xde\xc5\xda[v\x830\x0c\x04PT\xd3\
+\x90\x07\xa5\xda\xffj\xfb\x91\xa4!`\x9f\x18i\xa4\xd1\
+\x06\xe6\xf2\x01#\xc0\xc3\x101E\x17\x19\x98ST\x97\
+\x22\x5c\x80\xea(d\x00Sp\x07\x10\x05\x0f\x00O\xf0\
+\x04\xe8$d\x00K\xf0\x02\x90\x04+\x00G\xb0\x06\xe8\
+U\xc8\x00\x86\xe0\x1d@\x10l\x00:\x0b\x19\x90^\x8e\
+;@\xb6`\x0fH\xae\xe7\x0a \xb7\x18\xaa\x80LA\
+\x1d\x90(h\x00\xf2\x04-\x00\xa4\x18\xa4|\x9eQ\x03\
+\x05\xdf\xea\x1a\xbf\xe0\xacd\x81\x17\xe0\xae&7\xc0+\
+\xf0\x03\x9c\x02\x00\xc0W\xcf\x08\x80\xab\x1c!\x00\x8f\x00\
+\x03p\x08@\x00\xfd\xb5.\x08(\x80\xb9\x9ap\x00\xa3\
+\x00\x08\xb0\x09\x90\x00S1@\x01:\xb1\x01\xda\xbf\x86\
+\xdc\x84\x09\x90Q\xb5\x10\x012j\x10`\xec\xcf\x8f\x00\
+t\xbe.\xdd\xf3\x03\x00\x9d} \x93\xc6\x00\x0e\xe6\xc3\
+\x01\xf3\xc1|4\xa0s/\x93\x8b\xc6\x00z\xf3\xaf\x1a\
+\x030\xe4C\x01\x93!\x1f\x09\xe8\xcd\xff\xd1\x18@o\
+\xfe\xa21\x00c>\x0c\xd0\xb7\x06I\xd9\xe6\xa3\x00\xe3\
+\x91\xc7\x7f\x0d\xf0u\xfe<sD\xfe\x13\xd03%\x22\
+\x1f\x018V\xbfx\xc0\xd1\xfaC\x03\x9c\xf9n\xc0\xec\
+\xcc\xf7\x02\x8e\xd7\xef\xee\x0a:\xee\xbf\x93\xb4\x00\x96\xfa\
+\xb3Li\x00\xb2\xf2[\x80)+\xbf\x01\xb0\xd5/\x0e\
+`\xad?\x14 3\xbf\x060\xd7/\x08\xe0\xa9\x1f\x04\
+ 9\x7f\x07\xc8\xce\xdf\x00|\xf5\xeb\x07x\xeb\xcf\x0b\
+`\xe4\xaf\x013#\x7f\x05\xe8\xfd+q\xd1\x18@\xf7\
+_\x11\x8d\x00\xc8\xed\xd4\xfd\x09t\x89\x00\x1c\x19Y\xc8\
+\x00\xb0\xc0\x00@\xac!>\x00T`\x02 \x056\x00\
+P`\x04\xe0\x9e\x87V\x00L`\x06\xa0\x04v\x00H\
+\xe0\x00`\xf6\x12\x0f\x00\x22p\x01\x10\x02\x1f\x00\xf0v\
+\xe0\x04\xb8\xab\x09pj\xaf-\x18;N0!\x8ej\
+5\x05eH\x9aV1\xa4\x01Z\x82<@C\x90\x08\
+\xa8\x0b2\x01\xd5bH\x05\xd4\x04\xb9\x80\x8a \x19\xb0\
+\x17d\x03v\xd5\x94\x0e\xd8\x0a\xf2\x01\x1b\x01\x01\xf0^\
+\xcf\x0c\xc0[5q\x00+\x01\x09\xf0\x12\xb0\x00\xff\xc5\
+@\x03<\x05<\xc0C@\x04\xdc\x05L\xc0 \x13\x19\
+0\xc8\x14\x04\xf8\x03L-q\xaa\x9e\xb6\xb9\xda\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x02\xf6\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x9e\x00\x00\x00\x9d\x04\x03\x00\x00\x00\xb7?\xdc\xe6\
+\x00\x00\x00$PLTE\x00\x00\x00\xff\xff\xffA\xcd\
+RA\xcdRA\xcdRH\xcbPB\xccQE\xccQ\
+J\xcbOD\xccQC\xccQA\xcdRE\xef\x01u\
+\x00\x00\x00\x0btRNS\x00\x00\x18Oc\xab\xae\xc9\
+\xd7\xe9\xf0\xc1\xad8\xf5\x00\x00\x02vIDATh\
+\xde\xcd\xda\xdbM\xc40\x10\x85\xe1\x15i\x00:\x88D\
+\x07\xc0\xdb\xbem))!=\xd0\xc0\xd6\xb2J\xb4\xeb\
+\xe6x\x08\xb98\xbe\x8dg\xfe\x07\xa7\x80OG \x0e\
+\xe3\xb1/\x17\xc1\xd7=\xfb\x0b\xf9u\xee\x0e{\xaf/\
+\xd6s\x8f\x9e\xf5\xdc\x0d\xf6\xc8\x80\x9ds\xce\x0d\xb07\
+\xf5\xac\x07\x06\x5c<.\xe0\xe2\xb9\x11\xf6\xe6\x9e\xf5\xb0\
+\x80\xabG\x05\x5c=\xaa\x166\x0f\xea\xad\xcd\x83\x02\xee\
+\x1e\xd3[\xbb\xc7\xd4\xc2\xc1Cz\xeb\xe8\x11\x01\x8f\x1e\
+Q\x0b\x9e\x07\xd4\x82\xe7\x01\x01}\xcf\x1e\xd0\xf7\xec\xb5\
+p\xf2\xcc\xb5p\xf2\xcc\x01\xcf\x9e5\xe0\xd9\xb3\xd6B\
+\xe0\x19{+\xf0\x8c\x01C\xcf\xd6[\xa1g\xab\x85\x88\
+g\xea\xad\x98g\x09\x18\xf3,\xb5\x10\xf5\x0c\xb5\x10\xf5\
+\x0c\x01\xe3\x9e>`\xdc\xd3\xd7B\xc2S\xd7B\xc2S\
+\x07Ly\xda\x80)O[\x0bI/\xd2[\x9f\xdf\xe5\
+\xef\xc7\xc9\x03^\x9d\xe5\x0b{\xcb\xe6\x85\xb5`\xf4\x82\
+\xde\xb2z\xe7\x80V\xef\x5c\x0bf\xefT\x0bf\xef\x14\
+\xd0\xee\xf9\x01\xed\x9e_\x0b\x80\xe7\xd5\x02\xe0y\x01\x09\
+\xef\x18\x90\xf0\x8e\xb5\x80x\x87\xdeB\xbcC@\xc6\xdb\
+{\x8b\xf1\xf6Z\x80\xbc\xad\xb7(o\x0dHyk-\
+`\xde\x7f-`\xde\x7f@\xce[\x02r\xdeR\x0b\xa0\
+7\xf7\xac\xe7F\xd8\x9b{\xd6sw\xd8{\xf6\xac\xe7\
+\xee\xb0\xf7\x82=\x07{\xcf\xb6\x7f~3\xfc\xfb\x1d\xdb\
+\xfe\xfb\x80\xff~'\xb8_\x86\xb6\xfb\x19\xfe\xff\xf1\x80\
+\xff\xbf\xdd\x9a\x9e\x0f\xb6\x01\xebJ\x15\x01\xea\xed\x03j\
+\x93\xf3\xe9\x0c\xcf\xcfc\xdb\xe7\x0f\xf8|4\xc1\xe7\xb7\
+\xa1\xed\xf3/|>\x7f\xc0\xfb\x83[\xd3\xfb\x97`\x81\
+u\xa5\x8a\x00\xf1\xc2\x05 \xbd\xff3\xed'\x95\x0b\xd4\
+N\xb4\xc9io\xbf\x0b\xef\x9f'x?>\xb0\xfb{\
+\xfa~!\x1e\xef#\xff\xbd'\xbd\xc4\x05\x92\xdaK\x5c\
+pi\xbd\xd4\xfd\x96\xd2K^\x10*\xbdd\x11\xe8\xbc\
+\xf4\x05\xab\xceK\xf7\x94\xca\xcb\x14\x81\xca\xcb\x14\x81\xc6\
+\xcb\xf5\x94\xc6\xcb\xf5\x94\xc2\xcb\x16\x81\xc2\xcb\xf6T\xbd\
+\x97\xef\xa9z/_\xa3\xd5^\xe1\xa2\xbb\xda+\x5c\xc4\
+\xd7z\xa5{\xf8J\xaf\xf8\x90\xa1\xd2+\x0e,u^\
+\xf9!H\x9dW\x9e\xa7\xaa<\xc1\xc0R\xe5\x09\x06\x96\
+\x1aO2O\xd5x\x92y\xaa\xc2\x13\x0d,\x15\x9eh\
+\x9e\x92{\xb2yJ\xee\xc9\xc6=\xb1'|\x90#\xf6\
+\x84\x0f\x86\xa4\x9e\xf4\xbd\x90\xd0\x13?\xb8\x12z\xe2\x83\
+\x95\xcc\x93?X\x93y\xf2s\x9f\xc4{\xfb\x15\xc7\xfb\
+\x03\xfd\xb9\xba%(\xb7\xb7:\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
+\x00\x00\x02c\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00w\x00\x00\x00w\x04\x03\x00\x00\x00\xcb\x17\xc2\xb9\
+\x00\x00\x00'PLTE\x00\x00\x00\xff\xff\xffA\xcd\
+RA\xcdRA\xcdRB\xccQD\xccQE\xccQ\
+E\xccQD\xccQD\xccQC\xccQA\xcdR\xeb\
+\xfeC\xda\x00\x00\x00\x0ctRNS\x00\x00\x18Oc\
+\xae\xbd\xc9\xd6\xdf\xe9\xf0v\x89\xbe\xf7\x00\x00\x01\xdfI\
+DATX\xc3\xc5\xd8\xbbm\xc30\x14\x05P\xc1Z\
+ \xd9\x80e\x902I\xe9\x22\xd0\x08\x9c\xc4\xf0H\xd2\
+\x22)(\x07R\xdeP)\xa2\x0fI\x89|\x9f[\x84\
+\xfd\xc1\x05l]>\x92MS^\xed\xb7k\xcc\xab\xa5\
+\x1e\xc1\xb3\x030\x10\xdd\x12\xfd\xbc\x01\x98\x82\x030u\
+\x08\xb6F\xb7DD\xe4\x11<:\x00\x1b\xa3\x17l\x8b\
+^0\xdd\x11l\xea\xc7\x8aM\xd1\x1b\xb6Do\xd8\xd2\
+\x8f\x1d\x1b\xaa\xb9cCt\x84\xf5\xd5\x8c\xb0\xbe\x1f1\
+VW3\xc1\xda\xe8\x04k\xfb\x91be?R\xac\x8c\
+\xce\xb0.:\xc3\xba~\xe4X\xd5\x8f\x1c\xab\xa2\x0fX\
+\x13}\xc0\x9a~\x1c\xb1\xa2\x9aG\x9cG_\xde\x8b\xeb\
+\xe3\x88\xb3j\xbe\x92j\xa5\xfd\xb8\xeapZM-N\
+\xa2\xb58\xe9\x87\x1a\xc7\xfdP\xe38Z\x8f\xa3h=\
+\x8e\xfaa\xc0{?\x0cx\x8f\xb6\xe0-\xda\x82\xb7~\
+\x98\xf0ZM\x13^\xa3mx\xa9\xa6\x0d/\xfd0\xe2\
+\xbfjZqp\x00&\x8f\xe0\xd1\x01\x98<\x82G\x07\
+`\xba!\xf8\xeb\xdf\xf0'\x80\x03\xf2\x83u\xc0_5\
+\x00\x1f\xc9\x8c|\xdb=\xd0\xaa\x09\xe9\xf3\x1d\xd8I\x96\
+\xcd\xf7\x0a\x04\xdb\xf0\x03\xd9z=\xb0\xe9\x8f\xc8\xb8\xf1\
+\xc0\xa0\x0b\xc8\x88\xed\x80\xe1\x1e\x90cE\x07\x1ch\x06\
+\xe0(5#'\xc0\x1e8{N\xc9\xa9\xf7\xc5z\x06\
+\xd3\x1f\xd6\xe5W\x94\x96\x0b\xd6\xe1\x07rA\xf1\xc0\xd5\
+hD.e\x1e\xb8\x0e\x06\xe4\x22z|sx.\xad\
+\xa7\x1c\x9f\x04\xcb\xf1\xc9c\x87\x18\x0f\xce\x8eO/\xb0\
+R|zu\x16\xe2\xc9\x01\xf8\xbc\x112\x5c\xa8\xa2\x0c\
+\x17\xaa(\xc2\xa5*\x8ap\xa9\x11\x12\x5c\xac\xa2\x04\x17\
+\xab(\xc0\xe5*\x0ap\xf9\xf9\x8f\xc7\x95=\x80\xc7\x95\
+wG\x16\x0f\xce\x8e\xaboI\x1c\xae\xbeb1xr\
+\x00\xae\x0f\xa7:f\xa6b\x1d3S\xb1\x8a\xb9\xa9X\
+\xc5\xdcp\xaaav*V\xf0\x85{\x8b\xff\x05\xc8d\
+f\xae\xfe\xc1\x88\xef\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x1cV\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x02X\x00\x00\x01\xad\x08\x03\x00\x00\x00\xfd\x0f\xfa\xd9\
+\x00\x00\x00\x09pHYs\x00\x00'\x8b\x00\x00'\x8b\
+\x01q}\xe4H\x00\x00\x00\x19tEXtSof\
+tware\x00www.inksca\
+pe.org\x9b\xee<\x1a\x00\x00\x03\x00PL\
+TE\x00\x00\x00\x00\xff\xff\x00\xff\x80U\xff\xaa@\xbf\
+\x803\xcc\x99+\xd5\x80$\xdb\x92 \xdf\x809\xe3\x8e\
+3\xe6\x80.\xe8\x8b+\xd5\x80'\xd8\x89$\xdb\x803\
+\xdd\x880\xdf\x80-\xe1\x87+\xe3\x80(\xe4\x86&\xd9\
+\x801\xdb\x86.\xdc\x80,\xde\x85+\xdf\x8a)\xe0\x85\
+'\xe2\x89/\xe3\x84.\xdb\x89,\xdc\x84+\xdd\x88)\
+\xde\x840\xdf\x87.\xe0\x83-\xe1\x87,\xdb\x83+\xdc\
+\x87)\xdd\x83/\xdd\x86.\xde\x83-\xdf\x86,\xe0\x83\
++\xe1\x86*\xdb\x82.\xdc\x85-\xdd\x82,\xde\x85+\
+\xde\x88+\xdf\x85*\xe0\x87.\xe0\x85-\xdc\x87,\xdd\
+\x84+\xdd\x87+\xde\x84*\xdf\x86.\xdf\x84-\xe0\x86\
+,\xdc\x84+\xdc\x86+\xdd\x84.\xde\x86-\xde\x84-\
+\xdf\x86,\xdf\x83+\xe0\x85+\xdc\x83.\xdd\x85-\xdd\
+\x83,\xde\x85,\xde\x87+\xdf\x85+\xdf\x87-\xe0\x85\
+-\xdd\x86,\xdd\x85,\xdd\x86+\xde\x84+\xde\x86-\
+\xdf\x84-\xdf\x86,\xe0\x84,\xdd\x86+\xdd\x84+\xde\
+\x86-\xde\x84,\xde\x85,\xdf\x84+\xdf\x85+\xdd\x84\
+-\xdd\x85-\xdd\x84,\xde\x85,\xde\x86+\xde\x85+\
+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85,\xde\x86+\xde\
+\x85+\xde\x86-\xdf\x85-\xdf\x86,\xdf\x84,\xdd\x86\
++\xdd\x84+\xde\x85-\xde\x84,\xde\x85,\xdf\x84,\
+\xdf\x85+\xdf\x84+\xdd\x85-\xdd\x84,\xde\x85,\xde\
+\x84,\xde\x85+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85\
+,\xde\x86,\xde\x85+\xde\x86-\xde\x85-\xdf\x86,\
+\xdf\x85,\xdd\x85+\xdd\x84+\xde\x85-\xde\x84,\xde\
+\x85,\xde\x84,\xdf\x85+\xdf\x84+\xdd\x85-\xdd\x84\
+,\xde\x85,\xde\x84,\xde\x85+\xde\x86+\xdf\x85-\
+\xdd\x86,\xdd\x85,\xde\x86,\xde\x85+\xde\x86-\xde\
+\x85,\xde\x85,\xdf\x85,\xdd\x85,\xdd\x85+\xde\x85\
+-\xde\x84,\xde\x85,\xde\x84,\xdf\x85,\xdf\x84+\
+\xdd\x85-\xde\x84,\xde\x85,\xde\x84,\xde\x85,\xde\
+\x86+\xdf\x85-\xdf\x86,\xdd\x85,\xde\x86,\xde\x85\
+,\xde\x86-\xde\x85,\xde\x85,\xdf\x85,\xdd\x85,\
+\xdd\x85+\xde\x85-\xde\x85,\xde\x85,\xde\x84,\xde\
+\x85,\xdf\x84+\xdd\x85-\xde\x84,\xde\x85,\xde\x84\
+,\xde\x85,\xde\x86+\xde\x85-\xdf\x86,\xdd\x85,\
+\xde\x86,\xde\x85,\xde\x85+\xde\x85,\xde\x85,\xde\
+\x85,\xdf\x85,\xde\x85,\xde\x85-\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xdf\x85,\xdd\x85-\xde\x84,\
+\xde\x85,\xde\x84,\xde\x85,\xde\x86,\xde\x85-\xdf\
+\x86,\xdd\x85,\xde\x85,\xde\x85,\xde\x85+\xde\x85\
+,\xde\x85,\xde\x85,\xdf\x85,\xde\x85,\xde\x85+\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xdd\
+\x85-\xde\x85,\xde\x85,\xde\x84,\xde\x85,\xde\x86\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\
+\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85\xf8\xdf\x16\xb8\x00\x00\x00\xfftRNS\x00\x01\
+\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\
+\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\
+\x22#$%&'()*+,-./01\
+23456789:;<=>?@A\
+BCDEFGHIJKLMNOPQ\
+RSTUVWXYZ[\x5c]^_`a\
+bcdefghijklmnopq\
+rstuvwxyz{|}~\x7f\x80\x81\
+\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\
+\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\
+\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\
+\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\
+\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\
+\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\
+\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\
+\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xeb\x08\xd9\
+5\x00\x00\x17\xccIDATx\xda\xed\xdd{\x9cM\
+\xe5\xfe\x07\xf0\xb5gh\x90\xeb\xb8D\xe4\xb8F\xb9\x95\
+q\x8b\x944'\xe4\x1aM\xa1\xa2NE\xc2\xe8\xa2\xa6\
+R\x19Q8(\xa4N\xa3\x9bD\x0e\x91J9\x95\xe6\
+\xd0\xa9\x8e\x5c\x0e\xe1'\x84\xdc\xefL\x0d&\xc3\xcc\xec\
+9\xbf\xdf\xef\x9c\x84\xb9\xec\xfdYk}\xd7\xf7Y3\
+\x9f\xcf\xdf^\xf3|\xd7\xf7y\xdb{\xed\xb5\x9e\xf5,\
+\xcbr\x9eJ\xff\x93\xcd0\xe7\x87\xae\x18CaU\xda\
+\xc0.2\xee\xc3\xa2+F\x02\x16]1\x12\xb0\xe8\x8a\
+\x91\x80EW\x8c\x04,\xbab$`\xd1\x15#\x01\x8b\
+\xae\x18\x09Xt\xc5H\xc0\xa2+F\x02\x16]1\x12\
+\xb0*\xd2\x15#\x00\xab\xe2zv\x8eq\x1f\x16]1\
+\x12\xb0\xe8\x8a\x91\x80EW\x8c\x04,\xbab$`\xd1\
+\x15#\x01\x8b\xae\x18\x09Xt\xc5H\xc0\xa2+F\x02\
+\x16]1\x12\xb0\xe8\x8a\x91\x80EW\x8c\x04,\xbab\
+$`\xd1\x15#\x01\x8b\xae\x18\x09X\x15\xd7\xb1U\x8c\
+\xfb\xb0\xe8\x8a\x91\x80Un5\x1b\xc5\xb8\x0f\x8b\xae\x18\
+\x09Xt\xc5H\xc0\xa2+F\x02\x16]1\x12\xb0\xe8\
+\x8a\x91\x80EW\x8c\x04,\xbab$`\xd1\x15#\x01\
+\x8b\xae\x18\x09X\xe5V\xb1=\x8c\xfb\xb0\xe8\x8a\x91\x80\
+U\x96\xae\x18\x01Xt\xc5H\xc0\xa2+F\x02\x16]\
+1\x12\xb0\xe8\x8a\x91\x80EW\x8c\x04,\xbab$`\
+\xd1\x15#\x01\x8b\xae\x18\x09XeW\xb2'\x8c\xfb\xb0\
+\xe8\x8a\x91\x80EW\x8c\x04,\xbab$`\xd1\x15#\
+\x01\x8b\xae\x18\x09Xt\xc5H\xc0\xa2+F\x02\x16]\
+1\x12\xb0\xe8\x8a\x91\x80EW\x8c\x04\xac\xb2+\xd8\x08\
+\xc6}Xt\xc5H\xc0*\xc0\xcfy\xa5\xa6\xa4\x1c\xdb\
+\xfe\x7f9\x90\x92\x92\x92\xc9\xd9\xf6\x14V\xc1r\x95\xb6\
+\xf5\xeb\xb9\x93\x13\xfa\xdfrcL\x9dJ\xc5.\xb8\xc3\
+\x1eQ\xaef\x93\xb6\x9d\xfb\xc4\xbf0\xe3o\xeb\x0fr\
+\xea\x85a\x15\x94\xf5W\xc7V\xcc\x1a\xd9\xb7y\xb9\xb0\
+\xf7\xad/Z\xf7\xe6a\xd3>\xdf\xce\x8f1)X\x05\
+\xc0\xd5\xce\x85\xcfv\xadf\xd9K\x89V\x0f$\xad:\
+E\x07\xee\xc3\xf2w\xf9\x19\xdf\x8d\xef\x1cm9M\x91\
+\xab\xe2\x17\x1c\xa6\x05\xc2\xfao\xd6\xbc\xd0\xa1\xa4\xe5V\
+\x02\x0d\x06/8A\x0f\x85\x1eV\xe67\xc3.\xb3\xdc\
+N\xb1\xd8){H\xa2\x10\xc3\xca\xfc\xa4wiK&\
+\x81f\x93\x0ePE\xe1\x84\xf5CbuK2\x11\xb1\
+3\xd3\x08\xa3\xb0\xc1J\x7f\xb3\x99%\x9frC\xb7\x92\
+Fa\x82ux\x5cU\xcb\x9bD\xc4.\x22\x8e\xc2\x02\
+k\xeb}\xc5,\x0f\xd3\xf4\xafY\xf4Q\x08`\x1dJ\
+\x88\xb2<N\x83yA\x0a)\xe0\xb0\x8e%\x14\xb7\x14\
+\xd2*\x99D\x0a2\xac\xcc\xa9e,\xa5t\xdfE$\
+\x05\x16\xd6\x9a\x16\x96^J$\x9e&\x93\x02\x09\xeb\x97\
+\xc1\x11\x96j\x1a~C'\x05\x10\xd6\xf2Z\x96v\x02\
+\xc3\xf8\xa1U\xd0`e$FZ\x06\xa4\xd9\x8f\xa4R\
+\xa0`\xedhm\x99\x91R3h\xa5\x00\xc1J\x8e\xb6\
+\x8c\xc9\xe0\x0c\xd7\x0fo[R\xb8\xd9AXnfz\
+Q\xcb\xa0\xfc1\xc5\xed\xe3\x9b\x13\xf6\xd8\x0b\x09\xcb\xc5\
+\x8bW\x09\x96Y\xa9\xb3\x89\xb0\x0a\x00\xac_o\xb6L\
+K\xf4*\xc2\xf2=\xac\xb4X\xcb\xbc\x94\xf9\x96\xb0|\
+\x0e\xebd{\xcb\xc4\x5c\xfc%a\xf9\x1a\xd6/\xad,\
+3Sb\x09a\xf9\x18\xd6\xe9\x1b-SSb9a\
+\xf9\x16VV\x9cen*l!,\xbf\xc2z\xc82\
+9\xb5\x0f\x12\x96?aM\xb2\xccN\xcbS\x84\xe5G\
+XK#\x0d\x87e\x0d ,\x1f\xc2:X\xc52>\
+o\x13\x96\xef`e\x5cg\xbe+\xab\xf8Z\xc2\xf2\x1b\
+\xac\x04\xcb\x0f\xa9w\x92\xb0\xfc\x05\xeb\xdb\x08_\xc0\xb2\
+\x86\x12\x96\xaf`\xa5\xd5\xf5\x87++b\x19a\xf9\x09\
+\xd60\xcb/\xa9y\x82\xb0\xfc\x03\xebk\xf7\xbe\x08#\
+\xab\xb6\xbe\xe5\x9eGFOKJzs\xde\xec\xa4\xa4\
+\xa4\x09O\x0d\xeas\xd3\x95\xeem\xd4f\xc5\x13\x96o\
+`\x9d\xae\xe7\xca\xf2\xf4\xb6\x03_N\xde\x95\xc7B\xe2\
+\x94\xb5sF\xf4\xac\xe3\xca\x97\xe1j\xc2\xf2\x0b\xac\x09\
+\x8eg\xbbJ\xff\xd7\xd6\x85\xb1\x11\xf2\xe1\x8f\x9fl\xed\
+\xf82l\x9b a\xf9\x03\xd6\x01\x87\xdb\xf45\x1f\xb3\
+\x06\x98\xeb\xa3\xb3\xfb\x96r6\xde,\xc2\xf2\x07\xac\xbb\
+\x1d\x9dL?\xb3\x19\xff\x0d:\xbb\x93\x93\xcf\xad\xaa'\
+\x08\xcb\x0f\xb0V88so\xff\xb1\xcd\xbd\xacv>\
+\xea`\xbb\x91\xa7\x09\xcb\x0f\xb0\xda\xd9\x9d\xdf@\xcf\xef\
+\x1d\x0c{|b\x05\xdb\x0b\x95\x0f\x11\x96\xf9\xb0\xbe\xb4\
+;\xbd79}v&u\xa4\xdd\x93\xadG\x08\xcb|\
+Xmm\xfe\x0e\x9c\xe7\xc2\xd8\xfb\xfb\xd9\x1b\xbc\xd8^\
+\xc22\x1d\xd6b{\xdf\x82C\x8f\xbb3\xfc\x87\xf6\x16\
+\xeb\x0c%,\xc3a\x05m\xed\xb2]q\xb1k\x05\x1c\
+\xeah\xa7\x80\xa8=\x84e6\xac/\xecL\xebu\xfb\
+\xdc\xa4=\xd6\xce\xa5\x87\xc7\x09\xcblX7\xd9\x98\xd4\
+\xdb\x5c~\x1d\xdc\x87%\xf0\x1aJ\xa7\x12\x96\xc9\xb06\
+\x04\xf09}\xc6\xf5\xbd\xb2WT\xc2\xab\x98BX&\
+\xc3\xb2q\xd1}\x8c@\x19\x9b*\xc3e\xd4\xc8$,\
+sa\x1d\xc0\xdf\x0d\xf0\x82H!\xeb\xca\xc3\x85\xcc'\
+,sa\x8d\xf2\xf6\xa49\xbfoC\xf8=\x05\xb1\x84\
+e,\xac\xac?\xa0\xb3y\xb3\xd8K\xc2\xdfG\xcf\xf6\
+\x02\xdb\x08\xcbTX\x9f\xa1\xae\x9a\x9c\x94+\xe6i\xef\
+nE\x13\x96pz\xa17\x7f7I~|\xa27\xc3\
+\xabf\x12\x96\x99\xb0\x8e\xa0\xa7\xeeo\x88\x96\xb3\x07\xdd\
+\xaa\xf9S\xc22\x13\xd6Dp\x22\xbb\x0b\xd73\x13\xac\
+\xe7V\xc22\x13\xd6\xd5\xd8<\x96\xd8!]\x10\xb8M\
+e\xb1T\xc22\x11\xd66\xf0\x03b\xbcxE\x1b\xc1\
+\xfd\xe5g\x13\x96\x89\xb0\xc6`\xb3X\xf7\x8c|I\xc3\
+\xbc\xf9n&,\xd14\xc4fq\xae\x07%\x1d\xc6\x96\
+\x94F\xfdBX\xe6\xc1\xda\x84\xb9j\xec\xc9\x1b\xc0\x9f\
+\xc0\x8az\x87\xb0\xcc\x83\x05\xde\xceY\xe4IQ\xc7J\
+z\xf1]HX\x92\xc1\x96\x8e^\xe1\xd1{\xe5\xe3\xb1\
++\xb6\xe9\x84e\x1a\xac\x03\xd8\xbd9\xaf^\x1b\xb8\xa3\
+\x08T\xd6\x17\x84e\x1a\xac7\xa1\x09\xbc\xd4\xb3w\xe8\
+\xde\x0a\xd55\x8c\xb0L\x83\xd5\x13\x9a\xc0\x91\x9e\xd5\x85\
+=\xe6X\x9b\xb0\x0c\x83u\x1a\xfaa\x1f\xb9\xd3\xb3\xc2\
+\x82\xd8^G?\x12\x96Y\xb0\x92\xa1\xe9\xeb\xeaae\
+/@\x95\xbdLXf\xc1\xc2V?}\xe8ae\xfb\
+\xa0=Jz\x11\x96Y\xb0\xaeEf\xafl\xba\x97\xa5\
+A\xeb\xb2\xcag\x11\x96I\xb0\xd2\xa0\xa5X\xf7yZ\
+\xdb_\xa0\x0f\xd3\xf5\x84e\x12\xac%\xd0\xe4%{Z\
+\xdb\x11\xe8R\xd6T\xc22\x09\xd6\x08\xe8\xeb&\xd3\xdb\
+\xe2n@\x8a\xeb\x99\xf7\xdf\xc9L\xca#\xf7\x85\xfd\xd7\
+\x07%\xd9\xc8w\x85\x18\x16t\x8a\xd5\xcf\xe3\xe2\xa0\xd7\
+\xdbU\xc8\xfb^S\xba\xa5\x93\xc7\x0a/\xac\xd3\xd0)\
+\xd6|\x8f\xab\xdb\x0cM\xe3V\xc22\x07\xd6\x0ah\xd5\
+\xd3q\xaf\xcb\x83\xde\xbf2\x9b\xb0\xcc\x815\x0d\xe9S\
+{\xcf\xcb\x1b\x82\x94\xf7\x10a\x99\x03\xeb.\xfd\xdd\x1a\
+\xf2\xcb\x07Hym\x08\xcb\x1cX\x97#}Z\xe1y\
+y?#[\xb1\x15?CX\xa6\xc0\xfa\x19Y\x8bU\
+&\xd3\xfb\x02c\x90y\x5cKX\xa6\xc0\x82\xf6\x87\xec\
+\xacP\xe0\xc3\xae<\x9fMX^\x07z)\xd3(\x85\
+\x02\xdfse\xb1\x1fay\x1dhw\xf5\xc5\x0a\x05\xfe\
+\xe8\xca\xafV\xc2\xf2:\xd0\xb3\xf5\x87\x15\x0a\x0c\x22\xfb\
+\x83T ,C`e\x22\xbb\xe7\xd5T)1\x16\x99\
+\xc8\x83\x84e\x06,\xe8Q\xd5\xdbUJ\x84\x1e\x5c]\
+BXf\xc0\x9a\x87ti\xa2J\x89\xef#%\xbeH\
+Xf\xc0JD\xba\xb4L\xa5\xc4\x9dn\xacC$,\
+\x8f\xd3\x17hR\xc4q\x9d\x1a\x91W\x0a\xb4#,3\
+`\xb5\x00\x9aT_\xa9\xc6\x0e@\x8dU\x09\xcb\x0cX\
+\xe5\x80&uW\xaaq(Pc\xe0$a\x99\x00\xeb\
+\x88\x1f\x9a4\xd5\x85\x07*\x08\xcb\xdb\xfc\x13i\xd2t\
+\xa5\x22\xff\x86\x14\xf9\x01a\x99\x00\x0b\xda\x9cx\x99R\
+\x91\xd0\x06\xa9\xe3\x09\xcb\x04X\xcf\x22M\xda\xa7Td\
+\x06\xb2\xcf\xed\x00\xc22\x01V\x7f\xa0G%\x83ZU\
+\x22k\x11;\x11\x96\x09\xb0\x90\xdd\xd4\x9b\xaaU\xd9\x19\
+\xa8\xb2!a\x99\x00\x0by\x06\xa6\xb7Z\x95\x0f!\x8b\
+\x5c\x09\xcb\x04X\xc8\x1b\x98\x9fU\xab\xf2\x15d*\x8f\
+\x13\x96>\xac\xa3H\x8ff\xa8\x95\x09\xbd\xf2n#a\
+\xe9\xc3Z\xe3\xc6\x8a\x14\xf9\xacG\xca\xfc\x9c\xb0\xf4a\
+}\xec\xc25m\xd3\xee\x0f\xbcAX\xfa\xb0^Cz\
+tD\xad\xcc r!k\x0ca\xe9\xc3B\xdeHq\
+QP\xafC\xd5\x80:\x87\x11\x96>,dc\x84\xea\
+\x8a\x1dB\xde\x9c\xd1\x87\xb0\xf4a\xdd\x0e\xb4\xa8\xa5b\
+\x87\xba\x02u\xdeHX\xfa\xb0\x90\xfd\xf2z(v\xe8\
+~\xa0\xce\xc6\x84\xa5\x0f\x0byM\xe1\x03\x8a\x1dz\x06\
+\xa8\xb32a\xe9\xc3\xba\x04hQ\xa2b\x87\x90K\xef\
+Er\xfd\x91\x919.\x8f\xf4\x09\xfb\x0f\xf7\x1bg#\
+\x7f/\x94\xb0\xb2\x90-\x82\x92\x14;\x04m\x92u\x0c\
+\xfa\xd3\xdc5Y ?\xbb\xb04\xd3\x93|\x83\x14\xba\
+\x8d\xb0\xb4a\xedD\xe6+Y\xb1C\x1b\x90B\xd7\x12\
+\x966\xacu\xc8|\xadT\xec\x10\xf4?`\x19ai\
+\xc3\xfa\x072_\x9b\x15;\x94\x82\x14\xfa\x11ai\xc3\
+Z\x84\xcc\xd7~\xc5\x0ee \x85\xce$,mX\xb3\
+\x90\xf9:\xa9\xd9\x22d\xb3\xa5\x97\x09K\x1b\x16ry\
+(2\xa8\xd9\x22\xe4\x82\xdb\x18\xc2\xd2\x865\xd6\xf9Z\
+r\x8f\x82\xac\xcd\x7f\x8c\xb0\xb4a!\xef\xfd\xaa\xae\xda\
+\xa2\xa6@\xa5C\x08K\x1b\xd6\xa3\xc0t5PmQ\
+;\xa0\xd2{\x09K\x1b\xd6\x83\xc0t]\xa3\xda\x22d\
+\xddL_\xc2\xd2\x86u\x0f0]\x1dT[t\x07P\
+iO\xc2\xd2\x86\xd5\x07\x98\xae\x1e\xaa-\x1a\x08T\xda\
+\x89\xb0\xb4a\xf5\x00\xa6+N\xb5E\x83\x81J\xdb\x11\
+\x966\xac\x8e\x8e\x97\x92{\x15\xe4!\xfbV\x84\xa5\x0d\
+\xebz`\xba\xeeRm\xd1p\xa0\xd2&\x84\xa5\x0d\xab\
+\x150]\xf7\xa8\xb6\x08y\x89\xc0\x15\x84\xa5\x0d\xab9\
+0]\x03T[\xf44P\xe9\xe5\x84\xa5\x0d\x0b\xb9\x9e\
+\xfd\xa0j\x8b\x12\x81Jk\x13\x966\xac&\xc0t\xc5\
+\xab\xb6h\x0cPiM\xc2\xd2\x86\x85<\xfd\xf5\x88j\
+\x8b\xc6\x89\xdd\xd5$,\x81\x5c\x09LW\x82j\x8b&\
+\x02\x95V%,mX\xf5\x80\xe9\x1a\xa1\xda\xa2)\x8e\
+\x9fX%,\x0fS\x07\x98\xae\x91\xaa-B\x96$V\
+\x22,mX\xb5\x80\xe9zN\xb5E\xd3\x81J\xcb\x13\
+\x96\x9f`%\xaa\xb6\xe8u\xa0\xd2\x8a\x84\xe5\xa7\xaf\xc2\
+gT[\xf4*Pi\x15\xc2\xf2\xd3\xc9\xfb\x93\xaa-\
+B^\x00V\x8d\xb0\xb4a]\xe1\x97\xfdx\xb2_\x04\
+*\xadAX\xda\xb0\x90\x0b\xa4\x0f\xab\xb6h<Pi\
+\x1d\xc2\xd2\x86\x85\xdc\xd2\x19\xaa\xda\xa2\xe7\x81J\xeb\x11\
+\x966\xac\xab\x81\xe9\x1a\xa4\xda\x22d{\xe7\x06\x84\xa5\
+\x0d\x0b\xd9\x8c\xf8~\xd5\x16!\xefUlLX\xda\xb0\
+Z\x02\xd3u\xb7j\x8b\x9e\x02*mJX\xda\xb0\x90\
+\xa5\xc9w\xaa\xb6\xe81\xa0\xd2\x16\x84\xa5\x0d\xab\x030\
+]\xbdU[\xf4\xb0\xd8\xa3\xb5\x84%\x90[\x80\xe9\xea\
+\xa5\xda\xa2\xa1|\xfc\xcbO\xb0\x90\x07V\xbb\xaa\xb6h\
+\x10Pig\xc2\xd2\x86\x85<b\x7f\x83j\x8b\x90\x97\
+\xa2\xdfFX\xda\xb0\x90MA\x9a\xa9\xb6\xa8\xa7\xd8\x83\
+j\x84%\x10d\x1b\xa3z\xaa-\x8a\xe5\xfeX~\x82\
+\x85<\xadWE\xb5E\xc8\xa3\xb5\x09\x84\xa5\x0d\x0by\
+\xf6\xa5\xa4j\x8b\x90\xc7>\x9e#,mX\xc8\xf2\xb9\
+@\xa6f\x8b.\x03*\x9dDX\xda\xb0f\x03\xd3e\
+\xa5j\xb6\xa8,P\xe8k\x84\xa5\x0d\x0bz\x81\xc0\x1e\
+\xcd\x16\x15\x01\x0a}\x97\xb0\xb4aA\xaf<\xd9\xa8\xd8\
+\xa1_\x91B\x17\x10\x966,\xe8%M\xdf)v\xe8\
+\x10R\xe8R\xc2\xd2\x86\xb5\x03\x99\xaf%\x8a\x1d\xda\x86\
+\x14\xba\x81\xb0\xb4aA/\xd5\x9a\xab\xd8\xa15H\xa1\
+\xfb\x08K\x1bV\x109'\x9e\xac\xd8\xa1\xcf\x10X\xe9\
+\x84\xa5\x0d\x0bz\xf7\x91\xe6\x83\x853\x80:Ke\x13\
+\x96:\xacF>Y\x9b\x8c\xdc\x22\xa8IX\xfa\xb0n\
+\x04&\xac\xa3b\x87\x90\x05\xa4\xcd\x08K\x1fVo`\
+\xc2\xaeR\xecP\x1f\xb9\xff\x00\x84%\x91x\xb1\xfd\xcc\
+\xdc\xcd\x0d@\x9dw\x10\x96>\xac\xd1\xc0\x84Ed\xe8\
+u\x08\xd9d\x22\x9e\xb0\xf4a%!?\xe3\x15\xdf6\
+\x1e\x0d\x94\xf9<a\xe9\xc3\xfa\x04\x81\xb5F\xad\xcc\xf4\
+\x80\xd8=h\xc2\x12\xc9\xf7\x08\xac\xc5je\xeeF\xca\
+\xfc;a\xe9\xc3:\x86\xcc\xd8\xabje~\x87\x94\xb9\
+\x95\xb0\xf4ae_\xec\x8b\x1d\xb2\x90\x05\x89\x81S\x84\
+e\x00\xac\xcb\x81)\xeb\xa2Ve\x22Pe\xc5l\xc2\
+2\x00\x16r\xe9\xfdr\xb5*\xef\x14\xdbk\x86\xb0\x84\
+\x82<a\x5c\xf4\x8cV\x95\xc8\xc3_\xdd\x08\xcb\x04X\
+#\x05O\x8b\xddKy\xa0\xc8\xc1\x84e\x02\xacw\xfd\
+p\xbd\xe1g\xa4\xc8\xb1\x84e\x02\xac\xe5\xc8\x9cMQ\
+*r%R\xe4|\xc22\x01\xd6Qd\xce\x86(\x15\
+\x09=\xfe\xb8\x81\xb0L\x80\x95]\x0e\x98\xb3?*\xd5\
+\xf8\x1cr\xab\xfc\x14a\x19\x01\xab\x85\xe0%\x22\xb7\xd2\
+Wn\xfd(a\x990i\xd6N\x9d\x1a\xebJ\xaes\
+%,\xfd\xaf\x19\xeb}\x95\x12\x7fA\xd66\x0c#,\
+3`}\x80\xc0z\x5c\xa5\xc4/E\xef\x94\x13\x96L\
+\xb6\x22\xb3\xa6\xb3\x0f)\xf2\x88\x8e\x95LXf\xc0\xca\
+B\xd67\x94\xce\xd2(1\x0e\x81\xb5\x97\xb0\xcc\x80\x95\
+\xdd\x1c\x99\xb6M\x1a\x15\xd6\x00\x0a\xac\x90MX\x86\xc0\
+\xfa\x13\x02k\xa6B\x81G\x90\x02;\x10\x96)\xb0^\
+2\xfd\xda;\xb4o\xc3\x93\x84e\x0a\xace\xc8\xbc5\
+R(0Q\xf6\x82\x08a\x09\xe5$\xb2\xe3L\xe0\x80\
+\xf7\x05^\x87\xc0\xdaAX\xa6\xc0\xcan\x8cL\xdc\x1c\
+\xcf\xcbK\x8b\x02\xca\x8b\x0e\x12\x961\xb0\xeeC`\xdd\
+\xebyy\x9f#\xe5\xc5f\x13\x961\xb0\xa6#3w\
+i\xd0\xeb\xf2\x86\x0b\xdf\x1a ,\xa9@;\xdcZ+\
+\xbd.\xaf\xbe\xe4*?\x08\xd6<\xc2\x82\x92Y\x12\x99\
+\xba\xa7=\xae\x0e\xba\xe5\x148,\x09k6aaA\
+^\xe0\x0b\xbe\x22\xde\xe3\xcbl\x0d\xb3%a\xcd ,\
+,c\xa1\xef\xc2\x1f\x0c\xbe\xd80D\x14\xd6\xeb\x84\x85\
+\x05z\xa0\xc2z\xc6\xd3\xdavG\x08\x9fbe\xcf\x0d\
+\xfb\xaf\xbfBXX2J!\x93W\xdb\xd3\xdf\x85\xe3\
+\xa1S\xacC6F\x08\x7fA\xda\x14\xc2\x02\xd3\x11\xfa\
+\xc8\xfa\xd6\xcb\xd2\xae\x96>\xc5\x02^T5\x81\xb0\xc0\
+@+\xe9\xac~\x1eV\xf6/K\xfa\x14\x0b\xb8\xc7\xfd\
+\x02a\x81Y\x0bM_\xf1\xa3\xdeU6\x00\xaa\xecC\
+;C$\x87\xfd\xe7G\x11\x16\x98`5h\xfe&y\
+V\xd8q\xe8\xec\xafx\x9a\x9d1\xbe2\xf6\x12\x9e\xff\
+ae\x0f\x84`U\xf7l\xd7\x99\xa9P]\xddl\x8d\
+\xf1\xcf\xb0\xff\xfe\xa3\x84\x85\xe6ch\x02\xadw\xbc\xfa\
+\xb9\xfa\x07\xa8\xac7m\x0d\xb2*\xec\xbf\x7f7a\xa1\
+I+\x06\xcd`\x03\x8f\x9e\xa9\x80\xb6\xc2\xb1\x22\x0e\xd9\
+\x1a$\xfc\xfd}\xbb\x12\x16\x9cN\xd8G\x967w\xcd\
+2\x1b@E\xb5\xb67\xcaF\xe9\x01\x0a5\xac71\
+X\xb5N{Q\xd4\xdbXQ\xe3\xed\x8d\xf2S\xd8\x03\
+\xd4#,8)\x17a\x93\xe8\xc5K1OU\xc7j\
+\xdal\xf3\xd0\x8d\xdf\x13\xc5\xcf\xb0\xb2\xbb`\x93X\xd6\
+\x83\xd7\x9f\x8c\xc6Jje\xf7\x0b7\xec\x9d!\x22\xb3\
+\x08K\xf8<\xd9\xb2\xe2\xc4+\xda\x82\xfd\xa0\xb0\xa6\xdb\
+\x1d\xa8t\xd8C\xa4\x10\x16~)\xb28(Kz\x9d\
+nV[\xac\x9e\x8bS\xed\x8e\x14\xfe7\xeeV\xc2\xc2\
+\x13\x07\xc2\x8a\xde%[\xcf\xf3`=\xfdm\x8f\x14\xfe\
+SJ_\x11\x16\x9e\xcf\xc0\x89\xb4Z\x88\xfe2\x5cV\
+\x04,\xc7\xfe\xa4\x87\xbf\x94\xf0m\xc2\xb2\xf1\xd5S\x03\
+\x95u\xbf`5\xbb\xab\x80\xc5\xd4\xb1\xbfJ\xac\xab\xa1\
+k\x1c\x0b\x08,\xf4G\xd8\xff\xe69\xb1Z\x8e]\x89\
+\xd62\xd6\xfe`w\x85=\xc8\x1d\x84e#{\xd1/\
+\x1f+0]\xa8\x94\xb4k\xd1RJ9\xf8\xc1\xf6\xb0\
+\xb1\x0f\x92\x14\x0cX\xd9\xdd\xe0\x8f\xac\xc04\x91BR\
+\xdb\xc2\x95\x0cw0\xdc\xa4\xb0G)\x9aNX6\x92\
+l\xe1\x19+P\xc7\xd1\xe6p\x19Q{\x1d\x8c7/\
+\xfcqV\x13\x96\x9d4\xb5!\xeb\x8e_\xdd\xaebs\
+}\xbc\x0aG\xbf#\x80\x87\x94&\x13\x96\x9d\xcc\xb6\x01\
+\xcbj\xbd\xcf\xdd\x22\xe6\x97\xc4k\x88\xd8\xe2\xe8\xe42\
+\xfc\x81\xba\x10\x96\x9d\x80\xeb\xea~\xbbR:\xd7\xc5\x12\
+N\x0c\x08\xd8(\xe1VGcf\x16\x0d\xff7\xc2)\
+\xc2\xb2\x93\x17-[\xe9{\xc8\xad\x02\xbe\xaaeg\xfc\
+\xc8\xf5\xceF\x05\xfe?\xcd%,;9Y\xd9\x9e\xac\
+2/\xb9\xb2\x0a~w\xef\x80\xad\xe1\x07:\x1c\x17\xb8\
+\xb8\xd1\x81\xb0le\xaae3\xf5\xdfs\xbc\xa4\xe4\xc8\
+S%\xec\x8d]\xda\xe9\x07&\xf2:\xa1e\x84e'\
+\xe95,\xdb\xb4f:\xbaw\xb8\x7fxI\xbb#\x8f\
+sz\xd4c\x80\xc1\x9a\xfcJXv\xf2\x96e?\x95\
+\x12\xb6\xdb\x1c5kI\x5cQ\xdb\xc3\xd6t|B\x0d\
+=\xa3\xd4%\x93\xb0\xec\xfcB\xba\xc2\x81,+\xe2\xfa\
+W\xf0]\x95\x83+\x1f\xab\xe1dP\xe7\xfb\xec\xed\x80\
+\xc6\xeb\xfe3a\xd9\xc8\xe7\x96\xb3D\xb6\x1d\xbd\x1c\xf8\
+?}l\xc1\xa0\x1a\xce\x06\xbc\xc9\xf9\xe67\xc1\xd2\xd0\
+\x88\xb5?!,\x1b\xe9i9N\xd9N\xcf.:\x18\
+\xfa\xc3q\xfd[\x83\x9aF:\x1d\xab\xccn\x17\x8e\xb9\
+58h\xdb\xf9\xa7\x08\x0b\xcd\xce\x12\x96+)\xdf\xe6\
+\xde?\xcf\xf9\xfa\xa7\x5cn\xdb\x1e\xdd\xf0\xe9\x1bO\xf4\
+l\x10\xe5\xca0o\xb9q\xcc\x03q\xcf}^^\x9d\
+\xf3\xd02R\x0el\xdf\xb0z\xe9\x92\xf7\xff\x9a4m\
+\x5cb\xc2\x90\x01\xbd\xe3b\x7f\x22\xac\xfff\xb4\xe5j\
+J]\xd6\xf0\xda\xd8\x1eqqw\xc6\xc5\xc5\xdd\x1c\xdb\
+\xacn\xa5(7\xff\xba;\xf7X\xa6\xd9\x1a;P\xa5\
+e\xb7\xb8?\x0d\xb87\xae{l\x9b\x98z\xb5\xca\x97\
+\xcd\xf5_}KX\xbf]rh`\xf9&\xd1\xee<\
+\x85\xb6B\xb0\xc4\xc5\x84\xf5[V\x17\xf5\x0d\xac\xf7\xdc\
+9\xe2\x8c2r%\xce!\xac\xb3\x19\xe5\x17W\x0f\xba\
+u\xc4\x9d\xe5jL\x22\xac\xdf\xff\x03\xb7\xf0\x87\xab6\
+\xae='4Q\xae\xc8\x09\x84\xf5{6\x95\xf4\x83\xab\
+\xcb\x5c[T\x91\xbdF\xae\xca\xa7\x09\xeb\x9c,\x0c\x98\
+\xef\xaa\x98\x8bo\xf5\xc9*/Vf<a\x9d\x9b\x04\
+\xf3a\xcdr\xf3xo\x11+\xb3?a\x9dwY\xfc\
+&\xd3]\x8dq\xf5xg\x88\xd5\xd9\x83\xb0\xce\xcb\xb1\
+\xfaf\xbbz\xd2\xdd\xc3E\xf7\x07\x0b?7\x10\xd6\xf9\
+\xd9}\x99\xc9\xae\x5c?s\xe9$Ui\x0ca]\x90\
+\xad\x97\x98\xeb\xaa\xbf\xeb[\xa0\xcd\x91*\xb5\x0ea\xe5\
+\xb8\x02_\xdaTW}\xdd_lw*Z\xa8\xd6\x8a\
+\x84\x95#\xcb\xa3\xcdt5Xb\x11g\xbcP\xb1Q\
+\x84\x953\x1b\xab\x1a\xc8*\x90(r\xac?E\x0a\xd5\
+\x9bNX9\xb3\xa3\x8eq\xae\xa2\xa4\xf6\x98\xef%T\
+\xf0!\xc2\xca%\xfbcL[(\xf3\x0f\xb1SJ\xa1\
+\xbb\x0d[\x08+\xd7\x93\xda~F\xb9j\xb4Y\xeeP\
+o\x93)y\x15a\xe5\x9e)E\xccq5P\xf2\xa9\
+\xbe-2\x17I\xbf$\xac<\xb2\xb4\x8a!\xac\xca\x08\
+\xef\x9c0B\xa4\xea\x05\x84\x95W\x8e\xden\x84\xab\xe6\
+\xdb\x85\x8f\xf3T]\x89\xb2\xdf&\xac|\xaeK\x1bp\
+E\xab\xc8.\xf1\xc3\x5c)\xf1e8\x99\xb0\xf2\xc9\xbe\
+\x1e\xfa\xb2z\xcb\x1f\xe6K\x02e\x8f\x22\xac|\x93\xdc\
+P]\x96\x07O ?\xe8~\xd5\xc3\x09+\xff\x9c\x99\
+\xa8}\xef\xb0\xb6\xfcN/\x19]\x5c\xaf\xfa~\xc2\x0a\
+\x95\x83\x0f\x15\xd7\x955B\xfe\x18\xd3\xbb\xbb]\xf4m\
+\x84\x15:\x07ti]\xb4\xd1\x83\x0f\xe6\xbb].\xba\
+\x03a\x85E\xeb\x912\x8a\xb2\xae\x0bzp\x88\x13\xdd\
+\xbd\x1d}\x0da\x85\x97\x13I\x8d\xf4d\xbd\xe5\xc5\x11\
+.w\xf5\xd6\xfb\x95\x84\x15\xfe/\xc4^\x17)\xc1*\
+\x7f\xc4\x8b\xe3K\x1d\x18\xe1^\xc9U\x09\x0bH\xca\xf4\
+\xeb#Td\xf5\xf7\xe6\xf8V\xb6t\xad\xe2R\x84\x85\
+e\xcf\x84\x96\x0a\xb6\x02K\xbd9\xba\xe0GM\xdc\xaa\
+8\x93\xb0\xd0\x1c~\xb7\x8f\xe7\xf7z\xea{\xb5\x223\
+\xf8Y'WVh\x95J%,\x1b\xc9\xfcv\xcc\xcd\
+\xde\xfeN|\xce\xbb\x83\xdb\xfalM'\x95F\xd4\xb9\
+u\xd4\xc2\xed\xc1l\xc2\xb2\x99\xacu\xd3\xfa\xd6\x8f\xf4\
+\x0aV\xb1\x1f=<\xb4\xe0\xf2'm\xdd\xca*{\xdd\
+\x90\xe9+N\xaa\xcf\x8c\xcfa\xfd\x7f\xd2VN\x1f\xd2\
+\xb6\x22:\x01\x17\xc7\xe2\xf3\x16\xeb\xf1\x91\xed\x9du\x7f\
+\xe3\xb0\xf7\xa2\xbb\xa8^\xb7\xe1IK\xf7\x192)\x05\
+\x01\xd6\x7fr|\xed\x82??\xd0\xb1\xd1%a\x9c\x9d\
+Tn\xd3o\xd2\x8a\x8c\xec\x0d\xf8\xfe\x81\xb3\xbc?\xae\
+3\xeb\xde}\xbcC\xb5|~\xacDT\x89\xe9:x\
+\xf2\xe2m\x19FMG\xc1\x81u\xf6\xd4k\xff\xdaO\
+\xdf\x9966a\xd0\x9d\xddcccbb\xae\xaaU\
+\xabV\x83\x98\x98\x16\xb1\xb1]\xee\x8a\x1f9\xf9\x9d\x8f\
+\xd7\x9d\xfd\x9e\x18\x0e\xc3\xba$E\xe9\xa82\xf6\xad^\
+\xf4\xfa\xa8\x07o\x8f\xeb\x14\xdb&\xa6Q\xad+c\xda\
+w\x8a\xbb\xe7\x81\x11S\x17.\xdf\x9ba\xe44\x14<\
+X\xc8w(\xfe\x96\xc4\x81\xd9\x0ca\x85\xcc\xfb\xf8\xcf\
+\xadoh\x86\xb0B\x07\xdfZ\xb6\xe1\x19\xa2!\xac\x90\
+\xd9V\x0c\x965\x9eh\x08+t\x12aX%\xb6S\
+\x0da\x85Lz=XVG\xaa!\xac\xd0\xb1\xf12\
+\xbb\xf9dCX\xa1s+\x0c\xab\xca/tCX!\
+\xb3\x07\x7feA<\xdd\x10V\xe8L\xc0/f-g\
+\xd7\x08+d2\xf0uu\x8d3\xd86\xc2\x0a\x99\xaf\
+\xf1Uu\x93\xd95\xc2\x0a\x9d\xfe\xf8\xda\xcc=\xec\x1a\
+a\x85\xccQ\xfcEI=\xd95\xc2\x0a\x9dW\xf1\x8b\
+Y\x1f\xb1k\x84\x152Y\xad`X\xd5O\xb0m\x84\
+\x152\xab\xf1u\xf3\xc3\xd95\xc2\x0a\x9d\xc1\xf86\x7f\
+k\xd85\xc2\x0a\x99T|\x1b\xdd\xe6Yl\x1ba\x85\
+\xccL\xfc\xfc\xfd/\xec\x1aa\x85N{\x18V\xe9}\
+\xec\x1aa\x85\xccF\xfca\xb0\xde\xecZ^YEX\
+g\xf38\xfee\xf8)\xbb\x96{\xd6D\x13\xd6\xd9\xa4\
+\xd5\x80a\xd5\xf9\x95m\xcb\xc3\x15a\xfd\x9e\x05F\xee\
+y\xebSW\x84uN\xf0\x0d\xb1\xbd\xd8\xf3\xd6\x9f\xae\
+\x08\xeb\x9c\xec,\x01\xcbj\x1bd\xdbruEX\xe7\
+f\x94\xa1{\xde\xfa\xd0\x15a\x9d\x9b\xd3\xf8\xc3`\xd1\
+\x87\xd9\xb6\xf3\x5c\xfd\xb6\x04\x89\xad87_\xe0\x1fY\
+w\xb3k\xb9\xb9\x22\xac\xf3\x83\xbfD7\x90\xcc\xae\x9d\
+\xcd\xda\xdf\x97L\xb2\x19\xe7\xe5\x00\xbe\xab\xe9\xe5\xa7\xd8\
+\xb6\x9c\xae\x08\xeb\x82L2z\xcf[\xff\xb8\x22\xac\x0b\
+b\xe3a\xb0\xa8\xcdl[\x0eW\x84ua\xbe\xc1\x1f\
+\x06k\xc7\x8bY9\x5c\x11V\x8e\xdc\x03\xc3j}\x90\
+]\xcb\xfe\xd7\x05/t`G.\xcc\xd1\x0a\x18\xabk\
+\x17\xb1g9>\xaf\x08+\x97\xbc\x86l\xe3\xd0u\x15\
+\x1b\x96\x9b+\xc2\xca\x99\xack\xc2>m\xef\xf7#\xdb\
+\x95\xbb+\xc2\xca%\xeb\x8a\x84\xb74y\xd8~\xf6*\
+/W\x84\x95[\x86\x86\xc1\xaar\x22\xf7_\xcb\xc7\x15\
+a\xe5\x96\xd4KC\xae\x1d\x9d\xc2\xeb\xed\xf9\xba\x22\xac\
+\x5c3+\x7fV133\xd9\xa3\xfc]\x11V\xeei\
+\xcf\xeb\x0b\xce\x5c\x11V\xee\xd9\x12\xc5\xeb\x0b\x8e\x5c\x11\
+V\x1ey\x82\xd7\x17\x1c\xb9\x22\xac<\x92V\x93\xd7\x17\
+B\xe7\xfb\xbc\xb7\xaccs\xf2\xc8B^_\x08\xed*\
+\x9f\xbb_\xecN^\xe9z\xc1\xf5\x85t\xb6\x04pE\
+Xyf\xd7\xc5\xbc\xbe`\xdf\x15a\xe5\x9d\xd1\xbc\xbe\
+`\xdf\x15a\xe5\x9d\xd3\xf5\xffs}a5[\x81\xbb\
+\x22\xac|\xb2\x84\xd7\x17l\xbb\x22\xac\xfc2h\xe4\x11\
+6\xc1\x9e+\xc2bD\x5c\x11\x16#\xe2\x8a\xb0\x18\x11\
+W\x84\xc5\xa0Y\x17\xd6\xd3&\xec\x13#\xe1\x8a\xb0\x18\
+\x11W\x84\xc5\x88\xb8\x22,F\xc4\x15a1\x22\xae\x08\
+\x8b\x09??T\xb6\x08\x8bQuEX\x8c\x88+\xc2\
+bD\x5c\x11\x16#\xe2\x8a\xb0\x18\x11W\x84\xc5\x84\x93\
+M\xa8+\xc2bD\x5c\x11\x16#\xe2\x8a\xb0\x18\x11W\
+\x84\xc5\x88\xb8\x22,F\xc4\x15a1\x22\xae\x08\x8b\x11\
+qEXL\xbe\xae\xaaX\x84\xc5\x18\xe4\x8a\xb0\x18\x11\
+W\x84\xc5\x88\xb8\x22,F\xc4\x15a1\x22\xae\x08\x8b\
+\x11qEXL\xae\xd9\xec\xd0\x15a1\x22\xae\x08\x8b\
+\x11qEX\x8c\x88+\xc2bD\x5c\x11\x16#\xe2\xea\
+\xdfK\xb1\x10m(`\xee\x87\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
+\x00\x00\x01\xdc\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00O\x00\x00\x00O\x04\x03\x00\x00\x00X\x1a\x85\xb5\
+\x00\x00\x000PLTE\x00\x00\x00\xff\xff\xffA\xcd\
+RP\xcaNA\xcdRA\xcdRF\xccPH\xcbP\
+B\xccQI\xcbPE\xccQJ\xcbOE\xccQD\
+\xccQC\xccQA\xcdR\x000]\xbe\x00\x00\x00\x0f\
+tRNS\x00\x00\x186Oc\x9d\xab\xae\xb8\xc9\xcd\
+\xd6\xe9\xf0\xbb\x00_o\x00\x00\x01LIDATH\
+\xc7\xc5\xd6\xbdM\xc4@\x10\x86\xe1+\x01:\x98\x80\x8c\
+\x0aH\x11\xf9\x227@\x09HT\x80\xdc\x05\x11\x92K\
+\xa1\x01$\xebJ\xa0\x00\x12K\xd6\xc9\xd6\x10\x9c\x7f\xd6\
+\xbb\xb3;o\xc6\xc4\x8f>\xe9\xee\xbe\x9d\x9b\xd3)\x9b\
+\xd0\x9f\xd8\x84\xf9\x11B\x1d\x04Bm(d\x91Aa\
+dP\xd5Q \xd4\x96B\x12\x19\x14F^\xe1E \
+\xd4\x8eB?r\x81\xfaE\xe1,\x10jO\xa1W\xb7\
+\x0dz\xdd\xd8\xa1\xd3\x8d\x08\xd6##X\x8f\x8ca\xd4\
+\x8d\xbb\xa7t^\x22\x18u\xe3U\xab\xb3G~\xd6\xe1\
+\x1e\xe9\xc1\xad\x1b\x1e\xdc\xea\xe6\xc25\xd2\x85k\xdd|\
+\xb8\xd4\xcd\x87K\xdd\x00\xbcF\x02\xa8?\x02\xa16\x14\
+\x0e\x02\xa16\x14\x8e\x02\xa1\xbeS\xf8\xfb\x7f\xf0\x19\xc2\
+3\xfc\xd43\xfd\xc2{\xf8\x13N\xb4\x14\x1d\xac\xd9\x85\
+\xf6\xb1\x83\x0d\x1f\xe9\x9bi\xe1+\x1c\xe9\xbbn\xe1\xa6\
+\x18\xe8\xee\xd9v\xee\xc3G:\xdff\xa0\xb3\x9a\xabK\
+<\x1c\xeb\xb5\xcem:7!\xdbO>\x8c\xff\x0dk\
+p\x12\x08\x0fG@\x05\x1eo\x80\x0a<^\x15e\x98\
+\x9c>e\x98\x5c>E\x98\xdeRE\x98\x9eR%\x98\
+\xb5\xa1\x04\xb36\x14`^\xaf\x02\xcc\xebe\xc3\xb30\
+h][&\xb4\x8e-\x0bN\x02\xa1yc\x1a\xd0>\
+1sx\xfff\xb9?\x9e\xd1\xe7wR\xc2\xd3\xb8\x00\
+\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x13H\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x01\x90\x00\x00\x01\x1e\x08\x03\x00\x00\x00\x93\xdb\xb3V\
+\x00\x00\x00\x09pHYs\x00\x00\x1a]\x00\x00\x1a]\
+\x01\x87\x7f\xcb\xb2\x00\x00\x00\x19tEXtSof\
+tware\x00www.inksca\
+pe.org\x9b\xee<\x1a\x00\x00\x02\xfdPL\
+TE\x00\x00\x00\x00\xff\xff\x00\xff\x80U\xff\xaa@\xbf\
+\x803\xcc\x99+\xd5\x80$\xdb\x92 \xdf\x809\xe3\x8e\
+3\xe6\x80.\xe8\x8b+\xd5\x80'\xd8\x89$\xdb\x803\
+\xdd\x880\xdf\x80-\xe1\x87+\xe3\x80(\xe4\x86&\xd9\
+\x801\xdb\x86.\xdc\x80,\xde\x85+\xdf\x8a)\xe0\x85\
+'\xe2\x89/\xe3\x84.\xdb\x89,\xdc\x84+\xdd\x88)\
+\xde\x840\xdf\x87.\xe0\x83-\xe1\x87,\xdb\x83+\xdc\
+\x87)\xdd\x83/\xdd\x86.\xde\x83-\xdf\x86,\xe0\x83\
++\xe1\x86*\xdb\x82.\xdc\x85-\xdd\x82,\xde\x85+\
+\xde\x88+\xdf\x85*\xe0\x87.\xe0\x85-\xdc\x87,\xdd\
+\x84+\xdd\x87+\xde\x84*\xdf\x86.\xdf\x84-\xe0\x86\
+,\xdc\x84+\xdc\x86+\xdd\x84.\xde\x86-\xde\x84-\
+\xdf\x86,\xdf\x83+\xe0\x85+\xdc\x83.\xdd\x85-\xdd\
+\x83,\xde\x85,\xde\x87+\xdf\x85+\xdf\x87-\xe0\x85\
+-\xdd\x86,\xdd\x85,\xdd\x86+\xde\x84+\xde\x86-\
+\xdf\x84-\xdf\x86,\xe0\x84,\xdd\x86+\xdd\x84+\xde\
+\x86-\xde\x84,\xde\x85,\xdf\x84+\xdf\x85+\xdd\x84\
+-\xdd\x85-\xdd\x84,\xde\x85,\xde\x86+\xde\x85+\
+\xdf\x86-\xdd\x86,\xdd\x85,\xde\x86+\xde\x85+\xde\
+\x86-\xdf\x85-\xdf\x86,\xdf\x84,\xdd\x86+\xdd\x84\
++\xde\x85-\xde\x84,\xde\x85,\xdf\x84,\xdf\x85+\
+\xdf\x84+\xdd\x85-\xdd\x84,\xde\x85,\xde\x84,\xde\
+\x85+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85,\xde\x86\
+,\xde\x85+\xde\x86-\xde\x85-\xdf\x86,\xdf\x85,\
+\xdd\x85+\xdd\x84+\xde\x85-\xde\x84,\xde\x85,\xde\
+\x84,\xdf\x85+\xdf\x84+\xdd\x85-\xdd\x84,\xde\x85\
+,\xde\x84,\xde\x85+\xde\x86+\xdf\x85-\xdd\x86,\
+\xdd\x85,\xde\x86,\xde\x85+\xde\x86-\xde\x85,\xde\
+\x85,\xdf\x85,\xdd\x85,\xdd\x85+\xde\x85-\xde\x84\
+,\xde\x85,\xde\x84,\xdf\x85,\xdf\x84+\xdd\x85-\
+\xde\x84,\xde\x85,\xde\x84,\xde\x85,\xde\x86+\xdf\
+\x85-\xdf\x86,\xdd\x85,\xde\x86,\xde\x85,\xde\x86\
+-\xde\x85,\xde\x85,\xdf\x85,\xdd\x85,\xdd\x85+\
+\xde\x85-\xde\x85,\xde\x85,\xde\x84,\xde\x85,\xdf\
+\x84+\xdd\x85-\xde\x84,\xde\x85,\xde\x84,\xde\x85\
+,\xde\x86+\xde\x85-\xdf\x86,\xdd\x85,\xde\x86,\
+\xde\x85,\xde\x85+\xde\x85,\xde\x85,\xde\x85,\xdf\
+\x85,\xde\x85,\xde\x85-\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xdf\x85,\xdd\x85-\xde\x84,\xde\x85,\
+\xde\x84,\xde\x85,\xde\x86,\xde\x85-\xdf\x86,\xdd\
+\x85,\xde\x85,\xde\x85,\xde\x85+\xde\x85,\xde\x85\
+,\xde\x85,\xdf\x85,\xde\x85,\xde\x85+\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xdd\x85-\xde\
+\x85,\xde\x85,\xde\x84,\xde\x85,\xde\x86,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\
+\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\xbf\
+\x5c\xdf:\x00\x00\x00\xfetRNS\x00\x01\x02\x03\x04\
+\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\
+\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\x22#$\
+%&'()*+,-./01234\
+56789:;<=>?@ABCD\
+EFGHIJKLMNOPQRST\
+UVWXYZ[\x5c]^_abcde\
+fghijklmnopqrstu\
+vwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\
+\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\
+\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\
+\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\
+\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\
+\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\
+\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\
+\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\
+\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfeV\xf3|\x8f\x00\x00\x0e\
+\xc2IDATx\xda\xed\xddy|NW\x1a\x07\xf0\
+\x9b}A\x88\x18\xc5\x08\x95\xc6\xbe7(e*\x94Z\
+\x83\xb6t\xaa\x22cmP\x8dA\xd1N-E\x8d)\
+UK-U\xc5\xd8F\xa2C\xec%j,\xa1*v\
+\xad6\xda\xd4:\x12%!MR\x917y\xcfg\x92\
+\x98\x96\x90<\xe7\xde{\xce\xbd\xce\xb9\xf7\xf9\xfd\x9d\xf7\
+<\xf7\x9co\xde\xf7n\xe7\x9e\xab(\x1a\xe2\xfb%\xc1\
+\x18\x1c\xf4\x90\x17\xc4w\x0f\x0e\x97H \xe8!\x16\x08\
+z\x88\x05\x82\x1eb\x81\xa0\x87X \xe8!\x16\x08z\
+\x88\x05\xe2\x83\x1eB\x81\xf8\xc4\xe10\x89\x04\x82\x1eb\
+\x81\xa0\x87X \xe8!\x16\x08z\x88\x05\x82\x1eb\x81\
+\xa0\x87X \xe8!\x16\x08z\x88\x05\x82\x1eb\x81x\
+m\xc3\xc1\x11\x09\x04=\xc4\x02A\x0f\xb1@\xd0C,\
+\x10\xf4\x10\x0b\x04=\xc4\x02A\x0f\xb1@\xd0C,\x10\
+\xf4\x10\x0b\xc4k+\x8e\x89H \xe8!\x16\x08z\x88\
+\x05\xe2\x89\x1eB\x81\xa0\x87X \xe8!\x16\x08z\x88\
+\x05\x82\x1eb\x81\xa0\x87X \xe8!\x16\x08z\x88\x05\
+\x82\x1eb\x81xn\xc1q\x10\x09\x04=\xc4\x02\xf1\xda\
+!\xdcF\xa5\xa7\x15&\xdb\x96 ^\xdb\x85\xd8\x8e\xbc\
+\x0b\xbbWL\x1f\xf9\xf2sM\x82\xfc]\x1f\x98\xacW\
+\xa9V\xb3N\x11\xe3\xe7F\x1fM\xb3\x0d\xc8\xe3\xf7\xb8\
+\x14;\xb9W]/\xda\x83*\x01-\x07\xce?\xf8\x8b\
+\x0d@\x1e\xef\xf7\xe2\xe4\xdc^\x154,\xb7\xe2Zo\
+\xd8\xbf\xae!\x88Q{\x8a\x98~\xe5\x15\x1d\xa9?\xe1\
+p\x1e\x82\xf0\xce\x9d\xf5]=\x15\xdd\xa9\xf8F\x02\x82\
+\xf0\xcc\xe9\xc8r\x0ac\xea\xcf\xbe\x85 |\xe2\x8c\x0b\
+sQ8\xa4\xf4\xd0s\x08\xc2!\xb1\x0d\x14^q\xed\
+\x9f\x84 \x8c\xd9\xd7R\xe1\x19\x8f\xc8\x14\x04aHJ\
+\x84\x8b\xc29\xe5\xe6\xe5\x22\x88\xde\x9d\xc7\x92r\x8a\x01\
+iq\x16At\xe5F\x0f\xc5\x98x\xcfs\x22\x88\xf6\
+\xec\xad\xa2\x18\x96\xb0[\x08\xa25\x8b\xdc\x15\x03S\xfb\
+\xbc\xae\x8d:\xe2_r&Y\x1a\xc41B16\xe5\
+u-\xf2\x1c\x0f\xb4\xf8\x96\x95A\x1c\xfd\x14\xa3\xe3\xb9\
+\x09AT\xe7\xee\x8b\x8a\xf1\xf1\xd8\x80 *\x93\xdbC\
+1#\xee[\x10D]F(\xe6\xc4'\x1eA\xd4d\
+\xaabV*\x9cG\x10z\xb6\xb9\x98\x06\xa24\xc8B\
+\x10Z.\x05(&\xe65\x04\xa1$\xa7\x85bjV\
+ \x08\x9c\xf7\xcc\xf5P\xca^F\x10(gt\xde8\
+/S\xde\xdfK\xdf'\xbb\x22\x08t\x06\x12\xa2\xed\xde\
+F\xcb\xf0)k\x8e$\xa5f\xde\xfbtZrb\xdc\
+\xe21=\xebk\xbb\x0a\xb6\x06AJ\xceb\xf5\xe3X\
+\xaa\xc3\xcc\xf8\x9c\xe2[\xc9\x8c\x1b\xdf\xc6CuC\x95\
+\xd2\x11\xa4\xa4\xa4\xa9\x9d\x04Wv\xe0^\x07\xdcT\xea\
+\xb2PW\x95\x8d\xbd\x8d %%J\xdd\x08\x06\x7f\x9c\
+\xa1\xa6\xb5\xc4a\xbe\xea\xeeW]@\x90\x12NAT\
+\xed\x97\xab/W}S\xfc\xda\x08U\xc7\x08\x83\x10\xa4\
+\xf8\x0cVs\x8d6*SK\x93\xe7\x9fW\xd1\xa6[\
+\x22\x82\x14\x97\x1fU\xec\x88\xeb\x9e\xd6\xd8\xa8s\x8e\x8a\
+/I\x04\x82\x14\x97H\xfa\xc8\xf5\xcd\xd4\xde\xecQ\xfa\
+\xbdy\x8f\xcb\x08\xf2hn\xf8P\x07\xee\x1d]\xb3E\
+.\xd3\xa7>\x8eE\x10=\x17M\xa6\xe9l\xf9\xd6\xd3\
+\xb4\x96\xfdn#\xc8\xc3\xb9[\x896j\x13u\xb7\xfd\
+sMZ\xdb\xf3\x11\xe4\xe1l\xa0\x8dY\x1f\x86\xd9m\
+\xdf\xfbS\x1ao\x88 \x0f\xa73\xed^\xd2\xaf,\xad\
+o\xa6\xdd\xf5J@\x90\xa2\xb9H\xb9\xd0\xe1\xcd8!\
+w\x18\x05$\x12A\x8af\xbaA;\xf4\xdf\x92Q\x95\
+2q.\x07A\x8a\xa4!e\xea'\xf3\xa2\x00\xb4}\
+\xd4v\x04y0\xdfQ\x86+\x9a\xbdD3\xb8\xc2_\
+\x10\xe4\xc1L\xa6\x5c1\xe1\xf0\x5c\xf3\xbf)W\xf4\xb3\
+\x11D\xfd/\xd6Z\x0e%\x9c\x94\x13\xf68\x04y\xe0\
+\xea\x06|T\x1a\xec\xe0Qd\x0d\x0c2\x0aA\xee\x87\
+r\xebv!\x97\x22\x8e\xca`\x91\x9a\x08r?a\xf0\
+9\x08\xa7\xa5}\xc6\xc0\xec\xe7\x11\xe4\xf7\xff\xdd2\xe0\
+H\xfd\x99S\x99\xb30\xc8b\x04\xf9-\x87\xe1\x91\xe2\
+\xb6bZcVw\xbb\x80\xcc\x00\x07\xea\x09\x07\xaf:\
+\xb3\xc1:\x15\x9d\x08\xf2\xfft\x02\x07j8\xbf\x0bf\
+\xf07\xf1\xd1\xa5P\x16\x0d-\x1a\xe8I\xa2\xc6C\xe9\
+q\xc8\x01\x92\x0b\xefB8\xae\xb9Y\x07,\xf4\xe9#\
+\x7f\xdf\x8b\xf3L\xe2l9@N\xc3Ogf\xf0\xab\
+\xf4&Xi(\x82\xdc\xcb\xa7`':p\xac\xb4\x0d\
+\xac\xd4\x04A\xeee\x08\xd8\x89Y\x1c+e\x82S\xf1\
+\xdc2\x11\xa40M\xc0N\x9c\xe6Y*\x14,u\x08\
+A\x0a\x92\x03Ne+\xcdu5\xa5\xf1\xe0x-A\
+\x90\x82\x9c\x01\xfb\xd0\x96k-\xf86\xd5\x08\x04)\xc8\
+Z\xb0\x0f|\xcf\xb7.\x80\xb5\x9eC\x90\x82L\x00\xfb\
+\x10\xc3\xb7\xd8\x1f\xa0Z\xfe\x08R\x90\x9e`\x1f~\xe2\
+[\x0c\x9emt\x1dA\xf2\xd3\x08\xeaB\x00\xe7b\x7f\
+\x03\x07\xec\x08\x82\xe4\x07\xbcp\xd2\x9as\xb1\xd5\xe0\x80\
+\xadG\x10Bn\x82]\x18\xc0\xb9\xda\x11\xb0\xdaL\x04\
+!$\x01\xec\xc2\x0c\xce\xd5\xd24\xcd_\xb4%H\x0c\
+\xd8\x85\xcfy\x97\x03_\xb0\xd0\x09A\x08\xf9\x00\xec\xc2\
+\x19\xde\xe5\x9e\x81\xaa\xd5B\x10\xca4h\x97_y\x97\
+\x0b\x87\xcay\xe5!\x08\xe9\x02\xf5\xa0\x0a\xf7r\xf0\x1c\
+\xc9\xab\x08B\xeaB=\x08\xe1^n\x098b\xf1\x08\
+B\xfc\xa0\x1et\xe7^.V\xcb1\x84\x1dAr\xc0\
+Y\xa4C\xb8w\x00>\x11\xf9\x04AR\xc0\x1e\xf0_\
+\xbf\x1b\x9ey\xf2w\x049\xc7:\x9bPc\xb2\xc1o\
+\xe48\x04\x89\x07{\xb0\x91\x7f\x0f\xc03\xc3\xc1E\xff\
+\xf6PL\xd1L\x03>\xda#\x86\x9e<\x09@\xb6\x80\
+ \x87\xf9\xf7\xa0\x1eT\xef%\xfd\xff=V\x99\xb9\xb8\
+\x02\x04\xf9\x96\x7f\x0fZA\xf5B\x11\x04\x9eo{\x85\
+\x7f\x0f\xc0y\xab\x8d\x10\x04\xbec\x94\xce\xbf\x07\xbd\xa1\
+zU\x11\x04\xbe\x94e\xc0^p T\xd0\x17A^\
+\x85\xc6\xa7\x8c\x01=\x18\xc5p`j\x07\x10p\x8a\xc3\
+\x1f\x0d\xe8\xc1D\x10\xe4\x17\xdb\x83t\x85\x86\xa7\xae\x01\
+=\x80\xef\xbf\xdc\xb4=HGhx\x9a\x19\xd0\x03\xf8\
+r\xef5\xdb\x83\xb4\x85\x86\xa7\x95\x01=\xf8\x0c\x04\xb9\
+d{\x10\xf0<\xedO\x06\xf4\xe0\x9f \xc8\x0f\xb6\x07\
+\x01\xd7\x84io@\x0f\xd62\x5c\x1a\xb0\x03\x088o\
+\xf1\x05\x03z\x10\x0d\x82\x9c\xb4=\x08\xf8\x1cfW\x03\
+z\x00\xaf\x0at\xd4\xf6 OA\xc3\xd3\xc3\x80\x1el\
+\xd1rS\xdd\x86 \x81\xd0\xf0\xbcl@\x0fv\x80 \
+{m\x0f\x02.\xd7\xfb\x8a\x01=\x88\x03A\xbe\xb0=\
+\x08\xb8fR\x1f\x03z\xb0\x07\x04\xd9e{\x90j\x0c\
+7\xf0te'\x08\xf2\xa5\xedA\x82\xcd\xde\xa9o\x05\
+A\xf6\xd9\x1e\xa4\xae\xd9\x87\xbd\x1b\xf1(\x0bLc\xb3\
+O\x0c\xe1\xc7\x1f\xbe\xc2K'f_:Y\x07\x82$\
+\xd8\x1e\xe4YM\x0f\x8es\xc8*\xbct\x02&\xd4\xec\
+\xcb\xef\xf0\xbc\xa3\xb3\xb6\x07y\x01\x1a\x9e\xa7\x0d\xe8\xc1\
+R\x86\xc7\xe2\xed\x00\xd2\x0d\x1a\x9e\x9a\x06\xf4`\x0e\x08\
+\xf2\xb3\xedA\xc0\xf9\xcc\x95\x0c\xe8\xc1{ H\x96\xed\
+A^c\x98&\xa5+c\x19&\x82\xd9\x01\xe4\x0dp\
+|r\xf9\xf7`(T\xb0\x14\xb1=\xc8$\xf0\x17\xe4\
+\x16\xff\x1e\xf4\x85\xeaUD\x90\x8f\x18&\x81\xe8\x0a\xb8\
+\xce|\x10\x82\xc0\x93@\xbe\xe1\xdf\x03p\xdeQs\x04\
+\x81/\xbe\x1e\xe0\xdf\x83\xa6Z\xd6\xd6\xb0!\xc8!\x10\
+$\x86\x7f\x0f\xc0;b\xe1\x08\x02\xbf\x0el\x1e\xf7\x0e\
+\xe4\xb9C\xf5\xa2\x10\xe4:\x08\xf2\x0e\xf7\x0e\xc0\x8fa\
+OE\x10\x07\xf8\x98\xf2@\xee\x1d8\x05\x82,D\x10\
+xi\x8d.\xdc\xcb\xedb\xd9g\xd9\x02\x04|L\xb9\
+)\xf7r+\x19n\x18\xda\x03\xa4\x1b\xc3\x99\xb3\x8e\xfc\
+\x03\x04\xb9\x8c d\x84\xb9\xd7N^\x87\xaa\xb99\x10\
+\x84\xccb\xb8\xc7\xad#\xcfC\xd5\x02\x09\x82P\xd6\xc7\
+_\xc7\xbb\x5c5\x96[\xc6\xb6\x009\x06\x82L\xe1\x5c\
+\xed\x8e+\xcb\xd4U[\x80\xc0\x0b)\xf7\xe3\x5c\xed[\
+\xa6\xf3P{\xbc6\xcf\x8f\xe1\xf2\xab\xe6l\x06AV\
+\x22\x08\xa1<\xd4\xe6\xcb\xf9\xd5\x7f3YNCl\x02\
+\x02/\xdbv\x8ao1p\xe9\x19%\x0dA\x08m=\
+\xa0e|\x8bUg:\x0d\xb5\x07\xc8z\x10\xe4u\xae\
+\xb5n(L\x8f\xc5\xdb\x03\x04>\xf0\xe1\xbb\x942\xfc\
+\x80\xe1H\x04)\x88\x03|\xdb\xa3\xe7\x1d\x9e\xb5\xa6\x81\
+ \xcb\x11\xa40\xcd\xc1Q\xda\xcd\xb3Tg\xb6\x03\x08\
+\x9b\x80\xc0\x97\x17\xc7\xf0<O\xf7\x85*y\xe7 H\
+a\xe0\x99@\xf58V\x82\xefN\xb5 \x08R\x18x\
+\x9e\x03\xcf\xc9r\xa3\xc1B\xc3\x99@F[\x07\xc4\x09\
+.6\xfd\xe8\x1bj\xf5\xa7>Xh=\x13\xc8H\xeb\
+\x80P^-\xc9\xef\xc9O\xf8\xc5\xab.\xc9L \x91\
+\x16\x02\x81\xe7\xf7\xbaq[My*X\xa7\x0e\xbd\x81\
+\xc3\xc0\xc7\x07Y\x08\xe4\x04\xbc\x13y\x9f\xd7O#\xb8\
+\xf2\x902\x8c\xde\x02\xf4\x8a\xbf\x08\x0b\x81\xe4\x05\x80#\
+U\xd3\xc9\xa7\xcc~\x85q\x17\x02N\xea\xeak!\x10\
+\xf81*E9\xc8\xa7\xca\x00\xb0\x88{*\xbd\x85o\
+\x80\xcf\xf7\xb6\x12\x08\xbc\x0e\x22\xa77Q]/\x05\x16\
+i\xa7\xa2\x89D\x93\x97\x01yl i\xee\xb0\xc8\xd7\
+<\x8a\xbc\x05\xd7\x98\xab\xa2\x89$\xe0\xf3\xcfX\x09\x84\
+<\x07\x0fVW\xe3\xbf \xaa^\xdc~\x05\xf8|\xb0\
+\xa5@\x16\xc0\x83\xf5\xc8\x8b\xce\xf9\x7fA\x1a\xa9i\xe3\
+6\xd0\x80\xbf\xa5@R\xdc\xe0\xe1j\xc1\xfc8n\x92\
+/\x5ca\x96\xaa\xc3A`\x12\x91k\xae\x95@\xe0\x09\
+\x85\xf9\xf9\x88\xf5\x1c\x84R\xc0#EU3\xfe@\x13\
+7,\x05\xb2\x9c\x02\xe2}\x82\xad\xfd\x0f)\xed\xf7R\
+\xd7L\x0d\xa0\x89\xe3\x96\x02\xc9\xf4\xa3\x8cX0\xd3?\
+\xe0A\x0fJ\xf3[\xd4\xb5\x03=1\xba\xc6R $\
+\x922bJ+\x867y\x9f+Oi<P\xe5\xf4\
+\xafv@\x1b\xefZ\x0b\xe48\x0dD\xe9\x90\xa9\xb7\xed\
+\xc4\xaa\x0a\xa7]T_\xe1N\xd5\x0d\x03!m\xa8\x22\
+mt\xfej\x9dx\x82\xd6r\x80Z\xebqlW\x8b\
+\xa5\x02\xd9L\x05Qj\x9c\xd6\xd3\xf0:_j\xc3\xaa\
+\xe7\xd8/`\xbb\x9f\x22\x15H^\x1d\xba\x88\xf7l\xcd\
+\xef\xd1K\x1f@o\xb6\xf4M\xb5\xadm\x82\x9aYa\
+-\x10\xea\x91\xef\xbd+FG\xb5\x9d~\xac\x0fT\xd1\
+\xe84\xd5\xed\x81\x0f\xb3\x84Z\x0c\xc4Q[\x8d\x88\xeb\
+\xab\x1a\xde\x8f\xbb\xebY5MVS\x7f\xfc\x06OE\
+\xddk-\x10\xca\xbbo\xee\x93\xf4\xd8\xa1\xea\x87+\xeb\
+\xb3f\xea\x1a\x5c\xaba\x1b\xc1\x95R\xaa\xff\xd7Z \
+\xce\x10Ee\x02G\x1d\xa4Lj\xcb\x88\x0d\xf7S\xd9\
+XK-7$\xc1ET\x95\xa7NY\x0a\x84\x1cv\
+QT\xc7\xb7\xfd\xe4=%\x1c\xac&\x7f\x1e\xd5\xcc]\
+uC^\x9a\xd6\xe4\x1aC\xb9$\x16\xf9\x9d\x95@\xc8\
+\x00E[\xaa\xb4\x0e\x9f\xb8|s\xdc\x91\x93I\xd7.\
+\xfep,>n\xe3\xc7c{\x87\x04hkc\xa6\xa6\
+-\x5cIm\xaf\xc9\xc8\x95\xfb\xcf'\xa7\xa5&%\xe6\
+oPl\xcc\xb2Of\xbe?\xfe\xafC\xfb\xf7\xe9\xd2\
+\xa1y\x7f\xe9@\xaek\x1cL\x0ei\xa9\xed\xaa\xf9i\
+\x96Z\xb5\xa5\x03Q\xbb_\xe7\x97\xd2\xdfk<[b\
+\xf9\x97\xa9,\x1f\x08\xfc6o\xfeq\x89\xd6\xba\x81/\
+1T\xf3\x95\x10$\xb5\x86\xa9 \x135o\xe0\x02\x96\
+r9\xf2\x81\x90\x93\xbe&z\xf4\xd0|%\x06\x9c\x9a\
+E\xcdM\x09A\xc8j\xf3<Ze\xe8\xd8\xbe:\x0c\
+\x05\x93d\x04\xa1L\x89\xe6\x98\xc6\xa9fo\xdeI)\
+Ah'_\xbcR;E\xd7\xd6]p\xd1_r\x9f\
+\x9c \xce!fx4\xd5{\xfb\xa2\xb5\xfe\x9a\x9b\xe5\
+\x04!\xce\xf1\xc6{tL\xd7\xbbu\x1b\xf5\x17]-\
+)\x08!\x1f\xb8\x1a\xec1H\xff\xa26\xce\xc6\xba\xab\
+.\x90\x16\x84l+g$\x87'\xd3\xbc\xbb\x0d\xba\xeb\
+N\x97\x17\x84$60\xce#\x88m%\xc7\xbc\xb6z\
+\x0b\x8f\x93\x18\x84\xdc\x19c\xd4\xcfV\xcf\xdb\x8c\x9b\xf6\
+S\x19\x9d\x95#e\x06!d\x7fMc@\xd8_\x0a\
+\xbeTg\xe5\xber\x83\x90\x9cy~\x86\x88le\xde\
+2\x9d\x87\x81\xdd$\x07!\xe4\xea\x00w\x03@jd\
+1\x1f\x98G\xea*\xdcFz\x10B\x92\x06z\xf0\x17\
+\x99\xc0\xbcYy\x13\xf4\x9c\xb07\xb4\x00\x08!\x97&\
+T\xe0\x0d\xe2q\x96}\xb3\xb6\xf8k\xaf[\xcd\x12 \
+\xf9\x07\x5c+B9\x1fq\xb5\xe6\xf0\xe8\xfb\xc5\xde\x9a\
+\xbf$e-\x02\x92\x9f+\xb3\x9b\xb9\xf0\x14Y\xcac\
+\xa3\x0e\xb5\xd2X\xd5\xd5i\x19\x90\xfc$/\xef\xcd\xef\
+\xf4\xbd\xfcu.\xdbt \xdc[}M\xb7\xda}\xb2\
+\xad\x04R\xb0+=\xb3(<\x98\xcf\xafW8\xa7M\
+J]\xd8\xbd\x94\x0a\xffvo.K\xc82bH\x1e\
+/Ha2\x0e/\x1e\xde\xb9\x96'x\xabc\xd0p\
+\xea\xf4\x86=\xdc6\xe8\xee\xdew\xc3\x9e,i\x1a^\
+\xfd\x17\xc7-\xdb\x9fb\xdch\x08\x00r/\xb9\x97\x0e\
+mZ8)\xb2_\xcf\xf6!\x0d\x83\x82\x82*V\x0d\
+\x0a\xaa\x13\xd2&,\x22jFtBZ\xfew\xa9\x05\
+M\xa4\x16\xd7\xe5N\xc9\xed\xf85\x1f\x8e\xee\xd7\xb1y\
+H\xed\xa0\xca5\xea\x84\x84v\x8ax{\xfe\xa6\xaf\xae\
+\xe6\x19=\x0e\xc2\x80\xd0r\xdc\x8d&2\x99X!\xd2\
+\x80\xc0\xef\x05/\xbc\x06\x7f\x0eA\xccLz\x15\x9aH\
+['\x82\x98\x19\xfa|\xa2U\x08bj\xda\xd3@\x02\
+n \x88\x99I\xf4\xa2\x89\x0cF\x10SC\xbdk\xe1\
+\xf2\x1f\x0413YO\xd2D\xea\xe7 \x88\x99\xa1O\
+\xa1\x9a\x81 \xa6\xa6;\x0d\xc4\xe7G\x0413\x17\xa9\
+\x17\xfe:!\x88\xa9\xa1\xcfU\x8fF\x103s\x97\xba\
+<D\xa5[\x08bfvS\xbf\x22#\x10\xc4\xd4\xbc\
+B\xbd\xaf\xfa\xb5\xc4\x1e\xdb\xe5\x03I.K\x13i$\
+\xef\xc9\xc8No\xf9@\xa8\x0b\x92*\xca\x1cY=\xbe\
+\xf0V$\x04q4\xa1>?~A^\x0f\x09AH\
+<u\x02QWy=d\x04Q\xb1\xa6M\xac\xb4\x1e\
+R\x82\xdc\xa4\xceE\x0d\xcc\x90\xd5CJ\x10\xb2\x84\xfa\
+\x15\x19-\xab\x87\x9c y\xd49\x9fn'$\xf5\x90\
+\x13\x84\x9cp\xb3\xd6\xf9\xfa\xce\xfb3X%=b\x1f\
+Iy\x92f\xabT\xbd\xd9\xf5\xc0\x8cbIA\xa0I\
+A\xaea\x09DZ\x0fYA\xc8\x9a\x928\xbc\x22\xce\
+\x13\x89=\xa4\x05)aR\x90_\xd45\x22\xb5\x87\xbc\
+ \xc5M\x0a\xaa4\xe5\xb6t\xfd\xd8\xe5\xa3X\x03\x84\
+Lx\x98#x^6\x91\xdeCb\x90\xac\xa2\xcb9\
+\x86\xac\xca%\x16\xf0\x90\x18\xa4\xc8\xbb&$;\xce-\
+\xd9Cf\x10\x12\xf6\xfbq\xee1b\x15\x0f\xa9A.\
+\x95\x92\xf38\x17\xf2\x90\x1a\x84LS\x94\xb2Q\xc9\xc4\
+J\x1er\x83dw\x98\x9bI\xac\xe5!7\x88\xcc\xd9\
+]\xbc\x07\x82\x08\xe6\x81 \x82y \x88`\x1e\x08\x22\
+\x98\x07\x82\x08\xe6\x81 \x82y \x88`\x1e\x08bv\
+\xf6S\x1e\x02\xc3\x11\x12\xcb\x03A\x04\xf3@\x10\xc1<\
+\x10D0\x0f\x04\x11\xcc\x03A\x04\xf3@\x10\xf3<J\
++\x08\x22\x9f\x07\x82\x08\xe6\x81 \xe6\xe4\x80Z\x0f\x04\
+\x11\xcc\x03A\x04\xf3@\x10\xc1<\x10D0\x0f\x04\x11\
+\xcc\xe3\x7f\xb9\x0bd\xb5'\xfb\xb9\xcc\x00\x00\x00\x00I\
+END\xaeB`\x82\
+\x00\x00\x04\xbb\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x01\x00\x00\x00\x00\xeb\x04\x03\x00\x00\x00t\xa8U\xa0\
+\x00\x00\x000PLTE\x00\x00\x00A\xcdRA\xcd\
+RA\xcdRH\xcbPB\xccQI\xcbPD\xccQ\
+E\xccQJ\xcbOE\xccQJ\xcbOD\xccQD\
+\xccQC\xccQA\xcdR\xaa`?\xbc\x00\x00\x00\x0f\
+tRNS\x00\x18Oc\xab\xae\xb8\xbd\xc9\xcd\xd6\xd7\
+\xdf\xe9\xf0\x91\xee\xa9J\x00\x00\x04+IDATx\
+\xda\xc5\xda\xc1m\x13A\x18\xc5\xf1\xddT`%Bp\
+ R\x02'N\x08\x1ap\x0dT`q\xa1\x0f*\xa0\
+\x0b*\xa0\x91T\xe0\x1e@\x96|q\x86\x83c\xc7\xbb\
+;\x93\xcc|\xef\xcd{\xd3\xc0\xfe\xf4\x0e\xfb\x9f\x95v\
+\x18z\x9c\xab\xc3j\xb0\x9e\xab\xf4\xe0\x06<\xde\x9b\x01\
+\xe9\xdf\xca\x0cH_\xdc\x00\xeb\x04W)\xa5\xf4\xcd\x0d\
+\xd8\xad\xcc\x00\xe7\x04G\x80q\x82# \xfdt\x03\xf6\
++3\xc07\xc1\x09`\x9b\xe0\x04\xb05\xe9\x0cpe\
+\xf9\x0cpM\xf0\x0c0e\xf9\x19`j\xd2\x05\xc0\x93\
+\xe5K\x80e\x82K\x80\xa5I\x13\x80\xa3I\x13\x80c\
+\x82)\xc00\xc1\x14`h\xd2\x0c\xa0o\xd2\x0c\xa0\x9f\
+`\x0e\x90O0\x07\xc8\x9b\xb4\x00\xa8\xb3\xbc\x00\xa8'\
+X\x02\xc4Y^\x02\xc4M\xca\x00\xb4Y\xce\x01\xa4\x13\
+\xe4\x00\xd2&e\x01\xca&e\x01\xca\x09\xf2\x00\xe1\x04\
+y\x80\xb0I\x05\x80\xaeI\x05\x80n\x82\x12@6A\
+\x09 kR\x11\xc0\xc8\xf2\xf5\x87\xd7\xcf\xc7\xd4q\x82\
+\xcf\x099\x84,c\x00B\x93@\x00\x9ee\x14\x00O\
+\x80\x02\xe0&\xc1\x00\xb4I0\x00\x9d\x00\x07\x80\x13\xe0\
+\x00\xb0I\x04\x00\xd6$\x02\x00\x9b\x80\x01\x80&`\x00\
+\xa0&Q\x00H\x96)\x00d\x02\x0e\x00\xc82\x07\x00\
+4\x89\x04\x88g\x99\x05\x08O\xc0\x02\x84\x9bD\x03D\
+\x9bD\x03D'\xe0\x01\x82\x13\xf0\x00\xc1&\x11\x01\xb1\
+&\x11\x01\xb1\x09\x98\x80\xd0\x04L@\xa8IT@$\
+\xcbT@d\x02.\xe0\xb1\xfa\xb9\xe3\xa7U\x0f@\xaa\
+\x06\xbcIw=\x00\x87\xea\x016}\x00\x0f\xf5\x03t\
+\x01T\xbf\x08\xc6M\x1f@\xf5\xab\xf0]\xea\x02\xa8\x1f\
+\xe0W\x1f@\xd3\x00\x1d\x00\xbb\xa6\x01:\x00\xaa\xafD\
+\xb7\xa9\x0b\xa0~\x80m\x1f@\xe3\x00t@\xf5\x87\xc1\
+\xf5\xb6\x0f\xa0\xf6\xd3h\x5c\xa7.\x80\xea\x01nR\x17\
+@\xf5\xe7\xf1y\x002\xa0\xa5B=\x00\x87\x96\x0a\xf5\
+\x00\x04\x06\xa0\x02\xf6\x81\x01\xa8\x80\xb6\x0a\xf1\x01m\x19\
+\xee\x00\x08\x0d@\x04\xecB\x03\x10\x01\xad\x15b\x03Z\
+3L\x07\x04\x07\xa0\x01\x9a3\xcc\x064g\x98\x0ch\
+\xcf0\x17\x10\xc80\x17\x10\xa9\x10\x13\x10\xc9\xf0\x0c \
+\xfa\x7f`9\xc0\x09\x00\xfdA\xb1\x07\x06\xa0\x00b\x15\
+\xe2\x01b\x19&\x02\xa0\x01\x08\x80\x1d4\x00\x01\x10\xad\
+\x10\x0b\x10\xcd0\x0d\x00\x0e\x00\x03\xc2\x19f\x01\xc2\x19\
+&\x01\xe2\x19\xe6\x00\x80\x0cs\x00H\x85\x9e\xce\xd7\x8a\
+\x0c\xde\x97\x00H\x86[\xce\xdf\x12\x800\x00\x04\xd8\x8b\
+\x06(\x02\xb0\x0a\xe1\x00,\xc3\x04\x80l\x80\x02`'\
+\x1b\xa0\x00@+\x84\x02\xd0\x0c\xc3\x00\xe1\x00Y\x00\x9c\
+a\x14\x00g\x18\x04\xe0\x19\xc6\x00\x84\x0cc\x00U\x85\
+J\x00U\x86\x8b\x00\xf1\x00\x0b\xc0^<\xc0\x02\xa0\xab\
+P\x1e\xa0\xcbp\x01 \x1f`\x06\xd8\xc9\x07\x98\x01\x94\
+\x15\xca\x01\x94\x19\xce\x02\x0c\x03L\x00\xd2\x0c\xe7\x00\xd2\
+\x0cg\x00\xda\x0c/\x01\xe2\x0c/\x01\xea\x0a\xcd\x01\xf5\
+\xff\xe9m\xfa\x00\xea\x7f\xd3K=\x00\xe3\x9f\x95\x17\xd0\
+r\xd6n\x00\xf35\x14\x020_\xc41\xc0\xb85\x03\
+\x86\xf7n\x00\xef:\x12\x04\xf0.dQ\x00q\x82\x18\
+`x\xeb\x06\x8c\x1b3\x80\x97\xc4(\x806A\x14@\
+\xbb\x16\x85\x01\xac{Q\x18\xc0\x9a \x0e M\x10\x07\
+\x90\xb2\x0c\x008YF\x00\x94,#\x00J\x96!\x00\
+\xa3I\x10\x80\x91e\x0c@\x98\x00\x03\x10\xb2\x0c\x02\xf0\
+&\x81\x00<\xcb(\x00\x9e\x00\x05\xc0M\x82\x01h\x93\
+`\x00:\x01\x0exa\x82\xdf?^?\xdfa\xc0\x0b\
+Y\xbe\x1b4\xe7\xd6\x0d(fY\x05(fY\x06(\
+5I\x06(eY\x07(L\xa0\x03\x14\xb2,\x04\xe4\
+\x9b$\x04\xe4\xb3\xac\x04d'P\x02\xb2M\x92\x02r\
+M\x92\x02r\x13h\x01\x99\x09\xb4\x80L\x96\xc5\x80e\
+\x96\xd5\x80E\x96\xd5\x80E\x96\xe5\x80y\x93\xe4\x80y\
+\x96\xf5\x80\xd9\x04z\xc0,\xcb\x06\xc0\xb4I\x06\xc04\
+\xcb\x0e\xc0d\x02\x07`\xd2$\x0b\xe0\xb2I\x16\xc0\xe5\
+\x04\x1e\xc0\xc5\x04\x1e\xc0E\x96M\x80\xe7,\xbb\x00\xe7\
+,\xbb\x00\xe7,\xdb\x00\xa7&\xd9\x00\xa7,\xfb\x00O\
+\x13\xf8\x00OY6\x02\x8eM2\x02\x8eYv\x02\xc6\
+\x8d\x190\xdc\xb8\x01\xe3\xda\x0c\x18n\xdc\x80qm\x06\
+\x0c\xd7\xdb>\x80\xffx\xf2iE\x15\xa8J\x8b\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x0b!\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\xc8\x00\x00\x00\x8f\x08\x03\x00\x00\x00\x88\xdbdx\
+\x00\x00\x00\x09pHYs\x00\x00\x0d.\x00\x00\x0d.\
+\x01\xb5\xcb\x89]\x00\x00\x00\x19tEXtSof\
+tware\x00www.inksca\
+pe.org\x9b\xee<\x1a\x00\x00\x02\xacPL\
+TE\x00\x00\x00\x00\xff\xff\x00\xff\x80U\xff\xaa@\xbf\
+\x803\xcc\x99+\xd5\x80$\xdb\x92 \xdf\x809\xe3\x8e\
+3\xe6\x80.\xe8\x8b+\xd5\x80'\xd8\x89$\xdb\x803\
+\xdd\x880\xdf\x80-\xe1\x87+\xe3\x80(\xe4\x86&\xd9\
+\x801\xdb\x86.\xdc\x80,\xde\x85+\xdf\x8a)\xe0\x85\
+'\xe2\x89/\xe3\x84,\xdc\x84+\xdd\x88)\xde\x84.\
+\xe0\x83-\xe1\x87,\xdb\x83+\xdc\x87)\xdd\x83/\xdd\
+\x86.\xde\x83-\xdf\x86,\xe0\x83+\xe1\x86*\xdb\x82\
+.\xdc\x85-\xdd\x82,\xde\x85+\xde\x88+\xdf\x85*\
+\xe0\x87.\xe0\x85-\xdc\x87,\xdd\x84+\xdd\x87+\xde\
+\x84*\xdf\x86.\xdf\x84-\xe0\x86,\xdc\x84+\xdc\x86\
++\xdd\x84.\xde\x86-\xde\x84-\xdf\x86,\xdf\x83+\
+\xe0\x85+\xdc\x83-\xdd\x83,\xde\x85,\xde\x87+\xdf\
+\x87-\xe0\x85-\xdd\x86,\xdd\x86+\xde\x84+\xde\x86\
+-\xdf\x86,\xe0\x84,\xdd\x86-\xde\x84,\xdf\x84+\
+\xdf\x85+\xdd\x84-\xdd\x85-\xdd\x84,\xde\x85,\xde\
+\x86+\xde\x85+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85\
++\xde\x85+\xde\x86-\xdf\x85-\xdf\x86,\xdd\x86+\
+\xdd\x84+\xde\x85-\xde\x84,\xde\x85,\xdf\x84,\xdf\
+\x85+\xdf\x84+\xdd\x85-\xdd\x84,\xde\x85,\xde\x84\
+,\xde\x85+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85,\
+\xde\x86,\xde\x85+\xde\x86-\xde\x85,\xdd\x85+\xdd\
+\x84+\xde\x85,\xde\x85,\xdf\x85+\xdf\x84+\xdd\x85\
+-\xdd\x84,\xde\x85,\xde\x84+\xde\x86+\xdf\x85,\
+\xdd\x85,\xde\x86,\xde\x85+\xde\x86,\xde\x85,\xdf\
+\x85,\xdd\x85,\xdd\x85+\xde\x85-\xde\x84,\xde\x85\
+,\xdf\x85,\xdf\x84+\xdd\x85-\xde\x84,\xde\x85,\
+\xde\x84,\xde\x85,\xde\x86+\xdf\x85,\xdd\x85,\xde\
+\x86,\xde\x85,\xde\x86-\xde\x85,\xde\x85,\xdf\x85\
+,\xdd\x85,\xdd\x85+\xde\x85-\xde\x85,\xde\x84,\
+\xde\x85,\xdf\x84+\xdd\x85-\xde\x84,\xde\x85,\xde\
+\x84,\xde\x86-\xdf\x86,\xdd\x85,\xde\x86,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xdf\x85,\xde\x85,\
+\xde\x85-\xde\x85,\xde\x85,\xde\x85,\xdf\x85,\xdd\
+\x85-\xde\x84,\xde\x85,\xde\x84,\xde\x85,\xde\x85\
+,\xdd\x85,\xde\x85,\xde\x85,\xde\x85+\xde\x85,\
+\xde\x85,\xde\x85,\xdf\x85,\xde\x85,\xde\x85+\xde\
+\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xdd\x85\
+-\xde\x85,\xde\x85,\xde\x84,\xde\x86,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\
+\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\x83p\
+\xec\x06\x00\x00\x00\xe3tRNS\x00\x01\x02\x03\x04\x05\
+\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\
+\x16\x17\x18\x19\x1a\x1b\x1d\x1e\x1f!\x22#$%&'\
+()*+,-./01234567\
+89:;<=>?@ABDEFHI\
+JLMNPQRUWXYZ[\x5c]^\
+_`abdefgijklmnop\
+qrstuvwxyz{|}\x80\x81\x82\
+\x84\x86\x87\x88\x89\x8a\x8b\x8d\x8e\x90\x91\x92\x93\x95\x96\x97\
+\x98\x99\x9a\x9b\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa7\xa8\xa9\
+\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xbb\
+\xbd\xbe\xbf\xc0\xc1\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcc\xcd\xce\
+\xcf\xd0\xd1\xd3\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\
+\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\
+\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe.\xcby\
+/\x00\x00\x07\x07IDATx\xda\xdd\xdc\xf9_\x94\
+E\x1c\x07\xf0\xd9\x85\xf5@E\x17\x0d\xf3B\x84\x0c\x8f\
+\x14\xb7,\x8d4O\x14+\x0c\x0f4M\xad\x14\xad\xc4\
+\xbc\x22q\xb3\x8c\xf2H\x10I3\xcb\x83\xd4\xb4C\xcd\
+\xf2\xca#\xb5T\xa4\xbc\xc8\xa3\x02\x95\x92c\xbf\xffH\
+?\xa8\xaf\xf8~\x9fk\xf6\xc1yf\xf6\x99\x1fe>\
+\xcf\xcc\xdb=\x9e9\x9eY\xc6\xf4JT\x09DZ\xd1\
+ux#\xcf\xa1\x0b\xf1\xae\x03W@\x22\xd2\x01nq\
+\x80[\x1c\xe0\x16\x07\xb8\xc5\x01nq\x80[\x1c\xe0\x16\
+\x07\xb8\xc5\xd1\x00\xe2Y\x0d\xae\x80D\xb8\x03\xdc\xe2\x00\
+\xb78\xc0-\x0ep\x8b\x03\x18c\xcc\xb3\x0a\x5c\x01q\
+\x85\x03\xdc\xe2\x00\xe6-z`\xd7\xba}G&\xa4\xd1\
+\x8ek;>\xc8y>\x90\xe0\x8fa\x8c\xb1X\x7f\xe2\
+\xc0\xacy+\xf6\xdet\x1e\xd2\xa8\xf4\xf5\xc2\x09I\xfa\
+\xebI}\xa6o\xae\x8e\x14\xc8\xad\xe2\x91>fRZ\
+f\x95\xd6E\x00\xa4\xaa\xa0\x03\xb3,]\x0b\xfeQ\x1c\
+R\xf7n\x1b\xc6U\xba|\xae4\xe4d\x7f\xc6]F\
+_V\x17R\xd8\x94\x85Q\x1e\xdag\xf2\x06\x0d6,\
+\xeb\x1d\x86\x04Yx\xa5\xe9g\x86\x97\xba\x80*>\xed\
+($4\x83\x85[\xbc\x85*B\x96\xb2\xf0K\xd4W\
+\xeaAvE\xd9\x800\xff\x19\xd5 \xbf\xc72[\xa5\
+w\x8db\x901\xfa\xfd\x8c{r\xfc\xdcE\xc1\xe0\xfc\
+\xd73S[\xea\xd7\x08\xaa\x05\xd9\xaa\xf7Q\x1e\xbe\xe2\
+T\xc3{\xe5\xe1`\xaaN\xad\x98\xf3*A\xeet\xd1\
+t\xd07\xf3\x9c\xb6\xde\xe1\x17\xb4\x92L\x95 \x85\x9a\
+\xee\x0d:\xad_\xf3\xbbn\x9a\x17\xee\xb4:\x90:\xcd\
+\x98}f\xadQ\xdd\x1b#h\xddI\xea@6\xd2\xbe\
+\xbde\xf66\xa4\x12\xdf\x05e CI\xd7\xc6\x87\xcc\
+j\xdf|\x8cT_\xa2\x0a\xe4\x12\xb9\x17v\xfa\xcb\xbc\
+\xfeq2\xefzD\x15H>\xf9\x1f.\xb5\x0a\xcc%\
+\x81\xc3\x8a@z\xe1n=\x1e\xb2\x0a\x5c\x8d\xc1\x897\
+\xd4\x80\x5c$\xff\xbf[\xad#\xb3p\xa2\x97\x1a\x90\xb5\
+\xb8W\xedk\xac#\xc7\x88\xfd\xa2\x12\x90,\xdc\xa97\
+y2\xe4\x8b\xabD\x09H<\xee\xd4\x01\x9eL\x1e\xce\
+d\xdf\xff\xf7\xaf\x03wKo\xbc\x80\x14\xa0e\xa5\x00\
+\xc8y2\xde\xe5Z\xb3:\x80C=\x0co\xad\x06e\
+\x91\x00\xc8\x16\xdc\xc4X\xbeAM\x1c\x9e)\xdeV\x00\
+\xb2\x107\xf1\x11_j\xa4\xfe\xfbQ&$\x1d7q\
+\x90/\xb5\x18\xa7V*\x00\xc1S\x11\x1f\xe7Zh)\
+\x19-\xcb\x87\xd4\xe0\x81Vw\xce\xd8\x19\xdc\xb1\x0c\xf9\
+\x90s\xfa=\xb2*\xb5>\xdd{\xbbD\xc87V\xc3\
+&\x83\x82\xe7b-\xe4C\x0am}i\x01\x0c\xc7\xb9\
+\xab\xd2!\xe4\x1e\xbd\x997\x97\x8ds'\xa4C\xc8@\
+\xf6G\xde\x5c.\xce\xed\x91\x0e\x99\x88[(\xe3\xcd-\
+\xc7\xb9-\xf7\xa6\xc1ew\xcb~\xf4\xc7@\x19-7\
+\x1e<d\x14\xee\xd0\x9f\xbc\xb9b\x9c+\x94>\xfa}\
+\x0aw\xa8\xd6\xe6\x10-(\x1d\x92\x82\x17@\xc1\xe6\xd7\
+\xf6\x02\xe9\x10\xbcr\xd8\x9e\xbb\x81\x83\xa6\xd31\x09\x90\
+\xcex\xb3\x96\xbb\x012\xdb\xcd\x91\x0ey\x185\x99\xc8\
+\xdd\xc0\xcf\x182C:$\xcej\xad\xcd\xa0\x9c\xc6\x90\
+\xa9\xd2!\xad\xf4\xe7\xac\xe1\x0e6'J\x87\xc4\xda\x1a\
+\xc5k\xc6\xf1\x93\xa4C\xda\xa2&\x13\xb8\x1b8\x81!\
+\xd3\x15\xfb\xb0\xc7s7p\x08CfI\x87\xe0\x99n\
+,w\x03{1$W\xb1\x1b\xa2\x8f\xbb\x81\xdd\x18\xb2\
+X:\xa4\x07\xee\x10\xf7#e\xa5\xa6\x9b=\x12 \x03\
+q\x87n\xf1\xe6\xc8\xcc\xe3=\xe9\x90\xd1\xb8C\xd7l\
+\x0e\xe3WI\x87\x90)\xebY\xde\xdc\x87\xa6\x9b*\x12\
+ \xb3q\x87\xbe\xe7\xcd-0\x9d\x22K\x80\xbc\x83;\
+\xf4\x05on\x8a\xe9\x14Y\x02\xa4\x08w\xa8\xc0\xe6\x14\
+\xf9\xb6t\xc8\xb7\xa6\xf3\x0a\xde\x99%\xbd\x91J\x80\x94\
+aH:g\xac\xbe\x19\x8a%\xcb\x87\x90E\xec$\xce\
+\xd8o\xd8?J>\x04\x12\xf0\xde\x13\xe7c\xfc;1\
+d\x9e\x02\x10rG\xdc\xc7\x97z\x1b\xa76(\x00!\
+{O\xef\xf3\xa52p\xea\xb8\x02\x90m\xe4Iq\xae\
+P\x1d\x9e\x8fE\xff\xab\x00\x84|l[p\xed\xbd\x91\
+U\xad\x9e`\x0a\x19\xe8\x08\x04\xc81\x8b]6>\x22\
+\xaf\x98C\xfa;\x03!\xeb\xf1\xe3y2\x8f\xe2\xcc\x97\
+\xf4\xefW\xd0\x9fS\x9d\x81\xac\xc7\x9dj\xfe\xb7u\x84\
+<\xf8\xe0\xab\xa2\x15*\xcd\xdfyb \x15\x1e\xdc\xad\
+|\xeb\x08y\x0eg\xb0\xa6B->\x00\xe4\x0c\x04\x9e\
+\xc0\xddj[i\x158\x15eIoboI\xa3q\
+\x102G\xa2\xeb\xb8\x9a\x12\x22\x1b\xa1\x1e\x9dG\x9d\xd1\
+\x09'O\x8d3\x90kMH\xc7v\x9a\xd7'\xbbn\
+l\x88N\x9d\x8e\xf66\xf4\x1a\x07\x81\xe7\xe8\x01\xbd\xfd\
+f\xb57\xd1\x03\x1az\xe7\xc6\xba\xa3\x1a;\x1c\x82\xec\
+\xa1\x9b\xae\xb1\xdb\x8c+\xaf\xa2\x87\x14\x93\xf5\x96\x90\xf0\
+\xa3\xc4y\x0eA \x8dJ<\xaf\x19\xec\x8a^\xca\xd4\
+l5\x17\xeb\xd5\x9b\x84\xaa\xf4s\x0a\xb2[\xe7\xacN\
+~\x85\xb6^yn\x8c\xa6bj\xbd\xde\x15\xf3\xccG\
+\xc7\xa2 0DgS?zT\xc1\xd1\x06\xef\x9a;\
+?,\x1b\xe4\xd19e\xa2\xbf\xeeB\x0e\xa44[r\
+\xd3\x19\xc8\x99\xe6\xfaO(4I\x1e\x915mN\xce\
+\xb4\x17\x87v\x8d\xd6\xaf1[\xff\x82\xe74Wz6\
+{N\xee\xb4\x9723\x86\x0d\x08$'\x16\x89\x82\xd8\
+:\xf3\xc6\x18c}\xaa\xf9\x86\xa2\xa4,\x15\x06\xa9\x1d\
+f\xcb\xd1\xae\xdc\xe8\x82\xe3Ls\xf3\x85A\xa0\xb2\xb7\
+\x0dG\x0b\xe3\x85\xc9M\xa6\xc1W\xc5A\xa0\xbcS\xd8\
+\x8eV{\x8d/W\xdd\xda,9A \x04.\xf7\x0b\
+\xd3\xd1\xe1\x88\xd9\xe5r\xcd\xa2cDB\xa0*=,\
+\xc73\x97L\xaf\xf6\x87\xd9\xc9\xf8\xc1B!\x10Z\xdd\
+\x86\xdf\x91b\xf5 Q\x89I\xb8\xafX\x08\xc0\x95\xb1\
+^n\xc9v\xab\x8b\x99\xbc\xb9\x12EC\x00~\x99\xca\
+{:?\xc1r\x9bnY\xb4Q\xb6\xadx\x08@\xc5\
+\xf24\xbe\x97e\xae\xe5\xa5\x8e\x0c6\x88\xfa\x9c\x80\x00\
+@\xc5\x9a\xc9=\xad\x8f\x85G\x9f\xe0X\xa6\x98\x12\xaf\
+\x19\x9du\xcb\x98W\x12r\x06\x02\x00P\xb5o]\xde\
+\xcb\xe9\x81\x94\xc4x\xbf\xbfsR -;\x7f;=\
+*>\xa0\x9eg\x03\xe2\xd8\x9a\x99\xa3\x03\x89q~\x7f\
+\xe7\x94\xa1\xd9\x0b7\xfc\x14\xde\x0f\xc44\x1e\xc21\xc7\
+e\x0e\xfc~\x97\x10H]_\x02i}92!p\
+\x88~\x0b\x8c\x8bP\x08\xdd\xcbelg\x84B\xae\xb7\
+#\x90\xa4\xea\xc8\x84\xc0\xc7\xf6\x9frW\x0bR?\x80\
+NaOF&\x04\x8e\xd2\x1b\xe5\xa0\x90HG\x910\
+\x08=\xa7a\xb0\xae\xf5\xa0\x1c^q\x90\xca\x8et\x00\
+xUX[k\xbdL\x1c\x04>\xa5/\xc9d\x91\x0e\
+\x81\x10\xcdODx\x8e\x0a{_\x89\x85\xfc\x8ag,\
+i\xdb\x05\xbe\x1eB!0\xbf\xc1\x98<\xe3\x08\x08u\
+\x08\x85Tw\xbd\xff\x9bg\xd9gA\xb0C(\xe4\xde\
+\xb3\xb2\xads*@\xb8C,\x042\x18K\x08V\x8a\
+\xbb~\xf1\xff\xc3l\xb1\x90\xf2\xfe\x9f\xd4\x80#\x0e\xc1\
+\x10\xb1\xa5\xa1\x83\xb9\xc5\xc1\xdc\xe2\x88\x5c\xc8F2\xbc\
+v\x8b\x83\xb9\xc5\xc1\xdc\xe2`nq0\xb78\x98[\
+\x1c\xcc-\x8e\xc8\x83l\xd4\xdf\x15\xfa\x0f\x13\xf4\xa6<\
+X\xcd\xe8\x1c\x00\x00\x00\x00IEND\xaeB`\x82\
+\
+\x00\x00\x03\xae\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\xc0\x00\x00\x00\xb0\x04\x03\x00\x00\x00\xab\xd0|\xf5\
+\x00\x00\x00-PLTE\x00\x00\x00A\xcdRA\xcd\
+RA\xcdRD\xccQH\xcbPB\xccQI\xcbP\
+D\xccQE\xccQE\xccQD\xccQD\xccQC\
+\xccQA\xcdR\x9e%\xfb\x88\x00\x00\x00\x0etRN\
+S\x00\x18Oc\x8f\xab\xae\xb8\xbd\xc9\xd6\xdf\xe9\xf0\xe7\
+5\xddl\x00\x00\x03\x22IDATx\xda\xb5\xd8\xc1\
+\x89\xdb@\x18\xc5q)\x15\x08\x1b\x0cY\xf6\x90l\x01\
+\x82m\xc0\x90R\xdc\x80o!\xe7\x94\xa0\x06\x5cB \
+%\xa4\x01\x1fR@\x0e\xbb\x10\xd8\xb0L\x0d9\xd8\xb2\
+\xa5\x19[\xf3\xbd\xf7}o\xee\xf6\x8fw\xd0\x7f\x84\x9a\
+\xc6y\xfa\xa1\xd1\x9e\xfe\xbd\x13\x03\xe9\x97\x1a\x10O\xe8\
+S\xfa\xdd\x89\x81\xf4\xac\x06^;1 \x9d\xd0\xa7\x94\
+\xd2\xdfN\x0c\xa4\x9d\x1a\x10N8\x01\xc2\x09g\xe0\xad\
+\x13\x03iP\x03\xb2\x09# \x9bp\x01T\xcd\xbb\x00\
+\xaal_\x01\xd1\x84+ \xca\xf6\x04\xd04o\x0aH\
+\xb2=\x05$\x13f\x80\xa2y3@\xd1\xbc9 \x98\
+0\x07\x04\x132 \xbey\x19\x10\xdf\xbc\x1c\x08\x9f\x90\
+\x03\xe1\x13\x0a \xbay\x05\x10\x9d\xed\x12`&\xac\x9e\
+\xee\x9em\x01\x10\xd9n\x8f\x09:p\xf3>`\xff\x8f\
+g\x1b\x05\xe0\x090\x806\x0f\x06\xd0\xe6\xe1\x008\x01\
+\x07\xc0\x09\x04\x805\x8f\x00\xb0\xe61\x004\x81\x01\xa0\
+\x09\x14\x804\x8f\x02\x90ls\x000\x81\x03\x80l\x93\
+\x80\xbdy,`\xce6\x0b\x98'\xd0\x80\xb5y4`\
+m\x1e\x0f\x18'\xf0\x80q\x82\x03x\xab\xbd\xb0|q\
+\x02\xa9\x02<\xbch\x81\xf6\xe8\x05^\x97\x81\xc7\xe4\x05\
+\x96\x1f\xb5\xd5\xd1\x0b,\xc7\xa2\xdd&'\xf0\xfeyq\
+\xc0:y\x81\xe5;\xa7\xddz\x81\xca\x95\xb3N^\xe0\
+\xe7\xf2\x80\xbd\x17\xa8\xbc\xb9l\x92\x17\x18\x0c\x03<\x80\
+i\x80\x07\xf8\xbe<\xe0\xe0\x05*W\xc1\xc7\xe4\x05v\
+\xa6\x01<P\x19\xf0\x90\xbc\xc0s%\xd3^\xa0\xf2J\
+\xf4\x98\xbc@5\xd3N\xa0\x9ei\x1f`\xc8\xb4\x0f0\
+d\xda\x05X2\xed\x02,\x99\x9e\x01\xed\x0fA\xe5\xa6\
+\x00\xf8Aj\x00\x06\x9c\x81\x85\xd3\xfb\x060\x80-\xd3\
+<`\xcc4\x0f\xec\xa0\x018`\xcd4\x0dX3\xcd\
+\x02\xe6L\xb3\x809\xd3$`\xcf\xf4\xe5\x17\xf7\x9f\xe1\
+\xa7\xae\x00\x80L[\xce\xa7\x02\x002M\x01H\xa6)\
+\x00\xc94\x03`\x95#\x80!x@\x0e\x84\x0f\xc8\x01\
+,\xd38\x00f\x1a\x07v\xe1\x03\xe6\x00\x9ai\x18@\
+3\x8d\x02p\xa6Q\x00\xce4\x08\xe0\x99\xc6\x80\xe0L\
+\x97@p\xa6\x0b :\xd3\x05\x10\x9d\xe9\x1c\x88\xaf\x5c\
+\x06\x0c\xa2\x01# \x1b0\x02\xcb\x99n\x0e^\xa0\xf6\
+\xfd;y\x81\xda\xe7\xef\xa3\x13XU\x06\x90\x9d\xbb\x02\
+\xd5\xd3\x1e\xc4\x00uYB\x00?\xc1\x08\xf0\x13\xac\x00\
+\xfd,[\x01\xfaa6\x03\xec\x043\xc0N\xb0\x03\xe4\
+\x9df\x07\xc8K\x0d\x00\xb8\x09\x00\xd0\xac\xfe\x88\x01\xaa\
+y\x10\xc0\xbc\x9dB\x003\x01\x03\x88\xe6a\x00\xd1<\
+\x10\xc0'\x80\x00>\x01\x05\xe0\xe6\xa1\x00\xdc<\x18\xb8\
+5\xe1\xdf\xb7\xbb\xe7k\xd7\x04Lxi\x22\xcf\x8d\xe6\
+\xc5\x027\xb2\x1d\x0c\x94\x13\x82\x812\xdb\xd1@\xd1\xbc\
+p \xcfv8\x90O\x88\x07\xb2\xe6\xc5\x03Y\xf3\x04\
+\xc0|\x82\x00\x98OP\x00\xb3\xe6)\x80Y\xf3$\xc0\
+t\x82\x04\x98N\xd0\x00\x93\xe6i\x80I\xb6E\xc0u\
+\x82\x08\xb8f[\x05\x5c\x9a'\x03\xc6l\xcb\x80q\x82\
+\x0e87O\x07\x9c\x9b'\x04N\x13\x84\xc0i\x82\x12\
+h\xf7b\xa0\xd9\xa8\x81v/\x06\x9a\x8d\x1ah\xb7b\
+\xa0Y\xab\x81v\xeb\x06\xfe\x03$\xe7\x91\x89\x97#\xf5\
+\xaf\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00\xbf\
+/\
+/ Copyright (C) \
+2020 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick.Co\
+ntrols.Material\x0a\
+\x0aToolBar {\x0a M\
+aterial.foregrou\
+nd: \x22white\x22\x0a}\x0a\
+\x00\x00\x01\x0a\
+[\
+Icon Theme]\x0aName\
+=Gallery\x0aComment\
+=Qt Quick Contro\
+ls 2 Gallery Exa\
+mple Icon Theme\x0a\
+\x0aDirectories=20x\
+20,20x20@2,20x20\
+@3,20x20@4\x0a\x0a[20x\
+20]\x0aSize=20\x0aType\
+=Fixed\x0a\x0a[20x20@2\
+]\x0aSize=20\x0aScale=\
+2\x0aType=Fixed\x0a\x0a[2\
+0x20@3]\x0aSize=20\x0a\
+Scale=3\x0aType=Fix\
+ed\x0a\x0a[20x20@4]\x0aSi\
+ze=20\x0aScale=4\x0aTy\
+pe=Fixed\x0a\
+\x00\x00\x00\xe3\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00<\x00\x00\x00<\x04\x03\x00\x00\x00\xc8\xd2\xc4A\
+\x00\x00\x00$PLTE\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6X\x02G\
+\x00\x00\x00\x0ctRNS\x00\x1c\x1d\x1e=l|}\
+\xd8\xd9\xda\xfa\x85T\xfd\xb6\x00\x00\x00bIDAT\
+8\xcbc`\xa070\xc5+\xcb4\xbb\x00\x9f\xb4\xd5\
+\xeemx5\xef\xde]\x80O\xf3\xee\xdd[\xf0j\xde\
+\x9d\x80W\xf36r5k\x8ej\x1e\x11\x9a\xadh\xa7\
+\x99A\x02(\xbd\x1d\xb74c\xf7n\x82\x89\x7f\x1b\xf9\
+\xda)\xb4}T\xfb\x10\xd5Na\xb2\xc1_\xe4\x82\xb5\
+'\x90]\xdc\x03\xb5'PP\xd5P\x0d\x00\x00^\xe9\
+\x99\xeb`\xde0?\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x00\x82\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00<\x00\x00\x00<\x02\x03\x00\x00\x00G\x921\xe1\
+\x00\x00\x00\x09PLTE\x00\x00\x00\xff\xff\xff\x00\x00\
+\x00s\xc6\x83q\x00\x00\x00\x02tRNS\x00\x00v\
+\x93\xcd8\x00\x00\x00&IDAT(\xcfc\x08E\
+\x05\x0c\x03\xcd\x0f[\x85\x0c\xa6R\x9d\x1f\xc2\x80\x0cD\
+\x87\x1c\x7f4|\x066|\x06Y~\x01\x00\x0e\xe9\x0f\
+x\xb7\x12\x1d\x13\x00\x00\x00\x00IEND\xaeB`\
+\x82\
+\x00\x00\x00\xc1\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00<\x00\x00\x00<\x04\x03\x00\x00\x00\xc8\xd2\xc4A\
+\x00\x00\x00\x15PLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
+\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1fI:\x15\
+.\x00\x00\x00\x06tRNS\x00\x00 0\x9f\xef,\
+\x93$\x03\x00\x00\x00UIDAT8\xcbc\x10\xc4\
+\x0b\x18\xa8'\xcd\xa0\x12\x96\xea\xc4\x80S\x9a9,-\
+-\xd5\x00\xa7\xb4j\x1a\x10\x04\xe1\x94v\x03I\xa7\xe0\
+\x94\x0e\x03I\xa7\xe2\x94N\x03\x03r\xa5\x09\x18N\xc0\
+i\x04<F X\x08\x04*\x03\x18\x8cJ\x8f&\xc5\
+\xd1\xa48\x9a\x14G\x93\x22m\xaa9\x00L\x0e\xa9W\
+\xb5\x91\xf7\x9e\x00\x00\x00\x00IEND\xaeB`\x82\
+\
+\x00\x00\x00\xf6\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00P\x00\x00\x00P\x04\x03\x00\x00\x00|?\xef\x9e\
+\x00\x00\x00\x1bPLTE\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x94Q\xe2 \x00\x00\x00\x09tRNS\x00\
+1267\xe8\xe9\xeb\xfa\x91\xc7O\xc2\x00\x00\x00\x81\
+IDATH\xc7\xed\xd6\xb1\x0d\x800\x0cDQ\x93\
+\xcc\x90\x15R#Q\xd0\xb2\x05l\x00=\x14\xd9 7\
+6#\xf0\x0b\x22\x82d\xd7\xa7gW\xd6\x99\xfd{&\
+\x98\x0b\xfb\xc2\x82Y\x17\xca\xc5\xa2:2P\x88\x0c\x87\
+\xa4\xba0\x90\xec\x0e\x87$\x9d\xcf\xe0\xfc6\x98\x1dt\
+\xd0\xc1\x9e\xc1X\xbe\x02\x87M\xf0#&\xc1\x8f\x88w\
+s\xb2\xc1\x95N:\xe9d{\x92\xd6\x99fW\xa2^\
+\x98\xe0\xc7\xe2E\xd3\x12\x03\xcd\x86\x95\x81\xbc^w3\
+7\xa7\xd5\xc3\xb4x\xa1\x14\xf6\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
+\x00\x00\x00\x83\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00P\x00\x00\x00P\x02\x03\x00\x00\x00\xf3\x7f\x1a>\
+\x00\x00\x00\x09PLTE\x00\x00\x00\xff\xff\xff\x00\x00\
+\x00s\xc6\x83q\x00\x00\x00\x02tRNS\x00\x00v\
+\x93\xcd8\x00\x00\x00'IDAT8\xcbc\x08\xc5\
+\x02\x18F\x8a\xe0*\x0c08\x05\x190\xc0\xa8 %\
+\x82\xa3\xf1>\x1a\xef\x839\xdeGn\x99\x0c\x00\xaa\xfe\
+\xe3\x80<\x1b\xa3\xfb\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x00\xdf\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00P\x00\x00\x00P\x04\x03\x00\x00\x00|?\xef\x9e\
+\x00\x00\x00\x18PLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
+\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\
+G\xb0\x1c\xf2\x00\x00\x00\x07tRNS\x00\x00 `\
+\xbf\xcf\xef\x1dV\xbf\x1a\x00\x00\x00oIDATH\
+\xc7c\x10$\x120\x0c\x22\x85\x0c\x0c&\xe5\xe5\xce\x0c\
+\x0c\x84\x15\xaa\x96\x03A\x10a\x85L\xe9 \x85e\x0a\
+\x04\x15\xb2\x96\x83A\x00A\x85\xe6\x10\x85\xc5\x04\x15\xba\
+C\x14\x96\x10TX\x0e\x05\x83Y!\xd1\x9e!:x\
+\x88\x0ep\xa2\xa3\x90\xe8DA|2\x83\x82Q\x85#\
+A\xe1h\xd93Z\xf6\x8c\x96=\xa3\x0aG\xcb\x9e\xd1\
+\xb2gd\x97=\x83\xb0\xaf\x00\x00G\x10>\xf2\xcfQ\
+\xf1\x00\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00\x92\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x06\x00\x00\x00\x8d\x89\x1d\x0d\
+\x00\x00\x00YIDAT8\x8d\xed\xd4\xb1\x09\x80@\
+\x0c\x05\xd0\x87\x16\x8e\xe4\xa6\xda\x0a\xeeegw\x13X\
+\xd9Z\x08\xe2%bs\xbf\xcfKB $\xa7\xaf\xac\
+\x99P\xb0g\x0c\xb0\xe2\xc0\x86!\x0b+\x18\xa3\xd8\xd2\
+\xb0\x7f\xb1\xeakv\x91\xceo\x92\xbarC\xbfE\xd3\
+\x9e\xc3\x1d\x1a~_Wt\x964\xe1cN\x85\xa7,\
+\x143\xcaZ\x14\x00\x00\x00\x00IEND\xaeB`\
+\x82\
+\x00\x00\x00{\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x06\x00\x00\x00\x8d\x89\x1d\x0d\
+\x00\x00\x00BIDATx\xda\xec\x94\xc1\x0d\x000\
+\x08\x02\x8f\xc6\xfdW\xc6\x1d\x1a|)\x03\x10\xf0\x0c\xb2\
+MR\x8f\xb0\xe2\x86\x05 )\xd2\xdb\xb6f\x12\x02\xda\
+\x03e\xec\x86\xa9\xef>\xcaG\xf9\xcbq\xdf\xc06\x00\
+\x00\x00\xff\xff\x03\x00\xf7\x83\x0c-\xe7\xf9\xf9<\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00{\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x02\x03\x00\x00\x00\xf0\xe7\xf5\x9e\
+\x00\x00\x00\x0cPLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
+\x1f\x22\x1f\x1f\x13\xee\x05I\x00\x00\x00\x03tRNS\
+\x00\x00\x80\x17\xceG\xfe\x00\x00\x00\x1bIDAT\x08\
+[c\x08\x05\x01\x86\xd0\xd0}`\xf2?\x12\x09\x11\xc1\
+D\x94\xab\x04\x02\x00\xd4P%\xa9\xa8Z\xf7\x1d\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00\xb8\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x04\x03\x00\x00\x00~\xd0\xa5^\
+\x00\x00\x00\x18PLTE\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+V7\x1c*\x00\x00\x00\x08tRNS\x00\x0b\x0e\x90\
+\xbc\xbd\xc2\xfa`jr\x94\x00\x00\x00GIDAT\
+(\xcfc` \x0f(+`\x8a1\xa5'a\x0a\x8a\
+\x96\x97a(e\x0c\xc7\x22\xa8V^\x9eD\x94B\xd1\
+\xe1\xa4\x10\x9b\xaf\x99\xd2\xb1\x85\x99;\x16A\xac\xdaq\
+(\x15\x19\x9eJI\x0a\x01,\x82X\x13-\xd6\xe4\x8d\
+\x17\x00\x00\xbe(.\x06\xf5\xa2\x90\xab\x00\x00\x00\x00I\
+END\xaeB`\x82\
+\x00\x00\x00~\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x02\x03\x00\x00\x00\xf1\x90P\xfe\
+\x00\x00\x00\x09PLTE\x00\x00\x00\xff\xff\xff\x00\x00\
+\x00s\xc6\x83q\x00\x00\x00\x02tRNS\x00\x00v\
+\x93\xcd8\x00\x00\x00\x22IDAT\x18\x95c\x08\x85\
+\x03\x062\x99Q\xab\xa0`)af\x00\x03\x14\xb0R\
+\x979\xd4\xdc@q\xa8\x03\x00\xea\x17x\xdd\x86\xef\x87\
+\xad\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00\x9e\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x04\x03\x00\x00\x00~\xd0\xa5^\
+\x00\x00\x00\x0fPLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
+\x1f\x22\x1f\x1f\x22\x1f\x1f\xc1T\xc5\x91\x00\x00\x00\x04t\
+RNS\x00\x00P\xdf\x1fD\xf4\x8b\x00\x00\x00:I\
+DAT(\xcfc\x10\xc4\x02\x18\xf0\x0a2\x998+\
+`\x08\xaa\xb8\xb88a\x08\x9a\xb8\xb88c\x08\xba\x00\
+\x01q\x82X\xb5c\xb5\x08\xab\x93\x18\x80`\xe0\x04G\
+Ci8\x85\x12\xc1\xdc\x01\x00\xcb~A\x15\x05\x8a+\
+\xbc\x00\x00\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x05\
+\x00o\xa6S\
+\x00i\
+\x00c\x00o\x00n\x00s\
+\x00\x0b\
+\x0cCR|\
+\x00g\
+\x00a\x00l\x00l\x00e\x00r\x00y\x00.\x00q\x00m\x00l\
+\x00\x15\
+\x08\x1e\x16f\
+\x00q\
+\x00t\x00q\x00u\x00i\x00c\x00k\x00c\x00o\x00n\x00t\x00r\x00o\x00l\x00s\x002\x00.\
+\x00c\x00o\x00n\x00f\
+\x00\x09\
+\x08\xac\xef\x1c\
+\x00+\
+\x00M\x00a\x00t\x00e\x00r\x00i\x00a\x00l\
+\x00\x0b\
+\x083\x9c<\
+\x00T\
+\x00o\x00o\x00l\x00B\x00a\x00r\x00.\x00q\x00m\x00l\
+\x00\x06\
+\x07\x03}\xc3\
+\x00i\
+\x00m\x00a\x00g\x00e\x00s\
+\x00\x06\
+\x07\x84+\x02\
+\x00q\
+\x00m\x00l\x00d\x00i\x00r\
+\x00\x05\
+\x00v}\xc3\
+\x00p\
+\x00a\x00g\x00e\x00s\
+\x00\x0f\
+\x07\x87\xe7<\
+\x00S\
+\x00p\x00i\x00n\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x15\
+\x02E\x02\xfc\
+\x00P\
+\x00a\x00g\x00e\x00I\x00n\x00d\x00i\x00c\x00a\x00t\x00o\x00r\x00P\x00a\x00g\x00e\
+\x00.\x00q\x00m\x00l\
+\x00\x0e\
+\x09\x09P|\
+\x00T\
+\x00a\x00b\x00B\x00a\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x15\
+\x0fE\xff\x5c\
+\x00B\
+\x00u\x00s\x00y\x00I\x00n\x00d\x00i\x00c\x00a\x00t\x00o\x00r\x00P\x00a\x00g\x00e\
+\x00.\x00q\x00m\x00l\
+\x00\x12\
+\x05P\x5c\x1c\
+\x00S\
+\x00c\x00r\x00o\x00l\x00l\x00a\x00b\x00l\x00e\x00P\x00a\x00g\x00e\x00.\x00q\x00m\
+\x00l\
+\x00\x13\
+\x0dr\xfb|\
+\x00P\
+\x00r\x00o\x00g\x00r\x00e\x00s\x00s\x00B\x00a\x00r\x00P\x00a\x00g\x00e\x00.\x00q\
+\x00m\x00l\
+\x00\x0f\
+\x0b\xe33|\
+\x00T\
+\x00o\x00o\x00l\x00T\x00i\x00p\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x10\
+\x06\xd3\x8b\x1c\
+\x00T\
+\x00e\x00x\x00t\x00A\x00r\x00e\x00a\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0e\
+\x02%\xd0|\
+\x00S\
+\x00l\x00i\x00d\x00e\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0f\
+\x00\xf4\xb9\xfc\
+\x00T\
+\x00u\x00m\x00b\x00l\x00e\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0e\
+\x0e\xa2\x84\x9c\
+\x00B\
+\x00u\x00t\x00t\x00o\x00n\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0e\
+\x0b\xc5|\x5c\
+\x00S\
+\x00w\x00i\x00t\x00c\x00h\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x11\
+\x0fw<\xdc\
+\x00T\
+\x00e\x00x\x00t\x00F\x00i\x00e\x00l\x00d\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\
+\x00\x10\
+\x05\xb8\x16\x1c\
+\x00C\
+\x00o\x00m\x00b\x00o\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x10\
+\x00w\xb4\x5c\
+\x00D\
+\x00e\x00l\x00e\x00g\x00a\x00t\x00e\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0c\
+\x0e\x8bV\xfc\
+\x00D\
+\x00i\x00a\x00l\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0d\
+\x0c\xc8%\xdc\
+\x00F\
+\x00r\x00a\x00m\x00e\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x11\
+\x03$Q\x5c\
+\x00S\
+\x00w\x00i\x00p\x00e\x00V\x00i\x00e\x00w\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\
+\x00\x11\
+\x00\xa3\xff|\
+\x00S\
+\x00c\x00r\x00o\x00l\x00l\x00B\x00a\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\
+\x00\x13\
+\x002\xb3\xbc\
+\x00R\
+\x00a\x00n\x00g\x00e\x00S\x00l\x00i\x00d\x00e\x00r\x00P\x00a\x00g\x00e\x00.\x00q\
+\x00m\x00l\
+\x00\x10\
+\x0fY+\x5c\
+\x00G\
+\x00r\x00o\x00u\x00p\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x13\
+\x0fN\x9e\x5c\
+\x00R\
+\x00a\x00d\x00i\x00o\x00B\x00u\x00t\x00t\x00o\x00n\x00P\x00a\x00g\x00e\x00.\x00q\
+\x00m\x00l\
+\x00\x17\
+\x0a>\xfa\x1c\
+\x00S\
+\x00c\x00r\x00o\x00l\x00l\x00I\x00n\x00d\x00i\x00c\x00a\x00t\x00o\x00r\x00P\x00a\
+\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0e\
+\x08\xd2\xfe\x5c\
+\x00D\
+\x00i\x00a\x00l\x00o\x00g\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x10\
+\x048\xf8\x1c\
+\x00C\
+\x00h\x00e\x00c\x00k\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x13\
+\x05\xac\xa6\xdc\
+\x00D\
+\x00e\x00l\x00a\x00y\x00B\x00u\x00t\x00t\x00o\x00n\x00P\x00a\x00g\x00e\x00.\x00q\
+\x00m\x00l\
+\x00\x11\
+\x07%R|\
+\x00S\
+\x00t\x00a\x00c\x00k\x00V\x00i\x00e\x00w\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\
+\x00\x09\
+\x09j\x86g\
+\x00a\
+\x00r\x00r\x00o\x00w\x00.\x00p\x00n\x00g\
+\x00\x0a\
+\x06\xebDg\
+\x00a\
+\x00r\x00r\x00o\x00w\x00s\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0d=\xfd'\
+\x00q\
+\x00t\x00-\x00l\x00o\x00g\x00o\x00@\x004\x00x\x00.\x00p\x00n\x00g\
+\x00\x0d\
+\x02\xa9\x8a\x07\
+\x00a\
+\x00r\x00r\x00o\x00w\x00s\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x0c\
+\x0e\xa8z'\
+\x00a\
+\x00r\x00r\x00o\x00w\x00@\x004\x00x\x00.\x00p\x00n\x00g\
+\x00\x0c\
+\x0e\xb8z'\
+\x00a\
+\x00r\x00r\x00o\x00w\x00@\x003\x00x\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0d-\xfd'\
+\x00q\
+\x00t\x00-\x00l\x00o\x00g\x00o\x00@\x003\x00x\x00.\x00p\x00n\x00g\
+\x00\x0c\
+\x0e\x88z'\
+\x00a\
+\x00r\x00r\x00o\x00w\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0d\x1d\xfd'\
+\x00q\
+\x00t\x00-\x00l\x00o\x00g\x00o\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x0d\
+\x02\x89\x8a\x07\
+\x00a\
+\x00r\x00r\x00o\x00w\x00s\x00@\x004\x00x\x00.\x00p\x00n\x00g\
+\x00\x0b\
+\x05R\xbf'\
+\x00q\
+\x00t\x00-\x00l\x00o\x00g\x00o\x00.\x00p\x00n\x00g\
+\x00\x0d\
+\x02\x99\x8a\x07\
+\x00a\
+\x00r\x00r\x00o\x00w\x00s\x00@\x003\x00x\x00.\x00p\x00n\x00g\
+\x00\x07\
+\x0d\x83,Y\
+\x00g\
+\x00a\x00l\x00l\x00e\x00r\x00y\
+\x00\x07\
+\x05{TR\
+\x002\
+\x000\x00x\x002\x000\x00@\x002\
+\x00\x05\
+\x005{P\
+\x002\
+\x000\x00x\x002\x000\
+\x00\x07\
+\x05{TT\
+\x002\
+\x000\x00x\x002\x000\x00@\x004\
+\x00\x0b\
+\x0b\xba\x81\xb5\
+\x00i\
+\x00n\x00d\x00e\x00x\x00.\x00t\x00h\x00e\x00m\x00e\
+\x00\x07\
+\x05{TS\
+\x002\
+\x000\x00x\x002\x000\x00@\x003\
+\x00\x08\
+\x07\x9eZG\
+\x00b\
+\x00a\x00c\x00k\x00.\x00p\x00n\x00g\
+\x00\x0a\
+\x0d\xc8&G\
+\x00d\
+\x00r\x00a\x00w\x00e\x00r\x00.\x00p\x00n\x00g\
+\x00\x08\
+\x0cXY'\
+\x00m\
+\x00e\x00n\x00u\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x08\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x001\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\xb4\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x16\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x90\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x0a\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xc1\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x00,\x00\x00\x00\x00\x00\x01\x00\x00\x09\xc5\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x00t\x00\x00\x00\x00\x00\x01\x00\x00\x0a)\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x00\x5c\x00\x02\x00\x00\x00\x01\x00\x00\x00\x09\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x10\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x00t\x00\x00\x00\x00\x00\x01\x00\x00\xe93\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x05\xf6\x00\x00\x00\x00\x00\x01\x00\x00\xd5\x9d\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x062\x00\x00\x00\x00\x00\x01\x00\x00\xe5\x81\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x058\x00\x00\x00\x00\x00\x01\x00\x00\x9b\xf7\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\xda\x5c\
+\x00\x00\x01\x87\x137-\xff\
+\x00\x00\x04\xfc\x00\x00\x00\x00\x00\x01\x00\x00u\x04\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x04\xe4\x00\x00\x00\x00\x00\x01\x00\x00s\xc1\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x05\xd4\x00\x00\x00\x00\x00\x01\x00\x00\xc2Q\
+\x00\x00\x01\x87\x137\xd0\xfa\
+\x00\x00\x05\x94\x00\x00\x00\x00\x00\x01\x00\x00\xa4\x17\
+\x00\x00\x01\x87\x137\xd0\xfa\
+\x00\x00\x05\x16\x00\x00\x00\x00\x00\x01\x00\x00v\xd2\
+\x00\x00\x01\x87\x137\xd0\xfe\
+\x00\x00\x05\xb6\x00\x00\x00\x00\x00\x01\x00\x00\xc0q\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x05X\x00\x00\x00\x00\x00\x01\x00\x00\x9e\xb6\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x05v\x00\x00\x00\x00\x00\x01\x00\x00\xa1\xb0\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x03\x96\x00\x00\x00\x00\x00\x01\x00\x00O+\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02\xe2\x00\x01\x00\x00\x00\x01\x00\x009\x1c\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x03n\x00\x00\x00\x00\x00\x01\x00\x00J\xec\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02,\x00\x00\x00\x00\x00\x01\x00\x00&\x88\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02\x0a\x00\x00\x00\x00\x00\x01\x00\x00#\x85\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xdf\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x03F\x00\x00\x00\x00\x00\x01\x00\x00E\xa6\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x04j\x00\x00\x00\x00\x00\x01\x00\x00e\x81\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x01j\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb0\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x04\x90\x00\x00\x00\x00\x00\x01\x00\x00ie\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02\xbc\x00\x00\x00\x00\x00\x01\x00\x003L\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x01\xe4\x00\x00\x00\x00\x00\x01\x00\x00 \xe6\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x04\xbc\x00\x00\x00\x00\x00\x01\x00\x00l\x1e\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xd0\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x04H\x00\x01\x00\x00\x00\x01\x00\x00_\xe4\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x01\x18\x00\x00\x00\x00\x00\x01\x00\x00\x10g\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x04\x14\x00\x00\x00\x00\x00\x01\x00\x00[\x8b\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02r\x00\x00\x00\x00\x00\x01\x00\x00->\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x01\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x08\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x03&\x00\x00\x00\x00\x00\x01\x00\x00@\xba\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x01\x94\x00\x00\x00\x00\x00\x01\x00\x00\x1a\xb5\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x03\x08\x00\x00\x00\x00\x00\x01\x00\x00=\xee\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02P\x00\x00\x00\x00\x00\x01\x00\x00(\xd1\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x01:\x00\x00\x00\x00\x00\x01\x00\x00\x15\xe6\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x03\xe8\x00\x00\x00\x00\x00\x01\x00\x00W\xc0\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x03\xc2\x00\x00\x00\x00\x00\x01\x00\x00R\xa5\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02\x94\x00\x00\x00\x00\x00\x01\x00\x000\xe7\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06R\x00\x02\x00\x00\x00\x05\x00\x00\x002\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x06z\x00\x02\x00\x00\x00\x03\x00\x00\x00@\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x06f\x00\x02\x00\x00\x00\x03\x00\x00\x00=\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x06\xba\x00\x02\x00\x00\x00\x03\x00\x00\x00:\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x06\x8a\x00\x02\x00\x00\x00\x03\x00\x00\x007\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x06\x9e\x00\x00\x00\x00\x00\x01\x00\x00\xe9\xf6\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x00\xed6\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\xee\xb7\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xe4\x00\x00\x00\x00\x00\x01\x00\x00\xee0\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x00\xeb\x04\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\xecq\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xe4\x00\x00\x00\x00\x00\x01\x00\x00\xeb\xeb\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x00\xf1.\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\xf2l\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xe4\x00\x00\x00\x00\x00\x01\x00\x00\xf1\xea\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x00\xef\x9a\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\xf0\xaf\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xe4\x00\x00\x00\x00\x00\x01\x00\x00\xf00\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/quickcontrols2/gallery/+Material/ToolBar.qml b/examples/quickcontrols2/gallery/+Material/ToolBar.qml
deleted file mode 100644
index 18ca5c82f..000000000
--- a/examples/quickcontrols2/gallery/+Material/ToolBar.qml
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick.Controls.Material
-
-ToolBar {
- Material.foreground: "white"
-}
diff --git a/examples/quickcontrols2/gallery/ToolBar.qml b/examples/quickcontrols2/gallery/ToolBar.qml
deleted file mode 100644
index 20341df8e..000000000
--- a/examples/quickcontrols2/gallery/ToolBar.qml
+++ /dev/null
@@ -1,53 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick.Controls
-
-ToolBar {}
diff --git a/examples/quickcontrols2/gallery/doc/gallery.rst b/examples/quickcontrols2/gallery/doc/gallery.rst
deleted file mode 100644
index 29cd49f14..000000000
--- a/examples/quickcontrols2/gallery/doc/gallery.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-Qt Quick Controls 2 - Gallery
-=============================
-
-The gallery example is a simple application with a drawer menu that contains
-all the Qt Quick Controls 2. Each menu item opens a page that shows the
-graphical appearance of a control, allows you to interact with the control, and
-explains in which circumstances it is handy to use this control.
diff --git a/examples/quickcontrols2/gallery/gallery.py b/examples/quickcontrols2/gallery/gallery.py
deleted file mode 100644
index 2c123fb7e..000000000
--- a/examples/quickcontrols2/gallery/gallery.py
+++ /dev/null
@@ -1,97 +0,0 @@
-############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## BSD License Usage
-## Alternatively, you may use this file under the terms of the BSD license
-## as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
-
-"""
-The gallery example is a simple application with a drawer menu that contains
-all the Qt Quick Controls. Each menu item opens a page that shows the
-graphical appearance of a control, allows you to interact with the control,
-and explains in which circumstances it is handy to use this control.
-"""
-
-import os
-import sys
-import platform
-
-from PySide6.QtGui import QGuiApplication, QIcon
-from PySide6.QtCore import QSettings, QUrl
-from PySide6.QtQml import QQmlApplicationEngine, QQmlContext
-from PySide6.QtQuickControls2 import QQuickStyle
-
-import rc_gallery
-
-if __name__ == "__main__":
- QGuiApplication.setApplicationName("Gallery")
- QGuiApplication.setOrganizationName("QtProject")
-
- app = QGuiApplication()
- QIcon.setThemeName("gallery")
-
- settings = QSettings()
- if not os.environ.get("QT_QUICK_CONTROLS_STYLE"):
- QQuickStyle.setStyle(settings.value("style", str))
-
- engine = QQmlApplicationEngine()
-
- built_in_styles = ["Basic", "Fusion", "Imagine", "Material", "Universal"]
- if platform.system() == "Darwin":
- built_in_styles.append("macOS")
- elif platform.system() == "Windows":
- built_in_styles.append("Windows")
- engine.rootContext().setContextProperty("builtInStyles", built_in_styles)
-
- engine.load(":/gallery.qml")
- rootObjects = engine.rootObjects()
- if not rootObjects:
- sys.exit(-1)
-
- window = rootObjects[0]
- window.setIcon(QIcon(':/qt-project.org/logos/pysidelogo.png'))
-
- sys.exit(app.exec())
diff --git a/examples/quickcontrols2/gallery/gallery.pyproject b/examples/quickcontrols2/gallery/gallery.pyproject
deleted file mode 100644
index 894fdb5fd..000000000
--- a/examples/quickcontrols2/gallery/gallery.pyproject
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "files": ["gallery.py",
- "gallery.qml",
- "gallery.qrc",
- "rc_gallery.py",
- "qmldir",
- "qtquickcontrols2.conf",
- "ToolBar.qml",
- "+Material/ToolBar.qml",
- "pages/ComboBoxPage.qml",
- "pages/FramePage.qml",
- "pages/SliderPage.qml",
- "pages/TumblerPage.qml",
- "pages/SpinBoxPage.qml",
- "pages/ProgressBarPage.qml",
- "pages/DelegatePage.qml",
- "pages/StackViewPage.qml",
- "pages/DialPage.qml",
- "pages/PageIndicatorPage.qml",
- "pages/SwipeViewPage.qml",
- "pages/TabBarPage.qml",
- "pages/TextFieldPage.qml",
- "pages/GroupBoxPage.qml",
- "pages/RadioButtonPage.qml",
- "pages/ButtonPage.qml",
- "pages/ScrollIndicatorPage.qml",
- "pages/ScrollablePage.qml",
- "pages/DialogPage.qml",
- "pages/ToolTipPage.qml",
- "pages/CheckBoxPage.qml",
- "pages/TextAreaPage.qml",
- "pages/RangeSliderPage.qml",
- "pages/DelayButtonPage.qml",
- "pages/SwitchPage.qml",
- "pages/ScrollBarPage.qml",
- "pages/BusyIndicatorPage.qml"]
-}
diff --git a/examples/quickcontrols2/gallery/gallery.qml b/examples/quickcontrols2/gallery/gallery.qml
deleted file mode 100644
index f8714199e..000000000
--- a/examples/quickcontrols2/gallery/gallery.qml
+++ /dev/null
@@ -1,340 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-import Qt.labs.settings
-
-import "." as App
-
-ApplicationWindow {
- id: window
- width: 360
- height: 520
- visible: true
- title: "Qt Quick Controls"
-
- function help() {
- let displayingControl = listView.currentIndex !== -1
- let currentControlName = displayingControl
- ? listView.model.get(listView.currentIndex).title.toLowerCase() : ""
- let url = "https://doc.qt.io/qt-5/"
- + (displayingControl
- ? "qml-qtquick-controls2-" + currentControlName + ".html"
- : "qtquick-controls2-qmlmodule.html");
- Qt.openUrlExternally(url)
- }
-
- Settings {
- id: settings
- property string style: "Basic"
- }
-
- Shortcut {
- sequences: ["Esc", "Back"]
- enabled: stackView.depth > 1
- onActivated: navigateBackAction.trigger()
- }
-
- Shortcut {
- sequence: StandardKey.HelpContents
- onActivated: help()
- }
-
- Action {
- id: navigateBackAction
- icon.name: stackView.depth > 1 ? "back" : "drawer"
- onTriggered: {
- if (stackView.depth > 1) {
- stackView.pop()
- listView.currentIndex = -1
- } else {
- drawer.open()
- }
- }
- }
-
- Shortcut {
- sequence: "Menu"
- onActivated: optionsMenuAction.trigger()
- }
-
- Action {
- id: optionsMenuAction
- icon.name: "menu"
- onTriggered: optionsMenu.open()
- }
-
- header: App.ToolBar {
- RowLayout {
- spacing: 20
- anchors.fill: parent
-
- ToolButton {
- action: navigateBackAction
- }
-
- Label {
- id: titleLabel
- text: listView.currentItem ? listView.currentItem.text : "Gallery"
- font.pixelSize: 20
- elide: Label.ElideRight
- horizontalAlignment: Qt.AlignHCenter
- verticalAlignment: Qt.AlignVCenter
- Layout.fillWidth: true
- }
-
- ToolButton {
- action: optionsMenuAction
-
- Menu {
- id: optionsMenu
- x: parent.width - width
- transformOrigin: Menu.TopRight
-
- Action {
- text: "Settings"
- onTriggered: settingsDialog.open()
- }
- Action {
- text: "Help"
- onTriggered: help()
- }
- Action {
- text: "About"
- onTriggered: aboutDialog.open()
- }
- }
- }
- }
- }
-
- Drawer {
- id: drawer
- width: Math.min(window.width, window.height) / 3 * 2
- height: window.height
- interactive: stackView.depth === 1
-
- ListView {
- id: listView
-
- focus: true
- currentIndex: -1
- anchors.fill: parent
-
- delegate: ItemDelegate {
- width: listView.width
- text: model.title
- highlighted: ListView.isCurrentItem
- onClicked: {
- listView.currentIndex = index
- stackView.push(model.source)
- drawer.close()
- }
- }
-
- model: ListModel {
- ListElement { title: "BusyIndicator"; source: "qrc:/pages/BusyIndicatorPage.qml" }
- ListElement { title: "Button"; source: "qrc:/pages/ButtonPage.qml" }
- ListElement { title: "CheckBox"; source: "qrc:/pages/CheckBoxPage.qml" }
- ListElement { title: "ComboBox"; source: "qrc:/pages/ComboBoxPage.qml" }
- ListElement { title: "DelayButton"; source: "qrc:/pages/DelayButtonPage.qml" }
- ListElement { title: "Dial"; source: "qrc:/pages/DialPage.qml" }
- ListElement { title: "Dialog"; source: "qrc:/pages/DialogPage.qml" }
- ListElement { title: "Delegates"; source: "qrc:/pages/DelegatePage.qml" }
- ListElement { title: "Frame"; source: "qrc:/pages/FramePage.qml" }
- ListElement { title: "GroupBox"; source: "qrc:/pages/GroupBoxPage.qml" }
- ListElement { title: "PageIndicator"; source: "qrc:/pages/PageIndicatorPage.qml" }
- ListElement { title: "ProgressBar"; source: "qrc:/pages/ProgressBarPage.qml" }
- ListElement { title: "RadioButton"; source: "qrc:/pages/RadioButtonPage.qml" }
- ListElement { title: "RangeSlider"; source: "qrc:/pages/RangeSliderPage.qml" }
- ListElement { title: "ScrollBar"; source: "qrc:/pages/ScrollBarPage.qml" }
- ListElement { title: "ScrollIndicator"; source: "qrc:/pages/ScrollIndicatorPage.qml" }
- ListElement { title: "Slider"; source: "qrc:/pages/SliderPage.qml" }
- ListElement { title: "SpinBox"; source: "qrc:/pages/SpinBoxPage.qml" }
- ListElement { title: "StackView"; source: "qrc:/pages/StackViewPage.qml" }
- ListElement { title: "SwipeView"; source: "qrc:/pages/SwipeViewPage.qml" }
- ListElement { title: "Switch"; source: "qrc:/pages/SwitchPage.qml" }
- ListElement { title: "TabBar"; source: "qrc:/pages/TabBarPage.qml" }
- ListElement { title: "TextArea"; source: "qrc:/pages/TextAreaPage.qml" }
- ListElement { title: "TextField"; source: "qrc:/pages/TextFieldPage.qml" }
- ListElement { title: "ToolTip"; source: "qrc:/pages/ToolTipPage.qml" }
- ListElement { title: "Tumbler"; source: "qrc:/pages/TumblerPage.qml" }
- }
-
- ScrollIndicator.vertical: ScrollIndicator { }
- }
- }
-
- StackView {
- id: stackView
- anchors.fill: parent
-
- initialItem: Pane {
- id: pane
-
- Image {
- id: logo
- width: pane.availableWidth / 2
- height: pane.availableHeight / 2
- anchors.centerIn: parent
- anchors.verticalCenterOffset: -50
- fillMode: Image.PreserveAspectFit
- source: "images/qt-logo.png"
- }
-
- Label {
- text: "Qt Quick Controls provides a set of controls that can be used to build complete interfaces in Qt Quick."
- anchors.margins: 20
- anchors.top: logo.bottom
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.bottom: arrow.top
- horizontalAlignment: Label.AlignHCenter
- verticalAlignment: Label.AlignVCenter
- wrapMode: Label.Wrap
- }
-
- Image {
- id: arrow
- source: "images/arrow.png"
- anchors.left: parent.left
- anchors.bottom: parent.bottom
- }
- }
- }
-
- Dialog {
- id: settingsDialog
- x: Math.round((window.width - width) / 2)
- y: Math.round(window.height / 6)
- width: Math.round(Math.min(window.width, window.height) / 3 * 2)
- modal: true
- focus: true
- title: "Settings"
-
- standardButtons: Dialog.Ok | Dialog.Cancel
- onAccepted: {
- settings.style = styleBox.displayText
- settingsDialog.close()
- }
- onRejected: {
- styleBox.currentIndex = styleBox.styleIndex
- settingsDialog.close()
- }
-
- contentItem: ColumnLayout {
- id: settingsColumn
- spacing: 20
-
- RowLayout {
- spacing: 10
-
- Label {
- text: "Style:"
- }
-
- ComboBox {
- id: styleBox
- property int styleIndex: -1
- model: builtInStyles
- Component.onCompleted: {
- styleIndex = find(settings.style, Qt.MatchFixedString)
- if (styleIndex !== -1)
- currentIndex = styleIndex
- }
- Layout.fillWidth: true
- }
- }
-
- Label {
- text: "Restart required"
- color: "#e41e25"
- opacity: styleBox.currentIndex !== styleBox.styleIndex ? 1.0 : 0.0
- horizontalAlignment: Label.AlignHCenter
- verticalAlignment: Label.AlignVCenter
- Layout.fillWidth: true
- Layout.fillHeight: true
- }
- }
- }
-
- Dialog {
- id: aboutDialog
- modal: true
- focus: true
- title: "About"
- x: (window.width - width) / 2
- y: window.height / 6
- width: Math.min(window.width, window.height) / 3 * 2
- contentHeight: aboutColumn.height
-
- Column {
- id: aboutColumn
- spacing: 20
-
- Label {
- width: aboutDialog.availableWidth
- text: "The Qt Quick Controls module delivers the next generation user interface controls based on Qt Quick."
- wrapMode: Label.Wrap
- font.pixelSize: 12
- }
-
- Label {
- width: aboutDialog.availableWidth
- text: "In comparison to Qt Quick Controls 1, Qt Quick Controls "
- + "are an order of magnitude simpler, lighter, and faster."
- wrapMode: Label.Wrap
- font.pixelSize: 12
- }
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/images/qt-logo.png b/examples/quickcontrols2/gallery/images/qt-logo.png
deleted file mode 100644
index dff772951..000000000
--- a/examples/quickcontrols2/gallery/images/qt-logo.png
+++ /dev/null
Binary files differ
diff --git a/examples/quickcontrols2/gallery/images/qt-logo@2x.png b/examples/quickcontrols2/gallery/images/qt-logo@2x.png
deleted file mode 100644
index dbd73aab7..000000000
--- a/examples/quickcontrols2/gallery/images/qt-logo@2x.png
+++ /dev/null
Binary files differ
diff --git a/examples/quickcontrols2/gallery/images/qt-logo@3x.png b/examples/quickcontrols2/gallery/images/qt-logo@3x.png
deleted file mode 100644
index 68e763b59..000000000
--- a/examples/quickcontrols2/gallery/images/qt-logo@3x.png
+++ /dev/null
Binary files differ
diff --git a/examples/quickcontrols2/gallery/images/qt-logo@4x.png b/examples/quickcontrols2/gallery/images/qt-logo@4x.png
deleted file mode 100644
index 08fd88257..000000000
--- a/examples/quickcontrols2/gallery/images/qt-logo@4x.png
+++ /dev/null
Binary files differ
diff --git a/examples/quickcontrols2/gallery/pages/BusyIndicatorPage.qml b/examples/quickcontrols2/gallery/pages/BusyIndicatorPage.qml
deleted file mode 100644
index 867f5d288..000000000
--- a/examples/quickcontrols2/gallery/pages/BusyIndicatorPage.qml
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "BusyIndicator is used to indicate activity while content is being loaded,"
- + " or when the UI is blocked waiting for a resource to become available."
- }
-
- BusyIndicator {
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/ButtonPage.qml b/examples/quickcontrols2/gallery/pages/ButtonPage.qml
deleted file mode 100644
index 384045700..000000000
--- a/examples/quickcontrols2/gallery/pages/ButtonPage.qml
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "Button presents a push-button that can be pushed or clicked by the user. "
- + "Buttons are normally used to perform an action, or to answer a question."
- }
-
- ColumnLayout {
- spacing: 20
- anchors.horizontalCenter: parent.horizontalCenter
-
- Button {
- text: "First"
- Layout.fillWidth: true
- }
- Button {
- id: button
- text: "Second"
- highlighted: true
- Layout.fillWidth: true
- }
- Button {
- text: "Third"
- enabled: false
- Layout.fillWidth: true
- }
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/CheckBoxPage.qml b/examples/quickcontrols2/gallery/pages/CheckBoxPage.qml
deleted file mode 100644
index 39ea53ca6..000000000
--- a/examples/quickcontrols2/gallery/pages/CheckBoxPage.qml
+++ /dev/null
@@ -1,87 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "CheckBox presents an option button that can be toggled on or off. "
- + "Check boxes are typically used to select one or more options from a set of options."
- }
-
- Column {
- spacing: 20
- anchors.horizontalCenter: parent.horizontalCenter
-
- CheckBox {
- text: "First"
- checked: true
- }
- CheckBox {
- text: "Second"
- }
- CheckBox {
- text: "Third"
- checked: true
- enabled: false
- }
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/ComboBoxPage.qml b/examples/quickcontrols2/gallery/pages/ComboBoxPage.qml
deleted file mode 100644
index 04bb634ab..000000000
--- a/examples/quickcontrols2/gallery/pages/ComboBoxPage.qml
+++ /dev/null
@@ -1,97 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "ComboBox is a combined button and popup list. It presents "
- + "a list of options to the user that occupies minimal screen space."
- }
-
- ComboBox {
- model: ["First", "Second", "Third"]
- anchors.horizontalCenter: parent.horizontalCenter
- }
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "ComboBox can be made \l editable. An editable combo box auto-"
- + "completes its text based on what is available in the model."
- }
-
- ComboBox {
- editable: true
- model: ListModel {
- id: model
- ListElement { text: "Banana" }
- ListElement { text: "Apple" }
- ListElement { text: "Coconut" }
- }
- onAccepted: {
- if (find(editText) === -1)
- model.append({text: editText})
- }
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/DelayButtonPage.qml b/examples/quickcontrols2/gallery/pages/DelayButtonPage.qml
deleted file mode 100644
index b0cc30c2d..000000000
--- a/examples/quickcontrols2/gallery/pages/DelayButtonPage.qml
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "DelayButton is a checkable button that incorporates a delay before the "
- + "button is activated. This delay prevents accidental presses."
- }
-
- DelayButton {
- text: "DelayButton"
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/DelegatePage.qml b/examples/quickcontrols2/gallery/pages/DelegatePage.qml
deleted file mode 100644
index d2064d987..000000000
--- a/examples/quickcontrols2/gallery/pages/DelegatePage.qml
+++ /dev/null
@@ -1,217 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-
-Pane {
- padding: 0
-
- property var delegateComponentMap: {
- "ItemDelegate": itemDelegateComponent,
- "SwipeDelegate": swipeDelegateComponent,
- "CheckDelegate": checkDelegateComponent,
- "RadioDelegate": radioDelegateComponent,
- "SwitchDelegate": switchDelegateComponent
- }
-
- Component {
- id: itemDelegateComponent
-
- ItemDelegate {
- text: labelText
- width: parent.width
- }
- }
-
- Component {
- id: swipeDelegateComponent
-
- SwipeDelegate {
- id: swipeDelegate
- text: labelText
- width: parent.width
-
- Component {
- id: removeComponent
-
- Rectangle {
- color: SwipeDelegate.pressed ? "#333" : "#444"
- width: parent.width
- height: parent.height
- clip: true
-
- SwipeDelegate.onClicked: view.model.remove(ourIndex)
-
- Label {
- font.pixelSize: swipeDelegate.font.pixelSize
- text: "Remove"
- color: "white"
- anchors.centerIn: parent
- }
- }
- }
-
- swipe.left: removeComponent
- swipe.right: removeComponent
- }
- }
-
- Component {
- id: checkDelegateComponent
-
- CheckDelegate {
- text: labelText
- }
- }
-
- ButtonGroup {
- id: radioButtonGroup
- }
-
- Component {
- id: radioDelegateComponent
-
- RadioDelegate {
- text: labelText
- ButtonGroup.group: radioButtonGroup
- }
- }
-
- Component {
- id: switchDelegateComponent
-
- SwitchDelegate {
- text: labelText
- }
- }
-
- ColumnLayout {
- id: column
- spacing: 40
- anchors.fill: parent
- anchors.topMargin: 20
-
- Label {
- Layout.fillWidth: true
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "Delegate controls are used as delegates in views such as ListView."
- }
-
- ListView {
- id: listView
- Layout.fillWidth: true
- Layout.fillHeight: true
- clip: true
- model: ListModel {
- ListElement { type: "ItemDelegate"; text: "ItemDelegate" }
- ListElement { type: "ItemDelegate"; text: "ItemDelegate" }
- ListElement { type: "ItemDelegate"; text: "ItemDelegate" }
- ListElement { type: "SwipeDelegate"; text: "SwipeDelegate" }
- ListElement { type: "SwipeDelegate"; text: "SwipeDelegate" }
- ListElement { type: "SwipeDelegate"; text: "SwipeDelegate" }
- ListElement { type: "CheckDelegate"; text: "CheckDelegate" }
- ListElement { type: "CheckDelegate"; text: "CheckDelegate" }
- ListElement { type: "CheckDelegate"; text: "CheckDelegate" }
- ListElement { type: "RadioDelegate"; text: "RadioDelegate" }
- ListElement { type: "RadioDelegate"; text: "RadioDelegate" }
- ListElement { type: "RadioDelegate"; text: "RadioDelegate" }
- ListElement { type: "SwitchDelegate"; text: "SwitchDelegate" }
- ListElement { type: "SwitchDelegate"; text: "SwitchDelegate" }
- ListElement { type: "SwitchDelegate"; text: "SwitchDelegate" }
- }
-
- section.property: "type"
- section.delegate: Pane {
- width: listView.width
- height: sectionLabel.implicitHeight + 20
-
- Label {
- id: sectionLabel
- text: section
- anchors.centerIn: parent
- }
- }
-
- delegate: Loader {
- id: delegateLoader
- width: listView.width
- sourceComponent: delegateComponentMap[text]
-
- property string labelText: text
- property ListView view: listView
- property int ourIndex: index
-
- // Can't find a way to do this in the SwipeDelegate component itself,
- // so do it here instead.
- ListView.onRemove: SequentialAnimation {
- PropertyAction {
- target: delegateLoader
- property: "ListView.delayRemove"
- value: true
- }
- NumberAnimation {
- target: item
- property: "height"
- to: 0
- easing.type: Easing.InOutQuad
- }
- PropertyAction {
- target: delegateLoader
- property: "ListView.delayRemove"
- value: false
- }
- }
- }
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/DialPage.qml b/examples/quickcontrols2/gallery/pages/DialPage.qml
deleted file mode 100644
index 55519fb3a..000000000
--- a/examples/quickcontrols2/gallery/pages/DialPage.qml
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "The Dial is similar to a traditional dial knob that is found on devices such as "
- + "stereos or industrial equipment. It allows the user to specify a value within a range."
- }
-
- Dial {
- value: 0.5
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/DialogPage.qml b/examples/quickcontrols2/gallery/pages/DialogPage.qml
deleted file mode 100644
index e5162b36f..000000000
--- a/examples/quickcontrols2/gallery/pages/DialogPage.qml
+++ /dev/null
@@ -1,226 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- readonly property int buttonWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 2, page.availableWidth / 3))
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "Dialog is a popup that is mostly used for short-term tasks "
- + "and brief communications with the user."
- }
-
- Button {
- text: "Message"
- anchors.horizontalCenter: parent.horizontalCenter
- width: buttonWidth
- onClicked: messageDialog.open()
-
- Dialog {
- id: messageDialog
-
- x: (parent.width - width) / 2
- y: (parent.height - height) / 2
-
- title: "Message"
-
- Label {
- text: "Lorem ipsum dolor sit amet..."
- }
- }
- }
-
- Button {
- id: button
- text: "Confirmation"
- anchors.horizontalCenter: parent.horizontalCenter
- width: buttonWidth
- onClicked: confirmationDialog.open()
-
- Dialog {
- id: confirmationDialog
-
- x: (parent.width - width) / 2
- y: (parent.height - height) / 2
- parent: Overlay.overlay
-
- modal: true
- title: "Confirmation"
- standardButtons: Dialog.Yes | Dialog.No
-
- Column {
- spacing: 20
- anchors.fill: parent
- Label {
- text: "The document has been modified.\nDo you want to save your changes?"
- }
- CheckBox {
- text: "Do not ask again"
- anchors.right: parent.right
- }
- }
- }
- }
-
- Button {
- text: "Content"
- anchors.horizontalCenter: parent.horizontalCenter
- width: buttonWidth
- onClicked: contentDialog.open()
-
- Dialog {
- id: contentDialog
-
- x: (parent.width - width) / 2
- y: (parent.height - height) / 2
- width: Math.min(page.width, page.height) / 3 * 2
- contentHeight: logo.height * 2
- parent: Overlay.overlay
-
- modal: true
- title: "Content"
- standardButtons: Dialog.Close
-
- Flickable {
- id: flickable
- clip: true
- anchors.fill: parent
- contentHeight: column.height
-
- Column {
- id: column
- spacing: 20
- width: parent.width
-
- Image {
- id: logo
- width: parent.width / 2
- anchors.horizontalCenter: parent.horizontalCenter
- fillMode: Image.PreserveAspectFit
- source: "../images/qt-logo.png"
- }
-
- Label {
- width: parent.width
- text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc finibus "
- + "in est quis laoreet. Interdum et malesuada fames ac ante ipsum primis "
- + "in faucibus. Curabitur eget justo sollicitudin enim faucibus bibendum. "
- + "Suspendisse potenti. Vestibulum cursus consequat mauris id sollicitudin. "
- + "Duis facilisis hendrerit consectetur. Curabitur sapien tortor, efficitur "
- + "id auctor nec, efficitur et nisl. Ut venenatis eros in nunc placerat, "
- + "eu aliquam enim suscipit."
- wrapMode: Label.Wrap
- }
- }
-
- ScrollIndicator.vertical: ScrollIndicator {
- parent: contentDialog.contentItem
- anchors.top: flickable.top
- anchors.bottom: flickable.bottom
- anchors.right: parent.right
- anchors.rightMargin: -contentDialog.rightPadding + 1
- }
- }
- }
- }
-
- Button {
- text: "Input"
- anchors.horizontalCenter: parent.horizontalCenter
- width: buttonWidth
- onClicked: inputDialog.open()
-
- Dialog {
- id: inputDialog
-
- x: (parent.width - width) / 2
- y: (parent.height - height) / 2
- parent: Overlay.overlay
-
- focus: true
- modal: true
- title: "Input"
- standardButtons: Dialog.Ok | Dialog.Cancel
-
- ColumnLayout {
- spacing: 20
- anchors.fill: parent
- Label {
- elide: Label.ElideRight
- text: "Please enter the credentials:"
- Layout.fillWidth: true
- }
- TextField {
- focus: true
- placeholderText: "Username"
- Layout.fillWidth: true
- }
- TextField {
- placeholderText: "Password"
- echoMode: TextField.PasswordEchoOnEdit
- Layout.fillWidth: true
- }
- }
- }
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/FramePage.qml b/examples/quickcontrols2/gallery/pages/FramePage.qml
deleted file mode 100644
index 7fda3d668..000000000
--- a/examples/quickcontrols2/gallery/pages/FramePage.qml
+++ /dev/null
@@ -1,94 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- readonly property int itemWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 3, page.availableWidth / 3 * 2))
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "Frame is used to layout a logical group of controls together, within a visual frame."
- }
-
- Frame {
- anchors.horizontalCenter: parent.horizontalCenter
-
- Column {
- spacing: 20
- width: page.itemWidth
-
- RadioButton {
- text: "First"
- checked: true
- width: parent.width
- }
- RadioButton {
- id: button
- text: "Second"
- width: parent.width
- }
- RadioButton {
- text: "Third"
- width: parent.width
- }
- }
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/GroupBoxPage.qml b/examples/quickcontrols2/gallery/pages/GroupBoxPage.qml
deleted file mode 100644
index 2a01297bb..000000000
--- a/examples/quickcontrols2/gallery/pages/GroupBoxPage.qml
+++ /dev/null
@@ -1,95 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- readonly property int itemWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 3, page.availableWidth / 3 * 2))
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "A GroupBox provides a frame, a title on top of it, and a logical group of controls within that frame."
- }
-
- GroupBox {
- title: "Title"
- anchors.horizontalCenter: parent.horizontalCenter
-
- Column {
- spacing: 20
- width: page.itemWidth
-
- RadioButton {
- text: "First"
- checked: true
- width: parent.width
- }
- RadioButton {
- id: button
- text: "Second"
- width: parent.width
- }
- RadioButton {
- text: "Third"
- width: parent.width
- }
- }
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/PageIndicatorPage.qml b/examples/quickcontrols2/gallery/pages/PageIndicatorPage.qml
deleted file mode 100644
index 612a942c8..000000000
--- a/examples/quickcontrols2/gallery/pages/PageIndicatorPage.qml
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "PageIndicator is used to indicate the currently active page in a container of pages."
- }
-
- PageIndicator {
- count: 5
- currentIndex: 2
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/ProgressBarPage.qml b/examples/quickcontrols2/gallery/pages/ProgressBarPage.qml
deleted file mode 100644
index 252e8eff9..000000000
--- a/examples/quickcontrols2/gallery/pages/ProgressBarPage.qml
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "ProgressBar indicates the progress of an operation. It can be set in an "
- + "indeterminate mode to indicate that the length of the operation is unknown."
- }
-
- ProgressBar {
- id: bar
- value: 0.5
- anchors.horizontalCenter: parent.horizontalCenter
- }
-
- ProgressBar {
- indeterminate: true
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/RadioButtonPage.qml b/examples/quickcontrols2/gallery/pages/RadioButtonPage.qml
deleted file mode 100644
index 41d4d34ea..000000000
--- a/examples/quickcontrols2/gallery/pages/RadioButtonPage.qml
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "RadioButton presents an option button that can be toggled on or off. "
- + "Radio buttons are typically used to select one option from a set of options."
- }
-
- Column {
- spacing: 20
- anchors.horizontalCenter: parent.horizontalCenter
-
- RadioButton {
- text: "First"
- }
- RadioButton {
- text: "Second"
- checked: true
- }
- RadioButton {
- text: "Third"
- enabled: false
- }
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/RangeSliderPage.qml b/examples/quickcontrols2/gallery/pages/RangeSliderPage.qml
deleted file mode 100644
index 65f852ffd..000000000
--- a/examples/quickcontrols2/gallery/pages/RangeSliderPage.qml
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "RangeSlider is used to select a range specified by two values, by sliding each handle along a track."
- }
-
- RangeSlider {
- id: slider
- first.value: 0.25
- second.value: 0.75
- anchors.horizontalCenter: parent.horizontalCenter
- }
-
- RangeSlider {
- orientation: Qt.Vertical
- first.value: 0.25
- second.value: 0.75
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/ScrollBarPage.qml b/examples/quickcontrols2/gallery/pages/ScrollBarPage.qml
deleted file mode 100644
index 90c43965b..000000000
--- a/examples/quickcontrols2/gallery/pages/ScrollBarPage.qml
+++ /dev/null
@@ -1,87 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-Flickable {
- id: flickable
-
- contentHeight: pane.height
-
- Pane {
- id: pane
- width: flickable.width
- height: flickable.height * 1.25
-
- Column {
- id: column
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "ScrollBar is an interactive bar that can be used to scroll to a specific position. "
- + "A scroll bar can be either vertical or horizontal, and can be attached to any Flickable, "
- + "such as ListView and GridView."
- }
-
- Image {
- rotation: 90
- source: "../images/arrows.png"
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
- }
-
- ScrollBar.vertical: ScrollBar { }
-}
diff --git a/examples/quickcontrols2/gallery/pages/ScrollIndicatorPage.qml b/examples/quickcontrols2/gallery/pages/ScrollIndicatorPage.qml
deleted file mode 100644
index 301146eaf..000000000
--- a/examples/quickcontrols2/gallery/pages/ScrollIndicatorPage.qml
+++ /dev/null
@@ -1,87 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-Flickable {
- id: flickable
-
- contentHeight: pane.height
-
- Pane {
- id: pane
- width: flickable.width
- height: flickable.height * 1.25
-
- Column {
- id: column
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "ScrollIndicator is a non-interactive indicator that indicates the current scroll position. "
- + "A scroll indicator can be either vertical or horizontal, and can be attached to any Flickable, "
- + "such as ListView and GridView."
- }
-
- Image {
- rotation: 90
- source: "../images/arrows.png"
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
- }
-
- ScrollIndicator.vertical: ScrollIndicator { }
-}
diff --git a/examples/quickcontrols2/gallery/pages/ScrollablePage.qml b/examples/quickcontrols2/gallery/pages/ScrollablePage.qml
deleted file mode 100644
index 483159e72..000000000
--- a/examples/quickcontrols2/gallery/pages/ScrollablePage.qml
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-Page {
- id: page
-
- default property alias content: pane.contentItem
-
- Flickable {
- anchors.fill: parent
- contentHeight: pane.implicitHeight
- flickableDirection: Flickable.AutoFlickIfNeeded
-
- Pane {
- id: pane
- width: parent.width
- }
-
- ScrollIndicator.vertical: ScrollIndicator { }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/SliderPage.qml b/examples/quickcontrols2/gallery/pages/SliderPage.qml
deleted file mode 100644
index 5dcac2d89..000000000
--- a/examples/quickcontrols2/gallery/pages/SliderPage.qml
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "Slider is used to select a value by sliding a handle along a track."
- }
-
- Slider {
- id: slider
- value: 0.5
- anchors.horizontalCenter: parent.horizontalCenter
- }
-
- Slider {
- orientation: Qt.Vertical
- value: 0.5
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/SpinBoxPage.qml b/examples/quickcontrols2/gallery/pages/SpinBoxPage.qml
deleted file mode 100644
index 6fddbd27e..000000000
--- a/examples/quickcontrols2/gallery/pages/SpinBoxPage.qml
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "SpinBox allows the user to choose an integer value by clicking the up or down indicator buttons, "
- + "by pressing up or down on the keyboard, or by entering a text value in the input field."
- }
-
- SpinBox {
- id: box
- value: 50
- anchors.horizontalCenter: parent.horizontalCenter
- editable: true
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/StackViewPage.qml b/examples/quickcontrols2/gallery/pages/StackViewPage.qml
deleted file mode 100644
index fc2a4bdf1..000000000
--- a/examples/quickcontrols2/gallery/pages/StackViewPage.qml
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-StackView {
- id: stackView
- initialItem: page
-
- Component {
- id: page
-
- Pane {
- id: pane
- width: parent ? parent.width : 0 // TODO: fix null parent on destruction
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "StackView provides a stack-based navigation model which can be used with a set of interlinked pages. "
- + "Items are pushed onto the stack as the user navigates deeper into the material, and popped off again "
- + "when he chooses to go back."
- }
-
- Button {
- id: button
- text: "Push"
- anchors.horizontalCenter: parent.horizontalCenter
- width: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 2, pane.availableWidth / 3))
- onClicked: stackView.push(page)
- }
-
- Button {
- text: "Pop"
- enabled: stackView.depth > 1
- width: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 2, pane.availableWidth / 3))
- anchors.horizontalCenter: parent.horizontalCenter
- onClicked: stackView.pop()
- }
- }
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/SwipeViewPage.qml b/examples/quickcontrols2/gallery/pages/SwipeViewPage.qml
deleted file mode 100644
index 9cff5db89..000000000
--- a/examples/quickcontrols2/gallery/pages/SwipeViewPage.qml
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-Pane {
- id: pane
-
- SwipeView {
- id: view
- currentIndex: 1
- anchors.fill: parent
-
- Repeater {
- model: 3
-
- Pane {
- width: view.width
- height: view.height
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "SwipeView provides a navigation model that simplifies horizontal paged scrolling. "
- + "The page indicator on the bottom shows which is the presently active page."
- }
-
- Image {
- source: "../images/arrows.png"
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
- }
- }
- }
-
- PageIndicator {
- count: view.count
- currentIndex: view.currentIndex
- anchors.bottom: parent.bottom
- anchors.horizontalCenter: parent.horizontalCenter
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/SwitchPage.qml b/examples/quickcontrols2/gallery/pages/SwitchPage.qml
deleted file mode 100644
index 2f4089a0e..000000000
--- a/examples/quickcontrols2/gallery/pages/SwitchPage.qml
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "Switch is an option button that can be dragged or toggled on or off. "
- + "Switches are typically used to select between two states."
- }
-
- Column {
- spacing: 20
- anchors.horizontalCenter: parent.horizontalCenter
-
- Switch {
- text: "First"
- }
- Switch {
- text: "Second"
- checked: true
- }
- Switch {
- text: "Third"
- enabled: false
- }
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/TabBarPage.qml b/examples/quickcontrols2/gallery/pages/TabBarPage.qml
deleted file mode 100644
index b14df6d12..000000000
--- a/examples/quickcontrols2/gallery/pages/TabBarPage.qml
+++ /dev/null
@@ -1,104 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-Page {
- id: page
-
- SwipeView {
- id: swipeView
- anchors.fill: parent
- currentIndex: tabBar.currentIndex
-
- Repeater {
- model: 3
-
- Pane {
- width: swipeView.width
- height: swipeView.height
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "TabBar is a bar with icons or text which allows the user "
- + "to switch between different subtasks, views, or modes."
- }
-
- Image {
- source: "../images/arrows.png"
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
- }
- }
- }
-
- footer: TabBar {
- id: tabBar
- currentIndex: swipeView.currentIndex
-
- TabButton {
- text: "First"
- }
- TabButton {
- text: "Second"
- }
- TabButton {
- text: "Third"
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/TextAreaPage.qml b/examples/quickcontrols2/gallery/pages/TextAreaPage.qml
deleted file mode 100644
index 91ecb16e4..000000000
--- a/examples/quickcontrols2/gallery/pages/TextAreaPage.qml
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "TextArea is a multi-line text editor."
- }
-
- TextArea {
- width: Math.max(implicitWidth, Math.min(implicitWidth * 3, pane.availableWidth / 3))
- anchors.horizontalCenter: parent.horizontalCenter
-
- wrapMode: TextArea.Wrap
- text: "TextArea\n...\n...\n..."
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/TextFieldPage.qml b/examples/quickcontrols2/gallery/pages/TextFieldPage.qml
deleted file mode 100644
index 7ecdddc20..000000000
--- a/examples/quickcontrols2/gallery/pages/TextFieldPage.qml
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "TextField is a single-line text editor."
- }
-
- TextField {
- id: field
- placeholderText: "TextField"
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/ToolTipPage.qml b/examples/quickcontrols2/gallery/pages/ToolTipPage.qml
deleted file mode 100644
index eaae72b15..000000000
--- a/examples/quickcontrols2/gallery/pages/ToolTipPage.qml
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "A tool tip is a short piece of text that informs the user of a control's function."
- }
-
- Button {
- text: "Tip"
- anchors.horizontalCenter: parent.horizontalCenter
-
- ToolTip.timeout: 5000
- ToolTip.visible: pressed
- ToolTip.text: "This is a tool tip."
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/pages/TumblerPage.qml b/examples/quickcontrols2/gallery/pages/TumblerPage.qml
deleted file mode 100644
index 8a22a0254..000000000
--- a/examples/quickcontrols2/gallery/pages/TumblerPage.qml
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick
-import QtQuick.Controls
-
-ScrollablePage {
- id: page
-
- Column {
- spacing: 40
- width: parent.width
-
- Label {
- width: parent.width
- wrapMode: Label.Wrap
- horizontalAlignment: Qt.AlignHCenter
- text: "Tumbler is used to select a value by spinning a wheel."
- }
-
- Tumbler {
- model: 10
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
-}
diff --git a/examples/quickcontrols2/gallery/rc_gallery.py b/examples/quickcontrols2/gallery/rc_gallery.py
deleted file mode 100644
index 0815c05ea..000000000
--- a/examples/quickcontrols2/gallery/rc_gallery.py
+++ /dev/null
@@ -1,7854 +0,0 @@
-# Resource object code (Python 3)
-# Created by: object code
-# Created by: The Resource Compiler for Qt version 6.0.0
-# WARNING! All changes made in this file will be lost!
-
-from PySide6 import QtCore
-
-qt_resource_data = b"\
-\x00\x00\x00\x0b\
-m\
-odule App\x0a\
-\x00\x00\x00`\
-[\
-Material]\x0aPrimar\
-y=#41cd52\x0aAccent\
-=#41cd52\x0aTheme=S\
-ystem\x0a\x0a[Universa\
-l]\x0aAccent=#41cd5\
-2\x0aTheme=System\x0a\
-\x00\x00\x09\xbb\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2020 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick.Controls\x0a\x0aT\
-oolBar {}\x0a\
-\x00\x00\x0c\xff\
-\x00\
-\x00/~x\x9c\xbd\x1a\xefs\xa3\xb8\xf5{\xfe\x0a\xd5\
-\xbd\x0f\xc9\x9dC6\xb9\xeeu\xc67\xdb\x1b\xc7&\x09\
-S\xc7\xce\x02\xdet\xa7\xd3\xb9\xc1 \xdbj0\x22B\
-\xc4\xf1m\xf3\xbf\xf7=\x090\x18p\x12\xf7\xae\xcc\xce\
-\x06\xa4\xa7\xf7[\xef==\xf9\xec\xfb\xdf\xf19R\xff\
-\xc8\x80\xc7\x1b\xc1\x16KI\x8e\x07'\xe4\xe2\xc3\xf9_\
-\x89\xbb\xa4\xe4\xb3\x84\x99U\xecE\x1b2\x92\x81\xa1!\
-#\xe9\xf9\xb2G\x96R\xc6I\xef\xecl\xbd^\x1b\x8f\
-\xd2`\xfc,d>\x8d\x12\x16-\xce2\xac\xee\x92%\
-d\xceBJ\xe0o\xec\x09I\xf8\x9cH\xc0K\x9f\xbd\
-U\x1c\xd2$\xff\x06:.\xe7\xe1\x03\x93F\xb6\xf4\xbb\
-\xcf\xee\xaf\x97\xe6\xb55\xfeud\x0d\xcc\xb1c\xf6.\
-\x9d\xe1w\x9a\x81\xd5\x8a\x0a\x9fy!\x19)\x82\x94L\
-\x13oAq.\x1b\x00\xc4K\x1e\x06\xc0\x09y\xf2B\
-\x16\x10\x7f\xbb\x06Hi>\x01h\xe5mH\x0a\xeb\xe5\
-\x96\xcf\x08\xd1x\xbe\xcfE\xe0E>%k&\x97\x8a\
-\xc5\x12\x8al=\xf1\x16\x82\xd2\x15\x8d$\x89\x05\x7fb\
-\x01\x0d\x0ap\xc4\xe2\xf0\xb9\x5c{\x82\x12.\xba\xc4\x0b\
-%\x15\x91'\xd9\x13\x0d7]\xa0\xd3H\x04`V\x09\
-\x90\x02\x15\xb3\x08\xd0e\xec\x90\xb5`R\xd2\xa8Dq\
-F\xe5\x9a\xc2\xc8\x86\xa7\xc4\x8b\x82\x1dk\x19\xe4\x8a\x0b\
-R\xd8C\xe3U\xa8\x22TF\x140\xc9x\x94\x10P\
-U\x83\x1d\x15\xf4\xe9\x16Lc\x9b\xa7\x02X\x14\x88\x85\
-Es.V\x1eNf\xfa\xa3\x9ai_\x12\x9c!\x9e\
-l@\x9bA\x9c\xa6Ind0i\xdd\x86\xfd\xaa\xa6\
-P\xc0\xba\x9d\xd2(\xa0\xa2\xa4\xb2\xcc\x8f\x10af\x1d\
-%-@\xf30\xe4\xeb\xa4\x97Q\xec\xd84`\x89\x14\
-l\x96*\xeeQ\x1f\x88\x19\xec\x91\xf0T\x80-pd\
-\xc6\x22Ol\x94(IW[\x07\x14\x80\x7fy*\x11\
-\xcd\x8a\x07l\xce|\xa5\x01\xb0-\xd88\x066\xd0F\
-\xc1\xd6\x17\xe4\x12\xd4\x80\x5ci\x1e\xd0\x0e%\xd5\xc3\x22\
-\x85\x89J\xe4\x8d\x10\xf2=\xa9\xf2\xa6\x84\xca\x98\xf2y\
-@\xc9*M$\x11\x14]C\xa1\xf5f\xfc\x09\xa7\xb2\
-\x9d\xab\xb1\x10\x12q\x09\x1a\xe8je\x85\x80\x10\xf1\x94\
-\x09G\xc1\x0eW@\xd5\x0f=\x06\xeem\xb4\xb1\x02$\
-KJ\xc9Y\x01Q\x83\xd4\xa7\x7f\x147\x99\xfb\xe3\x83\
- \x01\xf7S\xf4}/\xb7\xdc\x19\x18\x85\xa3O\x82\x83\
-\x80\x1b\xc0\xd6L\x9aw\x22>ey\x0a1\xc7\x94\xa9\
-\xf5\x88>\xf2V\x14\x99\xab\xc7=\x10b\x0b\xa2\xcc\xc2\
-d\x92\xe3E\xafVx\xb9\xd0\x01eF\xd1\xa3@*\
-Nh\x14\xc0(\x06\x00\xe4k\xc5%%Ze2!\
-\xe0\xbf\xe0\xe1A\x8ef\x0e\xf3ZII\x1e62\x7f\
-#IL}\xf46X\xcb\xd0\x0d\xb3X\xa0<.I\
-2q\xf2\x88{c9\xc4\x99\x5c\xb9\xf7}\xdb$\xf0\
-~gO\xbeXCsH.\xbf\xc2\xa4I\x06\x93\xbb\
-\xaf\xb6u}\xe3\x92\x9b\xc9hh\xda\x0e\xe9\x8f\x870\
-:vm\xebr\xeaNlGm\x93\xbe\x03\x8b;j\
-\xae?\xfeJ\xcc\x7f\xdc\xd9\xa6\xe3\x90\x89M\xac\xdb\xbb\
-\x91\x05\xf8\x80\x80\xdd\x1f\xbb\x96\xe9t\x895\x1e\x8c\xa6\
-Ck|\xdd%\x80\x83\x8c'\xae\x0a\xc6\xd6\xad\xe5\x02\
-\xa4;\xe9*\xd2\xf5\x95drEnM{p\x03\x9f\
-\xfdKkd\xb9_\x15\xc9+\xcb\x1d#\xb9\xab\x89\xad\
-\x22\x02\xb9\xeb\xdb\xae5\x98\x8e\xfa6\xb9\x9b\xdaw\x13\
-\xc7$(\xdf\xd0r\x06\xa3\xbeuk\x0e\x0d\xe0\x01\xe8\
-\x12\xf3\x8b9v\x89s\xd3\x1f\x8d\xaa\xe2\x22\x9e\xc9\xfd\
-\xd8\xb4Q\x86\xb2\xb8\xe4\xd2\x04N\xfb\x97#\x13\xc9)\
-i\x87\x96m\x0e\x5c\x14k\xfb6\x00%\x02\x93\xa3\xae\
-\x8a\xecw\xe6\xc0\x82w\xd0\x8b\x09B\xf5\xed\xaf\xdd\x0c\
-\xadc~\x9e\x02\x1cL\x92a\xff\xb6\x7f\x0d2\x1e\xbf\
-\xae\x1d0\xd2`j\x9b\xb7\xc8;\xa8\xc4\x99^:\xae\
-\xe5N]\x93\x5cO&C\xa5v\xc7\xb4\xbf@\x22t\
-~&\xa3\x89\xa3\x147uL\xc5\xcc\xb0\xef\xf6\x15y\
-\xc0\x02\x8a\x03\x08x\xbf\x9c:\x96R\xa15vM\xdb\
-\x9e\xde\xb9\xd6d|\x026\xbf\x07\x0d\x01\xa7}X=\
-T\xba\x9e\x8cQf\xed;\xe6\xc4\xfe\x8a\xa8Q\x1f\xca\
-\x1a]r\x7fc\xc2\xb8\x8d\xeaUZ\xeb\xa3:\x1c\xd0\
-\xde\xc0-\x83\x01IP\xa6\x12l+/\x19\x9b\xd7#\
-\xeb\xda\x1c\x0fL\x04\x98 \xa2{\xcb1O\xc0x\x96\
-\x83\x00\x96\x22\x0e\x1e\x01d\xa7Jv4\x1a\xf0\xa6\xcc\
-uUu\xe7\xae\xb2.\xb1\xaeH\x7f\xf8\xc5B\xfe3\
-x\xf0\x07\xc7\xca\xdcG\xa9op\x93i\xdf\xe8\x94\xca\
-\x09s<\xcc\x8b\x89\xef\xf4\xf0\xef\xf7\x9c\x1d\x1d\xb1U\
-\xcc\xa1\xc2\xf9,?\xa7\xcc\x7f\xd8\xf94F\x1e$2\
-\x88\x1a;\xc3XM\x09\x1e\x96\xc6\x8d\xd0\x9b%FB\
-\xa5\x84`\x98\x14h;F\x07\xd3Y?\x8e\x8f\x8e\xe0\
-\xbf0K>\xf7\x0cB\xcc\x9a|;\xc2\x18\xc2\x82\x1e\
-\x04\x0d\x1cP\x9fk\x16\xc8e\x8f\xfc\xf8\xd3\x07\xf5\xb9\
-\xa4\x18\x97{\xe4\xe3\x85\xfe~b\x09\x9b\x85\xb4G\xa4\
-H\xa9\x1a\x91L\xe2w\x07\xa2\x9f\xe2\x8e\xe4\xdcu\x8e\
-\xd4\xfc<\x8d|\x15{\x974\x8c\x8fO2\xaa\xf8\x84\
-Tb\x80\x8dCo\x03\x5cg\xcb\xc8'\x15\xf0\xbf0\
-\xba6\xfcT\x08\x08\xdd\x16\xa4\xedg\xf2\xa7O\x9f\xc8\
-\xe9yeq6\x9f\xad\x1cc(\xfeT\xc7X,\xc1\
-\xe7\x97-vH\xc744\x16T\x1e7\x12<1\x94\
-d\x86\xe4#\xbe\xa6b\xe0%\x14\xb8\x07A;\x15\x1e\
-R\x81,w\xf2\xc2\x05\xd2MV\xb8<\xca\xd3\x8fg\
-\x9d\x0a\xf1\x1f\xc8\xf1~\xee\x14\x83\x9d\xc7Ux\xfa(\
-\x1fQ\x99\xa7~\xa6\xcc\x8b\xd3\x0e,o\x10\xf8\x070\
-\xf2R\xae\xc2\xce.\x22\xe0\xb4\x8e\x04P\x83\xd8)\x88\
-\xa5\xd6\x9c\xfc\x5c\xac\x02\x1f\xe21\x8d\xa6\x224\x9fU\
-)\x15\x86\x9bc\x10\xeeDA\xbch[:\x99\x83\x95\
-\x8c\x88\xeeS\xf8]>\x08\xf9\x0a\x12\x8d\xdc\x10\xcc\x9e\
-\x90\x9d\x13\xb9Q>r\xe9%\xcc\xefT0.\xc1O\
-}\xc8W[\x8c\x09}L)\x14\xb8I\x8f\xfc\xb3c\
-&~\xa7\x8b\x0b\xfd\x87\xce\xbf\x0a\x10\x1ay\xe0\x84H\
-\x19j\xc3\x07e\xba\x80\xc6\x90\xba\xffF\xb6\x1e\xc2\xa3\
->8\xde\x13$y\x00\x8c\xbc'\xb6\x80WD\xd4W\
-\xfeh\x00k\x8b\x05\x15\xc7'o\xe4\xa7G\x1c\x09\xf5\
-\x83'\x82\xbf\xd3\x8dq\x03\xde\x8cv\x00s$\xcd$\
-\xb5\xbf\x97\x91k\xc2;\xca\xabs\xb6\x9d\x06\xc3\x19X\
->4\x0a\x8a\xae2C\xbd\xa0\xa9\x03\xe1\x81\x93vJ\
-\x9c\xb8Z<\xe4\xe4[\xc57\xd8\x9c\x1c7\xa0;\xd9\
-\x01S\xa2\x17`1\xcfe)?\xcd;\xb5\xb2O\x95\
-\xf8\x84\x86P\xd0\xd4\xf1k\xae\x95\xe3\xed`\x7f9\xaa\
-\xbe\xbd\xc5<\x9d[\x1a\xa5\x9dfc\xf0XU\x8e\x08\
-\xb1\xcf\xfc\x8d\x16\xaa\xadm2Pg\xb5C\xbc\xa4\xff\
-\x12\x82\xb2\xac\x19\xcd%\xf5\xa0\xac\xeba\x946\xf0<\
-{\xe9\x89\x12\x036_\xeb,\xb0\xa3\xbe$\xf6|\xd8\
-Z=\x92\x05\xe6\xfc\x81\xa3!\xe8(1\xe0\xc0\x13\xf6\
-\xf0\xf8\x0cf9\xaa@(\x1a\xa9\x94\x159\x8b\xe5J\
-\xc0\xbd^Yb=\x7fF\xde\x8c\x86\x0d\xd8P{*\
-\x8a*\x80\xda\xb4\xa4\xcf\x90ZjN$\xe9\xaa\x1c\xa7\
-K\xc3\x06\xae@w\xbf\x86\xf0D\xc5\xa6\x16\xf4\xe0D\
-\x10I#f\xcf4t\xd8o\xb4\xa6\x1d|(\x9c\xed\
-aF\xb1d\x98\xf8a\xab\xb3\xc7.\x1c\xa8\x91\xfd\x86\
-\xa7\xcf\xb0\x1f\xb2E\x84\x87\x88\x1e\x86I\xf5u3\x80\
-O8\xd7\xee.z\x82\xb0\x07Y\xb6i\xc9\x97\x96%\
-\xda\xbc\xca`\xf7:\xf9\x16\xb9\xb5E\xddo\xb2`\xdd\
-kk\xa08\xd7\x80\x01\x9f\x1d\xbfo\x84y\xce\xfd\xcb\
-PE\x039\xd5\xc5C#\xac\x14^\x94\xe0)p\x02\
-\xdb\x82\x01{j3\xb8<\xd6\xbao\x5cS\xdb\x8c5\
-\xa4\xca\x7f:yV\xaa{C\xfeTvc\x9e\xad\x86\
-p\xf4\xe3\x8b\xa6\xe0\x93?/\xff\x13[\x98!\xde\xc8\
-R)U\xfc\xbe<\xf4g\xe0Zod\xc2C\xd8C\
-\x94\xf2r\xd4\xfcU\x89\xdcC\x15\xeaw\x22\xab\x8e\xff\
-\xc5PV{\xdezri\xacXt\xac\xcbR\xed]\
-\xdd\xacH5tEzB\xce\xc8\x8fp\x16\xbf(\x16\
-\xe7\x95j\x05lK\x0d\xb7\x1en\x8d\xa7\x86d\xfa\x09\
-J\xcb\xf3\xad\x0f\x8e\xb2\xc8\xb3\x9b7\x83m\xac\xaa:\
-\xec\x9c\xfbi\xd2\xb0m\xcbY\xb1\xb7\x9b\x14_\x0f\xd4\
-P\x9eR\x8c\xc1=\x82\xb1o\x98}5\x18=\xd3[\
-\x111\x9b\xb7\xa1v\x09]\xf5\xaa\xa0\x5c\x8fx\xa0\xb2\
-\x10\xd5\x86\xee\x90k\xc1`\xc9`\x1b\x81kkx4\
-\x80c\xc5C\xbd\xcc\xc8\x9f\xb6\x1a\x81\xe1\xdf\xc6\x15\xa5\
-\xaa#M\x96\xc7\x9ac\xdd\xd3jv\xc9\xac\x8c\xf0C\
-\x8e5\xfa\xab\xfeY\xf9T\xd8\xb5\xb4\xb7\xf8\xda \x05\
-\xce\x99\xa1\xee\xa0~+\xce;\x97i\xb2\x01Y\xf0H\
-\xc5E\xe7\xe7\xac\xe9\x86U\xb7\xf0{g\xb1\xb7\xa0\xc9\
-Y\x05\xe6\x0e\x86\x0c(\xc0;\x0d[\xa8\x8d\x04\xc6\xf8\
-V\xdc8\xf9~\xa4\x83%\xf5\x1f.\xf9s\x0b\xda|\
-\xfa\x00\xc4|5\xe3{\x10g\xd3\xefG\x0c\x9e\xefm\
-\xf6\xea\xa2\x04q\x00z\x08ymxa\xea0\x84|\
-\xb1\x07%_\x1c\xa4\x04\xb5\xfd\x93v\x15\xa8\xf9\xf7c\
-\xbe\x12P\xc0\xb6`Us\xefGy-x\x1a\xb7\xbb\
-B>\xfd~\xc4\xb8\xe2\xb5MW\x819\x80\x84\xe0\x0b\
-A\x93\x04\xca\xf06\x02[\x88\xf7\xa3\xb7\xbd\x80\xf1\xbd\
-\xce\x5c\x828\x04}\xb4\xa0\x0e\x16\xb5m\xdc\x97 \xde\
-\x8f\xde\xf1\x05\x0f\xc3v\xd5\x14\xf3\x87\xa2~\xcd\xb8;\
-P\x07\x90\xd9\xa7\x9b\x83\xd5\x12\xb3\xa8\xdd\xdd\xb3\xd9\x03\
-\xd0\xe6\x89\xb0\x0dq>\x7f\x00\xea5\x8b\xe9>\xd4\xf9\
-\xfcA\xa8\xa5\xbfl\xc7\x0b\x93\xefG\xeaz\xb3v\xaf\
-\xd3\x93\x07 \x85\x8a\xa8/\xa8\xd7\x866\x9b>\x0c\xf1\
-\x15\xa3a\xb0\x07\xb3\x9a?\x005\x9c\xfd\x5c\x16\xb7!\
-\xd6\xb3\x07\xa0MW\xb3\xb0u_d\xb3mhwJ\
-\xaa\x9d=j\xe4g\xe2\xde\xee\x0c\xd0o\xeb\xf3\xe4\x9e\
-\xbd\xdbi\xcc\xc7\x8b\xd1\xfde4\x8b\x98\x84\x84\x8b\x95\
-k\x8f\xdcy\xd1n\xf5\x8c8c\x18\xae\x0a`\xad@\
-\xd0\x96v\x06$o\xdeV\x80#&\xc3{\xf2X\x88\
-\xedIu\x98\x87c\xcaE\x0d<?\xaaT\xe1o\xd4\
-h\xe3\x82\x5cH_u\x10\xac\xa8\x10\xb4\x0d0W\xb9\
-n9L\xe6s8\xf4\xc2\x09\xe4c\xbd\x1b\x82z\xc3\
-\xc2\xb7\xa7\xa56\xee \xb3Q\xf1D\xfbx\x81\x08N\
-Z\xa7Q8\x08[)\xe7x\x94\xa7\xa8\x14#\x8e\x16\
-\x9d}n\xd1\xd6$\xca\x8e\xaa\xb5\xfb\x83\xfcV6!\
-\x1e\x9e\xd9\xb3+`=\xa5n\xc9}/*\xdf\x9b\xce\
-R\x16\xaa\x1fm\xc4!\x95T\x9f\xf8\xe6\x9eO\xd5=\
-t\x8e\xdd\xa8\x1f\x86s\x9d\xad<\xb1`Q\xd2\xd83\
-\xcaa$\x8f\xb5\x0b\x183\x0e\x09\xba~\x1c\xca\x01C\
-:\x97E{\x04?Z!E\xee\x0b\x0aT4\xb6\xa2\
-rXM\x14\x8e\xeaB\xc0\x11\x17\x98y[\xd3J\xb7\
-\xba\xde\xdb\xb7*\xadjk]\xad\x85\x17k\xe7\xd1\xc0\
-\xf7\xf0\xbd\xcf\x05\xf6m,%\xd3\xab\xce\xa6%\xaf\xb9\
-ZYIoW}\xae\xce\x0c\xb6\xc1\xa4m\xcd\x0cU\
-\xc4\xb7\xdc\x82\xe8\xc9b\xea9kh@\xcd\x1b\x05\xc7\
-\x95\x9eF\xde1\xc3f\xc6\xc5\xf6\xdc\xba\xa9\xac\xa8\xf4\
-3\x00\xf0\xa7-`\xb9_\xa2\x81\xdf\xd5:\xd9\x22\x82\
-C0\x86\xe7J\x03\xa3\xa9\xa9Q\xa4\xf8\xa2\xe3VL\
-%\xd9\xdd\x88.\x5caa\xd6I\x9a<\x90\xff\xe4\xef\
-\x03\xfc\xdd\xd2\xb6\x0d\x8c\x0dz\x9f\xc6\xb2\xde;\xc8U\
-i\xa8\x8b#\xf2I_ A\x0ded\xf7g\x98@\
-\x1bWd\x94v[\x01/%\xa26\xfd7D\xb6\x06\
-\xa29\x8d\x9dFE1\xae^\xacZ\xdb\xe2U\xd2\xc5\
-\xab\xaf\xef\x8bt6\x1a\xf00]E\x8d\xbd\xfd\xb27\
-i\xb0*\xc1R\xeb\xbf2\xd1vWPYt\xfe\xa1\
-\xdemm\x0b\xcd\xf8\xe4MVu\x85W\xdfu/u\
-l\xf9I\x7fOk9\xd7i#@q{\x08!\x9c\
-l\x95^\xeb\xa0\xe5O\xd6\xc2\xc1\xf8\x0fFS\x8c&\
-\x8d\x80\xf8\xeb\x1c\x1e\xe1V\xe7\xd1 \xcb\x13\xad}+\
-|\xb6\xc4\xc1\x0f\xe6\xb0\x89\x8e\xab\x9e\xd9\xc5\xe6>\xec\
-9\x7fy\xc5\x9ei\xe0\xa8\xdb\xce\xe6\x1e\x95\x92\x5c\xdd\
-\xbc\x15(\xf5\x8dv;8>M\xbeXw\xc1\xfci\
-n\x16\xbf\xe1\x82\xa1\xbe\xf8}\xc9\xdb\xa6\xb0\xff\x05\xfe\
-\xba\xeb1e\x82\x06u?\xf1y\xc8\x05@\xfe\x99\xfe\
-\xe5\x9c^|\xac\x03ptP\xb9\xe9\xb5\xecCTV\
-\xc3N$\xbf\x90s\xe3\x03\xe9\x91\x0fF=k\xff\x7f\
-\x93\xe1\x1b\xd5\x5c\x02\xbb\xc9\xea\xc0\x86\xfb\x9e\xea\xdb\xbe\
-\xb4Sj\xdb\x1f\x1c\xcfw\xae\x09`\xab\xb5\xe7\xa9r\
-\x9a\xaa\xe5\xa6\xc6\xd4\xf4\xeeV~\x16's\xf5(\x09\
-u\x1c\xcc\xdb\xfa\x05\xa8\x1en\x88\x9f\xa5Eo\x0b\x9e\
-m\x1e\x9eIR\xbe\x1d\xa9\x96\xf8m{\x22\xfbI\xe0\
-NQ\xab\x7f~\x81\xbd}\x06n\x96\xe8_\x08\xe2\xad\
-\xe6\x82FT\x14\xbf\x8e\x15\xdb\xfau[\xf5\xce<,\
-u\xf9\xdej\xf6\xd5\x92L\xfbB\xf5\x96\xf4\xfc\xe2\x90\
-\xbd\x7f\xb0f\xacH\x95\xe9\x9e`\x09\x08\x03\xa5{]\
-M\xe7\xdd\x86\xc1\xe6\x8b\xac\x1fH\x07\x7f\xf8\x08\x87\x01\
-.\xf0\xf7\xbdpN\x80Z\x11\x0e~i@I\xc20\
-\xcc\x8b.\xd1\xf7\x1a\xf8\x9b\xea( s/\x81\xf7?\
-L{\xd5\xb7\x97\xa3\x97\xa3\xff\x02\xb1ebi\
-\x00\x00\x09\xe6\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2020 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick.Controls.Ma\
-terial\x0a\x0aToolBar \
-{\x0a Material.f\
-oreground: \x22whit\
-e\x22\x0a}\x0a\
-\x00\x00\x0e\xe1\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-ComboBox is a co\
-mbined button an\
-d popup list. It\
- presents \x22\x0a \
- + \x22a\
- list of options\
- to the user tha\
-t occupies minim\
-al screen space.\
-\x22\x0a }\x0a\x0a \
- ComboBox {\x0a\
- mode\
-l: [\x22First\x22, \x22Se\
-cond\x22, \x22Third\x22]\x0a\
- anch\
-ors.horizontalCe\
-nter: parent.hor\
-izontalCenter\x0a \
- }\x0a\x0a \
- Label {\x0a \
- width: pare\
-nt.width\x0a \
- wrapMode: L\
-abel.Wrap\x0a \
- horizontal\
-Alignment: Qt.Al\
-ignHCenter\x0a \
- text: \x22Co\
-mboBox can be ma\
-de \x5cl editable. \
-An editable comb\
-o box auto-\x22\x0a \
- + \x22\
-completes its te\
-xt based on what\
- is available in\
- the model.\x22\x0a \
- }\x0a\x0a \
-ComboBox {\x0a \
- editable:\
- true\x0a \
- model: ListMod\
-el {\x0a \
- id: model\x0a \
- L\
-istElement { tex\
-t: \x22Banana\x22 }\x0a \
- Li\
-stElement { text\
-: \x22Apple\x22 }\x0a \
- List\
-Element { text: \
-\x22Coconut\x22 }\x0a \
- }\x0a \
- onAccepted\
-: {\x0a \
- if (find(edi\
-tText) === -1)\x0a \
- \
- model.append(\
-{text: editText}\
-)\x0a }\x0a\
- anch\
-ors.horizontalCe\
-nter: parent.hor\
-izontalCenter\x0a \
- }\x0a }\x0a}\x0a\
-\
-\x00\x00\x08Q\
-\x00\
-\x00\x1dpx\x9c\xd5Ymo\xdb8\x12\xfe\xee_1\
-\xf0\x15\xb8v\xd7\xabt\xb7\x05\x16\xf0~8\xc8\xb2\x92\
-\x08p$G\x92\x93\x0b\x0e\x87\x05#\xd16QY\xf4\
-JT\x5c\xef\x22\xff\xfdf\xa8\x17K\xb6\xdc\xa6{{\
-\xc0\x85(j\x89\x1c\x0e\x9fyf8\x1c*\x17\xdf\xfd\
-\x85m\xa0\xff\x81%\xb7\xfbL\xac\xd6\x0a\xdeZ\xef\xe0\
-\xa7\xf7?\xfe\x0c\xe1\x9a\xc3\xad\xc2\x91\xcd\x96\xa5{\x98\
-\xa9\xd8(%S\xc5\x225\x86\xb5R\xdb||q\xb1\
-\xdb\xed\x8c\xdf\x94!\xe4E\x22\x22\x9e\xe6\x22]]T\
-Z\xc3\xb5\xc8a)\x12\x0e\xf8\xbbe\x99\x02\xb9\x04\x85\
-z\xf9g\xb6\xd9&<\xaf\xdfq\x9dP\xca\xe4\x93P\
-F5\xf5\xcdm\xf8\xeb\xc4\xber\xdc_g\x8ee\xbb\
-\x81=\x9e\x04\xd37%\x80\xcd\x86g\x91`\x09\xcc\xf4\
-\x82\x1c\x169[q\x1a\xab:P\xf1Z&1\x22\x81\
-'\x96\x88\x18\xa2\xc3\x1c\x5c\xaa\xc4\x89B\x1b\xb6\x87\x02\
-\xe7\xab\x03\xce\x94\xd4\xb0(\x92Y\xcc\xd2\x88\xc3N\xa8\
-\xb5\x86\xd8RQ\xcd\x07\xb6\xca8\xdf\xf0T\xc16\x93\
-O\x22\xe6q#NZ\x02\xb9T;\x96q\x90\xd9\x08\
-X\xa2x\x962%\x9ex\xb2\x1f\xe1:\xbd\x8b\xa0\xcc\
-&\xc7\xa5\x90b\x91\xa2\xba\x0a\x0e\xec2\xa1\x14O[\
-+>r\xb5\xe3\xd8\xb3\x97\x05\xb04>\xf2\x96\x01\x97\
-2\x83\xc6\x1f\xa5^\xad*%2\xd2X(!\xd3\x1c\
-\x90\xaa\x1e?j\xe9\x1f\x0eb\xa5\xb6e\x91!\xc4\x8c\
-\xb4\x88t)\xb3\x0d\xa3\xc1\x8a?^\x82\x8e\x14\xd0\x08\
-0\xd5\xa3\xb6\x92\xf8\xa1\xc8k'\xa3KO}hv\
-\x99\x22\x03O\xfdT\xa41\xcfZ\x94UqD\x0a+\
-\xefhkQZ&\x89\xdc\xe5\xe3j\xc5\xa1\xcfc\x91\
-\xabL<\x16\x1a=\xf1A\x9a\xd1\x1f\xb9,2\xf4\x05\
-\xf5<\x8a\x94e{mJ>*\xbd\x83\x04\xd0\xaf,\
-\x14\xa9\xd9\xc8X,E\xa4\x19@\xdf\xa2\x8f\xb7\x08\x83\
-|\x14\x1fbA\xad\x91\x06BUb ?\xb4\xa8\xc7\
-IZ\x13W\x84\x0d\x00\xbe\x83.6mT\x05*\x92\
-1\x87M\x91+\xc88\x85\x86V\xcb\x1e\xe5\x13\x0dU\
-;\xb7\xd4\x02\x90J\x85\x0c\x8cJ\xb2\x12THz\xda\
-\x0b\xa7\xf1\x11*\x5c5J\x98\xc0\xf06\xceA\xc1%\
-[\xa4\xd4P\xd0\xd4\xb8\x88\xf8\xff\x0aM\x15\xfe\xd4H\
-$\x96QA\xb1\xcfj\xcf]\xa0S$\xc5$\x06\x08\
-\x86\x01n\xcd\xbc\x7f'Rk\xdb\xd3\x98\xe9r\xa1\xe7\
-\x93\xfa\x94m8\x81;\xcd{h\xc4AD\xbbE\xa8\
-\xbc\xd6KQ\xad\xf5\xca\xacL(\x8f\x9c\x22\x0a\xad\x92\
-\xc0\xd3\x18{)\x01\x10\xae\x8dT\x1cJ\xcaT\x0e\x18\
-\xbf\x18\xe1q\xadf\x89\xe3%Iy\x9d6\xaax\x83\
-|\xcb#\x8a6\x9c+(\x0c\xab\x5c\xa0#.\xcf+\
-s\xea\x8c{\xed\x04\x10x\x97\xe1\xbd\xe9\xdb\x80\xcfs\
-\xdf\xbbs\xa6\xf6\x14&\x0f8h\x83\xe5\xcd\x1f|\xe7\
-\xea:\x84ko6\xb5\xfd\x00Lw\x8a\xbdn\xe8;\
-\x93E\xe8\xf9\x81\xde&f\x80\x93\x87z\xcct\x1f\xc0\
-\xfe\xe7\xdc\xb7\x83\x00<\x1f\x9c\x9b\xf9\xccA}\xb8\x80\
-o\xba\xa1c\x07#p\x5ck\xb6\x98:\xee\xd5\x08P\
-\x07\xb8^\xa8\x93\xb1s\xe3\x84(\x19z#\xbd\xf4\xe9\
-L\xf0.\xe1\xc6\xf6\xadk|5'\xce\xcc\x09\x1f\xf4\
-\x92\x97N\xe8\xd2r\x97\x9e\xaf3\x02\xccM?t\xac\
-\xc5\xcc\xf4a\xbe\xf0\xe7^`\x03\xd97u\x02kf\
-:7\xf6\xd4@\x0c\xb8.\xd8w\xb6\x1bBpm\xce\
-f]sI\x8fw\xef\xda>\xd9\xd06\x17&6\x22\
-5'3\x9b\x96\xd3\xd6N\x1d\xdf\xb6B2\xeb\xf0d\
-!\x89\x08r6\xd2\x99}n[\x0e>#/6\x1a\
-e\xfa\x0f\xa3Jm`\xdf.P\x0e\x07aj\xde\x98\
-Wh\xe3\xdb\xaf\xb3\x83N\xb2\x16\xbe}C\xd8\x91\x92\
-`1\x09B'\x5c\x846\x5cy\xdeT\xd3\x1e\xd8\xfe\
-\x1d\x1e\x84\xc1/0\xf3\x02M\xdc\x22\xb05\x98\xa9\x19\
-\x9azy\xd4\x82\xc4\xa1\x04>O\x16\x81\xa3)t\xdc\
-\xd0\xf6\xfd\xc5<t<\xf7\x1d\xfa\xfc\x1e\x19B\xa4&\
-\xce\x9ej\xae=\x97l.c\xc7\xf6\xfc\x07RM|\
-ho\x8c\xe0\xfe\xda\xc6~\x9f\xe8\xd5\xac\x99DG\x80\
-\xecYa[\x0c\x97D2\xb5a\x07{\xc1\xb5\xaff\
-\xce\x95\xedZ6\x09x\xa4\xe8\xde\x09\xecw\xe8<'\
- \x01G/\x8e\x11\x81\xcb.\xb4\xed\xe44\xc4\xa6\xdd\
-u\xd9\x0d\xe7\x91\xf6.8\x97`N\xef\x1c\xc2_\xc9\
-c<\x04N\x15>\x9a>\xeb\xbab\xdf\x18\xb6\xca\x09\
-\xdb\x9d\xd6\xc5\xc4\x9b\xb2\xfb\xafk\x17\x83\x81\xd8l%\
-V8\xb7\xea\xb6\x10\xd1\xa7\xa3Wc\xc6\xf0 \xc3\xac\
-q\xd4M\xd5T&\x93|0\x98\xb3\x94\xc3\x1f\x03\xca\
-\x05[\x16S\xed2\x86\xf7\x83\xf2=\x93\xb8\xd9\xd5\x1e\
-\x8b\x99\x0c\xf3F\xc2W\x98\xee(?\xc9\x14\xd3\xe1\x0d\
-\xdb\x8e\xab\x89\xd4\x86\x8e\xe2\x9bi%4\x1cc\xaa:\
-\xbc6sF\x07\xf1`'\xb6\xbc%\x9f\xb7\xdf\xfb&\
-Xk\x1e}jM\x88\xda\xef}\x13|\x16\x0b\xd9\x9a\
-\x90\xb5\xdf\xcf@R\xd1\xba\x8b\xa9\xd5\xd1L\xd13\x9e\
-K\x8e\x9a\xce\x16\x15\x22>c\xfe\xa0\x11i\x93\xd5\x9a\
-\xa9\x8f\x1c\xfe\x19\xab\xdc\x84=\xf2$\xc4\xc7\xce\xd8N\
-\xc4j=\xa6\x92\x16\xb5\x19\xfa\xad\x19\x7f~\x09\xac~\
-\x96\x0f\xb8:^9\x02v2\xff\xbf\x82\xdd\x11\xe8\x83\
-\xdb^6\xe3\x1b<\xe5{\xf0\xd6\xcd\xe7\x91b\xe9*\
-9\xc6\x5c\xb7H&2\x1bw\xcd3\xb6\x19\xcf\xe9\xc4\
-\xfc\x07\x0c\xff\xf6\xe1\xc3\x87!\x8c\xf1\xe1\xe3\xc7\x8f\xc3\
-^\x15_\xe2\xbe\xdd\xd6\x9c\xea\x90F\xb0|\xed\x07\x95\
-\x08\xdcB*+\xf8\xa9A\xd4\xbaheja\x89\xf9\
-\x89#\x1dO\x82\xef\x0c\xac\x05yb\x94\xcc\xbc\xc5r\
-\xcd\xc1\xd2\xf4\xf3\xbb~M3r\xcb\x19j\xa8-1\
-\x1d\x18[\xf1\x99'\x81\xf8\x9d\x1f\xb9\xd9\xe8\x8e\x9eU\
-RF\x00V\xba\x84\xa8\x9fCmu\xe9\x8a\xe1n\x8d\
-{\xe4\xbc\x18^P\xd6X\xc4\x18XTc\x8d\xe5\xa4\
-5\xa1\xbd\x13\x9eOz\xbb=\xcf]Z\xb4yF\xc2\
-\x97\xea4\xb4N\xe5\xb2\xd2\x9f\xe7\x04_\xb4\xef\xfa\x93\
-\xd5\x01U'\xb9\xbd0!t\x16\x9e\x14J\xc9\xf4*\
-\x93\xc5\xf6hi\x9d\xf6Z\xc3/\x81\xdb\x9f*\x0fp\
-;\xa9\xf5\x1b\xf2W\x0b\x86\xb1\xa2\xff\xcf\xc0{1\xaf\
-\xe72t;\xa1\xb5\x04\xfe\x0c\xb3\x96L\x8aMZ\x9e\
-\xa3\xc7^\xd5CMW\xbee\x91>??\xbeo\xfa\
-\xea0\xc6\xdbcr\x12\xc2\xf5\xa0\x92\xdb\x1b\x96\xad\x04\
-\x06\xf9O\xef\x0f\xd8\xfbvm\x89C\xab\xbb/\x13\x92\
-\xce\x1fm\x91]\xc6\xb67\x98\x1c\xc6\xa5\x02\xe3\x1e\xdf\
-;\x02\xb8\xa6\xf8\x9d.\xc5\x89\x99\x88UJw\x9b1\
-V\x06\x86~\xbb\xb6\xf4\x86\xeb\xe1i\xd8\xb0\x18U\xd5\
-\x83\xbe\x81\xeaK\x07\xcb\x9b\x02A_\xda(C\xe1\x95\
-\xa2\x88\xd644\xc3;\xd0\x1d\xe5\xaca\x8b\xe2\x83\x99\
-\xd5h\xcfq\x93TC\xdfJAK\xe4\xbaJ\xc7'\
-2\xad\xec\xdb\xee\xd6iu\xacA\x11\x89}Y\x93\xc6\
-\xec\xa4\xfc\x1e\xf2\x07\xa8\xfd\x16\xa9\xee\x96?\xbf\xd4\x94\
-uz{\xd2\xd4+R\xd5-\xd8\x1a]\xdd\xee\xd7\xaf\
-\xac[f6\xca\xba\xdd\xaf_Y\xb78n\x94u\xbb\
-_\xbf\xb2\xa3\x92\xbe\x1d\x1b\xed\xfeW\xa5\xee\xb8\x98\xc1\
-\xd2\x97>\xc6\xd4\xb75\x9cO\xea\x87\xbdBu\x92\x1e\
-C\xeb\xde\xd7nU\x95['\xde3un]\xe3V\
-j\xcbs\x06\xaf\x98X\xa0\x0aUf\x5c\xf8\xbes\x96\
-5<|\xa1\x12\xd5\x07zKc\xafPIQ%\xd6\
-+\xf1\xe2\xca\xf1\x8b\xb4\x1e\x98\x9aIF\x1f}\xfbo\
-&\xb5X)\xf4'\xe9,\xbf\xb66\xd5\xcb\xb8\xf7\xb2\
-\xfd/\xb2\xfc\xdf\xa7\x8c6\xb7t\xfa\xce\x98\xae\x0e\xe5\
-\xccXsu^\xbe9w\xe9\xb0>s\xd6v&\x08\
-\x8c\xdd\xfa\xa2\x817\x5c\xfa9\x85sq\x01\x16K\xff\
-\xae`\x89\x02\xf4'\x04\xb6\xa7O\x92\xb1,\xbf2V\
-\xdf\x90\xbb\xf7\xcc\xa8\xa9\xee\x84\xcay\xb2\x1c\xf5i\xcd\
-\xb5\x12\xa10\xf82\xfap\x9e+\xceb\xa3w\xa3i\
-\xaaeZ\xdeD\xf0\xd6\xc7\x7f+P\xb9\xc0z'\x15\
-\xd5\x9f\x0f\xfa#p^\x99jF_\x10\xa2\xa6\xb0\x5c\
-\xe3\xea\xab\xee?\xa6\x10\xf7f\x83\x0f\xa7\xb2\xfd\xd7.\
-KO,)xO\x95R\xb7\xd3DC\xcd-6\x8f\
-<\xfb\x9a\xb1m;\xe8s\xc5K\xd0\x97\x1b\xff<^\
-%\xe9\xeb\xd1\xb9Q\xce\xe8\xafBF\x99\xfd\xec\xf2\xc5\
-I\xbdB\xdd\x16,\xfe\x06\xfb\xfe_\xdd\xb4dI\xfe\
-R?\x1d'\x9f\xee\xd3\xf3\xe0y\xf0\x1f\x86VO'\
-\
-\x00\x00\x0b\xef\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-The Dial is simi\
-lar to a traditi\
-onal dial knob t\
-hat is found on \
-devices such as \
-\x22\x0a \
- + \x22stereos or \
-industrial equip\
-ment. It allows \
-the user to spec\
-ify a value with\
-in a range.\x22\x0a \
- }\x0a\x0a \
-Dial {\x0a \
- value: 0.5\x0a \
- anchor\
-s.horizontalCent\
-er: parent.horiz\
-ontalCenter\x0a \
- }\x0a }\x0a}\x0a\
-\x00\x00\x0c2\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-SpinBox allows t\
-he user to choos\
-e an integer val\
-ue by clicking t\
-he up or down in\
-dicator buttons,\
- \x22\x0a \
- + \x22by pressin\
-g up or down on \
-the keyboard, or\
- by entering a t\
-ext value in the\
- input field.\x22\x0a \
- }\x0a\x0a \
- SpinBox {\x0a \
- id: box\x0a\
- valu\
-e: 50\x0a \
- anchors.horizo\
-ntalCenter: pare\
-nt.horizontalCen\
-ter\x0a \
-editable: true\x0a \
- }\x0a }\x0a}\
-\x0a\
-\x00\x00\x0e\x0f\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- readonly proper\
-ty int itemWidth\
-: Math.max(butto\
-n.implicitWidth,\
- Math.min(button\
-.implicitWidth *\
- 3, page.availab\
-leWidth / 3 * 2)\
-)\x0a\x0a Column {\x0a\
- spacing:\
- 40\x0a widt\
-h: parent.width\x0a\
-\x0a Label {\
-\x0a wid\
-th: parent.width\
-\x0a wra\
-pMode: Label.Wra\
-p\x0a ho\
-rizontalAlignmen\
-t: Qt.AlignHCent\
-er\x0a t\
-ext: \x22Frame is u\
-sed to layout a \
-logical group of\
- controls togeth\
-er, within a vis\
-ual frame.\x22\x0a \
- }\x0a\x0a F\
-rame {\x0a \
- anchors.horiz\
-ontalCenter: par\
-ent.horizontalCe\
-nter\x0a\x0a \
- Column {\x0a \
- spaci\
-ng: 20\x0a \
- width: pa\
-ge.itemWidth\x0a\x0a \
- Ra\
-dioButton {\x0a \
- \
-text: \x22First\x22\x0a \
- \
- checked: true\x0a\
- \
- width: paren\
-t.width\x0a \
- }\x0a \
- RadioB\
-utton {\x0a \
- id: \
-button\x0a \
- text:\
- \x22Second\x22\x0a \
- wi\
-dth: parent.widt\
-h\x0a \
- }\x0a \
- RadioButton \
-{\x0a \
- text: \x22Thi\
-rd\x22\x0a \
- width: p\
-arent.width\x0a \
- }\x0a \
- }\x0a \
- }\x0a }\x0a}\x0a\
-\x00\x00\x0b\xab\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-PageIndicator is\
- used to indicat\
-e the currently \
-active page in a\
- container of pa\
-ges.\x22\x0a }\x0a\
-\x0a PageInd\
-icator {\x0a \
- count: 5\x0a \
- curren\
-tIndex: 2\x0a \
- anchors.ho\
-rizontalCenter: \
-parent.horizonta\
-lCenter\x0a \
-}\x0a }\x0a}\x0a\
-\x00\x00\x0e\x98\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aPa\
-ge {\x0a id: pag\
-e\x0a\x0a SwipeView\
- {\x0a id: s\
-wipeView\x0a \
- anchors.fill: p\
-arent\x0a cu\
-rrentIndex: tabB\
-ar.currentIndex\x0a\
-\x0a Repeate\
-r {\x0a \
-model: 3\x0a\x0a \
- Pane {\x0a \
- wid\
-th: swipeView.wi\
-dth\x0a \
- height: swip\
-eView.height\x0a\x0a \
- Co\
-lumn {\x0a \
- spaci\
-ng: 40\x0a \
- width\
-: parent.width\x0a\x0a\
- \
- Label {\x0a \
- \
- width: paren\
-t.width\x0a \
- \
-wrapMode: Label.\
-Wrap\x0a \
- hor\
-izontalAlignment\
-: Qt.AlignHCente\
-r\x0a \
- text: \
-\x22TabBar is a bar\
- with icons or t\
-ext which allows\
- the user \x22\x0a \
- \
- + \x22to \
-switch between d\
-ifferent subtask\
-s, views, or mod\
-es.\x22\x0a \
- }\x0a\x0a \
- \
-Image {\x0a \
- \
-source: \x22../imag\
-es/arrows.png\x22\x0a \
- \
- anchors.h\
-orizontalCenter:\
- parent.horizont\
-alCenter\x0a \
- }\x0a \
- }\
-\x0a }\x0a \
- }\x0a }\x0a\x0a\
- footer: TabB\
-ar {\x0a id:\
- tabBar\x0a \
-currentIndex: sw\
-ipeView.currentI\
-ndex\x0a\x0a Ta\
-bButton {\x0a \
- text: \x22Fir\
-st\x22\x0a }\x0a \
- TabButton \
-{\x0a te\
-xt: \x22Second\x22\x0a \
- }\x0a T\
-abButton {\x0a \
- text: \x22Th\
-ird\x22\x0a }\x0a \
- }\x0a}\x0a\
-\x00\x00\x0b\xcc\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-BusyIndicator is\
- used to indicat\
-e activity while\
- content is bein\
-g loaded,\x22\x0a \
- + \x22\
- or when the UI \
-is blocked waiti\
-ng for a resourc\
-e to become avai\
-lable.\x22\x0a \
-}\x0a\x0a BusyI\
-ndicator {\x0a \
- anchors.h\
-orizontalCenter:\
- parent.horizont\
-alCenter\x0a \
- }\x0a }\x0a}\x0a\
-\x00\x00\x0b(\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aPa\
-ge {\x0a id: pag\
-e\x0a\x0a default p\
-roperty alias co\
-ntent: pane.cont\
-entItem\x0a\x0a Fli\
-ckable {\x0a \
- anchors.fill: p\
-arent\x0a co\
-ntentHeight: pan\
-e.implicitHeight\
-\x0a flickab\
-leDirection: Fli\
-ckable.AutoFlick\
-IfNeeded\x0a\x0a \
- Pane {\x0a \
- id: pane\x0a \
- width:\
- parent.width\x0a \
- }\x0a\x0a \
- ScrollIndicator\
-.vertical: Scrol\
-lIndicator { }\x0a \
- }\x0a}\x0a\
-\x00\x00\x0cv\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-ProgressBar indi\
-cates the progre\
-ss of an operati\
-on. It can be se\
-t in an \x22\x0a \
- + \x22ind\
-eterminate mode \
-to indicate that\
- the length of t\
-he operation is \
-unknown.\x22\x0a \
- }\x0a\x0a Pro\
-gressBar {\x0a \
- id: bar\x0a \
- value\
-: 0.5\x0a \
- anchors.horizo\
-ntalCenter: pare\
-nt.horizontalCen\
-ter\x0a }\x0a\x0a \
- ProgressB\
-ar {\x0a \
- indeterminate: \
-true\x0a \
- anchors.horizon\
-talCenter: paren\
-t.horizontalCent\
-er\x0a }\x0a \
- }\x0a}\x0a\
-\x00\x00\x0eU\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aPa\
-ne {\x0a id: pan\
-e\x0a\x0a SwipeView\
- {\x0a id: v\
-iew\x0a curr\
-entIndex: 1\x0a \
- anchors.fill\
-: parent\x0a\x0a \
- Repeater {\x0a \
- model: \
-3\x0a\x0a P\
-ane {\x0a \
- width: vie\
-w.width\x0a \
- height: \
-view.height\x0a\x0a \
- Col\
-umn {\x0a \
- spacin\
-g: 40\x0a \
- width:\
- parent.width\x0a\x0a \
- \
- Label {\x0a \
- \
- width: parent\
-.width\x0a \
- w\
-rapMode: Label.W\
-rap\x0a \
- hori\
-zontalAlignment:\
- Qt.AlignHCenter\
-\x0a \
- text: \x22\
-SwipeView provid\
-es a navigation \
-model that simpl\
-ifies horizontal\
- paged scrolling\
-. \x22\x0a \
- + \x22T\
-he page indicato\
-r on the bottom \
-shows which is t\
-he presently act\
-ive page.\x22\x0a \
- }\
-\x0a\x0a \
- Image {\x0a \
- \
- source: \x22.\
-./images/arrows.\
-png\x22\x0a \
- anc\
-hors.horizontalC\
-enter: parent.ho\
-rizontalCenter\x0a \
- \
- }\x0a \
- }\x0a \
- }\x0a }\x0a \
- }\x0a\x0a PageIn\
-dicator {\x0a \
- count: view.co\
-unt\x0a curr\
-entIndex: view.c\
-urrentIndex\x0a \
- anchors.bott\
-om: parent.botto\
-m\x0a anchor\
-s.horizontalCent\
-er: parent.horiz\
-ontalCenter\x0a \
-}\x0a}\x0a\
-\x00\x00\x0b\xf8\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-TextArea is a mu\
-lti-line text ed\
-itor.\x22\x0a }\
-\x0a\x0a TextAr\
-ea {\x0a \
- width: Math.max\
-(implicitWidth, \
-Math.min(implici\
-tWidth * 3, pane\
-.availableWidth \
-/ 3))\x0a \
- anchors.horizo\
-ntalCenter: pare\
-nt.horizontalCen\
-ter\x0a\x0a \
- wrapMode: TextA\
-rea.Wrap\x0a \
- text: \x22Text\
-Area\x5cn...\x5cn...\x5cn\
-...\x22\x0a }\x0a \
- }\x0a}\x0a\
-\x00\x00\x0db\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aFl\
-ickable {\x0a id\
-: flickable\x0a\x0a \
- contentHeight: \
-pane.height\x0a\x0a \
- Pane {\x0a \
-id: pane\x0a \
- width: flickabl\
-e.width\x0a \
-height: flickabl\
-e.height * 1.25\x0a\
-\x0a Column \
-{\x0a id\
-: column\x0a \
- spacing: 40\
-\x0a wid\
-th: parent.width\
-\x0a\x0a La\
-bel {\x0a \
- width: par\
-ent.width\x0a \
- wrapMo\
-de: Label.Wrap\x0a \
- h\
-orizontalAlignme\
-nt: Qt.AlignHCen\
-ter\x0a \
- text: \x22Scrol\
-lBar is an inter\
-active bar that \
-can be used to s\
-croll to a speci\
-fic position. \x22\x0a\
- \
- + \x22A scroll \
-bar can be eithe\
-r vertical or ho\
-rizontal, and ca\
-n be attached to\
- any Flickable, \
-\x22\x0a \
- + \x22such as\
- ListView and Gr\
-idView.\x22\x0a \
- }\x0a\x0a \
- Image {\x0a \
- rota\
-tion: 90\x0a \
- source:\
- \x22../images/arro\
-ws.png\x22\x0a \
- anchors.\
-horizontalCenter\
-: parent.horizon\
-talCenter\x0a \
- }\x0a \
-}\x0a }\x0a\x0a Scr\
-ollBar.vertical:\
- ScrollBar { }\x0a}\
-\x0a\
-\x00\x00\x0c\x01\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-A tool tip is a \
-short piece of t\
-ext that informs\
- the user of a c\
-ontrol's functio\
-n.\x22\x0a }\x0a\x0a \
- Button {\x0a\
- text\
-: \x22Tip\x22\x0a \
- anchors.hori\
-zontalCenter: pa\
-rent.horizontalC\
-enter\x0a\x0a \
- ToolTip.timeo\
-ut: 5000\x0a \
- ToolTip.vis\
-ible: pressed\x0a \
- ToolTi\
-p.text: \x22This is\
- a tool tip.\x22\x0a \
- }\x0a }\x0a}\x0a\
-\
-\x00\x00\x0c&\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-Slider is used t\
-o select a value\
- by sliding a ha\
-ndle along a tra\
-ck.\x22\x0a }\x0a\x0a\
- Slider {\
-\x0a id:\
- slider\x0a \
- value: 0.5\x0a \
- ancho\
-rs.horizontalCen\
-ter: parent.hori\
-zontalCenter\x0a \
- }\x0a\x0a \
-Slider {\x0a \
- orientation\
-: Qt.Vertical\x0a \
- value:\
- 0.5\x0a \
- anchors.horizon\
-talCenter: paren\
-t.horizontalCent\
-er\x0a }\x0a \
- }\x0a}\x0a\
-\x00\x00\x0bl\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-Tumbler is used \
-to select a valu\
-e by spinning a \
-wheel.\x22\x0a \
-}\x0a\x0a Tumbl\
-er {\x0a \
- model: 10\x0a \
- anchors.h\
-orizontalCenter:\
- parent.horizont\
-alCenter\x0a \
- }\x0a }\x0a}\x0a\
-\x00\x00\x0c\x9d\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-RangeSlider is u\
-sed to select a \
-range specified \
-by two values, b\
-y sliding each h\
-andle along a tr\
-ack.\x22\x0a }\x0a\
-\x0a RangeSl\
-ider {\x0a \
- id: slider\x0a \
- first.\
-value: 0.25\x0a \
- second.v\
-alue: 0.75\x0a \
- anchors.h\
-orizontalCenter:\
- parent.horizont\
-alCenter\x0a \
- }\x0a\x0a Rang\
-eSlider {\x0a \
- orientatio\
-n: Qt.Vertical\x0a \
- first\
-.value: 0.25\x0a \
- second.\
-value: 0.75\x0a \
- anchors.\
-horizontalCenter\
-: parent.horizon\
-talCenter\x0a \
- }\x0a }\x0a}\x0a\
-\x00\x00\x0e>\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- readonly proper\
-ty int itemWidth\
-: Math.max(butto\
-n.implicitWidth,\
- Math.min(button\
-.implicitWidth *\
- 3, page.availab\
-leWidth / 3 * 2)\
-)\x0a\x0a Column {\x0a\
- spacing:\
- 40\x0a widt\
-h: parent.width\x0a\
-\x0a Label {\
-\x0a wid\
-th: parent.width\
-\x0a wra\
-pMode: Label.Wra\
-p\x0a ho\
-rizontalAlignmen\
-t: Qt.AlignHCent\
-er\x0a t\
-ext: \x22A GroupBox\
- provides a fram\
-e, a title on to\
-p of it, and a l\
-ogical group of \
-controls within \
-that frame.\x22\x0a \
- }\x0a\x0a \
-GroupBox {\x0a \
- title: \x22T\
-itle\x22\x0a \
- anchors.horizo\
-ntalCenter: pare\
-nt.horizontalCen\
-ter\x0a\x0a \
- Column {\x0a \
- spacin\
-g: 20\x0a \
- width: pag\
-e.itemWidth\x0a\x0a \
- Rad\
-ioButton {\x0a \
- t\
-ext: \x22First\x22\x0a \
- \
- checked: true\x0a \
- \
- width: parent\
-.width\x0a \
- }\x0a \
- RadioBu\
-tton {\x0a \
- id: b\
-utton\x0a \
- text: \
-\x22Second\x22\x0a \
- wid\
-th: parent.width\
-\x0a \
- }\x0a \
- RadioButton {\
-\x0a \
- text: \x22Thir\
-d\x22\x0a \
- width: pa\
-rent.width\x0a \
- }\x0a \
- }\x0a \
- }\x0a }\x0a}\x0a\
-\x00\x00\x0c\xee\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-RadioButton pres\
-ents an option b\
-utton that can b\
-e toggled on or \
-off. \x22\x0a \
- + \x22Radio \
-buttons are typi\
-cally used to se\
-lect one option \
-from a set of op\
-tions.\x22\x0a \
-}\x0a\x0a Colum\
-n {\x0a \
-spacing: 20\x0a \
- anchors.\
-horizontalCenter\
-: parent.horizon\
-talCenter\x0a\x0a \
- RadioButt\
-on {\x0a \
- text: \x22Firs\
-t\x22\x0a }\
-\x0a Rad\
-ioButton {\x0a \
- text:\
- \x22Second\x22\x0a \
- checke\
-d: true\x0a \
- }\x0a \
- RadioButton {\x0a\
- \
-text: \x22Third\x22\x0a \
- en\
-abled: false\x0a \
- }\x0a \
- }\x0a }\x0a}\x0a\
-\x00\x00\x0d|\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aFl\
-ickable {\x0a id\
-: flickable\x0a\x0a \
- contentHeight: \
-pane.height\x0a\x0a \
- Pane {\x0a \
-id: pane\x0a \
- width: flickabl\
-e.width\x0a \
-height: flickabl\
-e.height * 1.25\x0a\
-\x0a Column \
-{\x0a id\
-: column\x0a \
- spacing: 40\
-\x0a wid\
-th: parent.width\
-\x0a\x0a La\
-bel {\x0a \
- width: par\
-ent.width\x0a \
- wrapMo\
-de: Label.Wrap\x0a \
- h\
-orizontalAlignme\
-nt: Qt.AlignHCen\
-ter\x0a \
- text: \x22Scrol\
-lIndicator is a \
-non-interactive \
-indicator that i\
-ndicates the cur\
-rent scroll posi\
-tion. \x22\x0a \
- + \x22A\
- scroll indicato\
-r can be either \
-vertical or hori\
-zontal, and can \
-be attached to a\
-ny Flickable, \x22\x0a\
- \
- + \x22such as L\
-istView and Grid\
-View.\x22\x0a \
- }\x0a\x0a \
- Image {\x0a \
- rotati\
-on: 90\x0a \
- source: \x22\
-../images/arrows\
-.png\x22\x0a \
- anchors.ho\
-rizontalCenter: \
-parent.horizonta\
-lCenter\x0a \
- }\x0a }\x0a\
- }\x0a\x0a Scrol\
-lIndicator.verti\
-cal: ScrollIndic\
-ator { }\x0a}\x0a\
-\x00\x00\x09\x89\
-\x00\
-\x00 \xa9x\x9c\xcdYmo\xdb8\x12\xfe\x9e_1\
-\x08\xfa\xa1\xd9u\x94nw\x81\x03|\x1f\x0e~Q\x12\
-\x01\x8e\xedJrs\x01\x0eX\xd0\x12\x1d\xf3\x22\x89*\
-I\xc5\xf5\xed\xf5\xbf\xdf\x0c)\xc7\xb2-'A\xdb\xdd\
-\x1eQ4\xa28\xaf\xcf\x0c\x87C\xf9\xe2\xa7\xef8N\
-\xec?\x18\xc8r\xad\xc4\xfd\xd2\xc0\xdb\xc1\x19\xbc\x7f\xf7\
-\xcb\xdf ^r\xf8`p%/Y\xb1\x86\x91I=\
-GY\x18\x96\x98.,\x8d)u\xf7\xe2b\xb5Zy\
-\x9f\x8c'\xe4E&\x12^hQ\xdc_\xd4R\xe3\xa5\
-\xd0\xb0\x10\x19\x07\xfc[2e@.\xc0\xa0\x5c\xfe\x99\
-\xe5e\xc6\xf5f\x8ezb)\xb3\x07a\xbc\x9a\xf5\xcd\
-\x87\xf8\xf7\xbe\x7f\x15\x8c\x7f\x1f\x05\x03\x7f\x1c\xf9\xdd~\
-4|\xe3\x0c\xc8s\xae\x12\xc12\x18Y\x85\x1cf\x9a\
-\xddsZ\xab_\xa0\xe0\xa5\xccR\xb4\x04\x1eY&R\
-H\xb6<\xa8\xca\xd9\x89D9[C\x85\xfcfkg\
-AbX\x92H\x95\xb2\x22\xe1\xb0\x12fiMl\x88\
-\xa8\xf9\x81\xdd+\xces^\x18(\x95|\x14)O\x9f\
-\xc8IJ$\x17f\xc5\x14\x07\xa9:\xc02\xc3U\xc1\
-\x8cx\xe4\xd9\xba\x83zZ\x95 M\xaeQ\x15B,\
-\x0a\x14W\x9b\x03+%\x8c\xe1EC\xe3\x9c\x9b\x15\xc7\
-7kY\x01+\xd2\xbdhyp)\x15<\xc5\xc3\xc9\
-\xb5\xa2\x0a\x02\xa3H\x85\x11\xb2\xd0\x80P\xb5\xc4\xd1R\
-\x9fo\xc9\x9c\xb4E\xa5\xd0DERD\xb1\x90*g\
-\xb4X\xe3\xc7\x9d\xd1\x89\x01Z\x01fZ\xc4\xd6\x14\xe7\
-\x95\xde\x04\x19Cz\x18\xc3\xde.R\xe4\xe0a\x9c\xaa\
-\x22\xe5\xaa\x01Y\x9dG$\xb0\x8e\x8e\xf5\x16\xa9e\x96\
-\xc9\x95\xee\xd6\x1aOC\x9e\x0am\x94\x98W\xd6z\xc2\
-\x83$c<\xb4\xac\x14\xc6\x82\xde\xccE\xc1\xd4\xda\xba\
-\xa2;.:\x08\x00\xfd\x95\x95!1\xb9L\xc5B$\
-\x16\x01\x8c-\xc6\xb8D3(F\xe96\x17\xcc\x12a\
- \xab\x9c\x0d\x14\x87\x06\xf4\xc8d%qC\xb6\x01\xc0\
-O\xb0k\x9bu\xaa6*\x91)\x87\xbc\xd2\x06\x14\xa7\
-\xd4\xb0b\xd9\x5c>\xd2R\xbds\x9d\x14\x80B\x1aD\
-\xa0\xe3\xc0\xcaP \xc9i*.\xd2=\xabPk\x92\
-1\x81\xe9\xed\x1d3\x05U6@\xd9\x98\x82\xae\xa6U\
-\xc2\xff,k\xea\xf4\xa7A$\xa9L*\xca}\xb6\x89\
-\xdc\x05\x06ERNb\x82`\x1a\xe0\xd6\xd4\xed;\x91\
-F\xd3\x9f'7\xc7\x5cX~\x12_\xb0\x9c\x93q\x87\
-u\x0f\x9d\xd8\x92\xd8\xb0\x08\xa37r)\xab\xad\x5c\xa9\
-\x5cA\x99s\xca(\xf4J\x02/R|K\x05\x80\xec\
-\xca\xa5\xe1\xe0 3\x1a0\x7f1\xc3\xd3\x8d\x98\x05\xae\
-;\x90\xf4\xa6l\xd4\xf9\x06\xba\xe4\x09e\x1b\xf2\x0aJ\
-\xc3\xba\x16\xd8\x8c\xd3\xbavgSq\xaf\x83\x08\xa2\xc9\
-e|\xdb\x0b}\xc0\xe7i8\xf9\x18\x0c\xfd!\xf4\xef\
-p\xd1\x87\xc1dz\x17\x06W\xd71\x5cOFC?\
-\x8c\xa07\x1e\xe2\xdbq\x1c\x06\xfdY<\x09#\xbbM\
-z\x112\x9f\xda\xb5\xde\xf8\x0e\xfc\x7fNC?\x8a`\
-\x12Bp3\x1d\x05(\x0f\x15\x84\xbdq\x1c\xf8Q\x07\
-\x82\xf1`4\x1b\x06\xe3\xab\x0e\xa0\x0c\x18Ob[\x8c\
-\x83\x9b F\xcax\xd2\xb1\xaa\x0f9ar\x097~\
-8\xb8\xc6i\xaf\x1f\x8c\x82\xf8\xce\xaa\xbc\x0c\xe21\xa9\
-\xbb\x9c\x84\xb6\x22\xc0\xb4\x17\xc6\xc1`6\xea\x850\x9d\
-\x85\xd3I\xe4\x03\xf97\x0c\xa2\xc1\xa8\x17\xdc\xf8C\x0f\
-m@\xbd\xe0\x7f\xf4\xc71D\xd7\xbd\xd1h\xd7]\x92\
-3\xb9\x1d\xfb!\xf9\xd0t\x17\xfa>Z\xda\xeb\x8f|\
-Rg\xbd\x1d\x06\xa1?\x88\xc9\xad\xed\xd3\x00AD#\
-G\x1d[\xd9\xa7\xfe \xc0g\xc4\xc5G\xa7z\xe1]\
-\xa7\x16\x1b\xf9\x1ffH\x87\x8b0\xec\xdd\xf4\xae\xd0\xc7\
-\xb7/\xa3\x83A\x1a\xccB\xff\x86lGH\xa2Y?\
-\x8a\x83x\x16\xfbp5\x99\x0c-\xec\x91\x1f~\xc4\x83\
-0\xfa;\x8c&\x91\x05n\x16\xf9\xd6\x98a/\xeeY\
-\xf5(\x05\x81C\x0a|\xee\xcf\xa2\xc0B\x18\x8cc?\
-\x0cg\xd38\x98\x8c\xcf0\xe6\xb7\x88\x10Z\xdaC\xee\
-\xa1\xc5z2&\x9f]\xee\xf8\x93\xf0\x8eD\x13\x1e6\
-\x1a\x1d\xb8\xbd\xf6\xf1}H\xf0Z\xd4z\x04G\x84\xe8\
-\x0d\xe2&\x19\xaaD0\xadc[\x7fa\xec_\x8d\x82\
-+\x7f<\xf0\x89`B\x82n\x83\xc8?\xc3\xe0\x05\x11\
-\x11\x04V9f\x04\xaa\x9dY\xdf)hh\x9b\x0d\xd7\
-\xe5n:wlt!\xb8\x84\xde\xf0c@\xf6\xd7\xf4\
-\x98\x0fQP\xa7\x8f\x85op]\xa3\xef\x9d6\xda\x09\
-\x7f<\xdc4\x13o\xdc\xeb\xef7.NND^J\
-\xecp>\x98\x0f\x95H\x1e\xf6\xa6\xde\x88\xe1A\x86U\
-c\xef5uSJf\xfa\xe4$J\xf0o\xc6\xe6\x19\
-\x9f\xe2A\x08\x7f\x9cPU\x10i\x17\xfb&<\x17\xed\
-Lq\x96\xca\x22[S\x11\xc1\xddo\xd6X \xb1\x13\
-\xa8\x8c\x91\xc5\xadH\xcd\xb2\x0b7\xcc,\xbd\x9c}~\
-\xeb\xdez\xa8\x0e\xcfCa\xecr\xa7^\x16E\xeb2\
-\xd6\xc3\xf7\x1d\xab\xcec\x8fLX[\xdc\xc2\x05\xfcz\
-v\xe6l\x18\xc8\xac\xca\x8b\xda<\x1a\xbad\x09\x96\xed\
-.\xfc\xf6\xee\xe9\xdd\xca\x19\x83\x1d\x1f\x96k\xcf\xceN\
-\x9e\x16Gl\xce\xb3\x86\x80c\x0c;\xeb\x8a\x957x\
-\x06v\x1d\xb7w\x8b\xf3\x1d\x82\xa5T\xe2?\xd4_d\
-\xbdL\xdc\x17tLt\x11d\xcf\xce\xae\x078\xc5\xce\
-\xa5\xc9`\xf8g\xa48\x1d\xe2\xa1!\xef\xa9=eP\
-\xca\xb2*\xdd\xa9\x8d\xf3\x5cj\x93\xad])\xc73\x0f\
-4\xaa0\xe7\xd4m\x80a\xfaA\xc3\xe9\x8e<\x1a?\
-\xc3\xa9\xed\x1e\x94\xe0\x0b\xdb/VE\xdd#\xe8m\x8b\
-\x87\x02\x95\xb7\xe5\xfd\xb2\x05\xa6oc\xb2\x87Lm\xe7\
-\x0d\xd7\xd4\x1f\xed\xea\xc4\xde\x11\x8d\xd2\xde\xd6y\xe7\xe8\
-\x13\x90\xfb\x0bm\x987\xd2ggY\x16\x03L\x8d\x07\
-\x8e\x19\x98;\xe5\x0e+\x0fS\xafx{v\xb2C\x5c\
-\xc3\xf8\xc7\x01$b\x9f\xfd\xe4\x80\xe4s\x17\xde6\x03\
-\x0f\xe7\xce\xb43L\xbb\xf7\x07\xd4\xeb-\xf5\x92\xdb\x0b\
-\xcb9\xb8\x07G\x7f\xc0`\x84\xc9x\x13\xc1\x03\x8a\xb6\
-\x84\xdc\x83\x7f$\x15\xcfA\x94\xba\xca\xb1\x0d\xc9(\x1d\
-\x84\x01\xec\x06\x8c\xe7y\x87\x89\xf0\xe5\xa4}\xf6R\xb0\
-\x09-\x17\x8f\xb6\x1c\xc0Z\xb1\x10u\xdb\xfdc\x12!\
-iX\xf0\xb5\xd9p(\xe3\xcfN\x89}zG\xdb\x85\
-\xc9#W\x19[{\xd2\xfd=4\x03\xbb|\x96u\xc1\
-\xa8\x8a\x1fM\xab\xe3A\xa1\xa1\x0d\x16\x04\xa6R\x17m\
-\xdd\xad\xa1\xf1\xee\xb0\x8d\xfc\xeff2\x96\x87\xaa\x0f\xca\
-\xec\x8e\xd4M\xc9}\xff\xaeu}\x93\x0exS\xca6\
-)\xd0J\xf8\x5c\xe6[']\xe2\xc5\x8d\xe6\x1b\x96x\
-\xa9\x9a\xd3\xcd\xd3\xdd\x81x\xea\xfd\xab\x18J{M[\
-1\x5c\xc7\xb6W3\xbc\x09\xe0\x0b\x05\xc9\x92\x15\xf7\x5c\
-\xff\xe3\x10\x19\x1a_Z\xdf\x0e\x96<y\xe8\xcb\xcf/\
-\xdb\x85j\xf1z\x81\xb7\xbc\x07\xbc\x18\xe3\xad\xa8]K\
-\x13\x11{5y\xda\x15\xee\xa2\xf2:\xcb\xbevKo\
-\xf7.\xf6\xec\xe6\x87m[R\xfe\x0d;v\xcb\xfeW\
-o\xd6U\xb3\xaf\xc1\xc6\xc5\xb6'+\xd7\xcd\xd8\xe7-\
-\xf3\xaf\xd4\xc0\x1c\x08\xa8\xad\xbf\xe6.\xf4\xe8\x82\xdch\
-n#\xff\xde\xc5\xe10\xea4\x8e\xd5\x85A&5?\
-\xd4uI\x91\xa4v\xec\xc8\x9e\xa0(-64\xad\x14\
-I&\xca#\xc6\xd2xu\xc5\xd8C3\xb1e\xaa\xc6\
-\xf3\xd0n\x1a\xcfV\xb2\x8d\xf1N\xceQ\x92\x97\x0a\x1e\
-\x8dg{\xce\xfd\x11\xe4\xdb\x1e\xfb9\xbb([\x9e%\
-j\xd1\xda\x9a\xc6\xcd\xf1m\xdb~\x7fP\xc8\x5ckl\
-\x9d\xf2\xa6\x8ac\x87\xf9\xc8{\xf4\xd9\xc0\x5c\x8a\xf68\
-n\x86\xfb\xbe\x84\xa9\xeay\x17\x82\xf8\xf5\xc5'sn\
-7IY\xdc\x1f/\xa8_\x8ec\xfb\xd2\xa1B\xe3\xa5\
-~\x7f\x7f\xbc\xd8\x86u(35:\xcc\x0d\x1e;,\
-\x15\xa5\xd0\x942\xc03a<\x18WE\x82H\x15b\
-^\xb55\xee\xfb\x03\x1byQ\x00\xd7\x06>U\xf4\xd9\
-\x8a\xa1^l\xf5 \xa0h\xa4\xa8\x9c\x1b\xc8Y\xc6u\
-\xc5R\x06\x0b\xfbU\x88%\x18X\xc3k\xebJ%r\
-\xf1zU\x0bV%d\x9b\x07\x83J\xb1\xb9 '\xf8\
-=j\xf9w\xa5\xe9@\xc5\x9b!]\xd3\xaa\x94\xcc*\
-D\xfe\xc4\x00s1\xe7\x05\x9a\xe4\xbdNWTaZ\
-\x14\xa9\xd0\x9a\xe3}\x87\xb6\xb2\xf0\xe0#z\x8a\xc2p\
-\x0bBR)]i\x07\xe6\xa7\x8a\x91\x9b\x95BGD\
-\xbac\xc4+\xb5\x0d\x09\xbd\x05\xee\xddLh|Z\xa2\
-f\xc5\x15\x86\xac\x11\xac\xa6\xcb\x9a\x95\x02;\x0b\x837\
--\xfaf\xce\x17\x0b\xabP\xbd\x12\xc7\x14\x10\x15\xe4\x84\
-\x82'Mn\xc4\xb1\x10:\xf3`f\xe0\x91\x17\x9c>\
-.k\xe0J\xda\xef\x9a\x05\xe5F\x99\xb1\x84+\x86y\
-\xf4*U\xbc\x02\x96\x09\x04(w\xe1@\xcc\x12L9\
-\xd3r\x17h\x8e\x17\xaf\xb1\xcd\xd1\xde\x1d\x1d\xd9x\xee\
-\xebA\x80\x91\xc5\x0b\xa7T\x1e\x9eZ\x06\x1f\xb1\x98\xef\
-\xad<\xb317G\xdfn\xbbP\xcf\x02\xc3\xf3\x17\xdb\
-+#\xcb\xc6AD\xd3\x17Y\xe6\x12O\xc0\xbc\xc9\xe5\
-\xde|\xb7V\xee\x80\xe7\x86\xa9{Qt\xe1|\xd7O\
-\xbb6e\xa9\xfd\xd5\xe8g\xf8\xe5\xaf\xe9\x0b\x83\xa2\xac\
-~PW(H\xf5\xd7\xf6\x84\x0d\xe6\xff\xdb\xeb\xdb\x02\
-\xaf,\xfaH\xd3\xf3\x9a\xee\xad%64\x8e\xf5n\x93\
-\x87\xed\x95n@?\xebe\xc7\xaeu\xee[\xe0\x8f\xbe\
-\xdc\xe1\xc9\xb8\xadD>M\xc2g7Q\x9d\xb1\xd3\x8c\
-3<<l\xe6\xb9\x1f\xfe\x14O\xe9\x1ca\x99\xee\x1e\
-/\x7f\xcegku\xfd\xa9\xf2h3\xda^\xf8bT\
-\x7f)x\x96>\xe3\xd2s\x11\xdf\x0c[\xe9\xe9\xd7a\
-\xaeb\xe7\xd1L\xd3\xef\x8d9\xff\xc1\xc6\x1f\x1a6e\
-Z\xaf\xa4J\x8f\x1b\xc61\x17\xdc\x81\xf2\xa4\xc1\xdbp\
-\xf9\xb86)\xfc\xf4\x99\x0e\xf0\x9b\xfc:^\xf9\xdc\xff\
-_N\xfe\x07\xb1\xa6\xc9\xb6\
-\x00\x00\x0d\x90\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Layouts\x0aimpo\
-rt QtQuick.Contr\
-ols\x0a\x0aScrollableP\
-age {\x0a id: pa\
-ge\x0a\x0a Column {\
-\x0a spacing\
-: 40\x0a wid\
-th: parent.width\
-\x0a\x0a Label \
-{\x0a wi\
-dth: parent.widt\
-h\x0a wr\
-apMode: Label.Wr\
-ap\x0a h\
-orizontalAlignme\
-nt: Qt.AlignHCen\
-ter\x0a \
-text: \x22Button pr\
-esents a push-bu\
-tton that can be\
- pushed or click\
-ed by the user. \
-\x22\x0a \
- + \x22Buttons are\
- normally used t\
-o perform an act\
-ion, or to answe\
-r a question.\x22\x0a \
- }\x0a\x0a \
- ColumnLayout {\
-\x0a spa\
-cing: 20\x0a \
- anchors.hor\
-izontalCenter: p\
-arent.horizontal\
-Center\x0a\x0a \
- Button {\x0a \
- tex\
-t: \x22First\x22\x0a \
- Layou\
-t.fillWidth: tru\
-e\x0a }\x0a\
- Butt\
-on {\x0a \
- id: button\x0a\
- \
-text: \x22Second\x22\x0a \
- h\
-ighlighted: true\
-\x0a \
- Layout.fillWidt\
-h: true\x0a \
- }\x0a \
- Button {\x0a \
- text:\
- \x22Third\x22\x0a \
- enabled\
-: false\x0a \
- Layout.f\
-illWidth: true\x0a \
- }\x0a \
- }\x0a }\x0a}\x0a\
-\x00\x00\x0d\x07\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-CheckBox present\
-s an option butt\
-on that can be t\
-oggled on or off\
-. \x22\x0a \
- + \x22Check box\
-es are typically\
- used to select \
-one or more opti\
-ons from a set o\
-f options.\x22\x0a \
- }\x0a\x0a C\
-olumn {\x0a \
- spacing: 20\x0a\
- anch\
-ors.horizontalCe\
-nter: parent.hor\
-izontalCenter\x0a\x0a \
- Check\
-Box {\x0a \
- text: \x22Fir\
-st\x22\x0a \
- checked: tru\
-e\x0a }\x0a\
- Chec\
-kBox {\x0a \
- text: \x22Se\
-cond\x22\x0a \
- }\x0a \
-CheckBox {\x0a \
- text:\
- \x22Third\x22\x0a \
- checked\
-: true\x0a \
- enabled: \
-false\x0a \
- }\x0a }\x0a \
- }\x0a}\x0a\
-\x00\x00\x0b\xdc\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-DelayButton is a\
- checkable butto\
-n that incorpora\
-tes a delay befo\
-re the \x22\x0a \
- + \x22butt\
-on is activated.\
- This delay prev\
-ents accidental \
-presses.\x22\x0a \
- }\x0a\x0a Del\
-ayButton {\x0a \
- text: \x22De\
-layButton\x22\x0a \
- anchors.h\
-orizontalCenter:\
- parent.horizont\
-alCenter\x0a \
- }\x0a }\x0a}\x0a\
-\x00\x00\x0c\xcc\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-Switch is an opt\
-ion button that \
-can be dragged o\
-r toggled on or \
-off. \x22\x0a \
- + \x22Switch\
-es are typically\
- used to select \
-between two stat\
-es.\x22\x0a }\x0a\x0a\
- Column {\
-\x0a spa\
-cing: 20\x0a \
- anchors.hor\
-izontalCenter: p\
-arent.horizontal\
-Center\x0a\x0a \
- Switch {\x0a \
- tex\
-t: \x22First\x22\x0a \
- }\x0a \
- Switch {\x0a \
- te\
-xt: \x22Second\x22\x0a \
- che\
-cked: true\x0a \
- }\x0a \
- Switch {\x0a \
- te\
-xt: \x22Third\x22\x0a \
- enab\
-led: false\x0a \
- }\x0a \
- }\x0a }\x0a}\x0a\
-\x00\x00\x0f\xb4\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSt\
-ackView {\x0a id\
-: stackView\x0a \
-initialItem: pag\
-e\x0a\x0a Component\
- {\x0a id: p\
-age\x0a\x0a Pan\
-e {\x0a \
-id: pane\x0a \
- width: pare\
-nt ? parent.widt\
-h : 0 // TODO: f\
-ix null parent o\
-n destruction\x0a\x0a \
- Colum\
-n {\x0a \
- spacing: 40\x0a\
- \
-width: parent.wi\
-dth\x0a\x0a \
- Label {\x0a \
- \
- width: parent.w\
-idth\x0a \
- wrapMod\
-e: Label.Wrap\x0a \
- \
- horizontalAlig\
-nment: Qt.AlignH\
-Center\x0a \
- text:\
- \x22StackView prov\
-ides a stack-bas\
-ed navigation mo\
-del which can be\
- used with a set\
- of interlinked \
-pages. \x22\x0a \
- + \x22\
-Items are pushed\
- onto the stack \
-as the user navi\
-gates deeper int\
-o the material, \
-and popped off a\
-gain \x22\x0a \
- + \x22wh\
-en he chooses to\
- go back.\x22\x0a \
- }\x0a\x0a \
- Bu\
-tton {\x0a \
- id: b\
-utton\x0a \
- text: \
-\x22Push\x22\x0a \
- ancho\
-rs.horizontalCen\
-ter: parent.hori\
-zontalCenter\x0a \
- \
- width: Math.max\
-(button.implicit\
-Width, Math.min(\
-button.implicitW\
-idth * 2, pane.a\
-vailableWidth / \
-3))\x0a \
- onClicke\
-d: stackView.pus\
-h(page)\x0a \
- }\x0a\x0a \
- Butto\
-n {\x0a \
- text: \x22P\
-op\x22\x0a \
- enabled:\
- stackView.depth\
- > 1\x0a \
- width: \
-Math.max(button.\
-implicitWidth, M\
-ath.min(button.i\
-mplicitWidth * 2\
-, pane.available\
-Width / 3))\x0a \
- \
-anchors.horizont\
-alCenter: parent\
-.horizontalCente\
-r\x0a \
- onClicked:\
- stackView.pop()\
-\x0a \
- }\x0a }\
-\x0a }\x0a }\
-\x0a}\x0a\
-\x00\x00\x0b\x88\
-/\
-****************\
-****************\
-****************\
-****************\
-************\x0a**\x0a\
-** Copyright (C)\
- 2017 The Qt Com\
-pany Ltd.\x0a** Con\
-tact: https://ww\
-w.qt.io/licensin\
-g/\x0a**\x0a** This fi\
-le is part of th\
-e examples of th\
-e Qt Toolkit.\x0a**\
-\x0a** $QT_BEGIN_LI\
-CENSE:BSD$\x0a** Co\
-mmercial License\
- Usage\x0a** Licens\
-ees holding vali\
-d commercial Qt \
-licenses may use\
- this file in\x0a**\
- accordance with\
- the commercial \
-license agreemen\
-t provided with \
-the\x0a** Software \
-or, alternativel\
-y, in accordance\
- with the terms \
-contained in\x0a** \
-a written agreem\
-ent between you \
-and The Qt Compa\
-ny. For licensin\
-g terms\x0a** and c\
-onditions see ht\
-tps://www.qt.io/\
-terms-conditions\
-. For further\x0a**\
- information use\
- the contact for\
-m at https://www\
-.qt.io/contact-u\
-s.\x0a**\x0a** BSD Lic\
-ense Usage\x0a** Al\
-ternatively, you\
- may use this fi\
-le under the ter\
-ms of the BSD li\
-cense\x0a** as foll\
-ows:\x0a**\x0a** \x22Redi\
-stribution and u\
-se in source and\
- binary forms, w\
-ith or without\x0a*\
-* modification, \
-are permitted pr\
-ovided that the \
-following condit\
-ions are\x0a** met:\
-\x0a** * Redistri\
-butions of sourc\
-e code must reta\
-in the above cop\
-yright\x0a** no\
-tice, this list \
-of conditions an\
-d the following \
-disclaimer.\x0a** \
- * Redistributio\
-ns in binary for\
-m must reproduce\
- the above copyr\
-ight\x0a** noti\
-ce, this list of\
- conditions and \
-the following di\
-sclaimer in\x0a** \
- the documenta\
-tion and/or othe\
-r materials prov\
-ided with the\x0a**\
- distributio\
-n.\x0a** * Neithe\
-r the name of Th\
-e Qt Company Ltd\
- nor the names o\
-f its\x0a** con\
-tributors may be\
- used to endorse\
- or promote prod\
-ucts derived\x0a** \
- from this so\
-ftware without s\
-pecific prior wr\
-itten permission\
-.\x0a**\x0a**\x0a** THIS \
-SOFTWARE IS PROV\
-IDED BY THE COPY\
-RIGHT HOLDERS AN\
-D CONTRIBUTORS\x0a*\
-* \x22AS IS\x22 AND AN\
-Y EXPRESS OR IMP\
-LIED WARRANTIES,\
- INCLUDING, BUT \
-NOT\x0a** LIMITED T\
-O, THE IMPLIED W\
-ARRANTIES OF MER\
-CHANTABILITY AND\
- FITNESS FOR\x0a** \
-A PARTICULAR PUR\
-POSE ARE DISCLAI\
-MED. IN NO EVENT\
- SHALL THE COPYR\
-IGHT\x0a** OWNER OR\
- CONTRIBUTORS BE\
- LIABLE FOR ANY \
-DIRECT, INDIRECT\
-, INCIDENTAL,\x0a**\
- SPECIAL, EXEMPL\
-ARY, OR CONSEQUE\
-NTIAL DAMAGES (I\
-NCLUDING, BUT NO\
-T\x0a** LIMITED TO,\
- PROCUREMENT OF \
-SUBSTITUTE GOODS\
- OR SERVICES; LO\
-SS OF USE,\x0a** DA\
-TA, OR PROFITS; \
-OR BUSINESS INTE\
-RRUPTION) HOWEVE\
-R CAUSED AND ON \
-ANY\x0a** THEORY OF\
- LIABILITY, WHET\
-HER IN CONTRACT,\
- STRICT LIABILIT\
-Y, OR TORT\x0a** (I\
-NCLUDING NEGLIGE\
-NCE OR OTHERWISE\
-) ARISING IN ANY\
- WAY OUT OF THE \
-USE\x0a** OF THIS S\
-OFTWARE, EVEN IF\
- ADVISED OF THE \
-POSSIBILITY OF S\
-UCH DAMAGE.\x22\x0a**\x0a\
-** $QT_END_LICEN\
-SE$\x0a**\x0a*********\
-****************\
-****************\
-****************\
-****************\
-***/\x0a\x0aimport QtQ\
-uick\x0aimport QtQu\
-ick.Controls\x0a\x0aSc\
-rollablePage {\x0a \
- id: page\x0a\x0a \
- Column {\x0a \
- spacing: 40\x0a \
- width: par\
-ent.width\x0a\x0a \
- Label {\x0a \
- width: pa\
-rent.width\x0a \
- wrapMode:\
- Label.Wrap\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter\x0a \
- text: \x22\
-TextField is a s\
-ingle-line text \
-editor.\x22\x0a \
- }\x0a\x0a Text\
-Field {\x0a \
- id: field\x0a \
- placeh\
-olderText: \x22Text\
-Field\x22\x0a \
- anchors.horiz\
-ontalCenter: par\
-ent.horizontalCe\
-nter\x0a }\x0a \
- }\x0a}\x0a\
-\x00\x00\x04\xbb\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x01\x00\x00\x00\x00\xeb\x04\x03\x00\x00\x00t\xa8U\xa0\
-\x00\x00\x000PLTE\x00\x00\x00A\xcdRA\xcd\
-RA\xcdRH\xcbPB\xccQI\xcbPD\xccQ\
-E\xccQJ\xcbOE\xccQJ\xcbOD\xccQD\
-\xccQC\xccQA\xcdR\xaa`?\xbc\x00\x00\x00\x0f\
-tRNS\x00\x18Oc\xab\xae\xb8\xbd\xc9\xcd\xd6\xd7\
-\xdf\xe9\xf0\x91\xee\xa9J\x00\x00\x04+IDATx\
-\xda\xc5\xda\xc1m\x13A\x18\xc5\xf1\xddT`%Bp\
- R\x02'N\x08\x1ap\x0dT`q\xa1\x0f*\xa0\
-\x0b*\xa0\x91T\xe0\x1e@\x96|q\x86\x83c\xc7\xbb\
-;\x93\xcc|\xef\xcd{\xd3\xc0\xfe\xf4\x0e\xfb\x9f\x95v\
-\x18z\x9c\xab\xc3j\xb0\x9e\xab\xf4\xe0\x06<\xde\x9b\x01\
-\xe9\xdf\xca\x0cH_\xdc\x00\xeb\x04W)\xa5\xf4\xcd\x0d\
-\xd8\xad\xcc\x00\xe7\x04G\x80q\x82# \xfdt\x03\xf6\
-+3\xc07\xc1\x09`\x9b\xe0\x04\xb05\xe9\x0cpe\
-\xf9\x0cpM\xf0\x0c0e\xf9\x19`j\xd2\x05\xc0\x93\
-\xe5K\x80e\x82K\x80\xa5I\x13\x80\xa3I\x13\x80c\
-\x82)\xc00\xc1\x14`h\xd2\x0c\xa0o\xd2\x0c\xa0\x9f\
-`\x0e\x90O0\x07\xc8\x9b\xb4\x00\xa8\xb3\xbc\x00\xa8'\
-X\x02\xc4Y^\x02\xc4M\xca\x00\xb4Y\xce\x01\xa4\x13\
-\xe4\x00\xd2&e\x01\xca&e\x01\xca\x09\xf2\x00\xe1\x04\
-y\x80\xb0I\x05\x80\xaeI\x05\x80n\x82\x12@6A\
-\x09 kR\x11\xc0\xc8\xf2\xf5\x87\xd7\xcf\xc7\xd4q\x82\
-\xcf\x099\x84,c\x00B\x93@\x00\x9ee\x14\x00O\
-\x80\x02\xe0&\xc1\x00\xb4I0\x00\x9d\x00\x07\x80\x13\xe0\
-\x00\xb0I\x04\x00\xd6$\x02\x00\x9b\x80\x01\x80&`\x00\
-\xa0&Q\x00H\x96)\x00d\x02\x0e\x00\xc82\x07\x00\
-4\x89\x04\x88g\x99\x05\x08O\xc0\x02\x84\x9bD\x03D\
-\x9bD\x03D'\xe0\x01\x82\x13\xf0\x00\xc1&\x11\x01\xb1\
-&\x11\x01\xb1\x09\x98\x80\xd0\x04L@\xa8IT@$\
-\xcbT@d\x02.\xe0\xb1\xfa\xb9\xe3\xa7U\x0f@\xaa\
-\x06\xbcIw=\x00\x87\xea\x016}\x00\x0f\xf5\x03t\
-\x01T\xbf\x08\xc6M\x1f@\xf5\xab\xf0]\xea\x02\xa8\x1f\
-\xe0W\x1f@\xd3\x00\x1d\x00\xbb\xa6\x01:\x00\xaa\xafD\
-\xb7\xa9\x0b\xa0~\x80m\x1f@\xe3\x00t@\xf5\x87\xc1\
-\xf5\xb6\x0f\xa0\xf6\xd3h\x5c\xa7.\x80\xea\x01nR\x17\
-@\xf5\xe7\xf1y\x002\xa0\xa5B=\x00\x87\x96\x0a\xf5\
-\x00\x04\x06\xa0\x02\xf6\x81\x01\xa8\x80\xb6\x0a\xf1\x01m\x19\
-\xee\x00\x08\x0d@\x04\xecB\x03\x10\x01\xad\x15b\x03Z\
-3L\x07\x04\x07\xa0\x01\x9a3\xcc\x064g\x98\x0ch\
-\xcf0\x17\x10\xc80\x17\x10\xa9\x10\x13\x10\xc9\xf0\x0c \
-\xfa\x7f`9\xc0\x09\x00\xfdA\xb1\x07\x06\xa0\x00b\x15\
-\xe2\x01b\x19&\x02\xa0\x01\x08\x80\x1d4\x00\x01\x10\xad\
-\x10\x0b\x10\xcd0\x0d\x00\x0e\x00\x03\xc2\x19f\x01\xc2\x19\
-&\x01\xe2\x19\xe6\x00\x80\x0cs\x00H\x85\x9e\xce\xd7\x8a\
-\x0c\xde\x97\x00H\x86[\xce\xdf\x12\x800\x00\x04\xd8\x8b\
-\x06(\x02\xb0\x0a\xe1\x00,\xc3\x04\x80l\x80\x02`'\
-\x1b\xa0\x00@+\x84\x02\xd0\x0c\xc3\x00\xe1\x00Y\x00\x9c\
-a\x14\x00g\x18\x04\xe0\x19\xc6\x00\x84\x0cc\x00U\x85\
-J\x00U\x86\x8b\x00\xf1\x00\x0b\xc0^<\xc0\x02\xa0\xab\
-P\x1e\xa0\xcbp\x01 \x1f`\x06\xd8\xc9\x07\x98\x01\x94\
-\x15\xca\x01\x94\x19\xce\x02\x0c\x03L\x00\xd2\x0c\xe7\x00\xd2\
-\x0cg\x00\xda\x0c/\x01\xe2\x0c/\x01\xea\x0a\xcd\x01\xf5\
-\xff\xe9m\xfa\x00\xea\x7f\xd3K=\x00\xe3\x9f\x95\x17\xd0\
-r\xd6n\x00\xf35\x14\x020_\xc41\xc0\xb85\x03\
-\x86\xf7n\x00\xef:\x12\x04\xf0.dQ\x00q\x82\x18\
-`x\xeb\x06\x8c\x1b3\x80\x97\xc4(\x806A\x14@\
-\xbb\x16\x85\x01\xac{Q\x18\xc0\x9a \x0e M\x10\x07\
-\x90\xb2\x0c\x008YF\x00\x94,#\x00J\x96!\x00\
-\xa3I\x10\x80\x91e\x0c@\x98\x00\x03\x10\xb2\x0c\x02\xf0\
-&\x81\x00<\xcb(\x00\x9e\x00\x05\xc0M\x82\x01h\x93\
-`\x00:\x01\x0exa\x82\xdf?^?\xdfa\xc0\x0b\
-Y\xbe\x1b4\xe7\xd6\x0d(fY\x05(fY\x06(\
-5I\x06(eY\x07(L\xa0\x03\x14\xb2,\x04\xe4\
-\x9b$\x04\xe4\xb3\xac\x04d'P\x02\xb2M\x92\x02r\
-M\x92\x02r\x13h\x01\x99\x09\xb4\x80L\x96\xc5\x80e\
-\x96\xd5\x80E\x96\xd5\x80E\x96\xe5\x80y\x93\xe4\x80y\
-\x96\xf5\x80\xd9\x04z\xc0,\xcb\x06\xc0\xb4I\x06\xc04\
-\xcb\x0e\xc0d\x02\x07`\xd2$\x0b\xe0\xb2I\x16\xc0\xe5\
-\x04\x1e\xc0\xc5\x04\x1e\xc0E\x96M\x80\xe7,\xbb\x00\xe7\
-,\xbb\x00\xe7,\xdb\x00\xa7&\xd9\x00\xa7,\xfb\x00O\
-\x13\xf8\x00OY6\x02\x8eM2\x02\x8eYv\x02\xc6\
-\x8d\x190\xdc\xb8\x01\xe3\xda\x0c\x18n\xdc\x80qm\x06\
-\x0c\xd7\xdb>\x80\xffx\xf2iE\x15\xa8J\x8b\x00\x00\
-\x00\x00IEND\xaeB`\x82\
-\x00\x00\x01?\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00(\x00\x00\x00(\x04\x03\x00\x00\x00~\xd0\xa5^\
-\x00\x00\x000PLTE\x00\x00\x00\xff\xff\xffA\xcd\
-RP\xcaNA\xcdRA\xcdRH\xcbPB\xccQ\
-I\xcbPD\xccQE\xccQE\xccQD\xccQD\
-\xccQC\xccQA\xcdR\xb0DE*\x00\x00\x00\x0f\
-tRNS\x00\x00\x186Oc\xab\xae\xb8\xbd\xc9\xd6\
-\xdf\xe9\xf0r\xc1;\x05\x00\x00\x00\xafIDAT(\
-\xcf\x8d\xd2\xb1\x0d\xc20\x14\x04\xd0[\x81\x0d~\x81\x98\
-\x81\x01\xe8-e\x01F@\xf2\x14t\xec\xe0E\xd8!\
-\xca\x08\xac\x10YXXG\x11'v\xf0\x15\x5c\xf9\xf4\
-\x8b\xff\xed\x03\xd6\xb8\x80>.\x99@\x06\x85\xd9\x04r\
-T\xd8\x8f:\x92/\x13\xc8A\xe1l\x02\x7fG\x17\x8c\
-\x06\x00\xe7{\xc9\x93$I\x0f\x00\x0f\xee\x13M \xbd\
-\xc2d\x02\x19\x14&\x13\xc8\xa00+\xe4\xdf8+\x1c\
-\x04Nb\xa5\xac.\x1a\xc5\xed\x1f\x03p\xeb/\x07\x8e\
-\x97\x92\xeb\xf6F\xddw,\xd59\xacq$\xf96\x81\
-\x1e=F\x13X\x06w\xb8\xf5\xa3\xc5\xad\x1e\x0d\xd6\x22\
-5X{Tq\xb2\x1eO\xd5\xbe:U\x87P(\x16\
-\xe3k\x00\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x01\xca\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00@\x00\x00\x00;\x04\x03\x00\x00\x009\xa2\x91\xef\
-\x00\x00\x000PLTE\x00\x00\x00A\xcdRP\xca\
-NA\xcdRA\xcdRF\xccPH\xcbPB\xccQ\
-I\xcbPD\xccQE\xccQE\xccQD\xccQD\
-\xccQC\xccQA\xcdR\x96\x12X7\x00\x00\x00\x0f\
-tRNS\x00\x186Oc\x9d\xab\xae\xb8\xbd\xc9\xd6\
-\xdf\xe9\xf0URDE\x00\x00\x01:IDAT8\
-\xcb\x85\xd4\xcdM\xc40\x10\x05\xe0\x99\x0e,\x05\x11)\
-\x88;\xc7E\x14`QAj\xa0\x02D\x05{B\xe2\
-F\x0d[\x81K\xa0\x06D\x019P\xc0\x1e\x12\x09\xf1\
-\xb3z\x1c\x9c\xc4\xcex\xd63\xd7|yR</&\
-\xd2\xc6\x1f\xa8>\xfe\xc7\x19\x00\x07\x0b\x9c\x9c\x01\xf0n\
-\x81z\x84\x07\xf0\xe9\x0c\x80{\x0bL\xce\x00\xb5\x88\x08\
-\xbe\x8a\x88\x9b\x97y\xde\x00\x00x\x92\xe0\x15\xdb)\x22\
-$(\x22\x0a wV\x00\xb9\xb3\x12\x88\x88\x12\x88\x08\
-\x05\x9c\xd2S~\xd0\x00\x12\xe8\xc6:\xe0\xa0\x82i\x05\
-\xd7P\xc1\xba0\x1eT\xf0\xe1R\x80\x06R\xef\x9a\xa3\
-\x0a\xd6\xe6r\x0f\x0d\xfc\xad\x01\x17\x000\xd2\xe3\xb9c\
-\xe4>\x82\xe6n\x9e^,\xa2E\x04\xa2r)`\x1f\
-\xcfdy\xff6\x82o\x11\x90\x7f\x9c\xdf\xd4i\x0e\xc8\
-f\xe7\x91\x17\xb2\x83\x0aR@P\xc1T\x09\xc0\xce\xe7\
-[\x0a*\x98\xf2-i \xfd\x97\x83\x0a\xd2\x9a\x09\x1a\
-\xb8\xcc\xda\x1e4\x90W\xbd\xb5@y\x8e\x02h\x11[\
-\xa0DlA\xacS\x0d\xc4>U\xc0\x12\xf1\xbb\xdcP\
-\xcf\xf2\xe6\x99#F:;\xcd`\x80\xb8\xb1\x1a\xe0\xc1\
-\x00te\x01\x0e\x06\xa0\xce\x02\x1c\x0c@\xad\x05xo\
-\x00ju\xf0\x0fRR\x00X\xeb\xfc\xd3\xe9\x00\x00\x00\
-\x00IEND\xaeB`\x82\
-\x00\x00\x05\x15\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\xc8\x00\x00\x00\x93\x08\x03\x00\x00\x00\xfc\xcf\xa6\x98\
-\x00\x00\x00HPLTE\x00\x00\x00A\xcdRA\xcd\
-RA\xcdRA\xcdRA\xcdRA\xcdRA\xcdR\
-M\xd0]Y\xd3he\xd6rq\xda}|\xdd\x88\x88\
-\xe0\x93\x94\xe3\x9e\xa0\xe6\xa9\xac\xe9\xb3\xb8\xec\xbe\xc4\xef\
-\xc9\xd0\xf3\xd4\xdb\xf6\xdf\xe7\xf9\xe9\xf3\xfc\xf4\xff\xff\xff\
-Y\xd7\x80\x18\x00\x00\x00\x07tRNS\x00\x100\xaf\
-\xbf\xcf\xefPN\xd4S\x00\x00\x04uIDATx\
-\xda\xed\xdc\xdbz\xa4 \x0c\x00`\xbb\xdb.hTD\
-\x14\xde\xffM\xf7\xa2\x9d\xb6rP@#\x87\xcf\x5cO\
-;\xf3\x0b\x84(`\xd38\xe3\xcf?RN\xbcW\xe2\
-\xd8\x81\x94\xe5pC\x0as8!\xa59\x5c\x90\xe2\x1c\
-\x0eHy\x0e;\xa4@\x87\x15R\xa2\xc3\x06)\xd2a\
-\x81\x94\xe90!\x85:\x0cH\xa9\x0e\x1dR\xacC\x83\
-\x94\xeb\xd8B\x0avl %;~C\x8av\xfc\x82\
-\x94\xed\xf8\x81\x14\xee\xf8\x86\x94\xeexA\x8aw|A\
-\xcaw|B*p\x90\xf7J\x1c\xe4\xfd\x12G\x0b\x00\
-#c\xac\x07\x00\x9a\x0ar\xce\xd1\x0e\x93\x90j\x1b\xab\
-`=\xbd\x1fr\xc2\xd1\xf3U\xb9b\x99\xba\x9b!\xd1\
-m1I\xb5\x1f\xebH\xf3\x87\xb4\x5cy\x84d4s\
-\x08S\x9e\xb1\xf6G\xff\xe9w\x0c7C\xbaE\xf9\x07\
-\xdfo\x94\xcdg\xc5\xbd\x90^\xaa\x90Xh\xa6\x90A\
-\x05\x86\xec\xb2\x84\x04;\x94Zi\x86\x90NE\xc4N\
-\xefJ\x05\xa12\x06\xa2\xa6\xec \xb3\x8a\x0b\xc8\x0c\xd2\
-\xdb\x7f\xa6\x98F\xf8\x0c\xc6\x97\xb0a\x92\x08b\xab\xad\
-fm\xce\xa3\x83\xb0|\x8ae\x05\xb1d,\xdeZ>\
-\x07&E\xd2\x9c F\x83HW\xdf\x1f}\x9b$\x09\
-d\x08H\xab\x9d\x9e\xdedF\x90%`\xa23'\x9c\
-!\x1b\x88\xf1\xd3\xf6o\x9d\xf4\xde\xb5d\x03\x99<\x13\
-\xd1+\xf4\x11\xdf\xe6\x02\xd1\x86\xfaz\xf4y\xd0 c\
-&\x90\xce\xab\xcf\xef4\x89\xc8\x04\xc2\xfc&\x86\x9d:\
-\xe0\xe7/:x\xc5v\x18\x81\x1e\x14\x01\xa2]_\x1e\
-\xde\x19{\xe7\xf0\x09\xaf\xd1N@\x22\xbebr\xd5\xc0\
-)!\xe05\xbf\xed\xfe\x8d\xc8\x02\xa2M\x0bsL+\
-f\x01\xe1\x1e\xb9\xf4h\x5cu9@\x96\x90Y\xdd\x91\
-\xe9\xfa\x1c \xae^\x12\x92\x80Y\x06\x90V\xc5L]\
-\x9dc`%\x84@\xf8,b\xb6\xa3\xc8\x002\x86\x15\
-\x8c\xf6\x91%3\x80\xb0\xd0B\xcb\xfa\x8b3\x80Lq\
-_\xc0\xed\xd5\x96\x03\x22\x85\x1e\xdd\xe5\x10\x11\x93}\x8d\
-\x86\x84\xfd\xa1wG\xf5+b\xb2oE\x90!;\x88\
-\x8a\x83\xc0A\xb2K\x0dYk\x81\x88\x07\xf2@\x1e\xc8\
-5\x90\xeei\x91\x07\xf2@\x1eH\x0e\x10Y\x0b$\xb6\
-h\x1c\x8b-\xe3\xfb\xe7\xc6\xea&\x08\x14\x0b\xb9\xf6\xe1\
-CB\xc8\xb5\x8f\x83\x12B\xae}@\x97\x10\x021\xcb\
-#\xc7\xf3\xe8\xfd\x90\xd6g\xf5\xdf\xfb!vB\xc8\xb5\
-\xcb\x0a)!KL\xdar-\xf4\xa4\x84\x5c\xba\xf4\x96\
-\x12r\xe9bhJH\xcc\xf2t\x7fX\xfcC\x5cQ\
-}\x06\xa2_\xdd>\xbc;\xb2\xc3\xcbs\x0bD\x84\xf7\
--y\x9c \x12@F\x9f\xedW\x9b\x18<Rv\x02\
-\x88\xbe\xcd\xe9x=t\xf5h\xc3\xd0\x8bs\x01\xc4\xd8\
-c\xda\x066\xc8p\x0c\x81[ L\x05\x95)\xfa6\
-z\xfb\x06/\x19UT\x9f\x83\xb4*\xa4s\xd1\xc5\xeb\
-\xd3\x22j\xf9\xfe\x1c\xc4\x5c\x8b\xe5\x01\x0eGO\x9c/\
-\x9aH\x82 `\xee\xeew\x8d\x13\xf3\x18\x96\xf0\xea\xaf\
-\xfc\x16\x88ey\xdc~@\xcfv\xb8\xaf\xf3\xcb\x08\x9b\
-#\x038{\x1a\xadM\xa2\x94\xe4\xc6i\x05\xdb!\x13\
-\xee\x99\xd4\x95R\x8b\x10+\xe6\x9eF{\x93|\x9d\x1f\
-a=\x00\x00\x0c\xae\xf3#\xee=\xa9\xf2\xf6\xcd\x99\x84\
-\x10\xd2\xc6\x9dL\xda\xab\xcc\xe6$\x10\xcbq\x8a\x93g\
-\xac\x0eN\xd1\xa1A\x08\x8fq\x88\x80y3\xeeiM\
-8\x84.\xe1\x8e\xfd\xb3\xa1,\x0d$B\x22hP)\
-s\x17\x84\xd0\xc0\xdeu8\xc7\x0d\x89 \x84\x8c\xf2\x92\
-|\xe5#\xe1\xa8\x10\xd2\x0a\x7f\x88OA;\xc8\x984\
-q\x01\xc4z@\xcfuv\xda\xa7\xcap\xbe\xb0\x00\x1d\
-B\x08py\xd1\x18\xf9\xa4\x8c\xc6\xa5Yf\x06->\
-\x84\xec\xbf\x85#fR\x83\x811!\x84\x10\x8c\x0d\x10\
-x\xd7{\x0aB\x08i{6o/\xa5\x9c\x8d\xf7\xa4\
-\x90\x1b\xe2,\xe4\x95\x92_G\x89:\xdb\x0c\xc7\xca\x81\
-\xec>\xef>\xf3p$-\x04\xa2sOf\x10\xb3\xb2\
-\xec\x0b\x85\x18\xe5\x93D\x7fc\xcd_\x14\x88y\xdb2\
-!;>\xdep \xe6x\x07l\x07\x12\xc4x\xa6\xb0\
-`;\x90 \xc6Qk\xcc\xc9\xe4\xe3\xad\xc1\x83\x98\xe3\
-\xbd\xc5u`A\xcc\x9b\x0c\x81\xeb@\x83\x98\xcf\xc0z\
-T\x07\x1eD\x1b\xefb\xc0u\xe0A6\xc5\xa3\x00\x82\
-\xec@\x84\xd0\xef\xbb\x15\xde\x11t\x07\x22\xe4\xb5\xcc\xce\
-\xb1\xf3\x15:\x84\x08\xdc\x17\x03n\x1c\xa8\x90v\xc5|\
-\xbf\xe1\xd6\x81\x0aA\xaf\xafj\x80\xe8\x8e\xa6\x16GS\
-\x8b\xa3\xa9\xc5\xd1\xd4\xe2hjq4\xb58\x9aZ\x1c\
-M-\x8e\xa6\x16GS\x8b\xa3\xa9\xc5\xd1\xd4\xe2\xf8\x0f\
-/\xf3I\xa9\x5c\xdd\xff\xd4\x00\x00\x00\x00IEND\
-\xaeB`\x82\
-\x00\x00\x01\xdc\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00O\x00\x00\x00O\x04\x03\x00\x00\x00X\x1a\x85\xb5\
-\x00\x00\x000PLTE\x00\x00\x00\xff\xff\xffA\xcd\
-RP\xcaNA\xcdRA\xcdRF\xccPH\xcbP\
-B\xccQI\xcbPE\xccQJ\xcbOE\xccQD\
-\xccQC\xccQA\xcdR\x000]\xbe\x00\x00\x00\x0f\
-tRNS\x00\x00\x186Oc\x9d\xab\xae\xb8\xc9\xcd\
-\xd6\xe9\xf0\xbb\x00_o\x00\x00\x01LIDATH\
-\xc7\xc5\xd6\xbdM\xc4@\x10\x86\xe1+\x01:\x98\x80\x8c\
-\x0aH\x11\xf9\x227@\x09HT\x80\xdc\x05\x11\x92K\
-\xa1\x01$\xebJ\xa0\x00\x12K\xd6\xc9\xd6\x10\x9c\x7f\xd6\
-\xbb\xb3;o\xc6\xc4\x8f>\xe9\xee\xbe\x9d\x9b\xd3)\x9b\
-\xd0\x9f\xd8\x84\xf9\x11B\x1d\x04Bm(d\x91Aa\
-dP\xd5Q \xd4\x96B\x12\x19\x14F^\xe1E \
-\xd4\x8eB?r\x81\xfaE\xe1,\x10jO\xa1W\xb7\
-\x0dz\xdd\xd8\xa1\xd3\x8d\x08\xd6##X\x8f\x8ca\xd4\
-\x8d\xbb\xa7t^\x22\x18u\xe3U\xab\xb3G~\xd6\xe1\
-\x1e\xe9\xc1\xad\x1b\x1e\xdc\xea\xe6\xc25\xd2\x85k\xdd|\
-\xb8\xd4\xcd\x87K\xdd\x00\xbcF\x02\xa8?\x02\xa16\x14\
-\x0e\x02\xa16\x14\x8e\x02\xa1\xbeS\xf8\xfb\x7f\xf0\x19\xc2\
-3\xfc\xd43\xfd\xc2{\xf8\x13N\xb4\x14\x1d\xac\xd9\x85\
-\xf6\xb1\x83\x0d\x1f\xe9\x9bi\xe1+\x1c\xe9\xbbn\xe1\xa6\
-\x18\xe8\xee\xd9v\xee\xc3G:\xdff\xa0\xb3\x9a\xabK\
-<\x1c\xeb\xb5\xcem:7!\xdbO>\x8c\xff\x0dk\
-p\x12\x08\x0fG@\x05\x1eo\x80\x0a<^\x15e\x98\
-\x9c>e\x98\x5c>E\x98\xdeRE\x98\x9eR%\x98\
-\xb5\xa1\x04\xb36\x14`^\xaf\x02\xcc\xebe\xc3\xb30\
-h][&\xb4\x8e-\x0bN\x02\xa1yc\x1a\xd0>\
-1sx\xfff\xb9?\x9e\xd1\xe7wR\xc2\xd3\xb8\x00\
-\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x02\xf6\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x9e\x00\x00\x00\x9d\x04\x03\x00\x00\x00\xb7?\xdc\xe6\
-\x00\x00\x00$PLTE\x00\x00\x00\xff\xff\xffA\xcd\
-RA\xcdRA\xcdRH\xcbPB\xccQE\xccQ\
-J\xcbOD\xccQC\xccQA\xcdRE\xef\x01u\
-\x00\x00\x00\x0btRNS\x00\x00\x18Oc\xab\xae\xc9\
-\xd7\xe9\xf0\xc1\xad8\xf5\x00\x00\x02vIDATh\
-\xde\xcd\xda\xdbM\xc40\x10\x85\xe1\x15i\x00:\x88D\
-\x07\xc0\xdb\xbem))!=\xd0\xc0\xd6\xb2J\xb4\xeb\
-\xe6x\x08\xb98\xbe\x8dg\xfe\x07\xa7\x80OG \x0e\
-\xe3\xb1/\x17\xc1\xd7=\xfb\x0b\xf9u\xee\x0e{\xaf/\
-\xd6s\x8f\x9e\xf5\xdc\x0d\xf6\xc8\x80\x9ds\xce\x0d\xb07\
-\xf5\xac\x07\x06\x5c<.\xe0\xe2\xb9\x11\xf6\xe6\x9e\xf5\xb0\
-\x80\xabG\x05\x5c=\xaa\x166\x0f\xea\xad\xcd\x83\x02\xee\
-\x1e\xd3[\xbb\xc7\xd4\xc2\xc1Cz\xeb\xe8\x11\x01\x8f\x1e\
-Q\x0b\x9e\x07\xd4\x82\xe7\x01\x01}\xcf\x1e\xd0\xf7\xec\xb5\
-p\xf2\xcc\xb5p\xf2\xcc\x01\xcf\x9e5\xe0\xd9\xb3\xd6B\
-\xe0\x19{+\xf0\x8c\x01C\xcf\xd6[\xa1g\xab\x85\x88\
-g\xea\xad\x98g\x09\x18\xf3,\xb5\x10\xf5\x0c\xb5\x10\xf5\
-\x0c\x01\xe3\x9e>`\xdc\xd3\xd7B\xc2S\xd7B\xc2S\
-\x07Ly\xda\x80)O[\x0bI/\xd2[\x9f\xdf\xe5\
-\xef\xc7\xc9\x03^\x9d\xe5\x0b{\xcb\xe6\x85\xb5`\xf4\x82\
-\xde\xb2z\xe7\x80V\xef\x5c\x0bf\xefT\x0bf\xef\x14\
-\xd0\xee\xf9\x01\xed\x9e_\x0b\x80\xe7\xd5\x02\xe0y\x01\x09\
-\xef\x18\x90\xf0\x8e\xb5\x80x\x87\xdeB\xbcC@\xc6\xdb\
-{\x8b\xf1\xf6Z\x80\xbc\xad\xb7(o\x0dHyk-\
-`\xde\x7f-`\xde\x7f@\xce[\x02r\xdeR\x0b\xa0\
-7\xf7\xac\xe7F\xd8\x9b{\xd6sw\xd8{\xf6\xac\xe7\
-\xee\xb0\xf7\x82=\x07{\xcf\xb6\x7f~3\xfc\xfb\x1d\xdb\
-\xfe\xfb\x80\xff~'\xb8_\x86\xb6\xfb\x19\xfe\xff\xf1\x80\
-\xff\xbf\xdd\x9a\x9e\x0f\xb6\x01\xebJ\x15\x01\xea\xed\x03j\
-\x93\xf3\xe9\x0c\xcf\xcfc\xdb\xe7\x0f\xf8|4\xc1\xe7\xb7\
-\xa1\xed\xf3/|>\x7f\xc0\xfb\x83[\xd3\xfb\x97`\x81\
-u\xa5\x8a\x00\xf1\xc2\x05 \xbd\xff3\xed'\x95\x0b\xd4\
-N\xb4\xc9io\xbf\x0b\xef\x9f'x?>\xb0\xfb{\
-\xfa~!\x1e\xef#\xff\xbd'\xbd\xc4\x05\x92\xdaK\x5c\
-pi\xbd\xd4\xfd\x96\xd2K^\x10*\xbdd\x11\xe8\xbc\
-\xf4\x05\xab\xceK\xf7\x94\xca\xcb\x14\x81\xca\xcb\x14\x81\xc6\
-\xcb\xf5\x94\xc6\xcb\xf5\x94\xc2\xcb\x16\x81\xc2\xcb\xf6T\xbd\
-\x97\xef\xa9z/_\xa3\xd5^\xe1\xa2\xbb\xda+\x5c\xc4\
-\xd7z\xa5{\xf8J\xaf\xf8\x90\xa1\xd2+\x0e,u^\
-\xf9!H\x9dW\x9e\xa7\xaa<\xc1\xc0R\xe5\x09\x06\x96\
-\x1aO2O\xd5x\x92y\xaa\xc2\x13\x0d,\x15\x9eh\
-\x9e\x92{\xb2yJ\xee\xc9\xc6=\xb1'|\x90#\xf6\
-\x84\x0f\x86\xa4\x9e\xf4\xbd\x90\xd0\x13?\xb8\x12z\xe2\x83\
-\x95\xcc\x93?X\x93y\xf2s\x9f\xc4{\xfb\x15\xc7\xfb\
-\x03\xfd\xb9\xba%(\xb7\xb7:\x00\x00\x00\x00IEN\
-D\xaeB`\x82\
-\x00\x00\x03\xae\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\xc0\x00\x00\x00\xb0\x04\x03\x00\x00\x00\xab\xd0|\xf5\
-\x00\x00\x00-PLTE\x00\x00\x00A\xcdRA\xcd\
-RA\xcdRD\xccQH\xcbPB\xccQI\xcbP\
-D\xccQE\xccQE\xccQD\xccQD\xccQC\
-\xccQA\xcdR\x9e%\xfb\x88\x00\x00\x00\x0etRN\
-S\x00\x18Oc\x8f\xab\xae\xb8\xbd\xc9\xd6\xdf\xe9\xf0\xe7\
-5\xddl\x00\x00\x03\x22IDATx\xda\xb5\xd8\xc1\
-\x89\xdb@\x18\xc5q)\x15\x08\x1b\x0cY\xf6\x90l\x01\
-\x82m\xc0\x90R\xdc\x80o!\xe7\x94\xa0\x06\x5cB \
-%\xa4\x01\x1fR@\x0e\xbb\x10\xd8\xb0L\x0d9\xd8\xb2\
-\xa5\x19[\xf3\xbd\xf7}o\xee\xf6\x8fw\xd0\x7f\x84\x9a\
-\xc6y\xfa\xa1\xd1\x9e\xfe\xbd\x13\x03\xe9\x97\x1a\x10O\xe8\
-S\xfa\xdd\x89\x81\xf4\xac\x06^;1 \x9d\xd0\xa7\x94\
-\xd2\xdfN\x0c\xa4\x9d\x1a\x10N8\x01\xc2\x09g\xe0\xad\
-\x13\x03iP\x03\xb2\x09# \x9bp\x01T\xcd\xbb\x00\
-\xaal_\x01\xd1\x84+ \xca\xf6\x04\xd04o\x0aH\
-\xb2=\x05$\x13f\x80\xa2y3@\xd1\xbc9 \x98\
-0\x07\x04\x132 \xbey\x19\x10\xdf\xbc\x1c\x08\x9f\x90\
-\x03\xe1\x13\x0a \xbay\x05\x10\x9d\xed\x12`&\xac\x9e\
-\xee\x9em\x01\x10\xd9n\x8f\x09:p\xf3>`\xff\x8f\
-g\x1b\x05\xe0\x090\x806\x0f\x06\xd0\xe6\xe1\x008\x01\
-\x07\xc0\x09\x04\x805\x8f\x00\xb0\xe61\x004\x81\x01\xa0\
-\x09\x14\x804\x8f\x02\x90ls\x000\x81\x03\x80l\x93\
-\x80\xbdy,`\xce6\x0b\x98'\xd0\x80\xb5y4`\
-m\x1e\x0f\x18'\xf0\x80q\x82\x03x\xab\xbd\xb0|q\
-\x02\xa9\x02<\xbch\x81\xf6\xe8\x05^\x97\x81\xc7\xe4\x05\
-\x96\x1f\xb5\xd5\xd1\x0b,\xc7\xa2\xdd&'\xf0\xfeyq\
-\xc0:y\x81\xe5;\xa7\xddz\x81\xca\x95\xb3N^\xe0\
-\xe7\xf2\x80\xbd\x17\xa8\xbc\xb9l\x92\x17\x18\x0c\x03<\x80\
-i\x80\x07\xf8\xbe<\xe0\xe0\x05*W\xc1\xc7\xe4\x05v\
-\xa6\x01<P\x19\xf0\x90\xbc\xc0s%\xd3^\xa0\xf2J\
-\xf4\x98\xbc@5\xd3N\xa0\x9ei\x1f`\xc8\xb4\x0f0\
-d\xda\x05X2\xed\x02,\x99\x9e\x01\xed\x0fA\xe5\xa6\
-\x00\xf8Aj\x00\x06\x9c\x81\x85\xd3\xfb\x060\x80-\xd3\
-<`\xcc4\x0f\xec\xa0\x018`\xcd4\x0dX3\xcd\
-\x02\xe6L\xb3\x809\xd3$`\xcf\xf4\xe5\x17\xf7\x9f\xe1\
-\xa7\xae\x00\x80L[\xce\xa7\x02\x002M\x01H\xa6)\
-\x00\xc94\x03`\x95#\x80!x@\x0e\x84\x0f\xc8\x01\
-,\xd38\x00f\x1a\x07v\xe1\x03\xe6\x00\x9ai\x18@\
-3\x8d\x02p\xa6Q\x00\xce4\x08\xe0\x99\xc6\x80\xe0L\
-\x97@p\xa6\x0b :\xd3\x05\x10\x9d\xe9\x1c\x88\xaf\x5c\
-\x06\x0c\xa2\x01# \x1b0\x02\xcb\x99n\x0e^\xa0\xf6\
-\xfd;y\x81\xda\xe7\xef\xa3\x13XU\x06\x90\x9d\xbb\x02\
-\xd5\xd3\x1e\xc4\x00uYB\x00?\xc1\x08\xf0\x13\xac\x00\
-\xfd,[\x01\xfaa6\x03\xec\x043\xc0N\xb0\x03\xe4\
-\x9df\x07\xc8K\x0d\x00\xb8\x09\x00\xd0\xac\xfe\x88\x01\xaa\
-y\x10\xc0\xbc\x9dB\x003\x01\x03\x88\xe6a\x00\xd1<\
-\x10\xc0'\x80\x00>\x01\x05\xe0\xe6\xa1\x00\xdc<\x18\xb8\
-5\xe1\xdf\xb7\xbb\xe7k\xd7\x04Lxi\x22\xcf\x8d\xe6\
-\xc5\x027\xb2\x1d\x0c\x94\x13\x82\x812\xdb\xd1@\xd1\xbc\
-p \xcfv8\x90O\x88\x07\xb2\xe6\xc5\x03Y\xf3\x04\
-\xc0|\x82\x00\x98OP\x00\xb3\xe6)\x80Y\xf3$\xc0\
-t\x82\x04\x98N\xd0\x00\x93\xe6i\x80I\xb6E\xc0u\
-\x82\x08\xb8f[\x05\x5c\x9a'\x03\xc6l\xcb\x80q\x82\
-\x0e87O\x07\x9c\x9b'\x04N\x13\x84\xc0i\x82\x12\
-h\xf7b\xa0\xd9\xa8\x81v/\x06\x9a\x8d\x1ah\xb7b\
-\xa0Y\xab\x81v\xeb\x06\xfe\x03$\xe7\x91\x89\x97#\xf5\
-\xaf\x00\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x02c\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00w\x00\x00\x00w\x04\x03\x00\x00\x00\xcb\x17\xc2\xb9\
-\x00\x00\x00'PLTE\x00\x00\x00\xff\xff\xffA\xcd\
-RA\xcdRA\xcdRB\xccQD\xccQE\xccQ\
-E\xccQD\xccQD\xccQC\xccQA\xcdR\xeb\
-\xfeC\xda\x00\x00\x00\x0ctRNS\x00\x00\x18Oc\
-\xae\xbd\xc9\xd6\xdf\xe9\xf0v\x89\xbe\xf7\x00\x00\x01\xdfI\
-DATX\xc3\xc5\xd8\xbbm\xc30\x14\x05P\xc1Z\
- \xd9\x80e\x902I\xe9\x22\xd0\x08\x9c\xc4\xf0H\xd2\
-\x22)(\x07R\xdeP)\xa2\x0fI\x89|\x9f[\x84\
-\xfd\xc1\x05l]>\x92MS^\xed\xb7k\xcc\xab\xa5\
-\x1e\xc1\xb3\x030\x10\xdd\x12\xfd\xbc\x01\x98\x82\x030u\
-\x08\xb6F\xb7DD\xe4\x11<:\x00\x1b\xa3\x17l\x8b\
-^0\xdd\x11l\xea\xc7\x8aM\xd1\x1b\xb6Do\xd8\xd2\
-\x8f\x1d\x1b\xaa\xb9cCt\x84\xf5\xd5\x8c\xb0\xbe\x1f1\
-VW3\xc1\xda\xe8\x04k\xfb\x91be?R\xac\x8c\
-\xce\xb0.:\xc3\xba~\xe4X\xd5\x8f\x1c\xab\xa2\x0fX\
-\x13}\xc0\x9a~\x1c\xb1\xa2\x9aG\x9cG_\xde\x8b\xeb\
-\xe3\x88\xb3j\xbe\x92j\xa5\xfd\xb8\xeapZM-N\
-\xa2\xb58\xe9\x87\x1a\xc7\xfdP\xe38Z\x8f\xa3h=\
-\x8e\xfaa\xc0{?\x0cx\x8f\xb6\xe0-\xda\x82\xb7~\
-\x98\xf0ZM\x13^\xa3mx\xa9\xa6\x0d/\xfd0\xe2\
-\xbfjZqp\x00&\x8f\xe0\xd1\x01\x98<\x82G\x07\
-`\xba!\xf8\xeb\xdf\xf0'\x80\x03\xf2\x83u\xc0_5\
-\x00\x1f\xc9\x8c|\xdb=\xd0\xaa\x09\xe9\xf3\x1d\xd8I\x96\
-\xcd\xf7\x0a\x04\xdb\xf0\x03\xd9z=\xb0\xe9\x8f\xc8\xb8\xf1\
-\xc0\xa0\x0b\xc8\x88\xed\x80\xe1\x1e\x90cE\x07\x1ch\x06\
-\xe0(5#'\xc0\x1e8{N\xc9\xa9\xf7\xc5z\x06\
-\xd3\x1f\xd6\xe5W\x94\x96\x0b\xd6\xe1\x07rA\xf1\xc0\xd5\
-hD.e\x1e\xb8\x0e\x06\xe4\x22z|sx.\xad\
-\xa7\x1c\x9f\x04\xcb\xf1\xc9c\x87\x18\x0f\xce\x8eO/\xb0\
-R|zu\x16\xe2\xc9\x01\xf8\xbc\x112\x5c\xa8\xa2\x0c\
-\x17\xaa(\xc2\xa5*\x8ap\xa9\x11\x12\x5c\xac\xa2\x04\x17\
-\xab(\xc0\xe5*\x0ap\xf9\xf9\x8f\xc7\x95=\x80\xc7\x95\
-wG\x16\x0f\xce\x8e\xaboI\x1c\xae\xbeb1xr\
-\x00\xae\x0f\xa7:f\xa6b\x1d3S\xb1\x8a\xb9\xa9X\
-\xc5\xdcp\xaaav*V\xf0\x85{\x8b\xff\x05\xc8d\
-f\xae\xfe\xc1\x88\xef\x00\x00\x00\x00IEND\xaeB\
-`\x82\
-\x00\x00\x17\x1c\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x03 \x00\x00\x02L\x08\x03\x00\x00\x005\xef2\xcf\
-\x00\x00\x00EPLTE\x00\x00\x00~\xdbrA\xcd\
-RA\xcdRA\xcdRA\xcdRA\xcdRM\xd0]\
-Y\xd3he\xd6rq\xda}|\xdd\x88\x88\xe0\x93\x94\
-\xe3\x9e\xa0\xe6\xa9\xac\xe9\xb3\xb8\xec\xbe\xc4\xef\xc9\xd0\xf3\
-\xd4\xdb\xf6\xdf\xe7\xf9\xe9\xf3\xfc\xf4\xff\xff\xff\xd4\x9f\x8c\
-\x95\x00\x00\x00\x06tRNS\x00\x00\x10\xaf\xbf\xcf\x84\
-\x1d'\x05\x00\x00\x16\x80IDATx\xda\xed\xdd\xe9\
-\xa2\x9b8\x12\x86\xe1\xf6,,\x02\x04\x08\xd0\xfd_\xea\
-\xfc\xc8\xd2\xc9t\x9c\x9cCi)\x15\xefw\x05\x06\xfb\
-A\xaa\x92\x84\xff\xfa\xabd\xfe\xf5\xdf\x8e\x90v\xf2\x9f\
-\x17>\x08y\x0f\x04\x1f\x84(\x01\x82\x0f\x02\x10|\x10\
-\x80\xe0\x83\x00\x04\x1f\x04 \xf8 \xa4>\x10|\x10\x80\
-\xe0\x83\x00\x04\x1f\x04 \xf8 \xa4\x14\x10|\x10\x80\xe0\
-\x83\x00\x04\x1f\x04 \xf8 \xa4\x14\x10|\x90\xb6\x81\xbc\
-\xf0AH\xa5\x11\x04\x1f\x04 \xf8 \x00\xc1\x07\x01\x08\
->\x08)\x05\x04\x1f\x04 \xf8 \x00\xc1\x07\x01\x08>\
-\x08)\x05\x04\x1f\x04 \xf8 \x00\xc1\x07\x01\x08>\x08\
-)\x05\x04\x1f\x04 \xf8 \x00\xc1\x07\x01\xc8\x0b\x1f\x84\
-\x14\x1aA\xf0A\x00\x82\x0f\x02\x10|\x10\x92\x16\x08>\
-\x08@\xf0A\x00\x82\x0fB\xd2\x02\xc1\x07\x01\x08>\x08\
-@\xf0AHZ \xf8 \x00\xc1\x07\x01\x08>\x08I\
-\x0b\x04\x1f\x04 \xf8 \x00\xc1\x07!\xff\x0f\xe4\x85\x0f\
-B2\x8d \xf8 \x00\xc1\x07\x01\x08>\x08I\x0b\x04\
-\x1f\x04 \xf8 \x00\xc1\x07!i\x81\xe0\x83\x00\x04\x1f\
-\x04 \xf8 $-\x10|\x10\x80\xe0\x83\x90;@\xf0\
-A\x00\x82\x0fB\xee\x00\xc1\x07\x01\x08>\x08\xf9\x02\xe4\
-\x85\x0fB\x12\x8d \xf8 \x00\xc1\x07!w\x80\xe0\x83\
-\x00\x04\x1f\x84\xdc\x01\x82\x0f\x02\x10|\x10r\x07\x08>\
-\x08@\xf0A\xc8\x1d \xf8 \x00\xc1\x07!w\x80\xe0\
-\x83\x00\x04\x1f\x84\xdc\x01\x82\x0f\x02\x10|\x10r\x07\x08\
->\xc8\xb3\x81\xbc\xf0A\xc8\xcd\x11\x04\x1f\x04 \xf8 \
-\xe4\x0e\x10|\x10\x80\xe0\x83\x90;@\xf0A\xc8{ \
-\xf8 \xe4=\x10|\x10\xf2\x1e\x08>\x08y\x0f\x04\x1f\
-\x84\xbc\x07\x82\x0fB\xde\x03\xc1\x07!\xef\x81\xe0\x83\x90\
-\xf7@\xf0A\xc8{ \xf8 \xe4=\x10|\x10\xf2#\
-\x90\x17>\x08\xf9\xe0\x08\x82\x0fB\xde\x03\xc1\x07!\xef\
-\x81\xe0\x83\x90\xf7@\xf0A\xc8{ \xf8x\x97\xde\xfd\
-\x1c\xee\xc8\x13\x81\xe0\xe3\xef87{\xbf\x86\x10\x8e\xf8\
->!\x84\xe0\xbd\x9f\x00\xf3\x08 \xf8\xe8\xba\xde\xcd~\
-\x0bg\xfc|\x8e\xb0\xf9\xd9\xf5\xdcB\xb3@\x1e\xeec\
-\x98\xfc\x1e\xa2<a\xf3n\xe0Ge\x0f\xc8\x83}\x8c\
-\xf3\x9a\x82\xc6\x0f\xb9\xc2:\xa3\xc4\x14\x90\xa7\xfap>\
-\x5c1O\xae\xe0\xa9M\xac\x00y\xa4\x0f\xe7C\xcc\x1d\
-\x90\x98\x00\xf2<\x1f\xc3\xb2\xc7B\xb9v\xa6[\xad\x03\
-y\x98\x8f\xd1\x1f\xb1l\x8e\x05#-\x03y\x94\x8e\xf5\
-\x8c5\x82\x11\x80\xe8O\xbf\x1c\xb1^\x8e\x99u\x92\x16\
-\x81\xbc\x9e\x02d\xdac\xedl\xd4\xec\x8c Z\x07\x8f\
-3j\xc8\xc90\x02\x10\x85]\xab\xed\x8aZr\xadT\
-#\x00Q\x15\xb7G]\xd9 \x02\x10=<B\xd4\x17\
-\x88\x00DGF\x8d< \x02\x10-\xb5G\xd4\x9b\x95\
-r\x1d u;W>\xaa\xce\xb5\xf0\xf3\x03H\xbdL\
-g\xd4\x9e\x83u\x11\x80\xd4\x9a]\x85\xd8Bj\xcf\xb3\
-\xdc\xbd\x00\xa4\xf5,Wl#\xd7T\xf5>\xdd\xfc\xd4\
-\x00i|\xf88b;\xd9{\x80\x00\x84\xe1\xe37\xdb\
-O\x1c@\x00R\xb0y\xb5\xc7\xd6\xe2\x01\x02\x90R\x19\
-\xcf\xd8^B\x0f\x10\x80\x14\xc9\x1c\x9b\xcc9\x02D)\
-\x10[\xe7A\xb6\xd8h\xae\x19 \x8c \xd9\xcb\x8f#\
-\xb6\x1b\x0f\x10\x80d.?Z\xf6\x11\xe3\x06\x10\x80d\
-\xf5q\xc5\xb6SaE\x04 \xcf\x01\xd2\xbc\x8f\x18\x8f\
-\x1e \x00\xc9\x94\xa9}\x1f\x15\x84\x00\xe4)@\xe6h\
-\x22\xa5\x85\x00\xe4!@\x5c\x8c\x08\x01\x08@\xec\xd6\x1f\
-\xdf\x85\x00\x04 \xf8\xd0\xd2\xed\x05\xc8\x13\x80\x0c\x96|\
-\x94\x15\x02\x90\x07\x00\xe9\x8fh+3@\x00\x920!\
-Z\x8b\x03\x08@\x92e3\xe7#^\x03@\x00\x92(\
-s4\x98b\xcd^\x80X\x072F\x93\xd9\x00\xa2\x05\
-H\xdb\xe7A\xfa\xd3&\x90R\x85:@\x8c\x8f \xbb\
-Q\x1f\xa5\xca\x10\x80\xd8\x062G\xb3\x09\x00\x01\x884\
-\xc6V\x08\x7f\x8e\x07\x08@\x84\x09\xd1rF\x80\x00D\
-\x94\xc5\xb4\x8f\x22\xdb\x16\x01b\x18\x88\xe9\x09V\xa1I\
-\x16@\x0c\x03)\xd2\xc1:BX\xbd\xf7\xfe\xfb\x8b\xcd\
-\x17\xef\xbd\x0f\xa1\xc8\xecn\x00\x08@ng\xca\xdbf\
-\x0d\xab\xff\xc3k\xfeG\xb7\xac!\xeb(\x16\x00\x02\x90\
-\xbb\xc9\xb7Dx\x05\xef>\xfe\xec\xee\x9d\xdf\xb3)\x99\
-\x01\x02\x90\x9b\xc9\xf4\xffj\xfbr\xa7y4\xccy\x90\
-\x5c=@\x00r\xafB\xcf\xf1s\xdc$\xfff\xe3\xd6\
-\x0cc\x9a\x07\x08@tT\xe82\x1d_\xab\x925\xf9\
-82\x00\x04 w\x1e\xd7\xa9\x9bUs\xa2\xc9\xcc\x9c\
-\xb8\xbd\xb5\x01\x04 7\x92\xf6g\xb8\xa5<\xc2\x97\xf8\
-\xcf\xd9\x1d@\x00\xf2\xf9\xe7tR\x1e\xa9\xa71I\x89\
-\x04\x80\xd4\x05\xd2\xe4y\x90\x84\xe5\xf0\x9ec\x96\x9f\x92\
-\x88\x03\x08#H\xb5\x01\xe4\xc8\xf5\xf3s\xa1\x89!\x04\
- &\x81\xa4\x1a@\xae\x9c]\xd4d\xff\xb5\xeb\x00\x02\
-\x90*\x03H\xc8\xdbC\x1d\x82\xfe!\x04 \x16\x81$\
-\x1a@\xf2o\x96]\xd4\x0f!\x001\x08$\xcd\x00r\
-\x958\x8f\x94\xe6?\xa9\x03@\x00Rz\x00)\xf4\xe6\
-\xa94\xafE\x1d\x01\x02\x90\x8f\xf7\x87\x1aX\xa0\xfe!\
-\x9b\xeaO\x0b\x10{@R\x94\xbek\xc1\xcf\x9bB\xc8\
-\x00\x10\x80|\xb47\xd4\xc21\x8b\x9f\xb2*\x06\x0d\x10\
-s@\xb6\xd6|\xa4\x10\x92\xed\x5c\x08@\xac\x01\xe9\xe5\
-\xcboK\x83\xa8g\x80\x00\xe4CY\x1a\xaa\xcf\x13\x0a\
-9\x00\x02\x90\x0f\xe5l\xd1G\xd7\x89\xbb\xbd#@\x00\
-\xf2\x81\x88{\xbc\xa5\xff\x88\xfc\xdb\xcc\xf0\xd4\xe9\x1a \
-\xc6\x80H\xe7*\xe5\xfe\xbb\xe9\xff2\xea,\xd3\x01\xf2\
-G M\x9d\x07\xe9\xa5\x03\xc8T\xed\xa3/*\xcbt\
-\x80\xd8\x1aA\xa4\xdb\xb0\xd6\x8a\x9f]\xb8\xc0\x19\x00\x02\
-\x90\xdc\xb5n\xa5\x02\xe4K\xa4\xaf\x12\x1e\x00\x02\x90?\
-\xfd\xc6\xd4n\xfa+0\xc9Z\x00\x02\x90?\xc4\xb7;\
-\xc1\x92O\xb2\x0e\x80\x00\xe4\x0f956\x82\x8au\xb2\
-F\x80\x00$\xe7\x0fl\xae~\x01\x9b\xba\x01\x10 \x96\
-\x80\xac\xfa\xa6(\x9f\x8bl#\xd9\x09\x10\x80d\x9ca\
-9\x05W\xe0\xb5\xcd\xb1\x00b\x08\x88l\x86\x154\x5c\
-\x82l\x08Y\x00\x02\x90l3,\xa7\xe2\x1a\xbc\xb2I\
-\x22@\x0c\x019\x9a\x1f@\xa4C\xc8\x00\x10\x80\xbc\xcd\
-\xd0x\x0b+\xc10\xb8\x00\x04 o\xb3h\xeb\x00\x95\
-g\xbe\x03\x04 o\x13,\x0c \xc2\xb5\x10\x80\x00\xe4\
-\xed\xec\xbd\xe9E\xf4\xbf#:\xf25\x01\xa48\x90V\
-\xce\x83\x88\xfe\x16}St!\x92\xd5\x9c\x15 \x8c \
-9\xa6&\xa3\xa2\x0bY4\x95R\x001\x03D\xf2\xe0\
-=4]\x88h\xae\xf8\xe1F\xef\xe0>\x94\xbb\x8bJ\
-)2\x02DK\xf7gVu)[\x89+\x11\x9e\x0c\
-(\x91\x00\x90\x84\x11\x1d\xb6\xedU]\xcaT\xa2\x98\x02\
-\xc8\xc3\x80\xec\xaa\x96\x0fd\xb9\x0a\x14!\x00y\x18\x10\
-\xc9\x16\x8dI\xd9\xb5l\x05\x8a\x10\x80<\x0b\x88d'\
-\xefe\xa9c=\x03\x04 \x89{\xa3\x9b\xba\xab\xb9\xf2\
-_\x0c@\x9e\x05d34\xc3\x12]\xcd\x09\x10\x80$\
-^\x05\xe9\xd5]\xcd\x94\xffj\x00\xf2( \x92U\x90\
-]\xe1\xf5\xe4\x1f\x0f\x01\xf2( \x92G\xee\xa2\xf0z\
-\x04Mk\x0f\x10\x80\xfc#\x92cF\x83\xc2\xebY\xb2\
-\xff\xac\x00\xf2( \x82\xb3 \xa7\xc6\xeb\x91L\x19\x01\
-\x02\x90\x94s\xf6U\xe5\x05\x09\x9a\x0e#@\x8a\x02i\
-\xe1<\x88\xe4\x90\xd1\xa4\xf2\x8a\x04\x8d\xde\x19 \x8c \
-\xe9\xa6\xec\x0a\x9b\xbc]'\xda{\xb9\x02\x04 \xe9\x9e\
-\xb7\x87\xce+\x1ar\xff\xae\x00\xf2$ G\xee\xe7m\
-SE\x08@\x00\x92\xaeF\x9f\x94^\x92`P\x1c\x01\
-\x02\x90\x9f\x22\xd9\xca\xdb+\xbd\xa6%\xb3y\x80<\x08\
-\x88\xa0\xa2=\x0c\xa2\xf7\x00\x01H\xaa/{S{Q\
-\x99\x7fX\x00y\x10\x10\xc1:\xfab\xf0\xa2N\x80\x00\
-\xe4\xa7\x08\xce\x17\xe9}\xb5\x8c`{\x19@\x00\xf2c\
-$/\x922YX9\x80\x00\xe4\x878\x93\xdf\x81\xa0\
-J\x9f\x01\x02\x904\x1d\xd1U\xf1e\xe5mc\x01\xe4\
-9@\x04\xdf\xf5\xa2\xf8\xb2\xeeW\xe9;@\x00\x92\xa6\
-\x89\xe5\x14_\xd6\xfd\xb5\xf4\x03 \x00\xf9!\xb9\xb7-\
-\xb57s\x04HA \xfa\xcf\x83\xdc\xff\x0aN\xcd\x97\
-%\xe8=\x0c\x00a\x04I\xd1\xeeQ\xfd\x15\xf4Yg\
-\x8e\x00y\x0c\x10\xc1\x93\xd6\xab\xbe\xb0\xac\xbd\x07\x80<\
-\x06\x88\xe0\xab\x9eU_X\xc8\x09\x1f \x8f\x01\xb2f\
-\x9d\x8a4\xd9\xc6\xda\x01\x02\x90\x14]^\xabCc\x00\
-\x08@\xbe\xe7\xfey\xdbK\xf7\x85M9/\x0c \x8f\
-\x01b\xf6\x1bp9\x87F\x80<\x05\x88\xa0\x1b\xba\x99\
-\xa5?\x02\x04 \xd6\xbb\xbc\x12 \x0e \x00\x91\x03\x99\
-\x95\xdf\xfb\x90\xf1\xca\x00\xf2\x14 >\xe7s\xd6\xeeB\
-\x08@\x00\x92b\xcbR\xa3\x97\xb6\x02\x04 _#\xf8\
-\xaf\x99\xce,\x90\x00\x10\x80\x88\xe7!\xa7\xf6{?\x01\
-\x04 \xe2\x1cv\xbf\x80\xfb\xfd\x87\x0b \xc5\x80h?\
-\x0fr\xff\x0b\xd8\xb5\xdf\xfb!\xe3\xec\x11 O\x19A\
-\xec.\x83H\xae\x0d \x00\xf9\x92\x11 \xb7:\xd8\x83\
-\xfbH\x96\x5c>\xedD;\x10\xc1:\xe1\xa4\xfe\xe6\x87\
-|@\xf2\xde]\x80X\x00\xe2\x0c\x03\x99\x00\x02\x10\xe9\
-\x5cZ?\x90\xbd\xf6\xf4\x11 O\x06\xa2\xff\xe6{\x80\
-\x00\x04 \x00\x01\x88\xc6YH\x03\xdf\xe2\xfdw\xc7\x05\
-\x80\x00DX\xc76\xd0fw\x00\x01\x08@\x00\x02\x90\
-|9\x00\x92q#&@\x9a\x07r\xbf\x04Y\x1b\xb8\
-\xfb\xb5\x0b,\x80<\x18\x88\x07\x08@\x00\x02\x10\x80<\
-\x19\xc8\x00\x90_\xa7\x07H! \xba\xcf\x83\x98\xde\x8a\
-U\x7f\xb7\x22@Z\x1fA\x00\x02\x10\x80\x00\x04 \x00\
-\x01\x08@\x00\x92<\xf3} c\x03w\xff\xfeN\xb3\
-\x09 \x00\xe9\x8co\xe6\xad\xbf\x9d\x17 \x00\x01\x08@\
-\x00\x02\x10\x80\x00\x04 \x00\x01\x08@\x00\x02\x90\x8fg\
-\x05\x08@\x00\xf2>\xa6\xcfKI\x96yV\x80\x00\x04\
- \xb9/\x0f \x00\x01\x08@\x00\x02\x10\x80\x00\x04 \
-\x00\xa9\x00\xe4\x05\x10\x80\x00\x84\x11\x04 \x00\x01\x08@\
-\x00\x02\x10\x80\x00\x04 \x00\x01\x08@\x00\x02\x10\x80\x00\
-\x04 \x00\x01\x08@\x00\x02\x10\x80\x00\xc4\x0a\x90\xad\x85\
-\xbb?\x00\x04 \x95\x80\xf8&n?@\x00\x22\xca\xfd\
-\xbf\x07i\xe1\xdf\x0f\xba\x11 \x00\xa9\x04$\x00\x04 \
-L\xb1(\xd2\x01\x02\x10\x80\x00\x04 \x00\x01\x88J \
-\x9c\x07\x01\x08@\x18A\x00\x02\x10\x80\x00\x04 \x00\x01\
-\x08@\x00\x02\x10\x80\x00\x04 \x00\x01\x08@\x00\x02\x10\
-\x80\x00\x04 \x00\x01\x08@\x00\xd2\x06\x90\x1d \x00\x11\
-\x019m\x03\xe1\xffA\x00\xd2u\xe6\xffaj\x01\x08\
-@\x00\x92\xe3\xf2\x00\x02\x10\x80\x00\x04 \x00\x01\x08@\
-\x00\x02\x90f\x81\xbc\xac\x02\xe9M\x03Y\x00\xc2\x08\xd2\
-u\xdd|\x1f\x88k\xe0\xeeo\x95\xaf\x0e \xad\x03q\
-\xb6\x81\x04\x80\x00\x04 \x00\x01\x08@\x00\x02\x90\xb6\x80\
-\xcc\xa6\x81\x8c\x00\x01H\xd7u\xfd} -\xbc\x9c\xf7\
-\xaa\xdc\xc4\x06H\xeb@:\xdb@\x22@\x00\x02\x10\x80\
-\x00D\xe1Oh\x03\x08@\xec\x031\xfdz\xf7\xda/\
-w\x07H\xfb@L\x1f)t\x00\x01H5 \x07@\
-\x00b\x1f\xc8ny;\xef\xfd\x9df;@\x00\xd2u\
-\x9d\xf1\xfd\xee\xb5w\xbb\x03\xe4\xd1@z\x80\x00D\x0e\
-\xe4e\x16\x88\xfe\xcdX\xf7w\xbb/\x00a\x04\x11\xd6\
-\xb1\x0d\x00\xa9\xbdW\x11 \x8f\x062\x03\x04 \xe6\x81\
-\xdc_Kk`\xaf\xc9\xfd\xbd\x8a#@\x00\xf2%\x96\
-\x81T\xef\xd0\x01\xe4\xc9@\xd4/\xa5\xf7\x00\x01\x888\
-\xa7] \xf7\xeb\xab\x13 \x00\x11\x17\xb2\x97] \x01\
- \x00\xf9\x1a\xc3{M<@\x00R\xf1W\x94\xaa\xd5\
-\xa3\xf0\xd2<@\x00\x22\x07\xa2}\xa5p\x07\x08@*\
-N\xd4S\xed\xc7PX^M\x00\x01\x88\x1c\x88\xf6\x85\
-\x90\xab\xfa\xd8\x08\x90\xf6\x81\x08\x16\x0bv\xe5\xf7\xfe\xfe\
-\x95\x0d\x00\x01\x88\xfcg\xa4|!D06v\x00\x01\
-\xc8\xb7\x1c\xf5\x7fGy2U_'\x04\xc8\x07\x80\xbc\
-\xb4\x03\x09\xf5g\x22\xda\xfas\x01 \x8c \xdf\xb3Z\
-\xed\xf3\xde?.\xb5\x01\x04 \x09\x1e\xb4\xca\xfb\xbc\xf7\
-\x87F\x0f\x10\x80\xa4\xa8eW\xd5\x17v\xbf\xcb;\x01\
-\x04 \xdf3\x1amc\xf5\x0a\xa6\x8e\x001\x00D\xd0\
-\xe7U\xbd\x9fW02\xf6\x00\x01\xc8\xdf9\x15\xfc\x92\
-2dQ\xe0\x1e \x16\x80\x04\x9bm\xacM\xc1\xcc\x11\
- \x16\x80\x08\xdaX\xde\xa4\xfb\x0d \x00I2\x17Q\
-\xbd\x1bK\x03{\x80X\x00\x22\xa8fO\xbdW5j\
-\x988\x02\xc4\x02\x10A?Tq\x95~\xff\xcd\xee\x09\
-w\xd0\x00\xc4\x02\x10\xc1\x8a\x9a\xe2*]\xb0\x83\xa6\x03\
-\x08@\x12\xb5\xb1\xbc\xc1\x8b\x0a\x00\x01H\xaa6\x96\xde\
-*=*hb\x01\xc4\x06\x10\xc1t]\xedZ\xba\x8e\
-w\x0e\x03\xe4\xcf@^\xfa\x81\x08~Lj_\xfd\xb3\
-\xa8\xa8\xab\x00bb\x04\x11LG\xd4\xeex\x17\xbc\x0f\
-\xaf\x07\x08@\x92U\xe9Z\x8b\x90\xfb\x9d\xb9\x94k;\
-\x00\xb1\x01d3W\x84\x8c:\xc8\x03\xc4\x06\x90\xd9\x5c\
-\x11\xb2\xa8\xa8\xd1\x01b\x04\xc8h\xae\x08\xd9U\xd4\xe8\
-\x001\x02DR\xa5\xeb,B.\x155:@\xac\x00\
-\x11T\xe9*\xbfL\xc1\x90\x98t\xff%@\x8c\x00\x11\
-l\x5cJ\xf7\x86\x83\x84\x11\xec\x0d\xd84\x00\x19\x00\xa2\
-+ST\xf2\x8bJ\x94CIM\xe5\x14\xd4A\x00I\
-\x10\xc9\x8ew\x85\x8d\xdeAKW\x0e F\x80H^\
-\xdc\xa0\xb0\xd1\xabfs\x19@\xac\x00\x11,\x15*|\
-}\x9c\xa0\xc9\x1b\x00\x02\x90\xb4\xcf\x5c}\xe7n%\x13\
-F\x0f\x10\x80$\x9e\xb5\xab\xebcI\xb4'\xfei\x02\
-\xc4\x08\x10Q\x11\xa2\xad\x8f\x15\xf4t\x1c\x0c\xb5\xces\
-\x01y\xb5\x01DR\x84\x5c\xba^\xdd \x19\x0dw\x1d\
-@\xfc\x83\x8042\x82H\xa6%qVu)\x82\x8d\
-\x8a\xc9w\x96\x01\xc4\x0a\x10Ia\x1b\x0f3\xb3\xc5\x11\
- \x00\xf9u\x8e\xa8\xe8wU\xa3s\x94\xa5!\x07\x10\
-3@$\xdb\xb1T\x95\xe9\x9b\xa6\xebP\xb1\x1a\x03\x90\
-\xda\x0f^MoX\xd4\xd5\xb0\x06\x88\x19 \x92#\x14\
-\x9a\xe6\x04^\x95\xf3\x00\x103@$S\x13=\x9d\xde\
-^\xe2<\xfd\xe1\xaf\x9b@.\x80\xe8\x8b\xa8\xd1\xabf\
-\x08\x11\x0d \x8b\x16 \x11 \xfa\x22j\xf4j\x19B\
-D\x03H\x86sJ\xa1\xf9\x9a\x0e \xdf\xb3\x1b\x18B\
-D\x03\xc8\xa1\xe7\x9e:\x80X\x9bc\xa9\x18Bd\x03\
-\xc8\xa2\x07,@\xcc\xcd\xb1T\xac\x85\x88\x06\x90\x1c'\
-\xc1}\xe3%\x1d@\xd2\xcd\xb1\x14<\xf5Dk Y\
-6\xcc\xdc\x05\xb2\x02\xc4\xdc\x1cK\xc1\x8e\xac \xfa\xfc\
-9\xb6\x5c\xde}\x1bF\x00\x88\xbd9V\xf5y\xc1$\
-\xfb\xf89\x8a\xa8\xbb\xfb\x13\xce\xe7\x00y\xb5\x03D:\
-\xc7\xaa\xbcgQV\xa1\xe7yE\xe4\xed\x0d<\x8c \
-\x06\xe7X\xf1\xa8\xda\xc9\x92M\xb0\xf2\x9c\xe2\xeb\xdb-\
-\xe8\x00\xf2\x8b\x5cB!5;Y\xb2\x0eV\xaeI\x8d\
-\xa2\x963@\xe4\xd9\x84@*\x9e-t:\x0b\xa8\xab\
-\xc1G\x0d@\xdef\x94\x02\xa965\x18\xa5\x83_\xa6\
-\xd7\xe1\x06\xaatK@d\xe7\x0ac\x8c\xf1\xaaS\xa8\
-\xf7\xd2\x0f\x9e\xeb_\x1c\x822\xb0\x00\xa9[\xa6W\x12\
-\x22\xf6\x91m\xe4\xf3\xedMV\x01\x92\xafUZI\x88\
-\xdcG\xb6\x19\x8d\xd76\xa4\x01\xa4r\x99^A\x88\xdc\
-G\xbe\xe7\xf5\xfd\xc5\xcb\x1e \x1a3\xc4\xe6\x84$\xf0\
-\x91\xaf$v\x919\x96) \xd2\xe5\xb6/BJ~\
-\xb9\xe3)\xff\xc0\x197\xc9(D\x0b\x90:\x8f\xbc:\
-\xdb\xb2\xa6+\x01\xe8\x8c\xd3\x99\x8b!\xc4\x16\x90\xeeL\
-\x22$\x14\x9aB\xaf\xda9\x07\x95l\x01r?s\x12\
- \xf1*\xb1d8\x1cI>j\xce_\xa2\xa0\xebq\
-\xf4\x00\xb1;\x84\xc4\xb8f\xff~\x97K\xff|P\xb2\
-E\xec\x09B\x1a\x04\x92h\x08\xc9^\xab\x8fG\xa2\x8f\
-\x99\xf5g(\xaa\xe9\x0e\xfb\xeb\xe9M\x9d\x07I<\x84\
-\xc4\x18\xf2\xcd\xb3\xfa-\xd5\x87\xcc\xbbqV\xd67\xbf\
-\xcc\xef\xeamp\x04I7\x84\xc4\x18\xb7<\xcf\xc0\xde\
-_\xa9>a\xeev\xaa\xf0\x83\x9es\x0f\x10\xbbCH\
-\x8cq\x1b5\xf3\xc8\xffwg\xe2\x85\xa5k\x9b>e\
-\xc49\xe7\x9c[\xfc\x00\x90\x16\x86\x90\x18cH\xfb\x1b\
-\x1c\xb7\xa4\x1f.\xf7\xcd\xf4)>\xe5\xb1.\xee\xe7\x1f\
-|\xff\xc5\x81\xf7\xde{\xbf\x87\x10B8Z<\x94\xd8\
-$\x90\xb4CH\x8c\xf1L\xf68\xeb\xe7#\xedG\xcb\
-\xbe-fJ\xf8a\xaf\x10B\xf8\xe8\xe8\x09\x906\xbe\
-\xd4o\xcf\xc0eH\xa0cO\xfd\xb1\xf2\xbf\x80j\x88\
-\x95\x02\x10\xcd\x13\xe7_\x1a\xf1\x92\xc7\xf5\xb0\xec\xe9?\
-R\x89\xd5\xea\xab\x12\x10\x0f\x90|\x193}i\xd7\xbe\
-\xdcy\xb0\x0d\xf3vf\xf9<%\xfe\x90|\x07\x88=\
- i\xf68\xbd\xab\x8b\xd7O(\x19'\x1f\xb2=\x83\
-\x8b\x9cJZ\x00b\x10H\x9f{bp\x85\xcd\xcf\xee\
-\xfd\x9ckt\x93_\xc3\x99\xf73\x14\xe9\x84\x8e\x001\
-\x08$u\xab\xf7w\x03J\x08!\xf8o\xd9?\xd3\xa8\
-Q\xbd\x86^\xbb\x08\xd9\x00\xd2^\x9d\xae*\xa5\x8e}\
-ou./\x00$o{\xf22\xee\xa3\xd8y\x8b\x19\
- \x16\x81T+.\xcd\xad\x13\xf4\x001\x09\xc4\xf8$\
-\xab`\x0d{\x00\xc4$\x10\xd3\x93\xac`\x7f,n\x03\
-\xc8\xab] \xb5&\xcf\xa6\x0a\x90\xae\xab\xb6\xdb\x84\x11\
-\xc4j\xff\xa5@\xca\xbe\xba\xeb\x00\x88M \xfda\xd4\
-G\xe1W\xea,\x00\xb1\x09D\xfe\xaf\x02:S\xfaO\
-d\xeb\xf4\xb1\x06\x80P\x864\xb2\xc6\x5ce\xae\xea\x00\
-R \xde\x9e\x8f\x0ao\xd3q\x00\xb1\x0a\xc4^\xa1^\
-\xe5mS'@\xac\x02\xb1V\xa8\xd7y\x1b\xdb\x0c\x10\
-\xab@\x8c\x09\xa9\xf5\xc6\xdb\x0aC\x88\x07\x08B>\xed\
-c\xact\x13g\x80\x98\x05b\xa8\xd9{\x8c\xd5n\xe2\
-\x09\x10\xb3@\xcc\x08\xa9\xf96\xe8\x19 v\x81${\
-Q\xf4s}T\xd8\x1c\xbd\x01\x84:\xe43\x09u\xdf\
-r[\xfclz\x00\x08BZz\xa0\xae\x001\x0c$\
-\xe1\xff\x0d\xd4\xc9\xf2\xb8gL\x1b@^V\x80\x94\x7f\
-\x02&m\xefN\x0an\xe0\x08\x10\xc3#H\xd7us\
-\xb3\xcd\xac\x8a\xed\xdd\x8a\x9d,\x80\x14\x7f\x04\x9em\xfa\
-\xd8\xb4\xfc\x09\xcd\x06\x10\xd3@\xba~oqz\xa5\xe8\
-\x1f\xc77\x80\x98\x06\x92\xec\x9feKN\xafT\x1d\x1c\
-\x0a\x00\xb1\x0d\xa4\xb95Ce\xeb\xc9%\x9b\x81\x03@\
-\xaa\xa4\xad3T\x93\xb6\xdbWN\x88\x03H\xa5A\xa4\
-\xa5W\xca]\xfdc\x1f0\x00\xa1\x12\xf9@Vuw\
-\xcf]\x001\x0e\xa4\xa9uu}\xbf\x93>\x00\xc48\
-\x90\x96\xe6Y\xc7S\x87`\x0f\x90\xba3\x85V\x88h\
-\xfc\xa1\x94\x18\x82\x01R;s\x1b+\xeb\xd7\xf0\xcc\xe7\
-\x0b@\x14\x10ib\x14Q\xbam/7\x11\x800\xd1\
-ju1\xe4[!\x97u\xa2\xb5\x01DE\x86M}\
-\xd3\xf7\xec\xb5\xde\xbc~\xc9\xb23\xe1\xdc\xfd\xd4\xc6\xbb\
-y_\xf6\x81t]?k\xdf\x7f\xb2*\xbe{\xe3\x9a\
-\xb4\x94\x0b\xeb\xe2\xfaf~:O\x18A\xbe~\xcb\xba\
-\x87\x91Q\xf7\xdd[RLT\xc3\xe6\xdd\xd0\xd8\xef\xe6\
-1@\xba\xae\x9b4O\xb5\x0e\xf5\xb7\xcf\xf9\xdb\xff\x0f\
-\x7f\x86\xb5=\x1a\xcf\x03\xa2\xdb\xc8\xd2\xc2\xfd\x1b&\x1f\
->3\xdf:\xc2\xea\xdd\xd8\xf2/\xe6a@\xba\xae\x9b\
-V\x9d\x8b#W;O\xd8\xd1-~\x0f\xef']W\
-\x08\x9b\xf7\xae\xa1J\x03 ??\x07\x97]\xe1@\xb2\
-\xb7X\xd99\xe7\x9c\xf3_3;\xe7\x1a\x9dI\x01\xe4\
-\x9fe\xe7\xaem$\x99:\x02\x10]3\xeaU\xd3*\
-\xe2\xd9\xf3{\x04\x88\xc6\xbasO\xb1Jr\xc9gm\
-\x9e\xdf#@\xb4\xce\xb8&\xbf\x85\xfbs\xae\xe0]\x8a\
-\x97J\x8d|\x11\x00\xd1=\x9c\xb8\xc9\xff\xb6A\xf3\xcb\
->\xe6\xd7\xbaT>]\x0b|\x03\x00i\xc7\x8as\xd3\
-\x97\xee\xcc\x16~\xcc\xea\xbd\xf7~\xf9g\xc3fx\xc8\
-b\x08@\xc8\xbd\xc8\xdfvpQ\xa7\x03\xc4n\xfa\xf3\
-\x91\x8b!\x00!\x1f\xcc\xf4\x8c\x17\x19\x00\x84\xdcL`\
-1\xc4\x1a\x90\x17@RV\xf6,\x860\x82\x90\xacu\
-:\x8b!\x00\xb1\x9c\x93\xc5\x10\x80\x90\xf7q\xf2!d\
-\xe6.\x02\xc4nv\x16C\x00B\xb2\xd6\xe9\x1bw\x11\
- v\xb3\xb0\x18\x02\x10\xf2\x9b\xc87\xcf\x9f\xdcD\x80\
-P\xa7\xb3\x18\x02\x90g&\xc1\xfb:\x07\xee\x22@\xcc\
-\xa6\xbfX\x0c\x01\x08\xc9Z\xa7\xb3\x18\x02\x10\xc3\x09,\
-\x86\x18\xc9\xbf\x01\x92#\xa3\xed\xd7Y?'\xff\xfd\x17\
-@\xb2de1\xc4\x8a\x0f\x80(\xad\xd3\x0f\xee\xa2\x06\
-\x1f\x9c\x07\xc9\x93\x99\xc5\x10\x1b\xe3\x07#\x88\xde:\x9d\
-\xc5\x10\x0d>\x00\x92'\x09^\x02\xc4b\x88\x06\x1f\x00\
-\xc9\x94\x04\x87\x0by\x9d\xb5\x02\x1f\x00\xc9U\xa7\x9f,\
-\x86X\xf0\x01\x90\x5c\x99X\x0c\xb1\xe0\x03 \x8a\xebt\
-\xde\xe0P\xdf\x07@\xf2\xd5\xe9,\x86\x18\xf0\x01\x10\xd5\
-u:\xaf\xb3\xae\xed\x03 \x19s\xb2\x18\xd2\xbc\x0f\x80\
-dL\x82\xc3\x85\xbc\xce\xba\xb2\x0f\x80\xe4\xcc\xcebH\
-\xeb>\x00\xa2\xbcN\xe7u\xd6u}\x00$k\x16\x16\
-C\x1a\xf7\x01\x90\xbc9X\x0ci\xdb\x07@\xd4\xd7\xe9\
-lZ\xac\xe8\x83\xf3 \xb9\xb3\xb1\x18\xd2\xf2\xf8\xc1\x08\
-\x92;\x09\x0e\x17\xb2i\xb1\xa2\x0f\x804P\xa7\xb3\x18\
-R\xcf\x07@\xb2'\xc1\xa6E\xde\xe0P\xcd\x07@\xb2\
-'\xc1K\x80X\x0c\xa9\xe6\x03 \xf9\x93\xe0%@\xbc\
-\xc1\xa1\x96\x0f\x804Q\xa7\xb3\x18R\xcb\x07@\x0ad\
-f1\xa4Y\x1f\x00i\xa4N\xe7u\xd6u|\x00\xa4\
-D\x12\xbc\x04\x88\xc5\x90:>\x00R$\xf2\xc3\x85\x1b\
-@\xaa\xf8\x00H\x99:]v\xb8\xf0Z9YX\xc9\
-\x07@\xcaD\xf2\x12\xa0\xcb3zT\xf3\x01\x10\xedu\
-\xfa9\xc3\xa3\xa2\x0f\x80\x94\xaa\xd3\xaf\x9b<\xb8uU\
-}\x00Ds\x9d\x1e\xd8\x84U\xd9\x07\xe7A\xca\xe5\xd3\
-u\xfa\x06\x8f\xea\xe3\x07#H\xb9|\xf2p\xe1F\xe3\
-J\x83\x0f\x80\x94\xcb\xfe\x99\xc6\x15<t\xf8\x00\x88\xc2\
-:\x9d\xbe\xae\x1e\x1f\x00)\x98\x85\xc6Us>\x00R\
-2\x1fx\x09\xd0\x01\x0fU>\x00\xa2\xaaN\xa7\xaf\xab\
-\xcd\x07@\x8af\xa3\xaf\xdb\x98\x0f\x80\x14\xcd\xef\x0e\x17\
-\xd2\xd7\xd5\xe8\x03 :\xeat\xfa\xbaJ}\x00\xa4p\
-\x02}\xdd\xa6|\x00\xa4pF\xfa\xbaM\xf9\x00H\xe9\
-\xac\xf4u[\xf2\x01\x90\xbau:}]\xe5>\x00R\
-<3}\xdd\x86|\x00\xa4^\x9dN_W\xbf\x0f\xce\
-\x83T\xc8@_\xb7\x99\xf1\x83\x11\xa4F<}\xddf\
-|\x00\xa4F\x9dN\xe3\xaa\x19\x1f\x00!\xf8\x00\x08\xc1\
-\x07@\x08I\xee\x03 \x04\x1f\x00!\xf8\x00\x08!\xc9\
-}\x00\x84\xe0\x03 \x04\x1f\x00!$\xb9\x0f\x80\x10|\
-\x00\x84\xe0\x03 \x84$\xf7\x01\x10\x82\x0f\xce\x83\x10|\
-0\x82\x10\x92\xdc\x07@\x08>\x00B\xf0\x01\x10B\x92\
-\xfb\x00\x08\xc1\x07@\x08>\x00BHr\x1f\x00!\xf8\
-\x00\x08\xc1\x07@\x08I\xee\x03 \x04\x1f\x00!\xf8\x00\
-\x08\xc1\xc7_\x00!\xa4\xa0\x0f\x80\x10|p\x1e\x84\xe0\
-\x83\x11\x84\xe0\x03 \x84\x94\xf4\x01\x10\x82\x0f\x80\x10|\
-\x00\x84\xe0\x03 \x84\x94\xf4\x01\x10\x82\x0f\x80\x10|\x00\
-\x84\xe0\x03 \x84\x94\xf4\x01\x10\x82\x0f\x80\x10|\x00\x84\
-\xe0\x03 \x84\x94\xf4\x01\x10\x82\x0f\xce\x83\x10|0\x82\
-\x10|\x00\x84\x90\x92>\x00B\xf0\x01\x10\x82\x0f\x80\x10\
-|\x00\x84\x90\x92>\x00B\xf0\x01\x10\x82\x0f\x80\x10|\
-\x00\x84\xe0\xa3d\xfe\x07\xdagL\x80\x9f`\x0d\xd4\x00\
-\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x02\xbb\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x80\x00\x00\x00v\x08\x03\x00\x00\x007+k\xfd\
-\x00\x00\x003PLTE\x00\x00\x00A\xcdRP\xca\
-NA\xcdRA\xcdRF\xccPH\xcbPB\xccQ\
-I\xcbPD\xccQE\xccQJ\xcbOE\xccQD\
-\xccQD\xccQC\xccQA\xcdRz\x18s\xcb\x00\
-\x00\x00\x10tRNS\x00\x186Oc\x9d\xab\xae\xb8\
-\xbd\xc9\xcd\xd6\xdf\xe9\xf0\xb8\x82#\xe9\x00\x00\x02'I\
-DATh\xde\xc5\xda[v\x830\x0c\x04PT\xd3\
-\x90\x07\xa5\xda\xffj\xfb\x91\xa4!`\x9f\x18i\xa4\xd1\
-\x06\xe6\xf2\x01#\xc0\xc3\x101E\x17\x19\x98ST\x97\
-\x22\x5c\x80\xea(d\x00Sp\x07\x10\x05\x0f\x00O\xf0\
-\x04\xe8$d\x00K\xf0\x02\x90\x04+\x00G\xb0\x06\xe8\
-U\xc8\x00\x86\xe0\x1d@\x10l\x00:\x0b\x19\x90^\x8e\
-;@\xb6`\x0fH\xae\xe7\x0a \xb7\x18\xaa\x80LA\
-\x1d\x90(h\x00\xf2\x04-\x00\xa4\x18\xa4|\x9eQ\x03\
-\x05\xdf\xea\x1a\xbf\xe0\xacd\x81\x17\xe0\xae&7\xc0+\
-\xf0\x03\x9c\x02\x00\xc0W\xcf\x08\x80\xab\x1c!\x00\x8f\x00\
-\x03p\x08@\x00\xfd\xb5.\x08(\x80\xb9\x9ap\x00\xa3\
-\x00\x08\xb0\x09\x90\x00S1@\x01:\xb1\x01\xda\xbf\x86\
-\xdc\x84\x09\x90Q\xb5\x10\x012j\x10`\xec\xcf\x8f\x00\
-t\xbe.\xdd\xf3\x03\x00\x9d} \x93\xc6\x00\x0e\xe6\xc3\
-\x01\xf3\xc1|4\xa0s/\x93\x8b\xc6\x00z\xf3\xaf\x1a\
-\x030\xe4C\x01\x93!\x1f\x09\xe8\xcd\xff\xd1\x18@o\
-\xfe\xa21\x00c>\x0c\xd0\xb7\x06I\xd9\xe6\xa3\x00\xe3\
-\x91\xc7\x7f\x0d\xf0u\xfe<sD\xfe\x13\xd03%\x22\
-\x1f\x018V\xbfx\xc0\xd1\xfaC\x03\x9c\xf9n\xc0\xec\
-\xcc\xf7\x02\x8e\xd7\xef\xee\x0a:\xee\xbf\x93\xb4\x00\x96\xfa\
-\xb3Li\x00\xb2\xf2[\x80)+\xbf\x01\xb0\xd5/\x0e\
-`\xad?\x14 3\xbf\x060\xd7/\x08\xe0\xa9\x1f\x04\
- 9\x7f\x07\xc8\xce\xdf\x00|\xf5\xeb\x07x\xeb\xcf\x0b\
-`\xe4\xaf\x013#\x7f\x05\xe8\xfd+q\xd1\x18@\xf7\
-_\x11\x8d\x00\xc8\xed\xd4\xfd\x09t\x89\x00\x1c\x19Y\xc8\
-\x00\xb0\xc0\x00@\xac!>\x00T`\x02 \x056\x00\
-P`\x04\xe0\x9e\x87V\x00L`\x06\xa0\x04v\x00H\
-\xe0\x00`\xf6\x12\x0f\x00\x22p\x01\x10\x02\x1f\x00\xf0v\
-\xe0\x04\xb8\xab\x09pj\xaf-\x18;N0!\x8ej\
-5\x05eH\x9aV1\xa4\x01Z\x82<@C\x90\x08\
-\xa8\x0b2\x01\xd5bH\x05\xd4\x04\xb9\x80\x8a \x19\xb0\
-\x17d\x03v\xd5\x94\x0e\xd8\x0a\xf2\x01\x1b\x01\x01\xf0^\
-\xcf\x0c\xc0[5q\x00+\x01\x09\xf0\x12\xb0\x00\xff\xc5\
-@\x03<\x05<\xc0C@\x04\xdc\x05L\xc0 \x13\x19\
-0\xc8\x14\x04\xf8\x03L-q\xaa\x9e\xb6\xb9\xda\x00\x00\
-\x00\x00IEND\xaeB`\x82\
-\x00\x00\x0a3\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x01\x90\x00\x00\x01&\x08\x03\x00\x00\x00{\xf26\x96\
-\x00\x00\x00BPLTE\x00\x00\x00A\xcdRA\xcd\
-RA\xcdRA\xcdRA\xcdRM\xd0]Y\xd3h\
-e\xd6rq\xda}|\xdd\x88\x88\xe0\x93\x94\xe3\x9e\xa0\
-\xe6\xa9\xac\xe9\xb3\xb8\xec\xbe\xc4\xef\xc9\xd0\xf3\xd4\xdb\xf6\
-\xdf\xe7\xf9\xe9\xf3\xfc\xf4\xff\xff\xffzo\xb3\xfe\x00\x00\
-\x00\x05tRNS\x00\x10`\x80\xcf\xea\xfd\xddd\x00\
-\x00\x09\x9bIDATx\xda\xed\xddQ\x82\xa4(\x0c\
-\x06\xe0\x99\xdd\x11EEE\xe1\xfeW\xdd\x87\x9e\xdd\xed\
-\xe9\xae\x12\x90\x80\x89\xfc9\x80V\xd5'\x90`\xb4~\
-\xfc\xb8\x14\x7fu\x88\x22\xf17<\x9e\x00\x02\x0f^ \
-\xf0\xe0\x05\x02\x0f^ \xf0\xe0\x05\x02\x0f^ \xf0\xe0\
-\x05\x02\x0f^ \xf0\xe0\x05\x02\x0f^ \xf0\xe0\x05\x02\
-\x0f^ \xf0\xe0\x05\x02\x0f^ \xf0\xe0\x05\x02\x0f^\
- \xf0\xe0\x05\x02\x0f^ \xf0\xe0\x05\x02\x0f^ \xf0\
-\xe0\x05\x02\x0f^ \xf0\xe0\x05\x02\x0f^ \xf0\xe0\x05\
-\x02\x0f^ \xf0\xe0\x05\x02\x0f^ \xf0\xe0\x05\x02\x0f\
-^ \xf0\xe0\x05\x02\x0f^ \xf0\xe0\x05\x02\x0f^ \
-\xf0\xe0\x05\x02\x0f^ \xf0\xe0\x05\x02\x0f^ \xf0\xe0\
-\x05\x02\x0f^ \xf0\xe0\x05\x02\x0f^ \xf0\xe0\x05\x02\
-\x0f^ \xf0\xe0\x05\x02\x0f^ \xf0\xe0\x05\x02\x0f^\
- \xf0\xe0\x05\x02\x0f^ <<\xb4\x1e\x8d1f\xb1\
-\x1f\xb1\x1ac\xcc\xa4u\xdf\x1e\xc8\xcd\x1eJ\x9b\xc5\xee\
-\xfe}8\xbb\x99qh\x07\xe4N\x0fm\xac\xf3\x91\xb1\
-/S\xdf\x02\xc8m\x1e\x83\xb1>5\x8euRO\x07\
-\xb9\xe7\xbc\xe3z\xf8\x8b\xb1=\xda\xe4\x16\x90~\xb9\xac\
-\xf1\xdbd\x04\x08\xe1\xba\xb1\xf9\xfc8\x8c\x02\x08IL\
-\x87\xa7\x09\xf7L\x92\xca z\xf7t\xf1H\x92\xaa \
-\xbd\xf5\xb4\xe1&\x80d\x84\xf1\xf4a3K\x13\xfb>\
-\xa6\x87\x83\x0c\xbb/\x11n\xce\xfaT'G6\xcf\x06\
-\x99\x9c/\x14\x9b\x02Hz\xac\xbe\x5c\xec\x03@R\xf7\
-\x0fw_2\xdc\x00\x10N\x1e9\xd9V\x93 \xc3\xe1\
-\x8b\xc7\x04\x90\xf8\xf1Q\xc1\xc3\xfb\x11 \x5c\xe6\xab\xac\
-u\xa4A\x90:\x1e\xde\xbb\x1e w\xe7\xbb_\xb2_\
-\x05\x90\x88z\xd0\xd7\x8b\x15 \xe1\x04\xcbU\x04\xb9\xb2\
-\xb0\xb7\x06\xb2\xd7\xf4\xf0N\x01\xa4\xfe\xfe\xee\xe9\xb6\x16\
-@N\xa3O\x9c\xb0\x9c]\x8d\x19\xf5\xef\x98\x8c\xb1{\
-\xe9I\xab-\x90\x94\xfbQ\xd6\xe8\x97\x13\xce0\xa5t\
-D\x1c\x0a \xefCG\x8f\x8c\xf5\xfc\xca\xee\xe7\xe8\x91\
-b\x00\xf2>\x22\xaf\xec=\xa6\xcf\xaa_\xe2\xa6\xbf\xd4\
-\xf2\xb0%\x90\xb8\x12\xc4\xea\xd8-\x18\xe3\x0a\x14#-\
-\x81\xc4\x0c\x90\xa4}\xf3>\xaa\xa1\xab\x07\xc8\xf5\x01\x92\
-z\xf7ut\xd4C\xa4!\x90\x88\x01\x92~\x13#f\
-\xeb\xb8\x07\xc8\xb5\x01rm\xc3|\xa5M\xb4\xda\x01\xb1\
-e<\x22D\x926P\x9a\x01\x19\xca5&\xac\x943\
-a3 \xc1_M_?vh\x1d\xd9\x01\xf2}\xf1\
-\x0d\xa5Cs\xc9\x83\x0f\x00I]\xd2m\xd6\xd1\xc7\xc0\
-\xd1\x17\x80$.\xe9.\xf39\x82@\x85x\x00\xe4k\
-M]p\xc2\x8a\x99\xb4F\x80\xfc\x193\xd9\x15\xfc&\
-\x0cU\xb5\xde\x08\xc8^\xa6\xcd0z\x88\x1c\x00\xf9\xf3\
-\xe7*=@\x82Cd\x00HB\x8eE\xf1hR`\
-\x88\x18\x80\xc4'A\x8e\xe4Q\xcd\x95\xa66l\x03\xc4\
-\x91\xf7\xb3%\xef\xcd\xbcBW\xfa{\x9c}N\x1d\x8c\
-^\x06\xc8@VG_O\x1c^%\xbe\xd1\xf7\xf8\xa3\
-\xc3\xc8\x001\xc5\x97\xf4pj\xbd\x00$\xb6L\x9f\x89\
-\xce\xd2'/\x22\xcd\x82\xb8\x1a3Vh\xceR\x00\x89\
-[B\x8eJ3\xa3\x06\xc8\xf5\xc9\xbd\x04\xbc\x01H\x5c\
-\x850V\x9a\x1a-@.\xcf\xedE\xeaO\x07\x90\x88\
-\xe27\xed\xf6j\xde\xdc\xd8\x03$\xe6k/\xd5\xce\xa4\
-\x01\x12\xb3\xb38V\x1b\x8b\x06 \x1f\xb1\x10v\xde\xe6\
-\xacV+@\x22\xeatW/\x9f\xb3\x00\xb9\x96\x8c\x16\
-[\xd5\x01rib/\xb7\xaa+\x80\x84\xbf5\xed{\
-\x0cUZ\x9a\xd5&\xc8X\xaa\x814yz\x9c\x00\x12\
-\xde\xf2\xab\x99@\x18\x80\x04\xb3^G|\xb25)\xef\
-m\x13\xc4\xd6K\xb2\x02\xc3\xd1\x02$\x08\xb2\x11\x9fl\
-J\xda6k\x13\xa4\xea\x17\xd0I\x0b\x16@\x8a\x7f\x81\
-\x01 \xa1\xe8kf\xbd\x01\xfe\xaf\xfbf\xc3\xf7\xf7\xbb\
-\x9f\xed\x86Y\x13\x0c\xcd\x1fD3\x02\xd1y\x1f\xf7\x19\
-\x9d\x8b\xba\xde^o\xd7\x05\x1e\x86\x07H\xf0n\x08\xf9\
-\xc7\xb7\x99\xfb4\xcf\x071\x8c@\x0c@\x02 \x8e\xfc\
-\xe3\xaf\x00!\xad\x9d\xcb\x9e\x0e ]\xa05\xa72\xc8\
-\x06\x90\xca[Y\xf9\x03\x12 \x00\xe1\x04B\xff\x155\
-@\x00\x22\x0bd\x07\x08/\x10\xcf\x08\xc4\x01\x84\x17\x88\
-\x07\x08@\x00\x02\x10\x80\x00\x04 \x00i\x03d$\xff\
-\xf8\x0a 9 \x13F\x08\xa6,\x80\x00\x04 \x00\x01\
-\x08@\x00\x02\x10\x80\x10\x83\x1c\x00\xc1\x1dC\x80\x00$\
-\x03d\x01\x08/\x10\xfa6\xa0\x19 \xbc@\xd0\x97\x15\
-\x0aN\xad\xa4+@\xd0l-\x0b\x04\x8f#0\x03\xc1\
-\x03;\xf5A\xf0H\x1b3\x90\xf3\xcd\xa5\x81\xfa\xe3\xef\
-x\xe83\x0b\x04\x8fEW\x07\xe1\xfc\xe2\x80&A8\
-\xbfZ\x03 \xcc^>\xd3&H\xd5\xbd\x93)\xf7d\
-\x00a\xb6/\xd0\x00\xc8R\xb3\x10Ys7\xfb\x1b\x00\
-9/\xd5U\xc5\xe1h\x00\xd2u\x9c^\x13;\x02$\
-\x9c\xf8\xcc\xa4\xe7R\xd9\xf8\x0d\x80\x9c\xe7\xbdKE|\
-\x05\x90\xae\xeb\x02\xef\x14\xab\xf82~\xd7\x01$\xbc\xd0\
-\xd2\xa6Yk\xb6}\x0b K\xbd\xfd\xde={vl\
-\x01d\xaa\xf7\xccN~\xfe\xd0\x02\xc8\xf9J\xbbV;\
-\x93\x06H\xccu{\x10\x9e\x88\xa0\x06m\x02d\xcf\xbd\
-IA\x92>\x1c\x1d@br\x1f\xcaE\xc4g\xbe\xdf\
-\xaf\x15\x90\xb9\xd2\x22B\xb1'\xa0\xabv\x22\xdf\x04r\
-~\x1b\x8f\xae7k!\xd85\xd3U\xdb\xfan\x02\x09\
-\xfc\xc1=\xd9\xdb\x03\x0e\x82\x0a\xb4\x0d\x90\xad\xca\x9cu\
->\x10#\x7f\xcd\xbe\x09\x90\xf3E\xc4\xa9\x1a3V\xec\
-\x8a\xdc\x04\xc8\xf9\xb5K\x95g\x1d$7^\x9a\x00\x09\
-,\x224\x7f\xa9>\xd2\xa4\x0e\x95j\xd8\x9bA\xce+\
-\x11\x9a\xdb\x86\x96\xa0\x0a\x09\xd42\xcf\x019\xbfzI\
-\xe6\x02M4-\xb6\x01r~k\x95d\x88\x9c\x0f\x90\
-\xf8f\x8a\xaa\xad\xe1\xb7\x81\x04\x12_\x82!\x12\x18 \
-\x1b\x09\xac~\x0e\xc8\xe4\x0b'Z;\xd5\xf1m\xb5\x8e\
-\x8c[ABsVn-2{\xa2\x19\xeb\x14\xc4<\
-\x07$\x94geNZ\x81B'e3`\xe1V\x88\
-\x14\x02\x09\xe4Yy[\xa9\xea\xa0K\x1aL\xd5gT\
-\xef\x03\xe9B\xbfY\xc62\xa2\x02\x0bHRE7q\
-K\xb3J\x81\x18_J$\xe8\x91td]\xf7\xdd,\
-\xf7\x81\xa8 \xc8\xc553\xec\x914\xd3\xf4\x9e\xd9\xe6\
-I)\x90\xe0\xb2\xee\xbd\xdf.\xe4Z\xc3A\x0c]\xb1\
-\x15\xf9^\x90>\x0c\xe2\x0fM?\x13\xa6\xa6\xd4{\x9d\
-\xbbi\xf7\x83\xc4\x0c\x11\xef\xd7\xa4&\x14\xbd{\xf2\x99\
-p+1\xaf\xb2\x04\x89\x19\x22\xde;\x13M\xa2m\xcc\
-\x01\x0f\xe21w\x987\xb9\x96\xd6Z+I qC\
-\xc4{\xbf\xc6L\x5cj\xda\xe3\x8e\x96:\xc9\xe8\x88\x8b\
-\xc6.\x1f\xffg\xbfYk\xad=\x8a\xeev\x15\x04\xe9\
-}l\x1c\x8b\x0ehl\xb1\x87J\xae\xae\x95\xcf\x08Y\
- 1+\xf0\xa7_\xd2\x8c/'/=-{\xfcQ\
-\x5czc\xe4\xd1\x0e\x88J\xfe\xae\xbb]\x8d1\x93\xd6\
-Z\x1bc\x8c\xb5.\xf1\x00\xa6\xdc\xccZ)\x09+\x09\
-\x12\xde\xd1\xa2\x0e[\xf9C\x1aa \xddV\xd7\xc3]\
-\xe9\xe4V-\x81(W\x15d\xac}\xd5\x88\x03\x89I\
-*\xe9\xe2\xe2\xcf3\xb5\x04\x92\x96i\xe5\xc5Z\x7f\x18\
-o\xf2@\xb2\x92\x98\xb4\x0cM\xd5\xff\x88V \x88\xda\
-\xb9{$T\xb0O\x00\xa9$\xb2\xab;F\xb1H\x90\
-*\x22Y\x1e\xd7\x87\xc8.\x12\xa4\x82\xc8\x96\xb9\xedz\
-9\xf5\x90\x09\xd2\xa9\xc2+\xfbr\xdb%#\x14\xa4l\
-\xf6\xeb\x08\x1e8\x19\x5cc \x9d.V\xb3\xef$\xcd\
-:Ck \x9d*\xb4\xafE\xb5\xae^\x1b#\x83\x5c\
-\x90\xae\x1b\xcb\x0c\x12\xaa{\x12\xc3q\xe3\xc9o\x01\xe9\
-T\x91\x95\xe4\xb8s\x0c\xcb\x06\xe9\xba\xbeD\xbaE\xb7\
-\xc3\xa7\x8f\xd6@\xca\x90\x10\xbe\xcffJ\xcc\x7fG\xf1\
- ]\xa7\xccA\x0cB\xba\x811\xac\x91K\x9d\xb3f\
-*\xd0\x8d]\x1f\xa4\xeb\xbaq\xa5]\xdf\x89\xaf\xd3\xc1\
-\xd8P[\xd0\x5c\xa2%\xeb>\x10j\x13G\xff\xeb\x0c\
-\xd3\xf7\x16\x0bg\xad1c\xe1'\x0f\xef\x02\x89\xb8\x10\
-k\xee\x9d\xbc_\xe7\xff\x8dZ\xcf\x8a\xdc\x08\xf2q!\
-.\x96S1r\x7f\xdc\x0c\xf2\x91y\xe9\xd9l\xf6x\
-;aO\xe1\xd4l\x07H\x91\x04Lk\xad\xf5\xf4\xd1\
-H\xab?u3\x87o{\x1b\x80T\x8d9\xb8\xae\xf7\
-\x00\xa9\x1a{\xd5b\x04 \xe1\xd5\xff\x8e>[\x80\x9c\
-\xc4\x12\xdcdT\x00\xa9\xba\xe0\xbb\xfb\x8a\x11\x80\xbc\x8a\
-p\xc7\xe7\x00\x90\xaaa\x9b(F\x04\x81\x84\xd7\xf5\x19\
- U\xc34P\x8c\xfc\xfa)\x08$\xfc\x88\xdc\xf6\x00\
-\x0fA \x11O\x9f\x8d\xf2=$\x81\x84\xd7u\xd9\xc5\
-\xc8\xaf\x9f?\x84\x81\x84\xbb\xa2\x8dx\x0fQ \x11-\
-\xa9\x83t\x0fY \xe1\xc7\xfc\xadt\x0fa \xfa\xa9\
-\xc5\xc8\x7f\x1e\xc2@\xc2\x0f1;%\xdbC\x1aH\xef\
-\x9eX\x8c|\xf2\x90\x06\x12\xbey(\xb0\xe3\xe1\xb3\x87\
-8\x90\xf0\xcdCq\xc5\xc8\x1f\x1e\xf2@\xf4\xd3\x8a\x91\
-?=\xe4\x81D<\xc5\xdc\x0b\xf6\x10\x08\xf2\xac\x9b\x87\
-_=\x04\x82\x84\xd6u\xab%{H\x049\xddd\x5c\
-E\xcfWBA\xde\xde<t\xb28^y\x88\x04y\
-\xd3\x14\xe4\x8c\xb0\x84\xf7\x95\x87L\x90W\xeb\xfa1\xcb\
-\xae?D\x83|o\x0a:&q\xdf\xe1\xb5\x87P\x90\
-/\xeb\xba\x15x\xef\xf6\x8d\x87T\x90^j\x9e\x1b\xf2\
-\x90\x0a\xf2\xff\xcd\xc3Ud\xf3\xcf[\x0f\xb1 \x1fM\
-AN&\xc7\x89\x87X\x90n\x14\x98\xe7Fx\xc8\x05\
-\xe9\xd6Yj\xd3\xcf\x99\x87`\x10\xb1q\xea\x01\x10f\
-\x1e\x00a\xe6\x01\x10f\x1e\x00a\xe6\x01\x10f\x1e\x00\
-a\xe6\x01\x10f\x1e\x00a\xe6\x01\x10f\x1e\x00a\xe6\
-\x01\x10f\x1e\x00a\xe6\x01\x10f\x1e\x00a\xe6\x01\x10\
-f\x1e\x00a\xe6\x01\x10f\x1e\x00a\xe6\x01\x10f\x1e\
-\x00a\xe6\x01\x10f\x1e\x00a\xe6\x01\x10f\x1e\x00a\
-\xe6\x01\x10f\x1e\x00a\xe6\x01\x10f\x1e\xff\x00/\xf5\
-\x9c\xae\x85\xeb4\xef\x00\x00\x00\x00IEND\xaeB\
-`\x82\
-\x00\x00\x10;\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x02X\x00\x00\x01\xb9\x08\x03\x00\x00\x00eH\xbaT\
-\x00\x00\x00?PLTE\x00\x00\x00A\xcdRA\xcd\
-RA\xcdRA\xcdRM\xd0]Y\xd3he\xd6r\
-q\xda}|\xdd\x88\x88\xe0\x93\x94\xe3\x9e\xa0\xe6\xa9\xac\
-\xe9\xb3\xb8\xec\xbe\xc4\xef\xc9\xd0\xf3\xd4\xdb\xf6\xdf\xe7\xf9\
-\xe9\xf3\xfc\xf4\xff\xff\xff=\xe2\xeb\x0e\x00\x00\x00\x04t\
-RNS\x00\x10\x9f\xcfR\xb7\x8c\x1e\x00\x00\x0f\xa7I\
-DATx\xda\xed\xdd\xd9b\xdb\xb8\x12E\xd1\xdcn\
-S\x9c\xc0\x99\xff\xff\xad7v\x86\xce`[*\x12\x07\
-(\x88\xfb<\xe6\xc5\x08\xb5\x04\x14\x8a \xf5\xe5K\xf4\
-\xfc\xf3B.\x9f/\xb8\x22e\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15Q\xc0\xc2\x15\
-Q\xc0\xc2\x15Q\xc0z\x16W\xb7\xa6\xe9C\x18\xe6\xd7\
-l\xfb\xcflo\xff0\x86\x10\x9a\xa6\xe6CO\x07\xeb\
-\x9f\xf2A\xf5a\x9e\xf7\x073\xcf_\x85\xdd\xf8\xf0\xe5\
-\xb0\x8av\xd5\xf4\xe3\xc3\xa2~\xcf2\x85\xa6\x82\x80\x0e\
-V\xb1\xaen\xdd\xb8\xec'\xb3N=\x8b\xa3\x06\xd6?\
-\xa5\xa2Z\xf7H\xd9\xa6\x9e\x851:\xac\x12]\xd5\xc3\
-\xb2G\xce:\xb4h\x88\x0a\xab@U\xeb.\xc96b\
-\xeb\xb2\xb0nA\xa4\xea\xbb\xad\x81\x82\xeb\x8a\xb0\xdai\
-\x97g\xe9Pq-XU\xbf\xeeI\xb2\x05\x9a\x10\xd7\
-\x81U\x85mO\x97\x91]\xe25`\xa5e\x05\xad\xab\
-\xc0J\xce\xea5,\x88\xcf\x0e\xab]\xf7,\xd9(\xe3\
-\x9f\x19\xd6m\xde\xb3e\xa1\xf9\xf0\xb4\xb0\xc2\x9e5A\
-\xfb\xbf{x\x1c\x0d\xb0\xa2\xa6^\xf6\xcc\xd1NZ\xc0\
-\xca\x93~\xdb\xf3\xa7\x07\xd6\x93\xc1\xaa\xa6\xddE\xa6\x0a\
-X\xcf\x04+\xff2\xf8\xf3\xe4C\x0d\xac\xe7\x81\xd5n\
-\xbb\x9bl-\xb0\x9e\x05V\xb7\xbbJ\x07\xac\xe7\x805\
-\xec\xce2\x00\xeb\x19`\x8d\xbb\xbb\x8c\xc0*\x1f\x96C\
-W\x1aY\xc0\xc2\x95D\x16\xb0p%i\x95\x02+e\
-\xbb}w\x9b\x0eX\xe5\xc2\xeav\xc7i\x80U*\xac\
-\xda\xb3\xab}\xbb\x01\xabLX\xd5\xe6\x1a\xd6\xbeT\xc0\
-*\x12\xd6\xbc;\xcf\x08\xac\x12a\x85\xdd}Z`\x95\
-\x07\xab\xf1\xef*n\x99\x05\xac4\x05\xd6Z\x00\xac}\
-\x06Vi\xb0\x86\xbd\x88\xf4\xc0*\x0bVS\x86\xab\x98\
-\x8b!\xb0\xcaZ\x08\x97y\x0a!\xb4\xcd\x8f\x84\xb7\x17\
-\xde:\x5c\x0c\x81U\xca\x8ep\x1e\xfaO\xde+\xdat\
-a\x8e\xd1(k\x81U\x0e\xac\xdb\xf9\x87\x1e\xfa\x87.\
-\x7f\x84\x97L\xae\x15\xb0\x8a\x81un\xa52\xbe\x8d\xaf\
-\xee\xcf=\xa9\x11\x80U\x0a\xacS\x95\xfbt`m\xaa\
-\x873\x8b\xe2\x0dX\x85\xc0:>\x83l\xe1\xe8\xa7\xdc\
-\x1d_\x12G`\x95\x01\xab;\xce\xeaL\xbd\xd3,y\
-\xa7,`\xa9st\xee8\xfd\x12\xab\xa3\xb3\xd6\x0c\xac\
-\x12`\x1d\x9c\xb0\xe6\x08\xf3Fu\xb0\xcd\xd1\x00\xab\x00\
-X\x87\xa6\x8d-\xd2\xbd\x95c\xcf\xf2O\xc0\xf2\x0f\xeb\
-\xd0\x84\xb5D\xbb\xb3R\x8d\xb9\xaa,`\xf9\x9b\xb0\xc6\
-\xdc\xb2G`y\x87\xd5\xe6\x7f`\xa6\xde\xb2LY\xc0\
-\x92f\xce\xee\xea\x90\xac\x00,\xdf\xb0j\x07\xae\x8e\xc8\
-\xda*`\xb9\x865zpuDV\x07,\xcf\xb0*\
-\x1f\xae\x0e\xcc\x9c\x0b\xb0<\xc32?R?\xa8Fb\
-\xde\x1b\xd6\xc0r\x0c\xcb\xdak\x98uC\x19Sw\x1c\
-\x80\xe5\xa7t\xdf\x84?qS\x19{\xf0\x1b\xb0\xfc\xc2\
-\xb2\xce\x12\xad'\xe5\x1d\xb0\xdc\xc2\xda\x12\xaf>\x9f\xc7\
-xGz\x02\x96WX\xad\x9f\x85\xf0m14V|\
-\x15\xb0\x9c\xc2\x1a]t\x1a\x0eC\xef\x80\xe5\x14\x96m\
-%\x5c\xf5\x03\x9aS\xae\x85\xc0r2A\xb4\xfa\x115\
-)\xd7B`\xf9X\x09\x97\x14C\x9a\x13\xae\x85\xc0\xf2\
-\xb1\x12&\xf9-\xdd&\xe1Z\x08,\x17\x1f\xe2\x9af\
-P\xa6)k\x03\x96GX\x83\xbf\x09\xcbz\xcb\xb0\x01\
-\x96CX\xab\xa7\x1e\xd6\xb1Q\x0d\xc0\xf2\x07\xcb\xf6\x22\
-\x901\xd5\xb0B\xb2\x0d\x05\xb0<,:\xb5O\xefw\
-\x8e\xbe7\x9f\xe5\xe1?\xd27\xf6\xdc\xae\x0bkr\xd7\
-k8P\xbew\x91&\xa5\xe8\x09\xd7\x85ej6\xf4\
-Ng\xd2\x11X\xde`\xd9\x0e\xa9T\xe9\x06f:-\
-\xbd\x02\xcb\x1b,\xd3\xa1\xe4)\xe5\xc8\xa6xE\x16\xb0\
-\x9c\x97X]\xca\x91u\xf1F\x06,\xe7%V\xd2=\
-\x8ei-\x1c\x80\xe5\x0b\x96\xa9\xc4Z\xd2\x8em\x8e6\
-4`\xf9\xeeb%\xbeJ\xa6\xf2\x0fX\xbe`\x99\x8e\
-\xcc\xd4\x8eg\xd3\x06X\xae`Y\x9e\xb5\xdaR\x0f\xce\
-R\xff\xf5\xc0r\x05\xcbm\xb3\xc1\xbac\x1d\x81\xe5\x09\
-\x96\xe9,V\x9fzt}\xac\xea\x1dX\xae\xdb\xa3u\
-\xea\xd1\xd5\xb1\xaaw`y\xae\xdd\xb7\xf4\xc3\xdb\x22U\
-\xef\xc0J\x9d\xd9s\x89e\x1b^\x0f,G\xb0\x9c_\
-#\xcbi\xbf\x01X~`\xc5\xeb\x14\xe5\xdf[\xcc\xc0\
-\xf2\x03\xcb\xf4\xa8j\x95~|U\xa4\x12\x10X\x8e\x97\
-\x9a5\xc7\x00\xd78\xf0\x81\xe5\xb8\x039\xe5\x18\xe0\x1c\
-g\xa9\x06\x96\xe3\xcf-x\x9fR;`\xb9\x81\xe5\xbc\
-v\xb7\x15\x81\x01X^`\x99\x8e\xd2ey\x90\xa9\x8e\
-\xb3V\x03\xcb\xefn~w?\xa7\xce\xc0\xf2\x02\xab\x8b\
-\xf3\xb1)\xb3D\xa1\x0f,\xbf\xa5\xf1\x98g\x88\x96\xed\
-E\x05,'\xb0&\xffW\xc8b\xbf\x01\x96\x13X\x96\
-\xe9\xa0\xcd3\xc4\x1eX\x05\xc2\x8au*\xc5\xc9\xfe\x22\
-\x00\xcb\x09,\xe7w\x0a\xad\xfd\x06`9\x81ezS\
-P\x01=\xdc\x19X>`Y\x96\x99%\xd7\xc5\xd9\x80\
-U\x1c\xac6\xcal\xe0g\x83\xb1\x02\xcb\x07\xacX\xe7\
-3\xdd\xec\x5c\x81U\x1e\xacl\x17(\x00\xab8X\x96\
-Gt\xfa\x12`}\xf8|Z\xf8$\x8f_\x05\xdeA\
-*Xe\xb2\xbd1\xb8W\x0f\xb2\xf1\x7f\x0d\x80\x95y\
-\xeb\x0a,\x1f\xb0,\x8d\xf7\xaa\x04X\x01X.`\x95\
-\xd0\x1f5uq\x81\x05,\xc9(\x81\xe5\x02\x96e.\
-X\x8a\x805\x02\xcb\x03\xacX\x8f\x19\xfb\xa9\x04g`\
-\x01K\xb1w\x05Vq\xb0&`\x01\xeb\xd1t\xea\xb2\
-89\xac\x15X\x1e`\x852`M\xe2\xbd+\xb0.\
-\x0a+\x00\x0bX\xc0\x02\x96\xed\x13k\x81\x05\xacGc\
-95\xd3\x94\x01\xab\x02\x96\x03X\xf3\xf3\xc1j\x80\x05\
-\xacG\xd3\x02\x0bX\x8a4\xc0\x02\x16\xb0\x80\x05,`\
-9\x80\xf5\x02,`\x01\x0bXYa-\xc0\x02\x96\x22\
-;\xb0\x80\x05,\xd9\x9d'`\x01Kr\xaf\x1cX\xc0\
-\x02\x16\xb0\x80\x05,\xe7\xb0j`\x01+\xf78\x81\x05\
-,`\x01\x8b\xa5\x10X\x14\xef\xc0\x02\x16\xb0\x80U\x08\
-\xac\x1eX\xc0R\xc0\xe2^!\xb0\x80\xf5\xb4\xb08\x8f\
-\x05,`\x01\xeb9a\xdd\x80\x05,\x05,\x1e\xa6\x00\
-\x16\xb0\x80\x05,`\x01\x0bX\xc0z*XQ~\xa5\
-\x09X\x09\xf3\x84\xaf1z\x01\x96\x03X\x96O\xac\x03\
-\x16\xb0\x14\x9f\x18\xaf\x8a\x04\x16\xb0\x80\x05\xac\x07\xc2\xeb\
-\xb8K\x83\xf5|? \xb0\x00\xcb\x03,~K\x07X\
-\xc0\x02\x16\xb0\x22\x87\x9f\x95+\x0d\x96\xe5\x870\xd7|\
-W\xc70\xca\x01X\x1e`\xf1\xd3\xbd\xc0\xba0\xac\x0a\
-X\xc5\xc12T/\xf9\x8e\x90\xaa\x9f\xfe\x02V\xd6\xfd\
-V\xbe\x8b\xaa>5\x03\xac\x8b\xc2\xea\x80U\x1c\xacQ\
-\xbd\xca\xc4HP\xaf\xd7\xc0\xca\xfa\x99\x85\x12`\xbd\x00\
-\xab8Xc\xae\x8b3\x03\xab8X\x96\x1fl\x9b\x0b\
-\x80\xb5\x00\xcb\x07,\xcb\x86k\xc9uq\xd4wt\x80\
-\x15?\x96{:\xd9:\xa4\x86!N\xc0\xf2\x01\xcb\xd4\
-z\xaf\xf2\x0c\xb1\x96o0\x80\x95u\x99\xc9uU\xe5\
-\x8dw`e\xdeqezN\xa7\x97\xdb\x07V\xfcL\
-\xfe\x1bY\x01X\x05\xc2\x0a\xf2\xca\xd8\x7f\x1b\x0bX\x82\
-t\xfe\xfb\x0d\x86_\xeb\xdc\x80\xe5\x05V\xe3\xbf\xdf\xa0\
-\xef\xe1\x02+~,\x87\xe8\x0e\xbdp#i\xb7a\x02\
-\x96\x17X\xa6FV\x9bc\x80\xad~{\x01\xac\xcc\xa5\
-q\x96ma\xd0\xcb\x07V\xe6~\xc3\xec]~\x03,\
-7\xb0,\x13\xc2\x96c\x80\xab~w\x01\xac\xcc%L\
-\x8e\xe7),\xbb\x8b\x15X~`\xd5\xce\xab\xf7\x14\x0f\
-k\x03+\xf7\xb6pH?\xbc\x14\x87\xa7\x81\x95\xbb8\
-\x9e}\x0f\xaf\x05\x96#X\x96\x07u2\xf4\xde-\xe7\
-zj`9\x82e9\x95\x92\xfe\xc2\xd6)\xd8\x03+\
-wu\x9c\xbeE\xda\xa7X\xa8\x81\x95\xbdzO~\xc0\
-aJ\xb1\xb5\x00\x96$\x8bEV\xeas\xef\x96\x12\xab\
-\x03\x96+X\x83\xe3N\x96i\x9d\xae\x81\xe5\x0a\x96\xe5\
-\xac_\xea\xc7\xa1-\xe8\xb7\x04|\x03\xb0\x1e\x8f\xe9\xd9\
-\xc2\xc4\xb7\x0b-\xcb\xf4\x04,_\xb0L\xb7y\xd3\xae\
-\x85\xb74;V`\xe5\xdfy\xa5]\x0b\x13\xf5\xd8\x80\
-\xe5\xe0\xe3K\xba\x16\x9a6\xac\xc7\xffL\x05,IL\
-\xdd\xed\x94k\xa1i%<s\x1f\x13X\x0e\x8a\xac\x84\
-O\x17ZN6\x9cz\xe1\xa0\xe7\xe3\x1d%\xc32\xdd\
-\x87Nx\xdaoM\xd2\xc5\xb2\xc0\x9a\x81%\xebd\xa5\
-[\x0e\xdad\xb5\x1f\xb041=\x5c\x98\xee\xb7O\xd2\
-\xedV\x81\xe5a\xf7\x95\xea\xad3\xb7t\x83\xf2\xfd8\
-I\xc1\xb0\x82\xc7)\xcbV\xf9\x9d\xba;\xbe&\xe8i\
-\x5c\x12\x96\xad\xe1\x90f\xca\xb2MX\xe7\xf6\xaa3\xb0\
-<\xec\xbf\xd2LY\xb6\x09\xabO\x04\xab\x01\x96)\x83\
-\xbb)\xcb6a\x9d\xec\x81\x00\xcb\xc9Z\xb8\xe9\xcf\xfb\
-\x99\xb6\x84gO\xb6\x8e\x89f\xc6\xeb\xc12\xae\x85\xfa\
-\x0et\x93t\x0a}|\xf3\x12\x80%]\x0b\xd5KB\
-e\x84^\xa5\x825\x03K\xba\x16\xeek\xe5\xc9\xf9\xd9\
-\xb3<\xbd\xb7V\xcb\xf3\xc02\xf6H\xc5\xf7\xa2[\xe3\
-`\xce\x9e\xb8h\x92\xcd\x8d\xd7\x83\xd5\x1b?Ke\x19\
-[o{\xda\xf6G\x93\xce\xf0\xe5`UVX\xba\x9e\
-C\xb5\xa46^9\xda\xb6<\x1b,cC\xf2\xecA\
-\x95\x98\xae\x22,O\x8e\x1f\xd9-\x1eVc\x86\xb5\xd5\
->\x5cE8\x86o\xd8\x84\xde\x80\xa5me\xbd\xcaj\
-=\xb8\x8a\xf1Q\xcf.j\xcb'\x85\xd5\xed{\xfe:\
-\xebfw\x15c\x7f:\xecO\xdap\xf0\x00\xebe;\
- +\xf2\xd3`\xcd\x811\xc4\xe8\xd5\x86\xfdI\xa7,\
-\x17\xb0\xc2\x01X\xfbr\xcb<\x82(\xbd\xf0&{i\
-\xf9\xcc\xb0\xaa#S\xd6\xbeE\xfb\x06\xd7\xcb\x91\xbf\x1f\
-\xe5\xe6R\xbd?\xa9,\x17\xb0\x8eMY_\xe7\x8c(\
-\x9fmu\xec\xafG\xbayg\xfb.5\xc0J0e\
-\xbdVZ\xe7\xd7\xc3n=\xf6\xa7#\xad\xc4\xb3q\xc3\
-p\x03V\x82)\xeb<\xad\xa3\xac\xa2m\x1e\xcc\xed\xe1\
-\xb9\xbb\xff?n\xdeR\x01\xeb\xf8\x94\xf5\xfa%>\xdc\
-\xd4\xba\x85\xa3\xac\xe2\x9d8\xec\x0f\xfc\xf1u\x0a]\xf3\
-3\xe1-\xd3\xfc\x9a\xc5\xcd\xa1S'\xb0NLY\xaf\
-\x17z80mU\xddt\xe2OF;w\xd7\xec\xb2\
-\x00\xeb\xc5~\xc0\xeeo[\xa6\xcbx;\xa5*\xea\x8d\
-;`i\xd3\x9d\xbe\x8e\xdb\x14\x1e*+\xean\x5c\x1d\
-}f\xb3\x0cV\x0f\xacx\x17\xf8\xad\xfc\xa8>\xaci\
-\xc3\x18\xe5\xcf\xc4<\xc2\x12d\xb0\x02\xb0\xcc\xad\xc2\xbb\
-\xb3\xd7\xd7B6\xfc\x92\xe9\x8f\xba\xf6\xa4\xde\x98\xfb\xad\
-\x06X\x9e\xeb\xf7\xa4\x89[\xbc\x00\xcby\xfd\x9e,\x91\
-?\xb0I5\xce\x01X\xf2\x9dw\xcc\xc4>\xca\xd9\xa9\
-\x06:\x03\xab\xa4\xc5p\x8b}S\xe5\x06,y\x96\xcb\
-\x15X\xca\xff5\xb0\xfe\xfb\xf2n\xee]\x09\x9aC\x1d\
-\xb0\xe4i\xbd\xbbR\xfc\x8cA\xa5Z\xb4\x81UL\x99\
-\xa5\x99\x04F\xd1h\x81\x95\xe0\x22\xc7\xd9\x10jN\xa2\
-4\xc0J\xd0\xcdZ.\xe7Jv\xbf\x10Xe\xc8\x92\
-\xb9RMY\x15\xb0J\x90\xb5\x08?'\xcd\x94\xd5\x00\
-\xab\x00YJW\xa2)\x0bX\x05\xc8Z\xb4\xeb\xca\x04\
-\xack\xcaR\xff\x0c\xa7\xa45\x0c\xac\xbfe9\xeb:\
-\xe8O\xa0(\xda\xef=\xb0|wJ\xb7\x14o\xd3\x1b\
-K\xfc:\x14\x08\xeb\xa5us\xdfpI\xf2d\xbb`\
-\xf9\x07\xd6\xbb\xa9\x9d\x14ZC\xa2vP|Y\xc0\xfa\
- \xc3U\x96A\x91\xac\x01X\x1f\xb5w\xf2\x9fVN\
-\xf9\xad\x8f-k\x06\xd6\x87\x97:\xff\xa4\x95\xf2-\x1c\
-\xd5\x04\xacd\x95\xd6\x9c\x19V\xdaO'\x00+Y\xba\
-\xcc\xeba\xda7\xf7\xc7\xdc\xb2\x00\xeb\xde\xd78k\xe7\
-aK|H\xa0\x8f\xf6\xbf\xdd\x80u\xaf\xf6\xc8Jk\
-(\xf6\x7f\x0b\xac\xfb\x17;\xe7\x82\xd8\xa4\xff\x22\xad\xc0\
-J\xd7\x8a\xcfV\xc6\xe7\xf8\xb5\x91\x93\xefY\xda\x97\xb1\
-o8\xe8\xf7`nC\xa6\x151\xe4\x99\xa4\x8f\xd9Z\
-\xe7\xd0\xe6\x7f\xbdrQ\xb0^\xa7\xad1\x87\xad-\xd7\
-+e\x9b`\x99\xa6\xe7)\xb4^\xde\xab\x5c\x1a\xacL\
-\xb6rn\xdc\xeb.\xdcy\x07\xd3:\xbf\xbe\x15\xcc\xd7\
-\xfb\x94\x0b\x84\xf5\xfaE\x1eR\xdf\xa0\xce\xfe3\x94\xd5\
-\xdb[l\xbf\xbd\xc2\xf6G\xc6\x10\xfa\xcc/G~2\
-X\xaf\x17\xbaM\x8ak\xad^\xc8%`}\xfb\x16\x87\
-)U\x17b\xc0\xcau`}_\x17\xfb0\x1by-\
-\x83\xbduQ\x83\xe5b\xb0\xbe\xb7\x22\x9a.\x0c\xf3\xbc\
-\xdd\xdd\x8b\x8fo\xefV\xae\x8bhf\x01\xcb\x17\xb1\xaf\
-\xe9\xc3\x1f\xf9Z\xe56\xbfN:\xf6\xf38=Z\xae\
-\x0d\xeb\xc1\xfal+\xa6\x99\x05\xac\xa2b\x7f\xdej\x82\
-\x0b\xb0\x1e\xc8\x5c^3\x0bXE\xd4b4\xb3\x80%\
-I\xa0\x99\x05,I\xfd\xbe\xd2\xcc\x02\x96\x22mQ7\
-\xa3\x81\xf5\xcc\xf5;\xcd,`=R\xbf\xdb\x9bY\xd4\
-\xef\xc0\x92\xd4\xef4\xb3\x80\xf5H\xec\xf5{\x03\x1a`\
-\xddOC3\x0bX\x92\xd8\x1fX\x08\xa8\xb9\x9f\x7f/\
-\x0f\xeb\xc0\xcb?if\xddw\xf5\xbf\xcb\xc3z\xe9i\
-fI\x5c]\x1e\xd6\x81\x9f\x0b\xec\xa0s\xdf\x15\xb0\xec\
-\xf5;\xcd\xac\x07\x5c\x01\xeb\xc0\xfb\x8aG.\xda]W\
-\xc0:p\x98\x94f\xd6}W\xc0:R\xbf\xaf\x5c\xb4\
-{\xae\x80\xf5r\xe4f4\xcd\xac{\xae\x80\xf5r\xe4\
-a\xb0\x9d'+\xee\xb8\x02\xd6k\x06\x9aY\xb1]\x01\
-\xeb`\xfdN3\xebsW\xc0zKG3+\xb2+\
-`\x1d\xad\xdfy\xb2\xe2SW\xc0\xfa\x16\xfb\xc3`4\
-\xb3>u\x05\xac\xef\xb1\x1f&\xe55!\x9f\xb9\x02\xd6\
-\x8f\xfa}\xa5\x99\x15\xd3\x15\xb0~\xc4\xfe0\x18\xaf\x09\
-\xf9\xc4\x15\xb0N\xd4\xef4\xb3>v\x05\xac\xff\xeaw\
-{3\x8b\xd7\x84|\xe8\x0aXg\xeaw\x9aY\x1f\xba\
-\x02\xd6/YifEs\x05\xac_b?L\xca\xf3\
-\xab\x1f\xb9\x02\xd6\xaf1>\x0c6\xb2-\xfc\xd0\x15\xb0\
-\x8e\xd6\xef\xdb\x00\xabO\x5c\x01\xeb\xb7<|\x98t\x0b\
-\xd4\xed\x9f\xba\x02\xd6\xefy\xeca\xb0\xb5\x83\xd5\x1dW\
-\xc0\xb2\xd7\xef+g\xb1\xee\xbb\x02\xd6\x1f\xb9\xfb0\xd8\
-\xcc\xa9\x86G\x5c\x01\xeb\x8f\xdc9L:\xc1\xea1W\
-\xc0\xb2\xd4\xef\xf4\x17\x1ev\x05\xac\xbf2\xd3_\x88\xe0\
-\x0aX\x7f\xa5\xa6\xbf\x10\xc1\x15\xb0\xfe\xce@\x7f\xe1\xbc\
-+`=P\xbf\xd3_\xb0\xbb\x02\xd6;\xe9\xe8/\x9c\
-v\x05\xac;\xf5;\xfd\x85c\xae\x80\xf5^n\xf4\x17\
-\xce\xba\x02\xd6\xbb\x09\xf4\x17N\xba\x02\xd6\xfb\xf5\xfbJ\
-\x7f\xe1\x9c+`\xbd\x9f\x96\xfe\xc29W\xc0\x22\x12W\
-\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\
-\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\
-\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\
-\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\
-\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\
-\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\
-\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\
-\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\
-\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\
-\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\xc0\x22\x12W\
-\xc0\x22\x12W\xff\x07\xd4\xfa\xa4\xe6\x83\xa4\x94\xc0\x00\x00\
-\x00\x00IEND\xaeB`\x82\
-\x00\x00\x01\x0a\
-[\
-Icon Theme]\x0aName\
-=Gallery\x0aComment\
-=Qt Quick Contro\
-ls 2 Gallery Exa\
-mple Icon Theme\x0a\
-\x0aDirectories=20x\
-20,20x20@2,20x20\
-@3,20x20@4\x0a\x0a[20x\
-20]\x0aSize=20\x0aType\
-=Fixed\x0a\x0a[20x20@2\
-]\x0aSize=20\x0aScale=\
-2\x0aType=Fixed\x0a\x0a[2\
-0x20@3]\x0aSize=20\x0a\
-Scale=3\x0aType=Fix\
-ed\x0a\x0a[20x20@4]\x0aSi\
-ze=20\x0aScale=4\x0aTy\
-pe=Fixed\x0a\
-\x00\x00\x00\x83\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00P\x00\x00\x00P\x02\x03\x00\x00\x00\xf3\x7f\x1a>\
-\x00\x00\x00\x09PLTE\x00\x00\x00\xff\xff\xff\x00\x00\
-\x00s\xc6\x83q\x00\x00\x00\x02tRNS\x00\x00v\
-\x93\xcd8\x00\x00\x00'IDAT8\xcbc\x08\xc5\
-\x02\x18F\x8a\xe0*\x0c08\x05\x190\xc0\xa8 %\
-\x82\xa3\xf1>\x1a\xef\x839\xdeGn\x99\x0c\x00\xaa\xfe\
-\xe3\x80<\x1b\xa3\xfb\x00\x00\x00\x00IEND\xaeB\
-`\x82\
-\x00\x00\x00\xdf\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00P\x00\x00\x00P\x04\x03\x00\x00\x00|?\xef\x9e\
-\x00\x00\x00\x18PLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
-\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\
-G\xb0\x1c\xf2\x00\x00\x00\x07tRNS\x00\x00 `\
-\xbf\xcf\xef\x1dV\xbf\x1a\x00\x00\x00oIDATH\
-\xc7c\x10$\x120\x0c\x22\x85\x0c\x0c&\xe5\xe5\xce\x0c\
-\x0c\x84\x15\xaa\x96\x03A\x10a\x85L\xe9 \x85e\x0a\
-\x04\x15\xb2\x96\x83A\x00A\x85\xe6\x10\x85\xc5\x04\x15\xba\
-C\x14\x96\x10TX\x0e\x05\x83Y!\xd1\x9e!:x\
-\x88\x0ep\xa2\xa3\x90\xe8DA|2\x83\x82Q\x85#\
-A\xe1h\xd93Z\xf6\x8c\x96=\xa3\x0aG\xcb\x9e\xd1\
-\xb2gd\x97=\x83\xb0\xaf\x00\x00G\x10>\xf2\xcfQ\
-\xf1\x00\x00\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x00\xf6\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00P\x00\x00\x00P\x04\x03\x00\x00\x00|?\xef\x9e\
-\x00\x00\x00\x1bPLTE\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x94Q\xe2 \x00\x00\x00\x09tRNS\x00\
-1267\xe8\xe9\xeb\xfa\x91\xc7O\xc2\x00\x00\x00\x81\
-IDATH\xc7\xed\xd6\xb1\x0d\x800\x0cDQ\x93\
-\xcc\x90\x15R#Q\xd0\xb2\x05l\x00=\x14\xd9 7\
-6#\xf0\x0b\x22\x82d\xd7\xa7gW\xd6\x99\xfd{&\
-\x98\x0b\xfb\xc2\x82Y\x17\xca\xc5\xa2:2P\x88\x0c\x87\
-\xa4\xba0\x90\xec\x0e\x87$\x9d\xcf\xe0\xfc6\x98\x1dt\
-\xd0\xc1\x9e\xc1X\xbe\x02\x87M\xf0#&\xc1\x8f\x88w\
-s\xb2\xc1\x95N:\xe9d{\x92\xd6\x99fW\xa2^\
-\x98\xe0\xc7\xe2E\xd3\x12\x03\xcd\x86\x95\x81\xbc^w3\
-7\xa7\xd5\xc3\xb4x\xa1\x14\xf6\x00\x00\x00\x00IEN\
-D\xaeB`\x82\
-\x00\x00\x00{\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x14\x00\x00\x00\x14\x08\x06\x00\x00\x00\x8d\x89\x1d\x0d\
-\x00\x00\x00BIDATx\xda\xec\x94\xc1\x0d\x000\
-\x08\x02\x8f\xc6\xfdW\xc6\x1d\x1a|)\x03\x10\xf0\x0c\xb2\
-MR\x8f\xb0\xe2\x86\x05 )\xd2\xdb\xb6f\x12\x02\xda\
-\x03e\xec\x86\xa9\xef>\xcaG\xf9\xcbq\xdf\xc06\x00\
-\x00\x00\xff\xff\x03\x00\xf7\x83\x0c-\xe7\xf9\xf9<\x00\x00\
-\x00\x00IEND\xaeB`\x82\
-\x00\x00\x00{\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x14\x00\x00\x00\x14\x02\x03\x00\x00\x00\xf0\xe7\xf5\x9e\
-\x00\x00\x00\x0cPLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
-\x1f\x22\x1f\x1f\x13\xee\x05I\x00\x00\x00\x03tRNS\
-\x00\x00\x80\x17\xceG\xfe\x00\x00\x00\x1bIDAT\x08\
-[c\x08\x05\x01\x86\xd0\xd0}`\xf2?\x12\x09\x11\xc1\
-D\x94\xab\x04\x02\x00\xd4P%\xa9\xa8Z\xf7\x1d\x00\x00\
-\x00\x00IEND\xaeB`\x82\
-\x00\x00\x00\x92\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x14\x00\x00\x00\x14\x08\x06\x00\x00\x00\x8d\x89\x1d\x0d\
-\x00\x00\x00YIDAT8\x8d\xed\xd4\xb1\x09\x80@\
-\x0c\x05\xd0\x87\x16\x8e\xe4\xa6\xda\x0a\xeeegw\x13X\
-\xd9Z\x08\xe2%bs\xbf\xcfKB $\xa7\xaf\xac\
-\x99P\xb0g\x0c\xb0\xe2\xc0\x86!\x0b+\x18\xa3\xd8\xd2\
-\xb0\x7f\xb1\xeakv\x91\xceo\x92\xbarC\xbfE\xd3\
-\x9e\xc3\x1d\x1a~_Wt\x964\xe1cN\x85\xa7,\
-\x143\xcaZ\x14\x00\x00\x00\x00IEND\xaeB`\
-\x82\
-\x00\x00\x00~\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00(\x00\x00\x00(\x02\x03\x00\x00\x00\xf1\x90P\xfe\
-\x00\x00\x00\x09PLTE\x00\x00\x00\xff\xff\xff\x00\x00\
-\x00s\xc6\x83q\x00\x00\x00\x02tRNS\x00\x00v\
-\x93\xcd8\x00\x00\x00\x22IDAT\x18\x95c\x08\x85\
-\x03\x062\x99Q\xab\xa0`)af\x00\x03\x14\xb0R\
-\x979\xd4\xdc@q\xa8\x03\x00\xea\x17x\xdd\x86\xef\x87\
-\xad\x00\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x00\x9e\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00(\x00\x00\x00(\x04\x03\x00\x00\x00~\xd0\xa5^\
-\x00\x00\x00\x0fPLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
-\x1f\x22\x1f\x1f\x22\x1f\x1f\xc1T\xc5\x91\x00\x00\x00\x04t\
-RNS\x00\x00P\xdf\x1fD\xf4\x8b\x00\x00\x00:I\
-DAT(\xcfc\x10\xc4\x02\x18\xf0\x0a2\x998+\
-`\x08\xaa\xb8\xb88a\x08\x9a\xb8\xb88c\x08\xba\x00\
-\x01q\x82X\xb5c\xb5\x08\xab\x93\x18\x80`\xe0\x04G\
-Ci8\x85\x12\xc1\xdc\x01\x00\xcb~A\x15\x05\x8a+\
-\xbc\x00\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x00\xb8\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00(\x00\x00\x00(\x04\x03\x00\x00\x00~\xd0\xa5^\
-\x00\x00\x00\x18PLTE\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-V7\x1c*\x00\x00\x00\x08tRNS\x00\x0b\x0e\x90\
-\xbc\xbd\xc2\xfa`jr\x94\x00\x00\x00GIDAT\
-(\xcfc` \x0f(+`\x8a1\xa5'a\x0a\x8a\
-\x96\x97a(e\x0c\xc7\x22\xa8V^\x9eD\x94B\xd1\
-\xe1\xa4\x10\x9b\xaf\x99\xd2\xb1\x85\x99;\x16A\xac\xdaq\
-(\x15\x19\x9eJI\x0a\x01,\x82X\x13-\xd6\xe4\x8d\
-\x17\x00\x00\xbe(.\x06\xf5\xa2\x90\xab\x00\x00\x00\x00I\
-END\xaeB`\x82\
-\x00\x00\x00\x82\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00<\x00\x00\x00<\x02\x03\x00\x00\x00G\x921\xe1\
-\x00\x00\x00\x09PLTE\x00\x00\x00\xff\xff\xff\x00\x00\
-\x00s\xc6\x83q\x00\x00\x00\x02tRNS\x00\x00v\
-\x93\xcd8\x00\x00\x00&IDAT(\xcfc\x08E\
-\x05\x0c\x03\xcd\x0f[\x85\x0c\xa6R\x9d\x1f\xc2\x80\x0cD\
-\x87\x1c\x7f4|\x066|\x06Y~\x01\x00\x0e\xe9\x0f\
-x\xb7\x12\x1d\x13\x00\x00\x00\x00IEND\xaeB`\
-\x82\
-\x00\x00\x00\xc1\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00<\x00\x00\x00<\x04\x03\x00\x00\x00\xc8\xd2\xc4A\
-\x00\x00\x00\x15PLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
-\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1fI:\x15\
-.\x00\x00\x00\x06tRNS\x00\x00 0\x9f\xef,\
-\x93$\x03\x00\x00\x00UIDAT8\xcbc\x10\xc4\
-\x0b\x18\xa8'\xcd\xa0\x12\x96\xea\xc4\x80S\x9a9,-\
--\xd5\x00\xa7\xb4j\x1a\x10\x04\xe1\x94v\x03I\xa7\xe0\
-\x94\x0e\x03I\xa7\xe2\x94N\x03\x03r\xa5\x09\x18N\xc0\
-i\x04<F X\x08\x04*\x03\x18\x8cJ\x8f&\xc5\
-\xd1\xa48\x9a\x14G\x93\x22m\xaa9\x00L\x0e\xa9W\
-\xb5\x91\xf7\x9e\x00\x00\x00\x00IEND\xaeB`\x82\
-\
-\x00\x00\x00\xe3\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00<\x00\x00\x00<\x04\x03\x00\x00\x00\xc8\xd2\xc4A\
-\x00\x00\x00$PLTE\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6X\x02G\
-\x00\x00\x00\x0ctRNS\x00\x1c\x1d\x1e=l|}\
-\xd8\xd9\xda\xfa\x85T\xfd\xb6\x00\x00\x00bIDAT\
-8\xcbc`\xa070\xc5+\xcb4\xbb\x00\x9f\xb4\xd5\
-\xeemx5\xef\xde]\x80O\xf3\xee\xdd[\xf0j\xde\
-\x9d\x80W\xf36r5k\x8ej\x1e\x11\x9a\xadh\xa7\
-\x99A\x02(\xbd\x1d\xb74c\xf7n\x82\x89\x7f\x1b\xf9\
-\xda)\xb4}T\xfb\x10\xd5Na\xb2\xc1_\xe4\x82\xb5\
-'\x90]\xdc\x03\xb5'PP\xd5P\x0d\x00\x00^\xe9\
-\x99\xeb`\xde0?\x00\x00\x00\x00IEND\xaeB\
-`\x82\
-"
-
-qt_resource_name = b"\
-\x00\x05\
-\x00o\xa6S\
-\x00i\
-\x00c\x00o\x00n\x00s\
-\x00\x06\
-\x07\x03}\xc3\
-\x00i\
-\x00m\x00a\x00g\x00e\x00s\
-\x00\x06\
-\x07\x84+\x02\
-\x00q\
-\x00m\x00l\x00d\x00i\x00r\
-\x00\x15\
-\x08\x1e\x16f\
-\x00q\
-\x00t\x00q\x00u\x00i\x00c\x00k\x00c\x00o\x00n\x00t\x00r\x00o\x00l\x00s\x002\x00.\
-\x00c\x00o\x00n\x00f\
-\x00\x05\
-\x00v}\xc3\
-\x00p\
-\x00a\x00g\x00e\x00s\
-\x00\x0b\
-\x083\x9c<\
-\x00T\
-\x00o\x00o\x00l\x00B\x00a\x00r\x00.\x00q\x00m\x00l\
-\x00\x0b\
-\x0cCR|\
-\x00g\
-\x00a\x00l\x00l\x00e\x00r\x00y\x00.\x00q\x00m\x00l\
-\x00\x09\
-\x08\xac\xef\x1c\
-\x00+\
-\x00M\x00a\x00t\x00e\x00r\x00i\x00a\x00l\
-\x00\x10\
-\x05\xb8\x16\x1c\
-\x00C\
-\x00o\x00m\x00b\x00o\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x10\
-\x00w\xb4\x5c\
-\x00D\
-\x00e\x00l\x00e\x00g\x00a\x00t\x00e\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x0c\
-\x0e\x8bV\xfc\
-\x00D\
-\x00i\x00a\x00l\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x0f\
-\x07\x87\xe7<\
-\x00S\
-\x00p\x00i\x00n\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x0d\
-\x0c\xc8%\xdc\
-\x00F\
-\x00r\x00a\x00m\x00e\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x15\
-\x02E\x02\xfc\
-\x00P\
-\x00a\x00g\x00e\x00I\x00n\x00d\x00i\x00c\x00a\x00t\x00o\x00r\x00P\x00a\x00g\x00e\
-\x00.\x00q\x00m\x00l\
-\x00\x0e\
-\x09\x09P|\
-\x00T\
-\x00a\x00b\x00B\x00a\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x15\
-\x0fE\xff\x5c\
-\x00B\
-\x00u\x00s\x00y\x00I\x00n\x00d\x00i\x00c\x00a\x00t\x00o\x00r\x00P\x00a\x00g\x00e\
-\x00.\x00q\x00m\x00l\
-\x00\x12\
-\x05P\x5c\x1c\
-\x00S\
-\x00c\x00r\x00o\x00l\x00l\x00a\x00b\x00l\x00e\x00P\x00a\x00g\x00e\x00.\x00q\x00m\
-\x00l\
-\x00\x13\
-\x0dr\xfb|\
-\x00P\
-\x00r\x00o\x00g\x00r\x00e\x00s\x00s\x00B\x00a\x00r\x00P\x00a\x00g\x00e\x00.\x00q\
-\x00m\x00l\
-\x00\x11\
-\x03$Q\x5c\
-\x00S\
-\x00w\x00i\x00p\x00e\x00V\x00i\x00e\x00w\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\
-\x00\x10\
-\x06\xd3\x8b\x1c\
-\x00T\
-\x00e\x00x\x00t\x00A\x00r\x00e\x00a\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x11\
-\x00\xa3\xff|\
-\x00S\
-\x00c\x00r\x00o\x00l\x00l\x00B\x00a\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\
-\x00\x0f\
-\x0b\xe33|\
-\x00T\
-\x00o\x00o\x00l\x00T\x00i\x00p\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x0e\
-\x02%\xd0|\
-\x00S\
-\x00l\x00i\x00d\x00e\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x0f\
-\x00\xf4\xb9\xfc\
-\x00T\
-\x00u\x00m\x00b\x00l\x00e\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x13\
-\x002\xb3\xbc\
-\x00R\
-\x00a\x00n\x00g\x00e\x00S\x00l\x00i\x00d\x00e\x00r\x00P\x00a\x00g\x00e\x00.\x00q\
-\x00m\x00l\
-\x00\x10\
-\x0fY+\x5c\
-\x00G\
-\x00r\x00o\x00u\x00p\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x13\
-\x0fN\x9e\x5c\
-\x00R\
-\x00a\x00d\x00i\x00o\x00B\x00u\x00t\x00t\x00o\x00n\x00P\x00a\x00g\x00e\x00.\x00q\
-\x00m\x00l\
-\x00\x17\
-\x0a>\xfa\x1c\
-\x00S\
-\x00c\x00r\x00o\x00l\x00l\x00I\x00n\x00d\x00i\x00c\x00a\x00t\x00o\x00r\x00P\x00a\
-\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x0e\
-\x08\xd2\xfe\x5c\
-\x00D\
-\x00i\x00a\x00l\x00o\x00g\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x0e\
-\x0e\xa2\x84\x9c\
-\x00B\
-\x00u\x00t\x00t\x00o\x00n\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x10\
-\x048\xf8\x1c\
-\x00C\
-\x00h\x00e\x00c\x00k\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x13\
-\x05\xac\xa6\xdc\
-\x00D\
-\x00e\x00l\x00a\x00y\x00B\x00u\x00t\x00t\x00o\x00n\x00P\x00a\x00g\x00e\x00.\x00q\
-\x00m\x00l\
-\x00\x0e\
-\x0b\xc5|\x5c\
-\x00S\
-\x00w\x00i\x00t\x00c\x00h\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\x00\x11\
-\x07%R|\
-\x00S\
-\x00t\x00a\x00c\x00k\x00V\x00i\x00e\x00w\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\
-\x00\x11\
-\x0fw<\xdc\
-\x00T\
-\x00e\x00x\x00t\x00F\x00i\x00e\x00l\x00d\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
-\
-\x00\x0d\
-\x02\x89\x8a\x07\
-\x00a\
-\x00r\x00r\x00o\x00w\x00s\x00@\x004\x00x\x00.\x00p\x00n\x00g\
-\x00\x09\
-\x09j\x86g\
-\x00a\
-\x00r\x00r\x00o\x00w\x00.\x00p\x00n\x00g\
-\x00\x0a\
-\x06\xebDg\
-\x00a\
-\x00r\x00r\x00o\x00w\x00s\x00.\x00p\x00n\x00g\
-\x00\x0b\
-\x05R\xbf'\
-\x00q\
-\x00t\x00-\x00l\x00o\x00g\x00o\x00.\x00p\x00n\x00g\
-\x00\x0c\
-\x0e\x88z'\
-\x00a\
-\x00r\x00r\x00o\x00w\x00@\x002\x00x\x00.\x00p\x00n\x00g\
-\x00\x0c\
-\x0e\xa8z'\
-\x00a\
-\x00r\x00r\x00o\x00w\x00@\x004\x00x\x00.\x00p\x00n\x00g\
-\x00\x0d\
-\x02\x99\x8a\x07\
-\x00a\
-\x00r\x00r\x00o\x00w\x00s\x00@\x003\x00x\x00.\x00p\x00n\x00g\
-\x00\x0c\
-\x0e\xb8z'\
-\x00a\
-\x00r\x00r\x00o\x00w\x00@\x003\x00x\x00.\x00p\x00n\x00g\
-\x00\x0e\
-\x0d=\xfd'\
-\x00q\
-\x00t\x00-\x00l\x00o\x00g\x00o\x00@\x004\x00x\x00.\x00p\x00n\x00g\
-\x00\x0d\
-\x02\xa9\x8a\x07\
-\x00a\
-\x00r\x00r\x00o\x00w\x00s\x00@\x002\x00x\x00.\x00p\x00n\x00g\
-\x00\x0e\
-\x0d\x1d\xfd'\
-\x00q\
-\x00t\x00-\x00l\x00o\x00g\x00o\x00@\x002\x00x\x00.\x00p\x00n\x00g\
-\x00\x0e\
-\x0d-\xfd'\
-\x00q\
-\x00t\x00-\x00l\x00o\x00g\x00o\x00@\x003\x00x\x00.\x00p\x00n\x00g\
-\x00\x07\
-\x0d\x83,Y\
-\x00g\
-\x00a\x00l\x00l\x00e\x00r\x00y\
-\x00\x07\
-\x05{TS\
-\x002\
-\x000\x00x\x002\x000\x00@\x003\
-\x00\x07\
-\x05{TR\
-\x002\
-\x000\x00x\x002\x000\x00@\x002\
-\x00\x05\
-\x005{P\
-\x002\
-\x000\x00x\x002\x000\
-\x00\x07\
-\x05{TT\
-\x002\
-\x000\x00x\x002\x000\x00@\x004\
-\x00\x0b\
-\x0b\xba\x81\xb5\
-\x00i\
-\x00n\x00d\x00e\x00x\x00.\x00t\x00h\x00e\x00m\x00e\
-\x00\x0a\
-\x0d\xc8&G\
-\x00d\
-\x00r\x00a\x00w\x00e\x00r\x00.\x00p\x00n\x00g\
-\x00\x08\
-\x0cXY'\
-\x00m\
-\x00e\x00n\x00u\x00.\x00p\x00n\x00g\
-\x00\x08\
-\x07\x9eZG\
-\x00b\
-\x00a\x00c\x00k\x00.\x00p\x00n\x00g\
-"
-
-qt_resource_struct = b"\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x08\x00\x00\x00\x01\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x001\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00d\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x16\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x10\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x0a\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x22\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01w\x86\xd1zT\
-\x00\x00\x004\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0f\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x00t\x00\x00\x00\x00\x00\x01\x00\x00\x00s\
-\x00\x00\x01w\x86\xd1zT\
-\x00\x00\x00\xac\x00\x02\x00\x00\x00\x01\x00\x00\x00\x09\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x90\x00\x01\x00\x00\x00\x01\x00\x00\x0a2\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x00t\x00\x00\x00\x00\x00\x01\x00\x00\x175\
-\x00\x00\x01w\x86\xd1zT\
-\x00\x00\x04\xe4\x00\x00\x00\x00\x00\x01\x00\x01u%\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x05\x8e\x00\x00\x00\x00\x00\x01\x00\x01\x86\xe8\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x05\xee\x00\x00\x00\x00\x00\x01\x00\x01\xa4!\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x056\x00\x00\x00\x00\x00\x01\x00\x01|\xf5\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x05\x1c\x00\x00\x00\x00\x00\x01\x00\x01{'\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x05\x04\x00\x00\x00\x00\x00\x01\x00\x01y\xe4\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x06\x0e\x00\x00\x00\x00\x00\x01\x00\x01\xa6\xe0\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x060\x00\x00\x00\x00\x00\x01\x00\x01\xb1\x17\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x05\xcc\x00\x00\x00\x00\x00\x01\x00\x01\x8d\x01\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x05R\x00\x00\x00\x00\x00\x01\x00\x01\x82\x0e\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x05p\x00\x00\x00\x00\x00\x01\x00\x01\x83\xee\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x05\xae\x00\x00\x00\x00\x00\x01\x00\x01\x8a\x9a\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x03*\x00\x00\x00\x00\x00\x01\x00\x00\xe7\xb0\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x00\xea\x00\x01\x00\x00\x00\x01\x00\x000\x04\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x02\x98\x00\x00\x00\x00\x00\x01\x00\x00\xb6\xab\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x03\x06\x00\x00\x00\x00\x00\x01\x00\x00\xdc@\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\xd0\x16\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x01r\x00\x00\x00\x00\x00\x01\x00\x00^\x95\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x02J\x00\x00\x00\x00\x00\x01\x00\x00\x9cV\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x04 \x00\x00\x00\x00\x00\x01\x00\x014&\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x84\xb0\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x04F\x00\x00\x00\x00\x00\x01\x00\x01A1\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00!\x1f\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x02r\x00\x00\x00\x00\x00\x01\x00\x00\xaa\xaf\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x04\x94\x00\x00\x00\x00\x00\x01\x00\x01Y\xe1\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x01.\x00\x00\x00\x00\x00\x01\x00\x00DL\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x03\xdc\x00\x01\x00\x00\x00\x01\x00\x01\x1d\x05\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x01\xa2\x00\x00\x00\x00\x00\x01\x00\x00jD\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x03\xa8\x00\x00\x00\x00\x00\x01\x00\x01\x0f\x85\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x04r\x00\x00\x00\x00\x00\x01\x00\x01M\x11\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x02\xc0\x00\x00\x00\x00\x00\x01\x00\x00\xc4\x11\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x01R\x00\x00\x00\x00\x00\x01\x00\x00P\x82\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x02\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xdc\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x01\x10\x00\x00\x00\x00\x00\x01\x00\x008Y\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x03\xfe\x00\x00\x00\x00\x00\x01\x00\x01&\x92\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x01\xc4\x00\x00\x00\x00\x00\x01\x00\x00x\xe0\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x03|\x00\x00\x00\x00\x00\x01\x00\x01\x02\x93\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x03V\x00\x00\x00\x00\x00\x01\x00\x00\xf4Q\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x04\xbc\x00\x00\x00\x00\x00\x01\x00\x01i\x99\
-\x00\x00\x01w\x86\xd1zQ\
-\x00\x00\x06R\x00\x02\x00\x00\x00\x05\x00\x00\x002\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x06\x8e\x00\x02\x00\x00\x00\x03\x00\x00\x00@\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x06z\x00\x02\x00\x00\x00\x03\x00\x00\x00=\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x06f\x00\x02\x00\x00\x00\x03\x00\x00\x00:\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x06\x9e\x00\x02\x00\x00\x00\x03\x00\x00\x007\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x06\xb2\x00\x00\x00\x00\x00\x01\x00\x01\xc1V\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x01\xc3\xce\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x06\xe8\x00\x00\x00\x00\x00\x01\x00\x01\xc2\xeb\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x01\xc2d\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x01\xc9\x87\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x06\xe8\x00\x00\x00\x00\x00\x01\x00\x01\xc8\xc2\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x01\xc8<\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x01\xc7\x80\
-\x00\x00\x01w\x86\xd1zJ\
-\x00\x00\x06\xe8\x00\x00\x00\x00\x00\x01\x00\x01\xc6\xde\
-\x00\x00\x01w\x86\xd1zM\
-\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x01\xc6\x5c\
-\x00\x00\x01w\x86\xd1zJ\
-\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x01\xc5\xc6\
-\x00\x00\x01w\x86\xd1zJ\
-\x00\x00\x06\xe8\x00\x00\x00\x00\x00\x01\x00\x01\xc5G\
-\x00\x00\x01w\x86\xd1zJ\
-\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x01\xc4\xc8\
-\x00\x00\x01w\x86\xd1zJ\
-"
-
-def qInitResources():
- QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-def qCleanupResources():
- QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-qInitResources()
diff --git a/examples/remoteobjects/modelview/modelviewclient.py b/examples/remoteobjects/modelview/modelviewclient.py
index 9025548b5..38409c998 100644
--- a/examples/remoteobjects/modelview/modelviewclient.py
+++ b/examples/remoteobjects/modelview/modelviewclient.py
@@ -1,43 +1,6 @@
-#############################################################################
-##
-## Copyright (C) 2017 Ford Motor Company
-## Copyright (C) 2019 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2017 Ford Motor Company
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the remoteobjects/modelviewclient example from Qt v5.x"""
diff --git a/examples/remoteobjects/modelview/modelviewserver.py b/examples/remoteobjects/modelview/modelviewserver.py
index 9d0af050e..0e213fb57 100644
--- a/examples/remoteobjects/modelview/modelviewserver.py
+++ b/examples/remoteobjects/modelview/modelviewserver.py
@@ -1,43 +1,6 @@
-#############################################################################
-##
-## Copyright (C) 2017 Ford Motor Company
-## Copyright (C) 2019 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2017 Ford Motor Company
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the remoteobjects/modelviewserver example from Qt v5.x"""
diff --git a/examples/samplebinding/CMakeLists.txt b/examples/samplebinding/CMakeLists.txt
index ac29700c4..4807904c1 100644
--- a/examples/samplebinding/CMakeLists.txt
+++ b/examples/samplebinding/CMakeLists.txt
@@ -1,5 +1,8 @@
-cmake_minimum_required(VERSION 3.16)
-cmake_policy(VERSION 3.16)
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+cmake_minimum_required(VERSION 3.18)
+cmake_policy(VERSION 3.18)
# Enable policy to not use RPATH settings for install_name on macOS.
if(POLICY CMP0068)
@@ -11,8 +14,8 @@ project(SampleBinding)
# ================================ General configuration ======================================
-# Set CPP standard to C++11 minimum.
-set(CMAKE_CXX_STANDARD 11)
+# Set CPP standard to C++17 minimum.
+set(CMAKE_CXX_STANDARD 17)
# The sample library for which we will create bindings. You can change the name to something
# relevant for your project.
@@ -42,7 +45,21 @@ set(generated_sources
# ================================== Shiboken detection ======================================
# Use provided python interpreter if given.
if(NOT python_interpreter)
- find_program(python_interpreter "python")
+ if(WIN32 AND "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+ find_program(python_interpreter "python_d")
+ if(NOT python_interpreter)
+ message(FATAL_ERROR
+ "A debug Python interpreter could not be found, which is a requirement when "
+ "building this example in a debug configuration. Make sure python_d.exe is in "
+ "PATH.")
+ endif()
+ else()
+ find_program(python_interpreter "python")
+ if(NOT python_interpreter)
+ message(FATAL_ERROR
+ "No Python interpreter could be found. Make sure python is in PATH.")
+ endif()
+ endif()
endif()
message(STATUS "Using python interpreter: ${python_interpreter}")
@@ -118,7 +135,7 @@ target_compile_definitions(${sample_library} PRIVATE BINDINGS_BUILD)
# Set up the options to pass to shiboken.
set(shiboken_options --generator-set=shiboken --enable-parent-ctor-heuristic
- --enable-return-value-heuristic --use-isnull-as-nb_nonzero
+ --enable-return-value-heuristic --use-isnull-as-nb-bool
--avoid-protected-hack
-I${CMAKE_SOURCE_DIR}
-T${CMAKE_SOURCE_DIR}
@@ -159,7 +176,11 @@ set_property(TARGET ${bindings_library} PROPERTY PREFIX "")
set_property(TARGET ${bindings_library} PROPERTY OUTPUT_NAME
"${bindings_library}${PYTHON_EXTENSION_SUFFIX}")
if(WIN32)
- set_property(TARGET ${bindings_library} PROPERTY SUFFIX ".pyd")
+ if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+ set_property(TARGET ${bindings_library} PROPERTY SUFFIX "_d.pyd")
+ else()
+ set_property(TARGET ${bindings_library} PROPERTY SUFFIX ".pyd")
+ endif()
endif()
# Make sure the linker doesn't complain about not finding Python symbols on macOS.
diff --git a/examples/samplebinding/README.md b/examples/samplebinding/README.md
deleted file mode 100644
index 26ff2b383..000000000
--- a/examples/samplebinding/README.md
+++ /dev/null
@@ -1,245 +0,0 @@
-# Sample bindings example
-
-This example showcases how to generate Python bindings for a
-non-Qt C++ library.
-
-The example defines a CMake project that builds two libraries:
-* `libuniverse` - a sample library with two C++ classes.
-* `Universe` - the generated Python extension module that contains
- bindings to the library above.
-
-The project file is structured in such a way that a user can copy-paste
-in into their own project, and be able to build it with a minimal amount
-of modifications.
-
-## Description
-
-The libuniverse library declares two classes: `Icecream` and `Truck`.
-
-`Icecream` objects have a flavor, and an accessor for returning the
-flavor.
-
-`Truck` instances store a vector of `Icecream` objects, and have various
-methods for adding new flavors, printing available flavors, delivering
-icecream, etc.
-
-From a C++ perspective, `Icecream` instances are treated as
-**object types** (pointer semantics) because the class declares virtual
-methods.
-
-In contrast `Truck` does not define virtual methods and is treated as
-a **value type** (copy semantics).
-
-Because `Truck` is a value type and it stores a vector of `Icecream`
-pointers, the rule of three has to be taken into account (implement the
-copy constructor, assignment operator, destructor).
-
-And due to `Icecream` objects being copyable, the type has to define an
-implementation of the *clone()* method, to avoid type slicing issues.
-
-Both of these types and their methods will be exposed to Python by
-generating CPython code. The code is generated by **shiboken** and
-placed in separate ".cpp" files named after each C++ type. The code is
-then compiled and linked into a shared library. The shared library is a
-CPython extension module, which is loaded by the Python interpreter.
-
-Beacuse the C++ language has different semantics to Python, shiboken
-needs help in figuring out how to generate the bindings code. This is
-done by specifying a special XML file called a typesystem file.
-
-In the typesystem file you specify things like:
- * which C++ primitive types should have bindings (int, bool, float)
- * which C++ classes should have bindings (Icecream) and what kind of
- semantics (value / object)
- * Ownership rules (who deletes the C++ objects, C++ or Python)
- * Code injection (for various special cases that shiboken doesn't know
- about)
- * Package name (name of package as imported from Python)
-
-In this example we declare `bool` and `std::string` as primitive types,
-`Icecream` as an object type, `Truck` as a value type,
-and the `clone()` and `addIcecreamFlavor(Icecream*)` need additional
-info about who owns the parameter objects when passing them across
-language boundaries (in this case C++ will delete the objects).
-
-The `Truck` has getters and setters for the string `arrivalMessage`.
-In the type system file, we declare this to be a property in Python:
-
-```
-<property type="std::string" name="arrivalMessage" get="getArrivalMessage" set="setArrivalMessage"/>
-```
-
-It can then be used in a more pythonic way:
-
-```
-special_truck.arrivalMessage = "A new SPECIAL icecream truck has arrived!\n"
-```
-
-After shiboken generates the C++ code and CMake makes an extension
-module from the code, the types can be accessed in Python simply by
-importing them using the original C++ names.
-
-```
-from Universe import Icecream, Truck
-```
-
-Constructing C++ wrapped objects is the same as in Python
-```
-icecream = Icecream("vanilla")
-truck = Truck()
-```
-
-
-And actual C++ constructors are mapped to the Python `__init__` method.
-```
-class VanillaChocolateIcecream(Icecream):
- def __init__(self, flavor=""):
- super().__init__(flavor)
-```
-
-
-C++ methods can be accessed as regular Python methods using the C++
-names
-```
-truck.addIcecreamFlavor(icecream)
-```
-
-
-Inheritance works as with regular Python classes, and virtual C++
-methods can be overridden simply by definining a method with the same
-name as in the C++ class.
-```
-class VanillaChocolateIcecream(Icecream):
- # ...
- def getFlavor(self):
- return "vanilla sprinked with chocolate"
-
-```
-
-
-The `main.py` script demonstrates usages of these types.
-
-The CMake project file contains many comments explaining all the build
-rules for those interested in the build process.
-
-## Building the project
-
-This example can only be built using **CMake**.
-The following requirements need to be met:
-
-* A PySide package is installed into the current active Python
- environment (system or virtualenv)
-* A new enough version of CMake (**3.1+**).
-* ninja
-
-For Windows you will also need:
-* a Visual Studio environment to be active in your terminal
-* Correct visual studio architecture chosen (32 vs 64 bit)
-* Make sure that your Python intepreter and bindings project build
- configuration is the same (all Release, which is more likely,
- or all Debug).
-
-The build uses the `pyside_config.py` file to configure the project
-using the current PySide/Shiboken installation.
-
-### Using CMake
-
-You can build and run this example by executing the following commands
-(slightly adapted to your file system layout) in a terminal:
-
-macOS/Linux:
-```bash
-cd ~/pyside-setup/examples/samplebinding
-```
-
-On Windows:
-```bash
-cd C:\pyside-setup\examples\samplebinding
-```
-
-```bash
-mkdir build
-cd build
-mkdir build
-cd build
-cmake -H.. -B. -G Ninja -DCMAKE_BUILD_TYPE=Release
-ninja
-ninja install
-cd ..
-```
-
-The final example can then be run by:
-```bash
-python main.py
-```
-
-#### Windows troubleshooting
-
-It is possible that **CMake** can pick up the wrong compiler
-for a different architecture, but it can be addressed explicitly
-by setting the **CC** environment variable:
-
-```bash
-set CC=cl
-```
-
-or by using the -G option:
-
-```bash
-cmake -H.. -B. -G "Visual Studio 14 Win64"
-```
-
-If the `-G "Visual Studio 14 Win64"` option is used, a `sln` file
-will be generated, and can be used with `MSBuild`
-instead of `nmake/jom`.
-The easiest way to both build and install in this case, is to use
-the cmake executable:
-
-```bash
-cmake --build . --target install --config Release
-```
-
-Note that using the "NMake Makefiles JOM" generator is preferred to
-the MSBuild one, because the MSBuild one generates configs for both
-Debug and Release, and this might lead to building errors if you
-accidentally build the wrong config at least once.
-
-## Virtualenv Support
-
-If the python application is started from a terminal with an activated
-python virtual environment, that environment's packages will be used for
-the python module import process.
-In this case, make sure that the bindings were built while the
-`virtualenv` was active, so that the build system picks up the correct
-python shared library and PySide6 / shiboken package.
-
-## Linux Shared Libraries Notes
-
-For this example's purpose, we link against the absolute path of the
-dependent shared library `libshiboken` because the
-installation of the library is done via a wheel, and there is
-no clean solution to include symbolic links in a wheel package
-(so that passing -lshiboken to the linker would work).
-
-## Windows Notes
-
-The build config of the bindings (Debug or Release) should match
-the PySide build config, otherwise the application will not properly
-work.
-
-In practice this means the only supported configurations are:
-
-1. release config build of the bindings +
- PySide `setup.py` without `--debug` flag + `python.exe` for the
- PySide build process + `python36.dll` for the linked in shared
- library.
-2. debug config build of the application +
- PySide `setup.py` **with** `--debug` flag + `python_d.exe` for the
- PySide build process + `python36_d.dll` for the linked in shared
- library.
-
-This is necessary because all the shared libraries in question have to
-link to the same C++ runtime library (`msvcrt.dll` or `msvcrtd.dll`).
-To make the example as self-contained as possible, the shared libraries
-in use (`pyside6.dll`, `shiboken6.dll`) are hard-linked into the build
-folder of the application.
diff --git a/examples/samplebinding/bindings.h b/examples/samplebinding/bindings.h
index ba42dc626..36f0b86be 100644
--- a/examples/samplebinding/bindings.h
+++ b/examples/samplebinding/bindings.h
@@ -1,52 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef BINDINGS_H
#define BINDINGS_H
diff --git a/examples/samplebinding/bindings.xml b/examples/samplebinding/bindings.xml
index 9be9f1afa..fe5b4e5e2 100644
--- a/examples/samplebinding/bindings.xml
+++ b/examples/samplebinding/bindings.xml
@@ -1,60 +1,10 @@
<?xml version="1.0"?>
<!--
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-->
<typesystem package="Universe">
- <primitive-type name="bool"/>
- <primitive-type name="std::string"/>
-
<object-type name="Icecream">
<!-- By default the ownership of an object created in Python is tied
to the Python name pointing to it. In order for the underlying
diff --git a/examples/samplebinding/doc/bindings.h.rstinc b/examples/samplebinding/doc/bindings.h.rstinc
new file mode 100644
index 000000000..e2a0b6fef
--- /dev/null
+++ b/examples/samplebinding/doc/bindings.h.rstinc
@@ -0,0 +1,2 @@
+The Shiboken generator needs a header file that includes
+the types we are interested in:
diff --git a/examples/samplebinding/doc/bindings.xml.rstinc b/examples/samplebinding/doc/bindings.xml.rstinc
new file mode 100644
index 000000000..60b9b1a48
--- /dev/null
+++ b/examples/samplebinding/doc/bindings.xml.rstinc
@@ -0,0 +1,31 @@
+Shiboken requires an XML-based typesystem file that defines the
+relationship between C++ and Python types.
+
+It declares the two aforementioned classes. One of them as an
+“object-type” and the other as a “value-type”. The main difference is that
+object-types are passed around in generated code as pointers, whereas
+value-types are copied (value semantics).
+
+By specifying the names of these classes in the typesystem file, Shiboken
+automatically tries to generate bindings for all methods of those
+classes. You need not mention all the methods manually in the XML file, unless
+you want to modify them.
+
+**Object ownership rules**
+
+Shiboken doesn't know if Python or C++ are responsible for freeing the C++
+objects that were allocated in the Python code, and assuming this might lead to
+errors. There can be cases where Python should release the C++ memory when the
+reference count of the Python object becomes zero, but it should never delete
+the underlying C++ object just from assuming that it will not be deleted by
+underlying C++ library, or if it's maybe parented to another object (like
+QWidgets).
+
+In our case, the :code:`clone()` method is only called inside the C++ library,
+and we assume that the C++ code takes care of releasing the cloned object.
+
+As for :code:`addIcecreamFlavor()`, we know that a :code:`Truck` owns the
+:code:`Icecream` object, and will remove it once the :code:`Truck` is
+destroyed. That's why the ownership is set to “c++” in the typesystem file,
+so that the C++ objects are not deleted when the corresponding Python names
+go out of scope.
diff --git a/examples/samplebinding/doc/samplebinding.pyproject b/examples/samplebinding/doc/samplebinding.pyproject
new file mode 100644
index 000000000..b0786355f
--- /dev/null
+++ b/examples/samplebinding/doc/samplebinding.pyproject
@@ -0,0 +1,11 @@
+{
+ "files": ["../bindings.h",
+ "../bindings.xml",
+ "../icecream.cpp",
+ "../icecream.h",
+ "../macros.h",
+ "../main.py",
+ "../truck.cpp",
+ "../truck.h",
+ "../CMakeLists.txt"]
+}
diff --git a/examples/samplebinding/doc/samplebinding.rst b/examples/samplebinding/doc/samplebinding.rst
new file mode 100644
index 000000000..defb55d6b
--- /dev/null
+++ b/examples/samplebinding/doc/samplebinding.rst
@@ -0,0 +1,288 @@
+Sample Bindings Example
+=======================
+
+This example showcases how to generate Python bindings for a
+non-Qt C++ library.
+
+The example defines a CMake project that builds two libraries:
+
+* ``libuniverse`` - a sample library with two C++ classes.
+
+* ``Universe`` - the generated Python extension module that contains
+ bindings to the library above.
+
+The project file is structured in such a way that a user can copy-paste
+in into their own project, and be able to build it with a minimal amount
+of modifications.
+
+Description
++++++++++++
+
+The libuniverse library declares two classes: ``Icecream`` and ``Truck``.
+
+``Icecream`` objects have a flavor, and an accessor for returning the
+flavor.
+
+``Truck`` instances store a vector of ``Icecream`` objects, and have various
+methods for adding new flavors, printing available flavors, delivering
+icecream, etc.
+
+From a C++ perspective, ``Icecream`` instances are treated as
+*object types* (pointer semantics) because the class declares virtual
+methods.
+
+In contrast ``Truck`` does not define virtual methods and is treated as
+a *value type* (copy semantics).
+
+Because ``Truck`` is a value type and it stores a vector of ``Icecream``
+pointers, the rule of five has to be taken into account (implement the
+copy constructor, assignment operator, move constructor, move assignment
+operator and destructor).
+
+And due to ``Icecream`` objects being copyable, the type has to define an
+implementation of the ``clone()`` method, to avoid type slicing issues.
+
+Both of these types and their methods will be exposed to Python by
+generating CPython code. The code is generated by ``shiboken`` and
+placed in separate ``.cpp`` files named after each C++ type. The code is
+then compiled and linked into a shared library. The shared library is a
+CPython extension module, which is loaded by the Python interpreter.
+
+Beacuse the C++ language has different semantics to Python, shiboken
+needs help in figuring out how to generate the bindings code. This is
+done by specifying a special XML file called a typesystem file.
+
+In the typesystem file you specify things like:
+
+ * Which C++ classes should have bindings (Icecream, Truck) and with what
+ kind of semantics (value / object)
+
+ * Ownership rules (who deletes the C++ objects, C++ or Python)
+
+ * Code injection (for various special cases that shiboken doesn't know
+ about)
+
+ * Package name (name of package as imported from Python)
+
+In this example we declare ``Icecream`` as an object type and ``Truck``
+as a value type. The ``clone()`` and ``addIcecreamFlavor(Icecream*)``
+need additional info about who owns the parameter objects when passing
+them across language boundaries (in this case C++ will delete the objects).
+
+The ``Truck`` has getters and setters for the string ``arrivalMessage``.
+In the type system file, we declare this to be a property in Python:
+
+.. code-block:: xml
+
+ <property type="std::string" name="arrivalMessage" get="getArrivalMessage" set="setArrivalMessage"/>
+
+
+It can then be used in a more pythonic way:
+
+.. code-block:: python
+
+ special_truck.arrivalMessage = "A new SPECIAL icecream truck has arrived!\n"
+
+After shiboken generates the C++ code and CMake makes an extension
+module from the code, the types can be accessed in Python simply by
+importing them using the original C++ names.
+
+.. code-block:: python
+
+ from Universe import Icecream, Truck
+
+
+Constructing C++ wrapped objects is the same as in Python
+
+.. code-block:: python
+
+ icecream = Icecream("vanilla")
+ truck = Truck()
+
+
+And actual C++ constructors are mapped to the Python `__init__` method.
+
+.. code-block:: python
+
+ class VanillaChocolateIcecream(Icecream):
+ def __init__(self, flavor=""):
+ super().__init__(flavor)
+
+
+C++ methods can be accessed as regular Python methods using the C++
+names
+
+.. code-block:: python
+
+ truck.addIcecreamFlavor(icecream)
+
+Inheritance works as with regular Python classes, and virtual C++
+methods can be overridden simply by definining a method with the same
+name as in the C++ class.
+
+.. code-block:: python
+
+ class VanillaChocolateIcecream(Icecream):
+ # ...
+ def getFlavor(self):
+ return "vanilla sprinked with chocolate"
+
+
+The ``main.py`` script demonstrates usages of these types.
+
+The CMake project file contains many comments explaining all the build
+rules for those interested in the build process.
+
+Building the project
+++++++++++++++++++++
+
+This example can only be built using ``CMake``.
+The following requirements need to be met:
+
+* A PySide package is installed into the current active Python
+ environment (system or virtualenv)
+
+* A new enough version of CMake (3.16+).
+
+* ninja
+
+For Windows you will also need:
+
+* a Visual Studio environment to be active in your terminal
+
+* Correct visual studio architecture chosen (32 vs 64 bit)
+
+* Make sure that your Python intepreter and bindings project build
+ configuration is the same (all Release, which is more likely,
+ or all Debug).
+
+The build uses the ``pyside_config.py`` file to configure the project
+using the current PySide/Shiboken installation.
+
+Using CMake
+===========
+
+You can build and run this example by executing the following commands
+(slightly adapted to your file system layout) in a terminal:
+
+macOS/Linux:
+
+.. code-block:: bash
+
+ cd ~/pyside-setup/examples/samplebinding
+
+On Windows:
+
+.. code-block:: bash
+
+ cd C:\pyside-setup\examples\samplebinding
+
+.. code-block:: bash
+
+ mkdir build
+ cd build
+ cmake -S.. -B. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=cl.exe
+ ninja
+ ninja install
+ cd ..
+
+Use the Python module
++++++++++++++++++++++
+
+The final example can then be run by:
+
+.. code-block:: bash
+
+ python main.py
+
+In the ``main.py`` script, two types are derived from :code:`Icecream` for
+different “flavors” after importing the classes from the :code:`Universe`
+module. Then, a :code:`truck` is created to deliver some regular flavored
+Icecreams and two special ones.
+
+If the delivery fails, a new :code:`truck` is created with the old flavors
+copied over, and a new *magical* flavor that will surely satisfy all customers.
+
+Try running it to see if the ice creams are delivered.
+
+Windows troubleshooting
++++++++++++++++++++++++
+
+It is possible that ``CMake`` can pick up the wrong compiler
+for a different architecture, but it can be addressed explicitly
+by setting the ``CC`` environment variable:
+
+.. code-block:: bash
+
+ set CC=cl
+
+passing the compiler on the command line:
+
+.. code-block:: bash
+
+ cmake -S.. -B. -DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.exe
+
+or by using the -G option:
+
+.. code-block:: bash
+
+ cmake -S.. -B. -G "Visual Studio 14 Win64"
+
+If the ``-G "Visual Studio 14 Win64"`` option is used, a ``sln`` file
+will be generated, and can be used with ``MSBuild``
+instead of ``ninja``.
+The easiest way to both build and install in this case, is to use
+the cmake executable:
+
+.. code-block:: bash
+
+ cmake --build . --target install --config Release
+
+Note that using the ``"Ninja"`` generator is preferred to
+the MSBuild one, because the MSBuild one generates configs for both
+Debug and Release, and this might lead to building errors if you
+accidentally build the wrong config at least once.
+
+Virtualenv Support
+++++++++++++++++++
+
+If the python application is started from a terminal with an activated
+python virtual environment, that environment's packages will be used for
+the python module import process.
+In this case, make sure that the bindings were built while the
+``virtualenv`` was active, so that the build system picks up the correct
+python shared library and PySide6 / shiboken package.
+
+Linux Shared Libraries Notes
+++++++++++++++++++++++++++++
+
+For this example's purpose, we link against the absolute path of the
+dependent shared library ``libshiboken`` because the
+installation of the library is done via a wheel, and there is
+no clean solution to include symbolic links in a wheel package
+(so that passing -lshiboken to the linker would work).
+
+Windows Notes
++++++++++++++
+
+The build config of the bindings (Debug or Release) should match
+the PySide build config, otherwise the application will not properly
+work.
+
+In practice this means the only supported configurations are:
+
+#. release config build of the bindings +
+ PySide ``setup.py`` without ``--debug`` flag + ``python.exe`` for the
+ PySide build process + ``python39.dll`` for the linked in shared
+ library.
+
+#. debug config build of the application +
+ PySide ``setup.py`` *with* ``--debug`` flag + ``python_d.exe`` for the
+ PySide build process + ``python39_d.dll`` for the linked in shared
+ library.
+
+This is necessary because all the shared libraries in question have to
+link to the same C++ runtime library (``msvcrt.dll`` or ``msvcrtd.dll``).
+To make the example as self-contained as possible, the shared libraries
+in use (``pyside6.dll``, ``shiboken6.dll``) are hard-linked into the build
+folder of the application.
diff --git a/examples/samplebinding/icecream.cpp b/examples/samplebinding/icecream.cpp
index 8d40302da..4a81bd08b 100644
--- a/examples/samplebinding/icecream.cpp
+++ b/examples/samplebinding/icecream.cpp
@@ -1,60 +1,15 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "icecream.h"
+#include <iostream>
+
Icecream::Icecream(const std::string &flavor) : m_flavor(flavor) {}
-Icecream::~Icecream() {}
+Icecream::~Icecream() = default;
-const std::string Icecream::getFlavor()
+std::string Icecream::getFlavor() const
{
return m_flavor;
}
@@ -63,3 +18,9 @@ Icecream *Icecream::clone()
{
return new Icecream(*this);
}
+
+std::ostream &operator<<(std::ostream &str, const Icecream &i)
+{
+ str << i.getFlavor();
+ return str;
+}
diff --git a/examples/samplebinding/icecream.h b/examples/samplebinding/icecream.h
index 1997fdc49..7d5e97d38 100644
--- a/examples/samplebinding/icecream.h
+++ b/examples/samplebinding/icecream.h
@@ -1,71 +1,26 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef ICECREAM_H
#define ICECREAM_H
-#include <string>
-
#include "macros.h"
+#include <iosfwd>
+#include <string>
+
class BINDINGS_API Icecream
{
public:
- Icecream(const std::string &flavor);
+ explicit Icecream(const std::string &flavor);
virtual Icecream *clone();
virtual ~Icecream();
- virtual const std::string getFlavor();
+ virtual std::string getFlavor() const;
private:
std::string m_flavor;
};
+std::ostream &operator<<(std::ostream &str, const Icecream &i);
#endif // ICECREAM_H
diff --git a/examples/samplebinding/macros.h b/examples/samplebinding/macros.h
index 71b27c398..af1874fa4 100644
--- a/examples/samplebinding/macros.h
+++ b/examples/samplebinding/macros.h
@@ -1,52 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef MACROS_H
#define MACROS_H
diff --git a/examples/samplebinding/main.py b/examples/samplebinding/main.py
index bc5e16eec..cb9f116ee 100644
--- a/examples/samplebinding/main.py
+++ b/examples/samplebinding/main.py
@@ -1,43 +1,5 @@
-
-############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""An example showcasing how to use bindings for a custom non-Qt C++ library"""
diff --git a/examples/samplebinding/truck.cpp b/examples/samplebinding/truck.cpp
index 056abfcd6..819d2b1a0 100644
--- a/examples/samplebinding/truck.cpp
+++ b/examples/samplebinding/truck.cpp
@@ -1,52 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include <iostream>
#include <random>
@@ -57,40 +10,38 @@ Truck::Truck(bool leaveOnDestruction) : m_leaveOnDestruction(leaveOnDestruction)
Truck::Truck(const Truck &other)
{
- for (size_t i = 0; i < other.m_flavors.size(); ++i) {
- addIcecreamFlavor(other.m_flavors[i]->clone());
- }
+ assign(other);
}
Truck &Truck::operator=(const Truck &other)
{
if (this != &other) {
- clearFlavors();
- for (size_t i = 0; i < other.m_flavors.size(); ++i) {
- addIcecreamFlavor(other.m_flavors[i]->clone());
- }
+ m_flavors.clear();
+ assign(other);
}
return *this;
}
+Truck::Truck(Truck &&other) = default;
+
+Truck& Truck::operator=(Truck &&other) = default;
+
Truck::~Truck()
{
if (m_leaveOnDestruction)
leave();
- clearFlavors();
}
void Truck::addIcecreamFlavor(Icecream *icecream)
{
- m_flavors.push_back(icecream);
+ m_flavors.push_back(IcecreamPtr(icecream));
}
void Truck::printAvailableFlavors() const
{
std::cout << "It sells the following flavors: \n";
- for (size_t i = 0; i < m_flavors.size(); ++ i) {
- std::cout << " * " << m_flavors[i]->getFlavor() << '\n';
- }
+ for (const auto &flavor : m_flavors)
+ std::cout << " * " << *flavor << '\n';
std::cout << '\n';
}
@@ -119,6 +70,13 @@ std::string Truck::getArrivalMessage() const
return m_arrivalMessage;
}
+void Truck::assign(const Truck &other)
+{
+ m_flavors.reserve(other.m_flavors.size());
+ for (const auto &f : other.m_flavors)
+ m_flavors.push_back(IcecreamPtr(f->clone()));
+}
+
bool Truck::deliver() const
{
std::random_device rd;
@@ -133,11 +91,3 @@ bool Truck::deliver() const
return result;
}
-
-void Truck::clearFlavors()
-{
- for (size_t i = 0; i < m_flavors.size(); ++i) {
- delete m_flavors[i];
- }
- m_flavors.clear();
-}
diff --git a/examples/samplebinding/truck.h b/examples/samplebinding/truck.h
index 3f213f9ac..f7afd1290 100644
--- a/examples/samplebinding/truck.h
+++ b/examples/samplebinding/truck.h
@@ -1,66 +1,24 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef TRUCK_H
#define TRUCK_H
-#include <vector>
-
#include "icecream.h"
#include "macros.h"
-class BINDINGS_API Truck {
+#include <memory>
+#include <vector>
+
+class BINDINGS_API Truck
+{
public:
- Truck(bool leaveOnDestruction = false);
+ explicit Truck(bool leaveOnDestruction = false);
Truck(const Truck &other);
Truck& operator=(const Truck &other);
+ Truck(Truck &&other);
+ Truck& operator=(Truck &&other);
+
~Truck();
void addIcecreamFlavor(Icecream *icecream);
@@ -76,11 +34,13 @@ public:
std::string getArrivalMessage() const;
private:
- void clearFlavors();
+ using IcecreamPtr = std::shared_ptr<Icecream>;
+
+ void assign(const Truck &other);
bool m_leaveOnDestruction = false;
std::string m_arrivalMessage = "A new icecream truck has arrived!\n";
- std::vector<Icecream *> m_flavors;
+ std::vector<IcecreamPtr> m_flavors;
};
#endif // TRUCK_H
diff --git a/examples/scriptableapplication/CMakeLists.txt b/examples/scriptableapplication/CMakeLists.txt
index 63b70c5da..fbfa00b98 100644
--- a/examples/scriptableapplication/CMakeLists.txt
+++ b/examples/scriptableapplication/CMakeLists.txt
@@ -1,5 +1,8 @@
-cmake_minimum_required(VERSION 3.16)
-cmake_policy(VERSION 3.16)
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+cmake_minimum_required(VERSION 3.18)
+cmake_policy(VERSION 3.18)
# Enable policy to run automoc on generated files.
if(POLICY CMP0071)
@@ -8,17 +11,29 @@ endif()
project(scriptableapplication)
-# Set CPP standard to C++11 minimum.
-set(CMAKE_CXX_STANDARD 11)
+# Set CPP standard to C++17 minimum.
+set(CMAKE_CXX_STANDARD 17)
# Find required Qt packages.
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Widgets)
+find_package(Qt6 COMPONENTS Core Gui Widgets)
# Use provided python interpreter if given.
if(NOT python_interpreter)
- find_program(python_interpreter "python")
+ if(WIN32 AND "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+ find_program(python_interpreter "python_d")
+ if(NOT python_interpreter)
+ message(FATAL_ERROR
+ "A debug Python interpreter could not be found, which is a requirement when "
+ "building this example in a debug configuration. Make sure python_d.exe is in "
+ "PATH.")
+ endif()
+ else()
+ find_program(python_interpreter "python")
+ if(NOT python_interpreter)
+ message(FATAL_ERROR
+ "No Python interpreter could be found. Make sure python is in PATH.")
+ endif()
+ endif()
endif()
message(STATUS "Using python interpreter: ${python_interpreter}")
@@ -75,8 +90,9 @@ endforeach()
get_target_property(QtCore_is_framework Qt6::Core FRAMEWORK)
if (QtCore_is_framework)
get_target_property(qt_core_library_location Qt6::Core LOCATION)
- get_filename_component(qt_core_library_location_dir "${qt_core_library_location}" DIRECTORY)
- get_filename_component(lib_dir "${qt_core_library_location_dir}/../" ABSOLUTE)
+ # PYSIDE-623: We move up until the directory contains all the frameworks.
+ # This is "lib" in ".../lib/QtCore.framework/Versions/A/QtCore".
+ get_filename_component(lib_dir "${qt_core_library_location}/../../../.." ABSOLUTE)
list(APPEND INCLUDES "--framework-include-paths=${lib_dir}")
endif()
@@ -85,7 +101,7 @@ set(WRAPPED_HEADER ${CMAKE_SOURCE_DIR}/wrappedclasses.h)
set(TYPESYSTEM_FILE ${CMAKE_SOURCE_DIR}/scriptableapplication.xml)
set(SHIBOKEN_OPTIONS --generator-set=shiboken --enable-parent-ctor-heuristic
- --enable-pyside-extensions --enable-return-value-heuristic --use-isnull-as-nb_nonzero
+ --enable-pyside-extensions --enable-return-value-heuristic --use-isnull-as-nb-bool
--avoid-protected-hack
${INCLUDES}
-I${CMAKE_SOURCE_DIR}
diff --git a/examples/scriptableapplication/README.md b/examples/scriptableapplication/README.md
deleted file mode 100644
index d7773c320..000000000
--- a/examples/scriptableapplication/README.md
+++ /dev/null
@@ -1,165 +0,0 @@
-# Scriptable Application
-
-This example demonstrates how to make a Qt C++ application scriptable.
-
-It has a class **MainWindow** (`mainwindow.{cpp,h}`)
-that inherits from *QMainWindow*, for which bindings are generated
-using Shiboken.
-
-The header `wrappedclasses.h` is passed to Shiboken which generates
-class wrappers and headers in a sub directory called **AppLib/**
-which are linked to the application.
-
-The files `pythonutils.{cpp,h}` contain some code which binds the
-instance of **MainWindow** to a variable called **'mainWindow'** in
-the global Python namespace (`__main___`).
-It is then possible to run Python script snippets like:
-
-```python
-mainWindow.testFunction1()
-```
-which trigger the underlying C++ function.
-
-## Building the project
-
-This example can be built using *CMake* or *QMake*,
-but there are common requirements that you need to take into
-consideration:
-
-* Make sure that a --standalone PySide package (bundled with Qt libraries)
- is installed into the current active Python environment
- (system or virtualenv)
-* qmake has to be in your PATH:
- * so that CMake find_package(Qt6 COMPONENTS Core) works (used for include
- headers),
- * used for building the application with qmake instead of CMake
-* use the same Qt version for building the example application, as was used
- for building PySide, this is to ensure binary compatibility between the
- newly generated bindings libraries, the PySide libraries and the
- Qt libraries.
-
-For Windows you will also need:
-* a Visual Studio environment to be active in your terminal
-* Correct visual studio architecture chosen (32 vs 64 bit)
-* Make sure that your Qt + Python + PySide package + app build configuration
- is the same (all Release, which is more likely, or all Debug).
-* Make sure that your Qt + Python + PySide package + app are built with the
- same version of MSVC, to avoid mixing of C++ runtime libraries.
- In principle this means that if you use the python.org provided Python
- interpreters, you need to use MSVC2015 for Python 3 projects.
-
-Both build options will use the `pyside_config.py` file to configure the project
-using the current PySide/Shiboken installation (for qmake via pyside.pri,
-and for CMake via the project CMakeLists.txt).
-
-
-### Using CMake
-
-To build this example with CMake you will need a recent version of CMake (3.1+).
-
-You can build this example by executing the following commands
-(slightly adapted to your file system layout) in a terminal:
-
-macOS/Linux:
-```bash
-cd ~/pyside-setup/examples/scriptableapplication
-```
-
-On Windows:
-```bash
-cd C:\pyside-setup\examples\scriptableapplication
-```
-
-```bash
-mkdir build
-cd build
-cmake -H.. -B. -G Ninja -DCMAKE_BUILD_TYPE=Release
-ninja
-./scriptableapplication
-```
-
-### Using QMake
-
-The file `scriptableapplication.pro` is the project file associated
-to the example when using qmake.
-
-You can build this example by executing:
-```bash
-mkdir build
-cd build
-qmake ..
-make # or nmake / jom for Windows
-```
-
-#### Windows troubleshooting
-
-Using **qmake** should work out of the box, there was a known issue
-with directories and white spaces that is solved by using the
-"~1" character, so the path will change from:
-c:\Program Files\Python34\libs
-to
-c:\Progra~1\Python34\libs
-this will avoid the issues when the Makefiles are generated.
-
-It is possible when using **cmake** to pick up the wrong compiler
-for a different architecture, but it can be addressed explicitly
-using the -G option:
-
-```bash
-cmake -H.. -B. -G "Visual Studio 14 Win64" -DCMAKE_BUILD_TYPE=Release
-```
-
-If the `-G "Visual Studio 14 Win64"` option is used, a `sln` file
-will be generated, and can be used with `MSBuild`
-instead of `nmake/jom`.
-
-```bash
-MSBuild scriptableapplication.sln "/p:Configuration=Release"
-```
-
-Note that using the "NMake Makefiles JOM" generator is preferred to
-the MSBuild one, because in the latter case the executable is placed
-into a directory other than the one that contains the dependency
-dlls (shiboken, pyside). This leads to execution problems if the
-application is started within the Release subdirectory and not the
-one containing the dependencies.
-
-## Virtualenv Support
-
-If the application is started from a terminal with an activated python
-virtual environment, that environment's packages will be used for the
-python module import process.
-In this case, make sure that the application was built while the
-`virtualenv` was active, so that the build system picks up the correct
-python shared library and PySide package.
-
-## Linux Shared Libraries Notes
-
-For this example's purpose, we link against the absolute paths of the
-shared libraries (`libshiboken` and `libpyside`) because the
-installation of the modules is being done via wheels, and there is
-no clean solution to include symbolic links in the package
-(so that regular -lshiboken works).
-
-## Windows Notes
-
-The build config of the application (Debug or Release) should match
-the PySide6 build config, otherwise the application will not properly
-work.
-
-In practice this means the only supported configurations are:
-
-1. release config build of the application +
- PySide `setup.py` without `--debug` flag + `python.exe` for the
- PySide build process + `python36.dll` for the linked in shared
- library + release build of Qt.
-2. debug config build of the application +
- PySide `setup.py` **with** `--debug` flag + `python_d.exe` for the
- PySide build process + `python36_d.dll` for the linked in shared
- library + debug build of Qt.
-
-This is necessary because all the shared libraries in question have to
-link to the same C++ runtime library (`msvcrt.dll` or `msvcrtd.dll`).
-To make the example as self-contained as possible, the shared libraries
-in use (`pyside6.dll`, `shiboken6.dll`) are hard-linked into the build
-folder of the application.
diff --git a/examples/scriptableapplication/doc/scriptableapplication.pyproject b/examples/scriptableapplication/doc/scriptableapplication.pyproject
new file mode 100644
index 000000000..eee541125
--- /dev/null
+++ b/examples/scriptableapplication/doc/scriptableapplication.pyproject
@@ -0,0 +1,9 @@
+{
+ "files": ["../main.cpp",
+ "../mainwindow.cpp",
+ "../mainwindow.h",
+ "../pythonutils.cpp",
+ "../pythonutils.h",
+ "../wrappedclasses.h",
+ "../CMakeLists.txt"]
+}
diff --git a/examples/scriptableapplication/doc/scriptableapplication.rst b/examples/scriptableapplication/doc/scriptableapplication.rst
new file mode 100644
index 000000000..146911f13
--- /dev/null
+++ b/examples/scriptableapplication/doc/scriptableapplication.rst
@@ -0,0 +1,195 @@
+Scriptable Application Example
+==============================
+
+This example demonstrates how to make a Qt C++ application scriptable.
+
+It has a class ``MainWindow`` (files ``mainwindow.cpp,h``)
+that inherits from ``QMainWindow``, for which bindings are generated
+using Shiboken.
+
+The header ``wrappedclasses.h`` is passed to Shiboken which generates
+class wrappers and headers in a sub directory called ``AppLib/``
+which are linked to the application.
+
+The files ``pythonutils.cpp,h`` contain some code which binds the
+instance of ``MainWindow`` to a variable called ``mainWindow`` in
+the global Python namespace (``__main___``).
+It is then possible to run Python script snippets like:
+
+.. code-block:: python
+
+ mainWindow.testFunction1()
+
+which trigger the underlying C++ function.
+
+Building the project
+********************
+
+This example can be built using ``CMake`` or ``QMake``,
+but there are common requirements that you need to take into
+consideration:
+
+* Make sure that a --standalone PySide package (bundled with Qt libraries)
+ is installed into the current active Python environment
+ (system or virtualenv)
+* qmake has to be in your PATH:
+
+ * so that CMake find_package(Qt6 COMPONENTS Core) works (used for include
+ headers),
+ * used for building the application with qmake instead of CMake
+
+* use the same Qt version for building the example application, as was used
+ for building PySide, this is to ensure binary compatibility between the
+ newly generated bindings libraries, the PySide libraries and the
+ Qt libraries.
+
+For Windows you will also need:
+* a Visual Studio environment to be active in your terminal
+
+* Correct visual studio architecture chosen (32 vs 64 bit)
+
+* Make sure that your Qt + Python + PySide package + app build configuration
+ is the same (all Release, which is more likely, or all Debug).
+
+* Make sure that your Qt + Python + PySide package + app are built with a
+ compatible version of MSVC, to avoid mixing of C++ runtime libraries.
+
+Both build options will use the ``pyside_config.py`` file to configure the project
+using the current PySide/Shiboken installation (for qmake via ``pyside.pri``,
+and for CMake via the project ``CMakeLists.txt``).
+
+
+Using CMake
++++++++++++
+
+To build this example with CMake you will need a recent version of CMake (3.16+).
+
+You can build this example by executing the following commands
+(slightly adapted to your file system layout) in a terminal:
+
+macOS/Linux:
+
+.. code-block:: bash
+
+ cd ~/pyside-setup/examples/scriptableapplication
+
+On Windows:
+
+.. code-block:: bash
+
+ cd C:\pyside-setup\examples\scriptableapplication
+
+
+.. code-block:: bash
+
+ mkdir build
+ cd build
+ cmake -S.. -B. -G Ninja -DCMAKE_BUILD_TYPE=Release
+ ninja
+ ./scriptableapplication
+
+Using QMake
++++++++++++
+
+The file ``scriptableapplication.pro`` is the project file associated
+to the example when using qmake.
+
+You can build this example by executing:
+
+.. code-block:: bash
+
+ mkdir build
+ cd build
+ qmake ..
+ make # or nmake / jom for Windows
+
+
+Windows troubleshooting
+***********************
+
+Using ``qmake`` should work out of the box, there was a known issue
+with directories and white spaces that is solved by using the
+"~1" character, so the path will change from:
+``c:\Program Files\Python39\libs``
+to
+``c:\Progra~1\Python39\libs``
+this will avoid the issues when the Makefiles are generated.
+
+It is possible when using ``CMake`` to pick up the wrong compiler
+for a different architecture, but it can be addressed explicitly
+by setting the ``CC`` environment variable:
+
+.. code-block:: bash
+
+ set CC=cl
+
+passing the compiler on the command line:
+
+.. code-block:: bash
+
+ cmake -S.. -B. -DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.exe
+
+or using the -G option:
+
+.. code-block:: bash
+
+ cmake -S.. -B. -G "Visual Studio 14 Win64" -DCMAKE_BUILD_TYPE=Release
+
+
+If the ``-G "Visual Studio 14 Win64"`` option is used, a ``sln`` file
+will be generated, and can be used with ``MSBuild``
+instead of ``ninja``.
+
+.. code-block:: bash
+
+ MSBuild scriptableapplication.sln "/p:Configuration=Release"
+
+Note that using the "Ninja" generator is preferred to
+the MSBuild one, because in the latter case the executable is placed
+into a directory other than the one that contains the dependency
+dlls (shiboken, pyside). This leads to execution problems if the
+application is started within the Release subdirectory and not the
+one containing the dependencies.
+
+Virtualenv Support
+******************
+
+If the application is started from a terminal with an activated python
+virtual environment, that environment's packages will be used for the
+python module import process.
+In this case, make sure that the application was built while the
+`virtualenv` was active, so that the build system picks up the correct
+python shared library and PySide package.
+
+Linux Shared Libraries Notes
+****************************
+
+For this example's purpose, we link against the absolute paths of the
+shared libraries (``libshiboken`` and ``libpyside``) because the
+installation of the modules is being done via wheels, and there is
+no clean solution to include symbolic links in the package
+(so that regular -lshiboken works).
+
+Windows Notes
+*************
+
+The build config of the application (Debug or Release) should match
+the PySide6 build config, otherwise the application will not properly
+work.
+
+In practice this means the only supported configurations are:
+
+#. release config build of the application +
+ PySide ``setup.py`` without ``--debug`` flag + ``python.exe`` for the
+ PySide build process + ``python39.dll`` for the linked in shared
+ library + release build of Qt.
+#. debug config build of the application +
+ PySide ``setup.py`` *with* ``--debug`` flag + ``python_d.exe`` for the
+ PySide build process + ``python39_d.dll`` for the linked in shared
+ library + debug build of Qt.
+
+This is necessary because all the shared libraries in question have to
+link to the same C++ runtime library (``msvcrt.dll`` or ``msvcrtd.dll``).
+To make the example as self-contained as possible, the shared libraries
+in use (``pyside6.dll``, ``shiboken6.dll``) are hard-linked into the build
+folder of the application.
diff --git a/examples/scriptableapplication/main.cpp b/examples/scriptableapplication/main.cpp
index 331417932..8fe7ee8a8 100644
--- a/examples/scriptableapplication/main.cpp
+++ b/examples/scriptableapplication/main.cpp
@@ -1,52 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "mainwindow.h"
diff --git a/examples/scriptableapplication/mainwindow.cpp b/examples/scriptableapplication/mainwindow.cpp
index 15c8b59f0..ece7989e7 100644
--- a/examples/scriptableapplication/mainwindow.cpp
+++ b/examples/scriptableapplication/mainwindow.cpp
@@ -1,52 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "mainwindow.h"
#include "pythonutils.h"
@@ -66,37 +19,44 @@
#include <QtCore/QDebug>
#include <QtCore/QTextStream>
-static const char defaultScript[] = R"(
-import AppLib
+using namespace Qt::StringLiterals;
+
+static const auto defaultScript = R"(import AppLib
print("Hello, world")
mainWindow.testFunction1()
-)";
+)"_L1;
MainWindow::MainWindow()
- : m_scriptEdit(new QPlainTextEdit(QString::fromLatin1(defaultScript).trimmed(), this))
+ : m_scriptEdit(new QPlainTextEdit(defaultScript, this))
{
setWindowTitle(tr("Scriptable Application"));
- QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
- const QIcon runIcon = QIcon::fromTheme(QStringLiteral("system-run"));
- QAction *runAction = fileMenu->addAction(runIcon, tr("&Run..."), this, &MainWindow::slotRunScript);
+ auto *fileMenu = menuBar()->addMenu(tr("&File"));
+ const QIcon runIcon = QIcon::fromTheme("system-run"_L1);
+ auto *runAction = fileMenu->addAction(runIcon, tr("&Run..."),
+ this, &MainWindow::slotRunScript);
runAction->setShortcut(Qt::CTRL | Qt::Key_R);
- QAction *diagnosticAction = fileMenu->addAction(tr("&Print Diagnostics"), this, &MainWindow::slotPrintDiagnostics);
+ auto *diagnosticAction = fileMenu->addAction(tr("&Print Diagnostics"),
+ this, &MainWindow::slotPrintDiagnostics);
diagnosticAction->setShortcut(Qt::CTRL | Qt::Key_D);
- fileMenu->addAction(tr("&Invoke testFunction1()"), this, &MainWindow::testFunction1);
- const QIcon quitIcon = QIcon::fromTheme(QStringLiteral("application-exit"));
- QAction *quitAction = fileMenu->addAction(quitIcon, tr("&Quit"), qApp, &QCoreApplication::quit);
+ fileMenu->addAction(tr("&Invoke testFunction1()"),
+ this, &MainWindow::testFunction1);
+ const QIcon quitIcon = QIcon::fromTheme(QIcon::ThemeIcon::ApplicationExit);
+ auto *quitAction = fileMenu->addAction(quitIcon, tr("&Quit"),
+ qApp, &QCoreApplication::quit);
quitAction->setShortcut(Qt::CTRL | Qt::Key_Q);
- QMenu *editMenu = menuBar()->addMenu(tr("&Edit"));
- const QIcon clearIcon = QIcon::fromTheme(QStringLiteral("edit-clear"));
- QAction *clearAction = editMenu->addAction(clearIcon, tr("&Clear"), m_scriptEdit, &QPlainTextEdit::clear);
+ auto *editMenu = menuBar()->addMenu(tr("&Edit"));
+ const QIcon clearIcon = QIcon::fromTheme(QIcon::ThemeIcon::EditClear);
+ auto *clearAction = editMenu->addAction(clearIcon, tr("&Clear"),
+ m_scriptEdit, &QPlainTextEdit::clear);
- QMenu *helpMenu = menuBar()->addMenu(tr("&Help"));
- const QIcon aboutIcon = QIcon::fromTheme(QStringLiteral("help-about"));
- QAction *aboutAction = helpMenu->addAction(aboutIcon, tr("&About Qt"), qApp, &QApplication::aboutQt);
+ auto *helpMenu = menuBar()->addMenu(tr("&Help"));
+ const QIcon aboutIcon = QIcon::fromTheme(QIcon::ThemeIcon::HelpAbout);
+ auto *aboutAction = helpMenu->addAction(aboutIcon, tr("&About Qt"),
+ qApp, &QApplication::aboutQt);
- QToolBar *toolBar = new QToolBar;
+ auto *toolBar = new QToolBar;
addToolBar(toolBar);
toolBar->addAction(quitAction);
toolBar->addSeparator();
@@ -109,25 +69,29 @@ MainWindow::MainWindow()
m_scriptEdit->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
setCentralWidget(m_scriptEdit);
- if (!PythonUtils::bindAppObject("__main__", "mainWindow", PythonUtils::MainWindowType, this))
+ if (!PythonUtils::bindAppObject("__main__"_L1, "mainWindow"_L1,
+ PythonUtils::MainWindowType, this)) {
statusBar()->showMessage(tr("Error loading the application module"));
+ }
}
void MainWindow::slotRunScript()
{
- const QStringList script = m_scriptEdit->toPlainText().trimmed().split(QLatin1Char('\n'), Qt::SkipEmptyParts);
- if (!script.isEmpty())
- runScript(script);
+ const QString text = m_scriptEdit->toPlainText().trimmed();
+ if (!text.isEmpty())
+ runScript(text);
}
void MainWindow::slotPrintDiagnostics()
{
- const QStringList script = QStringList()
- << "import sys" << "print('Path=', sys.path)" << "print('Executable=', sys.executable)";
+ const QString script = R"P(import sys
+print('Path=', sys.path)
+print('Executable=', sys.executable)
+)P"_L1;
runScript(script);
}
-void MainWindow::runScript(const QStringList &script)
+void MainWindow::runScript(const QString &script)
{
if (!::PythonUtils::runScript(script))
statusBar()->showMessage(tr("Error running script"));
diff --git a/examples/scriptableapplication/mainwindow.h b/examples/scriptableapplication/mainwindow.h
index ce613833c..e72f5ca72 100644
--- a/examples/scriptableapplication/mainwindow.h
+++ b/examples/scriptableapplication/mainwindow.h
@@ -1,59 +1,12 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtWidgets/QMainWindow>
-class QPlainTextEdit;
+QT_FORWARD_DECLARE_CLASS(QPlainTextEdit)
class MainWindow : public QMainWindow
{
@@ -63,12 +16,14 @@ public:
void testFunction1();
+ static constexpr auto TEST = QLatin1StringView("test");
+
private Q_SLOTS:
void slotRunScript();
void slotPrintDiagnostics();
private:
- void runScript(const QStringList &);
+ void runScript(const QString &);
QPlainTextEdit *m_scriptEdit;
};
diff --git a/examples/scriptableapplication/pythonutils.cpp b/examples/scriptableapplication/pythonutils.cpp
index 18ac35112..8104bb167 100644
--- a/examples/scriptableapplication/pythonutils.cpp
+++ b/examples/scriptableapplication/pythonutils.cpp
@@ -1,52 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "pythonutils.h"
@@ -135,7 +88,7 @@ bool bindAppObject(const QString &moduleName, const QString &name,
return false;
PyTypeObject *typeObject = SbkAppLibTypes[index];
- PyObject *po = Shiboken::Conversions::pointerToPython(reinterpret_cast<SbkObjectType *>(typeObject), o);
+ PyObject *po = Shiboken::Conversions::pointerToPython(typeObject, o);
if (!po) {
qWarning() << __FUNCTION__ << "Failed to create wrapper for" << o;
return false;
@@ -161,20 +114,14 @@ bool bindAppObject(const QString &moduleName, const QString &name,
return true;
}
-bool runScript(const QStringList &script)
+bool runScript(const QString &script)
{
if (init() == PythonUninitialized)
return false;
- // Concatenating all the lines
- QString content;
- QTextStream ss(&content);
- for (const QString &line: script)
- ss << line << "\n";
-
// Executing the whole script as one line
bool result = true;
- const QByteArray line = content.toUtf8();
+ const QByteArray line = script.toUtf8();
if (PyRun_SimpleString(line.constData()) == -1) {
if (PyErr_Occurred())
PyErr_Print();
diff --git a/examples/scriptableapplication/pythonutils.h b/examples/scriptableapplication/pythonutils.h
index 942dee508..09e959159 100644
--- a/examples/scriptableapplication/pythonutils.h
+++ b/examples/scriptableapplication/pythonutils.h
@@ -1,59 +1,12 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef PYTHONUTILS_H
#define PYTHONUTILS_H
#include <QtCore/QStringList>
-class QObject;
+QT_FORWARD_DECLARE_CLASS(QObject)
namespace PythonUtils {
@@ -74,7 +27,7 @@ State init();
bool bindAppObject(const QString &moduleName, const QString &name,
int index, QObject *o);
-bool runScript(const QStringList &script);
+bool runScript(const QString &script);
} // namespace PythonUtils
diff --git a/examples/scriptableapplication/scriptableapplication.xml b/examples/scriptableapplication/scriptableapplication.xml
index 7ef2e9f9e..ef401cb62 100644
--- a/examples/scriptableapplication/scriptableapplication.xml
+++ b/examples/scriptableapplication/scriptableapplication.xml
@@ -1,54 +1,7 @@
<?xml version="1.0"?>
<!--
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-->
<typesystem package="AppLib">
<load-typesystem name="typesystem_widgets.xml" generate="no"/>
diff --git a/examples/scriptableapplication/wrappedclasses.h b/examples/scriptableapplication/wrappedclasses.h
index d7661429e..b31ca7f44 100644
--- a/examples/scriptableapplication/wrappedclasses.h
+++ b/examples/scriptableapplication/wrappedclasses.h
@@ -1,52 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef WRAPPEDCLASSES_H
#define WRAPPEDCLASSES_H
diff --git a/examples/serialbus/can/bitratebox.py b/examples/serialbus/can/bitratebox.py
new file mode 100644
index 000000000..68c70baac
--- /dev/null
+++ b/examples/serialbus/can/bitratebox.py
@@ -0,0 +1,55 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWidgets import QComboBox
+from PySide6.QtGui import QIntValidator
+from PySide6.QtCore import Slot
+
+
+class BitRateBox(QComboBox):
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.m_isFlexibleDataRateEnabled = False
+ self.m_customSpeedValidator = None
+ self.m_customSpeedValidator = QIntValidator(0, 1000000, self)
+ self.fill_bit_rates()
+ self.currentIndexChanged.connect(self.check_custom_speed_policy)
+
+ def bit_rate(self):
+ index = self.currentIndex()
+ if index == self.count() - 1:
+ return int(self.currentText)
+ return int(self.itemData(index))
+
+ def is_flexible_data_rate_enabled(self):
+ return self.m_isFlexibleDataRateEnabled
+
+ def set_flexible_date_rate_enabled(self, enabled):
+ self.m_isFlexibleDataRateEnabled = enabled
+ self.m_customSpeedValidator.setTop(10000000 if enabled else 1000000)
+ self.fill_bit_rates()
+
+ @Slot(int)
+ def check_custom_speed_policy(self, idx):
+ is_custom_speed = not self.itemData(idx)
+ self.setEditable(is_custom_speed)
+ if is_custom_speed:
+ self.clearEditText()
+ self.lineEdit().setValidator(self.m_customSpeedValidator)
+
+ def fill_bit_rates(self):
+ rates = [10000, 20000, 50000, 100000, 125000, 250000, 500000,
+ 800000, 1000000]
+ data_rates = [2000000, 4000000, 8000000]
+
+ self.clear()
+ for rate in rates:
+ self.addItem(f"{rate}", rate)
+
+ if self.is_flexible_data_rate_enabled():
+ for rate in data_rates:
+ self.addItem(f"{rate}", rate)
+
+ self.addItem("Custom")
+ self.setCurrentIndex(6) # default is 500000 bits/sec
diff --git a/examples/serialbus/can/can.pyproject b/examples/serialbus/can/can.pyproject
new file mode 100644
index 000000000..288f5f225
--- /dev/null
+++ b/examples/serialbus/can/can.pyproject
@@ -0,0 +1,10 @@
+{
+ "files": ["main.py", "bitratebox.py",
+ "canbusdeviceinfobox.py", "canbusdeviceinfobox.ui",
+ "canbusdeviceinfodialog.py", "canbusdeviceinfodialog.ui",
+ "connectdialog.py", "connectdialog.ui",
+ "mainwindow.py", "mainwindow.ui",
+ "receivedframesmodel.py", "receivedframesview.py",
+ "sendframebox.py", "sendframebox.ui",
+ "can.qrc"]
+}
diff --git a/examples/serialbus/can/can.qrc b/examples/serialbus/can/can.qrc
new file mode 100644
index 000000000..1b8d697b5
--- /dev/null
+++ b/examples/serialbus/can/can.qrc
@@ -0,0 +1,8 @@
+<RCC>
+ <qresource prefix="/">
+ <file>images/connect.png</file>
+ <file>images/disconnect.png</file>
+ <file>images/application-exit.png</file>
+ <file>images/clear.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/serialbus/can/canbusdeviceinfobox.py b/examples/serialbus/can/canbusdeviceinfobox.py
new file mode 100644
index 000000000..5e6049265
--- /dev/null
+++ b/examples/serialbus/can/canbusdeviceinfobox.py
@@ -0,0 +1,49 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Qt
+from PySide6.QtWidgets import QGroupBox
+
+from ui_canbusdeviceinfobox import Ui_CanBusDeviceInfoBox
+
+
+def _set_readonly_and_compact(box):
+ box.setAttribute(Qt.WA_TransparentForMouseEvents)
+ box.setFocusPolicy(Qt.NoFocus)
+ box.setStyleSheet("margin-top:0; margin-bottom:0;")
+
+
+class CanBusDeviceInfoBox(QGroupBox):
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.m_ui = Ui_CanBusDeviceInfoBox()
+ self.m_ui.setupUi(self)
+ _set_readonly_and_compact(self.m_ui.isVirtual)
+ _set_readonly_and_compact(self.m_ui.isFlexibleDataRateCapable)
+
+ def clear(self):
+ self.m_ui.pluginLabel.clear()
+ self.m_ui.nameLabel.clear()
+ self.m_ui.descriptionLabel.clear()
+ self.m_ui.serialNumberLabel.clear()
+ self.m_ui.aliasLabel.clear()
+ self.m_ui.channelLabel.clear()
+ self.m_ui.isVirtual.setChecked(False)
+ self.m_ui.isFlexibleDataRateCapable.setChecked(False)
+
+ def set_device_info(self, info):
+ self.m_ui.pluginLabel.setText(f"Plugin: {info.plugin()}")
+ self.m_ui.nameLabel.setText(f"Name: {info.name()}")
+ self.m_ui.descriptionLabel.setText(info.description())
+ serial_number = info.serialNumber()
+ if not serial_number:
+ serial_number = "n/a"
+ self.m_ui.serialNumberLabel.setText(f"Serial: {serial_number}")
+ alias = info.alias()
+ if not alias:
+ alias = "n/a"
+ self.m_ui.aliasLabel.setText(f"Alias: {alias}")
+ self.m_ui.channelLabel.setText(f"Channel: {info.channel()}")
+ self.m_ui.isVirtual.setChecked(info.isVirtual())
+ self.m_ui.isFlexibleDataRateCapable.setChecked(info.hasFlexibleDataRate())
diff --git a/examples/serialbus/can/canbusdeviceinfobox.ui b/examples/serialbus/can/canbusdeviceinfobox.ui
new file mode 100644
index 000000000..d4dd84fb2
--- /dev/null
+++ b/examples/serialbus/can/canbusdeviceinfobox.ui
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>CanBusDeviceInfoBox</class>
+ <widget class="QGroupBox" name="CanBusDeviceInfoBox">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>319</width>
+ <height>217</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>CAN Interface Properties</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="pluginLabel">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="nameLabel">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="descriptionLabel">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="serialNumberLabel">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="aliasLabel">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="channelLabel">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="isFlexibleDataRateCapable">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>Flexible Data Rate</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="isVirtual">
+ <property name="text">
+ <string>Virtual</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/serialbus/can/canbusdeviceinfodialog.py b/examples/serialbus/can/canbusdeviceinfodialog.py
new file mode 100644
index 000000000..dfb4e6025
--- /dev/null
+++ b/examples/serialbus/can/canbusdeviceinfodialog.py
@@ -0,0 +1,16 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWidgets import QDialog
+
+from ui_canbusdeviceinfodialog import Ui_CanBusDeviceInfoDialog
+
+
+class CanBusDeviceInfoDialog(QDialog):
+
+ def __init__(self, info, parent):
+ super().__init__(parent)
+ self.m_ui = Ui_CanBusDeviceInfoDialog()
+ self.m_ui.setupUi(self)
+ self.m_ui.deviceInfoBox.set_device_info(info)
+ self.m_ui.okButton.pressed.connect(self.close)
diff --git a/examples/serialbus/can/canbusdeviceinfodialog.ui b/examples/serialbus/can/canbusdeviceinfodialog.ui
new file mode 100644
index 000000000..6328a06d1
--- /dev/null
+++ b/examples/serialbus/can/canbusdeviceinfodialog.ui
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>CanBusDeviceInfoDialog</class>
+ <widget class="QDialog" name="CanBusDeviceInfoDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>237</width>
+ <height>225</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>CAN Interface Properties</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="CanBusDeviceInfoBox" name="deviceInfoBox">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="title">
+ <string>CAN Interface Properties</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="okButton">
+ <property name="text">
+ <string>Ok</string>
+ </property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>CanBusDeviceInfoBox</class>
+ <extends>QGroupBox</extends>
+ <header location="global">canbusdeviceinfobox.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/serialbus/can/connectdialog.py b/examples/serialbus/can/connectdialog.py
new file mode 100644
index 000000000..a6d5ac378
--- /dev/null
+++ b/examples/serialbus/can/connectdialog.py
@@ -0,0 +1,235 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QSettings, Qt, Slot
+from PySide6.QtGui import QIntValidator
+from PySide6.QtWidgets import QDialog
+from PySide6.QtSerialBus import QCanBus, QCanBusDevice
+
+from ui_connectdialog import Ui_ConnectDialog
+
+
+class Settings():
+ def __init__(self):
+ self.plugin_name = ""
+ self.device_interface_name = ""
+ self.configurations = []
+ self.use_configuration_enabled = False
+ self.use_model_ring_buffer = True
+ self.model_ring_buffer_size = 1000
+ self.use_autoscroll = False
+
+
+class ConnectDialog(QDialog):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_ui = Ui_ConnectDialog()
+ self.m_currentSettings = Settings()
+ self.m_interfaces = []
+ self.m_settings = QSettings("QtProject", "CAN example")
+ self.m_ui.setupUi(self)
+
+ self.m_ui.errorFilterEdit.setValidator(QIntValidator(0, 0x1FFFFFFF, self))
+
+ self.m_ui.loopbackBox.addItem("unspecified")
+ self.m_ui.loopbackBox.addItem("False", False)
+ self.m_ui.loopbackBox.addItem("True", True)
+
+ self.m_ui.receiveOwnBox.addItem("unspecified")
+ self.m_ui.receiveOwnBox.addItem("False", False)
+ self.m_ui.receiveOwnBox.addItem("True", True)
+
+ self.m_ui.canFdBox.addItem("False", False)
+ self.m_ui.canFdBox.addItem("True", True)
+
+ self.m_ui.dataBitrateBox.set_flexible_date_rate_enabled(True)
+
+ self.m_ui.okButton.clicked.connect(self.ok)
+ self.m_ui.cancelButton.clicked.connect(self.cancel)
+ self.m_ui.useConfigurationBox.toggled.connect(self.m_ui.configurationBox.setEnabled)
+ self.m_ui.pluginListBox.currentTextChanged.connect(self.plugin_changed)
+ self.m_ui.interfaceListBox.currentTextChanged.connect(self.interface_changed)
+ self.m_ui.ringBufferBox.stateChanged.connect(self._ring_buffer_changed)
+
+ self.m_ui.rawFilterEdit.hide()
+ self.m_ui.rawFilterLabel.hide()
+
+ self.m_ui.pluginListBox.addItems(QCanBus.instance().plugins())
+
+ self.restore_settings()
+
+ @Slot(int)
+ def _ring_buffer_changed(self, state):
+ self.m_ui.ringBufferLimitBox.setEnabled(state == Qt.CheckState.Checked.value)
+
+ def settings(self):
+ return self.m_currentSettings
+
+ def save_settings(self):
+ qs = self.m_settings
+ cur = self.m_currentSettings
+ qs.beginGroup("LastSettings")
+ qs.setValue("PluginName", self.m_currentSettings.plugin_name)
+ qs.setValue("DeviceInterfaceName", cur.device_interface_name)
+ qs.setValue("UseAutoscroll", cur.use_autoscroll)
+ qs.setValue("UseRingBuffer", cur.use_model_ring_buffer)
+ qs.setValue("RingBufferSize", cur.model_ring_buffer_size)
+ qs.setValue("UseCustomConfiguration", cur.use_configuration_enabled)
+
+ if cur.use_configuration_enabled:
+ qs.setValue("Loopback",
+ self.configuration_value(QCanBusDevice.LoopbackKey))
+ qs.setValue("ReceiveOwn",
+ self.configuration_value(QCanBusDevice.ReceiveOwnKey))
+ qs.setValue("ErrorFilter",
+ self.configuration_value(QCanBusDevice.ErrorFilterKey))
+ qs.setValue("BitRate",
+ self.configuration_value(QCanBusDevice.BitRateKey))
+ qs.setValue("CanFd",
+ self.configuration_value(QCanBusDevice.CanFdKey))
+ qs.setValue("DataBitRate",
+ self.configuration_value(QCanBusDevice.DataBitRateKey))
+ qs.endGroup()
+
+ def restore_settings(self):
+ qs = self.m_settings
+ cur = self.m_currentSettings
+ qs.beginGroup("LastSettings")
+ cur.plugin_name = qs.value("PluginName", "", str)
+ cur.device_interface_name = qs.value("DeviceInterfaceName", "", str)
+ cur.use_autoscroll = qs.value("UseAutoscroll", False, bool)
+ cur.use_model_ring_buffer = qs.value("UseRingBuffer", False, bool)
+ cur.model_ring_buffer_size = qs.value("RingBufferSize", 0, int)
+ cur.use_configuration_enabled = qs.value("UseCustomConfiguration", False, bool)
+
+ self.revert_settings()
+
+ if cur.use_configuration_enabled:
+ self.m_ui.loopbackBox.setCurrentText(qs.value("Loopback"))
+ self.m_ui.receiveOwnBox.setCurrentText(qs.value("ReceiveOwn"))
+ self.m_ui.errorFilterEdit.setText(qs.value("ErrorFilter"))
+ self.m_ui.bitrateBox.setCurrentText(qs.value("BitRate"))
+ self.m_ui.canFdBox.setCurrentText(qs.value("CanFd"))
+ self.m_ui.dataBitrateBox.setCurrentText(qs.value("DataBitRate"))
+
+ qs.endGroup()
+ self.update_settings()
+
+ @Slot(str)
+ def plugin_changed(self, plugin):
+ self.m_ui.interfaceListBox.clear()
+ interfaces, error_string = QCanBus.instance().availableDevices(plugin)
+ self.m_interfaces = interfaces
+ for info in self.m_interfaces:
+ self.m_ui.interfaceListBox.addItem(info.name())
+
+ @Slot(str)
+ def interface_changed(self, interface):
+ for info in self.m_interfaces:
+ if interface == info.name():
+ self.m_ui.deviceInfoBox.set_device_info(info)
+ return
+ self.m_ui.deviceInfoBox.clear()
+
+ @Slot()
+ def ok(self):
+ self.update_settings()
+ self.save_settings()
+ self.accept()
+
+ @Slot()
+ def cancel(self):
+ self.revert_settings()
+ self.reject()
+
+ def configuration_value(self, key):
+ result = None
+ for k, v in self.m_currentSettings.configurations:
+ if k == key:
+ result = v
+ break
+ if not result and (key == QCanBusDevice.LoopbackKey or key == QCanBusDevice.ReceiveOwnKey):
+ return "unspecified"
+ return str(result)
+
+ def revert_settings(self):
+ self.m_ui.pluginListBox.setCurrentText(self.m_currentSettings.plugin_name)
+ self.m_ui.interfaceListBox.setCurrentText(self.m_currentSettings.device_interface_name)
+ self.m_ui.useConfigurationBox.setChecked(self.m_currentSettings.use_configuration_enabled)
+
+ self.m_ui.ringBufferBox.setChecked(self.m_currentSettings.use_model_ring_buffer)
+ self.m_ui.ringBufferLimitBox.setValue(self.m_currentSettings.model_ring_buffer_size)
+ self.m_ui.autoscrollBox.setChecked(self.m_currentSettings.use_autoscroll)
+
+ value = self.configuration_value(QCanBusDevice.LoopbackKey)
+ self.m_ui.loopbackBox.setCurrentText(value)
+
+ value = self.configuration_value(QCanBusDevice.ReceiveOwnKey)
+ self.m_ui.receiveOwnBox.setCurrentText(value)
+
+ value = self.configuration_value(QCanBusDevice.ErrorFilterKey)
+ self.m_ui.errorFilterEdit.setText(value)
+
+ value = self.configuration_value(QCanBusDevice.BitRateKey)
+ self.m_ui.bitrateBox.setCurrentText(value)
+
+ value = self.configuration_value(QCanBusDevice.CanFdKey)
+ self.m_ui.canFdBox.setCurrentText(value)
+
+ value = self.configuration_value(QCanBusDevice.DataBitRateKey)
+ self.m_ui.dataBitrateBox.setCurrentText(value)
+
+ def update_settings(self):
+ self.m_currentSettings.plugin_name = self.m_ui.pluginListBox.currentText()
+ self.m_currentSettings.device_interface_name = self.m_ui.interfaceListBox.currentText()
+ self.m_currentSettings.use_configuration_enabled = self.m_ui.useConfigurationBox.isChecked()
+
+ self.m_currentSettings.use_model_ring_buffer = self.m_ui.ringBufferBox.isChecked()
+ self.m_currentSettings.model_ring_buffer_size = self.m_ui.ringBufferLimitBox.value()
+ self.m_currentSettings.use_autoscroll = self.m_ui.autoscrollBox.isChecked()
+
+ if self.m_currentSettings.use_configuration_enabled:
+ self.m_currentSettings.configurations.clear()
+ # process LoopBack
+ if self.m_ui.loopbackBox.currentIndex() != 0:
+ item = (QCanBusDevice.LoopbackKey, self.m_ui.loopbackBox.currentData())
+ self.m_currentSettings.configurations.append(item)
+
+ # process ReceiveOwnKey
+ if self.m_ui.receiveOwnBox.currentIndex() != 0:
+ item = (QCanBusDevice.ReceiveOwnKey, self.m_ui.receiveOwnBox.currentData())
+ self.m_currentSettings.configurations.append(item)
+
+ # process error filter
+ error_filter = self.m_ui.errorFilterEdit.text()
+ if error_filter:
+ ok = False
+ try:
+ int(error_filter) # check if value contains a valid integer
+ ok = True
+ except ValueError:
+ pass
+ if ok:
+ item = (QCanBusDevice.ErrorFilterKey, error_filter)
+ self.m_currentSettings.configurations.append(item)
+
+ # process raw filter list
+ if self.m_ui.rawFilterEdit.text():
+ pass # TODO current ui not sufficient to reflect this param
+
+ # process bitrate
+ bitrate = self.m_ui.bitrateBox.bit_rate()
+ if bitrate > 0:
+ item = (QCanBusDevice.BitRateKey, bitrate)
+ self.m_currentSettings.configurations.append(item)
+
+ # process CAN FD setting
+ fd_item = (QCanBusDevice.CanFdKey, self.m_ui.canFdBox.currentData())
+ self.m_currentSettings.configurations.append(fd_item)
+
+ # process data bitrate
+ data_bitrate = self.m_ui.dataBitrateBox.bit_rate()
+ if data_bitrate > 0:
+ item = (QCanBusDevice.DataBitRateKey, data_bitrate)
+ self.m_currentSettings.configurations.append(item)
diff --git a/examples/serialbus/can/connectdialog.ui b/examples/serialbus/can/connectdialog.ui
new file mode 100644
index 000000000..97e6e0050
--- /dev/null
+++ b/examples/serialbus/can/connectdialog.ui
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ConnectDialog</class>
+ <widget class="QDialog" name="ConnectDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>542</width>
+ <height>558</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Connect</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_6">
+ <item row="0" column="0">
+ <layout class="QGridLayout" name="gridLayout_5">
+ <item row="0" column="0">
+ <widget class="QGroupBox" name="selectPluginBox">
+ <property name="title">
+ <string>Select CAN plugin</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QComboBox" name="pluginListBox"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2">
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>GUI Settings</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QCheckBox" name="ringBufferBox">
+ <property name="toolTip">
+ <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Use ring buffer in table view model&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ <property name="text">
+ <string>Use ring buffer</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="ringBufferLimitBox">
+ <property name="toolTip">
+ <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Limit of ring buffer in table view model&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ <property name="minimum">
+ <number>10</number>
+ </property>
+ <property name="maximum">
+ <number>10000000</number>
+ </property>
+ <property name="singleStep">
+ <number>10</number>
+ </property>
+ <property name="stepType">
+ <enum>QAbstractSpinBox::AdaptiveDecimalStepType</enum>
+ </property>
+ <property name="value">
+ <number>1000</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="autoscrollBox">
+ <property name="toolTip">
+ <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Scroll to bottom table view on each portion of received frames&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ <property name="text">
+ <string>Autoscroll</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QCheckBox" name="useConfigurationBox">
+ <property name="text">
+ <string>Custom configuration</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" rowspan="4">
+ <widget class="QGroupBox" name="configurationBox">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="title">
+ <string>Specify Configuration</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_4">
+ <item row="0" column="0">
+ <widget class="QLabel" name="rawFilterLabel">
+ <property name="text">
+ <string>RAW Filter</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="rawFilterEdit">
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="errorFilterLabel">
+ <property name="text">
+ <string>Error Filter</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="errorFilterEdit">
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ <property name="placeholderText">
+ <string>FrameError bits</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="loopbackLabel">
+ <property name="text">
+ <string>Loopback</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QComboBox" name="loopbackBox"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="receiveOwnLabel">
+ <property name="text">
+ <string>Receive Own</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QComboBox" name="receiveOwnBox"/>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="bitrateLabel">
+ <property name="text">
+ <string>Bitrate</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="BitRateBox" name="bitrateBox"/>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="canFdLabel">
+ <property name="text">
+ <string>CAN FD</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QComboBox" name="canFdBox"/>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="dataBitrateLabel">
+ <property name="text">
+ <string>Data Bitrate</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="1">
+ <widget class="BitRateBox" name="dataBitrateBox"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="2">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>96</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="cancelButton">
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ <property name="autoDefault">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="okButton">
+ <property name="text">
+ <string>OK</string>
+ </property>
+ <property name="autoDefault">
+ <bool>false</bool>
+ </property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="0">
+ <widget class="QGroupBox" name="specifyInterfaceNameBox">
+ <property name="title">
+ <string>Specify CAN interface name</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="0" column="0">
+ <widget class="QComboBox" name="interfaceListBox">
+ <property name="editable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="CanBusDeviceInfoBox" name="deviceInfoBox">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="title">
+ <string>CAN Interface Properties</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>BitRateBox</class>
+ <extends>QComboBox</extends>
+ <header>bitratebox.h</header>
+ </customwidget>
+ <customwidget>
+ <class>CanBusDeviceInfoBox</class>
+ <extends>QGroupBox</extends>
+ <header location="global">canbusdeviceinfobox.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/serialbus/can/doc/can.rst b/examples/serialbus/can/doc/can.rst
new file mode 100644
index 000000000..e6c156be1
--- /dev/null
+++ b/examples/serialbus/can/doc/can.rst
@@ -0,0 +1,6 @@
+CAN Bus example
+===============
+
+The example sends and receives CAN bus frames. The example sends and receives
+CAN bus frames. Incoming frames are ordered according to their type. A connect
+dialog is provided to adjust the CAN Bus connection parameters.
diff --git a/examples/serialbus/can/images/application-exit.png b/examples/serialbus/can/images/application-exit.png
new file mode 100644
index 000000000..32be6b3f1
--- /dev/null
+++ b/examples/serialbus/can/images/application-exit.png
Binary files differ
diff --git a/examples/serialbus/can/images/clear.png b/examples/serialbus/can/images/clear.png
new file mode 100644
index 000000000..aa612f1f3
--- /dev/null
+++ b/examples/serialbus/can/images/clear.png
Binary files differ
diff --git a/examples/serialbus/can/images/connect.png b/examples/serialbus/can/images/connect.png
new file mode 100644
index 000000000..dd5a51e98
--- /dev/null
+++ b/examples/serialbus/can/images/connect.png
Binary files differ
diff --git a/examples/serialbus/can/images/disconnect.png b/examples/serialbus/can/images/disconnect.png
new file mode 100644
index 000000000..fd58f7a48
--- /dev/null
+++ b/examples/serialbus/can/images/disconnect.png
Binary files differ
diff --git a/examples/serialbus/can/main.py b/examples/serialbus/can/main.py
new file mode 100644
index 000000000..97cdcc908
--- /dev/null
+++ b/examples/serialbus/can/main.py
@@ -0,0 +1,18 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QCoreApplication, QLoggingCategory
+from PySide6.QtWidgets import QApplication
+from mainwindow import MainWindow
+
+"""PySide6 port of the CAN example from Qt v6.x"""
+
+
+if __name__ == "__main__":
+ QLoggingCategory.setFilterRules("qt.canbus* = true")
+ a = QApplication(sys.argv)
+ w = MainWindow()
+ w.show()
+ sys.exit(QCoreApplication.exec())
diff --git a/examples/serialbus/can/mainwindow.py b/examples/serialbus/can/mainwindow.py
new file mode 100644
index 000000000..ae2a08f1f
--- /dev/null
+++ b/examples/serialbus/can/mainwindow.py
@@ -0,0 +1,238 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QTimer, QUrl, Slot
+from PySide6.QtGui import QDesktopServices
+from PySide6.QtWidgets import QLabel, QMainWindow
+from PySide6.QtSerialBus import QCanBus, QCanBusDevice, QCanBusFrame
+
+from connectdialog import ConnectDialog
+from canbusdeviceinfodialog import CanBusDeviceInfoDialog
+from ui_mainwindow import Ui_MainWindow
+from receivedframesmodel import ReceivedFramesModel
+
+
+def frame_flags(frame):
+ result = " --- "
+ if frame.hasBitrateSwitch():
+ result[1] = 'B'
+ if frame.hasErrorStateIndicator():
+ result[2] = 'E'
+ if frame.hasLocalEcho():
+ result[3] = 'L'
+ return result
+
+
+def show_help():
+ url = "http://doc.qt.io/qt-6/qtcanbus-backends.html#can-bus-plugins"
+ QDesktopServices.openUrl(QUrl(url))
+
+
+class MainWindow(QMainWindow):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_ui = Ui_MainWindow()
+ self.m_number_frames_written = 0
+ self.m_number_frames_received = 0
+ self.m_written = None
+ self.m_received = None
+ self.m_can_device = None
+
+ self.m_busStatusTimer = QTimer(self)
+
+ self.m_ui.setupUi(self)
+ self.m_connect_dialog = ConnectDialog(self)
+
+ self.m_status = QLabel()
+ self.m_ui.statusBar.addPermanentWidget(self.m_status)
+ self.m_written = QLabel()
+ self.m_ui.statusBar.addWidget(self.m_written)
+ self.m_received = QLabel()
+ self.m_ui.statusBar.addWidget(self.m_received)
+
+ self.m_model = ReceivedFramesModel(self)
+ self.m_model.set_queue_limit(1000)
+ self.m_ui.receivedFramesView.set_model(self.m_model)
+
+ self.init_actions_connections()
+ QTimer.singleShot(50, self.m_connect_dialog.show)
+
+ self.m_busStatusTimer.timeout.connect(self.bus_status)
+ self.m_appendTimer = QTimer(self)
+ self.m_appendTimer.timeout.connect(self.onAppendFramesTimeout)
+ self.m_appendTimer.start(350)
+
+ def init_actions_connections(self):
+ self.m_ui.actionDisconnect.setEnabled(False)
+ self.m_ui.actionDeviceInformation.setEnabled(False)
+ self.m_ui.sendFrameBox.setEnabled(False)
+
+ self.m_ui.sendFrameBox.send_frame.connect(self.send_frame)
+ self.m_ui.actionConnect.triggered.connect(self._action_connect)
+ self.m_connect_dialog.accepted.connect(self.connect_device)
+ self.m_ui.actionDisconnect.triggered.connect(self.disconnect_device)
+ self.m_ui.actionResetController.triggered.connect(self._reset_controller)
+ self.m_ui.actionQuit.triggered.connect(self.close)
+ self.m_ui.actionAboutQt.triggered.connect(qApp.aboutQt) # noqa: F821
+ self.m_ui.actionClearLog.triggered.connect(self.m_model.clear)
+ self.m_ui.actionPluginDocumentation.triggered.connect(show_help)
+ self.m_ui.actionDeviceInformation.triggered.connect(self._action_device_information)
+
+ @Slot()
+ def _action_connect(self):
+ if self.m_can_device:
+ self.m_can_device.deleteLater()
+ self.m_can_device = None
+ self.m_connect_dialog.show()
+
+ @Slot()
+ def _reset_controller(self):
+ self.m_can_device.resetController()
+
+ @Slot()
+ def _action_device_information(self):
+ info = self.m_can_device.deviceInfo()
+ dialog = CanBusDeviceInfoDialog(info, self)
+ dialog.exec()
+
+ @Slot(QCanBusDevice.CanBusError)
+ def process_errors(self, error):
+ if error != QCanBusDevice.NoError:
+ self.m_status.setText(self.m_can_device.errorString())
+
+ @Slot()
+ def connect_device(self):
+ p = self.m_connect_dialog.settings()
+ if p.use_model_ring_buffer:
+ self.m_model.set_queue_limit(p.model_ring_buffer_size)
+ else:
+ self.m_model.set_queue_limit(0)
+
+ device, error_string = QCanBus.instance().createDevice(
+ p.plugin_name, p.device_interface_name)
+ if not device:
+ self.m_status.setText(
+ f"Error creating device '{p.plugin_name}', reason: '{error_string}'")
+ return
+
+ self.m_number_frames_written = 0
+ self.m_can_device = device
+ self.m_can_device.errorOccurred.connect(self.process_errors)
+ self.m_can_device.framesReceived.connect(self.process_received_frames)
+ self.m_can_device.framesWritten.connect(self.process_frames_written)
+
+ if p.use_configuration_enabled:
+ for k, v in p.configurations:
+ self.m_can_device.setConfigurationParameter(k, v)
+
+ if not self.m_can_device.connectDevice():
+ e = self.m_can_device.errorString()
+ self.m_status.setText(f"Connection error: {e}")
+ self.m_can_device = None
+ else:
+ self.m_ui.actionConnect.setEnabled(False)
+ self.m_ui.actionDisconnect.setEnabled(True)
+ self.m_ui.actionDeviceInformation.setEnabled(True)
+ self.m_ui.sendFrameBox.setEnabled(True)
+ config_bit_rate = self.m_can_device.configurationParameter(QCanBusDevice.BitRateKey)
+ if config_bit_rate > 0:
+ is_can_fd = bool(self.m_can_device.configurationParameter(QCanBusDevice.CanFdKey))
+ config_data_bit_rate = self.m_can_device.configurationParameter(
+ QCanBusDevice.DataBitRateKey)
+ bit_rate = config_bit_rate / 1000
+ if is_can_fd and config_data_bit_rate > 0:
+ data_bit_rate = config_data_bit_rate / 1000
+ m = (f"Plugin: {p.plugin_name}, connected to {p.device_interface_name} "
+ f"at {bit_rate} / {data_bit_rate} kBit/s")
+ self.m_status.setText(m)
+ else:
+ m = (f"Plugin: {p.plugin_name}, connected to {p.device_interface_name} "
+ f"at {bit_rate} kBit/s")
+ self.m_status.setText(m)
+
+ else:
+ self.m_status.setText(
+ f"Plugin: {p.plugin_name}, connected to {p.device_interface_name}")
+
+ if self.m_can_device.hasBusStatus():
+ self.m_busStatusTimer.start(2000)
+ else:
+ self.m_ui.busStatus.setText("No CAN bus status available.")
+
+ def bus_status(self):
+ if not self.m_can_device or not self.m_can_device.hasBusStatus():
+ self.m_ui.busStatus.setText("No CAN bus status available.")
+ self.m_busStatusTimer.stop()
+ return
+
+ state = self.m_can_device.busStatus()
+ if state == QCanBusDevice.CanBusStatus.Good:
+ self.m_ui.busStatus.setText("CAN bus status: Good.")
+ elif state == QCanBusDevice.CanBusStatus.Warning:
+ self.m_ui.busStatus.setText("CAN bus status: Warning.")
+ elif state == QCanBusDevice.CanBusStatus.Error:
+ self.m_ui.busStatus.setText("CAN bus status: Error.")
+ elif state == QCanBusDevice.CanBusStatus.BusOff:
+ self.m_ui.busStatus.setText("CAN bus status: Bus Off.")
+ else:
+ self.m_ui.busStatus.setText("CAN bus status: Unknown.")
+
+ @Slot()
+ def disconnect_device(self):
+ if not self.m_can_device:
+ return
+ self.m_busStatusTimer.stop()
+ self.m_can_device.disconnectDevice()
+ self.m_ui.actionConnect.setEnabled(True)
+ self.m_ui.actionDisconnect.setEnabled(False)
+ self.m_ui.actionDeviceInformation.setEnabled(False)
+ self.m_ui.sendFrameBox.setEnabled(False)
+ self.m_status.setText("Disconnected")
+
+ @Slot(int)
+ def process_frames_written(self, count):
+ self.m_number_frames_written += count
+ self.m_written.setText(f"{self.m_number_frames_written} frames written")
+
+ def closeEvent(self, event):
+ self.m_connect_dialog.close()
+ event.accept()
+
+ @Slot()
+ def process_received_frames(self):
+ if not self.m_can_device:
+ return
+ while self.m_can_device.framesAvailable():
+ self.m_number_frames_received = self.m_number_frames_received + 1
+ frame = self.m_can_device.readFrame()
+ data = ""
+ if frame.frameType() == QCanBusFrame.ErrorFrame:
+ data = self.m_can_device.interpretErrorFrame(frame)
+ else:
+ data = frame.payload().toHex(' ').toUpper()
+
+ secs = frame.timeStamp().seconds()
+ microsecs = frame.timeStamp().microSeconds() / 100
+ time = f"{secs:>10}.{microsecs:0>4}"
+ flags = frame_flags(frame)
+
+ id = f"{frame.frameId():x}"
+ dlc = f"{frame.payload().size()}"
+ frame = [f"{self.m_number_frames_received}", time, flags, id, dlc, data]
+ self.m_model.append_frame(frame)
+
+ @Slot(QCanBusFrame)
+ def send_frame(self, frame):
+ if self.m_can_device:
+ self.m_can_device.writeFrame(frame)
+
+ @Slot()
+ def onAppendFramesTimeout(self):
+ if not self.m_can_device:
+ return
+ if self.m_model.need_update():
+ self.m_model.update()
+ if self.m_connect_dialog.settings().use_autoscroll:
+ self.m_ui.receivedFramesView.scrollToBottom()
+ self.m_received.setText(f"{self.m_number_frames_received} frames received")
diff --git a/examples/serialbus/can/mainwindow.ui b/examples/serialbus/can/mainwindow.ui
new file mode 100644
index 000000000..61c7760e0
--- /dev/null
+++ b/examples/serialbus/can/mainwindow.ui
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>634</width>
+ <height>527</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>CAN Example</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="SendFrameBox" name="sendFrameBox">
+ <property name="title">
+ <string>Send CAN frame</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="receivedMessagesBox">
+ <property name="title">
+ <string>Received CAN messages</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="ReceivedFramesView" name="receivedFramesView">
+ <property name="editTriggers">
+ <set>QAbstractItemView::NoEditTriggers</set>
+ </property>
+ <property name="showDropIndicator" stdset="0">
+ <bool>false</bool>
+ </property>
+ <property name="dragDropOverwriteMode">
+ <bool>false</bool>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="busStatus">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menuBar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>634</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menuCalls">
+ <property name="title">
+ <string>&amp;Calls</string>
+ </property>
+ <addaction name="actionConnect"/>
+ <addaction name="actionDisconnect"/>
+ <addaction name="actionDeviceInformation"/>
+ <addaction name="separator"/>
+ <addaction name="actionResetController"/>
+ <addaction name="separator"/>
+ <addaction name="actionClearLog"/>
+ <addaction name="separator"/>
+ <addaction name="actionQuit"/>
+ </widget>
+ <widget class="QMenu" name="menuHelp">
+ <property name="title">
+ <string>&amp;Help</string>
+ </property>
+ <addaction name="actionPluginDocumentation"/>
+ <addaction name="actionAboutQt"/>
+ </widget>
+ <addaction name="menuCalls"/>
+ <addaction name="menuHelp"/>
+ </widget>
+ <widget class="QToolBar" name="mainToolBar">
+ <attribute name="toolBarArea">
+ <enum>TopToolBarArea</enum>
+ </attribute>
+ <attribute name="toolBarBreak">
+ <bool>false</bool>
+ </attribute>
+ <addaction name="actionConnect"/>
+ <addaction name="actionDisconnect"/>
+ <addaction name="separator"/>
+ <addaction name="actionClearLog"/>
+ </widget>
+ <widget class="QStatusBar" name="statusBar"/>
+ <action name="actionConnect">
+ <property name="icon">
+ <iconset resource="can.qrc">
+ <normaloff>:/images/connect.png</normaloff>:/images/connect.png</iconset>
+ </property>
+ <property name="text">
+ <string>&amp;Connect</string>
+ </property>
+ </action>
+ <action name="actionDisconnect">
+ <property name="icon">
+ <iconset resource="can.qrc">
+ <normaloff>:/images/disconnect.png</normaloff>:/images/disconnect.png</iconset>
+ </property>
+ <property name="text">
+ <string>&amp;Disconnect</string>
+ </property>
+ </action>
+ <action name="actionQuit">
+ <property name="icon">
+ <iconset resource="can.qrc">
+ <normaloff>:/images/application-exit.png</normaloff>:/images/application-exit.png</iconset>
+ </property>
+ <property name="text">
+ <string>&amp;Quit</string>
+ </property>
+ </action>
+ <action name="actionAboutQt">
+ <property name="text">
+ <string>&amp;About Qt</string>
+ </property>
+ </action>
+ <action name="actionClearLog">
+ <property name="icon">
+ <iconset resource="can.qrc">
+ <normaloff>:/images/clear.png</normaloff>:/images/clear.png</iconset>
+ </property>
+ <property name="text">
+ <string>Clear &amp;Log</string>
+ </property>
+ </action>
+ <action name="actionPluginDocumentation">
+ <property name="text">
+ <string>Plugin Documentation</string>
+ </property>
+ <property name="toolTip">
+ <string>Open plugin documentation in Webbrowser</string>
+ </property>
+ </action>
+ <action name="actionResetController">
+ <property name="text">
+ <string>&amp;Reset CAN Controller</string>
+ </property>
+ <property name="toolTip">
+ <string>Reset CAN Controller</string>
+ </property>
+ </action>
+ <action name="actionDeviceInformation">
+ <property name="text">
+ <string>Device &amp;Information...</string>
+ </property>
+ </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+ <customwidget>
+ <class>SendFrameBox</class>
+ <extends>QGroupBox</extends>
+ <header location="global">sendframebox.h</header>
+ <container>1</container>
+ </customwidget>
+ <customwidget>
+ <class>ReceivedFramesView</class>
+ <extends>QTableView</extends>
+ <header location="global">receivedframesview.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources>
+ <include location="can.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/examples/serialbus/can/rc_can.py b/examples/serialbus/can/rc_can.py
new file mode 100644
index 000000000..6e0341a15
--- /dev/null
+++ b/examples/serialbus/can/rc_can.py
@@ -0,0 +1,3453 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.4.1
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x000\xff\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x00\x09pHYs\x00\x00$\xe9\x00\x00$\xe9\
+\x01P$\xe7\xf8\x00\x00\x00\x19tEXtSof\
+tware\x00www.inksca\
+pe.org\x9b\xee<\x1a\x00\x00 \x00ID\
+ATx\x9c\xed\x9dy\x9c\x1dGu\xef\xbf\xd5\xddw\
+\x9f}\xd7\xbe\xcb\xb2\xe5\x1d\x8c\x17\x0161<\x88m\
+\xc2#\x80Cp\x82\x8c\xc3#$\x84\x80\x09\xe4\x85-\
+` \x04L\x02\x0e\x09Kx\x01,\x03q\x1e6y\
+\x1f\xcc\x92\x18\x8cc\x1b\x8f\xf7\xdd\xb2e\xcb\xb2\xd6\xd1\
+H\x9a}\xe6\xae\xbdT\xd5\xfb\xa3\xfa\xf6\xbd3sg\
+\xd1\x8cF\x92\xc9\xfc\xf4iMo\xb7\x97:\xbf>\xe7\
+\xd4\xa9SUBk\xcd\x22\xfe\xfb\xc2:\xd1\x0f\xb0\x88\
+\x13\x0b\xe7X_\xf0\xabW\x89\x0dJ\xdb\x17\x83nG\
+\x8b\x17\x84\x90;S9v\xbd\xe76]8\xd6\xf7Z\
+\xc4\xfc!\x8e\x85\x09\xf8\xea;\xc4+5\xd6\xfb4\x5c\
+\x0c,\xa9q\x8a\x06\x9e\xd1\x88\xcf^{\xb3\xbc\x85E\
+\xbbs\xd2`^\x04\xb8\xee:a5\xee\xb4\xfe\x1a\xcd\
+'\x00{\x96?{B\x09\xf1\xf1\x0f\xfd \xf8\xf9\x9c\
+o\xbc\x88c\x86y\x11\xe0\x86w\xd8\x9f\x03>^\xde\
+N&bt._M\xe7\xb2\x8d\xd4\xb5,\xc7s]\
+\x0a\xb9\x11rc\xc3\xec\xdb\xf98nq,\xfa\xad\x16\
+|\xf5\xda\x1f\xc8\x0f\xcc\xeb\xe9\x171o\xcc\x99\x007\
+\xbc\xdd\xf9m,\xfd3@\xd8B\xb0q\xd3\x06\xd6\x9e\
+\xfd\xdb\x08\xab\xb6[\xe1y>\xbb\xb6w\xb3\xfb\xb9\xc7\
+ \xbc\xa7\x10\xfc\xd5\x07~ \xbf8\xd7\x87_\xc4\xfc\
+1w\x02\xbc\xc3\xfa%\x88\xd7\x02\x9cy\xd6\xd9\xac\xdc\
+\xfc\x1a\x10\x16\xc5\xdc(={w0:\xd8\x8be\xd9\
+t.\xdf\xc0\xd2\xd5\xa7\x22\x84\x00`\xb4\xff \xdd\xbf\
+\xba\x05%%\x80\x16B\x5c\xfd\x81\x1f\x047\x1d\xab\x17\
+Z\xc4\xd1aN\x04\xf8\xd2\x95\xa2+\xe6X=\x80\xbd\
+|\xed\x19\x9c}\xe1\xff\x00\xa0w\xdf\xf3<q\xdf\xcf\
+QJ\x8d;?\x93\xcep\xe1\xeb\xdfA2\xdd\x00\xc0\
+\xe1\xbdO\xf1h\xf7/\x09\xef\xec+\xad\xd6}\xe8f\
+}`^o\xb2\x889aNq\x80\x98c\xbd\x9d\xd0\
+\xe9[u\xca\xb9\x00\x8c\x0e\x1d\xe6\xb1\xee\x9fU\x84\x1f\
+~\xf1\x00\xf9B\x9e\x07n\xbf\x09\xe5\xbb\x00t\xad>\
+\x93SN=#\xba\x9c\x10\xd6\xfb\xe7\xf6\xf8\x8b\x98/\
+\xe6\x18\x08\x12\xbf\x0f\x90nh\xa3\xb1\xa9\x0d\x80\x1d\x8f\
+\xfe*\xb2\xed\xafz\xc7\x17y\xff\x8dy\xae\xfe\xf2s\
+t\xad{\x05\x00\xb9\x82\xcb\xfe'\x7f\x0a\xe1w\xbf\xf6\
+\xcc\xd7\x90L\xa6\xcc\xd5\xe0\x7f\xfd\xdd;Ef>/\
+\xb2\x88\xb9a\x8e\x04\xd0\xab\x00:\x96o\xc4\x0a\xaf0\
+6<\x00@\xfb\xaa\xb3x\xd9\x15\x1f\xc6\x8e%h\xea\
+\xda\xc0%[o\x88~5\xd8\x7f\x88\xdc\xa1\xa7\xcc\x8d\
+\x9d\x18k7\x9dY>\xd4\xe4\xf8\xd6\xd5s{\x96E\
+\xcc\x07s\x0d\x05[\x00\xb6\x1d\x8bvHiT\xbf\xe5\
+\xc4\xc7\x9d\xa8\xa9\xf8\x18\x02\x0c\x01\xb4\x04`\xc5\xba\xb3\
+\xb1-\xbb|\xf0\xcf#Oq\x11\xc7\x0d\xf3\x22@\xe0\
+U\xa2\xbbu\x99$\x00Gv?\xc2\x8e_\x7f\x0f\x00\
+\xaf\x94\xe5\x81[?\x1d\x9d\x93J\xd8(\xbfDa\xe0\
+E\x00b\xc9:V\xac\xddX>\xbc\xf1\x1f\xae\xb2/\
+\x9f\xe3\xf3,b\x8e\x98'\x01\xf2\xd1\x8eeK\xc2\x08\
+\xb0\xd6\xdc\xfe\x8d\xab\xf9\xd6{\x97\xf0\xad?\xeeb\xdf\
+S\xbf\x04 \x19\xb7i\xc8\x98\x18A\xfe\xf0\xd3\xe1\xaf\
+4\xab7\x9e\x1d]Ci\xf5\xc19>\xcf\x22\xe6\x88\
+\xb9\x12`\x00`t\xb0\xbf\xec\xd3\xb1t\xfd9,k\
+KF'\x14\xc6\xfa\x08\xfc\x12\x00\xf1\x98\xc5\xda\xae$\
+e\xfd\xee\x17\x86pG{\xd0J\x92\xaeo\xa5\xa3\xd3\
+\x90Ghq\xe9W\xfe@\x9c\xc1\x22\x8e\x1b\xe6F\x00\
+\xcd\xbf\x03\xe4\xc6\xfa\x19\x19<\x04@\xb2y%K;\
+[\xd8\xb4\x22CkC\x8c\xba\xa4C]\xcaaY[\
+\x92M\xcb3$\xe3\xe3\x9b\x0ar\x87\x9eF+\x09J\
+\xb2zcE\xe6BY\x8bZ\xe08bN\x04\xd0\xa8\
+[\xcb\xeb=/>\x19\xae\x09\xea\x96\x9cE:a\xb3\
+\xaa#\xc5\xc6\xe5i6.K\xd3\xd9\x14\xc7\xb1'\xfb\
+v\xeeh\x0fAa\x08\xad\x02Z\xda\x96QWW_\
+>t\xd5\xdf\xbdSt\xcc\xe5\xb9\x16q\xf4\x98\x13\x01\
+\xae\xbdY?\x02\xec\x05\xd8\xbf\xe79\xdc\xa2\xf1\x052\
+\x9d\xa7\x91h\x5c>\xeb\xeb\xe4\xfb\x9eC\xab\x00\xad5\
+\xab\xd7o*\xefN\xc4\x02\xeb\xbdsy\xaeE\x1c=\
+\xe6\x9c\x11\xa45_\x05PR\xf2\xe4\x03\xbf\x88|\x81\
+\xe6u\x97`\xc5\x92\xd3\xfd4Bix\x0f2(\xa1\
+U@\xe7\x92\xd5\xc4b\xa6Z\xa9\xe1O\xaf\xbbR\xc4\
+g\xf8\xf9\x22\x8e\x01\xe6L\x80k\xffM\xdd\x00\xfaN\
+\x80\xbe\xde\xdd\xec\xdd\xf9\xb8\xb9`,E\xd3\x9aW\xcf\
+\xea\x1aZIJ\x83\xbb\xd1*\xc0\xb2\x04+V\xad.\
+\x1f\xealp\xec\xdf\x9f\xeb\xb3-b\xf6\x98{N\xa0\
+\xd6Z\x07\xfa\x9d\xc00\xc03\x8f\xddMvd\x10\x80\
+d\xf3*2\x1d\xa7\xce\xea2\xc5!C\x00\xad\x02\x96\
+._\x13\xed\x17\xe8Eg\xf08`^I\xa1\xd7\xfe\
+P\x1fD\x8b\xf7\x80\xf9\x9a\x1f\xbb\xf7g(i\x84Y\
+\xbf\xfce8\xc9\xc6\x19\xaf\xa1\x02\x17w\xac\x17\xad$\
+\xf1X\x9c\xae\xae\xae\xf2\xa1\xb3o\xf8\xfd\xd8%\xf3y\
+\xbeE\xcc\x8cyg\x05\x7f\xf0\xe6\xe0V47\x02d\
+G\xfb\xd9\xf1\xd8\xdd\xa6z\xa75\x8d\xab/BX3\
+g\x8a\x15\x87\xf6\xa2T\x80T\x01K\x97\xae\xac\x1c\x10\
+\xf2\xda\xf9>\xdf\x22\xa6\xc71I\x0b\xf7\xd2\xea\xcf\x81\
+\xdd\x00{v>A\xff\xa1\xbdh-\xb1\xe3ud:\
+7O\xfb[\xad5A)\x8b\x97\x1fBII\xaa\xae\
+\x9e\xfa\x86\x86\xf0\xa8\xb8\xe2+\x7f(\xd6\x1f\x8bg\x5c\
+Dm\x1c\x13\x02\xfc\xe5\xb7uVY\xea*@\x02<\
+\xf9\xe0\x9d\x94\x8a9\xb4\x92$[\xd6\x10\xcb\xb4O\xfa\
+\x8d\xd6\x1a\xa54J\x83\xd2P\x1c\xe9E\xc9\x00%\x03\
+\x96t.\x8d\x9eOH\xeb\xcf\x8f\xc53.\xa26\x8e\
+Y\xc7\x90\x0f}_?\x80\xe6\xb3\x00\x9e[\xe0\xe9G\
+\xef\x89\x22}uK\xceD\xd8\xa6V\xa7\xb5F\xe9\x8a\
+\xe0\xcb\x8b[\x18&\xf0\x8a(\x19\xd0\xd0\xdcH<\x1e\
+\xd5\x02\xdf\xf5\xc5+\xc5\xcc\xce\xc4\x22\xe6\x84c\xda3\
+h\x99T\x9f\x03q?\xc0\xc0\xe1\x1e\xf6\xef\xde\x81\xd6\
+\x12a\xd9\xa4;6U\x04\xaf\xaa\x84_^W\x9a\xe2\
+\xd8\x11\xa4\x0aPR\xd1\xde\xdeV\xbel]\xdc\xb1\xde\
+},\x9fs\x11\x15\x1cS\x02\xbc\xed\x87Z\x22\xe4\x1f\
+\x00Y\x80\x9d\xcf>Nvt\x10-\x03\x9cT\x0b\xb1\
+\xfa%\x93\xbe\xfc\xca\xa2q\xf3C\xc8\xc0G\xc9\x80\xe6\
+\xa6f\x84eB\xc8\x02\xde\x7f\xcb\x95b\xb6\xfd\x0e\x16\
+q\x148\xe6}\x03?\xf8\x03\xbd[#\xde\x0f\xa0\x94\
+\xe4\xe9\xc7\x1f\xc6\x0f<\x94\x0cH6\xad\xc2rRh\
+\x0dZU\x04_\xf6\x05\xa4\x94\x94rCH%\xd1@\
+sCS\xf9\xb2\xab\x0e\xda\xf6\x9bg\xba\xf7\xa3\xdf\x12\
+\xb1{o\x12\x7f\xda}\xa3\xf8\x9b\x07\x7f \x1af:\
+\x7f\x11\x0b\xd49\xf4\xda\x7f\x0d\xb6\x01\xb7\x00\xe4s\xa3\
+\xbc\xb8\xf3\x19\xa4\x0cPJ\x93lY\x8bB\xa0\xb4F\
+km\xc8P\xa5\x09\xbc\xc2(2\xf0\x912\xa0\xb1\xb9\
+\xbe\xfa\xb2\xd3\x06\x86\xee\xbdQ\xbc\xb1\x94`\xbb\xd0|\
+\x0d\xc1\xc7\x02\xc9'\x16\xe2\xdd~\xd3\xb0`\xbd\x83\x13\
+B\xfd1\xd0\x03p\xf0\xc0>\x06\x07\xfa\x91R\x82\x15\
+#^\xdf5\xc9\x17\xd0\xca\x10!\x08|\xbcR\x0e)\
+\x03l\xcb&\x9d6\x89\xa3\x08\xbd\xe5\x1f\xde.\xce\x9b\
+x\x9f\xeembs\xf76\xf1\x0b!\xb8\x0d\x88\xd2\x8b\
+\xd0L:w\x11\x93\xb1`\x04\xf8\x93\x1f\xe8a%\xac\
+w\x02\x0a`\xd7\xf3\xcf\xe0\x96\x0aH\x19\xe0\xa4\x9a\xb1\
+\xe2\x99\x9a\xbe\x80\xd6\x1a\xbf\x98CII \x03\xea2\
+U\xc9\xc2v%W\xe0\xa1\x9bD\xeb}7\x8a\xaf\x01\
+O\x02\xaf+\xef\x17V\xf4J\x152,bJ\x1c\x93\
+\xde\xc1\xd3\xe1+\xef\xb0\xaf\x17\xf0\x11\x80\xc6\xc6\x16\xd6\
+\xae_\x8fV\x0a)=\xf2\x83\xfbP\xd2\xd8\xfb\xc8\x1c\
+`4\x81\x93\xa8G\x0b\x0b%%G\xfa\x06\xf1\x83\x00\
+\xc0O%\xd4\x86\xd3/\xe6\xcd\x08>\x05DNB}\
+\xcbJ\xd6\x9cu\x15\x07w\xfe\x94\xc1\x83&\xe5\xccO\
+S\x7f\xc9\xdbtnA_\xf0%\x8ec>>\xc0D\
+\x8c\x05\xea\x13M\x8e\xf5Z\x0d\xe7\x8c\x8e\x0e\xd1w\xf8\
+\x10-\xad\xad(\x0dN\xba\x95\xd2\xd8\x91H\xe8\xd5\x04\
+\xf0\xbd\x12\xc2\x89\xa3\xa4\x22\x9d\x8c3\x9a\x0bhj\xd3\
+\xb15g\xf2\x08\x82\xa8\x8e\x18O6\xb0\xfa\x8c\xb7\xd1\
+\xba\xe2B\x10\x16\xe9\xfa\xa5\x0cb\x08\x10\xcf\xb3\x1ex\
+b\xa1\xdf\xf1\xa5\x8c\x05'\xc0\xa7~\xa8\xbd\x1b\xde.\
+\xae\xc2\xb2\x1e\x05R\x07{{H\xa6\x92\xc4b\x0eX\
+1\xacX\x1a\xdf-L&A\xe0#\xb4@\xa3I7\
+\x08:O\xd14\xb6i\xc0\x08_X\x0e\xcbO\xfdm\
+\x96\xae\x7f\x03\x96\x93\x8a\xee\x17O5G\xeb\xca\xaa\x10\
+e\x11\xb5q\x5c\x86\x88\xf9\xe0\xbf\xe9\x1d\x1a>\x0c\x80\
+\xd6\x1c\xec9\x80\x0c\x02\xb4\x92\x88x\x06-\xec\x9aq\
+\x01\x8dG\xf3\xb2\x1c\xcbO\xcf\x96\x85\x0f@\xfb\xcaW\
+p\xee\x1b\xfe\x96\xe5\x9b\xde<N\xf8\x00N\xa2\xaa\xf6\
+\xa7hf\x11\xd3\xe2\xb8\x8d\x11t\xed\xbf\xca\xaf\x83\xfe\
+\x19@\xa9T\xa2\xaf\xaf\x8f \x08PRb\xc7\xd2U\
+5\x02\x13*n\xe8\xf4Yqf\x8e\x86N\x8fr:\
+q}\xcbj\xce|\xcd\xc7X\x7f\xde{\x89\xa7Z\xc3\
++kP\xa3\xd1}\x9cx\x15\x01\xc4\x22\x01f\xc2\x82\
+\x9b\x80j\x04\x8e\xbe\xc6\x09\xc4\xd3@\xc7\xe8\xe8(\xf1\
+D\x9cd<\x86\xd2\x1aa\xc7P\x81G\xb2A\xd2\xba\
+\xca%\x9e\xaa\xf40\x8e\xa7\x1aY}\xc6[i]v\
+\x01T7/\xeb<\xa8a\xd0\x01Xu\x80\x8d\x1d\xaf\
+\xd4\x1a\x84X4\x013\xe1\xb8\x8e\x12\xf6\xe1\x9bt\x1f\
+Z\x5cS\xde\x1e\x1c\x18\xc4\xf3<\x82 \xc0I(:\
+7\x96X\xb2\xa9\x18\x09_\xd81Vn\xbe\x82s^\
+\xf7\x19Z\x97\xbf\xc2h\x02\xad@\xbb \x0f\x81\xec7\
+\xc2\x07\xd0>\x00\x89TE\xe6Zs\xce\xf1{\xbb\x97\
+&\x16\xbc\x1aX\x0b7\x5ce\xff\x13\x9a\xf7\x01\xa42\
+1Vl\x144\xb6\x97\x22U\x0f\xd0\xbe\xf2<V\x9e\
+\xf6;\xa1\xaa\x17 ,@\x82\x1c\x01]\x1c\xd7\xfd\x1c\
+\x00\xab-\xd4\x02\xf0\xf8\x7f\xfe%\xa5\xfc\x00#=\x1c\
+\xf9\xe9'\xb8M\xc0&`\x9d\x86\xfb<\xb8\xe6\xdbZ\
+g\x8f\xcf\x9b\x9e\xfc8!\x04\xf8\xca\x95\x22e\xc5\xad\
+G\xda\x97\xeb\xd3\x96\xad\xd78\x95>\xa6\xd4\xb7\xacb\
+\xcd\x99\xbfK\xa6y\x0d\x86\x11\xa1\x92R\xa3\xa0\xb3\x95\
+}b\x82\xf2\xb2\x1a\xc12&\xff\xd9\xbb\xbe\xc9\x9d_\
+}\x88\xe7\xef\x8c\xfa\xa1Vc'\xf0;_\xd7\xfa\xf9\
+\x05x\xb5\x97\x1c\x8e\xab\x0fP\xc6\xf9\x97\xf3*\xa5T\
+\xbcZ\x86\xf1d\x03+7_A\xfb\x8a\x97\x81\xb0\x89\
+\xf2\xcc\xf5\xa8\xf9\xea\xd1\xa1\xd0-\xb3\xae\xf5x-\xa0\
+]\x94Tt\x7f\xf7nn\xbb\xeeI\x8a#\x95C\x09\
+\xcb\x02\xadq\x0d\xd97\x027\x09!.\xd0\x8b\xc3\xd5\
+\x1d_\x0d\xd0\xfd\x1dq\x0a6\x7f\x0fD\xbd\x80-\xcb\
+\xa1k\xdd\x85t\xae\xddB,\x96\xc1\xb2\x13\x08+\x06\
+\xaa\x08j\x08\x080B\x0f\x171q\xdd`\xe7={\
+\xb9\xf5cw\xd2\xfbLO\xb4\xaf\xceq8\xaf\xb9\x99\
+\x95\xb1\x18\x85R\x89{FG9\x22#\x95p\xf5\xd7\
+\xb5\xde\xb6\xe0/}\x92\xe3\xb8\x10\xe0\xae\x1bES\xcc\
+\x84n\xdf\x07D\x0a\xbf\xb9k#\x9dk\xcf'\x91n\
+\xc5\xb2\x13\xd8v\x12\xcb\x12Xd\x11\x14\xa9)\xf4h\
+\xdb\x06,\x06\xf7\x8f\xf2\xef\x9f\xfc%O\xfedGt\
+?\xc7\xb28\xaf\xbd\x9d\xb3\x9a\x9aP\xbe\x8f\xefy\xf8\
+\x9e\xc7p\xa9\xc4\x7f\x8c\x8d\x11\xd6/\x0e\xbb\xb0\xf1\xbf\
+\xbb?\xb0\xa0&\xe0\x96[\x84\xbd\xac\xc0{b\x82\xcf\
+@\xa5J\x96\xaao\xa7}\xcd9\xa4\x1b:\xb1\xed$\
+J\xf9 4\xc8>\xb4p\xc1Ia\xdbq\xc2\x98`\
+\xa8\xeeue\x1b\x8d\x9b/q\xfb\x97\xef\xe7\xce\xaf?\
+H\xe0V\x0c\xfd\xe6\xf6v.^\xb1\x82\x14\xe0\xbb.\
+\xbeR(\xdbF\xda6\x0d\xb1\x18\xeb\xe3qvz\x1e\
+@W\x12\xfe\x02\xf8\xf4B\x96\xc1\xc9\x8e\x05#\xc0\xbd\
+7\x89\xd7.\xd5|E\xc3\xe9\xd1\xcd\x12i\x9a\x97\xae\
+\xa7\xbeu9\x96\x930\x1dB,\x17\xe9\x0d \xf5\x08\
+\x8e\x93\x04'\x8dP6\x96e\x87\x03\x86\x8c\x17\xbc\xd6\
+\x9a\x87\xff\xefv~|\xdd\xdd\x8c\x1e\xa9\xb4\xf3,k\
+l\xe4\xf2SNaI&c\xbex\xd7\xc5\xb2\xedh\
+\xb1m\x1beY\x9c\x9eL\xf2\xa2\xe7!\xcd\x15_\xb1\
+P\xef\xffR\xc1\x82\x10\xa0\xfbF\xf1\xbbB\xf0\xa3\xf2\
+\xb6\xb0c4u\xad\xa1\xbem)\xc2\x12h\x1d\xa0\x95\
+M\x10\x1c&(\x0e\x18\x019i\x94\xb0\x11\xc2\xc3\x12\
+\x0eJ8\xd8N\xd9\x194Z`\xcf\xa3\xbd\xfc\xe8\xa3\
+w\xb1\xf7\xb1\xc3\xd1\xbd\x1a\x92I.?\xe3\x0c\xce]\
+\xba\x94 T\xf7\xca\xb2\x90U\xc2\xb7l\x1b\xcb\xb2\xb0\
+l\x9b\x84\xe3\x90\x10\x82\x821}\xff\xedS\xce\x17F\
+\x03Xl\xaa\x1a\x1a\x88\x86\xb6v\x1a:\x96P\xae\xe8\
++\xe5\x13x\xbdh\xd9\x8f\xe3\xa4@\xa4\x11\xcaA)\
+'\xfc\xeb!\xc2u\xcb\x8a1r(\xc7\x8f?s?\
+\x8f\xdc\xfa\x5cy 2\x1c\xcb\xe2\xd5\xeb\xd7\xf3\xdbg\
+\x9cA2\x1e7\x82W*\x12\xb4m\xdb\xa8\xf2\x12\x12\
+B\xd86;\x5c\xb7,|\x84 X\x90\xf7\x7f\x09a\
+A\x08\xe0+\xbe\x1e\xb3\xd8\x82\xe62\x80\xd1#\xbdx\
+\xc51\xdaV\x9d\x86\xe5\x98P\xad\x1d\xebB[I\x94\
+\xecCH\x0f!\x1c\x94\xe5T\x11\xc1#(\x0a\xee\xf9\
+\xe7'\xb9\xfd\x86\xc7\xf1\x0a~t\xfdS\xdb\xdax\xe3\
+\xe6\xcdt65\xe1X\x16\x96eE*~\xaa/\x7f\
+\xd0\xf7\xb9w`\x80>\xd7\x8cUh\xc7\xe1\xf5\x9fd\
+}\xf76q7\xf0\x0d\xe0\x96-[kD\x0d~\xc3\
+\xb1\x80\xb5\x00!\xee\xdb\xc6G4\xfc\x0d!\xd1\x84%\
+h]\xb1\x8eL\xcb\x0a\x00,+\x8e%@\x05=X\
+Ba;)l'\x8d\xe3\xa4y\xf6\x17#\xfc\xf4\xf3\
+\xcf0t\xa02\x0eQ[*\xc5\x1b\xd6\xac\xe1\x94\x8e\
+\x0e\x9cx\x1c'\x1e'\x16\xfe\xd5\x10y\xfb\xbe\xe7\xe1\
+\x85~\xc0p>\xcf\xdd\x07\x0e\xf0\xdc\xf0p\xa4\x94,\
+\x1b.\xf8#Xs\xd1\xb8\x07\xde\x03|\x11\xf8\xd6\x96\
+\xad\xff}\xe2\x03\x0b^\x0d\xbc\xef&q\xa1\xd6\xfc\x1b\
+\x10u\xfaK\xd67\xd3\xba\xf2Tb\x89\x14\x96\x9d\xc0\
+\xb2\x13\x10\x1c\x06\x9d\xa3\x7f\x97\xe6?\xbf\xd0\xc3\xee\x07\
++\x91\x9c\xa4m\xf3\xca\xf6v^\xd6\xd5E\x22\x91\x88\
+\x84\x1f-\x89\x04v,6\x8e\x00\xa5b\x91{\xf6\xec\
+\xa1\xbb\xa7\x07\xbfR\xf7\xe7\xd4K7p\xd9\xc7\xb7\x90\
+h\xe8a\xf8\xd0S\x8c\x0d\xf6M|\xe4\xbb\x80\xab\xb7\
+l\xd5\xfb\x16\xb4`N\x12\x1c\x978@\xf7wD=\
+6\x9f\x01\xdeO8\xc4\xac\xb0\x1c\xdaV\x9fB]\xf3\
+2,;\x81;&\xb8\xf3+\x8f\xf1\xc8-=\xe8\xf2\
+h\xb3\xc0\xe9\x99\x0c[\xda\xda\xa8K\xa5j\x0a\xbez\
+[i\x8d\xef\xba<\xbe\x7f??{\xf6Y\x86\x8b\xc5\
+\xe8\x19:7t\xf1\x96/\xbc\x95\xd3.\xdd\x84\xd2\x12\
+\xad$RI\xdc|\x0f\x83=Opd\xef}\xa8 \
+23c\xc0\x07\xb6l\xd57.x\xe1\x9c`\x1c\xd7\
+H\xe0}7\x8a\xb3\xb5\xe0\x1b\xc0\x05\xe5}\x0d\xedK\
+\xd9uO\x03\xbf\xfe\xfa\x8b\x94\xb2\x15;\xbf\xd4\xb6\xd9\
+RWG{*5I\xd0\xb5\x84\xef\xc4\xe3\x1c\xce\xe5\
+\xf8\xe1\xc3\x0f\xb3\xab\xbf?\xbaN\xaa1\xcde\x7f\xf5\
+&.~\xcfk\xb0\xed\x22P@\xe9\x94I8Q\x0a\
+\xa5$JI\xbcb?\xfb\x9f\xf9w\xb2\x03{\xab\x1f\
+\xf9\xc7\xc0{\xb6l\xd5\x93\xd4\xc4o\x0aN@c\x90\
+\x10\xf7n\xe3C\x02\xae\xef}\x0a\xeb\xb1\x9ba\xf4P\
+\xe5h=\xf02\xcbbuY\xc0\x13\x05]C\xf0.\
+\xf0\x8b\x17^\xe0\xfe={Pe\x0f\xdf\x12\xbc\xf2]\
+\xaf\xe5\x8aO\xbe\x85\xba\xa6!\xb4\xf7,\xc8\xc3\xa6\xcd\
+@\x0b\xa4X\x02\xd62\xb4\xdd\x89V\x1a\xa5\x14J\x07\
+\x0c\xf5\xdcO\xef\xf3\xbfD\xc9\xa8\x82\xd0\x0f\xbc{\xcb\
+V}\xdb\xf1-\xa7\xe3\x83\x13\xd2\x1ax\x9d\x10V\xa1\
+\x83{\xb2}l)\xef\x8ba\x22F\x1b16b6\
+_\xbd\x88\xc5x\xb4\xaf\x8f;v\xef\xa6\xe4W\xb4\xc7\
+\x86W\x9d\xce[\xbf\xf4G,\xdf\xdc\x82\xf6\x9e\x80\xe0\
+ \xe8\x92\xc9#\xd0.Z\xbbH\xe9#\x03\x9f@Y\
+X\xc9\xf3\x10\xce\x1a\xa3\x0d\xb4\xc4\xcd\x0fpp\xc7\x8f\
+\xc9\x0f\xef/_R\x03\x9f\xd8\xb2U\x7f\xfe\xf8\x95\xd2\
+\xf1\xc1\x09!\xc0\xfb\x84\xf8\xb4\x86O\x81\xb1\xf3k\x80\
+\xb3\x81\xea\xa1\xa5,\xc7\xa9)\xfc\xb2\xd7\xbf\xb7X\xe4\
+\x8e\x03\x07\xe8\xaf\xb2\xf3\xad\xab\xbax\xf3\xe7\xdf\xcd9\
+\xff\xf3\x02\xb4\xbf\x0b\xfc\xe7M\xee\x80.\x01nD\x00\
+t\xc9\x10\xa0L\x02\xe9\x81\xbd\x0c;u\x11\x9a\x04J\
++\x94\x0c\xe8\xdf\xf7_\xf4\xef\xee\xae~\xf4\x7f\x01\xfe\
+d\xcbV\xfd\x1b\x13?8\xee\x04\xf83!\xceWp\
+\x1f`\xc5\x80\xdf\x02Zk\x9c'\x84\xa8\xf9\xd5\x8f\x01\
+\xf7\x0c\x0e\xf2b\xb6\xd2\x86\x13\xcf$y\xfd\x87\x7f\x9f\
+K?p%\xb1x\x1e\xed?\x1b\xa6\x8aU\x04^Y\
+7\xdbJy!\x09\xbc\x90\x04>JY\xd8\xa9\x0b\xb1\
+\xe2\xebPZ\xa2\xa4$;\xf0$\xbd\xcf\x8e\x9b\x04\xe3\
+v\xe0m[\xb6\xfef4\x22\x9d\x08\x02\xbcZ\xc1\xdd\
+\x00\x9b\x81\xb3\xa69\xd7\x8e\xc5*\x1e~,\xc6\xa3\xc5\
+\x22O\xe5r\x15;/\x04\xe7\xfd\xde\xc5\xbc\xe9\xb3\xd7\
+\xd0\xb4\xb4\x05-\xf7\xa3\xbdC\x08+\x00\xedM\x10\xfa\
+\x04\x22\xe0\x12\x04\xde\x04M`\xd6\x85\xb3\x86x\xdd%\
+a\xf75I)\xbb\x8f\x9e\xed\xffN\xe0\x95\xca\x8f\xf6\
+\x14p\xf9\x96\xad\xbag\x8aG\x7f\xc9\xe0\xb8\x13\xe0\x8f\
+\x85Xi\xc3>0\xaa\xff\xc2i\xce\x15\x96\x85\x1d\x8f\
+\xf3\x22\xf0\xa8\xe7Q\xaa\x9a\x8af\xf5\xcb\xd7\xf3\xd6\xeb\
+\xafa\xcd\xf9\xa7\x82\xecG\x07\xc6^K\xe9\x83\x96\xd8\
+6\xe3I@\x85\x04Z\x95@{UZ\xc0'\xf0}\
+\xa4\xaa\x90\x01\xab\x95x\xe3\x1b\x80\x04J)\x02w\x98\
+\x9e\xed?\xc4\xcd\x0f\x97\x1f\xe1 \x86\x04O\xf2\x12\xc6\
+q'\xc0uBXGL\xa7\xd1%\x02\xb8\x0c\x98j\
+\xf8\x8f#\xc0cB0\x5c\xf5\x8c\x8d]\x8d\xbc\xe9\xba\
+\xdf\xe3\x15\xef\xb8\x18\xa1]\xb4\xff\x02\xe8\x1c\x888Z\
+\xd9(%\x91\xd2E\x08M,f\x1b\x12\xe0FdP\
+\xb2\x80\x96%\x04.\x08i\x84\x1fj\x82\xc0\xf7\xcc\x00\
+\x15\xca\x90@\x93\x22\xd1t9\xc2j6#\x9bH\x97\
+C\xcf\xdfF.\x1c\xee\x1e3\x0e\xc2[\xb6l\xd5\xbf\
+\x5c\xb8\x12[X\x9c('\xf0j\x0d\xdf\x05X\x86\x99\
+n\xb4\x1ay\xe01\xa0z\x16)'\xe1p\xe9\x9f\xbd\
+\x96\xd7\x7f\xf8\x8d$2)t\xb0\x1b\x82\xfd bh\
+\x1c\x84H\xa0q\x90A\x10\x0e2Q\xc2\xb6m\xe2\xc9\
+\xd88M \x83\x02J\x16A\xbaXN\x80\xd6\x92@\
+z\x04\xbeG\xe0\xf9\xf8\xd2Ck\x89V\x01R\xfa(\
+%H4\xbe\x01;n\x02\x99\x96\xdd\xc0\xe1\x9d?b\
+\xf8\xe0\xa3\xe5G\xf3\x81\xad[\xb6\xea\x9b\x17\xb4\xd0\x16\
+\x08'\x84\x00B\x08\xf1\xa7\xf0\x90\x86\x97\x03l\x01V\
+aF\x98\xda\x0e<\x17\xae\x97q\xd6\x15g\xf0\xe6\xcf\
+\xbd\x85\xf6\xb5\x9d \x07\xd1\xfeS\xa0}\xb4N\x00\x0e\
+\x9a\x18Xq,+\x89\xd6f\x8c\x22\x19\xb8\xc8\xa0D\
+2\x95&\x16\x0f5\x81\xf6\xd0\xb2\x84\xefg\x8d\x19P\
+\x1e\xb6#P: \x08<\xbc\x92K }\x82\xc0G\
+\xe8\x00E\xa8!\xa4$Q\xff*\x12\x99\xb3\x01A,\
+\xb9\x92\xfe=\xb7r\xe4\x85_\x95\x1fQ\x03\xd7n\xd9\
+\xaa\xff\xe1\xb8\x15\xe21\xc2\x09!\x00\xc0\x9f\x08\xb1E\
+\xc0\xbd\xe5\xedf \x87\xf9\x9c\xcahZ\x0e\x97}\xec\
+L\xce\x7f\xfb\xbb\xb0\x84\x8d\x90\xcf\x83\xf7\x0c\x88\x84Q\
+\xf9$\xd0Xh\xe9\xa0qp\xe2\x19\x101d )\
+\x15FP\x81\x8b\xd6\x1euM-XBE\xe6@\xfa\
+\x05|7\x87V\xc6\x0c81\x81\x94&\x97\xc0sK\
+\x04\x81!\x01H\x10\xd28\x87\x81O\xa2\xee\x5cR\x8d\
+\x97 \xac$\xb1\xe4\x1a\x86{~B\xcf\xf6\x1fU\xbf\
+\xd6\x17\xb6l\xd5\x1f=.\x05x\x8cp\xc2\xa6\x8f\xff\
+\x86\xd6\xdd\x1a>J8~\xc00\x15\xe1[\x0e\xd9\xf3\
+\xde\x09\x97}\x066\xbczS\xd8u\x5c\xa3\xdc\xe70\
+I\xa2f\x11\x04\x08\x14J{(\xe5\xe2{y \xc0\
+v\x04\xb1x\x1c\x8dD\xc9\x80\xec\xd0\x91\xaa;\x0b,\
+;\x06\xc22\xc3\xd4\x04\x012P\x08L\x93\xb2\x13\x8b\
+\x01\x02\x81@\x05 \x03\x10\xc2B\x08\x8bR\xf6\x11\xf2\
+C?E\xab\x02\xd2\xeb\xa3y\xf9\x9bX}\xee\xbb\xab\
+\xc7$\xf8\xab\xeem\xe2;\xdd\xdb\xc4\x09\xc9\xb6\x9e\x0b\
+N\x18\x01\x00\xbe\xa1\xf5\x17\x80\xd7\x03}\xc0a\x8cF\
+\xf8\xd2\xe5\x9f\xe3\xaf7\xfe\x96\xc9\xfdt\x9c8h\x8d\
+F\xa1T\x01\xad\x03\xd3\x1bH\x87$\x10\x0at\x80V\
+>\xd2/\xa0\x82\x22\xe8\x80X\x22\x89\xed8h\xad\x08\
+\xfc\x12\xb9\xd1\xc10\x8d\x5c \x84 \x91H\x86\xc3\xd4\
+\x08JE\x0f\xa5\x01!\xb0l\x8bx\xc2\x90\x00\x01*\
+\xd0H_SNf\xf1\x0a\xcf\x91\xed\xff\x11\x81\x7f\x18\
+%\xc7\xa8\xef\xb8\x98\xb5\xaf\xf8P\xf5dY\xef\x02\xfe\
+_\xf761\xbe\xd7\xeaI\x8a\x13f\x02\xc6=\x84\x10\
+\xa2:G\xbf{\x9bx\x1f\xf0O\x00\x9b.\xbc\x9aL\
+\xcbf,\xcbFe\xbf\x8fm;\xe1leq\x10f\
+Q\xda\xc6+\x05hma9\x09\x12\xa9F\xc0B)\
+\xc9\xd8@\x0f\x81_BI\x8f\xc6\xb6\x0e\x12I'\xf4\
+\x07|\xdc\xe2\x18n)\x8b\x0c|,\x1b\xe2I'\xac\
+\x06\x06\xf8\xbeO\xa9(\x09\xbc\x1cR\x05\xa0%\xc2\x91\
+\xe8\xb0\xa9\xd2\x8euP\xdf~%\xf1\xcc\x19\x08\x91\xc0\
+\xcb\xeff\xf7C_\xc2w\xa3<\xc5\xfb\x80+\xb6l\
+\xd5\xc3\x9c\xc48\xa1\x1a\xa0\x8c\x1a\x1d4\x22W@c\
+\x1b\x13\xa0|\x94\x0a\xc2\xd6\xbb\x8a\x19\x80\x00Kh\x10\
+\x12\xa5}\x02\xb7\x80\x96\x9e\xd9oA\xba\xb1\x19\xad\x15\
+ZKF\xfa\x0e\x86s\x16\x9b\xaf9\x91Jb\x09\x0b\
+4\xf8^@\xe0\x06\x08,\x84\x10\xd8\xb6 \x91Ja\
+\xc5Z@\x0bd\x00\xbeK\xd4_E\xfa}\x8c\xf5}\
+\x0f/\xff4\xa0\x88g\xd6\xb2\xfe\xa2O\x93\xa8\x8bF\
+E\xbd\x08\xb8\xb7{\x9b\x98\xfd\x0c\x1a'\x00'\x05\x01\
+j\xa0B\x00M$\xc0r\xd3\xadRj\x82)\xf0q\
+l\x81\x96>Jyxn6:\x16\x8f'Hf\xea\
+\xcc\x98\xc4\x81\xc7H\xff\xe1\xaa\xdb\x08R\x99LH0\
+M\xb1P2QF!@\x08\x84(\x92L\xd7c'\
+:\x11B\xa0%\xf8\xae\x8eH\xa0\x82QF\x0f\x7f\x1b\
+7g\x06!q\x12\x9d\xac\xbb\xe0SdZ\xa2a\xef\
+O\x03\xee\xeb\xde&f7v\xfe\x09\xc0\xc9J\x00\xaf\
+\xbc\xa2\x82B\xe8\x03\xd8\xa6c\xb02\xc9\x1cJI\xa0\
+B\x02\xdb\xc1T\x0d\x95Q\xedF;H@R\xd7\xd8\
+\x1ce\x18\xe7F\x87)\x15*\xe9\xe4\xb6c\x93H%\
+\xd1J#\xa5\xa6\x94/!\x84\xa0\xfc\x0f\xd5G\xba~\
+\x09N\xc2$\xb5\xca@\xe0\x16u\x94\x9c\xaaU\x91\xd1\
+C\xdf\xc0+<\x15^\xaf\x915/\xff(\x8d]\xd1\
+\xac\xa8+0\x9a \xca\x818\x99p\xb2\x12 \xd2\x00\
+R\x16\x8d\x06P\x1a-\x1c\xd3H\x13i\x82 <5\
+@ \x89\xc5mc*\x02\x17\xafX\xd1\x02\x02EC\
+K\x1bZ\x99\xb1\xe8\x06\x0e\xf5Rmu\xd2u)l\
+\xc7\x98\x1a\xb7\xe0\xe1\xb9\x81!A\xb8(o'\x99\x96\
+\x8d\xc4S\xcb\x11\x80\x0a\xc0\xcd\xeb(sIk\x9f\xe1\
+\x9e\xaf\xe2\x17\x9f\x05@X)V\x9cu-\xad\xab\xa2\
+\x99SZ\x80_uo\x13\x97\x1d\x8f\xc2;\x1a\x9c\xac\
+\x04\x884\x80\x0c\x0aFE\xa3P:\x16\xb5\xd9\x97I\
+`L\x81!A,fE5\x82ba\x94j-\x90\
+H&I\xd7\xd5\xa1Qxn\x91\x91\xaa\xac!\x80t\
+}&\xd44P\x183c\x16\x19S\x00\x08MP|\
+\x9c\xba\xb63\x89gV\x01f\x8c\xc3RN\xa3\xa2\x88\
+U\xc0\xf0\xc1\x7f\xc4+>\x83\xf9\xa9\xc3\xd2S\xdfM\
+\xd7\xa6\xdf\x89n\x01\xfc\xb8{\x9b\xd8\xba0E67\
+\x9c\xac\x04\x88R\xb0|7\x17\xfa\x00\x1aM\xac\x22x\
+5\x99\x04\x96\xad\xb1l\x81V\x01\x81\x9bG\xfa%\xaa\
+I\xd0\xd8j\x1c4\xad\x15\x83G\x0e\xe3{\x11\xcf\x88\
+\xc5\x1d\x92\xe9$h\x8d\x94\x8a\xfch\x11Q\xf5\x0f\xed\
+\xe1\x17\x1e\xa3\xb1\xfde\xa4\xea\xd6\x98\x91iB\x12\x94\
+\x93\x87\xb4*2v\xe4&\xdc\xfc\x93\x18GA\xd0\xbe\
+\xfam\xac<\xfb\x8f\x08\x1dO\x07\xf8n\xf76\xf1\x91\
+\xe3R\x8a\xb3\xc0\xc9J\x80(#7p\xf3F]k\
+\x85&\x1e6\xf6H\xa4\x0c\xc2\x86\x9b\xf1\xfe@<a\
+\xcc\x80V\x01n)k\x06\x08\x08\x17\xdb\x114\xb7\xb7\
+\x816)`G\xf6\x8fo\xcd\xcd4d\x10\x96\x85\x96\
+\x1a7\xef\xe1\xbbA\xe4\x10\x22\x04J\x0e\xe3\x95\x9e%\
+\xd3~\x0e\xe9\x86u\xa6\xc3\x92\xd2\xb89E9\x9fT\
+zG\xc8\x0f\xfd\x147\xf70\xe5\x80vc\xd7%\xac\
+\xbb\xf0\x13\xe5\xf1\x8b\x04p}\xf76\xf1\x0f'C\xc0\
+\xe8d%\xc0!B?\xc0+V4@\xb9iV\xc9\
+\xc0\x8c=\x1c\x04U\xfe\x80\x04|\xe2\x09\x0b\xa5\xcd\xc4\
+\x13n>K\xa5\xbah\xb4@CS\x13\xf1x\x02\xad\
+\x15\xd9\xd1Q\xb2#\xa3\x91C'\x84\xa0\xbe\xa5\xc9\xe4\
+\x01\xa0\xc9\x0e\x17@\x85V \xfc\x17\x94v#\xbd\x1e\
+\xea\xda\xce$\xd3\xb2\xd1\x8cs\xac\xa08\xa6\x08\x5cs\
+!\xbf\xf8\x02\x85\xd1\xbb)\x8e\xdd_~\x0d\xd2\x8d\x1b\
+Y\x7f\xd1gH\xd6G5\x84?\x07\xfe\xab{\x9b\x88\
+f\xc78\x118)\x09\xb0e\xabV\x84\x8d\x81\xa5|\
+_8\xc9\x84\x02\xab\xc9h\x00e4\x80\xef\x87D\x08\
+\x1dB\xa5$BHb1\x0bM\x80[\xca#\x037\
+t\x06\xa5\x19_H(\xda\x96vR\xeeh\xda\xbb\xef\
+`H\x1e\x00M<nS\xd7\xb4\x04\xad52P\xe4\
+FK\x94\xa3\x82eM\xe0\x15\x9eD\xc9Q\xeaZ6\
+S\xdfvZ\xd4}\xb1\x94\xd5xEC\x02/\xff\x0c\
+n\xeeQ\x8a\xa3\xbfF+\xd3\xb9%\x96le\xed\xf9\
+\x1f\xa7\xa9+J\x85|%\xf0x\xf76\xf1\x9a\xe3V\
+\xb8\x13pR\x12 \xc4>\x00\xbf\x985m\xf8Z#\
+\xac\xa6\xa8\x1a(\x03\x89\x96\x01\x81?^\x0b(%I\
+\xa4\x9cp*:I\xa9\x90\xc5|\xfdeM\xa0He\
+\x92467\xa1\xd1\xf8%\x8f\xbe\x9e\xd0\xe5\xd0\xe6\xbf\
+\xba\xe6f\x9cX\x06\xa55\xc5\x9c\x8b\xef\x05\x13\xfc\x01\
+E)\xfb\x10Z\xfbd\x9a7Q\xdfi\xe6>\xd6\xda\
+\xf8\x04n\xce\x90\xc0\xcd=\x81Wx\x9e\xc2\xe8\xdd\xa8\
+\xc08\x9d\xb6\x93`\xc5Y\x7fL\xd7\xc6\xab\x08\xfd\x82\
+\x0e\xe0\x97\xdd\xdb\xc4G\xbb\xb7M\x1c\xf8h\xe1q\xd2\
+\x13@)\xf0\xdd~\xb4R\x08\xbb)t\xfa\x14R\x05\
+\x04A@\xe0\xfbF\xf0\xb2B\x00'\x1eCJ\xe3\x1c\
+\x16\xb3c\x15\x0d\x80\x8c4A\xfb\xd2\x0ela\xa1\xb4\
+\xa2\xaf\xb7\x9fR\xbe\x14\xc6w4\xc8\x01\x9a\x97\x9c\x1d\
+\xd6\x0a4c\x03ES\xe5\x0b\xb5\x80\x10\xa0d\x9eR\
+\xce\xe4\x04d\x1a7\xd0\xb4\xf4\xecp\x143p\x0b\x9a\
+\xe2\x98\xe9\xd1\x5c\xca=\x82\xf4z)\x8e\xdeGP\xda\
+e\xdeL\x08\xda\xd7\xbe\x81\xd5/\xffK,'\x0d&\
+\x11\xfa\xf3\xc0m\xdd\xdb\xc4q\x1d\xdb\xf0d&@\x94\
+\x93\xed\x16\xfaM\x0c^$\x8d#\xa8\x0d\x09\x94\x92\x04\
+\x81\x8f\x94\xe35\x80\x10\x8aX\xccF*I\xa9\x90G\
+)\x13\x1a\x8eH\x80\xc4v\xa0sEG8y\x85\xe2\
+\xe0\xee\x1e\xa2\x10\x9fV8N\x81\x86\xb6M\xa0\x08M\
+\x81[\xfe\xfe)\x87\x92\xa5w\x18\xaf\xf8\x1c\x00\xa9\xfa\
+\xb5\xb4,\x7f\x85q\x225x\x05M~D\x83\x92\x94\
+\xc6\x1e@\xcaa\xdc\xfcv\xdc\xdc\xa3\x94\x9d\xc3\xfa\xb6\
+\xd3\xd9\xb0\xe5\xb3$\xea\xa2h\xf1\x15\xc0\xa3\xdd\xdb\xc4\
+\xcb\x16\xbap\xcb8\x99\x09\x10\xe5\xda\xb9\xa1\x1f\xa0\xb5\
+\x02\xab\xd9LF\x85B\x06\xe6\xcb\x0f\x02o\x9c\x1f\xa0\
+\x94$\x91\x8c\xa1\xa5\xa91\x14\xb29*f\xc0\x10@\
+kEcK\x13\xe9\xba\x14Zk\xc6Fs\x0c\xf5\x8d\
+\x18\xcf\x1e\x8d\xf2{i\xe88\x15;^\x8f\xd6\x9ab\
+\xd6\xc3-\x04D.\xa1\xa8\xb4\x0e\x06\xbe\x09/'2\
+\xcbi[\xfd*\xacp\x82,\xbf\xa4\xc9\x0e(\xa4\x0c\
+(\x8d\xdd\x8fR9\x02\xf7@\xe8\x17\x98t\xf6x\xaa\
+\x83\xf5\x17\xfe5\x8d]\xe7\x97_w\x0d\xd0\xdd\xbdM\
+\x1c\x97\x09\xb4Of\x02<X^)e\xfb\x01\x85\xd6\
+Uf\x00\x15U\x09\x03\xcf\x1f\x17\x1dTJ\x12K\xc6\
+L\x8dA)rc\xd9\xaa6\x84\xf2_\x85F\xb1d\
+U8S\xa9\x86\xde\xdd\xbd\x04A9\xe5?@\xfb\x07\
+\xe8Xu\x11Z\x0bP\x90\x1drQJ\x87\x83\x93U\
+\xcc\xb5\x9b}\x14Uv\xf4\x12\xadt\xac\xbd\x04+\x9e\
+1\x13`\xf80\xd6\xa7\xf0\xdd\x12\xc5\xd1\xfb\xd0\xaa\x84\
+\x0aF(\x8e\xde\x8d\x0a\xccT\xbb\x96\x9db\xe5\xd9\xef\
+c\xd9\xe6w!L\xcd0\x01|\xa3{\x9b\xb8\xa7{\
+\x9b\x98.qz\xde8i\x09\xb0e\xab>\x08\xf4\x02\
+\x14\xb3\x03a\xa3\x90\xc6r\xda\x22?\xa0\x9c\xbb\xef\x8f\
+#\x80Y,\x0bl\xc74\x09\xe7\xb3y\x82 \x18/\
+\xfcpI\xa4\x12\xb4v\x9a\xa4O\xdf\x0b8\xbc\xbf\x8f\
+\xf2\x90\xe5\xd2;\x80\x93\xac\xa7e\xe9\xe9(L[A\
+v\xc0\x8b,E\x19Z\xfb\x94\xc6\x1eD\x87\xaa\xdd\x8e\
+\xd5\xd1\xb9\xf6\x12\x12\xe9fSM\x0c \xdb\xa7)e\
+\xf3\x14\xc7\xeeCk\x1f\xadJ\x14\xc7\xba\x09\xdc\xbd\xe1\
+U\x04-+~\x8b\x0d[>G\xb2.\xeaH\xfd*\
+\x8cI\xf8Z\xf76\xd1\xb2\x10\xe5|\xd2\x12 \xc4C\
+\x00~1\x8f\x0a\xc6\x0c\x01b\xcb\xab\x22\x80\xda\x04\x85\
+\x02\xe3\x10N$A<i\xe6\x1bP\x81\xa4\x90\xcd\x87\
+\x1a\xa1\x1cE\xac\x90\xa0c\xe5z\x9c\xb8\x83F3\xd8\
+;L\xa9\xe8b\xdc\xbf\x00\xe9\xed\xa3\xa1\xfdt\x92\x99\
+V\x13\xf4)J\xf2c\x95&\xe52\x94\x1c\xc3\xcd=\
+\x1em[v\x82\xf6\xb5\xaf&\xd3\xb2$\x8c\x1ajr\
+\x83\x8a\xec\xc0(\xc5\xb1\xfb\x0dY\xb4\xc2\xcd=\x81\x9b\
+{(LW\x83D\xdd2\xd6_\xf4i:\xd6\xbd\xb1\
+|\x0f\x1b\xf8S`g\xf76\xf1\xde\xeem\x13G\xc8\
+\x9c\x1fNv\x02Df\xa0\x985\xc1Aae\xc0j\
+\x08\xbfre\xe6\x1c\x9ed\x06B? \x13\x0b{\x00\
++r\xa3\xd9*\xcd1^\x0bXv\x9c\xe5\xebO\x8f\
+\xec\xff\xe1\xbd\x95v\x02\xe9\xed\x05$\xed\xab/\xc4\xb6\
+\x1c\xd0P\x18\x09\x08\xbc\xc9\x894\x81\xdb\x83_\xf6\xf4\
+\x01!lZ\x97_@\xe3\xd2p(\x22\x01\xc5\xacb\
+\xf8\xe0\x00\x85\xe1\x07L\x08\x1b\x08\xdc^\x0a#w\x22\
+\xfd#\xe1;\xc6\xe8\xdcp%\xeb/\xfa8\x89L\xf4\
+\xe1\xb7bF2y\xa4{\x9b\x88\x02\x09\xf3\xc5\xc9N\
+\x80\x87\xca+\xc5\xb1\xbd\xd1N;\xb6\xcc\x08S\x98\xb8\
+\xbd\x96\x12\xaf\xe4\x8d\xab\x0a*%\xb1m\x81\xe5Xh\
+\x14\xb9\xb1\xbc\x99\x9aVI\xb4R\x111\xb4V(9\
+Dc\xd7\xb9d\x1a\xccX\xc3\xd9\x91<\xb9\x91<e\
+\xfd-\xbd\xbd\xd8\xf1zZW\x9d\x13Mm\x93\x1d\x08\
+\xa8\xea\xa7\x12\xc1\xcd?\x83\x0c\x06\xaa\xf6\x08\x1a;\xce\
+\xa4}\xcdY\x80\x00\x0d^I3\xb0\xff\x08\xb9\x81\xbb\
+Q\xaa\x00\x80V%Jc\xf7\xe3\x15\x9e\x84p\xe8\xa2\
+T\xc3)l\xd8\xf2\xb7t\xae\x7fM\xf5\xa0\xa8\xe7`\
+\x9a\x97\xbf\xd7\xbdM,\x99o\x01\x9f\xb4\x04\x10B\x88\
+#\x83<F\x984\x9a\x1f\xaa\x0c\xd8a'V\x84_\
+\xb3\xa9\xf2I\xa5\xf0jh\x00\xa5$\xa9L\x02)\x15\
+JJrcf>c\xa5eT\x95\xd4JGm\x07\
+\xcb7U\xfa)\x1d\xde7\x88*\x1b\x02w\x0fhI\
+\xa6y=\xf5\xad\xe5(!\xe4\x86j0\x00M)\xfb\
+0J\x15\xc7\xedM7\xaeg\xc9)\x17\xe0\xc4\x8c\x16\
+Q\xbefp\xff\x08\xc3=\xff\x85\x0c\x9dA\x00\xbf\xb8\
+\x87\xe2\xc8]\xa8\xc0d\x92\x09+M\xc7\xfakX\xbf\
+\xe5\xa3\xd4\xb5tT_\xf2\x0f\x80\xe7\xbb\xb7\x89\x0f\xcf\
+\xa7\x9cO\x0a\x02\x84\xed\xeeV\xb88B\x88\x18\x10{\
+\xcb_PT\x9aG\x00\xdc\x5c\x0e\xe9\x99/+\x96X\
+\x11\xda\xf1\x00D\xd8\xb7\xbf\xec\x0c\xca\xf1A\xa1T]\
+\x22\xfa\xda\xb3\xc39\xd3\xf3\xb7Z\x0b\x94\x89 \x87I\
+7\xae\xa7\xb9\xcb\x84\xe6\xbd\x92\xcf\xe8\x91\xb1\xb0\xc1\xc7\
+'p\x0d\x01[W\x9cO,\x9e\x04\x05^^S\xcc\
+N6\x05Z\xb9\xb8\xd9\x87\xd1\x8c'H<\xb5\x94%\
+\x9b^E\xb2.\x19\xb5!\x8c\x1e)qd\xd7\xaf\xf1\
+KQ\xd8\x03%s\x14G\xef\xc1/>G\xd9\xe3L\
+\xd6\x9d\xc6\xea\x97\x7f\x8e\xd6U\xe3\xba\xd1d0\xa3\x99\
+\xcc\x19'\x84\x00U\x02\xb7\x85\xa9\xf7\xc40M\xa5\xb1\
+\xaau\x07pJ.\xb7\x81\xd1\xc6\x85\xd1\xbd\xe6\xf7V\
+\x1a;\xd6n\xd4|\xbc\x01%C-\xe0\xfa\xe3s\x05\
+\x94D\xd8\x16\x89LKX\x1d,\x10\x04~$\xf8\xc8\
+\x17P\x0a\x15\x0c\xa3\xb5`\xe9\xfa-\xd1\x94\xb5\x03\xbd\
+c&\xe4\x8cF\x96^4\x89\xa1v\x92\x8eu\xe7\x95\
+\xa3\xc6\xfa\xdd:\xd7\x00\x00\x10pIDAT\xe4\x87\
+\x14\xd2\x9f\xf8\x86 \x83\xa10_p<\xecX\x0b]\
+\x1b.\xa5\xa9\xb3\xf25\x97\xb2\x92\xde\xe7\x1e\xa60\xb2\
+=\xaaI @\x888\xd5\xcefa\xe4 #\x87\xa2\
+\xf0\x88\x07\xbc}\xcbV\xfd\xad9\x8a\x018\x8e\x04\x10\
+\x06\x96\x10\xc2f\xbc\x90k\x09\xbf\xbc\x1e{r'\xff\
+Y\xbeFnhot\xbdX\xd2$f8\xf1z4\
+q\xb4R\xf8n0\xc9\x0fP\xca#\xd3\xbc<T\xf5\
+e-\x10\xd6\x02BM\xa0\xb4B\x05Ch4N\xa2\
+\x95\xae5fpS)\x15\x83\x87\xb2a\xf3\xb1\x8b\xef\
+\xee\x03\x0d\xf1\xf4\x12ZWl@c\xbe\xe2\x91\xc3*\
+jQ\xac\x86_\xda\x83\xef\xee\x9f\xb4_XIZV\
+\xbe\x92\xce\x0d\xa7b;aT\xd1\x87\xc3\xbb\x9eg`\
+\xef\x1d(9B\xaa\xe1\x958\xc9\xb5\xe1/4C=\
+w\xb3\xe7\xe1\xbfAz#`z\xcf\xbdq\xcbV}\
+\xcb\x5c\xe5Q\xc6\x82\x12`\x82\xd0'\x0a\xdc\xa9\xb1/\
+6q\xf9\xc8\x979\x10H\x9e\x03\xc8\x0d\xeeG\x87C\
+\xf9\xc5R\xa7\x00\x84\xde\xfeR\x94R\x04^0),\
+\xac\x94$]\xd7\x81I\x13\xd7d\x87\xf3\x91\xf0UU\
+\x8d@\xc9<Z\x16\xd1Z\xd3\xba\xe2\x5c\xe2I\x93\xd6\
+?6\x90\xc7-\x85\xdezi\x17Q\x18\xb7\xe3\x0cR\
+\x0dM&^\xe0\x9b*^-\xb8\xf9'\x91r\xa4\xc6\
+\x11A\xa6\xe94\x96m~%\xc9\x86ph\x0c\x0d\xd9\
+\xfe\x1c}\xbb\x9f\xc7+\xf5\xa1\xb5\x87V.\x87\x9f\xff\
+>\x07\xb7\x7f\xbb\x5ck\x18\x06^\xb7e\xab\xfe\xc5\xdc\
+\xa42\x1e\x0bB\x80Y\x0a}\xa2\xe0\xa7:\x1e\x1b\xcd\
+\x19-\xa0\x02\x8f\xe2\xa8\xa9f9\xf1\xa5\xd8\xb1V\xb4\
+\xf6\x89\xa7\x96\x86I\x9d\x0a\xafTv\x06\xab\x92ED\
+@\xa6i\x05Z+\x8a\xb9\x12~\xc93\x82\x8f|\x01\
+Y\xa5\x05\x14B\xc4Y\xba\xc1\xe4pj`\xa87g\
+\x9a\xa4U\x09\xdf-wY\x15\xb4\xaf9\x1f;f\xe6\
+0*\x8ei\xdc|\x0d5\xa0%\xa5\xb1\x87\xd0\xda\x9b\
+|\x0cp\xe2\x1d,\xd9p)\xad+Wc\x85=\x8c\
+\x0a#=\xec~\xf0\x06\x06\xf6\xfd_\xf6>\xfay\xfa\
+\xf7\xfc\x22|\x12\x0e\x05\x92K\xb6l\xd5\xf7\xcfM2\
+\x93q\xcc\x08Pe\xd7\x1d\xc2a~j\xfc\xad%\xfc\
+\xf2\xf1ZZ\xc0\x01\x9c\xc7v\x10u\xbf\xce\xf6U\xec\
+j<}\x06(\x0f'\xd5\x82\x10)\xb4V\xb8\xc5\xc9\
+\xb5\x01)sdZ\xd6\x86f@32\x90\x8d\x82A\
+\x91/\xa0\x94\xf1\xc6\x95is\xc8\xb4\xae\xa1\xae\xc5\xd4\
+\xb2\x8a9\x8fb\xd6\x03\xad\xf1\x8b/P\xce\x06\xb5\x9d\
+:\xda\xd7\x9d\x13\x99\xe9l\x7fm\x7f@\xab\x02\xa5\xec\
+#L\x0a!\x96\xcb\xce\xce\xd0\xb1\xfe=l|\xf5\xf5\
+\xd4\xb5\x9a\x0cr\xe9\x178\xfc\xdc/\xc8\x0d\xee6\xd7\
+\xd0\xec\xe9\xed\xe75\x97\xfc\x11;B\xdf\xe9\x98\xc8n\
+\xde\x17)\x0b\x9e\x8a g\x12~\xad\xfdSi\x00\x07\
+\x88]\xf7M^\x08\xa4\x99\x88zl\xe0E\x944i\
+\xdd\x89\xccf\x94\xcca\x09M\xa2n\x05Ji|\xd7\
+D\x06\xc7\x91 \xc8\x91\xaa\xef\xc0\x8e\x9b\xfe\x01\xa3C\
+y\x02?\xac\x0aF\xb5\x01C\x00\x1d&\x8a\xa04]\
+k\xcf\x8f&\xa5\x18>R\x08G\x13\xcb\x13x\x95T\
+\xb2t\xfd*\x9a\xbaL\xe8\xd6x\xf5\xb5\xfd\x01\xe9\xf7\
+\xe1\x15vL\xdao9\xcd\xa4\x1a/\xc6\x89\xaf \x96\
+\xecd\xcd\xcb?LC\xc7\xf8i\x8f\x95\xe2\x99\x07\xb7\
+\xf3\xba+?\xc2\x81\xea\xf2;\x16D\x98\xd7\x8f\xc3\x9b\
+\xdbL\x16|-!\xdb\xd4\xd6\x04Si\x88q\xc4\xe8\
+\x1f\xe2?\xc0\xf4\xd5\xcb\x0dl7\xf7\xb7\xd28\xc9U\
+(\x99%Y\xbf<\xca\xd1\xf3J\x15\x02\x98\xe4\x911\
+4\x8a\xe6\xce\xf5f^B\xa9\x18\x1d\xcaU\xc6\x09\xd4\
+&\xa6\xa0\xfc1\x94r\xa3<\x80X\xaa\x91\xd6e\x9b\
+\x01\xf0]En\xd8\xb4\x03x\x85\x9dTK\xb9y\xd9\
+9$\xebM\x10)\xf04c}\xaa\xe6\xc7\xee\x15w\
+\x12x\xbda\xe1\xd9$2\xa7\x93j|5\x96m\xe6\
+:T\xc10=\xdb\xafg\xacog\xf4\x1b%y\xfa\
+_\xff\x83+>\xfc\xf7\x0cL(\xebh\x09\x890\xa7\
+d\x929\x11 t\xeej=\xcct\x84\x98H\x86\xe9\
+\x04?\x89\x08\xdf\xff\x19\xb7\xea\xd0\x03\x1b\xee\xad\x98\x81\
+D\xe6td0\x82\x93l\xc0\x8e\x99\xb1F\xbc\x92\xaa\
+\xd2\x00\x01\x817\x88\xd6\x8a\xba\xd6\xd5\xa6\xbd^iF\
+\xfb\xf3\xc6a\x0c\xd5\x7f\xb9j(\xbd\xde\x8a\x16\xd0\x9a\
+\x96e\x9bq\xe2F\xb8c\x03\x9ei[\x90\xd9qZ\
+@\x08\x87\x8eu\xaf\xc0\x8e\x9b\xe2t\xf3z\x8a \x11\
+\xb8\xb9\xc7\xb0\xec:\xd2M\x97\xe2$\xd7S\xb6\x1f\xc5\
+\xb1\xc7\xd9u\xff\xc7\x19>\x18\xcde\xa5Gs\xdc\xf0\
+{\xff\x9b\xff\xf1\xcd[\xc8NS\xa6\xd5D\xb0\x8e\x96\
+\x07GM\x80\x09_\xfdD\x81O$C\xf5\xf1Z\x0f\
+>\x93i\x88\x8e\xfd\xf8.\x06\x87F\xf8\x15@);\
+\x88\x9b7\x02\x88%\xd7\x82v\xb1\x04$3+\xd0\xca\
+|\x85J\xaa*\x1f\xa0\x84\x0c\xc6\x10V\x82\xe6\xaeS\
+@C\xe0+r#\xc5*_\xc0\x90 p{\x22\xe1\
+k4\x96\xe3\xd0\xbe\xfa\x5c\xc04\xe8\x8c\x0d\xf8h\xad\
+\x8d\x16\xa8\x82\x13k\xa6k\xfd9\x94{\x8a\x17F'\
+\x07\x89\x84\x95$\xdd\xfc:\x9c\xe4j\x84\x95\x0c\xaf\x99\
+c`\xcf7y\xf1\x81/\x87I\xac\xa0\x14\x83\xdbw\
+\xf1\x07\x97\xff\x19_:db_S\x0a\xbd\x96\x0c\x8e\
+F\x1b\xcc\x9a\x00U\xb6\xbez\xb1klOE\x8c\xd9\
+\x90a*\x12\xc4\x00\xe7\x8e\x07\xf9a\xf9yF\x0e\x95\
+\xb5\x80\x85\x153A\x95d\xc32\xc0\xf8h^QG\
+YCJI\x02o\x00\xa5\x15\x0d\x1d\xa7\x82\x153\xbe\
+@\x7f!\xca\x11\xd0a\xbb@\xe0\x0f\xa2dq\x9c\x16\
+\xa8k]N\xb2\xde8\x84\x85Q\x89WP(9F\
+\xe0U\x0dq\x0a$2\xabi[S\xb1\xdf\xd9\x01\x85\
+W2$\x88\xa76\xd2\xd8u\x0d\xf1\xf4\xe9h\xe5\x12\
+\xb8=\xb8\xb9'\xd8\xff\xe8G9\xf4|w\xd4\xcb\xa8\
+\xe4\xf2\xe0?\xdf\xcae\xef\xfd\x1c\xdd5\xcah\xba\xb2\
+\x1d'\x83\xd9\xfa\x06\xb3:)d\xd4D\xe1O\x14z\
+\xad\xaf~\xba}S1zJS\xf1\x8f7\xf3|\xb6\
+\xc0\xb3\x00\xa3\x87w\x98\x8c_ \x919\x03%s8\
+\xc9\x0cv\xdc\xb4\x9e\xb9\x05\xd3\xa6o\xaao\x12\xe9\x0f\
+\x86\x91A\x87\xa6\xaeS\xc3F\x19\xc9\xd8P1j&\
+.\xfb\x0c\x81{\xc0d\x1f\x85\x03S\x80\xa6}\xcd9\
+\x18\xab\x07c\x03\xd2\xa4}\x15'O=X\xd7r:\
+\xcd\xcb\xc2Lo\x0d\xa3\x87\x14\x96}\x01\x99\xd67\x99\
+\x96L\x8c\xad\x1f\xdc\xf7-v?\xf4\xf7d\x07\xa3\x18\
+\x81:\xd4\xcf\xd7\xde\xf2\x17\x5c\xfd\x83\x9f3\xc8\xe4\x0f\
+j\xaa\x8fn\xcae6$\x98\xf1\x04QI\x7f\x99\xe9\
+\x86S\x9d3\x1b\x06\xcfd\xdf\x22\x12<\xf2\x8c\x99\x8a\
+F+\x8f\xd1\xde\xfb\xc3gL`\xc7\xdb\xb1\x04\xa4\x9b\
+V\x86#\x7f\x84=y\x01\xd0\xf8\xee\x91(\xe8\xd3\xd8\
+\xb9\x01;\x96\x06`\xa4\xaf\x84\xef\x07\xe3\x9a\x87}\xef\
+\xa0\xa92\xea\xb09H+\x12\xa9:\x9a\x96\x98\xe0\x93\
+\xf4\xa10\xacP\xc1\x08\x81_=\xfa\x88)\xaa\xa6%\
+\xe7Q\xdfj\xfc\x11\xad\xe1\xc8\x0b\xf73\xd6\xf7\x0c\xa0\
+(\x8e>D\xcf\xf6\xef\xd0\xb7{\x1fA\x18\x1a\x90\x92\
+\xc1\xbb\x1f\xe5=o\xfb\x08_\x1b\xcd\xa1\xa9-\xf8\xd9\
+\x0a\x7f\x9c\x1cf\x22\xc1l4\xc0l\xd8V}\xd3\xa9\
+\x1e~\xba\x97\x98\xadf\xb0\xbf\xf0\x1d\xees}\x06\x00\
+\x06\x0f<\x82\x0aL[\x88\x93X\x8e\xb0S\xa4\x1b\x97\
+\x81\x16h\xcd\xb8\xc0\x8c\x929\xa4?d\xda\xff\x1dA\
+\xeb\x0a\x13\xee\xd5R3r\xb8T\xe54*\xa47\x88\
+R\xf9p\x04\x11\x15\xf9\x03MKO\xc1\x89\x1b\xe2\xe4\
+G4\x81\xab\xf1\x0b\x93\xb5\x80\xed4\xb1\xe2\xac\xbf\xa2\
+u\xb5i\xb8\xd1(\x0e=\xf7\x13\x0e<\xf5Mz\x9e\
+\xbe\x93\xe2X%X08\xc2\xcf?\xf5\x0d\xde\xfa\xf1\
+\x7f\xe4\xe1Y\x94\xddl>\xc4\xf2y\xd12\x9dO0\
+-\x01\xc2\x1f\xcef\xa9u\xf3\xe9\x1en\xb6\x0c\x9fD\
+\x80|\x11\x9e}\x91\x9f\x00(\x190x\xe0\xd7\x84\xa5\
+l\xa2\x83N\x82dC{\xa8\xe2\x19\x17\x98\x09\xdc\x03\
+F\x98JQ\xd7\xba\x82x\xa6\x09\x80b6\xa0\x98\xf3\
+)\x8fC\xa0\xb52\x11\xbf*\xe1k\xad\x11\xc2\xa2m\
+\xf5\xd9\xd1\xf5\xb2\x03\x9a \x18B\xfa&\x81D\xd8i\
+\x12\xf5\xe7\x92j\xba\x14;\xbe\x9c%\x1b\xdfA\xe7\xba\
+K\xa3\xf3\x0b#cQ\x0e\x81\xeb\xb1\xef\xe7\xf7\xf2'\
+o\xfa \x7f}\xd7#\x8c\xcePfS\x91`\xa6\xb2\
+\xae\xd6\x045I0%\x01\xaaT\x7f\xad\x1bN\xb7\xaf\
+\x169\xa6\xda\x9e\xc9d\xd4\xd4\x12_\xfc.?w=\
+\x06\x01\x86z\xb6\xe3\x15\x8d\x1a\xb6\xecF,\xa7\x99\xfa\
+\xb6\x8dQk]q\xacR\x1d\x0b\xdc\x9eqM\xb4\xed\
+\xab\xcf\xa1\x5c\x0d\x1b=\xe2#\x03\x15%\x92\xfa\xc5\xfd\
+&;\xb8\xdc--\xac\xf7\xa7\x1b\x97\x90i6\x89\xa4\
+\xbe\xab)\x8ej\x02\xef \x89\xba\xb3H7\xbd\x16'\
+\xbe2\xbaf\xe0\xf5Q\xca\xef\x1c\x97=\xa65\xfe\xce\
+}\xfc\x9f+\xff\x92w~\xfe_x\x9c\xa9\x85;\xd3\
+\xbe\xa9d0\xdd2\x09\xd3i\x80Z?\xacu\xc1\xe9\
+\x04m\xd5\xf8\xddlH2-Az\x8e\xe0\xdf\xf1 \
+7\x96K\xb4\x7f\xf7]\x80Q\xf3\xf1\xf4)$2\x1d\
+$\xd2\xadh4^AG\xbe\x80\xd6\x1e\xd2\xab\xd8\xec\
+D\xba\x85\xa6e\xa7\x01 \x03Mn\xc8\x8f4\x80\x0c\
+F\x08\xdc#a\x82\xe8\xf8\xea\x5c\xdb\xaa\xb3\xa3\x91\xc1\
+\xf2\xc3\x82D\xe6\xb7\xb0c\x9d\xd1\xebJ\xbf\x9f\xbe]\
+\xff\x87\xe7\xef\xf9$\xa3\x87\x0fDA\xa1\xb1<\xdb\xaf\
+\xbf\x91\xad\xd7|\x8a\xef\x0d\x8e \xa7x\xbf\xd9\x96\xcd\
+Q/\xb5\x94\xc0l\x090\x15\x9b\xa6#\xc9l\xaf3\
+\x91$\xb3\xd2,\x7f\xfbm\xee\x1b\x18f;@np\
+\x0f\x85\xd1=\x80F\x88\x18Nb\x19MK7\x83\xd1\
+\xe0\xe4\x87+\x02\x0c\xa2\xc6\x1c\x83\xa6%\xa7\x10O\x9b\
+IM\xf3#\x8ab\xb6\xec\x0c\xea\x9a^>\x80\x93\xec\
+\xa0c\xddk\x01\xd0Jrd\xd7/\x91~?*\x18\
+a`\xcf\xf7\xd9q\xd7G8\xb2\xeb\x9e\xa8j\xe7\xf9\
+\x0c\xde\xf1\x00\x9f\xbd\xec}|\xe0'wsh\x16e\
+2\x9b\xb2\x9e\xaa\xec\xa7\xc3\xa4\xe3s\xed\x9e<\x9d\xd0\
+\x8f\xe5\xcbL{\xdd\x7f\xbe\x95\xef|\xec\xdd|I\x08\
+\xec\xbe]\xff\xc5\xaasW#\x83!\x12ug\xa3d\
+\x96T\xd3s\x14\x87\x8f\x10\xb8\x9aRN\x93\xac\x13\x04\
+\xdea\xb4\xf6\xc2d\x0b\xb0\x84\xa0c\xedy\xf4>{\
+\x07J\xf9\x8c\xf5+3T\x5cJ \xfd\x01d0\x84\
+\xed\xb4\x00\x02;\xd1E,\xb1\x06;\xd6N\xbaQ\x93\
+\xed\xdfEad7\xf9\xe1\xbd\x1cx\xfa\xdb\x14Fz\
+\xaa\xe7\x1d\xc2\x0f\x18\xdb\xbe\x8b[?\xff/\xfc\xf8\xd0\
+\x00\x85)\xcan\xb6\xe5\xadg\xd8.\xef\x9bM\xd9F\
+\xa8\xa9\x01j\xa8\x8a\xe9\x1e\xf8h\x188W\xd4$\xc6\
+\x7ft\xd3\xf3\xcc\x8b\xa6\x8d\xc0\xcd\xf71\xdcs\x0fZ\
+y\xa8 G\xb2\xfe\x02Z\x96\x9b\x08\x9e\xd6\xa6\xdaf\
+\x8aLM\xd2\x02\xf1T\x9a\xf6uao,m\x1at\
+\xca]\xbd\x03\xf7 \xf1\xf4&\xd2\xcd\xaf'Yw>\
+v\xac\xc3\xdc^Xtm\xfc\x9f\x94\xb35s\x03{\
+\x22\xe1\xfb\x01\xd9\xc7vp\xd3\x1f~\x9ck\xde\xff\x05\
+n=4\x80\xcbd!LWn\xc7\xaa\x1cg\xbc\xce\
+\x94\xe3\x04\xd6\x88\xfa\xd5r\xd6\xc4\x14\xdb\xd5\x0e\x9c`\
+\xfa\xaa\xcd\xbc\x96%m\xa4\xbf\xf7y\xbe\x9c\x8c\xd3\x82\
+\x80\x95g\xfe\x0e\xe9\xa6\xb3\x88\xa5\xd6\xa3\x82az\x9f\
+\xfd{F\x0e\x1d@\x03\xe9FA]\x8b\x85\xb0\x12\xa4\
+\x9b.\x8d\xb4@\x19#\xbdO3t\xd0\x84xm'\
+\xc6\xb2\xcdo \xd5x*\xb1\xd4\x06\x84\xa8\xccgR\
+\xca\xbe\xc0\xe0\xfe\xdb\x19\xeey\x98\xf2\xb8\x81\x00A@\
+\xfe\xa9\x17\xf8\xf1\x97\xb6q\xdb\x81\xc3\xe41\x09\xad\x1a\
+\xd3\x86\xa1\x8e\xf3\x22\xab\xee\x1fmO\x1c\x92o>\x04\
+8Y\x16\xf1\x91\xab\xd9\xf2\xa6K\xf8\x80\x11\x9c\xc3\xaa\
+s\xaf\x22\xd5p\x0e\x96\xd3\x8a_|\x91]\x0f|\x81\
+\xc0-\x81\x80\xa6.\xa3\xdec\xc9\xd5\xe1\xe0\xcf\x80\xb0\
+\xb1\xe3\x1d8\xb1\x0e\xfa^\xbc\x93\xc1\xfdw\x01\x10O\
+\xb7\xb2\xf2\xec?$\x96\xec\xc4v\xda\xc8\xf6?B\xff\
+\x9e_P\x18\xd93\xae\xac|I\xee\x99\x17\xf8\xf9\xf5\
+\xdb\xb8m\xff!rUB\xa8%\xfc\x89\xfb\xc6\x09\xe8\
+(\x7fw\xb4\xc4\x92\x13\xe5=\x1d\x01\xaa\xbf\xee\x13&\
+\xdc\xd9\x9e\xf7\xdd\xcf\xf0\xbf6\xac\xe4uFp\xf5\xac\
+>\xf7]$\xea^\x06Xd\x07\xba\xd9\xf7\xd8w\xb0\
+c\xf5\xc4\x92\x0d4/k&\x96h \xd9p\x11N\
+\xac\x13\xcbi\xa2b\x0d%\x07\x9e\xfc&#\x87\x1e\x00\
+ \xd5\xb8\x82d]\x0b\xa3Gv\xa0\x82\xf1Y=#\
+Yv=\xb4\x9d\xdb\xff\xe9f\xee\x1d\x1a\xc3\xad!\xb0\
+\xb9|\xb9S\x09\xbf\x16I\xa6\xfc\xd2k\xed\xd3\xd5\xea\
+\xaa,\xe7\xe9\x86\x8a]`-0k\xe1\xceb\x9fH\
+%\x88\xdd\xfcE>\xd9\xd6\xc4f\x80\xba\xd6%\xac<\
+\xebZ\xec\xb8i\xc4)\xe5\xfa(\x8c\x84\xf1\x02G\x90\
+n\x10\x08+aZ\x13#\xe1\x83R%\x0a#\xbb\xe8\
+y\xea[\xf8\xa5\xc9\xa3\xbcJ\x85\xbb\xb7\x97\xee\xdb\xee\
+\xe2\xf6\x1f\xdd\xc1n\xa6\x17\xfaL$8\xae$\xa91\
+\x22\xeb\x8c\x048\x1a!M\xb4\xfb\xf3!\xc1$\x01O\
+sN\xf4w\xc3*\x1a\xbe\xf6Q\xbe\x98N\xd2\x05\xd0\
+\xb2\xf2t\x96\x9ezmd\xeb\xf3\x83{q\x8b\xa6\xc9\
+5\x16\x17$\xea\x04\x888Z\xda\xe4G\x9e'\xd7\xff\
+4c\xfd\xcf\xa3\xd5\xe4\xfc\xbd\x5c\x81\x9e'wr\xc7\
+7o\xe1\xae=\x07#5\xaf\xa7\xf8;\xdd\xfa\xd1\x12\
+`\xae$\x19\xb7\xd4\xfa\xfaa\x06\x02\xc0\xbcL\xc1L\
+\xbf\x9b\xe9\xcb\x9e\xeax\xads\xa2\xfd\x97\xbf\x8a\x15\x1f\
+\xb9\x9a\xeb\x1d\x9b4\xc0\xb2\xcd\x97Q\xdfq\x09*\xc8\
+\x13x#\xf4\xef\xbe\x17\xbf8D\xe0\x8f\xa1\xd4\x18\xca\
+\xaf\x91\xc4g\xa0G\xb2\xecza?\x0f\xfdg7\x0f\
+\xdd~\x1f\xe5\x11$\xca\xcbD\xc1OG\x82\x99\xc8p\
+\xac\x082\xd1\x1c(\x8c\xdd\xaf)|\x98\x05\x01\xa0\xa6\
+)8\xa6\xea{\x16\xc7j\x05\x88j\x12\x00\xe0C\x7f\
+\xc8y\xbf{)\x9f\xe2(\xabSJ\x13\x0c\x8e\xb0}\
+\xc7n\x1e\xbc\xf5\x0e\x1e|l\x07\xc3\x8c\x17\xfaT\xcb\
+\xd1\x90a\xae\x848\x1a\xe2T\x7f\xf9\xd5\x93\xafL\xc2\
+\xac\x87\x8b?\x0a\x12\xccF\xe8\xd3\x09\xbe\x96p\xa7\xfa\
+[\xbd\x8c\xdb\xf7\xd5\xff\xcd[\xcf=\x95wO\xf7N\
+RQ8\xd4\xcfC\xbd\xfd\xec\xda\xb1\x9b]?\xfb5\
+/\xf6\xf6S\xa2\x12d\xa9\xfe;q\xbdZ\xd8\xb3!\
+\xc3l\xb4\xc3|\xb4E\xadc\x93\xbc\xfe\x898\xaa\xf9\
+\x02\xa60\x07\xc7J\xe0S}\xd1\xb3\x16\xfa\xc4\xe5\xdb\
+\x9f\xe6]\xe9\x14-%\x97\x5c\xc9#W(\x92\xcf\x17\
+\xc9\x1d\x1ed\xf0\xce\x87\xd9\xf3\xdcn*\xa3F\x8f\xc7\
+T\x04\xa8E\x84\xe9\x081\x9d\x9f0_2LG\x8e\
+i\xd5~5\x8ez\xc2\x880JXv\xf8fc\xb3\
+gR\xe73\xa9\xf6Z\xc7\x8ef\xa1\xc6\xdf\xd9b:\
+\x0d0\x1b\x930\xd3\xfatZb\xaed\x90\xb5\xbc\xfd\
+\xa9p\xd4m\x01\xe1\xb5\xa5\x10Bc\x04R~\x81\xea\
+\xf5\xf2R\x8eO\xab\xaa\xe3\x13\xf7\x95\xff\x8a\xaa\xed\x99\
+\xd4\xfdt\x84`\xc2\xdfZ\xc2\x9f\x89\x08z\xc2\xfaL\
+\x1aa.d\x98J\xe8s%\xc3\xac\xbf\xfaj\xcck\
+\xca\x98P\x1bL\xf5\xd5\x1f\xad]?*\x1b_ca\
+\x9am\x98=\x01&\x0a\x7f\xaa\xbfs1\x09\xd3\x99\x83\
+\xf9\x98\x8a\x9au\xfc\xd9\xe0\x98\xcc\x19T\x83\x083\x91\
+`N\x8e\xdd,\x16j\xacW\xff\x9d\xb8>\x1d&\x0a\
+}\xe2\xbe\xf9\x9a\x05\x98=\x19ji\x87Y9y3\
+\xe1\x98N\x1a5\x81\x08\xb3\xb5\xefLq\xcelT>\
+\xb3\x5cg\x9a\xf5Z8Z-0q{\xbefa:\
+R\x94\xa3z3\xbc\xc2\xec\xb0`\xb3\x86M\xa81\xd4\
+\x12\xdeL6~\xaa\xfdL\xb1\x7f:\xfb\xcf\x84c\xb3\
+\xc1\xc4\x82\x99\x8a\x00\xd5\xebS\x91b*sp4d\
+8*\xe7n\xb6X\xf0i\xe3j\xa4\x95\xcfE\xe8s\
+U\xf9\xc7\xc2\x04T\xaf\xcf\xc7'\x98\xc9G\xa8\xb5-\
+\x81\x85\x90{\x84\xe3>o`\x95f\x98\x8b\xc0\x8f\xd6\
+\xe1\xabE\x80Z\xdb\x13QK\xf8\xd5\xeb3i\x81\x89\
+\xdb\xb3%\xc3\xbc\x1c\xba\xb9\xe0\x84N\x1c9A;\xcc\
+d\xe3gK\x02&\xac\xcf\xd5\x0c\xccD\x82\xf2\xfa|\
+\x08Pv\xe6\x16\xf63\x9f\x06'\xc5\xcc\xa1\xd5\x98\xd0\
+\x17\xa1\x9a\x10\x1c\xc5z\xf5\xdf\xe9\xd6\xa7\xc2T\xf6\xbf\
+z}\xa2\xb0k\xed\x9bR\xc5\x9f,\xe5~\xd2\x11\xa0\
+\x16&\xf4Q\x98\xad\x1f@\x8d\xed\xa3q\x02a\xea/\
+\xbf\xbc=\x91\x00\xb5\x9c=N\xe62~I\x10`:\
+T%\xb0\xce\xd6\x14\x1c\xad\x06\x98\xe9+?\xa9\x05<\
+\x13^\xf2\x04X\xc4\xfc\xf0\xff\x01-\xef\xe5]0^\
+&Q\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00:\xf4\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x09\xediCCPICC Prof\
+ile\x00\x00x\x9c\xad\xd6gTS\xd9\x16\x07\xf0\
+\xff\xbd)\x84\x04B\xef- \xddP\xa4Jo\x8a\x0d\
+\x18D\x14\xb0\x02!4)\x11\x82(vP\xb0\xa1`\
+W\xb0+v\x05\x95Q\xc7\x8a\x0a\x22\x8c\xa24\x11Q\
+, 8\x22\x1d\x0b\x82y\x1f\x82e\xd6\x9bY\xef\xcb\
+\xdb\x9f\xf6\xd9k\xdd\xb3\xce\xf9\xed}\xd7:\x80\x94b\
+\x98@\x10G\x02\x88O\x10&\x05L\xf0\xe4\x04\x87\xcc\
+\xe4H\xd4\x81\x0a5H\x03\xb0\x0f\xe3%\x0b<\xfc\xfd\
+}\xf0\xaf\xf1\xb1\x1e\x04\x00\xd4\x98\x85\x09\x04q\x89G\
+\xa3\xab\x11\x97\x97\xa9\x92\xe3\xc2\xe9\x9f\xab\xfb\xf8\xdf\xbf\
+\x03\x00\xb0\x93\x82Cf\x02\x04\x17\x80b\x948w\x07\
+\xa0\x18.\xce\x03\x01(\xa6\x0a\x05B\x80\x88\x06\xa0\xc8\
+\x8b\x0e\x8b\x00\x88\xa5\x00\xb8I\x81\x01^\x00q\x1c\x00\
+;J\x9c_\x06\xc0\x0e\x17\xe7\xe5\x00\xd8\x0byQB\
+\x80h\x00(\xf2\x09\x111\x09\x00\xb5\x03\xa0\xbbF\xf0\
+\x93y\x00\x8b\x0b`^D2/\x1e`m\x04`\x19\
+\x1f\x9f\x18\x01\xb0\xae\x010\xe6\x09\x92\x84\x00\xab\x05\x80\
+Yp\xc8L\x8e\xf8\xc8\xe1\x91\x80u\x08@\x1e\xffY\
+\x9b/\x05\x14i\x02\x8a5?k&\x11\x80F\x01p\
+\xf5\xc4\xcfZ_\x00\x08\x00\x84rUr\xa4\xb5\x15\x00\
+\x80\x90\xf2\x04h/D\xa2>C@b\x0b0\x9c+\
+\x12}=$\x12\x0d\x1f\x06(M\xc0\xad8^J\xd2\
+\xc2\x11/\x82x\x00\xfc\xaf\xb5\xf8\xce#A!\x00\x02\
+$\x95\xce\x90dI\xb1e\xe4\xe4\x15\x94\x94U\xd54\
+4\xb5u8z\xa3\xf4\x0d\x8d\x8cMGs\xcd-,\
+\xc7X\xdb\xd8\xda\xd9\x8futrvqus\xf7\xf0\
+\xf4\x1a7\xde{\xc2\xc4I\x93\xa7\xf8\xf8\xfa\xfd\xe6?\
+5 p\xfa\x8c\xa0\xe0\x90\x99\xb3\xe6\xcc\x9d\x17\x1a\x16\
+\xce\x8b\x88\x8c\x8a\x8e\x89\x9d\x1f\x17\x9f X\x90\x94,\
+LY\x98\xba(m\xc9\xd2e\xcbW\xac\x5c\x95\x9e\xb1\
+&3k\xed\xba\xf5\x1b6fo\xca\xc9\xdd\xb2u\xdb\
+\xf6\x1d;w\xed\xde\x93\x97\xbfw\xff\x81\x83\x87\x0e\x1f\
+9Zp\xec\xf8\x89\x93\xa7N\x9f9{\xae\xb0\xa8\xe8\
+\xfc\x85\x8b\xc5\xbf_\xba|\xe5\x8f\xab\xd7\xae_\xbfq\
+\xf3V\xc9\xed;w\xef\x96\x96\xdd+\xbf_QQ\xf9\
+\xe7\x83\x87UU\x8f\x1eW\xd7\xd4\xd4\xd6\xd5\xd5?i\
+hx\xda\xd8\xf8\xac\xa9\xe9\xf9\x8b\x17\xcd/_\xbez\
+\xfd\xfaMKK\xeb\xdb\xb6\xb6\xf6w\xef\xfez\xff\xbe\
+\xe3CggWwwOo__\xff\xc0\xc0\xc7O\
+\x9f?\x7f\x19\x1c\xfc:44\xfc\xed\x9b\x08$\x95.\
+!\xc9\x94\x92\x96\x91\x95WPTVQS\xd7\xd4\xd2\
+\xe6\xe8\xea\xe9\x1b\x18\x1a\x9b\x98r\xcd\xcc-,\xad\xac\
+ml\xed\xc6:\xfc\x1b\xc0\xb4\x11\x80\xd9#\x00\xfc\xef\
+\x00\x89?\x00\x16\xff\x00X\xbd&3k\xed\xfa\x0d\x1b\
+\xb37m\xfeE \x7f\xef\xbe\x7f\x10\x18\x01\x10\x0b\x88\
+\x01\xee\xfc\x0d\xe0\xd1\xe3\xc7\xd55\xb5\xb5u\xf5\xff\x08\
+\xd0\xfa\x03\xa0C\x0c\xd0\xd3\xd3\xdb\xd7\xdf?\xf0\xf1\xe3\
+\xa7\xcf_\xbe\xfc\xbc?\x85FgH2Y\xd2l\x19\
+Yy\x05E%\x15U5u\x0dMm\x1d\x8e\xae\xde\
+(}\x03#c\x13\xd3\xd1\x5c3s\x0b\xcb1V\xd6\
+66\xb6v\xf6c\x1d\x1c\x9d\x9cG$~\xa5\x10\x0f\
+\xc3w\x8cY\xb3\xe7\xcc\x9d\x17\x1a\x1a\x16\xce\x8b\xf8\xe1\
+\x91\xf0\x0bH\xda\xdfE\xd6\xfdB\xf2}&\xbe\x93\xfc\
+\x93\x89\x98dd(J\xcb\xee\x95\x97\xdf\xff\x95\xa4\xae\
+\xfe\x89\xd8\xe3\xf9\x8b\xe6\x97\xaf^\xbfii}\xdb\xd6\
+\xfe\xee\xaf\xf7\x1d\x1f:\xbb\xba{z\xfb\xfa\x07>~\
+\xfe2\xf8uh\xf8\x9b\x08\x10\xff\xfb\x00@\xb7\x03\x0e\
+'\x003\x98@\xe0!`{1`\xe4\x04\xa8t\x01\
+\xfe\xd2@\xa0\x03\xc8dk\x90\x91\x91 U\x98\xa0\x10\
+\x00\x09\x80\x00\x05tHB\x06\xca\xd0\x81)\xec0\x0e\
+\x81\xe0#\x15\xeb\xb1\x0f\x17Q\x89\x16|#\xd4\x09{\
+b:\x91Ll%\x8a\x89\xa7\xc47\xd2\x80\xf4%\x17\
+\x92\xfb\xc9J\xf2\x0b\xc5\x84\x12B\xd9@\xb9I\xe9\xa7\
+r\xa9\x11\xd4\xbd\xd4\xa74UZ\x10m7\xad\x89\xae\
+G\x8f\xa6_\xa0\x8b$|$\xf6Ht0<\x18\xbb\
+\x18\xbd\x92~\x92g\x98l\xe6\x02f\x03\xcb\x8bU(\
+\xa5-\xb5I\x9a\x94N\x93\x1e`'\xb3\xfbdRe\
+\x86e3\xe5\xe4\xe4\x0e\xca\xdb\xc8W(\x84+|S\
+\xdc\xad\xa4\xaftJ\xd9J\xf9\x9a\xca\x04\x95\x1a\xd5p\
+\xd5~\xb5u\xeaZ\xea\x175|4Z5\x97i\xa9\
+h\x15k\xfbkw\xea\xe4pl8\x8d\xba\x19z\xa3\
+\xf5\xaaG-\xd5\xb7\xd0o2\xd8h\xe8b\xd8it\
+\xd08\xc8\x84mRj\x9a>\xdak\xf40\xf7\xba\xd9\
+\x0as\x0f\x0b\x9aE\xa5\xe5\xb61s\xac\x8c\xacz\xad\
+o\xda\xe4\xd8\x86\xdb\xd9\xda\xb3\xec_\x8f\xbd\xe2\xb0\xd9\
+\x91\xef\xe4\xe2\xac\xe5\xfc\xcd\xa5\xd9\xf5\x86\xdb\x01\xf7\x0c\
+\x8fH\xcf)^\xd6\xe38\xe3e\xc7\x0fywO\xa8\
+\x9fxo\xd2\xed\xc9%Sn\xfb\x94\xf9V\xfa=\xfa\
+\xad\xce\xbfi\xea\xbb\x80\xaf\x81r\xd3\x8df8\x07\x05\
+\x06\x0bB\xb2g\x9e\x99U3[4\xd7b\xde\xbc\xd0\
+\x9c\xb02\x1e\x19\xe1\xc6_\x12y5\x9a\x12\xe3\x1f\xbb\
+w~w\xfc\xe4\x84<\x01\x16\xf0\x92\xca\x84\x96)\xfb\
+S\xe5\x16\xadMc,Y\xbetp\xf9\xca\x95\xccU\
+[3tV_\xca\xf4\xc9j^\xb7d\x83\xd6\xc6\x92\
+M\xc1\x9bE\xb9\xa7\xb7\xce\xda.\xb1\xe3\xcc\xae]{\
+\x8a\xf2_\xef\x97=\xe8|Xp\xf4\xd8\xb1\xfa\x93\x92\
+\xa7'\x9d\xcd.,=/*\xf6\xba\x94~\xa5\xf2\x9a\
+\xec\x8d\xa0[Gn\xf7\x97z\xdc\xcb\xbd\xff\xf2O\x87\
+\x87\x1b\x1e\xbd\xa9\xb1\xad\xdb\xf2\xa4\xb71\xa0\xe9r\xb3\
+\xda\xab\xb47/\xde\xfa\xb7\x97\xbc\xb7\xfeP\xd0m\xd4\
+\x9b7\xa0\xf4i\xd7\xa0\xee\xd0S\x91\xe8G\xff\x99\x90\
+\x81\x0at\xc1\x85\x03&\x22\x04\xb1X\x8a\x1c\x14\xe0\x1a\
+\xea\xd0E0\x09c\xc2\x9b\x88 V\x13\x05D\x05\xd1\
+E*\x93\xaed4\xb9\x85\xbcAvP4)\xbe\x94\
+\x15\x94\x0b\x94v*\x87\x1aL\xddB}Hc\xd3\xfc\
+h\x9bi\xb5t\x0dz8\xfd4\xfd\xb3\x84\xb7\xc46\
+\x896\x863c\x1b\xa3Sr\x8a\xe4\x09&\x8b\x99\xc0\
+\xacgy\xb0\xceJiIeK\x13\xd2\x8b\xa5\xfb\xd9\
+\xc9\xec>\x99\x852C\xb2k\xe4\xe4\xe4\x0e\xfc\xcf\xee\
+\xfbj\xb4j.\xd7R\xd1*\xd6\x9e\xaa\xdd\xad\xb3\x85\
+c\xc7y\xae\x9b\xa9g\xa1\xf7dT\xba\xbe\x9d~\xab\
+\xc1\x0e\xc3\x89\x86_\x8d\xce\x19G\x9a\xe8\x984\x9a\xee\
+\x1e\x1d\xc2U\xe2>3;h\xce\xb7\xe0Z|\xb4\xbc\
+=&\xc7j\xae\xb5\x99\x0dl\x9e\xd8\x9e\xb4\xcb\xb4\x0f\
+\x1f\xeb\xea\xa0\xee\xf0\xd1\xb1\xd6\xe9w\xe7|\x97\x0c\xd7\
+X\xb7\x00w'\x0f#Oy/x\xf5\x8e\xeb\x19\xff\
+\xca\xbbi\xc2\x83\x89w'\x95L.\x99R\xe2s\xc7\
+\xb7\xdc\xaf\xf2\xb7*\xff\xda\xa9\xcd\x01\x9d\x81\xc4t\x85\
+\x19\x06A\xf6\xc1\xfe!\xd13\xd3g\x1d\x98]:\xa7\
+k\x9eF\xa8{Xt\xf8.^=\x9f\x15\xe9\x12\x95\
+\x16}=\x16\xf3\xc7\xc7\xe5\xc4\xbfH4\x17\xa4/h\
+H\xb6\x12\xe6\xa6\xf4\xa7\x86,\xba\x95f\xbad\xff2\
+\x85\xe5\xd9+\x99\xab\xb22(\xabWe\xb2\xb2\xf2\xd6\
+\x19\xaf\xbf\xbc\xd1/\xfb\xfd\xe6\x0d\xb9F[J\xb6\xf1\
+v(\xee|\xbe\xfbI>}\x9f\xcd\x01\xfe\xa1\xddG\
+\x1e\x1c\xa3\x9cp<\x15\x7f\xe6\xf4\xb9\xb6\xf3\xdc\x8b)\
+\xbf\x17_\xfer\xd5\xf9\xfa\xea\x9b\x8fnk\xdd\x0d+\
++*\x1f\xaa\xf4{\x90_\xf5\xa1\xda\xb3vg\xfd\xdb\
+\xa7\xf6\xcfr\x9e\xb7\xbet{\xbd\xa3\xe5C\x9b\xef\xbb\
+\xfd\xef\xbft\xce\xe8\xbe\xde\xa77\xb0\xf6S\xd7\xe0\x9c\
+\xa1\xee\x91\xfe\x93`A\x16\xca\xe0\xc0\x1c.\xf0C8\
+R\xb1\x09\x05(\xc1\x0b\x0c\x13\xda\x84;\x11A\xac#\
+\x8a\x88&\x92A\xda\x91Q\xe4N\xb2\x92BR\x9c(\
+)\x94\x22J7\xd5\x8a*\xa4\xfeA\xa3\xd0\xfchy\
+\xb4\xf7tW\xfa6z\x87\xc4\x04\x89\xa3\x0c:#\x96\
+Q-\xe9*y\x86\xa9\xc3\xdc\xc1\x92eeKIK\
+m\x96V\x92>\xc4\xb6f\x97\xc9\xcc\x91\xf9,\xbb]\
+\xceN\xaeI>K\xc1N\xa1]1_\xc9K\xa9Y\
+y\xad\x8a\xb9J\x83\xea\x1a5;\xb5v\xf5|\x8di\
+\x9aL\xcd[Z\x8b\xb5m\xb4\xbbu\x0a9\xc9\xba\x8e\
+z\x14\xbd{\xa3r\xf5C\x0d\xcc\x0d\x86\x0d+\x8d\xf2\
+\x8c\x13L<MUM{FWr\x0b\xcc2\xccC\
+-\xdc,9c\xa8c\xda\xac*\xac\x0bm\xf6\xd8\xa6\
+\xdb\xc5\xdb\xcf\x1e;\xd9\xc1\xdeQ\xcfI\xc6\x99\xe2<\
+\xe8\xd2\xed\xda\xe2\xd6\xe0^\xe3Q\xeeY\xe2uk\x5c\
+\xe9\xf8R\xef\xb2\x09w&\xde\x9dT9\xb9fJ\x93\
+O\xbbo\xbf\x9f\xc8\x9f9U%\xc0d\x9a[`\xd0\
+\xf4\x84\x19k\x82\xf6\x06_\x09i\x9c9<[g\x8e\
+\xdb\xdc\xb0yY\xa1\x85aM<F\x84-\x9f\x1f\xb9\
++\xaa*\x86\x11;~~F\x5cI\xbc(\xd1U\x90\
+\xbe\xe0~\xb2\x8204\xa5(\x95\x5c\x14\xb8\xf8\xe4\x12\
+ri\xc8\xb2\x8b+\xd4V\xa6\xadj\xc8\xf0\x5c}.\
+S#k\xf5\xda\xee\xf5\xbc\x0d\xd5\xd9\xde\x9bn\xe68\
+\xe6^\xd9\xea\xb0\xed\xea\x0e\xd7\x9d\xa5\xbbg\xec\xe9\xc9\
+\xdf\xba\xcft\xff\x83\x83\x89\x87\xe5\x8f\x5c-\x88<\xce\
+:Qx*\xe1\x8c\xce\xd9\x87\x85\xcb\xcf[_\xe8*\
+>})\xe6\x8a\xe9\x1f\x8d\xd7\xf2n\x04\xddR,\xa9\
+\xbd\xb3\xbdt\xfa=\xa5\xf2\x9a\x8aM\x7fNy\xc8\xac\
+*{\xbc\xa8\xc6\xaa\xb6\xbd\xfe`Cp#\xfb\xd9\x8d\
+\xe7\xf3\x9b\xd5_V\xbc\x16\xb6\xa8\xb6\xdeh\x8b}\xc7\
+\xf8\xebP\x87\xf7\x87\x97]Kz\x94zO\xf4;\x0c\
+T|\x9a\xf5\xb9cp\xed\x90\xeap\xa3H\x04\x88\xdf\
+\x8b\x00\x00Z\x8co\x18\x0f\xff\xe7\x88\x8fK\xf9\xbe'\
+\x09@\x8a\x9f0}\x1a\x00\x06\x00c\x81\xd0?\xf0{\
+\x8e\x18\xf8\x22\x0c<\xf1;\x15\x00\xe8\xb2@\xbe\x11\x00\
+\x5c\xf6M\xfa\xaf}\x85\xfcEB\x00\xf0J\x14,N\
+\x8a\x89\x8a\x16r<\x04\x828>\xc7+1^\x90\x22\
+\xe4'q9\x93\x12x\xe6\x5c\x8e\x95\xa5\xa5-\x00\xfc\
+\x07\x8f\x08\x91L8\xcf\x9b\xb0\x00\x00 \x00IDA\
+Tx\x9c\xed}y\x98\xdcV\x95\xef\xefJ\xaa}\xed\
+\xaa\xde\x17o\xb1\xe3v{K\xec8\xdb\x04\x08\x84I\
+X\xb2\x10\xc0\xc0\x83\x19f\x08o\xc20\x0f\xde\x1b\xc2\
+\x00o\xd8g\x80\x84-\xc0\xcc\x03\x860\x0cd\xb2\xd8\
+$&\xb6\x13'1^\x12;\xc6\x8e\x1d'\x8e\xed8\
+^:\xee\xd5\xbdUwuwu\xd7.UIz\x7f\
+H*]\xa9T\xd5\xbb\xed\x04\x9f\xef\xd3'UI\xba\
+\xba\xba\xe7w\xcfv\xcf\xbd\x22\xb2,\xe3\x12\xfd\xf9\x12\
+s\xa1+p\x89.,]\x02\xc0\x9f9\x15\x01\x80\xa8\
+t!*s\x89\xce?\x95\x94\x00\x97@\xf0\xe7Ae\
+U\xc0%\x10\xbc\xf5iB\x1b\xe0\x12\x08\xde\xda4)\
+#\xf0\x12\x08\xde\xba4i/\xe0\x92q\xf8\xd6\xa4)\
+\xbb\x81\x97@\xf0\xd6\xa2\x22\x00L&2x\x09\x04o\
+\x1d\xb2\x94\x00\x97@\xf0\xe7C%U\xc0dA\xf0\xed\
+o\x7f\xfbR4\xf1ML\xc4\x82\xd1\x86\x9e]\xae\xa3\
+?\xf0\xc0\x03\x5cSS\x93k\x98e\xc5\xbf\xbe\xf9\xe6\
+\xd4\x1c\xd4\xef\x12\xcd1\x15\x01\x80\x10R\xfc\x9fr\xc2\
+\xf0\xdf\xeb\xaf\xbfn\xcbf]\xaeh4\xe6\x16\x88\xe0\
+!\xac(\xdc\xf6\xee\x1b\xce\xcdq}/\xd1,\x93%\
+\x00\x00\x00\xb2\x0c\xb3l\xd0Nuvv:\x12\x09\xc6\
+e\xb3\xc1%I9\xcf\xc0\xf0\x98O\xe0\x05\x9f$\xc9\
+\xb9t\xbc\xef\x95\xf5\xeb\xd7\x0b\xe7\xa3\xf2\x97h\xe6T\
+\x1a\x00\x80\x15\x08HOO\x8f\x03\x80+\x9b%nQ\
+\xccy`c\xbd\xc8I\xbe\x91\xb1\xb8?\x9eJ\xfb\x19\
+\x199\x9e`\xef\xed7];x\x1e\xea\x7f\x89fH\
+\xe5\x00\xa0\xede\xf5\x1a\x02\xc0\x09\xc05:\x9aq\xc7\
+\xb31\x8f$\x12\x9f,\x88\xbe\xbc,\xfb\x09d\xff\xd8\
+X\x220\x1aO\x05\x01\xd9Ar\xe2#\xb7\xdcr\xfd\
+\x99\xf3\xf6&\x97hZT\xca\x827(\xfcM\x9b6\
+1\x00\x5c\x00\xdc\x00\xbc\xa1\x90\xcbW\x1d\x0c\x06\x1c\x8c\
+=\xe0p\xd8\x83\x840AIFE \xe0\x0dU\x86\
+\xfd!\x16hd\xec\xdc\x0fw=\x7f\xe8}s\xfd\x02\
+\x96\x95\x9f\x80.D\x9d.V*%\x01\x0a\xbd\x7f\xcf\
+\x9e=lUU\x8b3\x1cv\xbbkk\xbdn\x00^\
+u\xf3\xe7\xf3y\xff\xe0\xf0\xb8_\x96\x11\x10x>\x98\
+\xcb\xe5\x832P!\x08\xf9\xd0pt4$B\x0eC\
+\x96\x9f\xf8\xcbw^\xfd\xd5Y\xaf\xf8\xe4\x19Yx\x97\
+\xc9\x96-\xff\x19\xe5\xc9Y\xb9\x81\x85\xc6}\xe5\x95W\
+8\x8f\xc7\xe3\xb4\xdb+\xdc\x1c\x07\x8f\xcf\xe7\xf1TT\
+x}\x00|\x00\x02\x00\xfc\x00\x02C\xc3cA1\x97\
+\x0ffs\xf9\x10\x9f\xe5+ #\x9c\x97\xc4\xd0\xc8h\
+<\x9c\xcb\xe5\x02\x90\x99\xa7\x92$\xf1\xa9\x0f\xdcx\xe3\
+\xd8\xb4+Z\x9a\xe1V\xff\x9b\xd5\x98Fr\x89\xe3r\
+\xff\xbd\xa5\x01Q\x12\x00\x8f?\xfe\xb8\xad\xa2b\x91\xab\
+\xae.\xec\xb2\xdb\x19\x0f\xe7rzY\x06>\x9b\x8d\xf3\
+\xd5U\x85\xfcP\x00\x10\x00\x10\x04P\x11\x1bKT\xf0\
+|.\xc4\x0b\xf9P&\x9b\x0d\xcb\x92\x14\x96$\xd97\
+6\x9e\x22\xbc\xc0C\x96\xe5c\x099\xf9\xce\xc9\x82\xa0\
+\x04\xc3i\xc6\x9a\xcf\x93\x12\xd7\xd1T\x0a\x00V\xc7\xe6\
+\xbd\xf2\xe3-\x06\x06K\x00\x00\xc0\xf6\xed\xdb\x1d\x02\xe7\
+\x0f\xbb\xed\xac\xa7\xa1\xbe\xd6\xcb\xb1\x8c\xd7\xc1\xda\xfd\x8c\
+\x8d\xf5\xdb\xedl \x14\x08\x04l66\x08\xa0B\xdd\
+B\xf1D:\x94\xced\xc3\x92(\x85\xe3\x89\x94G\x06\
+\x08d`l<\x89L6\x0b\xc8\xf2X^\x96\xdey\
+\xf3\x8dW\x1f+Y!#\xe3\xad\x18n\xfe\x8fl\xd8\
+\xb0!\xb0n\xdd\x0dW\xf8|\xae\xf96\x9b}>\x00\
+\xb0,7\x8f\x10f>\x000\x8cr\x8b(\x8a\xdd\xa2\
+\x98/\xc4*\x92\xc9\xf4k\xa2\x98\x1b;th\xff\xb1\
+\x8f\x7f\xfc\xe3\xe3P\x98\xadm0\xed\xe9\xff\xdf2@\
+(\x09\x00\x00\xd8\xbe}\xbb\x9f\xd8\x83\x8b\x1dv\xceW\
+W\x15\xf6\xb3v\x9b\xdf\xc6p\x01\xbb\xd3\x1e \x04\xc1\
+\xcap\xa0\xc2\xc6q!\x00!\x00!\x09\x08g\xd3|\
+(\x99\xce\xb8eYF<\x9eB>\x9f\x87\x0c \x93\
+\xe6\x11O\xa6 \xcb\xf2\x98\x0c|\xe1\xa6\xb7\xaf}\xb0\
+P\x89\xf2L\xd7~3\xda\xf1\xce\x9d{\x17\xae^\xbd\
+\xf26\x87\xc3\xf96\x8e\xb3\xadbYv\xde\xb4^\x9e\
+z\xac(\x8a\xe7$)\x7f<\x9b\xcd\xee\xef\xef\x1f\xd8\
+\xb7zu\xcb1\x18\x19o\xde\x00\xbc\xf9\x81P\x16\x00\
+\x00\xb0u\xeb\xde\xa0\xc3\xe3\xbc\x9e\xb3\xb1\xe1\xfa\x9ap\
+\xc0f\xe3\x02\x1c\xc7\x05].{\x05!l\xc8\xefu\
+\x87\xdcnGH\x02\xc2\x90\x10&\x04\x0e^\xc8#\x99\
+LA\x92e$\x12)\xf0|\x0e2\x00!\x97\xc3\xf8\
+x\x12\x90eH\xa2t\xcfM\xef\x5c\xf73\xad\x1e\xd4\
+\xbe\x88\xe9\x9f\xfe\xf4\x97\x17\xdez\xeb{\xde\xbeb\xc5\
+\x92[kk\xabV\xb1,g\xc9\xf0\xd94\xf0EQ\
+<\xc7\xf3\xd9m\xbd\xbd\xbd\x8fP`\x90\xf0\x16\x03\xc2\
+\x84\x00\x00\x80\x1d;\x0e\x86d\x8eY\xcf\xb1\xa4:\x1c\
+\x0eV\xb8]\xae\x0a\x1b\xc3T\xb8<\xce\x10!$\xec\
+\xf7zBN\xa7#D\x08\xec2\x00\xc8@>/\x22\
+\x95NC\x14%$\x92\x19\xa43\x19@\x06\x84\xbc\x88\
+D\x22\x05I\x92 \x89\xd2\x7f\xdft\xe3UwAw\
+G\xb5^N\xee\xbc\xf3\x13\x15\xef}\xef\x07?\xb9r\
+\xe5\xd2O,\x5c\xd8\xb8\xd2\xe7\xf3\xea\x95\x9e\x06\x9fg\
+\x02\x0e\x0d\x0cO=\xf5\xc4w?\xf5\xa9O\x8d\x01\x10\
+a\x01\x847#\x08&\x05\x00\x00x\xf0\xc1\xbd\xce\xda\
+y\xae\xcf\xb3\x84\xac\x08W\x04C\x1e\x8f3\xc4\xb0L\
+\xc8\xe7q\x87\x09C*\x5cN\x07\xe7\xf5\xba\xb5\xa6P\
+ZE\x92\x91L) Hgx\x8c\xc7\x93\xca9I\
+\xc6x<\x0dQ\xccC\x92\xa5\xe3\xbb\xfe\xb4\xe3\x96\xfb\
+\xbe\xf6\xb5q\x00\xccg>\xf3\xc5\x05k\xd6\x5c\xf7\xd5\
+\xb5kW~b\xd9\xb2\xcb\xa6\xfeBS\xe4\xf3T\x80\
+\x91\xcb\x09'\xfe\xf3?\x7f\xf9\xde/~\xf1\x8b1(\
+ \xd0$\x82\xa4^\x22\xbf\xd9@0i\x00\x00\xc0\xb6\
+m\xdb\xdc.o\xf57$\x90\x1b}^O\xb8\x22\xe8\
+\x0b3\x84\x04|>\x0f\xcb\xb1\x0c\x1c\x0e;<n\x97\
+\xd2\x87\xd5be\xc8H\xa7\xb3\xc8\xe7E\x08B\x0e\xa3\
+\xb1q\x88\x92r2\x99\xcc@\xc8\x09\x90E\xe9\xb53\
+\xad\xed\xdfg\xc1\xddz\xfd\xf5k>\xbe`A\xe3\xc4\
+\x15\x9fF\x8f\x9e\x0dp\xe4r\xc2\x89\x7f\xfb\xb7\x1f\xbf\
+\xff\x1b\xdf\xf8\xc6(t\x10\x18T\xc3\x9b\x09\x04S\x02\
+\x80F\xbb\x9f\x7f\xf9\x07 \xb8\xdb\xedv\xf9\xc3!?\
+\x03B\x10\xf0{\xc0\xb1,X\x96\x85\xcf\xe7\x06\x01Q\
+\xe4\x80\xac\xb4NN\x10\xc0\x0b9\xe4s\x22F\xc7\xe2\
+\xc8\x09\x8a]\x90Ld088\x82\xba\x9a*\xacX\
+qyq\x05\xcf\x93\xb8\x9f\xca-\x82\xc0\xbf~\xdf}\
+\xffz\xdb\x0f~\xf0\x83\x11\x00y(\xafhP\x0bo\
+\x16\x10L\x0b\x00\x00\xb0k\xcf\xcb\xdfb\x19\xe6\xdb6\
+\x9b\x0d\xe1\xb0\x1f\x0c!\xf0z<p\xba\xec\xe0X\x06\
+.\xa7\x13,\xc7\xa8\x00PP\x90\xcb\xe7\x91\xcb\xe5!\
+I\x12\xa2#c\x18\x19\x1e\xc7H4\x86u\xebV\xc2\
+\xebu\x97y\x9au\xc4\xfa|\x80\xa3\xd4\xe5\x82\xc0\xbf\
+\xfe\x9d\xef|\xf3\xf6\xfb\xef\xbf_\x03A\x914x3\
+\x80`\xda\x00\x00\x80\xe7\xf6\x1e\xfe[\xc2\xb0\xbf\xb3q\
+6TT\xf8\xc02\x0c\xbc\x1e7\xdcn\x07\x08C\xe0\
+v\xb9\xc0\xb0\x0c41 \x03\x90$E\x15\x9c>\xdd\
+\x05\x02\x06--\x13\xeb\xf9\xf2<\xbbp\xe0\xe0\xf9\xec\
+\xc9\x03\x07\xfe\xf4\xb9\xdbn{\xefQ\xe8 \xa0m\x83\
+\x8b\x1e\x043\x02\x00\x00\xec\xde\xfb\xca\x8d\x0c\xc1\x16\x86\
+e\x82\xe1\x8a\x00X\x8e\x85\xd3\xe1D0\xe0\x01!\x04\
+\x0e\x87\x0d\x1c\xcb\xd1\xfe\x12^z\xe95\xd4\xd5\xd5\xa1\
+\xa6&l\xac\xcc\xb4\x98V\xee\xec\xdc\x83C\x14\xf3\xf1\
+\x17^\xd8s\xc7m\xb7\xbd\xf7\x18\x80\x1c\xded \x98\
+1\x00\x00`\xe7\xde\xc3Wp\x0c\xbb\x87a\x98\xa0\xdf\
+\xef\x85\xc3n\x83\xd3aC0\xe8\x03C\x18\xd8\xed6\
+p\x1c\x07\xc82\x0e\x1f>\x81\xa6\xa6F\x84B\xfeR\
+U\xb2\xfewV\xc1Q:\x8dq:\x86\xa2(\xe6\xe3\
+\xbbv\xed\xb8\xf3C\x1f\xba\xe3U(\x92\x80V\x09\x17\
+5\x08f\x05\x00\x00\xb0u\xef\xde`\x80\xf1\xed!\x84\
+\x5c\xe1\xf3{\xe0\xb4\xdb\xc1\xd9XT\x85+\xc00\x04\
+,\xcb\xe2\xf8\xb17\xd0\xd4\xd4\x80`\xd0W\xbeR%\
+\x99p\xf1\x82C\x14\xf3\xf1\xdd\xbbwZ\x81\x80\x0e \
+]t\xb1\x82Y\x03\x00!\x84<\xfa\xf4\xd3\xc1Z_\
+\xed\x16\x96a\xde\xe1t:\xe0\xf18\xc12,*\xc3\
+A\x9c>\xd5\x8e\xf9\xf3\x9bL\xcc\x9f\x1d\x83\xac\x5cY\
+\xe7\x13\x1c\x14\x08\x8eBQ\x07\x17=\x08f\x05\x00\xa6\
+,\x22\xb2{\xcf\xe1\xdfr\x1c\xf7I\x87\xc3\x0e\x8f\xc7\
+\x85\xfe\xde!\xd4\xd5Vc\xde\xbcz\xd3}eK\x9d\
+b\x1d\xa6^V\xb9{FGcH$\xc6\xd1\xd8\xd8\
+\x04\x96e'q\x8f\x02\x0eE\x1d\xfc\xf1\x83\xeb\xd7\xdf\
+\xf9*\xde\x04 \x981\x00\xcc\xcc\x87\xd2\x12\xcc\xb3\xbb\
+\x0e|\xd3\xe3\xf2|5\x93\xc9\xc2\xedpa\xe5\xcab\
+\x1f\xbf|\xb9e\xcf\xceYY\xf1x\x1c\xbd\xbd=\x88\
+\xc7\xe3`\x18\x02\x8f\xc7\x8de\xcb\x96\x1b@0\xd1s\
+DQ\x8c\xef\xda\xb5C\x03A\x9e\xda.:\x10\xcc\x16\
+\x00\xe8\xc1\x1bV\xddl\x8f\xff\xe1\xd9\xcf\xb1\xc4\xf9\xdd\
+\x1bn\xb8\x0a6\x9b\xad\xc4\xfd\xd3yf\xc93\xd3.\
++\x9dN\xa3\xab\xab\xb3\xc0x\x80\xa8\xe7\x08\x1c\x0e'\
+\x9a\x9b\x97\xc1n\xb7O\xba\xce\xa2(\xc6w\xef.\x02\
+\x81\x160\xbah@0\xa3Y=e\x98\xcf\x01\xb0\x8d\
+\x8d\xa6oX\xb5\xaa\x19\x1c\xc7\xa93\x8d\x8a7Y\x96\
+!\xcb\xb0\xdcJQ\xa9\xebK=\xa3\x5c6X6\xcb\
+\xa3\xad\xad\x0d\xc7\x8f\x1fG<\x9e\x80&\xc8\xb4W\xe3\
+8\x0e\xf5\xf5\xf5\xb0\xdbmT\x9dK\xd7A#\x96e\
+\xfd\xef~\xf7-\x9b7m\xda\xb2\x06\x80Mm\x13\xad\
+}\x0aC\xdb\x17:Gq\xda\x12\xc0$\xfa\x19u\xe3\
+\xd4\xcd\xfe\x9d\xef\xfc\xfb\x1dk\xd7\xae\xfb\xcd5\xd7\xac\
+\x9edy%\xcfL\xf1\xfa\xc9=C\x14E\xf4\xf6\xf6\
+```\x00:\x8e\x09\x18Fq\xedX\x96CMM\
+-jjj,\xc5\xffd\xeb+\x8ab|\xe7\xceg\
+?\xf4\xb1\x8f}\xf8(\x00\x01z\x9c\xe0\xa2\x90\x04\xd3\
+\x02\x80\x05\xf3\x09(\xe6_w\xdd;\xaa>\xfb\xd9/\
+\xed\xba\xf6\xda5\x8d\xa1P\xc0|\xef\x14\x9fU\xf6\xec\
+\x94\xef\x11E\x11\x03\x03\xfd\x88D\x06\x90\xcfK D\
+\xa9\x93\x965D\x08PYY\x85\xfa\xfa\x06U\xe4\xcf\
+|\x5cA\x14\xc5\xf8\xc1\x83/\xdd\xf5\xfe\xf7\xbfk/\
+\x8c\x86\xe1\x05\x07\xc1L\x00@\x1b}\x05\xb1\x0f\xc0\xf9\
+\xf3\x9f?\xf4\x95\xc5\x8b/\xff?W]\xb5r\xaa\xe5\
+N\xf1\xfa\xb2g\x8b\xfe\x89F\x87p\xee\x5c\x17\xf2y\
+\xb1\xd0\xeb\x09\xd1S\xc6|\xbe\x00\xe6\xcdk\x82\xcbe\
+\x1c\x97\xa0\x9f\x13\x8d\x0e!\x12\x89\xe0\xb2\xcb\x16\xc3\xed\
+\xf6L\xa9\xbemmg\xbfp\xd5U+\x1f\x86\x11\x04\
+\xe6\xd1\xc4\xf3\x0a\x04n\xaa7X\xa4o\x19\x00\xb0v\
+\xed\xdb+++\xab\xefjh\xa8)\xa9\xc7K1\xae\
+\xdc{[\x81\xa3\x5c3\x11\xa2\x9f\x8cF\x87\xd0\xdb\xdb\
+\x0b\x9e\x17\x0a=^\xc7/`\xb7;\xb0`\xc1\x22\xf8\
+\xfd\xd6\x01*YV\xbc\x83\x8e\x8e6d\xb3J\x19'\
+N\x9c\xc0\xa2E\x8bPUUU\xaa\x06E\xff,^\
+\xbc\xe4\xa7\xaf\xbcr\x02*\x08\xccT\xc8)P\xe7g\
+\x9e\x17\x10L\x19\x00*\x95\x92\x00\xf6\xbb\xee\xfa\xf4\xdd\
+\x1cg\xf3UV\x86J\xde\x5c\x9eq\xa5\xee\xb1\xbe\xa9\
+\x94\xd4\xd0\x98\xa6\xb9t\x84\xe8V\xbd\xd6\xf3\x1d\x0e;\
+\x1a\x1a\x1a\x10\x0eWR\xcf(v\x0b\xfb\xfaz\x10\x8f\
+'\x0a\xe0QT\x06\xd0\xd5\xd5\x09\x8e\xb3!\x18\x0cZ\
+\xd5\xc0\xf2]\x16/^\xac\x81\xe0\x11\xe8m\x98WO\
+\x9fw\x10L\x09\x00\x16\xbd\x9f\xa56\x1b\x00{8\x5c\
+\xfd\xc1\x8a\x0a?X\x96\x9dr\x8f\x06\xa6\x0e\x0e\xabg\
+\xa4Ri\x9c;\xd7\xa9Z\xf5:\xd3\xb4c\x9bM1\
+\xf0\xaa\xabk\xd4z\xd2\xcfP~\xf0<\x8f\xee\xeeN\
+\x8c\x8e\x8e\x19\xa4\x86V\x8e\xdd\xee@}}\x03\x02\x01\
++\xe6\x97\x7f\x97\xc5\x8b\x17\xff\xf4\xd0\xa1\xe3\xe4\xdak\
+W\xd3\x92\xe0\x82\x80`:\x12\xc0\x10\xf0\x01\xc5\xfc\xfb\
+\xee\xfb\xf9\xc7\x1c\x0eg} Pj\xa0G\xa7\xb9\x00\
+G6\xcb\xa3\xaf\xaf\x17\xd1\xe8\x90\x81\xe1\xf4qee\
+%\x9a\x9a\xe6)\x83S\x16\x94\xcd\xf2\xe8\xed\xed\xc5\xf0\
+p\xd4T\x17Ejp\x1ck\xf2\x0ed\xc8ric\
+\xc4\x1a\xb4\xc0\xd2\xa5\x97\xff\xe4\xd0\xa1\xe3\xb8\xf6\xda\xd5\
+\x8fP\xa7D\xed\x12\xa8v\xc1\x5c\x83`\xa6*\x80v\
+\xfdl\xf5\xf5\x0d\xef&\x84 \x10\xf0\x1b\x18<U\xe3\
+n\xaa\xe0\x10E\x11===\x88D\x06\x8a\xc4\xbcv\
+\xec\xf7\xfb\xb0p\xe1\xa2B0\xc7\xfc\x0cQ\x14\x11\x89\
+\x0c```\x00\xa2(\x16\x01\x87\x10\x82p\xb8\x12\xf3\
+\xe6\xcd+\xb8\x85z\x11\xd6\xe2^\xb9\xa6\xf4\xbb\x9b@\
+@_(Bi\xdb9\x07\xc1\xa4\x01P\x22\xe4[\x10\
+\xff\xabW\xaf\x0dUT\x84\xdf\x09\xc8p\xb9\x5c\x86{\
+\xa7\xd3\xdbK\x11]\x96\xee\xd2E(\xa6)U\xd4\xca\
+\xf5x<hj\x9a\x07\x9f\xcf\xa7\xdeO?[\xd9\xf7\
+\xf6\xf6\x22\x12Q\x18\xaf\xd5\x89f~0X\x81y\xf3\
+\xe6\xc1n\xb7\x97\xac\xef\xf8\xb8b+\x88\xa2\x88\x85\x0b\
+\x17\xc3\xe3\xd1<\x89\xf2\xe0\xb8\xfc\xf2\x02\x08\x1e5\x9d\
+\x96\xa8\xfd\x9c\x81`\xaa\x12\xc0,\xfe\x0b\x06\xe0\xed\xb7\
+\xaf\xbf^k\x1c\x8ec\x8b\xc4\xf5lY\xfe\x1aE\xa3\
+C\xe8\xea\xea\x82$\x89\xa0\x19N\x1bx\xf5\xf5\xba\x81\
+gECCC\xe8\xeb\xd3\xbd\x03s9~\xbf\x0f\xf5\
+\xf5\x0d\x05\xf0X\xd57\x9b\xe5q\xee\x5c\x17b\xb1X\
+\x018\xad\xad\xa7\xd1\xdc\xbc\x0cn\xb7[\xbd\xa7T\x0d\
+\x14p\x5c~\xf9\x92\x9f\xec\xdf\x7f\x84\xdcp\xc3\xdaG\
+J\x5c8g \x98\x89\x0a0\xb8\x7f\xb5\xb5\xb5-\x0c\
+C\xc00\xd6\x83&\xb3e\xf9G\xa3Q\xf4\xf6\xf6@\
+\x10\x04\xaa\xa7\xea\x8c\xe38\x0e\xb5\xb5\xb5\xa8\xab\xab/\
+YV<\x1eG{{\x1bU\x06\x0ae(YL\x0e\
+\xd4\xd7\xd7S\xdeAq}5{\x83\xb6\x15\xb4:\x88\
+\xa2\x88\xd6\xd63hiYN\x8d\x1f\x94\xb7k\x96-\
+[v\xff\xfe\xfdG\xa0\x82\x80@\x8f\x15h4' \
+\x98\x14\x00J\xf8\xfe\x86\xd8\xbf,K\x0c!\x04^\xaf\
+\x12\x1c)1\xe9\xd4\xb2\xfc\xc9\x80#\x1e\x1fGoo\
+/\x12\x89q\x00LQ\x8f\x07\x80\x9a\x9aZ\xd4\xd7\xd7\
+\x974\xf0\xac\x5c:\xba\x0c\x96e-\xc1C\x13m+\
+\xe8\xd2G)\x03 \xb0\xd9XTW\x17\x87\x90'#\
+\xe9\x96-[v\xff\x91#'\xfdk\xd7.\xff\x0f\xea\
+\xf4\x9c\x82`*\x12\x80\x986\x83\x0a\xa8\xaa\xaaYC\
+\x08A2\x99D\x22\x91\x80\xcf\xe7+z\xe9\xe9\x88\xfb\
+dRs\xe94\xc6\xeb\xcc\xd7z]0\x18DS\xd3\
+|8\x1c\xd6\x06\x9e\xe2\xd2\xd1bZy\x1d\xfa\xb8\xa6\
+\xa6\x06\xf5\xf5\x0de\x99\xa6\xd9\x0a\xb4\xda1z\x18U\
+\xa8\xab\xab\xa7\xeaa~G\xebw\xa7\x9f3\x7f\xfe\x82\
+o\xb5\xb5\xf5\xb5,^\xdc\xf0y\xea\x12m(\xb9`\
+\x18Z\x974u\x9a\xae\x0d`V\x01\x1c!\x0ca\x18\
+\x02Y&hk\xeb\xc2\xe2\xc5\x0b\xe0\xf5z\xa7m\x0b\
+(\x22\xb6\x07\xc3\xc3Q\xf5\x1e\xa6\xc00\xad\xd1}>\
+\xbfAGkEh\xcf\xa0\xc5\xb4U\x8f\x07\x80pX\
+a\x9a\xd3\xe9(\xf9\xd2Z$QS\x19F\xf0\x00~\
+\xbf\x0f\x8d\x8d\xf3\xe1v\xbbJ\x96A\xd7\xcf\x8a\xe8v\
+\x09\x06\x83\xeb\xdb\xda\xfa\xb0xq\xc3\xe7`dv\xc1\
+; \x84\xccJ\xc8x&q\x00\x83'@\x08\x08\xc3\
+\x10H\x92\xf22\xed\xed\xddhn^\x04\x97\xcb\x0dQ\
+\x94\x0a7\xeb\xcb\x0dY\x14L1\xee\xf8\xf1#\xd0\x19\
+\xc5P\x0d\xa4\xe8\xe8\xba:EG[\xcf\xdeQ\xc4\xb4\
+f\xd9\x9b\x19O\x08\x81\xcf\xe73\x81\xa7\xb8-c\xb1\
+Qtww\xab\x8c\xd7%\x8e&5\x9cN\x07\xe6\xcf\
+_h0\x12K\x95\xa5\xbf\xe3\xe4\xd4` \x10\x5c\x7f\
+\xf6l\x1f\x96,i\xf8\x9cv\x09\xf4\xf8\x00\xc1,\xa9\
+\x82\xe9H\x00mo\xf0\x04dY\x22\xca0\xaa\xf22\
+\x92\x04\xb4\xb5u\xa3\xa5e\x09\x18\x86C>\xaf\x83\x80\
+a\xac\xeb\xac\x81\xc3\xe1p\xa0\xb9y9\xce\x9e=\x0b\
+I\xd2\x19\xc8q\x1c\x1a\x1a\x1aP]]C\xddSJ\
+L\xe7Q,5\x14\xa6566!\x18\xac\xa0\x9e\xa9\
+\xbe\x14eo\xf4\xf5\xf5\xaa\xb6B\xb1\xd4`Y\x0eM\
+MM%\x01X\x8e\xa6\x02\x8e`0\xb8\xfe\xc5\x17\x8f\
+\x1e\xbc\xfe\xfa+\x1f\x811\xb9A\xeb\x80s/\x01,\
+\x12\x164\xe6\xd3 *\x15.R\x80 \xe1\xf4\xe9\
+\xb3X\xb6l\x098N\x07\x81$\xa1$i\xe0\xf0\xfb\
+\xfdX\xbd\xfa\x0a\xb4\xb7\x9fE2\x99@]\x9d\xc2x\
+%\xb9\xc4\x5cGZL\xf3*\xc3\x0b9\x17\x00\x94\xf1\
+\xfd\xfa\xfazTW\xd7\x94dZ6\xcb\xa3\xa3\xa3\xad\
+\xc0x\xb3\xad\xa1\x19\x89Z\x08\x19\x98\xbb\x18\x87F\xe9\
+4\xbf\x00J\xa4U\x82q\xe4pV\xa4\xc0t\x8d@\
+\x80\x9a\xca\x0d\x80\xd1\x1b\xcc8\xa0\x22\xcb2N\x9fn\
+CK\xcb\x12\xd8\xed6\xf0\xbcb\xd4\x96j\x1b\x1a\x1c\
+\x0c\xc3b\xc9\x92f\x08\x82\x00\xbb\xdd\x0e\x86\x01\xcc\xa0\
+W\x5c\xbav\x08BV}\xbe\x96\xe4\xa43\xb0\xbe^\
+\x03\x8f5\xd3x^\xb77h\xa9A\xeb\xfap\xb8\x0a\
+\x8d\x8dMT\x19T\xc3\xccr\x8cCy\xaf\x14\x9e|\
+r\x17\x9eyf\x17\x07\xc0\x0e\x8b\x09'\x98\x05)0\
+\x938\x80\xb6'\x00\x08!\x1c\x14#P\xbbD\x07\x02\
+-\x09\x1c\x0e\x0e<\x9f\x9f\x94-\xa0\x91\xe6K\xd3\xe0\
+H$\x141\x9dH\xc4\xd5{t\x11\xad3\xadR\xb5\
+\xca\x1dj=\x8c\xe5\xe6\xf3\x22\x06\x07\x07\xd0\xd7\xd7c\
+ik\x10\x02\xf8|^\xcc\x9f\xbf\x08\x0eG\xe9(\xe0\
+l\x8en\xb2,\x83\xbd{_\xc2SO\xedE2\x99\
+\x82,K\xdaX\x0b=\xeb\x88\xee\x883\xa2\xc9\x02\xc0\
+\x1c\x07\xd0\xf6\x94\x04\x90\x89n!\xcbE@P$\x81\
+\x0e\x82l6\x0fz\xcc\x9e\xa6r\xe0\x10\x04\x1e\x9d\x9d\
+m\x88\xc7\xc7)\x8b\x5c\x17\xf9\x0a\xd3\x14\xab\x5c\x0fI\
+\x1b\x9f\x93\xcf+F\xe2\xe0`\x04\xa2\xa8\xb9\xd9\x8c\xa1\
+<\x8f\xc7\x8d\xc6\xc6\xf9\xa0\x17\xa6\x98\xcb\xd1MB\x08\
+\xfa\xfb#x\xf0\xc1\xad\xe8\xee\xee/\x94\x17\x8f\x8fv\
+@\xcf)\xccAW\xbb\x12u\xef\xb4\xd5\xc0t%\x00\
+MD\xadD\xa1\xe7i\x0c4\x03A\x96e\xb4\xb6\xb6\
+c\xf9\xf2%\xf0z\x1dH&\xf9\xd2\x85\x96\x00\xc7\x1b\
+o\x9cA&\x93\x82\x86=\x85\xf1\xca\xf3\x1c\x0e\x07\x16\
+,X\x00\xaf\xd78\x1aIK\x8e\x91\x11\xdaV\xd0t\
+\xbc.\xf6\xedvc\x08y.C\xda\xb2\x0c\xb5\xbdd\
+l\xd8\xf04^|\xf1\xd5B\xb6\x92V\x1f\x9e\xcf\xa4\
+aL*5\xa8^\xcc0.0\x1d\x1b\xc0\xf2\x9c\x12\
+\x06f\xd4\x06\x93J\x02A\x92D\x9c:u\x16--\
+K\xe0\xf39\x90Hd-\x8b-\xd5\x9e\xcd\xcd\xcb\xd1\
+\xd3\xd3\x85\x91\x91\xe1\x0238N\xb1\xcaC\xa1J(\
+\xd2\xa6\xf8\xbe\xb1\xb1Qtww!\x97\xe3\xa1\xebv\
+\x1d<,\xcb\xa1\xba\xba\xa6`\xe0I\x92\xac\xda\x1cV\
+\xf5\x9a\x9c\xea\xd2\xef\xb1~\x19\x9b\x8d\xc5+\xaf\x9c\xc0\
+\xa6M;1::\xa6\x96\xa1\xe4'\xea \x10\xe9l\
+bCF\xf1l\xd0L%\x80\xae1\x0d\x12\xa0<\x10\
+DQ*\x80\xc0\xebu\x22\x99\xccNT|\x81X\x96\
+\xc5\x82\x05\x97\xc1\xef\x0f\xa0\xa7\xe7\x1c\xaa\xab\x8d\x89\x1d\
+f\xc9a\xb4\x15\x8a\x19\x0f(!\xe4\xba\xba\xfa\xa2\xec\
+\xdf\xd2\xde\xca\xcc\xc0\xc1q\x0c\xa2\xd1\x11l\xd8\xf0\x0c\
+N\x9el\x03\x00\xb8\xdd.H\x92\x08\x87\xc3\x81`\xd0\
+\x0bB\x08b\xb1\x04\x86\x87\xfb\xa2(\xee\xf9\xe7\xdd\x06\
+(G\x9a\xe9\xa5J\x00\x85\x01\x13\x01A\x92$\x9c>\
+\xdd\x86\x15+\x96\x22\x18tcl,c\xd1SJ\x0f\
+\xa5\x86B\x95j\x8f7\xdd\xa1\x16!\x08<\xda\xdb\xdb\
+\x90L\xc6-\xa3w\x84\x00\xc1`\x10\x8d\x8d\xf3`\xb7\
+[\x1b\x89\xdauVT\x0a\x1c\xe5b\x1c\x0c\xc3\x80a\
+\x80\xad[wc\xe7\xce\x17\x91\xcf\xe7a\xb7\xdb\x10\x0e\
+\x07\xe1p\xd8\xc0\xf39\x08B\x1e\x0c\xa3\xac\x9bp\xf6\
+\xec9\x0c\x0c\xb4\x0db\x96\x99N\xd3l\x00\xa0@\xb4\
+\xdf<\x19 H\x92\x84\xd6\xd6N,[v\x19\x82A\
+\x97%\x08&\x1aJ5\x93 h\xe1\xdf!\xe8\xae \
+m(*Fb]]\x03\xbc^=\x0aXZ|\x97\
+ns\xab{\xac\x80\xc1\xb2\x04v;\x87\x13'\xce\xe0\
+\xb1\xc7\xfe\x88Hd\x18\x0c\xc3\xa0\xba:\x8c`\xd0\x87\
+|>\x8f\xf1\xf1$x>\x07\x86!\x18\x1d\x8d\xa3\xbd\
+\xbd\x17\xe1p\x00\xa0b-\x98\x03\x10\xcc\x06\x00d\x00\
+\x85\x09\x154M\x06\x08<\xcf\xe3\xf4\xe9\xf6\x02\x08b\
+\xb1b\x10\x94f\x8e~\xac\x8d\xd2\xf5\xf7\xf7\x98\x98\xae\
+\x97\xa1\x19x\xe5$\x87\xd5\xebM\x17\x1c\x0cC`\xb7\
+\xb3\x88\xc7\x13\xf8\xcdo\xb6\xe1\xd5WO\x03\x00\xfc~\
+/\xea\xea\xaa`\xb7\xb3\x18\x1fO!\x1eOB\x92\x14\
+\xd5\xa0\xa9\xd2ht\x146\x1b3\xe7\x9f\xe1\x99)\x00\
+\xb4f\x93\x19F\xf3\xa1\x8b\x83A\x13\x01A\x10x\x9c\
+>\xdd\x81e\xcb\x16\xa1\xb2\xd2\x83X,e\x08\x1dO\
+F\xb7\xf2|\x16##\xd1\xa2\xe8\x1d\x00\xb0\xac\x0d5\
+55\xa8\xad\xd5\x86yKq{\xaa\xae\x5cip\xd8\
+\xed\x1c\x18\x06\xd8\xbb\xf70\x1e\x7f|;r9E\xdc\
+/X\xd0\x00\xaf\xd7\x85t:\x8btl\x00\x99\x14\x00\
+\xb0\xe08-\xdbX7\x00;::\xbbL\x15\x96Q\
+\xba\xf2\xd3\xa2\xa9\x00\xa0\xec\xc3\x8b\xdd@\xed\x96\xc9\x01\
+!\x97\xe3q\xe6L\x07\x9a\x9b\x17\xa1\xa2\xc2\x8b\xd1\xd1\
+\x14\xf2y\x91\xba\xb7|\xcc\xc0\xe5\xf2\xa0\xa5e\x15\xda\
+\xda\xde@*\x15\x87\xe6%\xd5\xd5\xd5\x1bB\xb7\xfa=\
+\xd6\xafX:@79p\xd8l,\x5c.\x1b\xce\x9e\
+\xed\xc2\x83\x0fnA\x7f\xbf\x920\xd2\xd8X\x83\x86\x86\
+\x1aH\x92\x88\xe1\xe114y\xce\xa2\xa1*\x81q\xbf\
+\x0d\xaf\x8d4A\x90\x1d\xd0\xc6,\xb4M\x8d\x9a\xce\x19\
+\xf3\x81\xd9S\x01r4\x1a\xed\xa8\xae\xae^A\x0f\xc9\
+N\x15\x08\x82\xc0\xa3\xb5\xb5\x03K\x97.B(\xe41\
+\x80\xa0|@E9\xc9\xb2\x0c\x96.m\xc6\xc0@?\
+r9\x1e\xb5\xb5\x0d%\x0d\xbc\xc9\xa8\x15\xabg\x948\
+\x0b\x86!p\xbb\xed\xc8f3\xf8\xdd\xef\xb6a\xdf\xbe\
+W\x00\x00\x81\x80\x0fK\x97*\xb9\x0a\xb1X\x1c\x83\x83\
+#\x10\x84\x1c\x9a\xeb\xb3p\xb8\x09\x02#\x02\xae\xaen\
+\xc7\xf1\xd8e\xc8Hn\x03\x00\xd4\x19K\xa5\x18?+\
+`\x98,\x00h\x0e\xd2\xa3R\x85\xb8\xf4\xd8\xd8\xe8\x90\
+bd\xc9\x06\xe6\x97\x03\x02M\x1a\x10\x04!W\x00A\
+8\xecE<\x9eF:-\xa8\xd7L\xae\x17\xea\xa2^\
+{\xa6\xd5=S3\xeeJ\x03\x83\xc0\xed\xb6\x81e\x09\
+\x0e\x1c8\x82\xdf\xff\xfe\x8fH\xa5\xd2\xe08\x16--\
+\x97\xa1\xb2\xb2\x02\x82 \xa0\xbb{\x00\xa9T\x06\x0cC\
+ \x8a9\xd8X\x19\x0e?\x03\x9b\x8b\x81tN\xc0\xaa\
+\x8a6\xb4'\xe7cL\x0c\x81\x10\xc5@\x8e\xc7GN\
+R/1'\x92`\xaa\x12@6\x1d\x17\xb6?\xfca\
+\xe3\xc1\xb7\xbf\xfd\xc6\xff\x09\x00\x92\xa4\xd8\x01\x13\x01\x81\
+\x96\x04\x1a\x11\x02\xe4r9\xb4\xb6v\xa2\xb9y!\x02\
+\x01%\xb12\x9d\x16f9\x14;s\xcb\xdf\xe5\xb2\xc1\
+\xe5\xb2\xa1\xb3\xb3\x0f\xbf\xfb\xdd\x16tu\xf5\x01\x00\xe6\
+\xcf\xaf\xc7\xe2\xc5M \x84`pp\x04\x91\xc80\x08\
+!\xe08\x16\x92$B\x96e\x84\x83\x22\x08\xc3\xc2\xe6\
+\x00|M6$\x07rX\x8avtfd\x8cJ5\
+\xd0\xa4\x0a\x8a\xdb|Vi\xba*\xc0,\x05\xa4}\xfb\
+\xf6\x0c\x8c\x8f\xc7\xba\x83\xc1\x8a\xf9Z\x90d&@\xc8\
+\xe7\x15\x10,]\xaa\x83 \x95\x12\xca0\xed\xfc\x81\xc3\
+\xe1`\xe1\xf18 \x08\x02\x1eyd\x1b\xf6\xee}\x19\
+\x82\x90C8\x1cDK\xcb\x22\x04\x02\x8a\xe4\xea\xe8\xe8\
+A.\x97\x07\xcb\xea\xd6}.\x97\x03\xcbr\xaa\x1c$\
+\x00\x01\x1c.\x0e\xf6\x85,\x92\xbd\x02\xe6\xcb\xed\xf0\xe5\
+\x13\xe8\xe2/\xc3\x0c\x97o\x98\x14M\x08\x00Y\x96\xb5\
+Q\x1e\xb3\x08*0\x1f\xea(\xd5\xbe}{\x9e\xb9\xe3\
+\x8e\x0f\xfd\x83\xc6\xe4\x99\x02!\x97\xcb\xe1\x8d7\xba\xb0\
+t\xe9\x22\x04\x02n\xd8\xed,b\xb1L\xc9\xba\xce5\
+88\x8e\x81\xd7\xab\x18k/\xbdt\x1c\x1b7nG\
+,6\x0e\x9b\x8d\xc3\xca\x95\x97\xe3\xb2\xcb\x1a\xc1\xf3\x02\
+\xda\xdaz16\xa6\x0cV\xd1\xcc\x97e\x19\xa2(\x16\
+V Qk\x00\x10\x02\x86\x10\xcc[\x11\xc4`W\x12\
+\x18\x18B.\x9f\xc7\x91\xb1s]\xc6\x0b/|$\xb0\
+$\xf3\x01\x88\xdf\xf8\xc6\xff\xdd\xb5t\xe9\xb2U\xcb\x96\
+-\xbf\x01\xd0\x99<\x13 \xe4r9tt\xf4`\xd1\
+\xa2&\xb8\x5c\x0e\xc82\x10\x8b\xa5-\x197\x9b\xc3\xb2\
+\xca=\xcaM\x0cC\xe0\xf5:\xe0p\xd8\xd0\xdf?\x88\
+G\x1e\xd9\x86\x13'\xce\x02\x00\x16,\xa8\xc7\xea\xd5\x97\
+\xc3n\xb7\xa1\xafo\x08\xe7\xceE I\x12X\x965\
+xF\x84\x10d\xb3\xd9\x02 4\xa6\xeb\x81T\x02\x99\
+\x10\xcck\x0e\x022 \x0f\x8c\xe0#\xeb\xb8\x8f\xb4\x9e\
+v\xbd\x14\x19\xcdhK\x97X\x05\x85\x080\xfd\xc4\x90\
+I\xad\x0fP\x18\xe75&\x82:\xa0|GP\xfb\x92\
+\x98\x0f\xcaG\xa4\xfc\x8f=\xb6\xf9s--\xab\xae\x07\
+\xf4\x06\xd6\x96\x82\x01dH\x92\xf6\xbf\xb6\xdcJ\xf15\
+\xe6\xff\xddn7\x16-j\x82\xcd\xc6!\x9d\xe6\x11\x8b\
+\xa5K\xd5u\xaamP\x12\x1c\x84\x10x<v\xb8\x5c\
+6\x08B\x0e\xdb\xb6\xed\xc1\xf6\xed\xfb!\x089x<\
+n\x5cs\xcd\x0aTWW \x95\xca\xa2\xb5\xb5\x1b\xa9\
+T\xba\x88\xe9t<\x22\x99LB\x0bP\xddz];\
+\x9c\x0e\x16 DK\xa8\x80\xc7e\x83\xcf\xa7\xe4>\x8c\
+FR\xe8|}\x04\xc9d\xa6\xe3\x99\x97\xde\xf8\xd7g\
+\x0eu\x1c\x05\x90\x04\x90\x06\x90E\xf1\x1a\x03\xb2\xdaV\
+S\x02\xc1T\x01@@M\x05\x87\x02\x02\x17\xa8O\xc9\
+i\xfb\x8d\x1b7\xff\xfd\xca\x95\xab\xaf\xa1\x99\xa8\xed\xa7\
+\x0b\x04\xb7\xdb\x8d\x85\x0b\x1ba\xb3q\xc8\xe5\xf2\x88F\
+\x93e{\xb0\xc5{L\xfaZ\xb7\xdb\x06\x8f\xc7\x01\x96\
+eq\xf4\xe8)l\xdc\xf8\x0c\xfa\xfb\xa3\xb0\xd984\
+7/\xc4\xca\x95K \x8a\x22\xba\xba\xfa\xd1\xdb;h\
+\x1a\xc13o\x0c\x04![\x98\x81\xc4\xb1\x12n\xbe\xaa\
+\x13N\x07\xab\x80O\x05\x8c\xc3\xce!\x14tB\x93\x0a\
+#\x03)t\x9f\x19F6\xcd'\x9f>\xf8\xc6\xdd[\
+\xf7\x9f=\x02\x1d\x00\x02\x8c\x8bOM\x0b\x04S\x01\x00\
+\xa0\x03@\xcbR1K\x01M\x12\xf8\x00x7n|\
+\xe2\xefV\xae\xbc\xe2j\xb5R0\xef\xa7\x03\x04\x9f\xcf\
+\x8b\x85\x0b\x9b\xc00\xa4\x00\x02I*~\x87\xa9\x0a\x02\
+\xed\x15\xedv\x16^\xaf\x13v;\x87ht\x14O<\
+\xb1\x13\xfb\xf7\xbf\x0a\x00hj\xaa\xc1\xda\xb5\xcb\xe1\xf3\
+\xb91::\x8e\x93'\xdb!\x8aRQ\x04O\x97\x00\
+\x0c\xd5\xfb\xf5\xa9\xea>W\x0a7\xae\x89\x80\xd1\xa4\x04\
+\x98\x02\x08\xea\xaa\xdd\xd0\x00@\x08A*.\xe0\xd4\xe1\
+>\xf0\xe9l\xb2\xado\xe4\xfb\xdf\xdf\xf8\xd2F\x00\x19\
+\x00<J\xaf42i\x10Lz\x89\x98\x12j\xc0\x0e\
+\x05\x00f\x10h@\xf0l\xdc\xf8\x87O\xafZ\xb5f\
+\x9d\x15\x00\xb4\xfdT\x81\xe0\xf3y\x0a \x10\x84<\xa2\
+\xd1\x84\x05\x08\xca\x87\x8e\xcd\xc4\xb2\x0c\x02\x01'\x1c\x0e\
+;\x04\x81\xc7\x9e=\x87\xb1u\xeb\x1e$\x12Ix<\
+n\x5c}\xf5r45\xd5\xa9+\x9dw \x16\x8b\x1b\
+\xc4\xbc\x0e\x00\xc6\x00\x04\x86!\xe0y\x1e<\xaf\xe4=\
+\x10B\xe0w\xa5\xf0\xb6+\x06\xc0\x10F-\x03 \xea\
+\xb9\xca\xb0\x0b6\x8e\xa1\xc7\xd9!\xa4\xf38s\xa4\x0f\
+\x89\xf14Z\xcfE\xbf\xf6\x83\x8d\x87\x1f\x85\x02\x00\x1e\
+\xc5k\x13O\x09\x04\xd3\x01\x00\x0d\x02;t\x10h\x9f\
+\x96\xf5\xc0\x08\x04\xf7\xc6\x8d\x9b\xefZ\xbd\xfa\x8auf\
+\xa6\x9a\xf7S\x01\x82\xd7\xab\x83@\x92d\x0c\x0d\xc5\x91\
+\xcb\xe9\xa1\xe3\x09\xde\xa6p\xa4\x19x>\x9f\x13\xb2\x0c\
+\x9c9\xd3\x8e\x87\x1f\xde\x86\xee\xee~\x00\xc0\xea\xd5K\
+\xd1\xd2r\x19\x9cN;\xba\xba\xfa\xd1\xd1\xd1S$\xe2\
+\x95q\x10]\xef\x9b\xa5A<\x1eWG\x1c\x95\xdf>\
+g\x0ao[\xd5\x07B\xb4\x9e\xaf\xde\x0b \xe0s\xc0\
+\xe3\xb1\xa9\xb5$\x85\xea\x8ay\x09'^<\x87\xc4X\
+\x0a\xb1df\xcb?\xfdr\xcf\x17`\x04\x01\xbd\xfa\x98\
+f\xa4O\x08\x82\xa9\x02@k=z^ \x0d\x027\
+t\x9b@\x93\x08\x1e\x00\x9e\x8d\x1b7\x7fj\xf5\xea+\
+\xd7Y1\xd5\xbc\x9f,\x10\x8c \x9008h\x04\xc1\
+Dj@a\xbc\x0b\x0cC\x90L\xa6\xb0q\xe3\xb38\
+x\xf08x^@mm\x18\xeb\xd6\xad@ee\x05\
+\xe2\xf1$N\x9f\xee@&\xc3\x1b\xf4\xba\xc2hk\xa6\
+\xd3~\x7f*\x95V=!\xe5?\xaf3\x85\x1bV\xf6\
+\x17\x98^\xf0\x0a@\xe0rs\xa8\x088\xd4\x86\xd6\x01\
+\xa0\xfdn=\xd6\x87\x81\xae\x11\xc4\x92\x99-\x0f\xed8\
+\xfe\xad\x13\x1d\xb1(\x14U`\xa5\x0e&\x04\xc1\x94V\
+\x09+!\x05\xb4\xd5\xc14{\x80\x96\x04\x9a4pC\
+\x01\xc1\xdf^q\xc5\x95\xeb\x8a\x0d<=el\xaa@\
+\xf0z=X\xb0@\x97\x04\x83\x83\xe3\x13J\x02\x87\x83\
+C(\xe4\x05\xc71\xc8\xe7\xf38p\xe0Ul\xdc\xb8\
+\x1d\xf1x\x12v\xbb\x0dW]\xb5\x1c\x97_>\x1f\x00\
+p\xfat\x07\xa2\xd1X\x81\xe94\xc3\xad\x99\x0e\xc3u\
+\xe3\xe3t\xefW\xad}G\x12\x7f\xb1\xbcO\xf5\x00\xf4\
+akB\xd4\xc9\xa5a\x97\x81\xe9j\xe3\xab\xbf\x81\xb6\
+\x13\x038\xd76\x88,/\x9cy`\xdb\xab\x1f}\xbd\
+s,\x0a\xc5(\x9c\xf2\xeac\xd3\x01\x80V\x0f\xcd \
+d\xa0.\x11\x83bu@K\x017\x00\xf7\xd6\xad\xdb\
+\xff\xa1\xb9y\xd9\x0akK\x7fz@\xf0x\xdc\x05\x10\
+\x002\x86\x87\x93H\xa5x\xad\xce\x85\xfa\xdbl,*\
+*\xdcp8\x14\x11\xdb\xdb;\x80\xdf\xfev+\xce\x9c\
+\xe9\x00\x0047/\xc2\x95W.\x85\xd3\xe9\xc0\xc0@\
+\x14]]\x03\xc8\xe7s\x06\xbd\xce\xb2V\x0c\xb7\xee\xfd\
+\xa2(\x22\x91\xd0g\x17i r\xd9\xd3X\xb7\xa4\x13\
+\x0e;c\x09\x82\x86Z\xaf\x81\xe1\xea\xcd\xeao%\xa8\
+2pn\x04'_\xee\x84 \x08}/\x9e\x1c\xf8\xfb\
+\x0d\xcf\x9dy\x15\xc5 \x98p\x91\xea)\xaf\x13h\xa1\
+\x0a\x0c\xcb\xc4@\x01\x81\x0b\xbaJ0\x80\xa0\xba\xba\xb6\
+\xf2\x89'\x9e\xba\xa7\xaa\xaa\xba\xde\xcc\xe0R@\xa0\xcf\
+\x97\x02B \x10DccMa\xcd\xbf\xe1\xe1D\x01\
+\x04\x0cCPQ\xe1\x86\xc7\xe3\x04\xa0\xac\x0b\xfc\xe4\x93\
+{\xb0s\xe7\x8b\xe0y\x01\xc1\xa0\x1f\xeb\xd6-W\x92\
+4\xc4\x11\xb4\xb7\x9eE\xef\xb8\xab\xc8\x98S\xf6\xa5\x19\
+n\x06F2\x99B.\xa7\x03\x88a\x94\xa4\xd8lv\
+\x0c6\x12\xc1\x0d\xab\x00\xaf\x9bNGW\xee\xab\x0a\xbb\
+\xe0\xb0\xb3EL7K\x85\xe8\xc0\x18^\x7f\xa9\x1d\x99\
+\x0c\x9f8\xf0\xfa\xb9\x8fox\xae\xed\x18t\xef\x80\x9e\
+GP\x12\x043](\x12\xb0X#\x18\xba:\xd0@\
+\xe0\xa16wmmmx\xd3\xa6\xa7\xbeX]]S\
+_\xde\xf7\x9f\x1a\x10\xfc\xfe \xe6\xcd\xd3\xe7\x0d\xc6b\
+I0\x0c\x81\xcf\xa70S\x92$\x1c?~\x06\x0f=\
+\xf4\x14\x06\x07G\xd4\x10\xee\x12\xb4\xb4,\x02@\x90\x1c\
+>\x0a\xf7\xe8\xab\x90\x04\x09\xdd\xb9\xc5\x18\x97kKX\
+\xfa\x13K\x00Q\x141>\x9e\x00\xcb\xea\xcc\xe5\xf98\
+\x92\xc9A\x88\xa22\xbaig2\xfc\x8dkI.\x1c\
+t{\x89\x16\x0f\x00A\xc0o\x87\xdf\xeb,f\xba\x85\
+TH\xc6Rx\xe9\xf9S\x10\x04\x01\x9d\x03\xa3_\xf9\
+\xe1\xef\x8fn\x80.\x09&\x5c\xae~\xa6K\xc5j\xf5\
+1\x83\xa0\x94:(\x80@\x91\x04\xdb\xee\xa9\xa9\xa9\xae\
+\x9f8\x084y \x84\xc3a\xd4\xd6\xd2)_\xca\x8d\
+\x03\x03Ql\xda\xb4\x03\x07\x0f\x1e\x07\x0044Tc\
+\xcd\x9ae\x08\x04|H$R\xe8\xe8\xe8A\x83\xff\x0c\
+\x167\xa6\x11mK\x03y\x09#R=\x86\xc8\xe5&\
+\x00L$\x01\x94\xf3z\xef'\x90\xa4\x1c\x12\x89\x01d\
+\xb3\xba\xbb\xda\xd5\xd5\xf9\xf2\x9e=\xcf\xef\x0f\xfam\xcc\
+/\xef\xfd\xf0\xc7j\xaa\x025Z\xb7r;m\xa8\x0c\
+\xb9\x0bL63]\xf9M\x0a?3)\x1eG\xfet\
+\x1ac#\x09\xf4\x0e\x8d\xdf{\xef\x86#\xbf\x82Q\x12\
+\x14\x81`F\x00\xd0\xebBh)@\x07\x89\xac\x0cC\
+\x17\x8a%A\xe5\x13O<\xad\xaa\x83\xc9D\x03'\x07\
+\x84p8T\x00\x01\xcf\xf38t\xe88\x1e|p+\
+\xb2Y\xa5\xe7\xad[\xb7\x1c\x8b\x165\x82\x10\xa0\xab\xab\
+\x1f\xf1x\x0a\xc9d\x0a\xd7/\xefCu\x05\x0fY\x92\
+1\xd2\x93F>\x91\xc38j1\xc25C&\xb6I\
+J\x00\x06\xb2,\x15\x06\x83\x12\x89A\xa4R\xc3\x85\x05\
+\xa8b\xb1\xd1\xae\x17_<\xb0}`\xa0o@k\xc7\
+\x80b\x0e?z\x00\x00\x10\xb6IDAT\xcf\xe6\xfa\
+\xfe\xd7?rg\xcb\xe2p3\x08`\xe3\x18\xd4\xd5\xf8\
+\xca2]=\xa1\xf1\x01\xf9\x5c\x1e\x07w\x1dGl$\
+\x81\xf1Df\xf3W\x7f{\xe8\x1f\xa1H\x02+\xe3P\
+\x86\x0a\x82\xd9\xfc^\x00m\x18NV\x12xjkk\
+\xc3\x9b7?}OU\x95\xa6\x0ef\x07\x08\x1cg\xc7\
+\xbe}\xaf\xe0\xc8\x91\x93\x18\x1bS\xe6\x0fr\x1c\x87\xab\
+\xaej\xc1\xf2\xe5\x8b\x11\x89D\xd1\xd5\xa5L\xc1\xca\xe7\
+E\xa4RI\xdc\xb02\x82\xaa _`\xeaPG\x1c\
+|\x5c\x80\xc0x\x11u^\x070\xf6\x12\x12\x801\xd8\
+\x08\x89D\x0a\xe3\xe3#\x88\xc7\xfb!\x08Y\xc8\xb2\x8c\
+L&=v\xfc\xf8\xb1\xa7O\x9e<q\x02F\x0b\xbd\
+\xd0y~\xf8\xcd;\xef\xbc\xf6\x8ay\xd7\x10BP_\
+\xeb\x05\xa7\xa6\xb1Y1\xdc\xc4\x83\xc2\xf9\xa3\x07O\xa3\
+\xfb\x8d~$\xd3\x99\xdd\x1b\xf7\xbc\xf1\x8f\xc7\xdbcf\
+\x0f\xc1\xe0\x1d\xcc\xe6'ch\xf7p\x22\x17\xd1\xa0\x0e\
+jkk+7o~\xfa\x1e\xc5&\x98\x5c4\xd0\xfa\
+\x1a\xfd|WW?\x1ezh[\xa1\x8e\x1e\x8f\x1b\x0b\
+\x17\xd6\xe3]\xef\xba\x1a\xaf\xbf\xde\x86\xa1\xa1\x91\x02\x03\
+\x13\x89$DQ\xc4\xf5\xcb\x07P]\xa1\x02@y1\
+\x88\xc9<\x06\xdab\xe0\x89\x17q\xd7\x1a\xe4mA\x13\
+\xd3\x8d6B>\x9fG{\xfb\x09\xa4R1\xb5\xce2\
+:;\xdbv\x1f8\xb0\xff\x05A\x10\xe20\xf6DP\
+m\xc6\x01\xe0\xbe\xf0\x99[\xde\xf5\xc1\xf7,\xbb\xad\xba\
+\xd2\x03\x97\x93C9\xa6'\xc7\xd38\xd7>\x94iY\
+\xb3\xd0\xc5P 9s\xbc\x03\xa7\x8e\xb6#\x91\xc9\xec\
+\xfa\xe7\xff<|\x17\xca\x8c\x1d\xccJ\xc6\x81\xacqC\
+\xd71\xda0q\x1e\x0a\xf2x\xb5\x12\x19(\x83\x19i\
+\x00)uKG\x22\x91\xe1\x0f~\xf0\xd6\x9f\x0c\x0d\x0d\
+\xf6\xeb\xba\x96\x81~\x5cl\x84Y_\xa33C\xad\x17\
+\x00mu\xcf\x0a\x5cye3^{\xed\x0d\x0c\x0f\xc7\
+\xc0\xaa\x9f\xb9\x95$\x85I\x8ca\xaa\x0f\x01\xd4\xb2\xfd\
+\xd5n,\x5cQ\x05\x17\x93B0\xb5\x1f\x0e9\x01\x8e\
+c\xc1q\x0cX\x96)\x94\xc3q,\xe2\xf1!\xb4\xb5\
+\xbd\x8cDb\x04\x92$ah(zj\xcb\x96'\xee\
+\xdd\xb3\xe7\xf9\xa7\x04A\x88\x02H\xa8[\x9c\xda\xc7\xa9\
+\xffS?}`\xc7\x8e\xef\xff\xe2\x85_&Sy\xc1\
+\x1cV\xd6c\x11\x0c\x18B\xd0\xdb6\x8c\xa3\xafv\xf7\
+\xb7u\x0e\x1d'\x0c\x03e#Xv\xe5e\x08\x84\xfd\
+`\x08\x13\x84\x22\x81m\xeaF\x0f'\x03\x98\xc5\x94\x13\
+\x0b\x10h.\x88\x06\x02\xc1\x04\x82\x14,@\x10\x8dF\
+\xfa\xcb3y\xf2@\xd0@\xe0t:\x10\x0c\xfa\x91\xcb\
+\xe5\x11\x8b%T\xa6)\x0c\xccd2`\x18\xe5X\x14\
+a\x0a\x1f\x12\xe4r\x12*\x1b\xbch\xb9\xba\x01\x0eN\
+\x86wl/\x1c\xd9\xae\x02\xe3Y\x96\x85(f\xd0\xd7\
+w\x0aCC\x1dH\xa5\xd2\xc8f3\xb1?\xfdi\xef\
+\xaf\xb6m\xdb\xfc@,6r\x0e\xca0.\xcd\xfc8\
+\x80q\xea\x98\x06A\xf2\x99\xddG_\xfb\x97\x9f>\xfb\
+\xff\x06\x87\x13\xfd\x1a\xd3\x01%\x7f\x80!(\xe4\x11\xf0\
+\xd9< \x13\xe6l\xd7\xf0 \x00\x03H\x9c\x0e;l\
+\x9c\xad\x81\x02\x80yn!\x03\x80\xcc\x1a\x00,@ \
+\x9b@ \xc0(\x092*\xf3\x934\x08\xee\xbc\xf3\xf6\
+\xfb\xa3\xd1\xe1>=\xbe>} h\xc4\xb2,\xecv\
+\x1b\xce\x9d\x1b(0\x9eeYu&\xae6e\x8b\x81\
+\xdb\x99\xa7\xdc-\xe5\xfe\xbc(\x83\x10\x06\x9e\x80\x03\xab\
+n\x98\x07\xbf\x8f\x85#v\x08\xb6t\x07\x08\x9102\
+\xd2\x85\xae\xae\xe3H\xa5\xc6\x90Je\xb2mmg\x9f\
+\xdb\xb0\xe1\xe1\xef\x9c=\xfb\xc6\x09\xf5\xdd\x92&F\xd3\
+\x9b\x06\x82\x02\xf3\xb5\xed\xa9\x1d'\xce\xdc\xfa\xd7\xbf\xfc\
+it8\xdeO3]\xeb\xe5D\x1f|\x22\x90\xc1\x9a\
+\xa5\x85\xcda\x87\xc3\xc6\xd5[\x00\x80v\xe1g?\xe9\
+l\x02\x10\x98\xd5\x81&\x0d\xb4\x17OE\x22\xfd#\x1f\
+\xf8\xc0\xfb~\x12\x8d\x0e\xf5)zv\xfa@P~3\
+\xe0y\x1e\xa2(B\x10\xf2\xe08\xb6 \x01\xb2Y\x1e\
+\x0c\xa3\x1cs\x1c\x8b\x80GQ\xcbf\x10\xe4r\xca\xca\
+WN\xb7\x03+\xae\x9f\x0f_\xd0\x05\xdb\xc8\x01\xa4\xdb\
+\x9f\xc4\xc8H\x1f$IBOO\xcf\xd1\x07\x1f\xfc\xed\
+\x0f^x\xe1\xf9\xa7\xa1K8\xba\xe7\x9bE\x7f\xb9\xff\
+\x93\x00\x92\x91hz\xe4\xca[~\xfc\xbd#'z_\
+62]yG\xbb\xdd\x86\xfaJ\xff\x02\x8ea\xdcz\
+0Iy\xf7\x0a\xf5\x83\xde(\x9eZNg\x14\xcdM\
+\xd6!\x05\x02s\xdaX9\x10h\xea \x19\x89\xf4\x0f\
+\xdfq\xc7{\xee\x8fF\xa3}\xa4\x10[\x9f:\x10\xb4\
+-\x9fW>X\xad\xf7~\x06\xb9\x5c\x1e\x0c\x83\x824\
+`\x18F\x15\x88\xba\xdfM\x08\x01\x01\x03Q\x95\x02 \
+\x80\xcd\xc6a\xcd\x8dKP;?\x84\x0a6\x8e\x1a\xe9\
+\x5cv\xff\x0b\xbb\x7f\xbfi\xd3\xa6\xc7y\x9e\x8f\xa1X\
+\xba%J\xec\x93\xd45\xe6\xff\x0d\xdbm\x7f\xf3\xc0\x7f\
+m\x7f\xfe\xd4\x1f\xf5E0\xd4\x88a}\x00,\xc3\xe0\
+\xed\xeb\x16_G\x88\xa2\x22\x0a\xf5V\xdb\x0cz\x94\xd6\
+\x0c\x00`\xb6U\x00MT\xb8q\x22\xc30MmZ\
+\xcaS*\x12\x89\x8c\xdcq\xc7-*\x08\xb4\x10\xec\xd4\
+\x80\xa0\x89vm\xd3\xf56\x07\x9e\x17\x0a\xba_\xdb\xd4\
+61\xb5\x11\xc0\x0b\xb2\xf1\xd9\x00\x9a\xd7\xcc\xc3\xbc%\
+\xd5\xa8rd\x9d\x1f\xb9\xa6\xf2\x1d^'\xc3\x96x'\
+\x0d\xdc\xf4o\x1a\xf4\xe6N`\x05\x82\xd4]\xf7<\xba\
+\xf97\x8f\xee\x7f\x84\xe7\xf3\x19\xad.\xf5\x0b*q\xcd\
+\xbb[\xe0\x0fy\x0cL\xa7U\x01\x8c\x8c/\x9ad:\
+\xa7y\xc7\x93\x04\x01\x0f\xbd\xc7d\xa0\xf7\x8cT$\x12\
+\x19\xb9\xfd\xf6[\xee\x1f\x1eV@0U \xd0\xe7=\
+\x1e\x17l6\xc5Z\xcf\xe5\x04\x83\xeeW6u\x81\xeb\
+B\xc4U\x05\x02!\xca\xc7\xa5\xa0\x1a\x96ZC\x83`\
+\xc9\xaaF,_\xb7\x10a\x9f\xbb\xee\xde\xbf{\xd7=\
+k\x97T\xd5Q\xef\x94\x85Q\xcai\x9b\xf6?\xfd\xee\
+\x93\x01A\xf2\xeb?|f\xcf\xe7\xbf\xfe\xfb\x9f\xf1\xd9\
+\x5cF\xab\x8b\xbf\xc2SH&\x81\xe6\x05AQ\x17B\
+N\x1aD1\xf3\x0d4\xe7\x89\xe7\x14\x08\xe8\x8f&\x96\
+R\x07ZO)4B$\x12\x19\xbe\xed\xb6\x9b\xef\x8f\
+F\xa3}\xc6^^\x0c\x04\xbd\x17h\xe2\x9f)\x80\xc3\
+f\xe3TQ\xafd\xe8\xd0\xbd_\xbbN\xc8\xcb\xea\xc0\
+\x8b\xd1\x13\x10%@.X\xe1\xc6g\xd5/\xa8\xc4\xea\
+\x1b\x96 \x10p\x85>\xfd\xfe+\xfe\xe9/\x96\xd76\
+\xc2\xe8\xf9\xe4Jl\x02\xb5/g \x1b\xd4\xc5S;\
+O\xb6~\xf8\xee\x07\xbe7\x14M\xf4\x19\x98\xae\xb5\x85\
+j+\x8cD\xc6\xc1\x8b\xd2\xe0D\xfc\x99\xfb\x99\x07(\
+\x92\x04t\xe6\x0a\xddPZo0\xbb\x88\xa9H$\x12\
+U@0\xd4W,\xeeu \x18\xff\xd7{6-\xe6\
+\xb3Y\x01\xb2\x0c\x93j`\xe0r\x88`\x0b\xd1\x14\xbd\
+\x97\x135\x00+\xe6e\xfd\x7f*\xd6@\x08AMC\
+\x08W\xbfk9\xdc\x1e\x87\xfbo\xde\xb3\xfaGw\xbf\
+o\xf9M\xb0H\x9b/\xb3\x99\x81Pd\x17\x81\xf2\x96\
+^:\xdas\xee\xe6\x8f\xfe\xecG\xdd\xbd\xb1\xb3\x05\xa6\
+\x17\x5c_\xa5\x8ebND<)t\xc0h\x90\x17E\
+\xfd\xce\x0b\x00\x00Ku\xa0\x01\xc0\x0a\x04\xe6\x06HG\
+\x22\x91\xe8\xad\xb7\xdelR\x07V@\x80\xc1\x00d\x18\
+\x06\xc1\xa0\xd7\xd0\xfbi@h \x008$2.\x83\
+\xfb\x08\xa2\x03B\xc8I\x06\xa6\xd3\x01\x19\x86\x10\x04\x82\
+^\xbc\xed\xbdW\x22\x10\xf2a\xed\xb2\x86/~a\xfd\
+\x9a\x8f\xc2\xca\xa0\xa0\x9a\x04\xd6@(\x1583H\x83\
+\xbe\xa1Dt\xed-\xf7\xdew\xecd\xcfA30\xf3\
+9\x11\xf1\xb1\x14^<\xd9\xbb\x03\x16\xb9\x82\xd4\xf3\xcf\
+\x1f\x00\x80\x926\x01\x0d\x00s\x0f0\xb9\x88\x91\xe8\xad\
+\xb7\xde\xfc\xe3ht\xc8\x22N\xa0\xf7|]\x0d0\x05\
+\x10\xb0,\xa3\xa6e\x93\xa2\xde\xcf\xb2\x0c\xf8\x9c\x84?\
+\x1d'\xe8\x8eh+\xb1\xa9v\x92\xaak\x85\x5c\xde\xc4\
+\xf4b\xdf\xdc\xedu\xe2\xba\xbf\x5c\x85`\xc8\x87\xa5M\
+\xe1\xcf\x7f\xef\xaek\xff\x15\xc6\x05\x9e4?\xbc\xa8i\
+P^\x1a\xd0\x12\xd1\x00\x84\x9b\xd6\xff\xec\x97[\xb7\x1f\
+\xdd\xa8\xabC\x16\x83=#\x88\xa7\xf8\x13\xbb\x8ft\x9f\
+\x81q$\xd00$\x8c\xd9\x0a\x05O\x85&0\x0c\xcd\
+\xba\xd0\x1c6N\x0e\x0c\x0cDo\xbf\xfd=?\xd2\xd5\
+A) \xe8\x9b$)V|&\xc3\x17\xf5|\x86a\
+02\xd2\x877\xde8\x82\xe8\xf0\x10\x9e\xda3:~\
+\xbam\xf0,\xa1z?@ \x08\xb2%\xd3\x09CK\
+\x05\x02\xbb\xc3\x86w\xdcz\x15\xe6-\xaeC8\xe0\xbd\
+\xf5\xfbw_\xf7\xf3\xcb\x1b\xfda\xe8\xfe\xb8\xd9%\xd3\
+\xda\xc2,\x195\x10\x98\xa3\xa7E\xc6\xe1]\xf7<\xbc\
+\xe5\xd1-/\xfdG.\x9fO\x89\xf9<^>\xd4v\
+\xe2\xbeG\xf7}\x13\xa53\x84\x0a\xea`V\x06\x83\xa6\
+C\xc4\xd8\xc2V\x03H\xda\xc4\x13:\xd9\xb40\x8a\xd8\
+\xd0\xd0P\xf9\xcc3;\xbeTYY\xd3`\x1c0\xd2\
+\xc6\xdb\xfb\xf0\xdf\xff\xfdt\x01\x04W\x5c\xb1\x14\xc9d\
+\x8a2\xe0\x80Tj\x1c}}g\x91J\xc5!\x8a\xf9\
+l__\xff\xa1}\xfb\xf6\xec\x01@>\xf7\xa9w\x5c\
+\xf9\x89\x0f^}\x87,kB\x80\xa0\xbe\xd6\x07\x1b\xc7\
+h\xf5\xa7\xaao=bw\xfah\x07N\x1dmC:\
++\xb4\xfez\xcb+\x7f\xd5\x1a\xc9\x0cA\x01\xb8\xd5\xe8\
+\x9c\xa1y`\xf1I>S\x9b8\xd5c\x87\xdaf\xcc\
+g\xfe\xeam\x8b\xfcn\xbb\xebG\xbf~\xeeU\x18\xbd\
+\x10m2\x89\xf6\xec\xc2\x80\xd4\x05\x03\x000!\x08\xac\
+\xe6\x1dX\x80`\xe7\x97\xaa\xab\xab\x1b\xf4\xa4\x10e\xdf\
+\xd5\xd5\x87\x87\x1ezZ\x95\x10\x12\xaa\xab\x9dp\xbb\x83\
+\xb0\xdb\x9d\xc8\xe5\xb2\xe8\xed}\x03ccQ\xc8\xb2\x8c\
+x<q\xea\xc0\x81\x03\xdbFG\x87F\x00u\x82\x22\
+@\xee\xfa\x1f\xd7\xae\xfc\xe4\x87\xae\xfb\xb0\xc3as\x12\
+\x02T\x86\xdc\xf0z\xf4\xef\x09[1]\xff\xa5\x5c\xd0\
+}\xb6\x1f\x87_x\x0dY!\xd7\x7f\xf0\xf5\x9e\xcfn\
+\xda\xd7u\x14F\x10\x98{\xa6V\x84\xd6&4\x08\xe8\
+\x8e\xa1mv\xea\x1a\xa8e\xd06\x15\xedv\xd2#\x82\
+\x22fk8x&T\x02\x04Z\xa2)=\x05\x8d\xce\
+1,\x0c'744T>\xfb\xec\xce/WU\xd5\
+4\xd0I!\xdd\xdd\x03x\xf8\xe1m \x84@\x10F\
+\x90\xcb\xc5\xa0\x0c\x15\xeb \xc9\xe7\xe5\xd8\xb1c\x877\
+\xb6\xb6\xb6\xb6B\xef\x8d2U\x17\xee\xe6w,\x9d\xff\
+\xad{n\xff,\xcb\xb2\xae\x80\xdfa\x98\xbae\xc5p\
+\xe57\x01}\x22:0\x8a?\xedx\x05\xe9t&\xf1\
+\xe2\x89\xbeO<\xbe\xaf\xb3\x14\x08hI@\x1b\x90t\
+\xa7\xa0\x81\xa0\xed\xcd\x00\xb0\xb2%\xcc\xcf\x12q!l\
+\x003\x95\xb1\x094\x11I#\xb9\xc8E\xec\xeb\xeb\x8b\
+\xbe\xef}7\xff0\x1a\x1d,\xb8\x88J\xe6\xae\xf6Q\
+h\x09\x82\x10\x83,K\x90$IM\xd1f\xd0\xdf\x1f\
+\xd9\xf1\xe4\x93O\xdc\xdb\xda\xdaz\x0c\xc6Q:\xc3\x08\
+\xdd\xce\x17Z[?\xf0\xb7\xbf\xf8V,\x9e\xee\xcb\xe5\
+\xb4\x88\xa01\xecJ\x07\x872)\x01\xcf?\xf9\x0a\xe2\
+\xc9\xec\x08Q\xad\xf3\xea\xfaJ\xdct\xfb\xf5p\xbb\x5c\
+\xbe\xebW6<\x0a\x9dy\x9a=`\x88\xceY\xb4\x87\
+\xd9S\xa2E;\x1dR\xa6\xdbF\x9b>\xa6\xa5\x86\x15\
+}\xad\x1c8\xcf^@)\xb2\x00\x01\x8d\xe2r.\xa2\
+\xe2\x12\xf5\xf5\x0d\xbd\xff\xfd\xb7|?\x91\x88\x8f\x98\xe3\
+\x00<?\x0cY\x16\x0b\xf6A&\x93o\xdb\xbe}\xfb\
+\xb7\xf6\xec\xd9\xf9\x87l6=\x04\x85\xf9\xe3(\x06A\
+ap&\x1aKG?\xf5\x8f\xffu\x7fk{\xe4\x84\
+\x15\xd3\xe9\x80L\x7f\xd702i\x01\xcf\xec:\xb1\x9f\
+\x1e\xbc\x09U\x05q\xd9\xb2y\xe0X\xd6\x07E\xa2\xd1\
+#t\xe6Q\xbaR\xf9\x15t\xcf\xb62\x96\xe9P\xb3\
+&\xfa\xadr\x02\x0b \xb8(\x00\x00\x94\x05A\xa9`\
+\x91A\x1a\xf4\xf6\xf6\x0e}\xedk\xff\xfco<\xcfg\
+\xb4F\x97\xe5<x~Te>\x9b\xe9\xee\x1e|x\
+\xf3\xe6\x0d?\x18\x1e\x8et\xa1\x98\xe1\xe3(=F\x9f\
+\x88\x0c\xa5\x86\xd6\xdf\xfd\xeb\x7f\xdf\x7f\xb8c\x8f9\xd4\
+LG\xe1\x92c\x19\xe4s\xf9\xec\xe1c]Qs\xd0\
+\xc8\xae.9\xbf\xa8\xca\x19\x82.\xd2K\x86iQ\x0c\
+\x84R\xae\x22m\xf0\xd1af\xed\x1a\xda\x0b(\xa8\x19\
+Y\x96/\xbc\x0a\xa0i\x0a \xa0\x07\x5c\x0a\x92`\xd3\
+\xa6\xc7N}\xe9K_\xf8\xae \xe4\xd2\x84\x10\xa4\xd3\
+C`\x18\x1bb\xb1\xccs[\xb6<\xf1\xe5\x03\x07v\
+\xeeFq&N\xa9\xbd\xf9\xba$\x80\xe4\x9d\x9f~\xe0\
+\xe1\xff\xdap\xe0\xa1\xc2\xbc>S\x14\xcef\xe7\xe0p\
+8\x9c\x12d\x16\xa0\xc3\xd5\xac\xe2:\x12\x06\xd7,o\
+Z\x81b\x15Pn\x11h\xf3\xd0:\xdd&\xf4\x98\x0a\
+\xbd\x99\x19\xafI\x00P\xfb\xd9]*v6H\x96\x0d\
+K\xd2HP\x1af\xa2Y\x9f\xda\xb5\xf9M\x9b\x1e;\
+i\xb7\xdb\xbf}\xf7\xdd\x9f\xff6\xcfg\xa3\xaf\xbe\xfa\
+\xf2\xaf[[Ot\xc28\xf6\xa0\x01\xc9\xca%\xd3\x12\
+5\xe9\xc4VCC~\xe5{[\x9f\xeb\xec\x8e\x0e\x7f\
+\xeb\x9fn\xff\xac\xd3i7|*,\x10\xf2\xa2\xafs\
+\x08\x7f\xb9\xf6\xb2\xeb\x08a\x0d\x9eB(\xac\xe4\x13\x8a\
+\x0a8\xe8\xdeo\xfc\xbe\x0dL\xb9\xfbz{\x00\xd4G\
+\xa3\xa8\xf6\x01\x8a\xc1c\x0e\x01\x1bt\xbfV\xf6E\x07\
+\x00`B\x10\x98\xdd\x96\x02\xf3\xd5-\xf7\xe8\xa3\x0f\xbf\
+v\xeaT\xeb\xe7\x8f\x1e=\x1cU\xaf\xd1\x98\xa71\x9b\
+\x16\x8f\xf4,\x1a\xda\x0b\xd0\x98\x94\xa3\xca.\x00\xe1W\
+\x8f\x1c8:4\x9a\xfc\xf1\xfd\xdf\xfe\xe8\xff\xaa\x08x\
+B\xcac\x08j\x9b\xc2h{\xbd\x07k\xafY\xd2L\
+\x87\x8e\x01\xc0\xee\xb4\x83\x10\x06\x90I\xa9\xe5\xdf-%\
+\x80\xd6\x1e\xea^{g\xcdf\xa0\xdb\x83\xb6!\xe8\xf6\
+1\xb4\xd9\x8cg\x06\x9d/\xb2p\x11\xe9\x00\x89\xe6\x0e\
+i\xbe\xb0\xb6\xa7-l\x8dh\xcf\x82\xd6\x9f4s\xad\
+2uiW\x94\x9e\xdf\xa0\xc5$\x5c\x8du\xfe\xf0s\
+\x7f\xf8\xd2Wj\xab\x02\x8d\xda\xad\xf9\x5c\x1e6\xbb\x8d\
+~\x0f\x00\xc0P\xff\x08v?\xb9\x1fO<\x7f\xea\xd3\
+;\x8f\xf6jK\xbe\xa4\xa0\xebmC\xee\xbey\x1e\x9f\
+\xa9M\x0a\x7f\x95m\xc42\xcc\x07.\x22#\xd0\x8a\xca\
+\xd8\x04\xb4!\xa4\x19@\xe6\xb1\x03s\xda\x15\x9dq\xa3\
+Y\xca\xb4\xb5,Xl\x1ac\xe8!ZC8\xb6w\
+ \x1e\xbdi\xfd\xfd\xf7\x1d;\xd1}P3\xfalv\
+\x9b\x1e\x92\xa6<\x85hd\x14\x0ca\xb0\xf3ho\xdb\
+,\xb4\x89U\xfa]\xd1fq\xbd\x81.j\x00\x00\xea\
+\x1b\x18S\xcch\xc3\xd0*N`\x1e93\xa7`\xd1\
+n\x12\xed'\xd3\xd2\xc0\xec~\x96\x1c\xa0\x02\x90\xea\xed\
+\x1f\x8b\xbe\xe3C\xf7\xffj\xc7\x9e\xd7\xb7\x99\x99nH\
+\xd2 \x04\xa2$\xcfx\x05p\xaaM\x0a\xc7\xa5\xc8|\
+\xbd\x99.z\x00hd\x91gH\xeb}\xab\x84\x0as\
+*\x96U\x8f7\xab\x00\xb3\x95]\xce\xfb0\x03-\xb9\
+\xfe\xee_=\xf6\xbb\x8d\xfb~[\xe4\x1e\xaa\xbf3\x89\
+,\xc6S\xc2k(1\x7f\xffB\xd0Ei\x04\x96\x22\
+\xca\x08\x02\x8c\x8d\xa7\xe9\xf8r.\x95\xf9\xc3\x8b\xda=\
+\xa5\x92%h\x83J\xa2\x8e\xcd 4$}\xfc\xefo\
+<\xb6\xf3\xd0\xd1\x8e\xce_\xdc\xfb\xc9\x7fv\xd8mn\
+=<\x0c\x0cGb87\x14\xdfO]O\xbf\x83\x8c\
+\x0b\x00\x887\x15\x00\x80\x22\x10\xd06\xc2d\xdc\x22\x9a\
+\xf9\x80\xd15\xb2jt\xedc\xcd\x80\x22\x09\xcc\x0c3\
+\x83A\x04\x90\xdf\xb0\xf9\xe5S6\x8e\xfd\x97\xef~\xf9\
+\xc3\xffPY\xe9\x9f\x0f(\xe3\x01C\xd1D\xc7/\xb6\
+\x1cy\x1a\xd6K\xb9\x94\xab\xc7\x9c\xd1E\xed\x05\x94#\
+\x93\x87`\x8e\xa5[\xc5\xd5\xcd`14\xb8YGN\
+\xe0\x81hk#\xd1\xf3\x1e\xcd\xc3\xb4\xdc\x92E\x95\xfe\
+}[\xbf\xfe=\xaf\xcb\xb1\xe8\xd9?\x1cx\xed\x0b\xf7\
+o\xfeZ\xffp:\x0a]Ei*\xa9(\x16QJ\
+g\xcf6\xbdi\x01\x00\x141\x09\xa6c3\x00\xe8}\
+\xe1\xb8\x5cC[\x80\xcc*o\xa1\xd4\x10\xad\x16\xeb'\
+w\x7f\xe4\xfaE\xbf~\xfc\xc5V\x14g\x0ck\x86h\
+\xd1\xf4\xedK\x00\x98\x02\x99|\xe3r~qY\x97h\
+\x82\xf2\xe9\x8d\x96\x04t\x02\x0b\xbd\xd1a^\xf3\x10\xad\
+9VO\x07\xa2&\xb5\xbc\xdbl\xd1\x9b\xce\x06\xb0\x22\
+Cd\xab(NR|\xcdt\xca7\x95KG%K\
+\x0d\xd6\xd0\xa1^\xed<=\xc4m\x1e\xa5+\xa8\xa5\xf3\
+\xc5|\xe0-\x02\x00\x9a\xe6\xaa\xf1J\x18\x9ffOD\
+\x03\x81\xc6|:\x09T\xeb\xe1y\xd3vA\xdd\xc1\xb7\
+\x1c\x00\xe6\x92,\xdcPm\x8c\xc2,\x05\xf20&}\
+jDO\x8c1\x8f\xd2]\x10]\xfc\x96\xb0\x01\xce7\
+\x95\xf0@\x18\x14\x8f\xee\x95J\xf20\x07\x82J\xae\xe3\
+7\xd7t\x09\x003\xa0\x12\xae\xa2\xd5\x06X\xc7\xea'\
+\x5c\xc9s\xae\xe9\x12\x00fH\x16\xae\xa8UL\x02(\
+vE\xe9\xe8\xe2\x05a>p\x09\x00\xb3Be\xdcP\
+\xabhd\xd1\xf1\x85b>p\x09\x00\xb3J\x16c\xf5\
+\x13\xd2\x85d>p\x09\x00sF\xe5\xc0p\xa1\x99N\
+\xd3%\x00\xfc\x99\xd3\x9b&\x1f\xe0\x12\xcd\x0d\xfd\x7f\xc7\
+\xc0 \xf9A,]\x89\x00\x00\x00\x00IEND\xae\
+B`\x82\
+\x00\x00+\xc0\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x00\x09pHYs\x00\x00\x1b\xaf\x00\x00\x1b\xaf\
+\x01^\x1a\x91\x1c\x00\x00\x00\x07tIME\x07\xd7\x0c\
+\x1b\x16\x028\x83\x98\xbev\x00\x00\x00\x06bKGD\
+\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00+MID\
+ATx\xda\xec}\x0b\x98\x1dGu\xe6\xa9\xee{\xef\
+\xbcG\xa3\xd1s4\x92,K\xb24zX\x96%[\
+\xd8\x18l$\x1b\x1c\xb2!` vx\x85\x04\xb0\x9c\
+\x00\xbb\xd9\x0d!l\xbe\xddM\x80\x04\x16\xf2e\x13v\
+\x93\xfd\x92\xdd\x95\x8d\xf1\x02\x1f\xb6\xc3\xe2\xe5e\xcb\x18\
+Y\x0f\x83\xf1\xfb%\x8d\xde\xb2,\xcfhF\xf3~\xdc\
+\xb9s_\xdd\xb5\xe7\xd4\xdc\xfa\xaa{\xce\xed\xee{\xaf\
+\xee\x05\x99\x9dc\x97\xba\xbb\xba\xfbvW\xfd\x7f\x9ds\
+\xeaTu\x0d\xcc\xc9\x9c\xcc\xc9\x9c\xcc\xc9\x9c\xcc\xc9\xff\
+\x97\x22\xa0B\x91\xe0\x97\xdb\x01\xacM\xb8\xfd\x1dL\x1b\
+aNj!\xdd\x98\x1e\xc4t\x04\xd3\x03\x00n5\x80\
+\x14\x95\x00\xdf\x8d`\xb7\xe2\xb6\x1e@\xa40\xad\xc4\xfd\
+S\x85}\x98\x93\x9aK#\x80\x5c\x8b\xe9\x5ca?\x8d\
+ib\xa6\xe1\xb9\xa2F\x04 \xc6\x89\xab1\x0d\xcf\xb4\
+t\x11\x03\xb0S\xcd\xcd\x96\xed\xbaVFJ\xcb\xb1m\
+\x01\xb1\x98\x88\x03@\x0c\xe6\xa4\x16\x92\xc7\x94S;y\
+i;\x8e\xac\x13\xc2u,\xcbmL&]<\xe7\xa0\
+f\x90\x0b\x00\xdc\x17p{;\xa6\xaa\x10@\x16\xae\xeb\
+\x9bi\xe1\xb1\xb6D\x22\xe6\xdav\x5c\xc6bq\xe98\
+q\xb7\xae.\x1ekl\x8c\xdb\xf1xB\x02\x08\x1b\xe6\
+\xd4@\xad\x84\xb0p\x80*\xd9\x96\xd0\xd9)\x1d)s\
+\xd0\xd3\x93\x96CC\x19\x91\xcf\xe7,\xc7\xc9\x8de\xb3\
+\xf9F\xa4H\x07]\x8e)\x0a\x8bX\x89$\xb1\xd2\x00\
+\xf1\xfa\x96\x96D^\xcaz\xb9x\xf1\xfclG\xc7m\
+\xd0\xd0\xf0\x0e)\xe5\x95\xe9T\xaa5;:\x9a\x00)\
+k_\x09\xbf\xa4kd\x85\xef#\xab\xfe^<\xdf\x8a\
+\xc7\xa1\xb1\xb55k77O\xd9\xabWw\xdb\x00\xfb\
+\x12\xbd\xbd\x0f\xe4\x7f\xf1\x8b\x81\xfa\xba\xbatzr2\
+[P\x16.\xddZ\xb1\x06\x90\x05\xf0/ \xf8\xf9\xe6\
+\xe6\x86x\x22\xd1\x94\xbb\xf6\xda\x0f\xda\x1d\x1d\x9f\xb1[\
+Z\x16\xbb\xb9\x1c\xb8SS\x90\xbdp\x01\xd2\xe7\xd0\x22\
+Iy\xd1\xe0\x8a\xda\x00^98\x95\x83n\xceW\xf9\
+\x9cUW\x07-\x9b6A|\xfe|\x8855\xa9c\
+7\x9d\x1e\xce\xf7\xf5\xfd]\xe2\xa7?\xfd\xdf\xb9d2\
+\x19K&\xa7\x97\x14H B\x1e\x13\x8b\x00\x9fT\x7f\
+\x5c655\xc4\xda\xdb\xe7\xbb7\xdd\xf47\xcd]]\
+\xef\xb3\x12\x09\xc8\xa7R\xe0LN\x82\x10\x02\xc4\xd0P\
+\xe5\xa0\xd7\xa6\xa5DK\xad\x00\xaf\xdd\xbb\x9bk\x84\x00\
+\xbb\xb1Q\x81oSjn\x86xs\xf3\x02g\xf9\xf2\
+/M\xc6\xe3\xdb\xe2\x0f?\xfcYGJ\xe8\xc3\xc6\xd9\
+\x01\x90\xa5{\x82H\x10\x0b\xb3\xfb\x83t\xbe\xa5\xa5N\
+\xc4b-\xf2\xado\xfdj\xeb\xce\x9d\x0a|'\x99\x84\
+\x98\x10\x9e\x1b$\xb8\x8eSS\x15/\xab\x0f0\xff\xcd\
+\x1a<[\xd6\x80\xd4BJ\xb0\x1a\x1a\x08x\x22\x00\x11\
+A\x11\x22\xbe`\x01B!\xdf7\xd4\xdf\x9fm:p\
+\xe0s\x88\x9d;89\xe9.\x02\xc8\xcb\x00\x7f \x16\
+f\xf7\xf1d<\xe58\x8d\xd6\xb6mw\xb4^y\xe5\
+\xfb\xe9!\x22\x1eW\x0ct\xf1\xe1n&\x03\xaeeA\
+l\xf5jX\xb8p!\xc4\x17/\x06\xc0\xe3*Hm\
+[tm\x9f_\xf3\x86\xe0&\x93J\xed\x03\x99\xe0T\
+\x8a\x9cB\x10\xd9\xac\xc2\x830\xaa_\xb5\xea\x03c\xe7\
+\xce=\xddt\xf6\xec\xfd\xf5\x08\xbe\xc7\x17\x90%\x11\x80\
+\xfa\xf4m\x08\xe5tSS\xa2\xae\xb5\xb5M\xae\x5c\xf9\
+\x19\xab\xbe\x1e\x1cT)b\xd92\x80\xae.\x10\xf8\xb0\
+&\xb4A\xa2\xb5\x15&{{!36\x06\xd3\xd9,\
+1\x10\xe6\xa4\xb6BX\xc4\x10\xe8\xe6\x8e\x0e\xa8\x9f7\
+\x0f\xb2##\x90A?L\x9e:\x05\x12\xc9\x11\xc7\xc6\
+(\xdb\xdb\xff,\xd6\xd3\xf3H\xb2\xa9)\x8d\xb8\xe5\xc6\
+\x02\x1c\xc2X\x10\xf3\x86\xe8\x9c\x94u\xa9\x85\x0b\xdf\xd3\
+\xd2\xd6\xb6\x84\x98\x96ok\x03\x81\xaa\x87\xfa\xfau\xd8\
+\xeaGN\x9e\x84\xd1'\x9f\x04\xe9\xba0'\xbf|\x19\
+C\xc0\x9b\xb1A.\xbd\xf6Z\xc8\x0c\x0f\xc3\x94m+\
+s\x1cC\xcd`\xcf\x9b\xd71\xd4\xde\xfe\xdb\xed\x03\x03\
+\xf7\x01@f\xed\x8c\x19\x00Q\x8a\x06\x18\xa3\xd6\xdf\xd8\
+h\xa3\x9dO\xe4[[o&\x80S\xd8\xba\x01S\x0c\
+\x1f\xd4\xb0f\x0d\xf4=\xfb,$\xcf\x9f\x879\xf9\xd5\
+\xcadO\x0f\xd8h\x0e\x16l\xd8\x00\xe3/\xbf\x0c\xd3\
+\xa8\xa5\xed\xe9i@\xbf\x0d\x9c\xfa\xfa\x9b\x11\xc3\xef\x10\
+\x96c\xa9\x94\xd5\x06\xe0Fj\x80/\x00\x88\xdd\x98\xb2\
+\xaek\xa3mI\xb8 \xb7`?\x1fr\xe4\xf8\x0d\x0d\
+);?\x8e\xc0\xd3\x83\xe7\xe4\xd2\x90\xf1\xd3\xa7\xa1e\
+\xc5\x0a\xb2\xfd0\xf6\xfc\xf3\x90Es\x9cH\xa7\xc1\x11\
+\xe2*\x07 AXN\x03\x88\xff\x8a\x89\x94|(\x01\
+\xfe\x92\xbc\x7fL\xf5\x96e\xb9R\xc6\x9ct\xa6u\xa2\
+\xfb\x08@C\xa3\xf2:\x1b\xd7\xaf\x87\xe1\xe3\xc7\x01\xe6\
+\xd4\xfe%#.b1~\xe6\x0c$\xd0\x1f8\xbfw\
+\xafr\x0e\x85\xe3\xc0\xc2\xa6\xa66\x89\x18\x12\x96\x08\xb4\
+ l?\x1fB\x00\xc3(\x00\xd1h\xdb\x16\xe4\xf3\xb1\
+\xa9\xfe\xbe\xba\xb1\xbe~\xd02\xff\xfd\xef\x07'\x9f\x87\
+9\xb9\xb4\x84\x9c\xf0f\xd4\x02\xd3\x14\x9f)\x98\xe6\xfa\
+e\xcb\xea\x00\x09\x80\xe6\xc0\x22L\x17\x95\xda\x0d\x14\x98\
+\xf2R\x0a\x89\xbb\xd3\x93I\xc50-\x0e\xc0\x9c\xd3w\
+\x09J\x1eU>\x8e\xc7\x80@\x7f@\xcbT\x12\xb1S\
+a\x03)D9\x91\xc0v\x001N7Ii\xe5\xd2\
+i\x7f\x1f4\x93\x99\xeb\xea]\x82\x22\x1d\x07t\x840\
+W\xc8\xcb\x12v3\xa6\x5c\x10\xa6e\x85\x82]Pw\
+\x88<\xaa{9\xebAs\xf0_rb\x1a\xa5\x10\xa0\
+\xf1!\xec\xdcDBp\xbc\xa2}\x00\x05>%\xaf\xfa\
+\x879\xf5\x7f\xe9J\x11\x5c\x1c\xcc#\x0c\x01\x13a:\
+\xbf\x14\x02\x9c\xc24\x8d\xa9\xb1@\x00\x1f\xf8\x05\x02\xcc\
+Q\xe0R\x13\xd30\xa5\xd1\x00j\xab|\x00L)\xc2\
+\xb6\x14\x02\xf4`ZP0\x01\x16\xfe/\x01j\xaa\x01\
+\x1cL\x8f\x9f=\x0b\xcf\xbe\xf6\x1aLb\x00\xe3\xf2%\
+K\xe0\xb77n\x84\xc5\xe8\xcc\xfc:I?\xda\xe3\x1f\
+vw\xc3\x99\x81\x01hE;\xbd\x03\xfb\xec7\xad\x5c\
+\x09vU\x09\xc0:\xfa\xb4o\xb9\x1a\xdbRM\xc0<\
+LycW\x8cTY\x03\xd03\xee{\xe9%\xe8\xc5\
+.LKK\x0b,\xc6q\x85!$\xc1?\xfd\xecg\
+\xf0\xc1\xed\xdba\x0d\xe6\xfd:\xc8q,\xdf\xfd/\xbc\
+\x00\xf5\x18F_\x82\x04w\x1c\x07\x0ea\xf0\xe6,\xc6\
+\xf0?\xbce\x0b\xc4\xaa\xe4\x03\x88\x82\x060\xe0\xab\x13\
+`\x170\x1d.\x95\x00Y\x00\xea\x01\x08\x04\xdab\xa3\
+SU\xd2\x009L\xf7\x1f;\x06yl\xe9\xef|\xe7\
+;\xe1\x8a+\xae\x80:\xdc\xef\xef\xef\x87\x17\xb0\xb2\x1e\
+:z\x14nCM\xb0\x1a[\xcb\x1bYNNN\xc2\
+\x0fO\x9c\x80-W]\x05\xdb\xb6m\x83\xc5\x18IM\
+\xa368\x81y\xcfc\xd4\xee~,\xe7\x1d8\xb8\x16\
+\x93\xf2b\x09\xa01\xf2m\x09C\x0b\xb1$L\xa1\x0c\
+\x02@\xbc\xe0<\x143\x01\xb2\x0a\xe0\x7f\x17\x072\x00\
+#\x8b\xef\xba\xf9f\xb8\x0a+\xa7\x09\xc7\xb4\x85\x10\x8a\
+\x08\xabq\xa0i\xdf\xbe}\xf0#\x8cm\xff\xd6\xda\xb5\
+\xb0\x0aG\xbf\xde\x88r\x1a\xe3\xf2\x8f\xbc\xfa*\x5c\xbb\
+c\x07\xec\xda\xb5\x0b\x96\xe1\xc0M,\x16#\xb0T9\
+\x97/_\x0e\x8f=\xf6\x18|\x17\x07\xd5\xde\xbbf\xcd\
+\xc5\x91\x80\x1c\xbe\xe2C\xc9\xc2\xc5\x94+wF\x90\xf0\
+ld\x15\x09\x90G\x90\x1fB{O\xc3\xc8\xb7\x16\xc0\
+o4\xad\x5ci\x81\xcb.\xbb\x0cn\xbd\xf5VUY\
+{_y\x05~\x03\x8fW&\x12\xf0F\x923h\xca\
+~\xf2\xfa\xeb\xb0\xfd\x9ak\x14\xf8\x1d8tk\xdb\xb6\
+1\xb3\x18\xb6\xdd\x8ef\x8e\xcaH$\xf8>\xfaA\xef\
+Z\xb9\x92HP\xb9\x0f D\xb1)v\xa2\x82I\xa1\
+\xc6{\x94U$\x00\x81\xff#\x1cD\xb2\x10\xfc]o\
+{\x1blA\xfbg\xc07B\x15E\xad\xe5\x96[n\
+Q\xfb\x8f\x1d>\x0c\xb7tv\xc2\x0a\xac\xac7\x82\x9c\
+\xcdd`?\x9a\xb2m\x08\xf0\xdb\xb0\x9cK\x97.5\
+\xe0\x1bQZo\xeb\xd6\xad@\xb2\x7f\xff~\xf8qo\
+/\xfc&\x96\xdbv\xdd\xaa\xf5\x02\x1c\xde\x9b\x8b&@\
+\xbd\x0e\xf9V\xd1\x04\x10\xf8{\xd1\x03\x16\xc8\xfc]7\
+\xdd\x04\x9b7o\xf6\x83\xcfI\xa0Z\xcd\xce\x9d;\xd5\
+\xfe~\xf4\xa0w\xa2\xfd\xec\xb4,\xb8\x94\xe5\x5c.\x07\
+\x87p\xc8|\xeb\xd5W\xc3\x8d7\xdeHN\x9f\x01\x9f\
+\x0b\xd5\x81\x22\x81\x85\xe5:x\xf0 \xec\xc5\x89\x1d\xef\
+X\xb4\xa8l\x12\x18\x87\x9d\x9b\x00A\x98\x96J\x80U\
+\x05'P1G\xcab&\xa0\x22\xf0\x1fC\x8f\xd7B\
+\xf0oz\xeb[a\xe3\xc6\x8d\x0c\xfc0\x12PE\xd2\
+\xfe!t\x98n\xc4YH\xcb\x84\x80KQ^w\x1c\
+\xf8\xf9\xf8\xb82k7\xdcp\x03\x03?\x8c\x04\xa4\x0d\
+\x89\x04\x87\x0e\x1d\x82}\xa3\xa3\xb0\x0b\xeb\xaa,\x12\xe8\
+k\x85\xf0;\x82\x88a\xbe\xa0\xcdW\x95J\x80\x13\x98\
+\x5c\xea>\x04\x98\x80r(@*\xe9 MR@\xe0\
+\xa8R\xba\xba\xba\x18\xf8\xa5\x90\xe0\xadH\x1c\xaa\xa0'\
+q(\xfaz\xec\x1e.\xbd\xc4\xc6#\xceK\x09O%\
+\x93p\xe5\x95W\xc2\xf5\xd7_\xcf\xc1\x8f&\x01iE\
+\xe5\x08?\x89\xb3\xac\x0e\xa5Rpc}=\x01[\x96\
+\x06\x90|\x22\xaa(`\x09\xe1\x04\xe0'\x84S\x85@\
+\xd0kX\x08\x0b\xc1\xbf\xfeMoR\xe07`_\xb8\
+\x5c!\xe0\xa9\xfbD\x04\xa2J}\x06\xbbP;\xa8O\
+\xed8\x97\x06\xf8\x98\x9eE\xbb\xbf\x09\x01|\x13\x96\x13\
+\xdf\x95\xde\x99@!@\xcb\x22\xc1\xa6M\x9b\xd4\xbdO\
+?\xfd4\xf4\xe0v96\x9ep\xe1\xb8H\xbf/g\
+\x11\x96e;\x81\xf9\x5cN;\x0f\x17\xa5\x01\x12\xe8\xc1\
+_\x8f\xdd\x9du\xeb\xd6U\x00\xbea6\x01\xbf\x08m\
+\xe3u\xd7]\xa7*\xe89\xecF^\x83N\xe1\xc2_\
+\xf1\xdc\x84\x0b\xf8./\x22\x117\xa0Y\xbb\xf6\xdak\
+\xe9\x1d\xbd\xe0WD\x82\x0d\x1b6\xa8\xf2\x8e\xe0\xb8\xbe\
+\xdb\xdd]\x1e\x01x\xdcF\xe41\xc5\xcb!\x00q\xae\
+\x0e\x13\xeb\x05T\x10\x08\xba\x12\x9d\xa1y\xed\xedP_\
+__\x09\xf8\x8c\x044\xfd|\xc7\x8e\x1dj\xffE$\
+\xc1V\x22A6\x0b\xbf\x0a\x19\xc0g\xbf\x8c\xdb\xf5]\
+]\xd4\xa5S\xef\xa6A\xd7[-\xe5\x92`=\xce\xbc\
+\x9aD2\x0d`\x0f\xa8$\xd1D\xe3f@\xe5N\x95\
+\xab\x01\x94\x13X\x85^@\x13\x82Ca^\x0a\x7f\xba\
+\xae[!\xf8&O\x93\x80*\x9cZ\xdaa\x9c\x0a\xb5\
+9\x91\x80\x05\xe94\xfc2e\x10\x9fy\x04\x09\xb0~\
+\xedZ\xe5\xc5/X\xb0\x80\xde\x87\xbd\xb3!\x82\xda/\
+\xd9\xe4\xb5bW\xd9\xe9\xef\xa7\xfa.+\x0e`\x86\x83\
+\x0d\x01\xdcrM@KaDPV!\x10\xd4\x8f\x11\
+\xbd\xc5\xd8B\xe2\xf18\x85@\x89\x04e\x82\xcfI@\
+\x15D$\xb8\x1a\xb5\x0b\xed\x1f\xc3 \xca\x06\x1a\xeeD\
+\xc7\xe9\x97!C\xa8\xcd\x8ec\xbab\xf5j\xe5\xbd\xb7\
+\xb7\xb73\xa0=Z\x80\x9d\x8b\x02_iK\xbc\xbe\x1f\
+c\x03\xb2\x02'\xd0l\x0d\x86-\xe5\x10 W\xe86\
+\x08)/:\x104\x85v\xec\xd4w\xbf\x0b]\x1f\xf8\
+\x00\x15L\x93\xa0b\xf0It\xa5R\xab\xa3.\x17U\
+\xdaI\xfc8u\x1d\xe6\xcfC\xa7\xa9\x962\x82~\xcc\
+)\x0ca\xafY\xb5Jy\xed\xf3\xe9\xe3\x18!\x02[\
+~\xb4&\xe0\xe0St\xf0\xd8\xfd\xf7\xc3TooE\
+\xdd@\x1ff\x84!>0W\xceX@\x0a\x93M\xa9\
+J\x81\xa0\x81\xe7\x9e\x03\x81\x85[\x7f\xc7\x1d\x8c\x04\x0c\
+\xfc2I@\xad\x8f\xba^d\x1a\xce`\xe8u5\xe6\
+\xb5NL@-d\x0c#w\xaf\xb6\xb5\xc1jtl\
+)\x96\xd1\x86\xfb\x1e\xf0\xc3\x81\xe7\xfb\x81\xe0\x9fx\xf0\
+A\x18x\xe6\x99\xca\x22\x81\xc5\xc7\x02 U\xae\x06\x88\
+\x11\xf8\xbc\x1bH\xc0U\xe6-?\xf5\x94Rk\xeb\x7f\
+\xf7w\x19\x09\xca\x04\x9fU0\xb5B\xdd}:\x87\xa1\
+\xe6\xcb\xf0|\x0b\x06d\xaa)\xe3\xe8\xc7\x9cC\xb3\xb3\
+j\xc5\x0a\xea\xceR,?\x08|\xb6\x0d!\x01\x07\xff\
+\x81\x07\xa0\xff\x17\xbf\xa8|>\x007\x01\x16\xe6\x95\xae\
+\x01\x9e\xf38\x81v\xb1\xd0\xe2E\xcc\x07\xe8\xc3\x82\xd1\
+\x8bv}\xf0\x83^\x12T\x02>\xabx\x02\x84\xbaO\
+T\x99\xbdX\x91\x9dx\xae\x09\xc7\xe1\xab!I\xfc\xed\
+^\x8c\xe7\xaf\xec\xec\xa4\xee,9h\xc1-\xdd/\x91\
+$ \xcd\xa5\xc1?\x8ej\xbf\x0f\x83@\x15\x89\x94^\
+\xf5\xcf\xc6\x03\x14\xb6\xa5j\x80D\x81In\x0df\x04\
+\x11\xbb\xa9\xf0\x1b>\xf4!M\x02\xea!P^\xe5~\
+\x81\xf1\x9c\x09 U\xa9\xfdX\xa1\x1d\xd4\xa5\x1a\x1d)\
+\x7fU$\xe9\x05\xbf\x0d\xfa\x11\xf8\xe58H\xb3v\xed\
+Z\x0d>{~\x08\xe0\x81\xe6\x80\xde\x99F?\x95\xcd\
+\xff\xcew\xa0\xff\xe7?\xbf\xb8\x09!\xbc\x17\xa00\x14\
+\x05Le9\x04\xc8b\xb2\x00D-f\x04\x11\xcb\xe9\
+\x857~\xf8\xc3\x8a\x04\xd3\xd3\xd3D\x02\x06ri\xe0\
+s\x12\xacY\xb3F\xed_@\x22,\x01\x09\x8d#\xc3\
+\x15}\xef=5\xbf\x1d\x06/[\x05\x9d\x18\x8a^\x85\
+N_sss1\x13\xa4\xf3J6\x01$\x1a|\xea\
+\x1d\x1d\xfb\xf6\xb7\xe1|(\xf8\x95G\x02\x89\x12n\x01\
+\xd3L9\x1f\x86\xc8|^\xb8\xb6-\xcc\x8fVwN\
+\xa0b;\x91\xe0#\x1fQ\x11\xc2T*E$\xa8\x10\
+|N\x82\xcb/\xbf\x5c\xed\x0f\xc6l\xd5\x04\xea\x87\x06\
+C\x14\x00\xe7\xc7t\xfbB\x18^\xb3\x16:\x16/\xa6\
+\xf9\x09\x14\xcb\xa0\xdfc\xcf/\xc7\x04\xe8\xfb\xb4\xcdO\
+$\x12p\xf4[\xdf\x82>\x9c\x02w\xb1\x22\x03\x06\x83\
+0W\x10\x96\xa2\xfc\x09!zF\x10'\x80\x84\xea\x88\
+*8\xfe\xde\xc6\x8f~\x94H@\x9a\x80\xe6\xb2W\x02\
+>S\x85\x04\x18\x01G\x95=\x1c\x8bC;H\xa8\x1f\
+\x1c(iE\xac\xd4\xc2E0r\xc5zX\x82\x91\xb8\
+\x15+VD\xb5\xfc\xb2m>E\xfa\x08\xfc\xeeo~\
+\x13\xfa\x9ex\x02\xb8T\xee\x03`\x81\xfd\xf8T2\x1f\
+\x80 p0\x05G\x02\xab'\xe7\x91\x04T9\x9b~\
+\xff\xf7iK\x9a@\xf7\x0e\xe8\xf8\xa2\xe2\x04\x04\x1c\x01\
+H$\x18\xb5I\x13\x1c\x81\xc4@\x1f\x84Iz\xe1\x12\
+\x98\xdc\xb0\x19\x96,\x5cH\x93R\xf4T\xb5\xa0\xf7)\
+\xcb\xfb\xa7\xf7\xa0\xdfS\xe0\xdfw\x1f\x9c/\x1b\xfc\xe8\
+H\xa0\xe0>\x80\xc20_\x0e\x01\xd2\xd4\x0d,t!\
+X$PJ\x95\xaa)T\x11\xf4\x9b\x9b\xff\xe0\x0f\xe8\
+\xd0k\x0e*\xf6\x0bH4\x09h\xee\x1d\xb5\xbcQ4\
+\x07\xf3\x0eK\x88\xf7\x9f/\xba\x1cYfI\x07$7\
+]\x05\x8b\x10|\x9c\xc5C-\x95\xa9\xf6\x88\xae_\x10\
+)\xe8\xf9\x06\xfco|\x03zq\xdc\xbf\xaa\xe2q\x02\
+gafY\x1a\xd3r4\x805k,\x80\xb6\xc2\xb6\
+k\xf6u\xd0y\xaa\x10\x22\xc1\xc7>\x06$SSS\
+D\x82\xca\x9dB#d^hN\x81j\x81\xe3Wm\
+\x87\x16*x\x7f\x0fx%\xbbd\x19\xa4\xf0\xdc\xc2\xf6\
+v\x1a\xce\xa5{\x82Z=\x039*\x8f\xbc|\x02\x9f\
+\x9c\xbe#\xf7\xde\x0b\xbd\x07\x0f\xd6\xe4\x13qEjK\
+\x14\x9d\x14J\x98\xc6\xca]&\xae\x90\xfc\x5c\x92\xb2f\
+\x9f\x87Q\xc5\xd0o_\xf9\x89O\x00I2\x99\xac\x0a\
+\x09\x08\xf8\x86\xc2\x9c|\xda\x9f\xd8\xbe\x03\x1a\x9f\x93\x10\
+\xeb{\x1dHr\x1d\xcb!\xbd\xed:hok\xa31\
+\x06r\xd0\x02\xc2\xb5\xac\xe5G\x9a\x00z\x1ei!\xfa\
+\xcd\xc3\xf7\xdcS\x0b\xf0\x8d\x0f\x00\x82\x22\xae\xcc\x04@\
+\xb9>@ca\xea\xf6\xec\xf9\x00\xc2\x125\xd3\x00F\
+\x13`\x05I$\xc1\x9d\xbb\xa9\xd5h\x12T%XD\
+ \xe8\xf1\xfa\xe4\x8e\x1b\xc0z\x86L\x0f\x96u\xc7[\
+\xa0\xad\xb5\x95\xc2\xca\x1a\xfc0{\x1f@\x04v\x1d\xa9\
+}rF\x0b\xe0\xdf\x0d\xbd\x07\x0e\x18\xac\xaa\xaf\x02H\
+e\xb38\x80\xd6\xe2\x84\xa9[\xb2\x09\xf0;\x10&\xc6\
+,,pi\xaf\x16\x04\x10f\xd3\x87$\xa0\xedf$\
+\x81\xd6\x04\xd8;\xa8d\xf8\x98\x81Ej\x98\x06\x91\x08\
+\x9c\xa9\xeb\xdf\xa6\xce\xb5\x22H\x14\xd7\xa7s\xfa\xfa\x08\
+\x89\xd4\x02\xa4\xf6\x09|\xd2<G\xee\xd9\x03\xe7\x0f\xec\
+W\x95)M\xc0\xbe\xaa\x22u/@Xlv\xb7\xd0\
+f\xbdd\x02\x18\xb5a\xf9\xd8dY\x98I\x0c\xab\xbe\
+({\xe3!A\xff\x13H\x02\xcc\xdc\xf4\x89\xbb\xa8p\
+\x86\x04\x95;\x85\xb4\xafI@\x80\xeb~=\xc5\x0d\xc8\
+9+e\xbc\xbe\xa4p/\x05w\x14\xf8\xd8\xf2\xbb\x11\
+\xfc\xbe\x83\x08\xbeg)\xdc*s\xc0\x94\x8d~\xdd\xe2\
+\x91@(\xe0\x99\xa8 \x0e\xa0Dz\x08 \xabl\x02\
+\x84N\x9e\x07\x8aBm\xf5\x1f:\x00\x82\x82Ew\xfe\
+!\x90LNN\x96J\x82\xa8<\x02\x9cH\xa0[k\
+\x98\xe9\x882\x03\xcc\xe1#B5b\xcb\xef\xfe\xfa\xff\
+\x82~l\xf9\xde\x89\x15R\xfa\x9d,\xb7z\x0c\xf08\
+\x81\x5c\xb1\xcar|\x00\x07\x93\xadv\x1c\xcb7\xb0\xa0\
+|\x00\xb7j\x04\x10^\x06H\x93g\x9a\x0a\x91\x80*\
+\x10\x83E\xbb?\x09\x9a\x04\xb9\x5c\xae\x1c\xf0\xc3\xc0\x8a\
+\xea\xda\xb2\xfc \x22h\x9bO\xa4\x22\xf0\x8f\xde\xf3?\
+\x14\xf8$B\xdb}\x93\xfcj\xa0\x0a\xda`\xe9\x8e\x1d\
+Eq\x91\x88\xa1\x82\xb2\x1c\x02d0\xd5S\xf9\x8a\xf6\
+\x02p{\x91\xc1 1{G\xf2}\x01&\x0d<\xb1\
+_\x9d\xd0$\x98\x98\x98 MPi\xb0(\x1a\x5c\x1e\
+O\x08#\x85\x0f\xfc\x06\x02\xff\xee\x7f\x86\x0b\x07\x1f\x07\
+\x0d\xbc\xb6\xfd\xc2\x0f\xbe9W!\x09h\x95\xd0%\xf8\
+\xe9\xd9\xe2\xed\xd8\xb5]\xb9\x12\x06\xf0c\xd3\xe1\xeen\
+6%\x8c\x12a\xdaP\x0a\x01\x86\x0b\x01\x03\xcbt!\
+@\x9a\x82V\xcd\x04\x08\x13k\xe6\xea\xdf\xf7\xd0\x99\xfd\
+\xc1'\x1e\x87c\xb8\xd3u\xe7\xa7\xc8h\xc3\xf8\xf8\xb8\
+&A\xa5&!\x8a\x08\xa1\xa3z\xfa\xbc\xd6$4'\
+\x81\x02G\xc7\xef\xfe'\x188\xb8\x8f\xa9}U\x8c`\
+\x0dP\xb2-\xa0%b\x17\xe1,\xa8%\x08z\x1b\x8e\
+Nf\xb0\x1e\xce>\xfc0\x9cz\xe8!\x98\xec9\x07\
+R\xba\x8c\x00\xda\x09 l#\x090N\xea\xc4L\x0a\
+\xf5\x93\xd6\xb6*\x0e\x07\xfb\xb4\xbd\xd0\x15\xe2qZ\xa5\
+\x87\x04\xbeD\xa25\xc1>\xaa)$\xc1\xbf\x06iH\
+p1NaI$\x08\x13r\xf84\xf8'\xef\xfe\xef\
+\x04\xbeQf\xd2\xef\xe4rm0\x8b nq\xe7\xb0\
+\x19\xa3\x92\xed\x1b7\xaa\xd5@[q\x90\xcb\xc11\x93\
+\xd7\xb1K\xf9\xf4W\xbe\x02=8o\xd0\xc9f\x89\x94\
+\xa8\x05:qk\xb1U\xdf\x09\xcbx\xa9\xeb\x03Lb\
+ZU\x98\x14j\x151\x01\x12.2\x10\xa4\xc0\xd7\xd4\
+d\xc0\x1b\x8f\xc5\xf2\x94@\x18]6\x84$8\x8e\x07\
+\xeb\xee\xfc7\x80B$ \x9f\xa0\x1a$\x88R\xf3\xec\
+\x1c\x82O\xb1\x03\x8aW \xf8\xff\x88\xe0\xff\xd4\x00m\
+\xd4\xbf\x12\x03\xbe\x1fx\x90\x5c\x13$0p\xd4\x8a\xc3\
+\xcf\xf3\xb0\x85/\xe8\xea\x82:$X\xb2\xb7\x17z\x10\
+\xf4\xd7\xbf\xf8E\xe8\x7f\xea)\x02\x9d\xd7+5P\xab\
+\xe8\xac`h lK!\xc0\x94\xf1\xcd\x84\x89\x03\x98\
+@P\x85\x91@\xfd\xa3\xfe\x0c\xc9}\x00\xf3pn&\
+4\x11\x86\x0eaE\xe3\xce\x15w\xfe\xb1\x02C\x93\x00\
+\xa5\x9af\x80\xf2B[>\xc5\x13\x9aT\xcb\xff\x07\x18\
+:\xf0\x98&v \xe0\x9a\x1c\xca\xbcz\xce7.Z\
+\x0c\xcd8\xef\xa0y\xf9Je\xcb\xeb\x90T\xf9\xa9\x14\
+\x0c\xe0\xea)\xaf\xec\xd9\x03=\x07\x0f\xd2\xc2\xd0%M\
+'wY$PW\xa3\xc16\xda\x09,\xd4?\x9b\x10\
+b\x19\x13P\xbe\xcd\xe7N\xa0\x06\xd7\xa8\x1a\xa6\x1d\xfc\
+d\x11\x052\x00\x91\xe01*\x1e\x92\xe0\xdf\x01\xc9\xd8\
+\xd8\x98!\x01\x97\xaa:\x85\xd4\x85\xd4\xe0\x9f\xbe\xe7\x1f\
+`\xf8\xe0O\xfc:7\xc0\xd6+\xf0\xd1_h\xec\xe8\
+\x84\xc6\xce\x15\xd0\xd4\xb9\x12\x9ah\xa0\xaa\xa1\x11\x01\x9f\
+\x82!\x5c\x0b\xe1\xd87\xef\x83\x0b\xcf=\x0fCG\xba\
+\xc1\xc9\xe5\xcbjb\x82\xf0\xb1<\x9a\xca\xd3\x962\xa5\
+\xce\x09\x5c\xab\xb16A\x04\x1f\x8a\x13'O\xc0\xe4D\
+\x12\x12-\xad\xf4gJ\xe8\xa1\xd1\xcc\xd4\xff0\x80\xf5\
+\x83\xf4\x89Y*\xdf\x00\x8e\xfb\x9a\xce&\x7f\x04Ip\
+\x0a$\xac\xbd\xf3O@\x93 \x9b\xcdF\x9b\x82\xca\xcd\
+\x80i\xf9MM\x08\xfe\x7f\xc3\x96\xff\xa8GMj\xa0\
+\xb5\xc3\xd6\x04\x89\xb6v\x88\xcf\x9b\x0f\x89\xf6\x85\xd0\xb0\
+t\x194,\xe9P\xc5N\x9e{\x0dF\xbb_\x863\
+\xdf{\x10F\x8f\x1d\x85\xb1\xd3\xa7\x11pG\xdd\xebJ\
+]\xd6\xb2\xc2\xc6\x84\x05%\x16\x08\xb24\xb6\xa5\xc7\x01\
+\x8c\xc8Y\x04\x98\x1e\x1c\x84\xd1\xd7z\xe8A\x8a\xcd\x89\
+\xd6\x19\x22\xc4\x1a\x1aT\x8a75\xd19?\xf8b\x96\
+j\xd4\xa0[\xb3T=\x8b\x0e\xfa#R\x8a\xdc\xd2\x1f\
+\xe4\x1e=\xf4\x138\x8d\x99\xab?\xf1'\xaa\x1b6<\
+<\x5c\xc9\xcc\xa2H\xb3\xa0\xbd}\x0d\xfe\xab\xf7|\x0d\
+F\x0e>\x0a\x16\x16&\x86\xf3\x06c\xd8 b\x04\xf4\
+\xbcv\x88\xb5\xb6A\xbc\x0d\xc3\xcdu\xf5\x90\x1d\x1b\x81\
+\x14\x0e?\xa7\xce\xbf\x0eC\xcf<\x09\x13gN\xc1\xf8\
+\xa9\x93\x90\x9bN\x83\x06\xdbU\xb6\x96\x90*\xecke\
+\x8b\xfb\xaez\x8f\x92\x09\xc0\xc6\x02X\x07\xa34\x02\x98\
+\x86f\x88`\x9c@\x17U\xad6\x039T]V\x22\
+A\xeb\xd4\x12!\xd4\x90q\x1cU\xa3M3]\xeb\xeb\
+ \x86\xf9v]\x0cbxM\xac.A\x8e\x8ai\xc9\
+\x8a\x04\x5c\xbd\xebd\xc07&\x82i\x05 \x12<\x0a\
+\xa7\x9d<t|\xe4\xd3d\x07\xd9\xb8A%\x91B.\
+fR\xc7\xe0\xc1\xbd`\xe5s\xb0\xf4\xd6\xf7@\xbc\xa5\
+\x0d\xa4\xeb@z\xf0\x02\xa4\x07\xfaa\xe2\xe8K\x0a\xf0\
+\xe9\xf3\xbd\x90\xea\xeb\x85\x5c*\x05\xb2\x00\xb2\xda\x16\x12\
+\x91Y\x17\x1f\xd4\xbe.\x93\xc7G\xf08\xcc\xa5p\x80\
+\xea\xd64>\xe3z\xa8T\xee\x22Q\xf5\x1a\x13\x1f\x01\
+\x04=\x84\xcdDq\xd2i\x95\xb4\xa4\xf1%l\x04<\
+^\x8f\xa0c\x8a\xd7\xd5\x11\x190\x0f5FC\x03n\
+\x91\x144W\x8f\x92%\x0al\x93\xba\x99c\x1em\x0a\
+6\xadP(\xa3%x\x22y\xf5\xf4)\x189\xfc\x0a\
+,\x5cd>\xcd\x8eP\xefl\x1be\x02\xc8\xbc\x9c\xc5\
+\xcf\xd0\xd2\xdd\xaf\x80\xf5\xdc\x01\xc8\x10\xe8\x17\xfa 3\
+<\x00n\xde-\xc4Hf\xc0\x93>\xa0M\xeb\xd6\xb5\
+\xe7j\xa0=\xa0\x83\x97\x0cZ;\x16\xf2\xa4,\x85\x00\
+|J\x98\xe6P\xa6\xc2?\x1b\x07l0\xc8\xb6K\x9a\
+\x9e\xe4f\xd3\xe8\x94!1\x92\x009KOW\xa3$\
+f\x88\x81\xa4 \x22\xc4(\xd1q\xa2@\x12\xcc\x07\xcc\
+\x13q\xd2&D\x06L\xb1\x19scS\x9eecR\
+\xf9\xb4U\xfd\xde\x13N\x0c\x1e\x1eq\xe0\x86\xee\xa3\xb8\
+8C\x1b\xfb\x12\xb9r\x7f\x80\x9f\x1b\x18\x18\x80G_\
+\x1b\x82\xf5'O\xc3\x8a\xf3'\x11,\xa3\xbe\x15\xe8T\
+F\x0d\xbekZ9#\x81O\xdd\x9b}a\xd1}\xfe\
+\x9e\x91k\xe2&\x11&\x80O\x09\xd3Z\xa0\xf2\xbf\x1c\
+\xea\xd7\x00\x94J\x8f\xf2\xd1V\x83\xaf\x13H$G\x06\
+\xf2\xb9\x8c\xaa,\x07\xf3\xb2\x9a\x1c\x82\x92!\x8b(v\
+L\xe0\xdbJ{\xa8\xd4\xdb\xd9\x05{\xdb\xd7\xc1e\xab\
+\x96\xc1\xca\x95+\xc9N3`\xab\xe5\x14\xea\x91\xc3\xf5\
+]\x1b\xe0\xe9\xb1qU\xc6\xe5}'u%k\xb0\x8d\
+\xf3_8\x90\xae\xb6\xc5Av\xde\xdf\xe5\x05\xe1\xd1\x00\
+\xa5\x9b\x82B/ \xc0\x7f\xab\x94\x00\xd2\xbb\x15V\xa4\
+\xd7/\xc0\x03\xb6!\x02O\xe6\x9c\xb9\xd6\x80\xed\xcf\xb7\
+\xccy\x22\x90p\xf3\x00\xb9<\xbc\xbex=\xfcta\
+\x17\x5c\xbe\xearZB\xc6\x10\x80\x83Y\x09\xf8\x81\xd3\
+\xcb\xe8\xa3P\xca\x7f\xa6\xa0\x85\x96\x9f?\x81\xc7\x1al\
+M\x04\xcfV\xb7j\x9f\xca\xf7\x01o\xda\x15\x11\xc4\x00\
+\xef#\x82\x14\xe1\xa8\x8aB\x85\xc9*\x13\xc0H\xa1\xc0\
+!\xc2\xe2\xb9\x82'C\x10\x03\xac\xaf\xb5s\xf0\xb96\
+\xe8]\xb6\x1e\xf6_\xb6\x03\xc1_E\xe0\xd3\x14p\x05\
+~I\x12=\x88\x14\xda\x15\xd4$ _\xe3\x19a)\
+0;\x91\x04\xbeV\x8f\x09\xbcdP@\x878}\xfe\
+\x16\xcfM\x01]\xa4\xfd\x8b\xd0n\xa0`\xe7+%\x00\
+'\x01!`\x8b\xa8\xd6o\xd4\xb9>\xd6\xc9\xa7\x0d\xb8\
+\x99\x10^R0\xf0\x8df8\x8fj\xff\xe0\xe5\xd7\xc1\
+*\x04\xfd-oy\x8b\x06\x9f\xc0\x8a\x021\x0a\xf4\x92\
+\x9dG\x8a\xfd\xd3\x17\xc2$\xcf\x14^\xba\xb3\xe7\xb8\x01\
+\xdc\xa7\xe2\x0d\xa0f\xdf\xeb\xf4\x05\xb4x\x03<\x0b\x8a\
+q\xd1\xa1`\xabv&@h\x14\x22\xc7y=\xac\x15\
+\xde\xe3\x00\xff\x00\x8a\x98\x81\x00\xf0\xfb\x96w\xc1\xa1\xd5\
+o&\xd0\xd5\xa2QZ\xed3\x09V\xff\x17\xed\x0f\x08\
+!|\x8b:\xd1\xf1s\x85\xd9R\xcbz\x8e\x15#\x81\
+q\xe6\xfc\xf1\x0d\xbf)\xf4\x86\xc5\x85\x0f\x80h-\xa0\
+\xf1\x1154\x01Rw\xcdJm\xfd,\x8f\x1ds\x0d\
+`\xb4\x03\x07\x7f\xc5\x06xb\xcd\x0d\x1a|\xfa\xe8\xc3\
+\xd8\xfc\xf2\xa5\xe2o\x0d\xf4\xb16\x07\x9a\x04\xcf+\x12\
+\x00t\xf8I`\xc0\xf5\xd9yN\x00i\xae1-=\
+L\x0bpbb\xaa\xad\x09\xa0Tn\xeb7y\x22B\
+#P\x0a\xf0\x0f\xfaWl\x84'\xd7\xa1\xad\xc7\x16\xff\
+\xe67\xbfY\x83\xcf\x00\xaaP\xcat\x0a\x0d\x11\xf4l\
+c2\x07\xe4\x13\xbcP\x88Y,}\x9dH`\x1a\x86\
+\x0b\xdc\xb37Q\xd2P\xe0\xa3\xb5\x80\x19\x0d\xc4$\xaa\
+n\x02\xcc\xf3M \xa8\xe2\xd6o\x12\xbfF'1\xcb\
+\x14\x5cX\xb9\x11\x9e\xeaz\x1b\x81O\xcb\xc4i\xf0\xc3\
+\xa6f\xd7\x8a\x10\x0c|\xaf&\xa0\xf5\x09h\xffE|\
+\xe9\xad\xb8]z\xee(@\x80\x83G\xc7\x92\x01\x1d\x05\
+<\xd7\x02<\x0eP\xd3^\x80UZ/@\x04k\x04\
+\xde-\xe4\xf7\x99s\x04\xfe&xz\xe3N\xb2\xf5\xb4\
+\x08c\x90\xda\xaf\x84\x08z%\xcf\xc0\xd0q4\x09\xf8\
+\xc7'z\x91\x8a\x97\xed\x19\x9f`\xf1\xb9n\x05\xbc\x15\
+\x06t\xb4\xdd7y\xfe\x095\xdc\x07\xa8u/@=\
+\xc4\xcf\x01c\xc3\x81\xf5\xed\x99F`=\x00\x11\xac!\
+\x06Wm\x86\xe76\xef\x82\x95+V\xd2\xda\x80\x04\xbe\
+\x06MK\xc5$\xa0Q=\xfa\x0a\x88\xae\x1d\x1c\x1c\xf4\
+\x8e\x22\x86\x80\x1f=c\x98\x1cCZB\x86H\xf0\x8a\
+m\xab\xf2-|\xad\x1bd@\xdf\xde7\xe8\x22B\xc8\
+\xa0\xcf{\xef\x9d}\xdaV\xf8\x98\xdb\xaaj\x02\x8c\xae\
+\x0f\x9a\xd6mR\xa860\x89\xf7\x08\xcc\xf1\xd0\xe5\x9b\
+\xe1\xf9-o\x87\x15\xcbW\x10\xf8\xf4\x81'\xeb\xeaE\
+\x11\xc1\x80\xc5\xc1\xa7/\x84Zp\x14S\x16\xae\xbdp\
+\xe1\x02\x91 \xda\x0c\x18\x92\x153\x05l\xb5\xcf\x97-\
+\x1b6\x82\x80\x85g\x8fxL\x01w\x00\x95\x96(\xe6\
+\x04\xd2\xc6O\x1a#\xb3FG\xad\x82-\x95U&\x80\
+\xdf\xc6\x84v\x03MR\x9b\x08\xff\xc0\x10\xc6O\x84\xa1\
+\xd5W\xc2K[o\xc5\x96\xbfB-\xbf\xda\xd9\xd9I\
+\x95Y\x0a\xc0%\xb7|\x02\x7f\xf0ow\x83\xeb\xe4a\
+\xf1\xe7\xee\x01\x12\x22A&\x93)\xc5/`\xa0\x17\x09\
+\x16\x19M\x10\xb3U\x09\x17\xbcz\xd8O\xf8R\xec\xfc\
+l\xd2\x801'R\xfb\x11&\x0eP\x0b\x13\xc0#M\
+>\xf1\xab\x7f\x03\xae\xc9\x8f\xe8\x1d\xf8\xaf\x1dY\xbd\x05\
+\x0eo\x7f'\x81O\xab\x81\x12\xf8\xe1-\xdf\x80\x10y\
+\x9e~\x87\xc0o\xc6\xf1\xfc\xa1\xff\xb2\x1b\xd2\x8f\xcc\x00\
+?Dj\xfa\xcf\xd4>\xfd\xcd\x22\xa5\x09\xa2G\x07\x03\
+\xbba\x8c\x04D\xdeW,[\xe5\xcd?\xf3\x8a\x0fP\
+\xab\x08\xf0\xd276\x10\xd0\xdb\xf2\x10B\xb2\xe7WG\
+\x03pM \x8c\x0f\xe0\xc3S\x14R\xb4F\xe0>\x82\
+'ot\xed\x16\xe8\xde\xf1\xafH\xed\x13\xf8\xfao\xec\
+D}\x9f\x1ft\xde\xb7\xafg\xf2\x10\xf8\xc3\x7f\xb7\x1b\
+2{\xef\x01\xad\xcc\xb2\x8f\xdd\x07\xc3\x02`\xc1g\x0d\
+\x09P\x13\x04=\x8b\x01\xadS\x10\x09h\xdd_\x22\xc1\
+\xe1\x98\xad\x1c\xc3y\xa7^\x06\xe1\x03\x9e5\x08?I\
+|f $\x12h\xd5\xc6\x070[\x0b\x13\xef\x06\xf2\
+\xd6=[\xfd\xcfV\xf5E\xfc\x83\xb1\xb5W\xc1\xb1\xeb\
+\xdeE\xb6\x9e\xfe\xba\x16\x03?p5N~>t\x02\
+\xe7\x08\x82\x9f}T\x83o$\xf7\xd3\xfb`D\x00\xb4\
+\xff\xa9\x8f\x04L\xcd\xe3~X\xf2M\x1c\xa1\xad&\x01\
+\xad^FyG\x90\x08+\x05\x92\xe0\xe4K`\xcdn\
+\xf1\x8c\x10\xbe\x06\xe4'\x04\x80\x8fD\xea\xbcmB\xcb\
+Jj1\x18\x14\xe9\x02h\xc0!J\xfd\x9b\xeb'\xd6\
+m\x85Soy7\xac\xe8\x5cN\xeb\xff\x12\xf8\xd4b\
+\x18\x98\x95h\x01=u\x9b\xc0\x1f\xfd\xdan\xc8\xfdD\
+\x83\xcf%\x8f$\x18\xc5\xed\xfcp\x120\x90\xa3\xb4\x01\
+%r\x0c5\x09\xba\xed\x98\xd2\x04\xcd\xc7_\xf4:\xc3\
+\xc6\x114\x00\x07\xf7\xf9\x85\xf9z\xd7\xf1\xcf\x09\xac\x9d\
+\x09P\x05\xb3-\xf3>\x82c+|\x19A\x041\xa7\
+'\xd7]\x0dgn\xbc\x8dl=\x81\xaf\xff\xbaV\xb1\
+\x96]\xa6\x160\x1fm\x10\xf8c_+\xb4|\xafY\
+bk\xeb#\x09\xf6\xdd\x07cx\xa2\xed3E\x1d\xc3\
+b\xe0j2Dh\x03C\x02\xd2l\xa4\x09:\xc0\x82\
+\xc6\xe3\xcfs\x80\x85\x1f`\xa9\xb2\x82\x9dEa\xba\xe3\
+t\xae\x96&@\x18V\x82o\xec\x9e\x89)H0A\
+\x92]W\xc3\xb9]\xef\xc7E\x18;i\xc9uZ\x97\
+G\x83_\xb1\xad\xd7\xe7\xcc\xe7Z\x0d\x08\xfe]\xa0\xd5\
+\xbee*\xcbG\x00u\xabE\xfb\x05\x12\x80\x8f\x04\xfa\
+\xe3\x13\x06.\x07\x9f\x93\x02\xc5\xab\x09\xe8o\x06\x164\
+\x81\x0d\x8b\x01\xa0\xe1\xe8\xf3^\x80\xcdVrs*\x03\
+\xd1\x15:\x12\xa8M@M\xbb\x81\x06Ls\x10\x16\x1f\
+`\x92\xea\xda\x06=\xb7\xdcN\xea\x9e\xc0g\x7fc'\
+\xa0UG\x02O\xa2?\xd4\xd4\xe0\xe7\x1e\xbd\xdb7\xc9\
+\x04f\xbf\x97\xd4\x0b``\x92\x9c\x04B\x08M\x02\x03\
+fx\x0a\xd5\x14\xda' \x92vcj\xa7\xf1\x84\xc3\
+\xcf\x85\x03\xac\xdf\xdbx\xffL\x84\x1e\xaeW\xe5\xa8\xb2\
+\x090\xf3\x01`\xd6\xe39\x09D\x04A\xa67n\x87\
+\xfe[\xef\x80\xcee\x9d\xb4\xde>\x81o\xbaz\xd1\xea\
+=\x8c\x14\xf4;\x85\xaft\xeb5\xf8\x1axC\x80\xd9\
+\xa3s\x1a|\xda\x9aO\xb6\x98&\xc0\x88!'\x01\x07\
+8\xd2,h\x12\xd0\xd2\xb3\xb4\x7f\xcc\xfe\x84z\x99\xc4\
+\xe1gA\xfb\x01\xb2h\xd7/\xa0~-\xefX\x00\xd4\
+(\x10$0\x15\x0a\x15 \xa6\xa2Cz\x09\x99\xcd\xdb\
+a\xe07>\x00\xcb:\x0d\xf8\x1e\x9b\x1f\x01v\xb4\xcd\
+\xd7\x8b3\x8c\xfe=\xd9|j\xf9lv\x91&\x80\x11\
+/\xf8\xe0\x9d\xae\xcd5\xc1\xd0\xd0\x10\x91\x80\x01\xca\xc9\
+\x10M\x10M\x02*\x7f\xb7u'4K,\xc3+\xcf\
+\xfaL\xbd4\xe0\x078\xdd\xe6\x9ce\xcfL\x92\x95\xb5\
+\xeb\x05\xa8\xc4\xc5o\xdf\x03%\xbb\xe9\x1a\x18\xf9\xad\x0f\
+\xc1\xb2\x8ee\xb4\xc6?-\xc7F-\xb6\xdcV^t\
+_\xaf\xc9\xa3\xc1\xcf \xf8\xbeh#\x9f~\xe6\x11C\
+\x00W\xf2\x99;\xd4;\x18\x93H\x82?U$\xa0\x8f\
+O\xf4\x00R\x04\xc8\xfc\x18\x85\x99\x03\xfa[\xc9t|\
+\xcc\xbaKU\xa0\xfd\xd23|\xb9V.\xfc\xbc%\xaa\
+\xee\x04\xfa\xbf\xdd\x0c\x09\x05\x0b\xff\x01\x93\xfc\xe6ka\
+\xec\xdd\x1fFG\xaf\x83\xe6\xd3\x19\x9b\x1f\x0dn\xc89\
+\xa3\xf6\xf5\x9a<#\x7f\x7f\x17d\x1e\xf1\xb5|\xd3-\
+\xf5k\x02#\xa6\xf5\xb3\xe1[\xdd\xdb\xc9\xee\x9b\xe9\x22\
+\xb6\x7f\xf6\xeb@2::J$\xf0i\x01\xae\x0d\xa2\
+\xc9\xa1'\x9a\xd2\xda\xc6t|\xdc\xfaCHH\xbc\xee\
+\xa5\xa7Y\xc4\x8f\x89\xd0\xe7\xd9h`\x0dz\x01\x9a\xb9\
+E\xf0\x17\x11\x19r\xeb\x0e\x98x\xcf\xef\x91\x97O\x13\
+'\x0c\xf8\xd1}\xfb(\x82\x98\xa5\xd8\xea\xea0\xc2\x87\
+\xe0\xef\xdd\xc3\xcd\x10\x9fuD\xc9w\x91\x99\xcd\xeb\x8f\
+\xc5KO\xf4-C\x11C\x10\x141\xa4g\xd3\xb7\x88\
+\x9a\x04\xd1\x80\xf3}6\xdb\x98V$W$\xf8\xd0\x1f\
+A\x9c2_|:\xb4\x8e\xfd(\xebo%\xa0\xc6&\
+\xc0\x16!\x04\xe0\x99\x895\xeb!\xfd\xe1?\x82\xa5\xad\
+\xea\x0f:\x90\xda\x0f\x1a\xd2\x0do\xf1|\xdf\xb7\x08\xe3\
+\xd0\xdfRl\x1f\xc1\xb7\xc2\xa2\x92|\xd2\xa9\xd0\xaa\xbf\
+\xe8$\x0d\x1e}K?\xfa\x0d\x18\xc2\xedBC\x02\xbd\
+\xb61\x03:,i\x09\x22\xc1\xa9\x8f~\x1a\xec\xb1\xbf\
+\x02\xf7\xccIS?\xa1\x04\x90T\x9e\xb2\xc7\x02\xacR\
+M\x80\xf12M\x14%L\xf4\xf9\xe5\x9f\xfc\x0c,]\
+\xd6I-\xdf\x80\x1f.a\xb1u\x9f\xcd\xd7\xe0\xd3\xa8\
+^\xea\xc7{\x82m$\x14\xd5\x08|~\xa2aKh\
+\xa4s\x1aI0\xf8\xd5\x8f\x91\xbfA\xb1\x06r>\x09\
+t\x9d\x18\xd8\xc5\xf2\x83\x84\xcaCs\x1e\xd7um\x80\
+\xf6\x8f}\xaa\xbc\x857tAj\xa1\x01\xa4~\x88-\
+\xcaz\xa9U;\xdf\x0eY\x10\xa4\xa6K\x05?\xb2\xf5\
+\xeb%\xd7i\xbd\xbf\x81\xbfQ\xe0\x13\x90\xbfTI!\
+\x09\x06$\xc0\xe2\x7f\xaf4\x81Z\xbd\xccq\x9cR#\
+\x84$\xa1$\xa0\x19PK\xda\xe6\xc1\xc0\x7f\xfc\xb7P\
+\xa2\x18\xdf\xa6\x96&@x\xbfQ\x12\xd176#H\
+VK+\x9bvU:\x09\xf8*\x18z\xbd\xfd\xfe\xaf\
+\xee\x86\xa9\x1f\xed\x01;\x08|\xe9\xe9\xdf\xcf\xcew1\
+Y\xa6\xdf\xefB\xc4*\x9e\xfa\x94\xe7|r\xef7\xc0\
+\x95\x02\x96\xfe\xf9\xddz\x81k2\x07\xd1\xaa?Z\x94\
+vkp\x1d(]\x8c\x13\xa8\xa4&&\x80\x0aac\
+b\xe7\x83o\xea\xfd\xc1\xbf\x90mSj\xb2\x0ca\x95\
+\xa6\xc3\xbb\x1a\xfc\xbe\xaf\xec\x86\x89\x1f\xec\xd1x1\x80\
+\x0d\xa2\xe6\xbcK@{\xbe\xdeu\x5c\xef1%~\xbf\
+d?\xe7\x7f`\xf2\x91{\xe1\xfc\x97?\x8e\xad\xb6\x8e\
+\xb4\x1c\xbdc\x90\x16(k\xd2\x0ai\x81\xbe\x87\x1fb\
+U\x1aV\xe9\x0a\x9bj\x13\x80\x87\x82\x8bx\xf9!7\
+\xbd\xf8\xf9\xcf\xc1\xf8\xd1W\xa8@\x9a\x04\x95\x10\xc1\xf7\
+gV\xce\xff\xe7\xdd0\xfe}c\xf3\x0dH\x06H\xde\
+t=\x81\x1e\xa9\xc9`H\xe0\xfb~\x1fT\xe2\xc4\xe0\
+\xbf\xa96\x13\x0f\xe3\x12\xf0\x7f\xfdq|\xb78-\x1e\
+A$\xf0\xf9\x04(e\x83?q\xfc\x08\xbc\xf8\x97\x9f\
+\x8d\xaac#\x9ap\x16T\x99\x00&\xd1\xd5,\x0e\x10\
+\xc5N'=\x0d\xfbn\xdbuQ$ \x9bOZ\x84\
+\xc0\xef\xf9\xf2n\x18\xfd\xbf\x1a|\xd6\xea\x0d\xc8\x1ah\
+\x93\xccB\x0d\x06t\x93\xcc5\xfe\xa9V\xd2\x9f\xcc\xae\
+\xb9\x9ed\xfc\xc7\xf7BO\x81\x04\xa8\xa5\xe8\x9d\x09\x90\
+\x8a\xc0\x9f<\xde\x0d\x8f\xbf\xf7fpRS\x10j\x95\
+\xa4g#MW\xb7\xda&\x80OZ\x10\x01D\x09P\
+M\xd9\xd1\x11\xd8\xff\xbe\x9ba\xe2\xd8\xe1\xb2I@-\
+H\xdfs\xeeK\xbba\xe4\xa1=\x06`\x7f\xec\x9e\xdb\
+\x7f\x7f2$\xa0\xe4\x86$C\x16\xad\x11\xfc\x04\x01J\
+\xdc\x5c\x8c\xfd\xf0^8\xf7\xc5\x8f\xd3\xbb\x12a\xe9\xdd\
+\xcb\x07\xffD7\xd6\xd5.\xc8\x0e\x0d\x9a2\x84\x80\x22\
+\xa5\xd7A\x87\xaa\x9a\x00.\xda\x04\xc8\xa2\x0f1\x95\x0c\
+\xc5H0\x0c\x07\xb0`\x13\xc7\x03H\x10\xf1\xb7t_\
+\xfbk\x04\xff{{\x02AV q;\xcf\x01\xf7\xd9\
+~v\x8f\x01\x9f\x11(\xcc\xbf0\x84\x19\xf9\xc1\xbdp\
+\xf6\x0b\x1f\xa7w\xa6w\xa72\x94\x05\xfeA\x02\x7fx\
+\xd0<\xa6\x14\xa7\xd4\xd7M\xaf\xa1\x090\xc3\x8d\xc1\x17\
+\x9a]\xdeJ\xb2#\xc3p\xe8\xfd7\xa3\x8a;\xc2H\
+\x10\x06\xfe\xab_\xdc\x0d\x83\xff\xc78|FM{\x9e\
+\xe1\xcf\xe3\xad\x9e\x11A\x1f\xb3|c&\x98\x06a\xa4\
+)\xaa\x11F\xbe\xffux\xf5\xf3\x8c\x04\xe1\xe0\x9f\xec\
+\x86'~g\x17dF\x06\x99\xca\xd7\x19\x81Y\xae&\
+\x00\xd4\xd8\x07\x10\x04\x8c0\xf9Q/\xc8\x9c2\x22\xc1\
+\x10\x15\xd4K\x82\xd0?\xa4|\xe6\x0b3\xe0\x03\x03\xbe\
+\x90\x0c\x88\x8c\x1c\xae\xda\xf7m\x8d\x160\xa0\x17'\x81\
+I\x06h\x93\x02\xc8h\xf2\x86\x1e\xfa:\x9c\xfe\x8b0\
+\x12\x18\xf0\x93\x08\xfe\xcf\xb0N\xd2C\x83\x86\xd4!N\
+'\x9f\x17\xea%\x80\xa0\xbdZ\x98\x00\xe1_\xcd\x889\
+B\xe16\xca5eP$\xf8\xd9\x1dH\x82\x13G\xc8\
+V\xea?\x9fJ\x8e\x139z\x94\xa7\x8eO}~7\
+\x5c\xf8\xee\x9e\xd2*\xde\x0b2\xb3\xf7\xe1v\xdf\xa1\xc4\
+\xae\xd5\xe4\xe2&\x81\x83^\x9c\x1c\x83H\x82\x93\xffI\
+\x91@;\xb1TFM\x0a\x95\xa7\xc0\xbf\x1d[\xfe\xf0\
+`pc\x8a\xa8kn\x02d-\x02AR9\x19\x86\
+\xc8f\xe0\x5c\x9a\x15/\x8c#\xe8\xb2y\x81\xa6\xc5\x12\
+\x09\x86\x87\xe0I$\xc1\x9b\xef\xdf\x07\xad]W\xaa\xca\
+\xf1\xca\x89\xbf\xd8\x0d\x03\x08\xbeey*Xx+\x99\
+\x1f\xbb\xc4O\xbd\xef\x9a\x90\xafY{\x98\xcd\xab\xe7\x9f\
+\xc0\xbb\xdc\x84\x98}\x9d\x82H\xc8\x890\xf0\xbd\xaf\xab\
+k\xd6}\xe9n\x02\xdf\xd7\xbd%\x7f\x88\xea\x80l\xbe\
+O\xbcZ\x0c\x02\x9dN&\x96\xed\xa9sY\x0b\x1f@\
+\x84\xda\x18\x03\xb0,-8\x93!M\xf0\xee\xeb\xe1\xb5\
+o\xffO\xea\xf2\xa8R'O\x1d\x85\x17>z3\xf4\
+=hZ>\xab\xdc PLk5[\xae\xde\xfd-\
+\x9f\xf5\x00\xb8\x16\xe0\xa6@\xefG\x13\x81\x8e\xfb\x91\x04\
+/\xfc\xdeN\x98:\xd5\xad.t\xa6Sp\xee;{\
+\xb0\xec\xd7\x11\xf8\xe6Zo5\x85;\x80<\x82\xa9\xf1\
+\x11\xa2z\xa1`>\xa3'\xa8\x9b\xc1[\xbd)\x8ci\
+mRp\xbf!\x8f\xc0\x1f\xfe\xf3\xbb\xa0\xfb?\xdc\xe5\
+\x1f\xc3\xb7\xbc\xd3\xb4\xb8\x160\x1e\xb0\x09\xeb\xbafm\
+T\xad\x91\xf8\xa4\x067\x8a\xf0\x5c\x0bpRq\xf3\xe2\
+\xbf\x9e\x13c\xec\xe9\x03\xf0\x8b\xdf\xdc<s\x8f\xe3\xf1\
+C\x98I\x0b\xa8\xd7R\x08B\x15W\xd3\xb1\x00A\x89\
+\xbf\x9b\x998\x11L\x0a\xe9%\x85\xf4\x83\x22\xbc\x15\xa0\
+\xaf\xe5y\xba\xe5\xf9&\xcf[\xe67\xf5\x08\xaewM\
+a6\x1c(eX\x1d\x19\xc2\xf2\xdeD\xb8O`R\
+8\x11L\x9eF2<j)\xa3\xa2\x92\x92\xed\xd7\x86\
+\x00\x82\x92%\xf8h\xa0\x07 W_\xeb\x03.XK\
+(\x89\x04\xde\x7f\x0c>\x0d`\x9ei\xb9\x851\xfdb\
+\x5c\x95&\x83OV\xf5\x1bY\xd7\xa7b\x03}\x01\x9e\
+\xe7M\xe5\xf5\x18\x8c\xc9\xe1`s3\xca\xbb\xdbFD\
+\xd5\x09\xa0+H\xbf\xac\x8cx\x86\xbe\x96\xb5x\x1f\xf0\
+\x02\xbc\x05\x0c\x03^\x83l\xde\xc3\xd2\xe7\xe9'\x8d\xba\
+W\x22\xe8X\x14\x88 \xbd\x1a\xc0\xcff\x8b\x03oZ\
+\x9d\x8f\x00Q\xa6\x80\xfb\x1f&\x85\x82n\x12\x037\x5c\
+\xfdK_\x0c\x22*2D\xc7\x15\x10\xc0.hm\xfd\
+\x97\xc2tH*=\x99\xa1\x85\x9f\xd5\xd2\xadN\xd6\xfb\
+\xde\xbc\x95\x9a\x93\x9c\x9dRFy\xf6Av\xdeoB\
+,/\x09\xf4\xb1!\x82\xe9\x91\xd0\xbe\xf0\xbc\xd6\x0cA\
+\x98\xb8\xb3[\x17\x07\xd4\x98\x80`m\xc0\xbb\x9f\xa5\xf5\
+\x18\xfc\xf7\x82I>\x82\x05\xa8\x7f\xc2\x84\xb0\xc9 F\
+TX\xa1\xca,\xf5\x8c&I\x98\xe6K!\xc0\x08\xa6\
+%\xfa},\xcb\x8d\xcfk\x81x\xbc\x1e\xa4\xe3\xc0\xf4\
+h\x16\x1a\x97\xb4B]k=\xe4RY\xd0\xe2k\xb5\
+\xc6\x8eF\xdby\xc9\xc9`\xfc\x03\xaf\x9d7\xe7\x8c\xba\
+\xf7\x93@\xa8\x8b\x02\xbb}\x85\x8a0\x8e\xa0`<\xf5\
+\x1f\xb8\xe1\xddB\xee\x17\x84\x98\x00(\xa3\xc7 C\xba\
+z|P\xcaH}[#4u\xb4\xc1\xd4\xf0IH\
+\xe0\x88\xa4\x93\xcbA>\x9fQE)\xf0_\x8e\x94B\
+\x80.\xbcat\xe6\xb7\x1d!e>^_\x97mh\
+_\x94\xb0h\xfa\xb6h\x05\x22\xc4\xa2-\x9d\x90\xec\x9f\
+\x00#e\xday\x19\xa0\x05\x14\x90\xdc\xf37\xde\xbd\xfe\
+y?\x09\x84>6\x7fj\xc6 \xa8\x89\xc1\xfe\x22Y\
+\x88\xb8\xcc\x170+\x81\x1bR\x98\xae`HWT\xb2\
+\xf1\x06\x16J.\xcb?0\x04\xf3\xaf\xdb\xb0\xec\xba\xb5\
+\x10on\x80\xf1\xa1\x8c\xfa\x9b\x0dnr\x12,\x07\xa8\
+\x95\xe6\x08KL\x92\xb0\x8d\x8c\x03\xd0\x1d\x85^J\x1e\
+\xa4L\x0b\xd7MZu1\xb5\xfc{v\x1a`\xf0\xf8\
+8t\xdd~\x0d4-n\xf1c\x1e\xf0\xb2A\xf6\xcf\
+\x0d\xa9\x18\xa9\x13\xef{s\x1b\xecz\xce\x05l)9\
+\xe682928D,\xdd\x90V\xaf\xaf\x09\xf2\x0f\
+\xd8\xe8e\xb4\xcf\xc0c(\x9c\xc4\xad\xcb\xdba\xfd{\
+\xf1;\xcbg{!9\x9aQ\x84\x90\xe0\x92)\x9f\x14\
+\x00\x19\xc2\x920\xcd\x96\x12\x08\x1a\x9bQ\x0bn\xe1\xc6\
+);\x9d~U\xda\x16X\xf5\x0924\xd0\xfb\xc28\
+\xc4\xdb\xe6\xc35\x9f\xde\xe9!A\xa8\xf3\xc2\x0b\xc6\xae\
+\xe1]%7X\xdd\x9a\xfd\xc0\xf0\xad\xc9s\xf8~t\
+\x92\x0cx\xbe\x0d\x18k\x08xw^\xbe\xa0\x14@\x04\
+\x17\xf85$-\x08\xfe5\x7f|\x0b\x1e\x0b8\xf2\xd8\
+\x19R\xa7\x0aU\xc7\xc9C\x03\xc0\x19\xc2\x90\xb0$L\
+\xc7J1\x01I\x00\xd9\x86\x8cq\xf1&\x010\xd1\x94\
+J?;\x95Ln\xafokC\xfcQ\x0bL\xb9p\
+\xf2'\x03\xb0\xf6\xed\xab\xe0\xa6/\xdf\x06G\x1fx\x16\
+\x06_\xee\x81\xccD\x9aj\xc7\xf7\x19\x16%\xf3e\x0e\
+\xdf\x82\xa0\xc4\xaf\x05\xb3\xef\xbb\x06\x84?Iu\x9d\xc7\
+\xc9\xa3-\x1dz\x8f\x85\xdf!\xf6\xafO\x10\xc0_\x9f\
+#hH\xaa\xb6\x96\xc9S[\xcb\xe4{;\xee\xa2p\
+\x9d\xa0\xe4\x9a{\xa0p,<[\xcb\xf57\x08\x97\xf2\
+\xcd\xbd*Y\x9e\xdf\xb6m\x0b\x12\xf3\x1a`\xc9\xd6\xcb\
+`\xe3\x07v`F\x0c\x9e\xfc\xc6K05\x92\x06+\
+n\xa3\x7f\x96\xc6\xdf\xc8\xc3\x02\x17\x9e\x05\xc4\x90\xb0\xc4\
+\x94'l#\x09@\xc1\xca\x9b\x94\xbaP\xac\x19_\x99\
+\xcd\xef\x7f\xb1\xbf\xff}\xce\xd2\xa5\x0b\xe3M\xcd\xca\x10\
+\x8f\xf5&\xe1\xe5\x7fI\xc1\xf2m\xf3a\xeb'w\x81\
+3\x91\x84\xa9\x0b\x13\xe0d\xf2Xp\xbe\x02\x16\x89e\
+\xec\xb5\xb9\xc6\xf7\xa1\xa6\xf7>\xbe\x8a\x18\x04]\xe3\xcd\
+\x9f\x0d0\xe5W\xd2O\x96E\xc2\xae\xc5\x8e\x8b\x13\xc5\
+\x10(\xe0X\x93\xc7\xdc\x17\x14\x80*\xfe\xdbv\x22\x06\
+\xcd\xd8\xf2\xed\x86z\xe8y\xbe\x0f\xba\x1f?;\xa3\xfa\
+\xd1T;\xa9\x0cd\x93IH\xb80\xb8\xd6\x85\x83.\
+b\x98G,\x13\x00.a[\xd27\x1d\x8f\xcf`R\
+\x87\xff\xb4\xbb\x00\xab_\xb5\xc5\xed#\x9d\x1d\x9fZ\xb2\
+e\x8b\xb0bqp\xe8\x0f>d\x90\x22\xa8fb\x09\
+\x89\x0c\x1e\x85\x96\xc5MP\xd7\x5c\x07B\xd7z\xd4W\
+C\xc2l\xf8\xb5\xfc\xbc\x14\x81\xd7F\x03,\xa0r\x99\
+\x0d~h\xd4\x8d_\xc3\xaf\x8f\xf8=\x19\x1e\xdcs]\
+\x09\xf9\xb4\x03\x99\x14\xc0pO\x12Rci\xd5U'\
+'\x9d<\xff\x89\xbe\xf3\xa8\xa5\xa7\xe4Z\x07\xfe\xf1\x0a\
+\x17\x1e\xb4\xd0\x0c\xb83\x9d\xbb\xccN\xbc\xbd\xa48\xc0\
+\x01\x00\xf9\x0e\x80\x9c\x03\x90\xc4;.\xacr\xe4#\xc9\
+\xbe\xfe+\xfa\xa4{k\xfb\xe5\xab\xc1\xaa\xabC\xecs\
+\xea\xafW\xa6\xc6\xd30\xf6\x1a\x9a\x80\xe4DTC\x0a\
+>_\x85\xebd\xc5\xe7\xdexB\x7f\x94\xab\xbe\x15M\
+\xb2m\xab$\x10\xfc\x5c\x12\xc9\x80\x83k\xd9T\x0a\x16\
+\xb9\xf0(\xb6\xfe\xbd\x80\xd8Y\x88a\x1c\xb1|4\xa0\
+\xa8v\xb1\xcc\xfd\x98\xde\x87\xa9\x19@N\x93C\x88i\
+\xb1+\xcf\x0c\xa7\xa6\xe6\x0f\x8f\x0c\xafqs9\xd5\x1e\
+]\xc7Q)7\x9d\xc24\xcdg\xab\x5c\xe2\x04\x90\xf0\
+\xc6\x14\x9b\xbe\xb5\x88\xc7@\xd2\x7f\xf9<\x06\xe8& \
+5:\x8c\x9a!#\x09\xfcm\x0e\xfc3\x00\x9c\xcd\x03\
+\x0c6\x02\x9e\x02p\xee\x0c'\x00\x97+\x00\xe4\x22\xdc\
+\x92\xed\x903}\xc9\xecR\x17\x8e\xa1\x9a\x19\x1d\x9e\x18\
+_=5>\xd6H\xb6&\x8b\xe0\xe73\x19p\xf3\xb9\
+\x80\x0a\xad}\xe5K\xf8u\x17>\xfd\x1b\x1b!:{\
+\xd3\xa8y'!\x97\x9e\x86x\xde\x1d\xbc\xdc\x85{6\
+\xbb\xf0-\x02\x9fZ\x7f\x0c \x99B\xec\x9eB\x0c\xf7\
+Wb\x1d\x1f\xc7\xf3\x13\x00V+\xf2@\x024\x09\x80\
+v\x0a\x14:\x00\x9dg,\xb8i\xd4\x82k\xa6\x01V\
+;\x02\x9a]\xbc\xa6V\xa0\xc9\xaa\x9f\x7f\xe3\x13\xc7\x02\
+\xc8\xfe\xbf\xf6\xce %b\x18\x0c\xa3/I\xe9\x8c\x8c\
+\xcc\x0c\x1e\xc1\xa5\xa7\xd0\x8d\x9e\xc0\x03x\x12\xebI\xbc\
+\x95\xcb\xd9\xb9\xb48Hal\x9b\xc4/\x18A\x17\xe2\
+\x14\x1dWy\xf0\xb6%\xe1\x0b\xfc\xc9\x1fH+x9\
+\x8al\xd2n?m\xf8\x1c<\xa6\xe0#\xb4\x06:e\
+\xd7/!\x5c|?\xd5\xbd\xeev\x8c\xea\x87]A5\
+\xc0|\x84\x14\xf6\xcaJ`i`\x11a\x06T\xd2Q\
+\xf8\x0f\xbc\x1c?z5\xf9\xa8\xb7\xb5\xb2z\xaf\xf9\xbb\
+-\x8c\x97\xb9\x0d\xfc\xab\xdb@\x03\xf1\x1a\xc2\x0d\x0ck\
+\xf0#\xf4@g\xe1)\x05\x9f49\xfc\xf0\xe9\xb7\xbf\
+\x14\xfe\x1c\xf3\xf513\x1f\xf3\x22H\x06\x89t0\xb4\
+\x10\xee!^\xc9\x9f\xbf9\x81\x06\xcc\xadT=\xb1\x1d\
+\xb8\xb9\xac\xc1\xbeJ\x97{5\x1eLO\xe1\x10\xd4\xd2\
+A\x0c\x80\x878\x83\xd0\xcb\x1d\xf8\x85<\x87p\x07\xb1\
+\x91\x13\x16\xd5t\x1ay\x06\xe6X\xae\xf3\xc06)x\
+yB\xe1\x90\xb4\xb2\x86x*{\xe09wo\x1fd\
+C\xa1P(\x14\x0a\x85\xc2~\xbc\x01\xc5\xf3\xa3!\xeb\
+\x0d6:\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00<\x0e\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x09\xediCCPICC Prof\
+ile\x00\x00x\x9c\xad\xd6gTS\xd9\x16\x07\xf0\
+\xff\xbd)\x84\x04B\xef- \xddP\xa4Jo\x8a\x0d\
+\x18D\x14\xb0\x02!4)\x11\x82(vP\xb0\xa1`\
+W\xb0+v\x05\x95Q\xc7\x8a\x0a\x22\x8c\xa24\x11Q\
+, 8\x22\x1d\x0b\x82y\x1f\x82e\xd6\x9bY\xef\xcb\
+\xdb\x9f\xf6\xd9k\xdd\xb3\xce\xf9\xed}\xd7:\x80\x94b\
+\x98@\x10G\x02\x88O\x10&\x05L\xf0\xe4\x04\x87\xcc\
+\xe4H\xd4\x81\x0a5H\x03\xb0\x0f\xe3%\x0b<\xfc\xfd\
+}\xf0\xaf\xf1\xb1\x1e\x04\x00\xd4\x98\x85\x09\x04q\x89G\
+\xa3\xab\x11\x97\x97\xa9\x92\xe3\xc2\xe9\x9f\xab\xfb\xf8\xdf\xbf\
+\x03\x00\xb0\x93\x82Cf\x02\x04\x17\x80b\x948w\x07\
+\xa0\x18.\xce\x03\x01(\xa6\x0a\x05B\x80\x88\x06\xa0\xc8\
+\x8b\x0e\x8b\x00\x88\xa5\x00\xb8I\x81\x01^\x00q\x1c\x00\
+;J\x9c_\x06\xc0\x0e\x17\xe7\xe5\x00\xd8\x0byQB\
+\x80h\x00(\xf2\x09\x111\x09\x00\xb5\x03\xa0\xbbF\xf0\
+\x93y\x00\x8b\x0b`^D2/\x1e`m\x04`\x19\
+\x1f\x9f\x18\x01\xb0\xae\x010\xe6\x09\x92\x84\x00\xab\x05\x80\
+Yp\xc8L\x8e\xf8\xc8\xe1\x91\x80u\x08@\x1e\xffY\
+\x9b/\x05\x14i\x02\x8a5?k&\x11\x80F\x01p\
+\xf5\xc4\xcfZ_\x00\x08\x00\x84rUr\xa4\xb5\x15\x00\
+\x80\x90\xf2\x04h/D\xa2>C@b\x0b0\x9c+\
+\x12}=$\x12\x0d\x1f\x06(M\xc0\xad8^J\xd2\
+\xc2\x11/\x82x\x00\xfc\xaf\xb5\xf8\xce#A!\x00\x02\
+$\x95\xce\x90dI\xb1e\xe4\xe4\x15\x94\x94U\xd54\
+4\xb5u8z\xa3\xf4\x0d\x8d\x8cMGs\xcd-,\
+\xc7X\xdb\xd8\xda\xd9\x8futrvqus\xf7\xf0\
+\xf4\x1a7\xde{\xc2\xc4I\x93\xa7\xf8\xf8\xfa\xfd\xe6?\
+5 p\xfa\x8c\xa0\xe0\x90\x99\xb3\xe6\xcc\x9d\x17\x1a\x16\
+\xce\x8b\x88\x8c\x8a\x8e\x89\x9d\x1f\x17\x9f X\x90\x94,\
+LY\x98\xba(m\xc9\xd2e\xcbW\xac\x5c\x95\x9e\xb1\
+&3k\xed\xba\xf5\x1b6fo\xca\xc9\xdd\xb2u\xdb\
+\xf6\x1d;w\xed\xde\x93\x97\xbfw\xff\x81\x83\x87\x0e\x1f\
+9Zp\xec\xf8\x89\x93\xa7N\x9f9{\xae\xb0\xa8\xe8\
+\xfc\x85\x8b\xc5\xbf_\xba|\xe5\x8f\xab\xd7\xae_\xbfq\
+\xf3V\xc9\xed;w\xef\x96\x96\xdd+\xbf_QQ\xf9\
+\xe7\x83\x87UU\x8f\x1eW\xd7\xd4\xd4\xd6\xd5\xd5?i\
+hx\xda\xd8\xf8\xac\xa9\xe9\xf9\x8b\x17\xcd/_\xbez\
+\xfd\xfaMKK\xeb\xdb\xb6\xb6\xf6w\xef\xfez\xff\xbe\
+\xe3CggWwwOo__\xff\xc0\xc0\xc7O\
+\x9f?\x7f\x19\x1c\xfc:44\xfc\xed\x9b\x08$\x95.\
+!\xc9\x94\x92\x96\x91\x95WPTVQS\xd7\xd4\xd2\
+\xe6\xe8\xea\xe9\x1b\x18\x1a\x9b\x98r\xcd\xcc-,\xad\xac\
+ml\xed\xc6:\xfc\x1b\xc0\xb4\x11\x80\xd9#\x00\xfc\xef\
+\x00\x89?\x00\x16\xff\x00X\xbd&3k\xed\xfa\x0d\x1b\
+\xb37m\xfeE \x7f\xef\xbe\x7f\x10\x18\x01\x10\x0b\x88\
+\x01\xee\xfc\x0d\xe0\xd1\xe3\xc7\xd55\xb5\xb5u\xf5\xff\x08\
+\xd0\xfa\x03\xa0C\x0c\xd0\xd3\xd3\xdb\xd7\xdf?\xf0\xf1\xe3\
+\xa7\xcf_\xbe\xfc\xbc?\x85FgH2Y\xd2l\x19\
+Yy\x05E%\x15U5u\x0dMm\x1d\x8e\xae\xde\
+(}\x03#c\x13\xd3\xd1\x5c3s\x0b\xcb1V\xd6\
+66\xb6v\xf6c\x1d\x1c\x9d\x9cG$~\xa5\x10\x0f\
+\xc3w\x8cY\xb3\xe7\xcc\x9d\x17\x1a\x1a\x16\xce\x8b\xf8\xe1\
+\x91\xf0\x0bH\xda\xdfE\xd6\xfdB\xf2}&\xbe\x93\xfc\
+\x93\x89\x98dd(J\xcb\xee\x95\x97\xdf\xff\x95\xa4\xae\
+\xfe\x89\xd8\xe3\xf9\x8b\xe6\x97\xaf^\xbfii}\xdb\xd6\
+\xfe\xee\xaf\xf7\x1d\x1f:\xbb\xba{z\xfb\xfa\x07>~\
+\xfe2\xf8uh\xf8\x9b\x08\x10\xff\xfb\x00@\xb7\x03\x0e\
+'\x003\x98@\xe0!`{1`\xe4\x04\xa8t\x01\
+\xfe\xd2@\xa0\x03\xc8dk\x90\x91\x91 U\x98\xa0\x10\
+\x00\x09\x80\x00\x05tHB\x06\xca\xd0\x81)\xec0\x0e\
+\x81\xe0#\x15\xeb\xb1\x0f\x17Q\x89\x16|#\xd4\x09{\
+b:\x91Ll%\x8a\x89\xa7\xc47\xd2\x80\xf4%\x17\
+\x92\xfb\xc9J\xf2\x0b\xc5\x84\x12B\xd9@\xb9I\xe9\xa7\
+r\xa9\x11\xd4\xbd\xd4\xa74UZ\x10m7\xad\x89\xae\
+G\x8f\xa6_\xa0\x8b$|$\xf6Ht0<\x18\xbb\
+\x18\xbd\x92~\x92g\x98l\xe6\x02f\x03\xcb\x8bU(\
+\xa5-\xb5I\x9a\x94N\x93\x1e`'\xb3\xfbdRe\
+\x86e3\xe5\xe4\xe4\x0e\xca\xdb\xc8W(\x84+|S\
+\xdc\xad\xa4\xaftJ\xd9J\xf9\x9a\xca\x04\x95\x1a\xd5p\
+\xd5~\xb5u\xeaZ\xea\x175|4Z5\x97i\xa9\
+h\x15k\xfbkw\xea\xe4pl8\x8d\xba\x19z\xa3\
+\xf5\xaaG-\xd5\xb7\xd0o2\xd8h\xe8b\xd8it\
+\xd08\xc8\x84mRj\x9a>\xdak\xf40\xf7\xba\xd9\
+\x0as\x0f\x0b\x9aE\xa5\xe5\xb61s\xac\x8c\xacz\xad\
+o\xda\xe4\xd8\x86\xdb\xd9\xda\xb3\xec_\x8f\xbd\xe2\xb0\xd9\
+\x91\xef\xe4\xe2\xac\xe5\xfc\xcd\xa5\xd9\xf5\x86\xdb\x01\xf7\x0c\
+\x8fH\xcf)^\xd6\xe38\xe3e\xc7\x0fywO\xa8\
+\x9fxo\xd2\xed\xc9%Sn\xfb\x94\xf9V\xfa=\xfa\
+\xad\xce\xbfi\xea\xbb\x80\xaf\x81r\xd3\x8df8\x07\x05\
+\x06\x0bB\xb2g\x9e\x99U3[4\xd7b\xde\xbc\xd0\
+\x9c\xb02\x1e\x19\xe1\xc6_\x12y5\x9a\x12\xe3\x1f\xbb\
+w~w\xfc\xe4\x84<\x01\x16\xf0\x92\xca\x84\x96)\xfb\
+S\xe5\x16\xadMc,Y\xbetp\xf9\xca\x95\xccU\
+[3tV_\xca\xf4\xc9j^\xb7d\x83\xd6\xc6\x92\
+M\xc1\x9bE\xb9\xa7\xb7\xce\xda.\xb1\xe3\xcc\xae]{\
+\x8a\xf2_\xef\x97=\xe8|Xp\xf4\xd8\xb1\xfa\x93\x92\
+\xa7'\x9d\xcd.,=/*\xf6\xba\x94~\xa5\xf2\x9a\
+\xec\x8d\xa0[Gn\xf7\x97z\xdc\xcb\xbd\xff\xf2O\x87\
+\x87\x1b\x1e\xbd\xa9\xb1\xad\xdb\xf2\xa4\xb71\xa0\xe9r\xb3\
+\xda\xab\xb47/\xde\xfa\xb7\x97\xbc\xb7\xfeP\xd0m\xd4\
+\x9b7\xa0\xf4i\xd7\xa0\xee\xd0S\x91\xe8G\xff\x99\x90\
+\x81\x0at\xc1\x85\x03&\x22\x04\xb1X\x8a\x1c\x14\xe0\x1a\
+\xea\xd0E0\x09c\xc2\x9b\x88 V\x13\x05D\x05\xd1\
+E*\x93\xaed4\xb9\x85\xbcAvP4)\xbe\x94\
+\x15\x94\x0b\x94v*\x87\x1aL\xddB}Hc\xd3\xfc\
+h\x9bi\xb5t\x0dz8\xfd4\xfd\xb3\x84\xb7\xc46\
+\x896\x863c\x1b\xa3Sr\x8a\xe4\x09&\x8b\x99\xc0\
+\xacgy\xb0\xceJiIeK\x13\xd2\x8b\xa5\xfb\xd9\
+\xc9\xec>\x99\x852C\xb2k\xe4\xe4\xe4\x0e\xfc\xcf\xee\
+\xfbj\xb4j.\xd7R\xd1*\xd6\x9e\xaa\xdd\xad\xb3\x85\
+c\xc7y\xae\x9b\xa9g\xa1\xf7dT\xba\xbe\x9d~\xab\
+\xc1\x0e\xc3\x89\x86_\x8d\xce\x19G\x9a\xe8\x984\x9a\xee\
+\x1e\x1d\xc2U\xe2>3;h\xce\xb7\xe0Z|\xb4\xbc\
+=&\xc7j\xae\xb5\x99\x0dl\x9e\xd8\x9e\xb4\xcb\xb4\x0f\
+\x1f\xeb\xea\xa0\xee\xf0\xd1\xb1\xd6\xe9w\xe7|\x97\x0c\xd7\
+X\xb7\x00w'\x0f#Oy/x\xf5\x8e\xeb\x19\xff\
+\xca\xbbi\xc2\x83\x89w'\x95L.\x99R\xe2s\xc7\
+\xb7\xdc\xaf\xf2\xb7*\xff\xda\xa9\xcd\x01\x9d\x81\xc4t\x85\
+\x19\x06A\xf6\xc1\xfe!\xd13\xd3g\x1d\x98]:\xa7\
+k\x9eF\xa8{Xt\xf8.^=\x9f\x15\xe9\x12\x95\
+\x16}=\x16\xf3\xc7\xc7\xe5\xc4\xbfH4\x17\xa4/h\
+H\xb6\x12\xe6\xa6\xf4\xa7\x86,\xba\x95f\xbad\xff2\
+\x85\xe5\xd9+\x99\xab\xb22(\xabWe\xb2\xb2\xf2\xd6\
+\x19\xaf\xbf\xbc\xd1/\xfb\xfd\xe6\x0d\xb9F[J\xb6\xf1\
+v(\xee|\xbe\xfbI>}\x9f\xcd\x01\xfe\xa1\xddG\
+\x1e\x1c\xa3\x9cp<\x15\x7f\xe6\xf4\xb9\xb6\xf3\xdc\x8b)\
+\xbf\x17_\xfer\xd5\xf9\xfa\xea\x9b\x8fnk\xdd\x0d+\
++*\x1f\xaa\xf4{\x90_\xf5\xa1\xda\xb3vg\xfd\xdb\
+\xa7\xf6\xcfr\x9e\xb7\xbet{\xbd\xa3\xe5C\x9b\xef\xbb\
+\xfd\xef\xbft\xce\xe8\xbe\xde\xa77\xb0\xf6S\xd7\xe0\x9c\
+\xa1\xee\x91\xfe\x93`A\x16\xca\xe0\xc0\x1c.\xf0C8\
+R\xb1\x09\x05(\xc1\x0b\x0c\x13\xda\x84;\x11A\xac#\
+\x8a\x88&\x92A\xda\x91Q\xe4N\xb2\x92BR\x9c(\
+)\x94\x22J7\xd5\x8a*\xa4\xfeA\xa3\xd0\xfchy\
+\xb4\xf7tW\xfa6z\x87\xc4\x04\x89\xa3\x0c:#\x96\
+Q-\xe9*y\x86\xa9\xc3\xdc\xc1\x92eeKIK\
+m\x96V\x92>\xc4\xb6f\x97\xc9\xcc\x91\xf9,\xbb]\
+\xceN\xaeI>K\xc1N\xa1]1_\xc9K\xa9Y\
+y\xad\x8a\xb9J\x83\xea\x1a5;\xb5v\xf5|\x8di\
+\x9aL\xcd[Z\x8b\xb5m\xb4\xbbu\x0a9\xc9\xba\x8e\
+z\x14\xbd{\xa3r\xf5C\x0d\xcc\x0d\x86\x0d+\x8d\xf2\
+\x8c\x13L<MUM{FWr\x0b\xcc2\xccC\
+-\xdc,9c\xa8c\xda\xac*\xac\x0bm\xf6\xd8\xa6\
+\xdb\xc5\xdb\xcf\x1e;\xd9\xc1\xdeQ\xcfI\xc6\x99\xe2<\
+\xe8\xd2\xed\xda\xe2\xd6\xe0^\xe3Q\xeeY\xe2uk\x5c\
+\xe9\xf8R\xef\xb2\x09w&\xde\x9dT9\xb9fJ\x93\
+O\xbbo\xbf\x9f\xc8\x9f9U%\xc0d\x9a[`\xd0\
+\xf4\x84\x19k\x82\xf6\x06_\x09i\x9c9<[g\x8e\
+\xdb\xdc\xb0yY\xa1\x85aM<F\x84-\x9f\x1f\xb9\
++\xaa*\x86\x11;~~F\x5cI\xbc(\xd1U\x90\
+\xbe\xe0~\xb2\x8204\xa5(\x95\x5c\x14\xb8\xf8\xe4\x12\
+ri\xc8\xb2\x8b+\xd4V\xa6\xadj\xc8\xf0\x5c}.\
+S#k\xf5\xda\xee\xf5\xbc\x0d\xd5\xd9\xde\x9bn\xe68\
+\xe6^\xd9\xea\xb0\xed\xea\x0e\xd7\x9d\xa5\xbbg\xec\xe9\xc9\
+\xdf\xba\xcft\xff\x83\x83\x89\x87\xe5\x8f\x5c-\x88<\xce\
+:Qx*\xe1\x8c\xce\xd9\x87\x85\xcb\xcf[_\xe8*\
+>})\xe6\x8a\xe9\x1f\x8d\xd7\xf2n\x04\xddR,\xa9\
+\xbd\xb3\xbdt\xfa=\xa5\xf2\x9a\x8aM\x7fNy\xc8\xac\
+*{\xbc\xa8\xc6\xaa\xb6\xbd\xfe`Cp#\xfb\xd9\x8d\
+\xe7\xf3\x9b\xd5_V\xbc\x16\xb6\xa8\xb6\xdeh\x8b}\xc7\
+\xf8\xebP\x87\xf7\x87\x97]Kz\x94zO\xf4;\x0c\
+T|\x9a\xf5\xb9cp\xed\x90\xeap\xa3H\x04\x88\xdf\
+\x8b\x00\x00Z\x8co\x18\x0f\xff\xe7\x88\x8fK\xf9\xbe'\
+\x09@\x8a\x9f0}\x1a\x00\x06\x00c\x81\xd0?\xf0{\
+\x8e\x18\xf8\x22\x0c<\xf1;\x15\x00\xe8\xb2@\xbe\x11\x00\
+\x5c\xf6M\xfa\xaf}\x85\xfcEB\x00\xf0J\x14,N\
+\x8a\x89\x8a\x16r<\x04\x828>\xc7+1^\x90\x22\
+\xe4'q9\x93\x12x\xe6\x5c\x8e\x95\xa5\xa5-\x00\xfc\
+\x07\x8f\x08\x91L8\xcf\x9b\xb0\x00\x00 \x00IDA\
+Tx\x9c\xed}y\x9c\x5cU\x9d\xef\xf7\xdc\xa5\xf6\xad\
+\xbbz\xdf\x93\xce\xbe\x07\x0cc\x10\x95\x00\x03\x08\x88\xe8\
+\xa0\xbe,\x84\x04\xf8\xa08\xce<\x9e\xcb\x88\x06\x12\xc0\
+\x91y\xbc7\x8e\xa3\x83\xdbg\x06\x01\xc5\x04d\x10|\
+\x82Q\x90@p\x09\x88\x06!\xa1\x93\xd0\xdd\xe9\xee\xa4\
+\x93\xde\xbb\xab\xba\xba\xd6[u\xef\xfb\xe3\xdcs\xb7\xba\
+U]\xd5I $\xf9}>\xf7S\xd5\xb7\xef\xbd\xe7\
+\xdc\xf3\xfd\x9e\xdfv\x96\x22\x00\x88\xa2(\x0a\xce\xc9Y\
+)\x1c\x00\x10B\xc8\xbb]\x91s\xf2\xee\x08Q\x0fM\
+\xcei\x83\xb3K8\xeb\x89s\xda\xe0\xec\x92<\x02\x00\
+\xe7Hp6\x89-\x01\x80s$8[\x84+f\xf2\
+\x09!\xe4\x89'\x9e\xe0\xdf\xc1\xfa\x9c\x93wX\x88\xa2\
+(\x04\x00\xac\x1d~\xdb\xb6md\xf1\xe2+\x9c\x92+\
+\xed\x05\x17\xcf\xad\xbb\xfa\xea\x89w\xa5\x86\xe7\xe4\x94\x8a\
+F\x00@'\xc1\xb6m\xdb\xc8G?\xfaQ\x17\x17\x08\
+xG\x06\xc6}S\x93R \x97\xcb\xa4>\xf9\xb1K\
+\x0e\xbdk5='\xa7DL\x04\x00\x80'\x9ex\x82\
+[\xb4\xe8\xc3n\xb7[\xf1&ri\x1f\x0790>\
+6\x15\x1c\x1d\x9f\x08)\x8a\xa2\x1c\xed\x8e\xff\xfa\x1f\xff\
+\xf1#\xe9w\xab\xc2\xe7\xe4\xe4\x0a\x01%\x01\xfb\x9b\x03\
+\xe0\x89\xc7\xe3\xde\xc1\x89\x84\x1fr6\x90M\xe6\x82\x92\
+\x92\xabH'S\x15\xc7\x87F+r9\x85\x83$o\
+\xbf\xee\xba\x0f\x1d=\xa9\x159A\xa7\xf3\x5c\xfebf\
+\xa2%\x82^|Q\xe1/\xbe\x18^\x00^\x00~\x00\
+\x81\xe3\xc7\xc7BYE\x0e%\xe2\xe9\x0aE\xc9V\xa6\
+R\xd9\xca\xc1\xe1\xb1j)+\xb9\xb9\x1c~p\xcd5\
+\x17\xbd4\xa3B\x8b\x83=\x13\x22\xd8\x82\x7f\x8e\x14\xd3\
+\x0b\x01@\xf6\xef\xdf/z\xbd^OMM\x8d\xd7\xe3\
+\xf1\x04\x00\x04\x00\x84\x00\x84\x86F\xa3\x15R&S\x99\
+\x88\xa7\xc3\x92\x9c\xab\xcaf\xe5\xea\xa1\xa1\xd1\xea\x8c$\
+\xd5\xc8P\xfe\xf5\xda+>\xf0\x1f%\x17f\x06\xde\x0a\
+4\xb19_\x88\x0cV`\x95\x02\x9f\xf4\x8fsD(\
+(\xe4\xa1\x87^t-ZT\xeb\xf5z\x9d^\xbf\xdf\
+\xe3\x0f\x85\x82\x81@\xc0\x1d\x02%@%\x80\xca\xf1\xf1\
+X8\x99\x96\xaa\x92\xc9du:\x9d\xa9V@jF\
+\xc7\x22\xd5\x89D\xca!+\xca\xc3\xd7\x5c\xb1zs\xc1\
+\x02\xf2{\xbb\x11hb\xf3\xb7\xf1\x9a\xe9\xc4\x08\xacl\
+9g\xfd\x9b\xfeq\x8e\x0c&\x11\x1c\x8e\x98/!\x87\
+|.\xde\xe9Oe3\xa1\xc9\xc9\xa9@\x0e\xb9\x8a\x8a\
+\x80\xaf\x02@\x18@\xb8\xb2\xd2_\x15\x9dLTs<\
+\xaay\x9e\xab\x89\xc7S\xe1p8$\x8aB\x0c\xd1X\
+|\xd3\xb3\xcf\xedi\x93\x12\xe9\x8f_w\xdd\xc5\x11\xa0\
+ \xe8V\x809\x9b\xff\x99\xce\xbf\xf5V\xd7EZE\
+\x85\xfc\xca?\xf5\xd4\xb3o\xdeq\xc7\xff\x8c\x80\x82\xac\
+\x80\x82\xce\x00fe\xb1\xf3\x00\xa0\xb0\xba\x9d#\x02\x15\
+\xf2\xe0\xcf~U\xed\x17\xf9\xc6\xc6\x86\xba@(\xe8\xaf\
+p8\x5cA\x97\xd3Q\xe9p\x88\x955U\x810\x80\
+jv$\xd3\xd9\x9a\xc9\xc9\xa9\xcatF\xe2c\xb1\x04\
+dYF<\x91D$:\x05YV\xfe\xaa(\xd9\xcd\
+\xd7\x5cq\xd1\x1b\xc6\xe7\xc3\x0c4g\xf7\xf9\xd4SO\
+\xb5\xae\x5c\xb9\xeaC\x1e\x8fw\x89\xd3\xe9Z\xeat:\
+\x96p\x1c\x17,Zq\x03\xc5dY\x8ef\xb3\xd9}\
+\xe9t\xea\xf7\xd1h\xf4\xcdg\x9eyn\xf7?\xfc\xc3\
+-\x11P\xe0\x19)\xac\xc79\x12@\xedu?yr\
+g\x9d\x87w\xbf?\x14\xf6W\xd4VUV\xb8\x9cb\
+\xa5\xdb\xe9\x0a;\x5cbUUe\xa0\x1a@\x8dz\x84\
+\xa4\xac\xc2E\xa31HR\x0e\xe3\x13Q\xe4d\x05\x19\
+I\xc2\xe8X\x14\x8a,G2r\xf6\x13\xd7]y\xd1\
+n\x14\x00\x1b\x00\xb7z\xf5U\x95\xb7\xdf\xfe\xf9\x0f\xae\
+Zu\xde\xd5UU\xa1%N\xa7s\x89\xa9R'\x98\
+\x84&\x04\x90$i_,\x96\xf8\xe9\xbe}\x7f\xfe\xe5\
+e\x97]\xd6\x033\x194Mq\xb6\x93@S\xcb;\
+~\xfe\xfc\x5c\x87\xc3yeE\xc0__\x13\x0eU\x89\
+\xa2P\xe5\x0b\xb8k\x04\xc2WWV\x85j\x04\x0e\x01\
+vm.\x07\xc4\xa6\x12\x90\xb2Y\x8c\x8cE \xa5%\
+\xc8\x8aB\x09\x91\x95\x91\xc9H7\x7f\xf4\xaa\x0f<\x0a\
+\x0a:\x07\x80\x07\xc0m\xdd\xfa\x1f\x1b\xd6\xac\xb9\xf0\xea\
+\x05\x0b\xe6|$\x14\x0ah\x95\xe0\x0a\x8eH\xd8Tx\
+\x06\xe4\x90$i\xdf\xd8\xd8\xd8}--\xf5O#\x9f\
+\x08\x00\xce^\x22\x98\xe6\x03\xfc\xecg\xbfmp\xfa\x5c\
+_u:\xc5\x96\xc6\xba\xeaj\xd1!\xd6\xf8\xbc\x9e\x1a\
+\x87C\xf0\x05\xfd\x1e8\x1c\xba!V\x14`2\x96\x80\
+$e119\x85\xf8T\x029Y\xc1\xd4T\x02\xe9\
+T\x06\x99l\xfa\xd1\x8f^\xf9\xc1\xcf\xad^}U\xe5\
+'?\xf9?\xfe\xfe\xa2\x8b.\xb8u\xee\xdc\xd6\xa0\xd3\
+\xe9\xccK;\x17\x93\x93I\x8e\xe1\xe1\xa1\xdb\x9a\x9a\xea\
+~\x0c \x87|\xf3pV\x92 oB\xc8\x8e\x9f\xbf\
+0\xdb\xe7r\xdd\xebp\x88\x1f\xa8\xae\x0e\xd5\xb8\x5cN\
+w0\xe0\x87(\xf2\xb0#\xc1T2\x83lF\xc2x\
+d\x12\x93\x93q@Q0\x95L!\x95L\xa3\xaf\xbb\
+\x7f\xff\x82\x05s\x9a\xcf?\x7fqQ{n\xaa\xd0)\
+&\xc7\xc0\xc0\xc0\xe7Z[\x1b\x1e\xc19\x12\x00(0\
+#\xe8\xd1\x9d;\x03A\x12|^\x10\x84\x0b\xeak*\
+\xe1p\x88\xf0\xfb=p\xbb\x9cp\xba\x5c\xf0{\x1dT\
+\x7f\xaaM\x95IKH\xa7%\xc4\xe2\x09\x0c\x8fL \
+\x16\x9dB,\x9a\xc0E\x17\x9d\x07\xa7\xd3axz>\
+b\xe5\xa8\xf4\x93E\x8e\xd1\xd1\xe1\xaf56\xd6~\x07\
+\x94\x049\x18\xfc\x82s\x0404\xc03\xbf\xd9\xf3\x90\
+\xc0\xf3\x9bB!?\xbc\x1e7B!\x1f<n'\x1c\
+\x0e\x11\x1e\x97\x8b\xe2)\xd3\xd6\xcb\xe6\xb2\xc8\xa4%\xec\
+\xdb\xd7\x09\xbf/\x80\xf6\xf6f\xfb\x02\x0bb\xf8\xce\x92\
+#\x91Hl\xaf\xa8\xf0~\x06@\x16g1\x09\xc8t\
+\xef\xfa\xecs\x7f\xfc\x16G\xb8\xdbC\xa1\x00\xbc^7\
+<n'\xc2\x15Ap<\x07\xaf\xc7\xad_\xa8(\xf8\
+\xfd\x1f\xfe\x8a\xb6\xd6f\x84\xc3\x15\xda\xe9\x13\xb7\xe1\xf6\
+\x0f8\x19\xe4H&\x13\xdb++5\x12\xc8\x86\xe3\xac\
+!\xc1\xb4\x04\x00\x80g\x9f{e\x13\xc7q\x0fy<\
+N\x84\x82\x01\xb8]\x0e\x84\xc3\x01\x88\x9c\x00\x97\xdb\x01\
+I\xcaa\xd7\x0b\xafa\xf5\xea\x95\x16\x95o**\xef\
+\xcc\xe9@\x8eD\x22\xb1\xbd\xaa\xcaw\xd6j\x82\x92\x08\
+\x00\x00\xcf\xfc\xfa\x95\x8by\x9e<\xe5\xf6\xb8BA\xbf\
+\x17N\x87\x88\xfa\xba*\xf0<\x87\xdf\xff\xeeu\x5cp\
+\xc1\x0a8\x1c\x85\xc0W\x0b+\x08\xcc\xbbK\x0e\x0b\x09\
+\xce*MP2\x01\x08!\xe4\xc9\xff\xb7{\xa5\xd7\xed\
+zA\x10\xc5Pe\xc8\x07A\x14q\xac\x7f\x10\xcb\x96\
+,\x80\xcf\xe7\xb5\xbb\xab\xf4\x8a\x9cdrd\xb39d\
+\xb3\x12\xdcn\x97\xcd\x7f\xf3\x1f\x10\x8f'\xb6\xd7\xd4\x9c\
+}$(\x87\x00\x1c\x00\xee\x1b\xdf\xf8v\xc5y\x17\xac\
+\xfa\xad 8\x96\xc5\xa2SX\xbcp.jk\xab\xa7\
+\xb9\xd7\xf6l\xe9\x95,\x93\x1c\x03\x03\xc7\xd1\xd3\xd3\x83\
+l6\x87E\x8b\x16\xa2\xaa\xca\xbe~\xd6\xe7R\x12\x04\
+>\x0b@\xc2YB\x82\x92\x08\xa0\x0e\xa0\x10\xd0\x8c\x1e\
+\xff\x99\xcf\xfc\xaf\xf0e\x97_\xb3\xb3\xa6\xaaj\xe9\xb2\
+e\x0bm\xae/\xa3\x02'\x91\x1c\x83\x83\x14\xf8T*\
+\x0dB\x088\x8e\xfes\xfe\xfcE\xa8\xad\xad-Is\
+$\x12\x89\xed55\x01[\x9f\x008\xf3\xf2\x04\xd36\
+\x89\x01|-\xad\xdb\xdb{XLL%C\x0b\x16\xb4\
+\x83\xb6\x87\xf9P\x14\x05\x8a\x02\xdb\xc3*\xf6\xd7)\xb6\
+\xcf\xb5\x9b\xf7\xa1(\xc0\xc4\xc4\x04\xf6\xee\xdd\x8b\x8e\x8e\
+\x8e<\xf0C\xa1\x0a\xd51U \xcb\x0ad\x19\xb6\x07\
+\x13\x8f\xc7\xb3nxx\xf2\x87\xdf\xfc\xe67\xc3\xa0\x84\
+7\x8ec\x9cq\xd3\xe5m\x06Y\xa9\x18^\x945\x00\
+\xaf^/\x5cy\xe5'\xbe\xbat\xe9\x82fQ\x14\x01\
+\xd8\x03\xcb\xc0\xb26\x17\xbd\xd6\xbe\x0d\xed\xaf-\xfc\xdc\
+\x89\x89\x09\xf4\xf6\x1eF$\x12\x01!\x00!\x9c\x06\xbe\
+\xcb\xe5F{{;*+\xab,\xcf\xb2\xaf\x17%\x01\
+=\xe9ry\xd6m\xde\xfc\xb9\xa5\x92$]u\xc7\x1d\
+w\x8c\x81j\x035\xebA\x87\x94\xcf\x14M`K\x80\
+\x02\xe0\xf3\x00\x84M\x9bno\xaf\xad\xad\xbf\xb5\xa5\xa5\
+\x11\xb2\xb1\xeb\xa8\xc2Y\xf4\xec\xa9 G2\x99Do\
+o\x0f\x06\x07\x8f\xab1>\xc7\xea\x0dQ\x14\xd1\xde\xde\
+\x8e\xda\xda:SY\xec\xb9\x91\xc8\x04B\xa1\x8ai\xeb\
+%\x08\xc2\xd2[o\xfd\xc7_\x01`$\xc8\xa9\x17\x9d\
+Q$(\xa8\x01\x90?IC\x00 \xaeZ\xf57_\
+\x993\xa7Uk\xc0\xfc\x9e\x94O\x0a&'J\x8ed\
+2\x85\xde\xde\xc3\x18\x1c\x1c\x00!\x04\x84\xf0\xea\xb5\x14\
+\xf8\xc6\xc6F466A\x10\x84\xbcgG\x22\xe3\x9a\
+\xb6\xa8\xafo\xc0\x82\x05F\xdf\xc5\x5c\x18\xbb\x97\xe7\xc5\
+\xa5\xb7\xdc\xa2\x91`\xd4\xf8\x9a8CH\x90G\x00\x83\
+\xcd\xcf\xeb\xfd\x1b7~f\xb6\xcf\x17\xf8Tmm\x8d\
+v}\xb1\xd7?Y\xe4\xc8f\xb38r\xa4\x0f\xc7\x8e\
+\xf5#\x97\xcb\xaa\xea^\xab/\xea\xeaj\xd1\xd2\xd2\x06\
+\x97\xcb\x9dwo$\x92o&\x86\x86\x86\x90H\xc4\xb1\
+t\xe9\x0a\x08\x82\x00@)\xe8\xb8\x8a\xe2\x99M\x82\xe9\
+4\x80\xd1\xf6\x8b\xef\x7f\xff\x9a/\x07\x83>\xb8\xddN\
+\xd8\xbd\xb3\xd5?:\x19\xe4\xe8\xed\xedA\x7f\xffQd\
+\xb3Yp\x1cQ{>%K(T\x81y\xf3\xe6\xc3\
+\xe5r\xa9\xe5\xe9@\xeafb\xc0t\x0f@\xe0r\xb9\
+\xd0\xd0\xd0\xa4\x82?]]\x15\x88\xa2\xb0\xf4\xe6\x9b\xff\
+\x81\x91`\x1c\xd4'\x00\xce\x00\x12\x98\x08`\xb1\xfdF\
+\x02\x88\x1f\xf8\xc0\x9a\xaa`0x}\xb1\x98\x7f\x9au\
+\x86\x96k\x0bW\x8a\x10`pp\x00\xbd\xbd\x87\x91J\
+\xa5\x00\x10\x0d|\x00\x08\x06ChmmC \x10\xc8\
+\xd3\x1c\x89\x04\x05~hh@+\x97i\x0cA\x10\xd1\
+\xd8\xd8\x84\xd6\xd6VC}\xa7\xf79\x14\x85j\x02\x03\
+\x09\xc6\x0c\x97\xbe\xa7I`\xa7\x01\xac\xe0\x0b\x00\xc4\x8f\
+~\xf4\xfa\xab9\x8e\x83\xdf\xef\xcb\x03\xba\x94\xc8\xa8T\
+r\x8c\x8c\x8c\xa0\xab\xebm\xa4\xd3\x14xB85~\
+'p:\xddhmmCmm\xadv=\xd3\x1c\xb9\
+\x5c\x0eG\x8f\x1e)\xa0-\x08Z[\xdb\xd0\xd0\xd0h\
+\xe3\x1f(\xc8f\xb3\x98\x9a\x9aDEE\xa5\xa1\xbe\xac\
+)t\x11\x04q\xe9\xe6\xcd\x9f\xdf\x09\xe0#g\x0a\x09\
+\x8a\x11@\xb3\xfd\x00\xc4\xea\xea\xba\xcb9\x8e\xd3\xd4\xad\
+Q\xca\xe9\xf9v\xa2(\x0a\x22\x91\x09\xf4\xf4\xf4 \x1a\
+\x1d\xd7@c!\x1d\xcfS\x07\xaf\xb5\xb5M\xbd\xde|\
+?3\x13\xb9\x5c\x16FmA\x08\x87\x9a\x9aZ\xb4\xb6\
+\xb6\xc1\xe9t\x02\xd0\x09\xc3q\x1c$I\xc2\xb1cG\
+p\xf4h?d9\x8b\xf9\xf3\x17\xa1\xae\xae\xdeX3\
+\xf5\x1d\xf43\x0e\x87\xb8d\xf3\xe6\xcf\xed\xbc\xe0\x82\x0f\
+}\xf6\x92K.\xdc\x0b\x9d%\xefI\x12h\x99@\x83\
+\xfa7\x02\xef\x04\xe0\x02\xe0y\xfc\xf1\xe7\xf7r\x1c\xf1\
+_t\xd1\xea\xa2\x0f,o\x10\x87`j*\x86\xce\xce\
+C\x88F#\x008\x8d0\x0c\xfc\x96\x96\xd6<{\xcd\
+dpp\x10\xbd\xbd\x87\x91N\xa7A\x08\xd4\xe4\x0f\x05\
+>\x18\x0c\xa1\xa5\xa5\x05\xc1`H}\x9e\xf9\xde\xfe\xfe\
+\xa3\xe8\xed\xed\xc9\xd3\x16\x8d\x8dMho\x9f3m\xdd\
+eY\x8e\xbe\xf9\xe6\xebW_r\xc9\x85\xaf\xc3<~\
+\xf0\x9e\xca\x18Z[\xd5\x1a\xffk\xe1\x9f(\x0a~Y\
+V\xa6U\xffE\x1c}\x139\x98\x9364t\x1c\x0c\
+4\xb3g_\x8f\x96\x96V[\x8d\xa3\x9b\x894\xacn\
+\x8b\xcb\xe5\xc6\xdc\xb9\xf3\x11\x0a\x85L\xf7\xb0j\x0f\x0c\
+P\xdf\x22\x93I\x83j\x0bN\x8b\x0ejj\xea\xd0\xd0\
+`\x9f\xdf\xd0\xdf\x81c\x9f\xc1e\xcbV>\xbbk\xd7\
+\x1f\xafV5\x81\xd6\x04x\x0fi\x02;\x02\xe4\x85\x7f\
+\xcb\x97\x9f_I\x08\x01\xcf\x03\xb1X\x14\x81@H#\
+B9\xea_\x96\x81\x5c.\x8b\xce\xceC\x18\x1c\x1c\x00\
+\x05\x80W\x01\xd0S\xb7\xed\xed\xed\xf0z}y\xcf\x8f\
+D\x22\xe8\xed\xed6i\x0b\xaa)\xa0\xf9\x0755\xb5\
+\xb6\xf5\x8aD&p\xf0\xe0\x01\xa4\xd3)\xb0H\x97\xf6\
+|\x0e\xa1P\x08\xcd\xcdm\x08\x06\x03\xea\xbd\xc6w0\
+\xbf\x93\x85\x1c\xc1%K\x96\x1bI\xa0\xc0\x901,\xd8\
+0\xa7\x91\x08@^~\xdb\x98\x07\xe0\x01\x08\x17_|\
+\xf9\x22\x8e\xe3\xa0(\x0a:::\xb1h\xd1\x5c\x84B\
+!d\xb3Vm`~\xb8\x11\x84l6\x8b\xfe\xfe#\
+\x16[\xcdi\xe0;\x9dn\xcc\x9f?\x1f\x81\x00\xed\xb9\
+\xc6v\x8e\xc7\xa7\xd0\xd9y\x08\x93\x93\x11\xb5\x0c\x06>\
+ \x08\x02\x1a\x1b\x9b\xd0\xd0\xd0\x08\x96\x9a6\x0a\xcd\x03\
+\xf4\xa8y\x00=\x1cd\xe9\xe2Y\xb3f#\x1cf\xe9\
+b\xa5\xech\x85\xe3\xb8\xe0\x92%\xcb\x9f\xdd\xbd\xfbO\
+W}\xf8\xc3\x17\xec\x05\xcd\x18\xb2q\x83\xd3\xde\x14\x14\
+\xd2\x00&- I\xb2\xc0\xf3\x1cdY\x86\xa2\x10\x1c\
+8\xd0\x85\xc5\x8b\xe7\x22\x10\x08\x22\x9b\xcdi7\xd3W\
+\xb5w\x02h\xde\xbe\xc7`\xab)\xf8N\xa7K\xed\xb9\
+u\xea3t\x10R)=\x96\xa7\x9aWO\xf9\x02\x04\
+55uhoo\xd7\xfc\x03c[\xa7RI\x1c<\
+\xd8\x91\xa7-\x00\xa8\xe9\xe29\x9a\xb60\xcaLBY\
+B\xb8\xe0\x82\x05\x8b\x7fe \x01\xa0\xae98\xddI\
+`$\x805\x07\xa0\x91\x80\x90\x1cGU-\x05@\x96\
+ettP\x12x\xbd\x01\xe4r9\xc3ch\xd7\xb5\
+j\x83\xaa\xaa0\xce?\x7f\x15::\xdeB&\x93\x86\
+(\x8a\xa8\xafg=\xd7\xccCI\x92\xd0\xd5\xf5\xb6\x9a\
+\xc41\x12\x86\xf6\xfap\xb8\x1a\xb3g\xcf1x\xf6\xfa\
+\xbd\xe9\xb4\x9e\x07P\xa70h\xe0\x1b\xb5\x05\x0d\x075\
+\x07\xb8\xa4\xc6*\x86#\xc7q\xc1\xb6\xb69\x7f\x0f\xe0\
+3\xd6\xc68\x9dIP(\x13h\x1c\x02%\x8aB\xd7\
+T\x12BY\xcf\x88\xc0\xccA0\x18B:-\x99\x1e\
+`\xf7\xba^\xaf\x0f+W\xbe\x0f\xc3\xc3\x83\xa8\xad\xad\
+\x83 \xf0\xea\xb52\x00\x0e\xd9\xac\xa4\x9a\x09\x96\xf2e\
+\xc0P\x10\xa9\xadn\xd5<{\xab\x899v\xec\x08z\
+{{4\xdbN\x9dK\xfa:55\xf5\x98={6\
+x^\xc8\x8bTN4\x8c\x05\x80\xa1\xa1\x11\xfc\xe0\x07\
+\x8f\xb7=\xfd\xf4o\xce\xbb\xee\xba+\xacN\xe1iK\
+\x82bQ\x801\x12\xe0x\x9eh=\xcdH\x84\x83\x07\
+\xbb\xb1b\xc5b8\x1cN\xa4R\x92\xe1\x11\xba\x18\x1b\
+\x5c\x10x444\x020\x93\xa4\xb7\xb7\x1b\xc7\x8e\xd1\
+$\x0e#\x1bS\xfb.\x97\x0b\xb3f\xcd1\xd8j\xbd\
+\x1e\xcc\xb7`\xf72m\xc1\xfe\x1f\x0c\x860w\xee|\
+m\x9c\x00(=R\xa1e\x15'G6\x9b\xc5\x13O\
+\xfc\x1a\xcf>\xbb\x1b\xb7\xdd\xb6\xee\xc2U\xab\x96\xef\xee\
+\xee\x1e\xd8\xde\xde^\x7f\xab\xf11\x00\xe4\xd3\x91\x04\xc5\
+\x12A\xdaA\x88B\x08\xe1\xc1\xf3\x0a\x14E\xce#\xc2\
+\x9bo\x1e\xc0\x8a\x15\x8b\xe1r\x89H&\xa5\xa2c\xed\
+V\x19\x1a\x1a0\xc4\xf2\xc4`\xab9\xf0<\x8f\x96\x96\
+6\x8d0\x86\xa5|\x00h\x1e\xa0\xab\xab\x13\xd9,u\
+*\xd9}\x84\x105\x0f\xd0\x86`\x90.J*\xd4\xee\
+3\x0dc9\x8e\xc3\xab\xaf\xbe\x8e\xef\x7f\xffq\xac^\
+\xbd\x02\xdf\xfd\xee6x<\x1e\x002\x9cN\xef\xba\xee\
+\xee\xa1\xe0\x8e\x1d\x8f~\xe6\xce;\xbf\xc8\x86\x929\x9c\
+\x86$\x98n0H\xfdT\x08\xc7\x11\xb5\xe7\xe5\x13\x01\
+P\xf0\xc6\x1b\x1dX\xbe|\x11\x02\x017&'\x936\
+\x8f\xcb\xcf\xaa\xa5\xd3)\xf4\xf7\x1f1\x80O\x8b\x13\x04\
+\x11\x0d\x0d\xcdhll\xd4\xcc\x04\xa0\xf7|6N`\
+$\x0d@Aq\xb9\x5chiiU\x1d<\xce\xd6\x14\
+\x99\xf3\xfc\xe5\x85\xb1\x1cG066\x8e\x1f\xfe\xf0q\
+\x0c\x0e\x8ea\xcb\x96\xcf\xa1\xad-_\xa3\x89\xa2\xfb\xea\
+\xb5ko\xdc\x09\xe0#\xa73\x09\x0ai\x00\xcbw\x1e\
+<O\x09 \xcb\xb0%\x82\xa2(\xd8\xb7\xaf\x03\xcb\x96\
+-B0\xe8F4\x9a\xb0y\x9c\xb9\x91\x1c\x0e\x17\x96\
+/?\x1f\xdd\xdd\x9d\x18\x19\x19\x04@PWW\x87\xe6\
+\xe66[\x07/\x12\x99@ww'\xe2\xf1\xa9<m\
+!\x8afmA\xcb\xb1wH\x8bE+\x85\xc8A\xb5\
+\x9d\x8c\xa7\x9f\xde\x85'\x9f|\x1e\xd7_\x7f\x05\xee\xb8\
+\xe3\xb3\x86|\x08-\xcfL\x02q\xe9\xda\xb57\xee\x94\
+$\xe9\xaa{\xee\xb9c\x14\xa7!\x09\xec\xa2\x00\xab\xa8\
+&\x80\xe67x\x1eE\x88\xa0`\xdf\xbe\x83X\xbat\
+\x01\x02\x01\x0f&'\x93\x06O\xdb\xf6\xd1\xe0y\x1e\xf3\
+\xe6-@UU5\x9cN\x17\xbc^:\xbd\xdc8\x85\
++\x12\x99@__\x0f&'#`\xaa\x9ei\x0b\x80\
+\xd3\x80\xe7y^\xed\xa5\xe6R\xec\x9b\xb9tr8\x9d\
+<\xfe\xfa\xd7\x03\xf8\xeew\xb7\xa3\xa9\xa9\x0e\xdf\xfb\xde\
+\xdd\xf0z=\x05\xc1\xa7\xa4\xa5\xf3\x22\x05A\x5c\xbai\
+\xd3\xad\xfbW\xaf\xfe\xe0UW^\xf9\x81\xd7\xa1\xcf,\
+R\x08!\xf4\xcaw\x91\x08\xc5L\x80Ih\x22\x88\xa8\
+/]\x9c\x08\xfb\xf6\x1d\xc2\xd2\xa5\xf3\x11\x0e{16\
+\x16\xd7&\x89\xe6\x8bN\x8e\xca\xcaJ\xd39\x80 \x9d\
+N\xa1\xb3\xf3\x10\xc6\xc6\xc6\x0cy~]\xe5\xd7\xd4\xd4\
+\xa3\xb5\xb5U\xd3\x16\xec\xdeb>G9\xe4p8\x04\
+D\x22\x11|\xfb\xdb\xff\x8d\x8e\x8e\xc3\xb8\xfd\xf6\x1b\xb1\
+x\xf1<\xf5\xbe\xe9\xc1gu\x22\x84\x0b\xce\x9b\xb7\xf0\
+W\xbf\xf8\xc5\xcbW\x7f\xecc\x1f2\x8e\x1d\x10\xbc\xcb\
+i\xe3\x92\x86n8\x8e\xd3\x06L\xe8w\x1el\x02&\
+\xcf\xd3C\x1fP\xe1\x01(\xd8\xbf\xff\x10b\xb18\xc2\
+a/\x00R\xd6\xcc`\x9a\xc4y\x0b{\xf6\xfcA\x05\
+\x9f^\xc7\xc0\x0f\x06CX\xb1\xe2|\xcc\x9d;\x0f\x0e\
+\x87\xb3\xac\x99\xc5\xa5\xcc\x0c\xe6y\x1eN'\x8f\x9d;\
+_\xc2M7\xdd\x89\x86\x86:<\xf8\xe07\xb0ti\
+\xf9\xe0\x1b\x93EK\x96,y\xf6\x0f\x7f\xe8\xf8\x18h\
+\xc7c\x11\x96\xeah\x97\x18o\x9ed)C\x03\xe8y\
+\x00Yfqma\x8d\xa0(\xc0[o\xbd\x8d\xc5\x8b\
+\xe7\xa1\xaa\xca\x8bH$\x0eI\xa2\xadl7\xd6\xce\x84\
+\x10@\x92r\x18\x1d\x1d\xd5F\x04\xe9y\x02\xaf\xd7\x8f\
+Y\xb3\xda\x11\x0c\x06U\xd5m\xd7iJI\xe5\xda\x9b\
+%B\x08\xdcn'\xba\xbb\xfbp\xff\xfd\xff\x85P(\
+\x80\x1f\xfc\xe0nTW\x87\x01\xd8E\x08\xa5\x81O?\
+\x15\x10B\x82\xf5\xf5\xf5\xdb\xf7\xec9\xf8\xb9\xd5\xab\x17\
+<\x02=m\xfc\xae\xe5\x0a\x8c\x04\xb0+X\x01\xa0\xf0\
+<\xaf0\x1f\x80\xcd\xae)\x8d\x08\x8aJ\x82\xf9\x08\x87\
+\x03\x18\x19\x89\x19R\xc7\xf6 (\x0aM\x18\x9dw\xde\
+*\x1c8\xf0\x16\x12\x898\x5c.\xb7\xc1\xb3\xd7\xaf\xb3\
+\x97\xc2\xf3\xfb\x0a\x91\x83\x02/\x22\x99L\xe2\xdb\xdf~\
+\x0c/\xbf\xfc\x17\xdc~\xfb\x8dX\xbdz\x85\xd6\xdb\x19\
+\xf8\xe6\xdeo.\xb7\x18\xf8:Q\x14TW\xd7|o\
+\xcf\x9e\x83PI\xa07\x06\xdey\x12\x105\xf7n\x1a\
+\xfc\x81>\x0f@\xdb5\xf4\xd5W\xdf\xdaMU(\xcb\
+\xdc15K_J\xff[1\xfd\x9f\x85N\x0b\x17\xce\
+C(\xe4\xc7\xc8\xc8$\xb2\xd9\x22\xc1\xb6\xb1r\x04\x18\
+\x1e\x1eDee\x95a>@>\xba\xe5(O\xeb\xb5\
+.\x97\x08\x87\x83\xc3s\xcf\xed\xc1\x0f\x7f\xf8\x04.\xbd\
+\xf4o\xb0n\xdd5&'\xcf\x1e\xfc\xc2\xbd\xdf|\x9d\
+\x19|\xfd<\x90H$~\xba|y\x93u=\xa2B\
+\x1f\xf1\xce\x90\xc0J\x00\x0e\x80\x08\xc0\x01\x0b\x01^x\
+\xe1\x95\x87\xfd\xfe\xc0lfW\xcb%\x02@\xb0x\xf1\
+<\x04\x02~D\x22\x09\xc4\xe3\xf9\xfbM3u_R\
+\xc5\x0bD\x15\xa5]G\x1d<\x9f\xcf\x85\xae\xae^|\
+\xf3\x9b\x0fC\x96e\xdc~\xfb&\xcc\x9a\xd5d\xa8s\
+\xf9\xe0[{\xbf\xfe\x1c3\xf8\xacm\x12\x89\xe4\xf6\x15\
++\x9ao\xc5\xbbD\x02;'\xd0\xe85i\x0b${\
+{\x0f\xbf\xc2ql\x08\x97S\xa7jq0\xae\xc61\
+:\x83Vg\x91\x10\xa0\xa3\xa3\x0b\x93\x931\x84\xc3\x1e\
+x\xbd\xce\xbc\x82\xa9\x83f\x7f\xe4U\xb2\x80\xe3gu\
+\xfat2B\x0d\xcb8\x84B\x1e\x88\x22\xc1\xb7\xbe\xf5\
+0\xbe\xf6\xb5\x7f\xc7\x9a5\xef\xc7w\xbes\x97\x06\xbe\
+^\x1fV\xd6\xcc\xc0\xb7ZU+\xf8\x8a\x02\xb8\xdd\xae\
+uo\xbc\xd1\xff\xf8\xb6m\xf7\x87aH\xbd\xe3\x1dr\
+\x0c\x8d\x04P\x0c\x9fF\xf0s\x00r\xdb\xb7\xff\xe47\
+\xb9\x5c.\xce\xf3\x14\xfc\x99\x10\x01\x90q\xe0@7&\
+'S\x08\x87=\xf0x\x0ay\xf0\xf9\x15-\x95\x1c\x85\
+\x9eG\xc7\x05\xdc\xf0\xfb]x\xf9\xe5\xd7\xb0v\xed\x97\
+0>\x1e\xc5\x0f~p/>\xf6\xb1Ka\xeclv\
+\x1d\xafT\xf0\xd3\xe9$\x0e\x1d:\x80\x97_~\x11\x83\
+\x83\x83Z\xdd\xed\x9fG\xcf;\x1c\xce\xab\xaf\xbf\xfe\x86\
+_\xab$`\xeb\x11\xd9\x9c\x82SJ\x04\xa3\x09\x00\xf4\
+Y@\x22\xa8\x1f\xe0\x86n\x06\x82\xff\xf2/\xffv\xdd\
+\x95W^\xf3y]\xad\xc9y!W)\xa6A\x10\x04\
+,X0\x07\x81\x80\x1bSS\x19\x8c\x8e\xc6\xa0\xcf\xdb\
+/\xa1\xd2e4\x07\xcf\x13x\xbdNx\xbd\x0etv\
+\x1e\xc1\x03\x0fl\xc7\xd0\xd0\x18\xbe\xf0\x85MX\xb2\xc4\
+\x1c\xd6\x19\xbf\x17\xeb\xfdv\xe0KR\x16G\x8e\xf4\xa0\
+\xbf\xbf\x9f\xd5\x12\x1c\x07\xb4\xb5\xcdF]]\x93m\xef\
+g\x04`\x0es6+\xed{\xf2\xc9G\xaf\xbc\xe7\x9e\
+\xaf\x8cC\xdf\xc0J\xad\x86rJ\xf2\x05V\x02\x18\xa7\
+\x82;@\x09\xe0\x01%\x80\x1f@\xf0\xde{\xef\xbf\xe6\
+\xdak?\xfe\x19\xb3}+\x9f\x08\x0e\x87\x03\x8b\x17\xcf\
+\x85\xcb%j$(X\xc9\x19\x92\xc3\xe3q \x10p\
+!\x93\xc9\xe0G?\xfa9~\xf1\x8b\x97p\xfd\xf5W\
+`\xfd\xfak\xf2\x1c6\xe3\xf7rT\x7f.'\xe1\xe8\
+\xd1~\x1c;vDsn\xd94v\x00\xa8\xabkD\
+k\xebl\xf59\xf6\xe0\x1b\xcb\xca\xe5r\xd1\x9e\x9eC\
+\x1f\xb9\xf6\xda\x8bY\xd6\x90icE\xbd\xee\xe4\x13\x00\
+\x80]$ \x82:\x82n\x00>\xe8$\x08l\xdbv\
+\xdfG>\xfe\xf1O\xde\xcc\x1aa\xa6D\x10E\x07\x16\
+/\x9e\xa3\x91`l,\x0eY\x96\xcb\xf4\xea\xf3\xc9\xe1\
+t\x0a\x08\x85\xdc\xe08\xe0\xe5\x97\xff\x8c\xef\x7f\xffq\
+\xd4\xd6V\xe3\x0b_\xd8\x84\x9a\x9aJ\xb5.'\x0e\xfe\
+\xd0\xd0 \xba\xba\x0e!\x9b\xcd\x19\x1cX\xfaYYY\
+\x85\xd6\xd6Yp8\xd8\xaa\xa5\xe9\xc1g\xff\xcb\xe5\xe4\
+\xe8\xa1C\x1dW}\xf2\x93\x97\xee\x85\xc1\x0f\xc3) \
+\x81\x1d\x01\xd8L`\x16\x0e\xbaa&A\x00\x80\x7f\xeb\
+\xd6\xaf_\xfew\x7f\xb7v\x13\x03z\xa6Dp:\x1d\
+X\xb8p\x0e\xdcn\x11\xe9t\x0e\x03\x03\x11\x95 \x85\
+\x13E\x85D\x10xTVz\xe1t\x8a\xe8\xef\x1f\xc0\
+\x03\x0fl\xc7\x9bov\xe2\x8b_\xbc\x09\x17^\xb8B\
+\x9b\xd0\x99\x1f\xae\x95\x07\xfe\xe0\xe0 \xfa\xfa\x0ek\x8b\
+WX]\x09\x01\xfc\xfe\x10\x9a\x9b[\xe0\xf7\x07\xa7U\
+\xfb\xf9e\xe9f%\x9b\x95\xa3\xc3\xc3\x03\xb7]~\xf9\
+yO\xc1\xac\x09\xd4\xdbN\x0e\x09\xec\xd6\x05X\xcd\x80\
+\xd1\x17`\xfe\x80\x1f\x80o\xcb\x96\xaf\xff\xed\xa7?\xbd\
+v\xa3\xd1\x03\x9f\x09\x11\x1c\x0e\x11\x8b\x16\xcd\x85\xd3)\
+ \x93\xc9\xe1\xf8\xf1\x88\xad\xe3d\xa8\xb6\xe9/\x8e\xe3\
+\x10\x0a\xb9\x10\x08\xb8\x91Lf\xf0\xf0\xc3?\xc7SO\
+\xbd\x80+\xaf\xfc \xd6\xaf\xbf\x16>\x9f\xa7 \xf8\xc6\
+\xef\xcc\x16\xeb\xd7\x99\xc1g\x13L\xe9\xa0\x14X\xbb\x01\
+ p:]hnnEuu\x8dm\xc8788\
+\x88#Gz\x11\x0a\x85\xd0\xde>\xdfT\xae\x15|Z\
+UZ\xf6\xf8\xf8\xc8mk\xd6,{\x18\xa7H\x13\x98\
+\xb6\x88\xb1\xd1\x02,'\xc0H\xe0\x03%\x01\xd3\x06\xbe\
+\xbb\xee\xba\xf7\xd2O\x7fz\xc3\x0dF\xb0gB\x04Q\
+t`\xd1\xa29\x1a\x09\x86\x86bH\xa7\xe9\x1a\xccb\
+\x8bMB!\x0f\xfc~7\x14E\xc6_\xfe\xf2\x16\xbe\
+\xf9\xcdG\xe0\xf1\xb8\xf1\xc5/n\xc6\xec\xd9\xcdZ\xf9\
+\xb4\x1ch\xe51)\xd6\xfbY\xfdb\xb1)tw\xbf\
+\x8dH\x84\x8dF2\x0dE\xe7\x19\xd6\xd77\xa2\xa9\xa9\
+E}\x8e\x19\xfcHd\x1c}}\xbd\x88F#\xda\x0c\
+\xa7`0\x84y\xf3\x16\x80\xe3\x84\xa2\xe0\xab5\xc2\xf8\
+\xf8\xe8mk\xd6,c{\x1c\xb3-n\xd5\xea\x9e\x18\
+\x09\xec\x08@ki\xd8\x11\x04zf\xd0\xa8\x09|\xea\
+\xe1\xdd\xb2\xe5\x9e\xcb\xd6\xae\xdd\xb8\x81\x02;s\x22\x88\
+\xa2\x88\x85\x0b)\x09d\x198v,\xa2\x91\xc0*\x81\
+\x80\x13\xa1\x90\x0f\x82@p\xfc\xf80\xfe\xf3?\xff\x1b\
+{\xf6\xbc\x89\x8d\x1b\xaf\xc5u\xd7\xfd\xad\xa9L\xdaR\
+Z\x8bi\xcf\x98N\xf5\xd3\xfd\x08z\xd45\x0c\xe6\x09\
+\x22\x84\x10\xd4\xd77\xa1\xa9\xa9\x19</\xa8\xcf\xd1\xef\
+\x8f\xc7c\xe8\xea\xeaTg%\xeb\xf3(\x09!p8\
+\x9cho\x9f\x0b\x9f/\x88\xe9\xc0g\xdfS\xa9\xd4O\
+\xdf\xff\xfe\xd9\xb7\xc2\xbc\xbd\xad\x82\x13$A\xde&Q\
+\x16-`t\x08\xb5eb\xd0\x89`$\xc1\xa5\xeb\xd6\
+m\xdc\xc0\x18=S\x22\x88\xa2\x13\x0b\x17\xce6\x91\x80\
+\xce5\xa4\xe2\xf18PQ\xe1\x85\xdb- \x93\x91\xf0\
+\xd8c;\xf1\x93\x9f<\x83\x95+\x17\xe1K_\xda\x0c\
+\xaf\xd7ciT\xb9l\xf0\xb3Y\x09G\x8f\x1eA_\
+_\x0fk\x15\xd66\x00\x80p\xb8\x0amm\xedp8\
+\x1c\x86r\xe8\x97T*\x89\xbe\xbe^\xdb\xa9\xec\x82\xc0\
+\xa3\xb6\xb6\x09\x8d\x8dMZY\xac\xae\xc5\xc0g\xd7\xa5\
+R\xc9\x9f\xae^=\x87\x91\xe0\xa4d\x0d\x8b\x11\x80\x1d\
+L\x0b\x18I`\xd4\x04\x8c\x08\xde\xbb\xee\xfa\xfa%k\
+\xd7\xde\xb0\x81\xd9\xf6\x99\x12A\x10D\xcc\x9f?\x1bn\
+7%\xc1\xc8H\x0c\xc9d\x06UU~x\xbd\x0e\xe4\
+r\x0a^\x7f\xbd\x03\x0f<\xb0\x03\xb1X\x02_\xfa\xd2\
+f,_\xbe\xc0F\x9d\x96\xe7\xf4IR\x16\xfd\xfd}\
+\xda\x0ac\xc08\xf1\x84N0mjjE0\x18\xb4\
+\x80\xa7 \x97\xcb\xa2\xb7\xb7\x07\xc7\x8f\xb3_\xd33\xce\
+J\x06\xea\xeb\x1b\xd1\xd8\xd8\x0c\x8ec3\xa1\xadu\x05\
+t\x02\x14\x1eLJ\xa5\xd2\xcf<\xf3\xcc\xd3\xb7\xdew\
+\xdf\x17X\xae\xe0\x844\x81\xed6q\x16\x12h{\x04\
+\x80\xfa\x03l\x9c\x80\xe5\x08\xf2H\xb0n\xdd\x0d\x1bt\
+`\xe9\x0b\x94K\x04\x9e\x171o\x1e%\x81Q\x06\x06\
+\xc6\xf0\xe8\xa3\xbf\xc4\xd3O\xef\xc2\xc6\x8d\x1f\xc3\x86\x0d\
+\xd7\x16h\xd0\xf2\x9c\xbe\xc1\xc1\xe3\xe8\xed\xedA2\x99\
+\x84\xfe\xfaT\x5c.\xb7\xe6\xe0Y\xcb\xa2S\xd9\xfb\xd5\
+\x15O9\xb5\xfd\xa0\xdd_Y\x19Fk\xeblu\xde\
+B\xbe\xd37<L\x9d\xc3\xa6\xa6VTW\xb3\xd1N\
+\xf3\xc0\x92U\xcbH\x92\xb4\xef\x97\xbf|\xea\x0a\x03\x09\
+f\xec\x18\x16\xdc'\xd0\x86\x04VM\xe0\x04%\x00#\
+\x01s\x10U\x12P\x9f\xe0D\x88\xe0v;1wn\
+;\x04\x81\xce\x11\xd8\xb5\xebU<\xf0\xc0chn\xae\
+\xc3\x97\xbf\xbc\x1955\xc6i\xe2\xe5\x83\x0f\x00##\
+\xc3\xe8\xeaz\x1b\xa9T\x12\xc6y\xb0\x84\x00</\xa2\
+\xa1\xa1\x11\xcd\xcd-\xb6=rpp\x00]]oC\
+_/\xa8\x9b\x8a@ \x88\xa6\xa6f\xd5\xce\xe7{\xfc\
+\xa3\xa3\xa3\xe8\xe9\xe9B:\x9d\xd6\xeemkkG]\
+]]\xc1\xdeO\x17\xe7\xd2\xef\x99Lz\xdf\xb3\xcf\xfe\
+\xe2\x84IPt\xa3H\x8b?`\x0d\x0fY\xa6\xd0N\
+\x13x\xb6n\xfd\xe7K\xd6\xaf\xdf\xb8\x81\xb2v\xe6D\
+\x10\x04\x11\xbbw\xbf\x8e?\xfc\xe15\x8c\x8fO\xe2\xcb\
+_\xbe\x19\x17^\xb8\x12\x85{Ii\xe0\xd3\xfd\x08\xba\
+U\xcf^{_0\x9bM\x81o\x05\xcfsy\x80\x8c\
+\x8c\x8c\xa0\xbb\xbb\xd3\x04\x1eS\xf5.\x97\x0b\x8d\x8d-\
+\x9a\xb60\x9a\x19E\x01\xa2\xd1\x09\xf4\xf5\xf5\x22\x16\x8b\
+j\xf7\xb2\xb2=\x1e\x0f\xe6\xce]\xa8\xcdr\xb2\x82o\
+~/\x19\xb9\x9c\x1c\x1d\x188~\xf9'>q\xe1\xeb\
+\xa0\xe0\xe7\xd4\xb2N\x0e\x01\xd4\x8aYM\x81\xddx\x81\
+\x91\x04>\xf6}\xeb\xd6\x7f\xbed\xc3\x06\xea\x18\x9e\x08\
+\x11>\xff\xf9\xff\x0d\x00\xf8\xd9\xcf\xbe\x85P\xc8\x0f\x14\
+\xb1\x91\xd39}\xc9d\x12\x1d\x1do\x19\x80'\x86\xe4\
+\x12\x87p8\x8cY\xb3\xda\xe1p8M\xf7)\x0a\xb4\
+\xc9\xa9\xec^=*\xd0\xc3\xc1\xc6\xc6f\xc0&\xd9\x93\
+N'\xf1\xf6\xdb\x87\xb4\xa8\xc0X\xae\xc3\xe1Fcc\
+\x13\xaa\xaa\xf2M\x0c}N>\xf8\xecoY\xceE\x07\
+\x06\x06.\xff\xc4'.dY\xc3\xb2|\x81R\xa7\x84\
+)\xd0cO\xf67}\x8bB);\x00\xf7\xde{\xe7\
+.\x8e\x03\xd6\xad\xdb\xb4\x81\xe7\xe9\xc2RYV\xb4\x19\
+E\x8a\x02\xd5)bD \x00\xf4\xff\xb3\xd0IQd\
+\x10\xc2\xe1\xad\xb7\x0e\xe2\x82\x0bV\x18\x16\x83\xd2\xaaX\
+{\x7f^\xe5\x15\x05\xc9d\x12==\x87\x0d!\x1d\xab\
+>\x00\xb0%\xe2-\x08\x04\xf4\x0c\x1e{\xcdd\x92\x8e\
+\xf0\xe9;\x8d\x99ME]\x1d\xcd\x03\xf0<\x0f+\xf8\
+\xa9T\x02}}\xbd\x18\x1e\x1eR\xcb5\x93\xa6\xb6\xb6\
+\x01uuu\xe0\xb8B\xefT\x18|@\x01\xc7q\xc1\
+\xda\xda\xfa\xe7~\xfc\xe3\x9f\xbdo\xe3\xc6O\xf5\x00\xe5\
+M2\x9d\x96\x00\x8a\xa2\xb0\x1f[d\xde&k\xe5\x1c\
+\x80\xcc4\xb7\x93\xbb\xef\xbe\xf3EE!d\xc3\x86M\
+\xeb\xa9sW>\x11\xd8\x8bOM\xc5\xf1\xa7?\xbd\x81\
+\x0b.X\xae\xc6\xde\xa5\xa9~\x80\xf6\xde\xd1\xd1Q\xb0\
+Q:\xa6\xea\x9dN'ZZ\xdaPUUkz\x1e\
+h\xd8\xa5\xe6\x01\xe8\xb0.\x03\x8f\x91\xa7\xba\xba\x16\xcd\
+\xcd-&\x95M\xebB\xf7A8v\xec(\xfa\xfaz\
+M\xf72\xd2UW\xd7\xa0\xa5e\xb6F\x1a\xd6\x0e\xe5\
+\x80\xcf\xca\xcaf3AA\xf0\xce\x02\xd0\xab\x16pr\
+5\x80\x81\x04Z\xdci\xf8\xb7d\x7f\x97.\xf7\xdc\xb3\
+e\x17\xc7\x11e\xfd\xfa\x1b7(\x0a}\xe1r\x88\x00\
+@\x9d\x7f@05\x15\xc7k\xaf\xbd\x81U\xab\x96k\
+!U)v\xbf\xb6\xb6\x01^o\x00\x87\x0eu \x1e\
+\x8fC\x14y\xd4\xd55\xa3\xa5\xa5%ox\x97\x8e\xf0\
+\xd1-d\x98\x92\xb3\x86\x83\xcd\xcd\xadj\xbe_6\x01\
+\x22IY\x1c?\xde\xaf\xaeU\xcci\x93a\x14\x85~\
+\x06\x02!\xcc\x9a5G31f\xd2\xe9R*\xf8\xb4\
+\xcc$$)\xa3\xedg\x5c\x8e\x94<+\xd8\xa2\x09\xac\
+\xbaV\xb1\x14\x9eW\x91m\xdb\xbe\xf6\x22\xa0\x90\x1bn\
+\xd8\xbc\x9e\x86_\xa5\x13\x81\xe3xu\xfa9\x0fYV\
+05\x95\xc4\xde\xbd\xfbq\xdeyK\xb4\xa2J\xf1\xf8\
+\xbd^/\x96-[\x89\xa1\xa1\x01\xd4\xd4\xd4i\x0bI\
+\x18\x08t\xa7\xb1>\xf4\xf7\x1fA.'\xe7\xf5Z\x97\
+\xcb\x8d\xb6\xb6\xd9\xa8\xa8\x08\xab\xcf77\xc3\xe0\xe0\x00\
+\xfa\xfaz\x0d;\x9c\xe9\xf7z\xbd~\xb4\xb6\xce\x82\xdf\
+\xef7i\x99B\xbe\x8c\xb9\xed\x8b\x0f&\xa5\xd3\x09\x16\
+\x822\x93\x5c\xb2\x19(\x99\x006b%AF\xab\x9d\
+.&\x22l\xdb\xb6e\x17\x00l\xdc\xb8y=u`\
+J#\x02\x9da\xc4\xab3\x8c\xe8\xb3&'\xa7\xd0\xd1\
+\xd1\x89\xa5K\x17h\xe3\xf0\xa5d\xfax^@CC\
+c^C\x0f\x0d\xd1<@*\xa5{\xf6\x00\x1d\x87\xe0\
+y\x11\xcd\xcd\xad\xa8\xabk\xb0\xed\x91\xd1\xe8\x04\xde~\
+\xfb\x00\x92\xc9\xb4\xc1G`\xa4\xa1QA8\x5c\x8b\xe9\
+2}\x85T\xbfU\x8c\xef\x94\xc9$\x91\xcdJ\x90$\
+I[c`\x7f\x97\xbd\x94E\x00\x8b\x16`&\xc1Z\
+ \xb1|\x9a\xbeo\xdbF\xcd\xc1\x0d7l\xde`\x9c\
+^^\x8c\x08\x82\xc0\xc0\xd7\xa7\xa0\xf3<0::\x8e\
+\x03\x07\xba\xb0p\xe1\x5cH\x92>f0]\x8e_o\
+h:Xs\xf0`\x87\x01x\x98\xc6\xf6\x19\xf0</\
+\xe4\x81\x1f\x89D\xd0\xd7w\x18\xd1(\x0d\xe9\x8c>\x82\
+ \x88\xa8\xabk@mm\x03\x04A0E'\xe5\x80\
+o\xd7\xfb\x8d\x92\xc9\xc4!\xcb\x0a$I\xb6\xb6\xf7\xc9\
+q\x02\xadR\x80\x04y\x97\x15{\xc6]w}\xedE\
+EQ\xc8\xc6\x8d7\xad\xb7\xae3\xb0#\x02\xb3\xff\xc6\
+\x06f\xfe\xc1\xd0\xd00\x08\x01\x16,\x98\x03I\xca\x95\
+\x05~*\x95DWW'2\x99\xb4a\x16\x0f-\xa3\
+\xa6\xa6\x0eMM-p\xb9\x5c\xa6\x04\x8c\xa2\xc8H\xa5\
+R\xe8\xee\xee\xc4\xd8\xd8\x08\xcc>\x02\x00p\xa8\xae\xae\
+Ak\xeb,\xc3 \x91\xb5\x0d\x8d\x9f\xe5;}\xfa{\
+)H$\xe2\xc8\xe5d\xa8\xbb\xd7\x9e:\x1f\xc0(6\
+\x91\x81\x9d\x14RG\x04\x00\xd9\xbau\xcb.\x80\xc3\x8d\
+7\xde\xb4\x1e6\x0bN\x8cD\xe0y\xa6\x01\xf4-j\
+\x00\x9d\x08\x83\x83#\x00\x80\x85\x0b\xe7\x9av*)\x06\
+>\xa0\xc0\xe9ta\xc5\x8a\xf3\xd1\xdd}\x08CCC\
+\xda\xb2\xb3\xa6\xa6V\x04\x02A\xf5Z\xfd\xf5\x92\xc9$\
+\x8e\x1c1\x8e\x0e\xb2qj\xfa\x19\x0c\x06\xd0\xde>\xcf\
+\x10\x15\xd8\x0f\xf2\x98\xdb\x92]W\x1e\xf8<O\x10\x8b\
+E\x90\xcd\xe6\xa0(2\xb2\xba\x02<u&\xc0\x5cq\
+\x8d\x04\x80\xbd\x16\xb0\x13v\xbd\x02\x00[\xb7~u\x17\
+@\xb0i\xd3M\xeb)X\xf6D`k\x13\xd9\x1e\x05\
+vD\x18\x1a\x1a\x05\xc7\x11\xcc\x9f\xdfn;\x84l\x05\
+\x9f\xfd\xcd\xf3\x1c\xe6\xce]\x88`\xb0\x12\x1c\xc7#\x1c\
+\x0e\xe7\x81\x22It\xfb\x19:H\x9438\x87t\x1b\
+[r\xfcT\x05\x00\x00\x11\xd0IDAT\x8f\xc7\x8b\
+\xb6\xb6\xd9e\x0d\xef\xda\xa9\xf4R\xc1\xa7\xdaPA,\
+\x16\x81,\xe7\xd4\xb6\x92\xca\xb6\xff\xc0\x899\x813%\
+\x01\x13\x02\x00[\xb7\xde\xb1\x8b\xe3\x00j\x0ex\xd8\x11\
+\x81M57\x9b\x80|\x22\x0c\x0e\x8e\xc0\xe1p`\xd6\
+\xac\x16$\x93\x92Z\xc7\xfc\xaa\xd9\x01B\x07b\xf2\xd5\
+qo\xefam\xfb\x19\xa6\xeaY\xb9N\xa7\x0bMM\
+-\xa8\xaa\xaa\xb1Q\xe7\xb4\xdcr\xec~~\x1d\xed\xc0\
+\xa7s\x1eGF\x8e#\x93\x91\xb4\x0c\xab\xea\x03\xbc\xb3\
+\x04P+\xa5\x00Z\xcaX\x1b\x90(G\xee\xbc\xf3\x8e\
+\x17\x09\x01n\xbc\xf1\xe6\xf5\xb2\x0cX\x89\xc0\xf3\xbc\xaa\
+\x01x\x00\xf9[\xd4\xb0|\xbd,\x03G\x8f\x1e\x07!\
+@[[+\x92\xc9\x0c\x14%\x97\xd7\xfb\xf3\xdf\x81\x9e\
+7\x02B\xb7\xae\xe9Qw+\xd7w*\x03h}\xea\
+\xeb\x1bQ_\xdf\xa8\xe5\x22\x8c2\x13\xf0\xad\xbd?\xbf\
+\x8e\x14|\x97\xcb\x81T*\x8eh4\x02\xb6s+\xbd\
+'k\xffr\xd3\xc8\x09\x13\xc0PA\xa3_\x90\x9b\xe6\
+\xf2<\xa6n\xd9r\xc7\x8b\x00\xb0i\xd3-\xeb\x15\x85\
+\xce\x0b`D\x10\x04}\xd1\x89\xa2\x187\xa4\xa0\xaa\x90\
+9\x84ta*\x87#G\x06A\x08\x87\xb6\xb6f\xc4\
+\xe3i\xe8\xdb\xd9\xd8\xaf\xe21\x8a,+\x18\x1b\x1bA\
+WW'd9k\x99\xd4A5Ek\xebl5*\
+0\x82g\xff\xbc\x13\xf5\xf8\x8dd\xa7\x0bid\x0c\x0c\
+\x1cC6+\xc3\x98\x84\xcaM\xd7\xe2\x05\xe4\xa4\x11\x00\
+\xc8#A!\x93P(l\xc4\x96-w\xbc\x04\x00\x9b\
+7\xdf\xb2^]%\x0bYfK\xd3i>\x80\xfa\x05\
+\x80\xbe!\x05\xc0\xb4\x82\xa2@3\x1dT\x13\x10\xb4\xb6\
+6!\x1eOk\xb6R\xadiAP\x00\xba\x0f\xe1\xf2\
+\xe5.tt\xec\xd7\xf6\x14\x0e\x04\x82\x9a\x83\xa7\xbe\xab\
+\xed\xfd\xf9\xbd\xdf\xd4B3\x02\x1f\x00\xbc^'8\x8e\
+C__/\x92\xc9\xa4v\x9d1B\xb1i\xdbi\xe5\
+\xa4\x12\x000\x91\xa0\x98O`m\x1e#\x09^\x048\
+\xdct\xd3-\xeb\xe9 \x10\xcd\x00\xa6R\xa3\xeaw\xa3\
+\x83\xc8\xcc\x00\xfbM\x01\xb3y8z\xf488\x8e\xa0\
+\xb9\xb9\x11\x89D\x06\x99L\x16\xa5\xf6H\xaf\xd7\x8f\x15\
++\xde\x87\xa3G\xfbPYY\x89@ X \xb4,\
+\xc7\xee[\xdb\x8a}\x16\x06\x9f\xe7\x09|>\xba\xb6`\
+p\xf08\x22\x91\x88\xda1\x8c#\xab\xb2i\xc7\xd6r\
+\xe4\xa4\x13\x00(Y\x13h\x97[>\xb1e\xcb?\xbd\
+\x08\x007\xddt\x8b\x9a'P\x90J\x0d\x80\xe3t\xdf\
+\xc0H\x04\xa00\x11\x8e\x1c9\x06B(\x098\x0e\x16\
+\xe7\xb0x\x8f\x14\x04\x1emm\xb3\x8dU;\x01\xf0\xcb\
+w\xfa\x5c.\x01\x1e\x8f\x03\xb2\x0c\x8c\x8d\x8d\xe2\xf8\xf1\
+\xe3\xda,&\xdd\xf6\x9b\x9e\xf7\xee\xf9\x00VQI\xc0\
+\xfe4N\x99\xb1\x9f\xe6\xab\xde\xc6\x8e-[\xfei\x17\
+\xcfs\xca\xe6\xcd7oH&G\xc0\xcf?j\x88\x02\
+\xca#B_\xdf1\x08\x02\x8f\xc6\xc6:5\x01$\xe1\
+D\xd4\xb1\xfe\x8e0\xfc\xef\xe48}\xcc\xe4\xf9\xfd.\
+8\x1c4\x838>>\x82\xc3\x87{4\xe0\xd9}\xba\
+\x13X\xa4E\xa7\x91SF\x00\xa0 \x09Xu\xa7\xb3\
+W\xca\x1dw|i\x17!\xc0\xd4Td\xc5\xa4\xd4{\
+\x84\xe3\xc8U\x80\x11\xec\xd2\x89\xd0\xd7w\x0cN\xa7\x88\
+\xeaj\xfa\x9bG\xc9$\x1d\xc9.?\xfbf\xfe\x9fM\
+\xb5O\xc8\xe9s\xbbE\x04\x02n\xed\xfa\xe3\xc7\x87\xd4\
+!e\xa6\xf2e\x8b\xfa\xa7\xf7\xe5f\xe8\x05\x9eR\x02\
+\x00\x05I\x00\x14&\x80b<\xbe\xf2\x95/\xfd\x16\xc0\
+\x1e\xbc\x047\xb7\x89\x5cE\xe3\x7f\xf5ae\x10\x01\x00\
+:;\xfb@\x08\x87\xaa\xaa0DQ\xc0\xe4dB\xad\
+#\xabk\xe9\xe0O\xe7\xf4\x95\x0b>\xcf\xf3\x08\x85<\
+p8\xe8\x88g6\xab\xe0\xed\xb7\xbb022l\x0b\
+\xbcN\x08:bzZD\x01\x85\xc4@\x02c3e\
+\xa1\x03m\xba\xdcp\x98f!ut\xec\x7fm\xd1\xa2\
+%\xab\xf4D\x10\xfd\x07\x0d\x19\x01E\xa1D\xa0~\x83\
+>\x9f@\x96\x89\xa6*;;{A\x08AUU%\
+\x00\x17\x22\x11\xf3\xae\xa6'\x06~\xf9c\xfb<\xcf!\
+\x18\xf4\xc0\xe3qh '\x93I\xbc\xf5\xd6!LM\
+M\x99\x80\xa7\xcf7\x03\xaf\xd7\xf7\x1d\x1c\x0b\x98\x89\x94\
+\x11\x1d\x18\x9dBv\xad\x0c@\xb9\xe5\x96u?z\xf0\
+\xc1\xedX\xb4h\x99J\x02\x0a2\x0d\x07\xd9\x08\x22\xdb\
+\xb0\x8a\x03\xbb\xc6\xbaqUWW/x\x9eCee\
+\x05\x00\x0e\x13\x13\xf1<[l\xa8\xb7\xfaI\xab4\x13\
+\xbbo~\x1e-G\x10h\x8f\xf7z\x1d\x06\xc7\x0e\xe8\
+\xe9\xe9C_\x1f\xdd-]\xcf]\x14\x06\x9e\x9d'\x84\
+\xb3\xebL\xd3\xca;F\x00\xa0$\x12X{\xbf\xd5o\
+\xc0\xcd7\xaf\xfb\xd1\x83\x0f\xee\xc0\x92%\xcbV\xc9\xb2\
+\x0e\xb21u\x0c@\xeb\xf5\xf6\xe6A\xc1\xdbo\x1f\xc6\
+\x82\x05sPY\x19T\x87\x96\xe3jJ\xb9\x90\xd3w\
+b\x1e?\xfb\xdb\xebu!\x18t\xc1\xe9\x14A\xb5\x13\
+\xbd\xfe\xf8\xf1Atw\xf7 \x91HZ\x80\xd7m\xbd\
+^\xae\xfe?\xaa\x1dd$\x93\xc9\x08f@\x80ig\
+\x05\x9f\x0a\xb1\xacA$\xb0\xfcD\x1d\xf4\x05\xa9l)\
+\x9au\xed\x81\xe7\xc1\x07w\xdc\xb4t\xe9\xf2U\xcc\x1e\
+\xb2\xa5e\x80\xde\x9b\xf4\xf3\x8a\xe1\xbc~\x0d\xc7\xf1X\
+\xbcx\x0e\x02\x01?$I_\x9a>\xbd\xea/\x0f|\
+\x87CD0\xe8\x82\xc7\xe3\x80 \xf0\x06\xbb\x9d\xc3\xd1\
+\xa3\x038|\xb8\x0f\xf1xB\xbb\xc7\x0a\xbc^\xa6Q\
+\x0bPR\xb3\xbfo\xbf}]\x10tR\x0e\xdblJ\
+9\xd53\x82f,\x86\xf1\x03\xeb\x84\x12\xc5\xe6\x00\xcc\
+\xccV\x00\xe0\xe6\x9b\xd7\xfe\xe8\xa1\x87v`\xc9\x92\xe5\
+\xab\x14\x85\x80\xe3\xa8\xdag\xbd\xc4\xceO\xa0e\xea\x1a\
+AQ\xe8/\x9f\xac\x5c\xb9\x18.\x97\x03\x0d\x0d!\x1c\
+;F;Rq\xd5o|\x17\xd8^\xe7\xf39\xe1\xf1\
+8\xe0\xf3\xb9 \x08\x9cf\xc7eYF,\x16\xc3\xd1\
+\xa3\xc7q\xf4\xe8 \xd2\xe9\x0c\xac!\x9d\xd1\xc9\xb3\x02\
+o$;;\x9fN\xa7\xfe`i\xaf\x92\xe5]!\x80\
+E\x8c\xb6>\x0fh\x9bk\x01\x954\x9b7\xaf\xfd\xd1\
+\xc3\x0f\xef\xc0\xe2\xc5+V\xb1\xb9\x01\xe5\x12A\x96e\
+\x1c8\xd0\x89%K\xe6\xc1\xe1\x10\xd1\xd8X\x89\xfe\xfe\
+1\xe4r\xa5\xd9}\x80\xfd\x00\x95\x08\xaf\xd7\x01\x8f\xc7\
+\x05\x8fG4i\x91l6\x87d2\x81\x81\x81a\x1c\
+;6\x8c\xd1\xd1\x09\x14\x0b\xe9t;_\x1cx6\x12\
+\x98H\xc4w\x96\xd0v\xb6\xf2\xae\x98\x00S\x05\xcc3\
+/\xd9\x90\x9b`8\xack\x11\xf3\xcc\xc1#\x8f\xfc\xec\
+\xa6\xc5\x8b\x97\xae2\x02V\xaei\xf0x\x9c*\x09\xe8\
+\xd4\xaf\xbe\xbe\x88\xda;i\xe5d\x19p\xbby\xf0<\
+\x0f\x97K\xd46\x9f\x12E\x1e\xa2h\x8c\x18(0\x92\
+\x94\xc5\xc8\xc8\x04\x86\x87G100\x82\xc9\xc9\xb8\x01\
+P\xfb\x90nr2\x06\xc2s\xe0\x09\x07\x10\x80S'\
+\xc1X\x81\x07\x8c\xa9`\x19\xcf<\xf3\xe4\xac\xdd\xbb\x7f\
+1\x02:C[\xdb?\xa0\x14\x13\xf0\xae\x13\x00\xc8#\
+\x81q\xaf<F\x00\xe3~E\x8c\x00\x1eXH\xb0t\
+\xe9\xf2Uf\x0fY\x07Yw\xc6\xcc\xff7n\x5c\xc5\
+H\xe0t\xd2\xd9\xc2\xe9tN\x03\xb8\x90(\x0a\x90\xcb\
+\x01\x91\xc8$&&\xa2\x18\x1b\x9bD$\x12\xc3\xd8\x18\
+5%\xd6\x9c\xbd]H\x97\xcdf\x11O$\xe0\xf5{\
+\x00B \x8a\x028N@6+\x81\x00\xc8\xa4$d\
+\xa5\xacf\xfb\x19\xf0\x8a\xa2 \x99L<\xbem\xdbm\
+\x9f\x05\xb5\xff\x8c\x00\x8a\xfaN\xef\x0d\x02\x00EI \
+\xc2^\x13\xe4\x91\xe0\xc7?~Bs\x0c\x8d\xea\xdal\
+S\xed\x89\xc0\xb4\x82\xc7\xe3\xc4\xa2Es\xf2V%\x03\
+@4\x9aD&\x93A$2\x85L&\x83\xf1\xf1I\
+\xc4\xe3\x09D\x22Sy\x0ef>\xf0\xac\xac\xfc\x90\x0e\
+<u\x14EQ\x04\xc7\x11\xa43\x12\x04A\x80 \xf0\
+\xc8HY\x88\xa2\x00)%al$\xa2\x01\xcf\xca\xf9\
+\xf3\x9f\x7f\xff\xbe'\x9e\xf8\xafNP\xf0\xb3P\x09P\
+\x0a\xf8\xc0iD\x00\xa0$\x12\xb0\xc8\x80E\x07^\xcb\
+\xa1\x91\x00`\x0d\x0c\xe8v\xbbt\xf3 \x08\x9c:\xe6\
+\xae`l,b!\x8e1\x04+\x0e<`\xef\xd9\xb3\
+zI\xb9\x1c\x9cN\x11\x0e\x87\x00Q\x14\xe1p\x88\xe0\
+x\x1e\xa9T\x8a\x12B\xe0!e(\x09\x92\x89$\x06\
+\x8f\x8dh\xe5$\x93\xf1'\xee\xbd\xf7\xf3\xb7\x81\xf6\xfe\
+\x0c\x0c\xab\x84K%@\x19?\xf5|\xea\xc5Pi\xe6\
+\x18\xb2#\xab\x1ei\x00I\xf5H\x00\x88\xab\xc7\x94\xfa\
+\x99\xd8\xb8\xf1\x93?\xda\xb7\xef\xcd\xd7\xcc\xbb\x96r\xea\
+n\xa6\xfa/\x92\x17\xda\xe5\x94}\x8e\x8fObtt\
+\x02##\x13Z\xac-\xcb9\xd0\xcd \x14\xe4r\xb2\
+\x06\xb2\xa2\xb0sl\xf7\xd2\x9c\xa6\xees9\x19\xfa\xae\
+\xa6\xb2\xc1\xc1\xa3\xcfJ&\x92j\xbd\xd4zp\xf4\xe7\
+oB\xc1\x008\x9e\x83 p\xf0\xf9<\xe09\x82P\
+E\x10\x0dMu\xc8\xe5\x14d\xb3\xd9\xc9\x9d;\x1f\xbb\
+\x13\xe6-c`\xf8,IN+\x02\x00\x05I\x90\x83\
+N\x82\x0c(\x11R\xa0$`\xe0O\xb1\xef\x1b7^\
+\xff\xe0\x9f\xfe\xb4\xe7\xe5|`K'\x82,\xcb\xb6\xc0\
+\xeb\xde9=\xcf\x80\xd75C>\xf0\xec\x7f,\xf67\
+\x9e\xa7\x1bR\x00\x84#\xf4P\xc9\xe0\x10\x05\x84B~\
+\xf0\x84\xa7$\xf0{!\x08\x02*\xaa\x02hi\xab\xc3\
+\xb1c}_|\xed\xb5\xdf\x8f\x1b\xdaH\x8b\xa6J\xed\
+\xfd\xc0iH\x00\xa0(\x09\x98\x9d\xcb@\xd7\x04L\x1b\
+0\x22\xc4\x01$o\xbdu\xe3\x8e\xed\xdb\x1f\xd9\xc1@\
+.\x97\x08,\x06g\xea\xdb\xd8{\xed\x80g\xe02-\
+\xa0\xdbzJ\x06+\xf0\x8c$9EA\x22E\x7f\xd0\
+\x9a\xe7\x088B\xc0\xab\xf5r\xf0\x22B\x15~\x08\x82\
+\x00\x87C\xa49\x05\x8eGeu%.\xbdr\xcde\
+\xc8\xdf0\xaal9-\x09\x00Lk\x0e$P\x12\xa4\
+\xa0\x13 \xcf$\xdc\x7f\xff\xd7w\xff\xf4\xa7?\xd9\xc1\
+\xc0-\x87\x08\xd4_\x90M=\x9f\x01o\xd7\xab\xf3\xcf\
++\xeayc\x92\xc7\xa8\x1dt\x13\x90\xc9HH&(\
+\x098\xb5.\x84\xa7\x87S\x14Q[\x13\x86\xd3\xe9\x00\
+Gxx\xbd.\x08<\x07\x9f\xcf\xff\xe9\x9d\xcf\xfd\xf1\
+\xa5\xaf~\xf5\x1b>\xe8\x1a\xa0l\x12\x9c\xb6\x04\x00\xa6\
+5\x07V\x12$a\xf6\x07\xe2\x00\xe2\xf7\xdf\x7f\xcf\xee\
+\xc7\x1e{d\x87qws+\x11x^'\x02\xdb\x09\
+\x9d\x86w\x8a\x0a\x94\x0e*\xfb4\x02o\xf4\x05\x8c\xc0\
+\xe7\xfb\x08\xb2\xea\x1f\xe8Z%\x95\xce \x9d\xca \x9d\
+\x91\x90H\xa44\xe09F\x06\x9e\xc0\xedr \x5c\x11\
+\x80C\xe4A8\x0e^\xaf\x1b\x02\xcf\x81\x13\x84e\x1f\
+\xba\xf4\xb2\xdf\xfc\xeb\x0f\x7f\x18D\x19\xa1\x9fQNk\
+\x02\x00\x05I\x90\x85\xd9'\xb0j\x02\xcd\x1f\x00\x10\xbf\
+\xef\xbe{vo\xdf\xfe\xc8\x0e\xb6\xc8\x94ny\xcf\xe7\
+\x11\x82N?g&\xc0\xda\xcbu\x07\xcf\xaeW3\xe0\
+\xcd>\x02\x03\xdex\xde\xe80\xca@N\x81\xac(H\
+\xa5\xd2Hg$\xc4\x13)p\xcc!$4<$\x1c\
+\x01\xc7s\xa8\xa8\x0c@\x14\xe9*)\xaf\xd7\x0d\x9e\x13\
+ \xf0\xfc\xf2\xa5\xed+\x7f\xfb\xd3g\x9e\x09\xce\xa4}\
+O\x87T\xf0\xb4\xa2(ys\x0c9\x18\xb6R\x9f\xe6\
+v\x02\x00\xf7\xddw\xcfn\x00\xd8\xb0a\xf3ZEK\
+\x0d\xd3,\x1b\x9b;\xa0(l.\x014\xdb]NH\
+g\x8c\xf1\x999P\xeb\xaf]g\x0d\x1b\x03\x01\x1f\xd2\
+\xc9\x0c\x9c\x0e\x07R\xa9\x14\x9c\x0e\x11\xf1x\x12N\xa7\
+\x83F\x04\xbc\xa0M\x85\xe39\x0e\x95\x15AD\x221\
+H\xd9\x1c\xbc\x1e\x17\xd2\x99\x0c\xb2$\xbb\xbc\xc6W\xbf\
+\xeb\xa9\x17_\x5c\x03 \x822\xe4\xb4\xd7\x00Ll4\
+\x81\x02{s\xc0\xa2\x03k\x88\x18\xbf\xef\xbe{v?\
+\xfa\xe8C;\xd823\xda\xeb\xcd?~\xc1\xb4\x81\x1e\
+\xba\x95\x1e\xd2\xe9\xfeB.O{PS\x91\x7f\xde\xe7\
+\xf3#1\x95@:\x93\x81\x02 \x99\xce \x95\xc9 \
+\x1eO\x82\xe7\x08\x04\x81\x03\xa7\xa6\x85\x01\x80\xe7xT\
+V\x04\xe0q\xbb\xc0q\x80\xdb\xe5\x84(\x8a\xe0\x09Y\
+\x11\xe0\x82\xbf\xde\xb9\xf3\xd5@9\xed\xfa\x9e!\x00\xa0\
+f7X\x16\xc7\x1c\xfa\x94\xe2\x18&\xa0\x92\xe0'?\
+yd\x87\xd1\x07\xb0#\x02-\xaf\xbc\x90\xce\xf8\xa9\xab\
+\x7f\x1dx\xddw0\x9f\x0f\x87+\x10\x8bL!\x9d\xa2\
+c\x0f\xc9d\x06\xe9L\x06\xe3\x91I\xd0\xfc\x13Q5\
+\x13\xa7-M\x0b\x05|p\xbb\xdd \x00\x5c.\xa7\xcc\
+\x8b|\x84\x00\x15.\xbf\xf3\xbf^z\xe9\xafm\xa5\xb6\
+\xe9{\x8a\x00\x16)\xe6\x18\x1a\xf3\x04V\x12$\xef\xbb\
+o\xdb\xcb\x8f>\xfa\xf0cl\xd9\xb9\x1d\x11\xe86l\
+\xe5\x85t\x85\xf3\x05f?\xc2H\x08\xfa<\x05^\x8f\
+\x17\x91\xb1(\xd2\xc9$\x00\x19\xc9T\x1a\xb9\xac\x82H\
+tJ}U\x0a>@s\x06\xe0\x80P\xd0\x07\xb7\xdb\
+\x99!\x04Cn\xa7\xb3O\x10\xf9>\xa2@\x82H>\
+\xfb\xc2\x0b\xaf\xd4\xa2\x04yO\x12\xa0\x809\xb0j\x02\
+;\x12h\xe6\xe0\x1b\xdf\xd8\xb6\xfb\xd1G\x1fzL\xef\
+\xf9f\x22\x14\xf2\xec\x8b\x85tv\xf9\x02c\xe4\xa0\x9f\
+\xd7\x817\x96\x93N\xa7\xde\xf8\xe3\x1fw\x7f11\x15\
+\x7fE\x91\x81d:\x0dI\xcab|b\x0a\x80\x0c\x02\
+\x9a,\xd2\x9a\x01J,\x14\xf4\x1d\xf58\x1d\xbd\x84\xa0\
+\xcf\xe5v\x1d\x11\x1d\xc2Q\x02e\x9cw\xbb/\xff\xed\
+o\xff2\xadcxZ\x8d\x05\xccD,\xfb\x18\x1ag\
+\x17\xd9mkk\xdd\xf2\xdes\xd7]\xf7~\xe8\x86\x1b\
+nZ\xcb\xc6\x0b\xd8\x18\xfb\x9bov\x22\x12\x89\xc1n\
+\xfe\x9d\xd1\x14\x00\xd61\x80\xe2\xe7\xed\x06\x85\x12\x89\xa9\
+\xee\xce\xce\xfd\x0f=\xfd\xf4C\xcf\x03H\xcd\x9b\xb7\x04\
+_\xb9\xf3\x1b\xff'\xe0\xf7_\x11\xf0\xfb\x10\x08x\xe1\
+t\x88\xa8\xac\x0cR\xed\x04E\x020\xce\x112\x0c(\
+\xc3\x00\x19\x8d\xc7S#\xf1xbL!\x18\x97r\xd9\
+\xf1TJ\x8a\x082\x19\xcdf\xc7\xffz\xf1\xc5\x17\xa7\
+\x0a\xb6\xdf{\x9d\x00@A\x12\x18\xa7\x971\x12X7\
+\xb9\xf6\x82\x92\xe0\xc3\x1b7\xde\xb4\x16\x80\x06\xd6\xde\xbd\
+\x07\x11\x89L\x96\xe5\xd9\x97\x0e<\xbdf||d\xcf\
+\xc1\x83\xaf?\xf1\xfc\xf3O\xbe\x0a\xaa\xad\x98\xd6J7\
+5\xcdU\xfe\xef\xbf\xfd\xc7\xbf\x07B\xc1\xeb\xddN\x17\
+\xbc\x1e'DQP*\xc3\xc1\x04O\xc80\x08\x19\x01\
+0\x0c\xc2\x8dr\x8a2\x0apc\xc9tj<\x12\x8d\
+Op\xbc<\x91\xcd*\xd1X\x22=\xc9I\xa9\xe8K\
+/\xfdj\xf8\xee\xbb\xef\xb6\x9d\x87\xf9\x9e\x08\x03K\x14\
+c\x88\xc8\xcc\x81\xdd5\xd6\xef\xca\xd7\xbf\xbe\xf5E\x9e\
+\xe7\x94\x0d\x1b6\xaf3\xae#`\xbd\xbf\xd4\x90\xae\x90\
+&0\x86\x8e\x89\xc4T\xcf\xb1c}\xcf\xbf\xfe\xfa\xef\
+^\xee\xe8\xd8\xdb\x07\x0a:;\x98\xe9\xca\xf4\xf7wf\
+\xd7~\xea\xcaM\xbf\xf8\xd5\xef\x93\xb2#wC<\x95\
+\xcay\x88kb|<:\x14\x0e\x87Fx`D\x01\
+O\xc1\xe71Nd\x8c\xbb\xdc\xae\x89\x0aE\x89D\x22\
+\xb1\xa8\xcc#\xc6\xb9\x9c\xb1\xd8\xb8\x94(\xd6hg\x84\
+\x06\x00\xa6\x9dTb\xa7\x09\x8cs\x0a<\x00\xdc\xf7\xdc\
+s\xdf\xc57\xdc\xb0i\x03\xa0\xe0\x95W\xf6ct4\
+\x02\xe3\x9c\x02#\xf0\xa5\x9c\xa73\x832\x89h4\xb2\
+\x7ftt\xe0\xcd\xbd{\xf7\xfc\xee\xe0\xc1\xbf\x1c\x85>\
+|k=$\xc3\xc1\xf2\xfc\xb9\xdf\xec\xfa\xf3\xf7\x04\x8e\
+\x5cNxn\xd8\xe7q\x0f\x8b\x227Z\x15\xae\x18\xe5\
+@\xc6\x14\x9e\x8cC\xc1\x04\xe1\x94\x09NFD\x96\x95\
+\xc9\xa9\xa9d,\x16\x1b\x9e\x02\x90x\xdf\xfb\xde\xa7u\
+\x04\xbb,\xe1\x19C\x00\xa0,\x12\x18\x7f\xf8\x82}\xba\
+\x01\xb8\xbe\xf2\x95-\x7f\xb3y\xf3-\x9b\xff\xf2\x97\x83\
+\xee\xd1\xd1\x88I\xfd\xb3\xf1\x81b\xc0G\xa3c\x1d\x13\
+\x13\x13\xbd\x91\xc8\xc8\xe1#G\xba\xba^}\xf5\xa5C\
+0\x03\xcb\x9cT\xbb\xeflB\x87\xf1P\x00(\xbf\xdd\
+\xf5\xdaW\x09\xc7\xaf\xe4En\xd4\xe3v\x8d:\x1c\xe2\
+xU\xc87N\x04q\x82\xc8\x88\xc8<\x89\x0a\x0a\x99\
+T\x94\xe4\x14\x80\xf8\xef~\xf7\xbb\xd4\xa7>\xf5\xa9\xfc\
+\xc9\xed\x16\xc0\xcf(\x02\x00\x05I`\xfc\xf9\x1bF\x02\
+\xe3F\xd7n\xc39\xc7\xa7?\xbdv\xcee\x97}j\
+\xcb\xd4T\xd2C\x97ie\x12\xb1\xd8\xe4\x11\xa3=\x1f\
+\x19\x198@\x08\xe4h4:<668\xb4\x7f\xff\
+\x9f\xba\x87\x87\x07'\xa1\x83\xc8\x22\x12\xeb\xa7ds\xde\
+\x0a\xbcq\x88W\x1b\xe4y\xe1w{\xd7r \xb3y\
+\x8e\x1bw\xb9\x5c\xe3\x0e'\x17\x09WUDx\x19\x93\
+\xb9\x1c&eY\x88\xc7b\xfd\xf1%K\x96\x14\xdd\xbd\
+\xd5H\x823\x8e\x00@\xc9\x9a\xc0\xa8\x0d\xd8\xef\x1f\xb8\
+\xd4\xff\x8b\xa0\xa41n\xbf\xca\x1a\xca\x18vZAc\
+\xdf\xb3%\x1ev\xbd\xdd4\xb6\x0f\xcb\xec\x9e]/\xef\
+\xfd\x10\xcfqaA\x14\x22.\x81\x8f\x12\x978\x19r\
+\xfbc>\x1f\x89\xef\xde\xbd;i\xd7\xeb\xed\x84=\xf3\
+\x8c$\x00`K\x02ct`\xfc\xcd\x03\xb6\x08\x85}\
+g\xd3\xcfx\xc3\xbd\x80\xb97\xca\x96\xc3J\x00v\x18\
+m9[\xb0a\x04\x9e\xddc\x04\xde\xd4\xeb\xed\xec\xf6\
+\xee\xdd\xaf\xcf\xcd\xf1\xc4\xe1\x80\x18\xe3yLE\x22\x8e\
+\xf8UW\xcd\x9bn\xe3\xee<Q\x14E9c\x09\x00\
+\x14%\x01\xfb\xbd\x03\xa3F\x10a\x06\x9fC\xbe\x06(\
+D\x82\x9c\xcd\xdf\x85\xb4\x83b8W\x10x\xa0\xf8\xd0\
+\xeeK/\xfd5\x14\x15\xe3\xb9\xa0$%\xd7\xacY3\
+\xc3\xb5\xc1g\xb0\x06`R`\xdd\x81\xf1\x87/\x8ck\
+\x10\xd8\xdfF\xf0\x0bi\x00\xeb\xa7\xb1'\xdb\x1d9\xcb\
+3r6\xcf\xa5'J\x04\xc5\xf0n3\x923^\x03\
+\x18\xa5\xc8zD\xce\xe6\xbb\x15|\xc0\x0c\x92\x1d\x09\xac\
+\xe7\xec\xce\xdb\xf5\xf4\xb2\x81/\xf0^e\xc9\x19\xef\x03\
+\xd8I\x01\x93\xc0Y\x0e\x82|\xf5\x0f\xe4\x83V\xca!\
+\xdb\x5c\x0f\x9c \xe8E\xde\xab$9\xe3\xa3\x80bR\
+\xc0$\x90\x02\x87\x9dXIP\xec\x9cI\xb5\xe3$\x03\
+o\x94RIp\xc6\xe7\x01J\x11KcY\x01/F\
+\x80\xbc\x1e\x5c\xe0\xbb\xddu'\x1dt\xabLG\x823\
+>\x13X\xae\xd8\x10\xc1\xee\xbbU\x0a5\x98\xed\xf9S\
+\x0d\xbaU\x0a\x91\xa0P=\xcej\x020)\xd2s\xac\
+>\xc0\xb4\xf2N\x03n'\xd6\xf7)V\xa7s\x04\xb0\
+\x91\x99\xa8\xd2\xd3M\xd8;LW\xd7s\x048\xcb\xe5\
+=9%\xec\x9c\x9c<\xf9\xff.}$/\xf4\x80\x9c\
+-\x00\x00\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x06\
+\x07\x03}\xc3\
+\x00i\
+\x00m\x00a\x00g\x00e\x00s\
+\x00\x09\
+\x0b\x85\x83\x07\
+\x00c\
+\x00l\x00e\x00a\x00r\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0a\x93\x87\x07\
+\x00d\
+\x00i\x00s\x00c\x00o\x00n\x00n\x00e\x00c\x00t\x00.\x00p\x00n\x00g\
+\x00\x14\
+\x07@\xa2\xc7\
+\x00a\
+\x00p\x00p\x00l\x00i\x00c\x00a\x00t\x00i\x00o\x00n\x00-\x00e\x00x\x00i\x00t\x00.\
+\x00p\x00n\x00g\
+\x00\x0b\
+\x0bs\x9d\xc7\
+\x00c\
+\x00o\x00n\x00n\x00e\x00c\x00t\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00L\x00\x00\x00\x00\x00\x01\x00\x00k\xfb\
+\x00\x00\x01z\xae\x0ay=\
+\x00\x00\x00*\x00\x00\x00\x00\x00\x01\x00\x001\x03\
+\x00\x00\x01z\xae\x0ay=\
+\x00\x00\x00z\x00\x00\x00\x00\x00\x01\x00\x00\x97\xbf\
+\x00\x00\x01z\xae\x0ay=\
+\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01z\xae\x0ay=\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/serialbus/can/receivedframesmodel.py b/examples/serialbus/can/receivedframesmodel.py
new file mode 100644
index 000000000..7953f3750
--- /dev/null
+++ b/examples/serialbus/can/receivedframesmodel.py
@@ -0,0 +1,142 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from enum import IntEnum
+
+from PySide6.QtCore import QAbstractTableModel, QModelIndex, QSize, Qt
+
+
+class ReceivedFramesModelColumns(IntEnum):
+ number = 0
+ timestamp = 1
+ flags = 2
+ can_id = 3
+ DLC = 4
+ data = 5
+ count = 6
+
+
+clipboard_text_role = Qt.UserRole + 1
+
+
+column_alignment = [Qt.AlignRight | Qt.AlignVCenter, Qt.AlignRight | Qt.AlignVCenter,
+ Qt.AlignCenter, Qt.AlignRight | Qt.AlignVCenter,
+ Qt.AlignRight | Qt.AlignVCenter, Qt.AlignLeft | Qt.AlignVCenter]
+
+
+class ReceivedFramesModel(QAbstractTableModel):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_framesQueue = [] # QQueue()
+ self.m_framesAccumulator = []
+ self.m_queueLimit = 0
+
+ def remove_rows(self, row, count, parent):
+ self.beginRemoveRows(parent, row, row + count - 1)
+ self.m_framesQueue = self.m_framesQueue[0:row] + self.m_framesQueue[row + count:]
+ self.endRemoveRows()
+ return True
+
+ def headerData(self, section, orientation, role):
+ if role == Qt.DisplayRole and orientation == Qt.Horizontal:
+ if section == ReceivedFramesModelColumns.number:
+ return "#"
+ if section == ReceivedFramesModelColumns.timestamp:
+ return "Timestamp"
+ if section == ReceivedFramesModelColumns.flags:
+ return "Flags"
+ if section == ReceivedFramesModelColumns.can_id:
+ return "CAN-ID"
+ if section == ReceivedFramesModelColumns.DLC:
+ return "DLC"
+ if section == ReceivedFramesModelColumns.data:
+ return "Data"
+
+ if role == Qt.SizeHintRole and orientation == Qt.Horizontal:
+ if section == ReceivedFramesModelColumns.number:
+ return QSize(80, 25)
+ if section == ReceivedFramesModelColumns.timestamp:
+ return QSize(130, 25)
+ if section == ReceivedFramesModelColumns.flags:
+ return QSize(25, 25)
+ if section == ReceivedFramesModelColumns.can_id:
+ return QSize(50, 25)
+ if section == ReceivedFramesModelColumns.DLC:
+ return QSize(25, 25)
+ if section == ReceivedFramesModelColumns.data:
+ return QSize(200, 25)
+ return None
+
+ def data(self, index, role):
+ if not self.m_framesQueue:
+ return None
+ row = index.row()
+ column = index.column()
+ if role == Qt.TextAlignmentRole:
+ return column_alignment[index.column()]
+ if role == Qt.DisplayRole:
+ return self.m_framesQueue[row][column]
+ if role == clipboard_text_role:
+ f = self.m_framesQueue[row][column]
+ return f"[{f}]" if column == ReceivedFramesModelColumns.DLC else f
+ return None
+
+ def rowCount(self, parent=QModelIndex()):
+ return 0 if parent.isValid() else len(self.m_framesQueue)
+
+ def columnCount(self, parent=QModelIndex()):
+ return 0 if parent.isValid() else ReceivedFramesModelColumns.count
+
+ def append_frames(self, slvector):
+ self.m_framesAccumulator.extend(slvector)
+
+ def need_update(self):
+ return self.m_framesAccumulator
+
+ def update(self):
+ if not self.m_framesAccumulator:
+ return
+
+ if self.m_queueLimit:
+ self.append_frames_ring_buffer(self.m_framesAccumulator)
+ else:
+ self.append_frames_unlimited(self.m_framesAccumulator)
+ self.m_framesAccumulator.clear()
+
+ def append_frames_ring_buffer(self, slvector):
+ slvector_len = len(slvector)
+ row_count = self.rowCount()
+ if self.m_queueLimit <= row_count + slvector_len:
+ if slvector_len < self.m_queueLimit:
+ self.remove_rows(0, row_count + slvector_len - self.m_queueLimit + 1)
+ else:
+ self.clear()
+
+ self.beginInsertRows(QModelIndex(), row_count, row_count + slvector_len - 1)
+ if slvector_len < self.m_queueLimit:
+ self.m_framesQueue.extend(slvector)
+ else:
+ self.m_framesQueue.extend(slvector[slvector_len - self.m_queueLimit:])
+ self.endInsertRows()
+
+ def append_frame(self, slist):
+ self.append_frames([slist])
+
+ def append_frames_unlimited(self, slvector):
+ row_count = self.rowCount()
+ self.beginInsertRows(QModelIndex(), row_count, row_count + len(slvector) - 1)
+ self.m_framesQueue.extend(slvector)
+ self.endInsertRows()
+
+ def clear(self):
+ if self.m_framesQueue:
+ self.beginResetModel()
+ self.m_framesQueue.clear()
+ self.endResetModel()
+
+ def set_queue_limit(self, limit):
+ self.m_queueLimit = limit
+ frame_queue_len = len(self.m_framesQueue)
+ if limit and frame_queue_len > limit:
+ self.remove_rows(0, frame_queue_len - limit)
diff --git a/examples/serialbus/can/receivedframesview.py b/examples/serialbus/can/receivedframesview.py
new file mode 100644
index 000000000..0f99a1e77
--- /dev/null
+++ b/examples/serialbus/can/receivedframesview.py
@@ -0,0 +1,54 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QPoint, Qt, Slot
+from PySide6.QtGui import QAction, QKeySequence
+from PySide6.QtWidgets import QApplication, QMenu, QTableView
+
+from receivedframesmodel import clipboard_text_role
+
+
+class ReceivedFramesView(QTableView):
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.setContextMenuPolicy(Qt.CustomContextMenu)
+ self.customContextMenuRequested.connect(self._context_menu)
+
+ @Slot(QPoint)
+ def _context_menu(self, pos):
+ context_menu = QMenu("Context menu", self)
+ if self.selectedIndexes():
+ copy_action = QAction("Copy", self)
+ copy_action.triggered.connect(self.copy_row)
+ context_menu.addAction(copy_action)
+
+ select_all_action = QAction("Select all", self)
+ select_all_action.triggered.connect(self.selectAll)
+ context_menu.addAction(select_all_action)
+ context_menu.exec(self.mapToGlobal(pos))
+
+ def set_model(self, model):
+ super().setModel(model)
+ for i in range(0, model.columnCount()):
+ size = model.headerData(i, Qt.Horizontal, Qt.SizeHintRole)
+ self.setColumnWidth(i, size.width())
+
+ def keyPressEvent(self, event):
+ if event.matches(QKeySequence.Copy):
+ self.copy_row()
+ elif event.matches(QKeySequence.SelectAll):
+ self.selectAll()
+ else:
+ super().keyPressEvent(event)
+
+ @Slot()
+ def copy_row(self):
+ clipboard = QApplication.clipboard()
+ str_row = ""
+ last_column = self.model().columnCount() - 1
+ for index in self.selectedIndexes():
+ str_row += index.data(clipboard_text_role) + " "
+ if index.column() == last_column:
+ str_row += "\n"
+ clipboard.setText(str_row)
diff --git a/examples/serialbus/can/sendframebox.py b/examples/serialbus/can/sendframebox.py
new file mode 100644
index 000000000..6472fc473
--- /dev/null
+++ b/examples/serialbus/can/sendframebox.py
@@ -0,0 +1,195 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import re
+
+from PySide6.QtGui import QValidator
+from PySide6.QtCore import QByteArray, Signal, Slot
+from PySide6.QtWidgets import QGroupBox
+from PySide6.QtSerialBus import QCanBusFrame
+
+from ui_sendframebox import Ui_SendFrameBox
+
+
+THREE_HEX_DIGITS_PATTERN = re.compile("[0-9a-fA-F]{3}")
+HEX_NUMBER_PATTERN = re.compile("^[0-9a-fA-F]+$")
+
+
+MAX_STANDARD_ID = 0x7FF
+MAX_EXTENDED_ID = 0x10000000
+MAX_PAYLOAD = 8
+MAX_PAYLOAD_FD = 64
+
+
+def is_even_hex(input):
+ return len(input.replace(" ", "")) % 2 == 0
+
+
+def insert_space(string, pos):
+ return string[0:pos] + " " + string[pos:]
+
+
+# Formats a string of hex characters with a space between every byte
+# Example: "012345" -> "01 23 45"
+def format_hex_data(input):
+ out = input.strip()
+ while True:
+ match = THREE_HEX_DIGITS_PATTERN.search(out)
+ if match:
+ out = insert_space(out, match.end(0) - 1)
+ else:
+ break
+ return out.strip().upper()
+
+
+class HexIntegerValidator(QValidator):
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.m_maximum = MAX_STANDARD_ID
+
+ def validate(self, input, pos):
+ result = QValidator.Intermediate
+ if input:
+ result = QValidator.Invalid
+ try:
+ value = int(input, base=16)
+ if value < self.m_maximum:
+ result = QValidator.Acceptable
+ except ValueError:
+ pass
+ return result
+
+ def set_maximum(self, maximum):
+ self.m_maximum = maximum
+
+
+class HexStringValidator(QValidator):
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.m_maxLength = MAX_PAYLOAD
+
+ def validate(self, input, pos):
+ max_size = 2 * self.m_maxLength
+ data = input.replace(" ", "")
+ if not data:
+ return QValidator.Intermediate
+
+ # limit maximum size
+ if len(data) > max_size:
+ return QValidator.Invalid
+
+ # check if all input is valid
+ if not HEX_NUMBER_PATTERN.match(data):
+ return QValidator.Invalid
+
+ # insert a space after every two hex nibbles
+ while True:
+ match = THREE_HEX_DIGITS_PATTERN.search(input)
+ if not match:
+ break
+ start = match.start(0)
+ end = match.end()
+ if pos == start + 1:
+ # add one hex nibble before two - Abc
+ input = insert_space(input, pos)
+ elif pos == start + 2:
+ # add hex nibble in the middle - aBc
+ input = insert_space(input, end - 1)
+ pos = end
+ else:
+ # add one hex nibble after two - abC
+ input = insert_space(input, end - 1)
+ pos = end + 1
+
+ return (QValidator.Acceptable, input, pos)
+
+ def set_max_length(self, maxLength):
+ self.m_maxLength = maxLength
+
+
+class SendFrameBox(QGroupBox):
+
+ send_frame = Signal(QCanBusFrame)
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.m_ui = Ui_SendFrameBox()
+ self.m_ui.setupUi(self)
+
+ self.m_hexIntegerValidator = HexIntegerValidator(self)
+ self.m_ui.frameIdEdit.setValidator(self.m_hexIntegerValidator)
+ self.m_hexStringValidator = HexStringValidator(self)
+ self.m_ui.payloadEdit.setValidator(self.m_hexStringValidator)
+
+ self.m_ui.dataFrame.toggled.connect(self._data_frame)
+ self.m_ui.remoteFrame.toggled.connect(self._remote_frame)
+ self.m_ui.errorFrame.toggled.connect(self._error_frame)
+ self.m_ui.extendedFormatBox.toggled.connect(self._extended_format)
+ self.m_ui.flexibleDataRateBox.toggled.connect(self._flexible_datarate)
+ self.m_ui.frameIdEdit.textChanged.connect(self._frameid_or_payload_changed)
+ self.m_ui.payloadEdit.textChanged.connect(self._frameid_or_payload_changed)
+ self._frameid_or_payload_changed()
+ self.m_ui.sendButton.clicked.connect(self._send)
+
+ @Slot(bool)
+ def _data_frame(self, value):
+ if value:
+ self.m_ui.flexibleDataRateBox.setEnabled(True)
+
+ @Slot(bool)
+ def _remote_frame(self, value):
+ if value:
+ self.m_ui.flexibleDataRateBox.setEnabled(False)
+ self.m_ui.flexibleDataRateBox.setChecked(False)
+
+ @Slot(bool)
+ def _error_frame(self, value):
+ if value:
+ self.m_ui.flexibleDataRateBox.setEnabled(False)
+ self.m_ui.flexibleDataRateBox.setChecked(False)
+
+ @Slot(bool)
+ def _extended_format(self, value):
+ m = MAX_EXTENDED_ID if value else MAX_STANDARD_ID
+ self.m_hexIntegerValidator.set_maximum(m)
+
+ @Slot(bool)
+ def _flexible_datarate(self, value):
+ len = MAX_PAYLOAD_FD if value else MAX_PAYLOAD
+ self.m_hexStringValidator.set_max_length(len)
+ self.m_ui.bitrateSwitchBox.setEnabled(value)
+ if not value:
+ self.m_ui.bitrateSwitchBox.setChecked(False)
+
+ @Slot()
+ def _frameid_or_payload_changed(self):
+ has_frame_id = bool(self.m_ui.frameIdEdit.text())
+ self.m_ui.sendButton.setEnabled(has_frame_id)
+ tt = "" if has_frame_id else "Cannot send because no Frame ID was given."
+ self.m_ui.sendButton.setToolTip(tt)
+ if has_frame_id:
+ is_even = is_even_hex(self.m_ui.payloadEdit.text())
+ self.m_ui.sendButton.setEnabled(is_even)
+ tt = "" if is_even else "Cannot send because Payload hex string is invalid."
+ self.m_ui.sendButton.setToolTip(tt)
+
+ @Slot()
+ def _send(self):
+ frame_id = int(self.m_ui.frameIdEdit.text(), base=16)
+ data = self.m_ui.payloadEdit.text().replace(" ", "")
+ self.m_ui.payloadEdit.setText(format_hex_data(data))
+ payload = QByteArray.fromHex(bytes(data, encoding='utf8'))
+
+ frame = QCanBusFrame(frame_id, payload)
+ frame.setExtendedFrameFormat(self.m_ui.extendedFormatBox.isChecked())
+ frame.setFlexibleDataRateFormat(self.m_ui.flexibleDataRateBox.isChecked())
+ frame.setBitrateSwitch(self.m_ui.bitrateSwitchBox.isChecked())
+
+ if self.m_ui.errorFrame.isChecked():
+ frame.setFrameType(QCanBusFrame.ErrorFrame)
+ elif self.m_ui.remoteFrame.isChecked():
+ frame.setFrameType(QCanBusFrame.RemoteRequestFrame)
+
+ self.send_frame.emit(frame)
diff --git a/examples/serialbus/can/sendframebox.ui b/examples/serialbus/can/sendframebox.ui
new file mode 100644
index 000000000..d913e334c
--- /dev/null
+++ b/examples/serialbus/can/sendframebox.ui
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SendFrameBox</class>
+ <widget class="QGroupBox" name="SendFrameBox">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>485</width>
+ <height>206</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Dialog</string>
+ </property>
+ <property name="title">
+ <string/>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetMinimumSize</enum>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="frameTypeBox">
+ <property name="title">
+ <string>Frame Type</string>
+ </property>
+ <property name="checkable">
+ <bool>false</bool>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QRadioButton" name="dataFrame">
+ <property name="toolTip">
+ <string>Sends a CAN data frame.</string>
+ </property>
+ <property name="text">
+ <string>D&amp;ata Frame</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="remoteFrame">
+ <property name="toolTip">
+ <string>Sends a CAN remote request frame.</string>
+ </property>
+ <property name="text">
+ <string>Re&amp;mote Request Frame</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="errorFrame">
+ <property name="toolTip">
+ <string>Sends an error frame.</string>
+ </property>
+ <property name="text">
+ <string>&amp;Error Frame</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="frameOptionsBox">
+ <property name="title">
+ <string>Frame Options</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QCheckBox" name="extendedFormatBox">
+ <property name="toolTip">
+ <string>Allows extended frames with 29 bit identifier.</string>
+ </property>
+ <property name="text">
+ <string>E&amp;xtended Format</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="flexibleDataRateBox">
+ <property name="toolTip">
+ <string>Allows up to 64 byte payload data.</string>
+ </property>
+ <property name="text">
+ <string>&amp;Flexible Data-Rate</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="bitrateSwitchBox">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="toolTip">
+ <string>Sends payload at higher data rate.</string>
+ </property>
+ <property name="text">
+ <string>&amp;Bitrate Switch</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetMinimumSize</enum>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="frameIdLabel">
+ <property name="text">
+ <string>Frame &amp;ID (hex)</string>
+ </property>
+ <property name="buddy">
+ <cstring>frameIdEdit</cstring>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="frameIdEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>1</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="placeholderText">
+ <string>123</string>
+ </property>
+ <property name="clearButtonEnabled">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QLabel" name="payloadLabel">
+ <property name="text">
+ <string>&amp;Payload (hex)</string>
+ </property>
+ <property name="buddy">
+ <cstring>payloadEdit</cstring>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="payloadEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>2</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="placeholderText">
+ <string>12 34 AB CE</string>
+ </property>
+ <property name="clearButtonEnabled">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="sendButton">
+ <property name="text">
+ <string>&amp;Send</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/serialbus/can/ui_canbusdeviceinfobox.py b/examples/serialbus/can/ui_canbusdeviceinfobox.py
new file mode 100644
index 000000000..d2f0e74a5
--- /dev/null
+++ b/examples/serialbus/can/ui_canbusdeviceinfobox.py
@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'canbusdeviceinfobox.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QCheckBox, QGroupBox, QLabel,
+ QSizePolicy, QVBoxLayout, QWidget)
+
+class Ui_CanBusDeviceInfoBox(object):
+ def setupUi(self, CanBusDeviceInfoBox):
+ if not CanBusDeviceInfoBox.objectName():
+ CanBusDeviceInfoBox.setObjectName(u"CanBusDeviceInfoBox")
+ CanBusDeviceInfoBox.resize(319, 217)
+ self.verticalLayout = QVBoxLayout(CanBusDeviceInfoBox)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.pluginLabel = QLabel(CanBusDeviceInfoBox)
+ self.pluginLabel.setObjectName(u"pluginLabel")
+
+ self.verticalLayout.addWidget(self.pluginLabel)
+
+ self.nameLabel = QLabel(CanBusDeviceInfoBox)
+ self.nameLabel.setObjectName(u"nameLabel")
+
+ self.verticalLayout.addWidget(self.nameLabel)
+
+ self.descriptionLabel = QLabel(CanBusDeviceInfoBox)
+ self.descriptionLabel.setObjectName(u"descriptionLabel")
+
+ self.verticalLayout.addWidget(self.descriptionLabel)
+
+ self.serialNumberLabel = QLabel(CanBusDeviceInfoBox)
+ self.serialNumberLabel.setObjectName(u"serialNumberLabel")
+
+ self.verticalLayout.addWidget(self.serialNumberLabel)
+
+ self.aliasLabel = QLabel(CanBusDeviceInfoBox)
+ self.aliasLabel.setObjectName(u"aliasLabel")
+
+ self.verticalLayout.addWidget(self.aliasLabel)
+
+ self.channelLabel = QLabel(CanBusDeviceInfoBox)
+ self.channelLabel.setObjectName(u"channelLabel")
+
+ self.verticalLayout.addWidget(self.channelLabel)
+
+ self.isFlexibleDataRateCapable = QCheckBox(CanBusDeviceInfoBox)
+ self.isFlexibleDataRateCapable.setObjectName(u"isFlexibleDataRateCapable")
+ self.isFlexibleDataRateCapable.setEnabled(True)
+ self.isFlexibleDataRateCapable.setCheckable(True)
+
+ self.verticalLayout.addWidget(self.isFlexibleDataRateCapable)
+
+ self.isVirtual = QCheckBox(CanBusDeviceInfoBox)
+ self.isVirtual.setObjectName(u"isVirtual")
+ self.isVirtual.setCheckable(True)
+
+ self.verticalLayout.addWidget(self.isVirtual)
+
+
+ self.retranslateUi(CanBusDeviceInfoBox)
+
+ QMetaObject.connectSlotsByName(CanBusDeviceInfoBox)
+ # setupUi
+
+ def retranslateUi(self, CanBusDeviceInfoBox):
+ CanBusDeviceInfoBox.setWindowTitle(QCoreApplication.translate("CanBusDeviceInfoBox", u"CAN Interface Properties", None))
+ self.pluginLabel.setText("")
+ self.nameLabel.setText("")
+ self.descriptionLabel.setText("")
+ self.serialNumberLabel.setText("")
+ self.aliasLabel.setText("")
+ self.channelLabel.setText("")
+ self.isFlexibleDataRateCapable.setText(QCoreApplication.translate("CanBusDeviceInfoBox", u"Flexible Data Rate", None))
+ self.isVirtual.setText(QCoreApplication.translate("CanBusDeviceInfoBox", u"Virtual", None))
+ # retranslateUi
+
diff --git a/examples/serialbus/can/ui_canbusdeviceinfodialog.py b/examples/serialbus/can/ui_canbusdeviceinfodialog.py
new file mode 100644
index 000000000..c32e9ca2d
--- /dev/null
+++ b/examples/serialbus/can/ui_canbusdeviceinfodialog.py
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'canbusdeviceinfodialog.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QDialog, QHBoxLayout, QPushButton,
+ QSizePolicy, QSpacerItem, QVBoxLayout, QWidget)
+
+from canbusdeviceinfobox import CanBusDeviceInfoBox
+
+class Ui_CanBusDeviceInfoDialog(object):
+ def setupUi(self, CanBusDeviceInfoDialog):
+ if not CanBusDeviceInfoDialog.objectName():
+ CanBusDeviceInfoDialog.setObjectName(u"CanBusDeviceInfoDialog")
+ CanBusDeviceInfoDialog.resize(237, 225)
+ self.verticalLayout = QVBoxLayout(CanBusDeviceInfoDialog)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.deviceInfoBox = CanBusDeviceInfoBox(CanBusDeviceInfoDialog)
+ self.deviceInfoBox.setObjectName(u"deviceInfoBox")
+ self.deviceInfoBox.setEnabled(True)
+
+ self.verticalLayout.addWidget(self.deviceInfoBox)
+
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout.addItem(self.horizontalSpacer)
+
+ self.okButton = QPushButton(CanBusDeviceInfoDialog)
+ self.okButton.setObjectName(u"okButton")
+
+ self.horizontalLayout.addWidget(self.okButton)
+
+
+ self.verticalLayout.addLayout(self.horizontalLayout)
+
+
+ self.retranslateUi(CanBusDeviceInfoDialog)
+
+ self.okButton.setDefault(True)
+
+
+ QMetaObject.connectSlotsByName(CanBusDeviceInfoDialog)
+ # setupUi
+
+ def retranslateUi(self, CanBusDeviceInfoDialog):
+ CanBusDeviceInfoDialog.setWindowTitle(QCoreApplication.translate("CanBusDeviceInfoDialog", u"CAN Interface Properties", None))
+ self.deviceInfoBox.setTitle(QCoreApplication.translate("CanBusDeviceInfoDialog", u"CAN Interface Properties", None))
+ self.okButton.setText(QCoreApplication.translate("CanBusDeviceInfoDialog", u"Ok", None))
+ # retranslateUi
+
diff --git a/examples/serialbus/can/ui_connectdialog.py b/examples/serialbus/can/ui_connectdialog.py
new file mode 100644
index 000000000..f01adc4eb
--- /dev/null
+++ b/examples/serialbus/can/ui_connectdialog.py
@@ -0,0 +1,252 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'connectdialog.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QAbstractSpinBox, QApplication, QCheckBox, QComboBox,
+ QDialog, QGridLayout, QGroupBox, QHBoxLayout,
+ QLabel, QLineEdit, QPushButton, QSizePolicy,
+ QSpacerItem, QSpinBox, QVBoxLayout, QWidget)
+
+from bitratebox import BitRateBox
+from canbusdeviceinfobox import CanBusDeviceInfoBox
+
+class Ui_ConnectDialog(object):
+ def setupUi(self, ConnectDialog):
+ if not ConnectDialog.objectName():
+ ConnectDialog.setObjectName(u"ConnectDialog")
+ ConnectDialog.resize(542, 558)
+ self.gridLayout_6 = QGridLayout(ConnectDialog)
+ self.gridLayout_6.setObjectName(u"gridLayout_6")
+ self.gridLayout_5 = QGridLayout()
+ self.gridLayout_5.setObjectName(u"gridLayout_5")
+ self.selectPluginBox = QGroupBox(ConnectDialog)
+ self.selectPluginBox.setObjectName(u"selectPluginBox")
+ self.gridLayout = QGridLayout(self.selectPluginBox)
+ self.gridLayout.setObjectName(u"gridLayout")
+ self.pluginListBox = QComboBox(self.selectPluginBox)
+ self.pluginListBox.setObjectName(u"pluginListBox")
+
+ self.gridLayout.addWidget(self.pluginListBox, 0, 0, 1, 1)
+
+
+ self.gridLayout_5.addWidget(self.selectPluginBox, 0, 0, 1, 1)
+
+ self.groupBox = QGroupBox(ConnectDialog)
+ self.groupBox.setObjectName(u"groupBox")
+ self.gridLayout_2 = QGridLayout(self.groupBox)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
+ self.verticalLayout_2 = QVBoxLayout()
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.horizontalLayout_2 = QHBoxLayout()
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
+ self.ringBufferBox = QCheckBox(self.groupBox)
+ self.ringBufferBox.setObjectName(u"ringBufferBox")
+ self.ringBufferBox.setChecked(True)
+
+ self.horizontalLayout_2.addWidget(self.ringBufferBox)
+
+ self.ringBufferLimitBox = QSpinBox(self.groupBox)
+ self.ringBufferLimitBox.setObjectName(u"ringBufferLimitBox")
+ self.ringBufferLimitBox.setMinimum(10)
+ self.ringBufferLimitBox.setMaximum(10000000)
+ self.ringBufferLimitBox.setSingleStep(10)
+ self.ringBufferLimitBox.setStepType(QAbstractSpinBox.AdaptiveDecimalStepType)
+ self.ringBufferLimitBox.setValue(1000)
+
+ self.horizontalLayout_2.addWidget(self.ringBufferLimitBox)
+
+
+ self.verticalLayout_2.addLayout(self.horizontalLayout_2)
+
+ self.autoscrollBox = QCheckBox(self.groupBox)
+ self.autoscrollBox.setObjectName(u"autoscrollBox")
+
+ self.verticalLayout_2.addWidget(self.autoscrollBox)
+
+
+ self.gridLayout_2.addLayout(self.verticalLayout_2, 0, 0, 1, 1)
+
+
+ self.gridLayout_5.addWidget(self.groupBox, 4, 0, 1, 2)
+
+ self.useConfigurationBox = QCheckBox(ConnectDialog)
+ self.useConfigurationBox.setObjectName(u"useConfigurationBox")
+
+ self.gridLayout_5.addWidget(self.useConfigurationBox, 3, 0, 1, 1)
+
+ self.configurationBox = QGroupBox(ConnectDialog)
+ self.configurationBox.setObjectName(u"configurationBox")
+ self.configurationBox.setEnabled(False)
+ self.gridLayout_4 = QGridLayout(self.configurationBox)
+ self.gridLayout_4.setObjectName(u"gridLayout_4")
+ self.rawFilterLabel = QLabel(self.configurationBox)
+ self.rawFilterLabel.setObjectName(u"rawFilterLabel")
+
+ self.gridLayout_4.addWidget(self.rawFilterLabel, 0, 0, 1, 1)
+
+ self.rawFilterEdit = QLineEdit(self.configurationBox)
+ self.rawFilterEdit.setObjectName(u"rawFilterEdit")
+ self.rawFilterEdit.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
+
+ self.gridLayout_4.addWidget(self.rawFilterEdit, 0, 1, 1, 1)
+
+ self.errorFilterLabel = QLabel(self.configurationBox)
+ self.errorFilterLabel.setObjectName(u"errorFilterLabel")
+
+ self.gridLayout_4.addWidget(self.errorFilterLabel, 1, 0, 1, 1)
+
+ self.errorFilterEdit = QLineEdit(self.configurationBox)
+ self.errorFilterEdit.setObjectName(u"errorFilterEdit")
+ self.errorFilterEdit.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
+
+ self.gridLayout_4.addWidget(self.errorFilterEdit, 1, 1, 1, 1)
+
+ self.loopbackLabel = QLabel(self.configurationBox)
+ self.loopbackLabel.setObjectName(u"loopbackLabel")
+
+ self.gridLayout_4.addWidget(self.loopbackLabel, 2, 0, 1, 1)
+
+ self.loopbackBox = QComboBox(self.configurationBox)
+ self.loopbackBox.setObjectName(u"loopbackBox")
+
+ self.gridLayout_4.addWidget(self.loopbackBox, 2, 1, 1, 1)
+
+ self.receiveOwnLabel = QLabel(self.configurationBox)
+ self.receiveOwnLabel.setObjectName(u"receiveOwnLabel")
+
+ self.gridLayout_4.addWidget(self.receiveOwnLabel, 3, 0, 1, 1)
+
+ self.receiveOwnBox = QComboBox(self.configurationBox)
+ self.receiveOwnBox.setObjectName(u"receiveOwnBox")
+
+ self.gridLayout_4.addWidget(self.receiveOwnBox, 3, 1, 1, 1)
+
+ self.bitrateLabel = QLabel(self.configurationBox)
+ self.bitrateLabel.setObjectName(u"bitrateLabel")
+
+ self.gridLayout_4.addWidget(self.bitrateLabel, 4, 0, 1, 1)
+
+ self.bitrateBox = BitRateBox(self.configurationBox)
+ self.bitrateBox.setObjectName(u"bitrateBox")
+
+ self.gridLayout_4.addWidget(self.bitrateBox, 4, 1, 1, 1)
+
+ self.canFdLabel = QLabel(self.configurationBox)
+ self.canFdLabel.setObjectName(u"canFdLabel")
+
+ self.gridLayout_4.addWidget(self.canFdLabel, 5, 0, 1, 1)
+
+ self.canFdBox = QComboBox(self.configurationBox)
+ self.canFdBox.setObjectName(u"canFdBox")
+
+ self.gridLayout_4.addWidget(self.canFdBox, 5, 1, 1, 1)
+
+ self.dataBitrateLabel = QLabel(self.configurationBox)
+ self.dataBitrateLabel.setObjectName(u"dataBitrateLabel")
+
+ self.gridLayout_4.addWidget(self.dataBitrateLabel, 6, 0, 1, 1)
+
+ self.dataBitrateBox = BitRateBox(self.configurationBox)
+ self.dataBitrateBox.setObjectName(u"dataBitrateBox")
+
+ self.gridLayout_4.addWidget(self.dataBitrateBox, 6, 1, 1, 1)
+
+
+ self.gridLayout_5.addWidget(self.configurationBox, 0, 1, 4, 1)
+
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.horizontalSpacer = QSpacerItem(96, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout.addItem(self.horizontalSpacer)
+
+ self.cancelButton = QPushButton(ConnectDialog)
+ self.cancelButton.setObjectName(u"cancelButton")
+ self.cancelButton.setAutoDefault(False)
+
+ self.horizontalLayout.addWidget(self.cancelButton)
+
+ self.okButton = QPushButton(ConnectDialog)
+ self.okButton.setObjectName(u"okButton")
+ self.okButton.setAutoDefault(False)
+
+ self.horizontalLayout.addWidget(self.okButton)
+
+
+ self.gridLayout_5.addLayout(self.horizontalLayout, 5, 0, 1, 2)
+
+ self.specifyInterfaceNameBox = QGroupBox(ConnectDialog)
+ self.specifyInterfaceNameBox.setObjectName(u"specifyInterfaceNameBox")
+ self.gridLayout_3 = QGridLayout(self.specifyInterfaceNameBox)
+ self.gridLayout_3.setObjectName(u"gridLayout_3")
+ self.interfaceListBox = QComboBox(self.specifyInterfaceNameBox)
+ self.interfaceListBox.setObjectName(u"interfaceListBox")
+ self.interfaceListBox.setEditable(True)
+
+ self.gridLayout_3.addWidget(self.interfaceListBox, 0, 0, 1, 1)
+
+
+ self.gridLayout_5.addWidget(self.specifyInterfaceNameBox, 1, 0, 1, 1)
+
+ self.deviceInfoBox = CanBusDeviceInfoBox(ConnectDialog)
+ self.deviceInfoBox.setObjectName(u"deviceInfoBox")
+ self.deviceInfoBox.setEnabled(True)
+
+ self.gridLayout_5.addWidget(self.deviceInfoBox, 2, 0, 1, 1)
+
+
+ self.gridLayout_6.addLayout(self.gridLayout_5, 0, 0, 1, 1)
+
+
+ self.retranslateUi(ConnectDialog)
+
+ self.okButton.setDefault(True)
+
+
+ QMetaObject.connectSlotsByName(ConnectDialog)
+ # setupUi
+
+ def retranslateUi(self, ConnectDialog):
+ ConnectDialog.setWindowTitle(QCoreApplication.translate("ConnectDialog", u"Connect", None))
+ self.selectPluginBox.setTitle(QCoreApplication.translate("ConnectDialog", u"Select CAN plugin", None))
+ self.groupBox.setTitle(QCoreApplication.translate("ConnectDialog", u"GUI Settings", None))
+#if QT_CONFIG(tooltip)
+ self.ringBufferBox.setToolTip(QCoreApplication.translate("ConnectDialog", u"<html><head/><body><p>Use ring buffer in table view model</p></body></html>", None))
+#endif // QT_CONFIG(tooltip)
+ self.ringBufferBox.setText(QCoreApplication.translate("ConnectDialog", u"Use ring buffer", None))
+#if QT_CONFIG(tooltip)
+ self.ringBufferLimitBox.setToolTip(QCoreApplication.translate("ConnectDialog", u"<html><head/><body><p>Limit of ring buffer in table view model</p></body></html>", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(tooltip)
+ self.autoscrollBox.setToolTip(QCoreApplication.translate("ConnectDialog", u"<html><head/><body><p>Scroll to bottom table view on each portion of received frames</p></body></html>", None))
+#endif // QT_CONFIG(tooltip)
+ self.autoscrollBox.setText(QCoreApplication.translate("ConnectDialog", u"Autoscroll", None))
+ self.useConfigurationBox.setText(QCoreApplication.translate("ConnectDialog", u"Custom configuration", None))
+ self.configurationBox.setTitle(QCoreApplication.translate("ConnectDialog", u"Specify Configuration", None))
+ self.rawFilterLabel.setText(QCoreApplication.translate("ConnectDialog", u"RAW Filter", None))
+ self.errorFilterLabel.setText(QCoreApplication.translate("ConnectDialog", u"Error Filter", None))
+ self.errorFilterEdit.setPlaceholderText(QCoreApplication.translate("ConnectDialog", u"FrameError bits", None))
+ self.loopbackLabel.setText(QCoreApplication.translate("ConnectDialog", u"Loopback", None))
+ self.receiveOwnLabel.setText(QCoreApplication.translate("ConnectDialog", u"Receive Own", None))
+ self.bitrateLabel.setText(QCoreApplication.translate("ConnectDialog", u"Bitrate", None))
+ self.canFdLabel.setText(QCoreApplication.translate("ConnectDialog", u"CAN FD", None))
+ self.dataBitrateLabel.setText(QCoreApplication.translate("ConnectDialog", u"Data Bitrate", None))
+ self.cancelButton.setText(QCoreApplication.translate("ConnectDialog", u"Cancel", None))
+ self.okButton.setText(QCoreApplication.translate("ConnectDialog", u"OK", None))
+ self.specifyInterfaceNameBox.setTitle(QCoreApplication.translate("ConnectDialog", u"Specify CAN interface name", None))
+ self.deviceInfoBox.setTitle(QCoreApplication.translate("ConnectDialog", u"CAN Interface Properties", None))
+ # retranslateUi
+
diff --git a/examples/serialbus/can/ui_mainwindow.py b/examples/serialbus/can/ui_mainwindow.py
new file mode 100644
index 000000000..4ba4dd309
--- /dev/null
+++ b/examples/serialbus/can/ui_mainwindow.py
@@ -0,0 +1,172 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'mainwindow.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
+ QCursor, QFont, QFontDatabase, QGradient,
+ QIcon, QImage, QKeySequence, QLinearGradient,
+ QPainter, QPalette, QPixmap, QRadialGradient,
+ QTransform)
+from PySide6.QtWidgets import (QAbstractItemView, QApplication, QGridLayout, QGroupBox,
+ QHBoxLayout, QHeaderView, QLabel, QMainWindow,
+ QMenu, QMenuBar, QSizePolicy, QSpacerItem,
+ QStatusBar, QToolBar, QVBoxLayout, QWidget)
+
+from receivedframesview import ReceivedFramesView
+from sendframebox import SendFrameBox
+import rc_can
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ if not MainWindow.objectName():
+ MainWindow.setObjectName(u"MainWindow")
+ MainWindow.resize(634, 527)
+ self.actionConnect = QAction(MainWindow)
+ self.actionConnect.setObjectName(u"actionConnect")
+ icon = QIcon()
+ icon.addFile(u":/images/connect.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionConnect.setIcon(icon)
+ self.actionDisconnect = QAction(MainWindow)
+ self.actionDisconnect.setObjectName(u"actionDisconnect")
+ icon1 = QIcon()
+ icon1.addFile(u":/images/disconnect.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionDisconnect.setIcon(icon1)
+ self.actionQuit = QAction(MainWindow)
+ self.actionQuit.setObjectName(u"actionQuit")
+ icon2 = QIcon()
+ icon2.addFile(u":/images/application-exit.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionQuit.setIcon(icon2)
+ self.actionAboutQt = QAction(MainWindow)
+ self.actionAboutQt.setObjectName(u"actionAboutQt")
+ self.actionClearLog = QAction(MainWindow)
+ self.actionClearLog.setObjectName(u"actionClearLog")
+ icon3 = QIcon()
+ icon3.addFile(u":/images/clear.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionClearLog.setIcon(icon3)
+ self.actionPluginDocumentation = QAction(MainWindow)
+ self.actionPluginDocumentation.setObjectName(u"actionPluginDocumentation")
+ self.actionResetController = QAction(MainWindow)
+ self.actionResetController.setObjectName(u"actionResetController")
+ self.actionDeviceInformation = QAction(MainWindow)
+ self.actionDeviceInformation.setObjectName(u"actionDeviceInformation")
+ self.centralWidget = QWidget(MainWindow)
+ self.centralWidget.setObjectName(u"centralWidget")
+ self.verticalLayout = QVBoxLayout(self.centralWidget)
+ self.verticalLayout.setSpacing(6)
+ self.verticalLayout.setContentsMargins(11, 11, 11, 11)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.sendFrameBox = SendFrameBox(self.centralWidget)
+ self.sendFrameBox.setObjectName(u"sendFrameBox")
+
+ self.verticalLayout.addWidget(self.sendFrameBox)
+
+ self.receivedMessagesBox = QGroupBox(self.centralWidget)
+ self.receivedMessagesBox.setObjectName(u"receivedMessagesBox")
+ self.gridLayout = QGridLayout(self.receivedMessagesBox)
+ self.gridLayout.setSpacing(6)
+ self.gridLayout.setContentsMargins(11, 11, 11, 11)
+ self.gridLayout.setObjectName(u"gridLayout")
+ self.verticalLayout_2 = QVBoxLayout()
+ self.verticalLayout_2.setSpacing(6)
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.receivedFramesView = ReceivedFramesView(self.receivedMessagesBox)
+ self.receivedFramesView.setObjectName(u"receivedFramesView")
+ self.receivedFramesView.setEditTriggers(QAbstractItemView.NoEditTriggers)
+ self.receivedFramesView.setProperty("showDropIndicator", False)
+ self.receivedFramesView.setDragDropOverwriteMode(False)
+ self.receivedFramesView.setSelectionBehavior(QAbstractItemView.SelectRows)
+
+ self.verticalLayout_2.addWidget(self.receivedFramesView)
+
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setSpacing(6)
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.busStatus = QLabel(self.receivedMessagesBox)
+ self.busStatus.setObjectName(u"busStatus")
+
+ self.horizontalLayout.addWidget(self.busStatus)
+
+ self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout.addItem(self.horizontalSpacer)
+
+
+ self.verticalLayout_2.addLayout(self.horizontalLayout)
+
+
+ self.gridLayout.addLayout(self.verticalLayout_2, 0, 0, 1, 1)
+
+
+ self.verticalLayout.addWidget(self.receivedMessagesBox)
+
+ MainWindow.setCentralWidget(self.centralWidget)
+ self.menuBar = QMenuBar(MainWindow)
+ self.menuBar.setObjectName(u"menuBar")
+ self.menuBar.setGeometry(QRect(0, 0, 634, 22))
+ self.menuCalls = QMenu(self.menuBar)
+ self.menuCalls.setObjectName(u"menuCalls")
+ self.menuHelp = QMenu(self.menuBar)
+ self.menuHelp.setObjectName(u"menuHelp")
+ MainWindow.setMenuBar(self.menuBar)
+ self.mainToolBar = QToolBar(MainWindow)
+ self.mainToolBar.setObjectName(u"mainToolBar")
+ MainWindow.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.mainToolBar)
+ self.statusBar = QStatusBar(MainWindow)
+ self.statusBar.setObjectName(u"statusBar")
+ MainWindow.setStatusBar(self.statusBar)
+
+ self.menuBar.addAction(self.menuCalls.menuAction())
+ self.menuBar.addAction(self.menuHelp.menuAction())
+ self.menuCalls.addAction(self.actionConnect)
+ self.menuCalls.addAction(self.actionDisconnect)
+ self.menuCalls.addAction(self.actionDeviceInformation)
+ self.menuCalls.addSeparator()
+ self.menuCalls.addAction(self.actionResetController)
+ self.menuCalls.addSeparator()
+ self.menuCalls.addAction(self.actionClearLog)
+ self.menuCalls.addSeparator()
+ self.menuCalls.addAction(self.actionQuit)
+ self.menuHelp.addAction(self.actionPluginDocumentation)
+ self.menuHelp.addAction(self.actionAboutQt)
+ self.mainToolBar.addAction(self.actionConnect)
+ self.mainToolBar.addAction(self.actionDisconnect)
+ self.mainToolBar.addSeparator()
+ self.mainToolBar.addAction(self.actionClearLog)
+
+ self.retranslateUi(MainWindow)
+
+ QMetaObject.connectSlotsByName(MainWindow)
+ # setupUi
+
+ def retranslateUi(self, MainWindow):
+ MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"CAN Example", None))
+ self.actionConnect.setText(QCoreApplication.translate("MainWindow", u"&Connect", None))
+ self.actionDisconnect.setText(QCoreApplication.translate("MainWindow", u"&Disconnect", None))
+ self.actionQuit.setText(QCoreApplication.translate("MainWindow", u"&Quit", None))
+ self.actionAboutQt.setText(QCoreApplication.translate("MainWindow", u"&About Qt", None))
+ self.actionClearLog.setText(QCoreApplication.translate("MainWindow", u"Clear &Log", None))
+ self.actionPluginDocumentation.setText(QCoreApplication.translate("MainWindow", u"Plugin Documentation", None))
+#if QT_CONFIG(tooltip)
+ self.actionPluginDocumentation.setToolTip(QCoreApplication.translate("MainWindow", u"Open plugin documentation in Webbrowser", None))
+#endif // QT_CONFIG(tooltip)
+ self.actionResetController.setText(QCoreApplication.translate("MainWindow", u"&Reset CAN Controller", None))
+#if QT_CONFIG(tooltip)
+ self.actionResetController.setToolTip(QCoreApplication.translate("MainWindow", u"Reset CAN Controller", None))
+#endif // QT_CONFIG(tooltip)
+ self.actionDeviceInformation.setText(QCoreApplication.translate("MainWindow", u"Device &Information...", None))
+ self.sendFrameBox.setTitle(QCoreApplication.translate("MainWindow", u"Send CAN frame", None))
+ self.receivedMessagesBox.setTitle(QCoreApplication.translate("MainWindow", u"Received CAN messages", None))
+ self.busStatus.setText("")
+ self.menuCalls.setTitle(QCoreApplication.translate("MainWindow", u"&Calls", None))
+ self.menuHelp.setTitle(QCoreApplication.translate("MainWindow", u"&Help", None))
+ # retranslateUi
+
diff --git a/examples/serialbus/can/ui_sendframebox.py b/examples/serialbus/can/ui_sendframebox.py
new file mode 100644
index 000000000..79f013c89
--- /dev/null
+++ b/examples/serialbus/can/ui_sendframebox.py
@@ -0,0 +1,188 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'sendframebox.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QCheckBox, QGroupBox, QHBoxLayout,
+ QLabel, QLayout, QLineEdit, QPushButton,
+ QRadioButton, QSizePolicy, QVBoxLayout, QWidget)
+
+class Ui_SendFrameBox(object):
+ def setupUi(self, SendFrameBox):
+ if not SendFrameBox.objectName():
+ SendFrameBox.setObjectName(u"SendFrameBox")
+ SendFrameBox.resize(485, 206)
+ self.verticalLayout_4 = QVBoxLayout(SendFrameBox)
+ self.verticalLayout_4.setObjectName(u"verticalLayout_4")
+ self.verticalLayout_4.setSizeConstraint(QLayout.SetMinimumSize)
+ self.frameTypeBox = QGroupBox(SendFrameBox)
+ self.frameTypeBox.setObjectName(u"frameTypeBox")
+ self.frameTypeBox.setCheckable(False)
+ self.horizontalLayout = QHBoxLayout(self.frameTypeBox)
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.horizontalLayout.setContentsMargins(-1, 0, -1, 0)
+ self.dataFrame = QRadioButton(self.frameTypeBox)
+ self.dataFrame.setObjectName(u"dataFrame")
+ self.dataFrame.setChecked(True)
+
+ self.horizontalLayout.addWidget(self.dataFrame)
+
+ self.remoteFrame = QRadioButton(self.frameTypeBox)
+ self.remoteFrame.setObjectName(u"remoteFrame")
+
+ self.horizontalLayout.addWidget(self.remoteFrame)
+
+ self.errorFrame = QRadioButton(self.frameTypeBox)
+ self.errorFrame.setObjectName(u"errorFrame")
+
+ self.horizontalLayout.addWidget(self.errorFrame)
+
+
+ self.verticalLayout_4.addWidget(self.frameTypeBox)
+
+ self.frameOptionsBox = QGroupBox(SendFrameBox)
+ self.frameOptionsBox.setObjectName(u"frameOptionsBox")
+ self.horizontalLayout_2 = QHBoxLayout(self.frameOptionsBox)
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
+ self.horizontalLayout_2.setContentsMargins(-1, 0, -1, 0)
+ self.extendedFormatBox = QCheckBox(self.frameOptionsBox)
+ self.extendedFormatBox.setObjectName(u"extendedFormatBox")
+
+ self.horizontalLayout_2.addWidget(self.extendedFormatBox)
+
+ self.flexibleDataRateBox = QCheckBox(self.frameOptionsBox)
+ self.flexibleDataRateBox.setObjectName(u"flexibleDataRateBox")
+
+ self.horizontalLayout_2.addWidget(self.flexibleDataRateBox)
+
+ self.bitrateSwitchBox = QCheckBox(self.frameOptionsBox)
+ self.bitrateSwitchBox.setObjectName(u"bitrateSwitchBox")
+ self.bitrateSwitchBox.setEnabled(False)
+
+ self.horizontalLayout_2.addWidget(self.bitrateSwitchBox)
+
+
+ self.verticalLayout_4.addWidget(self.frameOptionsBox)
+
+ self.horizontalLayout_3 = QHBoxLayout()
+ self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
+ self.horizontalLayout_3.setSizeConstraint(QLayout.SetMinimumSize)
+ self.verticalLayout = QVBoxLayout()
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.frameIdLabel = QLabel(SendFrameBox)
+ self.frameIdLabel.setObjectName(u"frameIdLabel")
+
+ self.verticalLayout.addWidget(self.frameIdLabel)
+
+ self.frameIdEdit = QLineEdit(SendFrameBox)
+ self.frameIdEdit.setObjectName(u"frameIdEdit")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
+ sizePolicy.setHorizontalStretch(1)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.frameIdEdit.sizePolicy().hasHeightForWidth())
+ self.frameIdEdit.setSizePolicy(sizePolicy)
+ self.frameIdEdit.setClearButtonEnabled(True)
+
+ self.verticalLayout.addWidget(self.frameIdEdit)
+
+
+ self.horizontalLayout_3.addLayout(self.verticalLayout)
+
+ self.verticalLayout_2 = QVBoxLayout()
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.payloadLabel = QLabel(SendFrameBox)
+ self.payloadLabel.setObjectName(u"payloadLabel")
+
+ self.verticalLayout_2.addWidget(self.payloadLabel)
+
+ self.payloadEdit = QLineEdit(SendFrameBox)
+ self.payloadEdit.setObjectName(u"payloadEdit")
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
+ sizePolicy1.setHorizontalStretch(2)
+ sizePolicy1.setVerticalStretch(0)
+ sizePolicy1.setHeightForWidth(self.payloadEdit.sizePolicy().hasHeightForWidth())
+ self.payloadEdit.setSizePolicy(sizePolicy1)
+ self.payloadEdit.setClearButtonEnabled(True)
+
+ self.verticalLayout_2.addWidget(self.payloadEdit)
+
+
+ self.horizontalLayout_3.addLayout(self.verticalLayout_2)
+
+ self.verticalLayout_3 = QVBoxLayout()
+ self.verticalLayout_3.setObjectName(u"verticalLayout_3")
+ self.label = QLabel(SendFrameBox)
+ self.label.setObjectName(u"label")
+
+ self.verticalLayout_3.addWidget(self.label)
+
+ self.sendButton = QPushButton(SendFrameBox)
+ self.sendButton.setObjectName(u"sendButton")
+
+ self.verticalLayout_3.addWidget(self.sendButton)
+
+
+ self.horizontalLayout_3.addLayout(self.verticalLayout_3)
+
+
+ self.verticalLayout_4.addLayout(self.horizontalLayout_3)
+
+#if QT_CONFIG(shortcut)
+ self.frameIdLabel.setBuddy(self.frameIdEdit)
+ self.payloadLabel.setBuddy(self.payloadEdit)
+#endif // QT_CONFIG(shortcut)
+
+ self.retranslateUi(SendFrameBox)
+
+ QMetaObject.connectSlotsByName(SendFrameBox)
+ # setupUi
+
+ def retranslateUi(self, SendFrameBox):
+ SendFrameBox.setWindowTitle(QCoreApplication.translate("SendFrameBox", u"Dialog", None))
+ SendFrameBox.setTitle("")
+ self.frameTypeBox.setTitle(QCoreApplication.translate("SendFrameBox", u"Frame Type", None))
+#if QT_CONFIG(tooltip)
+ self.dataFrame.setToolTip(QCoreApplication.translate("SendFrameBox", u"Sends a CAN data frame.", None))
+#endif // QT_CONFIG(tooltip)
+ self.dataFrame.setText(QCoreApplication.translate("SendFrameBox", u"D&ata Frame", None))
+#if QT_CONFIG(tooltip)
+ self.remoteFrame.setToolTip(QCoreApplication.translate("SendFrameBox", u"Sends a CAN remote request frame.", None))
+#endif // QT_CONFIG(tooltip)
+ self.remoteFrame.setText(QCoreApplication.translate("SendFrameBox", u"Re&mote Request Frame", None))
+#if QT_CONFIG(tooltip)
+ self.errorFrame.setToolTip(QCoreApplication.translate("SendFrameBox", u"Sends an error frame.", None))
+#endif // QT_CONFIG(tooltip)
+ self.errorFrame.setText(QCoreApplication.translate("SendFrameBox", u"&Error Frame", None))
+ self.frameOptionsBox.setTitle(QCoreApplication.translate("SendFrameBox", u"Frame Options", None))
+#if QT_CONFIG(tooltip)
+ self.extendedFormatBox.setToolTip(QCoreApplication.translate("SendFrameBox", u"Allows extended frames with 29 bit identifier.", None))
+#endif // QT_CONFIG(tooltip)
+ self.extendedFormatBox.setText(QCoreApplication.translate("SendFrameBox", u"E&xtended Format", None))
+#if QT_CONFIG(tooltip)
+ self.flexibleDataRateBox.setToolTip(QCoreApplication.translate("SendFrameBox", u"Allows up to 64 byte payload data.", None))
+#endif // QT_CONFIG(tooltip)
+ self.flexibleDataRateBox.setText(QCoreApplication.translate("SendFrameBox", u"&Flexible Data-Rate", None))
+#if QT_CONFIG(tooltip)
+ self.bitrateSwitchBox.setToolTip(QCoreApplication.translate("SendFrameBox", u"Sends payload at higher data rate.", None))
+#endif // QT_CONFIG(tooltip)
+ self.bitrateSwitchBox.setText(QCoreApplication.translate("SendFrameBox", u"&Bitrate Switch", None))
+ self.frameIdLabel.setText(QCoreApplication.translate("SendFrameBox", u"Frame &ID (hex)", None))
+ self.frameIdEdit.setPlaceholderText(QCoreApplication.translate("SendFrameBox", u"123", None))
+ self.payloadLabel.setText(QCoreApplication.translate("SendFrameBox", u"&Payload (hex)", None))
+ self.payloadEdit.setPlaceholderText(QCoreApplication.translate("SendFrameBox", u"12 34 AB CE", None))
+ self.label.setText("")
+ self.sendButton.setText(QCoreApplication.translate("SendFrameBox", u"&Send", None))
+ # retranslateUi
+
diff --git a/examples/serialbus/modbus/modbusclient/doc/modbusclient.rst b/examples/serialbus/modbus/modbusclient/doc/modbusclient.rst
new file mode 100644
index 000000000..122804e6f
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/doc/modbusclient.rst
@@ -0,0 +1,9 @@
+Modbus Client example
+=====================
+
+The example acts as Modbus client sending Modbus request via serial line
+and TCP respectively. The shown dialog allows the definition of standard
+requests and displays incoming responses.
+
+The example must be used in conjunction with the Modbus server example
+or another Modbus device which is either connected via TCP or Serial Port.
diff --git a/examples/serialbus/modbus/modbusclient/images/application-exit.png b/examples/serialbus/modbus/modbusclient/images/application-exit.png
new file mode 100644
index 000000000..32be6b3f1
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/images/application-exit.png
Binary files differ
diff --git a/examples/serialbus/modbus/modbusclient/images/connect.png b/examples/serialbus/modbus/modbusclient/images/connect.png
new file mode 100644
index 000000000..dd5a51e98
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/images/connect.png
Binary files differ
diff --git a/examples/serialbus/modbus/modbusclient/images/disconnect.png b/examples/serialbus/modbus/modbusclient/images/disconnect.png
new file mode 100644
index 000000000..fd58f7a48
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/images/disconnect.png
Binary files differ
diff --git a/examples/serialbus/modbus/modbusclient/images/settings.png b/examples/serialbus/modbus/modbusclient/images/settings.png
new file mode 100644
index 000000000..3d1042e26
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/images/settings.png
Binary files differ
diff --git a/examples/serialbus/modbus/modbusclient/main.py b/examples/serialbus/modbus/modbusclient/main.py
new file mode 100644
index 000000000..1bad75c49
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/main.py
@@ -0,0 +1,26 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the examples/serialbus/modbus/client example from Qt v6.x"""
+
+from argparse import ArgumentParser, RawDescriptionHelpFormatter
+import sys
+
+from PySide6.QtCore import QCoreApplication, QLoggingCategory
+from PySide6.QtWidgets import QApplication
+from mainwindow import MainWindow
+
+
+if __name__ == "__main__":
+ parser = ArgumentParser(prog="Modbus Client Example",
+ formatter_class=RawDescriptionHelpFormatter)
+ parser.add_argument("-v", "--verbose", action="store_true",
+ help="Generate more output")
+ options = parser.parse_args()
+ if options.verbose:
+ QLoggingCategory.setFilterRules("qt.modbus* = true")
+
+ a = QApplication(sys.argv)
+ w = MainWindow()
+ w.show()
+ sys.exit(QCoreApplication.exec())
diff --git a/examples/serialbus/modbus/modbusclient/mainwindow.py b/examples/serialbus/modbus/modbusclient/mainwindow.py
new file mode 100644
index 000000000..02f9d478b
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/mainwindow.py
@@ -0,0 +1,331 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import functools
+from enum import IntEnum
+
+from PySide6.QtCore import QUrl, Slot
+from PySide6.QtGui import QStandardItemModel, QStandardItem
+from PySide6.QtWidgets import QMainWindow
+from PySide6.QtSerialBus import (QModbusDataUnit,
+ QModbusDevice, QModbusReply,
+ QModbusRtuSerialClient, QModbusTcpClient)
+
+from ui_mainwindow import Ui_MainWindow
+from settingsdialog import SettingsDialog
+from writeregistermodel import WriteRegisterModel
+
+
+class ModbusConnection(IntEnum):
+ SERIAL = 0
+ TCP = 1
+
+
+class MainWindow(QMainWindow):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.ui = Ui_MainWindow()
+ self.ui.setupUi(self)
+
+ self._modbus_device = None
+
+ self._settings_dialog = SettingsDialog(self)
+
+ self.init_actions()
+
+ self._write_model = WriteRegisterModel(self)
+ self._write_model.set_start_address(self.ui.writeAddress.value())
+ self._write_model.set_number_of_values(self.ui.writeSize.currentText())
+
+ self.ui.writeValueTable.setModel(self._write_model)
+ self.ui.writeValueTable.hideColumn(2)
+ vp = self.ui.writeValueTable.viewport()
+ self._write_model.update_viewport.connect(vp.update)
+
+ self.ui.writeTable.addItem("Coils", QModbusDataUnit.Coils)
+ self.ui.writeTable.addItem("Discrete Inputs", QModbusDataUnit.DiscreteInputs)
+ self.ui.writeTable.addItem("Input Registers", QModbusDataUnit.InputRegisters)
+ self.ui.writeTable.addItem("Holding Registers", QModbusDataUnit.HoldingRegisters)
+
+ self.ui.connectType.setCurrentIndex(0)
+ self.onConnectTypeChanged(0)
+
+ self._write_size_model = QStandardItemModel(0, 1, self)
+ for i in range(1, 11):
+ self._write_size_model.appendRow(QStandardItem(f"{i}"))
+ self.ui.writeSize.setModel(self._write_size_model)
+ self.ui.writeSize.setCurrentText("10")
+ self.ui.writeSize.currentTextChanged.connect(self._write_model.set_number_of_values)
+
+ self.ui.writeAddress.valueChanged.connect(self._write_model.set_start_address)
+ self.ui.writeAddress.valueChanged.connect(self._writeAddress)
+
+ @Slot(int)
+ def _writeAddress(self, i):
+ last_possible_index = 0
+ currentIndex = self.ui.writeSize.currentIndex()
+ for ii in range(0, 10):
+ if ii < (10 - i):
+ last_possible_index = ii
+ self._write_size_model.item(ii).setEnabled(True)
+ else:
+ self._write_size_model.item(ii).setEnabled(False)
+ if currentIndex > last_possible_index:
+ self.ui.writeSize.setCurrentIndex(last_possible_index)
+
+ def _close_device(self):
+ if self._modbus_device:
+ self._modbus_device.disconnectDevice()
+ del self._modbus_device
+ self._modbus_device = None
+
+ def closeEvent(self, event):
+ self._close_device()
+ event.accept()
+
+ def init_actions(self):
+ self.ui.actionConnect.setEnabled(True)
+ self.ui.actionDisconnect.setEnabled(False)
+ self.ui.actionExit.setEnabled(True)
+ self.ui.actionOptions.setEnabled(True)
+
+ self.ui.connectButton.clicked.connect(self.onConnectButtonClicked)
+ self.ui.actionConnect.triggered.connect(self.onConnectButtonClicked)
+ self.ui.actionDisconnect.triggered.connect(self.onConnectButtonClicked)
+ self.ui.readButton.clicked.connect(self.onReadButtonClicked)
+ self.ui.writeButton.clicked.connect(self.onWriteButtonClicked)
+ self.ui.readWriteButton.clicked.connect(self.onReadWriteButtonClicked)
+ self.ui.connectType.currentIndexChanged.connect(self.onConnectTypeChanged)
+ self.ui.writeTable.currentIndexChanged.connect(self.onWriteTableChanged)
+
+ self.ui.actionExit.triggered.connect(self.close)
+ self.ui.actionOptions.triggered.connect(self._settings_dialog.show)
+
+ @Slot(int)
+ def onConnectTypeChanged(self, index):
+ self._close_device()
+
+ if index == ModbusConnection.SERIAL:
+ self._modbus_device = QModbusRtuSerialClient(self)
+ elif index == ModbusConnection.TCP:
+ self._modbus_device = QModbusTcpClient(self)
+ if not self.ui.portEdit.text():
+ self.ui.portEdit.setText("127.0.0.1:502")
+
+ self._modbus_device.errorOccurred.connect(self._show_device_errorstring)
+
+ if not self._modbus_device:
+ self.ui.connectButton.setDisabled(True)
+ message = "Could not create Modbus client."
+ self.statusBar().showMessage(message, 5000)
+ else:
+ self._modbus_device.stateChanged.connect(self.onModbusStateChanged)
+
+ @Slot()
+ def _show_device_errorstring(self):
+ self.statusBar().showMessage(self._modbus_device.errorString(), 5000)
+
+ @Slot()
+ def onConnectButtonClicked(self):
+ if not self._modbus_device:
+ return
+
+ self.statusBar().clearMessage()
+ md = self._modbus_device
+ if md.state() != QModbusDevice.ConnectedState:
+ settings = self._settings_dialog.settings()
+ if self.ui.connectType.currentIndex() == ModbusConnection.SERIAL:
+ md.setConnectionParameter(QModbusDevice.SerialPortNameParameter,
+ self.ui.portEdit.text())
+ md.setConnectionParameter(QModbusDevice.SerialParityParameter,
+ settings.parity)
+ md.setConnectionParameter(QModbusDevice.SerialBaudRateParameter,
+ settings.baud)
+ md.setConnectionParameter(QModbusDevice.SerialDataBitsParameter,
+ settings.data_bits)
+ md.setConnectionParameter(QModbusDevice.SerialStopBitsParameter,
+ settings.stop_bits)
+ else:
+ url = QUrl.fromUserInput(self.ui.portEdit.text())
+ md.setConnectionParameter(QModbusDevice.NetworkPortParameter,
+ url.port())
+ md.setConnectionParameter(QModbusDevice.NetworkAddressParameter,
+ url.host())
+
+ md.setTimeout(settings.response_time)
+ md.setNumberOfRetries(settings.number_of_retries)
+ if not md.connectDevice():
+ message = "Connect failed: " + md.errorString()
+ self.statusBar().showMessage(message, 5000)
+ else:
+ self.ui.actionConnect.setEnabled(False)
+ self.ui.actionDisconnect.setEnabled(True)
+
+ else:
+ md.disconnectDevice()
+ self.ui.actionConnect.setEnabled(True)
+ self.ui.actionDisconnect.setEnabled(False)
+
+ @Slot(int)
+ def onModbusStateChanged(self, state):
+ connected = (state != QModbusDevice.UnconnectedState)
+ self.ui.actionConnect.setEnabled(not connected)
+ self.ui.actionDisconnect.setEnabled(connected)
+
+ if state == QModbusDevice.UnconnectedState:
+ self.ui.connectButton.setText("Connect")
+ elif state == QModbusDevice.ConnectedState:
+ self.ui.connectButton.setText("Disconnect")
+
+ @Slot()
+ def onReadButtonClicked(self):
+ if not self._modbus_device:
+ return
+ self.ui.readValue.clear()
+ self.statusBar().clearMessage()
+ reply = self._modbus_device.sendReadRequest(self.read_request(),
+ self.ui.serverEdit.value())
+ if reply:
+ if not reply.isFinished():
+ reply.finished.connect(functools.partial(self.onReadReady, reply))
+ else:
+ del reply # broadcast replies return immediately
+ else:
+ message = "Read error: " + self._modbus_device.errorString()
+ self.statusBar().showMessage(message, 5000)
+
+ @Slot()
+ def onReadReady(self, reply):
+ if not reply:
+ return
+
+ if reply.error() == QModbusDevice.NoError:
+ unit = reply.result()
+ total = unit.valueCount()
+ for i in range(0, total):
+ addr = unit.startAddress() + i
+ value = unit.value(i)
+ if unit.registerType().value <= QModbusDataUnit.Coils.value:
+ entry = f"Address: {addr}, Value: {value}"
+ else:
+ entry = f"Address: {addr}, Value: {value:x}"
+ self.ui.readValue.addItem(entry)
+
+ elif reply.error() == QModbusDevice.ProtocolError:
+ e = reply.errorString()
+ ex = reply.rawResult().exceptionCode()
+ message = f"Read response error: {e} (Modbus exception: 0x{ex:x})"
+ self.statusBar().showMessage(message, 5000)
+ else:
+ e = reply.errorString()
+ code = int(reply.error())
+ message = f"Read response error: {e} (code: 0x{code:x})"
+ self.statusBar().showMessage(message, 5000)
+
+ reply.deleteLater()
+
+ @Slot()
+ def onWriteButtonClicked(self):
+ if not self._modbus_device:
+ return
+ self.statusBar().clearMessage()
+
+ write_unit = self.write_request()
+ total = write_unit.valueCount()
+ table = write_unit.registerType()
+ for i in range(0, total):
+ addr = i + write_unit.startAddress()
+ if table == QModbusDataUnit.Coils:
+ write_unit.setValue(i, self._write_model.m_coils[addr])
+ else:
+ write_unit.setValue(i, self._write_model.m_holdingRegisters[addr])
+
+ reply = self._modbus_device.sendWriteRequest(write_unit,
+ self.ui.serverEdit.value())
+ if reply:
+ if reply.isFinished():
+ # broadcast replies return immediately
+ reply.deleteLater()
+ else:
+ reply.finished.connect(functools.partial(self._write_finished, reply))
+ else:
+ message = "Write error: " + self._modbus_device.errorString()
+ self.statusBar().showMessage(message, 5000)
+
+ @Slot(QModbusReply)
+ def _write_finished(self, reply):
+ error = reply.error()
+ if error == QModbusDevice.ProtocolError:
+ e = reply.errorString()
+ ex = reply.rawResult().exceptionCode()
+ message = f"Write response error: {e} (Modbus exception: 0x{ex:x}"
+ self.statusBar().showMessage(message, 5000)
+ elif error != QModbusDevice.NoError:
+ e = reply.errorString()
+ message = f"Write response error: {e} (code: 0x{error:x})"
+ self.statusBar().showMessage(message, 5000)
+ reply.deleteLater()
+
+ @Slot()
+ def onReadWriteButtonClicked(self):
+ if not self._modbus_device:
+ return
+ self.ui.readValue.clear()
+ self.statusBar().clearMessage()
+
+ write_unit = self.write_request()
+ table = write_unit.registerType()
+ total = write_unit.valueCount()
+ for i in range(0, total):
+ addr = i + write_unit.startAddress()
+ if table == QModbusDataUnit.Coils:
+ write_unit.setValue(i, self._write_model.m_coils[addr])
+ else:
+ write_unit.setValue(i, self._write_model.m_holdingRegisters[addr])
+
+ reply = self._modbus_device.sendReadWriteRequest(self.read_request(),
+ write_unit,
+ self.ui.serverEdit.value())
+ if reply:
+ if not reply.isFinished():
+ reply.finished.connect(functools.partial(self.onReadReady, reply))
+ else:
+ del reply # broadcast replies return immediately
+ else:
+ message = "Read error: " + self._modbus_device.errorString()
+ self.statusBar().showMessage(message, 5000)
+
+ @Slot(int)
+ def onWriteTableChanged(self, index):
+ coils_or_holding = index == 0 or index == 3
+ if coils_or_holding:
+ self.ui.writeValueTable.setColumnHidden(1, index != 0)
+ self.ui.writeValueTable.setColumnHidden(2, index != 3)
+ self.ui.writeValueTable.resizeColumnToContents(0)
+
+ self.ui.readWriteButton.setEnabled(index == 3)
+ self.ui.writeButton.setEnabled(coils_or_holding)
+ self.ui.writeGroupBox.setEnabled(coils_or_holding)
+
+ def read_request(self):
+ table = self.ui.writeTable.currentData()
+
+ start_address = self.ui.readAddress.value()
+ assert start_address >= 0 and start_address < 10
+
+ # do not go beyond 10 entries
+ number_of_entries = min(int(self.ui.readSize.currentText()),
+ 10 - start_address)
+ return QModbusDataUnit(table, start_address, number_of_entries)
+
+ def write_request(self):
+ table = self.ui.writeTable.currentData()
+
+ start_address = self.ui.writeAddress.value()
+ assert start_address >= 0 and start_address < 10
+
+ # do not go beyond 10 entries
+ number_of_entries = min(int(self.ui.writeSize.currentText()),
+ 10 - start_address)
+ return QModbusDataUnit(table, start_address, number_of_entries)
diff --git a/examples/serialbus/modbus/modbusclient/mainwindow.ui b/examples/serialbus/modbus/modbusclient/mainwindow.ui
new file mode 100644
index 000000000..1de381978
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/mainwindow.ui
@@ -0,0 +1,520 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>516</width>
+ <height>378</height>
+ </rect>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>1000</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Modbus Client Example</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="5">
+ <widget class="QLabel" name="label_27">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Server Address:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="7">
+ <widget class="QPushButton" name="connectButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Connect</string>
+ </property>
+ <property name="checkable">
+ <bool>false</bool>
+ </property>
+ <property name="autoDefault">
+ <bool>false</bool>
+ </property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="4">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="6">
+ <widget class="QSpinBox" name="serverEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>247</number>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="connectType">
+ <item>
+ <property name="text">
+ <string>Serial</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>TCP</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QLabel" name="label_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Port:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Connection type:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QLineEdit" name="portEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="minimumSize">
+ <size>
+ <width>250</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="title">
+ <string>Read</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Start address:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="readAddress">
+ <property name="maximum">
+ <number>9</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Number of values:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="readSize">
+ <property name="currentIndex">
+ <number>9</number>
+ </property>
+ <item>
+ <property name="text">
+ <string>1</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>2</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>3</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>4</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>5</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>6</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>7</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>8</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>9</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>10</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string>Result:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QListWidget" name="readValue">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="writeGroupBox">
+ <property name="minimumSize">
+ <size>
+ <width>225</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="title">
+ <string>Write</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>Start address:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QTreeView" name="writeValueTable">
+ <property name="showDropIndicator" stdset="0">
+ <bool>true</bool>
+ </property>
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="rootIsDecorated">
+ <bool>false</bool>
+ </property>
+ <property name="uniformRowHeights">
+ <bool>true</bool>
+ </property>
+ <property name="itemsExpandable">
+ <bool>false</bool>
+ </property>
+ <property name="expandsOnDoubleClick">
+ <bool>false</bool>
+ </property>
+ <attribute name="headerVisible">
+ <bool>true</bool>
+ </attribute>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="writeAddress">
+ <property name="maximum">
+ <number>9</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Number of values:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="writeSize">
+ <property name="currentIndex">
+ <number>9</number>
+ </property>
+ <item>
+ <property name="text">
+ <string>1</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>2</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>3</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>4</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>5</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>6</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>7</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>8</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>9</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>10</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Table:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="writeTable"/>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>13</width>
+ <height>17</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="readButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Read</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="writeButton">
+ <property name="text">
+ <string>Write</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="readWriteButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Read-Write</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QStatusBar" name="statusBar"/>
+ <widget class="QMenuBar" name="menuBar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>516</width>
+ <height>21</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menuDevice">
+ <property name="title">
+ <string>&amp;Device</string>
+ </property>
+ <addaction name="actionConnect"/>
+ <addaction name="actionDisconnect"/>
+ <addaction name="separator"/>
+ <addaction name="actionExit"/>
+ </widget>
+ <widget class="QMenu" name="menuToo_ls">
+ <property name="title">
+ <string>Too&amp;ls</string>
+ </property>
+ <addaction name="actionOptions"/>
+ </widget>
+ <addaction name="menuDevice"/>
+ <addaction name="menuToo_ls"/>
+ </widget>
+ <action name="actionConnect">
+ <property name="icon">
+ <iconset resource="modbusclient.qrc">
+ <normaloff>:/images/connect.png</normaloff>:/images/connect.png</iconset>
+ </property>
+ <property name="text">
+ <string>&amp;Connect</string>
+ </property>
+ </action>
+ <action name="actionDisconnect">
+ <property name="icon">
+ <iconset resource="modbusclient.qrc">
+ <normaloff>:/images/disconnect.png</normaloff>:/images/disconnect.png</iconset>
+ </property>
+ <property name="text">
+ <string>&amp;Disconnect</string>
+ </property>
+ </action>
+ <action name="actionExit">
+ <property name="icon">
+ <iconset resource="modbusclient.qrc">
+ <normaloff>:/images/application-exit.png</normaloff>:/images/application-exit.png</iconset>
+ </property>
+ <property name="text">
+ <string>&amp;Quit</string>
+ </property>
+ </action>
+ <action name="actionOptions">
+ <property name="icon">
+ <iconset resource="modbusclient.qrc">
+ <normaloff>:/images/settings.png</normaloff>:/images/settings.png</iconset>
+ </property>
+ <property name="text">
+ <string>&amp;Options</string>
+ </property>
+ </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <tabstops>
+ <tabstop>connectType</tabstop>
+ <tabstop>portEdit</tabstop>
+ <tabstop>serverEdit</tabstop>
+ <tabstop>connectButton</tabstop>
+ <tabstop>readAddress</tabstop>
+ <tabstop>readSize</tabstop>
+ <tabstop>readValue</tabstop>
+ <tabstop>writeAddress</tabstop>
+ <tabstop>writeSize</tabstop>
+ <tabstop>writeValueTable</tabstop>
+ <tabstop>writeTable</tabstop>
+ <tabstop>readButton</tabstop>
+ <tabstop>writeButton</tabstop>
+ <tabstop>readWriteButton</tabstop>
+ </tabstops>
+ <resources>
+ <include location="modbusclient.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/examples/serialbus/modbus/modbusclient/modbusclient.pyproject b/examples/serialbus/modbus/modbusclient/modbusclient.pyproject
new file mode 100644
index 000000000..11322fa9b
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/modbusclient.pyproject
@@ -0,0 +1,5 @@
+{
+ "files": ["main.py", "mainwindow.py", "mainwindow.ui", "settingsdialog.py",
+ "settingsdialog.ui",
+ "writeregistermodel.py", "modbusclient.qrc"]
+}
diff --git a/examples/serialbus/modbus/modbusclient/modbusclient.qrc b/examples/serialbus/modbus/modbusclient/modbusclient.qrc
new file mode 100644
index 000000000..5e8e998e9
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/modbusclient.qrc
@@ -0,0 +1,8 @@
+<RCC>
+ <qresource prefix="/">
+ <file>images/application-exit.png</file>
+ <file>images/connect.png</file>
+ <file>images/disconnect.png</file>
+ <file>images/settings.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/serialbus/modbus/modbusclient/rc_modbusclient.py b/examples/serialbus/modbus/modbusclient/rc_modbusclient.py
new file mode 100644
index 000000000..2734e796a
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/rc_modbusclient.py
@@ -0,0 +1,3672 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.4.1
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00:\xf4\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x09\xediCCPICC Prof\
+ile\x00\x00x\x9c\xad\xd6gTS\xd9\x16\x07\xf0\
+\xff\xbd)\x84\x04B\xef- \xddP\xa4Jo\x8a\x0d\
+\x18D\x14\xb0\x02!4)\x11\x82(vP\xb0\xa1`\
+W\xb0+v\x05\x95Q\xc7\x8a\x0a\x22\x8c\xa24\x11Q\
+, 8\x22\x1d\x0b\x82y\x1f\x82e\xd6\x9bY\xef\xcb\
+\xdb\x9f\xf6\xd9k\xdd\xb3\xce\xf9\xed}\xd7:\x80\x94b\
+\x98@\x10G\x02\x88O\x10&\x05L\xf0\xe4\x04\x87\xcc\
+\xe4H\xd4\x81\x0a5H\x03\xb0\x0f\xe3%\x0b<\xfc\xfd\
+}\xf0\xaf\xf1\xb1\x1e\x04\x00\xd4\x98\x85\x09\x04q\x89G\
+\xa3\xab\x11\x97\x97\xa9\x92\xe3\xc2\xe9\x9f\xab\xfb\xf8\xdf\xbf\
+\x03\x00\xb0\x93\x82Cf\x02\x04\x17\x80b\x948w\x07\
+\xa0\x18.\xce\x03\x01(\xa6\x0a\x05B\x80\x88\x06\xa0\xc8\
+\x8b\x0e\x8b\x00\x88\xa5\x00\xb8I\x81\x01^\x00q\x1c\x00\
+;J\x9c_\x06\xc0\x0e\x17\xe7\xe5\x00\xd8\x0byQB\
+\x80h\x00(\xf2\x09\x111\x09\x00\xb5\x03\xa0\xbbF\xf0\
+\x93y\x00\x8b\x0b`^D2/\x1e`m\x04`\x19\
+\x1f\x9f\x18\x01\xb0\xae\x010\xe6\x09\x92\x84\x00\xab\x05\x80\
+Yp\xc8L\x8e\xf8\xc8\xe1\x91\x80u\x08@\x1e\xffY\
+\x9b/\x05\x14i\x02\x8a5?k&\x11\x80F\x01p\
+\xf5\xc4\xcfZ_\x00\x08\x00\x84rUr\xa4\xb5\x15\x00\
+\x80\x90\xf2\x04h/D\xa2>C@b\x0b0\x9c+\
+\x12}=$\x12\x0d\x1f\x06(M\xc0\xad8^J\xd2\
+\xc2\x11/\x82x\x00\xfc\xaf\xb5\xf8\xce#A!\x00\x02\
+$\x95\xce\x90dI\xb1e\xe4\xe4\x15\x94\x94U\xd54\
+4\xb5u8z\xa3\xf4\x0d\x8d\x8cMGs\xcd-,\
+\xc7X\xdb\xd8\xda\xd9\x8futrvqus\xf7\xf0\
+\xf4\x1a7\xde{\xc2\xc4I\x93\xa7\xf8\xf8\xfa\xfd\xe6?\
+5 p\xfa\x8c\xa0\xe0\x90\x99\xb3\xe6\xcc\x9d\x17\x1a\x16\
+\xce\x8b\x88\x8c\x8a\x8e\x89\x9d\x1f\x17\x9f X\x90\x94,\
+LY\x98\xba(m\xc9\xd2e\xcbW\xac\x5c\x95\x9e\xb1\
+&3k\xed\xba\xf5\x1b6fo\xca\xc9\xdd\xb2u\xdb\
+\xf6\x1d;w\xed\xde\x93\x97\xbfw\xff\x81\x83\x87\x0e\x1f\
+9Zp\xec\xf8\x89\x93\xa7N\x9f9{\xae\xb0\xa8\xe8\
+\xfc\x85\x8b\xc5\xbf_\xba|\xe5\x8f\xab\xd7\xae_\xbfq\
+\xf3V\xc9\xed;w\xef\x96\x96\xdd+\xbf_QQ\xf9\
+\xe7\x83\x87UU\x8f\x1eW\xd7\xd4\xd4\xd6\xd5\xd5?i\
+hx\xda\xd8\xf8\xac\xa9\xe9\xf9\x8b\x17\xcd/_\xbez\
+\xfd\xfaMKK\xeb\xdb\xb6\xb6\xf6w\xef\xfez\xff\xbe\
+\xe3CggWwwOo__\xff\xc0\xc0\xc7O\
+\x9f?\x7f\x19\x1c\xfc:44\xfc\xed\x9b\x08$\x95.\
+!\xc9\x94\x92\x96\x91\x95WPTVQS\xd7\xd4\xd2\
+\xe6\xe8\xea\xe9\x1b\x18\x1a\x9b\x98r\xcd\xcc-,\xad\xac\
+ml\xed\xc6:\xfc\x1b\xc0\xb4\x11\x80\xd9#\x00\xfc\xef\
+\x00\x89?\x00\x16\xff\x00X\xbd&3k\xed\xfa\x0d\x1b\
+\xb37m\xfeE \x7f\xef\xbe\x7f\x10\x18\x01\x10\x0b\x88\
+\x01\xee\xfc\x0d\xe0\xd1\xe3\xc7\xd55\xb5\xb5u\xf5\xff\x08\
+\xd0\xfa\x03\xa0C\x0c\xd0\xd3\xd3\xdb\xd7\xdf?\xf0\xf1\xe3\
+\xa7\xcf_\xbe\xfc\xbc?\x85FgH2Y\xd2l\x19\
+Yy\x05E%\x15U5u\x0dMm\x1d\x8e\xae\xde\
+(}\x03#c\x13\xd3\xd1\x5c3s\x0b\xcb1V\xd6\
+66\xb6v\xf6c\x1d\x1c\x9d\x9cG$~\xa5\x10\x0f\
+\xc3w\x8cY\xb3\xe7\xcc\x9d\x17\x1a\x1a\x16\xce\x8b\xf8\xe1\
+\x91\xf0\x0bH\xda\xdfE\xd6\xfdB\xf2}&\xbe\x93\xfc\
+\x93\x89\x98dd(J\xcb\xee\x95\x97\xdf\xff\x95\xa4\xae\
+\xfe\x89\xd8\xe3\xf9\x8b\xe6\x97\xaf^\xbfii}\xdb\xd6\
+\xfe\xee\xaf\xf7\x1d\x1f:\xbb\xba{z\xfb\xfa\x07>~\
+\xfe2\xf8uh\xf8\x9b\x08\x10\xff\xfb\x00@\xb7\x03\x0e\
+'\x003\x98@\xe0!`{1`\xe4\x04\xa8t\x01\
+\xfe\xd2@\xa0\x03\xc8dk\x90\x91\x91 U\x98\xa0\x10\
+\x00\x09\x80\x00\x05tHB\x06\xca\xd0\x81)\xec0\x0e\
+\x81\xe0#\x15\xeb\xb1\x0f\x17Q\x89\x16|#\xd4\x09{\
+b:\x91Ll%\x8a\x89\xa7\xc47\xd2\x80\xf4%\x17\
+\x92\xfb\xc9J\xf2\x0b\xc5\x84\x12B\xd9@\xb9I\xe9\xa7\
+r\xa9\x11\xd4\xbd\xd4\xa74UZ\x10m7\xad\x89\xae\
+G\x8f\xa6_\xa0\x8b$|$\xf6Ht0<\x18\xbb\
+\x18\xbd\x92~\x92g\x98l\xe6\x02f\x03\xcb\x8bU(\
+\xa5-\xb5I\x9a\x94N\x93\x1e`'\xb3\xfbdRe\
+\x86e3\xe5\xe4\xe4\x0e\xca\xdb\xc8W(\x84+|S\
+\xdc\xad\xa4\xaftJ\xd9J\xf9\x9a\xca\x04\x95\x1a\xd5p\
+\xd5~\xb5u\xeaZ\xea\x175|4Z5\x97i\xa9\
+h\x15k\xfbkw\xea\xe4pl8\x8d\xba\x19z\xa3\
+\xf5\xaaG-\xd5\xb7\xd0o2\xd8h\xe8b\xd8it\
+\xd08\xc8\x84mRj\x9a>\xdak\xf40\xf7\xba\xd9\
+\x0as\x0f\x0b\x9aE\xa5\xe5\xb61s\xac\x8c\xacz\xad\
+o\xda\xe4\xd8\x86\xdb\xd9\xda\xb3\xec_\x8f\xbd\xe2\xb0\xd9\
+\x91\xef\xe4\xe2\xac\xe5\xfc\xcd\xa5\xd9\xf5\x86\xdb\x01\xf7\x0c\
+\x8fH\xcf)^\xd6\xe38\xe3e\xc7\x0fywO\xa8\
+\x9fxo\xd2\xed\xc9%Sn\xfb\x94\xf9V\xfa=\xfa\
+\xad\xce\xbfi\xea\xbb\x80\xaf\x81r\xd3\x8df8\x07\x05\
+\x06\x0bB\xb2g\x9e\x99U3[4\xd7b\xde\xbc\xd0\
+\x9c\xb02\x1e\x19\xe1\xc6_\x12y5\x9a\x12\xe3\x1f\xbb\
+w~w\xfc\xe4\x84<\x01\x16\xf0\x92\xca\x84\x96)\xfb\
+S\xe5\x16\xadMc,Y\xbetp\xf9\xca\x95\xccU\
+[3tV_\xca\xf4\xc9j^\xb7d\x83\xd6\xc6\x92\
+M\xc1\x9bE\xb9\xa7\xb7\xce\xda.\xb1\xe3\xcc\xae]{\
+\x8a\xf2_\xef\x97=\xe8|Xp\xf4\xd8\xb1\xfa\x93\x92\
+\xa7'\x9d\xcd.,=/*\xf6\xba\x94~\xa5\xf2\x9a\
+\xec\x8d\xa0[Gn\xf7\x97z\xdc\xcb\xbd\xff\xf2O\x87\
+\x87\x1b\x1e\xbd\xa9\xb1\xad\xdb\xf2\xa4\xb71\xa0\xe9r\xb3\
+\xda\xab\xb47/\xde\xfa\xb7\x97\xbc\xb7\xfeP\xd0m\xd4\
+\x9b7\xa0\xf4i\xd7\xa0\xee\xd0S\x91\xe8G\xff\x99\x90\
+\x81\x0at\xc1\x85\x03&\x22\x04\xb1X\x8a\x1c\x14\xe0\x1a\
+\xea\xd0E0\x09c\xc2\x9b\x88 V\x13\x05D\x05\xd1\
+E*\x93\xaed4\xb9\x85\xbcAvP4)\xbe\x94\
+\x15\x94\x0b\x94v*\x87\x1aL\xddB}Hc\xd3\xfc\
+h\x9bi\xb5t\x0dz8\xfd4\xfd\xb3\x84\xb7\xc46\
+\x896\x863c\x1b\xa3Sr\x8a\xe4\x09&\x8b\x99\xc0\
+\xacgy\xb0\xceJiIeK\x13\xd2\x8b\xa5\xfb\xd9\
+\xc9\xec>\x99\x852C\xb2k\xe4\xe4\xe4\x0e\xfc\xcf\xee\
+\xfbj\xb4j.\xd7R\xd1*\xd6\x9e\xaa\xdd\xad\xb3\x85\
+c\xc7y\xae\x9b\xa9g\xa1\xf7dT\xba\xbe\x9d~\xab\
+\xc1\x0e\xc3\x89\x86_\x8d\xce\x19G\x9a\xe8\x984\x9a\xee\
+\x1e\x1d\xc2U\xe2>3;h\xce\xb7\xe0Z|\xb4\xbc\
+=&\xc7j\xae\xb5\x99\x0dl\x9e\xd8\x9e\xb4\xcb\xb4\x0f\
+\x1f\xeb\xea\xa0\xee\xf0\xd1\xb1\xd6\xe9w\xe7|\x97\x0c\xd7\
+X\xb7\x00w'\x0f#Oy/x\xf5\x8e\xeb\x19\xff\
+\xca\xbbi\xc2\x83\x89w'\x95L.\x99R\xe2s\xc7\
+\xb7\xdc\xaf\xf2\xb7*\xff\xda\xa9\xcd\x01\x9d\x81\xc4t\x85\
+\x19\x06A\xf6\xc1\xfe!\xd13\xd3g\x1d\x98]:\xa7\
+k\x9eF\xa8{Xt\xf8.^=\x9f\x15\xe9\x12\x95\
+\x16}=\x16\xf3\xc7\xc7\xe5\xc4\xbfH4\x17\xa4/h\
+H\xb6\x12\xe6\xa6\xf4\xa7\x86,\xba\x95f\xbad\xff2\
+\x85\xe5\xd9+\x99\xab\xb22(\xabWe\xb2\xb2\xf2\xd6\
+\x19\xaf\xbf\xbc\xd1/\xfb\xfd\xe6\x0d\xb9F[J\xb6\xf1\
+v(\xee|\xbe\xfbI>}\x9f\xcd\x01\xfe\xa1\xddG\
+\x1e\x1c\xa3\x9cp<\x15\x7f\xe6\xf4\xb9\xb6\xf3\xdc\x8b)\
+\xbf\x17_\xfer\xd5\xf9\xfa\xea\x9b\x8fnk\xdd\x0d+\
++*\x1f\xaa\xf4{\x90_\xf5\xa1\xda\xb3vg\xfd\xdb\
+\xa7\xf6\xcfr\x9e\xb7\xbet{\xbd\xa3\xe5C\x9b\xef\xbb\
+\xfd\xef\xbft\xce\xe8\xbe\xde\xa77\xb0\xf6S\xd7\xe0\x9c\
+\xa1\xee\x91\xfe\x93`A\x16\xca\xe0\xc0\x1c.\xf0C8\
+R\xb1\x09\x05(\xc1\x0b\x0c\x13\xda\x84;\x11A\xac#\
+\x8a\x88&\x92A\xda\x91Q\xe4N\xb2\x92BR\x9c(\
+)\x94\x22J7\xd5\x8a*\xa4\xfeA\xa3\xd0\xfchy\
+\xb4\xf7tW\xfa6z\x87\xc4\x04\x89\xa3\x0c:#\x96\
+Q-\xe9*y\x86\xa9\xc3\xdc\xc1\x92eeKIK\
+m\x96V\x92>\xc4\xb6f\x97\xc9\xcc\x91\xf9,\xbb]\
+\xceN\xaeI>K\xc1N\xa1]1_\xc9K\xa9Y\
+y\xad\x8a\xb9J\x83\xea\x1a5;\xb5v\xf5|\x8di\
+\x9aL\xcd[Z\x8b\xb5m\xb4\xbbu\x0a9\xc9\xba\x8e\
+z\x14\xbd{\xa3r\xf5C\x0d\xcc\x0d\x86\x0d+\x8d\xf2\
+\x8c\x13L<MUM{FWr\x0b\xcc2\xccC\
+-\xdc,9c\xa8c\xda\xac*\xac\x0bm\xf6\xd8\xa6\
+\xdb\xc5\xdb\xcf\x1e;\xd9\xc1\xdeQ\xcfI\xc6\x99\xe2<\
+\xe8\xd2\xed\xda\xe2\xd6\xe0^\xe3Q\xeeY\xe2uk\x5c\
+\xe9\xf8R\xef\xb2\x09w&\xde\x9dT9\xb9fJ\x93\
+O\xbbo\xbf\x9f\xc8\x9f9U%\xc0d\x9a[`\xd0\
+\xf4\x84\x19k\x82\xf6\x06_\x09i\x9c9<[g\x8e\
+\xdb\xdc\xb0yY\xa1\x85aM<F\x84-\x9f\x1f\xb9\
++\xaa*\x86\x11;~~F\x5cI\xbc(\xd1U\x90\
+\xbe\xe0~\xb2\x8204\xa5(\x95\x5c\x14\xb8\xf8\xe4\x12\
+ri\xc8\xb2\x8b+\xd4V\xa6\xadj\xc8\xf0\x5c}.\
+S#k\xf5\xda\xee\xf5\xbc\x0d\xd5\xd9\xde\x9bn\xe68\
+\xe6^\xd9\xea\xb0\xed\xea\x0e\xd7\x9d\xa5\xbbg\xec\xe9\xc9\
+\xdf\xba\xcft\xff\x83\x83\x89\x87\xe5\x8f\x5c-\x88<\xce\
+:Qx*\xe1\x8c\xce\xd9\x87\x85\xcb\xcf[_\xe8*\
+>})\xe6\x8a\xe9\x1f\x8d\xd7\xf2n\x04\xddR,\xa9\
+\xbd\xb3\xbdt\xfa=\xa5\xf2\x9a\x8aM\x7fNy\xc8\xac\
+*{\xbc\xa8\xc6\xaa\xb6\xbd\xfe`Cp#\xfb\xd9\x8d\
+\xe7\xf3\x9b\xd5_V\xbc\x16\xb6\xa8\xb6\xdeh\x8b}\xc7\
+\xf8\xebP\x87\xf7\x87\x97]Kz\x94zO\xf4;\x0c\
+T|\x9a\xf5\xb9cp\xed\x90\xeap\xa3H\x04\x88\xdf\
+\x8b\x00\x00Z\x8co\x18\x0f\xff\xe7\x88\x8fK\xf9\xbe'\
+\x09@\x8a\x9f0}\x1a\x00\x06\x00c\x81\xd0?\xf0{\
+\x8e\x18\xf8\x22\x0c<\xf1;\x15\x00\xe8\xb2@\xbe\x11\x00\
+\x5c\xf6M\xfa\xaf}\x85\xfcEB\x00\xf0J\x14,N\
+\x8a\x89\x8a\x16r<\x04\x828>\xc7+1^\x90\x22\
+\xe4'q9\x93\x12x\xe6\x5c\x8e\x95\xa5\xa5-\x00\xfc\
+\x07\x8f\x08\x91L8\xcf\x9b\xb0\x00\x00 \x00IDA\
+Tx\x9c\xed}y\x98\xdcV\x95\xef\xefJ\xaa}\xed\
+\xaa\xde\x17o\xb1\xe3v{K\xec8\xdb\x04\x08\x84I\
+X\xb2\x10\xc0\xc0\x83\x19f\x08o\xc20\x0f\xde\x1b\xc2\
+\x00o\xd8g\x80\x84-\xc0\xcc\x03\x860\x0cd\xb2\xd8\
+$&\xb6\x13'1^\x12;\xc6\x8e\x1d'\x8e\xed8\
+^:\xee\xd5\xbdUwuwu\xd7.UIz\x7f\
+H*]\xa9T\xd5\xbb\xed\x04\x9f\xef\xd3'UI\xba\
+\xba\xba\xe7w\xcfv\xcf\xbd\x22\xb2,\xe3\x12\xfd\xf9\x12\
+s\xa1+p\x89.,]\x02\xc0\x9f9\x15\x01\x80\xa8\
+t!*s\x89\xce?\x95\x94\x00\x97@\xf0\xe7Ae\
+U\xc0%\x10\xbc\xf5iB\x1b\xe0\x12\x08\xde\xda4)\
+#\xf0\x12\x08\xde\xba4i/\xe0\x92q\xf8\xd6\xa4)\
+\xbb\x81\x97@\xf0\xd6\xa2\x22\x00L&2x\x09\x04o\
+\x1d\xb2\x94\x00\x97@\xf0\xe7C%U\xc0dA\xf0\xed\
+o\x7f\xfbR4\xf1ML\xc4\x82\xd1\x86\x9e]\xae\xa3\
+?\xf0\xc0\x03\x5cSS\x93k\x98e\xc5\xbf\xbe\xf9\xe6\
+\xd4\x1c\xd4\xef\x12\xcd1\x15\x01\x80\x10R\xfc\x9fr\xc2\
+\xf0\xdf\xeb\xaf\xbfn\xcbf]\xaeh4\xe6\x16\x88\xe0\
+!\xac(\xdc\xf6\xee\x1b\xce\xcdq}/\xd1,\x93%\
+\x00\x00\x00\xb2\x0c\xb3l\xd0Nuvv:\x12\x09\xc6\
+e\xb3\xc1%I9\xcf\xc0\xf0\x98O\xe0\x05\x9f$\xc9\
+\xb9t\xbc\xef\x95\xf5\xeb\xd7\x0b\xe7\xa3\xf2\x97h\xe6T\
+\x1a\x00\x80\x15\x08HOO\x8f\x03\x80+\x9b%nQ\
+\xccy`c\xbd\xc8I\xbe\x91\xb1\xb8?\x9eJ\xfb\x19\
+\x199\x9e`\xef\xed7];x\x1e\xea\x7f\x89fH\
+\xe5\x00\xa0\xede\xf5\x1a\x02\xc0\x09\xc05:\x9aq\xc7\
+\xb31\x8f$\x12\x9f,\x88\xbe\xbc,\xfb\x09d\xff\xd8\
+X\x220\x1aO\x05\x01\xd9Ar\xe2#\xb7\xdcr\xfd\
+\x99\xf3\xf6&\x97hZT\xca\x827(\xfcM\x9b6\
+1\x00\x5c\x00\xdc\x00\xbc\xa1\x90\xcbW\x1d\x0c\x06\x1c\x8c\
+=\xe0p\xd8\x83\x840AIFE \xe0\x0dU\x86\
+\xfd!\x16hd\xec\xdc\x0fw=\x7f\xe8}s\xfd\x02\
+\x96\x95\x9f\x80.D\x9d.V*%\x01\x0a\xbd\x7f\xcf\
+\x9e=lUU\x8b3\x1cv\xbbkk\xbdn\x00^\
+u\xf3\xe7\xf3y\xff\xe0\xf0\xb8_\x96\x11\x10x>\x98\
+\xcb\xe5\x832P!\x08\xf9\xd0pt4$B\x0eC\
+\x96\x9f\xf8\xcbw^\xfd\xd5Y\xaf\xf8\xe4\x19Yx\x97\
+\xc9\x96-\xff\x19\xe5\xc9Y\xb9\x81\x85\xc6}\xe5\x95W\
+8\x8f\xc7\xe3\xb4\xdb+\xdc\x1c\x07\x8f\xcf\xe7\xf1TT\
+x}\x00|\x00\x02\x00\xfc\x00\x02C\xc3cA1\x97\
+\x0ffs\xf9\x10\x9f\xe5+ #\x9c\x97\xc4\xd0\xc8h\
+<\x9c\xcb\xe5\x02\x90\x99\xa7\x92$\xf1\xa9\x0f\xdcx\xe3\
+\xd8\xb4+Z\x9a\xe1V\xff\x9b\xd5\x98Fr\x89\xe3r\
+\xff\xbd\xa5\x01Q\x12\x00\x8f?\xfe\xb8\xad\xa2b\x91\xab\
+\xae.\xec\xb2\xdb\x19\x0f\xe7rzY\x06>\x9b\x8d\xf3\
+\xd5U\x85\xfcP\x00\x10\x00\x10\x04P\x11\x1bKT\xf0\
+|.\xc4\x0b\xf9P&\x9b\x0d\xcb\x92\x14\x96$\xd97\
+6\x9e\x22\xbc\xc0C\x96\xe5c\x099\xf9\xce\xc9\x82\xa0\
+\x04\xc3i\xc6\x9a\xcf\x93\x12\xd7\xd1T\x0a\x00V\xc7\xe6\
+\xbd\xf2\xe3-\x06\x06K\x00\x00\xc0\xf6\xed\xdb\x1d\x02\xe7\
+\x0f\xbb\xed\xac\xa7\xa1\xbe\xd6\xcb\xb1\x8c\xd7\xc1\xda\xfd\x8c\
+\x8d\xf5\xdb\xedl \x14\x08\x04l66\x08\xa0B\xdd\
+B\xf1D:\x94\xced\xc3\x92(\x85\xe3\x89\x94G\x06\
+\x08d`l<\x89L6\x0b\xc8\xf2X^\x96\xdey\
+\xf3\x8dW\x1f+Y!#\xe3\xad\x18n\xfe\x8fl\xd8\
+\xb0!\xb0n\xdd\x0dW\xf8|\xae\xf96\x9b}>\x00\
+\xb0,7\x8f\x10f>\x000\x8cr\x8b(\x8a\xdd\xa2\
+\x98/\xc4*\x92\xc9\xf4k\xa2\x98\x1b;th\xff\xb1\
+\x8f\x7f\xfc\xe3\xe3P\x98\xadm0\xed\xe9\xff\xdf2@\
+(\x09\x00\x00\xd8\xbe}\xbb\x9f\xd8\x83\x8b\x1dv\xceW\
+W\x15\xf6\xb3v\x9b\xdf\xc6p\x01\xbb\xd3\x1e \x04\xc1\
+\xcap\xa0\xc2\xc6q!\x00!\x00!\x09\x08g\xd3|\
+(\x99\xce\xb8eYF<\x9eB>\x9f\x87\x0c \x93\
+\xe6\x11O\xa6 \xcb\xf2\x98\x0c|\xe1\xa6\xb7\xaf}\xb0\
+P\x89\xf2L\xd7~3\xda\xf1\xce\x9d{\x17\xae^\xbd\
+\xf26\x87\xc3\xf96\x8e\xb3\xadbYv\xde\xb4^\x9e\
+z\xac(\x8a\xe7$)\x7f<\x9b\xcd\xee\xef\xef\x1f\xd8\
+\xb7zu\xcb1\x18\x19o\xde\x00\xbc\xf9\x81P\x16\x00\
+\x00\xb0u\xeb\xde\xa0\xc3\xe3\xbc\x9e\xb3\xb1\xe1\xfa\x9ap\
+\xc0f\xe3\x02\x1c\xc7\x05].{\x05!l\xc8\xefu\
+\x87\xdcnGH\x02\xc2\x90\x10&\x04\x0e^\xc8#\x99\
+LA\x92e$\x12)\xf0|\x0e2\x00!\x97\xc3\xf8\
+x\x12\x90eH\xa2t\xcfM\xef\x5c\xf73\xad\x1e\xd4\
+\xbe\x88\xe9\x9f\xfe\xf4\x97\x17\xdez\xeb{\xde\xbeb\xc5\
+\x92[kk\xabV\xb1,g\xc9\xf0\xd94\xf0EQ\
+<\xc7\xf3\xd9m\xbd\xbd\xbd\x8fP`\x90\xf0\x16\x03\xc2\
+\x84\x00\x00\x80\x1d;\x0e\x86d\x8eY\xcf\xb1\xa4:\x1c\
+\x0eV\xb8]\xae\x0a\x1b\xc3T\xb8<\xce\x10!$\xec\
+\xf7zBN\xa7#D\x08\xec2\x00\xc8@>/\x22\
+\x95NC\x14%$\x92\x19\xa43\x19@\x06\x84\xbc\x88\
+D\x22\x05I\x92 \x89\xd2\x7f\xdft\xe3UwAw\
+G\xb5^N\xee\xbc\xf3\x13\x15\xef}\xef\x07?\xb9r\
+\xe5\xd2O,\x5c\xd8\xb8\xd2\xe7\xf3\xea\x95\x9e\x06\x9fg\
+\x02\x0e\x0d\x0cO=\xf5\xc4w?\xf5\xa9O\x8d\x01\x10\
+a\x01\x847#\x08&\x05\x00\x00x\xf0\xc1\xbd\xce\xda\
+y\xae\xcf\xb3\x84\xac\x08W\x04C\x1e\x8f3\xc4\xb0L\
+\xc8\xe7q\x87\x09C*\x5cN\x07\xe7\xf5\xba\xb5\xa6P\
+ZE\x92\x91L) Hgx\x8c\xc7\x93\xca9I\
+\xc6x<\x0dQ\xccC\x92\xa5\xe3\xbb\xfe\xb4\xe3\x96\xfb\
+\xbe\xf6\xb5q\x00\xccg>\xf3\xc5\x05k\xd6\x5c\xf7\xd5\
+\xb5kW~b\xd9\xb2\xcb\xa6\xfeBS\xe4\xf3T\x80\
+\x91\xcb\x09'\xfe\xf3?\x7f\xf9\xde/~\xf1\x8b1(\
+ \xd0$\x82\xa4^\x22\xbf\xd9@0i\x00\x00\xc0\xb6\
+m\xdb\xdc.o\xf57$\x90\x1b}^O\xb8\x22\xe8\
+\x0b3\x84\x04|>\x0f\xcb\xb1\x0c\x1c\x0e;<n\x97\
+\xd2\x87\xd5be\xc8H\xa7\xb3\xc8\xe7E\x08B\x0e\xa3\
+\xb1q\x88\x92r2\x99\xcc@\xc8\x09\x90E\xe9\xb53\
+\xad\xed\xdfg\xc1\xddz\xfd\xf5k>\xbe`A\xe3\xc4\
+\x15\x9fF\x8f\x9e\x0dp\xe4r\xc2\x89\x7f\xfb\xb7\x1f\xbf\
+\xff\x1b\xdf\xf8\xc6(t\x10\x18T\xc3\x9b\x09\x04S\x02\
+\x80F\xbb\x9f\x7f\xf9\x07 \xb8\xdb\xedv\xf9\xc3!?\
+\x03B\x10\xf0{\xc0\xb1,X\x96\x85\xcf\xe7\x06\x01Q\
+\xe4\x80\xac\xb4NN\x10\xc0\x0b9\xe4s\x22F\xc7\xe2\
+\xc8\x09\x8a]\x90Ld088\x82\xba\x9a*\xacX\
+qyq\x05\xcf\x93\xb8\x9f\xca-\x82\xc0\xbf~\xdf}\
+\xffz\xdb\x0f~\xf0\x83\x11\x00y(\xafhP\x0bo\
+\x16\x10L\x0b\x00\x00\xb0k\xcf\xcb\xdfb\x19\xe6\xdb6\
+\x9b\x0d\xe1\xb0\x1f\x0c!\xf0z<p\xba\xec\xe0X\x06\
+.\xa7\x13,\xc7\xa8\x00PP\x90\xcb\xe7\x91\xcb\xe5!\
+I\x12\xa2#c\x18\x19\x1e\xc7H4\x86u\xebV\xc2\
+\xebu\x97y\x9au\xc4\xfa|\x80\xa3\xd4\xe5\x82\xc0\xbf\
+\xfe\x9d\xef|\xf3\xf6\xfb\xef\xbf_\x03A\x914x3\
+\x80`\xda\x00\x00\x80\xe7\xf6\x1e\xfe[\xc2\xb0\xbf\xb3q\
+6TT\xf8\xc02\x0c\xbc\x1e7\xdcn\x07\x08C\xe0\
+v\xb9\xc0\xb0\x0c41 \x03\x90$E\x15\x9c>\xdd\
+\x05\x02\x06--\x13\xeb\xf9\xf2<\xbbp\xe0\xe0\xf9\xec\
+\xc9\x03\x07\xfe\xf4\xb9\xdbn{\xefQ\xe8 \xa0m\x83\
+\x8b\x1e\x043\x02\x00\x00\xec\xde\xfb\xca\x8d\x0c\xc1\x16\x86\
+e\x82\xe1\x8a\x00X\x8e\x85\xd3\xe1D0\xe0\x01!\x04\
+\x0e\x87\x0d\x1c\xcb\xd1\xfe\x12^z\xe95\xd4\xd5\xd5\xa1\
+\xa6&l\xac\xcc\xb4\x98V\xee\xec\xdc\x83C\x14\xf3\xf1\
+\x17^\xd8s\xc7m\xb7\xbd\xf7\x18\x80\x1c\xded \x98\
+1\x00\x00`\xe7\xde\xc3Wp\x0c\xbb\x87a\x98\xa0\xdf\
+\xef\x85\xc3n\x83\xd3aC0\xe8\x03C\x18\xd8\xed6\
+p\x1c\x07\xc82\x0e\x1f>\x81\xa6\xa6F\x84B\xfeR\
+U\xb2\xfewV\xc1Q:\x8dq:\x86\xa2(\xe6\xe3\
+\xbbv\xed\xb8\xf3C\x1f\xba\xe3U(\x92\x80V\x09\x17\
+5\x08f\x05\x00\x00\xb0u\xef\xde`\x80\xf1\xed!\x84\
+\x5c\xe1\xf3{\xe0\xb4\xdb\xc1\xd9XT\x85+\xc00\x04\
+,\xcb\xe2\xf8\xb17\xd0\xd4\xd4\x80`\xd0W\xbeR%\
+\x99p\xf1\x82C\x14\xf3\xf1\xdd\xbbwZ\x81\x80\x0e \
+]t\xb1\x82Y\x03\x00!\x84<\xfa\xf4\xd3\xc1Z_\
+\xed\x16\x96a\xde\xe1t:\xe0\xf18\xc12,*\xc3\
+A\x9c>\xd5\x8e\xf9\xf3\x9bL\xcc\x9f\x1d\x83\xac\x5cY\
+\xe7\x13\x1c\x14\x08\x8eBQ\x07\x17=\x08f\x05\x00\xa6\
+,\x22\xb2{\xcf\xe1\xdfr\x1c\xf7I\x87\xc3\x0e\x8f\xc7\
+\x85\xfe\xde!\xd4\xd5Vc\xde\xbcz\xd3}eK\x9d\
+b\x1d\xa6^V\xb9{FGcH$\xc6\xd1\xd8\xd8\
+\x04\x96e'q\x8f\x02\x0eE\x1d\xfc\xf1\x83\xeb\xd7\xdf\
+\xf9*\xde\x04 \x981\x00\xcc\xcc\x87\xd2\x12\xcc\xb3\xbb\
+\x0e|\xd3\xe3\xf2|5\x93\xc9\xc2\xedpa\xe5\xcab\
+\x1f\xbf|\xb9e\xcf\xceYY\xf1x\x1c\xbd\xbd=\x88\
+\xc7\xe3`\x18\x02\x8f\xc7\x8de\xcb\x96\x1b@0\xd1s\
+DQ\x8c\xef\xda\xb5C\x03A\x9e\xda.:\x10\xcc\x16\
+\x00\xe8\xc1\x1bV\xddl\x8f\xff\xe1\xd9\xcf\xb1\xc4\xf9\xdd\
+\x1bn\xb8\x0a6\x9b\xad\xc4\xfd\xd3yf\xc93\xd3.\
++\x9dN\xa3\xab\xab\xb3\xc0x\x80\xa8\xe7\x08\x1c\x0e'\
+\x9a\x9b\x97\xc1n\xb7O\xba\xce\xa2(\xc6w\xef.\x02\
+\x81\x160\xbah@0\xa3Y=e\x98\xcf\x01\xb0\x8d\
+\x8d\xa6oX\xb5\xaa\x19\x1c\xc7\xa93\x8d\x8a7Y\x96\
+!\xcb\xb0\xdcJQ\xa9\xebK=\xa3\x5c6X6\xcb\
+\xa3\xad\xad\x0d\xc7\x8f\x1fG<\x9e\x80&\xc8\xb4W\xe3\
+8\x0e\xf5\xf5\xf5\xb0\xdbmT\x9dK\xd7A#\x96e\
+\xfd\xef~\xf7-\x9b7m\xda\xb2\x06\x80Mm\x13\xad\
+}\x0aC\xdb\x17:Gq\xda\x12\xc0$\xfa\x19u\xe3\
+\xd4\xcd\xfe\x9d\xef\xfc\xfb\x1dk\xd7\xae\xfb\xcd5\xd7\xac\
+\x9edy%\xcfL\xf1\xfa\xc9=C\x14E\xf4\xf6\xf6\
+```\x00:\x8e\x09\x18Fq\xedX\x96CMM\
+-jjj,\xc5\xffd\xeb+\x8ab|\xe7\xceg\
+?\xf4\xb1\x8f}\xf8(\x00\x01z\x9c\xe0\xa2\x90\x04\xd3\
+\x02\x80\x05\xf3\x09(\xe6_w\xdd;\xaa>\xfb\xd9/\
+\xed\xba\xf6\xda5\x8d\xa1P\xc0|\xef\x14\x9fU\xf6\xec\
+\x94\xef\x11E\x11\x03\x03\xfd\x88D\x06\x90\xcfK D\
+\xa9\x93\x965D\x08PYY\x85\xfa\xfa\x06U\xe4\xcf\
+|\x5cA\x14\xc5\xf8\xc1\x83/\xdd\xf5\xfe\xf7\xbfk/\
+\x8c\x86\xe1\x05\x07\xc1L\x00@\x1b}\x05\xb1\x0f\xc0\xf9\
+\xf3\x9f?\xf4\x95\xc5\x8b/\xff?W]\xb5r\xaa\xe5\
+N\xf1\xfa\xb2g\x8b\xfe\x89F\x87p\xee\x5c\x17\xf2y\
+\xb1\xd0\xeb\x09\xd1S\xc6|\xbe\x00\xe6\xcdk\x82\xcbe\
+\x1c\x97\xa0\x9f\x13\x8d\x0e!\x12\x89\xe0\xb2\xcb\x16\xc3\xed\
+\xf6L\xa9\xbemmg\xbfp\xd5U+\x1f\x86\x11\x04\
+\xe6\xd1\xc4\xf3\x0a\x04n\xaa7X\xa4o\x19\x00\xb0v\
+\xed\xdb+++\xab\xefjh\xa8)\xa9\xc7K1\xae\
+\xdc{[\x81\xa3\x5c3\x11\xa2\x9f\x8cF\x87\xd0\xdb\xdb\
+\x0b\x9e\x17\x0a=^\xc7/`\xb7;\xb0`\xc1\x22\xf8\
+\xfd\xd6\x01*YV\xbc\x83\x8e\x8e6d\xb3J\x19'\
+N\x9c\xc0\xa2E\x8bPUUU\xaa\x06E\xff,^\
+\xbc\xe4\xa7\xaf\xbcr\x02*\x08\xccT\xc8)P\xe7g\
+\x9e\x17\x10L\x19\x00*\x95\x92\x00\xf6\xbb\xee\xfa\xf4\xdd\
+\x1cg\xf3UV\x86J\xde\x5c\x9eq\xa5\xee\xb1\xbe\xa9\
+\x94\xd4\xd0\x98\xa6\xb9t\x84\xe8V\xbd\xd6\xf3\x1d\x0e;\
+\x1a\x1a\x1a\x10\x0eWR\xcf(v\x0b\xfb\xfaz\x10\x8f\
+'\x0a\xe0QT\x06\xd0\xd5\xd5\x09\x8e\xb3!\x18\x0cZ\
+\xd5\xc0\xf2]\x16/^\xac\x81\xe0\x11\xe8m\x98WO\
+\x9fw\x10L\x09\x00\x16\xbd\x9f\xa56\x1b\x00{8\x5c\
+\xfd\xc1\x8a\x0a?X\x96\x9dr\x8f\x06\xa6\x0e\x0e\xabg\
+\xa4Ri\x9c;\xd7\xa9Z\xf5:\xd3\xb4c\x9bM1\
+\xf0\xaa\xabk\xd4z\xd2\xcfP~\xf0<\x8f\xee\xeeN\
+\x8c\x8e\x8e\x19\xa4\x86V\x8e\xdd\xee@}}\x03\x02\x01\
++\xe6\x97\x7f\x97\xc5\x8b\x17\xff\xf4\xd0\xa1\xe3\xe4\xdak\
+W\xd3\x92\xe0\x82\x80`:\x12\xc0\x10\xf0\x01\xc5\xfc\xfb\
+\xee\xfb\xf9\xc7\x1c\x0eg} Pj\xa0G\xa7\xb9\x00\
+G6\xcb\xa3\xaf\xaf\x17\xd1\xe8\x90\x81\xe1\xf4qee\
+%\x9a\x9a\xe6)\x83S\x16\x94\xcd\xf2\xe8\xed\xed\xc5\xf0\
+p\xd4T\x17Ejp\x1ck\xf2\x0ed\xc8ric\
+\xc4\x1a\xb4\xc0\xd2\xa5\x97\xff\xe4\xd0\xa1\xe3\xb8\xf6\xda\xd5\
+\x8fP\xa7D\xed\x12\xa8v\xc1\x5c\x83`\xa6*\x80v\
+\xfdl\xf5\xf5\x0d\xef&\x84 \x10\xf0\x1b\x18<U\xe3\
+n\xaa\xe0\x10E\x11===\x88D\x06\x8a\xc4\xbcv\
+\xec\xf7\xfb\xb0p\xe1\xa2B0\xc7\xfc\x0cQ\x14\x11\x89\
+\x0c```\x00\xa2(\x16\x01\x87\x10\x82p\xb8\x12\xf3\
+\xe6\xcd+\xb8\x85z\x11\xd6\xe2^\xb9\xa6\xf4\xbb\x9b@\
+@_(Bi\xdb9\x07\xc1\xa4\x01P\x22\xe4[\x10\
+\xff\xabW\xaf\x0dUT\x84\xdf\x09\xc8p\xb9\x5c\x86{\
+\xa7\xd3\xdbK\x11]\x96\xee\xd2E(\xa6)U\xd4\xca\
+\xf5x<hj\x9a\x07\x9f\xcf\xa7\xdeO?[\xd9\xf7\
+\xf6\xf6\x22\x12Q\x18\xaf\xd5\x89f~0X\x81y\xf3\
+\xe6\xc1n\xb7\x97\xac\xef\xf8\xb8b+\x88\xa2\x88\x85\x0b\
+\x17\xc3\xe3\xd1<\x89\xf2\xe0\xb8\xfc\xf2\x02\x08\x1e5\x9d\
+\x96\xa8\xfd\x9c\x81`\xaa\x12\xc0,\xfe\x0b\x06\xe0\xed\xb7\
+\xaf\xbf^k\x1c\x8ec\x8b\xc4\xf5lY\xfe\x1aE\xa3\
+C\xe8\xea\xea\x82$\x89\xa0\x19N\x1bx\xf5\xf5\xba\x81\
+gECCC\xe8\xeb\xd3\xbd\x03s9~\xbf\x0f\xf5\
+\xf5\x0d\x05\xf0X\xd57\x9b\xe5q\xee\x5c\x17b\xb1X\
+\x018\xad\xad\xa7\xd1\xdc\xbc\x0cn\xb7[\xbd\xa7T\x0d\
+\x14p\x5c~\xf9\x92\x9f\xec\xdf\x7f\x84\xdcp\xc3\xdaG\
+J\x5c8g \x98\x89\x0a0\xb8\x7f\xb5\xb5\xb5-\x0c\
+C\xc00\xd6\x83&\xb3e\xf9G\xa3Q\xf4\xf6\xf6@\
+\x10\x04\xaa\xa7\xea\x8c\xe38\x0e\xb5\xb5\xb5\xa8\xab\xab/\
+YV<\x1eG{{\x1bU\x06\x0ae(YL\x0e\
+\xd4\xd7\xd7S\xdeAq}5{\x83\xb6\x15\xb4:\x88\
+\xa2\x88\xd6\xd63hiYN\x8d\x1f\x94\xb7k\x96-\
+[v\xff\xfe\xfdG\xa0\x82\x80@\x8f\x15h4' \
+\x98\x14\x00J\xf8\xfe\x86\xd8\xbf,K\x0c!\x04^\xaf\
+\x12\x1c)1\xe9\xd4\xb2\xfc\xc9\x80#\x1e\x1fGoo\
+/\x12\x89q\x00LQ\x8f\x07\x80\x9a\x9aZ\xd4\xd7\xd7\
+\x974\xf0\xac\x5c:\xba\x0c\x96e-\xc1C\x13m+\
+\xe8\xd2G)\x03 \xb0\xd9XTW\x17\x87\x90'#\
+\xe9\x96-[v\xff\x91#'\xfdk\xd7.\xff\x0f\xea\
+\xf4\x9c\x82`*\x12\x80\x986\x83\x0a\xa8\xaa\xaaYC\
+\x08A2\x99D\x22\x91\x80\xcf\xe7+z\xe9\xe9\x88\xfb\
+dRs\xe94\xc6\xeb\xcc\xd7z]0\x18DS\xd3\
+|8\x1c\xd6\x06\x9e\xe2\xd2\xd1bZy\x1d\xfa\xb8\xa6\
+\xa6\x06\xf5\xf5\x0de\x99\xa6\xd9\x0a\xb4\xda1z\x18U\
+\xa8\xab\xab\xa7\xeaa~G\xebw\xa7\x9f3\x7f\xfe\x82\
+o\xb5\xb5\xf5\xb5,^\xdc\xf0y\xea\x12m(\xb9`\
+\x18Z\x974u\x9a\xae\x0d`V\x01\x1c!\x0ca\x18\
+\x02Y&hk\xeb\xc2\xe2\xc5\x0b\xe0\xf5z\xa7m\x0b\
+(\x22\xb6\x07\xc3\xc3Q\xf5\x1e\xa6\xc00\xad\xd1}>\
+\xbfAGkEh\xcf\xa0\xc5\xb4U\x8f\x07\x80pX\
+a\x9a\xd3\xe9(\xf9\xd2Z$QS\x19F\xf0\x00~\
+\xbf\x0f\x8d\x8d\xf3\xe1v\xbbJ\x96A\xd7\xcf\x8a\xe8v\
+\x09\x06\x83\xeb\xdb\xda\xfa\xb0xq\xc3\xe7`dv\xc1\
+; \x84\xccJ\xc8x&q\x00\x83'@\x08\x08\xc3\
+\x10H\x92\xf22\xed\xed\xddhn^\x04\x97\xcb\x0dQ\
+\x94\x0a7\xeb\xcb\x0dY\x14L1\xee\xf8\xf1#\xd0\x19\
+\xc5P\x0d\xa4\xe8\xe8\xba:EG[\xcf\xdeQ\xc4\xb4\
+f\xd9\x9b\x19O\x08\x81\xcf\xe73\x81\xa7\xb8-c\xb1\
+Qtww\xab\x8c\xd7%\x8e&5\x9cN\x07\xe6\xcf\
+_h0\x12K\x95\xa5\xbf\xe3\xe4\xd4` \x10\x5c\x7f\
+\xf6l\x1f\x96,i\xf8\x9cv\x09\xf4\xf8\x00\xc1,\xa9\
+\x82\xe9H\x00mo\xf0\x04dY\x22\xca0\xaa\xf22\
+\x92\x04\xb4\xb5u\xa3\xa5e\x09\x18\x86C>\xaf\x83\x80\
+a\xac\xeb\xac\x81\xc3\xe1p\xa0\xb9y9\xce\x9e=\x0b\
+I\xd2\x19\xc8q\x1c\x1a\x1a\x1aP]]C\xddSJ\
+L\xe7Q,5\x14\xa6566!\x18\xac\xa0\x9e\xa9\
+\xbe\x14eo\xf4\xf5\xf5\xaa\xb6B\xb1\xd4`Y\x0eM\
+MM%\x01X\x8e\xa6\x02\x8e`0\xb8\xfe\xc5\x17\x8f\
+\x1e\xbc\xfe\xfa+\x1f\x811\xb9A\xeb\x80s/\x01,\
+\x12\x164\xe6\xd3 *\x15.R\x80 \xe1\xf4\xe9\
+\xb3X\xb6l\x098N\x07\x81$\xa1$i\xe0\xf0\xfb\
+\xfdX\xbd\xfa\x0a\xb4\xb7\x9fE2\x99@]\x9d\xc2x\
+%\xb9\xc4\x5cGZL\xf3*\xc3\x0b9\x17\x00\x94\xf1\
+\xfd\xfa\xfazTW\xd7\x94dZ6\xcb\xa3\xa3\xa3\xad\
+\xc0x\xb3\xad\xa1\x19\x89Z\x08\x19\x98\xbb\x18\x87F\xe9\
+4\xbf\x00J\xa4U\x82q\xe4pV\xa4\xc0t\x8d@\
+\x80\x9a\xca\x0d\x80\xd1\x1b\xcc8\xa0\x22\xcb2N\x9fn\
+CK\xcb\x12\xd8\xed6\xf0\xbcb\xd4\x96j\x1b\x1a\x1c\
+\x0c\xc3b\xc9\x92f\x08\x82\x00\xbb\xdd\x0e\x86\x01\xcc\xa0\
+W\x5c\xbav\x08BV}\xbe\x96\xe4\xa43\xb0\xbe^\
+\x03\x8f5\xd3x^\xb77h\xa9A\xeb\xfap\xb8\x0a\
+\x8d\x8dMT\x19T\xc3\xccr\x8cCy\xaf\x14\x9e|\
+r\x17\x9eyf\x17\x07\xc0\x0e\x8b\x09'\x98\x05)0\
+\x938\x80\xb6'\x00\x08!\x1c\x14#P\xbbD\x07\x02\
+-\x09\x1c\x0e\x0e<\x9f\x9f\x94-\xa0\x91\xe6K\xd3\xe0\
+H$\x141\x9dH\xc4\xd5{t\x11\xad3\xadR\xb5\
+\xca\x1dj=\x8c\xe5\xe6\xf3\x22\x06\x07\x07\xd0\xd7\xd7c\
+ik\x10\x02\xf8|^\xcc\x9f\xbf\x08\x0eG\xe9(\xe0\
+l\x8en\xb2,\x83\xbd{_\xc2SO\xedE2\x99\
+\x82,K\xdaX\x0b=\xeb\x88\xee\x883\xa2\xc9\x02\xc0\
+\x1c\x07\xd0\xf6\x94\x04\x90\x89n!\xcbE@P$\x81\
+\x0e\x82l6\x0fz\xcc\x9e\xa6r\xe0\x10\x04\x1e\x9d\x9d\
+m\x88\xc7\xc7)\x8b\x5c\x17\xf9\x0a\xd3\x14\xab\x5c\x0fI\
+\x1b\x9f\x93\xcf+F\xe2\xe0`\x04\xa2\xa8\xb9\xd9\x8c\xa1\
+<\x8f\xc7\x8d\xc6\xc6\xf9\xa0\x17\xa6\x98\xcb\xd1MB\x08\
+\xfa\xfb#x\xf0\xc1\xad\xe8\xee\xee/\x94\x17\x8f\x8fv\
+@\xcf)\xccAW\xbb\x12u\xef\xb4\xd5\xc0t%\x00\
+MD\xadD\xa1\xe7i\x0c4\x03A\x96e\xb4\xb6\xb6\
+c\xf9\xf2%\xf0z\x1dH&\xf9\xd2\x85\x96\x00\xc7\x1b\
+o\x9cA&\x93\x82\x86=\x85\xf1\xca\xf3\x1c\x0e\x07\x16\
+,X\x00\xaf\xd78\x1aIK\x8e\x91\x11\xdaV\xd0t\
+\xbc.\xf6\xedvc\x08y.C\xda\xb2\x0c\xb5\xbdd\
+l\xd8\xf04^|\xf1\xd5B\xb6\x92V\x1f\x9e\xcf\xa4\
+aL*5\xa8^\xcc0.0\x1d\x1b\xc0\xf2\x9c\x12\
+\x06f\xd4\x06\x93J\x02A\x92D\x9c:u\x16--\
+K\xe0\xf39\x90Hd-\x8b-\xd5\x9e\xcd\xcd\xcb\xd1\
+\xd3\xd3\x85\x91\x91\xe1\x0238N\xb1\xcaC\xa1J(\
+\xd2\xa6\xf8\xbe\xb1\xb1Qtww!\x97\xe3\xa1\xebv\
+\x1d<,\xcb\xa1\xba\xba\xa6`\xe0I\x92\xac\xda\x1cV\
+\xf5\x9a\x9c\xea\xd2\xef\xb1~\x19\x9b\x8d\xc5+\xaf\x9c\xc0\
+\xa6M;1::\xa6\x96\xa1\xe4'\xea \x10\xe9l\
+bCF\xf1l\xd0L%\x80\xae1\x0d\x12\xa0<\x10\
+DQ*\x80\xc0\xebu\x22\x99\xccNT|\x81X\x96\
+\xc5\x82\x05\x97\xc1\xef\x0f\xa0\xa7\xe7\x1c\xaa\xab\x8d\x89\x1d\
+f\xc9a\xb4\x15\x8a\x19\x0f(!\xe4\xba\xba\xfa\xa2\xec\
+\xdf\xd2\xde\xca\xcc\xc0\xc1q\x0c\xa2\xd1\x11l\xd8\xf0\x0c\
+N\x9el\x03\x00\xb8\xdd.H\x92\x08\x87\xc3\x81`\xd0\
+\x0bB\x08b\xb1\x04\x86\x87\xfb\xa2(\xee\xf9\xe7\xdd\x06\
+(G\x9a\xe9\xa5J\x00\x85\x01\x13\x01A\x92$\x9c>\
+\xdd\x86\x15+\x96\x22\x18tcl,c\xd1SJ\x0f\
+\xa5\x86B\x95j\x8f7\xdd\xa1\x16!\x08<\xda\xdb\xdb\
+\x90L\xc6-\xa3w\x84\x00\xc1`\x10\x8d\x8d\xf3`\xb7\
+[\x1b\x89\xdauVT\x0a\x1c\xe5b\x1c\x0c\xc3\x80a\
+\x80\xad[wc\xe7\xce\x17\x91\xcf\xe7a\xb7\xdb\x10\x0e\
+\x07\xe1p\xd8\xc0\xf39\x08B\x1e\x0c\xa3\xac\x9bp\xf6\
+\xec9\x0c\x0c\xb4\x0db\x96\x99N\xd3l\x00\xa0@\xb4\
+\xdf<\x19 H\x92\x84\xd6\xd6N,[v\x19\x82A\
+\x97%\x08&\x1aJ5\x93 h\xe1\xdf!\xe8\xae \
+m(*Fb]]\x03\xbc^=\x0aXZ|\x97\
+ns\xab{\xac\x80\xc1\xb2\x04v;\x87\x13'\xce\xe0\
+\xb1\xc7\xfe\x88Hd\x18\x0c\xc3\xa0\xba:\x8c`\xd0\x87\
+|>\x8f\xf1\xf1$x>\x07\x86!\x18\x1d\x8d\xa3\xbd\
+\xbd\x17\xe1p\x00\xa0b-\x98\x03\x10\xcc\x06\x00d\x00\
+\x85\x09\x154M\x06\x08<\xcf\xe3\xf4\xe9\xf6\x02\x08b\
+\xb1b\x10\x94f\x8e~\xac\x8d\xd2\xf5\xf7\xf7\x98\x98\xae\
+\x97\xa1\x19x\xe5$\x87\xd5\xebM\x17\x1c\x0cC`\xb7\
+\xb3\x88\xc7\x13\xf8\xcdo\xb6\xe1\xd5WO\x03\x00\xfc~\
+/\xea\xea\xaa`\xb7\xb3\x18\x1fO!\x1eOB\x92\x14\
+\xd5\xa0\xa9\xd2ht\x146\x1b3\xe7\x9f\xe1\x99)\x00\
+\xb4f\x93\x19F\xf3\xa1\x8b\x83A\x13\x01A\x10x\x9c\
+>\xdd\x81e\xcb\x16\xa1\xb2\xd2\x83X,e\x08\x1dO\
+F\xb7\xf2|\x16##\xd1\xa2\xe8\x1d\x00\xb0\xac\x0d5\
+55\xa8\xad\xd5\x86yKq{\xaa\xae\x5cip\xd8\
+\xed\x1c\x18\x06\xd8\xbb\xf70\x1e\x7f|;r9E\xdc\
+/X\xd0\x00\xaf\xd7\x85t:\x8btl\x00\x99\x14\x00\
+\xb0\xe08-\xdbX7\x00;::\xbbL\x15\x96Q\
+\xba\xf2\xd3\xa2\xa9\x00\xa0\xec\xc3\x8b\xdd@\xed\x96\xc9\x01\
+!\x97\xe3q\xe6L\x07\x9a\x9b\x17\xa1\xa2\xc2\x8b\xd1\xd1\
+\x14\xf2y\x91\xba\xb7|\xcc\xc0\xe5\xf2\xa0\xa5e\x15\xda\
+\xda\xde@*\x15\x87\xe6%\xd5\xd5\xd5\x1bB\xb7\xfa=\
+\xd6\xafX:@79p\xd8l,\x5c.\x1b\xce\x9e\
+\xed\xc2\x83\x0fnA\x7f\xbf\x920\xd2\xd8X\x83\x86\x86\
+\x1aH\x92\x88\xe1\xe114y\xce\xa2\xa1*\x81q\xbf\
+\x0d\xaf\x8d4A\x90\x1d\xd0\xc6,\xb4M\x8d\x9a\xce\x19\
+\xf3\x81\xd9S\x01r4\x1a\xed\xa8\xae\xae^A\x0f\xc9\
+N\x15\x08\x82\xc0\xa3\xb5\xb5\x03K\x97.B(\xe41\
+\x80\xa0|@E9\xc9\xb2\x0c\x96.m\xc6\xc0@?\
+r9\x1e\xb5\xb5\x0d%\x0d\xbc\xc9\xa8\x15\xabg\x948\
+\x0b\x86!p\xbb\xed\xc8f3\xf8\xdd\xef\xb6a\xdf\xbe\
+W\x00\x00\x81\x80\x0fK\x97*\xb9\x0a\xb1X\x1c\x83\x83\
+#\x10\x84\x1c\x9a\xeb\xb3p\xb8\x09\x02#\x02\xae\xaen\
+\xc7\xf1\xd8e\xc8Hn\x03\x00\xd4\x19K\xa5\x18?+\
+`\x98,\x00h\x0e\xd2\xa3R\x85\xb8\xf4\xd8\xd8\xe8\x90\
+bd\xc9\x06\xe6\x97\x03\x02M\x1a\x10\x04!W\x00A\
+8\xecE<\x9eF:-\xa8\xd7L\xae\x17\xea\xa2^\
+{\xa6\xd5=S3\xeeJ\x03\x83\xc0\xed\xb6\x81e\x09\
+\x0e\x1c8\x82\xdf\xff\xfe\x8fH\xa5\xd2\xe08\x16--\
+\x97\xa1\xb2\xb2\x02\x82 \xa0\xbb{\x00\xa9T\x06\x0cC\
+ \x8a9\xd8X\x19\x0e?\x03\x9b\x8b\x81tN\xc0\xaa\
+\x8a6\xb4'\xe7cL\x0c\x81\x10\xc5@\x8e\xc7GN\
+R/1'\x92`\xaa\x12@6\x1d\x17\xb6?\xfca\
+\xe3\xc1\xb7\xbf\xfd\xc6\xff\x09\x00\x92\xa4\xd8\x01\x13\x01\x81\
+\x96\x04\x1a\x11\x02\xe4r9\xb4\xb6v\xa2\xb9y!\x02\
+\x01%\xb12\x9d\x16f9\x14;s\xcb\xdf\xe5\xb2\xc1\
+\xe5\xb2\xa1\xb3\xb3\x0f\xbf\xfb\xdd\x16tu\xf5\x01\x00\xe6\
+\xcf\xaf\xc7\xe2\xc5M \x84`pp\x04\x91\xc80\x08\
+!\xe08\x16\x92$B\x96e\x84\x83\x22\x08\xc3\xc2\xe6\
+\x00|M6$\x07rX\x8avtfd\x8cJ5\
+\xd0\xa4\x0a\x8a\xdb|Vi\xba*\xc0,\x05\xa4}\xfb\
+\xf6\x0c\x8c\x8f\xc7\xba\x83\xc1\x8a\xf9Z\x90d&@\xc8\
+\xe7\x15\x10,]\xaa\x83 \x95\x12\xca0\xed\xfc\x81\xc3\
+\xe1`\xe1\xf18 \x08\x02\x1eyd\x1b\xf6\xee}\x19\
+\x82\x90C8\x1cDK\xcb\x22\x04\x02\x8a\xe4\xea\xe8\xe8\
+A.\x97\x07\xcb\xea\xd6}.\x97\x03\xcbr\xaa\x1c$\
+\x00\x01\x1c.\x0e\xf6\x85,\x92\xbd\x02\xe6\xcb\xed\xf0\xe5\
+\x13\xe8\xe2/\xc3\x0c\x97o\x98\x14M\x08\x00Y\x96\xb5\
+Q\x1e\xb3\x08*0\x1f\xea(\xd5\xbe}{\x9e\xb9\xe3\
+\x8e\x0f\xfd\x83\xc6\xe4\x99\x02!\x97\xcb\xe1\x8d7\xba\xb0\
+t\xe9\x22\x04\x02n\xd8\xed,b\xb1L\xc9\xba\xce5\
+88\x8e\x81\xd7\xab\x18k/\xbdt\x1c\x1b7nG\
+,6\x0e\x9b\x8d\xc3\xca\x95\x97\xe3\xb2\xcb\x1a\xc1\xf3\x02\
+\xda\xdaz16\xa6\x0cV\xd1\xcc\x97e\x19\xa2(\x16\
+V Qk\x00\x10\x02\x86\x10\xcc[\x11\xc4`W\x12\
+\x18\x18B.\x9f\xc7\x91\xb1s]\xc6\x0b/|$\xb0\
+$\xf3\x01\x88\xdf\xf8\xc6\xff\xdd\xb5t\xe9\xb2U\xcb\x96\
+-\xbf\x01\xd0\x99<\x13 \xe4r9tt\xf4`\xd1\
+\xa2&\xb8\x5c\x0e\xc82\x10\x8b\xa5-\x197\x9b\xc3\xb2\
+\xca=\xcaM\x0cC\xe0\xf5:\xe0p\xd8\xd0\xdf?\x88\
+G\x1e\xd9\x86\x13'\xce\x02\x00\x16,\xa8\xc7\xea\xd5\x97\
+\xc3n\xb7\xa1\xafo\x08\xe7\xceE I\x12X\x965\
+xF\x84\x10d\xb3\xd9\x02 4\xa6\xeb\x81T\x02\x99\
+\x10\xcck\x0e\x022 \x0f\x8c\xe0#\xeb\xb8\x8f\xb4\x9e\
+v\xbd\x14\x19\xcdhK\x97X\x05\x85\x080\xfd\xc4\x90\
+I\xad\x0fP\x18\xe75&\x82:\xa0|GP\xfb\x92\
+\x98\x0f\xcaG\xa4\xfc\x8f=\xb6\xf9s--\xab\xae\x07\
+\xf4\x06\xd6\x96\x82\x01dH\x92\xf6\xbf\xb6\xdcJ\xf15\
+\xe6\xff\xddn7\x16-j\x82\xcd\xc6!\x9d\xe6\x11\x8b\
+\xa5K\xd5u\xaamP\x12\x1c\x84\x10x<v\xb8\x5c\
+6\x08B\x0e\xdb\xb6\xed\xc1\xf6\xed\xfb!\x089x<\
+n\x5cs\xcd\x0aTWW \x95\xca\xa2\xb5\xb5\x1b\xa9\
+T\xba\x88\xe9t<\x22\x99LB\x0bP\xddz];\
+\x9c\x0e\x16 DK\xa8\x80\xc7e\x83\xcf\xa7\xe4>\x8c\
+FR\xe8|}\x04\xc9d\xa6\xe3\x99\x97\xde\xf8\xd7g\
+\x0eu\x1c\x05\x90\x04\x90\x06\x90E\xf1\x1a\x03\xb2\xdaV\
+S\x02\xc1T\x01@@M\x05\x87\x02\x02\x17\xa8O\xc9\
+i\xfb\x8d\x1b7\xff\xfd\xca\x95\xab\xaf\xa1\x99\xa8\xed\xa7\
+\x0b\x04\xb7\xdb\x8d\x85\x0b\x1ba\xb3q\xc8\xe5\xf2\x88F\
+\x93e{\xb0\xc5{L\xfaZ\xb7\xdb\x06\x8f\xc7\x01\x96\
+eq\xf4\xe8)l\xdc\xf8\x0c\xfa\xfb\xa3\xb0\xd984\
+7/\xc4\xca\x95K \x8a\x22\xba\xba\xfa\xd1\xdb;h\
+\x1a\xc13o\x0c\x04![\x98\x81\xc4\xb1\x12n\xbe\xaa\
+\x13N\x07\xab\x80O\x05\x8c\xc3\xce!\x14tB\x93\x0a\
+#\x03)t\x9f\x19F6\xcd'\x9f>\xf8\xc6\xdd[\
+\xf7\x9f=\x02\x1d\x00\x02\x8c\x8bOM\x0b\x04S\x01\x00\
+\xa0\x03@\xcbR1K\x01M\x12\xf8\x00x7n|\
+\xe2\xefV\xae\xbc\xe2j\xb5R0\xef\xa7\x03\x04\x9f\xcf\
+\x8b\x85\x0b\x9b\xc00\xa4\x00\x02I*~\x87\xa9\x0a\x02\
+\xed\x15\xedv\x16^\xaf\x13v;\x87ht\x14O<\
+\xb1\x13\xfb\xf7\xbf\x0a\x00hj\xaa\xc1\xda\xb5\xcb\xe1\xf3\
+\xb91::\x8e\x93'\xdb!\x8aRQ\x04O\x97\x00\
+\x0c\xd5\xfb\xf5\xa9\xea>W\x0a7\xae\x89\x80\xd1\xa4\x04\
+\x98\x02\x08\xea\xaa\xdd\xd0\x00@\x08A*.\xe0\xd4\xe1\
+>\xf0\xe9l\xb2\xado\xe4\xfb\xdf\xdf\xf8\xd2F\x00\x19\
+\x00<J\xaf42i\x10Lz\x89\x98\x12j\xc0\x0e\
+\x05\x00f\x10h@\xf0l\xdc\xf8\x87O\xafZ\xb5f\
+\x9d\x15\x00\xb4\xfdT\x81\xe0\xf3y\x0a \x10\x84<\xa2\
+\xd1\x84\x05\x08\xca\x87\x8e\xcd\xc4\xb2\x0c\x02\x01'\x1c\x0e\
+;\x04\x81\xc7\x9e=\x87\xb1u\xeb\x1e$\x12Ix<\
+n\x5c}\xf5r45\xd5\xa9+\x9dw \x16\x8b\x1b\
+\xc4\xbc\x0e\x00\xc6\x00\x04\x86!\xe0y\x1e<\xaf\xe4=\
+\x10B\xe0w\xa5\xf0\xb6+\x06\xc0\x10F-\x03 \xea\
+\xb9\xca\xb0\x0b6\x8e\xa1\xc7\xd9!\xa4\xf38s\xa4\x0f\
+\x89\xf14Z\xcfE\xbf\xf6\x83\x8d\x87\x1f\x85\x02\x00\x1e\
+\xc5k\x13O\x09\x04\xd3\x01\x00\x0d\x02;t\x10h\x9f\
+\x96\xf5\xc0\x08\x04\xf7\xc6\x8d\x9b\xefZ\xbd\xfa\x8auf\
+\xa6\x9a\xf7S\x01\x82\xd7\xab\x83@\x92d\x0c\x0d\xc5\x91\
+\xcb\xe9\xa1\xe3\x09\xde\xa6p\xa4\x19x>\x9f\x13\xb2\x0c\
+\x9c9\xd3\x8e\x87\x1f\xde\x86\xee\xee~\x00\xc0\xea\xd5K\
+\xd1\xd2r\x19\x9cN;\xba\xba\xfa\xd1\xd1\xd1S$\xe2\
+\x95q\x10]\xef\x9b\xa5A<\x1eWG\x1c\x95\xdf>\
+g\x0ao[\xd5\x07B\xb4\x9e\xaf\xde\x0b \xe0s\xc0\
+\xe3\xb1\xa9\xb5$\x85\xea\x8ay\x09'^<\x87\xc4X\
+\x0a\xb1df\xcb?\xfdr\xcf\x17`\x04\x01\xbd\xfa\x98\
+f\xa4O\x08\x82\xa9\x02@k=z^ \x0d\x027\
+t\x9b@\x93\x08\x1e\x00\x9e\x8d\x1b7\x7fj\xf5\xea+\
+\xd7Y1\xd5\xbc\x9f,\x10\x8c \x9008h\x04\xc1\
+Dj@a\xbc\x0b\x0cC\x90L\xa6\xb0q\xe3\xb38\
+x\xf08x^@mm\x18\xeb\xd6\xad@ee\x05\
+\xe2\xf1$N\x9f\xee@&\xc3\x1b\xf4\xba\xc2hk\xa6\
+\xd3~\x7f*\x95V=!\xe5?\xaf3\x85\x1bV\xf6\
+\x17\x98^\xf0\x0a@\xe0rs\xa8\x088\xd4\x86\xd6\x01\
+\xa0\xfdn=\xd6\x87\x81\xae\x11\xc4\x92\x99-\x0f\xed8\
+\xfe\xad\x13\x1d\xb1(\x14U`\xa5\x0e&\x04\xc1\x94V\
+\x09+!\x05\xb4\xd5\xc14{\x80\x96\x04\x9a4pC\
+\x01\xc1\xdf^q\xc5\x95\xeb\x8a\x0d<=el\xaa@\
+\xf0z=X\xb0@\x97\x04\x83\x83\xe3\x13J\x02\x87\x83\
+C(\xe4\x05\xc71\xc8\xe7\xf38p\xe0Ul\xdc\xb8\
+\x1d\xf1x\x12v\xbb\x0dW]\xb5\x1c\x97_>\x1f\x00\
+p\xfat\x07\xa2\xd1X\x81\xe94\xc3\xad\x99\x0e\xc3u\
+\xe3\xe3t\xefW\xad}G\x12\x7f\xb1\xbcO\xf5\x00\xf4\
+akB\xd4\xc9\xa5a\x97\x81\xe9j\xe3\xab\xbf\x81\xb6\
+\x13\x038\xd76\x88,/\x9cy`\xdb\xab\x1f}\xbd\
+s,\x0a\xc5(\x9c\xf2\xeac\xd3\x01\x80V\x0f\xcd \
+d\xa0.\x11\x83bu@K\x017\x00\xf7\xd6\xad\xdb\
+\xff\xa1\xb9y\xd9\x0akK\x7fz@\xf0x\xdc\x05\x10\
+\x002\x86\x87\x93H\xa5x\xad\xce\x85\xfa\xdbl,*\
+*\xdcp8\x14\x11\xdb\xdb;\x80\xdf\xfev+\xce\x9c\
+\xe9\x00\x0047/\xc2\x95W.\x85\xd3\xe9\xc0\xc0@\
+\x14]]\x03\xc8\xe7s\x06\xbd\xce\xb2V\x0c\xb7\xee\xfd\
+\xa2(\x22\x91\xd0g\x17i r\xd9\xd3X\xb7\xa4\x13\
+\x0e;c\x09\x82\x86Z\xaf\x81\xe1\xea\xcd\xeao%\xa8\
+2pn\x04'_\xee\x84 \x08}/\x9e\x1c\xf8\xfb\
+\x0d\xcf\x9dy\x15\xc5 \x98p\x91\xea)\xaf\x13h\xa1\
+\x0a\x0c\xcb\xc4@\x01\x81\x0b\xbaJ0\x80\xa0\xba\xba\xb6\
+\xf2\x89'\x9e\xba\xa7\xaa\xaa\xba\xde\xcc\xe0R@\xa0\xcf\
+\x97\x02B \x10DccMa\xcd\xbf\xe1\xe1D\x01\
+\x04\x0cCPQ\xe1\x86\xc7\xe3\x04\xa0\xac\x0b\xfc\xe4\x93\
+{\xb0s\xe7\x8b\xe0y\x01\xc1\xa0\x1f\xeb\xd6-W\x92\
+4\xc4\x11\xb4\xb7\x9eE\xef\xb8\xab\xc8\x98S\xf6\xa5\x19\
+n\x06F2\x99B.\xa7\x03\x88a\x94\xa4\xd8lv\
+\x0c6\x12\xc1\x0d\xab\x00\xaf\x9bNGW\xee\xab\x0a\xbb\
+\xe0\xb0\xb3EL7K\x85\xe8\xc0\x18^\x7f\xa9\x1d\x99\
+\x0c\x9f8\xf0\xfa\xb9\x8fox\xae\xed\x18t\xef\x80\x9e\
+GP\x12\x043](\x12\xb0X#\x18\xba:\xd0@\
+\xe0\xa16wmmmx\xd3\xa6\xa7\xbeX]]S\
+_\xde\xf7\x9f\x1a\x10\xfc\xfe \xe6\xcd\xd3\xe7\x0d\xc6b\
+I0\x0c\x81\xcf\xa70S\x92$\x1c?~\x06\x0f=\
+\xf4\x14\x06\x07G\xd4\x10\xee\x12\xb4\xb4,\x02@\x90\x1c\
+>\x0a\xf7\xe8\xab\x90\x04\x09\xdd\xb9\xc5\x18\x97kKX\
+\xfa\x13K\x00Q\x141>\x9e\x00\xcb\xea\xcc\xe5\xf98\
+\x92\xc9A\x88\xa22\xbaig2\xfc\x8dkI.\x1c\
+t{\x89\x16\x0f\x00A\xc0o\x87\xdf\xeb,f\xba\x85\
+TH\xc6Rx\xe9\xf9S\x10\x04\x01\x9d\x03\xa3_\xf9\
+\xe1\xef\x8fn\x80.\x09&\x5c\xae~\xa6K\xc5j\xf5\
+1\x83\xa0\x94:(\x80@\x91\x04\xdb\xee\xa9\xa9\xa9\xae\
+\x9f8\x084y \x84\xc3a\xd4\xd6\xd2)_\xca\x8d\
+\x03\x03Ql\xda\xb4\x03\x07\x0f\x1e\x07\x0044Tc\
+\xcd\x9ae\x08\x04|H$R\xe8\xe8\xe8A\x83\xff\x0c\
+\x167\xa6\x11mK\x03y\x09#R=\x86\xc8\xe5&\
+\x00L$\x01\x94\xf3z\xef'\x90\xa4\x1c\x12\x89\x01d\
+\xb3\xba\xbb\xda\xd5\xd5\xf9\xf2\x9e=\xcf\xef\x0f\xfam\xcc\
+/\xef\xfd\xf0\xc7j\xaa\x025Z\xb7r;m\xa8\x0c\
+\xb9\x0bL63]\xf9M\x0a?3)\x1eG\xfet\
+\x1ac#\x09\xf4\x0e\x8d\xdf{\xef\x86#\xbf\x82Q\x12\
+\x14\x81`F\x00\xd0\xebBh)@\x07\x89\xac\x0cC\
+\x17\x8a%A\xe5\x13O<\xad\xaa\x83\xc9D\x03'\x07\
+\x84p8T\x00\x01\xcf\xf38t\xe88\x1e|p+\
+\xb2Y\xa5\xe7\xad[\xb7\x1c\x8b\x165\x82\x10\xa0\xab\xab\
+\x1f\xf1x\x0a\xc9d\x0a\xd7/\xefCu\x05\x0fY\x92\
+1\xd2\x93F>\x91\xc38j1\xc25C&\xb6I\
+J\x00\x06\xb2,\x15\x06\x83\x12\x89A\xa4R\xc3\x85\x05\
+\xa8b\xb1\xd1\xae\x17_<\xb0}`\xa0o@k\xc7\
+\x80b\x0e?z\x00\x00\x10\xb6IDAT\xcf\xe6\xfa\
+\xfe\xd7?rg\xcb\xe2p3\x08`\xe3\x18\xd4\xd5\xf8\
+\xca2]=\xa1\xf1\x01\xf9\x5c\x1e\x07w\x1dGl$\
+\x81\xf1Df\xf3W\x7f{\xe8\x1f\xa1H\x02+\xe3P\
+\x86\x0a\x82\xd9\xfc^\x00m\x18NV\x12xjkk\
+\xc3\x9b7?}OU\x95\xa6\x0ef\x07\x08\x1cg\xc7\
+\xbe}\xaf\xe0\xc8\x91\x93\x18\x1bS\xe6\x0fr\x1c\x87\xab\
+\xaej\xc1\xf2\xe5\x8b\x11\x89D\xd1\xd5\xa5L\xc1\xca\xe7\
+E\xa4RI\xdc\xb02\x82\xaa _`\xeaPG\x1c\
+|\x5c\x80\xc0x\x11u^\x070\xf6\x12\x12\x801\xd8\
+\x08\x89D\x0a\xe3\xe3#\x88\xc7\xfb!\x08Y\xc8\xb2\x8c\
+L&=v\xfc\xf8\xb1\xa7O\x9e<q\x02F\x0b\xbd\
+\xd0y~\xf8\xcd;\xef\xbc\xf6\x8ay\xd7\x10BP_\
+\xeb\x05\xa7\xa6\xb1Y1\xdc\xc4\x83\xc2\xf9\xa3\x07O\xa3\
+\xfb\x8d~$\xd3\x99\xdd\x1b\xf7\xbc\xf1\x8f\xc7\xdbcf\
+\x0f\xc1\xe0\x1d\xcc\xe6'ch\xf7p\x22\x17\xd1\xa0\x0e\
+jkk+7o~\xfa\x1e\xc5&\x98\x5c4\xd0\xfa\
+\x1a\xfd|WW?\x1ezh[\xa1\x8e\x1e\x8f\x1b\x0b\
+\x17\xd6\xe3]\xef\xba\x1a\xaf\xbf\xde\x86\xa1\xa1\x91\x02\x03\
+\x13\x89$DQ\xc4\xf5\xcb\x07P]\xa1\x02@y1\
+\x88\xc9<\x06\xdab\xe0\x89\x17q\xd7\x1a\xe4mA\x13\
+\xd3\x8d6B>\x9fG{\xfb\x09\xa4R1\xb5\xce2\
+:;\xdbv\x1f8\xb0\xff\x05A\x10\xe20\xf6DP\
+m\xc6\x01\xe0\xbe\xf0\x99[\xde\xf5\xc1\xf7,\xbb\xad\xba\
+\xd2\x03\x97\x93C9\xa6'\xc7\xd38\xd7>\x94iY\
+\xb3\xd0\xc5P 9s\xbc\x03\xa7\x8e\xb6#\x91\xc9\xec\
+\xfa\xe7\xff<|\x17\xca\x8c\x1d\xccJ\xc6\x81\xacqC\
+\xd71\xda0q\x1e\x0a\xf2x\xb5\x12\x19(\x83\x19i\
+\x00)uKG\x22\x91\xe1\x0f~\xf0\xd6\x9f\x0c\x0d\x0d\
+\xf6\xeb\xba\x96\x81~\x5cl\x84Y_\xa33C\xad\x17\
+\x00mu\xcf\x0a\x5cye3^{\xed\x0d\x0c\x0f\xc7\
+\xc0\xaa\x9f\xb9\x95$\x85I\x8ca\xaa\x0f\x01\xd4\xb2\xfd\
+\xd5n,\x5cQ\x05\x17\x93B0\xb5\x1f\x0e9\x01\x8e\
+c\xc1q\x0cX\x96)\x94\xc3q,\xe2\xf1!\xb4\xb5\
+\xbd\x8cDb\x04\x92$ah(zj\xcb\x96'\xee\
+\xdd\xb3\xe7\xf9\xa7\x04A\x88\x02H\xa8[\x9c\xda\xc7\xa9\
+\xffS?}`\xc7\x8e\xef\xff\xe2\x85_&Sy\xc1\
+\x1cV\xd6c\x11\x0c\x18B\xd0\xdb6\x8c\xa3\xafv\xf7\
+\xb7u\x0e\x1d'\x0c\x03e#Xv\xe5e\x08\x84\xfd\
+`\x08\x13\x84\x22\x81m\xeaF\x0f'\x03\x98\xc5\x94\x13\
+\x0b\x10h.\x88\x06\x02\xc1\x04\x82\x14,@\x10\x8dF\
+\xfa\xcb3y\xf2@\xd0@\xe0t:\x10\x0c\xfa\x91\xcb\
+\xe5\x11\x8b%T\xa6)\x0c\xccd2`\x18\xe5X\x14\
+a\x0a\x1f\x12\xe4r\x12*\x1b\xbch\xb9\xba\x01\x0eN\
+\x86wl/\x1c\xd9\xae\x02\xe3Y\x96\x85(f\xd0\xd7\
+w\x0aCC\x1dH\xa5\xd2\xc8f3\xb1?\xfdi\xef\
+\xaf\xb6m\xdb\xfc@,6r\x0e\xca0.\xcd\xfc8\
+\x80q\xea\x98\x06A\xf2\x99\xddG_\xfb\x97\x9f>\xfb\
+\xff\x06\x87\x13\xfd\x1a\xd3\x01%\x7f\x80!(\xe4\x11\xf0\
+\xd9< \x13\xe6l\xd7\xf0 \x00\x03H\x9c\x0e;l\
+\x9c\xad\x81\x02\x80yn!\x03\x80\xcc\x1a\x00,@ \
+\x9b@ \xc0(\x092*\xf3\x934\x08\xee\xbc\xf3\xf6\
+\xfb\xa3\xd1\xe1>=\xbe>} h\xc4\xb2,\xecv\
+\x1b\xce\x9d\x1b(0\x9eeYu&\xae6e\x8b\x81\
+\xdb\x99\xa7\xdc-\xe5\xfe\xbc(\x83\x10\x06\x9e\x80\x03\xab\
+n\x98\x07\xbf\x8f\x85#v\x08\xb6t\x07\x08\x9102\
+\xd2\x85\xae\xae\xe3H\xa5\xc6\x90Je\xb2mmg\x9f\
+\xdb\xb0\xe1\xe1\xef\x9c=\xfb\xc6\x09\xf5\xdd\x92&F\xd3\
+\x9b\x06\x82\x02\xf3\xb5\xed\xa9\x1d'\xce\xdc\xfa\xd7\xbf\xfc\
+it8\xdeO3]\xeb\xe5D\x1f|\x22\x90\xc1\x9a\
+\xa5\x85\xcda\x87\xc3\xc6\xd5[\x00\x80v\xe1g?\xe9\
+l\x02\x10\x98\xd5\x81&\x0d\xb4\x17OE\x22\xfd#\x1f\
+\xf8\xc0\xfb~\x12\x8d\x0e\xf5)zv\xfa@P~3\
+\xe0y\x1e\xa2(B\x10\xf2\xe08\xb6 \x01\xb2Y\x1e\
+\x0c\xa3\x1cs\x1c\x8b\x80GQ\xcbf\x10\xe4r\xca\xca\
+WN\xb7\x03+\xae\x9f\x0f_\xd0\x05\xdb\xc8\x01\xa4\xdb\
+\x9f\xc4\xc8H\x1f$IBOO\xcf\xd1\x07\x1f\xfc\xed\
+\x0f^x\xe1\xf9\xa7\xa1K8\xba\xe7\x9bE\x7f\xb9\xff\
+\x93\x00\x92\x91hz\xe4\xca[~\xfc\xbd#'z_\
+62]yG\xbb\xdd\x86\xfaJ\xff\x02\x8ea\xdcz\
+0Iy\xf7\x0a\xf5\x83\xde(\x9eZNg\x14\xcdM\
+\xd6!\x05\x02s\xdaX9\x10h\xea \x19\x89\xf4\x0f\
+\xdfq\xc7{\xee\x8fF\xa3}\xa4\x10[\x9f:\x10\xb4\
+-\x9fW>X\xad\xf7~\x06\xb9\x5c\x1e\x0c\x83\x824\
+`\x18F\x15\x88\xba\xdfM\x08\x01\x01\x03Q\x95\x02 \
+\x80\xcd\xc6a\xcd\x8dKP;?\x84\x0a6\x8e\x1a\xe9\
+\x5cv\xff\x0b\xbb\x7f\xbfi\xd3\xa6\xc7y\x9e\x8f\xa1X\
+\xba%J\xec\x93\xd45\xe6\xff\x0d\xdbm\x7f\xf3\xc0\x7f\
+m\x7f\xfe\xd4\x1f\xf5E0\xd4\x88a}\x00,\xc3\xe0\
+\xed\xeb\x16_G\x88\xa2\x22\x0a\xf5V\xdb\x0cz\x94\xd6\
+\x0c\x00`\xb6U\x00MT\xb8q\x22\xc30MmZ\
+\xcaS*\x12\x89\x8c\xdcq\xc7-*\x08\xb4\x10\xec\xd4\
+\x80\xa0\x89vm\xd3\xf56\x07\x9e\x17\x0a\xba_\xdb\xd4\
+61\xb5\x11\xc0\x0b\xb2\xf1\xd9\x00\x9a\xd7\xcc\xc3\xbc%\
+\xd5\xa8rd\x9d\x1f\xb9\xa6\xf2\x1d^'\xc3\x96x'\
+\x0d\xdc\xf4o\x1a\xf4\xe6N`\x05\x82\xd4]\xf7<\xba\
+\xf97\x8f\xee\x7f\x84\xe7\xf3\x19\xad.\xf5\x0b*q\xcd\
+\xbb[\xe0\x0fy\x0cL\xa7U\x01\x8c\x8c/\x9ad:\
+\xa7y\xc7\x93\x04\x01\x0f\xbd\xc7d\xa0\xf7\x8cT$\x12\
+\x19\xb9\xfd\xf6[\xee\x1f\x1eV@0U \xd0\xe7=\
+\x1e\x17l6\xc5Z\xcf\xe5\x04\x83\xeeW6u\x81\xeb\
+B\xc4U\x05\x02!\xca\xc7\xa5\xa0\x1a\x96ZC\x83`\
+\xc9\xaaF,_\xb7\x10a\x9f\xbb\xee\xde\xbf{\xd7=\
+k\x97T\xd5Q\xef\x94\x85Q\xcai\x9b\xf6?\xfd\xee\
+\x93\x01A\xf2\xeb?|f\xcf\xe7\xbf\xfe\xfb\x9f\xf1\xd9\
+\x5cF\xab\x8b\xbf\xc2SH&\x81\xe6\x05AQ\x17B\
+N\x1aD1\xf3\x0d4\xe7\x89\xe7\x14\x08\xe8\x8f&\x96\
+R\x07ZO)4B$\x12\x19\xbe\xed\xb6\x9b\xef\x8f\
+F\xa3}\xc6^^\x0c\x04\xbd\x17h\xe2\x9f)\x80\xc3\
+f\xe3TQ\xafd\xe8\xd0\xbd_\xbbN\xc8\xcb\xea\xc0\
+\x8b\xd1\x13\x10%@.X\xe1\xc6g\xd5/\xa8\xc4\xea\
+\x1b\x96 \x10p\x85>\xfd\xfe+\xfe\xe9/\x96\xd76\
+\xc2\xe8\xf9\xe4Jl\x02\xb5/g \x1b\xd4\xc5S;\
+O\xb6~\xf8\xee\x07\xbe7\x14M\xf4\x19\x98\xae\xb5\x85\
+j+\x8cD\xc6\xc1\x8b\xd2\xe0D\xfc\x99\xfb\x99\x07(\
+\x92\x04t\xe6\x0a\xddPZo0\xbb\x88\xa9H$\x12\
+U@0\xd4W,\xeeu \x18\xff\xd7{6-\xe6\
+\xb3Y\x01\xb2\x0c\x93j`\xe0r\x88`\x0b\xd1\x14\xbd\
+\x97\x135\x00+\xe6e\xfd\x7f*\xd6@\x08AMC\
+\x08W\xbfk9\xdc\x1e\x87\xfbo\xde\xb3\xfaGw\xbf\
+o\xf9M\xb0H\x9b/\xb3\x99\x81Pd\x17\x81\xf2\x96\
+^:\xdas\xee\xe6\x8f\xfe\xecG\xdd\xbd\xb1\xb3\x05\xa6\
+\x17\x5c_\xa5\x8ebND<)t\xc0h\x90\x17E\
+\xfd\xce\x0b\x00\x00Ku\xa0\x01\xc0\x0a\x04\xe6\x06HG\
+\x22\x91\xe8\xad\xb7\xdelR\x07V@\x80\xc1\x00d\x18\
+\x06\xc1\xa0\xd7\xd0\xfbi@h \x008$2.\x83\
+\xfb\x08\xa2\x03B\xc8I\x06\xa6\xd3\x01\x19\x86\x10\x04\x82\
+^\xbc\xed\xbdW\x22\x10\xf2a\xed\xb2\x86/~a\xfd\
+\x9a\x8f\xc2\xca\xa0\xa0\x9a\x04\xd6@(\x1583H\x83\
+\xbe\xa1Dt\xed-\xf7\xdew\xecd\xcfA30\xf3\
+9\x11\xf1\xb1\x14^<\xd9\xbb\x03\x16\xb9\x82\xd4\xf3\xcf\
+\x1f\x00\x80\x926\x01\x0d\x00s\x0f0\xb9\x88\x91\xe8\xad\
+\xb7\xde\xfc\xe3ht\xc8\x22N\xa0\xf7|]\x0d0\x05\
+\x10\xb0,\xa3\xa6e\x93\xa2\xde\xcf\xb2\x0c\xf8\x9c\x84?\
+\x1d'\xe8\x8eh+\xb1\xa9v\x92\xaak\x85\x5c\xde\xc4\
+\xf4b\xdf\xdc\xedu\xe2\xba\xbf\x5c\x85`\xc8\x87\xa5M\
+\xe1\xcf\x7f\xef\xaek\xff\x15\xc6\x05\x9e4?\xbc\xa8i\
+P^\x1a\xd0\x12\xd1\x00\x84\x9b\xd6\xff\xec\x97[\xb7\x1f\
+\xdd\xa8\xabC\x16\x83=#\x88\xa7\xf8\x13\xbb\x8ft\x9f\
+\x81q$\xd00$\x8c\xd9\x0a\x05O\x85&0\x0c\xcd\
+\xba\xd0\x1c6N\x0e\x0c\x0cDo\xbf\xfd=?\xd2\xd5\
+A) \xe8\x9b$)V|&\xc3\x17\xf5|\x86a\
+02\xd2\x877\xde8\x82\xe8\xf0\x10\x9e\xda3:~\
+\xbam\xf0,\xa1z?@ \x08\xb2%\xd3\x09CK\
+\x05\x02\xbb\xc3\x86w\xdcz\x15\xe6-\xaeC8\xe0\xbd\
+\xf5\xfbw_\xf7\xf3\xcb\x1b\xfda\xe8\xfe\xb8\xd9%\xd3\
+\xda\xc2,\x195\x10\x98\xa3\xa7E\xc6\xe1]\xf7<\xbc\
+\xe5\xd1-/\xfdG.\x9fO\x89\xf9<^>\xd4v\
+\xe2\xbeG\xf7}\x13\xa53\x84\x0a\xea`V\x06\x83\xa6\
+C\xc4\xd8\xc2V\x03H\xda\xc4\x13:\xd9\xb40\x8a\xd8\
+\xd0\xd0P\xf9\xcc3;\xbeTYY\xd3`\x1c0\xd2\
+\xc6\xdb\xfb\xf0\xdf\xff\xfdt\x01\x04W\x5c\xb1\x14\xc9d\
+\x8a2\xe0\x80Tj\x1c}}g\x91J\xc5!\x8a\xf9\
+l__\xff\xa1}\xfb\xf6\xec\x01@>\xf7\xa9w\x5c\
+\xf9\x89\x0f^}\x87,kB\x80\xa0\xbe\xd6\x07\x1b\xc7\
+h\xf5\xa7\xaao=bw\xfah\x07N\x1dmC:\
++\xb4\xfez\xcb+\x7f\xd5\x1a\xc9\x0cA\x01\xb8\xd5\xe8\
+\x9c\xa1y`\xf1I>S\x9b8\xd5c\x87\xdaf\xcc\
+g\xfe\xeam\x8b\xfcn\xbb\xebG\xbf~\xeeU\x18\xbd\
+\x10m2\x89\xf6\xec\xc2\x80\xd4\x05\x03\x000!\x08\xac\
+\xe6\x1dX\x80`\xe7\x97\xaa\xab\xab\x1b\xf4\xa4\x10e\xdf\
+\xd5\xd5\x87\x87\x1ezZ\x95\x10\x12\xaa\xab\x9dp\xbb\x83\
+\xb0\xdb\x9d\xc8\xe5\xb2\xe8\xed}\x03ccQ\xc8\xb2\x8c\
+x<q\xea\xc0\x81\x03\xdbFG\x87F\x00u\x82\x22\
+@\xee\xfa\x1f\xd7\xae\xfc\xe4\x87\xae\xfb\xb0\xc3as\x12\
+\x02T\x86\xdc\xf0z\xf4\xef\x09[1]\xff\xa5\x5c\xd0\
+}\xb6\x1f\x87_x\x0dY!\xd7\x7f\xf0\xf5\x9e\xcfn\
+\xda\xd7u\x14F\x10\x98{\xa6V\x84\xd6&4\x08\xe8\
+\x8e\xa1mv\xea\x1a\xa8e\xd06\x15\xedv\xd2#\x82\
+\x22fk8x&T\x02\x04Z\xa2)=\x05\x8d\xce\
+1,\x0c'744T>\xfb\xec\xce/WU\xd5\
+4\xd0I!\xdd\xdd\x03x\xf8\xe1m \x84@\x10F\
+\x90\xcb\xc5\xa0\x0c\x15\xeb \xc9\xe7\xe5\xd8\xb1c\x877\
+\xb6\xb6\xb6\xb6B\xef\x8d2U\x17\xee\xe6w,\x9d\xff\
+\xad{n\xff,\xcb\xb2\xae\x80\xdfa\x98\xbae\xc5p\
+\xe57\x01}\x22:0\x8a?\xedx\x05\xe9t&\xf1\
+\xe2\x89\xbeO<\xbe\xaf\xb3\x14\x08hI@\x1b\x90t\
+\xa7\xa0\x81\xa0\xed\xcd\x00\xb0\xb2%\xcc\xcf\x12q!l\
+\x003\x95\xb1\x094\x11I#\xb9\xc8E\xec\xeb\xeb\x8b\
+\xbe\xef}7\xff0\x1a\x1d,\xb8\x88J\xe6\xae\xf6Q\
+h\x09\x82\x10\x83,K\x90$IM\xd1f\xd0\xdf\x1f\
+\xd9\xf1\xe4\x93O\xdc\xdb\xda\xdaz\x0c\xc6Q:\xc3\x08\
+\xdd\xce\x17Z[?\xf0\xb7\xbf\xf8V,\x9e\xee\xcb\xe5\
+\xb4\x88\xa01\xecJ\x07\x872)\x01\xcf?\xf9\x0a\xe2\
+\xc9\xec\x08Q\xad\xf3\xea\xfaJ\xdct\xfb\xf5p\xbb\x5c\
+\xbe\xebW6<\x0a\x9dy\x9a=`\x88\xceY\xb4\x87\
+\xd9S\xa2E;\x1dR\xa6\xdbF\x9b>\xa6\xa5\x86\x15\
+}\xad\x1c8\xcf^@)\xb2\x00\x01\x8d\xe2r.\xa2\
+\xe2\x12\xf5\xf5\x0d\xbd\xff\xfd\xb7|?\x91\x88\x8f\x98\xe3\
+\x00<?\x0cY\x16\x0b\xf6A&\x93o\xdb\xbe}\xfb\
+\xb7\xf6\xec\xd9\xf9\x87l6=\x04\x85\xf9\xe3(\x06A\
+ap&\x1aKG?\xf5\x8f\xffu\x7fk{\xe4\x84\
+\x15\xd3\xe9\x80L\x7f\xd702i\x01\xcf\xec:\xb1\x9f\
+\x1e\xbc\x09U\x05q\xd9\xb2y\xe0X\xd6\x07E\xa2\xd1\
+#t\xe6Q\xbaR\xf9\x15t\xcf\xb62\x96\xe9P\xb3\
+&\xfa\xadr\x02\x0b \xb8(\x00\x00\x94\x05A\xa9`\
+\x91A\x1a\xf4\xf6\xf6\x0e}\xedk\xff\xfco<\xcfg\
+\xb4F\x97\xe5<x~Te>\x9b\xe9\xee\x1e|x\
+\xf3\xe6\x0d?\x18\x1e\x8et\xa1\x98\xe1\xe3(=F\x9f\
+\x88\x0c\xa5\x86\xd6\xdf\xfd\xeb\x7f\xdf\x7f\xb8c\x8f9\xd4\
+LG\xe1\x92c\x19\xe4s\xf9\xec\xe1c]Qs\xd0\
+\xc8\xae.9\xbf\xa8\xca\x19\x82.\xd2K\x86iQ\x0c\
+\x84R\xae\x22m\xf0\xd1af\xed\x1a\xda\x0b(\xa8\x19\
+Y\x96/\xbc\x0a\xa0i\x0a \xa0\x07\x5c\x0a\x92`\xd3\
+\xa6\xc7N}\xe9K_\xf8\xae \xe4\xd2\x84\x10\xa4\xd3\
+C`\x18\x1bb\xb1\xccs[\xb6<\xf1\xe5\x03\x07v\
+\xeeFq&N\xa9\xbd\xf9\xba$\x80\xe4\x9d\x9f~\xe0\
+\xe1\xff\xdap\xe0\xa1\xc2\xbc>S\x14\xcef\xe7\xe0p\
+8\x9c\x12d\x16\xa0\xc3\xd5\xac\xe2:\x12\x06\xd7,o\
+Z\x81b\x15Pn\x11h\xf3\xd0:\xdd&\xf4\x98\x0a\
+\xbd\x99\x19\xafI\x00P\xfb\xd9]*v6H\x96\x0d\
+K\xd2HP\x1af\xa2Y\x9f\xda\xb5\xf9M\x9b\x1e;\
+i\xb7\xdb\xbf}\xf7\xdd\x9f\xff6\xcfg\xa3\xaf\xbe\xfa\
+\xf2\xaf[[Ot\xc28\xf6\xa0\x01\xc9\xca%\xd3\x12\
+5\xe9\xc4VCC~\xe5{[\x9f\xeb\xec\x8e\x0e\x7f\
+\xeb\x9fn\xff\xac\xd3i7|*,\x10\xf2\xa2\xafs\
+\x08\x7f\xb9\xf6\xb2\xeb\x08a\x0d\x9eB(\xac\xe4\x13\x8a\
+\x0a8\xe8\xdeo\xfc\xbe\x0dL\xb9\xfbz{\x00\xd4G\
+\xa3\xa8\xf6\x01\x8a\xc1c\x0e\x01\x1bt\xbfV\xf6E\x07\
+\x00`B\x10\x98\xdd\x96\x02\xf3\xd5-\xf7\xe8\xa3\x0f\xbf\
+v\xeaT\xeb\xe7\x8f\x1e=\x1cU\xaf\xd1\x98\xa71\x9b\
+\x16\x8f\xf4,\x1a\xda\x0b\xd0\x98\x94\xa3\xca.\x00\xe1W\
+\x8f\x1c8:4\x9a\xfc\xf1\xfd\xdf\xfe\xe8\xff\xaa\x08x\
+B\xcac\x08j\x9b\xc2h{\xbd\x07k\xafY\xd2L\
+\x87\x8e\x01\xc0\xee\xb4\x83\x10\x06\x90I\xa9\xe5\xdf-%\
+\x80\xd6\x1e\xea^{g\xcdf\xa0\xdb\x83\xb6!\xe8\xf6\
+1\xb4\xd9\x8cg\x06\x9d/\xb2p\x11\xe9\x00\x89\xe6\x0e\
+i\xbe\xb0\xb6\xa7-l\x8dh\xcf\x82\xd6\x9f4s\xad\
+2uiW\x94\x9e\xdf\xa0\xc5$\x5c\x8du\xfe\xf0s\
+\x7f\xf8\xd2Wj\xab\x02\x8d\xda\xad\xf9\x5c\x1e6\xbb\x8d\
+~\x0f\x00\xc0P\xff\x08v?\xb9\x1fO<\x7f\xea\xd3\
+;\x8f\xf6jK\xbe\xa4\xa0\xebmC\xee\xbey\x1e\x9f\
+\xa9M\x0a\x7f\x95m\xc42\xcc\x07.\x22#\xd0\x8a\xca\
+\xd8\x04\xb4!\xa4\x19@\xe6\xb1\x03s\xda\x15\x9dq\xa3\
+Y\xca\xb4\xb5,Xl\x1ac\xe8!ZC8\xb6w\
+ \x1e\xbdi\xfd\xfd\xf7\x1d;\xd1}P3\xfalv\
+\x9b\x1e\x92\xa6<\x85hd\x14\x0ca\xb0\xf3ho\xdb\
+,\xb4\x89U\xfa]\xd1fq\xbd\x81.j\x00\x00\xea\
+\x1b\x18S\xcch\xc3\xd0*N`\x1e93\xa7`\xd1\
+n\x12\xed'\xd3\xd2\xc0\xec~\x96\x1c\xa0\x02\x90\xea\xed\
+\x1f\x8b\xbe\xe3C\xf7\xffj\xc7\x9e\xd7\xb7\x99\x99nH\
+\xd2 \x04\xa2$\xcfx\x05p\xaaM\x0a\xc7\xa5\xc8|\
+\xbd\x99.z\x00hd\x91gH\xeb}\xab\x84\x0as\
+*\x96U\x8f7\xab\x00\xb3\x95]\xce\xfb0\x03-\xb9\
+\xfe\xee_=\xf6\xbb\x8d\xfb~[\xe4\x1e\xaa\xbf3\x89\
+,\xc6S\xc2k(1\x7f\xffB\xd0Ei\x04\x96\x22\
+\xca\x08\x02\x8c\x8d\xa7\xe9\xf8r.\x95\xf9\xc3\x8b\xda=\
+\xa5\x92%h\x83J\xa2\x8e\xcd 4$}\xfc\xefo\
+<\xb6\xf3\xd0\xd1\x8e\xce_\xdc\xfb\xc9\x7fv\xd8mn\
+=<\x0c\x0cGb87\x14\xdfO]O\xbf\x83\x8c\
+\x0b\x00\x887\x15\x00\x80\x22\x10\xd06\xc2d\xdc\x22\x9a\
+\xf9\x80\xd15\xb2jt\xedc\xcd\x80\x22\x09\xcc\x0c3\
+\x83A\x04\x90\xdf\xb0\xf9\xe5S6\x8e\xfd\x97\xef~\xf9\
+\xc3\xffPY\xe9\x9f\x0f(\xe3\x01C\xd1D\xc7/\xb6\
+\x1cy\x1a\xd6K\xb9\x94\xab\xc7\x9c\xd1E\xed\x05\x94#\
+\x93\x87`\x8e\xa5[\xc5\xd5\xcd`14\xb8YGN\
+\xe0\x81hk#\xd1\xf3\x1e\xcd\xc3\xb4\xdc\x92E\x95\xfe\
+}[\xbf\xfe=\xaf\xcb\xb1\xe8\xd9?\x1cx\xed\x0b\xf7\
+o\xfeZ\xffp:\x0a]Ei*\xa9(\x16QJ\
+g\xcf6\xbdi\x01\x00\x141\x09\xa6c3\x00\xe8}\
+\xe1\xb8\x5cC[\x80\xcc*o\xa1\xd4\x10\xad\x16\xeb'\
+w\x7f\xe4\xfaE\xbf~\xfc\xc5V\x14g\x0ck\x86h\
+\xd1\xf4\xedK\x00\x98\x02\x99|\xe3r~qY\x97h\
+\x82\xf2\xe9\x8d\x96\x04t\x02\x0b\xbd\xd1a^\xf3\x10\xad\
+9VO\x07\xa2&\xb5\xbc\xdbl\xd1\x9b\xce\x06\xb0\x22\
+Cd\xab(NR|\xcdt\xca7\x95KG%K\
+\x0d\xd6\xd0\xa1^\xed<=\xc4m\x1e\xa5+\xa8\xa5\xf3\
+\xc5|\xe0-\x02\x00\x9a\xe6\xaa\xf1J\x18\x9ffOD\
+\x03\x81\xc6|:\x09T\xeb\xe1y\xd3vA\xdd\xc1\xb7\
+\x1c\x00\xe6\x92,\xdcPm\x8c\xc2,\x05\xf20&}\
+jDO\x8c1\x8f\xd2]\x10]\xfc\x96\xb0\x01\xce7\
+\x95\xf0@\x18\x14\x8f\xee\x95J\xf20\x07\x82J\xae\xe3\
+7\xd7t\x09\x003\xa0\x12\xae\xa2\xd5\x06X\xc7\xea'\
+\x5c\xc9s\xae\xe9\x12\x00fH\x16\xae\xa8UL\x02(\
+vE\xe9\xe8\xe2\x05a>p\x09\x00\xb3Be\xdcP\
+\xabhd\xd1\xf1\x85b>p\x09\x00\xb3J\x16c\xf5\
+\x13\xd2\x85d>p\x09\x00sF\xe5\xc0p\xa1\x99N\
+\xd3%\x00\xfc\x99\xd3\x9b&\x1f\xe0\x12\xcd\x0d\xfd\x7f\xc7\
+\xc0 \xf9A,]\x89\x00\x00\x00\x00IEND\xae\
+B`\x82\
+\x00\x00>\xa7\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x00\x09pHYs\x00\x00\x00H\x00\x00\x00H\
+\x00F\xc9k>\x00\x00\x00\x09vpAg\x00\x00\x00\
+\x80\x00\x00\x00\x80\x000\xe11\x9a\x00\x00\x00\x06bK\
+GD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00=\xd0\
+IDATx\xda\xed}wXTW\xb7\xf7\xb5\xbe\
+\xd1D\x93\x18\x13\x937\xd1\x98\xc4\x98hL\xb0\xc7\xde\
+{G\xc5\x0a\x16D\x14\xectP\xaa`/tA\x04\
+APD\xc1^@E\xc5\x82\x15D\xa4\xd8+\xf6\xa8\
+\xc9\xfb\xdd\xfb\xbd\xf7~\xff\xeco\xad}\xd6\x1e\xf6\x9c\
+93\x0ch\xd4\xe4\xca\xf3\xac\x07ef\xce\xcc\x9c\xdf\
+o\xad\xbd\xda^\xfb?\xfe\xe3\xdd\xcf\x9f\xf6S\xfd\xbb\
+_*\xa1\xbc\xbb\x13\x7f\x91\x9f\xfa\x8d\x7f\xae\xf4\xd5\xf7\
+\xcdP*\xab\xa4\x12>\xf6\xee\x0e\xfd\xdd\x00\xff\xe1\x97\
+J \x95%\xa9JRM%\xe2\xef\xe2y\xef\xc8\xf0\
+W\xfei\xf0\xa3E%\x90\xca$\xd5@\xaa\x83\xfc\x03\
+\xa4\x06\xc8\xfb$\x1f\x90\x88\xff\xd7\xa0\xe7T\x13\xaf}\
+w'\xffr\xc07\x07\xe0\x9b\x03x\xcd\xab\x80\x00\x90\
+\xcd\x01\xd0\xe65Aj\x81|\xd4n\xc0\xf8o\x06N\
+\xf1\x1a:|F\xa0\xe70\x07\xff\x99\x03m=\x87\xc1\
+\xdf\xeb\x81|\x0aR\x07\xa46=\x1f_W\x95\xae\xf5\
+\xce\x1a\xbc! +U\x10|\x01<hu\xf3\x0fA\
+\xea\xf6\xb1\x9e\xd7c\xe4\x9c%\xfbF;\xad`j\x19\
+5o\xf9\x1f\xc3\x1c\x03V\xc1\xf3\xbe\x06\xf9\x02\xe4\x13\
+\x22\xcc{\xefH\xf0z\xb5Vhn\x15\xba\xf1U\xe9\
+\xdf\x95M\x81 \xbd\x1e\x9f_\x9d4\xb86i\xf5\x97\
+C\xa7\xfb\xfa!\xd0\xd6n\xc1\xcc/b3\x8b\xdfq\
+\x84\xed?\x96\xc3v\x1f9\xc76\xc0\xbf\xfd\xe1o\xf8\
+\xb8\xd5\x9c%E\x16]\x06\xb6!\x22|F\xd7\x10$\
+xG\x80?\x11\xf4\xaa\x92\xd6\xe2\x0d\xaf\xa1\x92\x7f\x10\
+\xb0:m\x14\x80\xa8\xb4\xfe=\xd2\xdcOZ\xf7\x1e\xf9\
+\xc3\xe0\xa9\x0b\x9c\xac\xe6.\xbb\x87\xe0z\xacJd\xa9\
+\x07N\xb1\xbdY\xb9,\xe3D\x1e\xcb<\x95\xcf\x8e\x9e\
+-`'r\x8a\xd8\xa9\xbc\xcbl\xfd\xb6C\x9c\x04#\
+f\x05\x9d\x87\xd7\xff\x0c\xf2\x0d\x91\xa0\x16\xbd\x7f\x95w\
+$x\xf5\xc0\x0b\xd0k\x90\xb9F\x8d\xfb\x98L\xb0\x90\
+:d\xc6?\xa0\xe7\xc9D\x90\xd7\xfa\x9a\xf4\xbc\xcf\x86\
+\xd8{\xcfC\xb3\x8e\x80\xceX\xb8\x96E&g\xb0\xb4\
+\x83g\xd8\xae\xc3\xe7\x80\x009\x9c\x00\x87\x88\x00\xc7\x91\
+\x00\x17.\xb3\xb3\xf9WYtJ\x06'A\x1f\x1b\xa7\
+ \x22AC\xfa\x0c\xef\xd3{\xbc#\xc0+\x02\xbf\xaa\
+\xe4\x9c\xd5&\x90?\x03\x8d\x9d\x08\x1a\x18m5g\xe9\
+\xc9\x91\xb3\x17\xef\xb7\x9c\xb1pE\xa7a\x93;\xc0c\
+_\x916~LDx\x8f\x00\xa9&\x99\xfc\x8f@>\
+\x87\xd7oA\x10g\x06\xc6\xb0\xc8\xcd\x19l\xeb\x813\
+z\x92v\xe8,\xdbw,W\x93\x00\xb9\x85\xd7\x99\xbd\
+O$X\x81E7\xe0Z\x1dA\x9a\x80\xfc\x93\x88\xf5\
+\xce\x0a\xbc$\xf8B[\xab\x93&\xd7&\xed\xfab\x88\
+\xbd\xcf\xdcQs\x97\xdd\x15N\xd98\xd7`\x90\xd5:\
+'\x0d\x009`\xd1uPKxn}Z\xd7?$\
+\xd0kH\xe0\x7f\x01\x84\x89\xc3\xe7/Z\xbbM\x0f\xf4\
+\x8c\xec|.\xf2\xdf\xf6\x1f\xbf\xa0\x10\xe0\xbc>\x01\xc2\
+\x92\xf6\xf2\xf7\x84\xeb\xf5\x03iIK\xc1'\xf4^U\
+\xcd\xf0CLI\xa5wZ\xafh0j\xf2\xe7\xfd&\
+\xb8\x8c\x02m/\xc4\x1b>\xd6e5\xb3\xf1\x8c`\x93\
+\xbc\xd72;\xbful\xda\xc28\xe6\x18\xb8\x9e\xd9z\
+\xaf\xe1\x80\x80\x07_\xfcs\xa7\xfe\xed\x09\x90\xcf\xe9\x1a\
+\x1f\x8ak\x81\x97?\x0e\x9f7?d\x93\x0e\xe4\xd3\xf9\
+\xd7\xd8\x9d\x07\xbf\xb1\x92\xc7\xcfA\x9e\xb1\xdb\xf7\x9f\xb2\
+\xa3\xe7\x8a\xf8c\xa9 \x87O_\xe2\x04\xc8\x96\x08\x10\
+\xb3\xf5\x00\x7f\xbf\x1fZw\xb5!+\xf0\x03\x85\x89\xba\
+e@\xc3\xffP\xfb1ZRM\xb5tU\xfa\xdf\x04\
+\xbep\xd0\xb8g\xde\xc5\xd2\xae\x1d\x00z\x0ao\xf4\x18\
+\xe7\x95\xcc\xda#\x9c\x03/d\x0a\x11`FP<\x9b\
+\xbdd\x03\x9b\xb9(\x9e\x832l\xba\xdf^x\xbd\x05\
+\xc8wd\x9a\xebQ\xd8\xf6-X\x89\xb3\x93\xe7\x87\xe9\
+\xc0\xbfP|[\x01\xfe\xd13v\x8f\xe4\xee\xc3\xdf\xb8\
+\xa4\x9f\xbc\xa8\xb3\x022\x01r$\x0b\xd0\xb8U\x97\xa9\
+p\xdd\xee \xcd\xe8\xbdj\x91\xf5\xaal\x22\xd7\xf0\x01\
+}\xc7\x8fTR\x9b\x1e\xab)\x91\x81G7\xff[\xc0\
+\xafA\xdaZ\xcf\xd21`\xa5\x12\x92\xadfN\xcb\x12\
+XP\xccN.\xee\xc1\x9b\xf5\x09\x10\x00\x16\x80\x080\
+oy\x12\x9b\xea\x1b\xcd\x81i\xd5\xd3r\x14\x5c\xa79\
+\xc8\xf7\xe4\xa4}\xf7k\xff\xb1}d\xd3\x8fZ^\x0a\
+\xba\x02\xfc\x1d\x14\xb0\x06\xb7\x1f<e\x17.\xdf\xe6\xcf\
+\xdb\x01N\xe1\xf1\xf3\x85\xa5\x04(@\x02\xec\x11K\xc0\
+D\x90\xdeD\xb8/U~@\x15\x8d\x5c\xc3'}m\
+\x9cz\x0c\x9d\xee7k\xf8\xcc\xc0eB\xfaOr\x1d\
+\x09\x11\xc9\x8fd\xb5>\xa1\xe7\xbe\xff\xb7O4\x11\x01\
+\xaa\x92\xe6\x7f(;hn+7\xb0\x8d{O\x1a8\
+h\x9b\xf6es\x22L\xf15$\x80\xf3\x8a\x8d\x1c\x98\
+\x81S\xbcv\xc2\xb5\xba\x80\xb4\x00i\x8a\xdez\xbf\x09\
+\xce\xfe\xf8XLj&\xbf\xce\xe5[\x0ft\xda\x8e\xa0\
+\x0b\xe0q\x09\xb8u\xff\x09\xcb\xbfzWG\x80c\x9c\
+\x00\xc5\xec\x0c\x11\xc0uy<\x03\x92>\x80\xebN\x06\
+\xe9Kd\xfb\x8a4\xf9=\x95\xe3\x89\x9a]\x17A\x97\
+}\x18-\x1913hk\xa7\xa1\x93:\x11\x99\xea\xd2\
+kk\xd0\xf5\xfe^$ \xf0\xab\x10\xcb\xd1t\xd6\x1b\
+2\xcd'@\xed\xa0\xed\x87p\xec\x5c\xc1M\x90\x1b`\
+\x8e\xf3t\x7fw]\x95l@\x00\xd7\x95\x9b\xd8\xe4\xf9\
+\xe1\x0c\xa2\x83'p\xbd\x81 \x9dA\xda\x82\xfc:\xd0\
+\xd6#\x01\xaf-^\x7fG\x07\xfcS=\xe0o\x95<\
+a7A.^\xb9cH\x80\x8bW8\x010\x0a\x18\
+0\xd9=\x07\xae;\x09\xa4\x0fY\x00A\x00\xe1xr\
+?\x06\xfc\x8e\x9eVs\x97\x16\xe0{#q\xe2\xd32\
+Y\xfa\xd1\x5c\x96u\xaa\x80\x1d\xcc\xcac{\x0f\xe5\xb0\
+\xe8M\x07\xd8\xfcU\x1b\xd9xpj14\x1dh\xeb\
+\xe9A\x96\xab\x1e)\x86\x8e\x04\x7f7\x02T#S\xf7\
+I\x8b\xee\xc3~\xc6/?o\xc9z\x1dH\x97\xae\xdd\
+cO\x9f\xff\x8b\xcb\x93\xe7\x7f\xb0'\xcf\xfe`\xc7r\
+.\xf3\xc76\xec:\xce\xec\x89\x00\xb3\x88\x00.@\x80\
+\x19\x81\xb1\x5c\x9b:\x0c\xb2\xf1\x87\xeb\xf6\x07\xe9\x01\xd2\
+\x13\xbc\xffK\x18\xf6\xe1k\xf7\x1e\xbb \x81\xfeT\x07\
+:\xca\x8d{\x8f\xb9\x9c\xbax\x8d?wOV\x8eB\
+\x80\x5c\x85\x00\xd9\xb9E\xfc\xfa\xbd\xc6\xcd>\x08\xd7\x9d\
+\x00\xd2\x0b\xe4\x17\x22\x80\xa8\x13\xf0\xd4r\xefqsz\
+\xe3w\x9a\xe8\x11\xc22\x8e\xe5\xb0K\xc5\xb7XN\xfe\
+uv\xea\xfce\x85\x00\xc7.r\x02l\xdf\x7f\x96m\
+\xd9\x95\xcdb6\x1dbv\x0b\x22(\xcf0o\x0e\xf9\
+1\x9f\xd3\xf5\xfe>\xd9F\x95\xf6\xe3\x97\xfb'\xc4\xf7\
+\x8bd\x13\x8d\x0e\xda\x13\x04\x1e@\x7fL\xf2\xe8\xb7\xdf\
+\xb9\xec:\x9a\xc3\x9f\xe3\xbcbS)\x01\x96)\x04\xf0\
+\x80\xe5a\xac\xcbJ6h\x8a\xd7I\xb8\xeeh\x90!\
+ C\xc1*<\xc6e\x05_w\xf0\xd4%=m\xbf\
+I\xa0\xa3\x5c\xbf\x8b\xf2\x88e\x9e)\xe0\xcf\xc5|\x80\
+L\x80\xed\x07Oq\x80\xda\xf4\x19\x15\x05\xd7\xb5&\x82\
+!\x01\x1aP\xf8\x89\xa6\xfb\xf3\x9ecf\xf6\xe3\xe0{\
+\x86\xb0\xec\x9c\x22v\xf5\xc6=V\x00~\x85\x01\x012\
+s\xd8\x8et \xc0\xeel\x96\xb4\xed8[\xbb)\x93\
+M\x99\x1f\xc1`\xb9\xf8W\xb3\x8e}\xd1\x82}+e\
+\x1b\xab\xff-\xf2\x0c\xd2\xda_\x83\x9c\x9eo\x86\xcf\x08\
+<,<\xf4m\x99\xe7J\x81'\xd0Q\x1e>Ey\
+\xc1N^\xb8\xc2\x9f\x17\xb21C!\xc0b}\x02\xd8\
+\xf9\xaca\x10:\xfe\x17\x5c\xd7\x0eA\x02o\xdd\x1eA\
+\xf3\x8f\xdc\xc2_w\x02^/k\xfb\xf5{\x0a\xe8\xd7\
+P\xee<bW\xef<d\xfbh\xb99p2\x8f\x1d\
+;W\xc8N\x12\x01B6\xec\xe6\x04\xf8\xbeE\xc7\x05\
+p\xedqD\x00\x0b\x0a=q\xed\xae?\xc8n\xbe\x0b\
+>\x07\xbfOj\x86\x92Z\xde\x0e\xdfi\xc7\xe1\xf3l\
+'\xc8>\xb0@\x87N\xe4s\x02\xec\x93\x08\xb0\x11\x08\
+\xb0>\xe5([\x19\xa38\x99\xe0\x1c\x86I\xe4\xaaS\
+V\x9e\xe1\xafh\xfe?\xa0u\xee\xc7\xe13\x83r\x85\
+\x89>\x90}\xa9\x14\xf4\xdf\x14\xd0\x1f\xa0<y\xc1\xee\
+?y\xce5V8\x84\x0eD\x80\xb9\x12\x01\xe6,Q\
+B\xc2\x1e\xa3\x1d\xb7\xf5\xb1q\xda9\xc4\xde'\x17\xff\
+/\xb2~y\xb0\xbe\xcb\xda.\x03\x7f\xf5\xf6Cv\x05\
+D,C\x98\x07\x90\x09\x10\x10\x99\xc2\xe0\xb3\xfe\x0e\x9f\
+\xd9\x19d<-\x01\xad\xf0;`\xd4\x01\x96,\x08\xdf\
+\xcb}U\x22KI?\xc5v\x08\xe0\x8f\x9c\xe7\x96k\
+7\xc8\x1e \xc4^\xb0,\xfb\x8f\xe5I\x048\xa5#\
+\xc0\xda\x8dh\x05\xc2\x19.[p\xcd\x0e\x94g\xf8\x5c\
+\x1df\xfe\xd5C\xbf\xea\xb4^b\xfc\xfc3\x84Cy\
+\xa5\x04\xc8\xd7i\xbb\x0c\xfc}\x9e\xacQ\x126\xb8\x8e\
+\xe3s}\x22\xd2\xf4\x08\x80\x11\xc2\xfc\xb0-l\xbc[\
+\xb0\xce\xbb\xb6q\x0ffv\xde\x91\xba\xa8\xa2\xe8F\x89\
+\x02\xfa]\x02]\x02\xfe\x0aD\x07y\x14\x02\xa6\x1d<\
+\xcb\x09\x90E\x048\x0d\x04\x98\x19\xb8\x96\x0ds\xf0\x7f\
+\x0c\x9f\xd9\x8d\xc2\xc0\x01\x94\x0cj\xd5g\xfc\xdcyJ\
+Q)I\x07\xfa!x}N\xd1MV\x00\xfe\x8c\x10\
+L>e\x9c\xbc\xc8\xd2\xc1\xc1\xdd\x9fu\x81\x13`+\
+\x11 ~\x8bB\x00\xa7\xc5\xf1\x0c\x9c\xc7\xff\x94\xc2\xcc\
+\x06\x94\xd0z\xef/\xbb\x0c\xa82~\xef\xd1\x17\xc2\xd4\
+msX\x02.\x0a\x02\xa0\xf9\xd5\x81.\x03/%l\
+\xce^\xba\xc1\x9f\x1b\x99r\xc8\x90\x00\xa1[`I\xd8\
+\xc0\x5cW$\xb2\x80\xa8mli\xdcn\xb6j\xc3>\
+\x9dV\xab\xb5\xfd\xca\xed\x07<,D)\x06\xc9&\x07\
+\x10#\x80\xc3\xa7\xf3\xf5\x08 H\x05K\xcc\xff\xed?\
+\xc9\xed\x80E\x97\x81\x0e\x98\x12n?p\xbc\x1d\xae\xdb\
+\xd3\xfd\xa2x\x06\x11\xb5\x1d\x1dI\x19x\x9d\x5c\xbf\x07\
+>\xce-N\xf4\x83\xa7\xf2\xd9\xae\x03\xe7\xd8\xd6=@\
+\x80\xed'8\x01b\x80\x00\xee\xcb\x12E\xae\x01}\x98\
+_\xc9!\xacKQ\xc6\xdb\xbf\x0ch\xe4\xbd\xab\xa8R\
+\xa1\xef\xd3\xfa\x8f\xe1N\xabAv^;\xf0\x0b\x0b-\
+Ep\x84\xb6k%l\x10@\x01(\x82\x8f\xe2\x8c\x04\
+X\xad\x10\xc0'\x22\x95\x83\x1f\x14\xb3\x83\x13 lS\
+\x86\x8e\x5c\xb2\xb6\xeb\x80\xbfy\x9fK\xd1\x8d\xfb\xec\xe8\
+\xb9b\xfe\x5c4\xd7z\x04\xc8\xbb\xc2\xce_\xba\xc6R\
+\xf6\x9f`AQ[ud\xb0t\x5cx\x09\x8bC\xd8\
+K\x80\x15E4\xf1\x98hB\xa0e\xd0\x85\x14\x92d\
+\x83/\x92\x09\x16b\xdf\x91\x5cN\x80M\x12\x01f\xf8\
+\xaf\xc5\xfa\xc63\xb87V \x98\x1bh,\xa5\x9b\xdf\
+^\x02h\x94r\xabK\xe5\xdc\x9a\xf4\x05jQ\xcc\x5c\
+\x8f\x98\xdd\xa6m\xbf1\xb3\xf0f._\xbf\x8b\xdf\xfc\
+\xe3\xb9W\x0c\xd2\xb3\xea\x84\x0dz\xf3\xf8\xdc\xc0\xb5;\
+8\x01\xfc\x01\xf0\x95\xa0\xe9\x11\x9b\x0f\xb2\xf5;\xb2X\
+\xe2\xee\x13\x06\x89\xa4#g\x8b\xf4\xb4\x9d\x83N\xc0\x17\
+\xc2\xd2\x80\x22\x96\x97\xfd\xb0Ngr\x02\x14\xe8\x11\xe0\
+B\xd1\x0dv\xe9\xca-^\x17\x88\xdf\x9e\xc9\xa6\xf9*\
+\xb5\x88\xc4]\xc7\xf8k1\x82\xd0\x02\x5c-g/]\
+gG\xcf\x16\xb2\xf4\xac<\x89\x00Y\x10\x0ef\xb2\x89\
+\x1e\xa1\x0c\xfc\x09\xf4\x01\xc6\x80t\xa5\xaa\xe3\xe7\xe47\
+\xbd}e\xe7\xb2\xfa\xecH\xdb\xebRH#\xf2\xf3\x0d\
+\xc8yj\x072h\xc4\xec\xc5O\xc52\xb0\xebH\x8e\
+AzV\x17\xb7\xdfW\xc27L\x0e\xe1s\xb5\x80\xd6\
+\x12\xd4\xfe\xc2\xeb%\xa5\xda\xae\x02\x1e\x1fC\xc0\xb0\x1c\
+,,\x00\x96\x84\x91\x00\xd8\x14\x82\x048G\x04\xc8\x07\
+\x02\x14]\xbf\xc3\xae\xde\xbc\xc7n\xdc\xb9\xcf\xbd}L\
+T\xa1I\xbft\xf5\xae\x09\xe0K\xe0u%\xdc\x0f9\
+\x0f\x9f\xff\xd8\xf9\x22\x96\x01\xce`*\x11 ak\x16\
+\x0b\x08S\xacK\x97\xe1v\xc9\x7f\x09\x02\x98\xea\xb3\xeb\
+6rZ\xeba\x8e\x01\x0b\xb0~o5gI\xf6H\
+\x100m[z\x8f\x9f;\x9e\xd2\xb4-(c7\xa4\
+\xe7\xd8Y\xc9\xf8\xc5\xe3wfq\x00\x10$\xad,\x9d\
+\x08\xe1\xd0\x94\xef\xc9\xba\xa0\x03\x18M\xef\xa1\xd3\x05<\
+Y\x94[t\x0b\x9c\xaf[ej;\x02\x22\x80\x17r\
+\xf8L!'\x01\x86\xa3\x18\xbea\xd8\x86\xa6\xfat\xde\
+e}\x02\x5c\xbb\xc3\xae\x00\x01\xce\x17\x5c\xe7\x0e\xddA\
+X\xd3qm7\x05\xba\x90b\x90s`\x01N\x80e\
+9p\xfc\x22K\xdd{\x9am\xdaq\x82\xadK>\xcc\
+\xb5\x7f\xc4\xcc\xa0\x17pO\xe6\xbc\xd5K\x80\xa9>\xbb\
+\xd6\xbdF\xfc\x88E\x1d\xd1u3\xc6e\x15/\xe7\xa2\
+\x88\xb5\x13<\xff\xc3M\xdb\xf5\xeaG\x9e\xee\x88\x9f;\
+\xf6\xf3\x90S\xc1\x87\xc1<\x96\x95\xb0AO>\xb7\xf8\
+6\x07\xd7\xe4\xdanD\xdb\x8dIv\xdeU\xbe\xc4\xa0\
+%R\xc2\xb7\x5cn\xde\x8f\x82?\x80\xe9\xe0\xfc\xcb\x0a\
+\x01.^\xbe\xc9=zt\xe8r\x0ao\xea\x01\xaf\x06\
+]\x00_\xcc\xff}\x8f\x9d\x02\x8b\x92\x0d\xb2\xe7P\x0e\
+'@2\x10\xc0\xd1O)h5\xef:x\x0d\xdc\x93\
+\xe9o\xad\x13h\xac\xcf\x8e\xb2zN\x02\xf8qn!\
+l\xc2\xfc(\xbdR.\x8a\xb5G\x98h\xe4\xb8\xd6\xb6\
+\xef\xa8\xb9\x14S;b\x91\xc5\x1e\xd6T\x9e\x10:t\
+\xae\xcc\x84\x0d\x8a\x96'o\xae\xb6\x97%X\x14\xc2\xb0\
+\x0d\xc9\xb0\xef\xf8\x05^\x9b8\x00\x80cu\x10-\x01\
+Z\x06\x5c&\xce\xc0s\x8a\x10\xf4\x1b\xc6A\xe7r\xb3\
+\x84]\x069\x0b\x96\xe4\xf4\xc5\xab\xec88\x8b\x18\x05\
+\xa4\x01\x01\x5c\x97&\xf0{\xd2i\xe8\xa4\xbd\x14fN\
+\xa0ZC\xf3\xb7*\x0c4R\xc6\xfd\x8c7oP\x83\
+%o\xde\xf0\x8a4\x00^\x96\x09^\x8a\xf3\x84\xf1n\
+\xbb\xfe\xe3\x96\x7f\xdf\xa2\x93\xd7 \xbb\xf9ErJ\x18\
+\xcd\xb8~\xc2\xe6\xa1\xf1\x10\xae\x82\xdan\x8e\xa0Fc\
+<\x7f\x22\xf7\xb2.|;\x04\xa4@\x02\x9c\x02ka\
+\x0e\xe8\x97\xe1s\xa1\x5c\x80\xeb`e\xf1\x0c\x10 \xe3\
+h\x1e'\xc0bp`\xf1{\xc3\xd2\x98\x0b\xf7\xd2\x87\
+\xb4\xdf\x92r\x0c?\x92\xcf\xf4v$\x824\xc0\xff|\
+\xe4\xec\xc5\x19\x22\xfd\x19\x10\x95\xc6\xa2\xb6dB\xe8u\
+\x80\xf9\xad\xd9\xc6\xbbw\x8c\x92\x00\xac\x03.\x0fd\x0d\
+\x9e\x89\x8e\x1d\x11\x0e\x9e\x81u\xb2<\xda^\xf4\x12\xda\
+n\x8e\xe7\x8er\xf1\xf2mv<\xa7\x18|\x05\x8c\x0e\
+.+\xe6\xde(\xe8\x0a\xf0WPn\xdd\x07\x8br\x9b\
+\xfb\x11(X\x0f\xc88z\x81E&\xa5\xf3\xef\x0f\x0a\
+T\x04\xf7\x12\x9bM\xd1\x22\x8e\xa5,csjA\xff\
+\xe4\xadH\x05K\x85\x1c]\x0d\x7f\xf8\xcc\xa0\xadr\xae\
+\xddX\x0d\xdf\x18\x09&.\x88fc]\x839y\xe4\
+&\xcdLp\xe8^\x97\xb6\x17\x96%7JL\xae\xe9\
+\x08\xb8\x1a\xf4\xcb\x04\xba\x90\x82kw\xb9\xc3\x88]E\
+\xa7\xc0Q=r\xf2\x12K\xdey\x9c\xefE\x18\xe6\xe0\
+\xff\xb4Q\xf3\x0e\xc1d\xfa'Q\x86\xb1-5\xb5\xd4\
+{+Z\xcfU\xa6\x1f\xc3\x91O\xfb\xd8\xcc\x1b\xa3\x06\
+\x1fc\xed\xbc\xcbw\xb8\x88\xd6*\x14\xb4\x06\xc6H\xe0\
+\xb4b\xa3N\xeb\xd1\x03\xc7\x10O\x0d\xba:a\xf3\xb2\
+\xda^6\xe8\x04|\x19\xe6]\xcf\xc4\xdf\xd2\x07\x1d\xe5\
+*~\x07x<\x17|\x06\x94\xf3\xe0/\x9c<W\xcc\
+\xb5\x7f\xca\x82p\xece\xfc\xefF\x16\xed#\xe0~b\
+\x81\xc9\x1ed\x18\x99\xfe\xa6T`\xfaH\xea\x09\xa8\x22\
+z\x0e\xb5\xe4uj?~\xa8\xfa`\xfa\xcf\xc8}v\
+\xb8N\xaa\x1b-D\xf5\x0eeU\xe2~\x03\xf0\x91\x18\
+rw.\x82k\xae\xb6\x17\xbe&\xd0\xb5\xb5\xfd\xbe\x0e\
+\xf4\xcb\x06\xa0+\xc0_\x03\xc1\x7f\xe7\x15\xdfT\x04\xee\
+\xcf\xf9\xbck\xa0\xfd\xf9\xcc1 \x9a\x8d\x9c\xbd\xe4\x7f\
+~\xe94`3\xdc\xcb\x85 \xb3\xa9\x84-J\xcc_\
+K{\x0e\xaaK\xbb\xa0\xe4]Qj\xf9\xf3\x1aJU\
+M\x1c\x9fB\xa8\xd2B\x0e\xdbP\xf3\xb5\x126(g\
+A\xa3\xd1\xab\xc7\xe7\xad\xdbvT\xe7\x17 !\x04\xf8\
+\x18\xbf_)\x97\xb6\x97\xbc<\xe0\x22d+/\xe87\
+\x8d\x83.\x80\xbfvG\xf9}\xe9\xcam\xf0\x1bn\xf1\
+\xdf\xf9\xe0\xd4\x22\x01b\xb7\x1cT\x1aK\xc6\xce*\x84\
+{\xb9\x12\xc4\x83Z\xcc\x84\xe9oD\xa6_\xde\x88Z\
+]\xda\x19%\xb2\xaa\xb2h\xee\x90z\xd5\xce\x9f\xae\x8a\
+\xd7s\xec\xacIr\x99\x15C&\xad\x84\x8d\x88\xdb1\
+C\x86\x152|n\xc2\xae\xe3\xdcI\x14&\x1f\x0b'\
+ek{\x09\x81^b\x14\xfcB\xb3\x81/\xe1\xdan\
+\x14\xf4\x9b\x1a\xe6\xfd\xa6\xa1yWk\xbb\x00\xfe:\x97\
+\x87\xac\x10\xd6}\x04\xbe\xf0\xda\x1dv\x19\xc3J$\x00\
+|\xd7lX\x02|C\x939\x09\xda\x0d\x18\x97F\x8e\
+\xdf\x18\xea2\x16=\x00\xa2/\xf0})\x85\xfe!\xf5\
+\x06\xc8YU\xb1s\xf9\x13\xb2\xcc\xf2\x0e\xa9*\xaf\x84\
+\x08\xd2\xfa/\xbax\xea\xf7\x18=c\x8aL\x00\xec\xa3\
+3\x1a\xb7S\xe9\x15\xc1\xdd\x9d\x95\xab\xb7\x0b\x07;p\
+Mi\xbb,j\xa0\xf55\xbd\xc4\xc4\xef\x12\xa3\xa6]\
+\x0b\xf8\xcb*m\xd7\x03\xbc\x0c\xd0\xf17>\xa7\x18\xbb\
+\x80\xae\xde\x01\xe7\xf1.\xbb\x01\xcf\xb9\x02\x9f\x05\xdb\xc2\
+8\x01\xce\x17\xb3\xa3\xd9\x05\xcc\xd1?\x1a7\x9c\xfe\xbb\
+Y\x87\xbe\x18\xfa\x8d\xa4\xac\xe8OR\x87Q\x1di+\
+\x5c\xbd\xde\xe3\xe7\xf4\x1a1\x13wF)YU!\x98\
+t\xeb4\x847\x94\xd6'B\x88\x1dR\xaf\xa6\xb3X\
+\xd5\xc6\x85,\xfb\xba\xfb(\x87\xa9\xe5m\xb4\x10k{\
+\x16\xdc\x80tX\x071\x8bgL\xdb\x8d\x01oT\xa3\
+U\x82iYY\xb0\xce\x8fb\xcc\xbc\x17\x9b\x09\xfaU\
+\x03\xd0\x95u\x1e\x01GM/\xb8\xaah<\x0a\x82\x7f\
+\x19\xfe~\xeb\xeeC\x1d\x01r\x80\x00\xd8\x16v\x14\xc2\
+\xc0m\xe9\xa7\x99\x0dD\x01C\xa7\xfb]\x85{\x8a\xed\
+\xec\xdd\xa4}\x0d\x08\xe6\x97\xadz\x0e\xff\x09\xa2\x04\x1f\
+\xb9\xabx\x82[(\xb3q\x0de\xd6.!l\x9c\xb3\
+^v5\xcd\xa2\xeb\xa0V\xd2\x0e)y\xf7r\xe5W\
+\xe5\x00\x22\xbb\x1a\xb6\xe9c5X\xf6\x012\xcf\x14\x1a\
+O\xd8\x18]\xdbM\x03o\x0e\xd0(\x08\xec\xa9\x8bW\
+y\x19\x16\x134\x98\x97\x17\x89\x1a\x0c'1f?r\
+\xb6\x90\xa7r\xb3\xe09\x18\xc7c&.\x17\x9c\xb2K\
+\xa0\xa5\xc6L\xbc\x81\xb6K\xa0_\xb9U\xc2\x01F-\
+\xbf\x04\xa0\xe3o\x01z\xf1\x0d\x05x\xac\x15\x5c\x85\xe7\
+]\xc3k\xdc \x02\xe4_\x93\xfa\x02\xf3X\xd4Fe\
+\xc3i\xefq\xb37P#+\xeen\xb2\xe87\xd1\xd5\
+\x11B\xecT\x1d\xe8\xee\xa1l\xb6\xffz\xe6\xb6(\x99\
+\xb9\x04nbs\xfd\x92\xd8,\xef\x0d\xcc\xd1+\x9e\xd9\
+\xbb\xc72\x1b\x97p\xad\x1dR\xf5^\xc9\x16v-\x0b\
+\x80u|\xcb\x19\x0b\xf3\xe5(\xe0t\xfeu\xa3\x8d\x16\
+\xa6\xd6v\xe3\xe0\x1b\x7f\x1c\x97\x1c\x8c0\xb0\xeb\x06\xd3\
+\xb3\x07E\x86\xee\xb4\x02|\xd2\xeecl#\xca\x9ec\
+l\xd3\x9e\xe3,y\xaf\x22\x08>\x16a0\x89\x83)\
+]\xcc\xc9cV.\x0f\xc0A+`\xa0\xedw\x04\xf0\
+\x0f9)\x10`\x5c\xd7Q\x84\xb6ce\xb0X\x00\x7f\
+S\x06\xbe\x84]\x87k\xdd\xc0\xd7\xc3\xef\x02\xad\xce\xe0\
+\xcc\x1c\xe6\xbcd=fD\xff\xab\xc3\xe0\x09\xbe\x03m\
+=\xe2\xad\xe6,}\xc0S\xe9.\xab\xd8\xac\x80X\xe6\
+\xb7:\x95\xf9\xaf\xde\xc6\xbc\x97oe\x1e\x8bS8\x01\
+\xe6\xf9\x13\x01\xe6\xc7\xb3i\x1eq\xcc\xce\x0d\x1ck\xe7\
+(\xb1\xc7 G\xeaU\xfc\x94\x96\x83\x8a7\x95j\xf9\
+\x00X\xc9\xeb4l\xb2\xab\xd8\xc8!H\x80\x159\xf3\
+B\xb8\x8aI>\x00\x8f)YQ\x84A\xd0\xb7\x83/\
+\x11\xbca\x0fs\x87\xcf1\x85Z\xabM\x89\x9dw\x04\
+\xf3Z\x9d\xc4\x22\x93\xf7\x03q\xf2\xd8\xd9|%;\x87\
+\x89\x1a$\x02\xfa\x00B\xdbQ\xf39\xe8WKA/\
+\xb8fB\xdbI\xe3\xaf\xdfQ\x80\xbfy\xf7\x01\xbbu\
+\xef!\xbb]\xf2\x90;\x82\xb9\xf9J\x22H&\xc0\xc6\
+\xed\xc7\xf8N(\xf1\xf9f\xf8\xc70\xefU\x9bY\xf2\
+\x8e\x93\xec\x10<\x07-\x07J\xe6\x89|\x16\xb7\xf9\x08\
+s\x15\x04\xf0\xd1'\x80\xadK\x0c\xb3q\xa2\xd6r\xeb\
+yb\x0b{\xfdW\xd2T\xaa\xd5\xcb\x87=\xf7\x03l\
+=\xf6\xa9I\x80\xeb{\x01\x0f\xaf^\x0d\xe8\xdc\x0f\x00\
+\x8fZ\xc9\xc5+\xda\x8e\xc5\x99\xc8\xe4t\x1eOKk\
+\xe0\xbf\xfaMp)\xee1\xda\xf1t\xcb\x1e\x96\xdb[\
+\xf5\xb4L\x835t\xab,\xe0\xbc\x9e\xec7\xd1\xa5\x00\
+\xcc\xeb\x1f\xe2u\xd8\x87\x10\xbf\xfd0\x15y\x94\x98\xbd\
+\x80\xaf\xe7w\x80p\xb7\x0dM<\xad\xed\x8a\xb6\x97\xe8\
+\xcc\xbc\x1at\x05\xf8G\xec\xce\xfdG\xec\xee\xfd\xc7 \
+\x8fX^\xe1Mv\x1a\x08p\xecT!\x07W4\x86\
+.Z\x93\xc6\xbc\x83\x93Y\xfc\xd6#\xec\xf8\x99\x22v\
+\x17^\xf7\xec\xf9\x0b\xf6\xfc\xc5\xef\xec\xc5\xef\xbf\xb3\xdf\
+\x7f\xff\x83\xfd\xf1\x87\x22\xb7\xc1\xa7\x08^\xb7_\x93\x00\
+\x93\x9c\xd6\xb21N\xab\xc4\x16\xf6\x0eTJV5\x95\
+ZTz\x99<\x80\xe8\xe6\xfd\x812V#\x80m\xbb\
+\xf0Fb%Od\xf4\xb0\x84\x8a\xa1\xe1\xcb\x02\x8f\x0e\
+\x1bf\x06\xf9\xda~J\x01~e\xc2^6\xd1S\xa9\
+(\x82\x03\xf5\xac\x8b\xe5\x94\x93M\xdavO\x84\xcf\x12\
+\x02\xb2\x9cr\xea\x01TX\xc1\x0c\xdb|\x92\x05\xf47\
+|,\xa8\xc9\xaf=\xa3\xba\x8e\xb0?\x84\x8d\x9e|\x9d\
+\xf5\x08a\xe1\x1b\xf7\xf2}\x80z&\xde\xe8\xda\xae\x98\
+x\x0e\xfc]}m\xbfS\xf2\x88\x03~\xef\xc1c.\
+%\x0f\x9f\xb0\xfb\x8f <\x06\x82p\x02\x9c\x16\x04\xc8\
+\xe5\x048\x92}\x89\x15\x01\xc9t\xa0\xbf\xd0\x07\xfdw\
+\x10$\x02>\x86\xcf\xf9\xed\xd9s\xde?\xa0E\x80\xf1\
+Na\xa2\xa7\xd0HSi\xc5\x09 \xf7\xf37\xa4\xfd\
+\xf1X\xd3\x9f\x80\x1d,\x18\xd2 \x09D5\x0f\x1b*\
+\xb0\xa2g\x16\xd87\x0c\xc35\xd4z\xbe\xce\x93C\x87\
+\xcd\x22v\xbe1\x8a\xb33{\xc9\xfft\x18d\x93\x05\
+\xef\x1dI\xc9\x94@\x02\x18[\xb6gQE\x0dw\xf0\
+\xdaR\x92e2\xfd{*=6\x8b\x9e\x8b\xc4X\xd8\
+\xaa\xd7\x88\x8d\x03\xa7x^U\x88\x1c\xc9\xd2\x0edk\
+\x82nL\xdbo\xdfS@\xe7\xda\xae\x02\xfd\xc1\xa3\xa7\
+\xec\xe1\xe3\xa7\xec\xd1\x93\xdf\xb8`>\x00\x09\x80R\x08\
+D{\xfc\xf4\x19{\x0e\xa0\xbe\x10\xda\xfe\x87\x04<\x90\
+\x00\xff\x8e\x8f?{\x06\xc0\xff\xf6\x9c=\x81\xe7?~\
+\xf2\x8c\xdd\x81\xf7t\x0a\xd8\xc8\x090\xd5-VG\x00\
+\x1b\xa7H~\x8f:\x0e\x998\x9f:\xae\x1a\xe9\xf7\x13\
+T\x9c\x00z;z\xa8U\xa9\x13\x95.\xa75\xef6\
+8\x14I\x80\xebYT\xca\x01\xdeU\x83\x9d:&A\
+\x97\xa4H\x05~\xd6\xf9\x22\x0e<v\xdcx\x87\xa7\xea\
+J\xc8\xe0\xe9\xfe\x0fx\xba\xa9\xf0\x9e\xab)\x8d\xeaN\
+\x80N\xa1\x0d\x1b#\xa8\x99b\x00\x11\xb4/I?\xfa\
+\xdb\x10z\xce8\x22\xc5\x0c\x10W\x10\xdf\xd6\xbdF$\
+\x09\x8b\xb0xm*o\xfa\xd0\x81~\xbb\x14\xf4\x9bw\
+\x0dM\xbc\x0et\x0e\xfcS\xf6\xe01\x02\xaf\x80\x8e \
+#pO\x01@$\x03>\xc7\x98\x89\xd7\x81\xfe\xe2\x85\
+N\xdb\x9f\xea\x80\x87\xeb\xc15\x1f\xe2\xf5\xe1\x1a\xe8'\
+L\xf3T\x13 B\xde\x22\xd7\x85p\xaaW\xdaR\xf6\
+r\x04\xa8.\x8aA\xb4u\xa9%\x99\x1a\xbc\x99s \
+\x0e\x8d\xc67w^\x1a\xaf\xec\x84\x01\x93m\x0ax\xad\
+\xa4\x0c:z\x18\xb6\x1d\x81\xf0\x0d;mg.J\xd0\
+\x81\x0f&\xff72\xf7\xcbH\xe3gQ\x05m$\x81\
+\xdb\x9d\xd6\xbe\xb6\xf4\xd9\x9a\x93\x19\xb4\xa0\x7f\xb7\xa4\xc7\
+:\xd0s1\xf4\x1aN[\xbd\xd02\xb8\x80\xf8\xf5\x1c\
+33\x0b\xdfo\xce\xa2u\xec\xfc\xa5\xabf\x9bxY\
+\xdb\x11,\x04\xed\xc9o\x00<\x80\x88@*\xa0\xbf \
+\x13\xaf\xd6v\xc5\xf4\x1b\x82\xfeL\x02\x1d\xc8\xf3\xe0\x09\
++\xc1\xf7\x05\xd2\x9d\x00\x7fa\xba\x8a\x00\xd2\x12 \xb6\
+\xaf\xa9f\x18\xbc<\x01D[w\x03\xbaxg\xaab\
+M\xed5n\xf6!|\xf3\xe4}'yc%v\xcb\
+\xc8\xa0\x17\xdd0\x9d\x95\xcb\x87u\x10[\xb1\xb1c\x96\
+o\x02\xf5\x8f\xe5%c\x1c\x14\x81\x95\xb3&m{$\
+\xc0\xfb,&\xad\x9fF\x05\x94\xfe\xf4\x19Z\xd1\xe7\xf9\
+\x9e\xc8\xf95y\xc1_\x91\xd4\xa7\xbf}K\xcf\xf9\x89\
+\x08\xd1\x91\xea\xef\xf8\x1dp\xf2\x87#^\xbfu\xef\x91\
+\x09h\xd1\xf8\x1e\xbf\xdc\x22\xa3\xda.@\x7f\xf8D\xd2\
+\xf6\xdf\x14m\xd7\x81^\x96\xb6K&\xfe\xe9o\xcft\
+\xda\x8e\xd7\xc5\xeb\xe3\xfb\x94\x00\xf0\x08::\x88w\xee\
+=\xe2\xce .#\xd3=\xd7\xeb\x080\x99\x9c@K\
+\xc7\x85\xf7\xa9\xab\xa8'9\xec_\x92\x03\x8f\x04\xa8l\
+\xf6\xdccU\xc7\xaf<\xbf\xe73\xba\x99\xcd\xe8\x06\x0e\
+j\xdc\xaa\xb3#n\x9a\xc0\x10\x0bM?\x86jei\
+\xbb\x9c\x99\xc3\xd8\xff$x\xe2h\xfac\xb7\x1d\xd1U\
+\x0c\xb1\xc3\x08\xc1\xff\xa5\xf3\x80dr\xf0\x5c\xc8t[\
+\x92\x16\xb7&3\xf7\x0d1\xfd3)7\xfe\xa1JD\
+\x97\xf2\xa7\xf4\xdc\xaf\xc9\xa1\xb5\xa0$Lo\xb2\x08\xe8\
+3\xccm\xdeup\x84 \xc1\xe9\xbcb\xaey:m\
+7b\xe2\x15m\x7fQ.\x87\xce\x98\x89\xe7\xda\x8e\x84\
++Q\x80G_\x033\x8b\xe8L\xde\x80%\xe9(8\
+\x8f\x82\x00S\x80\x00\x13h\xfd\xefbi\xb7\xf9\xa5-\
+\x80\x91\x8e_\xbc\x81\x9fA\x98\xd5\x0c\xd6\xca`\x08\xa7\
+2qo\xdf0\x07\xbfSC\xa6\xf9\xe4\xe0\x9boI\
+W\xda\xa4\xb1\xf7\xdd\x9c\xdc\xbb\x10\xdc,\x81\x89\x9a\x9d\
+\x87\xcf\xe9\xc0\x1f\xef\xae\x98\xb3\x0e\x83'\x1c\x82\xf7]\
+D\xe0O\xa6u\xbc3\x15O\xbe\x93&x\xd6VU\
+\xc7\xb4D\x1e;W\x87\xd6\xc7\xfa\x1425'\xbff\
+\x00-k\x8e\xcd\xbb\x0d\x09\x11$\xc06p\xd9\xa1\xd3\
+\xd4\xf6\x17\xc6\x1c\xba\xdf\x8d:t\x1ct=m\x7fl\
+\xa0\xed\xb7\xd0\xff\xb8\x0d\xc0\xdf\x02\x7f\x04s\x15p\x0f\
+1\x82\x10\x04\x98\xe4\xa2$\x82\x869\x06<\xa4\x02\xd3\
+\xe8\x0a\xf9\x00\xa6:~\xc1[nb\xe9\x18\xb0J\xdd\
+\xf1+Z\xbb\xe6,\x8a\xe5N\x1bf\xe4L\x95VK\
+EI\xc3\xe6\xf2\x9e\xbbb\xfeZ\xfb\x80X]\xcb\x18\
+\x9f\xfaa\xebq\x13\xde{\x099j\x08\xfe`\xb2:\
+\xcdTS;k\x1a\x19\xb8T\xd9\xc8N\xa5\xea\xf2@\
+\x07\xbaI_\xd3\x0dkK\xcb\x02\xfa\x16S[t\x1b\
+\xb2\x0a\xac\xdb\xbf\x9d\x96\xc4\xe9i;\x82\xfe\xdb\xf3\x17\
+e;t\xcf\xcbv\xe8\xb4L<\x07\x9d\xb4\xfd:\x00\
+\x7f\x0d\xf3\x0e\x18\x95\x80\xb5\xbc\x0c\x8e\xf2\xa2\xb0\x9d\x9c\
+\x00\xb6\xae\x98\x0f\xe1\xcb\xe4\xbf\xd1j\x91?3\xb4\xdc\
+Q@Y\x1d\xbf\xa2\xf1\xd3X\xc7\xef\x9a\x94\x83<C\
+\xc7;e\x8d\x16]\xf4\x0b/\xe8\xf1\x8b\xb4,\x8ez\
+Q\x9b\xfeF\xcd\xdb\x87\xc2\xfb{\xd2\x96\xef\xa1\xa4\xa1\
+?Ie\xd3\x0f$\xe0\xcdj\x8a\xd0 y\x0d\xfa\xae\
+u\xc8\x5c6\xa2}\x0b\xddh\xa9\x99\x02^\xf5z\xfc\
+\xee\x09\xdb35\x1d\xba?T\xda^\xb6\x89\xd7w\xe8\
+\x14\xe0\x1fJ\xda.\x83^\xa2\x03\xbd\xf8\xea]\x9e3\
+\xc0,\xe2t\xafXf\xe3\x1aF\x89\xb0\xa0?,\xba\
+\x0c\x8a\x81\xcf\xeaD\xe6\xbf|y\x00e\x84z\xc5;\
+~\xa7\x82\xc3\x86m\xd2\x18\xba]\xc2\x0fz\xd3x\xb5\
+Mn\xa88Gm\xd2\xe1\xc9\x07t\xd7\xc2\xf7\xa0m\
+\xde\xa7(y\xe3@\xa1[\x17\xd2\xfc\x06\xaa\x8e\x99\x0a\
+\xd5\xbe\x8dX\xbb\x0f\xc9\xaa|CKL\x17\x22\xc1\xd4\
+\xbe\x13\x9c\x8f\xe3\xe7\xca\xbf|\xc3<\x87\x8e\xac\xc5#\
+3\x1c:\x03\x13\xaf\xd2\xf6b,/C\x84\x84\xc3&\
+p\xed\xb7_\x10%\xc2\xe2\xff\xc6\xfb\xd4\xa8y\x87U\
+\xd4W8\x85\xacd\xf92\x81\xca\x0c|\xfd\x8e_1\
+\xb8\x09\xfb\xd7\x16F\xa5\xb1\x15\xf1{\xb9\xe0^<\xb7\
+\xd5\xfa\xcd\x9e\x0b\xa3\xb7\xf3\xca\x1bnx\xd0\x04]\xa3\
+\x93\x06\xabq\xd8&\x8d\xa4\x91\xaf\x85\x8d\xa2\x8a\xf6w\
+X)u\xca\xf6\xa45\xba\xa1\xa4\xf9\xafdr\x86\x11\
+\xcb\xf7)-\x09?\xd3\x16\xad\x11\xdf\xb7\xec4\x0f\x1d\
+]\xef\x90\x8d/\xe1\xd0\x11\xe8*\x87N\xcb\xc4sm\
+\x07\xd0\x0b\x01t\x04\x1ek\x02\xeb\xb6\x1c\xe0YK\xae\
+ \xa3\x1c\xcf4\xb2h\x1fI\xf9\x10\x17\xb2\x92\xc3\x89\
+\xb4\xe6\xd7\x020,\x00\x02\xe8u\xfc\x8a\xc9\x9a\x8bc\
+\xb6\xf1M\x11\xe9'.\x96\x16a\xa4\x92\xeb\xae#\xe7\
+!\xec\xcb\xe6a\x1f\x96\x5c/\xf0\x82\x8aq\xd0E\xb3\
+$\x0av\xc9b\x11\x06w\xf5\xca\xed\xe2\x8a\xf6\xcf\xc8\
+&\xd3oK\x83\x9f\xda\x90i\xfeS\x864\xab\x22\x1e\
+1\xb4\xb2.\x11\xae9\x11pl\xd7\xe1S\x93\xf0\xf3\
+\x9d\x81\xa8@h\xfbS\xb3\x1d\xba\x87\x9a\xda\xae3\xf1\
+\x98}\xbc\xa6\x98\xf8B\xd2v\x04\xfd\xf8\xd9\x02\x16\x9e\
+\xb4\x97\x0f\xa9\x22\xbf\xe8\x06\x84\xc4q\x14\x12\xcf\xa7\x9e\
+\xc2\x89\xb4Dv-W5\xf0\xcbF?\xe1y8t\
+r\x86~\xc7/\x82\xaf\x80~\x91@/-\xb9*u\
+\xf6\x02\x1e\xb3c\xec\x8e\x9b\x1dO\x80\x17\x8fk\xbe)\
+\xd0E}\x1dS\xadH\x00$\x90\xac\xfd\xe3\xdcB\xf9\
+\x97l\xda\xaeg\x18%z\xac\x88\xd1M\xa5\xd9\xbc\x7f\
+\xda.\x19\xad)fD\xbc6DD[\xdc\xc7\xb0 \
+8I/f\x17\xda^\xa6\x897\xaa\xedwJ\xb5\x1d\
+@?\x97w\x95%\xed8\xc2f\x07\xc6\xe8\x0a^\x08\
+<\x16\xb5\xc8)\xf6\x06\x99GZ/\xf2!\x1d\xa5i\
+\xe6\xe6\xf5\x03\x10\x01\xd09\xd0u\xfcbx\x87f_\
+\xbd\x13\x86\x83~F\x01]4X \xf0r\x9d\x9do\
+~(\xb8N}\xf07\xb8\xa0\x97\xafT\xdan\xf1\xfd\
+u\xb9\x85J\x9b\xf4\x85\xe2\x9blY\xdcn=\x02`\
+\xd2g\xe0\x14\xcfk\xa4\xfd\x93\xe9\x8b\xb5\x92\xa6s\xd7\
+\xfc\xb3w\xc9j\xec\x81\xf8'\x11\x10\x89h\xd5u\xc4\
+\xd4D\x04$\xe7\xd2\xd52\x1d:C\x13o\xe8\xd0a\
+M@h;&wpn\x90\xbd\xb7\xc8~\xfa>\xef\
+l9\xe54e@\xb1\xd8\xe5K\x8e\x9e=-\x8d\x83\
+\xc8Y\x15\xf9\x90\x06\xe5\xea\x08\x22\x02TS\xce\xc5\xe1\
+/l\x84o\xbcp\xcdV\xea\xaa\xb9d\xd0U\xa3\x03\
+\x9d\x03\x7f\x99'p0\x8eGO\x1e\x1d:l\xb2\x10\
+uv\x99\x0c\x1ct*\xb9b\xb7,N\xe3V\xef\x16\
+\xc2\xf7\xee6\xd2\xfe\x00\xed\x90\x1d%\xc5\xb2_\xbc\xce\
+\x89YR\x05\xb4\xa6<\xd0\x02\x09\x89I/\xfc\x9c+\
+b\xb7\x9b\x17\xb3\xab\xb4]m\xe2\xb1[8\xfd\xc8\x05\
+\xbeM\x1ck\xfeQ\x89\x87\x98\xeb\xd2\x0d\x22\xa5\x8b\xd9\
+\xcf\x08\xca\x83\xb8\x93C<\x9er!=(d\xfdI\
+\x1a\x91[G\x9a\x9a^vO \x10\x00S\x83\x98!\
+\xe2\xb5\xfev\x03\xc6\xf5\xc67^\xb39C\xcf\xc4c\
+\x86N\xad\xed\x22|;-\x80\x07\x87\xee\xec\xa5\xd2\x06\
+\x0b4\xf1\xa8\xed\x17H\xdb\x05\xf0\xb8\xc5\x1aK\xae\x09\
+;\xb3T\x1bG\xc3\xc5\x0e\xd9\x08\xaa\xdc\x0d\x22\xd3\xfb\
+\xcd\xeb\xde\x22\xa5J\x7f\xd7\x22\x026\xa1\x04\x94\xd5@\
+[\xcf\xd3\xd3\xfd\xd6\x94\xc3\xa1\x93M\xbc\x02|>(\
+\xc3\xc5\xc2\x9b\xec@V\x1eK\xd9\x95\xcd\x12\xd3\x8eq\
+\x02D\x03\x01\xdc\x96\xeaF\xc5DJI\xb0)\x14\x0d\
+\xf5\xa2\x18\xffgZ\x9e\xbe\x94\xb4\xbef\xb9\xda\xc3\x89\
+\x00x\x1a\x96^\xc7/\xb6R\xa9\xb5]\x80\xae\xa7\xed\
+\xf9W\xf5\xbajr\x8ch{>\xf5\xc7\xcb]5X\
+\xe5\xd3Z\xff)\x9c\xb1\xd6\xc8e\xff\xe3un\x90\xd4\
+\x1akGV`@7\xabi\xb1\xf8YO\x9e/4\
+\xc3\xa1+5\xf1X\x0eF\xd0\xf3\x0a\xe0\xfe\x5c\xba\xc1\
+\xbb\x84\xb0\xdbG\x8f\x00I\x87\x98\x7f\x882,\xa2\xc9\
+\xaf=b\xa4<\x88%\x99\xfb\x16\x14\xe2\xd5'\xa7\xf8\
+#i\xc6p\xb5rYH @\x15\x22\x80\xe8\xf7k\
+\x89o\xbcr\xfd\xceRm\xbf i\xfb\xc5+d\xe2\
+\x8di{)\xe8\x8a\xb6\x1b\xef\xaaQ\xe7\x120\xcf0\
+\xc4\xde\xe7\x0ey\xb5#\xc9\xa9iL_\xf2\xb5\x9f\xcc\
+ad\xb2\x19\x9a\xdb\xee\xbft\x1e\xc0G\xdbl\xd8~\
+\xb8L\x87\xee\x92\x00\x1d\xe4\x02\x00\x9f{\xe9:\xef\x0f\
+\xc46qt\xf6\xb0E\x0c\x09\x90\x94v\x9c\xc5\xa5(\
+\x04\x08\x0aWv\x0d\xb7\xee=r\x03\xdd\x8f1\xa4\x10\
+-I\xeb\x85\xb9\xaf\xa5qZJ\xa5\xf2\x12\x00\xd6\x0b\
+\x8b\x8fi\x9dk=r\xf6\x92GNK\xd7\xeb@7\
+\xa5\xed\xb2C\xa76\xf1\xa6\xbaj\x0eBd\xa1&\x00\
+\xa6\x94\x07\xd9y\x15S\xa5o\xb0d\xfeE,\xfb\xda\
+7HJV\xa0\xa6\xf0\x91\xa8pd\x09\xd1\xc0oK\
+\xa2S\xf5cv=m\xbfi\xa0\xed\xd8\x1a\x8ek\xfe\
+\xb9\x0bp/\xc1\x92\x9e\xc9\xbd\xc2\x09\x80#c\x93h\
+^ '@\x84\x8e\x00q\xd2\x96\xf1N\xaa\xbd\x03b\
+\xba\xf8{\xaa-d\x95^\xca\x02\x0c\x98\xec\xcec\xdd\
+\xd4\x8cl=\x87\xee\xbc\x09\x87N\x98\xf8\xb2\xda\xa4E\
+\x83E\xdc\xf6#\x06\x04\xa0-S\x99\xaai\xdc\xf5\xa5\
+q\xec\x95\xdf\x10\x01\xe4\xb6\xf8\x06\xa4\x85\xfd\x879\xf8\
+_v[\x91\xa0\xe7\xd0\x19\x98x\x95\xb6\x9f\x05\xe0\x11\
+tl\x0d\xc3\x0ea\xdc)\x84\xbb\x85\xc5\xc8X>0\
+2)S\x22\x80U\x1c)\xc40\x89\x00\x0d)\xc3'\
+\x9f\x99TSE\x04\xf3\xee\x95\xda\x07\xc0$B\x93\xb6\
+=,q\xf2\xf6\x04\x8f`\xb67\xeb\xbc\x81C\x97g\
+J\xdb\x8d\xb6I\xebw\xd5`\xdd@\x93\x00\xca0f\
+\x1b\xedR\xe6\x9b\xd9\x1eM$0l\x8a\x9d\xec\x9e\x8e\
+Y9Cm\xbf\xce\xb5]\x01\xfd\x9a\x04\xfa\x15\xde\x15\
+\x8c\xbb\x83p\x97\xf0\x89\xb3E\xbc\x09T\x84~\xf2\xc4\
+\xd0ED\x00,B\x0ds\xf0\xbb\x02\xa1\xf1n\x90\xf5\
+\xb8)\xa7\xdd\x80\xf1=\xa5\x0d$\xea\x12x\xadrm\
+\x0fSG\x01\xc4\xb0\xaem\xfaX\xb9b\xbf:~\xc1\
+\xd0\xc4=,\xfdx\xaeI\x87\xae\xcc6iUW\x8d\
+_d\x9a&\x01z\x8f\x9b\x93A\xf1\xadzBV\xd5\
+7L\x80\xaaRS,~\xae\xae\xfd&\xb8\xf0\xcd\x1b\
+\x06&\xde\x84\xb6\x9f\x04\xd0\xb1\x93\xe78\xf5\x05\xa2\xf9\
+\xc7\xdc\xbezdlH\xec~\xe6\xbc8\x81\xcd\x0e\x88\
+e\xb6^\x11l\xac\xf3*\x83\x16wP\xd2\xd3\xb0\x0c\
+e`\x85\x16\x9c\xf7\xfe\xd2\xf6\xb0:\xaa\x03\xb4*\x97\
+\x95\x08\xd2\xcb\x03\xd0p\xa2A\x8d[v\x9e\x81\xe1\x8e\
+\xfc\xa6\xb3\x83b\x98O\xe8&\x16\xb1i\x1f\xdb\x07\xd6\
+\xe1\xd4\x85\xe2\x0a\xb5I\xfb\xad1B\x80\xf1s\xd2)\
+\xb3\xd5\x99F\xa4|\xf6\xa6'di\xf8\x01\xe8\x98v\
+\xea7\xd1\x85\xd7J\xb4M\xfc\x95R\xd0u\xda.\x83\
+^\xc0M\xffa\x88\x002\x8f\xe7\x1b\x8c\x8c\x8d\x88?\
+\xc0\xdb\xbf\x97G\xeda\x8b\xc2w\xb2\x80\xe0ml\xfe\
+\xb2-ln\xc0\x06\xe6\xe8\xbd\x8e\xd9yF1k\xd7\
+\x10=b !\xfaX\xcf\x1dG\xcb\xd4g\xd2\x01Z\
+\xc6I\xa0\x95\x09$\xd3\xdb\x85\x0a\x0bv?\xb5\xef\x13\
+\xd4~\xe0\xf8M=\xc7\xcc<6\xc4\xde\xfb.\xf6\xe0\
+\x8b7\x8d\xda\x9c^\xae6i\xd1U\xe3\xaf14\x02\
+\xb3\x804$\xf1m&@]R\x92\x0e\xfd&\xba\xa6\
+\xe0=\x90\x1d:\xa1\xedj\x13\x9fu\xaaP\x01\x1d\xb4\
+\xfd0\x00\x8f\xa1\xdf\xa1\xe3\x17\xf9\x06\x11\xcc\x03p\x02\
+\xd0\xc4PN\x80\x84R\x02,&\x02\xf8\xacHe\x9e\
+KR\x98kP2\xdf\x1c2\x9b\xf6\x06\xd8{\xc4\xb2\
+\x89.\x91\xbc\x1d\x0c?\xcf\x80\xc9\x1e^\xd2\x99\x03\x1f\
+\xe9\x93@U\x0d\xd4\xaa\x05\x90\xe7\xdd\x5c\xaa\x87O\xa2\
+\xbc\xbc'U\x9e\xb0J\xb7\x06\xdf,:%\xbdBm\
+\xd2XQ\xd4\x0a\x03\x87N\xf7\xbd\xfe\x16/\x01\x22\x1f\
+\x807\xb7}\xff\x89\xae\x9b\xf1\x1e\xe8\x9b\xf8b\xc5\xc4\
+\x9f\xd17\xf1\xb2\xb6\xe3\x9e\x00<5\x04\x81\xc7i!\
+\x98\x05\xc4M\x22;3\xce\xe9\xc6\xc6\xc5&\x1ff\xe1\
+\xf1\x19l\x85\x8e\x00\xdb9\x01\xbc\x88\x00N\xfe\x1b9\
+\x01f\xe0\xde\x00j\x0c\x9d\xec\xb2\x96\x8ds\x0a\xa1\x91\
+\xf3n\xde\xd4\xfb\xf8\x854iD\xbb!D\xa3\x1a(\
+F\xb96'M\x1c@iY[\x89\x08|<\xfa\xda\
+-\x19\x15j\x93\x0e\xd0 \x80\x94\x08\xd2\xeag\xab\xf6\
+\xb6\x11`\xb0\xbd\xf7a\xdcjf\xa8\xed\xb2\x897\xd4\
+v\x01\xfa\xfe\xc3\xb9|s\x086w\xec9t\x9e\xed\
+>x\x9eO\x0eC\x22`\xbb\xd7\xf6\xfdg\xd8\xb6}\
+gx\x82\x08}\x03$\xc4\xd2\x88]\xdc\x0a\xe0\x9e\x00\
+A\x00\xb91\x14;\x83\xc7:\xadV\x0e\x9e\xe8\xd0\xb7\
+\xab4p\x82*\xa8\x16U4\x9bB5\xfa\x01\xeaQ\
+\xb8\xd1\x94\xe2\xf1\xaeD\x84\xd1\x94\x95r\x1e2\xcd\xe7\
+v@\xc4f\xf3\xda\xa4\x9f\xea\xb7I/\x8f\xdf\xa31\
+C0\x9cN\xff\x1a\xeeCa\xa08\x93\xe7\xc379\
+&\xcd\x18\x01pX\xb4\xd3\xe28\x03\x87\xee\x88\xce\xc4\
+\xe7K\xa0\xe7)\xa0\xa3\xb6\x1f\x16\xa0\xe7\x18\x82\x0e\xb2\
+\x8d\x03\x7f\x9a\xcf\x10\xc4Q\xb2\xb8<`\x9e\x00\x93E\
+\x9bw\x9e\xe4\x84\xc0\xa5\x01\x97\x81\x19\x0b\x12\xf4\x1aC\
+\xb13x\x82\x93h\xa7\xf3\x8c\x97z(\xa8\x81\xc6\xa2\
+\x9a1\x02\xa8;\x82j\xd3z\xf7%}\xe1\x9f\x88\x08\
+=hY\xb0Es\xed\xb5:\xb1Bm\xd2\xd8:\xae\
+5:\x0e?8\xf8\x1a)T\x07hM\x1f\xfe\x8d\x0e\
+J4\xe6\x03\xe0g\x0dZ\xb3\xd5\xc0\xa1\xe3&\xde\x98\
+\xb6\x03\xe8{\x0e\x1a\xd7v\x05\xf4\xd3|\x884\x86\x86\
+\x02t\xdc\x04\x82\xc5\x22t\x141_\x80$\xc0\xa2\x11\
+Z\x015\x01\x84\x15\x181+\xe8&Yp\xa9\x94n\
+\xf1\x0f\xf4\xf9p\xe9/\xabEJ\x9e\xfd\xfb)i\xe2\
+\xf7\x94\x04\xc18t\x14\x98\xc0\xbcyKbM\xee\x84\
+1\xd6&\x8d\x872j\xb5\x96qG\xd0\xde\xfb\x229\
+\xa0\x1d\xe8=?}\x93\xa3R\xb5\xa2\x80\x0e\x83l\xf8\
+\x98\x9c5\x1b\xd35L|^)\xe8\xa6\xb4}\xbf\xa2\
+\xedi\xa0\xed\xb8\xf6+\xa0\x9f\xd2\x07\x1d\xfc\x01t\x0e\
+\x11\xf4$\x00=1\xf5\x18\xdb\xb05\x8b\x0f\x97F\x87\
+q\xd5\xda}\x0a\x01\xdc\xf5\x09 m\x10\x11\xe5t*\
+\xa8Y\xd4\x00\x02T\xd5$\x80\x89\xbd\x00\xa29\xf4+\
+r\xcc\x10\x98\xa1bchE\xda\xa4\xb1r\xa6E\x00\
+\xd1\x0a\xfeK\xe7\x01\xb3\xc9\x09\xfdIU\x0a\xae\xf46\
+\xe4\x01\xfaOr\x0d\xc5\xcf\xb9=\xfd\xb4\x81C\xa7h\
+{N\xa9\xb6\x1f\x00\xe03\x10\xf8\xb3\x1a\xdaN&^\
+O\xdbO\x94j{\x9a\xa2\xed\x1b\x00x\x01:\xfa\x03\
+X4\x8a\x05\xc1M\xa2\xb8\x14\xe8\x08\xe0l@\x80\x11\
+R\x7f\xe0g\x18\xee\x9b$\x80\x11K \x0ea\xfe'\
+m\xa4h\xd7q\xc8$/\x1c\xf3\x8eoR|\xfdN\
+\x85\xda\xa4\xf1\xc0'c\xcb@_\x1b\xa7\x1d\xb4\x9f\xaf\
+\xc5\x9b\x9e\x97\xab\x95\x09\x1c\xe6\x18p\x02\xcf\xf7\xd14\
+\xf1&\x1c:}m\xd70\xf1\xa4\xed\xfa\xa0g\xb1\xf5\
+\x00<\x16\x8a8\xf0\x00\xfa\xbaM\x87\xf9\x01\x13\x986\
+\xf6[\x95\xa6\x10\xc0u\x9d\x8e\x00\xe3\x9cB\xf9\xe9&\
+\x14Qu+\x8d\xa8,ja\xde\xc7\x1c\x02TQ5\
+I\xe2\xda\xd7\x00G\x90\x0cs\xf0\xdb+\xf6\x05`\x07\
+/f\x06+\xd2&\xbd.\xed\xb0\xa6\x15\xc0\xa6P\xcc\
+B\xfe\xd0\xba\xdbx*\xbc4\x22\xd3\xfb\xa6*\x82z\
+\xb5\x80\xb6}G\x0d\xe4C2\xc3R\xccr\xe8\xd4&\
+^q\xe8Njk;\x9a\xf8\xd4,Cm\x17\xa0o\
+\xca\xe4y\x02,\x18\xa1\x0f\xb0f\xc3A\xb6|\xcd\x1e\
+>*F&\xc0\x18'\x9eS)\xa0\xe6\x91\x1e\xa5\x96\
+\x94\x13\xa0:f\x80?o\xf8C%s;d\xebv\
+\xb6\x9c\xd2\x1e\xe7\xd6\x8c\x9a\xb7\x8c'\x81f\x05\xc5\xb2\
+\xed\x87\xcep\xc7\xcf\xec}o\xaa6i\xac&j\x11\
+@\xb4\x85c\xaaU\x0a\x07\xd5g\xf4\xbe\xce\x9e\x00\xdd\
+\x8cD$\xe3 \xbb\xf91\xf8\xf9Rv\x9fT9t\
+g+\xec\xd0\x19\x98\xf8\x94R\x13\x1f\x03\xc0\xaf\xe5\xda\
+~\x887\x8bD%\x1e\xe4\xc0G&\x1c\xe0\x19\xc3\xa5\
+\x91\xbb\xf4\x08 v\x08w\x19\xce\xb7\x88\x8d\xa7-t\
+j\x02T25\x0d\xa4\xaa\xbc\x0fp\xe8t?_\xbc\
+\xe0$\xcfP\xb6:~'\xef\x8b\x7fU\xfb\xde<\x8c\
+\xcc\x12\x16V\xa0y\xb7\xc1\xb6\xd4\xf6\xf4\x9d\xca\x0aT\
+~Mma\xa2AT\x98\xfffVs\x96<\x98\x1d\
+\xb8\xee\xa5\x1c:\x01:w\xe8\xb6\x18\xd1\xf6\x8d\x86\xda\
+\xceA\x07\xc1\x9c@\xd8\xfa\x0c\x16\x1a\x97\xce\xe7\x07\x09\
+\x02Lr\x8e\xd6\xda\x22\xd6\xb9t\x8b\x98\xc5\x07F\x97\
+\x00\x95\xb9\xab\xdd\xb6\xdf\xe8Fx\xca\x07^\x10\x81/\
+y\xf8\xd8\xe4\xd6f\xa3m\xd2\x8f\x8c\xb7I\xef8t\
+\xd6\xe84q\xe5`\xa6\x80\x02\xb2\x02\xa2\xcf\xfd\xa3\xd7\
+\xd5\x1a\xa6\xd1\x17\xf8\x0d\xc4\xd6+x\x02,\xf9\xe0K\
+8tZ&^h\xbb\x06\xe8:m\xcf`\xe1\x00z\
+\x18\x80\x8e\xc0c\xc1\x08\xd3\xc5s\xfd\x129\x01&\xbb\
+D\x8b\xcd\x22\xea-b\xbf\x96n\x11\xb3\xa8\xa9\xe9\x04\
+\xaa\xf2\x00<%\x8c\x95&\xbc`p\xc2N3\xf7\xbd\
+U\xacMz\xce\xd2DM\x12\x88\xc3%\xc0!\x5cK\
+\xbe\x80\xd8\xe9R\xfb\xcf^\x0a\xb4:\x83!2\xf9\x15\
+3l3\x17\xc6\x94\x82n\xd2\xa1;\xae\xed\xd0\xa5\x18\
+w\xe8\x14\xe0\xf5M<\x07\x9d\xb4]\x80\xbe:f\x1f\
+[\x05\xb20d;\x9b\xea\x01\xf7\xca%\xd4\xcc-b\
+\x16\xefi\xe6\x01\x88\x00\xf2@\xe8\xaf,g,\xdc\x86\
+f\x1f\xd7k\x01\xfc\x8b\x97\xdc\xf7\xa6\xd5&}\xf0D\
+\x9e\xd1i\xe2\xb8\x14\xe0\x17\xeb<\xcc\xd6\x85\xe2\xd9o\
+i)\xf8\xd3\xc6\xa8\x1b\x19\x88\xf1\xdd\xf0\x19\x81Gx\
+\x1bX\xeaQ\x03\x13o\xd4\xa1\xdbZ>\x87Nm\xe2\
+\xb9\xb6\xc7\xaa\x80_\xbb\x97\xad\x8c\xde\xcb\x02C\xb7\xf1\
+\xc1\x91\xe5\xdb\x22fQ\x1dk?\xc6\x08PUrv\
+\xbe\x835\xf8~p\xc2.\xa3\x0e\x1d7\xf1O*\xb0\
+\xb5Y\xd7CwW\xd7&\x1d\x18\xbd\xc3\xe8\x99\x02\x18\
+mX\xcd]\xf6\x9f\xed\x07ZO!67Tm\x0c\
+\xad\xf2*}\x02\xc9\x12\xd6\xa4\xdaz\x83\x01\x93\xdd\xe7\
+\xe3\x8d\xf6\x0bM)\xbfC\xb7\xd9\xd0\xa1C\xd01\x81\
+\x84!$Z\x92\xd0\xf5\xfb\x98\xcf\xea\xcd\xbc\x17Pm\
+\xe2\x15\xd0\xf7\xb1\x95\x00\xfc\x0a\x00\x1e\xd3\xc0.\x8b7\
+\xf0Y\x82\x1cxe\x8bX\x84y[\xc4,\xaa\x9aJ\
+\x05\xcb-\xd0M9\xdbwd\x9a\xed\xd0\xdd-\xd7\xbe\
+7\xfd6\xe9s\x17\xaf\xb1i\x01qe\x91\xe0\xff\xb4\
+\x1fd3\x99\xbe\xd4\xd7\x92%x\xefU8\x86\x1aG\
+\xe2\xa0%\xfc\xb2\xeb\x08\xfbah\xfa\xed\xbd#_\x99\
+C\xb7yg6O!c\x02\x09s\x07\xb3\x16\xc6\xe8\
+5{L\xf6\x0ag\xd3}\xa3\x99\xd3\xa2\x04\xb6`\xe5\
+f\xe6\xbbz\x0b\x9b\xbf\x22\x99\x0f\x8f\xb4qS*~\
+\x83\xed\xbd\xef\x01\xf0k\xa8m\xdc\xcc-b\x1a\xc5 \
+\xaa\x06\xca\xc3 1\xe3g!\xb6C\x9b\xeb\xd0\xa9\xb5\
+\xdd`'L\x19m\xd2\xbb\x0f\x9f7y\xba\x88 \x01\
+\xf8\x04\x81\xb4s\xf7\x1bU\xe3C\x85\xc7\xa5\xab\xc0\x17\
+\x89\xaf/`=m\x85\xa1\xaf\xb5\xebj\xee\xbc\x99\x17\
+\xb3\x9bv\xe8\xd0\xc4#\xf0|`$\xfc\x8e\xdd\x92I\
+\x1bb\xa6\x15\xb4\xe9c\x95\xd5\xddjz\xee\x00[\x8f\
+[r\xdf\x85,\xb8s\xaaU\xcf\xe1\x9b\x09\xf8\x05\xe4\
+\xed\x9b\xb9E\xcct9X\x8c\x83\xe5\x8d\x8fx\xb3#\
+7\xed\xe3\xc0?0{\xdf[\xc9K\xb5I'\xee<\
+V&\x09\xf0&\x0c\xb1\xf7\xd9\xdc\xacc\xdf\xceR\x8b\
+\xf4'\x1a-\xd2UL\xcd\x0cP\x9dv*g=?\
+\xe6\xe0w\x1d\xd4\x12\xe7\xef\x8e\x07\xf0#\x133L:\
+t\xc2\xc4\x9b\xe3\xd0\xe1k\xe5\x91\xb1\x98Q\x04\xff\x02\
+\x0f\x8c\xc6\x16\xf0\x18\xda\x09\x84s\x0fq=_\xd9\xaa\
+\xd7\x88M(\x16]\x06\xc6\x12\xe8~T\x92\x9fC\xc0\
+\x8fy\xa9-b\x1a\x04\xe0\xdd\xc1\xc3\x1c\xfc\xb3q\xf7\
+\x8bnk\xb3\xa4\xedfom\xae@\x9bt\xfc\xf6,\
+\x93\xa7\x8e\x89\xbe\x01\x9c\xab\x8bM\x92T\xed\x92;e\
+k\xab\xda\xa5\xabi\x10B}\xa6\xb1\x98\x84\xc2k\x1e\
+\xdd\xac\xa6\x0f\x01\xcd\xff\x03\xc1\x8f\xd8\x90\xfeJ\x1c\xba\
+Pr\xe8\xb0G@\x8c\x8c\x0d^\xbf\x9b\x7f\x97\x16\xdd\
+\x87b/d\x944\xf7\xd0\x87@v'\xa7\xce\x95<\
+\xfb\xd9\x14\xdeM\xa2\x1e\x8dA\x94\xe8\xa9\xf8\x161\x8d\
+%\x80\x9f\xec-\xe6\x01o\xdcu\xd4\xe4\xac\x1a\xe1\xd0\
+\xa1\x89?\x95S\xcc\xb2\xcf\x17\xbdT\x9b4v\xd5\xc4\
+\xa5\x1d1I\x02\xcc\x16b\xe5\x90N\x1d;\xdfc\xf4\
+\x0c[j!kH7\xe0S\xd2dA\x86\x9ad\x1d\
+\xde#\x11g\x1a\x7f@\xdf\xf9\x13\xf2} \xd6\xf7\xf0\
+@\xb3\x8f\xe0\x87'\xec7\xcb\xa1\x8bJ4\x12\xbe\xa9\
+\x1c:\xbc\x0e\x12_\x8c\x8cu[\xbeA>A\x04\x0f\
+\x8f\xf2'\xb0g\x90vO\xa2\x89_\xe3)\xaf?\x92\
+\xf6\x05\xf6%'\xaf\x0deJ\xbf{\xa9-bD\x00\
+\x83\xd6\xe7\xa1\xd3|\xcf\xe1\x07\xdc\xba\xff\x84Qm\xbf\
+Pp\x9d\xc5\xa5\x1eb\xb3\x83\xd6\xf1/\xe3\x1d\xb2\xe9\
+\xa5\xdb\xa4Q;6l?\xc6'\x8f\x18#\x81\xado\
+\x0c\x9b4\x7f\x0d\x1bK\xcb\x02F-\x83\xec\xe6/F\
+\xa7\x8d\xca\xc8_\xd3w\xa9GQ\xc3'\xa4\x19u\xa4\
+iah5\xbe\xc2C\x17\x86L\xf3\x09\x00\x93\xcf\xcf\
+/t\xf0\x8b\x06\x903\x09\xf8#&\x1c:\x15\xe8\xf1\
+r\xcc\x9e\xaex\xf1\xeb\xf6\xe9\xc27\xfc\xfe\xa8\x04\xf2\
+\xc8\xd8\xf9\xab6\xea\xd6\xf6\xef[t\xf4\xa7\x0d\xa0\xd6\
+\xe4\xc9\x0f$\xb0{\x91\x89\xefD\x89\x9d\xe6d\xea\xbf\
+\x95\x80\xffP\xb5E\xcc|_\x88\xa2\x00\x83y\xc0?\
+\xb4\xeej\x0d\xeb\xd3\x1d\xfc\x80K\xd6\xa6\xb1\x8cc9\
+\xb0v\xdf`\xa7r\x8bY\xf2\xee,\xde!,\x9c\x93\
+\xa1\xd3\xfd\x9e\xf7\x9f\xec\xc6\xc7\xc9\xec<xZ\xdf\xc4\
+\x97\xb3MZ4X\xec<p\x8e\xb9\xadJ6J\x00\
+\x1c*\xe5\x10\x18\xcf\xec\xc0c\xb6q\x0f\xd1}\x16 \
+C\xc9\x88YA\x07q\x9a\x19\x90\xc2\xa5\x8f\x8d\xd3\x98\
+\xbe\x13\x9cG\xe3\xc8\x1b\x94\x81\xb6\x9evx\xda\x06\x9e\
+{(F\xe0\xa0\xe0\x89\xe0\x8b\xd6l+\x97C\x17.\
+g\xe8\x8c\xc4\xec+\xa2\xf7\xf0\xb20\xfaA\x0a\x01\xae\
+(\x048\xae\xcc\x0c^\x1d\xb7[\x1cI\x7f\xff\xe7\x8e\
+\xfd\xdc\xa8\x8c\xdb\x87\x00oC\x807#+\xf7\x1d\xad\
+\xf1_\x10\xb1?\xd4\xd8\x1bX>GX\xca\x03\xd4 \
+\x0d\x11\xf3\x80\xf1CX\xf7\xb1\x9e\xbb\x07\xcb\x8bj\x8f\
+\x14<\xd5?z\x8f\x9b\x93G\xe3[\xd7\x81\xc4\xa1\xf7\
+:\xd5;\xe2\xa5\xda\xa4\xd5=t!\x1b\xf6\x1bX\x03\
+$\x00\xfe\xcd!p=\x9b\x05q1\x1e%?w\xe9\
+\x066#0\x96\xd9\xf9\xaca\x13<B\xcb\x1c\x1f\x8f\
+\x89.\xe7e\xf1lI\xccv\xb6n+h\xfc\xd6\xa3\
+z&>F\x14a\xca\x99\xa1[)\x80\x87\x98\x1d\xab\
+u\xcb\xd6\xec\xe6\xce\xa3X\x0aO\xe7J\x048\x9c\xcb\
+\x0bI\x91\x89\xe9\x0c\xa3\x0d\xac\x81\xb4\xe93\xca\x89\x1a\
+o\xdaHk\xbb\x00]^\xdej\xbe\x14\xf0\x1a\x99@\
+Q\xf8\xf8\x82\xd8\xd6\x9e\x1c\x8d\x09\xdf\xb7\xe8\xe4\x06\x1f\
+,\x1aw\xeft\xb3\x9a\xb6\x9f\xbc\xd2\xa54\xb1b1\
+\xfd{\x05N\xb1\xe0)\xe4\xf8]\x15n\x93\xd6\xea\xaa\
+\xd9\x9e~\x86-\x8d\xd9\xcd\xa6\xfa)D\xb0\xf5)%\
+\xc0\xcc\xc5\x09\x9c\x00\xce+71\xf7\xd5\x9b\x99W\xe8\
+\x16\xe6\x13\x91\xca\x9bO\x17\x84\xa5p\xf1\x8d\xd8\xc2\x02\
+\xd6\xa4\xb2\xc0\xe84\xb6<n\x17[\x9b\x9a\xc9\xe2\xb6\
+\x1d\xe1N\xe7z\x04\xbe\x9c\x0e\x1d\x9a\xf8\x90u\x1a\xda\
+\x8e\xa0G)\xa0/\x8d\xdc\xcd\x96D\xecb\x8b\xc3w\
+\xf1\xfe~$\x0d\xde\x0bT\x0a\xb4zH\xf6\xfd\x9c\x00\
+\xe7xvqMR\x06\x9b\xba Rl\x92YF\xe6\
+\xbe\x09-g\xe2L\xa0Z\xd2,D\xb3\xa7\xa3U\xa4\
+\xf8\xd1\x80\xd8\xd7\x81\x1aB\xc7P\x8aq\x06\xc5\x9e\xf3\
+H\xe6\x90\xcc#\x8f\xd5\xa7\x8f\xf5\xbc3\xbcd\xba\xe7\
+D\x85\xda\xa45\xbbj\xa4\x92k\x088g\x9e\xc1)\
+*\x02$2\xe7\x15\xfa\x04\xc0\xf6\xf3\xa0\x98\x1dlI\
+\xec.>\xe0*8q?\x0b\xdb\x94\xc1\xb7\xa6\xc5l\
+9,i\xbb\x0at3\x1c:\xfd\x0c])\xe8\xcb\x22\
+w\xf3\x12\xad\x02\xfcN>\xcf/(t\x07\x0b\x04\xc1\
+\xdc=\xfe\x0d\xbf\x1f\xde\x13\x99\x00XL\xc2<\x03\xfa\
+\x1e\xd3}\xa3(\xdc\xf5N\xa1\x84\xce\xb7D\x80\x0f_\
+\xf9\xc9`&\x86\x22\xd4%\xe65\xa50\xa3\x079%\
+\xc3)\x04\x19M\xbf\x85\x8c\xa1L\x94#83\xbe\xb0\
+\xc6>\xb4q\x0f\xe6\xe7\xe3\x94\xabM\xba\x9c]5\xd1\
+\x9b\x0e\xb1e\xebv3\xff\xc8m\xcc/\x22\x8dy\x87\
+m\xd5#\xc0\x8a\xf5{\xd8\xaa\xf8},b\xe3\x01\x16\
+\x05\xcfE\xc0\xcb\xef\xd0\x95\x82n\xa0\xedk\xd4\xdaN\
+\xa0\x87)\xa0\x07\x02\xe8\x0b\x83\xb7\xf3\xcd\x1dx\xfc\x0b\
+v\xf0\xf8\xaeL\xe3\xe9d\xbc\x17j\x02`\xd4\x81\xcb\
+\xcf\x1cX\xca\x94\x8d\x1e\xee\xab\x09\x83\xafhy\xae\xf9\
+\xa7\x95\xc4\xa5\xfe7\xb9\x13H4\x84\xfeL\x89\x86\x0e\
+Tc\xeeB\xbf\xc5\xbf\xbbK\xad\xe3\xd3\xc4\x98U<\
+\x22\xcdx\x9bt\xeeK\xb7I\x9b\xdfUc\x9eC\x17\
+f\x86C\xa76\xf1\x06\xda\x8e\xa0\x87\xa8@\xe7\xc0\xa7\
+\xf2\x0d\x1eX\xc3_\xb0l+\x7f/\xbc\x0f\xf8\x9d\x91\
+\xd4\x98b\xc6\xcf\x8d\xe4\xc4\xcf\xe4\xe0\xab\x94x\xdb\xf4\
+\xb6\x1aB\x18\xfc\xf9\xd5PUfL\x8cR\xfd\x8c\x88\
+\xf0\x0d}\x90\x1f\xc8G\x10\xd2\x94LU;\x0a[\xc6\
+u\x19n\xb7\x89\xcf\x1b\x82\xb5\xf7u\xb4I\x9b\xddU\
+c\xd4\xa13]\x84Q\xb4\xdd\x88\x89\x0f+5\xf1\x5c\
+\xdbW\xebk;\x07}\x05\x80\x0e\xc0\xe3\x1e\xbf\xf9K\
+\xb70\xaf\xa5)|\x93\x07^\x07\xbf\xab\xd8\x15$\x08\
+\x80\x9f\x0fI\x87E\x9f\xa1\xd3}\xd3\xa9?R\xea\xf1\
+\xff\x13\xdb\xe34:\x83?PM\xdb\x16'W~N\
+\xf2%\xadSh%:\x83\xb3\xe8\xcc\xe7\x07\x07\xc5\xbe\
+\xd66\xe9\x8av\xd5\x94:t\xfb\xccv\xe8\x16\x01\xe8\
+A&L\xbc\x8fJ\xdb\x11x/\x00\x1eA\xc7\x13\xc0\
+<\x16of\xee\x8b63\xb7\xa0d\xfe\x1a\xfc\x9e:\
+\x02$+\x04\xc0\xcf\x86\x07IaZ\xde\xb0\xc7\xffO\
+n\x8f\xd3\x18\xa5*O\xdb~\x9fHQKJ\xa1\x22\
+\x09~l\xda\xaeW\x1f,\xdf:\xf8E\x01\xc0g_\
+{\x9b\xb4\xe9\xae\x9a\xf29tK\xcbp\xe8\x04\xe8\xfe\
+\x00\xa0\x9f\xda\xc4//\x05\x1d\xf7\xf4)\xc0\x97\x82\x8e\
+{\xfc\xf0\x140\x97\x85\x9b\x98s\xc0F\xfez$\xf9\
+\x06\x15\x01\xb0\x22\xa8\xdd\xe3\xff\x9a\x86fi\x14MD\
+\x0e\xbd\xba\xbam\xfc\x97\xce\x03\xdb\x8e\x9c\xbd\xf8\xaa\xb5\
+[0K\x82\xf0\xaaL\x87n\xef\xabo\x93.\x8fC\
+\xb7\xca\xa8C\xb7\xab\x5c\x0e\x9db\xe2S9\xe8\x5c\xdb\
+%\x13\xaf\x03}Q\xb2\x02\xbc\x00}\xe1F\xbe\xc7\xcf\
+\xc9?\x89\xf7\xf6ck\x17Z&\xfc\x9e\xb1\xda\x04P\
+\xf5\xf8\xbf\x81]\xd3\xd2\x99\xf5\x95\xa5\xd6\xf1\x1a\xe4'\
+\xd4\x1f\xe6\xe0\xc7\x87(\xaeIJ\x7fcm\xd2\x91\x09\
+/\xe7\xd0-\xae\x80C\x87\xaf\x93M\xbc\xe7bCm\
+\xc7C\x1f\x9dI\xdb\x11x\x05\xf4$6\xc77\x91\x0b\
+n\xf3\xc2]\xc0\x82\x00Hb$\x80s)\x01T=\
+\xfeop\xd3\xacj\x82\x162\xf13q\xac\xbc\xe7\xca\
+\xa4W\xdf&m\xa4\x08\x13\x9dX1\x87n\xb9)\x87\
+N\xcf\xc4\xab\x1d\xbaT\x03\x87.\x19\xc8\xbb$&\x8d\
+M\xf7^\xab\xa7\xed\xae\x1a\xda\x8e\xa0\xcf\xf3S\xb4]\
+\x80\x8eg\x00\xce\xf2N`3\x17$p\xab\xa1\x10\xe0\
+\x08\xff^H\xde\xc9\x9e\xe1\xe2\x18\x18U\x8f\xbf<\x05\
+\xfc5\x93@\xe3$\xb1\xaf ^\xf5\xe2\xd5\xc3\xed\xc7\
+\x14\x87n\xdfkj\x936R\x841\xcf\xa1\xdbi\xb6\
+C\xe7\xadr\xe8\x90\x04AkR\xd9D\x8f\xd2\x1a\x84\
+\xadg$\x07[\xd1\xf6\x8d\x8a\xb6\xfb\xebk\xfbl\x01\
+\xbc\xf7\x066\x13\x80\xc7\x1d\xbe\xb8\xcd\x1b\x87= \x81\
+\xd0\xea\xc5\xd2\xc4\xd0\xc0\xf04~\xdd\xee\xa3\x1cv\xd2\
+)&\xdd\xdf\x86\xedr\x9aC\x14\x07O]\xc0O\x0d\
+\xabH\x9bt\xc4\x86\x03\x5c\xbb_E\x9b\xb4N\xdb5\
+L\xfc\xd2\x88\xb2\x1d:?3\x1c\xba\xb8-G\xd8\x89\
+\xf3E|t\xbb\xe5\x8c\x85\xff\xf5C\xeb\xae\x19\x9d\x86\
+N\xbe\x80\xdf\xdf\xda5\x98\xcd\xf5O\xd4\x81\xae\xa7\xed\
+\x04\xfaL\x09t\x07\xaf\xf5\x5cp\x93'\x92M\x0c\x8c\
+\x5c\xb1v7\x0f\x01-\x95\x1e\x7f1:WLN\x91\
+\x8e\x81y\xb3\x04x\x9f\x1c\x92\xc6\x83\xec\xbc\xf8\xf4\xcc\
+\xf2\xb6I\xc7\x00\xd0v\xbe\xeb\xd8\x14\x10\xbf\xb0\xd4\x97\
+j\x93^Y\x11\x87n\xb5)\x87N?fGBa\
+\x173NM\xbbX|\x93\x05Eo\xc5\xd9<\xff\x0f\
+\xbe?\xb6h%\xb5\x1fd}\x02\x1b5\xf1h\xf7\x19\
+\xde\xeb9\xe8\xb3%\x13\x8f\xda\x8e\xa0\xe3\xc9\xdf\x02t\
+<\xfc\x11\x05{\xfb\x91\xe4x\x7f\x16\x86\xa72\xecG\
+\xb0Rz\xfc\xc3h8\xf4\x10\xaa\x0d|\xa7\x7f\x0c\xcc\
+\x9b#@52C\xe8\x904\xc51fH\x80\xf2\xb4\
+I\xaf\x05\x0d\x9f\x11\x94\xa04yx*[\x9a&z\
+\x842\xbf\x90-\xe5n\x93\xd64\xf1\xe68t+\x0d\
+3tZ1\xfb\x8e\x83gY\xf6\x85b>%\x15\xb7\
+\xb5!\x01R3N*\x99\xba\xbe\xa3p\xbea4\xce\
+\xf6\xc5\x13\xce\x90\x04\xb8?o\x9a\xd7:=\x13/@\
+\xc7\xf3\xfe\x14\xd0\x15\xe0q\x7f?\xbeg\x04V=\xbd\
+#E\x1d\xe0.\x84\xd4\xa1Tw\x19G\xd5A\x8b7\
+\xbdYV\xed\x00\x8a.\xe2\x9fz\x8cv\xf4\xe6cf\
+\xd7\xed2\xdb\xa1sZ\xb6Q\x0f|\x1c\x8f\x8e\xc2\xcf\
+\xf3u\x0f\xe1'icC\xc5\xabu\xe8\x8c\x9b\xf8\xf9\
+&b\xf6-\xfbNq\x02\xe0\xf0\xcc\x1c~\xda\xf8M\
+>*o\x9ao$\x1b\xa0\x1cn\xb5\x8a*\xa3\x8b\x1a\
+5\xef\x10<\xcc\xc1\xff\x11\xf7\x0b\xdc\xa34\xb5\x1dA\
+\xb7Cq]\xc7\xec=\xd7\xe9\x0a@XN\xef8d\
+b:\x1d\x93\xe7L]A\x03I\xfb\x1bK#_\xde\
+\xd8\xd4\x14y\xcb\xb4\x8e\x00\xe8\xa0\xe0\x80IG\xbfh\
+=\x13o\xcc\xa1\xf3\x5c\x95\xc2[\xbbp8\x948\x19\
+\xf4;\x8bv\x1b\xb1\xa7\xa0m\xdf\xd1\x07\xc0\xa7\xb8\xcf\
+\x0f\xa9\x82u\xd0k\xc5&\xf3\x8a0\xe1\x8a\x89/\x97\
+C\xb7T_\xdb\xdd9\xf0R\xccN\x0e\x1d\x9a\xff\xec\
+\x5c$\xc0\x15=\x02\xac\x8a\xdf\xc9??\x80\xbe\x9c\xda\
+\xb3\xb1\x8f\xcf\x03\xfe\xbfh\x90\xdd\xfcb|l\xbcs\
+0\xb3u\x8b\xe6\xdb\xb8\xa7\x12\xe8|3\xa7\xcbZx\
+\xactsG\x97\xe1v\xc7\xa8/\xd0\x8f\xaa\xab\x93\xc8\
+\xf4\x8b)\xa1_\x91\xf6\xd7x\x93\x83\xb3\xb4N\x14G\
+\xc7\xa4s\x97\xe1S\x97\xe2\x97qZ\xbc\xde\xa4C\x17\
+\x00\xde\xad\xd8\xf5\x83\x8c\xa7\xb3\x01\xc3H\x8bV\xd0M\
+\x08i\xd9\xc3r\x07\xbf^P\xbcyE\x98r:t\
+\x9eF\xb4\xddE\xca\xd0\xc91\xfb\xd13\x05D\x80k\
+:\x02\x1c9}Q\xec^J#s\xed@\x8d\x9b3\
+\xb1\xbf\xaf\xbb\xd5tl\xa6\xf9\xb7\x88\x14\xc69\x05s\
+\xc1\xa3\xde\xc4\xdfz\x8f\x9f\x9b\xd3\xc8\xa2}85\x84\
+zP\xc9\xdd\x9az1:I\xc7\xe4\xd5\x95\xea\x00U\
+\xde4\x01\xe4\xb99\xdf\x91\x89\x1a\x0c\xce\xe0\x09\xbe\x85\
+< \x86\x85\xc5\xef\xd7s\xe8\xc2\xe3\xd3\x99\xfb\xb2\xc4\
+\xd2\xedL\xa5\x07\x1f-\xa2NX\x0f\xea)\xc0\xdf>\
+x\xb27>\xd7\x07\xac\x85)\x87N]\x84\xf1]\x95\
+\xaa\x17\xb3{.\xdb\xcc\x9c\x03\x13\x99S 8d~\
+q<fw\x09\xdch2C7O\xca\xd0\x09/~\
+\xe3\x8e\xe3\x9c\x00\xe79\x01np\x02\xe0h\x5c\x5c\x06\
+\x86N\xf3\xbdA\xe0O\xa0\xa4\xcd8\x9a{\xcc\x0f\xa8\
+\x06\x071\xb1\xaf\x8d\xf3\x89!\xd3|n\xa1\xf4\x9f\xe4\
+\x96\xd7m\xe4\xb4t:\x1c\xcb\x8f\xbe\xf3,z\xcdH\
+\xea\xc6jG\x9a/\xc0\xaf\xf5\xba\xb7\xc8\x9b;8\xa1\
+>9(\xfcp\xa5>\xd6\xf3v\x0bvO\x99\x1f\xc1\
+\xa6\xf9D\x81\xac\xd11\xbe\xdfD\x97\xc2&\xbf\xf6X\
+'\xedj\x99KC\x91'\xd3\x0d\xc4._\xc7\xeeV\
+\x0e\xfc:\x01!i\xbc\x08\xb3X\x1d\xb3\x1bq\xe8<\
+W\xa7\xb0\xf9a[\x98o$v\x05mg\xb3\x17\xc5\
+\x19\xb4\x83\xd9yE\x01\xe8\xe6e\xe8D\xf8\x16\x10\xb2\
+M\x8f\x0082\x17\x09\x10\xbf]\xd9\xdc\xf1s\xc7~\
+\x1e\x14\xae\x0d\xa6\xd2\xf8`:\xf7h\x02y\xf2\xb3\xa8\
+\xbd\xdbU\xa3\xd5{\x22=\xb7?\x95\xd7\xc5\xb9\x00_\
+\xa9\xc0\xaf\xfaF\xc17\xe2\x08\xd6\xa3\x0f\xfb+}q\
+\xebf\x1d\xfa\xfa`\x02\x034\xe3&\x8e\x94\xc3\x90\x06\
+\x7f\xb7\x06\xad&S\xe7%\xedj\x19C[\x9a\xfa\xd3\
+h\x18\x5c\xf7\xc6\xf6\x9b\xe8z\x18\xbb~\xb5\x1c:\x7f\
+\x13\x0e\x9d{\xf0fN\x00\xd1\x166\x15\xc8\x07\x9f\xe3\
+\xf7\xe6\xdd\x86\x1c\xfd\xb1M\xb7=\xa0}%\xe3\xc0\xf7\
+\x90\xb5}\xae\x89\x0c\xdd\x8c\x05\xc2\x8b\x8fg\x99\xd9\xf9\
+\x0a\x01\x8a\x90\x00\xb78\x01\xb2\xce^\x12\xbb{\xe2h\
+\x8aZ/\x8a\xd9;Q\xfa\xb6\x0f\x91a$Y\x87\xf1\
+\x1a\xad\xde}\xe85\xadU{\x1d>\x96\x9a>\xab\x98\
+<\x03\xe8\x0d&\x83>&\xa66\xa5>\xc2\xfe\xf4\xe5\
+\xec\x09d\xb7\x9f\xda\xf7^Bf\xce\x99\xd6G[i\
+WKw2w\xad\xa9\xfb\x08o\xc4 \xf0\xa4\x8bq\
+XrYE\x18\xd9\xa1\xf3\x5c\x96\xa2\x10@\xea\x0b\xb4\
+v\x0ff\xd8\xb1\x0c\xd7\xc4\xc3\x97\xd6w\x18ds\x0c\
+\x01s\xf4\x8e+\x05\xddwC\xa9\xb6/H0\x1a\xbe\
+a\x12\xe8\xfc\xa5k|r\xbaB\x80;|\x5c.^\
+\xaf\x8f\xcd\xbc]D\xe4.\xd4T\xfb3I\x0b\xfa^\
+\x1di\xdf^w\x92\xaeD\x92\xb6R\xab\xf77\xd2n\
+\xa7\xda\xaa\x16\xb0J\xff\xf1\xb6\xfc\xa8f\x09\xbd/\xe6\
+\x08\xd1\x97\xf8\x95\x96\x83\xa1\xd4!dC\x1e\xedDZ\
+\x1bG\x90\xa5\xe8&mnhL[\xbd~\xa4\x1b\xd6\
+\x83\xf7\xe8\xfb\xc6\x18\xef\xaa\xd1p\xe8\xdc\x97n\xe6}\
+\x812\x01x:\xd5jz.\x9d\xc1\x83\xdb\xaeBp\
+\x90\xc2$\xb7p\xd3\x19:\xcf\xd2\xf0\xcd\x9e\xc27t\
+\x18e\x02\x14q\x02\xdcS\x08`\xad#@\x07Z\xbb\
+\xc5Q\xf6\x0d\xe9\xdf\x8d\xe9\xfe4%iB\x7f\xfbV\
+\xea\xfa\xfdD\xd5\xf1[\xf5\x8d\x85{\xe5\xac\x09\xc8-\
+d\x8d\xa5\x0e\xa1\xaed\x12\xfb\xd0\xc0\x82\x1e\xc4\xfaV\
+R\xcb\xf3WRs\x09\xfa\x13M\x9a\xb6\xeb\xd5\x8fO\
+(\xf7\x8f3\xe8\xaaQg\xe8\xf4\x8a0\xcb\xf4\x1bC\
+\xddi\xe3E\xcb\x9e\x96i\xd4\xbd\x8c\x9b/\xfc\xd1\x09\
+\xc3d\x8dl\xe2\x8de\xe8\xd4\xe1\x9b\x9a\x00\x19\xc7s\
+\xf8{t\x1a:)R\xca\xd85&M\x16\x9bR\xea\
+R\xd6Tn\xa4\xa9\xa71\xef\xbf\xe6+\xef\xf8}M\
+K\x81\x18.\xf91}\xb9\x06\xd4>\xd6\x94v\xf3Z\
+\x904\xa3\x96\xb2o\xa4m\x5c\x1f\x11\xeb?\xa2\x9b\xf2\
+=\xac\xa7\xfcx6\x97\xa0$\xb3\xbaj\x84C\xe7\xa2\
+\x22\x80C\xc0Z\x11\xa7\xaf\xa0%\x08\xe3\xeb\xb9\xb0\x0c\
+$pg\xd0#Z3C\xa7\x03\xddM\x01}\x8a\xcb\
+:>\x8f\xd7\xd69\x86\xed<xN\x8f\x00\x8b\xd7\xa6\
+\xf2\xf7h\xdc\xb2\xf3\x1c\xe9\xb43y\x98EM\x12\xb9\
+\x99\xe6\x03\xe9\xff\xa2\xcd\xbb\xfa_\x06\xf82Z\xc8j\
+I\xbd\x84_\x90\x86\xd7\x97N\xb9\xa8'\x99\xba\xf7\xa5\
+}{\xef\xcba%_\x02|b\xcc\xee\xaaA\x87\x0e\
+O!\x17\x04\x98\x1f\x9a\xc2\xb7\x8e\x0d\x9c\xe2u\x85\xc0\
+w\xa0H\x03\x97\xa3\xe9\xb8\xd9\xc5\xc6%L\xcf\xc4\x0b\
+\xd0\x85\xb6s\xd0\xf9\x10\xc6\xd2I\x9cx\x8a\x1a\x12\x00\
+OL\xc1s\x13h\x94\xcdI\xf2k\xfa\xd1\xfa\xdf@\
+J\xdaT\x936\xa9VSIU\x8d#\xef\xff\x1a\xc0\
+\x97\xd1B&\xda\xc7jQ\xc9XHmb\xbf\xbc\xb9\
+\xa1\xaa\xd4\x5cR\x87\xacC[<\xc0j\xb2G\x84\x0e\
+t\xf7\xb2\xbaj\xfc\x139\x01\xdcV'\xf3\x09dX\
+\xad\xb3*\x1d\x9a\xe4H\x9e\xb7%\x9d\xc13\xb6\xff$\
+\xd7Ln\x05\x00p\xd9\xc4O\x91A\xa7\xd9{B\xd0\
+_8GK\xc0\xd6\xf4\x13\xfc=\x869\x04<\xfa\xbe\
+E\xc7\x05&\x8e\xbb\xab\x22\x9d\xe8UY\x0d\xf6_\x12\
+p3:\x86\xd4\xadc\xb2T\xd3`\xbd\x9cW\xe0'\
+u\x0e\x98\xec\xce\x13AxR\x86\xa9\x0c\x9d\x88\xd9\xe7\
+\x04*\x04p\x0c\x8c\xe5\xd54e]\x9e\xbc\x93\xcc\xbe\
+5\x85b=\xc5\x1e\x87_:\x0f\x98\xcbK\xb8\xce\xa1\
+z&^\x0d\xba,\x09iYl\xdb\x81S\xb0\xd4\xc4\
++#\xd9\x1c\xfc\x1f\xc3\xf2\xb2\x98\x086\x9c<\xfd\x1f\
+\xdex\xc9\xf6-\xb2\x08\xc6\xa4\x92\xc6s\xf5\xb6\xa87\
+i\xdb}\xb8\xd5\xdc\xa5\xff\x89\xc7\xa3\xcc\x0bH2\xdd\
+U\xe3\x93\xc0\xec}\xd7\xb2q\x04<\x8eP\xb1\xe82\
+0\x8er\xf3\xb6\xe4\x9cu\xa5\x90\xab-\xfd{(\x8e\
+\xa5\xc5\xe7\xdb8\x85\x9b\x04\x1e\x05\xc3F\xe7\xa5\xebu\
+\x99L*\xda\x04JS\xb9\xfa\x90\xf9oh\xd6\xd1\xed\
+\xef~\x0c\xfc\x08\xf5!\x8d\xdd\xc0Y\xf3\xe3Z\xea\x12\
+\xcck\xecZ]5\xd3\xbdb\x19\xd6\xe0Em\x01<\
+\xfem\xb4W\xd1\x93r\x11\xc3\x09\xf0\x16R\x08\xd6\x8a\
+\xac\xc1\xe8\x81S<\xb3\xf1\xb5c\x9d\x82\xf9\xbc}5\
+\xf0\x13\x9d\xa2u\x03\x98\xa5\x14v8E\x14N\xe4S\
+\x0c\xa6\x1c\xc8\x8f\xe4\xf7\xd4~+\xd2\xb6\x7f1\x8b\xa1\
+7\x96U\x1c`\xd5n\xc0\xf8\xc5bw\xf2\x04\xd70\
+f\xeb\xbe\x86Mv\x8f\xe4b\xe3ZZM\xa3\xa2\xd2\
+j\xd2JW:\x83x\x04%]ZHs\x03\x1a\x12\
+P\x22s9\xa1\xc7\xe8\x19i\xe2=\xf0\xfc\x1d\x9c\xb9\
+/\xa4\xb4h3\xe7\x82T\xbb\xf0\xa2\x84\x96\x0d\x81/\
+\x8a6\x0d^\xd7I\xe7\x7fG\x02\xc8\xb3\x0a\xeb\x933\
+\x85\x9a;\x02C,<Ul\xc4\xac\xa0\xe7\xfa[\xd4\
+\x83\xfe\x00\xf0\xb2I#\xe5\x89Y\x93\xc8\xd9\x13\xe7\xed\
+6\x92\xc2\xcezt\xfd\x9fh\xcdF\x00'}\xdf\xa2\
+\x93g\xf7Q\x0e\xbby\xc1\xc6\xde\xe7\x0e6e\xa0\xf4\
+\xb1\x9ew\xb6\xc9\xaf=\xa34R\xd8V\xb4\x13\xaa\x83\
+\xaabW\xeb\xad\xcc\xde\xfdE|\x06\xf9\x00\xabo\xa5\
+C*F\xd2Mw\xa2\xe9X\x01\xd44\x81\xa0\xf8R\
+\x987G51\xab\x13\xe5 \xbe\x95\xf2\xea\xb5\xa5\x83\
+0\xbe&\x92u\x22\x12X\x933\xe7BD\xf2\xa5*\
+\xa5\x17\xfdM\xa4\xb0GS\xbc\xdf\x95\x96\x92\x1f\x89P\
+u\xa5\xd1u\xef\xd6\xfe\x97\xb4\x02\x1f\x12h\x8d\x88\x04\
+\xdd\xc8\x91\x1bO ;\x12 3h\x9d\x9f(\x0dN\
+\x92'f}\xad\x1a'\xf7\x9e\x94\xab\x10$hF\xeb\
+w_\xf2\x17\xc6\x13\xd0SI&\xd3\xdfF\x10\xb1\xba\
+J\xc3\x1b\xbe\xa55\xbf\x8e4\xbc\xb2\xea[S\xb4\xf9\
+\x8b:\x83\xf2\x01V\x9fSb\xe8\x17\x02\xa9'\xb5H\
+Y\x12 \x96\xa4\xbd}\xa4\xc1I\x02\x98\x7fj\x9c\xa4\
+YU\xe3,\x84\xfa\x14\xba\xb5\xa4%\xa1'\x01=\x90\
+\xa4\x1f\xfd\xad#=\xa7\xa94\x9f\xa7\xaej0S\x95\
+w\xe0\xbf\xba\xa5@\x90\xe03r\xae\x1a\x13\x11ZS\
+\x9d\xa1\x03\x91\xa2\x8d\xc6\xe0\xa4\xbaF&fU\xd6\xd8\
+\x01]\x87\xb4X8\x87\xbf\x10\xd0\xad\xc9\xc47\x97\x0a\
+V\x0d\xa5\x1c\x7f\xc5\x073\xbd\xfb1\x9b\x04\xefI \
+\xd5\x93\xb6\xa97\x22\xaf\xbe\x91\xaa\x9af\x0c\x18\x1d8\
+\x1ag#\xc9s\x02?\xa7\xf7\x10\xd1BC\xba\xb68\
+\xa8\xb9\xce+\x9d\xcf\xf3\xee\xc7\x18\x09,h~!\x0e\
+\xb1\xb4\xc09\xb78\xec\xf8\x03\xe5\xa4s\x0b<\x01\x0b\
+\xe7\xdf\x7fJ\xbf\xf1\xff\x1f\xe1\x89\x188\x13\x1f\x8fG\
+SNC\xe5\xaf\xad\xac9\x22U\xff=\xaa\xd1kj\
+J\xef\x81\xe3\xd5\xeb\x90|\xa4\x1c\xb0\x8dg,\xf3\xcf\
+!\xae_\xd9\xd4\xf5\xdf\xfd\xbc\x82\x9f\xfa?\xfcR\x09\
+\xa42HU\x90\xea \xff\x00\xa9\x01RS\x92\x1a\xf4\
+w|\xbc\x1a=\x1f\xa5R9\xae_\x99^+\xde\xe3\
+=I\xfeAR\x8d>\x87\xd9\xd7\x7f\xf7\xf3\x8a~\xbe\
+\xfa\xbeY%\x90\xca$U@\xaaJREz\x0c\xa5\
+\xd2K^_\xbcG\x95Wq\xedw?\x7f\xc2\xcf?\
+\xbfmRI\xc8\xbb\xbb\xf1\xee\xe7\xddO\x05~\xfe?\
+\xaeY\xd8\xf4\x1d\xfb\xf58\x00\x00\x00%tEXt\
+date:create\x002010\
+-02-10T01:44:25-\
+06:00\x0e\xe0\x0c\x1b\x00\x00\x00%tEX\
+tdate:modify\x00200\
+4-05-23T19:30:34\
+-05:00\x17\xb7\x8ah\x00\x00\x00\x00IE\
+ND\xaeB`\x82\
+\x00\x00+\xc0\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x00\x09pHYs\x00\x00\x1b\xaf\x00\x00\x1b\xaf\
+\x01^\x1a\x91\x1c\x00\x00\x00\x07tIME\x07\xd7\x0c\
+\x1b\x16\x028\x83\x98\xbev\x00\x00\x00\x06bKGD\
+\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00+MID\
+ATx\xda\xec}\x0b\x98\x1dGu\xe6\xa9\xee{\xef\
+\xbcG\xa3\xd1s4\x92,K\xb24zX\x96%[\
+\xd8\x18l$\x1b\x1c\xb2!` vx\x85\x04\xb0\x9c\
+\x00\xbb\xd9\x0d!l\xbe\xddM\x80\x04\x16\xf2e\x13v\
+\x93\xfd\x92\xdd\x95\x8d\xf1\x02\x1f\xb6\xc3\xe2\xe5e\xcb\x18\
+Y\x0f\x83\xf1\xfb%\x8d\xde\xb2,\xcfhF\xf3~\xdc\
+\xb9s_\xdd\xb5\xe7\xd4\xdc\xfa\xaa{\xce\xed\xee{\xaf\
+\xee\x05\x99\x9dc\x97\xba\xbb\xba\xfbvW\xfd\x7f\x9ds\
+\xeaTu\x0d\xcc\xc9\x9c\xcc\xc9\x9c\xcc\xc9\x9c\xcc\xc9\xff\
+\x97\x22\xa0B\x91\xe0\x97\xdb\x01\xacM\xb8\xfd\x1dL\x1b\
+aNj!\xdd\x98\x1e\xc4t\x04\xd3\x03\x00n5\x80\
+\x14\x95\x00\xdf\x8d`\xb7\xe2\xb6\x1e@\xa40\xad\xc4\xfd\
+S\x85}\x98\x93\x9aK#\x80\x5c\x8b\xe9\x5ca?\x8d\
+ib\xa6\xe1\xb9\xa2F\x04 \xc6\x89\xab1\x0d\xcf\xb4\
+t\x11\x03\xb0S\xcd\xcd\x96\xed\xbaVFJ\xcb\xb1m\
+\x01\xb1\x98\x88\x03@\x0c\xe6\xa4\x16\x92\xc7\x94S;y\
+i;\x8e\xac\x13\xc2u,\xcbmL&]<\xe7\xa0\
+f\x90\x0b\x00\xdc\x17p{;\xa6\xaa\x10@\x16\xae\xeb\
+\x9bi\xe1\xb1\xb6D\x22\xe6\xdav\x5c\xc6bq\xe98\
+q\xb7\xae.\x1ekl\x8c\xdb\xf1xB\x02\x08\x1b\xe6\
+\xd4@\xad\x84\xb0p\x80*\xd9\x96\xd0\xd9)\x1d)s\
+\xd0\xd3\x93\x96CC\x19\x91\xcf\xe7,\xc7\xc9\x8de\xb3\
+\xf9F\xa4H\x07]\x8e)\x0a\x8bX\x89$\xb1\xd2\x00\
+\xf1\xfa\x96\x96D^\xcaz\xb9x\xf1\xfclG\xc7m\
+\xd0\xd0\xf0\x0e)\xe5\x95\xe9T\xaa5;:\x9a\x00)\
+k_\x09\xbf\xa4kd\x85\xef#\xab\xfe^<\xdf\x8a\
+\xc7\xa1\xb1\xb55k77O\xd9\xabWw\xdb\x00\xfb\
+\x12\xbd\xbd\x0f\xe4\x7f\xf1\x8b\x81\xfa\xba\xbatzr2\
+[P\x16.\xddZ\xb1\x06\x90\x05\xf0/ \xf8\xf9\xe6\
+\xe6\x86x\x22\xd1\x94\xbb\xf6\xda\x0f\xda\x1d\x1d\x9f\xb1[\
+Z\x16\xbb\xb9\x1c\xb8SS\x90\xbdp\x01\xd2\xe7\xd0\x22\
+Iy\xd1\xe0\x8a\xda\x00^98\x95\x83n\xceW\xf9\
+\x9cUW\x07-\x9b6A|\xfe|\x8855\xa9c\
+7\x9d\x1e\xce\xf7\xf5\xfd]\xe2\xa7?\xfd\xdf\xb9d2\
+\x19K&\xa7\x97\x14H B\x1e\x13\x8b\x00\x9fT\x7f\
+\x5c655\xc4\xda\xdb\xe7\xbb7\xdd\xf47\xcd]]\
+\xef\xb3\x12\x09\xc8\xa7R\xe0LN\x82\x10\x02\xc4\xd0P\
+\xe5\xa0\xd7\xa6\xa5DK\xad\x00\xaf\xdd\xbb\x9bk\x84\x00\
+\xbb\xb1Q\x81oSjn\x86xs\xf3\x02g\xf9\xf2\
+/M\xc6\xe3\xdb\xe2\x0f?\xfcYGJ\xe8\xc3\xc6\xd9\
+\x01\x90\xa5{\x82H\x10\x0b\xb3\xfb\x83t\xbe\xa5\xa5N\
+\xc4b-\xf2\xado\xfdj\xeb\xce\x9d\x0a|'\x99\x84\
+\x98\x10\x9e\x1b$\xb8\x8eSS\x15/\xab\x0f0\xff\xcd\
+\x1a<[\xd6\x80\xd4BJ\xb0\x1a\x1a\x08x\x22\x00\x11\
+A\x11\x22\xbe`\x01B!\xdf7\xd4\xdf\x9fm:p\
+\xe0s\x88\x9d;89\xe9.\x02\xc8\xcb\x00\x7f \x16\
+f\xf7\xf1d<\xe58\x8d\xd6\xb6mw\xb4^y\xe5\
+\xfb\xe9!\x22\x1eW\x0ct\xf1\xe1n&\x03\xaeeA\
+l\xf5jX\xb8p!\xc4\x17/\x06\xc0\xe3*Hm\
+[tm\x9f_\xf3\x86\xe0&\x93J\xed\x03\x99\xe0T\
+\x8a\x9cB\x10\xd9\xac\xc2\x830\xaa_\xb5\xea\x03c\xe7\
+\xce=\xddt\xf6\xec\xfd\xf5\x08\xbe\xc7\x17\x90%\x11\x80\
+\xfa\xf4m\x08\xe5tSS\xa2\xae\xb5\xb5M\xae\x5c\xf9\
+\x19\xab\xbe\x1e\x1cT)b\xd92\x80\xae.\x10\xf8\xb0\
+&\xb4A\xa2\xb5\x15&{{!36\x06\xd3\xd9,\
+1\x10\xe6\xa4\xb6BX\xc4\x10\xe8\xe6\x8e\x0e\xa8\x9f7\
+\x0f\xb2##\x90A?L\x9e:\x05\x12\xc9\x11\xc7\xc6\
+(\xdb\xdb\xff,\xd6\xd3\xf3H\xb2\xa9)\x8d\xb8\xe5\xc6\
+\x02\x1c\xc2X\x10\xf3\x86\xe8\x9c\x94u\xa9\x85\x0b\xdf\xd3\
+\xd2\xd6\xb6\x84\x98\x96ok\x03\x81\xaa\x87\xfa\xfau\xd8\
+\xeaGN\x9e\x84\xd1'\x9f\x04\xe9\xba0'\xbf|\x19\
+C\xc0\x9b\xb1A.\xbd\xf6Z\xc8\x0c\x0f\xc3\x94m+\
+s\x1cC\xcd`\xcf\x9b\xd71\xd4\xde\xfe\xdb\xed\x03\x03\
+\xf7\x01@f\xed\x8c\x19\x00Q\x8a\x06\x18\xa3\xd6\xdf\xd8\
+h\xa3\x9dO\xe4[[o&\x80S\xd8\xba\x01S\x0c\
+\x1f\xd4\xb0f\x0d\xf4=\xfb,$\xcf\x9f\x879\xf9\xd5\
+\xcadO\x0f\xd8h\x0e\x16l\xd8\x00\xe3/\xbf\x0c\xd3\
+\xa8\xa5\xed\xe9i@\xbf\x0d\x9c\xfa\xfa\x9b\x11\xc3\xef\x10\
+\x96c\xa9\x94\xd5\x06\xe0Fj\x80/\x00\x88\xdd\x98\xb2\
+\xaek\xa3mI\xb8 \xb7`?\x1fr\xe4\xf8\x0d\x0d\
+);?\x8e\xc0\xd3\x83\xe7\xe4\xd2\x90\xf1\xd3\xa7\xa1e\
+\xc5\x0a\xb2\xfd0\xf6\xfc\xf3\x90Es\x9cH\xa7\xc1\x11\
+\xe2*\x07 AXN\x03\x88\xff\x8a\x89\x94|(\x01\
+\xfe\x92\xbc\x7fL\xf5\x96e\xb9R\xc6\x9ct\xa6u\xa2\
+\xfb\x08@C\xa3\xf2:\x1b\xd7\xaf\x87\xe1\xe3\xc7\x01\xe6\
+\xd4\xfe%#.b1~\xe6\x0c$\xd0\x1f8\xbfw\
+\xafr\x0e\x85\xe3\xc0\xc2\xa6\xa66\x89\x18\x12\x96\x08\xb4\
+ l?\x1fB\x00\xc3(\x00\xd1h\xdb\x16\xe4\xf3\xb1\
+\xa9\xfe\xbe\xba\xb1\xbe~\xd02\xff\xfd\xef\x07'\x9f\x87\
+9\xb9\xb4\x84\x9c\xf0f\xd4\x02\xd3\x14\x9f)\x98\xe6\xfa\
+e\xcb\xea\x00\x09\x80\xe6\xc0\x22L\x17\x95\xda\x0d\x14\x98\
+\xf2R\x0a\x89\xbb\xd3\x93I\xc50-\x0e\xc0\x9c\xd3w\
+\x09J\x1eU>\x8e\xc7\x80@\x7f@\xcbT\x12\xb1S\
+a\x03)D9\x91\xc0v\x001N7Ii\xe5\xd2\
+i\x7f\x1f4\x93\x99\xeb\xea]\x82\x22\x1d\x07t\x840\
+W\xc8\xcb\x12v3\xa6\x5c\x10\xa6e\x85\x82]Pw\
+\x88<\xaa{9\xebAs\xf0_rb\x1a\xa5\x10\xa0\
+\xf1!\xec\xdcDBp\xbc\xa2}\x00\x05>%\xaf\xfa\
+\x879\xf5\x7f\xe9J\x11\x5c\x1c\xcc#\x0c\x01\x13a:\
+\xbf\x14\x02\x9c\xc24\x8d\xa9\xb1@\x00\x1f\xf8\x05\x02\xcc\
+Q\xe0R\x13\xd30\xa5\xd1\x00j\xab|\x00L)\xc2\
+\xb6\x14\x02\xf4`ZP0\x01\x16\xfe/\x01j\xaa\x01\
+\x1cL\x8f\x9f=\x0b\xcf\xbe\xf6\x1aLb\x00\xe3\xf2%\
+K\xe0\xb77n\x84\xc5\xe8\xcc\xfc:I?\xda\xe3\x1f\
+vw\xc3\x99\x81\x01hE;\xbd\x03\xfb\xec7\xad\x5c\
+\x09vU\x09\xc0:\xfa\xb4o\xb9\x1a\xdbRM\xc0<\
+LycW\x8cTY\x03\xd03\xee{\xe9%\xe8\xc5\
+.LKK\x0b,\xc6q\x85!$\xc1?\xfd\xecg\
+\xf0\xc1\xed\xdba\x0d\xe6\xfd:\xc8q,\xdf\xfd/\xbc\
+\x00\xf5\x18F_\x82\x04w\x1c\x07\x0ea\xf0\xe6,\xc6\
+\xf0?\xbce\x0b\xc4\xaa\xe4\x03\x88\x82\x060\xe0\xab\x13\
+`\x170\x1d.\x95\x00Y\x00\xea\x01\x08\x04\xdab\xa3\
+SU\xd2\x009L\xf7\x1f;\x06yl\xe9\xef|\xe7\
+;\xe1\x8a+\xae\x80:\xdc\xef\xef\xef\x87\x17\xb0\xb2\x1e\
+:z\x14nCM\xb0\x1a[\xcb\x1bYNNN\xc2\
+\x0fO\x9c\x80-W]\x05\xdb\xb6m\x83\xc5\x18IM\
+\xa368\x81y\xcfc\xd4\xee~,\xe7\x1d8\xb8\x16\
+\x93\xf2b\x09\xa01\xf2m\x09C\x0b\xb1$L\xa1\x0c\
+\x02@\xbc\xe0<\x143\x01\xb2\x0a\xe0\x7f\x17\x072\x00\
+#\x8b\xef\xba\xf9f\xb8\x0a+\xa7\x09\xc7\xb4\x85\x10\x8a\
+\x08\xabq\xa0i\xdf\xbe}\xf0#\x8cm\xff\xd6\xda\xb5\
+\xb0\x0aG\xbf\xde\x88r\x1a\xe3\xf2\x8f\xbc\xfa*\x5c\xbb\
+c\x07\xec\xda\xb5\x0b\x96\xe1\xc0M,\x16#\xb0T9\
+\x97/_\x0e\x8f=\xf6\x18|\x17\x07\xd5\xde\xbbf\xcd\
+\xc5\x91\x80\x1c\xbe\xe2C\xc9\xc2\xc5\x94+wF\x90\xf0\
+ld\x15\x09\x90G\x90\x1fB{O\xc3\xc8\xb7\x16\xc0\
+o4\xad\x5ci\x81\xcb.\xbb\x0cn\xbd\xf5VUY\
+{_y\x05~\x03\x8fW&\x12\xf0F\x923h\xca\
+~\xf2\xfa\xeb\xb0\xfd\x9ak\x14\xf8\x1d8tk\xdb\xb6\
+1\xb3\x18\xb6\xdd\x8ef\x8e\xcaH$\xf8>\xfaA\xef\
+Z\xb9\x92HP\xb9\x0f D\xb1)v\xa2\x82I\xa1\
+\xc6{\x94U$\x00\x81\xff#\x1cD\xb2\x10\xfc]o\
+{\x1blA\xfbg\xc07B\x15E\xad\xe5\x96[n\
+Q\xfb\x8f\x1d>\x0c\xb7tv\xc2\x0a\xac\xac7\x82\x9c\
+\xcdd`?\x9a\xb2m\x08\xf0\xdb\xb0\x9cK\x97.5\
+\xe0\x1bQZo\xeb\xd6\xad@\xb2\x7f\xff~\xf8qo\
+/\xfc&\x96\xdbv\xdd\xaa\xf5\x02\x1c\xde\x9b\x8b&@\
+\xbd\x0e\xf9V\xd1\x04\x10\xf8{\xd1\x03\x16\xc8\xfc]7\
+\xdd\x04\x9b7o\xf6\x83\xcfI\xa0Z\xcd\xce\x9d;\xd5\
+\xfe~\xf4\xa0w\xa2\xfd\xec\xb4,\xb8\x94\xe5\x5c.\x07\
+\x87p\xc8|\xeb\xd5W\xc3\x8d7\xdeHN\x9f\x01\x9f\
+\x0b\xd5\x81\x22\x81\x85\xe5:x\xf0 \xec\xc5\x89\x1d\xef\
+X\xb4\xa8l\x12\x18\x87\x9d\x9b\x00A\x98\x96J\x80U\
+\x05'P1G\xcab&\xa0\x22\xf0\x1fC\x8f\xd7B\
+\xf0oz\xeb[a\xe3\xc6\x8d\x0c\xfc0\x12PE\xd2\
+\xfe!t\x98n\xc4YH\xcb\x84\x80KQ^w\x1c\
+\xf8\xf9\xf8\xb82k7\xdcp\x03\x03?\x8c\x04\xa4\x0d\
+\x89\x04\x87\x0e\x1d\x82}\xa3\xa3\xb0\x0b\xeb\xaa,\x12\xe8\
+k\x85\xf0;\x82\x88a\xbe\xa0\xcdW\x95J\x80\x13\x98\
+\x5c\xea>\x04\x98\x80r(@*\xe9 MR@\xe0\
+\xa8R\xba\xba\xba\x18\xf8\xa5\x90\xe0\xadH\x1c\xaa\xa0'\
+q(\xfaz\xec\x1e.\xbd\xc4\xc6#\xceK\x09O%\
+\x93p\xe5\x95W\xc2\xf5\xd7_\xcf\xc1\x8f&\x01iE\
+\xe5\x08?\x89\xb3\xac\x0e\xa5Rpc}=\x01[\x96\
+\x06\x90|\x22\xaa(`\x09\xe1\x04\xe0'\x84S\x85@\
+\xd0kX\x08\x0b\xc1\xbf\xfeMoR\xe07`_\xb8\
+\x5c!\xe0\xa9\xfbD\x04\xa2J}\x06\xbbP;\xa8O\
+\xed8\x97\x06\xf8\x98\x9eE\xbb\xbf\x09\x01|\x13\x96\x13\
+\xdf\x95\xde\x99@!@\xcb\x22\xc1\xa6M\x9b\xd4\xbdO\
+?\xfd4\xf4\xe0v96\x9ep\xe1\xb8H\xbf/g\
+\x11\x96e;\x81\xf9\x5cN;\x0f\x17\xa5\x01\x12\xe8\xc1\
+_\x8f\xdd\x9du\xeb\xd6U\x00\xbea6\x01\xbf\x08m\
+\xe3u\xd7]\xa7*\xe89\xecF^\x83N\xe1\xc2_\
+\xf1\xdc\x84\x0b\xf8./\x22\x117\xa0Y\xbb\xf6\xdak\
+\xe9\x1d\xbd\xe0WD\x82\x0d\x1b6\xa8\xf2\x8e\xe0\xb8\xbe\
+\xdb\xdd]\x1e\x01x\xdcF\xe41\xc5\xcb!\x00q\xae\
+\x0e\x13\xeb\x05T\x10\x08\xba\x12\x9d\xa1y\xed\xedP_\
+__\x09\xf8\x8c\x044\xfd|\xc7\x8e\x1dj\xffE$\
+\xc1V\x22A6\x0b\xbf\x0a\x19\xc0g\xbf\x8c\xdb\xf5]\
+]\xd4\xa5S\xef\xa6A\xd7[-\xe5\x92`=\xce\xbc\
+\x9aD2\x0d`\x0f\xa8$\xd1D\xe3f@\xe5N\x95\
+\xab\x01\x94\x13X\x85^@\x13\x82Ca^\x0a\x7f\xba\
+\xae[!\xf8&O\x93\x80*\x9cZ\xdaa\x9c\x0a\xb5\
+9\x91\x80\x05\xe94\xfc2e\x10\x9fy\x04\x09\xb0~\
+\xedZ\xe5\xc5/X\xb0\x80\xde\x87\xbd\xb3!\x82\xda/\
+\xd9\xe4\xb5bW\xd9\xe9\xef\xa7\xfa.+\x0e`\x86\x83\
+\x0d\x01\xdcrM@KaDPV!\x10\xd4\x8f\x11\
+\xbd\xc5\xd8B\xe2\xf18\x85@\x89\x04e\x82\xcfI@\
+\x15D$\xb8\x1a\xb5\x0b\xed\x1f\xc3 \xca\x06\x1a\xeeD\
+\xc7\xe9\x97!C\xa8\xcd\x8ec\xbab\xf5j\xe5\xbd\xb7\
+\xb7\xb73\xa0=Z\x80\x9d\x8b\x02_iK\xbc\xbe\x1f\
+c\x03\xb2\x02'\xd0l\x0d\x86-\xe5\x10 W\xe86\
+\x08)/:\x104\x85v\xec\xd4w\xbf\x0b]\x1f\xf8\
+\x00\x15L\x93\xa0b\xf0It\xa5R\xab\xa3.\x17U\
+\xdaI\xfc8u\x1d\xe6\xcfC\xa7\xa9\x962\x82~\xcc\
+)\x0ca\xafY\xb5Jy\xed\xf3\xe9\xe3\x18!\x02[\
+~\xb4&\xe0\xe0St\xf0\xd8\xfd\xf7\xc3TooE\
+\xdd@\x1ff\x84!>0W\xceX@\x0a\x93M\xa9\
+J\x81\xa0\x81\xe7\x9e\x03\x81\x85[\x7f\xc7\x1d\x8c\x04\x0c\
+\xfc2I@\xad\x8f\xba^d\x1a\xce`\xe8u5\xe6\
+\xb5NL@-d\x0c#w\xaf\xb6\xb5\xc1jtl\
+)\x96\xd1\x86\xfb\x1e\xf0\xc3\x81\xe7\xfb\x81\xe0\x9fx\xf0\
+A\x18x\xe6\x99\xca\x22\x81\xc5\xc7\x02 U\xae\x06\x88\
+\x11\xf8\xbc\x1bH\xc0U\xe6-?\xf5\x94Rk\xeb\x7f\
+\xf7w\x19\x09\xca\x04\x9fU0\xb5B\xdd}:\x87\xa1\
+\xe6\xcb\xf0|\x0b\x06d\xaa)\xe3\xe8\xc7\x9cC\xb3\xb3\
+j\xc5\x0a\xea\xceR,?\x08|\xb6\x0d!\x01\x07\xff\
+\x81\x07\xa0\xff\x17\xbf\xa8|>\x007\x01\x16\xe6\x95\xae\
+\x01\x9e\xf38\x81v\xb1\xd0\xe2E\xcc\x07\xe8\xc3\x82\xd1\
+\x8bv}\xf0\x83^\x12T\x02>\xabx\x02\x84\xbaO\
+T\x99\xbdX\x91\x9dx\xae\x09\xc7\xe1\xab!I\xfc\xed\
+^\x8c\xe7\xaf\xec\xec\xa4\xee,9h\xc1-\xdd/\x91\
+$ \xcd\xa5\xc1?\x8ej\xbf\x0f\x83@\x15\x89\x94^\
+\xf5\xcf\xc6\x03\x14\xb6\xa5j\x80D\x81In\x0df\x04\
+\x11\xbb\xa9\xf0\x1b>\xf4!M\x02\xea!P^\xe5~\
+\x81\xf1\x9c\x09 U\xa9\xfdX\xa1\x1d\xd4\xa5\x1a\x1d)\
+\x7fU$\xe9\x05\xbf\x0d\xfa\x11\xf8\xe58H\xb3v\xed\
+Z\x0d>{~\x08\xe0\x81\xe6\x80\xde\x99F?\x95\xcd\
+\xff\xcew\xa0\xff\xe7?\xbf\xb8\x09!\xbc\x17\xa00\x14\
+\x05Le9\x04\xc8b\xb2\x00D-f\x04\x11\xcb\xe9\
+\x857~\xf8\xc3\x8a\x04\xd3\xd3\xd3D\x02\x06ri\xe0\
+s\x12\xacY\xb3F\xed_@\x22,\x01\x09\x8d#\xc3\
+\x15}\xef=5\xbf\x1d\x06/[\x05\x9d\x18\x8a^\x85\
+N_sss1\x13\xa4\xf3J6\x01$\x1a|\xea\
+\x1d\x1d\xfb\xf6\xb7\xe1|(\xf8\x95G\x02\x89\x12n\x01\
+\xd3L9\x1f\x86\xc8|^\xb8\xb6-\xcc\x8fVwN\
+\xa0b;\x91\xe0#\x1fQ\x11\xc2T*E$\xa8\x10\
+|N\x82\xcb/\xbf\x5c\xed\x0f\xc6l\xd5\x04\xea\x87\x06\
+C\x14\x00\xe7\xc7t\xfbB\x18^\xb3\x16:\x16/\xa6\
+\xf9\x09\x14\xcb\xa0\xdfc\xcf/\xc7\x04\xe8\xfb\xb4\xcdO\
+$\x12p\xf4[\xdf\x82>\x9c\x02w\xb1\x22\x03\x06\x83\
+0W\x10\x96\xa2\xfc\x09!zF\x10'\x80\x84\xea\x88\
+*8\xfe\xde\xc6\x8f~\x94H@\x9a\x80\xe6\xb2W\x02\
+>S\x85\x04\x18\x01G\x95=\x1c\x8bC;H\xa8\x1f\
+\x1c(iE\xac\xd4\xc2E0r\xc5zX\x82\x91\xb8\
+\x15+VD\xb5\xfc\xb2m>E\xfa\x08\xfc\xeeo~\
+\x13\xfa\x9ex\x02\xb8T\xee\x03`\x81\xfd\xf8T2\x1f\
+\x80 p0\x05G\x02\xab'\xe7\x91\x04T9\x9b~\
+\xff\xf7iK\x9a@\xf7\x0e\xe8\xf8\xa2\xe2\x04\x04\x1c\x01\
+H$\x18\xb5I\x13\x1c\x81\xc4@\x1f\x84Iz\xe1\x12\
+\x98\xdc\xb0\x19\x96,\x5cH\x93R\xf4T\xb5\xa0\xf7)\
+\xcb\xfb\xa7\xf7\xa0\xdfS\xe0\xdfw\x1f\x9c/\x1b\xfc\xe8\
+H\xa0\xe0>\x80\xc20_\x0e\x01\xd2\xd4\x0d,t!\
+X$PJ\x95\xaa)T\x11\xf4\x9b\x9b\xff\xe0\x0f\xe8\
+\xd0k\x0e*\xf6\x0bH4\x09h\xee\x1d\xb5\xbcQ4\
+\x07\xf3\x0eK\x88\xf7\x9f/\xba\x1cYfI\x07$7\
+]\x05\x8b\x10|\x9c\xc5C-\x95\xa9\xf6\x88\xae_\x10\
+)\xe8\xf9\x06\xfco|\x03zq\xdc\xbf\xaa\xe2q\x02\
+gafY\x1a\xd3r4\x805k,\x80\xb6\xc2\xb6\
+k\xf6u\xd0y\xaa\x10\x22\xc1\xc7>\x06$SSS\
+D\x82\xca\x9dB#d^hN\x81j\x81\xe3Wm\
+\x87\x16*x\x7f\x0fx%\xbbd\x19\xa4\xf0\xdc\xc2\xf6\
+v\x1a\xce\xa5{\x82Z=\x039*\x8f\xbc|\x02\x9f\
+\x9c\xbe#\xf7\xde\x0b\xbd\x07\x0f\xd6\xe4\x13qEjK\
+\x14\x9d\x14J\x98\xc6\xca]&\xae\x90\xfc\x5c\x92\xb2f\
+\x9f\x87Q\xc5\xd0o_\xf9\x89O\x00I2\x99\xac\x0a\
+\x09\x08\xf8\x86\xc2\x9c|\xda\x9f\xd8\xbe\x03\x1a\x9f\x93\x10\
+\xeb{\x1dHr\x1d\xcb!\xbd\xed:hok\xa31\
+\x06r\xd0\x02\xc2\xb5\xac\xe5G\x9a\x00z\x1ei!\xfa\
+\xcd\xc3\xf7\xdcS\x0b\xf0\x8d\x0f\x00\x82\x22\xae\xcc\x04@\
+\xb9>@ca\xea\xf6\xec\xf9\x00\xc2\x125\xd3\x00F\
+\x13`\x05I$\xc1\x9d\xbb\xa9\xd5h\x12T%XD\
+ \xe8\xf1\xfa\xe4\x8e\x1b\xc0z\x86L\x0f\x96u\xc7[\
+\xa0\xad\xb5\x95\xc2\xca\x1a\xfc0{\x1f@\x04v\x1d\xa9\
+}rF\x0b\xe0\xdf\x0d\xbd\x07\x0e\x18\xac\xaa\xaf\x02H\
+e\xb38\x80\xd6\xe2\x84\xa9[\xb2\x09\xf0;\x10&\xc6\
+,,pi\xaf\x16\x04\x10f\xd3\x87$\xa0\xedf$\
+\x81\xd6\x04\xd8;\xa8d\xf8\x98\x81Ej\x98\x06\x91\x08\
+\x9c\xa9\xeb\xdf\xa6\xce\xb5\x22H\x14\xd7\xa7s\xfa\xfa\x08\
+\x89\xd4\x02\xa4\xf6\x09|\xd2<G\xee\xd9\x03\xe7\x0f\xec\
+W\x95)M\xc0\xbe\xaa\x22u/@Xlv\xb7\xd0\
+f\xbdd\x02\x18\xb5a\xf9\xd8dY\x98I\x0c\xab\xbe\
+({\xe3!A\xff\x13H\x02\xcc\xdc\xf4\x89\xbb\xa8p\
+\x86\x04\x95;\x85\xb4\xafI@\x80\xeb~=\xc5\x0d\xc8\
+9+e\xbc\xbe\xa4p/\x05w\x14\xf8\xd8\xf2\xbb\x11\
+\xfc\xbe\x83\x08\xbeg)\xdc*s\xc0\x94\x8d~\xdd\xe2\
+\x91@(\xe0\x99\xa8 \x0e\xa0Dz\x08 \xabl\x02\
+\x84N\x9e\x07\x8aBm\xf5\x1f:\x00\x82\x82Ew\xfe\
+!\x90LNN\x96J\x82\xa8<\x02\x9cH\xa0[k\
+\x98\xe9\x882\x03\xcc\xe1#B5b\xcb\xef\xfe\xfa\xff\
+\x82~l\xf9\xde\x89\x15R\xfa\x9d,\xb7z\x0c\xf08\
+\x81\x5c\xb1\xcar|\x00\x07\x93\xadv\x1c\xcb7\xb0\xa0\
+|\x00\xb7j\x04\x10^\x06H\x93g\x9a\x0a\x91\x80*\
+\x10\x83E\xbb?\x09\x9a\x04\xb9\x5c\xae\x1c\xf0\xc3\xc0\x8a\
+\xea\xda\xb2\xfc \x22h\x9bO\xa4\x22\xf0\x8f\xde\xf3?\
+\x14\xf8$B\xdb}\x93\xfcj\xa0\x0a\xda`\xe9\x8e\x1d\
+Eq\x91\x88\xa1\x82\xb2\x1c\x02d0\xd5S\xf9\x8a\xf6\
+\x02p{\x91\xc1 1{G\xf2}\x01&\x0d<\xb1\
+_\x9d\xd0$\x98\x98\x98 MPi\xb0(\x1a\x5c\x1e\
+O\x08#\x85\x0f\xfc\x06\x02\xff\xee\x7f\x86\x0b\x07\x1f\x07\
+\x0d\xbc\xb6\xfd\xc2\x0f\xbe9W!\x09h\x95\xd0%\xf8\
+\xe9\xd9\xe2\xed\xd8\xb5]\xb9\x12\x06\xf0c\xd3\xe1\xeen\
+6%\x8c\x12a\xdaP\x0a\x01\x86\x0b\x01\x03\xcbt!\
+@\x9a\x82V\xcd\x04\x08\x13k\xe6\xea\xdf\xf7\xd0\x99\xfd\
+\xc1'\x1e\x87c\xb8\xd3u\xe7\xa7\xc8h\xc3\xf8\xf8\xb8\
+&A\xa5&!\x8a\x08\xa1\xa3z\xfa\xbc\xd6$4'\
+\x81\x02G\xc7\xef\xfe'\x188\xb8\x8f\xa9}U\x8c`\
+\x0dP\xb2-\xa0%b\x17\xe1,\xa8%\x08z\x1b\x8e\
+Nf\xb0\x1e\xce>\xfc0\x9cz\xe8!\x98\xec9\x07\
+R\xba\x8c\x00\xda\x09 l#\x090N\xea\xc4L\x0a\
+\xf5\x93\xd6\xb6*\x0e\x07\xfb\xb4\xbd\xd0\x15\xe2qZ\xa5\
+\x87\x04\xbeD\xa25\xc1>\xaa)$\xc1\xbf\x06iH\
+p1NaI$\x08\x13r\xf84\xf8'\xef\xfe\xef\
+\x04\xbeQf\xd2\xef\xe4rm0\x8b nq\xe7\xb0\
+\x19\xa3\x92\xed\x1b7\xaa\xd5@[q\x90\xcb\xc11\x93\
+\xd7\xb1K\xf9\xf4W\xbe\x02=8o\xd0\xc9f\x89\x94\
+\xa8\x05:qk\xb1U\xdf\x09\xcbx\xa9\xeb\x03Lb\
+ZU\x98\x14j\x151\x01\x12.2\x10\xa4\xc0\xd7\xd4\
+d\xc0\x1b\x8f\xc5\xf2\x94@\x18]6\x84$8\x8e\x07\
+\xeb\xee\xfc7\x80B$ \x9f\xa0\x1a$\x88R\xf3\xec\
+\x1c\x82O\xb1\x03\x8aW \xf8\xff\x88\xe0\xff\xd4\x00m\
+\xd4\xbf\x12\x03\xbe\x1fx\x90\x5c\x13$0p\xd4\x8a\xc3\
+\xcf\xf3\xb0\x85/\xe8\xea\x82:$X\xb2\xb7\x17z\x10\
+\xf4\xd7\xbf\xf8E\xe8\x7f\xea)\x02\x9d\xd7+5P\xab\
+\xe8\xac`h lK!\xc0\x94\xf1\xcd\x84\x89\x03\x98\
+@P\x85\x91@\xfd\xa3\xfe\x0c\xc9}\x00\xf3pn&\
+4\x11\x86\x0eaE\xe3\xce\x15w\xfe\xb1\x02C\x93\x00\
+\xa5\x9af\x80\xf2B[>\xc5\x13\x9aT\xcb\xff\x07\x18\
+:\xf0\x98&v \xe0\x9a\x1c\xca\xbcz\xce7.Z\
+\x0c\xcd8\xef\xa0y\xf9Je\xcb\xeb\x90T\xf9\xa9\x14\
+\x0c\xe0\xea)\xaf\xec\xd9\x03=\x07\x0f\xd2\xc2\xd0%M\
+'wY$PW\xa3\xc16\xda\x09,\xd4?\x9b\x10\
+b\x19\x13P\xbe\xcd\xe7N\xa0\x06\xd7\xa8\x1a\xa6\x1d\xfc\
+d\x11\x052\x00\x91\xe01*\x1e\x92\xe0\xdf\x01\xc9\xd8\
+\xd8\x98!\x01\x97\xaa:\x85\xd4\x85\xd4\xe0\x9f\xbe\xe7\x1f\
+`\xf8\xe0O\xfc:7\xc0\xd6+\xf0\xd1_h\xec\xe8\
+\x84\xc6\xce\x15\xd0\xd4\xb9\x12\x9ah\xa0\xaa\xa1\x11\x01\x9f\
+\x82!\x5c\x0b\xe1\xd87\xef\x83\x0b\xcf=\x0fCG\xba\
+\xc1\xc9\xe5\xcbjb\x82\xf0\xb1<\x9a\xca\xd3\x962\xa5\
+\xce\x09\x5c\xab\xb16A\x04\x1f\x8a\x13'O\xc0\xe4D\
+\x12\x12-\xad\xf4gJ\xe8\xa1\xd1\xcc\xd4\xff0\x80\xf5\
+\x83\xf4\x89Y*\xdf\x00\x8e\xfb\x9a\xce&\x7f\x04Ip\
+\x0a$\xac\xbd\xf3O@\x93 \x9b\xcdF\x9b\x82\xca\xcd\
+\x80i\xf9MM\x08\xfe\x7f\xc3\x96\xff\xa8GMj\xa0\
+\xb5\xc3\xd6\x04\x89\xb6v\x88\xcf\x9b\x0f\x89\xf6\x85\xd0\xb0\
+t\x194,\xe9P\xc5N\x9e{\x0dF\xbb_\x863\
+\xdf{\x10F\x8f\x1d\x85\xb1\xd3\xa7\x11pG\xdd\xebJ\
+]\xd6\xb2\xc2\xc6\x84\x05%\x16\x08\xb24\xb6\xa5\xc7\x01\
+\x8c\xc8Y\x04\x98\x1e\x1c\x84\xd1\xd7z\xe8A\x8a\xcd\x89\
+\xd6\x19\x22\xc4\x1a\x1aT\x8a75\xd19?\xf8b\x96\
+j\xd4\xa0[\xb3T=\x8b\x0e\xfa#R\x8a\xdc\xd2\x1f\
+\xe4\x1e=\xf4\x138\x8d\x99\xab?\xf1'\xaa\x1b6<\
+<\x5c\xc9\xcc\xa2H\xb3\xa0\xbd}\x0d\xfe\xab\xf7|\x0d\
+F\x0e>\x0a\x16\x16&\x86\xf3\x06c\xd8 b\x04\xf4\
+\xbcv\x88\xb5\xb6A\xbc\x0d\xc3\xcdu\xf5\x90\x1d\x1b\x81\
+\x14\x0e?\xa7\xce\xbf\x0eC\xcf<\x09\x13gN\xc1\xf8\
+\xa9\x93\x90\x9bN\x83\x06\xdbU\xb6\x96\x90*\xecke\
+\x8b\xfb\xaez\x8f\x92\x09\xc0\xc6\x02X\x07\xa34\x02\x98\
+\x86f\x88`\x9c@\x17U\xad6\x039T]V\x22\
+A\xeb\xd4\x12!\xd4\x90q\x1cU\xa3M3]\xeb\xeb\
+ \x86\xf9v]\x0cbxM\xac.A\x8e\x8ai\xc9\
+\x8a\x04\x5c\xbd\xebd\xc07&\x82i\x05 \x12<\x0a\
+\xa7\x9d<t|\xe4\xd3d\x07\xd9\xb8A%\x91B.\
+fR\xc7\xe0\xc1\xbd`\xe5s\xb0\xf4\xd6\xf7@\xbc\xa5\
+\x0d\xa4\xeb@z\xf0\x02\xa4\x07\xfaa\xe2\xe8K\x0a\xf0\
+\xe9\xf3\xbd\x90\xea\xeb\x85\x5c*\x05\xb2\x00\xb2\xda\x16\x12\
+\x91Y\x17\x1f\xd4\xbe.\x93\xc7G\xf08\xcc\xa5p\x80\
+\xea\xd64>\xe3z\xa8T\xee\x22Q\xf5\x1a\x13\x1f\x01\
+\x04=\x84\xcdDq\xd2i\x95\xb4\xa4\xf1%l\x04<\
+^\x8f\xa0c\x8a\xd7\xd5\x11\x190\x0f5FC\x03n\
+\x91\x144W\x8f\x92%\x0al\x93\xba\x99c\x1em\x0a\
+6\xadP(\xa3%x\x22y\xf5\xf4)\x189\xfc\x0a\
+,\x5cd>\xcd\x8eP\xefl\x1be\x02\xc8\xbc\x9c\xc5\
+\xcf\xd0\xd2\xdd\xaf\x80\xf5\xdc\x01\xc8\x10\xe8\x17\xfa 3\
+<\x00n\xde-\xc4Hf\xc0\x93>\xa0M\xeb\xd6\xb5\
+\xe7j\xa0=\xa0\x83\x97\x0cZ;\x16\xf2\xa4,\x85\x00\
+|J\x98\xe6P\xa6\xc2?\x1b\x07l0\xc8\xb6K\x9a\
+\x9e\xe4f\xd3\xe8\x94!1\x92\x009KOW\xa3$\
+f\x88\x81\xa4 \x22\xc4(\xd1q\xa2@\x12\xcc\x07\xcc\
+\x13q\xd2&D\x06L\xb1\x19scS\x9eecR\
+\xf9\xb4U\xfd\xde\x13N\x0c\x1e\x1eq\xe0\x86\xee\xa3\xb8\
+8C\x1b\xfb\x12\xb9r\x7f\x80\x9f\x1b\x18\x18\x80G_\
+\x1b\x82\xf5'O\xc3\x8a\xf3'\x11,\xa3\xbe\x15\xe8T\
+F\x0d\xbekZ9#\x81O\xdd\x9b}a\xd1}\xfe\
+\x9e\x91k\xe2&\x11&\x80O\x09\xd3Z\xa0\xf2\xbf\x1c\
+\xea\xd7\x00\x94J\x8f\xf2\xd1V\x83\xaf\x13H$G\x06\
+\xf2\xb9\x8c\xaa,\x07\xf3\xb2\x9a\x1c\x82\x92!\x8b(v\
+L\xe0\xdbJ{\xa8\xd4\xdb\xd9\x05{\xdb\xd7\xc1e\xab\
+\x96\xc1\xca\x95+\xc9N3`\xab\xe5\x14\xea\x91\xc3\xf5\
+]\x1b\xe0\xe9\xb1qU\xc6\xe5}'u%k\xb0\x8d\
+\xf3_8\x90\xae\xb6\xc5Av\xde\xdf\xe5\x05\xe1\xd1\x00\
+\xa5\x9b\x82B/ \xc0\x7f\xab\x94\x00\xd2\xbb\x15V\xa4\
+\xd7/\xc0\x03\xb6!\x02O\xe6\x9c\xb9\xd6\x80\xed\xcf\xb7\
+\xccy\x22\x90p\xf3\x00\xb9<\xbc\xbex=\xfcta\
+\x17\x5c\xbe\xearZB\xc6\x10\x80\x83Y\x09\xf8\x81\xd3\
+\xcb\xe8\xa3P\xca\x7f\xa6\xa0\x85\x96\x9f?\x81\xc7\x1al\
+M\x04\xcfV\xb7j\x9f\xca\xf7\x01o\xda\x15\x11\xc4\x00\
+\xef#\x82\x14\xe1\xa8\x8aB\x85\xc9*\x13\xc0H\xa1\xc0\
+!\xc2\xe2\xb9\x82'C\x10\x03\xac\xaf\xb5s\xf0\xb96\
+\xe8]\xb6\x1e\xf6_\xb6\x03\xc1_E\xe0\xd3\x14p\x05\
+~I\x12=\x88\x14\xda\x15\xd4$ _\xe3\x19a)\
+0;\x91\x04\xbeV\x8f\x09\xbcdP@\x878}\xfe\
+\x16\xcfM\x01]\xa4\xfd\x8b\xd0n\xa0`\xe7+%\x00\
+'\x01!`\x8b\xa8\xd6o\xd4\xb9>\xd6\xc9\xa7\x0d\xb8\
+\x99\x10^R0\xf0\x8df8\x8fj\xff\xe0\xe5\xd7\xc1\
+*\x04\xfd-oy\x8b\x06\x9f\xc0\x8a\x021\x0a\xf4\x92\
+\x9dG\x8a\xfd\xd3\x17\xc2$\xcf\x14^\xba\xb3\xe7\xb8\x01\
+\xdc\xa7\xe2\x0d\xa0f\xdf\xeb\xf4\x05\xb4x\x03<\x0b\x8a\
+q\xd1\xa1`\xabv&@h\x14\x22\xc7y=\xac\x15\
+\xde\xe3\x00\xff\x00\x8a\x98\x81\x00\xf0\xfb\x96w\xc1\xa1\xd5\
+o&\xd0\xd5\xa2QZ\xed3\x09V\xff\x17\xed\x0f\x08\
+!|\x8b:\xd1\xf1s\x85\xd9R\xcbz\x8e\x15#\x81\
+q\xe6\xfc\xf1\x0d\xbf)\xf4\x86\xc5\x85\x0f\x80h-\xa0\
+\xf1\x1154\x01Rw\xcdJm\xfd,\x8f\x1ds\x0d\
+`\xb4\x03\x07\x7f\xc5\x06xb\xcd\x0d\x1a|\xfa\xe8\xc3\
+\xd8\xfc\xf2\xa5\xe2o\x0d\xf4\xb16\x07\x9a\x04\xcf+\x12\
+\x00t\xf8I`\xc0\xf5\xd9yN\x00i\xae1-=\
+L\x0bpbb\xaa\xad\x09\xa0Tn\xeb7y\x22B\
+#P\x0a\xf0\x0f\xfaWl\x84'\xd7\xa1\xad\xc7\x16\xff\
+\xe67\xbfY\x83\xcf\x00\xaaP\xcat\x0a\x0d\x11\xf4l\
+c2\x07\xe4\x13\xbcP\x88Y,}\x9dH`\x1a\x86\
+\x0b\xdc\xb37Q\xd2P\xe0\xa3\xb5\x80\x19\x0d\xc4$\xaa\
+n\x02\xcc\xf3M \xa8\xe2\xd6o\x12\xbfF'1\xcb\
+\x14\x5cX\xb9\x11\x9e\xeaz\x1b\x81O\xcb\xc4i\xf0\xc3\
+\xa6f\xd7\x8a\x10\x0c|\xaf&\xa0\xf5\x09h\xffE|\
+\xe9\xad\xb8]z\xee(@\x80\x83G\xc7\x92\x01\x1d\x05\
+<\xd7\x02<\x0eP\xd3^\x80UZ/@\x04k\x04\
+\xde-\xe4\xf7\x99s\x04\xfe&xz\xe3N\xb2\xf5\xb4\
+\x08c\x90\xda\xaf\x84\x08z%\xcf\xc0\xd0q4\x09\xf8\
+\xc7'z\x91\x8a\x97\xed\x19\x9f`\xf1\xb9n\x05\xbc\x15\
+\x06t\xb4\xdd7y\xfe\x095\xdc\x07\xa8u/@=\
+\xc4\xcf\x01c\xc3\x81\xf5\xed\x99F`=\x00\x11\xac!\
+\x06Wm\x86\xe76\xef\x82\x95+V\xd2\xda\x80\x04\xbe\
+\x06MK\xc5$\xa0Q=\xfa\x0a\x88\xae\x1d\x1c\x1c\xf4\
+\x8e\x22\x86\x80\x1f=c\x98\x1cCZB\x86H\xf0\x8a\
+m\xab\xf2-|\xad\x1bd@\xdf\xde7\xe8\x22B\xc8\
+\xa0\xcf{\xef\x9d}\xdaV\xf8\x98\xdb\xaaj\x02\x8c\xae\
+\x0f\x9a\xd6mR\xa860\x89\xf7\x08\xcc\xf1\xd0\xe5\x9b\
+\xe1\xf9-o\x87\x15\xcbW\x10\xf8\xf4\x81'\xeb\xeaE\
+\x11\xc1\x80\xc5\xc1\xa7/\x84Zp\x14S\x16\xae\xbdp\
+\xe1\x02\x91 \xda\x0c\x18\x92\x153\x05l\xb5\xcf\x97-\
+\x1b6\x82\x80\x85g\x8fxL\x01w\x00\x95\x96(\xe6\
+\x04\xd2\xc6O\x1a#\xb3FG\xad\x82-\x95U&\x80\
+\xdf\xc6\x84v\x03MR\x9b\x08\xff\xc0\x10\xc6O\x84\xa1\
+\xd5W\xc2K[o\xc5\x96\xbfB-\xbf\xda\xd9\xd9I\
+\x95Y\x0a\xc0%\xb7|\x02\x7f\xf0ow\x83\xeb\xe4a\
+\xf1\xe7\xee\x01\x12\x22A&\x93)\xc5/`\xa0\x17\x09\
+\x16\x19M\x10\xb3U\x09\x17\xbcz\xd8O\xf8R\xec\xfc\
+l\xd2\x801'R\xfb\x11&\x0eP\x0b\x13\xc0#M\
+>\xf1\xab\x7f\x03\xae\xc9\x8f\xe8\x1d\xf8\xaf\x1dY\xbd\x05\
+\x0eo\x7f'\x81O\xab\x81\x12\xf8\xe1-\xdf\x80\x10y\
+\x9e~\x87\xc0o\xc6\xf1\xfc\xa1\xff\xb2\x1b\xd2\x8f\xcc\x00\
+?Dj\xfa\xcf\xd4>\xfd\xcd\x22\xa5\x09\xa2G\x07\x03\
+\xbba\x8c\x04D\xdeW,[\xe5\xcd?\xf3\x8a\x0fP\
+\xab\x08\xf0\xd276\x10\xd0\xdb\xf2\x10B\xb2\xe7WG\
+\x03pM \x8c\x0f\xe0\xc3S\x14R\xb4F\xe0>\x82\
+'ot\xed\x16\xe8\xde\xf1\xafH\xed\x13\xf8\xfao\xec\
+D}\x9f\x1ft\xde\xb7\xafg\xf2\x10\xf8\xc3\x7f\xb7\x1b\
+2{\xef\x01\xad\xcc\xb2\x8f\xdd\x07\xc3\x02`\xc1g\x0d\
+\x09P\x13\x04=\x8b\x01\xadS\x10\x09h\xdd_\x22\xc1\
+\xe1\x98\xad\x1c\xc3y\xa7^\x06\xe1\x03\x9e5\x08?I\
+|f $\x12h\xd5\xc6\x070[\x0b\x13\xef\x06\xf2\
+\xd6=[\xfd\xcfV\xf5E\xfc\x83\xb1\xb5W\xc1\xb1\xeb\
+\xdeE\xb6\x9e\xfe\xba\x16\x03?p5N~>t\x02\
+\xe7\x08\x82\x9f}T\x83o$\xf7\xd3\xfb`D\x00\xb4\
+\xff\xa9\x8f\x04L\xcd\xe3~X\xf2M\x1c\xa1\xad&\x01\
+\xad^FyG\x90\x08+\x05\x92\xe0\xe4K`\xcdn\
+\xf1\x8c\x10\xbe\x06\xe4'\x04\x80\x8fD\xea\xbcmB\xcb\
+Jj1\x18\x14\xe9\x02h\xc0!J\xfd\x9b\xeb'\xd6\
+m\x85Soy7\xac\xe8\x5cN\xeb\xff\x12\xf8\xd4b\
+\x18\x98\x95h\x01=u\x9b\xc0\x1f\xfd\xdan\xc8\xfdD\
+\x83\xcf%\x8f$\x18\xc5\xed\xfcp\x120\x90\xa3\xb4\x01\
+%r\x0c5\x09\xba\xed\x98\xd2\x04\xcd\xc7_\xf4:\xc3\
+\xc6\x114\x00\x07\xf7\xf9\x85\xf9z\xd7\xf1\xcf\x09\xac\x9d\
+\x09P\x05\xb3-\xf3>\x82c+|\x19A\x041\xa7\
+'\xd7]\x0dgn\xbc\x8dl=\x81\xaf\xff\xbaV\xb1\
+\x96]\xa6\x160\x1fm\x10\xf8c_+\xb4|\xafY\
+bk\xeb#\x09\xf6\xdd\x07cx\xa2\xed3E\x1d\xc3\
+b\xe0j2Dh\x03C\x02\xd2l\xa4\x09:\xc0\x82\
+\xc6\xe3\xcfs\x80\x85\x1f`\xa9\xb2\x82\x9dEa\xba\xe3\
+t\xae\x96&@\x18V\x82o\xec\x9e\x89)H0A\
+\x92]W\xc3\xb9]\xef\xc7E\x18;i\xc9uZ\x97\
+G\x83_\xb1\xad\xd7\xe7\xcc\xe7Z\x0d\x08\xfe]\xa0\xd5\
+\xbee*\xcbG\x00u\xabE\xfb\x05\x12\x80\x8f\x04\xfa\
+\xe3\x13\x06.\x07\x9f\x93\x02\xc5\xab\x09\xe8o\x06\x164\
+\x81\x0d\x8b\x01\xa0\xe1\xe8\xf3^\x80\xcdVrs*\x03\
+\xd1\x15:\x12\xa8M@M\xbb\x81\x06Ls\x10\x16\x1f\
+`\x92\xea\xda\x06=\xb7\xdcN\xea\x9e\xc0g\x7fc'\
+\xa0UG\x02O\xa2?\xd4\xd4\xe0\xe7\x1e\xbd\xdb7\xc9\
+\x04f\xbf\x97\xd4\x0b``\x92\x9c\x04B\x08M\x02\x03\
+fx\x0a\xd5\x14\xda' \x92vcj\xa7\xf1\x84\xc3\
+\xcf\x85\x03\xac\xdf\xdbx\xffL\x84\x1e\xaeW\xe5\xa8\xb2\
+\x090\xf3\x01`\xd6\xe39\x09D\x04A\xa67n\x87\
+\xfe[\xef\x80\xcee\x9d\xb4\xde>\x81o\xbaz\xd1\xea\
+=\x8c\x14\xf4;\x85\xaft\xeb5\xf8\x1axC\x80\xd9\
+\xa3s\x1a|\xda\x9aO\xb6\x98&\xc0\x88!'\x01\x07\
+8\xd2,h\x12\xd0\xd2\xb3\xb4\x7f\xcc\xfe\x84z\x99\xc4\
+\xe1gA\xfb\x01\xb2h\xd7/\xa0~-\xefX\x00\xd4\
+(\x10$0\x15\x0a\x15 \xa6\xa2Cz\x09\x99\xcd\xdb\
+a\xe07>\x00\xcb:\x0d\xf8\x1e\x9b\x1f\x01v\xb4\xcd\
+\xd7\x8b3\x8c\xfe=\xd9|j\xf9lv\x91&\x80\x11\
+/\xf8\xe0\x9d\xae\xcd5\xc1\xd0\xd0\x10\x91\x80\x01\xca\xc9\
+\x10M\x10M\x02*\x7f\xb7u'4K,\xc3+\xcf\
+\xfaL\xbd4\xe0\x078\xdd\xe6\x9ce\xcfL\x92\x95\xb5\
+\xeb\x05\xa8\xc4\xc5o\xdf\x03%\xbb\xe9\x1a\x18\xf9\xad\x0f\
+\xc1\xb2\x8ee\xb4\xc6?-\xc7F-\xb6\xdcV^t\
+_\xaf\xc9\xa3\xc1\xcf \xf8\xbeh#\x9f~\xe6\x11C\
+\x00W\xf2\x99;\xd4;\x18\x93H\x82?U$\xa0\x8f\
+O\xf4\x00R\x04\xc8\xfc\x18\x85\x99\x03\xfa[\xc9t|\
+\xcc\xbaKU\xa0\xfd\xd23|\xb9V.\xfc\xbc%\xaa\
+\xee\x04\xfa\xbf\xdd\x0c\x09\x05\x0b\xff\x01\x93\xfc\xe6ka\
+\xec\xdd\x1fFG\xaf\x83\xe6\xd3\x19\x9b\x1f\x0dn\xc89\
+\xa3\xf6\xf5\x9a<#\x7f\x7f\x17d\x1e\xf1\xb5|\xd3-\
+\xf5k\x02#\xa6\xf5\xb3\xe1[\xdd\xdb\xc9\xee\x9b\xe9\x22\
+\xb6\x7f\xf6\xeb@2::J$\xf0i\x01\xae\x0d\xa2\
+\xc9\xa1'\x9a\xd2\xda\xc6t|\xdc\xfaCHH\xbc\xee\
+\xa5\xa7Y\xc4\x8f\x89\xd0\xe7\xd9h`\x0dz\x01\x9a\xb9\
+E\xf0\x17\x11\x19r\xeb\x0e\x98x\xcf\xef\x91\x97O\x13\
+'\x0c\xf8\xd1}\xfb(\x82\x98\xa5\xd8\xea\xea0\xc2\x87\
+\xe0\xef\xdd\xc3\xcd\x10\x9fuD\xc9w\x91\x99\xcd\xeb\x8f\
+\xc5KO\xf4-C\x11C\x10\x141\xa4g\xd3\xb7\x88\
+\x9a\x04\xd1\x80\xf3}6\xdb\x98V$W$\xf8\xd0\x1f\
+A\x9c2_|:\xb4\x8e\xfd(\xebo%\xa0\xc6&\
+\xc0\x16!\x04\xe0\x99\x895\xeb!\xfd\xe1?\x82\xa5\xad\
+\xea\x0f:\x90\xda\x0f\x1a\xd2\x0do\xf1|\xdf\xb7\x08\xe3\
+\xd0\xdfRl\x1f\xc1\xb7\xc2\xa2\x92|\xd2\xa9\xd0\xaa\xbf\
+\xe8$\x0d\x1e}K?\xfa\x0d\x18\xc2\xedBC\x02\xbd\
+\xb61\x03:,i\x09\x22\xc1\xa9\x8f~\x1a\xec\xb1\xbf\
+\x02\xf7\xccIS?\xa1\x04\x90T\x9e\xb2\xc7\x02\xacR\
+M\x80\xf12M\x14%L\xf4\xf9\xe5\x9f\xfc\x0c,]\
+\xd6I-\xdf\x80\x1f.a\xb1u\x9f\xcd\xd7\xe0\xd3\xa8\
+^\xea\xc7{\x82m$\x14\xd5\x08|~\xa2aKh\
+\xa4s\x1aI0\xf8\xd5\x8f\x91\xbfA\xb1\x06r>\x09\
+t\x9d\x18\xd8\xc5\xf2\x83\x84\xcaCs\x1e\xd7um\x80\
+\xf6\x8f}\xaa\xbc\x857tAj\xa1\x01\xa4~\x88-\
+\xcaz\xa9U;\xdf\x0eY\x10\xa4\xa6K\x05?\xb2\xf5\
+\xeb%\xd7i\xbd\xbf\x81\xbfQ\xe0\x13\x90\xbfTI!\
+\x09\x06$\xc0\xe2\x7f\xaf4\x81Z\xbd\xccq\x9cR#\
+\x84$\xa1$\xa0\x19PK\xda\xe6\xc1\xc0\x7f\xfc\xb7P\
+\xa2\x18\xdf\xa6\x96&@x\xbfQ\x12\xd176#H\
+VK+\x9bvU:\x09\xf8*\x18z\xbd\xfd\xfe\xaf\
+\xee\x86\xa9\x1f\xed\x01;\x08|\xe9\xe9\xdf\xcf\xcew1\
+Y\xa6\xdf\xefB\xc4*\x9e\xfa\x94\xe7|r\xef7\xc0\
+\x95\x02\x96\xfe\xf9\xddz\x81k2\x07\xd1\xaa?Z\x94\
+vkp\x1d(]\x8c\x13\xa8\xa4&&\x80\x0aac\
+b\xe7\x83o\xea\xfd\xc1\xbf\x90mSj\xb2\x0ca\x95\
+\xa6\xc3\xbb\x1a\xfc\xbe\xaf\xec\x86\x89\x1f\xec\xd1x1\x80\
+\x0d\xa2\xe6\xbcK@{\xbe\xdeu\x5c\xef1%~\xbf\
+d?\xe7\x7f`\xf2\x91{\xe1\xfc\x97?\x8e\xad\xb6\x8e\
+\xb4\x1c\xbdc\x90\x16(k\xd2\x0ai\x81\xbe\x87\x1fb\
+U\x1aV\xe9\x0a\x9bj\x13\x80\x87\x82\x8bx\xf9!7\
+\xbd\xf8\xf9\xcf\xc1\xf8\xd1W\xa8@\x9a\x04\x95\x10\xc1\xf7\
+gV\xce\xff\xe7\xdd0\xfe}c\xf3\x0dH\x06H\xde\
+t=\x81\x1e\xa9\xc9`H\xe0\xfb~\x1fT\xe2\xc4\xe0\
+\xbf\xa96\x13\x0f\xe3\x12\xf0\x7f\xfdq|\xb78-\x1e\
+A$\xf0\xf9\x04(e\x83?q\xfc\x08\xbc\xf8\x97\x9f\
+\x8d\xaac#\x9ap\x16T\x99\x00&\xd1\xd5,\x0e\x10\
+\xc5N'=\x0d\xfbn\xdbuQ$ \x9bOZ\x84\
+\xc0\xef\xf9\xf2n\x18\xfd\xbf\x1a|\xd6\xea\x0d\xc8\x1ah\
+\x93\xccB\x0d\x06t\x93\xcc5\xfe\xa9V\xd2\x9f\xcc\xae\
+\xb9\x9ed\xfc\xc7\xf7BO\x81\x04\xa8\xa5\xe8\x9d\x09\x90\
+\x8a\xc0\x9f<\xde\x0d\x8f\xbf\xf7fpRS\x10j\x95\
+\xa4g#MW\xb7\xda&\x80OZ\x10\x01D\x09P\
+M\xd9\xd1\x11\xd8\xff\xbe\x9ba\xe2\xd8\xe1\xb2I@-\
+H\xdfs\xeeK\xbba\xe4\xa1=\x06`\x7f\xec\x9e\xdb\
+\x7f\x7f2$\xa0\xe4\x86$C\x16\xad\x11\xfc\x04\x01J\
+\xdc\x5c\x8c\xfd\xf0^8\xf7\xc5\x8f\xd3\xbb\x12a\xe9\xdd\
+\xcb\x07\xffD7\xd6\xd5.\xc8\x0e\x0d\x9a2\x84\x80\x22\
+\xa5\xd7A\x87\xaa\x9a\x00.\xda\x04\xc8\xa2\x0f1\x95\x0c\
+\xc5H0\x0c\x07\xb0`\x13\xc7\x03H\x10\xf1\xb7t_\
+\xfbk\x04\xff{{\x02AV q;\xcf\x01\xf7\xd9\
+~v\x8f\x01\x9f\x11(\xcc\xbf0\x84\x19\xf9\xc1\xbdp\
+\xf6\x0b\x1f\xa7w\xa6w\xa72\x94\x05\xfeA\x02\x7fx\
+\xd0<\xa6\x14\xa7\xd4\xd7M\xaf\xa1\x090\xc3\x8d\xc1\x17\
+\x9a]\xdeJ\xb2#\xc3p\xe8\xfd7\xa3\x8a;\xc2H\
+\x10\x06\xfe\xab_\xdc\x0d\x83\xff\xc78|FM{\x9e\
+\xe1\xcf\xe3\xad\x9e\x11A\x1f\xb3|c&\x98\x06a\xa4\
+)\xaa\x11F\xbe\xffux\xf5\xf3\x8c\x04\xe1\xe0\x9f\xec\
+\x86'~g\x17dF\x06\x99\xca\xd7\x19\x81Y\xae&\
+\x00\xd4\xd8\x07\x10\x04\x8c0\xf9Q/\xc8\x9c2\x22\xc1\
+\x10\x15\xd4K\x82\xd0?\xa4|\xe6\x0b3\xe0\x03\x03\xbe\
+\x90\x0c\x88\x8c\x1c\xae\xda\xf7m\x8d\x160\xa0\x17'\x81\
+I\x06h\x93\x02\xc8h\xf2\x86\x1e\xfa:\x9c\xfe\x8b0\
+\x12\x18\xf0\x93\x08\xfe\xcf\xb0N\xd2C\x83\x86\xd4!N\
+'\x9f\x17\xea%\x80\xa0\xbdZ\x98\x00\xe1_\xcd\x889\
+B\xe16\xca5eP$\xf8\xd9\x1dH\x82\x13G\xc8\
+V\xea?\x9fJ\x8e\x139z\x94\xa7\x8eO}~7\
+\x5c\xf8\xee\x9e\xd2*\xde\x0b2\xb3\xf7\xe1v\xdf\xa1\xc4\
+\xae\xd5\xe4\xe2&\x81\x83^\x9c\x1c\x83H\x82\x93\xffI\
+\x91@;\xb1TFM\x0a\x95\xa7\xc0\xbf\x1d[\xfe\xf0\
+`pc\x8a\xa8kn\x02d-\x02AR9\x19\x86\
+\xc8f\xe0\x5c\x9a\x15/\x8c#\xe8\xb2y\x81\xa6\xc5\x12\
+\x09\x86\x87\xe0I$\xc1\x9b\xef\xdf\x07\xad]W\xaa\xca\
+\xf1\xca\x89\xbf\xd8\x0d\x03\x08\xbeey*Xx+\x99\
+\x1f\xbb\xc4O\xbd\xef\x9a\x90\xafY{\x98\xcd\xab\xe7\x9f\
+\xc0\xbb\xdc\x84\x98}\x9d\x82H\xc8\x890\xf0\xbd\xaf\xab\
+k\xd6}\xe9n\x02\xdf\xd7\xbd%\x7f\x88\xea\x80l\xbe\
+O\xbcZ\x0c\x02\x9dN&\x96\xed\xa9sY\x0b\x1f@\
+\x84\xda\x18\x03\xb0,-8\x93!M\xf0\xee\xeb\xe1\xb5\
+o\xffO\xea\xf2\xa8R'O\x1d\x85\x17>z3\xf4\
+=hZ>\xab\xdc PLk5[\xae\xde\xfd-\
+\x9f\xf5\x00\xb8\x16\xe0\xa6@\xefG\x13\x81\x8e\xfb\x91\x04\
+/\xfc\xdeN\x98:\xd5\xad.t\xa6Sp\xee;{\
+\xb0\xec\xd7\x11\xf8\xe6Zo5\x85;\x80<\x82\xa9\xf1\
+\x11\xa2z\xa1`>\xa3'\xa8\x9b\xc1[\xbd)\x8ci\
+mRp\xbf!\x8f\xc0\x1f\xfe\xf3\xbb\xa0\xfb?\xdc\xe5\
+\x1f\xc3\xb7\xbc\xd3\xb4\xb8\x160\x1e\xb0\x09\xeb\xbafm\
+T\xad\x91\xf8\xa4\x067\x8a\xf0\x5c\x0bpRq\xf3\xe2\
+\xbf\x9e\x13c\xec\xe9\x03\xf0\x8b\xdf\xdc<s\x8f\xe3\xf1\
+C\x98I\x0b\xa8\xd7R\x08B\x15W\xd3\xb1\x00A\x89\
+\xbf\x9b\x998\x11L\x0a\xe9%\x85\xf4\x83\x22\xbc\x15\xa0\
+\xaf\xe5y\xba\xe5\xf9&\xcf[\xe67\xf5\x08\xaewM\
+a6\x1c(eX\x1d\x19\xc2\xf2\xdeD\xb8O`R\
+8\x11L\x9eF2<j)\xa3\xa2\x92\x92\xed\xd7\x86\
+\x00\x82\x92%\xf8h\xa0\x07 W_\xeb\x03.XK\
+(\x89\x04\xde\x7f\x0c>\x0d`\x9ei\xb9\x851\xfdb\
+\x5c\x95&\x83OV\xf5\x1bY\xd7\xa7b\x03}\x01\x9e\
+\xe7M\xe5\xf5\x18\x8c\xc9\xe1`s3\xca\xbb\xdbFD\
+\xd5\x09\xa0+H\xbf\xac\x8cx\x86\xbe\x96\xb5x\x1f\xf0\
+\x02\xbc\x05\x0c\x03^\x83l\xde\xc3\xd2\xe7\xe9'\x8d\xba\
+W\x22\xe8X\x14\x88 \xbd\x1a\xc0\xcff\x8b\x03oZ\
+\x9d\x8f\x00Q\xa6\x80\xfb\x1f&\x85\x82n\x12\x037\x5c\
+\xfdK_\x0c\x22*2D\xc7\x15\x10\xc0.hm\xfd\
+\x97\xc2tH*=\x99\xa1\x85\x9f\xd5\xd2\xadN\xd6\xfb\
+\xde\xbc\x95\x9a\x93\x9c\x9dRFy\xf6Av\xdeoB\
+,/\x09\xf4\xb1!\x82\xe9\x91\xd0\xbe\xf0\xbc\xd6\x0cA\
+\x98\xb8\xb3[\x17\x07\xd4\x98\x80`m\xc0\xbb\x9f\xa5\xf5\
+\x18\xfc\xf7\x82I>\x82\x05\xa8\x7f\xc2\x84\xb0\xc9 F\
+TX\xa1\xca,\xf5\x8c&I\x98\xe6K!\xc0\x08\xa6\
+%\xfa},\xcb\x8d\xcfk\x81x\xbc\x1e\xa4\xe3\xc0\xf4\
+h\x16\x1a\x97\xb4B]k=\xe4RY\xd0\xe2k\xb5\
+\xc6\x8eF\xdby\xc9\xc9`\xfc\x03\xaf\x9d7\xe7\x8c\xba\
+\xf7\x93@\xa8\x8b\x02\xbb}\x85\x8a0\x8e\xa0`<\xf5\
+\x1f\xb8\xe1\xddB\xee\x17\x84\x98\x00(\xa3\xc7 C\xba\
+z|P\xcaH}[#4u\xb4\xc1\xd4\xf0IH\
+\xe0\x88\xa4\x93\xcbA>\x9fQE)\xf0_\x8e\x94B\
+\x80.\xbcat\xe6\xb7\x1d!e>^_\x97mh\
+_\x94\xb0h\xfa\xb6h\x05\x22\xc4\xa2-\x9d\x90\xec\x9f\
+\x00#e\xday\x19\xa0\x05\x14\x90\xdc\xf37\xde\xbd\xfe\
+y?\x09\x84>6\x7fj\xc6 \xa8\x89\xc1\xfe\x22Y\
+\x88\xb8\xcc\x170+\x81\x1bR\x98\xae`HWT\xb2\
+\xf1\x06\x16J.\xcb?0\x04\xf3\xaf\xdb\xb0\xec\xba\xb5\
+\x10on\x80\xf1\xa1\x8c\xfa\x9b\x0dnr\x12,\x07\xa8\
+\x95\xe6\x08KL\x92\xb0\x8d\x8c\x03\xd0\x1d\x85^J\x1e\
+\xa4L\x0b\xd7MZu1\xb5\xfc{v\x1a`\xf0\xf8\
+8t\xdd~\x0d4-n\xf1c\x1e\xf0\xb2A\xf6\xcf\
+\x0d\xa9\x18\xa9\x13\xef{s\x1b\xecz\xce\x05l)9\
+\xe682928D,\xdd\x90V\xaf\xaf\x09\xf2\x0f\
+\xd8\xe8e\xb4\xcf\xc0c(\x9c\xc4\xad\xcb\xdba\xfd{\
+\xf1;\xcbg{!9\x9aQ\x84\x90\xe0\x92)\x9f\x14\
+\x00\x19\xc2\x920\xcd\x96\x12\x08\x1a\x9bQ\x0bn\xe1\xc6\
+);\x9d~U\xda\x16X\xf5\x0924\xd0\xfb\xc28\
+\xc4\xdb\xe6\xc35\x9f\xde\xe9!A\xa8\xf3\xc2\x0b\xc6\xae\
+\xe1]%7X\xdd\x9a\xfd\xc0\xf0\xad\xc9s\xf8~t\
+\x92\x0cx\xbe\x0d\x18k\x08xw^\xbe\xa0\x14@\x04\
+\x17\xf85$-\x08\xfe5\x7f|\x0b\x1e\x0b8\xf2\xd8\
+\x19R\xa7\x0aU\xc7\xc9C\x03\xc0\x19\xc2\x90\xb0$L\
+\xc7J1\x01I\x00\xd9\x86\x8cq\xf1&\x010\xd1\x94\
+J?;\x95Ln\xafokC\xfcQ\x0bL\xb9p\
+\xf2'\x03\xb0\xf6\xed\xab\xe0\xa6/\xdf\x06G\x1fx\x16\
+\x06_\xee\x81\xccD\x9aj\xc7\xf7\x19\x16%\xf3e\x0e\
+\xdf\x82\xa0\xc4\xaf\x05\xb3\xef\xbb\x06\x84?Iu\x9d\xc7\
+\xc9\xa3-\x1dz\x8f\x85\xdf!\xf6\xafO\x10\xc0_\x9f\
+#hH\xaa\xb6\x96\xc9S[\xcb\xe4{;\xee\xa2p\
+\x9d\xa0\xe4\x9a{\xa0p,<[\xcb\xf57\x08\x97\xf2\
+\xcd\xbd*Y\x9e\xdf\xb6m\x0b\x12\xf3\x1a`\xc9\xd6\xcb\
+`\xe3\x07v`F\x0c\x9e\xfc\xc6K05\x92\x06+\
+n\xa3\x7f\x96\xc6\xdf\xc8\xc3\x02\x17\x9e\x05\xc4\x90\xb0\xc4\
+\x94'l#\x09@\xc1\xca\x9b\x94\xbaP\xac\x19_\x99\
+\xcd\xef\x7f\xb1\xbf\xff}\xce\xd2\xa5\x0b\xe3M\xcd\xca\x10\
+\x8f\xf5&\xe1\xe5\x7fI\xc1\xf2m\xf3a\xeb'w\x81\
+3\x91\x84\xa9\x0b\x13\xe0d\xf2Xp\xbe\x02\x16\x89e\
+\xec\xb5\xb9\xc6\xf7\xa1\xa6\xf7>\xbe\x8a\x18\x04]\xe3\xcd\
+\x9f\x0d0\xe5W\xd2O\x96E\xc2\xae\xc5\x8e\x8b\x13\xc5\
+\x10(\xe0X\x93\xc7\xdc\x17\x14\x80*\xfe\xdbv\x22\x06\
+\xcd\xd8\xf2\xed\x86z\xe8y\xbe\x0f\xba\x1f?;\xa3\xfa\
+\xd1T;\xa9\x0cd\x93IH\xb80\xb8\xd6\x85\x83.\
+b\x98G,\x13\x00.a[\xd27\x1d\x8f\xcf`R\
+\x87\xff\xb4\xbb\x00\xab_\xb5\xc5\xed#\x9d\x1d\x9fZ\xb2\
+e\x8b\xb0bqp\xe8\x0f>d\x90\x22\xa8fb\x09\
+\x89\x0c\x1e\x85\x96\xc5MP\xd7\x5c\x07B\xd7z\xd4W\
+C\xc2l\xf8\xb5\xfc\xbc\x14\x81\xd7F\x03,\xa0r\x99\
+\x0d~h\xd4\x8d_\xc3\xaf\x8f\xf8=\x19\x1e\xdcs]\
+\x09\xf9\xb4\x03\x99\x14\xc0pO\x12Rci\xd5U'\
+'\x9d<\xff\x89\xbe\xf3\xa8\xa5\xa7\xe4Z\x07\xfe\xf1\x0a\
+\x17\x1e\xb4\xd0\x0c\xb83\x9d\xbb\xccN\xbc\xbd\xa48\xc0\
+\x01\x00\xf9\x0e\x80\x9c\x03\x90\xc4;.\xacr\xe4#\xc9\
+\xbe\xfe+\xfa\xa4{k\xfb\xe5\xab\xc1\xaa\xabC\xecs\
+\xea\xafW\xa6\xc6\xd30\xf6\x1a\x9a\x80\xe4DTC\x0a\
+>_\x85\xebd\xc5\xe7\xdexB\x7f\x94\xab\xbe\x15M\
+\xb2m\xab$\x10\xfc\x5c\x12\xc9\x80\x83k\xd9T\x0a\x16\
+\xb9\xf0(\xb6\xfe\xbd\x80\xd8Y\x88a\x1c\xb1|4\xa0\
+\xa8v\xb1\xcc\xfd\x98\xde\x87\xa9\x19@N\x93C\x88i\
+\xb1+\xcf\x0c\xa7\xa6\xe6\x0f\x8f\x0c\xafqs9\xd5\x1e\
+]\xc7Q)7\x9d\xc24\xcdg\xab\x5c\xe2\x04\x90\xf0\
+\xc6\x14\x9b\xbe\xb5\x88\xc7@\xd2\x7f\xf9<\x06\xe8& \
+5:\x8c\x9a!#\x09\xfcm\x0e\xfc3\x00\x9c\xcd\x03\
+\x0c6\x02\x9e\x02p\xee\x0c'\x00\x97+\x00\xe4\x22\xdc\
+\x92\xed\x903}\xc9\xecR\x17\x8e\xa1\x9a\x19\x1d\x9e\x18\
+_=5>\xd6H\xb6&\x8b\xe0\xe73\x19p\xf3\xb9\
+\x80\x0a\xad}\xe5K\xf8u\x17>\xfd\x1b\x1b!:{\
+\xd3\xa8y'!\x97\x9e\x86x\xde\x1d\xbc\xdc\x85{6\
+\xbb\xf0-\x02\x9fZ\x7f\x0c \x99B\xec\x9eB\x0c\xf7\
+Wb\x1d\x1f\xc7\xf3\x13\x00V+\xf2@\x024\x09\x80\
+v\x0a\x14:\x00\x9dg,\xb8i\xd4\x82k\xa6\x01V\
+;\x02\x9a]\xbc\xa6V\xa0\xc9\xaa\x9f\x7f\xe3\x13\xc7\x02\
+\xc8\xfe\xbf\xf6\xce %b\x18\x0c\xa3/I\xe9\x8c\x8c\
+\xcc\x0c\x1e\xc1\xa5\xa7\xd0\x8d\x9e\xc0\x03x\x12\xebI\xbc\
+\x95\xcb\xd9\xb9\xb48Hal\x9b\xc4/\x18A\x17\xe2\
+\x14\x1dWy\xf0\xb6%\xe1\x0b\xfc\xc9\x1fH+x9\
+\x8al\xd2n?m\xf8\x1c<\xa6\xe0#\xb4\x06:e\
+\xd7/!\x5c|?\xd5\xbd\xeev\x8c\xea\x87]A5\
+\xc0|\x84\x14\xf6\xcaJ`i`\x11a\x06T\xd2Q\
+\xf8\x0f\xbc\x1c?z5\xf9\xa8\xb7\xb5\xb2z\xaf\xf9\xbb\
+-\x8c\x97\xb9\x0d\xfc\xab\xdb@\x03\xf1\x1a\xc2\x0d\x0ck\
+\xf0#\xf4@g\xe1)\x05\x9f49\xfc\xf0\xe9\xb7\xbf\
+\x14\xfe\x1c\xf3\xf513\x1f\xf3\x22H\x06\x89t0\xb4\
+\x10\xee!^\xc9\x9f\xbf9\x81\x06\xcc\xadT=\xb1\x1d\
+\xb8\xb9\xac\xc1\xbeJ\x97{5\x1eLO\xe1\x10\xd4\xd2\
+A\x0c\x80\x878\x83\xd0\xcb\x1d\xf8\x85<\x87p\x07\xb1\
+\x91\x13\x16\xd5t\x1ay\x06\xe6X\xae\xf3\xc06)x\
+yB\xe1\x90\xb4\xb2\x86x*{\xe09wo\x1fd\
+C\xa1P(\x14\x0a\x85\xc2~\xbc\x01\xc5\xf3\xa3!\xeb\
+\x0d6:\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00<\x0e\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x09\xediCCPICC Prof\
+ile\x00\x00x\x9c\xad\xd6gTS\xd9\x16\x07\xf0\
+\xff\xbd)\x84\x04B\xef- \xddP\xa4Jo\x8a\x0d\
+\x18D\x14\xb0\x02!4)\x11\x82(vP\xb0\xa1`\
+W\xb0+v\x05\x95Q\xc7\x8a\x0a\x22\x8c\xa24\x11Q\
+, 8\x22\x1d\x0b\x82y\x1f\x82e\xd6\x9bY\xef\xcb\
+\xdb\x9f\xf6\xd9k\xdd\xb3\xce\xf9\xed}\xd7:\x80\x94b\
+\x98@\x10G\x02\x88O\x10&\x05L\xf0\xe4\x04\x87\xcc\
+\xe4H\xd4\x81\x0a5H\x03\xb0\x0f\xe3%\x0b<\xfc\xfd\
+}\xf0\xaf\xf1\xb1\x1e\x04\x00\xd4\x98\x85\x09\x04q\x89G\
+\xa3\xab\x11\x97\x97\xa9\x92\xe3\xc2\xe9\x9f\xab\xfb\xf8\xdf\xbf\
+\x03\x00\xb0\x93\x82Cf\x02\x04\x17\x80b\x948w\x07\
+\xa0\x18.\xce\x03\x01(\xa6\x0a\x05B\x80\x88\x06\xa0\xc8\
+\x8b\x0e\x8b\x00\x88\xa5\x00\xb8I\x81\x01^\x00q\x1c\x00\
+;J\x9c_\x06\xc0\x0e\x17\xe7\xe5\x00\xd8\x0byQB\
+\x80h\x00(\xf2\x09\x111\x09\x00\xb5\x03\xa0\xbbF\xf0\
+\x93y\x00\x8b\x0b`^D2/\x1e`m\x04`\x19\
+\x1f\x9f\x18\x01\xb0\xae\x010\xe6\x09\x92\x84\x00\xab\x05\x80\
+Yp\xc8L\x8e\xf8\xc8\xe1\x91\x80u\x08@\x1e\xffY\
+\x9b/\x05\x14i\x02\x8a5?k&\x11\x80F\x01p\
+\xf5\xc4\xcfZ_\x00\x08\x00\x84rUr\xa4\xb5\x15\x00\
+\x80\x90\xf2\x04h/D\xa2>C@b\x0b0\x9c+\
+\x12}=$\x12\x0d\x1f\x06(M\xc0\xad8^J\xd2\
+\xc2\x11/\x82x\x00\xfc\xaf\xb5\xf8\xce#A!\x00\x02\
+$\x95\xce\x90dI\xb1e\xe4\xe4\x15\x94\x94U\xd54\
+4\xb5u8z\xa3\xf4\x0d\x8d\x8cMGs\xcd-,\
+\xc7X\xdb\xd8\xda\xd9\x8futrvqus\xf7\xf0\
+\xf4\x1a7\xde{\xc2\xc4I\x93\xa7\xf8\xf8\xfa\xfd\xe6?\
+5 p\xfa\x8c\xa0\xe0\x90\x99\xb3\xe6\xcc\x9d\x17\x1a\x16\
+\xce\x8b\x88\x8c\x8a\x8e\x89\x9d\x1f\x17\x9f X\x90\x94,\
+LY\x98\xba(m\xc9\xd2e\xcbW\xac\x5c\x95\x9e\xb1\
+&3k\xed\xba\xf5\x1b6fo\xca\xc9\xdd\xb2u\xdb\
+\xf6\x1d;w\xed\xde\x93\x97\xbfw\xff\x81\x83\x87\x0e\x1f\
+9Zp\xec\xf8\x89\x93\xa7N\x9f9{\xae\xb0\xa8\xe8\
+\xfc\x85\x8b\xc5\xbf_\xba|\xe5\x8f\xab\xd7\xae_\xbfq\
+\xf3V\xc9\xed;w\xef\x96\x96\xdd+\xbf_QQ\xf9\
+\xe7\x83\x87UU\x8f\x1eW\xd7\xd4\xd4\xd6\xd5\xd5?i\
+hx\xda\xd8\xf8\xac\xa9\xe9\xf9\x8b\x17\xcd/_\xbez\
+\xfd\xfaMKK\xeb\xdb\xb6\xb6\xf6w\xef\xfez\xff\xbe\
+\xe3CggWwwOo__\xff\xc0\xc0\xc7O\
+\x9f?\x7f\x19\x1c\xfc:44\xfc\xed\x9b\x08$\x95.\
+!\xc9\x94\x92\x96\x91\x95WPTVQS\xd7\xd4\xd2\
+\xe6\xe8\xea\xe9\x1b\x18\x1a\x9b\x98r\xcd\xcc-,\xad\xac\
+ml\xed\xc6:\xfc\x1b\xc0\xb4\x11\x80\xd9#\x00\xfc\xef\
+\x00\x89?\x00\x16\xff\x00X\xbd&3k\xed\xfa\x0d\x1b\
+\xb37m\xfeE \x7f\xef\xbe\x7f\x10\x18\x01\x10\x0b\x88\
+\x01\xee\xfc\x0d\xe0\xd1\xe3\xc7\xd55\xb5\xb5u\xf5\xff\x08\
+\xd0\xfa\x03\xa0C\x0c\xd0\xd3\xd3\xdb\xd7\xdf?\xf0\xf1\xe3\
+\xa7\xcf_\xbe\xfc\xbc?\x85FgH2Y\xd2l\x19\
+Yy\x05E%\x15U5u\x0dMm\x1d\x8e\xae\xde\
+(}\x03#c\x13\xd3\xd1\x5c3s\x0b\xcb1V\xd6\
+66\xb6v\xf6c\x1d\x1c\x9d\x9cG$~\xa5\x10\x0f\
+\xc3w\x8cY\xb3\xe7\xcc\x9d\x17\x1a\x1a\x16\xce\x8b\xf8\xe1\
+\x91\xf0\x0bH\xda\xdfE\xd6\xfdB\xf2}&\xbe\x93\xfc\
+\x93\x89\x98dd(J\xcb\xee\x95\x97\xdf\xff\x95\xa4\xae\
+\xfe\x89\xd8\xe3\xf9\x8b\xe6\x97\xaf^\xbfii}\xdb\xd6\
+\xfe\xee\xaf\xf7\x1d\x1f:\xbb\xba{z\xfb\xfa\x07>~\
+\xfe2\xf8uh\xf8\x9b\x08\x10\xff\xfb\x00@\xb7\x03\x0e\
+'\x003\x98@\xe0!`{1`\xe4\x04\xa8t\x01\
+\xfe\xd2@\xa0\x03\xc8dk\x90\x91\x91 U\x98\xa0\x10\
+\x00\x09\x80\x00\x05tHB\x06\xca\xd0\x81)\xec0\x0e\
+\x81\xe0#\x15\xeb\xb1\x0f\x17Q\x89\x16|#\xd4\x09{\
+b:\x91Ll%\x8a\x89\xa7\xc47\xd2\x80\xf4%\x17\
+\x92\xfb\xc9J\xf2\x0b\xc5\x84\x12B\xd9@\xb9I\xe9\xa7\
+r\xa9\x11\xd4\xbd\xd4\xa74UZ\x10m7\xad\x89\xae\
+G\x8f\xa6_\xa0\x8b$|$\xf6Ht0<\x18\xbb\
+\x18\xbd\x92~\x92g\x98l\xe6\x02f\x03\xcb\x8bU(\
+\xa5-\xb5I\x9a\x94N\x93\x1e`'\xb3\xfbdRe\
+\x86e3\xe5\xe4\xe4\x0e\xca\xdb\xc8W(\x84+|S\
+\xdc\xad\xa4\xaftJ\xd9J\xf9\x9a\xca\x04\x95\x1a\xd5p\
+\xd5~\xb5u\xeaZ\xea\x175|4Z5\x97i\xa9\
+h\x15k\xfbkw\xea\xe4pl8\x8d\xba\x19z\xa3\
+\xf5\xaaG-\xd5\xb7\xd0o2\xd8h\xe8b\xd8it\
+\xd08\xc8\x84mRj\x9a>\xdak\xf40\xf7\xba\xd9\
+\x0as\x0f\x0b\x9aE\xa5\xe5\xb61s\xac\x8c\xacz\xad\
+o\xda\xe4\xd8\x86\xdb\xd9\xda\xb3\xec_\x8f\xbd\xe2\xb0\xd9\
+\x91\xef\xe4\xe2\xac\xe5\xfc\xcd\xa5\xd9\xf5\x86\xdb\x01\xf7\x0c\
+\x8fH\xcf)^\xd6\xe38\xe3e\xc7\x0fywO\xa8\
+\x9fxo\xd2\xed\xc9%Sn\xfb\x94\xf9V\xfa=\xfa\
+\xad\xce\xbfi\xea\xbb\x80\xaf\x81r\xd3\x8df8\x07\x05\
+\x06\x0bB\xb2g\x9e\x99U3[4\xd7b\xde\xbc\xd0\
+\x9c\xb02\x1e\x19\xe1\xc6_\x12y5\x9a\x12\xe3\x1f\xbb\
+w~w\xfc\xe4\x84<\x01\x16\xf0\x92\xca\x84\x96)\xfb\
+S\xe5\x16\xadMc,Y\xbetp\xf9\xca\x95\xccU\
+[3tV_\xca\xf4\xc9j^\xb7d\x83\xd6\xc6\x92\
+M\xc1\x9bE\xb9\xa7\xb7\xce\xda.\xb1\xe3\xcc\xae]{\
+\x8a\xf2_\xef\x97=\xe8|Xp\xf4\xd8\xb1\xfa\x93\x92\
+\xa7'\x9d\xcd.,=/*\xf6\xba\x94~\xa5\xf2\x9a\
+\xec\x8d\xa0[Gn\xf7\x97z\xdc\xcb\xbd\xff\xf2O\x87\
+\x87\x1b\x1e\xbd\xa9\xb1\xad\xdb\xf2\xa4\xb71\xa0\xe9r\xb3\
+\xda\xab\xb47/\xde\xfa\xb7\x97\xbc\xb7\xfeP\xd0m\xd4\
+\x9b7\xa0\xf4i\xd7\xa0\xee\xd0S\x91\xe8G\xff\x99\x90\
+\x81\x0at\xc1\x85\x03&\x22\x04\xb1X\x8a\x1c\x14\xe0\x1a\
+\xea\xd0E0\x09c\xc2\x9b\x88 V\x13\x05D\x05\xd1\
+E*\x93\xaed4\xb9\x85\xbcAvP4)\xbe\x94\
+\x15\x94\x0b\x94v*\x87\x1aL\xddB}Hc\xd3\xfc\
+h\x9bi\xb5t\x0dz8\xfd4\xfd\xb3\x84\xb7\xc46\
+\x896\x863c\x1b\xa3Sr\x8a\xe4\x09&\x8b\x99\xc0\
+\xacgy\xb0\xceJiIeK\x13\xd2\x8b\xa5\xfb\xd9\
+\xc9\xec>\x99\x852C\xb2k\xe4\xe4\xe4\x0e\xfc\xcf\xee\
+\xfbj\xb4j.\xd7R\xd1*\xd6\x9e\xaa\xdd\xad\xb3\x85\
+c\xc7y\xae\x9b\xa9g\xa1\xf7dT\xba\xbe\x9d~\xab\
+\xc1\x0e\xc3\x89\x86_\x8d\xce\x19G\x9a\xe8\x984\x9a\xee\
+\x1e\x1d\xc2U\xe2>3;h\xce\xb7\xe0Z|\xb4\xbc\
+=&\xc7j\xae\xb5\x99\x0dl\x9e\xd8\x9e\xb4\xcb\xb4\x0f\
+\x1f\xeb\xea\xa0\xee\xf0\xd1\xb1\xd6\xe9w\xe7|\x97\x0c\xd7\
+X\xb7\x00w'\x0f#Oy/x\xf5\x8e\xeb\x19\xff\
+\xca\xbbi\xc2\x83\x89w'\x95L.\x99R\xe2s\xc7\
+\xb7\xdc\xaf\xf2\xb7*\xff\xda\xa9\xcd\x01\x9d\x81\xc4t\x85\
+\x19\x06A\xf6\xc1\xfe!\xd13\xd3g\x1d\x98]:\xa7\
+k\x9eF\xa8{Xt\xf8.^=\x9f\x15\xe9\x12\x95\
+\x16}=\x16\xf3\xc7\xc7\xe5\xc4\xbfH4\x17\xa4/h\
+H\xb6\x12\xe6\xa6\xf4\xa7\x86,\xba\x95f\xbad\xff2\
+\x85\xe5\xd9+\x99\xab\xb22(\xabWe\xb2\xb2\xf2\xd6\
+\x19\xaf\xbf\xbc\xd1/\xfb\xfd\xe6\x0d\xb9F[J\xb6\xf1\
+v(\xee|\xbe\xfbI>}\x9f\xcd\x01\xfe\xa1\xddG\
+\x1e\x1c\xa3\x9cp<\x15\x7f\xe6\xf4\xb9\xb6\xf3\xdc\x8b)\
+\xbf\x17_\xfer\xd5\xf9\xfa\xea\x9b\x8fnk\xdd\x0d+\
++*\x1f\xaa\xf4{\x90_\xf5\xa1\xda\xb3vg\xfd\xdb\
+\xa7\xf6\xcfr\x9e\xb7\xbet{\xbd\xa3\xe5C\x9b\xef\xbb\
+\xfd\xef\xbft\xce\xe8\xbe\xde\xa77\xb0\xf6S\xd7\xe0\x9c\
+\xa1\xee\x91\xfe\x93`A\x16\xca\xe0\xc0\x1c.\xf0C8\
+R\xb1\x09\x05(\xc1\x0b\x0c\x13\xda\x84;\x11A\xac#\
+\x8a\x88&\x92A\xda\x91Q\xe4N\xb2\x92BR\x9c(\
+)\x94\x22J7\xd5\x8a*\xa4\xfeA\xa3\xd0\xfchy\
+\xb4\xf7tW\xfa6z\x87\xc4\x04\x89\xa3\x0c:#\x96\
+Q-\xe9*y\x86\xa9\xc3\xdc\xc1\x92eeKIK\
+m\x96V\x92>\xc4\xb6f\x97\xc9\xcc\x91\xf9,\xbb]\
+\xceN\xaeI>K\xc1N\xa1]1_\xc9K\xa9Y\
+y\xad\x8a\xb9J\x83\xea\x1a5;\xb5v\xf5|\x8di\
+\x9aL\xcd[Z\x8b\xb5m\xb4\xbbu\x0a9\xc9\xba\x8e\
+z\x14\xbd{\xa3r\xf5C\x0d\xcc\x0d\x86\x0d+\x8d\xf2\
+\x8c\x13L<MUM{FWr\x0b\xcc2\xccC\
+-\xdc,9c\xa8c\xda\xac*\xac\x0bm\xf6\xd8\xa6\
+\xdb\xc5\xdb\xcf\x1e;\xd9\xc1\xdeQ\xcfI\xc6\x99\xe2<\
+\xe8\xd2\xed\xda\xe2\xd6\xe0^\xe3Q\xeeY\xe2uk\x5c\
+\xe9\xf8R\xef\xb2\x09w&\xde\x9dT9\xb9fJ\x93\
+O\xbbo\xbf\x9f\xc8\x9f9U%\xc0d\x9a[`\xd0\
+\xf4\x84\x19k\x82\xf6\x06_\x09i\x9c9<[g\x8e\
+\xdb\xdc\xb0yY\xa1\x85aM<F\x84-\x9f\x1f\xb9\
++\xaa*\x86\x11;~~F\x5cI\xbc(\xd1U\x90\
+\xbe\xe0~\xb2\x8204\xa5(\x95\x5c\x14\xb8\xf8\xe4\x12\
+ri\xc8\xb2\x8b+\xd4V\xa6\xadj\xc8\xf0\x5c}.\
+S#k\xf5\xda\xee\xf5\xbc\x0d\xd5\xd9\xde\x9bn\xe68\
+\xe6^\xd9\xea\xb0\xed\xea\x0e\xd7\x9d\xa5\xbbg\xec\xe9\xc9\
+\xdf\xba\xcft\xff\x83\x83\x89\x87\xe5\x8f\x5c-\x88<\xce\
+:Qx*\xe1\x8c\xce\xd9\x87\x85\xcb\xcf[_\xe8*\
+>})\xe6\x8a\xe9\x1f\x8d\xd7\xf2n\x04\xddR,\xa9\
+\xbd\xb3\xbdt\xfa=\xa5\xf2\x9a\x8aM\x7fNy\xc8\xac\
+*{\xbc\xa8\xc6\xaa\xb6\xbd\xfe`Cp#\xfb\xd9\x8d\
+\xe7\xf3\x9b\xd5_V\xbc\x16\xb6\xa8\xb6\xdeh\x8b}\xc7\
+\xf8\xebP\x87\xf7\x87\x97]Kz\x94zO\xf4;\x0c\
+T|\x9a\xf5\xb9cp\xed\x90\xeap\xa3H\x04\x88\xdf\
+\x8b\x00\x00Z\x8co\x18\x0f\xff\xe7\x88\x8fK\xf9\xbe'\
+\x09@\x8a\x9f0}\x1a\x00\x06\x00c\x81\xd0?\xf0{\
+\x8e\x18\xf8\x22\x0c<\xf1;\x15\x00\xe8\xb2@\xbe\x11\x00\
+\x5c\xf6M\xfa\xaf}\x85\xfcEB\x00\xf0J\x14,N\
+\x8a\x89\x8a\x16r<\x04\x828>\xc7+1^\x90\x22\
+\xe4'q9\x93\x12x\xe6\x5c\x8e\x95\xa5\xa5-\x00\xfc\
+\x07\x8f\x08\x91L8\xcf\x9b\xb0\x00\x00 \x00IDA\
+Tx\x9c\xed}y\x9c\x5cU\x9d\xef\xf7\xdc\xa5\xf6\xad\
+\xbbz\xdf\x93\xce\xbe\x07\x0cc\x10\x95\x00\x03\x08\x88\xe8\
+\xa0\xbe,\x84\x04\xf8\xa08\xce<\x9e\xcb\x88\x06\x12\xc0\
+\x91y\xbc7\x8e\xa3\x83\xdbg\x06\x01\xc5\x04d\x10|\
+\x82Q\x90@p\x09\x88\x06!\xa1\x93\xd0\xdd\xe9\xee\xa4\
+\x93\xde\xbb\xab\xba\xba\xd6[u\xef\xfb\xe3\xdcs\xb7\xba\
+U]\xd5I $\xf9}>\xf7S\xd5\xb7\xef\xbd\xe7\
+\xdc\xf3\xfd\x9e\xdfv\x96\x22\x00\x88\xa2(\x0a\xce\xc9Y\
+)\x1c\x00\x10B\xc8\xbb]\x91s\xf2\xee\x08Q\x0fM\
+\xcei\x83\xb3K8\xeb\x89s\xda\xe0\xec\x92<\x02\x00\
+\xe7Hp6\x89-\x01\x80s$8[\x84+f\xf2\
+\x09!\xe4\x89'\x9e\xe0\xdf\xc1\xfa\x9c\x93wX\x88\xa2\
+(\x04\x00\xac\x1d~\xdb\xb6md\xf1\xe2+\x9c\x92+\
+\xed\x05\x17\xcf\xad\xbb\xfa\xea\x89w\xa5\x86\xe7\xe4\x94\x8a\
+F\x00@'\xc1\xb6m\xdb\xc8G?\xfaQ\x17\x17\x08\
+xG\x06\xc6}S\x93R \x97\xcb\xa4>\xf9\xb1K\
+\x0e\xbdk5='\xa7DL\x04\x00\x80'\x9ex\x82\
+[\xb4\xe8\xc3n\xb7[\xf1&ri\x1f\x0790>\
+6\x15\x1c\x1d\x9f\x08)\x8a\xa2\x1c\xed\x8e\xff\xfa\x1f\xff\
+\xf1#\xe9w\xab\xc2\xe7\xe4\xe4\x0a\x01%\x01\xfb\x9b\x03\
+\xe0\x89\xc7\xe3\xde\xc1\x89\x84\x1fr6\x90M\xe6\x82\x92\
+\x92\xabH'S\x15\xc7\x87F+r9\x85\x83$o\
+\xbf\xee\xba\x0f\x1d=\xa9\x159A\xa7\xf3\x5c\xfebf\
+\xa2%\x82^|Q\xe1/\xbe\x18^\x00^\x00~\x00\
+\x81\xe3\xc7\xc7BYE\x0e%\xe2\xe9\x0aE\xc9V\xa6\
+R\xd9\xca\xc1\xe1\xb1j)+\xb9\xb9\x1c~p\xcd5\
+\x17\xbd4\xa3B\x8b\x83=\x13\x22\xd8\x82\x7f\x8e\x14\xd3\
+\x0b\x01@\xf6\xef\xdf/z\xbd^OMM\x8d\xd7\xe3\
+\xf1\x04\x00\x04\x00\x84\x00\x84\x86F\xa3\x15R&S\x99\
+\x88\xa7\xc3\x92\x9c\xab\xcaf\xe5\xea\xa1\xa1\xd1\xea\x8c$\
+\xd5\xc8P\xfe\xf5\xda+>\xf0\x1f%\x17f\x06\xde\x0a\
+4\xb19_\x88\x0cV`\x95\x02\x9f\xf4\x8fsD(\
+(\xe4\xa1\x87^t-ZT\xeb\xf5z\x9d^\xbf\xdf\
+\xe3\x0f\x85\x82\x81@\xc0\x1d\x02%@%\x80\xca\xf1\xf1\
+X8\x99\x96\xaa\x92\xc9du:\x9d\xa9V@jF\
+\xc7\x22\xd5\x89D\xca!+\xca\xc3\xd7\x5c\xb1zs\xc1\
+\x02\xf2{\xbb\x11hb\xf3\xb7\xf1\x9a\xe9\xc4\x08\xacl\
+9g\xfd\x9b\xfeq\x8e\x0c&\x11\x1c\x8e\x98/!\x87\
+|.\xde\xe9Oe3\xa1\xc9\xc9\xa9@\x0e\xb9\x8a\x8a\
+\x80\xaf\x02@\x18@\xb8\xb2\xd2_\x15\x9dLTs<\
+\xaay\x9e\xab\x89\xc7S\xe1p8$\x8aB\x0c\xd1X\
+|\xd3\xb3\xcf\xedi\x93\x12\xe9\x8f_w\xdd\xc5\x11\xa0\
+ \xe8V\x809\x9b\xff\x99\xce\xbf\xf5V\xd7EZE\
+\x85\xfc\xca?\xf5\xd4\xb3o\xdeq\xc7\xff\x8c\x80\x82\xac\
+\x80\x82\xce\x00fe\xb1\xf3\x00\xa0\xb0\xba\x9d#\x02\x15\
+\xf2\xe0\xcf~U\xed\x17\xf9\xc6\xc6\x86\xba@(\xe8\xaf\
+p8\x5cA\x97\xd3Q\xe9p\x88\x955U\x810\x80\
+jv$\xd3\xd9\x9a\xc9\xc9\xa9\xcatF\xe2c\xb1\x04\
+dYF<\x91D$:\x05YV\xfe\xaa(\xd9\xcd\
+\xd7\x5cq\xd1\x1b\xc6\xe7\xc3\x0c4g\xf7\xf9\xd4SO\
+\xb5\xae\x5c\xb9\xeaC\x1e\x8fw\x89\xd3\xe9Z\xeat:\
+\x96p\x1c\x17,Zq\x03\xc5dY\x8ef\xb3\xd9}\
+\xe9t\xea\xf7\xd1h\xf4\xcdg\x9eyn\xf7?\xfc\xc3\
+-\x11P\xe0\x19)\xac\xc79\x12@\xedu?yr\
+g\x9d\x87w\xbf?\x14\xf6W\xd4VUV\xb8\x9cb\
+\xa5\xdb\xe9\x0a;\x5cbUUe\xa0\x1a@\x8dz\x84\
+\xa4\xac\xc2E\xa31HR\x0e\xe3\x13Q\xe4d\x05\x19\
+I\xc2\xe8X\x14\x8a,G2r\xf6\x13\xd7]y\xd1\
+n\x14\x00\x1b\x00\xb7z\xf5U\x95\xb7\xdf\xfe\xf9\x0f\xae\
+Zu\xde\xd5UU\xa1%N\xa7s\x89\xa9R'\x98\
+\x84&\x04\x90$i_,\x96\xf8\xe9\xbe}\x7f\xfe\xe5\
+e\x97]\xd6\x033\x194Mq\xb6\x93@S\xcb;\
+~\xfe\xfc\x5c\x87\xc3yeE\xc0__\x13\x0eU\x89\
+\xa2P\xe5\x0b\xb8k\x04\xc2WWV\x85j\x04\x0e\x01\
+vm.\x07\xc4\xa6\x12\x90\xb2Y\x8c\x8cE \xa5%\
+\xc8\x8aB\x09\x91\x95\x91\xc9H7\x7f\xf4\xaa\x0f<\x0a\
+\x0a:\x07\x80\x07\xc0m\xdd\xfa\x1f\x1b\xd6\xac\xb9\xf0\xea\
+\x05\x0b\xe6|$\x14\x0ah\x95\xe0\x0a\x8eH\xd8Tx\
+\x06\xe4\x90$i\xdf\xd8\xd8\xd8}--\xf5O#\x9f\
+\x08\x00\xce^\x22\x98\xe6\x03\xfc\xecg\xbfmp\xfa\x5c\
+_u:\xc5\x96\xc6\xba\xeaj\xd1!\xd6\xf8\xbc\x9e\x1a\
+\x87C\xf0\x05\xfd\x1e8\x1c\xba!V\x14`2\x96\x80\
+$e119\x85\xf8T\x029Y\xc1\xd4T\x02\xe9\
+T\x06\x99l\xfa\xd1\x8f^\xf9\xc1\xcf\xad^}U\xe5\
+'?\xf9?\xfe\xfe\xa2\x8b.\xb8u\xee\xdc\xd6\xa0\xd3\
+\xe9\xccK;\x17\x93\x93I\x8e\xe1\xe1\xa1\xdb\x9a\x9a\xea\
+~\x0c \x87|\xf3pV\x92 oB\xc8\x8e\x9f\xbf\
+0\xdb\xe7r\xdd\xebp\x88\x1f\xa8\xae\x0e\xd5\xb8\x5cN\
+w0\xe0\x87(\xf2\xb0#\xc1T2\x83lF\xc2x\
+d\x12\x93\x93q@Q0\x95L!\x95L\xa3\xaf\xbb\
+\x7f\xff\x82\x05s\x9a\xcf?\x7fqQ{n\xaa\xd0)\
+&\xc7\xc0\xc0\xc0\xe7Z[\x1b\x1e\xc19\x12\x00(0\
+#\xe8\xd1\x9d;\x03A\x12|^\x10\x84\x0b\xeak*\
+\xe1p\x88\xf0\xfb=p\xbb\x9cp\xba\x5c\xf0{\x1dT\
+\x7f\xaaM\x95IKH\xa7%\xc4\xe2\x09\x0c\x8fL \
+\x16\x9dB,\x9a\xc0E\x17\x9d\x07\xa7\xd3axz>\
+b\xe5\xa8\xf4\x93E\x8e\xd1\xd1\xe1\xaf56\xd6~\x07\
+\x94\x049\x18\xfc\x82s\x0404\xc03\xbf\xd9\xf3\x90\
+\xc0\xf3\x9bB!?\xbc\x1e7B!\x1f<n'\x1c\
+\x0e\x11\x1e\x97\x8b\xe2)\xd3\xd6\xcb\xe6\xb2\xc8\xa4%\xec\
+\xdb\xd7\x09\xbf/\x80\xf6\xf6f\xfb\x02\x0bb\xf8\xce\x92\
+#\x91Hl\xaf\xa8\xf0~\x06@\x16g1\x09\xc8t\
+\xef\xfa\xecs\x7f\xfc\x16G\xb8\xdbC\xa1\x00\xbc^7\
+<n'\xc2\x15Ap<\x07\xaf\xc7\xad_\xa8(\xf8\
+\xfd\x1f\xfe\x8a\xb6\xd6f\x84\xc3\x15\xda\xe9\x13\xb7\xe1\xf6\
+\x0f8\x19\xe4H&\x13\xdb++5\x12\xc8\x86\xe3\xac\
+!\xc1\xb4\x04\x00\x80g\x9f{e\x13\xc7q\x0fy<\
+N\x84\x82\x01\xb8]\x0e\x84\xc3\x01\x88\x9c\x00\x97\xdb\x01\
+I\xcaa\xd7\x0b\xafa\xf5\xea\x95\x16\x95o**\xef\
+\xcc\xe9@\x8eD\x22\xb1\xbd\xaa\xcaw\xd6j\x82\x92\x08\
+\x00\x00\xcf\xfc\xfa\x95\x8by\x9e<\xe5\xf6\xb8BA\xbf\
+\x17N\x87\x88\xfa\xba*\xf0<\x87\xdf\xff\xeeu\x5cp\
+\xc1\x0a8\x1c\x85\xc0W\x0b+\x08\xcc\xbbK\x0e\x0b\x09\
+\xce*MP2\x01\x08!\xe4\xc9\xff\xb7{\xa5\xd7\xed\
+zA\x10\xc5Pe\xc8\x07A\x14q\xac\x7f\x10\xcb\x96\
+,\x80\xcf\xe7\xb5\xbb\xab\xf4\x8a\x9cdrd\xb39d\
+\xb3\x12\xdcn\x97\xcd\x7f\xf3\x1f\x10\x8f'\xb6\xd7\xd4\x9c\
+}$(\x87\x00\x1c\x00\xee\x1b\xdf\xf8v\xc5y\x17\xac\
+\xfa\xad 8\x96\xc5\xa2SX\xbcp.jk\xab\xa7\
+\xb9\xd7\xf6l\xe9\x95,\x93\x1c\x03\x03\xc7\xd1\xd3\xd3\x83\
+l6\x87E\x8b\x16\xa2\xaa\xca\xbe~\xd6\xe7R\x12\x04\
+>\x0b@\xc2YB\x82\x92\x08\xa0\x0e\xa0\x10\xd0\x8c\x1e\
+\xff\x99\xcf\xfc\xaf\xf0e\x97_\xb3\xb3\xa6\xaaj\xe9\xb2\
+e\x0bm\xae/\xa3\x02'\x91\x1c\x83\x83\x14\xf8T*\
+\x0dB\x088\x8e\xfes\xfe\xfcE\xa8\xad\xad-Is\
+$\x12\x89\xed55\x01[\x9f\x008\xf3\xf2\x04\xd36\
+\x89\x01|-\xad\xdb\xdb{XLL%C\x0b\x16\xb4\
+\x83\xb6\x87\xf9P\x14\x05\x8a\x02\xdb\xc3*\xf6\xd7)\xb6\
+\xcf\xb5\x9b\xf7\xa1(\xc0\xc4\xc4\x04\xf6\xee\xdd\x8b\x8e\x8e\
+\x8e<\xf0C\xa1\x0a\xd51U \xcb\x0ad\x19\xb6\x07\
+\x13\x8f\xc7\xb3nxx\xf2\x87\xdf\xfc\xe67\xc3\xa0\x84\
+7\x8ec\x9cq\xd3\xe5m\x06Y\xa9\x18^\x945\x00\
+\xaf^/\x5cy\xe5'\xbe\xbat\xe9\x82fQ\x14\x01\
+\xd8\x03\xcb\xc0\xb26\x17\xbd\xd6\xbe\x0d\xed\xaf-\xfc\xdc\
+\x89\x89\x09\xf4\xf6\x1eF$\x12\x01!\x00!\x9c\x06\xbe\
+\xcb\xe5F{{;*+\xab,\xcf\xb2\xaf\x17%\x01\
+=\xe9ry\xd6m\xde\xfc\xb9\xa5\x92$]u\xc7\x1d\
+w\x8c\x81j\x035\xebA\x87\x94\xcf\x14M`K\x80\
+\x02\xe0\xf3\x00\x84M\x9bno\xaf\xad\xad\xbf\xb5\xa5\xa5\
+\x11\xb2\xb1\xeb\xa8\xc2Y\xf4\xec\xa9 G2\x99Do\
+o\x0f\x06\x07\x8f\xab1>\xc7\xea\x0dQ\x14\xd1\xde\xde\
+\x8e\xda\xda:SY\xec\xb9\x91\xc8\x04B\xa1\x8ai\xeb\
+%\x08\xc2\xd2[o\xfd\xc7_\x01`$\xc8\xa9\x17\x9d\
+Q$(\xa8\x01\x90?IC\x00 \xaeZ\xf57_\
+\x993\xa7Uk\xc0\xfc\x9e\x94O\x0a&'J\x8ed\
+2\x85\xde\xde\xc3\x18\x1c\x1c\x00!\x04\x84\xf0\xea\xb5\x14\
+\xf8\xc6\xc6F466A\x10\x84\xbcgG\x22\xe3\x9a\
+\xb6\xa8\xafo\xc0\x82\x05F\xdf\xc5\x5c\x18\xbb\x97\xe7\xc5\
+\xa5\xb7\xdc\xa2\x91`\xd4\xf8\x9a8CH\x90G\x00\x83\
+\xcd\xcf\xeb\xfd\x1b7~f\xb6\xcf\x17\xf8Tmm\x8d\
+v}\xb1\xd7?Y\xe4\xc8f\xb38r\xa4\x0f\xc7\x8e\
+\xf5#\x97\xcb\xaa\xea^\xab/\xea\xeaj\xd1\xd2\xd2\x06\
+\x97\xcb\x9dwo$\x92o&\x86\x86\x86\x90H\xc4\xb1\
+t\xe9\x0a\x08\x82\x00@)\xe8\xb8\x8a\xe2\x99M\x82\xe9\
+4\x80\xd1\xf6\x8b\xef\x7f\xff\x9a/\x07\x83>\xb8\xddN\
+\xd8\xbd\xb3\xd5?:\x19\xe4\xe8\xed\xedA\x7f\xffQd\
+\xb3Yp\x1cQ{>%K(T\x81y\xf3\xe6\xc3\
+\xe5r\xa9\xe5\xe9@\xeafb\xc0t\x0f@\xe0r\xb9\
+\xd0\xd0\xd0\xa4\x82?]]\x15\x88\xa2\xb0\xf4\xe6\x9b\xff\
+\x81\x91`\x1c\xd4'\x00\xce\x00\x12\x98\x08`\xb1\xfdF\
+\x02\x88\x1f\xf8\xc0\x9a\xaa`0x}\xb1\x98\x7f\x9au\
+\x86\x96k\x0bW\x8a\x10`pp\x00\xbd\xbd\x87\x91J\
+\xa5\x00\x10\x0d|\x00\x08\x06ChmmC \x10\xc8\
+\xd3\x1c\x89\x04\x05~hh@+\x97i\x0cA\x10\xd1\
+\xd8\xd8\x84\xd6\xd6VC}\xa7\xf79\x14\x85j\x02\x03\
+\x09\xc6\x0c\x97\xbe\xa7I`\xa7\x01\xac\xe0\x0b\x00\xc4\x8f\
+~\xf4\xfa\xab9\x8e\x83\xdf\xef\xcb\x03\xba\x94\xc8\xa8T\
+r\x8c\x8c\x8c\xa0\xab\xebm\xa4\xd3\x14xB85~\
+'p:\xddhmmCmm\xadv=\xd3\x1c\xb9\
+\x5c\x0eG\x8f\x1e)\xa0-\x08Z[\xdb\xd0\xd0\xd0h\
+\xe3\x1f(\xc8f\xb3\x98\x9a\x9aDEE\xa5\xa1\xbe\xac\
+)t\x11\x04q\xe9\xe6\xcd\x9f\xdf\x09\xe0#g\x0a\x09\
+\x8a\x11@\xb3\xfd\x00\xc4\xea\xea\xba\xcb9\x8e\xd3\xd4\xad\
+Q\xca\xe9\xf9v\xa2(\x0a\x22\x91\x09\xf4\xf4\xf4 \x1a\
+\x1d\xd7@c!\x1d\xcfS\x07\xaf\xb5\xb5M\xbd\xde|\
+?3\x13\xb9\x5c\x16FmA\x08\x87\x9a\x9aZ\xb4\xb6\
+\xb6\xc1\xe9t\x02\xd0\x09\xc3q\x1c$I\xc2\xb1cG\
+p\xf4h?d9\x8b\xf9\xf3\x17\xa1\xae\xae\xdeX3\
+\xf5\x1d\xf43\x0e\x87\xb8d\xf3\xe6\xcf\xed\xbc\xe0\x82\x0f\
+}\xf6\x92K.\xdc\x0b\x9d%\xefI\x12h\x99@\x83\
+\xfa7\x02\xef\x04\xe0\x02\xe0y\xfc\xf1\xe7\xf7r\x1c\xf1\
+_t\xd1\xea\xa2\x0f,o\x10\x87`j*\x86\xce\xce\
+C\x88F#\x008\x8d0\x0c\xfc\x96\x96\xd6<{\xcd\
+dpp\x10\xbd\xbd\x87\x91N\xa7A\x08\xd4\xe4\x0f\x05\
+>\x18\x0c\xa1\xa5\xa5\x05\xc1`H}\x9e\xf9\xde\xfe\xfe\
+\xa3\xe8\xed\xed\xc9\xd3\x16\x8d\x8dMho\x9f3m\xdd\
+eY\x8e\xbe\xf9\xe6\xebW_r\xc9\x85\xaf\xc3<~\
+\xf0\x9e\xca\x18Z[\xd5\x1a\xffk\xe1\x9f(\x0a~Y\
+V\xa6U\xffE\x1c}\x139\x98\x9364t\x1c\x0c\
+4\xb3g_\x8f\x96\x96V[\x8d\xa3\x9b\x894\xacn\
+\x8b\xcb\xe5\xc6\xdc\xb9\xf3\x11\x0a\x85L\xf7\xb0j\x0f\x0c\
+P\xdf\x22\x93I\x83j\x0bN\x8b\x0ejj\xea\xd0\xd0\
+`\x9f\xdf\xd0\xdf\x81c\x9f\xc1e\xcbV>\xbbk\xd7\
+\x1f\xafV5\x81\xd6\x04x\x0fi\x02;\x02\xe4\x85\x7f\
+\xcb\x97\x9f_I\x08\x01\xcf\x03\xb1X\x14\x81@H#\
+B9\xea_\x96\x81\x5c.\x8b\xce\xceC\x18\x1c\x1c\x00\
+\x05\x80W\x01\xd0S\xb7\xed\xed\xed\xf0z}y\xcf\x8f\
+D\x22\xe8\xed\xed6i\x0b\xaa)\xa0\xf9\x0755\xb5\
+\xb6\xf5\x8aD&p\xf0\xe0\x01\xa4\xd3)\xb0H\x97\xf6\
+|\x0e\xa1P\x08\xcd\xcdm\x08\x06\x03\xea\xbd\xc6w0\
+\xbf\x93\x85\x1c\xc1%K\x96\x1bI\xa0\xc0\x901,\xd8\
+0\xa7\x91\x08@^~\xdb\x98\x07\xe0\x01\x08\x17_|\
+\xf9\x22\x8e\xe3\xa0(\x0a:::\xb1h\xd1\x5c\x84B\
+!d\xb3Vm`~\xb8\x11\x84l6\x8b\xfe\xfe#\
+\x16[\xcdi\xe0;\x9dn\xcc\x9f?\x1f\x81\x00\xed\xb9\
+\xc6v\x8e\xc7\xa7\xd0\xd9y\x08\x93\x93\x11\xb5\x0c\x06>\
+ \x08\x02\x1a\x1b\x9b\xd0\xd0\xd0\x08\x96\x9a6\x0a\xcd\x03\
+\xf4\xa8y\x00=\x1cd\xe9\xe2Y\xb3f#\x1cf\xe9\
+b\xa5\xech\x85\xe3\xb8\xe0\x92%\xcb\x9f\xdd\xbd\xfbO\
+W}\xf8\xc3\x17\xec\x05\xcd\x18\xb2q\x83\xd3\xde\x14\x14\
+\xd2\x00&- I\xb2\xc0\xf3\x1cdY\x86\xa2\x10\x1c\
+8\xd0\x85\xc5\x8b\xe7\x22\x10\x08\x22\x9b\xcdi7\xd3W\
+\xb5w\x02h\xde\xbe\xc7`\xab)\xf8N\xa7K\xed\xb9\
+u\xea3t\x10R)=\x96\xa7\x9aWO\xf9\x02\x04\
+55uhoo\xd7\xfc\x03c[\xa7RI\x1c<\
+\xd8\x91\xa7-\x00\xa8\xe9\xe29\x9a\xb60\xcaLBY\
+B\xb8\xe0\x82\x05\x8b\x7fe \x01\xa0\xae98\xddI\
+`$\x805\x07\xa0\x91\x80\x90\x1cGU-\x05@\x96\
+ettP\x12x\xbd\x01\xe4r9\xc3ch\xd7\xb5\
+j\x83\xaa\xaa0\xce?\x7f\x15::\xdeB&\x93\x86\
+(\x8a\xa8\xafg=\xd7\xccCI\x92\xd0\xd5\xf5\xb6\x9a\
+\xc41\x12\x86\xf6\xfap\xb8\x1a\xb3g\xcf1x\xf6\xfa\
+\xbd\xe9\xb4\x9e\x07P\xa70h\xe0\x1b\xb5\x05\x0d\x075\
+\x07\xb8\xa4\xc6*\x86#\xc7q\xc1\xb6\xb69\x7f\x0f\xe0\
+3\xd6\xc68\x9dIP(\x13h\x1c\x02%\x8aB\xd7\
+T\x12BY\xcf\x88\xc0\xccA0\x18B:-\x99\x1e\
+`\xf7\xba^\xaf\x0f+W\xbe\x0f\xc3\xc3\x83\xa8\xad\xad\
+\x83 \xf0\xea\xb52\x00\x0e\xd9\xac\xa4\x9a\x09\x96\xf2e\
+\xc0P\x10\xa9\xadn\xd5<{\xab\x899v\xec\x08z\
+{{4\xdbN\x9dK\xfa:55\xf5\x98={6\
+x^\xc8\x8bTN4\x8c\x05\x80\xa1\xa1\x11\xfc\xe0\x07\
+\x8f\xb7=\xfd\xf4o\xce\xbb\xee\xba+\xacN\xe1iK\
+\x82bQ\x801\x12\xe0x\x9eh=\xcdH\x84\x83\x07\
+\xbb\xb1b\xc5b8\x1cN\xa4R\x92\xe1\x11\xba\x18\x1b\
+\x5c\x10x444\x020\x93\xa4\xb7\xb7\x1b\xc7\x8e\xd1\
+$\x0e#\x1bS\xfb.\x97\x0b\xb3f\xcd1\xd8j\xbd\
+\x1e\xcc\xb7`\xf72m\xc1\xfe\x1f\x0c\x860w\xee|\
+m\x9c\x00(=R\xa1e\x15'G6\x9b\xc5\x13O\
+\xfc\x1a\xcf>\xbb\x1b\xb7\xdd\xb6\xee\xc2U\xab\x96\xef\xee\
+\xee\x1e\xd8\xde\xde^\x7f\xab\xf11\x00\xe4\xd3\x91\x04\xc5\
+\x12A\xdaA\x88B\x08\xe1\xc1\xf3\x0a\x14E\xce#\xc2\
+\x9bo\x1e\xc0\x8a\x15\x8b\xe1r\x89H&\xa5\xa2c\xed\
+V\x19\x1a\x1a0\xc4\xf2\xc4`\xab9\xf0<\x8f\x96\x96\
+6\x8d0\x86\xa5|\x00h\x1e\xa0\xab\xab\x13\xd9,u\
+*\xd9}\x84\x105\x0f\xd0\x86`\x90.J*\xd4\xee\
+3\x0dc9\x8e\xc3\xab\xaf\xbe\x8e\xef\x7f\xffq\xac^\
+\xbd\x02\xdf\xfd\xee6x<\x1e\x002\x9cN\xef\xba\xee\
+\xee\xa1\xe0\x8e\x1d\x8f~\xe6\xce;\xbf\xc8\x86\x929\x9c\
+\x86$\x98n0H\xfdT\x08\xc7\x11\xb5\xe7\xe5\x13\x01\
+P\xf0\xc6\x1b\x1dX\xbe|\x11\x02\x017&'\x936\
+\x8f\xcb\xcf\xaa\xa5\xd3)\xf4\xf7\x1f1\x80O\x8b\x13\x04\
+\x11\x0d\x0d\xcdhll\xd4\xcc\x04\xa0\xf7|6N`\
+$\x0d@Aq\xb9\x5chiiU\x1d<\xce\xd6\x14\
+\x99\xf3\xfc\xe5\x85\xb1\x1cG066\x8e\x1f\xfe\xf0q\
+\x0c\x0e\x8ea\xcb\x96\xcf\xa1\xad-_\xa3\x89\xa2\xfb\xea\
+\xb5ko\xdc\x09\xe0#\xa73\x09\x0ai\x00\xcbw\x1e\
+<O\x09 \xcb\xb0%\x82\xa2(\xd8\xb7\xaf\x03\xcb\x96\
+-B0\xe8F4\x9a\xb0y\x9c\xb9\x91\x1c\x0e\x17\x96\
+/?\x1f\xdd\xdd\x9d\x18\x19\x19\x04@PWW\x87\xe6\
+\xe66[\x07/\x12\x99@ww'\xe2\xf1\xa9<m\
+!\x8afmA\xcb\xb1wH\x8bE+\x85\xc8A\xb5\
+\x9d\x8c\xa7\x9f\xde\x85'\x9f|\x1e\xd7_\x7f\x05\xee\xb8\
+\xe3\xb3\x86|\x08-\xcfL\x02q\xe9\xda\xb57\xee\x94\
+$\xe9\xaa{\xee\xb9c\x14\xa7!\x09\xec\xa2\x00\xab\xa8\
+&\x80\xe67x\x1eE\x88\xa0`\xdf\xbe\x83X\xbat\
+\x01\x02\x01\x0f&'\x93\x06O\xdb\xf6\xd1\xe0y\x1e\xf3\
+\xe6-@UU5\x9cN\x17\xbc^:\xbd\xdc8\x85\
++\x12\x99@__\x0f&'#`\xaa\x9ei\x0b\x80\
+\xd3\x80\xe7y^\xed\xa5\xe6R\xec\x9b\xb9tr8\x9d\
+<\xfe\xfa\xd7\x03\xf8\xeew\xb7\xa3\xa9\xa9\x0e\xdf\xfb\xde\
+\xdd\xf0z=\x05\xc1\xa7\xa4\xa5\xf3\x22\x05A\x5c\xbai\
+\xd3\xad\xfbW\xaf\xfe\xe0UW^\xf9\x81\xd7\xa1\xcf,\
+R\x08!\xf4\xcaw\x91\x08\xc5L\x80Ih\x22\x88\xa8\
+/]\x9c\x08\xfb\xf6\x1d\xc2\xd2\xa5\xf3\x11\x0e{16\
+\x16\xd7&\x89\xe6\x8bN\x8e\xca\xcaJ\xd39\x80 \x9d\
+N\xa1\xb3\xf3\x10\xc6\xc6\xc6\x0cy~]\xe5\xd7\xd4\xd4\
+\xa3\xb5\xb5U\xd3\x16\xec\xdeb>G9\xe4p8\x04\
+D\x22\x11|\xfb\xdb\xff\x8d\x8e\x8e\xc3\xb8\xfd\xf6\x1b\xb1\
+x\xf1<\xf5\xbe\xe9\xc1gu\x22\x84\x0b\xce\x9b\xb7\xf0\
+W\xbf\xf8\xc5\xcbW\x7f\xecc\x1f2\x8e\x1d\x10\xbc\xcb\
+i\xe3\x92\x86n8\x8e\xd3\x06L\xe8w\x1el\x02&\
+\xcf\xd3C\x1fP\xe1\x01(\xd8\xbf\xff\x10b\xb18\xc2\
+a/\x00R\xd6\xcc`\x9a\xc4y\x0b{\xf6\xfcA\x05\
+\x9f^\xc7\xc0\x0f\x06CX\xb1\xe2|\xcc\x9d;\x0f\x0e\
+\x87\xb3\xac\x99\xc5\xa5\xcc\x0c\xe6y\x1eN'\x8f\x9d;\
+_\xc2M7\xdd\x89\x86\x86:<\xf8\xe07\xb0ti\
+\xf9\xe0\x1b\x93EK\x96,y\xf6\x0f\x7f\xe8\xf8\x18h\
+\xc7c\x11\x96\xeah\x97\x18o\x9ed)C\x03\xe8y\
+\x00Yfqma\x8d\xa0(\xc0[o\xbd\x8d\xc5\x8b\
+\xe7\xa1\xaa\xca\x8bH$\x0eI\xa2\xadl7\xd6\xce\x84\
+\x10@\x92r\x18\x1d\x1d\xd5F\x04\xe9y\x02\xaf\xd7\x8f\
+Y\xb3\xda\x11\x0c\x06U\xd5m\xd7iJI\xe5\xda\x9b\
+%B\x08\xdcn'\xba\xbb\xfbp\xff\xfd\xff\x85P(\
+\x80\x1f\xfc\xe0nTW\x87\x01\xd8E\x08\xa5\x81O?\
+\x15\x10B\x82\xf5\xf5\xf5\xdb\xf7\xec9\xf8\xb9\xd5\xab\x17\
+<\x02=m\xfc\xae\xe5\x0a\x8c\x04\xb0+X\x01\xa0\xf0\
+<\xaf0\x1f\x80\xcd\xae)\x8d\x08\x8aJ\x82\xf9\x08\x87\
+\x03\x18\x19\x89\x19R\xc7\xf6 (\x0aM\x18\x9dw\xde\
+*\x1c8\xf0\x16\x12\x898\x5c.\xb7\xc1\xb3\xd7\xaf\xb3\
+\x97\xc2\xf3\xfb\x0a\x91\x83\x02/\x22\x99L\xe2\xdb\xdf~\
+\x0c/\xbf\xfc\x17\xdc~\xfb\x8dX\xbdz\x85\xd6\xdb\x19\
+\xf8\xe6\xdeo.\xb7\x18\xf8:Q\x14TW\xd7|o\
+\xcf\x9e\x83PI\xa07\x06\xdey\x12\x105\xf7n\x1a\
+\xfc\x81>\x0f@\xdb5\xf4\xd5W\xdf\xdaMU(\xcb\
+\xdc15K_J\xff[1\xfd\x9f\x85N\x0b\x17\xce\
+C(\xe4\xc7\xc8\xc8$\xb2\xd9\x22\xc1\xb6\xb1r\x04\x18\
+\x1e\x1eDee\x95a>@>\xba\xe5(O\xeb\xb5\
+.\x97\x08\x87\x83\xc3s\xcf\xed\xc1\x0f\x7f\xf8\x04.\xbd\
+\xf4o\xb0n\xdd5&'\xcf\x1e\xfc\xc2\xbd\xdf|\x9d\
+\x19|\xfd<\x90H$~\xba|y\x93u=\xa2B\
+\x1f\xf1\xce\x90\xc0J\x00\x0e\x80\x08\xc0\x01\x0b\x01^x\
+\xe1\x95\x87\xfd\xfe\xc0lfW\xcb%\x02@\xb0x\xf1\
+<\x04\x02~D\x22\x09\xc4\xe3\xf9\xfbM3u_R\
+\xc5\x0bD\x15\xa5]G\x1d<\x9f\xcf\x85\xae\xae^|\
+\xf3\x9b\x0fC\x96e\xdc~\xfb&\xcc\x9a\xd5d\xa8s\
+\xf9\xe0[{\xbf\xfe\x1c3\xf8\xacm\x12\x89\xe4\xf6\x15\
++\x9ao\xc5\xbbD\x02;'\xd0\xe85i\x0b${\
+{\x0f\xbf\xc2ql\x08\x97S\xa7jq0\xae\xc61\
+:\x83Vg\x91\x10\xa0\xa3\xa3\x0b\x93\x931\x84\xc3\x1e\
+x\xbd\xce\xbc\x82\xa9\x83f\x7f\xe4U\xb2\x80\xe3gu\
+\xfat2B\x0d\xcb8\x84B\x1e\x88\x22\xc1\xb7\xbe\xf5\
+0\xbe\xf6\xb5\x7f\xc7\x9a5\xef\xc7w\xbes\x97\x06\xbe\
+^\x1fV\xd6\xcc\xc0\xb7ZU+\xf8\x8a\x02\xb8\xdd\xae\
+uo\xbc\xd1\xff\xf8\xb6m\xf7\x87aH\xbd\xe3\x1dr\
+\x0c\x8d\x04P\x0c\x9fF\xf0s\x00r\xdb\xb7\xff\xe47\
+\xb9\x5c.\xce\xf3\x14\xfc\x99\x10\x01\x90q\xe0@7&\
+'S\x08\x87=\xf0x\x0ay\xf0\xf9\x15-\x95\x1c\x85\
+\x9eG\xc7\x05\xdc\xf0\xfb]x\xf9\xe5\xd7\xb0v\xed\x97\
+0>\x1e\xc5\x0f~p/>\xf6\xb1Ka\xeclv\
+\x1d\xafT\xf0\xd3\xe9$\x0e\x1d:\x80\x97_~\x11\x83\
+\x83\x83Z\xdd\xed\x9fG\xcf;\x1c\xce\xab\xaf\xbf\xfe\x86\
+_\xab$`\xeb\x11\xd9\x9c\x82SJ\x04\xa3\x09\x00\xf4\
+Y@\x22\xa8\x1f\xe0\x86n\x06\x82\xff\xf2/\xffv\xdd\
+\x95W^\xf3y]\xad\xc9y!W)\xa6A\x10\x04\
+,X0\x07\x81\x80\x1bSS\x19\x8c\x8e\xc6\xa0\xcf\xdb\
+/\xa1\xd2e4\x07\xcf\x13x\xbdNx\xbd\x0etv\
+\x1e\xc1\x03\x0fl\xc7\xd0\xd0\x18\xbe\xf0\x85MX\xb2\xc4\
+\x1c\xd6\x19\xbf\x17\xeb\xfdv\xe0KR\x16G\x8e\xf4\xa0\
+\xbf\xbf\x9f\xd5\x12\x1c\x07\xb4\xb5\xcdF]]\x93m\xef\
+g\x04`\x0es6+\xed{\xf2\xc9G\xaf\xbc\xe7\x9e\
+\xaf\x8cC\xdf\xc0J\xad\x86rJ\xf2\x05V\x02\x18\xa7\
+\x82;@\x09\xe0\x01%\x80\x1f@\xf0\xde{\xef\xbf\xe6\
+\xdak?\xfe\x19\xb3}+\x9f\x08\x0e\x87\x03\x8b\x17\xcf\
+\x85\xcb%j$(X\xc9\x19\x92\xc3\xe3q \x10p\
+!\x93\xc9\xe0G?\xfa9~\xf1\x8b\x97p\xfd\xf5W\
+`\xfd\xfak\xf2\x1c6\xe3\xf7rT\x7f.'\xe1\xe8\
+\xd1~\x1c;vDsn\xd94v\x00\xa8\xabkD\
+k\xebl\xf59\xf6\xe0\x1b\xcb\xca\xe5r\xd1\x9e\x9eC\
+\x1f\xb9\xf6\xda\x8bY\xd6\x90icE\xbd\xee\xe4\x13\x00\
+\x80]$ \x82:\x82n\x00>\xe8$\x08l\xdbv\
+\xdfG>\xfe\xf1O\xde\xcc\x1aa\xa6D\x10E\x07\x16\
+/\x9e\xa3\x91`l,\x0eY\x96\xcb\xf4\xea\xf3\xc9\xe1\
+t\x0a\x08\x85\xdc\xe08\xe0\xe5\x97\xff\x8c\xef\x7f\xffq\
+\xd4\xd6V\xe3\x0b_\xd8\x84\x9a\x9aJ\xb5.'\x0e\xfe\
+\xd0\xd0 \xba\xba\x0e!\x9b\xcd\x19\x1cX\xfaYYY\
+\x85\xd6\xd6Yp8\xd8\xaa\xa5\xe9\xc1g\xff\xcb\xe5\xe4\
+\xe8\xa1C\x1dW}\xf2\x93\x97\xee\x85\xc1\x0f\xc3) \
+\x81\x1d\x01\xd8L`\x16\x0e\xbaa&A\x00\x80\x7f\xeb\
+\xd6\xaf_\xfew\x7f\xb7v\x13\x03z\xa6Dp:\x1d\
+X\xb8p\x0e\xdcn\x11\xe9t\x0e\x03\x03\x11\x95 \x85\
+\x13E\x85D\x10xTVz\xe1t\x8a\xe8\xef\x1f\xc0\
+\x03\x0fl\xc7\x9bov\xe2\x8b_\xbc\x09\x17^\xb8B\
+\x9b\xd0\x99\x1f\xae\x95\x07\xfe\xe0\xe0 \xfa\xfa\x0ek\x8b\
+WX]\x09\x01\xfc\xfe\x10\x9a\x9b[\xe0\xf7\x07\xa7U\
+\xfb\xf9e\xe9f%\x9b\x95\xa3\xc3\xc3\x03\xb7]~\xf9\
+yO\xc1\xac\x09\xd4\xdbN\x0e\x09\xec\xd6\x05X\xcd\x80\
+\xd1\x17`\xfe\x80\x1f\x80o\xcb\x96\xaf\xff\xed\xa7?\xbd\
+v\xa3\xd1\x03\x9f\x09\x11\x1c\x0e\x11\x8b\x16\xcd\x85\xd3)\
+ \x93\xc9\xe1\xf8\xf1\x88\xad\xe3d\xa8\xb6\xe9/\x8e\xe3\
+\x10\x0a\xb9\x10\x08\xb8\x91Lf\xf0\xf0\xc3?\xc7SO\
+\xbd\x80+\xaf\xfc \xd6\xaf\xbf\x16>\x9f\xa7 \xf8\xc6\
+\xef\xcc\x16\xeb\xd7\x99\xc1g\x13L\xe9\xa0\x14X\xbb\x01\
+ p:]hnnEuu\x8dm\xc8788\
+\x88#Gz\x11\x0a\x85\xd0\xde>\xdfT\xae\x15|Z\
+UZ\xf6\xf8\xf8\xc8mk\xd6,{\x18\xa7H\x13\x98\
+\xb6\x88\xb1\xd1\x02,'\xc0H\xe0\x03%\x01\xd3\x06\xbe\
+\xbb\xee\xba\xf7\xd2O\x7fz\xc3\x0dF\xb0gB\x04Q\
+t`\xd1\xa29\x1a\x09\x86\x86bH\xa7\xe9\x1a\xccb\
+\x8bMB!\x0f\xfc~7\x14E\xc6_\xfe\xf2\x16\xbe\
+\xf9\xcdG\xe0\xf1\xb8\xf1\xc5/n\xc6\xec\xd9\xcdZ\xf9\
+\xb4\x1ch\xe51)\xd6\xfbY\xfdb\xb1)tw\xbf\
+\x8dH\x84\x8dF2\x0dE\xe7\x19\xd6\xd77\xa2\xa9\xa9\
+E}\x8e\x19\xfcHd\x1c}}\xbd\x88F#\xda\x0c\
+\xa7`0\x84y\xf3\x16\x80\xe3\x84\xa2\xe0\xab5\xc2\xf8\
+\xf8\xe8mk\xd6,c{\x1c\xb3-n\xd5\xea\x9e\x18\
+\x09\xec\x08@ki\xd8\x11\x04zf\xd0\xa8\x09|\xea\
+\xe1\xdd\xb2\xe5\x9e\xcb\xd6\xae\xdd\xb8\x81\x02;s\x22\x88\
+\xa2\x88\x85\x0b)\x09d\x198v,\xa2\x91\xc0*\x81\
+\x80\x13\xa1\x90\x0f\x82@p\xfc\xf80\xfe\xf3?\xff\x1b\
+{\xf6\xbc\x89\x8d\x1b\xaf\xc5u\xd7\xfd\xad\xa9L\xdaR\
+Z\x8bi\xcf\x98N\xf5\xd3\xfd\x08z\xd45\x0c\xe6\x09\
+\x22\x84\x10\xd4\xd77\xa1\xa9\xa9\x19</\xa8\xcf\xd1\xef\
+\x8f\xc7c\xe8\xea\xeaTg%\xeb\xf3(\x09!p8\
+\x9cho\x9f\x0b\x9f/\x88\xe9\xc0g\xdfS\xa9\xd4O\
+\xdf\xff\xfe\xd9\xb7\xc2\xbc\xbd\xad\x82\x13$A\xde&Q\
+\x16-`t\x08\xb5eb\xd0\x89`$\xc1\xa5\xeb\xd6\
+m\xdc\xc0\x18=S\x22\x88\xa2\x13\x0b\x17\xce6\x91\x80\
+\xce5\xa4\xe2\xf18PQ\xe1\x85\xdb- \x93\x91\xf0\
+\xd8c;\xf1\x93\x9f<\x83\x95+\x17\xe1K_\xda\x0c\
+\xaf\xd7ciT\xb9l\xf0\xb3Y\x09G\x8f\x1eA_\
+_\x0fk\x15\xd66\x00\x80p\xb8\x0amm\xedp8\
+\x1c\x86r\xe8\x97T*\x89\xbe\xbe^\xdb\xa9\xec\x82\xc0\
+\xa3\xb6\xb6\x09\x8d\x8dMZY\xac\xae\xc5\xc0g\xd7\xa5\
+R\xc9\x9f\xae^=\x87\x91\xe0\xa4d\x0d\x8b\x11\x80\x1d\
+L\x0b\x18I`\xd4\x04\x8c\x08\xde\xbb\xee\xfa\xfa%k\
+\xd7\xde\xb0\x81\xd9\xf6\x99\x12A\x10D\xcc\x9f?\x1bn\
+7%\xc1\xc8H\x0c\xc9d\x06UU~x\xbd\x0e\xe4\
+r\x0a^\x7f\xbd\x03\x0f<\xb0\x03\xb1X\x02_\xfa\xd2\
+f,_\xbe\xc0F\x9d\x96\xe7\xf4IR\x16\xfd\xfd}\
+\xda\x0ac\xc08\xf1\x84N0mjjE0\x18\xb4\
+\x80\xa7 \x97\xcb\xa2\xb7\xb7\x07\xc7\x8f\xb3_\xd33\xce\
+J\x06\xea\xeb\x1b\xd1\xd8\xd8\x0c\x8ec3\xa1\xadu\x05\
+t\x02\x14\x1eLJ\xa5\xd2\xcf<\xf3\xcc\xd3\xb7\xdew\
+\xdf\x17X\xae\xe0\x844\x81\xed6q\x16\x12h{\x04\
+\x80\xfa\x03l\x9c\x80\xe5\x08\xf2H\xb0n\xdd\x0d\x1bt\
+`\xe9\x0b\x94K\x04\x9e\x171o\x1e%\x81Q\x06\x06\
+\xc6\xf0\xe8\xa3\xbf\xc4\xd3O\xef\xc2\xc6\x8d\x1f\xc3\x86\x0d\
+\xd7\x16h\xd0\xf2\x9c\xbe\xc1\xc1\xe3\xe8\xed\xedA2\x99\
+\x84\xfe\xfaT\x5c.\xb7\xe6\xe0Y\xcb\xa2S\xd9\xfb\xd5\
+\x15O9\xb5\xfd\xa0\xdd_Y\x19Fk\xeblu\xde\
+B\xbe\xd37<L\x9d\xc3\xa6\xa6VTW\xb3\xd1N\
+\xf3\xc0\x92U\xcbH\x92\xb4\xef\x97\xbf|\xea\x0a\x03\x09\
+f\xec\x18\x16\xdc'\xd0\x86\x04VM\xe0\x04%\x00#\
+\x01s\x10U\x12P\x9f\xe0D\x88\xe0v;1wn\
+;\x04\x81\xce\x11\xd8\xb5\xebU<\xf0\xc0chn\xae\
+\xc3\x97\xbf\xbc\x1955\xc6i\xe2\xe5\x83\x0f\x00##\
+\xc3\xe8\xeaz\x1b\xa9T\x12\xc6y\xb0\x84\x00</\xa2\
+\xa1\xa1\x11\xcd\xcd-\xb6=rpp\x00]]oC\
+_/\xa8\x9b\x8a@ \x88\xa6\xa6f\xd5\xce\xe7{\xfc\
+\xa3\xa3\xa3\xe8\xe9\xe9B:\x9d\xd6\xeemkkG]\
+]]\xc1\xdeO\x17\xe7\xd2\xef\x99Lz\xdf\xb3\xcf\xfe\
+\xe2\x84IPt\xa3H\x8b?`\x0d\x0fY\xa6\xd0N\
+\x13x\xb6n\xfd\xe7K\xd6\xaf\xdf\xb8\x81\xb2v\xe6D\
+\x10\x04\x11\xbbw\xbf\x8e?\xfc\xe15\x8c\x8fO\xe2\xcb\
+_\xbe\x19\x17^\xb8\x12\x85{Ii\xe0\xd3\xfd\x08\xba\
+U\xcf^{_0\x9bM\x81o\x05\xcfsy\x80\x8c\
+\x8c\x8c\xa0\xbb\xbb\xd3\x04\x1eS\xf5.\x97\x0b\x8d\x8d-\
+\x9a\xb60\x9a\x19E\x01\xa2\xd1\x09\xf4\xf5\xf5\x22\x16\x8b\
+j\xf7\xb2\xb2=\x1e\x0f\xe6\xce]\xa8\xcdr\xb2\x82o\
+~/\x19\xb9\x9c\x1c\x1d\x188~\xf9'>q\xe1\xeb\
+\xa0\xe0\xe7\xd4\xb2N\x0e\x01\xd4\x8aYM\x81\xddx\x81\
+\x91\x04>\xf6}\xeb\xd6\x7f\xbed\xc3\x06\xea\x18\x9e\x08\
+\x11>\xff\xf9\xff\x0d\x00\xf8\xd9\xcf\xbe\x85P\xc8\x0f\x14\
+\xb1\x91\xd39}\xc9d\x12\x1d\x1do\x19\x80'\x86\xe4\
+\x12\x87p8\x8cY\xb3\xda\xe1p8M\xf7)\x0a\xb4\
+\xc9\xa9\xec^=*\xd0\xc3\xc1\xc6\xc6f\xc0&\xd9\x93\
+N'\xf1\xf6\xdb\x87\xb4\xa8\xc0X\xae\xc3\xe1Fcc\
+\x13\xaa\xaa\xf2M\x0c}N>\xf8\xecoY\xceE\x07\
+\x06\x06.\xff\xc4'.dY\xc3\xb2|\x81R\xa7\x84\
+)\xd0cO\xf67}\x8bB);\x00\xf7\xde{\xe7\
+.\x8e\x03\xd6\xad\xdb\xb4\x81\xe7\xe9\xc2RYV\xb4\x19\
+E\x8a\x02\xd5)bD \x00\xf4\xff\xb3\xd0IQd\
+\x10\xc2\xe1\xad\xb7\x0e\xe2\x82\x0bV\x18\x16\x83\xd2\xaaX\
+{\x7f^\xe5\x15\x05\xc9d\x12==\x87\x0d!\x1d\xab\
+>\x00\xb0%\xe2-\x08\x04\xf4\x0c\x1e{\xcdd\x92\x8e\
+\xf0\xe9;\x8d\x99ME]\x1d\xcd\x03\xf0<\x0f+\xf8\
+\xa9T\x02}}\xbd\x18\x1e\x1eR\xcb5\x93\xa6\xb6\xb6\
+\x01uuu\xe0\xb8B\xefT\x18|@\x01\xc7q\xc1\
+\xda\xda\xfa\xe7~\xfc\xe3\x9f\xbdo\xe3\xc6O\xf5\x00\xe5\
+M2\x9d\x96\x00\x8a\xa2\xb0\x1f[d\xde&k\xe5\x1c\
+\x80\xcc4\xb7\x93\xbb\xef\xbe\xf3EE!d\xc3\x86M\
+\xeb\xa9sW>\x11\xd8\x8bOM\xc5\xf1\xa7?\xbd\x81\
+\x0b.X\xae\xc6\xde\xa5\xa9~\x80\xf6\xde\xd1\xd1Q\xb0\
+Q:\xa6\xea\x9dN'ZZ\xdaPUUkz\x1e\
+h\xd8\xa5\xe6\x01\xe8\xb0.\x03\x8f\x91\xa7\xba\xba\x16\xcd\
+\xcd-&\x95M\xebB\xf7A8v\xec(\xfa\xfaz\
+M\xf72\xd2UW\xd7\xa0\xa5e\xb6F\x1a\xd6\x0e\xe5\
+\x80\xcf\xca\xcaf3AA\xf0\xce\x02\xd0\xab\x16pr\
+5\x80\x81\x04Z\xdci\xf8\xb7d\x7f\x97.\xf7\xdc\xb3\
+e\x17\xc7\x11e\xfd\xfa\x1b7(\x0a}\xe1r\x88\x00\
+@\x9d\x7f@05\x15\xc7k\xaf\xbd\x81U\xab\x96k\
+!U)v\xbf\xb6\xb6\x01^o\x00\x87\x0eu \x1e\
+\x8fC\x14y\xd4\xd55\xa3\xa5\xa5%ox\x97\x8e\xf0\
+\xd1-d\x98\x92\xb3\x86\x83\xcd\xcd\xadj\xbe_6\x01\
+\x22IY\x1c?\xde\xaf\xaeU\xcci\x93a\x14\x85~\
+\x06\x02!\xcc\x9a5G31f\xd2\xe9R*\xf8\xb4\
+\xcc$$)\xa3\xedg\x5c\x8e\x94<+\xd8\xa2\x09\xac\
+\xbaV\xb1\x14\x9eW\x91m\xdb\xbe\xf6\x22\xa0\x90\x1bn\
+\xd8\xbc\x9e\x86_\xa5\x13\x81\xe3xu\xfa9\x0fYV\
+05\x95\xc4\xde\xbd\xfbq\xdeyK\xb4\xa2J\xf1\xf8\
+\xbd^/\x96-[\x89\xa1\xa1\x01\xd4\xd4\xd4i\x0bI\
+\x18\x08t\xa7\xb1>\xf4\xf7\x1fA.'\xe7\xf5Z\x97\
+\xcb\x8d\xb6\xb6\xd9\xa8\xa8\x08\xab\xcf77\xc3\xe0\xe0\x00\
+\xfa\xfaz\x0d;\x9c\xe9\xf7z\xbd~\xb4\xb6\xce\x82\xdf\
+\xef7i\x99B\xbe\x8c\xb9\xed\x8b\x0f&\xa5\xd3\x09\x16\
+\x822\x93\x5c\xb2\x19(\x99\x006b%AF\xab\x9d\
+.&\x22l\xdb\xb6e\x17\x00l\xdc\xb8y=u`\
+J#\x02\x9da\xc4\xab3\x8c\xe8\xb3&'\xa7\xd0\xd1\
+\xd1\x89\xa5K\x17h\xe3\xf0\xa5d\xfax^@CC\
+c^C\x0f\x0d\xd1<@*\xa5{\xf6\x00\x1d\x87\xe0\
+y\x11\xcd\xcd\xad\xa8\xabk\xb0\xed\x91\xd1\xe8\x04\xde~\
+\xfb\x00\x92\xc9\xb4\xc1G`\xa4\xa1QA8\x5c\x8b\xe9\
+2}\x85T\xbfU\x8c\xef\x94\xc9$\x91\xcdJ\x90$\
+I[c`\x7f\x97\xbd\x94E\x00\x8b\x16`&\xc1Z\
+ \xb1|\x9a\xbeo\xdbF\xcd\xc1\x0d7l\xde`\x9c\
+^^\x8c\x08\x82\xc0\xc0\xd7\xa7\xa0\xf3<0::\x8e\
+\x03\x07\xba\xb0p\xe1\x5cH\x92>f0]\x8e_o\
+h:Xs\xf0`\x87\x01x\x98\xc6\xf6\x19\xf0</\
+\xe4\x81\x1f\x89D\xd0\xd7w\x18\xd1(\x0d\xe9\x8c>\x82\
+ \x88\xa8\xabk@mm\x03\x04A0E'\xe5\x80\
+o\xd7\xfb\x8d\x92\xc9\xc4!\xcb\x0a$I\xb6\xb6\xf7\xc9\
+q\x02\xadR\x80\x04y\x97\x15{\xc6]w}\xedE\
+EQ\xc8\xc6\x8d7\xad\xb7\xae3\xb0#\x02\xb3\xff\xc6\
+\x06f\xfe\xc1\xd0\xd00\x08\x01\x16,\x98\x03I\xca\x95\
+\x05~*\x95DWW'2\x99\xb4a\x16\x0f-\xa3\
+\xa6\xa6\x0eMM-p\xb9\x5c\xa6\x04\x8c\xa2\xc8H\xa5\
+R\xe8\xee\xee\xc4\xd8\xd8\x08\xcc>\x02\x00p\xa8\xae\xae\
+Ak\xeb,\xc3 \x91\xb5\x0d\x8d\x9f\xe5;}\xfa{\
+)H$\xe2\xc8\xe5d\xa8\xbb\xd7\x9e:\x1f\xc0(6\
+\x91\x81\x9d\x14RG\x04\x00\xd9\xbau\xcb.\x80\xc3\x8d\
+7\xde\xb4\x1e6\x0bN\x8cD\xe0y\xa6\x01\xf4-j\
+\x00\x9d\x08\x83\x83#\x00\x80\x85\x0b\xe7\x9av*)\x06\
+>\xa0\xc0\xe9ta\xc5\x8a\xf3\xd1\xdd}\x08CCC\
+\xda\xb2\xb3\xa6\xa6V\x04\x02A\xf5Z\xfd\xf5\x92\xc9$\
+\x8e\x1c1\x8e\x0e\xb2qj\xfa\x19\x0c\x06\xd0\xde>\xcf\
+\x10\x15\xd8\x0f\xf2\x98\xdb\x92]W\x1e\xf8<O\x10\x8b\
+E\x90\xcd\xe6\xa0(2\xb2\xba\x02<u&\xc0\x5cq\
+\x8d\x04\x80\xbd\x16\xb0\x13v\xbd\x02\x00[\xb7~u\x17\
+@\xb0i\xd3M\xeb)X\xf6D`k\x13\xd9\x1e\x05\
+vD\x18\x1a\x1a\x05\xc7\x11\xcc\x9f\xdfn;\x84l\x05\
+\x9f\xfd\xcd\xf3\x1c\xe6\xce]\x88`\xb0\x12\x1c\xc7#\x1c\
+\x0e\xe7\x81\x22It\xfb\x19:H\x9438\x87t\x1b\
+[r\xfcT\x05\x00\x00\x11\xd0IDAT\x8f\xc7\x8b\
+\xb6\xb6\xd9e\x0d\xef\xda\xa9\xf4R\xc1\xa7\xdaPA,\
+\x16\x81,\xe7\xd4\xb6\x92\xca\xb6\xff\xc0\x899\x813%\
+\x01\x13\x02\x00[\xb7\xde\xb1\x8b\xe3\x00j\x0ex\xd8\x11\
+\x81M57\x9b\x80|\x22\x0c\x0e\x8e\xc0\xe1p`\xd6\
+\xac\x16$\x93\x92Z\xc7\xfc\xaa\xd9\x01B\x07b\xf2\xd5\
+qo\xefam\xfb\x19\xa6\xeaY\xb9N\xa7\x0bMM\
+-\xa8\xaa\xaa\xb1Q\xe7\xb4\xdcr\xec~~\x1d\xed\xc0\
+\xa7s\x1eGF\x8e#\x93\x91\xb4\x0c\xab\xea\x03\xbc\xb3\
+\x04P+\xa5\x00Z\xcaX\x1b\x90(G\xee\xbc\xf3\x8e\
+\x17\x09\x01n\xbc\xf1\xe6\xf5\xb2\x0cX\x89\xc0\xf3\xbc\xaa\
+\x01x\x00\xf9[\xd4\xb0|\xbd,\x03G\x8f\x1e\x07!\
+@[[+\x92\xc9\x0c\x14%\x97\xd7\xfb\xf3\xdf\x81\x9e\
+7\x02B\xb7\xae\xe9Qw+\xd7w*\x03h}\xea\
+\xeb\x1bQ_\xdf\xa8\xe5\x22\x8c2\x13\xf0\xad\xbd?\xbf\
+\x8e\x14|\x97\xcb\x81T*\x8eh4\x02\xb6s+\xbd\
+'k\xffr\xd3\xc8\x09\x13\xc0PA\xa3_\x90\x9b\xe6\
+\xf2<\xa6n\xd9r\xc7\x8b\x00\xb0i\xd3-\xeb\x15\x85\
+\xce\x0b`D\x10\x04}\xd1\x89\xa2\x187\xa4\xa0\xaa\x90\
+9\x84ta*\x87#G\x06A\x08\x87\xb6\xb6f\xc4\
+\xe3i\xe8\xdb\xd9\xd8\xaf\xe21\x8a,+\x18\x1b\x1bA\
+WW'd9k\x99\xd4A5Ek\xebl5*\
+0\x82g\xff\xbc\x13\xf5\xf8\x8dd\xa7\x0bid\x0c\x0c\
+\x1cC6+\xc3\x98\x84\xcaM\xd7\xe2\x05\xe4\xa4\x11\x00\
+\xc8#A!\x93P(l\xc4\x96-w\xbc\x04\x00\x9b\
+7\xdf\xb2^]%\x0bYfK\xd3i>\x80\xfa\x05\
+\x80\xbe!\x05\xc0\xb4\x82\xa2@3\x1dT\x13\x10\xb4\xb6\
+6!\x1eOk\xb6R\xadiAP\x00\xba\x0f\xe1\xf2\
+\xe5.tt\xec\xd7\xf6\x14\x0e\x04\x82\x9a\x83\xa7\xbe\xab\
+\xed\xfd\xf9\xbd\xdf\xd4B3\x02\x1f\x00\xbc^'8\x8e\
+C__/\x92\xc9\xa4v\x9d1B\xb1i\xdbi\xe5\
+\xa4\x12\x000\x91\xa0\x98O`m\x1e#\x09^\x048\
+\xdct\xd3-\xeb\xe9 \x10\xcd\x00\xa6R\xa3\xeaw\xa3\
+\x83\xc8\xcc\x00\xfbM\x01\xb3y8z\xf488\x8e\xa0\
+\xb9\xb9\x11\x89D\x06\x99L\x16\xa5\xf6H\xaf\xd7\x8f\x15\
++\xde\x87\xa3G\xfbPYY\x89@ X \xb4,\
+\xc7\xee[\xdb\x8a}\x16\x06\x9f\xe7\x09|>\xba\xb6`\
+p\xf08\x22\x91\x88\xda1\x8c#\xab\xb2i\xc7\xd6r\
+\xe4\xa4\x13\x00(Y\x13h\x97[>\xb1e\xcb?\xbd\
+\x08\x007\xddt\x8b\x9a'P\x90J\x0d\x80\xe3t\xdf\
+\xc0H\x04\xa00\x11\x8e\x1c9\x06B(\x098\x0e\x16\
+\xe7\xb0x\x8f\x14\x04\x1emm\xb3\x8dU;\x01\xf0\xcb\
+w\xfa\x5c.\x01\x1e\x8f\x03\xb2\x0c\x8c\x8d\x8d\xe2\xf8\xf1\
+\xe3\xda,&\xdd\xf6\x9b\x9e\xf7\xee\xf9\x00VQI\xc0\
+\xfe4N\x99\xb1\x9f\xe6\xab\xde\xc6\x8e-[\xfei\x17\
+\xcfs\xca\xe6\xcd7oH&G\xc0\xcf?j\x88\x02\
+\xca#B_\xdf1\x08\x02\x8f\xc6\xc6:5\x01$\xe1\
+D\xd4\xb1\xfe\x8e0\xfc\xef\xe48}\xcc\xe4\xf9\xfd.\
+8\x1c4\x838>>\x82\xc3\x87{4\xe0\xd9}\xba\
+\x13X\xa4E\xa7\x91SF\x00\xa0 \x09Xu\xa7\xb3\
+W\xca\x1dw|i\x17!\xc0\xd4Td\xc5\xa4\xd4{\
+\x84\xe3\xc8U\x80\x11\xec\xd2\x89\xd0\xd7w\x0cN\xa7\x88\
+\xeaj\xfa\x9bG\xc9$\x1d\xc9.?\xfbf\xfe\x9fM\
+\xb5O\xc8\xe9s\xbbE\x04\x02n\xed\xfa\xe3\xc7\x87\xd4\
+!e\xa6\xf2e\x8b\xfa\xa7\xf7\xe5f\xe8\x05\x9eR\x02\
+\x00\x05I\x00\x14&\x80b<\xbe\xf2\x95/\xfd\x16\xc0\
+\x1e\xbc\x047\xb7\x89\x5cE\xe3\x7f\xf5ae\x10\x01\x00\
+:;\xfb@\x08\x87\xaa\xaa0DQ\xc0\xe4dB\xad\
+#\xabk\xe9\xe0O\xe7\xf4\x95\x0b>\xcf\xf3\x08\x85<\
+p8\xe8\x88g6\xab\xe0\xed\xb7\xbb022l\x0b\
+\xbcN\x08:bzZD\x01\x85\xc4@\x02c3e\
+\xa1\x03m\xba\xdcp\x98f!ut\xec\x7fm\xd1\xa2\
+%\xab\xf4D\x10\xfd\x07\x0d\x19\x01E\xa1D\xa0~\x83\
+>\x9f@\x96\x89\xa6*;;{A\x08AUU%\
+\x00\x17\x22\x11\xf3\xae\xa6'\x06~\xf9c\xfb<\xcf!\
+\x18\xf4\xc0\xe3qh '\x93I\xbc\xf5\xd6!LM\
+M\x99\x80\xa7\xcf7\x03\xaf\xd7\xf7\x1d\x1c\x0b\x98\x89\x94\
+\x11\x1d\x18\x9dBv\xad\x0c@\xb9\xe5\x96u?z\xf0\
+\xc1\xedX\xb4h\x99J\x02\x0a2\x0d\x07\xd9\x08\x22\xdb\
+\xb0\x8a\x03\xbb\xc6\xbaqUWW/x\x9eCee\
+\x05\x00\x0e\x13\x13\xf1<[l\xa8\xb7\xfaI\xab4\x13\
+\xbbo~\x1e-G\x10h\x8f\xf7z\x1d\x06\xc7\x0e\xe8\
+\xe9\xe9C_\x1f\xdd-]\xcf]\x14\x06\x9e\x9d'\x84\
+\xb3\xebL\xd3\xca;F\x00\xa0$\x12X{\xbf\xd5o\
+\xc0\xcd7\xaf\xfb\xd1\x83\x0f\xee\xc0\x92%\xcbV\xc9\xb2\
+\x0e\xb21u\x0c@\xeb\xf5\xf6\xe6A\xc1\xdbo\x1f\xc6\
+\x82\x05sPY\x19T\x87\x96\xe3jJ\xb9\x90\xd3w\
+b\x1e?\xfb\xdb\xebu!\x18t\xc1\xe9\x14A\xb5\x13\
+\xbd\xfe\xf8\xf1Atw\xf7 \x91HZ\x80\xd7m\xbd\
+^\xae\xfe?\xaa\x1dd$\x93\xc9\x08f@\x80ig\
+\x05\x9f\x0a\xb1\xacA$\xb0\xfcD\x1d\xf4\x05\xa9l)\
+\x9au\xed\x81\xe7\xc1\x07w\xdc\xb4t\xe9\xf2U\xcc\x1e\
+\xb2\xa5e\x80\xde\x9b\xf4\xf3\x8a\xe1\xbc~\x0d\xc7\xf1X\
+\xbcx\x0e\x02\x01?$I_\x9a>\xbd\xea/\x0f|\
+\x87CD0\xe8\x82\xc7\xe3\x80 \xf0\x06\xbb\x9d\xc3\xd1\
+\xa3\x038|\xb8\x0f\xf1xB\xbb\xc7\x0a\xbc^\xa6Q\
+\x0bPR\xb3\xbfo\xbf}]\x10tR\x0e\xdblJ\
+9\xd53\x82f,\x86\xf1\x03\xeb\x84\x12\xc5\xe6\x00\xcc\
+\xccV\x00\xe0\xe6\x9b\xd7\xfe\xe8\xa1\x87v`\xc9\x92\xe5\
+\xab\x14\x85\x80\xe3\xa8\xdag\xbd\xc4\xceO\xa0e\xea\x1a\
+AQ\xe8/\x9f\xac\x5c\xb9\x18.\x97\x03\x0d\x0d!\x1c\
+;F;Rq\xd5o|\x17\xd8^\xe7\xf39\xe1\xf1\
+8\xe0\xf3\xb9 \x08\x9cf\xc7eYF,\x16\xc3\xd1\
+\xa3\xc7q\xf4\xe8 \xd2\xe9\x0c\xac!\x9d\xd1\xc9\xb3\x02\
+o$;;\x9fN\xa7\xfe`i\xaf\x92\xe5]!\x80\
+E\x8c\xb6>\x0fh\x9bk\x01\x954\x9b7\xaf\xfd\xd1\
+\xc3\x0f\xef\xc0\xe2\xc5+V\xb1\xb9\x01\xe5\x12A\x96e\
+\x1c8\xd0\x89%K\xe6\xc1\xe1\x10\xd1\xd8X\x89\xfe\xfe\
+1\xe4r\xa5\xd9}\x80\xfd\x00\x95\x08\xaf\xd7\x01\x8f\xc7\
+\x05\x8fG4i\x91l6\x87d2\x81\x81\x81a\x1c\
+;6\x8c\xd1\xd1\x09\x14\x0b\xe9t;_\x1cx6\x12\
+\x98H\xc4w\x96\xd0v\xb6\xf2\xae\x98\x00S\x05\xcc3\
+/\xd9\x90\x9b`8\xack\x11\xf3\xcc\xc1#\x8f\xfc\xec\
+\xa6\xc5\x8b\x97\xae2\x02V\xaei\xf0x\x9c*\x09\xe8\
+\xd4\xaf\xbe\xbe\x88\xda;i\xe5d\x19p\xbby\xf0<\
+\x0f\x97K\xd46\x9f\x12E\x1e\xa2h\x8c\x18(0\x92\
+\x94\xc5\xc8\xc8\x04\x86\x87G100\x82\xc9\xc9\xb8\x01\
+P\xfb\x90nr2\x06\xc2s\xe0\x09\x07\x10\x80S'\
+\xc1X\x81\x07\x8c\xa9`\x19\xcf<\xf3\xe4\xac\xdd\xbb\x7f\
+1\x02:C[\xdb?\xa0\x14\x13\xf0\xae\x13\x00\xc8#\
+\x81q\xaf<F\x00\xe3~E\x8c\x00\x1eXH\xb0t\
+\xe9\xf2Uf\x0fY\x07Yw\xc6\xcc\xff7n\x5c\xc5\
+H\xe0t\xd2\xd9\xc2\xe9tN\x03\xb8\x90(\x0a\x90\xcb\
+\x01\x91\xc8$&&\xa2\x18\x1b\x9bD$\x12\xc3\xd8\x18\
+5%\xd6\x9c\xbd]H\x97\xcdf\x11O$\xe0\xf5{\
+\x00B \x8a\x028N@6+\x81\x00\xc8\xa4$d\
+\xa5\xacf\xfb\x19\xf0\x8a\xa2 \x99L<\xbem\xdbm\
+\x9f\x05\xb5\xff\x8c\x00\x8a\xfaN\xef\x0d\x02\x00EI \
+\xc2^\x13\xe4\x91\xe0\xc7?~Bs\x0c\x8d\xea\xdal\
+S\xed\x89\xc0\xb4\x82\xc7\xe3\xc4\xa2Es\xf2V%\x03\
+@4\x9aD&\x93A$2\x85L&\x83\xf1\xf1I\
+\xc4\xe3\x09D\x22Sy\x0ef>\xf0\xac\xac\xfc\x90\x0e\
+<u\x14EQ\x04\xc7\x11\xa43\x12\x04A\x80 \xf0\
+\xc8HY\x88\xa2\x00)%al$\xa2\x01\xcf\xca\xf9\
+\xf3\x9f\x7f\xff\xbe'\x9e\xf8\xafNP\xf0\xb3P\x09P\
+\x0a\xf8\xc0iD\x00\xa0$\x12\xb0\xc8\x80E\x07^\xcb\
+\xa1\x91\x00`\x0d\x0c\xe8v\xbbt\xf3 \x08\x9c:\xe6\
+\xae`l,b!\x8e1\x04+\x0e<`\xef\xd9\xb3\
+zI\xb9\x1c\x9cN\x11\x0e\x87\x00Q\x14\xe1p\x88\xe0\
+x\x1e\xa9T\x8a\x12B\xe0!e(\x09\x92\x89$\x06\
+\x8f\x8dh\xe5$\x93\xf1'\xee\xbd\xf7\xf3\xb7\x81\xf6\xfe\
+\x0c\x0c\xab\x84K%@\x19?\xf5|\xea\xc5Pi\xe6\
+\x18\xb2#\xab\x1ei\x00I\xf5H\x00\x88\xab\xc7\x94\xfa\
+\x99\xd8\xb8\xf1\x93?\xda\xb7\xef\xcd\xd7\xcc\xbb\x96r\xea\
+n\xa6\xfa/\x92\x17\xda\xe5\x94}\x8e\x8fObtt\
+\x02##\x13Z\xac-\xcb9\xd0\xcd \x14\xe4r\xb2\
+\x06\xb2\xa2\xb0sl\xf7\xd2\x9c\xa6\xees9\x19\xfa\xae\
+\xa6\xb2\xc1\xc1\xa3\xcfJ&\x92j\xbd\xd4zp\xf4\xe7\
+oB\xc1\x008\x9e\x83 p\xf0\xf9<\xe09\x82P\
+E\x10\x0dMu\xc8\xe5\x14d\xb3\xd9\xc9\x9d;\x1f\xbb\
+\x13\xe6-c`\xf8,IN+\x02\x00\x05I\x90\x83\
+N\x82\x0c(\x11R\xa0$`\xe0O\xb1\xef\x1b7^\
+\xff\xe0\x9f\xfe\xb4\xe7\xe5|`K'\x82,\xcb\xb6\xc0\
+\xeb\xde9=\xcf\x80\xd75C>\xf0\xec\x7f,\xf67\
+\x9e\xa7\x1bR\x00\x84#\xf4P\xc9\xe0\x10\x05\x84B~\
+\xf0\x84\xa7$\xf0{!\x08\x02*\xaa\x02hi\xab\xc3\
+\xb1c}_|\xed\xb5\xdf\x8f\x1b\xdaH\x8b\xa6J\xed\
+\xfd\xc0iH\x00\xa0(\x09\x98\x9d\xcb@\xd7\x04L\x1b\
+0\x22\xc4\x01$o\xbdu\xe3\x8e\xed\xdb\x1f\xd9\xc1@\
+.\x97\x08,\x06g\xea\xdb\xd8{\xed\x80g\xe02-\
+\xa0\xdbzJ\x06+\xf0\x8c$9EA\x22E\x7f\xd0\
+\x9a\xe7\x088B\xc0\xab\xf5r\xf0\x22B\x15~\x08\x82\
+\x00\x87C\xa49\x05\x8eGeu%.\xbdr\xcde\
+\xc8\xdf0\xaal9-\x09\x00Lk\x0e$P\x12\xa4\
+\xa0\x13 \xcf$\xdc\x7f\xff\xd7w\xff\xf4\xa7?\xd9\xc1\
+\xc0-\x87\x08\xd4_\x90M=\x9f\x01o\xd7\xab\xf3\xcf\
++\xeayc\x92\xc7\xa8\x1dt\x13\x90\xc9HH&(\
+\x098\xb5.\x84\xa7\x87S\x14Q[\x13\x86\xd3\xe9\x00\
+Gxx\xbd.\x08<\x07\x9f\xcf\xff\xe9\x9d\xcf\xfd\xf1\
+\xa5\xaf~\xf5\x1b>\xe8\x1a\xa0l\x12\x9c\xb6\x04\x00\xa6\
+5\x07V\x12$a\xf6\x07\xe2\x00\xe2\xf7\xdf\x7f\xcf\xee\
+\xc7\x1e{d\x87qws+\x11x^'\x02\xdb\x09\
+\x9d\x86w\x8a\x0a\x94\x0e*\xfb4\x02o\xf4\x05\x8c\xc0\
+\xe7\xfb\x08\xb2\xea\x1f\xe8Z%\x95\xce \x9d\xca \x9d\
+\x91\x90H\xa44\xe09F\x06\x9e\xc0\xedr \x5c\x11\
+\x80C\xe4A8\x0e^\xaf\x1b\x02\xcf\x81\x13\x84e\x1f\
+\xba\xf4\xb2\xdf\xfc\xeb\x0f\x7f\x18D\x19\xa1\x9fQNk\
+\x02\x00\x05I\x90\x85\xd9'\xb0j\x02\xcd\x1f\x00\x10\xbf\
+\xef\xbe{vo\xdf\xfe\xc8\x0e\xb6\xc8\x94ny\xcf\xe7\
+\x11\x82N?g&\xc0\xda\xcbu\x07\xcf\xaeW3\xe0\
+\xcd>\x02\x03\xdex\xde\xe80\xca@N\x81\xac(H\
+\xa5\xd2Hg$\xc4\x13)p\xcc!$4<$\x1c\
+\x01\xc7s\xa8\xa8\x0c@\x14\xe9*)\xaf\xd7\x0d\x9e\x13\
+ \xf0\xfc\xf2\xa5\xed+\x7f\xfb\xd3g\x9e\x09\xce\xa4}\
+O\x87T\xf0\xb4\xa2(ys\x0c9\x18\xb6R\x9f\xe6\
+v\x02\x00\xf7\xddw\xcfn\x00\xd8\xb0a\xf3ZEK\
+\x0d\xd3,\x1b\x9b;\xa0(l.\x014\xdb]NH\
+g\x8c\xf1\x999P\xeb\xaf]g\x0d\x1b\x03\x01\x1f\xd2\
+\xc9\x0c\x9c\x0e\x07R\xa9\x14\x9c\x0e\x11\xf1x\x12N\xa7\
+\x83F\x04\xbc\xa0M\x85\xe39\x0e\x95\x15AD\x221\
+H\xd9\x1c\xbc\x1e\x17\xd2\x99\x0c\xb2$\xbb\xbc\xc6W\xbf\
+\xeb\xa9\x17_\x5c\x03 \x822\xe4\xb4\xd7\x00Ll4\
+\x81\x02{s\xc0\xa2\x03k\x88\x18\xbf\xef\xbe{v?\
+\xfa\xe8C;\xd823\xda\xeb\xcd?~\xc1\xb4\x81\x1e\
+\xba\x95\x1e\xd2\xe9\xfeB.O{PS\x91\x7f\xde\xe7\
+\xf3#1\x95@:\x93\x81\x02 \x99\xce \x95\xc9 \
+\x1eO\x82\xe7\x08\x04\x81\x03\xa7\xa6\x85\x01\x80\xe7xT\
+V\x04\xe0q\xbb\xc0q\x80\xdb\xe5\x84(\x8a\xe0\x09Y\
+\x11\xe0\x82\xbf\xde\xb9\xf3\xd5@9\xed\xfa\x9e!\x00\xa0\
+f7X\x16\xc7\x1c\xfa\x94\xe2\x18&\xa0\x92\xe0'?\
+yd\x87\xd1\x07\xb0#\x02-\xaf\xbc\x90\xce\xf8\xa9\xab\
+\x7f\x1dx\xddw0\x9f\x0f\x87+\x10\x8bL!\x9d\xa2\
+c\x0f\xc9d\x06\xe9L\x06\xe3\x91I\xd0\xfc\x13Q5\
+\x13\xa7-M\x0b\x05|p\xbb\xdd \x00\x5c.\xa7\xcc\
+\x8b|\x84\x00\x15.\xbf\xf3\xbf^z\xe9\xafm\xa5\xb6\
+\xe9{\x8a\x00\x16)\xe6\x18\x1a\xf3\x04V\x12$\xef\xbb\
+o\xdb\xcb\x8f>\xfa\xf0cl\xd9\xb9\x1d\x11\xe86l\
+\xe5\x85t\x85\xf3\x05f?\xc2H\x08\xfa<\x05^\x8f\
+\x17\x91\xb1(\xd2\xc9$\x00\x19\xc9T\x1a\xb9\xac\x82H\
+tJ}U\x0a>@s\x06\xe0\x80P\xd0\x07\xb7\xdb\
+\x99!\x04Cn\xa7\xb3O\x10\xf9>\xa2@\x82H>\
+\xfb\xc2\x0b\xaf\xd4\xa2\x04yO\x12\xa0\x809\xb0j\x02\
+;\x12h\xe6\xe0\x1b\xdf\xd8\xb6\xfb\xd1G\x1fzL\xef\
+\xf9f\x22\x14\xf2\xec\x8b\x85tv\xf9\x02c\xe4\xa0\x9f\
+\xd7\x817\x96\x93N\xa7\xde\xf8\xe3\x1fw\x7f11\x15\
+\x7fE\x91\x81d:\x0dI\xcab|b\x0a\x80\x0c\x02\
+\x9a,\xd2\x9a\x01J,\x14\xf4\x1d\xf58\x1d\xbd\x84\xa0\
+\xcf\xe5v\x1d\x11\x1d\xc2Q\x02e\x9cw\xbb/\xff\xed\
+o\xff2\xadcxZ\x8d\x05\xccD,\xfb\x18\x1ag\
+\x17\xd9mkk\xdd\xf2\xdes\xd7]\xf7~\xe8\x86\x1b\
+nZ\xcb\xc6\x0b\xd8\x18\xfb\x9bov\x22\x12\x89\xc1n\
+\xfe\x9d\xd1\x14\x00\xd61\x80\xe2\xe7\xed\x06\x85\x12\x89\xa9\
+\xee\xce\xce\xfd\x0f=\xfd\xf4C\xcf\x03H\xcd\x9b\xb7\x04\
+_\xb9\xf3\x1b\xff'\xe0\xf7_\x11\xf0\xfb\x10\x08x\xe1\
+t\x88\xa8\xac\x0cR\xed\x04E\x020\xce\x112\x0c(\
+\xc3\x00\x19\x8d\xc7S#\xf1xbL!\x18\x97r\xd9\
+\xf1TJ\x8a\x082\x19\xcdf\xc7\xffz\xf1\xc5\x17\xa7\
+\x0a\xb6\xdf{\x9d\x00@A\x12\x18\xa7\x971\x12X7\
+\xb9\xf6\x82\x92\xe0\xc3\x1b7\xde\xb4\x16\x80\x06\xd6\xde\xbd\
+\x07\x11\x89L\x96\xe5\xd9\x97\x0e<\xbdf||d\xcf\
+\xc1\x83\xaf?\xf1\xfc\xf3O\xbe\x0a\xaa\xad\x98\xd6J7\
+5\xcdU\xfe\xef\xbf\xfd\xc7\xbf\x07B\xc1\xeb\xddN\x17\
+\xbc\x1e'DQP*\xc3\xc1\x04O\xc80\x08\x19\x01\
+0\x0c\xc2\x8dr\x8a2\x0apc\xc9tj<\x12\x8d\
+Op\xbc<\x91\xcd*\xd1X\x22=\xc9I\xa9\xe8K\
+/\xfdj\xf8\xee\xbb\xef\xb6\x9d\x87\xf9\x9e\x08\x03K\x14\
+c\x88\xc8\xcc\x81\xdd5\xd6\xef\xca\xd7\xbf\xbe\xf5E\x9e\
+\xe7\x94\x0d\x1b6\xaf3\xae#`\xbd\xbf\xd4\x90\xae\x90\
+&0\x86\x8e\x89\xc4T\xcf\xb1c}\xcf\xbf\xfe\xfa\xef\
+^\xee\xe8\xd8\xdb\x07\x0a:;\x98\xe9\xca\xf4\xf7wf\
+\xd7~\xea\xcaM\xbf\xf8\xd5\xef\x93\xb2#wC<\x95\
+\xcay\x88kb|<:\x14\x0e\x87Fx`D\x01\
+O\xc1\xe71Nd\x8c\xbb\xdc\xae\x89\x0aE\x89D\x22\
+\xb1\xa8\xcc#\xc6\xb9\x9c\xb1\xd8\xb8\x94(\xd6hg\x84\
+\x06\x00\xa6\x9dTb\xa7\x09\x8cs\x0a<\x00\xdc\xf7\xdc\
+s\xdf\xc57\xdc\xb0i\x03\xa0\xe0\x95W\xf6ct4\
+\x02\xe3\x9c\x02#\xf0\xa5\x9c\xa73\x832\x89h4\xb2\
+\x7ftt\xe0\xcd\xbd{\xf7\xfc\xee\xe0\xc1\xbf\x1c\x85>\
+|k=$\xc3\xc1\xf2\xfc\xb9\xdf\xec\xfa\xf3\xf7\x04\x8e\
+\x5cNxn\xd8\xe7q\x0f\x8b\x227Z\x15\xae\x18\xe5\
+@\xc6\x14\x9e\x8cC\xc1\x04\xe1\x94\x09NFD\x96\x95\
+\xc9\xa9\xa9d,\x16\x1b\x9e\x02\x90x\xdf\xfb\xde\xa7u\
+\x04\xbb,\xe1\x19C\x00\xa0,\x12\x18\x7f\xf8\x82}\xba\
+\x01\xb8\xbe\xf2\x95-\x7f\xb3y\xf3-\x9b\xff\xf2\x97\x83\
+\xee\xd1\xd1\x88I\xfd\xb3\xf1\x81b\xc0G\xa3c\x1d\x13\
+\x13\x13\xbd\x91\xc8\xc8\xe1#G\xba\xba^}\xf5\xa5C\
+0\x03\xcb\x9cT\xbb\xeflB\x87\xf1P\x00(\xbf\xdd\
+\xf5\xdaW\x09\xc7\xaf\xe4En\xd4\xe3v\x8d:\x1c\xe2\
+xU\xc87N\x04q\x82\xc8\x88\xc8<\x89\x0a\x0a\x99\
+T\x94\xe4\x14\x80\xf8\xef~\xf7\xbb\xd4\xa7>\xf5\xa9\xfc\
+\xc9\xed\x16\xc0\xcf(\x02\x00\x05I`\xfc\xf9\x1bF\x02\
+\xe3F\xd7n\xc39\xc7\xa7?\xbdv\xcee\x97}j\
+\xcb\xd4T\xd2C\x97ie\x12\xb1\xd8\xe4\x11\xa3=\x1f\
+\x19\x198@\x08\xe4h4:<668\xb4\x7f\xff\
+\x9f\xba\x87\x87\x07'\xa1\x83\xc8\x22\x12\xeb\xa7ds\xde\
+\x0a\xbcq\x88W\x1b\xe4y\xe1w{\xd7r \xb3y\
+\x8e\x1bw\xb9\x5c\xe3\x0e'\x17\x09WUDx\x19\x93\
+\xb9\x1c&eY\x88\xc7b\xfd\xf1%K\x96\x14\xdd\xbd\
+\xd5H\x823\x8e\x00@\xc9\x9a\xc0\xa8\x0d\xd8\xef\x1f\xb8\
+\xd4\xff\x8b\xa0\xa41n\xbf\xca\x1a\xca\x18vZAc\
+\xdf\xb3%\x1ev\xbd\xdd4\xb6\x0f\xcb\xec\x9e]/\xef\
+\xfd\x10\xcfqaA\x14\x22.\x81\x8f\x12\x978\x19r\
+\xfbc>\x1f\x89\xef\xde\xbd;i\xd7\xeb\xed\x84=\xf3\
+\x8c$\x00`K\x02ct`\xfc\xcd\x03\xb6\x08\x85}\
+g\xd3\xcfx\xc3\xbd\x80\xb97\xca\x96\xc3J\x00v\x18\
+m9[\xb0a\x04\x9e\xddc\x04\xde\xd4\xeb\xed\xec\xf6\
+\xee\xdd\xaf\xcf\xcd\xf1\xc4\xe1\x80\x18\xe3yLE\x22\x8e\
+\xf8UW\xcd\x9bn\xe3\xee<Q\x14E9c\x09\x00\
+\x14%\x01\xfb\xbd\x03\xa3F\x10a\x06\x9fC\xbe\x06(\
+D\x82\x9c\xcd\xdf\x85\xb4\x83b8W\x10x\xa0\xf8\xd0\
+\xeeK/\xfd5\x14\x15\xe3\xb9\xa0$%\xd7\xacY3\
+\xc3\xb5\xc1g\xb0\x06`R`\xdd\x81\xf1\x87/\x8ck\
+\x10\xd8\xdfF\xf0\x0bi\x00\xeb\xa7\xb1'\xdb\x1d9\xcb\
+3r6\xcf\xa5'J\x04\xc5\xf0n3\x923^\x03\
+\x18\xa5\xc8zD\xce\xe6\xbb\x15|\xc0\x0c\x92\x1d\x09\xac\
+\xe7\xec\xce\xdb\xf5\xf4\xb2\x81/\xf0^e\xc9\x19\xef\x03\
+\xd8I\x01\x93\xc0Y\x0e\x82|\xf5\x0f\xe4\x83V\xca!\
+\xdb\x5c\x0f\x9c \xe8E\xde\xab$9\xe3\xa3\x80bR\
+\xc0$\x90\x02\x87\x9dXIP\xec\x9cI\xb5\xe3$\x03\
+o\x94RIp\xc6\xe7\x01J\x11KcY\x01/F\
+\x80\xbc\x1e\x5c\xe0\xbb\xddu'\x1dt\xabLG\x823\
+>\x13X\xae\xd8\x10\xc1\xee\xbbU\x0a5\x98\xed\xf9S\
+\x0d\xbaU\x0a\x91\xa0P=\xcej\x020)\xd2s\xac\
+>\xc0\xb4\xf2N\x03n'\xd6\xf7)V\xa7s\x04\xb0\
+\x91\x99\xa8\xd2\xd3M\xd8;LW\xd7s\x048\xcb\xe5\
+=9%\xec\x9c\x9c<\xf9\xff.}$/\xf4\x80\x9c\
+-\x00\x00\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x06\
+\x07\x03}\xc3\
+\x00i\
+\x00m\x00a\x00g\x00e\x00s\
+\x00\x0e\
+\x0a\x93\x87\x07\
+\x00d\
+\x00i\x00s\x00c\x00o\x00n\x00n\x00e\x00c\x00t\x00.\x00p\x00n\x00g\
+\x00\x0c\
+\x0b\xdf!G\
+\x00s\
+\x00e\x00t\x00t\x00i\x00n\x00g\x00s\x00.\x00p\x00n\x00g\
+\x00\x14\
+\x07@\xa2\xc7\
+\x00a\
+\x00p\x00p\x00l\x00i\x00c\x00a\x00t\x00i\x00o\x00n\x00-\x00e\x00x\x00i\x00t\x00.\
+\x00p\x00n\x00g\
+\x00\x0b\
+\x0bs\x9d\xc7\
+\x00c\
+\x00o\x00n\x00n\x00e\x00c\x00t\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00R\x00\x00\x00\x00\x00\x01\x00\x00y\xa3\
+\x00\x00\x01\x83\xa8\x1a9\xce\
+\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x83\xa8\x1a9\xce\
+\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\xa5g\
+\x00\x00\x01\x83\xa8\x1a9\xce\
+\x00\x00\x004\x00\x00\x00\x00\x00\x01\x00\x00:\xf8\
+\x00\x00\x01\x83\xa8\x1a9\xce\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/serialbus/modbus/modbusclient/settingsdialog.py b/examples/serialbus/modbus/modbusclient/settingsdialog.py
new file mode 100644
index 000000000..a5e4a37ca
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/settingsdialog.py
@@ -0,0 +1,52 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Slot
+from PySide6.QtWidgets import QDialog
+from PySide6.QtSerialPort import QSerialPort
+
+from ui_settingsdialog import Ui_SettingsDialog
+
+
+class Settings:
+ def __init__(self):
+ self.parity = QSerialPort.EvenParity
+ self.baud = QSerialPort.Baud19200
+ self.data_bits = QSerialPort.Data8
+ self.stop_bits = QSerialPort.OneStop
+ self.response_time = 1000
+ self.number_of_retries = 3
+
+
+class SettingsDialog(QDialog):
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.m_settings = Settings()
+ self.ui = Ui_SettingsDialog()
+ self.ui.setupUi(self)
+
+ self.ui.parityCombo.setCurrentIndex(1)
+ self.ui.baudCombo.setCurrentText(f"{self.m_settings.baud}")
+ self.ui.dataBitsCombo.setCurrentText(f"{self.m_settings.data_bits}")
+ self.ui.stopBitsCombo.setCurrentText(f"{self.m_settings.stop_bits}")
+ self.ui.timeoutSpinner.setValue(self.m_settings.response_time)
+ self.ui.retriesSpinner.setValue(self.m_settings.number_of_retries)
+
+ self.ui.applyButton.clicked.connect(self._apply)
+
+ @Slot()
+ def _apply(self):
+ self.m_settings.parity = self.ui.parityCombo.currentIndex()
+ if self.m_settings.parity > 0:
+ self.m_settings.parity = self.m_settings.parity + 1
+ self.m_settings.baud = int(self.ui.baudCombo.currentText())
+ self.m_settings.data_bits = int(self.ui.dataBitsCombo.currentText())
+ self.m_settings.stop_bits = int(self.ui.stopBitsCombo.currentText())
+ self.m_settings.response_time = self.ui.timeoutSpinner.value()
+ self.m_settings.number_of_retries = self.ui.retriesSpinner.value()
+
+ self.hide()
+
+ def settings(self):
+ return self.m_settings
diff --git a/examples/serialbus/modbus/modbusclient/settingsdialog.ui b/examples/serialbus/modbus/modbusclient/settingsdialog.ui
new file mode 100644
index 000000000..fb594f4d4
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/settingsdialog.ui
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SettingsDialog</class>
+ <widget class="QDialog" name="SettingsDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>239</width>
+ <height>256</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Modbus Settings</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="3" column="1">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>43</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="timeoutSpinner">
+ <property name="accelerated">
+ <bool>true</bool>
+ </property>
+ <property name="suffix">
+ <string> ms</string>
+ </property>
+ <property name="minimum">
+ <number>-1</number>
+ </property>
+ <property name="maximum">
+ <number>5000</number>
+ </property>
+ <property name="singleStep">
+ <number>20</number>
+ </property>
+ <property name="value">
+ <number>200</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Response Timeout:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QPushButton" name="applyButton">
+ <property name="text">
+ <string>Apply</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" colspan="2">
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Serial Parameters</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Parity:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="parityCombo">
+ <item>
+ <property name="text">
+ <string>No</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Even</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Odd</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Space</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Mark</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Baud Rate:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="baudCombo">
+ <item>
+ <property name="text">
+ <string>1200</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>2400</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>4800</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>9600</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>19200</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>38400</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>57600</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>115200</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Data Bits:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QComboBox" name="dataBitsCombo">
+ <item>
+ <property name="text">
+ <string>5</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>6</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>7</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>8</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Stop Bits:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QComboBox" name="stopBitsCombo">
+ <item>
+ <property name="text">
+ <string>1</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>3</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>2</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Number of retries:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="retriesSpinner">
+ <property name="value">
+ <number>3</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/serialbus/modbus/modbusclient/ui_mainwindow.py b/examples/serialbus/modbus/modbusclient/ui_mainwindow.py
new file mode 100644
index 000000000..1535fc8d8
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/ui_mainwindow.py
@@ -0,0 +1,377 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'mainwindow.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
+ QCursor, QFont, QFontDatabase, QGradient,
+ QIcon, QImage, QKeySequence, QLinearGradient,
+ QPainter, QPalette, QPixmap, QRadialGradient,
+ QTransform)
+from PySide6.QtWidgets import (QApplication, QComboBox, QGridLayout, QGroupBox,
+ QHBoxLayout, QHeaderView, QLabel, QLineEdit,
+ QListWidget, QListWidgetItem, QMainWindow, QMenu,
+ QMenuBar, QPushButton, QSizePolicy, QSpacerItem,
+ QSpinBox, QStatusBar, QTreeView, QVBoxLayout,
+ QWidget)
+import rc_modbusclient
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ if not MainWindow.objectName():
+ MainWindow.setObjectName(u"MainWindow")
+ MainWindow.resize(516, 378)
+ MainWindow.setMaximumSize(QSize(16777215, 1000))
+ self.actionConnect = QAction(MainWindow)
+ self.actionConnect.setObjectName(u"actionConnect")
+ icon = QIcon()
+ icon.addFile(u":/images/connect.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionConnect.setIcon(icon)
+ self.actionDisconnect = QAction(MainWindow)
+ self.actionDisconnect.setObjectName(u"actionDisconnect")
+ icon1 = QIcon()
+ icon1.addFile(u":/images/disconnect.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionDisconnect.setIcon(icon1)
+ self.actionExit = QAction(MainWindow)
+ self.actionExit.setObjectName(u"actionExit")
+ icon2 = QIcon()
+ icon2.addFile(u":/images/application-exit.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionExit.setIcon(icon2)
+ self.actionOptions = QAction(MainWindow)
+ self.actionOptions.setObjectName(u"actionOptions")
+ icon3 = QIcon()
+ icon3.addFile(u":/images/settings.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionOptions.setIcon(icon3)
+ self.centralWidget = QWidget(MainWindow)
+ self.centralWidget.setObjectName(u"centralWidget")
+ self.verticalLayout = QVBoxLayout(self.centralWidget)
+ self.verticalLayout.setSpacing(6)
+ self.verticalLayout.setContentsMargins(11, 11, 11, 11)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.gridLayout = QGridLayout()
+ self.gridLayout.setSpacing(6)
+ self.gridLayout.setObjectName(u"gridLayout")
+ self.label_27 = QLabel(self.centralWidget)
+ self.label_27.setObjectName(u"label_27")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Maximum, QSizePolicy.Policy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_27.sizePolicy().hasHeightForWidth())
+ self.label_27.setSizePolicy(sizePolicy)
+
+ self.gridLayout.addWidget(self.label_27, 0, 5, 1, 1)
+
+ self.connectButton = QPushButton(self.centralWidget)
+ self.connectButton.setObjectName(u"connectButton")
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Maximum, QSizePolicy.Policy.Fixed)
+ sizePolicy1.setHorizontalStretch(0)
+ sizePolicy1.setVerticalStretch(0)
+ sizePolicy1.setHeightForWidth(self.connectButton.sizePolicy().hasHeightForWidth())
+ self.connectButton.setSizePolicy(sizePolicy1)
+ self.connectButton.setCheckable(False)
+ self.connectButton.setAutoDefault(False)
+
+ self.gridLayout.addWidget(self.connectButton, 0, 7, 1, 1)
+
+ self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.gridLayout.addItem(self.horizontalSpacer, 0, 4, 1, 1)
+
+ self.serverEdit = QSpinBox(self.centralWidget)
+ self.serverEdit.setObjectName(u"serverEdit")
+ sizePolicy1.setHeightForWidth(self.serverEdit.sizePolicy().hasHeightForWidth())
+ self.serverEdit.setSizePolicy(sizePolicy1)
+ self.serverEdit.setMinimum(1)
+ self.serverEdit.setMaximum(247)
+
+ self.gridLayout.addWidget(self.serverEdit, 0, 6, 1, 1)
+
+ self.connectType = QComboBox(self.centralWidget)
+ self.connectType.addItem("")
+ self.connectType.addItem("")
+ self.connectType.setObjectName(u"connectType")
+
+ self.gridLayout.addWidget(self.connectType, 0, 1, 1, 1)
+
+ self.label_2 = QLabel(self.centralWidget)
+ self.label_2.setObjectName(u"label_2")
+ sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
+ self.label_2.setSizePolicy(sizePolicy)
+
+ self.gridLayout.addWidget(self.label_2, 0, 2, 1, 1)
+
+ self.label = QLabel(self.centralWidget)
+ self.label.setObjectName(u"label")
+
+ self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
+
+ self.portEdit = QLineEdit(self.centralWidget)
+ self.portEdit.setObjectName(u"portEdit")
+ sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
+ sizePolicy2.setHorizontalStretch(0)
+ sizePolicy2.setVerticalStretch(0)
+ sizePolicy2.setHeightForWidth(self.portEdit.sizePolicy().hasHeightForWidth())
+ self.portEdit.setSizePolicy(sizePolicy2)
+
+ self.gridLayout.addWidget(self.portEdit, 0, 3, 1, 1)
+
+
+ self.verticalLayout.addLayout(self.gridLayout)
+
+ self.horizontalLayout_2 = QHBoxLayout()
+ self.horizontalLayout_2.setSpacing(6)
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
+ self.groupBox_2 = QGroupBox(self.centralWidget)
+ self.groupBox_2.setObjectName(u"groupBox_2")
+ self.groupBox_2.setMinimumSize(QSize(250, 0))
+ self.gridLayout_3 = QGridLayout(self.groupBox_2)
+ self.gridLayout_3.setSpacing(6)
+ self.gridLayout_3.setContentsMargins(11, 11, 11, 11)
+ self.gridLayout_3.setObjectName(u"gridLayout_3")
+ self.label_4 = QLabel(self.groupBox_2)
+ self.label_4.setObjectName(u"label_4")
+
+ self.gridLayout_3.addWidget(self.label_4, 0, 0, 1, 1)
+
+ self.readAddress = QSpinBox(self.groupBox_2)
+ self.readAddress.setObjectName(u"readAddress")
+ self.readAddress.setMaximum(9)
+
+ self.gridLayout_3.addWidget(self.readAddress, 0, 1, 1, 1)
+
+ self.label_5 = QLabel(self.groupBox_2)
+ self.label_5.setObjectName(u"label_5")
+
+ self.gridLayout_3.addWidget(self.label_5, 1, 0, 1, 1)
+
+ self.readSize = QComboBox(self.groupBox_2)
+ self.readSize.addItem("")
+ self.readSize.addItem("")
+ self.readSize.addItem("")
+ self.readSize.addItem("")
+ self.readSize.addItem("")
+ self.readSize.addItem("")
+ self.readSize.addItem("")
+ self.readSize.addItem("")
+ self.readSize.addItem("")
+ self.readSize.addItem("")
+ self.readSize.setObjectName(u"readSize")
+
+ self.gridLayout_3.addWidget(self.readSize, 1, 1, 1, 1)
+
+ self.label_9 = QLabel(self.groupBox_2)
+ self.label_9.setObjectName(u"label_9")
+
+ self.gridLayout_3.addWidget(self.label_9, 2, 0, 1, 1)
+
+ self.readValue = QListWidget(self.groupBox_2)
+ self.readValue.setObjectName(u"readValue")
+ self.readValue.setMinimumSize(QSize(0, 0))
+
+ self.gridLayout_3.addWidget(self.readValue, 3, 0, 1, 2)
+
+
+ self.horizontalLayout_2.addWidget(self.groupBox_2)
+
+ self.writeGroupBox = QGroupBox(self.centralWidget)
+ self.writeGroupBox.setObjectName(u"writeGroupBox")
+ self.writeGroupBox.setMinimumSize(QSize(225, 0))
+ self.gridLayout_2 = QGridLayout(self.writeGroupBox)
+ self.gridLayout_2.setSpacing(6)
+ self.gridLayout_2.setContentsMargins(11, 11, 11, 11)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
+ self.label_7 = QLabel(self.writeGroupBox)
+ self.label_7.setObjectName(u"label_7")
+
+ self.gridLayout_2.addWidget(self.label_7, 0, 0, 1, 1)
+
+ self.writeValueTable = QTreeView(self.writeGroupBox)
+ self.writeValueTable.setObjectName(u"writeValueTable")
+ self.writeValueTable.setProperty("showDropIndicator", True)
+ self.writeValueTable.setAlternatingRowColors(True)
+ self.writeValueTable.setRootIsDecorated(False)
+ self.writeValueTable.setUniformRowHeights(True)
+ self.writeValueTable.setItemsExpandable(False)
+ self.writeValueTable.setExpandsOnDoubleClick(False)
+ self.writeValueTable.header().setVisible(True)
+
+ self.gridLayout_2.addWidget(self.writeValueTable, 3, 0, 1, 2)
+
+ self.writeAddress = QSpinBox(self.writeGroupBox)
+ self.writeAddress.setObjectName(u"writeAddress")
+ self.writeAddress.setMaximum(9)
+
+ self.gridLayout_2.addWidget(self.writeAddress, 0, 1, 1, 1)
+
+ self.label_8 = QLabel(self.writeGroupBox)
+ self.label_8.setObjectName(u"label_8")
+
+ self.gridLayout_2.addWidget(self.label_8, 1, 0, 1, 1)
+
+ self.writeSize = QComboBox(self.writeGroupBox)
+ self.writeSize.addItem("")
+ self.writeSize.addItem("")
+ self.writeSize.addItem("")
+ self.writeSize.addItem("")
+ self.writeSize.addItem("")
+ self.writeSize.addItem("")
+ self.writeSize.addItem("")
+ self.writeSize.addItem("")
+ self.writeSize.addItem("")
+ self.writeSize.addItem("")
+ self.writeSize.setObjectName(u"writeSize")
+
+ self.gridLayout_2.addWidget(self.writeSize, 1, 1, 1, 1)
+
+ self.label_3 = QLabel(self.writeGroupBox)
+ self.label_3.setObjectName(u"label_3")
+
+ self.gridLayout_2.addWidget(self.label_3, 2, 0, 1, 1)
+
+
+ self.horizontalLayout_2.addWidget(self.writeGroupBox)
+
+
+ self.verticalLayout.addLayout(self.horizontalLayout_2)
+
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setSpacing(6)
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.label_6 = QLabel(self.centralWidget)
+ self.label_6.setObjectName(u"label_6")
+
+ self.horizontalLayout.addWidget(self.label_6)
+
+ self.writeTable = QComboBox(self.centralWidget)
+ self.writeTable.setObjectName(u"writeTable")
+
+ self.horizontalLayout.addWidget(self.writeTable)
+
+ self.horizontalSpacer_2 = QSpacerItem(13, 17, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout.addItem(self.horizontalSpacer_2)
+
+ self.readButton = QPushButton(self.centralWidget)
+ self.readButton.setObjectName(u"readButton")
+ sizePolicy1.setHeightForWidth(self.readButton.sizePolicy().hasHeightForWidth())
+ self.readButton.setSizePolicy(sizePolicy1)
+
+ self.horizontalLayout.addWidget(self.readButton)
+
+ self.writeButton = QPushButton(self.centralWidget)
+ self.writeButton.setObjectName(u"writeButton")
+
+ self.horizontalLayout.addWidget(self.writeButton)
+
+ self.readWriteButton = QPushButton(self.centralWidget)
+ self.readWriteButton.setObjectName(u"readWriteButton")
+ self.readWriteButton.setEnabled(False)
+
+ self.horizontalLayout.addWidget(self.readWriteButton)
+
+
+ self.verticalLayout.addLayout(self.horizontalLayout)
+
+ MainWindow.setCentralWidget(self.centralWidget)
+ self.statusBar = QStatusBar(MainWindow)
+ self.statusBar.setObjectName(u"statusBar")
+ MainWindow.setStatusBar(self.statusBar)
+ self.menuBar = QMenuBar(MainWindow)
+ self.menuBar.setObjectName(u"menuBar")
+ self.menuBar.setGeometry(QRect(0, 0, 516, 21))
+ self.menuDevice = QMenu(self.menuBar)
+ self.menuDevice.setObjectName(u"menuDevice")
+ self.menuToo_ls = QMenu(self.menuBar)
+ self.menuToo_ls.setObjectName(u"menuToo_ls")
+ MainWindow.setMenuBar(self.menuBar)
+ QWidget.setTabOrder(self.connectType, self.portEdit)
+ QWidget.setTabOrder(self.portEdit, self.serverEdit)
+ QWidget.setTabOrder(self.serverEdit, self.connectButton)
+ QWidget.setTabOrder(self.connectButton, self.readAddress)
+ QWidget.setTabOrder(self.readAddress, self.readSize)
+ QWidget.setTabOrder(self.readSize, self.readValue)
+ QWidget.setTabOrder(self.readValue, self.writeAddress)
+ QWidget.setTabOrder(self.writeAddress, self.writeSize)
+ QWidget.setTabOrder(self.writeSize, self.writeValueTable)
+ QWidget.setTabOrder(self.writeValueTable, self.writeTable)
+ QWidget.setTabOrder(self.writeTable, self.readButton)
+ QWidget.setTabOrder(self.readButton, self.writeButton)
+ QWidget.setTabOrder(self.writeButton, self.readWriteButton)
+
+ self.menuBar.addAction(self.menuDevice.menuAction())
+ self.menuBar.addAction(self.menuToo_ls.menuAction())
+ self.menuDevice.addAction(self.actionConnect)
+ self.menuDevice.addAction(self.actionDisconnect)
+ self.menuDevice.addSeparator()
+ self.menuDevice.addAction(self.actionExit)
+ self.menuToo_ls.addAction(self.actionOptions)
+
+ self.retranslateUi(MainWindow)
+
+ self.connectButton.setDefault(True)
+ self.readSize.setCurrentIndex(9)
+ self.writeSize.setCurrentIndex(9)
+
+
+ QMetaObject.connectSlotsByName(MainWindow)
+ # setupUi
+
+ def retranslateUi(self, MainWindow):
+ MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"Modbus Client Example", None))
+ self.actionConnect.setText(QCoreApplication.translate("MainWindow", u"&Connect", None))
+ self.actionDisconnect.setText(QCoreApplication.translate("MainWindow", u"&Disconnect", None))
+ self.actionExit.setText(QCoreApplication.translate("MainWindow", u"&Quit", None))
+ self.actionOptions.setText(QCoreApplication.translate("MainWindow", u"&Options", None))
+ self.label_27.setText(QCoreApplication.translate("MainWindow", u"Server Address:", None))
+ self.connectButton.setText(QCoreApplication.translate("MainWindow", u"Connect", None))
+ self.connectType.setItemText(0, QCoreApplication.translate("MainWindow", u"Serial", None))
+ self.connectType.setItemText(1, QCoreApplication.translate("MainWindow", u"TCP", None))
+
+ self.label_2.setText(QCoreApplication.translate("MainWindow", u"Port:", None))
+ self.label.setText(QCoreApplication.translate("MainWindow", u"Connection type:", None))
+ self.groupBox_2.setTitle(QCoreApplication.translate("MainWindow", u"Read", None))
+ self.label_4.setText(QCoreApplication.translate("MainWindow", u"Start address:", None))
+ self.label_5.setText(QCoreApplication.translate("MainWindow", u"Number of values:", None))
+ self.readSize.setItemText(0, QCoreApplication.translate("MainWindow", u"1", None))
+ self.readSize.setItemText(1, QCoreApplication.translate("MainWindow", u"2", None))
+ self.readSize.setItemText(2, QCoreApplication.translate("MainWindow", u"3", None))
+ self.readSize.setItemText(3, QCoreApplication.translate("MainWindow", u"4", None))
+ self.readSize.setItemText(4, QCoreApplication.translate("MainWindow", u"5", None))
+ self.readSize.setItemText(5, QCoreApplication.translate("MainWindow", u"6", None))
+ self.readSize.setItemText(6, QCoreApplication.translate("MainWindow", u"7", None))
+ self.readSize.setItemText(7, QCoreApplication.translate("MainWindow", u"8", None))
+ self.readSize.setItemText(8, QCoreApplication.translate("MainWindow", u"9", None))
+ self.readSize.setItemText(9, QCoreApplication.translate("MainWindow", u"10", None))
+
+ self.label_9.setText(QCoreApplication.translate("MainWindow", u"Result:", None))
+ self.writeGroupBox.setTitle(QCoreApplication.translate("MainWindow", u"Write", None))
+ self.label_7.setText(QCoreApplication.translate("MainWindow", u"Start address:", None))
+ self.label_8.setText(QCoreApplication.translate("MainWindow", u"Number of values:", None))
+ self.writeSize.setItemText(0, QCoreApplication.translate("MainWindow", u"1", None))
+ self.writeSize.setItemText(1, QCoreApplication.translate("MainWindow", u"2", None))
+ self.writeSize.setItemText(2, QCoreApplication.translate("MainWindow", u"3", None))
+ self.writeSize.setItemText(3, QCoreApplication.translate("MainWindow", u"4", None))
+ self.writeSize.setItemText(4, QCoreApplication.translate("MainWindow", u"5", None))
+ self.writeSize.setItemText(5, QCoreApplication.translate("MainWindow", u"6", None))
+ self.writeSize.setItemText(6, QCoreApplication.translate("MainWindow", u"7", None))
+ self.writeSize.setItemText(7, QCoreApplication.translate("MainWindow", u"8", None))
+ self.writeSize.setItemText(8, QCoreApplication.translate("MainWindow", u"9", None))
+ self.writeSize.setItemText(9, QCoreApplication.translate("MainWindow", u"10", None))
+
+ self.label_3.setText("")
+ self.label_6.setText(QCoreApplication.translate("MainWindow", u"Table:", None))
+ self.readButton.setText(QCoreApplication.translate("MainWindow", u"Read", None))
+ self.writeButton.setText(QCoreApplication.translate("MainWindow", u"Write", None))
+ self.readWriteButton.setText(QCoreApplication.translate("MainWindow", u"Read-Write", None))
+ self.menuDevice.setTitle(QCoreApplication.translate("MainWindow", u"&Device", None))
+ self.menuToo_ls.setTitle(QCoreApplication.translate("MainWindow", u"Too&ls", None))
+ # retranslateUi
+
diff --git a/examples/serialbus/modbus/modbusclient/ui_settingsdialog.py b/examples/serialbus/modbus/modbusclient/ui_settingsdialog.py
new file mode 100644
index 000000000..af3a0665c
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/ui_settingsdialog.py
@@ -0,0 +1,173 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'settingsdialog.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QComboBox, QDialog, QGridLayout,
+ QGroupBox, QLabel, QPushButton, QSizePolicy,
+ QSpacerItem, QSpinBox, QWidget)
+
+class Ui_SettingsDialog(object):
+ def setupUi(self, SettingsDialog):
+ if not SettingsDialog.objectName():
+ SettingsDialog.setObjectName(u"SettingsDialog")
+ SettingsDialog.resize(239, 256)
+ self.gridLayout = QGridLayout(SettingsDialog)
+ self.gridLayout.setObjectName(u"gridLayout")
+ self.verticalSpacer = QSpacerItem(20, 43, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.gridLayout.addItem(self.verticalSpacer, 3, 1, 1, 1)
+
+ self.timeoutSpinner = QSpinBox(SettingsDialog)
+ self.timeoutSpinner.setObjectName(u"timeoutSpinner")
+ self.timeoutSpinner.setAccelerated(True)
+ self.timeoutSpinner.setMinimum(-1)
+ self.timeoutSpinner.setMaximum(5000)
+ self.timeoutSpinner.setSingleStep(20)
+ self.timeoutSpinner.setValue(200)
+
+ self.gridLayout.addWidget(self.timeoutSpinner, 1, 1, 1, 1)
+
+ self.label = QLabel(SettingsDialog)
+ self.label.setObjectName(u"label")
+
+ self.gridLayout.addWidget(self.label, 1, 0, 1, 1)
+
+ self.applyButton = QPushButton(SettingsDialog)
+ self.applyButton.setObjectName(u"applyButton")
+
+ self.gridLayout.addWidget(self.applyButton, 4, 1, 1, 1)
+
+ self.groupBox = QGroupBox(SettingsDialog)
+ self.groupBox.setObjectName(u"groupBox")
+ self.gridLayout_2 = QGridLayout(self.groupBox)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
+ self.label_2 = QLabel(self.groupBox)
+ self.label_2.setObjectName(u"label_2")
+
+ self.gridLayout_2.addWidget(self.label_2, 0, 0, 1, 1)
+
+ self.parityCombo = QComboBox(self.groupBox)
+ self.parityCombo.addItem("")
+ self.parityCombo.addItem("")
+ self.parityCombo.addItem("")
+ self.parityCombo.addItem("")
+ self.parityCombo.addItem("")
+ self.parityCombo.setObjectName(u"parityCombo")
+
+ self.gridLayout_2.addWidget(self.parityCombo, 0, 1, 1, 1)
+
+ self.label_3 = QLabel(self.groupBox)
+ self.label_3.setObjectName(u"label_3")
+
+ self.gridLayout_2.addWidget(self.label_3, 1, 0, 1, 1)
+
+ self.baudCombo = QComboBox(self.groupBox)
+ self.baudCombo.addItem("")
+ self.baudCombo.addItem("")
+ self.baudCombo.addItem("")
+ self.baudCombo.addItem("")
+ self.baudCombo.addItem("")
+ self.baudCombo.addItem("")
+ self.baudCombo.addItem("")
+ self.baudCombo.addItem("")
+ self.baudCombo.setObjectName(u"baudCombo")
+
+ self.gridLayout_2.addWidget(self.baudCombo, 1, 1, 1, 1)
+
+ self.label_4 = QLabel(self.groupBox)
+ self.label_4.setObjectName(u"label_4")
+
+ self.gridLayout_2.addWidget(self.label_4, 2, 0, 1, 1)
+
+ self.dataBitsCombo = QComboBox(self.groupBox)
+ self.dataBitsCombo.addItem("")
+ self.dataBitsCombo.addItem("")
+ self.dataBitsCombo.addItem("")
+ self.dataBitsCombo.addItem("")
+ self.dataBitsCombo.setObjectName(u"dataBitsCombo")
+
+ self.gridLayout_2.addWidget(self.dataBitsCombo, 2, 1, 1, 1)
+
+ self.label_5 = QLabel(self.groupBox)
+ self.label_5.setObjectName(u"label_5")
+
+ self.gridLayout_2.addWidget(self.label_5, 3, 0, 1, 1)
+
+ self.stopBitsCombo = QComboBox(self.groupBox)
+ self.stopBitsCombo.addItem("")
+ self.stopBitsCombo.addItem("")
+ self.stopBitsCombo.addItem("")
+ self.stopBitsCombo.setObjectName(u"stopBitsCombo")
+
+ self.gridLayout_2.addWidget(self.stopBitsCombo, 3, 1, 1, 1)
+
+
+ self.gridLayout.addWidget(self.groupBox, 0, 0, 1, 2)
+
+ self.label_6 = QLabel(SettingsDialog)
+ self.label_6.setObjectName(u"label_6")
+
+ self.gridLayout.addWidget(self.label_6, 2, 0, 1, 1)
+
+ self.retriesSpinner = QSpinBox(SettingsDialog)
+ self.retriesSpinner.setObjectName(u"retriesSpinner")
+ self.retriesSpinner.setValue(3)
+
+ self.gridLayout.addWidget(self.retriesSpinner, 2, 1, 1, 1)
+
+
+ self.retranslateUi(SettingsDialog)
+
+ QMetaObject.connectSlotsByName(SettingsDialog)
+ # setupUi
+
+ def retranslateUi(self, SettingsDialog):
+ SettingsDialog.setWindowTitle(QCoreApplication.translate("SettingsDialog", u"Modbus Settings", None))
+ self.timeoutSpinner.setSuffix(QCoreApplication.translate("SettingsDialog", u" ms", None))
+ self.label.setText(QCoreApplication.translate("SettingsDialog", u"Response Timeout:", None))
+ self.applyButton.setText(QCoreApplication.translate("SettingsDialog", u"Apply", None))
+ self.groupBox.setTitle(QCoreApplication.translate("SettingsDialog", u"Serial Parameters", None))
+ self.label_2.setText(QCoreApplication.translate("SettingsDialog", u"Parity:", None))
+ self.parityCombo.setItemText(0, QCoreApplication.translate("SettingsDialog", u"No", None))
+ self.parityCombo.setItemText(1, QCoreApplication.translate("SettingsDialog", u"Even", None))
+ self.parityCombo.setItemText(2, QCoreApplication.translate("SettingsDialog", u"Odd", None))
+ self.parityCombo.setItemText(3, QCoreApplication.translate("SettingsDialog", u"Space", None))
+ self.parityCombo.setItemText(4, QCoreApplication.translate("SettingsDialog", u"Mark", None))
+
+ self.label_3.setText(QCoreApplication.translate("SettingsDialog", u"Baud Rate:", None))
+ self.baudCombo.setItemText(0, QCoreApplication.translate("SettingsDialog", u"1200", None))
+ self.baudCombo.setItemText(1, QCoreApplication.translate("SettingsDialog", u"2400", None))
+ self.baudCombo.setItemText(2, QCoreApplication.translate("SettingsDialog", u"4800", None))
+ self.baudCombo.setItemText(3, QCoreApplication.translate("SettingsDialog", u"9600", None))
+ self.baudCombo.setItemText(4, QCoreApplication.translate("SettingsDialog", u"19200", None))
+ self.baudCombo.setItemText(5, QCoreApplication.translate("SettingsDialog", u"38400", None))
+ self.baudCombo.setItemText(6, QCoreApplication.translate("SettingsDialog", u"57600", None))
+ self.baudCombo.setItemText(7, QCoreApplication.translate("SettingsDialog", u"115200", None))
+
+ self.label_4.setText(QCoreApplication.translate("SettingsDialog", u"Data Bits:", None))
+ self.dataBitsCombo.setItemText(0, QCoreApplication.translate("SettingsDialog", u"5", None))
+ self.dataBitsCombo.setItemText(1, QCoreApplication.translate("SettingsDialog", u"6", None))
+ self.dataBitsCombo.setItemText(2, QCoreApplication.translate("SettingsDialog", u"7", None))
+ self.dataBitsCombo.setItemText(3, QCoreApplication.translate("SettingsDialog", u"8", None))
+
+ self.label_5.setText(QCoreApplication.translate("SettingsDialog", u"Stop Bits:", None))
+ self.stopBitsCombo.setItemText(0, QCoreApplication.translate("SettingsDialog", u"1", None))
+ self.stopBitsCombo.setItemText(1, QCoreApplication.translate("SettingsDialog", u"3", None))
+ self.stopBitsCombo.setItemText(2, QCoreApplication.translate("SettingsDialog", u"2", None))
+
+ self.label_6.setText(QCoreApplication.translate("SettingsDialog", u"Number of retries:", None))
+ # retranslateUi
+
diff --git a/examples/serialbus/modbus/modbusclient/writeregistermodel.py b/examples/serialbus/modbus/modbusclient/writeregistermodel.py
new file mode 100644
index 000000000..07b1226de
--- /dev/null
+++ b/examples/serialbus/modbus/modbusclient/writeregistermodel.py
@@ -0,0 +1,118 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from enum import IntEnum
+
+from PySide6.QtCore import QAbstractTableModel, QBitArray, Qt, Signal, Slot
+
+
+class Column(IntEnum):
+ NUM_COLUMN = 0
+ COILS_COLUMN = 1
+ HOLDING_COLUMN = 2
+ COLUMN_COUNT = 3
+ ROW_COUNT = 10
+
+
+class WriteRegisterModel(QAbstractTableModel):
+
+ update_viewport = Signal()
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_coils = QBitArray(Column.ROW_COUNT, False)
+ self.m_number = 0
+ self.m_address = 0
+ self.m_holdingRegisters = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+
+ def rowCount(self, parent):
+ return Column.ROW_COUNT
+
+ def columnCount(self, parent):
+ return Column.COLUMN_COUNT
+
+ def data(self, index, role):
+ row = index.row()
+ column = index.column()
+ if not index.isValid() or row >= Column.ROW_COUNT or column >= Column.COLUMN_COUNT:
+ return None
+
+ assert self.m_coils.size() == Column.ROW_COUNT
+ assert len(self.m_holdingRegisters) == Column.ROW_COUNT
+
+ if column == Column.NUM_COLUMN and role == Qt.DisplayRole:
+ return f"{row}"
+
+ if column == Column.COILS_COLUMN and role == Qt.CheckStateRole: # coils
+ return Qt.Checked if self.m_coils[row] else Qt.Unchecked
+
+ # holding registers
+ if column == Column.HOLDING_COLUMN and role == Qt.DisplayRole:
+ reg = self.m_holdingRegisters[row]
+ return f"0x{reg:x}"
+ return None
+
+ def headerData(self, section, orientation, role):
+ if role != Qt.DisplayRole:
+ return None
+
+ if orientation == Qt.Horizontal:
+ if section == Column.NUM_COLUMN:
+ return "#"
+ if section == Column.COILS_COLUMN:
+ return "Coils "
+ if section == Column.HOLDING_COLUMN:
+ return "Holding Registers"
+ return None
+
+ def setData(self, index, value, role):
+ row = index.row()
+ column = index.column()
+ if not index.isValid() or row >= Column.ROW_COUNT or column >= Column.COLUMN_COUNT:
+ return False
+
+ assert self.m_coils.size() == Column.ROW_COUNT
+ assert len(self.m_holdingRegisters) == Column.ROW_COUNT
+
+ if column == Column.COILS_COLUMN and role == Qt.CheckStateRole: # coils
+ s = Qt.CheckState(int(value))
+ if s == Qt.Checked:
+ self.m_coils.setBit(row)
+ else:
+ self.m_coils.clearBit(row)
+ self.dataChanged.emit(index, index)
+ return True
+
+ if column == Column.HOLDING_COLUMN and role == Qt.EditRole: # holding registers
+ base = 16 if value.startswith("0x") else 10
+ self.m_holdingRegisters[row] = int(value, base=base)
+ self.dataChanged.emit(index, index)
+ return True
+
+ return False
+
+ def flags(self, index):
+ row = index.row()
+ column = index.column()
+ flags = super().flags(index)
+ if not index.isValid() or row >= Column.ROW_COUNT or column >= Column.COLUMN_COUNT:
+ return flags
+
+ if row < self.m_address or row >= (self.m_address + self.m_number):
+ flags &= ~Qt.ItemIsEnabled
+
+ if column == Column.COILS_COLUMN: # coils
+ return flags | Qt.ItemIsUserCheckable
+ if column == Column.HOLDING_COLUMN: # holding registers
+ return flags | Qt.ItemIsEditable
+ return flags
+
+ @Slot(int)
+ def set_start_address(self, address):
+ self.m_address = address
+ self.update_viewport.emit()
+
+ @Slot(str)
+ def set_number_of_values(self, number):
+ self.m_number = int(number)
+ self.update_viewport.emit()
diff --git a/examples/serialport/terminal/console.py b/examples/serialport/terminal/console.py
new file mode 100644
index 000000000..125951374
--- /dev/null
+++ b/examples/serialport/terminal/console.py
@@ -0,0 +1,49 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Qt, Signal, Slot
+from PySide6.QtGui import QPalette
+from PySide6.QtWidgets import QPlainTextEdit
+
+
+UNHANDLED_KEYS = [Qt.Key_Backspace, Qt.Key_Left, Qt.Key_Right, Qt.Key_Up,
+ Qt.Key_Down]
+
+
+class Console(QPlainTextEdit):
+
+ get_data = Signal(bytearray)
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_localEchoEnabled = False
+ self.document().setMaximumBlockCount(100)
+ p = self.palette()
+ p.setColor(QPalette.Base, Qt.black)
+ p.setColor(QPalette.Text, Qt.green)
+ self.setPalette(p)
+
+ @Slot(bytearray)
+ def put_data(self, data):
+ self.insertPlainText(data.decode("utf8"))
+ bar = self.verticalScrollBar()
+ bar.setValue(bar.maximum())
+
+ def set_local_echo_enabled(self, e):
+ self.m_localEchoEnabled = e
+
+ def keyPressEvent(self, e):
+ key = e.key()
+ if key not in UNHANDLED_KEYS:
+ if self.m_localEchoEnabled:
+ super().keyPressEvent(e)
+ self.get_data.emit(e.text().encode())
+
+ def mousePressEvent(self, e):
+ self.setFocus()
+
+ def mouseDoubleClickEvent(self, e):
+ pass
+
+ def contextMenuEvent(self, e):
+ pass
diff --git a/examples/serialport/terminal/doc/terminal.rst b/examples/serialport/terminal/doc/terminal.rst
new file mode 100644
index 000000000..61579121f
--- /dev/null
+++ b/examples/serialport/terminal/doc/terminal.rst
@@ -0,0 +1,9 @@
+Terminal Example
+================
+
+The Terminal Example shows how to create a terminal for a simple serial
+interface by using Qt Serial Port.
+
+It demonstrates the main features of the QSerialPort class, like configuration,
+I/O implementation and so forth. Also, the class QSerialPortInfo is invoked to
+display information about the serial ports available in the system.
diff --git a/examples/serialport/terminal/images/application-exit.png b/examples/serialport/terminal/images/application-exit.png
new file mode 100644
index 000000000..32be6b3f1
--- /dev/null
+++ b/examples/serialport/terminal/images/application-exit.png
Binary files differ
diff --git a/examples/serialport/terminal/images/clear.png b/examples/serialport/terminal/images/clear.png
new file mode 100644
index 000000000..aa612f1f3
--- /dev/null
+++ b/examples/serialport/terminal/images/clear.png
Binary files differ
diff --git a/examples/serialport/terminal/images/connect.png b/examples/serialport/terminal/images/connect.png
new file mode 100644
index 000000000..dd5a51e98
--- /dev/null
+++ b/examples/serialport/terminal/images/connect.png
Binary files differ
diff --git a/examples/serialport/terminal/images/disconnect.png b/examples/serialport/terminal/images/disconnect.png
new file mode 100644
index 000000000..fd58f7a48
--- /dev/null
+++ b/examples/serialport/terminal/images/disconnect.png
Binary files differ
diff --git a/examples/serialport/terminal/images/settings.png b/examples/serialport/terminal/images/settings.png
new file mode 100644
index 000000000..3d1042e26
--- /dev/null
+++ b/examples/serialport/terminal/images/settings.png
Binary files differ
diff --git a/examples/serialport/terminal/main.py b/examples/serialport/terminal/main.py
new file mode 100644
index 000000000..0d2ce0a01
--- /dev/null
+++ b/examples/serialport/terminal/main.py
@@ -0,0 +1,17 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtWidgets import QApplication
+
+from mainwindow import MainWindow
+
+"""PySide6 port of the serialport/terminal example from Qt v6.x"""
+
+
+if __name__ == "__main__":
+ a = QApplication(sys.argv)
+ w = MainWindow()
+ w.show()
+ sys.exit(a.exec())
diff --git a/examples/serialport/terminal/mainwindow.py b/examples/serialport/terminal/mainwindow.py
new file mode 100644
index 000000000..bdfb0fb0e
--- /dev/null
+++ b/examples/serialport/terminal/mainwindow.py
@@ -0,0 +1,108 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QIODeviceBase, Slot
+from PySide6.QtWidgets import QLabel, QMainWindow, QMessageBox
+from PySide6.QtSerialPort import QSerialPort
+
+from ui_mainwindow import Ui_MainWindow
+from console import Console
+from settingsdialog import SettingsDialog
+
+
+HELP = """The <b>Simple Terminal</b> example demonstrates how to
+ use the Qt Serial Port module in modern GUI applications
+ using Qt, with a menu bar, toolbars, and a status bar."""
+
+
+def description(s):
+ return (f"Connected to {s.name} : {s.string_baud_rate}, "
+ f"{s.string_data_bits}, {s.string_parity}, {s.string_stop_bits}, "
+ f"{s.string_flow_control}")
+
+
+class MainWindow(QMainWindow):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_ui = Ui_MainWindow()
+ self.m_status = QLabel()
+ self.m_console = Console()
+ self.m_settings = SettingsDialog(self)
+ self.m_serial = QSerialPort(self)
+ self.m_ui.setupUi(self)
+ self.m_console.setEnabled(False)
+ self.setCentralWidget(self.m_console)
+
+ self.m_ui.actionConnect.setEnabled(True)
+ self.m_ui.actionDisconnect.setEnabled(False)
+ self.m_ui.actionQuit.setEnabled(True)
+ self.m_ui.actionConfigure.setEnabled(True)
+
+ self.m_ui.statusBar.addWidget(self.m_status)
+
+ self.m_ui.actionConnect.triggered.connect(self.open_serial_port)
+ self.m_ui.actionDisconnect.triggered.connect(self.close_serial_port)
+ self.m_ui.actionQuit.triggered.connect(self.close)
+ self.m_ui.actionConfigure.triggered.connect(self.m_settings.show)
+ self.m_ui.actionClear.triggered.connect(self.m_console.clear)
+ self.m_ui.actionAbout.triggered.connect(self.about)
+ self.m_ui.actionAboutQt.triggered.connect(qApp.aboutQt) # noqa: F821
+
+ self.m_serial.errorOccurred.connect(self.handle_error)
+ self.m_serial.readyRead.connect(self.read_data)
+ self.m_console.get_data.connect(self.write_data)
+
+ @Slot()
+ def open_serial_port(self):
+ s = self.m_settings.settings()
+ self.m_serial.setPortName(s.name)
+ self.m_serial.setBaudRate(s.baud_rate)
+ self.m_serial.setDataBits(s.data_bits)
+ self.m_serial.setParity(s.parity)
+ self.m_serial.setStopBits(s.stop_bits)
+ self.m_serial.setFlowControl(s.flow_control)
+ if self.m_serial.open(QIODeviceBase.ReadWrite):
+ self.m_console.setEnabled(True)
+ self.m_console.set_local_echo_enabled(s.local_echo_enabled)
+ self.m_ui.actionConnect.setEnabled(False)
+ self.m_ui.actionDisconnect.setEnabled(True)
+ self.m_ui.actionConfigure.setEnabled(False)
+ self.show_status_message(description(s))
+ else:
+ QMessageBox.critical(self, "Error", self.m_serial.errorString())
+ self.show_status_message("Open error")
+
+ @Slot()
+ def close_serial_port(self):
+ if self.m_serial.isOpen():
+ self.m_serial.close()
+ self.m_console.setEnabled(False)
+ self.m_ui.actionConnect.setEnabled(True)
+ self.m_ui.actionDisconnect.setEnabled(False)
+ self.m_ui.actionConfigure.setEnabled(True)
+ self.show_status_message("Disconnected")
+
+ @Slot()
+ def about(self):
+ QMessageBox.about(self, "About Simple Terminal", HELP)
+
+ @Slot(bytearray)
+ def write_data(self, data):
+ self.m_serial.write(data)
+
+ @Slot()
+ def read_data(self):
+ data = self.m_serial.readAll()
+ self.m_console.put_data(data.data())
+
+ @Slot(QSerialPort.SerialPortError)
+ def handle_error(self, error):
+ if error == QSerialPort.ResourceError:
+ QMessageBox.critical(self, "Critical Error",
+ self.m_serial.errorString())
+ self.close_serial_port()
+
+ @Slot(str)
+ def show_status_message(self, message):
+ self.m_status.setText(message)
diff --git a/examples/serialport/terminal/mainwindow.ui b/examples/serialport/terminal/mainwindow.ui
new file mode 100644
index 000000000..452fdd537
--- /dev/null
+++ b/examples/serialport/terminal/mainwindow.ui
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Simple Terminal</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QVBoxLayout" name="verticalLayout"/>
+ </widget>
+ <widget class="QMenuBar" name="menuBar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>19</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menuCalls">
+ <property name="title">
+ <string>Calls</string>
+ </property>
+ <addaction name="actionConnect"/>
+ <addaction name="actionDisconnect"/>
+ <addaction name="separator"/>
+ <addaction name="actionQuit"/>
+ </widget>
+ <widget class="QMenu" name="menuTools">
+ <property name="title">
+ <string>Tools</string>
+ </property>
+ <addaction name="actionConfigure"/>
+ <addaction name="actionClear"/>
+ </widget>
+ <widget class="QMenu" name="menuHelp">
+ <property name="title">
+ <string>Help</string>
+ </property>
+ <addaction name="actionAbout"/>
+ <addaction name="actionAboutQt"/>
+ </widget>
+ <addaction name="menuCalls"/>
+ <addaction name="menuTools"/>
+ <addaction name="menuHelp"/>
+ </widget>
+ <widget class="QToolBar" name="mainToolBar">
+ <attribute name="toolBarArea">
+ <enum>TopToolBarArea</enum>
+ </attribute>
+ <attribute name="toolBarBreak">
+ <bool>false</bool>
+ </attribute>
+ <addaction name="actionConnect"/>
+ <addaction name="actionDisconnect"/>
+ <addaction name="actionConfigure"/>
+ <addaction name="actionClear"/>
+ </widget>
+ <widget class="QStatusBar" name="statusBar"/>
+ <action name="actionAbout">
+ <property name="text">
+ <string>&amp;About</string>
+ </property>
+ <property name="toolTip">
+ <string>About program</string>
+ </property>
+ <property name="shortcut">
+ <string>Alt+A</string>
+ </property>
+ </action>
+ <action name="actionAboutQt">
+ <property name="text">
+ <string>About Qt</string>
+ </property>
+ </action>
+ <action name="actionConnect">
+ <property name="icon">
+ <iconset resource="terminal.qrc">
+ <normaloff>:/images/connect.png</normaloff>:/images/connect.png</iconset>
+ </property>
+ <property name="text">
+ <string>C&amp;onnect</string>
+ </property>
+ <property name="toolTip">
+ <string>Connect to serial port</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+O</string>
+ </property>
+ </action>
+ <action name="actionDisconnect">
+ <property name="icon">
+ <iconset resource="terminal.qrc">
+ <normaloff>:/images/disconnect.png</normaloff>:/images/disconnect.png</iconset>
+ </property>
+ <property name="text">
+ <string>&amp;Disconnect</string>
+ </property>
+ <property name="toolTip">
+ <string>Disconnect from serial port</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+D</string>
+ </property>
+ </action>
+ <action name="actionConfigure">
+ <property name="icon">
+ <iconset resource="terminal.qrc">
+ <normaloff>:/images/settings.png</normaloff>:/images/settings.png</iconset>
+ </property>
+ <property name="text">
+ <string>&amp;Configure</string>
+ </property>
+ <property name="toolTip">
+ <string>Configure serial port</string>
+ </property>
+ <property name="shortcut">
+ <string>Alt+C</string>
+ </property>
+ </action>
+ <action name="actionClear">
+ <property name="icon">
+ <iconset resource="terminal.qrc">
+ <normaloff>:/images/clear.png</normaloff>:/images/clear.png</iconset>
+ </property>
+ <property name="text">
+ <string>C&amp;lear</string>
+ </property>
+ <property name="toolTip">
+ <string>Clear data</string>
+ </property>
+ <property name="shortcut">
+ <string>Alt+L</string>
+ </property>
+ </action>
+ <action name="actionQuit">
+ <property name="icon">
+ <iconset resource="terminal.qrc">
+ <normaloff>:/images/application-exit.png</normaloff>:/images/application-exit.png</iconset>
+ </property>
+ <property name="text">
+ <string>&amp;Quit</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+Q</string>
+ </property>
+ </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources>
+ <include location="terminal.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/examples/serialport/terminal/rc_terminal.py b/examples/serialport/terminal/rc_terminal.py
new file mode 100644
index 000000000..cb3624e21
--- /dev/null
+++ b/examples/serialport/terminal/rc_terminal.py
@@ -0,0 +1,4464 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.4.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x000\xff\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x00\x09pHYs\x00\x00$\xe9\x00\x00$\xe9\
+\x01P$\xe7\xf8\x00\x00\x00\x19tEXtSof\
+tware\x00www.inksca\
+pe.org\x9b\xee<\x1a\x00\x00 \x00ID\
+ATx\x9c\xed\x9dy\x9c\x1dGu\xef\xbf\xd5\xddw\
+\x9f}\xd7\xbe\xcb\xb2\xe5\x1d\x8c\x17\x0161<\x88m\
+\xc2#\x80Cp\x82\x8c\xc3#$\x84\x80\x09\xe4\x85-\
+` \x04L\x02\x0e\x09Kx\x01,\x03q\x1e6y\
+\x1f\xcc\x92\x18\x8cc\x1b\x8f\xf7\xdd\xb2e\xcb\xb2\xd6\xd1\
+H\x9a}\xe6\xae\xbdT\xd5\xfb\xa3\xfa\xf6\xbd3sg\
+\xd1\x8cF\x92\xc9\xfc\xf4iMo\xb7\x97:\xbf>\xe7\
+\xd4\xa9SUBk\xcd\x22\xfe\xfb\xc2:\xd1\x0f\xb0\x88\
+\x13\x0b\xe7X_\xf0\xabW\x89\x0dJ\xdb\x17\x83nG\
+\x8b\x17\x84\x90;S9v\xbd\xe76]8\xd6\xf7Z\
+\xc4\xfc!\x8e\x85\x09\xf8\xea;\xc4+5\xd6\xfb4\x5c\
+\x0c,\xa9q\x8a\x06\x9e\xd1\x88\xcf^{\xb3\xbc\x85E\
+\xbbs\xd2`^\x04\xb8\xee:a5\xee\xb4\xfe\x1a\xcd\
+'\x00{\x96?{B\x09\xf1\xf1\x0f\xfd \xf8\xf9\x9c\
+o\xbc\x88c\x86y\x11\xe0\x86w\xd8\x9f\x03>^\xde\
+N&bt._M\xe7\xb2\x8d\xd4\xb5,\xc7s]\
+\x0a\xb9\x11rc\xc3\xec\xdb\xf98nq,\xfa\xad\x16\
+|\xf5\xda\x1f\xc8\x0f\xcc\xeb\xe9\x171o\xcc\x99\x007\
+\xbc\xdd\xf9m,\xfd3@\xd8B\xb0q\xd3\x06\xd6\x9e\
+\xfd\xdb\x08\xab\xb6[\xe1y>\xbb\xb6w\xb3\xfb\xb9\xc7\
+ \xbc\xa7\x10\xfc\xd5\x07~ \xbf8\xd7\x87_\xc4\xfc\
+1w\x02\xbc\xc3\xfa%\x88\xd7\x02\x9cy\xd6\xd9\xac\xdc\
+\xfc\x1a\x10\x16\xc5\xdc(={w0:\xd8\x8be\xd9\
+t.\xdf\xc0\xd2\xd5\xa7\x22\x84\x00`\xb4\xff \xdd\xbf\
+\xba\x05%%\x80\x16B\x5c\xfd\x81\x1f\x047\x1d\xab\x17\
+Z\xc4\xd1aN\x04\xf8\xd2\x95\xa2+\xe6X=\x80\xbd\
+|\xed\x19\x9c}\xe1\xff\x00\xa0w\xdf\xf3<q\xdf\xcf\
+QJ\x8d;?\x93\xcep\xe1\xeb\xdfA2\xdd\x00\xc0\
+\xe1\xbdO\xf1h\xf7/\x09\xef\xec+\xad\xd6}\xe8f\
+}`^o\xb2\x889aNq\x80\x98c\xbd\x9d\xd0\
+\xe9[u\xca\xb9\x00\x8c\x0e\x1d\xe6\xb1\xee\x9fU\x84\x1f\
+~\xf1\x00\xf9B\x9e\x07n\xbf\x09\xe5\xbb\x00t\xad>\
+\x93SN=#\xba\x9c\x10\xd6\xfb\xe7\xf6\xf8\x8b\x98/\
+\xe6\x18\x08\x12\xbf\x0f\x90nh\xa3\xb1\xa9\x0d\x80\x1d\x8f\
+\xfe*\xb2\xed\xafz\xc7\x17y\xff\x8dy\xae\xfe\xf2s\
+t\xad{\x05\x00\xb9\x82\xcb\xfe'\x7f\x0a\xe1w\xbf\xf6\
+\xcc\xd7\x90L\xa6\xcc\xd5\xe0\x7f\xfd\xdd;Ef>/\
+\xb2\x88\xb9a\x8e\x04\xd0\xab\x00:\x96o\xc4\x0a\xaf0\
+6<\x00@\xfb\xaa\xb3x\xd9\x15\x1f\xc6\x8e%h\xea\
+\xda\xc0%[o\x88~5\xd8\x7f\x88\xdc\xa1\xa7\xcc\x8d\
+\x9d\x18k7\x9dY>\xd4\xe4\xf8\xd6\xd5s{\x96E\
+\xcc\x07s\x0d\x05[\x00\xb6\x1d\x8bvHiT\xbf\xe5\
+\xc4\xc7\x9d\xa8\xa9\xf8\x18\x02\x0c\x01\xb4\x04`\xc5\xba\xb3\
+\xb1-\xbb|\xf0\xcf#Oq\x11\xc7\x0d\xf3\x22@\xe0\
+U\xa2\xbbu\x99$\x00Gv?\xc2\x8e_\x7f\x0f\x00\
+\xaf\x94\xe5\x81[?\x1d\x9d\x93J\xd8(\xbfDa\xe0\
+E\x00b\xc9:V\xac\xddX>\xbc\xf1\x1f\xae\xb2/\
+\x9f\xe3\xf3,b\x8e\x98'\x01\xf2\xd1\x8eeK\xc2\x08\
+\xb0\xd6\xdc\xfe\x8d\xab\xf9\xd6{\x97\xf0\xad?\xeeb\xdf\
+S\xbf\x04 \x19\xb7i\xc8\x98\x18A\xfe\xf0\xd3\xe1\xaf\
+4\xab7\x9e\x1d]Ci\xf5\xc19>\xcf\x22\xe6\x88\
+\xb9\x12`\x00`t\xb0\xbf\xec\xd3\xb1t\xfd9,k\
+KF'\x14\xc6\xfa\x08\xfc\x12\x00\xf1\x98\xc5\xda\xae$\
+e\xfd\xee\x17\x86pG{\xd0J\x92\xaeo\xa5\xa3\xd3\
+\x90Ghq\xe9W\xfe@\x9c\xc1\x22\x8e\x1b\xe6F\x00\
+\xcd\xbf\x03\xe4\xc6\xfa\x19\x19<\x04@\xb2y%K;\
+[\xd8\xb4\x22CkC\x8c\xba\xa4C]\xcaaY[\
+\x92M\xcb3$\xe3\xe3\x9b\x0ar\x87\x9eF+\x09J\
+\xb2zcE\xe6BY\x8bZ\xe08bN\x04\xd0\xa8\
+[\xcb\xeb=/>\x19\xae\x09\xea\x96\x9cE:a\xb3\
+\xaa#\xc5\xc6\xe5i6.K\xd3\xd9\x14\xc7\xb1'\xfb\
+v\xeeh\x0fAa\x08\xad\x02Z\xda\x96QWW_\
+>t\xd5\xdf\xbdSt\xcc\xe5\xb9\x16q\xf4\x98\x13\x01\
+\xae\xbdY?\x02\xec\x05\xd8\xbf\xe79\xdc\xa2\xf1\x052\
+\x9d\xa7\x91h\x5c>\xeb\xeb\xe4\xfb\x9eC\xab\x00\xad5\
+\xab\xd7o*\xefN\xc4\x02\xeb\xbdsy\xaeE\x1c=\
+\xe6\x9c\x11\xa45_\x05PR\xf2\xe4\x03\xbf\x88|\x81\
+\xe6u\x97`\xc5\x92\xd3\xfd4Bix\x0f2(\xa1\
+U@\xe7\x92\xd5\xc4b\xa6Z\xa9\xe1O\xaf\xbbR\xc4\
+g\xf8\xf9\x22\x8e\x01\xe6L\x80k\xffM\xdd\x00\xfaN\
+\x80\xbe\xde\xdd\xec\xdd\xf9\xb8\xb9`,E\xd3\x9aW\xcf\
+\xea\x1aZIJ\x83\xbb\xd1*\xc0\xb2\x04+V\xad.\
+\x1f\xealp\xec\xdf\x9f\xeb\xb3-b\xf6\x98{N\xa0\
+\xd6Z\x07\xfa\x9d\xc00\xc03\x8f\xddMvd\x10\x80\
+d\xf3*2\x1d\xa7\xce\xea2\xc5!C\x00\xad\x02\x96\
+._\x13\xed\x17\xe8Eg\xf08`^I\xa1\xd7\xfe\
+P\x1fD\x8b\xf7\x80\xf9\x9a\x1f\xbb\xf7g(i\x84Y\
+\xbf\xfce8\xc9\xc6\x19\xaf\xa1\x02\x17w\xac\x17\xad$\
+\xf1X\x9c\xae\xae\xae\xf2\xa1\xb3o\xf8\xfd\xd8%\xf3y\
+\xbeE\xcc\x8cyg\x05\x7f\xf0\xe6\xe0V47\x02d\
+G\xfb\xd9\xf1\xd8\xdd\xa6z\xa75\x8d\xab/BX3\
+g\x8a\x15\x87\xf6\xa2T\x80T\x01K\x97\xae\xac\x1c\x10\
+\xf2\xda\xf9>\xdf\x22\xa6\xc71I\x0b\xf7\xd2\xea\xcf\x81\
+\xdd\x00{v>A\xff\xa1\xbdh-\xb1\xe3ud:\
+7O\xfb[\xad5A)\x8b\x97\x1fBII\xaa\xae\
+\x9e\xfa\x86\x86\xf0\xa8\xb8\xe2+\x7f(\xd6\x1f\x8bg\x5c\
+Dm\x1c\x13\x02\xfc\xe5\xb7uVY\xea*@\x02<\
+\xf9\xe0\x9d\x94\x8a9\xb4\x92$[\xd6\x10\xcb\xb4O\xfa\
+\x8d\xd6\x1a\xa54J\x83\xd2P\x1c\xe9E\xc9\x00%\x03\
+\x96t.\x8d\x9eOH\xeb\xcf\x8f\xc53.\xa26\x8e\
+Y\xc7\x90\x0f}_?\x80\xe6\xb3\x00\x9e[\xe0\xe9G\
+\xef\x89\x22}uK\xceD\xd8\xa6V\xa7\xb5F\xe9\x8a\
+\xe0\xcb\x8b[\x18&\xf0\x8a(\x19\xd0\xd0\xdcH<\x1e\
+\xd5\x02\xdf\xf5\xc5+\xc5\xcc\xce\xc4\x22\xe6\x84c\xda3\
+h\x99T\x9f\x03q?\xc0\xc0\xe1\x1e\xf6\xef\xde\x81\xd6\
+\x12a\xd9\xa4;6U\x04\xaf\xaa\x84_^W\x9a\xe2\
+\xd8\x11\xa4\x0aPR\xd1\xde\xdeV\xbel]\xdc\xb1\xde\
+},\x9fs\x11\x15\x1cS\x02\xbc\xed\x87Z\x22\xe4\x1f\
+\x00Y\x80\x9d\xcf>Nvt\x10-\x03\x9cT\x0b\xb1\
+\xfa%\x93\xbe\xfc\xca\xa2q\xf3C\xc8\xc0G\xc9\x80\xe6\
+\xa6f\x84eB\xc8\x02\xde\x7f\xcb\x95b\xb6\xfd\x0e\x16\
+q\x148\xe6}\x03?\xf8\x03\xbd[#\xde\x0f\xa0\x94\
+\xe4\xe9\xc7\x1f\xc6\x0f<\x94\x0cH6\xad\xc2rRh\
+\x0dZU\x04_\xf6\x05\xa4\x94\x94rCH%\xd1@\
+sCS\xf9\xb2\xab\x0e\xda\xf6\x9bg\xba\xf7\xa3\xdf\x12\
+\xb1{o\x12\x7f\xda}\xa3\xf8\x9b\x07\x7f \x1af:\
+\x7f\x11\x0b\xd49\xf4\xda\x7f\x0d\xb6\x01\xb7\x00\xe4s\xa3\
+\xbc\xb8\xf3\x19\xa4\x0cPJ\x93lY\x8bB\xa0\xb4F\
+km\xc8P\xa5\x09\xbc\xc2(2\xf0\x912\xa0\xb1\xb9\
+\xbe\xfa\xb2\xd3\x06\x86\xee\xbdQ\xbc\xb1\x94`\xbb\xd0|\
+\x0d\xc1\xc7\x02\xc9'\x16\xe2\xdd~\xd3\xb0`\xbd\x83\x13\
+B\xfd1\xd0\x03p\xf0\xc0>\x06\x07\xfa\x91R\x82\x15\
+#^\xdf5\xc9\x17\xd0\xca\x10!\x08|\xbcR\x0e)\
+\x03l\xcb&\x9d6\x89\xa3\x08\xbd\xe5\x1f\xde.\xce\x9b\
+x\x9f\xeembs\xf76\xf1\x0b!\xb8\x0d\x88\xd2\x8b\
+\xd0L:w\x11\x93\xb1`\x04\xf8\x93\x1f\xe8a%\xac\
+w\x02\x0a`\xd7\xf3\xcf\xe0\x96\x0aH\x19\xe0\xa4\x9a\xb1\
+\xe2\x99\x9a\xbe\x80\xd6\x1a\xbf\x98CII \x03\xea2\
+U\xc9\xc2v%W\xe0\xa1\x9bD\xeb}7\x8a\xaf\x01\
+O\x02\xaf+\xef\x17V\xf4J\x152,bJ\x1c\x93\
+\xde\xc1\xd3\xe1+\xef\xb0\xaf\x17\xf0\x11\x80\xc6\xc6\x16\xd6\
+\xae_\x8fV\x0a)=\xf2\x83\xfbP\xd2\xd8\xfb\xc8\x1c\
+`4\x81\x93\xa8G\x0b\x0b%%G\xfa\x06\xf1\x83\x00\
+\xc0O%\xd4\x86\xd3/\xe6\xcd\x08>\x05DNB}\
+\xcbJ\xd6\x9cu\x15\x07w\xfe\x94\xc1\x83&\xe5\xccO\
+S\x7f\xc9\xdbtnA_\xf0%\x8ec>>\xc0D\
+\x8c\x05\xea\x13M\x8e\xf5Z\x0d\xe7\x8c\x8e\x0e\xd1w\xf8\
+\x10-\xad\xad(\x0dN\xba\x95\xd2\xd8\x91H\xe8\xd5\x04\
+\xf0\xbd\x12\xc2\x89\xa3\xa4\x22\x9d\x8c3\x9a\x0bhj\xd3\
+\xb15g\xf2\x08\x82\xa8\x8e\x18O6\xb0\xfa\x8c\xb7\xd1\
+\xba\xe2B\x10\x16\xe9\xfa\xa5\x0cb\x08\x10\xcf\xb3\x1ex\
+b\xa1\xdf\xf1\xa5\x8c\x05'\xc0\xa7~\xa8\xbd\x1b\xde.\
+\xae\xc2\xb2\x1e\x05R\x07{{H\xa6\x92\xc4b\x0eX\
+1\xacX\x1a\xdf-L&A\xe0#\xb4@\xa3I7\
+\x08:O\xd14\xb6i\xc0\x08_X\x0e\xcbO\xfdm\
+\x96\xae\x7f\x03\x96\x93\x8a\xee\x17O5G\xeb\xca\xaa\x10\
+e\x11\xb5q\x5c\x86\x88\xf9\xe0\xbf\xe9\x1d\x1a>\x0c\x80\
+\xd6\x1c\xec9\x80\x0c\x02\xb4\x92\x88x\x06-\xec\x9aq\
+\x01\x8dG\xf3\xb2\x1c\xcbO\xcf\x96\x85\x0f@\xfb\xcaW\
+p\xee\x1b\xfe\x96\xe5\x9b\xde<N\xf8\x00N\xa2\xaa\xf6\
+\xa7hf\x11\xd3\xe2\xb8\x8d\x11t\xed\xbf\xca\xaf\x83\xfe\
+\x19@\xa9T\xa2\xaf\xaf\x8f \x08PRb\xc7\xd2U\
+5\x02\x13*n\xe8\xf4Yqf\x8e\x86N\x8fr:\
+q}\xcbj\xce|\xcd\xc7X\x7f\xde{\x89\xa7Z\xc3\
++kP\xa3\xd1}\x9cx\x15\x01\xc4\x22\x01f\xc2\x82\
+\x9b\x80j\x04\x8e\xbe\xc6\x09\xc4\xd3@\xc7\xe8\xe8(\xf1\
+D\x9cd<\x86\xd2\x1aa\xc7P\x81G\xb2A\xd2\xba\
+\xca%\x9e\xaa\xf40\x8e\xa7\x1aY}\xc6[i]v\
+\x01T7/\xeb<\xa8a\xd0\x01Xu\x80\x8d\x1d\xaf\
+\xd4\x1a\x84X4\x013\xe1\xb8\x8e\x12\xf6\xe1\x9bt\x1f\
+Z\x5cS\xde\x1e\x1c\x18\xc4\xf3<\x82 \xc0I(:\
+7\x96X\xb2\xa9\x18\x09_\xd81Vn\xbe\x82s^\
+\xf7\x19Z\x97\xbf\xc2h\x02\xad@\xbb \x0f\x81\xec7\
+\xc2\x07\xd0>\x00\x89TE\xe6Zs\xce\xf1{\xbb\x97\
+&\x16\xbc\x1aX\x0b7\x5ce\xff\x13\x9a\xf7\x01\xa42\
+1Vl\x144\xb6\x97\x22U\x0f\xd0\xbe\xf2<V\x9e\
+\xf6;\xa1\xaa\x17 ,@\x82\x1c\x01]\x1c\xd7\xfd\x1c\
+\x00\xab-\xd4\x02\xf0\xf8\x7f\xfe%\xa5\xfc\x00#=\x1c\
+\xf9\xe9'\xb8M\xc0&`\x9d\x86\xfb<\xb8\xe6\xdbZ\
+g\x8f\xcf\x9b\x9e\xfc8!\x04\xf8\xca\x95\x22e\xc5\xad\
+G\xda\x97\xeb\xd3\x96\xad\xd78\x95>\xa6\xd4\xb7\xacb\
+\xcd\x99\xbfK\xa6y\x0d\x86\x11\xa1\x92R\xa3\xa0\xb3\x95\
+}b\x82\xf2\xb2\x1a\xc12&\xff\xd9\xbb\xbe\xc9\x9d_\
+}\x88\xe7\xef\x8c\xfa\xa1Vc'\xf0;_\xd7\xfa\xf9\
+\x05x\xb5\x97\x1c\x8e\xab\x0fP\xc6\xf9\x97\xf3*\xa5T\
+\xbcZ\x86\xf1d\x03+7_A\xfb\x8a\x97\x81\xb0\x89\
+\xf2\xcc\xf5\xa8\xf9\xea\xd1\xa1\xd0-\xb3\xae\xf5x-\xa0\
+]\x94Tt\x7f\xf7nn\xbb\xeeI\x8a#\x95C\x09\
+\xcb\x02\xadq\x0d\xd97\x027\x09!.\xd0\x8b\xc3\xd5\
+\x1d_\x0d\xd0\xfd\x1dq\x0a6\x7f\x0fD\xbd\x80-\xcb\
+\xa1k\xdd\x85t\xae\xddB,\x96\xc1\xb2\x13\x08+\x06\
+\xaa\x08j\x08\x080B\x0f\x171q\xdd`\xe7={\
+\xb9\xf5cw\xd2\xfbLO\xb4\xaf\xceq8\xaf\xb9\x99\
+\x95\xb1\x18\x85R\x89{FG9\x22#\x95p\xf5\xd7\
+\xb5\xde\xb6\xe0/}\x92\xe3\xb8\x10\xe0\xae\x1bES\xcc\
+\x84n\xdf\x07D\x0a\xbf\xb9k#\x9dk\xcf'\x91n\
+\xc5\xb2\x13\xd8v\x12\xcb\x12Xd\x11\x14\xa9)\xf4h\
+\xdb\x06,\x06\xf7\x8f\xf2\xef\x9f\xfc%O\xfedGt\
+?\xc7\xb28\xaf\xbd\x9d\xb3\x9a\x9aP\xbe\x8f\xefy\xf8\
+\x9e\xc7p\xa9\xc4\x7f\x8c\x8d\x11\xd6/\x0e\xbb\xb0\xf1\xbf\
+\xbb?\xb0\xa0&\xe0\x96[\x84\xbd\xac\xc0{b\x82\xcf\
+@\xa5J\x96\xaao\xa7}\xcd9\xa4\x1b:\xb1\xed$\
+J\xf9 4\xc8>\xb4p\xc1Ia\xdbq\xc2\x98`\
+\xa8\xeeue\x1b\x8d\x9b/q\xfb\x97\xef\xe7\xce\xaf?\
+H\xe0V\x0c\xfd\xe6\xf6v.^\xb1\x82\x14\xe0\xbb.\
+\xbeR(\xdbF\xda6\x0d\xb1\x18\xeb\xe3qvz\x1e\
+@W\x12\xfe\x02\xf8\xf4B\x96\xc1\xc9\x8e\x05#\xc0\xbd\
+7\x89\xd7.\xd5|E\xc3\xe9\xd1\xcd\x12i\x9a\x97\xae\
+\xa7\xbeu9\x96\x930\x1dB,\x17\xe9\x0d \xf5\x08\
+\x8e\x93\x04'\x8dP6\x96e\x87\x03\x86\x8c\x17\xbc\xd6\
+\x9a\x87\xff\xefv~|\xdd\xdd\x8c\x1e\xa9\xb4\xf3,k\
+l\xe4\xf2SNaI&c\xbex\xd7\xc5\xb2\xedh\
+\xb1m\x1beY\x9c\x9eL\xf2\xa2\xe7!\xcd\x15_\xb1\
+P\xef\xffR\xc1\x82\x10\xa0\xfbF\xf1\xbbB\xf0\xa3\xf2\
+\xb6\xb0c4u\xad\xa1\xbem)\xc2\x12h\x1d\xa0\x95\
+M\x10\x1c&(\x0e\x18\x019i\x94\xb0\x11\xc2\xc3\x12\
+\x0eJ8\xd8N\xd9\x194Z`\xcf\xa3\xbd\xfc\xe8\xa3\
+w\xb1\xf7\xb1\xc3\xd1\xbd\x1a\x92I.?\xe3\x0c\xce]\
+\xba\x94 T\xf7\xca\xb2\x90U\xc2\xb7l\x1b\xcb\xb2\xb0\
+l\x9b\x84\xe3\x90\x10\x82\x821}\xff\xedS\xce\x17F\
+\x03Xl\xaa\x1a\x1a\x88\x86\xb6v\x1a:\x96P\xae\xe8\
++\xe5\x13x\xbdh\xd9\x8f\xe3\xa4@\xa4\x11\xcaA)\
+'\xfc\xeb!\xc2u\xcb\x8a1r(\xc7\x8f?s?\
+\x8f\xdc\xfa\x5cy 2\x1c\xcb\xe2\xd5\xeb\xd7\xf3\xdbg\
+\x9cA2\x1e7\x82W*\x12\xb4m\xdb\xa8\xf2\x12\x12\
+B\xd86;\x5c\xb7,|\x84 X\x90\xf7\x7f\x09a\
+A\x08\xe0+\xbe\x1e\xb3\xd8\x82\xe62\x80\xd1#\xbdx\
+\xc51\xdaV\x9d\x86\xe5\x98P\xad\x1d\xebB[I\x94\
+\xecCH\x0f!\x1c\x94\xe5T\x11\xc1#(\x0a\xee\xf9\
+\xe7'\xb9\xfd\x86\xc7\xf1\x0a~t\xfdS\xdb\xdax\xe3\
+\xe6\xcdt65\xe1X\x16\x96eE*~\xaa/\x7f\
+\xd0\xf7\xb9w`\x80>\xd7\x8cUh\xc7\xe1\xf5\x9fd\
+}\xf76q7\xf0\x0d\xe0\x96-[kD\x0d~\xc3\
+\xb1\x80\xb5\x00!\xee\xdb\xc6G4\xfc\x0d!\xd1\x84%\
+h]\xb1\x8eL\xcb\x0a\x00,+\x8e%@\x05=X\
+Ba;)l'\x8d\xe3\xa4y\xf6\x17#\xfc\xf4\xf3\
+\xcf0t\xa02\x0eQ[*\xc5\x1b\xd6\xac\xe1\x94\x8e\
+\x0e\x9cx\x1c'\x1e'\x16\xfe\xd5\x10y\xfb\xbe\xe7\xe1\
+\x85~\xc0p>\xcf\xdd\x07\x0e\xf0\xdc\xf0p\xa4\x94,\
+\x1b.\xf8#Xs\xd1\xb8\x07\xde\x03|\x11\xf8\xd6\x96\
+\xad\xff}\xe2\x03\x0b^\x0d\xbc\xef&q\xa1\xd6\xfc\x1b\
+\x10u\xfaK\xd67\xd3\xba\xf2Tb\x89\x14\x96\x9d\xc0\
+\xb2\x13\x10\x1c\x06\x9d\xa3\x7f\x97\xe6?\xbf\xd0\xc3\xee\x07\
++\x91\x9c\xa4m\xf3\xca\xf6v^\xd6\xd5E\x22\x91\x88\
+\x84\x1f-\x89\x04v,6\x8e\x00\xa5b\x91{\xf6\xec\
+\xa1\xbb\xa7\x07\xbfR\xf7\xe7\xd4K7p\xd9\xc7\xb7\x90\
+h\xe8a\xf8\xd0S\x8c\x0d\xf6M|\xe4\xbb\x80\xab\xb7\
+l\xd5\xfb\x16\xb4`N\x12\x1c\x978@\xf7wD=\
+6\x9f\x01\xdeO8\xc4\xac\xb0\x1c\xdaV\x9fB]\xf3\
+2,;\x81;&\xb8\xf3+\x8f\xf1\xc8-=\xe8\xf2\
+h\xb3\xc0\xe9\x99\x0c[\xda\xda\xa8K\xa5j\x0a\xbez\
+[i\x8d\xef\xba<\xbe\x7f??{\xf6Y\x86\x8b\xc5\
+\xe8\x19:7t\xf1\x96/\xbc\x95\xd3.\xdd\x84\xd2\x12\
+\xad$RI\xdc|\x0f\x83=Opd\xef}\xa8 \
+23c\xc0\x07\xb6l\xd57.x\xe1\x9c`\x1c\xd7\
+H\xe0}7\x8a\xb3\xb5\xe0\x1b\xc0\x05\xe5}\x0d\xedK\
+\xd9uO\x03\xbf\xfe\xfa\x8b\x94\xb2\x15;\xbf\xd4\xb6\xd9\
+RWG{*5I\xd0\xb5\x84\xef\xc4\xe3\x1c\xce\xe5\
+\xf8\xe1\xc3\x0f\xb3\xab\xbf?\xbaN\xaa1\xcde\x7f\xf5\
+&.~\xcfk\xb0\xed\x22P@\xe9\x94I8Q\x0a\
+\xa5$JI\xbcb?\xfb\x9f\xf9w\xb2\x03{\xab\x1f\
+\xf9\xc7\xc0{\xb6l\xd5\x93\xd4\xc4o\x0aN@c\x90\
+\x10\xf7n\xe3C\x02\xae\xef}\x0a\xeb\xb1\x9ba\xf4P\
+\xe5h=\xf02\xcbbuY\xc0\x13\x05]C\xf0.\
+\xf0\x8b\x17^\xe0\xfe={Pe\x0f\xdf\x12\xbc\xf2]\
+\xaf\xe5\x8aO\xbe\x85\xba\xa6!\xb4\xf7,\xc8\xc3\xa6\xcd\
+@\x0b\xa4X\x02\xd62\xb4\xdd\x89V\x1a\xa5\x14J\x07\
+\x0c\xf5\xdcO\xef\xf3\xbfD\xc9\xa8\x82\xd0\x0f\xbc{\xcb\
+V}\xdb\xf1-\xa7\xe3\x83\x13\xd2\x1ax\x9d\x10V\xa1\
+\x83{\xb2}l)\xef\x8ba\x22F\x1b16b6\
+_\xbd\x88\xc5x\xb4\xaf\x8f;v\xef\xa6\xe4W\xb4\xc7\
+\x86W\x9d\xce[\xbf\xf4G,\xdf\xdc\x82\xf6\x9e\x80\xe0\
+ \xe8\x92\xc9#\xd0.Z\xbbH\xe9#\x03\x9f@Y\
+X\xc9\xf3\x10\xce\x1a\xa3\x0d\xb4\xc4\xcd\x0fpp\xc7\x8f\
+\xc9\x0f\xef/_R\x03\x9f\xd8\xb2U\x7f\xfe\xf8\x95\xd2\
+\xf1\xc1\x09!\xc0\xfb\x84\xf8\xb4\x86O\x81\xb1\xf3k\x80\
+\xb3\x81\xea\xa1\xa5,\xc7\xa9)\xfc\xb2\xd7\xbf\xb7X\xe4\
+\x8e\x03\x07\xe8\xaf\xb2\xf3\xad\xab\xbax\xf3\xe7\xdf\xcd9\
+\xff\xf3\x02\xb4\xbf\x0b\xfc\xe7M\xee\x80.\x01nD\x00\
+t\xc9\x10\xa0L\x02\xe9\x81\xbd\x0c;u\x11\x9a\x04J\
++\x94\x0c\xe8\xdf\xf7_\xf4\xef\xee\xae~\xf4\x7f\x01\xfe\
+d\xcbV\xfd\x1b\x13?8\xee\x04\xf83!\xceWp\
+\x1f`\xc5\x80\xdf\x02Zk\x9c'\x84\xa8\xf9\xd5\x8f\x01\
+\xf7\x0c\x0e\xf2b\xb6\xd2\x86\x13\xcf$y\xfd\x87\x7f\x9f\
+K?p%\xb1x\x1e\xed?\x1b\xa6\x8aU\x04^Y\
+7\xdbJy!\x09\xbc\x90\x04>JY\xd8\xa9\x0b\xb1\
+\xe2\xebPZ\xa2\xa4$;\xf0$\xbd\xcf\x8e\x9b\x04\xe3\
+v\xe0m[\xb6\xfef4\x22\x9d\x08\x02\xbcZ\xc1\xdd\
+\x00\x9b\x81\xb3\xa69\xd7\x8e\xc5*\x1e~,\xc6\xa3\xc5\
+\x22O\xe5r\x15;/\x04\xe7\xfd\xde\xc5\xbc\xe9\xb3\xd7\
+\xd0\xb4\xb4\x05-\xf7\xa3\xbdC\x08+\x00\xedM\x10\xfa\
+\x04\x22\xe0\x12\x04\xde\x04M`\xd6\x85\xb3\x86x\xdd%\
+a\xf75I)\xbb\x8f\x9e\xed\xffN\xe0\x95\xca\x8f\xf6\
+\x14p\xf9\x96\xad\xbag\x8aG\x7f\xc9\xe0\xb8\x13\xe0\x8f\
+\x85Xi\xc3>0\xaa\xff\xc2i\xce\x15\x96\x85\x1d\x8f\
+\xf3\x22\xf0\xa8\xe7Q\xaa\x9a\x8af\xf5\xcb\xd7\xf3\xd6\xeb\
+\xafa\xcd\xf9\xa7\x82\xecG\x07\xc6^K\xe9\x83\x96\xd8\
+6\xe3I@\x85\x04Z\x95@{UZ\xc0'\xf0}\
+\xa4\xaa\x90\x01\xab\x95x\xe3\x1b\x80\x04J)\x02w\x98\
+\x9e\xed?\xc4\xcd\x0f\x97\x1f\xe1 \x86\x04O\xf2\x12\xc6\
+q'\xc0uBXGL\xa7\xd1%\x02\xb8\x0c\x98j\
+\xf8\x8f#\xc0cB0\x5c\xf5\x8c\x8d]\x8d\xbc\xe9\xba\
+\xdf\xe3\x15\xef\xb8\x18\xa1]\xb4\xff\x02\xe8\x1c\x888Z\
+\xd9(%\x91\xd2E\x08M,f\x1b\x12\xe0FdP\
+\xb2\x80\x96%\x04.\x08i\x84\x1fj\x82\xc0\xf7\xcc\x00\
+\x15\xca\x90@\x93\x22\xd1t9\xc2j6#\x9bH\x97\
+C\xcf\xdfF.\x1c\xee\x1e3\x0e\xc2[\xb6l\xd5\xbf\
+\x5c\xb8\x12[X\x9c('\xf0j\x0d\xdf\x05X\x86\x99\
+n\xb4\x1ay\xe01\xa0z\x16)'\xe1p\xe9\x9f\xbd\
+\x96\xd7\x7f\xf8\x8d$2)t\xb0\x1b\x82\xfd bh\
+\x1c\x84H\xa0q\x90A\x10\x0e2Q\xc2\xb6m\xe2\xc9\
+\xd88M \x83\x02J\x16A\xbaXN\x80\xd6\x92@\
+z\x04\xbeG\xe0\xf9\xf8\xd2Ck\x89V\x01R\xfa(\
+%H4\xbe\x01;n\x02\x99\x96\xdd\xc0\xe1\x9d?b\
+\xf8\xe0\xa3\xe5G\xf3\x81\xad[\xb6\xea\x9b\x17\xb4\xd0\x16\
+\x08'\x84\x00B\x08\xf1\xa7\xf0\x90\x86\x97\x03l\x01V\
+aF\x98\xda\x0e<\x17\xae\x97q\xd6\x15g\xf0\xe6\xcf\
+\xbd\x85\xf6\xb5\x9d \x07\xd1\xfeS\xa0}\xb4N\x00\x0e\
+\x9a\x18Xq,+\x89\xd6f\x8c\x22\x19\xb8\xc8\xa0D\
+2\x95&\x16\x0f5\x81\xf6\xd0\xb2\x84\xefg\x8d\x19P\
+\x1e\xb6#P: \x08<\xbc\x92K }\x82\xc0G\
+\xe8\x00E\xa8!\xa4$Q\xff*\x12\x99\xb3\x01A,\
+\xb9\x92\xfe=\xb7r\xe4\x85_\x95\x1fQ\x03\xd7n\xd9\
+\xaa\xff\xe1\xb8\x15\xe21\xc2\x09!\x00\xc0\x9f\x08\xb1E\
+\xc0\xbd\xe5\xedf \x87\xf9\x9c\xcahZ\x0e\x97}\xec\
+L\xce\x7f\xfb\xbb\xb0\x84\x8d\x90\xcf\x83\xf7\x0c\x88\x84Q\
+\xf9$\xd0Xh\xe9\xa0qp\xe2\x19\x101d )\
+\x15FP\x81\x8b\xd6\x1euM-XBE\xe6@\xfa\
+\x05|7\x87V\xc6\x0c81\x81\x94&\x97\xc0sK\
+\x04\x81!\x01H\x10\xd28\x87\x81O\xa2\xee\x5cR\x8d\
+\x97 \xac$\xb1\xe4\x1a\x86{~B\xcf\xf6\x1fU\xbf\
+\xd6\x17\xb6l\xd5\x1f=.\x05x\x8cp\xc2\xa6\x8f\xff\
+\x86\xd6\xdd\x1a>J8~\xc00\x15\xe1[\x0e\xd9\xf3\
+\xde\x09\x97}\x066\xbczS\xd8u\x5c\xa3\xdc\xe70\
+I\xa2f\x11\x04\x08\x14J{(\xe5\xe2{y \xc0\
+v\x04\xb1x\x1c\x8dD\xc9\x80\xec\xd0\x91\xaa;\x0b,\
+;\x06\xc22\xc3\xd4\x04\x012P\x08L\x93\xb2\x13\x8b\
+\x01\x02\x81@\x05 \x03\x10\xc2B\x08\x8bR\xf6\x11\xf2\
+C?E\xab\x02\xd2\xeb\xa3y\xf9\x9bX}\xee\xbb\xab\
+\xc7$\xf8\xab\xeem\xe2;\xdd\xdb\xc4\x09\xc9\xb6\x9e\x0b\
+N\x18\x01\x00\xbe\xa1\xf5\x17\x80\xd7\x03}\xc0a\x8cF\
+\xf8\xd2\xe5\x9f\xe3\xaf7\xfe\x96\xc9\xfdt\x9c8h\x8d\
+F\xa1T\x01\xad\x03\xd3\x1bH\x87$\x10\x0at\x80V\
+>\xd2/\xa0\x82\x22\xe8\x80X\x22\x89\xed8h\xad\x08\
+\xfc\x12\xb9\xd1\xc10\x8d\x5c \x84 \x91H\x86\xc3\xd4\
+\x08JE\x0f\xa5\x01!\xb0l\x8bx\xc2\x90\x00\x01*\
+\xd0H_SNf\xf1\x0a\xcf\x91\xed\xff\x11\x81\x7f\x18\
+%\xc7\xa8\xef\xb8\x98\xb5\xaf\xf8P\xf5dY\xef\x02\xfe\
+_\xf761\xbe\xd7\xeaI\x8a\x13f\x02\xc6=\x84\x10\
+\xa2:G\xbf{\x9bx\x1f\xf0O\x00\x9b.\xbc\x9aL\
+\xcbf,\xcbFe\xbf\x8fm;\xe1leq\x10f\
+Q\xda\xc6+\x05hma9\x09\x12\xa9F\xc0B)\
+\xc9\xd8@\x0f\x81_BI\x8f\xc6\xb6\x0e\x12I'\xf4\
+\x07|\xdc\xe2\x18n)\x8b\x0c|,\x1b\xe2I'\xac\
+\x06\x06\xf8\xbeO\xa9(\x09\xbc\x1cR\x05\xa0%\xc2\x91\
+\xe8\xb0\xa9\xd2\x8euP\xdf~%\xf1\xcc\x19\x08\x91\xc0\
+\xcb\xeff\xf7C_\xc2w\xa3<\xc5\xfb\x80+\xb6l\
+\xd5\xc3\x9c\xc48\xa1\x1a\xa0\x8c\x1a\x1d4\x22W@c\
+\x1b\x13\xa0|\x94\x0a\xc2\xd6\xbb\x8a\x19\x80\x00Kh\x10\
+\x12\xa5}\x02\xb7\x80\x96\x9e\xd9oA\xba\xb1\x19\xad\x15\
+ZKF\xfa\x0e\x86s\x16\x9b\xaf9\x91Jb\x09\x0b\
+4\xf8^@\xe0\x06\x08,\x84\x10\xd8\xb6 \x91Ja\
+\xc5Z@\x0bd\x00\xbeK\xd4_E\xfa}\x8c\xf5}\
+\x0f/\xff4\xa0\x88g\xd6\xb2\xfe\xa2O\x93\xa8\x8bF\
+E\xbd\x08\xb8\xb7{\x9b\x98\xfd\x0c\x1a'\x00'\x05\x01\
+j\xa0B\x00M$\xc0r\xd3\xadRj\x82)\xf0q\
+l\x81\x96>Jyxn6:\x16\x8f'Hf\xea\
+\xcc\x98\xc4\x81\xc7H\xff\xe1\xaa\xdb\x08R\x99LH0\
+M\xb1P2QF!@\x08\x84(\x92L\xd7c'\
+:\x11B\xa0%\xf8\xae\x8eH\xa0\x82QF\x0f\x7f\x1b\
+7g\x06!q\x12\x9d\xac\xbb\xe0SdZ\xa2a\xef\
+O\x03\xee\xeb\xde&f7v\xfe\x09\xc0\xc9J\x00\xaf\
+\xbc\xa2\x82B\xe8\x03\xd8\xa6c\xb02\xc9\x1cJI\xa0\
+B\x02\xdb\xc1T\x0d\x95Q\xedF;H@R\xd7\xd8\
+\x1ce\x18\xe7F\x87)\x15*\xe9\xe4\xb6c\x93H%\
+\xd1J#\xa5\xa6\x94/!\x84\xa0\xfc\x0f\xd5G\xba~\
+\x09N\xc2$\xb5\xca@\xe0\x16u\x94\x9c\xaaU\x91\xd1\
+C\xdf\xc0+<\x15^\xaf\x915/\xff(\x8d]\xd1\
+\xac\xa8+0\x9a \xca\x818\x99p\xb2\x12 \xd2\x00\
+R\x16\x8d\x06P\x1a-\x1c\xd3H\x13i\x82 <5\
+@ \x89\xc5mc*\x02\x17\xafX\xd1\x02\x02EC\
+K\x1bZ\x99\xb1\xe8\x06\x0e\xf5Rmu\xd2u)l\
+\xc7\x98\x1a\xb7\xe0\xe1\xb9\x81!A\xb8(o'\x99\x96\
+\x8d\xc4S\xcb\x11\x80\x0a\xc0\xcd\xeb(sIk\x9f\xe1\
+\x9e\xaf\xe2\x17\x9f\x05@X)V\x9cu-\xad\xab\xa2\
+\x99SZ\x80_uo\x13\x97\x1d\x8f\xc2;\x1a\x9c\xac\
+\x04\x884\x80\x0c\x0aFE\xa3P:\x16\xb5\xd9\x97I\
+`L\x81!A,fE5\x82ba\x94j-\x90\
+H&I\xd7\xd5\xa1Qxn\x91\x91\xaa\xac!\x80t\
+}&\xd44P\x183c\x16\x19S\x00\x08MP|\
+\x9c\xba\xb63\x89gV\x01f\x8c\xc3RN\xa3\xa2\x88\
+U\xc0\xf0\xc1\x7f\xc4+>\x83\xf9\xa9\xc3\xd2S\xdfM\
+\xd7\xa6\xdf\x89n\x01\xfc\xb8{\x9b\xd8\xba0E67\
+\x9c\xac\x04\x88R\xb0|7\x17\xfa\x00\x1aM\xac\x22x\
+5\x99\x04\x96\xad\xb1l\x81V\x01\x81\x9bG\xfa%\xaa\
+I\xd0\xd8j\x1c4\xad\x15\x83G\x0e\xe3{\x11\xcf\x88\
+\xc5\x1d\x92\xe9$h\x8d\x94\x8a\xfch\x11Q\xf5\x0f\xed\
+\xe1\x17\x1e\xa3\xb1\xfde\xa4\xea\xd6\x98\x91iB\x12\x94\
+\x93\x87\xb4*2v\xe4&\xdc\xfc\x93\x18GA\xd0\xbe\
+\xfam\xac<\xfb\x8f\x08\x1dO\x07\xf8n\xf76\xf1\x91\
+\xe3R\x8a\xb3\xc0\xc9J\x80(#7p\xf3F]k\
+\x85&\x1e6\xf6H\xa4\x0c\xc2\x86\x9b\xf1\xfe@<a\
+\xcc\x80V\x01n)k\x06\x08\x08\x17\xdb\x114\xb7\xb7\
+\x816)`G\xf6\x8fo\xcd\xcd4d\x10\x96\x85\x96\
+\x1a7\xef\xe1\xbbA\xe4\x10\x22\x04J\x0e\xe3\x95\x9e%\
+\xd3~\x0e\xe9\x86u\xa6\xc3\x92\xd2\xb89E9\x9fT\
+zG\xc8\x0f\xfd\x147\xf70\xe5\x80vc\xd7%\xac\
+\xbb\xf0\x13\xe5\xf1\x8b\x04p}\xf76\xf1\x0f'C\xc0\
+\xe8d%\xc0!B?\xc0+V4@\xb9iV\xc9\
+\xc0\x8c=\x1c\x04U\xfe\x80\x04|\xe2\x09\x0b\xa5\xcd\xc4\
+\x13n>K\xa5\xbah\xb4@CS\x13\xf1x\x02\xad\
+\x15\xd9\xd1Q\xb2#\xa3\x91C'\x84\xa0\xbe\xa5\xc9\xe4\
+\x01\xa0\xc9\x0e\x17@\x85V \xfc\x17\x94v#\xbd\x1e\
+\xea\xda\xce$\xd3\xb2\xd1\x8cs\xac\xa08\xa6\x08\x5cs\
+!\xbf\xf8\x02\x85\xd1\xbb)\x8e\xdd_~\x0d\xd2\x8d\x1b\
+Y\x7f\xd1gH\xd6G5\x84?\x07\xfe\xab{\x9b\x88\
+f\xc78\x118)\x09\xb0e\xabV\x84\x8d\x81\xa5|\
+_8\xc9\x84\x02\xab\xc9h\x00e4\x80\xef\x87D\x08\
+\x1dB\xa5$BHb1\x0bM\x80[\xca#\x037\
+t\x06\xa5\x19_H(\xda\x96vR\xeeh\xda\xbb\xef\
+`H\x1e\x00M<nS\xd7\xb4\x04\xad52P\xe4\
+FK\x94\xa3\x82eM\xe0\x15\x9eD\xc9Q\xeaZ6\
+S\xdfvZ\xd4}\xb1\x94\xd5xEC\x02/\xff\x0c\
+n\xeeQ\x8a\xa3\xbfF+\xd3\xb9%\x96le\xed\xf9\
+\x1f\xa7\xa9+J\x85|%\xf0x\xf76\xf1\x9a\xe3V\
+\xb8\x13pR\x12 \xc4>\x00\xbf\x985m\xf8Z#\
+\xac\xa6\xa8\x1a(\x03\x89\x96\x01\x81?^\x0b(%I\
+\xa4\x9cp*:I\xa9\x90\xc5|\xfdeM\xa0He\
+\x92467\xa1\xd1\xf8%\x8f\xbe\x9e\xd0\xe5\xd0\xe6\xbf\
+\xba\xe6f\x9cX\x06\xa55\xc5\x9c\x8b\xef\x05\x13\xfc\x01\
+E)\xfb\x10Z\xfbd\x9a7Q\xdfi\xe6>\xd6\xda\
+\xf8\x04n\xce\x90\xc0\xcd=\x81Wx\x9e\xc2\xe8\xdd\xa8\
+\xc08\x9d\xb6\x93`\xc5Y\x7fL\xd7\xc6\xab\x08\xfd\x82\
+\x0e\xe0\x97\xdd\xdb\xc4G\xbb\xb7M\x1c\xf8h\xe1q\xd2\
+\x13@)\xf0\xdd~\xb4R\x08\xbb)t\xfa\x14R\x05\
+\x04A@\xe0\xfbF\xf0\xb2B\x00'\x1eCJ\xe3\x1c\
+\x16\xb3c\x15\x0d\x80\x8c4A\xfb\xd2\x0ela\xa1\xb4\
+\xa2\xaf\xb7\x9fR\xbe\x14\xc6w4\xc8\x01\x9a\x97\x9c\x1d\
+\xd6\x0a4c\x03ES\xe5\x0b\xb5\x80\x10\xa0d\x9eR\
+\xce\xe4\x04d\x1a7\xd0\xb4\xf4\xecp\x143p\x0b\x9a\
+\xe2\x98\xe9\xd1\x5c\xca=\x82\xf4z)\x8e\xdeGP\xda\
+e\xdeL\x08\xda\xd7\xbe\x81\xd5/\xffK,'\x0d&\
+\x11\xfa\xf3\xc0m\xdd\xdb\xc4q\x1d\xdb\xf0d&@\x94\
+\x93\xed\x16\xfaM\x0c^$\x8d#\xa8\x0d\x09\x94\x92\x04\
+\x81\x8f\x94\xe35\x80\x10\x8aX\xccF*I\xa9\x90G\
+)\x13\x1a\x8eH\x80\xc4v\xa0sEG8y\x85\xe2\
+\xe0\xee\x1e\xa2\x10\x9fV8N\x81\x86\xb6M\xa0\x08M\
+\x81[\xfe\xfe)\x87\x92\xa5w\x18\xaf\xf8\x1c\x00\xa9\xfa\
+\xb5\xb4,\x7f\x85q\x225x\x05M~D\x83\x92\x94\
+\xc6\x1e@\xcaa\xdc\xfcv\xdc\xdc\xa3\x94\x9d\xc3\xfa\xb6\
+\xd3\xd9\xb0\xe5\xb3$\xea\xa2h\xf1\x15\xc0\xa3\xdd\xdb\xc4\
+\xcb\x16\xbap\xcb8\x99\x09\x10\xe5\xda\xb9\xa1\x1f\xa0\xb5\
+\x02\xab\xd9LF\x85B\x06\xe6\xcb\x0f\x02o\x9c\x1f\xa0\
+\x94$\x91\x8c\xa1\xa5\xa91\x14\xb29*f\xc0\x10@\
+kEcK\x13\xe9\xba\x14Zk\xc6Fs\x0c\xf5\x8d\
+\x18\xcf\x1e\x8d\xf2{i\xe88\x15;^\x8f\xd6\x9ab\
+\xd6\xc3-\x04D.\xa1\xa8\xb4\x0e\x06\xbe\x09/'2\
+\xcbi[\xfd*\xacp\x82,\xbf\xa4\xc9\x0e(\xa4\x0c\
+(\x8d\xdd\x8fR9\x02\xf7@\xe8\x17\x98t\xf6x\xaa\
+\x83\xf5\x17\xfe5\x8d]\xe7\x97_w\x0d\xd0\xdd\xbdM\
+\x1c\x97\x09\xb4Of\x02<X^)e\xfb\x01\x85\xd6\
+Uf\x00\x15U\x09\x03\xcf\x1f\x17\x1dTJ\x12K\xc6\
+L\x8dA)rc\xd9\xaa6\x84\xf2_\x85F\xb1d\
+U8S\xa9\x86\xde\xdd\xbd\x04A9\xe5?@\xfb\x07\
+\xe8Xu\x11Z\x0bP\x90\x1drQJ\x87\x83\x93U\
+\xcc\xb5\x9b}\x14Uv\xf4\x12\xadt\xac\xbd\x04+\x9e\
+1\x13`\xf80\xd6\xa7\xf0\xdd\x12\xc5\xd1\xfb\xd0\xaa\x84\
+\x0aF(\x8e\xde\x8d\x0a\xccT\xbb\x96\x9db\xe5\xd9\xef\
+c\xd9\xe6w!L\xcd0\x01|\xa3{\x9b\xb8\xa7{\
+\x9b\x98.qz\xde8i\x09\xb0e\xab>\x08\xf4\x02\
+\x14\xb3\x03a\xa3\x90\xc6r\xda\x22?\xa0\x9c\xbb\xef\x8f\
+#\x80Y,\x0bl\xc74\x09\xe7\xb3y\x82 \x18/\
+\xfcpI\xa4\x12\xb4v\x9a\xa4O\xdf\x0b8\xbc\xbf\x8f\
+\xf2\x90\xe5\xd2;\x80\x93\xac\xa7e\xe9\xe9(L[A\
+v\xc0\x8b,E\x19Z\xfb\x94\xc6\x1eD\x87\xaa\xdd\x8e\
+\xd5\xd1\xb9\xf6\x12\x12\xe9fSM\x0c \xdb\xa7)e\
+\xf3\x14\xc7\xeeCk\x1f\xadJ\x14\xc7\xba\x09\xdc\xbd\xe1\
+U\x04-+~\x8b\x0d[>G\xb2.\xeaH\xfd*\
+\x8cI\xf8Z\xf76\xd1\xb2\x10\xe5|\xd2\x12 \xc4C\
+\x00~1\x8f\x0a\xc6\x0c\x01b\xcb\xab\x22\x80\xda\x04\x85\
+\x02\xe3\x10N$A<i\xe6\x1bP\x81\xa4\x90\xcd\x87\
+\x1a\xa1\x1cE\xac\x90\xa0c\xe5z\x9c\xb8\x83F3\xd8\
+;L\xa9\xe8b\xdc\xbf\x00\xe9\xed\xa3\xa1\xfdt\x92\x99\
+V\x13\xf4)J\xf2c\x95&\xe52\x94\x1c\xc3\xcd=\
+\x1em[v\x82\xf6\xb5\xaf&\xd3\xb2$\x8c\x1ajr\
+\x83\x8a\xec\xc0(\xc5\xb1\xfb\x0dY\xb4\xc2\xcd=\x81\x9b\
+{(LW\x83D\xdd2\xd6_\xf4i:\xd6\xbd\xb1\
+|\x0f\x1b\xf8S`g\xf76\xf1\xde\xeem\x13G\xc8\
+\x9c\x1fNv\x02Df\xa0\x985\xc1Aae\xc0j\
+\x08\xbfre\xe6\x1c\x9ed\x06B? \x13\x0b{\x00\
++r\xa3\xd9*\xcd1^\x0bXv\x9c\xe5\xebO\x8f\
+\xec\xff\xe1\xbd\x95v\x02\xe9\xed\x05$\xed\xab/\xc4\xb6\
+\x1c\xd0P\x18\x09\x08\xbc\xc9\x894\x81\xdb\x83_\xf6\xf4\
+\x01!lZ\x97_@\xe3\xd2p(\x22\x01\xc5\xacb\
+\xf8\xe0\x00\x85\xe1\x07L\x08\x1b\x08\xdc^\x0a#w\x22\
+\xfd#\xe1;\xc6\xe8\xdcp%\xeb/\xfa8\x89L\xf4\
+\xe1\xb7bF2y\xa4{\x9b\x88\x02\x09\xf3\xc5\xc9N\
+\x80\x87\xca+\xc5\xb1\xbd\xd1N;\xb6\xcc\x08S\x98\xb8\
+\xbd\x96\x12\xaf\xe4\x8d\xab\x0a*%\xb1m\x81\xe5Xh\
+\x14\xb9\xb1\xbc\x99\x9aVI\xb4R\x111\xb4V(9\
+Dc\xd7\xb9d\x1a\xccX\xc3\xd9\x91<\xb9\x91<e\
+\xfd-\xbd\xbd\xd8\xf1zZW\x9d\x13Mm\x93\x1d\x08\
+\xa8\xea\xa7\x12\xc1\xcd?\x83\x0c\x06\xaa\xf6\x08\x1a;\xce\
+\xa4}\xcdY\x80\x00\x0d^I3\xb0\xff\x08\xb9\x81\xbb\
+Q\xaa\x00\x80V%Jc\xf7\xe3\x15\x9e\x84p\xe8\xa2\
+T\xc3)l\xd8\xf2\xb7t\xae\x7fM\xf5\xa0\xa8\xe7`\
+\x9a\x97\xbf\xd7\xbdM,\x99o\x01\x9f\xb4\x04\x10B\x88\
+#\x83<F\x984\x9a\x1f\xaa\x0c\xd8a'V\x84_\
+\xb3\xa9\xf2I\xa5\xf0jh\x00\xa5$\xa9L\x02)\x15\
+JJrcf>c\xa5eT\x95\xd4JGm\x07\
+\xcb7U\xfa)\x1d\xde7\x88*\x1b\x02w\x0fhI\
+\xa6y=\xf5\xad\xe5(!\xe4\x86j0\x00M)\xfb\
+0J\x15\xc7\xedM7\xaeg\xc9)\x17\xe0\xc4\x8c\x16\
+Q\xbefp\xff\x08\xc3=\xff\x85\x0c\x9dA\x00\xbf\xb8\
+\x87\xe2\xc8]\xa8\xc0d\x92\x09+M\xc7\xfakX\xbf\
+\xe5\xa3\xd4\xb5tT_\xf2\x0f\x80\xe7\xbb\xb7\x89\x0f\xcf\
+\xa7\x9cO\x0a\x02\x84\xed\xeeV\xb88B\x88\x18\x10{\
+\xcb_PT\x9aG\x00\xdc\x5c\x0e\xe9\x99/+\x96X\
+\x11\xda\xf1\x00D\xd8\xb7\xbf\xec\x0c\xca\xf1A\xa1T]\
+\x22\xfa\xda\xb3\xc39\xd3\xf3\xb7Z\x0b\x94\x89 \x87I\
+7\xae\xa7\xb9\xcb\x84\xe6\xbd\x92\xcf\xe8\x91\xb1\xb0\xc1\xc7\
+'p\x0d\x01[W\x9cO,\x9e\x04\x05^^S\xcc\
+N6\x05Z\xb9\xb8\xd9\x87\xd1\x8c'H<\xb5\x94%\
+\x9b^E\xb2.\x19\xb5!\x8c\x1e)qd\xd7\xaf\xf1\
+KQ\xd8\x03%s\x14G\xef\xc1/>G\xd9\xe3L\
+\xd6\x9d\xc6\xea\x97\x7f\x8e\xd6U\xe3\xba\xd1d0\xa3\x99\
+\xcc\x19'\x84\x00U\x02\xb7\x85\xa9\xf7\xc40M\xa5\xb1\
+\xaau\x07pJ.\xb7\x81\xd1\xc6\x85\xd1\xbd\xe6\xf7V\
+\x1a;\xd6n\xd4|\xbc\x01%C-\xe0\xfa\xe3s\x05\
+\x94D\xd8\x16\x89LKX\x1d,\x10\x04~$\xf8\xc8\
+\x17P\x0a\x15\x0c\xa3\xb5`\xe9\xfa-\xd1\x94\xb5\x03\xbd\
+c&\xe4\x8cF\x96^4\x89\xa1v\x92\x8eu\xe7\x95\
+\xa3\xc6\xfa\xdd:\xd7\x00\x00\x10pIDAT\xe4\x87\
+\x14\xd2\x9f\xf8\x86 \x83\xa10_p<\xecX\x0b]\
+\x1b.\xa5\xa9\xb3\xf25\x97\xb2\x92\xde\xe7\x1e\xa60\xb2\
+=\xaaI @\x888\xd5\xcefa\xe4 #\x87\xa2\
+\xf0\x88\x07\xbc}\xcbV\xfd\xad9\x8a\x018\x8e\x04\x10\
+\x06\x96\x10\xc2f\xbc\x90k\x09\xbf\xbc\x1e{r'\xff\
+Y\xbeFnhot\xbdX\xd2$f8\xf1z4\
+q\xb4R\xf8n0\xc9\x0fP\xca#\xd3\xbc<T\xf5\
+e-\x10\xd6\x02BM\xa0\xb4B\x05Ch4N\xa2\
+\x95\xae5fpS)\x15\x83\x87\xb2a\xf3\xb1\x8b\xef\
+\xee\x03\x0d\xf1\xf4\x12ZWl@c\xbe\xe2\x91\xc3*\
+jQ\xac\x86_\xda\x83\xef\xee\x9f\xb4_XIZV\
+\xbe\x92\xce\x0d\xa7b;aT\xd1\x87\xc3\xbb\x9eg`\
+\xef\x1d(9B\xaa\xe1\x958\xc9\xb5\xe1/4C=\
+w\xb3\xe7\xe1\xbfAz#`z\xcf\xbdq\xcbV}\
+\xcb\x5c\xe5Q\xc6\x82\x12`\x82\xd0'\x0a\xdc\xa9\xb1/\
+6q\xf9\xc8\x979\x10H\x9e\x03\xc8\x0d\xeeG\x87C\
+\xf9\xc5R\xa7\x00\x84\xde\xfeR\x94R\x04^0),\
+\xac\x94$]\xd7\x81I\x13\xd7d\x87\xf3\x91\xf0UU\
+\x8d@\xc9<Z\x16\xd1Z\xd3\xba\xe2\x5c\xe2I\x93\xd6\
+?6\x90\xc7-\x85\xdezi\x17Q\x18\xb7\xe3\x0cR\
+\x0dM&^\xe0\x9b*^-\xb8\xf9'\x91r\xa4\xc6\
+\x11A\xa6\xe94\x96m~%\xc9\x86ph\x0c\x0d\xd9\
+\xfe\x1c}\xbb\x9f\xc7+\xf5\xa1\xb5\x87V.\x87\x9f\xff\
+>\x07\xb7\x7f\xbb\x5ck\x18\x06^\xb7e\xab\xfe\xc5\xdc\
+\xa42\x1e\x0bB\x80Y\x0a}\xa2\xe0\xa7:\x1e\x1b\xcd\
+\x19-\xa0\x02\x8f\xe2\xa8\xa9f9\xf1\xa5\xd8\xb1V\xb4\
+\xf6\x89\xa7\x96\x86I\x9d\x0a\xafTv\x06\xab\x92ED\
+@\xa6i\x05Z+\x8a\xb9\x12~\xc93\x82\x8f|\x01\
+Y\xa5\x05\x14B\xc4Y\xba\xc1\xe4pj`\xa87g\
+\x9a\xa4U\x09\xdf-wY\x15\xb4\xaf9\x1f;f\xe6\
+0*\x8ei\xdc|\x0d5\xa0%\xa5\xb1\x87\xd0\xda\x9b\
+|\x0cp\xe2\x1d,\xd9p)\xad+Wc\x85=\x8c\
+\x0a#=\xec~\xf0\x06\x06\xf6\xfd_\xf6>\xfay\xfa\
+\xf7\xfc\x22|\x12\x0e\x05\x92K\xb6l\xd5\xf7\xcfM2\
+\x93q\xcc\x08Pe\xd7\x1d\xc2a~j\xfc\xad%\xfc\
+\xf2\xf1ZZ\xc0\x01\x9c\xc7v\x10u\xbf\xce\xf6U\xec\
+j<}\x06(\x0f'\xd5\x82\x10)\xb4V\xb8\xc5\xc9\
+\xb5\x01)sdZ\xd6\x86f@32\x90\x8d\x82A\
+\x91/\xa0\x94\xf1\xc6\x95is\xc8\xb4\xae\xa1\xae\xc5\xd4\
+\xb2\x8a9\x8fb\xd6\x03\xad\xf1\x8b/P\xce\x06\xb5\x9d\
+:\xda\xd7\x9d\x13\x99\xe9l\x7fm\x7f@\xab\x02\xa5\xec\
+#L\x0a!\x96\xcb\xce\xce\xd0\xb1\xfe=l|\xf5\xf5\
+\xd4\xb5\x9a\x0cr\xe9\x178\xfc\xdc/\xc8\x0d\xee6\xd7\
+\xd0\xec\xe9\xed\xe75\x97\xfc\x11;B\xdf\xe9\x98\xc8n\
+\xde\x17)\x0b\x9e\x8a g\x12~\xad\xfdSi\x00\x07\
+\x88]\xf7M^\x08\xa4\x99\x88zl\xe0E\x944i\
+\xdd\x89\xccf\x94\xcca\x09M\xa2n\x05Ji|\xd7\
+D\x06\xc7\x91 \xc8\x91\xaa\xef\xc0\x8e\x9b\xfe\x01\xa3C\
+y\x02?\xac\x0aF\xb5\x01C\x00\x1d&\x8a\xa04]\
+k\xcf\x8f&\xa5\x18>R\x08G\x13\xcb\x13x\x95T\
+\xb2t\xfd*\x9a\xbaL\xe8\xd6x\xf5\xb5\xfd\x01\xe9\xf7\
+\xe1\x15vL\xdao9\xcd\xa4\x1a/\xc6\x89\xaf \x96\
+\xecd\xcd\xcb?LC\xc7\xf8i\x8f\x95\xe2\x99\x07\xb7\
+\xf3\xba+?\xc2\x81\xea\xf2;\x16D\x98\xd7\x8f\xc3\x9b\
+\xdbL\x16|-!\xdb\xd4\xd6\x04Si\x88q\xc4\xe8\
+\x1f\xe2?\xc0\xf4\xd5\xcb\x0dl7\xf7\xb7\xd28\xc9U\
+(\x99%Y\xbf<\xca\xd1\xf3J\x15\x02\x98\xe4\x911\
+4\x8a\xe6\xce\xf5f^B\xa9\x18\x1d\xcaU\xc6\x09\xd4\
+&\xa6\xa0\xfc1\x94r\xa3<\x80X\xaa\x91\xd6e\x9b\
+\x01\xf0]En\xd8\xb4\x03x\x85\x9dTK\xb9y\xd9\
+9$\xebM\x10)\xf04c}\xaa\xe6\xc7\xee\x15w\
+\x12x\xbda\xe1\xd9$2\xa7\x93j|5\x96m\xe6\
+:T\xc10=\xdb\xafg\xacog\xf4\x1b%y\xfa\
+_\xff\x83+>\xfc\xf7\x0cL(\xebh\x09\x890\xa7\
+d\x929\x11 t\xeej=\xcct\x84\x98H\x86\xe9\
+\x04?\x89\x08\xdf\xff\x19\xb7\xea\xd0\x03\x1b\xee\xad\x98\x81\
+D\xe6td0\x82\x93l\xc0\x8e\x99\xb1F\xbc\x92\xaa\
+\xd2\x00\x01\x817\x88\xd6\x8a\xba\xd6\xd5\xa6\xbd^iF\
+\xfb\xf3\xc6a\x0c\xd5\x7f\xb9j(\xbd\xde\x8a\x16\xd0\x9a\
+\x96e\x9bq\xe2F\xb8c\x03\x9ei[\x90\xd9qZ\
+@\x08\x87\x8eu\xaf\xc0\x8e\x9b\xe2t\xf3z\x8a \x11\
+\xb8\xb9\xc7\xb0\xec:\xd2M\x97\xe2$\xd7S\xb6\x1f\xc5\
+\xb1\xc7\xd9u\xff\xc7\x19>\x18\xcde\xa5Gs\xdc\xf0\
+{\xff\x9b\xff\xf1\xcd[\xc8NS\xa6\xd5D\xb0\x8e\x96\
+\x07GM\x80\x09_\xfdD\x81O$C\xf5\xf1Z\x0f\
+>\x93i\x88\x8e\xfd\xf8.\x06\x87F\xf8\x15@);\
+\x88\x9b7\x02\x88%\xd7\x82v\xb1\x04$3+\xd0\xca\
+|\x85J\xaa*\x1f\xa0\x84\x0c\xc6\x10V\x82\xe6\xaeS\
+@C\xe0+r#\xc5*_\xc0\x90 p{\x22\xe1\
+k4\x96\xe3\xd0\xbe\xfa\x5c\xc04\xe8\x8c\x0d\xf8h\xad\
+\x8d\x16\xa8\x82\x13k\xa6k\xfd9\x94{\x8a\x17F'\
+\x07\x89\x84\x95$\xdd\xfc:\x9c\xe4j\x84\x95\x0c\xaf\x99\
+c`\xcf7y\xf1\x81/\x87I\xac\xa0\x14\x83\xdbw\
+\xf1\x07\x97\xff\x19_:db_S\x0a\xbd\x96\x0c\x8e\
+F\x1b\xcc\x9a\x00U\xb6\xbez\xb1klOE\x8c\xd9\
+\x90a*\x12\xc4\x00\xe7\x8e\x07\xf9a\xf9yF\x0e\x95\
+\xb5\x80\x85\x153A\x95d\xc32\xc0\xf8h^QG\
+YCJI\x02o\x00\xa5\x15\x0d\x1d\xa7\x82\x153\xbe\
+@\x7f!\xca\x11\xd0a\xbb@\xe0\x0f\xa2dq\x9c\x16\
+\xa8k]N\xb2\xde8\x84\x85Q\x89WP(9F\
+\xe0U\x0dq\x0a$2\xabi[S\xb1\xdf\xd9\x01\x85\
+W2$\x88\xa76\xd2\xd8u\x0d\xf1\xf4\xe9h\xe5\x12\
+\xb8=\xb8\xb9'\xd8\xff\xe8G9\xf4|w\xd4\xcb\xa8\
+\xe4\xf2\xe0?\xdf\xcae\xef\xfd\x1c\xdd5\xcah\xba\xb2\
+\x1d'\x83\xd9\xfa\x06\xb3:)d\xd4D\xe1O\x14z\
+\xad\xaf~\xba}S1zJS\xf1\x8f7\xf3|\xb6\
+\xc0\xb3\x00\xa3\x87w\x98\x8c_ \x919\x03%s8\
+\xc9\x0cv\xdc\xb4\x9e\xb9\x05\xd3\xa6o\xaao\x12\xe9\x0f\
+\x86\x91A\x87\xa6\xaeS\xc3F\x19\xc9\xd8P1j&\
+.\xfb\x0c\x81{\xc0d\x1f\x85\x03S\x80\xa6}\xcd9\
+\x18\xab\x07c\x03\xd2\xa4}\x15'O=X\xd7r:\
+\xcd\xcb\xc2Lo\x0d\xa3\x87\x14\x96}\x01\x99\xd67\x99\
+\x96L\x8c\xad\x1f\xdc\xf7-v?\xf4\xf7d\x07\xa3\x18\
+\x81:\xd4\xcf\xd7\xde\xf2\x17\x5c\xfd\x83\x9f3\xc8\xe4\x0f\
+j\xaa\x8fn\xcae6$\x98\xf1\x04QI\x7f\x99\xe9\
+\x86S\x9d3\x1b\x06\xcfd\xdf\x22\x12<\xf2\x8c\x99\x8a\
+F+\x8f\xd1\xde\xfb\xc3gL`\xc7\xdb\xb1\x04\xa4\x9b\
+V\x86#\x7f\x84=y\x01\xd0\xf8\xee\x91(\xe8\xd3\xd8\
+\xb9\x01;\x96\x06`\xa4\xaf\x84\xef\x07\xe3\x9a\x87}\xef\
+\xa0\xa92\xea\xb09H+\x12\xa9:\x9a\x96\x98\xe0\x93\
+\xf4\xa10\xacP\xc1\x08\x81_=\xfa\x88)\xaa\xa6%\
+\xe7Q\xdfj\xfc\x11\xad\xe1\xc8\x0b\xf73\xd6\xf7\x0c\xa0\
+(\x8e>D\xcf\xf6\xef\xd0\xb7{\x1fA\x18\x1a\x90\x92\
+\xc1\xbb\x1f\xe5=o\xfb\x08_\x1b\xcd\xa1\xa9-\xf8\xd9\
+\x0a\x7f\x9c\x1cf\x22\xc1l4\xc0l\xd8V}\xd3\xa9\
+\x1e~\xba\x97\x98\xadf\xb0\xbf\xf0\x1d\xees}\x06\x00\
+\x06\x0f<\x82\x0aL[\x88\x93X\x8e\xb0S\xa4\x1b\x97\
+\x81\x16h\xcd\xb8\xc0\x8c\x929\xa4?d\xda\xff\x1dA\
+\xeb\x0a\x13\xee\xd5R3r\xb8T\xe54*\xa47\x88\
+R\xf9p\x04\x11\x15\xf9\x03MKO\xc1\x89\x1b\xe2\xe4\
+G4\x81\xab\xf1\x0b\x93\xb5\x80\xed4\xb1\xe2\xac\xbf\xa2\
+u\xb5i\xb8\xd1(\x0e=\xf7\x13\x0e<\xf5Mz\x9e\
+\xbe\x93\xe2X%X08\xc2\xcf?\xf5\x0d\xde\xfa\xf1\
+\x7f\xe4\xe1Y\x94\xddl>\xc4\xf2y\xd12\x9dO0\
+-\x01\xc2\x1f\xcef\xa9u\xf3\xe9\x1en\xb6\x0c\x9fD\
+\x80|\x11\x9e}\x91\x9f\x00(\x190x\xe0\xd7\x84\xa5\
+l\xa2\x83N\x82dC{\xa8\xe2\x19\x17\x98\x09\xdc\x03\
+F\x98JQ\xd7\xba\x82x\xa6\x09\x80b6\xa0\x98\xf3\
+)\x8fC\xa0\xb52\x11\xbf*\xe1k\xad\x11\xc2\xa2m\
+\xf5\xd9\xd1\xf5\xb2\x03\x9a \x18B\xfa&\x81D\xd8i\
+\x12\xf5\xe7\x92j\xba\x14;\xbe\x9c%\x1b\xdfA\xe7\xba\
+K\xa3\xf3\x0b#cQ\x0e\x81\xeb\xb1\xef\xe7\xf7\xf2'\
+o\xfa \x7f}\xd7#\x8c\xcePfS\x91`\xa6\xb2\
+\xae\xd6\x045I0%\x01\xaaT\x7f\xad\x1bN\xb7\xaf\
+\x169\xa6\xda\x9e\xc9d\xd4\xd4\x12_\xfc.?w=\
+\x06\x01\x86z\xb6\xe3\x15\x8d\x1a\xb6\xecF,\xa7\x99\xfa\
+\xb6\x8dQk]q\xacR\x1d\x0b\xdc\x9eqM\xb4\xed\
+\xab\xcf\xa1\x5c\x0d\x1b=\xe2#\x03\x15%\x92\xfa\xc5\xfd\
+&;\xb8\xdc--\xac\xf7\xa7\x1b\x97\x90i6\x89\xa4\
+\xbe\xab)\x8ej\x02\xef \x89\xba\xb3H7\xbd\x16'\
+\xbe2\xbaf\xe0\xf5Q\xca\xef\x1c\x97=\xa65\xfe\xce\
+}\xfc\x9f+\xff\x92w~\xfe_x\x9c\xa9\x85;\xd3\
+\xbe\xa9d0\xdd2\x09\xd3i\x80Z?\xacu\xc1\xe9\
+\x04m\xd5\xf8\xddlH2-Az\x8e\xe0\xdf\xf1 \
+7\x96K\xb4\x7f\xf7]\x80Q\xf3\xf1\xf4)$2\x1d\
+$\xd2\xadh4^AG\xbe\x80\xd6\x1e\xd2\xab\xd8\xec\
+D\xba\x85\xa6e\xa7\x01 \x03Mn\xc8\x8f4\x80\x0c\
+F\x08\xdc#a\x82\xe8\xf8\xea\x5c\xdb\xaa\xb3\xa3\x91\xc1\
+\xf2\xc3\x82D\xe6\xb7\xb0c\x9d\xd1\xebJ\xbf\x9f\xbe]\
+\xff\x87\xe7\xef\xf9$\xa3\x87\x0fDA\xa1\xb1<\xdb\xaf\
+\xbf\x91\xad\xd7|\x8a\xef\x0d\x8e \xa7x\xbf\xd9\x96\xcd\
+Q/\xb5\x94\xc0l\x090\x15\x9b\xa6#\xc9l\xaf3\
+\x91$\xb3\xd2,\x7f\xfbm\xee\x1b\x18f;@np\
+\x0f\x85\xd1=\x80F\x88\x18Nb\x19MK7\x83\xd1\
+\xe0\xe4\x87+\x02\x0c\xa2\xc6\x1c\x83\xa6%\xa7\x10O\x9b\
+IM\xf3#\x8ab\xb6\xec\x0c\xea\x9a^>\x80\x93\xec\
+\xa0c\xddk\x01\xd0Jrd\xd7/\x91~?*\x18\
+a`\xcf\xf7\xd9q\xd7G8\xb2\xeb\x9e\xa8j\xe7\xf9\
+\x0c\xde\xf1\x00\x9f\xbd\xec}|\xe0'wsh\x16e\
+2\x9b\xb2\x9e\xaa\xec\xa7\xc3\xa4\xe3s\xed\x9e<\x9d\xd0\
+\x8f\xe5\xcbL{\xdd\x7f\xbe\x95\xef|\xec\xdd|I\x08\
+\xec\xbe]\xff\xc5\xaasW#\x83!\x12ug\xa3d\
+\x96T\xd3s\x14\x87\x8f\x10\xb8\x9aRN\x93\xac\x13\x04\
+\xdea\xb4\xf6\xc2d\x0b\xb0\x84\xa0c\xedy\xf4>{\
+\x07J\xf9\x8c\xf5+3T\x5cJ \xfd\x01d0\x84\
+\xed\xb4\x00\x02;\xd1E,\xb1\x06;\xd6N\xbaQ\x93\
+\xed\xdfEad7\xf9\xe1\xbd\x1cx\xfa\xdb\x14Fz\
+\xaa\xe7\x1d\xc2\x0f\x18\xdb\xbe\x8b[?\xff/\xfc\xf8\xd0\
+\x00\x85)\xcan\xb6\xe5\xadg\xd8.\xef\x9bM\xd9F\
+\xa8\xa9\x01j\xa8\x8a\xe9\x1e\xf8h\x188W\xd4$\xc6\
+\x7ft\xd3\xf3\xcc\x8b\xa6\x8d\xc0\xcd\xf71\xdcs\x0fZ\
+y\xa8 G\xb2\xfe\x02Z\x96\x9b\x08\x9e\xd6\xa6\xdaf\
+\x8aLM\xd2\x02\xf1T\x9a\xf6uao,m\x1at\
+\xca]\xbd\x03\xf7 \xf1\xf4&\xd2\xcd\xaf'Yw>\
+v\xac\xc3\xdc^Xtm\xfc\x9f\x94\xb35s\x03{\
+\x22\xe1\xfb\x01\xd9\xc7vp\xd3\x1f~\x9ck\xde\xff\x05\
+n=4\x80\xcbd!LWn\xc7\xaa\x1cg\xbc\xce\
+\x94\xe3\x04\xd6\x88\xfa\xd5r\xd6\xc4\x14\xdb\xd5\x0e\x9c`\
+\xfa\xaa\xcd\xbc\x96%m\xa4\xbf\xf7y\xbe\x9c\x8c\xd3\x82\
+\x80\x95g\xfe\x0e\xe9\xa6\xb3\x88\xa5\xd6\xa3\x82az\x9f\
+\xfd{F\x0e\x1d@\x03\xe9FA]\x8b\x85\xb0\x12\xa4\
+\x9b.\x8d\xb4@\x19#\xbdO3t\xd0\x84xm'\
+\xc6\xb2\xcdo \xd5x*\xb1\xd4\x06\x84\xa8\xccgR\
+\xca\xbe\xc0\xe0\xfe\xdb\x19\xeey\x98\xf2\xb8\x81\x00A@\
+\xfe\xa9\x17\xf8\xf1\x97\xb6q\xdb\x81\xc3\xe41\x09\xad\x1a\
+\xd3\x86\xa1\x8e\xf3\x22\xab\xee\x1fmO\x1c\x92o>\x04\
+8Y\x16\xf1\x91\xab\xd9\xf2\xa6K\xf8\x80\x11\x9c\xc3\xaa\
+s\xaf\x22\xd5p\x0e\x96\xd3\x8a_|\x91]\x0f|\x81\
+\xc0-\x81\x80\xa6.\xa3\xdec\xc9\xd5\xe1\xe0\xcf\x80\xb0\
+\xb1\xe3\x1d8\xb1\x0e\xfa^\xbc\x93\xc1\xfdw\x01\x10O\
+\xb7\xb2\xf2\xec?$\x96\xec\xc4v\xda\xc8\xf6?B\xff\
+\x9e_P\x18\xd93\xae\xac|I\xee\x99\x17\xf8\xf9\xf5\
+\xdb\xb8m\xff!rUB\xa8%\xfc\x89\xfb\xc6\x09\xe8\
+(\x7fw\xb4\xc4\x92\x13\xe5=\x1d\x01\xaa\xbf\xee\x13&\
+\xdc\xd9\x9e\xf7\xdd\xcf\xf0\xbf6\xac\xe4uFp\xf5\xac\
+>\xf7]$\xea^\x06Xd\x07\xba\xd9\xf7\xd8w\xb0\
+c\xf5\xc4\x92\x0d4/k&\x96h \xd9p\x11N\
+\xac\x13\xcbi\xa2b\x0d%\x07\x9e\xfc&#\x87\x1e\x00\
+ \xd5\xb8\x82d]\x0b\xa3Gv\xa0\x82\xf1Y=#\
+Yv=\xb4\x9d\xdb\xff\xe9f\xee\x1d\x1a\xc3\xad!\xb0\
+\xb9|\xb9S\x09\xbf\x16I\xa6\xfc\xd2k\xed\xd3\xd5\xea\
+\xaa,\xe7\xe9\x86\x8a]`-0k\xe1\xceb\x9fH\
+%\x88\xdd\xfcE>\xd9\xd6\xc4f\x80\xba\xd6%\xac<\
+\xebZ\xec\xb8i\xc4)\xe5\xfa(\x8c\x84\xf1\x02G\x90\
+n\x10\x08+aZ\x13#\xe1\x83R%\x0a#\xbb\xe8\
+y\xea[\xf8\xa5\xc9\xa3\xbcJ\x85\xbb\xb7\x97\xee\xdb\xee\
+\xe2\xf6\x1f\xdd\xc1n\xa6\x17\xfaL$8\xae$\xa91\
+\x22\xeb\x8c\x048\x1a!M\xb4\xfb\xf3!\xc1$\x01O\
+sN\xf4w\xc3*\x1a\xbe\xf6Q\xbe\x98N\xd2\x05\xd0\
+\xb2\xf2t\x96\x9ezmd\xeb\xf3\x83{q\x8b\xa6\xc9\
+5\x16\x17$\xea\x04\x888Z\xda\xe4G\x9e'\xd7\xff\
+4c\xfd\xcf\xa3\xd5\xe4\xfc\xbd\x5c\x81\x9e'wr\xc7\
+7o\xe1\xae=\x07#5\xaf\xa7\xf8;\xdd\xfa\xd1\x12\
+`\xae$\x19\xb7\xd4\xfa\xfaa\x06\x02\xc0\xbcL\xc1L\
+\xbf\x9b\xe9\xcb\x9e\xeax\xads\xa2\xfd\x97\xbf\x8a\x15\x1f\
+\xb9\x9a\xeb\x1d\x9b4\xc0\xb2\xcd\x97Q\xdfq\x09*\xc8\
+\x13x#\xf4\xef\xbe\x17\xbf8D\xe0\x8f\xa1\xd4\x18\xca\
+\xaf\x91\xc4g\xa0G\xb2\xecza?\x0f\xfdg7\x0f\
+\xdd~\x1f\xe5\x11$\xca\xcbD\xc1OG\x82\x99\xc8p\
+\xac\x082\xd1\x1c(\x8c\xdd\xaf)|\x98\x05\x01\xa0\xa6\
+)8\xa6\xea{\x16\xc7j\x05\x88j\x12\x00\xe0C\x7f\
+\xc8y\xbf{)\x9f\xe2(\xabSJ\x13\x0c\x8e\xb0}\
+\xc7n\x1e\xbc\xf5\x0e\x1e|l\x07\xc3\x8c\x17\xfaT\xcb\
+\xd1\x90a\xae\x848\x1a\xe2T\x7f\xf9\xd5\x93\xafL\xc2\
+\xac\x87\x8b?\x0a\x12\xccF\xe8\xd3\x09\xbe\x96p\xa7\xfa\
+[\xbd\x8c\xdb\xf7\xd5\xff\xcd[\xcf=\x95wO\xf7N\
+RQ8\xd4\xcfC\xbd\xfd\xec\xda\xb1\x9b]?\xfb5\
+/\xf6\xf6S\xa2\x12d\xa9\xfe;q\xbdZ\xd8\xb3!\
+\xc3l\xb4\xc3|\xb4E\xadc\x93\xbc\xfe\x898\xaa\xf9\
+\x02\xa60\x07\xc7J\xe0S}\xd1\xb3\x16\xfa\xc4\xe5\xdb\
+\x9f\xe6]\xe9\x14-%\x97\x5c\xc9#W(\x92\xcf\x17\
+\xc9\x1d\x1ed\xf0\xce\x87\xd9\xf3\xdcn*\xa3F\x8f\xc7\
+T\x04\xa8E\x84\xe9\x081\x9d\x9f0_2LG\x8e\
+i\xd5~5\x8ez\xc2\x880JXv\xf8fc\xb3\
+gR\xe73\xa9\xf6Z\xc7\x8ef\xa1\xc6\xdf\xd9b:\
+\x0d0\x1b\x930\xd3\xfatZb\xaed\x90\xb5\xbc\xfd\
+\xa9p\xd4m\x01\xe1\xb5\xa5\x10Bc\x04R~\x81\xea\
+\xf5\xf2R\x8eO\xab\xaa\xe3\x13\xf7\x95\xff\x8a\xaa\xed\x99\
+\xd4\xfdt\x84`\xc2\xdfZ\xc2\x9f\x89\x08z\xc2\xfaL\
+\x1aa.d\x98J\xe8s%\xc3\xac\xbf\xfaj\xcck\
+\xca\x98P\x1bL\xf5\xd5\x1f\xad]?*\x1b_ca\
+\x9am\x98=\x01&\x0a\x7f\xaa\xbfs1\x09\xd3\x99\x83\
+\xf9\x98\x8a\x9au\xfc\xd9\xe0\x98\xcc\x19T\x83\x083\x91\
+`N\x8e\xdd,\x16j\xacW\xff\x9d\xb8>\x1d&\x0a\
+}\xe2\xbe\xf9\x9a\x05\x98=\x19ji\x87Y9y3\
+\xe1\x98N\x1a5\x81\x08\xb3\xb5\xefLq\xcelT>\
+\xb3\x5cg\x9a\xf5Z8Z-0q{\xbefa:\
+R\x94\xa3z3\xbc\xc2\xec\xb0`\xb3\x86M\xa81\xd4\
+\x12\xdeL6~\xaa\xfdL\xb1\x7f:\xfb\xcf\x84c\xb3\
+\xc1\xc4\x82\x99\x8a\x00\xd5\xebS\x91b*sp4d\
+8*\xe7n\xb6X\xf0i\xe3j\xa4\x95\xcfE\xe8s\
+U\xf9\xc7\xc2\x04T\xaf\xcf\xc7'\x98\xc9G\xa8\xb5-\
+\x81\x85\x90{\x84\xe3>o`\x95f\x98\x8b\xc0\x8f\xd6\
+\xe1\xabE\x80Z\xdb\x13QK\xf8\xd5\xeb3i\x81\x89\
+\xdb\xb3%\xc3\xbc\x1c\xba\xb9\xe0\x84N\x1c9A;\xcc\
+d\xe3gK\x02&\xac\xcf\xd5\x0c\xccD\x82\xf2\xfa|\
+\x08Pv\xe6\x16\xf63\x9f\x06'\xc5\xcc\xa1\xd5\x98\xd0\
+\x17\xa1\x9a\x10\x1c\xc5z\xf5\xdf\xe9\xd6\xa7\xc2T\xf6\xbf\
+z}\xa2\xb0k\xed\x9bR\xc5\x9f,\xe5~\xd2\x11\xa0\
+\x16&\xf4Q\x98\xad\x1f@\x8d\xed\xa3q\x02a\xea/\
+\xbf\xbc=\x91\x00\xb5\x9c=N\xe62~I\x10`:\
+T%\xb0\xce\xd6\x14\x1c\xad\x06\x98\xe9+?\xa9\x05<\
+\x13^\xf2\x04X\xc4\xfc\xf0\xff\x01-\xef\xe5]0^\
+&Q\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00:\xf4\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x09\xediCCPICC Prof\
+ile\x00\x00x\x9c\xad\xd6gTS\xd9\x16\x07\xf0\
+\xff\xbd)\x84\x04B\xef- \xddP\xa4Jo\x8a\x0d\
+\x18D\x14\xb0\x02!4)\x11\x82(vP\xb0\xa1`\
+W\xb0+v\x05\x95Q\xc7\x8a\x0a\x22\x8c\xa24\x11Q\
+, 8\x22\x1d\x0b\x82y\x1f\x82e\xd6\x9bY\xef\xcb\
+\xdb\x9f\xf6\xd9k\xdd\xb3\xce\xf9\xed}\xd7:\x80\x94b\
+\x98@\x10G\x02\x88O\x10&\x05L\xf0\xe4\x04\x87\xcc\
+\xe4H\xd4\x81\x0a5H\x03\xb0\x0f\xe3%\x0b<\xfc\xfd\
+}\xf0\xaf\xf1\xb1\x1e\x04\x00\xd4\x98\x85\x09\x04q\x89G\
+\xa3\xab\x11\x97\x97\xa9\x92\xe3\xc2\xe9\x9f\xab\xfb\xf8\xdf\xbf\
+\x03\x00\xb0\x93\x82Cf\x02\x04\x17\x80b\x948w\x07\
+\xa0\x18.\xce\x03\x01(\xa6\x0a\x05B\x80\x88\x06\xa0\xc8\
+\x8b\x0e\x8b\x00\x88\xa5\x00\xb8I\x81\x01^\x00q\x1c\x00\
+;J\x9c_\x06\xc0\x0e\x17\xe7\xe5\x00\xd8\x0byQB\
+\x80h\x00(\xf2\x09\x111\x09\x00\xb5\x03\xa0\xbbF\xf0\
+\x93y\x00\x8b\x0b`^D2/\x1e`m\x04`\x19\
+\x1f\x9f\x18\x01\xb0\xae\x010\xe6\x09\x92\x84\x00\xab\x05\x80\
+Yp\xc8L\x8e\xf8\xc8\xe1\x91\x80u\x08@\x1e\xffY\
+\x9b/\x05\x14i\x02\x8a5?k&\x11\x80F\x01p\
+\xf5\xc4\xcfZ_\x00\x08\x00\x84rUr\xa4\xb5\x15\x00\
+\x80\x90\xf2\x04h/D\xa2>C@b\x0b0\x9c+\
+\x12}=$\x12\x0d\x1f\x06(M\xc0\xad8^J\xd2\
+\xc2\x11/\x82x\x00\xfc\xaf\xb5\xf8\xce#A!\x00\x02\
+$\x95\xce\x90dI\xb1e\xe4\xe4\x15\x94\x94U\xd54\
+4\xb5u8z\xa3\xf4\x0d\x8d\x8cMGs\xcd-,\
+\xc7X\xdb\xd8\xda\xd9\x8futrvqus\xf7\xf0\
+\xf4\x1a7\xde{\xc2\xc4I\x93\xa7\xf8\xf8\xfa\xfd\xe6?\
+5 p\xfa\x8c\xa0\xe0\x90\x99\xb3\xe6\xcc\x9d\x17\x1a\x16\
+\xce\x8b\x88\x8c\x8a\x8e\x89\x9d\x1f\x17\x9f X\x90\x94,\
+LY\x98\xba(m\xc9\xd2e\xcbW\xac\x5c\x95\x9e\xb1\
+&3k\xed\xba\xf5\x1b6fo\xca\xc9\xdd\xb2u\xdb\
+\xf6\x1d;w\xed\xde\x93\x97\xbfw\xff\x81\x83\x87\x0e\x1f\
+9Zp\xec\xf8\x89\x93\xa7N\x9f9{\xae\xb0\xa8\xe8\
+\xfc\x85\x8b\xc5\xbf_\xba|\xe5\x8f\xab\xd7\xae_\xbfq\
+\xf3V\xc9\xed;w\xef\x96\x96\xdd+\xbf_QQ\xf9\
+\xe7\x83\x87UU\x8f\x1eW\xd7\xd4\xd4\xd6\xd5\xd5?i\
+hx\xda\xd8\xf8\xac\xa9\xe9\xf9\x8b\x17\xcd/_\xbez\
+\xfd\xfaMKK\xeb\xdb\xb6\xb6\xf6w\xef\xfez\xff\xbe\
+\xe3CggWwwOo__\xff\xc0\xc0\xc7O\
+\x9f?\x7f\x19\x1c\xfc:44\xfc\xed\x9b\x08$\x95.\
+!\xc9\x94\x92\x96\x91\x95WPTVQS\xd7\xd4\xd2\
+\xe6\xe8\xea\xe9\x1b\x18\x1a\x9b\x98r\xcd\xcc-,\xad\xac\
+ml\xed\xc6:\xfc\x1b\xc0\xb4\x11\x80\xd9#\x00\xfc\xef\
+\x00\x89?\x00\x16\xff\x00X\xbd&3k\xed\xfa\x0d\x1b\
+\xb37m\xfeE \x7f\xef\xbe\x7f\x10\x18\x01\x10\x0b\x88\
+\x01\xee\xfc\x0d\xe0\xd1\xe3\xc7\xd55\xb5\xb5u\xf5\xff\x08\
+\xd0\xfa\x03\xa0C\x0c\xd0\xd3\xd3\xdb\xd7\xdf?\xf0\xf1\xe3\
+\xa7\xcf_\xbe\xfc\xbc?\x85FgH2Y\xd2l\x19\
+Yy\x05E%\x15U5u\x0dMm\x1d\x8e\xae\xde\
+(}\x03#c\x13\xd3\xd1\x5c3s\x0b\xcb1V\xd6\
+66\xb6v\xf6c\x1d\x1c\x9d\x9cG$~\xa5\x10\x0f\
+\xc3w\x8cY\xb3\xe7\xcc\x9d\x17\x1a\x1a\x16\xce\x8b\xf8\xe1\
+\x91\xf0\x0bH\xda\xdfE\xd6\xfdB\xf2}&\xbe\x93\xfc\
+\x93\x89\x98dd(J\xcb\xee\x95\x97\xdf\xff\x95\xa4\xae\
+\xfe\x89\xd8\xe3\xf9\x8b\xe6\x97\xaf^\xbfii}\xdb\xd6\
+\xfe\xee\xaf\xf7\x1d\x1f:\xbb\xba{z\xfb\xfa\x07>~\
+\xfe2\xf8uh\xf8\x9b\x08\x10\xff\xfb\x00@\xb7\x03\x0e\
+'\x003\x98@\xe0!`{1`\xe4\x04\xa8t\x01\
+\xfe\xd2@\xa0\x03\xc8dk\x90\x91\x91 U\x98\xa0\x10\
+\x00\x09\x80\x00\x05tHB\x06\xca\xd0\x81)\xec0\x0e\
+\x81\xe0#\x15\xeb\xb1\x0f\x17Q\x89\x16|#\xd4\x09{\
+b:\x91Ll%\x8a\x89\xa7\xc47\xd2\x80\xf4%\x17\
+\x92\xfb\xc9J\xf2\x0b\xc5\x84\x12B\xd9@\xb9I\xe9\xa7\
+r\xa9\x11\xd4\xbd\xd4\xa74UZ\x10m7\xad\x89\xae\
+G\x8f\xa6_\xa0\x8b$|$\xf6Ht0<\x18\xbb\
+\x18\xbd\x92~\x92g\x98l\xe6\x02f\x03\xcb\x8bU(\
+\xa5-\xb5I\x9a\x94N\x93\x1e`'\xb3\xfbdRe\
+\x86e3\xe5\xe4\xe4\x0e\xca\xdb\xc8W(\x84+|S\
+\xdc\xad\xa4\xaftJ\xd9J\xf9\x9a\xca\x04\x95\x1a\xd5p\
+\xd5~\xb5u\xeaZ\xea\x175|4Z5\x97i\xa9\
+h\x15k\xfbkw\xea\xe4pl8\x8d\xba\x19z\xa3\
+\xf5\xaaG-\xd5\xb7\xd0o2\xd8h\xe8b\xd8it\
+\xd08\xc8\x84mRj\x9a>\xdak\xf40\xf7\xba\xd9\
+\x0as\x0f\x0b\x9aE\xa5\xe5\xb61s\xac\x8c\xacz\xad\
+o\xda\xe4\xd8\x86\xdb\xd9\xda\xb3\xec_\x8f\xbd\xe2\xb0\xd9\
+\x91\xef\xe4\xe2\xac\xe5\xfc\xcd\xa5\xd9\xf5\x86\xdb\x01\xf7\x0c\
+\x8fH\xcf)^\xd6\xe38\xe3e\xc7\x0fywO\xa8\
+\x9fxo\xd2\xed\xc9%Sn\xfb\x94\xf9V\xfa=\xfa\
+\xad\xce\xbfi\xea\xbb\x80\xaf\x81r\xd3\x8df8\x07\x05\
+\x06\x0bB\xb2g\x9e\x99U3[4\xd7b\xde\xbc\xd0\
+\x9c\xb02\x1e\x19\xe1\xc6_\x12y5\x9a\x12\xe3\x1f\xbb\
+w~w\xfc\xe4\x84<\x01\x16\xf0\x92\xca\x84\x96)\xfb\
+S\xe5\x16\xadMc,Y\xbetp\xf9\xca\x95\xccU\
+[3tV_\xca\xf4\xc9j^\xb7d\x83\xd6\xc6\x92\
+M\xc1\x9bE\xb9\xa7\xb7\xce\xda.\xb1\xe3\xcc\xae]{\
+\x8a\xf2_\xef\x97=\xe8|Xp\xf4\xd8\xb1\xfa\x93\x92\
+\xa7'\x9d\xcd.,=/*\xf6\xba\x94~\xa5\xf2\x9a\
+\xec\x8d\xa0[Gn\xf7\x97z\xdc\xcb\xbd\xff\xf2O\x87\
+\x87\x1b\x1e\xbd\xa9\xb1\xad\xdb\xf2\xa4\xb71\xa0\xe9r\xb3\
+\xda\xab\xb47/\xde\xfa\xb7\x97\xbc\xb7\xfeP\xd0m\xd4\
+\x9b7\xa0\xf4i\xd7\xa0\xee\xd0S\x91\xe8G\xff\x99\x90\
+\x81\x0at\xc1\x85\x03&\x22\x04\xb1X\x8a\x1c\x14\xe0\x1a\
+\xea\xd0E0\x09c\xc2\x9b\x88 V\x13\x05D\x05\xd1\
+E*\x93\xaed4\xb9\x85\xbcAvP4)\xbe\x94\
+\x15\x94\x0b\x94v*\x87\x1aL\xddB}Hc\xd3\xfc\
+h\x9bi\xb5t\x0dz8\xfd4\xfd\xb3\x84\xb7\xc46\
+\x896\x863c\x1b\xa3Sr\x8a\xe4\x09&\x8b\x99\xc0\
+\xacgy\xb0\xceJiIeK\x13\xd2\x8b\xa5\xfb\xd9\
+\xc9\xec>\x99\x852C\xb2k\xe4\xe4\xe4\x0e\xfc\xcf\xee\
+\xfbj\xb4j.\xd7R\xd1*\xd6\x9e\xaa\xdd\xad\xb3\x85\
+c\xc7y\xae\x9b\xa9g\xa1\xf7dT\xba\xbe\x9d~\xab\
+\xc1\x0e\xc3\x89\x86_\x8d\xce\x19G\x9a\xe8\x984\x9a\xee\
+\x1e\x1d\xc2U\xe2>3;h\xce\xb7\xe0Z|\xb4\xbc\
+=&\xc7j\xae\xb5\x99\x0dl\x9e\xd8\x9e\xb4\xcb\xb4\x0f\
+\x1f\xeb\xea\xa0\xee\xf0\xd1\xb1\xd6\xe9w\xe7|\x97\x0c\xd7\
+X\xb7\x00w'\x0f#Oy/x\xf5\x8e\xeb\x19\xff\
+\xca\xbbi\xc2\x83\x89w'\x95L.\x99R\xe2s\xc7\
+\xb7\xdc\xaf\xf2\xb7*\xff\xda\xa9\xcd\x01\x9d\x81\xc4t\x85\
+\x19\x06A\xf6\xc1\xfe!\xd13\xd3g\x1d\x98]:\xa7\
+k\x9eF\xa8{Xt\xf8.^=\x9f\x15\xe9\x12\x95\
+\x16}=\x16\xf3\xc7\xc7\xe5\xc4\xbfH4\x17\xa4/h\
+H\xb6\x12\xe6\xa6\xf4\xa7\x86,\xba\x95f\xbad\xff2\
+\x85\xe5\xd9+\x99\xab\xb22(\xabWe\xb2\xb2\xf2\xd6\
+\x19\xaf\xbf\xbc\xd1/\xfb\xfd\xe6\x0d\xb9F[J\xb6\xf1\
+v(\xee|\xbe\xfbI>}\x9f\xcd\x01\xfe\xa1\xddG\
+\x1e\x1c\xa3\x9cp<\x15\x7f\xe6\xf4\xb9\xb6\xf3\xdc\x8b)\
+\xbf\x17_\xfer\xd5\xf9\xfa\xea\x9b\x8fnk\xdd\x0d+\
++*\x1f\xaa\xf4{\x90_\xf5\xa1\xda\xb3vg\xfd\xdb\
+\xa7\xf6\xcfr\x9e\xb7\xbet{\xbd\xa3\xe5C\x9b\xef\xbb\
+\xfd\xef\xbft\xce\xe8\xbe\xde\xa77\xb0\xf6S\xd7\xe0\x9c\
+\xa1\xee\x91\xfe\x93`A\x16\xca\xe0\xc0\x1c.\xf0C8\
+R\xb1\x09\x05(\xc1\x0b\x0c\x13\xda\x84;\x11A\xac#\
+\x8a\x88&\x92A\xda\x91Q\xe4N\xb2\x92BR\x9c(\
+)\x94\x22J7\xd5\x8a*\xa4\xfeA\xa3\xd0\xfchy\
+\xb4\xf7tW\xfa6z\x87\xc4\x04\x89\xa3\x0c:#\x96\
+Q-\xe9*y\x86\xa9\xc3\xdc\xc1\x92eeKIK\
+m\x96V\x92>\xc4\xb6f\x97\xc9\xcc\x91\xf9,\xbb]\
+\xceN\xaeI>K\xc1N\xa1]1_\xc9K\xa9Y\
+y\xad\x8a\xb9J\x83\xea\x1a5;\xb5v\xf5|\x8di\
+\x9aL\xcd[Z\x8b\xb5m\xb4\xbbu\x0a9\xc9\xba\x8e\
+z\x14\xbd{\xa3r\xf5C\x0d\xcc\x0d\x86\x0d+\x8d\xf2\
+\x8c\x13L<MUM{FWr\x0b\xcc2\xccC\
+-\xdc,9c\xa8c\xda\xac*\xac\x0bm\xf6\xd8\xa6\
+\xdb\xc5\xdb\xcf\x1e;\xd9\xc1\xdeQ\xcfI\xc6\x99\xe2<\
+\xe8\xd2\xed\xda\xe2\xd6\xe0^\xe3Q\xeeY\xe2uk\x5c\
+\xe9\xf8R\xef\xb2\x09w&\xde\x9dT9\xb9fJ\x93\
+O\xbbo\xbf\x9f\xc8\x9f9U%\xc0d\x9a[`\xd0\
+\xf4\x84\x19k\x82\xf6\x06_\x09i\x9c9<[g\x8e\
+\xdb\xdc\xb0yY\xa1\x85aM<F\x84-\x9f\x1f\xb9\
++\xaa*\x86\x11;~~F\x5cI\xbc(\xd1U\x90\
+\xbe\xe0~\xb2\x8204\xa5(\x95\x5c\x14\xb8\xf8\xe4\x12\
+ri\xc8\xb2\x8b+\xd4V\xa6\xadj\xc8\xf0\x5c}.\
+S#k\xf5\xda\xee\xf5\xbc\x0d\xd5\xd9\xde\x9bn\xe68\
+\xe6^\xd9\xea\xb0\xed\xea\x0e\xd7\x9d\xa5\xbbg\xec\xe9\xc9\
+\xdf\xba\xcft\xff\x83\x83\x89\x87\xe5\x8f\x5c-\x88<\xce\
+:Qx*\xe1\x8c\xce\xd9\x87\x85\xcb\xcf[_\xe8*\
+>})\xe6\x8a\xe9\x1f\x8d\xd7\xf2n\x04\xddR,\xa9\
+\xbd\xb3\xbdt\xfa=\xa5\xf2\x9a\x8aM\x7fNy\xc8\xac\
+*{\xbc\xa8\xc6\xaa\xb6\xbd\xfe`Cp#\xfb\xd9\x8d\
+\xe7\xf3\x9b\xd5_V\xbc\x16\xb6\xa8\xb6\xdeh\x8b}\xc7\
+\xf8\xebP\x87\xf7\x87\x97]Kz\x94zO\xf4;\x0c\
+T|\x9a\xf5\xb9cp\xed\x90\xeap\xa3H\x04\x88\xdf\
+\x8b\x00\x00Z\x8co\x18\x0f\xff\xe7\x88\x8fK\xf9\xbe'\
+\x09@\x8a\x9f0}\x1a\x00\x06\x00c\x81\xd0?\xf0{\
+\x8e\x18\xf8\x22\x0c<\xf1;\x15\x00\xe8\xb2@\xbe\x11\x00\
+\x5c\xf6M\xfa\xaf}\x85\xfcEB\x00\xf0J\x14,N\
+\x8a\x89\x8a\x16r<\x04\x828>\xc7+1^\x90\x22\
+\xe4'q9\x93\x12x\xe6\x5c\x8e\x95\xa5\xa5-\x00\xfc\
+\x07\x8f\x08\x91L8\xcf\x9b\xb0\x00\x00 \x00IDA\
+Tx\x9c\xed}y\x98\xdcV\x95\xef\xefJ\xaa}\xed\
+\xaa\xde\x17o\xb1\xe3v{K\xec8\xdb\x04\x08\x84I\
+X\xb2\x10\xc0\xc0\x83\x19f\x08o\xc20\x0f\xde\x1b\xc2\
+\x00o\xd8g\x80\x84-\xc0\xcc\x03\x860\x0cd\xb2\xd8\
+$&\xb6\x13'1^\x12;\xc6\x8e\x1d'\x8e\xed8\
+^:\xee\xd5\xbdUwuwu\xd7.UIz\x7f\
+H*]\xa9T\xd5\xbb\xed\x04\x9f\xef\xd3'UI\xba\
+\xba\xba\xe7w\xcfv\xcf\xbd\x22\xb2,\xe3\x12\xfd\xf9\x12\
+s\xa1+p\x89.,]\x02\xc0\x9f9\x15\x01\x80\xa8\
+t!*s\x89\xce?\x95\x94\x00\x97@\xf0\xe7Ae\
+U\xc0%\x10\xbc\xf5iB\x1b\xe0\x12\x08\xde\xda4)\
+#\xf0\x12\x08\xde\xba4i/\xe0\x92q\xf8\xd6\xa4)\
+\xbb\x81\x97@\xf0\xd6\xa2\x22\x00L&2x\x09\x04o\
+\x1d\xb2\x94\x00\x97@\xf0\xe7C%U\xc0dA\xf0\xed\
+o\x7f\xfbR4\xf1ML\xc4\x82\xd1\x86\x9e]\xae\xa3\
+?\xf0\xc0\x03\x5cSS\x93k\x98e\xc5\xbf\xbe\xf9\xe6\
+\xd4\x1c\xd4\xef\x12\xcd1\x15\x01\x80\x10R\xfc\x9fr\xc2\
+\xf0\xdf\xeb\xaf\xbfn\xcbf]\xaeh4\xe6\x16\x88\xe0\
+!\xac(\xdc\xf6\xee\x1b\xce\xcdq}/\xd1,\x93%\
+\x00\x00\x00\xb2\x0c\xb3l\xd0Nuvv:\x12\x09\xc6\
+e\xb3\xc1%I9\xcf\xc0\xf0\x98O\xe0\x05\x9f$\xc9\
+\xb9t\xbc\xef\x95\xf5\xeb\xd7\x0b\xe7\xa3\xf2\x97h\xe6T\
+\x1a\x00\x80\x15\x08HOO\x8f\x03\x80+\x9b%nQ\
+\xccy`c\xbd\xc8I\xbe\x91\xb1\xb8?\x9eJ\xfb\x19\
+\x199\x9e`\xef\xed7];x\x1e\xea\x7f\x89fH\
+\xe5\x00\xa0\xede\xf5\x1a\x02\xc0\x09\xc05:\x9aq\xc7\
+\xb31\x8f$\x12\x9f,\x88\xbe\xbc,\xfb\x09d\xff\xd8\
+X\x220\x1aO\x05\x01\xd9Ar\xe2#\xb7\xdcr\xfd\
+\x99\xf3\xf6&\x97hZT\xca\x827(\xfcM\x9b6\
+1\x00\x5c\x00\xdc\x00\xbc\xa1\x90\xcbW\x1d\x0c\x06\x1c\x8c\
+=\xe0p\xd8\x83\x840AIFE \xe0\x0dU\x86\
+\xfd!\x16hd\xec\xdc\x0fw=\x7f\xe8}s\xfd\x02\
+\x96\x95\x9f\x80.D\x9d.V*%\x01\x0a\xbd\x7f\xcf\
+\x9e=lUU\x8b3\x1cv\xbbkk\xbdn\x00^\
+u\xf3\xe7\xf3y\xff\xe0\xf0\xb8_\x96\x11\x10x>\x98\
+\xcb\xe5\x832P!\x08\xf9\xd0pt4$B\x0eC\
+\x96\x9f\xf8\xcbw^\xfd\xd5Y\xaf\xf8\xe4\x19Yx\x97\
+\xc9\x96-\xff\x19\xe5\xc9Y\xb9\x81\x85\xc6}\xe5\x95W\
+8\x8f\xc7\xe3\xb4\xdb+\xdc\x1c\x07\x8f\xcf\xe7\xf1TT\
+x}\x00|\x00\x02\x00\xfc\x00\x02C\xc3cA1\x97\
+\x0ffs\xf9\x10\x9f\xe5+ #\x9c\x97\xc4\xd0\xc8h\
+<\x9c\xcb\xe5\x02\x90\x99\xa7\x92$\xf1\xa9\x0f\xdcx\xe3\
+\xd8\xb4+Z\x9a\xe1V\xff\x9b\xd5\x98Fr\x89\xe3r\
+\xff\xbd\xa5\x01Q\x12\x00\x8f?\xfe\xb8\xad\xa2b\x91\xab\
+\xae.\xec\xb2\xdb\x19\x0f\xe7rzY\x06>\x9b\x8d\xf3\
+\xd5U\x85\xfcP\x00\x10\x00\x10\x04P\x11\x1bKT\xf0\
+|.\xc4\x0b\xf9P&\x9b\x0d\xcb\x92\x14\x96$\xd97\
+6\x9e\x22\xbc\xc0C\x96\xe5c\x099\xf9\xce\xc9\x82\xa0\
+\x04\xc3i\xc6\x9a\xcf\x93\x12\xd7\xd1T\x0a\x00V\xc7\xe6\
+\xbd\xf2\xe3-\x06\x06K\x00\x00\xc0\xf6\xed\xdb\x1d\x02\xe7\
+\x0f\xbb\xed\xac\xa7\xa1\xbe\xd6\xcb\xb1\x8c\xd7\xc1\xda\xfd\x8c\
+\x8d\xf5\xdb\xedl \x14\x08\x04l66\x08\xa0B\xdd\
+B\xf1D:\x94\xced\xc3\x92(\x85\xe3\x89\x94G\x06\
+\x08d`l<\x89L6\x0b\xc8\xf2X^\x96\xdey\
+\xf3\x8dW\x1f+Y!#\xe3\xad\x18n\xfe\x8fl\xd8\
+\xb0!\xb0n\xdd\x0dW\xf8|\xae\xf96\x9b}>\x00\
+\xb0,7\x8f\x10f>\x000\x8cr\x8b(\x8a\xdd\xa2\
+\x98/\xc4*\x92\xc9\xf4k\xa2\x98\x1b;th\xff\xb1\
+\x8f\x7f\xfc\xe3\xe3P\x98\xadm0\xed\xe9\xff\xdf2@\
+(\x09\x00\x00\xd8\xbe}\xbb\x9f\xd8\x83\x8b\x1dv\xceW\
+W\x15\xf6\xb3v\x9b\xdf\xc6p\x01\xbb\xd3\x1e \x04\xc1\
+\xcap\xa0\xc2\xc6q!\x00!\x00!\x09\x08g\xd3|\
+(\x99\xce\xb8eYF<\x9eB>\x9f\x87\x0c \x93\
+\xe6\x11O\xa6 \xcb\xf2\x98\x0c|\xe1\xa6\xb7\xaf}\xb0\
+P\x89\xf2L\xd7~3\xda\xf1\xce\x9d{\x17\xae^\xbd\
+\xf26\x87\xc3\xf96\x8e\xb3\xadbYv\xde\xb4^\x9e\
+z\xac(\x8a\xe7$)\x7f<\x9b\xcd\xee\xef\xef\x1f\xd8\
+\xb7zu\xcb1\x18\x19o\xde\x00\xbc\xf9\x81P\x16\x00\
+\x00\xb0u\xeb\xde\xa0\xc3\xe3\xbc\x9e\xb3\xb1\xe1\xfa\x9ap\
+\xc0f\xe3\x02\x1c\xc7\x05].{\x05!l\xc8\xefu\
+\x87\xdcnGH\x02\xc2\x90\x10&\x04\x0e^\xc8#\x99\
+LA\x92e$\x12)\xf0|\x0e2\x00!\x97\xc3\xf8\
+x\x12\x90eH\xa2t\xcfM\xef\x5c\xf73\xad\x1e\xd4\
+\xbe\x88\xe9\x9f\xfe\xf4\x97\x17\xdez\xeb{\xde\xbeb\xc5\
+\x92[kk\xabV\xb1,g\xc9\xf0\xd94\xf0EQ\
+<\xc7\xf3\xd9m\xbd\xbd\xbd\x8fP`\x90\xf0\x16\x03\xc2\
+\x84\x00\x00\x80\x1d;\x0e\x86d\x8eY\xcf\xb1\xa4:\x1c\
+\x0eV\xb8]\xae\x0a\x1b\xc3T\xb8<\xce\x10!$\xec\
+\xf7zBN\xa7#D\x08\xec2\x00\xc8@>/\x22\
+\x95NC\x14%$\x92\x19\xa43\x19@\x06\x84\xbc\x88\
+D\x22\x05I\x92 \x89\xd2\x7f\xdft\xe3UwAw\
+G\xb5^N\xee\xbc\xf3\x13\x15\xef}\xef\x07?\xb9r\
+\xe5\xd2O,\x5c\xd8\xb8\xd2\xe7\xf3\xea\x95\x9e\x06\x9fg\
+\x02\x0e\x0d\x0cO=\xf5\xc4w?\xf5\xa9O\x8d\x01\x10\
+a\x01\x847#\x08&\x05\x00\x00x\xf0\xc1\xbd\xce\xda\
+y\xae\xcf\xb3\x84\xac\x08W\x04C\x1e\x8f3\xc4\xb0L\
+\xc8\xe7q\x87\x09C*\x5cN\x07\xe7\xf5\xba\xb5\xa6P\
+ZE\x92\x91L) Hgx\x8c\xc7\x93\xca9I\
+\xc6x<\x0dQ\xccC\x92\xa5\xe3\xbb\xfe\xb4\xe3\x96\xfb\
+\xbe\xf6\xb5q\x00\xccg>\xf3\xc5\x05k\xd6\x5c\xf7\xd5\
+\xb5kW~b\xd9\xb2\xcb\xa6\xfeBS\xe4\xf3T\x80\
+\x91\xcb\x09'\xfe\xf3?\x7f\xf9\xde/~\xf1\x8b1(\
+ \xd0$\x82\xa4^\x22\xbf\xd9@0i\x00\x00\xc0\xb6\
+m\xdb\xdc.o\xf57$\x90\x1b}^O\xb8\x22\xe8\
+\x0b3\x84\x04|>\x0f\xcb\xb1\x0c\x1c\x0e;<n\x97\
+\xd2\x87\xd5be\xc8H\xa7\xb3\xc8\xe7E\x08B\x0e\xa3\
+\xb1q\x88\x92r2\x99\xcc@\xc8\x09\x90E\xe9\xb53\
+\xad\xed\xdfg\xc1\xddz\xfd\xf5k>\xbe`A\xe3\xc4\
+\x15\x9fF\x8f\x9e\x0dp\xe4r\xc2\x89\x7f\xfb\xb7\x1f\xbf\
+\xff\x1b\xdf\xf8\xc6(t\x10\x18T\xc3\x9b\x09\x04S\x02\
+\x80F\xbb\x9f\x7f\xf9\x07 \xb8\xdb\xedv\xf9\xc3!?\
+\x03B\x10\xf0{\xc0\xb1,X\x96\x85\xcf\xe7\x06\x01Q\
+\xe4\x80\xac\xb4NN\x10\xc0\x0b9\xe4s\x22F\xc7\xe2\
+\xc8\x09\x8a]\x90Ld088\x82\xba\x9a*\xacX\
+qyq\x05\xcf\x93\xb8\x9f\xca-\x82\xc0\xbf~\xdf}\
+\xffz\xdb\x0f~\xf0\x83\x11\x00y(\xafhP\x0bo\
+\x16\x10L\x0b\x00\x00\xb0k\xcf\xcb\xdfb\x19\xe6\xdb6\
+\x9b\x0d\xe1\xb0\x1f\x0c!\xf0z<p\xba\xec\xe0X\x06\
+.\xa7\x13,\xc7\xa8\x00PP\x90\xcb\xe7\x91\xcb\xe5!\
+I\x12\xa2#c\x18\x19\x1e\xc7H4\x86u\xebV\xc2\
+\xebu\x97y\x9au\xc4\xfa|\x80\xa3\xd4\xe5\x82\xc0\xbf\
+\xfe\x9d\xef|\xf3\xf6\xfb\xef\xbf_\x03A\x914x3\
+\x80`\xda\x00\x00\x80\xe7\xf6\x1e\xfe[\xc2\xb0\xbf\xb3q\
+6TT\xf8\xc02\x0c\xbc\x1e7\xdcn\x07\x08C\xe0\
+v\xb9\xc0\xb0\x0c41 \x03\x90$E\x15\x9c>\xdd\
+\x05\x02\x06--\x13\xeb\xf9\xf2<\xbbp\xe0\xe0\xf9\xec\
+\xc9\x03\x07\xfe\xf4\xb9\xdbn{\xefQ\xe8 \xa0m\x83\
+\x8b\x1e\x043\x02\x00\x00\xec\xde\xfb\xca\x8d\x0c\xc1\x16\x86\
+e\x82\xe1\x8a\x00X\x8e\x85\xd3\xe1D0\xe0\x01!\x04\
+\x0e\x87\x0d\x1c\xcb\xd1\xfe\x12^z\xe95\xd4\xd5\xd5\xa1\
+\xa6&l\xac\xcc\xb4\x98V\xee\xec\xdc\x83C\x14\xf3\xf1\
+\x17^\xd8s\xc7m\xb7\xbd\xf7\x18\x80\x1c\xded \x98\
+1\x00\x00`\xe7\xde\xc3Wp\x0c\xbb\x87a\x98\xa0\xdf\
+\xef\x85\xc3n\x83\xd3aC0\xe8\x03C\x18\xd8\xed6\
+p\x1c\x07\xc82\x0e\x1f>\x81\xa6\xa6F\x84B\xfeR\
+U\xb2\xfewV\xc1Q:\x8dq:\x86\xa2(\xe6\xe3\
+\xbbv\xed\xb8\xf3C\x1f\xba\xe3U(\x92\x80V\x09\x17\
+5\x08f\x05\x00\x00\xb0u\xef\xde`\x80\xf1\xed!\x84\
+\x5c\xe1\xf3{\xe0\xb4\xdb\xc1\xd9XT\x85+\xc00\x04\
+,\xcb\xe2\xf8\xb17\xd0\xd4\xd4\x80`\xd0W\xbeR%\
+\x99p\xf1\x82C\x14\xf3\xf1\xdd\xbbwZ\x81\x80\x0e \
+]t\xb1\x82Y\x03\x00!\x84<\xfa\xf4\xd3\xc1Z_\
+\xed\x16\x96a\xde\xe1t:\xe0\xf18\xc12,*\xc3\
+A\x9c>\xd5\x8e\xf9\xf3\x9bL\xcc\x9f\x1d\x83\xac\x5cY\
+\xe7\x13\x1c\x14\x08\x8eBQ\x07\x17=\x08f\x05\x00\xa6\
+,\x22\xb2{\xcf\xe1\xdfr\x1c\xf7I\x87\xc3\x0e\x8f\xc7\
+\x85\xfe\xde!\xd4\xd5Vc\xde\xbcz\xd3}eK\x9d\
+b\x1d\xa6^V\xb9{FGcH$\xc6\xd1\xd8\xd8\
+\x04\x96e'q\x8f\x02\x0eE\x1d\xfc\xf1\x83\xeb\xd7\xdf\
+\xf9*\xde\x04 \x981\x00\xcc\xcc\x87\xd2\x12\xcc\xb3\xbb\
+\x0e|\xd3\xe3\xf2|5\x93\xc9\xc2\xedpa\xe5\xcab\
+\x1f\xbf|\xb9e\xcf\xceYY\xf1x\x1c\xbd\xbd=\x88\
+\xc7\xe3`\x18\x02\x8f\xc7\x8de\xcb\x96\x1b@0\xd1s\
+DQ\x8c\xef\xda\xb5C\x03A\x9e\xda.:\x10\xcc\x16\
+\x00\xe8\xc1\x1bV\xddl\x8f\xff\xe1\xd9\xcf\xb1\xc4\xf9\xdd\
+\x1bn\xb8\x0a6\x9b\xad\xc4\xfd\xd3yf\xc93\xd3.\
++\x9dN\xa3\xab\xab\xb3\xc0x\x80\xa8\xe7\x08\x1c\x0e'\
+\x9a\x9b\x97\xc1n\xb7O\xba\xce\xa2(\xc6w\xef.\x02\
+\x81\x160\xbah@0\xa3Y=e\x98\xcf\x01\xb0\x8d\
+\x8d\xa6oX\xb5\xaa\x19\x1c\xc7\xa93\x8d\x8a7Y\x96\
+!\xcb\xb0\xdcJQ\xa9\xebK=\xa3\x5c6X6\xcb\
+\xa3\xad\xad\x0d\xc7\x8f\x1fG<\x9e\x80&\xc8\xb4W\xe3\
+8\x0e\xf5\xf5\xf5\xb0\xdbmT\x9dK\xd7A#\x96e\
+\xfd\xef~\xf7-\x9b7m\xda\xb2\x06\x80Mm\x13\xad\
+}\x0aC\xdb\x17:Gq\xda\x12\xc0$\xfa\x19u\xe3\
+\xd4\xcd\xfe\x9d\xef\xfc\xfb\x1dk\xd7\xae\xfb\xcd5\xd7\xac\
+\x9edy%\xcfL\xf1\xfa\xc9=C\x14E\xf4\xf6\xf6\
+```\x00:\x8e\x09\x18Fq\xedX\x96CMM\
+-jjj,\xc5\xffd\xeb+\x8ab|\xe7\xceg\
+?\xf4\xb1\x8f}\xf8(\x00\x01z\x9c\xe0\xa2\x90\x04\xd3\
+\x02\x80\x05\xf3\x09(\xe6_w\xdd;\xaa>\xfb\xd9/\
+\xed\xba\xf6\xda5\x8d\xa1P\xc0|\xef\x14\x9fU\xf6\xec\
+\x94\xef\x11E\x11\x03\x03\xfd\x88D\x06\x90\xcfK D\
+\xa9\x93\x965D\x08PYY\x85\xfa\xfa\x06U\xe4\xcf\
+|\x5cA\x14\xc5\xf8\xc1\x83/\xdd\xf5\xfe\xf7\xbfk/\
+\x8c\x86\xe1\x05\x07\xc1L\x00@\x1b}\x05\xb1\x0f\xc0\xf9\
+\xf3\x9f?\xf4\x95\xc5\x8b/\xff?W]\xb5r\xaa\xe5\
+N\xf1\xfa\xb2g\x8b\xfe\x89F\x87p\xee\x5c\x17\xf2y\
+\xb1\xd0\xeb\x09\xd1S\xc6|\xbe\x00\xe6\xcdk\x82\xcbe\
+\x1c\x97\xa0\x9f\x13\x8d\x0e!\x12\x89\xe0\xb2\xcb\x16\xc3\xed\
+\xf6L\xa9\xbemmg\xbfp\xd5U+\x1f\x86\x11\x04\
+\xe6\xd1\xc4\xf3\x0a\x04n\xaa7X\xa4o\x19\x00\xb0v\
+\xed\xdb+++\xab\xefjh\xa8)\xa9\xc7K1\xae\
+\xdc{[\x81\xa3\x5c3\x11\xa2\x9f\x8cF\x87\xd0\xdb\xdb\
+\x0b\x9e\x17\x0a=^\xc7/`\xb7;\xb0`\xc1\x22\xf8\
+\xfd\xd6\x01*YV\xbc\x83\x8e\x8e6d\xb3J\x19'\
+N\x9c\xc0\xa2E\x8bPUUU\xaa\x06E\xff,^\
+\xbc\xe4\xa7\xaf\xbcr\x02*\x08\xccT\xc8)P\xe7g\
+\x9e\x17\x10L\x19\x00*\x95\x92\x00\xf6\xbb\xee\xfa\xf4\xdd\
+\x1cg\xf3UV\x86J\xde\x5c\x9eq\xa5\xee\xb1\xbe\xa9\
+\x94\xd4\xd0\x98\xa6\xb9t\x84\xe8V\xbd\xd6\xf3\x1d\x0e;\
+\x1a\x1a\x1a\x10\x0eWR\xcf(v\x0b\xfb\xfaz\x10\x8f\
+'\x0a\xe0QT\x06\xd0\xd5\xd5\x09\x8e\xb3!\x18\x0cZ\
+\xd5\xc0\xf2]\x16/^\xac\x81\xe0\x11\xe8m\x98WO\
+\x9fw\x10L\x09\x00\x16\xbd\x9f\xa56\x1b\x00{8\x5c\
+\xfd\xc1\x8a\x0a?X\x96\x9dr\x8f\x06\xa6\x0e\x0e\xabg\
+\xa4Ri\x9c;\xd7\xa9Z\xf5:\xd3\xb4c\x9bM1\
+\xf0\xaa\xabk\xd4z\xd2\xcfP~\xf0<\x8f\xee\xeeN\
+\x8c\x8e\x8e\x19\xa4\x86V\x8e\xdd\xee@}}\x03\x02\x01\
++\xe6\x97\x7f\x97\xc5\x8b\x17\xff\xf4\xd0\xa1\xe3\xe4\xdak\
+W\xd3\x92\xe0\x82\x80`:\x12\xc0\x10\xf0\x01\xc5\xfc\xfb\
+\xee\xfb\xf9\xc7\x1c\x0eg} Pj\xa0G\xa7\xb9\x00\
+G6\xcb\xa3\xaf\xaf\x17\xd1\xe8\x90\x81\xe1\xf4qee\
+%\x9a\x9a\xe6)\x83S\x16\x94\xcd\xf2\xe8\xed\xed\xc5\xf0\
+p\xd4T\x17Ejp\x1ck\xf2\x0ed\xc8ric\
+\xc4\x1a\xb4\xc0\xd2\xa5\x97\xff\xe4\xd0\xa1\xe3\xb8\xf6\xda\xd5\
+\x8fP\xa7D\xed\x12\xa8v\xc1\x5c\x83`\xa6*\x80v\
+\xfdl\xf5\xf5\x0d\xef&\x84 \x10\xf0\x1b\x18<U\xe3\
+n\xaa\xe0\x10E\x11===\x88D\x06\x8a\xc4\xbcv\
+\xec\xf7\xfb\xb0p\xe1\xa2B0\xc7\xfc\x0cQ\x14\x11\x89\
+\x0c```\x00\xa2(\x16\x01\x87\x10\x82p\xb8\x12\xf3\
+\xe6\xcd+\xb8\x85z\x11\xd6\xe2^\xb9\xa6\xf4\xbb\x9b@\
+@_(Bi\xdb9\x07\xc1\xa4\x01P\x22\xe4[\x10\
+\xff\xabW\xaf\x0dUT\x84\xdf\x09\xc8p\xb9\x5c\x86{\
+\xa7\xd3\xdbK\x11]\x96\xee\xd2E(\xa6)U\xd4\xca\
+\xf5x<hj\x9a\x07\x9f\xcf\xa7\xdeO?[\xd9\xf7\
+\xf6\xf6\x22\x12Q\x18\xaf\xd5\x89f~0X\x81y\xf3\
+\xe6\xc1n\xb7\x97\xac\xef\xf8\xb8b+\x88\xa2\x88\x85\x0b\
+\x17\xc3\xe3\xd1<\x89\xf2\xe0\xb8\xfc\xf2\x02\x08\x1e5\x9d\
+\x96\xa8\xfd\x9c\x81`\xaa\x12\xc0,\xfe\x0b\x06\xe0\xed\xb7\
+\xaf\xbf^k\x1c\x8ec\x8b\xc4\xf5lY\xfe\x1aE\xa3\
+C\xe8\xea\xea\x82$\x89\xa0\x19N\x1bx\xf5\xf5\xba\x81\
+gECCC\xe8\xeb\xd3\xbd\x03s9~\xbf\x0f\xf5\
+\xf5\x0d\x05\xf0X\xd57\x9b\xe5q\xee\x5c\x17b\xb1X\
+\x018\xad\xad\xa7\xd1\xdc\xbc\x0cn\xb7[\xbd\xa7T\x0d\
+\x14p\x5c~\xf9\x92\x9f\xec\xdf\x7f\x84\xdcp\xc3\xdaG\
+J\x5c8g \x98\x89\x0a0\xb8\x7f\xb5\xb5\xb5-\x0c\
+C\xc00\xd6\x83&\xb3e\xf9G\xa3Q\xf4\xf6\xf6@\
+\x10\x04\xaa\xa7\xea\x8c\xe38\x0e\xb5\xb5\xb5\xa8\xab\xab/\
+YV<\x1eG{{\x1bU\x06\x0ae(YL\x0e\
+\xd4\xd7\xd7S\xdeAq}5{\x83\xb6\x15\xb4:\x88\
+\xa2\x88\xd6\xd63hiYN\x8d\x1f\x94\xb7k\x96-\
+[v\xff\xfe\xfdG\xa0\x82\x80@\x8f\x15h4' \
+\x98\x14\x00J\xf8\xfe\x86\xd8\xbf,K\x0c!\x04^\xaf\
+\x12\x1c)1\xe9\xd4\xb2\xfc\xc9\x80#\x1e\x1fGoo\
+/\x12\x89q\x00LQ\x8f\x07\x80\x9a\x9aZ\xd4\xd7\xd7\
+\x974\xf0\xac\x5c:\xba\x0c\x96e-\xc1C\x13m+\
+\xe8\xd2G)\x03 \xb0\xd9XTW\x17\x87\x90'#\
+\xe9\x96-[v\xff\x91#'\xfdk\xd7.\xff\x0f\xea\
+\xf4\x9c\x82`*\x12\x80\x986\x83\x0a\xa8\xaa\xaaYC\
+\x08A2\x99D\x22\x91\x80\xcf\xe7+z\xe9\xe9\x88\xfb\
+dRs\xe94\xc6\xeb\xcc\xd7z]0\x18DS\xd3\
+|8\x1c\xd6\x06\x9e\xe2\xd2\xd1bZy\x1d\xfa\xb8\xa6\
+\xa6\x06\xf5\xf5\x0de\x99\xa6\xd9\x0a\xb4\xda1z\x18U\
+\xa8\xab\xab\xa7\xeaa~G\xebw\xa7\x9f3\x7f\xfe\x82\
+o\xb5\xb5\xf5\xb5,^\xdc\xf0y\xea\x12m(\xb9`\
+\x18Z\x974u\x9a\xae\x0d`V\x01\x1c!\x0ca\x18\
+\x02Y&hk\xeb\xc2\xe2\xc5\x0b\xe0\xf5z\xa7m\x0b\
+(\x22\xb6\x07\xc3\xc3Q\xf5\x1e\xa6\xc00\xad\xd1}>\
+\xbfAGkEh\xcf\xa0\xc5\xb4U\x8f\x07\x80pX\
+a\x9a\xd3\xe9(\xf9\xd2Z$QS\x19F\xf0\x00~\
+\xbf\x0f\x8d\x8d\xf3\xe1v\xbbJ\x96A\xd7\xcf\x8a\xe8v\
+\x09\x06\x83\xeb\xdb\xda\xfa\xb0xq\xc3\xe7`dv\xc1\
+; \x84\xccJ\xc8x&q\x00\x83'@\x08\x08\xc3\
+\x10H\x92\xf22\xed\xed\xddhn^\x04\x97\xcb\x0dQ\
+\x94\x0a7\xeb\xcb\x0dY\x14L1\xee\xf8\xf1#\xd0\x19\
+\xc5P\x0d\xa4\xe8\xe8\xba:EG[\xcf\xdeQ\xc4\xb4\
+f\xd9\x9b\x19O\x08\x81\xcf\xe73\x81\xa7\xb8-c\xb1\
+Qtww\xab\x8c\xd7%\x8e&5\x9cN\x07\xe6\xcf\
+_h0\x12K\x95\xa5\xbf\xe3\xe4\xd4` \x10\x5c\x7f\
+\xf6l\x1f\x96,i\xf8\x9cv\x09\xf4\xf8\x00\xc1,\xa9\
+\x82\xe9H\x00mo\xf0\x04dY\x22\xca0\xaa\xf22\
+\x92\x04\xb4\xb5u\xa3\xa5e\x09\x18\x86C>\xaf\x83\x80\
+a\xac\xeb\xac\x81\xc3\xe1p\xa0\xb9y9\xce\x9e=\x0b\
+I\xd2\x19\xc8q\x1c\x1a\x1a\x1aP]]C\xddSJ\
+L\xe7Q,5\x14\xa6566!\x18\xac\xa0\x9e\xa9\
+\xbe\x14eo\xf4\xf5\xf5\xaa\xb6B\xb1\xd4`Y\x0eM\
+MM%\x01X\x8e\xa6\x02\x8e`0\xb8\xfe\xc5\x17\x8f\
+\x1e\xbc\xfe\xfa+\x1f\x811\xb9A\xeb\x80s/\x01,\
+\x12\x164\xe6\xd3 *\x15.R\x80 \xe1\xf4\xe9\
+\xb3X\xb6l\x098N\x07\x81$\xa1$i\xe0\xf0\xfb\
+\xfdX\xbd\xfa\x0a\xb4\xb7\x9fE2\x99@]\x9d\xc2x\
+%\xb9\xc4\x5cGZL\xf3*\xc3\x0b9\x17\x00\x94\xf1\
+\xfd\xfa\xfazTW\xd7\x94dZ6\xcb\xa3\xa3\xa3\xad\
+\xc0x\xb3\xad\xa1\x19\x89Z\x08\x19\x98\xbb\x18\x87F\xe9\
+4\xbf\x00J\xa4U\x82q\xe4pV\xa4\xc0t\x8d@\
+\x80\x9a\xca\x0d\x80\xd1\x1b\xcc8\xa0\x22\xcb2N\x9fn\
+CK\xcb\x12\xd8\xed6\xf0\xbcb\xd4\x96j\x1b\x1a\x1c\
+\x0c\xc3b\xc9\x92f\x08\x82\x00\xbb\xdd\x0e\x86\x01\xcc\xa0\
+W\x5c\xbav\x08BV}\xbe\x96\xe4\xa43\xb0\xbe^\
+\x03\x8f5\xd3x^\xb77h\xa9A\xeb\xfap\xb8\x0a\
+\x8d\x8dMT\x19T\xc3\xccr\x8cCy\xaf\x14\x9e|\
+r\x17\x9eyf\x17\x07\xc0\x0e\x8b\x09'\x98\x05)0\
+\x938\x80\xb6'\x00\x08!\x1c\x14#P\xbbD\x07\x02\
+-\x09\x1c\x0e\x0e<\x9f\x9f\x94-\xa0\x91\xe6K\xd3\xe0\
+H$\x141\x9dH\xc4\xd5{t\x11\xad3\xadR\xb5\
+\xca\x1dj=\x8c\xe5\xe6\xf3\x22\x06\x07\x07\xd0\xd7\xd7c\
+ik\x10\x02\xf8|^\xcc\x9f\xbf\x08\x0eG\xe9(\xe0\
+l\x8en\xb2,\x83\xbd{_\xc2SO\xedE2\x99\
+\x82,K\xdaX\x0b=\xeb\x88\xee\x883\xa2\xc9\x02\xc0\
+\x1c\x07\xd0\xf6\x94\x04\x90\x89n!\xcbE@P$\x81\
+\x0e\x82l6\x0fz\xcc\x9e\xa6r\xe0\x10\x04\x1e\x9d\x9d\
+m\x88\xc7\xc7)\x8b\x5c\x17\xf9\x0a\xd3\x14\xab\x5c\x0fI\
+\x1b\x9f\x93\xcf+F\xe2\xe0`\x04\xa2\xa8\xb9\xd9\x8c\xa1\
+<\x8f\xc7\x8d\xc6\xc6\xf9\xa0\x17\xa6\x98\xcb\xd1MB\x08\
+\xfa\xfb#x\xf0\xc1\xad\xe8\xee\xee/\x94\x17\x8f\x8fv\
+@\xcf)\xccAW\xbb\x12u\xef\xb4\xd5\xc0t%\x00\
+MD\xadD\xa1\xe7i\x0c4\x03A\x96e\xb4\xb6\xb6\
+c\xf9\xf2%\xf0z\x1dH&\xf9\xd2\x85\x96\x00\xc7\x1b\
+o\x9cA&\x93\x82\x86=\x85\xf1\xca\xf3\x1c\x0e\x07\x16\
+,X\x00\xaf\xd78\x1aIK\x8e\x91\x11\xdaV\xd0t\
+\xbc.\xf6\xedvc\x08y.C\xda\xb2\x0c\xb5\xbdd\
+l\xd8\xf04^|\xf1\xd5B\xb6\x92V\x1f\x9e\xcf\xa4\
+aL*5\xa8^\xcc0.0\x1d\x1b\xc0\xf2\x9c\x12\
+\x06f\xd4\x06\x93J\x02A\x92D\x9c:u\x16--\
+K\xe0\xf39\x90Hd-\x8b-\xd5\x9e\xcd\xcd\xcb\xd1\
+\xd3\xd3\x85\x91\x91\xe1\x0238N\xb1\xcaC\xa1J(\
+\xd2\xa6\xf8\xbe\xb1\xb1Qtww!\x97\xe3\xa1\xebv\
+\x1d<,\xcb\xa1\xba\xba\xa6`\xe0I\x92\xac\xda\x1cV\
+\xf5\x9a\x9c\xea\xd2\xef\xb1~\x19\x9b\x8d\xc5+\xaf\x9c\xc0\
+\xa6M;1::\xa6\x96\xa1\xe4'\xea \x10\xe9l\
+bCF\xf1l\xd0L%\x80\xae1\x0d\x12\xa0<\x10\
+DQ*\x80\xc0\xebu\x22\x99\xccNT|\x81X\x96\
+\xc5\x82\x05\x97\xc1\xef\x0f\xa0\xa7\xe7\x1c\xaa\xab\x8d\x89\x1d\
+f\xc9a\xb4\x15\x8a\x19\x0f(!\xe4\xba\xba\xfa\xa2\xec\
+\xdf\xd2\xde\xca\xcc\xc0\xc1q\x0c\xa2\xd1\x11l\xd8\xf0\x0c\
+N\x9el\x03\x00\xb8\xdd.H\x92\x08\x87\xc3\x81`\xd0\
+\x0bB\x08b\xb1\x04\x86\x87\xfb\xa2(\xee\xf9\xe7\xdd\x06\
+(G\x9a\xe9\xa5J\x00\x85\x01\x13\x01A\x92$\x9c>\
+\xdd\x86\x15+\x96\x22\x18tcl,c\xd1SJ\x0f\
+\xa5\x86B\x95j\x8f7\xdd\xa1\x16!\x08<\xda\xdb\xdb\
+\x90L\xc6-\xa3w\x84\x00\xc1`\x10\x8d\x8d\xf3`\xb7\
+[\x1b\x89\xdauVT\x0a\x1c\xe5b\x1c\x0c\xc3\x80a\
+\x80\xad[wc\xe7\xce\x17\x91\xcf\xe7a\xb7\xdb\x10\x0e\
+\x07\xe1p\xd8\xc0\xf39\x08B\x1e\x0c\xa3\xac\x9bp\xf6\
+\xec9\x0c\x0c\xb4\x0db\x96\x99N\xd3l\x00\xa0@\xb4\
+\xdf<\x19 H\x92\x84\xd6\xd6N,[v\x19\x82A\
+\x97%\x08&\x1aJ5\x93 h\xe1\xdf!\xe8\xae \
+m(*Fb]]\x03\xbc^=\x0aXZ|\x97\
+ns\xab{\xac\x80\xc1\xb2\x04v;\x87\x13'\xce\xe0\
+\xb1\xc7\xfe\x88Hd\x18\x0c\xc3\xa0\xba:\x8c`\xd0\x87\
+|>\x8f\xf1\xf1$x>\x07\x86!\x18\x1d\x8d\xa3\xbd\
+\xbd\x17\xe1p\x00\xa0b-\x98\x03\x10\xcc\x06\x00d\x00\
+\x85\x09\x154M\x06\x08<\xcf\xe3\xf4\xe9\xf6\x02\x08b\
+\xb1b\x10\x94f\x8e~\xac\x8d\xd2\xf5\xf7\xf7\x98\x98\xae\
+\x97\xa1\x19x\xe5$\x87\xd5\xebM\x17\x1c\x0cC`\xb7\
+\xb3\x88\xc7\x13\xf8\xcdo\xb6\xe1\xd5WO\x03\x00\xfc~\
+/\xea\xea\xaa`\xb7\xb3\x18\x1fO!\x1eOB\x92\x14\
+\xd5\xa0\xa9\xd2ht\x146\x1b3\xe7\x9f\xe1\x99)\x00\
+\xb4f\x93\x19F\xf3\xa1\x8b\x83A\x13\x01A\x10x\x9c\
+>\xdd\x81e\xcb\x16\xa1\xb2\xd2\x83X,e\x08\x1dO\
+F\xb7\xf2|\x16##\xd1\xa2\xe8\x1d\x00\xb0\xac\x0d5\
+55\xa8\xad\xd5\x86yKq{\xaa\xae\x5cip\xd8\
+\xed\x1c\x18\x06\xd8\xbb\xf70\x1e\x7f|;r9E\xdc\
+/X\xd0\x00\xaf\xd7\x85t:\x8btl\x00\x99\x14\x00\
+\xb0\xe08-\xdbX7\x00;::\xbbL\x15\x96Q\
+\xba\xf2\xd3\xa2\xa9\x00\xa0\xec\xc3\x8b\xdd@\xed\x96\xc9\x01\
+!\x97\xe3q\xe6L\x07\x9a\x9b\x17\xa1\xa2\xc2\x8b\xd1\xd1\
+\x14\xf2y\x91\xba\xb7|\xcc\xc0\xe5\xf2\xa0\xa5e\x15\xda\
+\xda\xde@*\x15\x87\xe6%\xd5\xd5\xd5\x1bB\xb7\xfa=\
+\xd6\xafX:@79p\xd8l,\x5c.\x1b\xce\x9e\
+\xed\xc2\x83\x0fnA\x7f\xbf\x920\xd2\xd8X\x83\x86\x86\
+\x1aH\x92\x88\xe1\xe114y\xce\xa2\xa1*\x81q\xbf\
+\x0d\xaf\x8d4A\x90\x1d\xd0\xc6,\xb4M\x8d\x9a\xce\x19\
+\xf3\x81\xd9S\x01r4\x1a\xed\xa8\xae\xae^A\x0f\xc9\
+N\x15\x08\x82\xc0\xa3\xb5\xb5\x03K\x97.B(\xe41\
+\x80\xa0|@E9\xc9\xb2\x0c\x96.m\xc6\xc0@?\
+r9\x1e\xb5\xb5\x0d%\x0d\xbc\xc9\xa8\x15\xabg\x948\
+\x0b\x86!p\xbb\xed\xc8f3\xf8\xdd\xef\xb6a\xdf\xbe\
+W\x00\x00\x81\x80\x0fK\x97*\xb9\x0a\xb1X\x1c\x83\x83\
+#\x10\x84\x1c\x9a\xeb\xb3p\xb8\x09\x02#\x02\xae\xaen\
+\xc7\xf1\xd8e\xc8Hn\x03\x00\xd4\x19K\xa5\x18?+\
+`\x98,\x00h\x0e\xd2\xa3R\x85\xb8\xf4\xd8\xd8\xe8\x90\
+bd\xc9\x06\xe6\x97\x03\x02M\x1a\x10\x04!W\x00A\
+8\xecE<\x9eF:-\xa8\xd7L\xae\x17\xea\xa2^\
+{\xa6\xd5=S3\xeeJ\x03\x83\xc0\xed\xb6\x81e\x09\
+\x0e\x1c8\x82\xdf\xff\xfe\x8fH\xa5\xd2\xe08\x16--\
+\x97\xa1\xb2\xb2\x02\x82 \xa0\xbb{\x00\xa9T\x06\x0cC\
+ \x8a9\xd8X\x19\x0e?\x03\x9b\x8b\x81tN\xc0\xaa\
+\x8a6\xb4'\xe7cL\x0c\x81\x10\xc5@\x8e\xc7GN\
+R/1'\x92`\xaa\x12@6\x1d\x17\xb6?\xfca\
+\xe3\xc1\xb7\xbf\xfd\xc6\xff\x09\x00\x92\xa4\xd8\x01\x13\x01\x81\
+\x96\x04\x1a\x11\x02\xe4r9\xb4\xb6v\xa2\xb9y!\x02\
+\x01%\xb12\x9d\x16f9\x14;s\xcb\xdf\xe5\xb2\xc1\
+\xe5\xb2\xa1\xb3\xb3\x0f\xbf\xfb\xdd\x16tu\xf5\x01\x00\xe6\
+\xcf\xaf\xc7\xe2\xc5M \x84`pp\x04\x91\xc80\x08\
+!\xe08\x16\x92$B\x96e\x84\x83\x22\x08\xc3\xc2\xe6\
+\x00|M6$\x07rX\x8avtfd\x8cJ5\
+\xd0\xa4\x0a\x8a\xdb|Vi\xba*\xc0,\x05\xa4}\xfb\
+\xf6\x0c\x8c\x8f\xc7\xba\x83\xc1\x8a\xf9Z\x90d&@\xc8\
+\xe7\x15\x10,]\xaa\x83 \x95\x12\xca0\xed\xfc\x81\xc3\
+\xe1`\xe1\xf18 \x08\x02\x1eyd\x1b\xf6\xee}\x19\
+\x82\x90C8\x1cDK\xcb\x22\x04\x02\x8a\xe4\xea\xe8\xe8\
+A.\x97\x07\xcb\xea\xd6}.\x97\x03\xcbr\xaa\x1c$\
+\x00\x01\x1c.\x0e\xf6\x85,\x92\xbd\x02\xe6\xcb\xed\xf0\xe5\
+\x13\xe8\xe2/\xc3\x0c\x97o\x98\x14M\x08\x00Y\x96\xb5\
+Q\x1e\xb3\x08*0\x1f\xea(\xd5\xbe}{\x9e\xb9\xe3\
+\x8e\x0f\xfd\x83\xc6\xe4\x99\x02!\x97\xcb\xe1\x8d7\xba\xb0\
+t\xe9\x22\x04\x02n\xd8\xed,b\xb1L\xc9\xba\xce5\
+88\x8e\x81\xd7\xab\x18k/\xbdt\x1c\x1b7nG\
+,6\x0e\x9b\x8d\xc3\xca\x95\x97\xe3\xb2\xcb\x1a\xc1\xf3\x02\
+\xda\xdaz16\xa6\x0cV\xd1\xcc\x97e\x19\xa2(\x16\
+V Qk\x00\x10\x02\x86\x10\xcc[\x11\xc4`W\x12\
+\x18\x18B.\x9f\xc7\x91\xb1s]\xc6\x0b/|$\xb0\
+$\xf3\x01\x88\xdf\xf8\xc6\xff\xdd\xb5t\xe9\xb2U\xcb\x96\
+-\xbf\x01\xd0\x99<\x13 \xe4r9tt\xf4`\xd1\
+\xa2&\xb8\x5c\x0e\xc82\x10\x8b\xa5-\x197\x9b\xc3\xb2\
+\xca=\xcaM\x0cC\xe0\xf5:\xe0p\xd8\xd0\xdf?\x88\
+G\x1e\xd9\x86\x13'\xce\x02\x00\x16,\xa8\xc7\xea\xd5\x97\
+\xc3n\xb7\xa1\xafo\x08\xe7\xceE I\x12X\x965\
+xF\x84\x10d\xb3\xd9\x02 4\xa6\xeb\x81T\x02\x99\
+\x10\xcck\x0e\x022 \x0f\x8c\xe0#\xeb\xb8\x8f\xb4\x9e\
+v\xbd\x14\x19\xcdhK\x97X\x05\x85\x080\xfd\xc4\x90\
+I\xad\x0fP\x18\xe75&\x82:\xa0|GP\xfb\x92\
+\x98\x0f\xcaG\xa4\xfc\x8f=\xb6\xf9s--\xab\xae\x07\
+\xf4\x06\xd6\x96\x82\x01dH\x92\xf6\xbf\xb6\xdcJ\xf15\
+\xe6\xff\xddn7\x16-j\x82\xcd\xc6!\x9d\xe6\x11\x8b\
+\xa5K\xd5u\xaamP\x12\x1c\x84\x10x<v\xb8\x5c\
+6\x08B\x0e\xdb\xb6\xed\xc1\xf6\xed\xfb!\x089x<\
+n\x5cs\xcd\x0aTWW \x95\xca\xa2\xb5\xb5\x1b\xa9\
+T\xba\x88\xe9t<\x22\x99LB\x0bP\xddz];\
+\x9c\x0e\x16 DK\xa8\x80\xc7e\x83\xcf\xa7\xe4>\x8c\
+FR\xe8|}\x04\xc9d\xa6\xe3\x99\x97\xde\xf8\xd7g\
+\x0eu\x1c\x05\x90\x04\x90\x06\x90E\xf1\x1a\x03\xb2\xdaV\
+S\x02\xc1T\x01@@M\x05\x87\x02\x02\x17\xa8O\xc9\
+i\xfb\x8d\x1b7\xff\xfd\xca\x95\xab\xaf\xa1\x99\xa8\xed\xa7\
+\x0b\x04\xb7\xdb\x8d\x85\x0b\x1ba\xb3q\xc8\xe5\xf2\x88F\
+\x93e{\xb0\xc5{L\xfaZ\xb7\xdb\x06\x8f\xc7\x01\x96\
+eq\xf4\xe8)l\xdc\xf8\x0c\xfa\xfb\xa3\xb0\xd984\
+7/\xc4\xca\x95K \x8a\x22\xba\xba\xfa\xd1\xdb;h\
+\x1a\xc13o\x0c\x04![\x98\x81\xc4\xb1\x12n\xbe\xaa\
+\x13N\x07\xab\x80O\x05\x8c\xc3\xce!\x14tB\x93\x0a\
+#\x03)t\x9f\x19F6\xcd'\x9f>\xf8\xc6\xdd[\
+\xf7\x9f=\x02\x1d\x00\x02\x8c\x8bOM\x0b\x04S\x01\x00\
+\xa0\x03@\xcbR1K\x01M\x12\xf8\x00x7n|\
+\xe2\xefV\xae\xbc\xe2j\xb5R0\xef\xa7\x03\x04\x9f\xcf\
+\x8b\x85\x0b\x9b\xc00\xa4\x00\x02I*~\x87\xa9\x0a\x02\
+\xed\x15\xedv\x16^\xaf\x13v;\x87ht\x14O<\
+\xb1\x13\xfb\xf7\xbf\x0a\x00hj\xaa\xc1\xda\xb5\xcb\xe1\xf3\
+\xb91::\x8e\x93'\xdb!\x8aRQ\x04O\x97\x00\
+\x0c\xd5\xfb\xf5\xa9\xea>W\x0a7\xae\x89\x80\xd1\xa4\x04\
+\x98\x02\x08\xea\xaa\xdd\xd0\x00@\x08A*.\xe0\xd4\xe1\
+>\xf0\xe9l\xb2\xado\xe4\xfb\xdf\xdf\xf8\xd2F\x00\x19\
+\x00<J\xaf42i\x10Lz\x89\x98\x12j\xc0\x0e\
+\x05\x00f\x10h@\xf0l\xdc\xf8\x87O\xafZ\xb5f\
+\x9d\x15\x00\xb4\xfdT\x81\xe0\xf3y\x0a \x10\x84<\xa2\
+\xd1\x84\x05\x08\xca\x87\x8e\xcd\xc4\xb2\x0c\x02\x01'\x1c\x0e\
+;\x04\x81\xc7\x9e=\x87\xb1u\xeb\x1e$\x12Ix<\
+n\x5c}\xf5r45\xd5\xa9+\x9dw \x16\x8b\x1b\
+\xc4\xbc\x0e\x00\xc6\x00\x04\x86!\xe0y\x1e<\xaf\xe4=\
+\x10B\xe0w\xa5\xf0\xb6+\x06\xc0\x10F-\x03 \xea\
+\xb9\xca\xb0\x0b6\x8e\xa1\xc7\xd9!\xa4\xf38s\xa4\x0f\
+\x89\xf14Z\xcfE\xbf\xf6\x83\x8d\x87\x1f\x85\x02\x00\x1e\
+\xc5k\x13O\x09\x04\xd3\x01\x00\x0d\x02;t\x10h\x9f\
+\x96\xf5\xc0\x08\x04\xf7\xc6\x8d\x9b\xefZ\xbd\xfa\x8auf\
+\xa6\x9a\xf7S\x01\x82\xd7\xab\x83@\x92d\x0c\x0d\xc5\x91\
+\xcb\xe9\xa1\xe3\x09\xde\xa6p\xa4\x19x>\x9f\x13\xb2\x0c\
+\x9c9\xd3\x8e\x87\x1f\xde\x86\xee\xee~\x00\xc0\xea\xd5K\
+\xd1\xd2r\x19\x9cN;\xba\xba\xfa\xd1\xd1\xd1S$\xe2\
+\x95q\x10]\xef\x9b\xa5A<\x1eWG\x1c\x95\xdf>\
+g\x0ao[\xd5\x07B\xb4\x9e\xaf\xde\x0b \xe0s\xc0\
+\xe3\xb1\xa9\xb5$\x85\xea\x8ay\x09'^<\x87\xc4X\
+\x0a\xb1df\xcb?\xfdr\xcf\x17`\x04\x01\xbd\xfa\x98\
+f\xa4O\x08\x82\xa9\x02@k=z^ \x0d\x027\
+t\x9b@\x93\x08\x1e\x00\x9e\x8d\x1b7\x7fj\xf5\xea+\
+\xd7Y1\xd5\xbc\x9f,\x10\x8c \x9008h\x04\xc1\
+Dj@a\xbc\x0b\x0cC\x90L\xa6\xb0q\xe3\xb38\
+x\xf08x^@mm\x18\xeb\xd6\xad@ee\x05\
+\xe2\xf1$N\x9f\xee@&\xc3\x1b\xf4\xba\xc2hk\xa6\
+\xd3~\x7f*\x95V=!\xe5?\xaf3\x85\x1bV\xf6\
+\x17\x98^\xf0\x0a@\xe0rs\xa8\x088\xd4\x86\xd6\x01\
+\xa0\xfdn=\xd6\x87\x81\xae\x11\xc4\x92\x99-\x0f\xed8\
+\xfe\xad\x13\x1d\xb1(\x14U`\xa5\x0e&\x04\xc1\x94V\
+\x09+!\x05\xb4\xd5\xc14{\x80\x96\x04\x9a4pC\
+\x01\xc1\xdf^q\xc5\x95\xeb\x8a\x0d<=el\xaa@\
+\xf0z=X\xb0@\x97\x04\x83\x83\xe3\x13J\x02\x87\x83\
+C(\xe4\x05\xc71\xc8\xe7\xf38p\xe0Ul\xdc\xb8\
+\x1d\xf1x\x12v\xbb\x0dW]\xb5\x1c\x97_>\x1f\x00\
+p\xfat\x07\xa2\xd1X\x81\xe94\xc3\xad\x99\x0e\xc3u\
+\xe3\xe3t\xefW\xad}G\x12\x7f\xb1\xbcO\xf5\x00\xf4\
+akB\xd4\xc9\xa5a\x97\x81\xe9j\xe3\xab\xbf\x81\xb6\
+\x13\x038\xd76\x88,/\x9cy`\xdb\xab\x1f}\xbd\
+s,\x0a\xc5(\x9c\xf2\xeac\xd3\x01\x80V\x0f\xcd \
+d\xa0.\x11\x83bu@K\x017\x00\xf7\xd6\xad\xdb\
+\xff\xa1\xb9y\xd9\x0akK\x7fz@\xf0x\xdc\x05\x10\
+\x002\x86\x87\x93H\xa5x\xad\xce\x85\xfa\xdbl,*\
+*\xdcp8\x14\x11\xdb\xdb;\x80\xdf\xfev+\xce\x9c\
+\xe9\x00\x0047/\xc2\x95W.\x85\xd3\xe9\xc0\xc0@\
+\x14]]\x03\xc8\xe7s\x06\xbd\xce\xb2V\x0c\xb7\xee\xfd\
+\xa2(\x22\x91\xd0g\x17i r\xd9\xd3X\xb7\xa4\x13\
+\x0e;c\x09\x82\x86Z\xaf\x81\xe1\xea\xcd\xeao%\xa8\
+2pn\x04'_\xee\x84 \x08}/\x9e\x1c\xf8\xfb\
+\x0d\xcf\x9dy\x15\xc5 \x98p\x91\xea)\xaf\x13h\xa1\
+\x0a\x0c\xcb\xc4@\x01\x81\x0b\xbaJ0\x80\xa0\xba\xba\xb6\
+\xf2\x89'\x9e\xba\xa7\xaa\xaa\xba\xde\xcc\xe0R@\xa0\xcf\
+\x97\x02B \x10DccMa\xcd\xbf\xe1\xe1D\x01\
+\x04\x0cCPQ\xe1\x86\xc7\xe3\x04\xa0\xac\x0b\xfc\xe4\x93\
+{\xb0s\xe7\x8b\xe0y\x01\xc1\xa0\x1f\xeb\xd6-W\x92\
+4\xc4\x11\xb4\xb7\x9eE\xef\xb8\xab\xc8\x98S\xf6\xa5\x19\
+n\x06F2\x99B.\xa7\x03\x88a\x94\xa4\xd8lv\
+\x0c6\x12\xc1\x0d\xab\x00\xaf\x9bNGW\xee\xab\x0a\xbb\
+\xe0\xb0\xb3EL7K\x85\xe8\xc0\x18^\x7f\xa9\x1d\x99\
+\x0c\x9f8\xf0\xfa\xb9\x8fox\xae\xed\x18t\xef\x80\x9e\
+GP\x12\x043](\x12\xb0X#\x18\xba:\xd0@\
+\xe0\xa16wmmmx\xd3\xa6\xa7\xbeX]]S\
+_\xde\xf7\x9f\x1a\x10\xfc\xfe \xe6\xcd\xd3\xe7\x0d\xc6b\
+I0\x0c\x81\xcf\xa70S\x92$\x1c?~\x06\x0f=\
+\xf4\x14\x06\x07G\xd4\x10\xee\x12\xb4\xb4,\x02@\x90\x1c\
+>\x0a\xf7\xe8\xab\x90\x04\x09\xdd\xb9\xc5\x18\x97kKX\
+\xfa\x13K\x00Q\x141>\x9e\x00\xcb\xea\xcc\xe5\xf98\
+\x92\xc9A\x88\xa22\xbaig2\xfc\x8dkI.\x1c\
+t{\x89\x16\x0f\x00A\xc0o\x87\xdf\xeb,f\xba\x85\
+TH\xc6Rx\xe9\xf9S\x10\x04\x01\x9d\x03\xa3_\xf9\
+\xe1\xef\x8fn\x80.\x09&\x5c\xae~\xa6K\xc5j\xf5\
+1\x83\xa0\x94:(\x80@\x91\x04\xdb\xee\xa9\xa9\xa9\xae\
+\x9f8\x084y \x84\xc3a\xd4\xd6\xd2)_\xca\x8d\
+\x03\x03Ql\xda\xb4\x03\x07\x0f\x1e\x07\x0044Tc\
+\xcd\x9ae\x08\x04|H$R\xe8\xe8\xe8A\x83\xff\x0c\
+\x167\xa6\x11mK\x03y\x09#R=\x86\xc8\xe5&\
+\x00L$\x01\x94\xf3z\xef'\x90\xa4\x1c\x12\x89\x01d\
+\xb3\xba\xbb\xda\xd5\xd5\xf9\xf2\x9e=\xcf\xef\x0f\xfam\xcc\
+/\xef\xfd\xf0\xc7j\xaa\x025Z\xb7r;m\xa8\x0c\
+\xb9\x0bL63]\xf9M\x0a?3)\x1eG\xfet\
+\x1ac#\x09\xf4\x0e\x8d\xdf{\xef\x86#\xbf\x82Q\x12\
+\x14\x81`F\x00\xd0\xebBh)@\x07\x89\xac\x0cC\
+\x17\x8a%A\xe5\x13O<\xad\xaa\x83\xc9D\x03'\x07\
+\x84p8T\x00\x01\xcf\xf38t\xe88\x1e|p+\
+\xb2Y\xa5\xe7\xad[\xb7\x1c\x8b\x165\x82\x10\xa0\xab\xab\
+\x1f\xf1x\x0a\xc9d\x0a\xd7/\xefCu\x05\x0fY\x92\
+1\xd2\x93F>\x91\xc38j1\xc25C&\xb6I\
+J\x00\x06\xb2,\x15\x06\x83\x12\x89A\xa4R\xc3\x85\x05\
+\xa8b\xb1\xd1\xae\x17_<\xb0}`\xa0o@k\xc7\
+\x80b\x0e?z\x00\x00\x10\xb6IDAT\xcf\xe6\xfa\
+\xfe\xd7?rg\xcb\xe2p3\x08`\xe3\x18\xd4\xd5\xf8\
+\xca2]=\xa1\xf1\x01\xf9\x5c\x1e\x07w\x1dGl$\
+\x81\xf1Df\xf3W\x7f{\xe8\x1f\xa1H\x02+\xe3P\
+\x86\x0a\x82\xd9\xfc^\x00m\x18NV\x12xjkk\
+\xc3\x9b7?}OU\x95\xa6\x0ef\x07\x08\x1cg\xc7\
+\xbe}\xaf\xe0\xc8\x91\x93\x18\x1bS\xe6\x0fr\x1c\x87\xab\
+\xaej\xc1\xf2\xe5\x8b\x11\x89D\xd1\xd5\xa5L\xc1\xca\xe7\
+E\xa4RI\xdc\xb02\x82\xaa _`\xeaPG\x1c\
+|\x5c\x80\xc0x\x11u^\x070\xf6\x12\x12\x801\xd8\
+\x08\x89D\x0a\xe3\xe3#\x88\xc7\xfb!\x08Y\xc8\xb2\x8c\
+L&=v\xfc\xf8\xb1\xa7O\x9e<q\x02F\x0b\xbd\
+\xd0y~\xf8\xcd;\xef\xbc\xf6\x8ay\xd7\x10BP_\
+\xeb\x05\xa7\xa6\xb1Y1\xdc\xc4\x83\xc2\xf9\xa3\x07O\xa3\
+\xfb\x8d~$\xd3\x99\xdd\x1b\xf7\xbc\xf1\x8f\xc7\xdbcf\
+\x0f\xc1\xe0\x1d\xcc\xe6'ch\xf7p\x22\x17\xd1\xa0\x0e\
+jkk+7o~\xfa\x1e\xc5&\x98\x5c4\xd0\xfa\
+\x1a\xfd|WW?\x1ezh[\xa1\x8e\x1e\x8f\x1b\x0b\
+\x17\xd6\xe3]\xef\xba\x1a\xaf\xbf\xde\x86\xa1\xa1\x91\x02\x03\
+\x13\x89$DQ\xc4\xf5\xcb\x07P]\xa1\x02@y1\
+\x88\xc9<\x06\xdab\xe0\x89\x17q\xd7\x1a\xe4mA\x13\
+\xd3\x8d6B>\x9fG{\xfb\x09\xa4R1\xb5\xce2\
+:;\xdbv\x1f8\xb0\xff\x05A\x10\xe20\xf6DP\
+m\xc6\x01\xe0\xbe\xf0\x99[\xde\xf5\xc1\xf7,\xbb\xad\xba\
+\xd2\x03\x97\x93C9\xa6'\xc7\xd38\xd7>\x94iY\
+\xb3\xd0\xc5P 9s\xbc\x03\xa7\x8e\xb6#\x91\xc9\xec\
+\xfa\xe7\xff<|\x17\xca\x8c\x1d\xccJ\xc6\x81\xacqC\
+\xd71\xda0q\x1e\x0a\xf2x\xb5\x12\x19(\x83\x19i\
+\x00)uKG\x22\x91\xe1\x0f~\xf0\xd6\x9f\x0c\x0d\x0d\
+\xf6\xeb\xba\x96\x81~\x5cl\x84Y_\xa33C\xad\x17\
+\x00mu\xcf\x0a\x5cye3^{\xed\x0d\x0c\x0f\xc7\
+\xc0\xaa\x9f\xb9\x95$\x85I\x8ca\xaa\x0f\x01\xd4\xb2\xfd\
+\xd5n,\x5cQ\x05\x17\x93B0\xb5\x1f\x0e9\x01\x8e\
+c\xc1q\x0cX\x96)\x94\xc3q,\xe2\xf1!\xb4\xb5\
+\xbd\x8cDb\x04\x92$ah(zj\xcb\x96'\xee\
+\xdd\xb3\xe7\xf9\xa7\x04A\x88\x02H\xa8[\x9c\xda\xc7\xa9\
+\xffS?}`\xc7\x8e\xef\xff\xe2\x85_&Sy\xc1\
+\x1cV\xd6c\x11\x0c\x18B\xd0\xdb6\x8c\xa3\xafv\xf7\
+\xb7u\x0e\x1d'\x0c\x03e#Xv\xe5e\x08\x84\xfd\
+`\x08\x13\x84\x22\x81m\xeaF\x0f'\x03\x98\xc5\x94\x13\
+\x0b\x10h.\x88\x06\x02\xc1\x04\x82\x14,@\x10\x8dF\
+\xfa\xcb3y\xf2@\xd0@\xe0t:\x10\x0c\xfa\x91\xcb\
+\xe5\x11\x8b%T\xa6)\x0c\xccd2`\x18\xe5X\x14\
+a\x0a\x1f\x12\xe4r\x12*\x1b\xbch\xb9\xba\x01\x0eN\
+\x86wl/\x1c\xd9\xae\x02\xe3Y\x96\x85(f\xd0\xd7\
+w\x0aCC\x1dH\xa5\xd2\xc8f3\xb1?\xfdi\xef\
+\xaf\xb6m\xdb\xfc@,6r\x0e\xca0.\xcd\xfc8\
+\x80q\xea\x98\x06A\xf2\x99\xddG_\xfb\x97\x9f>\xfb\
+\xff\x06\x87\x13\xfd\x1a\xd3\x01%\x7f\x80!(\xe4\x11\xf0\
+\xd9< \x13\xe6l\xd7\xf0 \x00\x03H\x9c\x0e;l\
+\x9c\xad\x81\x02\x80yn!\x03\x80\xcc\x1a\x00,@ \
+\x9b@ \xc0(\x092*\xf3\x934\x08\xee\xbc\xf3\xf6\
+\xfb\xa3\xd1\xe1>=\xbe>} h\xc4\xb2,\xecv\
+\x1b\xce\x9d\x1b(0\x9eeYu&\xae6e\x8b\x81\
+\xdb\x99\xa7\xdc-\xe5\xfe\xbc(\x83\x10\x06\x9e\x80\x03\xab\
+n\x98\x07\xbf\x8f\x85#v\x08\xb6t\x07\x08\x9102\
+\xd2\x85\xae\xae\xe3H\xa5\xc6\x90Je\xb2mmg\x9f\
+\xdb\xb0\xe1\xe1\xef\x9c=\xfb\xc6\x09\xf5\xdd\x92&F\xd3\
+\x9b\x06\x82\x02\xf3\xb5\xed\xa9\x1d'\xce\xdc\xfa\xd7\xbf\xfc\
+it8\xdeO3]\xeb\xe5D\x1f|\x22\x90\xc1\x9a\
+\xa5\x85\xcda\x87\xc3\xc6\xd5[\x00\x80v\xe1g?\xe9\
+l\x02\x10\x98\xd5\x81&\x0d\xb4\x17OE\x22\xfd#\x1f\
+\xf8\xc0\xfb~\x12\x8d\x0e\xf5)zv\xfa@P~3\
+\xe0y\x1e\xa2(B\x10\xf2\xe08\xb6 \x01\xb2Y\x1e\
+\x0c\xa3\x1cs\x1c\x8b\x80GQ\xcbf\x10\xe4r\xca\xca\
+WN\xb7\x03+\xae\x9f\x0f_\xd0\x05\xdb\xc8\x01\xa4\xdb\
+\x9f\xc4\xc8H\x1f$IBOO\xcf\xd1\x07\x1f\xfc\xed\
+\x0f^x\xe1\xf9\xa7\xa1K8\xba\xe7\x9bE\x7f\xb9\xff\
+\x93\x00\x92\x91hz\xe4\xca[~\xfc\xbd#'z_\
+62]yG\xbb\xdd\x86\xfaJ\xff\x02\x8ea\xdcz\
+0Iy\xf7\x0a\xf5\x83\xde(\x9eZNg\x14\xcdM\
+\xd6!\x05\x02s\xdaX9\x10h\xea \x19\x89\xf4\x0f\
+\xdfq\xc7{\xee\x8fF\xa3}\xa4\x10[\x9f:\x10\xb4\
+-\x9fW>X\xad\xf7~\x06\xb9\x5c\x1e\x0c\x83\x824\
+`\x18F\x15\x88\xba\xdfM\x08\x01\x01\x03Q\x95\x02 \
+\x80\xcd\xc6a\xcd\x8dKP;?\x84\x0a6\x8e\x1a\xe9\
+\x5cv\xff\x0b\xbb\x7f\xbfi\xd3\xa6\xc7y\x9e\x8f\xa1X\
+\xba%J\xec\x93\xd45\xe6\xff\x0d\xdbm\x7f\xf3\xc0\x7f\
+m\x7f\xfe\xd4\x1f\xf5E0\xd4\x88a}\x00,\xc3\xe0\
+\xed\xeb\x16_G\x88\xa2\x22\x0a\xf5V\xdb\x0cz\x94\xd6\
+\x0c\x00`\xb6U\x00MT\xb8q\x22\xc30MmZ\
+\xcaS*\x12\x89\x8c\xdcq\xc7-*\x08\xb4\x10\xec\xd4\
+\x80\xa0\x89vm\xd3\xf56\x07\x9e\x17\x0a\xba_\xdb\xd4\
+61\xb5\x11\xc0\x0b\xb2\xf1\xd9\x00\x9a\xd7\xcc\xc3\xbc%\
+\xd5\xa8rd\x9d\x1f\xb9\xa6\xf2\x1d^'\xc3\x96x'\
+\x0d\xdc\xf4o\x1a\xf4\xe6N`\x05\x82\xd4]\xf7<\xba\
+\xf97\x8f\xee\x7f\x84\xe7\xf3\x19\xad.\xf5\x0b*q\xcd\
+\xbb[\xe0\x0fy\x0cL\xa7U\x01\x8c\x8c/\x9ad:\
+\xa7y\xc7\x93\x04\x01\x0f\xbd\xc7d\xa0\xf7\x8cT$\x12\
+\x19\xb9\xfd\xf6[\xee\x1f\x1eV@0U \xd0\xe7=\
+\x1e\x17l6\xc5Z\xcf\xe5\x04\x83\xeeW6u\x81\xeb\
+B\xc4U\x05\x02!\xca\xc7\xa5\xa0\x1a\x96ZC\x83`\
+\xc9\xaaF,_\xb7\x10a\x9f\xbb\xee\xde\xbf{\xd7=\
+k\x97T\xd5Q\xef\x94\x85Q\xcai\x9b\xf6?\xfd\xee\
+\x93\x01A\xf2\xeb?|f\xcf\xe7\xbf\xfe\xfb\x9f\xf1\xd9\
+\x5cF\xab\x8b\xbf\xc2SH&\x81\xe6\x05AQ\x17B\
+N\x1aD1\xf3\x0d4\xe7\x89\xe7\x14\x08\xe8\x8f&\x96\
+R\x07ZO)4B$\x12\x19\xbe\xed\xb6\x9b\xef\x8f\
+F\xa3}\xc6^^\x0c\x04\xbd\x17h\xe2\x9f)\x80\xc3\
+f\xe3TQ\xafd\xe8\xd0\xbd_\xbbN\xc8\xcb\xea\xc0\
+\x8b\xd1\x13\x10%@.X\xe1\xc6g\xd5/\xa8\xc4\xea\
+\x1b\x96 \x10p\x85>\xfd\xfe+\xfe\xe9/\x96\xd76\
+\xc2\xe8\xf9\xe4Jl\x02\xb5/g \x1b\xd4\xc5S;\
+O\xb6~\xf8\xee\x07\xbe7\x14M\xf4\x19\x98\xae\xb5\x85\
+j+\x8cD\xc6\xc1\x8b\xd2\xe0D\xfc\x99\xfb\x99\x07(\
+\x92\x04t\xe6\x0a\xddPZo0\xbb\x88\xa9H$\x12\
+U@0\xd4W,\xeeu \x18\xff\xd7{6-\xe6\
+\xb3Y\x01\xb2\x0c\x93j`\xe0r\x88`\x0b\xd1\x14\xbd\
+\x97\x135\x00+\xe6e\xfd\x7f*\xd6@\x08AMC\
+\x08W\xbfk9\xdc\x1e\x87\xfbo\xde\xb3\xfaGw\xbf\
+o\xf9M\xb0H\x9b/\xb3\x99\x81Pd\x17\x81\xf2\x96\
+^:\xdas\xee\xe6\x8f\xfe\xecG\xdd\xbd\xb1\xb3\x05\xa6\
+\x17\x5c_\xa5\x8ebND<)t\xc0h\x90\x17E\
+\xfd\xce\x0b\x00\x00Ku\xa0\x01\xc0\x0a\x04\xe6\x06HG\
+\x22\x91\xe8\xad\xb7\xdelR\x07V@\x80\xc1\x00d\x18\
+\x06\xc1\xa0\xd7\xd0\xfbi@h \x008$2.\x83\
+\xfb\x08\xa2\x03B\xc8I\x06\xa6\xd3\x01\x19\x86\x10\x04\x82\
+^\xbc\xed\xbdW\x22\x10\xf2a\xed\xb2\x86/~a\xfd\
+\x9a\x8f\xc2\xca\xa0\xa0\x9a\x04\xd6@(\x1583H\x83\
+\xbe\xa1Dt\xed-\xf7\xdew\xecd\xcfA30\xf3\
+9\x11\xf1\xb1\x14^<\xd9\xbb\x03\x16\xb9\x82\xd4\xf3\xcf\
+\x1f\x00\x80\x926\x01\x0d\x00s\x0f0\xb9\x88\x91\xe8\xad\
+\xb7\xde\xfc\xe3ht\xc8\x22N\xa0\xf7|]\x0d0\x05\
+\x10\xb0,\xa3\xa6e\x93\xa2\xde\xcf\xb2\x0c\xf8\x9c\x84?\
+\x1d'\xe8\x8eh+\xb1\xa9v\x92\xaak\x85\x5c\xde\xc4\
+\xf4b\xdf\xdc\xedu\xe2\xba\xbf\x5c\x85`\xc8\x87\xa5M\
+\xe1\xcf\x7f\xef\xaek\xff\x15\xc6\x05\x9e4?\xbc\xa8i\
+P^\x1a\xd0\x12\xd1\x00\x84\x9b\xd6\xff\xec\x97[\xb7\x1f\
+\xdd\xa8\xabC\x16\x83=#\x88\xa7\xf8\x13\xbb\x8ft\x9f\
+\x81q$\xd00$\x8c\xd9\x0a\x05O\x85&0\x0c\xcd\
+\xba\xd0\x1c6N\x0e\x0c\x0cDo\xbf\xfd=?\xd2\xd5\
+A) \xe8\x9b$)V|&\xc3\x17\xf5|\x86a\
+02\xd2\x877\xde8\x82\xe8\xf0\x10\x9e\xda3:~\
+\xbam\xf0,\xa1z?@ \x08\xb2%\xd3\x09CK\
+\x05\x02\xbb\xc3\x86w\xdcz\x15\xe6-\xaeC8\xe0\xbd\
+\xf5\xfbw_\xf7\xf3\xcb\x1b\xfda\xe8\xfe\xb8\xd9%\xd3\
+\xda\xc2,\x195\x10\x98\xa3\xa7E\xc6\xe1]\xf7<\xbc\
+\xe5\xd1-/\xfdG.\x9fO\x89\xf9<^>\xd4v\
+\xe2\xbeG\xf7}\x13\xa53\x84\x0a\xea`V\x06\x83\xa6\
+C\xc4\xd8\xc2V\x03H\xda\xc4\x13:\xd9\xb40\x8a\xd8\
+\xd0\xd0P\xf9\xcc3;\xbeTYY\xd3`\x1c0\xd2\
+\xc6\xdb\xfb\xf0\xdf\xff\xfdt\x01\x04W\x5c\xb1\x14\xc9d\
+\x8a2\xe0\x80Tj\x1c}}g\x91J\xc5!\x8a\xf9\
+l__\xff\xa1}\xfb\xf6\xec\x01@>\xf7\xa9w\x5c\
+\xf9\x89\x0f^}\x87,kB\x80\xa0\xbe\xd6\x07\x1b\xc7\
+h\xf5\xa7\xaao=bw\xfah\x07N\x1dmC:\
++\xb4\xfez\xcb+\x7f\xd5\x1a\xc9\x0cA\x01\xb8\xd5\xe8\
+\x9c\xa1y`\xf1I>S\x9b8\xd5c\x87\xdaf\xcc\
+g\xfe\xeam\x8b\xfcn\xbb\xebG\xbf~\xeeU\x18\xbd\
+\x10m2\x89\xf6\xec\xc2\x80\xd4\x05\x03\x000!\x08\xac\
+\xe6\x1dX\x80`\xe7\x97\xaa\xab\xab\x1b\xf4\xa4\x10e\xdf\
+\xd5\xd5\x87\x87\x1ezZ\x95\x10\x12\xaa\xab\x9dp\xbb\x83\
+\xb0\xdb\x9d\xc8\xe5\xb2\xe8\xed}\x03ccQ\xc8\xb2\x8c\
+x<q\xea\xc0\x81\x03\xdbFG\x87F\x00u\x82\x22\
+@\xee\xfa\x1f\xd7\xae\xfc\xe4\x87\xae\xfb\xb0\xc3as\x12\
+\x02T\x86\xdc\xf0z\xf4\xef\x09[1]\xff\xa5\x5c\xd0\
+}\xb6\x1f\x87_x\x0dY!\xd7\x7f\xf0\xf5\x9e\xcfn\
+\xda\xd7u\x14F\x10\x98{\xa6V\x84\xd6&4\x08\xe8\
+\x8e\xa1mv\xea\x1a\xa8e\xd06\x15\xedv\xd2#\x82\
+\x22fk8x&T\x02\x04Z\xa2)=\x05\x8d\xce\
+1,\x0c'744T>\xfb\xec\xce/WU\xd5\
+4\xd0I!\xdd\xdd\x03x\xf8\xe1m \x84@\x10F\
+\x90\xcb\xc5\xa0\x0c\x15\xeb \xc9\xe7\xe5\xd8\xb1c\x877\
+\xb6\xb6\xb6\xb6B\xef\x8d2U\x17\xee\xe6w,\x9d\xff\
+\xad{n\xff,\xcb\xb2\xae\x80\xdfa\x98\xbae\xc5p\
+\xe57\x01}\x22:0\x8a?\xedx\x05\xe9t&\xf1\
+\xe2\x89\xbeO<\xbe\xaf\xb3\x14\x08hI@\x1b\x90t\
+\xa7\xa0\x81\xa0\xed\xcd\x00\xb0\xb2%\xcc\xcf\x12q!l\
+\x003\x95\xb1\x094\x11I#\xb9\xc8E\xec\xeb\xeb\x8b\
+\xbe\xef}7\xff0\x1a\x1d,\xb8\x88J\xe6\xae\xf6Q\
+h\x09\x82\x10\x83,K\x90$IM\xd1f\xd0\xdf\x1f\
+\xd9\xf1\xe4\x93O\xdc\xdb\xda\xdaz\x0c\xc6Q:\xc3\x08\
+\xdd\xce\x17Z[?\xf0\xb7\xbf\xf8V,\x9e\xee\xcb\xe5\
+\xb4\x88\xa01\xecJ\x07\x872)\x01\xcf?\xf9\x0a\xe2\
+\xc9\xec\x08Q\xad\xf3\xea\xfaJ\xdct\xfb\xf5p\xbb\x5c\
+\xbe\xebW6<\x0a\x9dy\x9a=`\x88\xceY\xb4\x87\
+\xd9S\xa2E;\x1dR\xa6\xdbF\x9b>\xa6\xa5\x86\x15\
+}\xad\x1c8\xcf^@)\xb2\x00\x01\x8d\xe2r.\xa2\
+\xe2\x12\xf5\xf5\x0d\xbd\xff\xfd\xb7|?\x91\x88\x8f\x98\xe3\
+\x00<?\x0cY\x16\x0b\xf6A&\x93o\xdb\xbe}\xfb\
+\xb7\xf6\xec\xd9\xf9\x87l6=\x04\x85\xf9\xe3(\x06A\
+ap&\x1aKG?\xf5\x8f\xffu\x7fk{\xe4\x84\
+\x15\xd3\xe9\x80L\x7f\xd702i\x01\xcf\xec:\xb1\x9f\
+\x1e\xbc\x09U\x05q\xd9\xb2y\xe0X\xd6\x07E\xa2\xd1\
+#t\xe6Q\xbaR\xf9\x15t\xcf\xb62\x96\xe9P\xb3\
+&\xfa\xadr\x02\x0b \xb8(\x00\x00\x94\x05A\xa9`\
+\x91A\x1a\xf4\xf6\xf6\x0e}\xedk\xff\xfco<\xcfg\
+\xb4F\x97\xe5<x~Te>\x9b\xe9\xee\x1e|x\
+\xf3\xe6\x0d?\x18\x1e\x8et\xa1\x98\xe1\xe3(=F\x9f\
+\x88\x0c\xa5\x86\xd6\xdf\xfd\xeb\x7f\xdf\x7f\xb8c\x8f9\xd4\
+LG\xe1\x92c\x19\xe4s\xf9\xec\xe1c]Qs\xd0\
+\xc8\xae.9\xbf\xa8\xca\x19\x82.\xd2K\x86iQ\x0c\
+\x84R\xae\x22m\xf0\xd1af\xed\x1a\xda\x0b(\xa8\x19\
+Y\x96/\xbc\x0a\xa0i\x0a \xa0\x07\x5c\x0a\x92`\xd3\
+\xa6\xc7N}\xe9K_\xf8\xae \xe4\xd2\x84\x10\xa4\xd3\
+C`\x18\x1bb\xb1\xccs[\xb6<\xf1\xe5\x03\x07v\
+\xeeFq&N\xa9\xbd\xf9\xba$\x80\xe4\x9d\x9f~\xe0\
+\xe1\xff\xdap\xe0\xa1\xc2\xbc>S\x14\xcef\xe7\xe0p\
+8\x9c\x12d\x16\xa0\xc3\xd5\xac\xe2:\x12\x06\xd7,o\
+Z\x81b\x15Pn\x11h\xf3\xd0:\xdd&\xf4\x98\x0a\
+\xbd\x99\x19\xafI\x00P\xfb\xd9]*v6H\x96\x0d\
+K\xd2HP\x1af\xa2Y\x9f\xda\xb5\xf9M\x9b\x1e;\
+i\xb7\xdb\xbf}\xf7\xdd\x9f\xff6\xcfg\xa3\xaf\xbe\xfa\
+\xf2\xaf[[Ot\xc28\xf6\xa0\x01\xc9\xca%\xd3\x12\
+5\xe9\xc4VCC~\xe5{[\x9f\xeb\xec\x8e\x0e\x7f\
+\xeb\x9fn\xff\xac\xd3i7|*,\x10\xf2\xa2\xafs\
+\x08\x7f\xb9\xf6\xb2\xeb\x08a\x0d\x9eB(\xac\xe4\x13\x8a\
+\x0a8\xe8\xdeo\xfc\xbe\x0dL\xb9\xfbz{\x00\xd4G\
+\xa3\xa8\xf6\x01\x8a\xc1c\x0e\x01\x1bt\xbfV\xf6E\x07\
+\x00`B\x10\x98\xdd\x96\x02\xf3\xd5-\xf7\xe8\xa3\x0f\xbf\
+v\xeaT\xeb\xe7\x8f\x1e=\x1cU\xaf\xd1\x98\xa71\x9b\
+\x16\x8f\xf4,\x1a\xda\x0b\xd0\x98\x94\xa3\xca.\x00\xe1W\
+\x8f\x1c8:4\x9a\xfc\xf1\xfd\xdf\xfe\xe8\xff\xaa\x08x\
+B\xcac\x08j\x9b\xc2h{\xbd\x07k\xafY\xd2L\
+\x87\x8e\x01\xc0\xee\xb4\x83\x10\x06\x90I\xa9\xe5\xdf-%\
+\x80\xd6\x1e\xea^{g\xcdf\xa0\xdb\x83\xb6!\xe8\xf6\
+1\xb4\xd9\x8cg\x06\x9d/\xb2p\x11\xe9\x00\x89\xe6\x0e\
+i\xbe\xb0\xb6\xa7-l\x8dh\xcf\x82\xd6\x9f4s\xad\
+2uiW\x94\x9e\xdf\xa0\xc5$\x5c\x8du\xfe\xf0s\
+\x7f\xf8\xd2Wj\xab\x02\x8d\xda\xad\xf9\x5c\x1e6\xbb\x8d\
+~\x0f\x00\xc0P\xff\x08v?\xb9\x1fO<\x7f\xea\xd3\
+;\x8f\xf6jK\xbe\xa4\xa0\xebmC\xee\xbey\x1e\x9f\
+\xa9M\x0a\x7f\x95m\xc42\xcc\x07.\x22#\xd0\x8a\xca\
+\xd8\x04\xb4!\xa4\x19@\xe6\xb1\x03s\xda\x15\x9dq\xa3\
+Y\xca\xb4\xb5,Xl\x1ac\xe8!ZC8\xb6w\
+ \x1e\xbdi\xfd\xfd\xf7\x1d;\xd1}P3\xfalv\
+\x9b\x1e\x92\xa6<\x85hd\x14\x0ca\xb0\xf3ho\xdb\
+,\xb4\x89U\xfa]\xd1fq\xbd\x81.j\x00\x00\xea\
+\x1b\x18S\xcch\xc3\xd0*N`\x1e93\xa7`\xd1\
+n\x12\xed'\xd3\xd2\xc0\xec~\x96\x1c\xa0\x02\x90\xea\xed\
+\x1f\x8b\xbe\xe3C\xf7\xffj\xc7\x9e\xd7\xb7\x99\x99nH\
+\xd2 \x04\xa2$\xcfx\x05p\xaaM\x0a\xc7\xa5\xc8|\
+\xbd\x99.z\x00hd\x91gH\xeb}\xab\x84\x0as\
+*\x96U\x8f7\xab\x00\xb3\x95]\xce\xfb0\x03-\xb9\
+\xfe\xee_=\xf6\xbb\x8d\xfb~[\xe4\x1e\xaa\xbf3\x89\
+,\xc6S\xc2k(1\x7f\xffB\xd0Ei\x04\x96\x22\
+\xca\x08\x02\x8c\x8d\xa7\xe9\xf8r.\x95\xf9\xc3\x8b\xda=\
+\xa5\x92%h\x83J\xa2\x8e\xcd 4$}\xfc\xefo\
+<\xb6\xf3\xd0\xd1\x8e\xce_\xdc\xfb\xc9\x7fv\xd8mn\
+=<\x0c\x0cGb87\x14\xdfO]O\xbf\x83\x8c\
+\x0b\x00\x887\x15\x00\x80\x22\x10\xd06\xc2d\xdc\x22\x9a\
+\xf9\x80\xd15\xb2jt\xedc\xcd\x80\x22\x09\xcc\x0c3\
+\x83A\x04\x90\xdf\xb0\xf9\xe5S6\x8e\xfd\x97\xef~\xf9\
+\xc3\xffPY\xe9\x9f\x0f(\xe3\x01C\xd1D\xc7/\xb6\
+\x1cy\x1a\xd6K\xb9\x94\xab\xc7\x9c\xd1E\xed\x05\x94#\
+\x93\x87`\x8e\xa5[\xc5\xd5\xcd`14\xb8YGN\
+\xe0\x81hk#\xd1\xf3\x1e\xcd\xc3\xb4\xdc\x92E\x95\xfe\
+}[\xbf\xfe=\xaf\xcb\xb1\xe8\xd9?\x1cx\xed\x0b\xf7\
+o\xfeZ\xffp:\x0a]Ei*\xa9(\x16QJ\
+g\xcf6\xbdi\x01\x00\x141\x09\xa6c3\x00\xe8}\
+\xe1\xb8\x5cC[\x80\xcc*o\xa1\xd4\x10\xad\x16\xeb'\
+w\x7f\xe4\xfaE\xbf~\xfc\xc5V\x14g\x0ck\x86h\
+\xd1\xf4\xedK\x00\x98\x02\x99|\xe3r~qY\x97h\
+\x82\xf2\xe9\x8d\x96\x04t\x02\x0b\xbd\xd1a^\xf3\x10\xad\
+9VO\x07\xa2&\xb5\xbc\xdbl\xd1\x9b\xce\x06\xb0\x22\
+Cd\xab(NR|\xcdt\xca7\x95KG%K\
+\x0d\xd6\xd0\xa1^\xed<=\xc4m\x1e\xa5+\xa8\xa5\xf3\
+\xc5|\xe0-\x02\x00\x9a\xe6\xaa\xf1J\x18\x9ffOD\
+\x03\x81\xc6|:\x09T\xeb\xe1y\xd3vA\xdd\xc1\xb7\
+\x1c\x00\xe6\x92,\xdcPm\x8c\xc2,\x05\xf20&}\
+jDO\x8c1\x8f\xd2]\x10]\xfc\x96\xb0\x01\xce7\
+\x95\xf0@\x18\x14\x8f\xee\x95J\xf20\x07\x82J\xae\xe3\
+7\xd7t\x09\x003\xa0\x12\xae\xa2\xd5\x06X\xc7\xea'\
+\x5c\xc9s\xae\xe9\x12\x00fH\x16\xae\xa8UL\x02(\
+vE\xe9\xe8\xe2\x05a>p\x09\x00\xb3Be\xdcP\
+\xabhd\xd1\xf1\x85b>p\x09\x00\xb3J\x16c\xf5\
+\x13\xd2\x85d>p\x09\x00sF\xe5\xc0p\xa1\x99N\
+\xd3%\x00\xfc\x99\xd3\x9b&\x1f\xe0\x12\xcd\x0d\xfd\x7f\xc7\
+\xc0 \xf9A,]\x89\x00\x00\x00\x00IEND\xae\
+B`\x82\
+\x00\x00>\xa7\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x00\x09pHYs\x00\x00\x00H\x00\x00\x00H\
+\x00F\xc9k>\x00\x00\x00\x09vpAg\x00\x00\x00\
+\x80\x00\x00\x00\x80\x000\xe11\x9a\x00\x00\x00\x06bK\
+GD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00=\xd0\
+IDATx\xda\xed}wXTW\xb7\xf7\xb5\xbe\
+\xd1D\x93\x18\x13\x937\xd1\x98\xc4\x98hL\xb0\xc7\xde\
+{G\xc5\x0a\x16D\x14\xectP\xaa`/tA\x04\
+APD\xc1^@E\xc5\x82\x15D\xa4\xd8+\xf6\xa8\
+\xc9\xfb\xdd\xfb\xbd\xf7~\xff\xeco\xad}\xd6\x1e\xf6\x9c\
+93\x0ch\xd4\xe4\xca\xf3\xac\x07ef\xce\xcc\x9c\xdf\
+o\xad\xbd\xda^\xfb?\xfe\xe3\xdd\xcf\x9f\xf6S\xfd\xbb\
+_*\xa1\xbc\xbb\x13\x7f\x91\x9f\xfa\x8d\x7f\xae\xf4\xd5\xf7\
+\xcdP*\xab\xa4\x12>\xf6\xee\x0e\xfd\xdd\x00\xff\xe1\x97\
+J \x95%\xa9JRM%\xe2\xef\xe2y\xef\xc8\xf0\
+W\xfei\xf0\xa3E%\x90\xca$\xd5@\xaa\x83\xfc\x03\
+\xa4\x06\xc8\xfb$\x1f\x90\x88\xff\xd7\xa0\xe7T\x13\xaf}\
+w'\xffr\xc07\x07\xe0\x9b\x03x\xcd\xab\x80\x00\x90\
+\xcd\x01\xd0\xe65Aj\x81|\xd4n\xc0\xf8o\x06N\
+\xf1\x1a:|F\xa0\xe70\x07\xff\x99\x03m=\x87\xc1\
+\xdf\xeb\x81|\x0aR\x07\xa46=\x1f_W\x95\xae\xf5\
+\xce\x1a\xbc! +U\x10|\x01<hu\xf3\x0fA\
+\xea\xf6\xb1\x9e\xd7c\xe4\x9c%\xfbF;\xad`j\x19\
+5o\xf9\x1f\xc3\x1c\x03V\xc1\xf3\xbe\x06\xf9\x02\xe4\x13\
+\x22\xcc{\xefH\xf0z\xb5Vhn\x15\xba\xf1U\xe9\
+\xdf\x95M\x81 \xbd\x1e\x9f_\x9d4\xb86i\xf5\x97\
+C\xa7\xfb\xfa!\xd0\xd6n\xc1\xcc/b3\x8b\xdfq\
+\x84\xed?\x96\xc3v\x1f9\xc76\xc0\xbf\xfd\xe1o\xf8\
+\xb8\xd5\x9c%E\x16]\x06\xb6!\x22|F\xd7\x10$\
+xG\x80?\x11\xf4\xaa\x92\xd6\xe2\x0d\xaf\xa1\x92\x7f\x10\
+\xb0:m\x14\x80\xa8\xb4\xfe=\xd2\xdcOZ\xf7\x1e\xf9\
+\xc3\xe0\xa9\x0b\x9c\xac\xe6.\xbb\x87\xe0z\xacJd\xa9\
+\x07N\xb1\xbdY\xb9,\xe3D\x1e\xcb<\x95\xcf\x8e\x9e\
+-`'r\x8a\xd8\xa9\xbc\xcbl\xfd\xb6C\x9c\x04#\
+f\x05\x9d\x87\xd7\xff\x0c\xf2\x0d\x91\xa0\x16\xbd\x7f\x95w\
+$x\xf5\xc0\x0b\xd0k\x90\xb9F\x8d\xfb\x98L\xb0\x90\
+:d\xc6?\xa0\xe7\xc9D\x90\xd7\xfa\x9a\xf4\xbc\xcf\x86\
+\xd8{\xcfC\xb3\x8e\x80\xceX\xb8\x96E&g\xb0\xb4\
+\x83g\xd8\xae\xc3\xe7\x80\x009\x9c\x00\x87\x88\x00\xc7\x91\
+\x00\x17.\xb3\xb3\xf9WYtJ\x06'A\x1f\x1b\xa7\
+ \x22AC\xfa\x0c\xef\xd3{\xbc#\xc0+\x02\xbf\xaa\
+\xe4\x9c\xd5&\x90?\x03\x8d\x9d\x08\x1a\x18m5g\xe9\
+\xc9\x91\xb3\x17\xef\xb7\x9c\xb1pE\xa7a\x93;\xc0c\
+_\x916~LDx\x8f\x00\xa9&\x99\xfc\x8f@>\
+\x87\xd7oA\x10g\x06\xc6\xb0\xc8\xcd\x19l\xeb\x813\
+z\x92v\xe8,\xdbw,W\x93\x00\xb9\x85\xd7\x99\xbd\
+O$X\x81E7\xe0Z\x1dA\x9a\x80\xfc\x93\x88\xf5\
+\xce\x0a\xbc$\xf8B[\xab\x93&\xd7&\xed\xfab\x88\
+\xbd\xcf\xdcQs\x97\xdd\x15N\xd98\xd7`\x90\xd5:\
+'\x0d\x009`\xd1uPKxn}Z\xd7?$\
+\xd0kH\xe0\x7f\x01\x84\x89\xc3\xe7/Z\xbbM\x0f\xf4\
+\x8c\xec|.\xf2\xdf\xf6\x1f\xbf\xa0\x10\xe0\xbc>\x01\xc2\
+\x92\xf6\xf2\xf7\x84\xeb\xf5\x03iIK\xc1'\xf4^U\
+\xcd\xf0CLI\xa5wZ\xafh0j\xf2\xe7\xfd&\
+\xb8\x8c\x02m/\xc4\x1b>\xd6e5\xb3\xf1\x8c`\x93\
+\xbc\xd72;\xbful\xda\xc28\xe6\x18\xb8\x9e\xd9z\
+\xaf\xe1\x80\x80\x07_\xfcs\xa7\xfe\xed\x09\x90\xcf\xe9\x1a\
+\x1f\x8ak\x81\x97?\x0e\x9f7?d\x93\x0e\xe4\xd3\xf9\
+\xd7\xd8\x9d\x07\xbf\xb1\x92\xc7\xcfA\x9e\xb1\xdb\xf7\x9f\xb2\
+\xa3\xe7\x8a\xf8c\xa9 \x87O_\xe2\x04\xc8\x96\x08\x10\
+\xb3\xf5\x00\x7f\xbf\x1fZw\xb5!+\xf0\x03\x85\x89\xba\
+e@\xc3\xffP\xfb1ZRM\xb5tU\xfa\xdf\x04\
+\xbep\xd0\xb8g\xde\xc5\xd2\xae\x1d\x00z\x0ao\xf4\x18\
+\xe7\x95\xcc\xda#\x9c\x03/d\x0a\x11`FP<\x9b\
+\xbdd\x03\x9b\xb9(\x9e\x832l\xba\xdf^x\xbd\x05\
+\xc8wd\x9a\xebQ\xd8\xf6-X\x89\xb3\x93\xe7\x87\xe9\
+\xc0\xbfP|[\x01\xfe\xd13v\x8f\xe4\xee\xc3\xdf\xb8\
+\xa4\x9f\xbc\xa8\xb3\x022\x01r$\x0b\xd0\xb8U\x97\xa9\
+p\xdd\xee \xcd\xe8\xbdj\x91\xf5\xaal\x22\xd7\xf0\x01\
+}\xc7\x8fTR\x9b\x1e\xab)\x91\x81G7\xff[\xc0\
+\xafA\xdaZ\xcf\xd21`\xa5\x12\x92\xadfN\xcb\x12\
+XP\xccN.\xee\xc1\x9b\xf5\x09\x10\x00\x16\x80\x080\
+oy\x12\x9b\xea\x1b\xcd\x81i\xd5\xd3r\x14\x5c\xa79\
+\xc8\xf7\xe4\xa4}\xf7k\xff\xb1}d\xd3\x8fZ^\x0a\
+\xba\x02\xfc\x1d\x14\xb0\x06\xb7\x1f<e\x17.\xdf\xe6\xcf\
+\xdb\x01N\xe1\xf1\xf3\x85\xa5\x04(@\x02\xec\x11K\xc0\
+D\x90\xdeD\xb8/U~@\x15\x8d\x5c\xc3'}m\
+\x9cz\x0c\x9d\xee7k\xf8\xcc\xc0eB\xfaOr\x1d\
+\x09\x11\xc9\x8fd\xb5>\xa1\xe7\xbe\xff\xb7O4\x11\x01\
+\xaa\x92\xe6\x7f(;hn+7\xb0\x8d{O\x1a8\
+h\x9b\xf6es\x22L\xf15$\x80\xf3\x8a\x8d\x1c\x98\
+\x81S\xbcv\xc2\xb5\xba\x80\xb4\x00i\x8a\xdez\xbf\x09\
+\xce\xfe\xf8XLj&\xbf\xce\xe5[\x0ft\xda\x8e\xa0\
+\x0b\xe0q\x09\xb8u\xff\x09\xcb\xbfzWG\x80c\x9c\
+\x00\xc5\xec\x0c\x11\xc0uy<\x03\x92>\x80\xebN\x06\
+\xe9Kd\xfb\x8a4\xf9=\x95\xe3\x89\x9a]\x17A\x97\
+}\x18-\x1913hk\xa7\xa1\x93:\x11\x99\xea\xd2\
+kk\xd0\xf5\xfe^$ \xf0\xab\x10\xcb\xd1t\xd6\x1b\
+2\xcd'@\xed\xa0\xed\x87p\xec\x5c\xc1M\x90\x1b`\
+\x8e\xf3t\x7fw]\x95l@\x00\xd7\x95\x9b\xd8\xe4\xf9\
+\xe1\x0c\xa2\x83'p\xbd\x81 \x9dA\xda\x82\xfc:\xd0\
+\xd6#\x01\xaf-^\x7fG\x07\xfcS=\xe0o\x95<\
+a7A.^\xb9cH\x80\x8bW8\x010\x0a\x18\
+0\xd9=\x07\xae;\x09\xa4\x0fY\x00A\x00\xe1xr\
+?\x06\xfc\x8e\x9eVs\x97\x16\xe0{#q\xe2\xd32\
+Y\xfa\xd1\x5c\x96u\xaa\x80\x1d\xcc\xcac{\x0f\xe5\xb0\
+\xe8M\x07\xd8\xfcU\x1b\xd9xpj14\x1dh\xeb\
+\xe9A\x96\xab\x1e)\x86\x8e\x04\x7f7\x02T#S\xf7\
+I\x8b\xee\xc3~\xc6/?o\xc9z\x1dH\x97\xae\xdd\
+cO\x9f\xff\x8b\xcb\x93\xe7\x7f\xb0'\xcf\xfe`\xc7r\
+.\xf3\xc76\xec:\xce\xec\x89\x00\xb3\x88\x00.@\x80\
+\x19\x81\xb1\x5c\x9b:\x0c\xb2\xf1\x87\xeb\xf6\x07\xe9\x01\xd2\
+\x13\xbc\xffK\x18\xf6\xe1k\xf7\x1e\xbb \x81\xfeT\x07\
+:\xca\x8d{\x8f\xb9\x9c\xbax\x8d?wOV\x8eB\
+\x80\x5c\x85\x00\xd9\xb9E\xfc\xfa\xbd\xc6\xcd>\x08\xd7\x9d\
+\x00\xd2\x0b\xe4\x17\x22\x80\xa8\x13\xf0\xd4r\xefqsz\
+\xe3w\x9a\xe8\x11\xc22\x8e\xe5\xb0K\xc5\xb7XN\xfe\
+uv\xea\xfce\x85\x00\xc7.r\x02l\xdf\x7f\x96m\
+\xd9\x95\xcdb6\x1dbv\x0b\x22(\xcf0o\x0e\xf9\
+1\x9f\xd3\xf5\xfe>\xd9F\x95\xf6\xe3\x97\xfb'\xc4\xf7\
+\x8bd\x13\x8d\x0e\xda\x13\x04\x1e@\x7fL\xf2\xe8\xb7\xdf\
+\xb9\xec:\x9a\xc3\x9f\xe3\xbcbS)\x01\x96)\x04\xf0\
+\x80\xe5a\xac\xcbJ6h\x8a\xd7I\xb8\xeeh\x90!\
+ C\xc1*<\xc6e\x05_w\xf0\xd4%=m\xbf\
+I\xa0\xa3\x5c\xbf\x8b\xf2\x88e\x9e)\xe0\xcf\xc5|\x80\
+L\x80\xed\x07Oq\x80\xda\xf4\x19\x15\x05\xd7\xb5&\x82\
+!\x01\x1aP\xf8\x89\xa6\xfb\xf3\x9ecf\xf6\xe3\xe0{\
+\x86\xb0\xec\x9c\x22v\xf5\xc6=V\x00~\x85\x01\x012\
+s\xd8\x8et \xc0\xeel\x96\xb4\xed8[\xbb)\x93\
+M\x99\x1f\xc1`\xb9\xf8W\xb3\x8e}\xd1\x82}+e\
+\x1b\xab\xff-\xf2\x0c\xd2\xda_\x83\x9c\x9eo\x86\xcf\x08\
+<,<\xf4m\x99\xe7J\x81'\xd0Q\x1e>Ey\
+\xc1N^\xb8\xc2\x9f\x17\xb21C!\xc0b}\x02\xd8\
+\xf9\xaca\x10:\xfe\x17\x5c\xd7\x0eA\x02o\xdd\x1eA\
+\xf3\x8f\xdc\xc2_w\x02^/k\xfb\xf5{\x0a\xe8\xd7\
+P\xee<bW\xef<d\xfbh\xb99p2\x8f\x1d\
+;W\xc8N\x12\x01B6\xec\xe6\x04\xf8\xbeE\xc7\x05\
+p\xedqD\x00\x0b\x0a=q\xed\xae?\xc8n\xbe\x0b\
+>\x07\xbfOj\x86\x92Z\xde\x0e\xdfi\xc7\xe1\xf3l\
+'\xc8>\xb0@\x87N\xe4s\x02\xec\x93\x08\xb0\x11\x08\
+\xb0>\xe5([\x19\xa38\x99\xe0\x1c\x86I\xe4\xaaS\
+V\x9e\xe1\xafh\xfe?\xa0u\xee\xc7\xe13\x83r\x85\
+\x89>\x90}\xa9\x14\xf4\xdf\x14\xd0\x1f\xa0<y\xc1\xee\
+?y\xce5V8\x84\x0eD\x80\xb9\x12\x01\xe6,Q\
+B\xc2\x1e\xa3\x1d\xb7\xf5\xb1q\xda9\xc4\xde'\x17\xff\
+/\xb2~y\xb0\xbe\xcb\xda.\x03\x7f\xf5\xf6Cv\x05\
+D,C\x98\x07\x90\x09\x10\x10\x99\xc2\xe0\xb3\xfe\x0e\x9f\
+\xd9\x19d<-\x01\xad\xf0;`\xd4\x01\x96,\x08\xdf\
+\xcb}U\x22KI?\xc5v\x08\xe0\x8f\x9c\xe7\x96k\
+7\xc8\x1e \xc4^\xb0,\xfb\x8f\xe5I\x048\xa5#\
+\xc0\xda\x8dh\x05\xc2\x19.[p\xcd\x0e\x94g\xf8\x5c\
+\x1df\xfe\xd5C\xbf\xea\xb4^b\xfc\xfc3\x84Cy\
+\xa5\x04\xc8\xd7i\xbb\x0c\xfc}\x9e\xacQ\x126\xb8\x8e\
+\xe3s}\x22\xd2\xf4\x08\x80\x11\xc2\xfc\xb0-l\xbc[\
+\xb0\xce\xbb\xb6q\x0ffv\xde\x91\xba\xa8\xa2\xe8F\x89\
+\x02\xfa]\x02]\x02\xfe\x0aD\x07y\x14\x02\xa6\x1d<\
+\xcb\x09\x90E\x048\x0d\x04\x98\x19\xb8\x96\x0ds\xf0\x7f\
+\x0c\x9f\xd9\x8d\xc2\xc0\x01\x94\x0cj\xd5g\xfc\xdcyJ\
+Q)I\x07\xfa!x}N\xd1MV\x00\xfe\x8c\x10\
+L>e\x9c\xbc\xc8\xd2\xc1\xc1\xdd\x9fu\x81\x13`+\
+\x11 ~\x8bB\x00\xa7\xc5\xf1\x0c\x9c\xc7\xff\x94\xc2\xcc\
+\x06\x94\xd0z\xef/\xbb\x0c\xa82~\xef\xd1\x17\xc2\xd4\
+msX\x02.\x0a\x02\xa0\xf9\xd5\x81.\x03/%l\
+\xce^\xba\xc1\x9f\x1b\x99r\xc8\x90\x00\xa1[`I\xd8\
+\xc0\x5cW$\xb2\x80\xa8mli\xdcn\xb6j\xc3>\
+\x9dV\xab\xb5\xfd\xca\xed\x07<,D)\x06\xc9&\x07\
+\x10#\x80\xc3\xa7\xf3\xf5\x08 H\x05K\xcc\xff\xed?\
+\xc9\xed\x80E\x97\x81\x0e\x98\x12n?p\xbc\x1d\xae\xdb\
+\xd3\xfd\xa2x\x06\x11\xb5\x1d\x1dI\x19x\x9d\x5c\xbf\x07\
+>\xce-N\xf4\x83\xa7\xf2\xd9\xae\x03\xe7\xd8\xd6=@\
+\x80\xed'8\x01b\x80\x00\xee\xcb\x12E\xae\x01}\x98\
+_\xc9!\xacKQ\xc6\xdb\xbf\x0ch\xe4\xbd\xab\xa8R\
+\xa1\xef\xd3\xfa\x8f\xe1N\xabAv^;\xf0\x0b\x0b-\
+Ep\x84\xb6k%l\x10@\x01(\x82\x8f\xe2\x8c\x04\
+X\xad\x10\xc0'\x22\x95\x83\x1f\x14\xb3\x83\x13 lS\
+\x86\x8e\x5c\xb2\xb6\xeb\x80\xbfy\x9fK\xd1\x8d\xfb\xec\xe8\
+\xb9b\xfe\x5c4\xd7z\x04\xc8\xbb\xc2\xce_\xba\xc6R\
+\xf6\x9f`AQ[ud\xb0t\x5cx\x09\x8bC\xd8\
+K\x80\x15E4\xf1\x98hB\xa0e\xd0\x85\x14\x92d\
+\x83/\x92\x09\x16b\xdf\x91\x5cN\x80M\x12\x01f\xf8\
+\xaf\xc5\xfa\xc63\xb87V \x98\x1bh,\xa5\x9b\xdf\
+^\x02h\x94r\xabK\xe5\xdc\x9a\xf4\x05jQ\xcc\x5c\
+\x8f\x98\xdd\xa6m\xbf1\xb3\xf0f._\xbf\x8b\xdf\xfc\
+\xe3\xb9W\x0c\xd2\xb3\xea\x84\x0dz\xf3\xf8\xdc\xc0\xb5;\
+8\x01\xfc\x01\xf0\x95\xa0\xe9\x11\x9b\x0f\xb2\xf5;\xb2X\
+\xe2\xee\x13\x06\x89\xa4#g\x8b\xf4\xb4\x9d\x83N\xc0\x17\
+\xc2\xd2\x80\x22\x96\x97\xfd\xb0Ngr\x02\x14\xe8\x11\xe0\
+B\xd1\x0dv\xe9\xca-^\x17\x88\xdf\x9e\xc9\xa6\xf9*\
+\xb5\x88\xc4]\xc7\xf8k1\x82\xd0\x02\x5c-g/]\
+gG\xcf\x16\xb2\xf4\xac<\x89\x00Y\x10\x0ef\xb2\x89\
+\x1e\xa1\x0c\xfc\x09\xf4\x01\xc6\x80t\xa5\xaa\xe3\xe7\xe47\
+\xbd}e\xe7\xb2\xfa\xecH\xdb\xebRH#\xf2\xf3\x0d\
+\xc8yj\x072h\xc4\xec\xc5O\xc52\xb0\xebH\x8e\
+AzV\x17\xb7\xdfW\xc27L\x0e\xe1s\xb5\x80\xd6\
+\x12\xd4\xfe\xc2\xeb%\xa5\xda\xae\x02\x1e\x1fC\xc0\xb0\x1c\
+,,\x00\x96\x84\x91\x00\xd8\x14\x82\x048G\x04\xc8\x07\
+\x02\x14]\xbf\xc3\xae\xde\xbc\xc7n\xdc\xb9\xcf\xbd}L\
+T\xa1I\xbft\xf5\xae\x09\xe0K\xe0u%\xdc\x0f9\
+\x0f\x9f\xff\xd8\xf9\x22\x96\x01\xce`*\x11 ak\x16\
+\x0b\x08S\xacK\x97\xe1v\xc9\x7f\x09\x02\x98\xea\xb3\xeb\
+6rZ\xeba\x8e\x01\x0b\xb0~o5gI\xf6H\
+\x100m[z\x8f\x9f;\x9e\xd2\xb4-(c7\xa4\
+\xe7\xd8Y\xc9\xf8\xc5\xe3wfq\x00\x10$\xad,\x9d\
+\x08\xe1\xd0\x94\xef\xc9\xba\xa0\x03\x18M\xef\xa1\xd3\x05<\
+Y\x94[t\x0b\x9c\xaf[ej;\x02\x22\x80\x17r\
+\xf8L!'\x01\x86\xa3\x18\xbea\xd8\x86\xa6\xfat\xde\
+e}\x02\x5c\xbb\xc3\xae\x00\x01\xce\x17\x5c\xe7\x0e\xddA\
+X\xd3qm7\x05\xba\x90b\x90s`\x01N\x80e\
+9p\xfc\x22K\xdd{\x9am\xdaq\x82\xadK>\xcc\
+\xb5\x7f\xc4\xcc\xa0\x17pO\xe6\xbc\xd5K\x80\xa9>\xbb\
+\xd6\xbdF\xfc\x88E\x1d\xd1u3\xc6e\x15/\xe7\xa2\
+\x88\xb5\x13<\xff\xc3M\xdb\xf5\xeaG\x9e\xee\x88\x9f;\
+\xf6\xf3\x90S\xc1\x87\xc1<\x96\x95\xb0AO>\xb7\xf8\
+6\x07\xd7\xe4\xdanD\xdb\x8dIv\xdeU\xbe\xc4\xa0\
+%R\xc2\xb7\x5cn\xde\x8f\x82?\x80\xe9\xe0\xfc\xcb\x0a\
+\x01.^\xbe\xc9=zt\xe8r\x0ao\xea\x01\xaf\x06\
+]\x00_\xcc\xff}\x8f\x9d\x02\x8b\x92\x0d\xb2\xe7P\x0e\
+'@2\x10\xc0\xd1O)h5\xef:x\x0d\xdc\x93\
+\xe9o\xad\x13h\xac\xcf\x8e\xb2zN\x02\xf8qn!\
+l\xc2\xfc(\xbdR.\x8a\xb5G\x98h\xe4\xb8\xd6\xb6\
+\xef\xa8\xb9\x14S;b\x91\xc5\x1e\xd6T\x9e\x10:t\
+\xae\xcc\x84\x0d\x8a\x96'o\xae\xb6\x97%X\x14\xc2\xb0\
+\x0d\xc9\xb0\xef\xf8\x05^\x9b8\x00\x80cu\x10-\x01\
+Z\x06\x5c&\xce\xc0s\x8a\x10\xf4\x1b\xc6A\xe7r\xb3\
+\x84]\x069\x0b\x96\xe4\xf4\xc5\xab\xec88\x8b\x18\x05\
+\xa4\x01\x01\x5c\x97&\xf0{\xd2i\xe8\xa4\xbd\x14fN\
+\xa0ZC\xf3\xb7*\x0c4R\xc6\xfd\x8c7oP\x83\
+%o\xde\xf0\x8a4\x00^\x96\x09^\x8a\xf3\x84\xf1n\
+\xbb\xfe\xe3\x96\x7f\xdf\xa2\x93\xd7 \xbb\xf9ErJ\x18\
+\xcd\xb8~\xc2\xe6\xa1\xf1\x10\xae\x82\xdan\x8e\xa0Fc\
+<\x7f\x22\xf7\xb2.|;\x04\xa4@\x02\x9c\x02ka\
+\x0e\xe8\x97\xe1s\xa1\x5c\x80\xeb`e\xf1\x0c\x10 \xe3\
+h\x1e'\xc0bp`\xf1{\xc3\xd2\x98\x0b\xf7\xd2\x87\
+\xb4\xdf\x92r\x0c?\x92\xcf\xf4v$\x824\xc0\xff|\
+\xe4\xec\xc5\x19\x22\xfd\x19\x10\x95\xc6\xa2\xb6dB\xe8u\
+\x80\xf9\xad\xd9\xc6\xbbw\x8c\x92\x00\xac\x03.\x0fd\x0d\
+\x9e\x89\x8e\x1d\x11\x0e\x9e\x81u\xb2<\xda^\xf4\x12\xda\
+n\x8e\xe7\x8er\xf1\xf2mv<\xa7\x18|\x05\x8c\x0e\
+.+\xe6\xde(\xe8\x0a\xf0WPn\xdd\x07\x8br\x9b\
+\xfb\x11(X\x0f\xc88z\x81E&\xa5\xf3\xef\x0f\x0a\
+T\x04\xf7\x12\x9bM\xd1\x22\x8e\xa5,csjA\xff\
+\xe4\xadH\x05K\x85\x1c]\x0d\x7f\xf8\xcc\xa0\xadr\xae\
+\xddX\x0d\xdf\x18\x09&.\x88fc]\x839y\xe4\
+&\xcdLp\xe8^\x97\xb6\x17\x96%7JL\xae\xe9\
+\x08\xb8\x1a\xf4\xcb\x04\xba\x90\x82kw\xb9\xc3\x88]E\
+\xa7\xc0Q=r\xf2\x12K\xdey\x9c\xefE\x18\xe6\xe0\
+\xff\xb4Q\xf3\x0e\xc1d\xfa'Q\x86\xb1-5\xb5\xd4\
+{+Z\xcfU\xa6\x1f\xc3\x91O\xfb\xd8\xcc\x1b\xa3\x06\
+\x1fc\xed\xbc\xcbw\xb8\x88\xd6*\x14\xb4\x06\xc6H\xe0\
+\xb4b\xa3N\xeb\xd1\x03\xc7\x10O\x0d\xba:a\xf3\xb2\
+\xda^6\xe8\x04|\x19\xe6]\xcf\xc4\xdf\xd2\x07\x1d\xe5\
+*~\x07x<\x17|\x06\x94\xf3\xe0/\x9c<W\xcc\
+\xb5\x7f\xca\x82p\xece\xfc\xefF\x16\xed#\xe0~b\
+\x81\xc9\x1ed\x18\x99\xfe\xa6T`\xfaH\xea\x09\xa8\x22\
+z\x0e\xb5\xe4uj?~\xa8\xfa`\xfa\xcf\xc8}v\
+\xb8N\xaa\x1b-D\xf5\x0eeU\xe2~\x03\xf0\x91\x18\
+rw.\x82k\xae\xb6\x17\xbe&\xd0\xb5\xb5\xfd\xbe\x0e\
+\xf4\xcb\x06\xa0+\xc0_\x03\xc1\x7f\xe7\x15\xdfT\x04\xee\
+\xcf\xf9\xbck\xa0\xfd\xf9\xcc1 \x9a\x8d\x9c\xbd\xe4\x7f\
+~\xe94`3\xdc\xcb\x85 \xb3\xa9\x84-J\xcc_\
+K{\x0e\xaaK\xbb\xa0\xe4]Qj\xf9\xf3\x1aJU\
+M\x1c\x9fB\xa8\xd2B\x0e\xdbP\xf3\xb5\x126(g\
+A\xa3\xd1\xab\xc7\xe7\xad\xdbvT\xe7\x17 !\x04\xf8\
+\x18\xbf_)\x97\xb6\x97\xbc<\xe0\x22d+/\xe87\
+\x8d\x83.\x80\xbfvG\xf9}\xe9\xcam\xf0\x1bn\xf1\
+\xdf\xf9\xe0\xd4\x22\x01b\xb7\x1cT\x1aK\xc6\xce*\x84\
+{\xb9\x12\xc4\x83Z\xcc\x84\xe9oD\xa6_\xde\x88Z\
+]\xda\x19%\xb2\xaa\xb2h\xee\x90z\xd5\xce\x9f\xae\x8a\
+\xd7s\xec\xacIr\x99\x15C&\xad\x84\x8d\x88\xdb1\
+C\x86\x152|n\xc2\xae\xe3\xdcI\x14&\x1f\x0b'\
+ek{\x09\x81^b\x14\xfcB\xb3\x81/\xe1\xdan\
+\x14\xf4\x9b\x1a\xe6\xfd\xa6\xa1yWk\xbb\x00\xfe:\x97\
+\x87\xac\x10\xd6}\x04\xbe\xf0\xda\x1dv\x19\xc3J$\x00\
+|\xd7lX\x02|C\x939\x09\xda\x0d\x18\x97F\x8e\
+\xdf\x18\xea2\x16=\x00\xa2/\xf0})\x85\xfe!\xf5\
+\x06\xc8YU\xb1s\xf9\x13\xb2\xcc\xf2\x0e\xa9*\xaf\x84\
+\x08\xd2\xfa/\xbax\xea\xf7\x18=c\x8aL\x00\xec\xa3\
+3\x1a\xb7S\xe9\x15\xc1\xdd\x9d\x95\xab\xb7\x0b\x07;p\
+Mi\xbb,j\xa0\xf55\xbd\xc4\xc4\xef\x12\xa3\xa6]\
+\x0b\xf8\xcb*m\xd7\x03\xbc\x0c\xd0\xf17>\xa7\x18\xbb\
+\x80\xae\xde\x01\xe7\xf1.\xbb\x01\xcf\xb9\x02\x9f\x05\xdb\xc2\
+8\x01\xce\x17\xb3\xa3\xd9\x05\xcc\xd1?\x1a7\x9c\xfe\xbb\
+Y\x87\xbe\x18\xfa\x8d\xa4\xac\xe8OR\x87Q\x1di+\
+\x5c\xbd\xde\xe3\xe7\xf4\x1a1\x13wF)YU!\x98\
+t\xeb4\x847\x94\xd6'B\x88\x1dR\xaf\xa6\xb3X\
+\xd5\xc6\x85,\xfb\xba\xfb(\x87\xa9\xe5m\xb4\x10k{\
+\x16\xdc\x80tX\x071\x8bgL\xdb\x8d\x01oT\xa3\
+U\x82iYY\xb0\xce\x8fb\xcc\xbc\x17\x9b\x09\xfaU\
+\x03\xd0\x95u\x1e\x01GM/\xb8\xaah<\x0a\x82\x7f\
+\x19\xfe~\xeb\xeeC\x1d\x01r\x80\x00\xd8\x16v\x14\xc2\
+\xc0m\xe9\xa7\x99\x0dD\x01C\xa7\xfb]\x85{\x8a\xed\
+\xec\xdd\xa4}\x0d\x08\xe6\x97\xadz\x0e\xff\x09\xa2\x04\x1f\
+\xb9\xabx\x82[(\xb3q\x0de\xd6.!l\x9c\xb3\
+^v5\xcd\xa2\xeb\xa0V\xd2\x0e)y\xf7r\xe5W\
+\xe5\x00\x22\xbb\x1a\xb6\xe9c5X\xf6\x012\xcf\x14\x1a\
+O\xd8\x18]\xdbM\x03o\x0e\xd0(\x08\xec\xa9\x8bW\
+y\x19\x16\x134\x98\x97\x17\x89\x1a\x0c'1f?r\
+\xb6\x90\xa7r\xb3\xe09\x18\xc7c&.\x17\x9c\xb2K\
+\xa0\xa5\xc6L\xbc\x81\xb6K\xa0_\xb9U\xc2\x01F-\
+\xbf\x04\xa0\xe3o\x01z\xf1\x0d\x05x\xac\x15\x5c\x85\xe7\
+]\xc3k\xdc \x02\xe4_\x93\xfa\x02\xf3X\xd4Fe\
+\xc3i\xefq\xb37P#+\xeen\xb2\xe87\xd1\xd5\
+\x11B\xecT\x1d\xe8\xee\xa1l\xb6\xffz\xe6\xb6(\x99\
+\xb9\x04nbs\xfd\x92\xd8,\xef\x0d\xcc\xd1+\x9e\xd9\
+\xbb\xc72\x1b\x97p\xad\x1dR\xf5^\xc9\x16v-\x0b\
+\x80u|\xcb\x19\x0b\xf3\xe5(\xe0t\xfeu\xa3\x8d\x16\
+\xa6\xd6v\xe3\xe0\x1b\x7f\x1c\x97\x1c\x8c0\xb0\xeb\x06\xd3\
+\xb3\x07E\x86\xee\xb4\x02|\xd2\xeecl#\xca\x9ec\
+l\xd3\x9e\xe3,y\xaf\x22\x08>\x16a0\x89\x83)\
+]\xcc\xc9cV.\x0f\xc0A+`\xa0\xedw\x04\xf0\
+\x0f9)\x10`\x5c\xd7Q\x84\xb6ce\xb0X\x00\x7f\
+S\x06\xbe\x84]\x87k\xdd\xc0\xd7\xc3\xef\x02\xad\xce\xe0\
+\xcc\x1c\xe6\xbcd=fD\xff\xab\xc3\xe0\x09\xbe\x03m\
+=\xe2\xad\xe6,}\xc0S\xe9.\xab\xd8\xac\x80X\xe6\
+\xb7:\x95\xf9\xaf\xde\xc6\xbc\x97oe\x1e\x8bS8\x01\
+\xe6\xf9\x13\x01\xe6\xc7\xb3i\x1eq\xcc\xce\x0d\x1ck\xe7\
+(\xb1\xc7 G\xeaU\xfc\x94\x96\x83\x8a7\x95j\xf9\
+\x00X\xc9\xeb4l\xb2\xab\xd8\xc8!H\x80\x159\xf3\
+B\xb8\x8aI>\x00\x8f)YQ\x84A\xd0\xb7\x83/\
+\x11\xbca\x0fs\x87\xcf1\x85Z\xabM\x89\x9dw\x04\
+\xf3Z\x9d\xc4\x22\x93\xf7\x03q\xf2\xd8\xd9|%;\x87\
+\x89\x1a$\x02\xfa\x00B\xdbQ\xf39\xe8WKA/\
+\xb8fB\xdbI\xe3\xaf\xdfQ\x80\xbfy\xf7\x01\xbbu\
+\xef!\xbb]\xf2\x90;\x82\xb9\xf9J\x22H&\xc0\xc6\
+\xed\xc7\xf8N(\xf1\xf9f\xf8\xc70\xefU\x9bY\xf2\
+\x8e\x93\xec\x10<\x07-\x07J\xe6\x89|\x16\xb7\xf9\x08\
+s\x15\x04\xf0\xd1'\x80\xadK\x0c\xb3q\xa2\xd6r\xeb\
+yb\x0b{\xfdW\xd2T\xaa\xd5\xcb\x87=\xf7\x03l\
+=\xf6\xa9I\x80\xeb{\x01\x0f\xaf^\x0d\xe8\xdc\x0f\x00\
+\x8fZ\xc9\xc5+\xda\x8e\xc5\x99\xc8\xe4t\x1eOKk\
+\xe0\xbf\xfaMp)\xee1\xda\xf1t\xcb\x1e\x96\xdb[\
+\xf5\xb4L\x835t\xab,\xe0\xbc\x9e\xec7\xd1\xa5\x00\
+\xcc\xeb\x1f\xe2u\xd8\x87\x10\xbf\xfd0\x15y\x94\x98\xbd\
+\x80\xaf\xe7w\x80p\xb7\x0dM<\xad\xed\x8a\xb6\x97\xe8\
+\xcc\xbc\x1at\x05\xf8G\xec\xce\xfdG\xec\xee\xfd\xc7 \
+\x8fX^\xe1Mv\x1a\x08p\xecT!\x07W4\x86\
+.Z\x93\xc6\xbc\x83\x93Y\xfc\xd6#\xec\xf8\x99\x22v\
+\x17^\xf7\xec\xf9\x0b\xf6\xfc\xc5\xef\xec\xc5\xef\xbf\xb3\xdf\
+\x7f\xff\x83\xfd\xf1\x87\x22\xb7\xc1\xa7\x08^\xb7_\x93\x00\
+\x93\x9c\xd6\xb21N\xab\xc4\x16\xf6\x0eTJV5\x95\
+ZTz\x99<\x80\xe8\xe6\xfd\x812V#\x80m\xbb\
+\xf0Fb%Od\xf4\xb0\x84\x8a\xa1\xe1\xcb\x02\x8f\x0e\
+\x1bf\x06\xf9\xda~J\x01~e\xc2^6\xd1S\xa9\
+(\x82\x03\xf5\xac\x8b\xe5\x94\x93M\xdavO\x84\xcf\x12\
+\x02\xb2\x9cr\xea\x01TX\xc1\x0c\xdb|\x92\x05\xf47\
+|,\xa8\xc9\xaf=\xa3\xba\x8e\xb0?\x84\x8d\x9e|\x9d\
+\xf5\x08a\xe1\x1b\xf7\xf2}\x80z&\xde\xe8\xda\xae\x98\
+x\x0e\xfc]}m\xbfS\xf2\x88\x03~\xef\xc1c.\
+%\x0f\x9f\xb0\xfb\x8f <\x06\x82p\x02\x9c\x16\x04\xc8\
+\xe5\x048\x92}\x89\x15\x01\xc9t\xa0\xbf\xd0\x07\xfdw\
+\x10$\x02>\x86\xcf\xf9\xed\xd9s\xde?\xa0E\x80\xf1\
+Na\xa2\xa7\xd0HSi\xc5\x09 \xf7\xf37\xa4\xfd\
+\xf1X\xd3\x9f\x80\x1d,\x18\xd2 \x09D5\x0f\x1b*\
+\xb0\xa2g\x16\xd87\x0c\xc35\xd4z\xbe\xce\x93C\x87\
+\xcd\x22v\xbe1\x8a\xb33{\xc9\xfft\x18d\x93\x05\
+\xef\x1dI\xc9\x94@\x02\x18[\xb6gQE\x0dw\xf0\
+\xdaR\x92e2\xfd{*=6\x8b\x9e\x8b\xc4X\xd8\
+\xaa\xd7\x88\x8d\x03\xa7x^U\x88\x1c\xc9\xd2\x0edk\
+\x82nL\xdbo\xdfS@\xe7\xda\xae\x02\xfd\xc1\xa3\xa7\
+\xec\xe1\xe3\xa7\xec\xd1\x93\xdf\xb8`>\x00\x09\x80R\x08\
+D{\xfc\xf4\x19{\x0e\xa0\xbe\x10\xda\xfe\x87\x04<\x90\
+\x00\xff\x8e\x8f?{\x06\xc0\xff\xf6\x9c=\x81\xe7?~\
+\xf2\x8c\xdd\x81\xf7t\x0a\xd8\xc8\x090\xd5-VG\x00\
+\x1b\xa7H~\x8f:\x0e\x998\x9f:\xae\x1a\xe9\xf7\x13\
+T\x9c\x00z;z\xa8U\xa9\x13\x95.\xa75\xef6\
+8\x14I\x80\xebYT\xca\x01\xdeU\x83\x9d:&A\
+\x97\xa4H\x05~\xd6\xf9\x22\x0e<v\xdcx\x87\xa7\xea\
+J\xc8\xe0\xe9\xfe\x0fx\xba\xa9\xf0\x9e\xab)\x8d\xeaN\
+\x80N\xa1\x0d\x1b#\xa8\x99b\x00\x11\xb4/I?\xfa\
+\xdb\x10z\xce8\x22\xc5\x0c\x10W\x10\xdf\xd6\xbdF$\
+\x09\x8b\xb0xm*o\xfa\xd0\x81~\xbb\x14\xf4\x9bw\
+\x0dM\xbc\x0et\x0e\xfcS\xf6\xe01\x02\xaf\x80\x8e \
+#pO\x01@$\x03>\xc7\x98\x89\xd7\x81\xfe\xe2\x85\
+N\xdb\x9f\xea\x80\x87\xeb\xc15\x1f\xe2\xf5\xe1\x1a\xe8'\
+L\xf3T\x13 B\xde\x22\xd7\x85p\xaaW\xdaR\xf6\
+r\x04\xa8.\x8aA\xb4u\xa9%\x99\x1a\xbc\x99s \
+\x0e\x8d\xc67w^\x1a\xaf\xec\x84\x01\x93m\x0ax\xad\
+\xa4\x0c:z\x18\xb6\x1d\x81\xf0\x0d;mg.J\xd0\
+\x81\x0f&\xff72\xf7\xcbH\xe3gQ\x05m$\x81\
+\xdb\x9d\xd6\xbe\xb6\xf4\xd9\x9a\x93\x19\xb4\xa0\x7f\xb7\xa4\xc7\
+:\xd0s1\xf4\x1aN[\xbd\xd02\xb8\x80\xf8\xf5\x1c\
+33\x0b\xdfo\xce\xa2u\xec\xfc\xa5\xabf\x9bxY\
+\xdb\x11,\x04\xed\xc9o\x00<\x80\x88@*\xa0\xbf \
+\x13\xaf\xd6v\xc5\xf4\x1b\x82\xfeL\x02\x1d\xc8\xf3\xe0\x09\
++\xc1\xf7\x05\xd2\x9d\x00\x7fa\xba\x8a\x00\xd2\x12 \xb6\
+\xaf\xa9f\x18\xbc<\x01D[w\x03\xbaxg\xaab\
+M\xed5n\xf6!|\xf3\xe4}'yc%v\xcb\
+\xc8\xa0\x17\xdd0\x9d\x95\xcb\x87u\x10[\xb1\xb1c\x96\
+o\x02\xf5\x8f\xe5%c\x1c\x14\x81\x95\xb3&m{$\
+\xc0\xfb,&\xad\x9fF\x05\x94\xfe\xf4\x19Z\xd1\xe7\xf9\
+\x9e\xc8\xf95y\xc1_\x91\xd4\xa7\xbf}K\xcf\xf9\x89\
+\x08\xd1\x91\xea\xef\xf8\x1dp\xf2\x87#^\xbfu\xef\x91\
+\x09h\xd1\xf8\x1e\xbf\xdc\x22\xa3\xda.@\x7f\xf8D\xd2\
+\xf6\xdf\x14m\xd7\x81^\x96\xb6K&\xfe\xe9o\xcft\
+\xda\x8e\xd7\xc5\xeb\xe3\xfb\x94\x00\xf0\x08::\x88w\xee\
+=\xe2\xce .#\xd3=\xd7\xeb\x080\x99\x9c@K\
+\xc7\x85\xf7\xa9\xab\xa8'9\xec_\x92\x03\x8f\x04\xa8l\
+\xf6\xdccU\xc7\xaf<\xbf\xe73\xba\x99\xcd\xe8\x06\x0e\
+j\xdc\xaa\xb3#n\x9a\xc0\x10\x0bM?\x86jei\
+\xbb\x9c\x99\xc3\xd8\xff$x\xe2h\xfac\xb7\x1d\xd1U\
+\x0c\xb1\xc3\x08\xc1\xff\xa5\xf3\x80dr\xf0\x5c\xc8t[\
+\x92\x16\xb7&3\xf7\x0d1\xfd3)7\xfe\xa1JD\
+\x97\xf2\xa7\xf4\xdc\xaf\xc9\xa1\xb5\xa0$Lo\xb2\x08\xe8\
+3\xccm\xdeup\x84 \xc1\xe9\xbcb\xaey:m\
+7b\xe2\x15m\x7fQ.\x87\xce\x98\x89\xe7\xda\x8e\x84\
++Q\x80G_\x033\x8b\xe8L\xde\x80%\xe9(8\
+\x8f\x82\x00S\x80\x00\x13h\xfd\xefbi\xb7\xf9\xa5-\
+\x80\x91\x8e_\xbc\x81\x9fA\x98\xd5\x0c\xd6\xca`\x08\xa7\
+2qo\xdf0\x07\xbfSC\xa6\xf9\xe4\xe0\x9boI\
+W\xda\xa4\xb1\xf7\xdd\x9c\xdc\xbb\x10\xdc,\x81\x89\x9a\x9d\
+\x87\xcf\xe9\xc0\x1f\xef\xae\x98\xb3\x0e\x83'\x1c\x82\xf7]\
+D\xe0O\xa6u\xbc3\x15O\xbe\x93&x\xd6VU\
+\xc7\xb4D\x1e;W\x87\xd6\xc7\xfa\x1425'\xbff\
+\x00-k\x8e\xcd\xbb\x0d\x09\x11$\xc06p\xd9\xa1\xd3\
+\xd4\xf6\x17\xc6\x1c\xba\xdf\x8d:t\x1ct=m\x7fl\
+\xa0\xed\xb7\xd0\xff\xb8\x0d\xc0\xdf\x02\x7f\x04s\x15p\x0f\
+1\x82\x10\x04\x98\xe4\xa2$\x82\x869\x06<\xa4\x02\xd3\
+\xe8\x0a\xf9\x00\xa6:~\xc1[nb\xe9\x18\xb0J\xdd\
+\xf1+Z\xbb\xe6,\x8a\xe5N\x1bf\xe4L\x95VK\
+EI\xc3\xe6\xf2\x9e\xbbb\xfeZ\xfb\x80X]\xcb\x18\
+\x9f\xfaa\xebq\x13\xde{\x099j\x08\xfe`\xb2:\
+\xcdTS;k\x1a\x19\xb8T\xd9\xc8N\xa5\xea\xf2@\
+\x07\xbaI_\xd3\x0dkK\xcb\x02\xfa\x16S[t\x1b\
+\xb2\x0a\xac\xdb\xbf\x9d\x96\xc4\xe9i;\x82\xfe\xdb\xf3\x17\
+e;t\xcf\xcbv\xe8\xb4L<\x07\x9d\xb4\xfd:\x00\
+\x7f\x0d\xf3\x0e\x18\x95\x80\xb5\xbc\x0c\x8e\xf2\xa2\xb0\x9d\x9c\
+\x00\xb6\xae\x98\x0f\xe1\xcb\xe4\xbf\xd1j\x91?3\xb4\xdc\
+Q@Y\x1d\xbf\xa2\xf1\xd3X\xc7\xef\x9a\x94\x83<C\
+\xc7;e\x8d\x16]\xf4\x0b/\xe8\xf1\x8b\xb4,\x8ez\
+Q\x9b\xfeF\xcd\xdb\x87\xc2\xfb{\xd2\x96\xef\xa1\xa4\xa1\
+?Ie\xd3\x0f$\xe0\xcdj\x8a\xd0 y\x0d\xfa\xae\
+u\xc8\x5c6\xa2}\x0b\xddh\xa9\x99\x02^\xf5z\xfc\
+\xee\x09\xdb35\x1d\xba?T\xda^\xb6\x89\xd7w\xe8\
+\x14\xe0\x1fJ\xda.\x83^\xa2\x03\xbd\xf8\xea]\x9e3\
+\xc0,\xe2t\xafXf\xe3\x1aF\x89\xb0\xa0?,\xba\
+\x0c\x8a\x81\xcf\xeaD\xe6\xbf|y\x00e\x84z\xc5;\
+~\xa7\x82\xc3\x86m\xd2\x18\xba]\xc2\x0fz\xd3x\xb5\
+Mn\xa88Gm\xd2\xe1\xc9\x07t\xd7\xc2\xf7\xa0m\
+\xde\xa7(y\xe3@\xa1[\x17\xd2\xfc\x06\xaa\x8e\x99\x0a\
+\xd5\xbe\x8dX\xbb\x0f\xc9\xaa|CKL\x17\x22\xc1\xd4\
+\xbe\x13\x9c\x8f\xe3\xe7\xca\xbf|\xc3<\x87\x8e\xac\xc5#\
+3\x1c:\x03\x13\xaf\xd2\xf6b,/C\x84\x84\xc3&\
+p\xed\xb7_\x10%\xc2\xe2\xff\xc6\xfb\xd4\xa8y\x87U\
+\xd4W8\x85\xacd\xf92\x81\xca\x0c|\xfd\x8e_1\
+\xb8\x09\xfb\xd7\x16F\xa5\xb1\x15\xf1{\xb9\xe0^<\xb7\
+\xd5\xfa\xcd\x9e\x0b\xa3\xb7\xf3\xca\x1bnx\xd0\x04]\xa3\
+\x93\x06\xabq\xd8&\x8d\xa4\x91\xaf\x85\x8d\xa2\x8a\xf6w\
+X)u\xca\xf6\xa45\xba\xa1\xa4\xf9\xafdr\x86\x11\
+\xcb\xf7)-\x09?\xd3\x16\xad\x11\xdf\xb7\xec4\x0f\x1d\
+]\xef\x90\x8d/\xe1\xd0\x11\xe8*\x87N\xcb\xc4sm\
+\x07\xd0\x0b\x01t\x04\x1ek\x02\xeb\xb6\x1c\xe0YK\xae\
+ \xa3\x1c\xcf4\xb2h\x1fI\xf9\x10\x17\xb2\x92\xc3\x89\
+\xb4\xe6\xd7\x020,\x00\x02\xe8u\xfc\x8a\xc9\x9a\x8bc\
+\xb6\xf1M\x11\xe9'.\x96\x16a\xa4\x92\xeb\xae#\xe7\
+!\xec\xcb\xe6a\x1f\x96\x5c/\xf0\x82\x8aq\xd0E\xb3\
+$\x0av\xc9b\x11\x06w\xf5\xca\xed\xe2\x8a\xf6\xcf\xc8\
+&\xd3oK\x83\x9f\xda\x90i\xfeS\x864\xab\x22\x1e\
+1\xb4\xb2.\x11\xae9\x11pl\xd7\xe1S\x93\xf0\xf3\
+\x9d\x81\xa8@h\xfbS\xb3\x1d\xba\x87\x9a\xda\xae3\xf1\
+\x98}\xbc\xa6\x98\xf8B\xd2v\x04\xfd\xf8\xd9\x02\x16\x9e\
+\xb4\x97\x0f\xa9\x22\xbf\xe8\x06\x84\xc4q\x14\x12\xcf\xa7\x9e\
+\xc2\x89\xb4Dv-W5\xf0\xcbF?\xe1y8t\
+r\x86~\xc7/\x82\xaf\x80~\x91@/-\xb9*u\
+\xf6\x02\x1e\xb3c\xec\x8e\x9b\x1dO\x80\x17\x8fk\xbe)\
+\xd0E}\x1dS\xadH\x00$\x90\xac\xfd\xe3\xdcB\xf9\
+\x97l\xda\xaeg\x18%z\xac\x88\xd1M\xa5\xd9\xbc\x7f\
+\xda.\x19\xad)fD\xbc6DD[\xdc\xc7\xb0 \
+8I/f\x17\xda^\xa6\x897\xaa\xedwJ\xb5\x1d\
+@?\x97w\x95%\xed8\xc2f\x07\xc6\xe8\x0a^\x08\
+<\x16\xb5\xc8)\xf6\x06\x99GZ/\xf2!\x1d\xa5i\
+\xe6\xe6\xf5\x03\x10\x01\xd09\xd0u\xfcbx\x87f_\
+\xbd\x13\x86\x83~F\x01]4X \xf0r\x9d\x9do\
+~(\xb8N}\xf07\xb8\xa0\x97\xafT\xdan\xf1\xfd\
+u\xb9\x85J\x9b\xf4\x85\xe2\x9blY\xdcn=\x02`\
+\xd2g\xe0\x14\xcfk\xa4\xfd\x93\xe9\x8b\xb5\x92\xa6s\xd7\
+\xfc\xb3w\xc9j\xec\x81\xf8'\x11\x10\x89h\xd5u\xc4\
+\xd4D\x04$\xe7\xd2\xd52\x1d:C\x13o\xe8\xd0a\
+M@h;&wpn\x90\xbd\xb7\xc8~\xfa>\xef\
+l9\xe54e@\xb1\xd8\xe5K\x8e\x9e=-\x8d\x83\
+\xc8Y\x15\xf9\x90\x06\xe5\xea\x08\x22\x02TS\xce\xc5\xe1\
+/l\x84o\xbcp\xcdV\xea\xaa\xb9d\xd0U\xa3\x03\
+\x9d\x03\x7f\x99'p0\x8eGO\x1e\x1d:l\xb2\x10\
+uv\x99\x0c\x1ct*\xb9b\xb7,N\xe3V\xef\x16\
+\xc2\xf7\xee6\xd2\xfe\x00\xed\x90\x1d%\xc5\xb2_\xbc\xce\
+\x89YR\x05\xb4\xa6<\xd0\x02\x09\x89I/\xfc\x9c+\
+b\xb7\x9b\x17\xb3\xab\xb4]m\xe2\xb1[8\xfd\xc8\x05\
+\xbeM\x1ck\xfeQ\x89\x87\x98\xeb\xd2\x0d\x22\xa5\x8b\xd9\
+\xcf\x08\xca\x83\xb8\x93C<\x9er!=(d\xfdI\
+\x1a\x91[G\x9a\x9a^vO \x10\x00S\x83\x98!\
+\xe2\xb5\xfev\x03\xc6\xf5\xc67^\xb39C\xcf\xc4c\
+\x86N\xad\xed\x22|;-\x80\x07\x87\xee\xec\xa5\xd2\x06\
+\x0b4\xf1\xa8\xed\x17H\xdb\x05\xf0\xb8\xc5\x1aK\xae\x09\
+;\xb3T\x1bG\xc3\xc5\x0e\xd9\x08\xaa\xdc\x0d\x22\xd3\xfb\
+\xcd\xeb\xde\x22\xa5J\x7f\xd7\x22\x026\xa1\x04\x94\xd5@\
+[\xcf\xd3\xd3\xfd\xd6\x94\xc3\xa1\x93M\xbc\x02|>(\
+\xc3\xc5\xc2\x9b\xec@V\x1eK\xd9\x95\xcd\x12\xd3\x8eq\
+\x02D\x03\x01\xdc\x96\xeaF\xc5DJI\xb0)\x14\x0d\
+\xf5\xa2\x18\xffgZ\x9e\xbe\x94\xb4\xbef\xb9\xda\xc3\x89\
+\x00x\x1a\x96^\xc7/\xb6R\xa9\xb5]\x80\xae\xa7\xed\
+\xf9W\xf5\xbajr\x8ch{>\xf5\xc7\xcb]5X\
+\xe5\xd3Z\xff)\x9c\xb1\xd6\xc8e\xff\xe3un\x90\xd4\
+\x1akGV`@7\xabi\xb1\xf8YO\x9e/4\
+\xc3\xa1+5\xf1X\x0eF\xd0\xf3\x0a\xe0\xfe\x5c\xba\xc1\
+\xbb\x84\xb0\xdbG\x8f\x00I\x87\x98\x7f\x882,\xa2\xc9\
+\xaf=b\xa4<\x88%\x99\xfb\x16\x14\xe2\xd5'\xa7\xf8\
+#i\xc6p\xb5rYH @\x15\x22\x80\xe8\xf7k\
+\x89o\xbcr\xfd\xceRm\xbf i\xfb\xc5+d\xe2\
+\x8di{)\xe8\x8a\xb6\x1b\xef\xaaQ\xe7\x120\xcf0\
+\xc4\xde\xe7\x0ey\xb5#\xc9\xa9iL_\xf2\xb5\x9f\xcc\
+ad\xb2\x19\x9a\xdb\xee\xbft\x1e\xc0G\xdbl\xd8~\
+\xb8L\x87\xee\x92\x00\x1d\xe4\x02\x00\x9f{\xe9:\xef\x0f\
+\xc46qt\xf6\xb0E\x0c\x09\x90\x94v\x9c\xc5\xa5(\
+\x04\x08\x0aWv\x0d\xb7\xee=r\x03\xdd\x8f1\xa4\x10\
+-I\xeb\x85\xb9\xaf\xa5qZJ\xa5\xf2\x12\x00\xd6\x0b\
+\x8b\x8fi\x9dk=r\xf6\x92GNK\xd7\xeb@7\
+\xa5\xed\xb2C\xa76\xf1\xa6\xbaj\x0eBd\xa1&\x00\
+\xa6\x94\x07\xd9y\x15S\xa5o\xb0d\xfeE,\xfb\xda\
+7HJV\xa0\xa6\xf0\x91\xa8pd\x09\xd1\xc0oK\
+\xa2S\xf5cv=m\xbfi\xa0\xed\xd8\x1a\x8ek\xfe\
+\xb9\x0bp/\xc1\x92\x9e\xc9\xbd\xc2\x09\x80#c\x93h\
+^ '@\x84\x8e\x00q\xd2\x96\xf1N\xaa\xbd\x03b\
+\xba\xf8{\xaa-d\x95^\xca\x02\x0c\x98\xec\xcec\xdd\
+\xd4\x8cl=\x87\xee\xbc\x09\x87N\x98\xf8\xb2\xda\xa4E\
+\x83E\xdc\xf6#\x06\x04\xa0-S\x99\xaai\xdc\xf5\xa5\
+q\xec\x95\xdf\x10\x01\xe4\xb6\xf8\x06\xa4\x85\xfd\x879\xf8\
+_v[\x91\xa0\xe7\xd0\x19\x98x\x95\xb6\x9f\x05\xe0\x11\
+tl\x0d\xc3\x0ea\xdc)\x84\xbb\x85\xc5\xc8X>0\
+2)S\x22\x80U\x1c)\xc40\x89\x00\x0d)\xc3'\
+\x9f\x99TSE\x04\xf3\xee\x95\xda\x07\xc0$B\x93\xb6\
+=,q\xf2\xf6\x04\x8f`\xb67\xeb\xbc\x81C\x97g\
+J\xdb\x8d\xb6I\xebw\xd5`\xdd@\x93\x00\xca0f\
+\x1b\xedR\xe6\x9b\xd9\x1eM$0l\x8a\x9d\xec\x9e\x8e\
+Y9Cm\xbf\xce\xb5]\x01\xfd\x9a\x04\xfa\x15\xde\x15\
+\x8c\xbb\x83p\x97\xf0\x89\xb3E\xbc\x09T\x84~\xf2\xc4\
+\xd0ED\x00,B\x0ds\xf0\xbb\x02\xa1\xf1n\x90\xf5\
+\xb8)\xa7\xdd\x80\xf1=\xa5\x0d$\xea\x12x\xadrm\
+\x0fSG\x01\xc4\xb0\xaem\xfaX\xb9b\xbf:~\xc1\
+\xd0\xc4=,\xfdx\xaeI\x87\xae\xcc6iUW\x8d\
+_d\x9a&\x01z\x8f\x9b\x93A\xf1\xadzBV\xd5\
+7L\x80\xaaRS,~\xae\xae\xfd&\xb8\xf0\xcd\x1b\
+\x06&\xde\x84\xb6\x9f\x04\xd0\xb1\x93\xe78\xf5\x05\xa2\xf9\
+\xc7\xdc\xbezdlH\xec~\xe6\xbc8\x81\xcd\x0e\x88\
+e\xb6^\x11l\xac\xf3*\x83\x16wP\xd2\xd3\xb0\x0c\
+e`\x85\x16\x9c\xf7\xfe\xd2\xf6\xb0:\xaa\x03\xb4*\x97\
+\x95\x08\xd2\xcb\x03\xd0p\xa2A\x8d[v\x9e\x81\xe1\x8e\
+\xfc\xa6\xb3\x83b\x98O\xe8&\x16\xb1i\x1f\xdb\x07\xd6\
+\xe1\xd4\x85\xe2\x0a\xb5I\xfb\xad1B\x80\xf1s\xd2)\
+\xb3\xd5\x99F\xa4|\xf6\xa6'di\xf8\x01\xe8\x98v\
+\xea7\xd1\x85\xd7J\xb4M\xfc\x95R\xd0u\xda.\x83\
+^\xc0M\xffa\x88\x002\x8f\xe7\x1b\x8c\x8c\x8d\x88?\
+\xc0\xdb\xbf\x97G\xeda\x8b\xc2w\xb2\x80\xe0ml\xfe\
+\xb2-ln\xc0\x06\xe6\xe8\xbd\x8e\xd9yF1k\xd7\
+\x10=b !\xfaX\xcf\x1dG\xcb\xd4g\xd2\x01Z\
+\xc6I\xa0\x95\x09$\xd3\xdb\x85\x0a\x0bv?\xb5\xef\x13\
+\xd4~\xe0\xf8M=\xc7\xcc<6\xc4\xde\xfb.\xf6\xe0\
+\x8b7\x8d\xda\x9c^\xae6i\xd1U\xe3\xaf14\x02\
+\xb3\x804$\xf1m&@]R\x92\x0e\xfd&\xba\xa6\
+\xe0=\x90\x1d:\xa1\xedj\x13\x9fu\xaaP\x01\x1d\xb4\
+\xfd0\x00\x8f\xa1\xdf\xa1\xe3\x17\xf9\x06\x11\xcc\x03p\x02\
+\xd0\xc4PN\x80\x84R\x02,&\x02\xf8\xacHe\x9e\
+KR\x98kP2\xdf\x1c2\x9b\xf6\x06\xd8{\xc4\xb2\
+\x89.\x91\xbc\x1d\x0c?\xcf\x80\xc9\x1e^\xd2\x99\x03\x1f\
+\xe9\x93@U\x0d\xd4\xaa\x05\x90\xe7\xdd\x5c\xaa\x87O\xa2\
+\xbc\xbc'U\x9e\xb0J\xb7\x06\xdf,:%\xbdBm\
+\xd2XQ\xd4\x0a\x03\x87N\xf7\xbd\xfe\x16/\x01\x22\x1f\
+\x807\xb7}\xff\x89\xae\x9b\xf1\x1e\xe8\x9b\xf8b\xc5\xc4\
+\x9f\xd17\xf1\xb2\xb6\xe3\x9e\x00<5\x04\x81\xc7i!\
+\x98\x05\xc4M\x22;3\xce\xe9\xc6\xc6\xc5&\x1ff\xe1\
+\xf1\x19l\x85\x8e\x00\xdb9\x01\xbc\x88\x00N\xfe\x1b9\
+\x01f\xe0\xde\x00j\x0c\x9d\xec\xb2\x96\x8ds\x0a\xa1\x91\
+\xf3n\xde\xd4\xfb\xf8\x854iD\xbb!D\xa3\x1a(\
+F\xb96'M\x1c@iY[\x89\x08|<\xfa\xda\
+-\x19\x15j\x93\x0e\xd0 \x80\x94\x08\xd2\xeag\xab\xf6\
+\xb6\x11`\xb0\xbd\xf7a\xdcjf\xa8\xed\xb2\x897\xd4\
+v\x01\xfa\xfe\xc3\xb9|s\x086w\xec9t\x9e\xed\
+>x\x9eO\x0eC\x22`\xbb\xd7\xf6\xfdg\xd8\xb6}\
+gx\x82\x08}\x03$\xc4\xd2\x88]\xdc\x0a\xe0\x9e\x00\
+A\x00\xb91\x14;\x83\xc7:\xadV\x0e\x9e\xe8\xd0\xb7\
+\xab4p\x82*\xa8\x16U4\x9bB5\xfa\x01\xeaQ\
+\xb8\xd1\x94\xe2\xf1\xaeD\x84\xd1\x94\x95r\x1e2\xcd\xe7\
+v@\xc4f\xf3\xda\xa4\x9f\xea\xb7I/\x8f\xdf\xa31\
+C0\x9cN\xff\x1a\xeeCa\xa08\x93\xe7\xc379\
+&\xcd\x18\x01pX\xb4\xd3\xe28\x03\x87\xee\x88\xce\xc4\
+\xe7K\xa0\xe7)\xa0\xa3\xb6\x1f\x16\xa0\xe7\x18\x82\x0e\xb2\
+\x8d\x03\x7f\x9a\xcf\x10\xc4Q\xb2\xb8<`\x9e\x00\x93E\
+\x9bw\x9e\xe4\x84\xc0\xa5\x01\x97\x81\x19\x0b\x12\xf4\x1aC\
+\xb13x\x82\x93h\xa7\xf3\x8c\x97z(\xa8\x81\xc6\xa2\
+\x9a1\x02\xa8;\x82j\xd3z\xf7%}\xe1\x9f\x88\x08\
+=hY\xb0Es\xed\xb5:\xb1Bm\xd2\xd8:\xae\
+5:\x0e?8\xf8\x1a)T\x07hM\x1f\xfe\x8d\x0e\
+J4\xe6\x03\xe0g\x0dZ\xb3\xd5\xc0\xa1\xe3&\xde\x98\
+\xb6\x03\xe8{\x0e\x1a\xd7v\x05\xf4\xd3|\x884\x86\x86\
+\x02t\xdc\x04\x82\xc5\x22t\x141_\x80$\xc0\xa2\x11\
+Z\x015\x01\x84\x15\x181+\xe8&Yp\xa9\x94n\
+\xf1\x0f\xf4\xf9p\xe9/\xabEJ\x9e\xfd\xfb)i\xe2\
+\xf7\x94\x04\xc18t\x14\x98\xc0\xbcyKbM\xee\x84\
+1\xd6&\x8d\x872j\xb5\x96qG\xd0\xde\xfb\x229\
+\xa0\x1d\xe8=?}\x93\xa3R\xb5\xa2\x80\x0e\x83l\xf8\
+\x98\x9c5\x1b\xd35L|^)\xe8\xa6\xb4}\xbf\xa2\
+\xedi\xa0\xed\xb8\xf6+\xa0\x9f\xd2\x07\x1d\xfc\x01t\x0e\
+\x11\xf4$\x00=1\xf5\x18\xdb\xb05\x8b\x0f\x97F\x87\
+q\xd5\xda}\x0a\x01\xdc\xf5\x09 m\x10\x11\xe5t*\
+\xa8Y\xd4\x00\x02T\xd5$\x80\x89\xbd\x00\xa29\xf4+\
+r\xcc\x10\x98\xa1bchE\xda\xa4\xb1r\xa6E\x00\
+\xd1\x0a\xfeK\xe7\x01\xb3\xc9\x09\xfdIU\x0a\xae\xf46\
+\xe4\x01\xfaOr\x0d\xc5\xcf\xb9=\xfd\xb4\x81C\xa7h\
+{N\xa9\xb6\x1f\x00\xe03\x10\xf8\xb3\x1a\xdaN&^\
+O\xdbO\x94j{\x9a\xa2\xed\x1b\x00x\x01:\xfa\x03\
+X4\x8a\x05\xc1M\xa2\xb8\x14\xe8\x08\xe0l@\x80\x11\
+R\x7f\xe0g\x18\xee\x9b$\x80\x11K \x0ea\xfe'\
+m\xa4h\xd7q\xc8$/\x1c\xf3\x8eoR|\xfdN\
+\x85\xda\xa4\xf1\xc0'c\xcb@_\x1b\xa7\x1d\xb4\x9f\xaf\
+\xc5\x9b\x9e\x97\xab\x95\x09\x1c\xe6\x18p\x02\xcf\xf7\xd14\
+\xf1&\x1c:}m\xd70\xf1\xa4\xed\xfa\xa0g\xb1\xf5\
+\x00<\x16\x8a8\xf0\x00\xfa\xbaM\x87\xf9\x01\x13\x986\
+\xf6[\x95\xa6\x10\xc0u\x9d\x8e\x00\xe3\x9cB\xf9\xe9&\
+\x14Qu+\x8d\xa8,ja\xde\xc7\x1c\x02TQ5\
+I\xe2\xda\xd7\x00G\x90\x0cs\xf0\xdb+\xf6\x05`\x07\
+/f\x06+\xd2&\xbd.\xed\xb0\xa6\x15\xc0\xa6P\xcc\
+B\xfe\xd0\xba\xdbx*\xbc4\x22\xd3\xfb\xa6*\x82z\
+\xb5\x80\xb6}G\x0d\xe4C2\xc3R\xccr\xe8\xd4&\
+^q\xe8Njk;\x9a\xf8\xd4,Cm\x17\xa0o\
+\xca\xe4y\x02,\x18\xa1\x0f\xb0f\xc3A\xb6|\xcd\x1e\
+>*F&\xc0\x18'\x9eS)\xa0\xe6\x91\x1e\xa5\x96\
+\x94\x13\xa0:f\x80?o\xf8C%s;d\xebv\
+\xb6\x9c\xd2\x1e\xe7\xd6\x8c\x9a\xb7\x8c'\x81f\x05\xc5\xb2\
+\xed\x87\xcep\xc7\xcf\xec}o\xaa6i\xac&j\x11\
+@\xb4\x85c\xaaU\x0a\x07\xd5g\xf4\xbe\xce\x9e\x00\xdd\
+\x8cD$\xe3 \xbb\xf91\xf8\xf9Rv\x9fT9t\
+g+\xec\xd0\x19\x98\xf8\x94R\x13\x1f\x03\xc0\xaf\xe5\xda\
+~\x887\x8bD%\x1e\xe4\xc0G&\x1c\xe0\x19\xc3\xa5\
+\x91\xbb\xf4\x08 v\x08w\x19\xce\xb7\x88\x8d\xa7-t\
+j\x02T25\x0d\xa4\xaa\xbc\x0fp\xe8t?_\xbc\
+\xe0$\xcfP\xb6:~'\xef\x8b\x7fU\xfb\xde<\x8c\
+\xcc\x12\x16V\xa0y\xb7\xc1\xb6\xd4\xf6\xf4\x9d\xca\x0aT\
+~Mma\xa2AT\x98\xfffVs\x96<\x98\x1d\
+\xb8\xee\xa5\x1c:\x01:w\xe8\xb6\x18\xd1\xf6\x8d\x86\xda\
+\xceA\x07\xc1\x9c@\xd8\xfa\x0c\x16\x1a\x97\xce\xe7\x07\x09\
+\x02Lr\x8e\xd6\xda\x22\xd6\xb9t\x8b\x98\xc5\x07F\x97\
+\x00\x95\xb9\xab\xdd\xb6\xdf\xe8Fx\xca\x07^\x10\x81/\
+y\xf8\xd8\xe4\xd6f\xa3m\xd2\x8f\x8c\xb7I\xef8t\
+\xd6\xe84q\xe5`\xa6\x80\x02\xb2\x02\xa2\xcf\xfd\xa3\xd7\
+\xd5\x1a\xa6\xd1\x17\xf8\x0d\xc4\xd6+x\x02,\xf9\xe0K\
+8tZ&^h\xbb\x06\xe8:m\xcf`\xe1\x00z\
+\x18\x80\x8e\xc0c\xc1\x08\xd3\xc5s\xfd\x129\x01&\xbb\
+D\x8b\xcd\x22\xea-b\xbf\x96n\x11\xb3\xa8\xa9\xe9\x04\
+\xaa\xf2\x00<%\x8c\x95&\xbc`p\xc2N3\xf7\xbd\
+U\xacMz\xce\xd2DM\x12\x88\xc3%\xc0!\x5cK\
+\xbe\x80\xd8\xe9R\xfb\xcf^\x0a\xb4:\x83!2\xf9\x15\
+3l3\x17\xc6\x94\x82n\xd2\xa1;\xae\xed\xd0\xa5\x18\
+w\xe8\x14\xe0\xf5M<\x07\x9d\xb4]\x80\xbe:f\x1f\
+[\x05\xb20d;\x9b\xea\x01\xf7\xca%\xd4\xcc-b\
+\x16\xefi\xe6\x01\x88\x00\xf2@\xe8\xaf,g,\xdc\x86\
+f\x1f\xd7k\x01\xfc\x8b\x97\xdc\xf7\xa6\xd5&}\xf0D\
+\x9e\xd1i\xe2\xb8\x14\xe0\x17\xeb<\xcc\xd6\x85\xe2\xd9o\
+i)\xf8\xd3\xc6\xa8\x1b\x19\x88\xf1\xdd\xf0\x19\x81Gx\
+\x1bX\xeaQ\x03\x13o\xd4\xa1\xdbZ>\x87Nm\xe2\
+\xb9\xb6\xc7\xaa\x80_\xbb\x97\xad\x8c\xde\xcb\x02C\xb7\xf1\
+\xc1\x91\xe5\xdb\x22fQ\x1dk?\xc6\x08PUrv\
+\xbe\x835\xf8~p\xc2.\xa3\x0e\x1d7\xf1O*\xb0\
+\xb5Y\xd7CwW\xd7&\x1d\x18\xbd\xc3\xe8\x99\x02\x18\
+mX\xcd]\xf6\x9f\xed\x07ZO!67Tm\x0c\
+\xad\xf2*}\x02\xc9\x12\xd6\xa4\xdaz\x83\x01\x93\xdd\xe7\
+\xe3\x8d\xf6\x0bM)\xbfC\xb7\xd9\xd0\xa1C\xd01\x81\
+\x84!$Z\x92\xd0\xf5\xfb\x98\xcf\xea\xcd\xbc\x17Pm\
+\xe2\x15\xd0\xf7\xb1\x95\x00\xfc\x0a\x00\x1e\xd3\xc0.\x8b7\
+\xf0Y\x82\x1cxe\x8bX\x84y[\xc4,\xaa\x9aJ\
+\x05\xcb-\xd0M9\xdbwd\x9a\xed\xd0\xdd-\xd7\xbe\
+7\xfd6\xe9s\x17\xaf\xb1i\x01qe\x91\xe0\xff\xb4\
+\x1fd3\x99\xbe\xd4\xd7\x92%x\xefU8\x86\x1aG\
+\xe2\xa0%\xfc\xb2\xeb\x08\xfbah\xfa\xed\xbd#_\x99\
+C\xb7yg6O!c\x02\x09s\x07\xb3\x16\xc6\xe8\
+5{L\xf6\x0ag\xd3}\xa3\x99\xd3\xa2\x04\xb6`\xe5\
+f\xe6\xbbz\x0b\x9b\xbf\x22\x99\x0f\x8f\xb4qS*~\
+\x83\xed\xbd\xef\x01\xf0k\xa8m\xdc\xcc-b\x1a\xc5 \
+\xaa\x06\xca\xc3 1\xe3g!\xb6C\x9b\xeb\xd0\xa9\xb5\
+\xdd`'L\x19m\xd2\xbb\x0f\x9f7y\xba\x88 \x01\
+\xf8\x04\x81\xb4s\xf7\x1bU\xe3C\x85\xc7\xa5\xab\xc0\x17\
+\x89\xaf/`=m\x85\xa1\xaf\xb5\xebj\xee\xbc\x99\x17\
+\xb3\x9bv\xe8\xd0\xc4#\xf0|`$\xfc\x8e\xdd\x92I\
+\x1bb\xa6\x15\xb4\xe9c\x95\xd5\xddjz\xee\x00[\x8f\
+[r\xdf\x85,\xb8s\xaaU\xcf\xe1\x9b\x09\xf8\x05\xe4\
+\xed\x9b\xb9E\xcct9X\x8c\x83\xe5\x8d\x8fx\xb3#\
+7\xed\xe3\xc0?0{\xdf[\xc9K\xb5I'\xee<\
+V&\x09\xf0&\x0c\xb1\xf7\xd9\xdc\xacc\xdf\xceR\x8b\
+\xf4'\x1a-\xd2UL\xcd\x0cP\x9dv*g=?\
+\xe6\xe0w\x1d\xd4\x12\xe7\xef\x8e\x07\xf0#\x133L:\
+t\xc2\xc4\x9b\xe3\xd0\xe1k\xe5\x91\xb1\x98Q\x04\xff\x02\
+\x0f\x8c\xc6\x16\xf0\x18\xda\x09\x84s\x0fq=_\xd9\xaa\
+\xd7\x88M(\x16]\x06\xc6\x12\xe8~T\x92\x9fC\xc0\
+\x8fy\xa9-b\x1a\x04\xe0\xdd\xc1\xc3\x1c\xfc\xb3q\xf7\
+\x8bnk\xb3\xa4\xedfom\xae@\x9bt\xfc\xf6,\
+\x93\xa7\x8e\x89\xbe\x01\x9c\xab\x8bM\x92T\xed\x92;e\
+k\xab\xda\xa5\xabi\x10B}\xa6\xb1\x98\x84\xc2k\x1e\
+\xdd\xac\xa6\x0f\x01\xcd\xff\x03\xc1\x8f\xd8\x90\xfeJ\x1c\xba\
+Pr\xe8\xb0G@\x8c\x8c\x0d^\xbf\x9b\x7f\x97\x16\xdd\
+\x87b/d\x944\xf7\xd0\x87@v'\xa7\xce\x95<\
+\xfb\xd9\x14\xdeM\xa2\x1e\x8dA\x94\xe8\xa9\xf8\x161\x8d\
+%\x80\x9f\xec-\xe6\x01o\xdcu\xd4\xe4\xac\x1a\xe1\xd0\
+\xa1\x89?\x95S\xcc\xb2\xcf\x17\xbdT\x9b4v\xd5\xc4\
+\xa5\x1d1I\x02\xcc\x16b\xe5\x90N\x1d;\xdfc\xf4\
+\x0c[j!kH7\xe0S\xd2dA\x86\x9ad\x1d\
+\xde#\x11g\x1a\x7f@\xdf\xf9\x13\xf2} \xd6\xf7\xf0\
+@\xb3\x8f\xe0\x87'\xec7\xcb\xa1\x8bJ4\x12\xbe\xa9\
+\x1c:\xbc\x0e\x12_\x8c\x8cu[\xbeA>A\x04\x0f\
+\x8f\xf2'\xb0g\x90vO\xa2\x89_\xe3)\xaf?\x92\
+\xf6\x05\xf6%'\xaf\x0deJ\xbf{\xa9-bD\x00\
+\x83\xd6\xe7\xa1\xd3|\xcf\xe1\x07\xdc\xba\xff\x84Qm\xbf\
+Pp\x9d\xc5\xa5\x1eb\xb3\x83\xd6\xf1/\xe3\x1d\xb2\xe9\
+\xa5\xdb\xa4Q;6l?\xc6'\x8f\x18#\x81\xado\
+\x0c\x9b4\x7f\x0d\x1bK\xcb\x02F-\x83\xec\xe6/F\
+\xa7\x8d\xca\xc8_\xd3w\xa9GQ\xc3'\xa4\x19u\xa4\
+iah5\xbe\xc2C\x17\x86L\xf3\x09\x00\x93\xcf\xcf\
+/t\xf0\x8b\x06\x903\x09\xf8#&\x1c:\x15\xe8\xf1\
+r\xcc\x9e\xaex\xf1\xeb\xf6\xe9\xc27\xfc\xfe\xa8\x04\xf2\
+\xc8\xd8\xf9\xab6\xea\xd6\xf6\xef[t\xf4\xa7\x0d\xa0\xd6\
+\xe4\xc9\x0f$\xb0{\x91\x89\xefD\x89\x9d\xe6d\xea\xbf\
+\x95\x80\xffP\xb5E\xcc|_\x88\xa2\x00\x83y\xc0?\
+\xb4\xeej\x0d\xeb\xd3\x1d\xfc\x80K\xd6\xa6\xb1\x8cc9\
+\xb0v\xdf`\xa7r\x8bY\xf2\xee,\xde!,\x9c\x93\
+\xa1\xd3\xfd\x9e\xf7\x9f\xec\xc6\xc7\xc9\xec<xZ\xdf\xc4\
+\x97\xb3MZ4X\xec<p\x8e\xb9\xadJ6J\x00\
+\x1c*\xe5\x10\x18\xcf\xec\xc0c\xb6q\x0f\xd1}\x16 \
+C\xc9\x88YA\x07q\x9a\x19\x90\xc2\xa5\x8f\x8d\xd3\x98\
+\xbe\x13\x9cG\xe3\xc8\x1b\x94\x81\xb6\x9evx\xda\x06\x9e\
+{(F\xe0\xa0\xe0\x89\xe0\x8b\xd6l+\x97C\x17.\
+g\xe8\x8c\xc4\xec+\xa2\xf7\xf0\xb20\xfaA\x0a\x01\xae\
+(\x048\xae\xcc\x0c^\x1d\xb7[\x1cI\x7f\xff\xe7\x8e\
+\xfd\xdc\xa8\x8c\xdb\x87\x00oC\x807#+\xf7\x1d\xad\
+\xf1_\x10\xb1?\xd4\xd8\x1bX>GX\xca\x03\xd4 \
+\x0d\x11\xf3\x80\xf1CX\xf7\xb1\x9e\xbb\x07\xcb\x8bj\x8f\
+\x14<\xd5?z\x8f\x9b\x93G\xe3[\xd7\x81\xc4\xa1\xf7\
+:\xd5;\xe2\xa5\xda\xa4\xd5=t!\x1b\xf6\x1bX\x03\
+$\x00\xfe\xcd!p=\x9b\x05q1\x1e%?w\xe9\
+\x066#0\x96\xd9\xf9\xaca\x13<B\xcb\x1c\x1f\x8f\
+\x89.\xe7e\xf1lI\xccv\xb6n+h\xfc\xd6\xa3\
+z&>F\x14a\xca\x99\xa1[)\x80\x87\x98\x1d\xab\
+u\xcb\xd6\xec\xe6\xce\xa3X\x0aO\xe7J\x048\x9c\xcb\
+\x0bI\x91\x89\xe9\x0c\xa3\x0d\xac\x81\xb4\xe93\xca\x89\x1a\
+o\xdaHk\xbb\x00]^\xdej\xbe\x14\xf0\x1a\x99@\
+Q\xf8\xf8\x82\xd8\xd6\x9e\x1c\x8d\x09\xdf\xb7\xe8\xe4\x06\x1f\
+,\x1aw\xeft\xb3\x9a\xb6\x9f\xbc\xd2\xa54\xb1b1\
+\xfd{\x05N\xb1\xe0)\xe4\xf8]\x15n\x93\xd6\xea\xaa\
+\xd9\x9e~\x86-\x8d\xd9\xcd\xa6\xfa)D\xb0\xf5)%\
+\xc0\xcc\xc5\x09\x9c\x00\xce+71\xf7\xd5\x9b\x99W\xe8\
+\x16\xe6\x13\x91\xca\x9bO\x17\x84\xa5p\xf1\x8d\xd8\xc2\x02\
+\xd6\xa4\xb2\xc0\xe84\xb6<n\x17[\x9b\x9a\xc9\xe2\xb6\
+\x1d\xe1N\xe7z\x04\xbe\x9c\x0e\x1d\x9a\xf8\x90u\x1a\xda\
+\x8e\xa0G)\xa0/\x8d\xdc\xcd\x96D\xecb\x8b\xc3w\
+\xf1\xfe~$\x0d\xde\x0bT\x0a\xb4zH\xf6\xfd\x9c\x00\
+\xe7xvqMR\x06\x9b\xba Rl\x92YF\xe6\
+\xbe\x09-g\xe2L\xa0Z\xd2,D\xb3\xa7\xa3U\xa4\
+\xf8\xd1\x80\xd8\xd7\x81\x1aB\xc7P\x8aq\x06\xc5\x9e\xf3\
+H\xe6\x90\xcc#\x8f\xd5\xa7\x8f\xf5\xbc3\xbcd\xba\xe7\
+D\x85\xda\xa45\xbbj\xa4\x92k\x088g\x9e\xc1)\
+*\x02$2\xe7\x15\xfa\x04\xc0\xf6\xf3\xa0\x98\x1dlI\
+\xec.>\xe0*8q?\x0b\xdb\x94\xc1\xb7\xa6\xc5l\
+9,i\xbb\x0at3\x1c:\xfd\x0c])\xe8\xcb\x22\
+w\xf3\x12\xad\x02\xfcN>\xcf/(t\x07\x0b\x04\xc1\
+\xdc=\xfe\x0d\xbf\x1f\xde\x13\x99\x00XL\xc2<\x03\xfa\
+\x1e\xd3}\xa3(\xdc\xf5N\xa1\x84\xce\xb7D\x80\x0f_\
+\xf9\xc9`&\x86\x22\xd4%\xe65\xa50\xa3\x079%\
+\xc3)\x04\x19M\xbf\x85\x8c\xa1L\x94#83\xbe\xb0\
+\xc6>\xb4q\x0f\xe6\xe7\xe3\x94\xabM\xba\x9c]5\xd1\
+\x9b\x0e\xb1e\xebv3\xff\xc8m\xcc/\x22\x8dy\x87\
+m\xd5#\xc0\x8a\xf5{\xd8\xaa\xf8},b\xe3\x01\x16\
+\x05\xcfE\xc0\xcb\xef\xd0\x95\x82n\xa0\xedk\xd4\xdaN\
+\xa0\x87)\xa0\x07\x02\xe8\x0b\x83\xb7\xf3\xcd\x1dx\xfc\x0b\
+v\xf0\xf8\xaeL\xe3\xe9d\xbc\x17j\x02`\xd4\x81\xcb\
+\xcf\x1cX\xca\x94\x8d\x1e\xee\xab\x09\x83\xafhy\xae\xf9\
+\xa7\x95\xc4\xa5\xfe7\xb9\x13H4\x84\xfeL\x89\x86\x0e\
+Tc\xeeB\xbf\xc5\xbf\xbbK\xad\xe3\xd3\xc4\x98U<\
+\x22\xcdx\x9bt\xeeK\xb7I\x9b\xdfUc\x9eC\x17\
+f\x86C\xa76\xf1\x06\xda\x8e\xa0\x87\xa8@\xe7\xc0\xa7\
+\xf2\x0d\x1eX\xc3_\xb0l+\x7f/\xbc\x0f\xf8\x9d\x91\
+\xd4\x98b\xc6\xcf\x8d\xe4\xc4\xcf\xe4\xe0\xab\x94x\xdb\xf4\
+\xb6\x1aB\x18\xfc\xf9\xd5PUfL\x8cR\xfd\x8c\x88\
+\xf0\x0d}\x90\x1f\xc8G\x10\xd2\x94LU;\x0a[\xc6\
+u\x19n\xb7\x89\xcf\x1b\x82\xb5\xf7u\xb4I\x9b\xddU\
+c\xd4\xa13]\x84Q\xb4\xdd\x88\x89\x0f+5\xf1\x5c\
+\xdbW\xebk;\x07}\x05\x80\x0e\xc0\xe3\x1e\xbf\xf9K\
+\xb70\xaf\xa5)|\x93\x07^\x07\xbf\xab\xd8\x15$\x08\
+\x80\x9f\x0fI\x87E\x9f\xa1\xd3}\xd3\xa9?R\xea\xf1\
+\xff\x13\xdb\xe34:\x83?PM\xdb\x16'W~N\
+\xf2%\xadSh%:\x83\xb3\xe8\xcc\xe7\x07\x07\xc5\xbe\
+\xd66\xe9\x8av\xd5\x94:t\xfb\xccv\xe8\x16\x01\xe8\
+A&L\xbc\x8fJ\xdb\x11x/\x00\x1eA\xc7\x13\xc0\
+<\x16of\xee\x8b63\xb7\xa0d\xfe\x1a\xfc\x9e:\
+\x02$+\x04\xc0\xcf\x86\x07IaZ\xde\xb0\xc7\xffO\
+n\x8f\xd3\x18\xa5*O\xdb~\x9fHQKJ\xa1\x22\
+\x09~l\xda\xaeW\x1f,\xdf:\xf8E\x01\xc0g_\
+{\x9b\xb4\xe9\xae\x9a\xf29tK\xcbp\xe8\x04\xe8\xfe\
+\x00\xa0\x9f\xda\xc4//\x05\x1d\xf7\xf4)\xc0\x97\x82\x8e\
+{\xfc\xf0\x140\x97\x85\x9b\x98s\xc0F\xfez$\xf9\
+\x06\x15\x01\xb0\x22\xa8\xdd\xe3\xff\x9a\x86fi\x14MD\
+\x0e\xbd\xba\xbam\xfc\x97\xce\x03\xdb\x8e\x9c\xbd\xf8\xaa\xb5\
+[0K\x82\xf0\xaaL\x87n\xef\xabo\x93.\x8fC\
+\xb7\xca\xa8C\xb7\xab\x5c\x0e\x9db\xe2S9\xe8\x5c\xdb\
+%\x13\xaf\x03}Q\xb2\x02\xbc\x00}\xe1F\xbe\xc7\xcf\
+\xc9?\x89\xf7\xf6ck\x17Z&\xfc\x9e\xb1\xda\x04P\
+\xf5\xf8\xbf\x81]\xd3\xd2\x99\xf5\x95\xa5\xd6\xf1\x1a\xe4'\
+\xd4\x1f\xe6\xe0\xc7\x87(\xaeIJ\x7fcm\xd2\x91\x09\
+/\xe7\xd0-\xae\x80C\x87\xaf\x93M\xbc\xe7bCm\
+\xc7C\x1f\x9dI\xdb\x11x\x05\xf4$6\xc77\x91\x0b\
+n\xf3\xc2]\xc0\x82\x00Hb$\x80s)\x01T=\
+\xfeop\xd3\xacj\x82\x162\xf13q\xac\xbc\xe7\xca\
+\xa4W\xdf&m\xa4\x08\x13\x9dX1\x87n\xb9)\x87\
+N\xcf\xc4\xab\x1d\xbaT\x03\x87.\x19\xc8\xbb$&\x8d\
+M\xf7^\xab\xa7\xed\xae\x1a\xda\x8e\xa0\xcf\xf3S\xb4]\
+\x80\x8eg\x00\xce\xf2N`3\x17$p\xab\xa1\x10\xe0\
+\x08\xff^H\xde\xc9\x9e\xe1\xe2\x18\x18U\x8f\xbf<\x05\
+\xfc5\x93@\xe3$\xb1\xaf ^\xf5\xe2\xd5\xc3\xed\xc7\
+\x14\x87n\xdfkj\x936R\x841\xcf\xa1\xdbi\xb6\
+C\xe7\xadr\xe8\x90\x04AkR\xd9D\x8f\xd2\x1a\x84\
+\xadg$\x07[\xd1\xf6\x8d\x8a\xb6\xfb\xebk\xfbl\x01\
+\xbc\xf7\x066\x13\x80\xc7\x1d\xbe\xb8\xcd\x1b\x87= \x81\
+\xd0\xea\xc5\xd2\xc4\xd0\xc0\xf04~\xdd\xee\xa3\x1cv\xd2\
+)&\xdd\xdf\x86\xedr\x9aC\x14\x07O]\xc0O\x0d\
+\xabH\x9bt\xc4\x86\x03\x5c\xbb_E\x9b\xb4N\xdb5\
+L\xfc\xd2\x88\xb2\x1d:?3\x1c\xba\xb8-G\xd8\x89\
+\xf3E|t\xbb\xe5\x8c\x85\xff\xf5C\xeb\xae\x19\x9d\x86\
+N\xbe\x80\xdf\xdf\xda5\x98\xcd\xf5O\xd4\x81\xae\xa7\xed\
+\x04\xfaL\x09t\x07\xaf\xf5\x5cp\x93'\x92M\x0c\x8c\
+\x5c\xb1v7\x0f\x01-\x95\x1e\x7f1:WLN\x91\
+\x8e\x81y\xb3\x04x\x9f\x1c\x92\xc6\x83\xec\xbc\xf8\xf4\xcc\
+\xf2\xb6I\xc7\x00\xd0v\xbe\xeb\xd8\x14\x10\xbf\xb0\xd4\x97\
+j\x93^Y\x11\x87n\xb5)\x87N?fGBa\
+\x173NM\xbbX|\x93\x05Eo\xc5\xd9<\xff\x0f\
+\xbe?\xb6h%\xb5\x1fd}\x02\x1b5\xf1h\xf7\x19\
+\xde\xeb9\xe8\xb3%\x13\x8f\xda\x8e\xa0\xe3\xc9\xdf\x02t\
+<\xfc\x11\x05{\xfb\x91\xe4x\x7f\x16\x86\xa72\xecG\
+\xb0Rz\xfc\xc3h8\xf4\x10\xaa\x0d|\xa7\x7f\x0c\xcc\
+\x9b#@52C\xe8\x904\xc51fH\x80\xf2\xb4\
+I\xaf\x05\x0d\x9f\x11\x94\xa04yx*[\x9a&z\
+\x842\xbf\x90-\xe5n\x93\xd64\xf1\xe68t+\x0d\
+3tZ1\xfb\x8e\x83gY\xf6\x85b>%\x15\xb7\
+\xb5!\x01R3N*\x99\xba\xbe\xa3p\xbea4\xce\
+\xf6\xc5\x13\xce\x90\x04\xb8?o\x9a\xd7:=\x13/@\
+\xc7\xf3\xfe\x14\xd0\x15\xe0q\x7f?\xbeg\x04V=\xbd\
+#E\x1d\xe0.\x84\xd4\xa1Tw\x19G\xd5A\x8b7\
+\xbdYV\xed\x00\x8a.\xe2\x9fz\x8cv\xf4\xe6cf\
+\xd7\xed2\xdb\xa1sZ\xb6Q\x0f|\x1c\x8f\x8e\xc2\xcf\
+\xf3u\x0f\xe1'icC\xc5\xabu\xe8\x8c\x9b\xf8\xf9\
+&b\xf6-\xfbNq\x02\xe0\xf0\xcc\x1c~\xda\xf8M\
+>*o\x9ao$\x1b\xa0\x1cn\xb5\x8a*\xa3\x8b\x1a\
+5\xef\x10<\xcc\xc1\xff\x11\xf7\x0b\xdc\xa34\xb5\x1dA\
+\xb7Cq]\xc7\xec=\xd7\xe9\x0a@XN\xef8d\
+b:\x1d\x93\xe7L]A\x03I\xfb\x1bK#_\xde\
+\xd8\xd4\x14y\xcb\xb4\x8e\x00\xe8\xa0\xe0\x80IG\xbfh\
+=\x13o\xcc\xa1\xf3\x5c\x95\xc2[\xbbp8\x948\x19\
+\xf4;\x8bv\x1b\xb1\xa7\xa0m\xdf\xd1\x07\xc0\xa7\xb8\xcf\
+\x0f\xa9\x82u\xd0k\xc5&\xf3\x8a0\xe1\x8a\x89/\x97\
+C\xb7T_\xdb\xdd9\xf0R\xccN\x0e\x1d\x9a\xff\xec\
+\x5c$\xc0\x15=\x02\xac\x8a\xdf\xc9??\x80\xbe\x9c\xda\
+\xb3\xb1\x8f\xcf\x03\xfe\xbfh\x90\xdd\xfcb|l\xbcs\
+0\xb3u\x8b\xe6\xdb\xb8\xa7\x12\xe8|3\xa7\xcbZx\
+\xactsG\x97\xe1v\xc7\xa8/\xd0\x8f\xaa\xab\x93\xc8\
+\xf4\x8b)\xa1_\x91\xf6\xd7x\x93\x83\xb3\xb4N\x14G\
+\xc7\xa4s\x97\xe1S\x97\xe2\x97qZ\xbc\xde\xa4C\x17\
+\x00\xde\xad\xd8\xf5\x83\x8c\xa7\xb3\x01\xc3H\x8bV\xd0M\
+\x08i\xd9\xc3r\x07\xbf^P\xbcyE\x98r:t\
+\x9eF\xb4\xddE\xca\xd0\xc91\xfb\xd13\x05D\x80k\
+:\x02\x1c9}Q\xec^J#s\xed@\x8d\x9b3\
+\xb1\xbf\xaf\xbb\xd5tl\xa6\xf9\xb7\x88\x14\xc69\x05s\
+\xc1\xa3\xde\xc4\xdfz\x8f\x9f\x9b\xd3\xc8\xa2}85\x84\
+zP\xc9\xdd\x9az1:I\xc7\xe4\xd5\x95\xea\x00U\
+\xde4\x01\xe4\xb99\xdf\x91\x89\x1a\x0c\xce\xe0\x09\xbe\x85\
+< \x86\x85\xc5\xef\xd7s\xe8\xc2\xe3\xd3\x99\xfb\xb2\xc4\
+\xd2\xedL\xa5\x07\x1f-\xa2NX\x0f\xea)\xc0\xdf>\
+x\xb27>\xd7\x07\xac\x85)\x87N]\x84\xf1]\x95\
+\xaa\x17\xb3{.\xdb\xcc\x9c\x03\x13\x99S 8d~\
+q<fw\x09\xdch2C7O\xca\xd0\x09/~\
+\xe3\x8e\xe3\x9c\x00\xe79\x01np\x02\xe0h\x5c\x5c\x06\
+\x86N\xf3\xbdA\xe0O\xa0\xa4\xcd8\x9a{\xcc\x0f\xa8\
+\x06\x071\xb1\xaf\x8d\xf3\x89!\xd3|n\xa1\xf4\x9f\xe4\
+\x96\xd7m\xe4\xb4t:\x1c\xcb\x8f\xbe\xf3,z\xcdH\
+\xea\xc6jG\x9a/\xc0\xaf\xf5\xba\xb7\xc8\x9b;8\xa1\
+>9(\xfcp\xa5>\xd6\xf3v\x0bvO\x99\x1f\xc1\
+\xa6\xf9D\x81\xac\xd11\xbe\xdfD\x97\xc2&\xbf\xf6X\
+'\xedj\x99KC\x91'\xd3\x0d\xc4._\xc7\xeeV\
+\x0e\xfc:\x01!i\xbc\x08\xb3X\x1d\xb3\x1bq\xe8<\
+W\xa7\xb0\xf9a[\x98o$v\x05mg\xb3\x17\xc5\
+\x19\xb4\x83\xd9yE\x01\xe8\xe6e\xe8D\xf8\x16\x10\xb2\
+M\x8f\x0082\x17\x09\x10\xbf]\xd9\xdc\xf1s\xc7~\
+\x1e\x14\xae\x0d\xa6\xd2\xf8`:\xf7h\x02y\xf2\xb3\xa8\
+\xbd\xdbU\xa3\xd5{\x22=\xb7?\x95\xd7\xc5\xb9\x00_\
+\xa9\xc0\xaf\xfaF\xc17\xe2\x08\xd6\xa3\x0f\xfb+}q\
+\xebf\x1d\xfa\xfa`\x02\x034\xe3&\x8e\x94\xc3\x90\x06\
+\x7f\xb7\x06\xad&S\xe7%\xedj\x19C[\x9a\xfa\xd3\
+h\x18\x5c\xf7\xc6\xf6\x9b\xe8z\x18\xbb~\xb5\x1c:\x7f\
+\x13\x0e\x9d{\xf0fN\x00\xd1\x166\x15\xc8\x07\x9f\xe3\
+\xf7\xe6\xdd\x86\x1c\xfd\xb1M\xb7=\xa0}%\xe3\xc0\xf7\
+\x90\xb5}\xae\x89\x0c\xdd\x8c\x05\xc2\x8b\x8fg\x99\xd9\xf9\
+\x0a\x01\x8a\x90\x00\xb78\x01\xb2\xce^\x12\xbb{\xe2h\
+\x8aZ/\x8a\xd9;Q\xfa\xb6\x0f\x91a$Y\x87\xf1\
+\x1a\xad\xde}\xe85\xadU{\x1d>\x96\x9a>\xab\x98\
+<\x03\xe8\x0d&\x83>&\xa66\xa5>\xc2\xfe\xf4\xe5\
+\xec\x09d\xb7\x9f\xda\xf7^Bf\xce\x99\xd6G[i\
+WKw2w\xad\xa9\xfb\x08o\xc4 \xf0\xa4\x8bq\
+XrYE\x18\xd9\xa1\xf3\x5c\x96\xa2\x10@\xea\x0b\xb4\
+v\x0ff\xd8\xb1\x0c\xd7\xc4\xc3\x97\xd6w\x18ds\x0c\
+\x01s\xf4\x8e+\x05\xddwC\xa9\xb6/H0\x1a\xbe\
+a\x12\xe8\xfc\xa5k|r\xbaB\x80;|\x5c.^\
+\xaf\x8f\xcd\xbc]D\xe4.\xd4T\xfb3I\x0b\xfa^\
+\x1di\xdf^w\x92\xaeD\x92\xb6R\xab\xf77\xd2n\
+\xa7\xda\xaa\x16\xb0J\xff\xf1\xb6\xfc\xa8f\x09\xbd/\xe6\
+\x08\xd1\x97\xf8\x95\x96\x83\xa1\xd4!dC\x1e\xedDZ\
+\x1bG\x90\xa5\xe8&mnhL[\xbd~\xa4\x1b\xd6\
+\x83\xf7\xe8\xfb\xc6\x18\xef\xaa\xd1p\xe8\xdc\x97n\xe6}\
+\x812\x01x:\xd5jz.\x9d\xc1\x83\xdb\xaeBp\
+\x90\xc2$\xb7p\xd3\x19:\xcf\xd2\xf0\xcd\x9e\xc27t\
+\x18e\x02\x14q\x02\xdcS\x08`\xad#@\x07Z\xbb\
+\xc5Q\xf6\x0d\xe9\xdf\x8d\xe9\xfe4%iB\x7f\xfbV\
+\xea\xfa\xfdD\xd5\xf1[\xf5\x8d\x85{\xe5\xac\x09\xc8-\
+d\x8d\xa5\x0e\xa1\xaed\x12\xfb\xd0\xc0\x82\x1e\xc4\xfaV\
+R\xcb\xf3WRs\x09\xfa\x13M\x9a\xb6\xeb\xd5\x8fO\
+(\xf7\x8f3\xe8\xaaQg\xe8\xf4\x8a0\xcb\xf4\x1bC\
+\xddi\xe3E\xcb\x9e\x96i\xd4\xbd\x8c\x9b/\xfc\xd1\x09\
+\xc3d\x8dl\xe2\x8de\xe8\xd4\xe1\x9b\x9a\x00\x19\xc7s\
+\xf8{t\x1a:)R\xca\xd85&M\x16\x9bR\xea\
+R\xd6Tn\xa4\xa9\xa71\xef\xbf\xe6+\xef\xf8}M\
+K\x81\x18.\xf91}\xb9\x06\xd4>\xd6\x94v\xf3Z\
+\x904\xa3\x96\xb2o\xa4m\x5c\x1f\x11\xeb?\xa2\x9b\xf2\
+=\xac\xa7\xfcx6\x97\xa0$\xb3\xbaj\x84C\xe7\xa2\
+\x22\x80C\xc0Z\x11\xa7\xaf\xa0%\x08\xe3\xeb\xb9\xb0\x0c\
+$pg\xd0#Z3C\xa7\x03\xddM\x01}\x8a\xcb\
+:>\x8f\xd7\xd69\x86\xed<xN\x8f\x00\x8b\xd7\xa6\
+\xf2\xf7h\xdc\xb2\xf3\x1c\xe9\xb43y\x98EM\x12\xb9\
+\x99\xe6\x03\xe9\xff\xa2\xcd\xbb\xfa_\x06\xf82Z\xc8j\
+I\xbd\x84_\x90\x86\xd7\x97N\xb9\xa8'\x99\xba\xf7\xa5\
+}{\xef\xcba%_\x02|b\xcc\xee\xaaA\x87\x0e\
+O!\x17\x04\x98\x1f\x9a\xc2\xb7\x8e\x0d\x9c\xe2u\x85\xc0\
+w\xa0H\x03\x97\xa3\xe9\xb8\xd9\xc5\xc6%L\xcf\xc4\x0b\
+\xd0\x85\xb6s\xd0\xf9\x10\xc6\xd2I\x9cx\x8a\x1a\x12\x00\
+OL\xc1s\x13h\x94\xcdI\xf2k\xfa\xd1\xfa\xdf@\
+J\xdaT\x936\xa9VSIU\x8d#\xef\xff\x1a\xc0\
+\x97\xd1B&\xda\xc7jQ\xc9XHmb\xbf\xbc\xb9\
+\xa1\xaa\xd4\x5cR\x87\xacC[<\xc0j\xb2G\x84\x0e\
+t\xf7\xb2\xbaj\xfc\x139\x01\xdcV'\xf3\x09dX\
+\xad\xb3*\x1d\x9a\xe4H\x9e\xb7%\x9d\xc13\xb6\xff$\
+\xd7Ln\x05\x00p\xd9\xc4O\x91A\xa7\xd9{B\xd0\
+_8GK\xc0\xd6\xf4\x13\xfc=\x869\x04<\xfa\xbe\
+E\xc7\x05&\x8e\xbb\xab\x22\x9d\xe8UY\x0d\xf6_\x12\
+p3:\x86\xd4\xadc\xb2T\xd3`\xbd\x9cW\xe0'\
+u\x0e\x98\xec\xce\x13AxR\x86\xa9\x0c\x9d\x88\xd9\xe7\
+\x04*\x04p\x0c\x8c\xe5\xd54e]\x9e\xbc\x93\xcc\xbe\
+5\x85b=\xc5\x1e\x87_:\x0f\x98\xcbK\xb8\xce\xa1\
+z&^\x0d\xba,\x09iYl\xdb\x81S\xb0\xd4\xc4\
++#\xd9\x1c\xfc\x1f\xc3\xf2\xb2\x98\x086\x9c<\xfd\x1f\
+\xdex\xc9\xf6-\xb2\x08\xc6\xa4\x92\xc6s\xf5\xb6\xa87\
+i\xdb}\xb8\xd5\xdc\xa5\xff\x89\xc7\xa3\xcc\x0bH2\xdd\
+U\xe3\x93\xc0\xec}\xd7\xb2q\x04<\x8eP\xb1\xe82\
+0\x8er\xf3\xb6\xe4\x9cu\xa5\x90\xab-\xfd{(\x8e\
+\xa5\xc5\xe7\xdb8\x85\x9b\x04\x1e\x05\xc3F\xe7\xa5\xebu\
+\x99L*\xda\x04JS\xb9\xfa\x90\xf9oh\xd6\xd1\xed\
+\xef~\x0c\xfc\x08\xf5!\x8d\xdd\xc0Y\xf3\xe3Z\xea\x12\
+\xcck\xecZ]5\xd3\xbdb\x19\xd6\xe0Em\x01<\
+\xfem\xb4W\xd1\x93r\x11\xc3\x09\xf0\x16R\x08\xd6\x8a\
+\xac\xc1\xe8\x81S<\xb3\xf1\xb5c\x9d\x82\xf9\xbc}5\
+\xf0\x13\x9d\xa2u\x03\x98\xa5\x14v8E\x14N\xe4S\
+\x0c\xa6\x1c\xc8\x8f\xe4\xf7\xd4~+\xd2\xb6\x7f1\x8b\xa1\
+7\x96U\x1c`\xd5n\xc0\xf8\xc5bw\xf2\x04\xd70\
+f\xeb\xbe\x86Mv\x8f\xe4b\xe3ZZM\xa3\xa2\xd2\
+j\xd2JW:\x83x\x04%]ZHs\x03\x1a\x12\
+P\x22s9\xa1\xc7\xe8\x19i\xe2=\xf0\xfc\x1d\x9c\xb9\
+/\xa4\xb4h3\xe7\x82T\xbb\xf0\xa2\x84\x96\x0d\x81/\
+\x8a6\x0d^\xd7I\xe7\x7fG\x02\xc8\xb3\x0a\xeb\x933\
+\x85\x9a;\x02C,<Ul\xc4\xac\xa0\xe7\xfa[\xd4\
+\x83\xfe\x00\xf0\xb2I#\xe5\x89Y\x93\xc8\xd9\x13\xe7\xed\
+6\x92\xc2\xcezt\xfd\x9fh\xcdF\x00'}\xdf\xa2\
+\x93g\xf7Q\x0e\xbby\xc1\xc6\xde\xe7\x0e6e\xa0\xf4\
+\xb1\x9ew\xb6\xc9\xaf=\xa34R\xd8V\xb4\x13\xaa\x83\
+\xaabW\xeb\xad\xcc\xde\xfdE|\x06\xf9\x00\xabo\xa5\
+C*F\xd2Mw\xa2\xe9X\x01\xd44\x81\xa0\xf8R\
+\x987G51\xab\x13\xe5 \xbe\x95\xf2\xea\xb5\xa5\x83\
+0\xbe&\x92u\x22\x12X\x933\xe7BD\xf2\xa5*\
+\xa5\x17\xfdM\xa4\xb0GS\xbc\xdf\x95\x96\x92\x1f\x89P\
+u\xa5\xd1u\xef\xd6\xfe\x97\xb4\x02\x1f\x12h\x8d\x88\x04\
+\xdd\xc8\x91\x1bO ;\x12 3h\x9d\x9f(\x0dN\
+\x92'f}\xad\x1a'\xf7\x9e\x94\xab\x10$hF\xeb\
+w_\xf2\x17\xc6\x13\xd0SI&\xd3\xdfF\x10\xb1\xba\
+J\xc3\x1b\xbe\xa55\xbf\x8e4\xbc\xb2\xea[S\xb4\xf9\
+\x8b:\x83\xf2\x01V\x9fSb\xe8\x17\x02\xa9'\xb5H\
+Y\x12 \x96\xa4\xbd}\xa4\xc1I\x02\x98\x7fj\x9c\xa4\
+YU\xe3,\x84\xfa\x14\xba\xb5\xa4%\xa1'\x01=\x90\
+\xa4\x1f\xfd\xad#=\xa7\xa94\x9f\xa7\xaej0S\x95\
+w\xe0\xbf\xba\xa5@\x90\xe03r\xae\x1a\x13\x11ZS\
+\x9d\xa1\x03\x91\xa2\x8d\xc6\xe0\xa4\xbaF&fU\xd6\xd8\
+\x01]\x87\xb4X8\x87\xbf\x10\xd0\xad\xc9\xc47\x97\x0a\
+V\x0d\xa5\x1c\x7f\xc5\x073\xbd\xfb1\x9b\x04\xefI \
+\xd5\x93\xb6\xa97\x22\xaf\xbe\x91\xaa\x9af\x0c\x18\x1d8\
+\x1ag#\xc9s\x02?\xa7\xf7\x10\xd1BC\xba\xb68\
+\xa8\xb9\xce+\x9d\xcf\xf3\xee\xc7\x18\x09,h~!\x0e\
+\xb1\xb4\xc09\xb78\xec\xf8\x03\xe5\xa4s\x0b<\x01\x0b\
+\xe7\xdf\x7fJ\xbf\xf1\xff\x1f\xe1\x89\x188\x13\x1f\x8fG\
+SNC\xe5\xaf\xad\xac9\x22U\xff=\xaa\xd1kj\
+J\xef\x81\xe3\xd5\xeb\x90|\xa4\x1c\xb0\x8dg,\xf3\xcf\
+!\xae_\xd9\xd4\xf5\xdf\xfd\xbc\x82\x9f\xfa?\xfcR\x09\
+\xa42HU\x90\xea \xff\x00\xa9\x01RS\x92\x1a\xf4\
+w|\xbc\x1a=\x1f\xa5R9\xae_\x99^+\xde\xe3\
+=I\xfeAR\x8d>\x87\xd9\xd7\x7f\xf7\xf3\x8a~\xbe\
+\xfa\xbeY%\x90\xca$U@\xaaJREz\x0c\xa5\
+\xd2K^_\xbcG\x95Wq\xedw?\x7f\xc2\xcf?\
+\xbfmRI\xc8\xbb\xbb\xf1\xee\xe7\xddO\x05~\xfe?\
+\xaeY\xd8\xf4\x1d\xfb\xf58\x00\x00\x00%tEXt\
+date:create\x002010\
+-02-10T01:44:25-\
+06:00\x0e\xe0\x0c\x1b\x00\x00\x00%tEX\
+tdate:modify\x00200\
+4-05-23T19:30:34\
+-05:00\x17\xb7\x8ah\x00\x00\x00\x00IE\
+ND\xaeB`\x82\
+\x00\x00+\xc0\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x00\x09pHYs\x00\x00\x1b\xaf\x00\x00\x1b\xaf\
+\x01^\x1a\x91\x1c\x00\x00\x00\x07tIME\x07\xd7\x0c\
+\x1b\x16\x028\x83\x98\xbev\x00\x00\x00\x06bKGD\
+\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00+MID\
+ATx\xda\xec}\x0b\x98\x1dGu\xe6\xa9\xee{\xef\
+\xbcG\xa3\xd1s4\x92,K\xb24zX\x96%[\
+\xd8\x18l$\x1b\x1c\xb2!` vx\x85\x04\xb0\x9c\
+\x00\xbb\xd9\x0d!l\xbe\xddM\x80\x04\x16\xf2e\x13v\
+\x93\xfd\x92\xdd\x95\x8d\xf1\x02\x1f\xb6\xc3\xe2\xe5e\xcb\x18\
+Y\x0f\x83\xf1\xfb%\x8d\xde\xb2,\xcfhF\xf3~\xdc\
+\xb9s_\xdd\xb5\xe7\xd4\xdc\xfa\xaa{\xce\xed\xee{\xaf\
+\xee\x05\x99\x9dc\x97\xba\xbb\xba\xfbvW\xfd\x7f\x9ds\
+\xeaTu\x0d\xcc\xc9\x9c\xcc\xc9\x9c\xcc\xc9\x9c\xcc\xc9\xff\
+\x97\x22\xa0B\x91\xe0\x97\xdb\x01\xacM\xb8\xfd\x1dL\x1b\
+aNj!\xdd\x98\x1e\xc4t\x04\xd3\x03\x00n5\x80\
+\x14\x95\x00\xdf\x8d`\xb7\xe2\xb6\x1e@\xa40\xad\xc4\xfd\
+S\x85}\x98\x93\x9aK#\x80\x5c\x8b\xe9\x5ca?\x8d\
+ib\xa6\xe1\xb9\xa2F\x04 \xc6\x89\xab1\x0d\xcf\xb4\
+t\x11\x03\xb0S\xcd\xcd\x96\xed\xbaVFJ\xcb\xb1m\
+\x01\xb1\x98\x88\x03@\x0c\xe6\xa4\x16\x92\xc7\x94S;y\
+i;\x8e\xac\x13\xc2u,\xcbmL&]<\xe7\xa0\
+f\x90\x0b\x00\xdc\x17p{;\xa6\xaa\x10@\x16\xae\xeb\
+\x9bi\xe1\xb1\xb6D\x22\xe6\xdav\x5c\xc6bq\xe98\
+q\xb7\xae.\x1ekl\x8c\xdb\xf1xB\x02\x08\x1b\xe6\
+\xd4@\xad\x84\xb0p\x80*\xd9\x96\xd0\xd9)\x1d)s\
+\xd0\xd3\x93\x96CC\x19\x91\xcf\xe7,\xc7\xc9\x8de\xb3\
+\xf9F\xa4H\x07]\x8e)\x0a\x8bX\x89$\xb1\xd2\x00\
+\xf1\xfa\x96\x96D^\xcaz\xb9x\xf1\xfclG\xc7m\
+\xd0\xd0\xf0\x0e)\xe5\x95\xe9T\xaa5;:\x9a\x00)\
+k_\x09\xbf\xa4kd\x85\xef#\xab\xfe^<\xdf\x8a\
+\xc7\xa1\xb1\xb55k77O\xd9\xabWw\xdb\x00\xfb\
+\x12\xbd\xbd\x0f\xe4\x7f\xf1\x8b\x81\xfa\xba\xbatzr2\
+[P\x16.\xddZ\xb1\x06\x90\x05\xf0/ \xf8\xf9\xe6\
+\xe6\x86x\x22\xd1\x94\xbb\xf6\xda\x0f\xda\x1d\x1d\x9f\xb1[\
+Z\x16\xbb\xb9\x1c\xb8SS\x90\xbdp\x01\xd2\xe7\xd0\x22\
+Iy\xd1\xe0\x8a\xda\x00^98\x95\x83n\xceW\xf9\
+\x9cUW\x07-\x9b6A|\xfe|\x8855\xa9c\
+7\x9d\x1e\xce\xf7\xf5\xfd]\xe2\xa7?\xfd\xdf\xb9d2\
+\x19K&\xa7\x97\x14H B\x1e\x13\x8b\x00\x9fT\x7f\
+\x5c655\xc4\xda\xdb\xe7\xbb7\xdd\xf47\xcd]]\
+\xef\xb3\x12\x09\xc8\xa7R\xe0LN\x82\x10\x02\xc4\xd0P\
+\xe5\xa0\xd7\xa6\xa5DK\xad\x00\xaf\xdd\xbb\x9bk\x84\x00\
+\xbb\xb1Q\x81oSjn\x86xs\xf3\x02g\xf9\xf2\
+/M\xc6\xe3\xdb\xe2\x0f?\xfcYGJ\xe8\xc3\xc6\xd9\
+\x01\x90\xa5{\x82H\x10\x0b\xb3\xfb\x83t\xbe\xa5\xa5N\
+\xc4b-\xf2\xado\xfdj\xeb\xce\x9d\x0a|'\x99\x84\
+\x98\x10\x9e\x1b$\xb8\x8eSS\x15/\xab\x0f0\xff\xcd\
+\x1a<[\xd6\x80\xd4BJ\xb0\x1a\x1a\x08x\x22\x00\x11\
+A\x11\x22\xbe`\x01B!\xdf7\xd4\xdf\x9fm:p\
+\xe0s\x88\x9d;89\xe9.\x02\xc8\xcb\x00\x7f \x16\
+f\xf7\xf1d<\xe58\x8d\xd6\xb6mw\xb4^y\xe5\
+\xfb\xe9!\x22\x1eW\x0ct\xf1\xe1n&\x03\xaeeA\
+l\xf5jX\xb8p!\xc4\x17/\x06\xc0\xe3*Hm\
+[tm\x9f_\xf3\x86\xe0&\x93J\xed\x03\x99\xe0T\
+\x8a\x9cB\x10\xd9\xac\xc2\x830\xaa_\xb5\xea\x03c\xe7\
+\xce=\xddt\xf6\xec\xfd\xf5\x08\xbe\xc7\x17\x90%\x11\x80\
+\xfa\xf4m\x08\xe5tSS\xa2\xae\xb5\xb5M\xae\x5c\xf9\
+\x19\xab\xbe\x1e\x1cT)b\xd92\x80\xae.\x10\xf8\xb0\
+&\xb4A\xa2\xb5\x15&{{!36\x06\xd3\xd9,\
+1\x10\xe6\xa4\xb6BX\xc4\x10\xe8\xe6\x8e\x0e\xa8\x9f7\
+\x0f\xb2##\x90A?L\x9e:\x05\x12\xc9\x11\xc7\xc6\
+(\xdb\xdb\xff,\xd6\xd3\xf3H\xb2\xa9)\x8d\xb8\xe5\xc6\
+\x02\x1c\xc2X\x10\xf3\x86\xe8\x9c\x94u\xa9\x85\x0b\xdf\xd3\
+\xd2\xd6\xb6\x84\x98\x96ok\x03\x81\xaa\x87\xfa\xfau\xd8\
+\xeaGN\x9e\x84\xd1'\x9f\x04\xe9\xba0'\xbf|\x19\
+C\xc0\x9b\xb1A.\xbd\xf6Z\xc8\x0c\x0f\xc3\x94m+\
+s\x1cC\xcd`\xcf\x9b\xd71\xd4\xde\xfe\xdb\xed\x03\x03\
+\xf7\x01@f\xed\x8c\x19\x00Q\x8a\x06\x18\xa3\xd6\xdf\xd8\
+h\xa3\x9dO\xe4[[o&\x80S\xd8\xba\x01S\x0c\
+\x1f\xd4\xb0f\x0d\xf4=\xfb,$\xcf\x9f\x879\xf9\xd5\
+\xcadO\x0f\xd8h\x0e\x16l\xd8\x00\xe3/\xbf\x0c\xd3\
+\xa8\xa5\xed\xe9i@\xbf\x0d\x9c\xfa\xfa\x9b\x11\xc3\xef\x10\
+\x96c\xa9\x94\xd5\x06\xe0Fj\x80/\x00\x88\xdd\x98\xb2\
+\xaek\xa3mI\xb8 \xb7`?\x1fr\xe4\xf8\x0d\x0d\
+);?\x8e\xc0\xd3\x83\xe7\xe4\xd2\x90\xf1\xd3\xa7\xa1e\
+\xc5\x0a\xb2\xfd0\xf6\xfc\xf3\x90Es\x9cH\xa7\xc1\x11\
+\xe2*\x07 AXN\x03\x88\xff\x8a\x89\x94|(\x01\
+\xfe\x92\xbc\x7fL\xf5\x96e\xb9R\xc6\x9ct\xa6u\xa2\
+\xfb\x08@C\xa3\xf2:\x1b\xd7\xaf\x87\xe1\xe3\xc7\x01\xe6\
+\xd4\xfe%#.b1~\xe6\x0c$\xd0\x1f8\xbfw\
+\xafr\x0e\x85\xe3\xc0\xc2\xa6\xa66\x89\x18\x12\x96\x08\xb4\
+ l?\x1fB\x00\xc3(\x00\xd1h\xdb\x16\xe4\xf3\xb1\
+\xa9\xfe\xbe\xba\xb1\xbe~\xd02\xff\xfd\xef\x07'\x9f\x87\
+9\xb9\xb4\x84\x9c\xf0f\xd4\x02\xd3\x14\x9f)\x98\xe6\xfa\
+e\xcb\xea\x00\x09\x80\xe6\xc0\x22L\x17\x95\xda\x0d\x14\x98\
+\xf2R\x0a\x89\xbb\xd3\x93I\xc50-\x0e\xc0\x9c\xd3w\
+\x09J\x1eU>\x8e\xc7\x80@\x7f@\xcbT\x12\xb1S\
+a\x03)D9\x91\xc0v\x001N7Ii\xe5\xd2\
+i\x7f\x1f4\x93\x99\xeb\xea]\x82\x22\x1d\x07t\x840\
+W\xc8\xcb\x12v3\xa6\x5c\x10\xa6e\x85\x82]Pw\
+\x88<\xaa{9\xebAs\xf0_rb\x1a\xa5\x10\xa0\
+\xf1!\xec\xdcDBp\xbc\xa2}\x00\x05>%\xaf\xfa\
+\x879\xf5\x7f\xe9J\x11\x5c\x1c\xcc#\x0c\x01\x13a:\
+\xbf\x14\x02\x9c\xc24\x8d\xa9\xb1@\x00\x1f\xf8\x05\x02\xcc\
+Q\xe0R\x13\xd30\xa5\xd1\x00j\xab|\x00L)\xc2\
+\xb6\x14\x02\xf4`ZP0\x01\x16\xfe/\x01j\xaa\x01\
+\x1cL\x8f\x9f=\x0b\xcf\xbe\xf6\x1aLb\x00\xe3\xf2%\
+K\xe0\xb77n\x84\xc5\xe8\xcc\xfc:I?\xda\xe3\x1f\
+vw\xc3\x99\x81\x01hE;\xbd\x03\xfb\xec7\xad\x5c\
+\x09vU\x09\xc0:\xfa\xb4o\xb9\x1a\xdbRM\xc0<\
+LycW\x8cTY\x03\xd03\xee{\xe9%\xe8\xc5\
+.LKK\x0b,\xc6q\x85!$\xc1?\xfd\xecg\
+\xf0\xc1\xed\xdba\x0d\xe6\xfd:\xc8q,\xdf\xfd/\xbc\
+\x00\xf5\x18F_\x82\x04w\x1c\x07\x0ea\xf0\xe6,\xc6\
+\xf0?\xbce\x0b\xc4\xaa\xe4\x03\x88\x82\x060\xe0\xab\x13\
+`\x170\x1d.\x95\x00Y\x00\xea\x01\x08\x04\xdab\xa3\
+SU\xd2\x009L\xf7\x1f;\x06yl\xe9\xef|\xe7\
+;\xe1\x8a+\xae\x80:\xdc\xef\xef\xef\x87\x17\xb0\xb2\x1e\
+:z\x14nCM\xb0\x1a[\xcb\x1bYNNN\xc2\
+\x0fO\x9c\x80-W]\x05\xdb\xb6m\x83\xc5\x18IM\
+\xa368\x81y\xcfc\xd4\xee~,\xe7\x1d8\xb8\x16\
+\x93\xf2b\x09\xa01\xf2m\x09C\x0b\xb1$L\xa1\x0c\
+\x02@\xbc\xe0<\x143\x01\xb2\x0a\xe0\x7f\x17\x072\x00\
+#\x8b\xef\xba\xf9f\xb8\x0a+\xa7\x09\xc7\xb4\x85\x10\x8a\
+\x08\xabq\xa0i\xdf\xbe}\xf0#\x8cm\xff\xd6\xda\xb5\
+\xb0\x0aG\xbf\xde\x88r\x1a\xe3\xf2\x8f\xbc\xfa*\x5c\xbb\
+c\x07\xec\xda\xb5\x0b\x96\xe1\xc0M,\x16#\xb0T9\
+\x97/_\x0e\x8f=\xf6\x18|\x17\x07\xd5\xde\xbbf\xcd\
+\xc5\x91\x80\x1c\xbe\xe2C\xc9\xc2\xc5\x94+wF\x90\xf0\
+ld\x15\x09\x90G\x90\x1fB{O\xc3\xc8\xb7\x16\xc0\
+o4\xad\x5ci\x81\xcb.\xbb\x0cn\xbd\xf5VUY\
+{_y\x05~\x03\x8fW&\x12\xf0F\x923h\xca\
+~\xf2\xfa\xeb\xb0\xfd\x9ak\x14\xf8\x1d8tk\xdb\xb6\
+1\xb3\x18\xb6\xdd\x8ef\x8e\xcaH$\xf8>\xfaA\xef\
+Z\xb9\x92HP\xb9\x0f D\xb1)v\xa2\x82I\xa1\
+\xc6{\x94U$\x00\x81\xff#\x1cD\xb2\x10\xfc]o\
+{\x1blA\xfbg\xc07B\x15E\xad\xe5\x96[n\
+Q\xfb\x8f\x1d>\x0c\xb7tv\xc2\x0a\xac\xac7\x82\x9c\
+\xcdd`?\x9a\xb2m\x08\xf0\xdb\xb0\x9cK\x97.5\
+\xe0\x1bQZo\xeb\xd6\xad@\xb2\x7f\xff~\xf8qo\
+/\xfc&\x96\xdbv\xdd\xaa\xf5\x02\x1c\xde\x9b\x8b&@\
+\xbd\x0e\xf9V\xd1\x04\x10\xf8{\xd1\x03\x16\xc8\xfc]7\
+\xdd\x04\x9b7o\xf6\x83\xcfI\xa0Z\xcd\xce\x9d;\xd5\
+\xfe~\xf4\xa0w\xa2\xfd\xec\xb4,\xb8\x94\xe5\x5c.\x07\
+\x87p\xc8|\xeb\xd5W\xc3\x8d7\xdeHN\x9f\x01\x9f\
+\x0b\xd5\x81\x22\x81\x85\xe5:x\xf0 \xec\xc5\x89\x1d\xef\
+X\xb4\xa8l\x12\x18\x87\x9d\x9b\x00A\x98\x96J\x80U\
+\x05'P1G\xcab&\xa0\x22\xf0\x1fC\x8f\xd7B\
+\xf0oz\xeb[a\xe3\xc6\x8d\x0c\xfc0\x12PE\xd2\
+\xfe!t\x98n\xc4YH\xcb\x84\x80KQ^w\x1c\
+\xf8\xf9\xf8\xb82k7\xdcp\x03\x03?\x8c\x04\xa4\x0d\
+\x89\x04\x87\x0e\x1d\x82}\xa3\xa3\xb0\x0b\xeb\xaa,\x12\xe8\
+k\x85\xf0;\x82\x88a\xbe\xa0\xcdW\x95J\x80\x13\x98\
+\x5c\xea>\x04\x98\x80r(@*\xe9 MR@\xe0\
+\xa8R\xba\xba\xba\x18\xf8\xa5\x90\xe0\xadH\x1c\xaa\xa0'\
+q(\xfaz\xec\x1e.\xbd\xc4\xc6#\xceK\x09O%\
+\x93p\xe5\x95W\xc2\xf5\xd7_\xcf\xc1\x8f&\x01iE\
+\xe5\x08?\x89\xb3\xac\x0e\xa5Rpc}=\x01[\x96\
+\x06\x90|\x22\xaa(`\x09\xe1\x04\xe0'\x84S\x85@\
+\xd0kX\x08\x0b\xc1\xbf\xfeMoR\xe07`_\xb8\
+\x5c!\xe0\xa9\xfbD\x04\xa2J}\x06\xbbP;\xa8O\
+\xed8\x97\x06\xf8\x98\x9eE\xbb\xbf\x09\x01|\x13\x96\x13\
+\xdf\x95\xde\x99@!@\xcb\x22\xc1\xa6M\x9b\xd4\xbdO\
+?\xfd4\xf4\xe0v96\x9ep\xe1\xb8H\xbf/g\
+\x11\x96e;\x81\xf9\x5cN;\x0f\x17\xa5\x01\x12\xe8\xc1\
+_\x8f\xdd\x9du\xeb\xd6U\x00\xbea6\x01\xbf\x08m\
+\xe3u\xd7]\xa7*\xe89\xecF^\x83N\xe1\xc2_\
+\xf1\xdc\x84\x0b\xf8./\x22\x117\xa0Y\xbb\xf6\xdak\
+\xe9\x1d\xbd\xe0WD\x82\x0d\x1b6\xa8\xf2\x8e\xe0\xb8\xbe\
+\xdb\xdd]\x1e\x01x\xdcF\xe41\xc5\xcb!\x00q\xae\
+\x0e\x13\xeb\x05T\x10\x08\xba\x12\x9d\xa1y\xed\xedP_\
+__\x09\xf8\x8c\x044\xfd|\xc7\x8e\x1dj\xffE$\
+\xc1V\x22A6\x0b\xbf\x0a\x19\xc0g\xbf\x8c\xdb\xf5]\
+]\xd4\xa5S\xef\xa6A\xd7[-\xe5\x92`=\xce\xbc\
+\x9aD2\x0d`\x0f\xa8$\xd1D\xe3f@\xe5N\x95\
+\xab\x01\x94\x13X\x85^@\x13\x82Ca^\x0a\x7f\xba\
+\xae[!\xf8&O\x93\x80*\x9cZ\xdaa\x9c\x0a\xb5\
+9\x91\x80\x05\xe94\xfc2e\x10\x9fy\x04\x09\xb0~\
+\xedZ\xe5\xc5/X\xb0\x80\xde\x87\xbd\xb3!\x82\xda/\
+\xd9\xe4\xb5bW\xd9\xe9\xef\xa7\xfa.+\x0e`\x86\x83\
+\x0d\x01\xdcrM@KaDPV!\x10\xd4\x8f\x11\
+\xbd\xc5\xd8B\xe2\xf18\x85@\x89\x04e\x82\xcfI@\
+\x15D$\xb8\x1a\xb5\x0b\xed\x1f\xc3 \xca\x06\x1a\xeeD\
+\xc7\xe9\x97!C\xa8\xcd\x8ec\xbab\xf5j\xe5\xbd\xb7\
+\xb7\xb73\xa0=Z\x80\x9d\x8b\x02_iK\xbc\xbe\x1f\
+c\x03\xb2\x02'\xd0l\x0d\x86-\xe5\x10 W\xe86\
+\x08)/:\x104\x85v\xec\xd4w\xbf\x0b]\x1f\xf8\
+\x00\x15L\x93\xa0b\xf0It\xa5R\xab\xa3.\x17U\
+\xdaI\xfc8u\x1d\xe6\xcfC\xa7\xa9\x962\x82~\xcc\
+)\x0ca\xafY\xb5Jy\xed\xf3\xe9\xe3\x18!\x02[\
+~\xb4&\xe0\xe0St\xf0\xd8\xfd\xf7\xc3TooE\
+\xdd@\x1ff\x84!>0W\xceX@\x0a\x93M\xa9\
+J\x81\xa0\x81\xe7\x9e\x03\x81\x85[\x7f\xc7\x1d\x8c\x04\x0c\
+\xfc2I@\xad\x8f\xba^d\x1a\xce`\xe8u5\xe6\
+\xb5NL@-d\x0c#w\xaf\xb6\xb5\xc1jtl\
+)\x96\xd1\x86\xfb\x1e\xf0\xc3\x81\xe7\xfb\x81\xe0\x9fx\xf0\
+A\x18x\xe6\x99\xca\x22\x81\xc5\xc7\x02 U\xae\x06\x88\
+\x11\xf8\xbc\x1bH\xc0U\xe6-?\xf5\x94Rk\xeb\x7f\
+\xf7w\x19\x09\xca\x04\x9fU0\xb5B\xdd}:\x87\xa1\
+\xe6\xcb\xf0|\x0b\x06d\xaa)\xe3\xe8\xc7\x9cC\xb3\xb3\
+j\xc5\x0a\xea\xceR,?\x08|\xb6\x0d!\x01\x07\xff\
+\x81\x07\xa0\xff\x17\xbf\xa8|>\x007\x01\x16\xe6\x95\xae\
+\x01\x9e\xf38\x81v\xb1\xd0\xe2E\xcc\x07\xe8\xc3\x82\xd1\
+\x8bv}\xf0\x83^\x12T\x02>\xabx\x02\x84\xbaO\
+T\x99\xbdX\x91\x9dx\xae\x09\xc7\xe1\xab!I\xfc\xed\
+^\x8c\xe7\xaf\xec\xec\xa4\xee,9h\xc1-\xdd/\x91\
+$ \xcd\xa5\xc1?\x8ej\xbf\x0f\x83@\x15\x89\x94^\
+\xf5\xcf\xc6\x03\x14\xb6\xa5j\x80D\x81In\x0df\x04\
+\x11\xbb\xa9\xf0\x1b>\xf4!M\x02\xea!P^\xe5~\
+\x81\xf1\x9c\x09 U\xa9\xfdX\xa1\x1d\xd4\xa5\x1a\x1d)\
+\x7fU$\xe9\x05\xbf\x0d\xfa\x11\xf8\xe58H\xb3v\xed\
+Z\x0d>{~\x08\xe0\x81\xe6\x80\xde\x99F?\x95\xcd\
+\xff\xcew\xa0\xff\xe7?\xbf\xb8\x09!\xbc\x17\xa00\x14\
+\x05Le9\x04\xc8b\xb2\x00D-f\x04\x11\xcb\xe9\
+\x857~\xf8\xc3\x8a\x04\xd3\xd3\xd3D\x02\x06ri\xe0\
+s\x12\xacY\xb3F\xed_@\x22,\x01\x09\x8d#\xc3\
+\x15}\xef=5\xbf\x1d\x06/[\x05\x9d\x18\x8a^\x85\
+N_sss1\x13\xa4\xf3J6\x01$\x1a|\xea\
+\x1d\x1d\xfb\xf6\xb7\xe1|(\xf8\x95G\x02\x89\x12n\x01\
+\xd3L9\x1f\x86\xc8|^\xb8\xb6-\xcc\x8fVwN\
+\xa0b;\x91\xe0#\x1fQ\x11\xc2T*E$\xa8\x10\
+|N\x82\xcb/\xbf\x5c\xed\x0f\xc6l\xd5\x04\xea\x87\x06\
+C\x14\x00\xe7\xc7t\xfbB\x18^\xb3\x16:\x16/\xa6\
+\xf9\x09\x14\xcb\xa0\xdfc\xcf/\xc7\x04\xe8\xfb\xb4\xcdO\
+$\x12p\xf4[\xdf\x82>\x9c\x02w\xb1\x22\x03\x06\x83\
+0W\x10\x96\xa2\xfc\x09!zF\x10'\x80\x84\xea\x88\
+*8\xfe\xde\xc6\x8f~\x94H@\x9a\x80\xe6\xb2W\x02\
+>S\x85\x04\x18\x01G\x95=\x1c\x8bC;H\xa8\x1f\
+\x1c(iE\xac\xd4\xc2E0r\xc5zX\x82\x91\xb8\
+\x15+VD\xb5\xfc\xb2m>E\xfa\x08\xfc\xeeo~\
+\x13\xfa\x9ex\x02\xb8T\xee\x03`\x81\xfd\xf8T2\x1f\
+\x80 p0\x05G\x02\xab'\xe7\x91\x04T9\x9b~\
+\xff\xf7iK\x9a@\xf7\x0e\xe8\xf8\xa2\xe2\x04\x04\x1c\x01\
+H$\x18\xb5I\x13\x1c\x81\xc4@\x1f\x84Iz\xe1\x12\
+\x98\xdc\xb0\x19\x96,\x5cH\x93R\xf4T\xb5\xa0\xf7)\
+\xcb\xfb\xa7\xf7\xa0\xdfS\xe0\xdfw\x1f\x9c/\x1b\xfc\xe8\
+H\xa0\xe0>\x80\xc20_\x0e\x01\xd2\xd4\x0d,t!\
+X$PJ\x95\xaa)T\x11\xf4\x9b\x9b\xff\xe0\x0f\xe8\
+\xd0k\x0e*\xf6\x0bH4\x09h\xee\x1d\xb5\xbcQ4\
+\x07\xf3\x0eK\x88\xf7\x9f/\xba\x1cYfI\x07$7\
+]\x05\x8b\x10|\x9c\xc5C-\x95\xa9\xf6\x88\xae_\x10\
+)\xe8\xf9\x06\xfco|\x03zq\xdc\xbf\xaa\xe2q\x02\
+gafY\x1a\xd3r4\x805k,\x80\xb6\xc2\xb6\
+k\xf6u\xd0y\xaa\x10\x22\xc1\xc7>\x06$SSS\
+D\x82\xca\x9dB#d^hN\x81j\x81\xe3Wm\
+\x87\x16*x\x7f\x0fx%\xbbd\x19\xa4\xf0\xdc\xc2\xf6\
+v\x1a\xce\xa5{\x82Z=\x039*\x8f\xbc|\x02\x9f\
+\x9c\xbe#\xf7\xde\x0b\xbd\x07\x0f\xd6\xe4\x13qEjK\
+\x14\x9d\x14J\x98\xc6\xca]&\xae\x90\xfc\x5c\x92\xb2f\
+\x9f\x87Q\xc5\xd0o_\xf9\x89O\x00I2\x99\xac\x0a\
+\x09\x08\xf8\x86\xc2\x9c|\xda\x9f\xd8\xbe\x03\x1a\x9f\x93\x10\
+\xeb{\x1dHr\x1d\xcb!\xbd\xed:hok\xa31\
+\x06r\xd0\x02\xc2\xb5\xac\xe5G\x9a\x00z\x1ei!\xfa\
+\xcd\xc3\xf7\xdcS\x0b\xf0\x8d\x0f\x00\x82\x22\xae\xcc\x04@\
+\xb9>@ca\xea\xf6\xec\xf9\x00\xc2\x125\xd3\x00F\
+\x13`\x05I$\xc1\x9d\xbb\xa9\xd5h\x12T%XD\
+ \xe8\xf1\xfa\xe4\x8e\x1b\xc0z\x86L\x0f\x96u\xc7[\
+\xa0\xad\xb5\x95\xc2\xca\x1a\xfc0{\x1f@\x04v\x1d\xa9\
+}rF\x0b\xe0\xdf\x0d\xbd\x07\x0e\x18\xac\xaa\xaf\x02H\
+e\xb38\x80\xd6\xe2\x84\xa9[\xb2\x09\xf0;\x10&\xc6\
+,,pi\xaf\x16\x04\x10f\xd3\x87$\xa0\xedf$\
+\x81\xd6\x04\xd8;\xa8d\xf8\x98\x81Ej\x98\x06\x91\x08\
+\x9c\xa9\xeb\xdf\xa6\xce\xb5\x22H\x14\xd7\xa7s\xfa\xfa\x08\
+\x89\xd4\x02\xa4\xf6\x09|\xd2<G\xee\xd9\x03\xe7\x0f\xec\
+W\x95)M\xc0\xbe\xaa\x22u/@Xlv\xb7\xd0\
+f\xbdd\x02\x18\xb5a\xf9\xd8dY\x98I\x0c\xab\xbe\
+({\xe3!A\xff\x13H\x02\xcc\xdc\xf4\x89\xbb\xa8p\
+\x86\x04\x95;\x85\xb4\xafI@\x80\xeb~=\xc5\x0d\xc8\
+9+e\xbc\xbe\xa4p/\x05w\x14\xf8\xd8\xf2\xbb\x11\
+\xfc\xbe\x83\x08\xbeg)\xdc*s\xc0\x94\x8d~\xdd\xe2\
+\x91@(\xe0\x99\xa8 \x0e\xa0Dz\x08 \xabl\x02\
+\x84N\x9e\x07\x8aBm\xf5\x1f:\x00\x82\x82Ew\xfe\
+!\x90LNN\x96J\x82\xa8<\x02\x9cH\xa0[k\
+\x98\xe9\x882\x03\xcc\xe1#B5b\xcb\xef\xfe\xfa\xff\
+\x82~l\xf9\xde\x89\x15R\xfa\x9d,\xb7z\x0c\xf08\
+\x81\x5c\xb1\xcar|\x00\x07\x93\xadv\x1c\xcb7\xb0\xa0\
+|\x00\xb7j\x04\x10^\x06H\x93g\x9a\x0a\x91\x80*\
+\x10\x83E\xbb?\x09\x9a\x04\xb9\x5c\xae\x1c\xf0\xc3\xc0\x8a\
+\xea\xda\xb2\xfc \x22h\x9bO\xa4\x22\xf0\x8f\xde\xf3?\
+\x14\xf8$B\xdb}\x93\xfcj\xa0\x0a\xda`\xe9\x8e\x1d\
+Eq\x91\x88\xa1\x82\xb2\x1c\x02d0\xd5S\xf9\x8a\xf6\
+\x02p{\x91\xc1 1{G\xf2}\x01&\x0d<\xb1\
+_\x9d\xd0$\x98\x98\x98 MPi\xb0(\x1a\x5c\x1e\
+O\x08#\x85\x0f\xfc\x06\x02\xff\xee\x7f\x86\x0b\x07\x1f\x07\
+\x0d\xbc\xb6\xfd\xc2\x0f\xbe9W!\x09h\x95\xd0%\xf8\
+\xe9\xd9\xe2\xed\xd8\xb5]\xb9\x12\x06\xf0c\xd3\xe1\xeen\
+6%\x8c\x12a\xdaP\x0a\x01\x86\x0b\x01\x03\xcbt!\
+@\x9a\x82V\xcd\x04\x08\x13k\xe6\xea\xdf\xf7\xd0\x99\xfd\
+\xc1'\x1e\x87c\xb8\xd3u\xe7\xa7\xc8h\xc3\xf8\xf8\xb8\
+&A\xa5&!\x8a\x08\xa1\xa3z\xfa\xbc\xd6$4'\
+\x81\x02G\xc7\xef\xfe'\x188\xb8\x8f\xa9}U\x8c`\
+\x0dP\xb2-\xa0%b\x17\xe1,\xa8%\x08z\x1b\x8e\
+Nf\xb0\x1e\xce>\xfc0\x9cz\xe8!\x98\xec9\x07\
+R\xba\x8c\x00\xda\x09 l#\x090N\xea\xc4L\x0a\
+\xf5\x93\xd6\xb6*\x0e\x07\xfb\xb4\xbd\xd0\x15\xe2qZ\xa5\
+\x87\x04\xbeD\xa25\xc1>\xaa)$\xc1\xbf\x06iH\
+p1NaI$\x08\x13r\xf84\xf8'\xef\xfe\xef\
+\x04\xbeQf\xd2\xef\xe4rm0\x8b nq\xe7\xb0\
+\x19\xa3\x92\xed\x1b7\xaa\xd5@[q\x90\xcb\xc11\x93\
+\xd7\xb1K\xf9\xf4W\xbe\x02=8o\xd0\xc9f\x89\x94\
+\xa8\x05:qk\xb1U\xdf\x09\xcbx\xa9\xeb\x03Lb\
+ZU\x98\x14j\x151\x01\x12.2\x10\xa4\xc0\xd7\xd4\
+d\xc0\x1b\x8f\xc5\xf2\x94@\x18]6\x84$8\x8e\x07\
+\xeb\xee\xfc7\x80B$ \x9f\xa0\x1a$\x88R\xf3\xec\
+\x1c\x82O\xb1\x03\x8aW \xf8\xff\x88\xe0\xff\xd4\x00m\
+\xd4\xbf\x12\x03\xbe\x1fx\x90\x5c\x13$0p\xd4\x8a\xc3\
+\xcf\xf3\xb0\x85/\xe8\xea\x82:$X\xb2\xb7\x17z\x10\
+\xf4\xd7\xbf\xf8E\xe8\x7f\xea)\x02\x9d\xd7+5P\xab\
+\xe8\xac`h lK!\xc0\x94\xf1\xcd\x84\x89\x03\x98\
+@P\x85\x91@\xfd\xa3\xfe\x0c\xc9}\x00\xf3pn&\
+4\x11\x86\x0eaE\xe3\xce\x15w\xfe\xb1\x02C\x93\x00\
+\xa5\x9af\x80\xf2B[>\xc5\x13\x9aT\xcb\xff\x07\x18\
+:\xf0\x98&v \xe0\x9a\x1c\xca\xbcz\xce7.Z\
+\x0c\xcd8\xef\xa0y\xf9Je\xcb\xeb\x90T\xf9\xa9\x14\
+\x0c\xe0\xea)\xaf\xec\xd9\x03=\x07\x0f\xd2\xc2\xd0%M\
+'wY$PW\xa3\xc16\xda\x09,\xd4?\x9b\x10\
+b\x19\x13P\xbe\xcd\xe7N\xa0\x06\xd7\xa8\x1a\xa6\x1d\xfc\
+d\x11\x052\x00\x91\xe01*\x1e\x92\xe0\xdf\x01\xc9\xd8\
+\xd8\x98!\x01\x97\xaa:\x85\xd4\x85\xd4\xe0\x9f\xbe\xe7\x1f\
+`\xf8\xe0O\xfc:7\xc0\xd6+\xf0\xd1_h\xec\xe8\
+\x84\xc6\xce\x15\xd0\xd4\xb9\x12\x9ah\xa0\xaa\xa1\x11\x01\x9f\
+\x82!\x5c\x0b\xe1\xd87\xef\x83\x0b\xcf=\x0fCG\xba\
+\xc1\xc9\xe5\xcbjb\x82\xf0\xb1<\x9a\xca\xd3\x962\xa5\
+\xce\x09\x5c\xab\xb16A\x04\x1f\x8a\x13'O\xc0\xe4D\
+\x12\x12-\xad\xf4gJ\xe8\xa1\xd1\xcc\xd4\xff0\x80\xf5\
+\x83\xf4\x89Y*\xdf\x00\x8e\xfb\x9a\xce&\x7f\x04Ip\
+\x0a$\xac\xbd\xf3O@\x93 \x9b\xcdF\x9b\x82\xca\xcd\
+\x80i\xf9MM\x08\xfe\x7f\xc3\x96\xff\xa8GMj\xa0\
+\xb5\xc3\xd6\x04\x89\xb6v\x88\xcf\x9b\x0f\x89\xf6\x85\xd0\xb0\
+t\x194,\xe9P\xc5N\x9e{\x0dF\xbb_\x863\
+\xdf{\x10F\x8f\x1d\x85\xb1\xd3\xa7\x11pG\xdd\xebJ\
+]\xd6\xb2\xc2\xc6\x84\x05%\x16\x08\xb24\xb6\xa5\xc7\x01\
+\x8c\xc8Y\x04\x98\x1e\x1c\x84\xd1\xd7z\xe8A\x8a\xcd\x89\
+\xd6\x19\x22\xc4\x1a\x1aT\x8a75\xd19?\xf8b\x96\
+j\xd4\xa0[\xb3T=\x8b\x0e\xfa#R\x8a\xdc\xd2\x1f\
+\xe4\x1e=\xf4\x138\x8d\x99\xab?\xf1'\xaa\x1b6<\
+<\x5c\xc9\xcc\xa2H\xb3\xa0\xbd}\x0d\xfe\xab\xf7|\x0d\
+F\x0e>\x0a\x16\x16&\x86\xf3\x06c\xd8 b\x04\xf4\
+\xbcv\x88\xb5\xb6A\xbc\x0d\xc3\xcdu\xf5\x90\x1d\x1b\x81\
+\x14\x0e?\xa7\xce\xbf\x0eC\xcf<\x09\x13gN\xc1\xf8\
+\xa9\x93\x90\x9bN\x83\x06\xdbU\xb6\x96\x90*\xecke\
+\x8b\xfb\xaez\x8f\x92\x09\xc0\xc6\x02X\x07\xa34\x02\x98\
+\x86f\x88`\x9c@\x17U\xad6\x039T]V\x22\
+A\xeb\xd4\x12!\xd4\x90q\x1cU\xa3M3]\xeb\xeb\
+ \x86\xf9v]\x0cbxM\xac.A\x8e\x8ai\xc9\
+\x8a\x04\x5c\xbd\xebd\xc07&\x82i\x05 \x12<\x0a\
+\xa7\x9d<t|\xe4\xd3d\x07\xd9\xb8A%\x91B.\
+fR\xc7\xe0\xc1\xbd`\xe5s\xb0\xf4\xd6\xf7@\xbc\xa5\
+\x0d\xa4\xeb@z\xf0\x02\xa4\x07\xfaa\xe2\xe8K\x0a\xf0\
+\xe9\xf3\xbd\x90\xea\xeb\x85\x5c*\x05\xb2\x00\xb2\xda\x16\x12\
+\x91Y\x17\x1f\xd4\xbe.\x93\xc7G\xf08\xcc\xa5p\x80\
+\xea\xd64>\xe3z\xa8T\xee\x22Q\xf5\x1a\x13\x1f\x01\
+\x04=\x84\xcdDq\xd2i\x95\xb4\xa4\xf1%l\x04<\
+^\x8f\xa0c\x8a\xd7\xd5\x11\x190\x0f5FC\x03n\
+\x91\x144W\x8f\x92%\x0al\x93\xba\x99c\x1em\x0a\
+6\xadP(\xa3%x\x22y\xf5\xf4)\x189\xfc\x0a\
+,\x5cd>\xcd\x8eP\xefl\x1be\x02\xc8\xbc\x9c\xc5\
+\xcf\xd0\xd2\xdd\xaf\x80\xf5\xdc\x01\xc8\x10\xe8\x17\xfa 3\
+<\x00n\xde-\xc4Hf\xc0\x93>\xa0M\xeb\xd6\xb5\
+\xe7j\xa0=\xa0\x83\x97\x0cZ;\x16\xf2\xa4,\x85\x00\
+|J\x98\xe6P\xa6\xc2?\x1b\x07l0\xc8\xb6K\x9a\
+\x9e\xe4f\xd3\xe8\x94!1\x92\x009KOW\xa3$\
+f\x88\x81\xa4 \x22\xc4(\xd1q\xa2@\x12\xcc\x07\xcc\
+\x13q\xd2&D\x06L\xb1\x19scS\x9eecR\
+\xf9\xb4U\xfd\xde\x13N\x0c\x1e\x1eq\xe0\x86\xee\xa3\xb8\
+8C\x1b\xfb\x12\xb9r\x7f\x80\x9f\x1b\x18\x18\x80G_\
+\x1b\x82\xf5'O\xc3\x8a\xf3'\x11,\xa3\xbe\x15\xe8T\
+F\x0d\xbekZ9#\x81O\xdd\x9b}a\xd1}\xfe\
+\x9e\x91k\xe2&\x11&\x80O\x09\xd3Z\xa0\xf2\xbf\x1c\
+\xea\xd7\x00\x94J\x8f\xf2\xd1V\x83\xaf\x13H$G\x06\
+\xf2\xb9\x8c\xaa,\x07\xf3\xb2\x9a\x1c\x82\x92!\x8b(v\
+L\xe0\xdbJ{\xa8\xd4\xdb\xd9\x05{\xdb\xd7\xc1e\xab\
+\x96\xc1\xca\x95+\xc9N3`\xab\xe5\x14\xea\x91\xc3\xf5\
+]\x1b\xe0\xe9\xb1qU\xc6\xe5}'u%k\xb0\x8d\
+\xf3_8\x90\xae\xb6\xc5Av\xde\xdf\xe5\x05\xe1\xd1\x00\
+\xa5\x9b\x82B/ \xc0\x7f\xab\x94\x00\xd2\xbb\x15V\xa4\
+\xd7/\xc0\x03\xb6!\x02O\xe6\x9c\xb9\xd6\x80\xed\xcf\xb7\
+\xccy\x22\x90p\xf3\x00\xb9<\xbc\xbex=\xfcta\
+\x17\x5c\xbe\xearZB\xc6\x10\x80\x83Y\x09\xf8\x81\xd3\
+\xcb\xe8\xa3P\xca\x7f\xa6\xa0\x85\x96\x9f?\x81\xc7\x1al\
+M\x04\xcfV\xb7j\x9f\xca\xf7\x01o\xda\x15\x11\xc4\x00\
+\xef#\x82\x14\xe1\xa8\x8aB\x85\xc9*\x13\xc0H\xa1\xc0\
+!\xc2\xe2\xb9\x82'C\x10\x03\xac\xaf\xb5s\xf0\xb96\
+\xe8]\xb6\x1e\xf6_\xb6\x03\xc1_E\xe0\xd3\x14p\x05\
+~I\x12=\x88\x14\xda\x15\xd4$ _\xe3\x19a)\
+0;\x91\x04\xbeV\x8f\x09\xbcdP@\x878}\xfe\
+\x16\xcfM\x01]\xa4\xfd\x8b\xd0n\xa0`\xe7+%\x00\
+'\x01!`\x8b\xa8\xd6o\xd4\xb9>\xd6\xc9\xa7\x0d\xb8\
+\x99\x10^R0\xf0\x8df8\x8fj\xff\xe0\xe5\xd7\xc1\
+*\x04\xfd-oy\x8b\x06\x9f\xc0\x8a\x021\x0a\xf4\x92\
+\x9dG\x8a\xfd\xd3\x17\xc2$\xcf\x14^\xba\xb3\xe7\xb8\x01\
+\xdc\xa7\xe2\x0d\xa0f\xdf\xeb\xf4\x05\xb4x\x03<\x0b\x8a\
+q\xd1\xa1`\xabv&@h\x14\x22\xc7y=\xac\x15\
+\xde\xe3\x00\xff\x00\x8a\x98\x81\x00\xf0\xfb\x96w\xc1\xa1\xd5\
+o&\xd0\xd5\xa2QZ\xed3\x09V\xff\x17\xed\x0f\x08\
+!|\x8b:\xd1\xf1s\x85\xd9R\xcbz\x8e\x15#\x81\
+q\xe6\xfc\xf1\x0d\xbf)\xf4\x86\xc5\x85\x0f\x80h-\xa0\
+\xf1\x1154\x01Rw\xcdJm\xfd,\x8f\x1ds\x0d\
+`\xb4\x03\x07\x7f\xc5\x06xb\xcd\x0d\x1a|\xfa\xe8\xc3\
+\xd8\xfc\xf2\xa5\xe2o\x0d\xf4\xb16\x07\x9a\x04\xcf+\x12\
+\x00t\xf8I`\xc0\xf5\xd9yN\x00i\xae1-=\
+L\x0bpbb\xaa\xad\x09\xa0Tn\xeb7y\x22B\
+#P\x0a\xf0\x0f\xfaWl\x84'\xd7\xa1\xad\xc7\x16\xff\
+\xe67\xbfY\x83\xcf\x00\xaaP\xcat\x0a\x0d\x11\xf4l\
+c2\x07\xe4\x13\xbcP\x88Y,}\x9dH`\x1a\x86\
+\x0b\xdc\xb37Q\xd2P\xe0\xa3\xb5\x80\x19\x0d\xc4$\xaa\
+n\x02\xcc\xf3M \xa8\xe2\xd6o\x12\xbfF'1\xcb\
+\x14\x5cX\xb9\x11\x9e\xeaz\x1b\x81O\xcb\xc4i\xf0\xc3\
+\xa6f\xd7\x8a\x10\x0c|\xaf&\xa0\xf5\x09h\xffE|\
+\xe9\xad\xb8]z\xee(@\x80\x83G\xc7\x92\x01\x1d\x05\
+<\xd7\x02<\x0eP\xd3^\x80UZ/@\x04k\x04\
+\xde-\xe4\xf7\x99s\x04\xfe&xz\xe3N\xb2\xf5\xb4\
+\x08c\x90\xda\xaf\x84\x08z%\xcf\xc0\xd0q4\x09\xf8\
+\xc7'z\x91\x8a\x97\xed\x19\x9f`\xf1\xb9n\x05\xbc\x15\
+\x06t\xb4\xdd7y\xfe\x095\xdc\x07\xa8u/@=\
+\xc4\xcf\x01c\xc3\x81\xf5\xed\x99F`=\x00\x11\xac!\
+\x06Wm\x86\xe76\xef\x82\x95+V\xd2\xda\x80\x04\xbe\
+\x06MK\xc5$\xa0Q=\xfa\x0a\x88\xae\x1d\x1c\x1c\xf4\
+\x8e\x22\x86\x80\x1f=c\x98\x1cCZB\x86H\xf0\x8a\
+m\xab\xf2-|\xad\x1bd@\xdf\xde7\xe8\x22B\xc8\
+\xa0\xcf{\xef\x9d}\xdaV\xf8\x98\xdb\xaaj\x02\x8c\xae\
+\x0f\x9a\xd6mR\xa860\x89\xf7\x08\xcc\xf1\xd0\xe5\x9b\
+\xe1\xf9-o\x87\x15\xcbW\x10\xf8\xf4\x81'\xeb\xeaE\
+\x11\xc1\x80\xc5\xc1\xa7/\x84Zp\x14S\x16\xae\xbdp\
+\xe1\x02\x91 \xda\x0c\x18\x92\x153\x05l\xb5\xcf\x97-\
+\x1b6\x82\x80\x85g\x8fxL\x01w\x00\x95\x96(\xe6\
+\x04\xd2\xc6O\x1a#\xb3FG\xad\x82-\x95U&\x80\
+\xdf\xc6\x84v\x03MR\x9b\x08\xff\xc0\x10\xc6O\x84\xa1\
+\xd5W\xc2K[o\xc5\x96\xbfB-\xbf\xda\xd9\xd9I\
+\x95Y\x0a\xc0%\xb7|\x02\x7f\xf0ow\x83\xeb\xe4a\
+\xf1\xe7\xee\x01\x12\x22A&\x93)\xc5/`\xa0\x17\x09\
+\x16\x19M\x10\xb3U\x09\x17\xbcz\xd8O\xf8R\xec\xfc\
+l\xd2\x801'R\xfb\x11&\x0eP\x0b\x13\xc0#M\
+>\xf1\xab\x7f\x03\xae\xc9\x8f\xe8\x1d\xf8\xaf\x1dY\xbd\x05\
+\x0eo\x7f'\x81O\xab\x81\x12\xf8\xe1-\xdf\x80\x10y\
+\x9e~\x87\xc0o\xc6\xf1\xfc\xa1\xff\xb2\x1b\xd2\x8f\xcc\x00\
+?Dj\xfa\xcf\xd4>\xfd\xcd\x22\xa5\x09\xa2G\x07\x03\
+\xbba\x8c\x04D\xdeW,[\xe5\xcd?\xf3\x8a\x0fP\
+\xab\x08\xf0\xd276\x10\xd0\xdb\xf2\x10B\xb2\xe7WG\
+\x03pM \x8c\x0f\xe0\xc3S\x14R\xb4F\xe0>\x82\
+'ot\xed\x16\xe8\xde\xf1\xafH\xed\x13\xf8\xfao\xec\
+D}\x9f\x1ft\xde\xb7\xafg\xf2\x10\xf8\xc3\x7f\xb7\x1b\
+2{\xef\x01\xad\xcc\xb2\x8f\xdd\x07\xc3\x02`\xc1g\x0d\
+\x09P\x13\x04=\x8b\x01\xadS\x10\x09h\xdd_\x22\xc1\
+\xe1\x98\xad\x1c\xc3y\xa7^\x06\xe1\x03\x9e5\x08?I\
+|f $\x12h\xd5\xc6\x070[\x0b\x13\xef\x06\xf2\
+\xd6=[\xfd\xcfV\xf5E\xfc\x83\xb1\xb5W\xc1\xb1\xeb\
+\xdeE\xb6\x9e\xfe\xba\x16\x03?p5N~>t\x02\
+\xe7\x08\x82\x9f}T\x83o$\xf7\xd3\xfb`D\x00\xb4\
+\xff\xa9\x8f\x04L\xcd\xe3~X\xf2M\x1c\xa1\xad&\x01\
+\xad^FyG\x90\x08+\x05\x92\xe0\xe4K`\xcdn\
+\xf1\x8c\x10\xbe\x06\xe4'\x04\x80\x8fD\xea\xbcmB\xcb\
+Jj1\x18\x14\xe9\x02h\xc0!J\xfd\x9b\xeb'\xd6\
+m\x85Soy7\xac\xe8\x5cN\xeb\xff\x12\xf8\xd4b\
+\x18\x98\x95h\x01=u\x9b\xc0\x1f\xfd\xdan\xc8\xfdD\
+\x83\xcf%\x8f$\x18\xc5\xed\xfcp\x120\x90\xa3\xb4\x01\
+%r\x0c5\x09\xba\xed\x98\xd2\x04\xcd\xc7_\xf4:\xc3\
+\xc6\x114\x00\x07\xf7\xf9\x85\xf9z\xd7\xf1\xcf\x09\xac\x9d\
+\x09P\x05\xb3-\xf3>\x82c+|\x19A\x041\xa7\
+'\xd7]\x0dgn\xbc\x8dl=\x81\xaf\xff\xbaV\xb1\
+\x96]\xa6\x160\x1fm\x10\xf8c_+\xb4|\xafY\
+bk\xeb#\x09\xf6\xdd\x07cx\xa2\xed3E\x1d\xc3\
+b\xe0j2Dh\x03C\x02\xd2l\xa4\x09:\xc0\x82\
+\xc6\xe3\xcfs\x80\x85\x1f`\xa9\xb2\x82\x9dEa\xba\xe3\
+t\xae\x96&@\x18V\x82o\xec\x9e\x89)H0A\
+\x92]W\xc3\xb9]\xef\xc7E\x18;i\xc9uZ\x97\
+G\x83_\xb1\xad\xd7\xe7\xcc\xe7Z\x0d\x08\xfe]\xa0\xd5\
+\xbee*\xcbG\x00u\xabE\xfb\x05\x12\x80\x8f\x04\xfa\
+\xe3\x13\x06.\x07\x9f\x93\x02\xc5\xab\x09\xe8o\x06\x164\
+\x81\x0d\x8b\x01\xa0\xe1\xe8\xf3^\x80\xcdVrs*\x03\
+\xd1\x15:\x12\xa8M@M\xbb\x81\x06Ls\x10\x16\x1f\
+`\x92\xea\xda\x06=\xb7\xdcN\xea\x9e\xc0g\x7fc'\
+\xa0UG\x02O\xa2?\xd4\xd4\xe0\xe7\x1e\xbd\xdb7\xc9\
+\x04f\xbf\x97\xd4\x0b``\x92\x9c\x04B\x08M\x02\x03\
+fx\x0a\xd5\x14\xda' \x92vcj\xa7\xf1\x84\xc3\
+\xcf\x85\x03\xac\xdf\xdbx\xffL\x84\x1e\xaeW\xe5\xa8\xb2\
+\x090\xf3\x01`\xd6\xe39\x09D\x04A\xa67n\x87\
+\xfe[\xef\x80\xcee\x9d\xb4\xde>\x81o\xbaz\xd1\xea\
+=\x8c\x14\xf4;\x85\xaft\xeb5\xf8\x1axC\x80\xd9\
+\xa3s\x1a|\xda\x9aO\xb6\x98&\xc0\x88!'\x01\x07\
+8\xd2,h\x12\xd0\xd2\xb3\xb4\x7f\xcc\xfe\x84z\x99\xc4\
+\xe1gA\xfb\x01\xb2h\xd7/\xa0~-\xefX\x00\xd4\
+(\x10$0\x15\x0a\x15 \xa6\xa2Cz\x09\x99\xcd\xdb\
+a\xe07>\x00\xcb:\x0d\xf8\x1e\x9b\x1f\x01v\xb4\xcd\
+\xd7\x8b3\x8c\xfe=\xd9|j\xf9lv\x91&\x80\x11\
+/\xf8\xe0\x9d\xae\xcd5\xc1\xd0\xd0\x10\x91\x80\x01\xca\xc9\
+\x10M\x10M\x02*\x7f\xb7u'4K,\xc3+\xcf\
+\xfaL\xbd4\xe0\x078\xdd\xe6\x9ce\xcfL\x92\x95\xb5\
+\xeb\x05\xa8\xc4\xc5o\xdf\x03%\xbb\xe9\x1a\x18\xf9\xad\x0f\
+\xc1\xb2\x8ee\xb4\xc6?-\xc7F-\xb6\xdcV^t\
+_\xaf\xc9\xa3\xc1\xcf \xf8\xbeh#\x9f~\xe6\x11C\
+\x00W\xf2\x99;\xd4;\x18\x93H\x82?U$\xa0\x8f\
+O\xf4\x00R\x04\xc8\xfc\x18\x85\x99\x03\xfa[\xc9t|\
+\xcc\xbaKU\xa0\xfd\xd23|\xb9V.\xfc\xbc%\xaa\
+\xee\x04\xfa\xbf\xdd\x0c\x09\x05\x0b\xff\x01\x93\xfc\xe6ka\
+\xec\xdd\x1fFG\xaf\x83\xe6\xd3\x19\x9b\x1f\x0dn\xc89\
+\xa3\xf6\xf5\x9a<#\x7f\x7f\x17d\x1e\xf1\xb5|\xd3-\
+\xf5k\x02#\xa6\xf5\xb3\xe1[\xdd\xdb\xc9\xee\x9b\xe9\x22\
+\xb6\x7f\xf6\xeb@2::J$\xf0i\x01\xae\x0d\xa2\
+\xc9\xa1'\x9a\xd2\xda\xc6t|\xdc\xfaCHH\xbc\xee\
+\xa5\xa7Y\xc4\x8f\x89\xd0\xe7\xd9h`\x0dz\x01\x9a\xb9\
+E\xf0\x17\x11\x19r\xeb\x0e\x98x\xcf\xef\x91\x97O\x13\
+'\x0c\xf8\xd1}\xfb(\x82\x98\xa5\xd8\xea\xea0\xc2\x87\
+\xe0\xef\xdd\xc3\xcd\x10\x9fuD\xc9w\x91\x99\xcd\xeb\x8f\
+\xc5KO\xf4-C\x11C\x10\x141\xa4g\xd3\xb7\x88\
+\x9a\x04\xd1\x80\xf3}6\xdb\x98V$W$\xf8\xd0\x1f\
+A\x9c2_|:\xb4\x8e\xfd(\xebo%\xa0\xc6&\
+\xc0\x16!\x04\xe0\x99\x895\xeb!\xfd\xe1?\x82\xa5\xad\
+\xea\x0f:\x90\xda\x0f\x1a\xd2\x0do\xf1|\xdf\xb7\x08\xe3\
+\xd0\xdfRl\x1f\xc1\xb7\xc2\xa2\x92|\xd2\xa9\xd0\xaa\xbf\
+\xe8$\x0d\x1e}K?\xfa\x0d\x18\xc2\xedBC\x02\xbd\
+\xb61\x03:,i\x09\x22\xc1\xa9\x8f~\x1a\xec\xb1\xbf\
+\x02\xf7\xccIS?\xa1\x04\x90T\x9e\xb2\xc7\x02\xacR\
+M\x80\xf12M\x14%L\xf4\xf9\xe5\x9f\xfc\x0c,]\
+\xd6I-\xdf\x80\x1f.a\xb1u\x9f\xcd\xd7\xe0\xd3\xa8\
+^\xea\xc7{\x82m$\x14\xd5\x08|~\xa2aKh\
+\xa4s\x1aI0\xf8\xd5\x8f\x91\xbfA\xb1\x06r>\x09\
+t\x9d\x18\xd8\xc5\xf2\x83\x84\xcaCs\x1e\xd7um\x80\
+\xf6\x8f}\xaa\xbc\x857tAj\xa1\x01\xa4~\x88-\
+\xcaz\xa9U;\xdf\x0eY\x10\xa4\xa6K\x05?\xb2\xf5\
+\xeb%\xd7i\xbd\xbf\x81\xbfQ\xe0\x13\x90\xbfTI!\
+\x09\x06$\xc0\xe2\x7f\xaf4\x81Z\xbd\xccq\x9cR#\
+\x84$\xa1$\xa0\x19PK\xda\xe6\xc1\xc0\x7f\xfc\xb7P\
+\xa2\x18\xdf\xa6\x96&@x\xbfQ\x12\xd176#H\
+VK+\x9bvU:\x09\xf8*\x18z\xbd\xfd\xfe\xaf\
+\xee\x86\xa9\x1f\xed\x01;\x08|\xe9\xe9\xdf\xcf\xcew1\
+Y\xa6\xdf\xefB\xc4*\x9e\xfa\x94\xe7|r\xef7\xc0\
+\x95\x02\x96\xfe\xf9\xddz\x81k2\x07\xd1\xaa?Z\x94\
+vkp\x1d(]\x8c\x13\xa8\xa4&&\x80\x0aac\
+b\xe7\x83o\xea\xfd\xc1\xbf\x90mSj\xb2\x0ca\x95\
+\xa6\xc3\xbb\x1a\xfc\xbe\xaf\xec\x86\x89\x1f\xec\xd1x1\x80\
+\x0d\xa2\xe6\xbcK@{\xbe\xdeu\x5c\xef1%~\xbf\
+d?\xe7\x7f`\xf2\x91{\xe1\xfc\x97?\x8e\xad\xb6\x8e\
+\xb4\x1c\xbdc\x90\x16(k\xd2\x0ai\x81\xbe\x87\x1fb\
+U\x1aV\xe9\x0a\x9bj\x13\x80\x87\x82\x8bx\xf9!7\
+\xbd\xf8\xf9\xcf\xc1\xf8\xd1W\xa8@\x9a\x04\x95\x10\xc1\xf7\
+gV\xce\xff\xe7\xdd0\xfe}c\xf3\x0dH\x06H\xde\
+t=\x81\x1e\xa9\xc9`H\xe0\xfb~\x1fT\xe2\xc4\xe0\
+\xbf\xa96\x13\x0f\xe3\x12\xf0\x7f\xfdq|\xb78-\x1e\
+A$\xf0\xf9\x04(e\x83?q\xfc\x08\xbc\xf8\x97\x9f\
+\x8d\xaac#\x9ap\x16T\x99\x00&\xd1\xd5,\x0e\x10\
+\xc5N'=\x0d\xfbn\xdbuQ$ \x9bOZ\x84\
+\xc0\xef\xf9\xf2n\x18\xfd\xbf\x1a|\xd6\xea\x0d\xc8\x1ah\
+\x93\xccB\x0d\x06t\x93\xcc5\xfe\xa9V\xd2\x9f\xcc\xae\
+\xb9\x9ed\xfc\xc7\xf7BO\x81\x04\xa8\xa5\xe8\x9d\x09\x90\
+\x8a\xc0\x9f<\xde\x0d\x8f\xbf\xf7fpRS\x10j\x95\
+\xa4g#MW\xb7\xda&\x80OZ\x10\x01D\x09P\
+M\xd9\xd1\x11\xd8\xff\xbe\x9ba\xe2\xd8\xe1\xb2I@-\
+H\xdfs\xeeK\xbba\xe4\xa1=\x06`\x7f\xec\x9e\xdb\
+\x7f\x7f2$\xa0\xe4\x86$C\x16\xad\x11\xfc\x04\x01J\
+\xdc\x5c\x8c\xfd\xf0^8\xf7\xc5\x8f\xd3\xbb\x12a\xe9\xdd\
+\xcb\x07\xffD7\xd6\xd5.\xc8\x0e\x0d\x9a2\x84\x80\x22\
+\xa5\xd7A\x87\xaa\x9a\x00.\xda\x04\xc8\xa2\x0f1\x95\x0c\
+\xc5H0\x0c\x07\xb0`\x13\xc7\x03H\x10\xf1\xb7t_\
+\xfbk\x04\xff{{\x02AV q;\xcf\x01\xf7\xd9\
+~v\x8f\x01\x9f\x11(\xcc\xbf0\x84\x19\xf9\xc1\xbdp\
+\xf6\x0b\x1f\xa7w\xa6w\xa72\x94\x05\xfeA\x02\x7fx\
+\xd0<\xa6\x14\xa7\xd4\xd7M\xaf\xa1\x090\xc3\x8d\xc1\x17\
+\x9a]\xdeJ\xb2#\xc3p\xe8\xfd7\xa3\x8a;\xc2H\
+\x10\x06\xfe\xab_\xdc\x0d\x83\xff\xc78|FM{\x9e\
+\xe1\xcf\xe3\xad\x9e\x11A\x1f\xb3|c&\x98\x06a\xa4\
+)\xaa\x11F\xbe\xffux\xf5\xf3\x8c\x04\xe1\xe0\x9f\xec\
+\x86'~g\x17dF\x06\x99\xca\xd7\x19\x81Y\xae&\
+\x00\xd4\xd8\x07\x10\x04\x8c0\xf9Q/\xc8\x9c2\x22\xc1\
+\x10\x15\xd4K\x82\xd0?\xa4|\xe6\x0b3\xe0\x03\x03\xbe\
+\x90\x0c\x88\x8c\x1c\xae\xda\xf7m\x8d\x160\xa0\x17'\x81\
+I\x06h\x93\x02\xc8h\xf2\x86\x1e\xfa:\x9c\xfe\x8b0\
+\x12\x18\xf0\x93\x08\xfe\xcf\xb0N\xd2C\x83\x86\xd4!N\
+'\x9f\x17\xea%\x80\xa0\xbdZ\x98\x00\xe1_\xcd\x889\
+B\xe16\xca5eP$\xf8\xd9\x1dH\x82\x13G\xc8\
+V\xea?\x9fJ\x8e\x139z\x94\xa7\x8eO}~7\
+\x5c\xf8\xee\x9e\xd2*\xde\x0b2\xb3\xf7\xe1v\xdf\xa1\xc4\
+\xae\xd5\xe4\xe2&\x81\x83^\x9c\x1c\x83H\x82\x93\xffI\
+\x91@;\xb1TFM\x0a\x95\xa7\xc0\xbf\x1d[\xfe\xf0\
+`pc\x8a\xa8kn\x02d-\x02AR9\x19\x86\
+\xc8f\xe0\x5c\x9a\x15/\x8c#\xe8\xb2y\x81\xa6\xc5\x12\
+\x09\x86\x87\xe0I$\xc1\x9b\xef\xdf\x07\xad]W\xaa\xca\
+\xf1\xca\x89\xbf\xd8\x0d\x03\x08\xbeey*Xx+\x99\
+\x1f\xbb\xc4O\xbd\xef\x9a\x90\xafY{\x98\xcd\xab\xe7\x9f\
+\xc0\xbb\xdc\x84\x98}\x9d\x82H\xc8\x890\xf0\xbd\xaf\xab\
+k\xd6}\xe9n\x02\xdf\xd7\xbd%\x7f\x88\xea\x80l\xbe\
+O\xbcZ\x0c\x02\x9dN&\x96\xed\xa9sY\x0b\x1f@\
+\x84\xda\x18\x03\xb0,-8\x93!M\xf0\xee\xeb\xe1\xb5\
+o\xffO\xea\xf2\xa8R'O\x1d\x85\x17>z3\xf4\
+=hZ>\xab\xdc PLk5[\xae\xde\xfd-\
+\x9f\xf5\x00\xb8\x16\xe0\xa6@\xefG\x13\x81\x8e\xfb\x91\x04\
+/\xfc\xdeN\x98:\xd5\xad.t\xa6Sp\xee;{\
+\xb0\xec\xd7\x11\xf8\xe6Zo5\x85;\x80<\x82\xa9\xf1\
+\x11\xa2z\xa1`>\xa3'\xa8\x9b\xc1[\xbd)\x8ci\
+mRp\xbf!\x8f\xc0\x1f\xfe\xf3\xbb\xa0\xfb?\xdc\xe5\
+\x1f\xc3\xb7\xbc\xd3\xb4\xb8\x160\x1e\xb0\x09\xeb\xbafm\
+T\xad\x91\xf8\xa4\x067\x8a\xf0\x5c\x0bpRq\xf3\xe2\
+\xbf\x9e\x13c\xec\xe9\x03\xf0\x8b\xdf\xdc<s\x8f\xe3\xf1\
+C\x98I\x0b\xa8\xd7R\x08B\x15W\xd3\xb1\x00A\x89\
+\xbf\x9b\x998\x11L\x0a\xe9%\x85\xf4\x83\x22\xbc\x15\xa0\
+\xaf\xe5y\xba\xe5\xf9&\xcf[\xe67\xf5\x08\xaewM\
+a6\x1c(eX\x1d\x19\xc2\xf2\xdeD\xb8O`R\
+8\x11L\x9eF2<j)\xa3\xa2\x92\x92\xed\xd7\x86\
+\x00\x82\x92%\xf8h\xa0\x07 W_\xeb\x03.XK\
+(\x89\x04\xde\x7f\x0c>\x0d`\x9ei\xb9\x851\xfdb\
+\x5c\x95&\x83OV\xf5\x1bY\xd7\xa7b\x03}\x01\x9e\
+\xe7M\xe5\xf5\x18\x8c\xc9\xe1`s3\xca\xbb\xdbFD\
+\xd5\x09\xa0+H\xbf\xac\x8cx\x86\xbe\x96\xb5x\x1f\xf0\
+\x02\xbc\x05\x0c\x03^\x83l\xde\xc3\xd2\xe7\xe9'\x8d\xba\
+W\x22\xe8X\x14\x88 \xbd\x1a\xc0\xcff\x8b\x03oZ\
+\x9d\x8f\x00Q\xa6\x80\xfb\x1f&\x85\x82n\x12\x037\x5c\
+\xfdK_\x0c\x22*2D\xc7\x15\x10\xc0.hm\xfd\
+\x97\xc2tH*=\x99\xa1\x85\x9f\xd5\xd2\xadN\xd6\xfb\
+\xde\xbc\x95\x9a\x93\x9c\x9dRFy\xf6Av\xdeoB\
+,/\x09\xf4\xb1!\x82\xe9\x91\xd0\xbe\xf0\xbc\xd6\x0cA\
+\x98\xb8\xb3[\x17\x07\xd4\x98\x80`m\xc0\xbb\x9f\xa5\xf5\
+\x18\xfc\xf7\x82I>\x82\x05\xa8\x7f\xc2\x84\xb0\xc9 F\
+TX\xa1\xca,\xf5\x8c&I\x98\xe6K!\xc0\x08\xa6\
+%\xfa},\xcb\x8d\xcfk\x81x\xbc\x1e\xa4\xe3\xc0\xf4\
+h\x16\x1a\x97\xb4B]k=\xe4RY\xd0\xe2k\xb5\
+\xc6\x8eF\xdby\xc9\xc9`\xfc\x03\xaf\x9d7\xe7\x8c\xba\
+\xf7\x93@\xa8\x8b\x02\xbb}\x85\x8a0\x8e\xa0`<\xf5\
+\x1f\xb8\xe1\xddB\xee\x17\x84\x98\x00(\xa3\xc7 C\xba\
+z|P\xcaH}[#4u\xb4\xc1\xd4\xf0IH\
+\xe0\x88\xa4\x93\xcbA>\x9fQE)\xf0_\x8e\x94B\
+\x80.\xbcat\xe6\xb7\x1d!e>^_\x97mh\
+_\x94\xb0h\xfa\xb6h\x05\x22\xc4\xa2-\x9d\x90\xec\x9f\
+\x00#e\xday\x19\xa0\x05\x14\x90\xdc\xf37\xde\xbd\xfe\
+y?\x09\x84>6\x7fj\xc6 \xa8\x89\xc1\xfe\x22Y\
+\x88\xb8\xcc\x170+\x81\x1bR\x98\xae`HWT\xb2\
+\xf1\x06\x16J.\xcb?0\x04\xf3\xaf\xdb\xb0\xec\xba\xb5\
+\x10on\x80\xf1\xa1\x8c\xfa\x9b\x0dnr\x12,\x07\xa8\
+\x95\xe6\x08KL\x92\xb0\x8d\x8c\x03\xd0\x1d\x85^J\x1e\
+\xa4L\x0b\xd7MZu1\xb5\xfc{v\x1a`\xf0\xf8\
+8t\xdd~\x0d4-n\xf1c\x1e\xf0\xb2A\xf6\xcf\
+\x0d\xa9\x18\xa9\x13\xef{s\x1b\xecz\xce\x05l)9\
+\xe682928D,\xdd\x90V\xaf\xaf\x09\xf2\x0f\
+\xd8\xe8e\xb4\xcf\xc0c(\x9c\xc4\xad\xcb\xdba\xfd{\
+\xf1;\xcbg{!9\x9aQ\x84\x90\xe0\x92)\x9f\x14\
+\x00\x19\xc2\x920\xcd\x96\x12\x08\x1a\x9bQ\x0bn\xe1\xc6\
+);\x9d~U\xda\x16X\xf5\x0924\xd0\xfb\xc28\
+\xc4\xdb\xe6\xc35\x9f\xde\xe9!A\xa8\xf3\xc2\x0b\xc6\xae\
+\xe1]%7X\xdd\x9a\xfd\xc0\xf0\xad\xc9s\xf8~t\
+\x92\x0cx\xbe\x0d\x18k\x08xw^\xbe\xa0\x14@\x04\
+\x17\xf85$-\x08\xfe5\x7f|\x0b\x1e\x0b8\xf2\xd8\
+\x19R\xa7\x0aU\xc7\xc9C\x03\xc0\x19\xc2\x90\xb0$L\
+\xc7J1\x01I\x00\xd9\x86\x8cq\xf1&\x010\xd1\x94\
+J?;\x95Ln\xafokC\xfcQ\x0bL\xb9p\
+\xf2'\x03\xb0\xf6\xed\xab\xe0\xa6/\xdf\x06G\x1fx\x16\
+\x06_\xee\x81\xccD\x9aj\xc7\xf7\x19\x16%\xf3e\x0e\
+\xdf\x82\xa0\xc4\xaf\x05\xb3\xef\xbb\x06\x84?Iu\x9d\xc7\
+\xc9\xa3-\x1dz\x8f\x85\xdf!\xf6\xafO\x10\xc0_\x9f\
+#hH\xaa\xb6\x96\xc9S[\xcb\xe4{;\xee\xa2p\
+\x9d\xa0\xe4\x9a{\xa0p,<[\xcb\xf57\x08\x97\xf2\
+\xcd\xbd*Y\x9e\xdf\xb6m\x0b\x12\xf3\x1a`\xc9\xd6\xcb\
+`\xe3\x07v`F\x0c\x9e\xfc\xc6K05\x92\x06+\
+n\xa3\x7f\x96\xc6\xdf\xc8\xc3\x02\x17\x9e\x05\xc4\x90\xb0\xc4\
+\x94'l#\x09@\xc1\xca\x9b\x94\xbaP\xac\x19_\x99\
+\xcd\xef\x7f\xb1\xbf\xff}\xce\xd2\xa5\x0b\xe3M\xcd\xca\x10\
+\x8f\xf5&\xe1\xe5\x7fI\xc1\xf2m\xf3a\xeb'w\x81\
+3\x91\x84\xa9\x0b\x13\xe0d\xf2Xp\xbe\x02\x16\x89e\
+\xec\xb5\xb9\xc6\xf7\xa1\xa6\xf7>\xbe\x8a\x18\x04]\xe3\xcd\
+\x9f\x0d0\xe5W\xd2O\x96E\xc2\xae\xc5\x8e\x8b\x13\xc5\
+\x10(\xe0X\x93\xc7\xdc\x17\x14\x80*\xfe\xdbv\x22\x06\
+\xcd\xd8\xf2\xed\x86z\xe8y\xbe\x0f\xba\x1f?;\xa3\xfa\
+\xd1T;\xa9\x0cd\x93IH\xb80\xb8\xd6\x85\x83.\
+b\x98G,\x13\x00.a[\xd27\x1d\x8f\xcf`R\
+\x87\xff\xb4\xbb\x00\xab_\xb5\xc5\xed#\x9d\x1d\x9fZ\xb2\
+e\x8b\xb0bqp\xe8\x0f>d\x90\x22\xa8fb\x09\
+\x89\x0c\x1e\x85\x96\xc5MP\xd7\x5c\x07B\xd7z\xd4W\
+C\xc2l\xf8\xb5\xfc\xbc\x14\x81\xd7F\x03,\xa0r\x99\
+\x0d~h\xd4\x8d_\xc3\xaf\x8f\xf8=\x19\x1e\xdcs]\
+\x09\xf9\xb4\x03\x99\x14\xc0pO\x12Rci\xd5U'\
+'\x9d<\xff\x89\xbe\xf3\xa8\xa5\xa7\xe4Z\x07\xfe\xf1\x0a\
+\x17\x1e\xb4\xd0\x0c\xb83\x9d\xbb\xccN\xbc\xbd\xa48\xc0\
+\x01\x00\xf9\x0e\x80\x9c\x03\x90\xc4;.\xacr\xe4#\xc9\
+\xbe\xfe+\xfa\xa4{k\xfb\xe5\xab\xc1\xaa\xabC\xecs\
+\xea\xafW\xa6\xc6\xd30\xf6\x1a\x9a\x80\xe4DTC\x0a\
+>_\x85\xebd\xc5\xe7\xdexB\x7f\x94\xab\xbe\x15M\
+\xb2m\xab$\x10\xfc\x5c\x12\xc9\x80\x83k\xd9T\x0a\x16\
+\xb9\xf0(\xb6\xfe\xbd\x80\xd8Y\x88a\x1c\xb1|4\xa0\
+\xa8v\xb1\xcc\xfd\x98\xde\x87\xa9\x19@N\x93C\x88i\
+\xb1+\xcf\x0c\xa7\xa6\xe6\x0f\x8f\x0c\xafqs9\xd5\x1e\
+]\xc7Q)7\x9d\xc24\xcdg\xab\x5c\xe2\x04\x90\xf0\
+\xc6\x14\x9b\xbe\xb5\x88\xc7@\xd2\x7f\xf9<\x06\xe8& \
+5:\x8c\x9a!#\x09\xfcm\x0e\xfc3\x00\x9c\xcd\x03\
+\x0c6\x02\x9e\x02p\xee\x0c'\x00\x97+\x00\xe4\x22\xdc\
+\x92\xed\x903}\xc9\xecR\x17\x8e\xa1\x9a\x19\x1d\x9e\x18\
+_=5>\xd6H\xb6&\x8b\xe0\xe73\x19p\xf3\xb9\
+\x80\x0a\xad}\xe5K\xf8u\x17>\xfd\x1b\x1b!:{\
+\xd3\xa8y'!\x97\x9e\x86x\xde\x1d\xbc\xdc\x85{6\
+\xbb\xf0-\x02\x9fZ\x7f\x0c \x99B\xec\x9eB\x0c\xf7\
+Wb\x1d\x1f\xc7\xf3\x13\x00V+\xf2@\x024\x09\x80\
+v\x0a\x14:\x00\x9dg,\xb8i\xd4\x82k\xa6\x01V\
+;\x02\x9a]\xbc\xa6V\xa0\xc9\xaa\x9f\x7f\xe3\x13\xc7\x02\
+\xc8\xfe\xbf\xf6\xce %b\x18\x0c\xa3/I\xe9\x8c\x8c\
+\xcc\x0c\x1e\xc1\xa5\xa7\xd0\x8d\x9e\xc0\x03x\x12\xebI\xbc\
+\x95\xcb\xd9\xb9\xb48Hal\x9b\xc4/\x18A\x17\xe2\
+\x14\x1dWy\xf0\xb6%\xe1\x0b\xfc\xc9\x1fH+x9\
+\x8al\xd2n?m\xf8\x1c<\xa6\xe0#\xb4\x06:e\
+\xd7/!\x5c|?\xd5\xbd\xeev\x8c\xea\x87]A5\
+\xc0|\x84\x14\xf6\xcaJ`i`\x11a\x06T\xd2Q\
+\xf8\x0f\xbc\x1c?z5\xf9\xa8\xb7\xb5\xb2z\xaf\xf9\xbb\
+-\x8c\x97\xb9\x0d\xfc\xab\xdb@\x03\xf1\x1a\xc2\x0d\x0ck\
+\xf0#\xf4@g\xe1)\x05\x9f49\xfc\xf0\xe9\xb7\xbf\
+\x14\xfe\x1c\xf3\xf513\x1f\xf3\x22H\x06\x89t0\xb4\
+\x10\xee!^\xc9\x9f\xbf9\x81\x06\xcc\xadT=\xb1\x1d\
+\xb8\xb9\xac\xc1\xbeJ\x97{5\x1eLO\xe1\x10\xd4\xd2\
+A\x0c\x80\x878\x83\xd0\xcb\x1d\xf8\x85<\x87p\x07\xb1\
+\x91\x13\x16\xd5t\x1ay\x06\xe6X\xae\xf3\xc06)x\
+yB\xe1\x90\xb4\xb2\x86x*{\xe09wo\x1fd\
+C\xa1P(\x14\x0a\x85\xc2~\xbc\x01\xc5\xf3\xa3!\xeb\
+\x0d6:\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00<\x0e\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
+\x00\x00\x09\xediCCPICC Prof\
+ile\x00\x00x\x9c\xad\xd6gTS\xd9\x16\x07\xf0\
+\xff\xbd)\x84\x04B\xef- \xddP\xa4Jo\x8a\x0d\
+\x18D\x14\xb0\x02!4)\x11\x82(vP\xb0\xa1`\
+W\xb0+v\x05\x95Q\xc7\x8a\x0a\x22\x8c\xa24\x11Q\
+, 8\x22\x1d\x0b\x82y\x1f\x82e\xd6\x9bY\xef\xcb\
+\xdb\x9f\xf6\xd9k\xdd\xb3\xce\xf9\xed}\xd7:\x80\x94b\
+\x98@\x10G\x02\x88O\x10&\x05L\xf0\xe4\x04\x87\xcc\
+\xe4H\xd4\x81\x0a5H\x03\xb0\x0f\xe3%\x0b<\xfc\xfd\
+}\xf0\xaf\xf1\xb1\x1e\x04\x00\xd4\x98\x85\x09\x04q\x89G\
+\xa3\xab\x11\x97\x97\xa9\x92\xe3\xc2\xe9\x9f\xab\xfb\xf8\xdf\xbf\
+\x03\x00\xb0\x93\x82Cf\x02\x04\x17\x80b\x948w\x07\
+\xa0\x18.\xce\x03\x01(\xa6\x0a\x05B\x80\x88\x06\xa0\xc8\
+\x8b\x0e\x8b\x00\x88\xa5\x00\xb8I\x81\x01^\x00q\x1c\x00\
+;J\x9c_\x06\xc0\x0e\x17\xe7\xe5\x00\xd8\x0byQB\
+\x80h\x00(\xf2\x09\x111\x09\x00\xb5\x03\xa0\xbbF\xf0\
+\x93y\x00\x8b\x0b`^D2/\x1e`m\x04`\x19\
+\x1f\x9f\x18\x01\xb0\xae\x010\xe6\x09\x92\x84\x00\xab\x05\x80\
+Yp\xc8L\x8e\xf8\xc8\xe1\x91\x80u\x08@\x1e\xffY\
+\x9b/\x05\x14i\x02\x8a5?k&\x11\x80F\x01p\
+\xf5\xc4\xcfZ_\x00\x08\x00\x84rUr\xa4\xb5\x15\x00\
+\x80\x90\xf2\x04h/D\xa2>C@b\x0b0\x9c+\
+\x12}=$\x12\x0d\x1f\x06(M\xc0\xad8^J\xd2\
+\xc2\x11/\x82x\x00\xfc\xaf\xb5\xf8\xce#A!\x00\x02\
+$\x95\xce\x90dI\xb1e\xe4\xe4\x15\x94\x94U\xd54\
+4\xb5u8z\xa3\xf4\x0d\x8d\x8cMGs\xcd-,\
+\xc7X\xdb\xd8\xda\xd9\x8futrvqus\xf7\xf0\
+\xf4\x1a7\xde{\xc2\xc4I\x93\xa7\xf8\xf8\xfa\xfd\xe6?\
+5 p\xfa\x8c\xa0\xe0\x90\x99\xb3\xe6\xcc\x9d\x17\x1a\x16\
+\xce\x8b\x88\x8c\x8a\x8e\x89\x9d\x1f\x17\x9f X\x90\x94,\
+LY\x98\xba(m\xc9\xd2e\xcbW\xac\x5c\x95\x9e\xb1\
+&3k\xed\xba\xf5\x1b6fo\xca\xc9\xdd\xb2u\xdb\
+\xf6\x1d;w\xed\xde\x93\x97\xbfw\xff\x81\x83\x87\x0e\x1f\
+9Zp\xec\xf8\x89\x93\xa7N\x9f9{\xae\xb0\xa8\xe8\
+\xfc\x85\x8b\xc5\xbf_\xba|\xe5\x8f\xab\xd7\xae_\xbfq\
+\xf3V\xc9\xed;w\xef\x96\x96\xdd+\xbf_QQ\xf9\
+\xe7\x83\x87UU\x8f\x1eW\xd7\xd4\xd4\xd6\xd5\xd5?i\
+hx\xda\xd8\xf8\xac\xa9\xe9\xf9\x8b\x17\xcd/_\xbez\
+\xfd\xfaMKK\xeb\xdb\xb6\xb6\xf6w\xef\xfez\xff\xbe\
+\xe3CggWwwOo__\xff\xc0\xc0\xc7O\
+\x9f?\x7f\x19\x1c\xfc:44\xfc\xed\x9b\x08$\x95.\
+!\xc9\x94\x92\x96\x91\x95WPTVQS\xd7\xd4\xd2\
+\xe6\xe8\xea\xe9\x1b\x18\x1a\x9b\x98r\xcd\xcc-,\xad\xac\
+ml\xed\xc6:\xfc\x1b\xc0\xb4\x11\x80\xd9#\x00\xfc\xef\
+\x00\x89?\x00\x16\xff\x00X\xbd&3k\xed\xfa\x0d\x1b\
+\xb37m\xfeE \x7f\xef\xbe\x7f\x10\x18\x01\x10\x0b\x88\
+\x01\xee\xfc\x0d\xe0\xd1\xe3\xc7\xd55\xb5\xb5u\xf5\xff\x08\
+\xd0\xfa\x03\xa0C\x0c\xd0\xd3\xd3\xdb\xd7\xdf?\xf0\xf1\xe3\
+\xa7\xcf_\xbe\xfc\xbc?\x85FgH2Y\xd2l\x19\
+Yy\x05E%\x15U5u\x0dMm\x1d\x8e\xae\xde\
+(}\x03#c\x13\xd3\xd1\x5c3s\x0b\xcb1V\xd6\
+66\xb6v\xf6c\x1d\x1c\x9d\x9cG$~\xa5\x10\x0f\
+\xc3w\x8cY\xb3\xe7\xcc\x9d\x17\x1a\x1a\x16\xce\x8b\xf8\xe1\
+\x91\xf0\x0bH\xda\xdfE\xd6\xfdB\xf2}&\xbe\x93\xfc\
+\x93\x89\x98dd(J\xcb\xee\x95\x97\xdf\xff\x95\xa4\xae\
+\xfe\x89\xd8\xe3\xf9\x8b\xe6\x97\xaf^\xbfii}\xdb\xd6\
+\xfe\xee\xaf\xf7\x1d\x1f:\xbb\xba{z\xfb\xfa\x07>~\
+\xfe2\xf8uh\xf8\x9b\x08\x10\xff\xfb\x00@\xb7\x03\x0e\
+'\x003\x98@\xe0!`{1`\xe4\x04\xa8t\x01\
+\xfe\xd2@\xa0\x03\xc8dk\x90\x91\x91 U\x98\xa0\x10\
+\x00\x09\x80\x00\x05tHB\x06\xca\xd0\x81)\xec0\x0e\
+\x81\xe0#\x15\xeb\xb1\x0f\x17Q\x89\x16|#\xd4\x09{\
+b:\x91Ll%\x8a\x89\xa7\xc47\xd2\x80\xf4%\x17\
+\x92\xfb\xc9J\xf2\x0b\xc5\x84\x12B\xd9@\xb9I\xe9\xa7\
+r\xa9\x11\xd4\xbd\xd4\xa74UZ\x10m7\xad\x89\xae\
+G\x8f\xa6_\xa0\x8b$|$\xf6Ht0<\x18\xbb\
+\x18\xbd\x92~\x92g\x98l\xe6\x02f\x03\xcb\x8bU(\
+\xa5-\xb5I\x9a\x94N\x93\x1e`'\xb3\xfbdRe\
+\x86e3\xe5\xe4\xe4\x0e\xca\xdb\xc8W(\x84+|S\
+\xdc\xad\xa4\xaftJ\xd9J\xf9\x9a\xca\x04\x95\x1a\xd5p\
+\xd5~\xb5u\xeaZ\xea\x175|4Z5\x97i\xa9\
+h\x15k\xfbkw\xea\xe4pl8\x8d\xba\x19z\xa3\
+\xf5\xaaG-\xd5\xb7\xd0o2\xd8h\xe8b\xd8it\
+\xd08\xc8\x84mRj\x9a>\xdak\xf40\xf7\xba\xd9\
+\x0as\x0f\x0b\x9aE\xa5\xe5\xb61s\xac\x8c\xacz\xad\
+o\xda\xe4\xd8\x86\xdb\xd9\xda\xb3\xec_\x8f\xbd\xe2\xb0\xd9\
+\x91\xef\xe4\xe2\xac\xe5\xfc\xcd\xa5\xd9\xf5\x86\xdb\x01\xf7\x0c\
+\x8fH\xcf)^\xd6\xe38\xe3e\xc7\x0fywO\xa8\
+\x9fxo\xd2\xed\xc9%Sn\xfb\x94\xf9V\xfa=\xfa\
+\xad\xce\xbfi\xea\xbb\x80\xaf\x81r\xd3\x8df8\x07\x05\
+\x06\x0bB\xb2g\x9e\x99U3[4\xd7b\xde\xbc\xd0\
+\x9c\xb02\x1e\x19\xe1\xc6_\x12y5\x9a\x12\xe3\x1f\xbb\
+w~w\xfc\xe4\x84<\x01\x16\xf0\x92\xca\x84\x96)\xfb\
+S\xe5\x16\xadMc,Y\xbetp\xf9\xca\x95\xccU\
+[3tV_\xca\xf4\xc9j^\xb7d\x83\xd6\xc6\x92\
+M\xc1\x9bE\xb9\xa7\xb7\xce\xda.\xb1\xe3\xcc\xae]{\
+\x8a\xf2_\xef\x97=\xe8|Xp\xf4\xd8\xb1\xfa\x93\x92\
+\xa7'\x9d\xcd.,=/*\xf6\xba\x94~\xa5\xf2\x9a\
+\xec\x8d\xa0[Gn\xf7\x97z\xdc\xcb\xbd\xff\xf2O\x87\
+\x87\x1b\x1e\xbd\xa9\xb1\xad\xdb\xf2\xa4\xb71\xa0\xe9r\xb3\
+\xda\xab\xb47/\xde\xfa\xb7\x97\xbc\xb7\xfeP\xd0m\xd4\
+\x9b7\xa0\xf4i\xd7\xa0\xee\xd0S\x91\xe8G\xff\x99\x90\
+\x81\x0at\xc1\x85\x03&\x22\x04\xb1X\x8a\x1c\x14\xe0\x1a\
+\xea\xd0E0\x09c\xc2\x9b\x88 V\x13\x05D\x05\xd1\
+E*\x93\xaed4\xb9\x85\xbcAvP4)\xbe\x94\
+\x15\x94\x0b\x94v*\x87\x1aL\xddB}Hc\xd3\xfc\
+h\x9bi\xb5t\x0dz8\xfd4\xfd\xb3\x84\xb7\xc46\
+\x896\x863c\x1b\xa3Sr\x8a\xe4\x09&\x8b\x99\xc0\
+\xacgy\xb0\xceJiIeK\x13\xd2\x8b\xa5\xfb\xd9\
+\xc9\xec>\x99\x852C\xb2k\xe4\xe4\xe4\x0e\xfc\xcf\xee\
+\xfbj\xb4j.\xd7R\xd1*\xd6\x9e\xaa\xdd\xad\xb3\x85\
+c\xc7y\xae\x9b\xa9g\xa1\xf7dT\xba\xbe\x9d~\xab\
+\xc1\x0e\xc3\x89\x86_\x8d\xce\x19G\x9a\xe8\x984\x9a\xee\
+\x1e\x1d\xc2U\xe2>3;h\xce\xb7\xe0Z|\xb4\xbc\
+=&\xc7j\xae\xb5\x99\x0dl\x9e\xd8\x9e\xb4\xcb\xb4\x0f\
+\x1f\xeb\xea\xa0\xee\xf0\xd1\xb1\xd6\xe9w\xe7|\x97\x0c\xd7\
+X\xb7\x00w'\x0f#Oy/x\xf5\x8e\xeb\x19\xff\
+\xca\xbbi\xc2\x83\x89w'\x95L.\x99R\xe2s\xc7\
+\xb7\xdc\xaf\xf2\xb7*\xff\xda\xa9\xcd\x01\x9d\x81\xc4t\x85\
+\x19\x06A\xf6\xc1\xfe!\xd13\xd3g\x1d\x98]:\xa7\
+k\x9eF\xa8{Xt\xf8.^=\x9f\x15\xe9\x12\x95\
+\x16}=\x16\xf3\xc7\xc7\xe5\xc4\xbfH4\x17\xa4/h\
+H\xb6\x12\xe6\xa6\xf4\xa7\x86,\xba\x95f\xbad\xff2\
+\x85\xe5\xd9+\x99\xab\xb22(\xabWe\xb2\xb2\xf2\xd6\
+\x19\xaf\xbf\xbc\xd1/\xfb\xfd\xe6\x0d\xb9F[J\xb6\xf1\
+v(\xee|\xbe\xfbI>}\x9f\xcd\x01\xfe\xa1\xddG\
+\x1e\x1c\xa3\x9cp<\x15\x7f\xe6\xf4\xb9\xb6\xf3\xdc\x8b)\
+\xbf\x17_\xfer\xd5\xf9\xfa\xea\x9b\x8fnk\xdd\x0d+\
++*\x1f\xaa\xf4{\x90_\xf5\xa1\xda\xb3vg\xfd\xdb\
+\xa7\xf6\xcfr\x9e\xb7\xbet{\xbd\xa3\xe5C\x9b\xef\xbb\
+\xfd\xef\xbft\xce\xe8\xbe\xde\xa77\xb0\xf6S\xd7\xe0\x9c\
+\xa1\xee\x91\xfe\x93`A\x16\xca\xe0\xc0\x1c.\xf0C8\
+R\xb1\x09\x05(\xc1\x0b\x0c\x13\xda\x84;\x11A\xac#\
+\x8a\x88&\x92A\xda\x91Q\xe4N\xb2\x92BR\x9c(\
+)\x94\x22J7\xd5\x8a*\xa4\xfeA\xa3\xd0\xfchy\
+\xb4\xf7tW\xfa6z\x87\xc4\x04\x89\xa3\x0c:#\x96\
+Q-\xe9*y\x86\xa9\xc3\xdc\xc1\x92eeKIK\
+m\x96V\x92>\xc4\xb6f\x97\xc9\xcc\x91\xf9,\xbb]\
+\xceN\xaeI>K\xc1N\xa1]1_\xc9K\xa9Y\
+y\xad\x8a\xb9J\x83\xea\x1a5;\xb5v\xf5|\x8di\
+\x9aL\xcd[Z\x8b\xb5m\xb4\xbbu\x0a9\xc9\xba\x8e\
+z\x14\xbd{\xa3r\xf5C\x0d\xcc\x0d\x86\x0d+\x8d\xf2\
+\x8c\x13L<MUM{FWr\x0b\xcc2\xccC\
+-\xdc,9c\xa8c\xda\xac*\xac\x0bm\xf6\xd8\xa6\
+\xdb\xc5\xdb\xcf\x1e;\xd9\xc1\xdeQ\xcfI\xc6\x99\xe2<\
+\xe8\xd2\xed\xda\xe2\xd6\xe0^\xe3Q\xeeY\xe2uk\x5c\
+\xe9\xf8R\xef\xb2\x09w&\xde\x9dT9\xb9fJ\x93\
+O\xbbo\xbf\x9f\xc8\x9f9U%\xc0d\x9a[`\xd0\
+\xf4\x84\x19k\x82\xf6\x06_\x09i\x9c9<[g\x8e\
+\xdb\xdc\xb0yY\xa1\x85aM<F\x84-\x9f\x1f\xb9\
++\xaa*\x86\x11;~~F\x5cI\xbc(\xd1U\x90\
+\xbe\xe0~\xb2\x8204\xa5(\x95\x5c\x14\xb8\xf8\xe4\x12\
+ri\xc8\xb2\x8b+\xd4V\xa6\xadj\xc8\xf0\x5c}.\
+S#k\xf5\xda\xee\xf5\xbc\x0d\xd5\xd9\xde\x9bn\xe68\
+\xe6^\xd9\xea\xb0\xed\xea\x0e\xd7\x9d\xa5\xbbg\xec\xe9\xc9\
+\xdf\xba\xcft\xff\x83\x83\x89\x87\xe5\x8f\x5c-\x88<\xce\
+:Qx*\xe1\x8c\xce\xd9\x87\x85\xcb\xcf[_\xe8*\
+>})\xe6\x8a\xe9\x1f\x8d\xd7\xf2n\x04\xddR,\xa9\
+\xbd\xb3\xbdt\xfa=\xa5\xf2\x9a\x8aM\x7fNy\xc8\xac\
+*{\xbc\xa8\xc6\xaa\xb6\xbd\xfe`Cp#\xfb\xd9\x8d\
+\xe7\xf3\x9b\xd5_V\xbc\x16\xb6\xa8\xb6\xdeh\x8b}\xc7\
+\xf8\xebP\x87\xf7\x87\x97]Kz\x94zO\xf4;\x0c\
+T|\x9a\xf5\xb9cp\xed\x90\xeap\xa3H\x04\x88\xdf\
+\x8b\x00\x00Z\x8co\x18\x0f\xff\xe7\x88\x8fK\xf9\xbe'\
+\x09@\x8a\x9f0}\x1a\x00\x06\x00c\x81\xd0?\xf0{\
+\x8e\x18\xf8\x22\x0c<\xf1;\x15\x00\xe8\xb2@\xbe\x11\x00\
+\x5c\xf6M\xfa\xaf}\x85\xfcEB\x00\xf0J\x14,N\
+\x8a\x89\x8a\x16r<\x04\x828>\xc7+1^\x90\x22\
+\xe4'q9\x93\x12x\xe6\x5c\x8e\x95\xa5\xa5-\x00\xfc\
+\x07\x8f\x08\x91L8\xcf\x9b\xb0\x00\x00 \x00IDA\
+Tx\x9c\xed}y\x9c\x5cU\x9d\xef\xf7\xdc\xa5\xf6\xad\
+\xbbz\xdf\x93\xce\xbe\x07\x0cc\x10\x95\x00\x03\x08\x88\xe8\
+\xa0\xbe,\x84\x04\xf8\xa08\xce<\x9e\xcb\x88\x06\x12\xc0\
+\x91y\xbc7\x8e\xa3\x83\xdbg\x06\x01\xc5\x04d\x10|\
+\x82Q\x90@p\x09\x88\x06!\xa1\x93\xd0\xdd\xe9\xee\xa4\
+\x93\xde\xbb\xab\xba\xba\xd6[u\xef\xfb\xe3\xdcs\xb7\xba\
+U]\xd5I $\xf9}>\xf7S\xd5\xb7\xef\xbd\xe7\
+\xdc\xf3\xfd\x9e\xdfv\x96\x22\x00\x88\xa2(\x0a\xce\xc9Y\
+)\x1c\x00\x10B\xc8\xbb]\x91s\xf2\xee\x08Q\x0fM\
+\xcei\x83\xb3K8\xeb\x89s\xda\xe0\xec\x92<\x02\x00\
+\xe7Hp6\x89-\x01\x80s$8[\x84+f\xf2\
+\x09!\xe4\x89'\x9e\xe0\xdf\xc1\xfa\x9c\x93wX\x88\xa2\
+(\x04\x00\xac\x1d~\xdb\xb6md\xf1\xe2+\x9c\x92+\
+\xed\x05\x17\xcf\xad\xbb\xfa\xea\x89w\xa5\x86\xe7\xe4\x94\x8a\
+F\x00@'\xc1\xb6m\xdb\xc8G?\xfaQ\x17\x17\x08\
+xG\x06\xc6}S\x93R \x97\xcb\xa4>\xf9\xb1K\
+\x0e\xbdk5='\xa7DL\x04\x00\x80'\x9ex\x82\
+[\xb4\xe8\xc3n\xb7[\xf1&ri\x1f\x0790>\
+6\x15\x1c\x1d\x9f\x08)\x8a\xa2\x1c\xed\x8e\xff\xfa\x1f\xff\
+\xf1#\xe9w\xab\xc2\xe7\xe4\xe4\x0a\x01%\x01\xfb\x9b\x03\
+\xe0\x89\xc7\xe3\xde\xc1\x89\x84\x1fr6\x90M\xe6\x82\x92\
+\x92\xabH'S\x15\xc7\x87F+r9\x85\x83$o\
+\xbf\xee\xba\x0f\x1d=\xa9\x159A\xa7\xf3\x5c\xfebf\
+\xa2%\x82^|Q\xe1/\xbe\x18^\x00^\x00~\x00\
+\x81\xe3\xc7\xc7BYE\x0e%\xe2\xe9\x0aE\xc9V\xa6\
+R\xd9\xca\xc1\xe1\xb1j)+\xb9\xb9\x1c~p\xcd5\
+\x17\xbd4\xa3B\x8b\x83=\x13\x22\xd8\x82\x7f\x8e\x14\xd3\
+\x0b\x01@\xf6\xef\xdf/z\xbd^OMM\x8d\xd7\xe3\
+\xf1\x04\x00\x04\x00\x84\x00\x84\x86F\xa3\x15R&S\x99\
+\x88\xa7\xc3\x92\x9c\xab\xcaf\xe5\xea\xa1\xa1\xd1\xea\x8c$\
+\xd5\xc8P\xfe\xf5\xda+>\xf0\x1f%\x17f\x06\xde\x0a\
+4\xb19_\x88\x0cV`\x95\x02\x9f\xf4\x8fsD(\
+(\xe4\xa1\x87^t-ZT\xeb\xf5z\x9d^\xbf\xdf\
+\xe3\x0f\x85\x82\x81@\xc0\x1d\x02%@%\x80\xca\xf1\xf1\
+X8\x99\x96\xaa\x92\xc9du:\x9d\xa9V@jF\
+\xc7\x22\xd5\x89D\xca!+\xca\xc3\xd7\x5c\xb1zs\xc1\
+\x02\xf2{\xbb\x11hb\xf3\xb7\xf1\x9a\xe9\xc4\x08\xacl\
+9g\xfd\x9b\xfeq\x8e\x0c&\x11\x1c\x8e\x98/!\x87\
+|.\xde\xe9Oe3\xa1\xc9\xc9\xa9@\x0e\xb9\x8a\x8a\
+\x80\xaf\x02@\x18@\xb8\xb2\xd2_\x15\x9dLTs<\
+\xaay\x9e\xab\x89\xc7S\xe1p8$\x8aB\x0c\xd1X\
+|\xd3\xb3\xcf\xedi\x93\x12\xe9\x8f_w\xdd\xc5\x11\xa0\
+ \xe8V\x809\x9b\xff\x99\xce\xbf\xf5V\xd7EZE\
+\x85\xfc\xca?\xf5\xd4\xb3o\xdeq\xc7\xff\x8c\x80\x82\xac\
+\x80\x82\xce\x00fe\xb1\xf3\x00\xa0\xb0\xba\x9d#\x02\x15\
+\xf2\xe0\xcf~U\xed\x17\xf9\xc6\xc6\x86\xba@(\xe8\xaf\
+p8\x5cA\x97\xd3Q\xe9p\x88\x955U\x810\x80\
+jv$\xd3\xd9\x9a\xc9\xc9\xa9\xcatF\xe2c\xb1\x04\
+dYF<\x91D$:\x05YV\xfe\xaa(\xd9\xcd\
+\xd7\x5cq\xd1\x1b\xc6\xe7\xc3\x0c4g\xf7\xf9\xd4SO\
+\xb5\xae\x5c\xb9\xeaC\x1e\x8fw\x89\xd3\xe9Z\xeat:\
+\x96p\x1c\x17,Zq\x03\xc5dY\x8ef\xb3\xd9}\
+\xe9t\xea\xf7\xd1h\xf4\xcdg\x9eyn\xf7?\xfc\xc3\
+-\x11P\xe0\x19)\xac\xc79\x12@\xedu?yr\
+g\x9d\x87w\xbf?\x14\xf6W\xd4VUV\xb8\x9cb\
+\xa5\xdb\xe9\x0a;\x5cbUUe\xa0\x1a@\x8dz\x84\
+\xa4\xac\xc2E\xa31HR\x0e\xe3\x13Q\xe4d\x05\x19\
+I\xc2\xe8X\x14\x8a,G2r\xf6\x13\xd7]y\xd1\
+n\x14\x00\x1b\x00\xb7z\xf5U\x95\xb7\xdf\xfe\xf9\x0f\xae\
+Zu\xde\xd5UU\xa1%N\xa7s\x89\xa9R'\x98\
+\x84&\x04\x90$i_,\x96\xf8\xe9\xbe}\x7f\xfe\xe5\
+e\x97]\xd6\x033\x194Mq\xb6\x93@S\xcb;\
+~\xfe\xfc\x5c\x87\xc3yeE\xc0__\x13\x0eU\x89\
+\xa2P\xe5\x0b\xb8k\x04\xc2WWV\x85j\x04\x0e\x01\
+vm.\x07\xc4\xa6\x12\x90\xb2Y\x8c\x8cE \xa5%\
+\xc8\x8aB\x09\x91\x95\x91\xc9H7\x7f\xf4\xaa\x0f<\x0a\
+\x0a:\x07\x80\x07\xc0m\xdd\xfa\x1f\x1b\xd6\xac\xb9\xf0\xea\
+\x05\x0b\xe6|$\x14\x0ah\x95\xe0\x0a\x8eH\xd8Tx\
+\x06\xe4\x90$i\xdf\xd8\xd8\xd8}--\xf5O#\x9f\
+\x08\x00\xce^\x22\x98\xe6\x03\xfc\xecg\xbfmp\xfa\x5c\
+_u:\xc5\x96\xc6\xba\xeaj\xd1!\xd6\xf8\xbc\x9e\x1a\
+\x87C\xf0\x05\xfd\x1e8\x1c\xba!V\x14`2\x96\x80\
+$e119\x85\xf8T\x029Y\xc1\xd4T\x02\xe9\
+T\x06\x99l\xfa\xd1\x8f^\xf9\xc1\xcf\xad^}U\xe5\
+'?\xf9?\xfe\xfe\xa2\x8b.\xb8u\xee\xdc\xd6\xa0\xd3\
+\xe9\xccK;\x17\x93\x93I\x8e\xe1\xe1\xa1\xdb\x9a\x9a\xea\
+~\x0c \x87|\xf3pV\x92 oB\xc8\x8e\x9f\xbf\
+0\xdb\xe7r\xdd\xebp\x88\x1f\xa8\xae\x0e\xd5\xb8\x5cN\
+w0\xe0\x87(\xf2\xb0#\xc1T2\x83lF\xc2x\
+d\x12\x93\x93q@Q0\x95L!\x95L\xa3\xaf\xbb\
+\x7f\xff\x82\x05s\x9a\xcf?\x7fqQ{n\xaa\xd0)\
+&\xc7\xc0\xc0\xc0\xe7Z[\x1b\x1e\xc19\x12\x00(0\
+#\xe8\xd1\x9d;\x03A\x12|^\x10\x84\x0b\xeak*\
+\xe1p\x88\xf0\xfb=p\xbb\x9cp\xba\x5c\xf0{\x1dT\
+\x7f\xaaM\x95IKH\xa7%\xc4\xe2\x09\x0c\x8fL \
+\x16\x9dB,\x9a\xc0E\x17\x9d\x07\xa7\xd3axz>\
+b\xe5\xa8\xf4\x93E\x8e\xd1\xd1\xe1\xaf56\xd6~\x07\
+\x94\x049\x18\xfc\x82s\x0404\xc03\xbf\xd9\xf3\x90\
+\xc0\xf3\x9bB!?\xbc\x1e7B!\x1f<n'\x1c\
+\x0e\x11\x1e\x97\x8b\xe2)\xd3\xd6\xcb\xe6\xb2\xc8\xa4%\xec\
+\xdb\xd7\x09\xbf/\x80\xf6\xf6f\xfb\x02\x0bb\xf8\xce\x92\
+#\x91Hl\xaf\xa8\xf0~\x06@\x16g1\x09\xc8t\
+\xef\xfa\xecs\x7f\xfc\x16G\xb8\xdbC\xa1\x00\xbc^7\
+<n'\xc2\x15Ap<\x07\xaf\xc7\xad_\xa8(\xf8\
+\xfd\x1f\xfe\x8a\xb6\xd6f\x84\xc3\x15\xda\xe9\x13\xb7\xe1\xf6\
+\x0f8\x19\xe4H&\x13\xdb++5\x12\xc8\x86\xe3\xac\
+!\xc1\xb4\x04\x00\x80g\x9f{e\x13\xc7q\x0fy<\
+N\x84\x82\x01\xb8]\x0e\x84\xc3\x01\x88\x9c\x00\x97\xdb\x01\
+I\xcaa\xd7\x0b\xafa\xf5\xea\x95\x16\x95o**\xef\
+\xcc\xe9@\x8eD\x22\xb1\xbd\xaa\xcaw\xd6j\x82\x92\x08\
+\x00\x00\xcf\xfc\xfa\x95\x8by\x9e<\xe5\xf6\xb8BA\xbf\
+\x17N\x87\x88\xfa\xba*\xf0<\x87\xdf\xff\xeeu\x5cp\
+\xc1\x0a8\x1c\x85\xc0W\x0b+\x08\xcc\xbbK\x0e\x0b\x09\
+\xce*MP2\x01\x08!\xe4\xc9\xff\xb7{\xa5\xd7\xed\
+zA\x10\xc5Pe\xc8\x07A\x14q\xac\x7f\x10\xcb\x96\
+,\x80\xcf\xe7\xb5\xbb\xab\xf4\x8a\x9cdrd\xb39d\
+\xb3\x12\xdcn\x97\xcd\x7f\xf3\x1f\x10\x8f'\xb6\xd7\xd4\x9c\
+}$(\x87\x00\x1c\x00\xee\x1b\xdf\xf8v\xc5y\x17\xac\
+\xfa\xad 8\x96\xc5\xa2SX\xbcp.jk\xab\xa7\
+\xb9\xd7\xf6l\xe9\x95,\x93\x1c\x03\x03\xc7\xd1\xd3\xd3\x83\
+l6\x87E\x8b\x16\xa2\xaa\xca\xbe~\xd6\xe7R\x12\x04\
+>\x0b@\xc2YB\x82\x92\x08\xa0\x0e\xa0\x10\xd0\x8c\x1e\
+\xff\x99\xcf\xfc\xaf\xf0e\x97_\xb3\xb3\xa6\xaaj\xe9\xb2\
+e\x0bm\xae/\xa3\x02'\x91\x1c\x83\x83\x14\xf8T*\
+\x0dB\x088\x8e\xfes\xfe\xfcE\xa8\xad\xad-Is\
+$\x12\x89\xed55\x01[\x9f\x008\xf3\xf2\x04\xd36\
+\x89\x01|-\xad\xdb\xdb{XLL%C\x0b\x16\xb4\
+\x83\xb6\x87\xf9P\x14\x05\x8a\x02\xdb\xc3*\xf6\xd7)\xb6\
+\xcf\xb5\x9b\xf7\xa1(\xc0\xc4\xc4\x04\xf6\xee\xdd\x8b\x8e\x8e\
+\x8e<\xf0C\xa1\x0a\xd51U \xcb\x0ad\x19\xb6\x07\
+\x13\x8f\xc7\xb3nxx\xf2\x87\xdf\xfc\xe67\xc3\xa0\x84\
+7\x8ec\x9cq\xd3\xe5m\x06Y\xa9\x18^\x945\x00\
+\xaf^/\x5cy\xe5'\xbe\xbat\xe9\x82fQ\x14\x01\
+\xd8\x03\xcb\xc0\xb26\x17\xbd\xd6\xbe\x0d\xed\xaf-\xfc\xdc\
+\x89\x89\x09\xf4\xf6\x1eF$\x12\x01!\x00!\x9c\x06\xbe\
+\xcb\xe5F{{;*+\xab,\xcf\xb2\xaf\x17%\x01\
+=\xe9ry\xd6m\xde\xfc\xb9\xa5\x92$]u\xc7\x1d\
+w\x8c\x81j\x035\xebA\x87\x94\xcf\x14M`K\x80\
+\x02\xe0\xf3\x00\x84M\x9bno\xaf\xad\xad\xbf\xb5\xa5\xa5\
+\x11\xb2\xb1\xeb\xa8\xc2Y\xf4\xec\xa9 G2\x99Do\
+o\x0f\x06\x07\x8f\xab1>\xc7\xea\x0dQ\x14\xd1\xde\xde\
+\x8e\xda\xda:SY\xec\xb9\x91\xc8\x04B\xa1\x8ai\xeb\
+%\x08\xc2\xd2[o\xfd\xc7_\x01`$\xc8\xa9\x17\x9d\
+Q$(\xa8\x01\x90?IC\x00 \xaeZ\xf57_\
+\x993\xa7Uk\xc0\xfc\x9e\x94O\x0a&'J\x8ed\
+2\x85\xde\xde\xc3\x18\x1c\x1c\x00!\x04\x84\xf0\xea\xb5\x14\
+\xf8\xc6\xc6F466A\x10\x84\xbcgG\x22\xe3\x9a\
+\xb6\xa8\xafo\xc0\x82\x05F\xdf\xc5\x5c\x18\xbb\x97\xe7\xc5\
+\xa5\xb7\xdc\xa2\x91`\xd4\xf8\x9a8CH\x90G\x00\x83\
+\xcd\xcf\xeb\xfd\x1b7~f\xb6\xcf\x17\xf8Tmm\x8d\
+v}\xb1\xd7?Y\xe4\xc8f\xb38r\xa4\x0f\xc7\x8e\
+\xf5#\x97\xcb\xaa\xea^\xab/\xea\xeaj\xd1\xd2\xd2\x06\
+\x97\xcb\x9dwo$\x92o&\x86\x86\x86\x90H\xc4\xb1\
+t\xe9\x0a\x08\x82\x00@)\xe8\xb8\x8a\xe2\x99M\x82\xe9\
+4\x80\xd1\xf6\x8b\xef\x7f\xff\x9a/\x07\x83>\xb8\xddN\
+\xd8\xbd\xb3\xd5?:\x19\xe4\xe8\xed\xedA\x7f\xffQd\
+\xb3Yp\x1cQ{>%K(T\x81y\xf3\xe6\xc3\
+\xe5r\xa9\xe5\xe9@\xeafb\xc0t\x0f@\xe0r\xb9\
+\xd0\xd0\xd0\xa4\x82?]]\x15\x88\xa2\xb0\xf4\xe6\x9b\xff\
+\x81\x91`\x1c\xd4'\x00\xce\x00\x12\x98\x08`\xb1\xfdF\
+\x02\x88\x1f\xf8\xc0\x9a\xaa`0x}\xb1\x98\x7f\x9au\
+\x86\x96k\x0bW\x8a\x10`pp\x00\xbd\xbd\x87\x91J\
+\xa5\x00\x10\x0d|\x00\x08\x06ChmmC \x10\xc8\
+\xd3\x1c\x89\x04\x05~hh@+\x97i\x0cA\x10\xd1\
+\xd8\xd8\x84\xd6\xd6VC}\xa7\xf79\x14\x85j\x02\x03\
+\x09\xc6\x0c\x97\xbe\xa7I`\xa7\x01\xac\xe0\x0b\x00\xc4\x8f\
+~\xf4\xfa\xab9\x8e\x83\xdf\xef\xcb\x03\xba\x94\xc8\xa8T\
+r\x8c\x8c\x8c\xa0\xab\xebm\xa4\xd3\x14xB85~\
+'p:\xddhmmCmm\xadv=\xd3\x1c\xb9\
+\x5c\x0eG\x8f\x1e)\xa0-\x08Z[\xdb\xd0\xd0\xd0h\
+\xe3\x1f(\xc8f\xb3\x98\x9a\x9aDEE\xa5\xa1\xbe\xac\
+)t\x11\x04q\xe9\xe6\xcd\x9f\xdf\x09\xe0#g\x0a\x09\
+\x8a\x11@\xb3\xfd\x00\xc4\xea\xea\xba\xcb9\x8e\xd3\xd4\xad\
+Q\xca\xe9\xf9v\xa2(\x0a\x22\x91\x09\xf4\xf4\xf4 \x1a\
+\x1d\xd7@c!\x1d\xcfS\x07\xaf\xb5\xb5M\xbd\xde|\
+?3\x13\xb9\x5c\x16FmA\x08\x87\x9a\x9aZ\xb4\xb6\
+\xb6\xc1\xe9t\x02\xd0\x09\xc3q\x1c$I\xc2\xb1cG\
+p\xf4h?d9\x8b\xf9\xf3\x17\xa1\xae\xae\xdeX3\
+\xf5\x1d\xf43\x0e\x87\xb8d\xf3\xe6\xcf\xed\xbc\xe0\x82\x0f\
+}\xf6\x92K.\xdc\x0b\x9d%\xefI\x12h\x99@\x83\
+\xfa7\x02\xef\x04\xe0\x02\xe0y\xfc\xf1\xe7\xf7r\x1c\xf1\
+_t\xd1\xea\xa2\x0f,o\x10\x87`j*\x86\xce\xce\
+C\x88F#\x008\x8d0\x0c\xfc\x96\x96\xd6<{\xcd\
+dpp\x10\xbd\xbd\x87\x91N\xa7A\x08\xd4\xe4\x0f\x05\
+>\x18\x0c\xa1\xa5\xa5\x05\xc1`H}\x9e\xf9\xde\xfe\xfe\
+\xa3\xe8\xed\xed\xc9\xd3\x16\x8d\x8dMho\x9f3m\xdd\
+eY\x8e\xbe\xf9\xe6\xebW_r\xc9\x85\xaf\xc3<~\
+\xf0\x9e\xca\x18Z[\xd5\x1a\xffk\xe1\x9f(\x0a~Y\
+V\xa6U\xffE\x1c}\x139\x98\x9364t\x1c\x0c\
+4\xb3g_\x8f\x96\x96V[\x8d\xa3\x9b\x894\xacn\
+\x8b\xcb\xe5\xc6\xdc\xb9\xf3\x11\x0a\x85L\xf7\xb0j\x0f\x0c\
+P\xdf\x22\x93I\x83j\x0bN\x8b\x0ejj\xea\xd0\xd0\
+`\x9f\xdf\xd0\xdf\x81c\x9f\xc1e\xcbV>\xbbk\xd7\
+\x1f\xafV5\x81\xd6\x04x\x0fi\x02;\x02\xe4\x85\x7f\
+\xcb\x97\x9f_I\x08\x01\xcf\x03\xb1X\x14\x81@H#\
+B9\xea_\x96\x81\x5c.\x8b\xce\xceC\x18\x1c\x1c\x00\
+\x05\x80W\x01\xd0S\xb7\xed\xed\xed\xf0z}y\xcf\x8f\
+D\x22\xe8\xed\xed6i\x0b\xaa)\xa0\xf9\x0755\xb5\
+\xb6\xf5\x8aD&p\xf0\xe0\x01\xa4\xd3)\xb0H\x97\xf6\
+|\x0e\xa1P\x08\xcd\xcdm\x08\x06\x03\xea\xbd\xc6w0\
+\xbf\x93\x85\x1c\xc1%K\x96\x1bI\xa0\xc0\x901,\xd8\
+0\xa7\x91\x08@^~\xdb\x98\x07\xe0\x01\x08\x17_|\
+\xf9\x22\x8e\xe3\xa0(\x0a:::\xb1h\xd1\x5c\x84B\
+!d\xb3Vm`~\xb8\x11\x84l6\x8b\xfe\xfe#\
+\x16[\xcdi\xe0;\x9dn\xcc\x9f?\x1f\x81\x00\xed\xb9\
+\xc6v\x8e\xc7\xa7\xd0\xd9y\x08\x93\x93\x11\xb5\x0c\x06>\
+ \x08\x02\x1a\x1b\x9b\xd0\xd0\xd0\x08\x96\x9a6\x0a\xcd\x03\
+\xf4\xa8y\x00=\x1cd\xe9\xe2Y\xb3f#\x1cf\xe9\
+b\xa5\xech\x85\xe3\xb8\xe0\x92%\xcb\x9f\xdd\xbd\xfbO\
+W}\xf8\xc3\x17\xec\x05\xcd\x18\xb2q\x83\xd3\xde\x14\x14\
+\xd2\x00&- I\xb2\xc0\xf3\x1cdY\x86\xa2\x10\x1c\
+8\xd0\x85\xc5\x8b\xe7\x22\x10\x08\x22\x9b\xcdi7\xd3W\
+\xb5w\x02h\xde\xbe\xc7`\xab)\xf8N\xa7K\xed\xb9\
+u\xea3t\x10R)=\x96\xa7\x9aWO\xf9\x02\x04\
+55uhoo\xd7\xfc\x03c[\xa7RI\x1c<\
+\xd8\x91\xa7-\x00\xa8\xe9\xe29\x9a\xb60\xcaLBY\
+B\xb8\xe0\x82\x05\x8b\x7fe \x01\xa0\xae98\xddI\
+`$\x805\x07\xa0\x91\x80\x90\x1cGU-\x05@\x96\
+ettP\x12x\xbd\x01\xe4r9\xc3ch\xd7\xb5\
+j\x83\xaa\xaa0\xce?\x7f\x15::\xdeB&\x93\x86\
+(\x8a\xa8\xafg=\xd7\xccCI\x92\xd0\xd5\xf5\xb6\x9a\
+\xc41\x12\x86\xf6\xfap\xb8\x1a\xb3g\xcf1x\xf6\xfa\
+\xbd\xe9\xb4\x9e\x07P\xa70h\xe0\x1b\xb5\x05\x0d\x075\
+\x07\xb8\xa4\xc6*\x86#\xc7q\xc1\xb6\xb69\x7f\x0f\xe0\
+3\xd6\xc68\x9dIP(\x13h\x1c\x02%\x8aB\xd7\
+T\x12BY\xcf\x88\xc0\xccA0\x18B:-\x99\x1e\
+`\xf7\xba^\xaf\x0f+W\xbe\x0f\xc3\xc3\x83\xa8\xad\xad\
+\x83 \xf0\xea\xb52\x00\x0e\xd9\xac\xa4\x9a\x09\x96\xf2e\
+\xc0P\x10\xa9\xadn\xd5<{\xab\x899v\xec\x08z\
+{{4\xdbN\x9dK\xfa:55\xf5\x98={6\
+x^\xc8\x8bTN4\x8c\x05\x80\xa1\xa1\x11\xfc\xe0\x07\
+\x8f\xb7=\xfd\xf4o\xce\xbb\xee\xba+\xacN\xe1iK\
+\x82bQ\x801\x12\xe0x\x9eh=\xcdH\x84\x83\x07\
+\xbb\xb1b\xc5b8\x1cN\xa4R\x92\xe1\x11\xba\x18\x1b\
+\x5c\x10x444\x020\x93\xa4\xb7\xb7\x1b\xc7\x8e\xd1\
+$\x0e#\x1bS\xfb.\x97\x0b\xb3f\xcd1\xd8j\xbd\
+\x1e\xcc\xb7`\xf72m\xc1\xfe\x1f\x0c\x860w\xee|\
+m\x9c\x00(=R\xa1e\x15'G6\x9b\xc5\x13O\
+\xfc\x1a\xcf>\xbb\x1b\xb7\xdd\xb6\xee\xc2U\xab\x96\xef\xee\
+\xee\x1e\xd8\xde\xde^\x7f\xab\xf11\x00\xe4\xd3\x91\x04\xc5\
+\x12A\xdaA\x88B\x08\xe1\xc1\xf3\x0a\x14E\xce#\xc2\
+\x9bo\x1e\xc0\x8a\x15\x8b\xe1r\x89H&\xa5\xa2c\xed\
+V\x19\x1a\x1a0\xc4\xf2\xc4`\xab9\xf0<\x8f\x96\x96\
+6\x8d0\x86\xa5|\x00h\x1e\xa0\xab\xab\x13\xd9,u\
+*\xd9}\x84\x105\x0f\xd0\x86`\x90.J*\xd4\xee\
+3\x0dc9\x8e\xc3\xab\xaf\xbe\x8e\xef\x7f\xffq\xac^\
+\xbd\x02\xdf\xfd\xee6x<\x1e\x002\x9cN\xef\xba\xee\
+\xee\xa1\xe0\x8e\x1d\x8f~\xe6\xce;\xbf\xc8\x86\x929\x9c\
+\x86$\x98n0H\xfdT\x08\xc7\x11\xb5\xe7\xe5\x13\x01\
+P\xf0\xc6\x1b\x1dX\xbe|\x11\x02\x017&'\x936\
+\x8f\xcb\xcf\xaa\xa5\xd3)\xf4\xf7\x1f1\x80O\x8b\x13\x04\
+\x11\x0d\x0d\xcdhll\xd4\xcc\x04\xa0\xf7|6N`\
+$\x0d@Aq\xb9\x5chiiU\x1d<\xce\xd6\x14\
+\x99\xf3\xfc\xe5\x85\xb1\x1cG066\x8e\x1f\xfe\xf0q\
+\x0c\x0e\x8ea\xcb\x96\xcf\xa1\xad-_\xa3\x89\xa2\xfb\xea\
+\xb5ko\xdc\x09\xe0#\xa73\x09\x0ai\x00\xcbw\x1e\
+<O\x09 \xcb\xb0%\x82\xa2(\xd8\xb7\xaf\x03\xcb\x96\
+-B0\xe8F4\x9a\xb0y\x9c\xb9\x91\x1c\x0e\x17\x96\
+/?\x1f\xdd\xdd\x9d\x18\x19\x19\x04@PWW\x87\xe6\
+\xe66[\x07/\x12\x99@ww'\xe2\xf1\xa9<m\
+!\x8afmA\xcb\xb1wH\x8bE+\x85\xc8A\xb5\
+\x9d\x8c\xa7\x9f\xde\x85'\x9f|\x1e\xd7_\x7f\x05\xee\xb8\
+\xe3\xb3\x86|\x08-\xcfL\x02q\xe9\xda\xb57\xee\x94\
+$\xe9\xaa{\xee\xb9c\x14\xa7!\x09\xec\xa2\x00\xab\xa8\
+&\x80\xe67x\x1eE\x88\xa0`\xdf\xbe\x83X\xbat\
+\x01\x02\x01\x0f&'\x93\x06O\xdb\xf6\xd1\xe0y\x1e\xf3\
+\xe6-@UU5\x9cN\x17\xbc^:\xbd\xdc8\x85\
++\x12\x99@__\x0f&'#`\xaa\x9ei\x0b\x80\
+\xd3\x80\xe7y^\xed\xa5\xe6R\xec\x9b\xb9tr8\x9d\
+<\xfe\xfa\xd7\x03\xf8\xeew\xb7\xa3\xa9\xa9\x0e\xdf\xfb\xde\
+\xdd\xf0z=\x05\xc1\xa7\xa4\xa5\xf3\x22\x05A\x5c\xbai\
+\xd3\xad\xfbW\xaf\xfe\xe0UW^\xf9\x81\xd7\xa1\xcf,\
+R\x08!\xf4\xcaw\x91\x08\xc5L\x80Ih\x22\x88\xa8\
+/]\x9c\x08\xfb\xf6\x1d\xc2\xd2\xa5\xf3\x11\x0e{16\
+\x16\xd7&\x89\xe6\x8bN\x8e\xca\xcaJ\xd39\x80 \x9d\
+N\xa1\xb3\xf3\x10\xc6\xc6\xc6\x0cy~]\xe5\xd7\xd4\xd4\
+\xa3\xb5\xb5U\xd3\x16\xec\xdeb>G9\xe4p8\x04\
+D\x22\x11|\xfb\xdb\xff\x8d\x8e\x8e\xc3\xb8\xfd\xf6\x1b\xb1\
+x\xf1<\xf5\xbe\xe9\xc1gu\x22\x84\x0b\xce\x9b\xb7\xf0\
+W\xbf\xf8\xc5\xcbW\x7f\xecc\x1f2\x8e\x1d\x10\xbc\xcb\
+i\xe3\x92\x86n8\x8e\xd3\x06L\xe8w\x1el\x02&\
+\xcf\xd3C\x1fP\xe1\x01(\xd8\xbf\xff\x10b\xb18\xc2\
+a/\x00R\xd6\xcc`\x9a\xc4y\x0b{\xf6\xfcA\x05\
+\x9f^\xc7\xc0\x0f\x06CX\xb1\xe2|\xcc\x9d;\x0f\x0e\
+\x87\xb3\xac\x99\xc5\xa5\xcc\x0c\xe6y\x1eN'\x8f\x9d;\
+_\xc2M7\xdd\x89\x86\x86:<\xf8\xe07\xb0ti\
+\xf9\xe0\x1b\x93EK\x96,y\xf6\x0f\x7f\xe8\xf8\x18h\
+\xc7c\x11\x96\xeah\x97\x18o\x9ed)C\x03\xe8y\
+\x00Yfqma\x8d\xa0(\xc0[o\xbd\x8d\xc5\x8b\
+\xe7\xa1\xaa\xca\x8bH$\x0eI\xa2\xadl7\xd6\xce\x84\
+\x10@\x92r\x18\x1d\x1d\xd5F\x04\xe9y\x02\xaf\xd7\x8f\
+Y\xb3\xda\x11\x0c\x06U\xd5m\xd7iJI\xe5\xda\x9b\
+%B\x08\xdcn'\xba\xbb\xfbp\xff\xfd\xff\x85P(\
+\x80\x1f\xfc\xe0nTW\x87\x01\xd8E\x08\xa5\x81O?\
+\x15\x10B\x82\xf5\xf5\xf5\xdb\xf7\xec9\xf8\xb9\xd5\xab\x17\
+<\x02=m\xfc\xae\xe5\x0a\x8c\x04\xb0+X\x01\xa0\xf0\
+<\xaf0\x1f\x80\xcd\xae)\x8d\x08\x8aJ\x82\xf9\x08\x87\
+\x03\x18\x19\x89\x19R\xc7\xf6 (\x0aM\x18\x9dw\xde\
+*\x1c8\xf0\x16\x12\x898\x5c.\xb7\xc1\xb3\xd7\xaf\xb3\
+\x97\xc2\xf3\xfb\x0a\x91\x83\x02/\x22\x99L\xe2\xdb\xdf~\
+\x0c/\xbf\xfc\x17\xdc~\xfb\x8dX\xbdz\x85\xd6\xdb\x19\
+\xf8\xe6\xdeo.\xb7\x18\xf8:Q\x14TW\xd7|o\
+\xcf\x9e\x83PI\xa07\x06\xdey\x12\x105\xf7n\x1a\
+\xfc\x81>\x0f@\xdb5\xf4\xd5W\xdf\xdaMU(\xcb\
+\xdc15K_J\xff[1\xfd\x9f\x85N\x0b\x17\xce\
+C(\xe4\xc7\xc8\xc8$\xb2\xd9\x22\xc1\xb6\xb1r\x04\x18\
+\x1e\x1eDee\x95a>@>\xba\xe5(O\xeb\xb5\
+.\x97\x08\x87\x83\xc3s\xcf\xed\xc1\x0f\x7f\xf8\x04.\xbd\
+\xf4o\xb0n\xdd5&'\xcf\x1e\xfc\xc2\xbd\xdf|\x9d\
+\x19|\xfd<\x90H$~\xba|y\x93u=\xa2B\
+\x1f\xf1\xce\x90\xc0J\x00\x0e\x80\x08\xc0\x01\x0b\x01^x\
+\xe1\x95\x87\xfd\xfe\xc0lfW\xcb%\x02@\xb0x\xf1\
+<\x04\x02~D\x22\x09\xc4\xe3\xf9\xfbM3u_R\
+\xc5\x0bD\x15\xa5]G\x1d<\x9f\xcf\x85\xae\xae^|\
+\xf3\x9b\x0fC\x96e\xdc~\xfb&\xcc\x9a\xd5d\xa8s\
+\xf9\xe0[{\xbf\xfe\x1c3\xf8\xacm\x12\x89\xe4\xf6\x15\
++\x9ao\xc5\xbbD\x02;'\xd0\xe85i\x0b${\
+{\x0f\xbf\xc2ql\x08\x97S\xa7jq0\xae\xc61\
+:\x83Vg\x91\x10\xa0\xa3\xa3\x0b\x93\x931\x84\xc3\x1e\
+x\xbd\xce\xbc\x82\xa9\x83f\x7f\xe4U\xb2\x80\xe3gu\
+\xfat2B\x0d\xcb8\x84B\x1e\x88\x22\xc1\xb7\xbe\xf5\
+0\xbe\xf6\xb5\x7f\xc7\x9a5\xef\xc7w\xbes\x97\x06\xbe\
+^\x1fV\xd6\xcc\xc0\xb7ZU+\xf8\x8a\x02\xb8\xdd\xae\
+uo\xbc\xd1\xff\xf8\xb6m\xf7\x87aH\xbd\xe3\x1dr\
+\x0c\x8d\x04P\x0c\x9fF\xf0s\x00r\xdb\xb7\xff\xe47\
+\xb9\x5c.\xce\xf3\x14\xfc\x99\x10\x01\x90q\xe0@7&\
+'S\x08\x87=\xf0x\x0ay\xf0\xf9\x15-\x95\x1c\x85\
+\x9eG\xc7\x05\xdc\xf0\xfb]x\xf9\xe5\xd7\xb0v\xed\x97\
+0>\x1e\xc5\x0f~p/>\xf6\xb1Ka\xeclv\
+\x1d\xafT\xf0\xd3\xe9$\x0e\x1d:\x80\x97_~\x11\x83\
+\x83\x83Z\xdd\xed\x9fG\xcf;\x1c\xce\xab\xaf\xbf\xfe\x86\
+_\xab$`\xeb\x11\xd9\x9c\x82SJ\x04\xa3\x09\x00\xf4\
+Y@\x22\xa8\x1f\xe0\x86n\x06\x82\xff\xf2/\xffv\xdd\
+\x95W^\xf3y]\xad\xc9y!W)\xa6A\x10\x04\
+,X0\x07\x81\x80\x1bSS\x19\x8c\x8e\xc6\xa0\xcf\xdb\
+/\xa1\xd2e4\x07\xcf\x13x\xbdNx\xbd\x0etv\
+\x1e\xc1\x03\x0fl\xc7\xd0\xd0\x18\xbe\xf0\x85MX\xb2\xc4\
+\x1c\xd6\x19\xbf\x17\xeb\xfdv\xe0KR\x16G\x8e\xf4\xa0\
+\xbf\xbf\x9f\xd5\x12\x1c\x07\xb4\xb5\xcdF]]\x93m\xef\
+g\x04`\x0es6+\xed{\xf2\xc9G\xaf\xbc\xe7\x9e\
+\xaf\x8cC\xdf\xc0J\xad\x86rJ\xf2\x05V\x02\x18\xa7\
+\x82;@\x09\xe0\x01%\x80\x1f@\xf0\xde{\xef\xbf\xe6\
+\xdak?\xfe\x19\xb3}+\x9f\x08\x0e\x87\x03\x8b\x17\xcf\
+\x85\xcb%j$(X\xc9\x19\x92\xc3\xe3q \x10p\
+!\x93\xc9\xe0G?\xfa9~\xf1\x8b\x97p\xfd\xf5W\
+`\xfd\xfak\xf2\x1c6\xe3\xf7rT\x7f.'\xe1\xe8\
+\xd1~\x1c;vDsn\xd94v\x00\xa8\xabkD\
+k\xebl\xf59\xf6\xe0\x1b\xcb\xca\xe5r\xd1\x9e\x9eC\
+\x1f\xb9\xf6\xda\x8bY\xd6\x90icE\xbd\xee\xe4\x13\x00\
+\x80]$ \x82:\x82n\x00>\xe8$\x08l\xdbv\
+\xdfG>\xfe\xf1O\xde\xcc\x1aa\xa6D\x10E\x07\x16\
+/\x9e\xa3\x91`l,\x0eY\x96\xcb\xf4\xea\xf3\xc9\xe1\
+t\x0a\x08\x85\xdc\xe08\xe0\xe5\x97\xff\x8c\xef\x7f\xffq\
+\xd4\xd6V\xe3\x0b_\xd8\x84\x9a\x9aJ\xb5.'\x0e\xfe\
+\xd0\xd0 \xba\xba\x0e!\x9b\xcd\x19\x1cX\xfaYYY\
+\x85\xd6\xd6Yp8\xd8\xaa\xa5\xe9\xc1g\xff\xcb\xe5\xe4\
+\xe8\xa1C\x1dW}\xf2\x93\x97\xee\x85\xc1\x0f\xc3) \
+\x81\x1d\x01\xd8L`\x16\x0e\xbaa&A\x00\x80\x7f\xeb\
+\xd6\xaf_\xfew\x7f\xb7v\x13\x03z\xa6Dp:\x1d\
+X\xb8p\x0e\xdcn\x11\xe9t\x0e\x03\x03\x11\x95 \x85\
+\x13E\x85D\x10xTVz\xe1t\x8a\xe8\xef\x1f\xc0\
+\x03\x0fl\xc7\x9bov\xe2\x8b_\xbc\x09\x17^\xb8B\
+\x9b\xd0\x99\x1f\xae\x95\x07\xfe\xe0\xe0 \xfa\xfa\x0ek\x8b\
+WX]\x09\x01\xfc\xfe\x10\x9a\x9b[\xe0\xf7\x07\xa7U\
+\xfb\xf9e\xe9f%\x9b\x95\xa3\xc3\xc3\x03\xb7]~\xf9\
+yO\xc1\xac\x09\xd4\xdbN\x0e\x09\xec\xd6\x05X\xcd\x80\
+\xd1\x17`\xfe\x80\x1f\x80o\xcb\x96\xaf\xff\xed\xa7?\xbd\
+v\xa3\xd1\x03\x9f\x09\x11\x1c\x0e\x11\x8b\x16\xcd\x85\xd3)\
+ \x93\xc9\xe1\xf8\xf1\x88\xad\xe3d\xa8\xb6\xe9/\x8e\xe3\
+\x10\x0a\xb9\x10\x08\xb8\x91Lf\xf0\xf0\xc3?\xc7SO\
+\xbd\x80+\xaf\xfc \xd6\xaf\xbf\x16>\x9f\xa7 \xf8\xc6\
+\xef\xcc\x16\xeb\xd7\x99\xc1g\x13L\xe9\xa0\x14X\xbb\x01\
+ p:]hnnEuu\x8dm\xc8788\
+\x88#Gz\x11\x0a\x85\xd0\xde>\xdfT\xae\x15|Z\
+UZ\xf6\xf8\xf8\xc8mk\xd6,{\x18\xa7H\x13\x98\
+\xb6\x88\xb1\xd1\x02,'\xc0H\xe0\x03%\x01\xd3\x06\xbe\
+\xbb\xee\xba\xf7\xd2O\x7fz\xc3\x0dF\xb0gB\x04Q\
+t`\xd1\xa29\x1a\x09\x86\x86bH\xa7\xe9\x1a\xccb\
+\x8bMB!\x0f\xfc~7\x14E\xc6_\xfe\xf2\x16\xbe\
+\xf9\xcdG\xe0\xf1\xb8\xf1\xc5/n\xc6\xec\xd9\xcdZ\xf9\
+\xb4\x1ch\xe51)\xd6\xfbY\xfdb\xb1)tw\xbf\
+\x8dH\x84\x8dF2\x0dE\xe7\x19\xd6\xd77\xa2\xa9\xa9\
+E}\x8e\x19\xfcHd\x1c}}\xbd\x88F#\xda\x0c\
+\xa7`0\x84y\xf3\x16\x80\xe3\x84\xa2\xe0\xab5\xc2\xf8\
+\xf8\xe8mk\xd6,c{\x1c\xb3-n\xd5\xea\x9e\x18\
+\x09\xec\x08@ki\xd8\x11\x04zf\xd0\xa8\x09|\xea\
+\xe1\xdd\xb2\xe5\x9e\xcb\xd6\xae\xdd\xb8\x81\x02;s\x22\x88\
+\xa2\x88\x85\x0b)\x09d\x198v,\xa2\x91\xc0*\x81\
+\x80\x13\xa1\x90\x0f\x82@p\xfc\xf80\xfe\xf3?\xff\x1b\
+{\xf6\xbc\x89\x8d\x1b\xaf\xc5u\xd7\xfd\xad\xa9L\xdaR\
+Z\x8bi\xcf\x98N\xf5\xd3\xfd\x08z\xd45\x0c\xe6\x09\
+\x22\x84\x10\xd4\xd77\xa1\xa9\xa9\x19</\xa8\xcf\xd1\xef\
+\x8f\xc7c\xe8\xea\xeaTg%\xeb\xf3(\x09!p8\
+\x9cho\x9f\x0b\x9f/\x88\xe9\xc0g\xdfS\xa9\xd4O\
+\xdf\xff\xfe\xd9\xb7\xc2\xbc\xbd\xad\x82\x13$A\xde&Q\
+\x16-`t\x08\xb5eb\xd0\x89`$\xc1\xa5\xeb\xd6\
+m\xdc\xc0\x18=S\x22\x88\xa2\x13\x0b\x17\xce6\x91\x80\
+\xce5\xa4\xe2\xf18PQ\xe1\x85\xdb- \x93\x91\xf0\
+\xd8c;\xf1\x93\x9f<\x83\x95+\x17\xe1K_\xda\x0c\
+\xaf\xd7ciT\xb9l\xf0\xb3Y\x09G\x8f\x1eA_\
+_\x0fk\x15\xd66\x00\x80p\xb8\x0amm\xedp8\
+\x1c\x86r\xe8\x97T*\x89\xbe\xbe^\xdb\xa9\xec\x82\xc0\
+\xa3\xb6\xb6\x09\x8d\x8dMZY\xac\xae\xc5\xc0g\xd7\xa5\
+R\xc9\x9f\xae^=\x87\x91\xe0\xa4d\x0d\x8b\x11\x80\x1d\
+L\x0b\x18I`\xd4\x04\x8c\x08\xde\xbb\xee\xfa\xfa%k\
+\xd7\xde\xb0\x81\xd9\xf6\x99\x12A\x10D\xcc\x9f?\x1bn\
+7%\xc1\xc8H\x0c\xc9d\x06UU~x\xbd\x0e\xe4\
+r\x0a^\x7f\xbd\x03\x0f<\xb0\x03\xb1X\x02_\xfa\xd2\
+f,_\xbe\xc0F\x9d\x96\xe7\xf4IR\x16\xfd\xfd}\
+\xda\x0ac\xc08\xf1\x84N0mjjE0\x18\xb4\
+\x80\xa7 \x97\xcb\xa2\xb7\xb7\x07\xc7\x8f\xb3_\xd33\xce\
+J\x06\xea\xeb\x1b\xd1\xd8\xd8\x0c\x8ec3\xa1\xadu\x05\
+t\x02\x14\x1eLJ\xa5\xd2\xcf<\xf3\xcc\xd3\xb7\xdew\
+\xdf\x17X\xae\xe0\x844\x81\xed6q\x16\x12h{\x04\
+\x80\xfa\x03l\x9c\x80\xe5\x08\xf2H\xb0n\xdd\x0d\x1bt\
+`\xe9\x0b\x94K\x04\x9e\x171o\x1e%\x81Q\x06\x06\
+\xc6\xf0\xe8\xa3\xbf\xc4\xd3O\xef\xc2\xc6\x8d\x1f\xc3\x86\x0d\
+\xd7\x16h\xd0\xf2\x9c\xbe\xc1\xc1\xe3\xe8\xed\xedA2\x99\
+\x84\xfe\xfaT\x5c.\xb7\xe6\xe0Y\xcb\xa2S\xd9\xfb\xd5\
+\x15O9\xb5\xfd\xa0\xdd_Y\x19Fk\xeblu\xde\
+B\xbe\xd37<L\x9d\xc3\xa6\xa6VTW\xb3\xd1N\
+\xf3\xc0\x92U\xcbH\x92\xb4\xef\x97\xbf|\xea\x0a\x03\x09\
+f\xec\x18\x16\xdc'\xd0\x86\x04VM\xe0\x04%\x00#\
+\x01s\x10U\x12P\x9f\xe0D\x88\xe0v;1wn\
+;\x04\x81\xce\x11\xd8\xb5\xebU<\xf0\xc0chn\xae\
+\xc3\x97\xbf\xbc\x1955\xc6i\xe2\xe5\x83\x0f\x00##\
+\xc3\xe8\xeaz\x1b\xa9T\x12\xc6y\xb0\x84\x00</\xa2\
+\xa1\xa1\x11\xcd\xcd-\xb6=rpp\x00]]oC\
+_/\xa8\x9b\x8a@ \x88\xa6\xa6f\xd5\xce\xe7{\xfc\
+\xa3\xa3\xa3\xe8\xe9\xe9B:\x9d\xd6\xeemkkG]\
+]]\xc1\xdeO\x17\xe7\xd2\xef\x99Lz\xdf\xb3\xcf\xfe\
+\xe2\x84IPt\xa3H\x8b?`\x0d\x0fY\xa6\xd0N\
+\x13x\xb6n\xfd\xe7K\xd6\xaf\xdf\xb8\x81\xb2v\xe6D\
+\x10\x04\x11\xbbw\xbf\x8e?\xfc\xe15\x8c\x8fO\xe2\xcb\
+_\xbe\x19\x17^\xb8\x12\x85{Ii\xe0\xd3\xfd\x08\xba\
+U\xcf^{_0\x9bM\x81o\x05\xcfsy\x80\x8c\
+\x8c\x8c\xa0\xbb\xbb\xd3\x04\x1eS\xf5.\x97\x0b\x8d\x8d-\
+\x9a\xb60\x9a\x19E\x01\xa2\xd1\x09\xf4\xf5\xf5\x22\x16\x8b\
+j\xf7\xb2\xb2=\x1e\x0f\xe6\xce]\xa8\xcdr\xb2\x82o\
+~/\x19\xb9\x9c\x1c\x1d\x188~\xf9'>q\xe1\xeb\
+\xa0\xe0\xe7\xd4\xb2N\x0e\x01\xd4\x8aYM\x81\xddx\x81\
+\x91\x04>\xf6}\xeb\xd6\x7f\xbed\xc3\x06\xea\x18\x9e\x08\
+\x11>\xff\xf9\xff\x0d\x00\xf8\xd9\xcf\xbe\x85P\xc8\x0f\x14\
+\xb1\x91\xd39}\xc9d\x12\x1d\x1do\x19\x80'\x86\xe4\
+\x12\x87p8\x8cY\xb3\xda\xe1p8M\xf7)\x0a\xb4\
+\xc9\xa9\xec^=*\xd0\xc3\xc1\xc6\xc6f\xc0&\xd9\x93\
+N'\xf1\xf6\xdb\x87\xb4\xa8\xc0X\xae\xc3\xe1Fcc\
+\x13\xaa\xaa\xf2M\x0c}N>\xf8\xecoY\xceE\x07\
+\x06\x06.\xff\xc4'.dY\xc3\xb2|\x81R\xa7\x84\
+)\xd0cO\xf67}\x8bB);\x00\xf7\xde{\xe7\
+.\x8e\x03\xd6\xad\xdb\xb4\x81\xe7\xe9\xc2RYV\xb4\x19\
+E\x8a\x02\xd5)bD \x00\xf4\xff\xb3\xd0IQd\
+\x10\xc2\xe1\xad\xb7\x0e\xe2\x82\x0bV\x18\x16\x83\xd2\xaaX\
+{\x7f^\xe5\x15\x05\xc9d\x12==\x87\x0d!\x1d\xab\
+>\x00\xb0%\xe2-\x08\x04\xf4\x0c\x1e{\xcdd\x92\x8e\
+\xf0\xe9;\x8d\x99ME]\x1d\xcd\x03\xf0<\x0f+\xf8\
+\xa9T\x02}}\xbd\x18\x1e\x1eR\xcb5\x93\xa6\xb6\xb6\
+\x01uuu\xe0\xb8B\xefT\x18|@\x01\xc7q\xc1\
+\xda\xda\xfa\xe7~\xfc\xe3\x9f\xbdo\xe3\xc6O\xf5\x00\xe5\
+M2\x9d\x96\x00\x8a\xa2\xb0\x1f[d\xde&k\xe5\x1c\
+\x80\xcc4\xb7\x93\xbb\xef\xbe\xf3EE!d\xc3\x86M\
+\xeb\xa9sW>\x11\xd8\x8bOM\xc5\xf1\xa7?\xbd\x81\
+\x0b.X\xae\xc6\xde\xa5\xa9~\x80\xf6\xde\xd1\xd1Q\xb0\
+Q:\xa6\xea\x9dN'ZZ\xdaPUUkz\x1e\
+h\xd8\xa5\xe6\x01\xe8\xb0.\x03\x8f\x91\xa7\xba\xba\x16\xcd\
+\xcd-&\x95M\xebB\xf7A8v\xec(\xfa\xfaz\
+M\xf72\xd2UW\xd7\xa0\xa5e\xb6F\x1a\xd6\x0e\xe5\
+\x80\xcf\xca\xcaf3AA\xf0\xce\x02\xd0\xab\x16pr\
+5\x80\x81\x04Z\xdci\xf8\xb7d\x7f\x97.\xf7\xdc\xb3\
+e\x17\xc7\x11e\xfd\xfa\x1b7(\x0a}\xe1r\x88\x00\
+@\x9d\x7f@05\x15\xc7k\xaf\xbd\x81U\xab\x96k\
+!U)v\xbf\xb6\xb6\x01^o\x00\x87\x0eu \x1e\
+\x8fC\x14y\xd4\xd55\xa3\xa5\xa5%ox\x97\x8e\xf0\
+\xd1-d\x98\x92\xb3\x86\x83\xcd\xcd\xadj\xbe_6\x01\
+\x22IY\x1c?\xde\xaf\xaeU\xcci\x93a\x14\x85~\
+\x06\x02!\xcc\x9a5G31f\xd2\xe9R*\xf8\xb4\
+\xcc$$)\xa3\xedg\x5c\x8e\x94<+\xd8\xa2\x09\xac\
+\xbaV\xb1\x14\x9eW\x91m\xdb\xbe\xf6\x22\xa0\x90\x1bn\
+\xd8\xbc\x9e\x86_\xa5\x13\x81\xe3xu\xfa9\x0fYV\
+05\x95\xc4\xde\xbd\xfbq\xdeyK\xb4\xa2J\xf1\xf8\
+\xbd^/\x96-[\x89\xa1\xa1\x01\xd4\xd4\xd4i\x0bI\
+\x18\x08t\xa7\xb1>\xf4\xf7\x1fA.'\xe7\xf5Z\x97\
+\xcb\x8d\xb6\xb6\xd9\xa8\xa8\x08\xab\xcf77\xc3\xe0\xe0\x00\
+\xfa\xfaz\x0d;\x9c\xe9\xf7z\xbd~\xb4\xb6\xce\x82\xdf\
+\xef7i\x99B\xbe\x8c\xb9\xed\x8b\x0f&\xa5\xd3\x09\x16\
+\x822\x93\x5c\xb2\x19(\x99\x006b%AF\xab\x9d\
+.&\x22l\xdb\xb6e\x17\x00l\xdc\xb8y=u`\
+J#\x02\x9da\xc4\xab3\x8c\xe8\xb3&'\xa7\xd0\xd1\
+\xd1\x89\xa5K\x17h\xe3\xf0\xa5d\xfax^@CC\
+c^C\x0f\x0d\xd1<@*\xa5{\xf6\x00\x1d\x87\xe0\
+y\x11\xcd\xcd\xad\xa8\xabk\xb0\xed\x91\xd1\xe8\x04\xde~\
+\xfb\x00\x92\xc9\xb4\xc1G`\xa4\xa1QA8\x5c\x8b\xe9\
+2}\x85T\xbfU\x8c\xef\x94\xc9$\x91\xcdJ\x90$\
+I[c`\x7f\x97\xbd\x94E\x00\x8b\x16`&\xc1Z\
+ \xb1|\x9a\xbeo\xdbF\xcd\xc1\x0d7l\xde`\x9c\
+^^\x8c\x08\x82\xc0\xc0\xd7\xa7\xa0\xf3<0::\x8e\
+\x03\x07\xba\xb0p\xe1\x5cH\x92>f0]\x8e_o\
+h:Xs\xf0`\x87\x01x\x98\xc6\xf6\x19\xf0</\
+\xe4\x81\x1f\x89D\xd0\xd7w\x18\xd1(\x0d\xe9\x8c>\x82\
+ \x88\xa8\xabk@mm\x03\x04A0E'\xe5\x80\
+o\xd7\xfb\x8d\x92\xc9\xc4!\xcb\x0a$I\xb6\xb6\xf7\xc9\
+q\x02\xadR\x80\x04y\x97\x15{\xc6]w}\xedE\
+EQ\xc8\xc6\x8d7\xad\xb7\xae3\xb0#\x02\xb3\xff\xc6\
+\x06f\xfe\xc1\xd0\xd00\x08\x01\x16,\x98\x03I\xca\x95\
+\x05~*\x95DWW'2\x99\xb4a\x16\x0f-\xa3\
+\xa6\xa6\x0eMM-p\xb9\x5c\xa6\x04\x8c\xa2\xc8H\xa5\
+R\xe8\xee\xee\xc4\xd8\xd8\x08\xcc>\x02\x00p\xa8\xae\xae\
+Ak\xeb,\xc3 \x91\xb5\x0d\x8d\x9f\xe5;}\xfa{\
+)H$\xe2\xc8\xe5d\xa8\xbb\xd7\x9e:\x1f\xc0(6\
+\x91\x81\x9d\x14RG\x04\x00\xd9\xbau\xcb.\x80\xc3\x8d\
+7\xde\xb4\x1e6\x0bN\x8cD\xe0y\xa6\x01\xf4-j\
+\x00\x9d\x08\x83\x83#\x00\x80\x85\x0b\xe7\x9av*)\x06\
+>\xa0\xc0\xe9ta\xc5\x8a\xf3\xd1\xdd}\x08CCC\
+\xda\xb2\xb3\xa6\xa6V\x04\x02A\xf5Z\xfd\xf5\x92\xc9$\
+\x8e\x1c1\x8e\x0e\xb2qj\xfa\x19\x0c\x06\xd0\xde>\xcf\
+\x10\x15\xd8\x0f\xf2\x98\xdb\x92]W\x1e\xf8<O\x10\x8b\
+E\x90\xcd\xe6\xa0(2\xb2\xba\x02<u&\xc0\x5cq\
+\x8d\x04\x80\xbd\x16\xb0\x13v\xbd\x02\x00[\xb7~u\x17\
+@\xb0i\xd3M\xeb)X\xf6D`k\x13\xd9\x1e\x05\
+vD\x18\x1a\x1a\x05\xc7\x11\xcc\x9f\xdfn;\x84l\x05\
+\x9f\xfd\xcd\xf3\x1c\xe6\xce]\x88`\xb0\x12\x1c\xc7#\x1c\
+\x0e\xe7\x81\x22It\xfb\x19:H\x9438\x87t\x1b\
+[r\xfcT\x05\x00\x00\x11\xd0IDAT\x8f\xc7\x8b\
+\xb6\xb6\xd9e\x0d\xef\xda\xa9\xf4R\xc1\xa7\xdaPA,\
+\x16\x81,\xe7\xd4\xb6\x92\xca\xb6\xff\xc0\x899\x813%\
+\x01\x13\x02\x00[\xb7\xde\xb1\x8b\xe3\x00j\x0ex\xd8\x11\
+\x81M57\x9b\x80|\x22\x0c\x0e\x8e\xc0\xe1p`\xd6\
+\xac\x16$\x93\x92Z\xc7\xfc\xaa\xd9\x01B\x07b\xf2\xd5\
+qo\xefam\xfb\x19\xa6\xeaY\xb9N\xa7\x0bMM\
+-\xa8\xaa\xaa\xb1Q\xe7\xb4\xdcr\xec~~\x1d\xed\xc0\
+\xa7s\x1eGF\x8e#\x93\x91\xb4\x0c\xab\xea\x03\xbc\xb3\
+\x04P+\xa5\x00Z\xcaX\x1b\x90(G\xee\xbc\xf3\x8e\
+\x17\x09\x01n\xbc\xf1\xe6\xf5\xb2\x0cX\x89\xc0\xf3\xbc\xaa\
+\x01x\x00\xf9[\xd4\xb0|\xbd,\x03G\x8f\x1e\x07!\
+@[[+\x92\xc9\x0c\x14%\x97\xd7\xfb\xf3\xdf\x81\x9e\
+7\x02B\xb7\xae\xe9Qw+\xd7w*\x03h}\xea\
+\xeb\x1bQ_\xdf\xa8\xe5\x22\x8c2\x13\xf0\xad\xbd?\xbf\
+\x8e\x14|\x97\xcb\x81T*\x8eh4\x02\xb6s+\xbd\
+'k\xffr\xd3\xc8\x09\x13\xc0PA\xa3_\x90\x9b\xe6\
+\xf2<\xa6n\xd9r\xc7\x8b\x00\xb0i\xd3-\xeb\x15\x85\
+\xce\x0b`D\x10\x04}\xd1\x89\xa2\x187\xa4\xa0\xaa\x90\
+9\x84ta*\x87#G\x06A\x08\x87\xb6\xb6f\xc4\
+\xe3i\xe8\xdb\xd9\xd8\xaf\xe21\x8a,+\x18\x1b\x1bA\
+WW'd9k\x99\xd4A5Ek\xebl5*\
+0\x82g\xff\xbc\x13\xf5\xf8\x8dd\xa7\x0bid\x0c\x0c\
+\x1cC6+\xc3\x98\x84\xcaM\xd7\xe2\x05\xe4\xa4\x11\x00\
+\xc8#A!\x93P(l\xc4\x96-w\xbc\x04\x00\x9b\
+7\xdf\xb2^]%\x0bYfK\xd3i>\x80\xfa\x05\
+\x80\xbe!\x05\xc0\xb4\x82\xa2@3\x1dT\x13\x10\xb4\xb6\
+6!\x1eOk\xb6R\xadiAP\x00\xba\x0f\xe1\xf2\
+\xe5.tt\xec\xd7\xf6\x14\x0e\x04\x82\x9a\x83\xa7\xbe\xab\
+\xed\xfd\xf9\xbd\xdf\xd4B3\x02\x1f\x00\xbc^'8\x8e\
+C__/\x92\xc9\xa4v\x9d1B\xb1i\xdbi\xe5\
+\xa4\x12\x000\x91\xa0\x98O`m\x1e#\x09^\x048\
+\xdct\xd3-\xeb\xe9 \x10\xcd\x00\xa6R\xa3\xeaw\xa3\
+\x83\xc8\xcc\x00\xfbM\x01\xb3y8z\xf488\x8e\xa0\
+\xb9\xb9\x11\x89D\x06\x99L\x16\xa5\xf6H\xaf\xd7\x8f\x15\
++\xde\x87\xa3G\xfbPYY\x89@ X \xb4,\
+\xc7\xee[\xdb\x8a}\x16\x06\x9f\xe7\x09|>\xba\xb6`\
+p\xf08\x22\x91\x88\xda1\x8c#\xab\xb2i\xc7\xd6r\
+\xe4\xa4\x13\x00(Y\x13h\x97[>\xb1e\xcb?\xbd\
+\x08\x007\xddt\x8b\x9a'P\x90J\x0d\x80\xe3t\xdf\
+\xc0H\x04\xa00\x11\x8e\x1c9\x06B(\x098\x0e\x16\
+\xe7\xb0x\x8f\x14\x04\x1emm\xb3\x8dU;\x01\xf0\xcb\
+w\xfa\x5c.\x01\x1e\x8f\x03\xb2\x0c\x8c\x8d\x8d\xe2\xf8\xf1\
+\xe3\xda,&\xdd\xf6\x9b\x9e\xf7\xee\xf9\x00VQI\xc0\
+\xfe4N\x99\xb1\x9f\xe6\xab\xde\xc6\x8e-[\xfei\x17\
+\xcfs\xca\xe6\xcd7oH&G\xc0\xcf?j\x88\x02\
+\xca#B_\xdf1\x08\x02\x8f\xc6\xc6:5\x01$\xe1\
+D\xd4\xb1\xfe\x8e0\xfc\xef\xe48}\xcc\xe4\xf9\xfd.\
+8\x1c4\x838>>\x82\xc3\x87{4\xe0\xd9}\xba\
+\x13X\xa4E\xa7\x91SF\x00\xa0 \x09Xu\xa7\xb3\
+W\xca\x1dw|i\x17!\xc0\xd4Td\xc5\xa4\xd4{\
+\x84\xe3\xc8U\x80\x11\xec\xd2\x89\xd0\xd7w\x0cN\xa7\x88\
+\xeaj\xfa\x9bG\xc9$\x1d\xc9.?\xfbf\xfe\x9fM\
+\xb5O\xc8\xe9s\xbbE\x04\x02n\xed\xfa\xe3\xc7\x87\xd4\
+!e\xa6\xf2e\x8b\xfa\xa7\xf7\xe5f\xe8\x05\x9eR\x02\
+\x00\x05I\x00\x14&\x80b<\xbe\xf2\x95/\xfd\x16\xc0\
+\x1e\xbc\x047\xb7\x89\x5cE\xe3\x7f\xf5ae\x10\x01\x00\
+:;\xfb@\x08\x87\xaa\xaa0DQ\xc0\xe4dB\xad\
+#\xabk\xe9\xe0O\xe7\xf4\x95\x0b>\xcf\xf3\x08\x85<\
+p8\xe8\x88g6\xab\xe0\xed\xb7\xbb022l\x0b\
+\xbcN\x08:bzZD\x01\x85\xc4@\x02c3e\
+\xa1\x03m\xba\xdcp\x98f!ut\xec\x7fm\xd1\xa2\
+%\xab\xf4D\x10\xfd\x07\x0d\x19\x01E\xa1D\xa0~\x83\
+>\x9f@\x96\x89\xa6*;;{A\x08AUU%\
+\x00\x17\x22\x11\xf3\xae\xa6'\x06~\xf9c\xfb<\xcf!\
+\x18\xf4\xc0\xe3qh '\x93I\xbc\xf5\xd6!LM\
+M\x99\x80\xa7\xcf7\x03\xaf\xd7\xf7\x1d\x1c\x0b\x98\x89\x94\
+\x11\x1d\x18\x9dBv\xad\x0c@\xb9\xe5\x96u?z\xf0\
+\xc1\xedX\xb4h\x99J\x02\x0a2\x0d\x07\xd9\x08\x22\xdb\
+\xb0\x8a\x03\xbb\xc6\xbaqUWW/x\x9eCee\
+\x05\x00\x0e\x13\x13\xf1<[l\xa8\xb7\xfaI\xab4\x13\
+\xbbo~\x1e-G\x10h\x8f\xf7z\x1d\x06\xc7\x0e\xe8\
+\xe9\xe9C_\x1f\xdd-]\xcf]\x14\x06\x9e\x9d'\x84\
+\xb3\xebL\xd3\xca;F\x00\xa0$\x12X{\xbf\xd5o\
+\xc0\xcd7\xaf\xfb\xd1\x83\x0f\xee\xc0\x92%\xcbV\xc9\xb2\
+\x0e\xb21u\x0c@\xeb\xf5\xf6\xe6A\xc1\xdbo\x1f\xc6\
+\x82\x05sPY\x19T\x87\x96\xe3jJ\xb9\x90\xd3w\
+b\x1e?\xfb\xdb\xebu!\x18t\xc1\xe9\x14A\xb5\x13\
+\xbd\xfe\xf8\xf1Atw\xf7 \x91HZ\x80\xd7m\xbd\
+^\xae\xfe?\xaa\x1dd$\x93\xc9\x08f@\x80ig\
+\x05\x9f\x0a\xb1\xacA$\xb0\xfcD\x1d\xf4\x05\xa9l)\
+\x9au\xed\x81\xe7\xc1\x07w\xdc\xb4t\xe9\xf2U\xcc\x1e\
+\xb2\xa5e\x80\xde\x9b\xf4\xf3\x8a\xe1\xbc~\x0d\xc7\xf1X\
+\xbcx\x0e\x02\x01?$I_\x9a>\xbd\xea/\x0f|\
+\x87CD0\xe8\x82\xc7\xe3\x80 \xf0\x06\xbb\x9d\xc3\xd1\
+\xa3\x038|\xb8\x0f\xf1xB\xbb\xc7\x0a\xbc^\xa6Q\
+\x0bPR\xb3\xbfo\xbf}]\x10tR\x0e\xdblJ\
+9\xd53\x82f,\x86\xf1\x03\xeb\x84\x12\xc5\xe6\x00\xcc\
+\xccV\x00\xe0\xe6\x9b\xd7\xfe\xe8\xa1\x87v`\xc9\x92\xe5\
+\xab\x14\x85\x80\xe3\xa8\xdag\xbd\xc4\xceO\xa0e\xea\x1a\
+AQ\xe8/\x9f\xac\x5c\xb9\x18.\x97\x03\x0d\x0d!\x1c\
+;F;Rq\xd5o|\x17\xd8^\xe7\xf39\xe1\xf1\
+8\xe0\xf3\xb9 \x08\x9cf\xc7eYF,\x16\xc3\xd1\
+\xa3\xc7q\xf4\xe8 \xd2\xe9\x0c\xac!\x9d\xd1\xc9\xb3\x02\
+o$;;\x9fN\xa7\xfe`i\xaf\x92\xe5]!\x80\
+E\x8c\xb6>\x0fh\x9bk\x01\x954\x9b7\xaf\xfd\xd1\
+\xc3\x0f\xef\xc0\xe2\xc5+V\xb1\xb9\x01\xe5\x12A\x96e\
+\x1c8\xd0\x89%K\xe6\xc1\xe1\x10\xd1\xd8X\x89\xfe\xfe\
+1\xe4r\xa5\xd9}\x80\xfd\x00\x95\x08\xaf\xd7\x01\x8f\xc7\
+\x05\x8fG4i\x91l6\x87d2\x81\x81\x81a\x1c\
+;6\x8c\xd1\xd1\x09\x14\x0b\xe9t;_\x1cx6\x12\
+\x98H\xc4w\x96\xd0v\xb6\xf2\xae\x98\x00S\x05\xcc3\
+/\xd9\x90\x9b`8\xack\x11\xf3\xcc\xc1#\x8f\xfc\xec\
+\xa6\xc5\x8b\x97\xae2\x02V\xaei\xf0x\x9c*\x09\xe8\
+\xd4\xaf\xbe\xbe\x88\xda;i\xe5d\x19p\xbby\xf0<\
+\x0f\x97K\xd46\x9f\x12E\x1e\xa2h\x8c\x18(0\x92\
+\x94\xc5\xc8\xc8\x04\x86\x87G100\x82\xc9\xc9\xb8\x01\
+P\xfb\x90nr2\x06\xc2s\xe0\x09\x07\x10\x80S'\
+\xc1X\x81\x07\x8c\xa9`\x19\xcf<\xf3\xe4\xac\xdd\xbb\x7f\
+1\x02:C[\xdb?\xa0\x14\x13\xf0\xae\x13\x00\xc8#\
+\x81q\xaf<F\x00\xe3~E\x8c\x00\x1eXH\xb0t\
+\xe9\xf2Uf\x0fY\x07Yw\xc6\xcc\xff7n\x5c\xc5\
+H\xe0t\xd2\xd9\xc2\xe9tN\x03\xb8\x90(\x0a\x90\xcb\
+\x01\x91\xc8$&&\xa2\x18\x1b\x9bD$\x12\xc3\xd8\x18\
+5%\xd6\x9c\xbd]H\x97\xcdf\x11O$\xe0\xf5{\
+\x00B \x8a\x028N@6+\x81\x00\xc8\xa4$d\
+\xa5\xacf\xfb\x19\xf0\x8a\xa2 \x99L<\xbem\xdbm\
+\x9f\x05\xb5\xff\x8c\x00\x8a\xfaN\xef\x0d\x02\x00EI \
+\xc2^\x13\xe4\x91\xe0\xc7?~Bs\x0c\x8d\xea\xdal\
+S\xed\x89\xc0\xb4\x82\xc7\xe3\xc4\xa2Es\xf2V%\x03\
+@4\x9aD&\x93A$2\x85L&\x83\xf1\xf1I\
+\xc4\xe3\x09D\x22Sy\x0ef>\xf0\xac\xac\xfc\x90\x0e\
+<u\x14EQ\x04\xc7\x11\xa43\x12\x04A\x80 \xf0\
+\xc8HY\x88\xa2\x00)%al$\xa2\x01\xcf\xca\xf9\
+\xf3\x9f\x7f\xff\xbe'\x9e\xf8\xafNP\xf0\xb3P\x09P\
+\x0a\xf8\xc0iD\x00\xa0$\x12\xb0\xc8\x80E\x07^\xcb\
+\xa1\x91\x00`\x0d\x0c\xe8v\xbbt\xf3 \x08\x9c:\xe6\
+\xae`l,b!\x8e1\x04+\x0e<`\xef\xd9\xb3\
+zI\xb9\x1c\x9cN\x11\x0e\x87\x00Q\x14\xe1p\x88\xe0\
+x\x1e\xa9T\x8a\x12B\xe0!e(\x09\x92\x89$\x06\
+\x8f\x8dh\xe5$\x93\xf1'\xee\xbd\xf7\xf3\xb7\x81\xf6\xfe\
+\x0c\x0c\xab\x84K%@\x19?\xf5|\xea\xc5Pi\xe6\
+\x18\xb2#\xab\x1ei\x00I\xf5H\x00\x88\xab\xc7\x94\xfa\
+\x99\xd8\xb8\xf1\x93?\xda\xb7\xef\xcd\xd7\xcc\xbb\x96r\xea\
+n\xa6\xfa/\x92\x17\xda\xe5\x94}\x8e\x8fObtt\
+\x02##\x13Z\xac-\xcb9\xd0\xcd \x14\xe4r\xb2\
+\x06\xb2\xa2\xb0sl\xf7\xd2\x9c\xa6\xees9\x19\xfa\xae\
+\xa6\xb2\xc1\xc1\xa3\xcfJ&\x92j\xbd\xd4zp\xf4\xe7\
+oB\xc1\x008\x9e\x83 p\xf0\xf9<\xe09\x82P\
+E\x10\x0dMu\xc8\xe5\x14d\xb3\xd9\xc9\x9d;\x1f\xbb\
+\x13\xe6-c`\xf8,IN+\x02\x00\x05I\x90\x83\
+N\x82\x0c(\x11R\xa0$`\xe0O\xb1\xef\x1b7^\
+\xff\xe0\x9f\xfe\xb4\xe7\xe5|`K'\x82,\xcb\xb6\xc0\
+\xeb\xde9=\xcf\x80\xd75C>\xf0\xec\x7f,\xf67\
+\x9e\xa7\x1bR\x00\x84#\xf4P\xc9\xe0\x10\x05\x84B~\
+\xf0\x84\xa7$\xf0{!\x08\x02*\xaa\x02hi\xab\xc3\
+\xb1c}_|\xed\xb5\xdf\x8f\x1b\xdaH\x8b\xa6J\xed\
+\xfd\xc0iH\x00\xa0(\x09\x98\x9d\xcb@\xd7\x04L\x1b\
+0\x22\xc4\x01$o\xbdu\xe3\x8e\xed\xdb\x1f\xd9\xc1@\
+.\x97\x08,\x06g\xea\xdb\xd8{\xed\x80g\xe02-\
+\xa0\xdbzJ\x06+\xf0\x8c$9EA\x22E\x7f\xd0\
+\x9a\xe7\x088B\xc0\xab\xf5r\xf0\x22B\x15~\x08\x82\
+\x00\x87C\xa49\x05\x8eGeu%.\xbdr\xcde\
+\xc8\xdf0\xaal9-\x09\x00Lk\x0e$P\x12\xa4\
+\xa0\x13 \xcf$\xdc\x7f\xff\xd7w\xff\xf4\xa7?\xd9\xc1\
+\xc0-\x87\x08\xd4_\x90M=\x9f\x01o\xd7\xab\xf3\xcf\
++\xeayc\x92\xc7\xa8\x1dt\x13\x90\xc9HH&(\
+\x098\xb5.\x84\xa7\x87S\x14Q[\x13\x86\xd3\xe9\x00\
+Gxx\xbd.\x08<\x07\x9f\xcf\xff\xe9\x9d\xcf\xfd\xf1\
+\xa5\xaf~\xf5\x1b>\xe8\x1a\xa0l\x12\x9c\xb6\x04\x00\xa6\
+5\x07V\x12$a\xf6\x07\xe2\x00\xe2\xf7\xdf\x7f\xcf\xee\
+\xc7\x1e{d\x87qws+\x11x^'\x02\xdb\x09\
+\x9d\x86w\x8a\x0a\x94\x0e*\xfb4\x02o\xf4\x05\x8c\xc0\
+\xe7\xfb\x08\xb2\xea\x1f\xe8Z%\x95\xce \x9d\xca \x9d\
+\x91\x90H\xa44\xe09F\x06\x9e\xc0\xedr \x5c\x11\
+\x80C\xe4A8\x0e^\xaf\x1b\x02\xcf\x81\x13\x84e\x1f\
+\xba\xf4\xb2\xdf\xfc\xeb\x0f\x7f\x18D\x19\xa1\x9fQNk\
+\x02\x00\x05I\x90\x85\xd9'\xb0j\x02\xcd\x1f\x00\x10\xbf\
+\xef\xbe{vo\xdf\xfe\xc8\x0e\xb6\xc8\x94ny\xcf\xe7\
+\x11\x82N?g&\xc0\xda\xcbu\x07\xcf\xaeW3\xe0\
+\xcd>\x02\x03\xdex\xde\xe80\xca@N\x81\xac(H\
+\xa5\xd2Hg$\xc4\x13)p\xcc!$4<$\x1c\
+\x01\xc7s\xa8\xa8\x0c@\x14\xe9*)\xaf\xd7\x0d\x9e\x13\
+ \xf0\xfc\xf2\xa5\xed+\x7f\xfb\xd3g\x9e\x09\xce\xa4}\
+O\x87T\xf0\xb4\xa2(ys\x0c9\x18\xb6R\x9f\xe6\
+v\x02\x00\xf7\xddw\xcfn\x00\xd8\xb0a\xf3ZEK\
+\x0d\xd3,\x1b\x9b;\xa0(l.\x014\xdb]NH\
+g\x8c\xf1\x999P\xeb\xaf]g\x0d\x1b\x03\x01\x1f\xd2\
+\xc9\x0c\x9c\x0e\x07R\xa9\x14\x9c\x0e\x11\xf1x\x12N\xa7\
+\x83F\x04\xbc\xa0M\x85\xe39\x0e\x95\x15AD\x221\
+H\xd9\x1c\xbc\x1e\x17\xd2\x99\x0c\xb2$\xbb\xbc\xc6W\xbf\
+\xeb\xa9\x17_\x5c\x03 \x822\xe4\xb4\xd7\x00Ll4\
+\x81\x02{s\xc0\xa2\x03k\x88\x18\xbf\xef\xbe{v?\
+\xfa\xe8C;\xd823\xda\xeb\xcd?~\xc1\xb4\x81\x1e\
+\xba\x95\x1e\xd2\xe9\xfeB.O{PS\x91\x7f\xde\xe7\
+\xf3#1\x95@:\x93\x81\x02 \x99\xce \x95\xc9 \
+\x1eO\x82\xe7\x08\x04\x81\x03\xa7\xa6\x85\x01\x80\xe7xT\
+V\x04\xe0q\xbb\xc0q\x80\xdb\xe5\x84(\x8a\xe0\x09Y\
+\x11\xe0\x82\xbf\xde\xb9\xf3\xd5@9\xed\xfa\x9e!\x00\xa0\
+f7X\x16\xc7\x1c\xfa\x94\xe2\x18&\xa0\x92\xe0'?\
+yd\x87\xd1\x07\xb0#\x02-\xaf\xbc\x90\xce\xf8\xa9\xab\
+\x7f\x1dx\xddw0\x9f\x0f\x87+\x10\x8bL!\x9d\xa2\
+c\x0f\xc9d\x06\xe9L\x06\xe3\x91I\xd0\xfc\x13Q5\
+\x13\xa7-M\x0b\x05|p\xbb\xdd \x00\x5c.\xa7\xcc\
+\x8b|\x84\x00\x15.\xbf\xf3\xbf^z\xe9\xafm\xa5\xb6\
+\xe9{\x8a\x00\x16)\xe6\x18\x1a\xf3\x04V\x12$\xef\xbb\
+o\xdb\xcb\x8f>\xfa\xf0cl\xd9\xb9\x1d\x11\xe86l\
+\xe5\x85t\x85\xf3\x05f?\xc2H\x08\xfa<\x05^\x8f\
+\x17\x91\xb1(\xd2\xc9$\x00\x19\xc9T\x1a\xb9\xac\x82H\
+tJ}U\x0a>@s\x06\xe0\x80P\xd0\x07\xb7\xdb\
+\x99!\x04Cn\xa7\xb3O\x10\xf9>\xa2@\x82H>\
+\xfb\xc2\x0b\xaf\xd4\xa2\x04yO\x12\xa0\x809\xb0j\x02\
+;\x12h\xe6\xe0\x1b\xdf\xd8\xb6\xfb\xd1G\x1fzL\xef\
+\xf9f\x22\x14\xf2\xec\x8b\x85tv\xf9\x02c\xe4\xa0\x9f\
+\xd7\x817\x96\x93N\xa7\xde\xf8\xe3\x1fw\x7f11\x15\
+\x7fE\x91\x81d:\x0dI\xcab|b\x0a\x80\x0c\x02\
+\x9a,\xd2\x9a\x01J,\x14\xf4\x1d\xf58\x1d\xbd\x84\xa0\
+\xcf\xe5v\x1d\x11\x1d\xc2Q\x02e\x9cw\xbb/\xff\xed\
+o\xff2\xadcxZ\x8d\x05\xccD,\xfb\x18\x1ag\
+\x17\xd9mkk\xdd\xf2\xdes\xd7]\xf7~\xe8\x86\x1b\
+nZ\xcb\xc6\x0b\xd8\x18\xfb\x9bov\x22\x12\x89\xc1n\
+\xfe\x9d\xd1\x14\x00\xd61\x80\xe2\xe7\xed\x06\x85\x12\x89\xa9\
+\xee\xce\xce\xfd\x0f=\xfd\xf4C\xcf\x03H\xcd\x9b\xb7\x04\
+_\xb9\xf3\x1b\xff'\xe0\xf7_\x11\xf0\xfb\x10\x08x\xe1\
+t\x88\xa8\xac\x0cR\xed\x04E\x020\xce\x112\x0c(\
+\xc3\x00\x19\x8d\xc7S#\xf1xbL!\x18\x97r\xd9\
+\xf1TJ\x8a\x082\x19\xcdf\xc7\xffz\xf1\xc5\x17\xa7\
+\x0a\xb6\xdf{\x9d\x00@A\x12\x18\xa7\x971\x12X7\
+\xb9\xf6\x82\x92\xe0\xc3\x1b7\xde\xb4\x16\x80\x06\xd6\xde\xbd\
+\x07\x11\x89L\x96\xe5\xd9\x97\x0e<\xbdf||d\xcf\
+\xc1\x83\xaf?\xf1\xfc\xf3O\xbe\x0a\xaa\xad\x98\xd6J7\
+5\xcdU\xfe\xef\xbf\xfd\xc7\xbf\x07B\xc1\xeb\xddN\x17\
+\xbc\x1e'DQP*\xc3\xc1\x04O\xc80\x08\x19\x01\
+0\x0c\xc2\x8dr\x8a2\x0apc\xc9tj<\x12\x8d\
+Op\xbc<\x91\xcd*\xd1X\x22=\xc9I\xa9\xe8K\
+/\xfdj\xf8\xee\xbb\xef\xb6\x9d\x87\xf9\x9e\x08\x03K\x14\
+c\x88\xc8\xcc\x81\xdd5\xd6\xef\xca\xd7\xbf\xbe\xf5E\x9e\
+\xe7\x94\x0d\x1b6\xaf3\xae#`\xbd\xbf\xd4\x90\xae\x90\
+&0\x86\x8e\x89\xc4T\xcf\xb1c}\xcf\xbf\xfe\xfa\xef\
+^\xee\xe8\xd8\xdb\x07\x0a:;\x98\xe9\xca\xf4\xf7wf\
+\xd7~\xea\xcaM\xbf\xf8\xd5\xef\x93\xb2#wC<\x95\
+\xcay\x88kb|<:\x14\x0e\x87Fx`D\x01\
+O\xc1\xe71Nd\x8c\xbb\xdc\xae\x89\x0aE\x89D\x22\
+\xb1\xa8\xcc#\xc6\xb9\x9c\xb1\xd8\xb8\x94(\xd6hg\x84\
+\x06\x00\xa6\x9dTb\xa7\x09\x8cs\x0a<\x00\xdc\xf7\xdc\
+s\xdf\xc57\xdc\xb0i\x03\xa0\xe0\x95W\xf6ct4\
+\x02\xe3\x9c\x02#\xf0\xa5\x9c\xa73\x832\x89h4\xb2\
+\x7ftt\xe0\xcd\xbd{\xf7\xfc\xee\xe0\xc1\xbf\x1c\x85>\
+|k=$\xc3\xc1\xf2\xfc\xb9\xdf\xec\xfa\xf3\xf7\x04\x8e\
+\x5cNxn\xd8\xe7q\x0f\x8b\x227Z\x15\xae\x18\xe5\
+@\xc6\x14\x9e\x8cC\xc1\x04\xe1\x94\x09NFD\x96\x95\
+\xc9\xa9\xa9d,\x16\x1b\x9e\x02\x90x\xdf\xfb\xde\xa7u\
+\x04\xbb,\xe1\x19C\x00\xa0,\x12\x18\x7f\xf8\x82}\xba\
+\x01\xb8\xbe\xf2\x95-\x7f\xb3y\xf3-\x9b\xff\xf2\x97\x83\
+\xee\xd1\xd1\x88I\xfd\xb3\xf1\x81b\xc0G\xa3c\x1d\x13\
+\x13\x13\xbd\x91\xc8\xc8\xe1#G\xba\xba^}\xf5\xa5C\
+0\x03\xcb\x9cT\xbb\xeflB\x87\xf1P\x00(\xbf\xdd\
+\xf5\xdaW\x09\xc7\xaf\xe4En\xd4\xe3v\x8d:\x1c\xe2\
+xU\xc87N\x04q\x82\xc8\x88\xc8<\x89\x0a\x0a\x99\
+T\x94\xe4\x14\x80\xf8\xef~\xf7\xbb\xd4\xa7>\xf5\xa9\xfc\
+\xc9\xed\x16\xc0\xcf(\x02\x00\x05I`\xfc\xf9\x1bF\x02\
+\xe3F\xd7n\xc39\xc7\xa7?\xbdv\xcee\x97}j\
+\xcb\xd4T\xd2C\x97ie\x12\xb1\xd8\xe4\x11\xa3=\x1f\
+\x19\x198@\x08\xe4h4:<668\xb4\x7f\xff\
+\x9f\xba\x87\x87\x07'\xa1\x83\xc8\x22\x12\xeb\xa7ds\xde\
+\x0a\xbcq\x88W\x1b\xe4y\xe1w{\xd7r \xb3y\
+\x8e\x1bw\xb9\x5c\xe3\x0e'\x17\x09WUDx\x19\x93\
+\xb9\x1c&eY\x88\xc7b\xfd\xf1%K\x96\x14\xdd\xbd\
+\xd5H\x823\x8e\x00@\xc9\x9a\xc0\xa8\x0d\xd8\xef\x1f\xb8\
+\xd4\xff\x8b\xa0\xa41n\xbf\xca\x1a\xca\x18vZAc\
+\xdf\xb3%\x1ev\xbd\xdd4\xb6\x0f\xcb\xec\x9e]/\xef\
+\xfd\x10\xcfqaA\x14\x22.\x81\x8f\x12\x978\x19r\
+\xfbc>\x1f\x89\xef\xde\xbd;i\xd7\xeb\xed\x84=\xf3\
+\x8c$\x00`K\x02ct`\xfc\xcd\x03\xb6\x08\x85}\
+g\xd3\xcfx\xc3\xbd\x80\xb97\xca\x96\xc3J\x00v\x18\
+m9[\xb0a\x04\x9e\xddc\x04\xde\xd4\xeb\xed\xec\xf6\
+\xee\xdd\xaf\xcf\xcd\xf1\xc4\xe1\x80\x18\xe3yLE\x22\x8e\
+\xf8UW\xcd\x9bn\xe3\xee<Q\x14E9c\x09\x00\
+\x14%\x01\xfb\xbd\x03\xa3F\x10a\x06\x9fC\xbe\x06(\
+D\x82\x9c\xcd\xdf\x85\xb4\x83b8W\x10x\xa0\xf8\xd0\
+\xeeK/\xfd5\x14\x15\xe3\xb9\xa0$%\xd7\xacY3\
+\xc3\xb5\xc1g\xb0\x06`R`\xdd\x81\xf1\x87/\x8ck\
+\x10\xd8\xdfF\xf0\x0bi\x00\xeb\xa7\xb1'\xdb\x1d9\xcb\
+3r6\xcf\xa5'J\x04\xc5\xf0n3\x923^\x03\
+\x18\xa5\xc8zD\xce\xe6\xbb\x15|\xc0\x0c\x92\x1d\x09\xac\
+\xe7\xec\xce\xdb\xf5\xf4\xb2\x81/\xf0^e\xc9\x19\xef\x03\
+\xd8I\x01\x93\xc0Y\x0e\x82|\xf5\x0f\xe4\x83V\xca!\
+\xdb\x5c\x0f\x9c \xe8E\xde\xab$9\xe3\xa3\x80bR\
+\xc0$\x90\x02\x87\x9dXIP\xec\x9cI\xb5\xe3$\x03\
+o\x94RIp\xc6\xe7\x01J\x11KcY\x01/F\
+\x80\xbc\x1e\x5c\xe0\xbb\xddu'\x1dt\xabLG\x823\
+>\x13X\xae\xd8\x10\xc1\xee\xbbU\x0a5\x98\xed\xf9S\
+\x0d\xbaU\x0a\x91\xa0P=\xcej\x020)\xd2s\xac\
+>\xc0\xb4\xf2N\x03n'\xd6\xf7)V\xa7s\x04\xb0\
+\x91\x99\xa8\xd2\xd3M\xd8;LW\xd7s\x048\xcb\xe5\
+=9%\xec\x9c\x9c<\xf9\xff.}$/\xf4\x80\x9c\
+-\x00\x00\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x06\
+\x07\x03}\xc3\
+\x00i\
+\x00m\x00a\x00g\x00e\x00s\
+\x00\x09\
+\x0b\x85\x83\x07\
+\x00c\
+\x00l\x00e\x00a\x00r\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0a\x93\x87\x07\
+\x00d\
+\x00i\x00s\x00c\x00o\x00n\x00n\x00e\x00c\x00t\x00.\x00p\x00n\x00g\
+\x00\x0c\
+\x0b\xdf!G\
+\x00s\
+\x00e\x00t\x00t\x00i\x00n\x00g\x00s\x00.\x00p\x00n\x00g\
+\x00\x14\
+\x07@\xa2\xc7\
+\x00a\
+\x00p\x00p\x00l\x00i\x00c\x00a\x00t\x00i\x00o\x00n\x00-\x00e\x00x\x00i\x00t\x00.\
+\x00p\x00n\x00g\
+\x00\x0b\
+\x0bs\x9d\xc7\
+\x00c\
+\x00o\x00n\x00n\x00e\x00c\x00t\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00j\x00\x00\x00\x00\x00\x01\x00\x00\xaa\xa6\
+\x00\x00\x01\x81<\xe7\xd0\x1c\
+\x00\x00\x00*\x00\x00\x00\x00\x00\x01\x00\x001\x03\
+\x00\x00\x01\x81<\xe7\xd0\x1c\
+\x00\x00\x00\x98\x00\x00\x00\x00\x00\x01\x00\x00\xd6j\
+\x00\x00\x01\x81<\xe7\xd0\x1c\
+\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x81<\xe7\xd0\x1c\
+\x00\x00\x00L\x00\x00\x00\x00\x00\x01\x00\x00k\xfb\
+\x00\x00\x01\x81<\xe7\xd0\x1c\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/serialport/terminal/settingsdialog.py b/examples/serialport/terminal/settingsdialog.py
new file mode 100644
index 000000000..c9373d5b0
--- /dev/null
+++ b/examples/serialport/terminal/settingsdialog.py
@@ -0,0 +1,180 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import Slot
+from PySide6.QtGui import QIntValidator
+from PySide6.QtWidgets import QComboBox
+from PySide6.QtSerialPort import QSerialPort, QSerialPortInfo
+
+from PySide6.QtWidgets import QDialog
+
+from ui_settingsdialog import Ui_SettingsDialog
+
+
+BLANK_STRING = "N/A"
+
+
+CUSTOM_BAUDRATE_INDEX = 4
+
+
+class Settings():
+
+ def __init__(self):
+ self.name = ""
+ self.baud_rate = 0
+ self.string_baud_rate = ""
+ self.data_bits = QSerialPort.Data8
+ self.string_data_bits = ""
+ self.parity = QSerialPort.NoParity
+ self.string_parity = ""
+ self.stop_bits = QSerialPort.OneStop
+ self.string_stop_bits = ""
+ self.flow_control = QSerialPort.SoftwareControl
+ self.string_flow_control = ""
+ self.local_echo_enabled = False
+
+
+class SettingsDialog(QDialog):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.m_ui = Ui_SettingsDialog()
+ self._custom_port_index = -1
+ self.m_ui.setupUi(self)
+ self.m_currentSettings = Settings()
+ self.m_intValidator = QIntValidator(0, 4000000, self)
+
+ self.m_ui.baudRateBox.setInsertPolicy(QComboBox.NoInsert)
+
+ self.m_ui.applyButton.clicked.connect(self.apply)
+ self.m_ui.serialPortInfoListBox.currentIndexChanged.connect(self.show_port_info)
+ self.m_ui.baudRateBox.currentIndexChanged.connect(self.check_custom_baud_rate_policy)
+ self.m_ui.serialPortInfoListBox.currentIndexChanged.connect(
+ self.check_custom_device_path_policy)
+
+ self.fill_ports_parameters()
+ self.fill_ports_info()
+
+ self.update_settings()
+
+ def settings(self):
+ return self.m_currentSettings
+
+ @Slot(int)
+ def show_port_info(self, idx):
+ if idx == -1:
+ return
+
+ list = self.m_ui.serialPortInfoListBox.itemData(idx)
+ count = len(list) if list else 0
+ description = list[1] if count > 1 else BLANK_STRING
+ self.m_ui.descriptionLabel.setText(f"Description: {description}")
+ manufacturer = list[2] if count > 2 else BLANK_STRING
+ self.m_ui.manufacturerLabel.setText(f"Manufacturer: {manufacturer}")
+ serialno = list[3] if count > 3 else BLANK_STRING
+ self.m_ui.serialNumberLabel.setText(f"Serial number: {serialno}")
+ location = list[4] if count > 4 else BLANK_STRING
+ self.m_ui.locationLabel.setText(f"Location: {location}")
+ vendor = list[5] if count > 5 else BLANK_STRING
+ self.m_ui.vidLabel.setText(f"Vendor Identifier: {vendor}")
+ id = list[6] if count > 6 else BLANK_STRING
+ self.m_ui.pidLabel.setText(f"Product Identifier: {id}")
+
+ @Slot()
+ def apply(self):
+ self.update_settings()
+ self.hide()
+
+ @Slot(int)
+ def check_custom_baud_rate_policy(self, idx):
+ is_custom_baud_rate = idx == CUSTOM_BAUDRATE_INDEX
+ self.m_ui.baudRateBox.setEditable(is_custom_baud_rate)
+ if is_custom_baud_rate:
+ self.m_ui.baudRateBox.clearEditText()
+ edit = self.m_ui.baudRateBox.lineEdit()
+ edit.setValidator(self.m_intValidator)
+
+ @Slot(int)
+ def check_custom_device_path_policy(self, idx):
+ is_custom_path = idx == self._custom_port_index
+ self.m_ui.serialPortInfoListBox.setEditable(is_custom_path)
+ if is_custom_path:
+ self.m_ui.serialPortInfoListBox.clearEditText()
+
+ def fill_ports_parameters(self):
+ self.m_ui.baudRateBox.addItem("9600", QSerialPort.Baud9600)
+ self.m_ui.baudRateBox.addItem("19200", QSerialPort.Baud19200)
+ self.m_ui.baudRateBox.addItem("38400", QSerialPort.Baud38400)
+ self.m_ui.baudRateBox.addItem("115200", QSerialPort.Baud115200)
+ self.m_ui.baudRateBox.addItem("Custom")
+
+ self.m_ui.dataBitsBox.addItem("5", QSerialPort.Data5)
+ self.m_ui.dataBitsBox.addItem("6", QSerialPort.Data6)
+ self.m_ui.dataBitsBox.addItem("7", QSerialPort.Data7)
+ self.m_ui.dataBitsBox.addItem("8", QSerialPort.Data8)
+ self.m_ui.dataBitsBox.setCurrentIndex(3)
+
+ self.m_ui.parityBox.addItem("None", QSerialPort.NoParity)
+ self.m_ui.parityBox.addItem("Even", QSerialPort.EvenParity)
+ self.m_ui.parityBox.addItem("Odd", QSerialPort.OddParity)
+ self.m_ui.parityBox.addItem("Mark", QSerialPort.MarkParity)
+ self.m_ui.parityBox.addItem("Space", QSerialPort.SpaceParity)
+
+ self.m_ui.stopBitsBox.addItem("1", QSerialPort.OneStop)
+ if sys.platform == "win32":
+ self.m_ui.stopBitsBox.addItem("1.5", QSerialPort.OneAndHalfStop)
+
+ self.m_ui.stopBitsBox.addItem("2", QSerialPort.TwoStop)
+
+ self.m_ui.flowControlBox.addItem("None", QSerialPort.NoFlowControl)
+ self.m_ui.flowControlBox.addItem("RTS/CTS", QSerialPort.HardwareControl)
+ self.m_ui.flowControlBox.addItem("XON/XOFF", QSerialPort.SoftwareControl)
+
+ def fill_ports_info(self):
+ self.m_ui.serialPortInfoListBox.clear()
+ for info in QSerialPortInfo.availablePorts():
+ list = []
+ description = info.description()
+ manufacturer = info.manufacturer()
+ serial_number = info.serialNumber()
+ list.append(info.portName())
+ list.append(description if description else BLANK_STRING)
+ list.append(manufacturer if manufacturer else BLANK_STRING)
+ list.append(serial_number if serial_number else BLANK_STRING)
+ list.append(info.systemLocation())
+ vid = info.vendorIdentifier()
+ list.append(f"{vid:x}" if vid else BLANK_STRING)
+ pid = info.productIdentifier()
+ list.append(f"{pid:x}" if pid else BLANK_STRING)
+ self.m_ui.serialPortInfoListBox.addItem(list[0], list)
+
+ self._custom_port_index = self.m_ui.serialPortInfoListBox.count()
+ self.m_ui.serialPortInfoListBox.addItem("Custom")
+
+ def update_settings(self):
+ self.m_currentSettings.name = self.m_ui.serialPortInfoListBox.currentText()
+
+ baud_index = self.m_ui.baudRateBox.currentIndex()
+ if baud_index == CUSTOM_BAUDRATE_INDEX:
+ text = self.m_ui.baudRateBox.currentText()
+ self.m_currentSettings.baud_rate = int(text)
+ else:
+ self.m_currentSettings.baud_rate = self.m_ui.baudRateBox.currentData()
+ self.m_currentSettings.string_baud_rate = f"{self.m_currentSettings.baud_rate}"
+
+ self.m_currentSettings.data_bits = self.m_ui.dataBitsBox.currentData()
+ self.m_currentSettings.string_data_bits = self.m_ui.dataBitsBox.currentText()
+
+ self.m_currentSettings.parity = self.m_ui.parityBox.currentData()
+ self.m_currentSettings.string_parity = self.m_ui.parityBox.currentText()
+
+ self.m_currentSettings.stop_bits = self.m_ui.stopBitsBox.currentData()
+ self.m_currentSettings.string_stop_bits = self.m_ui.stopBitsBox.currentText()
+
+ self.m_currentSettings.flow_control = self.m_ui.flowControlBox.currentData()
+ self.m_currentSettings.string_flow_control = self.m_ui.flowControlBox.currentText()
+
+ self.m_currentSettings.local_echo_enabled = self.m_ui.localEchoCheckBox.isChecked()
diff --git a/examples/serialport/terminal/settingsdialog.ui b/examples/serialport/terminal/settingsdialog.ui
new file mode 100644
index 000000000..8f15b1a52
--- /dev/null
+++ b/examples/serialport/terminal/settingsdialog.ui
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SettingsDialog</class>
+ <widget class="QDialog" name="SettingsDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>281</width>
+ <height>262</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Settings</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="0" column="1">
+ <widget class="QGroupBox" name="parametersBox">
+ <property name="title">
+ <string>Select Parameters</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="baudRateLabel">
+ <property name="text">
+ <string>BaudRate:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="baudRateBox"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="dataBitsLabel">
+ <property name="text">
+ <string>Data bits:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="dataBitsBox"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="parityLabel">
+ <property name="text">
+ <string>Parity:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QComboBox" name="parityBox"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="stopBitsLabel">
+ <property name="text">
+ <string>Stop bits:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QComboBox" name="stopBitsBox"/>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="flowControlLabel">
+ <property name="text">
+ <string>Flow control:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QComboBox" name="flowControlBox"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QGroupBox" name="selectBox">
+ <property name="title">
+ <string>Select Serial Port</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QComboBox" name="serialPortInfoListBox"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="descriptionLabel">
+ <property name="text">
+ <string>Description:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="manufacturerLabel">
+ <property name="text">
+ <string>Manufacturer:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="serialNumberLabel">
+ <property name="text">
+ <string>Serial number:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="locationLabel">
+ <property name="text">
+ <string>Location:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="vidLabel">
+ <property name="text">
+ <string>Vendor ID:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="pidLabel">
+ <property name="text">
+ <string>Product ID:</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>96</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="applyButton">
+ <property name="text">
+ <string>Apply</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QGroupBox" name="additionalOptionsGroupBox">
+ <property name="title">
+ <string>Additional options</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QCheckBox" name="localEchoCheckBox">
+ <property name="text">
+ <string>Local echo</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/serialport/terminal/terminal.pyproject b/examples/serialport/terminal/terminal.pyproject
new file mode 100644
index 000000000..ed64bd91a
--- /dev/null
+++ b/examples/serialport/terminal/terminal.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "console.py", "mainwindow.py", "mainwindow.ui",
+ "settingsdialog.py", "settingsdialog.ui", "terminal.qrc"]
+}
diff --git a/examples/serialport/terminal/terminal.qrc b/examples/serialport/terminal/terminal.qrc
new file mode 100644
index 000000000..0b4987941
--- /dev/null
+++ b/examples/serialport/terminal/terminal.qrc
@@ -0,0 +1,9 @@
+<RCC>
+ <qresource prefix="/">
+ <file>images/connect.png</file>
+ <file>images/disconnect.png</file>
+ <file>images/application-exit.png</file>
+ <file>images/settings.png</file>
+ <file>images/clear.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/serialport/terminal/ui_mainwindow.py b/examples/serialport/terminal/ui_mainwindow.py
new file mode 100644
index 000000000..21adbd5c1
--- /dev/null
+++ b/examples/serialport/terminal/ui_mainwindow.py
@@ -0,0 +1,149 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'mainwindow.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
+ QCursor, QFont, QFontDatabase, QGradient,
+ QIcon, QImage, QKeySequence, QLinearGradient,
+ QPainter, QPalette, QPixmap, QRadialGradient,
+ QTransform)
+from PySide6.QtWidgets import (QApplication, QMainWindow, QMenu, QMenuBar,
+ QSizePolicy, QStatusBar, QToolBar, QVBoxLayout,
+ QWidget)
+import rc_terminal
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ if not MainWindow.objectName():
+ MainWindow.setObjectName(u"MainWindow")
+ MainWindow.resize(400, 300)
+ self.actionAbout = QAction(MainWindow)
+ self.actionAbout.setObjectName(u"actionAbout")
+ self.actionAboutQt = QAction(MainWindow)
+ self.actionAboutQt.setObjectName(u"actionAboutQt")
+ self.actionConnect = QAction(MainWindow)
+ self.actionConnect.setObjectName(u"actionConnect")
+ icon = QIcon()
+ icon.addFile(u":/images/connect.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionConnect.setIcon(icon)
+ self.actionDisconnect = QAction(MainWindow)
+ self.actionDisconnect.setObjectName(u"actionDisconnect")
+ icon1 = QIcon()
+ icon1.addFile(u":/images/disconnect.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionDisconnect.setIcon(icon1)
+ self.actionConfigure = QAction(MainWindow)
+ self.actionConfigure.setObjectName(u"actionConfigure")
+ icon2 = QIcon()
+ icon2.addFile(u":/images/settings.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionConfigure.setIcon(icon2)
+ self.actionClear = QAction(MainWindow)
+ self.actionClear.setObjectName(u"actionClear")
+ icon3 = QIcon()
+ icon3.addFile(u":/images/clear.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionClear.setIcon(icon3)
+ self.actionQuit = QAction(MainWindow)
+ self.actionQuit.setObjectName(u"actionQuit")
+ icon4 = QIcon()
+ icon4.addFile(u":/images/application-exit.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.actionQuit.setIcon(icon4)
+ self.centralWidget = QWidget(MainWindow)
+ self.centralWidget.setObjectName(u"centralWidget")
+ self.verticalLayout = QVBoxLayout(self.centralWidget)
+ self.verticalLayout.setSpacing(6)
+ self.verticalLayout.setContentsMargins(11, 11, 11, 11)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ MainWindow.setCentralWidget(self.centralWidget)
+ self.menuBar = QMenuBar(MainWindow)
+ self.menuBar.setObjectName(u"menuBar")
+ self.menuBar.setGeometry(QRect(0, 0, 400, 19))
+ self.menuCalls = QMenu(self.menuBar)
+ self.menuCalls.setObjectName(u"menuCalls")
+ self.menuTools = QMenu(self.menuBar)
+ self.menuTools.setObjectName(u"menuTools")
+ self.menuHelp = QMenu(self.menuBar)
+ self.menuHelp.setObjectName(u"menuHelp")
+ MainWindow.setMenuBar(self.menuBar)
+ self.mainToolBar = QToolBar(MainWindow)
+ self.mainToolBar.setObjectName(u"mainToolBar")
+ MainWindow.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.mainToolBar)
+ self.statusBar = QStatusBar(MainWindow)
+ self.statusBar.setObjectName(u"statusBar")
+ MainWindow.setStatusBar(self.statusBar)
+
+ self.menuBar.addAction(self.menuCalls.menuAction())
+ self.menuBar.addAction(self.menuTools.menuAction())
+ self.menuBar.addAction(self.menuHelp.menuAction())
+ self.menuCalls.addAction(self.actionConnect)
+ self.menuCalls.addAction(self.actionDisconnect)
+ self.menuCalls.addSeparator()
+ self.menuCalls.addAction(self.actionQuit)
+ self.menuTools.addAction(self.actionConfigure)
+ self.menuTools.addAction(self.actionClear)
+ self.menuHelp.addAction(self.actionAbout)
+ self.menuHelp.addAction(self.actionAboutQt)
+ self.mainToolBar.addAction(self.actionConnect)
+ self.mainToolBar.addAction(self.actionDisconnect)
+ self.mainToolBar.addAction(self.actionConfigure)
+ self.mainToolBar.addAction(self.actionClear)
+
+ self.retranslateUi(MainWindow)
+
+ QMetaObject.connectSlotsByName(MainWindow)
+ # setupUi
+
+ def retranslateUi(self, MainWindow):
+ MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"Simple Terminal", None))
+ self.actionAbout.setText(QCoreApplication.translate("MainWindow", u"&About", None))
+#if QT_CONFIG(tooltip)
+ self.actionAbout.setToolTip(QCoreApplication.translate("MainWindow", u"About program", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionAbout.setShortcut(QCoreApplication.translate("MainWindow", u"Alt+A", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionAboutQt.setText(QCoreApplication.translate("MainWindow", u"About Qt", None))
+ self.actionConnect.setText(QCoreApplication.translate("MainWindow", u"C&onnect", None))
+#if QT_CONFIG(tooltip)
+ self.actionConnect.setToolTip(QCoreApplication.translate("MainWindow", u"Connect to serial port", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionConnect.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+O", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionDisconnect.setText(QCoreApplication.translate("MainWindow", u"&Disconnect", None))
+#if QT_CONFIG(tooltip)
+ self.actionDisconnect.setToolTip(QCoreApplication.translate("MainWindow", u"Disconnect from serial port", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionDisconnect.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+D", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionConfigure.setText(QCoreApplication.translate("MainWindow", u"&Configure", None))
+#if QT_CONFIG(tooltip)
+ self.actionConfigure.setToolTip(QCoreApplication.translate("MainWindow", u"Configure serial port", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionConfigure.setShortcut(QCoreApplication.translate("MainWindow", u"Alt+C", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionClear.setText(QCoreApplication.translate("MainWindow", u"C&lear", None))
+#if QT_CONFIG(tooltip)
+ self.actionClear.setToolTip(QCoreApplication.translate("MainWindow", u"Clear data", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionClear.setShortcut(QCoreApplication.translate("MainWindow", u"Alt+L", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionQuit.setText(QCoreApplication.translate("MainWindow", u"&Quit", None))
+#if QT_CONFIG(shortcut)
+ self.actionQuit.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+Q", None))
+#endif // QT_CONFIG(shortcut)
+ self.menuCalls.setTitle(QCoreApplication.translate("MainWindow", u"Calls", None))
+ self.menuTools.setTitle(QCoreApplication.translate("MainWindow", u"Tools", None))
+ self.menuHelp.setTitle(QCoreApplication.translate("MainWindow", u"Help", None))
+ # retranslateUi
+
diff --git a/examples/serialport/terminal/ui_settingsdialog.py b/examples/serialport/terminal/ui_settingsdialog.py
new file mode 100644
index 000000000..6c5a417cc
--- /dev/null
+++ b/examples/serialport/terminal/ui_settingsdialog.py
@@ -0,0 +1,181 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'settingsdialog.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QDialog,
+ QGridLayout, QGroupBox, QHBoxLayout, QLabel,
+ QPushButton, QSizePolicy, QSpacerItem, QVBoxLayout,
+ QWidget)
+
+class Ui_SettingsDialog(object):
+ def setupUi(self, SettingsDialog):
+ if not SettingsDialog.objectName():
+ SettingsDialog.setObjectName(u"SettingsDialog")
+ SettingsDialog.resize(281, 262)
+ self.gridLayout_3 = QGridLayout(SettingsDialog)
+ self.gridLayout_3.setObjectName(u"gridLayout_3")
+ self.parametersBox = QGroupBox(SettingsDialog)
+ self.parametersBox.setObjectName(u"parametersBox")
+ self.gridLayout_2 = QGridLayout(self.parametersBox)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
+ self.baudRateLabel = QLabel(self.parametersBox)
+ self.baudRateLabel.setObjectName(u"baudRateLabel")
+
+ self.gridLayout_2.addWidget(self.baudRateLabel, 0, 0, 1, 1)
+
+ self.baudRateBox = QComboBox(self.parametersBox)
+ self.baudRateBox.setObjectName(u"baudRateBox")
+
+ self.gridLayout_2.addWidget(self.baudRateBox, 0, 1, 1, 1)
+
+ self.dataBitsLabel = QLabel(self.parametersBox)
+ self.dataBitsLabel.setObjectName(u"dataBitsLabel")
+
+ self.gridLayout_2.addWidget(self.dataBitsLabel, 1, 0, 1, 1)
+
+ self.dataBitsBox = QComboBox(self.parametersBox)
+ self.dataBitsBox.setObjectName(u"dataBitsBox")
+
+ self.gridLayout_2.addWidget(self.dataBitsBox, 1, 1, 1, 1)
+
+ self.parityLabel = QLabel(self.parametersBox)
+ self.parityLabel.setObjectName(u"parityLabel")
+
+ self.gridLayout_2.addWidget(self.parityLabel, 2, 0, 1, 1)
+
+ self.parityBox = QComboBox(self.parametersBox)
+ self.parityBox.setObjectName(u"parityBox")
+
+ self.gridLayout_2.addWidget(self.parityBox, 2, 1, 1, 1)
+
+ self.stopBitsLabel = QLabel(self.parametersBox)
+ self.stopBitsLabel.setObjectName(u"stopBitsLabel")
+
+ self.gridLayout_2.addWidget(self.stopBitsLabel, 3, 0, 1, 1)
+
+ self.stopBitsBox = QComboBox(self.parametersBox)
+ self.stopBitsBox.setObjectName(u"stopBitsBox")
+
+ self.gridLayout_2.addWidget(self.stopBitsBox, 3, 1, 1, 1)
+
+ self.flowControlLabel = QLabel(self.parametersBox)
+ self.flowControlLabel.setObjectName(u"flowControlLabel")
+
+ self.gridLayout_2.addWidget(self.flowControlLabel, 4, 0, 1, 1)
+
+ self.flowControlBox = QComboBox(self.parametersBox)
+ self.flowControlBox.setObjectName(u"flowControlBox")
+
+ self.gridLayout_2.addWidget(self.flowControlBox, 4, 1, 1, 1)
+
+
+ self.gridLayout_3.addWidget(self.parametersBox, 0, 1, 1, 1)
+
+ self.selectBox = QGroupBox(SettingsDialog)
+ self.selectBox.setObjectName(u"selectBox")
+ self.gridLayout = QGridLayout(self.selectBox)
+ self.gridLayout.setObjectName(u"gridLayout")
+ self.serialPortInfoListBox = QComboBox(self.selectBox)
+ self.serialPortInfoListBox.setObjectName(u"serialPortInfoListBox")
+
+ self.gridLayout.addWidget(self.serialPortInfoListBox, 0, 0, 1, 1)
+
+ self.descriptionLabel = QLabel(self.selectBox)
+ self.descriptionLabel.setObjectName(u"descriptionLabel")
+
+ self.gridLayout.addWidget(self.descriptionLabel, 1, 0, 1, 1)
+
+ self.manufacturerLabel = QLabel(self.selectBox)
+ self.manufacturerLabel.setObjectName(u"manufacturerLabel")
+
+ self.gridLayout.addWidget(self.manufacturerLabel, 2, 0, 1, 1)
+
+ self.serialNumberLabel = QLabel(self.selectBox)
+ self.serialNumberLabel.setObjectName(u"serialNumberLabel")
+
+ self.gridLayout.addWidget(self.serialNumberLabel, 3, 0, 1, 1)
+
+ self.locationLabel = QLabel(self.selectBox)
+ self.locationLabel.setObjectName(u"locationLabel")
+
+ self.gridLayout.addWidget(self.locationLabel, 4, 0, 1, 1)
+
+ self.vidLabel = QLabel(self.selectBox)
+ self.vidLabel.setObjectName(u"vidLabel")
+
+ self.gridLayout.addWidget(self.vidLabel, 5, 0, 1, 1)
+
+ self.pidLabel = QLabel(self.selectBox)
+ self.pidLabel.setObjectName(u"pidLabel")
+
+ self.gridLayout.addWidget(self.pidLabel, 6, 0, 1, 1)
+
+
+ self.gridLayout_3.addWidget(self.selectBox, 0, 0, 1, 1)
+
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.horizontalSpacer = QSpacerItem(96, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout.addItem(self.horizontalSpacer)
+
+ self.applyButton = QPushButton(SettingsDialog)
+ self.applyButton.setObjectName(u"applyButton")
+
+ self.horizontalLayout.addWidget(self.applyButton)
+
+
+ self.gridLayout_3.addLayout(self.horizontalLayout, 2, 0, 1, 2)
+
+ self.additionalOptionsGroupBox = QGroupBox(SettingsDialog)
+ self.additionalOptionsGroupBox.setObjectName(u"additionalOptionsGroupBox")
+ self.verticalLayout = QVBoxLayout(self.additionalOptionsGroupBox)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.localEchoCheckBox = QCheckBox(self.additionalOptionsGroupBox)
+ self.localEchoCheckBox.setObjectName(u"localEchoCheckBox")
+ self.localEchoCheckBox.setChecked(True)
+
+ self.verticalLayout.addWidget(self.localEchoCheckBox)
+
+
+ self.gridLayout_3.addWidget(self.additionalOptionsGroupBox, 1, 0, 1, 2)
+
+
+ self.retranslateUi(SettingsDialog)
+
+ QMetaObject.connectSlotsByName(SettingsDialog)
+ # setupUi
+
+ def retranslateUi(self, SettingsDialog):
+ SettingsDialog.setWindowTitle(QCoreApplication.translate("SettingsDialog", u"Settings", None))
+ self.parametersBox.setTitle(QCoreApplication.translate("SettingsDialog", u"Select Parameters", None))
+ self.baudRateLabel.setText(QCoreApplication.translate("SettingsDialog", u"BaudRate:", None))
+ self.dataBitsLabel.setText(QCoreApplication.translate("SettingsDialog", u"Data bits:", None))
+ self.parityLabel.setText(QCoreApplication.translate("SettingsDialog", u"Parity:", None))
+ self.stopBitsLabel.setText(QCoreApplication.translate("SettingsDialog", u"Stop bits:", None))
+ self.flowControlLabel.setText(QCoreApplication.translate("SettingsDialog", u"Flow control:", None))
+ self.selectBox.setTitle(QCoreApplication.translate("SettingsDialog", u"Select Serial Port", None))
+ self.descriptionLabel.setText(QCoreApplication.translate("SettingsDialog", u"Description:", None))
+ self.manufacturerLabel.setText(QCoreApplication.translate("SettingsDialog", u"Manufacturer:", None))
+ self.serialNumberLabel.setText(QCoreApplication.translate("SettingsDialog", u"Serial number:", None))
+ self.locationLabel.setText(QCoreApplication.translate("SettingsDialog", u"Location:", None))
+ self.vidLabel.setText(QCoreApplication.translate("SettingsDialog", u"Vendor ID:", None))
+ self.pidLabel.setText(QCoreApplication.translate("SettingsDialog", u"Product ID:", None))
+ self.applyButton.setText(QCoreApplication.translate("SettingsDialog", u"Apply", None))
+ self.additionalOptionsGroupBox.setTitle(QCoreApplication.translate("SettingsDialog", u"Additional options", None))
+ self.localEchoCheckBox.setText(QCoreApplication.translate("SettingsDialog", u"Local echo", None))
+ # retranslateUi
+
diff --git a/examples/spatialaudio/audiopanning/audiopanning.pyproject b/examples/spatialaudio/audiopanning/audiopanning.pyproject
new file mode 100644
index 000000000..cc7a74a34
--- /dev/null
+++ b/examples/spatialaudio/audiopanning/audiopanning.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py"]
+}
diff --git a/examples/spatialaudio/audiopanning/doc/audiopanning.rst b/examples/spatialaudio/audiopanning/doc/audiopanning.rst
new file mode 100644
index 000000000..ea1fe4983
--- /dev/null
+++ b/examples/spatialaudio/audiopanning/doc/audiopanning.rst
@@ -0,0 +1,15 @@
+Spatial Audio Panning Example
+=============================
+
+The Spatial Audio Example demonstrates how you can use Qt Spatial Audio to
+place sound sources in 3D space and how positioning of the sound source and
+room properties affect the listening experience.
+
+The example lets you specify a sound file to be played back at a certain
+position in 3D space relative to the listener. Using sliders you can change
+the distance and the azimuth and elevation angles to the source. You can also
+change dimensions of a virtual room, the intensity of the room reflections
+and reverb.
+
+Various other properties can also be modified such as the dimensions of a virtual
+room and the intensity of the room reflections and reverb.
diff --git a/examples/spatialaudio/audiopanning/main.py b/examples/spatialaudio/audiopanning/main.py
new file mode 100644
index 000000000..19b6c3bbd
--- /dev/null
+++ b/examples/spatialaudio/audiopanning/main.py
@@ -0,0 +1,193 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import math
+import sys
+from argparse import ArgumentParser, RawTextHelpFormatter
+
+from PySide6.QtSpatialAudio import (QAudioRoom, QAudioEngine, QAudioListener,
+ QSpatialSound)
+from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QDialog,
+ QFileDialog, QFormLayout, QHBoxLayout,
+ QLineEdit, QPushButton, QSlider, QWidget)
+from PySide6.QtGui import QGuiApplication, QVector3D, QQuaternion
+from PySide6.QtCore import (QCoreApplication, QPropertyAnimation,
+ QStandardPaths, QUrl, Qt, qVersion, Slot)
+
+
+"""PySide6 port of the spatialaudio/audiopanning example from Qt v6.x"""
+
+
+class AudioWidget(QWidget):
+
+ def __init__(self):
+ super().__init__()
+ self._file_dialog = None
+ self.setMinimumSize(400, 300)
+ form = QFormLayout(self)
+
+ file_layout = QHBoxLayout()
+ self._file_edit = QLineEdit()
+ self._file_edit.setPlaceholderText("Audio File")
+ file_layout.addWidget(self._file_edit)
+ self._file_dialog_button = QPushButton("Choose...")
+ file_layout.addWidget(self._file_dialog_button)
+ form.addRow(file_layout)
+
+ self._azimuth = QSlider(Qt.Horizontal)
+ self._azimuth.setRange(-180, 180)
+ form.addRow("Azimuth (-180 - 180 degree):", self._azimuth)
+
+ self._elevation = QSlider(Qt.Horizontal)
+ self._elevation.setRange(-90, 90)
+ form.addRow("Elevation (-90 - 90 degree)", self._elevation)
+
+ self._distance = QSlider(Qt.Horizontal)
+ self._distance.setRange(0, 1000)
+ self._distance.setValue(100)
+ form.addRow("Distance (0 - 10 meter):", self._distance)
+
+ self._occlusion = QSlider(Qt.Horizontal)
+ self._occlusion.setRange(0, 400)
+ form.addRow("Occlusion (0 - 4):", self._occlusion)
+
+ self._room_dimension = QSlider(Qt.Horizontal)
+ self._room_dimension.setRange(0, 10000)
+ self._room_dimension.setValue(1000)
+ form.addRow("Room dimension (0 - 100 meter):", self._room_dimension)
+
+ self._reverb_gain = QSlider(Qt.Horizontal)
+ self._reverb_gain.setRange(0, 500)
+ self._reverb_gain.setValue(0)
+ form.addRow("Reverb gain (0-5):", self._reverb_gain)
+
+ self._reflection_gain = QSlider(Qt.Horizontal)
+ self._reflection_gain.setRange(0, 500)
+ self._reflection_gain.setValue(0)
+ form.addRow("Reflection gain (0-5):", self._reflection_gain)
+
+ self._mode = QComboBox()
+ self._mode.addItem("Surround", QAudioEngine.Surround)
+ self._mode.addItem("Stereo", QAudioEngine.Stereo)
+ self._mode.addItem("Headphone", QAudioEngine.Headphone)
+
+ form.addRow("Output mode:", self._mode)
+
+ self._animate_button = QCheckBox("Animate sound position")
+ form.addRow(self._animate_button)
+
+ self._file_edit.textChanged.connect(self.file_changed)
+ self._file_dialog_button.clicked.connect(self.open_file_dialog)
+
+ self._azimuth.valueChanged.connect(self.update_position)
+ self._elevation.valueChanged.connect(self.update_position)
+ self._distance.valueChanged.connect(self.update_position)
+ self._occlusion.valueChanged.connect(self.new_occlusion)
+
+ self._room_dimension.valueChanged.connect(self.update_room)
+ self._reverb_gain.valueChanged.connect(self.update_room)
+ self._reflection_gain.valueChanged.connect(self.update_room)
+
+ self._mode.currentIndexChanged.connect(self.mode_changed)
+
+ self._engine = QAudioEngine()
+ self._room = QAudioRoom(self._engine)
+ self._room.setWallMaterial(QAudioRoom.BackWall, QAudioRoom.BrickBare)
+ self._room.setWallMaterial(QAudioRoom.FrontWall, QAudioRoom.BrickBare)
+ self._room.setWallMaterial(QAudioRoom.LeftWall, QAudioRoom.BrickBare)
+ self._room.setWallMaterial(QAudioRoom.RightWall, QAudioRoom.BrickBare)
+ self._room.setWallMaterial(QAudioRoom.Floor, QAudioRoom.Marble)
+ self._room.setWallMaterial(QAudioRoom.Ceiling, QAudioRoom.WoodCeiling)
+ self.update_room()
+
+ self._listener = QAudioListener(self._engine)
+ self._listener.setPosition(QVector3D())
+ self._listener.setRotation(QQuaternion())
+ self._engine.start()
+
+ self._sound = QSpatialSound(self._engine)
+ self.update_position()
+
+ self._animation = QPropertyAnimation(self._azimuth, b"value")
+ self._animation.setDuration(10000)
+ self._animation.setStartValue(-180)
+ self._animation.setEndValue(180)
+ self._animation.setLoopCount(-1)
+ self._animate_button.toggled.connect(self.animate_changed)
+
+ def set_file(self, file):
+ self._file_edit.setText(file)
+
+ def update_position(self):
+ az = self._azimuth.value() / 180. * math.pi
+ el = self._elevation.value() / 180. * math.pi
+ d = self._distance.value()
+
+ x = d * math.sin(az) * math.cos(el)
+ y = d * math.sin(el)
+ z = -d * math.cos(az) * math.cos(el)
+ self._sound.setPosition(QVector3D(x, y, z))
+
+ @Slot()
+ def new_occlusion(self):
+ self._sound.setOcclusionIntensity(self._occlusion.value() / 100.)
+
+ @Slot()
+ def mode_changed(self):
+ self._engine.setOutputMode(self._mode.currentData())
+
+ @Slot(str)
+ def file_changed(self, file):
+ self._sound.setSource(QUrl.fromLocalFile(file))
+ self._sound.setSize(5)
+ self._sound.setLoops(QSpatialSound.Infinite)
+
+ @Slot()
+ def open_file_dialog(self):
+ if not self._file_dialog:
+ directory = QStandardPaths.writableLocation(QStandardPaths.MusicLocation)
+ self._file_dialog = QFileDialog(self, "Open Audio File", directory)
+ self._file_dialog.setAcceptMode(QFileDialog.AcceptOpen)
+ mime_types = ["audio/mpeg", "audio/aac", "audio/x-ms-wma",
+ "audio/x-flac+ogg", "audio/x-wav"]
+ self._file_dialog.setMimeTypeFilters(mime_types)
+ self._file_dialog.selectMimeTypeFilter(mime_types[0])
+
+ if self._file_dialog.exec() == QDialog.Accepted:
+ self._file_edit.setText(self._file_dialog.selectedFiles()[0])
+
+ @Slot()
+ def update_room(self):
+ d = self._room_dimension.value()
+ self._room.setDimensions(QVector3D(d, d, 400))
+ self._room.setReflectionGain(float(self._reflection_gain.value()) / 100)
+ self._room.setReverbGain(float(self._reverb_gain.value()) / 100)
+
+ @Slot()
+ def animate_changed(self):
+ if self._animate_button.isChecked():
+ self._animation.start()
+ else:
+ self._animation.stop()
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ name = "Spatial Audio Test Application"
+ QCoreApplication.setApplicationVersion(qVersion())
+ QGuiApplication.setApplicationDisplayName(name)
+
+ argument_parser = ArgumentParser(description=name,
+ formatter_class=RawTextHelpFormatter)
+ argument_parser.add_argument("file", help="File",
+ nargs='?', type=str)
+ options = argument_parser.parse_args()
+
+ w = AudioWidget()
+ w.show()
+
+ if options.file:
+ w.set_file(options.file)
+
+ sys.exit(app.exec())
diff --git a/examples/speech/hello_speak/doc/hello_speak.rst b/examples/speech/hello_speak/doc/hello_speak.rst
new file mode 100644
index 000000000..b7c17c35f
--- /dev/null
+++ b/examples/speech/hello_speak/doc/hello_speak.rst
@@ -0,0 +1,16 @@
+Hello Speak
+===========
+
+The Hello Speak example reads out user-provided text.
+
+The Hello Speak example demonstrates how QTextToSpeech can be used in a Qt C++
+application to read out text, and to control the speech.
+
+The example uses a widget UI to provide controls for the pitch, volume, and
+rate of the speech. It also lets the user select an engine, the language, and a
+voice.
+
+.. image:: hello_speak.webp
+ :width: 400
+ :alt: Hello Speak Screenshot
+
diff --git a/examples/speech/hello_speak/doc/hello_speak.webp b/examples/speech/hello_speak/doc/hello_speak.webp
new file mode 100644
index 000000000..c378d1a4b
--- /dev/null
+++ b/examples/speech/hello_speak/doc/hello_speak.webp
Binary files differ
diff --git a/examples/speech/hello_speak/hello_speak.pyproject b/examples/speech/hello_speak/hello_speak.pyproject
new file mode 100644
index 000000000..0cefc7531
--- /dev/null
+++ b/examples/speech/hello_speak/hello_speak.pyproject
@@ -0,0 +1,5 @@
+{
+ "files": ["main.py",
+ "mainwindow.py",
+ "mainwindow.ui"]
+}
diff --git a/examples/speech/hello_speak/main.py b/examples/speech/hello_speak/main.py
new file mode 100644
index 000000000..b025dd6c0
--- /dev/null
+++ b/examples/speech/hello_speak/main.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the hello_speak example from Qt v6.x"""
+
+import sys
+
+from PySide6.QtCore import QLoggingCategory
+from PySide6.QtWidgets import QApplication
+
+from mainwindow import MainWindow
+
+
+if __name__ == "__main__":
+ QLoggingCategory.setFilterRules("qt.speech.tts=true\nqt.speech.tts.*=true")
+
+ app = QApplication(sys.argv)
+ win = MainWindow()
+ win.show()
+ sys.exit(app.exec())
diff --git a/examples/speech/hello_speak/mainwindow.py b/examples/speech/hello_speak/mainwindow.py
new file mode 100644
index 000000000..7790fec8c
--- /dev/null
+++ b/examples/speech/hello_speak/mainwindow.py
@@ -0,0 +1,134 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QLocale, QSignalBlocker, Slot
+from PySide6.QtWidgets import QMainWindow
+from PySide6.QtTextToSpeech import QTextToSpeech, QVoice
+
+from ui_mainwindow import Ui_MainWindow
+
+
+class MainWindow(QMainWindow):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self._speech = None
+ self._voices = []
+
+ self._ui = Ui_MainWindow()
+ self._ui.setupUi(self)
+
+ # Populate engine selection list
+ self._ui.engine.addItem("Default", "default")
+ engines = QTextToSpeech.availableEngines()
+ for engine in engines:
+ self._ui.engine.addItem(engine, engine)
+ self._ui.engine.setCurrentIndex(0)
+ self.engine_selected(0)
+
+ self._ui.pitch.valueChanged.connect(self.set_pitch)
+ self._ui.rate.valueChanged.connect(self.set_rate)
+ self._ui.volume.valueChanged.connect(self.set_volume)
+ self._ui.engine.currentIndexChanged.connect(self.engine_selected)
+ self._ui.voice.currentIndexChanged.connect(self.voice_selected)
+ self._ui.language.currentIndexChanged.connect(self.language_selected)
+
+ @Slot(int)
+ def set_rate(self, rate):
+ self._speech.setRate(rate / 10.0)
+
+ @Slot(int)
+ def set_pitch(self, pitch):
+ self._speech.setPitch(pitch / 10.0)
+
+ @Slot(int)
+ def set_volume(self, volume):
+ self._speech.setVolume(volume / 100.0)
+
+ @Slot(QTextToSpeech.State)
+ def state_changed(self, state):
+ if state == QTextToSpeech.Speaking:
+ self._ui.statusbar.showMessage("Speech started...")
+ elif state == QTextToSpeech.Ready:
+ self._ui.statusbar.showMessage("Speech stopped...", 2000)
+ elif state == QTextToSpeech.Paused:
+ self._ui.statusbar.showMessage("Speech paused...")
+ else:
+ self._ui.statusbar.showMessage("Speech error!")
+
+ self._ui.pauseButton.setEnabled(state == QTextToSpeech.Speaking)
+ self._ui.resumeButton.setEnabled(state == QTextToSpeech.Paused)
+ can_stop = state == QTextToSpeech.Speaking or state == QTextToSpeech.Paused
+ self._ui.stopButton.setEnabled(can_stop)
+
+ @Slot(int)
+ def engine_selected(self, index):
+ engine_name = self._ui.engine.itemData(index)
+ self._speech = None
+ self._speech = (QTextToSpeech(self) if engine_name == "default"
+ else QTextToSpeech(engine_name, self))
+
+ # Block signals of the languages combobox while populating
+ current = self._speech.locale()
+ with QSignalBlocker(self._ui.language):
+ self._ui.language.clear()
+ # Populate the languages combobox before connecting its signal.
+ locales = self._speech.availableLocales()
+ for locale in locales:
+ lang = QLocale.languageToString(locale.language())
+ territory = QLocale.territoryToString(locale.territory())
+ self._ui.language.addItem(f"{lang} ({territory})", locale)
+ if locale.name() == current.name():
+ current = locale
+
+ self.set_rate(self._ui.rate.value())
+ self.set_pitch(self._ui.pitch.value())
+ self.set_volume(self._ui.volume.value())
+
+ self._ui.speakButton.clicked.connect(self.speak_text)
+ self._ui.stopButton.clicked.connect(self.stop_speaking)
+ self._ui.pauseButton.clicked.connect(self.pause_speaking)
+ self._ui.resumeButton.clicked.connect(self._speech.resume)
+
+ self._speech.stateChanged.connect(self.state_changed)
+ self._speech.localeChanged.connect(self.locale_changed)
+
+ self.locale_changed(current)
+
+ @Slot()
+ def speak_text(self):
+ self._speech.say(self._ui.plainTextEdit.toPlainText())
+
+ @Slot()
+ def stop_speaking(self):
+ self._speech.stop()
+
+ @Slot()
+ def pause_speaking(self):
+ self._speech.pause()
+
+ @Slot(int)
+ def language_selected(self, language):
+ locale = self._ui.language.itemData(language)
+ self._speech.setLocale(locale)
+
+ @Slot(int)
+ def voice_selected(self, index):
+ self._speech.setVoice(self._voices[index])
+
+ @Slot(QLocale)
+ def locale_changed(self, locale):
+ self._ui.language.setCurrentIndex(self._ui.language.findData(locale))
+
+ with QSignalBlocker(self._ui.voice):
+ self._ui.voice.clear()
+ self._voices = self._speech.availableVoices()
+ current_voice = self._speech.voice()
+ for voice in self._voices:
+ name = voice.name()
+ gender = QVoice.genderName(voice.gender())
+ age = QVoice.ageName(voice.age())
+ self._ui.voice.addItem(f"{name} - {gender} - {age}")
+ if voice.name() == current_voice.name():
+ self._ui.voice.setCurrentIndex(self._ui.voice.count() - 1)
diff --git a/examples/speech/hello_speak/mainwindow.ui b/examples/speech/hello_speak/mainwindow.ui
new file mode 100644
index 000000000..6f3accf6c
--- /dev/null
+++ b/examples/speech/hello_speak/mainwindow.ui
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>551</width>
+ <height>448</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MainWindow</string>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QPlainTextEdit" name="plainTextEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="plainText">
+ <string>Hello QtTextToSpeech,
+this is an example text in English.
+
+QtSpeech is a library that makes text to speech easy with Qt.
+Done, over and out.</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Engine</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Pitch:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>&amp;Language:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ <property name="buddy">
+ <cstring>language</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QSlider" name="pitch">
+ <property name="minimum">
+ <number>-10</number>
+ </property>
+ <property name="maximum">
+ <number>10</number>
+ </property>
+ <property name="singleStep">
+ <number>1</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Voice name:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QSlider" name="volume">
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="singleStep">
+ <number>5</number>
+ </property>
+ <property name="pageStep">
+ <number>20</number>
+ </property>
+ <property name="value">
+ <number>70</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="2">
+ <widget class="QComboBox" name="language">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="2">
+ <widget class="QComboBox" name="voice"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Rate:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Volume:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QSlider" name="rate">
+ <property name="minimum">
+ <number>-10</number>
+ </property>
+ <property name="maximum">
+ <number>10</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2">
+ <widget class="QComboBox" name="engine">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QPushButton" name="speakButton">
+ <property name="text">
+ <string>Speak</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pauseButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Pause</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="resumeButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Resume</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="stopButton">
+ <property name="text">
+ <string>Stop</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QStatusBar" name="statusbar"/>
+ </widget>
+ <tabstops>
+ <tabstop>plainTextEdit</tabstop>
+ <tabstop>speakButton</tabstop>
+ <tabstop>pauseButton</tabstop>
+ <tabstop>resumeButton</tabstop>
+ <tabstop>stopButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/speech/hello_speak/ui_mainwindow.py b/examples/speech/hello_speak/ui_mainwindow.py
new file mode 100644
index 000000000..ab132e7fb
--- /dev/null
+++ b/examples/speech/hello_speak/ui_mainwindow.py
@@ -0,0 +1,211 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'mainwindow.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QComboBox, QGridLayout, QHBoxLayout,
+ QLabel, QMainWindow, QPlainTextEdit, QPushButton,
+ QSizePolicy, QSlider, QSpacerItem, QStatusBar,
+ QVBoxLayout, QWidget)
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ if not MainWindow.objectName():
+ MainWindow.setObjectName(u"MainWindow")
+ MainWindow.resize(551, 448)
+ self.centralwidget = QWidget(MainWindow)
+ self.centralwidget.setObjectName(u"centralwidget")
+ self.verticalLayout = QVBoxLayout(self.centralwidget)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.plainTextEdit = QPlainTextEdit(self.centralwidget)
+ self.plainTextEdit.setObjectName(u"plainTextEdit")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.plainTextEdit.sizePolicy().hasHeightForWidth())
+ self.plainTextEdit.setSizePolicy(sizePolicy)
+
+ self.verticalLayout.addWidget(self.plainTextEdit)
+
+ self.gridLayout = QGridLayout()
+ self.gridLayout.setObjectName(u"gridLayout")
+ self.label_5 = QLabel(self.centralwidget)
+ self.label_5.setObjectName(u"label_5")
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Preferred)
+ sizePolicy1.setHorizontalStretch(0)
+ sizePolicy1.setVerticalStretch(0)
+ sizePolicy1.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
+ self.label_5.setSizePolicy(sizePolicy1)
+ self.label_5.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
+
+ self.gridLayout.addWidget(self.label_5, 4, 0, 1, 1)
+
+ self.label_3 = QLabel(self.centralwidget)
+ self.label_3.setObjectName(u"label_3")
+ sizePolicy1.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
+ self.label_3.setSizePolicy(sizePolicy1)
+ self.label_3.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
+
+ self.gridLayout.addWidget(self.label_3, 3, 0, 1, 1)
+
+ self.label_4 = QLabel(self.centralwidget)
+ self.label_4.setObjectName(u"label_4")
+ sizePolicy1.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
+ self.label_4.setSizePolicy(sizePolicy1)
+ self.label_4.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
+
+ self.gridLayout.addWidget(self.label_4, 5, 0, 1, 1)
+
+ self.pitch = QSlider(self.centralwidget)
+ self.pitch.setObjectName(u"pitch")
+ self.pitch.setMinimum(-10)
+ self.pitch.setMaximum(10)
+ self.pitch.setSingleStep(1)
+ self.pitch.setOrientation(Qt.Horizontal)
+
+ self.gridLayout.addWidget(self.pitch, 3, 2, 1, 1)
+
+ self.label_6 = QLabel(self.centralwidget)
+ self.label_6.setObjectName(u"label_6")
+ self.label_6.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
+
+ self.gridLayout.addWidget(self.label_6, 6, 0, 1, 1)
+
+ self.volume = QSlider(self.centralwidget)
+ self.volume.setObjectName(u"volume")
+ self.volume.setMaximum(100)
+ self.volume.setSingleStep(5)
+ self.volume.setPageStep(20)
+ self.volume.setValue(70)
+ self.volume.setOrientation(Qt.Horizontal)
+
+ self.gridLayout.addWidget(self.volume, 1, 2, 1, 1)
+
+ self.language = QComboBox(self.centralwidget)
+ self.language.setObjectName(u"language")
+ sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
+ sizePolicy2.setHorizontalStretch(0)
+ sizePolicy2.setVerticalStretch(0)
+ sizePolicy2.setHeightForWidth(self.language.sizePolicy().hasHeightForWidth())
+ self.language.setSizePolicy(sizePolicy2)
+
+ self.gridLayout.addWidget(self.language, 5, 2, 1, 1)
+
+ self.voice = QComboBox(self.centralwidget)
+ self.voice.setObjectName(u"voice")
+
+ self.gridLayout.addWidget(self.voice, 6, 2, 1, 1)
+
+ self.label = QLabel(self.centralwidget)
+ self.label.setObjectName(u"label")
+ sizePolicy1.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
+ self.label.setSizePolicy(sizePolicy1)
+ self.label.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
+
+ self.gridLayout.addWidget(self.label, 2, 0, 1, 1)
+
+ self.label_2 = QLabel(self.centralwidget)
+ self.label_2.setObjectName(u"label_2")
+ sizePolicy1.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
+ self.label_2.setSizePolicy(sizePolicy1)
+ self.label_2.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
+
+ self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
+
+ self.rate = QSlider(self.centralwidget)
+ self.rate.setObjectName(u"rate")
+ self.rate.setMinimum(-10)
+ self.rate.setMaximum(10)
+ self.rate.setOrientation(Qt.Horizontal)
+
+ self.gridLayout.addWidget(self.rate, 2, 2, 1, 1)
+
+ self.engine = QComboBox(self.centralwidget)
+ self.engine.setObjectName(u"engine")
+ sizePolicy2.setHeightForWidth(self.engine.sizePolicy().hasHeightForWidth())
+ self.engine.setSizePolicy(sizePolicy2)
+
+ self.gridLayout.addWidget(self.engine, 4, 2, 1, 1)
+
+
+ self.verticalLayout.addLayout(self.gridLayout)
+
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.speakButton = QPushButton(self.centralwidget)
+ self.speakButton.setObjectName(u"speakButton")
+
+ self.horizontalLayout.addWidget(self.speakButton)
+
+ self.pauseButton = QPushButton(self.centralwidget)
+ self.pauseButton.setObjectName(u"pauseButton")
+ self.pauseButton.setEnabled(False)
+
+ self.horizontalLayout.addWidget(self.pauseButton)
+
+ self.resumeButton = QPushButton(self.centralwidget)
+ self.resumeButton.setObjectName(u"resumeButton")
+ self.resumeButton.setEnabled(False)
+
+ self.horizontalLayout.addWidget(self.resumeButton)
+
+ self.stopButton = QPushButton(self.centralwidget)
+ self.stopButton.setObjectName(u"stopButton")
+
+ self.horizontalLayout.addWidget(self.stopButton)
+
+
+ self.verticalLayout.addLayout(self.horizontalLayout)
+
+ self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout.addItem(self.verticalSpacer)
+
+ MainWindow.setCentralWidget(self.centralwidget)
+ self.statusbar = QStatusBar(MainWindow)
+ self.statusbar.setObjectName(u"statusbar")
+ MainWindow.setStatusBar(self.statusbar)
+#if QT_CONFIG(shortcut)
+ self.label_4.setBuddy(self.language)
+#endif // QT_CONFIG(shortcut)
+ QWidget.setTabOrder(self.plainTextEdit, self.speakButton)
+ QWidget.setTabOrder(self.speakButton, self.pauseButton)
+ QWidget.setTabOrder(self.pauseButton, self.resumeButton)
+ QWidget.setTabOrder(self.resumeButton, self.stopButton)
+
+ self.retranslateUi(MainWindow)
+
+ QMetaObject.connectSlotsByName(MainWindow)
+ # setupUi
+
+ def retranslateUi(self, MainWindow):
+ MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
+ self.plainTextEdit.setPlainText(QCoreApplication.translate("MainWindow", u"Hello QtTextToSpeech,\n"
+"this is an example text in English.\n"
+"\n"
+"QtSpeech is a library that makes text to speech easy with Qt.\n"
+"Done, over and out.", None))
+ self.label_5.setText(QCoreApplication.translate("MainWindow", u"Engine", None))
+ self.label_3.setText(QCoreApplication.translate("MainWindow", u"Pitch:", None))
+ self.label_4.setText(QCoreApplication.translate("MainWindow", u"&Language:", None))
+ self.label_6.setText(QCoreApplication.translate("MainWindow", u"Voice name:", None))
+ self.label.setText(QCoreApplication.translate("MainWindow", u"Rate:", None))
+ self.label_2.setText(QCoreApplication.translate("MainWindow", u"Volume:", None))
+ self.speakButton.setText(QCoreApplication.translate("MainWindow", u"Speak", None))
+ self.pauseButton.setText(QCoreApplication.translate("MainWindow", u"Pause", None))
+ self.resumeButton.setText(QCoreApplication.translate("MainWindow", u"Resume", None))
+ self.stopButton.setText(QCoreApplication.translate("MainWindow", u"Stop", None))
+ # retranslateUi
+
diff --git a/examples/sql/books/bookdelegate.py b/examples/sql/books/bookdelegate.py
index f8b199d76..78295adf1 100644
--- a/examples/sql/books/bookdelegate.py
+++ b/examples/sql/books/bookdelegate.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2019 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import copy
from PySide6.QtSql import QSqlRelationalDelegate
@@ -50,7 +13,8 @@ class BookDelegate(QSqlRelationalDelegate):
def __init__(self, parent=None):
QSqlRelationalDelegate.__init__(self, parent)
- self.star = QPixmap(":/images/star.png")
+ self.star = QPixmap(":/images/star.svg")
+ self.star_filled = QPixmap(":/images/star-filled.svg")
def paint(self, painter, option, index):
""" Paint the items in the table.
@@ -80,19 +44,19 @@ class BookDelegate(QSqlRelationalDelegate):
if option.state & QStyle.State_Selected:
painter.fillRect(option.rect,
- option.palette.color(color_group, QPalette.Highlight))
+ option.palette.color(color_group, QPalette.Highlight))
rating = model.data(index, Qt.DisplayRole)
width = self.star.width()
height = self.star.height()
x = option.rect.x()
y = option.rect.y() + (option.rect.height() / 2) - (height / 2)
- for i in range(rating):
- painter.drawPixmap(x, y, self.star)
+ for i in range(5):
+ if i < rating:
+ painter.drawPixmap(x, y, self.star_filled)
+ else:
+ painter.drawPixmap(x, y, self.star)
x += width
- # Since we draw the grid ourselves:
- self.drawFocus(painter, option, option.rect.adjusted(0, 0, -1, -1))
-
pen = painter.pen()
painter.setPen(option.palette.color(QPalette.Mid))
painter.drawLine(option.rect.bottomLeft(), option.rect.bottomRight())
diff --git a/examples/sql/books/books.qrc b/examples/sql/books/books.qrc
index d6ad21337..a52ee381b 100644
--- a/examples/sql/books/books.qrc
+++ b/examples/sql/books/books.qrc
@@ -1,5 +1,6 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
- <file>images/star.png</file>
+ <file>images/star.svg</file>
+ <file>images/star-filled.svg</file>
</qresource>
</RCC>
diff --git a/examples/sql/books/bookwindow.py b/examples/sql/books/bookwindow.py
index c57db4afb..7f9e0f94b 100644
--- a/examples/sql/books/bookwindow.py
+++ b/examples/sql/books/bookwindow.py
@@ -1,45 +1,8 @@
-#############################################################################
-##
-## Copyright (C) 2019 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtWidgets import (QAbstractItemView, QDataWidgetMapper,
- QHeaderView, QMainWindow, QMessageBox)
+ QHeaderView, QMainWindow, QMessageBox)
from PySide6.QtGui import QKeySequence
from PySide6.QtSql import QSqlRelation, QSqlRelationalTableModel, QSqlTableModel
from PySide6.QtCore import Qt, Slot
@@ -95,7 +58,7 @@ class BookWindow(QMainWindow, Ui_BookWindow):
# Lock and prohibit resizing of the width of the rating column:
self.bookTable.horizontalHeader().setSectionResizeMode(model.fieldIndex("rating"),
- QHeaderView.ResizeToContents)
+ QHeaderView.ResizeToContents)
mapper = QDataWidgetMapper(self)
mapper.setModel(model)
@@ -112,24 +75,24 @@ class BookWindow(QMainWindow, Ui_BookWindow):
self.bookTable.setCurrentIndex(model.index(0, 0))
self.create_menubar()
- def showError(err):
+ def showError(self, err):
QMessageBox.critical(self, "Unable to initialize Database",
- f"Error initializing database: {err.text()}")
+ f"Error initializing database: {err.text()}")
def create_menubar(self):
file_menu = self.menuBar().addMenu(self.tr("&File"))
quit_action = file_menu.addAction(self.tr("&Quit"))
- quit_action.triggered.connect(qApp.quit)
+ quit_action.triggered.connect(qApp.quit) # noqa: F821
help_menu = self.menuBar().addMenu(self.tr("&Help"))
about_action = help_menu.addAction(self.tr("&About"))
about_action.setShortcut(QKeySequence.HelpContents)
about_action.triggered.connect(self.about)
aboutQt_action = help_menu.addAction("&About Qt")
- aboutQt_action.triggered.connect(qApp.aboutQt)
+ aboutQt_action.triggered.connect(qApp.aboutQt) # noqa: F821
@Slot()
def about(self):
QMessageBox.about(self, self.tr("About Books"),
- self.tr("<p>The <b>Books</b> example shows how to use Qt SQL classes "
- "with a model/view framework."))
+ self.tr("<p>The <b>Books</b> example shows how to use Qt SQL classes "
+ "with a model/view framework."))
diff --git a/examples/sql/books/createdb.py b/examples/sql/books/createdb.py
index 48784a88e..5ee0f148e 100644
--- a/examples/sql/books/createdb.py
+++ b/examples/sql/books/createdb.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2019 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtSql import QSqlDatabase, QSqlQuery
from datetime import date
diff --git a/examples/sql/books/images/star-filled.svg b/examples/sql/books/images/star-filled.svg
new file mode 100644
index 000000000..8a2aee27f
--- /dev/null
+++ b/examples/sql/books/images/star-filled.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#0d0d0d"><path d="M8.41 18.138L12 15.845l3.59 2.323-.94-4.345 3.162-2.897-4.159-.392L12 6.43l-1.652 4.073-4.159.392 3.162 2.927-.94 4.315zm-1.346 3.696a1.04 1.04 0 0 1-1.567-1.104l1.318-6.033-4.476-4.11c-.665-.611-.293-1.726.604-1.808l5.866-.539 2.229-5.587c.348-.872 1.575-.872 1.923 0l2.229 5.587 5.866.539c.897.082 1.269 1.197.604 1.808l-4.476 4.11 1.318 6.033a1.04 1.04 0 0 1-1.567 1.104L12 18.681l-4.935 3.153z"/><path d="M12 5l-1.796 5.528H4.392l4.702 3.416-1.796 5.528L12 16.056l4.702 3.416-1.796-5.528 4.702-3.416h-5.812L12 5z"/></svg>
diff --git a/examples/sql/books/images/star.png b/examples/sql/books/images/star.png
deleted file mode 100644
index 87f4464bd..000000000
--- a/examples/sql/books/images/star.png
+++ /dev/null
Binary files differ
diff --git a/examples/sql/books/images/star.svg b/examples/sql/books/images/star.svg
new file mode 100644
index 000000000..d959abc18
--- /dev/null
+++ b/examples/sql/books/images/star.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path d="M8.41 18.138L12 15.845l3.59 2.323-.94-4.345 3.162-2.897-4.159-.392L12 6.43l-1.652 4.073-4.159.392 3.162 2.927-.94 4.315zm-1.346 3.696a1.04 1.04 0 0 1-1.567-1.104l1.318-6.033-4.476-4.11c-.665-.611-.293-1.726.604-1.808l5.866-.539 2.229-5.587c.348-.872 1.575-.872 1.923 0l2.229 5.587 5.866.539c.897.082 1.269 1.197.604 1.808l-4.476 4.11 1.318 6.033a1.04 1.04 0 0 1-1.567 1.104L12 18.681l-4.935 3.153z" fill="#0d0d0d"/></svg>
diff --git a/examples/sql/books/main.py b/examples/sql/books/main.py
index 3994a66b4..025b55884 100644
--- a/examples/sql/books/main.py
+++ b/examples/sql/books/main.py
@@ -1,47 +1,10 @@
-#############################################################################
-##
-## Copyright (C) 2019 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
from PySide6.QtWidgets import QApplication
from bookwindow import BookWindow
-import rc_books
+import rc_books # noqa: F401
if __name__ == "__main__":
app = QApplication([])
diff --git a/examples/sql/books/rc_books.py b/examples/sql/books/rc_books.py
index b5d1d53bb..123d50de8 100644
--- a/examples/sql/books/rc_books.py
+++ b/examples/sql/books/rc_books.py
@@ -1,62 +1,86 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.14.0
+# Created by: The Resource Compiler for Qt version 6.6.1
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
qt_resource_data = b"\
-\x00\x00\x03\x0e\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\
-\x00\x00\x00\x09pHYs\x00\x00\x0b\x11\x00\x00\x0b\x11\
-\x01\x7fd_\x91\x00\x00\x00\x07tIME\x07\xd4\x09\
-\x03\x12\x11\x08\x18~\xe5:\x00\x00\x00\x06bKGD\
-\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x02\x9bID\
-AT8\xcbc\x98:c\x1e#:\xe6\xe5d\xcf\x17\
-\x12\x12\x16\xc4&\x87\x8e\x19\xb0\x09v\xc6\x18\xb7x\xea\
-\x8b\xcd\x9c=o\x09i\x06,X4\x8f\xf1\xd2\xa5\x99\
-L\xb9\xa1\x16\xc5\xc7\xbb\xed\xff\x0a\xf2\xb2;M\x9f\xb5\
-\x908\x03\x16,\x9a\xcb\xf8\xe0\xde\x04\x96\xc7\x0f\xdby\
-\xe7MO\xc8\xfbv\xbf\xe5\xff\xb4\x0a\x9b\x9by\x851\
-\xdc\xd3g-\x82k\x983\x7f)\xe3l F1`\
-\xca\xf4y\x8c\xd7\xaeMg\x02i~\xf2\xa8Y\xe1\xd2\
-\xa5\xfa\xdc_\x9f7\xfd\xffx\xbf\xea\x7fE\x96m\x97\
-\x81\x81>'33\x8b\xa5\x9e8gi\xb8\x9e\xc0f\
-&&\xa6D\x14\x03&N\x9d\xc7x\xef\xdeD\x96'\
-\x0f[E\x9f>j\xd6\xbdu\xb3\x22\xef\xd7\xb7=\xff\
-\xbe\x7f\xe8\xfb\x7f~S\xcc\xef\x05\xc5\xea\x9fNOQ\
-\xfb\x7f\xbaM\xed\xbf\x87\x1a\xefn5-\x1dV\x14\x03\
-f\xcf[\xce\xa8\xa4\xa9![W\xed\x9b}\xefJ\xcb\
-\xcew\xaf&\x7f\xfa\xfee\xc9\xff\xef\x1f\xfa\xff\xbf\xbf\
-\x95\xf2\xff\xc9^\x83\xffW\x17\xaa\xfdot\x12{\xc4\
-\xc7\xc7/\x8e\x12\x06Y\xb9\x85\xcc\xb2\x82\x1c\xf3\xa7D\
-\xab\xfe\xfa\xbe%\xe2\xff\x8fgm\xff\x7f|\x9a\x08\xd6\
-\xfc\xf5Y\xcd\xff\xd7\xe7\xfc\xfe\xdf\xde\xa0\xf5\x7fE\x94\
-\xecO\x16\x16V\xebi3\xe7\xa3\x06\xe2\xe4is\x18\
-\xe7/Z\xc1\xc8\xce\xc1i\x10\xe5\xa8\xd2\xbe\xa6\xcd\xe7\
-\xf6\xc3m\x99\xff~^(\xf8\xff\xe1j\xe0\xff\x17G\
-L\xff\xdf\xdf\xae\xf6\xbf\xc2]\xf4\xba\x9a\x9a\x06\x1bF\
-,\x00\x01#2\xe6\xe6\xe6`Q\xd6\x941_\xde\xe4\
-q\xfb\xc3y\xd3\xff\x1b\x8aT\xff\xbf?`\xff\xff\xdc\
-l\xe5\xff\xea\xc2\x1c9\xd3g-\xc0i\x00\x13\x10\x8b\
-\x03\xb1?\x10\xe7\xf5\x16\xd8\xde\xf8p\xc6\xe4\xbf\x9d<\
-\xf7t\x7fC\xe9\x95\xb7\x96\xd9\xff\x9b\x9c,\xfdN@\
-@H\x14\x9b\x01LP,\x06\xc4\x19@|\x22;\xca\
-\xf0\xe7\xe9\xf9\x06\xff\x81\xec\x03@\xbc^\x82\x9f\xf3\xf6\
-\x9e\x1a\xf3_az\x823P\xd2\x01T#3\x10\x0b\
-\x00\xb1\x1e\x10\x17\x03\xf1\xd1\xa8@\xdd\x9f\xad\x09J \
-\x03\xfe\x00\xf17 >\x0f\xb4kf\xb9\xa7\xea\x0d}\
-i>#d\x03\xb4\x808\x08\x88k\x81x\x09\xd4\xc6\
-\x1b\x11a\x06\xdf\xec\x94\xb8\xdf\x03\xd9;\x81x\x1a\x10\
-\xf7\x82\xd4\xb0\xb2\xb1G\xf9\xda\x99:L\x9d9\x9f\x09\
-f\x80\x0e\x10;\x02\xb1\x13\x10[\x00\xb1\x01\x10\x07\x06\
-{h\x9c\x02\xd2k\xa0\x86\x8b\x001\x17\x10\xf3\x80\xb0\
-\x88\x88(\xcb,hFC\xf6\x02\x08\xb3\x001+\x10\
-K122\xe4\x01i7 \x96\x01b6\xa88\x0b\
-T=cW\xef$\xb0\x01\x00\xceo{\xf5UL\xf0\
-\xac\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x02e\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2224\
+\x22 height=\x2224\x22 fi\
+ll=\x22#0d0d0d\x22><pa\
+th d=\x22M8.41 18.1\
+38L12 15.845l3.5\
+9 2.323-.94-4.34\
+5 3.162-2.897-4.\
+159-.392L12 6.43\
+l-1.652 4.073-4.\
+159.392 3.162 2.\
+927-.94 4.315zm-\
+1.346 3.696a1.04\
+ 1.04 0 0 1-1.56\
+7-1.104l1.318-6.\
+033-4.476-4.11c-\
+.665-.611-.293-1\
+.726.604-1.808l5\
+.866-.539 2.229-\
+5.587c.348-.872 \
+1.575-.872 1.923\
+ 0l2.229 5.587 5\
+.866.539c.897.08\
+2 1.269 1.197.60\
+4 1.808l-4.476 4\
+.11 1.318 6.033a\
+1.04 1.04 0 0 1-\
+1.567 1.104L12 1\
+8.681l-4.935 3.1\
+53z\x22/><path d=\x22M\
+12 5l-1.796 5.52\
+8H4.392l4.702 3.\
+416-1.796 5.528L\
+12 16.056l4.702 \
+3.416-1.796-5.52\
+8 4.702-3.416h-5\
+.812L12 5z\x22/></s\
+vg>\x0a\
+\x00\x00\x01\xfa\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2224\
+\x22 height=\x2224\x22 fi\
+ll=\x22none\x22><path \
+d=\x22M8.41 18.138L\
+12 15.845l3.59 2\
+.323-.94-4.345 3\
+.162-2.897-4.159\
+-.392L12 6.43l-1\
+.652 4.073-4.159\
+.392 3.162 2.927\
+-.94 4.315zm-1.3\
+46 3.696a1.04 1.\
+04 0 0 1-1.567-1\
+.104l1.318-6.033\
+-4.476-4.11c-.66\
+5-.611-.293-1.72\
+6.604-1.808l5.86\
+6-.539 2.229-5.5\
+87c.348-.872 1.5\
+75-.872 1.923 0l\
+2.229 5.587 5.86\
+6.539c.897.082 1\
+.269 1.197.604 1\
+.808l-4.476 4.11\
+ 1.318 6.033a1.0\
+4 1.04 0 0 1-1.5\
+67 1.104L12 18.6\
+81l-4.935 3.153z\
+\x22 fill=\x22#0d0d0d\x22\
+/></svg>\x0a\
"
qt_resource_name = b"\
@@ -64,19 +88,25 @@ qt_resource_name = b"\
\x07\x03}\xc3\
\x00i\
\x00m\x00a\x00g\x00e\x00s\
+\x00\x0f\
+\x02\x11 \x07\
+\x00s\
+\x00t\x00a\x00r\x00-\x00f\x00i\x00l\x00l\x00e\x00d\x00.\x00s\x00v\x00g\
\x00\x08\
-\x0a\x85X\x07\
+\x0a\x85U\x87\
\x00s\
-\x00t\x00a\x00r\x00.\x00p\x00n\x00g\
+\x00t\x00a\x00r\x00.\x00s\x00v\x00g\
"
qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01j\x965\xd3\xea\
+\x00\x00\x01\x8c\xd4\xc79\xcf\
+\x00\x00\x006\x00\x00\x00\x00\x00\x01\x00\x00\x02i\
+\x00\x00\x01\x8c\xd4\xc79\xcf\
"
def qInitResources():
diff --git a/examples/sql/books/ui_bookwindow.py b/examples/sql/books/ui_bookwindow.py
index 597b339cd..52795217e 100644
--- a/examples/sql/books/ui_bookwindow.py
+++ b/examples/sql/books/ui_bookwindow.py
@@ -3,21 +3,26 @@
################################################################################
## Form generated from reading UI file 'bookwindow.ui'
##
-## Created by: Qt User Interface Compiler version 5.14.0
+## Created by: Qt User Interface Compiler version 6.7.0
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
-from PySide6.QtCore import (QCoreApplication, QMetaObject, QObject, QPoint,
- QRect, QSize, QUrl, Qt)
-from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QFont,
- QFontDatabase, QIcon, QLinearGradient, QPalette, QPainter, QPixmap,
- QRadialGradient)
-from PySide6.QtWidgets import *
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QAbstractItemView, QApplication, QComboBox, QFormLayout,
+ QGroupBox, QHeaderView, QLabel, QLineEdit,
+ QMainWindow, QSizePolicy, QSpinBox, QTableView,
+ QVBoxLayout, QWidget)
class Ui_BookWindow(object):
def setupUi(self, BookWindow):
- if BookWindow.objectName():
+ if not BookWindow.objectName():
BookWindow.setObjectName(u"BookWindow")
BookWindow.resize(601, 420)
self.centralWidget = QWidget(BookWindow)
@@ -127,3 +132,4 @@ class Ui_BookWindow(object):
self.yearEdit.setPrefix("")
self.label.setText(QCoreApplication.translate("BookWindow", u"<b>Rating:</b>", None))
# retranslateUi
+
diff --git a/examples/sql/relationaltablemodel/connection.py b/examples/sql/relationaltablemodel/connection.py
new file mode 100644
index 000000000..6bfc828c8
--- /dev/null
+++ b/examples/sql/relationaltablemodel/connection.py
@@ -0,0 +1,18 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the relationaltablemodel example from Qt v6.x"""
+
+
+from PySide6.QtSql import QSqlDatabase
+
+
+def createConnection():
+
+ def check(func, *args):
+ if not func(*args):
+ raise ValueError(func.__self__.lastError())
+ db = QSqlDatabase.addDatabase("QSQLITE")
+ db.setDatabaseName(":memory:")
+
+ check(db.open)
diff --git a/examples/sql/relationaltablemodel/relationaltablemodel.py b/examples/sql/relationaltablemodel/relationaltablemodel.py
new file mode 100644
index 000000000..d2efac2dc
--- /dev/null
+++ b/examples/sql/relationaltablemodel/relationaltablemodel.py
@@ -0,0 +1,77 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the relationaltablemodel example from Qt v6.x"""
+
+import sys
+
+import connection
+
+from PySide6.QtCore import QObject, Qt
+from PySide6.QtSql import (QSqlQuery, QSqlRelation, QSqlRelationalDelegate,
+ QSqlRelationalTableModel)
+from PySide6.QtWidgets import QApplication, QTableView
+
+
+def initializeModel(model):
+
+ model.setTable("employee")
+ model.setEditStrategy(QSqlRelationalTableModel.OnManualSubmit)
+ model.setRelation(2, QSqlRelation("city", "id", "name"))
+ model.setRelation(3, QSqlRelation("country", "id", "name"))
+ model.setHeaderData(0, Qt.Horizontal, QObject().tr("ID"))
+
+ model.setHeaderData(1, Qt.Horizontal, QObject().tr("Name"))
+ model.setHeaderData(2, Qt.Horizontal, QObject().tr("City"))
+ model.setHeaderData(3, Qt.Horizontal, QObject().tr("Country"))
+
+ model.select()
+
+
+def createView(title, model):
+
+ table_view = QTableView()
+ table_view.setModel(model)
+ table_view.setItemDelegate(QSqlRelationalDelegate(table_view))
+ table_view.setWindowTitle(title)
+
+ return table_view
+
+
+def createRelationalTables():
+
+ query = QSqlQuery()
+
+ query.exec("create table employee(id int primary key, name varchar(20), city int, country int)")
+ query.exec("insert into employee values(1, 'Espen', 5000, 47)")
+ query.exec("insert into employee values(2, 'Harald', 80000, 49)")
+ query.exec("insert into employee values(3, 'Sam', 100, 1)")
+
+ query.exec("create table city(id int, name varchar(20))")
+ query.exec("insert into city values(100, 'San Jose')")
+ query.exec("insert into city values(5000, 'Oslo')")
+ query.exec("insert into city values(80000, 'Munich')")
+
+ query.exec("create table country(id int, name varchar(20))")
+ query.exec("insert into country values(1, 'USA')")
+ query.exec("insert into country values(47, 'Norway')")
+ query.exec("insert into country values(49, 'Germany')")
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ connection.createConnection()
+ createRelationalTables()
+
+ model = QSqlRelationalTableModel()
+
+ initializeModel(model)
+
+ title = "Relational Table Model"
+
+ window = createView(title, model)
+ window.resize(600, 200)
+ window.show()
+
+ sys.exit(app.exec())
diff --git a/examples/statemachine/moveblocks/doc/moveblocks.png b/examples/statemachine/moveblocks/doc/moveblocks.png
new file mode 100644
index 000000000..56353d181
--- /dev/null
+++ b/examples/statemachine/moveblocks/doc/moveblocks.png
Binary files differ
diff --git a/examples/statemachine/moveblocks/doc/moveblocks.rst b/examples/statemachine/moveblocks/doc/moveblocks.rst
new file mode 100644
index 000000000..4cffd3b85
--- /dev/null
+++ b/examples/statemachine/moveblocks/doc/moveblocks.rst
@@ -0,0 +1,10 @@
+Move Blocks Example
+===================
+
+The Move Blocks example shows how to animate items in a QGraphicsScene
+using a QStateMachine with a custom transition.
+
+
+.. image:: moveblocks.png
+ :width: 400
+ :alt: Move Blocks Screenshot
diff --git a/examples/statemachine/moveblocks/moveblocks.py b/examples/statemachine/moveblocks/moveblocks.py
new file mode 100644
index 000000000..0d52c5b00
--- /dev/null
+++ b/examples/statemachine/moveblocks/moveblocks.py
@@ -0,0 +1,222 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the examples/statemachine/moveblocks example from Qt v6.x"""
+
+import sys
+
+from PySide6.QtCore import (QAbstractAnimation, QEasingCurve, QEvent, QObject,
+ QParallelAnimationGroup, QPropertyAnimation,
+ QRandomGenerator, QRect, QSequentialAnimationGroup,
+ Qt, QTimer)
+from PySide6.QtGui import QPainter, QResizeEvent
+from PySide6.QtWidgets import (QApplication, QGraphicsView, QGraphicsScene,
+ QGraphicsWidget, QStyleOptionGraphicsItem,
+ QWidget)
+from PySide6.QtStateMachine import (QAbstractTransition, QState, QStateMachine)
+
+
+StateSwitchType = QEvent.Type(QEvent.Type.User + 256)
+
+
+class StateSwitchEvent(QEvent):
+ def __init__(self, rand: int = 0) -> None:
+ super().__init__(StateSwitchType)
+ self._rand = rand
+
+ def rand(self) -> int:
+ return self._rand
+
+
+class QGraphicsRectWidget(QGraphicsWidget):
+ def __init__(self):
+ super().__init__()
+
+ def paint(self, painter: QPainter,
+ option: QStyleOptionGraphicsItem, widget: QWidget | None = None):
+ painter.fillRect(self.rect(), Qt.blue)
+
+
+class StateSwitchTransition(QAbstractTransition):
+ def __init__(self, rand: int = 0) -> None:
+ super().__init__()
+ self._rand = rand
+
+ def eventTest(self, event: QEvent) -> bool:
+ return event.type() == StateSwitchType and event.rand() == self._rand
+
+ def onTransition(self, event: QEvent):
+ pass
+
+
+class StateSwitcher(QState):
+ def __init__(self, machine: QStateMachine) -> None:
+ super().__init__(machine)
+ self._state_count = 0
+ self._last_index = 0
+ self.rg = QRandomGenerator.global_()
+
+ def onEntry(self, event: QEvent) -> None:
+ while True:
+ n = int(self.rg.bounded(self._state_count)) + 1
+ if n != self._last_index:
+ break
+ self._last_index = n
+ self.event = StateSwitchEvent(n)
+ self.machine().postEvent(self.event)
+
+ def onExit(self, event: QEvent) -> None:
+ pass
+
+ def addState(self, state: QState, animation: QAbstractAnimation) -> None:
+ self._state_count += 1
+ trans = StateSwitchTransition(self._state_count)
+ trans.setTargetState(state)
+ self.addTransition(trans)
+ trans.addAnimation(animation)
+
+
+def createGeometryState(w1: QObject, rect1: QRect,
+ w2: QObject, rect2: QRect,
+ w3: QObject, rect3: QRect,
+ w4: QObject, rect4: QRect, parent: QState) -> QState:
+ result = QState(parent)
+ result.assignProperty(w1, "geometry", rect1)
+ result.assignProperty(w2, "geometry", rect2)
+ result.assignProperty(w3, "geometry", rect3)
+ result.assignProperty(w4, "geometry", rect4)
+
+ return result
+
+
+class GraphicsView(QGraphicsView):
+ def __init__(self, scene: QGraphicsScene, parent: QWidget | None = None):
+ super().__init__(scene, parent)
+
+ def resizeEvent(self, event: QResizeEvent) -> None:
+ self.fitInView(self.sceneRect())
+ super().resizeEvent(event)
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ button1, button2 = QGraphicsRectWidget(), QGraphicsRectWidget()
+ button3, button4 = QGraphicsRectWidget(), QGraphicsRectWidget()
+
+ button2.setZValue(1)
+ button3.setZValue(2)
+ button4.setZValue(3)
+
+ scene = QGraphicsScene(0, 0, 300, 300)
+ scene.setBackgroundBrush(Qt.black)
+ scene.addItem(button1)
+ scene.addItem(button2)
+ scene.addItem(button3)
+ scene.addItem(button4)
+
+ window = GraphicsView(scene)
+ window.setFrameStyle(0)
+ window.setAlignment(Qt.AlignLeft | Qt.AlignTop)
+ window.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
+ window.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
+
+ machine = QStateMachine()
+
+ group = QState()
+ group.setObjectName("group")
+ timer = QTimer()
+ timer.setInterval(1250)
+ timer.setSingleShot(True)
+
+ group.entered.connect(timer.start)
+
+ state1, state2, state3 = QState(), QState(), QState()
+ state4, state5, state6 = QState(), QState(), QState()
+ state7 = QState()
+
+ state1 = createGeometryState(button1, QRect(100, 0, 50, 50),
+ button2, QRect(150, 0, 50, 50),
+ button3, QRect(200, 0, 50, 50),
+ button4, QRect(250, 0, 50, 50),
+ group)
+ state2 = createGeometryState(button1, QRect(250, 100, 50, 50),
+ button2, QRect(250, 150, 50, 50),
+ button3, QRect(250, 200, 50, 50),
+ button4, QRect(250, 250, 50, 50),
+ group)
+ state3 = createGeometryState(button1, QRect(150, 250, 50, 50),
+ button2, QRect(100, 250, 50, 50),
+ button3, QRect(50, 250, 50, 50),
+ button4, QRect(0, 250, 50, 50),
+ group)
+ state4 = createGeometryState(button1, QRect(0, 150, 50, 50),
+ button2, QRect(0, 100, 50, 50),
+ button3, QRect(0, 50, 50, 50),
+ button4, QRect(0, 0, 50, 50),
+ group)
+ state5 = createGeometryState(button1, QRect(100, 100, 50, 50),
+ button2, QRect(150, 100, 50, 50),
+ button3, QRect(100, 150, 50, 50),
+ button4, QRect(150, 150, 50, 50),
+ group)
+ state6 = createGeometryState(button1, QRect(50, 50, 50, 50),
+ button2, QRect(200, 50, 50, 50),
+ button3, QRect(50, 200, 50, 50),
+ button4, QRect(200, 200, 50, 50),
+ group)
+ state7 = createGeometryState(button1, QRect(0, 0, 50, 50),
+ button2, QRect(250, 0, 50, 50),
+ button3, QRect(0, 250, 50, 50),
+ button4, QRect(250, 250, 50, 50),
+ group)
+ group.setInitialState(state1)
+
+ animation_group = QParallelAnimationGroup()
+ sub_group = QSequentialAnimationGroup()
+
+ anim = QPropertyAnimation(button4, b"geometry")
+ anim.setDuration(1000)
+ anim.setEasingCurve(QEasingCurve.OutElastic)
+ animation_group.addAnimation(anim)
+
+ sub_group = QSequentialAnimationGroup(animation_group)
+ sub_group.addPause(100)
+ anim = QPropertyAnimation(button3, b"geometry")
+ anim.setDuration(1000)
+ anim.setEasingCurve(QEasingCurve.OutElastic)
+ sub_group.addAnimation(anim)
+
+ sub_group = QSequentialAnimationGroup(animation_group)
+ sub_group.addPause(150)
+ anim = QPropertyAnimation(button2, b"geometry")
+ anim.setDuration(1000)
+ anim.setEasingCurve(QEasingCurve.OutElastic)
+ sub_group.addAnimation(anim)
+
+ sub_group = QSequentialAnimationGroup(animation_group)
+ sub_group.addPause(200)
+ anim = QPropertyAnimation(button1, b"geometry")
+ anim.setDuration(1000)
+ anim.setEasingCurve(QEasingCurve.OutElastic)
+ sub_group.addAnimation(anim)
+
+ state_switcher = StateSwitcher(machine)
+ state_switcher.setObjectName("state_switcher")
+ group.addTransition(timer.timeout, state_switcher)
+ state_switcher.addState(state1, animation_group)
+ state_switcher.addState(state2, animation_group)
+ state_switcher.addState(state3, animation_group)
+ state_switcher.addState(state4, animation_group)
+ state_switcher.addState(state5, animation_group)
+ state_switcher.addState(state6, animation_group)
+ state_switcher.addState(state7, animation_group)
+
+ machine.addState(group)
+ machine.setInitialState(group)
+ machine.start()
+
+ window.resize(300, 300)
+ window.show()
+
+ sys.exit(app.exec())
diff --git a/examples/statemachine/moveblocks/moveblocks.pyproject b/examples/statemachine/moveblocks/moveblocks.pyproject
new file mode 100644
index 000000000..8c3eff508
--- /dev/null
+++ b/examples/statemachine/moveblocks/moveblocks.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["moveblocks.py"]
+}
diff --git a/examples/statemachine/ping_pong/ping_pong.py b/examples/statemachine/ping_pong/ping_pong.py
new file mode 100644
index 000000000..d5c18eb28
--- /dev/null
+++ b/examples/statemachine/ping_pong/ping_pong.py
@@ -0,0 +1,70 @@
+# Copyright (C) 2010 velociraptor Genjix <aphidia@hotmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QCoreApplication, QEvent
+from PySide6.QtStateMachine import QAbstractTransition, QState, QStateMachine
+
+
+class PingEvent(QEvent):
+ def __init__(self):
+ super().__init__(QEvent.Type(QEvent.User + 2))
+
+
+class PongEvent(QEvent):
+ def __init__(self):
+ super().__init__(QEvent.Type(QEvent.User + 3))
+
+
+class Pinger(QState):
+ def __init__(self, parent):
+ super().__init__(parent)
+
+ def onEntry(self, e):
+ self.p = PingEvent()
+ self.machine().postEvent(self.p)
+ print('ping?')
+
+
+class PongTransition(QAbstractTransition):
+ def eventTest(self, e):
+ return e.type() == QEvent.User + 3
+
+ def onTransition(self, e):
+ self.p = PingEvent()
+ machine.postDelayedEvent(self.p, 500)
+ print('ping?')
+
+
+class PingTransition(QAbstractTransition):
+ def eventTest(self, e):
+ return e.type() == QEvent.User + 2
+
+ def onTransition(self, e):
+ self.p = PongEvent()
+ machine.postDelayedEvent(self.p, 500)
+ print('pong!')
+
+
+if __name__ == '__main__':
+ app = QCoreApplication(sys.argv)
+
+ machine = QStateMachine()
+ group = QState(QState.ParallelStates)
+ group.setObjectName('group')
+
+ pinger = Pinger(group)
+ pinger.setObjectName('pinger')
+ pinger.addTransition(PongTransition())
+
+ ponger = QState(group)
+ ponger.setObjectName('ponger')
+ ponger.addTransition(PingTransition())
+
+ machine.addState(group)
+ machine.setInitialState(group)
+ machine.start()
+
+ sys.exit(app.exec())
diff --git a/examples/statemachine/ping_pong/ping_pong.pyproject b/examples/statemachine/ping_pong/ping_pong.pyproject
new file mode 100644
index 000000000..7fb430352
--- /dev/null
+++ b/examples/statemachine/ping_pong/ping_pong.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["ping_pong.py"]
+}
diff --git a/examples/statemachine/rogue/rogue.py b/examples/statemachine/rogue/rogue.py
new file mode 100644
index 000000000..f0ce9c28c
--- /dev/null
+++ b/examples/statemachine/rogue/rogue.py
@@ -0,0 +1,179 @@
+# Copyright (C) 2010 velociraptor Genjix <aphidia@hotmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import (QEvent, QPoint, QRandomGenerator, QSize, Qt,
+ Property)
+from PySide6.QtGui import QFont, QFontMetrics, QFontDatabase, QPainter
+from PySide6.QtWidgets import QApplication, QMainWindow
+from PySide6.QtStateMachine import (QEventTransition, QFinalState,
+ QKeyEventTransition, QState, QStateMachine)
+
+
+class MovementTransition(QEventTransition):
+ def __init__(self, window):
+ super().__init__(window, QEvent.KeyPress)
+ self.window = window
+
+ def eventTest(self, event):
+ if (event.type() == QEvent.StateMachineWrapped
+ and event.event().type() == QEvent.KeyPress):
+ key = event.event().key()
+ return (key == Qt.Key_2 or key == Qt.Key_8
+ or key == Qt.Key_6 or key == Qt.Key_4)
+ return False
+
+ def onTransition(self, event):
+ key = event.event().key()
+ if key == Qt.Key_4:
+ self.window.move_player(self.window.left)
+ if key == Qt.Key_8:
+ self.window.move_player(self.window.Up)
+ if key == Qt.Key_6:
+ self.window.move_player(self.window.right)
+ if key == Qt.Key_2:
+ self.window.move_player(self.window.down)
+
+
+class Custom(QState):
+ def __init__(self, parent, mw):
+ super().__init__(parent)
+ self.mw = mw
+
+ def onEntry(self, e):
+ print(self.mw.status)
+
+
+class MainWindow(QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.pX = 5
+ self.pY = 5
+ self.width = 35
+ self.height = 20
+ self._status_str = ''
+
+ font = QFont()
+ if 'Monospace' in QFontDatabase.families():
+ font = QFont('Monospace', 12)
+ else:
+ for family in QFontDatabase.families():
+ if QFontDatabase.isFixedPitch(family):
+ font = QFont(family, 12)
+ self.setFont(font)
+
+ self.setup_map()
+ self.build_machine()
+ self.show()
+
+ def setup_map(self):
+ self.map = []
+ generator = QRandomGenerator().global_()
+ for x in range(self.width):
+ column = []
+ for y in range(self.height):
+ if (x == 0 or x == self.width - 1 or y == 0
+ or y == self.height - 1 or generator.bounded(0, 40) == 0):
+ column.append('#')
+ else:
+ column.append('.')
+ self.map.append(column)
+
+ def build_machine(self):
+ machine = QStateMachine(self)
+
+ input_state = Custom(machine, self)
+ # this line sets the status
+ self.status = 'hello!'
+ # however this line does not
+ input_state.assignProperty(self, 'status', 'Move the rogue with 2, 4, 6, and 8')
+
+ machine.setInitialState(input_state)
+ machine.start()
+
+ transition = MovementTransition(self)
+ input_state.addTransition(transition)
+
+ quit_state = QState(machine)
+ quit_state.assignProperty(self, 'status', 'Really quit(y/n)?')
+
+ yes_transition = QKeyEventTransition(self, QEvent.KeyPress, Qt.Key_Y)
+ self._final_state = QFinalState(machine)
+ yes_transition.setTargetState(self._final_state)
+ quit_state.addTransition(yes_transition)
+
+ no_transition = QKeyEventTransition(self, QEvent.KeyPress, Qt.Key_N)
+ no_transition.setTargetState(input_state)
+ quit_state.addTransition(no_transition)
+
+ quit_transition = QKeyEventTransition(self, QEvent.KeyPress, Qt.Key_Q)
+ quit_transition.setTargetState(quit_state)
+ input_state.addTransition(quit_transition)
+
+ machine.setInitialState(input_state)
+ machine.finished.connect(qApp.quit) # noqa: F821
+ machine.start()
+
+ def sizeHint(self):
+ metrics = QFontMetrics(self.font())
+ return QSize(metrics.horizontalAdvance('X') * self.width,
+ metrics.height() * (self.height + 1))
+
+ def paintEvent(self, event):
+ metrics = QFontMetrics(self.font())
+ with QPainter(self) as painter:
+ font_height = metrics.height()
+ font_width = metrics.horizontalAdvance('X')
+
+ painter.fillRect(self.rect(), Qt.black)
+ painter.setPen(Qt.white)
+
+ y_pos = font_height
+ painter.drawText(QPoint(0, y_pos), self.status)
+ for y in range(self.height):
+ y_pos += font_height
+ x_pos = 0
+ for x in range(self.width):
+ if y == self.pY and x == self.pX:
+ x_pos += font_width
+ continue
+ painter.drawText(QPoint(x_pos, y_pos), self.map[x][y])
+ x_pos += font_width
+ painter.drawText(QPoint(self.pX * font_width, (self.pY + 2) * font_height), '@')
+
+ def move_player(self, direction):
+ if direction == self.left:
+ if self.map[self.pX - 1][self.pY] != '#':
+ self.pX -= 1
+ elif direction == self.right:
+ if self.map[self.pX + 1][self.pY] != '#':
+ self.pX += 1
+ elif direction == self.Up:
+ if self.map[self.pX][self.pY - 1] != '#':
+ self.pY -= 1
+ elif direction == self.down:
+ if self.map[self.pX][self.pY + 1] != '#':
+ self.pY += 1
+ self.repaint()
+
+ def get_status(self):
+ return self._status_str
+
+ def set_status(self, status):
+ self._status_str = status
+ self.repaint()
+ status = Property(str, get_status, set_status)
+ Up = 0
+ down = 1
+ left = 2
+ right = 3
+ width = 35
+ height = 20
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ main_win = MainWindow()
+ sys.exit(app.exec())
diff --git a/examples/widgets/state-machine/rogue/rogue.pyproject b/examples/statemachine/rogue/rogue.pyproject
index b8baf9802..b8baf9802 100644
--- a/examples/widgets/state-machine/rogue/rogue.pyproject
+++ b/examples/statemachine/rogue/rogue.pyproject
diff --git a/examples/statemachine/trafficlight/doc/trafficlight.png b/examples/statemachine/trafficlight/doc/trafficlight.png
new file mode 100644
index 000000000..24d40beec
--- /dev/null
+++ b/examples/statemachine/trafficlight/doc/trafficlight.png
Binary files differ
diff --git a/examples/widgets/state-machine/trafficlight/doc/trafficlight.rst b/examples/statemachine/trafficlight/doc/trafficlight.rst
index 57d369465..57d369465 100644
--- a/examples/widgets/state-machine/trafficlight/doc/trafficlight.rst
+++ b/examples/statemachine/trafficlight/doc/trafficlight.rst
diff --git a/examples/statemachine/trafficlight/trafficlight.py b/examples/statemachine/trafficlight/trafficlight.py
new file mode 100644
index 000000000..1e58384f9
--- /dev/null
+++ b/examples/statemachine/trafficlight/trafficlight.py
@@ -0,0 +1,117 @@
+# Copyright (C) 2010 velociraptor Genjix <aphidia@hotmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QTimer, Qt, Property, Slot
+from PySide6.QtGui import QPainter, QPalette
+from PySide6.QtWidgets import QApplication, QVBoxLayout, QWidget
+from PySide6.QtStateMachine import QFinalState, QState, QStateMachine
+
+
+class LightWidget(QWidget):
+ def __init__(self, color):
+ super().__init__()
+ self.color = color
+ self._on_val = False
+
+ def is_on(self):
+ return self._on_val
+
+ def set_on(self, on):
+ if self._on_val == on:
+ return
+ self._on_val = on
+ self.update()
+
+ @Slot()
+ def turn_off(self):
+ self.set_on(False)
+
+ @Slot()
+ def turn_on(self):
+ self.set_on(True)
+
+ def paintEvent(self, e):
+ if not self._on_val:
+ return
+ with QPainter(self) as painter:
+ painter.setRenderHint(QPainter.Antialiasing)
+ painter.setBrush(self.color)
+ painter.drawEllipse(0, 0, self.width(), self.height())
+
+ on = Property(bool, is_on, set_on)
+
+
+class TrafficLightWidget(QWidget):
+ def __init__(self):
+ super().__init__()
+ vbox = QVBoxLayout(self)
+ self._red_light = LightWidget(Qt.red)
+ vbox.addWidget(self._red_light)
+ self._yellow_light = LightWidget(Qt.yellow)
+ vbox.addWidget(self._yellow_light)
+ self._green_light = LightWidget(Qt.green)
+ vbox.addWidget(self._green_light)
+ pal = QPalette()
+ pal.setColor(QPalette.Window, Qt.black)
+ self.setPalette(pal)
+ self.setAutoFillBackground(True)
+
+
+def create_light_state(light, duration, parent=None):
+ light_state = QState(parent)
+ timer = QTimer(light_state)
+ timer.setInterval(duration)
+ timer.setSingleShot(True)
+ timing = QState(light_state)
+ timing.entered.connect(light.turn_on)
+ timing.entered.connect(timer.start)
+ timing.exited.connect(light.turn_off)
+ done = QFinalState(light_state)
+ timing.addTransition(timer.timeout, done)
+ light_state.setInitialState(timing)
+ return light_state
+
+
+class TrafficLight(QWidget):
+ def __init__(self):
+ super().__init__()
+ vbox = QVBoxLayout(self)
+ widget = TrafficLightWidget()
+ vbox.addWidget(widget)
+ vbox.setContentsMargins(0, 0, 0, 0)
+
+ machine = QStateMachine(self)
+ red_going_yellow = create_light_state(widget._red_light, 1000)
+ red_going_yellow.setObjectName('redGoingYellow')
+ yellow_going_green = create_light_state(widget._red_light, 1000)
+ yellow_going_green.setObjectName('yellowGoingGreen')
+ red_going_yellow.addTransition(red_going_yellow.finished,
+ yellow_going_green)
+ green_going_yellow = create_light_state(widget._yellow_light, 3000)
+ green_going_yellow.setObjectName('greenGoingYellow')
+ yellow_going_green.addTransition(yellow_going_green.finished,
+ green_going_yellow)
+ yellow_going_red = create_light_state(widget._green_light, 1000)
+ yellow_going_red.setObjectName('yellowGoingRed')
+ green_going_yellow.addTransition(green_going_yellow.finished,
+ yellow_going_red)
+ yellow_going_red.addTransition(yellow_going_red.finished,
+ red_going_yellow)
+
+ machine.addState(red_going_yellow)
+ machine.addState(yellow_going_green)
+ machine.addState(green_going_yellow)
+ machine.addState(yellow_going_red)
+ machine.setInitialState(red_going_yellow)
+ machine.start()
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ widget = TrafficLight()
+ widget.resize(110, 300)
+ widget.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/state-machine/trafficlight/trafficlight.pyproject b/examples/statemachine/trafficlight/trafficlight.pyproject
index 912472693..912472693 100644
--- a/examples/widgets/state-machine/trafficlight/trafficlight.pyproject
+++ b/examples/statemachine/trafficlight/trafficlight.pyproject
diff --git a/examples/texttospeech/hello_speak/hello_speak.py b/examples/texttospeech/hello_speak/hello_speak.py
deleted file mode 100644
index 98be4f0c6..000000000
--- a/examples/texttospeech/hello_speak/hello_speak.py
+++ /dev/null
@@ -1,109 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2017 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 QTextToSpeech example"""
-
-import sys
-from PySide6.QtCore import Qt
-from PySide6.QtWidgets import (QApplication, QComboBox, QFormLayout,
- QHBoxLayout, QLineEdit, QMainWindow, QPushButton, QSlider, QWidget)
-
-from PySide6.QtTextToSpeech import QTextToSpeech
-
-
-class MainWindow(QMainWindow):
- def __init__(self):
- super().__init__()
-
- centralWidget = QWidget()
- self.setCentralWidget(centralWidget)
- layout = QFormLayout(centralWidget)
-
- textLayout = QHBoxLayout()
- self.text = QLineEdit('Hello, PySide6')
- self.text.setClearButtonEnabled(True)
- textLayout.addWidget(self.text)
- self.sayButton = QPushButton('Say')
- textLayout.addWidget(self.sayButton)
- self.text.returnPressed.connect(self.sayButton.animateClick)
- self.sayButton.clicked.connect(self.say)
- layout.addRow('Text:', textLayout)
-
- self.voiceCombo = QComboBox()
- layout.addRow('Voice:', self.voiceCombo)
-
- self.volumeSlider = QSlider(Qt.Horizontal)
- self.volumeSlider.setMinimum(0)
- self.volumeSlider.setMaximum(100)
- self.volumeSlider.setValue(100)
- layout.addRow('Volume:', self.volumeSlider)
-
- self.engine = None
- engineNames = QTextToSpeech.availableEngines()
- if len(engineNames) > 0:
- engineName = engineNames[0]
- self.engine = QTextToSpeech(engineName)
- self.engine.stateChanged.connect(self.stateChanged)
- self.setWindowTitle(f'QTextToSpeech Example ({engineName})')
- self.voices = []
- for voice in self.engine.availableVoices():
- self.voices.append(voice)
- self.voiceCombo.addItem(voice.name())
- else:
- self.setWindowTitle('QTextToSpeech Example (no engines available)')
- self.sayButton.setEnabled(False)
-
- def say(self):
- self.sayButton.setEnabled(False)
- self.engine.setVoice(self.voices[self.voiceCombo.currentIndex()])
- self.engine.setVolume(float(self.volumeSlider.value()) / 100)
- self.engine.say(self.text.text())
-
- def stateChanged(self, state):
- if (state == QTextToSpeech.State.Ready):
- self.sayButton.setEnabled(True)
-
-
-if __name__ == '__main__':
- app = QApplication(sys.argv)
- mainWin = MainWindow()
- mainWin.show()
- sys.exit(app.exec())
diff --git a/examples/texttospeech/hello_speak/hello_speak.pyproject b/examples/texttospeech/hello_speak/hello_speak.pyproject
deleted file mode 100644
index 15b9b8529..000000000
--- a/examples/texttospeech/hello_speak/hello_speak.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["hello_speak.py"]
-}
diff --git a/examples/uitools/uiloader/uiloader.py b/examples/uitools/uiloader/uiloader.py
index bb48d2aa1..265c93837 100644
--- a/examples/uitools/uiloader/uiloader.py
+++ b/examples/uitools/uiloader/uiloader.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""QUiLoader example, showing how to dynamically load a Qt Designer form
from a UI file."""
@@ -44,8 +7,8 @@
from argparse import ArgumentParser, RawTextHelpFormatter
import sys
-from PySide6.QtCore import Qt, QFile, QIODevice
-from PySide6.QtWidgets import QApplication, QWidget
+from PySide6.QtCore import QFile, QIODevice
+from PySide6.QtWidgets import QApplication
from PySide6.QtUiTools import QUiLoader
diff --git a/examples/utils/pyside_config.py b/examples/utils/pyside_config.py
index 02d4a5da2..d3067eec1 100644
--- a/examples/utils/pyside_config.py
+++ b/examples/utils/pyside_config.py
@@ -1,44 +1,7 @@
-#############################################################################
-##
-## Copyright (C) 2019 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from distutils import sysconfig
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sysconfig
from enum import Enum
import glob
import os
@@ -115,10 +78,12 @@ options.append(("--shiboken-module-shared-libraries-cmake",
options.append(("--pyside-shared-libraries-qmake",
lambda: get_shared_libraries_qmake(Package.PYSIDE_MODULE), pyside_libs_error,
- "Print paths of f{PYSIDE_MODULE} shared libraries (.so's, .dylib's, .dll's) for qmake"))
+ "Print paths of f{PYSIDE_MODULE} shared libraries (.so's, .dylib's, .dll's) "
+ "for qmake"))
options.append(("--pyside-shared-libraries-cmake",
lambda: get_shared_libraries_cmake(Package.PYSIDE_MODULE), pyside_libs_error,
- f"Print paths of {PYSIDE_MODULE} shared libraries (.so's, .dylib's, .dll's) for cmake"))
+ f"Print paths of {PYSIDE_MODULE} shared libraries (.so's, .dylib's, .dll's) "
+ "for cmake"))
options_usage = ''
for i, (flag, _, _, description) in enumerate(options):
@@ -190,11 +155,11 @@ def link_option(lib):
# libraries when compiling the project
baseName = os.path.basename(lib)
link = ' -l'
- if sys.platform in ['linux', 'linux2']: # Linux: 'libfoo.so' -> '/absolute/path/libfoo.so'
+ if sys.platform in ['linux', 'linux2']: # Linux: 'libfoo.so' -> '/absolute/path/libfoo.so'
link = lib
- elif sys.platform in ['darwin']: # Darwin: 'libfoo.so' -> '-lfoo'
+ elif sys.platform in ['darwin']: # Darwin: 'libfoo.so' -> '-lfoo'
link += os.path.splitext(baseName[3:])[0]
- else: # Windows: 'libfoo.dll' -> 'libfoo.dll'
+ else: # Windows: 'libfoo.dll' -> 'libfoo.dll'
link += os.path.splitext(baseName)[0]
return link
@@ -231,13 +196,13 @@ def find_package_path(dir_name):
return None
-# Return version as "3.6"
+# Return version as "x.y" (e.g. 3.9, 3.12, etc)
def python_version():
return str(sys.version_info[0]) + '.' + str(sys.version_info[1])
def get_python_include_path():
- return sysconfig.get_python_inc()
+ return sysconfig.get_path('include')
def python_link_flags_qmake():
@@ -249,7 +214,7 @@ def python_link_flags_qmake():
# e.g.: "Program Files" to "Progra~1"
for d in libdir.split("\\"):
if " " in d:
- libdir = libdir.replace(d, d.split(" ")[0][:-1]+"~1")
+ libdir = libdir.replace(d, d.split(" ")[0][:-1] + "~1")
lib_flags = flags['lib']
return f'-L{libdir} -l{lib_flags}'
elif sys.platform == 'darwin':
diff --git a/examples/webchannel/standalone/core.py b/examples/webchannel/standalone/core.py
index d9b4bd20b..2d0cb0286 100644
--- a/examples/webchannel/standalone/core.py
+++ b/examples/webchannel/standalone/core.py
@@ -1,43 +1,6 @@
-#############################################################################
-##
-## Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtCore import QObject, Signal, Slot
diff --git a/examples/webchannel/standalone/dialog.py b/examples/webchannel/standalone/dialog.py
index 6f7cc842e..7f2413e6c 100644
--- a/examples/webchannel/standalone/dialog.py
+++ b/examples/webchannel/standalone/dialog.py
@@ -1,43 +1,6 @@
-#############################################################################
-##
-## Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtCore import Signal, Slot
diff --git a/examples/webchannel/standalone/main.py b/examples/webchannel/standalone/main.py
index cd55a3814..8c04aa64f 100644
--- a/examples/webchannel/standalone/main.py
+++ b/examples/webchannel/standalone/main.py
@@ -1,43 +1,6 @@
-#############################################################################
-##
-## Copyright (C) 2016 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2016 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import os
diff --git a/examples/webchannel/standalone/ui_dialog.py b/examples/webchannel/standalone/ui_dialog.py
index 0cbcd96e2..36c2fe400 100644
--- a/examples/webchannel/standalone/ui_dialog.py
+++ b/examples/webchannel/standalone/ui_dialog.py
@@ -3,18 +3,20 @@
################################################################################
## Form generated from reading UI file 'dialog.ui'
##
-## Created by: Qt User Interface Compiler version 5.14.1
+## Created by: Qt User Interface Compiler version 6.7.0
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
-from PySide6.QtCore import (QCoreApplication, QMetaObject, QObject, QPoint,
- QRect, QSize, QUrl, Qt)
-from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont,
- QFontDatabase, QIcon, QLinearGradient, QPalette, QPainter, QPixmap,
- QRadialGradient)
-from PySide6.QtWidgets import *
-
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QDialog, QGridLayout, QLineEdit,
+ QPlainTextEdit, QPushButton, QSizePolicy, QWidget)
class Ui_Dialog(object):
def setupUi(self, Dialog):
@@ -41,6 +43,7 @@ class Ui_Dialog(object):
self.gridLayout.addWidget(self.output, 0, 0, 1, 2)
+
self.retranslateUi(Dialog)
QMetaObject.connectSlotsByName(Dialog)
diff --git a/examples/webchannel/standalone/websocketclientwrapper.py b/examples/webchannel/standalone/websocketclientwrapper.py
index f8a196b49..00b410891 100644
--- a/examples/webchannel/standalone/websocketclientwrapper.py
+++ b/examples/webchannel/standalone/websocketclientwrapper.py
@@ -1,43 +1,6 @@
-#############################################################################
-##
-## Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtCore import QObject, Signal, Slot
diff --git a/examples/webchannel/standalone/websockettransport.py b/examples/webchannel/standalone/websockettransport.py
index e006ba1ca..ab60e8448 100644
--- a/examples/webchannel/standalone/websockettransport.py
+++ b/examples/webchannel/standalone/websockettransport.py
@@ -1,43 +1,6 @@
-#############################################################################
-##
-## Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtWebChannel import QWebChannelAbstractTransport
from PySide6.QtCore import QByteArray, QJsonDocument, Slot
diff --git a/examples/webenginequick/nanobrowser/ApplicationRoot.qml b/examples/webenginequick/nanobrowser/ApplicationRoot.qml
new file mode 100644
index 000000000..55c414409
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/ApplicationRoot.qml
@@ -0,0 +1,40 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtWebEngine
+
+QtObject {
+ id: root
+
+ property QtObject defaultProfile: WebEngineProfile {
+ storageName: "Profile"
+ offTheRecord: false
+ }
+
+ property QtObject otrProfile: WebEngineProfile {
+ offTheRecord: true
+ }
+
+ property Component browserWindowComponent: BrowserWindow {
+ applicationRoot: root
+ }
+ property Component browserDialogComponent: BrowserDialog {
+ onClosing: destroy()
+ }
+ function createWindow(profile) {
+ var newWindow = browserWindowComponent.createObject(root);
+ newWindow.currentWebView.profile = profile;
+ profile.downloadRequested.connect(newWindow.onDownloadRequested);
+ return newWindow;
+ }
+ function createDialog(profile) {
+ var newDialog = browserDialogComponent.createObject(root);
+ newDialog.currentWebView.profile = profile;
+ return newDialog;
+ }
+ function load(url) {
+ var browserWindow = createWindow(defaultProfile);
+ browserWindow.currentWebView.url = url;
+ }
+}
diff --git a/examples/webenginequick/nanobrowser/BrowserDialog.qml b/examples/webenginequick/nanobrowser/BrowserDialog.qml
new file mode 100644
index 000000000..7af347ec3
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/BrowserDialog.qml
@@ -0,0 +1,27 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Window
+import QtWebEngine
+
+Window {
+ id: window
+ property alias currentWebView: webView
+ flags: Qt.Dialog
+ width: 800
+ height: 600
+ visible: true
+ onClosing: destroy()
+ WebEngineView {
+ id: webView
+ anchors.fill: parent
+
+ onGeometryChangeRequested: function(geometry) {
+ window.x = geometry.x
+ window.y = geometry.y
+ window.width = geometry.width
+ window.height = geometry.height
+ }
+ }
+}
diff --git a/examples/webenginequick/nanobrowser/BrowserWindow.qml b/examples/webenginequick/nanobrowser/BrowserWindow.qml
new file mode 100644
index 000000000..a517c5a51
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/BrowserWindow.qml
@@ -0,0 +1,817 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtCore
+import QtQml
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import QtQuick.Window
+import QtWebEngine
+import BrowserUtils
+
+ApplicationWindow {
+ id: browserWindow
+ property QtObject applicationRoot
+ property Item currentWebView: tabBar.currentIndex < tabBar.count ? tabLayout.children[tabBar.currentIndex] : null
+ property int previousVisibility: Window.Windowed
+ property int createdTabs: 0
+
+ width: 1300
+ height: 900
+ visible: true
+ title: currentWebView && currentWebView.title
+
+ // Make sure the Qt.WindowFullscreenButtonHint is set on OS X.
+ Component.onCompleted: flags = flags | Qt.WindowFullscreenButtonHint
+
+ onCurrentWebViewChanged: {
+ findBar.reset();
+ }
+
+ // When using style "mac", ToolButtons are not supposed to accept focus.
+ property bool platformIsMac: Qt.platform.os == "osx"
+
+ Settings {
+ id : appSettings
+ property alias autoLoadImages: loadImages.checked
+ property alias javaScriptEnabled: javaScriptEnabled.checked
+ property alias errorPageEnabled: errorPageEnabled.checked
+ property alias pluginsEnabled: pluginsEnabled.checked
+ property alias fullScreenSupportEnabled: fullScreenSupportEnabled.checked
+ property alias autoLoadIconsForPage: autoLoadIconsForPage.checked
+ property alias touchIconsEnabled: touchIconsEnabled.checked
+ property alias webRTCPublicInterfacesOnly : webRTCPublicInterfacesOnly.checked
+ property alias devToolsEnabled: devToolsEnabled.checked
+ property alias pdfViewerEnabled: pdfViewerEnabled.checked
+ }
+
+ Action {
+ shortcut: "Ctrl+D"
+ onTriggered: {
+ downloadView.visible = !downloadView.visible;
+ }
+ }
+ Action {
+ id: focus
+ shortcut: "Ctrl+L"
+ onTriggered: {
+ addressBar.forceActiveFocus();
+ addressBar.selectAll();
+ }
+ }
+ Action {
+ shortcut: StandardKey.Refresh
+ onTriggered: {
+ if (currentWebView)
+ currentWebView.reload();
+ }
+ }
+ Action {
+ shortcut: StandardKey.AddTab
+ onTriggered: {
+ tabBar.createTab(tabBar.count != 0 ? currentWebView.profile : defaultProfile);
+ addressBar.forceActiveFocus();
+ addressBar.selectAll();
+ }
+ }
+ Action {
+ shortcut: StandardKey.Close
+ onTriggered: {
+ currentWebView.triggerWebAction(WebEngineView.RequestClose);
+ }
+ }
+ Action {
+ shortcut: StandardKey.Quit
+ onTriggered: browserWindow.close()
+ }
+ Action {
+ shortcut: "Escape"
+ onTriggered: {
+ if (currentWebView.state == "FullScreen") {
+ browserWindow.visibility = browserWindow.previousVisibility;
+ fullScreenNotification.hide();
+ currentWebView.triggerWebAction(WebEngineView.ExitFullScreen);
+ }
+
+ if (findBar.visible)
+ findBar.visible = false;
+ }
+ }
+ Action {
+ shortcut: "Ctrl+0"
+ onTriggered: currentWebView.zoomFactor = 1.0
+ }
+ Action {
+ shortcut: StandardKey.ZoomOut
+ onTriggered: currentWebView.zoomFactor -= 0.1
+ }
+ Action {
+ shortcut: StandardKey.ZoomIn
+ onTriggered: currentWebView.zoomFactor += 0.1
+ }
+
+ Action {
+ shortcut: StandardKey.Copy
+ onTriggered: currentWebView.triggerWebAction(WebEngineView.Copy)
+ }
+ Action {
+ shortcut: StandardKey.Cut
+ onTriggered: currentWebView.triggerWebAction(WebEngineView.Cut)
+ }
+ Action {
+ shortcut: StandardKey.Paste
+ onTriggered: currentWebView.triggerWebAction(WebEngineView.Paste)
+ }
+ Action {
+ shortcut: "Shift+"+StandardKey.Paste
+ onTriggered: currentWebView.triggerWebAction(WebEngineView.PasteAndMatchStyle)
+ }
+ Action {
+ shortcut: StandardKey.SelectAll
+ onTriggered: currentWebView.triggerWebAction(WebEngineView.SelectAll)
+ }
+ Action {
+ shortcut: StandardKey.Undo
+ onTriggered: currentWebView.triggerWebAction(WebEngineView.Undo)
+ }
+ Action {
+ shortcut: StandardKey.Redo
+ onTriggered: currentWebView.triggerWebAction(WebEngineView.Redo)
+ }
+ Action {
+ shortcut: StandardKey.Back
+ onTriggered: currentWebView.triggerWebAction(WebEngineView.Back)
+ }
+ Action {
+ shortcut: StandardKey.Forward
+ onTriggered: currentWebView.triggerWebAction(WebEngineView.Forward)
+ }
+ Action {
+ shortcut: StandardKey.Find
+ onTriggered: {
+ if (!findBar.visible)
+ findBar.visible = true;
+ }
+ }
+ Action {
+ shortcut: StandardKey.FindNext
+ onTriggered: findBar.findNext()
+ }
+ Action {
+ shortcut: StandardKey.FindPrevious
+ onTriggered: findBar.findPrevious()
+ }
+
+ menuBar: ToolBar {
+ id: navigationBar
+ RowLayout {
+ anchors.fill: parent
+ ToolButton {
+ enabled: currentWebView && (currentWebView.canGoBack || currentWebView.canGoForward)
+ onClicked: historyMenu.open()
+ text: qsTr("▼")
+ Menu {
+ id: historyMenu
+ Instantiator {
+ model: currentWebView && currentWebView.history.items
+ MenuItem {
+ text: model.title
+ onTriggered: currentWebView.goBackOrForward(model.offset)
+ checkable: !enabled
+ checked: !enabled
+ enabled: model.offset
+ }
+
+ onObjectAdded: function(index, object) {
+ historyMenu.insertItem(index, object)
+ }
+ onObjectRemoved: function(index, object) {
+ historyMenu.removeItem(object)
+ }
+ }
+ }
+ }
+
+ ToolButton {
+ id: backButton
+ icon.source: "qrc:/icons/go-previous.png"
+ onClicked: currentWebView.goBack()
+ enabled: currentWebView && currentWebView.canGoBack
+ activeFocusOnTab: !browserWindow.platformIsMac
+ }
+ ToolButton {
+ id: forwardButton
+ icon.source: "qrc:/icons/go-next.png"
+ onClicked: currentWebView.goForward()
+ enabled: currentWebView && currentWebView.canGoForward
+ activeFocusOnTab: !browserWindow.platformIsMac
+ }
+ ToolButton {
+ id: reloadButton
+ icon.source: currentWebView && currentWebView.loading ? "qrc:/icons/process-stop.png" : "qrc:/icons/view-refresh.png"
+ onClicked: currentWebView && currentWebView.loading ? currentWebView.stop() : currentWebView.reload()
+ activeFocusOnTab: !browserWindow.platformIsMac
+ }
+ TextField {
+ id: addressBar
+ Image {
+ anchors.verticalCenter: addressBar.verticalCenter;
+ x: 5
+ z: 2
+ id: faviconImage
+ width: 16; height: 16
+ sourceSize: Qt.size(width, height)
+ source: currentWebView && currentWebView.icon ? currentWebView.icon : ''
+ }
+ MouseArea {
+ id: textFieldMouseArea
+ acceptedButtons: Qt.RightButton
+ anchors.fill: parent
+ onClicked: {
+ var textSelectionStartPos = addressBar.selectionStart;
+ var textSelectionEndPos = addressBar.selectionEnd;
+ textFieldContextMenu.open();
+ addressBar.select(textSelectionStartPos, textSelectionEndPos);
+ }
+ Menu {
+ id: textFieldContextMenu
+ x: textFieldMouseArea.mouseX
+ y: textFieldMouseArea.mouseY
+ MenuItem {
+ text: qsTr("Cut")
+ onTriggered: addressBar.cut()
+ enabled: addressBar.selectedText.length > 0
+ }
+ MenuItem {
+ text: qsTr("Copy")
+ onTriggered: addressBar.copy()
+ enabled: addressBar.selectedText.length > 0
+ }
+ MenuItem {
+ text: qsTr("Paste")
+ onTriggered: addressBar.paste()
+ enabled: addressBar.canPaste
+ }
+ MenuItem {
+ text: qsTr("Delete")
+ onTriggered: addressBar.text = qsTr("")
+ enabled: addressBar.selectedText.length > 0
+ }
+ MenuSeparator {}
+ MenuItem {
+ text: qsTr("Select All")
+ onTriggered: addressBar.selectAll()
+ enabled: addressBar.text.length > 0
+ }
+ }
+ }
+ leftPadding: 26
+ focus: true
+ Layout.fillWidth: true
+ Binding on text {
+ when: currentWebView
+ value: currentWebView.url
+ }
+ onAccepted: currentWebView.url = Utils.fromUserInput(text)
+ selectByMouse: true
+ }
+ ToolButton {
+ id: settingsMenuButton
+ text: qsTr("⋮")
+ onClicked: settingsMenu.open()
+ Menu {
+ id: settingsMenu
+ y: settingsMenuButton.height
+ MenuItem {
+ id: loadImages
+ text: "Autoload images"
+ checkable: true
+ checked: WebEngine.settings.autoLoadImages
+ }
+ MenuItem {
+ id: javaScriptEnabled
+ text: "JavaScript On"
+ checkable: true
+ checked: WebEngine.settings.javascriptEnabled
+ }
+ MenuItem {
+ id: errorPageEnabled
+ text: "ErrorPage On"
+ checkable: true
+ checked: WebEngine.settings.errorPageEnabled
+ }
+ MenuItem {
+ id: pluginsEnabled
+ text: "Plugins On"
+ checkable: true
+ checked: true
+ }
+ MenuItem {
+ id: fullScreenSupportEnabled
+ text: "FullScreen On"
+ checkable: true
+ checked: WebEngine.settings.fullScreenSupportEnabled
+ }
+ MenuItem {
+ id: offTheRecordEnabled
+ text: "Off The Record"
+ checkable: true
+ checked: currentWebView && currentWebView.profile === otrProfile
+ onToggled: function(checked) {
+ if (currentWebView) {
+ currentWebView.profile = checked ? otrProfile : defaultProfile;
+ }
+ }
+ }
+ MenuItem {
+ id: httpDiskCacheEnabled
+ text: "HTTP Disk Cache"
+ checkable: currentWebView && !currentWebView.profile.offTheRecord
+ checked: currentWebView && (currentWebView.profile.httpCacheType === WebEngineProfile.DiskHttpCache)
+ onToggled: function(checked) {
+ if (currentWebView) {
+ currentWebView.profile.httpCacheType = checked ? WebEngineProfile.DiskHttpCache : WebEngineProfile.MemoryHttpCache;
+ }
+ }
+ }
+ MenuItem {
+ id: autoLoadIconsForPage
+ text: "Icons On"
+ checkable: true
+ checked: WebEngine.settings.autoLoadIconsForPage
+ }
+ MenuItem {
+ id: touchIconsEnabled
+ text: "Touch Icons On"
+ checkable: true
+ checked: WebEngine.settings.touchIconsEnabled
+ enabled: autoLoadIconsForPage.checked
+ }
+ MenuItem {
+ id: webRTCPublicInterfacesOnly
+ text: "WebRTC Public Interfaces Only"
+ checkable: true
+ checked: WebEngine.settings.webRTCPublicInterfacesOnly
+ }
+ MenuItem {
+ id: devToolsEnabled
+ text: "Open DevTools"
+ checkable: true
+ checked: false
+ }
+ MenuItem {
+ id: pdfViewerEnabled
+ text: "PDF viewer enabled"
+ checkable: true
+ checked: WebEngine.settings.pdfViewerEnabled
+ }
+ }
+ }
+ }
+ ProgressBar {
+ id: progressBar
+ height: 3
+ anchors {
+ left: parent.left
+ top: parent.bottom
+ right: parent.right
+ leftMargin: parent.leftMargin
+ rightMargin: parent.rightMargin
+ }
+ background: Item {}
+ z: -2
+ from: 0
+ to: 100
+ value: (currentWebView && currentWebView.loadProgress < 100) ? currentWebView.loadProgress : 0
+ }
+ }
+
+ StackLayout {
+ id: tabLayout
+ currentIndex: tabBar.currentIndex
+
+ anchors.top: tabBar.bottom
+ anchors.bottom: devToolsView.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ }
+
+ Component {
+ id: tabButtonComponent
+
+ TabButton {
+ property color frameColor: "#999"
+ property color fillColor: "#eee"
+ property color nonSelectedColor: "#ddd"
+ property string tabTitle: "New Tab"
+
+ id: tabButton
+ contentItem: Rectangle {
+ id: tabRectangle
+ color: tabButton.down ? fillColor : nonSelectedColor
+ border.width: 1
+ border.color: frameColor
+ implicitWidth: Math.max(text.width + 30, 80)
+ implicitHeight: Math.max(text.height + 10, 20)
+ Rectangle { height: 1 ; width: parent.width ; color: frameColor}
+ Rectangle { height: parent.height ; width: 1; color: frameColor}
+ Rectangle { x: parent.width - 2; height: parent.height ; width: 1; color: frameColor}
+ Text {
+ id: text
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.leftMargin: 6
+ text: tabButton.tabTitle
+ elide: Text.ElideRight
+ color: tabButton.down ? "black" : frameColor
+ width: parent.width - button.background.width
+ }
+ Button {
+ id: button
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.rightMargin: 4
+ height: 12
+ background: Rectangle {
+ implicitWidth: 12
+ implicitHeight: 12
+ color: button.hovered ? "#ccc" : tabRectangle.color
+ Text {text: "x"; anchors.centerIn: parent; color: "gray"}
+ }
+ onClicked: tabButton.closeTab()
+ }
+ }
+
+ onClicked: addressBar.text = tabLayout.itemAt(TabBar.index).url;
+ function closeTab() {
+ tabBar.removeView(TabBar.index);
+ }
+ }
+ }
+
+ TabBar {
+ id: tabBar
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ Component.onCompleted: createTab(defaultProfile)
+
+ function createTab(profile, focusOnNewTab = true, url = undefined) {
+ var webview = tabComponent.createObject(tabLayout, {profile: profile});
+ var newTabButton = tabButtonComponent.createObject(tabBar, {tabTitle: Qt.binding(function () { return webview.title; })});
+ tabBar.addItem(newTabButton);
+ if (focusOnNewTab) {
+ tabBar.setCurrentIndex(tabBar.count - 1);
+ }
+ if (url !== undefined) {
+ webview.url = url;
+ }
+ return webview;
+ }
+
+ function removeView(index) {
+ tabBar.removeItem(index);
+ if (tabBar.count > 1) {
+ tabBar.removeItem(tabBar.itemAt(index));
+ tabLayout.children[index].destroy();
+ } else {
+ browserWindow.close();
+ }
+ }
+
+ Component {
+ id: tabComponent
+ WebEngineView {
+ id: webEngineView
+ focus: true
+
+ onLinkHovered: function(hoveredUrl) {
+ if (hoveredUrl == "")
+ hideStatusText.start();
+ else {
+ statusText.text = hoveredUrl;
+ statusBubble.visible = true;
+ hideStatusText.stop();
+ }
+ }
+
+ states: [
+ State {
+ name: "FullScreen"
+ PropertyChanges {
+ target: tabBar
+ visible: false
+ height: 0
+ }
+ PropertyChanges {
+ target: navigationBar
+ visible: false
+ }
+ }
+ ]
+ settings.localContentCanAccessRemoteUrls: true
+ settings.localContentCanAccessFileUrls: false
+ settings.autoLoadImages: appSettings.autoLoadImages
+ settings.javascriptEnabled: appSettings.javaScriptEnabled
+ settings.errorPageEnabled: appSettings.errorPageEnabled
+ settings.pluginsEnabled: appSettings.pluginsEnabled
+ settings.fullScreenSupportEnabled: appSettings.fullScreenSupportEnabled
+ settings.autoLoadIconsForPage: appSettings.autoLoadIconsForPage
+ settings.touchIconsEnabled: appSettings.touchIconsEnabled
+ settings.webRTCPublicInterfacesOnly: appSettings.webRTCPublicInterfacesOnly
+ settings.pdfViewerEnabled: appSettings.pdfViewerEnabled
+
+ onCertificateError: function(error) {
+ error.defer();
+ sslDialog.enqueue(error);
+ }
+
+ onNewWindowRequested: function(request) {
+ if (!request.userInitiated)
+ console.warn("Blocked a popup window.");
+ else if (request.destination === WebEngineNewWindowRequest.InNewTab) {
+ var tab = tabBar.createTab(currentWebView.profile, true, request.requestedUrl);
+ tab.acceptAsNewWindow(request);
+ } else if (request.destination === WebEngineNewWindowRequest.InNewBackgroundTab) {
+ var backgroundTab = tabBar.createTab(currentWebView.profile, false);
+ backgroundTab.acceptAsNewWindow(request);
+ } else if (request.destination === WebEngineNewWindowRequest.InNewDialog) {
+ var dialog = applicationRoot.createDialog(currentWebView.profile);
+ dialog.currentWebView.acceptAsNewWindow(request);
+ } else {
+ var window = applicationRoot.createWindow(currentWebView.profile);
+ window.currentWebView.acceptAsNewWindow(request);
+ }
+ }
+
+ onFullScreenRequested: function(request) {
+ if (request.toggleOn) {
+ webEngineView.state = "FullScreen";
+ browserWindow.previousVisibility = browserWindow.visibility;
+ browserWindow.showFullScreen();
+ fullScreenNotification.show();
+ } else {
+ webEngineView.state = "";
+ browserWindow.visibility = browserWindow.previousVisibility;
+ fullScreenNotification.hide();
+ }
+ request.accept();
+ }
+
+ onRegisterProtocolHandlerRequested: function(request) {
+ console.log("accepting registerProtocolHandler request for "
+ + request.scheme + " from " + request.origin);
+ request.accept();
+ }
+
+ onRenderProcessTerminated: function(terminationStatus, exitCode) {
+ var status = "";
+ switch (terminationStatus) {
+ case WebEngineView.NormalTerminationStatus:
+ status = "(normal exit)";
+ break;
+ case WebEngineView.AbnormalTerminationStatus:
+ status = "(abnormal exit)";
+ break;
+ case WebEngineView.CrashedTerminationStatus:
+ status = "(crashed)";
+ break;
+ case WebEngineView.KilledTerminationStatus:
+ status = "(killed)";
+ break;
+ }
+
+ print("Render process exited with code " + exitCode + " " + status);
+ reloadTimer.running = true;
+ }
+
+ onSelectClientCertificate: function(selection) {
+ selection.certificates[0].select();
+ }
+
+ onFindTextFinished: function(result) {
+ if (!findBar.visible)
+ findBar.visible = true;
+
+ findBar.numberOfMatches = result.numberOfMatches;
+ findBar.activeMatch = result.activeMatch;
+ }
+
+ onLoadingChanged: function(loadRequest) {
+ if (loadRequest.status == WebEngineView.LoadStartedStatus)
+ findBar.reset();
+ }
+
+ onFeaturePermissionRequested: function(securityOrigin, feature) {
+ featurePermissionDialog.securityOrigin = securityOrigin;
+ featurePermissionDialog.feature = feature;
+ featurePermissionDialog.visible = true;
+ }
+
+ Timer {
+ id: reloadTimer
+ interval: 0
+ running: false
+ repeat: false
+ onTriggered: currentWebView.reload()
+ }
+ }
+ }
+ }
+ WebEngineView {
+ id: devToolsView
+ visible: devToolsEnabled.checked
+ height: visible ? 400 : 0
+ inspectedView: visible && tabBar.currentIndex < tabBar.count ? tabLayout.children[tabBar.currentIndex] : null
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ onNewWindowRequested: function(request) {
+ var tab = tabBar.createTab(currentWebView.profile);
+ request.openIn(tab);
+ }
+
+ Timer {
+ id: hideTimer
+ interval: 0
+ running: false
+ repeat: false
+ onTriggered: devToolsEnabled.checked = false
+ }
+ onWindowCloseRequested: function(request) {
+ // Delay hiding for keep the inspectedView set to receive the ACK message of close.
+ hideTimer.running = true;
+ }
+ }
+ Dialog {
+ id: sslDialog
+ anchors.centerIn: parent
+ contentWidth: Math.max(mainTextForSSLDialog.width, detailedTextForSSLDialog.width)
+ contentHeight: mainTextForSSLDialog.height + detailedTextForSSLDialog.height
+ property var certErrors: []
+ // fixme: icon!
+ // icon: StandardIcon.Warning
+ standardButtons: Dialog.No | Dialog.Yes
+ title: "Server's certificate not trusted"
+ contentItem: Item {
+ Label {
+ id: mainTextForSSLDialog
+ text: "Do you wish to continue?"
+ }
+ Text {
+ id: detailedTextForSSLDialog
+ anchors.top: mainTextForSSLDialog.bottom
+ text: "If you wish so, you may continue with an unverified certificate.\n" +
+ "Accepting an unverified certificate means\n" +
+ "you may not be connected with the host you tried to connect to.\n" +
+ "Do you wish to override the security check and continue?"
+ }
+ }
+
+ onAccepted: {
+ certErrors.shift().acceptCertificate();
+ presentError();
+ }
+ onRejected: reject()
+
+ function reject(){
+ certErrors.shift().rejectCertificate();
+ presentError();
+ }
+ function enqueue(error){
+ certErrors.push(error);
+ presentError();
+ }
+ function presentError(){
+ visible = certErrors.length > 0
+ }
+ }
+ Dialog {
+ id: featurePermissionDialog
+ anchors.centerIn: parent
+ width: Math.min(browserWindow.width, browserWindow.height) / 3 * 2
+ contentWidth: mainTextForPermissionDialog.width
+ contentHeight: mainTextForPermissionDialog.height
+ standardButtons: Dialog.No | Dialog.Yes
+ title: "Permission Request"
+
+ property var feature;
+ property url securityOrigin;
+
+ contentItem: Item {
+ Label {
+ id: mainTextForPermissionDialog
+ text: featurePermissionDialog.questionForFeature()
+ }
+ }
+
+ onAccepted: currentWebView && currentWebView.grantFeaturePermission(securityOrigin, feature, true)
+ onRejected: currentWebView && currentWebView.grantFeaturePermission(securityOrigin, feature, false)
+ onVisibleChanged: {
+ if (visible)
+ width = contentWidth + 20;
+ }
+
+ function questionForFeature() {
+ var question = "Allow " + securityOrigin + " to "
+
+ switch (feature) {
+ case WebEngineView.Geolocation:
+ question += "access your location information?";
+ break;
+ case WebEngineView.MediaAudioCapture:
+ question += "access your microphone?";
+ break;
+ case WebEngineView.MediaVideoCapture:
+ question += "access your webcam?";
+ break;
+ case WebEngineView.MediaVideoCapture:
+ question += "access your microphone and webcam?";
+ break;
+ case WebEngineView.MouseLock:
+ question += "lock your mouse cursor?";
+ break;
+ case WebEngineView.DesktopVideoCapture:
+ question += "capture video of your desktop?";
+ break;
+ case WebEngineView.DesktopAudioVideoCapture:
+ question += "capture audio and video of your desktop?";
+ break;
+ case WebEngineView.Notifications:
+ question += "show notification on your desktop?";
+ break;
+ default:
+ question += "access unknown or unsupported feature [" + feature + "] ?";
+ break;
+ }
+
+ return question;
+ }
+ }
+
+ FullScreenNotification {
+ id: fullScreenNotification
+ }
+
+ DownloadView {
+ id: downloadView
+ visible: false
+ anchors.fill: parent
+ }
+
+ function onDownloadRequested(download) {
+ downloadView.visible = true;
+ downloadView.append(download);
+ download.accept();
+ }
+
+ FindBar {
+ id: findBar
+ visible: false
+ anchors.right: parent.right
+ anchors.rightMargin: 10
+ anchors.top: parent.top
+
+ onFindNext: {
+ if (text)
+ currentWebView && currentWebView.findText(text);
+ else if (!visible)
+ visible = true;
+ }
+ onFindPrevious: {
+ if (text)
+ currentWebView && currentWebView.findText(text, WebEngineView.FindBackward);
+ else if (!visible)
+ visible = true;
+ }
+ }
+
+
+ Rectangle {
+ id: statusBubble
+ color: "oldlace"
+ property int padding: 8
+ visible: false
+
+ anchors.left: parent.left
+ anchors.bottom: parent.bottom
+ width: statusText.paintedWidth + padding
+ height: statusText.paintedHeight + padding
+
+ Text {
+ id: statusText
+ anchors.centerIn: statusBubble
+ elide: Qt.ElideMiddle
+
+ Timer {
+ id: hideStatusText
+ interval: 750
+ onTriggered: {
+ statusText.text = "";
+ statusBubble.visible = false;
+ }
+ }
+ }
+ }
+}
diff --git a/examples/webenginequick/nanobrowser/DownloadView.qml b/examples/webenginequick/nanobrowser/DownloadView.qml
new file mode 100644
index 000000000..e16647cdb
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/DownloadView.qml
@@ -0,0 +1,127 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtWebEngine
+import QtQuick.Layouts
+
+Rectangle {
+ id: downloadView
+ color: "lightgray"
+
+ ListModel {
+ id: downloadModel
+ property var downloads: []
+ }
+
+ function append(download) {
+ downloadModel.append(download);
+ downloadModel.downloads.push(download);
+ }
+
+ Component {
+ id: downloadItemDelegate
+
+ Rectangle {
+ width: listView.width
+ height: childrenRect.height
+ anchors.margins: 10
+ radius: 3
+ color: "transparent"
+ border.color: "black"
+ Rectangle {
+ id: progressBar
+
+ property real progress: downloadModel.downloads[index]
+ ? downloadModel.downloads[index].receivedBytes / downloadModel.downloads[index].totalBytes : 0
+
+ radius: 3
+ color: width == listView.width ? "green" : "#2b74c7"
+ width: listView.width * progress
+ height: cancelButton.height
+
+ Behavior on width {
+ SmoothedAnimation { duration: 100 }
+ }
+ }
+ Rectangle {
+ anchors {
+ left: parent.left
+ right: parent.right
+ leftMargin: 20
+ }
+ Label {
+ id: label
+ text: downloadModel.downloads[index] ? downloadModel.downloads[index].downloadDirectory + "/" + downloadModel.downloads[index].downloadFileName : qsTr("")
+ anchors {
+ verticalCenter: cancelButton.verticalCenter
+ left: parent.left
+ right: cancelButton.left
+ }
+ }
+ Button {
+ id: cancelButton
+ anchors.right: parent.right
+ icon.source: "qrc:/icons/process-stop.png"
+ onClicked: {
+ var download = downloadModel.downloads[index];
+
+ download.cancel();
+
+ downloadModel.downloads = downloadModel.downloads.filter(function (el) {
+ return el.id !== download.id;
+ });
+ downloadModel.remove(index);
+ }
+ }
+ }
+ }
+
+ }
+ ListView {
+ id: listView
+ anchors {
+ topMargin: 10
+ top: parent.top
+ bottom: parent.bottom
+ horizontalCenter: parent.horizontalCenter
+ }
+ width: parent.width - 20
+ spacing: 5
+
+ model: downloadModel
+ delegate: downloadItemDelegate
+
+ Text {
+ visible: !listView.count
+ horizontalAlignment: Text.AlignHCenter
+ height: 30
+ anchors {
+ top: parent.top
+ left: parent.left
+ right: parent.right
+ }
+ font.pixelSize: 20
+ text: "No active downloads."
+ }
+
+ Rectangle {
+ color: "gray"
+ anchors {
+ bottom: parent.bottom
+ left: parent.left
+ right: parent.right
+ }
+ height: 30
+ Button {
+ id: okButton
+ text: "OK"
+ anchors.centerIn: parent
+ onClicked: {
+ downloadView.visible = false;
+ }
+ }
+ }
+ }
+}
diff --git a/examples/webenginequick/nanobrowser/FindBar.qml b/examples/webenginequick/nanobrowser/FindBar.qml
new file mode 100644
index 000000000..4d130a22b
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/FindBar.qml
@@ -0,0 +1,95 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+Rectangle {
+ id: root
+
+ property int numberOfMatches: 0
+ property int activeMatch: 0
+ property alias text: findTextField.text
+
+ function reset() {
+ numberOfMatches = 0;
+ activeMatch = 0;
+ visible = false;
+ }
+
+ signal findNext()
+ signal findPrevious()
+
+ width: 250
+ height: 35
+ radius: 2
+
+ border.width: 1
+ border.color: "black"
+ color: "white"
+
+ onVisibleChanged: {
+ if (visible)
+ findTextField.forceActiveFocus();
+ }
+
+
+ RowLayout {
+ anchors.fill: parent
+ anchors.topMargin: 5
+ anchors.bottomMargin: 5
+ anchors.leftMargin: 10
+ anchors.rightMargin: 10
+
+ spacing: 5
+
+ Rectangle {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ TextField {
+ id: findTextField
+ anchors.fill: parent
+ background: Rectangle {
+ color: "transparent"
+ }
+
+ onAccepted: root.findNext()
+ onTextChanged: root.findNext()
+ onActiveFocusChanged: activeFocus ? selectAll() : deselect()
+ }
+ }
+
+ Label {
+ text: activeMatch + "/" + numberOfMatches
+ visible: findTextField.text != ""
+ }
+
+ Rectangle {
+ border.width: 1
+ border.color: "#ddd"
+ width: 2
+ height: parent.height
+ anchors.topMargin: 5
+ anchors.bottomMargin: 5
+ }
+
+ ToolButton {
+ text: "<"
+ enabled: numberOfMatches > 0
+ onClicked: root.findPrevious()
+ }
+
+ ToolButton {
+ text: ">"
+ enabled: numberOfMatches > 0
+ onClicked: root.findNext()
+ }
+
+ ToolButton {
+ text: "x"
+ onClicked: root.visible = false
+ }
+ }
+}
diff --git a/examples/webenginequick/nanobrowser/FullScreenNotification.qml b/examples/webenginequick/nanobrowser/FullScreenNotification.qml
new file mode 100644
index 000000000..779406432
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/FullScreenNotification.qml
@@ -0,0 +1,62 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+Rectangle {
+ id: fullScreenNotification
+ width: 500
+ height: 40
+ color: "white"
+ radius: 7
+
+ visible: false
+ opacity: 0
+
+ function show() {
+ visible = true;
+ opacity = 1;
+ reset.start();
+ }
+
+ function hide() {
+ reset.stop();
+ opacity = 0;
+ }
+
+ Behavior on opacity {
+ NumberAnimation {
+ duration: 750
+ onStopped: {
+ if (opacity == 0)
+ visible = false;
+ }
+ }
+ }
+
+ Timer {
+ id: reset
+ interval: 5000
+ onTriggered: hide()
+ }
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ y: 125
+
+ Text {
+ id: message
+ width: parent.width
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+
+ wrapMode: Text.WordWrap
+ elide: Text.ElideNone
+ clip: true
+
+ text: qsTr("You are now in fullscreen mode. Press ESC to quit!")
+ }
+}
diff --git a/examples/webenginequick/nanobrowser/browser.qml b/examples/webenginequick/nanobrowser/browser.qml
deleted file mode 100644
index 781453863..000000000
--- a/examples/webenginequick/nanobrowser/browser.qml
+++ /dev/null
@@ -1,53 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import QtQuick.Window 2.0
-import QtWebEngine 1.0
-
-Window {
- width: 1024
- height: 768
- visible: true
- WebEngineView {
- anchors.fill: parent
- url: "https://www.qt.io"
- }
-}
diff --git a/examples/webenginequick/nanobrowser/icons/3rdparty/COPYING b/examples/webenginequick/nanobrowser/icons/3rdparty/COPYING
new file mode 100644
index 000000000..220881da6
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/icons/3rdparty/COPYING
@@ -0,0 +1 @@
+The icons in this repository are herefore released into the Public Domain.
diff --git a/examples/webenginequick/nanobrowser/icons/3rdparty/go-next.png b/examples/webenginequick/nanobrowser/icons/3rdparty/go-next.png
new file mode 100644
index 000000000..6f3f65d33
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/icons/3rdparty/go-next.png
Binary files differ
diff --git a/examples/webenginequick/nanobrowser/icons/3rdparty/go-previous.png b/examples/webenginequick/nanobrowser/icons/3rdparty/go-previous.png
new file mode 100644
index 000000000..93be3d1ee
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/icons/3rdparty/go-previous.png
Binary files differ
diff --git a/examples/webenginequick/nanobrowser/icons/3rdparty/process-stop.png b/examples/webenginequick/nanobrowser/icons/3rdparty/process-stop.png
new file mode 100644
index 000000000..b68290bf1
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/icons/3rdparty/process-stop.png
Binary files differ
diff --git a/examples/webenginequick/nanobrowser/icons/3rdparty/view-refresh.png b/examples/webenginequick/nanobrowser/icons/3rdparty/view-refresh.png
new file mode 100644
index 000000000..cab4d02c7
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/icons/3rdparty/view-refresh.png
Binary files differ
diff --git a/examples/webenginequick/nanobrowser/nanobrowser.pyproject b/examples/webenginequick/nanobrowser/nanobrowser.pyproject
index dd9039229..c86c57f67 100644
--- a/examples/webenginequick/nanobrowser/nanobrowser.pyproject
+++ b/examples/webenginequick/nanobrowser/nanobrowser.pyproject
@@ -1,3 +1,6 @@
{
- "files": ["quicknanobrowser.py", "browser.qml"]
+ "files": ["quicknanobrowser.py", "ApplicationRoot.qml",
+ "BrowserDialog.qml", "BrowserWindow.qml", "DownloadView.qml",
+ "FindBar.qml", "FullScreenNotification.qml",
+ "resources.qrc"]
}
diff --git a/examples/webenginequick/nanobrowser/quicknanobrowser.py b/examples/webenginequick/nanobrowser/quicknanobrowser.py
index 6e4d04ff3..aee79c2aa 100644
--- a/examples/webenginequick/nanobrowser/quicknanobrowser.py
+++ b/examples/webenginequick/nanobrowser/quicknanobrowser.py
@@ -1,61 +1,70 @@
-#############################################################################
-##
-## Copyright (C) 2017 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 WebEngine QtQuick 2 Example"""
import os
-from PySide6.QtCore import QUrl
-from PySide6.QtQml import QQmlApplicationEngine
-from PySide6.QtWidgets import QApplication
-from PySide6.QtWebEngine import QtWebEngine
+import sys
+from argparse import ArgumentParser, RawTextHelpFormatter
+from pathlib import Path
+from PySide6.QtCore import (QCoreApplication, QFileInfo, QMetaObject, QObject,
+ QUrl, Slot, Q_ARG)
+from PySide6.QtQml import QQmlApplicationEngine, QmlElement, QmlSingleton
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtWebEngineQuick import QtWebEngineQuick
-def main():
- app = QApplication([])
- QtWebEngine.initialize()
- engine = QQmlApplicationEngine()
- qml_file_path = os.path.join(os.path.dirname(__file__), 'browser.qml')
- qml_url = QUrl.fromLocalFile(os.path.abspath(qml_file_path))
- engine.load(qml_url)
- app.exec()
+import rc_resources # noqa: F401
+
+
+# To be used on the @QmlElement decorator
+# (QML_IMPORT_MINOR_VERSION is optional)
+QML_IMPORT_NAME = "BrowserUtils"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+def url_from_user_input(user_input):
+ file_info = QFileInfo(user_input)
+ if file_info.exists():
+ return QUrl.fromLocalFile(file_info.absoluteFilePath())
+ return QUrl.fromUserInput(user_input)
+
+
+@QmlElement
+@QmlSingleton
+class Utils(QObject):
+
+ @Slot(str, result=QUrl)
+ def fromUserInput(self, user_input):
+ return url_from_user_input(user_input)
if __name__ == '__main__':
- main()
+ QCoreApplication.setApplicationName("Quick Nano Browser")
+ QCoreApplication.setOrganizationName("QtProject")
+
+ QtWebEngineQuick.initialize()
+
+ argument_parser = ArgumentParser(description="Quick Nano Browser",
+ formatter_class=RawTextHelpFormatter)
+ argument_parser.add_argument("--single-process", "-s", action="store_true",
+ help="Run in single process mode (trouble shooting)")
+ argument_parser.add_argument("url", help="The URL to open",
+ nargs='?', type=str)
+ options = argument_parser.parse_args()
+
+ url = url_from_user_input(options.url) if options.url else QUrl("https://www.qt.io")
+
+ app_args = sys.argv
+ if options.single_process:
+ app_args.extend(["--webEngineArgs", "--single-process"])
+ app = QGuiApplication(app_args)
+ engine = QQmlApplicationEngine()
+ qml_file = os.fspath(Path(__file__).resolve().parent / 'ApplicationRoot.qml')
+ engine.load(QUrl.fromLocalFile(qml_file))
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ QMetaObject.invokeMethod(engine.rootObjects()[0], "load", Q_ARG("QVariant", url))
+
+ app.exec()
diff --git a/examples/webenginequick/nanobrowser/rc_resources.py b/examples/webenginequick/nanobrowser/rc_resources.py
new file mode 100644
index 000000000..990f10274
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/rc_resources.py
@@ -0,0 +1,348 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.4.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x03\xa2\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4l;\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x00\x19tEXtSoftware\
+\x00www.inkscape.or\
+g\x9b\xee<\x1a\x00\x00\x034IDAT8\x8d\xb5\
+\x95[h\x1dU\x14\x86\xbf5\xb3\xe7\xe4b\xedE)\
+)(\xd6'o\xed\x83\x85\x0a5\x89\xd0\x82V\x04A\
+E\xad\xfa\x22R\xa5\x14|iII\x0b\x82\xa2`Q\
+\xa4>\xf4EPKi\xccC\x88Z\x0a)bK4\
+\x86&\xa6*\x9a\x1654\xc6K\xd4\xa4\xb1\xc6\x04\xd3\
+\x93\xe4\xcce\xcf^>\x9c9u\x926\xd1\x87t\xc1\
+\xcf\xcc\x865\xdf\xda\xff\xda\x8b\xd9\xa2\xaa\x5c\x8d\xf0\xae\
+\x0a\xf5\xff\x82\x1b\x9b\x83\xae\xfa&\xf3\xe0\x92\x83\xd5\xb1\
+ym\xdd-\xef76\x17v/)\x18`\xc7\xc3/\
+T\xaf\xbby\xe3\xab\xf7\xec5oo\xdb&\xfe\x92\x81\
+}?\xe0\x91\xcd\xdbk6\xad\xbb\xff\xe9\xf3kM\xe7\
+\x96\xe7e\xd9b\xf9&\xbfhh\x0e\xfe\xc0QwY\
+u#\xa1s\xb6\xfa\xcc\xf9N\x1a7l\xadZ\xb1l\
+U\xc3\xc7}m\xfd\x9b\xf6\xca\x96\xd3\xaf\xeb\xc8\x95\xc0\
+\x92\x1f\xb7\x86=\x81\xee\xdf\xd92'A\xd5\xa1(N\
+\x1d]C\xad\x08\x1ew\xaci`l|\xd4\x1d\xebj\
+\xf9\xdbZ{\xef\xe7\x07\xe2\xfe\xff\x04\xbf\xb2\xe3]N\
+\xfd\xd4\x9eA\x15\xc5\x91\xba\x14\xa7\x0e\xa7\x96\xd4YR\
+\xb5\xdcVw7\x1a{\x1c\xfd\xe4\xf0L),>u\
+\xea\x0d\xdb1\xc7\xe5\xfcJ\xa9\xb3D\xb6DdK\xc4\
+iHdC\x924\x22ICb\x1b\x12\xa7!\xb1-\
+\xf1\xcd\xef'\xb8\x98\x8e\xf1\xe4\x03;\xafYq\xed\xea\
+\xb6\x86=A\xd3\xa2`\xeb\x12JI\x91\xc9\xd91.\
+\x14\x87\x19\x9f\xfe\x8d\xa9\xd2\x9f\x84\xb6HBH*\x11\
+Nb\x9c\xc4\x0c\x5c\xe8ah\xe2\x0b\x1e\xbb\xef\x99\xda\
+\x1b\xebnz\xb9\xb1\xd9\x1c\xacp\xcc|p1\x9cd\
+x\xe2[\x94r\x8b\xc4\x03?\xf0\xf0\x9d\xe0\x07>\x05\
+S\xc03>\xe2\x04')j\xa2\xf2S\x10DnX\
+\x10\x9c\xb8h\x0e4\xa8\xf20\x85\xb2<#x\xbe\x05\
+,\xce)\xb7\xae\xacgM\xe1v><qdvj\
+z\xe2Pom\xbakAp>\xfc\xc0\xc3\x0f<L\
+\x95w\xa9\x80g\x04O<\xd6\xaf\xda\x8a?\xbb\x9c\xb6\
+\x8e\xc3\xb3\xd3S3\xfbN\x1fL\xdf\x01\xe0\xa5y`\
+\x11\x09\xea\x9b\xca\xcb\xc77\xecC\x00\xcfH\x19n\x04\
+\xdf\x08'\xc7\xde\xa4\xb6\xa6\x86;\xaf\x7f\x88\xf1\x91)\
+=v\xbcef\xf2\x97\xe8\xd9\xef\xda]7P\x0b\x18\
+\x11\x89T51\x19\xd4\x00\x05\x85\xf1\xb7\xda\xf6\xaf\xbe\
+l\xe7F\xe2\xdd\xcf\xbdX\xa8\xf6\x97\xb3\xf1\xbaG9\
+\xf7\xfd\xb9\xb4\xf3\xb3\x93\x13\xc3\xbd\xba}\xb4\xcf\x0d\x01\
+5\xfc;\x08*\x22ie\xc7>\xe0\xf7\x1d\xb0\xeb\x81\
+\xaaL\xd5\x95\xf7\xfa&\xd3\xebR\xe5\xae\x95O\xd0\xd3\
+\xdd\x13\x7f}\xf6\xcb\x9f\x07>\xb0\xbb.\x8e\xf0\x17P\
+\x00\x1c\x90f\xb2\x80Y\xb4\xc7\xf9\x08K!\x1f}\xda\
+\x11\x0f\x0e\x0e\xf6\x9c9\xe2^K#f\x16Iw\x15\
+p\xbe\x9a\x9f)\x06\x04\xca#\xd2~\xbc5\xfe\xf5\x87\
+\xd1Cg\xdfs\xadYn\x92)\xce\xbe\xcb\xab\xdc\x0a\
+U\xb5\x22B\x06\x22g\xcd\x02&M\xf4\xab\x1f\xfbG\
+Z\x06\x8e\xba\xee\xac\x90\xcbA*\xf0\x04(\x01\xa1\xaa\
+\xea\x9c\x7f\x85\x94\xe9A\xd6\xdb\x80\xf2\xd4T\x1cH\xce\
+\x81\xces\x19\x01\x91\xaa\xdaK\xac\x85.S\x11\xf1)\
+\x9f\xb4\x9fS\xc5M\xfe\xb0R\xbd\x02\xe4\x1f-'\x87\
+\xbf\xf3\xe1\xd64\x00\x00\x00\x00IEND\xaeB`\
+\x82\
+\x00\x00\x05T\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4l;\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x00\x19tEXtSoftware\
+\x00www.inkscape.or\
+g\x9b\xee<\x1a\x00\x00\x04\xe6IDAT8\x8d\xb5\
+\x95iL\x14g\x18\xc7\xff\xef;3;\xbb\xb3K9\
+\x96[\xe4\x10k\x91\xa0\x16E\xa8h\x1b\x8f\x9a&\xad\
+1i\xda\x10\x82\x9a\x98\xa6\x02\xd6O\xb6M\x13\x93&\
+\xfd\xd2415i\xd2Z\x14$5\xb6\x80\xa44i\
+\xb5\xb1Gb<J\xad\x0a\x04A[\x05B=\x10\x16\
+\x01q\x81\xbd\xe7x\x9f~`!\x1c~\xf0K'\xf9\
+g\x92\x99g~\xf3\x9bg\x9e\x99\x97\x11\x11\xfe\x8f\x8d\
+?KQYY\x8b\xf4,u\x1b\xf67g\x97\xbe\xdb\
+\x92\x00\x00\xeci\xc6%\x95\xdf\xaeP\x14\xf5#0l\
+5M+M\x10\x14\x893?\xe7l\xd4\x12tA\x90\
+h\x11\x14\xf8\xa3\xa3\xb6\xd2\x98\xb9\xe6\xa5}\xa7S\x04\
+\xa7\xbfL\x0b[;\xeb+\x1e\xcc\x033\x06V\xfa^\
+s=\xc0\xca_~q\xa9meN\xb2\xecr\xaa\xe0\
+\x9cA\xd7\x0d\x04B\x06\x1e<\x9a\xb4n\xf4z\x02#\
+\xe3\x01\x891\x1c\xf6s\xe5\x0b\x97\xa4s\xe8\xbc\xdd\x12\
+b\x051\x91\xd5Q\xbbg`\x1ex\xe3\x81\xe6\x93\xd9\
+iqe{^_\xadE\x0c\x0b\x13\xfe0b4\x15\
+\x9a\xaa@\xe2\x00\xe3\x0c\xa0i\x03\x7f0\x82K\x9d\xf7\
+\xc3\xd7\xff\x1e\xd2I\xc0\xb3\xa90k\xd9\xad\xfe\x11c\
+r\x22\x98w\xed\xc4\xaeAy\x06ZT\xf5]I\x82\
+K{{{\xf12\xed\xeb\x96v1\xe6\x0dr\xce\x01\
+a\x11\x11\x83\x99\xeav\x85J\x0a2\x9c\x85/\xa4J\
+D@\xc8 l]\x9fk/\xca\xcf\xb0\xf7?|\x12\
+\xf3jQ\x16\xeb\xea\x1d6u!\x89y/\xcf.+\
+\xd5\xcf\xb9Tg\xfd\x99N\x9a\x0a\x18\xccaW\xc2\x96\
+\x10\xdf_\xab\xad\xe0!\x8e\x14\xcf\x88\x7f\xfb\xb9\xd6\xbe\
+\x1f>\xfd\xa65\xd8\xd63LNU\xc2\xd0x\x08O\
+\x02&\xd6\xe7\xa73E\xe6\xb0,\x01\xd9\x1e\x9e\x0f\x06\
+\xc3k\x03\xc3\x93\xcc\x1d\x17\xe3]\x9e\x9dzC\xd7M\
+/ >\x07\x80\x9b5\x15\xde\xf6\xfa\x8a\xb6+5\xe5\
+\xe5\x86nm\xfc\xfdJ_\xfb\x89\x1f;\x82\xf1\x0e\x8e\
+\xcc$\x0d\x97n\x8dB\x918,!Xd\xa11\x09\
+\xa8\x9aC\x1d\xca\xccH\xae\x8d\xd5\xec\x0d`\xbc\xcf\x22\
+\x9bw\xe1\xc4\xb4\xd5Ut\xe9\x86yh*\xa0K1\
+\x0e\x05C\xe3!\x08\x00v\x85\xc3\xb2\x88)B\x16\x00\
+0\xdbcK\x88`\xa2\xcb\xf1e\x8c\xc3\xfe\xb3\xae\xab\
+\x8f)\xc2N\xc5,M\x9eZ\x08.\xaaj\x5c\xa5\xc8\
+\xd2\xd9\xea\xb7\x8a\xd4\xa4x\x0di\x89Nl.H\x86\
+\xaaH0\x051\x9b\xb5\x00\xecHK\xcf9\x8b\xcb\xe2\
+\xcc\xde7\x04\x00\xa0r\xc5\xa2\xf9.\xaajHc\xc4\
+\x7f\xb3,\xd2\x8e\xb6\xb4GH\x10\x88\x00\xc2\xf4^\x08\
+\xb2\xe9V@\x00s>\x90\xe2\xaa\xa61\x06\xb8\x16\xd1\
+\x00\x10\xc1\xc7\xb8\xd8\xfe\xc4\xe6\xeeq\xf9F\x1cO\xab\
+\x01\x00\x85\xa0\xb6\x9f\xda;J\x04\x92\xe7\x1c\x8fk\xf8\
+d\x87l\x939\x00\x06\xc6\x80\xb0n\xe2\xe3\xba\xd6\xc8\
+\xfd\x91\xc9\xf7\xaf\x1f\xdf\xdd\x1d\xad\x8bL\xdb\xd7)@\
+\xbcVZP\x18v\xc7\xe8\xf1\xdd\xff>,\x1d\x1c}\
+\x5cG\x84\xc4y\xad\x00\x11\xb3\xdbd\x5c\xb85\x02\x06\
+Bi^\x12\x9a\xce\xdf\x89\x0c\x8c\xfa\x8e\xb6\x1d\xdf\xd5\
+\xb0\xd0N\x16\xce\x14I\x15\xc7T\x87\xef\xa7\xc9\xb0H\
+\x9a\xf0\xfb\xabl\xb2l\xcd\x9c\x9f3n\xd3\x96\x86)\
+\x90\x91\xe8\x04\x03\xd0\xdd?F\x9c\xb1U\xc5\xef4/\
+]\xf4\xdc\x12\x9e\xb3,\xb1a\xd2\x17\xdc}\xfb\xde\xe0\
+\x87\xbe@8\x9bq\xdc\x9d\xbd\xf1\xac0\x881\x00k\
+r\xe208\x1e\xc4\x90\x97\xe3\xc8\x81-\xf6\xa6\xf3=\
+\xdb\xce]\xe9\xef)\xa9n\xfaJX\xd4\x01b\x03\x5c\
+\xb1d\x22\xe9\x88CU\xe2z\xee\x0em\xb6)\x12\xb9\
+c5\xc3;\x11\xaa_\x04\x9e\x96f\x08\x86t\xe4/\
+\x89E\xc4\xb4\xd0y\xcf\x8bW\x0a3\xa5\xe2\xfct\xad\
+\xe3\xce\xf0\x07\x9e\xc7\xbe\xb0g\xcc\xc7\xc6'\x82N\xc9\
+\xc6\x90\xe2\xd6\x90\x97\x93\x8c\xc48'k\xfc\xa5+\xac\
+\x99z\xe3\x220g\x8c\xdd\x7f4\x85C5\x97&8\
+\x03\xdf\xb1i\xb9m\xcb\xba,\xbb7`\xc2\x22\xa00\
+/M.\xb0R]\x8cM\xf7\xcf\x10\x04\xd3\x14\x98\xf0\
+G\xd0\xf8\xeb\x0d\xbfe\x18\x07/\x9e\xdc\x1b\x9e\x95$\
+\x220\xc6\xa4\xf5\x95\x0dF\xac\xd3\x16\xe8\xef\xba\xb8\xc3\
+\xd3q\xe6Q\xee\x96\xca\x9d\xee%\xb9\xd5\xab\x9fO\xcb\
+\xc8\xcfMQ2Sc\x99\xd3aC\xc4\x100L\x0b\
+\x93\x01\x1d]\xbd\x1eq\xf5\xe6C=81r\xb8\xfb\
+\xf4\xc1\x1a\x00a\x00a\x22\xd2g\xc0\xf6u\xfb\x1a\xbc\
+~\xcf\xed\xb2\xdes\x9f\xfd\x03\xc0\x11\x8d=}\xed\xce\
+5)+\xb7\x95+Z\xfcZp\xa6:U\xc5\x08F\
+L\x89\x08\x10\x11\xdf\x9f\xa3}\xad\xc7\x06\xae6u\x03\
+\x08E\x13$\xa2\xe0\x0c\x98\xad\xde}\xec\xcd\x9b\x0d\xfb\
+/\x03\xb0\x03P\xe7D\x89F\x92\x9cn%!\xa3 \
+!\xe8\x1d\xf6\x06F\xfb\xbc\x00\xf4\xe8\x5cG\xa2P\x1f\
+\x80\x08\x11\xd1\xa2\xa5\x891&\xcd\x81\xcdD\x06 a\
+\xfa7oEcD\xa3\x030\x89\xc8\x9a\xcb\xf9\x0f)\
+i\x5c\x9ar\xdc\xdf`\x00\x00\x00\x00IEND\xae\
+B`\x82\
+\x00\x00\x04\xf8\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4l;\
+\x00\x00\x00\x06bKGD\x00\x00\x00\x00\x00\x00\xf9C\
+\xbb\x7f\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\
+\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\
+\xd5\x0a\x11\x17+\x00C+G\xfb\x00\x00\x04\x85ID\
+AT8\xcb\x8d\x95[hTG\x18\xc7\x7fs\xcen\
+\xf6\x92l\xe2\x0d\xb5\xb5jH[M\x0d\x16\xdcf\xc5\
+\x18\x0d\x16\x95R\x0a\x81\xbeD\xc4\x06\x94\xb6\xd8B)\
+\xb6T\x8b\xd1\x07\x95\xc4z\x81\xfa\xd0\x87B\xfb\x16\xa1\
+PA\x10\xa9\xad\xb6\x09\xa5(\xda\x82\xa6\x18s\xd1\xb4\
+I\x9b\xdb\xba\xbbI\xdc\xdd\xec\xd9\xeb9s\xa6\x0f\xbb\
+\xae\xc6D\xe9\xc0\xc7<\xcc\xcco\xbe\xf9.\xff\x11<\
+c\x1c\x87%\x80x\xc6\x96H\x0b\xd8s-<\xf5\xd0\
+I\xf8B\xc1\xa7\x02\xe4\x5c\xeb\x0a4\x01\xe7%\xbc\xd3\
+\x02\xea\x7f\x81O\xc2\xe9\xea\x86\x86\x8f\xb665\xb9u\
+\x97\x0b\x94*\x9a\xb2m\xb0,\xacT\x8a\x9f\xdb\xdb3\
+\x83}}\xdfK\xd8\xf3$|\x16\xf8\x04\x9c\xa9\xae\xaf\
+\xff`\xdb\xce\x9d\xeex_\x1f\xa9\xf1q\xb0m\xb0\xed\
+<TJ\x94\x94\xb8\x17-b\xfe\x9a5\x5c9w.\
+3\xd4\xdb\xfb\xdd\xe7\xf0\xee\xe3\x1c\xfd\x09\xe8W\xd5u\
+u\xefo\xdb\xb5\xcb\x13\xef\xeb#\x1d\x0a!D\xe1n\
+\xa5\x1e\xcdJa\x19\x06\x96aPS_\xef\x88\xc6\xe3\
+\xd5\xaf\x85\xc3\xcb;\xe0\x87Y\xe0\x13\xf0\xf5\xea@`\
+\xcf\xf6\xe6fO\xac\xa7\x87t$B\xcc\xe3A*\x85\
+\xcb\xb6g\x84\xc3\x10\x82\xe9\x92\x12\x1c\xb1\x18f2\xc9\
+\x9a\xf5\xeb\x9dS\xb1XM\xed\xc4\xc4\xd2\x0e\xf8\xa9\x08\
+>\x01\xdf\xae\xf6\xfb\x9b\xb7\xef\xde\xed\x89\xde\xbeM:\
+\x12!\xeav#\xaa\xaa\xc8\x98&v6[\x84'\x84\
+ \xe1\xf3\xe1]\xbb\x96x8\x8c#\x16\xc3J\xa5x\
+\xc5\xefwF\x13\x89\xb5\xb5\x13\x13\x0b;\xe0\x8a\x06 \
+\x1c\x8e\xf7\xb677{\xa2]]dB!rJ\x91\
+\xb5,\x16\xec\xd8\xc1\xd2}\xfbH\xf9|L\x0b\x81\xa1\
+i\x18ee\xacjme\xc5\xde\xbd\x98B\x90V\x0a\
+#\x12\xe1\xc1\xe0 [\xb7l\xf1h\x1e\xcf'\x00\x1a\
+\x80\xae\xebhB\x90\xbe\x7f\x1f\x0aO\xf7Z\x16\xa13\
+g\x10B\xb0\xec\xc0\x01R\xe5\xe5\x18\xa5\xa5\xbc\xdc\xda\
+\x8a\xb3\xb4\x94\xbf\x0e\x1d\xc2m\x9a\xb8\x00\xa5\x14F8\
+\x8c\xaei\xa8B.\x1c\xc5\xbaT*\x9fy!@)\
+*l\x9b\xf8\xd4\x14\xc1\xd3\xa7Yq\xf0 /\x1e?\
+\x8e\xaeihJ1p\xf80\x04\x83\xf8r9\x94R\
+(\xa5\xb0\x95\x02)\x8bI\xd6\x1eU\xbc*\x96\xd3\xc3\
+\x92*\xcf\xe5`r\x92\xa9\x0b\x17pz<8\xbd^\
+\x22\x17/b\x8d\x8d\x15\xa1\xb6mc?\x84\xcbG\xbd\
+\xe4x\x1c\x8cm\xe7=\xd7\xf2\xf7%t\x1d\xe9v\xb3\
+\xb8\xb1\x11M\x084\xe0\xb9\xc6F\xe2\xb7naI\x89\
+\xea\xeeF\x9a&\xb6i\xa24\x0dJJ\xf2\xce\xcd\xf2\
+X\xca|3HI\x020<\x1e^:v\x0cgY\
+\x19\xff\x9c:E\xdf\xfe\xfdhBPs\xf4(S\xe3\
+\xe3\xc4\xa5$\xd9\xd3C\xf2\xde=\x8c\xfe~\xe4\xf00\
+\xb6i\xce\x04?\x84*)\xc9HIr\xde<V\xb5\
+\xb5\xa1{\xbd\xfc\xdd\xd6F\xa6\xab\x8b\xe8\xd9\xb3\xf4\x1f\
+9\x82\xd3\xe5bc{;\x19\x97\x8b\x14y\x15r,\
+^\x8c\xf2\xf9f\x86BJ\x8998\x88\x98\x9a\x22\x15\
+\x0cb\x99&l\xdaD\xe2\xe6M\xee_\xbaD\xee\xfa\
+uJGG)\x07\x12\x97/\xd3\xadi\xbc\xd0\xd4\x84\
+\xab\xa2\x02+/H\xe8.\x17b\xe9\xd2\x99-\xbd\xcd\
+\xb6\xad\xb1\xe1\xe1\xbau\x0d\x0d\xce\x5c$Bnb\x02\
+g\x22\xc1\x83p\x1852\x82g`\x00\xbb\x00\xd0\xa6\
+\xa7\x89\xde\xb9C.\x99\xc4\x15\x8d\x92\x1b\x19\xc1\xb3r\
+%U\x81\x00=7n\x98\xa1\xc9\xc9\xdb\x1d\xf0\x8d\x0e\
+\xd0\x01W\xebR)5:6\xb6q\xdd\xe6\xcd\xce\x9c\
+a\x90\x09\x06\xd1\x86\x86\xd0C\xa1\x22\xd4.\x98SJ\
+r\xbd\xbddGF(\xad\xac\xa42\x10\xe0No\xaf\
+\xf9\xe7\xdd\xbb\x7f\xd8\xf0z'XE\xad\xe8\x80\xab\x1b\
+\xd3i9:>^\xef\xaf\xafw\xe6\x92I\xb2\xf1x\
+\x11\xa6\xe6\x98\xcb*+YY[\xcb\xef\x9d\x9d\xd9\xfe\
+\xb1\xb1_mx\xb3\x05\xb2\xb3\xd4\xad\x03\xae\xd5e2\
+\xe6h0\xb8\xc9\x1f\x088s\x99\x0c\xd9t\x1at\x1d\
+\xa5\xeb\xa0i\xa8\x82\x95WU\xb1\xdc\xef\xe7\xda/\xbf\
+d\x86b\xb1\x1fmx\xbb\x05\xac\xa7\xe9\xb1\x13X\xf2\
+1|V\xe3\xf3}\xf8\xd6\x86\x0d%\xce\xf9\xf3\x11e\
+e\xf9\xe2/h\xb2\x92\x12\xe5\xf5\xd2y\xfe\xbc\xd9\x1d\
+\x8f\xff\xf6%\x1c\xb2!\x02\x84\x81\xf4\x93\xe0R`9\
+\xf0<\xb0\xac\x09v\xbc\x0ao\x00B\xe5\xf7\x09\x05B\
+\xe4\xa3\xa0\x04\xa8\x01\xe8o\x87s\xc08\x10\x04\xfe\x05\
+\x06\x01S\xcc\xf1Uy\x01\x1fP\x01,\x04\x16\x00\x8b\
+\x80y\x85\x17\x19@\x1cxP\xb0(0\x0d\xc4(\xc4\
+\x17\xe0?\x98\x97d\xf0\xa2y\x08\xf3\x00\x00\x00\x00I\
+END\xaeB`\x82\
+\x00\x00\x03\xbb\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4l;\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x00\x19tEXtSoftware\
+\x00www.inkscape.or\
+g\x9b\xee<\x1a\x00\x00\x03MIDAT8\x8d\xb5\
+\x95Mh\x5cU\x18\x86\x9f\xef\x9cs\xef\xcd\x9fR\xfb\
+#\x18\x8d4\x05\x8d\x88\xa0\x82\xc6\x98\x99,\xda(\x11\
+\xa9\xc1\xfa\x1f\x8a]H\xe9\xa6+k\x13\xa1.\xa2\x88\
+\x1b\x11\x84\x8a.L7\xadbuQ\x8d\x22B-\xb6\
+\x1b\x15\x22\x9d*(\x88A\x94X\xd3\x88\xa16i\xe8\
+df\xee\xb9\xf7s1w\x921\xa6c\x5c\xf4\xc0\xcb\
+9\x8b\x8f\xe7{\xbf\x97{\xee\x11U\xe5J,sE\
+\xa8\x80\xfb?\xc5\xbd\xfb\x83\x01\x11\x0e\x84m\xbe\xff\xd4\
+\xa8\xfaF\xb5kv\xdc7\x12\xee\xbd~S\xe7\x87F\
+l\xdfZ\x0c\xfd'X^\x12\x93\x1bvo\xde\xdcq\
+\xfb\xab{\x06\x0f\xb4X\xe3\xd2\xb5\x18i\xd8y`X\
+Zs\xe2\xc6\xbbo\xdd\x9a\xbf\xaf\xfb\xd1\xa6\xc0\x85k\
+a6\x06\xe7\x9f\x97v\xc1\x9d\xea\xbf{G\xe7\x9d]\
+\xf7\x06\xdfN\x7fN\xcf\xe6A\x8c\xa3R^p\x8b\xb9\
+\xfd\xc1?\xea\xc50\x1b\xb4\xfa\xf6Z\xf6\xab\x82s#\
+\xe1\x1d\xd64\x9d\x18\xdc\xb6\xf3\x9a\xeb6\xdd`'\xa6\
+>\x05\x94$Mxa\xd7[\xcdF\x0c\x82 \xb2\x9c\
+\xe4\xe8\xd8\xee\xf5\xe0\x1d\xb0:\xb8\xf79\xb7\xbd\xb5\xb9\
+\xed\xe8\xc3[\x9fn3\x9121\xf5\x09F,\xd6\x04\
+|1y\x18#\x0e#\x06k,\x82AD\xc8oy\
+\xbcq\x14\xb9\xe1`\xdf\xba\xab7\xbc\xbc\xa3\x7fW\xcb\
+\xf9\xc5)~>{\x06k\x02\x9c\x09H5%M\x13\
+\xacq\x18\xb1\xf8\xd4`2\xc7I\x1a\xa3(\xb2\x1a8\
+?\xe2\x0e\xb6o\xecxf \xffX\xcb\xe4\xf9o\x98\
+\x9e\xfbi\x19\xa8\x09\x81\xa4\xa4\xb6BE<\x89\xc6\xa0\
+\xe0\x08\x89\xecUx\x8dYy\x83\x97\x1d\x1b\xda1\x88\
+\x92\x10\xfb\x12e_$\x16\x8b\xa2\xd8\x10\xc0cP\x8c\
+\x15\xc4T\xbdi\xaah\x09\x8a\xe9\x85\x7fE\xb1\x94\xfe\
+W\xcd\xc9\x13\xe7\xfe\xfc\xfd\xd0G'\xdf\xbdt\xd3\x86\
+n\xba\xae\xbd\x87\xb2/\x92\x9a\x12\xd8\x0a.\x82\xb0\xd9\
+\x12\xb5X\x9aZ-Qk\xf5\x1c4\x1bR\xa9\x5c\x1e\
+\xac\xa3\x9a~\xfd\x9a\xdf\xf7\xd7\xec\x85\xe1c\xc7\x0f\x17\
+\xd7\x87\x1d\xf4t>D\x10\x04\xd8\xc0\xe0BC\x10\x99\
+*|\x09jq\x91\xc1XA\x81\x85s\xcb\xbc\xa5(\
+D$\x00\xa2\x897\xfc\x07\xb7=U\x9c\x19O\xde;\
+r\x7f\xef\xf6\xb6\xbe\xce'\xa50\xfb1j*<\xb8\
+\xe5Y\x9cs\xd8\xc0\xa0\xaa\xa4^I|uG`\xe6\
+\x0c-\x22\x12\xabj\xec2\xa8\x03\xc2L\xd1\x0f\xef'\
+\xdf\xdd\x98\xe7\x91\xe3~\xfc\x9d\xdc]\xdb6\xe6o\xd9\
+\xe9N\xcf\x1eCSx\xfd\xd0+\xe5r1\x8eV\x8e\
+.07\x7f\x16\x03\x84\x22\x92\xd4\x1c\xdbL\xae\xa6\xdf\
+\xbeL\xfe\x98\xff\x95\xa1\xc4\x9f<8\x7fq\xbe+\xd7\
+3\x14j\x22\xc4e\x0d\x0ac\xfe\x81\xf2E\x16\x80r\
+\xa6R\xb6\xd7X\xae\xe1Oh~\x9a\x85\xc2\xdb\xc9\xde\
+B\xe1\xf4\xc9\xcfN\x8c\x97\x17\x8b\xa5F\xe5\xf5+\xad\
+9N2\xf9:\xf7\x15@|\x09-\x8c\xa5/V\x86\
+~\x99\xbcT<\xb2\x874\x8d\xc4P\xcc\x5c\xc6Y\x9d\
+_\xa1j\x14\xaa\xeaE$\x8b\xaa\xda\xb1\xae\x91\x03\xdc\
+\xf7G\x93\xb1\xca\xe0\xcc\x8f\xeb6\xcb\xee$f.\x1b\
+\xdd\xd7\xc1c`\x11(\xa9\xaaJ\xfd\x8d\x91*=\x00\
+\xa2lwu\x13H&\xcdT?e\x19(\xab.\xbf\
+*r\xb9\xc7TD,\xd5\xef\xdc\xd6\xa96Mm\xa2\
+\x04Ht\x15\xc8\xdfq\xe6X\xba\xbc$\xce\xad\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x05\
+\x00o\xa6S\
+\x00i\
+\x00c\x00o\x00n\x00s\
+\x00\x0b\
+\x0c+\x1f\xc7\
+\x00g\
+\x00o\x00-\x00n\x00e\x00x\x00t\x00.\x00p\x00n\x00g\
+\x00\x10\
+\x08\x15\x13g\
+\x00v\
+\x00i\x00e\x00w\x00-\x00r\x00e\x00f\x00r\x00e\x00s\x00h\x00.\x00p\x00n\x00g\
+\x00\x10\
+\x08\xea\xfbg\
+\x00p\
+\x00r\x00o\x00c\x00e\x00s\x00s\x00-\x00s\x00t\x00o\x00p\x00.\x00p\x00n\x00g\
+\x00\x0f\
+\x0e6v\xc7\
+\x00g\
+\x00o\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00,\x00\x00\x00\x00\x00\x01\x00\x00\x03\xa6\
+\x00\x00\x01{\xe0\xa8\xe4\xe2\
+\x00\x00\x00R\x00\x00\x00\x00\x00\x01\x00\x00\x08\xfe\
+\x00\x00\x01{\xe0\xa8\xe4\xe2\
+\x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01{\xe0\xa8\xe4\xe2\
+\x00\x00\x00x\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xfa\
+\x00\x00\x01{\xe0\xa8\xe4\xe2\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/webenginequick/nanobrowser/resources.qrc b/examples/webenginequick/nanobrowser/resources.qrc
new file mode 100644
index 000000000..829285ec0
--- /dev/null
+++ b/examples/webenginequick/nanobrowser/resources.qrc
@@ -0,0 +1,8 @@
+<RCC>
+ <qresource prefix="/icons">
+ <file alias="go-next.png">icons/3rdparty/go-next.png</file>
+ <file alias="go-previous.png">icons/3rdparty/go-previous.png</file>
+ <file alias="process-stop.png">icons/3rdparty/process-stop.png</file>
+ <file alias="view-refresh.png">icons/3rdparty/view-refresh.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/webenginewidgets/markdowneditor/document.py b/examples/webenginewidgets/markdowneditor/document.py
new file mode 100644
index 000000000..331fbc0ca
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/document.py
@@ -0,0 +1,24 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+from PySide6.QtCore import QObject, Property, Signal
+
+
+class Document(QObject):
+
+ textChanged = Signal(str)
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._text = ''
+
+ def text(self):
+ return self._text
+
+ def setText(self, t):
+ if t != self._text:
+ self._text = t
+ self.textChanged.emit(t)
+
+ text = Property(str, text, setText, notify=textChanged)
diff --git a/examples/webenginewidgets/markdowneditor/main.py b/examples/webenginewidgets/markdowneditor/main.py
new file mode 100644
index 000000000..4d787f0f0
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/main.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 Markdown Editor Example"""
+
+import sys
+
+from PySide6.QtCore import QCoreApplication
+from PySide6.QtWidgets import QApplication
+
+from mainwindow import MainWindow
+import rc_markdowneditor # noqa: F401
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ QCoreApplication.setOrganizationName("QtExamples")
+ window = MainWindow()
+ window.show()
+ sys.exit(app.exec())
diff --git a/examples/webenginewidgets/markdowneditor/mainwindow.py b/examples/webenginewidgets/markdowneditor/mainwindow.py
new file mode 100644
index 000000000..6f74cf93d
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/mainwindow.py
@@ -0,0 +1,137 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+from PySide6.QtCore import QDir, QFile, QIODevice, QUrl, Qt, Slot
+from PySide6.QtGui import QFontDatabase
+from PySide6.QtWebChannel import QWebChannel
+from PySide6.QtWidgets import QDialog, QFileDialog, QMainWindow, QMessageBox
+
+from ui_mainwindow import Ui_MainWindow
+from document import Document
+from previewpage import PreviewPage
+
+
+class MainWindow(QMainWindow):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_file_path = ''
+ self.m_content = Document()
+ self._ui = Ui_MainWindow()
+ self._ui.setupUi(self)
+ font = QFontDatabase.systemFont(QFontDatabase.FixedFont)
+ self._ui.editor.setFont(font)
+ self._ui.preview.setContextMenuPolicy(Qt.NoContextMenu)
+ self._page = PreviewPage(self)
+ self._ui.preview.setPage(self._page)
+
+ self._ui.editor.textChanged.connect(self.plainTextEditChanged)
+
+ self._channel = QWebChannel(self)
+ self._channel.registerObject("content", self.m_content)
+ self._page.setWebChannel(self._channel)
+
+ self._ui.preview.setUrl(QUrl("qrc:/index.html"))
+
+ self._ui.actionNew.triggered.connect(self.onFileNew)
+ self._ui.actionOpen.triggered.connect(self.onFileOpen)
+ self._ui.actionSave.triggered.connect(self.onFileSave)
+ self._ui.actionSaveAs.triggered.connect(self.onFileSaveAs)
+ self._ui.actionExit.triggered.connect(self.close)
+
+ self._ui.editor.document().modificationChanged.connect(self._ui.actionSave.setEnabled)
+
+ defaultTextFile = QFile(":/default.md")
+ defaultTextFile.open(QIODevice.ReadOnly)
+ data = defaultTextFile.readAll()
+ self._ui.editor.setPlainText(data.data().decode('utf8'))
+
+ @Slot()
+ def plainTextEditChanged(self):
+ self.m_content.setText(self._ui.editor.toPlainText())
+
+ @Slot(str)
+ def openFile(self, path):
+ f = QFile(path)
+ name = QDir.toNativeSeparators(path)
+ if not f.open(QIODevice.ReadOnly):
+ error = f.errorString()
+ QMessageBox.warning(self, self.windowTitle(),
+ f"Could not open file {name}: {error}")
+ return
+ self.m_file_path = path
+ data = f.readAll()
+ self._ui.editor.setPlainText(data.data().decode('utf8'))
+ self.statusBar().showMessage(f"Opened {name}")
+
+ def isModified(self):
+ return self._ui.editor.document().isModified()
+
+ @Slot()
+ def onFileNew(self):
+ if self.isModified():
+ m = "You have unsaved changes. Do you want to create a new document anyway?"
+ button = QMessageBox.question(self, self.windowTitle(), m)
+ if button != QMessageBox.Yes:
+ return
+
+ self.m_file_path = ''
+ self._ui.editor.setPlainText("## New document")
+ self._ui.editor.document().setModified(False)
+
+ @Slot()
+ def onFileOpen(self):
+ if self.isModified():
+ m = "You have unsaved changes. Do you want to open a new document anyway?"
+ button = QMessageBox.question(self, self.windowTitle(), m)
+ if button != QMessageBox.Yes:
+ return
+ dialog = QFileDialog(self)
+ dialog.setWindowTitle("Open MarkDown File")
+ dialog.setMimeTypeFilters(["text/markdown"])
+ dialog.setAcceptMode(QFileDialog.AcceptOpen)
+ if dialog.exec() == QDialog.Accepted:
+ self.openFile(dialog.selectedFiles()[0])
+
+ @Slot()
+ def onFileSave(self):
+ if not self.m_file_path:
+ self.onFileSaveAs()
+ if not self.m_file_path:
+ return
+
+ f = QFile(self.m_file_path)
+ name = QDir.toNativeSeparators(self.m_file_path)
+ if not f.open(QIODevice.WriteOnly | QIODevice.Text):
+ error = f.errorString()
+ QMessageBox.warning(self, self.windowTitle(),
+ f"Could not write to file {name}: {error}")
+ return
+ text = self._ui.editor.toPlainText()
+ f.write(bytes(text, encoding='utf8'))
+ f.close()
+ self._ui.editor.document().setModified(False)
+ self.statusBar().showMessage(f"Wrote {name}")
+
+ @Slot()
+ def onFileSaveAs(self):
+ dialog = QFileDialog(self)
+ dialog.setWindowTitle("Save MarkDown File")
+ dialog.setMimeTypeFilters(["text/markdown"])
+ dialog.setAcceptMode(QFileDialog.AcceptSave)
+ dialog.setDefaultSuffix("md")
+ if dialog.exec() != QDialog.Accepted:
+ return
+ path = dialog.selectedFiles()[0]
+ self.m_file_path = path
+ self.onFileSave()
+
+ def closeEvent(self, event):
+ if self.isModified():
+ m = "You have unsaved changes. Do you want to exit anyway?"
+ button = QMessageBox.question(self, self.windowTitle(), m)
+ if button != QMessageBox.Yes:
+ event.ignore()
+ else:
+ event.accept()
diff --git a/examples/webenginewidgets/markdowneditor/mainwindow.ui b/examples/webenginewidgets/markdowneditor/mainwindow.ui
new file mode 100644
index 000000000..f4e29ad95
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/mainwindow.ui
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>800</width>
+ <height>600</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MarkDown Editor</string>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QSplitter" name="splitter">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <widget class="QPlainTextEdit" name="editor"/>
+ <widget class="QWebEngineView" name="preview" native="true"/>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menubar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>800</width>
+ <height>26</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menu_File">
+ <property name="title">
+ <string>&amp;File</string>
+ </property>
+ <addaction name="actionNew"/>
+ <addaction name="actionOpen"/>
+ <addaction name="actionSave"/>
+ <addaction name="actionSaveAs"/>
+ <addaction name="separator"/>
+ <addaction name="actionExit"/>
+ </widget>
+ <addaction name="menu_File"/>
+ </widget>
+ <widget class="QStatusBar" name="statusbar"/>
+ <action name="actionOpen">
+ <property name="text">
+ <string>&amp;Open...</string>
+ </property>
+ <property name="toolTip">
+ <string>Open document</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+O</string>
+ </property>
+ </action>
+ <action name="actionSave">
+ <property name="text">
+ <string>&amp;Save</string>
+ </property>
+ <property name="toolTip">
+ <string>Save current document</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+S</string>
+ </property>
+ </action>
+ <action name="actionExit">
+ <property name="text">
+ <string>E&amp;xit</string>
+ </property>
+ <property name="toolTip">
+ <string>Exit editor</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+Q</string>
+ </property>
+ </action>
+ <action name="actionSaveAs">
+ <property name="text">
+ <string>Save &amp;As...</string>
+ </property>
+ <property name="toolTip">
+ <string>Save document under different name</string>
+ </property>
+ </action>
+ <action name="actionNew">
+ <property name="text">
+ <string>&amp;New</string>
+ </property>
+ <property name="toolTip">
+ <string>Create new document</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+N</string>
+ </property>
+ </action>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/webenginewidgets/markdowneditor/markdowneditor.pyproject b/examples/webenginewidgets/markdowneditor/markdowneditor.pyproject
new file mode 100644
index 000000000..e18e05096
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/markdowneditor.pyproject
@@ -0,0 +1,8 @@
+{
+ "files": ["document.py",
+ "main.py",
+ "mainwindow.py",
+ "mainwindow.ui",
+ "previewpage.py",
+ "resources/markdowneditor.qrc"]
+}
diff --git a/examples/webenginewidgets/markdowneditor/previewpage.py b/examples/webenginewidgets/markdowneditor/previewpage.py
new file mode 100644
index 000000000..35ac80be4
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/previewpage.py
@@ -0,0 +1,18 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtGui import QDesktopServices
+from PySide6.QtWebEngineCore import QWebEnginePage
+
+
+class PreviewPage(QWebEnginePage):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ def acceptNavigationRequest(self, url, type, isMainFrame):
+ # Only allow qrc:/index.html.
+ if url.scheme() == "qrc":
+ return True
+ QDesktopServices.openUrl(url)
+ return False
diff --git a/examples/webenginewidgets/markdowneditor/rc_markdowneditor.py b/examples/webenginewidgets/markdowneditor/rc_markdowneditor.py
new file mode 100644
index 000000000..aa4f38a45
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/rc_markdowneditor.py
@@ -0,0 +1,852 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.2.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x01\xdd\
+#\
+# WebEngine Mark\
+down Editor Exam\
+ple\x0a\x0aThis exampl\
+e uses [QWebEngi\
+neView](http://d\
+oc.qt.io/qt-5/qw\
+ebengineview.htm\
+l)\x0ato preview te\
+xt written using\
+ the [Markdown](\
+https://en.wikip\
+edia.org/wiki/Ma\
+rkdown)\x0asyntax.\x0a\
+\x0a### Acknowledgm\
+ents\x0a\x0aThe conver\
+sion from Markdo\
+wn to HTML is do\
+ne with the help\
+ of the\x0a[marked \
+JavaScript libra\
+ry](https://gith\
+ub.com/chjj/mark\
+ed) by _Christop\
+her Jeffrey_.\x0aTh\
+e [style sheet](\
+https://kevinbur\
+ke.bitbucket.io/\
+markdowncss/)\x0awa\
+s created by _Ke\
+vin Burke_.\x0a\
+\x00\x00\x02\xb2\
+<\
+!doctype html>\x0a<\
+html lang=\x22en\x22>\x0a\
+<meta charset=\x22u\
+tf-8\x22>\x0a<head>\x0a \
+<link rel=\x22style\
+sheet\x22 type=\x22tex\
+t/css\x22 href=\x223rd\
+party/markdown.c\
+ss\x22>\x0a <script s\
+rc=\x223rdparty/mar\
+ked.js\x22></script\
+>\x0a <script src=\
+\x22qrc:/qtwebchann\
+el/qwebchannel.j\
+s\x22></script>\x0a</h\
+ead>\x0a<body>\x0a <d\
+iv id=\x22placehold\
+er\x22></div>\x0a <sc\
+ript>\x0a 'use str\
+ict';\x0a\x0a var pla\
+ceholder = docum\
+ent.getElementBy\
+Id('placeholder'\
+);\x0a\x0a var update\
+Text = function(\
+text) {\x0a pl\
+aceholder.innerH\
+TML = marked(tex\
+t);\x0a }\x0a\x0a new Q\
+WebChannel(qt.we\
+bChannelTranspor\
+t,\x0a function(\
+channel) {\x0a \
+ var content = c\
+hannel.objects.c\
+ontent;\x0a up\
+dateText(content\
+.text);\x0a co\
+ntent.textChange\
+d.connect(update\
+Text);\x0a }\x0a )\
+;\x0a </script>\x0a</\
+body>\x0a</html>\x0a\x0a\x0a\
+\x0a\
+\x00\x00\x06V\
+\x00\
+\x00\x17ex\x9c\xb5XKs\xdb6\x10\xbe\xfbW\xec\
+\xd8\x93\xc6\xce\x90\x0e%Q\xb2DM\x0f\x99\x1c\xda\x1c\
+\xda\xe9!\xb7\xc6\x07\x90\x04E\x8c)\x82\x05!\xcbN\
+\xc6\xff\xbd\x8b\x07)\xf0\xa1D\x89\x12\xd9z\x10\x0b\xec\
+.\xbe\xdd\xfd\x16d\xcc\xd3\xe7/\x17\x80\xaf-\x11\x1b\
+VF\x10\x00\xd9I\xbe\xd6c\x19/\xa5\x9f\x91-+\
+\x9e#\xf8\x83r\x9cA<\xf8\x87\x14D\xb2\x92{P\
+S\xc1235\xe1\x05\x17\x11\x5c\x85\xfae\xc6\x0aV\
+R?\xa7l\x93\xcb\x08&kk\xe6\xc9\xdf\xb3T\xe6\
+\x11\xac\x16A\xf5dF+\x92\xa6\xac\xdcD0\xd3C\
+/\x17\xf9\xc4\x83|\x8a\xef\x19\xbeC\xf8\xd2\xb11\xd1\
+/\xc7\xc5\xbd\xb5\x11\x06\xc1p1\xbe\xe7\x1eT\xe0n\
+\xd3\x8f\xb9\x94|\x1b\xc14\x1c\xb8`U\xd8\xf9Z\x7f\
+\xcd>S\xd4\xbe\xb4\xbeM\x87\xb2\xd9\xa2\xd1\xf3\xf6\x0d\
+|\xcc)\x18\x03\xd6\x1c\xb0\x1a\xea-)\x8a[\xf8 \
+_\xd7\x90\xd2\x9amJ\x9a\x82\xe4\x10S\xd8\xd5\xf8s\
+\xcfd\x0e\x1bA\x9eaK%\x01I\x9f\xa4\xd6\x07o\
+pJ\xc1\xf7@\xa0\xe2\xb5\x04\xc9dAo\xe1\xcd\xdb\
+N\xd4\xd4>0t\x0b\xeb\xe1l\xe8\xa1\xd9)\xca\xc2\
+\x11\xd9\xc4\xca\xe6C\xd9\xc4\xee\x9a\xf4\x82\x10\x04\xabU\
+\x96\xad\xbb\xb93\x84R]?R!YB\x0a\x9f\x14\
+\xb8\xed\x08bRS\x95\x1bZm\x94s\x94[\xe5j\
+\xd7~J\x13.0\xc38N-\xb9\x9a\xe6\xda\xcd\xb2\
+\xc5\xc2\x84\x99D\x8f\xacf\x12\xb1\xebxV\xedDU\
+h\xdd\xbb\xc2\x03^Xi\xdf)\xc7\xe7\x97\x8b\x82\xd9\
+Y\x9d\x94m C\xa9R\xa5\xbf\xbaiT\xd0\xcc\x99\
+Wy\xd01\xe9\xa2\xd8\xe6\xc7\x88\x85^]\xccC[\
+\x04\x95\xa0\x03\xe71\xcc\xa3\x8b\x96A[L\xfb\x1cA\
+\xf1\xeb\x8a$h\x18u\xf8{A*\xa5/\xe1)u\
+]k*\xfb=/k^\x90\xda\x83\xbfxI\x12,\
+\xecweJ\x0a\xaa.\xf1b\x8b\x9fZ\xdbXU\xdf\
+\xce\xd7\x83\xbd\xcel\xc6\xd4\xac\xb5\x97\xb2\xba*\x08\xda\
+\x8a\x0b\x9e<\xd8%\x05'\xa8B(M\xd6s\xb3\x97\
+\xd9\xca\x02\xa0'\xff\xb7\xe3\xb2Q\x13s\x91Ra`\
+\xbf\x9d\xd3-\xa0\xdf,\x85+Ji?\xf5`J\xb7\
+\xebA\xac\x82\x01p\xe1\xddb`\x0c\x12&\xe9 \x88\
+\x93p,\x86\xd3\x16w\x93\x7fWq\xa6\xfez\x1a\x95\
+\xc2(\xa6\x19oC\x9a\xa0^Z\xe2\xfe_\x7f\x9a\x06\
+\x93\x10>\x05\xc1\xbb\xe0\xb5Z\xe6\xae\xabzU\xb7X\
+,\x86;X4\xa4\xd9\x94Q7\x91\xda\xc2\xb2\xe5\xa7\
+\x80\xe8\xd5\x80\xe6|\xfc\x0a\xba\xb5\xb6Z\xad\xb4C\xc8\
+i\xefU\xee\x18\x22\x929\xd2\x99\x82@\xd1Z\xc2\xab\
+g\x1dA\xf8\x88\x0c&\xb1\x92?\x94\x89\xa6\xa7\x8bx\
+\x87\x14Xz\x17\xac\xacv\xd2\xbb\xc0\x9a\xa7\x09~+\
+W\x88\xa0\x86O\xdc\xb4\x09\x82W\xca|\x87L\x8eS\
+\x07\x12c_\xb8eij*\xdf\x9a\x06mZ\x1b\xea\
+dm\xc9\x05\xb2\xb1\xd6\xa1\xc8\x07\x13q\x1f\x81\x22\x93\
+\xd8]\x1eE\xfe\x96\x7f\xf63\x9e\xecj\x9f\x95%\x15\
+V\xe1P\xa0M\x98\xe4\xb4\x8ew\xdbI\x07\x8a\x7f\xe5\
+sE\x7f\xbf4c\x97\xf7\xddQAk*\xfb\x83\xf5\
+.\xde2\x1c\xd5f\x92\x9d\xa85\xcfq\x86\x19$\x94\
+1l\x80\xf1\x03\xc3\x00W\x15%\x82\x94\xaa\xf0\x8dz\
+e\xdc\xd1\x94\xe44y\x88\xf9\xd3\xbd\xdd\x89\x19\x15$\
+e\xfc\x88\xf2\x17\x15|\x05\x92P\xc5\x9c\xd2\x8c\xec\x0a\
+\x09I.\xf8\x96\xc2o\x901\x81I\xfd\x84'\x01\x89\
+G\x82M\xad\x02o0*\xb9\xbc\xb6\xee\xb3-\xd9\xd0\
+\xcb\xfb\x1b\x0f:\xb1o\xbcF\x7fT\x0ah\xb4lU\
+\xa81\xbd1\x85\xf3W\xe4GE\x98\xb4\x1d\x00\x11\x96\
+$\xb7\x00\x8e\xa1\xa5\x1c\xcb\x18-\xd2\xf5/wl\xcc\
+/\xcc(k\xd3\x8c8=\xf0\xa8\xcb\xa65bw\x22\
+X\x96'TY\xc3\xf6\x97\x7f\xd2\xe2\x91\xaa\xc2\x81\xbf\
+\xe9\x8e^z\xd0\x0e \xf1\x0bF\xb0\x85\xd5\xa4\xac\xfd\
+\xf6t7\xe0\xf6\xde\xb1\xebPNG\xaa\xacw\xe8j\
+\x8e\x14g%\xe6@k\xd0S\xa9\x10\xe8\xd6QE\xea\
+z\x8fEz\x7f\x80\xa7\x01L\xdbh\x9b\x14+\xf5F\
+\xda^e\xf9t:\xb1|\xda\x16w\xe8\xa0\xf1\xfd\x00\
+\x19\x1c\x00\xfa\xd7\x0d\xfd.\x03\xf5\xb7v\xa8\x05\xcfi\
+M\xcbK\x92\xa4\x9b\xab\xba3*\xc4v5\xb6\xd0\xca\
+M\xd31\xd1\xd8\xe8K\x93>n\x102VP\x13\x83\
+\xf6\xd4rgTt\x8f2wFC'\xf1\x1a\xa1\xb9\
+\xa50\x9dd#\xe83p\xa4e\xc4:\xa19/\xd0\
+\x0d\xcd\x1b\x86U\x9dQ\x13x\x0b\xc6\xa1\xad\x1e\x8aE\
+{y\xc2\x8a\x93\xd3b\xb4z\x1ak\x12\x0b\x0f\xcf\x9b\
+\xfa\x5cj\xd0\xd3\x08\x10\x01\xc1\xed\x14\x0fO\xba\xe6s\
+\x92b\x8bt\xc6\xdb0\xfc\xf8\xf23\x0c\xbbL\xa6g\
+\xa8\xe4F\xb2\xc6^\xafr\x09\xa3\x0eb\x13\x93\xeb\xc0\
+\x03\xfb\x7f;\xb9\xe9\x12\xdcw-\xfb\xde\x15\xc3\x8a\x8d\
+t[\xedd`\x1b\xa0F\xd6\x84\xc7\x5c\xeb aB\
+\xa9\xbd\x1f\xee\x18l~\xdbd\xd0\xb6\x97xO8Y\
+,=\x98\xce\x16\xca\x81\xe5\xcd\x8fc\xe4\xa9\xd3\x12,\
+\x1bY_\xf5\xe2GA<I\xefOWi*\xd3\x1c\
+\x19t-\x9a\x9f_gE\x97\x05a\xe2R\xe1Om\
+5\xa3\x94y\x84\xf6\xc2\xe3\xb4\x17\x8e\xd2^\xd8W7\
+\x0el`\xa0\x9b\xce\xe7\x08[\xfb\x81U\xa6\xc1U3\
+\xa6#\xd0\x07\xf3og\xc1Y\x9a\x7f\x8dR\x92<l\
+\x04\xdf\x95\xa9\x7f\xb8\xd7_\x84I\xda\x13\x0a\x8ag\x11\
+u\xff\xa6\xbf\xfd\xa7\x9eX\x1f\xfa\x22\xf0\x1fr\xb9-\
+\xfc\x8d\x02\x1c\x0fA\xd7\x86\xa0<}\x13\x02\x92W\xf6\
+\x97i\xe2\x1edx\xae\xbc\xbe\x0a\xc2U\x92\xc6\xea\xbc\
+\xc8\xaf\xad\xf1\x9b\xbeo\x8d~\x05\xaeQz0\xa2\xf5\
+Z-^\xe3\xfeQ\x05\xf5y\xebm\xea\x9c\xbaC\x8d\
+\xa9_\xa3\xe0:x\xd5Z\xb9\xe9\x08\xd4\xad\xd0\xc1\xee\
+7\x0c\x9f\xe5<?k\xf9\xe9k\x0fOot\x99\xeb\
+\xdb\xd1&s\x03\xf0\x9d\xa4u\x12r\xdad\xf9\xe0\xf0\
+\x13\x04a\xbc\x22N=\x1bt\x9d\x84\x9de\xcb\x89[\
+\xd9n\x0fER\xac\x9bNI\x8ab\xb4C\x8f\xcc\xf9\
+\x86\xb8\xdbp\xec\xe6\xdd\xef\xc6\xa5\x91\xce\xd4\xe1\xebS\
+\x8644\xed\x8d\xea\xe1\x11Z\x0fg'd\x15o}\
+G\xbc\xe7\x86\xf7\x8e<ok\x15\x93D\xb2G:\xbc\
+[\xebq\x8e\xea;wc\xbdg~\x16?\x9e\xa7\xf6\
+gk<\xfeX@\xe3\xd3}\xbe\xe8<\x0bx\xb9\xf8\
+\x1f\xcb!7\x81\
+\x00\x00&L\
+\x00\
+\x00\x91Dx\x9c\xed=ks\xdbF\x92\xdf\xf5+F\
+r\xd6\x00\xf8\x94\xe4\xacoC=\x98\xac\xb3\xb7\x9b+\
+g\xedJ\xbcUwGP2HB$l\x10\xe0\x02\
+\xa0%\x9d \xff\xf6\xeb\xeey\xe3AIvruU\
+w\xde\x8dM\xce\xf4\xf4\xf4\xf4\xf4\xf4\xf4\xf4t\x0f\x87\
+\x9d\xce\x1e\xeb\xb0u\x90}\x0c\x17\xac\xcf\x02\xfa\xb8H\
+\xaf\x13\xb6\x09\xb2<\xcc\xb0\xf6U\xba\xb9\xcd\xa2\xe5\xaa\
+`\xee\xdcc\xc7\x87GG}\xf8\xeb\xdb\x1e{\xb5\xca\
+\xa2\xbcH7\xab0c\xff\x16^]e\xe1\xed\x80\xb9\
+?\xff\xf4\x8e\xbd\x8e\xe6a\x92\x87\x0b\x0f\xdb\xaf\x8ab\
+\x93\x8f\x86\xc3eT\xac\xb6\xb3\xc1<]\x0fy\x87\x1f\
+r\xf1\x01\xa0\x86{{'\xee\xd56\x99\x17Q\x9a\xb8\
+Y\x9a\x16\x1e\xbb\xdbs\xb6y\xc8\xf2\x22\x8b\xe6\x85s\
+\xb2\xb77\xe4\xe4\xfe9N\xe7\x1f\xfb\xaf\xc3Oa\xcc\
+\xfe\x9a\x05k@\xc21|\x0a26\xc3Jv\x06\x8d\
+\x19K\xc2\xeb8J\xc2\x11\x1b^\xf8Iw\xd8\x83\xa2\
+y\xba\xa0\xef.\xbb\xfb\xf6~\x02\xc5\xd3\xae\x9ft<\
+^y\x15&\xf30\x1f\xb1$M7\xf8}\x95!(\
+\xbb;\xec\xbd\xb8w\xdd\xf1\xa8\xcf:\xde\xdd\x8b\xde}\
+\x09\x9f/\x8d\xcf~G|\xf1\xf0K\xd2-\xbf\xf1\x08\
+\xdf*\x0c\x16Q\xb2$$\x1d\xf7\xd9\xddQ\xef\xe5\xbd\
+\x07\x9fx\xbfc\xfc8\x1e=\xebB\xe3\xb1\xdd0\xd9\
+\x14\xc1,\x0e5%4\xaa\x7fn\xd3B\x12\x8f$\x9d\
+\xb3\xb1\x0b\xd3\x14,\xb3`\xb3*\x09i\x87S\x00x\
+\xc4\x90b\x98!\xde\x04\xaaf\xdb8\xf6\xd8\xc4\xcf\xfd\
+_\xa1{\x80\x5ce\xe5\x22\xbc*\xfd\xe4\xee\xb8w\xef\
+\x8e\xf7\x194\xdf\xf7\x8f\x10\x8ey\xc0\x97\xd2\xcf;r\
+,\xc5:\x1e1Grc<r\xd8p\xc8\xd2\x0d\xce\
+W\x10\xb3(Y\x84I\x11\xe07\x00f\xac\xcb\x9cS\
+7\x9fg\xd1\xa6(7YX\xe6\xc5m\x1cz\x13\xdf\
+\xcf\xcf\xa7\xf8\xb7\x0f$t\x90\x84\xd3\xa1\xef\x1f\x9d\x03\
+\xf1H\xbd\xcfy@\xa8\xdd#Ob*Af\xd6\x80\
+^@\xb9\x16\xd8\xb1\x06;\xf5\xfd\xb1F\x0e_\xce\x01\
+\xb2\xc3\xc1^\x18`\xfb\x93\x1f\xfa\xffi\x90a\x80}\
+k\x82\xf9\xfe\xe4\xd5\x8f?\xbc\xfb\x01\xfe5\xd1N\xe1\
+\xffF\x93?\x1aM\x86c\xb7\x08\x968\x09\xac[\x02\
+H9\x1c\x9f{\xd6x}\xcelE\xfeK\xa350\
+\xbf\xc62w\x12\xf4\xff\x0bi\xbd\xee\xf3\xd9\x0d\x0aX\
+\x0f\xb3m\x11z\x9d1H\xfd\xf8\xdc\x1d\x9f\xf9\xfe\x0a\
+y\xb7\xbb\xa7\x7f\xf1`\xba\xc2\x84\x01\x81\x06\xc1M}\
+\x9a]\x02\xc6\xceS\xba\x98\xc7i\x0e2o\xf6\xe29\
+(@ hz5\xf9\x137\x0efa\xec\xf9\xd3\x11\
+\xeb\xf8\x09\x8c\xe4t\x8c\xeb\x02\xc4\xa3\xeb\x9d#n\xe2\
+!\xd5\x94\x08\x81\xf2[D\x05P\xe7\x8di\xdd\x18\xcb\
+\xa5\xb2Xbc\xdd\x89\xb5\xe6!\x02\xf7\xac\xec{H\
+o\xb5\xbdZDF\x0b\x82\x00\xe6\xc0\x12\x11\xe8J\x89\
+\xb7\x14\xcb\x0f\xe4m\x88\x94\x1a3\x9e\x94>\xce8N\
+\xe5\xa8\xca\xd6r\xbf\xdf\xf7<AOGP\x1e\xde\xd0\
+\xf2\xe4\xa5\xc3\xbd{\xd0r\xb4\xd6\x07\x97\xc4\x1fPd\
+8C0\x07\xfe\x94\x96\xb6?\x81\xffM\xa7\xb8\xda\xf1\
+_X\xe5'\xb2\x01q\x877\x18\x1d\x10\xec\xc1\x18\xe0\
+\x0e@Z\xbd\xceA\xe9L.\x1cZ=80\xfe\x19\
+\xc8\x00\x06;\xa5\x0fcv=\x98k\xcfS\xe8`\xba\
+\x00W\xb8\x88\x0aW\x15\xa0\xa8\x0e\xb2p\x13\x07\xf3\xd0\
+u\x88@\xa7\xc7Lzm\x08\xa2HC\xf0\xe9C\x88\
+eX\xfc\x12.\xc3\x1b\xd7S\xe3E\x9d\x13\x16\x82\xfc\
+I\xa7\xdb\x9f\x96\xfe\xa2\xeb\x0f4EQ\x11\xae\xb1\xde\
+\xd2e\x17jH\x86\xe6\x12\xaa\xb0Smj\x8c\x06K\
+z\xccY\xae\x1d\x8b\xe4!\x22\x18.%\xc9\x9c\xa86\
+\x92Q\xb7\xdaX\xb1\xe4\x91\xf8\x14\x93V\x19p\xc8A\
+\x95F\xab\xecH\xc8~\xeb^co6\x5c\x8a={\
+\x14\x0e\xcc\x95\x81\xd4\x81E\xa8\xe6p\x90\xa7\xdbl\x1e\
+\xf2u\xd96\xb2K\x10i\x18\x99\x13,\x16Y\x98\xe7\
+e\x90\x15\xd1\x1c$8\xc8\xa3EX\xce\x82\x9c\xffu\
+\x95&E\xa9\xb7\xa6r\x96.n\xcby@{\x82\xb3\
+'T7\xe8\xed0\x03\x0d\x1e\xe3\x7f\xcb,\xddn\xca\
+\xc5\x02\xb6\x9d\x22\x88\xe2\xbc\x5cDA\x9c.\xe1\x1f\xd8\
+\x89\xa2O\xe5\x22.\x17Ey\x15\x85\xf1\x22\x0f\xf1\xc3\
+\xb2\x82\x0eJ\xb6\xb0\xa0\xae\xc0@\x00\xacWi\xb6.\
+\xaf\xc0\x04\x08\xf9\xdf\xd8f59\xea\xbf\x9c\xd2\xa2\xa5\
+\xbf\x00\x0c\xd70l_eD@\x12U\x0c\x83N\x16\
+e\x1c\xc1\xff\x93\x8f\xe5:\x88\x92\x12v\x99-\xfd\x85\
+\xf2\x01\x1f\x8a\xa0L\x82Oe\x92r\xf4%\x8c\x02\xb6\
+<>\x8a\xd4\x22lS\xa2\x16Y\x97yH&L\xc9\
+\xd9\x5c\xe6[4OnKRQeA\x1c*\x16e\
+\x81\x03(\x8b\x15\xfc\x1f\xe9\xa4\x95Q\x16\x99DVd\
+\xc1\xfcc\xb9\x8d\x1d\xb5\xb8\xc5\x0e\x88\xf2\x7f\x0az\x04\
+\x84\xbdO;KN\xaa\xb8\xdf?W\xb2\x8e#\xb5\xa5\
+\x12K@\x1a\xa2\x8a\x90\x08\x94z}\x8a\x82\xca\x1a\x0e\
+\x96\xc6\x0a\x06Mg\xd5\xaa\xcd\x08`\x86\xac\x8b\x1b\x07\
+l\xad\xa3K\xd8=\xae\x07\xa3>-M\xd69c\x9d\
+\x03TD\xb0(\x0fJ\xfa*\x95\x91\xc3\xbf\xa2\xe2?\
+p\xceN\xcf\xdf\x83N\x1a\x0f\xdb\xc4R\xe9i{|\
+\xaa\xb8aa\x09\x0ed\x95*\xae\xc8u=\xff^\xd1\
+oU\xa8\xb8\x11\xac\xc6 \xdc\x09\xd1zf\xf3 a\
+\xb3\x10L#\x10\xd5l\xbb)\xc0\xc4\x9e\xdd\xb2\xe2v\
+\x13\xe2\xb6O\x16\x15o\x97\xb7\xe9D\xb5\xb4\xec\x01\xeb\
+r\x9b\x14\xc5\x08E\x90\xcd\x1a\xab\x0baL\xff\x1d\x96\
+\x10\xd8odS\xdb\xd64\xc7\x90\xf0\xfa3\xb6\x0e\xb3\
+e\xe8\xde\xdd\x0b\xd4\x06\x8a\xbf\xfe\xeb\xcf\xed\xed\x97W\
+\xebzc\x81\xb5GV\xba\xb4\xba\xc9H~Oz\xee\
+3\xe9\xb7\x09\xf3\x07h\xed\xfd\xda\xc5-\x1f4\xbc\x14\
+w\x8f\xcc\x02\xffh\xe7>\xbe\xc3\x02\xef\x1a\x16\xf8\xb3\
+\x8e\x89e\xef^s\x1f(\x7f\xa2\xc4\xc1\xaaD\xb5\x8b\
+\xff\x08\xdbGc\xe2\xa3\x14\xdaW7\x01\x85\xcf5\xf5\
+\xb1\xe3\xd1\xd2\xb7[\xe2\x86\xd2\xde\xe6\x85l\xd3:\xbb\
+85]\xf6\x0e\x95O\xde>G\x05\xaf\xafO\x13\x10\
+\xce\xe7H\x1dH\x88\x8f\x93\x0b\xb0t\xd8t\xd0\xf1\xcb\
+A\x87\x9bV\x93\xfeh\x0a\x07\x19\xbf\x9c\xf4K6\x92\
+\xe7\x10<4\x0d`u\x9fspu6\xe9\xd0\xe1\xc2\
+\xb6\xde\x10\xb3_\xba\x03n\xab\xf9\xe5\x18\xb6y\xc2Z\
+\xc3\xc8va\xe43(\x86\xff6\x5c\x04\x09l]l\
+Y\x1f\xf4F\xd6\xed\x96N~\xee\xa1\xb9\xa7\x99q.\
+H^\xa4>\xee\xf0M\xb8\xf4\xe9\xa4$'\x0fmy\
+T\x05\xd2X\xee\x8e\xf91G\x82\x93\xd1,\x9a\xa0\xba\
+@\xa3\x19\xb4\x83e\x99\xc3\x174\xe4@o\xa2\xd6\xf4\
+Ac\xfa\x0e\x98h\x0e\xb6\xc3\xcf\x07C8\x83\xe4h\
+\xe6\x8c\xc1\xe4l\xc0\xcc\xb7\xf7\xc7j|\xd3h\x81\xae\
+\xd1fAA\xc6\x83\x1e\xd5\x12UA\x09\xbb\x22\x9c\xc7\
+S0\x82s`Q\x5c\xe6\xe5\x1c\xb6\xca\xf2\x9f\xe5\xe2\
+*)\x83\xd9\x0c\xb6\xf1\x006\xcd\x22\x82-\x19\xcf\xda\
+%\x9c\xc9\xcb<Xo\xca\x8f\xb3\x05\xec\x863\x03\x1b\
+|\xdd\x94Q9+a\xcb\x0d\xb2\x8fe\xb6\x9d\xdd\x96\
+YQf\x9br\xb6\x80\xf2EZ\xe6\x9b )\x01\xe9\
+5\xfc\x17%`.\x84\xb0\x8b\xaf\x97\x9e\x81\xc5\xf7g\
+\x1e\x1cU\xc0\xd0\xd9\x1f\xa1Y\xec_\xc3\xf0\xbf\x9fv\
+\xbe\x87\xd2\x99d\x81^\x1b\xe6Q\xa4\x03\xc7\x10h1\
+\xc5\xf3\x01\x9eC\xaaG\x10T\x14\x07\xee\x94+\x8b\xc9\
+\x817\xad\x9c=,Y\xe3\xab\xebux\x13\x0a1\x93\
+\xde\x0c^\xe6rs!\xf7H\xaa\x8aU\x94\x0f\x8a\xf4\
+c\x98\xe0\xb2\x9bLO\xec\xb2\x01Z$Xsw\xaf\
+jD{(\x94\x9f\xcaRxn\xd0\xae\x0b\xb6q\x91\
++\xe0l\xcb\x17\xb4)\xcf@*c\xd1\x15sMt\
+j\x19p\xba\x1a\x9bK\x10\xc4~\xcf\xc28\x0f\xebh\
+@SH\x0c\xb5:\xae^duc\x17\x1c\xe4\x84\x00\
+D\x17;\xa0\xa13\x01\x8a\x14\xed\xdd\xab9\xf8\xcb\xcd\
+\x06\x16\x92\x98\x8a_\xb0\x0d\x9f\x0a\x9a\x01\x1b\x89\x9e\xb8\
+_\xd1m1\xc7Yb?\x87\xc5*]\x98mb(\
+=c\xca1\x95g\xf3\x1e\xb3f\x12}N1\x82\x02\
+X\x12^W&\x1b\xc9\xcc\xc2b\x9b%\x1c\x08\xf1!\
+\x12\xa8\xb87\xd4\x14\xac\xbc,\x85\xed\x01O\xcef\xef\
+PZ\xa4h04\xd0\xc1\xbb\x87\x0fP\x0e\x7fW\x96\
+\xb0\x9f\xa1R\xcah\x19\xfbIU\x13\x0c\xfd\x82jH\
+\xa1\xd5\xea\xb6\x87\x87\xc1!\xafo\xa8<\xfe\xf6\xf8[\
+\x85\x96dJ\x0cP\xcb/gS\x91mC{\x9c0\
+\xa8\xd6\x01R\xc3\x1a\xab\x8btS\x19\xa7&\xe5\x82u\
+\xbf\x19.\xf1\x14\xe7\x10\x9fq&\x128O\xf7\x84\xe0\
+\xc4)\xc8\x82\xfc\x02\xc7\x08\xf9\x11\x0fa\xea\xb3\xfc@\
+\xe7A\xf1\x19\x94\xce\x5c5\x8c\xe4\x07P\x8a\x0a\xb3\xaa\
+\xcc\xd3\x0c\x0e\x18\xe1B\x17\x14A\xfeQ\x7f\x9b\xaf\xc2\
+9,Pb\xd3\xf5*\x82\xf3\xb9\x9e:\x86\x9a_\xb8\
+(\xd5\xc2\x01:a\x9cZ\xe6\x07\x02`\x00\xec\x9aS\
+[\xbd\x8e4O@\xaf\xa2\x974Yb\xfb\xc9\xe1\x14\
+\xc4%Y\x16+\xefD\x12\xc21\xeb\x1av\xce\x8e4\
+\x22[\xf7l\xb6\xf9\xca\xd5U\x8c,\xd6\x11s\x88-\
+\x8e*\xbfW\xd8\xef\xc5Z\x94cB\xbd\xdf> \xac\
+\xfd\xba\xd1p\x94\xa2\xce\x10\x87\xbbo\xefMyx`\
+\x5cbTH\x8e\xd3\xd3\xa5\xe4\x90\xd9oT\x91\x06K\
+\xc6\xd8\xbd\xb1*\x12\x10E\xea\xd8\x80\x19!\x8cd\x91\
+&\x1e\xce\xccQ\xb2\x0dO*L\xe3\xf6!sQ\x91\
+\xb63OX\x91_\xc5\xbe'\xf3$\x0e\xd0\x82Fd\
+\xc7\xd3*\xa7\xb0\xf4\xc5\x14\xb7\x22\xc7y\xf4X\x85U\
+\xde>L\x01\xf0{\x8fS\x1d\xf0T\xc5\x22\xdc\x14+\
+>\xaa#\x89\xb0i\xc8\xc7\xd3G\x0f\x96\xb66\x96\xa4\
+\xb0\x01Pol\x13\xe1\x01\xd0\x9agPs\xec\xf9\xf3\
+\xa6\xd5\xcf\xedn\x83\x11\x9a\x13\xc2\xa9U\x1b\x15\xb50\
+\xc6\xc4\x9d #PkqT\xbc\x0a\xe38w\xc5\xf8\
+\x8c\xb5CNV\xf8\xef\x1bR\xed\x8e\xe7\xe9\xf6A\x1c\
+-\x139l\xbb\x8d\xd9b@\xf8\xdd!\xc734\x10\
+\xcc\xb1O%*c\xf1\xc1\x5c=b\xf1\x08\x14\xb4\xb3\
+\xc0\xf2\x99(&\x9f\xec\x19\x8a\x0c\xc7=\xe0\x83\x92\xda\
+\xec\xec\xec\x8c\xd81 Z\xa5 \x18\xacy\x8c\xd4(\
+\xe0\xab4\x83^\x00\xfe\xf0\x84E\xec\xb4\x8e\x19\x8a\xbb\
+]\x13='\x0cY\xd2\xef\x8e\x90%\x83\x22\xcc\x0bW\
+7\x9cDS\xcfn\xc0\x98U\x8b\xde6\xbadsN\
+\x0c \xc3\xdaB\xe4\xa3\xaf\xc1\xce\x1dq\x0f\xa0\xffb\
+\xecqx\xd5H\xfa\xeef\x09l\xc5V#\xbd\xbb<\
+0\x1d$S;\xa6C\xc1\xf0\x8e\x0c\xd9\xb7\xaaz\xac\
+.M\xdeI\x13\x155m\x82\x0dM\xa9\xb1\xd7\x7f}\
+W\x5ce;\xf4]\xf6\xbb\xab\xba\xec\xf1\xeaY\xbb\x97\
+\xda)\xd60_J\xf9\xa3I\xd7]]\x82u\x95\x15\
+\xe6@\x1e\xb0\x08:\xe7l\xacM\x02\x01\x0c#|\x1b\
+\xe49{\x0fZ\xf7=X\x98\xecc\x18n\x80\x8e\x90\
+\xcd\xb7Y\x06\xabD\xc3\x1d\x00H\x8c\xf7\xcc\x07\x0c\xba\
+\x86\xb1\xb2w@.\xd8u,\xbc\x09\xe6E|\xabA\
+W\xe9\xb5\xba<\x1flbv\x9df\x1f\xf3Am\x90\
+\xc8\x06n\xd6~\x19\x07\xc2d\xd14\xfe\x96\x99D\xf7\
+Q\xfb\x1c\x92s\xe9\xab\xe4\x8e\xae[\xce\xc4\xd6\xa0\x8c\
+Mi\x14\xe3Q\x0b\x00\x0c\x93\xf3\x09cF\xe2\xc4|\
+\xeb\x9dD \x1e\xd5\x0do\xc6\x08\xd6\xa8\x81\x8d\xa6K\
+\xf4\x8dl\xd3DO\xd9_\xc3\x82\x85\xc1|\x85\xd3\xd1\
+\xa7i\xe6\xda\xa0I\xa8\xd6A1_\xb9\x06\xf3\xec\xe5\
+\x8f\xe7\x0e<\xbc\x04\xa0\xf3$\x1f\x04g\xa4\x92\x92\xdc\
+!E&\xdb\x91n\xe3j-\xae\xa91\xb1\xc1#\x05\
+\xd1\xd4\xd04@\xfa/\xe1:\xfd\x14\x92\xd0\xd2-\x14\
+\x82:9\xe3\xf7K&`\x9eB\x1d\x0al\x1e\xc2\xf1\
+*\xc8\xa9\x09QK\xdc\x1fh\xf6\xa1u\xcf\xc46j\
+\x93\xac(\xa1:sy\xb9\xe6E\x1d\xeb\x0e\xed\x85F\
+\x04\xbc\xd9\x16\x18\x19\x00\xa7\x1fX?\x9f\xe0\x98\x0c\x04\
+\x98\xf5\x8a|\x12\xe2 \x02\x81`\x7f\x0b\xe6\x1fo5\
+i(\xbc\x9f\xa9o\x8c2\xb8ys\x85\x16\x02\x1cM\
+m\x95\xcf\x07\xd0o\x19\x81\x1a\xc3\x83\xa6=\x1a\xf7\xd6\
+@\xf1T\xffK\xb8\xfc\xcb\xcd\xc6\xc5\xf0\x87\xa3\x1e\xde\
+\xa7\xf1\xde\xba\xcc\xb9w\xc45b\xd5\xfc\xc7\x03@\x95\
+a\xd0\xb8~F\xb1\xb6\x19\xe0\xc8\x8f!\xec\xd3k8\
+\xf3\x01\xcf\xc2b\xc5Y\xc6\xe7L3k\x16\xc6i\xb2\
+\xcc\xc1\xb8\xcb\xc2\x81\xd9\xfa\xcf\xc0;\x1cU\x8cl\x83\
+\xa9_\xa4p\xaaH\xd2B\xb4`\x11?\xa8\x13*\x9b\
+\xc5\x16cr\xd0e\xc5k\x80\xc9\xd10\x8d\xd8>X\
+X1\xeb\xdb\xa7FP\x00\xca'\xc3E\x8f\xab\x13\x92\
+X`\xce\xd1\xd4\x83\xb5cM\x02\xf4C\x8b\x12\xf1\xcd\
+\x10\xf5\xbe[\xd1\x11X83\x8f\xa9U\xdb\x83\xab'\
+\x5cYy\x1c\x01_\xa9'o\xf0!\x8d\x12a:v\
+\x11\xe6\xc4j\x84\xcb\x8e\xe8\x7f\xd0\xdch\x9c\x01\xe29\
+r\x0d}\x0a\xa0\x86\x90\xa3\x16\xdb\xff\x91\xa3\x0b\xdbE\
+\xc7\xb8G\x8142\xb6\x88_LS\x18\x8d\x09\x8f\x0b\
+\x7f\x11\xe5\xf3t\x9b\xe0\xd4\xac\x82OQ\x9ai\x8c\xbc\
+\x9f3>\xebp\xb8\x1aZ\x88\xb4\x85f\x08\x11\x99\xc6\
+m\xf3$\xf4\x13\xb7}VA\xf6\x830\xf0\x04\x9b\x09\
+\x1e\x8dh\xe4_u\xbe\xf6\x89\x18\xcf\xa2\xa9Mv_\
+\xa1\xbf\x83\x06\x87~\x10-\xaf\xb9&\x93<$t\x8f\
+\xefO&\xec\xe6\xdf\xa7\xfe\x94\xb5\x8cH\xbaO\x00z\
+\x0b+\xff\x0afdQ\x190a\xab\xd8~F3\xc4\
+\x08'\x1db\x8b\xc3\x9c\x06}PY\xa2\x9a&\xa5\xcd\
+\x1aF\xfa\x08w\x09q\xab\xa2V\x1c*\xbc\xc4.m\
+S\x86\xff\x91\xbb\x9eQ\xdf3\xf1\xc2HG\x15\x0f\x13\
+\xfe\x11\xa3\x1d\xe9\x81k\x92\xbd\xea\xb6\x01&Nn(\
+\x0c\xc30\xe1\x11\x11\xb4\x83\x99\xad\x1e\xe3\x19\xd2T\x1b\
+\xe6\x89\xed!z\xda\xbe\xff4+\x07\xafhv\xd8\xd6\
+P\xfb;[\xd7\xb6\xe6\x0c\x92\xa8\x88\xfe\xcb\x9c{\x98\
+y}5k\x94\xa3]\x0e\xd4\x19\xb3\xbc\xc9\xc2\xaa\xf7\
+I\xe2\xcb\x8c\x86\xc2W\x80\x92M\xab\x16\x9a9\xa8&\
+\xcc2\x1e~T/\xc6P$\xc7krj\x1c>\xde\
+\xa9\x01\x8bQq\xbc\xd5y\x81\xd1&M\x8e\x8b\xa7\xfb\
+-_L=\xe9>8\x93\xee\x03\xdd\xf6\xa8'\xcb\x0c\
+u\xa6&\x8f\x22Y\x84\xc3\xa3H_\xa7\xd7a\xf6*\
+\xc8C\xd73\x1c\x10yW\xba\xbb\xcd\x9e\xf7k72\
+\x13\xc06m\xf3\x9bj\x08\xcb+\x83a\xa4x\xdfT\
+\xf5\x9fAc\x8c\xfa\x90~\x11\xbdj\xec\x03\xe4C\x8e\
+\xa5G:\x92\xfe\x0f\xb8\x91\xe8f\x18\x1by\xe3\xff\xf7\
+(\xfd\xbfGI4j\xda\xbe\x7fc\x8fR\x9d \x09\
+g\x899\x8afey\xf4\xeaM\xff'\x5cQ\xf1\x83\
+\x0e\xf8\xf8\x7f\x83\x07\xfeXlYg\x0e\xac\xf6#X\
+\xbe\xc7M\xbb\xd6\xd1\x13\x5c\xf1\xea\x9c\xaf\xb6\xe3\x875\
+\xa7\x02\xfd\xca\xbd\xecaf\x18\xe1[\x8d\xe3\x94\x96\xbb\
+u;a\xdb\xee\x96\xd1!\xe0\xf8)\xe9\xb0\xc7\xfaG\
+\xb5\xeb\xa9'q\x0fHi\x97\x18\xacm\x92\x16h\xf8\
+N\xb1=_\xa5\xdbx\x01'\x08t\x04d\xe4{1\
+\x0f\xb0\xbf%3\x91\x9eF>>\xd6\xca\xc1Q\x1aw\
+\xb5\xd8g\x96^\xd3\x1d\xff_\xb2,\xcd\x5c\xe7\xa7\x04\
+N$\xb0\xf6\xd0\xd6\xdf\xb04a\xb3[\xcc\xcfp\xf8\
+\xf9\x93f\xebU\xba\x08a\xc6\x0e=\xcf\x0cX\xd8k\
+\xb83\xcf\xad\x9b\xf2\x9f\x12\xbc\xf4m\xcbq\x89\xa8V\
+l\xdaa\x0e\xa3\xe29.\xbe;\xd9?x\xf6\xcd\x1f\
+\x9e;\xae\xd7\xe9\xf6\xfc\xfe`8:9=;\x1f\x7f\
+\x8f\xc1\xe2\xbe\x7fq\xf9\xfe\xae\xbc\xff<\xe5qW\xc1\
+\xb6H\xd1f\xc1\xa6\x98\xab\xb1\x0a\xd7\xe1\x08\xe3_\xfc\
+\x9b\xc3\xc3\xbe\x7fstuz>\xed\x94\xe1:\x88b\
+\xef\x9c\x9al\xb3X\x87\xd9\x83\xa5\x83\x09!2\xa8\x88\
+\xc6\x87Q=\x17\xa7C\x11\x07J9\x04#\x99D@\
+\x91Ny\x18_\xf5\x1br\x04\xa0\x95\xd9\x88G\x8e\x9a\
+\xa9\x0e\x88b8>\x17Y'\x954\x86\x8bz\xe6\x07\
+\x01\xea\xa8\x0a\xe0\x19\x08\xd4\x96B\x0bz,\x1c,\x07\
+\xect\xbcYm\xd8\xf8\xdc\xc0\xb2/i\xe8b\x90\x95\
+\xce\x0fq\xb8\xcd;\x8fa\x85\x9a\x18\xf6\x7f|\xf3\xea\
+\xdd\x7f\xbc\xfd\x0b\x1dA,D\xbbRG0V\x16\x8e\
+\xcaX\xcdD\xb8\xf0\x1ef\xea\xf0\xa9\xd8\x1f\x1b\xc9\x11\
+\xbe\x8b\xc6#F\x1c\xe5]\x95\xfe\x80\xd9\x00|\x0a\xa1\
+\xae\xb9\xd9D'\x0d\x18Y\x03c\x916\x80\x19\x01\x18\
+\xf2\xc4s\x8dR\x0b\x85\xd5n\x22\xd2\x0c\xa0\xa0\xac\xa5\
+\x1et\x00\x03\x01\x01\xf4\x98P\xf1\xc80DuyI\
+\x91TS\x19\xb1I_<(\x1d\xef_z\xe5\x85\xdf\
+\xf1;M\x00T\x0e\x14t\x00F\xa2hje\x00R\
+\xc7\xe1\x9a:\xad\xa3\xbc\x84\xe6\xa25\xaf\xbd\xac\x92\xa4\
+p\xd7\x1bw\xb0\x1fI\x8e\x00\xe8\xd4(V\xf4\xba\x95\
+\x0eU\x0b\xcf\xa2Ue\xa0\xbd\x87)\xc8;\xae\xc6\xf7\
+~:\xc6\x12\xff\x08\xa0\xdfs\xe0\x99\xc8@;\xee\xdd\
+\x1b\xfe\x1f\x1e\xc3f.E\x99F\xa2R\xbb\xce@\xea\
+@\x0a'\xef;0s\xb3\xcbR\xa0\xe0Qk\xa0g\
+\xb8\x0a\x19\x5cr\xed\x81QQ\xc3'\xa8\x8f\xa5\x81\x81\
++\x0eD\xa0\x160\xff\xf7\xb0\xff]w\xd0\x9f\xde\x1d\
+\xf5^\x1c\xdd\x0fOt\x97\xa8P\x0cx\x80\x1b\xecS\
+\xb7\x9d\xee\xf0l,z\xe9O\xbb\xee\xf7\x9e\x06AQ\
+\xd3\xdf\x00\xeda\xef\xe5\xd1\xbdQ\xcfs\xe8\x06Oj\
+\xe1a\xd4\xe0\xa4\x0f\x93\xa6\xe9\x93jQF\xfcV\x8a\
+\xed\x88_>xX\xd067l \x1a\xb0\x01\xc35\
+\xea^5dWV+\xadG\x93\x927\x07\xd5\x83 \
+\x9c\xc1\x7f*<\x94\x7f\xc5\xb0z\x0c\xaa\x17_+a\
+\xf5\xba\x0f~(6\x87W\x8b\xec\x7f\x5cv\x80\x19\xff\
+_\xa3\xbf}\x88FnS\xb3\x92\x19\x97\xefq=t\
+\xde\x1b\x1a\xab36\x84\x08\xd5\x22\xe7O\xc7=\xe5*\
+\x0ev+Rp\xf9\xe99\x81\x9f\xf3t\x99\x89\xebA\
+\xb9\xefZ;\x9b\xeb\x01\x08h\xd1\xb2^\x0a\xfd\x18\xd2\
+\xa0\xb3\xaa\x9aR\xaa\xa8\xc8\xc1\x22\x87\x8a0\x95\x8a\xca\
+|\x0f\x0b9:\xdf38\xdf Yu\xa9\x92\x99U\
+\x16\xbb\xaa\xc9\x0d\x94\xe2c\xb2\xa39\xf7\xca\x1aG\xeb\
+\x8c\x88\x8d\xa4B\x99(},q;\xd2\x0b\xb8=c\
+[2\x02AC\x82\x01\xafi\x8a\xe3\xde\x81\xa71\x9e\
+\xdb\xea\x83\x07t[\x9b\xd4\xf8\xcc\xff\xd5S*\x18>\
+\xdb\x9bM\xad\xbae\xdf\xa9\xa3\xd1{@\x03\x0e\x03\x03\
+\xdf{\x89\xe9\xb5\xad\xdf\x1d`\xaa\x837\xac\x86q\xb7\
+\xce@-\xd0Y\xd9\x07\x8d\x1d\xe4*\xfe\x19\xb7\xf2/\
+\xec\xc6\x8a\x81\xc6t\x83\x1dST\xcd\x05i\x98\x1di\
+\xcd\x9ab\xc8\xcb\xb4\xbf\xce\x99zx\xe9\xf6\xb9\x84\x7f\
+\xbd\xca\x88\xc9B\x15\xa3\xc5\xa5xUlJJ@\x1f\
+{#\x7f\xe8\x0f\xcb\xeb\xebk\x7f\xe0Y[\x83\x0f{\
+\x8d?\x80\xcd\x80\x94\x07\x98\xbc\x17\xa4\xa1k\x0ci\xd5\
+\xe35\xbe_\xce\xe4-\xdc\x88\xe73^\x8c\xf7\x07\xbd\
+\xd1I\xe7\xf2\xb3\xeb=\x9fvI\x1dQ\xc2e\xf9\x1c\
+w \xbd'uO\xbe\x01\xa5\xa4\xa0=LD\xddW\
+\xd9\xdc\xb4\xe9\x0f/>\x7f\xaeK\xd5\xe7\xcfFB\xa9\
+\xa5\xd9\xa1\xa4:\x92iI\x0c\x9c\x96\xb5\x14\x01\xaa\x10\
+\x1c\x1b\x0d\x87%\xf0\x0f\xffA\xae\xf9\x83\xb2\xbac\xfb\
+z\xcb\xf6}\xbei\x7f_\xd6c\xeek2\xd2e\xaf\
+QF\xfe\x0cG\xc0\x8f\xf9.\x89\x99q\x88\x06\xa1Q\
+\xa9)h\x22\x99\xe3\x9de\x86\xa4\xa0\xd5\x83#\xea\xd4\
+\x04\xa5\xce(\xcc\xd2!f=\xd4\xdc\x1a\x8e \x9e\xc2\
+\x99\xd9s\xf6*]o\xa2\xb8\x96\x02\xc0\xa1xl8\
+\xf9\x89+Q\xe4O\x8f\xf0\x97\x19\x02\xf4\xaf*\x95!\
+\xee\xd6\xca\xd2\xb5a\x82\xa1\x11\x99<\xb9\xcb+\x06U\
+\x0e\xfd\xf1\xdbn\xfe\xdd\xf5jM\x0d\x22M\x14*\xb7\
+`_\x13\xa73\x0a*\xe7\xe6w<\xef!\xc8\xb2\xe0\
+\x16T\xd4?\xb7Q\x06D\x07\xec=5{\x8f\xa7\xb6\
+M\x98\x15\xb7\x03\xee\x8e\xbf\x7fz\xdeBeK ,\
+_\x90\xb8\xc0\xa5\xaf%q\xc1\x92Pq\xba\xdf\x91\xb9\
+\xa0\x85\xcc\xf4\x04\xd4R\x17\x848\x19\xb9\x0b\x86\xe8T\
+\x905\xa50\xc0Qw\xc8e\x10\x0f\xbdf>\x83\x89\
+'\xdd\x16\x9bmQ\x8b\xb6o\x92L\xcb\xdf\x80\x93\xb8\
+C\x94O\xb4cC\x0c\x97wT\xcfx\xa8RZ'\
+Qg\x064\x12\xab\x89K\xa9\xceQ\xbe\x1e\xa4I\xc5\
+\xec\x1b\xe9\x00h\x22\xa9r4\x86\x8c\xd4\x80\xf6\xf8|\
+\xbe\xf7\xb4\xbb\xbdx\xfd\xd7\xb9Iq\x04]yG\xf5\
+\x90\x17N\x9eC\xdaI\x92\x10\xbfM\xca\x80t\xc2~\
+\xefX\xf7^<\x9e\x80\x8f\x9e/\x9au\x90,\xe3P\
+8'=\xc3s-Lu\x07w\xcb\x22\x1d\xa1{\xac\
+0B\x08jn}\x1b\xb7\xc0WCg\xa1\xb0\x19i\
++,d\x05yQzt9\xd0\xa3\x96\x0f:;\xc1\
+\x8e\xa8\x5c\xadq\xcd\x16%\xaf\xd1Nn\xf4\x14C\x9b\
+F\x1f1g\xb0\x0d\xab-\x04\x1d2sh\x85\xcb\xfc\
+>S%\xfa\xf9-g\xc7B'i\x91\xd7\xcd`8\
+\x0c\x1c\xfb&E\xf6\x88F\x06\xd8\x16\xd5\x1e\x1b/z\
+\x1a&]O\xfb\xef0\xfd\xd2\xb9\xd8\xec\xea\x0e\x1a\xef\
+E\x9a\x84dxq\x1a\xb0a\xc4/\xc0\x04\xb3j\xf7\
+\xc7\x02\xfc\x8c2\xa6*\x8cW{\x92\x85\xd3\x1f\x06\xe7\
+\x8f\xc6j\x05%\xde?Y\xbaL\xae\xb6\xc68\x8c\x9b\
+\xeb\xcd\x98\x856\x109\x00\x03tT\x11\xaf=]a\
+y\xf0\xdb\xc3^w\xe9\xc7\xaf\xd7\x8d\xed\xb3&\xe4\xb4\
+\x12\x10\xfb\x90\xed\x82\x7f\xc4\xf1\x9b\xde\x9fq\x0e\xa6\x1d\
+\xe1^\xcc\xbb\xee\x04\xbez.&Z\x1f\x0f9\xddt\
+\xda7\xee\xfb\xb0\x03:\xa87\xad\x19\xac0\xf6\x15\xa2\
+_\xf84\xa8\xea\xc5t\xe7\xca\x93\xb0\x8e\xd3\xb0\xf0j\
+\xcaA\x00W\xef\xe8\xf9\x15\xd4\x11]AQ<nU\
+\x1c\x05\xad\xf8\xcf\x008\xbf6\xa33.N\xe59\xc7\
+;\xa7k\xfdo\x8e\x9cf\xe9$C\x01g\x85GY\
+k\xbax\x04\x86i^\x08\xbf'ge\xcf\x1e@3\
+\xa4r\xa0\x10\xdd-\xb2`\xad\xb56\xf1\x14\xa7\xf2\x9e\
+p\xbd+I\xad\x8b\xaa\x804\xa4UQ\x0a\xa6zC\
+\xbaPu\xe3\xff\x12\xe9\x16\x92(\xb7\x14\x15?\xb4;\
+`F\xb4\xd2\xe6\xff\x84H\xb1\x22n\xac\x15\xb1O-\
+\x00;}\x18\xd0D\x18Sf\x18E\x87\xea\xe6\xf3\xd0\
+\xd8iT\x18(\xd6\x1b\xc1@\xb5\xf0\xcf\xe6\xdb\xf0]\
+\xabx\x97P\xd1:\xfb\x8a\xc9\xe7\xee\xa7v\xed\xc4\xeb\
+\x7f\x13\x83\xd2\xde\x089b\xd7\x18\x14\xb5\xfeV\xcd\xf0\
+\x0b\xf5\xc9\x9a\xf5\x07\xf7\xcap\xbd\xc3<^\xff\x0e#\
+\x09\xd7\xb5Q\xbcT\x14\xffQ}\xfa\xfa\x91\xfd\xde\x89\
+\xac\x8d\xa3C\xb4\xf8\xec\x81k\xec\x81\xc7S\xa1\x15E\
+V\xf5\xc3)<;\x92\x8df_\x99l\xd4H\xf5L\
+8\x0bv\x11\xb5\x08\xab6uC\xc8\xe0W\xc6j6\
+\x12\x07Xk\x12\xf3\x98\xf9\xff\xb2\x88\x87\xaf$\x16\xd1\
+\xba\xe6\xc1\x8aB\xf1oA\x22\x8a\x5c\x19{\xff\x0bB\
+\x17\x80x~\xa4o\xd8,\xcd\xc3:\xd9\xdbD\x89\x8c\
+y\xc0\x13\xc4\x98\xfeQ;J\xcd\xc9\xa1n&\xc5~\
+\x0fV\x037\xfe\xb5\xc7D\xb8\xda\xd0\x95\xf8\xf1a\xff\
+\x81\xd4\xd1\x92,\xad\xcc\x95'\xc10\x98\x065o\x81\
+\xac\xe0_\xc6\xd2B\xd5eH\x22\x8f>\xd3C\xad\xee\
+^<\x0e]\xbc\x0e4n?\xa9p\xff\x04k\x92Y\
+j:\xaa4\x8d\xd6\xc12\xb4\xdb\xda\xc7g\xdb\xfb\xf2\
+\xab\x96(\xf6.\x0b\x92\x1c\xdfQ\xa3\xc0\x86\x06\x9f\x93\
+f\xa4!\x88\xcd\x13\xacO@V\x1a\x09o\xe2\x99\xf3\
+\x7fb\x8b\x83\xdeJ\xfa\x8b _\x85<]@\xdb\x1b\
+\xfd~\x9f?9\xb1\xc5\x97g\x85\x83\x19\xe1\x936x\
+\x0d\xfeB\x83c\xdc\x08\xba\xc50 $\xae5r/\
+\xcaI\x9f\xf70t\xfd\xc9\xdd\x01\x1a\xe0\x0e!\xfa\xe6\
+\x88\xca\xff\xa4Q\xc9\x10\x16\x81\x8a=g\xc1&\xc5-\
+vS\xa7\xc6\xd1\xc4|W'f\x91ng\x0f\x13\xc3\
+\xfbG\x8a\x0eL\x8a\xe6u\x8a\x9a\xf1\x1dh\x1a\x16\x06\
+\xff\xe28\xda\xe45`\x7fp\xf7\xe2^58~\xe9\
+\xd8\xe2\xf33yzh\xdd\xed\x94\x17\xee\x11z\xac\xa8\
+p\xe8\x9a\x944\xba\xf8\x84+\xa0\x92\xa0O\x11\x9d\xca\
+\xab\xb7\xa2\x85\xd8\x9a`7_I$\x86\xb2\x8b\x84\xae\
+C\xea~\x0e\x8a\xd5\x00\x16\xc7\x22\x85}\x97\x9d\xb3\xc3\
+\xc1\x1f\x0d\x97\x0e\xb6vnP_\xceW`\xe4\xfe*\
+\x8c\xcf\x97\x86\xb2T\xfa\xddy\xfe\x8c\x03bp\xd0\x89\
+\xa3|\xdaUE*\xd8+\xbd\xef\x95+\x04\xe5\x94\xff\
+\xd2\x8b\x03\xe8S\xe20&\x09\xcd\x0dK/\xc2\xf7\x1e\
+=\xf9 u\xc8B\xcf\x985a\xabh\xb9\x8a1\xc0\
+X\xb2EOU3\x9c\x81\xdb\xe03\xb6\xd8\xe7\x81\xbb\
+\xe8\xdd\xe0_\xcf\xc8\xf6\xd2\xfc\x16\x94T\xectA;\
+1\xd0\xda\xa2\xf8\xf9\x02\xfb\x11\x18\x04\xab\x9d\xd3M\x16\
+\x9e\x9fb\xbbs\xfd\x84\x94+\xb1\x8f9F\xed~ \
+z\xb9\xc5\xa5\xa0\x9d\xd3!\xb5?\x1d\x22\xae\xdal\x1a\
+]\xc0\x92\x0c\xf2\xfc\xec@\x86\xc6Y\x5cA\xea\xde\x82\
+\xc2\x8enD\xad\xdcP\x88\xf3\xd4\xa7\xa8p\x0e\xce%\
+\x86\xc7SZ\xa5\x93\xf2\xbaP\xc8\x1aD\xc0zfP\
+\x09\x02\x7f_\xd0\xdc\xb8\x9dS\x0d\x89\x08\xa1\x13\xde\x8a\
+:\xb3\xebZ;\x13\xcfS\xaan\xf0\xbb\xd5\x0b\x16\xb4\
+\xb7\x16ohTt\x0a\x08\x15FJ\xf6X\x16\x5c\xb7\
+I+\xc5U\xff\xb4\xc8k\x22\xb1\xd2\x92@X\xf4L\
+\xb3h!g\xaf6\x7f\x1c\x9f1\x83\x08\x01\xdd\xb7\xe5\
+\x98L.\xfc\xeb)?5\xf7\x1dC\x9a\x0e\x0cAT\
+[\xa1\x98\xbfv\xca\xceE\x9e\x1eJ<\xe8\xf1h\x99\
+\xa4Y\xc8~\xfa1\xdf\xb3\x06&\x1bR\x13\xe9h\x95\
+\xb8\xad\xca\x9dS\x96\x99\xfc\xb6m9\x93%74\xb7\
+c\xec9\x1b\x92\x80\x8c\xe8\xf3N\xe4\xe2\x11]\x85\x1e\
+_H\xed\xc9D\xef\x1e\xcf\xea\xd6&\x1a=\x9ey\xc6\
+t\x8a\xb7\x93\xc6\xd4\xcdVgQQ\x93\xa0@\xac\xae\
+\x04\x04\xc5B\xc5\xa4Z\x8e<h\xe8:\xbc\x04&\x18\
+\x8d^\xaa\xc4\xe9p\xb4\x83J1\x928\x87=w5\
+r\xc14|\xa9\x11(\xe6<5\xe0vs\x14\x07-\
+\xf2n\xda\xedd\xe74\x8e*\x93\x06\x05\xbb\xd0R\xfa\
+\xdf,\xb5^\x0a\x13)\x81\x15\xccQ\x82WjJ\xad\
+\xc8\x84I\xe0\xa7\xf8xvp\xc0\x88\xb1\x8e\xd2'\x8b\
+(\xc7\x94 \xaa\xc2\xee\xce\x0ed\x7fJ\xc3\xb9\xcd\xf2\
+\xc0\x86\x15T\xe7\x98\x8a\xd9\xbc\x1f\x99/n\xee\xe2\xcd\
+\xa6\xc2\x9a\xcdN\xce\xf0\x5c)S\xed\xd0\xf2\xed\xd1\xe4\
+i\x8d\xc1\xbf\xd1\x84\xc2\xb6}J\xcf\xf5\x9e\xdbs,\
+\xcaN,\x95O\xe8\xcfe\xfc=\xc2\xd1\xbb\xbeF\x09\
+\xefO\xab\xe6j=b5j%\xbe\xdd\x03\xc2C\x9d\
+\xb5u'\x05F\xe8\xd9\x8c*2!\xa7\xa2Z\xf4\xb0\
+{U\x12z\xccbi\xc0\xdfcWq\xb0\xcck\x8b\
+\x92J\x85^\xc4Y/V4\xeb\xc5\xc2\x91v\x1c\x0f\
+;\xe4p\x94\xb3#\xceA\xd6\x0asx\xa6\x18_\x97\
+\x06\xac\xa9,G\x95&\xe7\xe6z\xc5^*\xa3m^\
+\x98\xe8\x8d\x83\xa3\x89\xd0\x82\xf20\xd5\xc4\x0e\xee;{\
+@\x229PE,ea+\xa7\x1fT\x02\xe1\xba\x82\
+\x12\x0b\xdaU\x80\xf0\x1e=\x80\x94[@\x16Z^\xd4\
+n$<y\x13\x98\xc1&\xc0\xb7\x80Y\xb6\x03\xf1\x22\
+\x8c\x1f \x16 *\xb4R\xc9\x0e\xedj\x1f\xf5\xed3\
+\xb5u\x04i\xbc\x92R!%\xd9\xad2@Q|\xb1\
+\x07\xc0\xbb\x08\x91U\xff\xf8\xe5't@\xa4\x09\x08\x99\
+\xbbM\x84\x1dF^l\xed\xa4\xb7\xb7\xff\xd1T\xa4}\
+\xe9z\xcbX\x10F,\x9b\xe3[#`\xebi\xf3\xb7\
+r&\x92\xe7\x0b\x1c\x01\x12\xa5\xdf\xc5\xf8\x10|\x0ax\
+\xe2\xef\xc8\xe1YA\x87x\x16\xb0\x81>\xcd\x1e\x04\xc1\
+G\x5cU\xf5\x03t\xdc7\xf1\x12\x9f\x87\xffGF\x16\
+\xfd~\x9aE\xcb(\xf9\x09poB\xfa\x99\x10\xa8\xe0\
+w\x97\x9c]\x02\xbdp\xbfda\x9e\xc6\x9f\xb0q#\
+\xc6\x1e\x13\xb7_\xbcc=G\xa2y\x98\x88\xd9\xe1\xc8\
+\xf5\x0c\xfc\xe1\xf8\x8f\xc4\xfe?\x88\xa8\xa2\x1a\x9b+\x83\
+\xbb\xb7\x0f\x9f\xa7\x01\xf5\xc0\xd5\x929\xdb\xdcj8\x91\
+L\xe0\xae\xa0;\xeb\xfc\xc7e\x8f7\xe5\xfe#\xd5\x06\
+{\x91`\x15!\x0f,\xad\xa6N\x89\x0d\x02O\xee\x9f\
+/\x91\xf8\xff\xa9Y2\xf9\x18\xad\x97\xe8c\xe4\xdc \
+l\xc8\x0cP\xfa\xc2\x14\x93\x0c\xf8Mx\xda\xac\x9a\x84\
+^z4\x7fE\xcc\xc3n\x97\xa6u\x86\x7f\x07\x05\xc6\
+9^\xc0\xe5,M\xe2[z\xce\x05[l\x03JD\
+,Xz\xc5\xcb0.\xaer\xea7\x11\xa1\xd6\xbd\xa7\
+m+IY\x12\x82\xbd\x86\xde\x0d\xfe\x83G\xf6\x1e\x96\
+\xef\xed\x99\x0d\x1bv\xb2\xb6z\xdc\x8e\xda\xea\xf4\xde\xd2\
+\x06A\xba\xbc\xad\xb2\xc2E\xd6\xca\xc6V\xe2\xb9bo\
+\xab}\xec*\x90\xfb\x8a\x0e<i\xefq\xc7\xae\xe78\
+\xa63\xfam\x90\x91\xf7MF\x80\xaa\x9865\xdc\xb7\
+\xf4\x83ZOy\x06\x9a\xe9t\xe6\xa7\xc7\x87\xd6b;\
+\xbf<\xe6\xb3\xadi\x0d\xb058\xf4\xbe\x1a\xa9H\xcc\
+\xb0\xc2\x139{\x06\xf4\xb3c\xb5\xc0\xc4ZD\x22\xff\
+u2\x11\x91X\xe1\xac\xb1\xa87\x06\xd2\x86g\x97\xa9\
+\xaf\xd7i\xba\xb1I0\xcf\x225b\x8c\x89k\x0d\x8b\
+\xc4+\x14\x11\x1ai\xf2\x81(\xc3\xd82@\x1aX1\
+\xc1\xec:*V,\xb0V;\xbeL\x07_\xb3`^\
+\xb0\xcd6\x0b\xa5w\xc0\xe8\xfa\x1d_Q\xd5\xeeIO\
+j\x1a\xe8\xab\x8e\x9f6)\xea\xb1;9w#Bc\
+\xab\x9b{\xb4T\xbc\x93\x9a\xa0\xf2g\x98?\x85\x19\xb7\
+Zl\x05OJU\xc4RR3|/\xc8\xf5*\xfa\
+[\x22tu\x88o\x8b;\xf4\xef8\xc8wZ5\xd6\
+f)\xa9h\xe7\xbam*W\x93\x955\x9cn\xdc\xda\
++\xdc\x9f\x22\xe0\xc1\x83\x1dn\xc2\xf0\xe3#:\xcc'\
+\xd6\xeb *[\x9b\xae\xa0\x0f\x1b$\xf1\x9d\xea8\xdf\
+%\x90\xef\x1a\xc7K\xbf}\xc7\x0f\xae\xba\xdb\x01\xd7o\
+\x95\x09A\xfa]o\xc0\x8fmx!E\xb9\xd2r\x82\
+\xf8Q\x97\xa7\x93K\xa7\x17\x9f\xc2\x816\x8d*\xe3\xb5\
+\xa3}\xe9\x14\xdd0\xbeW\xfcy\xc5\x9d\xbc\x05\xb2\xeb\
+c\xcbay\xa0\xa9f\x0e\x0c\x80\x95+\x1fl\x0e\xf9\
+<\xf5\xa8j\xab\xcaX\xa3{\x03t\x95\xd5\xe1lE\
+\xb6R\xd7\xd9V;\xf1Z\xc1C\x8d9\x98~\x17\xa2\
+\x81G\x9592C\x90t\x0d\xbd\x85\xa0k\xd4)\xa3\
+\xa2\x02\xdapz\x0dC\xa0\xa7\x9d\x1f\xa0\x1fa\xaa\xc8\
+\x1a\xe9#_uS\x85\xbc8\xa8\xf7\xcf_\x95\x19Y\
+\xe7*\xe120ox\x94 V\x0b#\xf3K\x96^\
+[\x0fa\x85\xfaaw\xfc\xf3\xc1|\xec\xd1p\xc0p\
+H+\xa6\xad\xfa\x22\x881\x16\xebA\x8e\xda\xc3 \x84\
+\xa9~\x87/\xdd'\xe6\xdb \xbb\xa5\x80w\x83/\xa3\
+\x98C\xb8S\xcf\xee\xa0o\xbf'\x1f\xd11\xda\xa9\xb7\
+O\xf4K'\x95\x87\xd9\xe5\xd3=-d\x02\x13]$\
+U\x07\x14\xee`\xc6\xceGR\xb8;\xaa\x0am\xbf]\
+Y\xe3\xbc\xe8\xee\x03\xef\xee\x03t\x07hT\x0f\x1f\xaa\
+\xcf\xb0<\x81\xdf\x8d\x1c\x07\xe4\x93\x0f\xd3\xca\xc3+\x9a\
+\xcb\x14\xc2\xd5\xce\xe6\x0f&\x9b\x0dF[\xcf\xb3H\x05\
+\xba\x9b\xd7\xf6\x0c5\xaeCjb{*\xeb\x0b\xaa\xf6\
+:\xae^[j\x01)\xfe\xd7\xb7e\xbe\x0bPXB\
+\xe5\x95Y\x93\xef\xd6\x90\xd4\xaem\x8d\xbbq\x04\x1a\xa5\
+\xdbB\xbe\xf1\xcck#\xe1\xbc\x80\xcc\x0b\xf5\xa8\xac1\
+-\xb5W`\x85\xfb\xdf\x86\xa2\xa2\xc71A=?\xf7\
+[\x0c\x1f\x915_h\xb40\xc2x\xf9o\xd74\xaa\
+s\xbc\xd0\xcf\x95'\x10\x9b\x05P:\xeb\xcd\x96\xf2r\
+\xa06\x9c\x87y\xa4\x9e\xfb\xdb\xc5(\xb1Q\x1bV\x86\
+1Q\x22\xfeE\xd94\xae\x1d\x02\xfe%\xccF\xa2Z\
+%\xad\xfa\xf6\xe2\x17/\x94\xc7\x8f\xff\xb7\xa2\x9d^\x09\
+\xd4\xf4\xe2\x9b:o~|\xc3\x8f72;K:\xbc\
+A8\xe8\x97\x08\xf1\x0dS\xf5\x22\xf5\xd9\xd1N\x83\x05\
+\xd0\xd7\xac\x87:\x15\xfa}\xa2\x07\x0c\x08\x05\xe86h\
+\xe0\x9a\x95\xd2`$\xa0\xa4<\xad\x0fC\x8a\xacx5\
+\xc3\x08\xfd[\x18o\xd05b\x1f\xcb\xa5+\x8f~#\
+\x91;\x0fk\xd7\xd1\x84Oy\x12\xf79\x14\xc8\xef\x10\
+\x93w\x9f\x8d\xfd\xeb\xee\x897\x5c\x82\xcc\x0e\x9f\x93\x8b\
+\xf1y\xb0\xde\x9c\xd4~:\xe7\x94\xd7\xc5E\xbd\xea\x9c\
+W-\x1b\xaax\xe0\xcesT\xa2\xf5J\x1eY\xf4\xfc\
+\xd9\x8b\xefN(F\xc7\x18\x97vI\xab\x0bv\x0c\xf8\
+\xb9\xd9\xc4\xd1<*\xe2[F/Z\xa33;\xa2\xe4\
+\xebUx\x03\xfb^\xb2`\x09\x88\xce\x82\xfd\xed\xdd\xcf\
+\xaf\x81\x1d \x95Q\x98\xdb\xdc\xd0\xdd?w\x9f\xe1k\
+\x07\x8b\xae\x87O-<\xbb\x99\x1c\xf6\xbf\xfb\xa1\xff\xaf\
+A\xffj\xca\x8b\x8030\x1d\xe3a\x04d*\x9b\xfe\
+\xb2\xc7\x12\xb9h\xc8\xc7\xd1\xe4\x05G\x15\x97p\xbd1\
+O\xe3\x14\x9f\xef\x93\x06\xfd\xc81@\x8c\xd8:\x02~\
+f\xacG\xd1@\xc1\xc8w\xb2n\xb4\x16\x1a3\x1e\xb9\
+3\xb8\xca\xd2\xf5+\x11\x08\xe4\x920\xfd\x94\x14\x80^\
+\x87p\x1e{=v\xf4\xd23\x93Q\x9a\xdav\x13+\
+\x18\xdd\x92n\xebHr_\x990JE\xce0\xc3\x98\
+\xfc\x1dR\x08\x97\xf4\xc3O\xf4\xaf\xfc\xe9V8>\xd2\
+w\xc4\x02\x90\xdc\x1f\xc4\x7f\x82\xc5\xf0}H\xa76\xcd\
+\xd5H\xb3\x1f\xe7\xb7\x07;j\xec\x19F8\xdad\xf0\
+\xb7\xd1\xc3\xa7@\xbd\xa3\xa7\xab\xad\xf0\xb4\x0b\x7f2\xf5\
+\xfc\x0b\x11\x8e\xa63\x01l\x9a\xd5+\xda\xaa\xdb\x93\xfa\
+\xb2\x16L\xe2\xdb\xb8L\xb4\x1eU\x8f\x81\xe6\x9c\xea7\
+\xb9\x0d\x96\x19\x0b\xdf\xe6\xad\xe1\xadF\x07\xb5\xf0N\xeb\
+@4\xe1\xb5\xce'\x0e\x85\xc0\xe2W\xf5\xcc'\xac\x9a\
+\xeb\x90~\xcbSDY\xa0\xe3\xe3\x16\xa8\xe6\x8fi#\
+,\x0b\xae\x0a\xf1Lw\x1c\xe4\x05\xcb\xe1\xef\x15zu\
+\xa3\x22\x07e\x0c\xc7\xfe\xb9\xbc*\xeaI\x9c\xb3m\x81\
+x\xd7\x18\x18\xc5\x9d\xb9E\xca\x82\xc5\x82]\x16\xab\xa0\
+\xb8\x94`\x94\x89?\x1a\x0e\x8b4\x05\xc3;\x0a\x8b+\
+\xb0y\x96C\x5c\x87\xc3\xecj\xfe\xe2\xbb?\xbd|&\
+\xde\x90\xea\xbfP\xcb\x02\x7fPz4\xed\x8e\xfcag\
+r1\x9c\xaa'\x18\x91X#R\xb9i\xd80q4\
+\xa4.s\x86\xf2\xe8l\xa7\xf9\xeche\xdewQ\xb7\
+\xc6\x13\xca\xf2\xaa\x88\xb0\x9f5bQY\xe4\x94\x07\xa4\
+\xde\xad;\x16\xebv8T\x8b[\x88\x81\xdd\xe7H\xa4\
+\x09a\xaf#z\x06\x1c\xf1\xf0\xcb\x1e\x95LG\xa8+\
+J\xe3\x01\xbc\xae\xe2\xa3g\xf4@Q\xc9\xb5.jh\
+L\x10\x90Ir\xd3\x88\xa13\xfe\xfb~\xdc\xb8\xad_\
+\xbeP6\xd87\xe5\x05\xff5v\xf8K<\xa8\xd4\x19\
+A\xd9\xf8\xd9t\x18\x9d\x18\x22\x8eOA\xf1\x0b\x02\xfc\
+Dq\xe9\xa8[\xe1\xb3\x09\xc5\xdd\x80\xe9\xec\x83\x91\xdc\
+\x0d`G\xfaG\xce\xa0^\x1d\xf6?\x86\xb7\xd5 J\
+\xa8\xdf\xe23@\x8d\x87@\xde\x1a\xf0)(:\xfca\
+\x15\xa1\x00|\xf4\xfe<\x81\xd9\x89\x93of\x1f@\x8a\
+\xcd\xa0\xa3 \x7fs\x9d\xbc\x95O\x01\xcc\x038\xdc\x09\
+\xea\x90.+\xdf\x11\xc63\x812J\xb1%\x10\xfaf\
+\x9f\xb1j\xe1\xeb\xb3\x0f\xb6\x8e0\x1e\xf4\xa4\x83\xd7/\
+\xe9u\x8f\xd1\xfb\xec\x9aWt\xa0\xa5^8\x80!#\
+\xf8\xcb\x93\xa0\x0eK\xa1\x0eYi<e\xdb\xb5\x9f\xb2\
+\xd5?\x01Ay\x05\xc6\x91\x9a\x9d\x9b=\x8a'o\x09\
+\xcd\x1cc\xfc\xb0\xa6&k\xc2T\xb5\xd0\x9cJ4\xbc\
+\x94^Ht\x8c\xd7\x14\x8c\x09m=\xd1\x1bo\x9d\xd6\
+\x9f3\xf5}1\xd2Rb\xd51\xef\x08l\xba\xfc\x7f\
+\xa6\x1b\x8a\x8a\xd9\xc5\xaf-\x94w\x1f_p\x8ec\xcc\
+\x89V\xa6\x0a\xcfY\x081_\x01\x85\x86,CP\xa9\
+\x09N\x15\xed\xae\x8c\x82\x98\x04\x17Qf\xa0\x96r/\
+pI\xab\xf7\xe2\xe9\x01lY\x9c\xd0\x8f\xc6\x0ba\xad\
+\xe6D\x08\x92\xbc\x11GlX\xd1Q\xae\xdf\x9f\xa7\xc7\
+\xff\x01\x8d\x1ew\xa5\xfb}\xfe\xca6R\xe8|Y_\
+x\x1d\x88\x87\x0d\x1d\xfdW[\x1d2\xe2\x98\xaf\x0b\xba\
+\x96\x00\x85\xdd\x93\x9c\x013\x0f\xe0a\xf0\xf6\x03\x1a\x92\
+\xc7\xc8\x12A1\xd9\x0fH\xb1\x9c\x19E3m\x8c\xf6\
+\xac\x90XH\x1cdu\xc85\xc6\xcd\x10\xfd\xf8\xae8\
+\xee\xf0b}\xf7P\xb9\xac\xeaI\xc3\xe5N\xbd\xf2N\
+\xfe@\x190\xcc\xfb\xd0\x01\xc4\x86\xaf\x91\xbc\xe4\xc6\xbb\
+\xe9\xa05#\xd3\x19i\xfe\xcc\x8a\x19\xc7\xa1\xee0\xd4\
+\xcf{*\x19\xf4\xc4f\xd7\x1a~!\x87\xee\x86\x9e5\
+J\xd19\xea\x05\xd3\xd7o\x8ch\x91&\xd6=\x12H\
+\xb5\xad\xfe\xac\x02f\x8f\x1a\x1a\xaa\xcf\xda\xe1T\xa3\x09\
+0\xd4\x0e\x9b\xe2ZF\xff\xec\x8e\xc1\x09&.l\xcc\
+\x8b7W\xf0\xd5\xb0\xa6\x9a9\xc2pab\xb4E\xad\
+\xcb\x1d\xa4\xdb\xdc\x04\x04\x86\x19n\x8d\xc30\xb1U9\
+O\xde\x07\x92%\xefOt\xae\xd3\xbe\xee\x10\x84I}\
+\xd1\xda\xf0Em.qF\x5c{\x1a\x17a\x0c+\xd0\
+\x1e\x80\xd9\x89\x98f\xaf\x8aB\xefo\xc2]j\x09\x81\
+\xed$uu\x0c\x01B\x99\x0c\xe5\x8f\x10+\x97\xc9>\
+?\xfa,\xc2\xca\xeb\x09\xa2\xf3~_J\x1d\x8c\xd8\x1c\
+\x0c\x1fP\x05Z\x87\xe0\x1b\x1e}f8\xf1-\xd1\xec\
+U\x82\xef-!5\x07o\xca\x9c\x04\xe21\xf9\x22\x9e\
+\x1fs-\xf9w\xb16\x06\xfa\x1a\xfeiC2\x07\xc5\
+\x0c\x5c\x8cg\x0a\x9c\xd4*\x9b3\x06\xf0\xcfn\xd6i\
+\xb1\xf7\xc4j@\x9f\xbc%(\x9c^\xa9\xfe\xf5\x9a\xa2\
+l\x06<\xb9=F\xed\x09\x94b\xec\xd6\x22lPM\
+\xbaI}5\x86\x83u\x98\xe7\x18\xfb\xc0o\xed\xde\xc6\
+!\xee\x95\xb0W\xa7YA\xc7+<Z\xc8\x83\xc42\
+*V\xdb\xd9\x00\x0e$CN\xd6\x87\x5c|\x18\x18\xe7\
+jW(\xe6\x0a\xe5`\xd2\x80\xb1\x91\x14\xb5\xe5\x84\xf1\
+\xb8?$b\xb7N\xe7\xf4Cj\x8b\x11F\xe5R:\
+\x84>p\xab\xd8)\x83j\xbc\xe212\x1e8\x98c\
+\xe4W\xc8\xc9\x17&\x81\xb4\xa5\xa5\x81\xf1fc\xa4\xae\
+\x09\x8aU$\x82,\xc8\xc3\xe2\x8d\x8aNP\xd2\xae\x0e\
+\xda|\xb2Z'J\x0c\x93\xd7\xf3\xabM\x01\x0b\xd6\xe6\
+\x8f\x02\xdc\x0an\xb1\x9cH\x9c[\xc2\xee\xe7i\x82|\
+\xab\xe2\xafG\xc9{\x07~\xfc\xbdZ\x8b\xdb\x1e\xfa\xaa\
+\xf2\x16\xea\x85<\xf9`\xa4n\xc8\xd4*7{\xd0y\
+&\xf8\xe3*\xf0e\x0b<\xef\x8b\x16<\xe7\xca\xc4,\
+\x9f\xa6\xb0H\xb2c\x04t|\x00\xaf\x95a\x93V\x13\
+\xf5\xbc\x87I\x0b\x17\x1e\x1bN\xfd\xceT\xbd\x98\xe7\x0d\
+Z\xe5\xfcw\xc2M\x82)\xa8K\xc0\xec\xc9\x83\x7fe\
+\x1eq1\xd6f\xcb|\xa5\x92?\xbee\x09\xd0[\x19\
+a\xc2?\x9c\xc8\xf2\x8d]\xce\xbfkqP\xd1\x1bg\
+\x8aO\xaa\xa9\x15\xddqf\xc5Zh\x04\xaf\xc5o\x89\
+\xd3\xbf\xaail\x96\xe27\xdd\xc0\x0c#93\xe3@\
+T\xe3\xa8\x0dB\xb8d5.\x19\xf0\x22\xe5|\xcf\xb0\
+m\xd7\xe9b\x1b\x8b}\xc9\xb0\xae\x9f?\x97\xa6$\x18\
+\x9d\xa0prnN\xa6d\xb1\x8a\xbd\x8b7\x1d(\x00\
+\xbd\x8e\x8cGn8\x12\x8e\xb7b\x92b'\xbcb\x10\
+\xacE*\x03\xff\xee\x9a.\xa2\xca*\xe5\x1e6}T\
+\xca\xd2\xb4\x18\xf0:\x93\x84=T\xf4\xa8$\xf1E\x0d\
+A\xc5u\x94,@\xd3T\xc7:\x96\x15#\xb6\x8c\xd3\
+Y\x10\xa3{\xef\xbf\x01\x9e\xed\xc5)\
+"
+
+qt_resource_name = b"\
+\x00\x0a\
+\x08\xce\x22\xb4\
+\x00d\
+\x00e\x00f\x00a\x00u\x00l\x00t\x00.\x00m\x00d\
+\x00\x08\
+\x08\xb6\x8e\xf9\
+\x003\
+\x00r\x00d\x00p\x00a\x00r\x00t\x00y\
+\x00\x0a\
+\x0c\xba\xf2|\
+\x00i\
+\x00n\x00d\x00e\x00x\x00.\x00h\x00t\x00m\x00l\
+\x00\x0c\
+\x08\xd0i\xc3\
+\x00m\
+\x00a\x00r\x00k\x00d\x00o\x00w\x00n\x00.\x00c\x00s\x00s\
+\x00\x09\
+\x09\x1b\x92\x13\
+\x00m\
+\x00a\x00r\x00k\x00e\x00d\x00.\x00j\x00s\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x1a\x00\x02\x00\x00\x00\x02\x00\x00\x00\x04\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01z.[\x95V\
+\x00\x00\x000\x00\x00\x00\x00\x00\x01\x00\x00\x01\xe1\
+\x00\x00\x01z.[\x95V\
+\x00\x00\x00J\x00\x01\x00\x00\x00\x01\x00\x00\x04\x97\
+\x00\x00\x01z.[\x95V\
+\x00\x00\x00h\x00\x01\x00\x00\x00\x01\x00\x00\x0a\xf1\
+\x00\x00\x01z.[\x95V\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/webenginewidgets/markdowneditor/resources/3rdparty/MARKDOWN-LICENSE.txt b/examples/webenginewidgets/markdowneditor/resources/3rdparty/MARKDOWN-LICENSE.txt
new file mode 100644
index 000000000..23c52cc43
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/resources/3rdparty/MARKDOWN-LICENSE.txt
@@ -0,0 +1,16 @@
+Copyright 2011 Kevin Burke unless otherwise noted.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Some content is copyrighted by Twitter, Inc., and also released under an
+Apache License; these sections are noted in the source.
diff --git a/examples/webenginewidgets/markdowneditor/resources/3rdparty/MARKED-LICENSE.txt b/examples/webenginewidgets/markdowneditor/resources/3rdparty/MARKED-LICENSE.txt
new file mode 100644
index 000000000..8e3ba0e0a
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/resources/3rdparty/MARKED-LICENSE.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/examples/webenginewidgets/markdowneditor/resources/3rdparty/markdown.css b/examples/webenginewidgets/markdowneditor/resources/3rdparty/markdown.css
new file mode 100644
index 000000000..24fc2ffe2
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/resources/3rdparty/markdown.css
@@ -0,0 +1,260 @@
+body{
+ margin: 0 auto;
+ font-family: Georgia, Palatino, serif;
+ color: #444444;
+ line-height: 1;
+ max-width: 960px;
+ padding: 30px;
+}
+h1, h2, h3, h4 {
+ color: #111111;
+ font-weight: 400;
+}
+h1, h2, h3, h4, h5, p {
+ margin-bottom: 24px;
+ padding: 0;
+}
+h1 {
+ font-size: 48px;
+}
+h2 {
+ font-size: 36px;
+ /* The bottom margin is small. It's designed to be used with gray meta text
+ * below a post title. */
+ margin: 24px 0 6px;
+}
+h3 {
+ font-size: 24px;
+}
+h4 {
+ font-size: 21px;
+}
+h5 {
+ font-size: 18px;
+}
+a {
+ color: #0099ff;
+ margin: 0;
+ padding: 0;
+ vertical-align: baseline;
+}
+a:hover {
+ text-decoration: none;
+ color: #ff6600;
+}
+a:visited {
+ color: purple;
+}
+ul, ol {
+ padding: 0;
+ margin: 0;
+}
+li {
+ line-height: 24px;
+}
+li ul, li ul {
+ margin-left: 24px;
+}
+p, ul, ol {
+ font-size: 16px;
+ line-height: 24px;
+ max-width: 540px;
+}
+pre {
+ padding: 0px 24px;
+ max-width: 800px;
+ white-space: pre-wrap;
+}
+code {
+ font-family: Consolas, Monaco, Andale Mono, monospace;
+ line-height: 1.5;
+ font-size: 13px;
+}
+aside {
+ display: block;
+ float: right;
+ width: 390px;
+}
+blockquote {
+ border-left:.5em solid #eee;
+ padding: 0 2em;
+ margin-left:0;
+ max-width: 476px;
+}
+blockquote cite {
+ font-size:14px;
+ line-height:20px;
+ color:#bfbfbf;
+}
+blockquote cite:before {
+ content: '\2014 \00A0';
+}
+
+blockquote p {
+ color: #666;
+ max-width: 460px;
+}
+hr {
+ width: 540px;
+ text-align: left;
+ margin: 0 auto 0 0;
+ color: #999;
+}
+
+/* Code below this line is copyright Twitter Inc. */
+
+button,
+input,
+select,
+textarea {
+ font-size: 100%;
+ margin: 0;
+ vertical-align: baseline;
+ *vertical-align: middle;
+}
+button, input {
+ line-height: normal;
+ *overflow: visible;
+}
+button::-moz-focus-inner, input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ cursor: pointer;
+ -webkit-appearance: button;
+}
+input[type=checkbox], input[type=radio] {
+ cursor: pointer;
+}
+/* override default chrome & firefox settings */
+input:not([type="image"]), textarea {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+
+input[type="search"] {
+ -webkit-appearance: textfield;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+label,
+input,
+select,
+textarea {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ font-weight: normal;
+ line-height: normal;
+ margin-bottom: 18px;
+}
+input[type=checkbox], input[type=radio] {
+ cursor: pointer;
+ margin-bottom: 0;
+}
+input[type=text],
+input[type=password],
+textarea,
+select {
+ display: inline-block;
+ width: 210px;
+ padding: 4px;
+ font-size: 13px;
+ font-weight: normal;
+ line-height: 18px;
+ height: 18px;
+ color: #808080;
+ border: 1px solid #ccc;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+select, input[type=file] {
+ height: 27px;
+ line-height: 27px;
+}
+textarea {
+ height: auto;
+}
+
+/* grey out placeholders */
+:-moz-placeholder {
+ color: #bfbfbf;
+}
+::-webkit-input-placeholder {
+ color: #bfbfbf;
+}
+
+input[type=text],
+input[type=password],
+select,
+textarea {
+ -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
+ -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
+ transition: border linear 0.2s, box-shadow linear 0.2s;
+ -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+input[type=text]:focus, input[type=password]:focus, textarea:focus {
+ outline: none;
+ border-color: rgba(82, 168, 236, 0.8);
+ -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
+ -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
+}
+
+/* buttons */
+button {
+ display: inline-block;
+ padding: 4px 14px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ line-height: 18px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ background-color: #0064cd;
+ background-repeat: repeat-x;
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));
+ background-image: -moz-linear-gradient(top, #049cdb, #0064cd);
+ background-image: -ms-linear-gradient(top, #049cdb, #0064cd);
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));
+ background-image: -webkit-linear-gradient(top, #049cdb, #0064cd);
+ background-image: -o-linear-gradient(top, #049cdb, #0064cd);
+ background-image: linear-gradient(top, #049cdb, #0064cd);
+ color: #fff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ border: 1px solid #004b9a;
+ border-bottom-color: #003f81;
+ -webkit-transition: 0.1s linear all;
+ -moz-transition: 0.1s linear all;
+ transition: 0.1s linear all;
+ border-color: #0064cd #0064cd #003f81;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+}
+button:hover {
+ color: #fff;
+ background-position: 0 -15px;
+ text-decoration: none;
+}
+button:active {
+ -webkit-box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+button::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
diff --git a/examples/webenginewidgets/markdowneditor/resources/3rdparty/marked.js b/examples/webenginewidgets/markdowneditor/resources/3rdparty/marked.js
new file mode 100644
index 000000000..33c02d9cf
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/resources/3rdparty/marked.js
@@ -0,0 +1,1514 @@
+/**
+ * marked - a markdown parser
+ * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
+ * https://github.com/markedjs/marked
+ */
+
+;(function(root) {
+'use strict';
+
+/**
+ * Block-Level Grammar
+ */
+
+var block = {
+ newline: /^\n+/,
+ code: /^( {4}[^\n]+\n*)+/,
+ fences: noop,
+ hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,
+ heading: /^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,
+ nptable: noop,
+ blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
+ list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
+ html: '^ {0,3}(?:' // optional indentation
+ + '<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)' // (1)
+ + '|comment[^\\n]*(\\n+|$)' // (2)
+ + '|<\\?[\\s\\S]*?\\?>\\n*' // (3)
+ + '|<![A-Z][\\s\\S]*?>\\n*' // (4)
+ + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*' // (5)
+ + '|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)' // (6)
+ + '|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) open tag
+ + '|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) closing tag
+ + ')',
+ def: /^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,
+ table: noop,
+ lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,
+ paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,
+ text: /^[^\n]+/
+};
+
+block._label = /(?!\s*\])(?:\\[\[\]]|[^\[\]])+/;
+block._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;
+block.def = edit(block.def)
+ .replace('label', block._label)
+ .replace('title', block._title)
+ .getRegex();
+
+block.bullet = /(?:[*+-]|\d+\.)/;
+block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
+block.item = edit(block.item, 'gm')
+ .replace(/bull/g, block.bullet)
+ .getRegex();
+
+block.list = edit(block.list)
+ .replace(/bull/g, block.bullet)
+ .replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))')
+ .replace('def', '\\n+(?=' + block.def.source + ')')
+ .getRegex();
+
+block._tag = 'address|article|aside|base|basefont|blockquote|body|caption'
+ + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'
+ + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'
+ + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'
+ + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'
+ + '|track|ul';
+block._comment = /<!--(?!-?>)[\s\S]*?-->/;
+block.html = edit(block.html, 'i')
+ .replace('comment', block._comment)
+ .replace('tag', block._tag)
+ .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/)
+ .getRegex();
+
+block.paragraph = edit(block.paragraph)
+ .replace('hr', block.hr)
+ .replace('heading', block.heading)
+ .replace('lheading', block.lheading)
+ .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
+ .getRegex();
+
+block.blockquote = edit(block.blockquote)
+ .replace('paragraph', block.paragraph)
+ .getRegex();
+
+/**
+ * Normal Block Grammar
+ */
+
+block.normal = merge({}, block);
+
+/**
+ * GFM Block Grammar
+ */
+
+block.gfm = merge({}, block.normal, {
+ fences: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/,
+ paragraph: /^/,
+ heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/
+});
+
+block.gfm.paragraph = edit(block.paragraph)
+ .replace('(?!', '(?!'
+ + block.gfm.fences.source.replace('\\1', '\\2') + '|'
+ + block.list.source.replace('\\1', '\\3') + '|')
+ .getRegex();
+
+/**
+ * GFM + Tables Block Grammar
+ */
+
+block.tables = merge({}, block.gfm, {
+ nptable: /^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,
+ table: /^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/
+});
+
+/**
+ * Pedantic grammar
+ */
+
+block.pedantic = merge({}, block.normal, {
+ html: edit(
+ '^ *(?:comment *(?:\\n|\\s*$)'
+ + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
+ + '|<tag(?:"[^"]*"|\'[^\']*\'|\\s[^\'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))')
+ .replace('comment', block._comment)
+ .replace(/tag/g, '(?!(?:'
+ + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'
+ + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'
+ + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b')
+ .getRegex(),
+ def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/
+});
+
+/**
+ * Block Lexer
+ */
+
+function Lexer(options) {
+ this.tokens = [];
+ this.tokens.links = {};
+ this.options = options || marked.defaults;
+ this.rules = block.normal;
+
+ if (this.options.pedantic) {
+ this.rules = block.pedantic;
+ } else if (this.options.gfm) {
+ if (this.options.tables) {
+ this.rules = block.tables;
+ } else {
+ this.rules = block.gfm;
+ }
+ }
+}
+
+/**
+ * Expose Block Rules
+ */
+
+Lexer.rules = block;
+
+/**
+ * Static Lex Method
+ */
+
+Lexer.lex = function(src, options) {
+ var lexer = new Lexer(options);
+ return lexer.lex(src);
+};
+
+/**
+ * Preprocessing
+ */
+
+Lexer.prototype.lex = function(src) {
+ src = src
+ .replace(/\r\n|\r/g, '\n')
+ .replace(/\t/g, ' ')
+ .replace(/\u00a0/g, ' ')
+ .replace(/\u2424/g, '\n');
+
+ return this.token(src, true);
+};
+
+/**
+ * Lexing
+ */
+
+Lexer.prototype.token = function(src, top) {
+ src = src.replace(/^ +$/gm, '');
+ var next,
+ loose,
+ cap,
+ bull,
+ b,
+ item,
+ space,
+ i,
+ tag,
+ l,
+ isordered,
+ istask,
+ ischecked;
+
+ while (src) {
+ // newline
+ if (cap = this.rules.newline.exec(src)) {
+ src = src.substring(cap[0].length);
+ if (cap[0].length > 1) {
+ this.tokens.push({
+ type: 'space'
+ });
+ }
+ }
+
+ // code
+ if (cap = this.rules.code.exec(src)) {
+ src = src.substring(cap[0].length);
+ cap = cap[0].replace(/^ {4}/gm, '');
+ this.tokens.push({
+ type: 'code',
+ text: !this.options.pedantic
+ ? cap.replace(/\n+$/, '')
+ : cap
+ });
+ continue;
+ }
+
+ // fences (gfm)
+ if (cap = this.rules.fences.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'code',
+ lang: cap[2],
+ text: cap[3] || ''
+ });
+ continue;
+ }
+
+ // heading
+ if (cap = this.rules.heading.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'heading',
+ depth: cap[1].length,
+ text: cap[2]
+ });
+ continue;
+ }
+
+ // table no leading pipe (gfm)
+ if (top && (cap = this.rules.nptable.exec(src))) {
+ item = {
+ type: 'table',
+ header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
+ align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+ cells: cap[3] ? cap[3].replace(/\n$/, '').split('\n') : []
+ };
+
+ if (item.header.length === item.align.length) {
+ src = src.substring(cap[0].length);
+
+ for (i = 0; i < item.align.length; i++) {
+ if (/^ *-+: *$/.test(item.align[i])) {
+ item.align[i] = 'right';
+ } else if (/^ *:-+: *$/.test(item.align[i])) {
+ item.align[i] = 'center';
+ } else if (/^ *:-+ *$/.test(item.align[i])) {
+ item.align[i] = 'left';
+ } else {
+ item.align[i] = null;
+ }
+ }
+
+ for (i = 0; i < item.cells.length; i++) {
+ item.cells[i] = splitCells(item.cells[i], item.header.length);
+ }
+
+ this.tokens.push(item);
+
+ continue;
+ }
+ }
+
+ // hr
+ if (cap = this.rules.hr.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'hr'
+ });
+ continue;
+ }
+
+ // blockquote
+ if (cap = this.rules.blockquote.exec(src)) {
+ src = src.substring(cap[0].length);
+
+ this.tokens.push({
+ type: 'blockquote_start'
+ });
+
+ cap = cap[0].replace(/^ *> ?/gm, '');
+
+ // Pass `top` to keep the current
+ // "toplevel" state. This is exactly
+ // how markdown.pl works.
+ this.token(cap, top);
+
+ this.tokens.push({
+ type: 'blockquote_end'
+ });
+
+ continue;
+ }
+
+ // list
+ if (cap = this.rules.list.exec(src)) {
+ src = src.substring(cap[0].length);
+ bull = cap[2];
+ isordered = bull.length > 1;
+
+ this.tokens.push({
+ type: 'list_start',
+ ordered: isordered,
+ start: isordered ? +bull : ''
+ });
+
+ // Get each top-level item.
+ cap = cap[0].match(this.rules.item);
+
+ next = false;
+ l = cap.length;
+ i = 0;
+
+ for (; i < l; i++) {
+ item = cap[i];
+
+ // Remove the list item's bullet
+ // so it is seen as the next token.
+ space = item.length;
+ item = item.replace(/^ *([*+-]|\d+\.) +/, '');
+
+ // Outdent whatever the
+ // list item contains. Hacky.
+ if (~item.indexOf('\n ')) {
+ space -= item.length;
+ item = !this.options.pedantic
+ ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
+ : item.replace(/^ {1,4}/gm, '');
+ }
+
+ // Determine whether the next list item belongs here.
+ // Backpedal if it does not belong in this list.
+ if (this.options.smartLists && i !== l - 1) {
+ b = block.bullet.exec(cap[i + 1])[0];
+ if (bull !== b && !(bull.length > 1 && b.length > 1)) {
+ src = cap.slice(i + 1).join('\n') + src;
+ i = l - 1;
+ }
+ }
+
+ // Determine whether item is loose or not.
+ // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
+ // for discount behavior.
+ loose = next || /\n\n(?!\s*$)/.test(item);
+ if (i !== l - 1) {
+ next = item.charAt(item.length - 1) === '\n';
+ if (!loose) loose = next;
+ }
+
+ // Check for task list items
+ istask = /^\[[ xX]\] /.test(item);
+ ischecked = undefined;
+ if (istask) {
+ ischecked = item[1] !== ' ';
+ item = item.replace(/^\[[ xX]\] +/, '');
+ }
+
+ this.tokens.push({
+ type: loose
+ ? 'loose_item_start'
+ : 'list_item_start',
+ task: istask,
+ checked: ischecked
+ });
+
+ // Recurse.
+ this.token(item, false);
+
+ this.tokens.push({
+ type: 'list_item_end'
+ });
+ }
+
+ this.tokens.push({
+ type: 'list_end'
+ });
+
+ continue;
+ }
+
+ // html
+ if (cap = this.rules.html.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: this.options.sanitize
+ ? 'paragraph'
+ : 'html',
+ pre: !this.options.sanitizer
+ && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
+ text: cap[0]
+ });
+ continue;
+ }
+
+ // def
+ if (top && (cap = this.rules.def.exec(src))) {
+ src = src.substring(cap[0].length);
+ if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);
+ tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
+ if (!this.tokens.links[tag]) {
+ this.tokens.links[tag] = {
+ href: cap[2],
+ title: cap[3]
+ };
+ }
+ continue;
+ }
+
+ // table (gfm)
+ if (top && (cap = this.rules.table.exec(src))) {
+ item = {
+ type: 'table',
+ header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
+ align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+ cells: cap[3] ? cap[3].replace(/(?: *\| *)?\n$/, '').split('\n') : []
+ };
+
+ if (item.header.length === item.align.length) {
+ src = src.substring(cap[0].length);
+
+ for (i = 0; i < item.align.length; i++) {
+ if (/^ *-+: *$/.test(item.align[i])) {
+ item.align[i] = 'right';
+ } else if (/^ *:-+: *$/.test(item.align[i])) {
+ item.align[i] = 'center';
+ } else if (/^ *:-+ *$/.test(item.align[i])) {
+ item.align[i] = 'left';
+ } else {
+ item.align[i] = null;
+ }
+ }
+
+ for (i = 0; i < item.cells.length; i++) {
+ item.cells[i] = splitCells(
+ item.cells[i].replace(/^ *\| *| *\| *$/g, ''),
+ item.header.length);
+ }
+
+ this.tokens.push(item);
+
+ continue;
+ }
+ }
+
+ // lheading
+ if (cap = this.rules.lheading.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'heading',
+ depth: cap[2] === '=' ? 1 : 2,
+ text: cap[1]
+ });
+ continue;
+ }
+
+ // top-level paragraph
+ if (top && (cap = this.rules.paragraph.exec(src))) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'paragraph',
+ text: cap[1].charAt(cap[1].length - 1) === '\n'
+ ? cap[1].slice(0, -1)
+ : cap[1]
+ });
+ continue;
+ }
+
+ // text
+ if (cap = this.rules.text.exec(src)) {
+ // Top-level should never reach here.
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'text',
+ text: cap[0]
+ });
+ continue;
+ }
+
+ if (src) {
+ throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
+ }
+ }
+
+ return this.tokens;
+};
+
+/**
+ * Inline-Level Grammar
+ */
+
+var inline = {
+ escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
+ autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
+ url: noop,
+ tag: '^comment'
+ + '|^</[a-zA-Z][\\w:-]*\\s*>' // self-closing tag
+ + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag
+ + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. <?php ?>
+ + '|^<![a-zA-Z]+\\s[\\s\\S]*?>' // declaration, e.g. <!DOCTYPE html>
+ + '|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>', // CDATA section
+ link: /^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,
+ reflink: /^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,
+ nolink: /^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,
+ strong: /^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)|^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)/,
+ em: /^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*][\s\S]*?[^\s])\*(?!\*)|^_([^\s_])_(?!_)|^\*([^\s*])\*(?!\*)/,
+ code: /^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/,
+ br: /^ {2,}\n(?!\s*$)/,
+ del: noop,
+ text: /^[\s\S]+?(?=[\\<!\[`*]|\b_| {2,}\n|$)/
+};
+
+inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
+
+inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
+inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
+inline.autolink = edit(inline.autolink)
+ .replace('scheme', inline._scheme)
+ .replace('email', inline._email)
+ .getRegex();
+
+inline._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;
+
+inline.tag = edit(inline.tag)
+ .replace('comment', block._comment)
+ .replace('attribute', inline._attribute)
+ .getRegex();
+
+inline._label = /(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/;
+inline._href = /\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f()\\]*\)|[^\s\x00-\x1f()\\])*?)/;
+inline._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
+
+inline.link = edit(inline.link)
+ .replace('label', inline._label)
+ .replace('href', inline._href)
+ .replace('title', inline._title)
+ .getRegex();
+
+inline.reflink = edit(inline.reflink)
+ .replace('label', inline._label)
+ .getRegex();
+
+/**
+ * Normal Inline Grammar
+ */
+
+inline.normal = merge({}, inline);
+
+/**
+ * Pedantic Inline Grammar
+ */
+
+inline.pedantic = merge({}, inline.normal, {
+ strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
+ em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,
+ link: edit(/^!?\[(label)\]\((.*?)\)/)
+ .replace('label', inline._label)
+ .getRegex(),
+ reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/)
+ .replace('label', inline._label)
+ .getRegex()
+});
+
+/**
+ * GFM Inline Grammar
+ */
+
+inline.gfm = merge({}, inline.normal, {
+ escape: edit(inline.escape).replace('])', '~|])').getRegex(),
+ url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/)
+ .replace('email', inline._email)
+ .getRegex(),
+ _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
+ del: /^~~(?=\S)([\s\S]*?\S)~~/,
+ text: edit(inline.text)
+ .replace(']|', '~]|')
+ .replace('|', '|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&\'*+/=?^_`{\\|}~-]+@|')
+ .getRegex()
+});
+
+/**
+ * GFM + Line Breaks Inline Grammar
+ */
+
+inline.breaks = merge({}, inline.gfm, {
+ br: edit(inline.br).replace('{2,}', '*').getRegex(),
+ text: edit(inline.gfm.text).replace('{2,}', '*').getRegex()
+});
+
+/**
+ * Inline Lexer & Compiler
+ */
+
+function InlineLexer(links, options) {
+ this.options = options || marked.defaults;
+ this.links = links;
+ this.rules = inline.normal;
+ this.renderer = this.options.renderer || new Renderer();
+ this.renderer.options = this.options;
+
+ if (!this.links) {
+ throw new Error('Tokens array requires a `links` property.');
+ }
+
+ if (this.options.pedantic) {
+ this.rules = inline.pedantic;
+ } else if (this.options.gfm) {
+ if (this.options.breaks) {
+ this.rules = inline.breaks;
+ } else {
+ this.rules = inline.gfm;
+ }
+ }
+}
+
+/**
+ * Expose Inline Rules
+ */
+
+InlineLexer.rules = inline;
+
+/**
+ * Static Lexing/Compiling Method
+ */
+
+InlineLexer.output = function(src, links, options) {
+ var inline = new InlineLexer(links, options);
+ return inline.output(src);
+};
+
+/**
+ * Lexing/Compiling
+ */
+
+InlineLexer.prototype.output = function(src) {
+ var out = '',
+ link,
+ text,
+ href,
+ title,
+ cap;
+
+ while (src) {
+ // escape
+ if (cap = this.rules.escape.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += cap[1];
+ continue;
+ }
+
+ // autolink
+ if (cap = this.rules.autolink.exec(src)) {
+ src = src.substring(cap[0].length);
+ if (cap[2] === '@') {
+ text = escape(this.mangle(cap[1]));
+ href = 'mailto:' + text;
+ } else {
+ text = escape(cap[1]);
+ href = text;
+ }
+ out += this.renderer.link(href, null, text);
+ continue;
+ }
+
+ // url (gfm)
+ if (!this.inLink && (cap = this.rules.url.exec(src))) {
+ cap[0] = this.rules._backpedal.exec(cap[0])[0];
+ src = src.substring(cap[0].length);
+ if (cap[2] === '@') {
+ text = escape(cap[0]);
+ href = 'mailto:' + text;
+ } else {
+ text = escape(cap[0]);
+ if (cap[1] === 'www.') {
+ href = 'http://' + text;
+ } else {
+ href = text;
+ }
+ }
+ out += this.renderer.link(href, null, text);
+ continue;
+ }
+
+ // tag
+ if (cap = this.rules.tag.exec(src)) {
+ if (!this.inLink && /^<a /i.test(cap[0])) {
+ this.inLink = true;
+ } else if (this.inLink && /^<\/a>/i.test(cap[0])) {
+ this.inLink = false;
+ }
+ src = src.substring(cap[0].length);
+ out += this.options.sanitize
+ ? this.options.sanitizer
+ ? this.options.sanitizer(cap[0])
+ : escape(cap[0])
+ : cap[0]
+ continue;
+ }
+
+ // link
+ if (cap = this.rules.link.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.inLink = true;
+ href = cap[2];
+ if (this.options.pedantic) {
+ link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
+
+ if (link) {
+ href = link[1];
+ title = link[3];
+ } else {
+ title = '';
+ }
+ } else {
+ title = cap[3] ? cap[3].slice(1, -1) : '';
+ }
+ href = href.trim().replace(/^<([\s\S]*)>$/, '$1');
+ out += this.outputLink(cap, {
+ href: InlineLexer.escapes(href),
+ title: InlineLexer.escapes(title)
+ });
+ this.inLink = false;
+ continue;
+ }
+
+ // reflink, nolink
+ if ((cap = this.rules.reflink.exec(src))
+ || (cap = this.rules.nolink.exec(src))) {
+ src = src.substring(cap[0].length);
+ link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
+ link = this.links[link.toLowerCase()];
+ if (!link || !link.href) {
+ out += cap[0].charAt(0);
+ src = cap[0].substring(1) + src;
+ continue;
+ }
+ this.inLink = true;
+ out += this.outputLink(cap, link);
+ this.inLink = false;
+ continue;
+ }
+
+ // strong
+ if (cap = this.rules.strong.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));
+ continue;
+ }
+
+ // em
+ if (cap = this.rules.em.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));
+ continue;
+ }
+
+ // code
+ if (cap = this.rules.code.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.codespan(escape(cap[2].trim(), true));
+ continue;
+ }
+
+ // br
+ if (cap = this.rules.br.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.br();
+ continue;
+ }
+
+ // del (gfm)
+ if (cap = this.rules.del.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.del(this.output(cap[1]));
+ continue;
+ }
+
+ // text
+ if (cap = this.rules.text.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.text(escape(this.smartypants(cap[0])));
+ continue;
+ }
+
+ if (src) {
+ throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
+ }
+ }
+
+ return out;
+};
+
+InlineLexer.escapes = function(text) {
+ return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;
+}
+
+/**
+ * Compile Link
+ */
+
+InlineLexer.prototype.outputLink = function(cap, link) {
+ var href = link.href,
+ title = link.title ? escape(link.title) : null;
+
+ return cap[0].charAt(0) !== '!'
+ ? this.renderer.link(href, title, this.output(cap[1]))
+ : this.renderer.image(href, title, escape(cap[1]));
+};
+
+/**
+ * Smartypants Transformations
+ */
+
+InlineLexer.prototype.smartypants = function(text) {
+ if (!this.options.smartypants) return text;
+ return text
+ // em-dashes
+ .replace(/---/g, '\u2014')
+ // en-dashes
+ .replace(/--/g, '\u2013')
+ // opening singles
+ .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
+ // closing singles & apostrophes
+ .replace(/'/g, '\u2019')
+ // opening doubles
+ .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
+ // closing doubles
+ .replace(/"/g, '\u201d')
+ // ellipses
+ .replace(/\.{3}/g, '\u2026');
+};
+
+/**
+ * Mangle Links
+ */
+
+InlineLexer.prototype.mangle = function(text) {
+ if (!this.options.mangle) return text;
+ var out = '',
+ l = text.length,
+ i = 0,
+ ch;
+
+ for (; i < l; i++) {
+ ch = text.charCodeAt(i);
+ if (Math.random() > 0.5) {
+ ch = 'x' + ch.toString(16);
+ }
+ out += '&#' + ch + ';';
+ }
+
+ return out;
+};
+
+/**
+ * Renderer
+ */
+
+function Renderer(options) {
+ this.options = options || marked.defaults;
+}
+
+Renderer.prototype.code = function(code, lang, escaped) {
+ if (this.options.highlight) {
+ var out = this.options.highlight(code, lang);
+ if (out != null && out !== code) {
+ escaped = true;
+ code = out;
+ }
+ }
+
+ if (!lang) {
+ return '<pre><code>'
+ + (escaped ? code : escape(code, true))
+ + '</code></pre>';
+ }
+
+ return '<pre><code class="'
+ + this.options.langPrefix
+ + escape(lang, true)
+ + '">'
+ + (escaped ? code : escape(code, true))
+ + '</code></pre>\n';
+};
+
+Renderer.prototype.blockquote = function(quote) {
+ return '<blockquote>\n' + quote + '</blockquote>\n';
+};
+
+Renderer.prototype.html = function(html) {
+ return html;
+};
+
+Renderer.prototype.heading = function(text, level, raw) {
+ if (this.options.headerIds) {
+ return '<h'
+ + level
+ + ' id="'
+ + this.options.headerPrefix
+ + raw.toLowerCase().replace(/[^\w]+/g, '-')
+ + '">'
+ + text
+ + '</h'
+ + level
+ + '>\n';
+ }
+ // ignore IDs
+ return '<h' + level + '>' + text + '</h' + level + '>\n';
+};
+
+Renderer.prototype.hr = function() {
+ return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
+};
+
+Renderer.prototype.list = function(body, ordered, start) {
+ var type = ordered ? 'ol' : 'ul',
+ startatt = (ordered && start !== 1) ? (' start="' + start + '"') : '';
+ return '<' + type + startatt + '>\n' + body + '</' + type + '>\n';
+};
+
+Renderer.prototype.listitem = function(text) {
+ return '<li>' + text + '</li>\n';
+};
+
+Renderer.prototype.checkbox = function(checked) {
+ return '<input '
+ + (checked ? 'checked="" ' : '')
+ + 'disabled="" type="checkbox"'
+ + (this.options.xhtml ? ' /' : '')
+ + '> ';
+}
+
+Renderer.prototype.paragraph = function(text) {
+ return '<p>' + text + '</p>\n';
+};
+
+Renderer.prototype.table = function(header, body) {
+ if (body) body = '<tbody>' + body + '</tbody>';
+
+ return '<table>\n'
+ + '<thead>\n'
+ + header
+ + '</thead>\n'
+ + body
+ + '</table>\n';
+};
+
+Renderer.prototype.tablerow = function(content) {
+ return '<tr>\n' + content + '</tr>\n';
+};
+
+Renderer.prototype.tablecell = function(content, flags) {
+ var type = flags.header ? 'th' : 'td';
+ var tag = flags.align
+ ? '<' + type + ' align="' + flags.align + '">'
+ : '<' + type + '>';
+ return tag + content + '</' + type + '>\n';
+};
+
+// span level renderer
+Renderer.prototype.strong = function(text) {
+ return '<strong>' + text + '</strong>';
+};
+
+Renderer.prototype.em = function(text) {
+ return '<em>' + text + '</em>';
+};
+
+Renderer.prototype.codespan = function(text) {
+ return '<code>' + text + '</code>';
+};
+
+Renderer.prototype.br = function() {
+ return this.options.xhtml ? '<br/>' : '<br>';
+};
+
+Renderer.prototype.del = function(text) {
+ return '<del>' + text + '</del>';
+};
+
+Renderer.prototype.link = function(href, title, text) {
+ if (this.options.sanitize) {
+ try {
+ var prot = decodeURIComponent(unescape(href))
+ .replace(/[^\w:]/g, '')
+ .toLowerCase();
+ } catch (e) {
+ return text;
+ }
+ if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
+ return text;
+ }
+ }
+ if (this.options.baseUrl && !originIndependentUrl.test(href)) {
+ href = resolveUrl(this.options.baseUrl, href);
+ }
+ try {
+ href = encodeURI(href).replace(/%25/g, '%');
+ } catch (e) {
+ return text;
+ }
+ var out = '<a href="' + escape(href) + '"';
+ if (title) {
+ out += ' title="' + title + '"';
+ }
+ out += '>' + text + '</a>';
+ return out;
+};
+
+Renderer.prototype.image = function(href, title, text) {
+ if (this.options.baseUrl && !originIndependentUrl.test(href)) {
+ href = resolveUrl(this.options.baseUrl, href);
+ }
+ var out = '<img src="' + href + '" alt="' + text + '"';
+ if (title) {
+ out += ' title="' + title + '"';
+ }
+ out += this.options.xhtml ? '/>' : '>';
+ return out;
+};
+
+Renderer.prototype.text = function(text) {
+ return text;
+};
+
+/**
+ * TextRenderer
+ * returns only the textual part of the token
+ */
+
+function TextRenderer() {}
+
+// no need for block level renderers
+
+TextRenderer.prototype.strong =
+TextRenderer.prototype.em =
+TextRenderer.prototype.codespan =
+TextRenderer.prototype.del =
+TextRenderer.prototype.text = function (text) {
+ return text;
+}
+
+TextRenderer.prototype.link =
+TextRenderer.prototype.image = function(href, title, text) {
+ return '' + text;
+}
+
+TextRenderer.prototype.br = function() {
+ return '';
+}
+
+/**
+ * Parsing & Compiling
+ */
+
+function Parser(options) {
+ this.tokens = [];
+ this.token = null;
+ this.options = options || marked.defaults;
+ this.options.renderer = this.options.renderer || new Renderer();
+ this.renderer = this.options.renderer;
+ this.renderer.options = this.options;
+}
+
+/**
+ * Static Parse Method
+ */
+
+Parser.parse = function(src, options) {
+ var parser = new Parser(options);
+ return parser.parse(src);
+};
+
+/**
+ * Parse Loop
+ */
+
+Parser.prototype.parse = function(src) {
+ this.inline = new InlineLexer(src.links, this.options);
+ // use an InlineLexer with a TextRenderer to extract pure text
+ this.inlineText = new InlineLexer(
+ src.links,
+ merge({}, this.options, {renderer: new TextRenderer()})
+ );
+ this.tokens = src.reverse();
+
+ var out = '';
+ while (this.next()) {
+ out += this.tok();
+ }
+
+ return out;
+};
+
+/**
+ * Next Token
+ */
+
+Parser.prototype.next = function() {
+ return this.token = this.tokens.pop();
+};
+
+/**
+ * Preview Next Token
+ */
+
+Parser.prototype.peek = function() {
+ return this.tokens[this.tokens.length - 1] || 0;
+};
+
+/**
+ * Parse Text Tokens
+ */
+
+Parser.prototype.parseText = function() {
+ var body = this.token.text;
+
+ while (this.peek().type === 'text') {
+ body += '\n' + this.next().text;
+ }
+
+ return this.inline.output(body);
+};
+
+/**
+ * Parse Current Token
+ */
+
+Parser.prototype.tok = function() {
+ switch (this.token.type) {
+ case 'space': {
+ return '';
+ }
+ case 'hr': {
+ return this.renderer.hr();
+ }
+ case 'heading': {
+ return this.renderer.heading(
+ this.inline.output(this.token.text),
+ this.token.depth,
+ unescape(this.inlineText.output(this.token.text)));
+ }
+ case 'code': {
+ return this.renderer.code(this.token.text,
+ this.token.lang,
+ this.token.escaped);
+ }
+ case 'table': {
+ var header = '',
+ body = '',
+ i,
+ row,
+ cell,
+ j;
+
+ // header
+ cell = '';
+ for (i = 0; i < this.token.header.length; i++) {
+ cell += this.renderer.tablecell(
+ this.inline.output(this.token.header[i]),
+ { header: true, align: this.token.align[i] }
+ );
+ }
+ header += this.renderer.tablerow(cell);
+
+ for (i = 0; i < this.token.cells.length; i++) {
+ row = this.token.cells[i];
+
+ cell = '';
+ for (j = 0; j < row.length; j++) {
+ cell += this.renderer.tablecell(
+ this.inline.output(row[j]),
+ { header: false, align: this.token.align[j] }
+ );
+ }
+
+ body += this.renderer.tablerow(cell);
+ }
+ return this.renderer.table(header, body);
+ }
+ case 'blockquote_start': {
+ body = '';
+
+ while (this.next().type !== 'blockquote_end') {
+ body += this.tok();
+ }
+
+ return this.renderer.blockquote(body);
+ }
+ case 'list_start': {
+ body = '';
+ var ordered = this.token.ordered,
+ start = this.token.start;
+
+ while (this.next().type !== 'list_end') {
+ body += this.tok();
+ }
+
+ return this.renderer.list(body, ordered, start);
+ }
+ case 'list_item_start': {
+ body = '';
+
+ if (this.token.task) {
+ body += this.renderer.checkbox(this.token.checked);
+ }
+
+ while (this.next().type !== 'list_item_end') {
+ body += this.token.type === 'text'
+ ? this.parseText()
+ : this.tok();
+ }
+
+ return this.renderer.listitem(body);
+ }
+ case 'loose_item_start': {
+ body = '';
+
+ while (this.next().type !== 'list_item_end') {
+ body += this.tok();
+ }
+
+ return this.renderer.listitem(body);
+ }
+ case 'html': {
+ // TODO parse inline content if parameter markdown=1
+ return this.renderer.html(this.token.text);
+ }
+ case 'paragraph': {
+ return this.renderer.paragraph(this.inline.output(this.token.text));
+ }
+ case 'text': {
+ return this.renderer.paragraph(this.parseText());
+ }
+ }
+};
+
+/**
+ * Helpers
+ */
+
+function escape(html, encode) {
+ return html
+ .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;')
+ .replace(/</g, '&lt;')
+ .replace(/>/g, '&gt;')
+ .replace(/"/g, '&quot;')
+ .replace(/'/g, '&#39;');
+}
+
+function unescape(html) {
+ // explicitly match decimal, hex, and named HTML entities
+ return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, function(_, n) {
+ n = n.toLowerCase();
+ if (n === 'colon') return ':';
+ if (n.charAt(0) === '#') {
+ return n.charAt(1) === 'x'
+ ? String.fromCharCode(parseInt(n.substring(2), 16))
+ : String.fromCharCode(+n.substring(1));
+ }
+ return '';
+ });
+}
+
+function edit(regex, opt) {
+ regex = regex.source || regex;
+ opt = opt || '';
+ return {
+ replace: function(name, val) {
+ val = val.source || val;
+ val = val.replace(/(^|[^\[])\^/g, '$1');
+ regex = regex.replace(name, val);
+ return this;
+ },
+ getRegex: function() {
+ return new RegExp(regex, opt);
+ }
+ };
+}
+
+function resolveUrl(base, href) {
+ if (!baseUrls[' ' + base]) {
+ // we can ignore everything in base after the last slash of its path component,
+ // but we might need to add _that_
+ // https://tools.ietf.org/html/rfc3986#section-3
+ if (/^[^:]+:\/*[^/]*$/.test(base)) {
+ baseUrls[' ' + base] = base + '/';
+ } else {
+ baseUrls[' ' + base] = base.replace(/[^/]*$/, '');
+ }
+ }
+ base = baseUrls[' ' + base];
+
+ if (href.slice(0, 2) === '//') {
+ return base.replace(/:[\s\S]*/, ':') + href;
+ } else if (href.charAt(0) === '/') {
+ return base.replace(/(:\/*[^/]*)[\s\S]*/, '$1') + href;
+ } else {
+ return base + href;
+ }
+}
+var baseUrls = {};
+var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
+
+function noop() {}
+noop.exec = noop;
+
+function merge(obj) {
+ var i = 1,
+ target,
+ key;
+
+ for (; i < arguments.length; i++) {
+ target = arguments[i];
+ for (key in target) {
+ if (Object.prototype.hasOwnProperty.call(target, key)) {
+ obj[key] = target[key];
+ }
+ }
+ }
+
+ return obj;
+}
+
+function splitCells(tableRow, count) {
+ var cells = tableRow.replace(/([^\\])\|/g, '$1 |').split(/ +\| */),
+ i = 0;
+
+ if (cells.length > count) {
+ cells.splice(count);
+ } else {
+ while (cells.length < count) cells.push('');
+ }
+
+ for (; i < cells.length; i++) {
+ cells[i] = cells[i].replace(/\\\|/g, '|');
+ }
+ return cells;
+}
+
+/**
+ * Marked
+ */
+
+function marked(src, opt, callback) {
+ // throw error in case of non string input
+ if (typeof src === 'undefined' || src === null) {
+ throw new Error('marked(): input parameter is undefined or null');
+ }
+ if (typeof src !== 'string') {
+ throw new Error('marked(): input parameter is of type '
+ + Object.prototype.toString.call(src) + ', string expected');
+ }
+
+ if (callback || typeof opt === 'function') {
+ if (!callback) {
+ callback = opt;
+ opt = null;
+ }
+
+ opt = merge({}, marked.defaults, opt || {});
+
+ var highlight = opt.highlight,
+ tokens,
+ pending,
+ i = 0;
+
+ try {
+ tokens = Lexer.lex(src, opt)
+ } catch (e) {
+ return callback(e);
+ }
+
+ pending = tokens.length;
+
+ var done = function(err) {
+ if (err) {
+ opt.highlight = highlight;
+ return callback(err);
+ }
+
+ var out;
+
+ try {
+ out = Parser.parse(tokens, opt);
+ } catch (e) {
+ err = e;
+ }
+
+ opt.highlight = highlight;
+
+ return err
+ ? callback(err)
+ : callback(null, out);
+ };
+
+ if (!highlight || highlight.length < 3) {
+ return done();
+ }
+
+ delete opt.highlight;
+
+ if (!pending) return done();
+
+ for (; i < tokens.length; i++) {
+ (function(token) {
+ if (token.type !== 'code') {
+ return --pending || done();
+ }
+ return highlight(token.text, token.lang, function(err, code) {
+ if (err) return done(err);
+ if (code == null || code === token.text) {
+ return --pending || done();
+ }
+ token.text = code;
+ token.escaped = true;
+ --pending || done();
+ });
+ })(tokens[i]);
+ }
+
+ return;
+ }
+ try {
+ if (opt) opt = merge({}, marked.defaults, opt);
+ return Parser.parse(Lexer.lex(src, opt), opt);
+ } catch (e) {
+ e.message += '\nPlease report this to https://github.com/markedjs/marked.';
+ if ((opt || marked.defaults).silent) {
+ return '<p>An error occurred:</p><pre>'
+ + escape(e.message + '', true)
+ + '</pre>';
+ }
+ throw e;
+ }
+}
+
+/**
+ * Options
+ */
+
+marked.options =
+marked.setOptions = function(opt) {
+ merge(marked.defaults, opt);
+ return marked;
+};
+
+marked.getDefaults = function () {
+ return {
+ baseUrl: null,
+ breaks: false,
+ gfm: true,
+ headerIds: true,
+ headerPrefix: '',
+ highlight: null,
+ langPrefix: 'language-',
+ mangle: true,
+ pedantic: false,
+ renderer: new Renderer(),
+ sanitize: false,
+ sanitizer: null,
+ silent: false,
+ smartLists: false,
+ smartypants: false,
+ tables: true,
+ xhtml: false
+ };
+}
+
+marked.defaults = marked.getDefaults();
+
+/**
+ * Expose
+ */
+
+marked.Parser = Parser;
+marked.parser = Parser.parse;
+
+marked.Renderer = Renderer;
+marked.TextRenderer = TextRenderer;
+
+marked.Lexer = Lexer;
+marked.lexer = Lexer.lex;
+
+marked.InlineLexer = InlineLexer;
+marked.inlineLexer = InlineLexer.output;
+
+marked.parse = marked;
+
+if (typeof module !== 'undefined' && typeof exports === 'object') {
+ module.exports = marked;
+} else if (typeof define === 'function' && define.amd) {
+ define(function() { return marked; });
+} else {
+ root.marked = marked;
+}
+})(this || (typeof window !== 'undefined' ? window : global));
diff --git a/examples/webenginewidgets/markdowneditor/resources/3rdparty/qt_attribution.json b/examples/webenginewidgets/markdowneditor/resources/3rdparty/qt_attribution.json
new file mode 100644
index 000000000..de5458eff
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/resources/3rdparty/qt_attribution.json
@@ -0,0 +1,35 @@
+[
+ {
+ "Id": "markdowneditor-marked",
+ "Name": "Marked (WebEngine Markdown Editor example)",
+ "QDocModule": "qtwebengine",
+ "QtUsage": "Marked is used in the WebEngine MarkDown Editor example",
+ "QtParts": [ "examples" ],
+ "Files": "marked.js",
+ "Description": "A full-featured markdown parser and compiler, written in JavaScript. Built for speed.",
+ "Homepage": "https://github.com/chjj/marked",
+ "Version": "0.4.0",
+ "DownloadLocation": "https://github.com/markedjs/marked/blob/0.4.0/lib/marked.js",
+ "Copyright": "Copyright (c) 2011-2018, Christopher Jeffrey",
+ "License": "MIT License",
+ "LicenseId": "MIT",
+ "LicenseFile": "MARKED-LICENSE.txt"
+ },
+ {
+ "Id": "markdowneditor-markdowncss",
+ "Name": "Markdown.css (WebEngine Markdown Editor example)",
+ "QDocModule": "qtwebengine",
+ "QtUsage": "markdown.css is used in the WebEngine MarkDown Editor example",
+ "QtParts": [ "examples" ],
+ "Files": "markdown.css",
+ "Description": "Markdown.css is better default styling for your Markdown files.",
+ "Homepage": "https://kevinburke.bitbucket.io/markdowncss/",
+ "Version": "188530e4b5d020d7e237fc6b26be13ebf4a8def3",
+ "DownloadLocation": "https://bitbucket.org/kevinburke/markdowncss/src/188530e4b5d020d7e237fc6b26be13ebf4a8def3/markdown.css",
+ "Copyright": "Copyright 2011 Kevin Burke
+ Copyright Twitter Inc.",
+ "License": "Apache License 2.0",
+ "LicenseId": "Apache-2.0",
+ "LicenseFile": "MARKDOWN-LICENSE.txt"
+ }
+]
diff --git a/examples/webenginewidgets/markdowneditor/resources/default.md b/examples/webenginewidgets/markdowneditor/resources/default.md
new file mode 100644
index 000000000..d29cdfe60
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/resources/default.md
@@ -0,0 +1,12 @@
+## WebEngine Markdown Editor Example
+
+This example uses [QWebEngineView](https://doc.qt.io/qt-5/qwebengineview.html)
+to preview text written using the [Markdown](https://en.wikipedia.org/wiki/Markdown)
+syntax.
+
+### Acknowledgments
+
+The conversion from Markdown to HTML is done with the help of the
+[marked JavaScript library](https://github.com/chjj/marked) by _Christopher Jeffrey_.
+The [style sheet](https://kevinburke.bitbucket.io/markdowncss/)
+was created by _Kevin Burke_.
diff --git a/examples/webenginewidgets/markdowneditor/resources/index.html b/examples/webenginewidgets/markdowneditor/resources/index.html
new file mode 100644
index 000000000..c8e30b49b
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/resources/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en">
+<meta charset="utf-8">
+<head>
+ <link rel="stylesheet" type="text/css" href="3rdparty/markdown.css">
+ <script src="3rdparty/marked.js"></script>
+ <script src="qrc:/qtwebchannel/qwebchannel.js"></script>
+</head>
+<body>
+ <div id="placeholder"></div>
+ <script>
+ 'use strict';
+
+ var placeholder = document.getElementById('placeholder');
+
+ var updateText = function(text) {
+ placeholder.innerHTML = marked.parse(text);
+ }
+
+ new QWebChannel(qt.webChannelTransport,
+ function(channel) {
+ var content = channel.objects.content;
+ updateText(content.text);
+ content.textChanged.connect(updateText);
+ }
+ );
+ </script>
+</body>
+</html>
+
+
+
diff --git a/examples/webenginewidgets/markdowneditor/resources/markdowneditor.qrc b/examples/webenginewidgets/markdowneditor/resources/markdowneditor.qrc
new file mode 100644
index 000000000..bc738f1cf
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/resources/markdowneditor.qrc
@@ -0,0 +1,8 @@
+<RCC>
+ <qresource prefix="/">
+ <file>default.md</file>
+ <file>index.html</file>
+ <file>3rdparty/markdown.css</file>
+ <file>3rdparty/marked.js</file>
+ </qresource>
+</RCC>
diff --git a/examples/webenginewidgets/markdowneditor/ui_mainwindow.py b/examples/webenginewidgets/markdowneditor/ui_mainwindow.py
new file mode 100644
index 000000000..0be769119
--- /dev/null
+++ b/examples/webenginewidgets/markdowneditor/ui_mainwindow.py
@@ -0,0 +1,115 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'mainwindow.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
+ QCursor, QFont, QFontDatabase, QGradient,
+ QIcon, QImage, QKeySequence, QLinearGradient,
+ QPainter, QPalette, QPixmap, QRadialGradient,
+ QTransform)
+from PySide6.QtWebEngineWidgets import QWebEngineView
+from PySide6.QtWidgets import (QApplication, QHBoxLayout, QMainWindow, QMenu,
+ QMenuBar, QPlainTextEdit, QSizePolicy, QSplitter,
+ QStatusBar, QWidget)
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ if not MainWindow.objectName():
+ MainWindow.setObjectName(u"MainWindow")
+ MainWindow.resize(800, 600)
+ self.actionOpen = QAction(MainWindow)
+ self.actionOpen.setObjectName(u"actionOpen")
+ self.actionSave = QAction(MainWindow)
+ self.actionSave.setObjectName(u"actionSave")
+ self.actionExit = QAction(MainWindow)
+ self.actionExit.setObjectName(u"actionExit")
+ self.actionSaveAs = QAction(MainWindow)
+ self.actionSaveAs.setObjectName(u"actionSaveAs")
+ self.actionNew = QAction(MainWindow)
+ self.actionNew.setObjectName(u"actionNew")
+ self.centralwidget = QWidget(MainWindow)
+ self.centralwidget.setObjectName(u"centralwidget")
+ self.horizontalLayout = QHBoxLayout(self.centralwidget)
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.splitter = QSplitter(self.centralwidget)
+ self.splitter.setObjectName(u"splitter")
+ self.splitter.setOrientation(Qt.Horizontal)
+ self.editor = QPlainTextEdit(self.splitter)
+ self.editor.setObjectName(u"editor")
+ self.splitter.addWidget(self.editor)
+ self.preview = QWebEngineView(self.splitter)
+ self.preview.setObjectName(u"preview")
+ self.splitter.addWidget(self.preview)
+
+ self.horizontalLayout.addWidget(self.splitter)
+
+ MainWindow.setCentralWidget(self.centralwidget)
+ self.menubar = QMenuBar(MainWindow)
+ self.menubar.setObjectName(u"menubar")
+ self.menubar.setGeometry(QRect(0, 0, 800, 26))
+ self.menu_File = QMenu(self.menubar)
+ self.menu_File.setObjectName(u"menu_File")
+ MainWindow.setMenuBar(self.menubar)
+ self.statusbar = QStatusBar(MainWindow)
+ self.statusbar.setObjectName(u"statusbar")
+ MainWindow.setStatusBar(self.statusbar)
+
+ self.menubar.addAction(self.menu_File.menuAction())
+ self.menu_File.addAction(self.actionNew)
+ self.menu_File.addAction(self.actionOpen)
+ self.menu_File.addAction(self.actionSave)
+ self.menu_File.addAction(self.actionSaveAs)
+ self.menu_File.addSeparator()
+ self.menu_File.addAction(self.actionExit)
+
+ self.retranslateUi(MainWindow)
+
+ QMetaObject.connectSlotsByName(MainWindow)
+ # setupUi
+
+ def retranslateUi(self, MainWindow):
+ MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MarkDown Editor", None))
+ self.actionOpen.setText(QCoreApplication.translate("MainWindow", u"&Open...", None))
+#if QT_CONFIG(tooltip)
+ self.actionOpen.setToolTip(QCoreApplication.translate("MainWindow", u"Open document", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionOpen.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+O", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionSave.setText(QCoreApplication.translate("MainWindow", u"&Save", None))
+#if QT_CONFIG(tooltip)
+ self.actionSave.setToolTip(QCoreApplication.translate("MainWindow", u"Save current document", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionSave.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+S", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionExit.setText(QCoreApplication.translate("MainWindow", u"E&xit", None))
+#if QT_CONFIG(tooltip)
+ self.actionExit.setToolTip(QCoreApplication.translate("MainWindow", u"Exit editor", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionExit.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+Q", None))
+#endif // QT_CONFIG(shortcut)
+ self.actionSaveAs.setText(QCoreApplication.translate("MainWindow", u"Save &As...", None))
+#if QT_CONFIG(tooltip)
+ self.actionSaveAs.setToolTip(QCoreApplication.translate("MainWindow", u"Save document under different name", None))
+#endif // QT_CONFIG(tooltip)
+ self.actionNew.setText(QCoreApplication.translate("MainWindow", u"&New", None))
+#if QT_CONFIG(tooltip)
+ self.actionNew.setToolTip(QCoreApplication.translate("MainWindow", u"Create new document", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(shortcut)
+ self.actionNew.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+N", None))
+#endif // QT_CONFIG(shortcut)
+ self.menu_File.setTitle(QCoreApplication.translate("MainWindow", u"&File", None))
+ # retranslateUi
+
diff --git a/examples/webenginewidgets/notifications/doc/notifications.png b/examples/webenginewidgets/notifications/doc/notifications.png
new file mode 100644
index 000000000..3540be8d1
--- /dev/null
+++ b/examples/webenginewidgets/notifications/doc/notifications.png
Binary files differ
diff --git a/examples/webenginewidgets/notifications/doc/notifications.rst b/examples/webenginewidgets/notifications/doc/notifications.rst
new file mode 100644
index 000000000..a06ebfbc5
--- /dev/null
+++ b/examples/webenginewidgets/notifications/doc/notifications.rst
@@ -0,0 +1,8 @@
+WebEngine Notifications Example
+===============================
+
+Python port of C++ `WebEngine Notifications <https://doc.qt.io/qt-6/qtwebengine-webenginewidgets-notifications-example.html>`_
+
+.. image:: notifications.png
+ :width: 400
+ :alt: Notifications Example Screenshot
diff --git a/examples/webenginewidgets/notifications/main.py b/examples/webenginewidgets/notifications/main.py
new file mode 100644
index 000000000..b59aead97
--- /dev/null
+++ b/examples/webenginewidgets/notifications/main.py
@@ -0,0 +1,57 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 WebEngineWidgets Notifications Example"""
+
+import sys
+from pathlib import Path
+
+from PySide6.QtCore import QUrl, QCoreApplication
+from PySide6.QtWidgets import QApplication
+from PySide6.QtWebEngineCore import QWebEnginePage
+from PySide6.QtWebEngineWidgets import QWebEngineView
+from PySide6.QtGui import QDesktopServices
+
+from notificationpopup import NotificationPopup
+
+
+class WebEnginePage(QWebEnginePage):
+ def __init__(self, parent):
+ super().__init__(parent)
+
+ def acceptNavigationRequest(self, url: QUrl, *_):
+ if url.scheme != "https":
+ return True
+ QDesktopServices.openUrl(url)
+ return False
+
+
+if __name__ == '__main__':
+
+ src_dir = Path(__file__).resolve().parent
+ QCoreApplication.setOrganizationName("QtProject")
+ app = QApplication(sys.argv)
+ view = QWebEngineView()
+
+ # set custom page to open all page's links for https scheme in system browser
+ view.setPage(WebEnginePage(view))
+
+ def set_feature_permission(origin: QUrl, feature: QWebEnginePage.Feature):
+ if feature != QWebEnginePage.Notifications:
+ return
+
+ view.page().setFeaturePermission(origin, feature, QWebEnginePage.PermissionGrantedByUser)
+
+ view.page().featurePermissionRequested.connect(set_feature_permission)
+ profile = view.page().profile()
+ popup = NotificationPopup(view)
+
+ def presentNotification(notification):
+ popup.present(notification)
+
+ profile.setNotificationPresenter(presentNotification)
+ view.resize(640, 480)
+ view.show()
+ view.setUrl(QUrl.fromLocalFile(src_dir / "resources" / "index.html"))
+
+ sys.exit(app.exec())
diff --git a/examples/webenginewidgets/notifications/notificationpopup.py b/examples/webenginewidgets/notifications/notificationpopup.py
new file mode 100644
index 000000000..e68ce3d6f
--- /dev/null
+++ b/examples/webenginewidgets/notifications/notificationpopup.py
@@ -0,0 +1,68 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Qt, QTimer, QPoint, Slot
+from PySide6.QtWidgets import (QWidget, QHBoxLayout, QLabel, QVBoxLayout, QSpacerItem, QSizePolicy,
+ QPushButton)
+from PySide6.QtWebEngineCore import QWebEngineNotification
+from PySide6.QtGui import QPixmap, QMouseEvent
+
+
+class NotificationPopup(QWidget):
+ def __init__(self, parent) -> None:
+ super().__init__(parent)
+ self.notification = None
+ self.m_icon, self.m_title, self.m_message = QLabel(), QLabel(), QLabel()
+ self.setWindowFlags(Qt.ToolTip)
+
+ rootLayout = QHBoxLayout(self)
+ rootLayout.addWidget(self.m_icon)
+
+ bodyLayout = QVBoxLayout()
+ rootLayout.addLayout(bodyLayout)
+
+ titleLayout = QHBoxLayout()
+ bodyLayout.addLayout(titleLayout)
+
+ titleLayout.addWidget(self.m_title)
+ titleLayout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding))
+
+ close = QPushButton("Close")
+ titleLayout.addWidget(close)
+ close.clicked.connect(self.onClosed)
+
+ bodyLayout.addWidget(self.m_message)
+ self.adjustSize()
+
+ def present(self, newNotification: QWebEngineNotification):
+ if self.notification:
+ self.notification.close()
+
+ self.notification = newNotification
+
+ self.m_title.setText("<b>" + self.notification.title() + "</b>")
+ self.m_message.setText(self.notification.message())
+ self.m_icon.setPixmap(QPixmap.fromImage(self.notification.icon())
+ .scaledToHeight(self.m_icon.height()))
+
+ self.show()
+ self.notification.show()
+
+ self.notification.closed.connect(self.onClosed)
+ QTimer.singleShot(10000, lambda: self.onClosed())
+
+ self.move(self.parentWidget().mapToGlobal(self.parentWidget().rect().bottomRight()
+ - QPoint(self.width() + 10, self.height() + 10)))
+
+ @Slot()
+ def onClosed(self):
+ self.hide()
+ if self.notification:
+ self.notification.close()
+ self.notification = None
+
+ def mouseReleaseEvent(self, event: QMouseEvent) -> None:
+ QWidget.mouseReleaseEvent(event)
+ if self.notification and event.button() == Qt.LeftButton:
+ self.notification.click()
+ self.onClosed()
diff --git a/examples/webenginewidgets/notifications/notifications.pyproject b/examples/webenginewidgets/notifications/notifications.pyproject
new file mode 100644
index 000000000..0a3d3c4c5
--- /dev/null
+++ b/examples/webenginewidgets/notifications/notifications.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "notificationpopup.py"]
+}
diff --git a/examples/webenginewidgets/notifications/resources/icon.png b/examples/webenginewidgets/notifications/resources/icon.png
new file mode 100644
index 000000000..4c3870c06
--- /dev/null
+++ b/examples/webenginewidgets/notifications/resources/icon.png
Binary files differ
diff --git a/examples/webenginewidgets/notifications/resources/index.html b/examples/webenginewidgets/notifications/resources/index.html
new file mode 100644
index 000000000..99dbac683
--- /dev/null
+++ b/examples/webenginewidgets/notifications/resources/index.html
@@ -0,0 +1,91 @@
+<!doctype html>
+<html>
+<head>
+<title>Web Notifications Example</title>
+<script>
+ var notificationsCreated = 0
+
+ function getPermission() { return document.Notification }
+ function resetPermission(permission = 'default') {
+ document.Notification = permission
+ document.getElementById('state').value = getPermission()
+ }
+
+ function createNotification() {
+ let title = 'Notification #' + ++notificationsCreated
+ let options = { body: 'Visit doc.qt.io for more info!', icon: 'icon.png', }
+
+ let notification = new Notification(title, options)
+ document.notification = notification
+
+ notification.onerror = function(error) {
+ document.getElementById('act').value += ' with error'
+ document.notification = null
+ }
+ notification.onshow = function() {
+ document.getElementById('act').value += ', shown'
+ document.getElementById('close').style.display = 'inline'
+ }
+ notification.onclick = function() {
+ document.getElementById('act').value += ', clicked'
+ }
+ notification.onclose = function() {
+ if (document.notification && notification == document.notification) {
+ document.getElementById('act').value += ' and closed'
+ document.getElementById('close').style.display = 'none'
+ document.notification = null
+ }
+ }
+
+ console.log('...notification created [Title: ' + title + ']')
+ document.getElementById('act').value = 'Notification was created'
+ }
+
+ function onMakeNotification() {
+ if (getPermission() == 'granted') {
+ createNotification()
+ } else if (getPermission() == 'denied') {
+ setTimeout(function() {
+ if (window.confirm('Notifications are disabled!\n' +
+ 'Permission needs to be granted by user. Reset?'))
+ resetPermission()
+ }, 1)
+ } else {
+ Notification.requestPermission().then(function (permission) {
+ console.info('notifications request: ' + permission)
+ resetPermission(permission)
+ if (permission == 'granted')
+ createNotification()
+ })
+ }
+ }
+
+ function closeNotification() { if (document.notification) document.notification.close() }
+
+ document.addEventListener('DOMContentLoaded', function() {
+ resetPermission(Notification.permission) })
+</script>
+</head>
+<body style='text-align:center;'>
+ <h3>Click the button to send a notification</h3>
+
+ <button onclick='onMakeNotification()'>Notify!</button>
+
+ <p>
+ <output id='act'></output>
+ <button id='close' style='display: none;' onclick='closeNotification()'>Close</button>
+ </p><br>
+
+ <p>
+ <label for='state'>Permission:</label>
+ <output id='state'></output>
+ <button onclick='resetPermission()'>Reset</button>
+ </p><br>
+
+ <h4>More info can be found on:</h4>
+ <ul style='list-style-type: none;'>
+ <li>W3 <a href='https://www.w3.org/TR/notifications'>Web Notifications</a> standard</li>
+ <li>Documentation for <a href='https://doc.qt.io'>Qt WebEngine</a> module</li>
+ </ul>
+</body>
+</html>
diff --git a/examples/webenginewidgets/simplebrowser/browser.py b/examples/webenginewidgets/simplebrowser/browser.py
new file mode 100644
index 000000000..a124ea084
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/browser.py
@@ -0,0 +1,69 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWebEngineCore import (qWebEngineChromiumVersion,
+ QWebEngineProfile, QWebEngineSettings)
+from PySide6.QtCore import QObject, Qt, Slot
+
+from downloadmanagerwidget import DownloadManagerWidget
+from browserwindow import BrowserWindow
+
+
+class Browser(QObject):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._windows = []
+ self._download_manager_widget = DownloadManagerWidget()
+ self._profile = None
+
+ # Quit application if the download manager window is the only
+ # remaining window
+ self._download_manager_widget.setAttribute(Qt.WA_QuitOnClose, False)
+
+ dp = QWebEngineProfile.defaultProfile()
+ dp.downloadRequested.connect(self._download_manager_widget.download_requested)
+
+ def create_hidden_window(self, offTheRecord=False):
+ if not offTheRecord and not self._profile:
+ name = "simplebrowser." + qWebEngineChromiumVersion()
+ self._profile = QWebEngineProfile(name)
+ s = self._profile.settings()
+ s.setAttribute(QWebEngineSettings.PluginsEnabled, True)
+ s.setAttribute(QWebEngineSettings.DnsPrefetchEnabled, True)
+ s.setAttribute(QWebEngineSettings.LocalContentCanAccessRemoteUrls, True)
+ s.setAttribute(QWebEngineSettings.LocalContentCanAccessFileUrls, False)
+ self._profile.downloadRequested.connect(
+ self._download_manager_widget.download_requested)
+
+ profile = QWebEngineProfile.defaultProfile() if offTheRecord else self._profile
+ main_window = BrowserWindow(self, profile, False)
+ self._windows.append(main_window)
+ main_window.about_to_close.connect(self._remove_window)
+ return main_window
+
+ def create_window(self, offTheRecord=False):
+ main_window = self.create_hidden_window(offTheRecord)
+ main_window.show()
+ return main_window
+
+ def create_dev_tools_window(self):
+ profile = (self._profile if self._profile
+ else QWebEngineProfile.defaultProfile())
+ main_window = BrowserWindow(self, profile, True)
+ self._windows.append(main_window)
+ main_window.about_to_close.connect(self._remove_window)
+ main_window.show()
+ return main_window
+
+ def windows(self):
+ return self._windows
+
+ def download_manager_widget(self):
+ return self._download_manager_widget
+
+ @Slot()
+ def _remove_window(self):
+ w = self.sender()
+ if w in self._windows:
+ del self._windows[self._windows.index(w)]
diff --git a/examples/webenginewidgets/simplebrowser/browserwindow.py b/examples/webenginewidgets/simplebrowser/browserwindow.py
new file mode 100644
index 000000000..43b811200
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/browserwindow.py
@@ -0,0 +1,500 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtWebEngineCore import QWebEnginePage
+from PySide6.QtWidgets import (QMainWindow, QFileDialog,
+ QInputDialog, QLineEdit, QMenu, QMessageBox,
+ QProgressBar, QToolBar, QVBoxLayout, QWidget)
+from PySide6.QtGui import QAction, QGuiApplication, QIcon, QKeySequence
+from PySide6.QtCore import QUrl, Qt, Slot, Signal
+
+from tabwidget import TabWidget
+
+
+def remove_backspace(keys):
+ result = keys.copy()
+ # Chromium already handles navigate on backspace when appropriate.
+ for i, key in enumerate(result):
+ if (key[0].key() & Qt.Key_unknown) == Qt.Key_Backspace:
+ del result[i]
+ break
+ return result
+
+
+class BrowserWindow(QMainWindow):
+
+ about_to_close = Signal()
+
+ def __init__(self, browser, profile, forDevTools):
+ super().__init__()
+
+ self._progress_bar = None
+ self._history_back_action = None
+ self._history_forward_action = None
+ self._stop_action = None
+ self._reload_action = None
+ self._stop_reload_action = None
+ self._url_line_edit = None
+ self._fav_action = None
+ self._last_search = ""
+ self._toolbar = None
+
+ self._browser = browser
+ self._profile = profile
+ self._tab_widget = TabWidget(profile, self)
+
+ self._stop_icon = QIcon.fromTheme(QIcon.ThemeIcon.ProcessStop,
+ QIcon(":process-stop.png"))
+ self._reload_icon = QIcon.fromTheme(QIcon.ThemeIcon.ViewRefresh,
+ QIcon(":view-refresh.png"))
+
+ self.setAttribute(Qt.WA_DeleteOnClose, True)
+ self.setFocusPolicy(Qt.ClickFocus)
+
+ if not forDevTools:
+ self._progress_bar = QProgressBar(self)
+
+ self._toolbar = self.create_tool_bar()
+ self.addToolBar(self._toolbar)
+ mb = self.menuBar()
+ mb.addMenu(self.create_file_menu(self._tab_widget))
+ mb.addMenu(self.create_edit_menu())
+ mb.addMenu(self.create_view_menu())
+ mb.addMenu(self.create_window_menu(self._tab_widget))
+ mb.addMenu(self.create_help_menu())
+
+ central_widget = QWidget(self)
+ layout = QVBoxLayout(central_widget)
+ layout.setSpacing(0)
+ layout.setContentsMargins(0, 0, 0, 0)
+ if not forDevTools:
+ self.addToolBarBreak()
+
+ self._progress_bar.setMaximumHeight(1)
+ self._progress_bar.setTextVisible(False)
+ s = "QProgressBar {border: 0px} QProgressBar.chunk {background-color: #da4453}"
+ self._progress_bar.setStyleSheet(s)
+
+ layout.addWidget(self._progress_bar)
+
+ layout.addWidget(self._tab_widget)
+ self.setCentralWidget(central_widget)
+
+ self._tab_widget.title_changed.connect(self.handle_web_view_title_changed)
+ if not forDevTools:
+ self._tab_widget.link_hovered.connect(self._show_status_message)
+ self._tab_widget.load_progress.connect(self.handle_web_view_load_progress)
+ self._tab_widget.web_action_enabled_changed.connect(
+ self.handle_web_action_enabled_changed)
+ self._tab_widget.url_changed.connect(self._url_changed)
+ self._tab_widget.fav_icon_changed.connect(self._fav_action.setIcon)
+ self._tab_widget.dev_tools_requested.connect(self.handle_dev_tools_requested)
+ self._url_line_edit.returnPressed.connect(self._address_return_pressed)
+ self._tab_widget.find_text_finished.connect(self.handle_find_text_finished)
+
+ focus_url_line_edit_action = QAction(self)
+ self.addAction(focus_url_line_edit_action)
+ focus_url_line_edit_action.setShortcut(QKeySequence(Qt.CTRL | Qt.Key_L))
+ focus_url_line_edit_action.triggered.connect(self._focus_url_lineEdit)
+
+ self.handle_web_view_title_changed("")
+ self._tab_widget.create_tab()
+
+ @Slot(str)
+ def _show_status_message(self, m):
+ self.statusBar().showMessage(m)
+
+ @Slot(QUrl)
+ def _url_changed(self, url):
+ self._url_line_edit.setText(url.toDisplayString())
+
+ @Slot()
+ def _address_return_pressed(self):
+ url = QUrl.fromUserInput(self._url_line_edit.text())
+ self._tab_widget.set_url(url)
+
+ @Slot()
+ def _focus_url_lineEdit(self):
+ self._url_line_edit.setFocus(Qt.ShortcutFocusReason)
+
+ @Slot()
+ def _new_tab(self):
+ self._tab_widget.create_tab()
+ self._url_line_edit.setFocus()
+
+ @Slot()
+ def _close_current_tab(self):
+ self._tab_widget.close_tab(self._tab_widget.currentIndex())
+
+ @Slot()
+ def _update_close_action_text(self):
+ last_win = len(self._browser.windows()) == 1
+ self._close_action.setText("Quit" if last_win else "Close Window")
+
+ def sizeHint(self):
+ desktop_rect = QGuiApplication.primaryScreen().geometry()
+ return desktop_rect.size() * 0.9
+
+ def create_file_menu(self, tabWidget):
+ file_menu = QMenu("File")
+ file_menu.addAction("&New Window", QKeySequence.New,
+ self.handle_new_window_triggered)
+ file_menu.addAction("New &Incognito Window",
+ self.handle_new_incognito_window_triggered)
+
+ new_tab_action = QAction("New Tab", self)
+ new_tab_action.setShortcuts(QKeySequence.AddTab)
+ new_tab_action.triggered.connect(self._new_tab)
+ file_menu.addAction(new_tab_action)
+
+ file_menu.addAction("&Open File...", QKeySequence.Open,
+ self.handle_file_open_triggered)
+ file_menu.addSeparator()
+
+ close_tab_action = QAction("Close Tab", self)
+ close_tab_action.setShortcuts(QKeySequence.Close)
+ close_tab_action.triggered.connect(self._close_current_tab)
+ file_menu.addAction(close_tab_action)
+
+ self._close_action = QAction("Quit", self)
+ self._close_action.setShortcut(QKeySequence(Qt.CTRL | Qt.Key_Q))
+ self._close_action.triggered.connect(self.close)
+ file_menu.addAction(self._close_action)
+
+ file_menu.aboutToShow.connect(self._update_close_action_text)
+ return file_menu
+
+ @Slot()
+ def _find_next(self):
+ tab = self.current_tab()
+ if tab and self._last_search:
+ tab.findText(self._last_search)
+
+ @Slot()
+ def _find_previous(self):
+ tab = self.current_tab()
+ if tab and self._last_search:
+ tab.findText(self._last_search, QWebEnginePage.FindBackward)
+
+ def create_edit_menu(self):
+ edit_menu = QMenu("Edit")
+ find_action = edit_menu.addAction("Find")
+ find_action.setShortcuts(QKeySequence.Find)
+ find_action.triggered.connect(self.handle_find_action_triggered)
+
+ find_next_action = edit_menu.addAction("Find Next")
+ find_next_action.setShortcut(QKeySequence.FindNext)
+ find_next_action.triggered.connect(self._find_next)
+
+ find_previous_action = edit_menu.addAction("Find Previous")
+ find_previous_action.setShortcut(QKeySequence.FindPrevious)
+ find_previous_action.triggered.connect(self._find_previous)
+ return edit_menu
+
+ @Slot()
+ def _stop(self):
+ self._tab_widget.trigger_web_page_action(QWebEnginePage.Stop)
+
+ @Slot()
+ def _reload(self):
+ self._tab_widget.trigger_web_page_action(QWebEnginePage.Reload)
+
+ @Slot()
+ def _zoom_in(self):
+ tab = self.current_tab()
+ if tab:
+ tab.setZoomFactor(tab.zoomFactor() + 0.1)
+
+ @Slot()
+ def _zoom_out(self):
+ tab = self.current_tab()
+ if tab:
+ tab.setZoomFactor(tab.zoomFactor() - 0.1)
+
+ @Slot()
+ def _reset_zoom(self):
+ tab = self.current_tab()
+ if tab:
+ tab.setZoomFactor(1)
+
+ @Slot()
+ def _toggle_toolbar(self):
+ if self._toolbar.isVisible():
+ self._view_toolbar_action.setText("Show Toolbar")
+ self._toolbar.close()
+ else:
+ self._view_toolbar_action.setText("Hide Toolbar")
+ self._toolbar.show()
+
+ @Slot()
+ def _toggle_statusbar(self):
+ sb = self.statusBar()
+ if sb.isVisible():
+ self._view_statusbar_action.setText("Show Status Bar")
+ sb.close()
+ else:
+ self._view_statusbar_action.setText("Hide Status Bar")
+ sb.show()
+
+ def create_view_menu(self):
+ view_menu = QMenu("View")
+ self._stop_action = view_menu.addAction("Stop")
+ shortcuts = []
+ shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_Period))
+ shortcuts.append(QKeySequence(Qt.Key_Escape))
+ self._stop_action.setShortcuts(shortcuts)
+ self._stop_action.triggered.connect(self._stop)
+
+ self._reload_action = view_menu.addAction("Reload Page")
+ self._reload_action.setShortcuts(QKeySequence.Refresh)
+ self._reload_action.triggered.connect(self._reload)
+
+ zoom_in = view_menu.addAction("Zoom In")
+ zoom_in.setShortcut(QKeySequence(Qt.CTRL | Qt.Key_Plus))
+ zoom_in.triggered.connect(self._zoom_in)
+
+ zoom_out = view_menu.addAction("Zoom Out")
+ zoom_out.setShortcut(QKeySequence(Qt.CTRL | Qt.Key_Minus))
+ zoom_out.triggered.connect(self._zoom_out)
+
+ reset_zoom = view_menu.addAction("Reset Zoom")
+ reset_zoom.setShortcut(QKeySequence(Qt.CTRL | Qt.Key_0))
+ reset_zoom.triggered.connect(self._reset_zoom)
+
+ view_menu.addSeparator()
+ self._view_toolbar_action = QAction("Hide Toolbar", self)
+ self._view_toolbar_action.setShortcut("Ctrl+|")
+ self._view_toolbar_action.triggered.connect(self._toggle_toolbar)
+ view_menu.addAction(self._view_toolbar_action)
+
+ self._view_statusbar_action = QAction("Hide Status Bar", self)
+ self._view_statusbar_action.setShortcut("Ctrl+/")
+ self._view_statusbar_action.triggered.connect(self._toggle_statusbar)
+ view_menu.addAction(self._view_statusbar_action)
+ return view_menu
+
+ @Slot()
+ def _emit_dev_tools_requested(self):
+ tab = self.current_tab()
+ if tab:
+ tab.dev_tools_requested.emit(tab.page())
+
+ def create_window_menu(self, tabWidget):
+ menu = QMenu("Window")
+ self._next_tab_action = QAction("Show Next Tab", self)
+ shortcuts = []
+ shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_BraceRight))
+ shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_PageDown))
+ shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_BracketRight))
+ shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_Less))
+ self._next_tab_action.setShortcuts(shortcuts)
+ self._next_tab_action.triggered.connect(tabWidget.next_tab)
+
+ self._previous_tab_action = QAction("Show Previous Tab", self)
+ shortcuts.clear()
+ shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_BraceLeft))
+ shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_PageUp))
+ shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_BracketLeft))
+ shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_Greater))
+ self._previous_tab_action.setShortcuts(shortcuts)
+ self._previous_tab_action.triggered.connect(tabWidget.previous_tab)
+
+ self._inspector_action = QAction("Open inspector in window", self)
+ shortcuts.clear()
+ shortcuts.append(QKeySequence(Qt.CTRL | Qt.SHIFT | Qt.Key_I))
+ self._inspector_action.setShortcuts(shortcuts)
+ self._inspector_action.triggered.connect(self._emit_dev_tools_requested)
+ self._window_menu = menu
+ menu.aboutToShow.connect(self._populate_window_menu)
+ return menu
+
+ def _populate_window_menu(self):
+ menu = self._window_menu
+ menu.clear()
+ menu.addAction(self._next_tab_action)
+ menu.addAction(self._previous_tab_action)
+ menu.addSeparator()
+ menu.addAction(self._inspector_action)
+ menu.addSeparator()
+ windows = self._browser.windows()
+ index = 0
+ title = self.window().windowTitle()
+ for window in windows:
+ action = menu.addAction(title, self.handle_show_window_triggered)
+ action.setData(index)
+ action.setCheckable(True)
+ if window == self:
+ action.setChecked(True)
+ index += 1
+
+ def create_help_menu(self):
+ help_menu = QMenu("Help")
+ help_menu.addAction("About Qt", qApp.aboutQt) # noqa: F821
+ return help_menu
+
+ @Slot()
+ def _back(self):
+ self._tab_widget.trigger_web_page_action(QWebEnginePage.Back)
+
+ @Slot()
+ def _forward(self):
+ self._tab_widget.trigger_web_page_action(QWebEnginePage.Forward)
+
+ @Slot()
+ def _stop_reload(self):
+ a = self._stop_reload_action.data()
+ self._tab_widget.trigger_web_page_action(QWebEnginePage.WebAction(a))
+
+ def create_tool_bar(self):
+ navigation_bar = QToolBar("Navigation")
+ navigation_bar.setMovable(False)
+ navigation_bar.toggleViewAction().setEnabled(False)
+
+ self._history_back_action = QAction(self)
+ back_shortcuts = remove_backspace(QKeySequence.keyBindings(QKeySequence.Back))
+
+ # For some reason Qt doesn't bind the dedicated Back key to Back.
+ back_shortcuts.append(QKeySequence(Qt.Key_Back))
+ self._history_back_action.setShortcuts(back_shortcuts)
+ self._history_back_action.setIconVisibleInMenu(False)
+ back_icon = QIcon.fromTheme(QIcon.ThemeIcon.GoPrevious,
+ QIcon(":go-previous.png"))
+ self._history_back_action.setIcon(back_icon)
+ self._history_back_action.setToolTip("Go back in history")
+ self._history_back_action.triggered.connect(self._back)
+ navigation_bar.addAction(self._history_back_action)
+
+ self._history_forward_action = QAction(self)
+ fwd_shortcuts = remove_backspace(QKeySequence.keyBindings(QKeySequence.Forward))
+ fwd_shortcuts.append(QKeySequence(Qt.Key_Forward))
+ self._history_forward_action.setShortcuts(fwd_shortcuts)
+ self._history_forward_action.setIconVisibleInMenu(False)
+ next_icon = QIcon.fromTheme(QIcon.ThemeIcon.GoNext,
+ QIcon(":go-next.png"))
+ self._history_forward_action.setIcon(next_icon)
+ self._history_forward_action.setToolTip("Go forward in history")
+ self._history_forward_action.triggered.connect(self._forward)
+ navigation_bar.addAction(self._history_forward_action)
+
+ self._stop_reload_action = QAction(self)
+ self._stop_reload_action.triggered.connect(self._stop_reload)
+ navigation_bar.addAction(self._stop_reload_action)
+
+ self._url_line_edit = QLineEdit(self)
+ self._fav_action = QAction(self)
+ self._url_line_edit.addAction(self._fav_action, QLineEdit.LeadingPosition)
+ self._url_line_edit.setClearButtonEnabled(True)
+ navigation_bar.addWidget(self._url_line_edit)
+
+ downloads_action = QAction(self)
+ downloads_action.setIcon(QIcon(":go-bottom.png"))
+ downloads_action.setToolTip("Show downloads")
+ navigation_bar.addAction(downloads_action)
+ dw = self._browser.download_manager_widget()
+ downloads_action.triggered.connect(dw.show)
+
+ return navigation_bar
+
+ def handle_web_action_enabled_changed(self, action, enabled):
+ if action == QWebEnginePage.Back:
+ self._history_back_action.setEnabled(enabled)
+ elif action == QWebEnginePage.Forward:
+ self._history_forward_action.setEnabled(enabled)
+ elif action == QWebEnginePage.Reload:
+ self._reload_action.setEnabled(enabled)
+ elif action == QWebEnginePage.Stop:
+ self._stop_action.setEnabled(enabled)
+ else:
+ print("Unhandled webActionChanged signal", file=sys.stderr)
+
+ def handle_web_view_title_changed(self, title):
+ off_the_record = self._profile.isOffTheRecord()
+ suffix = ("Qt Simple Browser (Incognito)" if off_the_record
+ else "Qt Simple Browser")
+ if title:
+ self.setWindowTitle(f"{title} - {suffix}")
+ else:
+ self.setWindowTitle(suffix)
+
+ def handle_new_window_triggered(self):
+ window = self._browser.create_window()
+ window._url_line_edit.setFocus()
+
+ def handle_new_incognito_window_triggered(self):
+ window = self._browser.create_window(True)
+ window._url_line_edit.setFocus()
+
+ def handle_file_open_triggered(self):
+ filter = "Web Resources (*.html *.htm *.svg *.png *.gif *.svgz);;All files (*.*)"
+ url, _ = QFileDialog.getOpenFileUrl(self, "Open Web Resource", "", filter)
+ if url:
+ self.current_tab().setUrl(url)
+
+ def handle_find_action_triggered(self):
+ if not self.current_tab():
+ return
+ search, ok = QInputDialog.getText(self, "Find", "Find:",
+ QLineEdit.Normal, self._last_search)
+ if ok and search:
+ self._last_search = search
+ self.current_tab().findText(self._last_search)
+
+ def closeEvent(self, event):
+ count = self._tab_widget.count()
+ if count > 1:
+ m = f"Are you sure you want to close the window?\nThere are {count} tabs open."
+ ret = QMessageBox.warning(self, "Confirm close", m,
+ QMessageBox.Yes | QMessageBox.No,
+ QMessageBox.No)
+ if ret == QMessageBox.No:
+ event.ignore()
+ return
+
+ event.accept()
+ self.about_to_close.emit()
+ self.deleteLater()
+
+ def tab_widget(self):
+ return self._tab_widget
+
+ def current_tab(self):
+ return self._tab_widget.current_web_view()
+
+ def handle_web_view_load_progress(self, progress):
+ if 0 < progress and progress < 100:
+ self._stop_reload_action.setData(QWebEnginePage.Stop)
+ self._stop_reload_action.setIcon(self._stop_icon)
+ self._stop_reload_action.setToolTip("Stop loading the current page")
+ self._progress_bar.setValue(progress)
+ else:
+ self._stop_reload_action.setData(QWebEnginePage.Reload)
+ self._stop_reload_action.setIcon(self._reload_icon)
+ self._stop_reload_action.setToolTip("Reload the current page")
+ self._progress_bar.setValue(0)
+
+ def handle_show_window_triggered(self):
+ action = self.sender()
+ if action:
+ offset = action.data()
+ window = self._browser.windows()[offset]
+ window.activateWindow()
+ window.current_tab().setFocus()
+
+ def handle_dev_tools_requested(self, source):
+ page = self._browser.create_dev_tools_window().current_tab().page()
+ source.setDevToolsPage(page)
+ source.triggerAction(QWebEnginePage.InspectElement)
+
+ def handle_find_text_finished(self, result):
+ sb = self.statusBar()
+ if result.numberOfMatches() == 0:
+ sb.showMessage(f'"{self._lastSearch}" not found.')
+ else:
+ active = result.activeMatch()
+ number = result.numberOfMatches()
+ sb.showMessage(f'"{self._last_search}" found: {active}/{number}')
+
+ def browser(self):
+ return self._browser
diff --git a/examples/webenginewidgets/simplebrowser/certificateerrordialog.ui b/examples/webenginewidgets/simplebrowser/certificateerrordialog.ui
new file mode 100644
index 000000000..a97f25b6e
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/certificateerrordialog.ui
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>CertificateErrorDialog</class>
+ <widget class="QDialog" name="CertificateErrorDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>370</width>
+ <height>141</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Dialog</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="leftMargin">
+ <number>20</number>
+ </property>
+ <property name="rightMargin">
+ <number>20</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="m_iconLabel">
+ <property name="text">
+ <string>Icon</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="m_errorLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Error</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="m_infoLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>If you wish so, you may continue with an unverified certificate. Accepting an unverified certificate mean you may not be connected with the host you tried to connect to.
+
+Do you wish to override the security check and continue ? </string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>16</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::No|QDialogButtonBox::Yes</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>CertificateErrorDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>CertificateErrorDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/examples/webenginewidgets/simplebrowser/data/3rdparty/COPYING b/examples/webenginewidgets/simplebrowser/data/3rdparty/COPYING
new file mode 100644
index 000000000..220881da6
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/3rdparty/COPYING
@@ -0,0 +1 @@
+The icons in this repository are herefore released into the Public Domain.
diff --git a/examples/webenginewidgets/simplebrowser/data/3rdparty/dialog-error.png b/examples/webenginewidgets/simplebrowser/data/3rdparty/dialog-error.png
new file mode 100644
index 000000000..cdd95bade
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/3rdparty/dialog-error.png
Binary files differ
diff --git a/examples/webenginewidgets/simplebrowser/data/3rdparty/edit-clear.png b/examples/webenginewidgets/simplebrowser/data/3rdparty/edit-clear.png
new file mode 100644
index 000000000..5542948bc
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/3rdparty/edit-clear.png
Binary files differ
diff --git a/examples/webenginewidgets/simplebrowser/data/3rdparty/go-bottom.png b/examples/webenginewidgets/simplebrowser/data/3rdparty/go-bottom.png
new file mode 100644
index 000000000..bf973fedc
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/3rdparty/go-bottom.png
Binary files differ
diff --git a/examples/webenginewidgets/simplebrowser/data/3rdparty/go-next.png b/examples/webenginewidgets/simplebrowser/data/3rdparty/go-next.png
new file mode 100644
index 000000000..a68e2db77
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/3rdparty/go-next.png
Binary files differ
diff --git a/examples/webenginewidgets/simplebrowser/data/3rdparty/go-previous.png b/examples/webenginewidgets/simplebrowser/data/3rdparty/go-previous.png
new file mode 100644
index 000000000..c37bc0414
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/3rdparty/go-previous.png
Binary files differ
diff --git a/examples/webenginewidgets/simplebrowser/data/3rdparty/process-stop.png b/examples/webenginewidgets/simplebrowser/data/3rdparty/process-stop.png
new file mode 100644
index 000000000..e7a8d1722
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/3rdparty/process-stop.png
Binary files differ
diff --git a/examples/webenginewidgets/simplebrowser/data/3rdparty/qt_attribution.json b/examples/webenginewidgets/simplebrowser/data/3rdparty/qt_attribution.json
new file mode 100644
index 000000000..d81f5bf23
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/3rdparty/qt_attribution.json
@@ -0,0 +1,24 @@
+{
+ "Id": "simplebrowser-tango",
+ "Name": "Tango Icon Library",
+ "QDocModule": "qtwebengine",
+ "QtUsage": "Used in WebEngine SimpleBrowser example.",
+
+ "QtParts": [ "examples" ],
+ "Description": "Selected icons from the Tango Icon Library",
+ "Homepage": "http://tango.freedesktop.org/Tango_Icon_Library",
+ "Version": "0.8.90",
+ "DownloadLocation": "http://tango.freedesktop.org/releases/tango-icon-theme-0.8.90.tar.gz",
+ "LicenseId": "urn:dje:license:public-domain",
+ "License": "Public Domain",
+ "LicenseFile": "COPYING",
+ "Copyright": "Ulisse Perusin <uli.peru@gmail.com>
+Steven Garrity <sgarrity@silverorange.com>
+Lapo Calamandrei <calamandrei@gmail.com>
+Ryan Collier <rcollier@novell.com>
+Rodney Dawes <dobey@novell.com>
+Andreas Nilsson <nisses.mail@home.se>
+Tuomas Kuosmanen <tigert@tigert.com>
+Garrett LeSage <garrett@novell.com>
+Jakub Steiner <jimmac@novell.com>"
+}
diff --git a/examples/webenginewidgets/simplebrowser/data/3rdparty/text-html.png b/examples/webenginewidgets/simplebrowser/data/3rdparty/text-html.png
new file mode 100644
index 000000000..a896697d7
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/3rdparty/text-html.png
Binary files differ
diff --git a/examples/webenginewidgets/simplebrowser/data/3rdparty/view-refresh.png b/examples/webenginewidgets/simplebrowser/data/3rdparty/view-refresh.png
new file mode 100644
index 000000000..606ea9eba
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/3rdparty/view-refresh.png
Binary files differ
diff --git a/examples/webenginewidgets/simplebrowser/data/AppLogoColor.png b/examples/webenginewidgets/simplebrowser/data/AppLogoColor.png
new file mode 100644
index 000000000..2a4971782
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/AppLogoColor.png
Binary files differ
diff --git a/examples/webenginewidgets/simplebrowser/data/ninja.png b/examples/webenginewidgets/simplebrowser/data/ninja.png
new file mode 100644
index 000000000..e5d7b6fd7
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/ninja.png
Binary files differ
diff --git a/examples/webenginewidgets/simplebrowser/data/rc_simplebrowser.py b/examples/webenginewidgets/simplebrowser/data/rc_simplebrowser.py
new file mode 100644
index 000000000..5d5a3736a
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/rc_simplebrowser.py
@@ -0,0 +1,1391 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.5.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x06\xdf\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x06\x96IDATX\x85\xe5\x97[l\x1cW\
+\x19\xc7\x7f3\xb3\xde\xab\xd7^{}\x8d\xe38I\xeb\
+]\xe7\x82\x1b\xa3\xdaN\xda\x105\x12\x17\x89\x0a\x19!\
+\x11\x10O\x01E\x02a\xc4\xe5\xa5\xe2\x01\xa1\xc0\x0b\xbc\
+\x80DE@\x88\x16\xfc\xd0\x82\x84J\xaa\x906\x94\xf4\
+B\xd2`\x92Z\xd8M\x1c\xdb\x91/\xc9:\xb1\x1dg\
+\xed\xb5\xd7;3;\xb3\xbbs\xe3!\xde\xcd\xda^\xbb\
+N%\x9e\xf8\xa4\xa39\xe7\xcc\xd9\xf3\xfd\xe6\xff}\xe7\
+\xb2\xf0\xffn\xc2\xfa\x8e3g\xce|\xc9\xe5r\xf5\x01\
+AI\x92\x10E\x11\xdb\xb6\xb1,\xabPL\xd3,<\
+\x8b\xeb[\xf5\x01\x8ai\x9a'\xfb\xfa\xfa\xce\x16\xfbs\
+m \x12\x84\x97O\x9d:\x15\x5c\xadc\x9a&.\x97\
+\x0b\xc7q\xd6\x8c+no\xb3\x1e\xec\xed\xed}\x19\xd8\
+\x1a\xc0\xb2\xac\x10@,\x16C\x10\x04,\xcb\x22\x10\x08\
+\x90\xcb\xe5\xf2\x80\x08\xc2#\xe1\x8a\xeb\xa5\xday\x90\xba\
+\xba:r\xb9\x5ch\xfd\xbb\x0d\x00\x8e\xe3\x14\x9c\xe4'\
+[_/\xf5\xdc\xcc\xf9G\xd9\x06\x00\xdb\xb6\xd78-\
+v455Ux\xbf\x1d\xa7\x92$\x11\x89D\xd6|\
+\xdc\xb6\x00\xf2*\xac\x07imm\xfd\xdf+`Y\xd6\
+\x9a\x09\x8bU\xf88\x0aD\xa3\xd1B{\xdb\x0a\x94r\
+.\x08\x02\x91H\xe4c)\x90\xef\xdf\x16@^\x81R\
+I899\x89eY\xdb\x96]\x92$\xda\xda\xda\x0a\
+\xed\xc7\x02\x00\x18\x1a\x1a\xa2\xa3\xa3\xa3\x00\x90\x97\xb3\x18\
+\xce\xb2\x1c\x06\x06\xc6\xb9\xd2\x7f\x8b\xf1\x899\x94\x94\x0a\
+@\xb0\xb2\x9ch\xa4\x89d\x12:;#\x8f\x07\x90O\
+\xc2\xae\xae\xae5\xeb\x7fbbb\x8d\x02\xa3\xa3s\xfc\
+\xed\x8d\x9b\xb4}\xe2I\x9e=\xd6\xc17\xbe\xd9CM\
+\xc8\x8f\x961\x89\xcd+\x0c\x8f\xde\xe5\xfc\xdb#\xfc\xee\
+\xf7\xff\xe0\x07\xdf\xfb\xe2\xe3\x87\xc0\xb6\xed5\x12G\xa3\
+\xd1B\xfb\x8f}\xefp}d\x8e\x9f\xfc\xec[\xb4\xed\
+\xadeA\xce\xd2X\xe9&\x18,\xe7R\xff\x00\xde\xda\
+'\xe8:\xbc\x9f\xe7\x8e\xeeg|r\x96\xdf\xbet\x81\
+t\xaa\x1c\x1en\xff\x05\x12i=\xc0\xd1\xa3GO\x1f\
+?~\x1cUU\x11\x04\x01\xc7qp\xbb\xdd8\x8e\xc3\
+\xc4\xc4\x04\x0b\x0b\x0b\xbc\xf2\xea%\xe6\x97\x0c^\xfc\xc5\
+),\xc7d\xe2\xde<9\x13ty\x99\xc1[w\xf1\
+\x94\xd7\x90s$4E!(\xa6y\xfa\xc0.:\xbb\
+[\xf9`h\x9e``\x9fwvf\xe0\x9d\xbc?q\
+\xab\x10\xacO\xc2\xb6\xb66\x0c\xc3GlF\xe5\x97?\
+?Il6\x8e\x91\xcb\xd2T\xe5\xa7\xbe\xa1\x81@\xdd\
+^Z\xf7\xb5SU\xdb\x80O\xc8\x81\xa9\x12_\x92q\
+{\xdc47\x86\xf9\xe9\x8fNP\x11\xae\xea\xed\xee\xee\
+\xfd\xcc\xa6\x00\xab'WI\x1b\x1b\xbb\xc5\x8bg\xde\xe0\
+\x85\x17\xbe\x8c\xdf\xe7\xe5`\xa4\x85=\xcd\x0d\xcc\xdc\x8f\
+\xa3\xa7\x15\xdc\x1e\x0fn\xb7\x0b\x97K\xc2\xb2\xa1s\xdf\
+.>{\xac\x13\x9f\xd7\x8b(\x8a\x84\xab\x82|\xfd\xe4\
+1\xbf\xe0*\xfb\x0d\x9c\x167U\xa0\xf8\xab\x8b\x8b\xa2\
+\x88\xec\xd8\xd3\xcc\xa1\x83{\x00\xd04\x9d\xcb\xd7\xae\xd3\
+\x1c\xed\xa0\xa2\xaa\x16\xc7\x01Q\x10\x11\x04\x91\xfa\xa0\xc3\
+\xc5\xf7\xff\xc3\xb9\xb7\xfb\x99\xbc\x1d\xc3\xe5ra\x18\x06\
+\x9f\xea\xde'\xee\xd8\xdd\xd4p\xe4\xc8b\xcf\x96\x00\xa5\
+\xec\xf2\x951>\xf7\xe9C\x88\xab\xb9\xf1\xd6\x95AZ\
+\x9fz\x06\xb7\xc7\x87\x03\xd8\xf9\xe28,\xa5\xd2\x1c\xeb\
+n\xc7\xe7\xf518\x95\xe0\xdd\xab7V\xe77\xe9\xea\
+l\xf6#I_\x83\x8fX\x86\xeb\xf3\xe0\xe6H\x8co\
+\xf7\xf6p\xfe\xbd\x0fX\xd2%\x1a[\x9e\x22\xa5\x19T\
+\x07\xcapx\x98\xde\x86i\x91^\x9e\xe7\xf0\xa1}\x00\
+45\xd6\x030tc\x0c5\xad142ISS\
+5\xc0\xd1\x92\x0a\x14\xe7\xc0\xc0\xc0\x00\xa2\xf8h\x88\xa6\
+f\xf0\xfb=\xd4\x84*0]\xe5d\x0d\x1b9\x9d%\
+\xa1d\xd1\xb3&Z\xc6@\xd5\x0d|\x92\xb1A\xbd'\
+v\xef\xe4\xda\xf5qv\xd4V\x92\x16\x83\x0e\xb6\x13\xde\
+T\x81\xbc\x1d9r\x84l6[P\x00\xc7\xe1\xce\x03\
+\x9d\xe9\xb8L\xb8\x0c|Y\x1bM\x13\xd0\xcb\x1bH\xba\
+$D\xc0\xb4l\x02\x99\xf4\x9a9\x1d\xc7\xc14\x0d\x1a\
+\xc3A^\xbb4F\xa4\xad\xbd\xf0n\xd3\x10\xe4\xeb\xc5\
+a\xa8\xa8\x0a\xb2\xb0\xac\x90\x96jXPT\xbes<\
+\x8a$I\x5c\xb84\xc0\xb2\xa7\x05\xdbq0\x0c\x8bL\
+\xc6\xcf\xfc\x9b\x97I\xach|\xf5\xf9gp\xbb$t\
+]\xa7\xaa2\x80fH\xa8)\xcdD\x14\x92%C\xb0\
+\xfe8.\xb6\x9dM!F\xc7\xeeQ\xee\x91\xa8\xf2\x9a\
+H\xd2\xc3}\xec\xf3\xcfu\x11\x0d\xae\xa0,\xddgE\
+\xd1Y\xd1L\xc6\xe4jb\xd9:&\xee\xcc\xa0\xaa*\
+\xe9t\x9a\xd7/^#\x18\xaagfnQ\x04\xfeU\
+\x12 \x9f\x03\xa5N\xb9/<\x7f\x98[\x1f\x8eS\xe9\
+\x97\x98\x8e\xab\x18\xc6\xa3Xw\x1c\x8cb\xa4\xe6I*\
+\x1a+\x8aNJ\xd5\x91\xd3\x19>\x1c\x9fE\x96e\x14\
+E!\xb1\x92\xa61\x1c`z\xe4v\x06\xcb\xfa\xd3\xa6\
+\x0a\x94:4\x00**\x1cR\xf1\x07\xdc\x1a\x9f!\x1c\
+\xae\xe5W\xaf\xbc\x85,\xcbh\x9aF6\x9b%\xb6\x0c\
+\xcb\xb2\xbe\x0a\x90ANg0s\x19R\xa9\x143\xb3\
+\xf7\x09U\xd71\x1fW\xf4\xa5\xb9\x07\xf1\xabWk\xcf\
+m\x19\x82R\x10\x07\x0e\xec\xe7\xfb\xdf\xed\xe1\xfds\xef\
+Q\xe9\x11\xc8z\x9bX\x5c\x5c$\x91H\xf0\xeb\xbe\xb3\
+$r>\x92\xb2F\xb2\x08b\xe4n\x92d2I|\
+)EEM37\xde\xfd\xb7\xa3)\xf1\x1f\xc2i{\
+\xcb\x10lf\xed\xed\xbb\xf9d\xfb\x0e\xce\xbdz\x81\x1d\
+\x95ed\xb29b\xd3\xf7\xb8r\xc7&\xa9fI\xca\
+:IE#\xa9\xe8\xa4U\x85\xb8\x22\xb2\xb8,\xa3\xda\
+!\xfa\xff\xdeO\xe2A\xec\xdc\xf0\xf0\x9fo\x02e\xb0\
+q\x15\x04EQ\x94\x1d\xc7\xa9\x08\x85B\x05E\xca\xca\
+\xca\x0a\x8a\x98\xa6\xc9WN<\x8b\xfa\x87\x8b\x9c}\xe9\
+\xafd{\x9e\xc6[\x19b\x7fd7s\x09\x95\xb4\x96\
+\xc5\xe3\x18x\x03\x02\xf5\x95\xe54\x84\x1b\x19\xbe\xaf2\
+\xfc\xcfk\xac,\x8d\x9b\xc3\xd7_{\x1d\xf0\xf0p\xd3\
+\x5c\xf3\xd7,\x08\xd4vww\x9fhii\xf91\xe0\
+\xdbL\x85\x5c.\x87\xae\xebh\x9a\x1b\xc3\xdeIC\xcb\
+.vF\x9f\xa4\xae!\x84?\xe0\xc3\xb6\x1d\x14Ye\
+!\x9ebn|\x8a\xc4\xec,\x8e\x15\xb3\xe6\xe6F\xff\
+2;;{\x1e\x18\x04\xa6\x00\xbb\x18\xc0\x0d\xd4\x03a\
+ \xb4J\xb9\xe1\xbe\xb0n|\x95(z\xaa\x9b\x9a\x0e\
+u\x86\xaa\xf7\x1e\xf2zC;]\x92\xe8\x050-;\
+\xa3\xeb\xcb\x0f\x92K\xb7G\xe7\xe7\x87\x07m;'\x03\
+w\x81I`\x1aP\xd7+\x907\x0f\xe0]u\xb0\x9d\
+\x8b\xbe\xb8:>\x00\xf8W\x7f'\x01\x16\x90\x014@\
+Yu\x98\x01\xb2\x14\xdd\x88\xfe\x0b\xd2\xfcz\x18\x9f\x9f\
+e\xa7\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x04\xc3\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x04zIDATX\x85\xed\x96\x7fhUe\
+\x18\xc7?\xef{\xceq\xded\xea\xa6\xce\x143S\x0b\
+\x8a~\x97.\xe7(*\x13-\x09\xcb\xfaC\x8a2#\
+(\x0cB7#\x09\xc2\xa0\xa2\xc8\xfe\x91D#,\x84\
+\xe5\x0f\xa4\x85\x18e\xaci\xb36\xdcr*\xe6\xaf\xd0\
+\xcd\x99S7\x9b\xda\xb6\xbb\xbb{~\xbc\xef\xdb\x1f\xf7\
+\x9cyw\xdd\xe6\x9c\xe0_{\xe0\xb9\xcf\xcb=\xe7y\
+\xbe\xdf\xf3}\x9e\xf3\xbe\x07\x06m\xd0\x06h\x05E\xb6\
+\x99Ql=w\xbdu\xe4\xf5$O\x1e{\xe7\xc6\xc2\
+b{% \x06Z\xc3\x1ah\xe2-\x05r\xe5\x87\xaf\
+}k\xc7\x93\xad\x8f0\xb5nz\xdel\xbd\xed\xdco\
+\xf8\xd7Z\xe7\xba\x14\x90R0\xbfp\xf1\xd0\x05\x8f\xbd\
+1'\x96p\xf6\xe5\xbf\xcb\x84\x1bJ\xc0S.G\x9b\
+\xab\xb8gj\xbe\xf3\xfa\xbc\xf7o\x1ffe\x1f,(\
+\xb6g\xdc0\x02Z\x07$\x838G\x9b*\x199b\
+\xb8|\xfb\x85\x8frF\x0d\x1f[^\xb0\xccZ\xd4\xdf\
+\x1a=\x0eOA\x91m\x10t\xf6\x99i\x88}\xfa\xd6\
+w\x1ch,\xc3S.\xc6h\xc6dOdLl\x12\
+\x9b\xcb\xd6$\xeb\x9b\x0e\x7f=\xbeA-\xdd\xba\x155\
+ \x02\x1f,^\x8be9H$B\x08\x04\x02\xa2\x18\
+fJa\xf3\xe7\xa9\x1f\xf1\xb5\x8b\xd6\x0a\x83&;k\
+4SF?HyMi\xb2\xfa\xe8\xce=I\x19\xcc\
+\xaf\xfd\x8c\xd6\xde\x08\xd8\xbdS3\xec>\xb1\x09)\xac\
+.\x17B\xa4\x91\xb9,\x85\xd6\x1am\x0c\xda(Z:\
+N\xd3\x9e\xbc\xc0\xa3\x0f\xcd\x1d:*gl\xe1\xcfU\
+\x9b\xff\xca_.\x9f\xac\xfe\xdc=\xde\x13L\xaf3\xa0\
+\x8c\xc2W\x1e\xbe\xf6\x08\xb4\x87\xaf]|\x95Z\x07x\
+(<t\x18\x95\xf0P\xc2E\x91\xba\xde\xee^\xa0\xe6\
+\xd4v&N\xb8\xcd~i\xce\x92\x09\xc3\x9c\xac\xda\x99\
+E\xf6S\xd7D\xc0\x18\x9d\x02S\x1e\xber\xf1\xb5\x1b\
+\x82\x84.|\x02\xe1\xa1\x84\x8f\x16>\x0a\x97\xb8\xdf\xc2\
+\xc5d#\xe7;Nr\xae\xad\x8e\xdd\xc77\xe1Yq\
+\xf1\xea\xbcw\xb2sF\xe4m\x9b\xb9\xdcY\xda\xef\x16\
+h\xad\x08\xb4\x87@\x22\xa5\xc4\x16V\x8a\xaf\x94a\xff\
+\x05\xca\x04tx\x97hK\xb6\x90\xf0\xdb\xd1J\xa1\x95\
+Ish\xfe\xbb\x81;\xf2\xa6\xf3\xf2\xdc%\xb1m\x15\
+%\x1fS||V\xe5\xaa\xe0\x99\xab\x12\xf0\xb5K\xc2\
+k\xc3\x926\x8e\xe3\x10h\x83\x09\x14F\x05\x04\xc6\xc5\
+\xd5q<\x95\xc0\x08\x00\x83\xb4\x09g\x04R?\x1ac\
+\x0cFC\xa0=<\xed\xa2M \x80)\xfdR \xe1\
+\xb5\xd3\xd4V\x8f\x90`9\x12\xcb\x16X\xb6@\xda\x02\
+i\x09\xa4\x04\xe9\xa4\xde\x09\x83\xc0h\x83\x8e\xc0\x85\x01\
+#\xc0\x08\xee\x1e\xff\x04y\xb1\xc9l\xd9\xb1\xae\xb3\xb5\
+\xfd\xe2\xea\xcaU\xc1\x8a\xab\x11\xe86\x17\xd2\x12H+\
+\x8c\xb6\xc0\x0a\xa3\x94\x02\x11\xdei\x0c\x18\x1d)`\x00\
+\x83-b<<\xe9Y\xfc\xb86\xdf\x97m\xe8Lt\
+t\xbeY\xbdZm\x02L_\x04D\xfa\x7fB\xa6\xf6\
+{)\xc3\xa7\x8e\xc0\xbbT\x10!\x01\x83\xd1\xe1\x93\x03\
+\xc3\x9c\x5c\xa6\xdd\xfc<\xf5'\xeb\x82\x8a\x9a\xb2\xb6\xd6\
+F\xb3\xe0\xd0fUK\xea\xf0S\xe9$2\x09\xc8t\
+\x05^|`E\x17P\xa4\x82\x90)\xf9\x85L\xf5\xbb\
+\xec\xcc\x97\xf8\x81\x8bV\xa9\x9acb\x13\xb97\xf7i\
+*\xf7\xee\xf6\x0e\x1e\xa9\xad;\xf5G\xb0\xf0L\x0dg\
+\xc3\xba\xe1$_\xde\x1d{j\x81\x00X\xbb\xe5\x93\x1e\
+.u\xb7\xe2%+\xb0\x1c\x81\x0e\x87\xef\xd6\xec\xfb\x98\
+\x14\xcbg\xfb/\xa5\xc9\x86\xd3\x0d;\x8flT\xcb\xda\
+[\x88\xa7\xd7%c\xf7\xcd$`\x00]\xf5E0\x1c\
+\x18\x028\xa1\xa7\xaf\x1d\xc0),\xb6+\x10dY\x96\
+@\x1b\x8b\xbbF>N\xcc\x1dGI\xe9\x06\xf7\xdf\x7f\
+.\xae\xa9\xfdF\xad\x03\xfc\xb0f\xbaw;\x1b2\x09\
+\xe8\xd0\x15\x10\x84l#\xef\x22\xd8UD\x08\x86f\xdd\
+\xc4\xfd\xb9\xb3\xb8t\xb6\xd3\x94\xfc\xb4>q\xeeXr\
+\xe9\xb1\x1f\xd4\xae0?r\x95\xb6\xees\x08I\x03\xbe\
+B\x99\xb4B\x16\x80-\x860-g!\xfb\xf7\xef\x0b\
+v\xfd\xfekK\xe3>\xfd\xca\xc9ru\x22\x03\xdcO\
+\x8bW|1\xf5D\xc0\x00^\x08\x18\x01\x07\xe1\xbd\x16\
+\xd1 \x09\x8c\xf2\xa1\xac\xa2\xdc=pd\xef\xc1\xfa\x1d\
+\xfe\xa2\xa6\xc3\xfc\x97A4\x8a.\xf4|,\xf7\xe7c\
+\xd2\xbe\x02\x1cdA\x91}!/w\x9c\xdft\xfel\
+\xc9\xa1\xf5\xea\xbdx\x9c\x80\xcb-\x8cH\xfb\xbd\x01\xf7\
+\xa5@\xa6ERF\xb3\xd0\xf5\xaa677-\xdf\xb3\
+Z}E\xf7\x01\x8bT\x1b\xb4A\xeb\x97\xfd\x0f\xcc\x13\
+\x1e)\xc9\x8aX\x89\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x04\xef\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x04\xa6IDATX\x85\xed\x97]\x88UU\
+\x14\xc7\x7f{\x9fs\xef\x5c?\x82RqP\xfb\x18\xc3\
+\xac\x87\x14\xcb\xaf\xcaJK\xc8\x87\x12\xc6@\xa3D\x83\
+\x0a\x83\xa0\x82B{\xe9a\xc2zP{\xec\xc1\x08\x09\
+#$\x13\x95\x88P\xc8\xaf\xc1\x994t*1\xa7\xd4\
+1u\x1amrR\x9bf\xee\xd79g\xaf\xd5\xc3\xb9\
+\xf7:\xe3\xdc\x9b\xf7\x12C/m\xd8\xac}\xf69\xe7\
+\xbf~g\xed}\xd6:\x07\xfeo\xffq3\xd5\x5c4\
+o\xb5\xd5Z\x85[7HU\xda~\xb5\x82\xef\xad\xfa\
+\x14'\x11A\x94\xc5i\x84\x93\xb8\x8bF\xf1\xb1\x8b-\
+\x186\xed\xdc\x00d\xab\xd2\xad\x1a ty\x8e]\xd8\
+O\x7f\xee\x0a\xa1\xe4\x09%O\xe4r\x84. (\xd8\
+|\x94a\xd1=/U+\x09\x80\xad\xf6BU%\x92\
+\x00\xa7!\x91\x04D. t\x01\xa1\xcb\x17\xc6y\xc2\
+(\x87\x93px\x00\xaai\x82\xd4|O\x0d\x00\xf1>\
+T\x1dl\xe33\xf1\xd8I4\x9c\x00\xa0*(:\x08\
+\xe2\xdaX\x90\xe1\x04P\x95\xd8!J\xfc\xcc\x05\x98\x02\
+P\xe0r\xa5H\x0c\x0b\x80\x14\x9d\xaa E\x18\x8da\
+\x9cD\xe4\xc3t\xcd\xce\xa1\xcckX1\xe9\xa8\x22\xe2\
+P\x04\xac`P\xacQ\x5c\x98##\x97\xf1\x92\xa0j\
+0\xde\x10\x9d\x00HB\xf9\xe444\x0fX\xf3\xcc\xa4\
+\xb1\x937\xbf\xd2\xb86e\xadE\xd4\x15\x9e\xd8\xc5\x8e\
+\xad`\x00!\xa0/\xe8!\xebz\xb1\x09\xb0XT!\
+\x99H\xb1j\xe9\x9a8B\x02\xe24\xb9c\xef\xc7a\
+\xcf\xd5\x8b\xaf\x96{\xae\xb2\xe9\xf2\xe1\xb7\xec\xdaiw\
+>\xf8\xe6\xd3\x8f\xbe8\xe2\xfb\xae=\xa4\xc3^\x94\x10\
+gB\x1cy\xaed\xbb\xe8\x0b\xfe\x00\xab`\x0c&\x0e\
+\x10\xa8\xa2\x0a\x22J\xc2\x8cdA\xc3\x0aZ\xdb\xf6g\
+;:\x7f\xfc\xa8e\xbd\xbc^\xce\x97Wn\xb2\xb3U\
+\x0f\x8c\xb8\xb7k\x8e\xb5~\xc3\xf4\xc9\x8f\xf8\x97\xd2\x1d\
+8\x1b\x12i\x96\x8b\xfd'\xc9\xe9_\xd8\x84\xc1\xf3\x0c\
+\xd63X?\xb6\xc63\x18\x0b\xbe\xe73\xef\x8e\xa5t\
+\x9c=\x1d\x1c?}\xf8\xf0\x84_ty{{\xf9\x1d\
+Zi\x13j&\xa5\xcf\xee\xfbng\xc7\xb9\x8b\xedn\
+j\xfd\x5c\x94\x88\xee\xf4)\x9c\xcd\xe1%\x0c~\xc2\xe0\
+%-~\xd2\xe2'\x8a\xd6\xe0',\xf7Mz\x82\xbe\
+\xde\xb4~{l_wF\xb5q\xdb6\x5c\x05?\x95\
+\xdf\x82\xb6&2.\x90E\xdb\x9b7\xfd\x99\xcf\x05:\
+n\xf4\xad\x84&\x8b\xe7\x9b\xb8\x17 \xfc\x22D\xd2\xe2\
+%-S\xc6\xcdb\xb4\xa9gw\xf3\x8e\xfe\xc8\xc8\xc2\
+\xb6u\xf4V\xf2Qq\x09\x8a\xad\xeb0}\xb7\xcdq\
+{O\xfez|\xc5\xfdw?\x94\x10/\xa0\xdf\xf5`\
+}\x8bW\xea\xf1\x12\x18k\x18?\xaa\x81\xa97\xcd\xe7\
+\xf3/?\xc9f\xb3\xb9\xc6o\xd6\xcb\xd1\x7f\xd2\xbf!\
+\x00@\xe7!~\x1b\xff@x\xfa|\xd7\x99\xa7\x1e\x9b\
+\xb1$\xd1\xeb\xba\x09\xe8\xc3KX\xbc\x84\x89\xado\x18\
+\x9d\x1c\xc3\xcc\xb1K\xd8\xb9kk\xa6\xe7\xf2\xefo\xb7\
+\xbe\xef\xb6\xdcH\xbb*\x00\x80\xae\x16m\xaf\x9f\x9bM\
+^\xba\xdc={\xc1\xf4\xc6\xc4\xa5\xfc\x19\xc4\xe6K\x11\
+\xa8K\xa6\x98=v\x19\xcd\xad\xfbs\x1d\xe7\x7f\xda\xd1\
+\xb2N\xd6T\xa3[5\x00@g\x8b6\xdf<\xe3\xea\
+\xac(\x92\x86Yw=\xeew\xe7~\x06+x\xd62\
+cL#\x1d\xa7\xceF\x87\x8e\x1c<q%\xe5\x16\xf7\
+\x1c\xa8\xbc\xe9\xaeo\xb5\x14#\xcd\xd4\xe9\xf2\x1fN\x1c\
+9s\xee\xdc\xf9h\xfa-O\xa2\x0e\xa6\x8c\x9aO\x7f\
+O\xa0{\x9aw_\xc5D\x8bN4\x11\xd4\xa094\
+\x11\xcdlb\xe4\x88\x1cu\x15)\x94\x89\x16\xef\xe8\xb2\
+\xc5+\xeb&N\xb8\xdd\xf4\xf5\xf7\xb2y\xeb\x87\x12\x06\
+\xe1B\xfc\xe8X\xa5\xfb\xb2)\xf2mMd\xae\x9f\x1f\
+\x92\x8aSi\x9b\xc6\x90+\x8f\x17O\x89hj\xfbW\
+\x9f\xf1\xf2\xf3\xaf\xf1\xc5\xd7[\x5c\x10\xe6=\xeb\xb3\x0b\
+l\x9cm\xca\xa4\x9cT\x9a\x14TS\x0b\x807\x9e\xdb\
+\x90*\xea\x18\x0b\xd6\xc4\xd6X\xc0*\xc6\x98\xd8\x02/\
+4\xae\xf6\xe2\xc8h\x0a\x15\xa4P%E\x04u\xe0D\
+\x10Q>\xd8\xf2N\xd9\xc8\x94\x05\x88$d\xdf\x85\x8d\
+x\xd6\xc3X\xc5\xfa\x03K\xb1\xc3\xa9\xc3\x89\xa0\x02.\
+\x8a\x8b\x95D\x82\x08H\xe4P\x0c\xea\xb4T\x90\x96L\
+[]\xd6yE\x80|\x94a^\xfd\xcak\x13\xa6\x18\
+\x05\x83)F\xc3\x98\xd2\x12\x19S,F\xf1q\x1c\x81\
+xNE\x11)\xad\x89\x0f\x0c\xfal*\x0b\xb0q\xdb\
+\xbb\x15\x89\xffe\xb3\xc4\xd8%\xa2J\x7f/\x16H\x10\
+\x03z\x03\xec\xc0^\x14+\x0a* \x80\xbb\xaeG\x05\
+\x1b\x14\xc6\x83\xb6\xe8\x8d~\x9fL\xc1\xd1@\x08;`\
+\xbexMQT\x0a\xe3\xa2\xe3\xa80W\xf1{\xbd\xaa\
+\xff\xb7*\xef\xad\xfd\x8b\x14\xf8\x1b\xa76\x84\xbb\x5c\xf4\
+\x09<\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x07\xe8\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x07\x9fIDATX\x85\xc5\x97ilT\xd7\
+\x15\xc7\xff\xf7\xde\xb7\xcc\xe6\x19\x0f\xb6\xd9q\x0dij\
+\x84\xa1,\x06\x5c5\xe4\x03(%%Q\x8bB\x15Z\
+\xe3\x80\x9a\x14\xe3\xa6\x8a\x14\xb5R\x94\x96\xb6R\xfb\xa1\
+\xf9P\xa9\xad\xd4FE\xa1,i\xb0I\x05\xa1\xca\xd2\
+\xaa\x09\x11qC\x09M\x00c\x96\x1a\x12\x88\xb1\x0dx\
+\xb7g\xb3g\xe6\xad\xf7\xf4\xc3\xcc\xd0\xe7\x05\xdb\xdfz\
+\xa4\xab7\xf7\xcd\xb9\xe7\xff;w\xce=\xef\x0d\xf0\x7f\
+66\x13\xa7\xd5O7.\xf3\xf9\xd5\xef(\x1c\x8f;\
+\x0eU8\xae[\xc49s\x18X\x96\x0b\xd6n\xbb\xf2\
+#\xd7u\xde1\x93\xbe3m\xc7\xb7[S\xc5Z[\
+\x7f\xe4[\x17\xfe\xb4\xf3\xc4\x8c\x00\xd6\xd5\x1f\xad\xd25\
+~0\x12\xf2-\xdd\xb0\xb2<T>\xafX\x84\x83\x1a\
+tM\x81#%L\xc3\xc6p\xca@\xcf`\xca\xbd|\
+s }\xb7?E\x8c\xd3A\xd3\xa2\xdf\xb7\x1e\xac\xeb\
+\x1a\x1f\xaf\xfa\x99\xc6\xcd\xe0x\xaf\xe5\xc0S\xf7t\xef\
+\x0b\xb0\xae\xbe\xe9\xbb~]\xf9\xc3\xf6\xafU\x05\x97.\
+.eD\x80$\x02I\x82K\x04)s~\x04\x803\
+@\xe1\x0c\xa9\x8c\x8d\xd6\x1b}\xf6\xe9\xf3\x9d\xb6Cn\
+\x93#\xb1\xb7e\xff\x8e!\x00X\xfb\xbd\xc6\x87\x14E\
+\x9c\xb4]70-\xc0\xba\x86\xa6m\x01]=\xf2\xfc\
+\xb7k\x02\xc5a\x1fd^\x90@ \x99\x03q$\x81\
+\x88 %A\x12 )\x07\xa2\xab\x1c\xae$|t\xe9\
+\xb6}\xba\xa5\xd3p\x80\x06&\xe9\xba\x10\xfc_[7\
+U\x85\xde8y\x05^\x00e\xbc\xf8\xfa]\x7f.\xe1\
+\x8c\x1fjx\xa2:0+\xe2\x83K\x04\xc3r\x10K\
+daX\x0e\x14!P\x14\xd4\x10\x09\xe9 \x02lW\
+\xc2r$H\x12lI0m\x17\x823<\xbc\xbaB\
+\xad\xac(S\xffr\xf2\xca\x81x2\x1bxb\xd32\
+Z87<!\xd9\x09\x00\x14P\xeb\xd7/\x9f\xaf\xcf\
+++\xc2\xd5\xf6\x01z\xff\xe3[r0\x91\xe1\x8c\x81\
+\x11Q\xce\x87H\x0a\xce\xec\xc5\xf3\xa3\xe6\xaa\xa5\xf3C\
+\x95\x15%\xdc\xa72\xa4M\x17\x19\xd3F2c!\x95\
+I!\xa8+\xd8\xb1eU k\xd8\xd0t\x95\xb9\x92\
+\xa6\x07\xd0\x05\xdfSS\xb5\xc0w\xe8\xed\x8b\xee\xad\xbb\
+\x098\x92\x84\xe0\xdc\xb4,\xa7\x9b\xb8\xbb\xa3e\xff\xae\
+O\x00\xa0z\xcf\xb1\xc8\xf5[C5\xed\xdd\xf1\xdd\x80\
+||M\xe5\x02\xb6\xa2r\x9e\x1f\x5c m\xb8p%\
+\x10O\xdb\x185]\xcc\x89\xe8h\xef\x1b\xc5\xb2\x85\x13\
+w`L\x0dT\xefy%\xe0W\x8a\x07WV\xce\xd1\
+.~\xda\x87h8\xa8(\x0aG\xdfP\x22.\x1c\xf5\
+\x8b\xff>\xb8=6Y\xcd\xacx\xb6)\xeaw\xf9\xb3\
+\x82\xb3\x9f|e\xe5\x22\xdf\xca\xcay\xca`\xd2D<\
+cCJB!\xf3\xb5\x0fD\xf1\xebW\xcfP\xcb\x81\
+:^X\xcb\xbd\x818\x15-&P\xe0\xd2g\xbd\xe2\
+\x0b\x0bJXI4\x18\x13B\xf4\x83X\xdb\xfd\xc4\x01\
+\xe0\xea\xbe\xba\xf8\xb9\xfd\xb5/\x19\x16U\x9e\xbd\xdcu\
+\xf2\xd57/\xa0$\xa4\xa0\xbc4\x00\xa2\x5c\xb1\x02\x00\
+\xe7\x0c\x9c\xc1\x1c\xa3\xe9\x9dH&\xb9a9\xd0|\xbe\
+\xe1\x90\xdf\xf7A@\xd7?p\x1c\xe7&\x91;\xe1L\
+Of\xad\x87j{\x00\xfaXQ\xb8\xa5(\x0a\xe2\xa3\
+\x16\x88\x00\x22\x801\x80\xb3\x89\x87nL\x0d(6\x5c\
+G\x00\xb3\xa3\xa1\x7f\x04\x03\xfa5\xc6y\xb28\x12\x0c\
+\x0c\x0d\x8f\xcc\xa8cV\xd77~?\xec\xd7\x7f\x5c\xfb\
+\xd8*\xad?i \x91\xb6 \x91\xeb\x15\x85\x1d\x98\x12\
+ \xeb\xc8.Up\x8cf\xb2\x1f\xf6w;\xed\xb6\x22\
+F\x93\xd9\x84\xe9\xba\xf6\xe8t\xe25\x0dM[}\xba\
+\xf6\xdb]\xdfX\xed\xd7u\x15A\x9f\x86\xf2\xd2\x00\xc0\
+\x00\x06\x06Up\x08\x06\x0fN\xce& \xad{\xfa\xf5\
+E\xe7\x0f\xd7\xde\x99I\xc6\x05[\xb3\xfb\xb5M\x0c\xfc\
+\xd4L\xfd\xa7\xec\x84\xd5\xbb\x1bIp\x96-\xcc%\x91\
+B\x04u\xb2@\xd2\xd5f\xb7\x1e\xde>8S\xe1'\
+\x9f<&\xba\x22F\xf9\xb9\x03\xbb:\x0a\xf7&\xf4\x01\
+\x00x\xf9\x85\xaf\xfb\x81\x5c\xf1H\x22\xd8\xae\x84\x94\xb9\
+B\xea\xe8Mb\xdf\x89\xf3)\xdbr\xab\xa7\x13on\
+\xee\xf0m\xdc\xb8\xd8(\xcc\xdb\x8b\xado2\xe2\x7f\x85\
+'q>\xd9BI\x84\xcb\x9d\x09\xb4v\xc4q\xb93\
+\x81kwR\x88\x8d\x9a\x18\x88gp\xe0\xcd\x96\xb4\xe3\
+:\x9b/\x1e\xdc\xf9\xf9\x94\xe9\x1217\xaa\x967\xb7\
+\x0d\xcc\xfd\x9f\x18\xb9@\xae\x89M\x090\xdef\x854\
+\xa8\x82\xe1\x8f\xc7\xceI\xc3v\xeb\x0a\xddp*\xfb\xc5\
+/\xc1\xae\xdf\xcd>, \xabN]\xed\x7f\xa0\xb9\xb9\
+YQUmk\xee[c\x1a\x00O\xa12\x06\x94\x14\
+i\xc8dm\x00\xc4\x05xm\xf5\x9e\xa3\xa5\xd3\x01t\
+F.\x85\xe3i\xf7\xab\x00_\xa6p\xaaj\x8b\xcf\xd9\
+H$w0\x06XB\x8cL\x09\xe0}f\x10\x017\
+{G 9\xc7\x0fw>\x84\x0dk\xca\xb7\x09\x8e\xf6\
+u\xf5G\x9e\xaf\xa9k\x9c\xd8\xdc\xf3\x96\x96\xf6\xa3\xaa\
+\xc2\xaa8\xa3e\x89\xb4\xb5\xf6\xf8\xe9\xebME\xe1\x22\
+\xc19\x1f\xb9\xba\xaf.^\xf0\x9b\xb4\x08%\x118c\
+\x98_\xeaGO,\x0b\xdb%\xc4F,\xc4F\x80%\
+\x8b\xca\xd4Y\xd1\x22\xf5\xf2\xa7\xbd/uv\x0f\xfdj\
+}\xc3\xd1\x13\xb6#_\xd3\x0c\x9c\xff\xa4\xe9\xa9T\xf5\
+\x8b\xefG\x8a\x84\xef\xb9\xd1\xb4\xf3\xe2\xf2\x8aP\xea\xed\
+\xb3w\xe6\x9e\xb9\xd4\xb1 \x10\xf0\x91/\xe0S\x13\x89\
+\xd4\x05\xaf\xd6\xa4\xc7\xf0w?\xda\x8c\xac\xe5\x22\x91\xca\
+\x22\x1c\xf2\xa3/\x91E\xf7p\x16\xfd\x09\x13\xae\x94\xd0\
+U\x81hP\x85\x94\x84\xae\x9e\x98{\xb7'\x96\x8e\x8f\
+dt!\x14\x9dq\x05\x94\x7fvK\xc7A \xa8\xbb\
+\xd1hX\xd1\x03~\xdc\xe9\xea\x19\xc9\x9a\xe6\x0f.\xbe\
+\xb2\xa3q\xca\x1d \x02n\xdeI\xc8\xc3o\xb5\xf0\x07\
+\xcbK\xb2[6<\xe8W\x04\x07c\x04\x02\x901\x1d\
+\xa4\x0d\x07B0D\xa3a1\xbb,\x12&\x09\x8c\xa4\
+\x0d\xa4\x0d\x1b\x8eK\xe0\x9c1\xaehpI*\x8e\x0b\
+\xa4\x92iX\x861j\xc6\xd5c^\xad\xf1\x00\x0c\x00\
+n\xf5&\xd0\xf8\xf7\xd6\x91\xe1\xdb\xe7\x1f\xb5S\x15\x9b\
+:zb?_\xb3t\xa1\xba\xa4b\xb6\x92L\xdb\x88\
+\xa5-\xd8\x0e\xc1r$L[B\x12\xdd[\xce5\x1d\
+B\xe6\xfa\x86\xe5\xba\x001d2Y\x0c\xf6\xf5g\x8d\
+D\xcf\xae\xb6\xe3/0\xe4jO\x02\x80\xf0\x88s\x00\
+\xfa\x82\xeam?\xbbr\xa3?=t\xfbR\xed\xadw\
+\x7fs\xab\xbf\xed\xbd\xcf\xccl\xf2o#|\xf6\xbc\xcf\
+o\xc7\x17\xfau\x05s\xa2!\xee\xd7\x150\x86\xfc{\
+!@2w\x95$\xf3y\xe4v+>\x9c\x94\x03\xbd\
+\x83\x99\xcc`{C\xdb\x89\xbdg\xf3:9\x07@\xb2\
+{\xe8\x80\x06@\xab\xde\xdd\x98\xca&n?s\xed\x8d\
+\xbd\xcd\x85{\x85QZ\xf5\xc8\x92\xf9\xcb\x1f\xab\xf5E\
+J\x1f)\x0e\x07eii\xd4\x1f\x0c\xf8\x98\xa6\xa9\x00\
+cp$`\x9a6\xd2\x86\x85d2\xed&c\x89\xac\
+mf\xfe\xd3}\xf1\xad\x9f\xf6_y\xa7\x03\x805n\
+\x98\xcc\x93\xbd\x06@\xffr\xed\xcb{\xae\xbc\xfe\xdcQ\
+\x00\xfa8\x80{s\xcd\x1f)*[\xbeee\xf1\xc2\
+\x155zQ\xd9\x97\xb8\xa6\x97\x81\xb8B\x8c\x09\x069\
+*\x1d\xb3\xd7\x88\xf7}8t\xe3\x9f\xef\x0e\x5c?\xd5\
+Y\x10\xf3\x0a\xe7\xaf\x86\xf7\x14L*\x96\x1f\xea\xb8\xcf\
+j\xbe~\x84w;\x018\x00l\xcf\x18\x9f\xf1\x98\xec\
+\x01\x98\xde\x22\xb41\xf6X\x16\x82\xba\xf9\xc0N~a\
+AX`l#\xa3\xbc\xaf\xd7\xdf\xf6\xac\xf3B\x19\xf9\
+\xeb\xa4\x7fL\x0a?\x87\x8a\xb1\xd9\x8e\x17.\x14S!\
+F\x01\xb8\x00=\x19HA\xf8^\xaf\x9d\xeeUK\xe4\
+\x85\x0b\x10\xdc\x03\xe0\x15/\x00x!\xbc\xc2N\xfe\xde\
+\x04\x9b\xd1\xbb\xde$k\xbc\xa3 \xee\x85\x98\xf8\x0f\xe4\
+>\xf6_\x84=\xc2\x88m2sv\x00\x00\x00\x00I\
+END\xaeB`\x82\
+\x00\x00\x07\x87\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x07>IDATX\x85\x9d\x97ilT\xd7\
+\x15\xc7\x7fo\x1bw\xc66\x06\xef@\x10I\xb0\x0dF\
+\xd8\xc6\xae\xb1\xc3\x14\x09\xc5U\x95\x0f\xa9\x1aAEi\
++5!J\xd5\xaa\x12k\x11\x04\x15U\x15\xadZ\xe1\
+\x88\x86\x90\x14\x1a)\xf9\x80\x95D\x09\xf9\x12U\xaaT\
+\xb58\xa8iTZ\x88\xa1j\x95Pd\xeca\x16\xdb\
+\xe3M\xf60\xdb\x9b7o\xeb\x87yo\xc6c\x8fk\
+\xb7W:z\xdb\x99\xfb\xfb\xdfs\xce]F`\x15\xed\
+\x97\xf0}\x01\xdeZ\x8d\xaf\xdb$\xf8\xcd\xcbpd%\
+?a%\x87W\xe0\x07U\xb5\xb5\xaf}\xf7\xd4)\xaf\
+\xec\xf3-u\xb0m\xb0,\xb0ml\xd3\x04\xcb\xc26\
+M~\xf7\xe6\x9b\xeaX(t\xf94\x9c\xfa\xbf\x05\x9c\
+\x87\x1f\xad\xab\xab\xfb\xf5\xb7\x8f\x1e\xf5\xa6\xc3a\xe2\x0f\
+\x1e,\x85\x03\xb6m\xe7\xee\x1d\xf364\xb0v\xfbv\
+~\x7f\xf5\xaa\x1a\x19\x1b\xbbx\x06\xce.\xc7\x90\x96\xfb\
+\xd0\x0f\x87k\xea\xeb/\x1c<v\xcc\x9b\x8eD\x88\x8f\
+\x8e\x82 \x14\x0c\xf2\xd7\xc5\xa30\x92I\x0cU\xa5\xfd\
+\xe9\xa7\x95\xc9@\xa0\xbb'\x91\xf0\x0c\xc2\x9fW-\xa0\
+\x1f\x8eV\xd7\xd7\xf7\x1f<v\xcc\x9b\x0a\x85H\x04\x02\
+ \x08\x08\xa2\x88\xb0\x08\xee\xb6R\x22\xccL\x86\xb6\xbd\
+{\x95h \xd0\xd3\x9bL\xda\x83\xf0\xe9\x8a\x02^\x81\
+\x13\xb5\x8d\x8d\xbf\xfa\xd6\xd1\xa3\xbed0H\xf2\xe1C\
+\x04\x07\xee\x8e^\x10\x84\x92\xb9\xcb\xbfsRc$\x93\
+\x98\x9aF\xdb\x9e=\xcaX \xe0\xf7\xa7R\x99A\xf8\
+\xdb\xb2\x02\xfa\xe1d]c\xe3/\x0e\x1c9\xe2K\x04\
+\x02\xa4\x82\xc1\x1cT\x14s\xb60\xfc%F\xed\x82\x0b\
+\x8f6z2\x89\xa9\xebt\xf8\xfdJ$\x10\xd8\xf3\x95\
+t:u\x1dn-\x11\xd0\x0f\xa7\x1a\xd6\xaf\xff\xf97\
+\x8f\x1c\xf1%FGI\x86B\xb9p;\x02\xcae\x99\
+\x8d\x1e\x0f\x09\xd3\xc4.\xa6\x14Ak\x14\x85:E\xe1\
+\x91a`\xdb66\x90M&\xb1L\x93\xf6\xde^%\
+\x1c\x08\xec\xf5\xab\xea\xdc \x0c\xe5\x05\x9c\x873\x8d\x1b\
+6\xfcl\xff\xe1\xc3\xbe\xf8\xf00\xa9p8\x1fj\x04\
+\x81rY\xa6\xb6\xa1\x81\xf4\xbe}\xac\x1b\x19!\x99\xcd\
+\x16D,\x10\xb0\xce\xe3\xa1\xbc\xa5\x05\xbd\xa7\x875\xe1\
+0q\xc7\xcf\x064G\xc4\x8e\xeen%\x1c\x08\xf4=\
+\xa5iS7\xe0\xae\x04\xd0\x07\x9f\xbet\xee\x9c\x12\xfb\
+\xfc\xf3\x1c\xdc\x0d\xb1\x03\xaf\xa9\xafg\xee\xecY\xf4-\
+[\xa0\xbe\x9e\xea{\xf7HjZn\xfa9\xad\xba\xac\
+\x8c\x8a\xe6fb\xa7O\x93mkC6M\xd6\x86\xc3\
+<\xd2\xb4\xbcO&\x99\x04\xdb\xa6k\xf7n\xe5\xce\x9d\
+;\xdf\xf8\x18\xce\x89y\x98,\x93\x0c\x85\x8aFd\xdb\
+6\x0d@\xfa\xd9g\xb1}>\x04A@\xdb\xb5\x8b\xcc\
+\x8b/\xb2\xb1\xb2\x12\xd1\x99\xf7\xd5^/\xe5\xad\xad\xc4\
+\xcf\x9cA\xf4x\x10E\x11\xf5\x99g\xa8\x04\xca$\x09\
+\x0b\xb0\x9c~\xe3SS\x88\x8a\x92g\xc8\x8b\xebhq\
+X\x83\xba\xcec\xd7\xaeAE\x05\xd9\xae.\x04A@\
+\xef\xedE\x90e6\x0e\x0c\x90J\xa7)om%y\
+\xfcxn\xa6\xd86b:M\xd5\x85\x0b\x04\xb3Y\xd2\
+\x0bj\xc1v\x06\x85e-#\xc0q\x5c8\x9dLA\
+ \x12\x8b\xb1\xe9\xddw\x11e\x99\xec\xce\x9d\x08\x82\x80\
+\xb1k\x17\xa2$Qy\xe3\x06\x89\x13'@\x14\x11\x01\
+!\x95\xa2\xf2\xe2E&B!\xe2\xaaZ\x04\xce\x0b)\
+)\xc0]J\x9d\x1f`\xdb\xf9E\xc72M\x22\xd1(\
+\x9b\xde\x7f\x1fQQ\xd0\xdb\xdbs\x22\xba\xbb1\xba\xbb\
+\xc9\xe71\x95\xa2\xfc\xf5\xd7\x99\x18\x1d%\x9eH\x14\xa0\
+\xffK\x04\xb0\xed\xfc|_(\xc4\xb2m\x22\xc1 \x8f\
+]\xbb\x86(\x08\xe8\x1d\x1d\x85U\x11@U\xf1]\xb9\
+\xc2\xf8\xfd\xfb\xc4c\xb1\x22\xb8\xa5\xebX\x86\x81\xe5\xa6\
+#\x9b-\x1d\x01\xdb\xb2\x8a;u\xc4\xb8\xd5nZ\x16\
+\xe9x\x9c\xca\x9b71;;\x8b|\xa5\xc9I\xa4L\
+\x86\xe4\xfc<\xd9\x99\x19\x8cx\x1c3\x95\xc2PUl\
+\xcb*D\x000\xea\xea\x96OA\xbe\x06\xdcH\xb8\x05\
+)\x08To\xdeLEO\x0f\x99\xe7\x9fG\x14E\xe7\
+\xb5\x93\xa6\xa6&\xd4\xe7\x9e\xe3\x89p\x98\x7f\x0d\x0d\xa1\
+\xebz\x11\xd45\x0b\x8aR\x90O\x9f\xed\xec\xe9XV\
+N\xb1\x13\x11\xf7}\xf5\x93OR\xe5\xf7\x93}\xe1\x05\
+\x04YF\x14E$]G\x9a\x9ar\xf4\xdb\x98\x9d\x9d\
+\xd8\x87\x0f\xd3~\xf0 \x92\xc7\xb3\x04l\xb9\xcf%k\
+\xc0\xb2r\xe6\x86\xd5\x8d\x00P\xdd\xdcL\xd5\x9e=h\
+\x07\x0e H\x12\xa2(\x22f\xb3Ho\xbc\x8141\
+\x81~\xe8\x10f{;\x96eauu!\xca2\x1d\
+>\x1f\xff\x18\x18@\xd7\xb4\x02\x98\x05\x85XJ\x80m\
+\xdbK\xc2_\xdb\xd6F\xa5\xdfOf\xff\xfe\x02\x5c\xd3\
+\x10/]b\xe4\xbd\xf7\x88G\x22\xb4)\x0a\xb2\xa2`\
+\xb4\xb6\xe6j\xa5\xad\x0d\xf1\xd0!\xba**\xf8\xec\xf2\
+eLM+\x12P2\x05\x96iR\xbea\xc3\x92\xf0\
+W<\xfe8\xe6\xe6\xcd\xe0\x9e\x05T\x15\xf1\xca\x15F\
+?\xf8\x80\xb9\x91\x11tM\xe3\x9fo\xbf\x8d\xf1\xe1\x87\
+H\xc3\xc3\xb9\xadZ\x10\xb0\xd6\xaf\xc7\xd7\xd8\x88\xb2f\
+M\x11\x5c\x10\xc5\xa2\x14H\x00_\x83\x9a\xe9`\xb0c\
+G_\x9fl\xa6\xd3\xe8\xf1x\xbe \xe7\x87\x87\xa9\xf4\
+x\x90e\x19\xb3\xba\x1a\xcf\xc0\x00\xa3\xef\xbc\xc3\xdc\xfd\
+\xfb\xf9NM\xc3`\xea\xee]\xeakk\x11\x1b\x1bA\
+\x92\xf0|\xf4\x11C\xaf\xbeJrr\xb2\x08\xfeDS\
+\x13s\x89\x84=\x1a\x8b\x09\x1f\xc39\x09`\x10\xfe\xd0\
+;?_?=>\xde\xb1\xa3\xb7W6fgQ\xc7\
+\xc6\xd0gg\xd1\x22\x11f>\xf9\x84\xb5UUT\x8d\
+\x8d1|\xf5*s_|\xb1\xa4\xba\x0d\xc3`\xf2\xf6\
+m6l\xda\x847\x14b\xe8\xfcy\x12\xe3\xe3\xf9\xef\
+\xa2$\xb1\xa5\xa5\x85X&c\xdd\x08\x87c\x22|y\
+\x10f\x8b\xce\x14\xfdp\xb1\xa1\xa6\xe6\x87_\xef\xeb\xf3\
+N\xdf\xbeM\x22\x14*\xe4M\x92\xf0\xd4\xd4\xa0NO\
+/\xa9\xee\x85\xcf\x92\xd7\x8bXVF&\x16+\xc0e\
+\x99-\xcd\xcd\xcc\xa4R\xd6_\xc2\xe1\x99,\xec\xfe)\
+<\xcc\xa7\xc0m\x83\xf0\xc7\xdd\xaaZ=\x11\x8d\xee\xec\
+\xf0\xfb\x15#\x95B{\xf4(_\xb9z*\xf5_\xe1\
+n:\x8cL\xa6 H\x96\xd9\xd2\xd2B4\x910\xff\
+\x1a\x89L\x00\xbd?\x81\xfc\x9e\xbf\xe4L8\x08\x7f\xf2\
+g2k\xc7\xa2\xd1\xce\xce\xde^\xc5L\xa7\xc9\xc4\xe3\
++\x82K\x99\xac(4m\xddJ8\x163\xfe>>\
+\xfeP\x84\xa7NCt!\xaf\xe4\xa9\xf8:\x5c\xdf\x95\
+\xc9TG''w\xee\xec\xeeV\x0cU\xcd\x8bX-\
+\x5c\xf1xh\xda\xb6\x8d\x91\xd9Y\xe3\xb3h\xf4\xc1\x1d\
+\xf8\xeak0\xb9\x98\xb5\xdc\xff\x82\xf2\x1b0\xb4]\xd3\
+\xd6\xcdLN\xee\xe8\xec\xea\x92\xf5L\x065\x91X\x1d\
+\xbc\xac\x8c\xa6m\xdb\xf8\xf7\xf4\xb4qkjj\xf8-\
+\xf8\xdeMH\x93[\xe5\xb3\x0bA\xcb\x9d\xae+];\
+\x09/o\xad\xa8\xf8\xce\xbe\xbd{\xcb\x04wi\xb6,\
+,w\xe5\x5c`\xee;\xdb\xb2\xb8\x13\x0c\xea\xb7gf\
+\xee\xfd\x16\x8e\xcf\xc2,\x90\x00\xe2@\xcc\xd1\xb9\xac\x00\
+72k\x80\x0a\xa0\xe2\xc7p\xb2\x16^Z\xc6\xb7d\
+K\xc3\xadKp*\x01\xf3@\x8a\xdc5\x8e\xb3\x1f\xad\
+$`\xa1\x90/\xb9B\x9c{\x8fc\x0a\xb9\x95\xd4\xed\
+\xc3\x02\x0cr!\xce\xe64\x90\x00\x92@f1x\xb5\
+\x02J\xf9\x8b\x8e0\x17.P<AL\x0a\xb5\xbab\
+\xfb\x0fC+\x09\xef\xbdQ\xf6l\x00\x00\x00\x00IE\
+ND\xaeB`\x82\
+\x00\x00\x04\xb0\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x04gIDATX\x85\xed\x96mh\xd5U\
+\x1c\xc7?\xe7\x9c\xff\x7f\xbb\xce\xcc\x8a\x1c\xa4\x22\xc3\xb4\
+\x15\x11\x14Y\xb3\xdd\xa9eV\x9b\xd9\x83J\x0b\x02S\
+\x12M{\x91\xd8\xe6^\xc6 \xa4^\xa8AA\xd0\x13\
+\xcc7EM\xca0\xf0EJ\x96\xe8E\x03\x89\x05\xea\
+\x16e\xea|\xdau\xde=\xde\xbb{\xefy\xe8\xc5\xff\
+\xbf\xdb\xbd\xd7\xad\xf6@\xef\xf6\x85\x1f\xbf?\xe7\xcf\xf9\
+\xfd\xbe\xe7\xf7t\x0eLa\x0a\x93\xc4\xe2FU_\xdd\
+\xe0\xb9\x89\xee\x97\x93\xf0-\xa2;\xbc\x9d\x0b\xee\xba\x7f\
+\xaf\xef\x95N\xd8\xc8\x84\x08<\xdd\xc8\xf4\x9a&\xef\xc0\
+\xe2\xfbV\xbc\xf5\xfa\x0boG<\xe5O\x98\x807\xde\
+\x0dUM\xccM\xe2\x1fZ\xb3t\xd3\xfcE\xf7.\xf3\
+\x95T\x13v\x0e\xe3\x8c@u\xa3\xf7\xd8t\xef\xd6\xb6\
+7V\xbf\xb3\xf0\xe1\xca%~{\xd7I\xac\xd3\x93\x22\
+0\xe6\x08D\x1b\xd4\xfaY3g\x7f\xb4\xf5\xc5\xe62\
+\xe5+:\xbaN\x921i\x1c \xc0\xfc\x7f\x04\x9a\x91\
+\xd1\xa4\xb7\xbbr\xceC[6\xd4\xed\x88\xf4e\xe2\x9c\
+\xef\xfe\x1dc5\xceYp\x0e\x07j,\x9dp|\xb7\
+\x16\xe3\x22\x10mb\x06\x83\xde\xfe\x9a\x07\xea\xaa\x9f\x8b\
+n\x88\x5c\xeai'\x91\xba\x8au\x06k\x0d\xc6i\xa4\
+\x904\xbf\xf6\x09\xd6Y\x1c\x06\xebl(\x06\x17jc\
+\x0d\xef\xb6\xbc94\xae\x08\xd4l\x8f\xccw\xc2\x1c^\
+\xbbl\xe3\x9cE\x95O\xf8\x1d]'Hf\xfap\xb8\
+\x9ca\xeb\x0c\xb1\xbf\xbe\xc5X\x8d\xb1\x1a\x1djc\xb3\
+h\x9b\xcd\xe9\xe5\xf7\xbc:\xea!G$P\xd3\xe8=\
+^\xe2\xfb\xdf\xad\xab\xdb1c\xf6\x9d\xf3D\xdb\xe5\x1f\
+\xc9\x9at\xf8\xd7\xe1\xb0 \x1c\x16\x83\xc5\xe0\xa4\xc6\xa2\
+q.\xd0\xc3\xe4\xac38,\xce\x8d\x9e\x9d\x9b\x08D\
+\x1b\xfc-w\xcc,\xdf\xb3\xaev\xfb4\xe9C\xdb\xe5\
+#A\xae\x85@\x08\x10\x12\x10\x00\x16+\x0c\x16\x1b\x90\
+\x10\x1a'\x0d\xe4\xa5'\x08\xbf\x06,\x0eF\xec\xd7\x02\
+\x02\xd1&\xff\xab\x8a\xf2\xca\xe7\xd7\xafl\x8c\x5c\xea;\
+Kg\xf7Y\x04\x02!\x04R\x06Z\x00B\x10\x9c\x0c\
+K\xca\xf4\x93\xcc\xf42\xa4\x93h\x93\xc6\x1a\x87p\x0a\
+\xe9|\x14%amXp\x8c8\xad\x0a\x08Xk\xab\
+\x85\x07\x83\x99\x04}C\xd7\xd1&\x03\x04\xce\x95\x10\x01\
+\x19\x1c\x83\x99\x1e\xfa3q\xfa\xb3\xd7\xc9\xd8T\xd0\x09\
+\x0e\x9c\x05k\x1dV;\xacq\x18\xed\xf0\x88\x90\xd6\xa9\
+\xb1\xa5`\xeeySq\x8e\xb3\xbb>\xde\xbfs\xf3\xb3\
+K_*S\xd2\xe7\xcc\xb5\x18\xa5%>\xd2\x03C\x1a\
+-\xd2 \x0dR\x09\x84\x14xR\xe0\x10\xe0\x1c\xd6\x82\
+0a\x86\x00\xe7 \x9bM\xe5\x13P\x14\xcd\x8c\x82I\
+\xd8\xda\x8a9\xb6Ko\xef\xedKl\xdd\xf7\xc3\xde\xa4\
+o\xca\xdc\xa3\x15u\xa4\xed \x03\xd9n2\x0c\x22\x94\
+Ey\x12\xe5\x89@|\x81\xe7\x8b\x7f\xd6\x94@z\x02\
+\xa9\x04R\x81T\x05\xad\xefST\x0b#\x8db\x19\xdb\
+c\xbe\xee\xbf\x92\xa9\xfd\xfe\xa7}\x89+W\xaf\xea'\
+\x17\xae\xe7\xb6\xb2Y\xa1\xd1\xc0\x81\xf2$\xca\x17(_\
+\xa2|\x89\xf4C\xc79\xe7A\xea\x82\xda)\x88xA\
+\xd4GjC\x09\xc8S-\xbam\xde\x12\x96\x1c\xb3\x87\
+[o$\xba\xee^Z\xf5J\xe9o\xdd\x07\x89\xa7\xff\
+D\xe59YY\xd1\x00\x8e\xb0\x06\x824\x04\xdaau\
+X\x13\xc6\x15\xd8\x0e\xc5\x8eF \x87\x0bG\x89\xf7v\
+\xe8U\xba\xbemOO_\xa2v\xd5Sk#\x9dC\
+\xbfr~\xf0\x97\x80\x84\x17\xd4\xc1{\x1f4\xff\x9b\x99\
+|\x8ci\x14\xbb\x90\x9d\x03l\xef5\x86N|h\xb6\
+e7vn\xfeb\xa0\xa5a\xcd\xaa\xfa\xc8\xed\xe5\xe5\
+\x9c\xee?\x84P&\x97\xe3\xe3\xbbu\x14\xd0\xa1d\xf3\
+$\x93\xf7m\xf3\xec\xe7BR\x0cS$\x1a\xd0\xa7>\
+\xd7\x9fv\x9e\xee\xd9\xf4\xe57-\x03\x83q\xe7\xaa\xca\
+\xeb\x99\xe6\xdf\x12\x0c\xa6\x00I`\x08H\x179\xd5y\
+b\xc2\xb5\x1cF{M\xb8\x11\xbe]\xfc\x8c\xbb \x15\
+\x07/\xa7\xce\xac\x88\xa8\xb2\xb2G\x16<\xa3JT)\
+GcG\xb8\x18\xb3\xef\x17\x9d\xb8\x98D6$W\xd0\
+\x86\xa3\xd5\x80\x0b\x0d\xd8<\xd1\x80w\xeeg\xdd>p\
+\x89\xe5\xce\x1e\xfd\xac\xab;^\xb5\xba\xb6>\x92\x17\x81\
+\xe1\xf0\x16Gp\x98\xd0M\x97\xc2\x7f\xbd\xa7\x86\x1d\x9b\
+p\xb3\x01t2A\xeab\xcc\xb6\x96.\xb81\xbd\xe3\
+\x8f\xf6\x07\x93C\x03\xde\xc5\x98\xddYt\xf2t\x9eL\
+\xee\xd9T\x04\x11\x12\xf7\x00\x7f\xf16\xf5r\xf8\x18\xf1\
+\xc3\xb5\xdcu5\x85)\x8c\x05\x7f\x03\x8dcF\xa6\x8c\
+\x98\x19\x1a\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x06\x92\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x06IIDATX\x85\xb5\xd5}l]u\
+\x1d\xc7\xf1\xf79\xf7\xdc\xc7\xf6\xde\xdbvm\xd7\xadv\
+\xed\xba\x95\x87\xb5\x85\xd9\xb1\xb1\x8d=\xb0\x11\x10\xcc\x88\
+\x89\x93\xb1dVS6j\xe2\x031\xe8bD\xd1\x09\
+F\x0d\xa0\x18\xd82\x15\x12\xca@c\xda1\x13\x94\x02\
+\xdbD]]\xd9D\xd9CW\xba\xa7\x92>\xdc\xc7\xde\
+\xb6\xf7\xe1\xdc\xc7\xf3\xe8\x1f\xde\xe2\x9d\x94tv\xeb7\
+\xf9\xe6\xe4wrr\xce\xeb\xf79\xbfs~\x02\x05\xf5\
+\xdc}\xd8)\xb3\xbcd\xc2}\x98h\x02f7\xaa\xf1\
+\xedG\xba\x880G%\x14\x0e\x9e\xdf!\xfd\xa4\xe6\x86\
+[\x1em\xb9\xe7k\xf6\x5c&\x81o\xe0\x98v\xf6\xf8\
+\xeb#\xba\xaa7=\xdaEf.\x00\xd2\x95\x1c\xf3K\
+\xb7\xdc\xd9f?r\xe0\xbb(\xaaFIE\x8d\xb4\xb0\
+\xbeqa\xe0\xc3\xfeV\xd0\x7f3\x17\x00\xb1p`\x18\
+\xa6W\x8e\x06\xb1\xb8\xcax\xf0\xa9\x8b\xc8\xd11\xea\x1b\
+\xd7;\x04\x81\x1f\xee\xd9s\xe5\xb5s\x02\x10\x11\xdeM\
+\xc7|\xa6\xa1\xa49\xf8X3\x129*k\x9b\xf0\x94\
+Vz=\x17-\xf7\xcf\x05\xc0R8\xb8\xb7\xd9\xfc \
+4|\xa1\xf5\xee\x1d\x8f[]F\x04\xb7\x11\x04\x0c\x8a\
+\xbd\x95\xb6\xb0\xff\xf2\xd27\xcf\x9a/\xcc)\xe0\xad>\
+\x82\x9fi2\x84\x09\xff\xf9\xd5M\x1b[\xad\xa9P\x1f\
+\xd9\xe8\x10\xa5\x8b\x963|\xf9\x83\xd2\xbbn\xd6\xba\x0f\
+\x9f#t=\x01\x1f{\xaf\xd1\x06\xe3\xa7\x93\xa1\x91s\
+\x17N\x1e\xd2J\x16\xafCS2\xc8\xc1\x01\x16TU\
+\xd9\x9c\x0e\xe1\x07\xef\xfe\xd6\xfe\xfc\xdf;0;;\xaf\
+\xc4\xcf\xb6\x84\xe9N\xfe|;5\x16\x8b\xa5\xbf\xe5\xf6\
+\x8dn33N:\x1e\xc2V!b+\x99`A\xc3\
+z%2\xf2\x0f\x8b\x91N.\xb9c\x17\xc3s\x02\x00\
+\xf8\xe5\x83\x96\x07\xac\x0e\xebK7\xdf\xba\xb0\xc8^\x1a\
+\xc4=\xaf\x86\xfa\x15\xad@\x19\xaf\xb4\x7f_\xb9p8\
+\x96PU\xb3}\x1f\xfcaN\x00\xbd\xaf\xb04#\x0b\
+\xc7\x8b\xbc\xde\xca\x86\x95_\xc0[\xb1\x8c\x13\xaf\xf6\xf0\
+\xc6\x9e\xa3\xd49\x8bX`\x88\x1c\x09\x04d\x0dj\xf7\
+Ct\xb6\x00i\xba\x93=\x1d|\xcb0\xc4g\x16\xde\
+t\xa3^\xb9\xe86\x82}a\xf6\xef~\x0d)a\xd2\
+\xde\xb2\x1a\xaf(\xe2\xf3\xf9p\x84\xc3bZ\xd7[\x80\
+?\xcf\x160m\x02\xc7\x0e\xb0Q48\x22\x08\xd5\xc6\
+\xfb\x1d\x9a}\xe4\xc48k\x1cnV\xd6/\xa1\xb4\xaa\
+\x8a\xf7\x02~\xfe8\xd0G\xcdm\xa6\xbe\xeaa\x06L\
+\xc3\xf8\xce\xba6\xba\xaf\x1b\x00\xe0\xc4\xabx\xba\xda\x09\
+\xd5\xe7p.\xd3\xc1SR\x82\xec\xf5\xf2\xb7D\x04\xeb\
+|\xc1\xdc\xb6\xaf]X\xbc\xa2\x8eXd\x90\xe1s\xaf\
+\xa7\xb3\xf2\xd0A\xaf\x83\x87\x1b\xb7\xa1\x5c\x17\x00\xc0#\
+0\xb4\x0ej\xdd\xc0Y\x87\xc8\xb8\x0d\xb6\xfcx\x0b\xeb\
+w\xb6c\xe6z!\xf7>\x8anE1\x1a\x09\x0e\xf6\
+f'}\xc7\xce\xe44\xee\xdd\xd4F\xec\xba\x00\xbe\x02\
+\x9f\xb5\x0bt\x09V\x9c\x9f\xdeZ\xcc\xf6g\x9f\x10l\
+v\x15\xd3\x88\xa3e\xc7\xb0\x08\xe3\xe8\xba\x1f9\x91\xc2\
+\xb0\xad!\x19O\xab\xa1\x81\xceQ\x0c}\xc3\xda/\xe3\
+\xbff@\x1e\xd1\xb0\xf5\x17<\xd1\xb8\xe9\xfe\xed\xf3\xab\
+\xab@\x0b\xa3SJ&\x95\xc4\xeeP\xd1\xb3~\x14-\
+A,\x1a\xc5\xe6^\x87(.1\x86\xcf\xfcj\xc2\xcc\
+\xa56\xacm\xe3\xfcL\xf7\x9fq\x87\xfb5\x5c*\x9a\
+GR3T\x145\x05F\x0c%\x1d\xc4n\x13H\x8c\
+\x87A\x90\xd0r\x06v\x87\x97X\xa0\x1bM\x1b\x10\xeb\
+W=V.9\xcbO\xf6\x1c\xe0\xf6k\x06\x00`\xe0\
+W3qCUA\xd3dtu\x12AHbh9\
+\xb2\xa94JV\xc7\xd43\x14y\xeb\x99\x1cy\x9bl\
+\xa2G\xa8_\xfd\xb8\xa7\xc8\xdd\xf0\xce\xf1\x97\xf9\xe25\
+\x03\x0c\x81\x0f\xd3\x89HV\xd3\xec\xa4\x92\x09\x102\xa4\
+\x13AJ\xca\x8b\x89\x04\x82\xb8<^\x921\x0d\x84\x08\
+\xee\x8af&\x86\x8f\x12\x0fuR\xb7r\xb7\xab\xa4z\
+\xf3\x0b\xbd\x07x\xb1\xb7\x13\xe7\xac\x01\x02\xfc+#\x87\
+uC\xf0\x90\x92\x13\x18\x86B\x22:\x8eER(*\
+q\x13\x1e\xf5\xe1\xf2T#GR\x98\xda(e5k\
+\x89\xfa\xfe\xc9\xd8\xe0~\x16\xde\xf4\x80\xa3\xfa\xd6o\xb6\
+\x8aZ\xf1\xc8\xf1\x0e\xb6\xce\x0ap\xc7\x10\x03ZN\x16\
+45EN\xb5\xa1\xe4\x92(J\x8ed<JiU\
+\x1d\x89\x09\x19\x8b\x94C\x94\xaaI\xc7&1\xf4Q*\
+\x97\xdeIj|\x90\x91\xd3?\xc3]\xd6`\xbba\xfd\
+s\xe5\xa2\xcd{\xb0\xa7\x83\xf6\xc2{_\xd5\x96\xfa\xa3\
+\xbfb\xee\xfc<-6\x97g\x99(\x15\xa1\xa4G\x11\
+D\x89\xb4\x9c\xc6\xe9.\xc6\xeeZDx\xa8\x9f\x8a\xba\
+f\xa2\xfe\x08\x82e\x1c\xab\xc3\x8bg\xferL\xcdJ\
+\xe0\xc2!R\xe3g\x94dbt\xefW\x9f\xe1\xe9H\
+\x04\xe3\xffJ\x00\x90bq^\x8e\x05\xfbe\xa7\xbb\x89\
+\x94\xacb\xb5\xdb\x88Od\xc8$\xfc\x14\x97\xd7\x83X\
+L*z\x91y\x8bW!\x8f\x09\xa8\x990.\xcf\x1a\
+\x8a+\x96\xa3g\xe3\xb9\xa0\xaf\xbfc\xd3C<\xd9\xdf\
+\x8f\x13p\x026@\xb8\x9a\x04\xac\x80\xad\xbb\x17\xff\xb6\
+\xcd\xe9]\x9e\xca\x06\xb7axQ\x95\xcbX\x1du\xc8\
+\x13\x01\x1c\x1e\x0fNO-\xa1\xc1\xd3\x94U7\xe0\xf0\
+4\x13\x1d\xbdL*~^\x09]z3\xfe\x97\x93\xfa\
+C;\xf7\xd0\x99\x9f\xb0P\xd83\x01,y\x805\x9b\
+E\xbag5\xb2\xc3\x12\xddPQ\xbb\xc5\x9a\x18;\x85\
+\xbb\xa2\x96X \x84(%q\x95.\xc7\xc4\x81\x92\xd2\
+\xb19K\x8cx\xe8\xb4\x16\x0aFz\xbf\xf1\x14\xbb\xba\
+\x0e\xe3+xha\x993\xfd\x09\xa5|TV\xc0\xe6\
+tb{k/\xef|\xaaq\xf3R\xc9\xbeB4\xf5\
+SH\xd6\x1aF\xfb\xbb\xa8k\xf9:\xe9\xf8\xa0\x1e\x1a\
+8$N\xc8\xfa{\xbf\xfb\x13{\x7f\xff6\x97\x00\x15\
+P>\xe98\x13\xe0\xa3\x04\xa6 \xbb\xdb\xb8\xf1s\x1b\
+\x85\xee\xea\xc6\x1d\xael2\x85\xd5\x966&}\xa7\xd4\
+l:B`\xcc|\xa3\xeb(\x07_;\xc20\xa0\x03\
+Z\xbe\xd5\xff\xe9)\x80:\xe3^\x90O\xc1Z\xd0\xd2\
+\xbe\xef\xb1\xb9y\x09O\xea&F<\xc1\x89\xd3\x179\
+\xfc\xf4\x8b\xf4\xa5T\xcc\xa9h\xf3\xadO\x03)\x04\xe5\
+\xae\x06\x00\xffyw\x1f\x01\xf2m)h\x91\xff.\xb0\
+B\x80\x91\xef)\xc4\xd4Q\xc9\xf7\x8ck`\xba\xb2\x14\
+ \xc4\xfcX\xe0\xe3\x9ft!bj\xd6S\x89\x5c1\
+\xb3k\xad\xc2\xd5]\x98@!\xe2\x13\xeb\xdf4\xc1\xdb\
+\x049\x93)\x01\x00\x00\x00\x00IEND\xaeB`\
+\x82\
+\x00\x00\x17\xe1\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x90\x00\x00\x00\x90\x08\x06\x00\x00\x00\xe7F\xe2\xb8\
+\x00\x00\x00\x19tEXtSoftware\
+\x00Adobe ImageRead\
+yq\xc9e<\x00\x00\x03(iTXtXML\
+:com.adobe.xmp\x00\x00\
+\x00\x00\x00<?xpacket beg\
+in=\x22\xef\xbb\xbf\x22 id=\x22W5M\
+0MpCehiHzreSzNTc\
+zkc9d\x22?> <x:xmpm\
+eta xmlns:x=\x22ado\
+be:ns:meta/\x22 x:x\
+mptk=\x22Adobe XMP \
+Core 5.6-c067 79\
+.157747, 2015/03\
+/30-23:40:42 \
+ \x22> <rdf:RDF \
+xmlns:rdf=\x22http:\
+//www.w3.org/199\
+9/02/22-rdf-synt\
+ax-ns#\x22> <rdf:De\
+scription rdf:ab\
+out=\x22\x22 xmlns:xmp\
+=\x22http://ns.adob\
+e.com/xap/1.0/\x22 \
+xmlns:xmpMM=\x22htt\
+p://ns.adobe.com\
+/xap/1.0/mm/\x22 xm\
+lns:stRef=\x22http:\
+//ns.adobe.com/x\
+ap/1.0/sType/Res\
+ourceRef#\x22 xmp:C\
+reatorTool=\x22Adob\
+e Photoshop CC 2\
+015 (Macintosh)\x22\
+ xmpMM:InstanceI\
+D=\x22xmp.iid:A7137\
+DD0390811E5A111E\
+32F6F5F6555\x22 xmp\
+MM:DocumentID=\x22x\
+mp.did:A7137DD13\
+90811E5A111E32F6\
+F5F6555\x22> <xmpMM\
+:DerivedFrom stR\
+ef:instanceID=\x22x\
+mp.iid:A7137DCE3\
+90811E5A111E32F6\
+F5F6555\x22 stRef:d\
+ocumentID=\x22xmp.d\
+id:A7137DCF39081\
+1E5A111E32F6F5F6\
+555\x22/> </rdf:Des\
+cription> </rdf:\
+RDF> </x:xmpmeta\
+> <?xpacket end=\
+\x22r\x22?>\x03\xa0\x95\x84\x00\x00\x14OIDA\
+Tx\xda\xec\x9d\x09t\x94U\x96\x80o\xedK\x92J\
+\x08\xa9$$\x10@$\xec\x10\x10\x05Yd\xd8\x0d\x10\
+\x04\xba\xc7qN\xdb2n\xa0c\x9f\x86\xc1n4c\
+K\xd3\xea4HK+Gi\x15\xa1\x15\xd43\xda\xa7\
+\x15\x9aEF\x86\x0ez@\x16A\xc0\x80\xec\x8b$$\
+d_\xaaR{\xfdU\xf3nQa\xd2\xe1\xff+U\
+\x95Z\xde\xab\xbc\xcby\xfc\x81,\xff}\xef}\xb9\xf7\
+\xbe\xed>\x99\xd7\xeb\x05.\x5c\xc2\x15%\xfe%\x93\xc9\
+\xbad\xe5W\xee\x9f\x22\xabm\x19\x93/x4Ce\
+2!O\x0eB\x8eL\xe6\xce&\x9f\xd2`\x91\xcb\x9d\
+\xf8\x04\x8fG\xed \x0f_\xf1z\x95U\x1ePTz\
+\xbd\x8a2\x85\xdcq\xda\x98|\xe4\xc2\xca\x89%]\xf2\
+\xb7\x10\x8d\x8f\xcc\xf7W\x82\x03\xb4\xe4\xcb%z\x87\xbb\
+\xdb\x1c\xd2\xe1\x93\x95r\xcbH\xa5\xc2\xd2W\xadhN\
+U+L\x1a\x02L'\x1bQ\x09N\xc1\xe0p\x0a\xa9\
+\xcdn!\xe9\xaa\xdb\x93t\x82\x00\xb9O\xa3l\xdc\xb9\
+n\xe6:+\x07\x88Ayfwq&xeO+\
+\x14\xd6B\xad\xb2n\x90NUm \x16&\xc6\x8d\xab\
+\x00\x9b+\xcbdwg\x9c\x15\x04\xfdn\xd2\xd2o\xaf\
+/\x5cU\xc3\x01\xa2T\xfe\xfd\x8b\xdfLV\xc8\xed\xcf\
+j\x95\xb5\xe3\xf4\xea\x8an2\x99\x87\xb2\xc6\x96\x83\xd5\
+\x99\xdbhw\x1b\x0f\x0a\x1e\xed\xda?\xcdze\x1f\x07\
+(\xce\xf2\xd4\xae\x97\xeeU)L+\x93\xd4\xe5\x13\xb5\
+\xaaZ\x1dK\xba\xdb]F\x9b\xc5\xd9k\xbfK0\xac\
+|g\xf6\x8aC\x1c\xa0\xd8\xb9\xa7$\x8fW\xf5r\x92\
+\xba\xec\x91dMYw\xf6\x1d\x81\x0cZ\x1c\xbd\xea-\
+\xce\xbc-r\x99\xebE\xe2\xe6,\x1c\xa0(\xc8\x13;\
+\xd6\xe4\xebT\xb5\xebS\xb5\xe7\xa6\x90 X\x9e\x88A\
+)\x09\xc2=\xcd\xf6\x81%6\x97\xf1\x99\x8dE\xcb/\
+p\x80\x22 \x8bw\xbd4Z\xa7\xac\xddd\xd0]\x18\
+N~C\xbb\xc4\xf0\x98XX0\xd9\xf2Kmn\xe3\
+\xe3\xef\xce^q\x8c\x03\x14\x86,\xda\xb9j\xb8VU\
+\xbd9Mw\xb6\xa0\xab\x80#\x06R\x93m\xd0I\xbb\
++k\xe1\x869\xc5\xa5\x1c\xa0 \xe4\xf1\xed\x7fL\xd7\
+\xab+\xff\xd2M\x7fj\x0a\x01\xa7k\xcep\xde\x0e\x92\
+\xb7\xd1:\xac\xc4\xea\xccyp\xd3\xdce\x0d\x1c \xe9\
+\xa1\xf8ki\xba3K\xd4\xca&%\xc7\xe6vq\xba\
+\xd3\xdcM\xb6\xc1\xeb\xfe4\xeb\x95_q\x80\xda\xc8\x93\
+;V\x8f5h/oK\xd1^\xce\xe2\x98t,f\
+{\xbfj\x93\xbd\xdf\xbc\xf7\x8a\x9e?\xdc\xa5\x01\xf2\xad\
+E\x99\xc7~\x9c\x9et\xe2!\x85\xdc\xc1\xddU\x08\x22\
+x4\xde\x06\xcb\xc8O\x8c)\x87\x7f\x16\xaf\xb5\xb8\xb8\
+\x02\xf4\xc4\xf6\xb5CRu\xe7J\x88\xd5\xc9\xe48t\
+\xce\x1a5\xdb\x06N\xdd8\xf7\xd9\x1f\xe2\x01P\x5c\xe6\
+S\x9e\xda\xf5\xbb_g\x19\xbe.\xe5\xf0t^\xd0\xed\
+c[b\x9b\xc6\xe3\xfd1\xb5@d\x84%\xd7\xa9\xaa\
+vg$\x7f7\x83\xf0\xcb{?\xb2]\x09u-w\
+\xed\xb1\xb9\xb2\x0b\xc9H-&\x0b\x811ua\x04\x9e\
+L\xe2\xb2N\x1a\xb4\x97z\xf0\xce\x8e\x9e\x98\xecw\xde\
+ e\xc4\xc6\xa2\xe5\xb5\x09\x03\x10\x19e\x15\xa4'\x95\
+\x1e$\xd6G\xc7\xbb8\xfaB\xac\x90\xb5\xde2r\xfc\
+\xc6\xa2_\x9fd>\x06Z\xb4s\xd5<c\xca\x91c\
+\x1c\x9e\xd8\x09ik}f\xca\xc1c\xd8\xf6\xd1~W\
+T\x01Z\xbc\xf3\xbf\x1e\xcbL\xf9\xe6s\xb5\xa2Y\xc1\
+\xbb5\xb6\x82m\x8em\x8f}\xc0$@\x8bw\xbe\xfc\
+KR\x81\x8dJ\xb9\x95\xcf\xef\xc4I\xb0\xed\xb1\x0f\xb0\
+/\x98\x02h\xc6\xe6\x0b\x93\x04\xafv\xadBn\xe7\xf0\
+\xc4Y\xb0\x0f\xb2\x0c\x07\xd6E\x0b\x22y\x14\xe0\x19C\
+\x1e\xdb\xcb\x1a\x1ePV4\xcd\xe4=H\x81\xe0n\x86\
+\xcc\x94CoD\xc3\x9dEt\x14F\xe0\x19J\x1e_\
+\x91rk\xa7`\xef\xf4\xad\x90\x9b\xf6%\xefE\x0a\xc4\
+\xed\xd1{k\xcc\xe3\x17l\x98S\xbc\x8d\xbaa<\x81\
+\x07\xe7w\x8e\x90\xd2\xab\xfd\xe78D\xf4\x88SH\x15\
+j\xcc\xe3FGb\x88\x1f\xb1a<\x81'\x89<v\
+\x89\xc1\x83r\xada>pwF\xcf\xe8\xac{\xd2\x89\
+o\x9e\xd8\xb1\xc6HE\x0cD\xe0A\xf3\xf51)#\
+\x03}\x1d\x87\x88\x1e\xc1y\x22\x83\xf6\xd2\xf7\xb8\xb4D\
+C\x10]L\xca\x03\xc1|!\x87\x88\x1e\xc1%%\x5c\
+\x97\x8c+@\xc4\xfaL%\x8f\x97C\xf9\x1e\x0e\x11=\
+\x82\x8b\xda\x9d]\xc5\x0f;\x88&\xf0\xe0\xee\xc1S\xa4\
+\x84\xe5Ky`M\x87\xb8\x84dO\xb5i\xd2\xf0p\
+\xf6\x13u6\x88\xde\x14.<\xdc\x12\xd1#*E\x8b\
+<Uw\xee\xef\xb8;4f.\x8cX\x9f\xc5\xe41\
+\xbb\xb3\xcas\x88\xe8\x10\xdc\x94V\xdb2\xe6\xa3\x98\xb8\
+0\x02O\x1ey\x9c!%)R\x15\xe0\xee,\xfe\x82\
+{\xac\xabL\x93\xc6\x85\xb2Q?\x5c\x17\xf6V$\xe1\
+\xe1\x96\x88\x0e\xc1C\x0dx2&\xaa.\x8cX\x9f\x05\
+\xe4Q\x14\x8d\x0ap\x88\xe8pex6/*.\x8c\
+\xc0\x83\x1b\xc2\xce\x83\xc4l3wg\x89!xx\xb1\
+\xda<!+\x98\x13\xb0\xa1\xba\xb0\xff\x886<\xdc\x12\
+\xc5_\xf0T0\x1e-\x8f\xa8\x05\xf2\xcf\xf9\x5cD+\
+\x17\xab\x8apK\x14?\xc1\xb3\xf8U\xa6\xfbFl\x98\
+\xf3\xc2\xa9HY\xa0\xe2X\xc2\xc3-Q|\x05\x93Z\
+hU\xb5[\x22b\x81\xfc\xdb4\xae\x90\xa2\x8dGe\
+\xb8%\x8a\x9b\x15\x82j\xf3\xf8\xbb\x03\xe5'Bv\x82\
+\xc9\x82\xf1\x5c\xbc\xe0i\xb5D(\xd1\x84H&\x93C\
+\x86\xae\x17\xa4\xebzB\xba6\x07\x0c\x1a#\xa8\xe5Z\
+P)nV\xdb%\xd8\xc1\xe9\xb1\x83\xc9Q\x0b\x0d\xf6\
+Jh\xb0]\x87:[9i@O\x22[!\xc0\xc4\
+^\xe4\xc3\x11a[ b}pg\xe1\xf5x\x02\x14\
+-K\xd4\x9d\xc02\xb0\xfb\x04\xe8\x9bZ\x00\xbd\x0cC\
+@\xad\xd0\x876Z\x11\xacPn\xfa\x01\xae6\x9f\x84\
+s\xf5\x07\xa0\xdev=!\xadPe\xf3\xd4\x01R\xe9\
+\xf6\x82\xb1@\x8bh\x80'R\x96\x08!\x19\x95U\x08\
+\xc33\xa7A\x8f\xe4\xfc\xce\x8dV\xc8\xcf\xea\xd7\xedn\
+_\x99\xd6\xe7I\xb8\xd1r\x01Jk\xf6\xc2\xf1\xea\xdd\
+>\xb8\x12\xc6\x0a\xa9j\xd7\x93\x0f\xa7\x87l\x81\x88\xf5\
+A\xb8~\xc4>\xa3\xa9R\xe1X\xa2$U\x1a\x8c\xcd\
+\xfd)\xdc\x9d=\x174\xca\xa4\xa8\xea\xe7p[\xe0h\
+\xd5v8\x5c\xf1W\xb0\xb8\x9a\x98\x87\x08\x13\x7f6\xda\
+\x86\x1a\xc4\xb2\xc7vd\x81\xe6\xd1\x06O\xa8\x96H.\
+S\xc0\x98\x9c\xf90)o!hBtQ\xe1\x0a\x02\
+:\xa1\xe7\xbf\xc2\xdd=\x1e\x80\xaf\xcb6\xc3\x91\xca\xad\
+\xc4\x15\x08\xcc\x02\x84\x19q1\xad2\xf9p\x99h\x1b\
+\x07\xf8\xde\xc7h\xadT0C\xfc\xdc\x94\x81\xf0\xf4\xc8\
+\x8d0\xa3\xef\xd31\x83\xe7\x1f@\x22\xef\xc4w\xa3\x0e\
+\xa8\x0b\xcb\x829\xb9Cra\xc4}\xa1\xe5)\x03\x00\
+\xaa\xf31\x8b\xbb3\x99\xcf\x02L\xe9\xfd\xa8ot\x15\
+\x8a\xd8\xdc\x1e\xa80\xb9\xa0\x92\x14\xb3S\x00\xbb\xfb\xe6\
+(K\xab\x94C\x8aZ\x019\x06\x15\xe4\x92\xa2S\x86\
+\xf6sq\xb4Vr\xed}8p\xfd\xbf\x81\xcd\xb46\
+2\xa86M\x18\xfb\xf6\xec\xdf\x1d\x09\xd6\x85=L;\
+<b\xeeL%\xd7\xc0\xfc\x01\xc50\xa8\xfb\xc4\xa0\xbe\
+_ \x0dp\xbc\xd2\x0a\xdfVX\xa1\xb4\xca\x0a\xd7\x9a\
+\x9c\x1dv/\xfe\xaa\xf5NS\xc3\xf0l=\xdc\x93K\
+\x82\xf2\x1c=(:\x98\xc9G\x90\xa7\xf6y\x1crR\
+\xf2a\xeb\xf9U\xe0\xf28\x18\x03\xc8\x8b\xae\xec%\xf2\
+\xc1mf_\x0a\xa0\x07Y\xa9Z+Dwd\x1c\x80\
+\x9f\x0fy\x95\xb8\x8bA\x1d~O\x9d\xd5\x0d\x9f\x9fi\
+\x82\xbf_1A\x93]\x08\xb1)\xc9\xc8\x82\x80\x86e\
+\xfb\xb9&H\xd3*`\xea\x1d\x06X08\x0d2\xf4\
+\x81\x07\xb5\x08\xb6aX\x06|\xf8\xc3s\xbe`\x9b-\
+7V>1(\x17\xe6\xdf0v\x8d\xad\xca\xc9\xe1\xcd\
+\xd9\xa9\x04\x9e\x8c\x80_gr\x08\xb0\xe5d=\xec\xbe\
+h\x02\xb7'\xb2\xaeD)\x97Aa\x7f\x03<R\xd0\
+\x1d\x0c\x9a\xc0\xc9Hj\xacW\xe1\xfd\xd2\xa5\xc4E\xb6\
+0\x05Q\x8dy\xdc\x94\xb6\xb7\x0cI\xad\x85\xfd\x84\xa5\
+Ji\x942\xf8\xfd\xb4\xdc\x0e\xe1\xd9}\xb1\x19\x1e\xdb\
+v\x0dv\x9co\x8e8<\xbe\xe1.\xf9\x99\xf8\xb3\xf1\
+\x1d\xf8\xae@\x92\xa9\xef\x0b\x0f\x0fY\xeds\xb9,\x09\
+^\xa7\x15\xcc(l\x16;\xa1\x1d\xc0s\x13\xb2a`\
+\x86\xf4\x5cg\x8b\xd3\x03\xaf|}\x03\xde8T\x03f\
+G\xf4\x87\xd3\xf8\x0e|\x17\xbe\x13\xdf-=J\x1c\x04\
+\xf3\xf3\x9f\xf7\xd7\x82\x0d\xc1\xbb\xd8\x02\x02D\xdc\x17\xf6\
+\xc4DV*\xf4/\xc3\xd2a|^\xb2\xb4\xc9\xb5\xb8\
+a\xc9\x17\xe5\xb0\xffZ\xec]\x05\xbe\x13\xdf\x8d:H\
+\xc6D\x19\xf7\xc1\xd8\x9c\x05\xcc\x00\x84\x17\xf9\xf9n\x83\
+\x0c`\x81\x10\x1e&\xec\xea\x00bu\x16\x16H_\x17\
+\x86A\xee\xd2\xdd\xe5p\xdd\xe4\x8c\x9b\x8e\xf8n\xd4\x01\
+u\x91\x92\xe9}\x17AN\xf2\x006,>\xde\x02\xe9\
+\x95=\x1d\x08\xa0\xc9L\xf8b\x12\xf4\xffj|\x16\xc8\
+e\xd2\x96\xe7\x85\xbd\x15Pou\xc7]W\xd4\x01u\
+\x91\xb2Dr\x99\x12\xe6\xe5/\xf7\xcd\x9a3\xd1\xf6\x0a\
+ka \x80\xc6\xb0P\x89y\x83\xd2 /U-\xfa\
+9\x0b\x89;\x8a\xff\xb7\xc27T\xa7EP\x17\xd4\xc9\
+\x22\x11\x13\x19\xf5}\x88+cc\xec\x82\x97\x18\x8b\x02\
+D\xe2\x1f\xfc\x15\xb8\x87\xf6\x0a\xe0\xbc\xcb\xc3#\xd2%\
+?\xff\xfa\xa1\xea\xb8\xba\xad@\xee\x0cu\x93\x92Iy\
+\x8f\x80^\x95J=@x\x036^\xa3.f\x81\x90\
+\xacd\xda+0\x9fX\x1f\xbdJ|\x92\xfc\xcbK\xa6\
+\xb8\x04\xcc\xa1\x04\xd6\xa8\xa3\x98\xa8\x15:\xb87\xf7\x9f\
+\x19\x88\x83\x04<\xb91[\x0c\xa0\xa1\xf4\xd3/\x87\xa2\
+\x01i\x92\xc3\xe7\xf7\xbe\xab\xa3\xbe\x03PG\xa9\xe9\x04\
+\xdcn\xa2UR\xff;\x0cr\xb9s\x8a\x18@\x83i\
+W\xfc\xfe;\x0d\xbeYg1\xd9r\xb2!&\xf3<\
+\x9d\x15\xb3o6\x5c\xfc\xc8\x15n\x05\x19n\x9cF}\
+\x1d\x94r\xcbH1\x80\x86\xd1\xae8\xae9\x89I\xa3\
+M\x80/:\x98\xfd\xa5IPW\xd4YL\x0a\xb2\xe8\
+?\x89\xa2R\xb4\xf4\x11\x03\xa8\x1f\xcdJ\xf74\xa8\xa1\
+\x7fw\xf1)\xaa\xadg\x1b\xa3\xb2<\x11-A]Q\
+g1\xc1\xad\xb6\x19\xfa<\xca\x012\xa5\x89\x01D\xb5\
+\xd6\xe3\xf2\xc4\xb7\xa2z\x097{.\x9b\x805A\x9d\
+\xbd\x12\xcc\xf7\xefF\xf7`X\xad0iZ\xf3\x09\xc9\
+\xfdCx\x1c?R=\x86\x1c\x91-\xbe\xab\xf0d\x95\
+U\xd2\x1d\xd0,\xa83\xea.&\xfd\xd2FS>\x12\
+sCm\xcb\x98\xfc\xb6\x16(\x97f\x85q\xc6y\xb0\
+Q|\xc1\xf4\xf0u\x0b\xb0*R\xba\xe7\xa5\x0e\x07\x19\
+\xe5\x8b\xac\x82G3\xb4-@\xe9\xb4\xc7?Rs?\
+\xa7\xaam\xcc\x02$\xa5;n\xf3\xe8\xa6\xcd\xa1\xdc\x0a\
+\x09y\xcc\x00\x84\xfb\x90\xc5\xc4\xe1\xf6\xc2\x95F\x07\xb3\
+\x00\xa1\xeeX\x071\xc9L\xeaK\xb5\xeer\x10r\x98\
+\x01('E|\xdd\xab\xd2\xec\x94\x0cDY\x10\xd4\x1d\
+\xeb &\xe9\xd4[ wv[\x80\xb44+kL\
+RJ\x00\xe4\x02\xd6E\xaa\x0e\x0c\xac\x8bi\x98\x01H\
+\xab\x14\x0f(\xcdN\xf6\x93\x1bH\xd5\x815\x80\x80n\
+\x80\xc4\xd5\xb4\xb9\xd8\x07H\xaa\x0e\xb4\xef\x0f\x92\xcb\x9d\
+\xec\x00\xc4\x85\xe6`\x9a\x01i=!\xda^t*\xf6\
+\xf9\x97\xaa\x03\xed\xe7\xe9=\x1e\xb5\xa3-@v\xba\x01\
+\x12\x1fj\xa5\xa8\xd9\x07(Y\x02 \xab\x8b\xfa\xc5a\
+v\x00\xaa\x95\xd8O\x9c\x93\xa2b\x1e \xa99.\xb3\
+\xb3\x9e)\x80\x1ah\xd6Tj\xae\x04\xe7\x87d\x0c\xdf\
+\x0b\x8d\xbaK\xcdq5;j\xa8\xd6\xdd\xebUV1\
+\x03\x10f\xcc\x10\x1dG\x92\xe1\xfd\x1d\xdd4\xcc\x02\x84\
+\xbak$\xa6(\xaa-\x97\xe9\x8e\x81@Q\xc9\x0c@\
+\xb8!\xdd*1\xdc\x1d\x96\xa5c\x16 )\xdd\x1d\x82\
+\x15\x1a\xed7(\xb7@\x8a\xb2\xb6\x00UPM;\x89\
+\xa1\xcf\xd4\x8a\x87ic{&1\x0b\x90\x94\xee\xe5\xa6\
+\xd3\xd4\xeb\xae\x90;N\xdf\x02h\xcf\xc2|\x0c\xf9\xa9\
+\x0e\xfb\xbf\x97\xd8;S\x90\xad\x87n:\x05s\xf0\xa0\
+\xce\x05\x12{\x9c.5\x1e\xa5=\xfe\x01c\xf2\x91\x0b\
+m-\x10J\x19\xcdJ\x1f,\xb3H\x06\xa23\xfa\x19\
+\x98\x03\x08u\x96\x1a\x00\x5ch8L\xb5\xeeN\xc1\xe0\
+X9\xb1\xc4\xdb\x1e\xa0K\xb4\xc7A\x17\xeb\xc5\xb7n\
+\xcc\x1f\xd4\xcd\x97\x9f\x87\x15A]Qg\xd1\x01\x83\xf9\
+\x1c\x89\x7f*\xa9\xd6\xdf%\x18n\xa5\x9fm\x0b\x10\xf5\
+\x8e\x173\x8aI\xb9\x83Y\xfdS\x99\x01\x08u\x95r\
+\xbb\xc7\xabwQ\xaf\xbfKH\xfeQ\x0c\xa03\xb4+\
+\xfe?\x97L\x92\xe7\xcb\x1f)H\x87\x14\x0d\xfd\xb1\x10\
+\xea\x88\xba\x8a\x8e\xbe\xdc\x168]\xfb\x15\xf5up{\
+\x92N\x88\x01t\x8av\xc5q\xe5z\xc7\xf9&\xc9\x8e\
+y\xf2\xae\x0c\xea\x1b\x1fu\x94\x02\xfdp\xe5gLd\
+\xb9\x17<\x9a}b\x00\x9d#\x85\xfa\xa4}[\xcf6\
+I\xce\x09\xcd\xbc\xd3\x00\x13{\xd3{4\x18uC\x1d\
+\xa5\xac\x0f\x02D\xbbx\xbd\x0a\xd0(\x1bw\xde\x06\x10\
+\x19\xca\xe3\xf2\xef\xb7\xb4W\x00\xb3\xaa~\xf4\xbd\xf4\xbc\
+\xe7\xd2{\xb3|\x9b\xf0i\x13\xd4\x09u\x93\x92}e\
+\x1f0\x91t\xd3\xe6\xca2\xad\x9b\xb9\xce*f\x81P\
+\x8e\xb0\x10\x84n#V\xa8\xacY|},Y-\x87\
+U\xd3s\xa1\xbb^I\x8d\xbe\xa8\x0b\xea\x94,\xb1{\
+\xa0\xb2\xe5<|{c\x1b\x0bMO \xcf8\xdb\xf6\
+\xdf\xedk\xb4\x8f\x85J`\x82\xf0\xd7\xbe\xa9\x06\xa9\xd3\
+\xcc\x99IJ_\xe6V\x1a B\x1dP\x97L\x89}\
+\xdd\x82\xd7\x0d;.\xfe\x91\x99\xbb\xc7\x04A\xbf;\x10\
+@\xfb\xc1\xbfLO\xbb\x9c\xaf\xb3\xc3\xe6\x93\xd2[\x1e\
+\xfa\xa4\xa9\xe1\xf5\xfb{\xc6\xd5\x9d\xe1\xbbQ\x07\xd4E\
+rdy\xf9-\xa8\xb2\x5cb\x02\x1e\xafW\x8e\x99\xc5\
+\xdf\x96\x04\x88\xc4Av?DL\xc8\xa7\xa7\x1a\xe0\x9b\
+2\xe9\xb8!+Y\x05\xebf\xf5\x8aK`\x8d\xef\xc4\
+w\xa3\x0eR\x82\x17\xd5\x1d\xab\xda\xc1Js\x83\xd5\x99\
+\xdb\xb8\xbepUM \x0b\x84\xf2\x05+\x15B\x0f\xf6\
+\xea\x81*8W'\xbd\x1f\x0e\xe3\x8e\xdfL\xeaA\x02\
+\xd8\xcc\x98\xcc\x13\xe1;\xf0]\xf8\xce\xe4\x0evL\xf6\
+M\x1b\x15\xd4\xd5\x0c\xf4\xc4?\xc6\x83\xed\xffO\xac\x86\
+\x9f\x01C\x82';\xffsoE\xc0T\xba(\x85\xfd\
+S\xe1\xcf\xf3zC\xd1\x80\xd4\xa8,{\xe0\xcf\xc4\x9f\
+\x8d\xef(\x0crV\x1c\xaf\x84\xfa\xf9\xd05\xcc@$\
+x\xb4k\xdb\xff\x9f\xd4uO\xdf\x91\xc7(\x96@\xc2\
+\xcce\x18\xac\x06\xcaZ\xdf*\x985\x15\xe7\x93\xf6^\
+\x0e\xfd\xb2\x95\xf6\x82I?\xa7\xf53\xf8r7f\x84\
+\x19\xb4\xe3\xfe\x9f\x0fO/\x87\x0a\xf3Yz\xad\x8f\xcb\
+h[=\xe5S\xfd?\xc6D^I\x80\xf0\xa6\xe6\xd5\
+\xc0\x98\xe0\xee>\xbc\xfa P\xf6\xfa\xf6\xa3\xb9X\x5c\
+\xf7\x94\x08\x10\xd5[F\xedy\xf3\xfe\xd7f\x06\x0b\x10\
+\x1e\xcc.\x07\x06\xcf\x8daM\xf0\x0a\x04\xccb\x1f\xaa\
+\xa7j{\xe1\x5c\x8bS\xf0\xfd\x1b\x05/\x98K\xee\xc4\
+\x85s.\xc1\x0b\x9b\x8e\xd7\xf9\xb2\xebO\xee\x9b\xc2$\
+DU\xa6\x7f\x1a\xf7\xce\xec\x15\x87\x82\x02\xc8\x0f\x11\x06\
+\xd3\x85\xc0\xa8`ga6{\xa9\x84\xe4\xb1\x92\xab\x8d\
+\x0eXs\xa0\xda\x97\x89\x03\x81^N,$k\x10\xb5\
+8\xf2\xea_\x9b\xf6A\xc6\xed\xc3zo@\x0b\xf3g\
+`Xp\x9e\xe8\xa9\xede\xb0\xe1X\x9d\xe4\xdaYT\
+\x87\xbc\xe4\x9do\x1f\xad\x85gv\x96\xdfJA\x83\x13\
+\x9fk\xc8\xa8q\xdfU3S\x81\xb5\xc5\x99\xb7E\xea\
+s\x81\x00\xc2\xb9\xf5\x0a\x96!\xc2\x18\xe7\xb33\x8d\xf0\
+\xe8\xd6\x1f\xe1\xd3\xd3\x8d\x92[A\x22\xdb\xd8\x1e\xf8\xb8\
+\xb4\x01\xfe\xed\xf3\x1f}K.B\xbb\xfc3\xacA\x84\
+\xd7~\xcbe\xae\x17%C\x06)\x17\xe6wc\xc5\xe4\
+\xf1{H\x10\xc1c\xc4\x98k\x1a\xd3\x05Ke|\x0d\
+W.58|\x17\xcd\x95\x5c1\x07e\xf1Xqg\
+\xf5\x96\xbb\xf6\xbey\xff\x1f\xa6\x8b}.`\x0c\xe4\x07\
+\x08\xefS\xba\x0e\x94\xa7\x7f\x09Gp\x99\x013\xbfb\
+\xf2N\xcc\xbf\xa8\x0f\xf1\x9c=\xeeM\xc2\x09\xcc\xa3d\
+\x04w\xe4\xba%\xac\xfb9h\x87\xc8\xe3UAe\xf3\
+\xd4\x01\x1b\x8b\x96_\x08\x0b ?Do\x90\xc7\x12H\
+`\xc1\x8eD\xa0p\x84\x85'E1\xa1\x15\xe6$j\
+M+\x83\xa3(\xbc\x06\xbc\xde*@U\x8b\x0b\xca\x9b\
+\x9dPn\x8aLv4\x9a!j\xb2\x0e)}c\xe6\
+\x9b#\xa4>\x1f\xe8\xda\xef\xb6\xf2*)\x8b\x13\xd1\x0a\
+\xb5\x8dKp{\xc8\xcd-\x22\x96\x98\xbf\x1bc\x22\x14\
+)\x88Zc\xa2XB\x84\xd6\xc7\xe66>\xde\xe1/\
+@G_\xb0ga>\x1e\x91|\x17\xb8D\x1d\x22\x9a\
+\x02\xeb&\xdb\xa0\x93\xef\xce^q\xac\xd3\x00\xf9\x05\x03\
+i3\xef\xea\xae\x01\x11\xb1>^\xbb+kaP.\
+8\x98/\x22V\x08\x97\xf0W\xf3n\xee\x1a\x105Z\
+\x87\x95l\x98S\x5c\x1a1\x80\xfc\xf2:\xdc\x5c\xde\xe0\
+\x92\xc0\x109\xddin\xab3\xe7\xc1\xa0\x07\x01\xc1~\
+!\xb1B\x98V})\xef\xe2\xc4\x86\xa8\xc96x\xdd\
+\xa6\xb9\xcb\x82\xce\xd6\xd2\xe10^dX\xbf\x9d<\x8a\
+x7\xc7fz!\x96C|\xb3\xbd_\xf5\xda\xe9\xef\
+e\x07\xfb\xf5\x1d\xad\x85I\xc9/b>\xd6\xe5\x96(\
+\xea\x96H\xf0h\xbc&{\xbfy!C\x1e\xea7\x10\
+W\x86Y<\x96\xf1\xeeM,\x88\x1a,#?y\xaf\
+\xe8\xf9\xc3Q\x07\xc8\x0f\xd1\x06\xf2\xd8\xc9\xbb71 \
+\x22\xae\xab\xc6\x98r\xf8ga\xb9\xd9N\xd4\xeb\x09R\
+jy\xf7\xb2\x0d\x91KH\xf64\xdb\x06Ni\xcd\xf7\
+\x133\x80\x88\x15\xaa&\x8f\x87\xb0n\xbc{Y\x85H\
+\x86\xab\xed\xc5\x1b\xe7>\xfbC\xd8\x81~g*D \
+*!\x8f\x17y\xd7\xb2\x09Q]\xcb]{\xde\x99\xfd\
+\xdb5\x9d\x1a)F\xa0N\xab\xe0\xe6\xe63.\x0cA\
+d\xb2\xdfy\xc3\xe6\xca\xee\xf4\x96\xe5N\x03D\xac\x10\
+\xfaN\x0c\xc0\x8e\xf3\xaee\x03\x22\x02\x8e\x8d\xc4=\x05\
+\x9b\xe6.\xf3\xc4\x1d ?D\x98\xeec\x0e\xf0\xa5\x0e\
+\xea!r\x0a\xa9B\x83e\xf88\x02ODR\xe1\x87\
+<\x13\x1dHfl\xbe\x807\xf9~EJw\xde\xbd\
+\xb1\x93`g\xac?(]\xe1=^\x99\xb1`\xc3\x9c\
+\xe2\x88\x84\x1cA\xedH\x0c\x03\xa21h\x94H1\xf0\
+\xae\xa5\x07\x22/\xf9\xf3\xf5\xb5\xe3\xefN\xee3\xfa\xa9\
+H\xbd3\xdc\xa5\x8c\x8e\xdc\x19&\xa9\xc2\xb52\x1b\xef\
+Vz\xdcY\xc9\xd5\xa3\x1fF\x12\x9e\xa8\xb8\xb0v\x96\
+\xe8>\xf2\xd8\xc1-Q|-\x11\xee\xdb>~\xc3\xfa\
+\x87\xd1\xb9I\xcb#\xfd\xae\xa8\xb80\x11w\xb6\x8b\xc7\
+D\xf1\x81\x08s\x14\x9d\xb8a\xfd\xed==\x93_\x8a\
+\xc6{\xa2\x0eP\x9b\xc0\x1a\x8fI\xf7\xe2]\x1bS\x88\
+\xca\x7f96s\xf9\xac\xfc\xb4O\xa2\xf5\x8e\xa8\xc4@\
+\x221\x11f\xc0GK\xc4\xe7\x89b'\xc7IL4\
+&\x9a\xf0\xdc\x025\x16\xb5\xf1\x9f\xec\x98H\xca\xdfx\
+\xdfF]\xb0\x8d'\xfa\xdb\x1c\x12\x02 ?D8\xd9\
+8\x9f\x94\x17\x80/\xc0Fe \xe6o\xdb\xf9\xfe\xb6\
+\x8e\x89D=\x06\x92\x88\x8b\xa6\x90\x07\x9aW#\xef\xf7\
+\x88\x08n\xaby\xc8\xbf\xb8\x1d3\x89I\x0c$a\x8d\
+\xb0\xa2\xc3\x80oJ\x8b\x84`\x1b\x0e\x8b5<q\xb5\
+@\xed\xac\x11\x1e\x9b\xc6\xe4\x8dI\x9c\x85\x90\x04\xf7\xa5\
+?K\xc0\x89\xdb\xa9\xe1\x98\x0c\xe3\x83\x84(\x8f<\xde\
+\x02~\xda#X\xc1\x09\xda_\xf8\xf7\xa7C\x97\x07\xa8\
+\x0dH\x0b\xc8\x03\xb3\x81\xf09#q\xc1\xdd\x0eK\x09\
+8\x9f\xd3\xa0L\xdcb\xa0\x00\xb1\x116\xcc\x00\xffh\
+\x82\x9f\xc5\xff\x7f1\xfb\xdbd\x00-\xf0P\x13\x03\x05\
+\xb0Fx7\x12fHK\xe8\xd42\x1d\x08\xa6\xe0\xc7\
+\x18g\x95\x7f\x0f:UB\x9d\x0b\x93\x00\xa9\x07y<\
+\xd7\xc5@j\x05\xe7\xd5XM\x08&,@m@\xc2\
+\x05\xd9E\xa4<CJn\x82\x82\x83IM\xd7\x93\xb2\
+\x81\x80SO\xbb\xb2L\x01\xd4\x06$\xcc\xaa\x863\xda\
+\x8f\x92\x82\x99\xd3\xe5\x8cC\x833\xc8_\x92\xf2>)\
+[\x098nV\x14g\x12\xa0v0\xa1%z\x98\x14\
+LG2\x8a1\xf5qq\xf9/\xa4|D\xa0a2\
+\x9d2\xf3\x00\xb5\x83\x09\xe7\x92~\x0a7\xb3\xeb\xe3\xc2\
+\xad\x862\x151\xdb8\xde\xc5\x867\xfe\xfd5\xdes\
+8\x1c\xa0\xc00i\xfd\x10M\x86\x9b[I\xee!%\
+\xd6\xb7\xce\xe1Mxx\x891n\xf1\xc5\xabD\xf7\xfb\
+/\xf4K\x18IX\x80D\x80\xc2\x9b\xe6\xf0\x5c\x0bn\
+n\x1b\x027\xd7\xe1\xee \x05\xadVj'\x7f|3\
+)hM\xae\x90r\x8a\x14<&\x8c{\xa0\xce\xfao\
+\xc2NX\xe92\x00u\x00W\xaa\x7fT\x97\xde\xa6\xe8\
+D\x5c \xba <(\xd0\xd0\xa6T\x10H\x9a\xbbj\
+\xdb\xdd\x02\x88\x0b\x97p\xe5\xff\x04\x18\x00\xc3:\x8dd\
+\xf2\x87\x09m\x00\x00\x00\x00IEND\xaeB`\x82\
+\
+\x00\x00\x06\x87\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x19tEXtSoftware\
+\x00Adobe ImageRead\
+yq\xc9e<\x00\x00\x03#iTXtXML\
+:com.adobe.xmp\x00\x00\
+\x00\x00\x00<?xpacket beg\
+in=\x22\xef\xbb\xbf\x22 id=\x22W5M\
+0MpCehiHzreSzNTc\
+zkc9d\x22?> <x:xmpm\
+eta xmlns:x=\x22ado\
+be:ns:meta/\x22 x:x\
+mptk=\x22Adobe XMP \
+Core 5.6-c140 79\
+.160451, 2017/05\
+/06-01:08:21 \
+ \x22> <rdf:RDF \
+xmlns:rdf=\x22http:\
+//www.w3.org/199\
+9/02/22-rdf-synt\
+ax-ns#\x22> <rdf:De\
+scription rdf:ab\
+out=\x22\x22 xmlns:xmp\
+=\x22http://ns.adob\
+e.com/xap/1.0/\x22 \
+xmlns:xmpMM=\x22htt\
+p://ns.adobe.com\
+/xap/1.0/mm/\x22 xm\
+lns:stRef=\x22http:\
+//ns.adobe.com/x\
+ap/1.0/sType/Res\
+ourceRef#\x22 xmp:C\
+reatorTool=\x22Adob\
+e Photoshop CC (\
+Macintosh)\x22 xmpM\
+M:InstanceID=\x22xm\
+p.iid:7F517578FC\
+EF11E793C7AB30FF\
+B47C13\x22 xmpMM:Do\
+cumentID=\x22xmp.di\
+d:7F517579FCEF11\
+E793C7AB30FFB47C\
+13\x22> <xmpMM:Deri\
+vedFrom stRef:in\
+stanceID=\x22xmp.ii\
+d:7F517576FCEF11\
+E793C7AB30FFB47C\
+13\x22 stRef:docume\
+ntID=\x22xmp.did:7F\
+517577FCEF11E793\
+C7AB30FFB47C13\x22/\
+> </rdf:Descript\
+ion> </rdf:RDF> \
+</x:xmpmeta> <?x\
+packet end=\x22r\x22?>\
+@\xb2\x97\xa1\x00\x00\x02\xfaIDATx\xda\xacW\
+Ak\x1aA\x14~\xabV*z\x08\xd4@\x0d\x05i\
+\xa99\x05J\x14$ \xb94\xc5KI\xbd\x19\x08H\
+\xb1`1\xc6\x1e\xfa\x07z\xb0\x90\xdc,R\x1b\xa8=\
+Ti+\x18\xf1RA/\xa5\xa5\x16\xa1\x98DC\x0e\
+\x0d\x89\x05/\xb6\x87b\xa5\xa0\xa2P\xa2}\xb3]\xb7\
+\x094\xee\xcc\xee>\xf8|\xeb\xec{\xf3}\xfbfv\
+f\x96\x03F\x0b\x87\xc3W\xd0=D\xdcA\x5c\x17\x9a\
+\xbf\x22\xde\x22\x9e\xc4\xe3\xf1&K\x7f\x1c#\xb9\x1f\xdd\
+3\x84\xe1\x9c\x90>b\x1dE\xbc\xa4\xedS\xcb@\xbe\
+\x8e\xee9\xe2\xc2\x840r\xcf\xe3t:[\x95Je\
+G\xb5\x0a \xb9\x1d\xddg\x09\xf2\xd3\xf6\x1b\xb1\x80\x95\
+\xa8J\x05j(;\x8c1\x90\x8f+\x11S\xa5\x02\xf8\
+\xf4\x0et\xbb \xcf\x9cX\x85\x1d\xa5\x15X\x06\xf9v\
+[\x8d!XP @2WG\xd1\xc9e\xf2c\xb7\
+\xdb\xc1\xeb\xf5\x82\xd1h\x9c\x18\xdc\xeb\xf5`{{\x1b\
+\xaa\xd5\xaa\x98\xab\xb4\x02\x179\x8e\x83\x95\x95\x15Ir\
+b$\x86\x08\x15\xcc\xa0\x86\x80\x1f\xe3\x8b\xd1h\x04\x1b\
+\x1b\x1b\xb0\xb9\xb9y&\xe0\xbc\xf6\xd3\xb9J\x04\x1c\x12\
+\x02R\xd6\x93\x93\x13\xc9`\x12\x93\xcdf\xc7\x7f\xbf\xa8\
+1\x07>!\xee\xef\xed\xedA\xa3\xd1\x00\x97\xcb\x05\xb3\
+\xb3\xb3\xd0\xedv\xc5!!\xe3\xbe\xba\xba\x0a\xc7\xc7\xc7\
+\x10\x89D\xa0\xddn\x9f\xceU,\xe0\xfd\xf8\x82t\x9c\
+\xcf\xe7Y\xde\x82\x0f\x8a\x87\x00\x17\x92\xef2\x17\xa2]\
+\xcc\xfd\xa6\xd6R\xfcZ\x86\x00\xaa\x1cZ\x01o\x10\x03\
+\x06\xf2\x81\x90\xa3\x8e\x00,e\x0b\xdd\x16\x83\x80-!\
+G\xb5\x0a\x10{L&<E\x5cO\x88\x05U\x05\xe0\
+\x13\xfdBw@\x11z \xc4\xaa+\x00\xb7e\x0b:\
+\x1bE\xa8\xadX,\xde\xc0\xc5\x8b\xea\xb0\xc3M \xbc\
+\x8a\xee\x16\xe2&\xd9\xd7\x11\xd7h:\x5c\x5c\x5c\xe4\xf7\
+\x82~\xbf?\xdc\xdf\xdf?L\xa7\xd3\xe4`\xf2\x0e\xab\
+\xd2\x90\x14\x80\xa4&t\x01\x84\x0f1\xcf\xfa\xde\xb9\xdd\
+nX^\xfe{|h\xb5Z\x10\x8dF\xa1\xd3\xe9\x8c\
+o\xd7\x10\xaf\x10/PL\xf7\x8c\x00$&\xfe\x01\xe2\
+\x11\xe2\x12+1\xd9-=\x1e\x0f,--\xf1\xff\x09\
+)!'\x22\xfec?\x11\x11\xc4S\x142\xe2\x04\xf2\
+\x94\xf0\xd4\xcc\xa6\xd1h\xf8\x92\x93=\x82_\x00\x06\x03\
+\x88\xc5b\xd0lJ~\x1e\x90j\xdc%{\xc1=\xb9\
+\xe4Z\xad\x16|>\x1f8\x1c\x0eq'L$\x124\
+\xe4 p~$\x02\x82r\xc8\xf5z=\xf8\xfd~\x98\
+\x9b\x9b\x13\xcf\x04\xc9d\x12\xea\xf5:K7A\x9d\x9c\
+\xc9f0\x18 \x10\x08\x80\xcd\xf6\xef\xad\xccd2\x80\
+\xb3\x9e\xb5\xaby\x1d\xcb\xd7\x111\x93\xc9\x04\xc1`\x10\
+\xacV\xab\xd8V(\x14\xa0\x5c.\xcb\x1aE\x1dK\xf4\
+\xd4\xd4\x14\x84B!\xb0X,b[\xa9T\x02\x5cx\
+d\x1f\x9b\xa9\x05LOO\xf3\xe4f\xb3Yl\xab\xd5\
+j\x90\xcb\xe5@\x89Q\x09\x98\x99\x99\x81\xb5\xb55\xbe\
+\x02c;::\x82T*\x05\xc3\xe1P\x91\x80?\x02\
+\x0c\x00\xae\x14\xfd~;\x03\x1c1\x00\x00\x00\x00IE\
+ND\xaeB`\x82\
+\x00\x00\x06m\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x06$IDATX\x85\xc5\x97]l\x1cW\
+\x15\x80\xbf{g\xf6\xd7\xeb\xdd\xecn\xd7v\x8a\x93\xaa\
+\x09N\xec@\xab\xa4\x15\x85\x22\x81\x08/\xfd\xaf\xa1\xa1\
+\x91\xa8\xaa*o}\x02\xa9\x02\xc1\x03\x0fHH\xbc!\
+\xc4\x8f\xfaP\xde\xc2\x03Q\xd3\xa2\x22\xa52\xa9x\xa8\
+\x10T\x94\x86\xa8\xad\xed\xc4I\x14\x9aD\xae\xecl\xd6\
+k{\xed\x9d\xdd\xd9\x9d\xb9\xf7\xf2\xb03\x9b\xd9];\
+N\x11\x12W:\xba3g\xee\x9e\xf3\x9d\x9f\xb9w\x16\
+\xfe\xcfC\xdc\xed\xc2\xb3Ph\xc3Sq\xdb~\x01)\
+\x0fj\xa5\x8aJ\xeb!KJ\xc7\x92r\xc5h\xbd\xe0\
+)uJ\xc0\xcc\xd3\xb0\xf6?\x038\x03\x13\xb6e\xfd\
+F\xc37J\xa3\xa3z\xf7\x17\x0e\xa53\xbb\xc7H\xe4\
+\x0b\xc4s\xc3\xb4k\x1b\xb8\xab\xab8\xcb7Y\xbep\
+\xb1Q)\x97-a\xcc_<c^\x99\x86\xab\xff5\
+\xc0i\x88g\xa4\xfc5p\xe2\xf3\x0f\x1d\x89\xdf\xff\xf8\
+c\xd2\xf2=XY\x05\xc7\x81V\x1b|\x0f\xec\x18$\
+b04\x04\xc5<\xca\xb6\xf9\xf7\xcc;\xfa\x93\xd9\xb9\
+\x16\xc6\x9c\x5c\xd4\xfa\xfb/\x83\xf7\x99\x00f\xa0\x84\x10\
+\xef\xdc322\xf5\xe0K/&\xe3\xca\x87k7\xa0\
+\xe9\x0e\xac5\xfd\xd7\xe9\x14\xdc7N\xdb\x92|\xfc\xfb\
+?\xb8\xab\x95\x95\x0b\xda\x98\xc7\x9f\x81\x95\xbb\x02x\x1b\
+\xf2B\x88\xb9}SS\xa3\x07\x9f?fs\xf92\xac\
+o\xdc\xd1\xa91f@\xcf\xae\x1c\x1c\xdc\xc7\x957\xff\
+\xe4\xdfX\xb8|\xd31\xe6\x8b\xc7\xa1\xd6\xef\xcf\x8a\xde\
+\x9c\x06+)\xc4\xbb\xfb'''\x0e\x1c\xfb\x96\xcd\xdc\
+<\xd4\x1b\x83Q\x06Nu\xf4>2k\xc0\xb8-L\
+u\x8d\xe2\xd7\xbf\x22\xcdJ5\xe5VW\x8fN\xc3\xc9\
+7\xfa8e\xf4&+\xe5\xcfK\xc5\xc2\x03\x13\xcf\x7f\
+\xdb6s\x17;FB\xa3\xc6\xf4\x88\x898\x0bE\x85\
+\xce\xc3\xf5M\x175{\x89}\xc7\x9e\x8d\xe5\x8b\x85\xc3\
+\x19)\x7f\xd6\x9f\x81n\x09\xfe\x08\xbb3R.\x1c}\
+\xe5{9\xb9\xb8\x04\x1b\x9b\x03\xa9\x8d\xce\xfd\xba0+\
+\x03k\x8c\x81l\x063>\xca?~\xfb\xbb\xf5\x96\xd6\
+\x93\xd3P\x1e\xc8@Z\xca_\x1e84\x95\x91m\x0f\
+]\xdb\xe8F\xa9\xb7\x910J\x13dD\x05%\xd1\x11\
+}X&\xbdQG\xf8>{'\x0fd\xe2R\xfeb\
+\xa0\x04\xa7!\xa7\x8d\x99\xbe\xf7\x99',ucq[\
+\xc7\x03\xa5\x88>\x0bK\x13\xe8U\x1f\x88\xba\xbe\xc4\xbd\
+O|\xd3V\xc6<7\x03\xd9\x1e\x80\x14<U,\xe4\
+\x95P\x0a\xddj\xf7:\x8eD\xa9\xb7\x88\xb2\xab\x17\xa2\
+#\x91\xf4\x87:%%\xaa\xed!\x84$\x97\x1d\xd6\x1e\
+<\xd6\x03\x10\x13\xe2\xbb\xa3\x13\xfb3\xaa\xba\x8e\x89\x18\
+\xd1\xa1\x11)1Rv\x0d\x9a@\xa7-\x0bcY\x18\
+)1\x11\xbd\x0a\xd6w%\xd0\xfbk\x1b\x14\xf7\xed\xcd\
+\xd8B\xbc\x10\x02\xd8A\xc3L\xa6\xf7\xeeA7\x1a]\
+C\x08\x01\xaf\xbf\x1e-\x17\x82\xcfpx\x04\xa3y\xfc\
+x\xa7\x99\x85@7[\xa4>\xb7\x1b\xf1\xd1\x85\xa9\x1e\
+\x00\x0d\xa5\xf8H\x09S\xaev\x88\x83\x0c\xc8\xed\xacF\
+\x861\x06\xadu\xf7Z\x08\x81\x94\x12!:\xa8\xa1=\
+\x00\xed\xf9\xc4\x8a\xbb0P\x0a\x7f/\x01\xb41\x99X\
+!\x8fV\xaa\x93\xda u;\x0d\xad5J\xa9n\xa3\
+\x85\x10J)|\xdfGk\xdd\xe9\x95\xb0\x17\x8c!\x96\
+\xcb\xa0\x8d\x19\xee\x01\x90B\xd4\xdb\x8e\x83\x8e\xc5o\xd7\
+{\x07\x00\xa5T7\xf2;\x016\xce\x9f\xc7\xabV;\
+\xbd\x12\x8b\xe1\x96+\x08!6\xc356\x80\x80[\xcd\
+J%7\x94\x8c\xa3[\xad\x1d\x8d\xee\xe4\xb8\x07\xb4\xd1\
+\xc0\x9f\x9fG\xa4\xd3\xc4\xee\x1f\xc75\x1e\x02*=\x00\
+\xc0\xa5\xfa\xd5k\x13CG\x0ec6\x9dN\x03\x02\xee\
+\x89\x13\x9d\xd4\x1a\x83_.\xe3]\xbf\x8eq\x9c\xee\x0e\
+\x17\xf6J\xcf\xee\x17\xd9={\xf4\x8e\x83\xe5:46\
+\xeah\xb8\xd8\x03\xe0\x1bs\xaa<\x7f\xf1h\xe9KG\
+2=MS\xaf\xa3*\x15\xfc\xa5\xa5\xce\x1b\xb2\xcdV\
+\xdb\xaf\xeb\x07\x0c\x9f\xc9\xb1\x02\xb5\xcb\xd76\xb51\xa7\
+z\x00\x5c\x98\xd9\xd8\xac[\xed\xc5O\xf0\xfe\xb5\x801\
+\xa0[-\x8c\xebn\x19\xe5\xddD\xdf\x03d\x0c2\x9d\
+\xc0\xc4$\x8e\xdb\xb2\x81\xb3!\x80\x048\x0e5!\xc4\
+[\xcb\xff\x9c\xf5\xe5}cx\xb5\x1a\xcau\xbb\xa7[\
+\xb8\xf3\x85\xa2\xb8\xbd\xd5\xf6o\xcd\xa1^\x85\xe7C\xa0\
+\x8f\x1d\xd8C\xf9\x83\x05_\x1a\xde\x98\x86\xcd\x1e\x00\x00\
+W\xeb\x1f./\x95\xeb&\x9bF\xe4\xb3\xb7\x9dE\x0e\
+\x9a\x01\xa7\xdc>\x86U\x1f`\x14\x5c\xe63\x90\x8eS\
+\xbd\xb5Z\xf7\xe1GDF\x17\xe0\x18,#\xc4kW\
+\xdf\xfd\xa0\x91xx\x12\x93\x8c\xef\x18\xbd\xda\x02&\x0a\
+\xae\x8d\xc1\xa4\x12\xa4\x1e\x9a`\xf1o\xb3\x8e\x14\xe2\xd5\
+\xe8Q\xdc\x03\x00P\xd7\xfa'N\xd3\x9d\xfd\xf4\xef\x1f\
+z\xc9G\x1f\xc0\xa4\x12\x03\xa9\xdd*\xfa\x9elE\xa2\
+'\x9d`\xe8\xcb\x07Yzo\xae\xed\xb6\xda\x1f\xd5\xb5\
+\xfe)}c`k\x7f\x0bv\xd90_(\xe5G\xc6\
+\xbfv$\xe6\x9c\xbf\x84\xbfR\xebm\xb8-:<\xaa\
+\x07\xb0K9\x86\x0e\xefg\xf9\xbdyo\xb3Z[n\
+\xc2\x83[}\x13ny\xb6\x9c\x81{\x04\x9cM\xa5\x92\
+\x87\xf6\x1e}8e\x1a.\xcd\x0b\xd7QNs\xdb\xd7\
+0\x14k8Mjr\x1c\x91\x8a\xf3\xe9_?nz\
+n{\xae\x0dO>\x07\xd5\xad|m{\xb8\xbd\x06\xb1\
+1xU\x0a\xf1b~\xb4\x90\x18y\xe4\x90\xc4m\xd1\
+\xba\xb9\x8a\xbf\xee\xa0\xdd\x16\xdaS\x10\xb3\x90\xc9\x04V\
+.Ml,\x8f\x8c[\xdc:w\xc5\xaf\xddZ\xf3\xda\
+p\xf2$\xfc\xe0\x0c4\xb6\xf3\xb3\x15\x80\x002\xc0\x10\
+\x90\xf9\x0eLN\xc3\x8f\xb3\xf0H2\x95P\xd9\xb1B\
+*Y\xccb\x0f\xa7\xb1\x87\x92xN\x93V\xadA{\
+u\x83\xf5\x9bkM\xcfmY\xebp\xeeM\xf8\xd5\xdb\
+p\x05\xa8\x03Nd\xde\x11 \x1d\x00\x0cG\xe7=0\
+\xf6$<z\x18\xbe\x9a\x85\xb1\x04dl\x88\xfb\xe0\xb9\
+P_\x87\xca\x87\xf0\xfe\x9f\xe1\xdcR\xa7\xd3\xebt\xde\
+\xf7p\xde\xa4\xf3\x9fQ\xddM\x09\xd2t\xbe\xdb\xc2L\
+\xa4\x839\x15H\x02\x88\xd3\xf9_a\x02\xa3\x1e\xe0\x02\
+M:)\x0f%t\xbc\xd9\xef\xfcN\x00\xd1\xe7\xb1\xc0\
+a\x0aH\x06\x8e\xe3\x81\xde\x06\xfc\x08@\x1bh\x05\x8e\
+\xdd@7\xe04:\xfe\x03\xe7\x9a\x10E\xb3\x99\xaa\x5c\
+\x00\x00\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x0d\
+\x0e\xa1\xb1G\
+\x00t\
+\x00e\x00x\x00t\x00-\x00h\x00t\x00m\x00l\x00.\x00p\x00n\x00g\
+\x00\x0b\
+\x0c+\x1f\xc7\
+\x00g\
+\x00o\x00-\x00n\x00e\x00x\x00t\x00.\x00p\x00n\x00g\
+\x00\x0d\
+\x07\x1b{\x87\
+\x00g\
+\x00o\x00-\x00b\x00o\x00t\x00t\x00o\x00m\x00.\x00p\x00n\x00g\
+\x00\x10\
+\x08\x15\x13g\
+\x00v\
+\x00i\x00e\x00w\x00-\x00r\x00e\x00f\x00r\x00e\x00s\x00h\x00.\x00p\x00n\x00g\
+\x00\x10\
+\x08\xea\xfbg\
+\x00p\
+\x00r\x00o\x00c\x00e\x00s\x00s\x00-\x00s\x00t\x00o\x00p\x00.\x00p\x00n\x00g\
+\x00\x0f\
+\x0e6v\xc7\
+\x00g\
+\x00o\x00-\x00p\x00r\x00e\x00v\x00i\x00o\x00u\x00s\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0d\x8b9\xe7\
+\x00e\
+\x00d\x00i\x00t\x00-\x00c\x00l\x00e\x00a\x00r\x00.\x00p\x00n\x00g\
+\x00\x10\
+\x05\xcb%G\
+\x00A\
+\x00p\x00p\x00L\x00o\x00g\x00o\x00C\x00o\x00l\x00o\x00r\x00.\x00p\x00n\x00g\
+\x00\x09\
+\x05\x04\xbdG\
+\x00n\
+\x00i\x00n\x00j\x00a\x00.\x00p\x00n\x00g\
+\x00\x10\
+\x0f\xcb\x90g\
+\x00d\
+\x00i\x00a\x00l\x00o\x00g\x00-\x00e\x00r\x00r\x00o\x00r\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0a\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00CC\
+\x00\x00\x01\x83\x17\xd5\xbe\xbb\
+\x00\x00\x00\xee\x00\x00\x00\x00\x00\x01\x00\x00+^\
+\x00\x00\x01\x83\x17\xd5\xbe\xbb\
+\x00\x00\x00<\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xaa\
+\x00\x00\x01\x83\x17\xd5\xbe\xb7\
+\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x10\x9d\
+\x00\x00\x01\x83\x17\xd5\xbe\xbb\
+\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x18\x89\
+\x00\x00\x01\x83\x17\xd5\xbe\xbb\
+\x00\x00\x00 \x00\x00\x00\x00\x00\x01\x00\x00\x06\xe3\
+\x00\x00\x01\x83\x17\xd5\xbe\xbb\
+\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x00$\xc8\
+\x00\x00\x01\x83\x17\xd5\xbe\xb7\
+\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00 \x14\
+\x00\x00\x01\x83\x17\xd5\xbe\xbb\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x83\x17\xd5\xbe\xbb\
+\x00\x00\x01,\x00\x00\x00\x00\x00\x01\x00\x00I\xce\
+\x00\x00\x01\x83\x17\xd5\xbe\xb7\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/webenginewidgets/simplebrowser/data/simplebrowser.qrc b/examples/webenginewidgets/simplebrowser/data/simplebrowser.qrc
new file mode 100644
index 000000000..eda8e3f3d
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/data/simplebrowser.qrc
@@ -0,0 +1,16 @@
+<RCC>
+ <qresource prefix="/">
+ <file>AppLogoColor.png</file>
+ <file>ninja.png</file>
+ </qresource>
+ <qresource prefix="/">
+ <file alias="dialog-error.png">3rdparty/dialog-error.png</file>
+ <file alias="edit-clear.png">3rdparty/edit-clear.png</file>
+ <file alias="go-bottom.png">3rdparty/go-bottom.png</file>
+ <file alias="go-next.png">3rdparty/go-next.png</file>
+ <file alias="go-previous.png">3rdparty/go-previous.png</file>
+ <file alias="process-stop.png">3rdparty/process-stop.png</file>
+ <file alias="text-html.png">3rdparty/text-html.png</file>
+ <file alias="view-refresh.png">3rdparty/view-refresh.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/webenginewidgets/simplebrowser/doc/simplebrowser.rst b/examples/webenginewidgets/simplebrowser/doc/simplebrowser.rst
index 83dd109c5..abe707670 100644
--- a/examples/webenginewidgets/simplebrowser/doc/simplebrowser.rst
+++ b/examples/webenginewidgets/simplebrowser/doc/simplebrowser.rst
@@ -1,8 +1,177 @@
-Simple Browser Example
-======================
+Simple Browser
+==============
-A simple browser based on Qt WebEngine Widgets.
+Simple Browser demonstrates how to use the Qt WebEngine Widgets classes to
+develop a small Web browser application that contains the following elements:
-.. image:: simplebrowser.png
- :width: 400
+- Menu bar for opening stored pages and managing windows and tabs.
+- Navigation bar for entering a URL and for moving backward and
+ forward in the web page browsing history.
+- Multi-tab area for displaying web content within tabs.
+- Status bar for displaying hovered links.
+- A simple download manager.
+
+The web content can be opened in new tabs or separate windows. HTTP and
+proxy authentication can be used for accessing web pages.
+
+Class Hierarchy
++++++++++++++++
+
+We will implement the following main classes:
+
+- ``Browser`` is a class managing the application windows.
+- ``BrowserWindow`` is a ``QMainWindow`` showing the menu, a navigation
+ bar, ``TabWidget``, and a status bar.
+- ``TabWidget`` is a ``QTabWidget`` and contains one or multiple
+ browser tabs.
+- ``WebView`` is a ``QWebEngineView``, provides a view for ``WebPage``,
+ and is added as a tab in ``TabWidget``.
+- ``WebPage`` is a ``QWebEnginePage`` that represents website content.
+
+Additionally, we will implement some auxiliary classes:
+
+- ``WebPopupWindow`` is a ``QWidget`` for showing popup windows.
+- ``DownloadManagerWidget`` is a ``QWidget`` implementing the downloads
+ list.
+
+Creating the Browser Main Window
+++++++++++++++++++++++++++++++++
+
+This example supports multiple main windows that are owned by a ``Browser``
+object. This class also owns the ``DownloadManagerWidget`` and could be used
+for further functionality, such as bookmarks and history managers.
+
+In ``main.cpp``, we create the first ``BrowserWindow`` instance and add it
+to the ``Browser`` object. If no arguments are passed on the command line,
+we open the Qt Homepage.
+
+To suppress flicker when switching the window to OpenGL rendering, we call
+show after the first browser tab has been added.
+
+Creating Tabs
++++++++++++++
+
+The ``BrowserWindow`` constructor initializes all the necessary user interface
+related objects. The centralWidget of ``BrowserWindow`` contains an instance of
+``TabWidget``. The ``TabWidget`` contains one or several ``WebView`` instances
+as tabs, and delegates it's signals and slots to the currently selected one.
+
+In ``TabWidget.setup_view()``, we make sure that the ``TabWidget`` always
+forwards the signals of the currently selected ``WebView``.
+
+Implementing WebView Functionality
+++++++++++++++++++++++++++++++++++
+
+The class ``WebView`` is derived from ``QWebEngineView`` to support the
+following functionality:
+
+- Displaying error messages in case the render process dies
+- Handling ``createWindow()`` requests
+- Adding custom menu items to context menus
+
+Managing WebWindows
+-------------------
+
+The loaded page might want to create windows of the type
+``QWebEnginePage.WebWindowType``, for example, when a JavaScript program requests
+to open a document in a new window or dialog. This is handled by overriding
+``QWebView.createWindow()``.
+
+In case of ``QWebEnginePage.WebDialog``, we create an instance of a custom
+``WebPopupWindow`` class.
+
+Adding Context Menu Items
+-------------------------
+
+We add a menu item to the context menu, so that users can right-click to have
+an inspector opened in a new window. We override
+``QWebEngineView.contextMenuEvent()`` and use
+``QWebEnginePage.createStandardContextMenu()`` to create a default ``QMenu``
+with a default list of ``QWebEnginePage.WebAction`` actions.
+
+Implementing WebPage and WebView Functionality
++++++++++++++++++++++++++++++++++++++++++++++++
+
+We implement ``WebPage`` as a subclass of ``QWebEnginePage`` and ``WebView`` as
+as subclass of ``QWebEngineView`` to enable HTTP, proxy authentication, as well
+as ignoring SSL certificate errors when accessing web pages.
+
+In all the cases above, we display the appropriate dialog to the user. In
+case of authentication, we need to set the correct credential values on the
+QAuthenticator object.
+
+The ``handleProxyAuthenticationRequired`` signal handler implements the very same
+steps for the authentication of HTTP proxies.
+
+In case of SSL errors, we just need to return a boolean value indicating
+whether the certificate should be ignored.
+
+Opening a Web Page
+++++++++++++++++++
+
+This section describes the workflow for opening a new page. When the user
+enters a URL in the navigation bar and presses Enter, the
+``QLineEdit.:returnPressed()`` signal is emitted and the new URL is then handed
+over to ``TabWidget.set_url()``.
+
+The call is forwarded to the currently selected tab.
+
+The ``set_url()`` method of ``WebView`` just forwards the url to the associated
+``WebPage``, which in turn starts the downloading of the page's content in the
+background.
+
+Implementing Private Browsing
++++++++++++++++++++++++++++++
+
+*Private browsing*, *incognito mode*, or *off-the-record* mode is a feature of
+many browsers where normally persistent data, such as cookies, the HTTP cache,
+or browsing history, is kept only in memory, leaving no trace on disk. In this
+example we will implement private browsing on the window level with tabs in one
+window all in either normal or private mode. Alternatively we could implement
+private browsing on the tab-level, with some tabs in a window in normal mode,
+others in private mode.
+
+Implementing private browsing is quite easy using Qt WebEngine. All one has to
+do is to create a new ``QWebEngineProfile`` and use it in the
+``QWebEnginePage`` instead of the default profile. In the example, this new
+profile is owned by the ``Browser`` object.
+
+The required profile for *private browsing* is created together with its first
+window. The default constructor for ``QWebEngineProfile`` already puts it in
+*off-the-record* mode.
+
+All that is left to do is to pass the appropriate profile down to the
+appropriate ``QWebEnginePage`` objects. The ``Browser`` object will hand to
+each new ``BrowserWindow`` either the global default profile or one shared
+*off-the-record* profile instance.
+
+The ``BrowserWindow`` and ``TabWidget`` objects will then ensure that all
+``QWebEnginePage`` objects contained in a window will use this profile.
+
+Managing Downloads
+++++++++++++++++++
+
+Downloads are associated with a ``QWebEngineProfile``. Whenever a download is
+triggered on a web page the ``QWebEngineProfile.downloadRequested`` signal is
+emitted with a ``QWebEngineDownloadRequest``, which in this example is
+forwarded to ``DownloadManagerWidget.download_requested()``.
+
+This method prompts the user for a file name (with a pre-filled suggestion) and
+starts the download (unless the user cancels the ``Save As`` dialog).
+
+The ``QWebEngineDownloadRequest`` object will periodically emit the
+``QWebEngineDownloadRequest.receivedBytesChanged()`` signal to notify potential
+observers of the download progress and the
+``QWebEngineDownloadRequest.stateChanged()`` signal when the download is
+finished or when an error occurs.
+
+Files and Attributions
+++++++++++++++++++++++
+
+The example uses icons from the `Tango Icon Library`_.
+
+.. image:: simplebrowser.webp
+ :width: 800
:alt: Simple Browser Screenshot
+
+.. _`Tango Icon Library`: http://tango.freedesktop.org/Tango_Icon_Library
diff --git a/examples/webenginewidgets/simplebrowser/doc/simplebrowser.webp b/examples/webenginewidgets/simplebrowser/doc/simplebrowser.webp
new file mode 100644
index 000000000..0edc72c0b
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/doc/simplebrowser.webp
Binary files differ
diff --git a/examples/webenginewidgets/simplebrowser/downloadmanagerwidget.py b/examples/webenginewidgets/simplebrowser/downloadmanagerwidget.py
new file mode 100644
index 000000000..7096b8b57
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/downloadmanagerwidget.py
@@ -0,0 +1,51 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWebEngineCore import QWebEngineDownloadRequest
+from PySide6.QtWidgets import QWidget, QFileDialog
+from PySide6.QtCore import QDir, QFileInfo, Qt
+
+from downloadwidget import DownloadWidget
+from ui_downloadmanagerwidget import Ui_DownloadManagerWidget
+
+
+# Displays a list of downloads.
+class DownloadManagerWidget(QWidget):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._ui = Ui_DownloadManagerWidget()
+ self._num_downloads = 0
+ self._ui.setupUi(self)
+
+ def download_requested(self, download):
+ assert (download and download.state() == QWebEngineDownloadRequest.DownloadRequested)
+
+ proposal_dir = download.downloadDirectory()
+ proposal_name = download.downloadFileName()
+ proposal = QDir(proposal_dir).filePath(proposal_name)
+ path, _ = QFileDialog.getSaveFileName(self, "Save as", proposal)
+ if not path:
+ return
+
+ fi = QFileInfo(path)
+ download.setDownloadDirectory(fi.path())
+ download.setDownloadFileName(fi.fileName())
+ download.accept()
+ self.add(DownloadWidget(download))
+
+ self.show()
+
+ def add(self, downloadWidget):
+ downloadWidget.remove_clicked.connect(self.remove)
+ self._ui.m_itemsLayout.insertWidget(0, downloadWidget, 0, Qt.AlignTop)
+ if self._num_downloads == 0:
+ self._ui.m_zeroItemsLabel.hide()
+ self._num_downloads += 1
+
+ def remove(self, downloadWidget):
+ self._ui.m_itemsLayout.removeWidget(downloadWidget)
+ downloadWidget.deleteLater()
+ self._num_downloads -= 1
+ if self._num_downloads == 0:
+ self._ui.m_zeroItemsLabel.show()
diff --git a/examples/webenginewidgets/simplebrowser/downloadmanagerwidget.ui b/examples/webenginewidgets/simplebrowser/downloadmanagerwidget.ui
new file mode 100644
index 000000000..b7544ac16
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/downloadmanagerwidget.ui
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DownloadManagerWidget</class>
+ <widget class="QWidget" name="DownloadManagerWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>212</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Downloads</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">#DownloadManagerWidget {
+ background: palette(button)
+}</string>
+ </property>
+ <layout class="QVBoxLayout" name="m_topLevelLayout">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetNoConstraint</enum>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QScrollArea" name="m_scrollArea">
+ <property name="styleSheet">
+ <string notr="true">#m_scrollArea {
+ margin: 2px;
+ border: none;
+}</string>
+ </property>
+ <property name="verticalScrollBarPolicy">
+ <enum>Qt::ScrollBarAlwaysOn</enum>
+ </property>
+ <property name="horizontalScrollBarPolicy">
+ <enum>Qt::ScrollBarAlwaysOff</enum>
+ </property>
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ <widget class="QWidget" name="m_items">
+ <property name="styleSheet">
+ <string notr="true">#m_items {background: palette(mid)}</string>
+ </property>
+ <layout class="QVBoxLayout" name="m_itemsLayout">
+ <property name="spacing">
+ <number>2</number>
+ </property>
+ <property name="leftMargin">
+ <number>3</number>
+ </property>
+ <property name="topMargin">
+ <number>3</number>
+ </property>
+ <property name="rightMargin">
+ <number>3</number>
+ </property>
+ <property name="bottomMargin">
+ <number>3</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="m_zeroItemsLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">color: palette(shadow)</string>
+ </property>
+ <property name="text">
+ <string>No downloads</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/webenginewidgets/simplebrowser/downloadwidget.py b/examples/webenginewidgets/simplebrowser/downloadwidget.py
new file mode 100644
index 000000000..3b4973cb8
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/downloadwidget.py
@@ -0,0 +1,109 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from ui_downloadwidget import Ui_DownloadWidget
+
+from PySide6.QtWebEngineCore import QWebEngineDownloadRequest
+from PySide6.QtWidgets import QFrame, QWidget
+from PySide6.QtGui import QIcon
+from PySide6.QtCore import QElapsedTimer, Signal, Slot
+
+
+def with_unit(bytes):
+ if bytes < (1 << 10):
+ return f"{bytes} B"
+ if bytes < (1 << 20):
+ s = bytes / (1 << 10)
+ return f"{int(s)} KiB"
+ if bytes < (1 << 30):
+ s = bytes / (1 << 20)
+ return f"{int(s)} MiB"
+ s = bytes / (1 << 30)
+ return f"{int(s)} GiB"
+
+
+class DownloadWidget(QFrame):
+ """Displays one ongoing or finished download (QWebEngineDownloadRequest)."""
+
+ # This signal is emitted when the user indicates that they want to remove
+ # this download from the downloads list.
+ remove_clicked = Signal(QWidget)
+
+ def __init__(self, download, parent=None):
+ super().__init__(parent)
+ self._download = download
+ self._time_added = QElapsedTimer()
+ self._time_added.start()
+ self._cancel_icon = QIcon.fromTheme(QIcon.ThemeIcon.ProcessStop,
+ QIcon(":process-stop.png"))
+ self._remove_icon = QIcon.fromTheme(QIcon.ThemeIcon.EditClear,
+ QIcon(":edit-clear.png"))
+
+ self._ui = Ui_DownloadWidget()
+ self._ui.setupUi(self)
+ self._ui.m_dstName.setText(self._download.downloadFileName())
+ self._ui.m_srcUrl.setText(self._download.url().toDisplayString())
+
+ self._ui.m_cancelButton.clicked.connect(self._canceled)
+
+ self._download.totalBytesChanged.connect(self.update_widget)
+ self._download.receivedBytesChanged.connect(self.update_widget)
+
+ self._download.stateChanged.connect(self.update_widget)
+
+ self.update_widget()
+
+ @Slot()
+ def _canceled(self):
+ state = self._download.state()
+ if state == QWebEngineDownloadRequest.DownloadInProgress:
+ self._download.cancel()
+ else:
+ self.remove_clicked.emit(self)
+
+ def update_widget(self):
+ total_bytes_v = self._download.totalBytes()
+ total_bytes = with_unit(total_bytes_v)
+ received_bytes_v = self._download.receivedBytes()
+ received_bytes = with_unit(received_bytes_v)
+ elapsed = self._time_added.elapsed()
+ bytes_per_second_v = received_bytes_v / elapsed * 1000 if elapsed else 0
+ bytes_per_second = with_unit(bytes_per_second_v)
+
+ state = self._download.state()
+
+ progress_bar = self._ui.m_progressBar
+ if state == QWebEngineDownloadRequest.DownloadInProgress:
+ if total_bytes_v > 0:
+ progress = round(100 * received_bytes_v / total_bytes_v)
+ progress_bar.setValue(progress)
+ progress_bar.setDisabled(False)
+ fmt = f"%p% - {received_bytes} of {total_bytes} downloaded - {bytes_per_second}/s"
+ progress_bar.setFormat(fmt)
+ else:
+ progress_bar.setValue(0)
+ progress_bar.setDisabled(False)
+ fmt = f"unknown size - {received_bytes} downloaded - {bytes_per_second}/s"
+ progress_bar.setFormat(fmt)
+ elif state == QWebEngineDownloadRequest.DownloadCompleted:
+ progress_bar.setValue(100)
+ progress_bar.setDisabled(True)
+ fmt = f"completed - {received_bytes} downloaded - {bytes_per_second}/s"
+ progress_bar.setFormat(fmt)
+ elif state == QWebEngineDownloadRequest.DownloadCancelled:
+ progress_bar.setValue(0)
+ progress_bar.setDisabled(True)
+ fmt = f"cancelled - {received_bytes} downloaded - {bytes_per_second}/s"
+ progress_bar.setFormat(fmt)
+ elif state == QWebEngineDownloadRequest.DownloadInterrupted:
+ progress_bar.setValue(0)
+ progress_bar.setDisabled(True)
+ fmt = "interrupted: " + self._download.interruptReasonString()
+ progress_bar.setFormat(fmt)
+
+ if state == QWebEngineDownloadRequest.DownloadInProgress:
+ self._ui.m_cancelButton.setIcon(self._cancel_icon)
+ self._ui.m_cancelButton.setToolTip("Stop downloading")
+ else:
+ self._ui.m_cancelButton.setIcon(self._remove_icon)
+ self._ui.m_cancelButton.setToolTip("Remove from list")
diff --git a/examples/webenginewidgets/simplebrowser/downloadwidget.ui b/examples/webenginewidgets/simplebrowser/downloadwidget.ui
new file mode 100644
index 000000000..47f621486
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/downloadwidget.ui
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DownloadWidget</class>
+ <widget class="QFrame" name="DownloadWidget">
+ <property name="styleSheet">
+ <string notr="true">#DownloadWidget {
+ background: palette(button);
+ border: 1px solid palette(dark);
+ margin: 0px;
+}</string>
+ </property>
+ <layout class="QGridLayout" name="m_topLevelLayout">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetMinAndMaxSize</enum>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="m_dstName">
+ <property name="styleSheet">
+ <string notr="true">font-weight: bold
+</string>
+ </property>
+ <property name="text">
+ <string>TextLabel</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QPushButton" name="m_cancelButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed"/>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">QPushButton {
+ margin: 1px;
+ border: none;
+}
+QPushButton:pressed {
+ margin: none;
+ border: 1px solid palette(shadow);
+ background: palette(midlight);
+}</string>
+ </property>
+ <property name="flat">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QLabel" name="m_srcUrl">
+ <property name="maximumSize">
+ <size>
+ <width>350</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true"/>
+ </property>
+ <property name="text">
+ <string>TextLabel</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QProgressBar" name="m_progressBar">
+ <property name="styleSheet">
+ <string notr="true">font-size: 12px</string>
+ </property>
+ <property name="value">
+ <number>24</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/webenginewidgets/simplebrowser/main.py b/examples/webenginewidgets/simplebrowser/main.py
new file mode 100644
index 000000000..781ec29eb
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/main.py
@@ -0,0 +1,45 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Qt WebEngineWidgets Simple Browser example from Qt v6.x"""
+
+import sys
+from argparse import ArgumentParser, RawTextHelpFormatter
+
+from PySide6.QtWebEngineCore import QWebEngineProfile, QWebEngineSettings
+from PySide6.QtWidgets import QApplication
+from PySide6.QtGui import QIcon
+from PySide6.QtCore import QCoreApplication, QLoggingCategory, QUrl
+
+from browser import Browser
+
+import data.rc_simplebrowser # noqa: F401
+
+if __name__ == "__main__":
+ parser = ArgumentParser(description="Qt Widgets Web Browser",
+ formatter_class=RawTextHelpFormatter)
+ parser.add_argument("--single-process", "-s", action="store_true",
+ help="Run in single process mode (trouble shooting)")
+ parser.add_argument("url", type=str, nargs="?", help="URL")
+ args = parser.parse_args()
+
+ QCoreApplication.setOrganizationName("QtExamples")
+
+ app_args = sys.argv
+ if args.single_process:
+ app_args.extend(["--webEngineArgs", "--single-process"])
+ app = QApplication(app_args)
+ app.setWindowIcon(QIcon(":AppLogoColor.png"))
+ QLoggingCategory.setFilterRules("qt.webenginecontext.debug=true")
+
+ s = QWebEngineProfile.defaultProfile().settings()
+ s.setAttribute(QWebEngineSettings.PluginsEnabled, True)
+ s.setAttribute(QWebEngineSettings.DnsPrefetchEnabled, True)
+
+ browser = Browser()
+ window = browser.create_hidden_window()
+
+ url = QUrl.fromUserInput(args.url) if args.url else QUrl("https://www.qt.io")
+ window.tab_widget().set_url(url)
+ window.show()
+ sys.exit(app.exec())
diff --git a/examples/webenginewidgets/simplebrowser/passworddialog.ui b/examples/webenginewidgets/simplebrowser/passworddialog.ui
new file mode 100644
index 000000000..bbf5004f5
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/passworddialog.ui
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PasswordDialog</class>
+ <widget class="QDialog" name="PasswordDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>399</width>
+ <height>148</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Authentication Required</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout" columnstretch="0,0" columnminimumwidth="0,0">
+ <item row="0" column="0">
+ <widget class="QLabel" name="m_iconLabel">
+ <property name="text">
+ <string>Icon</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="m_infoLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Info</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="userLabel">
+ <property name="text">
+ <string>Username:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="m_userNameLineEdit"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="passwordLabel">
+ <property name="text">
+ <string>Password:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="m_passwordLineEdit">
+ <property name="echoMode">
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ <zorder>userLabel</zorder>
+ <zorder>m_userNameLineEdit</zorder>
+ <zorder>passwordLabel</zorder>
+ <zorder>m_passwordLineEdit</zorder>
+ <zorder>buttonBox</zorder>
+ <zorder>m_iconLabel</zorder>
+ <zorder>m_infoLabel</zorder>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>PasswordDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>PasswordDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/examples/webenginewidgets/simplebrowser/simplebrowser.py b/examples/webenginewidgets/simplebrowser/simplebrowser.py
deleted file mode 100644
index 6bf487ebd..000000000
--- a/examples/webenginewidgets/simplebrowser/simplebrowser.py
+++ /dev/null
@@ -1,103 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2017 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 WebEngineWidgets Example"""
-
-import sys
-from PySide6.QtCore import QUrl
-from PySide6.QtGui import QIcon
-from PySide6.QtWidgets import (QApplication, QLineEdit,
- QMainWindow, QPushButton, QToolBar)
-from PySide6.QtWebEngineWidgets import QWebEnginePage, QWebEngineView
-
-
-class MainWindow(QMainWindow):
-
- def __init__(self):
- super().__init__()
-
- self.setWindowTitle('PySide6 WebEngineWidgets Example')
-
- self.toolBar = QToolBar()
- self.addToolBar(self.toolBar)
- self.backButton = QPushButton()
- self.backButton.setIcon(QIcon(':/qt-project.org/styles/commonstyle/images/left-32.png'))
- self.backButton.clicked.connect(self.back)
- self.toolBar.addWidget(self.backButton)
- self.forwardButton = QPushButton()
- self.forwardButton.setIcon(QIcon(':/qt-project.org/styles/commonstyle/images/right-32.png'))
- self.forwardButton.clicked.connect(self.forward)
- self.toolBar.addWidget(self.forwardButton)
-
- self.addressLineEdit = QLineEdit()
- self.addressLineEdit.returnPressed.connect(self.load)
- self.toolBar.addWidget(self.addressLineEdit)
-
- self.webEngineView = QWebEngineView()
- self.setCentralWidget(self.webEngineView)
- initialUrl = 'http://qt.io'
- self.addressLineEdit.setText(initialUrl)
- self.webEngineView.load(QUrl(initialUrl))
- self.webEngineView.page().titleChanged.connect(self.setWindowTitle)
- self.webEngineView.page().urlChanged.connect(self.urlChanged)
-
- def load(self):
- url = QUrl.fromUserInput(self.addressLineEdit.text())
- if url.isValid():
- self.webEngineView.load(url)
-
- def back(self):
- self.webEngineView.page().triggerAction(QWebEnginePage.Back)
-
- def forward(self):
- self.webEngineView.page().triggerAction(QWebEnginePage.Forward)
-
- def urlChanged(self, url):
- self.addressLineEdit.setText(url.toString())
-
-
-if __name__ == '__main__':
- app = QApplication(sys.argv)
- mainWin = MainWindow()
- availableGeometry = app.desktop().availableGeometry(mainWin)
- mainWin.resize(availableGeometry.width() * 2 / 3, availableGeometry.height() * 2 / 3)
- mainWin.show()
- sys.exit(app.exec())
diff --git a/examples/webenginewidgets/simplebrowser/simplebrowser.pyproject b/examples/webenginewidgets/simplebrowser/simplebrowser.pyproject
index 6bc12af6b..eceac291e 100644
--- a/examples/webenginewidgets/simplebrowser/simplebrowser.pyproject
+++ b/examples/webenginewidgets/simplebrowser/simplebrowser.pyproject
@@ -1,3 +1,7 @@
{
- "files": ["simplebrowser.py"]
+ "files": ["main.py", "browser.py", "browserwindow.py", "certificateerrordialog.ui",
+ "data/simplebrowser.qrc", "downloadmanagerwidget.py",
+ "downloadmanagerwidget.ui", "downloadwidget.py",
+ "downloadwidget.ui", "passworddialog.ui", "tabwidget.py",
+ "webpage.py", "webpopupwindow.py", "webview.py"]
}
diff --git a/examples/webenginewidgets/simplebrowser/tabwidget.py b/examples/webenginewidgets/simplebrowser/tabwidget.py
new file mode 100644
index 000000000..bda321ac1
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/tabwidget.py
@@ -0,0 +1,241 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from functools import partial
+
+from PySide6.QtWebEngineCore import (QWebEngineFindTextResult, QWebEnginePage)
+from PySide6.QtWidgets import QLabel, QMenu, QTabBar, QTabWidget
+from PySide6.QtGui import QCursor, QIcon, QKeySequence, QPixmap
+from PySide6.QtCore import QUrl, Qt, Signal, Slot
+
+from webpage import WebPage
+from webview import WebView
+
+
+class TabWidget(QTabWidget):
+ link_hovered = Signal(str)
+ load_progress = Signal(int)
+ title_changed = Signal(str)
+ url_changed = Signal(QUrl)
+ fav_icon_changed = Signal(QIcon)
+ web_action_enabled_changed = Signal(QWebEnginePage.WebAction, bool)
+ dev_tools_requested = Signal(QWebEnginePage)
+ find_text_finished = Signal(QWebEngineFindTextResult)
+
+ def __init__(self, profile, parent):
+ super().__init__(parent)
+ self._profile = profile
+ tab_bar = self.tabBar()
+ tab_bar.setTabsClosable(True)
+ tab_bar.setSelectionBehaviorOnRemove(QTabBar.SelectPreviousTab)
+ tab_bar.setMovable(True)
+ tab_bar.setContextMenuPolicy(Qt.CustomContextMenu)
+ tab_bar.customContextMenuRequested.connect(self.handle_context_menu_requested)
+ tab_bar.tabCloseRequested.connect(self.close_tab)
+ tab_bar.tabBarDoubleClicked.connect(self._tabbar_double_clicked)
+ self.setDocumentMode(True)
+ self.setElideMode(Qt.ElideRight)
+
+ self.currentChanged.connect(self.handle_current_changed)
+
+ if profile.isOffTheRecord():
+ icon = QLabel(self)
+ pixmap = QPixmap(":ninja.png")
+ icon.setPixmap(pixmap.scaledToHeight(tab_bar.height()))
+ w = icon.pixmap().width()
+ self.setStyleSheet(f"QTabWidget.tab-bar {{ left: {w}px; }}")
+
+ @Slot(int)
+ def _tabbar_double_clicked(self, index):
+ if index == -1:
+ self.create_tab()
+
+ def handle_current_changed(self, index):
+ if index != -1:
+ view = self.web_view(index)
+ if view.url():
+ view.setFocus()
+ self.title_changed.emit(view.title())
+ self.load_progress.emit(view.load_progress())
+ self.url_changed.emit(view.url())
+ self.fav_icon_changed.emit(view.fav_icon())
+ e = view.is_web_action_enabled(QWebEnginePage.Back)
+ self.web_action_enabled_changed.emit(QWebEnginePage.Back, e)
+ e = view.is_web_action_enabled(QWebEnginePage.Forward)
+ self.web_action_enabled_changed.emit(QWebEnginePage.Forward, e)
+ e = view.is_web_action_enabled(QWebEnginePage.Stop)
+ self.web_action_enabled_changed.emit(QWebEnginePage.Stop, e)
+ e = view.is_web_action_enabled(QWebEnginePage.Reload)
+ self.web_action_enabled_changed.emit(QWebEnginePage.Reload, e)
+ else:
+ self.title_changed.emit("")
+ self.load_progress.emit(0)
+ self.url_changed.emit(QUrl())
+ self.fav_icon_changed.emit(QIcon())
+ self.web_action_enabled_changed.emit(QWebEnginePage.Back, False)
+ self.web_action_enabled_changed.emit(QWebEnginePage.Forward, False)
+ self.web_action_enabled_changed.emit(QWebEnginePage.Stop, False)
+ self.web_action_enabled_changed.emit(QWebEnginePage.Reload, True)
+
+ def handle_context_menu_requested(self, pos):
+ menu = QMenu()
+ menu.addAction("New &Tab", QKeySequence.AddTab, self.create_tab)
+ index = self.tabBar().tabAt(pos)
+ if index != -1:
+ action = menu.addAction("Clone Tab")
+ action.triggered.connect(partial(self.clone_tab, index))
+ menu.addSeparator()
+ action = menu.addAction("Close Tab")
+ action.setShortcut(QKeySequence.Close)
+ action.triggered.connect(partial(self.close_tab, index))
+ action = menu.addAction("Close Other Tabs")
+ action.triggered.connect(partial(self.close_other_tabs, index))
+ menu.addSeparator()
+ action = menu.addAction("Reload Tab")
+ action.setShortcut(QKeySequence.Refresh)
+ action.triggered.connect(partial(self.reload_tab, index))
+ else:
+ menu.addSeparator()
+
+ menu.addAction("Reload All Tabs", self.reload_all_tabs)
+ menu.exec(QCursor.pos())
+
+ def current_web_view(self):
+ return self.web_view(self.currentIndex())
+
+ def web_view(self, index):
+ return self.widget(index)
+
+ def _title_changed(self, web_view, title):
+ index = self.indexOf(web_view)
+ if index != -1:
+ self.setTabText(index, title)
+ self.setTabToolTip(index, title)
+
+ if self.currentIndex() == index:
+ self.title_changed.emit(title)
+
+ def _url_changed(self, web_view, url):
+ index = self.indexOf(web_view)
+ if index != -1:
+ self.tabBar().setTabData(index, url)
+ if self.currentIndex() == index:
+ self.url_changed.emit(url)
+
+ def _load_progress(self, web_view, progress):
+ if self.currentIndex() == self.indexOf(web_view):
+ self.load_progress.emit(progress)
+
+ def _fav_icon_changed(self, web_view, icon):
+ index = self.indexOf(web_view)
+ if index != -1:
+ self.setTabIcon(index, icon)
+ if self.currentIndex() == index:
+ self.fav_icon_changed.emit(icon)
+
+ def _link_hovered(self, web_view, url):
+ if self.currentIndex() == self.indexOf(web_view):
+ self.link_hovered.emit(url)
+
+ def _webaction_enabled_changed(self, webView, action, enabled):
+ if self.currentIndex() == self.indexOf(webView):
+ self.web_action_enabled_changed.emit(action, enabled)
+
+ def _window_close_requested(self, webView):
+ index = self.indexOf(webView)
+ if webView.page().inspectedPage():
+ self.window().close()
+ elif index >= 0:
+ self.close_tab(index)
+
+ def _find_text_finished(self, webView, result):
+ if self.currentIndex() == self.indexOf(webView):
+ self.find_text_finished.emit(result)
+
+ def setup_view(self, webView):
+ web_page = webView.page()
+ webView.titleChanged.connect(partial(self._title_changed, webView))
+ webView.urlChanged.connect(partial(self._url_changed, webView))
+ webView.loadProgress.connect(partial(self._load_progress, webView))
+ web_page.linkHovered.connect(partial(self._link_hovered, webView))
+ webView.fav_icon_changed.connect(partial(self._fav_icon_changed, webView))
+ webView.web_action_enabled_changed.connect(partial(self._webaction_enabled_changed,
+ webView))
+ web_page.windowCloseRequested.connect(partial(self._window_close_requested,
+ webView))
+ webView.dev_tools_requested.connect(self.dev_tools_requested)
+ web_page.findTextFinished.connect(partial(self._find_text_finished,
+ webView))
+
+ def create_tab(self):
+ web_view = self.create_background_tab()
+ self.setCurrentWidget(web_view)
+ return web_view
+
+ def create_background_tab(self):
+ web_view = WebView()
+ web_page = WebPage(self._profile, web_view)
+ web_view.set_page(web_page)
+ self.setup_view(web_view)
+ index = self.addTab(web_view, "(Untitled)")
+ self.setTabIcon(index, web_view.fav_icon())
+ # Workaround for QTBUG-61770
+ web_view.resize(self.currentWidget().size())
+ web_view.show()
+ return web_view
+
+ def reload_all_tabs(self):
+ for i in range(0, self.count()):
+ self.web_view(i).reload()
+
+ def close_other_tabs(self, index):
+ for i in range(index, self.count() - 1, -1):
+ self.close_tab(i)
+ for i in range(-1, index - 1, -1):
+ self.close_tab(i)
+
+ def close_tab(self, index):
+ view = self.web_view(index)
+ if view:
+ has_focus = view.hasFocus()
+ self.removeTab(index)
+ if has_focus and self.count() > 0:
+ self.current_web_view().setFocus()
+ if self.count() == 0:
+ self.create_tab()
+ view.deleteLater()
+
+ def clone_tab(self, index):
+ view = self.web_view(index)
+ if view:
+ tab = self.create_tab()
+ tab.setUrl(view.url())
+
+ def set_url(self, url):
+ view = self.current_web_view()
+ if view:
+ view.setUrl(url)
+ view.setFocus()
+
+ def trigger_web_page_action(self, action):
+ web_view = self.current_web_view()
+ if web_view:
+ web_view.triggerPageAction(action)
+ web_view.setFocus()
+
+ def next_tab(self):
+ next = self.currentIndex() + 1
+ if next == self.count():
+ next = 0
+ self.setCurrentIndex(next)
+
+ def previous_tab(self):
+ next = self.currentIndex() - 1
+ if next < 0:
+ next = self.count() - 1
+ self.setCurrentIndex(next)
+
+ def reload_tab(self, index):
+ view = self.web_view(index)
+ if view:
+ view.reload()
diff --git a/examples/webenginewidgets/simplebrowser/ui_certificateerrordialog.py b/examples/webenginewidgets/simplebrowser/ui_certificateerrordialog.py
new file mode 100644
index 000000000..a963f0ac0
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/ui_certificateerrordialog.py
@@ -0,0 +1,87 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'certificateerrordialog.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QAbstractButton, QApplication, QDialog, QDialogButtonBox,
+ QLabel, QSizePolicy, QSpacerItem, QVBoxLayout,
+ QWidget)
+
+class Ui_CertificateErrorDialog(object):
+ def setupUi(self, CertificateErrorDialog):
+ if not CertificateErrorDialog.objectName():
+ CertificateErrorDialog.setObjectName(u"CertificateErrorDialog")
+ CertificateErrorDialog.resize(370, 141)
+ self.verticalLayout = QVBoxLayout(CertificateErrorDialog)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.verticalLayout.setContentsMargins(20, -1, 20, -1)
+ self.m_iconLabel = QLabel(CertificateErrorDialog)
+ self.m_iconLabel.setObjectName(u"m_iconLabel")
+ self.m_iconLabel.setAlignment(Qt.AlignCenter)
+
+ self.verticalLayout.addWidget(self.m_iconLabel)
+
+ self.m_errorLabel = QLabel(CertificateErrorDialog)
+ self.m_errorLabel.setObjectName(u"m_errorLabel")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.m_errorLabel.sizePolicy().hasHeightForWidth())
+ self.m_errorLabel.setSizePolicy(sizePolicy)
+ self.m_errorLabel.setAlignment(Qt.AlignCenter)
+ self.m_errorLabel.setWordWrap(True)
+
+ self.verticalLayout.addWidget(self.m_errorLabel)
+
+ self.m_infoLabel = QLabel(CertificateErrorDialog)
+ self.m_infoLabel.setObjectName(u"m_infoLabel")
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.MinimumExpanding, QSizePolicy.Policy.MinimumExpanding)
+ sizePolicy1.setHorizontalStretch(0)
+ sizePolicy1.setVerticalStretch(0)
+ sizePolicy1.setHeightForWidth(self.m_infoLabel.sizePolicy().hasHeightForWidth())
+ self.m_infoLabel.setSizePolicy(sizePolicy1)
+ self.m_infoLabel.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter)
+ self.m_infoLabel.setWordWrap(True)
+
+ self.verticalLayout.addWidget(self.m_infoLabel)
+
+ self.verticalSpacer = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout.addItem(self.verticalSpacer)
+
+ self.buttonBox = QDialogButtonBox(CertificateErrorDialog)
+ self.buttonBox.setObjectName(u"buttonBox")
+ self.buttonBox.setOrientation(Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QDialogButtonBox.No|QDialogButtonBox.Yes)
+
+ self.verticalLayout.addWidget(self.buttonBox)
+
+
+ self.retranslateUi(CertificateErrorDialog)
+ self.buttonBox.accepted.connect(CertificateErrorDialog.accept)
+ self.buttonBox.rejected.connect(CertificateErrorDialog.reject)
+
+ QMetaObject.connectSlotsByName(CertificateErrorDialog)
+ # setupUi
+
+ def retranslateUi(self, CertificateErrorDialog):
+ CertificateErrorDialog.setWindowTitle(QCoreApplication.translate("CertificateErrorDialog", u"Dialog", None))
+ self.m_iconLabel.setText(QCoreApplication.translate("CertificateErrorDialog", u"Icon", None))
+ self.m_errorLabel.setText(QCoreApplication.translate("CertificateErrorDialog", u"Error", None))
+ self.m_infoLabel.setText(QCoreApplication.translate("CertificateErrorDialog", u"If you wish so, you may continue with an unverified certificate. Accepting an unverified certificate mean you may not be connected with the host you tried to connect to.\n"
+"\n"
+"Do you wish to override the security check and continue ? ", None))
+ # retranslateUi
+
diff --git a/examples/webenginewidgets/simplebrowser/ui_downloadmanagerwidget.py b/examples/webenginewidgets/simplebrowser/ui_downloadmanagerwidget.py
new file mode 100644
index 000000000..f0f61aa75
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/ui_downloadmanagerwidget.py
@@ -0,0 +1,76 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'downloadmanagerwidget.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QLabel, QLayout, QScrollArea,
+ QSizePolicy, QVBoxLayout, QWidget)
+
+class Ui_DownloadManagerWidget(object):
+ def setupUi(self, DownloadManagerWidget):
+ if not DownloadManagerWidget.objectName():
+ DownloadManagerWidget.setObjectName(u"DownloadManagerWidget")
+ DownloadManagerWidget.resize(400, 212)
+ DownloadManagerWidget.setStyleSheet(u"#DownloadManagerWidget {\n"
+" background: palette(button)\n"
+"}")
+ self.m_topLevelLayout = QVBoxLayout(DownloadManagerWidget)
+ self.m_topLevelLayout.setObjectName(u"m_topLevelLayout")
+ self.m_topLevelLayout.setSizeConstraint(QLayout.SetNoConstraint)
+ self.m_topLevelLayout.setContentsMargins(0, 0, 0, 0)
+ self.m_scrollArea = QScrollArea(DownloadManagerWidget)
+ self.m_scrollArea.setObjectName(u"m_scrollArea")
+ self.m_scrollArea.setStyleSheet(u"#m_scrollArea {\n"
+" margin: 2px;\n"
+" border: none;\n"
+"}")
+ self.m_scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
+ self.m_scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
+ self.m_scrollArea.setWidgetResizable(True)
+ self.m_scrollArea.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignTop)
+ self.m_items = QWidget()
+ self.m_items.setObjectName(u"m_items")
+ self.m_items.setStyleSheet(u"#m_items {background: palette(mid)}")
+ self.m_itemsLayout = QVBoxLayout(self.m_items)
+ self.m_itemsLayout.setSpacing(2)
+ self.m_itemsLayout.setObjectName(u"m_itemsLayout")
+ self.m_itemsLayout.setContentsMargins(3, 3, 3, 3)
+ self.m_zeroItemsLabel = QLabel(self.m_items)
+ self.m_zeroItemsLabel.setObjectName(u"m_zeroItemsLabel")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.m_zeroItemsLabel.sizePolicy().hasHeightForWidth())
+ self.m_zeroItemsLabel.setSizePolicy(sizePolicy)
+ self.m_zeroItemsLabel.setStyleSheet(u"color: palette(shadow)")
+ self.m_zeroItemsLabel.setAlignment(Qt.AlignCenter)
+
+ self.m_itemsLayout.addWidget(self.m_zeroItemsLabel)
+
+ self.m_scrollArea.setWidget(self.m_items)
+
+ self.m_topLevelLayout.addWidget(self.m_scrollArea)
+
+
+ self.retranslateUi(DownloadManagerWidget)
+
+ QMetaObject.connectSlotsByName(DownloadManagerWidget)
+ # setupUi
+
+ def retranslateUi(self, DownloadManagerWidget):
+ DownloadManagerWidget.setWindowTitle(QCoreApplication.translate("DownloadManagerWidget", u"Downloads", None))
+ self.m_zeroItemsLabel.setText(QCoreApplication.translate("DownloadManagerWidget", u"No downloads", None))
+ # retranslateUi
+
diff --git a/examples/webenginewidgets/simplebrowser/ui_downloadwidget.py b/examples/webenginewidgets/simplebrowser/ui_downloadwidget.py
new file mode 100644
index 000000000..58c32fdf8
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/ui_downloadwidget.py
@@ -0,0 +1,86 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'downloadwidget.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QFrame, QGridLayout, QLabel,
+ QLayout, QProgressBar, QPushButton, QSizePolicy,
+ QWidget)
+
+class Ui_DownloadWidget(object):
+ def setupUi(self, DownloadWidget):
+ if not DownloadWidget.objectName():
+ DownloadWidget.setObjectName(u"DownloadWidget")
+ DownloadWidget.setStyleSheet(u"#DownloadWidget {\n"
+" background: palette(button);\n"
+" border: 1px solid palette(dark);\n"
+" margin: 0px;\n"
+"}")
+ self.m_topLevelLayout = QGridLayout(DownloadWidget)
+ self.m_topLevelLayout.setObjectName(u"m_topLevelLayout")
+ self.m_topLevelLayout.setSizeConstraint(QLayout.SetMinAndMaxSize)
+ self.m_dstName = QLabel(DownloadWidget)
+ self.m_dstName.setObjectName(u"m_dstName")
+ self.m_dstName.setStyleSheet(u"font-weight: bold\n"
+"")
+
+ self.m_topLevelLayout.addWidget(self.m_dstName, 0, 0, 1, 1)
+
+ self.m_cancelButton = QPushButton(DownloadWidget)
+ self.m_cancelButton.setObjectName(u"m_cancelButton")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.m_cancelButton.sizePolicy().hasHeightForWidth())
+ self.m_cancelButton.setSizePolicy(sizePolicy)
+ self.m_cancelButton.setStyleSheet(u"QPushButton {\n"
+" margin: 1px;\n"
+" border: none;\n"
+"}\n"
+"QPushButton:pressed {\n"
+" margin: none;\n"
+" border: 1px solid palette(shadow);\n"
+" background: palette(midlight);\n"
+"}")
+ self.m_cancelButton.setFlat(False)
+
+ self.m_topLevelLayout.addWidget(self.m_cancelButton, 0, 1, 1, 1)
+
+ self.m_srcUrl = QLabel(DownloadWidget)
+ self.m_srcUrl.setObjectName(u"m_srcUrl")
+ self.m_srcUrl.setMaximumSize(QSize(350, 16777215))
+ self.m_srcUrl.setStyleSheet(u"")
+
+ self.m_topLevelLayout.addWidget(self.m_srcUrl, 1, 0, 1, 2)
+
+ self.m_progressBar = QProgressBar(DownloadWidget)
+ self.m_progressBar.setObjectName(u"m_progressBar")
+ self.m_progressBar.setStyleSheet(u"font-size: 12px")
+ self.m_progressBar.setValue(24)
+
+ self.m_topLevelLayout.addWidget(self.m_progressBar, 2, 0, 1, 2)
+
+
+ self.retranslateUi(DownloadWidget)
+
+ QMetaObject.connectSlotsByName(DownloadWidget)
+ # setupUi
+
+ def retranslateUi(self, DownloadWidget):
+ self.m_dstName.setText(QCoreApplication.translate("DownloadWidget", u"TextLabel", None))
+ self.m_srcUrl.setText(QCoreApplication.translate("DownloadWidget", u"TextLabel", None))
+ pass
+ # retranslateUi
+
diff --git a/examples/webenginewidgets/simplebrowser/ui_passworddialog.py b/examples/webenginewidgets/simplebrowser/ui_passworddialog.py
new file mode 100644
index 000000000..11e0c4a2e
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/ui_passworddialog.py
@@ -0,0 +1,96 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'passworddialog.ui'
+##
+## Created by: Qt User Interface Compiler version 6.7.0
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QAbstractButton, QApplication, QDialog, QDialogButtonBox,
+ QGridLayout, QLabel, QLineEdit, QSizePolicy,
+ QWidget)
+
+class Ui_PasswordDialog(object):
+ def setupUi(self, PasswordDialog):
+ if not PasswordDialog.objectName():
+ PasswordDialog.setObjectName(u"PasswordDialog")
+ PasswordDialog.resize(399, 148)
+ self.gridLayout = QGridLayout(PasswordDialog)
+ self.gridLayout.setObjectName(u"gridLayout")
+ self.m_iconLabel = QLabel(PasswordDialog)
+ self.m_iconLabel.setObjectName(u"m_iconLabel")
+ self.m_iconLabel.setAlignment(Qt.AlignCenter)
+
+ self.gridLayout.addWidget(self.m_iconLabel, 0, 0, 1, 1)
+
+ self.m_infoLabel = QLabel(PasswordDialog)
+ self.m_infoLabel.setObjectName(u"m_infoLabel")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.m_infoLabel.sizePolicy().hasHeightForWidth())
+ self.m_infoLabel.setSizePolicy(sizePolicy)
+ self.m_infoLabel.setWordWrap(True)
+
+ self.gridLayout.addWidget(self.m_infoLabel, 0, 1, 1, 1)
+
+ self.userLabel = QLabel(PasswordDialog)
+ self.userLabel.setObjectName(u"userLabel")
+
+ self.gridLayout.addWidget(self.userLabel, 1, 0, 1, 1)
+
+ self.m_userNameLineEdit = QLineEdit(PasswordDialog)
+ self.m_userNameLineEdit.setObjectName(u"m_userNameLineEdit")
+
+ self.gridLayout.addWidget(self.m_userNameLineEdit, 1, 1, 1, 1)
+
+ self.passwordLabel = QLabel(PasswordDialog)
+ self.passwordLabel.setObjectName(u"passwordLabel")
+
+ self.gridLayout.addWidget(self.passwordLabel, 2, 0, 1, 1)
+
+ self.m_passwordLineEdit = QLineEdit(PasswordDialog)
+ self.m_passwordLineEdit.setObjectName(u"m_passwordLineEdit")
+ self.m_passwordLineEdit.setEchoMode(QLineEdit.Password)
+
+ self.gridLayout.addWidget(self.m_passwordLineEdit, 2, 1, 1, 1)
+
+ self.buttonBox = QDialogButtonBox(PasswordDialog)
+ self.buttonBox.setObjectName(u"buttonBox")
+ self.buttonBox.setOrientation(Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
+
+ self.gridLayout.addWidget(self.buttonBox, 3, 0, 1, 2)
+
+ self.userLabel.raise_()
+ self.m_userNameLineEdit.raise_()
+ self.passwordLabel.raise_()
+ self.m_passwordLineEdit.raise_()
+ self.buttonBox.raise_()
+ self.m_iconLabel.raise_()
+ self.m_infoLabel.raise_()
+
+ self.retranslateUi(PasswordDialog)
+ self.buttonBox.accepted.connect(PasswordDialog.accept)
+ self.buttonBox.rejected.connect(PasswordDialog.reject)
+
+ QMetaObject.connectSlotsByName(PasswordDialog)
+ # setupUi
+
+ def retranslateUi(self, PasswordDialog):
+ PasswordDialog.setWindowTitle(QCoreApplication.translate("PasswordDialog", u"Authentication Required", None))
+ self.m_iconLabel.setText(QCoreApplication.translate("PasswordDialog", u"Icon", None))
+ self.m_infoLabel.setText(QCoreApplication.translate("PasswordDialog", u"Info", None))
+ self.userLabel.setText(QCoreApplication.translate("PasswordDialog", u"Username:", None))
+ self.passwordLabel.setText(QCoreApplication.translate("PasswordDialog", u"Password:", None))
+ # retranslateUi
+
diff --git a/examples/webenginewidgets/simplebrowser/webpage.py b/examples/webenginewidgets/simplebrowser/webpage.py
new file mode 100644
index 000000000..2f2800a17
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/webpage.py
@@ -0,0 +1,29 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from functools import partial
+
+from PySide6.QtWebEngineCore import QWebEnginePage, QWebEngineCertificateError
+from PySide6.QtCore import QTimer, Signal
+
+
+class WebPage(QWebEnginePage):
+
+ create_certificate_error_dialog = Signal(QWebEngineCertificateError)
+
+ def __init__(self, profile, parent):
+ super().__init__(profile, parent)
+
+ self.selectClientCertificate.connect(self.handle_select_client_certificate)
+ self.certificateError.connect(self.handle_certificate_error)
+
+ def _emit_create_certificate_error_dialog(self, error):
+ self.create_certificate_error_dialog.emit(error)
+
+ def handle_certificate_error(self, error):
+ error.defer()
+ QTimer.singleShot(0, partial(self._emit_create_certificate_error_dialog, error))
+
+ def handle_select_client_certificate(self, selection):
+ # Just select one.
+ selection.select(selection.certificates()[0])
diff --git a/examples/webenginewidgets/simplebrowser/webpopupwindow.py b/examples/webenginewidgets/simplebrowser/webpopupwindow.py
new file mode 100644
index 000000000..fac27a61a
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/webpopupwindow.py
@@ -0,0 +1,53 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWidgets import QLineEdit, QSizePolicy, QWidget, QVBoxLayout
+from PySide6.QtGui import QAction
+from PySide6.QtCore import QUrl, Qt, Slot
+
+from webpage import WebPage
+
+
+class WebPopupWindow(QWidget):
+
+ def __init__(self, view, profile, parent=None):
+ super().__init__(parent, Qt.Window)
+ self.m_urlLineEdit = QLineEdit(self)
+ self._url_line_edit = QLineEdit()
+ self._fav_action = QAction(self)
+ self._view = view
+
+ self.setAttribute(Qt.WA_DeleteOnClose)
+ self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
+
+ layout = QVBoxLayout(self)
+ layout.setContentsMargins(0, 0, 0, 0)
+ layout.addWidget(self._url_line_edit)
+ layout.addWidget(self._view)
+
+ self._view.setPage(WebPage(profile, self._view))
+ self._view.setFocus()
+
+ self._url_line_edit.setReadOnly(True)
+ self._url_line_edit.addAction(self._fav_action, QLineEdit.LeadingPosition)
+
+ self._view.titleChanged.connect(self.setWindowTitle)
+ self._view.urlChanged.connect(self._url_changed)
+ self._view.fav_icon_changed.connect(self._fav_action.setIcon)
+ p = self._view.page()
+ p.geometryChangeRequested.connect(self.handle_geometry_change_requested)
+ p.windowCloseRequested.connect(self.close)
+
+ @Slot(QUrl)
+ def _url_changed(self, url):
+ self._url_line_edit.setText(url.toDisplayString())
+
+ def view(self):
+ return self._view
+
+ def handle_geometry_change_requested(self, newGeometry):
+ window = self.windowHandle()
+ if window:
+ self.setGeometry(newGeometry.marginsRemoved(window.frameMargins()))
+ self.show()
+ self._view.setFocus()
diff --git a/examples/webenginewidgets/simplebrowser/webview.py b/examples/webenginewidgets/simplebrowser/webview.py
new file mode 100644
index 000000000..e1282c1dd
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/webview.py
@@ -0,0 +1,294 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from functools import partial
+
+from PySide6.QtWebEngineCore import (QWebEngineFileSystemAccessRequest,
+ QWebEnginePage)
+from PySide6.QtWebEngineWidgets import QWebEngineView
+
+from PySide6.QtWidgets import QDialog, QMessageBox, QStyle
+from PySide6.QtGui import QIcon
+from PySide6.QtNetwork import QAuthenticator
+from PySide6.QtCore import QTimer, Signal, Slot
+
+from webpage import WebPage
+from webpopupwindow import WebPopupWindow
+from ui_passworddialog import Ui_PasswordDialog
+from ui_certificateerrordialog import Ui_CertificateErrorDialog
+
+
+def question_for_feature(feature):
+ if feature == QWebEnginePage.Geolocation:
+ return "Allow %1 to access your location information?"
+ if feature == QWebEnginePage.MediaAudioCapture:
+ return "Allow %1 to access your microphone?"
+ if feature == QWebEnginePage.MediaVideoCapture:
+ return "Allow %1 to access your webcam?"
+ if feature == QWebEnginePage.MediaAudioVideoCapture:
+ return "Allow %1 to access your microphone and webcam?"
+ if feature == QWebEnginePage.MouseLock:
+ return "Allow %1 to lock your mouse cursor?"
+ if feature == QWebEnginePage.DesktopVideoCapture:
+ return "Allow %1 to capture video of your desktop?"
+ if feature == QWebEnginePage.DesktopAudioVideoCapture:
+ return "Allow %1 to capture audio and video of your desktop?"
+ if feature == QWebEnginePage.Notifications:
+ return "Allow %1 to show notification on your desktop?"
+ return ""
+
+
+class WebView(QWebEngineView):
+
+ web_action_enabled_changed = Signal(QWebEnginePage.WebAction, bool)
+ fav_icon_changed = Signal(QIcon)
+ dev_tools_requested = Signal(QWebEnginePage)
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self._load_progress = 100
+ self.loadStarted.connect(self._load_started)
+ self.loadProgress.connect(self._slot_load_progress)
+ self.loadFinished.connect(self._load_finished)
+ self.iconChanged.connect(self._emit_faviconchanged)
+ self.renderProcessTerminated.connect(self._render_process_terminated)
+
+ self._error_icon = QIcon(":dialog-error.png")
+ self._loading_icon = QIcon.fromTheme(QIcon.ThemeIcon.ViewRefresh,
+ QIcon(":view-refresh.png"))
+ self._default_icon = QIcon(":text-html.png")
+
+ @Slot()
+ def _load_started(self):
+ self._load_progress = 0
+ self.fav_icon_changed.emit(self.fav_icon())
+
+ @Slot(int)
+ def _slot_load_progress(self, progress):
+ self._load_progress = progress
+
+ @Slot()
+ def _emit_faviconchanged(self):
+ self.fav_icon_changed.emit(self.fav_icon())
+
+ @Slot(bool)
+ def _load_finished(self, success):
+ self._load_progress = 100 if success else -1
+ self._emit_faviconchanged()
+
+ @Slot(QWebEnginePage.RenderProcessTerminationStatus, int)
+ def _render_process_terminated(self, termStatus, statusCode):
+ status = ""
+ if termStatus == QWebEnginePage.NormalTerminationStatus:
+ status = "Render process normal exit"
+ elif termStatus == QWebEnginePage.AbnormalTerminationStatus:
+ status = "Render process abnormal exit"
+ elif termStatus == QWebEnginePage.CrashedTerminationStatus:
+ status = "Render process crashed"
+ elif termStatus == QWebEnginePage.KilledTerminationStatus:
+ status = "Render process killed"
+
+ m = f"Render process exited with code: {statusCode:#x}\nDo you want to reload the page?"
+ btn = QMessageBox.question(self.window(), status, m)
+ if btn == QMessageBox.Yes:
+ QTimer.singleShot(0, self.reload)
+
+ def set_page(self, page):
+ old_page = self.page()
+ if old_page and isinstance(old_page, WebPage):
+ old_page.createCertificateErrorDialog.disconnect(self.handle_certificate_error)
+ old_page.authenticationRequired.disconnect(self.handle_authentication_required)
+ old_page.featurePermissionRequested.disconnect(self.handle_feature_permission_requested)
+ old_page.proxyAuthenticationRequired.disconnect(
+ self.handle_proxy_authentication_required)
+ old_page.registerProtocolHandlerRequested.disconnect(
+ self.handle_register_protocol_handler_requested)
+ old_page.fileSystemAccessRequested.disconnect(self.handle_file_system_access_requested)
+
+ self.create_web_action_trigger(page, QWebEnginePage.Forward)
+ self.create_web_action_trigger(page, QWebEnginePage.Back)
+ self.create_web_action_trigger(page, QWebEnginePage.Reload)
+ self.create_web_action_trigger(page, QWebEnginePage.Stop)
+ super().setPage(page)
+ page.create_certificate_error_dialog.connect(self.handle_certificate_error)
+ page.authenticationRequired.connect(self.handle_authentication_required)
+ page.featurePermissionRequested.connect(self.handle_feature_permission_requested)
+ page.proxyAuthenticationRequired.connect(self.handle_proxy_authentication_required)
+ page.registerProtocolHandlerRequested.connect(
+ self.handle_register_protocol_handler_requested)
+ page.fileSystemAccessRequested.connect(self.handle_file_system_access_requested)
+
+ def load_progress(self):
+ return self._load_progress
+
+ def _emit_webactionenabledchanged(self, action, webAction):
+ self.web_action_enabled_changed.emit(webAction, action.isEnabled())
+
+ def create_web_action_trigger(self, page, webAction):
+ action = page.action(webAction)
+ action.changed.connect(partial(self._emit_webactionenabledchanged, action, webAction))
+
+ def is_web_action_enabled(self, webAction):
+ return self.page().action(webAction).isEnabled()
+
+ def fav_icon(self):
+ fav_icon = self.icon()
+ if not fav_icon.isNull():
+ return fav_icon
+ if self._load_progress < 0:
+ return self._error_icon
+ if self._load_progress < 100:
+ return self._loading_icon
+ return self._default_icon
+
+ def createWindow(self, type):
+ main_window = self.window()
+ if not main_window:
+ return None
+
+ if type == QWebEnginePage.WebBrowserTab:
+ return main_window.tab_widget().create_tab()
+
+ if type == QWebEnginePage.WebBrowserBackgroundTab:
+ return main_window.tab_widget().create_background_tab()
+
+ if type == QWebEnginePage.WebBrowserWindow:
+ return main_window.browser().createWindow().current_tab()
+
+ if type == QWebEnginePage.WebDialog:
+ view = WebView()
+ WebPopupWindow(view, self.page().profile(), self.window())
+ view.dev_tools_requested.connect(self.dev_tools_requested)
+ return view
+
+ return None
+
+ @Slot()
+ def _emit_devtools_requested(self):
+ self.dev_tools_requested.emit(self.page())
+
+ def contextMenuEvent(self, event):
+ menu = self.createStandardContextMenu()
+ actions = menu.actions()
+ inspect_action = self.page().action(QWebEnginePage.InspectElement)
+ if inspect_action in actions:
+ inspect_action.setText("Inspect element")
+ else:
+ vs = self.page().action(QWebEnginePage.ViewSource)
+ if vs not in actions:
+ menu.addSeparator()
+
+ action = menu.addAction("Open inspector in new window")
+ action.triggered.connect(self._emit_devtools_requested)
+
+ menu.popup(event.globalPos())
+
+ def handle_certificate_error(self, error):
+ w = self.window()
+ dialog = QDialog(w)
+ dialog.setModal(True)
+
+ certificate_dialog = Ui_CertificateErrorDialog()
+ certificate_dialog.setupUi(dialog)
+ certificate_dialog.m_iconLabel.setText("")
+ icon = QIcon(w.style().standardIcon(QStyle.SP_MessageBoxWarning, 0, w))
+ certificate_dialog.m_iconLabel.setPixmap(icon.pixmap(32, 32))
+ certificate_dialog.m_errorLabel.setText(error.description())
+ dialog.setWindowTitle("Certificate Error")
+
+ if dialog.exec() == QDialog.Accepted:
+ error.acceptCertificate()
+ else:
+ error.rejectCertificate()
+
+ def handle_authentication_required(self, requestUrl, auth):
+ w = self.window()
+ dialog = QDialog(w)
+ dialog.setModal(True)
+
+ password_dialog = Ui_PasswordDialog()
+ password_dialog.setupUi(dialog)
+
+ password_dialog.m_iconLabel.setText("")
+ icon = QIcon(w.style().standardIcon(QStyle.SP_MessageBoxQuestion, 0, w))
+ password_dialog.m_iconLabel.setPixmap(icon.pixmap(32, 32))
+
+ url_str = requestUrl.toString().toHtmlEscaped()
+ realm = auth.realm()
+ m = f'Enter username and password for "{realm}" at {url_str}'
+ password_dialog.m_infoLabel.setText(m)
+ password_dialog.m_infoLabel.setWordWrap(True)
+
+ if dialog.exec() == QDialog.Accepted:
+ auth.setUser(password_dialog.m_userNameLineEdit.text())
+ auth.setPassword(password_dialog.m_passwordLineEdit.text())
+ else:
+ # Set authenticator null if dialog is cancelled
+ auth = QAuthenticator()
+
+ def handle_feature_permission_requested(self, securityOrigin, feature):
+ title = "Permission Request"
+ host = securityOrigin.host()
+ question = question_for_feature(feature).replace("%1", host)
+ w = self.window()
+ page = self.page()
+ if question and QMessageBox.question(w, title, question) == QMessageBox.Yes:
+ page.setFeaturePermission(securityOrigin, feature,
+ QWebEnginePage.PermissionGrantedByUser)
+ else:
+ page.setFeaturePermission(securityOrigin, feature,
+ QWebEnginePage.PermissionDeniedByUser)
+
+ def handle_proxy_authentication_required(self, url, auth, proxyHost):
+ w = self.window()
+ dialog = QDialog(w)
+ dialog.setModal(True)
+
+ password_dialog = Ui_PasswordDialog()
+ password_dialog.setupUi(dialog)
+
+ password_dialog.m_iconLabel.setText("")
+
+ icon = QIcon(w.style().standardIcon(QStyle.SP_MessageBoxQuestion, 0, w))
+ password_dialog.m_iconLabel.setPixmap(icon.pixmap(32, 32))
+
+ proxy = proxyHost.toHtmlEscaped()
+ password_dialog.m_infoLabel.setText(f'Connect to proxy "{proxy}" using:')
+ password_dialog.m_infoLabel.setWordWrap(True)
+
+ if dialog.exec() == QDialog.Accepted:
+ auth.setUser(password_dialog.m_userNameLineEdit.text())
+ auth.setPassword(password_dialog.m_passwordLineEdit.text())
+ else:
+ # Set authenticator null if dialog is cancelled
+ auth = QAuthenticator()
+
+ def handle_register_protocol_handler_requested(self, request):
+ host = request.origin().host()
+ m = f"Allow {host} to open all {request.scheme()} links?"
+ answer = QMessageBox.question(self.window(), "Permission Request", m)
+ if answer == QMessageBox.Yes:
+ request.accept()
+ else:
+ request.reject()
+
+ def handle_file_system_access_requested(self, request):
+ access_type = ""
+ type = request.accessFlags()
+ if type == QWebEngineFileSystemAccessRequest.Read:
+ access_type = "read"
+ elif type == QWebEngineFileSystemAccessRequest.Write:
+ access_type = "write"
+ elif type == (QWebEngineFileSystemAccessRequest.Read
+ | QWebEngineFileSystemAccessRequest.Write):
+ access_type = "read and write"
+ host = request.origin().host()
+ path = request.filePath().toString()
+ t = "File system access request"
+ m = f"Give {host} {access_type} access to {path}?"
+ answer = QMessageBox.question(self.window(), t, m)
+ if answer == QMessageBox.Yes:
+ request.accept()
+ else:
+ request.reject()
diff --git a/examples/webenginewidgets/tabbedbrowser/bookmarkwidget.py b/examples/webenginewidgets/tabbedbrowser/bookmarkwidget.py
deleted file mode 100644
index 7a76e8a7c..000000000
--- a/examples/webenginewidgets/tabbedbrowser/bookmarkwidget.py
+++ /dev/null
@@ -1,276 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import json
-import os
-import warnings
-
-from PySide6 import QtCore
-from PySide6.QtCore import QDir, QFileInfo, QStandardPaths, Qt, QUrl
-from PySide6.QtGui import QIcon, QStandardItem, QStandardItemModel
-from PySide6.QtWidgets import QMenu, QMessageBox, QTreeView
-
-_url_role = Qt.UserRole + 1
-
-# Default bookmarks as an array of arrays which is the form
-# used to read from/write to a .json bookmarks file
-_default_bookmarks = [
- ['Tool Bar'],
- ['http://qt.io', 'Qt', ':/qt-project.org/qmessagebox/images/qtlogo-64.png'],
- ['https://download.qt.io/snapshots/ci/pyside/', 'Downloads'],
- ['https://doc.qt.io/qtforpython/', 'Documentation'],
- ['https://bugreports.qt.io/projects/PYSIDE/', 'Bug Reports'],
- ['https://www.python.org/', 'Python', None],
- ['https://wiki.qt.io/PySide6', 'Qt for Python', None],
- ['Other Bookmarks']
-]
-
-
-def _config_dir():
- location = QStandardPaths.writableLocation(QStandardPaths.ConfigLocation)
- return f'{location}/QtForPythonBrowser'
-
-
-_bookmark_file = 'bookmarks.json'
-
-
-def _create_folder_item(title):
- result = QStandardItem(title)
- result.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
- return result
-
-
-def _create_item(url, title, icon):
- result = QStandardItem(title)
- result.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
- result.setData(url, _url_role)
- if icon is not None:
- result.setIcon(icon)
- return result
-
-
-# Create the model from an array of arrays
-def _create_model(parent, serialized_bookmarks):
- result = QStandardItemModel(0, 1, parent)
- last_folder_item = None
- for entry in serialized_bookmarks:
- if len(entry) == 1:
- last_folder_item = _create_folder_item(entry[0])
- result.appendRow(last_folder_item)
- else:
- url = QUrl.fromUserInput(entry[0])
- title = entry[1]
- icon = QIcon(entry[2]) if len(entry) > 2 and entry[2] else None
- last_folder_item.appendRow(_create_item(url, title, icon))
- return result
-
-
-# Serialize model into an array of arrays, writing out the icons
-# into .png files under directory in the process
-def _serialize_model(model, directory):
- result = []
- folder_count = model.rowCount()
- for f in range(0, folder_count):
- folder_item = model.item(f)
- result.append([folder_item.text()])
- item_count = folder_item.rowCount()
- for i in range(0, item_count):
- item = folder_item.child(i)
- entry = [item.data(_url_role).toString(), item.text()]
- icon = item.icon()
- if not icon.isNull():
- icon_sizes = icon.availableSizes()
- largest_size = icon_sizes[len(icon_sizes) - 1]
- w = largest_size.width()
- icon_file_name = f'{directory}/icon{f:02}_{i:02}_{w}.png'
- icon.pixmap(largest_size).save(icon_file_name, 'PNG')
- entry.append(icon_file_name)
- result.append(entry)
- return result
-
-
-# Bookmarks as a tree view to be used in a dock widget with
-# functionality to persist and populate tool bars and menus.
-class BookmarkWidget(QTreeView):
- """Provides a tree view to manage the bookmarks."""
-
- open_bookmark = QtCore.Signal(QUrl)
- open_bookmark_in_new_tab = QtCore.Signal(QUrl)
- changed = QtCore.Signal()
-
- def __init__(self):
- super().__init__()
- self.setRootIsDecorated(False)
- self.setUniformRowHeights(True)
- self.setHeaderHidden(True)
- self._model = _create_model(self, self._read_bookmarks())
- self.setModel(self._model)
- self.expandAll()
- self.activated.connect(self._activated)
- self._model.rowsInserted.connect(self._changed)
- self._model.rowsRemoved.connect(self._changed)
- self._model.dataChanged.connect(self._changed)
- self._modified = False
-
- def _changed(self):
- self._modified = True
- self.changed.emit()
-
- def _activated(self, index):
- item = self._model.itemFromIndex(index)
- self.open_bookmark.emit(item.data(_url_role))
-
- def _action_activated(self, index):
- action = self.sender()
- self.open_bookmark.emit(action.data())
-
- def _tool_bar_item(self):
- return self._model.item(0, 0)
-
- def _other_item(self):
- return self._model.item(1, 0)
-
- def add_bookmark(self, url, title, icon):
- self._other_item().appendRow(_create_item(url, title, icon))
-
- def add_tool_bar_bookmark(self, url, title, icon):
- self._tool_bar_item().appendRow(_create_item(url, title, icon))
-
- # Synchronize the bookmarks under parent_item to a target_object
- # like QMenu/QToolBar, which has a list of actions. Update
- # the existing actions, append new ones if needed or hide
- # superfluous ones
- def _populate_actions(self, parent_item, target_object, first_action):
- existing_actions = target_object.actions()
- existing_action_count = len(existing_actions)
- a = first_action
- row_count = parent_item.rowCount()
- for r in range(0, row_count):
- item = parent_item.child(r)
- title = item.text()
- icon = item.icon()
- url = item.data(_url_role)
- if a < existing_action_count:
- action = existing_actions[a]
- if (title != action.toolTip()):
- action.setText(BookmarkWidget.short_title(title))
- action.setIcon(icon)
- action.setToolTip(title)
- action.setData(url)
- action.setVisible(True)
- else:
- short_title = BookmarkWidget.short_title(title)
- action = target_object.addAction(icon, short_title)
- action.setToolTip(title)
- action.setData(url)
- action.triggered.connect(self._action_activated)
- a = a + 1
- while a < existing_action_count:
- existing_actions[a].setVisible(False)
- a = a + 1
-
- def populate_tool_bar(self, tool_bar):
- self._populate_actions(self._tool_bar_item(), tool_bar, 0)
-
- def populate_other(self, menu, first_action):
- self._populate_actions(self._other_item(), menu, first_action)
-
- def _current_item(self):
- index = self.currentIndex()
- if index.isValid():
- item = self._model.itemFromIndex(index)
- if item.parent(): # exclude top level items
- return item
- return None
-
- def context_menu_event(self, event):
- context_menu = QMenu()
- open_in_new_tab_action = context_menu.addAction("Open in New Tab")
- remove_action = context_menu.addAction("Remove...")
- current_item = self._current_item()
- open_in_new_tab_action.setEnabled(current_item is not None)
- remove_action.setEnabled(current_item is not None)
- chosen_action = context_menu.exec(event.globalPos())
- if chosen_action == open_in_new_tab_action:
- self.open_bookmarkInNewTab.emit(current_item.data(_url_role))
- elif chosen_action == remove_action:
- self._remove_item(current_item)
-
- def _remove_item(self, item):
- message = f"Would you like to remove \"{item.text()}\"?"
- button = QMessageBox.question(self, "Remove", message,
- QMessageBox.Yes | QMessageBox.No)
- if button == QMessageBox.Yes:
- item.parent().removeRow(item.row())
-
- def write_bookmarks(self):
- if not self._modified:
- return
- dir_path = _config_dir()
- native_dir_path = QDir.toNativeSeparators(dir_path)
- directory = QFileInfo(dir_path)
- if not directory.isDir():
- print(f'Creating {native_dir_path}...')
- if not QDir(directory.absolutePath()).mkpath(directory.fileName()):
- warnings.warn(f'Cannot create {native_dir_path}.',
- RuntimeWarning)
- return
- serialized_model = _serialize_model(self._model, dir_path)
- bookmark_file_name = os.path.join(native_dir_path, _bookmark_file)
- print(f'Writing {bookmark_file_name}...')
- with open(bookmark_file_name, 'w') as bookmark_file:
- json.dump(serialized_model, bookmark_file, indent=4)
-
- def _read_bookmarks(self):
- bookmark_file_name = os.path.join(QDir.toNativeSeparators(_config_dir()),
- _bookmark_file)
- if os.path.exists(bookmark_file_name):
- print(f'Reading {bookmark_file_name}...')
- return json.load(open(bookmark_file_name))
- return _default_bookmarks
-
- # Return a short title for a bookmark action,
- # "Qt | Cross Platform.." -> "Qt"
- @staticmethod
- def short_title(t):
- i = t.find(' | ')
- if i == -1:
- i = t.find(' - ')
- return t[0:i] if i != -1 else t
diff --git a/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py b/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py
deleted file mode 100644
index 397302ac1..000000000
--- a/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py
+++ /dev/null
@@ -1,244 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from functools import partial
-
-from bookmarkwidget import BookmarkWidget
-from webengineview import WebEngineView
-from historywindow import HistoryWindow
-from PySide6 import QtCore
-from PySide6.QtCore import Qt, QUrl
-from PySide6.QtWidgets import QMenu, QTabBar, QTabWidget
-from PySide6.QtWebEngineWidgets import QWebEngineDownloadItem, QWebEnginePage
-
-
-class BrowserTabWidget(QTabWidget):
- """Enables having several tabs with QWebEngineView."""
-
- url_changed = QtCore.Signal(QUrl)
- enabled_changed = QtCore.Signal(QWebEnginePage.WebAction, bool)
- download_requested = QtCore.Signal(QWebEngineDownloadItem)
-
- def __init__(self, window_factory_function):
- super().__init__()
- self.setTabsClosable(True)
- self._window_factory_function = window_factory_function
- self._webengineviews = []
- self._history_windows = {} # map WebengineView to HistoryWindow
- self.currentChanged.connect(self._current_changed)
- self.tabCloseRequested.connect(self.handle_tab_close_request)
- self._actions_enabled = {}
- for web_action in WebEngineView.web_actions():
- self._actions_enabled[web_action] = False
-
- tab_bar = self.tabBar()
- tab_bar.setSelectionBehaviorOnRemove(QTabBar.SelectPreviousTab)
- tab_bar.setContextMenuPolicy(Qt.CustomContextMenu)
- tab_bar.customContextMenuRequested.connect(self._handle_tab_context_menu)
-
- def add_browser_tab(self):
- factory_func = partial(BrowserTabWidget.add_browser_tab, self)
- web_engine_view = WebEngineView(factory_func,
- self._window_factory_function)
- index = self.count()
- self._webengineviews.append(web_engine_view)
- title = f'Tab {index + 1}'
- self.addTab(web_engine_view, title)
- page = web_engine_view.page()
- page.titleChanged.connect(self._title_changed)
- page.iconChanged.connect(self._icon_changed)
- page.profile().downloadRequested.connect(self._download_requested)
- web_engine_view.urlChanged.connect(self._url_changed)
- web_engine_view.enabled_changed.connect(self._enabled_changed)
- self.setCurrentIndex(index)
- return web_engine_view
-
- def load(self, url):
- index = self.currentIndex()
- if index >= 0 and url.isValid():
- self._webengineviews[index].setUrl(url)
-
- def find(self, needle, flags):
- index = self.currentIndex()
- if index >= 0:
- self._webengineviews[index].page().findText(needle, flags)
-
- def url(self):
- index = self.currentIndex()
- return self._webengineviews[index].url() if index >= 0 else QUrl()
-
- def _url_changed(self, url):
- index = self.currentIndex()
- if index >= 0 and self._webengineviews[index] == self.sender():
- self.url_changed.emit(url)
-
- def _title_changed(self, title):
- index = self._index_of_page(self.sender())
- if (index >= 0):
- self.setTabText(index, BookmarkWidget.short_title(title))
-
- def _icon_changed(self, icon):
- index = self._index_of_page(self.sender())
- if (index >= 0):
- self.setTabIcon(index, icon)
-
- def _enabled_changed(self, web_action, enabled):
- index = self.currentIndex()
- if index >= 0 and self._webengineviews[index] == self.sender():
- self._check_emit_enabled_changed(web_action, enabled)
-
- def _check_emit_enabled_changed(self, web_action, enabled):
- if enabled != self._actions_enabled[web_action]:
- self._actions_enabled[web_action] = enabled
- self.enabled_changed.emit(web_action, enabled)
-
- def _current_changed(self, index):
- self._update_actions(index)
- self.url_changed.emit(self.url())
-
- def _update_actions(self, index):
- if index >= 0 and index < len(self._webengineviews):
- view = self._webengineviews[index]
- for web_action in WebEngineView.web_actions():
- enabled = view.is_web_action_enabled(web_action)
- self._check_emit_enabled_changed(web_action, enabled)
-
- def back(self):
- self._trigger_action(QWebEnginePage.Back)
-
- def forward(self):
- self._trigger_action(QWebEnginePage.Forward)
-
- def reload(self):
- self._trigger_action(QWebEnginePage.Reload)
-
- def undo(self):
- self._trigger_action(QWebEnginePage.Undo)
-
- def redo(self):
- self._trigger_action(QWebEnginePage.Redo)
-
- def cut(self):
- self._trigger_action(QWebEnginePage.Cut)
-
- def copy(self):
- self._trigger_action(QWebEnginePage.Copy)
-
- def paste(self):
- self._trigger_action(QWebEnginePage.Paste)
-
- def select_all(self):
- self._trigger_action(QWebEnginePage.SelectAll)
-
- def show_history(self):
- index = self.currentIndex()
- if index >= 0:
- webengineview = self._webengineviews[index]
- history_window = self._history_windows.get(webengineview)
- if not history_window:
- history = webengineview.page().history()
- history_window = HistoryWindow(history, self)
- history_window.open_url.connect(self.load)
- history_window.setWindowFlags(history_window.windowFlags()
- | Qt.Window)
- history_window.setWindowTitle('History')
- self._history_windows[webengineview] = history_window
- else:
- history_window.refresh()
- history_window.show()
- history_window.raise_()
-
- def zoom_factor(self):
- return self._webengineviews[0].zoomFactor() if self._webengineviews else 1.0
-
- def set_zoom_factor(self, z):
- for w in self._webengineviews:
- w.setZoomFactor(z)
-
- def _handle_tab_context_menu(self, point):
- index = self.tabBar().tabAt(point)
- if index < 0:
- return
- tab_count = len(self._webengineviews)
- context_menu = QMenu()
- duplicate_tab_action = context_menu.addAction("Duplicate Tab")
- close_other_tabs_action = context_menu.addAction("Close Other Tabs")
- close_other_tabs_action.setEnabled(tab_count > 1)
- close_tabs_to_the_right_action = context_menu.addAction("Close Tabs to the Right")
- close_tabs_to_the_right_action.setEnabled(index < tab_count - 1)
- close_tab_action = context_menu.addAction("&Close Tab")
- chosen_action = context_menu.exec(self.tabBar().mapToGlobal(point))
- if chosen_action == duplicate_tab_action:
- current_url = self.url()
- self.add_browser_tab().load(current_url)
- elif chosen_action == close_other_tabs_action:
- for t in range(tab_count - 1, -1, -1):
- if t != index:
- self.handle_tab_close_request(t)
- elif chosen_action == close_tabs_to_the_right_action:
- for t in range(tab_count - 1, index, -1):
- self.handle_tab_close_request(t)
- elif chosen_action == close_tab_action:
- self.handle_tab_close_request(index)
-
- def handle_tab_close_request(self, index):
- if (index >= 0 and self.count() > 1):
- webengineview = self._webengineviews[index]
- if self._history_windows.get(webengineview):
- del self._history_windows[webengineview]
- self._webengineviews.remove(webengineview)
- self.removeTab(index)
-
- def close_current_tab(self):
- self.handle_tab_close_request(self.currentIndex())
-
- def _trigger_action(self, action):
- index = self.currentIndex()
- if index >= 0:
- self._webengineviews[index].page().triggerAction(action)
-
- def _index_of_page(self, web_page):
- for p in range(0, len(self._webengineviews)):
- if (self._webengineviews[p].page() == web_page):
- return p
- return -1
-
- def _download_requested(self, item):
- self.download_requested.emit(item)
diff --git a/examples/webenginewidgets/tabbedbrowser/doc/tabbedbrowser.png b/examples/webenginewidgets/tabbedbrowser/doc/tabbedbrowser.png
deleted file mode 100644
index 27c3daa09..000000000
--- a/examples/webenginewidgets/tabbedbrowser/doc/tabbedbrowser.png
+++ /dev/null
Binary files differ
diff --git a/examples/webenginewidgets/tabbedbrowser/doc/tabbedbrowser.rst b/examples/webenginewidgets/tabbedbrowser/doc/tabbedbrowser.rst
deleted file mode 100644
index d8f5deb8d..000000000
--- a/examples/webenginewidgets/tabbedbrowser/doc/tabbedbrowser.rst
+++ /dev/null
@@ -1,58 +0,0 @@
-**********************
-Web Browser Example
-**********************
-
-The example demonstrates the power and simplicity offered by |project| to developers.
-It uses several |pymodname| submodules to offer a fluid and modern-looking UI that
-is apt for a web browser. The application offers the following features:
-
- * Tab-based browsing experience using QTabWidget.
- * Download manager using a QProgressBar and QWebEngineDownloadItem.
- * Bookmark manager using QTreeView.
-
-.. image:: tabbedbrowser.png
-
-The application's code is organized in several parts for ease of maintenance. For example,
-:code:`DownloadWidget` provides a widget to track progress of a download item. In the following
-sections, these different parts are discussed briefly to help you understand the Python code behind
-them a little better.
-
-BookmarkWidget or :code:`bookmarkwidget.py`
-===========================================
-
-This widget docks to the left of the main window by default. It inherits QTreeView and
-loads a default set of bookmarks using a QStandardItemModel. The model is populated at startup
-from a JSON file, which is updated when you add or remove bookmarks from the tree view.
-
-.. automodule:: bookmarkwidget
- :members:
-
-DownloadWidget or :code:`downloadwidget.py`
-=============================================
-
-The widget tracks progress of the download item. It inherits QProgressBar to display
-progress of the QWebEngineDownloadItem instance, and offers a context-menu with actions such as Launch,
-Show in folder, Cancel, and Remove.
-
-.. automodule:: downloadwidget
- :members:
-
-BrowserTabWidget or :code:`browsertabwidget.py`
-===============================================
-
-The widget includes a QWebEngineView to enable viewing web content. It docks to the right
-of BookmarkWidget in the main window.
-
-.. automodule:: browsertabwidget
- :members:
-
-MainWindow or :code:`main.py`
-=============================
-
-This is the parent window that collates all the other widgets together to offer the complete package.
-
-.. automodule:: main
- :members:
-
-
-Try running the example to explore it further.
diff --git a/examples/webenginewidgets/tabbedbrowser/downloadwidget.py b/examples/webenginewidgets/tabbedbrowser/downloadwidget.py
deleted file mode 100644
index 17ebd583d..000000000
--- a/examples/webenginewidgets/tabbedbrowser/downloadwidget.py
+++ /dev/null
@@ -1,148 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import sys
-from PySide6 import QtCore
-from PySide6.QtCore import QDir, QFileInfo, QStandardPaths, Qt, QUrl
-from PySide6.QtGui import QDesktopServices
-from PySide6.QtWidgets import QMenu, QProgressBar, QStyleFactory
-from PySide6.QtWebEngineWidgets import QWebEngineDownloadItem
-
-
-# A QProgressBar with context menu for displaying downloads in a QStatusBar.
-class DownloadWidget(QProgressBar):
- """Lets you track progress of a QWebEngineDownloadItem."""
- finished = QtCore.Signal()
- remove_requested = QtCore.Signal()
-
- def __init__(self, download_item):
- super().__init__()
- self._download_item = download_item
- download_item.finished.connect(self._finished)
- download_item.downloadProgress.connect(self._download_progress)
- download_item.stateChanged.connect(self._update_tool_tip())
- path = download_item.path()
- self.setMaximumWidth(300)
- # Shorten 'PySide6-5.11.0a1-5.11.0-cp36-cp36m-linux_x86_64.whl'...
- description = QFileInfo(path).fileName()
- description_length = len(description)
- if description_length > 30:
- description_ini = description[0:10]
- description_end = description[description_length - 10:]
- description = f'{description_ini}...{description_end}'
- self.setFormat(f'{description} %p%')
- self.setOrientation(Qt.Horizontal)
- self.setMinimum(0)
- self.setValue(0)
- self.setMaximum(100)
- self._update_tool_tip()
- # Force progress bar text to be shown on macoS by using 'fusion' style
- if sys.platform == 'darwin':
- self.setStyle(QStyleFactory.create('fusion'))
-
- @staticmethod
- def open_file(file):
- QDesktopServices.openUrl(QUrl.fromLocalFile(file))
-
- @staticmethod
- def open_download_directory():
- path = QStandardPaths.writableLocation(QStandardPaths.DownloadLocation)
- DownloadWidget.open_file(path)
-
- def state(self):
- return self._download_item.state()
-
- def _update_tool_tip(self):
- path = self._download_item.path()
- url_str = self._download_item.url().toString()
- native_sep = QDir.toNativeSeparators(path)
- tool_tip = f"{url_str}\n{native_sep}"
- total_bytes = self._download_item.totalBytes()
- if total_bytes > 0:
- tool_tip += f"\n{total_bytes / 1024}K"
- state = self.state()
- if state == QWebEngineDownloadItem.DownloadRequested:
- tool_tip += "\n(requested)"
- elif state == QWebEngineDownloadItem.DownloadInProgress:
- tool_tip += "\n(downloading)"
- elif state == QWebEngineDownloadItem.DownloadCompleted:
- tool_tip += "\n(completed)"
- elif state == QWebEngineDownloadItem.DownloadCancelled:
- tool_tip += "\n(cancelled)"
- else:
- tool_tip += "\n(interrupted)"
- self.setToolTip(tool_tip)
-
- def _download_progress(self, bytes_received, bytes_total):
- self.setValue(int(100 * bytes_received / bytes_total))
-
- def _finished(self):
- self._update_tool_tip()
- self.finished.emit()
-
- def _launch(self):
- DownloadWidget.open_file(self._download_item.path())
-
- def mouseDoubleClickEvent(self, event):
- if self.state() == QWebEngineDownloadItem.DownloadCompleted:
- self._launch()
-
- def contextMenuEvent(self, event):
- state = self.state()
- context_menu = QMenu()
- launch_action = context_menu.addAction("Launch")
- launch_action.setEnabled(state == QWebEngineDownloadItem.DownloadCompleted)
- show_in_folder_action = context_menu.addAction("Show in Folder")
- show_in_folder_action.setEnabled(state == QWebEngineDownloadItem.DownloadCompleted)
- cancel_action = context_menu.addAction("Cancel")
- cancel_action.setEnabled(state == QWebEngineDownloadItem.DownloadInProgress)
- remove_action = context_menu.addAction("Remove")
- remove_action.setEnabled(state != QWebEngineDownloadItem.DownloadInProgress)
-
- chosen_action = context_menu.exec(event.globalPos())
- if chosen_action == launch_action:
- self._launch()
- elif chosen_action == show_in_folder_action:
- path = QFileInfo(self._download_item.path()).absolutePath()
- DownloadWidget.open_file(path)
- elif chosen_action == cancel_action:
- self._download_item.cancel()
- elif chosen_action == remove_action:
- self.remove_requested.emit()
diff --git a/examples/webenginewidgets/tabbedbrowser/findtoolbar.py b/examples/webenginewidgets/tabbedbrowser/findtoolbar.py
deleted file mode 100644
index c6668babc..000000000
--- a/examples/webenginewidgets/tabbedbrowser/findtoolbar.py
+++ /dev/null
@@ -1,99 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6 import QtCore
-from PySide6.QtCore import Qt
-from PySide6.QtGui import QIcon, QKeySequence
-from PySide6.QtWidgets import QCheckBox, QLineEdit, QToolBar, QToolButton
-from PySide6.QtWebEngineWidgets import QWebEnginePage
-
-
-# A Find tool bar (bottom area)
-class FindToolBar(QToolBar):
-
- find = QtCore.Signal(str, QWebEnginePage.FindFlags)
-
- def __init__(self):
- super().__init__()
- self._line_edit = QLineEdit()
- self._line_edit.setClearButtonEnabled(True)
- self._line_edit.setPlaceholderText("Find...")
- self._line_edit.setMaximumWidth(300)
- self._line_edit.returnPressed.connect(self._find_next)
- self.addWidget(self._line_edit)
-
- self._previous_button = QToolButton()
- style_icons = ':/qt-project.org/styles/commonstyle/images/'
- self._previous_button.setIcon(QIcon(style_icons + 'up-32.png'))
- self._previous_button.clicked.connect(self._find_previous)
- self.addWidget(self._previous_button)
-
- self._next_button = QToolButton()
- self._next_button.setIcon(QIcon(style_icons + 'down-32.png'))
- self._next_button.clicked.connect(self._find_next)
- self.addWidget(self._next_button)
-
- self._case_sensitive_checkbox = QCheckBox('Case Sensitive')
- self.addWidget(self._case_sensitive_checkbox)
-
- self._hideButton = QToolButton()
- self._hideButton.setShortcut(QKeySequence(Qt.Key_Escape))
- self._hideButton.setIcon(QIcon(style_icons + 'closedock-16.png'))
- self._hideButton.clicked.connect(self.hide)
- self.addWidget(self._hideButton)
-
- def focus_find(self):
- self._line_edit.setFocus()
-
- def _emit_find(self, backward):
- needle = self._line_edit.text().strip()
- if needle:
- flags = QWebEnginePage.FindFlags()
- if self._case_sensitive_checkbox.isChecked():
- flags |= QWebEnginePage.FindCaseSensitively
- if backward:
- flags |= QWebEnginePage.FindBackward
- self.find.emit(needle, flags)
-
- def _find_next(self):
- self._emit_find(False)
-
- def _find_previous(self):
- self._emit_find(True)
diff --git a/examples/webenginewidgets/tabbedbrowser/historywindow.py b/examples/webenginewidgets/tabbedbrowser/historywindow.py
deleted file mode 100644
index bc2640e69..000000000
--- a/examples/webenginewidgets/tabbedbrowser/historywindow.py
+++ /dev/null
@@ -1,103 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2019 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6.QtWidgets import QApplication, QTreeView
-
-from PySide6.QtCore import Signal, QAbstractTableModel, QModelIndex, Qt, QUrl
-
-
-class HistoryModel(QAbstractTableModel):
-
- def __init__(self, history, parent=None):
- super().__init__(parent)
- self._history = history
-
- def headerData(self, section, orientation, role=Qt.DisplayRole):
- if orientation == Qt.Horizontal and role == Qt.DisplayRole:
- return 'Title' if section == 0 else 'Url'
- return None
-
- def rowCount(self, index=QModelIndex()):
- return self._history.count()
-
- def columnCount(self, index=QModelIndex()):
- return 2
-
- def item_at(self, model_index):
- return self._history.itemAt(model_index.row())
-
- def data(self, index, role=Qt.DisplayRole):
- item = self.item_at(index)
- column = index.column()
- if role == Qt.DisplayRole:
- return item.title() if column == 0 else item.url().toString()
- return None
-
- def refresh(self):
- self.beginResetModel()
- self.endResetModel()
-
-
-class HistoryWindow(QTreeView):
-
- open_url = Signal(QUrl)
-
- def __init__(self, history, parent):
- super().__init__(parent)
-
- self._model = HistoryModel(history, self)
- self.setModel(self._model)
- self.activated.connect(self._activated)
-
- screen = QApplication.desktop().screenGeometry(parent)
- self.resize(screen.width() / 3, screen.height() / 3)
- self._adjustSize()
-
- def refresh(self):
- self._model.refresh()
- self._adjustSize()
-
- def _adjustSize(self):
- if (self._model.rowCount() > 0):
- self.resizeColumnToContents(0)
-
- def _activated(self, index):
- item = self._model.item_at(index)
- self.open_url.emit(item.url())
diff --git a/examples/webenginewidgets/tabbedbrowser/main.py b/examples/webenginewidgets/tabbedbrowser/main.py
deleted file mode 100644
index f2280c273..000000000
--- a/examples/webenginewidgets/tabbedbrowser/main.py
+++ /dev/null
@@ -1,395 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 WebEngineWidgets Example"""
-
-import sys
-from bookmarkwidget import BookmarkWidget
-from browsertabwidget import BrowserTabWidget
-from downloadwidget import DownloadWidget
-from findtoolbar import FindToolBar
-from webengineview import WebEngineView
-from PySide6 import QtCore
-from PySide6.QtCore import Qt, QUrl
-from PySide6.QtGui import QAction, QKeySequence, QIcon
-from PySide6.QtWidgets import (QApplication, QDockWidget, QLabel,
- QLineEdit, QMainWindow, QToolBar)
-from PySide6.QtWebEngineWidgets import QWebEngineDownloadItem, QWebEnginePage
-
-main_windows = []
-
-
-def create_main_window():
- """Creates a MainWindow using 75% of the available screen resolution."""
- main_win = MainWindow()
- main_windows.append(main_win)
- available_geometry = app.desktop().availableGeometry(main_win)
- main_win.resize(available_geometry.width() * 2 / 3,
- available_geometry.height() * 2 / 3)
- main_win.show()
- return main_win
-
-
-def create_main_window_with_browser():
- """Creates a MainWindow with a BrowserTabWidget."""
- main_win = create_main_window()
- return main_win.add_browser_tab()
-
-
-class MainWindow(QMainWindow):
- """Provides the parent window that includes the BookmarkWidget,
- BrowserTabWidget, and a DownloadWidget, to offer the complete
- web browsing experience."""
-
- def __init__(self):
- super().__init__()
-
- self.setWindowTitle('PySide6 tabbed browser Example')
-
- self._tab_widget = BrowserTabWidget(create_main_window_with_browser)
- self._tab_widget.enabled_changed.connect(self._enabled_changed)
- self._tab_widget.download_requested.connect(self._download_requested)
- self.setCentralWidget(self._tab_widget)
- self.connect(self._tab_widget, QtCore.SIGNAL("url_changed(QUrl)"),
- self.url_changed)
-
- self._bookmark_dock = QDockWidget()
- self._bookmark_dock.setWindowTitle('Bookmarks')
- self._bookmark_widget = BookmarkWidget()
- self._bookmark_widget.open_bookmark.connect(self.load_url)
- self._bookmark_widget.open_bookmark_in_new_tab.connect(self.load_url_in_new_tab)
- self._bookmark_dock.setWidget(self._bookmark_widget)
- self.addDockWidget(Qt.LeftDockWidgetArea, self._bookmark_dock)
-
- self._find_tool_bar = None
-
- self._actions = {}
- self._create_menu()
-
- self._tool_bar = QToolBar()
- self.addToolBar(self._tool_bar)
- for action in self._actions.values():
- if not action.icon().isNull():
- self._tool_bar.addAction(action)
-
- self._addres_line_edit = QLineEdit()
- self._addres_line_edit.setClearButtonEnabled(True)
- self._addres_line_edit.returnPressed.connect(self.load)
- self._tool_bar.addWidget(self._addres_line_edit)
- self._zoom_label = QLabel()
- self.statusBar().addPermanentWidget(self._zoom_label)
- self._update_zoom_label()
-
- self._bookmarksToolBar = QToolBar()
- self.addToolBar(Qt.TopToolBarArea, self._bookmarksToolBar)
- self.insertToolBarBreak(self._bookmarksToolBar)
- self._bookmark_widget.changed.connect(self._update_bookmarks)
- self._update_bookmarks()
-
- def _update_bookmarks(self):
- self._bookmark_widget.populate_tool_bar(self._bookmarksToolBar)
- self._bookmark_widget.populate_other(self._bookmark_menu, 3)
-
- def _create_menu(self):
- file_menu = self.menuBar().addMenu("&File")
- exit_action = QAction(QIcon.fromTheme("application-exit"), "E&xit",
- self, shortcut="Ctrl+Q", triggered=qApp.quit)
- file_menu.addAction(exit_action)
-
- navigation_menu = self.menuBar().addMenu("&Navigation")
-
- style_icons = ':/qt-project.org/styles/commonstyle/images/'
- back_action = QAction(QIcon.fromTheme("go-previous",
- QIcon(style_icons + 'left-32.png')),
- "Back", self,
- shortcut=QKeySequence(QKeySequence.Back),
- triggered=self._tab_widget.back)
- self._actions[QWebEnginePage.Back] = back_action
- back_action.setEnabled(False)
- navigation_menu.addAction(back_action)
- forward_action = QAction(QIcon.fromTheme("go-next",
- QIcon(style_icons + 'right-32.png')),
- "Forward", self,
- shortcut=QKeySequence(QKeySequence.Forward),
- triggered=self._tab_widget.forward)
- forward_action.setEnabled(False)
- self._actions[QWebEnginePage.Forward] = forward_action
-
- navigation_menu.addAction(forward_action)
- reload_action = QAction(QIcon(style_icons + 'refresh-32.png'),
- "Reload", self,
- shortcut=QKeySequence(QKeySequence.Refresh),
- triggered=self._tab_widget.reload)
- self._actions[QWebEnginePage.Reload] = reload_action
- reload_action.setEnabled(False)
- navigation_menu.addAction(reload_action)
-
- navigation_menu.addSeparator()
-
- new_tab_action = QAction("New Tab", self,
- shortcut='Ctrl+T',
- triggered=self.add_browser_tab)
- navigation_menu.addAction(new_tab_action)
-
- close_tab_action = QAction("Close Current Tab", self,
- shortcut="Ctrl+W",
- triggered=self._close_current_tab)
- navigation_menu.addAction(close_tab_action)
-
- navigation_menu.addSeparator()
-
- history_action = QAction("History...", self,
- triggered=self._tab_widget.show_history)
- navigation_menu.addAction(history_action)
-
- edit_menu = self.menuBar().addMenu("&Edit")
-
- find_action = QAction("Find", self,
- shortcut=QKeySequence(QKeySequence.Find),
- triggered=self._show_find)
- edit_menu.addAction(find_action)
-
- edit_menu.addSeparator()
- undo_action = QAction("Undo", self,
- shortcut=QKeySequence(QKeySequence.Undo),
- triggered=self._tab_widget.undo)
- self._actions[QWebEnginePage.Undo] = undo_action
- undo_action.setEnabled(False)
- edit_menu.addAction(undo_action)
-
- redo_action = QAction("Redo", self,
- shortcut=QKeySequence(QKeySequence.Redo),
- triggered=self._tab_widget.redo)
- self._actions[QWebEnginePage.Redo] = redo_action
- redo_action.setEnabled(False)
- edit_menu.addAction(redo_action)
-
- edit_menu.addSeparator()
-
- cut_action = QAction("Cut", self,
- shortcut=QKeySequence(QKeySequence.Cut),
- triggered=self._tab_widget.cut)
- self._actions[QWebEnginePage.Cut] = cut_action
- cut_action.setEnabled(False)
- edit_menu.addAction(cut_action)
-
- copy_action = QAction("Copy", self,
- shortcut=QKeySequence(QKeySequence.Copy),
- triggered=self._tab_widget.copy)
- self._actions[QWebEnginePage.Copy] = copy_action
- copy_action.setEnabled(False)
- edit_menu.addAction(copy_action)
-
- paste_action = QAction("Paste", self,
- shortcut=QKeySequence(QKeySequence.Paste),
- triggered=self._tab_widget.paste)
- self._actions[QWebEnginePage.Paste] = paste_action
- paste_action.setEnabled(False)
- edit_menu.addAction(paste_action)
-
- edit_menu.addSeparator()
-
- select_all_action = QAction("Select All", self,
- shortcut=QKeySequence(QKeySequence.SelectAll),
- triggered=self._tab_widget.select_all)
- self._actions[QWebEnginePage.SelectAll] = select_all_action
- select_all_action.setEnabled(False)
- edit_menu.addAction(select_all_action)
-
- self._bookmark_menu = self.menuBar().addMenu("&Bookmarks")
- add_bookmark_action = QAction("&Add Bookmark", self,
- triggered=self._add_bookmark)
- self._bookmark_menu.addAction(add_bookmark_action)
- add_tool_bar_bookmark_action = QAction("&Add Bookmark to Tool Bar", self,
- triggered=self._add_tool_bar_bookmark)
- self._bookmark_menu.addAction(add_tool_bar_bookmark_action)
- self._bookmark_menu.addSeparator()
-
- tools_menu = self.menuBar().addMenu("&Tools")
- download_action = QAction("Open Downloads", self,
- triggered=DownloadWidget.open_download_directory)
- tools_menu.addAction(download_action)
-
- window_menu = self.menuBar().addMenu("&Window")
-
- window_menu.addAction(self._bookmark_dock.toggleViewAction())
-
- window_menu.addSeparator()
-
- zoom_in_action = QAction(QIcon.fromTheme("zoom-in"),
- "Zoom In", self,
- shortcut=QKeySequence(QKeySequence.ZoomIn),
- triggered=self._zoom_in)
- window_menu.addAction(zoom_in_action)
- zoom_out_action = QAction(QIcon.fromTheme("zoom-out"),
- "Zoom Out", self,
- shortcut=QKeySequence(QKeySequence.ZoomOut),
- triggered=self._zoom_out)
- window_menu.addAction(zoom_out_action)
-
- reset_zoom_action = QAction(QIcon.fromTheme("zoom-original"),
- "Reset Zoom", self,
- shortcut="Ctrl+0",
- triggered=self._reset_zoom)
- window_menu.addAction(reset_zoom_action)
-
- about_menu = self.menuBar().addMenu("&About")
- about_action = QAction("About Qt", self,
- shortcut=QKeySequence(QKeySequence.HelpContents),
- triggered=qApp.aboutQt)
- about_menu.addAction(about_action)
-
- def add_browser_tab(self):
- return self._tab_widget.add_browser_tab()
-
- def _close_current_tab(self):
- if self._tab_widget.count() > 1:
- self._tab_widget.close_current_tab()
- else:
- self.close()
-
- def close_event(self, event):
- main_windows.remove(self)
- event.accept()
-
- def load(self):
- url_string = self._addres_line_edit.text().strip()
- if url_string:
- self.load_url_string(url_string)
-
- def load_url_string(self, url_s):
- url = QUrl.fromUserInput(url_s)
- if (url.isValid()):
- self.load_url(url)
-
- def load_url(self, url):
- self._tab_widget.load(url)
-
- def load_url_in_new_tab(self, url):
- self.add_browser_tab().load(url)
-
- def url_changed(self, url):
- self._addres_line_edit.setText(url.toString())
-
- def _enabled_changed(self, web_action, enabled):
- action = self._actions[web_action]
- if action:
- action.setEnabled(enabled)
-
- def _add_bookmark(self):
- index = self._tab_widget.currentIndex()
- if index >= 0:
- url = self._tab_widget.url()
- title = self._tab_widget.tabText(index)
- icon = self._tab_widget.tabIcon(index)
- self._bookmark_widget.add_bookmark(url, title, icon)
-
- def _add_tool_bar_bookmark(self):
- index = self._tab_widget.currentIndex()
- if index >= 0:
- url = self._tab_widget.url()
- title = self._tab_widget.tabText(index)
- icon = self._tab_widget.tabIcon(index)
- self._bookmark_widget.add_tool_bar_bookmark(url, title, icon)
-
- def _zoom_in(self):
- new_zoom = self._tab_widget.zoom_factor() * 1.5
- if (new_zoom <= WebEngineView.maximum_zoom_factor()):
- self._tab_widget.set_zoom_factor(new_zoom)
- self._update_zoom_label()
-
- def _zoom_out(self):
- new_zoom = self._tab_widget.zoom_factor() / 1.5
- if (new_zoom >= WebEngineView.minimum_zoom_factor()):
- self._tab_widget.set_zoom_factor(new_zoom)
- self._update_zoom_label()
-
- def _reset_zoom(self):
- self._tab_widget.set_zoom_factor(1)
- self._update_zoom_label()
-
- def _update_zoom_label(self):
- percent = int(self._tab_widget.zoom_factor() * 100)
- self._zoom_label.setText(f"{percent}%")
-
- def _download_requested(self, item):
- # Remove old downloads before opening a new one
- for old_download in self.statusBar().children():
- if (type(old_download).__name__ == 'DownloadWidget' and
- old_download.state() != QWebEngineDownloadItem.DownloadInProgress):
- self.statusBar().removeWidget(old_download)
- del old_download
-
- item.accept()
- download_widget = DownloadWidget(item)
- download_widget.remove_requested.connect(self._remove_download_requested,
- Qt.QueuedConnection)
- self.statusBar().addWidget(download_widget)
-
- def _remove_download_requested(self):
- download_widget = self.sender()
- self.statusBar().removeWidget(download_widget)
- del download_widget
-
- def _show_find(self):
- if self._find_tool_bar is None:
- self._find_tool_bar = FindToolBar()
- self._find_tool_bar.find.connect(self._tab_widget.find)
- self.addToolBar(Qt.BottomToolBarArea, self._find_tool_bar)
- else:
- self._find_tool_bar.show()
- self._find_tool_bar.focus_find()
-
- def write_bookmarks(self):
- self._bookmark_widget.write_bookmarks()
-
-
-if __name__ == '__main__':
- app = QApplication(sys.argv)
- main_win = create_main_window()
- initial_urls = sys.argv[1:]
- if not initial_urls:
- initial_urls.append('http://qt.io')
- for url in initial_urls:
- main_win.load_url_in_new_tab(QUrl.fromUserInput(url))
- exit_code = app.exec()
- main_win.write_bookmarks()
- sys.exit(exit_code)
diff --git a/examples/webenginewidgets/tabbedbrowser/tabbedbrowser.pyproject b/examples/webenginewidgets/tabbedbrowser/tabbedbrowser.pyproject
deleted file mode 100644
index 1d26848b0..000000000
--- a/examples/webenginewidgets/tabbedbrowser/tabbedbrowser.pyproject
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "files": ["main.py", "bookmarkwidget.py", "browsertabwidget.py",
- "downloadwidget.py", "findtoolbar.py", "historywindow.py",
- "webengineview.py"]
-}
diff --git a/examples/webenginewidgets/tabbedbrowser/webengineview.py b/examples/webenginewidgets/tabbedbrowser/webengineview.py
deleted file mode 100644
index e12567df3..000000000
--- a/examples/webenginewidgets/tabbedbrowser/webengineview.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2018 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6.QtWebEngineWidgets import QWebEnginePage, QWebEngineView
-
-from PySide6 import QtCore
-
-_web_actions = [QWebEnginePage.Back, QWebEnginePage.Forward,
- QWebEnginePage.Reload,
- QWebEnginePage.Undo, QWebEnginePage.Redo,
- QWebEnginePage.Cut, QWebEnginePage.Copy,
- QWebEnginePage.Paste, QWebEnginePage.SelectAll]
-
-
-class WebEngineView(QWebEngineView):
-
- enabled_changed = QtCore.Signal(QWebEnginePage.WebAction, bool)
-
- @staticmethod
- def web_actions():
- return _web_actions
-
- @staticmethod
- def minimum_zoom_factor():
- return 0.25
-
- @staticmethod
- def maximum_zoom_factor():
- return 5
-
- def __init__(self, tab_factory_func, window_factory_func):
- super().__init__()
- self._tab_factory_func = tab_factory_func
- self._window_factory_func = window_factory_func
- page = self.page()
- self._actions = {}
- for web_action in WebEngineView.web_actions():
- action = page.action(web_action)
- action.changed.connect(self._enabled_changed)
- self._actions[action] = web_action
-
- def is_web_action_enabled(self, web_action):
- return self.page().action(web_action).isEnabled()
-
- def createWindow(self, window_type):
- if (window_type == QWebEnginePage.WebBrowserTab or
- window_type == QWebEnginePage.WebBrowserBackgroundTab):
- return self._tab_factory_func()
- return self._window_factory_func()
-
- def _enabled_changed(self):
- action = self.sender()
- web_action = self._actions[action]
- self.enabled_changed.emit(web_action, action.isEnabled())
diff --git a/examples/webenginewidgets/simplebrowser/doc/simplebrowser.png b/examples/webenginewidgets/widgetsnanobrowser/doc/widgetsnanobrowser.png
index 3fa5a0046..3fa5a0046 100644
--- a/examples/webenginewidgets/simplebrowser/doc/simplebrowser.png
+++ b/examples/webenginewidgets/widgetsnanobrowser/doc/widgetsnanobrowser.png
Binary files differ
diff --git a/examples/webenginewidgets/widgetsnanobrowser/doc/widgetsnanobrowser.rst b/examples/webenginewidgets/widgetsnanobrowser/doc/widgetsnanobrowser.rst
new file mode 100644
index 000000000..d9358a230
--- /dev/null
+++ b/examples/webenginewidgets/widgetsnanobrowser/doc/widgetsnanobrowser.rst
@@ -0,0 +1,8 @@
+Qt Widgets Nano Browser Example
+===============================
+
+A minimal browser based on Qt WebEngine Widgets.
+
+.. image:: widgetsnanobrowser.png
+ :width: 400
+ :alt: Minimal Browser Screenshot
diff --git a/examples/webenginewidgets/widgetsnanobrowser/widgetsnanobrowser.py b/examples/webenginewidgets/widgetsnanobrowser/widgetsnanobrowser.py
new file mode 100644
index 000000000..2db865996
--- /dev/null
+++ b/examples/webenginewidgets/widgetsnanobrowser/widgetsnanobrowser.py
@@ -0,0 +1,70 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 WebEngineWidgets Example"""
+
+import sys
+from PySide6.QtCore import QUrl, Slot
+from PySide6.QtGui import QIcon
+from PySide6.QtWidgets import (QApplication, QLineEdit,
+ QMainWindow, QPushButton, QToolBar)
+from PySide6.QtWebEngineCore import QWebEnginePage
+from PySide6.QtWebEngineWidgets import QWebEngineView
+
+
+class MainWindow(QMainWindow):
+
+ def __init__(self):
+ super().__init__()
+
+ self.setWindowTitle('PySide6 WebEngineWidgets Example')
+
+ self.toolBar = QToolBar()
+ self.addToolBar(self.toolBar)
+ self.backButton = QPushButton()
+ self.backButton.setIcon(QIcon(':/qt-project.org/styles/commonstyle/images/left-32.png'))
+ self.backButton.clicked.connect(self.back)
+ self.toolBar.addWidget(self.backButton)
+ self.forwardButton = QPushButton()
+ self.forwardButton.setIcon(QIcon(':/qt-project.org/styles/commonstyle/images/right-32.png'))
+ self.forwardButton.clicked.connect(self.forward)
+ self.toolBar.addWidget(self.forwardButton)
+
+ self.addressLineEdit = QLineEdit()
+ self.addressLineEdit.returnPressed.connect(self.load)
+ self.toolBar.addWidget(self.addressLineEdit)
+
+ self.webEngineView = QWebEngineView()
+ self.setCentralWidget(self.webEngineView)
+ initialUrl = 'http://qt.io'
+ self.addressLineEdit.setText(initialUrl)
+ self.webEngineView.load(QUrl(initialUrl))
+ self.webEngineView.page().titleChanged.connect(self.setWindowTitle)
+ self.webEngineView.page().urlChanged.connect(self.urlChanged)
+
+ @Slot()
+ def load(self):
+ url = QUrl.fromUserInput(self.addressLineEdit.text())
+ if url.isValid():
+ self.webEngineView.load(url)
+
+ @Slot()
+ def back(self):
+ self.webEngineView.page().triggerAction(QWebEnginePage.Back)
+
+ @Slot()
+ def forward(self):
+ self.webEngineView.page().triggerAction(QWebEnginePage.Forward)
+
+ @Slot(QUrl)
+ def urlChanged(self, url):
+ self.addressLineEdit.setText(url.toString())
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ mainWin = MainWindow()
+ availableGeometry = mainWin.screen().availableGeometry()
+ mainWin.resize(availableGeometry.width() * 2 / 3, availableGeometry.height() * 2 / 3)
+ mainWin.show()
+ sys.exit(app.exec())
diff --git a/examples/webenginewidgets/widgetsnanobrowser/widgetsnanobrowser.pyproject b/examples/webenginewidgets/widgetsnanobrowser/widgetsnanobrowser.pyproject
new file mode 100644
index 000000000..c054184df
--- /dev/null
+++ b/examples/webenginewidgets/widgetsnanobrowser/widgetsnanobrowser.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["widgetsnanobrowser.py"]
+}
diff --git a/examples/widgetbinding/CMakeLists.txt b/examples/widgetbinding/CMakeLists.txt
index e601a3579..1c5eefa50 100644
--- a/examples/widgetbinding/CMakeLists.txt
+++ b/examples/widgetbinding/CMakeLists.txt
@@ -1,5 +1,8 @@
-cmake_minimum_required(VERSION 3.16)
-cmake_policy(VERSION 3.16)
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+cmake_minimum_required(VERSION 3.18)
+cmake_policy(VERSION 3.18)
# Enable policy to not use RPATH settings for install_name on macOS.
if(POLICY CMP0068)
@@ -16,14 +19,12 @@ project(wiggly LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
-find_package(Qt6 COMPONENTS Core)
-find_package(Qt6 COMPONENTS Gui)
-find_package(Qt6 COMPONENTS Widgets)
+find_package(Qt6 COMPONENTS Core Gui Widgets)
# ================================ General configuration ======================================
-# Set CPP standard to C++11 minimum.
-set(CMAKE_CXX_STANDARD 11)
+# Set CPP standard to C++17 minimum.
+set(CMAKE_CXX_STANDARD 17)
# The wiggly library for which we will create bindings. You can change the name to something
# relevant for your project.
@@ -52,7 +53,21 @@ set(generated_sources
# ================================== Shiboken detection ======================================
# Use provided python interpreter if given.
if(NOT python_interpreter)
- find_program(python_interpreter "python")
+ if(WIN32 AND "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+ find_program(python_interpreter "python_d")
+ if(NOT python_interpreter)
+ message(FATAL_ERROR
+ "A debug Python interpreter could not be found, which is a requirement when "
+ "building this example in a debug configuration. Make sure python_d.exe is in "
+ "PATH.")
+ endif()
+ else()
+ find_program(python_interpreter "python")
+ if(NOT python_interpreter)
+ message(FATAL_ERROR
+ "No Python interpreter could be found. Make sure python is in PATH.")
+ endif()
+ endif()
endif()
message(STATUS "Using python interpreter: ${python_interpreter}")
@@ -204,7 +219,11 @@ set_property(TARGET ${bindings_library} PROPERTY PREFIX "")
set_property(TARGET ${bindings_library} PROPERTY OUTPUT_NAME
"${bindings_library}${PYTHON_EXTENSION_SUFFIX}")
if(WIN32)
- set_property(TARGET ${bindings_library} PROPERTY SUFFIX ".pyd")
+ if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+ set_property(TARGET ${bindings_library} PROPERTY SUFFIX "_d.pyd")
+ else()
+ set_property(TARGET ${bindings_library} PROPERTY SUFFIX ".pyd")
+ endif()
endif()
# Make sure the linker doesn't complain about not finding Python symbols on macOS.
diff --git a/examples/widgetbinding/README.md b/examples/widgetbinding/README.md
deleted file mode 100644
index 5fee93c8c..000000000
--- a/examples/widgetbinding/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# WigglyWidget
-
-The original Qt/C++ example can be found here:
-https://doc.qt.io/qt-6/qtwidgets-widgets-wiggly-example.html
-
-This example shows how to interact with a custom widget from two
-different ways:
-
- * A full Python translation from a C++ example,
- * A Python binding generated from the C++ file.
-
-
-The original example contained three different files:
- * `main.cpp/h`, which was translated to `main.py`,
- * `dialog.cpp/h`, which was translated to `dialog.py`,
- * `wigglywidget.cpp/h`, which was translated to `wigglywidget.py`,
- but also remains as is, to enable the binding generation through
- Shiboken.
-
-In the `dialog.py` file you will find two imports that will be related
-to each of the two approaches described before::
-
-
- # Python translated file
- from wigglywidget import WigglyWidget
-
- # Binding module create with Shiboken
- from wiggly import WigglyWidget
-
-
-## Steps to build the bindings
-
-The most important files are:
- * `bindings.xml`, to specify the class that we want to expose from C++
- to Python,
- * `bindings.h` to include the header of the classes we want to expose
- * `CMakeList.txt`, with all the instructions to build the shared libraries
- (DLL, or dylib)
- * `pyside_config.py` which is located in the utils directory, one level
- up, to get the path for Shiboken and PySide.
-
-Now create a `build/` directory, and from inside run `cmake` to use
-the provided `CMakeLists.txt`:
-
-macOS/Linux:
-```bash
-cd ~/pyside-setup/examples/widgetbinding
-```
-
-On Windows:
-```bash
-cd C:\pyside-setup\examples\widgetbinding
-```
-
-```bash
-mkdir build
-cd build
-cmake -H.. -B. -G Ninja -DCMAKE_BUILD_TYPE=Release
-ninja
-ninja install
-cd ..
-```
-
-The final example can then be run by:
-```bash
-python main.py
-```
-
-You should see two identical custom widgets, one being the
-Python translation, and the other one being the C++ one.
-
-## Final words
-
-Since this example originated by mixing the concepts of the `scriptableapplication`
-and `samplebinding` examples, you can complement this README with the ones in
-those directories.
diff --git a/examples/widgetbinding/bindings.h b/examples/widgetbinding/bindings.h
index d59222656..7b45ad1bf 100644
--- a/examples/widgetbinding/bindings.h
+++ b/examples/widgetbinding/bindings.h
@@ -1,52 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef BINDINGS_H
#define BINDINGS_H
diff --git a/examples/widgetbinding/bindings.xml b/examples/widgetbinding/bindings.xml
index 07f1c89c9..957684074 100644
--- a/examples/widgetbinding/bindings.xml
+++ b/examples/widgetbinding/bindings.xml
@@ -1,54 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-->
<typesystem package="wiggly">
<load-typesystem name="typesystem_widgets.xml" generate="no"/>
diff --git a/examples/widgetbinding/dialog.py b/examples/widgetbinding/dialog.py
index f51e2186c..1bd127804 100644
--- a/examples/widgetbinding/dialog.py
+++ b/examples/widgetbinding/dialog.py
@@ -1,52 +1,5 @@
-############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## BSD License Usage
-## Alternatively, you may use this file under the terms of the BSD license
-## as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtWidgets import QDialog, QLineEdit, QVBoxLayout
@@ -68,12 +21,13 @@ class Dialog(QDialog):
layout.addWidget(wiggly_widget_py)
layout.addWidget(wiggly_widget_cpp)
layout.addWidget(lineEdit)
+ lineEdit.setClearButtonEnabled(True)
wiggly_widget_py.running = True
wiggly_widget_cpp.setRunning(True)
lineEdit.textChanged.connect(wiggly_widget_py.setText)
lineEdit.textChanged.connect(wiggly_widget_cpp.setText)
- lineEdit.setText("Hello world!")
+ lineEdit.setText("🖖 Hello world!")
self.setWindowTitle("Wiggly")
self.resize(360, 145)
diff --git a/examples/widgetbinding/doc/widgetbinding.md b/examples/widgetbinding/doc/widgetbinding.md
new file mode 100644
index 000000000..6355ea311
--- /dev/null
+++ b/examples/widgetbinding/doc/widgetbinding.md
@@ -0,0 +1,74 @@
+(widgetbinding-example)=
+# WigglyWidget Example
+
+This example shows how to interact with a custom widget from two
+different ways:
+
+ * A full Python translation from a C++ example,
+ * A Python binding generated from the C++ file.
+
+
+The original example contained three different files:
+ * `main.cpp/h`, which was translated to `main.py`,
+ * `dialog.cpp/h`, which was translated to `dialog.py`,
+ * `wigglywidget.cpp/h`, which was translated to `wigglywidget.py`,
+ but also remains as is, to enable the binding generation through
+ Shiboken.
+
+In the `dialog.py` file you will find two imports that will be related
+to each of the two approaches described before::
+
+
+ # Python translated file
+ from wigglywidget import WigglyWidget
+
+ # Binding module create with Shiboken
+ from wiggly import WigglyWidget
+
+
+## Steps to build the bindings
+
+The most important files are:
+ * `bindings.xml`, to specify the class that we want to expose from C++
+ to Python,
+ * `bindings.h` to include the header of the classes we want to expose
+ * `CMakeList.txt`, with all the instructions to build the shared libraries
+ (DLL, or dylib)
+ * `pyside_config.py` which is located in the utils directory, one level
+ up, to get the path for Shiboken and PySide.
+
+Now create a `build/` directory, and from inside run `cmake` to use
+the provided `CMakeLists.txt`:
+
+macOS/Linux:
+```bash
+cd ~/pyside-setup/examples/widgetbinding
+```
+
+On Windows:
+```bash
+cd C:\pyside-setup\examples\widgetbinding
+```
+
+```bash
+mkdir build
+cd build
+cmake -S.. -B. -G Ninja -DCMAKE_BUILD_TYPE=Release
+ninja
+ninja install
+cd ..
+```
+
+The final example can then be run by:
+```bash
+python main.py
+```
+
+You should see two identical custom widgets, one being the
+Python translation, and the other one being the C++ one.
+
+## Final words
+
+Since this example originated by mixing the concepts of the `scriptableapplication`
+and `samplebinding` examples, you can complement this README with the ones in
+those directories.
diff --git a/examples/widgetbinding/doc/widgetbinding.pyproject b/examples/widgetbinding/doc/widgetbinding.pyproject
new file mode 100644
index 000000000..e423ea347
--- /dev/null
+++ b/examples/widgetbinding/doc/widgetbinding.pyproject
@@ -0,0 +1,10 @@
+{
+ "files": ["../bindings.h",
+ "../dialog.py",
+ "../macros.h",
+ "../main.py",
+ "../registerwigglywidget.py",
+ "../wigglywidget.cpp",
+ "../wigglywidget.h",
+ "../wigglywidget.py"]
+}
diff --git a/examples/widgetbinding/macros.h b/examples/widgetbinding/macros.h
index 224fada68..001647966 100644
--- a/examples/widgetbinding/macros.h
+++ b/examples/widgetbinding/macros.h
@@ -1,52 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt for Python examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef MACROS_H
#define MACROS_H
diff --git a/examples/widgetbinding/main.py b/examples/widgetbinding/main.py
index 4524802f3..2b24018b1 100644
--- a/examples/widgetbinding/main.py
+++ b/examples/widgetbinding/main.py
@@ -1,52 +1,5 @@
-############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## BSD License Usage
-## Alternatively, you may use this file under the terms of the BSD license
-## as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
diff --git a/examples/widgetbinding/registerwigglywidget.py b/examples/widgetbinding/registerwigglywidget.py
index cdef7300d..c5560ba6b 100644
--- a/examples/widgetbinding/registerwigglywidget.py
+++ b/examples/widgetbinding/registerwigglywidget.py
@@ -1,52 +1,5 @@
-############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## BSD License Usage
-## Alternatively, you may use this file under the terms of the BSD license
-## as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from wigglywidget import WigglyWidget
diff --git a/examples/widgetbinding/wigglywidget.cpp b/examples/widgetbinding/wigglywidget.cpp
index 01a49b1ef..6fdc65f39 100644
--- a/examples/widgetbinding/wigglywidget.cpp
+++ b/examples/widgetbinding/wigglywidget.cpp
@@ -1,52 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "wigglywidget.h"
@@ -86,14 +39,16 @@ void WigglyWidget::paintEvent(QPaintEvent * /* event */)
//! [3]
QPainter painter(this);
//! [3] //! [4]
- for (int i = 0; i < m_text.size(); ++i) {
- int index = (m_step + i) % 16;
+ int offset = 0;
+ const auto codePoints = m_text.toUcs4();
+ for (char32_t codePoint : codePoints) {
+ const int index = (m_step + offset++) % 16;
color.setHsv((15 - index) * 16, 255, 191);
painter.setPen(color);
- const QChar c = m_text.at(i);
+ QString symbol = QString::fromUcs4(&codePoint, 1);
const int dy = (sineTable[index] * metrics.height()) / 400;
- painter.drawText(x, y - dy, c);
- x += metrics.horizontalAdvance(c);
+ painter.drawText(x, y - dy, symbol);
+ x += metrics.horizontalAdvance(symbol);
}
}
//! [4]
diff --git a/examples/widgetbinding/wigglywidget.h b/examples/widgetbinding/wigglywidget.h
index 5bfb4da14..e527a8f49 100644
--- a/examples/widgetbinding/wigglywidget.h
+++ b/examples/widgetbinding/wigglywidget.h
@@ -1,52 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef WIGGLYWIDGET_H
#define WIGGLYWIDGET_H
diff --git a/examples/widgetbinding/wigglywidget.py b/examples/widgetbinding/wigglywidget.py
index 482415ae6..3362eab6b 100644
--- a/examples/widgetbinding/wigglywidget.py
+++ b/examples/widgetbinding/wigglywidget.py
@@ -1,52 +1,5 @@
-############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## BSD License Usage
-## Alternatively, you may use this file under the terms of the BSD license
-## as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtCore import QBasicTimer, Property
from PySide6.QtGui import QColor, QFontMetrics, QPainter, QPalette
@@ -89,15 +42,15 @@ class WigglyWidget(QWidget):
y = (self.height() + metrics.ascent() - metrics.descent()) / 2
color = QColor()
- painter = QPainter(self)
- for i in range(len(self.text)):
- index = (self._step + i) % 16
- color.setHsv((15 - index) * 16, 255, 191)
- painter.setPen(color)
- dy = (sineTable[index] * metrics.height()) / 400
- c = self._text[i]
- painter.drawText(x, y - dy, str(c))
- x += metrics.horizontalAdvance(c)
+ with QPainter(self) as painter:
+ for i in range(len(self.text)):
+ index = (self._step + i) % 16
+ color.setHsv((15 - index) * 16, 255, 191)
+ painter.setPen(color)
+ dy = (sineTable[index] * metrics.height()) / 400
+ c = self._text[i]
+ painter.drawText(x, y - dy, str(c))
+ x += metrics.horizontalAdvance(c)
def timerEvent(self, event):
if event.timerId() == self._timer.timerId():
diff --git a/examples/widgets/animation/animatedtiles/animatedtiles.py b/examples/widgets/animation/animatedtiles/animatedtiles.py
index 01828c9ec..02fc75bf5 100644
--- a/examples/widgets/animation/animatedtiles/animatedtiles.py
+++ b/examples/widgets/animation/animatedtiles/animatedtiles.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2010 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
import math
@@ -46,14 +8,14 @@ import math
from PySide6.QtCore import (QEasingCurve, QObject, QParallelAnimationGroup,
QPointF, QPropertyAnimation, QRandomGenerator,
QRectF, QTimer, Qt, Property, Signal)
-from PySide6.QtGui import (QBrush, QColor, QLinearGradient, QPainter,
+from PySide6.QtGui import (QBrush, QLinearGradient, QPainter,
QPainterPath, QPixmap, QTransform)
from PySide6.QtWidgets import (QApplication, QGraphicsItem, QGraphicsPixmapItem,
QGraphicsRectItem, QGraphicsScene, QGraphicsView,
- QGraphicsWidget, QStyle, QWidget)
+ QGraphicsWidget, QStyle)
from PySide6.QtStateMachine import QState, QStateMachine
-import animatedtiles_rc
+import animatedtiles_rc # noqa: F401
# Deriving from more than one wrapped class is not supported, so we use
@@ -133,7 +95,7 @@ class Button(QGraphicsWidget):
painter.drawEllipse(r.adjusted(5, 5, -5, -5))
painter.drawPixmap(-self._pix.width() / 2, -self._pix.height() / 2,
- self._pix)
+ self._pix)
def mousePressEvent(self, ev):
self.pressed.emit()
@@ -161,7 +123,7 @@ if __name__ == '__main__':
for i in range(64):
item = Pixmap(kinetic_pix)
item.pixmap_item.setOffset(-kinetic_pix.width() / 2,
- -kinetic_pix.height() / 2)
+ -kinetic_pix.height() / 2)
item.pixmap_item.setZValue(i)
items.append(item)
scene.addItem(item.pixmap_item)
@@ -199,23 +161,25 @@ if __name__ == '__main__':
for i, item in enumerate(items):
# Ellipse.
ellipse_state.assignProperty(item, 'pos',
- QPointF(math.cos((i / 63.0) * 6.28) * 250,
- math.sin((i / 63.0) * 6.28) * 250))
+ QPointF(math.cos((i / 63.0) * 6.28) * 250,
+ math.sin((i / 63.0) * 6.28) * 250))
# Figure 8.
figure_8state.assignProperty(item, 'pos',
- QPointF(math.sin((i / 63.0) * 6.28) * 250,
- math.sin(((i * 2) / 63.0) * 6.28) * 250))
+ QPointF(math.sin((i / 63.0) * 6.28) * 250,
+ math.sin(((i * 2) / 63.0) * 6.28) * 250))
# Random.
random_state.assignProperty(item, 'pos',
- QPointF(-250 + generator.bounded(0, 500),
- -250 + generator.bounded(0, 500)))
+ QPointF(-250 + generator.bounded(0, 500),
+ -250 + generator.bounded(0, 500)))
# Tiled.
+ width = kinetic_pix.width()
+ height = kinetic_pix.height()
tiled_state.assignProperty(item, 'pos',
- QPointF(((i % 8) - 4) * kinetic_pix.width() + kinetic_pix.width() / 2,
- ((i // 8) - 4) * kinetic_pix.height() + kinetic_pix.height() / 2))
+ QPointF(((i % 8) - 4) * width + width / 2,
+ ((i // 8) - 4) * height + height / 2))
# Centered.
centered_state.assignProperty(item, 'pos', QPointF())
@@ -226,8 +190,7 @@ if __name__ == '__main__':
view.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate)
view.setBackgroundBrush(QBrush(bg_pix))
view.setCacheMode(QGraphicsView.CacheBackground)
- view.setRenderHints(
- QPainter.Antialiasing | QPainter.SmoothPixmapTransform)
+ view.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform)
view.show()
states = QStateMachine()
diff --git a/examples/widgets/animation/animatedtiles/animatedtiles.pyproject b/examples/widgets/animation/animatedtiles/animatedtiles.pyproject
index 08ee55685..20f4abe43 100644
--- a/examples/widgets/animation/animatedtiles/animatedtiles.pyproject
+++ b/examples/widgets/animation/animatedtiles/animatedtiles.pyproject
@@ -1,4 +1,3 @@
{
- "files": ["animatedtiles.qrc", "animatedtiles.py",
- "animatedtiles_rc.py"]
+ "files": ["animatedtiles.qrc", "animatedtiles.py"]
}
diff --git a/examples/widgets/animation/animatedtiles/animatedtiles_rc.py b/examples/widgets/animation/animatedtiles/animatedtiles_rc.py
index 3486fa55c..065aca760 100644
--- a/examples/widgets/animation/animatedtiles/animatedtiles_rc.py
+++ b/examples/widgets/animation/animatedtiles/animatedtiles_rc.py
@@ -1,892 +1,11 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.14.0
+# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
qt_resource_data = b"\
-\x00\x006\xe2\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00d\x00\x00\x00d\x08\x06\x00\x00\x00p\xe2\x95T\
-\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
-\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
-\x00\x00\x09pHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\
-\x95+\x0e\x1b\x00\x00\x00\x07tIME\x07\xd9\x03\x03\
-\x0e\x1c$|\x1a\xa6\xff\x00\x00 \x00IDATx\
-\xda\xed\x9dw\x98\x9de\x9d\xf7?\xf7SN\x9f\x993\
-3\x99Lf\x122\xa9\xa4\x03\x91\x90\x10j\xe8H\xd9\
-\x05\xa5\x88\xc8\xba\xeb\xcb\xb2\xae\x04QW_W]]\
-v]EQVPqYu\xa5Y\xc0\x12:\x16\x88\
-\x94\x00\x09)\xa4M\xea\xb4L\xa6\xcf\x9c9\xbd=\xf5\
-~\xff8\xf3<\x99A\x944}\xdf\xeb\xbd\xb8\xaf+\
-W2\xc9\xc9y\xca\xf7\xfe\xb5\xef\xaf\xdc\xf0\xeezw\
-\xbd\xbb\xde]\xef\xaew\xd7\xbb\xeb\xdd\xf5\xeezw\xfd\
-\x7f\xbf\xc4\xb1\xfc\xe7\xba\xba\xba\xab\x0c\xc3\x08N\x992\
-\xe5s+W\xae<QQ\x14\xb6m\xdbFmm\xed\
-\xa1\x0b\xb8\x02\x09 \xe4\x1f\x5cMU\xd5\x94\xa2(\xf9\
-r\xb9\xac\xbf\xfa\xea\xab\xb3\xfeo\xbf\x8c\xda\xda\xda\x9f\
-]w\xdduW\x97\xcbe\x17@A\xe0H\x89\xf8#\
-o\xc9q\x1c\x02\x81\x00\xaf\xbf\xfe\xba\xb3`\xc1\x82\xc2\
-\xc0\xc0@l\xcb\x96-\xd3-\xcbJ\x1e\xed=h\xc7\
-\xf2\x00\x8b\x16-\xfa\xe1\xcc\x993\xeb7o\xdeL\xa9\
-T\xc2\xb6m\xea\xeb\xebihh@\x08A\xbf\x95b\
-\xda\x05E\xaa\xa2:N:\x88\x93\xd1qs:vJ\
-C\x165\x80\xb0\x94\xf2\x0f\xbew\xda\xb4i\xa2\xb7\xb7\
-W\xfe%@\xa8\xaa\xaa\xba`\xc5\x8a\x15kt]7\
-\x1d\xc7\xa9\xe9\xef\xed\xd3m\x0b\x84\x2210\x09\xc5\x04\
-\xb2\xa0M\xd8LB\x08\xf6\xee\xdd\xcb\xd2\xa5K\xbd\x8d\
-\x85\xa6i\xb1X,\x86\xeb\xba\xa7\x85B\xa1lmm\
-\xed\xae\x81\x81\x81\xec\x9f\x1d\x90E\x8b\x16\xb1w\xef\xde\
-\x90\xe38(\x8a\xe2\x94J%\x5c\xd7\xc54Ml\xdb\
-\xc6\xb2,\xca\xe52B\x08\x8a\xdd\x09\xba\xba\xc3Hi\
-\x220\x91\xaa\x8b@\x80\xa8<\xf08\x19\x95g\x9cq\
-\x86\x04\xc8f\xb3\xb4\xb6\xb6\x8a\xbf\x94T\x94\xcb\xe5\xe6\
-\xc9\x93'W\x9b\xa6\x89\x82\xe0`\xb8\x87\x85\x17*\xd8\
-\xc3A\xecD\x10g4\x88\x8c\x0a\xa4\xa9 -\xa5\xf2\
-\xd24\x0dUU1M\x13EQp]\x17\xc300\
-MS^u\xd5U\xbf\x11B\xf0\xdak\xaf]\x00\xfc\
-\xfe\xcf\x0eHGG\xc7\x9c\xd3N;\xad\xad\xb6\xb6\x96\
-B\xa1\x80i\x9a\x13\x00\xf1nNQ\x14\xa6Lm\x22\
-\x1c\x0e\xa3\x08A\xabq\x80\xe5\x1f\x82@@\xc1\x1e\xd5\
-\xb1z\xa3\x98\x83\x01\x9c\xe1 B\xa9(\x05)%\xc1\
-`\xf0/\xab\xb3\x85\xf07\x92\x86\x8a;?C ^\
-C ^\x82\x13K\x13>;\xf4\xe8$\xdc\xa2\x8a\xeb\
-\xbaH)1\x0c\x03!\x04RJ,\xcb\xc2u]a\
-\x18\x06\x9a\xa6\x01\xb8\x7f\x11\x95U.\x97\x1b\x1a\x1a\x1a\
-\x08\x85B\xe4\xf3y\x0c\xc3\xf0o\xceq\x1c\x1c\xc7\xf1\
-o4\x10\x08T\xc0\x11\x82^{\x84\xf3bM\xb8F\
-\x90%KNa\xe7\xe4W\x89\x08\x89\xa2\xe8\xa4_\xae\
-\xa2\xb0'\x8c\x94\x12\xd7u\xff\xec D\xa3\xd1\xb3\xae\
-\xb9\xe6\x9au\xa5R\xa9\xf2B])C\xf5B\xb8)\
-\x9d\x19\xbbNat\x97\xacH\xf0[\xe4\xb4m\xef.\
-f\xcc\x98\xe1\x032^B\xca\xe5\xb2\xbf1\xa5\x94\x94\
-\xcb\xe5\x8fWUU]WUU\xf5@\x7f\x7f\xff\xa6\
-?\xab\x0d\xb1m\x1b\xc30|i\xf0n\xc4q\x1c\x7f\
-\xb7\x09!PU\x15\xcb\xb2\x90\xaeK}:\xc4\xc1\xa7\
-\x15N\x08.&W?\x05;1\x17\xac0I:)\
-\x0c\x988y\xc7\x07\xe4\xec\xb3\xcf\xfe\x1f)e \x99\
-L\x86{{{\xff6\x9b\xcd\xe6\x8f' R\xca\xb0\
-\xaa\xaa\x15\x89\x96\x92]\x93w\x8a\xf3\xaf\xac\xc3\x956\
-vVCd\xc3\xd8Y\x0d'\xabQ\xde\x1fA:\xc2\
-\x97\xa6r\xb9\x8c\xa2TT\x97\x07\x88'!\x8e\xe3T\
-\x9eWJ\xb9j\xd5\xaa\xab\x9b\x9b\x9by\xf0\xc1\x07\xd7\
-\x03\x7f\x1e@\xa6M\x9b\xb6\xb0T*\xcd\xb7m\x1b)\
-%\x8e\xe3LPY\x8e\xe3\x00\xf8*K\xd34\xff3\
-\x0b\x1bf\x13MU\x91$Aw\x7f7\xf1\xf7\x14\xd0\
-\xcc\x00\xd1D\x9cH\xbd\x86\xac\x11HC\x01W\x80\xe0\
-#\x00\xe1p\x98\xdd\xbbw\x7f\x148&@\x9a\x9a\x9a\
-\x18\x18\x18\x18\x0f\x884M\x13\xd341]\x9bX\xb5\
-\x0e\xb6\xc2\xf2\xc9\xef\xa7\xaa%\xc4K\x9d\xbfb\xfa\xbc\
-&\x86\x8c.\xf2\x1d*N\xa9\x02\x80\xf7\x9c\xe3\xed\x86\
-\xf7gO2\xc6\xde\x87\xc8f\xb3D\xa3Q\x14E\x91\
-\x7f6\x95U[[\xbbf\xd9\xb2e\xf3\xd2\xe9\xb4o\
-/\x1c\xa7\xb2\xb3=/+\x18\x0c2f\xf0\x09\x06\x83\
-\xb8\xae\x8beY\xbe\xb1WQ\xd8\x17\xee\xe0\xc2\x05\xd5\
-@\xf1-\x0a]\x92^WC\xb9-\x02\x80eY\xc7\
-E\x22\x06\x06\x06hjj\x9a\x04,\x01\x1c\xc30N\
-N$\x12d\xb3Yl\x5c\xec\x11\x9b\x9d\xcf\x17\xb8\xf2\
-}\xf3y\xfa\xd55\xcck\xbe\x82\xf7\xd4\xaf\xe4\xbf\xb6\
-\x7f\x8al*\x87.\xc3\xbe\x9b\xeb\x01\x02P(\x14p\
-\x1c\x07\xd7u)\x95J\x9e\xed\xc0\xf3\x1c=M\xf1g\
-\x03DJ\xa9\x14\x0a\x05\x1f\x08\xdb\xb6\xc9\xe5r\xd8\xb6\
-M>\x9f\xf7uk\xa9TBQ\x14\xc2\xe10\xb6m\
-c\xdb\xf6\xa1\x87\x91\x02\xc2\x15\xf1\xff\xc8\xc2\xbb\x91\x8a\
-K\xda\xedd\xe3\xd6.\x92U\xeb\x18\x1d\xfb\x9c\xb7#\
-\x8f\xd7*\x95J7\x9f\x7f\xfe\xf9w\xaa\xaa\x8a@\x90\
-03L?\xbd\x1aw8\x8c3\xda\x82H\xc3\x8f\xbe\
-\xf3S\x14U\xf0\x1a[xUn&\xa0\xcd'\x9fl\
-'\x1aU\x91Rz\xb6\xc1\x07\xa4X,\xfa\xef\x22\x9b\
-\xcd\x12\x8b\xc5|0\xc6IKc,\x16\x9b\x95\xcf\xe7\
-;\xff\x1c\x80\xf8/\xd8\xb2,l\xdb\xf6_\x9e\xa6i\
->\x10\xaa\xaa\xfa\xdeK\xb1X\xf4\x8d\xbd'!X\x92\
-\xd1^\x83\xa9\xef\x99\xcbu?Z\xca\xcf>\xb2\x81\xa6\
-\x93\xd2\xac\xed\xc9\xb2'\xfb*\xf9\x9c\xe9\xab>\xa0\xce\
-\xbb\xfe\xf4\xe9\xd3\x93\x07\x0f\x1et\x8f\xd2nD\xbd\x0d\
-StM\xb4s\xfa\xa9\x9d\x1f\xc1\x92\x83H\x1bD6\
-\x86\x9dQqR:\xf9-\xd5\xa0H\x1ci\xfb\xb6\xc2\
-\x93\x90T*\x85\xaa\xaa8\x8e\xe3\xc5\x1f\x08!\xd04\
-\x0dEQ\xc8\xe5r\x04\x83A\x22\x91\x08\xa6i\xca\x93\
-O>\xf9\x9b\xaa\xaa\xde\xf1\xca+\xafT\xfd9\x00\x91\
-\x1e\x10\xdeNQ\x14\x05\xdb\xb6\x994i\x127\xddt\
-\x13\xdf\xf9\xcew\xa8\xad\xade\xfa\xf4\xe9tuu\x91\
-\xcdf}c\xed8\x0e\x96\x10\xa8\xdb\x5c\x8a\xf9\xa9\xdc\
-\xf4\xab\x0fP\x1b8\x95\x9b\xd6\xdd\x88\xae\xa9\xa8v\x08\
-Mk$^\xe3\xc7(\xf2\xca+\xaf\xdc\xe7\xfd\xff\xf5\
-\xeb\xd7\xcf\x07\xf6\x1d\xad\x94x*\xc4tM\xe2\xe1\x00\
-\x85\x8c\xcbM'\xdf\x81\xab\x16Y\xb3\xf7^&74\
-2\x9c\xefe\xf4\xd50J@NP\xc9\xde\x86TU\
-\xd5\x07$\x16\x8b!\x84\xf07\xa1\xa2(\xfe5\x02\x81\
-\x00\x96e\x09!\x04\xe1p\xb8p\xb8\xf7\xa8\x1c\xce\x87\
-\xa6L\x992i\xca\x94)/\xb9\xae;\xcd\xb3\x05\xd9\
-l%\x08\xbd\xea\xaa\xabhll\xe4W\xbf\xfa\x15\xcd\
-\xcd\xcd\x00\xac]\xbb\x96\xdbo\xbf\x9dP(\x84\xa6i\
-\xbeq7\x0c\x83r\xa9\x84\xd0\x04\xa1X\x90\xda\xdaZ\
-\xba\xd5!\x16|\xbc\xcc\xac\x8f\x16i\xb9u\x94\xc9\xd7\
-$\x89\x9fn\x10i\x16\x04\x83\x01\x11\x0c\x06\x09\x06\x83\
-\xd4\xd7\xd7\xe38\xce1\xe90\xc30\xbc\x00\x0eE(\
-\x9c\x14~?\xa1j\x9b\xe7\xdfx\x9dE\xda\xf5\xac>\
-\xe3njB\xf5\x94\xcb\xe5\xca\xbd\x96\xcb\x98\xa6I6\
-\x9b\xf57V \x10\xf0\xa5\xe1\xb2\xcb.#\x12\x89P\
-__\xcf\xdc\xb9s}`4M\xf3\xb5\x87\xe7}\x1d\
-W@\x92\xc9d\xed\x05\x17\x5cpn(\x14\x8aX\x96\
-\xe5_\xb8\x5c.\xf3\xe1\x0f\x7f\x18\xc30\xb8\xff\xfe\xfb\
-Y\xbe|\xb9\xaf;\xbd\x1b_\xb0`\x01\xb7\xddv\xdb\
-\x04\xe3\xee\xc5-\xa6a\xe2\x04L4M%\x9bt\xb8\
-j\xe1\xc7\xa8\x9b\x1a#\xb28K\xed\x15\xc3\xe8\x0bR\
-\x18\xa51o\xc84\x8f\xd8@644\x5c\x1e\x8dF\
-o\x8a\xc5b7J)\x97\x0c\x0d\x0d188Hb\
-h\x84\x817\xb3\xf4\xed\x18\xe0\xb95k\xd9\xf1\xfa\x0e\
-\xf6m\xda\xc3\xfd\x0f|\x97\x9d/v\x91/d}\xe0\
-<\x0f\xca\xf3\xa2\xce>\xfbl\xaa\xab\xab\x91R\x92H\
-$|\xa3\x9eH$\x18\x93\x06_ue\xb3Y_]\
-\x1fW\xa3\xee\xf9\xdf\xde\xc5\x15E\xe1\xfc\xf3\xcf\xa7\xb5\
-\xb5\x95\xc7\x1f\x7f\x9c\xba\xba:\x9ez\xea)\x9ey\xe6\
-\x19B\xa1\x10W]u\x15\xa7\x9f~:\xa9T\x8a\xfb\
-\xef\xbf\x9f\xbe\xbe>\x0c\xc3 \x99L\xfa\xd1\xb8i\x9a\
- Aj\x92r\xc9\xe1\xae\xf7>\xc5\xa3\xad\xdf\xe0\xa6\
-\xf9_e\xed\x8e\x17P\x1b\xfax\xcd\xdeV\xb1#J\
-eg\x1e\xe9\x9a<y\xf2\xb7\x97-[6\xcb\xb2,\
-T\xa1P\xacN\xcbX\xb5&\xdc\xac\x8e\x9d\xd4\xe9\xdb\
-6\x0c\x02\xea\xb5i\x8c\xa6s$d\x96\xa6\xc0\x0a\xf6\
-\x8f\xbeDS\xa0\xc9\x7f\x91\x9eM\xb4,\x8bH$\xe2\
-{\x91\x1b7n$\x16\x8b\x91H$\xa8\xae\xaeF\x08\
-\xc1\xb4i\xd3\x18\x1e\x1e&\x9f\xcf\xfb1\xdb\x91H\xb6\
-r\xb8\x80x`\x14\x8bE\xa6M\x9b\xc6\xbf\xfc\xcb\xbf\
-\xa0i\x1a\xcf=\xf7\x1c}}}\xc4b1\x82\xc1\xa0\
-\xef\xeen\xdb\xb6\x0dM\xd3&\xf8\xff\x9e\xcd9$!\
-\x95(?\xa0F\x98\xd68\x85\x84\xd8\x85\xb4BH\x09\
-\x8e\xb4p\x1d\x07\xc34|\xd1\xb7\xde\xe2\x07755\
-\xbd\xd3};\xe5r\x99r\xb9\xcc\xeel\x17\x91s\x07\
-E\xe8\xac~B\x97uP\xf5\xe1}\xd4|\xf0\x00\xa1\
-s\xfb\x113\x93\x95\xebX&\x96{(\x9e\xf0$\xbd\
-\xbe\xbe\x1eM\xd3\xd0u\x9d\x97^z\xc9\xb7)\xba\xae\
-\xfbR\x14\x0e\x871\x0c\xc3\x07\xcf\xb35c\x804\xad\
-\x5c\xb9R\xd6\xd7\xd7\xcf?nF\xdd\x8b;L\xd3\xa4\
-T*100@$\x12ahh\x08\xc7q\xe8\xef\
-\xef\xf7\xe9\xe8\xd1\xd1\xd1\x0a\x975e\x0a\x9f\xfd\xecg\
-q\x1c\x87`0\x88\xaa\x1er\x1f\xbdw\xeb\xb4\x97\xd8\
-\xf0\xef*\xa7\xfe\xdb\xa9\x00<\xcf\x87\xde\xf6\xfa\xd9l\
-\x96\xf9\xf3\xe7wy\xee\xf0\xd0\xd0\xd0\xbf\x0d\x0c\x0c\xdc\
-\xf1N^\xa1\x07\xa6)-\x14\x14\xc8L\xe6\x8e\xcb\xbf\
-G{z3\xdf{\xf9\xdfX\xbcd\x0e\xddu\x9dd\
-wi\xbe4\x18\x86A*\x95\xf2\x8d\xf3\xf5\xd7_\xcf\
-\x9a5k\xc8d2\xd4\xd5U\x9c\xbe\xd1\xd1Q\xff\x1a\
-\xf5\xf5\xf5\x98\xa6I8\x1cfhh\x08UU\x89\xc7\
-\xe3\xe8\xbaN.\x97\x03`\xee\xdc\xb9\xec\xda\xb5\xcb9\
-.\x80X\x96U\xf0^\xa0\xa2(\x14\x8bE>\xf3\x99\
-\xcfP]]\xed\xe7>\xc6{\x22\xde\x9f\x93\xc9$\x81\
-@\xc0\x07\xe4\x87?\xfc!\x86a\xf0\xf1\x8f\x7f\xdc\xe7\
-\xbbTT\x96,YRQ\x89\xd2!9\xf7\x00s\x16\
-Fpr*\xd6p\x08{(\x885\x18DH\x05\xa1\
-\xbb\xfe5\x86\x86\x86\x0e\xdb\x90\xdb\x96\x8d\xab:\x08E\
-p\xdd\x82O\xb3\xbe\xf7I\x9c\x91i\x5c7\xf7K\x9c\
-\x7f\xea\x99\xdc\xfe\xe8\xe5\xbek\xab\xaa\xaa\x1f\x03yl\
-\xc3\x96-[*\xe4\xe3\x98s2i\xd2$\xa4\x94\x08\
-!(\x95J\xfe\xc6TU\x95P(D\xb1X$\x12\
-\x89\xf8\xa1\x80eY\xfe\xf7\x1f3 \xb5\xb5\xb5\xb7,\
-]\xba\xf4.\x8f.9\xe1\x84\x13H\xa5R\x04\x02\x01\
-\xd2\xe9\xb4\xaf\x82\xa4\x94(\x8a\xe2\xb3\x9f\xde\xee\x1a\xa3\
-\x16\x5ce,\x9a\x9a6m\x1a\x8e\xe3P(\x14\x10\x08\
-liQ,\x16)\x97\xcb\xf4YIZ\xa6;\xc8H\
-\x89\xc6I\xd3IM\xedC\x0a\x07\xd35QJa\x86\
-\x1e\x99\x5cIt\x1d\x01EbY\x16\xb6e!\x15\x89\
-\xa2\x09\x1a\xaa\x9b9X\xfa=\xc9$d\xdd~\xeaN\
-0\x08\x07#^\xcc3A\xe5x*\xb6\xa7\xa7\x87P\
-(\x84\xeb\xba\xac^\xbd\x9a\xad[\xb7\xd2\xd9\xd9\xe9{\
-R\xaaZa\x80kjj\xc8f\xb3\xa8\xaaJ,\x16\
-\xf3\xd5\x9e\x17\xbb\x1d\x8eS\xf2\x8e\x80\x98\xa69\xb5\xa9\
-\xa9\xa9\xa6\xa7\xa7\x07\xd34\xb9\xe7\x9e{\xd8\xb3g\x0f\
-7\xdex#?\xf8\xc1\x0fH$\x12\xd4\xd6\xd6\x12\x0c\
-\x06y\xe9\xa5\x97X\xb8p!\xbbv\xed\xa2\xa7\xa7\x87\
-\xb9s\xe7\xb2m\xdb6\xf6\xef\xdf\x7f\xfb\x82\x05\x0b\xbe\
-\xf3\xec\xb3\xcfr\xd1E\x17Q.\x97}\x95%t\xc5\
-\xf7\xbe\x5c\xc7EU\x04\xa1\xec|>q\xd1\x9dh2\
-\xca\x17\x9e\xf8\x08\x1f>\xfbF~\xb6\xfdn,\xcb\xac\
-\xe4R\xfe\xc8\x83\x0d\x0c\x0c0k\xd6\xac;\xa3\xd1\xe8\
-T\x00\xe9\xca)\xc9\xd1\x14\xd2uA\xb7\xe9\xfc\xa5\xc2\
-w_\xf8\x16i\xf7 F6\x88M\x89\xeeu\x9dt\
-\x0d\xe60\xcd\xb0\x0fH8\x1cf\xc6\x8c\x19\x0c\x0e\x0e\
-b\x9af\xaaT*\xf58\x8e\xb3DQ\x14q\xd7]\
-wI\xd7u\x85\xb7\x01=\x1b\x0b\xf8\x86\x1c \x95J\
-\x11\x8b\xc5\xfcMz\xb84\x8av8\x06\xdd4M\x0a\
-\x85\x02\xaa\xaa\xf2\xa3\x1f\xfd\x88o\x7f\xfb\xdb\xfc\xf4\xa7\
-?e\xfd\xfa\xf5\xa8\xaa\x8a\xae\xebh\x9aF*\x95b\
-\xef\xde\xbd\xe4\xf3y\xca\xe52\x89D\xc2S_!U\
-U\xd9\xb0a\x03\xaf\xbf\xfe\xba\xef\xab\x8f\xbd4\xdf\xdf\
-\xb7\xb1qqY\xd6p\x19\x8fl\xfb*\xb3\xb4\xf3\xb9\
-\xf6\xa4\xd5\xb4\xd4LA\xa0T\xd4\x9c\x22\xde\xc9\xb3\xfa\
-\xfb\xe9\xd3\xa7\xd7\x0b!(8eX8L}<\x8c\
-\xd3\x1f\xc1\xea\x0b\x93\x19M\x22\x88\x11\xaa\x98e\x8aC\
-\x92Fq\x22\x1df\x87\xcf8TWW\x13\x8f\xc7I\
-\xa5R\x98\xa6\xf9\xec\x9e={n\x8a\xc7\xe3\xd7Z\x96\
-5\xcb\xb2\xac\xaf]p\xc1\x05\xacX\xb1\x82G\x1f}\
-\xd4\xb7\xab^\x10\xe9QJ\x8a\xa20<<L4\x1a\
-=\x22^\xeb\xb0\x00\xf1\xbe\xccs\xf5N;\xed4_\
--\x8d\xb7\x1fB\x08z{{\xfd?\x1f8p\xc0\xf3\
-\xbc\xd2\xfb\xf7\xef\xff\xab\xb1\xe8\x95P(\xf4\xf8\x89'\
-\x9e\xa8~\xf1\x8b_\xe4s\x9f\xfb\x1c\xa6iV\xf2)\
-\xaa\x8d\x10\x10\xd0\x228\xae\x8da\x9add\x8a\xaeL\
-\xe2\x10\x85!\xf0w\xe6\xdb-\x8f\x85\x05x#\xbf\x9f\
-\xebO\xaf\xc1\xb2s\x94Z\x06\xa9\xd6\xc2\x08GE\x1a\
-*\xc5=Q\xf2\xdbb *;=\x95J\xf9\xd7(\
-\x95J\xa4R\xa9\x09\xcf\x98N\xa7\x7f\x01\x9c\xb8j\xd5\
-\xaa\xaf\xddy\xe7\x9d\xe8\xba\x8ea\x18tuu\xb1t\
-\xe9R~\xf9\xcb_\xf2\xbe\xf7\xbd\x8f-[\xb6\xb0g\
-\xcf\x1e.\xbd\xf4R\x86\x86\x86X\xbbv\xad\xbf\xa9\x17\
-,X\xf0fkk\xeb\xaal6\xbb\xe5\x98%\xc43\
-p\x93'Ofhh\xc8\xb7\x15\xdeM\xbb\xae\xeb\xff\
-\xf2x\xac\xb1\x07|B\xd7\xf5\xbd\xc3\xc3\xc3\xafz\xdf\
-\xd9\xd2\xd2\x22\x9f{\xee9^|\xf1E\x96/_\xce\
-\x86\x0d\x1b*\xbb,\xe42\xb4\xce\xe2\xf9\xf8\xd3\xc8\xc8\
-(\xfd\xca\x1b\x18V\x89\xaa\x1a\x9d\x83C\x06\x85\xa2\xed\
-\xdfS,\x16;w\xf1\xe2\xc5_\x02\x84a\x18v[\
-[\xdbW<\xbe\xc9\xf7\x8e\x85D\x22Y \xaeg\xc5\
-{N!m\xf6\xb3a\xdfkdB\xfb)\x06l,\
-\xcbD\x22\xd14\xcd'2]\xd7\x95\xaa\xaa\x0a\xc7q\
-\x88\xc7\xe3$\x12\x89\xf1\xe8+CCC\xec\xde\xbd\x9b\
-\xe6\xe6f<\x97z\xe3\xc6\x8d\x00\xbc\xf6\xdak\x94\xcb\
-et]\xe7\xb5\xd7^\xa3\xa1\xa1\xc1\xbf_\xc30\xa8\
-\xa9\xa9\x89Y\x96\xa5\x1f\xab\x97%m\xdbFUU\x1e\
-~\xf8a\xa6N\x9d\xca#\x8f<\xc2\xce\x9d;\x09\x85\
-B$\x93I\xa2\xd1(\x83\x83\x83\x04\x02\x01b\xb1\x18\
-###d2\x19\xd2\xe94mmmW\xbf\xdd.\
-~\xf6\xd9g\xa9\xad\xad%\x97\xcb\xf94E\xa9T\xa4\
-.\xb9\x08\x07\x0b\x91\xa9\xa1\xcf\x19\x224\xbd\x8c\x99\x0d\
-\xd0\xc8<&\xaf\xa8\xe4\xb5\xa5%@a\x95\x10\xac\x1a\
-\x8biJ\x1e \xe3%D\x00\x03\xfdy\xfe\xf3o>\
-\xce\xc7\x7f}6_>\xe7ij\xecy\xa85)\xbe\
-\xb5\xe9\xab\x18\x86\x09\xa2\xc2Yy*T\xd3418\
-8\xd8988\xb8M\x08\xe1\x06\x02\x81\xb5o\xdd\xa0\
-\xabW\xaf\xc6\xb6mB\xa1\xd0\x045t\xf0\xe0\xc1\x09\
-?\x1f8p\xc0\xb7!\x85B\xe1\x0f>\x7fT\x80(\
-\x8a2\xc7\xb2,TU\xa5T*Q,\x16\x99;w\
-.o\xbe\xf9&K\x96,axx\x98\xda\xdaZ\xb2\
-\xd9,\xe5r\x99H$\xc29\xe7\x9c\xc33\xcf<\xf3\
-G/\xaei\x1a_\xfa\xd2\x97|C\xe8\xc5\x0b\x05\xa5\
-L\xa9TB\xa4\x05B\x08v\xe8\xfbx\xef\x195\xd8\
-\xd6x\xcfJ\xe2\x18\x0a\x99\x17\xea0\x87\x03\x80\xfc\x03\
-\xb0}\x9aE\x07\xc7\x86\x80\xae\xa3)\x01\x10\x90\xc8\x0f\
-\xf2F\xff\x03HW\x8e\xa9\xc0\x8a\x94744\xf86\
-@Q\x94_g2\x99\xd5o\x17\x8ey\xae\xbc\xb7\xeb\
-\x0f3\xed\xed\x7f\xff\xb1\x022\xbd\xb6\xb6\xf6F\xc30\
-\xa4\xa6i\xe2\xee\xbb\xef\xa6\xb1\xb1\x91\xbd{\xf7\xe2\xba\
-.\x83\x83\x83\x18\x86A8\x1c\xa6P( \xa5dt\
-t\x94]\xbbv\xfdI\xee\xa9X,\xe6\xa5\x94\xde\xb5\
-\x83\xe1pXw\x1c\x07\xddRq\xdcC*G\x09\x09\
-,\xc7fE\xf4\x16\x16\xcf\x5c\xc0\x96\xe4\xe3\xe4\x92\x1a\
-\xbb\xdd\xe7p\xb4\x18\x96\x09\x129\xc1\xa6\xb8\xae+}\
-\x03\x1a\x12\xc4'\x85(\x18e\x02!\x95\x9a\xaaZL\
-\xa5\x88\x16\xd2@\xa9\x00\x22\x91\xbe\xfamnnfh\
-h\x88\xb7+M\x02\x08\x04\x02\xed\x1d\x1d\x1d\x8d\xf3\xe7\
-\xcf\x1f\x9a2e\x0a7\xdcp\x03\x8f=\xf6\x98o{\
-\xbc\x80\xd7\xdb`\x1e\xc3\xa1\xeb\xba\xcf\x8a\x1f+ \x11\
-!\x04\xb9\x5cN\xd4\xd7\xd73<<\xcc\xe0\xc0\x10 \
-\x10\x02\x1f\xf1r\xb9\xec\x07T\xde6\x8e\xc5b\xa2T\
-*\xbdm\xf4,\x84\xf0+\xe9f\xce\x9c\xf9\xa0\xaa\xaa\
-\x1f\xbe\xfc\xf2\xcb\xfd\x00\xec\x90+)I\x0d\x0a\xfe\xee\
-\xe6\x9b\xb9\xe9gK\xf9\x97\xb3\x1f\xa3\x18/0\xd3l\
-\xe6'\xbfy\x02\xc3\x90\x9e\x0d\x08]t\xd1E#\x80\
-\x14\x8e\xa8\xb3,\x89\xa2\xc0\x22;\xc2\xf0\xc3\x0a\xd7?\
-t-R\x09q\xfd\x7f]\x83e[\x04\xb5\x08\xdb[\
-{\xa9\x8a\xc4}J\xdd#?\xff\x18\x18\xe3\xf2\x222\
-\x16\x8b\xf1\xe2\x8b/\xb2q\xe3FZZZ\xd8\xbau\
-+\xe1p\x98\xf5\xeb\xd7\xfb61\x12\x89\xd0\xd2\xd2\xc2\
-\xae]\xbb\x18\x1d\x1d\xf5\x93t\xc7\xac\xb2\xa4\x94\xe8\xba\
-\xce\xbe}\xfb\x90\xae\xa4f\xb1N$\xac\x92\xeb\xb7)\
-\x0e9H\xf7m\xd5\x9c(\x97\xcb\x9d\x8a\xa2|\xf3\xed\
-\x9c\x84\xb7\xb0\x00\xfa\x07>\xf0\x01\xe6\xcc\x99\xc3\x07?\
-\xf8An\xbd\xf5V?\xcf \x10T\x05\xe3\xd8\xb2D\
-\xbc\xaa\x8a\xe6\xda\xa9<\xbf\xe3\xd7<\xd1w\x1f\xb6\xd5\
-\x88i\xb9P\xd9\xe1\xa2\xa6\xa6f\x92@\xd05m\x0f\
-\xa7]\x14\xc6\x18\xac\xd4U\xd9\x83\x01\x9c\xac\x06\x96\x8e\
-[RPu\x0dMS)\xe5Ml#\xe5%\xddd\
-4\x1a\x15###\x84B\xa1w\xe4\xf8\x1c\xc7\xe1\x95\
-W^!\x1e\x8f\xe3\xba.\xfd\xfd\xfd~\xa2\xcaK\xc8\
-y\xeco]]\x1d\x03\x03\x03h\x9a\xe6\x05\x91\xb1\xe3\
-\x02\xc8\xec\xd9\xb3+\x14@\xb2\x22\x9aQ)\x89\xd4\xcb\
-\x09\xa5;\x9e\x975\xb6\xe3z\x06\x06\x06\xfe\xebp\xe9\
-\x8d\xb9s\xe7\xfaQ\xed!u'\xb0]\x13Eh\x80\
-\xa0d\x15\xd1T\x8d\xa0\x16\xc5q\x5cL\xd3\xf2\x839\
-\xcb\xb2(8ej\xa7)H[%Z\x1fF\x99b\
-a\xccO\xf8\x9b`\xe0\xa1IH[\xf1=A\x8f[\
-SUUtuu=\xe0\xed\x11]\xd7\x7f\xfd\xa7\xee\
-\xd7u]>\xf9\xc9O\xfa\xdf3~\xed\xdbw(\x7f\
-\xd6\xdf\xdf\xef{\xa1\xf1x\x1c\xc7q\xa8\xaa\xaa\xfar\
-:\x9d~\xe1\x98\x00Y\xb1b\x05\x97]v\x19g\x9f\
-}6\xdf\xfb\xde\xf7hmm\xe5\xe4\x93O\xe6\xf5\xd7\
-_g\xee\xdc\xb9d2\x19Z[[\x09\x87\xc3\xcc\x9c\
-9\x937\xdex\xe3\xb0)\xf2@ \xc0\x0b/\xbc\xc0\
-\xde\xbd{\xe9\xed\xed\xf5\x19T!\x04\x85\xd6\x1cCF\
-#\xff\xeb\xa5[\x18\xcc\xea|\xea\xb1O`\x186y\
-'\x8e]\x14D\x22\x87\xa4\xae\xa2\x1e%\xca\xeb\x939\
-\xf8\x86\xe0\xc1\x07~\xc4\xfe\x9e.~\xbb\xf7\xa7\xfc\xed\
-\xaa\x8fr\xf7\xba[1M\x0bi\x1f\x02B\xd7u\x9f\
-J\x1f\x19\x19\xf9\xc8\xe1\xdes>\x9f'\x12\x89\x1c\x02\
-\xc3\x01\xcbt\xc7\xee\x05\x84*P\xd41m0\xf6\x91\
-\xd1\xd1Q_=\x1e\x8b\x84\xb8\xde.\x88\xc7\xe3\x84\xc3\
-a\x9ft\x0b\x04\x02,]\xba\x94\xee\xeen\xaa\xab\xab\
-}\xa3\xa5\xeb\xfa;^\xf4-*+\xa0(\x0a\x07\x0f\
-\x1e\xf4\x8a\x06d\xb9\x5c\x16\x00\xe5b\x91i+f\x92\
-\xcb\xe5\x88iu\xa4g\x1c\xa0iF\x80\xaa\xb4\x8e\x93\
-\x1d\xfb\x95\xd6ps\x1ab\xecI\xc2\xe10\xe9T\x9a\
-\xf5=\xcf\xb2\xe9\xcd..>\xf9\x06\x1ac\xd3\x11(\
-\x95X\xc7\xaaH\xd4\xbcy\xf3\xfcl\xe6\xe1\x12\x95\x00\
-555#\x1d\x1d\x1dM\xa7\x9cr\xca@*\x95B\
-Hpg\x0b\x96_YC~\xc0\xa18l\x93\x1bp\
-(\x0e\xd9\x18\x19\x17\xcf$y\xef\xf0O\xd9\xa8w\x04\
-$\x1a\x8d.\x07\xd8\xb6m\x1b\x89D\x82\xe1\xe1a\x8a\
-\xc5J\xe9\xce\xee\xdd\xbb\xfd\xc0\xd0\x03\xcdu]^~\
-\xf9\xe5#J&%\x93\xc9/\x0e\x0d\x0d}w\xcc\x8d\
-\x9c\xbe`\xc1\x82\x87\x0fy#\x95\x0a\x96r\xb9L\xca\
-\xcd1u\xae\x89\xa8\xb2i\x9c\xd6D\xd9\xcdQr\x12\
-(\x0a\xd8y\x95\xe1\x9fN\xf6\x1f\x5cJ\x89W\xb2\x9e\
-)\x8d\x925\x12\x08EL\x00$\x93\xc9p\xf5\xd5W\
-\xf3\xf4\xd3O\xfb1\xc8\xe1\xacL&\x83\xae\xebR\xd3\
-4\x9a\x9a\x9a*6\xa2\x7f\x80\x8e\x07\x15,\xc7E(\
-:\xae\xab\xa2\x11@\x09\xbb~N\xc4S\xe5\xc7\x04\x88\
-\xae\xeb\x7f\xe3e\xf8\xfa\xfa\xfa\xfc\xa4\xcc\xf8\xdf\x8fu\
-\x15\x0a\x85\xbd\xc0\xde\xb1\x1f\xe7{\x8c\x80\x10\x02\xa5P\
-y\x89\xa6ab+\x0e\xaa\xaa\xd0\xa2\xae\xe2\xefV\xde\
-JM\xa0\x9e\x0f|\xef|n\xbb\xeaV~\xb1\xfe\xfb\
-\x13\xe8s\xdb\xb1Y0\xe94\x92ST\x06r\xdd\x04\
-\xd5\xd3QP0\xcd2\xaeU\x89\x832\x99\x0cO?\
-\xfd\xb4\xef\x96\x1e\xe9R\x14\x85\x07\x1ex\x80\xe1\xe1a\
-\x84\x10<\xfe\xf8\xe3\xc4\xe3q:;;innf\
-\xcb\x96-\xcc\x9a5\x0b\xc7q\xd8\xb7o\x1f\xcd\xcd\xcd\
-ttt\x1c\x1b\x97%\xa5Tc\xb1\x18{\xf6\xecA\
-\x08A\xf4|\x9d\x15\x17\xd5 \x01#'I\xee5\x18\
-m\xb7\xc8t\x98\x98\x85C\xf9\x90\x9a\x9a\x9a\x11\xe0}\
-G[\xa6\xfa\xd3\x9f\xfe\x94B\xa1\xc0\xe7?\xffy\xbf\
-0\xc1RM\x84\x90\x9c<\xe5l~\xd7\xfe\x00\xa9\xce\
-\x06\xaeX\xf8\xb7\xcc\xa8Y\x84\xedT\xaa`<\x09\xe9\
-\xee\xee\xe6k\xff\xfb\xbb\x95\xc4V)\xc5\xc6\x9f\xec\xe2\
-\xc0 dSy\x8f\x02\x92\x8a\xa2\x08\xaf\x8e\xea\x9dv\
-\xed\xdb\xd9U\x8f]\x9e?\x7f>]]]\x8c\x8c\x8c\
-x\xcf\xce\xc9'\x9f\xcc\xe6\xcd\x9b\x19\x19\x19a\xd1\xa2\
-E\xa4R)FGG\xd14\xed\xd8$\xc4\x8b\xaa=\
-\xef\xc9\xd9\xa9\xf1fG\x96|\xbf\x83U\x94(\x9e\xf1\
-RUTU\xfa\xb9\x91@ \xe0\x0e\x0c\x0c\x1cU\xd3\
-\xca\xbcy\xf3hnnftt\x94\xe6\xe6\xe6J\x85\
-\xbde\xe2\xe0\x00\x02M\x09`K\x0b\xdb\xb1\x18H\x0f\
-\xd3\x95\x0e\xa3\x09\xdd\x8f_4M\x03\xcd\xa1\xa4\xa6p\
-\xb2\x1a\x8a\xd4\xc9\xe6\xb2\xc4\xf48\xb9\x5c\x07\x8a\xa2\xa0\
-\xeb\xba(\x14\x0a;7m\xda\xf4OB\x08UQ\x94\
-#.\x91TU\x95\xaf|\xe5+\xcc\x9f?\x9f\xcd\x9b\
-7\xa3\xeb:\x1d\x1d\x1d\xb8\xae\xcb\xab\xaf\xbe\x8a\xa6i\
-$\x93I\xda\xdb\xdb\xc7\x9b\x00\xa4\x945\xc7\x22!H\
-)\xf9\xd1\x8f~\xc4\xacY\xb3\xb8\xf7\xde{+e\x93\
-sJ~\x92\xaaX,\x22\xa5d\xd2\xa4Ituu\
-\x91\xc9d\x8e\xb8:dB\x85y[\x1b/\xbd\xf4\x12\
----\x1c8p\x80x<^I\xc3b\xa3k!\
-R\xc6 \xd3\xa7\xcc\xa3~Z\x1d\x9bz\xba\xa9\x8dL\
-\x1e\x8b\xba\x0f\xb9\xc0z\x5cR\xf7\xfe\x01F\x9e\xae\xc3\
-\xe8\xad\xd0+\x8e\xe3\xf8\xe5;c\xbf'\x8b\xc5\xe2\xf3\
-Gs\x8fc\x84\xab\xab\xeb\xba\xb2s\xe7\xceJ\x0b\x85\
-\x00UU\x90\x12b\x91\x18\x96kU\x1c,\x81\x1f\xab\
-\x8d\xd5x-8&\x09\x997o\x1e\xb3g\xcf\xe6\x84\
-\x13N`\xd9\xb2el\xdd\xba\x95e\xcb\x96\xf1\xe4\x93\
-Or\xf1\xc5\x17\xb3{\xf7n6l\xd8\xc0\x99g\x9e\
-Iss3\xcf>\xfb\xec\x9f\xa4\xc7\xdfiE\x22\x11\
-\xbe\xf5\xado!\x84`hh\xa8R\x01h\x98\xd8\xaa\
-\xcb\x86\xff\x1ed\x93\xf9U\xe65.\xc1\x95.;\xfa\
-6\xd1\xfah\x1b\x1d#\xbd\x14\x86\x0e\xbd,MSY\
-\xf7\xb5a\x8c\xd1Q\x9c\x92d\xc6\x8c\x19\xe8\xba\xce\xd1\
-\xaa\xa8\xb7\xf1\x0c\x87v\xee\xdcy\xf1\xacY\xb3^(\
-\x95J\xb8*L\xbd!\xca\xc9\xcbc\xd8\x8eCSx\
-\x1e\xc3F;\x8e\xe1r\xf0\xd5\x12\xfb\x9e\xc8\xa3\xa8\x15\
-\xa7'\xe2\xf9\xeaG\x0bHgg'\xbf\xfc\xe5/9\
-\xe5\x94Sx\xe5\x95W\xc8\xe5r\xf4\xf4\xf4`\x18\x06\
-O>\xf9\xa4_\x99\xf1\x9b\xdf\xfc\x86@ \xe0\xa7>\
-\x8fr\x8d\x0e\x0d\x0d}C\xd7uk\xec\xc1?\x98J\
-\xa5f\xe4\xf3y,S2+<\x83\x193\xa6W\xa4\
-T\x1a,\xbb~\x16U\x912\x0d\xc3'c\x0d\x06q\
-F+i'\xa1HP$L\x83\x5c.\xc7\xc8\xc8\x08\
-\xd1h\x94x<\xcei\xa7\x9d\xc6\xcb/\xbf|\x5c\x1c\
-\x12?\xcd+\xa1\xd4j\xb3c\x7f\x8e|\xaf\x83ml\
-\xc4.J\xecr\xa5?Q\x0fh\xbe#p\xac\xd4I\
-4\x1a\x8d\xf2\xf4\xd3O\xf3\xc4\xe3O\x1c\xf2F\x84\xc7\
-I)~O\x8bP*\x89\xac\xea\xeaji\xdb\xf6\xd1\
-\xea\xac\x91\xde\xde\xde\xff\xed\xfdP__\xbf\x5cQ\x94\
-\x19\xaa\xa2\x80\x03\xae\xe3\x92\xcf\xe7\x11\xc0f\xab\x8dK\
-Z\xa2\xb8J\x8e\xe0\xd4\x22\x8a,\xa1j\x0avZ\xa7\
-\xbc/F~[\xd4g\x01\xbc\xea\xc1|>_\xc9\xe5\
-\x8b\xe3\xd31gY\x16\xb7\xdcr\x0b\x00/\xae}\x11\
-QV\xd0\xb4\x02B\x17\x18\xba\x81\xac\x96~l\x94H\
-$\x0e+k\xa8\xbd\x83A\xaf\xf7\x92\xf9\xae\x0a\x93\xe6\
-\x05\xd0u\x81\xb4u\xe6N^HGj\x07(PN\
-9\xa4\xbb|\x1d.l\xdb\xee\xe0\xf8,%\x10\x080\
-}\xe1\xc2JF\xcf\x1a\xa3\xd6\xbd\x88X\x11\xac\xac\xbe\
-\x85\xf7\x9d~-;\x86_\xe6\x85-/\xa15\x0f\xd3\
-\xd67\xe0\x13\x85^\xc2\xca\x8b\x05\xd6\xaf_\xef\xf1U\
-\xc7\xbc\xce>\xfbl.\xb8\xe0\x02\xe6\xcc\x99C\xa1P\
-\xa0\xb7\xb7\x97\x8b/\xbe\x98\xc7\x1f\x7f\x9c\xf3\xce;\x8f\
-b\xb1\xc8\xab\xaf\xbe\xca\xfc\xf9\xf3\x89\xc5b<\xf5\xd4\
-S~\x09\xeeQ\x01\xa2(\x8a\xa8\xaf\xaf\xa7\x90/`\
-E$K?RGu\x8d\x86t%\xc9\xb6~\xea\xf6\
-U1\xbc\xdd\xc0\x1au\x88\xc5\x82\xbe'144\xf4\
-\xe6\xf1x`\xd7u\xb9\xfd\xf6\xdb\xa9\xae\xae\xe6\x8a+\
-\xae\xe0\xa2\x8b.\xaa\xe4 $\x10\x82L\xba\xc4eg\
-\x5c\xcf-\xbf<\x93\x9f\xff\xcd.N\x08-%\xe1\xec\
-g\xf7\xfa;0\x0c\xcd\x0fZ\xcb\xe52\xd1h\x94`\
-0xX\xae\xe7\xe1\xaem\xdb\xb61u\xeaT\x06\x06\
-\x06PU\x95\xda\xdaZv\xec\xd8\x81\x10\x82\x8e\x8e\x0e\
-\xbf\x16x\xe7\xce\x9d\xac\x5c\xb9\xf2\xd8\xe9w\x8f{)\
-\x95K\xe8\x8e\xce\x9bw\xa7\x91\x16X\xc5C9t\xa1\
-L\xd4\x8dGB\x9b\x1c\xce2M\x93\xfa\xfaz\xbf\xe2\
-\xdc\xb2\xacJ'o\x08\x0c\xc3%\x14\x0c\xe0R\xa9?\
-\xeb\x1e:\xc8\xc6\xfcc(\xa8\x13\x92G\x1e\xf7\xd4\xd6\
-\xd66\xb7X,\x8e\x00\xb2\xa1\xa1\xc18\x1e6\xe4\xea\
-\xab\xafF\xd3\xb4?HV\xb5\xb7\xb7\xfb\xc4\xa2\x94\x92\
-_\xfc\xe2\x17\x95\xf7u\xac\xf4\xfb%\x97\x5c\xc2\x87>\
-\xf4!\x5c\xd7\xe5\xc9'\x9f\xa4\xab\xab\x8bh4\xca\xc1\
-\x83\x07\x89\xc5bTUUq\xe0\xc0\x01r\xb9\x1c\x8d\
-\x8d\x8d\xf4\xf4\xf4\x1c\xb7\x1d(\x84\xe0\x87?\xfc!\xcb\
-\x96-\xe3?\xfe\xe3?\x0e\x05\x7f\x08\xa4\x0b\xf1x\x88\
-d&MM\xa0\xbe\xe2VJ\x9b\x80\x88 ]\x89e\
-\xd9~\xad\x98W\xd6\xa9\xebz\xceu\xdd\x0cpD\xfc\
-\xd5\x1f\x91^s|\xbe\xc7\x09@u\x5c\xc5q]&\
-\x87gPr\xd3\x14\xac,BH\x8c\xac\x8b[\x92~\
-\xf6\xf0\xa8\x01\x19k\xc0\xa4\xb5\xb5\x95\x1bn\xb8\x81m\
-\xdb\xb6Q*\x95\xa8\xab\xabc\xd9\xb2el\xdc\xb8\x91\
-`0H8\x1c&\x93\xc9\x1c\xf7\xb6f)\xa5[U\
-U%w\xec\xd8Q)Y\xf0JP%H!\x89E\
-\xc2<\xbe\xfb~\xbeu\xe5o\xf8\xcd\xfe\x87x\xa9\xe3\
-e\xce:\xe9t^s7b\x18\xa6\xcf\xe8zT\x8c\
-m\xdb\xb3\xea\xeb\xeb\x03\xa3\xa3\xa3=\xc7zo\xb6m\
-\xb7\x09!*\xc5\x82\x08F\x96H\xfe\xee\xf6f$.\
-Q3BP\x0frp\xb8\x80U\x90\xbc~W\x0a\xe9\
-T4\xce1\xb9\xbdB\x08\xbe\xf9\xcdor\xfb\xed\xb7\
-\xf3\xc9O~\x92\xb6\xb66\x5c\xd7\x9d\xd0_8\xd6\x9f\
-\x8d\x94\x92\x9e\x9e\x9e\xe3\x0aH*\x95\xba\xe8\xf9\xe7\x9f\
-\xa7\xa5\xa5\xa5}\xce\x9c9\xb3\xb3\xd9l\xa5nX(\
-\x14j$%3\xca~\xf9\x1c\xdfyVg\xd5\xe9\xa7\
-\x90Pv\xf0\xcc\xbe]\x0c\xb5\xe5H\xa5*\x01k(\
-\x14\xa2\xa5\xa5\x85R\xa9\xc4\xb5\xd7^\xfbz[[\xdb\
-\x86u\xeb\xd6\xad<\x1e\x0e\x87\xef\xfa\x0a\x85\xba\x83\x92\
-}O\x15\x18\xdan\x90\xef\xdb8A5\xa9B\x03\x8d\
-\xb7\xcd\x9f\x1c\xb1\x0d\x89\xc7\xe3\xdcw\xdf}~\xc2\xc8\
-+4\x00\xd05\x1d];\xe4\x0a{\xe5\xa3\xfb\xf7\xef\
-\x9fq<\xed\x88W-\xef\xbd\x00\x81@5\x5c\xb40\
-\xe4{\xe1\xf5\xce\x9f\xf3\xe4O~LyDb\x95\x5c\
-\xcai\xd7\x8f\x85TU%\x9dN\x13\x0a\x85\x18\x19\x19\
-9\xa2^\x8d\xc3!\x18/\xbc\xf0Bn\xbc\xf1F\xbe\
-\xf5\xado\xa1\xf6\xa9\x10\xcc\xd18\x1b\xbf\x7f\xbf\x5c.\
-SUUE*\x95\xc2\xeb\x8b?j@b\xb1\x98\xdc\
-\xb4iS\xa5\x92#\x06\x0b\xcf\x8f\xa1\x07\x04J\xa9\x9e\
-\x0b\x16_\xca\xef:\x1fA\x0b\xa8\x8c\xee3\x19\xd8\x5c\
-\xf6\x12NR\xd7\xf5)\xc7\x13\x10\xd7u\x1d/i\xa5\
-\xaa*\x8b\x17/\xa6\xb3\xbd\x83\xd7\xfe\xa9\x5c\xd9\x1b\x0a\
-\xa0T(\x12\xe1\xba\x84B\xd2\xa7*\xbc\x11\x18c=\
-\x7f\xc7\xb5\x91\xb4X,\xf2\xe9O\x7f\x9aT*\xc5'\
-?\xf9I\x1ez\xe8!N_y:\xdd\xdd\xdd\xcc\x9b\
-7\x8f\xdf\xfe\xf6\xb7\xac\x5c\xb9\x12]\xd7\xc9f\xb3\xec\
-\xd8\xb1\xc3\xaf\x9a?*@BcOf\xdb6\xb2\xda\
-e\xc695h\x08\xac\xb2\xc1\xeb#?C\xb5\xc3$\
-Z\x0d\x92\xfb+\xc1\xcf\x98\xdb+\x86\x87\x87\x8f\xc9\xaa\
-\xc7\xe3\xf1\x96\xb9s\xe7\x1e\x08\x04\x02\x15OOQq\
-\x84M\xa9T\xe2\xdb\xdf\xfe6MMM$\x12\x09~\
-\xf7\xbb\xdf\xf9\x05\x04\x00###L\x9d:\x95d2\
-\xc9\xc8\xc8\x08\xaa\xaa\x92L&\x09\x85B\x94\xcbe\x02\
-\x81\xc0q\x05$\x14\x0a\xb1c\xc7\x0ef\xcf\x9e\xcd\x0b\
-/\xbc\xe0\xf7\xd0\x8c\x8e\x8e\xfa\x95\x90\x83\x83\x83\xc4\xe3\
-q\xbfx\xf0\x9dX\x8cw\xb4!\x9e\x1b[\x9d\x83\x0d\
-wd\xdf2\xaa\xa8\xa2F\x82\x11}\x82\x18\x1f\x87\x9d\
-\x17\x98={6\xb6m\xa3\x0a\x95Vu?g\xdd\x10\
-d\xfd\x7f8\xbe+<o\xde<\x1e{\xec1\x9a\x9b\
-\x9b\xa9\xad\xade\xde\xbcy\xdcs\xcf=h\x9a\xc6\xc2\
-\x85\x0b\xd1u\x9d_\xff\xfa\xd7~V\xd0\xab^?\x9e\
-\x80\x84\xc3a\xbe\xfa\xd5\xafNPC\xad\xad\xad\x00\xec\
-\xdf\xbf\xdf\xa7\xe8\xc7\xab\xdec\x02DJ\xc9?\xfe\xe3\
-?2w\xee\x5cjkky\xe2\x89'8x\xf0 \
-\x9a\xa6\xf9\x85\xd4s\xe7\xce\xa5\xbd\xbd\x9dD\x22As\
-s3\x07\x0e\x1c8.\xee\xae\xd7h\xa3\x09\x95L<\
-\x03r2\x91H\x84\xaf\x7f\xfd\xeb\x9cz\xea\xa9~\xed\
-\x97\xc7$\xe8\xbaN\xb1Xd\xd7\xae]~O\xbc\xe7\
-\xf7\x8f\xa7,\x8e\x17 \xf1x\xfc\x1b^@\x08 \x15\
-\x89\xa6\x09\x5c\x17\xa2\xa1(\x05#Wi\x10\x12\xe0\xda\
-\x87\x18\xdfw\xba\xbe\xf6N\x5c\xcd\xfc\xf9\xf3\xc9\xe5r\
-\x5cz\xe9\xa5\xfc\xfe\xf7\xbfg\xce\x9c9\xd4\xd7\xd73\
-s\xe6L\x1ez\xe8!t]g\xd2\xa4Ix\xcd\xa0\
-\xc7\xc3\xcb\x1a?\xa1GR)B(\x17%\xf9\xb4A\
-DSY\xbb\xb6R\xdd\xa9\xabA\x14\xadR#\xe65\
-\x00yv\xc2\x8b\xc8\xbd\xder/MkY\xd6\xa4P\
-(t\x9d\x10\x22\x00\x88\xba\xba\xbaW\xfb\xfa\xfa\xba\x8e\
-\xc2\xaeM\xaf\xaf\xaf\xaf\xd8\x04E\xa0\x9d\xafs\xe9\xb5\
-\x93(\x96\x0d.;\xf1f\xb6\x8c>Eb(I\xae\
-\xdfa\xc37\x93>\xcb\x1c\x8dF\x87\x8f\x1a\x90`0\
-\xc8\xbd\xf7\xde\xcb\xe7>\xf79>\xf6\xb1\x8f\xd1\xdf\xdf\
-\xef\x8b\xbd7\xdb$\x95JaY\x16\xa5R\xc9\xcf\x85\
-\xc8\xb1\xc8\xf0\xad\x0d4G\x0a\x88a\x188(\xa8\xaa\
-Bo\xa7\xc1\xdd\xf7~\x95o<\xfb/|\xe1\xfc/\
-\x13\x8f\xc4\xf9\x9f\xad_\xa4\xfd79\x8c\x11\xc5\xaf\xec\
-8\xe1\x84\x13hlld\xfb\xf6\xed\xd45Uq\xc2\
-\xccF\x96OZ\x86\xea\xea\x15\x07@0G\x22\x1f\xf3\
-\xd2\xd0?\xfc\xe1\x0f\xff\x06\xe8:\x8a{\x94\xe3U\xb4\
-\x18\x81\xe1]e\x12{-\xbe\xfa\xdd{I\xee\xb3p\
-M\x89\xa2\x0b\x14M\xf15\x8e\x10B9&\x1b\x92H\
-$\xb8\xfd\xf6\xdb\x0f\xeb&\xbd\x1eC!\xc4\xa2\xa6C\
-\x9e\x9f\xf6\x00\x00\x16VIDAT\xa6\xa6S\x06\x06\
-\x06\xb6\x1dC\xe0U\x01]*\xa8B\x05\x14\x96.;\
-\x85\x86\xb6*\x96\xaf8\x8d)\xb5M\xac)\xa9Tm\
-\x8c\xa0\xe4\x85\xaf\xd3g\xcc\x98\xe1y\x88L:\xdd\xa5\
-\xf9\xec4\xd2M\xe3\x00\xc6@\x00\xa3-B\xb93\x82\
-\x10\x15\xdeMU\xd5\xa3v@TUe\xe1\xc2\x85\x9c\
-t\xd2Il\xd8\xb0\x81\x815\x15\xa3\x1ep\x1c&7\
-\xba~\xac\xe6mbo\xb0\xdbQ\x032<<\xdc\xe5\
-\xba\xee\x5c\xaf\x80\xa0\xe9\xac0\x91\x88\x82\xb4u\xdew\
-\xd2-<\xb3\xef\x87\xd8\x18\xd8\x86\xe4\xc0\xef\x8b~\x0a\
-\xb5\xaa\xaa*R,\x16\xe3G\xf2pS\xa6Ly_\
-\xb1X\xbc\x10p\xa5\x94\xf1\xce\xce\xce\x8a\xee\x97\x82\xb2\
-a2\xd0S\xe2\xab\x89o\xb2\xa7m\x98;\xb6\xfd+\
-\xb1P5\x1b\x0e\x1e\xc4\xee\x8b\xa2XA\x7f\x07\xb6\xb6\
-\xb6\xfami\x81b3w^\xf4#6\xf6\xfe\x96\x1f\
-\xbc\xf8\x9f\xcc\x9cQ\xc7P9Ovw\xa5\xb6W\xd7\
-\xf5c\xa2\xe2\x83\xc1 \xdf\xfc\xe67\x89\xc5b45\
-5\xb1c\xc7\x0e\xce=\xf7\x5c\xd6\xacY\xc3\xca\x95+\
-ikkC\x08\xc1\xacY\xb3\xc8d2\xbc\xf2\xca+\
-\xc7\xc6\xf6Z\x96\xd5\x16\x0c\x06/\xf6\xf2\xd5\xd3/\x09\
-\x13\x8fk\xe4\xfam~3p\x1f\xb6\x22(\x0c8\xa4\
-\xbb\x0f\x19M]\xd7}7\xf4\x08I\xc4[\xaf\xbb\xee\
-\xba\xf3\xa5\x94\xb8H2U\xa34M\x0f\xe0f\xbc\xfa\
-+\x9dt\x22\xc7\xa9\x0d\xe7`\x16m\x92\xc5$\xa77\
-]\xc9\xb3[\x9f!\x18t|\x09U\x14\x05\xe9J\xa4\
-%\xb8v\xf9\x87\xf8\xef\x0d\xff\xca\xf2\xd8\x87X\xd9p\
-#+\x17,\xe0;\xad_\x99\xd0\xfb~\xb4\x80H)\
-\x9d\xf1\x05\xe5\x9e\x93\xe3\xb9\xd9^\xc7Yww7\x81\
-@\x80\xda\xdaZ\x7f\x9c\xd3\xb1\x90\x8b\x0a@uu5\
-\xb6m\xb3\xe3kE\xac\x9cDh \x14\x10\xaaW\x81\
-\xa1\xa2i\x87\x22\xe3\xa3\x1c\xab\xa4'\x93I\x5c\xd7%\
-c\x17\x99sE\x06[\xad\xa8})ltM\x85\xa4\
-\x82q J\xfe\x8d\xb1\xe10c\xde\xd4\xf8\x12\xa0H\
-8L2\x98\xe3\xcc\x8fE8\xff\xfc\x0b\xf8\xd1\xce\xe7\
-\x18J\x8d\xb0\xb7\x7f'\xc5\x9a\xed\xa8Tjl\x85z\
-t\xe3\x93\x00\x1a\x1b\x1bO\x94R\xae\x08\x85B\x5cs\
-\xcd5\xc4b1\x7f\x13n\xdd\xba\x15EQ\xd8\xb3g\
-\x8f_\xf4100\xe0\x17\x18\x1e+ \x9c|\xf2\xc9\
-|\xe9K_\xc2\xb6m\x1e~\xf8a\x0e\x1c80a\
-\x8eG<\x1egpp\xd0\x8fF\xbd\xc14G\x9b\x81\
-s]\x17\xcb\xb1Q\x84B\xba'\xcc#\x7f\xff;\xfa\
-\x0b\xfb\xb9\xe3\xb7\x7f\xc7\xec\xc6yt\x96\xdb0\xca!\
-\x14\xfd\xd0D7\xdf\xf5\xf4\x8a\xf6\x14\x85@@\xc7\xb2\
-\x0c4%\x88\xaah\x04\xb4 !\xadB\x85\x1b\xa6\x81\
-\xa2\x8a\xa3\x9e\xc7U*\x95Z\x9a\x9b\x9b\xc3\x85B\x81\
-\xaa\xaa*\x9f2\x1a\xbf\xfeX\xb1\xa0\x170\x1e5 \
-+V\xac`\xf7\xee\xdd\xfc\xf5_\xff5g\x9cq\x06\
-B\x08\x22\x91J\x1b\xb1\x97\x0e-\x16\x8b\x0c\x0f\x0f\xd3\
-\xdc\xdc\xcc\xe0\xe0\xa0o\x97\x8f\xf4A\xbd\xb9\x8d\x16\x15\
-U\xb0z\xd5\xbf\xf2\xf3=_'y\xa0\x9a\x05\xdaU\
-\xdcr\xc6\xdf\xf3\x99\x9e\xf7W\x5c\x5c\xa7\xa2r\x82\xc1\
-\xa0?\xdb\xd1u]\x0c\xd3\xc4*\x18d\xd7,\xe6\x8b\
-\xbf\xfa\x22\x8e\xb4\xd9\xcb\xe3\x94\x0d\x8b\xcc\xcb\x02\xe4\x0c\
-f\xcf\x96 *\xb9\x8a\xcb/\xbf\xfc\x7f\x84\x10\xdf\x07\
-\xd8\xbcys\xc7\xde\xbd{\x97\x1c\xae'\x98N\xa7+\
-\x1d\xc4\x01\xb8\xe4\xdf\x1aPT\x01\xa84\xd7\x9f@\x7f\
-\xea\x00\xa3\xfbL\x0e\xbcX$\xd5^\x91\xe0\xaa\xaa*\
-\xf2\xf9\xfc\xfd\xc7\x14\x18\xfe\xfc\xe7?\xe7\x03\x1f\xf8\x00\
-w\xdf}7\xeb\xd7\xaf\xf7\xfd\xfd|>\xef\xd3%\xa9\
-TjB\xaaTJIcc\xe3\x97\x14E\xb9\xa5\xaf\
-\xaf\xef\xc0\x91J\x88\x83\x83\x22U\xa6\xd4Ma\xff@\
-\x91\xa2\x05\x1d\xc3\xfbyr\xef}\xd8\xb6\x85eUt\
-\xa9i\x9a\x04\x83AN=\xf5T\xf6\xee\xddK\x22\x91\
- \x9dNc\xba&V\xd9\xc60*S\x91v\xd7n\
-\xe6\x9ckc8\xb9\xca\x1cE7\x13\xc4\xc9j8\x19\
-\x0dk \x18@\xfa3\x15\x83G`C\xd0\xf5J=\
-\x98\xee*\x0cl6)\x0e;\x14\x86\x1c^\x1dHP\
-N\xb9\x95\xba5M\xf8\xb5\x08c6\xcb>&\x1b\xe2\
-\xba.\x0f<\xf0\xc0\xa1\x1b\xf1\x02M\x01\x99t\x06\xcf\
-\xad\x16\xa2\xc2\xdbxc\xfd\xe6\xcc\x99sQ&\x93\xa9\
-\x07\xfe( \xf3\xe6\xcd{\x8f\xae\xebBQ\x14gx\
-x8V.U&{Z\x8aM\xbe?\xc0\xae]\xbb\
-H\xe4\x0a\xa4\x07l\xb2\x89,\xa3\x07\x8b\xe4\x07-L\
-K\xa2\xc8\x0a\x80\x86a\xd0\xdc\xdc\xcc\x8e\x1d;P\x94\
-J\xeb\xb4#\x0fM\x1e2\x5c\x8bp-(\x8e\xc6\xb4\
-\xfa\x05\xc4gT\xb1sp\x03u\x91\xc9d\xe5\x10\x03\
-\x0f6\xe0\x14\x0e\xa9\xbc#I/WUU\xb1z\xf5\
-j\xf6\xec\xd9\xc3\x81}\x07\x08\x18eT\xc7!V\xef\
-b\xd7\xd8\xfe\x98\x0e/n\xf3\xbc\xbfc\x89C\xfe\xfb\
-\xe0\xc1\x83\x17\xdb\xb6=S\x08A1&9\xf5\xf2j\
-\xf4\x80\xa00R\xc5\xfb\xcf\xb8\x9eg\xf6\xfd\x00M\xd5\
-\x19\xdan0\xb8\xb5\x84P\x84?\xed\xe7\x1d\x1e\xb0\xe1\
-\xb4\xd3N\xdb\xac\xaa\xaa\x10B \x91P[\x82l\x10\
-\xe1\xa8\xb0\x11\x9e\xd8\xf8\xd4!\xde\x88\x1av\x1c\x18d\
-\xf4`\x0cG\xe6\xb0M\xe9\x1bs\xaf\x16\xcc\x9b\xec\xe6\
-\x9a\xae\xdfjmI\x07EU\xe8\xdeo\xf3\x95[\xbf\
-\xc2\x0f\xd6~\x97KZn\xe1\x8a%\x1f\xe4S\xcf_\
-\x80eZ\xd8\xa6sD\x80xi\xd9o\x7f\xfb\xdb$\
-\x12\x09n\xbe\xf9f\x9e{\xee9\xbfr\xb1\xbd\xbd\x9d\
-e\xcb\x96\x11\x0e\x87\xd9\xb6m\x1b\xdb\xb6mc\xe9\xd2\
-\xa5l\xd8\xb0\xe1\x1d\xbf\xfbO\x02\x92\xcb\xe5\xb667\
-7\x0f\x1b\x861S\x08\x81\xa1;\xb4\x9cW\x8d\x9d\x92\
-\xa4;\x0c\x1e\xfd\xed\x03\x14\x07\x04V\xd1\xa2\x9c\x92\x84\
-\xc2!\xdf\xf5}\xa7\xf60@/\x97\xcb\xc2\xb6m\x10\
-\xb05\xb2\x8b\xf7\x9e_\x87+]\x1c\xc3E\xb1\x83H\
-K\xc1\xc9\xab\xe4^\xab\xc1)\xaa>\xb1\x98L&\xfd\
-\xe0\xd1\xa3G\x5c\xd7\xa5\xb3\xb3S\xbe\xf1\xc6\x1b\xe2\xd1\
-G\x1fe\xdb\xb6m\x15\xc7C:\xa8\x9a\xc2\x09\xd5K\
-8\x98\xdf\xcdH\xf9 \xff\xeb\xc4\xdb\x09j!B\xa1\
- \x96cc\x99\xbe\x1azGDjjj>q\xde\
-y\xe7}\xa3\xb5\xb5\x95G\x1ey\x84/\x7f\xf9\xcb\xf4\
-\xf5\xf5\xb1w\xef^r\xb9\x9cO\xd3\xac]\xbb\x96\x99\
-3g\xd2\xd3\xd3\x83\xe38\x8c\x8e\x8e\x1e\x9f\xc1\x01\x95\
-\x0d!8\xe9\xa4\x93\xe8\xee\xeaf\xe3\xe7\xcaH{\xcc\
-!\x16\x1a\x08\x15\xe98\x84B\xba\xffr\xbc\x12\xfcw\
-\xba\x01\xbf<\x07I\xa0\xae\xd2\xd9t\xd6\xa4\x0f\xd32\
-\xb9\x85\xa7;\xbe\xc7\xcc\xaaS\xd8\x9a\xfa\x0d\xf6\xc60\
-\xb6u\xa8\x8ad|\x1bD\xa1P\xb8c\xff\xfe\xfd\xff\
->i\xd2\xa4\x81\x91\x91\x91\xc6\xb5k\xd7\xb2h\xd1\x22\
-6n\xdcX\xe9\xc8R]\x92\xbf/\xd3;u\x90{\
-6?@2\x97\xe0\x0b\xbf\xfb\x12\xaa\xa2\xd2\x9d\x05+\
-\x7fH2&O\x9e|\xc2\xb4i\xd3^\x05T\xc7q\
-\xd8\xb9s\xe7u\xc9d\xb2\xe7-lD\xad\xa2(\x9a\
-\x94\x92M\x9b6q\xd1E\x17\xf9\xe4\xe6[\xd7\xfe\xfd\
-\xfb}\x82s\xeb\xd6\xad\xc4\xe3\xf1c\x07\xc4\xb2,n\
-\xbd\xf5V\xce;\xef<\x0c\xc3\xe0\xb1\xc7\x1e\xf3\x07A\
-z\x9e\xd6\x9c9s\xd8\xbbw\xafO\x0d\x0c\x0c\x0cx\
-7\xb9p\xda\xb4i\xc9\xde\xde\xde\xb7\xe3\x8a\x1c\x8f\xaf\
-\x92\x02\x14E\xd0\xbd\xcf\xe6\xdb\x7fu\x13\xff\xf0\xe3+\
-\xf8\xe2\xc5\xdf'\x1en`t{'\x83\xd6\x08\x86\xe1\
-\xf8\x80{\xc4\xe1\xb8*I\xa9\xaa*\xb7\xdez+\x9f\
-\xff\xfc\xe7\xb9\xff\xfe\xfb\xfd\x09<\xb6p\xd1\x8a\x1a\xb1\
-\x13\xaa(e,\x0a\x96`d\xd9V\xe2\xb1\x10\x93F\
-\xc2\xd8\xf5A\xdc\xb2\x8a4\x14\xa4\xa9\x84\x91\xe2L/\
-\xf7\xfd\xe6\x9bo\x86\xdeN]\x8dO[+\xaaJ\xb8\
-J#\x10\x14\x87:\xa6\x04\xd8%\x17\xbb\xa4\xf86W\
-Q\x14J\xa5\x92e\x9af\xe2\x98\x00q\x1c\x87\xd9\xb3\
-g\x93L&9\xe5\x94S\x08\x85B\x9cr\xca)D\
-\xa3Q\xa2\xd1(?\xf9\xc9O\xa8\xa9\xa9\xe1\xcc3\xcf\
-$\x9dN\xb3n\xdd:\x02\x81\x00\xb6m\xf3\x9e\xf7\xbc\
-\xe7\xe1\xf6\xf6\xf6\x1f\xf7\xf6\xf6\xde4F66\x01\xab\
-\x01\xd3u\xdd\xea\xde\xde\xdeJ\x012`Z&\xf9l\
-\x8c;\xef\xfc\x1a=\xedY\x1e\x1fz\x86L!\xc3+\
-}oR\xe8\x0a\x13\xd3k=\xb6\x94\xaa\xaa*r\xb9\
-\xdc\x84\xd1\x17B\x08\xda\xda\xda\xb8\xe9\xa6\x9b\xc8\xe5r\
-TUUUf\x09\x0b\x17\xdc\xb19\xed\xc0\x906\xc2\
-\xc2\x85\x01l\xcb\x84\xa6\x89#\x93\xb2\x9b\xc7*\x1e\x85\
-\xf4\x0b#\xfe\x18\xf1\xd9\xd0\xd00\xd6\x82\x00\xb5\xe7\x04\
-Y|Z\x8c\xa1\xedeF\xf7Y\x8c\xee6q\xed\xb7\
-u\x04\x0e\x0c\x0e\x0e\xdewL\x80D\x22\x11\xee\xbc\xf3\
-N\xce<\xf3L\xee\xb9\xe7\x1e\x8a\xc5\xe2\x84\xec\x97i\
-\x9a\xac]\xbb\x16\xdb\xaed\xf4\x82\xc1\xa0\xff\xef\xde\xf0\
-.o\x8d\x8c\x8c\xac\xba\xf2\xca+?\xefQ\xf4\x19\xb3\
-(kg;B&\xc3\xb8\xc9\x00\xd8\x92=ov2\
-YY\xc0\xa6\x8d\x95\xe9\xdc\xd3\xb4\xe5t\xba\x1d~\x8e\
-:\x12\x89\x10\x0c\x06\xfd\x91G\xe3\xa8\x97{\x86\x87\x87\
-\xab\x84\x10n\xb9\x5c^.\x84\xb8\xb8\x5c.\xe3(.\
-\xa1Px\xac\xe2Q\x80*1M\x87\x0f\xcc\xbc\x93\xee\
-\xec.N\x9a\xb5\x98\xffz\xee>\xec\xbav\x1c'\x82\
-eZ\xa0\xc8\xb7\x8d\xe2\x03\x81\xc0l)e\x9d7H\
-a\xd1\xa2E\x04\x02\x01\xfa^\xebe\xe7\xcb\x12I\x00\
-)ub\x91\x90\xafR\xbd_^a\xc81\xab,\xdb\
-\xb6\x83\x8a\xa2\xf0\xdak\xafU\xf4\xa1d\xc2d\x05!\
-\xc0\xb6\x1c\x84R1\xe6^.\xa2P(L\x18,\xec\
-=\x933nPrva\xa7\x98yF\x14\xcb5q\
-\x1c\x17%\x17\xab\xc4\x07\xde\xec\xdc1\xf7\xd2\x9b\x17,\
-\xa5\xf4\xe9\xfe\xfa\xfaz\x12\x89C\xd2\x9fL&\xbf\xe6\
-\x19\xfb\xc9\x93'\x7fL\xd3\xb4\x8b\xa5\x94\x08\x1b\xb0]\
-\xffP\x00\xcb4H\xec\x93T5W\xf3\xfc\x9b?\xc6\
-:\xf01\x16(g\x12SV\xf0X\xefO\xc9\x8d\x06\
-@Ho\xf0\xd8)\x81@\xa0^UUQ*\x95v\
-_r\xc9%\xed===X\x96%kkk\xc5?\
-\xff\xf3?\xb3x\xf1b\xee\xbd\xf7^\xf6\xed\xdb\xc7\xe2\
-\xc5\x8by\xf3\xcd7iii\xa1\xbf\xbf\x9ft:\xcd\
-\x94)S\x90R\xb2}\xfbv\xd2\xe9\xf4\xb1\x03r\xe0\
-\xc0\x81\xbf\xcb\xe5r\x9b\xd41~\x22\x1fr9\xff\x96\
-:\xcaY\x07\xbb$)\xa5\x5c\xd2]\x16\x99\x036\xee\
-8\xa0&M\x9a\xe4\xd1+U\xb1XlF>\x9f?\
-\x00\xb8\xe3wJ8\xa2a\x14%\x97\xcf\xfc'&\xd7\
-\xd5\xf2\xf3=\xdf V\xd7H\xa2\xf9\x00\xc9\xf5!_\
-\xf7:\x8eC:\x9dFJI8\x1c\xc6\xb2,\x06\x06\
-\x06\xbc\x06\x98\xb7\xf3\x1cTM\xd3X\xbdz5\xf9|\
-\x9e\x1f\xff\xf8\xc7~\x02\xad\xae\x5cEh\xeb\x1c\xee\xda\
-|\x17\xaa2\x87\xdf\x06\x9e \xa4\xebHCe\x8a\xb3\
-\x98\xa6\x13\xbd\x9d&\xb9\xfa\xea\xab\x7f\xeeU\x8e\xacY\
-\xb3f\xaaW\x13l\xdb\xb67\x8f\xd7\x1f6\xe3\xba.\
-\x93'Of\xfa\xf4\xe9\x94\xcbef\xcc\x98\xc1\xbau\
-\xeb\xfcd\xde\xce\x9d;\x8f\x8f\x97eY\xd6\xd6@ \
- =5\x13\x01v\xfe\xc0|Kn]'\xa4\xeb\xa0\
-\x1f\x8ab5M\xc3\xb2,\x1a\x1b\x1b\xffz\xc9\x92%\
-\x97\xbd\xf8\xe2\x8b_\xb5,\xeb\xe4\xbe\xbe\xbeCc\x9d\
-\xde(\xa0\xb5W\xb3\xeb\xc46\xbe\xb1\xf9\x19fN\x99\
-\x89\x1e\x9fB\xdb\xe0N\xf2C\xae_\x1c\xf0\x16\xd1/\
-wtt<4\x96\xf134M{\xe5\xedr)\xef\
-{\xdf\xfb\xa8\xaf\xaf\xe7\xb6\xdbn\xe3\xd1G\x1f\xf5S\
-\xba\xaet)\x9b\x15\xb5\xbb!\xdd\xca{o\x0dO\x18\
-3e\x0d\x070{\xc2\x98\x07\xc389\x8d\xf1\xb3T\
-\xbc*z/\xc6\xb9\xed\xb6\xdb\x08\x06\x83\x94J%\xa4\
-\x94|\xff\xfb\xdf\x9f\xd0\x7f\x22\xa5d\xf7\xee\xdd\xb4\xb6\
-\xb6\x1e6\x89yX\xed\xa7\xae\xeb\xf2\xd1\x8f~\x94s\
-\xce9\x87\x8e\x8e\x0ev\xee\xdcIgg\xa7?\xdb\xc3\
-4MN?\xfdt\xf6\xef\xdf\xcf\x9e={\x98={\
-6\x1d\x1d\x1d~&\xb1\x5c.\xeb\xe7\x9e{\xee\xbf*\
-BaX\x1b\x96\xd3O\x12\xc2\x1c\x0cc\x0f\x07qS\
-:;6\xee\xa5E=\x11g\xc4\xa5wx\x90&m\
-)\xeb\x13\xaf\xfb\xbd\xe0^q\xc0\x18\x91\x98O$\x12\
-\x1f\xfd\x93\x0f\xa5i\xbc\xf2\xca+\xacY\xb3\x86\x91\x91\
-\x11\x8a\xc5\xa2?O\xd7+\x0b\x02(\x0a\x93hm\x0c\
-\x92\xd3\xb8\xfd\x92/\xf1\x8b\xd6\xffd$2\x82=7\
-Kb\xb3E\xea\xe5*T\xad\xd2\xb2}\xd6Yg\xad\
-\xf3\x00)\x95J\x84\xc3\x95\xf3N\x8a\xb9J9\xa9P\
-\x15\x94?^\xd6,\x01\x91J\xa5\xa2\xc7\x05\x10)%\
-\xd7\x5cs\x0d[\xb6la\xd5\xaaU$\x12\x09\x16-\
-Z\xc4\xf6\xed\xdbihh\xa0\xb3\xb3\x93\x9a\x9a\x1a\x16\
-.\x5cH \x10\xa0\xbd\xbd\xdd\x1f\x00\xe9\xbd\x80\xfe\xfe\
-~\x1c)\xa9\xbe>/\xc2\x8bc\x84\x97fA\x91H\
-S\xc1Nk\xb8Y\x9d\xd4\xf3\xb58\x96\x8b\xe6\x1e\xaa\
-.\xf1\x06\xa7\xd5\xd5\xd5M\x985\xffN\x91t\xb1X\
-\xe4\x9cs\xce\xf1\xc1\xf4\xf4w]]\x9d\xff\xbdM=\
-*{\xbf\x5c\x87\xedf\xf8\x9b\xff\xfc\x18\x02\x9d@@\
-E\x1aQ\x14]\x22t\x13\xd5U\xbc\xd1\xb8\xb3\x0c\xc3\
-\xc0\xb6m\xaa\xab\xab+\xc9'\x04\xb5K\x82\xe8\x08\xf2\
-\x03\x0eF\xc6\x9d0\x9c\xc8\x93\x0aM\xd3D6\x9b}\
-\xc3\xb6\xed\xf7\x1e\x17@t]\xe7\xfa\xeb\xaf\xe7\xae\xbb\
-\xee\xe2\xeb_\xff:\xdd\xdd\xdd\x13N\xd2)\x16\x8bt\
-uu\x91\xcb\xe5\xfc)\x9d\xaa\xaa\x92\xcdf\xa9\xad\xad\
-\xc5u]\x7f\xc8\xc0\xc0\x036o(\xde\xb0Ie\x1c\
-eaR\xb4\xdahii\x99\x90\xb7\xf7&\xea|\xf4\
-\xa3\x1f\xe5\xfe\xfb\xef?\xac2#\xc30r\xb6mw\
-{u]B\x88\xe9\xaa\xaa\x0aO\xda\xfd\x89\xa8\x01\x8d\
-\x9aI1,\xcbb\xb4lS}\xe9\x10\xb5\x93td\
-I\xc3\x1c\x0aR\xec\x08@\x22\xeaWNz\xf1G(\
-\x14\xe2\x13\x9f\xf8\x04\xc9d\x92\xed\xdb\xb7W\x1a\x95j\
--d\xfc\x90\xf3\xe1\xfd\xee\x15]\x94J\xa5r\x22\x91\
-H\x1d\x17@\xbc\xb9\x8a_\xf8\xc2\x17\xfe\xe8g\xf2\xf9\
-\xbcO\xcdK)\x19;\xb1\xccg\x81\x87\x86\x86*\x85\
-\xda\x93\xe3\xa8\xaaJ[[\x9b?\xcbw\xf1\xe2\xc5c\
-\xd4G\xd9\xcfq\xd8\xb6\xed\xe7\x0e\xaa\xaa\xaa\xfc\xf9\x86\
-\x87\x03H:\x9d~p\xd3\xa6M\x0fz?O\x9f>\
-\xddRUU;\xf1\xc4\x13\xe9\xee\xee\xf6\x81\xf6^\x98\
-a\x18${Fh^\x7f\x12\xd9R\x89u\xeb\xd6\xa1\
-i\x1a\xcb\x97/\xa7\xa1\xa1\x816\xa5}\xc2\x09:\x17\
-^x!\x93'O\xe63\x9f\xf9\x0c\x8f<\xf2\x08/\
-\xbf\xfc2\x97]v\x19\xbf\xff\xfd\xef\x995k\x16\xc3\
-\xc3\xc3l\xd8\xb0\x81X,\xc6\xa9\xa7\x9e\xcas\xcf=\
-w\xd8\xa4\xe5a\x01\x92J\xa5\xfe*\x9b\xcd~\xa3\xa6\
-\xa6fQ>\x9f\xf7\xcb\xfb\xc7\x1b\xaa\xb7\x1a-\xaf\xc8\
-\xce\x03\xc5\xcbuTUU\x11\x08\x04hjjb\xe6\
-\xcc\x99\x0c\x0c\x0cL8\xbfj\xfc1B\xe3\x8b\x93\xbd\
-\xe1hG\x93\xfc\x92R\xb2n\xdd:\x86\x86\x86X\xbd\
-z\xb5\x1fKyR\xe8yJ\xb6m\x93N\xa79\xeb\
-\xac\xb3\x88\xc5b$\x93I2\x99\xcc\xf8S\xd80M\
-\x93\xbd{\xf7r\xdbm\xb7122\xc2\x8e\x1d;p\
-]\x97\xed\xdb\xb7\xe3\xba.\xfb\xf6\xed\xf3\x9f\xbdP(\
-088xD,\xf2a\x01\x92L&\x7f]WW\
-\xf7\xcf\xcb\x97/g\xf5\xea\xd5tww\xb3y\xf3f\
-\xba\xba\xba\x08\x04\x02~\xe2~\xea\xd4\xa9\xf4\xf5\xf5\x91\
-N\xa7\x994i\x92\xcf~\xfa%=\xe3b\x10\xcb\xb2\
-\xc8\xe7\xf3>M>\xfe@\xb1\xf1\xb3s\xc7^\x5cj\
-``\xe0\xe1\xb1\xff7r4eE\x86a\xf8R\x9b\
-\xcdf\xfd\xef\x1f?t\xdfSK\xa6i\xfa\x07\xd5x\
-\xff\xe6\xfd\xbd\xe38\x8c\x8c\x8c\xb0j\xd5*_\x9dC\
-\xa5\x9b\xca\x1f\xeb1n\x83\xbe\xf1\xc6\x1bG\xd4Bw\
-$\xe7\x87\x88\x8f\x7f\xfc\xe3\x0c\x0e\x0er\xed\xb5\xd7b\
-\xdb6\xb3g\xcf\xa6\xaf\xaf\x0f\xdb\xb6\xa9\xab\xabC\x88\
-J2\xa6\xbd\xbd\x9db\xb1H0\x18\xf4\x87${\xb6\
-\xc0\x03\xc4/\xf3\x19\x03a\xbc$\xa9\xaaJ \x10\xa0\
-\xa5\xa5\xc5\x9b;5\xd2\xd9\xd9\xf9\x89\xf11\xce\xf8\xa0\
-\xf0pT\xee\xc5\x17_\xccE\x17]\xc4\xf0\xf0\xb0\xaf\
-\xb2B\xa1\x90\x9f\x8a\xf6\xd4\xd7x\x06`\xfc\xe1g\xde\
-\xdc\xc9\xb1\x0d:\x81L\x1c_r\xfbv\xd7\x96Rv\
-I)\xfb\x8e7 |\xfa\xd3\x9f\xe6\xa1\x87\x1e\xe2g\
-?\xfb\x19/\xbe\xf8\xe2\x84\xf38\x0c\xc3 \x1a\x8d\xfa\
-e\xf7\xde\x91\x0e\x9ek\xec\xa9\xaf\xf1\xa7\xd5\x8c?\xe9\
-\xcd{!\xc5b\xd1\xaf2\x9c:u*\xe9t\xfa\x0f\
-(\x87#\x01\xc3SYMMM\xec\xde\xbd\xdbW\xb7\
-\x9eZ\x1c\x7f\x14\x85\xf7gOZ\xc7\xd7T\x99\xa6\x89\
-\xae\xeb\xdcq\xc7\x1d\x5cp\xc1\x05\xfc\xfb\xbf\xff\xbb\x97\
-_\xf7YkO\xda\xab\xaa\xaa\xfcA=RJv\xed\
-\xda5\xeb\xb8K\x88\xe7>~\xf0\x83\x1f\x9c\xd0S8\
-\xdevx\x93\x9d=\xfdYUU\xe5\x9f\xc4\xe3\xedJ\
-\x8f#\xf2\xa4\xc5\xf3F<\x8a\xc4\xa3\xab\xa5\x94\x13\x06\
-\x80\x1d\xcbJ\xa7\xd3\xb36o\xde\x8ceY\xf9\xe9\xd3\
-\xa7w\xacZ\xb5\xaa\xf6S\x9f\xfa\x147\xdf|3\xf9\
-|\xde\xef\xb5\xf7\xdcZo\x1c\xdfx\x9a?\x93\xc90\
-{\xf6l\xce=\xf7\x5c\xa2\xd1(\xe7\x9cs\x0e\x1b6\
-l\xe0\x92K.a\xcd\x9a5\x5cy\xe5\x95<\xf9\xe4\
-\x93,\x5c\xb8\x90\xda\xdaZTU\xe5\xb9\xe7\x9e\x9b0\
-\xed\xfax\x03\xf2\x8b\xee\xee\xee\xed\x8a\xa2\xac~\xef{\
-\xdf\x8b\xa2(\xb4\xb7\xb7c\x18\x86?\xef\xdc\xd3\xb75\
-558\x8e\xe3\x0f\x94\x14B\x90J\xa5\xfc\x01\xf5\xe3\
-U\x96W\xd1\xe7}n\xacZ]:\x8e#l\xdb\xa6\
-\xa6\xa6\x86L&\xa3\x1e# ~N\xa3X,\xbaw\
-\xddu\x17\xeb\xd7\xaf\xa7\xba\xba\x9a\x91\x91\x11\x7f\xf7\x8f\
-\xb7g\x1e\xd52>\xd1\x96\xcb\xe5\xd8\xbd{7\x0d\x0d\
-\x0dx\xe7\xffzn\xef\xd6\xad[\xb1m\x9b\x9e\x9e\x1e\
-\x7f\x10\x8d7\x92\xe9\x88\xec\xdd\xe1|\xc8;\xab\x0f\xd0\
-\x96,Ybm\xdd\xba\x95\x9d;w\xd2\xd3\xd3\xc3\x96\
--[X\xb1b\x05?\xf8\xc1\x0f\xb8\xf0\xc2\x0b\xe9\xec\
-\xec$\x18\x0c2\x7f\xfe|:;;y\xf5\xd5W\xc9\
-f\xb3\x0c\x0f\x0f\x13\x8b\xc5\xfcrS\xef\x04\x01)\xa5\
-\xdf\x9f\x18\x8dF\xfd\x03Q\x06\x07\x07\x13\xe5r\xf9\xe5\
-1\xbb\xb4gdd\xe4\x8b\x1c\x87u\xe2\x89'&n\
-\xbc\xf1\xc6\xfaK/\xbd\x94\xcf~\xf6\xb3\x0c\x0c\x0cP\
-*\x95\xfc9\xed\x85B\x81)S\xa6\xf8\x07\x9cy\xe3\
-oUUe\xe6\xcc\x99d2\x19\xff\xb4\x87\xb7s\x1e\
-\xde\x9a\xe6\xb5m\x9b7\xdf|S\x1cW\x09\x19\xa7\xc3\
-\x15\xcb\xb2x\xf8\xe1\x87\xb9\xec\xb2\xcbx\xf4\xd1GI\
-&\x93\xbc\xf0\xc2\x0bH)\x19\x1c\x1cd\xdf\xbe}\x95\
-\xb3\xa5\xba\xbb'd\x10\xbd\xc1/\xe9t\x9a`0\xe8\
-\x0fO\x8eF\xa3\xbe\xd4\x18\x86\xc1\xec\xd9\xb3\xc9d2\
-(\x8a\xb2+\x93\xc9\x5c\xc3q^\xba\xae\xf3\xe4\x93O\
-\xf2\xd4SO\x91\xcf\xe7\x99<y2\x9f\xfd\xecg\xf9\
-\xf4\xa7?\xed\x0fK\xf3F\x8d\xc7\xe3q\x9f6\xff\xfc\
-\xe7?\xcf}\xf7\xdd\xe7\x8f\x05\xf4\xc8NO\x9d\xd7\xd5\
-\xd5\x91\xcf\xe7I\xa5R4662<<\x8ceY\
-}\x8a\xa2\xe4\xff,*\xcb[\xa1P\x88{\xee\xb9\x87\
-\xfb\xee\xbb\xcf\x8f\x13<u\xd3\xdd\xdd\x8d\x10\xc2\x1fv\
-\xe6\xddlUU\x95O\xc5{'-{\xb6\xc6;\xef\
-\xd0\x8b?\xf6\xec\xd9s\x5c\xfb\x00\xdf\xbaFGG_\
-\x09\x87\xc3\xd5c\xf7\xb6\xf2\x1b\xdf\xf8F\xe4\xb5\xd7^\
-\xf3\xef\xcd\xb3a\xe3\x8f\xdep]\x97U\xabV1u\
-\xeaT\x96-[\xc6\xd3O?Muu5[\xb6l\
-\xa1\xb9\xb9\x99\xad[\xb7\xb2r\xe5J\x0a\x85\x02\xed\xed\
-\xed\x1c<x\x90h4Joo\xef\xe5\xdd\xdd\xdd\xdb\
-\x8f\xa4\x0b\xe0H\xad\xa56s\xe6\xcc'\xa3\xd1h@\
-\xd7\xf5\x0bO<\xf1DB\xa1\x10\xaa\xaa\xb2o\xdf>\
-\xbf\x059\x1c\x0e\xfb\xd3\x0dB\xa1\x90\x7f\x1cP&\x93\
-!\x97\xcbM\xe0\xb9\x82\xc1 \x17^x!/\xbf\xfc\
-2\xde\xbcu!\x04\xed\xed\xed\xaf\x0f\x0c\x0c\x9cy<\
-\xc1\x18\xb3G\xfe\xcfs\xe7\xce\xdd{\xed\xb5\xd7\xce\xbb\
-\xf9\xe6\x9b\xb9\xfc\xf2\xcbY\xb6l\x19---<\xf9\
-\xe4\x93\xbej\xfd\x87\x7f\xf8\x07\x1ey\xe4\x11\x0c\xc3\xe0\
-\x86\x1bn`\xd3\xa6M\x8c\x8e\x8e\xfa\xae\xb0\xd7\x93\xa2\
-\xeb\xba\x7f\x0cG0\x18D\xd7u\xba\xbb\xbb\x97\x1d<\
-xp\xcb\x91\xdc\xe3\x91\xf6\x9f\xd9]]]\x97\xb7\xb6\
-\xb6^\x17\x0a\x858\xf3\xcc3\xf9\xc2\x17\xbe@4\x1a\
-\xa5\xb9\xb9\x99\xa9S\xa7RUU\xc5\x8c\x193\xa8\xa9\
-\xa9\xa1\xae\xae\x8eH$\x82\xeb\xba~\xa0\xb5r\xe5J\
-\x02\x81\x00\x0d\x0d\x0d\xc4\xe3q\x82\xc1 \xd1h\x94\xb1\
-\x81\xcdon\xdf\xbe\xfd\x9f\xb6o\xdf\xfe\x19\xe0+\xc7\
-[:\xc6\x831&\xa1\xca\x0b/\xbc\xc0%\x97\x5c\x82\
-\x10\x82{\xee\xb9\xc7?\x9fp\xc3\x86\x0d\x18\x86\xc1\x15\
-W\x5cA\x22\x91@\xd7u~\xf9\xcb_\xd2\xdd\xddM\
-\xa1P\xa0X,N89\xc7s\xedC\xa1\x90\xf4\xcb\
-\x91\x5c\xf7\x88\xdd\xc3\xa3:-Z\xd3\xb4\x80\x10\x82\x07\
-\x1f|\x90\x87\x1ez\xe8\x0f\xfe\xfd\xe0\xc1\x83\x7f\xd49\
-x\xab\x1b\xeb8\x0e\xbf\xfd\xedo\xbdIo\xbbr\xb9\
-\xdc\x7f\x02\xefX\xb6\x7f<V6\x9b\x95\x9e\x8a\x12B\
-\xf0\xfc\xf3\xcfs\xfa\xe9\xa7\xb3c\xc7\x0e6l\xd8@\
-}}=\x0f>\xf8 \x0f>\xf8 w\xdf}\xb7\xef\
-\xba{A\xafw\xc2\x90\x97\xbe\x1eSo\xa2\xad\xad\xed\
-\x5c\xc7q\xf6\xd4\xd5\xd5%\x8e\xf4\x9e\x8e\xca\xc1\x0f\x85\
-B\xb1\xba\xba\xba\xcf\x85B!\x17\xb8*\x1c\x0e/>\
-\x1c\xbd\xefMz\xf0\xa6<{\x996\xcf\xdfO\xa7\xd3\
-kzzz\xde\xcf_~E\x16/^\x5c\xf0\xfaE\
-t]g\xe9\xd2\xa5\xec\xdb\xb7\xcfw\xc9\x0f\xc7}\xf5\
-\xf8\xb1\xed\xdb\xb7\xcf-\x14\x0a\xedGs#\xc7<8\
-\xaa\xb9\xb9\xf9\xe7MMM\xd7\x1e\xce\x5cs\x0f\x14\x8f\
-\xce\xae\xa9\xa9\xa1P(\x14[[[\xa3\xe3\xbe\x8f\xfe\
-\xfe\xfe\xbf4 \xc1\x96\x96\x96m\xf1x\x5c\xe4\xf3\xf9\
-Hcc\xe3\x09RJ\x0a\x85\xc2a\x8f\x90-\x14\x0a\
-\x98\xa6y\x9f\xeb\xbaV\xb9\x5c\xfe\x8f\xa1\xa1\xa1\xd1\xff\
-+\x80\x00\x81\xb1\xef\x09\x86B\xa1\xa5\x87\x1b\xd7xQ\
-{8\x1cNd2\x99]\xfc?\xb2\x82\xc1`m8\
-\x1c\xfeG\xd7u\x9d#`\x08d \x10H\x9e|\xf2\
-\xc9\xff\xf3\xc2\x0b/H\xde]\xef\xaew\xd7\xbb\xeb\xdd\
-\xf5\xeezw\xbd\xbb\xde]\xff\x8f\xad\xff\x03!\xf6p\
-\xa0\xc1\x03\x97\x85\x00\x00\x00\x00IEND\xaeB`\
-\x82\
\x00\x00:y\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -1825,433 +944,7 @@ a\x02S\xa7N\xa5\xa7\xa7\x87\xee\xee\xee2\xb9\xc1\xfe\
\xd1\xf8h|4>\x1a\x1f\x8d\x8f\xc6G\xe3\xa3\xf1\xd1\
8`\xfc\x7f\xa7\x8cK\xc9\xd0\xc3l\x1c\x00\x00\x00\x00\
IEND\xaeB`\x82\
-\x00\x00\x1ax\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00d\x00\x00\x00i\x08\x06\x00\x00\x00\xcc|\x86\x8a\
-\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
-\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
-\x00\x00\x09pHYs\x00\x00\x88&\x00\x00\x88&\x01\
-\xac\x91\x9d\x06\x00\x00\x00\x07tIME\x07\xd9\x03\x03\
-\x0e\x04:\x04\x0e\x03\xc5\x00\x00\x19\xf8IDATx\
-\xda\xed\x9d{tT\xf5\xbd\xe8?\xbf\xbdg\xcfd\x92\
-\x0cy\x12\xc2#\x01J(\x8fJ\x90\xa2\x16k\xc3\xa9\
-\xa0\x02\xf5\xd4.\xbd\xda.[\xee\xa5\x85z\xb4u\xf5\
-\xae\x16\xef\x83\xf6\xf6\x9cs[\xd0z{\xafK\xaf\xbd\
-\xb4\x97\xd5z=*\xb7\xd6\x1e=\xe7\xd4Z\xa1*x\
-\x05\x0fJ\x00Q\x08\xa4\x09\xaf\xc8#\x04\xf2\x9a$3\
-\x99\xcc\xec\xc7\xef\xfe1\xccf\x1e{\x87\x09L\x12p\
-\xe5;k\xafd\xf6\xfe\xfd~\xfb\xf7\xfb\xbe\xbf\xdf\xdf\
-c\x04@eee\x9d\x10b\x07c0\xea\xa0\x00\xaa\
-eY\xda\x18*\xae\x0e\xf0\x00\x85\xa6i\x16\xaa\xaa\x0a\
-\x80\x94\x12\xcb\xb2\xc603B \x84@Q\x94\x14\x82\
-\x94\x1b\x86Q\xe6\xf5z\x01\xc8\xcf\xcfg\xe5\xca\x95c\
-\x98\x1a!\xd8\xbf\x7f?{\xf7\xeeM!\xc8D\xc30\
-*\xd3\x0b\x9a\xa6\x89\xae\xebc\x18\x1bF\xc9\xf0\xf9|\
-\x08!2T\xd6\xf8\x0b\x97\x0dRJ\xfa\xfb\xfbik\
-k\x1b\xc3\xdc0A^^\x1eS\xa6LAJ\x99A\
-\x90\x80eY\x81\xf4\x0a\xc3eK\x84\x10((\x08@\
- \x88\x19&1\xcb@\xf5\x9b\xf1;1\x0f\xaa\xa5\x82\
-\x00\xa1H\x10 \x91\x9f8\x82\xa4\x13\x22\x99 ^!\
-\x84\xe6T0]\x9cr\x01A\xa3\x8f\x93\xfa9\xba\x8d\
-\x10\x032\xc6gn\xc8gvm\x01Iv\x8d\xfe\x1e\
-\x89l\xcf'v\xce\x87\xd5\xee\xc73\x90\x17'\x90\xdd\
-\xb1O6A\x14\xcb\xb2\xd4d\x22X\x96\x95S\x09\x11\
-@\x8f\x19\xa6a\xe0\x04\x1df\x0fB*L\x9d\x9e\xc7\
-\x8a\xa5e\xe4\xe5)\x98&H\x09\xe2\x824\x14\x94\x0a\
-(\xebG\xcc\x09\x83\x02\xb1\x01\x89\xec\xd30z5d\
-\x9f\x86\x19\xf2`\x854\xac\xb0\x07+\xa4\xa2\xe8\x9a-\
-M\xf1K^\x13\x04I\xe09\x9d \xc2I\x12\xdc(\
-x9\x10\xb2\x22\xfck\x7f\x03RJT\xa9R1\xc9\
-\xcb\x17\xbfT\x8a\xb4\xc00$B\x08\x12]\x10q\x1d\
-\x05R \x11`H4U\x81b\x13o\xb1\x09\x0c\x10\
-\xef\xda\x85r\xc0@Hb\x9c\xcf\xc3h\xf7\xa1\xb7\xf9\
-\xf0\x84\xf3mN\x10W\xa9D\x0d&!\xae\x94\xcb\x85\
-\x84\x18\xd2dW\xff\xa1\x0b\x12 \xf0\xe5\x09n\xbb\xab\
-\x0cie\xa9\x16\xed\xe7\xc2\xf1\x96\x04\xfcE\x02\x8a\x07\
-\x10\xb3\x07@\x01=fa\xf6z\xb0z\xbd\x18\xbd*\
-\xb2\xcf\x8b\x19V\x91!\x0fFHA\x89z\x11B\xc6\
-\xc3\xe2Q\x92\xa8\xc1$\xc4\xb5B.\xa4\xe4\xa4~\x0e\
-C\x9a(\x17\xb0X3\xb7\x00E\x11\xc8\x1c1\xae\xdd\
-\x86\x14H\x13\xa4\x09\x1e\xa1\xe0)\x92P\x14\xbd0\x96\
-\xfe\x14\x89\xd2\xa3\x92\x816\x0d\xeb\x9c\x9fH\x9b\x07O\
-w\xbe\xad\xeeFJ\xa2\xb2\x96\x90db\xe4\x82 \xed\
-FO\x8a\x14TN\xf6\x0e\xab]\x16N\xff%K\x94\
-\x94x\xfd\x02\xef\x0c\x1dQ\xa3S\xa2HL\xab\x83X\
-\x8f\x02=^b=*\xf4z1\xc2\x0a\x845b!\
-\x81\x12\xd1\x10jn%\xc9\x0d\xbf\xc3N\x90\x90\x8c\xa4\
-|/,RG= \x03\xc0\x8aK\xa94@\x11\x0a\
-y\x85\x12\x0ac\xe4M\x06I\x04d\xc2\x96\x81e@\
-\xd7\x9fK\x90]y9'HV*+\x97\x0410\
-\xe3\x86\xfa\x02\xf8|\xa3K\x10W\x02\xa5\xcbV\xc2c\
-\x93\xa0\xfa@\xd1\xc0\x90r\xe4\x09\x92K\xef\x8a\xf8x\
-l\xfb\x01\xa0\x88k,\x8c\x10I\x03\x19\x01\x18TB\
-\xc6\xb2\xbe\xc3\x97\xb9\x18\x92\x0d\xc9\xb5\xa4d\xb6%\x87\
-P\xf7\x82Z\x11\xf1zq\xc4H[\xdd\x08.\xc60\
-\xc3J\x90\x1c\x8b\xc8\x90\xbc\xac\x04'\xe4\x82#\x84\x88\
-\x1b\xcdTP\xb2\xaa\xab\xa8\xd0\xd5\xaes\xead\x1f5\
-\x15s\xb8a\xc6MT\x96N`z\xe5\xa7P\x15\xe8\
-\xeco\xe3d\xf0/\xb4\x85>\xe6xw\x03\x8aP\x1d\
-\xde\x953\x0c\xe6\x5cB\x86\x1c\x87\x0c\xb7cz)\xc9\
-x\xfbO\xdd\xf4\xb4\xc3\xab?\xfb\xbf\xcc\x9f>\x1f\x8f\
-\xeaq\xec\xa7)\x0d\xce\xf4\x1e\xe5\xd7{\xff\x96\xf3\xa1\
-\x93\xa8\x8as\xb9DF\xc0\x92V\x5c\xf2\x10Y\xe7\xeb\
-\xe40\xa8@'<+\xd9x\x01Wr]\x0e\xc4\x06\
-,^}\xb1\x0d-V\xc6G\xcf\xec`a\xcdBT\
-Eu\xf5\x92<\x8a\xc6\xd4\xe29l\xb8\xeden\xfd\
-\xd4}\x18\x96\xeeX.\xd4k\xb0\xedO\xedL\xb6\xea\
-\xb8\xbfv-K>\xf5U\xe6\x8c\xff\x5c\xd6\x0c\x92+\
-\x9c\x0c\x86\x97aw{\x11\x82\xf4f\x06k\xd7\xb2\xe0\
-\xf5\x7f\xec$\xe0/\xe5\xfd_\xbe\x89\xdf\xeb\xcf*\xc5\
-\x92\x90\x80\xfbk\xff#\xc5y\x15\xfcc\xc3\xff\xc4\xab\
-\xfa\xec\xe7\xaaG\xd0rd\x80\xe6\xc3=\xdc\xff\xf7\x7f\
-C\xcd\xc4\x99\x00\xb4t\x1f\xe6\xf0\xf9\xf7\xb3\xa0\x88\x95\
-S\xad\xe1\xa4\xae\x06UY\xb9\xf3\xf3\xe3\xaen2\xa7\
-*\x8a;r\x0f\x7f\xd0G\xa4\xdf\xe4\xe7\x0f>b\x13\
-#\x1d\xa2F\x84\xf7\xff\xb2\x1bM\xf8\xb9a\xd6\x02\xbc\
-\x1eo\x0aaV|z\x15M\x1d{i\xee\xfc\xe0\x22\
-AT\xc1\xc9c\x03TV\x94P3q\xa6M@\x04\
-)s\xdaW\xaajs\xee\xf6\xe6B\xe5\x5c\xb6\x1f#\
-\x05\x87?\x0cQ^\x12\xe0\xdf\xdev\xbfc\xa9s\xa1\
-S\xfc\xb7\x9d\xab\xe9\xe9\x0b\xb3\xf5\xe5N\xaa'T\xf1\
-\xde/\xde\xca\x08\xf4\xfe\xcdg\xfe=\x8f\xbd\xb3\xca\xfe\
-\x1e\x09[\xf4\xf5\x98\xdc<oavI\xcda\xca\xed\
-]J\x0b)\x83\x89\x93eYW|%\x5c\xc6\xc4'\
-\xfd{\xe2\xa3\xa8\x82\x86}}t\xf7\x84\xf9\xdf\x8f<\
-\xe1j\x04_\xf8\xf0Q\x22F\x98\xbc|\xc1\xedw\x97\
-p\xf0H\x13w\xfe\xf8\xde\x0c\x04W\x15\xcd\xa4\xa6t\
->\xa6e \x91tw\xe8H$\xd7\xd7\x5c\xe7\xe8\xd2\
-^\xf2\x93#|$.7/Kq2~\xb9\xe4\x06\
-\x91\xf6q\xba'\x10(B\xa1\xf9`?\x15\xe5E,\
-\xb9~\x89\xa3Q\xee\x8e\x9c\xa3\xb1\xbd\x1e\x81@ZP\
-P\xa82s\xf68\xde\xfbp?\xef7\xd6g\xd4Y\
-\xb3\xf0\xa7X\xc4\xd0T\x85sma\xf4\x98\xc1\xbcO\
-\xcd\xc9p\x9f\x84\x14\x5c\xea\x93k7+\xeb\xc00\xd9\
-\x1d\xcb\xdd\x8c\xa1\xc8 Q:t\xb4\xc5\xd0c\xb0\xe2\
-\xe6\xbfr\x8d%\xde9\xf1O\xa8\xc2\x13\xaf\x7f\xa1\x89\
-\x09\x93}\x9c<\x16\xe5\x9d\x8f\xfe\x95EsnJ\x19\
-G\xb1\x7f<M;Kh:v\x8a\xed\xbfx\x99\xfe\
-\xaf\xc7\x983%\x95 \x01_\x09\x9f\xabZ\xce\x80\x11\
-A7#\xb4\x87[\xe9\xe8?\xe3(E\xb9\x8eCF\
-\xc7\xcb\xca\x12\xba\xdau\x84\x80\x053\xe7\xb9\x96i\xee\
-\xfc\x00U\xa4\xba\xbf%e\xf1\xe5\x00\x07\x8e58&\
-\x0d\xe7U\xcd\xa7\xe1/\x1f3\xa9d2%S\xca3\
-\xda,\xcb\x9f\xc8\xaa\x05\x7f\x1bO\xecJ\x8b\xffw\xe2\
-e^9\xf4\xf4\xd5eC\x86#\x0f\x94\xfar\x99q\
-\x85zM\xa4\x94TULtm\xe7tO3B(\
-)\xf5\x0a\x02*RJ\xcev\xb6;\xd6\x99;\xf53\
-Y\x05v\x82xFAIk\xff\xe2u\x15$\x17s\
-\xc1\x11\x8aHUQ\xc2\xc5}\x0c\xf7Y\x08!\xa8\x99\
-<\xd3\xb5-\xc323\x8c\xb7?_A\x08Ak\xc7\
-\x19\xc7:\xd3&M\xc62\xa1\xc0\xe7O\x89W\x06W\
-\xaf\xc2\xd9\xf0\xcbQ\x9a\xa0J\xcfi]y,\x22.\
-\xe9\xd3\x87CqdW\x96\x959G\xeff\xd4\x11\x91\
-\xaa'\x9e\xfe\x08G#\xce\x122\xb3\x9a\xaf\xfdM%\
-\x13\xef\x9bEYQ\x11G\xfe\xe1P\xaa\x1b\xddw\x8a\
-\x7f>\xf8\x0c\x9a\xe2\xa3\xc0WHG\xf4cg\x82X\
-W\x81\x0d\x19I\xd0c\xf1\xc1\x96\x14\x16;?7\x07\
-\x5c\x93L\x9aO\x10\x899?/\xce\x1b\x8f\xc7\xa3\x90\
-\xe7\xc9\xc7225t\xc4\xe8\xe3@\xc7\x9b\xa92\xe2\
-\xb4\x0ag\xd8\xd5\xf8 ^Vn\xd7ee\x17\x80\x99\
-F\xbcc\xf9\xde\x80\xab\x84\xb8\x81\xd7\xab\x10\xeew^\
-\x87\xecU\xf3.\xa6\x0c\x84s\xf7D6\x19\xe2\xd1\xcc\
-\xf6&b\x91\x5c\xac\x5c\x8c\xe3A\xa4}w \x889\
-x\xf4\xac\x9bQW\xd2\xfa|\x0a\xbaa:>\xd3T\
-\xef\xc5\xf5s\x0e\xed\x0bW\xab\x96\x8d\xea\xcd\xb5*\x1f\
-d>d\xa4g\x0c\x0dC\x0e:\xdf\x1e\x1bTe)\
-\x18\xba\x85i\x99\x19YaM\xf1]\x94\x84+\xc8G\
-\xe5\x1a\x1f\xc9\x11\xfb\x88g{\xb3Q\xc0\x8a\x10\xf6L\
-\xe0P\xb8SB\xea\xaa\xc7a\xe2\xea8>\x86?R\
-WFB4\xb3\x01U\x15\xe8\x86;\x07\xda\xb6\xc0\x81\
-\xdez\xccBU\xe3;\x91\xd2\x07iZ\xc6\x05\x0c\x08\
-W\x09\x1b-\xc8Ze\xb9\xcdf]I.+\xcd\x8a\
-:\xbb\xaf\x03\xee\x8c\xa0\xa9>\xc7z\x08\x81\x11\x13h\
-\x9a\xc7q\x90\xba\x15\x03q1\x8b\xe6J\xd5Q\xca\xf6\
-fmC\x92\xb3\xb5#%!\x08\x88\x9a\x11|j\xe6\
-<\x88m\x0b\x5c\x5cf\xaf\xe6qq\x06b\xb9A \
-\x16\xb9DG\xd6\xd9\xde\x5cJ\x87\x9bMrJo\xfb\
-\xfcqus\xae\xfb\xbc\x8b\xca\xf29\xd6\x13\x02b1\
-I\x9e\xe6u\xce\x00\xc4\x82\x17\xd3\xfe\xd2\x0d\xd9\x97\xfe\
-\x0cG\xb6wH\x81a\xee\x88\x929C\xa88\x98\xae\
-\xfc\x02\x15EQ\xe8\xea\x09R]>\xd5Qe\x09\xe9\
-\x10\xb4I\xe2\xa9\x91|g\x1b\xd3\x1b\xed\x8e\xef\xd8\x12\
-\x02\xb7\x89A%\x8b\x94\x9e\xcc\xf1\x14\xee\x90\x92\x8b9\
-\x9d\x0f\x11\xd99\x0c\xfe\xfc\xb8\xbb\xda\xda\xd96\x88\x1d\
-\xf1f\x1am#\xfe\x8e\xc2\xbc\x80\x0bA:\x93\xe2S\
-qEJ+\xd70j\xb9\xacl\xa0p\x5c\x9c \xc7\
-[[\x5c\xcbT\x17\xcf\xe2H\xc7G))\xf8p(\
-\x1e\x10V\x8f\x9f\xe2X\xa7-\xd4\x92#\xe41\xba\xb9\
-,\xb7U\x11\x97=\x9a4\x9d\x9d\x0e%\xe5\x1aH\xc9\
-\xfe\xa3\x07\x5c\x9b\x99Q2\x9f\xa6\xf6\x0fRTL\x7f\
-\xc8\x02)\x19_R\xeaX\xe7l\xdf\x09\xdb\x068\x8e\
-'\xcbM\xa5r\x98V\x9ddm\xd4s\x16\x8b\x08\x01\
-\x8ab_\x82\xf8.\xdc\xf4Oi\xb9\x06\x8a\xc2\xa1\x13\
-\xcd\xae\x1c\xf4\xb9\xaa\xe5X\xd2L\xa9\x17\xec4@Q\
-X8k\x81\xe38N\x06\x9b\xe2\x04T\x04\xc2a\xb5\
-\x8b\xa6\xe6\xa1\xc8\xe4\x16\x9d\xfb7\x12i\x93AmH\
-2\x05Gb\xa1\x9c\xd7'\x982\xcd\xc7\xc1\xa3\xcd\x1c\
-=\xdb\x9c\xd1a)%\x13\x0a\xab\xa9,\x9c\x9a\x82\xf0\
-\xf3\xad1,\xcb\xa2\xae\xf6s\x19\x03n\x09\x1e\xe6|\
-\xe8T\xdc\xadV\x04\xb1hf\x02rBA\x15\xba\x15\
-E7tN\x9f\xee\xa37\xe8\x9c\x13\x93\x96\xcc\xe9B\
-\xb9\xac%\xc4-\x1e\xb9\xa2U'\xe9\x04r\x98\x903\
-\x0dX\xb0(\x80G\xd5\xf8\xbb\xff\xf3\xb8+G\xdd2\
-\xf5.L\xcbDQ\x05\xbdA\x83\xa3\xcd\xbd,\xbdq\
-\x11\xb5\xd3k3\xea\xbc\xd6\xf8\x1b<\x8a\x06\x12\xbc>\
-\x85H4\x13\xd9\xaa\xe2\xe1?\xd7=\xcb\xd4\xe8\xdd\xac\
-\xb9\xfeg\xac\xff\xebg\x1d\xfb7\x1c\xabN\xb2\xb6!\
-\x09$\xe6&\xdb\xeb\xb0:]8\xc7\x02\xf9\x85*S\
-\xa7\x17\xb0m\xdf{\x1cm=J\xcd\xa4\x9a\x8crw\
-\xd4\xac\xa4\xab\xff,\xbf\xdd\xf9\x02;\xdf\xe8\xe3\xcbu\
-\xb7\xf3\xcc\x7f\xf8_\x19\xe5Nt\x1f\xa2\xa9s\x9f\xbd\
-\xce\xb7\xb8\xd4CO\xb7A\xd3\xe9&fM\x99\x952\
-\xcei\xa5\xb3Y\xf7\xb5\xd9\x00\x9c\xeai\x1a$\xa0\x1f\
-\xfe\x94\x922\x98w\x95+\x09\x89\x13E\x5c\xdcV\xe0\
-p\xd9\x8b\x12n(\x04\x09?\xfb\xedS\xae\xb6\xe4\xfe\
-\xf9\xff\x89\x8d_{\x9d\xc3\xcf\xedd\xf3\x0f\x7f\x8dO\
-\xf3e8\x0co\x1c}!\xe5}Sk\xf2@\xc2?\
-\xed|mP[)P\x1c\xfb\x97Xu2\xe2\xeb\xb2\
-F\xc3\xe5M\x86\xf2J\x8d\x1bn\x19\xc7+\xdb\xff\xcc\
-\xaf\xfe\xb4)\x13a\x17\xbeW\x8f\xafbRIU\xc6\
-\x80\x04\x82W\x0e\xfd\x82\x03m\xef\xa6\xdc\x9fT\xed\xe3\
-\xc6\xc5\xe3x\xea\xa5g\xf8\xf5\x96\xe7\x1cm\xd4\xbb-\
-\x7f\xe0\xf9\x0f\x1f\xcd\xc6Q\xcc\x99\xdb\x9bU\xfa=\x97\
-\xfbC\x86\xec\x0e\x9a\x92\x9a\xb9~\x06\x06\x8a\xf9/\x9b\
-\xfe;\x05\xbe\x00\xff\xee\xb6\xfb]\x83\xbad\xc4\x1a\x96\
-\xce\x96\xe6\x7f`\xdb\xf1\xdf\xc5mG\xca\x98$3f\
-\xfb\x99>\xd3\xcf\x96\x8f\x7f\xc1\x9f6n\xe4\xf3so\
-\xa4\xbc\xa8\x9c\x96\xee\xc3\x9c\xedk\xc1\xa3x\xf0(^\
-g\xd54L3\x86#\x1e\x87\x88\xcb\xb09R\xc2\xdc\
-\xeb\xf3\x99\x5c\xed\xe3\xd1\x17\x1f\xe7\xb7o\xfc\x0b\xcf\xae\
-{\x8a\x89\xa5\x93\x5c\xeb\xedo}\x9b\xd7\x9b\x9f\xe5l\
-\xa8%\x83\x18\xc9\xed\x0a\x05\xa6T\x15\x02\x92\x93\xe1\x83\
-\x9c\x0cK\x04\xf19\xf7\xc1l\x845B\xabN\x94l\
-\xf3-#\xb9?$\x81\xc0\xe22\x0f\x7f\xfd\xb52*\
-\xae;\xc3\xc2\x87?\xcf\xb2uw\xd3\xdau\xd6\xb1\xfc\
-\xef\x0e>\xc1\xb9\xf0\xc9!\xec\xa0\x12\x17\xd6a\xa9\x17\
-\xed\xdb\x10\x82\xdb+\xc5\x99[\xc4~\xc9\x19C\xd34\
-\x87\x1c\xfe\xa7\xa4\xbf\x0d#e\xbf\xbdi\x19\x08K\xb8\
-\xe7\x8bdj\xe6\xc80\xa1\xb0\x04f\xce.f\xf7\x9e\
-\x8fxc\xef6\xbeyG\xe6\x89w\x9f\xa9X\xc4\xfb\
-\xa7^\xbfD\xe6If\x9d\xaa\x92i7#\xfd\x11\xfa\
-\xfb\x8d\xdcyS\x8a\x92\xbd\xca\xb2,\x0b]\xd7\x09\x87\
-\xc3W,\xa6Q\xdd@X\xa9\xf3\x13\xf22\xdc\xc7\x92\
-\xf1`\x18\x06\xef5\xec\xe5\x9bw\xac\x8c\xa7\xde\x93\x14\
-\xe2\x8aO\x7f\x93\xe6\x8e\x0f\xe8\x8b\x061\xa4\x8e1\xc8\
-*\x95ltk\xfa\x84V\xb4\xdf\xc00rG\x10\xc3\
-0\x18\x18\x18\xc88\xb5\xcfQ\xbec\xb1\x18\xb1X,\
-g6$\xd9\xedM\xec\xeb\x1b\xea5\xb1\xca\x87\xd7\xab\
-\xf0\xcf\x17\xdc\xd6t\x8e\x1e_0\x85\xbf\xbb\xf5\xb7\xfc\
-\xd7%\xbf\xe3\xceO\xaf\xc6\xb0bC{G\xc6*}\
-q1\x1eS\xa0\xaf-w\xc4\x18r\x1cb\x9afN\
-\xf7\x87\xe4*?y\xcb\xed\xc5\xb4w\xf5\xf1\xf7/l\
-p\xd4\xf9^O\x1e%\xf9\x15\x14\xfa\x8as\xb6\x8dY\
-Q\x05g\x0fE1BfN\xe3\x10\xb7\x88]\x19.\
-cn\x1b\xaf\x1c\x05\xb7\x96%\x99T\xed\xa3\xf6\xb3%\
-\xfc\x8f\xcd\x9bxk\xff\xf6\xac\xed\xd8\x151\x82\x80\xc3\
-/\xf6\xa2xs\x8b\x97\xcb\xf2\xb2\xae&HH\xc4\xe7\
-\x97\x141wA\x80o<\xb6\x9a\x97w\xbdD{\xef\
-yB\x03\xbd\xe8f\x94\xa8\x11!\xa2\x87\xe9\x8f\xf5r\
-\xa5\x9c\x90`\xa6\x13o\xf7\x13\x0b\x9a#6N\x8f{\
-\xfeI\xe4&w\x93c\x0e\xb6,XxK\x80y\x0b\
-\x0b\xf8}\xf3c\xfc\xf9\xf4FJ\x03%\xf8}~L\
-\xcb$fF\x08\xc7z\xd1\x14\xef\x15\xbdG\xf3+\x9c\
-\xd8\xd5\xcf\x91\x7f\x09\x0dK\x0e\xcb\x0d\xbf\x1e\xaeA\x90\
-\x16h^\x85\x12o\x1e\x10%\x18k#\x18\xbb\xccD\
-\xe0\x85UIR\x82\x11\x95\x981\x0b#\x229\xb6\xbd\
-\x9f3;\x22\xa8\x9a\x18V\x89w:\xb7wx%\xe4\
-jR{\x0a\x085n\xa8\x0dC\xd2sF\xa7\xb7\xc5\
-\xa0\xe7\xb4N\xff\x19\x13\xbd_\xa2\xf7[\xc4\xfa,\xa4\
-\x89M\x8c\xe1\xc2Cb\x0d\xf55/!\xd9\xc6\x13f\
-L\xdaW4d\x11<e\xd0sL\xa7\xfbc\x9d\xc8\
-\x19#\xcetJ\x9cP\xe9\xd6T\x0c\xb3u\x1d5\x09\
-\x91b\xf8\xce\x98\xb49^\x11\x98R\xd2{\xd6\xa0\xaf\
-\xc5\xa0\xe7\x8cA\xf8\xb4A,,1\xc2\x16\xb1~\x89\
-\x19\x89\xaf\xe1J\xa8(O\xde\xe8\xfb3Y\xdb\x90\x5c\
-\x8ah~\x97B\xa4\xd8\xe2\xb2\xd7\x9e's\xbc.\xb1\
-b\x12S\x97\xc4\xfa%\xc1\xd3:\xbd\xc7\x0c\xba>\xd6\
-\xe9?i\xc6\xc39\x9b\xe3EJ\xf4\xa8\x5ce\xba\xc0\
-\x8d\xe9=C\xa5\xe0Pa\xdcy\x15\x8f.\xe8\xad0\
-\x11Rd\xc5\xf1B\x11H$\xbd\xe7MB\x1f'8\
-\xde$\xd6g\xd9\x1co\xf4K{\xa9\x95\x10\xe0\xf1\x89\
-\x1c\xe4\x9aG\x1f\x5c\x93\x8b\xb9[u\x02\x05\xdd\xf1\xb3\
-\xdcCe\x16\xc9{*-#\xae\xdf-]\xa2\x0fH\
-zZ\x8d8\xc7\x9f\xd4\x09\xb7\x98`\xe2\xaa\xe3\x15\x95\
-k\x1e\xb2^(\xe7fp\xae\x84(\x85\xdd*\xaa.\
-h\xffK\x8cp\x9bI\xf8\x94I\xb4\xcfB\x0fI\xf4\
-\xb0\x85\x1e\x96q[\xa3\xc49^\xf5\x88O\xa2\xcb\x91\
-\xa1\xb2\xb2\xf6\xb2r\xed\xeaI\x01\xfe\x90\xca\xa1_\x87\
->\xb1\x1c\x9f\x0b\xc3>\xb2q\x88\x00E\x13\x8c\x81{\
-\xa4\xae\x8c\xa1\xe6\x1a0\xea9\xb7!cpen\xaf\
-\xc8r\x8b\x17\x80\xaa\xaah\x9a\x86eY\xf6to.\
-7Z^m^P.\xeb\x0d)\xb9\xe8\xa6\xe3,\xcb\
-b``\x80;\xef\xbc\x93;\xef\xbc\x93\xf1\xe3\xc7\x13\
-\x08\x04\x88\xc5b\x04\x83Av\xef\xde\xcd\xee\xdd\xbb\xd1\
-4-\xc5\x8bp\xfa\x9b\xed\xb3\xa1\x96K\xf43\x19A\
-n\xe5\xae\xf4]N\x7f\x13S\xe0\xb1X\xcc\x959\xdd\
-\xee{\xb2Ix%\xc3g?\xfbY~\xf9\xcb_R\
-\x96v&I\x22v\xb9\xf5\xd6[\xe9\xed\xed\xe5\xe9\xa7\
-\x9f\xe6\xe8\xd1\xa3\x19\x03O\xb4\x9d>[\x96>\xd8\xc1\
-\xbeg[n\xb0\xff\xdd\xbe[\x96\x95r\x88\xdb`\xfd\
-u\xeb\x97\xc7\xe3\xc1\xeb\xf5\xe2\xf7\xfb\xe9\xef\xef\xb7g\
-`\xb3\x91$\xe5R\xfa-q\x19\x86\xc1\x8f~\xf4#\
-^z\xe9%\x9b\x18\xe9\xcbE\x13\x10\x08\x04X\xb7n\
-\x1d_\xff\xfa\xd7]\x17\x06\xe4\xe7\xe7SWWG\xe2\
-\x07-\xaf\xc6 -]3\xdcz\xeb\xad\x8c\x1f?>\
-+5$\xa5DQ\x14\x0a\x0a\x0a\xc8\xcb\xcbs\x9d\xcb\
-\x1f\xb2\x97\x95\xa8\xf4\xfd\xef\x7f\x9fU\xabV\xd9\x1d\xaf\
-\xaf\xafg\xf5\xea\xd5l\xdd\xba\xd5.k\x18\x06?\xff\
-\xf9\xcfY\xb3f\x0d\x07\x0e\x1c\xe0\x8e;\xee\xe0\x9e{\
-\xeeq\x1c\xec\x8a\x15+\xf8\xcew\xbe\xc3M7\xdd4\
-\xea\x84P\x14\x85i\xd3\xa6\x0dZn\xee\xdc\xb9l\xd8\
-\xb0\x81\x87\x1ezh\xc8\xf6\xc1\xe7\xf3\xe1\xf3\xf9.\xcf\
-\xcb\xbax\x02\xb4\xb0\x7f l\xce\x9c9|\xef{\xdf\
-Ky\xd1\xb9s\xe7\xf0\xf9|L\x992\xc5\xae\xf7\xf4\
-\xd3O\xd3\xd8\xd8\xc8\xda\xb5k\x997/~2\xdc=\
-\xf7\xdc\xc3\xfe\xfd\xfbiiiI\xe9\xe4\xce\x9d;\x89\
-F\xa3\x1c<xpT\x09\x12\x8dFy\xe8\xa1\x87\xb8\
-\xf9\xe6\x9by\xe0\x81\x07\x5c\xcb\x1d?~\x9c'\x9f|\
-\x92\x03\x07\x0e\x5cV\xe0\xe7\xf3\xf90\x0c\xc3y\x01\xfa\
-P$\xc40\x0c6m\xda\x94q\xff\xdc\xb9sH)\
-\xa9\xac\xacDJ\xc9\x0b/\xbc@SS\x13\xabW\xaf\
-f\xde\xbcy)R\xb1v\xed\xda\x94\x05w~\xbf\x9f\
-P(\xc4[o\xbdE8\x1cv|\xaf\xa6ih\x9a\
-\x86\x94\x92\xbc\xbc<\x02\x81\x00\xf9\xf9\xf9Y\x9e\xb1\x1b\
-\x7fG \x10\xa0\xa0\xa0\xc0\x9d\x1b=\x1e\xaa\xab\xabY\
-\xb9r%\xcd\xcd\xcd\xe4\xe7\xe7\xe3\xf7g\xee\x91\xf7\xf9\
-|x\xbd^\xb6l\xd9\xc2\xf1\xe3\xc7\x07\x956UU\
-),,d\xdc\xb8q\x14\x16\x16\xda*Y\x08\xe1\xd8\
-vVF=\xf9Z\xb4h\x11\x13&L\xc8H8\xb6\
-\xb5\xb5!\x84\xa0\xa2\xa2\x82\x17_|\x917\xdf|\x93\
-\x07\x1ex\x80\xba\xba\xba\x0c]ZRR\xc2\xdc\xb9s\
-inn\xa6\xa4\xa4\x84\xa7\x9ez\xca&\xc4\xb7\xbf\xfd\
-mG;r\xef\xbd\xf7\xe2\xf1x\xe8\xea\xea\xe2\xab_\
-\xfd*~\xbf\x9fH$\xc2\x9bo\xbe\xc9\xb3\xcf>;\
-(\x92\x1f~\xf8an\xb9\xe5\x16,\xcb\xc2\xe3\xf1\xb0\
-g\xcf\x1e\x1e}4uU{,\x16\xe3\xc1\x07\x1f\xe4\
-\xde{\xef\xb5U\xe8\xb2e\xcb\xa8\xaf\xaf\xe7\x87?\xfc\
-\xa1].\x12\x89\xb0q\xe3Fjjj\x88F\xa3\xfc\
-\xf8\xc7?f\xff\xfe\xfd\x19\xef\xd5u\x9d\xeb\xae\xbb\x8e\
-G\x1ey\x84\xda\xdaZ,\xcbBUU6l\xd8\xc0\
-\x1f\xff\xf8G\x9bX\xaa\xaa\xda\x8e\xc3eIHB\xc7\
-'W\x94R\xd2\xda\xdaJuu5;v\xec`\xfb\
-\xf6\xed\xdcw\xdf},^\xbc8s{\xc0\x85z\xb3\
-g\xc77\xc4tww\xb3j\xd5*\xf2\xf3\xf3\xe9\xec\
-\xect\xfd\xbd\xdd\xea\xeaj\x96,Y\xc2\xf2\xe5\xcby\
-\xf0\xc1\x07Y\xbe|9g\xce\x9c\xe1\xae\xbb\xee\xc2\xe3\
-\xf1\xb8z-k\xd7\xae\xe5\xb6\xdbnc\xe3\xc6\x8d|\
-\xe5+_a\xf3\xe6\xcd\xd4\xd5\xd5\xb1dI\xea\xd1\xb3\
-^\xaf\x97M\x9b6\xb1y\xf3f\x00\xd6\xad[\xc7\xd2\
-\xa5KY\xb7n]\x86\xa4=\xfc\xf0\xc3\xd4\xd7\xd7S\
-\x5c\x5c\xcc\xd9\xb3\xcek\x8bg\xcf\x9e\xcd\xf3\xcf?O\
-QQ\x11+V\xac\xa0\xb6\xb6\x96e\xcb\x96\xd9*.\
-\x81\x87K91\x97\xf4\xb2&L\x98\x90\xf1<\x18\x0c\
-\xd2\xd7\xd7\xc7\xc0\xc0\x00\x9b7of\xd9\xb2e\xdcu\
-\xd7]\x83\xfa\xd7%%%6\xd2JKKQU\x95\
-\x8f>\xfa\xc8\xb5\x83\x93&M\xa2\xa0\xa0\x80\xf5\xeb\xd7\
-\x13\x0e\x87\xf1z\xbd\xec\xde\xbd\x1b\x80\xb2\xb2\xb2\x0c\x82\
-\x18\x86\xc1\x82\x05\x0bX\xbcx1\x7f\xf8\xc3\x1f\xd8\xb2\
-e\x0b>\x9f\xcfV1EEE\x8e\x04\xac\xae\xae\x06\
-\xe0\xe4\xc9\x93\x83\xaa\xa2\xa9S\xa7b\x9a\xa6c9)\
-%?\xf8\xc1\x0fl\xf5\xdc\xd9\xd9Iaa!]]\
-]\x9c8q\x22\x15\xe1\x8a2t/+\xb9\xe0\xb8q\
-\xe32\x9e\x1f:t(\xbe\xd1\xb2\xae\x8eh4:\xe8\
-\x82\xec\x04$t\xb9i\x9a\xd4\xd6\xc6\xf7\x03\x1e<x\
-0\x83 \x09DO\x9c8\x91\x96\x96\x16N\x9c8a\
-;\x17UUU\x00\xb4\xb7\xb7g\x1e2\xa3\xeb\xb6\xe3\
-\xf1\xcc3\xcfPXXH^^\x1e\xb7\xdf~;\x96\
-e\xd1\xd8\xd8\xe88\xce\xaa\xaa*,\xcb\xe2\xd4\xa9S\
-\x83\x06q\xd3\xa6M\xe3\xd0\xa1C\x19c\x95RRT\
-T\xc4\x8d7\xde\xc8\x87\x1f~Hss\xb3m\xe7\x14\
-E\xc9\xb0y\xc9\xef\xb8\xac\x19\xc3`0\x98q\xbf\xb1\
-\xb1\x11UUY\xbat)\x07\x0e\x1c`\xdb\xb6m,\
-]\xba\x94\xf2\xf2r\xd7\xb6B\xa1\x90M\x90\x84\x07\x96\
-\xdc\xf9tn\x04\xd8\xb1c\x07\x9a\xa6\xd9\xf5\xae\xbf\xfe\
-z\x82\xc1`J\xf0\x96\x80\xc9\x93'SQQA$\
-\x12\xe1'?\xf9\x09\x81@\x80\xea\xeaj\xda\xda\xda\xd8\
-\xb0a\x03\x0d\x0d\x0dx<\x9e\x8c\xd8b\xfa\xf4\xe94\
-66\xa2\xeb\xba\xfd\xae\xf42\x09)\xaa\xaf\xaf\xcf`\
- \xc30X\xbe|9\x00/\xbd\xf4\x12\x89\xdf\xa5\x1f\
-L\xda\x06K-y.\x15$9\xe9\xcc\xc3\x87\x0fS\
-YY\x89\xaa\xaa,^\xbc\x98\xe6\xe6f\xde~\xfbm\
-\xee\xbb\xef>\xd7\x17vtt\xd8\x03\xbc\xee\xba\xeb\xe8\
-\xea\xea\xc24\xcd\x0c\xc4&\x10\x0f\xa4\xa8\xb4\xd2\xd2R\
-\xc6\x8d\x1bGCC\x83c6!\xc1\x0cg\xce\x9ca\
-\xd7\xae]ttt\xd0\xd0\xd0@0\x18\xc4\xe3\xf1d\
-\x10CJ\xc9\xc4\x89\xf13\x82\xf7\xec\xd9\x93\xf1<\xb9\
-?\x8b\x16-\x02`\xf7\xee\xdd\x19\x041M\x93\x193\
-f\x00p\xe2\xc4\x89Kz\x81\xc9{\x1b/+R\xaf\
-\xaf\xafOi(\x12\x89\x10\x0e\x87\xed\xc1\xdct\xd3M\
-\x04\x02\x01\xdey\xe7\x1d\x0c\xc3p\xdc\xbb\x97 bB\
-\xff\xe7\xe7\xe7\xd3\xda\xda\xea\x8a\x80\xf9\xf3\xe7\x03\xa4\xa8\
-\x91\xc9\x93'\xdb\x08\x1fl\xa0G\x8e\x1c\xe1\xb5\xd7^\
-\xe3\xbd\xf7\xde#\x1c\x0e;r}\xfa{\xf6\xec\xd9\xe3\
-j\xcb\x0c\xc3\xb0\x1d\x9b\xa6\xa6\xa6\x8crB\x08\xa2\xd1\
-\xa8\xad6]O\xbeKK\xcd\xb8\xd9[\xe5R\xe9\xf7\
-}\xfb\xf6q\xe4\xc8\x11\xfb^\xc2\xddM6\xf6\xabV\
-\xad\x22\x18\x0c\xf2\xfb\xdf\xff\xde\xb1\xad\xd3\xa7O\xd3\xd4\
-\xd4d\x1bk7\xc9K\xc0\x9c9sl\x82%\xde\x9b\
-\x08@\xdd\x08r\xfe\xfcy[\x05y\xbd^T5~\
-\xbaPyy9\x85\x85\x85\x99\x87\xd6\x98&s\xe7\xce\
-MA\xb4\xdb\x8f4/X\xb0\x80\xd6\xd6V\xc7\xd5\xfc\
-\xaa\xaa\xda\xc1\xed\x97\xbe\xf4%;o\xa5i\x1a\xaa\xaa\
-\xa6HD\xe2\xd9`F\xfd\x923\x86~\xbf\x9f\xef~\
-\xf7\xbbl\xdd\xba\x15UU9u\xea\x14\x91H\x84\x8a\
-\x8a\x0a\xbb\xc3\xb5\xb5\xb5L\x9f>\x9d\xad[\xb7\xb2d\
-\xc9\x12*++St\xf0\x13O<a\xeb\xd6\x04b\
-\xdd\x082i\xd2$TU\xa5\xad-\xf5T\xa0\x84A\
-w#H{{;\xcf=\xf7\x1c\xdf\xfa\xd6\xb7x\xfc\
-\xf1\xc79s\xe6\x0c\xe5\xe5\xe5\xcc\x9e=\x9b5k\xd6\
-dr\xa2\xa2\xd8\x1e\xd8O\x7f\xfaS\x0c\xc3\xe0\xf5\xd7\
-_g\xe7\xce\x9d)\xeak\xca\x94)\xf8|>N\x9f\
->\xed\x1a\xf7\xbc\xf1\xc6\x1b|\xe3\x1b\xdf`\xcd\x9a5\
-\xcc\x981\x83H$\xc2\xc2\x85\x0bY\xbf~=\xbbv\
-\xed\xb2\xddt]\xd7m\x95\xe6F\x10\x15\xb8A\xd3\xb4\
-\xea\xbc\xbc\xbc\xdaDG\xa7M\x9b\xc6\xc0\xc0\x00==\
-\xf1\xdf\xb1\x0d\x87\xc3tvvRWWGii)\
-_\xf8\xc2\x17\x985k\x96\x9db\x07X\xb8p!u\
-uu\x04\x02\x01;o#\xa5\xe4\xf9\xe7\x9f\xa7\xb1\xb1\
-\xd1.WTTD__\x1f\xf5\xf5\xf5\xf4\xf6\xf6f\
-t(\x10\x08 \xa5\xa4\xbe\xbe>\x05\xf9\xa5\xa5\xa5t\
-tt\xf0\xee\xbb\xef\xda*\x22\x9dS\x0f\x1d:\xc4\xbe\
-}\xfb(++#\x10\x08\xd0\xd0\xd0\xc0c\x8f=F\
-___f\x00\xa6(466\xd2\xd7\xd7GUU\
-\x15g\xcf\x9ee\xfb\xf6\xed\x0c\x0c\x0c\xa4\x94M\xb8\xcb\
-;v\xec\xa0\xa5\xa5\xc5\xd5\xf9y\xe5\x95W\x08\x87\xc3\
-L\x980\x81h4\xca\xaf~\xf5+\xf6\xee\xddkK\
-\x89\xae\xeb)R\xaai\x1a\xa5\xa5\xa5\x04\x83A\xba\xbb\
-\xbb/\xb6\x05<\xe8\xf7\xfb\xbfP\x5c\x5c\xbc2A\xf1\
-/~\xf1\x8b\x04\x83\xc1\x14\x9f\xdb0\x0c\xee\xbe\xfbn\
-\xd6\xaf_\x9fu\xd2\xee7\xbf\xf9\x0d;v\xec\xb0;\
-%\xa5\xc40\x0cL\xd3LQ\x11\xc9il\xd34m\
-NJ\xae\xa7\xeb\xba\x1dy;\xa5\xc7\x93\xf7D&r\
-FB\x08\x9b\xdb\xdd\xd2\xed\xb1X\xcc\xb6}\x89TM\
-r\xfb\x96e\x11\x8b\xc5R\xfa\xe3\x96~\x8f\xc5b)\
-\xefM\xd8\x1b]\xd7m\x07&9\xdb]SS\xc3\xf1\
-\xe3\xc7S\xd21\x9elS\xd2\x1e\x8f\x87W_}\x95\
-\xfa\xfaz6n\xdc\xc8\xf4\xe9\xd3\x1d\x0d\xa1eY\xb4\
-\xb6\xb6\xf2\xe4\x93O\xd2\xd9\xd9\x99Q&\x91>p\xdd\
-\xb0\xa2(x\xbd\x99\x07\x95\xa5#\xd65\xd2M\xaa\x9f\
-\xcd\xc9x\x9a\xa6\xa5D\xfeN\x99\x06\x9f\xcf\x97\xd5\xae\
-\xe2d\x977y\xa2j('\xf4\x0di\xc6P\x08\xc1\
-\xd9\xb3g\xf9\xf2\x97\xbfLmm-\xb5\xb5\xb5L\x9a\
-4\x89\x8a\x8a\x0aB\xa1\x10\xed\xed\xed\x1c;v\x8cc\
-\xc7\x8e9\xba\x99\x83\xcd\xd49\xfd\xbd\xd4\x0c\xa3[\xbb\
-C\xbd\x7f\xb9\xe5.5\xbb\xe84Wt\xd9\x04qk\
-(\xc1\xe1\xcd\xcd\xcd\xb6\xe7\x94\xf33\xb6>\x01\x0b\x18\
-.\x85\x8f!M\xe1f\xbb.k\x8c\x00WN\xb8!\
-g{\xc7`x\xa5h\xc8q\xc8\x18\x8c,Q\xc6$\
-dLB\xc6`LB\xae!O\xccUB\xc6\x8d\x1b\
-\xc7\xacY\xb3\xc607L\x90\x989tTY\xe9\x01\
-\x8fS\xaeh\x0cr\x0b\x96e\x11\x8dF3\x16\x12z\
-\x00K\x88\x8b\xfbd\x0d\xc3`\xdb\xb6mc\x18\x1b\xa5\
-X\xc4\x03\xe8@,]\x9c\xc6`\x94T\x19\x10\x16B\
-\x0c\x8cyT\xa3\x0fR\xc6w\x16/\x05&j\x9aV\
-!\xa5\xf4p-\xee%\xbev\xc0\x14B\xc4\x80^E\
-Q:TU=\xa7iZP\xd3\xb4\x88\xc7\xe31\x00\
-\xf9\xff\x01\xfa\x90K\xa0\xc0O~5\x00\x00\x00\x00I\
-END\xaeB`\x82\
-\x00\x00\x03|\
+\x00\x006\xe2\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00d\x00\x00\x00d\x08\x06\x00\x00\x00p\xe2\x95T\
@@ -2259,56 +952,879 @@ PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
\x00\x00\x09pHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\
\x95+\x0e\x1b\x00\x00\x00\x07tIME\x07\xd9\x03\x03\
-\x0e\x1c\x0e\xa7\xa1o)\x00\x00\x02\xfcIDATx\
-\xda\xed\xd6\xbfo\x1cE\x18\xc6\xf1\xef\xcc\xed\xda\xb1\x0f\
-\x9b\x93\x85\x90-\xb08\x12\x09wn\xac\x14n\x10\xe0\
-\x8b\x90K7\x14\xc8\x7f\x03\xfc\x01T'QB\x81(\
-\xdd\xd0\x906m0\x8ep*DD\x94 \x17\xc8\x0e\
-\x06d\x90\xec\xe4\x02\xde\xf3\xde\x9e\xf7\xd7\xecP\x1c9\
-\x892R\xaeX\xf1|\xa4\xedv\xa4\x9d}\xe7y\xdf\
-\x01\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\
-\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\
-\x11y1L\x9d>vqq\xf1\x13cL\xf8\x9c\xcb\
-\xa6\x80\xcfNOO\xffVA^\xb0\xf5\xf5u\xdfn\
-\xb7\xf1\xdeSQQ\xbe\xf9\x94\x97\xaeLS>\x99\xc6\
-\x9d\xcd\x8c^\xb2`\xac\x1f\xef,\x8ec\xf6\xf6\xf6V\
-\xb2,;\xaa\xc3\x1e\x83\xbaE:MS\x0cp?\xff\
-\x85\xce\xf5\x19\x1a\xe1\x05\x99\xbb\xa4\x19^\x81$\xa0<\
-\x9f\x22\xfbu\x86\xe1\xe1,\x00eYb\x8c\xf1u\xd9\
-\x9f\xadS1\xaa\xaa\x22\xcfs\xf2\xbc\xc0Sa\x8d\xe1\
-\xaay\x9f\xcf;wx\xe7\xf5\x0f\x98\xe7\x1a\x8bW[\
-\xd8W2\x8a\xa2\xa0(\x0a\x9cs\xb5:p\xb5J\x88\
-s\x8e<\xcf\xc1\x8f&\xc3`\x90\xf2\xe1{\x1f\xf3\xd1\
-\xad\x1b|\xbd\xfd\x90w_;\xe3$}\xc0\x17\xf7?\
-%\xcfs\xbc\xf7\xcf\x12\xa2\x82L\x82\xf7\x9e,\xcb0\
-\x18\x98\x82\xe1\xc01\xd7l\x92W)\x00\x87\x7f\x1e\xf2\
-cr\x0b\xe3-Y\x96\x8dS\xa5\x82L\xb8e\x19\x00\
-\x0fs\xf3S\x0c\x86C\xa6\x1b\xa3yQ\xe1)]\x81\
-\xf7\x8c\x92\xf4\xec\xe6R\xa3\x82\xd8:&$\xcbr*\
-</\xcf7\xb9\xfd\xf3M\xba7n\xf2\xe0\xf4.\xf7\
-\xfe\xf8\x96\xb7\xdf\xd8\xa2(\xf3\x7f\xdf\xcb\xd4\xb2&\xa9\
-(\x0a\xe28\xc6\x1aK2Wq\x995\xf9\xc1}E\
-uo\x8eW\xafe\x1c\x97\xdf\xf0\xfbO{D\x8f\x13\
-\xce\xcf\x13\xbc\xf7\xcc\xce\xceb\xadUA&\x16ik\
-1\x18L\x05\x8diC\xc3\x86|\xf7\xdb\x97\x5c\xdc1\
-<y\x94\x90\xfe\xe5H\x1e;\x8c1\xb5JFm\x0b\
-\xe2\x9ccaa\x81\xf0l\xc8\xf7\xdd\x0b.\x9fV\x18\
-\x03\xc6\x8e\x1eo\x0cA\x10\x8cgN\x9d\xd2Q\xcb[\
-V\xb7\xdbecc\x83\xfd\xfd}\x0e\x0e\x0e\xe8\xf5z\
-\x94eIUUDQD\xab\xd5\x22I\x12z\xbd\x1e\
-\x8dF\x83~\xbf\x8f\xf7\xbe>\x1d\xa0n3\xa4\xddn\
-srr\xc2\xe6\xe6&Q\x14\xb1\xb4\xb4\xc4\xda\xda\x1a\
-\xdb\xdb\xdbx\xefi\xb5Z\xac\xac\xac\xd0\xe9t(\xcb\
-\x920\x0ck\x95\x90Z5\xd9\xd5\xd5U\xbf\xbc\xbc\xcc\
-\xd6\xd6\x16\xbb\xbb\xbb\xa3\x01o\xed\xf8\xc7GQD\x18\
-\x86x\xefI\xd3\x14\xe7\x1c\xce9\x8e\x8e\x8e\xde\x1a\x0c\
-\x06\x8f\xd4\xb2&\xa0\xdf\xef\xb3\xb3\xb33\x9e\x13\xff9\
-]\xc6P\x14\xc5hcA@\x10\x04\x14E\xa1k\xef\
-\xa4\x1c\x1f\x1f?\x04\xca\xe7Y\x13\x86\xe1L\xb3\xd9L\
-\xe38FDDDDDDDDDDDDD\
-DDDDDDDDDDDDDDDD\
-DDD\xfeO\xfe\x01\xd1\xc0Q%\xbd%\x7f`\x00\
-\x00\x00\x00IEND\xaeB`\x82\
+\x0e\x1c$|\x1a\xa6\xff\x00\x00 \x00IDATx\
+\xda\xed\x9dw\x98\x9de\x9d\xf7?\xf7SN\x9f\x993\
+3\x99Lf\x122\xa9\xa4\x03\x91\x90\x10j\xe8H\xd9\
+\x05\xa5\x88\xc8\xba\xeb\xcb\xb2\xae\x04QW_W]]\
+v]EQVPqYu\xa5Y\xc0\x12:\x16\x88\
+\x94\x00\x09)\xa4M\xea\xb4L\xa6\xcf\x9c9\xbd=\xf5\
+~\xff8\xf3<\x99A\x944}\xdf\xeb\xbd\xb8\xaf+\
+W2\xc9\xc9y\xca\xf7\xfe\xb5\xef\xaf\xdc\xf0\xeezw\
+\xbd\xbb\xde]\xef\xaew\xd7\xbb\xeb\xdd\xf5\xeezw\xfd\
+\x7f\xbf\xc4\xb1\xfc\xe7\xba\xba\xba\xab\x0c\xc3\x08N\x992\
+\xe5s+W\xae<QQ\x14\xb6m\xdbFmm\xed\
+\xa1\x0b\xb8\x02\x09 \xe4\x1f\x5cMU\xd5\x94\xa2(\xf9\
+r\xb9\xac\xbf\xfa\xea\xab\xb3\xfeo\xbf\x8c\xda\xda\xda\x9f\
+]w\xdduW\x97\xcbe\x17@A\xe0H\x89\xf8#\
+o\xc9q\x1c\x02\x81\x00\xaf\xbf\xfe\xba\xb3`\xc1\x82\xc2\
+\xc0\xc0@l\xcb\x96-\xd3-\xcbJ\x1e\xed=h\xc7\
+\xf2\x00\x8b\x16-\xfa\xe1\xcc\x993\xeb7o\xdeL\xa9\
+T\xc2\xb6m\xea\xeb\xebihh@\x08A\xbf\x95b\
+\xda\x05E\xaa\xa2:N:\x88\x93\xd1qs:vJ\
+C\x165\x80\xb0\x94\xf2\x0f\xbew\xda\xb4i\xa2\xb7\xb7\
+W\xfe%@\xa8\xaa\xaa\xba`\xc5\x8a\x15kt]7\
+\x1d\xc7\xa9\xe9\xef\xed\xd3m\x0b\x84\x2210\x09\xc5\x04\
+\xb2\xa0M\xd8LB\x08\xf6\xee\xdd\xcb\xd2\xa5K\xbd\x8d\
+\x85\xa6i\xb1X,\x86\xeb\xba\xa7\x85B\xa1lmm\
+\xed\xae\x81\x81\x81\xec\x9f\x1d\x90E\x8b\x16\xb1w\xef\xde\
+\x90\xe38(\x8a\xe2\x94J%\x5c\xd7\xc54Ml\xdb\
+\xc6\xb2,\xca\xe52B\x08\x8a\xdd\x09\xba\xba\xc3Hi\
+\x220\x91\xaa\x8b@\x80\xa8<\xf08\x19\x95g\x9cq\
+\x86\x04\xc8f\xb3\xb4\xb6\xb6\x8a\xbf\x94T\x94\xcb\xe5\xe6\
+\xc9\x93'W\x9b\xa6\x89\x82\xe0`\xb8\x87\x85\x17*\xd8\
+\xc3A\xecD\x10g4\x88\x8c\x0a\xa4\xa9 -\xa5\xf2\
+\xd24\x0dUU1M\x13EQp]\x17\xc300\
+MS^u\xd5U\xbf\x11B\xf0\xdak\xaf]\x00\xfc\
+\xfe\xcf\x0eHGG\xc7\x9c\xd3N;\xad\xad\xb6\xb6\x96\
+B\xa1\x80i\x9a\x13\x00\xf1nNQ\x14\xa6Lm\x22\
+\x1c\x0e\xa3\x08A\xabq\x80\xe5\x1f\x82@@\xc1\x1e\xd5\
+\xb1z\xa3\x98\x83\x01\x9c\xe1 B\xa9(\x05)%\xc1\
+`\xf0/\xab\xb3\x85\xf07\x92\x86\x8a;?C ^\
+C ^\x82\x13K\x13>;\xf4\xe8$\xdc\xa2\x8a\xeb\
+\xbaH)1\x0c\x03!\x04RJ,\xcb\xc2u]a\
+\x18\x06\x9a\xa6\x01\xb8\x7f\x11\x95U.\x97\x1b\x1a\x1a\x1a\
+\x08\x85B\xe4\xf3y\x0c\xc3\xf0o\xceq\x1c\x1c\xc7\xf1\
+o4\x10\x08T\xc0\x11\x82^{\x84\xf3bM\xb8F\
+\x90%KNa\xe7\xe4W\x89\x08\x89\xa2\xe8\xa4_\xae\
+\xa2\xb0'\x8c\x94\x12\xd7u\xff\xec D\xa3\xd1\xb3\xae\
+\xb9\xe6\x9au\xa5R\xa9\xf2B])C\xf5B\xb8)\
+\x9d\x19\xbbNat\x97\xacH\xf0[\xe4\xb4m\xef.\
+f\xcc\x98\xe1\x032^B\xca\xe5\xb2\xbf1\xa5\x94\x94\
+\xcb\xe5\x8fWUU]WUU\xf5@\x7f\x7f\xff\xa6\
+?\xab\x0d\xb1m\x1b\xc30|i\xf0n\xc4q\x1c\x7f\
+\xb7\x09!PU\x15\xcb\xb2\x90\xaeK}:\xc4\xc1\xa7\
+\x15N\x08.&W?\x05;1\x17\xac0I:)\
+\x0c\x988y\xc7\x07\xe4\xec\xb3\xcf\xfe\x1f)e \x99\
+L\x86{{{\xff6\x9b\xcd\xe6\x8f' R\xca\xb0\
+\xaa\xaa\x15\x89\x96\x92]\x93w\x8a\xf3\xaf\xac\xc3\x956\
+vVCd\xc3\xd8Y\x0d'\xabQ\xde\x1fA:\xc2\
+\x97\xa6r\xb9\x8c\xa2TT\x97\x07\x88'!\x8e\xe3T\
+\x9eWJ\xb9j\xd5\xaa\xab\x9b\x9b\x9by\xf0\xc1\x07\xd7\
+\x03\x7f\x1e@\xa6M\x9b\xb6\xb0T*\xcd\xb7m\x1b)\
+%\x8e\xe3LPY\x8e\xe3\x00\xf8*K\xd34\xff3\
+\x0b\x1bf\x13MU\x91$Aw\x7f7\xf1\xf7\x14\xd0\
+\xcc\x00\xd1D\x9cH\xbd\x86\xac\x11HC\x01W\x80\xe0\
+#\x00\xe1p\x98\xdd\xbbw\x7f\x148&@\x9a\x9a\x9a\
+\x18\x18\x18\x18\x0f\x884M\x13\xd341]\x9bX\xb5\
+\x0e\xb6\xc2\xf2\xc9\xef\xa7\xaa%\xc4K\x9d\xbfb\xfa\xbc\
+&\x86\x8c.\xf2\x1d*N\xa9\x02\x80\xf7\x9c\xe3\xed\x86\
+\xf7gO2\xc6\xde\x87\xc8f\xb3D\xa3Q\x14E\x91\
+\x7f6\x95U[[\xbbf\xd9\xb2e\xf3\xd2\xe9\xb4o\
+/\x1c\xa7\xb2\xb3=/+\x18\x0c2f\xf0\x09\x06\x83\
+\xb8\xae\x8beY\xbe\xb1WQ\xd8\x17\xee\xe0\xc2\x05\xd5\
+@\xf1-\x0a]\x92^WC\xb9-\x02\x80eY\xc7\
+E\x22\x06\x06\x06hjj\x9a\x04,\x01\x1c\xc30N\
+N$\x12d\xb3Yl\x5c\xec\x11\x9b\x9d\xcf\x17\xb8\xf2\
+}\xf3y\xfa\xd55\xcck\xbe\x82\xf7\xd4\xaf\xe4\xbf\xb6\
+\x7f\x8al*\x87.\xc3\xbe\x9b\xeb\x01\x02P(\x14p\
+\x1c\x07\xd7u)\x95J\x9e\xed\xc0\xf3\x1c=M\xf1g\
+\x03DJ\xa9\x14\x0a\x05\x1f\x08\xdb\xb6\xc9\xe5r\xd8\xb6\
+M>\x9f\xf7uk\xa9TBQ\x14\xc2\xe10\xb6m\
+c\xdb\xf6\xa1\x87\x91\x02\xc2\x15\xf1\xff\xc8\xc2\xbb\x91\x8a\
+K\xda\xedd\xe3\xd6.\x92U\xeb\x18\x1d\xfb\x9c\xb7#\
+\x8f\xd7*\x95J7\x9f\x7f\xfe\xf9w\xaa\xaa\x8a@\x90\
+03L?\xbd\x1aw8\x8c3\xda\x82H\xc3\x8f\xbe\
+\xf3S\x14U\xf0\x1a[xUn&\xa0\xcd'\x9fl\
+'\x1aU\x91Rz\xb6\xc1\x07\xa4X,\xfa\xef\x22\x9b\
+\xcd\x12\x8b\xc5|0\xc6IKc,\x16\x9b\x95\xcf\xe7\
+;\xff\x1c\x80\xf8/\xd8\xb2,l\xdb\xf6_\x9e\xa6i\
+>\x10\xaa\xaa\xfa\xdeK\xb1X\xf4\x8d\xbd'!X\x92\
+\xd1^\x83\xa9\xef\x99\xcbu?Z\xca\xcf>\xb2\x81\xa6\
+\x93\xd2\xac\xed\xc9\xb2'\xfb*\xf9\x9c\xe9\xab>\xa0\xce\
+\xbb\xfe\xf4\xe9\xd3\x93\x07\x0f\x1et\x8f\xd2nD\xbd\x0d\
+StM\xb4s\xfa\xa9\x9d\x1f\xc1\x92\x83H\x1bD6\
+\x86\x9dQqR:\xf9-\xd5\xa0H\x1ci\xfb\xb6\xc2\
+\x93\x90T*\x85\xaa\xaa8\x8e\xe3\xc5\x1f\x08!\xd04\
+\x0dEQ\xc8\xe5r\x04\x83A\x22\x91\x08\xa6i\xca\x93\
+O>\xf9\x9b\xaa\xaa\xde\xf1\xca+\xafT\xfd9\x00\x91\
+\x1e\x10\xdeNQ\x14\x05\xdb\xb6\x994i\x127\xddt\
+\x13\xdf\xf9\xcew\xa8\xad\xade\xfa\xf4\xe9tuu\x91\
+\xcdf}c\xed8\x0e\x96\x10\xa8\xdb\x5c\x8a\xf9\xa9\xdc\
+\xf4\xab\x0fP\x1b8\x95\x9b\xd6\xdd\x88\xae\xa9\xa8v\x08\
+Mk$^\xe3\xc7(\xf2\xca+\xaf\xdc\xe7\xfd\xff\xf5\
+\xeb\xd7\xcf\x07\xf6\x1d\xad\x94x*\xc4tM\xe2\xe1\x00\
+\x85\x8c\xcbM'\xdf\x81\xab\x16Y\xb3\xf7^&74\
+2\x9c\xefe\xf4\xd50J@NP\xc9\xde\x86TU\
+\xd5\x07$\x16\x8b!\x84\xf07\xa1\xa2(\xfe5\x02\x81\
+\x00\x96e\x09!\x04\xe1p\xb8p\xb8\xf7\xa8\x1c\xce\x87\
+\xa6L\x992i\xca\x94)/\xb9\xae;\xcd\xb3\x05\xd9\
+l%\x08\xbd\xea\xaa\xabhll\xe4W\xbf\xfa\x15\xcd\
+\xcd\xcd\x00\xac]\xbb\x96\xdbo\xbf\x9dP(\x84\xa6i\
+\xbeq7\x0c\x83r\xa9\x84\xd0\x04\xa1X\x90\xda\xdaZ\
+\xba\xd5!\x16|\xbc\xcc\xac\x8f\x16i\xb9u\x94\xc9\xd7\
+$\x89\x9fn\x10i\x16\x04\x83\x01\x11\x0c\x06\x09\x06\x83\
+\xd4\xd7\xd7\xe38\xce1\xe90\xc30\xbc\x00\x0eE(\
+\x9c\x14~?\xa1j\x9b\xe7\xdfx\x9dE\xda\xf5\xac>\
+\xe3njB\xf5\x94\xcb\xe5\xca\xbd\x96\xcb\x98\xa6I6\
+\x9b\xf57V \x10\xf0\xa5\xe1\xb2\xcb.#\x12\x89P\
+__\xcf\xdc\xb9s}`4M\xf3\xb5\x87\xe7}\x1d\
+W@\x92\xc9d\xed\x05\x17\x5cpn(\x14\x8aX\x96\
+\xe5_\xb8\x5c.\xf3\xe1\x0f\x7f\x18\xc30\xb8\xff\xfe\xfb\
+Y\xbe|\xb9\xaf;\xbd\x1b_\xb0`\x01\xb7\xddv\xdb\
+\x04\xe3\xee\xc5-\xa6a\xe2\x04L4M%\x9bt\xb8\
+j\xe1\xc7\xa8\x9b\x1a#\xb28K\xed\x15\xc3\xe8\x0bR\
+\x18\xa51o\xc84\x8f\xd8@644\x5c\x1e\x8dF\
+o\x8a\xc5b7J)\x97\x0c\x0d\x0d188Hb\
+h\x84\x817\xb3\xf4\xed\x18\xe0\xb95k\xd9\xf1\xfa\x0e\
+\xf6m\xda\xc3\xfd\x0f|\x97\x9d/v\x91/d}\xe0\
+<\x0f\xca\xf3\xa2\xce>\xfbl\xaa\xab\xab\x91R\x92H\
+$|\xa3\x9eH$\x18\x93\x06_ue\xb3Y_]\
+\x1fW\xa3\xee\xf9\xdf\xde\xc5\x15E\xe1\xfc\xf3\xcf\xa7\xb5\
+\xb5\x95\xc7\x1f\x7f\x9c\xba\xba:\x9ez\xea)\x9ey\xe6\
+\x19B\xa1\x10W]u\x15\xa7\x9f~:\xa9T\x8a\xfb\
+\xef\xbf\x9f\xbe\xbe>\x0c\xc3 \x99L\xfa\xd1\xb8i\x9a\
+ Aj\x92r\xc9\xe1\xae\xf7>\xc5\xa3\xad\xdf\xe0\xa6\
+\xf9_e\xed\x8e\x17P\x1b\xfax\xcd\xdeV\xb1#J\
+eg\x1e\xe9\x9a<y\xf2\xb7\x97-[6\xcb\xb2,\
+T\xa1P\xacN\xcbX\xb5&\xdc\xac\x8e\x9d\xd4\xe9\xdb\
+6\x0c\x02\xea\xb5i\x8c\xa6s$d\x96\xa6\xc0\x0a\xf6\
+\x8f\xbeDS\xa0\xc9\x7f\x91\x9eM\xb4,\x8bH$\xe2\
+{\x91\x1b7n$\x16\x8b\x91H$\xa8\xae\xaeF\x08\
+\xc1\xb4i\xd3\x18\x1e\x1e&\x9f\xcf\xfb1\xdb\x91H\xb6\
+r\xb8\x80x`\x14\x8bE\xa6M\x9b\xc6\xbf\xfc\xcb\xbf\
+\xa0i\x1a\xcf=\xf7\x1c}}}\xc4b1\x82\xc1\xa0\
+\xef\xeen\xdb\xb6\x0dM\xd3&\xf8\xff\x9e\xcd9$!\
+\x95(?\xa0F\x98\xd68\x85\x84\xd8\x85\xb4BH\x09\
+\x8e\xb4p\x1d\x07\xc34|\xd1\xb7\xde\xe2\x07755\
+\xbd\xd3};\xe5r\x99r\xb9\xcc\xeel\x17\x91s\x07\
+E\xe8\xac~B\x97uP\xf5\xe1}\xd4|\xf0\x00\xa1\
+s\xfb\x113\x93\x95\xebX&\x96{(\x9e\xf0$\xbd\
+\xbe\xbe\x1eM\xd3\xd0u\x9d\x97^z\xc9\xb7)\xba\xae\
+\xfbR\x14\x0e\x871\x0c\xc3\x07\xcf\xb35c\x804\xad\
+\x5c\xb9R\xd6\xd7\xd7\xcf?nF\xdd\x8b;L\xd3\xa4\
+T*100@$\x12ahh\x08\xc7q\xe8\xef\
+\xef\xf7\xe9\xe8\xd1\xd1\xd1\x0a\x975e\x0a\x9f\xfd\xecg\
+q\x1c\x87`0\x88\xaa\x1er\x1f\xbdw\xeb\xb4\x97\xd8\
+\xf0\xef*\xa7\xfe\xdb\xa9\x00<\xcf\x87\xde\xf6\xfa\xd9l\
+\x96\xf9\xf3\xe7wy\xee\xf0\xd0\xd0\xd0\xbf\x0d\x0c\x0c\xdc\
+\xf1N^\xa1\x07\xa6)-\x14\x14\xc8L\xe6\x8e\xcb\xbf\
+G{z3\xdf{\xf9\xdfX\xbcd\x0e\xddu\x9dd\
+wi\xbe4\x18\x86A*\x95\xf2\x8d\xf3\xf5\xd7_\xcf\
+\x9a5k\xc8d2\xd4\xd5U\x9c\xbe\xd1\xd1Q\xff\x1a\
+\xf5\xf5\xf5\x98\xa6I8\x1cfhh\x08UU\x89\xc7\
+\xe3\xe8\xbaN.\x97\x03`\xee\xdc\xb9\xec\xda\xb5\xcb9\
+.\x80X\x96U\xf0^\xa0\xa2(\x14\x8bE>\xf3\x99\
+\xcfP]]\xed\xe7>\xc6{\x22\xde\x9f\x93\xc9$\x81\
+@\xc0\x07\xe4\x87?\xfc!\x86a\xf0\xf1\x8f\x7f\xdc\xe7\
+\xbbTT\x96,YRQ\x89\xd2!9\xf7\x00s\x16\
+Fpr*\xd6p\x08{(\x885\x18DH\x05\xa1\
+\xbb\xfe5\x86\x86\x86\x0e\xdb\x90\xdb\x96\x8d\xab:\x08E\
+p\xdd\x82O\xb3\xbe\xf7I\x9c\x91i\x5c7\xf7K\x9c\
+\x7f\xea\x99\xdc\xfe\xe8\xe5\xbek\xab\xaa\xaa\x1f\x03yl\
+\xc3\x96-[*\xe4\xe3\x98s2i\xd2$\xa4\x94\x08\
+!(\x95J\xfe\xc6TU\x95P(D\xb1X$\x12\
+\x89\xf8\xa1\x80eY\xfe\xf7\x1f3 \xb5\xb5\xb5\xb7,\
+]\xba\xf4.\x8f.9\xe1\x84\x13H\xa5R\x04\x02\x01\
+\xd2\xe9\xb4\xaf\x82\xa4\x94(\x8a\xe2\xb3\x9f\xde\xee\x1a\xa3\
+\x16\x5ce,\x9a\x9a6m\x1a\x8e\xe3P(\x14\x10\x08\
+liQ,\x16)\x97\xcb\xf4YIZ\xa6;\xc8H\
+\x89\xc6I\xd3IM\xedC\x0a\x07\xd35QJa\x86\
+\x1e\x99\x5cIt\x1d\x01EbY\x16\xb6e!\x15\x89\
+\xa2\x09\x1a\xaa\x9b9X\xfa=\xc9$d\xdd~\xeaN\
+0\x08\x07#^\xcc3A\xe5x*\xb6\xa7\xa7\x87P\
+(\x84\xeb\xba\xac^\xbd\x9a\xad[\xb7\xd2\xd9\xd9\xe9{\
+R\xaaZa\x80kjj\xc8f\xb3\xa8\xaaJ,\x16\
+\xf3\xd5\x9e\x17\xbb\x1d\x8eS\xf2\x8e\x80\x98\xa69\xb5\xa9\
+\xa9\xa9\xa6\xa7\xa7\x07\xd34\xb9\xe7\x9e{\xd8\xb3g\x0f\
+7\xdex#?\xf8\xc1\x0fH$\x12\xd4\xd6\xd6\x12\x0c\
+\x06y\xe9\xa5\x97X\xb8p!\xbbv\xed\xa2\xa7\xa7\x87\
+\xb9s\xe7\xb2m\xdb6\xf6\xef\xdf\x7f\xfb\x82\x05\x0b\xbe\
+\xf3\xec\xb3\xcfr\xd1E\x17Q.\x97}\x95%t\xc5\
+\xf7\xbe\x5c\xc7EU\x04\xa1\xec|>q\xd1\x9dh2\
+\xca\x17\x9e\xf8\x08\x1f>\xfbF~\xb6\xfdn,\xcb\xac\
+\xe4R\xfe\xc8\x83\x0d\x0c\x0c0k\xd6\xac;\xa3\xd1\xe8\
+T\x00\xe9\xca)\xc9\xd1\x14\xd2uA\xb7\xe9\xfc\xa5\xc2\
+w_\xf8\x16i\xf7 F6\x88M\x89\xeeu\x9dt\
+\x0d\xe60\xcd\xb0\x0fH8\x1cf\xc6\x8c\x19\x0c\x0e\x0e\
+b\x9af\xaaT*\xf58\x8e\xb3DQ\x14q\xd7]\
+wI\xd7u\x85\xb7\x01=\x1b\x0b\xf8\x86\x1c \x95J\
+\x11\x8b\xc5\xfcMz\xb84\x8av8\x06\xdd4M\x0a\
+\x85\x02\xaa\xaa\xf2\xa3\x1f\xfd\x88o\x7f\xfb\xdb\xfc\xf4\xa7\
+?e\xfd\xfa\xf5\xa8\xaa\x8a\xae\xebh\x9aF*\x95b\
+\xef\xde\xbd\xe4\xf3y\xca\xe52\x89D\xc2S_!U\
+U\xd9\xb0a\x03\xaf\xbf\xfe\xba\xef\xab\x8f\xbd4\xdf\xdf\
+\xb7\xb1qqY\xd6p\x19\x8fl\xfb*\xb3\xb4\xf3\xb9\
+\xf6\xa4\xd5\xb4\xd4LA\xa0T\xd4\x9c\x22\xde\xc9\xb3\xfa\
+\xfb\xe9\xd3\xa7\xd7\x0b!(8eX8L}<\x8c\
+\xd3\x1f\xc1\xea\x0b\x93\x19M\x22\x88\x11\xaa\x98e\x8aC\
+\x92Fq\x22\x1df\x87\xcf8TWW\x13\x8f\xc7I\
+\xa5R\x98\xa6\xf9\xec\x9e={n\x8a\xc7\xe3\xd7Z\x96\
+5\xcb\xb2\xac\xaf]p\xc1\x05\xacX\xb1\x82G\x1f}\
+\xd4\xb7\xab^\x10\xe9QJ\x8a\xa20<<L4\x1a\
+=\x22^\xeb\xb0\x00\xf1\xbe\xccs\xf5N;\xed4_\
+-\x8d\xb7\x1fB\x08z{{\xfd?\x1f8p\xc0\xf3\
+\xbc\xd2\xfb\xf7\xef\xff\xab\xb1\xe8\x95P(\xf4\xf8\x89'\
+\x9e\xa8~\xf1\x8b_\xe4s\x9f\xfb\x1c\xa6iV\xf2)\
+\xaa\x8d\x10\x10\xd0\x228\xae\x8da\x9add\x8a\xaeL\
+\xe2\x10\x85!\xf0w\xe6\xdb-\x8f\x85\x05x#\xbf\x9f\
+\xebO\xaf\xc1\xb2s\x94Z\x06\xa9\xd6\xc2\x08GE\x1a\
+*\xc5=Q\xf2\xdbb *;=\x95J\xf9\xd7(\
+\x95J\xa4R\xa9\x09\xcf\x98N\xa7\x7f\x01\x9c\xb8j\xd5\
+\xaa\xaf\xddy\xe7\x9d\xe8\xba\x8ea\x18tuu\xb1t\
+\xe9R~\xf9\xcb_\xf2\xbe\xf7\xbd\x8f-[\xb6\xb0g\
+\xcf\x1e.\xbd\xf4R\x86\x86\x86X\xbbv\xad\xbf\xa9\x17\
+,X\xf0fkk\xeb\xaal6\xbb\xe5\x98%\xc43\
+p\x93'Ofhh\xc8\xb7\x15\xdeM\xbb\xae\xeb\xff\
+\xf2x\xac\xb1\x07|B\xd7\xf5\xbd\xc3\xc3\xc3\xafz\xdf\
+\xd9\xd2\xd2\x22\x9f{\xee9^|\xf1E\x96/_\xce\
+\x86\x0d\x1b*\xbb,\xe42\xb4\xce\xe2\xf9\xf8\xd3\xc8\xc8\
+(\xfd\xca\x1b\x18V\x89\xaa\x1a\x9d\x83C\x06\x85\xa2\xed\
+\xdfS,\x16;w\xf1\xe2\xc5_\x02\x84a\x18v[\
+[\xdbW<\xbe\xc9\xf7\x8e\x85D\x22Y \xaeg\xc5\
+{N!m\xf6\xb3a\xdfkdB\xfb)\x06l,\
+\xcbD\x22\xd14\xcd'2]\xd7\x95\xaa\xaa\x0a\xc7q\
+\x88\xc7\xe3$\x12\x89\xf1\xe8+CCC\xec\xde\xbd\x9b\
+\xe6\xe6f<\x97z\xe3\xc6\x8d\x00\xbc\xf6\xdak\x94\xcb\
+et]\xe7\xb5\xd7^\xa3\xa1\xa1\xc1\xbf_\xc30\xa8\
+\xa9\xa9\x89Y\x96\xa5\x1f\xab\x97%m\xdbFUU\x1e\
+~\xf8a\xa6N\x9d\xca#\x8f<\xc2\xce\x9d;\x09\x85\
+B$\x93I\xa2\xd1(\x83\x83\x83\x04\x02\x01b\xb1\x18\
+###d2\x19\xd2\xe94mmmW\xbf\xdd.\
+~\xf6\xd9g\xa9\xad\xad%\x97\xcb\xf94E\xa9T\xa4\
+.\xb9\x08\x07\x0b\x91\xa9\xa1\xcf\x19\x224\xbd\x8c\x99\x0d\
+\xd0\xc8<&\xaf\xa8\xe4\xb5\xa5%@a\x95\x10\xac\x1a\
+\x8biJ\x1e \xe3%D\x00\x03\xfdy\xfe\xf3o>\
+\xce\xc7\x7f}6_>\xe7ij\xecy\xa85)\xbe\
+\xb5\xe9\xab\x18\x86\x09\xa2\xc2Yy*T\xd3418\
+8\xd8988\xb8M\x08\xe1\x06\x02\x81\xb5o\xdd\xa0\
+\xabW\xaf\xc6\xb6mB\xa1\xd0\x045t\xf0\xe0\xc1\x09\
+?\x1f8p\xc0\xb7!\x85B\xe1\x0f>\x7fT\x80(\
+\x8a2\xc7\xb2,TU\xa5T*Q,\x16\x99;w\
+.o\xbe\xf9&K\x96,axx\x98\xda\xdaZ\xb2\
+\xd9,\xe5r\x99H$\xc29\xe7\x9c\xc33\xcf<\xf3\
+G/\xaei\x1a_\xfa\xd2\x97|C\xe8\xc5\x0b\x05\xa5\
+L\xa9TB\xa4\x05B\x08v\xe8\xfbx\xef\x195\xd8\
+\xd6x\xcfJ\xe2\x18\x0a\x99\x17\xea0\x87\x03\x80\xfc\x03\
+\xb0}\x9aE\x07\xc7\x86\x80\xae\xa3)\x01\x10\x90\xc8\x0f\
+\xf2F\xff\x03HW\x8e\xa9\xc0\x8a\x94744\xf86\
+@Q\x94_g2\x99\xd5o\x17\x8ey\xae\xbc\xb7\xeb\
+\x0f3\xed\xed\x7f\xff\xb1\x022\xbd\xb6\xb6\xf6F\xc30\
+\xa4\xa6i\xe2\xee\xbb\xef\xa6\xb1\xb1\x91\xbd{\xf7\xe2\xba\
+.\x83\x83\x83\x18\x86A8\x1c\xa6P( \xa5dt\
+t\x94]\xbbv\xfdI\xee\xa9X,\xe6\xa5\x94\xde\xb5\
+\x83\xe1pXw\x1c\x07\xddRq\xdcC*G\x09\x09\
+,\xc7fE\xf4\x16\x16\xcf\x5c\xc0\x96\xe4\xe3\xe4\x92\x1a\
+\xbb\xdd\xe7p\xb4\x18\x96\x09\x129\xc1\xa6\xb8\xae+}\
+\x03\x1a\x12\xc4'\x85(\x18e\x02!\x95\x9a\xaaZL\
+\xa5\x88\x16\xd2@\xa9\x00\x22\x91\xbe\xfamnnfh\
+h\x88\xb7+M\x02\x08\x04\x02\xed\x1d\x1d\x1d\x8d\xf3\xe7\
+\xcf\x1f\x9a2e\x0a7\xdcp\x03\x8f=\xf6\x98o{\
+\xbc\x80\xd7\xdb`\x1e\xc3\xa1\xeb\xba\xcf\x8a\x1f+ \x11\
+!\x04\xb9\x5cN\xd4\xd7\xd73<<\xcc\xe0\xc0\x10 \
+\x10\x02\x1f\xf1r\xb9\xec\x07T\xde6\x8e\xc5b\xa2T\
+*\xbdm\xf4,\x84\xf0+\xe9f\xce\x9c\xf9\xa0\xaa\xaa\
+\x1f\xbe\xfc\xf2\xcb\xfd\x00\xec\x90+)I\x0d\x0a\xfe\xee\
+\xe6\x9b\xb9\xe9gK\xf9\x97\xb3\x1f\xa3\x18/0\xd3l\
+\xe6'\xbfy\x02\xc3\x90\x9e\x0d\x08]t\xd1E#\x80\
+\x14\x8e\xa8\xb3,\x89\xa2\xc0\x22;\xc2\xf0\xc3\x0a\xd7?\
+t-R\x09q\xfd\x7f]\x83e[\x04\xb5\x08\xdb[\
+{\xa9\x8a\xc4}J\xdd#?\xff\x18\x18\xe3\xf2\x222\
+\x16\x8b\xf1\xe2\x8b/\xb2q\xe3FZZZ\xd8\xbau\
++\xe1p\x98\xf5\xeb\xd7\xfb61\x12\x89\xd0\xd2\xd2\xc2\
+\xae]\xbb\x18\x1d\x1d\xf5\x93t\xc7\xac\xb2\xa4\x94\xe8\xba\
+\xce\xbe}\xfb\x90\xae\xa4f\xb1N$\xac\x92\xeb\xb7)\
+\x0e9H\xf7m\xd5\x9c(\x97\xcb\x9d\x8a\xa2|\xf3\xed\
+\x9c\x84\xb7\xb0\x00\xfa\x07>\xf0\x01\xe6\xcc\x99\xc3\x07?\
+\xf8An\xbd\xf5V?\xcf \x10T\x05\xe3\xd8\xb2D\
+\xbc\xaa\x8a\xe6\xda\xa9<\xbf\xe3\xd7<\xd1w\x1f\xb6\xd5\
+\x88i\xb9P\xd9\xe1\xa2\xa6\xa6f\x92@\xd05m\x0f\
+\xa7]\x14\xc6\x18\xac\xd4U\xd9\x83\x01\x9c\xac\x06\x96\x8e\
+[RPu\x0dMS)\xe5Ml#\xe5%\xddd\
+4\x1a\x15###\x84B\xa1w\xe4\xf8\x1c\xc7\xe1\x95\
+W^!\x1e\x8f\xe3\xba.\xfd\xfd\xfd~\xa2\xcaK\xc8\
+y\xeco]]\x1d\x03\x03\x03h\x9a\xe6\x05\x91\xb1\xe3\
+\x02\xc8\xec\xd9\xb3+\x14@\xb2\x22\x9aQ)\x89\xd4\xcb\
+\x09\xa5;\x9e\x975\xb6\xe3z\x06\x06\x06\xfe\xebp\xe9\
+\x8d\xb9s\xe7\xfaQ\xed!u'\xb0]\x13Eh\x80\
+\xa0d\x15\xd1T\x8d\xa0\x16\xc5q\x5cL\xd3\xf2\x839\
+\xcb\xb2(8ej\xa7)H[%Z\x1fF\x99b\
+a\xccO\xf8\x9b`\xe0\xa1IH[\xf1=A\x8f[\
+SUUtuu=\xe0\xed\x11]\xd7\x7f\xfd\xa7\xee\
+\xd7u]>\xf9\xc9O\xfa\xdf3~\xed\xdbw(\x7f\
+\xd6\xdf\xdf\xef{\xa1\xf1x\x1c\xc7q\xa8\xaa\xaa\xfar\
+:\x9d~\xe1\x98\x00Y\xb1b\x05\x97]v\x19g\x9f\
+}6\xdf\xfb\xde\xf7hmm\xe5\xe4\x93O\xe6\xf5\xd7\
+_g\xee\xdc\xb9d2\x19Z[[\x09\x87\xc3\xcc\x9c\
+9\x937\xdex\xe3\xb0)\xf2@ \xc0\x0b/\xbc\xc0\
+\xde\xbd{\xe9\xed\xed\xf5\x19T!\x04\x85\xd6\x1cCF\
+#\xff\xeb\xa5[\x18\xcc\xea|\xea\xb1O`\x186y\
+'\x8e]\x14D\x22\x87\xa4\xae\xa2\x1e%\xca\xeb\x939\
+\xf8\x86\xe0\xc1\x07~\xc4\xfe\x9e.~\xbb\xf7\xa7\xfc\xed\
+\xaa\x8fr\xf7\xba[1M\x0bi\x1f\x02B\xd7u\x9f\
+J\x1f\x19\x19\xf9\xc8\xe1\xdes>\x9f'\x12\x89\x1c\x02\
+\xc3\x01\xcbt\xc7\xee\x05\x84*P\xd41m0\xf6\x91\
+\xd1\xd1Q_=\x1e\x8b\x84\xb8\xde.\x88\xc7\xe3\x84\xc3\
+a\x9ft\x0b\x04\x02,]\xba\x94\xee\xeen\xaa\xab\xab\
+}\xa3\xa5\xeb\xfa;^\xf4-*+\xa0(\x0a\x07\x0f\
+\x1e\xf4\x8a\x06d\xb9\x5c\x16\x00\xe5b\x91i+f\x92\
+\xcb\xe5\x88iu\xa4g\x1c\xa0iF\x80\xaa\xb4\x8e\x93\
+\x1d\xfb\x95\xd6ps\x1ab\xecI\xc2\xe10\xe9T\x9a\
+\xf5=\xcf\xb2\xe9\xcd..>\xf9\x06\x1ac\xd3\x11(\
+\x95X\xc7\xaaH\xd4\xbcy\xf3\xfcl\xe6\xe1\x12\x95\x00\
+555#\x1d\x1d\x1dM\xa7\x9cr\xca@*\x95B\
+Hpg\x0b\x96_YC~\xc0\xa18l\x93\x1bp\
+(\x0e\xd9\x18\x19\x17\xcf$y\xef\xf0O\xd9\xa8w\x04\
+$\x1a\x8d.\x07\xd8\xb6m\x1b\x89D\x82\xe1\xe1a\x8a\
+\xc5J\xe9\xce\xee\xdd\xbb\xfd\xc0\xd0\x03\xcdu]^~\
+\xf9\xe5#J&%\x93\xc9/\x0e\x0d\x0d}w\xcc\x8d\
+\x9c\xbe`\xc1\x82\x87\x0fy#\x95\x0a\x96r\xb9L\xca\
+\xcd1u\xae\x89\xa8\xb2i\x9c\xd6D\xd9\xcdQr\x12\
+(\x0a\xd8y\x95\xe1\x9fN\xf6\x1f\x5cJ\x89W\xb2\x9e\
+)\x8d\x925\x12\x08EL\x00$\x93\xc9p\xf5\xd5W\
+\xf3\xf4\xd3O\xfb1\xc8\xe1\xacL&\x83\xae\xebR\xd3\
+4\x9a\x9a\x9a*6\xa2\x7f\x80\x8e\x07\x15,\xc7E(\
+:\xae\xab\xa2\x11@\x09\xbb~N\xc4S\xe5\xc7\x04\x88\
+\xae\xeb\x7f\xe3e\xf8\xfa\xfa\xfa\xfc\xa4\xcc\xf8\xdf\x8fu\
+\x15\x0a\x85\xbd\xc0\xde\xb1\x1f\xe7{\x8c\x80\x10\x02\xa5P\
+y\x89\xa6ab+\x0e\xaa\xaa\xd0\xa2\xae\xe2\xefV\xde\
+JM\xa0\x9e\x0f|\xef|n\xbb\xeaV~\xb1\xfe\xfb\
+\x13\xe8s\xdb\xb1Y0\xe94\x92ST\x06r\xdd\x04\
+\xd5\xd3QP0\xcd2\xaeU\x89\x832\x99\x0cO?\
+\xfd\xb4\xef\x96\x1e\xe9R\x14\x85\x07\x1ex\x80\xe1\xe1a\
+\x84\x10<\xfe\xf8\xe3\xc4\xe3q:;;innf\
+\xcb\x96-\xcc\x9a5\x0b\xc7q\xd8\xb7o\x1f\xcd\xcd\xcd\
+ttt\x1c\x1b\x97%\xa5Tc\xb1\x18{\xf6\xecA\
+\x08A\xf4|\x9d\x15\x17\xd5 \x01#'I\xee5\x18\
+m\xb7\xc8t\x98\x98\x85C\xf9\x90\x9a\x9a\x9a\x11\xe0}\
+G[\xa6\xfa\xd3\x9f\xfe\x94B\xa1\xc0\xe7?\xffy\xbf\
+0\xc1RM\x84\x90\x9c<\xe5l~\xd7\xfe\x00\xa9\xce\
+\x06\xaeX\xf8\xb7\xcc\xa8Y\x84\xedT\xaa`<\x09\xe9\
+\xee\xee\xe6k\xff\xfb\xbb\x95\xc4V)\xc5\xc6\x9f\xec\xe2\
+\xc0 dSy\x8f\x02\x92\x8a\xa2\x08\xaf\x8e\xea\x9dv\
+\xed\xdb\xd9U\x8f]\x9e?\x7f>]]]\x8c\x8c\x8c\
+x\xcf\xce\xc9'\x9f\xcc\xe6\xcd\x9b\x19\x19\x19a\xd1\xa2\
+E\xa4R)FGG\xd14\xed\xd8$\xc4\x8b\xaa=\
+\xef\xc9\xd9\xa9\xf1fG\x96|\xbf\x83U\x94(\x9e\xf1\
+RUTU\xfa\xb9\x91@ \xe0\x0e\x0c\x0c\x1cU\xd3\
+\xca\xbcy\xf3hnnftt\x94\xe6\xe6\xe6J\x85\
+\xbde\xe2\xe0\x00\x02M\x09`K\x0b\xdb\xb1\x18H\x0f\
+\xd3\x95\x0e\xa3\x09\xdd\x8f_4M\x03\xcd\xa1\xa4\xa6p\
+\xb2\x1a\x8a\xd4\xc9\xe6\xb2\xc4\xf48\xb9\x5c\x07\x8a\xa2\xa0\
+\xeb\xba(\x14\x0a;7m\xda\xf4OB\x08UQ\x94\
+#.\x91TU\x95\xaf|\xe5+\xcc\x9f?\x9f\xcd\x9b\
+7\xa3\xeb:\x1d\x1d\x1d\xb8\xae\xcb\xab\xaf\xbe\x8a\xa6i\
+$\x93I\xda\xdb\xdb\xc7\x9b\x00\xa4\x945\xc7\x22!H\
+)\xf9\xd1\x8f~\xc4\xacY\xb3\xb8\xf7\xde{+e\x93\
+sJ~\x92\xaaX,\x22\xa5d\xd2\xa4Ituu\
+\x91\xc9d\x8e\xb8:dB\x85y[\x1b/\xbd\xf4\x12\
+---\x1c8p\x80x<^I\xc3b\xa3k!\
+R\xc6 \xd3\xa7\xcc\xa3~Z\x1d\x9bz\xba\xa9\x8dL\
+\x1e\x8b\xba\x0f\xb9\xc0z\x5cR\xf7\xfe\x01F\x9e\xae\xc3\
+\xe8\xad\xd0+\x8e\xe3\xf8\xe5;c\xbf'\x8b\xc5\xe2\xf3\
+Gs\x8fc\x84\xab\xab\xeb\xba\xb2s\xe7\xceJ\x0b\x85\
+\x00UU\x90\x12b\x91\x18\x96kU\x1c,\x81\x1f\xab\
+\x8d\xd5x-8&\x09\x997o\x1e\xb3g\xcf\xe6\x84\
+\x13N`\xd9\xb2el\xdd\xba\x95e\xcb\x96\xf1\xe4\x93\
+Or\xf1\xc5\x17\xb3{\xf7n6l\xd8\xc0\x99g\x9e\
+Iss3\xcf>\xfb\xec\x9f\xa4\xc7\xdfiE\x22\x11\
+\xbe\xf5\xado!\x84`hh\xa8R\x01h\x98\xd8\xaa\
+\xcb\x86\xff\x1ed\x93\xf9U\xe65.\xc1\x95.;\xfa\
+6\xd1\xfah\x1b\x1d#\xbd\x14\x86\x0e\xbd,MSY\
+\xf7\xb5a\x8c\xd1Q\x9c\x92d\xc6\x8c\x19\xe8\xba\xce\xd1\
+\xaa\xa8\xb7\xf1\x0c\x87v\xee\xdcy\xf1\xacY\xb3^(\
+\x95J\xb8*L\xbd!\xca\xc9\xcbc\xd8\x8eCSx\
+\x1e\xc3F;\x8e\xe1r\xf0\xd5\x12\xfb\x9e\xc8\xa3\xa8\x15\
+\xa7'\xe2\xf9\xeaG\x0bHgg'\xbf\xfc\xe5/9\
+\xe5\x94Sx\xe5\x95W\xc8\xe5r\xf4\xf4\xf4`\x18\x06\
+O>\xf9\xa4_\x99\xf1\x9b\xdf\xfc\x86@ \xe0\xa7>\
+\x8fr\x8d\x0e\x0d\x0d}C\xd7uk\xec\xc1?\x98J\
+\xa5f\xe4\xf3y,S2+<\x83\x193\xa6W\xa4\
+T\x1a,\xbb~\x16U\x912\x0d\xc3'c\x0d\x06q\
+F+i'\xa1HP$L\x83\x5c.\xc7\xc8\xc8\x08\
+\xd1h\x94x<\xcei\xa7\x9d\xc6\xcb/\xbf|\x5c\x1c\
+\x12?\xcd+\xa1\xd4j\xb3c\x7f\x8e|\xaf\x83ml\
+\xc4.J\xecr\xa5?Q\x0fh\xbe#p\xac\xd4I\
+4\x1a\x8d\xf2\xf4\xd3O\xf3\xc4\xe3O\x1c\xf2F\x84\xc7\
+I)~O\x8bP*\x89\xac\xea\xeaji\xdb\xf6\xd1\
+\xea\xac\x91\xde\xde\xde\xff\xed\xfdP__\xbf\x5cQ\x94\
+\x19\xaa\xa2\x80\x03\xae\xe3\x92\xcf\xe7\x11\xc0f\xab\x8dK\
+Z\xa2\xb8J\x8e\xe0\xd4\x22\x8a,\xa1j\x0avZ\xa7\
+\xbc/F~[\xd4g\x01\xbc\xea\xc1|>_\xc9\xe5\
+\x8b\xe3\xd31gY\x16\xb7\xdcr\x0b\x00/\xae}\x11\
+QV\xd0\xb4\x02B\x17\x18\xba\x81\xac\x96~l\x94H\
+$\x0e+k\xa8\xbd\x83A\xaf\xf7\x92\xf9\xae\x0a\x93\xe6\
+\x05\xd0u\x81\xb4u\xe6N^HGj\x07(PN\
+9\xa4\xbb|\x1d.l\xdb\xee\xe0\xf8,%\x10\x080\
+}\xe1\xc2JF\xcf\x1a\xa3\xd6\xbd\x88X\x11\xac\xac\xbe\
+\x85\xf7\x9d~-;\x86_\xe6\x85-/\xa15\x0f\xd3\
+\xd67\xe0\x13\x85^\xc2\xca\x8b\x05\xd6\xaf_\xef\xf1U\
+\xc7\xbc\xce>\xfbl.\xb8\xe0\x02\xe6\xcc\x99C\xa1P\
+\xa0\xb7\xb7\x97\x8b/\xbe\x98\xc7\x1f\x7f\x9c\xf3\xce;\x8f\
+b\xb1\xc8\xab\xaf\xbe\xca\xfc\xf9\xf3\x89\xc5b<\xf5\xd4\
+S~\x09\xeeQ\x01\xa2(\x8a\xa8\xaf\xaf\xa7\x90/`\
+E$K?RGu\x8d\x86t%\xc9\xb6~\xea\xf6\
+U1\xbc\xdd\xc0\x1au\x88\xc5\x82\xbe'144\xf4\
+\xe6\xf1x`\xd7u\xb9\xfd\xf6\xdb\xa9\xae\xae\xe6\x8a+\
+\xae\xe0\xa2\x8b.\xaa\xe4 $\x10\x82L\xba\xc4eg\
+\x5c\xcf-\xbf<\x93\x9f\xff\xcd.N\x08-%\xe1\xec\
+g\xf7\xfa;0\x0c\xcd\x0fZ\xcb\xe52\xd1h\x94`\
+0xX\xae\xe7\xe1\xaem\xdb\xb61u\xeaT\x06\x06\
+\x06PU\x95\xda\xdaZv\xec\xd8\x81\x10\x82\x8e\x8e\x0e\
+\xbf\x16x\xe7\xce\x9d\xac\x5c\xb9\xf2\xd8\xe9w\x8f{)\
+\x95K\xe8\x8e\xce\x9bw\xa7\x91\x16X\xc5C9t\xa1\
+L\xd4\x8dGB\x9b\x1c\xce2M\x93\xfa\xfaz\xbf\xe2\
+\xdc\xb2\xacJ'o\x08\x0c\xc3%\x14\x0c\xe0R\xa9?\
+\xeb\x1e:\xc8\xc6\xfcc(\xa8\x13\x92G\x1e\xf7\xd4\xd6\
+\xd66\xb7X,\x8e\x00\xb2\xa1\xa1\xc18\x1e6\xe4\xea\
+\xab\xafF\xd3\xb4?HV\xb5\xb7\xb7\xfb\xc4\xa2\x94\x92\
+_\xfc\xe2\x17\x95\xf7u\xac\xf4\xfb%\x97\x5c\xc2\x87>\
+\xf4!\x5c\xd7\xe5\xc9'\x9f\xa4\xab\xab\x8bh4\xca\xc1\
+\x83\x07\x89\xc5bTUUq\xe0\xc0\x01r\xb9\x1c\x8d\
+\x8d\x8d\xf4\xf4\xf4\x1c\xb7\x1d(\x84\xe0\x87?\xfc!\xcb\
+\x96-\xe3?\xfe\xe3?\x0e\x05\x7f\x08\xa4\x0b\xf1x\x88\
+d&MM\xa0\xbe\xe2VJ\x9b\x80\x88 ]\x89e\
+\xd9~\xad\x98W\xd6\xa9\xebz\xceu\xdd\x0cpD\xfc\
+\xd5\x1f\x91^s|\xbe\xc7\x09@u\x5c\xc5q]&\
+\x87gPr\xd3\x14\xac,BH\x8c\xac\x8b[\x92~\
+\xf6\xf0\xa8\x01\x19k\xc0\xa4\xb5\xb5\x95\x1bn\xb8\x81m\
+\xdb\xb6Q*\x95\xa8\xab\xabc\xd9\xb2el\xdc\xb8\x91\
+`0H8\x1c&\x93\xc9\x1c\xf7\xb6f)\xa5[U\
+U%w\xec\xd8Q)Y\xf0JP%H!\x89E\
+\xc2<\xbe\xfb~\xbeu\xe5o\xf8\xcd\xfe\x87x\xa9\xe3\
+e\xce:\xe9t^s7b\x18\xa6\xcf\xe8zT\x8c\
+m\xdb\xb3\xea\xeb\xeb\x03\xa3\xa3\xa3=\xc7zo\xb6m\
+\xb7\x09!*\xc5\x82\x08F\x96H\xfe\xee\xf6f$.\
+Q3BP\x0frp\xb8\x80U\x90\xbc~W\x0a\xe9\
+T4\xce1\xb9\xbdB\x08\xbe\xf9\xcdor\xfb\xed\xb7\
+\xf3\xc9O~\x92\xb6\xb66\x5c\xd7\x9d\xd0_8\xd6\x9f\
+\x8d\x94\x92\x9e\x9e\x9e\xe3\x0aH*\x95\xba\xe8\xf9\xe7\x9f\
+\xa7\xa5\xa5\xa5}\xce\x9c9\xb3\xb3\xd9l\xa5nX(\
+\x14j$%3\xca~\xf9\x1c\xdfyVg\xd5\xe9\xa7\
+\x90Pv\xf0\xcc\xbe]\x0c\xb5\xe5H\xa5*\x01k(\
+\x14\xa2\xa5\xa5\x85R\xa9\xc4\xb5\xd7^\xfbz[[\xdb\
+\x86u\xeb\xd6\xad<\x1e\x0e\x87\xef\xfa\x0a\x85\xba\x83\x92\
+}O\x15\x18\xdan\x90\xef\xdb8A5\xa9B\x03\x8d\
+\xb7\xcd\x9f\x1c\xb1\x0d\x89\xc7\xe3\xdcw\xdf}~\xc2\xc8\
++4\x00\xd05\x1d];\xe4\x0a{\xe5\xa3\xfb\xf7\xef\
+\x9fq<\xed\x88W-\xef\xbd\x00\x81@5\x5c\xb40\
+\xe4{\xe1\xf5\xce\x9f\xf3\xe4O~LyDb\x95\x5c\
+\xcai\xd7\x8f\x85TU%\x9dN\x13\x0a\x85\x18\x19\x19\
+9\xa2^\x8d\xc3!\x18/\xbc\xf0Bn\xbc\xf1F\xbe\
+\xf5\xado\xa1\xf6\xa9\x10\xcc\xd18\x1b\xbf\x7f\xbf\x5c.\
+SUUE*\x95\xc2\xeb\x8b?j@b\xb1\x98\xdc\
+\xb4iS\xa5\x92#\x06\x0b\xcf\x8f\xa1\x07\x04J\xa9\x9e\
+\x0b\x16_\xca\xef:\x1fA\x0b\xa8\x8c\xee3\x19\xd8\x5c\
+\xf6\x12NR\xd7\xf5)\xc7\x13\x10\xd7u\x1d/i\xa5\
+\xaa*\x8b\x17/\xa6\xb3\xbd\x83\xd7\xfe\xa9\x5c\xd9\x1b\x0a\
+\xa0T(\x12\xe1\xba\x84B\xd2\xa7*\xbc\x11\x18c=\
+\x7f\xc7\xb5\x91\xb4X,\xf2\xe9O\x7f\x9aT*\xc5'\
+?\xf9I\x1ez\xe8!N_y:\xdd\xdd\xdd\xcc\x9b\
+7\x8f\xdf\xfe\xf6\xb7\xac\x5c\xb9\x12]\xd7\xc9f\xb3\xec\
+\xd8\xb1\xc3\xaf\x9a?*@BcOf\xdb6\xb2\xda\
+e\xc695h\x08\xac\xb2\xc1\xeb#?C\xb5\xc3$\
+Z\x0d\x92\xfb+\xc1\xcf\x98\xdb+\x86\x87\x87\x8f\xc9\xaa\
+\xc7\xe3\xf1\x96\xb9s\xe7\x1e\x08\x04\x02\x15OOQq\
+\x84M\xa9T\xe2\xdb\xdf\xfe6MMM$\x12\x09~\
+\xf7\xbb\xdf\xf9\x05\x04\x00###L\x9d:\x95d2\
+\xc9\xc8\xc8\x08\xaa\xaa\x92L&\x09\x85B\x94\xcbe\x02\
+\x81\xc0q\x05$\x14\x0a\xb1c\xc7\x0ef\xcf\x9e\xcd\x0b\
+/\xbc\xe0\xf7\xd0\x8c\x8e\x8e\xfa\x95\x90\x83\x83\x83\xc4\xe3\
+q\xbfx\xf0\x9dX\x8cw\xb4!\x9e\x1b[\x9d\x83\x0d\
+wd\xdf2\xaa\xa8\xa2F\x82\x11}\x82\x18\x1f\x87\x9d\
+\x17\x98={6\xb6m\xa3\x0a\x95Vu?g\xdd\x10\
+d\xfd\x7f8\xbe+<o\xde<\x1e{\xec1\x9a\x9b\
+\x9b\xa9\xad\xade\xde\xbcy\xdcs\xcf=h\x9a\xc6\xc2\
+\x85\x0b\xd1u\x9d_\xff\xfa\xd7~V\xd0\xab^?\x9e\
+\x80\x84\xc3a\xbe\xfa\xd5\xafNPC\xad\xad\xad\x00\xec\
+\xdf\xbf\xdf\xa7\xe8\xc7\xab\xdec\x02DJ\xc9?\xfe\xe3\
+?2w\xee\x5cjkky\xe2\x89'8x\xf0 \
+\x9a\xa6\xf9\x85\xd4s\xe7\xce\xa5\xbd\xbd\x9dD\x22As\
+s3\x07\x0e\x1c8.\xee\xae\xd7h\xa3\x09\x95L<\
+\x03r2\x91H\x84\xaf\x7f\xfd\xeb\x9cz\xea\xa9~\xed\
+\x97\xc7$\xe8\xbaN\xb1Xd\xd7\xae]~O\xbc\xe7\
+\xf7\x8f\xa7,\x8e\x17 \xf1x\xfc\x1b^@\x08 \x15\
+\x89\xa6\x09\x5c\x17\xa2\xa1(\x05#Wi\x10\x12\xe0\xda\
+\x87\x18\xdfw\xba\xbe\xf6N\x5c\xcd\xfc\xf9\xf3\xc9\xe5r\
+\x5cz\xe9\xa5\xfc\xfe\xf7\xbfg\xce\x9c9\xd4\xd7\xd73\
+s\xe6L\x1ez\xe8!t]g\xd2\xa4Ix\xcd\xa0\
+\xc7\xc3\xcb\x1a?\xa1GR)B(\x17%\xf9\xb4A\
+DSY\xbb\xb6R\xdd\xa9\xabA\x14\xadR#\xe65\
+\x00yv\xc2\x8b\xc8\xbd\xder/MkY\xd6\xa4P\
+(t\x9d\x10\x22\x00\x88\xba\xba\xbaW\xfb\xfa\xfa\xba\x8e\
+\xc2\xaeM\xaf\xaf\xaf\xaf\xd8\x04E\xa0\x9d\xafs\xe9\xb5\
+\x93(\x96\x0d.;\xf1f\xb6\x8c>Eb(I\xae\
+\xdfa\xc37\x93>\xcb\x1c\x8dF\x87\x8f\x1a\x90`0\
+\xc8\xbd\xf7\xde\xcb\xe7>\xf79>\xf6\xb1\x8f\xd1\xdf\xdf\
+\xef\x8b\xbd7\xdb$\x95JaY\x16\xa5R\xc9\xcf\x85\
+\xc8\xb1\xc8\xf0\xad\x0d4G\x0a\x88a\x188(\xa8\xaa\
+Bo\xa7\xc1\xdd\xf7~\x95o<\xfb/|\xe1\xfc/\
+\x13\x8f\xc4\xf9\x9f\xad_\xa4\xfd79\x8c\x11\xc5\xaf\xec\
+8\xe1\x84\x13hlld\xfb\xf6\xed\xd45Uq\xc2\
+\xccF\x96OZ\x86\xea\xea\x15\x07@0G\x22\x1f\xf3\
+\xd2\xd0?\xfc\xe1\x0f\xff\x06\xe8:\x8a{\x94\xe3U\xb4\
+\x18\x81\xe1]e\x12{-\xbe\xfa\xdd{I\xee\xb3p\
+M\x89\xa2\x0b\x14M\xf15\x8e\x10B9&\x1b\x92H\
+$\xb8\xfd\xf6\xdb\x0f\xeb&\xbd\x1eC!\xc4\xa2\xa6C\
+\x9e\x9f\xf6\x00\x00\x16VIDAT\xa6\xa6S\x06\x06\
+\x06\xb6\x1dC\xe0U\x01]*\xa8B\x05\x14\x96.;\
+\x85\x86\xb6*\x96\xaf8\x8d)\xb5M\xac)\xa9Tm\
+\x8c\xa0\xe4\x85\xaf\xd3g\xcc\x98\xe1y\x88L:\xdd\xa5\
+\xf9\xec4\xd2M\xe3\x00\xc6@\x00\xa3-B\xb93\x82\
+\x10\x15\xdeMU\xd5\xa3v@TUe\xe1\xc2\x85\x9c\
+t\xd2Il\xd8\xb0\x81\x815\x15\xa3\x1ep\x1c&7\
+\xba~\xac\xe6mbo\xb0\xdbQ\x032<<\xdc\xe5\
+\xba\xee\x5c\xaf\x80\xa0\xe9\xac0\x91\x88\x82\xb4u\xdew\
+\xd2-<\xb3\xef\x87\xd8\x18\xd8\x86\xe4\xc0\xef\x8b~\x0a\
+\xb5\xaa\xaa*R,\x16\xe3G\xf2pS\xa6Ly_\
+\xb1X\xbc\x10p\xa5\x94\xf1\xce\xce\xce\x8a\xee\x97\x82\xb2\
+a2\xd0S\xe2\xab\x89o\xb2\xa7m\x98;\xb6\xfd+\
+\xb1P5\x1b\x0e\x1e\xc4\xee\x8b\xa2XA\x7f\x07\xb6\xb6\
+\xb6\xfami\x81b3w^\xf4#6\xf6\xfe\x96\x1f\
+\xbc\xf8\x9f\xcc\x9cQ\xc7P9Ovw\xa5\xb6W\xd7\
+\xf5c\xa2\xe2\x83\xc1 \xdf\xfc\xe67\x89\xc5b45\
+5\xb1c\xc7\x0e\xce=\xf7\x5c\xd6\xacY\xc3\xca\x95+\
+ikkC\x08\xc1\xacY\xb3\xc8d2\xbc\xf2\xca+\
+\xc7\xc6\xf6Z\x96\xd5\x16\x0c\x06/\xf6\xf2\xd5\xd3/\x09\
+\x13\x8fk\xe4\xfam~3p\x1f\xb6\x22(\x0c8\xa4\
+\xbb\x0f\x19M]\xd7}7\xf4\x08I\xc4[\xaf\xbb\xee\
+\xba\xf3\xa5\x94\xb8H2U\xa34M\x0f\xe0f\xbc\xfa\
++\x9dt\x22\xc7\xa9\x0d\xe7`\x16m\x92\xc5$\xa77\
+]\xc9\xb3[\x9f!\x18t|\x09U\x14\x05\xe9J\xa4\
+%\xb8v\xf9\x87\xf8\xef\x0d\xff\xca\xf2\xd8\x87X\xd9p\
+#+\x17,\xe0;\xad_\x99\xd0\xfb~\xb4\x80H)\
+\x9d\xf1\x05\xe5\x9e\x93\xe3\xb9\xd9^\xc7Yww7\x81\
+@\x80\xda\xdaZ\x7f\x9c\xd3\xb1\x90\x8b\x0a@uu5\
+\xb6m\xb3\xe3kE\xac\x9cDh \x14\x10\xaaW\x81\
+\xa1\xa2i\x87\x22\xe3\xa3\x1c\xab\xa4'\x93I\x5c\xd7%\
+c\x17\x99sE\x06[\xad\xa8})ltM\x85\xa4\
+\x82q J\xfe\x8d\xb1\xe10c\xde\xd4\xf8\x12\xa0H\
+8L2\x98\xe3\xcc\x8fE8\xff\xfc\x0b\xf8\xd1\xce\xe7\
+\x18J\x8d\xb0\xb7\x7f'\xc5\x9a\xed\xa8Tjl\x85z\
+t\xe3\x93\x00\x1a\x1b\x1bO\x94R\xae\x08\x85B\x5cs\
+\xcd5\xc4b1\x7f\x13n\xdd\xba\x15EQ\xd8\xb3g\
+\x8f_\xf4100\xe0\x17\x18\x1e+ \x9c|\xf2\xc9\
+|\xe9K_\xc2\xb6m\x1e~\xf8a\x0e\x1c80a\
+\x8eG<\x1egpp\xd0\x8fF\xbd\xc14G\x9b\x81\
+s]\x17\xcb\xb1Q\x84B\xba'\xcc#\x7f\xff;\xfa\
+\x0b\xfb\xb9\xe3\xb7\x7f\xc7\xec\xc6yt\x96\xdb0\xca!\
+\x14\xfd\xd0D7\xdf\xf5\xf4\x8a\xf6\x14\x85@@\xc7\xb2\
+\x0c4%\x88\xaah\x04\xb4 !\xadB\x85\x1b\xa6\x81\
+\xa2\x8a\xa3\x9e\xc7U*\x95Z\x9a\x9b\x9b\xc3\x85B\x81\
+\xaa\xaa*\x9f2\x1a\xbf\xfeX\xb1\xa0\x170\x1e5 \
++V\xac`\xf7\xee\xdd\xfc\xf5_\xff5g\x9cq\x06\
+B\x08\x22\x91J\x1b\xb1\x97\x0e-\x16\x8b\x0c\x0f\x0f\xd3\
+\xdc\xdc\xcc\xe0\xe0\xa0o\x97\x8f\xf4A\xbd\xb9\x8d\x16\x15\
+U\xb0z\xd5\xbf\xf2\xf3=_'y\xa0\x9a\x05\xdaU\
+\xdcr\xc6\xdf\xf3\x99\x9e\xf7W\x5c\x5c\xa7\xa2r\x82\xc1\
+\xa0?\xdb\xd1u]\x0c\xd3\xc4*\x18d\xd7,\xe6\x8b\
+\xbf\xfa\x22\x8e\xb4\xd9\xcb\xe3\x94\x0d\x8b\xcc\xcb\x02\xe4\x0c\
+f\xcf\x96 *\xb9\x8a\xcb/\xbf\xfc\x7f\x84\x10\xdf\x07\
+\xd8\xbcys\xc7\xde\xbd{\x97\x1c\xae'\x98N\xa7+\
+\x1d\xc4\x01\xb8\xe4\xdf\x1aPT\x01\xa84\xd7\x9f@\x7f\
+\xea\x00\xa3\xfbL\x0e\xbcX$\xd5^\x91\xe0\xaa\xaa*\
+\xf2\xf9\xfc\xfd\xc7\x14\x18\xfe\xfc\xe7?\xe7\x03\x1f\xf8\x00\
+w\xdf}7\xeb\xd7\xaf\xf7\xfd\xfd|>\xef\xd3%\xa9\
+TjB\xaaTJIcc\xe3\x97\x14E\xb9\xa5\xaf\
+\xaf\xef\xc0\x91J\x88\x83\x83\x22U\xa6\xd4Ma\xff@\
+\x91\xa2\x05\x1d\xc3\xfbyr\xef}\xd8\xb6\x85eUt\
+\xa9i\x9a\x04\x83AN=\xf5T\xf6\xee\xddK\x22\x91\
+ \x9dNc\xba&V\xd9\xc60*S\x91v\xd7n\
+\xe6\x9ckc8\xb9\xca\x1cE7\x13\xc4\xc9j8\x19\
+\x0dk \x18@\xfa3\x15\x83G`C\xd0\xf5J=\
+\x98\xee*\x0cl6)\x0e;\x14\x86\x1c^\x1dHP\
+N\xb9\x95\xba5M\xf8\xb5\x08c6\xcb>&\x1b\xe2\
+\xba.\x0f<\xf0\xc0\xa1\x1b\xf1\x02M\x01\x99t\x06\xcf\
+\xad\x16\xa2\xc2\xdbxc\xfd\xe6\xcc\x99sQ&\x93\xa9\
+\x07\xfe( \xf3\xe6\xcd{\x8f\xae\xebBQ\x14gx\
+x8V.U&{Z\x8aM\xbe?\xc0\xae]\xbb\
+H\xe4\x0a\xa4\x07l\xb2\x89,\xa3\x07\x8b\xe4\x07-L\
+K\xa2\xc8\x0a\x80\x86a\xd0\xdc\xdc\xcc\x8e\x1d;P\x94\
+J\xeb\xb4#\x0fM\x1e2\x5c\x8bp-(\x8e\xc6\xb4\
+\xfa\x05\xc4gT\xb1sp\x03u\x91\xc9d\xe5\x10\x03\
+\x0f6\xe0\x14\x0e\xa9\xbc#I/WUU\xb1z\xf5\
+j\xf6\xec\xd9\xc3\x81}\x07\x08\x18eT\xc7!V\xef\
+b\xd7\xd8\xfe\x98\x0e/n\xf3\xbc\xbfc\x89C\xfe\xfb\
+\xe0\xc1\x83\x17\xdb\xb6=S\x08A1&9\xf5\xf2j\
+\xf4\x80\xa00R\xc5\xfb\xcf\xb8\x9eg\xf6\xfd\x00M\xd5\
+\x19\xdan0\xb8\xb5\x84P\x84?\xed\xe7\x1d\x1e\xb0\xe1\
+\xb4\xd3N\xdb\xac\xaa\xaa\x10B \x91P[\x82l\x10\
+\xe1\xa8\xb0\x11\x9e\xd8\xf8\xd4!\xde\x88\x1av\x1c\x18d\
+\xf4`\x0cG\xe6\xb0M\xe9\x1bs\xaf\x16\xcc\x9b\xec\xe6\
+\x9a\xae\xdfjmI\x07EU\xe8\xdeo\xf3\x95[\xbf\
+\xc2\x0f\xd6~\x97KZn\xe1\x8a%\x1f\xe4S\xcf_\
+\x80eZ\xd8\xa6sD\x80xi\xd9o\x7f\xfb\xdb$\
+\x12\x09n\xbe\xf9f\x9e{\xee9\xbfr\xb1\xbd\xbd\x9d\
+e\xcb\x96\x11\x0e\x87\xd9\xb6m\x1b\xdb\xb6mc\xe9\xd2\
+\xa5l\xd8\xb0\xe1\x1d\xbf\xfbO\x02\x92\xcb\xe5\xb667\
+7\x0f\x1b\x861S\x08\x81\xa1;\xb4\x9cW\x8d\x9d\x92\
+\xa4;\x0c\x1e\xfd\xed\x03\x14\x07\x04V\xd1\xa2\x9c\x92\x84\
+\xc2!\xdf\xf5}\xa7\xf60@/\x97\xcb\xc2\xb6m\x10\
+\xb05\xb2\x8b\xf7\x9e_\x87+]\x1c\xc3E\xb1\x83H\
+K\xc1\xc9\xab\xe4^\xab\xc1)\xaa>\xb1\x98L&\xfd\
+\xe0\xd1\xa3G\x5c\xd7\xa5\xb3\xb3S\xbe\xf1\xc6\x1b\xe2\xd1\
+G\x1fe\xdb\xb6m\x15\xc7C:\xa8\x9a\xc2\x09\xd5K\
+8\x98\xdf\xcdH\xf9 \xff\xeb\xc4\xdb\x09j!B\xa1\
+ \x96cc\x99\xbe\x1azGDjjj>q\xde\
+y\xe7}\xa3\xb5\xb5\x95G\x1ey\x84/\x7f\xf9\xcb\xf4\
+\xf5\xf5\xb1w\xef^r\xb9\x9cO\xd3\xac]\xbb\x96\x99\
+3g\xd2\xd3\xd3\x83\xe38\x8c\x8e\x8e\x1e\x9f\xc1\x01\x95\
+\x0d!8\xe9\xa4\x93\xe8\xee\xeaf\xe3\xe7\xcaH{\xcc\
+!\x16\x1a\x08\x15\xe98\x84B\xba\xffr\xbc\x12\xfcw\
+\xba\x01\xbf<\x07I\xa0\xae\xd2\xd9t\xd6\xa4\x0f\xd32\
+\xb9\x85\xa7;\xbe\xc7\xcc\xaaS\xd8\x9a\xfa\x0d\xf6\xc60\
+\xb6u\xa8\x8ad|\x1bD\xa1P\xb8c\xff\xfe\xfd\xff\
+>i\xd2\xa4\x81\x91\x91\x91\xc6\xb5k\xd7\xb2h\xd1\x22\
+6n\xdcX\xe9\xc8R]\x92\xbf/\xd3;u\x90{\
+6?@2\x97\xe0\x0b\xbf\xfb\x12\xaa\xa2\xd2\x9d\x05+\
+\x7fH2&O\x9e|\xc2\xb4i\xd3^\x05T\xc7q\
+\xd8\xb9s\xe7u\xc9d\xb2\xe7-lD\xad\xa2(\x9a\
+\x94\x92M\x9b6q\xd1E\x17\xf9\xe4\xe6[\xd7\xfe\xfd\
+\xfb}\x82s\xeb\xd6\xad\xc4\xe3\xf1c\x07\xc4\xb2,n\
+\xbd\xf5V\xce;\xef<\x0c\xc3\xe0\xb1\xc7\x1e\xf3\x07A\
+z\x9e\xd6\x9c9s\xd8\xbbw\xafO\x0d\x0c\x0c\x0cx\
+7\xb9p\xda\xb4i\xc9\xde\xde\xde\xb7\xe3\x8a\x1c\x8f\xaf\
+\x92\x02\x14E\xd0\xbd\xcf\xe6\xdb\x7fu\x13\xff\xf0\xe3+\
+\xf8\xe2\xc5\xdf'\x1en`t{'\x83\xd6\x08\x86\xe1\
+\xf8\x80{\xc4\xe1\xb8*I\xa9\xaa*\xb7\xdez+\x9f\
+\xff\xfc\xe7\xb9\xff\xfe\xfb\xfd\x09<\xb6p\xd1\x8a\x1a\xb1\
+\x13\xaa(e,\x0a\x96`d\xd9V\xe2\xb1\x10\x93F\
+\xc2\xd8\xf5A\xdc\xb2\x8a4\x14\xa4\xa9\x84\x91\xe2L/\
+\xf7\xfd\xe6\x9bo\x86\xdeN]\x8dO[+\xaaJ\xb8\
+J#\x10\x14\x87:\xa6\x04\xd8%\x17\xbb\xa4\xf86W\
+Q\x14J\xa5\x92e\x9af\xe2\x98\x00q\x1c\x87\xd9\xb3\
+g\x93L&9\xe5\x94S\x08\x85B\x9cr\xca)D\
+\xa3Q\xa2\xd1(?\xf9\xc9O\xa8\xa9\xa9\xe1\xcc3\xcf\
+$\x9dN\xb3n\xdd:\x02\x81\x00\xb6m\xf3\x9e\xf7\xbc\
+\xe7\xe1\xf6\xf6\xf6\x1f\xf7\xf6\xf6\xde4F66\x01\xab\
+\x01\xd3u\xdd\xea\xde\xde\xdeJ\x012`Z&\xf9l\
+\x8c;\xef\xfc\x1a=\xedY\x1e\x1fz\x86L!\xc3+\
+}oR\xe8\x0a\x13\xd3k=\xb6\x94\xaa\xaa*r\xb9\
+\xdc\x84\xd1\x17B\x08\xda\xda\xda\xb8\xe9\xa6\x9b\xc8\xe5r\
+TUUUf\x09\x0b\x17\xdc\xb19\xed\xc0\x906\xc2\
+\xc2\x85\x01l\xcb\x84\xa6\x89#\x93\xb2\x9b\xc7*\x1e\x85\
+\xf4\x0b#\xfe\x18\xf1\xd9\xd0\xd00\xd6\x82\x00\xb5\xe7\x04\
+Y|Z\x8c\xa1\xedeF\xf7Y\x8c\xee6q\xed\xb7\
+u\x04\x0e\x0c\x0e\x0e\xdewL\x80D\x22\x11\xee\xbc\xf3\
+N\xce<\xf3L\xee\xb9\xe7\x1e\x8a\xc5\xe2\x84\xec\x97i\
+\x9a\xac]\xbb\x16\xdb\xaed\xf4\x82\xc1\xa0\xff\xef\xde\xf0\
+.o\x8d\x8c\x8c\xac\xba\xf2\xca+?\xefQ\xf4\x19\xb3\
+(kg;B&\xc3\xb8\xc9\x00\xd8\x92=ov2\
+YY\xc0\xa6\x8d\x95\xe9\xdc\xd3\xb4\xe5t\xba\x1d~\x8e\
+:\x12\x89\x10\x0c\x06\xfd\x91G\xe3\xa8\x97{\x86\x87\x87\
+\xab\x84\x10n\xb9\x5c^.\x84\xb8\xb8\x5c.\xe3(.\
+\xa1Px\xac\xe2Q\x80*1M\x87\x0f\xcc\xbc\x93\xee\
+\xec.N\x9a\xb5\x98\xffz\xee>\xec\xbav\x1c'\x82\
+eZ\xa0\xc8\xb7\x8d\xe2\x03\x81\xc0l)e\x9d7H\
+a\xd1\xa2E\x04\x02\x01\xfa^\xebe\xe7\xcb\x12I\x00\
+)ub\x91\x90\xafR\xbd_^a\xc81\xab,\xdb\
+\xb6\x83\x8a\xa2\xf0\xdak\xafU\xf4\xa1d\xc2d\x05!\
+\xc0\xb6\x1c\x84R1\xe6^.\xa2P(L\x18,\xec\
+=\x933nPrva\xa7\x98yF\x14\xcb5q\
+\x1c\x17%\x17\xab\xc4\x07\xde\xec\xdc1\xf7\xd2\x9b\x17,\
+\xa5\xf4\xe9\xfe\xfa\xfaz\x12\x89C\xd2\x9fL&\xbf\xe6\
+\x19\xfb\xc9\x93'\x7fL\xd3\xb4\x8b\xa5\x94\x08\x1b\xb0]\
+\xffP\x00\xcb4H\xec\x93T5W\xf3\xfc\x9b?\xc6\
+:\xf01\x16(g\x12SV\xf0X\xefO\xc9\x8d\x06\
+@Ho\xf0\xd8)\x81@\xa0^UUQ*\x95v\
+_r\xc9%\xed===X\x96%kkk\xc5?\
+\xff\xf3?\xb3x\xf1b\xee\xbd\xf7^\xf6\xed\xdb\xc7\xe2\
+\xc5\x8by\xf3\xcd7iii\xa1\xbf\xbf\x9ft:\xcd\
+\x94)S\x90R\xb2}\xfbv\xd2\xe9\xf4\xb1\x03r\xe0\
+\xc0\x81\xbf\xcb\xe5r\x9b\xd41~\x22\x1fr9\xff\x96\
+:\xcaY\x07\xbb$)\xa5\x5c\xd2]\x16\x99\x036\xee\
+8\xa0&M\x9a\xe4\xd1+U\xb1XlF>\x9f?\
+\x00\xb8\xe3wJ8\xa2a\x14%\x97\xcf\xfc'&\xd7\
+\xd5\xf2\xf3=\xdf V\xd7H\xa2\xf9\x00\xc9\xf5!_\
+\xf7:\x8eC:\x9dFJI8\x1c\xc6\xb2,\x06\x06\
+\x06\xbc\x06\x98\xb7\xf3\x1cTM\xd3X\xbdz5\xf9|\
+\x9e\x1f\xff\xf8\xc7~\x02\xad\xae\x5cEh\xeb\x1c\xee\xda\
+|\x17\xaa2\x87\xdf\x06\x9e \xa4\xebHCe\x8a\xb3\
+\x98\xa6\x13\xbd\x9d&\xb9\xfa\xea\xab\x7f\xeeU\x8e\xacY\
+\xb3f\xaaW\x13l\xdb\xb67\x8f\xd7\x1f6\xe3\xba.\
+\x93'Of\xfa\xf4\xe9\x94\xcbef\xcc\x98\xc1\xbau\
+\xeb\xfcd\xde\xce\x9d;\x8f\x8f\x97eY\xd6\xd6@ \
+ =5\x13\x01v\xfe\xc0|Kn]'\xa4\xeb\xa0\
+\x1f\x8ab5M\xc3\xb2,\x1a\x1b\x1b\xffz\xc9\x92%\
+\x97\xbd\xf8\xe2\x8b_\xb5,\xeb\xe4\xbe\xbe\xbeCc\x9d\
+\xde(\xa0\xb5W\xb3\xeb\xc46\xbe\xb1\xf9\x19fN\x99\
+\x89\x1e\x9fB\xdb\xe0N\xf2C\xae_\x1c\xf0\x16\xd1/\
+wtt<4\x96\xf134M{\xe5\xedr)\xef\
+{\xdf\xfb\xa8\xaf\xaf\xe7\xb6\xdbn\xe3\xd1G\x1f\xf5S\
+\xba\xaet)\x9b\x15\xb5\xbb!\xdd\xca{o\x0dO\x18\
+3e\x0d\x070{\xc2\x98\x07\xc389\x8d\xf1\xb3T\
+\xbc*z/\xc6\xb9\xed\xb6\xdb\x08\x06\x83\x94J%\xa4\
+\x94|\xff\xfb\xdf\x9f\xd0\x7f\x22\xa5d\xf7\xee\xdd\xb4\xb6\
+\xb6\x1e6\x89yX\xed\xa7\xae\xeb\xf2\xd1\x8f~\x94s\
+\xce9\x87\x8e\x8e\x0ev\xee\xdcIgg\xa7?\xdb\xc3\
+4MN?\xfdt\xf6\xef\xdf\xcf\x9e={\x98={\
+6\x1d\x1d\x1d~&\xb1\x5c.\xeb\xe7\x9e{\xee\xbf*\
+BaX\x1b\x96\xd3O\x12\xc2\x1c\x0cc\x0f\x07qS\
+:;6\xee\xa5E=\x11g\xc4\xa5wx\x90&m\
+)\xeb\x13\xaf\xfb\xbd\xe0^q\xc0\x18\x91\x98O$\x12\
+\x1f\xfd\x93\x0f\xa5i\xbc\xf2\xca+\xacY\xb3\x86\x91\x91\
+\x11\x8a\xc5\xa2?O\xd7+\x0b\x02(\x0a\x93hm\x0c\
+\x92\xd3\xb8\xfd\x92/\xf1\x8b\xd6\xffd$2\x82=7\
+Kb\xb3E\xea\xe5*T\xad\xd2\xb2}\xd6Yg\xad\
+\xf3\x00)\x95J\x84\xc3\x95\xf3N\x8a\xb9J9\xa9P\
+\x15\x94?^\xd6,\x01\x91J\xa5\xa2\xc7\x05\x10)%\
+\xd7\x5cs\x0d[\xb6la\xd5\xaaU$\x12\x09\x16-\
+Z\xc4\xf6\xed\xdbihh\xa0\xb3\xb3\x93\x9a\x9a\x1a\x16\
+.\x5cH \x10\xa0\xbd\xbd\xdd\x1f\x00\xe9\xbd\x80\xfe\xfe\
+~\x1c)\xa9\xbe>/\xc2\x8bc\x84\x97fA\x91H\
+S\xc1Nk\xb8Y\x9d\xd4\xf3\xb58\x96\x8b\xe6\x1e\xaa\
+.\xf1\x06\xa7\xd5\xd5\xd5M\x985\xffN\x91t\xb1X\
+\xe4\x9cs\xce\xf1\xc1\xf4\xf4w]]\x9d\xff\xbdM=\
+*{\xbf\x5c\x87\xedf\xf8\x9b\xff\xfc\x18\x02\x9d@@\
+E\x1aQ\x14]\x22t\x13\xd5U\xbc\xd1\xb8\xb3\x0c\xc3\
+\xc0\xb6m\xaa\xab\xab+\xc9'\x04\xb5K\x82\xe8\x08\xf2\
+\x03\x0eF\xc6\x9d0\x9c\xc8\x93\x0aM\xd3D6\x9b}\
+\xc3\xb6\xed\xf7\x1e\x17@t]\xe7\xfa\xeb\xaf\xe7\xae\xbb\
+\xee\xe2\xeb_\xff:\xdd\xdd\xdd\x13N\xd2)\x16\x8bt\
+uu\x91\xcb\xe5\xfc)\x9d\xaa\xaa\x92\xcdf\xa9\xad\xad\
+\xc5u]\x7f\xc8\xc0\xc0\x036o(\xde\xb0Ie\x1c\
+eaR\xb4\xdahii\x99\x90\xb7\xf7&\xea|\xf4\
+\xa3\x1f\xe5\xfe\xfb\xef?\xac2#\xc30r\xb6mw\
+{u]B\x88\xe9\xaa\xaa\x0aO\xda\xfd\x89\xa8\x01\x8d\
+\x9aI1,\xcbb\xb4lS}\xe9\x10\xb5\x93td\
+I\xc3\x1c\x0aR\xec\x08@\x22\xeaWNz\xf1G(\
+\x14\xe2\x13\x9f\xf8\x04\xc9d\x92\xed\xdb\xb7W\x1a\x95j\
+-d\xfc\x90\xf3\xe1\xfd\xee\x15]\x94J\xa5r\x22\x91\
+H\x1d\x17@\xbc\xb9\x8a_\xf8\xc2\x17\xfe\xe8g\xf2\xf9\
+\xbcO\xcdK)\x19;\xb1\xccg\x81\x87\x86\x86*\x85\
+\xda\x93\xe3\xa8\xaaJ[[\x9b?\xcbw\xf1\xe2\xc5c\
+\xd4G\xd9\xcfq\xd8\xb6\xed\xe7\x0e\xaa\xaa\xaa\xfc\xf9\x86\
+\x87\x03H:\x9d~p\xd3\xa6M\x0fz?O\x9f>\
+\xddRUU;\xf1\xc4\x13\xe9\xee\xee\xf6\x81\xf6^\x98\
+a\x18${Fh^\x7f\x12\xd9R\x89u\xeb\xd6\xa1\
+i\x1a\xcb\x97/\xa7\xa1\xa1\x816\xa5}\xc2\x09:\x17\
+^x!\x93'O\xe63\x9f\xf9\x0c\x8f<\xf2\x08/\
+\xbf\xfc2\x97]v\x19\xbf\xff\xfd\xef\x995k\x16\xc3\
+\xc3\xc3l\xd8\xb0\x81X,\xc6\xa9\xa7\x9e\xcas\xcf=\
+w\xd8\xa4\xe5a\x01\x92J\xa5\xfe*\x9b\xcd~\xa3\xa6\
+\xa6fQ>\x9f\xf7\xcb\xfb\xc7\x1b\xaa\xb7\x1a-\xaf\xc8\
+\xce\x03\xc5\xcbuTUU\x11\x08\x04hjjb\xe6\
+\xcc\x99\x0c\x0c\x0cL8\xbfj\xfc1B\xe3\x8b\x93\xbd\
+\xe1hG\x93\xfc\x92R\xb2n\xdd:\x86\x86\x86X\xbd\
+z\xb5\x1fKyR\xe8yJ\xb6m\x93N\xa79\xeb\
+\xac\xb3\x88\xc5b$\x93I2\x99\xcc\xf8S\xd80M\
+\x93\xbd{\xf7r\xdbm\xb7122\xc2\x8e\x1d;p\
+]\x97\xed\xdb\xb7\xe3\xba.\xfb\xf6\xed\xf3\x9f\xbdP(\
+088xD,\xf2a\x01\x92L&\x7f]WW\
+\xf7\xcf\xcb\x97/g\xf5\xea\xd5tww\xb3y\xf3f\
+\xba\xba\xba\x08\x04\x02~\xe2~\xea\xd4\xa9\xf4\xf5\xf5\x91\
+N\xa7\x994i\x92\xcf~\xfa%=\xe3b\x10\xcb\xb2\
+\xc8\xe7\xf3>M>\xfe@\xb1\xf1\xb3s\xc7^\x5cj\
+``\xe0\xe1\xb1\xff7r4eE\x86a\xf8R\x9b\
+\xcdf\xfd\xef\x1f?t\xdfSK\xa6i\xfa\x07\xd5x\
+\xff\xe6\xfd\xbd\xe38\x8c\x8c\x8c\xb0j\xd5*_\x9dC\
+\xa5\x9b\xca\x1f\xeb1n\x83\xbe\xf1\xc6\x1bG\xd4Bw\
+$\xe7\x87\x88\x8f\x7f\xfc\xe3\x0c\x0e\x0er\xed\xb5\xd7b\
+\xdb6\xb3g\xcf\xa6\xaf\xaf\x0f\xdb\xb6\xa9\xab\xabC\x88\
+J2\xa6\xbd\xbd\x9db\xb1H0\x18\xf4\x87${\xb6\
+\xc0\x03\xc4/\xf3\x19\x03a\xbc$\xa9\xaaJ \x10\xa0\
+\xa5\xa5\xc5\x9b;5\xd2\xd9\xd9\xf9\x89\xf11\xce\xf8\xa0\
+\xf0pT\xee\xc5\x17_\xccE\x17]\xc4\xf0\xf0\xb0\xaf\
+\xb2B\xa1\x90\x9f\x8a\xf6\xd4\xd7x\x06`\xfc\xe1g\xde\
+\xdc\xc9\xb1\x0d:\x81L\x1c_r\xfbv\xd7\x96Rv\
+I)\xfb\x8e7 |\xfa\xd3\x9f\xe6\xa1\x87\x1e\xe2g\
+?\xfb\x19/\xbe\xf8\xe2\x84\xf38\x0c\xc3 \x1a\x8d\xfa\
+e\xf7\xde\x91\x0e\x9ek\xec\xa9\xaf\xf1\xa7\xd5\x8c?\xe9\
+\xcd{!\xc5b\xd1\xaf2\x9c:u*\xe9t\xfa\x0f\
+(\x87#\x01\xc3SYMMM\xec\xde\xbd\xdbW\xb7\
+\x9eZ\x1c\x7f\x14\x85\xf7gOZ\xc7\xd7T\x99\xa6\x89\
+\xae\xeb\xdcq\xc7\x1d\x5cp\xc1\x05\xfc\xfb\xbf\xff\xbb\x97\
+_\xf7YkO\xda\xab\xaa\xaa\xfcA=RJv\xed\
+\xda5\xeb\xb8K\x88\xe7>~\xf0\x83\x1f\x9c\xd0S8\
+\xdevx\x93\x9d=\xfdYUU\xe5\x9f\xc4\xe3\xedJ\
+\x8f#\xf2\xa4\xc5\xf3F<\x8a\xc4\xa3\xab\xa5\x94\x13\x06\
+\x80\x1d\xcbJ\xa7\xd3\xb36o\xde\x8ceY\xf9\xe9\xd3\
+\xa7w\xacZ\xb5\xaa\xf6S\x9f\xfa\x147\xdf|3\xf9\
+|\xde\xef\xb5\xf7\xdcZo\x1c\xdfx\x9a?\x93\xc90\
+{\xf6l\xce=\xf7\x5c\xa2\xd1(\xe7\x9cs\x0e\x1b6\
+l\xe0\x92K.a\xcd\x9a5\x5cy\xe5\x95<\xf9\xe4\
+\x93,\x5c\xb8\x90\xda\xdaZTU\xe5\xb9\xe7\x9e\x9b0\
+\xed\xfax\x03\xf2\x8b\xee\xee\xee\xed\x8a\xa2\xac~\xef{\
+\xdf\x8b\xa2(\xb4\xb7\xb7c\x18\x86?\xef\xdc\xd3\xb75\
+558\x8e\xe3\x0f\x94\x14B\x90J\xa5\xfc\x01\xf5\xe3\
+U\x96W\xd1\xe7}n\xacZ]:\x8e#l\xdb\xa6\
+\xa6\xa6\x86L&\xa3\x1e# ~N\xa3X,\xbaw\
+\xddu\x17\xeb\xd7\xaf\xa7\xba\xba\x9a\x91\x91\x11\x7f\xf7\x8f\
+\xb7g\x1e\xd52>\xd1\x96\xcb\xe5\xd8\xbd{7\x0d\x0d\
+\x0dx\xe7\xffzn\xef\xd6\xad[\xb1m\x9b\x9e\x9e\x1e\
+\x7f\x10\x8d7\x92\xe9\x88\xec\xdd\xe1|\xc8;\xab\x0f\xd0\
+\x96,Ybm\xdd\xba\x95\x9d;w\xd2\xd3\xd3\xc3\x96\
+-[X\xb1b\x05?\xf8\xc1\x0f\xb8\xf0\xc2\x0b\xe9\xec\
+\xec$\x18\x0c2\x7f\xfe|:;;y\xf5\xd5W\xc9\
+f\xb3\x0c\x0f\x0f\x13\x8b\xc5\xfcrS\xef\x04\x01)\xa5\
+\xdf\x9f\x18\x8dF\xfd\x03Q\x06\x07\x07\x13\xe5r\xf9\xe5\
+1\xbb\xb4gdd\xe4\x8b\x1c\x87u\xe2\x89'&n\
+\xbc\xf1\xc6\xfaK/\xbd\x94\xcf~\xf6\xb3\x0c\x0c\x0cP\
+*\x95\xfc9\xed\x85B\x81)S\xa6\xf8\x07\x9cy\xe3\
+oUUe\xe6\xcc\x99d2\x19\xff\xb4\x87\xb7s\x1e\
+\xde\x9a\xe6\xb5m\x9b7\xdf|S\x1cW\x09\x19\xa7\xc3\
+\x15\xcb\xb2x\xf8\xe1\x87\xb9\xec\xb2\xcbx\xf4\xd1GI\
+&\x93\xbc\xf0\xc2\x0bH)\x19\x1c\x1cd\xdf\xbe}\x95\
+\xb3\xa5\xba\xbb'd\x10\xbd\xc1/\xe9t\x9a`0\xe8\
+\x0fO\x8eF\xa3\xbe\xd4\x18\x86\xc1\xec\xd9\xb3\xc9d2\
+(\x8a\xb2+\x93\xc9\x5c\xc3q^\xba\xae\xf3\xe4\x93O\
+\xf2\xd4SO\x91\xcf\xe7\x99<y2\x9f\xfd\xecg\xf9\
+\xf4\xa7?\xed\x0fK\xf3F\x8d\xc7\xe3q\x9f6\xff\xfc\
+\xe7?\xcf}\xf7\xdd\xe7\x8f\x05\xf4\xc8NO\x9d\xd7\xd5\
+\xd5\x91\xcf\xe7I\xa5R4662<<\x8ceY\
+}\x8a\xa2\xe4\xff,*\xcb[\xa1P\x88{\xee\xb9\x87\
+\xfb\xee\xbb\xcf\x8f\x13<u\xd3\xdd\xdd\x8d\x10\xc2\x1fv\
+\xe6\xddlUU\x95O\xc5{'-{\xb6\xc6;\xef\
+\xd0\x8b?\xf6\xec\xd9s\x5c\xfb\x00\xdf\xbaFGG_\
+\x09\x87\xc3\xd5c\xf7\xb6\xf2\x1b\xdf\xf8F\xe4\xb5\xd7^\
+\xf3\xef\xcd\xb3a\xe3\x8f\xdep]\x97U\xabV1u\
+\xeaT\x96-[\xc6\xd3O?Muu5[\xb6l\
+\xa1\xb9\xb9\x99\xad[\xb7\xb2r\xe5J\x0a\x85\x02\xed\xed\
+\xed\x1c<x\x90h4Joo\xef\xe5\xdd\xdd\xdd\xdb\
+\x8f\xa4\x0b\xe0H\xad\xa56s\xe6\xcc'\xa3\xd1h@\
+\xd7\xf5\x0bO<\xf1DB\xa1\x10\xaa\xaa\xb2o\xdf>\
+\xbf\x059\x1c\x0e\xfb\xd3\x0dB\xa1\x90\x7f\x1cP&\x93\
+!\x97\xcbM\xe0\xb9\x82\xc1 \x17^x!/\xbf\xfc\
+2\xde\xbcu!\x04\xed\xed\xed\xaf\x0f\x0c\x0c\x9cy<\
+\xc1\x18\xb3G\xfe\xcfs\xe7\xce\xdd{\xed\xb5\xd7\xce\xbb\
+\xf9\xe6\x9b\xb9\xfc\xf2\xcbY\xb6l\x19---<\xf9\
+\xe4\x93\xbej\xfd\x87\x7f\xf8\x07\x1ey\xe4\x11\x0c\xc3\xe0\
+\x86\x1bn`\xd3\xa6M\x8c\x8e\x8e\xfa\xae\xb0\xd7\x93\xa2\
+\xeb\xba\x7f\x0cG0\x18D\xd7u\xba\xbb\xbb\x97\x1d<\
+xp\xcb\x91\xdc\xe3\x91\xf6\x9f\xd9]]]\x97\xb7\xb6\
+\xb6^\x17\x0a\x858\xf3\xcc3\xf9\xc2\x17\xbe@4\x1a\
+\xa5\xb9\xb9\x99\xa9S\xa7RUU\xc5\x8c\x193\xa8\xa9\
+\xa9\xa1\xae\xae\x8eH$\x82\xeb\xba~\xa0\xb5r\xe5J\
+\x02\x81\x00\x0d\x0d\x0d\xc4\xe3q\x82\xc1 \xd1h\x94\xb1\
+\x81\xcdon\xdf\xbe\xfd\x9f\xb6o\xdf\xfe\x19\xe0+\xc7\
+[:\xc6\x831&\xa1\xca\x0b/\xbc\xc0%\x97\x5c\x82\
+\x10\x82{\xee\xb9\xc7?\x9fp\xc3\x86\x0d\x18\x86\xc1\x15\
+W\x5cA\x22\x91@\xd7u~\xf9\xcb_\xd2\xdd\xddM\
+\xa1P\xa0X,N89\xc7s\xedC\xa1\x90\xf4\xcb\
+\x91\x5c\xf7\x88\xdd\xc3\xa3:-Z\xd3\xb4\x80\x10\x82\x07\
+\x1f|\x90\x87\x1ez\xe8\x0f\xfe\xfd\xe0\xc1\x83\x7f\xd49\
+x\xab\x1b\xeb8\x0e\xbf\xfd\xedo\xbdIo\xbbr\xb9\
+\xdc\x7f\x02\xefX\xb6\x7f<V6\x9b\x95\x9e\x8a\x12B\
+\xf0\xfc\xf3\xcfs\xfa\xe9\xa7\xb3c\xc7\x0e6l\xd8@\
+}}=\x0f>\xf8 \x0f>\xf8 w\xdf}\xb7\xef\
+\xba{A\xafw\xc2\x90\x97\xbe\x1eSo\xa2\xad\xad\xed\
+\x5c\xc7q\xf6\xd4\xd5\xd5%\x8e\xf4\x9e\x8e\xca\xc1\x0f\x85\
+B\xb1\xba\xba\xba\xcf\x85B!\x17\xb8*\x1c\x0e/>\
+\x1c\xbd\xefMz\xf0\xa6<{\x996\xcf\xdfO\xa7\xd3\
+kzzz\xde\xcf_~E\x16/^\x5c\xf0\xfaE\
+t]g\xe9\xd2\xa5\xec\xdb\xb7\xcfw\xc9\x0f\xc7}\xf5\
+\xf8\xb1\xed\xdb\xb7\xcf-\x14\x0a\xedGs#\xc7<8\
+\xaa\xb9\xb9\xf9\xe7MMM\xd7\x1e\xce\x5cs\x0f\x14\x8f\
+\xce\xae\xa9\xa9\xa1P(\x14[[[\xa3\xe3\xbe\x8f\xfe\
+\xfe\xfe\xbf4 \xc1\x96\x96\x96m\xf1x\x5c\xe4\xf3\xf9\
+Hcc\xe3\x09RJ\x0a\x85\xc2a\x8f\x90-\x14\x0a\
+\x98\xa6y\x9f\xeb\xbaV\xb9\x5c\xfe\x8f\xa1\xa1\xa1\xd1\xff\
++\x80\x00\x81\xb1\xef\x09\x86B\xa1\xa5\x87\x1b\xd7xQ\
+{8\x1cNd2\x99]\xfc?\xb2\x82\xc1`m8\
+\x1c\xfeG\xd7u\x9d#`\x08d \x10H\x9e|\xf2\
+\xc9\xff\xf3\xc2\x0b/H\xde]\xef\xaew\xd7\xbb\xeb\xdd\
+\xf5\xeezw\xbd\xbb\xde]\xff\x8f\xad\xff\x03!\xf6p\
+\xa0\xc1\x03\x97\x85\x00\x00\x00\x00IEND\xaeB`\
+\x82\
\x00\x00~\xd7\
\xff\
\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\
@@ -6040,6 +5556,490 @@ R\x22\xd4\xca\xc6\x0aMn\x1a\x04\x81G\xd6\xdb@\xd5\
\xbd\xcdH7\xday\xe13\x95\xf7\xf8\x1f\xcb\xb6\x8e\xf6\
\x8f\xf1\xef\x16\x00\x00\x00\x00IEND\xaeB`\x82\
\
+\x00\x00\x1ax\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00d\x00\x00\x00i\x08\x06\x00\x00\x00\xcc|\x86\x8a\
+\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
+\x00\x00\x09pHYs\x00\x00\x88&\x00\x00\x88&\x01\
+\xac\x91\x9d\x06\x00\x00\x00\x07tIME\x07\xd9\x03\x03\
+\x0e\x04:\x04\x0e\x03\xc5\x00\x00\x19\xf8IDATx\
+\xda\xed\x9d{tT\xf5\xbd\xe8?\xbf\xbdg\xcfd\x92\
+\x0cy\x12\xc2#\x01J(\x8fJ\x90\xa2\x16k\xc3\xa9\
+\xa0\x02\xf5\xd4.\xbd\xda.[\xee\xa5\x85z\xb4u\xf5\
+\xae\x16\xef\x83\xf6\xf6\x9cs[\xd0z{\xafK\xaf\xbd\
+\xb4\x97\xd5z=*\xb7\xd6\x1e=\xe7\xd4Z\xa1*x\
+\x05\x0fJ\x00Q\x08\xa4\x09\xaf\xc8#\x04\xf2\x9a$3\
+\x99\xcc\xec\xc7\xef\xfe1\xccf\x1e{\x87\x09L\x12p\
+\xe5;k\xafd\xf6\xfe\xfd~\xfb\xf7\xfb\xbe\xbf\xdf\xdf\
+c\x04@eee\x9d\x10b\x07c0\xea\xa0\x00\xaa\
+eY\xda\x18*\xae\x0e\xf0\x00\x85\xa6i\x16\xaa\xaa\x0a\
+\x80\x94\x12\xcb\xb2\xc603B \x84@Q\x94\x14\x82\
+\x94\x1b\x86Q\xe6\xf5z\x01\xc8\xcf\xcfg\xe5\xca\x95c\
+\x98\x1a!\xd8\xbf\x7f?{\xf7\xeeM!\xc8D\xc30\
+*\xd3\x0b\x9a\xa6\x89\xae\xebc\x18\x1bF\xc9\xf0\xf9|\
+\x08!2T\xd6\xf8\x0b\x97\x0dRJ\xfa\xfb\xfbik\
+k\x1b\xc3\xdc0A^^\x1eS\xa6LAJ\x99A\
+\x90\x80eY\x81\xf4\x0a\xc3eK\x84\x10((\x08@\
+ \x88\x19&1\xcb@\xf5\x9b\xf1;1\x0f\xaa\xa5\x82\
+\x00\xa1H\x10 \x91\x9f8\x82\xa4\x13\x22\x99 ^!\
+\x84\xe6T0]\x9cr\x01A\xa3\x8f\x93\xfa9\xba\x8d\
+\x10\x032\xc6gn\xc8gvm\x01Iv\x8d\xfe\x1e\
+\x89l\xcf'v\xce\x87\xd5\xee\xc73\x90\x17'\x90\xdd\
+\xb1O6A\x14\xcb\xb2\xd4d\x22X\x96\x95S\x09\x11\
+@\x8f\x19\xa6a\xe0\x04\x1df\x0fB*L\x9d\x9e\xc7\
+\x8a\xa5e\xe4\xe5)\x98&H\x09\xe2\x824\x14\x94\x0a\
+(\xebG\xcc\x09\x83\x02\xb1\x01\x89\xec\xd30z5d\
+\x9f\x86\x19\xf2`\x854\xac\xb0\x07+\xa4\xa2\xe8\x9a-\
+M\xf1K^\x13\x04I\xe09\x9d \xc2I\x12\xdc(\
+x9\x10\xb2\x22\xfck\x7f\x03RJT\xa9R1\xc9\
+\xcb\x17\xbfT\x8a\xb4\xc00$B\x08\x12]\x10q\x1d\
+\x05R \x11`H4U\x81b\x13o\xb1\x09\x0c\x10\
+\xef\xda\x85r\xc0@Hb\x9c\xcf\xc3h\xf7\xa1\xb7\xf9\
+\xf0\x84\xf3mN\x10W\xa9D\x0d&!\xae\x94\xcb\x85\
+\x84\x18\xd2dW\xff\xa1\x0b\x12 \xf0\xe5\x09n\xbb\xab\
+\x0cie\xa9\x16\xed\xe7\xc2\xf1\x96\x04\xfcE\x02\x8a\x07\
+\x10\xb3\x07@\x01=fa\xf6z\xb0z\xbd\x18\xbd*\
+\xb2\xcf\x8b\x19V\x91!\x0fFHA\x89z\x11B\xc6\
+\xc3\xe2Q\x92\xa8\xc1$\xc4\xb5B.\xa4\xe4\xa4~\x0e\
+C\x9a(\x17\xb0X3\xb7\x00E\x11\xc8\x1c1\xae\xdd\
+\x86\x14H\x13\xa4\x09\x1e\xa1\xe0)\x92P\x14\xbd0\x96\
+\xfe\x14\x89\xd2\xa3\x92\x816\x0d\xeb\x9c\x9fH\x9b\x07O\
+w\xbe\xad\xeeFJ\xa2\xb2\x96\x90db\xe4\x82 \xed\
+FO\x8a\x14TN\xf6\x0e\xab]\x16N\xff%K\x94\
+\x94x\xfd\x02\xef\x0c\x1dQ\xa3S\xa2HL\xab\x83X\
+\x8f\x02=^b=*\xf4z1\xc2\x0a\x845b!\
+\x81\x12\xd1\x10jn%\xc9\x0d\xbf\xc3N\x90\x90\x8c\xa4\
+|/,RG= \x03\xc0\x8aK\xa94@\x11\x0a\
+y\x85\x12\x0ac\xe4M\x06I\x04d\xc2\x96\x81e@\
+\xd7\x9fK\x90]y9'HV*+\x97\x0410\
+\xe3\x86\xfa\x02\xf8|\xa3K\x10W\x02\xa5\xcbV\xc2c\
+\x93\xa0\xfa@\xd1\xc0\x90r\xe4\x09\x92K\xef\x8a\xf8x\
+l\xfb\x01\xa0\x88k,\x8c\x10I\x03\x19\x01\x18TB\
+\xc6\xb2\xbe\xc3\x97\xb9\x18\x92\x0d\xc9\xb5\xa4d\xb6%\x87\
+P\xf7\x82Z\x11\xf1zq\xc4H[\xdd\x08.\xc60\
+\xc3J\x90\x1c\x8b\xc8\x90\xbc\xac\x04'\xe4\x82#\x84\x88\
+\x1b\xcdTP\xb2\xaa\xab\xa8\xd0\xd5\xaes\xead\x1f5\
+\x15s\xb8a\xc6MT\x96N`z\xe5\xa7P\x15\xe8\
+\xeco\xe3d\xf0/\xb4\x85>\xe6xw\x03\x8aP\x1d\
+\xde\x953\x0c\xe6\x5cB\x86\x1c\x87\x0c\xb7cz)\xc9\
+x\xfbO\xdd\xf4\xb4\xc3\xab?\xfb\xbf\xcc\x9f>\x1f\x8f\
+\xeaq\xec\xa7)\x0d\xce\xf4\x1e\xe5\xd7{\xff\x96\xf3\xa1\
+\x93\xa8\x8as\xb9DF\xc0\x92V\x5c\xf2\x10Y\xe7\xeb\
+\xe40\xa8@'<+\xd9x\x01Wr]\x0e\xc4\x06\
+,^}\xb1\x0d-V\xc6G\xcf\xec`a\xcdBT\
+Eu\xf5\x92<\x8a\xc6\xd4\xe29l\xb8\xeden\xfd\
+\xd4}\x18\x96\xeeX.\xd4k\xb0\xedO\xedL\xb6\xea\
+\xb8\xbfv-K>\xf5U\xe6\x8c\xff\x5c\xd6\x0c\x92+\
+\x9c\x0c\x86\x97aw{\x11\x82\xf4f\x06k\xd7\xb2\xe0\
+\xf5\x7f\xec$\xe0/\xe5\xfd_\xbe\x89\xdf\xeb\xcf*\xc5\
+\x92\x90\x80\xfbk\xff#\xc5y\x15\xfcc\xc3\xff\xc4\xab\
+\xfa\xec\xe7\xaaG\xd0rd\x80\xe6\xc3=\xdc\xff\xf7\x7f\
+C\xcd\xc4\x99\x00\xb4t\x1f\xe6\xf0\xf9\xf7\xb3\xa0\x88\x95\
+S\xad\xe1\xa4\xae\x06UY\xb9\xf3\xf3\xe3\xaen2\xa7\
+*\x8a;r\x0f\x7f\xd0G\xa4\xdf\xe4\xe7\x0f>b\x13\
+#\x1d\xa2F\x84\xf7\xff\xb2\x1bM\xf8\xb9a\xd6\x02\xbc\
+\x1eo\x0aaV|z\x15M\x1d{i\xee\xfc\xe0\x22\
+AT\xc1\xc9c\x03TV\x94P3q\xa6M@\x04\
+)s\xdaW\xaajs\xee\xf6\xe6B\xe5\x5c\xb6\x1f#\
+\x05\x87?\x0cQ^\x12\xe0\xdf\xdev\xbfc\xa9s\xa1\
+S\xfc\xb7\x9d\xab\xe9\xe9\x0b\xb3\xf5\xe5N\xaa'T\xf1\
+\xde/\xde\xca\x08\xf4\xfe\xcdg\xfe=\x8f\xbd\xb3\xca\xfe\
+\x1e\x09[\xf4\xf5\x98\xdc<oavI\xcda\xca\xed\
+]J\x0b)\x83\x89\x93eYW|%\x5c\xc6\xc4'\
+\xfd{\xe2\xa3\xa8\x82\x86}}t\xf7\x84\xf9\xdf\x8f<\
+\xe1j\x04_\xf8\xf0Q\x22F\x98\xbc|\xc1\xedw\x97\
+p\xf0H\x13w\xfe\xf8\xde\x0c\x04W\x15\xcd\xa4\xa6t\
+>\xa6e \x91tw\xe8H$\xd7\xd7\x5c\xe7\xe8\xd2\
+^\xf2\x93#|$.7/Kq2~\xb9\xe4\x06\
+\x91\xf6q\xba'\x10(B\xa1\xf9`?\x15\xe5E,\
+\xb9~\x89\xa3Q\xee\x8e\x9c\xa3\xb1\xbd\x1e\x81@ZP\
+P\xa82s\xf68\xde\xfbp?\xef7\xd6g\xd4Y\
+\xb3\xf0\xa7X\xc4\xd0T\x85sma\xf4\x98\xc1\xbcO\
+\xcd\xc9p\x9f\x84\x14\x5c\xea\x93k7+\xeb\xc00\xd9\
+\x1d\xcb\xdd\x8c\xa1\xc8 Q:t\xb4\xc5\xd0c\xb0\xe2\
+\xe6\xbfr\x8d%\xde9\xf1O\xa8\xc2\x13\xaf\x7f\xa1\x89\
+\x09\x93}\x9c<\x16\xe5\x9d\x8f\xfe\x95EsnJ\x19\
+G\xb1\x7f<M;Kh:v\x8a\xed\xbfx\x99\xfe\
+\xaf\xc7\x983%\x95 \x01_\x09\x9f\xabZ\xce\x80\x11\
+A7#\xb4\x87[\xe9\xe8?\xe3(E\xb9\x8eCF\
+\xc7\xcb\xca\x12\xba\xdau\x84\x80\x053\xe7\xb9\x96i\xee\
+\xfc\x00U\xa4\xba\xbf%e\xf1\xe5\x00\x07\x8e58&\
+\x0d\xe7U\xcd\xa7\xe1/\x1f3\xa9d2%S\xca3\
+\xda,\xcb\x9f\xc8\xaa\x05\x7f\x1bO\xecJ\x8b\xffw\xe2\
+e^9\xf4\xf4\xd5eC\x86#\x0f\x94\xfar\x99q\
+\x85zM\xa4\x94TULtm\xe7tO3B(\
+)\xf5\x0a\x02*RJ\xcev\xb6;\xd6\x99;\xf53\
+Y\x05v\x82xFAIk\xff\xe2u\x15$\x17s\
+\xc1\x11\x8aHUQ\xc2\xc5}\x0c\xf7Y\x08!\xa8\x99\
+<\xd3\xb5-\xc323\x8c\xb7?_A\x08Ak\xc7\
+\x19\xc7:\xd3&M\xc62\xa1\xc0\xe7O\x89W\x06W\
+\xaf\xc2\xd9\xf0\xcbQ\x9a\xa0J\xcfi]y,\x22.\
+\xe9\xd3\x87CqdW\x96\x959G\xeff\xd4\x11\x91\
+\xaa'\x9e\xfe\x08G#\xce\x122\xb3\x9a\xaf\xfdM%\
+\x13\xef\x9bEYQ\x11G\xfe\xe1P\xaa\x1b\xddw\x8a\
+\x7f>\xf8\x0c\x9a\xe2\xa3\xc0WHG\xf4cg\x82X\
+W\x81\x0d\x19I\xd0c\xf1\xc1\x96\x14\x16;?7\x07\
+\x5c\x93L\x9aO\x10\x899?/\xce\x1b\x8f\xc7\xa3\x90\
+\xe7\xc9\xc7225t\xc4\xe8\xe3@\xc7\x9b\xa92\xe2\
+\xb4\x0ag\xd8\xd5\xf8 ^Vn\xd7ee\x17\x80\x99\
+F\xbcc\xf9\xde\x80\xab\x84\xb8\x81\xd7\xab\x10\xeew^\
+\x87\xecU\xf3.\xa6\x0c\x84s\xf7D6\x19\xe2\xd1\xcc\
+\xf6&b\x91\x5c\xac\x5c\x8c\xe3A\xa4}w \x889\
+x\xf4\xac\x9bQW\xd2\xfa|\x0a\xbaa:>\xd3T\
+\xef\xc5\xf5s\x0e\xed\x0bW\xab\x96\x8d\xea\xcd\xb5*\x1f\
+d>d\xa4g\x0c\x0dC\x0e:\xdf\x1e\x1bTe)\
+\x18\xba\x85i\x99\x19YaM\xf1]\x94\x84+\xc8G\
+\xe5\x1a\x1f\xc9\x11\xfb\x88g{\xb3Q\xc0\x8a\x10\xf6L\
+\xe0P\xb8SB\xea\xaa\xc7a\xe2\xea8>\x86?R\
+WFB4\xb3\x01U\x15\xe8\x86;\x07\xda\xb6\xc0\x81\
+\xdez\xccBU\xe3;\x91\xd2\x07iZ\xc6\x05\x0c\x08\
+W\x09\x1b-\xc8Ze\xb9\xcdf]I.+\xcd\x8a\
+:\xbb\xaf\x03\xee\x8c\xa0\xa9>\xc7z\x08\x81\x11\x13h\
+\x9a\xc7q\x90\xba\x15\x03q1\x8b\xe6J\xd5Q\xca\xf6\
+fmC\x92\xb3\xb5#%!\x08\x88\x9a\x11|j\xe6\
+<\x88m\x0b\x5c\x5cf\xaf\xe6qq\x06b\xb9A \
+\x16\xb9DG\xd6\xd9\xde\x5cJ\x87\x9bMrJo\xfb\
+\xfcqus\xae\xfb\xbc\x8b\xca\xf29\xd6\x13\x02b1\
+I\x9e\xe6u\xce\x00\xc4\x82\x17\xd3\xfe\xd2\x0d\xd9\x97\xfe\
+\x0cG\xb6wH\x81a\xee\x88\x929C\xa88\x98\xae\
+\xfc\x02\x15EQ\xe8\xea\x09R]>\xd5Qe\x09\xe9\
+\x10\xb4I\xe2\xa9\x91|g\x1b\xd3\x1b\xed\x8e\xef\xd8\x12\
+\x02\xb7\x89A%\x8b\x94\x9e\xcc\xf1\x14\xee\x90\x92\x8b9\
+\x9d\x0f\x11\xd99\x0c\xfe\xfc\xb8\xbb\xda\xda\xd96\x88\x1d\
+\xf1f\x1am#\xfe\x8e\xc2\xbc\x80\x0bA:\x93\xe2S\
+qEJ+\xd70j\xb9\xacl\xa0p\x5c\x9c \xc7\
+[[\x5c\xcbT\x17\xcf\xe2H\xc7G))\xf8p(\
+\x1e\x10V\x8f\x9f\xe2X\xa7-\xd4\x92#\xe41\xba\xb9\
+,\xb7U\x11\x97=\x9a4\x9d\x9d\x0e%\xe5\x1aH\xc9\
+\xfe\xa3\x07\x5c\x9b\x99Q2\x9f\xa6\xf6\x0fRTL\x7f\
+\xc8\x02)\x19_R\xeaX\xe7l\xdf\x09\xdb\x068\x8e\
+'\xcbM\xa5r\x98V\x9ddm\xd4s\x16\x8b\x08\x01\
+\x8ab_\x82\xf8.\xdc\xf4Oi\xb9\x06\x8a\xc2\xa1\x13\
+\xcd\xae\x1c\xf4\xb9\xaa\xe5X\xd2L\xa9\x17\xec4@Q\
+X8k\x81\xe38N\x06\x9b\xe2\x04T\x04\xc2a\xb5\
+\x8b\xa6\xe6\xa1\xc8\xe4\x16\x9d\xfb7\x12i\x93AmH\
+2\x05Gb\xa1\x9c\xd7'\x982\xcd\xc7\xc1\xa3\xcd\x1c\
+=\xdb\x9c\xd1a)%\x13\x0a\xab\xa9,\x9c\x9a\x82\xf0\
+\xf3\xad1,\xcb\xa2\xae\xf6s\x19\x03n\x09\x1e\xe6|\
+\xe8T\xdc\xadV\x04\xb1hf\x02rBA\x15\xba\x15\
+E7tN\x9f\xee\xa37\xe8\x9c\x13\x93\x96\xcc\xe9B\
+\xb9\xac%\xc4-\x1e\xb9\xa2U'\xe9\x04r\x98\x903\
+\x0dX\xb0(\x80G\xd5\xf8\xbb\xff\xf3\xb8+G\xdd2\
+\xf5.L\xcbDQ\x05\xbdA\x83\xa3\xcd\xbd,\xbdq\
+\x11\xb5\xd3k3\xea\xbc\xd6\xf8\x1b<\x8a\x06\x12\xbc>\
+\x85H4\x13\xd9\xaa\xe2\xe1?\xd7=\xcb\xd4\xe8\xdd\xac\
+\xb9\xfeg\xac\xff\xebg\x1d\xfb7\x1c\xabN\xb2\xb6!\
+\x09$\xe6&\xdb\xeb\xb0:]8\xc7\x02\xf9\x85*S\
+\xa7\x17\xb0m\xdf{\x1cm=J\xcd\xa4\x9a\x8crw\
+\xd4\xac\xa4\xab\xff,\xbf\xdd\xf9\x02;\xdf\xe8\xe3\xcbu\
+\xb7\xf3\xcc\x7f\xf8_\x19\xe5Nt\x1f\xa2\xa9s\x9f\xbd\
+\xce\xb7\xb8\xd4CO\xb7A\xd3\xe9&fM\x99\x952\
+\xcei\xa5\xb3Y\xf7\xb5\xd9\x00\x9c\xeai\x1a$\xa0\x1f\
+\xfe\x94\x922\x98w\x95+\x09\x89\x13E\x5c\xdcV\xe0\
+p\xd9\x8b\x12n(\x04\x09?\xfb\xedS\xae\xb6\xe4\xfe\
+\xf9\xff\x89\x8d_{\x9d\xc3\xcf\xedd\xf3\x0f\x7f\x8dO\
+\xf3e8\x0co\x1c}!\xe5}Sk\xf2@\xc2?\
+\xed|mP[)P\x1c\xfb\x97Xu2\xe2\xeb\xb2\
+F\xc3\xe5M\x86\xf2J\x8d\x1bn\x19\xc7+\xdb\xff\xcc\
+\xaf\xfe\xb4)\x13a\x17\xbeW\x8f\xafbRIU\xc6\
+\x80\x04\x82W\x0e\xfd\x82\x03m\xef\xa6\xdc\x9fT\xed\xe3\
+\xc6\xc5\xe3x\xea\xa5g\xf8\xf5\x96\xe7\x1cm\xd4\xbb-\
+\x7f\xe0\xf9\x0f\x1f\xcd\xc6Q\xcc\x99\xdb\x9bU\xfa=\x97\
+\xfbC\x86\xec\x0e\x9a\x92\x9a\xb9~\x06\x06\x8a\xf9/\x9b\
+\xfe;\x05\xbe\x00\xff\xee\xb6\xfb]\x83\xbad\xc4\x1a\x96\
+\xce\x96\xe6\x7f`\xdb\xf1\xdf\xc5mG\xca\x98$3f\
+\xfb\x99>\xd3\xcf\x96\x8f\x7f\xc1\x9f6n\xe4\xf3so\
+\xa4\xbc\xa8\x9c\x96\xee\xc3\x9c\xedk\xc1\xa3x\xf0(^\
+g\xd54L3\x86#\x1e\x87\x88\xcb\xb09R\xc2\xdc\
+\xeb\xf3\x99\x5c\xed\xe3\xd1\x17\x1f\xe7\xb7o\xfc\x0b\xcf\xae\
+{\x8a\x89\xa5\x93\x5c\xeb\xedo}\x9b\xd7\x9b\x9f\xe5l\
+\xa8%\x83\x18\xc9\xed\x0a\x05\xa6T\x15\x02\x92\x93\xe1\x83\
+\x9c\x0cK\x04\xf19\xf7\xc1l\x845B\xabN\x94l\
+\xf3-#\xb9?$\x81\xc0\xe22\x0f\x7f\xfd\xb52*\
+\xae;\xc3\xc2\x87?\xcf\xb2uw\xd3\xdau\xd6\xb1\xfc\
+\xef\x0e>\xc1\xb9\xf0\xc9!\xec\xa0\x12\x17\xd6a\xa9\x17\
+\xed\xdb\x10\x82\xdb+\xc5\x99[\xc4~\xc9\x19C\xd34\
+\x87\x1c\xfe\xa7\xa4\xbf\x0d#e\xbf\xbdi\x19\x08K\xb8\
+\xe7\x8bdj\xe6\xc80\xa1\xb0\x04f\xce.f\xf7\x9e\
+\x8fxc\xef6\xbeyG\xe6\x89w\x9f\xa9X\xc4\xfb\
+\xa7^\xbfD\xe6If\x9d\xaa\x92i7#\xfd\x11\xfa\
+\xfb\x8d\xdcyS\x8a\x92\xbd\xca\xb2,\x0b]\xd7\x09\x87\
+\xc3W,\xa6Q\xdd@X\xa9\xf3\x13\xf22\xdc\xc7\x92\
+\xf1`\x18\x06\xef5\xec\xe5\x9bw\xac\x8c\xa7\xde\x93\x14\
+\xe2\x8aO\x7f\x93\xe6\x8e\x0f\xe8\x8b\x061\xa4\x8e1\xc8\
+*\x95ltk\xfa\x84V\xb4\xdf\xc00rG\x10\xc3\
+0\x18\x18\x18\xc88\xb5\xcfQ\xbec\xb1\x18\xb1X,\
+g6$\xd9\xedM\xec\xeb\x1b\xea5\xb1\xca\x87\xd7\xab\
+\xf0\xcf\x17\xdc\xd6t\x8e\x1e_0\x85\xbf\xbb\xf5\xb7\xfc\
+\xd7%\xbf\xe3\xceO\xaf\xc6\xb0bC{G\xc6*}\
+q1\x1eS\xa0\xaf-w\xc4\x18r\x1cb\x9afN\
+\xf7\x87\xe4*?y\xcb\xed\xc5\xb4w\xf5\xf1\xf7/l\
+p\xd4\xf9^O\x1e%\xf9\x15\x14\xfa\x8as\xb6\x8dY\
+Q\x05g\x0fE1BfN\xe3\x10\xb7\x88]\x19.\
+cn\x1b\xaf\x1c\x05\xb7\x96%\x99T\xed\xa3\xf6\xb3%\
+\xfc\x8f\xcd\x9bxk\xff\xf6\xac\xed\xd8\x151\x82\x80\xc3\
+/\xf6\xa2xs\x8b\x97\xcb\xf2\xb2\xae&HH\xc4\xe7\
+\x97\x141wA\x80o<\xb6\x9a\x97w\xbdD{\xef\
+yB\x03\xbd\xe8f\x94\xa8\x11!\xa2\x87\xe9\x8f\xf5r\
+\xa5\x9c\x90`\xa6\x13o\xf7\x13\x0b\x9a#6N\x8f{\
+\xfeI\xe4&w\x93c\x0e\xb6,XxK\x80y\x0b\
+\x0b\xf8}\xf3c\xfc\xf9\xf4FJ\x03%\xf8}~L\
+\xcb$fF\x08\xc7z\xd1\x14\xef\x15\xbdG\xf3+\x9c\
+\xd8\xd5\xcf\x91\x7f\x09\x0dK\x0e\xcb\x0d\xbf\x1e\xaeA\x90\
+\x16h^\x85\x12o\x1e\x10%\x18k#\x18\xbb\xccD\
+\xe0\x85UIR\x82\x11\x95\x981\x0b#\x229\xb6\xbd\
+\x9f3;\x22\xa8\x9a\x18V\x89w:\xb7wx%\xe4\
+jR{\x0a\x085n\xa8\x0dC\xd2sF\xa7\xb7\xc5\
+\xa0\xe7\xb4N\xff\x19\x13\xbd_\xa2\xf7[\xc4\xfa,\xa4\
+\x89M\x8c\xe1\xc2Cb\x0d\xf55/!\xd9\xc6\x13f\
+L\xdaW4d\x11<e\xd0sL\xa7\xfbc\x9d\xc8\
+\x19#\xcetJ\x9cP\xe9\xd6T\x0c\xb3u\x1d5\x09\
+\x91b\xf8\xce\x98\xb49^\x11\x98R\xd2{\xd6\xa0\xaf\
+\xc5\xa0\xe7\x8cA\xf8\xb4A,,1\xc2\x16\xb1~\x89\
+\x19\x89\xaf\xe1J\xa8(O\xde\xe8\xfb3Y\xdb\x90\x5c\
+\x8ah~\x97B\xa4\xd8\xe2\xb2\xd7\x9e's\xbc.\xb1\
+b\x12S\x97\xc4\xfa%\xc1\xd3:\xbd\xc7\x0c\xba>\xd6\
+\xe9?i\xc6\xc39\x9b\xe3EJ\xf4\xa8\x5ce\xba\xc0\
+\x8d\xe9=C\xa5\xe0Pa\xdcy\x15\x8f.\xe8\xad0\
+\x11Rd\xc5\xf1B\x11H$\xbd\xe7MB\x1f'8\
+\xde$\xd6g\xd9\x1co\xf4K{\xa9\x95\x10\xe0\xf1\x89\
+\x1c\xe4\x9aG\x1f\x5c\x93\x8b\xb9[u\x02\x05\xdd\xf1\xb3\
+\xdcCe\x16\xc9{*-#\xae\xdf-]\xa2\x0fH\
+zZ\x8d8\xc7\x9f\xd4\x09\xb7\x98`\xe2\xaa\xe3\x15\x95\
+k\x1e\xb2^(\xe7fp\xae\x84(\x85\xdd*\xaa.\
+h\xffK\x8cp\x9bI\xf8\x94I\xb4\xcfB\x0fI\xf4\
+\xb0\x85\x1e\x96q[\xa3\xc49^\xf5\x88O\xa2\xcb\x91\
+\xa1\xb2\xb2\xf6\xb2r\xed\xeaI\x01\xfe\x90\xca\xa1_\x87\
+>\xb1\x1c\x9f\x0b\xc3>\xb2q\x88\x00E\x13\x8c\x81{\
+\xa4\xae\x8c\xa1\xe6\x1a0\xea9\xb7!cpen\xaf\
+\xc8r\x8b\x17\x80\xaa\xaah\x9a\x86eY\xf6to.\
+7Z^m^P.\xeb\x0d)\xb9\xe8\xa6\xe3,\xcb\
+b``\x80;\xef\xbc\x93;\xef\xbc\x93\xf1\xe3\xc7\x13\
+\x08\x04\x88\xc5b\x04\x83Av\xef\xde\xcd\xee\xdd\xbb\xd1\
+4-\xc5\x8bp\xfa\x9b\xed\xb3\xa1\x96K\xf43\x19A\
+n\xe5\xae\xf4]N\x7f\x13S\xe0\xb1X\xcc\x959\xdd\
+\xee{\xb2Ix%\xc3g?\xfbY~\xf9\xcb_R\
+\x96v&I\x22v\xb9\xf5\xd6[\xe9\xed\xed\xe5\xe9\xa7\
+\x9f\xe6\xe8\xd1\xa3\x19\x03O\xb4\x9d>[\x96>\xd8\xc1\
+\xbeg[n\xb0\xff\xdd\xbe[\x96\x95r\x88\xdb`\xfd\
+u\xeb\x97\xc7\xe3\xc1\xeb\xf5\xe2\xf7\xfb\xe9\xef\xef\xb7g\
+`\xb3\x91$\xe5R\xfa-q\x19\x86\xc1\x8f~\xf4#\
+^z\xe9%\x9b\x18\xe9\xcbE\x13\x10\x08\x04X\xb7n\
+\x1d_\xff\xfa\xd7]\x17\x06\xe4\xe7\xe7SWWG\xe2\
+\x07-\xaf\xc6 -]3\xdcz\xeb\xad\x8c\x1f?>\
++5$\xa5DQ\x14\x0a\x0a\x0a\xc8\xcb\xcbs\x9d\xcb\
+\x1f\xb2\x97\x95\xa8\xf4\xfd\xef\x7f\x9fU\xabV\xd9\x1d\xaf\
+\xaf\xafg\xf5\xea\xd5l\xdd\xba\xd5.k\x18\x06?\xff\
+\xf9\xcfY\xb3f\x0d\x07\x0e\x1c\xe0\x8e;\xee\xe0\x9e{\
+\xeeq\x1c\xec\x8a\x15+\xf8\xcew\xbe\xc3M7\xdd4\
+\xea\x84P\x14\x85i\xd3\xa6\x0dZn\xee\xdc\xb9l\xd8\
+\xb0\x81\x87\x1ezh\xc8\xf6\xc1\xe7\xf3\xe1\xf3\xf9.\xcf\
+\xcb\xbax\x02\xb4\xb0\x7f l\xce\x9c9|\xef{\xdf\
+Ky\xd1\xb9s\xe7\xf0\xf9|L\x992\xc5\xae\xf7\xf4\
+\xd3O\xd3\xd8\xd8\xc8\xda\xb5k\x997/~2\xdc=\
+\xf7\xdc\xc3\xfe\xfd\xfbiiiI\xe9\xe4\xce\x9d;\x89\
+F\xa3\x1c<xpT\x09\x12\x8dFy\xe8\xa1\x87\xb8\
+\xf9\xe6\x9by\xe0\x81\x07\x5c\xcb\x1d?~\x9c'\x9f|\
+\x92\x03\x07\x0e\x5cV\xe0\xe7\xf3\xf90\x0c\xc3y\x01\xfa\
+P$\xc40\x0c6m\xda\x94q\xff\xdc\xb9sH)\
+\xa9\xac\xacDJ\xc9\x0b/\xbc@SS\x13\xabW\xaf\
+f\xde\xbcy)R\xb1v\xed\xda\x94\x05w~\xbf\x9f\
+P(\xc4[o\xbdE8\x1cv|\xaf\xa6ih\x9a\
+\x86\x94\x92\xbc\xbc<\x02\x81\x00\xf9\xf9\xf9Y\x9e\xb1\x1b\
+\x7fG \x10\xa0\xa0\xa0\xc0\x9d\x1b=\x1e\xaa\xab\xabY\
+\xb9r%\xcd\xcd\xcd\xe4\xe7\xe7\xe3\xf7g\xee\x91\xf7\xf9\
+|x\xbd^\xb6l\xd9\xc2\xf1\xe3\xc7\x07\x956UU\
+),,d\xdc\xb8q\x14\x16\x16\xda*Y\x08\xe1\xd8\
+vVF=\xf9Z\xb4h\x11\x13&L\xc8H8\xb6\
+\xb5\xb5!\x84\xa0\xa2\xa2\x82\x17_|\x917\xdf|\x93\
+\x07\x1ex\x80\xba\xba\xba\x0c]ZRR\xc2\xdc\xb9s\
+inn\xa6\xa4\xa4\x84\xa7\x9ez\xca&\xc4\xb7\xbf\xfd\
+mG;r\xef\xbd\xf7\xe2\xf1x\xe8\xea\xea\xe2\xab_\
+\xfd*~\xbf\x9fH$\xc2\x9bo\xbe\xc9\xb3\xcf>;\
+(\x92\x1f~\xf8an\xb9\xe5\x16,\xcb\xc2\xe3\xf1\xb0\
+g\xcf\x1e\x1e}4uU{,\x16\xe3\xc1\x07\x1f\xe4\
+\xde{\xef\xb5U\xe8\xb2e\xcb\xa8\xaf\xaf\xe7\x87?\xfc\
+\xa1].\x12\x89\xb0q\xe3Fjjj\x88F\xa3\xfc\
+\xf8\xc7?f\xff\xfe\xfd\x19\xef\xd5u\x9d\xeb\xae\xbb\x8e\
+G\x1ey\x84\xda\xdaZ,\xcbBUU6l\xd8\xc0\
+\x1f\xff\xf8G\x9bX\xaa\xaa\xda\x8e\xc3eIHB\xc7\
+'W\x94R\xd2\xda\xdaJuu5;v\xec`\xfb\
+\xf6\xed\xdcw\xdf},^\xbc8s{\xc0\x85z\xb3\
+g\xc77\xc4tww\xb3j\xd5*\xf2\xf3\xf3\xe9\xec\
+\xect\xfd\xbd\xdd\xea\xeaj\x96,Y\xc2\xf2\xe5\xcby\
+\xf0\xc1\x07Y\xbe|9g\xce\x9c\xe1\xae\xbb\xee\xc2\xe3\
+\xf1\xb8z-k\xd7\xae\xe5\xb6\xdbnc\xe3\xc6\x8d|\
+\xe5+_a\xf3\xe6\xcd\xd4\xd5\xd5\xb1dI\xea\xd1\xb3\
+^\xaf\x97M\x9b6\xb1y\xf3f\x00\xd6\xad[\xc7\xd2\
+\xa5KY\xb7n]\x86\xa4=\xfc\xf0\xc3\xd4\xd7\xd7S\
+\x5c\x5c\xcc\xd9\xb3\xcek\x8bg\xcf\x9e\xcd\xf3\xcf?O\
+QQ\x11+V\xac\xa0\xb6\xb6\x96e\xcb\x96\xd9*.\
+\x81\x87K91\x97\xf4\xb2&L\x98\x90\xf1<\x18\x0c\
+\xd2\xd7\xd7\xc7\xc0\xc0\x00\x9b7of\xd9\xb2e\xdcu\
+\xd7]\x83\xfa\xd7%%%6\xd2JKKQU\x95\
+\x8f>\xfa\xc8\xb5\x83\x93&M\xa2\xa0\xa0\x80\xf5\xeb\xd7\
+\x13\x0e\x87\xf1z\xbd\xec\xde\xbd\x1b\x80\xb2\xb2\xb2\x0c\x82\
+\x18\x86\xc1\x82\x05\x0bX\xbcx1\x7f\xf8\xc3\x1f\xd8\xb2\
+e\x0b>\x9f\xcfV1EEE\x8e\x04\xac\xae\xae\x06\
+\xe0\xe4\xc9\x93\x83\xaa\xa2\xa9S\xa7b\x9a\xa6c9)\
+%?\xf8\xc1\x0fl\xf5\xdc\xd9\xd9Iaa!]]\
+]\x9c8q\x22\x15\xe1\x8a2t/+\xb9\xe0\xb8q\
+\xe32\x9e\x1f:t(\xbe\xd1\xb2\xae\x8eh4:\xe8\
+\x82\xec\x04$t\xb9i\x9a\xd4\xd6\xc6\xf7\x03\x1e<x\
+0\x83 \x09DO\x9c8\x91\x96\x96\x16N\x9c8a\
+;\x17UUU\x00\xb4\xb7\xb7g\x1e2\xa3\xeb\xb6\xe3\
+\xf1\xcc3\xcfPXXH^^\x1e\xb7\xdf~;\x96\
+e\xd1\xd8\xd8\xe88\xce\xaa\xaa*,\xcb\xe2\xd4\xa9S\
+\x83\x06q\xd3\xa6M\xe3\xd0\xa1C\x19c\x95RRT\
+T\xc4\x8d7\xde\xc8\x87\x1f~Hss\xb3m\xe7\x14\
+E\xc9\xb0y\xc9\xef\xb8\xac\x19\xc3`0\x98q\xbf\xb1\
+\xb1\x11UUY\xbat)\x07\x0e\x1c`\xdb\xb6m,\
+]\xba\x94\xf2\xf2r\xd7\xb6B\xa1\x90M\x90\x84\x07\x96\
+\xdc\xf9tn\x04\xd8\xb1c\x07\x9a\xa6\xd9\xf5\xae\xbf\xfe\
+z\x82\xc1`J\xf0\x96\x80\xc9\x93'SQQA$\
+\x12\xe1'?\xf9\x09\x81@\x80\xea\xeaj\xda\xda\xda\xd8\
+\xb0a\x03\x0d\x0d\x0dx<\x9e\x8c\xd8b\xfa\xf4\xe94\
+66\xa2\xeb\xba\xfd\xae\xf42\x09)\xaa\xaf\xaf\xcf`\
+ \xc30X\xbe|9\x00/\xbd\xf4\x12\x89\xdf\xa5\x1f\
+L\xda\x06K-y.\x15$9\xe9\xcc\xc3\x87\x0fS\
+YY\x89\xaa\xaa,^\xbc\x98\xe6\xe6f\xde~\xfbm\
+\xee\xbb\xef>\xd7\x17vtt\xd8\x03\xbc\xee\xba\xeb\xe8\
+\xea\xea\xc24\xcd\x0c\xc4&\x10\x0f\xa4\xa8\xb4\xd2\xd2R\
+\xc6\x8d\x1bGCC\x83c6!\xc1\x0cg\xce\x9ca\
+\xd7\xae]ttt\xd0\xd0\xd0@0\x18\xc4\xe3\xf1d\
+\x10CJ\xc9\xc4\x89\xf13\x82\xf7\xec\xd9\x93\xf1<\xb9\
+?\x8b\x16-\x02`\xf7\xee\xdd\x19\x041M\x93\x193\
+f\x00p\xe2\xc4\x89Kz\x81\xc9{\x1b/+R\xaf\
+\xaf\xafOi(\x12\x89\x10\x0e\x87\xed\xc1\xdct\xd3M\
+\x04\x02\x01\xdey\xe7\x1d\x0c\xc3p\xdc\xbb\x97 bB\
+\xff\xe7\xe7\xe7\xd3\xda\xda\xea\x8a\x80\xf9\xf3\xe7\x03\xa4\xa8\
+\x91\xc9\x93'\xdb\x08\x1fl\xa0G\x8e\x1c\xe1\xb5\xd7^\
+\xe3\xbd\xf7\xde#\x1c\x0e;r}\xfa{\xf6\xec\xd9\xe3\
+j\xcb\x0c\xc3\xb0\x1d\x9b\xa6\xa6\xa6\x8crB\x08\xa2\xd1\
+\xa8\xad6]O\xbeKK\xcd\xb8\xd9[\xe5R\xe9\xf7\
+}\xfb\xf6q\xe4\xc8\x11\xfb^\xc2\xddM6\xf6\xabV\
+\xad\x22\x18\x0c\xf2\xfb\xdf\xff\xde\xb1\xad\xd3\xa7O\xd3\xd4\
+\xd4d\x1bk7\xc9K\xc0\x9c9sl\x82%\xde\x9b\
+\x08@\xdd\x08r\xfe\xfcy[\x05y\xbd^T5~\
+\xbaPyy9\x85\x85\x85\x99\x87\xd6\x98&s\xe7\xce\
+MA\xb4\xdb\x8f4/X\xb0\x80\xd6\xd6V\xc7\xd5\xfc\
+\xaa\xaa\xda\xc1\xed\x97\xbe\xf4%;o\xa5i\x1a\xaa\xaa\
+\xa6HD\xe2\xd9`F\xfd\x923\x86~\xbf\x9f\xef~\
+\xf7\xbbl\xdd\xba\x15UU9u\xea\x14\x91H\x84\x8a\
+\x8a\x0a\xbb\xc3\xb5\xb5\xb5L\x9f>\x9d\xad[\xb7\xb2d\
+\xc9\x12*++St\xf0\x13O<a\xeb\xd6\x04b\
+\xdd\x082i\xd2$TU\xa5\xad-\xf5T\xa0\x84A\
+w#H{{;\xcf=\xf7\x1c\xdf\xfa\xd6\xb7x\xfc\
+\xf1\xc79s\xe6\x0c\xe5\xe5\xe5\xcc\x9e=\x9b5k\xd6\
+dr\xa2\xa2\xd8\x1e\xd8O\x7f\xfaS\x0c\xc3\xe0\xf5\xd7\
+_g\xe7\xce\x9d)\xeak\xca\x94)\xf8|>N\x9f\
+>\xed\x1a\xf7\xbc\xf1\xc6\x1b|\xe3\x1b\xdf`\xcd\x9a5\
+\xcc\x981\x83H$\xc2\xc2\x85\x0bY\xbf~=\xbbv\
+\xed\xb2\xddt]\xd7m\x95\xe6F\x10\x15\xb8A\xd3\xb4\
+\xea\xbc\xbc\xbc\xdaDG\xa7M\x9b\xc6\xc0\xc0\x00==\
+\xf1\xdf\xb1\x0d\x87\xc3tvvRWWGii)\
+_\xf8\xc2\x17\x985k\x96\x9db\x07X\xb8p!u\
+uu\x04\x02\x01;o#\xa5\xe4\xf9\xe7\x9f\xa7\xb1\xb1\
+\xd1.WTTD__\x1f\xf5\xf5\xf5\xf4\xf6\xf6f\
+t(\x10\x08 \xa5\xa4\xbe\xbe>\x05\xf9\xa5\xa5\xa5t\
+tt\xf0\xee\xbb\xef\xda*\x22\x9dS\x0f\x1d:\xc4\xbe\
+}\xfb(++#\x10\x08\xd0\xd0\xd0\xc0c\x8f=F\
+___f\x00\xa6(466\xd2\xd7\xd7GUU\
+\x15g\xcf\x9ee\xfb\xf6\xed\x0c\x0c\x0c\xa4\x94M\xb8\xcb\
+;v\xec\xa0\xa5\xa5\xc5\xd5\xf9y\xe5\x95W\x08\x87\xc3\
+L\x980\x81h4\xca\xaf~\xf5+\xf6\xee\xddkK\
+\x89\xae\xeb)R\xaai\x1a\xa5\xa5\xa5\x04\x83A\xba\xbb\
+\xbb/\xb6\x05<\xe8\xf7\xfb\xbfP\x5c\x5c\xbc2A\xf1\
+/~\xf1\x8b\x04\x83\xc1\x14\x9f\xdb0\x0c\xee\xbe\xfbn\
+\xd6\xaf_\x9fu\xd2\xee7\xbf\xf9\x0d;v\xec\xb0;\
+%\xa5\xc40\x0cL\xd3LQ\x11\xc9il\xd34m\
+NJ\xae\xa7\xeb\xba\x1dy;\xa5\xc7\x93\xf7D&r\
+FB\x08\x9b\xdb\xdd\xd2\xed\xb1X\xcc\xb6}\x89TM\
+r\xfb\x96e\x11\x8b\xc5R\xfa\xe3\x96~\x8f\xc5b)\
+\xefM\xd8\x1b]\xd7m\x07&9\xdb]SS\xc3\xf1\
+\xe3\xc7S\xd21\x9elS\xd2\x1e\x8f\x87W_}\x95\
+\xfa\xfaz6n\xdc\xc8\xf4\xe9\xd3\x1d\x0d\xa1eY\xb4\
+\xb6\xb6\xf2\xe4\x93O\xd2\xd9\xd9\x99Q&\x91>p\xdd\
+\xb0\xa2(x\xbd\x99\x07\x95\xa5#\xd65\xd2M\xaa\x9f\
+\xcd\xc9x\x9a\xa6\xa5D\xfeN\x99\x06\x9f\xcf\x97\xd5\xae\
+\xe2d\x977y\xa2j('\xf4\x0di\xc6P\x08\xc1\
+\xd9\xb3g\xf9\xf2\x97\xbfLmm-\xb5\xb5\xb5L\x9a\
+4\x89\x8a\x8a\x0aB\xa1\x10\xed\xed\xed\x1c;v\x8cc\
+\xc7\x8e9\xba\x99\x83\xcd\xd49\xfd\xbd\xd4\x0c\xa3[\xbb\
+C\xbd\x7f\xb9\xe5.5\xbb\xe84Wt\xd9\x04qk\
+(\xc1\xe1\xcd\xcd\xcd\xb6\xe7\x94\xf33\xb6>\x01\x0b\x18\
+.\x85\x8f!M\xe1f\xbb.k\x8c\x00WN\xb8!\
+g{\xc7`x\xa5h\xc8q\xc8\x18\x8c,Q\xc6$\
+dLB\xc6`LB\xae!O\xccUB\xc6\x8d\x1b\
+\xc7\xacY\xb3\xc607L\x90\x989tTY\xe9\x01\
+\x8fS\xaeh\x0cr\x0b\x96e\x11\x8dF3\x16\x12z\
+\x00K\x88\x8b\xfbd\x0d\xc3`\xdb\xb6mc\x18\x1b\xa5\
+X\xc4\x03\xe8@,]\x9c\xc6`\x94T\x19\x10\x16B\
+\x0c\x8cyT\xa3\x0fR\xc6w\x16/\x05&j\x9aV\
+!\xa5\xf4p-\xee%\xbev\xc0\x14B\xc4\x80^E\
+Q:TU=\xa7iZP\xd3\xb4\x88\xc7\xe31\x00\
+\xf9\xff\x01\xfa\x90K\xa0\xc0O~5\x00\x00\x00\x00I\
+END\xaeB`\x82\
+\x00\x00\x03|\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00d\x00\x00\x00d\x08\x06\x00\x00\x00p\xe2\x95T\
+\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
+\x00\x00\x09pHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\
+\x95+\x0e\x1b\x00\x00\x00\x07tIME\x07\xd9\x03\x03\
+\x0e\x1c\x0e\xa7\xa1o)\x00\x00\x02\xfcIDATx\
+\xda\xed\xd6\xbfo\x1cE\x18\xc6\xf1\xef\xcc\xed\xda\xb1\x0f\
+\x9b\x93\x85\x90-\xb08\x12\x09wn\xac\x14n\x10\xe0\
+\x8b\x90K7\x14\xc8\x7f\x03\xfc\x01T'QB\x81(\
+\xdd\xd0\x906m0\x8ep*DD\x94 \x17\xc8\x0e\
+\x06d\x90\xec\xe4\x02\xde\xf3\xde\x9e\xf7\xd7\xecP\x1c9\
+\x892R\xaeX\xf1|\xa4\xedv\xa4\x9d}\xe7y\xdf\
+\x01\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\
+\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\
+\x11y1L\x9d>vqq\xf1\x13cL\xf8\x9c\xcb\
+\xa6\x80\xcfNOO\xffVA^\xb0\xf5\xf5u\xdfn\
+\xb7\xf1\xdeSQQ\xbe\xf9\x94\x97\xaeLS>\x99\xc6\
+\x9d\xcd\x8c^\xb2`\xac\x1f\xef,\x8ec\xf6\xf6\xf6V\
+\xb2,;\xaa\xc3\x1e\x83\xbaE:MS\x0cp?\xff\
+\x85\xce\xf5\x19\x1a\xe1\x05\x99\xbb\xa4\x19^\x81$\xa0<\
+\x9f\x22\xfbu\x86\xe1\xe1,\x00eYb\x8c\xf1u\xd9\
+\x9f\xadS1\xaa\xaa\x22\xcfs\xf2\xbc\xc0Sa\x8d\xe1\
+\xaay\x9f\xcf;wx\xe7\xf5\x0f\x98\xe7\x1a\x8bW[\
+\xd8W2\x8a\xa2\xa0(\x0a\x9cs\xb5:p\xb5J\x88\
+s\x8e<\xcf\xc1\x8f&\xc3`\x90\xf2\xe1{\x1f\xf3\xd1\
+\xad\x1b|\xbd\xfd\x90w_;\xe3$}\xc0\x17\xf7?\
+%\xcfs\xbc\xf7\xcf\x12\xa2\x82L\x82\xf7\x9e,\xcb0\
+\x18\x98\x82\xe1\xc01\xd7l\x92W)\x00\x87\x7f\x1e\xf2\
+cr\x0b\xe3-Y\x96\x8dS\xa5\x82L\xb8e\x19\x00\
+\x0fs\xf3S\x0c\x86C\xa6\x1b\xa3yQ\xe1)]\x81\
+\xf7\x8c\x92\xf4\xec\xe6R\xa3\x82\xd8:&$\xcbr*\
+</\xcf7\xb9\xfd\xf3M\xba7n\xf2\xe0\xf4.\xf7\
+\xfe\xf8\x96\xb7\xdf\xd8\xa2(\xf3\x7f\xdf\xcb\xd4\xb2&\xa9\
+(\x0a\xe28\xc6\x1aK2Wq\x995\xf9\xc1}E\
+uo\x8eW\xafe\x1c\x97\xdf\xf0\xfbO{D\x8f\x13\
+\xce\xcf\x13\xbc\xf7\xcc\xce\xceb\xadUA&\x16ik\
+1\x18L\x05\x8diC\xc3\x86|\xf7\xdb\x97\x5c\xdc1\
+<y\x94\x90\xfe\xe5H\x1e;\x8c1\xb5JFm\x0b\
+\xe2\x9ccaa\x81\xf0l\xc8\xf7\xdd\x0b.\x9fV\x18\
+\x03\xc6\x8e\x1eo\x0cA\x10\x8cgN\x9d\xd2Q\xcb[\
+V\xb7\xdbecc\x83\xfd\xfd}\x0e\x0e\x0e\xe8\xf5z\
+\x94eIUUDQD\xab\xd5\x22I\x12z\xbd\x1e\
+\x8dF\x83~\xbf\x8f\xf7\xbe>\x1d\xa0n3\xa4\xddn\
+srr\xc2\xe6\xe6&Q\x14\xb1\xb4\xb4\xc4\xda\xda\x1a\
+\xdb\xdb\xdbx\xefi\xb5Z\xac\xac\xac\xd0\xe9t(\xcb\
+\x920\x0ck\x95\x90Z5\xd9\xd5\xd5U\xbf\xbc\xbc\xcc\
+\xd6\xd6\x16\xbb\xbb\xbb\xa3\x01o\xed\xf8\xc7GQD\x18\
+\x86x\xefI\xd3\x14\xe7\x1c\xce9\x8e\x8e\x8e\xde\x1a\x0c\
+\x06\x8f\xd4\xb2&\xa0\xdf\xef\xb3\xb3\xb33\x9e\x13\xff9\
+]\xc6P\x14\xc5hcA@\x10\x04\x14E\xa1k\xef\
+\xa4\x1c\x1f\x1f?\x04\xca\xe7Y\x13\x86\xe1L\xb3\xd9L\
+\xe38FDDDDDDDDDDDDD\
+DDDDDDDDDDDDDDDD\
+DDD\xfeO\xfe\x01\xd1\xc0Q%\xbd%\x7f`\x00\
+\x00\x00\x00IEND\xaeB`\x82\
"
qt_resource_name = b"\
@@ -6047,22 +6047,14 @@ qt_resource_name = b"\
\x07\x03}\xc3\
\x00i\
\x00m\x00a\x00g\x00e\x00s\
-\x00\x0b\
-\x08R\xaa\xc7\
-\x00f\
-\x00i\x00g\x00u\x00r\x00e\x008\x00.\x00p\x00n\x00g\
\x00\x0a\
\x0bSG\xc7\
\x00r\
\x00a\x00n\x00d\x00o\x00m\x00.\x00p\x00n\x00g\
\x00\x0b\
-\x0a\x12^\xc7\
-\x00k\
-\x00i\x00n\x00e\x00t\x00i\x00c\x00.\x00p\x00n\x00g\
-\x00\x0c\
-\x05\x8f\xe2\xc7\
-\x00c\
-\x00e\x00n\x00t\x00e\x00r\x00e\x00d\x00.\x00p\x00n\x00g\
+\x08R\xaa\xc7\
+\x00f\
+\x00i\x00g\x00u\x00r\x00e\x008\x00.\x00p\x00n\x00g\
\x00\x14\
\x00\x22\x00G\
\x00T\
@@ -6076,6 +6068,14 @@ qt_resource_name = b"\
\x00(X'\
\x00t\
\x00i\x00l\x00e\x00.\x00p\x00n\x00g\
+\x00\x0b\
+\x0a\x12^\xc7\
+\x00k\
+\x00i\x00n\x00e\x00t\x00i\x00c\x00.\x00p\x00n\x00g\
+\x00\x0c\
+\x05\x8f\xe2\xc7\
+\x00c\
+\x00e\x00n\x00t\x00e\x00r\x00e\x00d\x00.\x00p\x00n\x00g\
"
qt_resource_struct = b"\
@@ -6083,20 +6083,20 @@ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x8f_\
-\x00\x00\x01e\xaf\x16\xd2\x99\
-\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x018M\
-\x00\x00\x01e\xaf\x16\xd2\x99\
-\x00\x00\x00d\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xdf\
-\x00\x00\x01e\xaf\x16\xd2\x99\
-\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x01\x0e:\
-\x00\x00\x01e\xaf\x16\xd2\x99\
-\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01e\xaf\x16\xd2\x99\
\x00\x00\x00H\x00\x00\x00\x00\x00\x01\x00\x00qc\
-\x00\x00\x01e\xaf\x16\xd2\x99\
-\x00\x00\x00.\x00\x00\x00\x00\x00\x01\x00\x006\xe6\
-\x00\x00\x01e\xaf\x16\xd2\x99\
+\x00\x00\x01z\xe7\xee'\x01\
+\x00\x00\x00\x92\x00\x00\x00\x00\x00\x01\x00\x01\x1aQ\
+\x00\x00\x01z\xe7\xee'\x01\
+\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x01t\xa2\
+\x00\x00\x01z\xe7\xee'\x01\
+\x00\x00\x00v\x00\x00\x00\x00\x00\x01\x00\x00\xf0>\
+\x00\x00\x01z\xe7\xee'\x01\
+\x00\x00\x00,\x00\x00\x00\x00\x00\x01\x00\x00:}\
+\x00\x00\x01z\xe7\xee'\x01\
+\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x01Z&\
+\x00\x00\x01z\xe7\xee'\x01\
+\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01z\xe7\xee'\x01\
"
def qInitResources():
diff --git a/examples/widgets/animation/appchooser/appchooser.py b/examples/widgets/animation/appchooser/appchooser.py
index 0782211d2..610050210 100644
--- a/examples/widgets/animation/appchooser/appchooser.py
+++ b/examples/widgets/animation/appchooser/appchooser.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2010 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
@@ -46,10 +8,10 @@ from PySide6.QtCore import (QPointF, QPropertyAnimation, QRect, QRectF, Qt,
Signal)
from PySide6.QtGui import QPixmap
from PySide6.QtWidgets import (QApplication, QGraphicsScene, QGraphicsView,
- QGraphicsWidget, QWidget)
+ QGraphicsWidget)
from PySide6.QtStateMachine import QState, QStateMachine
-import appchooser_rc
+import appchooser_rc # noqa: F401
class Pixmap(QGraphicsWidget):
diff --git a/examples/widgets/animation/appchooser/appchooser.pyproject b/examples/widgets/animation/appchooser/appchooser.pyproject
index 14bc351a1..f4c122bef 100644
--- a/examples/widgets/animation/appchooser/appchooser.pyproject
+++ b/examples/widgets/animation/appchooser/appchooser.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["appchooser_rc.py", "appchooser.py", "appchooser.qrc"]
+ "files": ["appchooser.py", "appchooser.qrc"]
}
diff --git a/examples/widgets/animation/appchooser/appchooser_rc.py b/examples/widgets/animation/appchooser/appchooser_rc.py
index 6f2a5ff36..acc8c8594 100644
--- a/examples/widgets/animation/appchooser/appchooser_rc.py
+++ b/examples/widgets/animation/appchooser/appchooser_rc.py
@@ -1,529 +1,11 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.14.0
+# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
qt_resource_data = b"\
-\x00\x00\x13\x09\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\
-\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\
-\xa7\x93\x00\x00\x00\x09pHYs\x00\x00\x1b\xaf\x00\x00\
-\x1b\xaf\x01^\x1a\x91\x1c\x00\x00\x00\x07tIME\x07\
-\xd7\x09\x17\x17\x15\x19I\x86pA\x00\x00\x12\x96ID\
-ATx\xda\xed[\x09t\x5c\xd5y\xfe\xee{\xb3k\
-\xb4Z\xb2%\xd9\x96dcl\x8316\xb6\x81\x00\xe1\
-\xb04\x14\xc2\xda\x94\x86\x04\xd2\x90Br ] \x14\
-h\x08KH\x09\x87\xda\xadsRR\x02$\xad{ \
-\xe4\xb0\x95\xcd@\xb0\x1bV/\x80\xb1-\xdb\xd8\xb2l\
-l\xd9\xb2,\xc9\x1aK\x1ai\xf6\xe5m\xf7\xf6\x7f3\
-\xef\xf0\xf4:\x9a\x19\x1b&=\xc9i~\x9dO\xf7\xbd\
-\xfb\xee\x9by\xdfw\xff\xe5\xbe+\x1b\x7f\xb4?\xda\xff\
-oc8\x0e\x1b\xbb\x05uR\xed\xf4\x8b]3\x97\x5c\
-\x06\xb7\xef<\xa1\xa4<\xd0\xb3\xc3B\xcd\x0cq5\x15\
-\x12J\x22\xc4S\xe3!\x91\x8d\x85\x84\xc0\x10\x80\x10\xe1\
-\xe8\xd4\x9fC\xf9\x83\x16@\xfc\xd8\x7f\x95h]v7\
-\xe7X\xc6\xd3Q\x99\x08Bp\x01\xe1\x0e\x12\xaa\xc0e\
-?\x84\xec\x81`n\x82\x0b\x90\x5c\x10\x82\x03\xdc\x00\xd7\
-\xd2\x02\xba2.\x0cmH\xe8jHhJH\xe8\xd9\
-\x10W\xd3$T|Hh\xd9\x900\x85\x12\x08M\x7f\
-\x0c\x99\xdf;\x01\xc4\x03\x9e?\xc7\xf9\xf7\xbf\x88\xe6E\
-\xcc$\x04\xae\x03&9C\x052\x11\x80\xc4\x80\x9a\xcc\
-C\xcf@h\x19\xf0l\x82\x90\x02W\x92\xe0\xa6P\xb2\
-\x0f\x5cH\x04S\x13N\xd0\xc1u-'\x14@\xd7\x0d\
-\x03$\x0aA\x8d\x0a\xae\x87\x08C\xc2\xa06\x07\x95\x04\
-3\xa1\x0c\x09n\x84\x00\x84:\x1eG\xf2\xffN\x80\xa7\
-.\xee\xc4\x99\xb7,\x85\xb0\xc8s#\x07\xc7\xb9(\xd6\
-\xa7\xe7\xa1\x98\xe2d\xed>\xd3\x84\x00W3\xa4\xa3B\
-\xc8\x82s\x0e\x03np\x12\xd6P29\x01\x0d\x12R\
-\xcf\xc4\x01\xba&\xcc\x1fn\x80<\x89\xa0'h`N\
-\x90\x1c\x04\x0f\x01<\xc4d\x98\xd8\xd9q)\xba\xd9\xc5\
-\x10\x95\x11\xe0\x85kSXxm ?\xf3F\x09\x01\
-\x9cb8\xc6\x8b\xdc5\x1b\xa2\xc8X\xf2\x1e@\x00\x14\
-N\x90\xdc\x80\xcbG\xf0\xe7<F\xd7u\x18\x9a\x96\xf3\
- \x9d3\x12'\x09=5\x06u\xa4\x07z\xa2\x0f\xae\
-\x00\x03\xf3\xe4o7\x14\xf1:5\xdf\xe8X\x81\x04\xca\
-\x98\x0be\x8d\xb9r\x0f\x97\x8bi\x82c\xc6\xb9\x89\x82\
-c\xc7xaX-\xb7\xfa\x8b\x8c5!\xc9\xf9>\xcd\
-\xf4\x96\xd4\xa7\xe2H4\xc6c\x0b\x95\x0f?\xd9\x0b\xd4\
-\xd7\x00\xb3.\x85\xde4\x97\x9c\xec\x03\xe8C\xab\xc1\xb3\
-\x06\xd48\xae\xc8\x8c\x88U\xa2\x1b_c\x0bP\xd2$\
-\x945\x0e\x88\x89\x04x\x01\x81\xa2\xd7E1\x91\x8a|\
-\xd6\xb1~\xb6iZ\x1aH\x1c\x01\x0e\xbf\x0f\xd7\xbe5\
-\xa8Z\xba\x02\x9e\xe9\xcb\x00\x96\x1f\x0a\xce\xbe\xda\xf38\
-N\x00>\xaf\x00BLp\xdd\x223iyD\xd9\x87\
-\xe7\xe5\xbd\x80P\xfe\xb3\xedky\x11\x0e\xbc\x09\xac\xbd\
-\x13zf\x16RC\x02\xe9a\x015)\x98\xa1bI\
-%\x04(|8\xce\x8b\xccl1a\x8e\x918/\x15\
-Z\x93\x08\x13'\xf2\xe91\xe4\xec\x93\xd50\x12^\xa4\
-\x8f\x9a\xe4\xf3\xb7B\xc0_\x81\x1c \x0a\xc9\xd8\x84J\
-\x92q\x1e\x97\x0a%^F\x9cB\xf1l\xf2\xf6D1\
-\xdd,\xaf\xd6#\xc3\xb2\xcf-@\xa1\xdb\x15xA\xb1\
-\xd8u\x1e\x17\x0f\x95\xc2DY\xc6\xc3\xe2\x83D>\x8c\
-\x02\xe3\x1a\x84\xc5\xbcr\x02@\x14\xcd\xe86\x81\xe3M\
-\x88E\xae\x17\x92-\x1c\x1f\x1bp\x90w\x98\xa1C\xa0\
-\xd2\x02\x08A0\x8e=\xa3\x17\x86J\xf9$\xc8\x8f1\
-)\xc6K\x90'\x13\xa6\x07L\x9c\xb7\x0a\x09\xe0$[\
-\xbe\xd4\x95_\x03\x94\xff\xacB\x0f\x8b\xf5\x03\xa9Q\x94\
-4C\xb7\x89W8\x04,\x18\x05\x0fW\x9eL\x91k\
-(\xa8&\xc5E\x8d\x1d.O\x1e\xc8/\x93\xe1\x14\xa0\
-\x12e\xd0A\xb6\x10E26l\xa2\xb9~\x10\x98u\
-\x0en\x9d\x13`\xf7M\x9a\x10\xcb\xcf\xbc3\x09\x026\
-D%\x04@\xc9D5\xb9\x10\xb0\x88\xb1c$n\xc2\
->\xb6\xbf'j\xce\xfc\x08\x8e\xd5\x04\xd7-\xe2\x16*\
-\xe4\x01eVz\x0e\x22\xc5\x88\x95\x12\xc3\xeas\x0a\x87\
-X_\x01\xf9\xb2f8\xca`%\x05(\x1f\xdbN!\
-\x9cd\x0a=\xc2&n\x0bdX\xe0@\x9c\xc8g\x88\
-\xbcT\xe4}\xb5t\x15p\xa0\xd2+\xc1\x828\xb7`\
-\x93\x13\xff\xdb\x0b,b\xc2\xe1\xe66Y\x82\xe38~\
-\x88\xc8\x0f\x03\xb25TX\xe0(g\xf6:\xc0\xf6\x82\
-\x0a\xaf\x04=U@\xfd\x09\xf9\xa7\xd1\xd3@&\x0c$\
-\x8f\x02Z\xd2\x99\xe8\xecX.\x14\x889\x12\xa3S\xa8\
-xo\x9e\xbcd==\xb3E\xb0\xfd\xbat\x15\xb0\xcb\
-`\xe5\xd6\x01\xb6\x08\xfe)\xc0\xdcK\xe14\x91\x17a\
-l/\x10\xfa(\xe7\xbe\x85\xeeO\x10\x13\xfa\x84\xc3\xe5\
-\xf3m\xe2\x90\x93\xbcM\xd6\xd9\xf2\x12\xcc\xac$X\xe9\
-u\x80#\xbb\x17\x1a\x03\x82-y\xb4_\x98\x17\xe0\xe0\
-k\xc0H\xa73\x1c\x18\x016y\xb3\xb5\xc9\x9b3\x7f\
-\xd4r\xfb2\x02\xc0\x1eSr\x1d \x08\x15M\x82\xb0\
-P\xcej:\x80\xd3n\x05\xce\xb8\x17\xa8\x9e>!\xce\
-\xed|`\x9f[\xe4\xb3\x16y\x09\xd4Z\x90\xca\x80\xa1\
-\xf8\xcb\x90\xa8d\x15\xc0$\x19\xdfP\xca\xaf2\xea\xe7\
-\x01\xe7,\x07:.s\x84\x84\x0d\x93\xfcA\x22\x1f\xb2\
-I\x95\x03+-\x820\xf4\xcaW\x01\x22j'\xaaH\
-\x0f\xb0\xeen@\xe8\xf9so5\x10l&\xb2'\x02\
-\xd3\x96\xd1y}\xc1v\x22N\xba\x01\xa8\x9b\x03\xec\x5c\
-\x09\x18\x9a\x95\x00\x09\x89\x03\x80b\x91\x17\x93\x00\x8eD\
-h\x1b\xb7\xa7\xad \x1c\xb8\xe6\x8c\x16Q\xe92\x88\x89\
-\xe5O\x07\xb2a\xc200\xba\x1d\xe8y\x16h\x5c\x04\
-\xcc\xfe3\xa0\xba\x1d\x0ek9\x17\xf0\x90X\x9d\x14\x16\
-\x9a\x0a${\xec\x99\x17%\x92\x9cp\x10v\x92f\x13\
- \x9c\x1e\x90\xfbU\xb1\x10`\x02\xce\x9a?Y\x19\xb3\
-\xb6\xbaG\xb6\x00\x9b\x7f\x00|\xb2\x8a\xba\xb2p\xd8\x94\
-\xc5\xc0\x92\xfb\x81t\x9fI\xbex\xcc\xdb\xfd\xc7\x17\x1a\
-\xa6\xd9e\x90P\xa9$\x08QX\xd7m\xf2\x85\xab>\
-S\x88\x815$\xc4\x1d@j\x10\x0ek:\x138\xf5\
-\xfb\x05d\xcb\x82M\x1a\xff\xce~\xf6;]\x09Z\x04\
-\xfd\x8d@\xfb\x05\x80\xbb*\x17oH\x0f\x01\xf1\x83\xc0\
-x\x17`\xa8\x13D\xa06u\x18\xd8J\x22,y\x10\
-\xa8\x99\x8bOm\xfe\xdf\x00\xa3\x1f\x00\x87\x9e\x01P&\
-\xfeQ\xc2\xf5%G\x9e\xc8\x83\xeb\xf6\xed\xa22\xeb\x00\
-\xe7\xcc\xfb\xea\x80\xd6\xb3`\xdbR\x02\xf2+\xc1\xa1w\
-\x80\xbe\xd5t\x1c\xb1\x17;Z\x14\xd8~\x17\x89\xf0\xcf\
-N\x11\xce|\x04\x18y\xd7\xac\xfd\xc5\xe3\x9f\x17\xf5O\
-'i\xc9>\x17\x10\x16\xf1\x8a\x87\x80\xed\xee\x93\x9a;\
-\x08\xb4_\x05\x9c\xf5S\xa0q\xa9\xf3\xe5f|+\xb0\
-\xfer@\x8b\xd9\xe3=\x0d\xa4\xddO\xca\xd7|f\xb7\
-6\x8a\x84\x06\x9b\xc4\xa1*#\x80s%X\xd2<\xf5\
-\xc0\xe2\xfb\x80\xb6+\xf2^\x90\xd8\x07(G\x80T\x0f\
-\xb0\xfdV8\xac\xfdZ\xa0\xe1\xb4\xcfP\xfbK\xc2\xb1\
-\x12\x14\xa2b\x02p\x0b\x02Pb@x\x170\xb2\x0d\
-H\x0eN\xf2-\x0c\x98\xfb]\xa0\xf1L ;h?\
-x\xffSt\xcf;\x13\x86Q\xe7)\xf7\x1dg\x22,\
-q\xcc\x9c\xc4\x05*\x97\x03\xec\xfa?\xbe\x17\xd8p\x1b\
-\x00\xdd\x0a\x09\xeb\x05\xa9\xe3J`\xc6\xc5\xce\xa5\xd9\xc2\
-\x1f\x11\xe1\xdf\x02\x91N\xfbAw\xdf\x05\x5c\xb8\xd5\x1e\
-\xd7Ja\x13l\x03\x92\xfd\xce\xd8g6\x0ac\xbd\x04\
-\x80\xcf\xb6'\xf8\xe0}7-\xdc\xf2\xf6O\xa5\xd2U\
-\x80\xc0U\xe7\x92\x18\x84L\x08\xd8\xfb\x18\xb0\xfd\x87\x80\
-\x91\x99\xf0\xc9n\xe0\x0b\xbf\x06\x5c.{\x16\xe3\xdb\x80\
-\xd1\x89^ \x03\xed\xdf,;\xf3N\x14\xef\x17\xec3\
-\xe6\x80\xb77\xf7\xae~k\xc3\xbe_\x90\x08\xach\x0e\
-(\xdc\xf3s.\x90\xc6:\x81\x0fo\xb4\xfa,\xab\x9e\
-\x0f\xb4]\xe7\x8c\xe3\xfe_\xc2a\xd3\xaf.A\xbaL\
-\xdc\xa3\xe0\xdc\x0e\x83\xe3\xc9\x01\xe3\x8a\x9e\xed\xdc58\
-\x7f\xc7\xee\xc1\x7f%\x11Jo\x89\x81;\x84\xb0wo\
-\xf7\x00\x87\x9f\x03\xf6\xac\x84\xc3\xe6\xdd\xe5$7\xba\x06\
-0\xd2\xf6\xf5\xda\xc5\x80\x7fj\x01\xe9\xe3$n\x0b \
->\x83\x07$3\x19C\x81\xfb\xce\xd7\xdf\xec\xba\xe6P\
-\xff\xd8C\xc5\xdf\x06\x09\x81\x16\xe0\x8c\x1f\x03\x17=O\
-\xed\x0a 83O>=\x80\x9c\xed\xa5\x9a\xaf\xc5'\
-x\xc1\xc9@\xcd|\x9b\x94 \xf2\xd1\x0f\x9dIs\xca\
-\xd9\x85\xa4Q6\xde\x0b\xc93'q!\xb9\xe5c\x12\
- \x95\xc9\x1a)\xdd\xc8\x8eE\x92\xb7<\xbbz\xeb=\
-k_x\xf0\x9e\xc2?\x8d\xf1|\xe6^r'Po\
-\x12r\x01u\xd4\x9e\xbe\xc2v{\x86\xfc\xe2\xe7\xc8\xab\
-p\xd8\xd4\x8b\x9d3\x1b\xdb\x0c\x87\xd5.:\x0e\xa2e\
-D\x80\x05\xfa\xb5\xcbw\xfa/\x96?p\xeb\xeb\x8f=\
-\xfc\xc3\xef\xfc\xec'\xf7N/Z\x052\x8a\xa2'\xd2\
-\x19\xff\xf6M\x9b^Z\xbat\xe9k\xcf\xbc\xbc\xf9\xa1\
-\x0f\xff{\xe5\xc8\xd9\x97\xfc\xc3*G\x12\xac\x99\x0dT\
-\xb5\xc0a\xee\x1a\xe0\xe4\xef\x01\xdb\xbfo\xf7\x8dn\x00\
-:\xbe9\xc1\x0bNq\xbawf\x1f\x1cVu\xc2\xf1\
-\x91G\x89\xbe\x09%p\xe3\xa6.\xcf\x86\xa1\xfd\x977\
-\xd4\xd7^>sf\x8b\xf8\xea\xd5W\xec\x9a6m\xda\
-{UU5\xeb3Y\xf5\x83\x7f{\xe4\xe7\xa39\x01\
-\x14M\xe3\x14\x06~\x90q\xce\xffvgw\xff\xb9/\
-\xbd\xb1\xedq\xca\x07\xc38\xfc\xa4-\x80\x96)\xb2\xf9\
-q\x0a\x1c\x96\x19\x80\xc3|\xcd\xce\x87V\x87\xe00o\
-KY\x82\xe5\xc9;c\x9f\x83aj\x9d\xf7\xad\xdaT\
-\xed\x02&\xb9Z\x87G\xa2ll<\xb9\xa8\xb7oh\
-\x91,\xcb\xb7\xa9\xaa\xca\xe7\xcc\x99s{N\x00]\xd7\
-Y:\x9b\x0d\x80l\xc7\x8e\x1d\x83\x0b\x16,\xf8\xbb5\
-o\xef|\xbaeZ\xeds'\x9d0S\x0er\xc3\xda\
-\xc1\xe9\x07\xd2G\x81@3\x1c\x96<\x0c\xe7\x02\x5c\x86\
-\xc3\x5c\xb5\xce5\xbf\x91\x82\xc3\xe4*\x1c\x97\xb1\xc9\xfb\
-F\xb2>\xbc\x1f\xa9\xc3\xc1L-\x0egk0\x1eK\
-_\xa4\xebI\xc4b1(\xe4\xe5\x84}\xc4\xb5\x95s\
-^o\xf9\xe2,\xf3\x17\xb8\x10\x8c\xf2@\x10\x96uw\
-w?c\x18\xc6\xd3\xff\xf9\xf4\xba\xc0k\x91\xb9rZ\
-x\x00n\xfd\xe3\xc8\xf5\xb7\xe5W\x83\xb0,;\x0a\xec\
-|\xc8I\xb0\xaa\x03\x0e\xd3\xe3p\xee\xef{P`\xf6\
-\xfd\xc7e\xe3Y7~\xb5\xb7\x19\xd7\xbf\xbd\x00\xcb\xfb\
-\xcf\xc5{\xb1\x99\xd8\xdc\xaf\xe0\xc0\xde.\xd4%\xbaQ\
-\xa7\xf4?ZSSs\xe1\xca\x95+g\x90\x00Kg\
-\xcf\x9e\xdd#I\x12\xacoz\xcb\x05\xb2\x80\xcf\xd3\x94\
-U\x95FL0\x12\xe0&U5N^\xfe\xd8\xda\xd3\
-<\xb7\x5c\x86\xcb\x9b\xfa\xe03_{\x93}$\xf5&\
-`\xee\xd7\xf3\x1a\xf6<\x01\xa8$\x82<\xe1\xe1[.\
-\x83\xc3R\xbd6yF\x90\xeb\xe10m\x1c\x10\xc7!\
-\x82\x99\xe0F\xaa\xf0\xec\xee\xa9\xd8\x12\x9e\x06M\xd7\x10\
-\x8f\x8fCD\xdf\xc3\xe5s\x0d\xccY\xe4\xc3\x89\xb3\xda\
-\xe0\xadm\xa6<}A_\xfb\x95\xf7\x0c\x03\x10\x0f?\
-\xfc0#[,D.k_Mx\xc3u\xcf\xdf_\
-\x83\xc7\xd6\xeelJ\xa6\xd5\x16\xcb-8\x01\x07\x0f\x1e\
-L\xb7\xb5\xb5}%\x1aIl]\xf1\xcb\xdf6\xc97\
-~\x11\x97d\x87\xe0\x96\x00\x16\xeb\x07\xdb\xfe/\x80y\
-,\xe3\xd3\xedl\xc6\xac\x87\xdf\xf9\x03\xe0\xc0\xa3f\xc9\
-\xcc#\xfc.\xc0'\xb8\xafo\x0e\x1c\xa6Z\x028E\
-\x98\xb4o\xf3`\x10\xab\xb65c\xd3a/\xa2\xd1\x08\
-b\x91\x8f\xf1\xa59\x0a~t\x9e\x84\xf3\x17\xce\x04\xab\
-\x9b\x87=\x83@d\xe8\x10\xa2\x07;\x11\xee\xddy\xf0\
-\x9dp\xf3\x01\x00|\xc5\x8a\x15\xcb\xc8\x1b<$\xc0\xeb\
-\x00r\xa5\xca\xd5\xd8X#e\x15\xad\xdf\xd05\x0e\xa0\
-\x86\x90&h\x041\xbb\xbf\xffp\xf4\x84\xa6\xeb\x87\x8e\
-\x8c\xacY\xf1\xe4&\x96\xb9\xfaj\x9co\xbc\x08\x8f\xac\
-A\x96\xcdJH\xa0V\xa6\x96Y\xe7\x8c\x13\xc2]`\
-\x11\x82\x9c\xaf\x9c)]\xc6\xa1\xb1\x00\x8e\xc4<\x18\x8a\
-z\x10z\xf5\xbf\x10\xd3\xd7!\xcd\xa6#e\xd4\x01$\
-l-\xef@\x8d\xcf\xc0\xd4j\x0ds\x9b2X6#\
-\x85)~\x1d\xa6\x0d'\xdc\xd8p\xb0\x1a/uM\xc1\
-\xc7\x83\x12\xc2\xe10\x22\xe3\xe3\xf8\x8b\xa5\xc0\x037\x07\
-p\xe2\xbc/\xe4\x12\xb1\x88\x1d\x811\xb4\x1d\x91}1\
-\xa4\x14\x91O7n\xb75E`---\x17\x9b\xf9\
-\x80\xecyX\xe6\xba\xfd\xdeU\x1c^\xff\x12\xa8Y\x93\
-\xfc\x14B\x15!F\xc8\x10\xf8\x99\xd3G\xd7m<\x5c\
-\xf7`o\xdf\x91\xfb\x1f~IB\xf4O\xaf\xc22u\
-5<.\x1d.W\x9e\xbc\xcb\x12\x81\x13\xdbP\xda\x8b\
-\xc1\xb8\x17\xfdQ\x1f\x8e$\x83\xd8?\xecBoHC\
-:\x93E6\x9b\x85\xaaf D\x1a>_\x06\x81\xc0\
-(\x82\xf2\x18<H#o\x12\x09\xe4BF\xf7\xc0\xef\
-\xaf\xc7\xecf/=Z5\x14\xe1C\x86\xee\x1f\x0a\x8d\
- <6\x86\xa0\x17x\xed\x8ez\x5c\xf2'\xe7\x03\xb5\
-'C()\x18\x07\xd7\xe6\x04\x10\x06\xc0Iy\xc1\x04\
-\x84\xe0t\xec\xca\x15_\xf3\xbb\xeb\xeb\xeb\xaf\xef\xeb\xeb\
-\xcb\x80nw\xbe\x0d*\xf4\xe9\x00\xb7PG\xf0\x13\xa2\
-\x9b\x81D\xbb\x0eva{\xf4\xb9\xf7\x0e\xd7\xce>\xd4\
-7\xf0\x97O\xbc\xc9\xb0\xff\xa4\xf35ytK\xca`\
-\xae\xa0\xaf\xaa\xc6\xe5\xae\x9e\x82\x81\xa8\x84\x811\x8eh\
-<\x8dT*\x83D2\x8d\x804\x88\x93Zu\x5c\xbb\
-T\xc2\xbc\x19@[\xb3\x84\xf6\xd6 \x9a\xbf\xf4\x22$\
-3Q\xbaH\xf3\x9d7\x83\x99\x9b&\xba\x02(I0\
-5\x85\xa7\xd6\xeb\xb8\xf1?R\x18\x19\xe1\x85\xc9\x9e\x01\
-\xabo\x0b\xe0\xbc+\xbe\x05\xe1i\x82H\x0eC\xdb\xf7\
-\x12\x90I\x12a\x19\x0c\xc8\x91\xe7\xd6\x96\x92\x90h\xa6\
-\x00\xf6\xca+\xaf\xdc\x10\x08\x04fG\xa3\xd1U ^\
-\xc5\x0a\x8a\x8b\x10$4\x10\xbc\x84ds\x10\x89\xf3\xe7\
-\x815\x04Q\xfb\x9b\xfd\x0dw)\xdc\xfd\xdd\xd6\xd6V\
-\xf4\xf7\xf7\xa1*\xe0\x0574\x84\x86#0\x0c\x8ei\
-\xb5\x14\x87\xf3%\x9c;\x8f\xe1\x82\xa5Mh\x9f=\x8b\
-*\x5c\x13\x98\xbf\x01\xcc[\x0b\xe6\x0e\x82A\x03\xb8\x92\
-\x033\xb2\x10j\x14,=\x08\xa4\x87s\xdb\xecL\xcb\
-\xe2\xd0Q\x81\xb3\x97\xd7b$\x1c\x01Yn\xc6;\x1a\
-%\xec\x09\x01\xa7\xb5\x09|\xf0\xb3\x0b \xd1\xeb7O\
-G\xa0\xedy\x06\x22\x9b\xb47\xaau\x81M\x078\x14\
-\x8d\x83\x09\xae'\x1b\x16/|\xba\xa7N'\xf2[>\
-\xfa\xe8#\xcf\xc0\xc0\xc0\xa9\x00z\x8b\xed\x07\xe8\x848\
-A\xb5D\xa8\x1dN\x22\xf0z\x17\xa2'5#|\xde\
-\xac\xc8\x9d\xef\xf65\xb3\xde\xde\xde\x9b\xcdX\x22o\xb4\
-f\x85\xe1\x9c9\xae\xc8\xbd_\x9f\xe5\x9f\xb5\xe8Bo\
-\xb0u!s\xfb\x82H\x0b\x05\xc4\x90\xa0\x101\x82\xaa\
-\xd0a\x14<\xd9\x9f\xdb,\x91\x94\x10$=\x01\x99\x09\
-\xc8B@\x12f\xcb\xd0=\x5c\x0d\x0e97\xdb7\x9e\
-\x03|\xeblPh\x00\x7f\xfdB-f4$\x10\x97\
-\xdb\xe0J+H\xedZ\x0d\x91\xce\xd0}f\xfc\x09\x08\
-\x9d#\x95\x11T\x1a\x01\xb3'e\xf8\x1eyd}\xba\
-\xbauz\xfd\xbf\xf7\xf4\xf4\xd4\x11\xf9\x1bL\xf2\xe56\
-D\xb8\x15\xff#\x04E\x00\x8d)\x15S;\xfb\x11\xdb\
-\xd6/\xc6[\x1b\x95\xefi\x9a6\x04\xe0\xdb\x846\x02\
-\xbcn\xb9w\xd9\x895\xf7\xb6_\xf9\xe8u5SZ\
-\xdaT%-\xa53\x09\xb7\xa6\xa6]Jr\x14\xa3\xfd\
-\xbd\x99p\xff\xc7n#\xbe\xbfZ6\xe2\xbe\x80WT\
-y=\xc2\x13\xf0\x08)\xe0a\xb9\xca\xe2\x22\xb8\x19\xc0\
-\x0d\xe0\xdd\x819H$\xba0\xb3\x1e[\x82n\xecy\
-m\x07j=.Q'\x04?\xefp\x18\xfa\xc7=\x11\
-\xc9\x88\xbf*\xf3x\x04\x01\xb7\xcc<L\x80q\x01E\
-\x15b\xdf0\xd4\xa3\x096z(\xea\xde\xf8\xe1\xa0\xdf\
-5\xeb\xc4\xa6\xd5T\xd1\x9a\xf7\xee\xdd{7\x80_\x1d\
-\xeb\x8e\x90\xb0\xbc`\xdcj\x1b\x09\x0d\x02\x08\x1c\x09\x8f\
-\x87\x01\xac\x90e\xf9\x9f|>\xdf\xf6T*\xb5\xd0\xe3\
-\xf5\xbe\xdcq\xfa\xd5\xef\xcf>\xe5\xec\xaf\x09.\x06\x0c\
-CS\xe2\x91p\xf7\xde\x1d\x1bwo\xfc\xcd\x93\xa3\xaa\
-\x9a\xf6AW}\x86\x11\x0c\x08\xdd[%\xb8VE\xa1\
-\x13dB\xaf\x97\x99\xde\xe0\x96\x8c\xdaj\x9fA-\x0f\
-\xc6\xa4\x99\xf3;\xfb\xa4*UQ\xe2\x0b\xe6\xe0\x0e\x83\
-#\xab\xab\xf0eT\xe1\xf3\xbb\xb8\xa7\xfb\x88\xb1d\xcd\
-;\x9d\xcf\xca.\xd6\x00x\x83\x0c\xc2\xc7`\xb8\x05\x87\
-\x94H\xc3\x08\xa7\xb8r$*\xbc\x9ag\xda\x17;\xe6\
-\xcc\x98\xd1\xd5\xd5\x95\x08\x85B\xf7\x00x\xf4\xb3l\x89\
-\x19\x84\x84%\xc2\x14\x0b3\x08\x11\xc30\xc6\x1a\x1a\x1a\
-\xb6d2\x99\x85\xfe@p\xd7Wn\xbcw\x9a\xcb\xed\
-5\xb3\xed\xfb]\xbb\xf7\xbc\xb1\xa3sk\x94C\x97\x1a\
-O\xfa2\xe3\x5ce\xa4\x89\xc4\xf5,3\xd4\xb4\xa4+\
-)IW\x932eoY\xa3\x96gS\xee1-\xed\
-\x19\x1cc\x0b\xdd\xcd\xcb\x1e\xdd\xd9\xf5:$\x86\x07;\
-\xa6b\x9b\x00\x1dj\x90\xb8L\xe9\xc4\xa5\xde>,\xd8\
-[O\xae\x1f\x9bu\xe1\xb2Y\xcf\xb74\xf8\xd3\xe3\xb1\
-\xd4\xb4\xd1h\xfa\x84pL\x9foH\xfe\x99\x9e@]\
-\xa3\xab\xc6\x1f\x8c\x86\xc3\xea\xce\xee\xf7^\xd6u}9\
-\x80]\x04\xed\xf3\xfc\xaf1f\x89UK\x98j\x95\xca\
-$\xd5\xd5\x9b\xa8&\xdf\xd6\xdc\xdc\xfc\x0dz\x87P\xd2\
-\xe9t\xe2\x8d7\xde\xd8=\xc9\x96\x86\x80\x05\xd3\x98\x10\
-\x9c\xc3\xe0B7\xe8H\xe5\x86\x9a\x11\xdb\xb6\xed\xa8\x86\
-\xb7z\xed\xde\xbd\x9f\xcc\xeb\xec\xec\xdc\x0e\xe0L\x82\xfe\
-\x8f\x00\xd6-\x06K\x8d\x83Ec\x90{\x13\xec,\xba\
-\xf3y\xb7\xdb\xdd\xec\xf5zUj\x99\xcb\xe5r\x93\x81\
-\xc8\x1a\xf1x|\xbf\xa2(k\x01\xfcZ\x08\xd1]@\
-\xbc\x9c\x07\x94\x08\x09\x8d\x10!(\x84&\xc2\x14UU\
-\xe3\xe6\xba\x9a\xda\xa6\x97\xc9\xc8+8\x00\x97S\x00\xe7\
-\x9f=\x18c\x1c\x8cA\xa2\x1fx\xdc\x02\xf0\xf1w7\
-|\xd4\xee\xf7W=\x91\x88\xc6\xe6m\xdb\xb6m\x14\xc0\
-5\xd6x\x99\x04\x90\xf01d\xab*\xd5\xe4wTp\
-\x0b\xe5\xa1\xb3\x08\xb5\xd6s\x85\x09\xfb\x09\xa6p}\xd6\
-bNTfW\xb80$\x92\xd6\x97fi\xc67\x92\
-\x00J\x22\x918\xe3\xc0\x81\x03\xafQy\xe4t.\x13\
-I\x13\x92U!r\xe4\xf3\x13/\x0c\xab\x95H,\xb1\
-n\xdd\xba6\xba~=-O\xbfs\xe8\xd0!\xff\xa6\
-M\x9b\xc6\xe9\xda_\x01\xc8\x12\xda&|\xa76\xc1\x0b\
-\x93\x84\xdd\x84NB\x8a\x90\xb1&E/G\xbat\x08\
-\x1c\xff}2!\xe0\xf1x\xbeM\x1e\xb0\x9c\xc2`\xe5\
-\xa9\xa7\x9e\xba\x9e\x92\xa3\x9b\x5c\x93Q\x82\xe4\xe4\x9a:\
-\x09\xa2r\xce\x0d\x1a#(_\xc8\xe3\xe3\xe33\xfc~\
-\xff)4\xe6\x22j\x97Q\x82b\x94\xa1\x0d\xea\xff\x10\
-\xc0*\xc2Q\x8bP\xc2*\xc9\xb1\x1cQ'AnA\
-\xe0s\x1a\xab\xc0\xfd&\xaec\x8c=L\xa4j\xab\xaa\
-\xaa\x86\x89X\x8a\xda\x0c\x09 <y\xf3\xd1\xf5\x06B\
-\x8d9\xfb\xe49\x88D\x22\xc6\xd0\xd0P/y\xc2\x06\
-ki:`\x11M\x12\xd2\x96\x08\x9aM\xf6wc\x0c\
-\x95\xb3*\xc2\x97\x09\xa7\x13\xda,\xc2u\x047\xe7\x5c\
-\xb2^A#\x84\x83\x84n\xc2\xfb\x84~k\xa6\x8dr\
-\x7f\xd6\xfb\x03\x10\xa0\xf0\xf3\x1c\xff\x0a\xc0\xf9\x17V\x81\
-\xdf\x13\xfb\x1f\x84\xaf\xe2\x02\x22\xe6\xe9\x93\x00\x00\x00\x00\
-IEND\xaeB`\x82\
-\x00\x00\x0d\x06\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\
-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
-\x00\x00\x00\x09pHYs\x00\x00\x06\xec\x00\x00\x06\xec\
-\x01\x1eu85\x00\x00\x00\x19tEXtSof\
-tware\x00www.inksca\
-pe.org\x9b\xee<\x1a\x00\x00\x0c\x83ID\
-ATx\xda\xed\x9b[hU\xd9\x19\xc7\xd7IN\xa2\
-&&\x1a\xe351^\xc6T\xad\x97J\x95)8\x14\
-\xc4\x22\xb6\xccs\x9f*\xf4a^|\x10\xc4\xc2\x0c\x08\
-}(\xf8TJ\x1f\x15\xa4O\xf6Q\x0aR\x90N\x07\
-A\x94\xfa\xe0\xfd\xd6\xaa\x03^\xc6\xfb5Qc.F\
-\xcd\xc5~\xbf\x0d\xbfa\xcf1\x92\x8c\x1c\x83\xc1,X\
-\xec\xbd\xd7Y{\xad\xef\xfb\x7f\xf7\xb5\x93\xc2\xeb\xd7\xaf\
-\xd3\xc7\xdc*\xa2\x8f\x030\x0e\xc08\x00\xe3\x00\x8c\x03\
-0\x0e\xc0G\xda\x8a\x1f\x1aA\xc7\x8e\x1d\xdbS]]\
-\xfd\xb3i\xd3\xa6}\xe1\x98\xad\xad\xad\xed\x8f\x95\x95\x95\
-\xf3W\xaf^\xfd\x8br\xed\xf7A$B\xdb\xb6m[\
-P,\x16\xff\x10\xb7\x9f\xcd\x9e=\xbbe\xf2\xe4\xc9\x93\
-\x18\x876\xaf\xb6\x81\x81\x81\xc1K\x97.\xdd\x1a\x1c\x1c\
-\xbc\xd4\xd1\xd1\xf1\xb7\xbd{\xf7\x1e\x1a\xd3\x00l\xd9\xb2\
-\xe5\xb3\xfa\xfa\xfa\xc3!\xf5\xaa!\x09,\x14\xd2\xdb\xc6\
-\x03\x84t\xfd\xfa\xf5C\x15\x15\x15\xbf\xd9\xb3g\xcf\xab\
-\xb1d\x022\xff\xcb\x9a\x9a\x9aC!\x84\xe2\xcb\x97/\
-\x87cx\xc8\xb1\x96\x96\x96\xf5\xd7\xae]\xfb&\x1e\x7f\
-5\x96\x9c\xa0\x0c\xfc\xb3\xbf\xbf?\x13B\x00\x91\xaa\xaa\
-\xaaR\x98\x02=\xbb\xb7;n\x9f8qb\xc6<\xa0\
-\xd1\x9b\x9a\x9a\xd6o\xd8\xb0a\xdd\x98\xd2\x80\xcd\x9b7\
-\xff9\x98i\xec\xeb\xebK\xcf\x9e=K\x0f\x1e<@\
-\xa5G\x0a\x5c\x0a'\x99\x1a\x1b\x1b\x93\xad\xae\xae\xee\xaf\
-q\xf9t\xac\x00\x00\xb3_\x04\xf3H\x10\xef\x9e\x16-\
-Z\x94\xc2\xf9\xa5\xe7\xcf\x9f#e\xe7\xa4\xce\xce\xce\xd4\
-\xd0\xd0\x901\xfc\xf4\xe9\xd34i\xd2\xa4t\xfa\xf4\xe9\
-\xf4\xe4\xc9\x93D\x0b\xff\x91hS\xa6L\xf9\xf9\xc6\x8d\
-\x1b\x8b\x07\x0e\x1c\xe8\xff\xe0\x01\xd8\xb4iSu\xb4\xe9\
-q\x0b\xc3x\xf6\xb4j\xd5\xaa4a\xc2\x84t\xe3\xc6\
-\x8d4k\xd6\xact\xea\xd4\xa9\xd4\xda\xda\x9a\xe6\xcf\x9f\
-\x8f\x9d\xc3`\xbaz\xf5jZ\xb8pa:{\xf6l\
-\xf6Nww\xb7\xe6\x00h\x95/^\xbc\xd8\x14K\xfe\
-\xfd\x83\x88\x02\xdb\xb7oo|\xf4\xe8\xd1\xba \xbc?\
-\x88\x9d\x17\xd2[1s\xe6\xcc\xdf\xde\xb9s\xa7+\x88\
-\x9e\x1cc\xd3\x83\xe0\x84\x16\x00B\xc4\xf7w\xd1\xa2L\
-3\x02\xcc\x0c\x84[\xb7n\xed\x0b\x8d\xd9O8\x8d~\
-4\xd6\xfc\xf7\x89\x13'\x1e\xbc\x17\x00~\x1dm\xc5\x8a\
-\x15\x95\xc1Tm0\xd3z\xe6\xcc\x99\xdf\xafY\xb3\xa6\
-9\x18}\x10\xd2h\xbap\xe1B\xed\xb2e\xcb\xd2\xdd\
-\xbbw\xd3\xd4\xa9SSWWWz\xfc\xf8qFl\
-\x84\xad\xc4\xbe\xd8>\x12\x0c\xa0\x90\xa8\x9e~\xc4\x0dM\
-a\x1d\x1c(f\xc3\xfd\xe5\xcb\x97\xf1\x07\x98\x13\xfb\xbc\
-\x0e\xad\xba\x1cN\xf4\x1f===\xff\xda\xbf\x7f\xff\x89\
-\x9838b\x00v\xec\xd8\xb1\xf4\xe6\xcd\x9b_\xc5m\
-\xcb\xe2\xc5\x8bo\xd6\xd6\xd6\xd6\x04\xa1\x8bz{{[\
-\xcf\x9f?\xdf\xc8&\xa8$\x92\x84Q\x18\xc0c\xf3\x8c\
-m\xbfz\xf5\xca\xae'wi\xa4\xce8D\xd2\x99\xcf\
-\x18L\x0c\x1b\x0e\x01-hQ\x0bx?c\xd8\xe7\x90\
-z\x8a\xe8\x82\xf9\x00>~\x22\xdb;\xe8\xeeloo\
-\xff&\xf6\xfd2\xe6\xdc\x1e\x12\x80\xdd\xbbw\xa3\x8b\xbf\
-{\xf8\xf0\xe1_\x8e\x1f?>;\xd4\x88\x97\x0d7\x10\
-\x08\xe1y\x06\x91\x1e\x1b\xdb\xdfxFBt\x1bk\xe0\
-\xd0d\x9e=`\x8c{\xae\xf9n\xf3=\xaf\xac\xeb\x95\
-\x0e\x00y\xe7\x19\x1a\x09\x08\x00\xc5\xfa8O\xfcH\xe6\
-gB\x1b\xae\x1f=z\xf4\x937\x00\xd8\xb5kWM\
-\xd8\xd0\xd7\xa1\xaa\xebb\x92L\xb2\x10\x1d\xc6\xd8\x14\xbb\
-\x858\x09\x18\x16\x006\x869\x1b\xce\x0b-\x810\xc6\
-\xed#\x01\x80.\x93y\x10X\xcb\x88\xe0\xef\x87\x0f\x1f\
-f\x1f\x98V\x08\xdc\xd3\xfb\xc3$\xebo\xdf\xbe\xdd[\
-\xf4\x85\x9d;w\xb6D8\xfa6T\xb9\x96\xd0\x93'\
-\x02d\x91\x18\xe3a\xf3i\xee\xdc\xb9)^\x06\x086\
-\x960\x89\xcb\xe6\x00`\xe4\xea? \xd6\xe6\xfa\x00%\
-\x08j\x80\xfb9\xce\x9a9@\x87\xd4\x00;\xcc\xf1\x1e\
-\xfe\x06\x8d z`V\x08\x12 B\xab\x11$\xeb\x17\
-\xc3\x17\xfd\x09_\x9d\x01\xb0o\xdf\xbe\xc6\x90\xca\xb5(\
-2\xaad:\xcf<I\xca\xca\x95+\x13\xed\xc8\x91#\
- \x9d\x81\x10~\x00\xe9\xe6\x01\xc8\x88\x8e\x82\x86\x8d\x01\
-\x8d5\xb2Mmj\x14\x8d\xb90\xc7\x1e\xd3\xa7O\xc7\
-y\xf1\x9b\x1a\x02\xe1C\x81$ \xa5 \xc88\xe0+\
-y\xd6\xc0\x0c\xe8\xd6\x0f\xfc\x86\xe3\xfd*\x9e\xf7d\x00\
-\xdc\xbbw\xef?\x11w\xabTS\x99\xd7\xfe\xc9\xb8\x02\
-1\x9cHF\xa4\xf3$\x16\xfb\x82\x10\xcd#\x22\x00\x8c\
-\xf2,\x00\xae\x9b\xadA\x13\x00\x12 \xd6F\xa3\xc8\x01\
-\xf2NP\xa65=\x9b)q\xe9o\xac\x8d\x83\xc4\xe1\
-B\x07\xeb\xd2\xb6n\xdd\x9a\xdd\x9f;w\x0egM\xa4\
-@\x0b+\x02\x88O\x8b!\xfd\xdaP\x8d\x9f\xe6\xbd\xac\
-\xc4\xa9\x8a\x84)PC\xa2\x80\x81\x84O\x9e<\xc94\
-\xc6\xd9T\x00@\x18\x86\x95\x8e%\xec\x0f4\x806o\
-\xde<\x9c*Z\x041\xec\x07\xb8\x864\x9e]\x03\x1a\
-t\xb6\xec\x87vq\xcd\xfb\x09\xe6\xb0\xaf\xeb\x93\x1f\x08\
-6\x91 \xfb}\xce\x9c9\x198W\xae\x5c1ZM\
-+\xc6K\xad\x11\x8f\x0b\xbc\xa8csA\x91\x9e1c\
-F\xb6\xb0\xa9\xea\xc1\x83\x07\x9d\x87\x8a\xb1\xd1\x1bj\xc9\
-\x06\xda\xbfD\x0a\xc4\xf2\xe5\xcbIe1'\x18\x05T\
-\xcc\x0a\xa2\x19\xd7\x9e\x95$\xb4 A4\x0d:\x98\x03\
-\xb3\xa8<W#\x13\x82P \x8c\xabE\xf87\xae\xbc\
-W\xea\x5c\x0b\xc5\xd8\xa0\x10\x8d|\x9b\x8d\xf3^\x7fH\
-\xc6h\x10\xc6o<\x03\x00\x0bC0D\xd25\x0dC\
-\x9f\xef1\x8e/!\xa5%\x09\x82i\xf6\x05`\xd6@\
-\xc3\xb8\xc2\xb4\x0e\xcf}\xd5J\xf61\x17\xc0\xff\xb0&\
-k\x01\x12{\xd2\xa0\x01>\xbc\xd7\x17\xd9\xf3\x0d\x0d\xe0\
-e\x88\xd0\x86\xe9\x82\x90\x0f\x7f\x02a\x1e\xfe\x86]j\
-\x7f\x02\xa0Y\xd8\xc8\xed/^\xbc\x08hH\x1d\x89\x03\
-\x00>\x08i\xb2/\x84\xeb\x00\xe92\x8b\xf4U[\xe6\
-@\x07k\xe0\xf0X\x83\x88\xc3<\x0b&S\xebaS\
-\xec\xa2*\xf4\xaeM/\x9dk\x10\x85\xa4J\xd3V\x9c\
-\x1c\x0c\x10&\x91\x0cs\xd0\x06\x00\x83\x01\x1c\x14k\xe1\
-\xb1\xd1\x1e\xf3\x07\x01a]hEs\xb8G\x0b\x99\x03\
-\xe3\x80\x00\xf3\xbc\x8bC%\x04\x1a\xc5\xb8\xda\x87\x01\xa0\
-L\x0d\xc2`\xc0\x06QH\x18U\x85P}G\x14F\
-\x5ca\x1c\x8d\xc11\xf2\x1e\x0c\xb3\x06\x0cA\x1b\x0c\xd2\
-\x01M\xed\x831\xd6\xa5\x94\xc6yZ\x1a\xb3G6~\
-\xff\xfe}\x9c\xec\xb0\xf5\x05> \x95\xbbi2F\x15\
-\x98\x8ac+31M\x0bF\xa8\xe02\x82\x97,Y\
-B\xb1\xc4\x19_iF\x88\xb4a\x1e\xa6Y\x03\x86\x01\
-\x8e\xe8\x01\xd3\x5cq\xd0\xac\xc9\x95u\x19\xc3TL\xb3\
-\x05\xe2\xfdk\x80\x9b\xda\xb0G\xc2(\x04@\xac!\x92\
-+\xb6\x8f9\x00\x00\xe6\x01\xe1\xe6\x0d\xe6!&/\xfa\
-\x03}\x92v\x0e8\x80\x82\xc6\xa8%\x8c\x13\xfaX\x1f\
-\xad\x1a\xd6\x07\x94\xb3\x11&!\x02P\xb5A\xd4\xbf\x94\
-yT\x17\x82\x91&~@M\xe4\x1d#\x8ay\x88\xe9\
-0s`\xd4\xb9\xccC[\xe4\x819\x00\x05 y\xc7\
-m\x1b\x15\x0d0\x03cc%D\x83Y\x01\x80\x09\xa4\
-M\xb9\x8a\xad2fJ\x8cd5\x15\xcf\x0ed\xce\x08\
-\x01\xc8\x98\x0b\x8e\xd5\x04\x88\xf7\xd4\x06C&\x9a\x85\x1f\
-a\x9d\xd1\xd2\x00\xe36\x1d\x86pJ\x84\xaf|\xa6\x08\
-\xf1\x84]=9\x0c\xe8\xd4\xb0a\xa3\x00\xa01nx\
-\x86y\xde\xb1\xe0\xa1\x13\x05\x04>\x9f\x00\xc1\xb4{Q\
-gp\xffV'XV\x0d\x90Q\x9a\xea\x8e\x9a\xe7U\
-\xd2:\x9d(\xc0\xb8g\x06\x8c1\x17\xa6\xb8\x1a\xfb\xcd\
-\xf4\x90<\xcf\xfa\x05\x8b\x1f\x9a\xd9\xa2i5`\xd0\x0c\
-\x9bh\x1c\xfb\x8e\xaa\x06h\xabJ\xd11\x98p\x1e\xfb\
-C8\x04\xeb\xe1q`\xf3f,IM\xd3>I\x03\
-\x13B\xdd\xbbo\xa3)0l\x8d`\xdeo\xea\xab\x84\
-\x87\xca\x1e\xc91\x00\xd5|\xe2\xfd\xfa\x80<!\x82\x9b\
-\xaf\xdaTU\x88\xb7\xb4\x05\x00AP\x0b\xe6\xcf\x5c\x9a\
-\xfak\x1f\xa7\xe6\xa6\x96T\xdd\x96\x85L\xed\x1dFt\
-\xb6\xac\xc7;\xaeo\x04\x92'\xfd\x0a\xa6\x88)\x00@\
-Y5`\xd8#+\x01\xb0\xa9\x01\xee+\xd1\x8c\xe55\
-\xa1P\xf72-X\xb44\x15\xeb\xfaR\xb1\xba9u\
-\x90*\xc7;f\x99\x9e1\xa2\x19\xac\xaf)[\xd0\xe5\
-\xa3\x10\xe1\xd0\xcc\xb3\xb4U\x94\xd3\x07\xc8\xa8\x04 \x95\
-R`\xf2g\x0e\xf9{\x9f=#|\xde\xdf\x1e\xcc>\
-J\xb5U\xf5\xa9>\xca\xd8\x89u\x93S\xfd\xec\xc8\x19\
-\x1a\xa68\xcf\xf7\x5c\xc3\xee\xfev5\x0d\xb0\xde\x04\xa0\
-\xdc> O@\xbe\xa2\xf3\xdeL\xd0\xef\x7f0\xeb\x5c\
-\xfb\xf71\xbf\xa77u\x84\xeaw\xb5\xb7\xa5\xee\xb6\xf6\
-\xd4\x1bj<!\xbe\x9c\x0f\xe64\x8c\xf5,\x99\x05T\
-\xe9k\x86f\x93\xac[\xda\x8a\x12Sn\x00\x8c\xdd:\
--\x9a\xa1\xd13\x02U\x9fy:5\xed\x1bo^\xc5\
-\x07\x8f\xfa\xba\xd4\xf7\xbc'=\x8d2\xb9\xb3\xa7;\xf5\
-\x15\x99\xfb}\xc5\x0a\x00\xbc\x83\xa7W\xd2\xa5%8{\
-P\x83p\x1d\x1d\x00$@\x00,\xb9uJ\x82\xc2\xbd\
-\x85\x92\xcck\xe3\xcc\xc9\xca\xe3\xcaBzE2U]\
-\x91\xba\xba;#\xb7N\xa9\xab\xb3\xcb\x13k\x22\x06`\
-\x19\xf7e\xdc\xc6\x98\xc5\xd2\x90\xad\xa8W.W\xf3$\
-WB\xcc\xe3!B\x7f\x03\xb1f~H\x0e\xdb\xa4\x9b\
-\xfe\xe6m\x96\x10V7\xb3!M\xa8\x9c\x98\xbaz\xbb\
-\xd2\xa3+\x0f\x01\x0c-aM\xee\xcd\x1a=\x87T\xab\
-\xbc\x1f\xddT\x18\x06\xf2\x84\xc0\x84\xa0\xd0Lz\x90\x9a\
-\x80Q\x10\x91\x12#\xfd|\xf1\x83`<\x95\xceg\x82\
-\xda3\x8cs\x82\xb4`\xc1\x02\xcf'\x05\xd8\xc4\x89D\
-it\x8b!\x9d\x9a\xcd\xb3:\x80\x80`m\x14\xd5g\
-\x0cf\x01\x8a\xda=>[e\xc0\x18\xeb\xad\x05\xb4e\
-A\xf0\x9c2>\xdbq@+\xd0\xcc\xc9;B\xb5\x84\
-=GO\x03LG\x05\x82g\x08\xf1h\x8b1\x99\xf6\
-\xd0\xd3\x12\x1a\x10Pyk\x04\xabA\xdf\xf1\xec\x12\x9a\
-\xa9 9\x12\xf3\x5c\xd03J\x80\xf5\xd3\x1d\xe6\x05\xf3\
-\xa3u b\xfd\xaf\xf3\xd3\x0c`\xcajM\x02!\x1a\
-@\xf2\x1fG\x19\x83!\x8b\x17\xa4\xed<\xc3'_w\
-\x00\x94J\x12\x06\xd9\x03\xe65\x09\xfd\x0fB\xe0X\x8c\
-\xdfF\xd7\x07X\xcf\xeb\x84Tw+@\x982\x13\xb4\
-t6\x1c\xf2\x9bE\x8b\x15\x9d\x1fRaD\x8f\x1e_\
-\xaa\xd1\x0eO\x95\x00\x8f\xf73\xa0<)jnn6\
-\xed\x1dU\x1f \xc3\x1eE\xeb\x18\x01\x85|\xdc\x83N\
-\xf3z\x011\xf4\xe1 aT\xd3\x00\x00\xde\xa1\xf6g\
-\x1d\xd7\xd4!ZL\xb1'ct\xd6\xc0\xf9\x01\xfa\x88\
-\x00\xe0\x0bq\xb9\x01\xc0\xa1i\xbfflH\x0b\xf5\xd5\
-W\xc0\xb8\xde\xdeR\xd7DJ\xa6Js\x0bU\xde\x22\
-'\x9f\x0cyb\x84\xf41\xbb\x11)l1P\xaea\
-\xd1rT\x7f6\x88\xb3\x04.\x05\x06\x10 T\xe7\x05\
-\x13\xac\x81\xdd#q\xa5jm`FI\xb7\xb6'\xf9\
-\xf1T)\xffu\x8aw\xf9\xd6\xc0\xbc\xb5k\xd7r\xec\
-\xa6\x06\xe9$\xf9.!\xdd\x00\xde\x87\x064\xf0\xf0\x0e\
-\xcd\x8c\xeemZ\x80-*9\xbb\xc7\xde\x10\xe7\x87\x0d\
-\x08\xf1K\x8e\xa7\xba\x1e\x8cp\xc6\x0fS\x00\xc5\xf19\
-k\xc8\x98\xef m\x00c=+N*@\xd6\xf6=\
-@\xf5\xbc\x01\xba\xa0\x01 o\x15\xf9\xdb[\xff\x14\xed\
-\xc7\xb6|\xf5\xa5\xbd\xea\xfd\xd9\xc0\xdfJ\x9bN\x12\x8f\
-\x0eQH\x15\xa2\xf3i34\xd1y\x9fd\xc7F\xe6\
-gh3)\xe2}K]\x01\xf8\xee\xbb\xef\x86\x22Y\
-\x00\xd1\xd0\xb3\x11I\xfe[\x8c\x81\x9bdZl\xca\x22\
-\xf9\xd8\x9b\xaf\xeb\xed,nM\x0fa~\xa8\x90(\x8f\
-\xb8\xecn\xea\xb5\xa4y\x86\xef\x91\xd8pi\xb9f\x82\
-\xcf\xf0\x0b\xb6\xe7\x83#1W\xfd\xc7\x85\xf8\xfb\x86/\
-c\xa8\xad\x18R\xea\x08oy(\x08_\xef_X\x04\
-\x832\xe2U\xe2e\x12/?\x10D|\x1b\x8f\xcf\xf2\
-i\xae\xcd\xf8>\x82&8\x95\x01\xe8\xd4Xcz\xd0\
-P\x13\x9d\xbfW\x80>\xf6\x1b\x88\xf1\xbe\xb8\xbc\x88\xa9\
-\x8f\xc3A>\x09\xa0~l\x02\x83\xd0:\xc2\x9c.E\
-8\xfe:\xd6\xbb\xc0)~!\xfe\xf6~R,\xbc:\
-T\xf6\xf3@wY\xfc\xf0\x13\xfe\xcc\x8d\xf9y\xc9K\
-g4\xa0\xbe\x1d\xb6t$\x88\xf8_\xbc\xdb\x99\xdeO\
-s\xc3B\xb4\xd7e\xc8O\x90\x0e\xb4\x12\x1b\xefE\x7f\
-\x12\x7fq\xfa:\x0b\x81\xf1\xf7}\xd3\x02\xed\x96`f\
-n<\x83~}\x00A\xfd\xca\xefH\xb2\x10\x9d{\xfa\
-`\xdc\xb3P{\xcc\xb9\x16\xd7\xa7il4@\xec#\
-h\x04\xe3}\x0e\x9a\x03\x00B\x15\x99l\xf4\x9a\xe8\x18\
-\xa2\xfa\xeb\xb5@g!T\x07\x7fD\x07\xc54\x86\xdb\
-\xf8\xbf\xce\xa64\xfe_c\xe3\x00\x8c\x03\xf0\x11\xb7\xff\
-\x03\x7f\x19\x0a\xe4\xd7bc\xda\x00\x00\x00\x00IEN\
-D\xaeB`\x82\
\x00\x00\x15\x14\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -864,6 +346,313 @@ h\xac\xe8y\x0b\x8b8f?\x89\xcd\xd5\x82\xeb\x964\
\xe8,&\xde\x84\xa1k\x84_.b\xfd\xb7\xff\x05\xc7\
\xfd\xe7\xdb#]\x138\x00\x00\x00\x00IEND\xae\
B`\x82\
+\x00\x00\x13\x09\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\
+\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\
+\xa7\x93\x00\x00\x00\x09pHYs\x00\x00\x1b\xaf\x00\x00\
+\x1b\xaf\x01^\x1a\x91\x1c\x00\x00\x00\x07tIME\x07\
+\xd7\x09\x17\x17\x15\x19I\x86pA\x00\x00\x12\x96ID\
+ATx\xda\xed[\x09t\x5c\xd5y\xfe\xee{\xb3k\
+\xb4Z\xb2%\xd9\x96dcl\x8316\xb6\x81\x00\xe1\
+\xb04\x14\xc2\xda\x94\x86\x04\xd2\x90Br ] \x14\
+h\x08KH\x09\x87\xda\xadsRR\x02$\xad{ \
+\xe4\xb0\x95\xcd@\xb0\x1bV/\x80\xb1-\xdb\xd8\xb2l\
+l\xd9\xb2,\xc9\x1aK\x1ai\xf6\xe5m\xf7\xf6\x7f3\
+\xef\xf0\xf4:\x9a\x19\x1b&=\xc9i~\x9dO\xf7\xbd\
+\xfb\xee\x9by\xdfw\xff\xe5\xbe+\x1b\x7f\xb4?\xda\xff\
+oc8\x0e\x1b\xbb\x05uR\xed\xf4\x8b]3\x97\x5c\
+\x06\xb7\xef<\xa1\xa4<\xd0\xb3\xc3B\xcd\x0cq5\x15\
+\x12J\x22\xc4S\xe3!\x91\x8d\x85\x84\xc0\x10\x80\x10\xe1\
+\xe8\xd4\x9fC\xf9\x83\x16@\xfc\xd8\x7f\x95h]v7\
+\xe7X\xc6\xd3Q\x99\x08Bp\x01\xe1\x0e\x12\xaa\xc0e\
+?\x84\xec\x81`n\x82\x0b\x90\x5c\x10\x82\x03\xdc\x00\xd7\
+\xd2\x02\xba2.\x0cmH\xe8jHhJH\xe8\xd9\
+\x10W\xd3$T|Hh\xd9\x900\x85\x12\x08M\x7f\
+\x0c\x99\xdf;\x01\xc4\x03\x9e?\xc7\xf9\xf7\xbf\x88\xe6E\
+\xcc$\x04\xae\x03&9C\x052\x11\x80\xc4\x80\x9a\xcc\
+C\xcf@h\x19\xf0l\x82\x90\x02W\x92\xe0\xa6P\xb2\
+\x0f\x5cH\x04S\x13N\xd0\xc1u-'\x14@\xd7\x0d\
+\x03$\x0aA\x8d\x0a\xae\x87\x08C\xc2\xa06\x07\x95\x04\
+3\xa1\x0c\x09n\x84\x00\x84:\x1eG\xf2\xffN\x80\xa7\
+.\xee\xc4\x99\xb7,\x85\xb0\xc8s#\x07\xc7\xb9(\xd6\
+\xa7\xe7\xa1\x98\xe2d\xed>\xd3\x84\x00W3\xa4\xa3B\
+\xc8\x82s\x0e\x03np\x12\xd6P29\x01\x0d\x12R\
+\xcf\xc4\x01\xba&\xcc\x1fn\x80<\x89\xa0'h`N\
+\x90\x1c\x04\x0f\x01<\xc4d\x98\xd8\xd9q)\xba\xd9\xc5\
+\x10\x95\x11\xe0\x85kSXxm ?\xf3F\x09\x01\
+\x9cb8\xc6\x8b\xdc5\x1b\xa2\xc8X\xf2\x1e@\x00\x14\
+N\x90\xdc\x80\xcbG\xf0\xe7<F\xd7u\x18\x9a\x96\xf3\
+ \x9d3\x12'\x09=5\x06u\xa4\x07z\xa2\x0f\xae\
+\x00\x03\xf3\xe4o7\x14\xf1:5\xdf\xe8X\x81\x04\xca\
+\x98\x0be\x8d\xb9r\x0f\x97\x8bi\x82c\xc6\xb9\x89\x82\
+c\xc7xaX-\xb7\xfa\x8b\x8c5!\xc9\xf9>\xcd\
+\xf4\x96\xd4\xa7\xe2H4\xc6c\x0b\x95\x0f?\xd9\x0b\xd4\
+\xd7\x00\xb3.\x85\xde4\x97\x9c\xec\x03\xe8C\xab\xc1\xb3\
+\x06\xd48\xae\xc8\x8c\x88U\xa2\x1b_c\x0bP\xd2$\
+\x945\x0e\x88\x89\x04x\x01\x81\xa2\xd7E1\x91\x8a|\
+\xd6\xb1~\xb6iZ\x1aH\x1c\x01\x0e\xbf\x0f\xd7\xbe5\
+\xa8Z\xba\x02\x9e\xe9\xcb\x00\x96\x1f\x0a\xce\xbe\xda\xf38\
+N\x00>\xaf\x00BLp\xdd\x223iyD\xd9\x87\
+\xe7\xe5\xbd\x80P\xfe\xb3\xedky\x11\x0e\xbc\x09\xac\xbd\
+\x13zf\x16RC\x02\xe9a\x015)\x98\xa1bI\
+%\x04(|8\xce\x8b\xccl1a\x8e\x918/\x15\
+Z\x93\x08\x13'\xf2\xe91\xe4\xec\x93\xd50\x12^\xa4\
+\x8f\x9a\xe4\xf3\xb7B\xc0_\x81\x1c \x0a\xc9\xd8\x84J\
+\x92q\x1e\x97\x0a%^F\x9cB\xf1l\xf2\xf6D1\
+\xdd,\xaf\xd6#\xc3\xb2\xcf-@\xa1\xdb\x15xA\xb1\
+\xd8u\x1e\x17\x0f\x95\xc2DY\xc6\xc3\xe2\x83D>\x8c\
+\x02\xe3\x1a\x84\xc5\xbcr\x02@\x14\xcd\xe86\x81\xe3M\
+\x88E\xae\x17\x92-\x1c\x1f\x1bp\x90w\x98\xa1C\xa0\
+\xd2\x02\x08A0\x8e=\xa3\x17\x86J\xf9$\xc8\x8f1\
+)\xc6K\x90'\x13\xa6\x07L\x9c\xb7\x0a\x09\xe0$[\
+\xbe\xd4\x95_\x03\x94\xff\xacB\x0f\x8b\xf5\x03\xa9Q\x94\
+4C\xb7\x89W8\x04,\x18\x05\x0fW\x9eL\x91k\
+(\xa8&\xc5E\x8d\x1d.O\x1e\xc8/\x93\xe1\x14\xa0\
+\x12e\xd0A\xb6\x10E26l\xa2\xb9~\x10\x98u\
+\x0en\x9d\x13`\xf7M\x9a\x10\xcb\xcf\xbc3\x09\x026\
+D%\x04@\xc9D5\xb9\x10\xb0\x88\xb1c$n\xc2\
+>\xb6\xbf'j\xce\xfc\x08\x8e\xd5\x04\xd7-\xe2\x16*\
+\xe4\x01eVz\x0e\x22\xc5\x88\x95\x12\xc3\xeas\x0a\x87\
+X_\x01\xf9\xb2f8\xca`%\x05(\x1f\xdbN!\
+\x9cd\x0a=\xc2&n\x0bdX\xe0@\x9c\xc8g\x88\
+\xbcT\xe4}\xb5t\x15p\xa0\xd2+\xc1\x828\xb7`\
+\x93\x13\xff\xdb\x0b,b\xc2\xe1\xe66Y\x82\xe38~\
+\x88\xc8\x0f\x03\xb25TX\xe0(g\xf6:\xc0\xf6\x82\
+\x0a\xaf\x04=U@\xfd\x09\xf9\xa7\xd1\xd3@&\x0c$\
+\x8f\x02Z\xd2\x99\xe8\xecX.\x14\x889\x12\xa3S\xa8\
+xo\x9e\xbcd==\xb3E\xb0\xfd\xbat\x15\xb0\xcb\
+`\xe5\xd6\x01\xb6\x08\xfe)\xc0\xdcK\xe14\x91\x17a\
+l/\x10\xfa(\xe7\xbe\x85\xeeO\x10\x13\xfa\x84\xc3\xe5\
+\xf3m\xe2\x90\x93\xbcM\xd6\xd9\xf2\x12\xcc\xac$X\xe9\
+u\x80#\xbb\x17\x1a\x03\x82-y\xb4_\x98\x17\xe0\xe0\
+k\xc0H\xa73\x1c\x18\x016y\xb3\xb5\xc9\x9b3\x7f\
+\xd4r\xfb2\x02\xc0\x1eSr\x1d \x08\x15M\x82\xb0\
+P\xcej:\x80\xd3n\x05\xce\xb8\x17\xa8\x9e>!\xce\
+\xed|`\x9f[\xe4\xb3\x16y\x09\xd4Z\x90\xca\x80\xa1\
+\xf8\xcb\x90\xa8d\x15\xc0$\x19\xdfP\xca\xaf2\xea\xe7\
+\x01\xe7,\x07:.s\x84\x84\x0d\x93\xfcA\x22\x1f\xb2\
+I\x95\x03+-\x820\xf4\xcaW\x01\x22j'\xaaH\
+\x0f\xb0\xeen@\xe8\xf9so5\x10l&\xb2'\x02\
+\xd3\x96\xd1y}\xc1v\x22N\xba\x01\xa8\x9b\x03\xec\x5c\
+\x09\x18\x9a\x95\x00\x09\x89\x03\x80b\x91\x17\x93\x00\x8eD\
+h\x1b\xb7\xa7\xad \x1c\xb8\xe6\x8c\x16Q\xe92\x88\x89\
+\xe5O\x07\xb2a\xc200\xba\x1d\xe8y\x16h\x5c\x04\
+\xcc\xfe3\xa0\xba\x1d\x0ek9\x17\xf0\x90X\x9d\x14\x16\
+\x9a\x0a${\xec\x99\x17%\x92\x9cp\x10v\x92f\x13\
+ \x9c\x1e\x90\xfbU\xb1\x10`\x02\xce\x9a?Y\x19\xb3\
+\xb6\xbaG\xb6\x00\x9b\x7f\x00|\xb2\x8a\xba\xb2p\xd8\x94\
+\xc5\xc0\x92\xfb\x81t\x9fI\xbex\xcc\xdb\xfd\xc7\x17\x1a\
+\xa6\xd9e\x90P\xa9$\x08QX\xd7m\xf2\x85\xab>\
+S\x88\x815$\xc4\x1d@j\x10\x0ek:\x138\xf5\
+\xfb\x05d\xcb\x82M\x1a\xff\xce~\xf6;]\x09Z\x04\
+\xfd\x8d@\xfb\x05\x80\xbb*\x17oH\x0f\x01\xf1\x83\xc0\
+x\x17`\xa8\x13D\xa06u\x18\xd8J\x22,y\x10\
+\xa8\x99\x8bOm\xfe\xdf\x00\xa3\x1f\x00\x87\x9e\x01P&\
+\xfeQ\xc2\xf5%G\x9e\xc8\x83\xeb\xf6\xed\xa22\xeb\x00\
+\xe7\xcc\xfb\xea\x80\xd6\xb3`\xdbR\x02\xf2+\xc1\xa1w\
+\x80\xbe\xd5t\x1c\xb1\x17;Z\x14\xd8~\x17\x89\xf0\xcf\
+N\x11\xce|\x04\x18y\xd7\xac\xfd\xc5\xe3\x9f\x17\xf5O\
+'i\xc9>\x17\x10\x16\xf1\x8a\x87\x80\xed\xee\x93\x9a;\
+\x08\xb4_\x05\x9c\xf5S\xa0q\xa9\xf3\xe5f|+\xb0\
+\xfer@\x8b\xd9\xe3=\x0d\xa4\xddO\xca\xd7|f\xb7\
+6\x8a\x84\x06\x9b\xc4\xa1*#\x80s%X\xd2<\xf5\
+\xc0\xe2\xfb\x80\xb6+\xf2^\x90\xd8\x07(G\x80T\x0f\
+\xb0\xfdV8\xac\xfdZ\xa0\xe1\xb4\xcfP\xfbK\xc2\xb1\
+\x12\x14\xa2b\x02p\x0b\x02Pb@x\x170\xb2\x0d\
+H\x0eN\xf2-\x0c\x98\xfb]\xa0\xf1L ;h?\
+x\xffSt\xcf;\x13\x86Q\xe7)\xf7\x1dg\x22,\
+q\xcc\x9c\xc4\x05*\x97\x03\xec\xfa?\xbe\x17\xd8p\x1b\
+\x00\xdd\x0a\x09\xeb\x05\xa9\xe3J`\xc6\xc5\xce\xa5\xd9\xc2\
+\x1f\x11\xe1\xdf\x02\x91N\xfbAw\xdf\x05\x5c\xb8\xd5\x1e\
+\xd7Ja\x13l\x03\x92\xfd\xce\xd8g6\x0ac\xbd\x04\
+\x80\xcf\xb6'\xf8\xe0}7-\xdc\xf2\xf6O\xa5\xd2U\
+\x80\xc0U\xe7\x92\x18\x84L\x08\xd8\xfb\x18\xb0\xfd\x87\x80\
+\x91\x99\xf0\xc9n\xe0\x0b\xbf\x06\x5c.{\x16\xe3\xdb\x80\
+\xd1\x89^ \x03\xed\xdf,;\xf3N\x14\xef\x17\xec3\
+\xe6\x80\xb77\xf7\xae~k\xc3\xbe_\x90\x08\xach\x0e\
+(\xdc\xf3s.\x90\xc6:\x81\x0fo\xb4\xfa,\xab\x9e\
+\x0f\xb4]\xe7\x8c\xe3\xfe_\xc2a\xd3\xaf.A\xbaL\
+\xdc\xa3\xe0\xdc\x0e\x83\xe3\xc9\x01\xe3\x8a\x9e\xed\xdc58\
+\x7f\xc7\xee\xc1\x7f%\x11Jo\x89\x81;\x84\xb0wo\
+\xf7\x00\x87\x9f\x03\xf6\xac\x84\xc3\xe6\xdd\xe5$7\xba\x06\
+0\xd2\xf6\xf5\xda\xc5\x80\x7fj\x01\xe9\xe3$n\x0b \
+>\x83\x07$3\x19C\x81\xfb\xce\xd7\xdf\xec\xba\xe6P\
+\xff\xd8C\xc5\xdf\x06\x09\x81\x16\xe0\x8c\x1f\x03\x17=O\
+\xed\x0a 83O>=\x80\x9c\xed\xa5\x9a\xaf\xc5'\
+x\xc1\xc9@\xcd|\x9b\x94 \xf2\xd1\x0f\x9dIs\xca\
+\xd9\x85\xa4Q6\xde\x0b\xc93'q!\xb9\xe5c\x12\
+ \x95\xc9\x1a)\xdd\xc8\x8eE\x92\xb7<\xbbz\xeb=\
+k_x\xf0\x9e\xc2?\x8d\xf1|\xe6^r'Po\
+\x12r\x01u\xd4\x9e\xbe\xc2v{\x86\xfc\xe2\xe7\xc8\xab\
+p\xd8\xd4\x8b\x9d3\x1b\xdb\x0c\x87\xd5.:\x0e\xa2e\
+D\x80\x05\xfa\xb5\xcbw\xfa/\x96?p\xeb\xeb\x8f=\
+\xfc\xc3\xef\xfc\xec'\xf7N/Z\x052\x8a\xa2'\xd2\
+\x19\xff\xf6M\x9b^Z\xbat\xe9k\xcf\xbc\xbc\xf9\xa1\
+\x0f\xff{\xe5\xc8\xd9\x97\xfc\xc3*G\x12\xac\x99\x0dT\
+\xb5\xc0a\xee\x1a\xe0\xe4\xef\x01\xdb\xbfo\xf7\x8dn\x00\
+:\xbe9\xc1\x0bNq\xbawf\x1f\x1cVu\xc2\xf1\
+\x91G\x89\xbe\x09%p\xe3\xa6.\xcf\x86\xa1\xfd\x977\
+\xd4\xd7^>sf\x8b\xf8\xea\xd5W\xec\x9a6m\xda\
+{UU5\xeb3Y\xf5\x83\x7f{\xe4\xe7\xa39\x01\
+\x14M\xe3\x14\x06~\x90q\xce\xffvgw\xff\xb9/\
+\xbd\xb1\xedq\xca\x07\xc38\xfc\xa4-\x80\x96)\xb2\xf9\
+q\x0a\x1c\x96\x19\x80\xc3|\xcd\xce\x87V\x87\xe00o\
+KY\x82\xe5\xc9;c\x9f\x83aj\x9d\xf7\xad\xdaT\
+\xed\x02&\xb9Z\x87G\xa2ll<\xb9\xa8\xb7oh\
+\x91,\xcb\xb7\xa9\xaa\xca\xe7\xcc\x99s{N\x00]\xd7\
+Y:\x9b\x0d\x80l\xc7\x8e\x1d\x83\x0b\x16,\xf8\xbb5\
+o\xef|\xbaeZ\xeds'\x9d0S\x0er\xc3\xda\
+\xc1\xe9\x07\xd2G\x81@3\x1c\x96<\x0c\xe7\x02\x5c\x86\
+\xc3\x5c\xb5\xce5\xbf\x91\x82\xc3\xe4*\x1c\x97\xb1\xc9\xfb\
+F\xb2>\xbc\x1f\xa9\xc3\xc1L-\x0egk0\x1eK\
+_\xa4\xebI\xc4b1(\xe4\xe5\x84}\xc4\xb5\x95s\
+^o\xf9\xe2,\xf3\x17\xb8\x10\x8c\xf2@\x10\x96uw\
+w?c\x18\xc6\xd3\xff\xf9\xf4\xba\xc0k\x91\xb9rZ\
+x\x00n\xfd\xe3\xc8\xf5\xb7\xe5W\x83\xb0,;\x0a\xec\
+|\xc8I\xb0\xaa\x03\x0e\xd3\xe3p\xee\xef{P`\xf6\
+\xfd\xc7e\xe3Y7~\xb5\xb7\x19\xd7\xbf\xbd\x00\xcb\xfb\
+\xcf\xc5{\xb1\x99\xd8\xdc\xaf\xe0\xc0\xde.\xd4%\xbaQ\
+\xa7\xf4?ZSSs\xe1\xca\x95+g\x90\x00Kg\
+\xcf\x9e\xdd#I\x12\xacoz\xcb\x05\xb2\x80\xcf\xd3\x94\
+U\x95FL0\x12\xe0&U5N^\xfe\xd8\xda\xd3\
+<\xb7\x5c\x86\xcb\x9b\xfa\xe03_{\x93}$\xf5&\
+`\xee\xd7\xf3\x1a\xf6<\x01\xa8$\x82<\xe1\xe1[.\
+\x83\xc3R\xbd6yF\x90\xeb\xe10m\x1c\x10\xc7!\
+\x82\x99\xe0F\xaa\xf0\xec\xee\xa9\xd8\x12\x9e\x06M\xd7\x10\
+\x8f\x8fCD\xdf\xc3\xe5s\x0d\xccY\xe4\xc3\x89\xb3\xda\
+\xe0\xadm\xa6<}A_\xfb\x95\xf7\x0c\x03\x10\x0f?\
+\xfc0#[,D.k_Mx\xc3u\xcf\xdf_\
+\x83\xc7\xd6\xeelJ\xa6\xd5\x16\xcb-8\x01\x07\x0f\x1e\
+L\xb7\xb5\xb5}%\x1aIl]\xf1\xcb\xdf6\xc97\
+~\x11\x97d\x87\xe0\x96\x00\x16\xeb\x07\xdb\xfe/\x80y\
+,\xe3\xd3\xedl\xc6\xac\x87\xdf\xf9\x03\xe0\xc0\xa3f\xc9\
+\xcc#\xfc.\xc0'\xb8\xafo\x0e\x1c\xa6Z\x028E\
+\x98\xb4o\xf3`\x10\xab\xb65c\xd3a/\xa2\xd1\x08\
+b\x91\x8f\xf1\xa59\x0a~t\x9e\x84\xf3\x17\xce\x04\xab\
+\x9b\x87=\x83@d\xe8\x10\xa2\x07;\x11\xee\xddy\xf0\
+\x9dp\xf3\x01\x00|\xc5\x8a\x15\xcb\xc8\x1b<$\xc0\xeb\
+\x00r\xa5\xca\xd5\xd8X#e\x15\xad\xdf\xd05\x0e\xa0\
+\x86\x90&h\x041\xbb\xbf\xffp\xf4\x84\xa6\xeb\x87\x8e\
+\x8c\xacY\xf1\xe4&\x96\xb9\xfaj\x9co\xbc\x08\x8f\xac\
+A\x96\xcdJH\xa0V\xa6\x96Y\xe7\x8c\x13\xc2]`\
+\x11\x82\x9c\xaf\x9c)]\xc6\xa1\xb1\x00\x8e\xc4<\x18\x8a\
+z\x10z\xf5\xbf\x10\xd3\xd7!\xcd\xa6#e\xd4\x01$\
+l-\xef@\x8d\xcf\xc0\xd4j\x0ds\x9b2X6#\
+\x85)~\x1d\xa6\x0d'\xdc\xd8p\xb0\x1a/uM\xc1\
+\xc7\x83\x12\xc2\xe10\x22\xe3\xe3\xf8\x8b\xa5\xc0\x037\x07\
+p\xe2\xbc/\xe4\x12\xb1\x88\x1d\x811\xb4\x1d\x91}1\
+\xa4\x14\x91O7n\xb75E`---\x17\x9b\xf9\
+\x80\xecyX\xe6\xba\xfd\xdeU\x1c^\xff\x12\xa8Y\x93\
+\xfc\x14B\x15!F\xc8\x10\xf8\x99\xd3G\xd7m<\x5c\
+\xf7`o\xdf\x91\xfb\x1f~IB\xf4O\xaf\xc22u\
+5<.\x1d.W\x9e\xbc\xcb\x12\x81\x13\xdbP\xda\x8b\
+\xc1\xb8\x17\xfdQ\x1f\x8e$\x83\xd8?\xecBoHC\
+:\x93E6\x9b\x85\xaaf D\x1a>_\x06\x81\xc0\
+(\x82\xf2\x18<H#o\x12\x09\xe4BF\xf7\xc0\xef\
+\xaf\xc7\xecf/=Z5\x14\xe1C\x86\xee\x1f\x0a\x8d\
+ <6\x86\xa0\x17x\xed\x8ez\x5c\xf2'\xe7\x03\xb5\
+'C()\x18\x07\xd7\xe6\x04\x10\x06\xc0Iy\xc1\x04\
+\x84\xe0t\xec\xca\x15_\xf3\xbb\xeb\xeb\xeb\xaf\xef\xeb\xeb\
+\xcb\x80nw\xbe\x0d*\xf4\xe9\x00\xb7PG\xf0\x13\xa2\
+\x9b\x81D\xbb\x0eva{\xf4\xb9\xf7\x0e\xd7\xce>\xd4\
+7\xf0\x97O\xbc\xc9\xb0\xff\xa4\xf35ytK\xca`\
+\xae\xa0\xaf\xaa\xc6\xe5\xae\x9e\x82\x81\xa8\x84\x811\x8eh\
+<\x8dT*\x83D2\x8d\x804\x88\x93Zu\x5c\xbb\
+T\xc2\xbc\x19@[\xb3\x84\xf6\xd6 \x9a\xbf\xf4\x22$\
+3Q\xbaH\xf3\x9d7\x83\x99\x9b&\xba\x02(I0\
+5\x85\xa7\xd6\xeb\xb8\xf1?R\x18\x19\xe1\x85\xc9\x9e\x01\
+\xabo\x0b\xe0\xbc+\xbe\x05\xe1i\x82H\x0eC\xdb\xf7\
+\x12\x90I\x12a\x19\x0c\xc8\x91\xe7\xd6\x96\x92\x90h\xa6\
+\x00\xf6\xca+\xaf\xdc\x10\x08\x04fG\xa3\xd1U ^\
+\xc5\x0a\x8a\x8b\x10$4\x10\xbc\x84ds\x10\x89\xf3\xe7\
+\x815\x04Q\xfb\x9b\xfd\x0dw)\xdc\xfd\xdd\xd6\xd6V\
+\xf4\xf7\xf7\xa1*\xe0\x0574\x84\x86#0\x0c\x8ei\
+\xb5\x14\x87\xf3%\x9c;\x8f\xe1\x82\xa5Mh\x9f=\x8b\
+*\x5c\x13\x98\xbf\x01\xcc[\x0b\xe6\x0e\x82A\x03\xb8\x92\
+\x033\xb2\x10j\x14,=\x08\xa4\x87s\xdb\xecL\xcb\
+\xe2\xd0Q\x81\xb3\x97\xd7b$\x1c\x01Yn\xc6;\x1a\
+%\xec\x09\x01\xa7\xb5\x09|\xf0\xb3\x0b \xd1\xeb7O\
+G\xa0\xedy\x06\x22\x9b\xb47\xaau\x81M\x078\x14\
+\x8d\x83\x09\xae'\x1b\x16/|\xba\xa7N'\xf2[>\
+\xfa\xe8#\xcf\xc0\xc0\xc0\xa9\x00z\x8b\xed\x07\xe8\x848\
+A\xb5D\xa8\x1dN\x22\xf0z\x17\xa2'5#|\xde\
+\xac\xc8\x9d\xef\xf65\xb3\xde\xde\xde\x9b\xcdX\x22o\xb4\
+f\x85\xe1\x9c9\xae\xc8\xbd_\x9f\xe5\x9f\xb5\xe8Bo\
+\xb0u!s\xfb\x82H\x0b\x05\xc4\x90\xa0\x101\x82\xaa\
+\xd0a\x14<\xd9\x9f\xdb,\x91\x94\x10$=\x01\x99\x09\
+\xc8B@\x12f\xcb\xd0=\x5c\x0d\x0e97\xdb7\x9e\
+\x03|\xeblPh\x00\x7f\xfdB-f4$\x10\x97\
+\xdb\xe0J+H\xedZ\x0d\x91\xce\xd0}f\xfc\x09\x08\
+\x9d#\x95\x11T\x1a\x01\xb3'e\xf8\x1eyd}\xba\
+\xbauz\xfd\xbf\xf7\xf4\xf4\xd4\x11\xf9\x1bL\xf2\xe56\
+D\xb8\x15\xff#\x04E\x00\x8d)\x15S;\xfb\x11\xdb\
+\xd6/\xc6[\x1b\x95\xefi\x9a6\x04\xe0\xdb\x846\x02\
+\xbcn\xb9w\xd9\x895\xf7\xb6_\xf9\xe8u5SZ\
+\xdaT%-\xa53\x09\xb7\xa6\xa6]Jr\x14\xa3\xfd\
+\xbd\x99p\xff\xc7n#\xbe\xbfZ6\xe2\xbe\x80WT\
+y=\xc2\x13\xf0\x08)\xe0a\xb9\xca\xe2\x22\xb8\x19\xc0\
+\x0d\xe0\xdd\x819H$\xba0\xb3\x1e[\x82n\xecy\
+m\x07j=.Q'\x04?\xefp\x18\xfa\xc7=\x11\
+\xc9\x88\xbf*\xf3x\x04\x01\xb7\xcc<L\x80q\x01E\
+\x15b\xdf0\xd4\xa3\x096z(\xea\xde\xf8\xe1\xa0\xdf\
+5\xeb\xc4\xa6\xd5T\xd1\x9a\xf7\xee\xdd{7\x80_\x1d\
+\xeb\x8e\x90\xb0\xbc`\xdcj\x1b\x09\x0d\x02\x08\x1c\x09\x8f\
+\x87\x01\xac\x90e\xf9\x9f|>\xdf\xf6T*\xb5\xd0\xe3\
+\xf5\xbe\xdcq\xfa\xd5\xef\xcf>\xe5\xec\xaf\x09.\x06\x0c\
+CS\xe2\x91p\xf7\xde\x1d\x1bwo\xfc\xcd\x93\xa3\xaa\
+\x9a\xf6AW}\x86\x11\x0c\x08\xdd[%\xb8VE\xa1\
+\x13dB\xaf\x97\x99\xde\xe0\x96\x8c\xdaj\x9fA-\x0f\
+\xc6\xa4\x99\xf3;\xfb\xa4*UQ\xe2\x0b\xe6\xe0\x0e\x83\
+#\xab\xab\xf0eT\xe1\xf3\xbb\xb8\xa7\xfb\x88\xb1d\xcd\
+;\x9d\xcf\xca.\xd6\x00x\x83\x0c\xc2\xc7`\xb8\x05\x87\
+\x94H\xc3\x08\xa7\xb8r$*\xbc\x9ag\xda\x17;\xe6\
+\xcc\x98\xd1\xd5\xd5\x95\x08\x85B\xf7\x00x\xf4\xb3l\x89\
+\x19\x84\x84%\xc2\x14\x0b3\x08\x11\xc30\xc6\x1a\x1a\x1a\
+\xb6d2\x99\x85\xfe@p\xd7Wn\xbcw\x9a\xcb\xed\
+5\xb3\xed\xfb]\xbb\xf7\xbc\xb1\xa3sk\x94C\x97\x1a\
+O\xfa2\xe3\x5ce\xa4\x89\xc4\xf5,3\xd4\xb4\xa4+\
+)IW\x932eoY\xa3\x96gS\xee1-\xed\
+\x19\x1cc\x0b\xdd\xcd\xcb\x1e\xdd\xd9\xf5:$\x86\x07;\
+\xa6b\x9b\x00\x1dj\x90\xb8L\xe9\xc4\xa5\xde>,\xd8\
+[O\xae\x1f\x9bu\xe1\xb2Y\xcf\xb74\xf8\xd3\xe3\xb1\
+\xd4\xb4\xd1h\xfa\x84pL\x9foH\xfe\x99\x9e@]\
+\xa3\xab\xc6\x1f\x8c\x86\xc3\xea\xce\xee\xf7^\xd6u}9\
+\x80]\x04\xed\xf3\xfc\xaf1f\x89UK\x98j\x95\xca\
+$\xd5\xd5\x9b\xa8&\xdf\xd6\xdc\xdc\xfc\x0dz\x87P\xd2\
+\xe9t\xe2\x8d7\xde\xd8=\xc9\x96\x86\x80\x05\xd3\x98\x10\
+\x9c\xc3\xe0B7\xe8H\xe5\x86\x9a\x11\xdb\xb6\xed\xa8\x86\
+\xb7z\xed\xde\xbd\x9f\xcc\xeb\xec\xec\xdc\x0e\xe0L\x82\xfe\
+\x8f\x00\xd6-\x06K\x8d\x83Ec\x90{\x13\xec,\xba\
+\xf3y\xb7\xdb\xdd\xec\xf5zUj\x99\xcb\xe5r\x93\x81\
+\xc8\x1a\xf1x|\xbf\xa2(k\x01\xfcZ\x08\xd1]@\
+\xbc\x9c\x07\x94\x08\x09\x8d\x10!(\x84&\xc2\x14UU\
+\xe3\xe6\xba\x9a\xda\xa6\x97\xc9\xc8+8\x00\x97S\x00\xe7\
+\x9f=\x18c\x1c\x8cA\xa2\x1fx\xdc\x02\xf0\xf1w7\
+|\xd4\xee\xf7W=\x91\x88\xc6\xe6m\xdb\xb6m\x14\xc0\
+5\xd6x\x99\x04\x90\xf01d\xab*\xd5\xe4wTp\
+\x0b\xe5\xa1\xb3\x08\xb5\xd6s\x85\x09\xfb\x09\xa6p}\xd6\
+bNTfW\xb80$\x92\xd6\x97fi\xc67\x92\
+\x00J\x22\x918\xe3\xc0\x81\x03\xafQy\xe4t.\x13\
+I\x13\x92U!r\xe4\xf3\x13/\x0c\xab\x95H,\xb1\
+n\xdd\xba6\xba~=-O\xbfs\xe8\xd0!\xff\xa6\
+M\x9b\xc6\xe9\xda_\x01\xc8\x12\xda&|\xa76\xc1\x0b\
+\x93\x84\xdd\x84NB\x8a\x90\xb1&E/G\xbat\x08\
+\x1c\xff}2!\xe0\xf1x\xbeM\x1e\xb0\x9c\xc2`\xe5\
+\xa9\xa7\x9e\xba\x9e\x92\xa3\x9b\x5c\x93Q\x82\xe4\xe4\x9a:\
+\x09\xa2r\xce\x0d\x1a#(_\xc8\xe3\xe3\xe33\xfc~\
+\xff)4\xe6\x22j\x97Q\x82b\x94\xa1\x0d\xea\xff\x10\
+\xc0*\xc2Q\x8bP\xc2*\xc9\xb1\x1cQ'AnA\
+\xe0s\x1a\xab\xc0\xfd&\xaec\x8c=L\xa4j\xab\xaa\
+\xaa\x86\x89X\x8a\xda\x0c\x09 <y\xf3\xd1\xf5\x06B\
+\x8d9\xfb\xe49\x88D\x22\xc6\xd0\xd0P/y\xc2\x06\
+ki:`\x11M\x12\xd2\x96\x08\x9aM\xf6wc\x0c\
+\x95\xb3*\xc2\x97\x09\xa7\x13\xda,\xc2u\x047\xe7\x5c\
+\xb2^A#\x84\x83\x84n\xc2\xfb\x84~k\xa6\x8dr\
+\x7f\xd6\xfb\x03\x10\xa0\xf0\xf3\x1c\xff\x0a\xc0\xf9\x17V\x81\
+\xdf\x13\xfb\x1f\x84\xaf\xe2\x02\x22\xe6\xe9\x93\x00\x00\x00\x00\
+IEND\xaeB`\x82\
\x00\x00 \x1c\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -1380,39 +1169,250 @@ O\x9c?\xff\xdc\xe1\xfd\x07\xbez\xe1\xd4\xf8\xd3Q\xcf\
T\xcb\xa0\x80\xcd\x08\x0c\xd7\xaf\xf5\x8f\xa8\x9d\xdf\xb0_\
\xad7\xf5:\x7f\xfe\x1f_\xbc\xdd\xe6\x1aS\x0c\xc2\x00\
\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x0d\x06\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\
+\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\
+\x00\x00\x00\x09pHYs\x00\x00\x06\xec\x00\x00\x06\xec\
+\x01\x1eu85\x00\x00\x00\x19tEXtSof\
+tware\x00www.inksca\
+pe.org\x9b\xee<\x1a\x00\x00\x0c\x83ID\
+ATx\xda\xed\x9b[hU\xd9\x19\xc7\xd7IN\xa2\
+&&\x1a\xe351^\xc6T\xad\x97J\x95)8\x14\
+\xc4\x22\xb6\xccs\x9f*\xf4a^|\x10\xc4\xc2\x0c\x08\
+}(\xf8TJ\x1f\x15\xa4O\xf6Q\x0aR\x90N\x07\
+A\x94\xfa\xe0\xfd\xd6\xaa\x03^\xc6\xfb5Qc.F\
+\xcd\xc5~\xbf\x0d\xbfa\xcf1\x92\x8c\x1c\x83\xc1,X\
+\xec\xbd\xd7Y{\xad\xef\xfb\x7f\xf7\xb5\x93\xc2\xeb\xd7\xaf\
+\xd3\xc7\xdc*\xa2\x8f\x030\x0e\xc08\x00\xe3\x00\x8c\x03\
+0\x0e\xc0G\xda\x8a\x1f\x1aA\xc7\x8e\x1d\xdbS]]\
+\xfd\xb3i\xd3\xa6}\xe1\x98\xad\xad\xad\xed\x8f\x95\x95\x95\
+\xf3W\xaf^\xfd\x8br\xed\xf7A$B\xdb\xb6m[\
+P,\x16\xff\x10\xb7\x9f\xcd\x9e=\xbbe\xf2\xe4\xc9\x93\
+\x18\x876\xaf\xb6\x81\x81\x81\xc1K\x97.\xdd\x1a\x1c\x1c\
+\xbc\xd4\xd1\xd1\xf1\xb7\xbd{\xf7\x1e\x1a\xd3\x00l\xd9\xb2\
+\xe5\xb3\xfa\xfa\xfa\xc3!\xf5\xaa!\x09,\x14\xd2\xdb\xc6\
+\x03\x84t\xfd\xfa\xf5C\x15\x15\x15\xbf\xd9\xb3g\xcf\xab\
+\xb1d\x022\xff\xcb\x9a\x9a\x9aC!\x84\xe2\xcb\x97/\
+\x87cx\xc8\xb1\x96\x96\x96\xf5\xd7\xae]\xfb&\x1e\x7f\
+5\x96\x9c\xa0\x0c\xfc\xb3\xbf\xbf?\x13B\x00\x91\xaa\xaa\
+\xaaR\x98\x02=\xbb\xb7;n\x9f8qb\xc6<\xa0\
+\xd1\x9b\x9a\x9a\xd6o\xd8\xb0a\xdd\x98\xd2\x80\xcd\x9b7\
+\xff9\x98i\xec\xeb\xebK\xcf\x9e=K\x0f\x1e<@\
+\xa5G\x0a\x5c\x0a'\x99\x1a\x1b\x1b\x93\xad\xae\xae\xee\xaf\
+q\xf9t\xac\x00\x00\xb3_\x04\xf3H\x10\xef\x9e\x16-\
+Z\x94\xc2\xf9\xa5\xe7\xcf\x9f#e\xe7\xa4\xce\xce\xce\xd4\
+\xd0\xd0\x901\xfc\xf4\xe9\xd34i\xd2\xa4t\xfa\xf4\xe9\
+\xf4\xe4\xc9\x93D\x0b\xff\x91hS\xa6L\xf9\xf9\xc6\x8d\
+\x1b\x8b\x07\x0e\x1c\xe8\xff\xe0\x01\xd8\xb4iSu\xb4\xe9\
+q\x0b\xc3x\xf6\xb4j\xd5\xaa4a\xc2\x84t\xe3\xc6\
+\x8d4k\xd6\xact\xea\xd4\xa9\xd4\xda\xda\x9a\xe6\xcf\x9f\
+\x8f\x9d\xc3`\xbaz\xf5jZ\xb8pa:{\xf6l\
+\xf6Nww\xb7\xe6\x00h\x95/^\xbc\xd8\x14K\xfe\
+\xfd\x83\x88\x02\xdb\xb7oo|\xf4\xe8\xd1\xba \xbc?\
+\x88\x9d\x17\xd2[1s\xe6\xcc\xdf\xde\xb9s\xa7+\x88\
+\x9e\x1cc\xd3\x83\xe0\x84\x16\x00B\xc4\xf7w\xd1\xa2L\
+3\x02\xcc\x0c\x84[\xb7n\xed\x0b\x8d\xd9O8\x8d~\
+4\xd6\xfc\xf7\x89\x13'\x1e\xbc\x17\x00~\x1dm\xc5\x8a\
+\x15\x95\xc1Tm0\xd3z\xe6\xcc\x99\xdf\xafY\xb3\xa6\
+9\x18}\x10\xd2h\xbap\xe1B\xed\xb2e\xcb\xd2\xdd\
+\xbbw\xd3\xd4\xa9SSWWWz\xfc\xf8qFl\
+\x84\xad\xc4\xbe\xd8>\x12\x0c\xa0\x90\xa8\x9e~\xc4\x0dM\
+a\x1d\x1c(f\xc3\xfd\xe5\xcb\x97\xf1\x07\x98\x13\xfb\xbc\
+\x0e\xad\xba\x1cN\xf4\x1f===\xff\xda\xbf\x7f\xff\x89\
+\x9838b\x00v\xec\xd8\xb1\xf4\xe6\xcd\x9b_\xc5m\
+\xcb\xe2\xc5\x8bo\xd6\xd6\xd6\xd6\x04\xa1\x8bz{{[\
+\xcf\x9f?\xdf\xc8&\xa8$\x92\x84Q\x18\xc0c\xf3\x8c\
+m\xbfz\xf5\xca\xae'wi\xa4\xce8D\xd2\x99\xcf\
+\x18L\x0c\x1b\x0e\x01-hQ\x0bx?c\xd8\xe7\x90\
+z\x8a\xe8\x82\xf9\x00>~\x22\xdb;\xe8\xeeloo\
+\xff&\xf6\xfd2\xe6\xdc\x1e\x12\x80\xdd\xbbw\xa3\x8b\xbf\
+{\xf8\xf0\xe1_\x8e\x1f?>;\xd4\x88\x97\x0d7\x10\
+\x08\xe1y\x06\x91\x1e\x1b\xdb\xdfxFBt\x1bk\xe0\
+\xd0d\x9e=`\x8c{\xae\xf9n\xf3=\xaf\xac\xeb\x95\
+\x0e\x00y\xe7\x19\x1a\x09\x08\x00\xc5\xfa8O\xfcH\xe6\
+gB\x1b\xae\x1f=z\xf4\x937\x00\xd8\xb5kWM\
+\xd8\xd0\xd7\xa1\xaa\xebb\x92L\xb2\x10\x1d\xc6\xd8\x14\xbb\
+\x858\x09\x18\x16\x006\x869\x1b\xce\x0b-\x810\xc6\
+\xed#\x01\x80.\x93y\x10X\xcb\x88\xe0\xef\x87\x0f\x1f\
+f\x1f\x98V\x08\xdc\xd3\xfb\xc3$\xebo\xdf\xbe\xdd[\
+\xf4\x85\x9d;w\xb6D8\xfa6T\xb9\x96\xd0\x93'\
+\x02d\x91\x18\xe3a\xf3i\xee\xdc\xb9)^\x06\x086\
+\x960\x89\xcb\xe6\x00`\xe4\xea? \xd6\xe6\xfa\x00%\
+\x08j\x80\xfb9\xce\x9a9@\x87\xd4\x00;\xcc\xf1\x1e\
+\xfe\x06\x8d z`V\x08\x12 B\xab\x11$\xeb\x17\
+\xc3\x17\xfd\x09_\x9d\x01\xb0o\xdf\xbe\xc6\x90\xca\xb5(\
+2\xaad:\xcf<I\xca\xca\x95+\x13\xed\xc8\x91#\
+ \x9d\x81\x10~\x00\xe9\xe6\x01\xc8\x88\x8e\x82\x86\x8d\x01\
+\x8d5\xb2Mmj\x14\x8d\xb90\xc7\x1e\xd3\xa7O\xc7\
+y\xf1\x9b\x1a\x02\xe1C\x81$ \xa5 \xc88\xe0+\
+y\xd6\xc0\x0c\xe8\xd6\x0f\xfc\x86\xe3\xfd*\x9e\xf7d\x00\
+\xdc\xbbw\xef?\x11w\xabTS\x99\xd7\xfe\xc9\xb8\x02\
+1\x9cHF\xa4\xf3$\x16\xfb\x82\x10\xcd#\x22\x00\x8c\
+\xf2,\x00\xae\x9b\xadA\x13\x00\x12 \xd6F\xa3\xc8\x01\
+\xf2NP\xa65=\x9b)q\xe9o\xac\x8d\x83\xc4\xe1\
+B\x07\xeb\xd2\xb6n\xdd\x9a\xdd\x9f;w\x0egM\xa4\
+@\x0b+\x02\x88O\x8b!\xfd\xdaP\x8d\x9f\xe6\xbd\xac\
+\xc4\xa9\x8a\x84)PC\xa2\x80\x81\x84O\x9e<\xc94\
+\xc6\xd9T\x00@\x18\x86\x95\x8e%\xec\x0f4\x806o\
+\xde<\x9c*Z\x041\xec\x07\xb8\x864\x9e]\x03\x1a\
+t\xb6\xec\x87vq\xcd\xfb\x09\xe6\xb0\xaf\xeb\x93\x1f\x08\
+6\x91 \xfb}\xce\x9c9\x198W\xae\x5c1ZM\
++\xc6K\xad\x11\x8f\x0b\xbc\xa8csA\x91\x9e1c\
+F\xb6\xb0\xa9\xea\xc1\x83\x07\x9d\x87\x8a\xb1\xd1\x1bj\xc9\
+\x06\xda\xbfD\x0a\xc4\xf2\xe5\xcbIe1'\x18\x05T\
+\xcc\x0a\xa2\x19\xd7\x9e\x95$\xb4 A4\x0d:\x98\x03\
+\xb3\xa8<W#\x13\x82P \x8c\xabE\xf87\xae\xbc\
+W\xea\x5c\x0b\xc5\xd8\xa0\x10\x8d|\x9b\x8d\xf3^\x7fH\
+\xc6h\x10\xc6o<\x03\x00\x0bC0D\xd25\x0dC\
+\x9f\xef1\x8e/!\xa5%\x09\x82i\xf6\x05`\xd6@\
+\xc3\xb8\xc2\xb4\x0e\xcf}\xd5J\xf61\x17\xc0\xff\xb0&\
+k\x01\x12{\xd2\xa0\x01>\xbc\xd7\x17\xd9\xf3\x0d\x0d\xe0\
+e\x88\xd0\x86\xe9\x82\x90\x0f\x7f\x02a\x1e\xfe\x86]j\
+\x7f\x02\xa0Y\xd8\xc8\xed/^\xbc\x08hH\x1d\x89\x03\
+\x00>\x08i\xb2/\x84\xeb\x00\xe92\x8b\xf4U[\xe6\
+@\x07k\xe0\xf0X\x83\x88\xc3<\x0b&S\xebaS\
+\xec\xa2*\xf4\xaeM/\x9dk\x10\x85\xa4J\xd3V\x9c\
+\x1c\x0c\x10&\x91\x0cs\xd0\x06\x00\x83\x01\x1c\x14k\xe1\
+\xb1\xd1\x1e\xf3\x07\x01a]hEs\xb8G\x0b\x99\x03\
+\xe3\x80\x00\xf3\xbc\x8bC%\x04\x1a\xc5\xb8\xda\x87\x01\xa0\
+L\x0d\xc2`\xc0\x06QH\x18U\x85P}G\x14F\
+\x5ca\x1c\x8d\xc11\xf2\x1e\x0c\xb3\x06\x0cA\x1b\x0c\xd2\
+\x01M\xed\x831\xd6\xa5\x94\xc6yZ\x1a\xb3G6~\
+\xff\xfe}\x9c\xec\xb0\xf5\x05> \x95\xbbi2F\x15\
+\x98\x8ac+31M\x0bF\xa8\xe02\x82\x97,Y\
+B\xb1\xc4\x19_iF\x88\xb4a\x1e\xa6Y\x03\x86\x01\
+\x8e\xe8\x01\xd3\x5cq\xd0\xac\xc9\x95u\x19\xc3TL\xb3\
+\x05\xe2\xfdk\x80\x9b\xda\xb0G\xc2(\x04@\xac!\x92\
++\xb6\x8f9\x00\x00\xe6\x01\xe1\xe6\x0d\xe6!&/\xfa\
+\x03}\x92v\x0e8\x80\x82\xc6\xa8%\x8c\x13\xfaX\x1f\
+\xad\x1a\xd6\x07\x94\xb3\x11&!\x02P\xb5A\xd4\xbf\x94\
+yT\x17\x82\x91&~@M\xe4\x1d#\x8ay\x88\xe9\
+0s`\xd4\xb9\xccC[\xe4\x819\x00\x05 y\xc7\
+m\x1b\x15\x0d0\x03cc%D\x83Y\x01\x80\x09\xa4\
+M\xb9\x8a\xad2fJ\x8cd5\x15\xcf\x0ed\xce\x08\
+\x01\xc8\x98\x0b\x8e\xd5\x04\x88\xf7\xd4\x06C&\x9a\x85\x1f\
+a\x9d\xd1\xd2\x00\xe36\x1d\x86pJ\x84\xaf|\xa6\x08\
+\xf1\x84]=9\x0c\xe8\xd4\xb0a\xa3\x00\xa01nx\
+\x86y\xde\xb1\xe0\xa1\x13\x05\x04>\x9f\x00\xc1\xb4{Q\
+gp\xffV'XV\x0d\x90Q\x9a\xea\x8e\x9a\xe7U\
+\xd2:\x9d(\xc0\xb8g\x06\x8c1\x17\xa6\xb8\x1a\xfb\xcd\
+\xf4\x90<\xcf\xfa\x05\x8b\x1f\x9a\xd9\xa2i5`\xd0\x0c\
+\x9bh\x1c\xfb\x8e\xaa\x06h\xabJ\xd11\x98p\x1e\xfb\
+C8\x04\xeb\xe1q`\xf3f,IM\xd3>I\x03\
+\x13B\xdd\xbbo\xa3)0l\x8d`\xdeo\xea\xab\x84\
+\x87\xca\x1e\xc91\x00\xd5|\xe2\xfd\xfa\x80<!\x82\x9b\
+\xaf\xdaTU\x88\xb7\xb4\x05\x00AP\x0b\xe6\xcf\x5c\x9a\
+\xfak\x1f\xa7\xe6\xa6\x96T\xdd\x96\x85L\xed\x1dFt\
+\xb6\xac\xc7;\xaeo\x04\x92'\xfd\x0a\xa6\x88)\x00@\
+Y5`\xd8#+\x01\xb0\xa9\x01\xee+\xd1\x8c\xe55\
+\xa1P\xf72-X\xb44\x15\xeb\xfaR\xb1\xba9u\
+\x90*\xc7;f\x99\x9e1\xa2\x19\xac\xaf)[\xd0\xe5\
+\xa3\x10\xe1\xd0\xcc\xb3\xb4U\x94\xd3\x07\xc8\xa8\x04 \x95\
+R`\xf2g\x0e\xf9{\x9f=#|\xde\xdf\x1e\xcc>\
+J\xb5U\xf5\xa9>\xca\xd8\x89u\x93S\xfd\xec\xc8\x19\
+\x1a\xa68\xcf\xf7\x5c\xc3\xee\xfev5\x0d\xb0\xde\x04\xa0\
+\xdc> O@\xbe\xa2\xf3\xdeL\xd0\xef\x7f0\xeb\x5c\
+\xfb\xf71\xbf\xa77u\x84\xeaw\xb5\xb7\xa5\xee\xb6\xf6\
+\xd4\x1bj<!\xbe\x9c\x0f\xe64\x8c\xf5,\x99\x05T\
+\xe9k\x86f\x93\xac[\xda\x8a\x12Sn\x00\x8c\xdd:\
+-\x9a\xa1\xd13\x02U\x9fy:5\xed\x1bo^\xc5\
+\x07\x8f\xfa\xba\xd4\xf7\xbc'=\x8d2\xb9\xb3\xa7;\xf5\
+\x15\x99\xfb}\xc5\x0a\x00\xbc\x83\xa7W\xd2\xa5%8{\
+P\x83p\x1d\x1d\x00$@\x00,\xb9uJ\x82\xc2\xbd\
+\x85\x92\xcck\xe3\xcc\xc9\xca\xe3\xcaBzE2U]\
+\x91\xba\xba;#\xb7N\xa9\xab\xb3\xcb\x13k\x22\x06`\
+\x19\xf7e\xdc\xc6\x98\xc5\xd2\x90\xad\xa8W.W\xf3$\
+WB\xcc\xe3!B\x7f\x03\xb1f~H\x0e\xdb\xa4\x9b\
+\xfe\xe6m\x96\x10V7\xb3!M\xa8\x9c\x98\xbaz\xbb\
+\xd2\xa3+\x0f\x01\x0c-aM\xee\xcd\x1a=\x87T\xab\
+\xbc\x1f\xddT\x18\x06\xf2\x84\xc0\x84\xa0\xd0Lz\x90\x9a\
+\x80Q\x10\x91\x12#\xfd|\xf1\x83`<\x95\xceg\x82\
+\xda3\x8cs\x82\xb4`\xc1\x02\xcf'\x05\xd8\xc4\x89D\
+it\x8b!\x9d\x9a\xcd\xb3:\x80\x80`m\x14\xd5g\
+\x0cf\x01\x8a\xda=>[e\xc0\x18\xeb\xad\x05\xb4e\
+A\xf0\x9c2>\xdbq@+\xd0\xcc\xc9;B\xb5\x84\
+=GO\x03LG\x05\x82g\x08\xf1h\x8b1\x99\xf6\
+\xd0\xd3\x12\x1a\x10Pyk\x04\xabA\xdf\xf1\xec\x12\x9a\
+\xa9 9\x12\xf3\x5c\xd03J\x80\xf5\xd3\x1d\xe6\x05\xf3\
+\xa3u b\xfd\xaf\xf3\xd3\x0c`\xcajM\x02!\x1a\
+@\xf2\x1fG\x19\x83!\x8b\x17\xa4\xed<\xc3'_w\
+\x00\x94J\x12\x06\xd9\x03\xe65\x09\xfd\x0fB\xe0X\x8c\
+\xdfF\xd7\x07X\xcf\xeb\x84Tw+@\x982\x13\xb4\
+t6\x1c\xf2\x9bE\x8b\x15\x9d\x1fRaD\x8f\x1e_\
+\xaa\xd1\x0eO\x95\x00\x8f\xf73\xa0<)jnn6\
+\xed\x1dU\x1f \xc3\x1eE\xeb\x18\x01\x85|\xdc\x83N\
+\xf3z\x011\xf4\xe1 aT\xd3\x00\x00\xde\xa1\xf6g\
+\x1d\xd7\xd4!ZL\xb1'ct\xd6\xc0\xf9\x01\xfa\x88\
+\x00\xe0\x0bq\xb9\x01\xc0\xa1i\xbfflH\x0b\xf5\xd5\
+W\xc0\xb8\xde\xdeR\xd7DJ\xa6Js\x0bU\xde\x22\
+'\x9f\x0cyb\x84\xf41\xbb\x11)l1P\xaea\
+\xd1rT\x7f6\x88\xb3\x04.\x05\x06\x10 T\xe7\x05\
+\x13\xac\x81\xdd#q\xa5jm`FI\xb7\xb6'\xf9\
+\xf1T)\xffu\x8aw\xf9\xd6\xc0\xbc\xb5k\xd7r\xec\
+\xa6\x06\xe9$\xf9.!\xdd\x00\xde\x87\x064\xf0\xf0\x0e\
+\xcd\x8c\xeemZ\x80-*9\xbb\xc7\xde\x10\xe7\x87\x0d\
+\x08\xf1K\x8e\xa7\xba\x1e\x8cp\xc6\x0fS\x00\xc5\xf19\
+k\xc8\x98\xef m\x00c=+N*@\xd6\xf6=\
+@\xf5\xbc\x01\xba\xa0\x01 o\x15\xf9\xdb[\xff\x14\xed\
+\xc7\xb6|\xf5\xa5\xbd\xea\xfd\xd9\xc0\xdfJ\x9bN\x12\x8f\
+\x0eQH\x15\xa2\xf3i34\xd1y\x9fd\xc7F\xe6\
+gh3)\xe2}K]\x01\xf8\xee\xbb\xef\x86\x22Y\
+\x00\xd1\xd0\xb3\x11I\xfe[\x8c\x81\x9bdZl\xca\x22\
+\xf9\xd8\x9b\xaf\xeb\xed,nM\x0fa~\xa8\x90(\x8f\
+\xb8\xecn\xea\xb5\xa4y\x86\xef\x91\xd8pi\xb9f\x82\
+\xcf\xf0\x0b\xb6\xe7\x83#1W\xfd\xc7\x85\xf8\xfb\x86/\
+c\xa8\xad\x18R\xea\x08oy(\x08_\xef_X\x04\
+\x832\xe2U\xe2e\x12/?\x10D|\x1b\x8f\xcf\xf2\
+i\xae\xcd\xf8>\x82&8\x95\x01\xe8\xd4Xcz\xd0\
+P\x13\x9d\xbfW\x80>\xf6\x1b\x88\xf1\xbe\xb8\xbc\x88\xa9\
+\x8f\xc3A>\x09\xa0~l\x02\x83\xd0:\xc2\x9c.E\
+8\xfe:\xd6\xbb\xc0)~!\xfe\xf6~R,\xbc:\
+T\xf6\xf3@wY\xfc\xf0\x13\xfe\xcc\x8d\xf9y\xc9K\
+g4\xa0\xbe\x1d\xb6t$\x88\xf8_\xbc\xdb\x99\xdeO\
+s\xc3B\xb4\xd7e\xc8O\x90\x0e\xb4\x12\x1b\xefE\x7f\
+\x12\x7fq\xfa:\x0b\x81\xf1\xf7}\xd3\x02\xed\x96`f\
+n<\x83~}\x00A\xfd\xca\xefH\xb2\x10\x9d{\xfa\
+`\xdc\xb3P{\xcc\xb9\x16\xd7\xa7il4@\xec#\
+h\x04\xe3}\x0e\x9a\x03\x00B\x15\x99l\xf4\x9a\xe8\x18\
+\xa2\xfa\xeb\xb5@g!T\x07\x7fD\x07\xc54\x86\xdb\
+\xf8\xbf\xce\xa64\xfe_c\xe3\x00\x8c\x03\xf0\x11\xb7\xff\
+\x03\x7f\x19\x0a\xe4\xd7bc\xda\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
"
qt_resource_name = b"\
-\x00\x0d\
-\x0b4-\xe7\
-\x00a\
-\x00k\x00r\x00e\x00g\x00a\x00t\x00o\x00r\x00.\x00p\x00n\x00g\
-\x00\x0b\
-\x01\xad\xabG\
-\x00d\
-\x00i\x00g\x00i\x00k\x00a\x00m\x00.\x00p\x00n\x00g\
\x00\x1a\
\x08\xdd\xe1\xa7\
\x00a\
\x00c\x00c\x00e\x00s\x00s\x00o\x00r\x00i\x00e\x00s\x00-\x00d\x00i\x00c\x00t\x00i\
\x00o\x00n\x00a\x00r\x00y\x00.\x00p\x00n\x00g\
+\x00\x0d\
+\x0b4-\xe7\
+\x00a\
+\x00k\x00r\x00e\x00g\x00a\x00t\x00o\x00r\x00.\x00p\x00n\x00g\
\x00\x07\
\x0e\x95W\x87\
\x00k\
\x003\x00b\x00.\x00p\x00n\x00g\
+\x00\x0b\
+\x01\xad\xabG\
+\x00d\
+\x00i\x00g\x00i\x00k\x00a\x00m\x00.\x00p\x00n\x00g\
"
qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00 \x00\x00\x00\x00\x00\x01\x00\x00\x13\x0d\
-\x00\x00\x01e\xaf\x16\xd2\x99\
-\x00\x00\x00<\x00\x00\x00\x00\x00\x01\x00\x00 \x17\
-\x00\x00\x01e\xaf\x16\xd2\x99\
+\x00\x00\x00n\x00\x00\x00\x00\x00\x01\x00\x00HE\
+\x00\x00\x01z\xe7\xee'\x05\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01e\xaf\x16\xd2\x99\
-\x00\x00\x00v\x00\x00\x00\x00\x00\x01\x00\x005/\
-\x00\x00\x01e\xaf\x16\xd2\x99\
+\x00\x00\x01z\xe7\xee'\x01\
+\x00\x00\x00:\x00\x00\x00\x00\x00\x01\x00\x00\x15\x18\
+\x00\x00\x01z\xe7\xee'\x01\
+\x00\x00\x00Z\x00\x00\x00\x00\x00\x01\x00\x00(%\
+\x00\x00\x01z\xe7\xee'\x05\
"
def qInitResources():
diff --git a/examples/widgets/animation/easing/easing.py b/examples/widgets/animation/easing/easing.py
index ba7f2d363..ba5032458 100644
--- a/examples/widgets/animation/easing/easing.py
+++ b/examples/widgets/animation/easing/easing.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2010 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from enum import IntEnum
import sys
@@ -46,10 +8,10 @@ import sys
from PySide6.QtCore import (Property, QEasingCurve, QObject, QPropertyAnimation,
QPoint, QPointF, QRect, QRectF, QSize, Qt)
from PySide6.QtGui import (QBrush, QColor, QIcon, QLinearGradient, QPainter,
- QPainterPath, QPen, QPixmap)
+ QPainterPath, QPixmap)
from PySide6.QtWidgets import (QApplication, QGraphicsPixmapItem,
- QGraphicsItem, QGraphicsScene, QGraphicsView,
- QListWidget, QListWidgetItem, QWidget)
+ QGraphicsItem, QGraphicsScene,
+ QListWidgetItem, QWidget)
from ui_form import Ui_Form
@@ -148,13 +110,12 @@ class Window(QWidget):
self._anim = Animation(self._item, b'pos')
self._anim.setEasingCurve(QEasingCurve.OutBounce)
- self._ui.easingCurvePicker.setCurrentRow(int(QEasingCurve.OutBounce))
+ self._ui.easingCurvePicker.setCurrentRow(0)
self.start_animation()
def create_curve_icons(self):
pix = QPixmap(self._iconSize)
- painter = QPainter()
gradient = QLinearGradient(0, 0, 0, self._iconSize.height())
gradient.setColorAt(0.0, QColor(240, 240, 240))
@@ -162,63 +123,52 @@ class Window(QWidget):
brush = QBrush(gradient)
- # The original C++ code uses undocumented calls to get the names of the
- # different curve types. We do the Python equivalant (but without
- # cheating)
- curve_types = [(n, c) for n, c in QEasingCurve.__dict__.items()
- if (isinstance(c, QEasingCurve.Type)
- and c != QEasingCurve.Custom
- and c != QEasingCurve.NCurveTypes
- and c != QEasingCurve.TCBSpline)]
- curve_types.sort(key=lambda ct: ct[1])
-
- painter.begin(pix)
-
- for curve_name, curve_type in curve_types:
- painter.fillRect(QRect(QPoint(0, 0), self._iconSize), brush)
- curve = QEasingCurve(curve_type)
-
- painter.setPen(QColor(0, 0, 255, 64))
- x_axis = self._iconSize.height() / 1.5
- y_axis = self._iconSize.width() / 3.0
- painter.drawLine(0, x_axis, self._iconSize.width(), x_axis)
- painter.drawLine(y_axis, 0, y_axis, self._iconSize.height())
-
- curve_scale = self._iconSize.height() / 2.0
-
- painter.setPen(Qt.NoPen)
-
- # Start point.
- painter.setBrush(Qt.red)
- start = QPoint(y_axis,
- x_axis - curve_scale * curve.valueForProgress(0))
- painter.drawRect(start.x() - 1, start.y() - 1, 3, 3)
-
- # End point.
- painter.setBrush(Qt.blue)
- end = QPoint(y_axis + curve_scale,
- x_axis - curve_scale * curve.valueForProgress(1))
- painter.drawRect(end.x() - 1, end.y() - 1, 3, 3)
-
- curve_path = QPainterPath()
- curve_path.moveTo(QPointF(start))
- t = 0.0
- while t <= 1.0:
- to = QPointF(y_axis + curve_scale * t,
- x_axis - curve_scale * curve.valueForProgress(t))
- curve_path.lineTo(to)
- t += 1.0 / curve_scale
-
- painter.setRenderHint(QPainter.Antialiasing, True)
- painter.strokePath(curve_path, QColor(32, 32, 32))
- painter.setRenderHint(QPainter.Antialiasing, False)
-
- item = QListWidgetItem()
- item.setIcon(QIcon(pix))
- item.setText(curve_name)
- self._ui.easingCurvePicker.addItem(item)
-
- painter.end()
+ curve_types = [(f"QEasingCurve.{e.name}", e) for e in QEasingCurve.Type if e.value <= 40]
+
+ with QPainter(pix) as painter:
+
+ for curve_name, curve_type in curve_types:
+ painter.fillRect(QRect(QPoint(0, 0), self._iconSize), brush)
+ curve = QEasingCurve(curve_type)
+
+ painter.setPen(QColor(0, 0, 255, 64))
+ x_axis = self._iconSize.height() / 1.5
+ y_axis = self._iconSize.width() / 3.0
+ painter.drawLine(0, x_axis, self._iconSize.width(), x_axis)
+ painter.drawLine(y_axis, 0, y_axis, self._iconSize.height())
+
+ curve_scale = self._iconSize.height() / 2.0
+
+ painter.setPen(Qt.NoPen)
+
+ # Start point.
+ painter.setBrush(Qt.red)
+ start = QPoint(y_axis, x_axis - curve_scale * curve.valueForProgress(0))
+ painter.drawRect(start.x() - 1, start.y() - 1, 3, 3)
+
+ # End point.
+ painter.setBrush(Qt.blue)
+ end = QPoint(y_axis + curve_scale,
+ x_axis - curve_scale * curve.valueForProgress(1))
+ painter.drawRect(end.x() - 1, end.y() - 1, 3, 3)
+
+ curve_path = QPainterPath()
+ curve_path.moveTo(QPointF(start))
+ t = 0.0
+ while t <= 1.0:
+ to = QPointF(y_axis + curve_scale * t,
+ x_axis - curve_scale * curve.valueForProgress(t))
+ curve_path.lineTo(to)
+ t += 1.0 / curve_scale
+
+ painter.setRenderHint(QPainter.Antialiasing, True)
+ painter.strokePath(curve_path, QColor(32, 32, 32))
+ painter.setRenderHint(QPainter.Antialiasing, False)
+
+ item = QListWidgetItem()
+ item.setIcon(QIcon(pix))
+ item.setText(curve_name)
+ self._ui.easingCurvePicker.addItem(item)
def start_animation(self):
self._anim.setStartValue(QPointF(0, 0))
@@ -232,15 +182,15 @@ class Window(QWidget):
self._anim.setEasingCurve(curve_type)
self._anim.setCurrentTime(0)
- is_elastic = (curve_type >= QEasingCurve.InElastic
- and curve_type <= QEasingCurve.OutInElastic)
- is_bounce = (curve_type >= QEasingCurve.InBounce
- and curve_type <= QEasingCurve.OutInBounce)
+ is_elastic = (curve_type.value >= QEasingCurve.InElastic.value
+ and curve_type.value <= QEasingCurve.OutInElastic.value)
+ is_bounce = (curve_type.value >= QEasingCurve.InBounce.value
+ and curve_type.value <= QEasingCurve.OutInBounce.value)
self._ui.periodSpinBox.setEnabled(is_elastic)
self._ui.amplitudeSpinBox.setEnabled(is_elastic or is_bounce)
- self._ui.overshootSpinBox.setEnabled(curve_type >= QEasingCurve.InBack
- and curve_type <= QEasingCurve.OutInBack)
+ self._ui.overshootSpinBox.setEnabled(curve_type.value >= QEasingCurve.InBack.value
+ and curve_type.value <= QEasingCurve.OutInBack.value)
def path_changed(self, index):
self._anim.set_path_type(index)
diff --git a/examples/widgets/animation/easing/form.ui b/examples/widgets/animation/easing/form.ui
index 2397b1787..364aebeda 100644
--- a/examples/widgets/animation/easing/form.ui
+++ b/examples/widgets/animation/easing/form.ui
@@ -49,12 +49,27 @@
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="groupBox_2">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>16777215</height>
+ </size>
+ </property>
<property name="title">
<string>Path type</string>
</property>
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <item>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
<widget class="QRadioButton" name="lineRadio">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>40</height>
+ </size>
+ </property>
+ <property name="layoutDirection">
+ <enum>Qt::LeftToRight</enum>
+ </property>
<property name="text">
<string>Line</string>
</property>
@@ -62,17 +77,23 @@
<bool>true</bool>
</property>
<attribute name="buttonGroup">
- <string notr="true">buttonGroup</string>
+ <string>buttonGroup</string>
</attribute>
</widget>
</item>
- <item>
+ <item row="1" column="0">
<widget class="QRadioButton" name="circleRadio">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>40</height>
+ </size>
+ </property>
<property name="text">
<string>Circle</string>
</property>
<attribute name="buttonGroup">
- <string notr="true">buttonGroup</string>
+ <string>buttonGroup</string>
</attribute>
</widget>
</item>
@@ -96,6 +117,18 @@
</property>
<item row="0" column="0">
<widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>30</height>
+ </size>
+ </property>
<property name="text">
<string>Period</string>
</property>
@@ -106,6 +139,18 @@
<property name="enabled">
<bool>false</bool>
</property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>30</height>
+ </size>
+ </property>
<property name="minimum">
<double>-1.000000000000000</double>
</property>
@@ -117,18 +162,17 @@
</property>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Amplitude</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
+ <item row="2" column="1">
<widget class="QDoubleSpinBox" name="amplitudeSpinBox">
<property name="enabled">
<bool>false</bool>
</property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>30</height>
+ </size>
+ </property>
<property name="minimum">
<double>-1.000000000000000</double>
</property>
@@ -140,18 +184,30 @@
</property>
</widget>
</item>
- <item row="2" column="0">
+ <item row="4" column="0">
<widget class="QLabel" name="label_3">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>30</height>
+ </size>
+ </property>
<property name="text">
<string>Overshoot</string>
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="4" column="1">
<widget class="QDoubleSpinBox" name="overshootSpinBox">
<property name="enabled">
<bool>false</bool>
</property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>30</height>
+ </size>
+ </property>
<property name="minimum">
<double>-1.000000000000000</double>
</property>
@@ -163,6 +219,19 @@
</property>
</widget>
</item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Amplitude</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
@@ -196,10 +265,6 @@
<resources/>
<connections/>
<buttongroups>
- <buttongroup name="buttonGroup">
- <property name="exclusive">
- <bool>true</bool>
- </property>
- </buttongroup>
+ <buttongroup name="buttonGroup"/>
</buttongroups>
</ui>
diff --git a/examples/widgets/animation/easing/images/qt-logo.png b/examples/widgets/animation/easing/images/qt-logo.png
deleted file mode 100644
index 14ddf2a02..000000000
--- a/examples/widgets/animation/easing/images/qt-logo.png
+++ /dev/null
Binary files differ
diff --git a/examples/widgets/animation/easing/ui_form.py b/examples/widgets/animation/easing/ui_form.py
index d7e79ebd2..2925cbae7 100644
--- a/examples/widgets/animation/easing/ui_form.py
+++ b/examples/widgets/animation/easing/ui_form.py
@@ -3,15 +3,22 @@
################################################################################
## Form generated from reading UI file 'form.ui'
##
-## Created by: Qt User Interface Compiler version 6.2.0
+## Created by: Qt User Interface Compiler version 6.7.0
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
-from PySide6.QtCore import *
-from PySide6.QtGui import *
-from PySide6.QtWidgets import *
-
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QButtonGroup, QDoubleSpinBox, QFormLayout,
+ QGraphicsView, QGridLayout, QGroupBox, QLabel,
+ QListView, QListWidget, QListWidgetItem, QRadioButton,
+ QSizePolicy, QSpacerItem, QVBoxLayout, QWidget)
class Ui_Form(object):
def setupUi(self, Form):
@@ -22,7 +29,7 @@ class Ui_Form(object):
self.gridLayout.setObjectName(u"gridLayout")
self.easingCurvePicker = QListWidget(Form)
self.easingCurvePicker.setObjectName(u"easingCurvePicker")
- sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.easingCurvePicker.sizePolicy().hasHeightForWidth())
@@ -40,30 +47,33 @@ class Ui_Form(object):
self.verticalLayout.setObjectName(u"verticalLayout")
self.groupBox_2 = QGroupBox(Form)
self.groupBox_2.setObjectName(u"groupBox_2")
- self.verticalLayout_2 = QVBoxLayout(self.groupBox_2)
- self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.groupBox_2.setMaximumSize(QSize(16777215, 16777215))
+ self.gridLayout_2 = QGridLayout(self.groupBox_2)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
self.lineRadio = QRadioButton(self.groupBox_2)
self.buttonGroup = QButtonGroup(Form)
self.buttonGroup.setObjectName(u"buttonGroup")
- self.buttonGroup.setExclusive(True)
self.buttonGroup.addButton(self.lineRadio)
self.lineRadio.setObjectName(u"lineRadio")
+ self.lineRadio.setMaximumSize(QSize(16777215, 40))
+ self.lineRadio.setLayoutDirection(Qt.LeftToRight)
self.lineRadio.setChecked(True)
- self.verticalLayout_2.addWidget(self.lineRadio)
+ self.gridLayout_2.addWidget(self.lineRadio, 0, 0, 1, 1)
self.circleRadio = QRadioButton(self.groupBox_2)
self.buttonGroup.addButton(self.circleRadio)
self.circleRadio.setObjectName(u"circleRadio")
+ self.circleRadio.setMaximumSize(QSize(16777215, 40))
- self.verticalLayout_2.addWidget(self.circleRadio)
+ self.gridLayout_2.addWidget(self.circleRadio, 1, 0, 1, 1)
self.verticalLayout.addWidget(self.groupBox_2)
self.groupBox = QGroupBox(Form)
self.groupBox.setObjectName(u"groupBox")
- sizePolicy1 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Preferred)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth())
@@ -73,50 +83,66 @@ class Ui_Form(object):
self.formLayout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow)
self.label = QLabel(self.groupBox)
self.label.setObjectName(u"label")
+ sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
+ sizePolicy2.setHorizontalStretch(0)
+ sizePolicy2.setVerticalStretch(0)
+ sizePolicy2.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
+ self.label.setSizePolicy(sizePolicy2)
+ self.label.setMinimumSize(QSize(0, 30))
self.formLayout.setWidget(0, QFormLayout.LabelRole, self.label)
self.periodSpinBox = QDoubleSpinBox(self.groupBox)
self.periodSpinBox.setObjectName(u"periodSpinBox")
self.periodSpinBox.setEnabled(False)
+ sizePolicy3 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+ sizePolicy3.setHorizontalStretch(0)
+ sizePolicy3.setVerticalStretch(0)
+ sizePolicy3.setHeightForWidth(self.periodSpinBox.sizePolicy().hasHeightForWidth())
+ self.periodSpinBox.setSizePolicy(sizePolicy3)
+ self.periodSpinBox.setMinimumSize(QSize(0, 30))
self.periodSpinBox.setMinimum(-1.000000000000000)
self.periodSpinBox.setSingleStep(0.100000000000000)
self.periodSpinBox.setValue(-1.000000000000000)
self.formLayout.setWidget(0, QFormLayout.FieldRole, self.periodSpinBox)
- self.label_2 = QLabel(self.groupBox)
- self.label_2.setObjectName(u"label_2")
-
- self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label_2)
-
self.amplitudeSpinBox = QDoubleSpinBox(self.groupBox)
self.amplitudeSpinBox.setObjectName(u"amplitudeSpinBox")
self.amplitudeSpinBox.setEnabled(False)
+ self.amplitudeSpinBox.setMinimumSize(QSize(0, 30))
self.amplitudeSpinBox.setMinimum(-1.000000000000000)
self.amplitudeSpinBox.setSingleStep(0.100000000000000)
self.amplitudeSpinBox.setValue(-1.000000000000000)
- self.formLayout.setWidget(1, QFormLayout.FieldRole, self.amplitudeSpinBox)
+ self.formLayout.setWidget(2, QFormLayout.FieldRole, self.amplitudeSpinBox)
self.label_3 = QLabel(self.groupBox)
self.label_3.setObjectName(u"label_3")
+ self.label_3.setMinimumSize(QSize(0, 30))
- self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_3)
+ self.formLayout.setWidget(4, QFormLayout.LabelRole, self.label_3)
self.overshootSpinBox = QDoubleSpinBox(self.groupBox)
self.overshootSpinBox.setObjectName(u"overshootSpinBox")
self.overshootSpinBox.setEnabled(False)
+ self.overshootSpinBox.setMinimumSize(QSize(0, 30))
self.overshootSpinBox.setMinimum(-1.000000000000000)
self.overshootSpinBox.setSingleStep(0.100000000000000)
self.overshootSpinBox.setValue(-1.000000000000000)
- self.formLayout.setWidget(2, QFormLayout.FieldRole, self.overshootSpinBox)
+ self.formLayout.setWidget(4, QFormLayout.FieldRole, self.overshootSpinBox)
+
+ self.label_2 = QLabel(self.groupBox)
+ self.label_2.setObjectName(u"label_2")
+ self.label_2.setMinimumSize(QSize(0, 30))
+
+ self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_2)
self.verticalLayout.addWidget(self.groupBox)
- self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
+ self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout.addItem(self.verticalSpacer)
@@ -125,11 +151,11 @@ class Ui_Form(object):
self.graphicsView = QGraphicsView(Form)
self.graphicsView.setObjectName(u"graphicsView")
- sizePolicy2 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
- sizePolicy2.setHorizontalStretch(0)
- sizePolicy2.setVerticalStretch(0)
- sizePolicy2.setHeightForWidth(self.graphicsView.sizePolicy().hasHeightForWidth())
- self.graphicsView.setSizePolicy(sizePolicy2)
+ sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
+ sizePolicy4.setHorizontalStretch(0)
+ sizePolicy4.setVerticalStretch(0)
+ sizePolicy4.setHeightForWidth(self.graphicsView.sizePolicy().hasHeightForWidth())
+ self.graphicsView.setSizePolicy(sizePolicy4)
self.gridLayout.addWidget(self.graphicsView, 1, 1, 1, 1)
@@ -146,7 +172,7 @@ class Ui_Form(object):
self.circleRadio.setText(QCoreApplication.translate("Form", u"Circle", None))
self.groupBox.setTitle(QCoreApplication.translate("Form", u"Properties", None))
self.label.setText(QCoreApplication.translate("Form", u"Period", None))
- self.label_2.setText(QCoreApplication.translate("Form", u"Amplitude", None))
self.label_3.setText(QCoreApplication.translate("Form", u"Overshoot", None))
+ self.label_2.setText(QCoreApplication.translate("Form", u"Amplitude", None))
# retranslateUi
diff --git a/examples/widgets/animation/states/states.py b/examples/widgets/animation/states/states.py
index d134f29b6..509c3a7aa 100644
--- a/examples/widgets/animation/states/states.py
+++ b/examples/widgets/animation/states/states.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2010 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
@@ -50,11 +12,11 @@ from PySide6.QtWidgets import (QApplication, QGraphicsLinearLayout,
QGraphicsObject, QGraphicsProxyWidget,
QGraphicsWidget, QGraphicsScene, QGraphicsView,
QGroupBox, QPushButton, QRadioButton,
- QTextEdit, QVBoxLayout, QWidget)
+ QTextEdit, QVBoxLayout)
from PySide6.QtStateMachine import QState, QStateMachine
-import states_rc
+import states_rc # noqa: F401
class Pixmap(QGraphicsObject):
diff --git a/examples/widgets/animation/states/states.pyproject b/examples/widgets/animation/states/states.pyproject
index d94cf2e65..45ad44e97 100644
--- a/examples/widgets/animation/states/states.pyproject
+++ b/examples/widgets/animation/states/states.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["states.py", "states_rc.py"]
+ "files": ["states.py"]
}
diff --git a/examples/widgets/animation/states/states_rc.py b/examples/widgets/animation/states/states_rc.py
index 9f8241f60..8b87b5e5e 100644
--- a/examples/widgets/animation/states/states_rc.py
+++ b/examples/widgets/animation/states/states_rc.py
@@ -1,45 +1,6 @@
-# -*- coding: utf-8 -*-
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# Resource object code
#
diff --git a/examples/widgets/codeeditor/codeeditor.py b/examples/widgets/codeeditor/codeeditor.py
deleted file mode 100644
index f5f119000..000000000
--- a/examples/widgets/codeeditor/codeeditor.py
+++ /dev/null
@@ -1,141 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2019 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6.QtCore import Slot, Qt, QRect, QSize
-from PySide6.QtGui import QColor, QPainter, QTextFormat
-from PySide6.QtWidgets import QPlainTextEdit, QWidget, QTextEdit
-
-
-class LineNumberArea(QWidget):
- def __init__(self, editor):
- QWidget.__init__(self, editor)
- self._code_editor = editor
-
- def sizeHint(self):
- return QSize(self._code_editor.line_number_area_width(), 0)
-
- def paintEvent(self, event):
- self._code_editor.lineNumberAreaPaintEvent(event)
-
-
-class CodeEditor(QPlainTextEdit):
- def __init__(self):
- super().__init__()
- self.line_number_area = LineNumberArea(self)
-
- self.blockCountChanged[int].connect(self.update_line_number_area_width)
- self.updateRequest[QRect, int].connect(self.update_line_number_area)
- self.cursorPositionChanged.connect(self.highlight_current_line)
-
- self.update_line_number_area_width(0)
- self.highlight_current_line()
-
- def line_number_area_width(self):
- digits = 1
- max_num = max(1, self.blockCount())
- while max_num >= 10:
- max_num *= 0.1
- digits += 1
-
- space = 3 + self.fontMetrics().horizontalAdvance('9') * digits
- return space
-
- def resizeEvent(self, e):
- super().resizeEvent(e)
- cr = self.contentsRect()
- width = self.line_number_area_width()
- rect = QRect(cr.left(), cr.top(), width, cr.height())
- self.line_number_area.setGeometry(rect)
-
- def lineNumberAreaPaintEvent(self, event):
- painter = QPainter(self.line_number_area)
- painter.fillRect(event.rect(), Qt.lightGray)
- block = self.firstVisibleBlock()
- block_number = block.blockNumber()
- offset = self.contentOffset()
- top = self.blockBoundingGeometry(block).translated(offset).top()
- bottom = top + self.blockBoundingRect(block).height()
-
- while block.isValid() and top <= event.rect().bottom():
- if block.isVisible() and bottom >= event.rect().top():
- number = str(block_number + 1)
- painter.setPen(Qt.black)
- width = self.line_number_area.width()
- height = self.fontMetrics().height()
- painter.drawText(0, top, width, height, Qt.AlignRight, number)
-
- block = block.next()
- top = bottom
- bottom = top + self.blockBoundingRect(block).height()
- block_number += 1
-
- @Slot()
- def update_line_number_area_width(self, newBlockCount):
- self.setViewportMargins(self.line_number_area_width(), 0, 0, 0)
-
- @Slot()
- def update_line_number_area(self, rect, dy):
- if dy:
- self.line_number_area.scroll(0, dy)
- else:
- width = self.line_number_area.width()
- self.line_number_area.update(0, rect.y(), width, rect.height())
-
- if rect.contains(self.viewport().rect()):
- self.update_line_number_area_width(0)
-
- @Slot()
- def highlight_current_line(self):
- extra_selections = []
-
- if not self.isReadOnly():
- selection = QTextEdit.ExtraSelection()
-
- line_color = QColor(Qt.yellow).lighter(160)
- selection.format.setBackground(line_color)
-
- selection.format.setProperty(QTextFormat.FullWidthSelection, True)
-
- selection.cursor = self.textCursor()
- selection.cursor.clearSelection()
-
- extra_selections.append(selection)
-
- self.setExtraSelections(extra_selections)
diff --git a/examples/widgets/codeeditor/codeeditor.pyproject b/examples/widgets/codeeditor/codeeditor.pyproject
deleted file mode 100644
index f51cfc6d2..000000000
--- a/examples/widgets/codeeditor/codeeditor.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["codeeditor.py", "main.py"]
-}
diff --git a/examples/widgets/codeeditor/doc/codeeditor.png b/examples/widgets/codeeditor/doc/codeeditor.png
deleted file mode 100644
index e3def6b04..000000000
--- a/examples/widgets/codeeditor/doc/codeeditor.png
+++ /dev/null
Binary files differ
diff --git a/examples/widgets/codeeditor/doc/codeeditor.rst b/examples/widgets/codeeditor/doc/codeeditor.rst
deleted file mode 100644
index 16345eaa3..000000000
--- a/examples/widgets/codeeditor/doc/codeeditor.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-Code Editor Example
-===================
-
-The Code Editor example shows how to create a simple editor that has line
-numbers and that highlights the current line.
-
-.. image:: painter.png
- :width: 400
- :alt: Code Editor Screenshot
diff --git a/examples/widgets/codeeditor/main.py b/examples/widgets/codeeditor/main.py
deleted file mode 100644
index 0a89160bf..000000000
--- a/examples/widgets/codeeditor/main.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2019 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import sys
-from PySide6.QtWidgets import QApplication
-from codeeditor import CodeEditor
-
-"""PySide6 port of the widgets/codeeditor example from Qt5"""
-
-if __name__ == "__main__":
- app = QApplication([])
- editor = CodeEditor()
- editor.setWindowTitle("Code Editor Example")
- editor.show()
- sys.exit(app.exec())
diff --git a/examples/widgets/desktop/screenshot/doc/screenshot.png b/examples/widgets/desktop/screenshot/doc/screenshot.png
new file mode 100644
index 000000000..4e2b78083
--- /dev/null
+++ b/examples/widgets/desktop/screenshot/doc/screenshot.png
Binary files differ
diff --git a/examples/widgets/desktop/screenshot/doc/screenshot.rst b/examples/widgets/desktop/screenshot/doc/screenshot.rst
new file mode 100644
index 000000000..48f00b67b
--- /dev/null
+++ b/examples/widgets/desktop/screenshot/doc/screenshot.rst
@@ -0,0 +1,8 @@
+Screenshot Example
+==================
+
+The Screenshot example shows how to take a screenshot of the desktop.
+
+.. image:: screenshot.png
+ :width: 373
+ :alt: Screenshot program screenshot
diff --git a/examples/widgets/desktop/screenshot/screenshot.py b/examples/widgets/desktop/screenshot/screenshot.py
new file mode 100644
index 000000000..a5688da7a
--- /dev/null
+++ b/examples/widgets/desktop/screenshot/screenshot.py
@@ -0,0 +1,156 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the widgets/desktop/screenshot example from Qt v6.x"""
+
+import sys
+
+from PySide6.QtCore import (QDir, QPoint, QRect, QStandardPaths, Qt, QTimer,
+ Slot)
+from PySide6.QtGui import QGuiApplication, QImageWriter
+from PySide6.QtWidgets import (QApplication, QCheckBox, QDialog, QFileDialog,
+ QGridLayout, QGroupBox, QHBoxLayout, QLabel,
+ QMessageBox, QPushButton, QSizePolicy, QSpinBox,
+ QVBoxLayout, QWidget)
+
+
+class Screenshot(QWidget):
+ def __init__(self):
+ super().__init__()
+
+ self.screenshot_label = QLabel(self)
+
+ self.screenshot_label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
+ self.screenshot_label.setAlignment(Qt.AlignCenter)
+
+ screen_geometry: QRect = self.screen().geometry()
+ self.screenshot_label.setMinimumSize(
+ screen_geometry.width() / 8, screen_geometry.height() / 8
+ )
+
+ main_layout = QVBoxLayout(self)
+ main_layout.addWidget(self.screenshot_label)
+
+ options_group_box = QGroupBox("Options", self)
+ self.delay_spinbox = QSpinBox(options_group_box)
+ self.delay_spinbox.setSuffix(" s")
+ self.delay_spinbox.setMaximum(60)
+
+ self.delay_spinbox.valueChanged.connect(self.update_checkbox)
+
+ self.hide_this_window_checkbox = QCheckBox("Hide This Window", options_group_box)
+
+ options_group_box_layout = QGridLayout(options_group_box)
+ options_group_box_layout.addWidget(QLabel("Screenshot Delay:", self), 0, 0)
+ options_group_box_layout.addWidget(self.delay_spinbox, 0, 1)
+ options_group_box_layout.addWidget(self.hide_this_window_checkbox, 1, 0, 1, 2)
+
+ main_layout.addWidget(options_group_box)
+
+ buttons_layout = QHBoxLayout()
+ self.new_screenshot_button = QPushButton("New Screenshot", self)
+ self.new_screenshot_button.clicked.connect(self.new_screenshot)
+ buttons_layout.addWidget(self.new_screenshot_button)
+ save_screenshot_button = QPushButton("Save Screenshot", self)
+ save_screenshot_button.clicked.connect(self.save_screenshot)
+ buttons_layout.addWidget(save_screenshot_button)
+ quit_screenshot_button = QPushButton("Quit", self)
+ quit_screenshot_button.setShortcut(Qt.CTRL | Qt.Key_Q)
+ quit_screenshot_button.clicked.connect(self.close)
+ buttons_layout.addWidget(quit_screenshot_button)
+ buttons_layout.addStretch()
+ main_layout.addLayout(buttons_layout)
+
+ self.shoot_screen()
+ self.delay_spinbox.setValue(5)
+
+ self.setWindowTitle("Screenshot")
+ self.resize(300, 200)
+
+ def resizeEvent(self, event):
+ scaled_size = self.original_pixmap.size()
+ scaled_size.scale(self.screenshot_label.size(), Qt.KeepAspectRatio)
+ if scaled_size != self.screenshot_label.pixmap().size():
+ self.update_screenshot_label()
+
+ @Slot()
+ def new_screenshot(self):
+ if self.hide_this_window_checkbox.isChecked():
+ self.hide()
+ self.new_screenshot_button.setDisabled(True)
+
+ QTimer.singleShot(self.delay_spinbox.value() * 1000, self.shoot_screen)
+
+ @Slot()
+ def save_screenshot(self):
+ fmt = "png" # In order to avoid shadowing built-in format
+ initial_path = QStandardPaths.writableLocation(QStandardPaths.PicturesLocation)
+ if not initial_path:
+ initial_path = QDir.currentPath()
+ initial_path += f"/untitled.{fmt}"
+
+ fileDialog = QFileDialog(self, "Save As", initial_path)
+ fileDialog.setAcceptMode(QFileDialog.AcceptSave)
+ fileDialog.setFileMode(QFileDialog.AnyFile)
+ fileDialog.setDirectory(initial_path)
+ mime_types = []
+
+ for bf in QImageWriter.supportedMimeTypes():
+ mime_types.append(bf.data().decode("utf8"))
+ fileDialog.setMimeTypeFilters(mime_types)
+ fileDialog.selectMimeTypeFilter("image/" + fmt)
+ fileDialog.setDefaultSuffix(fmt)
+ if fileDialog.exec() != QDialog.Accepted:
+ return
+
+ file_name = fileDialog.selectedFiles()[0]
+ if not self.original_pixmap.save(file_name):
+ path = QDir.toNativeSeparators(file_name)
+ QMessageBox.warning(
+ self,
+ "Save Error",
+ f"The image could not be saved to {path}.",
+ )
+
+ def shoot_screen(self):
+ screen = QGuiApplication.primaryScreen()
+ window = self.windowHandle()
+ if window:
+ screen = window.screen()
+ if not screen:
+ return
+
+ if self.delay_spinbox.value() != 0:
+ QApplication.beep()
+
+ self.original_pixmap = screen.grabWindow(0)
+ self.update_screenshot_label()
+
+ self.new_screenshot_button.setDisabled(False)
+ if self.hide_this_window_checkbox.isChecked():
+ self.show()
+
+ @Slot()
+ def update_checkbox(self):
+ if self.delay_spinbox.value() == 0:
+ self.hide_this_window_checkbox.setDisabled(True)
+ self.hide_this_window_checkbox.setChecked(False)
+ else:
+ self.hide_this_window_checkbox.setDisabled(False)
+
+ def update_screenshot_label(self):
+ self.screenshot_label.setPixmap(
+ self.original_pixmap.scaled(
+ self.screenshot_label.size(),
+ Qt.KeepAspectRatio,
+ Qt.SmoothTransformation,
+ )
+ )
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ screenshot = Screenshot()
+ screenshot.move(screenshot.screen().availableGeometry().topLeft() + QPoint(20, 20))
+ screenshot.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/desktop/screenshot/screenshot.pyproject b/examples/widgets/desktop/screenshot/screenshot.pyproject
new file mode 100644
index 000000000..d4bdb4d76
--- /dev/null
+++ b/examples/widgets/desktop/screenshot/screenshot.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["screenshot.py"]
+}
diff --git a/examples/widgets/systray/images/bad.png b/examples/widgets/desktop/systray/images/bad.png
index c8701a241..c8701a241 100644
--- a/examples/widgets/systray/images/bad.png
+++ b/examples/widgets/desktop/systray/images/bad.png
Binary files differ
diff --git a/examples/widgets/systray/images/heart.png b/examples/widgets/desktop/systray/images/heart.png
index cee1302b7..cee1302b7 100644
--- a/examples/widgets/systray/images/heart.png
+++ b/examples/widgets/desktop/systray/images/heart.png
Binary files differ
diff --git a/examples/widgets/systray/images/trash.png b/examples/widgets/desktop/systray/images/trash.png
index 4c24db926..4c24db926 100644
--- a/examples/widgets/systray/images/trash.png
+++ b/examples/widgets/desktop/systray/images/trash.png
Binary files differ
diff --git a/examples/widgets/desktop/systray/main.py b/examples/widgets/desktop/systray/main.py
new file mode 100644
index 000000000..c52c51387
--- /dev/null
+++ b/examples/widgets/desktop/systray/main.py
@@ -0,0 +1,21 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtWidgets import QApplication, QMessageBox, QSystemTrayIcon
+
+from window import Window
+
+if __name__ == "__main__":
+ app = QApplication()
+
+ if not QSystemTrayIcon.isSystemTrayAvailable():
+ QMessageBox.critical(None, "Systray", "I couldn't detect any system tray on this system.")
+ sys.exit(1)
+
+ QApplication.setQuitOnLastWindowClosed(False)
+
+ window = Window()
+ window.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/desktop/systray/rc_systray.py b/examples/widgets/desktop/systray/rc_systray.py
new file mode 100644
index 000000000..9a6dec317
--- /dev/null
+++ b/examples/widgets/desktop/systray/rc_systray.py
@@ -0,0 +1,2581 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.2.2
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00d\xb4\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x02\xe8\x00\x00\x02\xe8\x08\x06\x00\x00\x00*Z\x00\x90\
+\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x09pHYs\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01B(\
+\x9bx\x00\x00\x00\x07tIME\x07\xdc\x03\x09\x08\x1e\
+4hf\xd9|\x00\x00\x00\x06bKGD\x00\xff\x00\
+\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00d4IDATx\
+\xda\xec\x9d\x07\xb8U\xc5\xb9\xbf\xf7i\x1c\x0e\xe7\xd0\xcb\
+\x01Tz\x95\xa6 \xbd\x8b\x14E@\x10Q\x14\xa4\x05\
+\x14\x14\x14AAD\xaaT\xe9\xe7h\xd4\xab&\xc6$\
+\xb6\xc4DM\xa2&\x1a{\x895\xb1w\x05\xd9k\xa7\
+\xdc\x14M\x8c\xc66\xf7\x1b\xf6J\x82W\x84\xb5\xf6\xd9\
+k\xd6\xac\xb5\xdf\xf7y\xde\xe7\xb9\xf7\x7f\xff\xf7F\xcf\
+\x9e\xf9\xe6\xb7g\xcf|\x93H\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00@.Q(\xd6um\x22\xb6\x12;\x8a=\xc4\
+>\xe2q\xe2(\xf1x\xf7\xbf\xd6\xf6u\xff\xe7\xda\xa3\
+\xdc\xff\x9dz\xee\xff-\x00\x80\xaaRM\xac\xef\xd6\x96\
+\xee\xfb\xd5\x9b~\xfb\xd5\xa1\xd1\xe2\x08\xf7\xbf\xee\xed\xfe\
+\xcf\xdb\xbb\xff;\x8d\xf7\xabk\xf9\xfc9\x01\x00\xc0\x06\
+j\x8a\xdd\xc4\x93\xc4\x05\xe2*\xb1B\xfc\x81x\x8f\xf8\
+\x94\xf8\x8e\xf8\x81\xa8\xb2\xec?\xc5\xdf\x8bo\x8a\x0f\x8a\
+7\x89;\xc5\xe5\xe2,q\x8c\xbb\x90\xd6\xe3c\x02\xc8\
+)\x1a\x89\xbd\xc4\xb1\xe2\x1cq\x85[\x97n\x13\x1f\x16\
+\xdf\x12\xff(~\x1c@]\xfa\x8b[\x93~#\xfeB\
+\xfc\xbe[\x97V\x8a\xe7\xbau\xa9\x93X\x83\x8f\x09\x00\
+\x00\xaaB\xb3Dz\xf7h\xb6\xb8^\xbc\xd9]|\xfe\
+\x14\xc0\xe2\x16\x94\x1f\x8a/\x88w\x8a\xbb\xc4\x0b\xc4\x13\
+\xc4\xe6|\xbc\x00\x91C\xefT\xb7\x16\xc7\x89\x17\x8aW\
+\x88?\x17_\x16?\x8aP]J\x89\x8f\xbb\x1b\x1ak\
+\xc5\x99\xe2\xb1\x89\xf4/\x8c\x00\x00\x00\xfb\xa8\x9eH\xef\
+8\xebEB\xef\xf8<\x90H\xef\x06\xa9\x98\xfb\x81\xbb\
+H^\x93H\xff\x0a\xa0\x7f\xc6\xae\xc3p\x00\xb0\x82\x86\
+\x89\xf4\xd1\xb7E\xe2\xf5\x89\xf4\xafr\xff\xc8\x81\xba\xa4\
+w\xf8\x7f%^.N\x15\xbb\x8aE\x0c\x07\x00\x80x\
+\x93\x97H\xff\xcc\xaaw\xc5\xbf#\xbe$~\x96\x03\x8b\
+\x9eW\xbf\x14_\x17otC\xbb>\x0b_\xca\xb0\x01\
+\x08\x94Z\xe2 q\xb1x\x8b\xf8.\xb5\xe8+\xfeK\
+|\xde\xddL\x98&\xb6e\xc8\x00\x00D\x1b}\x09J\
+\x9f}\xdc(>\x9a#;PA\xf8\xb6x\xb5x\xa6\
+x\x04\xc3\x0a\xa0J\xb4H\xa4\xcf\x88\x7f\xcf\x9d[\xd4\
+\x18\xff\xfe\xdd\xad\xe9\x1b\xdd\x1a\xcf\xaf\x7f\x00\x00\x16\xa3\
+;\x13\xe8\xb3\x8c\x9b\xc5\xa7\x13\xec\x8e\x07\xe1\xe7\xe2\xb3\
+\x89\xf4O\xd0\xfaXLu\x86\x1d\xc0A)sC\xa4\
+\xbe\xb0\xa9\x7f\xb5\xfb\x92:\x92u?\x11\x1fK\xa4\xcf\
+\xb4\xeb_\xfe\x0a\x18v\x00\x00\xe1\xa2\xcf\x8f/I\xa4\
+\xcf-\x06\xd1\x9d\x00\x0f\x1d\xd8\x9fqw\xb2t`\xa7\
+\x15$\xb0Q\x90\x9e\x0b\x1b\xdd\xb9\xf1\x05u\xc2\xb8\x1f\
+\xb9k\xc2y\x09.\xc5\x03\x00\x18A\x9f#\xd7\xad\xc4\
+6\x89/\xb2\x10Y\xe7\x1eq\x878 A\x7fd\xc8\
+\x1d\x0a\xddP~U\x22\xdd\x06\x95Z`\x8f_\xb8_\
+\x94V\x8b]\x18\xaa\x00\x00\xd9\xe5\x98D\xfa\xe8\x0a\x17\
+\xa8\xa2\xa3#V\x8aC\x13\xfc\xe4\x0c\xf1C\xef\x94\xeb\
+\x07\xc6\xae\x15\xff\x97\xf9\x1e\x19_u\xc3z'\x860\
+\x00@f\xe8\x17\xee\xf4\xcf\xc4\x5c\xa4\x8aG\xfb4\x1d\
+\xd6\xf5\xf9\xd0<\x866D\x14\xfd\xab\xd0\xb0D\xba\xf5\
+\xe1\xdf\x98\xd7\x91W\xf7\x90\xd7\x8f)udh\x03\x00\
+\x1c\x9c\x96\x89\xf4E\x9f7Y<b\xab~\xd1pM\
+\x22\xfdl8@\x148J\xdc\x22\xeee\xfe\xc6V}\
+d\xf2\xe2\x04\x0f&\x01\x00\xfc\x07\xfd\x10\xc5\xc9\xe2=\
+\x09.T\xe5\x9a\x0f\x89\x93\xc5b\xa6\x01X\x86~\x03\
+@?`\xf64\xf34\xa7\xd4\xdd\xbfnO\xa4\x8f/\
+q\x8f\x06\x00r\x12\xfdl\xf5\x86D\xfa\xe9g\x16\x86\
+\xdc\xf6O\x89t\xeb\xc6vL\x0b\x08\x99n\xe2\x15\x09\
+\x8e\xb0`\x22\xf1\x9ex\xa9x\x18\xd3\x02\x00\xe2\x8e>\
+\x7f<R\xfce\x82\xddr<\xf0k\xa6\xf7\x8b'\xb2\
+{\x05\x06\xd1]XN\x13\x9fd\x0eb\xe2\xc0\xbb\xea\
+?\x15\x072U\x00 n\xe8\x07m\xbe\x95H?\xd4\
+A\xc1G/\xea{\x08\x0b\xc4\x9aL\x1f\x08\x88\xda\xe2\
+bq7\xf3\x0d=\xaa\x8f<\xe9cyEL\x1f\x00\
+\x882\x8d\xc4U\xe2\x1f(\xec\x98\xa1\x1f$\xd2\xbd\xd5\
+[3\x9d K\xe8\xcb\xe8\xdb\xc5\x0f\x99_\x98\xa1\xfa\
+\xcd\x87\x0b\xc5:L'\x00\x88\x12\xba\xc7\xec\xff$x\
+\xdd\x13\xb3\xfb3\xf3\xf7\x12\x9cS\x87\xcc\xd1\xddX\xf4\
+\x05\xc0/\x99O\x98%\xf5\x97\xbc\x9db+\xa6\x17\x00\
+\xd8\x1e\xccoc\x01\xc4\x00\xfd\x5c\xfc~\x82\xde\xc5\xe0\
+\x9d\x1e\xe2\x1d\xd4%\x0cx\x03A\xf7\xc7o\xc1t\x03\
+\x00\x9bh\xeb\x86&.~\xa2\xc9'\xbco\x22\xa8\xc3\
+A\xe8%\xfe\x8c\xb9\x82\x06\xfd\x97\xf8m\xf1p\xa6\x1f\
+\x00\x84\x89\xde-\xb8\xce\xdd=\xa08cX;\xea\xdf\
+\x11\x9b1\x1d\xc1E\x7fi\xe3(\x0b\x86\xa9>\xde\xa9\
+\xef\xce\x943\x1d\x01\xc0$\xba\xe8\x5c\xe1\xee\x16P\x8c\
+\xd1\x06?I\xa4/\xfe5dz\xe6,\xfaK\xda\xf5\
+\xee\x976\xe6\x04\xda\xe0?\xc4\x8d\x89t\xc7 \x00\x80\
+\xc0\xa8\x96H\xb7%\xe3\x11\x0f\xb4\xf9\xd2\xd6j\xb1\x8c\
+\xe9\x9a3\xd4w\xbf\x9c}\xc2\xf8GK\xfd\xbd8[\
+,`\xba\x02@\xb6\x19\x9fH\xf7\xa6\xa6\xd8b\x14\xdc\
++NI\xa4\x1f\xc7\x82x\xa2\x1f\x18:G\xfc3\xe3\
+\x1d#\xe2\xef\xc4c\x99\xba\x00\x90\x0dtk\xb2_S\
+X1\xa2>&\x1e\xc34\x8e\x1dC\xc5\x17\x18\xdf\x18\
+Q\xf5\xcb\xa4m\x99\xc6\x00\x90\x09\xfa\x9c\xb9\xeeeN\
+g\x16\x8cC\xc7\x17}\x99\xb91\xd3:\xf2\xe8~\xd3\
+\xb71\xa61\x06\xea;\x5c[\x13<v\x04\x00\x1e\xd1\
+G\x02\xe6\x88\x7f\xa5\x80\x1e\xda\xeab;\xb1\xaf8F\
+\x9c.^ ^&^)\xde*\xde\xe3\xfa+\xf1\x09\
+\xd7\xe7\xc4W\x0f\xe2\xf3\xe2\xc3\xe2\xcf\xc5[\xc4k\xc4\
+m\xe2\x12q\x968\xce\xfd\xcf\xd4\xff\xd9\xf5\xf8\x1c\xbc\
+\xfa\x17qV\x82c/QD\x1fg\xd1/7~\xc4\
+8>\xb82\xb8U\x03\xb1\xbd8@\x9c \xce\x16\x97\
+\x89\xdb\xc5k\xdd\x9ar\xb7\xf8\xa8[k\x0eV\x8b\x9e\
+\xd9\xafn\xdd\xbb_=\xbbI\xbcB\x5c+.\x14\xcf\
+\x14O\x10\xfb\x88\xad\xc5b>\x0b\xaf:\xe2D\xa68\
+\x00\x1c\x0c\xa9\xe9\x89\x87(\x98_\xb5\x898D\x9c!\
+\xaep\xc3\xf2/\xc4\x17D\xc7\x12\xdf\x16\xef\x17\xaf\x17\
+W\xba_\x14\x06\x89\x87\xf1\xf9\x1d\xc8\x07\x12\xfc\xbc\x1c\
+%\xba\x8b\xcf1n\xffk\xbe\xd8L<V\x9c)\xae\
+\x11o\x10\xa5x\xabw-\xaaK:\xfc\xdf%~[\
+\xbcD\x9c&\x0e\x14\x1b\xf2\x19\x1eH\xfd\x98\x16\xfd\xd3\
+\x01\xe0+\x14\x89\xcb\x13\xe9\xde\xad9[ k\x89=\
+\xc5\xa9\xe2z\xf1vw\x07\xc9\x89\xb8o\xb8_(v\
+\x8as\xc5\xfe\xee\xbfk\x8e/\x86z\xac/\x13\x8b\x99\
+\xfe\xd6R*^\x9e\xc8\xf1w\x16\xf4/d\x83\xc5s\
+\xdd_\xe5~\xe9~!\x8fz]z\xd1\xfd\x85Q\x7f\
+\xb98]<Z,\xa5.}\x90H_|\xceg\xfa\
+\x03@\x1f\xf1\xc5\x5c,\x86\xfag\xd8\xc9\xe2\x0e\xf1\xf1\
+\x18,x~L\xba\xff\xceW\x89g\x89\xdd\xc4\x82\xdc\
+\x5c\x10_Np\x89\xd4F$\x93&\xde\xc9\xb5\xf1X\
+\xe4n\x12\xcc\x17\xaf\x13\x9f\xca\xc1\xba\xa4\x7f\x05\x90o\
+ej\xa2xDn_n\xefD\x19\x00\xc8MJ\xc4\
+\x9d\x89\x1c\xb9\x04\xaa\xc3\xe7Q\xeeY\xcck-;\x9e\
+b\x8b\xaf\x8b\xdf\x13\xe7\x89\xdd\xc5\xc2\xdcY\x0c\xf5\x0e\
+\xed*\xf7\x97$\x08\xbf.m\xcb\x95\xbaTM\xec\xed\
+\x9e\xe1\xbe%&;\xe3\xd9\xf6Y\xf7\x97\x83\xe9bG\
+\xf7\x8c}\x8e\xd4\xa5\x7fQ\x97\x00r\x8f\xfe\xe2\xbbq\
+/p\x87\xbb\x17*Y\xf82\xf3\x1d\xf7ow\x8e\xd8\
+57\x16\xc6\x97\xc4\x1e\x94\x87\xd0\x18\x12\xf7\xba\x94\xef\
+\xee\x90_\xe2^\xb4|\x9f:\xe3\xdb7\xdd\xf3\xf6S\
+\xdc\xfbA\x89\xdc\xa8K])\x0f\x00\xf1F\x9fk\xd3\
+/\x81\xc6\xf2\xc5=\xbd\xf8\x1d\xe3v:\xb9\xd7\xfd\xb9\
+\x94\x05-{\xea.\x0e\x17\xbb\xbfD\xc48\xac\xeb\xb3\
+\xe9\x92\x9fx\xf1\xcf \xfao\xbd2\x11\xd3\xb3\xe6\x05\
+ng\x93\x95n\xf7&jI\xf6\xd4_p\xee\x14\xcf\
+\x17\xbb\xc4;\xa4\xff=\x91\xee@\x05\x001\xe40\xf1\
+Wq,^G\xb9\x8b\xdf\xb3,XF\x7fv^\xe7\
+\xb6q\x8b\xe9Q\x98\x07\x13tT0\xc1\x11\xe2\xc3q\
+\x1b?\xfa\xe8\xcapq\xab{\x19\x92\x9aa\xc6\xc7\xdd\
+\x0d\x9a\x0e\xf1\x0d\xea\xfa\x0d\x80z\x94\x0d\x80\xf80A\
+\xfc\xdf8\x15\xaa\x0en!~\x9cE)t\x7f\xe7\xf6\
+B>:~\x8b\xa1\x9e3\xe3(\x1f\x811^\xfcs\
+\x9c~\xc1\xeb\xeb^p|\x95\xba\x10\xba\xbf\x16\xcf\x13\
+[\xc4\xaf.\xbd\x9fH\xbf\xa4\x0b\x00\x11\xa6\x9axe\
+\x5c\x0aSC\xf7<\xf4\x83,>\xd6\xfa\x98\xb8(^\
+gC\xbf\x14+\x13\x5c\xd4\xca&\xa5q\xaaK-\xdd\
+3\xe5O3\xff\xad\xf5\x1e\xb7_|\xedx\xbd\x8e\xbc\
+:A;F\x80H\xa2\x7f\x9e\x7f\x22\x0e\xbbR\x83\xdc\
+\xc7\x81v\xb3\xd0D\xeal\xa8\xbe\xc8u\x5c|\xda7\
+\xea\xc7\x8d\xca)+U\xa6\x83\xf8j\xd4\xc7\x83n\x87\
+8\xd6\xed\xe3\xcd]\x97h]|\xd7\xefA\xf4\x8aO\
+P\xff\x99X\x97\xb2\x02\x10\x1d\x86\x88\x7f\x88r\xe1)\
+w{\x01?\xc1\xa2\x12y\xf5\xce\xe2\x05\xf1\xd8U\xdf\
++\xf6\xa3\xbcd\x8c>\xd2\xf2a\xd4w\xcb\x97\xd3\xa6\
+5\x16>\xe8\xb6\xdd\xad\x1b\xfd\xba\xf4\x96\xd8\x8d\xf2\x02\
+`7\xfa\xe7\xae\x8d\x89\xf4\xcf\xf2\x91,6\xc7\xb8;\
+\xaf{\xa3\xfc\xd8Fa\xa1J\xd5\xae\xadRM\x9b*\
+\xa7m[\xe5t\xeb\xa6\x92\xfd\xfa)g\xc4\x08\xe5\x8c\
+\x1b\x97v\xd2$\xe5L\x9e\xac\x9c)S\x943k\xd6\
+\xd7L\x9dqF\xfa\x7f\xae=\xe9$\xe5\x8c\x1c\xa9\x9c\
+\xc1\x83\x95\xd3\xab\x97r\xbavM\xff\xdfm\xdcX9\
+\xc5\xc5\x91\xf9\xbb\xecu?\xdb\x81\xd1^\x0c?O\xa4\
+{\x13\xf3\xd3\xb2w\xf4\xf1\xa0\xab\xa3\xfa\x99\xe7\xb9\x17\
+>\x7fJ\xa8\x8d\xa5\xbb\xdd]\xf5\x88_,\xd5\x9d\xd9\
+\xce\xa3\xd4\x00\xd8IM\xf1\xd6\xa8\x16\x18}\x8c\xe5\xe6\
+\x08\x05p\xa7\xbc\x5c9G\x1e\xa9\x9cA\x83\x943~\
+\xbcrf\xcfV\xce\xd2\xa5\xca\xd9\xb2E9W\x5ca\
+\xd4\xe4\xd6\xad\xcaY\xbe\x5c9\xf3\xe7+g\xeaT\xe5\
+\x8c\x1a\xa5\x9c\x1e=\x94\xd3\xac\x99rJJ\xac\xfc\x1b\
+\xea\xb0s\xbc{\x84)\xa2c\xf6\x87b\x0d\xca\xce!\
+\xd1\x1d'\xee\x8e\xe2g\xac\x8f\xb1\x9c,\xfe\x92\x10\x9b\
+\x13\xea\x0d\x84\xeb\xdcM\xa2\x08\x07\xf5+\x12\xe9\xbbg\
+\x00`\x09m\xc4W\xa2VLt{>\xfd\x9c\xf3}\
+6\x17\xee:u\x94\xd3\xa9\xd3\xbe\xdd\xef\xd4\xcc\x99\xfb\
+\x82p\xaa\xa2\xc2x\x08\xaf\x92\x1b7*\xe7\xfc\xf3\xd3\
+\xbb\xf6\xfd\xfb+\xa7E\x0b\x95\xaaV\xcd\x8a\xbf\xef\xc3\
+n\x08\x8a\xe89\xf5g\x13\xb4b<\x18\xfa\xbc\xf9\x9b\
+Q\xfb\x5c\xab\xb9\xafVr\xe93w\xd5\xbd\xd5GE\
+\xf7\xbd\x87\xc7\xc5\xc6\x94\x1f\x80\xf0\xd1\xaf\x82\xfe)J\
+\x05D\xef\x9a\x8e\x17\x1f\xb5\xad0\x97\x95)\xa7sg\
+\xe5\x8c\x19\xa3\x9c\x05\x0b\x94\xb3ys\xb4\x82\xb8\x1f+\
++\x95\xb3b\xc5\xbe\x1d\xf7}\xc7o\xf4q\x99\xbc\xbc\
+P\xbb\xbfL\x8afOu\xf9\xc7O\xf4\xa2\x0c}\x8d\
+\x91\xe2_\xa3\xf4Y\x16\xbb\x9d>xL\x08\xff\xed/\
+\xdd\xe3M\x11\x0c\xe9\xef\x89\x9d)C\x00\xe1qZ\x22\
+\xfd\xf2ad\xcer\x9e\xe0\xf6\xa7\xb5\xa1\xf8\xa6\x9a4\
+Q\xa9\x81\x03URBjj\xe5\xca\xf8\x86q\xaf\xea\
+/$g\x9f\xad\x9ca\xc3\x94s\xc4\x11\xa1\x04v\xdd\
+\xd7\xfe\xa4\xe8\x1d}\xd1s\xf0t\xca\xd1\x7f\xd0ga\
+?\x8f\xd2Q\x96\xa9\xe2\xf3\x04R\xfc\x06\x7f\xe6\x1e\xc3\
+\x8cXH\xff\x9b8\x9cr\x04`\x1e\xfd\x1cyd.\
+\x83\xeav{\xf7\x86]h\xf5\xb1\x8e\xae]UJ_\
+\xbc\x5c\xbb\x96@\xee%\xb0\x7f\xeb[\xca\x91/1N\
+\xc3\x86F?+}\xeciX\xf4\xfa\xa5_\x9a\xe35\
+I_\x9c\xad\x88\xd2\x86\xc18\xf7\xd7\x1bB(z\xf1\
+v\xb1w\xb4\xea\xd2\xa7\xe2l\xe2\x12\x80\x19tG\x84\
+\xeb\xa3R \x8et{\x05\x87VT\x1b4H\xef\x08\
+\xcf\x9f\xafR;w\x12\xba\xab\xa2\xbe\x88:f\x8cJ\
+\xea\xcb\xa7\x86v\xd7\x7f\x12\xbd\x17J\xf5\xa3F\x059\
+X\x97\x8a\xc5\x9b\xa3\xf29\x0d\xe0\xf2'V\xc1\xeb\xa2\
+\xf7B\xa9\xee\xee\x96G|\x02\x08\x8e:\xe2\xfdQ(\
+\x08\xfa\xd5\xcf\xcb\xdd\x07kB\xb9\xd8y\xec\xb1\xca\xb9\
+\xf0BBuP^v\x99rN9E9-[\x06\
+\x1e\xd6\xf5C0\x15\xd1\xea\xa3~\xbbX\x92cu\xe9\
+\x81(|6\xba\x8f\xf9w\x09\x98\x98\xa5\xf6\x8c\x97\x8a\
+\xb5\xa2S\x97n\xcd\xb1\xba\x04`\x8c\xfa\x89t\xd7\x08\
+\xeb; \x9c#\xben\xba\xf5\xa1\xbe\xe0\xa9[\x1e.\
+\x5c\x98\xbe\x00I\x886fj\xf5j\xe5\x8c\x1e\xad\x9c\
+F\x8d\x02\xfd\x8c\xdf\x16\x17\x89%\xd1X\x0c\x1fM\xa4\
+[\x0c\xc6\x1d\xdd\xc5\xe6\x05\xdb?\x0f\x1d\xa2V\xf1\x1a\
+1\x06\xe0\x8b\xe2\x99\xd1\xe9D\xa5\xebRm\xe2\x14@\
+\xf6h\x22\xbeh\xfb\xe4\x1f->i\xb28\xe6\xe7\xa7\
+[ \xce\x99\xa3\x9c]\xbb\x08\xcb6\x84\xf5\x0b/\xdc\
+w\xf16\xc8\xfe\xebOG\xa7\xb3\xc2+\xee\xdc\x8d+\
+\xed\xc5\xf7m\xff\x1c\xc6\xf3\xf2'\x1a\xf0~\xf7\xe8T\
+\x04\xea\xd23b\x03b\x15@\xd5i+\xee\xb6\xfdg\
+\xe3\x1f\x9b\xec\xbe\xa2_\xe8<\xe5\x14\x95\xd2\xfd\xbd\x09\
+\xc5v\xaa\xcf\xfb\xebWQ\xbbtI\x7f\x91\x0a`\x1c\
+\xdc&\xb6\x8aF\xbb\xb3\xd61\xacK=\xc5\xbf\xd8\xfc\
+\xb7o\xcf\xeb\x9f\x18\x82\xfa\xb5\xe4\xc6\xf6\xd7\xa5\xd7\xc4\
+#\x88W\x00U\xdb\xa1\xdac\xeb$\xd7]\x10\xce\x10\
+_3Q\xf8\xf49\xe7\xce\x9dU\xea\x9cs8\xc2\x12\
+\xb5]\xf5K/U\xa9\xc1\x83\xd3]t\xb2<.\xde\
+\x10g\xd9\xdf\x96\xf1\x1d\xb1e\x8c\xea\xd2Q\xe2\x1fm\
+\xfd{\xeb\xb6\x89\xe7\x89\xef\x10\x161$\x7f'\x8e\xb5\
+?\xa4\xbfAH\x07\xc8\x8cn\xe2\x1fl\x9d\xdc-\xdc\
+\x1dL#\xad\x11\x87\x0eU\xce\x9a5\x84\xdd\x88\x9b\xdc\
+\xba5\xfd\xcbG\xbdzY\x1f'\xfa\x17\x9c\xe6v/\
+\x86\xfa\x8bv;v\xce\x83\xef\x1aEw\x16\xb4\xc5\xef\
+\x88\xe5\xfc\xc2\x07\x10+\xfa\xd8\xba\x08\xea\x9d\xca\xb3\xdc\
+\x0b{\x81\x16\xb7\x1a5Tj\xe4H\x95\xda\xb0\x81p\
+\x1b\xb7\x1d\xf5\x9d;U\xea\x8c3T2\xcb\x97J\xdf\
+\x12g\xd8\xfd<\xb7~u4\xca\xaf\xfb\x0d\x10?\xb0\
+u\xd7\xfc\x02.\x81\xa2\x85\xea_\x98O\xb5;\xa4'\
+\xc5\x0e\xc4.\x80C\xd3[\xfc\xd0\xc6\x89\xdc\xd8DO\
+\xf3\x9a5\x953a\x82r\xb6m#\xcc\xc6\xdd\x8a\x0a\
+\x95\x9c>]9M\x9adu\x0c\xfd\xc8\xee\xdd\xf4?\
+\x89]\x22X\x97\x06\x89\x1f\xb1k\x8e\x98\x99\xd7\x88u\
+\xec\xadK\xef\xc7\xec\x18\x1e@ \xc7Z\xac\xdc9\xd7\
+\x1dZ^\x09\xb2\x80\xd5\xae\xad\x1c\xfd\xc2'\x8f\x09\xe5\
+\xa6\xfa!)\xddS=K\xe3\xe9M\xbbw\xad~\x9f\
+H\xdf/a\xd3\xa0\x8aw`\xcef\xd7\x1c#\xe4\xb3\
+b\x7f\xbb\xef\xca\x1cN\x0c\x03\xf8:G\x8b\x7f\xb5m\
+\xd2\xd6\x16\xaf\x0e\xb2h\xe9v|'\x9e\x98>\x9fL\
+P\xcdm++UJw~i\xd80\xabg@\xeb\
+\xda\xb9\x18\xea\xfb%GF\xe4X\xcb?l\xfc5\xef\
+G\x04>\x8c\xa0\xfa\xe1\xb5\xcd\xf6\xbe\xe7\xa0;\xc65\
+'\x8e\x01\xfc\x97\x16\x09\x0b\xfb\x09\xeb'\xd6\x1f\x0b\xaa\
+P\x15\x15)g\xe4H\xe5l\xd9B0\xc5\xaf\xaa{\
+\xdaO\x9a\x94>\xee\x94\x85\xb1\xa6{\xf3w\xb7\xf7\x82\
+V3\x8b\xebRg\xf7H\x8eU\x7f\xb7\xc1\xe2o\x09\
+z\x18q\xef\x16[\xdbY\x97\xf4\xc3c\xf5\x89e\x00\
+\x89DS\xf1-\xdb&\xe9\xb7\x82\xfa\xe9X\xb7K\xec\
+\xd1C9k\xd7\x12D\xf1\xd0]_\x8e?>\xfde\
+.\x0b\xcfr\xcf\xb0\xb7\x1f\xb1\x8d\x8f\x86\xb4J\xa4/\
+\xb5ZuA}\xb1\xbb\x03I\xc0\xc38\xa8\x9b-L\
+\xb0\xb3.=\x9d\xe0\xc5Q\xc8q\xf4\xc2\xfc\xb2M\x13\
+\xb3\x86xeP\x05\xa9M\x1b\xe5,]J\xf8D\x7f\
+]_\xd6\xafWN\xef\xde\xe9/wU\x1c\x83;\xc5\
+b\xfb\x16\xc3\xdf\x88\xa5\x16\xd5\xa5\x86\x89t\x8fdk\
+\xfeF\xb5\xc4\xef\x11\xe80\xa6^\xe6v\x22\xb2\xac.\
+=jY]\x020F\x89\xf8\x84M\x13\xb2\xa5\xfb\x5c\
+q\x10\x17@\x93S\xa7\xf2\xc0\x10V\xcdy\xf3\xb2r\
+>\xfd^\xf1p\xfb\x16\xc3_\x88E\x16\xd4\xa52\xf1\
+)\x9b\xfe6\x1d\xc4\xc7\x09q\x18s\xef\xb0\xb3g\xfa\
+\x9db\x01q\x0dr\x89|\xf1v\x9b&\xe2\x88 ^\
+\x04\xd5;\x9e\x83\x06)\x87\x0b\xa0\x98\xc5\x1e\xea\xce\xe8\
+\xd1*YXX\xa5\xb1\xf9\x92x\xac}\x8b\xe1\x0db\
+^\x88uI\x7fA\xb8\xc7\xa6\xbf\xc9x\xb7#\x0f\x01\
+\x0esA}\xb7\xa2\x8f}u\xa9\x92\xc8\x06\xb9\xc4v\
+\x9b&\xe0\x1cqo\xb6\x8bM\xf3\xe6\xcaY\xb6\x8cP\
+\x89\xc1\xb8f\x8dJv\xe8P\xa51\xfa\xbe8\xcb\xbe\
+\xc5pc\x88u\xe9\x06[\xfe\x0e\xba\x85\xe2E\x9c7\
+\xc7\x1c\xf4=\xf1d\xfb\xea\xd2\x22b\x1b\xe4\x02\x17\xda\
+2\xe9\xf4\x99\xb7\xed\xd9.0\xc5\xc5\xe9\xe7\xdc+*\
+\x08\x91\x18\xbc\xba-cYY\x95\xc6\xecv\xfb\xce\x7f\
+\x9e\x13B]Ze\xcb\xbf\x7fM\xf1\xfb\x045\xccq\
+\xd7\xb8\x17\xa3-\x99\x97_\x8aS\x89o\x10g\xc6\x89\
+\x9f\xdb0\xe1\xca\xc4\x1b\xb3\x5cP\xf4C3\xa9K/\
+%4\xa2Y/\xbb\xac\xca\xbb\xe9?\x10K\xedY\x0c\
+\xff%\x0e1X\x97&\x88_\xd8\xf0\xef^_\xbc\x8b\
+p\x86\xb8\xcf]vm\x1e\xfcS\xecG\x8c\x838\xd2\
+_\xfc\xd8\x86\x89v\x84\xf8`6\x0b\x89>\x0f|\xca\
+)\x5c\x02\xc5p\x9d6-\xfd\x0bN\x86\xe3\xf8\x01\xb1\
+\xa9=\x8b\xe1\x07\x89t\x1f\xf2\xa0\xe9kK]\xd2=\
+\xa1\x7fC(C\xfc\x8a?\x13\x1b\xdaS\x97\xfe&v\
+!\xceA\x9c\xd0\xcf\xe7\xa6l\x98`\x9d\xc4\xe7\xb2Y\
+@\x1a5R\xceE\x17\x11\x0e\xd1\x9a\xb3\xe9N\xabV\
+\x19\x8f\xe7'\xdcnF\x96,\x86\xaf\x8au\x02\xacK\
+\xfa\x0d\x86\xbd6\xfc\xbbv\x14\x9f'\x8c!\x1e\xd0G\
+\xc4\x16\xf6\xd4\xa5\xd7\x03\xaeK\x00\xc6(NX\xd2N\
+\xf1\x98lwj\xe9\xde]9\x97_N(\xc4\xc0^\
+\x14Mm\xd8\xa0\x9c\xe5\xcbUr\xe1B\xe5\xcc\x99\xa3\
+\x9c3\xceP\xa9\xf1\xe3\x953n\xdc\xben.\xa9\x11\
+#\x943|\xb8r\x06\x0c\xf8\xaf\x03\x07\xaaT\xf5\xea\
+\x19\x8f\xeb\x17\xedzy\xf4\xdeD0m\xcet\x9b\xd7\
+gl\xf8w\xec\x1bD\x07)\xc4\x98\xa9\xbf\xc0\xb6\xb3\
+\xa7.\xdd\x95Hw\xa3\x03\x884\xdf\xb6aB\xf5\xcf\
+f\xbb2\xfd\xb2\xe3\x94)\x04H\xac\x9a[\xb6\xec{\
+\xb8*5{\xb6rt\xe8\x96`\xed\x1cy\xa4J6\
+jT\xa5\x80\x9d\x0d\xdf\xb0\xab\xdd\xd9\xfa\x00\xea\x92\x15\
+\x1d[F\x89\xef\x12\xbe\x10=\xb7\x87\xedlO]Z\
+A\xbc\x83(s\xb6\x0d\x13\xe9\x04\xf7\xa9\xf3\xac\x14\x89\
+\x06\x0d\x94s\xf1\xc5\x84K\xf4\xd7\xbb\x5c\xbf \xab\x1f\
+\xab\x1a6L9\xed\xdbW\xb9\xf3\x8a\xa9vg#\xed\
+Y\x0c'e\xb1.\x9do\xc3\xbf\xd3\xa9n\xabK\x82\
+\x17\xa2w\xdf\x12\x07\xd8\xd3\xd9\xe5db\x1eD\x11\x99\
+C\x89O\xc3\x9eD\xa7ds\x11\xec\xd4\x89#-x\
+\xf00\xae\xdbk\xea0~\xea\xa9\xca\xe9\xd5K9M\
+\x9a\xa8d~~d\x17\xc3\xdd\xee\x17\x5c\x0b\x16\xc3\xbf\
+\x8b\x9d\xb2P\x97\x06\x89\x9f\x85\xfd\xef3\x83\x1e\xe7\x88\
+\x19\xfb\xb68\xc4\x8e\xba\xf4\xa1\xd8\x91\xb8\x07Q\xa2\xbe\
+\xf8^\xd8\x93G\xbf\xc2\xb7'[/\x82\x8e\x1eM\x97\
+\x16\xfc\xba\xfa\x0b\xdb\xd9g+g\xe4H\xe5\xb4m[\
+\xa5.*6\x87\xf4\xe3\xedX\x0c_\x14K\xabP\x97\
+\x1a\x89\xef\x87\xfd\xef1%\x88\x87\xd1\x10s\xccw\xec\
+y\x0d\xf9y\xb1\x06\xb1\x0f\xa2\x80\xbe\xd0uo\xd8\x93\
+fL\xb6v\xcek\xd4P\xce\xbcy\x04QL\xab\xbf\
+\xa4\xe9\x1d\xf2\xb1c\x95\xd3\xba\xb5r\x22\xbc;\xee7\
+\xa4\x8f\xb2c1\xfca\x86uI_\xe8\xba/\xec\x7f\
+\xfe\xa9\xec\x9c#f\xb5.\x1dgG]\xfa\x1e\xd1\x0f\
+\xa2\xc0\xea\xb0'\xcb\xf0l\x9d9\xaf_\x9f\x87\x87P\
+9\xdb\xb6)\xe7[\xdfRN\xdf\xbe*U\xbbvN\
+/\x86\x96\xecX\xcd\xcc\xa0.-\x0f\xfb\x9f{\x12;\
+\xe7\x88\x81\xec\xa4\xf7\xb7\xa3.\xcd&\xfe\x81\xcd\xf4\x0b\
+\xfb|\xe7`\xf7r[\x95'~\x9b6\xca\xd9\xbc\x99\
+p\x9a\xa3&\xb7nM?\xfc\xa3_\xe8\xcc\x91]r\
+\xaf\x8b\xa1\x05\x17\xb4\xfe!\xb6\xf7Q\x97\x06\x86]\x97\
+\xc6r!\x141\xd0\xaeS\xdd\xed\xa8K\xed\x88\x81`\
+#\xb5\xc4\xb7\xc3\x9c }\xdc\xcb#U\x9e\xf0={\
+\xa6;o\x10Ts\xcb\xed\xdb\xd3\xa1\xbcK\x97t+\
+M\x16\xbeo\xec\xa2\xd0+\xfc\xc5\xf0\xb9D\xfa\x8d\x05\
+/\xf7a\xf6\x84\xf9\xcf:\x22\x9b]\xa4\x10\xf1\x80\xbe\
+*\x1e\x19~]zZ,\x22\x0e\x82m|7\xcc\x89\
+\xd1\xc3\xfd\x16]\xe5\x89>t(\x97As\xad\xf3\xca\
+\x8a\x15\xfb\xda\x1f&#\xd0\xfa\xd0\xa6\xc5\xb0C\xf8\x8b\
+\xe1\xb6C\xd4\xa4<\xf1\xce0\xff\x19{\xb9\xbf:0\
+f\x10\x83\xf7\x05\xb1u\xf8ui\x1dq\x10l\xe2\x94\
+0'D[70T\xb9S\xcb\x84\x09\x04\xd6\x5c\x09\
+\xe5;v(\xe7\xcc3UJ\x1feba\xcb\xc8\xe7\
+\xc4\xc3\xc2\xefC<\xea uiv\x98u\xa9}6\
+\xea\x12\x22\xfa\xf2\x19\xb1<\xdc\xba\xf4\xb9{\xac\x0e \
+tZ\x88\x7f\x0bk24I\xa4\x9f\x00\xaej8O\
+\x9dv\x1a\xc15\x17\x82\xb9\xbe\xf4;h\x90rJJ\
+X\xcc\xb2\xe0\xe3b\xa3p\x17\xc3?\x8a\xe5\x07\xa8K\
+m\xc4\x8f\xc2\xfa\xe7j)\xbe\xc8\xf8@\x0c\xc5\x07\xc5\
+Z\xe1\xd6\xa5\xbd\xee\xf1:\x80\xd0\xd0\xad\xcb\xee\x0fk\
+\x12T\x17\xef\xaa\xead.(P\xce\xcc\x99\x84\xd78\
+\xab\x1f\x0f\x9a5+\xdd\x16\x91\xc5+\xeb\xea9Xl\
+W\xebE}\xb4%\xb4\x96\x8ae\xe2\xfd\x8c\x0b\xc4P\
+\xbdA,\x08\xb7.\xddHD\x840Y\x10\xd6\xe0\x97\
+o\x06\xea\xea\xaaNb}\x11p\xee\x5c\x02l\x9c/\
+}\x9er\x8aJ6h\xc0\x82\x15\xb0W\x8ay\xe1.\
+\x86\xa7\xecW\x97\xe6\x86\xf5\xcf\xa1\x03\xc1\xf7\x18\x0f\x88\
+V\xb8.\xfc\xf3\xe8'\x12\x13!\x0c\x9a%\xd2\xcfo\
+\x872\xf0/\xa9\xe2\xc4M\x16\x16*\xe7\xac\xb3\x08\xb1\
+q\x0d\xe6'\x9d\xa4\x9cZ\xb5X\xa4\x0c\xba0\xdc\x85\
+\xf0Obc\xb1e\x98u\xe92\xc6\x01\xa2U~+\
+\xdc\xba\xa4;H\xd5\x22.\x82i~\x1e\xd6\xa0\x9f\x9c\
+\x8d\x9d\xf3\xf9\xf3\x09\xb2q\xbc\xf89n\x9crJK\
+Y\x98BP\xbf\x909&\xdc\xc5\xf0\x16\xf1\xd7a\xfd\
+\xe7\xcf`\x0c Z\xa7~\x7f`x\xb8u\xe9\x0a\xe2\
+\x22\x98\xe4\xf4\xb0\x06{\xf7\xaa>D\xa4\xcf\x9c\xb3s\
+\x1e\xaf`\xae{\xd6\xeb`^\xb3&\x0b\x92\x05\x0f\x19\
+u\x0e\xffge\xe3\x0e\xe4!\x22Dk}Ml\x11\
+^}\xf8\x22AW\x170\x84\xbe\x99\xfc\x870\x06z\
+\x03\xb7\x85R\x95Z)N\x99B\xa8\x8d\x93s\xe6(\
+\xa7qc\x16!\x8b|R\xac\x93C\xe1\x5c\xb7\x9a|\
+\x89\xcf\x1d\xd1j\xf5\xc5\xed\x1a\xe1\xd5\x09\xf9\x8e\x90\xa8\
+N|\x84\xa0\xf9a\x18\x03\xbc\xa8\xaa\x1d[t8\x9f\
+:\x95@\x1b\x17\x17-R\xc9f\xcdXx,\xf56\
+\xb10\x07\xc2y\x09\x1d[\x10#\xe3w\xc2\xbd\xcc~\
+9\xf1\x11\x82dxX\x0b\xe1\xa5U\x9d\x9c\xfa\x08\x04\
+\xc16\xfa\xc7Y6nTN\xff\xfe\xca\xc9\xcfg\xc1\
+\xb1\xdc\xc59\x10\xd07\xf39#ri\xd4\x9b\x9f\x8a\
+\xdd\x88\x91\x10\x04\xd5\xc4\xd7\xc3\x18\xd8c\xdc\x0bh\x19\
+O\xca\xa1C\x09\xb7q8g\xae;\xb3T\xaf\xce\x22\
+\x13\x11\xf7\x8aCb\x1c\xce'\xf1\x19#F\xce\xddb\
+\xef\xf0\xea\xc6#\x89\xf4;\x0d\x00YeQ\x18\x03\xba\
+\x8d\xf8fU&d\xaf^\xca\xa9\xac$\xe4F9\x9c\
+\x9f{\xaer\xea\xd7gq\x89\xa0\xbfK\x84\xfe\xd2h\
+`u\xe9->_\xc4H\xfa[\xb1<\xbc\xfaq\x1a\
+q\x12\xb2\x89\xac\xb1\x89\xbf\x85q\xee\xfc\xde\xaaL\xc4\
+v\xed\x94\xa3w^\x09\xb9\xd1\x0c\xe6\x9b6)\xa7{\
+w\x16\x94\x88{K\x22\xfd\xb0X\x5c\xc2y1\xe7\xce\
+\x11#\xef\x0f\xc3;\x8f\xbe[,!VB\xb6\xb8>\
+\x8c\x85peU&`y\xb9r6o&\xe8FQ\
+\xfd\x8b\xc7\xe4\xc9\xca\xa9Q\x83\x85$&.\x8aQ@\
+\xdf\xca\xe7\x89\x18\x0b\xe7\x86WG\xd6\x12+!\x1b\xe8\
+K\x0d\x9f\x9b\x1e\xc0}\xdd3\xac\x19M<\xfdP\xcd\
+\x8a\x15\x04\xdd(\xba~\xbdr\xbave\xf1\x88\x99{\
+\xc4\x1e1\x08\xe7#\xf8,\x11c\xe3\xbbb\x87pj\
+\xc9G\xe2\xe1\xc4K\xa8*\x0f\x98\x1e\xbc\xb5\xc4\xa73\
+\x9dt\xba\xbb\xc7\x82\x05\x04\xdd(:w\xaeJ\x96\x95\
+\xb1p\xc4\xd4G\xdd\xb6\x84Q\x0d\xe7\xf5\xdc\xb3\xab|\
+\x96\x88\xf1\xea\x8f^-\x9c\x9a\xf2\x03\xe2%T\x85\x93\
+\xc3X\x08\xaf\xac\xca\x84\x9b8\x91\xa0\x1b5\xb7mS\
+N\xef\xde,\x169\xe0\xba\x08\x07\xf4\xab\xf8\xfc\x10c\
+\xe9\xaapj\xca\x97b?b&dB\x91\xf8\x96\xe9\
+A{RU&Z\x9f>\x84\xdd\xa8]\x04]\xbc\x98\
+\x0e-9\xa4n\x97: \x82\xe1|\x1c\x9f\x1db\xac\
+\xebR\xffpj\xcb\x13DM\xc8\x849a\xfc\x84\xfc\
+b\xa6\x93\xacI\x93\xf4N,\xa17:N\x9a\xa4\x9c\
+\xa2\x22\x16\x88\x1cS\x1f_\xab\x19\xa1p\xae\xdb\xb1\xbd\
+\xcc\xe7\x86\x18k\x1f\x13\xab\x87Sc\xc6\x107\xc1\x0f\
+\xc5\xe2\x1e\xd3\x03uW\xa6\x93K\x9f[^\xbb\x96\xc0\
+\x1b\x15\xb7lQN\x97.,\x0a\x1cu\x89\x84\xd7\xf0\
+y!\xe6\x84\xcb\xc2\xa91\xcf%x\xbc\x08|0\xdf\
+\xf4 \x1dR\x95\x895g\x0e\xa17*\xae\x5c\xa9\x9c\
+\xa6MY\x0cr\x5c\xdd\xa1\xa9{\x04\xc2\xf9p>+\
+\xc4\x9c\xea6\xd5)\x9cZs2\xb1\x13\xbc\xa0\x1b\xe8\
+;&\x07g\x0d\xf17\x99N\xaa\xc1\x83\x09\xbdQq\
+\xe6L\xe5\x14\x17\xb3\x10\xe0\x7f\xba'\x14Y\x1c\xceK\
+\xab\xd2M\x0a\x11#\xe9\xddb\x81\xf9z\xf3\xa2\x98O\
+\xfc\x84C\xb1\xc8\xf4B\xb8*\xd3\xc9\xa4\x1f#\xda\xbe\
+\x9d\xe0\x1b\x85\x87\x87F\x8dRN^\x1e\x0b\x00~\xc5\
+s,\x0e\xe8\xab\xf9|\x10s\xd2\xb3\xc2\xa99\x93\x89\
+\x9fp0\xca\xc4?\x9a\x1c\x94G\x8a\xefg2\x89\x8a\
+\x8aT\xf2\x92K\x08\xbf\xb6\xbbu\xabr:v\xa4\xe8\
+\xe3\x01}Glna8\xef\x9ai]B\xc4\xc8\xfb\
+\x96\xd8\xc4|\xddyM, \x86\xc27\xb1\xd4\xf4B\
+\xf8\xa3L'\xd1\xf8\xf1\x84_\xdb\xbd\xec2\xce\x9b\xe3\
+!\xbd\xde\xb2p\x9e'\xde\xc5\xe7\x82\x98\xd3V\x86S\
+\x7f\xa6\x11C\xe1\x9b:\xb7\x18={>:\xc3\x89\x93\
+j\xd3F9\x15\x15\x04`\x9b\xfb\x9b\xafX\xa1\x9c\x06\
+\x0d(\xf4\xe8\xc9\x81\x16\x05\xf4\x09|\x1e\x88\xf4F\x17\
+{\x84\xb3\x8b\xceYt\xf8\x1a\xb3L\x0eD\xf96\xa0\
+\x9e\xcc$\x9cW\xaf\xae\x92\xb4T\xb4\xdb\xb9s\xb9\x0c\
+\x8a\xbe|@,\xb4 \x9c\xeb\x0b\xeb\xcf\xf1y \xa2\
+\xf8s1\xdf|\x1d\x1aK\x1c\x85\xfd\xd1=8_6\
+9\x08\xe7g:i&L \x00\xdb\xec\xacY*Y\
+XHqG\xdf\xce\xb0 \xa0/\xe1s@\xc4\xfd\x9c\
+d\xbe\x0e=L$\x85\xfd9\xd1\xe4\x00\xd4/\xf3\xbd\
+\x91\xc9di\xdd:\xdd\x11\x84 l\xef\xcb\xa0tj\
+\xc1\x0c\xd5\xafu\xd6\x0a1\x9c\xebKa\xef\xf29 \
+\xe2~>\xef\xb6\x5c5\x5c\x8fz\x11K\xe1\xdf<h\
+r\xf0m\xc9\xb0k\x8b\xa3\xcf5\x13\x84\xed\xf4\xe4\x93\
+\x09\xe7Xe/\x0a1\xa0o\xe1\xef\x8f\x88\x07\xf0B\
+\xf3\xf5\xe8Vb)hz\x9a\x1cx-\x12\xe9\xd7\xba\
+|O\x92\xd1\xa3\x09\xc1\xb6\xaa?\x1b\x8a8f\xc17\
+\xc5\x86!\x84\xf3\xd6\x99\xd6%D\x8c\xbd\xfa\x17\xffz\
+fk\xd2\xe7bK\xe2)\xdcjr!\xac\xc8d\x82\
+\x94\x97\xab\xd4\xce\x9d\x04a\x1b\x1d;\x96\x02\x8eYu\
+]\x08\x01\xfd\x1a\xfe\xee\x88x\x10\x97\x9b\xafK;\x89\
+\xa7\xb9M3\xf7\x9b\x9a\x91\x01\xd76\x91\xe1\xe3\x1f\xf3\
+\xe6\x11\x84\x09\xe7\x98#\xee\x16\x9b%\xcc>J\x94\xe4\
+\xef\x8e\x88\x89\x83?^d\xf8\xd7\xbd\xbf\x8b\xb5\x89\xa9\
+\xb9\xcbZ\x93\xdf\x08\xaf\xcd\xa4\xadb\xd7\xae\x04a\x1b\
+\xfb\x9c\x8f\x1bG\xd1\xc6\xc0\xdcn\xb0.}\x8f\xbf7\
+\x22\xda\xf9\xeb\xde\xb9\xc4\xd4\xdc\xa4HL\x99\x1ahG\
+e\xb0K\xa5\xdb\xf5\xa5V\xaf&\x10\xdb\xa6nuI\
+\xb1\xc6\x00\xd5\xbf\xb4\xb54P\x97\xba\xf1\xb7FDK\
+\x7f\xdd\x13_ \xaa\xe6&F[+^\x97\xc9\x848\
+\xf6X\xc2\xb0m\x9e~:\xddZ\xd0\x88\x1b\x0d\xd4\xa5\
+\xab\xf9;#\xa2\x0f\xd7\x9b\xdfE?\x86\xb8\x9a{\xdc\
+a\xb2C\xc2^\xbf\x13\xa1F\x0d\xe5l\xdeL \xb6\
+\xc99sT2?\x9f\x22\x8dF|\xcf\xedM\x1eT\
+]j\x97I]B\xc4\x9c\xf6\x1d\xb1\xbe\xd9\x80~5\
+q5\xb78L\xfc\xcc\xd4\x00\xdb\x94\xc9D\x988\x91\
+@l\x91\xc9\x85\x0b\xd3\xbd\xe8)\xd0h\xd0\xcb\x02\xac\
+KW\xf0\xf7E\xc4\x0c\x5cd6\xa0\x7f(\x96\x11[\
+s\x87U\xa6\x06W\xb9\xbb\x13\xe6k\x024h\xa0\x9c\
+]\xbb\x08\xc6\xb6\xb8l\x99r\xaaW\xa70c(\xbb\
+\xe8\xe5\x01\xd4\xa5V\xec\x9e#b\x86\xbe\x920\xfe\xba\
+\xe8\xd9\xc4\xd6\xdc\xa0@|\xdf\xd4\xc0\xba(\x93\x090\
+e\x0a\xa1\xd8\x16\xd7\xadS\xa9:u(\xca\x18\x9a\x17\
+'x5\x14\x11\xedr\x86\xd9\x80\xfe,\xd157\x18\
+ajPU\x17_\xf4;\xf0\xcb\xcb\x95SQA0\
+\xb6\xc1m\xdb\x94s\xc4\x11\x14c\x0c}\xb7\xaa,\x8b\
+u\xa9\x91\xf8.\x7fWD\xac\x82\x8f\x8a\xf9fCz\
+g\xe2k\xfc\xb9\xd1\xd4\x80\x9a\x91\xc9\xc0\x9f6\x8d`\
+lC\x9fs\xf9\x92\x94\xea\xd4\x89B\x8cVxN\x16\
+\xeb\xd2\xa5\xfc=\x111\x0b\x9eh6\xa0o$\xbe\xc6\
+\x9bb\xf1\xaf&\x06S\x9e\xf8\x88\xcf\xc1\x9el\xd4h\
+_0$ [\x10\xd0G\x8e\xa4\x00\xa35>'\x16\
+e\xa1.\xd5\x12_\xe3\xef\x89\x88Y\xf0'f\x03\xfa\
+\x9bD\xd8xs\x92\xa9\xc14$\x83\xc1\x9e\x9c>\x9d\
+plI;Ez\x9d\xa3mN\xcdB]:\x9f\xbf\
+#\x22f\xd1NfCzObl|\xf9\xbe\xa9\x81\
+tU&g\xcf++\x09\xc7a\xbbt)\xed\x14\xd1\
+J\x1f\xa9\xe2\x99\xcfb\xf1\xb7\xfc\x1d\x111\x8b\xae6\
+\x1b\xd07\x11c\xe3I\xa9\xf8\x91\x89A\xd4 \x91~\
+\x12\xd7\xcf O\x9dv\x1a\xe18l\xf5\xc3P\xf5\xeb\
+St\xd1Z\xc7\x9a\xbe\x13\x83\x88x\x10\xf5\x91\xb9\x12\
+s\x01}\x8f\x98G\x9c\x8d\x1f\x13M}\xcb\x9b\xe7\xf7\
+hKY\x99J\xed\xd8A@\x0e\xd3\x8a\x0a\x95\xec\xd0\
+\x81\x82\x8bV{\x9f{\xbf\xc5oM\xd2\xe7\xd7\x9f\xe1\
+\xef\x87\x88\x018\xc1\xec.z?\xe2l\xfc\xb8\xcd\xd4\
+\xe5\xd0G\xfd\x0ep}!\x91\x90\x1c\xae\xe3\xc6Qh\
+1\x12\x0e\xcd\xa0.M\xe4\xef\x86\x88\x01\xf9#\xb3\x01\
+}'q6^\x94\x88\xff01xz\xf9\x1d\xdcE\
+E*\xb5i\x13\x019\xcc\x8e-\x8b\x17\xabd~>\
+\x85\x16#\xe1-\x19l\x1a\xdc\xc7\xdf\x0d\x11\x032)\
+6\xe7\x98\x0bd\xc8\xf1\xa6\xbe\xddm\xf5;\xb8\x07\x0c\
+ $\x87\xe9\xd6\xad\xcai\xd0\x80\x22\x8b\x91\xb2\x9b\x8f\
+\x9at,\x7f/D\x0c\xd8\x0b\xcd\xee\xa2\x1fE\xac\x8d\
+\x0f\x15&\x06M\xb5Lz\x0c/[FH\x0eS\xfd\
+\x05\x89\xe2\x8a\x11\xf3z\x1fu\xe9g\xfc\xbd\x101`\
+\x9f\xc8\xf0~L\x86^B\xac\x8d\x0f\xef\x98\x184\xc3\
+\xfd\x0e\xea\x96-\x09\xc8a:s&\x85\x15#\xfb\x93\
+r{\x0f5\xa97\x7f+D\xb4\xf0\x97\xbd*\xfa\x08\
+\xb16\x1e\xb46\xf5\xb3\xcb\x0e\xbf\x03z\xca\x14Br\
+H&\xd7\xaeUNI\x09E\x15#\xeb\x16\x0f5\xe9\
+;\xfc\x9d\x10\xd1\x90\x97\x98\x0b\xe8\x9f\x8a\xb5\x88\xb7\xd1\
+g\x81\x89\x01S]|\xc3\xcf`..VI}\xfe\
+\x99\xb0\x1c\x8e]\xbbRP1\xd2\xea\xb7\x16\x0e?H\
+M\xea\xcc\xdf\x08\x11\x0d\xfa\x8c\xd9c.\x13\x89\xb7\xd1\
+\xe7\x17&\x06\xcb\xf1>\x07rj\xe0@BrXN\
+\x9fN1\xc5X\xb8\xe6 5\xe9\x0a\xfe>\x88h\xd8\
+\x1e\xe6\x02\xfa\xb5\xc4\xdbhSl\xaa\xbdb\xa5\xdf\x81\
+\xac\x9f\x94',\x9bw\xe3F\xe5\x94\x96RH1\x16\
+\xea_\xed\xea\x1c\xa0\x1e\x1d\x9e\xf0\xff\x9a1\x22bU\
+]a.\xa0\xef&\xe2F\x9b\xe1&\x06\x8a~\xa5\xef\
+u?\x83\xb8iS\x82rX\xf6\xe9C\x11\xc5X\xb9\
+\xf0\x005i-\x7f\x17D\x0c\xc1'\xcd\xb6[\xecD\
+\xcc\x8d.\x1bL\x0c\x92~~\x07\xf1I'\x11\x94\xc3\
+\xb8\x18z\xd6Y\x14P\x8c\x9d/\x8a%\xfb\xd5\xa3z\
+\xe2\xdb\xfc]\x101$[\x9b\x0b\xe8\xf3\x89\xb9\xd1\xe5\
+1\x13\x83\xe4R\xbf\xe7\xcfW\xaf&0\x9bv\xfbv\
+\xe5\xd4\xafO\xf1\xc4X:g\xbfz\xb4\x94\xbf\x07\x22\
+\x86\xe8Y\xe6\x02\xfa\xad\xc4\xdchR]\xfc\xc4\xc4 \
+\xf9\xb5\x9f\xc1\xdb\xa2\x05a9\x0cG\x8e\xa4pbl\
+}\xd6=jW\xcb\xefq;D\xc4,{\xb3\xb9\x80\
+\x9e$\xeaF\x93\xbe&\x06H\xe3D\xfa\xd1\x10\xcf\x83\
+w\xc2\x04\xc2\xb2i\xd7\xacQNQ\x11\x85\x13c\xed\
+Dw\xe7\x8a\xbf\x05\x22\x86\xe9;\x89t\xebiC!\
+\xbd9q7z,218N\xf33p\xf3\xf2\x94\
+\xb3n\x1d\x81\xd9\xf4\xd9\xf3\xee\xdd)\x9a\x18{\x1fp\
+w\xd2\xf9[ b\xd8\x1ek.\xa0O&\xeeF\x8f\
+\xdbM\x0c\x8ek\xfc\x0c\xdaV\xad\x08\xcc\xa6]\xb8\x90\
+b\x89\x88\x88h\xd0\xb5\xe6\x02z%q7z\xfc>\
+\xe8\x81Q \xbeF\xf7\x16{\xad\xacT\xa9\x96-)\
+\x96\x88\x88\x88\x06}\xc4\x5c@\x7f\x9e\xb8\x1b-\xda\x99\
+\x18\x18\x9d\xfc\x0e\xdaK.!4\x9b<\xda\xc2\x8b\xa1\
+\x88\x88\x88\xa1Xn&\xa0\x7f!\xd6!\xf6F\x87\xa9\
+&\x02\xfa4?\x83\xb5^=B\xb3AS;w\xaa\
+\x94\xfe\x9bS$\x11\x11\x11\x8d{\xbc\xb9]\xf4\xe1\xc4\
+\xde\xe8\xb0\xcd\xc4\xa0\xb8\xd2\xcf`\x1d0\x80\xe0lr\
+\xf7|\xd2$\x0a$\x22\x22bH\xae2\x17\xd0/\x22\
+\xf6F\x87_\x99\x18\x14O\xfb\x19\xacs\xe6\x10\x9c\x0d\
+>J\x94\xaa]\x9b\x02\x89\x88\x88\x18\x92?7\x17\xd0\
+o$\xf6rA\xf4?\x96\xfb\x19\xa8\x85\x85*\xb9u\
++\xc1\xd9\x94\xe3\xc7S\x1c\x11\x11\x11Ctw\xc2X\
+?t.\x8aF\x84\xc6&\xbe\xb1\x8d\xf53P\xdb\xb6\
+%4\x1b\xdc=O\xd6\xacIqDDD\x0c\xd9\xbe\
+f\x02\xfa\xa7b5\xe2\xaf\xfd\x1cg\x22\xa0\xaf\xf23\
+HO8\x81\xe0l\xca\xb1c)\x8a\x88\x88\x88\x168\
+\xcf\xdc1\x97N\xc4_\xfb1\xf2\x82\xe8m~\x06\xe9\
+\x82\x05\x04gC\xbb\xe7Ni)E\x11\x11\x11\xd1\x02\
+\xaf4\x17\xd0O'\xfe\xda\xcfwM\x0c\x86W<\x0e\
+\xced~~:8\x12\xa0\x83\xf7\xb4\xd3(\x88\x88\x88\
+\x88\x96\xf8\x80\xb9\x80\xbe\x81\xf8k?\xcfXuA\xf4\
+\x88#\x08\xce\x86^\x0du\x1a5\xa2 \x22\x22\x22Z\
+tQ\xb4\xc8L@\xbf\x8b\xf8k?\x7f\x0fz \x0c\
+\xf63@\x87\x0c!<\x9b\xe8{~\xd6Y\x14CD\
+DD\xcb\xech&\xa0\xbfE\xfc\xb5\x9b\x86&~J\
+\x99\xebgp\xce\x9cI\x806\xa1\xee\x94C!DD\
+D\xb4\xca\x93\xcdur) \x06\xdbKo\x13\x01\xbd\
+\xc2\xc7\xc0L\xae]Kx\x0e\xda\x8b/\xa6\x08\x22\x22\
+\x22Z\xe8rs\xe7\xd0\x9b\x13\x83\xed\xe5T\x13\x83\xe0\
+W^\x07\xa6\xee(B\x80\x0e\xde\xbe})\x82\x88\x88\
+\x88\x16\xfa}s\x01}\x101\xd8^\x96\x04=\x00\xf2\
+\xc4\xb7\xbd\x0e\xcc\xf6\xed\x09\xcfA{\xf9\xe5\xca)*\
+\xa2\x08\x22\x22\x22Z\xe8\x93\xe6\x02\xfa4b\xb0\xbd\x5c\
+\x1d\xf4\x00h\xe4g`\x0e\x1dJ\x80\x0e\xfar\xe8\xa4\
+I\x14@DDDK\xddc\xae\x93\xcb*b\xb0\xbd\
+\xdc\x1b\xf4\x00\xe8\xe1g`N\x99B\x88\x0e\xda\xc3\x0e\
+\xa3\x00\x22\x22\x22Zl33\x01\xfd\x06b\xb0\xbd\xbc\
+\x11\xf4\x008\xc9\xc7\x80L-YB\x80\x0e\xd2\x8b.\
+\xa2\xf0!\x22\x22Zn\x7f3\x01\xfd!b\xb0\x9d\xe4\
+\x89\x1f\x07=\x00\xce\xf5: \xf3\xf3Uj\xc7\x0eB\
+t\x90\xf6\xefO\xe1CDD\xb4\xdcS\xcd\x04\xf4\xf7\
+\x88\xc2vR\xd7\xc4%\x84M^\x07\xa4~\xd5\x92\x10\
+\x1d\x9c\xdb\xb7+\xa7\xa4\x84\xc2\x87\x88\x88h\xb9\x8b\xcd\
+\x04\xf4O\x88\xc2v\xd2\xc6D@\xbf\xc9\xeb\x80\xec\xd4\
+\x89\x10\x1d\xa4\xfa\x01(\x8a\x1e\x22\x22\xa2\xf5\xee2\xd7\
+\xc9\xa5\x8c8l\x1f}L|\xf8\x0f{=\x7f>x\
+0!:H\x8f:\x8a\xa2\x87\x88\x88\x18\x01\x7fd.\
+\xa0\xb7 \x0e\xdb\xc7\x89&>\xfc\x97\xbd\x0e\xc8\xf1\xe3\
+\x09\xd1A\xb9u+\xbd\xcf\x11\x11\x11#\xe2\x03\xe6\x02\
+\xfa1\xc4a\xfb\x98\x16\xf4\x07_ \xee\xf5\xba\x83>\
+{6A:(\xa7O\xa7\xe0!\x22\x22F\xc4\xdf\x9a\
+\x0b\xe8#\x89\xc3\xf6\xb1(\xe8\x0f\xbe\x9e\x9f\x01\xb9t\
+)A: S]\xbbR\xf0\x10\x11\x11#\xe2\xeeD\
+\xfa%v\x03\x01\xfd\x0c\xe2\xb0}\xac\x0f\xfa\x83o\xed\
+g@n\xdeL\x98\x0e\xc2-[T\xb2\xb0\x90\x82\x87\
+\x88\x88\x18!k\x99\x09\xe8\x0b\x88\xc3\xf6qu\xd0\x1f\
+|O\xaf\xc7[\xaaW'H\x07\xb5{N\xf7\x16D\
+D\xc4\xc8\xd9\xc2L@_M\x1c\xb6\x8f\xdb\x82\xfe\xe0\
+Gx\x1c\x84Iz\xa0\x07g\xcf\x9e\x14:DD\xc4\
+\x88y\xb4\x99\x80^A\x1c\xb6\x8f_\x04\xfd\xc1\x9f\xea\
+u \xb6lI\x90\x0e\xc2\xcaJ\xe5\x94\x95Q\xe8\x10\
+\x11\x11#\xe603\x01\xfdz\xe2\xb0}\xdc\x17\xf4\x07\
+?\xcb\xeb@\xec\xd2\x850\x1d\x84\x17^H\x91CD\
+D\x8c\xa0c\xcd\x04\xf4\x1f\x10\x87\xed\xe3\xe1\xa0?\xf8\
+y^\x07b\x9f>\x84\xe9 \x1c=\x9a\x22\x87\x88\x88\
+\x18A'\x9a\x09\xe8\xb7\x11\x87\xed\xe37A\x7f\xf0\xe7\
+y\x1d\x88\xc3\x86\x11\xa6\x83\xb8 \xaa\x8f\x0eQ\xe4\x10\
+\x11\x11#\xe7\xe9f\x02\xfa\x9d\xc4a\xfbx>\xe8\x0f\
+~\xb1\xd7\x818v,\x81:\xdb\xea\xb6\x95\xf9\xf9\x14\
+9DD\xc4\x08:\xc3L@\xbf\x978l\x1f/\x07\
+\xfd\xc1/\xf3:\x10O?\x9d@\x9dm\xe7\xcc\xa1\xc0\
+!\x22\x22F\xd49f\x02\xfa\x03\xc4a\xfbx+\xe8\
+\x0f~\x95\xc7A\xb8\xafW7\xa1:\xab&\x8f;\x8e\
+\x02\x87\x88\x88\x18Q\xcf5\x13\xd0\x1f'\x0e\xdb\xc7\x9e\
+\xa0?\xf8u^\x07\xa2\xde\xed%Ts\xfe\x1c\x11\x11\
+\x11\xf7y\x81\x99\x80\xfe\x0cq\xd8>RA\x7f\xf0\x97\
+{\x1d\x88s\xe7\x12\xaa\xb3\xe9\xf6\xed\xca)(\xa0\xc0\
+!\x22\x22F\xd4%f\x02\xfa\x0b\xc4a\xfbp\x82\xfe\
+\xe07{=\xe22\x7f>\xa1:\x9b\xc7[\x16.\xa4\
+\xb8!\x22\x22F\xd8\x0b\xcd\x04\xf4\xdf\x12\x87s\xf0\x88\
+\xcbz\xaf\x03Q\x07J\x82u\xf6\x8e\xb7\x8c\x1bGq\
+CDD\xe4\x88\x0bG\x5c\x22\xc8;A\x7f\xf0k\xbd\
+\x0e\xc4\xc5\x8b\x09\xd6\xd9\x0c\xe8]\xbbR\xdc\x10\x11\x11\
+#\xec\x023\x01\xfd\x09\xe2\xb0}\xbc\x11\xf4\x07\xbf\xd2\
+\xeb@\x5c\xba\x94`\x9dMk\xd7\xa6\xb8!\x22\x22F\
+\xd8yf\x02\xfa#\xc4a\xfbx%\xe8\x0f~\xb9\xd7\
+\x81\xb8l\x19\xa1:\x9b\x0f\x14Q\xd8\x10\x11\x11\xe9\x83\
+\x9e\xa0\x0fz\x14y1\xe8\x0f~);\xe8\xe6=\xef\
+<\x0a\x1b\x22\x22b\xc4\x9di&\xa0\xff\x928l\x1f\
+\xcf\x07\xfd\xc1/\xf6:\x10/\xba\x88`\x9d-O9\
+\x85\xc2\x86\x88\x88\x18q\xcf4\x13\xd0\x7fA\x1c\xb6\x8f\
+\xa7\x83\xfe\xe0/\xf0\xdaf\x91K\xa2\xd9k\xb1\xd8\xaf\
+\x1f\x85\x0d\x11\x111\xe2N6\x13\xd0\xef \x0e\xdb\xc7\
+\xe3A\x7f\xf0s=\x0e\xc2$m\x16\xb3g\x8b\x16\x14\
+6DD\xc4\x88;\xd6L@\xbf\x8d8l\x1f\xbf\x0a\
+\xfa\x83\x9f\xeau \x9e\x7f>\xc1:\x1bVV*\xa7\
+\xb8\x98\xc2\x86\x88\x88\x18q\x8f5\x13\xd0\xaf'\x0e\xdb\
+\xc7O\x82\xfe\xe0'x=\xe2\xc2K\xa2\xd9q\xdd:\
+\x8a\x1a\x22\x22b\x0c\xeci&\xa0\xef$\x0e\xdb\xc7\x8d\
+A\x7f\xf0#\xbc\x06\xf4s\xce!\x5cg\xc3\x0b.\xa0\
+\xa8!\x22\x22\xc6\xc0\x8ef\x02\xfae\xc4a\xfb\xb82\
+\xe8\x0f~\x80\xd7\x80>{6\xe1:\x1bN\x9bFQ\
+CDD\x8c\x81\xcd\xcc\x04\xf4%\xc4a\xfb\xd8\x1c\xf4\
+\x07\x7f\xb4\xd7K\xa2S\xa7\x12\xae\xb3\xe1\xe8\xd1\x145\
+DD\xc4\x18X\xcfL@\x9fK\x1c\xb6\x8f\x15A\x7f\
+\xf0\xed\xbc\x0e\xc4I\x93\x08\xd7\xd9\xb0o_\x8a\x1a\x22\
+\x22b\x0c\xacf&\xa0O%\x0e\xdb\xc7\x05A\x7f\xf0\
+M\xbd\x1eq\x197\x8ep\x9d\x0d\xdb\xb6\xa5\xa8!\x22\
+\x22F\xdcw\xcc\x84s\xed8\xe2\xb0}\xcc\x09\xfa\x83\
+/\xf1:\x18G\x8d\x22\x5cg\xc3\xfa\xf5)l\x88\x88\
+\x88\x11\xf77\xe6\x02\xfa\xb1\xc4a\xfb\x98d\xe2\xc3\x7f\
+\xdb\xcb`\x1c:\x94p\x9d\x8dWD\x0b\x0b)l\x88\
+\x88\x88\x11\xf7\xe7\xe6\x02z7\xe2\xb0}\x0c5\xf1\xe1\
+?\xe5e0\xea\xe7\xe9\x09\xd8Us\xdb6\x8a\x1a\x22\
+\x22b\x0c\xbc\xc1\x5c@oL\x1c\xb6\x8f.&>\xfc\
+\xbb\xbd\x0c\xc6n\xdd\x08\xd8Uu\xcd\x1a\x8a\x1a\x22\x22\
+b\x0c\xdcb&\x9c\x7f!\x16\x10\x87\xed\xa3\xb1\x89\x80\
+\xfe}/\x97D\xdb\xb4!`W\xd5%K(j\x88\
+\x88\x881p\xa9\x99\x80\xfeG\xa2\xb0\x9d\x14\x89_\x06\
+=\x00vy\x19\x8c\xe5\xe5\x04\xec*\x9a:\xf7\x5c\x8a\
+\x1a\x22\x22b\x0c\xfc\x96\x99\x80\xfe\x12Q\xd8^\xfe\x1a\
+\xf4\x00X\xe5e0\x96\x96\x12\xb2\xab\xea\xf4\xe9\x145\
+DD\xc4\x188\xceL@\xff51\xd8^\xde\x08z\
+\x00\xcc\xf32\x18\xf3\xf2\x94SQA\xc8\xae\x8a\xa7\x9c\
+BQCDD\x8c\x81=\xcd\x04\xf4\x9b\x89\xc1\xf6\xf2\
+X\xd0\x03\xe0$\x8f\x831\xb5i\x13!\xbb*\x8e\x19\
+CQCDD\x8c\x81\x8d\xcd\x04\xf4\x9d\xc4`{\xf9\
+i\xd0\x03\xa0\x97\xd7\x01\xb9|9!\xbb*\x1e\x7f<\
+E\x0d\x11\x111\xe2\xee\x16\xf3\xcd\x04\xf4\xa5\xc4`{\
+\xb9\x22\xe8\x01\xd0\xd4\xeb\xa0\x5c\xb0\x80\x90]\x95K\xa2\
+#FP\xd8\x10\x11\x11#\xee\xe3\x09c=\xd0O#\
+\x06\xdb\xcb\xd2\xa0\x07@\x81\xb8\xc7\xcb\xa0\x9c:\x95\xa0\
+]\x15\x8f=\x96\xc2\x86\x88\x88\x18qo5\x17\xd0\xfb\
+\x10\x83\xed\xe5t\x13\x83\xe0\x19/\x83r\xf4hBv\
+Uv\xd0\x07\x0f\xa6\xb0!\x22\x22F\xdcm\xe6\x02z\
+\x13b\xb0\xbd\x0c21\x08\xee\xf20 \x93\xfd\xfa\x11\
+\xb4\xab\xe0\xbe\xbf\x1f\x85\x0d\x11\x111\xd2^`&\x9c\
+\x7f\x22\xe6\x13\x83\xed\xa5\x85\x89\x80~\x95\x97A\xd9\xb1\
+#A\xbb*\xf6\xeeMaCDD\x8c\xb8c\xcd\x04\
+\xf47\x89\xc0v\xa3_\x13\xfd\x22\xe8\x81p\x91\x97A\
+\xd9\xa4\x09!\xbb*G\x5cz\xf6\xa4\xb0!\x22\x22F\
+\xdc\x8ef\x02\xfa}D`\xfb\xd9\x1b\xf4@\x98\xe8a\
+@\xa6\xaaW'h\xb3\x83\x8e\x88\x88\x98\xb3\xbe/\x16\
+\x9b\x09\xe8\xd7\x11\x7f\xed\xe7\xf1\xa0\x07Bw\xaf\x83s\
+\xe3F\x826g\xd0\x11\x11\x11i\xb1\x18\xac\x97\x10\x7f\
+\xed\xe7\x07A\x0f\x84\xda^\x07\xe7\x05\x17\x10\xb63u\
+\xd0 \x8a\x1b\x22\x22b\x84\xbd\xc1\x5c@?\x99\xf8k\
+?+L\x0c\x86\x17\xbc\x0c\xce3\xce hg\xea\xd0\
+\xa1\x147DD\xc4\x08\xbb\xdc\x5c@\xefH\xfc\xb5\x9f\
+\xc9&\x06\xc3\x1d^\xce\xa1\xeb\xd70\x09\xdb\x99\x1dq\
+9\xee8\x8a\x1b\x22\x22b\x84=\xcdL8\xffL\xac\
+F\xfc\xb5\x9f\x1e&\x02\xfav/\x83\xb3[7\xc2v\
+\xa6\x8e\x1cIqCDD\x8c\xb0\x9d\xcd\x04\xf4\xd7\x88\
+\xbe\xd1\xa0\xa6\xf8e\xd0\x03\xe2,/;\xe8\xb4Z\xcc\
+\xdcq\xe3(n\x88\x88\x88\x11u\xb7Xd&\xa0\xff\
+\x84\xe8K\xab\xc5\xff8\xc0\xcb\x00-*RNE\x05\
+a;\x93>\xe8\x93'S\xe0\x10\x11\x11#\xea\xdd\xe6\
+\xce\x9f\xaf#\xf6F\x87\x07\x83\x1e\x10\xf5\xbc\x0e\xd2\xe5\
+\xcb\x09\xdc\x998k\x16\x05\x0e\x11\x111\xa2n1\x17\
+\xd0\xcf$\xf6F\x87kL\x0c\x8a\xe7\xbc\x0c\xd2\x193\
+\x08\xdb\x998\x7f>\x05\x0e\x11\x111\xa2N3\x17\xd0\
+\x8f&\xf6F\x87\x85&\x06\xc5\x8dtr\x09\xce%K\
+(p\x88\x88\x88\x11\xb5\xbb\x99p\xfe\x09\x1d\x5c\xa2\xc5\
+\xb1&\x02\xfa\xc5^\x06i\xc7\x8e\x84\xedL\x5c\xbd\x9a\
+\x02\x87\x88\x88\x18\xd1\x0b\xa2\xd5\xcd\x04\xf4g\x88\xbc\xd1\
+\xa2\xbe\x89\x80>\xd6\xcb@\xad]\x9b\xb0\x9d\x89[\xb6\
+P\xe4\x10\x11\x11#\xe8\xcf\xcd\x1do\xb9\x86\xc8\x1b=\
+\xf6\x04=0Zy\x1c\xa8\xa9\x8d\x1b\x09\xdc\x99tr\
+\xa9^\x9dB\x87\x88\x88\x181W\x99\x0b\xe8s\x89\xbb\
+\xd1\xe3\xae\xa0\x07F\x9e\xf8\xb2\x97\x80~\xee\xb9\x04\xee\
+L,/\xa7\xd0!\x22\x22F\xcc\xd1\xe6\x02zo\xe2\
+n\xf4\xb8\xcc\xc4\xe0\xf8\x9e\x97\xc1z\xc2\x09\x84\xedL\
+l\xdf\x9eB\x87\x88\x88\x181\x1b\x99\x09\xe7\x9f\x89%\
+\xc4\xdd\xe81\xd1D@?\x8f\x8b\xa2\xc1\xd9\xbb7\x85\
+\x0e\x11\x111B>nn\xf7\xfc\x05\xa2n4ik\
+b\x80xzQ\xb4\xa4D9\x95\x95\x04n\xbfg\xd0\
+G\x8e\xa4\xd8!\x22\x22F\xc8\x1d\xe6\x02\xfauD\xdd\
+h\x92'\xfe%\xe8\x01R&\xbe\xefe\xd0\xaeXA\
+\xe8\xf6\xeb\xa4I\x14;DD\xc4\x08y\x9a\xb9\x80>\
+\x93\xa8\x1b]\xee11H\xee\xf32h\xa7L!p\
+\xfb\xddA?\xe7\x1c\x8a\x1d\x22\x22b\x84<\xcc\x5c@\
+oG\xcc\x8d.\xabL\x0c\x92\xf5^\x06\xed\xc0\x81\x84\
+n\xbf\xaeZE\xb1CDD\x8c\x88\x8f\x98\x0b\xe7\x7f\
+pOJ@D\x19eb\xa0\x9c\xe8e\xe0\xea\x96\x81\
+\x84n\x7fVT\xa8da!E\x0f\x11\x111\x02\xae\
+3\x17\xd0\x7fL\xc4\x8d6u\xc5/\x83\x1e(\xf2\x1f\
+\xa2\xf6z\x19\xbc\xeb\xd6\x11\xba\xe9\x85\x8e\x88\x88\x18K\
+G\x9a\x0b\xe8\x17\x10q\xa3\xcf\xcb&\x06\xcb=^\x06\
+\xef\xb4i\x04n\xbf\xe7\xd0\xbbv\xa5\xe8!\x22\x22Z\
+\xeen\xb7q\x86\xa1\x80~\x0c\xf16\xfa\x5cob\xb0\
+\xac\xf02\x80\xfb\xf6%t\xfbu\xd80\x0a\x1f\x22\x22\
+\xa2\xe5\xdea.\x9c\xffC,\x22\xdeF\x9f9&\x06\
+\xcc0/\x03\xb8A\x03\x02\xb7_O?\x9d\xc2\x87\x88\
+\x88h\xb9\xe7\x99\x0b\xe8w\x13m\xe3\xc1\x91&\x06L\
+\xa9\xfb\xf3\xce\xa1\x06pj\xf5jB\xb7\x1f/\xba\x88\
+\xc2\x87\x88\x88h\xb9\x1d8\x7f\x0e>\xd1mxR&\
+\x06\xcd\x8f\xbd\x0c\xe2\xc9\x93\x09\xdd~\xdc\xbe]9y\
+y\x14?DDDK}\xdc\x5c8\xd7v&\xda\xc6\
+\x87\x1f\x98\x184\xf3\xbc\x0c\xe4\xce\x9d\x09\xddtrA\
+DD\x8c\x8d\xab\xcc\x85\xf3$\xfd\xcf\xe3\xc5\x0c\x13\x03\
+\xa7\x8d\x97\x81\x5cT\x94\xde\x15&x{6\xd9\xbd;\
+\x05\x10\x11\x11\xd1R{\x99\x0b\xe8\xd7\x13i\xe3EK\
+S?\xbd\xfc\xc6\xcb`\x9e7\x8f\xe0\xed\xc7\xb1c)\
+\x80\x88\x88\x88\x16\xfa\xb2X`.\xa0\x9fA\xa4\x8d\x1f\
+o\x9b\x18<\xeb\xbc\x0c\xe8!C\x08\xdd~<\xfbl\
+\x8a \x22\x22\xa2\x85n7\x17\xce\xf5\xc3\x93\xe5\xc4\xd9\
+\xf8\xf1?\xb6\xb4[L\xd5\xabG\xe8\xf6\xe3\xc6\x8d\x14\
+ADDD\x0b\x1dd.\xa0?G\x94\x8d'\x93M\
+\x0c\xa0\xea\xe2\x9b^\x06\xf5\xf2\xe5\x04o?\xd6\xafO\
+!DDD\xb4\xc8\xdf\x89\x85\xe6\x02\xfaJ\xa2l<\
+\xa9'~nb\x10Uz\x19\xd8\xc7\x1fO\xe8\xf6a\
+\xaagO\x8a!\x22\x22\xa2E\xae5\xdb^\xb1\x0bQ\
+6\xbe<ab\x10\x8d\xf60\xa8\x93\x8d\x1a\x11\xbc\xfd\
+8i\x12\xc5\x10\x11\x11\xd1\x22{\x9a\x0b\xe7\xef\x12a\
+\xe3\xcd\xc5&\x06R\xb1\xf8\xba\x97\xc1}\xc9%\x04o\
+\xaf;\xe8K\x96P\x0c\x11\x11\x11-\xf1I1\xcf\x5c\
+@\xdfJ\x84\x8d7G\x99\xfa)\xe6j\x8e\xb9d\xd7\
+]\xbbT\xaaZ5\x8a\x22\x22\x22\xa2\x05.7{\xbc\
+e\x08\x116\xde\xe8\xd7\xa7\xde71\x98\xc6z\x19\xe0\
+M\x9a\x10\xbc\xfd\xd8\xba5E\x11\x11\x11\xd1\x02;\x9a\
+\x0b\xe7\xff+\x16\x12a\xe3\xcf\xd5&\x06T\x0d\xf1m\
+/g\xd19\xe6\xe2\xddQ\xa3(\x8a\x88\x88\x88!\xfb\
+\x0b\xb3\xbb\xe7\xdf!\xba\xe6\x06cM\x0d\xaa\xab\xbc\x0c\
+\xf4a\xc3\x08\xde^]\xb0\x80\xc2\x88\x88\x88\x18\xb2g\
+\x9a\x0d\xe8#\x89\xae\xb9A\x89\xf8w\x13\x83\xea8/\
+\x03\xbdf\xcd}\xe7\xab\x09\xe0\x1e\xdc\xb1C9EE\
+\x14GDD\xc4\x90\xd4\xa7\x03j\x99\x0b\xe7\x7f\xe4x\
+Knq\xb3\x89\x81\xa5\x9b\xf7\xff\xd6\xcb\x80\x9f;\x97\
+\xf0\xed\xd56m(\x90\x88\x88\x88!\xb9\xcb\xec\xee\xf9\
+\x15D\xd6\xdc\xe2$S\x83k\xb9\x97\x01\xdf\xbd;\xc1\
+\xdb\xab'\x9c@\x81DDD\x0c\xc9^f\x03z_\
+\x22knQC\xfc\x87\x89\xc1\xd5\xd1\xcb\x80\xd7\xc76\
+.\xbf\x9c\xf0\xed\xc5\xf3\xce\xa3@\x22\x22\x22\x86\xe0#\
+\x09\xa3\xbd\xcf\xf7\x88\xf9D\xd6\xdc\xe3\x87\xa6\xbe\x01\xde\
+\xe3e\xe0O\x9eL\xf8\xf6\xf2`\x11\xe7\xd0\x11\x11\x11\
+Cq\x9a\xd9\xdd\xf3\x8dD\xd5\xdcd\xa2\xa9A\xf6-\
+/\x03\xff\xb0\xc3\x08\xe0^\xed\xd4\x89B\x89\x88\x88h\
+\xd07\xc4\x9af\x03zw\xa2*\xc7\x5c\x02\xb5\xb6\xf8\
+\x8e\x97\x09\xb0h\x11\xe1\xdb\x8b\x93&Q,\x11\x11\x11\
+\x0d\xba\xcel8\xff\x1d15\xb7\xb9\xc9\xd4`\xdb\xee\
+e\x02\xf4\xeaE\xf8\xf6\xe2\x9a5\x14KDDDC\
+&\xc5\xd6f\x03\xfa\x02\x22jns\x82\xa9\xc1v\xb4\
+\x97\x09PX\xa8R\x9b6\x11\xc0\xbd\xd8\xa8\x11E\x13\
+\x11\x11\xd1\x80?4\x1b\xce?\x11\xeb\x13Qs\x1b\xdd\
+\xfc>e\xd5e\xd1\xf1\xe3\x09\xdf^\x1c2\x84\xa2\x89\
+\x88\x88h\xc0af\x03\xfa\xcd\xc4S\xd0l15\xe8\
+N\xf72\x11\xf4\xcepe%\x01\xfcP\xce\x9bG\xd1\
+DDD\x0c\xd8\xfb\xcd\xb6V\xd4\x0e'\x9a\x82\xa6\xab\
+\xa9AWC|\xcd\xcb\x84\x98=\x9b\x00~\xa8v\x8b\
+;w*\xa7zu\x8a'\x22\x22b\x80\x9el6\x9c\
+\xbf\x97\xa0\xf79\xec\xc7s\xa6\x06\xdfj/\x13\xa2U\
++B\xb8\x07\x93\xfa\x05V\x8a'\x22\x22b \xfeF\
+,4\x1b\xd0W\x12Ia\x7f\xce75\xf8\x8e\x10\xf7\
+x\x99\x18\x8b\x17\x13\xc2\x0f\xe5\x8c\x19\x14PDD\xc4\
+\x80\x9ci6\x9c\xffKlL$\x85\xfdi$~f\
+j\x10^\xe5\xa5\xa3\x8b\xde\x1d&\x84\x1f\xdc-[\x94\
+SXH\x11EDD\xcc\xb2/\x8a%f\x03\xfa\xf7\
+\x89\xa3p ~jj\x10v\xf729\x0a\x0a\x94s\
+\xd9e\x84\xf0C\x1ds\xe9\xd0\x81B\x8a\x88\x88\x98e\
+\x17\x9a\x0d\xe7\xda>DQ8\x10\xa3L\x0e\xc4;\xbc\
+L\x90\xc1\x83\x09\xe1\x87r\xf2d\x0a)\x22\x22b\x16\
+\xd5\x0d-j\x99\x0d\xe7O\x11C\xe1\x9b\xd0\xb7\x86\xdf\
+25\x18\x8f\xf70AR\xd5\xaa\xf1p\xd1\xa1\xba\xb9\
+\xac_\xaf\x9c\xbc<\x0a*\x22\x22btw\xcf\xa7\x12\
+C\xe1`\x5cdj0\x16\x88\x8fy9\x8b~\xdcq\
+\x04\xf1C\xd9\xae\x1d\x05\x15\x11\x111\x0b\xbe,\xd64\
+\x1b\xce\xff \x16\x13A\xe1`4H\xa4\x9f\x9852\
+(O\xf52Y\xd8E?\xf4.:\xc7\x5c\x10\x11\x11\
+\xb3\xe2|\xf3\xbb\xe7k\x89\x9f\xe0\x85\x1bM\x0d\xca\x22\
+\xf1I/\x13\xe6\xf8\xe3\x09\xe2\x07S\x7f\x81\xd1\x97j\
+)\xac\x88\x88\x88U\xea\xdcRj6\x9c\xebM\xd1&\
+DO\xf0B?\x93\xdf\x1c\xa7z\x994\xa5\xa5*\xb9\
+u+A\xfc`v\xecHqEDD\xac\x82s\xcd\
+\xef\x9e_M\xec\x04?<j\xdd.\xfa\xa8Q\x84\xf0\
+\x83\xb5[\x9c:\x95\xe2\x8a\x88\x88\x98\xa1O\xb8\x99\xc4\
+`8\xd7\xef\xcf\xb4$r\x82\x1fN5\xf9\x0dr\x86\
+\xd7\xb3\xe8\x1b7\x12\xc6\xbfI\xfd\x0bCQ\x11E\x16\
+\x11\x111\x03O5\xbf{~+q\x13\xfcR(\xee\
+65H\x8b\xc5\xe7\xbcL :\xba\x1c\xdc\xae])\
+\xb2\x88\x88\x88>\xbd\xdf\xed.g8\xa0\xf7 nB\
+&\x9cor\xa0N\xf62\x89\xf4\xb3\xf6k\xd6\x10\xc4\
+\xbf\xc9\xb3\xce\xa2\xd0\x22\x22\x22\xfa\xb4\xbf\xf9p\xfe\x0b\
+b&dJm\xf1C\x93g\xd1\x1f\xf72\x91\xfa\xf6\
+%\x88\x7fS\xbb\xc5\x8a\x0a\x95\xacY\x93b\x8b\x88\x88\
+\xe8\xd1[\xcd\x87s\xedq\xc4L\xa8\x0a;L\x0e\xd8\
+\x09^&\x93n'\xb8b\x05\x81\xfc\x9b\x1c<\x98\x82\
+\x8b\x88\x88\xe8\xc1\xa4\xd8\xd5|8\x7f\x8ax\x09U\xa5\
+\x95{\xcb\xd8\xc8\xa0\xcdw\xcf\x81\x1djB\xa5:u\
+\x22\x88\x7f\x93\x17_L\xd1EDD\xf4\xe0\x15\xe1\xec\
+\x9e\x9f@\xbc\x84lp\x83\xc9\x81;\xd2\xe3\xa4J\x9d\
+{.a\xfc\x9b<\xec0\x0a/\x22\x22\xe2A|K\
+lb>\x9c?I\xac\x84l\xd1A\xfc\xc2\xe4\x00\xbe\
+\xc3\xcb\xe4j\xdcx\xdf\x99k\x02\xf9\x01<\xf9d\x8a\
+/\x22\x22\xe2A<?\x9c\xdd\xf3Q\xc4J\xc8&\xdf\
+79\x80;\x89{\xbdL\xb0)S\x08\xe3\x07\xba,\
+\xbaaC\xfa\xac>\x05\x18\x11\x11\xf1k>\x9a0\xfe\
+(\x91\xf6A\xe2$d\x9b\x8e\xa6w\xd1\xb7{9\xe6\
+R\xbb\xb6r\xb6m#\x94\x1f\xe8e\xd1\xa3\x8e\xa2\x08\
+#\x22\x22\x1e\xc0\x11\xe1\xec\x9e\x0f%NB\x10\xdca\
+r \xebsao{\x99hC\x87\x12\xc8\x0f\xe4\x82\
+\x05\x14aDDD;\xda*>L\x8c\x84\xa08J\
+\xfc\xd2\xe4\x80>\xdf\xcbd\xcb\xcfOw.!\x94\x7f\
+\xd5\xcaJ\x95l\xd4\x88b\x8c\x88\x88\xb8\xdf\xc5\xd0\xc3\
+\xcd\x87\xf3/\xdc\x0c\x05\x10\x18w\x9b\x1c\xd45\xc4\xe7\
+\xbcL\xbaV\xad\xf6\x05R\x82\xf9\xff;\x8b>~<\
+\x05\x19\x11\x11\xd1\xf5\x82pv\xcfo#>B\xd0\xf4\
+0\xbd\x8b>\xc9\xeb\xc4\x9b:\x95P\xfe\xff\xdd\xb4I\
+%\x0b\x0b)\xca\x88\x88\x98\xf3>,V3\x1f\xce?\
+\x15\xdb\x12\x1f\xc1\x047\x99\xfe\xf6y\x9b\x97\xc9W\xab\
+\x96r\xb6l!\x94\xff\x7f\xbbw\xa70#\x22bN\
+\xab;\xc3u\x0fg\xf7|;\xb1\x11L\xd1\xd6\xfdF\
+hl\x80\xb7\x13w{\x99\x84\x83\x06\x11\xc8\xff\xbf\xe7\
+\x9dGqFD\xc4\x9cvc8\xe1\xfc\xcfb]b\
+#\x98\xe4;\xa6\x07\xfae^&a^\x9er\xe6\xcf\
+'\x94\xf3\xb2(\x22\x22\xe2>_\x10\xeb\x86\x13\xd0\x97\
+\x13\x17\xc14-\xc4\x7f\x99\x1c\xe8\xb5\xc4\xdfy\x99\x8c\
+\x8d\x1a\xa9\xd4\x8e\x1d\x84\xf2\xfd=\xe3\x0c\x8a4\x22\x22\
+\xe6\xa4'\x86\x13\xce\xf7\x8a\xa5\xc4E\x08\x83]\xa6\x07\
+\xfc)^'\xe4\x88\x11\x84\xf2\xfd\xbb\xb9\xe8/,\xa5\
+\xa5\x14jDD\xcc)\xaf\x0e'\x9ckO'&B\
+X4\x12?0=\xe8o\xf60!\x93\xba7\xfa\x92\
+%\x84\xf3\xfdC\xba\xfe\xd2B\xb1FD\xc4\x1c\xf1%\
+\xb1A8\xe1\xfc\x111\x8f\x98\x08a\xb2\xd8\xf4\xc0?\
+L|\xc3\xcb\xe4l\xde\x5c\xa5**\x08\xe7\xffv\xf5\
+\xea\xf4\x19}\x8a6\x22\x22\xe6\x80#\xc2\x09\xe7\xba\x89\
+\xc6\x91\xc4C\x08\x9b\xea\xe2{\xa6'\xc0\x5c\xaf\x13t\
+\xcc\x18\x82\xf9\xfe\xbb\xe8]\xbbR\xb4\x11\x111\xf6^\
+\x1f\xde\xd1\x96+\x89\x86`\x0b\x93MO\x80B\xf1^\
+\xafG].\xba\x88p\xee\x9a\x5c\xb8\x90\xc2\x8d\x88\x88\
+\xb1\xf6E\xb1Qxm\x15\xeb\x13\x0b\xc1\x16\xf49\xab\
+'MO\x84.\xe2\x1e/\x93\xb5qc\xe5\xd0\xd5\xe5\
+\xbf\xb6hA\x01GD\xc4\xd8:*\xbc\xdd\xf3yD\
+B\xb0\x8d\xfe\xe2\x97\xa6'\xc3R\xaf\x13v\xf8p\x82\
+\xf9\xbf\x8f\xb9\xcc\x9cI\x01GD\xc4X\xba-\xbcp\
+\xfe\x94X@\x1c\x04\x1b\xb9\xd9\xf4\x84(\x12\x7f\xe5\xf1\
+\xa8K\xea\xc2\x0b\x09\xe8\xda]\xbb\x94S\xa7\x0e\x85\x1c\
+\x11\x11c\xe5\x13bY8\xe1\xfcs\xb1;1\x10l\
+\xa5\x5c\xfc\xab\xe9\x89\xd1F|\xc7\xcb\xe4\xad[W9\
+\x9b7\x13\xd0\xb5\x13&P\xcc\x11\x1116\xee\x16\xbb\
+\x86\xb7{\xbe\x99\x08\x08\xb6\xb38\x8c\xc91\xdf\xeb$\
+>\xfah\xc2\xb9\xbe,\xbau\xabrJJ(\xea\x88\
+\x88\x18\x0b/\x0e/\x9c\xeb\x17Ck\x12\xff\xc0v\xf4\
+\xf9\xab\xdf\x9a\x9e \xf9\xe2\x8f=N\xe2}g\xb0\x09\
+\xe9\xca\x19:\x94\xa2\x8e\x88\x88\x91\xf7.\xb7\xbb[H\
+\x01\xfdx\xa2\x1fD\x85\xa1aL\x92\xd6\xe2\xdb^&\
+sq\xb1J\xad\x5c\xc9e\xd1\x0d\x1b\x94STDq\
+GD\xc4\xc8\xaa\x1f.l\x19^8\xff\x19\x91\x0f\xa2\
+\xc6\x0f\xc3\x98,g{\x9d\xd4\xadZ\xf1\xca\xa8>\xea\
+\xd2\xaf\x1f\x05\x1e\x11\x11#\xeb\xc4\xf0\xc2\xf9\x07b3\
+\xe2\x1eD\x8d\xa6\xe2\x87a\x1cu\xb9\xcd\xeb\xc4\x1e2\
+\x84\x80\xbev\xadr\x0a\x0b)\xf2\x88\x88\x189w\x86\
+\x17\xce\xb5g\x11\xf5 \xaa,\x0ac\xd24\x11_\xf1\
+:\xc1\xa7M\xe3,z\xdf\xbe\x14zDD\x8c\x94\x8f\
+\x8a\xa5\xe1\x85\xf3\xfb\x12\xe9G\x1a\x01\x22I\xa1\xf8L\
+\x18\x93g\xb4\xd7I^\x5c\xac\x9c\xe5\xcbs\xfb,\xfa\
+\xea\xd5\xfb\xfa\xc4S\xf0\x11\x111\x0a\xea\xfbfG\x86\
+\x17\xce\xff.\xb6$\xe2A\xd4\xe9 ~\x12\xc6$Z\
+\xefu\xb2\x97\x97+G\xb7\x1d\xcc\xe5]\xf4c\x8e\xa1\
+\xe8#\x22b$\x1c\x1b\xee\xd1\x96\xd9D;\x88\x0b\xeb\
+\xc2\x98D5\xc4\x87\xbdN\xf8\x1e=r;\xa0\xeb_\
+\x11\xf2\xf2(\xfc\x88\x88h\xb5\x97\x87\x1b\xce\x1f\x14\xf3\
+\x89u\x10\x17\xaa\x8b\xaf\x851\x99:xm\xbd\xa8\x9d\
+4)\xb7Cz\xb7n\x14\x7fDD\xb4\xd6{\xc5\xe2\
+p\x8f\xb6\xb4&\xd2A\xdc\x18(~\x11\xc6\xa4:\xd5\
+\xeb\xe4/(P\xce\xa2E\xb9\x1b\xd0\x97.e\x17\x1d\
+\x11\x11\xad\xf4U\xb1Y\xb8\xbb\xe7\xb3\x88r\x10W\xae\
+\x08kb\xed\xf4Z\x04\xea\xd6U\xa9M\x9br\xf7\xc2\
+h\xa7N,\x04\x88\x88h\x95Iqx\xb8\xe1\xfc\xa7\
+D8\x883e\xe2\xdba\x9dG\x7f\xd0k1h\xdf\
+^9\xb9\xfa\x88\xd1\xe2\xc5,\x06\x88\x88h\x95\x8b\xc3\
+\x0d\xe7\xbf\x17\x1b\x12\xe1 \xee\x0c\x0e\xeb\xa8K{?\
+\xe7\xd1\xc7\x8c\xc9\xdd]\xf46mX\x10\x10\x11\xd1\x0a\
+\xbf\x9bH?B\x18b@?\x91\xe8\x06\xb9\xc2\xce\xb0\
+&\xda\x04\xafE!/O%\xa7O\xcf\xcd\x90\xbe`\
+\x01\x8b\x02\x22\x22\x86\xeeCb\xcdp\xc3\xf9\xd5D6\
+\xc8%j\x88o\x845\xe1\xd6x-\x0e\xd5\xaa)\xe7\
+\xe2\x8bss\x17\xbdeK\x16\x07DD\x0c\xcd\xd7\xc4\
+\xd6\xe1\x86\xf3\xb7\xc4R\x22\x1b\xe4\x1a\xfd\xc3:\xeaR\
+$\xfe\xc4k\x91\xa8UK9\x97]\x96{!\xfd\x82\
+\x0bX \x10\x111\x14\xf7\x8a\xc7\x85\x1b\xce\xff%\xf6\
+$\xaaA\xae\xb2)\xac\xc9\xd7H|\xdek\xb18\xfc\
+p\xe5l\xdfNG\x17DDD\x03.\x087\x9ck\
+\x17\x13\xd1 \x97\xd1\xafq=\x10\xd6\x04\xec$\xbe\xe3\
+\xb5`\xe8G|*+s+\xa4/[F_tD\
+D4\xea\xc6\xf0\xc3\xf9O\xc4<\x22\x1a\xe4:\xfaU\
+\xae\x0f\xc3\x9a\x883|\x14\x8d\xd4\xc8\x91\xb9w\xd4\xa5\
+G\x0f\x16\x0cDD4\xa2>~Z-\xdcp.\xff\
+\x18\x89FD3\x804g\x86\xf9my\x87\x9f\x90~\
+\xc6\x19\xb9\x15\xd0W\xaeL\xbf\xb0\xca\xc2\x81\x88\x88\x01\
+\xfa\xb8X/\xdcp\xae\xef\xc5\x0d#\x92\x01|\x95\x9b\
+\xc2\x9a\x94\xfa\xdb\xfaO\xbd\x16\x11\x1dV\xcf??\xb7\
+B\xfa\x80\x01,\x1e\x88\x88\x18\x98\xaf\x84\xdf\xb1E\xbb\
+\x9e(\x06\xf0u\xea\x88\xef\x8551\xeb\x8bOz-\
+&\xa5\xa5*\xb5zu\xee\x5c\x16]\xbf^\xa5t\xcb\
+I\x16\x11DD\xcc\xb2\xbb\xc5\xfe\xe1\x87\xf3\x87\xc4B\
+\xa2\x18\xc0\x81\x19 ~\x1e\xd6\x04\xd5/\x8d\xbe\xee\xa3\
+\xb3Kr\xeb\xd6\xdc\xd9E\x1f:\x94\x85\x04\x11\x11\xb3\
+\xee\xa9\xe1\x87\xf3\x94\xd8\x84\x08\x06pp\x96\x879Q\
+\xfb\xb8\xdf\xe6=\x15\x966m\x94\xb3cGn\x04\xf4\
+\xcb/WN\x8d\x1a,&\x88\x88\x985\x17\x85\x1f\xce\
+u\xbf\xf3\xdeD/\x80CS \xfe:\xcc\x09;\xcb\
+\xcf\xa5\xd1\xae]U\xaa\xa2\x227B\xfa\x981,(\
+\x88\x88\x98\x15\xaf\x11\xf3\xc3\x0f\xe8\x17\x11\xbb\x00\xbc\xd3\
+P\xdc\x1b\xe6\xa4]\xe3\xa7\xd0\xe8K\x94\xb9\x10\xd0\xb7\
+oW\xc9\x9a5YX\x10\x11\xb1J\xde\x96H\xbf\xea\
+\x1dr8\xbf\x91\xb8\x05\xe0\x9f\xe3\x12\xe9\x96G\xa1L\
+\x5c]8n\xf1SpN8!7B\xfa)\xa7\xb0\
+\xb8 \x22b\xc6>\x95H\xbf\xe6\x1dr8\x7fS\xac\
+M\xd4\x02\xc8\x8c\xd5aN`\x99\xb9\xea\x11?\x85G\
+\x87\xd7\xb8\x07\xf4\x9d;\x95\xd3\xa0\x01\x8b\x0c\x22\x22\xfa\
+\xf65\xb1C\xf8\xe1\x5c?\x8e\xd8\x89\x88\x05P\xb5\xf3\
+\xe8\xf7\x879\x91[\xba\xfdY\xbd\x14\x9ed~\xber\
+\xe6\xce\x8d\x7fH\x9f:\x95\x85\x06\x11\x11}\xf9\x8e\xd8\
+;\xfcp\xfe\xa58\x9ex\x05Pu\x1a$B\xec\x8f\
+\xae\xed'\xbe\xeb\xb5\x08\x15\x16*g\xfe\xfcx\x07\xf4\
+\xcaJ\xe5\xb4j\xc5\x82\x83\x88\x88\x9e\xdc#\x0e\x0f?\
+\x9c+\xf7\x97y\x00\xc8\x12=\xc4\x8f\xc3\x9c\xd4'\x88\
+\xef{-F\xd5\xab+\xe7\xe2\x8b\xe3\x1d\xd2\x17/V\
+N^\x1e\x0b\x0f\x22\x22\x1e\xfc\xd7eq\x92\x1d\xe1\xfc\
+\x0e1\x9fH\x05\x90]&\x87=\xb9Ov\x0b\x8d\xa7\
+\xa2T\xbb\xb6r\xd6\xac\x89uHOv\xef\xce\xe2\x83\
+\x88\x88\x07u\x9a\x1d\xe1\xfc\x05\xb1\x8c(\x05\x10\x0cW\
+\x85=\xc9\x17\xf9\xe9\x91\xde\xa4\x89Jm\xda\x14\xdf\x90\
+\xbejU\xfaH\x0f\x0b\x10\x22\x22\x1e\xc0\xe5v\x84\xf3\
+\xbf\x88\xed\x89P\x00\xc1Q(>\x14\xf6d_\xe5\xa7\
+@\x95\x97\xab\xd4\xc6\x8d\xf1\x0d\xe9#F\xb0\x08!\x22\
+\xe2\xd7\x5ccG8\xd7\xc7c\xfb\x13\x9f\x00\x82\xe7p\
+\xf1\x0faN\xf8\x02\xf1:?\x85\xea\xb0\xc3\x94\xb3y\
+s<\x8f\xb9l\xdd\xaa\x9cZ\xb5X\x8c\x10\x11\xf1?\
+^/\x16\xda\x11\xd0g\x10\x9b\x00\xcc1D\xfcW\x98\
+\x93\xbeX\xfc\x89\x9f\x82u\xc4\x11\xca\xb9\xfc\xf2x\xee\
+\xa2O\x9e\xcc\x82\x84\x88\x88\xfb\xfc\xb1\xbbFZ\x10\xce\
+7\x10\x97\x00\xcc3)\x91\xeeg\x1a\xda\xe4/\x13\xef\
+\xf5S\xb8Z\xb6T\xce\xb6m\xf1\x0b\xe8\x15\x15\xcai\
+\xda\x94\x85\x09\x111\xc7\xbdS,\xb1#\x9c\x7fO\xcc\
+#*\x01\x84\xc3\xba\xb0\x8b@}\xf1Q?\x05\xac}\
+{\x95\xda\xb1#~!}\xc1\x02\x16'D\xc4\x1c\xf6\
+!\xb1\xae\x1d\xe1\xfc\xd7b5\x22\x12@x\xe8\x97F\
+\xef\x0c\xbb\x18\xb4\x11_\xf6S\xc8:vT\xa9\x9d;\
+\xe3\x17\xd2;wf\x91BD\xccA\x9f\x15\x9b\xd9\x11\
+\xce\xdf\x13\x1b\x13\x8f\x00\xc2\xa7D\xfcM\xd8E\xa1\xab\
+\xf8\x86\x9f\x82\xd6\xad\x9brv\xed\x8aU@O\xadX\
+\xa1\x9c\x82\x02\x16+D\xc4\x1cR\x16`u\x18\xed\x14\
+\x01\xe0\x004\x17\x7f\x1fvq8.\x91~\xce\xd8s\
+a;\xfah\x95\xd2\xe7\xb7\xe3\xb4\x8b>x0\x0b\x16\
+\x22b\x8e\xf8\x82\xd8\xd6\x8ep\xfe\x998\x8a8\x04`\
+\x1fG\x8b\xff\x08\xbbH\x8c\xf2\x19\xd2S\x03\x07*\xa7\
+\xb22>\x01]\xf7|/)a\xe1BD\x8c\xb9\xcf\
+\x8b\xad\xec\x08\xe7\xb4S\x04\xb0\x9c\x09\xe2\x17a\x17\x8a\
+\x13\xc5\xf7\xfd\x14\xbac\x8eIwB\x89\xcbQ\x97\xd3\
+Nc\xf1BD\x8c\xb1/\x89\x1d\xed\x09\xe7\xb4S\x04\
+\x88\x00\xcbm(\x18\xa7\x8a{\xfd\x14\xbc\x1e=\xe2s\
+\xdcE\xff\x22\xd0\xa2\x05\x8b\x18\x22b\x0c}E<\xd2\
+\x9ep\xfe\xc3\x04\xed\x14\x01\x22\x81\x9e\xa8\xb7\xdaP8\
+\xe6\xf9-|q\x0a\xe9K\x96('/\x8f\xc5\x0c\x11\
+1F\xbe)\xf6\xb4'\x9c?%\x96\x11{\x00\xa2C\
+u\xf1q\x1b\x0a\xc8\x1c\x9f\xc5/\xd9\xbd{|B\xfa\
+\x80\x01,h\x88\x881Qw*\xebaO8\x7f^\
+\xacM\xdc\x01\x88\x1eM\xc5wm($\xcb\xfd\x16\xc2\
+\xa3\x8f\x8eG\x0b\xc6\xcd\x9bU\xb2\xac\x8c\x85\x0d\x111\
+\xe2\xcab\xaa\x06\xd9\x13\xce\xdf\x17\x9b\x11s\x00\xa2K\
++1eCA\xb9\xc4\xefN\xfaQG\xc5#\xa4\x9f\
+q\x06\x8b\x1b\x22b\x84}G\x1chO8\xd7kz\
+k\xe2\x0d@\xf4\xe9\x22\xfe5\xec\xa2\x92'\xae\xf7[\
+\x18;w\x8e\xfe\x8b\xa3\xfa\xc2h\xcb\x96,r\x88\x88\
+\x11\xdd9\x1flO8\xd7kyWb\x0d@|8\
+^\xfc4\xec\xe2R ^\xe1\xb7@v\xea\xa4\x9c\x1d\
+;\xa2\x1d\xd2\x97.UN~>\x8b\x1d\x22b\x84\xd4\
+oz\x8c\xb5'\x9c\xffK\x1cA\x9c\x01\x88\x1f\xa7&\
+,\xe8\x91\x9e\x9fAHO\xc5!\xa4\xf3\xc2(\x22b\
+\xa4v\xce\x8f\xb5'\x9c\xebWB\xc7\x12c\x00\xe2\xcb\
+E6\x14\x9b\x22\xf1\x1a\xbf!\xbdk\xd7h\x1fw\xd9\
+\xbcY9\x5c\x18ED\xb4\xde\xdd\x89\xf4\xab\xd8\x09{\
+<\x87\xf8\x02\x10\x7f6\xd8Pp\xf4q\x97\xed~C\
+z\x9b6\xca\xd9\xb2%\xba!\xfd\xcc3Y\xfc\x10\x11\
+-\xefs\xde\xd7\xaep\xbe\x94\xd8\x02\x90\x1b\xe8\x87\x8c\
+\xae\xb5\xa1\xf0\xe8\x8b\xa3\x1b\xfc\x16\xd0#\x8eP\xa9M\
+\x9b\xa2{a\xb4m[\x16ADDK\xc3y\x1f\xbb\
+\xc2\xf9\x16\x22\x0b@nQ \xdenKH\xf7\xdd\xdd\
+\xa5qc\xe5\xac[\x17\xcd\x90\xbe|\xb9r\x0a\x0aX\
+\x0c\x11\x11-{\x84\xa8\x97]\xe1\xfc:wC\x0d\x00\
+r\x8c\x9a\xe236\x14\xa2\xfc\x0c\x8e\xbb8\xe5\xe5\xd1\
+\x0d\xe9C\x87\xb2 \x22\x22Z\xe2[b\x7f\xbb\xc2\xf9\
+\xbdb5b\x0a@\xeeR_|\xc5\x96\x9d\xf4\xb5~\
+\xcf\xa4\xd7\xae\xad\x92\x97\x5c\x12\xb9\x80\x9e\xd2\x1di\x1a\
+6daDD\x0cYY\x00UW\xbb\xc2\xf9\xcf\x09\
+\xe7\x00\xa0\xd1\xaf\x8d:\xb6\x84\xf4M~\x0bli\xa9\
+r.\xbc0z\xbb\xe8\xe7\x9f\xaf\x9c\xbc<\x16HD\
+\xc4\x90|]\xeciW8\x7fL,#\x96\x00\xc0\xbf\
+i#&m)RK\xfd\x16\xda\x92\x12\xe5,Z\x14\
+\xbd\x9d\xf4>}X$\x11\x11C\xf0%\xb1\x93]\xe1\
+\xfc!\xb1\x06q\x04\x00\xfe?G\x89\x7f\x89\xecq\x97\
+j\xd5\x94s\xee\xb9\xd1\xeb\x8d^\xb3&\x8b%\x22\xa2\
+A_\x15\xbb\xd9\x15\xce\x9f\x17\xeb\x12C\x00\xe0\x9b\xe8\
+%~`KH_\x95IH\x9f7/R!=9\
+u*\x0b&\x22\xa2\xc1\x9ds\xcb\xce\x9c\xbf(6 \
+~\x00\xc0\xa1\x18(~dK\xf1Z\xee\xb7\x00\xe7\xe7\
++\xe7\xf4\xd3\xa3\xb5\x93\xde\xa5\x0b\x0b'\x22b\xc0>\
+/\xb6\xb3+\x9c\xbf*\x96\x13;\x00\xc0+\xfd\xc4\xbf\
+\xdbR\xc4f\x88I?\x85X_\xbe\x1c=::\xbb\
+\xe8k\xd7*\xa7\xb8\x98\x05\x14\x111 \x1f\x11\x0f\xb3\
++\x9c\xbf$6$n\x00\x80_\x8e\x13?\xb6\xa5\x98\
+M\x11\xf7\xfa-\xcaC\x86\xa4_\xef\x8cBP?\xf9\
+d\x16QD\xc4\x00\xfc\x95\xd8\xc0\xaep\xfe\x0a;\xe7\
+\x00P\x15F\x89\x9f\xd8R\xd4N\x12w\xfb-\xce\xbd\
+z)g\xd7.\xfb\x03\xba\xfe\x22\xd1\xb2%\x8b)\x22\
+b\x16\xbdS\xaceW8\x7f[<\x9cx\x01\x00U\
+e\x82\xf8\x99-\xc5m\xb8\xf8\xae\xdf\x22\xdd\xb9\xb3r\
+\xb6o\xb7?\xa4\xebG\x97\x0a\x0aXT\x11\x11\xb3\xe0\
+Mb\x0d\xbb\xc2\xb9,_\x89f\xc4\x0a\x00\xc8\x16s\
+\xc4/m)r#\xc4\xf7\xfc\x16\xeb\x16-\xd2m\x0d\
+m\x0f\xe9#F\xb0\xb0\x22\x22V\xd1\x1f\x88%v\x85\
+\xf3?\x88\x1d\x89\x13\x00\x90m\xce\xb3\xa8\xd0\xa9\x81\xe2\
+[~\x8bv\x93&\xcaY\xb7\xce\xee\xc7\x8bv\xeeT\
+Ny9\x0b,\x22b\x86^#\x16\xd9\x15\xce\xffW\
+\xecN\x8c\x00\x80\xa0\xb8\xd8\xa6\x90\xae\x9fh~\xcdg\
+\xe1N6j\xa4\x9c5k\xec\xdeE\xd7\x0f.\xe9N\
+4,\xb4\x88\x88\xbe\xdc.\x16\xd8\x15\xce\xff(v#\
+>\x00@\xd0\x5chSH\xef\xe2><\xe1\xebA\xa3\
+:uTR\x9f\xf7\xb6\xb9\xf5b\xbf~,\xb6\x88\x88\
+>\xd4/P\xe7\xd9\x15\xce\x7f/v&6\x00\x80)\
+\x16&,:\x93\xde\xce}\x80\xc2W1/.V\xa9\
+s\xce\xb17\xa4o\xdf\xae\x92\x0d\x1a\xb0\xe8\x22\x22z\
+\xf0B\xbb\x82\xb9V\xfe\xb18s\x0e\x00\xe6\x99%~\
+aK1\xd4\x0fP<\xe6\xb7\xa8\x17\x16\xaa\xe4\xf4\xe9\
+\xf6\x86\xf4\xf3\xce\xe3\xa8\x0b\x22\xe2A\xdc#\x9ej_\
+8\xd7\xad\x14\x9b\x13\x13\x00 ,\xe6\xd9\xb4\x93\xdeD\
+|\xd8o\x81\xd7\x01\xf8\xa4\x93\xec\xbd4:p \x8b\
+0\x22\xe2\x01\xd4\xefb\x9cl_8\x97\xef\x0c\x896\
+\xc4\x03\x00\x08\x9b\xc9\x09\x8b\xfa\xa4\xeb\x07)~\x92I\
+\xb1\x1f:\xd4\xceWGu\xffv\x8e\xba \x22~\xc5\
+\xd7\xc5\xfe\xf6\x85\xf37\xc5#\x88\x05\x00`\x0b\xa7\xda\
+\x14\xd2\xab\x89\xd7fR\xf4{\xf6T\x8ensh[\
+H_\xb0\x80\xa3.\x88\x88\xae/\x8a\xdd\xec\x0b\xe7/\
+\x8b\x8d\x89\x03\x00`\x1b\x93l\x0a\xe9\xba\xcd\xd6\xd6L\
+\x8a\x7f\xfb\xf6\xca\xd9\xba\xd5\xbe\x90\xde\xbf?\x0b3\x22\
+\xe6\xbcO\x8bm\xec\x0b\xe7\xf2\x9d!QN\x0c\x00\x00\
+[\x99(~jK\xd1\xd4\xed\xb6\x96g\xb2\x084m\
+j\xdf\x83F\xf2\xa5!U\xaf\x1e\x0b4\x22\xe6\xac\xf7\
+\x8b\xe5\xf6\x85\xf3\x17\xc4F,\xff\x00`;'\xdb\x14\
+\xd2\xb5\xb3\xf4\x03E~\x17\x83\xfa\xf5\x95\xb3b\x05G\
+]\x10\x11-\xf0.\xb1\x8e}\xe1\xfc\xb7bC\x96}\
+\x00\x88\x0aV\x9dI\xd7N\x17\xf7\xfa]\x14JK\x95\
+\xb3h\x91]!\x9d\x07\x8c\x101\xc7\xbc\xddm\x00`\
+Y8\x7fZl\xc0r\x0f\x00\x1cw\xa9\xa2c\xdd\xb6\
+\x5c\xbe\x16\x87\x92\x92\xf4\xce\xb5-\x01}\xf3f\x95\xaa\
+]\x9bE\x1b\x11s\xc2\x1b\xc4\xea\xf6\x85\xf3\x87\xc5Z\
+,\xf3\x00\x10UN\x12?\xb1\xa9\xb0\x0e\x12\xdf\xf4\xbb\
+H\xe4\xe7\xab\xd4i\xa7\xd9\x13\xd2\xe7\xcf\xe7\xa8\x0b\x22\
+\xc6\xde\x1db\xa1}\xe1\xfc\x1e\xb1\x06\xcb;\x00D\x9d\
+\xe1\xe2?l*\xb0G\x89/e\xf2\xa0\xd1\x981\xf6\
+\x84\xf4^\xbdX\xc0\x111\xb6\xaer/\xfa[\x16\xce\
+o\x17\x8bY\xd6\x01 .\xf4\x17\xffjS\xa1m\xe3\
+\xb6\xeb\xf2\xbdp\xe8`lC\xaft\xfd\x80Q\xc3\x86\
+,\xe4\x88\x18+\xf5\x85\xfey\xf6\x05s\xed\x8db!\
+\xcb9\x00\xc4\x8d\xa3\xc5?\xdaTp\x1b\x8a\xf7f\xda\
++}\xcb\x96\xf0C\xba\xbe\xc0\x9a\x9f\xcf\xa2\x8e\x88\xb1\
+P\xdf\x11\x9ahg8\xff\xb6\x98\xcf2\x0e\x00q\xa5\
+\xa5\xf8\x96M\x85\xb7\xc4\xbd\x84\xe4{1i\xd2D%\
+\xd7\xae\x0d?\xa4\x8f\x18\xc1\xc2\x8e\x88\x91\xf75\xb1\x9f\
+\x9d\xe1|\x09K7\x00\xe4\x02M\x12\xe9W\xd7\xac)\
+\xc0\xfa\xd5\xd1M\x19,(\xfb\xba\xa9,]\x1an@\
+\xdf\xb5K9\xcd\x9b\xb3\xc0#bd}Flo_\
+0\xffR<\x97%\x1b\x00r\x09\xfd\xea\xda\xf3\xb6\xed\
+\x94\x9c\x93\xc9\xe2R\x5c\xac\x9cy\xf3B\x0d\xe9\xa9K\
+/UNQ\x11\x0b=\x22F\xce\x87\xc5\xc3\xed\x0b\xe7\
+_\x88sX\xaa\x01 \x17\xa9#>j[H?U\
+\xdc\xe3\xf7R\x93>\x07>yr\xb8;\xe9\x13'\xb2\
+\xd8#b\xa4\xfc\xa9X\xdb\xbep\xae\xdf\xef\x98\xcc\x12\
+\x0d\x00\xb9\x8c\xee%{\xafm!}\x84\xf8v&m\
+\x18G\x8fVNee8\x01]\xff\xe7\x1ey$\x8b\
+>\x22F\xc2k\xc4j\xf6\x85\xf3\x8f\xc5\x13Y\x9a\x01\
+\x00\xd2!\xfdn\xdbBz\x7f\xf7\xd2\x92\xef\x85\xa7O\
+\x9f\xf4\xb9\xf00B\xfa\xbau\xca)-e\xf1GD\
+\xab\xdd%\x16\xd9\x17\xce?\x12G\xb3$\x03\x00\xfc\x97\
+j\xe2\x8fl\x0b\xe9\x1d\xc5\xe73Y\x80:tP\xce\
+\xd6\xad\xe1\x84\xf4\x193\x08\x00\x88h\xad\xcb\xed|\x80\
+\xe8/b?\x96b\x00\x80\x03\x87\xf4\x9bm\x0b\xe9\xfa\
+\xf2\xd2C\x99,DM\x9b\xa6w\xb4\xc3\x08\xe9\xc7\x1c\
+C\x10@D\xab\xdc+~\xcb\xce6\x8a\xf2\x8f\x96\xe8\
+\xcc\x12\x0c\x00\xf0\xcd\xe8\x87 \xae\xb0\xad\x80\xd7\x15\xef\
+\xcc\xa4\x0dc\x9d:\xcaY\xb6\xcc|@\xdf\xb2E\xa5\
+\xea\xd5#\x14 \xa2\x15\xbe+\x8e\xb13\x9c\xbf&6\
+g\xe9\x05\x00\xf0\xc6J\xdb\x0ayu\xf1\xbb\x99,N\
+%%\xca9\xff|\xf3!}\xc1\x82\xf4\xc5U\xc2\x01\
+\x22\x86\xe8\xabbo;\xc3\xf9\xd3bC\x96[\x00\x00\
+\x7fL\x15?\xb3\xa9\xa0\xebs\x93\x8b2Y\xa4t\x8f\
+\xf2\xd9\xb3\xcd\xf7G\x1f<\x98\x80\x80\x88\xa1\xf9\xa8\xd8\
+\xdc\xcep\xfe\xb3D\xbaA\x01\x00\x00d\xc0\x18\xf1\x9f\
+\xb6\x15\xf7Y\xeey\xca\x8c\xda0\x9a\x0c\xe8;w*\
+\xe7\x88#\x08\x0a\x88h\xdc;\xdd\xe3\x81\x16\x86\xf3k\
+\xc5\x02\x96W\x00\x80\xaa1H\xfc\x9bmE~T&\
+\xbd\xd2\xb5}\xfb\xaaTE\x85\xd1WFS\xd5\xaa\x11\
+\x18\x10\xd1\x987\x885\xec\x0c\xe7\x9b\xc4<\x96U\x00\
+\x80\xec\xd0)\x91\xbeioU\xb1\xef.\xbe\x90\xc9\x02\
+\xd6\xb1\xa3J\x1al\xc3\x98\xd2\xaf\x9c\x12\x1a\x10\xd1\x80\
+\x92\x80U\x81}\xc1\xfcK\xf1<\x96R\x00\x80\xec\xd3\
+R|\xc3\xb6\x90\xde\xdc=g\xe9{!k\xd5J9\
+\x9b7\x9b{e\xb4S'\xc2\x03\x22\x06\xea9v\xee\
+\x9a\xeb\xbbLg\xb2\x84\x02\x00\x04G\xb9\xf8\x9cm\x0b\
+\x80>gyG&\x0bZ\xfd\xfa\xcaY\xb1\xc2LH\
+\xbf\xfcrZ/\x22b \xee\x16O\xb53\x9c\xeb;\
+LcX:\x01\x00\x82\xa7\x9e\xf8\x84m\x0bA\x99\xf8\
+\x83L\x16\xb7\xd2R\xe5\x5cp\x81\x99\x90\xae\xdb=\xe6\
+\xe7\x13(\x101\xab=\xceO\xb07\x9c\x9f\xc8\x92\x09\
+\x00`\x8e\xd2D\xbaM\x96U\x0bB\xa1\xb85\x83\x05\
+.YX\xa8\x9cY\xb3\xcc\x84\xf4\xe1\xc3\x09\x15\x88\x98\
+\x15_\x11{\xd9\x19\xce\xff,\xf6c\xa9\x04\x000\x8f\
+n\x93u\xb5\x85\x0b\x83Z\xa8C\xb7\xdf\xc5.?_\
+%'M\x0a>\xa0\xef\xda\xa5\x9c\x16-\x08\x17\x88X\
+%\x9f\x12\xdb\xda\x19\xcew\x8b\x1dY\x22\x01\x00\xc2\xc5\
+\xbaWG\xb5\x93\xdcs\x99\xbe\x17\xbe\xa1C\xd3\x97:\
+\x83\xec\xea\xb2z\xb5JU\xafN\xc8@\xc4\x8c\xfc\x95\
+Xng8\x7fA<\x8ce\x11\x00\xc0\x0e\xa6\x88\x9f\
+\xda\xb6X\xf4\x10_\xcad\x01<\xfah\xe5\xec\xd8\x11\
+\xecN\xfa\x94)\x04\x0dD\x8cS\x8f\xf3_$\xd2\xc7\
+\x1f\x01\x00\xc0\x22\x86\x89\x1f\xd8\xb6h\xb4\x10\x1f\xcfd\
+!l\xdf^9[\xb6\x04\x1b\xd2{\xf4 p \xa2\
+g7\xda\xd9\xe3\xfc\xdf\xaf\x83\x16\xb2\x0c\x02\x00\xd8I\
+\x97\x84\x85\x0f\x1a5\x12\xef\xc9\xe4\xf2h\xb3f*\xb5\
+qcp\x01}\xd3&\xe5\xd4\xaeM\xf0@\xc4\x83\xd7\
+\x22{{\x9ckW%x\x1d\x14\x00\xc0z\xf4\x83F\
+\xaf\xd9\xb6\x88\xd4p\x7f\x1a\xf6\xbd8\xea\x00\xbdlY\
+p\xe7\xd1/\xbcP9\x05\x05\x84\x10D\x8cZ\x8f\xf3\
+/\xc4\x05,y\x00\x00\xd1A\xf7J\x7f\xcc\xb6\x05E\
+\xff4\xbc!\x93E\xb2\xa4$\xdd\xc3<\xa8\x9d\xf4\xb1\
+c\x09\x22\x88\xf85\xdf\x10\x07\xd9\x19\xce?\x16'\xb0\
+\xd4\x01\x00D\x0f+{\xa5kg\x89{\xfd.\x96\x85\
+\x85*9}z0\x01]w\x8d\xe9\xd8\x91@\x82\x88\
+\xff\xf1wb7;\xc3\xf9\xdf\xc4\xa1,q\x00\x00\xd1\
+E\xf7J\xbf\xc6\xc6\x90>\xc6}\x81\xcf\xd7\xa2\x99\x97\
+\xa7\x9c\xd1\xa3\x83\x09\xe9\xfa\xac;\xe7\xd1\x11Q|D\
+lfg8\x7f_\xec\xcc\xd2\x06\x00\x10}\xf2\xc5m\
+6\x86\xf4c\xc573Y@\x87\x0c\x09\xa6W\xba>\
+F\x93\x9fO@A\xcca\x7fio\x8f\xf3w\xc4\xf6\
+,i\x00\x00\xf1bQ\x22}\xa9\xc8\xaaE\xa7\x8b\xf8\
+|&\x0bi\xb7n*\x15D\xaf\xf4\xe3\x8f'\xa4 \
+\xe6\xa87\x8bev\x86\xf3g\xc5\xc6,c\x00\x00\xf1\
+d\xac\xf8\x91m\x8bO\xb9\xbbk\xe5w1M\xb5l\
+\x99n\x95\x98\xed\xf3\xe8\xba\x07;a\x05\x91\x1e\xe7v\
+x\xa7X\x83\xe5\x0b\x00 \xde\x0c\x14\xffl\xdb\x22T\
+[\xbc=\x93\x85\xb5aC\xe5\xacZ\x95\xdd\x90\xben\
+\x9dr\xca\xca\x08-\x889\xe2r1\xcf\xcep\xfe]\
+\xb1\x88e\x0b\x00 7\xe8\x90H\x9fg\xb4j1\xaa\
+&^\x9b\xc9\x02[\xab\x96r\x96.\xcdnH\x9f7\
+/})\x95\xf0\x82\x18\xeb\x07\x88\xe6\xda\xfb\x00\xd1\xba\
+\x04\x0f\x10\x01\x00\xe4\x1c\xbaW\xfa\xc3\xb6-Jz\x17\
+\xeb\x92L\x16\xdb\xe2\xe2t\xa8\xcefH\x1f6\x8c\x10\
+\x83\x18S\xdf\x11G\xd9\x19\xcc?\x15\xcfd\x89\x02\x00\
+\xc8]\x8a\xc5\x9bl\xdc=\xca\xa4WzRw`9\
+\xfd\xf4\xec\x05\xf4]\xbb\x94\xa3\xcf\xb9\x13f\x10c\xe5\
+Kb\x0f;\xc3\xf9\x07\xe2q,M\x00\x00\xa0\x7fB\
+\xddhcH?\xde\xdd\xe5\xf2\xdd+}\xc2\x84\xec\x85\
+\xf4\x95+U\xaazuB\x0dbL|Zlgg\
+8\xdf+veI\x02\x00\x80\xfd9/aa\x1bF\
+\xbd\xcb\xf5b&\x0b\xf1q\xc7e\xafW\xfa\xcc\x99\x04\
+\x1b\xc4\x18x\x9f\xbd=\xce_\x15[\xb2\x0c\x01\x00\xc0\
+\x81\x18/\xfe\xd3\xb6\xc5\xab\x85\xf8X\x86\xbd\xd2\x9dl\
+\xf5J\xe7<:b\xa4\xd5]\xa2j\xd9\x19\xce\x1fI\
+\xa4\xef\x04\x01\x00\x00|#}\xc4?\xda\xb6\x885\x14\
+\xef\xcedan\xdbV9[\xb6T9\xa0\xa7**\
+\x94\xd3\xba5A\x071\x82^\xe5v\x89\xb20\x9c\xdf\
+\x9aH\xdf\x05\x02\x00\x008$\xad\xc5\xd7m[\xccj\
+\x887d\xf2\xa0Q\xd3\xa6\xe9\xde\xe6Y\xe8\x8f\x9e\xa4\
+?:b\xa4\x5cg\xef\x03DW\x88\x05,7\x00\x00\
+\xe0\x87\xfa\xe2\xa3\xb6-jz\xa1\xdd\x90\xc9B]\xbf\
+\xberV\xac\xa8zH_\xb0@9\xba[\x0c\xc1\x07\
+\xd1\xfa\x1e\xe7\xb3\xec\x0c\xe6_&\xd2w~\x00\x00\x00\
+2\xa2\xa6x\xafm\x0b\x9c\xee\x95\xbe$\x93E\xbb\xb4\
+T9\x8b\x16U=\xa4\x9fp\x02\x01\x08\xd1b\xdf\x17\
+\xcf\xb43\x9c\x7f.\x9e\xc5\xd2\x02\x00\x00UE?3\
+}\xbd\x85\x0b\x9d\x9a\x22\xee\xf1\xbbxW\xabV\xf5\x07\
+\x8dtw\x98\x8e\x1d\x09B\x88<@\xe4\xc7\x8f\xc4\xb1\
+,)\x00\x00\x90M\xacl\xc38@|-\x93\x07\x8d\
+\xce8\xa3j\x97F7mRN\x9d:\x04\x22D\x8b\
+|A\xecfo\x8f\xf3.,#\x00\x00\x10\x04'\x8b\
+\x1f\xdb\xb6\xf8u\x10\x9f\xc9\xe4A\xa3\xd1\xa3\xab\xb6\x93\
+\xbex\xb1r\x0a\x0b\x09F\x88\x16\xa8[\xb16\xb7\xb7\
+\xc7y\x0b\x96\x0f\x00\x00\x08\x92~\xe2\x9fl[\x04\xf5\
+\xe3#\xbf\xcada\x1f5\xaaj\x0f\x1a\x8d\x1dK8\
+B\x0c\xd9{\xdcV\xac\x16\x86sz\x9c\x03\x00\x801\
+\x8e\x14\xdf\xb3m1,\x13\x7f\x98\xc9\x02\xdf\xb3\xa7r\
+v\xed\xca\xfc<\xfaQG\x11\x92\x10C\xf2\xfbn\x0b\
+V\x0b\xc39=\xce\x01\x00\xc08\x8d\xc5gl[\x14\
+\x8b\xc4\x8aL\x16\xfa\xa3\x8fV\xa9\x9d;3\x0b\xe9\x9b\
+7+\xa7^=\xc2\x12\xa2a\xb7\x8a\x85v\x86\xf3\xca\
+\x04=\xce\x01\x00 $J\xc5\x9f\xd9\xb68\xea6\x8c\
+\x8b2y\xd0\xa8M\x9b\xcc_\x1d]\xb6L\xa5t\x87\
+\x18B\x13\xa2\x11\x17\xb9s\xdd\xb2\xfa\xa3/\xd2\xd3\xe3\
+\x1c\x00\x00BG\xef\x12}\xdb\xc2\x1d,59\x836\
+\x8c\xfa\xd5\xd1\xd4\xfa\xf5\x99\x85\xf4\xe9\xd3\x09N\x88\x01\
+\xbbW\x9ci\xe7\xae\xf9\xa7\xe2T\x96\x04\x00\x00\xb0\x85\
+<q\x9d\x8d!}\x8c\xf8n&\xaf\x8e\xaeZ\x95Y\
+H\x1f0\x80\x10\x85\x18\x90\xbb\xc5\x89v\x86\xf3\x0f\xc5\
+\x13X\x0a\x00\x00\xc0F\xceN\xa4_\xca\xb3j\xf1\xec\
+%\xbe\xe27\x0c\xd4\xaa\xb5\xef\xd8\x8a\xef\xfe\xe8\xfa\x1c\
+{\xf3\xe6\x84)\xc4,\xfb\xa68\xd8\xcep\xfe{\xb1\
+\x07\xe5\x1f\x00\x00l\xe68\xf1\x03\xdb\x16\xd1f\xe2#\
+~CAI\x89r.\xb8\xc0wHO\xae]\xab\x9c\
+\xb22B\x15b\x96\xd4\xef\x1c\xb4\xb73\x9c\xffNl\
+J\xd9\x07\x00\x80(\xa0_\xcc\xdbk\xdbbZG\xfc\
+\xa9\xdf3\xe9\xfa\xe2\xe7\xbcy\xfe\x8f\xba,X\xa0\x1c\
+\xfdb)\xe1\x0a\xb1J\xde\xef\xbes`a8\xd7=\
+\xce\xebR\xee\x01\x00 J\xb4\x15\xdf\xb2mQ-u\
+\xfb&\xfb\x09\x08I\x1d\xb4\xa7N\xf5\x1f\xd2\xf5K\xa5\
+\x04,\xc4\x8c\xbdWl`g8\xbfG,\xa3\xcc\x03\
+\x00@\x14i$>e\xdb\xe2\xaa\xfb&_\xe17,\
+\xe4\xe5)g\xc2\x04\xff\x8f\x18u\xeaD\xd0B\xcc\xc0\
+\x1f\x8b\xb5\xec\x0c\xe7\xdf\x13\x8b(\xef\x00\x00\x10e\xf4\
+Kz7\xd9\xb6\xc8f\xd4+]\x87\xf4\xf1\xe3\xfd]\
+\x1a\xdd\xb4I9u\xeb\x12\xb8\x10}\xf8m\xf7\xd11\
+\x0b\xc3\xf9\x12J:\x00\x00\xc4\x05\xdd\x86q\x93\x85\x8b\
+\xad\x9a\xe1\xf6U\xf6\x15 \x86\x0f\xe7\x11#\xc4\x80\x5c\
+i\xe7\x03D\x9f\x893(\xe5\x00\x00\x10G\xf4\x0b{\
+_\xd8\x16\xd2\x8f\xcf\xa0Wzj\xe0\xc0\xf4\x11\x16\xaf\
+!}\xda4\xc2\x17\xe2!<\xc7\xce]\xf3\x7f\x8ac\
+)\xdf\x00\x00\x10g&\xb8\x0b\x9eU\x8bp?\xf15\
+\xbf\x81b\xd0 \x7f!\xbdwoB\x18\xe27\xbc\x0e\
+:\xcd\xcep\xfe'\xb17e\x1b\x00\x00r\x81\xbe\xee\
+\xc2g\xd5b\xdcA|\xceo\xb8\xe8\xd1C9\xbbv\
+y\x0b\xe8\xf2\xff/\xd5\xa6\x0d\x81\x0cq?\xf5\xafW\
+\xa3\xec\x0c\xe7\xbb\xc5\x8e\x94k\x00\x00\xc8%\x8e\x14\xdf\
+\xb3mQ>B|\xd4o\xc8\xe8\xdcY9;vx\
+\xbb4\xbaa\x83J\xd5\xa9C0C\x14_\x17\xfb\xdb\
+\x19\xce\x9f\x17\x9bP\xa6\x01\x00 \x17\xd1\x0b\xe0\xb3\xb6\
+-\xceu\xc5\xbb\xfc\x86\x8dv\xed\x94\xb3m\x9b\xb7\x9d\
+\xf4\xc5\x8bU\xb2\xb0\x90\x80\x869\xed\x8bb7;\xc3\
+\xf9Cb\x1d\xca3\x00\x00\xe42\xfa\xb1\x8f_\xd8\xb6\
+H\xd7\xc8\xe0A\xa3}\xc7W\xb6n\xf5\x16\xd2'O\
+&\xa4a\xce\xfa\xb4\xd8\xc6\xcep~K\x22\xdd\x1a\x16\
+\x00\x00 \xe7\xd1\x0b\xe2\xcd\xb6-\xd6\xd5\xc4\xff\xf1\x1b\
+>\x9a5S\xce\xe6\xcd\xdeB\xfa\x80\x01\x845\xcc9\
+\x1f\x13\x9b\xd9\x19\xce\xaf\x13\x0b)\xc7\x00\x00\x00\xffE\
+\xf7J_e\xdb\xa2\xad\xfb1_\xe27\x844i\xa2\
+\x9c\xf5\xeb=]\x1au\xb84\x8a9\xe4\x1dbm\xfb\
+\x82\xf9\x97\x09\x1e \x02\x00\x008(V\xf6J_(\
+&\xfd\x84\x91\xf2r\xe5\xac[w\xe8K\xa3\x1b7*\
+\x87K\xa3\x98\x03\xfeX\xaci_8\xff\x5c\x9cG\xd9\
+\x05\x00\x0084'\x8b\x1f\xdb\x16\xd2'\x89{|\x86\
+\xf4\x94\x87\x9d\xf4\xe4\xc2\x85\xca)( \xc4al\xd5\
+\xf79J\xec\x0b\xe7\x1f\xbb\xb5\x06\x00\x00\x00<\xd2S\
+\xfc\xbdm!}\x80\xf8\x86\x9fpR\xaf\x9erV\xaf\
+>\xf4q\x973\xcf$\xc8a,\xdd.\x16\xd8\x17\xce\
+\xff\xe8\xd6\x18\x00\x00\x00\xf0IK\xf15\xdbB\xfaQ\
+\xe2K~\xba\xbbHHOy\x09\xe9\x03\x07\x12\xe80\
+V\xaev\xefqX6\x87\xdf\x14[S^\x01\x00\x00\
+2\xa7\x9e\xf8\x88m!\xbd\xad\xf8\xac\x9f\xb0R\xb7\xae\
+rV\xad:\xf4\xa5\xd1\xb6m\x09v\x18\x0b\xcf\xb1\xb3\
+S\xcbsbc\xca*\x00\x00@\xd5\xd1m\x18o\xb1\
+m\xb1?\xdc\xef\xab\xa3\xfa2\xe8!B:\x97F1\
+\xea&\xed\x0d\xe7\xf7&\xd2\xef.\x00\x00\x00@\x96(\
+\x10+m[\xf4\x1b\x8a\xbf\xf4\x13`j\xd5R\xce\xf2\
+\xe5\x07\xdfI_\xbaT9EE\x84=\x8c\x9c{\xc5\
+3\xed\x0c\xe77\x89\xd5(\xa3\x00\x00\x00\xc1\xb0\xca\xb6\
+\xc5\xbf\x8e\xf83?;\x8c5k\x1e:\xa4O\x9bF\
+\xe0\xc3H\xf9\xbe8\xd9\xcep~\xa5\xfb\x05\x1f\x00\x00\
+\x00\x02d\xaa\xf8/\x9bB@\xa9x\x93\x9f@#!\
+=y\xc9%\x07?\xee2x0\xc1\x0f#\xe1nq\
+\xac\x9d\xe1|%\xe5\x12\x00\x00\xc0\x1c#\xc4\xbf\xdb\x14\
+\x06\x8a\xc4\xab|\x86t\xe7`!\x9dK\xa3\x18\x01\xdf\
+\x11\x87\xd9\x17\xcc\xf5cg\xe7P&\x01\x00\x00\xccs\
+\x8c\xf8\x07\x9b\x82\x81\xee\xf7\xbc\xc9\xcfq\x97\xb22\xe5\
+,[v\xf0K\xa3\xba\x03\x0cA\x10-\xf4u\xb1\xaf\
+}\xe1\x5c\xff\xba6\x99\xf2\x08\x00\x00\x10\x1e\xcd\xc5W\
+-\x0b\x08\xfb\xbaXx\x0e:5j\xa8\xd4\x92%\x07\
+\xbd4\x9a\xaaV\x8d@\x88V\xf9\xbc\xd8\xce\xbep\xfe\
+\x818\x98\xb2\x08\x00\x00\x10>\xba\xaf\xf1s\xb6\x85\xf4\
+9n\xcb9\xcf\xc7]\x0evqt\xf2dB!Z\
+\x15\xce\xdb\xdb\x17\xce\xff,\xf6\xa5\x1c\x02\x00\x00\xd8C\
+-\xf1>\xdbB\xfa\xa9nw\x0bO\xc1\xa7\xac\xec\xe0\
+\x17G\x87\x0c!\x1cb\xe8>-\xb6\xb0/\x9c\xcbw\
+\xe1Dg\xca \x00\x00\x80}\xe8Vj\xffc[H\
+\x1f.\xbe\x9b\x85\x9d\xf4TE\x85r\xda\xb5#$b\
+h>(6\xb2/\x9c\xffNlB\xf9\x03\x00\x00\xb0\
+\x97\xbc\x84\x85\xbd\xd2\xfb\x89oz\x0dB\xf5\xea)g\
+\xed\xda\x03\xef\xa2\xaf_\xcfK\xa3\x18\x8a\xbfv\x1f\xe6\
+\xb2ln=&\xd6\xa5\xec\x01\x00\x00D\x83\xf9\x89t\
+\xab5k\xc2D/\xb7\xeb\x85\xa7@\xa4;\xb7\xacY\
+s\xe0\x90\xae\xbb\xbepi\x14\x0dz\xbf\xd8\xc0\xbep\
+~\xb7XJ\xa9\x03\x00\x00\x88\x16\x13\xc4\x8fm\x0a\x15\
+]\xc5\x97<\x86\xa2\xd4\xc1v\xd2\xe7\xccQN^\x1e\
+\xe1\x11\x03\xf7\xe7bm\xfb\xc2\xf9\xcdb5J\x1c\x00\
+\x00@4\x19\x9aH\xb7^\xb3&\x5c\xb4s\xbb`x\
+\x0aH\x8d\x1a\xa9\x94>\xd6r\xa0\x90>z4\x01\x12\
+\x03\xf5.\xb1\x96}\xe1\xfc\xdb\x89\xf4}\x13\x00\x00\x00\
+\x880}\xc4\xbf\xd8\x142:\x88\xbf\xf5\x1a\x94\xca\xcb\
+Uj\xc3\x86\xaf\x07\xf4\xcaJ\xe5\xf4\xe8A\x90\xc4@\
+\xbc\xdb\xce\x9d\xf3\xcb\x13\xe9{&\x00\x00\x00\x10\x03:\
+\x8a{l\x0a\x1b\x87\x8b\x8f{\x0dLM\x9b*g\xf3\
+\xe6\xafwv\xd9\xb1C9\xcd\x9a\x11(1\xab\xde*\
+\xd6\xb0+\x98\x7f)\x9eK\x19\x03\x00\x00\x88\x1f\xcd\xc4\
+\xd7l\x0a\xe9\x8d\xdc\xee\x18\x9e\x82\xd3\xe1\x87\x1f0\xa4\
+\xef;\xa7\xae\xdb3\x12,1\x0b\xde,\x96\xd8\x15\xce\
+?\x13\xa7R\xbe\x00\x00\x00\xe2KS\xf1\x05\x9bBz\
+\xb9\xdb_\xdaS\x80j\xd1B9[\xb7~=\xa4/\
+Z\xa4\x92\x85\x85\x04L\x8c\xdb\xce\xb9\x0e\xe7gR\xb6\
+\x00\x00\x00\xe2O\x99\xf8K\x9bBz-\xf7B\x9e\xa7\
+ \xd5\xaa\x95r\xb6m\xfbzH\x9f:\x95\x90\x89\x19\
+{\x9dXdW8\xff\xa7x\x02\xe5\x0a\x00\x00 w\
+(\x16\x7fdSH\xd7;\x97\xb7x\x0dT\x9d;+\
+g\xd7\xae\xaf\x87\xf4\xfe\xfd\x09\x9b\xe8\xdb\xff\xb1/\x9c\
+\xeb\xceK\x83(S\x00\x00\x00\xb9\x87\xee\xa3|\x93M\
+!\xbd\xd4=f\xe0)Xu\xeb\xa6R\x15\x15_\xbd\
+4\xaa\xff\xfb\xf6\xed\x09\x9d\xe8\xd9\xeb\xed\x0b\xe7\x7f\x15\
+\xfbS\x9e\x00\x00\x00r\x17\xdd\xb2m\xb3M!]\x87\
+\xa5k\xbd\x06\xac\x01\x03\xbe\xbe\x8b\xae/\x926lH\
+\xf8\xc4C\xfam\xb1\xc0\xaep\xbe7\x91\xee\xb8\x04\x00\
+\x00\x00\x90X\x92H\xb7r\xb3\x22\xa8\xe8\xd0t\xa5\xd7\
+\xa05j\xd4\xd7\xdb/\xaeX\xa1\x9c\x92\x12B(F\
+i\xe7\xfc-\xb1\x05\xa5\x08\x00\x00\x00\xf6gZ\x22\xdd\
+5\xc2\x9a\x90~\x85\xd7\xc05a\xc2\xd7w\xd2\xcf:\
+K9yy\x84Q\xfc\x9a\xdf\xb1/\x9c\xeb\xceJM\
+(A\x00\x00\x00p N\x12?\xb6)\xa4Wz\x09\
+]:\x88O\x99\xf2\xf5\x90>f\x0c\x81\x14\xbf\xe2w\
+\xed\x0b\xe7O\x8a\xf5(=\x00\x00\x00p0\x86\x8a\x1f\
+\xda\x14\xd2+\xbc\x84\xaf\xfc|\xe5\xcc\x9e\xfd\xd5\x80^\
+Y\xa9\x9cc\x8e!\x98\xe2>o\xb0/\x9c?\x22\xd6\
+\xa6\xe4\x00\x00\x00\x80\x17\x06\x8a\x7f\xb3%\xc8\x14\xb9\xad\
+\xf0\x0e\x19\xc2\x8a\x8a\x94\xb3p\xe1WC\xfa\x8e\x1d\xca\
+i\xde\x9c\x80\x9a\xe3\xfe\xc8\xbe\x17B\x1f\x12kRj\
+\x00\x00\x00\xc0\x0f\xba\x9bD2a\xd1N\xfaN/a\
+\xaczu\xe5,]\xfa\xd5K\xa3\xeb\xd7\xabT\x9d:\
+\x04\xd5\x1c\xf5F\xb1\x9a]\xe1\xfc\x8eD\xfa-\x02\x00\
+\x00\x00\x00\xdf\xb4\x13\xf7\xd8\x14\xd2wx\x08d\xc9\xb2\
+2\xe5\xe8N.\xfb\x87\xf4\xc5\x8bU\xb2\xb0\x90\xc0\x9a\
+c\xea\xbe\xfa\xd5\xed\x0a\xe7\xb7'\xd2o\x10\x00\x00\x00\
+\x00dL[q\xb7-\x01\xa7\xd0\xed_}\xc8pV\
+\xb7\xaer.\xbb\xec\xab\xc7]\xce<\x93\xd0\x9aC\xde\
+)\x96\xd9\x15\xce\xe5\x1f\x89\x9ds\x00\x00\x00\xc8\x0e\xcd\
+\xc47\x12\x89\x88\xb5`l\xd2$\xfdp\xd1\xfe!\xfd\
+\xd8c\x09\xaf9\xe0]bM\xbb\xc2\xf9\x8f\x13\xec\x9c\
+\x03\x00\x00@\x96\xd1\xad\xe0~cK\xe0\xc9\x13\xd7{\
+\x09k\xed\xda\xa9\xd4\xce\x9d\xff\x0d\xe8\xbbv\xed\xfb\x7f\
+#\xc4r!\xd4\xa0\xd7\x8b\x05\x94\x10\x00\x00\x00\x08\x82\
+:\xe2c\x91\x0b\xe9]\xba(\xa7\xa2\xe2\xbf!\xfd\xf2\
+\xcbU\xb2Q#\xc2l\x0c\xbd]\xacaW8\xaf\x14\
+\xf3(\x1d\x00\x00\x00\x10$\xb5m\x0a\xe9\xf9\x1e/\x8e\
+:\xc3\x86}\xf5\xa8\x8b\xbeDZRB\xa8\x8d\x91\xf7\
+\x8a\xb5\xed\x0a\xe7\xd7\x8a\xf9\x94\x0c\x00\x00\x000A\xa9\
+x\x9fM!\xdd\xd3\x8b\xa3\x13'~5\xa4\x9f{n\
+\xfa\x81#\xc2m\xe4}@\xackW8\xbf2\xc1\xce\
+9\x00\x00\x00\x18F_x\xbb\xcd\xa6\x90\xbe\xebPA\
+./\xef\xeb\xaf\x8d\x9et\x12\x017\xe2>(\xd6\xb7\
++\x9c\xaf\xa1<\x00\x00\x00@X\xe8\x8bo\xdf\xb1%\
+\x18\xe9\xee.Wzymt\xd1\xa2\xaf\x86\xf4\xbe}\
+\x09\xba\x11\xf5I\xb1\xb1]\xe1|\x09e\x01\x00\x00\x00\
+\xc2F\xff\x8c\xbf\xcb\xa6\x90~\xd5\xa1\x82]i\xa9J\
+\xad\x5c\xf9\xdf\x80\xbec\x87rZ\xb4 \xf0F\xcc\xe7\
+\xc5\x16\x84s\x00\x00\x00\x80\x03\xa2/\xc2]aKP\
+*\x16o9T\xc0k\xd0@9\x1b7\xfe\xf7\xa5\xd1\
+\x0d\x1b\x94S\xa7\x0e\xc17\x22\xbe&v\xb6+\x9c\xaf\
+\xa6\x0c\x00\x00\x00\x80m\xe8\x9d\xf4u\xb6\x04&\xdd\x07\
+\xfb\xc7\x87\x0az\xcd\x9b\xab\xffk\xef\xfec\xed\xae\xeb\
+;\x8e\x7fo\x7f\xd1\xd6\xda\x9f\x16\x1a\x1bhK\xaf\xa6\
+\x19\xb8D\xaa-m\x88s\xcd\xbaF\x94\x15\x9dT\xc6\
+\xa6\x80\xa3\xb9\x13\x7f\xc4\x94\x8b\xd8\xc9\xc0\x16*k\xb5\
++\xed\xed6\xdc2\xe6\xb6f,\xe0d\xd9\x961A\
+\x13\xc1X\x7f!n\xc8HQA\x84\xdes\x8d\x1a\xa3\
+\x9bf*\xb4_\xdf\xdf\x9d\xe3N[\xee\xbd\xed\xed\xfd\
+\xf1\xf9\x9cs\x1e\x8f\xe4\xf5o\xd3\x9c\xf3=\xc9\xb3\xa7\
+\xdf\xf3\xf9\xd6\xf6\xeci~\x93\xfe\xfe\xf7\x97\x03\xd3\xa6\
+\x09\xe0\xcc\xf7\xcd\xd8\xab\xf3\x8a\xf3\x9d>\xfe\x00@\xce\
+\xae\xcf%\x9c\xa6\xc7\xee\x19\xe9\x19\xe9W^)\x823\
+\x8f\xf3W\xf9A(\x00\xc0\x88\xf5\x16\xad\xf4M\xfa\xba\
+u\xc7\xffht\xfdz1\x9c\xe1\x9e\x8e\xbd&\xaf8\
+\xbf\xd5G\x1d\x00h%7\xe5\x12R\xd5\xc3k\xee\x1f\
+\xc9\x19\xe9\xfb\xf7\x97\xb5\xf3\xcf\x17\xc5\x19\xedp\xec\xcd\
+y\xc5y\xf5\xc3h\xe7\x9c\x03\x00-gK.A5\
+;v\xdf0\x01\xd8_=\xb0\xe8\x1d\xefhF\xfa\xae\
+]em\xe1Bq\x9cI\x9co\xca+\xceo\xf3\xd1\
+\x06\x00Z\xd9{cGs\x89\xf4O\x9e\xec\x8c\xf4\xf7\
+\xbd\xaf\x19\xe9\xdb\xb7\x97\xb5Y\xb3Dr\xe2]\x9dW\
+\x9c\xff\xb1\x8f4\x00\xd0\x0e\xfe \x97H_\xd0x,\
+\xfc\x90A8gNY\xdb\xb1\xa3\x19\xe9\xef~w\xfd\
+\xdbu\xa1\x9cd[\xdc\xd6\x02\x000nzr\x89\xf4\
+\x85\xb1\x07\x87\x89\xc2\x81\xee\xee\xb2\xb6wo3\xd27\
+n\x14\xcb\x09vc^q\xde'\xce\x01\x80vt]\
+.\xc1uN\xec\xcb\xc3\x05\xe2\xaaU\xc7\x9f\xec\xb2f\
+\x8dh\x9e\xc0\xed\x8fM\xca'\xce?V\xd4\x1f\xc6\x05\
+\x00\xd0\x966\xc7\x8e\xe4\x10^K\x1a\x8f\x8b\x1f2\x14\
+/\xbd\xb4\x19\xe8\xb7\xdf^\xd6\x96.\x15\xcf\x13\xb0;\
+c\x93\xf3\x89\xf3?+|s\x0e\x00t\x80kr\x89\
+\xf4\x15\xb1\xc7\x87\x8a\xc5\xae\xae\xb2\xbf\xa7\xa7\x19\xe9\x1f\
+\xfaP\xfd\x1eu\x11=n\xfb\xe7\xc6\x03\xa62\x89\xf3\
+;\xc49\x00\xd0I~?\x97H_\xd9xB\xe5\xa0\
+\xf7\xa3O\x9f^\xd6>\xf0\x81f\xa4_w]Y\x9b\
+2EL\x8f\xc3\x1e\x8a\xcds[\x0b\x00@R\xef,\
+2\xf9\xe1\xe8\xebb\xcf\x0e\x15\x8f\x0b\x16\x94\x03;w\
+6#}\xd3&A=\xc6{4\xb64\x9f8\xbf'\
+6\xc5\xc7\x13\x00\xe8To/2\xf9&\xfd\x8d\x8d\x87\
+\xe2\x0c\x1a\x91\xcb\x97\x1fw\xb2K\xff\xda\xb5\xc2z\x8c\
+v\xa8q\xabQ&q~wl\xb2\x8f%\x00\xd0\xe9\
+\xdeUd\xf2M\xfaU\xc3\xc5du\x92K#\xd0\x07\
+\xaaX\xf7\xa3\xd1Q\xef\xe9\xd8\xda|\xe2\xfc\xbe\xd84\
+\x1fG\x00\x80\xba\xf7f\x12ie\xef0A\xd9_\xdd\
+\xde\xe2G\xa3c\xb2\xea\x7f+~+\x9f8\x7f(6\
+\xd3\xc7\x10\x00\xe0x\xd9\x9c\x93\xbem\xa8@\xaf\x9e*\
+\xfa\x9e\xf74\xbfI\xef\xed\xf5\xa3\xd1\xd3\xdc\x95\xf9\xc4\
+\xf9\xc3\xb19>~\x00\x00\x83\xdb\x99C\xb4U\xe7p\
+\xff\xd5Pq9sfY\xbb\xf9\xe6f\xa4_~\xb9\
+\xe0\x1e\xe1\xb6\xe7\x13\xe7\xdf\x8c\xbd\xd4\xc7\x0e\x00`x\
+;r\x88\xb7\xa9\xb1\x03CE\xe6\xe2\xc5\xe5@\xf5\xf0\
+\xa2_\xde\xeeR=yTx\x9f\xd2\xf6\xc4\xba\xf2\x88\
+\xf3\xa7b\x8b}\xdc\x00\x00NM\x16\xdf\xa4\xcf\x88\xfd\
+\xd3P\xb1\xb9re3\xd0\xf7\xed+\x07\xba\xbb\x05\xf8\
+Iv\xa0\xf1\x0f\x9f\x0c\xde\xdb\xf8\xeb\x14\xcb}\xcc\x00\
+\x00N]\xf5\x04\xc7?\xcd!\xd2g\xc7\x1e\x18*:\
+/\xbb\xacy\xab\xcbm\xb7\x95\x03s\xe7\x0a\xf1!\xf6\
+/\x8d\x7f\xf0d\xf0\x9e~?v\xbe\x8f\x18\x00\xc0\xe9\
+E\xfa\x1d9D\xfaY\xb1/\x0c\x16\x9e\x93'\x97\xb5\
+-[\x9a\xdf\xa4\xf7\xf6\x96\xfd~4\xfa\x82}66\
+?\x8f8\xff\xef\xd8\xab}\xb4\x00\x00N_\xf5\xd0\x98\
+\xbbs\x88\xf4\x97\xc5\x1e\x1f,@\xe7\xcf/k\xbbv\
+5#\xbd\xfaV]\x94\xff\xff\x1e\x8b-\xcf#\xce\x7f\
+\x1a\xfbM\x1f)\x00\x80\xd1\x9b\x1a\xbb7\x87H_\x1d\
+\xfb\xd6`!\xfa\xf2\x97\x97\xb5\xbe\xbef\xa4_x\xa1\
+8o<\x88hU\x1eq\xfe\x5c\xec\x8d>J\x00\x00\
+c\xa7\xfa&\xfd\x1fr\x88\xf4\xf5\xb1g\x07\x0b\xd2\x0d\
+\x1b\x9a\x81^\x9d\xf0r\xf6\xd9\x1d\xff \xa27\xe4\x13\
+\xe7o\xf2\x11\x02\x00\x18{\xd3c\x0f\xe4\x10\xe9\xd7\x0e\
+\x16\xa5]]em\xf3\xe6f\xa4Wg\xa5\xcf\x98\xd1\
+\xb1\x81~C\x1eq~4v\xad\x8f\x0e\x00\xc0\xf8\x99\
+Q\xd4\x1f\xcb\x9e<\xfen\x1e,L#\xc8\x07\xb6m\
+kFzOO=\xdc;,\xce\xf7\xe5s\xd6\xf9u\
+>2\x00\x00\xe3\xafz,\xfb#\xa9\xe3oR\xec/\
+\x86x\x88Qm\xcf\x9ef\xa4\xaf[\xd7Qq\xfe\xf1\
+|\xce:\xdf\xed\xa3\x02\x000q\xce\x8c=\x91:\x02\
+\xcf\x18\xeaAF\x17]\xd4<\x1f}\xef\xde\xb2\xb6d\
+IG\xc4\xf9\xc1\xd8\xbc<\xe2\xfco\x8b\xfa1\x9d\x00\
+\x00L\xa0s\x8b\xfa\x13!\x93\xc6\xe0\xbc\xc69\xdf/\
+\x08\xd6+\xaeh~\x8b~\xeb\xade\xedE/j\xeb\
+8?\x14\xeb\xce#\xce\xef/\xea'\xff\x00\x00\x90\xc0\
++b?H\x1d\x85\xe7\xc4\xfe\xf3\x84`\xad\x1eX4\
+p\xc3\x0d\xcdo\xd2\xab\x1f\x90\xb6i\x9c?\x13{M\
+\x1eq\xfe\xd5\xd8l\x1f\x0b\x00\x80\xb4\xd6\x15\xf5\x87\xd0\
+$\x8d\xc3U\x83\x9d\x91\xbepaY\xfb\xc8G\x9a\xdf\
+\xa4\xaf^\xdd\x96\x81\xbe9\x8f8?\x1c;\xc7\xc7\x01\
+\x00 \x0f\xaf\x8f\xfd<u$\xfeF\xe3\xdb\xe4\xe3\x02\
+\xf6\xbc\xf3\xca\xda\xfe\xfd\xf5@\xaf~<\xbahQ[\
+\xc5\xf9\xf6<\xe2\xfc\xbb\xb1n\x1f\x03\x00\x80\xbc\x5c\x11\
+;\x92:\x16\x7f\xefd\xf7\xa3W\xb7\xbdL\x99\xd2\x16\
+q\xfe\xb1\xc6i6\x89_\xf3\x1f\xc7V\xb9\xfc\x01\x00\
+\xf2tm\x91\xc17\xba\x7f4\xc8\xfd\xe8\xb5\xad[\x9b\
+\x91\xbeqc\xcb\xc7\xf9\xa7b\xb3\xf2xJ\xe8\x1b\x5c\
+\xf6\x00\x00y\xdb\x9e:\xd0\xab\x87\xf4\xec?1j\xcf\
+<\xb3\xec\xdf\xbd\xbb\x1e\xe8}}em\xe9\xd2\x96\x8d\
+\xf3Gb\x8b\xf2\xb8\xb5e\xb3\xcb\x1d\x00\xa05\xdc^\
+dxFz\xff\xda\xb5\xcdS]n\xba\xa9\xacM\x9d\
+\xdarq\xfed\xecW\xf3\x88\xf3\xed.s\x00\x80\xd6\
+19\xf6\x89\xd4\x11\xb9 \xf6\xf9\x13#\xfd\xaa\xab\x9a\
+\xb7\xba\x5crI\xcb\x05\xfa[\xf2\x88\xf3\xbf+<\x88\
+\x08\x00\xa0\xe5T\x0f\xab\xf9\xb7\xd41\xb9$\xf6\xd8\xb1\
+\x91[=\xb0\xa8zpQ\x15\xe8\xd5SF\xcf:\xab\
+e\xe2\xfc\xe6<\xe2\xfc\xde\xc6?\xc0\x00\x00hA\xd5\
+Ck\x1eN\x1d\x95\xbf\x1e{\xf6\xd8\xd8\xed\xee\xae\xdf\
+\x87^EzOOK\xc4\xf9?\xc6\xa6\xa6\x8f\xf3G\
+b/vY\x03\x00\xb4\xb6\x05\xb1C\xa9#\xfd\xf2\x13\
+\xa3\xf7\xe2\x8b\x9b\xb7\xba\xacX\x91u\x9c\x1f\x8c\xcdI\
+\x1f\xe7O\xc7\x16\xb9\x9c\x01\x00\xda\xc3\xb2\xd8wRG\
+\xfa\xf6c\xc3w\xf2\xe4\xb2v\xfd\xf5\xf5@\xef\xed-\
+k]]Y\xc6\xf9\x13\xb1\x97\xa5\x8f\xf3\x1f\xc6~\xc5\
+e\x0c\x00\xd0^^U\xd4\x1fj\x93,4\xab\x87\xfa\
+\xfc\xcd\xb1\x01<o^Y\xfb\xf0\x87\xb3\xfd\x16\xfdp\
+lC\x1eg\x9dop\xf9\x02\x00\xb4\xa7\xd7\xc7\x9eO\
+\x19\x9c\xd5\xc3}>}l\x08\xafYS\x0f\xf4\xb7\xbd\
+-\xbb@\xef\xcd\xe3G\xa1\xefr\xd9\x02\x00\xb4\xb7\xde\
+\xd4\xd1\xb9,\xf6\xf8\xb11|\xcd5e\xff-\xb7d\
+\x15\xe7\x07b\x93\xd3\xc7\xf9G]\xae\x00\x00\x9d\xa1/\
+u\xa4_\x14{\xe6\x97A<sfY\xbb\xf1\xc6l\
+\xe2\xfc\xa1\xd8\xec\xf4q\xfe@Q?*\x13\x00\x80\x0e\
+P=\xe4\xe6@\xeaH\x7f\xeb\xb1a<gN\x16q\
+~(\xb64}\x9c\xffG\xe18E\x00\x80\x8e3=\
+\xf6\xd9\xd4\x91\xbe3\xa3\xdbZ\xfac\xeb\xd3\xc7\xf9\xe1\
+\xd8b\x97'\x00@g\x9a_$>#}j\xe3!\
+@9\x04\xfa\x1f\xa6\x8f\xf3\xea\x94\x9d\x95.K\x00\x80\
+\xce\x96\xfc\x8c\xf4\x85\xb1\x87\x13\xc7\xf9]\x8dc \x13\
+\xbe\x0eGb\xbf\xedr\x04\x00\xa0\x92\xfc\x8c\xf4\xf3b\
+O&\x8a\xf3\xaf\xc4^\x92\xfe\xdb\xf3\xad.C\x00\x00\
+\x8eU\x9d\x91\xfe\x5c\xcaH}S\x828\x7f:v\x81\
+\xe3\x14\x01\x00\xc8\xd4\x96\xc4\xa1Z\xde2\xc1\x81\xde\x93\
+>\xce?W\xd4\x7f\xb0\x0b\x00\x00\x83\xda\x972X\xa7\
+\xc4>>Aq~G\xac+m\x9c\x7f+\xb6\xd0%\
+\x07\x00\xc0p&\xc5\xeeM\x19\xe9sc_\x18\xe78\
+\xffLlf\xda8\xffQl\x85\xcb\x0d\x00\x80S1\
+#\xf6\xa5\x22\xf1\x8fF\x9f\x1a\xa78\xffzly\xfa\
+\x13[6\xba\xcc\x00\x00\x18\x89\x97\x16\xf5\x87\xe6$\x0b\
+\xd9\xdf\x1d\xa7@\xbf4\xfd}\xe7\xdb\x5c^\x00\x00\x9c\
+\x8e\xea\xa19?I\x19\xb3\xbb\xc78\xce\xff$}\x9c\
+\xdf\x13\xebri\x01\x00p\xba\xde\x1c;\x9a*h\xcf\
+\x88\xdd7Fq~\x7f\xe3\xcfK\x18\xe7_\x8b\xcdr\
+I\x01\x000Z\x1fL\x18\xb5\xe5\xe2\xd8c\xa3\x8c\xf3\
+'b\xcb\xd2\xc6\xf9\xf7\x8a\xfaS[\x01\x00`\xd4\xaa\
+\x93]>\x912\xd2\xd7\xc7\x0e\x8f\x22\xd07\xa5\xffQ\
+\xe8%.#\x00\x00\xc6Ruk\xc6\xa3)#\xbd\xf7\
+4\xe3\xbc/\xfd}\xe7;\x5c>\x00\x00\x8c\x87\xead\
+\x97\xfeT\xa1;)v`\x84q\xfe`\xfa\xf3\xce\xff\
+\xb5\xa8\xff\x0f\x04\x00\x00\x8c\x8b\xb5\xb1\x9f\x16\x09\x1fb\
+\xf4\xc5S\x8c\xf3\xea\x1c\xf5\x15i\xe3\xfc\x1b\xb1\xb9.\
+\x19\x00\x00\xc6\xdb\x95\x09\xa3\xb7|e\xec\xdb\xa7\x10\xe8\
+W\xa7\x8d\xf3\x1f\xc7^\xe1R\x01\x00`\xa2\xf4\xa5\x8c\
+\xf4\x9e\x93\xc4\xf9\x9d\xe9\xef;\xff\x1d\x97\x08\x00\x00\x13\
+iJ\xec\xd3\xa9\x02\xb8+\xf6\x97C\xc4\xf9\x97bs\
+\xd2\xc6\xf9>\x97\x07\x00\x00)\xcc/\xea\xf7Y'\x09\
+\xe1\xd9\xb1\x83'\xc4\xf9\xb3\xb1\xd5i\xe3\xfc\xc1\xd8T\
+\x97\x06\x00\x00\xa9\x5c\x10\xfb\xdfTA|\xc1\x09\xf7\xa3\
+oM\x1b\xe7\xdf\x8f\x9d\xed\x92\x00\x00 \xb5\xab\x13F\
+\xf1\xff\xfd\x18\xb4\x8a\xf3\x7f\x8fMI\xf7\xf78\x1a\xbb\
+\xd8\xa5\x00\x00@.nO\x19\xe9\xbbbK\xd2~{\
+\xbe\xcd%\x00\x00@N\xa6\xc5>_$\xfc\xd1h\xc2\
+8\x7f\xa8\xa8\xffh\x16\x00\x00\xb2rV\xecp\x91\xfe\
+\x88\xc3\x89\x5c\xf5d\xd53\xbd\xf5\x00\x00\xe4\xea\xc2\xd8\
+\xcf:$\xce\x9f\x8f\xfd\x9a\xb7\x1c\x00\x80\xdc\xbd\xb3C\
+\x02\xfdFo5\x00\x00\xad\xe2\xce6\x8f\xf3\xfbb\x93\
+\xbc\xcd\x00\x00\xb4\x8aY\xb1Cm\x1a\xe7\xdf\x89-\xf2\
+\x16\x03\x00\xd0j\xce\x8f\xfd\xa4\xcd\xe2\xbc:\xef|\x83\
+\xb7\x16\x00\x80V\xb5\xa9\xcd\x02}\x87\xb7\x14\x00\x80V\
+\xd7\xd7&q~\xb0p\xde9\x00\x00m`j\xecs\
+-\x1e\xe7?\x8c-\xf3V\x02\x00\xd0.\xce\x8e}\xaf\
+\x85\x03\xfd2o!\x00\x00\xed\xe6u\xb1#-\x18\xe7\
+\x7f\xed\xad\x03\x00\xa0]\xedj\xb18\x7f26\xc7\xdb\
+\x06\x00@\xbb\xaa\xeeG\xffb\x8b\xc4\xf9s\xb1U\xde\
+2\x00\x00\xda\xdd\xb9E\xfdG\x97\xb9\x07\xfaM\xde*\
+\x00\x00:E\xee\xe7\xa3;R\x11\x00\x80\x8e\xf3\xd1L\
+\xe3\xfc\x7fb\xcb\xbd=\x00\x00t\x9a3b_\xc90\
+\xd0\xdf\xea\xad\x01\x00\xa0Su\xc7~\x94Q\x9c\xdf\xe5\
+-\x01\x00\xa0\xd3\xbd%\x938\xffvl\xae\xb7\x03\x00\
+\x00\x8a\xe2\xef\x13\xc7\xf9\xd1\xa2\xfe %\x00\x00 \xcc\
+\x8b=\x930\xd0\xef\xf0\x16\x00\x00\xc0\xf1^\x1b;\x92\
+ \xce\x9f\x8a\xbd\xd8\xcb\x0f\x00\x00/\xb4m\x82\xe3\xfc\
+\xf9\xd8\x1a/;\x00\x00\x0c\xaez8\xd0\xc1\x09\x0c\xf4\
+]^r\x00\x00\x18\xde\xb9\xc5\xc4\x1c\xbd\xf8\xb5\xa2~\
+\x16;\x00\x00p\x12W\x8ds\x9c\xff<\xf6J/3\
+\x00\x00\x9c\xba\xbb\xc61\xd0\xb7{y\x01\x00`d^\
+\x12\xeb\x1f\x878\x7f\xacpk\x0b\x00\x00\x9c\x96\xea\xe1\
+AG\x8b\xb1=\xb5e\x95\x97\x15\x00\x00N\xdf\xde1\
+\x0c\xf4[\xbc\x9c\x00\x000:\xd5\xed(\x8f\x8eA\x9c\
+W\x7f\xc64/'\x00\x00\x8c^u\xe2\xca\xcf\x0a\xa7\
+\xb6\x00\x00@6\xb6\x8e\x22\xd0o\xf3\xf2\x01\x00\xc0\xd8\
+\x9a\x14\xfbL\xe1\xd4\x16\x00\x00\xc8\xc6\xb2bdO\x19\
+\xadNmY\xede\x03\x00\x80\xf1\xf3\xf6\x11\x04\xfa.\
+/\x17\x00\x00\x8c\xbf\xbbO!\xce\xff\xabpk\x0b\x00\
+\x00L\x88\xea)\xa3\x03\xc5\xf0\xb7\xb6\x5c\xe8e\x02\x00\
+\x80\x89\xb3\xa1\x18\xfa)\xa3\xbb\xbd<\x00\x000\xf1\xfe\
+|\x908\xffzl\x86\x97\x06\x00\x00&\xde\xcc\xd8\xa1\
+\xe2\xf8[[\xd6xY\x00\x00 \x9d\x95E\xfdI\xa1\
+U\xa0\xef\xf5r\x00\x00@z\x1f\x8c}\xa3\xa8\x7f\xa3\
+\x0e\x00\x00$6-v\x81\x97\x01\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x0e\xf2\x0b@\
+;\x84\xc7\x9dY\x0c\xd3\x00\x00\x00\x00IEND\xae\
+B`\x82\
+\x00\x00/`\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x01[\x00\x00\x01\x5c\x08\x06\x00\x00\x00f\xca\x1dU\
+\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x09pHYs\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01B(\
+\x9bx\x00\x00\x00\x07tIME\x07\xdc\x03\x09\x08\x1f\
+%\x1b\xcd\xc8\xcf\x00\x00\x00\x06bKGD\x00\xff\x00\
+\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00.\xe0IDATx\
+\xda\xed\x9d\x09t\x15U\xb6\xfe\xaf\xb6C\xdb-\xdc\x9b\
+\x00b\xdb\xb4\xa2\xb6\xf6\xa0\xdd\xb6\xa2>q\xa0\xaa\x92\
+0*\x8a \xa2\x88\x8a8\xb7-\x88\xa08a\xa7E\
+Q[[\x14'\x22!u+\x84\x00\x81\x10H \x10\
+\xa6@\x98\xc7\x80!\xcc\x90\x90\x89\x84\x04\x12\x12\x12\x12\
+\x02\xa9W\xbb\x82\x1aHn\x86\x9b[u\xeb\xd4\xf9~\
+\xff\xf5\xad\xf7_\xbd^?\xaa\xce>\xe7\xcb\xb9\xa7\xf6\
+\xd9\xdb\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x18@\x07Y\xbc2P\x11\xba\x06\xc8B_\x97,\
+\x0eu\xb9\xc5QNE\xfcX\xfb\x9f\xe1\x9a\xe24\xa5\
+\xb8\xdcB\xba\xa6\x03\xb5\x12\x0b5\x1d\xd3\xfe\xff\xc7\xb5\
+\xff\xa9\xd6\x97\xfe\x9f\x1f\xab\xfd\xdf\xfb\xe9\xbf\xa3\xff\xf7\
+Wj\xff\xd9\x1cM\x93\x9dni<\xfd;\xf4\xef\xd1\
+\xbf\x1b(\x8bw\xd1s \x1a\x00\x00v\x09\xebrq\
+\x80\x12\xfcw\xcd\xe0\x06\xe8\x06\xe7\x16\xbfq*\xc2\x82\
+Z\x03\x14+\x1a6L\xbf\xa9\xe2\xecs\xcd\xd7\xf4\xb5\
+K\x91^w\xc9R\xff\x00\xb9\xdb\xdf\xe8=\x10L\x00\
+\x80\xffQ\x1d\x17\x04\xba\xa5\x9b\x9c\xb20P\xdb1\x86\
+jf\x95\xa0)\xcfbf\xdaZ\xe5\xe9\xef\xa5\xbd\x1f\
+\xbd'\xbd/\xbd7\x82\x0f\x000\x8e\x89\xbd/\x0d\x8c\
+\x08\xba\xdb\xe9\x16Gk\xe63W\xdb\x11\xe6\xda\xccX\
+\x9b)\xfd\xbd\xe9\xb8c\x14\x1d\x878b\x06^\x82\xc9\
+\x01\x00\xf0\x9a6Jp;\x97[z0\xc0-|\xaa\
+\x19\xcb*\xcddO\xf2i\xae\x8d\xeb\xec\xb8\xa4\xd0\xb9\
+3\x9d\x07\xb7\x0d\xef\x19\x88\xd9\x03\x00ht\xe7Jf\
+\xa1\x99k\xd8\xd9\x0fS0S\xefw\xbf\xf4\x91\xee+\
+\xcd\x80Ch\x5c1\xb9\x00\xe0\x9c\xc0(\xb1\x93\xb63\
+{V3\x88Yg\xbf\xe8\xc3(}o\xbcG\xb5?\
+`3]\xb24\xac\x9d\x12\xf4{\xcc:\x00\xf89\x1e\
+\xb8\xb1\xf6\x83\x96\xfe\x15\x1efh\xbe\xf9\xa6\xd3\xf8\xb7\
+\x95\xbb\xdd\x80\xd9\x08\x80\xcdp\xba\x83\xae\x87\xc1Z\xd7\
+x\x9d\x11!\xd7a\x96\x02\xc0(\x9db\xba^\xe6r\
+KOi\x8bz\xa9\xa6\xd306K\x8b\xe2\xb38@\
+\x11\x87t\x96\xc5_c\xf6\x02\xc0\xc2.V\x11C\x02\
+\x14)\x06\xd9\x03\xcc\xaa\xd4\xa5H\x91\xfa\xc75\x00\x80\
+\xe5\xcea\xdbi\x8bs\x8cf\xb0;aV\xf6:f\
+\xa0\xb8\x22\x9d\x0c\x00?\xe3\x92\xc5\xce\x94b\xe4\xb9n\
+\x00d\x13\x95h\x9a\xe0\x0a\x0f\xba\x06\xb3\x1e\x00\x93\x8f\
+\x0aj\xaf\xc7\x0ag`D\x5c\xedt)\xde\x09\x01\x91\
+\xe2\xbdX\x05\x00\x18E\xb2xQ\xed\x07/a\x0bL\
+\x07\xd2\xb4\x99\xe6\x83#f\xe0\xaf\xb08\x00\xf0\x05\xa1\
+\xa1\x17\x06\xc8\xd2`\xa4mA\x1e\x94\xa6\xfd\xd2\x19D\
+\xf3\x04\x8b\x05\x00o\xd0v,N\xb7\xf4\x82\xb6\x982\
+`(P3j4\xec\xc2N\x17\x80\x96\xa0:.\xd0\
+\xcb\x16b'\x0by\xa7\x1d4\x7fP\x0a\x12\x80Fp\
+EJ\x82\xb6XV\xc30 \x1f|L[\x89\x0fi\
+\x00\x9c\x07u\x068{\xd3\x0b&\x01\xf9ZK4\xd3\
+\xbd\x19\xab\x0cp\xcd\xe5\x11\xf7u\xa8-i(V\xc3\
+\x14 \x03u\x8a\xe6Y\x9bh\xb1=V\x1d\xe0\xed\xe3\
+\xd7%t3\x08e\x0d!\xb3\xcb=\xba\x14q\x04\xa5\
+\x11b\x11\x02\xfb\x1f\x19\xb8\xa5{\xb4\x89\x9f\x8a\x85\x0f\
+\xf93G\x97:\x0cc5\x02[B\xf5\x0b\xa8@\x0c\
+\x16:d\x11\xd5P\xc1\x1b\xd4]\x00\xb6\xe2l\xa9\xc3\
+|,p\xc8\x82\xf9\xb9\x87\x9d\x8a\xf8\x08V)`\x1a\
+j;s\xb6\xc57\x166\xc3\xfaG\xec\xe3\xeaK\xab\
+\xc6\xab\x13\xd2\xa2\xd5y\x99+\xd5-\x85\xbb\xd4\xbd%\
+\x87\xd4\x8c\xd2<u\xdf\xf1l5\xb5h\x8f\x9a\x98\xb5\
+F\xfd&=F\x1d\xb1\xf6s\xf5\xff\xe6>\xad\x06\xb8\
+%\xd6\xde3\x01m{\x00\xa3g\xb3\xc2\xe3\xda\x04.\
+\x84Y\xb1\xa9\xee\x0b^Q\xbf\xdf9[\xcd9Q\xa0\
+zCQe\x89\xaa\xec\x9d\xaf>\xbcx\xb4\x1a\xa8\xb0\
+b\xbcB\x81\xd3-=\x8a\xd5\x0b\x989\x9b\xd5&\xee\
+\x1c\x18\x16{\x22S|v\xe58}\xa7\xeaKh\xf7\
+;r\xdd\x17\xea\x15\x91!l\x8c\x85\x22\xc4\xd2<\xc6\
+j\x06\xd6\xdd\xcd\xcaR\x1f\x9c\xcd\xb2\xa9\x9e\x89\xff\xf2\
+\xb9\xc9\x9e\xcf~\xcdt\x07-}\x9b\x99\xb3\xdc@Y\
+\xec\x85U\x0d\xac\xc5\xc4\xde\x97\xd6\x16\xf1\x16k`\x5c\
+l\xa9\xe3\xd4\xee\xea\xa4\x9d\xb1j\x8d\xf6\xff\xcc\x82\xce\
+};G\xf7e#cA\x9b\xd7\x94\x17\x8eE\x0e\xfc\
+\x0e\xb5\xa4\xd6&\xe4\x06\x18\x17{\xbaqf\x7fuC\
+\xc1\x0e\xd5\x1f\xd0\x07\xb6\xdb\xe7\x0cae\x97\xbb\x16\x1d\
+\x80\x81_q)\xe2\xd3h\xac\xc8\xa6\xba\xce}F\xcd\
+\xf6\xf2\xe3\x97\xaf(\xae*U\xfb.\x1a\xc9\xca\x98\x95\
+\xe9\xd5\xc4\x000\x95\xb0.\x17\x9f\xadi\x00\xe3bP\
+\xdd\xe2\x9fWK\xaa\xcaT+Pu\xa6Z\x1d\xb0\xe4\
+Mv.B\xd0\xb1\x02\xae\xfb\x023\xf8\xed\xe4\xe0\x8e\
+T\xbe\x0e\xa6\xc5\xea\xd1\xc1\xc3^\xa7s\x19E\xe9\xa9\
+r\xf5\xce\xb8\xa7Y\x1a\xc7\xe4\xcb#{\x5c\x017\x00\
+\xc6\x9d\xcf*Awj\x13-\x1b\xa6\xc5\xa6\xda+\xc1\
+\xea\xea\xfcm\xaa\x15\xa13\xdc?L\xeb\xc3\xd2xf\
+\xb5\x95\x85;\xe0\x0a\xc0\xe7P\xb2\xb76\xc1N\xc0\xb4\
+\xd8\xd5'\xdb\xdc\xaa\x95\x99\xb6o!kcZ\xe6\x92\
+\xa5\xfep\x07\xe0\x1bBC/<\x9b\xd6\x05\xc3bX\
+\xf4\xe5\xbf\xf2t\x95\xa5\xcd\x96\xd2\xcf\xee_8\x82\xbd\
+\x826\xb2\x18\x8a6<\xa0Ut\x8a\xe9z\x19*u\
+\xd9C\x0b\xb2V\xab,\x90~\xec\x00C\xd7{\xebH\
+\x16\xdd\xc8\xc7\x05^A]\x14(\xbf\x10F\xc5\xbe\xee\
+\x8b\x7f\xce\xd4K\x0b\xade\xc8\xf2\xb1\xac\x8e\xf5jt\
+\x83\x00-\xa2\xcd\x14\xe9O\xda\xc4\xd9\x0f\xa3\xb2\x87\xe8\
+,\x94%\xd6\xe4ogy\xbc\xf7\xd1E\x1f\xb8\x08h\
+\x12\x97\xd2\xedV\xba\x17\x0e\x93\xb2\x87~\x1f\xd5[-\
+;U\xce\x94\xd9\xd2.\xfc\x96\xd9\x8f\xb3\xdc~'7\
+@\x09\xfe;\xdc\x04x\xce8\x88\x08\x0aB\xc6\x81\xbd\
+D?\xc9Y\xe4\xbdM\xdf\xb1>\xf6%\x81\x11Aw\
+\xc3U@}\xa3\x95\x85\xee\xda_\xe4r\x18\x94\xbd4\
+yW\x1c\x93f\xbb$g\xbd\x1d\xc6\xff\x84S\x11C\
+\xe0.\xa0\xce\xd1\x81\xf4\x9061*aN\xf6\x93\xd1\
+e\x13\x8d\x82\xae\x13\xdb$\x06\xda\xba\x92\x1e\x84\xcb\x00\
+\xba\xac0@\xdb\xd1V\xc1\x98\xec'jMS^}\
+Re\x15\xbaZl\x93\x16\xeaU\xb8\xfc\xc0\xfd\x8eV\
+x\x18Fk_\xfdqF?\x95eB\xe6\xbfl\xa3\
+xh\xebL\xfb\x05\x09\xd7\xe1sGK\xd7oO\xc3\
+\x94\xec\xab[c\x073m\xb6\x03\x16\xbfa\xb7\x98\x9c\
+F\x99F\xce\xd0~^\xde\x8f\x1d\xad\xfdu\xf7\xbca\
+L\x9b-\xc3\x97\x1b\x1a\xdd\xe1R\xfb(\xb8\x10\x0fG\
+\x07\xb2(jA\xaf\x80\x19\xf1\xd1\x82\x9ce\xfa/\x1e\
+m\xd7\xd8T\xb8\x22%\x01nd\xe7\x1dm\xa4x/\
+\xf2hqf\x8b3[K\xecp\x8f\xa3D\xa3}\xcf\
+h\xbbP\xa25L\x88\xafl\x84R\xc6n\x8f\xd5\x85\
+\xfeX\xd8<F\xc5tc\x13\xeed#\x02\xa3\xc4N\
+Z`s`@\xfcis\xe1.&\x8d\xb6\xa8\xb2\x84\
+\x97\x18e\xb5\x9f\xd2\xfd*\xb8\x94\x1dv\xb4\xd3\xee\x0d\
+p\xba\xc5\x9d0\x1e\xdc \xc3\x0d2\xcb\x1e)\xa4\xbb\
+d\xd1\x05\xb7b\x99\x89\xbd/\xd5\x82\xb8\x02\xa6\xc3\xaf\
+\x1e[\xf6\x0e\x93f;f\xc3D\xdeb\x95\x8cz\xb8\
+,g\x1e\xb8E\x19\x86\x83\xaa_\xa8\xfa\xc5\x88\x14a\
+\x0a\x5c\x8bM\xa3}\x0ff\x03\x91\x22\xf6\xc43e\xb6\
+\xcbs7\xf1\xfbQS\x16\xdf\x82{\xb1\x95y@\xf5\
+\x0e\xce\xc0h tj`\xee\xfc\xf6\x0c\xae\xf52\x94\
+\xe2\xe5t\x8b'a2P]\xc5\x1e\x5c\xc6\x84\xd1n\
+<\xb2\x03\xf1r\x8b\x15\xce\x88\xa0\xdb\xe0f\x16\x86\xfa\
+\x1f\xb9\x141\x13\x93\x15Bw]\xe6\x95\xd1F\x09n\
+\x07W\xb3\x221\x03\x7f\xa5\x05h\x09&)\xe4I\xef\
+o\x9edi\xb3\x0d\xdf=\x17q:\xe7R\x8a\x90D\
+\xeb\x1a\xe6f\xbd\x0fb\xe30A\xa1\xc6\xd4^\x09V\
+W\xe7o\xb3\xa4\xd1\xee-9\xa4\xfeaZ\x1f\xc4\xa9\
+^\x86\x82\xf8o\xb8\x9b\xe5>\x88\x895\x98\x9cPS\
+\xa2\x82\xdc9'\x0a,e\xb4t\xa5\xf8\xce\xb8\xa7\x11\
+\x1f\x0f\x1f\xcc\xa8J\x1f\x5c\xce\x0aF\x1b\xd9\xedZ-\
+(\xc70)\xa1\x96\xd4\xb9=\x5c^d\x09\xa3\xa5\x1c\
+\xe0\xe0\xf9/!.\x8d\xab0 2\xe4j\xb8\x9d?\
+\x09\xebr\xb1\x16\x88\xcd\x98\x8cPK\xd5u\xee3j\
+\xb6\x9fw\xb8\xc5U\xa5j\xdfE#\x11\x8f\xe6]x\
+X\xe3H\x16/\x82\xe9\xe1\x9c\x16b\xf2H\xa1\xbf\xba\
+\xa1`\x87\xdf\xceh)C\x02qh\x89\xa4\xf7\xe1z\
+\xfe0\xdaHI\xc0\xc5\x05\xa8\xb5j\xa7\x04\xa9\xa1\x9b\
+\xc3\xd4Sg\xaaMK\xef\x9a\xb43V\xed8\xb5\x07\
+\xc6\xbf\xe5\xaa\x0eT\x84\xaep?\x13\x09\x8c\xea\xddV\
+\x1b\xf8\x83\x98|\x90\xaf\xd43\xf1_\x86\xb7=\xdf\x7f\
+<[\x1d\xb4\xf4m\x8cw\xeb>\x98\x1d\xa0\xf5\x0f\x17\
+4kW\xabH\x91\x98t\x90\xaf\x15\xa8H\xea\xb3+\
+\xc7\xf9\xdct\xf7i&;r\xdd\x17\xea\x15\x91!\x18\
+g\xdf\x1c'D\xc0\x05\xcd0ZY\xec\x87\xc9\x06\x19\
+\xad\xee\x0b^Q\xbf\xdf9\xdb\xeb41*\xfe\xad\xec\
+\x9d\xaf>\xbcx\xb4n\xe2\x18S_\x17\xac\x11\xfa\xc2\
+\x0d\x0d\xe4\xf2\xc8\x1eWh\x03]\x84\xc9\x06\x99)j\
+\x1c\xf9\xd2\xaa\xf1\xea7\xe91\xea\xb2\xdcM\xea\x81\xd2\
+\x1c5\xa34\xef\x1c\xa5\x1c\xde\xaa\x17*\x1f\xb1\xf6s\
+\xf5\xff\xe6>\xad\xb7\xe4\xc1\xd8\x19\xaa\xfc\xb6\xe1=\x03\
+\xe1\x8a8>\x80 \x08\xf5o\xd9\xa4m\xa4\xd4\x13\x13\
+\x0c\x82\xa0:\xaaq*b\x08\xdc\xd1\x87t\x88\x11/\
+G5/\xa8\xb5\xea\x1c\xdd\xb7IQ\xee-\x1d\x1b4\
+%\xaa\x91+&\xbc\xd0\xa8\xa8\x15y\xbf\xa4QMj\
+\xf0\xb2w\xd5\xa1+B\x1b\xd5\x93\xc9c\x11\xc3\x86\xb5\
+\xafSL\xd7\xcb\xe0\x92>\xfb(&\xfc\x0f\x93\xea\x5c\
+\xfd%\xe6\x11u\xd4\xba\x09\xea\x84\xb4h\x8f\xfa*m\
+\xba*\xefIhR3\xf6'\xa9q\x19\xc9M\x8a:\
+\x08$\xe7mnTk\xf2\xb7\xeb_\xf3\x9b\x12}\xa1\
+?\xff\xdc\xf3|e\x95\xe5\xeb\xb7\xac\x9aR\xe5\xe9S\
+*\x0f\xfcm\xf6 \xcc\xfd\x06\xa4\xedn?\x86K\xfa\
+\x22\xa7V\x11\xba\xe2\xf2B\xe3\x1fo\xde\xda\xf0\xb5\xba\
+\xbe \x8d\xa9n\x04\xa0\xe5|\xf1c\x14\xe6\xbc\x87\xcb\
+\x0e(6\xdeZT\xc7\x05N\xb7\xb8\x0e\x93\xa9y\xa2\
+\xcaQ\x1fl\x99lxr>\xf0\x0f\x85'\x8b\xd5\xdf\
+E\xf5\xc4\x5co\xf8\xb2\xc3J\x18f\xebrj\x87b\
+\x12y\xa7\xeb\xa6?\xa8\xa7+-\xca^\xabV\x99t\
+\x15\x15\x18O\xe8\x96\x1f0\xbf=\xe6\xdeJ\x83\xe1\x9a\
+\xde_\xc9\xcd\xc7$j\xbd\xae\x8a\xea\xa5>\xb6\xec\x1d\
+\xfdl\x96\xb5\xb6\xde\xe0\x5cJ\xaa\xca\xd4k\xa2\x1f\xc0\
+\xbcnX9\x1d#{\xfc\x16\xee\xd9B\x9c\xb2\xf0\x11\
+&\x8f\xefE\x05P\xc8x\xe9\xc3\xd8\x11\xedg)`\
+\x8fO\xb6\xb91\x97=I\x16C\xe1\x9e-1\xda\xc8\
+n\xd7\xa2C\xae9\x15\xafz%\xbe\xaaW\xa1\xca+\
+/\x84\x8b1\x02uv\xb8vz_\xcc\xe1\x86U\xe1\
+\x0a\x0f\xba\x06.\xda\xdc\xb3Z\xb78\x0b\x93\xc6|\xdd\
+5w\xa8\xbek\xa2Z\xab\x00\x99\x09\xec\xa6\x82\x09\xd3\
+\xe0\xa2\xcdN\xf5B?1+\x18/\xd5yEJ\x99\
+5)\xaf>\xa9\xf7S\xc3\x5cm\xb8o\x993R\xbc\
+\x1dn\xda\xf4\xaev5&\x8b\xf5\x8c\xf7\xc3\xadS\xd4\
+mE{\xe1r\x16\xe2\xeb\x1d31?=k)\xdc\
+\xb4\xb1\xb3ZE\x0c\xc1$\xb1\xb6\xae\x9f\xfe\x10R\xca\
+,\x02\x8d?5\xaf\xc4\xbc\xf4\xf8\xb1L\x84\xabz\xb8\
+\xc0\xa0\x0d\xd0FL\x12\xb6j\x0d\xd0\xbd}\xa4\x94\xf9\
+\x8f\x99\x07\x16c.z\xd6j\x18k\x03\x04\xc8R\x1f\
+L\x0evu\xe5\xd4\x9eH)\xf3\x03gjj\xd4n\
+\xf1\xcfc\x0ez\xae\x9b\x80\xaa`\xf5w\xb5\xc2\x16L\
+\x0e\xfb\xa5\x94\x1d./\x82#\x1a\xcc\xe2\xec\xf5\x98w\
+\x9e\xcc\xd6-\xae\x85\xc1\xd6\xfd(\xa6H\x0fab\xd8\
+\xb7\xaf\x17\x95\x1b\xacM)\xcb\x823\x1a\xc4\x83I#\
+1\xdf<]\xe3U\x84\xdep\xd9_2\x10pV\xcb\
+aJ\x19\xf0\x1d\x9b\x0bw\xa1\x15\x0f\xcen\x9b\xc8@\
+\x88\x08\x0a\xc2d\xe0S\x7f\x9f\xfd\xd8\xcf\xe5!\xe9\xec\
+\x11\xb4\x8e!\xcbQ`\xbc\x91\x06\x91\xf7\xc1l\x15a\
+\x01&\x03\xf4\xc7\x19\xfd\x90R\xd6J\xe8\x98\xa6\xbd\x12\
+\x8c\xf9\xd4p\x1a\xd8\x5c\xbeo\x8bE\x04\xff\x15\xb7\xc5\
+\xa0\xc6R\xcaNTW\xc0E[\xc0\xf05\x9fa\x0e\
+y\xe8W\xd6N\x16\xff\xcco\xba\x97\x22\xfd\x80I\x00\
+5'\xa5\x8c\x8c\x97\xca\x0b\x82\xc6\xa1\xec\x0f\x14\x18\xf7\
+\x94\x99 }\xc7\xa5\xd1v\x90\xc5+\xb5\x01\xa8\xc4$\
+\x80\xbcI)\xcb\xaf@J\x99'\xe8\x03$\xe6K\x83\
+5\x13\xca\xdbD\x8b\xed\xf9\xcb@\x90\xc5P\x04\x1f\xf2\
+EJ\x195\x8f\x04\xbf@\xbf\x00P\x82\xd1\xd3\xd9\xad\
+0\x96/\xa7\x0d\xebr\xb1\xf6\xe2y\x08>\xe4\xeb\xf2\
+\x90\xe8\xbfV\xcb\x97i\xd31/<tsp$\x8b\
+\x17\xf1\x93\x81 \x0b\x03\x11t\xc8(\xdd2\x1b\x1d\x87\
++OW\xa97\xcdz\x14\xf3\xa1!)\xc2\xc3<]\
+bX\x8c\xa0Cf\xa7\x94\x9d\xe2,\xa5L\xd9;\x1f\
+s\xa0\xe1+\xbc\x89|\xecj\xddA\xd7#\xdd\xcbG\
+\x89\xdanI\xbd/\xfe9\x8cE3\xf5\xe7\x98\x01\xea\
+\xeb\xeb&\xa89'\x0a\xb80[\xfa\xe3\xd2e\xce\x10\
+\xc4\xbe\x81\xe2\xe2\x5c\xb4\xce\xd1\xfe\xaa|\x88`\xfbF\
+\x03\x16\xbf\xf1s2;}\x81\xa6\xf6\xe5\x18\x97\xa6\xf5\
+T\xf2\xfb\xdc\xecn\x13\x0e\xa5 \xe6\x5c6\x86\x0c\xeb\
+r\xb1f\xb6\x87\x11l\xdf(6c\xf99\x0b\x8bj\
+\xcaF\xec\x9e\xa7\x06\xcd\x7f\x09\xe3\xd3\xc4/\x02^>\
+\xa4\xd1\x99\xb5\x94\xf0\x22\xe2^_\xd9\x8e\x98\x81\xbf\xb2\
+\xf1Y\xad\xf4 \x82\xec\x1b\xdd0\xa3_\xa3\xd7Z3\
+\xcb\xf2\xd4\xaf\xd2\xa6\xab\xc1\x9a\xf1\xa2@I}\xf5^\
+8\x9c\x9b\xdd\xed\xb2\xdcM\x889o\xd5\xc0\xb4\x17\x9c\
+\x8d \xfbF\xe3\xb6\x867{\xb1e\x9f(P\xbfM\
+\x8f\xd1/\x04\xe0\xee\xfc/J\xca^\xc7\x8d\xe1\xd2\x1f\
+\x17\xc4\xbc\xde\x87\xb2\xe9\xf6\xbc\x9a\x1b\x16\xe2\xc4\x8d1\
+\xdf\xe8\x8a\xc8\x10\xafoPU\xd7\x9c\xd6\x7fBOH\
+\x8bV\xfb%\x8d\xd2\xffo\xf1:\x8eB\xc2\xf3\xdc\xa4\
+\x86-\xc9A\x81\xf1\x86n\x94u\x88\x11/\xb7\xe1\x8d\
+1\xe1I\x04\xd77\x1a\xb6\xe2?>[\x84\x85'\x8b\
+\xf5\xb3\xdf77L\xd4w\xbe\x9d\xa6\xf5\xe1j,\xe3\
+3S\xb8\xd9\xdd\xf6\xc1\xee\xb6\x81\xd2\x8b\xe2cv<\
+B\x88Gp}\xf3qgk\xd1nC?\xa8\x1c(\
+\xcdQ\xe32\x92\xd5\xffl\x99\xac>\xb2d\x8cz\xf3\
+\xacG\xf5\xba\x04f\x5c\xc1\xbd-\xf6\x09S\xc7\xf3\xde\
+\xf8g\xb9\xd9\xdd\xae\xc8\xdb\x825T_sle\xb4\
+m\xc3{\x06j[\xf6*\x04\xb6\xf5\xa2\x0aX\xfe\x80\
+>\xc6\x91\x09/\xcf\xdd\xa47u\x0c\xdd\xf2\x83\xbe\xc3\
+\x0eY\xf0O\xf5\xf69C\x9a\x9dvvu\xf4\xfd\xfa\
+\xcd\xa6\xbb\xe7\x0d\xd3\x8b]\x8f\xdd\xf4\xbd\x1a\xb1'^\
+\xddP\xb0\xe3\xe7\x0e\xbdf\xa7\xb0-\xc8Z\xcd\xcd\xee\
+\xf6\xfe\x85#\xb0\x8e\xce=\xb7=\x19\x18\xd5\xbb\xad\x9d\
+\x8a\xce\x0cE`\xed\x9f\xb2D\xdd\x16\x8a\xabJ=\xaa\
+\xb9\x98}Q\x83\xba\xd3\xf2\xb2\xbb]\x99\xb7\x15k\xa9\
+\xde\xba\x12\x9f@7\x06\xe8\x1c\x0d^\xf6.\x17\x86\xd0\
+}\xc1+\xa6\x8f\xed\xd2\xdc\x8d\xdc\xecn{&\xfe\x0b\
+\xeb\xe9\xdc\x0fe\xf3\x90\x85\x00\x9d\x93\x81\xb0\xbb8\x93\
+\x0b3\xb8g\xde0\xd3\xc7\xb7\xef\xa2\x91\xdc\x98\xed\xaa\
+\xc3\xa9XS\xe7\x1d%\xd8\x22+\xc1\xe9\x96\x1eE@\
+[\xaf\x0f\xb6L\xe6\xe6\xc6\xd35\xd1\x0f\xf8\xe5\x88&\
+\xfd\xd8\x01n\x0c\x972O\xb0\xaelV\x09\xcc\xe5\x96\
+\x22\x10\xcc\xd6\xe9\x1f\xb1\x8f\xab'OWra\x02{\
+K\x0e\xf9m\x9c\xa9:\x18n\x95\xf1zn+\x84\xb1\
+\xed\xb4\xaa\xe3\x02\xd4Bh\xfd\x8eku\xfe6nL\
+\x80\xb2\x1c\xfc5\xd6\x1d\x22C\xd4\xdc\xf2#\xdc\x8c5\
+u\xba\xc0\x1a\xabS+\x81\xe9]\xed\x14\xe9\x16\x04\xb1\
+uz\x91\xa3\xdd\x16\xddn\xfbK\xcc#\xcc\x5c\x83f\
+\x9d9\x19\xc9Xcu\xf3\xbc\xdd\xd2M\xec~\x1c\x93\
+\xc5\xb7\x10D\xefug\xdc\xd3jy\xf5In\x16\xbf\
+\x15Z\xb9P\xb1q\xear\xc0\xcb\x1f7\xeaj\x81\xb5\
+\xf6\xb3F\xb1\x9c_\xbb\x02\x01\xf4N\xd4\x8ez[\xd1\
+^n\x8c\xf6`i\xaeeZp\xcf:\xb0\x94\x9bq\
+\xffa\xd7\x1c\xac\xb7_\xb4\x84\xe5\x94\xafj\x04\xd0\xbb\
+sZ\xfa\x89\xc7\x0b\xd4\x0d\x96.\x16Xe\xfc\x1fX\
+\xf4\x1a7c_Q]\x89N\xbc\xbf\xe4\xdbV1\x99\
+\x02F\xb5\x22\x11<\xefD\x15\xb9x\x81\x8eIz$\
+\xbeb\xb9?vt5\x99\x17\xde\xd9\xf8-\xd6\xddO\
+9\xb7\x8a\x18\xc2^~\xad,|\x84\xe0\xb5\x5cTw\
+\x96\x17\xe8\xcb\xff\xdd~\xb8\xc0\x80\x0fe\xf5\x8fp\xa8\
+\x08\x10\xd6\x9f\xbe\xbb\xfd\x0f\xcek98:\xe0iG\
+K;G+7#\xa4\xac\x88\xd35g\xb8\x89\xc7\xc0\
+\xa5c\xb0\x0ek\xb5\x94-\xa7\x8d\x19x\x89\xf6\xd0\x15\
+\x08\x5c\xf3\xf3;\xa7\xefO\xe2faG\xef_\xc4D\
+\xdd\x5c\x9e\xea%\xcc\xcb\x5c\x89\xb5X\xab\x13\x8ed\xf1\
+\x22vJ**Aw\x22h\xcd\xbf\x1d\xc6K\xd6A\
+A\xc5Q\xbd#0+\xb1y!\xe5#n\xcc\x96\xd2\
+\xdd\xfcqM\xda\x9a\xb5\x12\xa4.\x0c]\xd1\x15F\x22\
+hM\xeb\xd1\xa5o\xe9\x9d\x12x\x80n\xc1Q\x1d[\
+\x96\xe2C\xb5w\x1bk\xaai7^[\xfb9\xd6\xa5\
+.i8\x1a;\xdaD\x94H\xceK\xb3AJ-\xa2\
+E\xccj\x87\xdf\xe4\xbc\xcd\xdc\x98\xed\x9a\xfc\xedX\x9f\
+\xb5u\x12f\xb2d\xb69\x08Z\xc3\xb7\x93\xe8#\xd8\
+\x89\xea\x0a.\x16\xef\x9e\x92LK\xe5\xcfz#J\x8b\
+\xe2\x05*\xfe~\x836G\xb1V\x85CL\x18\xed\xe5\
+\x91=\xae@\xb0\xce\x15u\x1e\xa0\x9b:\xbc\x5c\xbd\xa5\
+2\x89\x93w\xc5\xa9WN\xed\xc9|\xec(5\x8d'\
+\xa8\x16\x07\xd6\xac\xa8\xb6Q\x82\xdb\xb1P\xbf6\x18\xc1\
+\xfa%\xcb`S\xe1N\xae\x16+\x1d\x1b<\x95\xfc\xbe\
+\xadR\xf2\x8a*K\xb8\x89\xdf\x8c\xfdIX\xbb$Y\
+\x14\xf1q\x8c1Q3C^\xa0l\x03)\xe1E\xdb\
+\xc5\x90\xa7\x86\x90y\xe5\x85X\xb7\xba\xd9\x0a\xaf\xa2X\
+8c\xa26\xe0\xb4\xdb\xb3;\xb4\xfb\xbbk\xeeP[\
+\xc6\xf0\xb3\xed\x91\x5c\xfd:\xa1,\x0c\xee?\x92)\xd2\
+\x0f,|\x1c\xdb\x0c\x93=W\xd4\xae\xdb\xde9\x9a\xa7\
+l]\x88\xfa\xb9\x94q\x5c\x99\xadU\xafP\x9bj\xb6\
+\xb2\xb8\xde\xdaN\x9b,^D\xcd\xd3`\xb0\xe7\xaa\xbd\
+\x12\xac\xae\xcd\xdfn\xdb\xc59>5\xc2\xd6\xf1\x0b\x99\
+\xff2Wf\xdb\x7f\xf1h\xac[\xbaI\x16\x1az\xa1\
+e\xbd\xb6\x9d,\xfe\x19A\xf2\x9c\xf6\x95Y\x96g\xbb\
+\x85I5\x0e\xa8\xf3\xaf\x9dcwG\xdcS\x5c\x99\xad\
+?Z\xc9[\xf3&Y\xd0\xf5V.>\xd3\x0fAj\
+\xfc2CF\xa9\xbd\x0c\xf7\xed\x8d\xdf\xd8>nt\xf3\
+\xcd\xee\x19$9'\x0a\xd4\x1f\x8f\xee\xd3\xebAt\x9c\
+\xda\x1d\xebU?\xb7\x15\x1f\xb0\xae\xd9*\xd2\xeb\x08R\
+\xe3\xfas\xcc\x00u\xd3\x91t\xdb,\xd4[c\x07\xdb\
+>f\xb7\xc5>\xc1L<(\x97;[3N\xaa\xb7\
+A\xc6I]'\xc2v\xc6\xaa\x1f\xa7\xca\xea\xe8\xf5_\
+\xaa\xc3V~\xa0\xf6K\x1a\xa5\xe7~\xd3\x1f\x11;\xe4\
+BsymW3\xdb\x89\x08P\xf3\xf2o\xbfJ\x9b\
+\xce|\x09?\xba\x09\xc7\xea5\xdc\x96\x88\x8a\xe7\x98\xcd\
+\xa93\xd5j~E\x91\x9aZ\xb4G]\x94\xbdV\xcf\
+\x7f\x9d\xa4\x99\xe6'\xdb\xdc\xea[\x1b\xbe\xd6\xdb\xae\x93\
+iR\x06\x08\xfd\x01\x87i\x1ab\xb6_X9\x13!\
+\x1e\x01j\xbe\x84\x84\xe7\xd5U\x87S\x995[\xdaA\
+\xf1\x10\xa7w[ye\xf7\xe4\xe9J=\x7f5\xfd\xd8\
+\x01=\xde\xf1\x99)\xaa\xb2w\xbe~u\xfb\xfd\xcd\x93\
+\xd4W\xd7\xfcW}b\xf9{j\x9f\x85\xc3\xd5\xaes\
+\x9f\xd1\xcd\xd3\xee\xe7\xe0\x8ch\x8e\x95\xcd6\x0d\x01\xf2\
+\xcet#\xf7.P\xcbN\x95\xfb\xd5<i\xa7}\xb8\
+\xbcH\xddR\xb8K/\xc0\xf2\x93V\xe4mQwh\
+FA\x97\x16\xea\xee\xc6\x8f\x9c,\xe6\xa2\xa8{\xda\xd1\
+\xfd\xfa\xfbV\x9d\xddm\xee*\xce\xd0\xb3K\xe6\x1fZ\
+\xa5N\xdd\x9b\xa8N\xdc1C\xfd\xcf\x96\xc9\xea\x88\xb5\
+\x9f\xeb\xb7\xe7\xa8\x87\xd9=\xf3\x86\xa9\x7f\x8d\x19h\x99\
+&\x96\x90WJ\xb5\xb2\xd9\x96!@\xde\xeb\xf7Q\xbd\
+\xd5!\xcb\xc7\xaa\xe1\xbb\xe7\xea\x1f+N\xf9\xa8\xbc\x1f\
+\xed\xac\xb2\xca\xf2\xd5\x8dGv\xa8\x89YkTyO\
+\x82\xfes\x94\xaaq=\xb6\xec\x1d=G\xf6O3\x07\
+4\xab5\x0a\xd5<%C!\xa3!\xe3\xbd*\xaa\x97\
+\xadcB\x85thG\xba\xbe M?\x03\x8d\xcbH\
+V\xa3\xf6%\xea1\xa2\x9d)\xb5\xcf\xa1\x9d/\x8d%\
+\x9d\x87\xd2\x0e\x95~\xde\x07\xcf\x7fI\xcfW\xa5z\xc5\
+\xd7M\x7f\x10\xa6\xcb\xa6\x8a-i\xb4m\xa2\xc5\xf6\x08\
+\x8eoE_\x85\xef\x8c{Z_\xbc/\xaf\xfaX\xfd\
+(5B_\xe4d\x96uE\xff\xd9\x17?F\xa9\xa1\
+\x9b\xc3\xf4E\xfft\xf2\xbf\xd5\xde\xdaO\xd2;\xe2\x9e\
+4\xb4#\x02\xfd\xec\xbd\xc7\xe6\x09\xf0\xaf\xac\xfe\xd4\x80\
+K UjqU\xa9\xbeK\xde]\x9c\xa9\x1b9\xfd\
+\x82\xf8\xe9l\x96b\xfa\xd3\xf9,\xc5\xf4\xa73\xda\xa1\
++B\xf5?\x8e\xbd\x12_\xd5\xff@\xfet^\xdb9\
+\xba/z\x88\x19W#\xc1e\xbd\x024\x91\xe2\xed\x08\
+\x0ed7}\x996\x9d\x99\x8f\x95T\x88\x9eR\x0b\xe9\
+\xd8\x832^\xc8\xc0\xe9|8\xe6\xc0\x12\xdd\xc0\xe9\xb8\
+\xe3\xbf\xdb\x14\xdd\xc0G\xae\xfbB\xff\x03N\x06\xfe\xf0\
+\xe2\xd1?\x1b8\x0f\x1f<[$\xa5\xdb\xad\xd6k]\
+.\x0b}\x11\x1c\xc8nZ\x9c\xbd\x9e\x9b\xcb\x0ct\xdc\
+\x84\x98\x9f\x7fmW\xeac\xc5j_\xcf 8\x90\xdd\
+t\xa8\xec07f\x9b\xc3IvI\x0b\xd3\xbf\x9e\xb2\
+\xde1\x82,\xbc\x81\xc0@v\xfb`I\x85\xd0y\x81\
+.B \xee\xe7\x1f#H\xaf[\xf0\x18A\xfc\x04\xc1\
+\x81\xec$\xaa\xcd\xcb\x13Ks6 \xee\xe7\xd7G\x90\
+\x85\x8f\xac\x98\xf65\x19\xc1\x81\xec$\xca\x00\xe0\x09t\
+ih\xb0\xd4\xe2$+\x9am\x1c\x0f\x83\xffP\xd2\xeb\
+\xfa\x97\xdde\xb9\x9b\xf4\xab\x94\x901\xa2vB\x0b\xb3\
+\xd6\xa8\x13~\x9c\xa6\xdf\xe3\xf7G\xac\xe9\xdf\xe6\x89o\
+\xd2c`\xb0\xf55\xdb\x8af\x9bb\xe7A\xa7\xa4t\
+\xca\x83\x04\xe6C\xe7\xa6TL\xa5\x9d\x12dj\xcc\xe9\
+\x02\x08O\x84n\xf9\x01\xe6Z_\xc9V\xccFH\xb7\
+\xf3\xa0G\xef_\x04\xd7\xf33\x9fnSL\x8d\xf9\xc1\
+\xd2\x5c\xae\xc6\x97j4\xc0\x5c\xeb\xe9G+\x9a\xed!\
+\xbb\x0ex\x979C\xb8\xfa*mU\xa8\xfd\x0e\xd5\x1b\
+0#\xe6TE\xebL\x0d_1\xa7\xdbi0\xd7z\
+\xca\xb0\xe21B\xbe]\x07|\xcc\x86\x89p:\x8b\xf0\
+\xce\xc6oM\xab\x89\xc0\x1b!\x0b\xfe\x09s\xad'!\
+\xd7\x8af{\xcc\xae\x03N\x1f\x0e\x805\xa0\xe3\x1c3\
+b\xfe|\xca\x87\xdc\x8d-\x0f\x85\xe0\xbdP\x91\x15\xcd\
+\xf6\x84]\x07\x9c\xce\x0a\x815\x98\x93\x91lJ\xcc?\
+\xdf>\x95\xbb\xb1\xfd\x83\x81E\x8b\x18V\xa9\x15\xcd\xb6\
+\x1a\x95\x9f\x80\xd1|\xbfs\xb6)1O8\x94\xc2\xd9\
+yx\x15\x8c\xb5\xe1c\x84*k9mh\xe8\x85v\
+\x1ep\xaaI\xca\xdb\xc7\x12\xabB\xb5t\xcd\x88\xf9\xbe\
+\xe3\xd9\x5c\x8dkn\xf9\x11\x18k\xc3\xaaq\xa8\x8e\x0b\
+,\xe3\xb5\x9de\xf1\xd7v\x1f\xf4%9\xeb\xe1t~\
+\x86\x8a\xc2\x98\xd1.\x86\xea\x08\xb3\xde\x1f\xae\xa5l?\
+\x8a\xba\x08\x9e\xe4\x88\x19x\x89e\xcc60\xaaw[\
+\xbb\x0f\xf8\x1dqO\xa9%Uep<?A\xed\xb6\
+\xa9 \xba\x19\xb1\xa6\x82\xe8\xbcA](`\xac\x0d\xab\
+\xfd\x94{\xda\xc0lM\x16U\xc6\xa7k\xba\xd55\xa7\
+\xe1~&A\x1d\x0d\xe6e\xae\xd4\x1b!\x9a\x15gj\
+o\xc3\x1b3\x0f,\x86\xb1\xb2`\xb6<\x1c#\xd4\xd5\
+\xd6\xa2\xddpA\x93\x18\x9f\x1a\x81\xec\x13\x13\xf8\x16u\
+\x11\xd88F\xb0\xfb\x07\xb2\xf3EmF\x809P&\
+\x88\xd9\xf1\x9d\x9b\xb9\x82\xbbq\xa6\xee\xc00V\x06>\
+\x90\x9dM\xfd:\xc5K\x00\xa8\xf1\x220\x07\xea\x8fe\
+v|\xf7\x94dr7\xce\xc3\xd7|\x06ce\x22\xf5\
+\xcb\xe6\x97\x1a\xce\xd73+B\xe1\x82&A\x1f&\xcd\
+\x8c-e;\xf8\xaa\x85<K<\x8e\xba\x08L]j\
+8\xc6K\x00\xee\x8d\x7f\x16.h\x12WE\xf52\xfd\
+#(\x8ft_\xf0\x0a\x8c\xb5a\x15Z\xaf\x07\x99[\
+<\xccK\x00x\xac\x08\xe5\xafL\x04\xb3c;\x94\xd3\
+_-\xb7\xc5>\x01ce\xa7\x10\x8d}K,6\xa4\
+\xac\xb2|\xb8\xa1\xc1\xec8v\xc0\xf4\xb8~\x9c*s\
+9\xd6WG\xdf\x0fcmX\x07Q<\xdc\xcf\xa2|\
+[`,\x8b\xb3\xd7\x9b\x1e\xd7\xd8\x8c\xe5\xdc\x8d3\xd5\
+\x09\x86\xa9\xb2U<|%OA\xa06-\xc0X\x22\
+\xf6\xc4\x9b\x1e\xd7\x9d\xc5\x07\xb9\x1b\xe7\xbc\xf2B\x98\xaa\
+g-\xb7\x9e\xd9*B,OA\x18\xbd\xfeK\xb8\xa1\
+\xc1|\xb8u\x8a\xb97\x85\x94`\xb5\x8a\xc3L\x84\x1f\
+\x8f\xee\x83\xa9z\xea\xae\xabH1\x963[\xed\xa1~\
+\xe0)\x08\xfd\x92F\xc1\x0d\x0d\xe6\xe5U\x1f\x9b^\xff\
+\x82G\xe8H\x0c\xc6\xda\xb0\x9cn\xf1{\x0bf#H\
+\xe3y\x0a\xc2M\xb3\x1e\x85\x1b\x1a\xcc\x83I#M\x8d\
+\xe9\x93\xc9c\xb9\x1cg\xba\x11\x09c\xf5\xa8qV\xcc\
+\xb3\x1d\xc5\xd5\xcf\x0b\xb7\xa4\x9e\xa8\xae\x80#\x1a\x085\
+\xda43\xa6tl\xc1#\xdf\xa5\xcf\x82\xa9z\x92,\
+\xbef=\xb3\x95\xc5\xa1\xbc\x05\x82j\x80\x02\xe3\xa0|\
+f3\xe39\xeb\xc0R.\xc7\xf9\x03\xd4Eh\xc4l\
+\x85'\xadwf+\x0b}y\x0bD\xec\xc1epD\
+\x838Zy\xdc\xf4x\xa6\x1d\xdd\xcf\xe5X\x8fX\xfb\
+9L\xd5\xd3/XY\xeac\xbd3\xdb\x88\xa0\xdbx\
+\x0b\xc4'\xdb\xdcpE\x9b|!o\xa7\x04\xe9}\xb8\
+xd\xf0\xb2wa\xac\x9e4E\xba\xc5rf\xdb6\
+\xbcg o\x81xv\xe58\xb8\xa2A,\xccZc\
+j,\xe9|\x98Wz$\xa2.\x82'Qc\x04\x87\
+\x15\xd1\x1e\xae\x84\xa7@\x08\x09\xcf\xc3\x15\x0db\xca\xee\
+\xb9\xa6\xc6\x92vw\xf8\x10\x09\x9dW\x17\xe1\xa8\xc3\xaa\
+\xb8\x14q\x1bO\xc1\xa0\x8aT5*\x0a\xd2\x18\x81\xd9\
+\xc5\xac\xe9\xdf\xe3\x95k\xa2\x1f\x80\xb16l\xb6[\xac\
+k\xb6\xb28\x97\xb7\x80P\x0bh\xe0{^\x5c5\xde\
+\xd48\xce\xd8\x9f\xc4\xe58\xd3\x8d9\x98\xaaG\xcd\xb6\
+\xb2\xd9~\xc9[@V\xe4m\x813\x1a\xc0\x03\x8b^\
+35\x8e\xa9E{\xb8\x1c\xe7\xc3\xe5E0U\xcf\xfa\
+\xdc\xcaf\xfb\x1ao\x01\x09\xdf=\x17\xceh\x00\xb7\xc6\
+\x0e6\xef#\x88\x22\xe9\xad\xd2y\x84\xd2\xdd`\xaa\x9e\
+..\x89\xafX\xd9l\xfb\xf1\x16\x901\x1b&\xc2\x19\
+}\x0c\x9d\x83w\x9c\xda\xdd\xb4\x18\xfe#\xf6qn\xc7\
+z9\xea\x224R\x84F|\xc0\xb2f\xdbV\xeev\
+\x03o\x01\x19\xb0\xf8\x0d\xb8\xa3\x8f9r\xb2\xd8\xd4\x18\
+\x0eZ\xfa6\xb7cM\xb7\xe6`\xac\x1e\xaf\xeav\xb6\
+\xac\xd9\x9emi~\x82\xa7\x80\xfcm\xf6 \xb8\xa3\x8f\
+\xd9V\xb4\xd7\xd4\x18\xfe{\xf3$n\xc7\xfa\xfb\x9d\xb3\
+a\xaa\x0dg\x22\x1c\xb7\x5c\x0b\xf3\x06\x8a\x88o\xe0*\
+\xe9\x99\xe3\xf3>\xa3X\x90\xb5\xda\xd4\x18N\xdb\xb7\x90\
+\xdb\xb1\x1e\xb75\x1c\xc6\xda\x90\x14a\x8d\xc3\xeah\x0f\
+:\x99\xb7\xc0P\xaf,\xe0;~\xd85\xc7\xd4\xf8m\
+.\xdc\xc5\xedX\xbf\x86\xba\x08\xec\xd4\xb1\xado\xb6\xd2\
+p\xde\x02\x13\x97\x91\x0c\x87\xf4!\xa1\x9b\xc3P*\xd3\
+$\x9eX\xfe\x1e\xcc\xb5\xe1\x0e\x0d\xff\xb4\xbe\xd9\xca\xa2\
+\xc8[`>\xdb\x1e\x09\x87\xf4!\xcf\xa5\x8c\xc3\x99\xbb\
+I\xf4L\xfc\x17\xcc\xb5\xc1j_\xc2}\x967[\x1e\
+\x0b\xd2\xbc\x90\xf2\x11\x1c\xd2\x87\xf4^8\xdc\xb4\xd8=\
+\xb2d\x0c\xd7c};\xea\x224\xa4\x9a\x80\xb0\x10\xa7\
+\x83\x05\xb4\x87\xcd\xe1)8A\xf3_\x82C\xfa\x90[\
+f?nZ\xec\xde\xdb\xf4\x1d\xd7c\xdd9\xba/\xcc\
+\xb5~&\xc2!\x07+\x04\xc8\xe2\x0c\x9e\x82\xd3iZ\
+\x1f\x14\xa4\xf1\x11gjj\xd4+\x22CL\x8b]\xe4\
+\xde\x05\xdc\x8e\xf5\xa93\xd5\xfa\x995\xcc\xf5\xbc\x8fc\
+\x8a0\x8d\x19\xb3u\xc9\xc2\xab\xbc\x05(\xbf\xa2\x08N\
+\xe9\x03\x0a*\x8e\x9a\x1a\xb7\x8dGvp;\xd64g\
+a\xae\x8c~\x1c\xe3\xb9k\xc3\xaa\xc3\xa9pJ\x1f\xb0\
+\xa5p\x97\xa9\x99\x08\xa5\xa7\xca\xb9\x1dkJY\x84\xb9\
+2\xd2\x9d\xc1#1\x03\x7f\xa5=t)O\x01\x8a\xd8\
+\x13\x0f\xa7\xf4\x01\x09\x87RL\x8b\xd9_c\x06r=\
+\xd6T\xb1\x0e\xe6ZO%t\x13\xd6\xc1\x12\xdaC/\
+\xe5)H\xefl\xfc\x16N\xe9\x03&\xed\x8c5-f\
+\xfd\x17\x8f\xe6z\xacg\x1fD]\x84\xfa)_\xe2\x22\
+\x07k\xb8\xdc\xc2\x7fx\x0a\xd2\xc0\xa5c\xe0\x94>\xe0\
+\xfd\xcd\x93L\x8b\xd9\xdb\x1b\xbf\xc1\x1f6\x18\xec\xf9\xad\
+\xcb\xc72g\xb6\x01\x8a\xd0\x9b\xa7 \xf1\x5c\xa6\xcf\x97\
+\x0c[\xf9\x01\xb7G?\x85'\x8bM\xfd\xf7>J\x8d\
+\x80\xb9\xd6\xcbD\x10C\x983\xdb\x8e\x91=~\xab=\
+|%O\x05ixm\x85\xedK\xcc\xbc\xd1\xb4\xae\xe0\
+G\xcb\xbcw\xe5\xe9S\xea}\xf1\xcf\xe9mj\xccb\
+\xe4\xda\xff\xc1`\xcf\xcd\xaf-\xef,\x8b\xbfv\xb0\x88\
+\xf6\x02Kx\x0a\xd6\xae\xe2\x0c\xb8e+\xb9y\xd6\xa3\
+\xa6\xc5\xab\xb8\xaa\xd42\xef\xfd\xbf\x1f\xa3LOE{\
+2y,\x0c\xf6\xdc\xe23\x89\x0eV\xd1^`\x14O\
+\xc1\x8a\xcfL\x81[\xb6\x82\xd35g\xd4\xf6J\xb0)\
+\xb1\xfa\xd3\xcc\x01\x96y\xef\x83\xa5\xb9\xea\x95S{\xea\
+\xcf5\xe1\xc7i\xa6\xfd\xbb\xbd\x12_\x85\xc9\x9e#i\
+8\xb3f\x1b\x18\x11\xfcW\x9e\x82\xf5\x85\xb6;\x01\xde\
+cf\xf3\xc1\x87\x92^\xb7\xcc{SV\x84?>\xb4\
+\xde\x11\xf7$\x0c\xb6\x8e\xda(\xc17:X\xc6\xa5\x88\
+\x99\xbc\x04\xeb\xe5U\x1f\xc31[\xc1\xa6\xc2\x9d\xa6\xc5\
+\xeaM\x8b\xf4\x8e\x8b\xcdX~\xces\xfdaZ\x1f}\
+\x87o\x06\xd7NG]\x84:\xda\xef`\x9d\x00\xb7\x10\
+\xc6K\xc0B\xe6\xbf\x0c\xc7l\x05s3W\x98\x16\xab\
+)\x16\xe8\x8a\x5cRU\xa6\xde8\xb3\xbf_\xda\xaa\xa3\
+.\xc2y\xe7\xb5\xb2\xf0-\xf3f\xebR\x84\x87y\x09\
+\xd85\xd1\x0f\xc01[\xc1w\xe9\xb3\xb8\xba^My\
+\xbe\x0d=\x1b\xf5\x053\x1a\xb3kP0P\xbf\xb6/\
+\xfb;\xdb\xb0\x10'O)`GL\xce\x95\xb4\x13\xef\
+n\xfc\xd6\xb48\x1d\xad<\xee\xd7w\xa5\xac\x03J\x17\
+l\xe8\xd9\xa8{\x82\xd1\xa4\xa3.B\xdd,\x84\x93\x1d\
+b\xc4\xcb\x1dv@{\xa18^\x02\xb76\x7f;\x5c\
+\xd3K\x86\xae\x085%F\x7f\x9c\xd1\xcf\xefY\x17T\
+\x03\xb9\xb1\xe73\xbad\xe7\xca\xbc\xad0\xda_4\xcb\
+a\x17\x02di0/\x81S\xf6\xce\x87kzI\xf7\
+\x05\xaf\x98\x12\xa3\xbe\x8bF\xfa\xf5=\xbfM\x8fi\xf2\
+\x19\xd3\x0dn\x22\x1a{p\x19L\xf6\x97\xf3\xda\x81\xb6\
+1[\xda\xa2k/U\xc1C\xe0\xc6n\xfa\x1e\xae\xe9\
+%T\x85\xcb\x8c\x18\x8d^\xff\xa5\xdf\xde\xf1P\xd9a\
+\xf5wQ=\x9b|\xc6\xc9\xbb\xe2\x0c}\x0e\xd4E\xf8\
+YeW\x85\xf5\xfd\x8d\xc3N\xb8\x14!\x96\x87\xe0\x0d\
+Z\xfa6\x5c\xd3\x0b\xaakN\xab\xed\x94 Sb\x14\
+\xee\xc7L\x84\xe6v\xb3}fE\xa8\xa1\xcf\xf1\xe1\xd6\
+)0\xda\xda*_3\x1cv\xc3\xa9\x88\x83x\x08^\
+\x979C\xe0\x9c^\x90s\xa2\xc0\xb4\x18\xad\xce\xdf\xe6\
+\x97w\x5c\x90\xb5\xba\xd9\xcfH)aF\xf2\xda\xda\xcf\
+a\xb6\xfa\xc71i\x80\xed\xcc\x96\xb6\xea\xda\xcb\x9d\xb0\
+{\xf0\xe8\xba\xa9\x99\xc5D\xec\x02}\x9d7+FE\
+\x95%\xa6\xbf\xdf\x89\xea\x0a\xf5\xa6\x16\xd6}\xd8w<\
+\xdb\xb0\xe7\x19\xb2\x1cu\x11\x5cn\xe18\xb3\x85g\x9a\
+\x91\x950\x9b\x87 \xee-9\x04\xf7l!s2\x92\
+M\x89\xcd\x0d~\xcaD\xa0.\xbe-}V\xf7\x9e\x04\
+\xc3\x9e\xc7\xcc\xeaj\x16N\xf9\x9a\xee\xb0+m#\xa5\
+\x9e<\x04\x91~.\x82\x96\xf1\xf5\x8e\x99\xa6\xc4\xe6\x81\
+E\xaf\x99\xfen\xdb\x8f\xee\xf5\xaa\xc0\xce\x0b)\x1f\x19\
+\xf6Lt\xdc\xc5\xbd\xd9F\x04\x05\xd9\xd6l\xa9\xb7\x8f\
+\xf6\x92\x19v\x0f\xe2\x97i\xd3\xe1\x9e-\xc4\xd3m*\
+\xd63\x11\x9a\xca\xa9\xf5W\x8f\xb4\xab\xa3\xef\xe7\xddl\
+\xf79T\xc7\x05\x0e;Cm'\xec\x1e\xc8\x7f\xad\xf9\
+\x14\xee\xd9B\x9eJ~\xdf\x96\x99\x08T\x83\xa15\xcf\
+K\xa9b\xbe\x86\x0a\x95s\x9f\x85\xe0\x16\xdev\xd8\x9d\
+vJ\xd0\xef\xb5\x97=m\xe7@\xf6H|\x05\xee\xd9\
+B\x82\xbd\xdc\xfdY9\x13\x81JFR\x15\xaf\xd6<\
+\xef\xf4\xfdI>\x7f\xae\xdc\xf2#\xbc\x9b\xed\xa9\x0e\xb2\
+x\xa5\x83\x07\xb4\x97M\xb0s0\xfd}\x1d\x94E\xfe\
+\x12\xf3\x88)\xb11\xb3\xcf\x97/\xfa\xa9\xbd\xba\xe6\xbf\
+\x86\x9c!sn\xb6q\x0e^p\xb9\xa5\x07\xed\x1eP\
+\x7f\x17:a\x09*\xf7\xe7\xa9(\x0b\xab\x7f\x04\x93\xb2\
+\xd7\xf9\xe4\x99o\x8b}\xc2\xe7\xcf\xb64w#\xe7G\
+\x08\xd2\xfd\xdc\x98\xad#\xac\xcb\xc5\xdaK\xe7\xd99\xa0\
+\x1b\x0av\xc0E\x9b\x09\x9dK\xda)\x13\xe1\xe4\xe9J\
+\xf5\xd6\xd8\xc1>{n:\x8e\xf0%3\xf6'\xf1l\
+\xb69\x8ed\xf1\x22\x07O\x04\xc8\xe2[v\x0ej\xd4\
+\xbeD\xb8h3Y\x93\xbf\xdd\x94\x98\x8cZ7\xc1\x94\
+\xf7\x19\xb75\xdc\xa7\xcfMEcXL\xb3\xb3h\xd1\
+\x997\x1c\xbc\xe1\x9cvo\x00\x15\x81\xb0kPC7\
+\x87\xc1E\x9bI\xcc\x81%\xb6\xc9D\xd8]\x9c\xa9^\
+\x11\x19\xe2\xd3\xe7~\xdd\xc7\x7f$hnrj\xb6%\
+\x81Q\xbd\xdb:xD{\xf9\xaf\xed\x1a\xd8\xc1\xcb\xde\
+\x85\x8b6\x13\xea(k\x87\xee\x0cT\x83\xb6\xf7\xc2\xe1\
+>\x7f\xee\xbb\xe6\x0e\xf5\xe9sRj\x22\xa7\xdds\xbf\
+p\xf0\x8a3\xb2\xdb\xb5vM\x03\xbb#\xee)\xb8h\
+3\xa1\x9f\xf7v\xc8D\xa0\xa3#\x83>\xe8\xf8\xb4\x03\
+\x08U\xa6\xe3\xd0l\xab]\xe1A\xd78x\xc6\xae\xa5\
+\x17\xe9\xa7$\x95\x0d\x04\xd6X\xfcFg\x22\x90\x91\x1b\
+\xd9\xad6>3\x85\xb9\x9cf\x94R\xb4\x18\x81\x11A\
+w\xdb5\xc0\xfb\x0d\xac\xdad'\xee\x8d\x7f\xd6\xf0X\
+\xdc\xbfp\x84\xa1\xef\xf0\xcf\xd5\x9f\x18\xfa\xfcom\xf8\
+\xdag\xcfz\xcb\xec\xc7\xf9\xfb0\x16)\xde\xee\x00\xfa\
+\xd9\xedF;\x06xQ\xf6Z8i30rGh\
+F&\x02\xf5\xf32\xba-x\xb7\xf8\xe7}\xf6\xbcW\
+E\xf5\xe2\xcdlW\xc3em^\x0dl\xe2\x8e\x19p\
+\xd2&\xa0:\xaff\xc4\xc2\xa863Tg\xe0v\x13\
+*h\xd1\xa5\x8f\x92\xaa\xb2V?oy\xf5I\xfe\xce\
+k\x15A\x82\xcb\x9e\xb3\xbb\x15V\xda-\xc8\xc3\xd7|\
+\x067m\x02\xaa\xfd\xcbr&\xc2g\xdb#\x99\xfa\xa5\
+d\xd6\x05\x12\x0bi9\xdc\xb5\xfe\x872\xc9n\x81\xa6\
+4 \xd08\xcbr7\x99\x12\x8b#\x06d\x22\xec-\
+\xc9R;N\xedn\xda|z\x7f\xf3\xa4V?\xf3\xe6\
+\xc2]\x5c\x99-}\x13\x82\xbb6|v\xbb\xdcN\x81\
+\xbe\x01\x05i\x9a$r\xef\x02f3\x11\x1e^<\xda\
+\xd4\xf9\x142\xff\xe5V?3\xed\x8e9*\xa3\x98\x04\
+W\xe5(3\xa1\xb8\xaa\x14\x8e\xda\x08\x1f\xa7\xcaLf\
+\x22\xcc>\xb8\xd4/\xfd\xed\xcaN\x95[2\x17\xd8\x82\
+\xaaA\x06BS5\x13\xb4\xbfFv\x0a\xfa\xa6\xc2\x9d\
+p\xd4Fxe\xb5\xf1\xb7\x99|}\xdd\x95\xfe\x80\xde\
+8\xf3a\xbf\xcc\xa7\xe5\xb9\x9bZ\xf5\xec\x13\xd2\xa2y\
+1\xdb\xf9p\xd3\xa6v\xb7\x8a\xd0\x95\xfe*\xd9%\xe8\
+F\x14\x7f\xb6\x13\xfd\x92F\x19\x1e\x83\xb0\x9d\xb1>}\
+\xe677L\xf4\xdb|\x1a\x9f\x1a\xd1\xaag\xf7\xa6\xf1\
+$\x83]s\xcf`W\xdb\xfc\xcc\x04\xc5.\x81\xff`\
+\xcbd8j#\xdc\x11\xf7\xa4\xe11H9\xbc\xd5g\
+\xcfK\xa53\xcd\xa8\xbdk\xd4G\xd7\x17W\x8d\xe7a\
+W\x1b\x0e\x17m&\xbf\x9d\x1c\xdc\x91z\xba\xdb!\xf0\
+O&\x8f\x85\xa36\xc2\xef\xa2z2\x93\x89@E\xce\
+\xef\x9e7\xcc\xaf\xf3\x89\xb2\x1f*OWy\xfd\x0e\x03\
+\x16\xbfa\xfb\xca^\x97G\xf6\xb8\x02.\xda\xb2\xcc\x84\
+\xf7\xec\x10|_Wl\xb2\x13\xd4\xcd\xc2\xe8\xf1\xbf~\
+\xfaC>{\xde\xaf\xd2\xa6[bN\xb5\xa6\x8f\x9a\x90\
+\xf0\xbc\xbd\xaf\xe5\xba\xa57\xe1\x9e-\xa4\xb3,\xfe\xda\
+\x0em\xcfi'B\xed\xacA}\xcc\xe8\x85\xd5\xc7G\
+\xb9\xce\x19\xa5y\xa6\xec\xc2\x9b\xa3O\xb7)^\xbf\x07\
+\xb5G\xb7\xb1\xd9\xeeu\xc4\x0c\xbc\x04\xee\xe9\x05NE\
+\x1cd\x87I@\x0b\x15\xd4'1k\x0d3\x99\x08\x03\
+\x96\xbci\x99\xf9D\x1f\x15\xbd\xc5\xccK\x18\xa6K\x16\
+\xfb\xc15\xbdEu\x5c\xe0t\x8b\xebX\x9f\x04Kr\
+\xd6\xc3Y\x1b\x80\xea\x15\x18=\xf6?\xec\x9a\xd3\xea\xe7\
+\x9c\x97\xb9\xd2R\xf3\x89v\xd8Ug\xaa[\xfc\x1e\xc7\
+\xabN\xd89\x03a%\x0c\xb3\xb5y\xb7\x91\xe2\xcd\xda\
+@V\xb1<\x11\xbeM\x8f\x81\xb36\x80\x19\xedYZ\
+\x9b\x89@\xc5_\xfe4s\x80\xe5\xe6\xd4\xc6#-o\
+(J%?\xedyN+\x9el\xa3\x04\xdf\x08\xb7\xf4\
+I\xdd\x04\xe9\x03\x96'\xc3\xc8\xb5\xff\x83\xb36\xc0\xb3\
++\xc7\x19>\xf6\x05\x15\xc7\x98\xcd\xa9mLt9\xc1\
+\x9b\xb45\x9b\xeel\xdf\x83K\xfa\x8a\x89\xbd/\xd5v\
+\xb7\xe9\xacN\x06\xb3Zh\xb3F\xaf\xc4W-\x9d\x89\
+\xb0\xe9H\xba_sj\x1b\xd3\xc0\xa5cZ\xfc>\xf3\
+\x0f\xad\xb2\xa3\xd1\xa6r\xd7\x9a\xdc\xf0\x9be\xb2x\x17\
+\xdd\x0caqB\xd0\xcfPP\x9f\x9bg=j\xd9L\
+\x04jit\x8f\x9fsj\x1b\xd3\x1f\xa6\xf5iq\x96\
+\x8b\xbc'\xc1nF{\xba\xad\x12t'\xdc\xd1\x88\xec\
+\x04\xb7\xf8=\xab\x13\xa3\xb4\x95\x05D\xec\x06\x19\x05\x15\
+V\xb1j&\xc2w\xe9\xb3,?\xa7R\x8b\xf6\xb4\xe8\
+\x9d\xcc\xac\xbdkNQpi\x22\x5c\xd1\xa8\xddmT\
+\xef\xb6\xda g\xb381\xb6\x16\xed\x86\xc3\xd6!\xb7\
+\xfc\x88e3\x11rN\x14\xa8\x9d\xb4\x9d\xa3\xdd>\xbc\
+\x8e\xb1\xe8\xf9\xb3\x97:\xd81\xb2\xc7o\xe1\x8aF~\
+,\x93\xc5~,N\x8e\x99\x07\x16\xc3a\xeb@_\xd3\
+\x8d\x1es\xea\x0d\xe6\x0dO,\x7f\x8f\x899E\xcfi\
+\xb5\x0f\x92\xe6u\xcb\x15\xfa\xc2\x0dM9N\x90\xbec\
+mr|\xb8u\x0a\x1c\xb6\x0es2\x92-\x99\x89\xb0\
+ k53s\x8a\x1ae\x9e\xa9\xa9i\xf6\xbb=\x94\
+\xf4\xba]rj\xbf\x82\x0b\x9a{\x957\x8d\xa5\x092\
+tE(\x1c\xb6\x0e\xd4\x0c\xd3j\x99\x08\xd4|\xf2&\
+\x83?\xda\xf9Z;\x8b\x0f6\xfb\xfd\xee\xb6\xf0\x07\xbf\
+\x16\x18\xedv\xcaN\x82\x0b\x9a\x9a{\xdb\xedV\x96.\
+;\xd0\x97m`\xde\xf9\xa17\xa5\x08\xdf\xdd\xf8-s\
+\xe6\xd3\x92\xae\xc17\xce\xec\xcf\xfc\xe5\x85@\xb7t\x13\
+\xdc\xcf?\xb5\x13\xc6\xb02Q\xae\x9c\xda\xb3E?\xf9\
+\xec\xce\x90\xe5c\x8d\xbdH\xb2\xee\x8b\x16=\xcf\xb6\xa2\
+\xbdj;%\x889\x03z\xa6\x99\xbf\x98h\xee\xb1\xf8\
+~\xe7e\x1f\xbc\x0e\xd7\xf3\x17\xa1\xa1\x17\xba\x14a\x19\
++\x93%\xab,\x1f.{\x161\xe1\x05\xcbtg\xa0\
+44)\xe1E&\x0d\x88v\xab\xcd\xa1\xa8\xb2\x84\xf5\
+]m\x22\xd5J\x81\xe9\xf9sw\x1b\xd9\xedZ-\x18\
+\xc7X\x980\xcbZ\xd9?\xcaNP\xe7a\xabd\x22\
+P\x8a\x18\xcbF\xb4\xefxv\x93\xef\xb8\xa7$\x93\xe5\
+w,\x0c\x88\x0c\xb9\x1ang\x05\xc3\x8d\x08\x0a\xd2\x02\
+Rm\xf5I3\xc9\xc7\xbd\xb0X\x85:\x0d\x04\xb8%\
+\x833\x11\x8e6\xebY\xf2\xca\x0b\xf5\xdbX,\x9b\xad\
+{OB\x93\xefI\x05\xc7\x19}\xbfS\xd4u\x1b.\
+g\xadt\xb07\xad>qF\xf9\xb8\xcb+\xab\x1c(\
+\xcd1t\x9c\xaf\x9b\xfe`\xb3\x9f\x85\xb2DX\xffB\
+O}\xc5\x9a\x22\xce\x84T;\x9c\xd3\xf2\x82\xea\xb8 \
+\xc0-\xcc\xb4\xf2\xc4\xa1<G\xa0\xeae\x0f\xad\x90\x89\
+\xb0\xd0\x84\xe2\xe5f\x88\xd2\xd5\x9a\x22|\xf7\x5c\x16\xd3\
+\xbc\x14\x18\x9bE\xe9\x10#^\xae\x05i\x87U'\x0f\
+\xb5$\x01\xaa\x1a\xbd\x7f\x91\xdf3\x11\xca\xabO\x1a^\
+\x08\xc7L\x1d*;\xdc\xe8\xfb~\xb2\xcd\xcd\xda;\xa5\
+\xe1:\xae\xc5\xa1\x22\xc2\xd4a\xd3\x92W\x0c\xdd\x92\x9e\
+8\xcf;F\x17DiN&\x82\x19\x85\xcb\xcd\xd4\xf4\
+\xfdI\x8d\xbe/\x1da1\xf4>\xc5m\xa7\x8a\x7f\x84\
+\x9b\xb1q~;\xc0\xaa\xe5\x18\xa9\xc9!\xef\xbc\xb6\xf6\
+sC\xc7xE\xde\x96F\xff\xfd\x1f\x8f\xee3\xbc\xe2\
+\x98\xd9zu\xcd\x7f\x1b}\xe7\xa7\x93\xff\xcd\xca\xd1\xc1\
+\x19\x97\x22=\x04\x17c\xcbp_\xb0\xe2d\x9a}p\
+)\xf7f\xfb\xc8\x921~\xcbD\xa0\xe4\xfe\xe0\xf9/\
+\xd9\xae\x88\xf6m\xb1O4:\xe6T\xdb\x97\x89|Z\
+E|\x0e\xee\xc5 .Y\xfc\xd2j\x93\xe9\xe3T\x99\
+{\xb3\xbdk\xeeP\xbfe\x22D\xec\x89\xb7m\xd3\xc3\
+\xc3\xe5E\x1e\xdf\xfb\xce\xb8\xa7Yx\x87\xcf\xe1Z\xac\
+B7\xcc\xdcb\x9c\x95&\xd4\xb0\x95\x1fpo\xb6F\
+\xd6\x8am,\x13\x81\xcc\xe8\xea\xe8\xfbmk\xb6\xb1\x07\
+\x97y|w\xfa#d\xed\x14/!\x96\xd6+L\x8b\
+a:\xc5t\xbd,@\x16\xd7[eRu\x8b\x7f\x9e\
+k\xa35\xba\x9dvc\xcd5\x9fK\x19g[\xa3m\
+\xac3\x05\xb5\xf81\xfa\x12I+\xaf\xe2\xae\xa5u\x0a\
+\xb7\xb2\x01\x81Qb'-\xa89V\x98XWE\xf5\
+RkT~\x0b\xd2PI@\x7f\xdc\xd2[\x9c\xbd\xde\
+\xd6FK\xa2\xe3\x99\x86\xa03l\x0b?wV\xfb)\
+\xdd\xaf\x82K\xd9\x08J%\xd1\x02\x9bg\x85\x09F-\
+ax\xc5h\xd3k(\x13\xe1\xe4\xe9J\xfd\x03\x92\xdd\
+\xcd\x96v\xafGN\x16\xd7{\xff\x1d\xc7\x0eX5\xf3\
+ \xd7\xe9\x0e\xba\x1e\xeedC\x02\x22\xc5\x9b\xb5 \x17\
+\xf9{\x92%\xe7m\xe6\xd6l\x8d\xfe@\x95_Q\xff\
+#\x11u\xc9\xb0\xbb\xd1\xfe\xa4\xf8\xcc\x94z\xefO\xf3\
+\xcd\x82\xcf\x9aO9\xf1p%{g(\xfc\xc3\xdfU\
+\xc2ZR\xf0\xd9n\x8c\xdb\x1anh\x9b\x98\xf3\xd9]\
+\x9c\xa9^\x11\x19\xc2\x8d\xd9\xbe\xb5\xe1\xebzc@\xe9\
+\x86\x16\xdb\xd1\x1euM\x91n\x81\x1b\xf1p\x86\xab\x08\
+]\xb5\xa0\x97\xf9k\xb2\xbd\xb9a\x22\xb7f\xfb\xd2\xaa\
+\xf1\x86\x8dk\xaf\xc4W\xcf\xf9\xb7\xe8l\xbc7#\xf9\
+\xa5F~\x80\xfd~\xe7l+=ci\xa0,\xde\x05\
+\x17\xe2\x08\xa7[\x0a\xa66\x1b\xfe\x98p\xfd\x17\x8f\xe6\
+\xd6l\x1fX\xf4\x9ai\x99\x08S\xf7&re\xb4\xa4\
+@ERK\xaa\xcaL\xfb5\xd1\xd2\xb66T\x0e\x15\
+\xee\xc3\xe3\x91\x82\x22<\xec\x8f>f\x7f\x9b=\x88[\
+\xb3\xbd5v\xb0)\x99\x08\xf4\xa1\x88\x8e\x15x3[\
+RR\xf6\xbas\xc6|\x84\xc1\xd7\xa3\x9bytP\x85\
+k\xb8\xbc\x1bn\xa4$\x98}\xa4@\xbb\x8f\x8a\xeaJ\
+\xee\x8c\x96~\xd6w\x9c\xda\xdd\xb0qM8\xf4\xcb\xc7\
+\xa1\xe1k>\xe3\xd2hITd\xa7.O,\x7f\xcf\
+\xefG\x07.wP7\xb8\x0d\xa0,\x85{\xb5\xbf\xbc\
+\xc7\xcd\x9c\x80iG\xf7sg\xb6\x05\x15\xc7\x0c\x1d\xd3\
+\xbe\x8bF\xea\xad\x87\xc6\xa7FX:\x89\xdf\x8cR\x9e\
+Ks6\xe8\xedr\x16d\xad\xd6\xdb\xba\xfb\xf1yJ\
+\xb4X\xdc\x03\x97\x01u\xcfp\xbb\x98\x99\x166'#\
+\x99;\xb3\xddR\xb8\x8b[\x03\xe4T\x85\xce\x88\xa0\xdb\
+\xe0.\xc0SZ\xd8\x11\xb3\xaa\xebS\x87Y\x9e\xd4e\
+\xce\x10\x18\x10?\xca\x0b\x8c\x08\xfe+\x5c\x054\xf2\xd1\
+\xac\xdb\xadN\xb7x\x18\x8b\x05\x82\xbc\xbf\x19\x16\xa0\x04\
+\xff\x1dn\x02\x9a\xa4\xfd\xd4\xfb~\xa7M\x9a\xcdX4\
+\x10\xd4bm\xec \x8bW\xc2E@\xb3\xa1\xfeG\xda\
+\xc4\x89\xc7\xe2\x81\xa0fJ\x16\xe7\xa2o\x18\xf0\x8e\x98\
+\x81\xbfr)\xd2D,$\x08j\xd2hC\xa9\xc35\
+L\x03\xb4\xf2\x1cW\x1c\xa1M\xa8\xd3XT\x10TO\
+\xd5NYx\x1e.\x01|\x99\x1a\xf6\xa86\xb1N`\
+qA\xd0\xcf*s\xc9R\x7f\xb8\x03\xf09m\xe5n\
+7h\x13l\x07\x16\x19\x04\x89ih7\x0e\x0c\xa5C\
+\x8cx\xb96\xd1fc\xb1A\xbc*@\x91bh\x1d\
+\xc0\x0d\x80\xf1\xa8\x8e\x0b\x9c\x8a8\x06\xe7\xb8\x10o\xe7\
+\xb3\xf4\xfd\x02\x1f\xc2\x80\xe9\x04\xcab/\x7f\x17\x22\x87\
+ \x93.*\x14P\xd1&\xacz\xe0\xe7s\x5ca\x03\
+\x16#dWQ\xf7[gD\xc8uX\xed\xc0\xff\x84\
+\x86^X\x9b\x1ef~m\x5c\x082\xb6\x06-\x8e\x0d\
+\x80%w\xb9\xc2\x1d\xda\x04\xdd\x83E\x0a\xb1\xff\x11L\
+\xdcM\x95\xf0\xb0\xaa\x81e\xe9\x14\xd3\xf52\xcdp\xbf\
+\xc2\x82\x85\x18\xde\xd1~E\xf3\x18\xab\x190A\x80[\
+x\x9c\xeayb\xe1B,}\x04\xa3\xcb;X\xbd\x80\
+=\xc3\x0d\x0bqj\xa6\x1b\xa6M\xe4\x1a,d\xc8\xc2\
+&{\x86v\xb34_\xb1j\x01\xdb\xa6+\x0b\xf7\xd1\
+\x19\x18\x165d\xc1L\x83]\xd4\x16\x0a\xab\x14\xd8\xea\
+,7@\x16?\xc1E\x08\xc82\x99\x06\xb2\x18\xdaY\
+\x16\x7f\x8d\xd5\x09lz\x96+\xdd\xa3M\xf6T,v\
+\xc8\x8f\xda\x1c(\x8bwa5\x02\xfbC\xd7}ea\
+\xa0K\x113\xb1\xf0!\x13\x95\x11 \x0b}\xb1\x00\x01\
+w\x5c\x15\xd6\xf77gk,\x94\xc1\x08 \x03UJ\
+\xf3\x0c\xe9\x5c\x80{\xda)A\xbfw)R$\xb2\x16\
+ _g\x19P6L\xfb)\xdd\xaf\xc2*\x03\xa0\x0e\
+T\xe8C[$\xaba\x12\x90\x0f\x8cv%\xb2\x0c\x00\
+h\xdeG\xb4\xe50\x0c\xa8\xc5R\x84e\x81\x8a\xd0\x15\
+\xab\x08\x80\x16\xe0T\xc4\x10j\x0d\x0d\x13\x81\xb0\x93\x05\
+\xc0hBC/\x0c\x90\xa5\xc1\xdabJ\x87\xa1@\x0d\
+\xb5\xa7\xd1\xfe(\x0f\xa2y\x82\xc5\x02\x80\xaf\x8e\x17\xb4\
+\x9d\x8b\xb6\xb8\x12\xf0!\x8d{Q\xfc\x13\xb0\x93\x05\xc0\
+`\xce\x16,\xff\xca\xe9\x16O\xc2x\xb8R\x05\xc5\x1d\
+\x8d\x16\x010\x19\x97,v\xae-\xe7(\x1c\x87\x11\xd9\
+Z%\x9a&\xb8\xc2\x83\xae\xc1\xac\x07\xc0\x9fL\xec}\
+\xa9~#\xcd-.\xc1\x11\x83\xad\x8e\x0a\x96P\x5c\x1d\
+1\x03/\xc1$\x07\xc0\x82G\x0c\xb5\x05o\x84\x02\x18\
+\x16\x93\xca\xa2\x0218*\x00\x80\x11j;FHO\
+\x9d\xdd\xedV\xc3\xc4\xac\xdd\x22<\xc0-$\x05(\xe2\
+\x10T\xe1\x02\x80a\xa8\x06\x03\x15 9{%\xf8\x04\
+\xcc\xcd\x12:A\xf1\xa0\xb8P|0K\x01\xb0\x19m\
+\x94\xe0vNE|\x8evR\xd8\xf1\x9a\xaeSN\xb7\
+\xb8\xd0%K\xc3\xda\x86\xf7\x0c\xc4l\x04\x80\xa3\xa3\x86\
+\xda[j\xc2W(\xf7h`'\x04Y\xfc\x84\xc6\x19\
+U\xb7\x00\x00:\xce\x88\x90\xeb4\xd3\x1dQ{\xce+\
+T\xc1,\xbdR%]8p\xba\xa5\x17h<1\xab\
+\x00\x00M\x1e7\xb8\xdc\xd2\x83\x01n\xe1S\xcd<V\
+\xe1\x02\x85\xc7\x9d+\x8dK\x8a\xb6s\xfd\x98\xce_q\
+<\x00\x00h\x1d\x13{_\x1a\x18\x11t\xb7f.\xa3\
+]\xb28W\xdb\xf9\xe6rZ\xf0\x85\xde;N\xd3(\
+\xbd\xba\x16r`\x01\x00F\xd3~\xca=m\xb4\x9f\xcb\
+]jS\xcc\xe8&\x9b^\x8b\xd7.]'\xcaj\xdf\
+\x87\xdeKz\x8a\xde\x93\xde\x17Q\x07\x00X\x83\xb0.\
+\x17\x07(\xc1\x7f\xd7\xcci\x00\xed\xfe4}\xe3T\x84\
+\x05g\xab\x96UX\xb0\xd6\x00=\xd7|M_\xbb\x14\
+\xe9u\x97,\xf5\x0f\x90\xbb\xfd\x8d\xde\x03\xc1\x04\x000\
+K\x07Y\xbc\x92~~\xeby\xbf\xb28\x94\x0c\x99\xce\
+;\xb5\xff\x19~\xf6\xe7yJ\xad\x01\x0a\x07j%\x16\
+j:\xe6\xb9\xfe\x83\xfe\x9f\x1f\xab\xfd\xdf\xfb\xe9\xbf\xa3\
+\xff\xf7Wj\xff\xd9\x1cM\x935\xe3\x1f\xaf\x1b\xbf\xf6\
+\xef\xd1\xbfK\x9de\xe99\x10\x0d\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x8c\xe0\xff\x01/\x9b\xa0\xe9\xec\
+0\x8e\x92\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x09\xc0\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x9c\x00\x00\x00\xb2\x08\x03\x00\x00\x00\x80\xc0V9\
+\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x09pHYs\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01B(\
+\x9bx\x00\x00\x00\x07tIME\x07\xdc\x03\x09\x08\x1d\
+0D&N\xa6\x00\x00\x02\xd3PLTE\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x02\x01\x00\x03\x02\
+\x00\x04\x02\x00\x05\x03\x00\x06\x03\x00\x06\x04\x00\x07\x04\x00\
+\x08\x05\x00\x09\x05\x00\x0a\x06\x00\x0b\x07\x00\x0c\x07\x00\x0d\
+\x08\x00\x0e\x08\x00\x0f\x09\x00\x10\x0a\x00\x11\x0a\x00\x12\x0b\
+\x00\x13\x0b\x00\x14\x0c\x00\x15\x0d\x00\x16\x0d\x00\x17\x0e\x00\
+\x18\x0e\x00\x19\x0f\x00\x1a\x10\x00\x1b\x10\x00\x1c\x11\x00\x1d\
+\x11\x00\x1e\x12\x00\x1f\x13\x00 \x13\x00!\x14\x00\x22\x14\
+\x00#\x15\x00$\x16\x00%\x16\x00&\x17\x00'\x17\x00\
+(\x18\x00)\x19\x00*\x19\x00+\x1a\x00,\x1a\x00-\
+\x1b\x00.\x1c\x00/\x1c\x000\x1d\x001\x1d\x002\x1e\
+\x003\x1f\x004\x1f\x005 \x006 \x007!\x00\
+8\x22\x009\x22\x00:#\x00;#\x00<$\x00=\
+%\x00>%\x00?&\x00@&\x00A'\x00B(\
+\x00C(\x00D)\x00E)\x00F*\x00G+\x00\
+I,\x00J,\x00K-\x00L.\x00M.\x00N\
+/\x00O/\x00P0\x00Q1\x00R1\x00S2\
+\x00U3\x00W4\x00X5\x00Y5\x00Z6\x00\
+[7\x00\x5c7\x00]8\x00^8\x00_9\x00`\
+:\x00a:\x00c;\x00e=\x00g>\x00h>\
+\x00i?\x00j@\x00k@\x00lA\x00mA\x00\
+nB\x00oC\x00pC\x00qD\x00sE\x00t\
+F\x00uF\x00vG\x00wG\x00yI\x00zI\
+\x00{J\x00|J\x00|K\x00}K\x00~L\x00\
+\x7fL\x00\x80M\x00\x81M\x00\x82N\x00\x83O\x00\x84\
+O\x00\x86P\x00\x87Q\x00\x88R\x00\x8aS\x00\x8bS\
+\x00\x8eU\x00\x8fV\x00\x91W\x00\x93X\x00\x94Y\x00\
+\x95Y\x00\x96Z\x00\x98[\x00\x99\x5c\x00\x9c^\x00\x9d\
+^\x00\x9e_\x00\x9f_\x00\xa0`\x00\xa1a\x00\xa2a\
+\x00\xa3b\x00\xa4b\x00\xa5c\x00\xa6d\x00\xa7d\x00\
+\xaaf\x00\xacg\x00\xadh\x00\xafi\x00\xb0j\x00\xb1\
+j\x00\xb2k\x00\xb3k\x00\xb4l\x00\xb5m\x00\xb6m\
+\x00\xb8n\x00\xbap\x00\xbbp\x00\xbcq\x00\xbdq\x00\
+\xber\x00\xbfs\x00\xc0s\x00\xc1t\x00\xc2t\x00\xc3\
+u\x00\xc5v\x00\xc7w\x00\xc8x\x00\xc9y\x00\xcay\
+\x00\xcbz\x00\xccz\x00\xce|\x00\xcf|\x00\xd0}\x00\
+\xd1}\x00\xd2~\x00\xd3\x7f\x00\xd4\x7f\x00\xd5\x80\x00\xd6\
+\x80\x00\xd7\x81\x00\xd8\x82\x00\xd9\x82\x00\xda\x83\x00\xdb\x83\
+\x00\xdc\x84\x00\xdd\x85\x00\xde\x85\x00\xdf\x86\x00\xe0\x86\x00\
+\xe1\x87\x00\xe2\x88\x00\xe3\x88\x00\xe4\x89\x00\xe5\x89\x00\xe6\
+\x8a\x00\xe7\x8b\x00\xe8\x8b\x00\xe9\x8c\x00\xea\x8c\x00\xeb\x8d\
+\x00\xec\x8e\x00\xed\x8e\x00\xee\x8f\x00\xef\x8f\x00\xf0\x90\x00\
+\xf1\x91\x00\xf2\x91\x00\xf3\x92\x00\xf4\x92\x00\xf5\x93\x00\xf6\
+\x94\x00\xf7\x94\x00\xf8\x95\x00\xf9\x95\x00\xfa\x96\x00\xfb\x97\
+\x00\xfc\x97\x00\xfd\x98\x00\xfe\x98\x00\xff\x99\x00\xff\xff\xff\
+s\xb6\xc7\xfa\x00\x00\x00\x08tRNS\x00\x09\x0e\x1b\
+(=\x5cr\xeeu#\xcb\x00\x00\x00\x01bKGD\
+\xf05\xb8\xefT\x00\x00\x06RIDATx\xda\xed\
+\x9c\xf9_\x94U\x14\xc6\xad\xacf\x18mTP\xc0\x04\
+\xc4\x85E\x05\xc1\x0d\xc9P\xd1\xc8\x5cZ\x15\xb5\xc5$\
+\xca4\xcb4\xcbJ\xcd\xca\xd2\xd4RJ\xcd\xca4\xb2\
+\x12\xcd\xcaL\xb1 \x90\x08DS@\xf6M\xf6\x01F\
+\x99a\xe6\x9d\x7f!\xd6\x98\xe5]\xeer\xee0\x9f\xbc\
+\xcf\xcf\x9c\xf7~\x99y\xdf\xf7\x9e\xf3\x9cs\xa7_?\
+...........W\xd5\x1dw\xbb\
+\x88\xfa\x8b\xc0\xdd\xa9r\x11\xdd\xc5\xe1n)\xb8dc\
+\x9f\xaa@\x16.\xc5\xd2\xa7*\xe3p\x1c\x8e\xc3\xc1\xc1\
+\x99]\x18\xae0\xe4G\xe2\xa5u\x8c\xe1\xcaBT\xda\
+S\x84lY\xbe;\x98\xc2U\x84\xb6\xff\xcd\x903D\
+l\x17\x86\xabT\x9b\x19\xc2U\x85un~\xee\xbf\x11\
+\xb0\xa5{w\x84\xbe\xcd\x0c\xae6\xa2{kv?\x8b\
+\xcd\x96\xe6\xdd\x15\xbaI`\x03W\x17\xf9_\xe2\xe0~\
+\x0e\x93\xedO\xaf\x9e\xd0\x97\x05\x16pM\xd1Vi\x8d\
+\xc7y,\xb6T\xaf\xde\xd0\x97\xcc\xf0p\xcdsm\x92\
+.\xcfT\x0c\xb6d\x0f\xeb\xd0\xb86h\xb8\x96\x18\xbb\
+\x94\xd0+\x0d\x99\xed\x9c\x87m\xe8\xb3m\xb0p7\x1f\
+qHX\xbd\xd2\x11\xd9\xcez\xd8\x87>c\x84\x84k\
+}L$\x9d\xf6\xbe\x80\xc4v\xc6\xdd1tI+\x1c\
+\x9cq\xb9h\xb2\xef\x9d\x81\xc0\xf6\xab\xbbX\xe8\xe37\
+\xa1\xe0\xda\x9e\x96(E|\xb2\x15\xd9N\x0f\x11\x0f}\
+\xf4\x06\x0c\x9c\xf9y\xc9B\xc9\xf7\xa2\x02\xdb\xc9AR\
+\xa1\xf3\x9a \xe0\xcc/\xca\x94q~9\xb2l'\xb4\
+\xd2\xa11:z8a\x8dl\x91\xe9wI\x86-I\
++\x17\x1aUG\x0d\xf7\x9aB\x09<\xf2\xb2$\xdbq\
+\xad|\xe8\x8cZJ\xb87\x14\x0bt\xff\x7f$\xd8~\
+\x18\xa8\x14\x1aYM\x05\xf7\x1e\x82}06_\x94-\
+Q\xa3\x1c:\xa9\x9c\x02n'\x92\xb9\x11pM\x84\xed\
+\x1b\x0dJhX\x191\xdc.D\xeb%\xb0\xc0\x81\xed\
+\x88\x06-4\xb8\x80\x10\xeecdc(\xb0\xd0\x8e\xed\
+k\x0djhP>\x11\xdc~5\xbam\x15Td\xc3\
+vX\x83\x1e\x1a\x90G\x00w\x10\x83M\xa5\x0a\xb5\xbe\
+y\xbet\xc3\x09\xf5\xcf\xc1\x86;\x8a\xb5@;]9\
+\xd1G\xde\xf9\x22\xcf\xc6\x84K\xd4\xa805\xb1\xa2;\
+\xf435n\xa8\xef\xdfxp\xcb\xf0\xed\xd2\xc8:\x82\
+\xef\xb4{\x9f\xc5\x833.\xc5_\x22\xbc\xb2=0A\
+\x8d\x1f\x18Q\x8dy\xcf\x19b\x09\x16\xa9\xb1\xec#`\
+\x8b\xaa\xc7~Z\x0dK\xf0\x97\x99\xfe.\x81{>\xb3\
+\x9e\xe0=gX\xec\x14g\x7fV\x03\xd1\x0eqc\x91\
+\x13\xd8f7\x12\xee\xad\xfa\x85\xcc\xd9\xa2\x1b\x89\xb3\x12\
+\xfd\x02\xc6l\x0f\xb5P\xe4s\xfa\xf9L\xd9\xe6\xb7P\
+e\xc2-\xf3\x18\xb2-l\xa1\xac!t\xd1\xcc\xd8\x16\
+\xe9\xa9K\xc3\xc6Y\x8c\xd8\x1e\xd6\x03\x14\xd5\x8d3\x99\
+\xb0\x89\xf9%\x04vDC\x14\x03\xb6\xd8V #\xa7\
+\xe1~p\xb6\xa5\x060\x0b\xacf\x1a0\xdbr\x03\xa0\
+yX=\x15\x94\xedI\x03\xa8\xedz}\x0a \xdbS\
+\xa0\xcef\x07\xddd0\xb6\xe7L\xe0V\x7f\xd5$ \
+\xb6x\x13\x83&Ie8\x08\xdb\x0b&&\xed\xa5\xd2\
+\x09\x00l\xabL\x8c\x1as%\xe3\xa9\xd9V\x9b\x99\xb5\
+4\x8b\xc7Q\xb2\xad\x13\x186\x83\x8b\x83\xa9\xd8^\x15\
+\x98\xb6\xd1\xf3\xc6P\xb0m\x10\x18\x0f \xe4\x92\xd3m\
+Tb\xa3\x1f\xdd\xc8\x1dM\xc8\xf6\xba\x22\x1b\xc0\x5c\xc9\
+\xd5QDl[\x9d3\xf4\xf2\xd7=\x04l\xdb\x9c3\
+\x91\xd3\xfc \xc9\x07\xb7\xc9)pM1d\xb7\xdc\x9b\
+N\x80kz\x80\xf4a\xdd\xce\x1cN7\x97\xfc5\xf7\
+!c\xb8z\xaaZg'S\xb8:\xcaJ\xe7#\x86\
+p\xb53h\x93\x92]\xec\xc6\x85\xee\xa3O\xe7\xf60\
+\x82\xab\x89\x04\xc85\xd5\x09L\xe0\xaa\xa7\x83d\xe9\xea\
+O\x19\xc0U@\xd57\xea\xfd\xe0p\x15\xe1*(\xa9\
+\x0f\x00\xc3\x95\x87\x01\xd6\xd4\xea\x83\xa0pe\x13A\xdd\
+\x08\xb7\xc3\x80p\xa5\xa1\xc0>\x8e\xdb\x110\xb8\xc2`\
+\x15\xb44G\x81\xe0\x0a\x82\x18x\x87\x9aD\x10\xb8k\
+\x81L\x5cW\xcd\xb7\x00p\xf9l\xd8\xda\xe9\x8eQ\xc3\
+\xe5\x050s\xfa\x07&Q\xc2\xe5\x8ee\xd8#\xd1\x9e\
+\xa0\x82\xbb\xe4\xcf\xb4\xbb\xa4=I\x01\x973\x92q_\
+\xce~\x08\x1f\x03\xee\xa2\x1f\xf3\x8e\xe6\xa0\x9f\x08\xe1\xb2\
+\xd9\xb3\xd9\x1f\x11@\x86\xcb\xf2\xc5_j0\xfe\xf8\x81\
+\xcd\x10>*\x5c\xc7\xf1\x05\x5cy\xa6\x10\x0cnX\x0f\
+\xe1#\xc2\xa5{\xe3\xb3\x0d\xcf\xb0X\xf6\xe1\x87y$\
+c\xc2\xa5\x11\xb0\xdd\xdb9\xd3\xbc\x97\x80\xee<\x1e\xdc\
+\x1a\x92\xef\xb4+t;~\xe8\x846,8\xd3j\xdc\
+\x05Fd\xf6\xfc\xfb\x9f`\x87fa\xdes\xc2z\xbc\
+\x05|2{o\xeb\x0f0o\x87L\xec\xa7U\xd8\x88\
+\xb3\x80\xbf\xcd\xb4\xf0\xfb8\xa1\xc3RI^\xc2\xef\xa0\
+/0\xcanVx\x1bz\xe8\xd0\x14\xb2\xed\x0b\xf9\xd6\
+\x1e}\xc5>\xbd\xd8\x8a\xfc\xa4\xfeA\xba\xf1\xef!e\
+\xb3X\xb6 n)\xa7\xc9S&\xa4a\xdc1W\xc5\
+\xca\x81\xcdH\xfb\xfe/4\xc9\xe6\x01\xe5\xed(\xb8P\
+\xb4\x90\x126 \xe4\xc2\xc7\xe9\xd2\xf4\xcf\x95&0\xc7\
+\x15I\x14\xc8\xca/\xa3\x01\xdf\xd3\x168_\xc8\xd3\x8d\
+/\x964>\x84u\xd8\x955vixl\x80\xdc\xc6\
+S,ch\x09\xaf\xc8\xb2}\x05QT\x7f'}\xae\
+!\xa4D\xd6\xa8\x14\xd6\xca\xb89\x87`\xec\x88S\x83\
+%\x16\x08-U0\xa0\xcd\xab$\xe1\x12\xa0\x8c\x9c\x9f\
+\xc5\xcfGM\xaeTl,H\x9e|\xda\x0bg\x81%\
+\x0f\x15\xb9\xfe\x94*\x84\x86\x91)^\x94m\x07\xa4y\
+\xf8\xfb0\x87\xebO\xbd\x8et\x9a\xcf\x14\x87\xd1B$\
+\xb4]S<\xed\xae?\x0d\x8d\xad\x9dn\xa5\x03\xdb\x16\
+h\xc3:c\x84\xcd\xf5#\xaa\x91O\x90\x9aV\xd8\xb1\
+\xbd\x05o\xf5g\xfaX]\xdfjd[Y\xc6e\xa8\
+\xe3\x1b\xe4M\x92\xcb\xbd\xeds\xeb\x91m\x04\x19\xac\x8f\
+\x08\xac\x15\x98\xb4\x97\xae\xf4\x0cF\xcc\xc6c\xb39\x22\
+\x10of\xd4\x98+\xec\x1a\xc8\xb1\x1d\xd9F\xa3\xeb\x19\
+\xc2\x8f31ki\x16u\x8cZ\xcd\xd1Y\xf0\xd5\xfa\
+D'\xdb\x0a\x13\xc3fpI\xa8\xc3\xc86\xa2:\x8f\
+\x08\xc4\x1a\x99\xb6\xd1\x8bW6Z\xc8\xa4_\xa0Zl\
+`?WB(\xdd\xfaf\x8b\xcb\xc29g\x22\x87\xc3\
+q8\x0e\xe7\x02p\xbb\x93\xfaT\x87d\xe1\x5cA\x1c\
+\xee\x96\x81\xbb\xad\xbf\x8b\xe8v\xfe\x83\xac\x5c\x5c\x5c\x5c\
+\x5c\x5c\x5c\x5c\x5c\x5c\x5c\xffC\xfd\x0b\x99\xa5\x5c~G\
+q`B\x00\x00\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x06\
+\x07\x03}\xc3\
+\x00i\
+\x00m\x00a\x00g\x00e\x00s\
+\x00\x09\
+\x08\x97\x8a'\
+\x00h\
+\x00e\x00a\x00r\x00t\x00.\x00p\x00n\x00g\
+\x00\x09\
+\x08\x9b\xa0G\
+\x00t\
+\x00r\x00a\x00s\x00h\x00.\x00p\x00n\x00g\
+\x00\x07\
+\x08wW\x87\
+\x00b\
+\x00a\x00d\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00B\x00\x00\x00\x00\x00\x01\x00\x00\x94\x1c\
+\x00\x00\x01z\xe7\xee'\x0d\
+\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01z\xe7\xee'\x0d\
+\x00\x00\x00*\x00\x00\x00\x00\x00\x01\x00\x00d\xb8\
+\x00\x00\x01z\xe7\xee'\x0d\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/widgets/systray/systray.pyproject b/examples/widgets/desktop/systray/systray.pyproject
index eadfb0d7a..eadfb0d7a 100644
--- a/examples/widgets/systray/systray.pyproject
+++ b/examples/widgets/desktop/systray/systray.pyproject
diff --git a/examples/widgets/systray/systray.qrc b/examples/widgets/desktop/systray/systray.qrc
index a8b653584..a8b653584 100644
--- a/examples/widgets/systray/systray.qrc
+++ b/examples/widgets/desktop/systray/systray.qrc
diff --git a/examples/widgets/desktop/systray/window.py b/examples/widgets/desktop/systray/window.py
new file mode 100644
index 000000000..0b5bc39dc
--- /dev/null
+++ b/examples/widgets/desktop/systray/window.py
@@ -0,0 +1,236 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Slot
+from PySide6.QtGui import QAction, QIcon
+from PySide6.QtWidgets import (QCheckBox, QComboBox, QDialog,
+ QGridLayout, QGroupBox, QHBoxLayout, QLabel,
+ QLineEdit, QMenu, QMessageBox, QPushButton,
+ QSpinBox, QStyle, QSystemTrayIcon, QTextEdit,
+ QVBoxLayout)
+
+import rc_systray # noqa: F401
+
+
+class Window(QDialog):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self._icon_group_box = QGroupBox()
+ self._icon_label = QLabel()
+ self._icon_combo_box = QComboBox()
+ self._show_icon_check_box = QCheckBox()
+
+ self._message_group_box = QGroupBox()
+ self._type_label = QLabel()
+ self._duration_label = QLabel()
+ self._duration_warning_label = QLabel()
+ self._title_label = QLabel()
+ self._body_label = QLabel()
+
+ self._type_combo_box = QComboBox()
+ self._duration_spin_box = QSpinBox()
+ self._title_edit = QLineEdit()
+ self._body_edit = QTextEdit()
+ self._show_message_button = QPushButton()
+
+ self._minimize_action = QAction()
+ self._maximize_action = QAction()
+ self._restore_action = QAction()
+ self._quit_action = QAction()
+
+ self._tray_icon = QSystemTrayIcon()
+ self._tray_icon_menu = QMenu()
+
+ self.create_icon_group_box()
+ self.create_message_group_box()
+
+ self._icon_label.setMinimumWidth(self._duration_label.sizeHint().width())
+
+ self.create_actions()
+ self.create_tray_icon()
+
+ self._show_message_button.clicked.connect(self.show_message)
+ self._show_icon_check_box.toggled.connect(self._tray_icon.setVisible)
+ self._icon_combo_box.currentIndexChanged.connect(self.set_icon)
+ self._tray_icon.messageClicked.connect(self.message_clicked)
+ self._tray_icon.activated.connect(self.icon_activated)
+
+ self._main_layout = QVBoxLayout()
+ self._main_layout.addWidget(self._icon_group_box)
+ self._main_layout.addWidget(self._message_group_box)
+ self.setLayout(self._main_layout)
+
+ self._icon_combo_box.setCurrentIndex(1)
+ self._tray_icon.show()
+
+ self.setWindowTitle("Systray")
+ self.resize(400, 300)
+
+ def setVisible(self, visible):
+ self._minimize_action.setEnabled(visible)
+ self._maximize_action.setEnabled(not self.isMaximized())
+ self._restore_action.setEnabled(self.isMaximized() or not visible)
+ super().setVisible(visible)
+
+ def closeEvent(self, event):
+ if not event.spontaneous() or not self.isVisible():
+ return
+ if self._tray_icon.isVisible():
+ QMessageBox.information(self, "Systray",
+ "The program will keep running in the system tray. "
+ "To terminate the program, choose <b>Quit</b> in the context "
+ "menu of the system tray entry.")
+ self.hide()
+ event.ignore()
+
+ @Slot(int)
+ def set_icon(self, index):
+ icon = self._icon_combo_box.itemIcon(index)
+ self._tray_icon.setIcon(icon)
+ self.setWindowIcon(icon)
+ self._tray_icon.setToolTip(self._icon_combo_box.itemText(index))
+
+ @Slot(str)
+ def icon_activated(self, reason):
+ if reason == QSystemTrayIcon.Trigger:
+ pass
+ if reason == QSystemTrayIcon.DoubleClick:
+ self._icon_combo_box.setCurrentIndex(
+ (self._icon_combo_box.currentIndex() + 1) % self._icon_combo_box.count()
+ )
+ if reason == QSystemTrayIcon.MiddleClick:
+ self.show_message()
+
+ @Slot()
+ def show_message(self):
+ self._show_icon_check_box.setChecked(True)
+ selected_icon = self._type_combo_box.itemData(self._type_combo_box.currentIndex())
+ msg_icon = QSystemTrayIcon.MessageIcon(selected_icon)
+
+ if selected_icon == -1: # custom icon
+ icon = QIcon(self._icon_combo_box.itemIcon(self._icon_combo_box.currentIndex()))
+ self._tray_icon.showMessage(
+ self._title_edit.text(),
+ self._body_edit.toPlainText(),
+ icon,
+ self._duration_spin_box.value() * 1000,
+ )
+ else:
+ self._tray_icon.showMessage(
+ self._title_edit.text(),
+ self._body_edit.toPlainText(),
+ msg_icon,
+ self._duration_spin_box.value() * 1000,
+ )
+
+ @Slot()
+ def message_clicked(self):
+ QMessageBox.information(None, "Systray",
+ "Sorry, I already gave what help I could.\n"
+ "Maybe you should try asking a human?")
+
+ def create_icon_group_box(self):
+ self._icon_group_box = QGroupBox("Tray Icon")
+
+ self._icon_label = QLabel("Icon:")
+
+ self._icon_combo_box = QComboBox()
+ self._icon_combo_box.addItem(QIcon(":/images/bad.png"), "Bad")
+ self._icon_combo_box.addItem(QIcon(":/images/heart.png"), "Heart")
+ self._icon_combo_box.addItem(QIcon(":/images/trash.png"), "Trash")
+
+ self._show_icon_check_box = QCheckBox("Show icon")
+ self._show_icon_check_box.setChecked(True)
+
+ icon_layout = QHBoxLayout()
+ icon_layout.addWidget(self._icon_label)
+ icon_layout.addWidget(self._icon_combo_box)
+ icon_layout.addStretch()
+ icon_layout.addWidget(self._show_icon_check_box)
+ self._icon_group_box.setLayout(icon_layout)
+
+ def create_message_group_box(self):
+ self._message_group_box = QGroupBox("Balloon Message")
+
+ self._type_label = QLabel("Type:")
+
+ self._type_combo_box = QComboBox()
+ self._type_combo_box.addItem("None", QSystemTrayIcon.NoIcon)
+ self._type_combo_box.addItem(
+ self.style().standardIcon(QStyle.SP_MessageBoxInformation),
+ "Information",
+ QSystemTrayIcon.Information,
+ )
+ self._type_combo_box.addItem(
+ self.style().standardIcon(QStyle.SP_MessageBoxWarning),
+ "Warning",
+ QSystemTrayIcon.Warning,
+ )
+ self._type_combo_box.addItem(
+ self.style().standardIcon(QStyle.SP_MessageBoxCritical),
+ "Critical",
+ QSystemTrayIcon.Critical,
+ )
+ self._type_combo_box.addItem(QIcon(), "Custom icon", -1)
+ self._type_combo_box.setCurrentIndex(1)
+
+ self._duration_label = QLabel("Duration:")
+
+ self._duration_spin_box = QSpinBox()
+ self._duration_spin_box.setRange(5, 60)
+ self._duration_spin_box.setSuffix(" s")
+ self._duration_spin_box.setValue(15)
+
+ self._duration_warning_label = QLabel("(some systems might ignore this hint)")
+ self._duration_warning_label.setIndent(10)
+
+ self._title_label = QLabel("Title:")
+ self._title_edit = QLineEdit("Cannot connect to network")
+ self._body_label = QLabel("Body:")
+
+ self._body_edit = QTextEdit()
+ self._body_edit.setPlainText("Don't believe me. Honestly, I don't have a clue.\n"
+ "Click this balloon for details.")
+
+ self._show_message_button = QPushButton("Show Message")
+ self._show_message_button.setDefault(True)
+
+ message_layout = QGridLayout()
+ message_layout.addWidget(self._type_label, 0, 0)
+ message_layout.addWidget(self._type_combo_box, 0, 1, 1, 2)
+ message_layout.addWidget(self._duration_label, 1, 0)
+ message_layout.addWidget(self._duration_spin_box, 1, 1)
+ message_layout.addWidget(self._duration_warning_label, 1, 2, 1, 3)
+ message_layout.addWidget(self._title_label, 2, 0)
+ message_layout.addWidget(self._title_edit, 2, 1, 1, 4)
+ message_layout.addWidget(self._body_label, 3, 0)
+ message_layout.addWidget(self._body_edit, 3, 1, 2, 4)
+ message_layout.addWidget(self._show_message_button, 5, 4)
+ message_layout.setColumnStretch(3, 1)
+ message_layout.setRowStretch(4, 1)
+ self._message_group_box.setLayout(message_layout)
+
+ def create_actions(self):
+ self._minimize_action = QAction("Minimize", self)
+ self._minimize_action.triggered.connect(self.hide)
+
+ self._maximize_action = QAction("Maximize", self)
+ self._maximize_action.triggered.connect(self.showMaximized)
+
+ self._restore_action = QAction("Restore", self)
+ self._restore_action.triggered.connect(self.showNormal)
+
+ self._quit_action = QAction("Quit", self)
+ self._quit_action.triggered.connect(qApp.quit) # noqa: F821
+
+ def create_tray_icon(self):
+ self._tray_icon_menu = QMenu(self)
+ self._tray_icon_menu.addAction(self._minimize_action)
+ self._tray_icon_menu.addAction(self._maximize_action)
+ self._tray_icon_menu.addAction(self._restore_action)
+ self._tray_icon_menu.addSeparator()
+ self._tray_icon_menu.addAction(self._quit_action)
+
+ self._tray_icon = QSystemTrayIcon(self)
+ self._tray_icon.setContextMenu(self._tray_icon_menu)
diff --git a/examples/widgets/dialogs/classwizard/classwizard.py b/examples/widgets/dialogs/classwizard/classwizard.py
index a7c7e2c58..0efbde69f 100644
--- a/examples/widgets/dialogs/classwizard/classwizard.py
+++ b/examples/widgets/dialogs/classwizard/classwizard.py
@@ -1,60 +1,21 @@
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import os
from pathlib import Path
import sys
-from PySide6.QtCore import (QByteArray, QDir, QFile, QFileInfo,
- QRegularExpression, Qt, QUrl, Slot)
+from PySide6.QtCore import QDir, QFileInfo, QUrl, Slot
from PySide6.QtGui import QDesktopServices, QPixmap
from PySide6.QtWidgets import (QApplication, QComboBox, QCheckBox, QFormLayout,
- QFileDialog, QGroupBox, QGridLayout,
- QHBoxLayout, QLabel, QLineEdit, QMessageBox,
- QPushButton, QRadioButton, QToolButton,
- QVBoxLayout, QWizard, QWizardPage)
+ QFileDialog, QHBoxLayout, QLabel, QLineEdit,
+ QMessageBox, QToolButton, QVBoxLayout, QWizard,
+ QWizardPage)
-from listchooser import ListChooser, PropertyChooser, SignalChooser
+from listchooser import PropertyChooser, SignalChooser
-import classwizard_rc
+import classwizard_rc # noqa: F401
BASE_CLASSES = ['<None>', 'PySide6.QtCore.QObject',
@@ -114,7 +75,7 @@ class ClassWizard(QWizard):
"""Overrides QWizard.nextId() to insert the property/signal
page in case the class is a QObject."""
idx = self.currentId()
- if self.currentId() == self._class_info_index:
+ if idx == self._class_info_index:
qobject = self.field('qobject')
return self._qobject_index if qobject else self._output_index
return super(ClassWizard, self).nextId()
@@ -214,7 +175,7 @@ class ClassWizard(QWizard):
block += '):\n'
if base_class:
- block += f' super().__init__('
+ block += ' super().__init__('
if qobject:
block += 'parent'
block += ')\n'
@@ -317,7 +278,7 @@ class QObjectPage(QWizardPage):
self.setTitle("QObject parameters")
self.setSubTitle("Specify the signals, slots and properties.")
self.setPixmap(QWizard.LogoPixmap,
- ':/qt-project.org/logos/pysidelogo.png')
+ QPixmap(':/qt-project.org/logos/pysidelogo.png'))
layout = QVBoxLayout(self)
self._properties_chooser = PropertyChooser()
self.registerField('properties', self._properties_chooser, 'items')
@@ -372,7 +333,7 @@ class OutputFilesPage(QWizardPage):
def _choose_output_dir(self):
directory = QFileDialog.getExistingDirectory(self, "Output Directory",
- self.output_dir())
+ self.output_dir())
if directory:
self.set_output_dir(directory)
diff --git a/examples/widgets/dialogs/classwizard/classwizard.pyproject b/examples/widgets/dialogs/classwizard/classwizard.pyproject
index 6086099b8..fcc96ef28 100644
--- a/examples/widgets/dialogs/classwizard/classwizard.pyproject
+++ b/examples/widgets/dialogs/classwizard/classwizard.pyproject
@@ -1,4 +1,3 @@
{
- "files": ["classwizard.qrc", "classwizard.py", "classwizard_rc.py",
- "listchooser.py", "classwizard_rc.pyc"]
+ "files": ["classwizard.qrc", "classwizard.py", "listchooser.py"]
}
diff --git a/examples/widgets/dialogs/classwizard/classwizard_rc.py b/examples/widgets/dialogs/classwizard/classwizard_rc.py
index 6dfc0f99e..e9feae425 100644
--- a/examples/widgets/dialogs/classwizard/classwizard_rc.py
+++ b/examples/widgets/dialogs/classwizard/classwizard_rc.py
@@ -1,6 +1,6 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 6.1.0
+# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
@@ -2300,11 +2300,11 @@ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01tY\xa4\xff\x02\
+\x00\x00\x01z\xe7\xee'\x05\
\x00\x00\x00,\x00\x00\x00\x00\x00\x01\x00\x00\x0fo\
-\x00\x00\x01x\xb6\x0e\xbc\x99\
+\x00\x00\x01z\xe7\xee'\x05\
\x00\x00\x00N\x00\x00\x00\x00\x00\x01\x00\x00]\xa5\
-\x00\x00\x01x\xb6\x0e\xdc\x09\
+\x00\x00\x01z\xe7\xee'\x05\
"
def qInitResources():
diff --git a/examples/widgets/dialogs/classwizard/listchooser.py b/examples/widgets/dialogs/classwizard/listchooser.py
index fbc29b40b..6bf47c6d1 100644
--- a/examples/widgets/dialogs/classwizard/listchooser.py
+++ b/examples/widgets/dialogs/classwizard/listchooser.py
@@ -1,51 +1,13 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6.QtCore import (QCoreApplication, QDir, QRegularExpression, Qt,
- Property, Slot)
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QRegularExpression, Property, Slot
from PySide6.QtGui import QRegularExpressionValidator
from PySide6.QtWidgets import (QComboBox, QDialog, QDialogButtonBox,
QFormLayout, QGroupBox, QHBoxLayout,
- QInputDialog, QLineEdit, QListWidget,
+ QLineEdit, QListWidget,
QListWidgetItem, QPushButton, QVBoxLayout,
- QWidget)
+ )
DEFAULT_TYPES = ['int', 'str', 'PySide6.QtCore.QPoint', 'PySide6.QtCore.QRect',
@@ -65,7 +27,7 @@ class ValidatingInputDialog(QDialog):
self._lineedit = QLineEdit()
self._lineedit.setClearButtonEnabled(True)
re = QRegularExpression(pattern)
- assert(re.isValid())
+ assert re.isValid()
self._validator = QRegularExpressionValidator(re, self)
self._lineedit.setValidator(self._validator)
self._form_layout.addRow(label, self._lineedit)
diff --git a/examples/widgets/dialogs/extension/extension.py b/examples/widgets/dialogs/extension/extension.py
index 1ad4e08a7..b8919f38e 100644
--- a/examples/widgets/dialogs/extension/extension.py
+++ b/examples/widgets/dialogs/extension/extension.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/dialogs/extension example from Qt v5.x"""
diff --git a/examples/widgets/dialogs/findfiles/findfiles.py b/examples/widgets/dialogs/findfiles/findfiles.py
deleted file mode 100644
index d61fe2a4d..000000000
--- a/examples/widgets/dialogs/findfiles/findfiles.py
+++ /dev/null
@@ -1,222 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 port of the widgets/dialogs/findfiles example from Qt v5.x"""
-
-import sys
-
-from PySide6.QtCore import (QCoreApplication, QDir, QFile, QFileInfo,
- QIODevice, QTextStream, QUrl, Qt)
-from PySide6.QtGui import QDesktopServices
-from PySide6.QtWidgets import (QAbstractItemView, QApplication, QComboBox,
- QDialog, QFileDialog, QGridLayout, QHBoxLayout,
- QHeaderView, QLabel, QLineEdit, QProgressDialog,
- QPushButton, QSizePolicy, QTableWidget,
- QTableWidgetItem, QVBoxLayout, QWidget)
-
-
-class Window(QDialog):
- def __init__(self, parent=None):
- super().__init__(parent)
-
- self._browse_button = self.create_button("&Browse...", self.browse)
- self._find_button = self.create_button("&Find", self.find)
-
- self._file_combo_box = self.create_combo_box("*")
- self._text_combo_box = self.create_combo_box()
- self._directory_combo_box = self.create_combo_box(QDir.currentPath())
-
- file_label = QLabel("Named:")
- text_label = QLabel("Containing text:")
- directory_label = QLabel("In directory:")
- self._files_found_label = QLabel()
-
- self.create_files_table()
-
- buttons_layout = QHBoxLayout()
- buttons_layout.addStretch()
- buttons_layout.addWidget(self._find_button)
-
- main_layout = QGridLayout()
- main_layout.addWidget(file_label, 0, 0)
- main_layout.addWidget(self._file_combo_box, 0, 1, 1, 2)
- main_layout.addWidget(text_label, 1, 0)
- main_layout.addWidget(self._text_combo_box, 1, 1, 1, 2)
- main_layout.addWidget(directory_label, 2, 0)
- main_layout.addWidget(self._directory_combo_box, 2, 1)
- main_layout.addWidget(self._browse_button, 2, 2)
- main_layout.addWidget(self._files_table, 3, 0, 1, 3)
- main_layout.addWidget(self._files_found_label, 4, 0)
- main_layout.addLayout(buttons_layout, 5, 0, 1, 3)
- self.setLayout(main_layout)
-
- self.setWindowTitle("Find Files")
- self.resize(500, 300)
-
- def browse(self):
- directory = QFileDialog.getExistingDirectory(self, "Find Files",
- QDir.currentPath())
-
- if directory:
- if self._directory_combo_box.findText(directory) == -1:
- self._directory_combo_box.addItem(directory)
-
- self._directory_combo_box.setCurrentIndex(self._directory_combo_box.findText(directory))
-
- @staticmethod
- def update_combo_box(comboBox):
- if comboBox.findText(comboBox.currentText()) == -1:
- comboBox.addItem(comboBox.currentText())
-
- def find(self):
- self._files_table.setRowCount(0)
-
- file_name = self._file_combo_box.currentText()
- text = self._text_combo_box.currentText()
- path = self._directory_combo_box.currentText()
-
- self.update_combo_box(self._file_combo_box)
- self.update_combo_box(self._text_combo_box)
- self.update_combo_box(self._directory_combo_box)
-
- self._current_dir = QDir(path)
- if not file_name:
- file_name = "*"
- files = self._current_dir.entryList([file_name],
- QDir.Files | QDir.NoSymLinks)
-
- if text:
- files = self.find_files(files, text)
- self.show_files(files)
-
- def find_files(self, files, text):
- progress_dialog = QProgressDialog(self)
-
- progress_dialog.setCancelButtonText("&Cancel")
- progress_dialog.setRange(0, len(files))
- progress_dialog.setWindowTitle("Find Files")
-
- found_files = []
-
- for i in range(len(files)):
- progress_dialog.setValue(i)
- n = len(files)
- progress_dialog.setLabelText(f"Searching file number {i} of {n}...")
- QCoreApplication.processEvents()
-
- if progress_dialog.wasCanceled():
- break
-
- in_file = QFile(self._current_dir.absoluteFilePath(files[i]))
-
- if in_file.open(QIODevice.ReadOnly):
- stream = QTextStream(in_file)
- while not stream.atEnd():
- if progress_dialog.wasCanceled():
- break
- line = stream.readLine()
- if text in line:
- found_files.append(files[i])
- break
-
- progress_dialog.close()
-
- return found_files
-
- def show_files(self, files):
- for fn in files:
- file = QFile(self._current_dir.absoluteFilePath(fn))
- size = QFileInfo(file).size()
-
- file_name_item = QTableWidgetItem(fn)
- file_name_item.setFlags(file_name_item.flags() ^ Qt.ItemIsEditable)
- size_kb = int((size + 1023) / 1024)
- size_item = QTableWidgetItem(f"{size_kb} KB")
- size_item.setTextAlignment(Qt.AlignVCenter | Qt.AlignRight)
- size_item.setFlags(size_item.flags() ^ Qt.ItemIsEditable)
-
- row = self._files_table.rowCount()
- self._files_table.insertRow(row)
- self._files_table.setItem(row, 0, file_name_item)
- self._files_table.setItem(row, 1, size_item)
-
- n = len(files)
- self._files_found_label.setText(f"{n} file(s) found (Double click on a file to open it)")
-
- def create_button(self, text, member):
- button = QPushButton(text)
- button.clicked.connect(member)
- return button
-
- def create_combo_box(self, text=""):
- combo_box = QComboBox()
- combo_box.setEditable(True)
- combo_box.addItem(text)
- combo_box.setSizePolicy(QSizePolicy.Expanding,
- QSizePolicy.Preferred)
- return combo_box
-
- def create_files_table(self):
- self._files_table = QTableWidget(0, 2)
- self._files_table.setSelectionBehavior(QAbstractItemView.SelectRows)
-
- self._files_table.setHorizontalHeaderLabels(("File Name", "Size"))
- self._files_table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch)
- self._files_table.verticalHeader().hide()
- self._files_table.setShowGrid(False)
-
- self._files_table.cellActivated.connect(self.open_file_of_item)
-
- def open_file_of_item(self, row, column):
- item = self._files_table.item(row, 0)
-
- QDesktopServices.openUrl(QUrl(self._current_dir.absoluteFilePath(item.text())))
-
-
-if __name__ == '__main__':
-
- import sys
-
- app = QApplication(sys.argv)
- window = Window()
- window.show()
- sys.exit(app.exec())
diff --git a/examples/widgets/dialogs/findfiles/findfiles.pyproject b/examples/widgets/dialogs/findfiles/findfiles.pyproject
deleted file mode 100644
index c2fae6dff..000000000
--- a/examples/widgets/dialogs/findfiles/findfiles.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["findfiles.py"]
-}
diff --git a/examples/widgets/dialogs/licensewizard/doc/licensewizard.png b/examples/widgets/dialogs/licensewizard/doc/licensewizard.png
new file mode 100644
index 000000000..cdba877ca
--- /dev/null
+++ b/examples/widgets/dialogs/licensewizard/doc/licensewizard.png
Binary files differ
diff --git a/examples/widgets/dialogs/licensewizard/doc/licensewizard.rst b/examples/widgets/dialogs/licensewizard/doc/licensewizard.rst
new file mode 100644
index 000000000..a0569006f
--- /dev/null
+++ b/examples/widgets/dialogs/licensewizard/doc/licensewizard.rst
@@ -0,0 +1,9 @@
+License Wizard Example
+======================
+
+The License Wizard example shows how to implement complex wizards in Qt.
+`Original example <https://doc.qt.io/qt-6/qtwidgets-dialogs-licensewizard-example.html>`_.
+
+.. image:: licensewizard.png
+ :width: 623
+ :alt: licensewizard screenshot
diff --git a/examples/widgets/dialogs/licensewizard/images/logo.png b/examples/widgets/dialogs/licensewizard/images/logo.png
new file mode 100644
index 000000000..56f17a3e5
--- /dev/null
+++ b/examples/widgets/dialogs/licensewizard/images/logo.png
Binary files differ
diff --git a/examples/widgets/dialogs/licensewizard/images/watermark.png b/examples/widgets/dialogs/licensewizard/images/watermark.png
new file mode 100644
index 000000000..124a05068
--- /dev/null
+++ b/examples/widgets/dialogs/licensewizard/images/watermark.png
Binary files differ
diff --git a/examples/widgets/dialogs/licensewizard/licensewizard.py b/examples/widgets/dialogs/licensewizard/licensewizard.py
new file mode 100644
index 000000000..28667d173
--- /dev/null
+++ b/examples/widgets/dialogs/licensewizard/licensewizard.py
@@ -0,0 +1,298 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from enum import IntEnum
+from pathlib import Path
+
+from PySide6.QtCore import QRegularExpression
+from PySide6.QtGui import QPixmap, QRegularExpressionValidator
+from PySide6.QtPrintSupport import QPrintDialog, QPrinter
+from PySide6.QtWidgets import (QCheckBox, QGridLayout, QLabel, QLineEdit,
+ QMessageBox, QRadioButton, QVBoxLayout, QWizard,
+ QWizardPage)
+
+EMAIL_REGEXP = ".+@.+"
+
+
+class Pages(IntEnum):
+ Page_Intro = 0
+ Page_Evaluate = 1
+ Page_Register = 2
+ Page_Details = 3
+ Page_Conclusion = 4
+
+
+class IntroPage(QWizardPage):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.setTitle("Introduction")
+
+ path = Path(__file__).resolve().parent
+
+ self.setPixmap(QWizard.WatermarkPixmap, QPixmap(path / "images" / "watermark.png"))
+ self.top_label = QLabel(
+ "This wizard will help you register your copy of "
+ "<i>Super Product One</i>&trade; or start "
+ "evaluating the product"
+ )
+ self.top_label.setWordWrap(True)
+
+ self.register_radio_button = QRadioButton("&Register your copy")
+ self.register_radio_button.setChecked(True)
+
+ self.evaluate_radio_button = QRadioButton("&Evaluate the product for 30 days")
+ layout = QVBoxLayout(self)
+ layout.addWidget(self.top_label)
+ layout.addWidget(self.register_radio_button)
+ layout.addWidget(self.evaluate_radio_button)
+
+ def nextId(self):
+ if self.evaluate_radio_button.isChecked():
+ return Pages.Page_Evaluate
+ else:
+ return Pages.Page_Register
+
+
+class EvaluatePage(QWizardPage):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.setTitle("Evaluate <i>Super Product One</i>&trade")
+ self.setSubTitle(
+ "Please fill both fields. Make sure to provide a valid "
+ "email address (e.g., john.smith@example.com)."
+ )
+
+ self.name_label = QLabel("N&ame:")
+ self.name_line_edit = QLineEdit()
+
+ self.name_label.setBuddy(self.name_line_edit)
+
+ self.email_label = QLabel("&Email address:")
+ self.email_line_edit = QLineEdit()
+ self.email_line_edit.setValidator(
+ QRegularExpressionValidator(QRegularExpression(EMAIL_REGEXP), self)
+ )
+ self.email_label.setBuddy(self.email_line_edit)
+
+ self.registerField("evaluate.name*", self.name_line_edit)
+ self.registerField("evaluate.email*", self.email_line_edit)
+
+ layout = QGridLayout(self)
+ layout.addWidget(self.name_label, 0, 0)
+ layout.addWidget(self.name_line_edit, 0, 1)
+ layout.addWidget(self.email_label, 1, 0)
+ layout.addWidget(self.email_line_edit, 1, 1)
+
+ def nextId(self):
+ return Pages.Page_Conclusion
+
+
+class RegisterPage(QWizardPage):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.setTitle("Register Your Copy of <i>Super Product One</i>&trade")
+ self.setSubTitle("If you have an upgrade key, please fill in " "the appropriate field.")
+
+ self.name_label = QLabel("N&ame:")
+ self.name_line_edit = QLineEdit()
+ self.name_label.setBuddy(self.name_line_edit)
+
+ self.upgrade_key_label = QLabel("&Upgrade key:")
+ self.upgrade_key_line_edit = QLineEdit()
+ self.upgrade_key_label.setBuddy(self.upgrade_key_line_edit)
+
+ self.registerField("register.name*", self.name_line_edit)
+ self.registerField("register.upgradeKey", self.upgrade_key_line_edit)
+
+ layout = QGridLayout(self)
+ layout.addWidget(self.name_label, 0, 0)
+ layout.addWidget(self.name_line_edit, 0, 1)
+ layout.addWidget(self.upgrade_key_label, 1, 0)
+ layout.addWidget(self.upgrade_key_line_edit, 1, 1)
+
+ def nextId(self):
+ if self.upgrade_key_line_edit.text():
+ return Pages.Page_Details
+ else:
+ return Pages.Page_Conclusion
+
+
+class DetailsPage(QWizardPage):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.setTitle("Fill In Your Details")
+ self.setSubTitle(
+ "Please fill all three fields. Make sure to provide a valid "
+ "email address (e.g., tanaka.aya@example.co.jp)."
+ )
+
+ self.company_label = QLabel("&Company name:")
+ self.company_line_edit = QLineEdit()
+ self.company_label.setBuddy(self.company_line_edit)
+
+ self.email_label = QLabel("&Email address:")
+ self.email_line_edit = QLineEdit()
+ self.email_line_edit.setValidator(
+ QRegularExpressionValidator(QRegularExpression(EMAIL_REGEXP), self)
+ )
+ self.email_label.setBuddy(self.email_line_edit)
+
+ self.postal_label = QLabel("&Postal address:")
+ self.postal_line_edit = QLineEdit()
+ self.postal_label.setBuddy(self.postal_line_edit)
+
+ self.registerField("details.company*", self.company_line_edit)
+ self.registerField("details.email*", self.email_line_edit)
+ self.registerField("details.postal*", self.postal_line_edit)
+
+ layout = QGridLayout(self)
+ layout.addWidget(self.company_label, 0, 0)
+ layout.addWidget(self.company_line_edit, 0, 1)
+ layout.addWidget(self.email_label, 1, 0)
+ layout.addWidget(self.email_line_edit, 1, 1)
+ layout.addWidget(self.postal_label, 2, 0)
+ layout.addWidget(self.postal_line_edit, 2, 1)
+
+ def nextId(self):
+ return Pages.Page_Conclusion
+
+
+class ConclusionPage(QWizardPage):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.setTitle("Complete Your Registration")
+
+ path = Path(__file__).resolve().parent
+ self.setPixmap(QWizard.WatermarkPixmap, QPixmap(path / "images" / "watermark.png"))
+
+ self.bottom_label = QLabel()
+ self.bottom_label.setWordWrap(True)
+
+ agreeCheckBox = QCheckBox("I agree to the terms of the license")
+
+ self.registerField("conclusion.agree*", agreeCheckBox)
+
+ layout = QVBoxLayout(self)
+ layout.addWidget(self.bottom_label)
+ layout.addWidget(agreeCheckBox)
+
+ self.custom_button_clicked_signal_connected = False
+
+ def nextId(self):
+ return -1
+
+ def initializePage(self):
+ if self.wizard().hasVisitedPage(Pages.Page_Evaluate):
+ license_text = "<u>Evaluation License Agreement:</u> "
+ "You can use self software for 30 days and make one "
+ "backup, but you are not allowed to distribute it."
+ elif self.wizard().hasVisitedPage(Pages.Page_Details):
+ license_text = (
+ "<u>First-Time License Agreement:</u> "
+ "You can use self software subject to the license "
+ "you will receive by email."
+ )
+
+ else:
+ license_text = (
+ "<u>Upgrade License Agreement:</u> "
+ "This software is licensed under the terms of your "
+ "current license."
+ )
+ self.bottom_label.setText(license_text)
+
+ def setVisible(self, visible: bool):
+ super().setVisible(visible)
+ if visible:
+ self.wizard().setButtonText(QWizard.CustomButton1, "&Print")
+ self.wizard().setOption(QWizard.HaveCustomButton1, True)
+
+ if not self.custom_button_clicked_signal_connected:
+ self.custom_button_clicked_signal_connected = True
+ self.wizard().customButtonClicked.connect(self.print_button_clicked)
+ else:
+ self.wizard().setOption(QWizard.HaveCustomButton1, False)
+
+ if self.custom_button_clicked_signal_connected:
+ self.custom_button_clicked_signal_connected = False
+ self.wizard().customButtonClicked.disconnect(self.print_button_clicked)
+
+ def print_button_clicked(self):
+ printer = QPrinter()
+
+ dialog = QPrintDialog(printer, self)
+ if dialog.exec():
+ QMessageBox.warning(
+ self,
+ "Print License",
+ "As an environmentally friendly measure, the "
+ "license text will not actually be printed.",
+ )
+
+
+class LicenseWizard(QWizard):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self._pages = [
+ IntroPage(),
+ EvaluatePage(),
+ RegisterPage(),
+ DetailsPage(),
+ ConclusionPage()
+ ]
+
+ for page in self._pages:
+ self.addPage(page)
+
+ self.setStartId(Pages.Page_Intro)
+
+ if sys.platform == 'darwin':
+ self.setWizardStyle(QWizard.ModernStyle)
+
+ self.setOption(QWizard.HaveHelpButton, True)
+
+ path = Path(__file__).resolve().parent
+ self.setPixmap(QWizard.LogoPixmap, QPixmap(path / "images" / "logo.png"))
+
+ self.helpRequested.connect(self.show_help)
+ self.setWindowTitle("License Wizard")
+
+ self.last_help_message: str = None
+
+ def show_help(self):
+ if self.currentId() == Pages.Page_Intro:
+ message = "The decision you make here will affect which page you get to see next."
+
+ elif self.currentId() == Pages.Page_Evaluate:
+ message = (
+ "Make sure to provide a valid email address, such as "
+ "toni.buddenbrook@example.de."
+ )
+
+ elif self.currentId() == Pages.Page_Register:
+ message = (
+ "If you don't provide an upgrade key, you will be asked to fill in your details."
+ )
+
+ elif self.currentId() == Pages.Page_Details:
+ message = (
+ "Make sure to provide a valid email address, such as "
+ "thomas.gradgrind@example.co.uk."
+ )
+
+ elif self.currentId() == Pages.Page_Conclusion:
+ message = "You must accept the terms and conditions of the license to proceed."
+ else:
+ message = "This help is likely not to be of any help."
+
+ if self.last_help_message == message:
+ message = (
+ "Sorry, I already gave what help I could. Maybe you should try asking a human?"
+ )
+
+ QMessageBox.information(self, "License Wizard Help", message)
+
+ self.last_help_message = message
diff --git a/examples/widgets/dialogs/licensewizard/licensewizard.pyproject b/examples/widgets/dialogs/licensewizard/licensewizard.pyproject
new file mode 100644
index 000000000..ef8b80173
--- /dev/null
+++ b/examples/widgets/dialogs/licensewizard/licensewizard.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "licensewizard.py"]
+}
diff --git a/examples/widgets/dialogs/licensewizard/main.py b/examples/widgets/dialogs/licensewizard/main.py
new file mode 100644
index 000000000..26537ddf9
--- /dev/null
+++ b/examples/widgets/dialogs/licensewizard/main.py
@@ -0,0 +1,15 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtWidgets import QApplication
+
+from licensewizard import LicenseWizard
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ wizard = LicenseWizard()
+ wizard.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/dialogs/standarddialogs/standarddialogs.py b/examples/widgets/dialogs/standarddialogs/standarddialogs.py
index fb2dbc184..ef677d5a8 100644
--- a/examples/widgets/dialogs/standarddialogs/standarddialogs.py
+++ b/examples/widgets/dialogs/standarddialogs/standarddialogs.py
@@ -1,50 +1,14 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/dialogs/standarddialogs example from Qt v5.x"""
import sys
-from PySide6.QtCore import QDir, QRect, Qt
-from PySide6.QtGui import QFont, QPalette, QScreen
+from textwrap import dedent
+
+from PySide6.QtCore import QDir, Qt, Slot
+from PySide6.QtGui import QFont, QPalette
from PySide6.QtWidgets import (QApplication, QColorDialog, QCheckBox, QDialog,
QErrorMessage, QFontDialog, QFileDialog, QFrame,
QGridLayout, QGroupBox, QInputDialog, QLabel,
@@ -75,10 +39,6 @@ class DialogOptionsWidget(QGroupBox):
class Dialog(QDialog):
- MESSAGE = ("<p>Message boxes have a caption, a text, and up to three "
- "buttons, each with standard or custom texts.</p>"
- "<p>Click a button to close the message box. Pressing the Esc "
- "button will activate the detected escape button (if any).</p>")
def __init__(self, parent=None):
super().__init__(parent)
@@ -181,8 +141,6 @@ class Dialog(QDialog):
self._warning_label.setFrameStyle(frame_style)
self._warning_button = QPushButton("QMessageBox.&warning()")
- self._error_label = QLabel()
- self._error_label.setFrameStyle(frame_style)
self._error_button = QPushButton("QErrorMessage.showM&essage()")
self._integer_button.clicked.connect(self.set_integer)
@@ -268,46 +226,49 @@ class Dialog(QDialog):
layout.addWidget(self._warning_button, 3, 0)
layout.addWidget(self._warning_label, 3, 1)
layout.addWidget(self._error_button, 4, 0)
- layout.addWidget(self._error_label, 4, 1)
spacer = QSpacerItem(0, 0, QSizePolicy.Ignored, QSizePolicy.MinimumExpanding)
layout.addItem(spacer, 5, 0)
toolbox.addItem(page, "Message Boxes")
self.setWindowTitle("Standard Dialogs")
+ @Slot()
def set_integer(self):
i, ok = QInputDialog.getInt(self,
- "QInputDialog.getInteger()", "Percentage:", 25, 0, 100, 1)
+ "QInputDialog.getInteger()", "Percentage:", 25, 0, 100, 1)
if ok:
self._integer_label.setText(f"{i}%")
+ @Slot()
def set_double(self):
d, ok = QInputDialog.getDouble(self, "QInputDialog.getDouble()",
- "Amount:", 37.56, -10000, 10000, 2)
+ "Amount:", 37.56, -10000, 10000, 2)
if ok:
self._double_label.setText(f"${d:g}")
+ @Slot()
def set_item(self):
items = ("Spring", "Summer", "Fall", "Winter")
- item, ok = QInputDialog.getItem(self, "QInputDialog.getItem()",
- "Season:", items, 0, False)
+ item, ok = QInputDialog.getItem(self, "QInputDialog.getItem()", "Season:", items, 0, False)
if ok and item:
self._item_label.setText(item)
+ @Slot()
def set_text(self):
text, ok = QInputDialog.getText(self, "QInputDialog.getText()",
- "User name:", QLineEdit.Normal,
- QDir.home().dirName())
+ "User name:", QLineEdit.Normal, QDir.home().dirName())
if ok and text != '':
self._text_label.setText(text)
+ @Slot()
def set_multiline_text(self):
text, ok = QInputDialog.getMultiLineText(self, "QInputDialog::getMultiLineText()",
- "Address:", "John Doe\nFreedom Street")
+ "Address:", "John Doe\nFreedom Street")
if ok and text != '':
self._multiline_text_label.setText(text)
+ @Slot()
def set_color(self):
options_value = self._color_options.value()
options = QColorDialog.ColorDialogOptions(options_value)
@@ -318,6 +279,7 @@ class Dialog(QDialog):
self._color_label.setPalette(QPalette(color))
self._color_label.setAutoFillBackground(True)
+ @Slot()
def set_font(self):
options_value = self._font_options.value()
options = QFontDialog.FontDialogOptions(options_value)
@@ -332,54 +294,63 @@ class Dialog(QDialog):
self._font_label.setText(font.key())
self._font_label.setFont(font)
+ @Slot()
def set_existing_directory(self):
options_value = self._file_options.value()
options = QFileDialog.Options(options_value) | QFileDialog.ShowDirsOnly
- directory = QFileDialog.getExistingDirectory(self,
- "QFileDialog.getExistingDirectory()",
- self._directory_label.text(), options)
+ directory = QFileDialog.getExistingDirectory(self, "QFileDialog.getExistingDirectory()",
+ self._directory_label.text(), options)
if directory:
self._directory_label.setText(directory)
+ @Slot()
def set_open_file_name(self):
options_value = self._file_options.value()
options = QFileDialog.Options(options_value)
- fileName, filtr = QFileDialog.getOpenFileName(self,
- "QFileDialog.getOpenFileName()",
- self._open_file_name_label.text(),
- "All Files (*);;Text Files (*.txt)", "", options)
+ fileName, _ = QFileDialog.getOpenFileName(self, "QFileDialog.getOpenFileName()",
+ self._open_file_name_label.text(),
+ "All Files (*);;Text Files (*.txt)", "", options)
if fileName:
self._open_file_name_label.setText(fileName)
+ @Slot()
def set_open_file_names(self):
options_value = self._file_options.value()
options = QFileDialog.Options(options_value)
- files, filtr = QFileDialog.getOpenFileNames(self,
- "QFileDialog.getOpenFileNames()", self._open_files_path,
- "All Files (*);;Text Files (*.txt)", "", options)
+ files, _ = QFileDialog.getOpenFileNames(self, "QFileDialog.getOpenFileNames()",
+ self._open_files_path,
+ "All Files (*);;Text Files (*.txt)", "", options)
if files:
self._open_files_path = files[0]
file_list = ', '.join(files)
self._open_file_names_label.setText(f"[{file_list}]")
+ @Slot()
def set_save_file_name(self):
options_value = self._file_options.value()
options = QFileDialog.Options(options_value)
- fileName, filtr = QFileDialog.getSaveFileName(self,
- "QFileDialog.getSaveFileName()",
- self._save_file_name_label.text(),
- "All Files (*);;Text Files (*.txt)", "", options)
+ fileName, _ = QFileDialog.getSaveFileName(self, "QFileDialog.getSaveFileName()",
+ self._save_file_name_label.text(),
+ "All Files (*);;Text Files (*.txt)", "", options)
if fileName:
self._save_file_name_label.setText(fileName)
+ @Slot()
def critical_message(self):
- reply = QMessageBox.critical(self, "QMessageBox.critical()",
- Dialog.MESSAGE,
- QMessageBox.Abort | QMessageBox.Retry | QMessageBox.Ignore)
+ m = dedent("""\
+ Activating the liquid oxygen stirring fans caused an
+ explosion in one of the tanks. Liquid oxygen levels
+ are getting low. This may jeopardize the moon landing mission.""")
+ msg_box = QMessageBox(QMessageBox.Critical, "QMessageBox.critical()",
+ "Houston, we have a problem",
+ QMessageBox.Abort | QMessageBox.Retry | QMessageBox.Ignore,
+ self)
+ msg_box.setInformativeText(m)
+ reply = msg_box.exec()
if reply == QMessageBox.Abort:
self._critical_label.setText("Abort")
elif reply == QMessageBox.Retry:
@@ -387,18 +358,36 @@ class Dialog(QDialog):
else:
self._critical_label.setText("Ignore")
+ @Slot()
def information_message(self):
- reply = QMessageBox.information(self,
- "QMessageBox.information()", Dialog.MESSAGE)
+ m = dedent("""\
+ This phrase was often used by public address announcers at
+ the conclusion of Elvis Presley concerts in order to
+ disperse audiences who lingered in hopes of an encore.
+ It has since become a catchphrase and punchline.""")
+ msg_box = QMessageBox(QMessageBox.Information, "QMessageBox.information()",
+ "Elvis has left the building.",
+ QMessageBox.Ok, self)
+ msg_box.setInformativeText(m)
+ reply = msg_box.exec()
if reply == QMessageBox.Ok:
self._information_label.setText("OK")
else:
self._information_label.setText("Escape")
+ @Slot()
def question_message(self):
- reply = QMessageBox.question(self, "QMessageBox.question()",
- Dialog.MESSAGE,
- QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)
+ m = dedent("""\
+ A cheeseburger is a hamburger topped with cheese.
+ Traditionally, the slice of cheese is placed on top of the
+ meat patty. The cheese is usually added to the cooking
+ hamburger patty shortly before serving, which allows the
+ cheese to melt.""")
+ msg_box = QMessageBox(QMessageBox.Question, "QMessageBox.question()",
+ "Would you like cheese with that?",
+ QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)
+ msg_box.setInformativeText(m)
+ reply = msg_box.exec()
if reply == QMessageBox.Yes:
self._question_label.setText("Yes")
elif reply == QMessageBox.No:
@@ -406,25 +395,36 @@ class Dialog(QDialog):
else:
self._question_label.setText("Cancel")
+ @Slot()
def warning_message(self):
- msg_box = QMessageBox(QMessageBox.Warning,
- "QMessageBox.warning()", Dialog.MESSAGE,
- QMessageBox.NoButton, self)
- msg_box.addButton("Save &Again", QMessageBox.AcceptRole)
- msg_box.addButton("&Continue", QMessageBox.RejectRole)
+ msg_box = QMessageBox(QMessageBox.Warning, "QMessageBox.warning()",
+ "Delete the only copy of your movie manuscript?",
+ QMessageBox.NoButton, self)
+ m = "You've been working on this manuscript for 738 days now. Hang in there!"
+ msg_box.setInformativeText(m)
+ msg_box.setDetailedText('"A long time ago in a galaxy far, far away...."')
+ msg_box.addButton("&Keep", QMessageBox.AcceptRole)
+ msg_box.addButton("Delete", QMessageBox.RejectRole)
if msg_box.exec() == QMessageBox.AcceptRole:
- self._warning_label.setText("Save Again")
+ self._warning_label.setText("Keep")
else:
- self._warning_label.setText("Continue")
+ self._warning_label.setText("Delete")
+ @Slot()
def error_message(self):
- self._error_message_dialog.showMessage("This dialog shows and remembers "
- "error messages. If the checkbox is checked (as it is by "
- "default), the shown message will be shown again, but if the "
- "user unchecks the box the message will not appear again if "
- "QErrorMessage.showMessage() is called with the same message.")
- self._error_label.setText("If the box is unchecked, the message won't "
- "appear again.")
+ m = dedent("""\
+ This dialog shows and remembers error messages. If the
+ user chooses to not show the dialog again, the dialog
+ will not appear again if QErrorMessage.showMessage()
+ is called with the same message.""")
+ self._error_message_dialog.showMessage(m)
+ m = dedent("""\
+ You can queue up error messages, and they will be
+ shown one after each other. Each message maintains
+ its own state for whether it will be shown again
+ the next time QErrorMessage::showMessage() is called
+ with the same message.""")
+ self._error_message_dialog.showMessage(m)
if __name__ == '__main__':
diff --git a/examples/widgets/dialogs/tabdialog/doc/tabdialog.png b/examples/widgets/dialogs/tabdialog/doc/tabdialog.png
new file mode 100644
index 000000000..a92af5f9c
--- /dev/null
+++ b/examples/widgets/dialogs/tabdialog/doc/tabdialog.png
Binary files differ
diff --git a/examples/widgets/dialogs/tabdialog/doc/tabdialog.rst b/examples/widgets/dialogs/tabdialog/doc/tabdialog.rst
new file mode 100644
index 000000000..162316f54
--- /dev/null
+++ b/examples/widgets/dialogs/tabdialog/doc/tabdialog.rst
@@ -0,0 +1,13 @@
+Tab Dialog Example
+===================
+
+Shows how to construct a tab dialog using the QTabWidget class.
+
+The Tab Dialog example consists of a single TabDialog class
+that provides three tabs, each containing information about
+a particular file, and two standard push buttons that are
+used to accept or reject the contents of the dialog.
+
+.. image:: tabdialog.png
+ :width: 753
+ :alt: tabdialog screenshot
diff --git a/examples/widgets/dialogs/tabdialog/tabdialog.py b/examples/widgets/dialogs/tabdialog/tabdialog.py
new file mode 100644
index 000000000..6be3d020b
--- /dev/null
+++ b/examples/widgets/dialogs/tabdialog/tabdialog.py
@@ -0,0 +1,178 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the widgets/dialogs/tabdialog example from Qt v6.x"""
+
+import sys
+
+from PySide6.QtCore import QFileInfo
+from PySide6.QtWidgets import (
+ QWidget,
+ QVBoxLayout,
+ QLabel,
+ QCheckBox,
+ QApplication,
+ QDialog,
+ QTabWidget,
+ QLineEdit,
+ QDialogButtonBox,
+ QFrame,
+ QListWidget,
+ QGroupBox,
+)
+
+
+class TabDialog(QDialog):
+ def __init__(self, file_name: str, parent: QWidget = None):
+ super().__init__(parent)
+
+ file_info = QFileInfo(file_name)
+
+ tab_widget = QTabWidget()
+ tab_widget.addTab(GeneralTab(file_info, self), "General")
+ tab_widget.addTab(PermissionsTab(file_info, self), "Permissions")
+ tab_widget.addTab(ApplicationsTab(file_info, self), "Applications")
+
+ button_box = QDialogButtonBox(
+ QDialogButtonBox.Ok | QDialogButtonBox.Cancel
+ )
+
+ button_box.accepted.connect(self.accept)
+ button_box.rejected.connect(self.reject)
+
+ main_layout = QVBoxLayout()
+ main_layout.addWidget(tab_widget)
+ main_layout.addWidget(button_box)
+ self.setLayout(main_layout)
+ self.setWindowTitle("Tab Dialog")
+
+
+class GeneralTab(QWidget):
+ def __init__(self, file_info: QFileInfo, parent: QWidget):
+ super().__init__(parent)
+
+ file_name_label = QLabel("File Name:")
+ file_name_edit = QLineEdit(file_info.fileName())
+
+ path_label = QLabel("Path:")
+ path_value_label = QLabel(file_info.absoluteFilePath())
+ path_value_label.setFrameStyle(QFrame.Panel | QFrame.Sunken)
+
+ size_label = QLabel("Size:")
+ size = file_info.size() / 1024
+ size_value_label = QLabel(f"{size} K")
+ size_value_label.setFrameStyle(QFrame.Panel | QFrame.Sunken)
+
+ last_read_label = QLabel("Last Read:")
+ last_read_value_label = QLabel(file_info.lastRead().toString())
+ last_read_value_label.setFrameStyle(QFrame.Panel | QFrame.Sunken)
+
+ last_mod_label = QLabel("Last Modified:")
+ last_mod_value_label = QLabel(file_info.lastModified().toString())
+ last_mod_value_label.setFrameStyle(QFrame.Panel | QFrame.Sunken)
+
+ main_layout = QVBoxLayout()
+ main_layout.addWidget(file_name_label)
+ main_layout.addWidget(file_name_edit)
+ main_layout.addWidget(path_label)
+ main_layout.addWidget(path_value_label)
+ main_layout.addWidget(size_label)
+ main_layout.addWidget(size_value_label)
+ main_layout.addWidget(last_read_label)
+ main_layout.addWidget(last_read_value_label)
+ main_layout.addWidget(last_mod_label)
+ main_layout.addWidget(last_mod_value_label)
+ main_layout.addStretch(1)
+ self.setLayout(main_layout)
+
+
+class PermissionsTab(QWidget):
+ def __init__(self, file_info: QFileInfo, parent: QWidget):
+ super().__init__(parent)
+
+ permissions_group = QGroupBox("Permissions")
+
+ readable = QCheckBox("Readable")
+ if file_info.isReadable():
+ readable.setChecked(True)
+
+ writable = QCheckBox("Writable")
+ if file_info.isWritable():
+ writable.setChecked(True)
+
+ executable = QCheckBox("Executable")
+ if file_info.isExecutable():
+ executable.setChecked(True)
+
+ owner_group = QGroupBox("Ownership")
+
+ owner_label = QLabel("Owner")
+ owner_value_label = QLabel(file_info.owner())
+ owner_value_label.setFrameStyle(QFrame.Panel | QFrame.Sunken)
+
+ group_label = QLabel("Group")
+ group_value_label = QLabel(file_info.group())
+ group_value_label.setFrameStyle(QFrame.Panel | QFrame.Sunken)
+
+ permissions_layout = QVBoxLayout()
+ permissions_layout.addWidget(readable)
+ permissions_layout.addWidget(writable)
+ permissions_layout.addWidget(executable)
+ permissions_group.setLayout(permissions_layout)
+
+ owner_layout = QVBoxLayout()
+ owner_layout.addWidget(owner_label)
+ owner_layout.addWidget(owner_value_label)
+ owner_layout.addWidget(group_label)
+ owner_layout.addWidget(group_value_label)
+ owner_group.setLayout(owner_layout)
+
+ main_layout = QVBoxLayout()
+ main_layout.addWidget(permissions_group)
+ main_layout.addWidget(owner_group)
+ main_layout.addStretch(1)
+ self.setLayout(main_layout)
+
+
+class ApplicationsTab(QWidget):
+ def __init__(self, file_info: QFileInfo, parent: QWidget):
+ super().__init__(parent)
+
+ top_label = QLabel("Open with:")
+
+ applications_list_box = QListWidget()
+ applications = []
+
+ for i in range(1, 31):
+ applications.append(f"Application {i}")
+ applications_list_box.insertItems(0, applications)
+
+ if not file_info.suffix():
+ always_check_box = QCheckBox(
+ "Always use this application to open this type of file"
+ )
+ else:
+ always_check_box = QCheckBox(
+ f"Always use this application to open files "
+ f"with the extension {file_info.suffix()}"
+ )
+
+ layout = QVBoxLayout()
+ layout.addWidget(top_label)
+ layout.addWidget(applications_list_box)
+ layout.addWidget(always_check_box)
+ self.setLayout(layout)
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ if len(sys.argv) >= 2:
+ file_name = sys.argv[1]
+ else:
+ file_name = "."
+
+ tab_dialog = TabDialog(file_name)
+ tab_dialog.show()
+
+ sys.exit(app.exec())
diff --git a/examples/widgets/dialogs/tabdialog/tabdialog.pyproject b/examples/widgets/dialogs/tabdialog/tabdialog.pyproject
new file mode 100644
index 000000000..f121cd804
--- /dev/null
+++ b/examples/widgets/dialogs/tabdialog/tabdialog.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["tabdialog.py"]
+}
diff --git a/examples/widgets/dialogs/trivialwizard/trivialwizard.py b/examples/widgets/dialogs/trivialwizard/trivialwizard.py
index 9b5c07255..2e551ae19 100644
--- a/examples/widgets/dialogs/trivialwizard/trivialwizard.py
+++ b/examples/widgets/dialogs/trivialwizard/trivialwizard.py
@@ -1,51 +1,13 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/dialogs/trivialwizard example from Qt v5.x"""
import sys
from PySide6.QtWidgets import (QApplication, QFormLayout, QLabel, QLineEdit,
- QVBoxLayout, QWidget, QWizardPage, QWizard)
+ QVBoxLayout, QWizardPage, QWizard)
def create_intro_page():
@@ -53,7 +15,7 @@ def create_intro_page():
page.setTitle("Introduction")
label = QLabel("This wizard will help you register your copy of "
- "Super Product Two.")
+ "Super Product Two.")
label.setWordWrap(True)
layout = QVBoxLayout(page)
diff --git a/examples/widgets/draganddrop/draggableicons/doc/draggableicons.png b/examples/widgets/draganddrop/draggableicons/doc/draggableicons.png
new file mode 100644
index 000000000..640a99e44
--- /dev/null
+++ b/examples/widgets/draganddrop/draggableicons/doc/draggableicons.png
Binary files differ
diff --git a/examples/widgets/draganddrop/draggableicons/doc/draggableicons.rst b/examples/widgets/draganddrop/draggableicons/doc/draggableicons.rst
new file mode 100644
index 000000000..3f67e5809
--- /dev/null
+++ b/examples/widgets/draganddrop/draggableicons/doc/draggableicons.rst
@@ -0,0 +1,9 @@
+Draggable Icons Example
+=======================
+
+The Draggable Icons example shows how to drag and drop image data between
+widgets in the same application,and between different applications.
+
+.. image:: draggableicons.png
+ :width: 536
+ :alt: draggable icons screenshot
diff --git a/examples/widgets/draganddrop/draggableicons/draggableicons.py b/examples/widgets/draganddrop/draggableicons/draggableicons.py
new file mode 100644
index 000000000..b929bd5e3
--- /dev/null
+++ b/examples/widgets/draganddrop/draggableicons/draggableicons.py
@@ -0,0 +1,128 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from pathlib import Path
+import sys
+
+from PySide6.QtCore import QByteArray, QDataStream, QIODevice, QMimeData, QPoint, Qt
+from PySide6.QtGui import QColor, QDrag, QPainter, QPixmap
+from PySide6.QtWidgets import QApplication, QFrame, QHBoxLayout, QLabel, QWidget
+
+
+class DragWidget(QFrame):
+ def __init__(self, parent: QWidget):
+ super().__init__(parent)
+ self.setMinimumSize(200, 200)
+ self.setFrameStyle(QFrame.Sunken | QFrame.StyledPanel)
+ self.setAcceptDrops(True)
+
+ path = Path(__file__).resolve().parent
+
+ boat_icon = QLabel(self)
+ boat_icon.setPixmap(QPixmap(path / "images" / "boat.png"))
+ boat_icon.move(10, 10)
+ boat_icon.show()
+ boat_icon.setAttribute(Qt.WA_DeleteOnClose)
+
+ car_icon = QLabel(self)
+ car_icon.setPixmap(QPixmap(path / "images" / "car.png"))
+ car_icon.move(100, 10)
+ car_icon.show()
+ car_icon.setAttribute(Qt.WA_DeleteOnClose)
+
+ house_icon = QLabel(self)
+ house_icon.setPixmap(QPixmap(path / "images" / "house.png"))
+ house_icon.move(10, 80)
+ house_icon.show()
+ house_icon.setAttribute(Qt.WA_DeleteOnClose)
+
+ def dragEnterEvent(self, event):
+ if event.mimeData().hasFormat("application/x-dnditem_data"):
+ if event.source() == self:
+ event.setDropAction(Qt.MoveAction)
+ event.accept()
+ else:
+ event.acceptProposedAction()
+ else:
+ event.ignore()
+
+ def dragMoveEvent(self, event):
+ if event.mimeData().hasFormat("application/x-dnditem_data"):
+ if event.source() == self:
+ event.setDropAction(Qt.MoveAction)
+ event.accept()
+ else:
+ event.acceptProposedAction()
+ else:
+ event.ignore()
+
+ def dropEvent(self, event):
+ if event.mimeData().hasFormat("application/x-dnditem_data"):
+ item_data: QByteArray = event.mimeData().data("application/x-dnditem_data")
+ data_stream = QDataStream(item_data, QIODevice.ReadOnly)
+
+ pixmap = QPixmap()
+ offset = QPoint()
+
+ data_stream >> pixmap >> offset
+
+ new_icon = QLabel(self)
+ new_icon.setPixmap(pixmap)
+ new_icon.move(event.position().toPoint() - offset)
+ new_icon.show()
+ new_icon.setAttribute(Qt.WA_DeleteOnClose)
+
+ if event.source() == self:
+ event.setDropAction(Qt.MoveAction)
+ event.accept()
+ else:
+ event.acceptProposedAction()
+ else:
+ event.ignore()
+
+ def mousePressEvent(self, event):
+ child: QLabel = self.childAt(event.position().toPoint())
+ if not child:
+ return
+
+ pixmap = child.pixmap()
+
+ item_data = QByteArray()
+ data_stream = QDataStream(item_data, QIODevice.WriteOnly)
+
+ data_stream << pixmap << QPoint(event.position().toPoint() - child.pos())
+
+ mime_data = QMimeData()
+ mime_data.setData("application/x-dnditem_data", item_data)
+
+ drag = QDrag(self)
+ drag.setMimeData(mime_data)
+ drag.setPixmap(pixmap)
+ drag.setHotSpot(event.position().toPoint() - child.pos())
+
+ # .copy() is important: python is different than c++ in this case
+ temp_pixmap = pixmap.copy()
+ with QPainter(temp_pixmap) as painter:
+ painter.fillRect(pixmap.rect(), QColor(127, 127, 127, 127))
+
+ child.setPixmap(temp_pixmap)
+
+ if drag.exec(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction:
+ child.close()
+ else:
+ child.show()
+ child.setPixmap(pixmap)
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ main_widget = QWidget()
+ horizontal_layout = QHBoxLayout(main_widget)
+ horizontal_layout.addWidget(DragWidget(main_widget))
+ horizontal_layout.addWidget(DragWidget(main_widget))
+
+ main_widget.setWindowTitle("Draggable Icons")
+ main_widget.show()
+
+ sys.exit(app.exec())
diff --git a/examples/widgets/draganddrop/draggableicons/draggableicons.qrc b/examples/widgets/draganddrop/draggableicons/draggableicons.qrc
new file mode 100644
index 000000000..63f84ac06
--- /dev/null
+++ b/examples/widgets/draganddrop/draggableicons/draggableicons.qrc
@@ -0,0 +1,7 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="">
+ <file>images/boat.png</file>
+ <file>images/car.png</file>
+ <file>images/house.png</file>
+</qresource>
+</RCC>
diff --git a/examples/widgets/draganddrop/draggableicons/images/boat.png b/examples/widgets/draganddrop/draggableicons/images/boat.png
new file mode 100644
index 000000000..46c894f06
--- /dev/null
+++ b/examples/widgets/draganddrop/draggableicons/images/boat.png
Binary files differ
diff --git a/examples/widgets/draganddrop/draggableicons/images/car.png b/examples/widgets/draganddrop/draggableicons/images/car.png
new file mode 100644
index 000000000..3cb35e56c
--- /dev/null
+++ b/examples/widgets/draganddrop/draggableicons/images/car.png
Binary files differ
diff --git a/examples/widgets/draganddrop/draggableicons/images/house.png b/examples/widgets/draganddrop/draggableicons/images/house.png
new file mode 100644
index 000000000..ee9d5b115
--- /dev/null
+++ b/examples/widgets/draganddrop/draggableicons/images/house.png
Binary files differ
diff --git a/examples/widgets/draganddrop/draggabletext/draggabletext.py b/examples/widgets/draganddrop/draggabletext/draggabletext.py
index 9595b0d2c..6ffdbd70e 100644
--- a/examples/widgets/draganddrop/draggabletext/draggabletext.py
+++ b/examples/widgets/draganddrop/draggabletext/draggabletext.py
@@ -1,52 +1,15 @@
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 port of the widgets/draganddrop/draggabletext example from Qt v5.x, originating from PyQt"""
+"""PySide6 port of the widgets/draganddrop/draggabletext example from Qt v5.x,
+ originating from PyQt"""
from PySide6.QtCore import QFile, QIODevice, QMimeData, QPoint, Qt, QTextStream
from PySide6.QtGui import QDrag, QPalette, QPixmap
from PySide6.QtWidgets import QApplication, QFrame, QLabel, QWidget
-import draggabletext_rc
+import draggabletext_rc # noqa: F401
class DragLabel(QLabel):
diff --git a/examples/widgets/draganddrop/draggabletext/draggabletext.pyproject b/examples/widgets/draganddrop/draggabletext/draggabletext.pyproject
index 0d422076e..fd97c9096 100644
--- a/examples/widgets/draganddrop/draggabletext/draggabletext.pyproject
+++ b/examples/widgets/draganddrop/draggabletext/draggabletext.pyproject
@@ -1,4 +1,3 @@
{
- "files": ["draggabletext_rc.py", "words.txt", "draggabletext.qrc",
- "draggabletext.py"]
+ "files": ["words.txt", "draggabletext.qrc", "draggabletext.py"]
}
diff --git a/examples/widgets/draganddrop/draggabletext/draggabletext_rc.py b/examples/widgets/draganddrop/draggabletext/draggabletext_rc.py
index e1d19bd91..30c01ce64 100644
--- a/examples/widgets/draganddrop/draggabletext/draggabletext_rc.py
+++ b/examples/widgets/draganddrop/draggabletext/draggabletext_rc.py
@@ -1,6 +1,6 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.14.0
+# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
@@ -43,7 +43,7 @@ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
+\x00\x00\x01z\xe7\xee'\x05\
"
def qInitResources():
diff --git a/examples/widgets/draganddrop/dropsite/doc/dropsite.rst b/examples/widgets/draganddrop/dropsite/doc/dropsite.rst
new file mode 100644
index 000000000..8d6c42bc8
--- /dev/null
+++ b/examples/widgets/draganddrop/dropsite/doc/dropsite.rst
@@ -0,0 +1,8 @@
+Drop Site Example
+=================
+
+The Drop Site example shows how to distinguish the various MIME formats
+available in a drag and drop operation.
+
+It accepts drops from other applications and displays the MIME formats
+provided by the drag object.
diff --git a/examples/widgets/draganddrop/dropsite/droparea.py b/examples/widgets/draganddrop/dropsite/droparea.py
new file mode 100644
index 000000000..efc4614f0
--- /dev/null
+++ b/examples/widgets/draganddrop/dropsite/droparea.py
@@ -0,0 +1,67 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QMimeData, Qt, Slot, Signal
+from PySide6.QtGui import QPalette, QPixmap
+from PySide6.QtWidgets import QFrame, QLabel
+
+
+class DropArea(QLabel):
+
+ changed = Signal(QMimeData)
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.setMinimumSize(200, 200)
+ self.setFrameStyle(QFrame.Sunken | QFrame.StyledPanel)
+ self.setAlignment(Qt.AlignCenter)
+ self.setAcceptDrops(True)
+ self.setAutoFillBackground(True)
+ self.clear()
+
+ def dragEnterEvent(self, event):
+ self.setText("<drop content>")
+ self.setBackgroundRole(QPalette.Highlight)
+
+ event.acceptProposedAction()
+ self.changed.emit(event.mimeData())
+
+ def dragMoveEvent(self, event):
+ event.acceptProposedAction()
+
+ def dropEvent(self, event):
+ mime_data = event.mimeData()
+
+ if mime_data.hasImage():
+ self.setPixmap(QPixmap(mime_data.imageData()))
+ elif mime_data.hasFormat("text/markdown"):
+ self.setText(mime_data.data("text/markdown"))
+ self.setTextFormat(Qt.MarkdownText)
+ elif mime_data.hasHtml():
+ self.setText(mime_data.html())
+ self.setTextFormat(Qt.RichText)
+ elif mime_data.hasText():
+ self.setText(mime_data.text())
+ self.setTextFormat(Qt.PlainText)
+ elif mime_data.hasUrls():
+ url_list = mime_data.urls()
+ text = ""
+ for i in range(0, min(len(url_list), 32)):
+ text += url_list[i].path() + "\n"
+ self.setText(text)
+ else:
+ self.setText("Cannot display data")
+
+ self.setBackgroundRole(QPalette.Dark)
+ event.acceptProposedAction()
+
+ def dragLeaveEvent(self, event):
+ self.clear()
+ event.accept()
+
+ @Slot()
+ def clear(self):
+ self.setText("<drop content>")
+ self.setBackgroundRole(QPalette.Dark)
+
+ self.changed.emit(None)
diff --git a/examples/widgets/draganddrop/dropsite/dropsite.pyproject b/examples/widgets/draganddrop/dropsite/dropsite.pyproject
new file mode 100644
index 000000000..0173d5cb9
--- /dev/null
+++ b/examples/widgets/draganddrop/dropsite/dropsite.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "droparea.py", "dropsitewindow.py"]
+}
diff --git a/examples/widgets/draganddrop/dropsite/dropsitewindow.py b/examples/widgets/draganddrop/dropsite/dropsitewindow.py
new file mode 100644
index 000000000..5427d520d
--- /dev/null
+++ b/examples/widgets/draganddrop/dropsite/dropsitewindow.py
@@ -0,0 +1,115 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import re
+from PySide6.QtCore import QMimeData, Qt, Slot
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtWidgets import (QAbstractItemView, QPushButton,
+ QDialogButtonBox, QLabel,
+ QTableWidget, QTableWidgetItem,
+ QVBoxLayout, QWidget)
+
+from droparea import DropArea
+
+DESCRIPTION = """This example accepts drags from other applications and
+displays the MIME types provided by the drag object."""
+
+
+_WHITESPACE_PATTERN = re.compile(r"\s+")
+
+
+def simplify_whitespace(s):
+ return _WHITESPACE_PATTERN.sub(" ", s).strip()
+
+
+class DropSiteWindow(QWidget):
+
+ def __init__(self):
+ super().__init__()
+ drop_area = DropArea()
+ abstract_label = QLabel()
+ self._formats_table = QTableWidget()
+
+ button_box = QDialogButtonBox()
+ abstract_label = QLabel(DESCRIPTION)
+ abstract_label.setWordWrap(True)
+ abstract_label.adjustSize()
+
+ drop_area = DropArea()
+ drop_area.changed.connect(self.update_formats_table)
+
+ self._formats_table = QTableWidget()
+ self._formats_table.setColumnCount(2)
+ self._formats_table.setEditTriggers(QAbstractItemView.NoEditTriggers)
+ self._formats_table.setHorizontalHeaderLabels(["Format", "Content"])
+ self._formats_table.horizontalHeader().setStretchLastSection(True)
+
+ clear_button = QPushButton("Clear")
+ self._copy_button = QPushButton("Copy")
+ quit_button = QPushButton("Quit")
+
+ button_box = QDialogButtonBox()
+ button_box.addButton(clear_button, QDialogButtonBox.ActionRole)
+ button_box.addButton(self._copy_button, QDialogButtonBox.ActionRole)
+ self._copy_button.setVisible(False)
+
+ button_box.addButton(quit_button, QDialogButtonBox.RejectRole)
+
+ quit_button.clicked.connect(self.close)
+ clear_button.clicked.connect(drop_area.clear)
+ self._copy_button.clicked.connect(self.copy)
+
+ main_layout = QVBoxLayout(self)
+ main_layout.addWidget(abstract_label)
+ main_layout.addWidget(drop_area)
+ main_layout.addWidget(self._formats_table)
+ main_layout.addWidget(button_box)
+
+ self.setWindowTitle("Drop Site")
+ self.resize(700, 500)
+
+ @Slot(QMimeData)
+ def update_formats_table(self, mime_data):
+ self._formats_table.setRowCount(0)
+ self._copy_button.setEnabled(False)
+ if not mime_data:
+ return
+
+ for format in mime_data.formats():
+ format_item = QTableWidgetItem(format)
+ format_item.setFlags(Qt.ItemIsEnabled)
+ format_item.setTextAlignment(Qt.AlignTop | Qt.AlignLeft)
+
+ if format == "text/plain":
+ text = simplify_whitespace(mime_data.text())
+ elif format == "text/markdown":
+ text = mime_data.data("text/markdown").data().decode("utf8")
+ elif format == "text/html":
+ text = simplify_whitespace(mime_data.html())
+ elif format == "text/uri-list":
+ url_list = mime_data.urls()
+ text = ""
+ for i in range(0, min(len(url_list), 32)):
+ text += url_list[i].toString() + " "
+ else:
+ data = mime_data.data(format)
+ if data.size() > 32:
+ data.truncate(32)
+ text = data.toHex(" ").data().decode("utf8").upper()
+
+ row = self._formats_table.rowCount()
+ self._formats_table.insertRow(row)
+ self._formats_table.setItem(row, 0, QTableWidgetItem(format))
+ self._formats_table.setItem(row, 1, QTableWidgetItem(text))
+
+ self._formats_table.resizeColumnToContents(0)
+ self._copy_button.setEnabled(self._formats_table.rowCount() > 0)
+
+ @Slot()
+ def copy(self):
+ text = ""
+ for row in range(0, self._formats_table.rowCount()):
+ c1 = self._formats_table.item(row, 0).text()
+ c2 = self._formats_table.item(row, 1).text()
+ text += f"{c1}: {c2}\n"
+ QGuiApplication.clipboard().setText(text)
diff --git a/examples/widgets/draganddrop/dropsite/main.py b/examples/widgets/draganddrop/dropsite/main.py
new file mode 100644
index 000000000..bce476a61
--- /dev/null
+++ b/examples/widgets/draganddrop/dropsite/main.py
@@ -0,0 +1,15 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtWidgets import QApplication
+
+from dropsitewindow import DropSiteWindow
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ window = DropSiteWindow()
+ window.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/effects/blurpicker/blureffect.py b/examples/widgets/effects/blurpicker/blureffect.py
new file mode 100644
index 000000000..16c14a758
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/blureffect.py
@@ -0,0 +1,33 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+from PySide6.QtCore import QRect
+from PySide6.QtGui import QPainter
+from PySide6.QtWidgets import QGraphicsBlurEffect
+
+
+class BlurEffect(QGraphicsBlurEffect):
+ def __init__(self, item):
+ super().__init__()
+ self._base_line = 200
+ self._item = item
+
+ def adjust_for_item(self):
+ y = self._base_line - self._item.pos().y()
+
+ # radius = qBound(qreal(0.0), y / 32, qreal(16.0)); which is equivalent to
+ radius = max(0, min(y / 32, 16))
+
+ self.setBlurRadius(radius)
+
+ def set_base_line(self, base_line):
+ self._base_line = base_line
+
+ def boundingRect(self) -> QRect:
+ self.adjust_for_item()
+ return super().boundingRect()
+
+ def draw(self, painter: QPainter):
+ self.adjust_for_item()
+ super().draw(painter)
diff --git a/examples/widgets/effects/blurpicker/blurpicker.py b/examples/widgets/effects/blurpicker/blurpicker.py
new file mode 100644
index 000000000..6ff11f217
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/blurpicker.py
@@ -0,0 +1,105 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+from pathlib import Path
+from PySide6.QtCore import (
+ QEasingCurve,
+ QPointF,
+ Qt,
+ QAbstractAnimation,
+ QPropertyAnimation,
+ Property,
+)
+from PySide6.QtGui import QPainter, QTransform, QPixmap
+from PySide6.QtWidgets import QGraphicsView, QFrame, QGraphicsScene, QGraphicsPixmapItem
+from math import pi, sin, cos
+from blureffect import BlurEffect
+
+
+class BlurPicker(QGraphicsView):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._index = 0
+ self._animation = QPropertyAnimation(self, b"index")
+ self._path = Path(__file__).resolve().parent
+
+ self._background = QPixmap(self._path / "images" / "background.jpg")
+ self.setBackgroundBrush(self._background)
+ self.setScene(QGraphicsScene(self))
+
+ self._icons = []
+
+ self.setup_scene()
+ self.index = 0
+
+ self._animation.setDuration(400)
+ self._animation.setEasingCurve(QEasingCurve.InOutSine)
+
+ self.setRenderHint(QPainter.Antialiasing, True)
+ self.setFrameStyle(QFrame.NoFrame)
+
+ @Property(float)
+ def index(self) -> float:
+ return self._index
+
+ @index.setter
+ def index(self, index: float):
+ self._index = index
+
+ base_line = 0.0
+ iconAngle = 2 * pi / len(self._icons)
+
+ for i, icon in enumerate(self._icons):
+ a = (i + self._index) * iconAngle
+ xs = 170 * sin(a)
+ ys = 100 * cos(a)
+ pos = QPointF(xs, ys)
+ pos = QTransform().rotate(-20).map(pos)
+ pos -= QPointF(40, 40)
+ icon.setPos(pos)
+ base_line = max(base_line, ys)
+
+ icon.graphicsEffect().set_base_line(base_line)
+
+ self.scene().update()
+
+ def setup_scene(self):
+ self.scene().setSceneRect(-200, -120, 400, 240)
+
+ names = ["accessories-calculator.png", "accessories-text-editor.png",
+ "help-browser.png", "internet-group-chat.png",
+ "internet-mail.png", "internet-web-browser.png", "office-calendar.png",
+ "system-users.png"]
+
+ for name in names:
+ pixmap = QPixmap(self._path / "images" / name)
+ icon: QGraphicsPixmapItem = self.scene().addPixmap(pixmap)
+ icon.setZValue(1)
+ icon.setGraphicsEffect(BlurEffect(icon))
+ self._icons.append(icon)
+
+ bg: QGraphicsPixmapItem = self.scene().addPixmap(self._background)
+ bg.setZValue(0)
+ bg.setPos(-200, -150)
+
+ def keyPressEvent(self, event):
+ delta = 0
+ if event.key() == Qt.Key_Left:
+ delta = -1
+ elif event.key() == Qt.Key_Right:
+ delta = 1
+
+ if self._animation.state() == QAbstractAnimation.Stopped and delta:
+ self._animation.setEndValue(self._index + delta)
+ self._animation.start()
+ event.accept()
+
+ def mousePressEvent(self, event):
+ right = event.position().x() > (self.width() / 2)
+ delta = 1 if right else -1
+
+ if self._animation.state() == QAbstractAnimation.Stopped:
+ self._animation.setEndValue(self._index + delta)
+ self._animation.start()
+ event.accept()
diff --git a/examples/widgets/effects/blurpicker/blurpicker.pyproject b/examples/widgets/effects/blurpicker/blurpicker.pyproject
new file mode 100644
index 000000000..6ae303265
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/blurpicker.pyproject
@@ -0,0 +1,17 @@
+{
+ "files": [
+ "main.py",
+ "blurpicker.py",
+ "blureffect.py",
+ "images/accessories-calculator.png",
+ "images/accessories-text-editor.png",
+ "images/background.jpg",
+ "images/help-browser.png",
+ "images/internet-group-chat.png",
+ "images/internet-mail.png",
+ "images/internet-web-browser.png",
+ "images/office-calendar.png",
+ "images/README.txt",
+ "images/system-users.png"
+ ]
+}
diff --git a/examples/widgets/effects/blurpicker/doc/blurpicker.png b/examples/widgets/effects/blurpicker/doc/blurpicker.png
new file mode 100644
index 000000000..826eef201
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/doc/blurpicker.png
Binary files differ
diff --git a/examples/widgets/effects/blurpicker/doc/blurpicker.rst b/examples/widgets/effects/blurpicker/doc/blurpicker.rst
new file mode 100644
index 000000000..70ce04c8d
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/doc/blurpicker.rst
@@ -0,0 +1,9 @@
+Blur Picker Effect Example
+==========================
+
+The blur picker effect example demonstrates how to apply
+graphical effects on items in the view.
+
+.. image:: blurpicker.png
+ :width: 400
+ :alt: Blur Picker Screenshot
diff --git a/examples/widgets/effects/blurpicker/images/README.txt b/examples/widgets/effects/blurpicker/images/README.txt
new file mode 100644
index 000000000..0927e177d
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/images/README.txt
@@ -0,0 +1,5 @@
+The background is taken from a public domain photo at:
+http://www.photos8.com/view/computer_board2-800x600.html
+
+All other icons are from the Tango Desktop project:
+http://tango.freedesktop.org/Tango_Desktop_Project
diff --git a/examples/widgets/effects/blurpicker/images/accessories-calculator.png b/examples/widgets/effects/blurpicker/images/accessories-calculator.png
new file mode 100644
index 000000000..4e7661f65
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/images/accessories-calculator.png
Binary files differ
diff --git a/examples/widgets/effects/blurpicker/images/accessories-text-editor.png b/examples/widgets/effects/blurpicker/images/accessories-text-editor.png
new file mode 100644
index 000000000..33bef0bc1
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/images/accessories-text-editor.png
Binary files differ
diff --git a/examples/widgets/effects/blurpicker/images/background.jpg b/examples/widgets/effects/blurpicker/images/background.jpg
new file mode 100644
index 000000000..e75b38899
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/images/background.jpg
Binary files differ
diff --git a/examples/widgets/effects/blurpicker/images/help-browser.png b/examples/widgets/effects/blurpicker/images/help-browser.png
new file mode 100644
index 000000000..8ef4fae91
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/images/help-browser.png
Binary files differ
diff --git a/examples/widgets/effects/blurpicker/images/internet-group-chat.png b/examples/widgets/effects/blurpicker/images/internet-group-chat.png
new file mode 100644
index 000000000..dd92d9394
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/images/internet-group-chat.png
Binary files differ
diff --git a/examples/widgets/effects/blurpicker/images/internet-mail.png b/examples/widgets/effects/blurpicker/images/internet-mail.png
new file mode 100644
index 000000000..7e6b93be8
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/images/internet-mail.png
Binary files differ
diff --git a/examples/widgets/effects/blurpicker/images/internet-web-browser.png b/examples/widgets/effects/blurpicker/images/internet-web-browser.png
new file mode 100644
index 000000000..a979a92b4
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/images/internet-web-browser.png
Binary files differ
diff --git a/examples/widgets/effects/blurpicker/images/office-calendar.png b/examples/widgets/effects/blurpicker/images/office-calendar.png
new file mode 100644
index 000000000..e09590682
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/images/office-calendar.png
Binary files differ
diff --git a/examples/widgets/effects/blurpicker/images/system-users.png b/examples/widgets/effects/blurpicker/images/system-users.png
new file mode 100644
index 000000000..a7f630a5b
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/images/system-users.png
Binary files differ
diff --git a/examples/widgets/effects/blurpicker/main.py b/examples/widgets/effects/blurpicker/main.py
new file mode 100644
index 000000000..053ac60ec
--- /dev/null
+++ b/examples/widgets/effects/blurpicker/main.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the widgets/effects/blurpicker example from Qt v6.x"""
+
+import sys
+from PySide6.QtWidgets import QApplication
+from blurpicker import BlurPicker
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ blur_picker = BlurPicker()
+ blur_picker.setWindowTitle("Application Picker")
+
+ blur_picker.setFixedSize(400, 300)
+ blur_picker.show()
+
+ sys.exit(app.exec())
diff --git a/examples/widgets/effects/lighting.py b/examples/widgets/effects/lighting.py
deleted file mode 100644
index ec8f945e1..000000000
--- a/examples/widgets/effects/lighting.py
+++ /dev/null
@@ -1,147 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import math
-import sys
-
-from PySide6.QtCore import QPointF, QTimer, Qt
-from PySide6.QtGui import (QBrush, QColor, QLinearGradient, QPainter, QPen,
- QPixmap, QRadialGradient)
-from PySide6.QtWidgets import (QApplication, QFrame, QGraphicsDropShadowEffect,
- QGraphicsEllipseItem, QGraphicsRectItem,
- QGraphicsScene, QGraphicsView, QWidget)
-
-
-class Lighting(QGraphicsView):
- def __init__(self, parent=None):
- super().__init__(parent)
-
- self.angle = 0.0
- self.m_scene = QGraphicsScene()
- self.m_lightSource = None
- self.m_items = []
-
- self.setScene(self.m_scene)
-
- self.setup_scene()
-
- timer = QTimer(self)
- timer.timeout.connect(self.animate)
- timer.setInterval(30)
- timer.start()
-
- self.setRenderHint(QPainter.Antialiasing)
- self.setFrameStyle(QFrame.NoFrame)
-
- def setup_scene(self):
- self.m_scene.setSceneRect(-300, -200, 600, 460)
-
- linear_grad = QLinearGradient(QPointF(-100, -100),
- QPointF(100, 100))
- linear_grad.setColorAt(0, QColor(255, 255, 255))
- linear_grad.setColorAt(1, QColor(192, 192, 255))
- self.setBackgroundBrush(linear_grad)
-
- radial_grad = QRadialGradient(30, 30, 30)
- radial_grad.setColorAt(0, Qt.yellow)
- radial_grad.setColorAt(0.2, Qt.yellow)
- radial_grad.setColorAt(1, Qt.transparent)
-
- pixmap = QPixmap(60, 60)
- pixmap.fill(Qt.transparent)
-
- painter = QPainter(pixmap)
- painter.setPen(Qt.NoPen)
- painter.setBrush(radial_grad)
- painter.drawEllipse(0, 0, 60, 60)
- painter.end()
-
- self.m_lightSource = self.m_scene.addPixmap(pixmap)
- self.m_lightSource.setZValue(2)
-
- for i in range(-2, 3):
- for j in range(-2, 3):
- if (i + j) & 1:
- item = QGraphicsEllipseItem(0, 0, 50, 50)
- else:
- item = QGraphicsRectItem(0, 0, 50, 50)
-
- item.setPen(QPen(Qt.black, 1))
- item.setBrush(QBrush(Qt.white))
-
- effect = QGraphicsDropShadowEffect(self)
- effect.setBlurRadius(8)
- item.setGraphicsEffect(effect)
- item.setZValue(1)
- item.setPos(i * 80, j * 80)
- self.m_scene.addItem(item)
- self.m_items.append(item)
-
- def animate(self):
- self.angle += (math.pi / 30)
- xs = 200 * math.sin(self.angle) - 40 + 25
- ys = 200 * math.cos(self.angle) - 40 + 25
- self.m_lightSource.setPos(xs, ys)
-
- for item in self.m_items:
- effect = item.graphicsEffect()
-
- delta = QPointF(item.x() - xs, item.y() - ys)
- effect.setOffset(QPointF(delta.toPoint() / 30))
-
- dd = math.hypot(delta.x(), delta.y())
- color = effect.color()
- color.setAlphaF(max(0.4, min(1 - dd / 200.0, 0.7)))
- effect.setColor(color)
-
- self.m_scene.update()
-
-
-if __name__ == '__main__':
- app = QApplication(sys.argv)
-
- lighting = Lighting()
- lighting.setWindowTitle("Lighting and Shadows")
- lighting.resize(640, 480)
- lighting.show()
-
- sys.exit(app.exec())
diff --git a/examples/widgets/effects/lighting/lighting.py b/examples/widgets/effects/lighting/lighting.py
new file mode 100644
index 000000000..f074813c3
--- /dev/null
+++ b/examples/widgets/effects/lighting/lighting.py
@@ -0,0 +1,107 @@
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import math
+import sys
+
+from PySide6.QtCore import QPointF, QTimer, Qt
+from PySide6.QtGui import (QBrush, QColor, QLinearGradient, QPainter, QPen,
+ QPixmap, QRadialGradient)
+from PySide6.QtWidgets import (QApplication, QFrame, QGraphicsDropShadowEffect,
+ QGraphicsEllipseItem, QGraphicsRectItem,
+ QGraphicsScene, QGraphicsView)
+
+
+class Lighting(QGraphicsView):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.angle = 0.0
+ self.m_scene = QGraphicsScene()
+ self.m_lightSource = None
+ self.m_items = []
+
+ self.setScene(self.m_scene)
+
+ self.setup_scene()
+
+ timer = QTimer(self)
+ timer.timeout.connect(self.animate)
+ timer.setInterval(30)
+ timer.start()
+
+ self.setRenderHint(QPainter.Antialiasing)
+ self.setFrameStyle(QFrame.NoFrame)
+
+ def setup_scene(self):
+ self.m_scene.setSceneRect(-300, -200, 600, 460)
+
+ linear_grad = QLinearGradient(QPointF(-100, -100), QPointF(100, 100))
+ linear_grad.setColorAt(0, QColor(255, 255, 255))
+ linear_grad.setColorAt(1, QColor(192, 192, 255))
+ self.setBackgroundBrush(linear_grad)
+
+ radial_grad = QRadialGradient(30, 30, 30)
+ radial_grad.setColorAt(0, Qt.yellow)
+ radial_grad.setColorAt(0.2, Qt.yellow)
+ radial_grad.setColorAt(1, Qt.transparent)
+
+ pixmap = QPixmap(60, 60)
+ pixmap.fill(Qt.transparent)
+
+ with QPainter(pixmap) as painter:
+ painter.setPen(Qt.NoPen)
+ painter.setBrush(radial_grad)
+ painter.drawEllipse(0, 0, 60, 60)
+
+ self.m_lightSource = self.m_scene.addPixmap(pixmap)
+ self.m_lightSource.setZValue(2)
+
+ for i in range(-2, 3):
+ for j in range(-2, 3):
+ if (i + j) & 1:
+ item = QGraphicsEllipseItem(0, 0, 50, 50)
+ else:
+ item = QGraphicsRectItem(0, 0, 50, 50)
+
+ item.setPen(QPen(Qt.black, 1))
+ item.setBrush(QBrush(Qt.white))
+
+ effect = QGraphicsDropShadowEffect(self)
+ effect.setBlurRadius(8)
+ item.setGraphicsEffect(effect)
+ item.setZValue(1)
+ item.setPos(i * 80, j * 80)
+ self.m_scene.addItem(item)
+ self.m_items.append(item)
+
+ def animate(self):
+ self.angle += (math.pi / 30)
+ xs = 200 * math.sin(self.angle) - 40 + 25
+ ys = 200 * math.cos(self.angle) - 40 + 25
+ self.m_lightSource.setPos(xs, ys)
+
+ for item in self.m_items:
+ effect = item.graphicsEffect()
+
+ delta = QPointF(item.x() - xs, item.y() - ys)
+ effect.setOffset(QPointF(delta.toPoint() / 30))
+
+ dd = math.hypot(delta.x(), delta.y())
+ color = effect.color()
+ color.setAlphaF(max(0.4, min(1 - dd / 200.0, 0.7)))
+ effect.setColor(color)
+
+ self.m_scene.update()
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ lighting = Lighting()
+ lighting.setWindowTitle("Lighting and Shadows")
+ lighting.resize(640, 480)
+ lighting.show()
+
+ sys.exit(app.exec())
diff --git a/examples/widgets/effects/effects.pyproject b/examples/widgets/effects/lighting/lighting.pyproject
index c64fe46d4..c64fe46d4 100644
--- a/examples/widgets/effects/effects.pyproject
+++ b/examples/widgets/effects/lighting/lighting.pyproject
diff --git a/examples/widgets/gettext/doc/gettext.rst b/examples/widgets/gettext/doc/gettext.rst
new file mode 100644
index 000000000..ea1127fe7
--- /dev/null
+++ b/examples/widgets/gettext/doc/gettext.rst
@@ -0,0 +1,7 @@
+.. _gettext-example:
+
+GNU gettext Example
+===================
+
+This example demonstrates the use of GNU gettext for translating
+applications as described in :ref:`translations`.
diff --git a/examples/widgets/gettext/gettext.pyproject b/examples/widgets/gettext/gettext.pyproject
new file mode 100644
index 000000000..f304bf8a5
--- /dev/null
+++ b/examples/widgets/gettext/gettext.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "locales/example.pot",
+ "locales/de_DE/LC_MESSAGES/example.pot"]
+}
diff --git a/examples/widgets/gettext/locales/de_DE/LC_MESSAGES/example.mo b/examples/widgets/gettext/locales/de_DE/LC_MESSAGES/example.mo
new file mode 100644
index 000000000..c1862497d
--- /dev/null
+++ b/examples/widgets/gettext/locales/de_DE/LC_MESSAGES/example.mo
Binary files differ
diff --git a/examples/widgets/gettext/locales/de_DE/LC_MESSAGES/example.pot b/examples/widgets/gettext/locales/de_DE/LC_MESSAGES/example.pot
new file mode 100644
index 000000000..80da2134c
--- /dev/null
+++ b/examples/widgets/gettext/locales/de_DE/LC_MESSAGES/example.pot
@@ -0,0 +1,32 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PySide6 gettext example\n"
+"POT-Creation-Date: 2021-07-05 14:16+0200\n"
+"Language: de_DE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: main.py:57
+msgid "&File"
+msgstr "&Datei"
+
+#: main.py:58
+msgid "Quit"
+msgstr "Beenden"
+
+#: main.py:59
+msgid "CTRL+Q"
+msgstr "CTRL+B"
+
+#: main.py:73
+#, python-brace-format
+msgid "{0} language selected"
+msgid_plural "{0} languages selected"
+msgstr[0] "{0} Sprache ausgewählt"
+msgstr[1] "{0} Sprachen ausgewählt"
diff --git a/examples/widgets/gettext/locales/example.pot b/examples/widgets/gettext/locales/example.pot
new file mode 100644
index 000000000..a2fdfbbe8
--- /dev/null
+++ b/examples/widgets/gettext/locales/example.pot
@@ -0,0 +1,32 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PySide6 gettext example\n"
+"POT-Creation-Date: 2021-07-05 14:16+0200\n"
+"Language: de_DE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural==n != 1;\n"
+
+#: main.py:57
+msgid "&File"
+msgstr ""
+
+#: main.py:58
+msgid "Quit"
+msgstr ""
+
+#: main.py:59
+msgid "CTRL+Q"
+msgstr ""
+
+#: main.py:73
+#, python-brace-format
+msgid "{0} language selected"
+msgid_plural "{0} languages selected"
+msgstr[0] ""
+msgstr[1] ""
diff --git a/examples/widgets/gettext/main.py b/examples/widgets/gettext/main.py
new file mode 100644
index 000000000..85695728d
--- /dev/null
+++ b/examples/widgets/gettext/main.py
@@ -0,0 +1,60 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from pathlib import Path
+import gettext
+import sys
+
+from PySide6.QtCore import QItemSelection, Slot
+from PySide6.QtWidgets import (QAbstractItemView, QApplication, QListWidget,
+ QMainWindow)
+
+
+_ = None
+ngettext = None
+
+
+class Window(QMainWindow):
+ def __init__(self):
+ super().__init__()
+ file_menu = self.menuBar().addMenu(_("&File"))
+ quit_action = file_menu.addAction(_("Quit"))
+ quit_action.setShortcut(_("CTRL+Q"))
+ quit_action.triggered.connect(self.close)
+
+ self._list_widget = QListWidget()
+ self._list_widget.setSelectionMode(QAbstractItemView.MultiSelection)
+ self._list_widget.selectionModel().selectionChanged.connect(self.selection_changed)
+ self._list_widget.addItem("C++")
+ self._list_widget.addItem("Java")
+ self._list_widget.addItem("Python")
+ self.setCentralWidget(self._list_widget)
+
+ @Slot(QItemSelection, QItemSelection)
+ def selection_changed(self, selected, deselected):
+ count = len(self._list_widget.selectionModel().selectedRows())
+ message = ngettext("{0} language selected",
+ "{0} languages selected", count).format(count)
+ self.statusBar().showMessage(message)
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ src_dir = Path(__file__).resolve().parent
+ try:
+ translation = gettext.translation('example', localedir=src_dir / 'locales')
+ if translation:
+ translation.install()
+ _ = translation.gettext
+ ngettext = translation.ngettext
+ except FileNotFoundError:
+ pass
+ if not _:
+ _ = gettext.gettext
+ ngettext = gettext.ngettext
+ print('No translation found')
+
+ window = Window()
+ window.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/graphicsview/anchorlayout/anchorlayout.py b/examples/widgets/graphicsview/anchorlayout/anchorlayout.py
index 2c5e16347..9d9be041f 100644
--- a/examples/widgets/graphicsview/anchorlayout/anchorlayout.py
+++ b/examples/widgets/graphicsview/anchorlayout/anchorlayout.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
@@ -46,7 +8,7 @@ from PySide6.QtCore import QSizeF, Qt
from PySide6.QtWidgets import (QApplication, QGraphicsAnchorLayout,
QGraphicsProxyWidget, QGraphicsScene,
QGraphicsView, QGraphicsWidget,
- QPushButton, QSizePolicy, QWidget)
+ QPushButton, QSizePolicy)
def create_item(minimum, preferred, maximum, name):
@@ -79,7 +41,7 @@ if __name__ == '__main__':
f = create_item(QSizeF(30, 50), QSizeF(150, 50), max_size, "F")
g = create_item(QSizeF(30, 50), QSizeF(30, 100), max_size, "G")
- l = QGraphicsAnchorLayout()
+ l = QGraphicsAnchorLayout() # noqa: E741
l.setSpacing(0)
w = QGraphicsWidget(None, Qt.Window)
diff --git a/examples/widgets/graphicsview/collidingmice/collidingmice.py b/examples/widgets/graphicsview/collidingmice/collidingmice.py
index 78fbe8041..fb24db3ab 100644
--- a/examples/widgets/graphicsview/collidingmice/collidingmice.py
+++ b/examples/widgets/graphicsview/collidingmice/collidingmice.py
@@ -1,56 +1,15 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import math
import sys
-from PySide6.QtCore import (QLineF, QPointF, QRandomGenerator, QRectF, QTimer,
- Qt)
-from PySide6.QtGui import (QBrush, QColor, QPainter, QPainterPath, QPixmap,
- QPolygonF, QTransform)
-from PySide6.QtWidgets import (QApplication, QGraphicsItem, QGraphicsScene,
- QGraphicsView)
+from PySide6.QtCore import (QLineF, QPointF, QRandomGenerator, QRectF, QTimer, Qt)
+from PySide6.QtGui import (QBrush, QColor, QPainter, QPainterPath, QPixmap, QPolygonF, QTransform)
+from PySide6.QtWidgets import (QApplication, QGraphicsItem, QGraphicsScene, QGraphicsView)
-import mice_rc
+import mice_rc # noqa: F401
def random(boundary):
@@ -64,7 +23,7 @@ class Mouse(QGraphicsItem):
# Create the bounding rectangle once.
adjust = 0.5
BOUNDING_RECT = QRectF(-20 - adjust, -22 - adjust, 40 + adjust,
- 83 + adjust)
+ 83 + adjust)
def __init__(self):
super().__init__()
@@ -141,7 +100,8 @@ class Mouse(QGraphicsItem):
if angle_to_center < Mouse.PI and angle_to_center > Mouse.PI / 4:
# Rotate left.
self.angle += [-0.25, 0.25][self.angle < -Mouse.PI / 2]
- elif angle_to_center >= Mouse.PI and angle_to_center < (Mouse.PI + Mouse.PI / 2 + Mouse.PI / 4):
+ elif (angle_to_center >= Mouse.PI
+ and angle_to_center < (Mouse.PI + Mouse.PI / 2 + Mouse.PI / 4)):
# Rotate right.
self.angle += [-0.25, 0.25][self.angle < Mouse.PI / 2]
elif math.sin(self.angle) < 0:
diff --git a/examples/widgets/graphicsview/collidingmice/collidingmice.pyproject b/examples/widgets/graphicsview/collidingmice/collidingmice.pyproject
index ea5821866..621bfd642 100644
--- a/examples/widgets/graphicsview/collidingmice/collidingmice.pyproject
+++ b/examples/widgets/graphicsview/collidingmice/collidingmice.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["collidingmice.py", "mice_rc.py"]
+ "files": ["collidingmice.py"]
}
diff --git a/examples/widgets/graphicsview/collidingmice/mice_rc.py b/examples/widgets/graphicsview/collidingmice/mice_rc.py
index d442a36b0..e2a22b2e4 100644
--- a/examples/widgets/graphicsview/collidingmice/mice_rc.py
+++ b/examples/widgets/graphicsview/collidingmice/mice_rc.py
@@ -1,45 +1,6 @@
-# -*- coding: utf-8 -*-
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# Resource object code
#
diff --git a/examples/widgets/graphicsview/diagramscene/diagramscene.py b/examples/widgets/graphicsview/diagramscene/diagramscene.py
index b068a8253..60e05613c 100644
--- a/examples/widgets/graphicsview/diagramscene/diagramscene.py
+++ b/examples/widgets/graphicsview/diagramscene/diagramscene.py
@@ -1,62 +1,23 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import math
import sys
from PySide6.QtCore import (QLineF, QPointF, QRect, QRectF, QSize, QSizeF, Qt,
- Signal)
-from PySide6.QtGui import (QAction, QColor, QFont, QIcon, QIntValidator,
+ Signal, Slot)
+from PySide6.QtGui import (QAction, QBrush, QColor, QFont, QIcon, QIntValidator,
QPainter, QPainterPath, QPen, QPixmap, QPolygonF)
-from PySide6.QtWidgets import (QApplication, QButtonGroup, QComboBox,
- QFontComboBox, QGraphicsAnchorLayout,
- QGraphicsItem, QGraphicsLineItem,
+from PySide6.QtWidgets import (QAbstractButton, QApplication, QButtonGroup,
+ QComboBox, QFontComboBox, QGraphicsItem, QGraphicsLineItem,
QGraphicsPolygonItem, QGraphicsTextItem,
QGraphicsScene, QGraphicsView, QGridLayout,
QHBoxLayout, QLabel, QMainWindow, QMenu,
QMessageBox, QSizePolicy, QToolBox, QToolButton,
QWidget)
-import diagramscene_rc
+import diagramscene_rc # noqa: F401
class Arrow(QGraphicsLineItem):
@@ -69,8 +30,7 @@ class Arrow(QGraphicsLineItem):
self._my_end_item = endItem
self.setFlag(QGraphicsItem.ItemIsSelectable, True)
self._my_color = Qt.black
- self.setPen(QPen(self._my_color, 2, Qt.SolidLine,
- Qt.RoundCap, Qt.RoundJoin))
+ self.setPen(QPen(self._my_color, 2, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
def set_color(self, color):
self._my_color = color
@@ -202,19 +162,19 @@ class DiagramItem(QGraphicsPolygonItem):
self._my_polygon = path.toFillPolygon()
elif self.diagram_type == self.Conditional:
self._my_polygon = QPolygonF([
- QPointF(-100, 0), QPointF(0, 100),
- QPointF(100, 0), QPointF(0, -100),
- QPointF(-100, 0)])
+ QPointF(-100, 0), QPointF(0, 100),
+ QPointF(100, 0), QPointF(0, -100),
+ QPointF(-100, 0)])
elif self.diagram_type == self.Step:
self._my_polygon = QPolygonF([
- QPointF(-100, -100), QPointF(100, -100),
- QPointF(100, 100), QPointF(-100, 100),
- QPointF(-100, -100)])
+ QPointF(-100, -100), QPointF(100, -100),
+ QPointF(100, 100), QPointF(-100, 100),
+ QPointF(-100, -100)])
else:
self._my_polygon = QPolygonF([
- QPointF(-120, -80), QPointF(-70, 80),
- QPointF(120, 80), QPointF(70, -80),
- QPointF(-120, -80)])
+ QPointF(-120, -80), QPointF(-70, 80),
+ QPointF(120, 80), QPointF(70, -80),
+ QPointF(-120, -80)])
self.setPolygon(self._my_polygon)
self.setFlag(QGraphicsItem.ItemIsMovable, True)
@@ -238,10 +198,10 @@ class DiagramItem(QGraphicsPolygonItem):
def image(self):
pixmap = QPixmap(250, 250)
pixmap.fill(Qt.transparent)
- painter = QPainter(pixmap)
- painter.setPen(QPen(Qt.black, 8))
- painter.translate(125, 125)
- painter.drawPolyline(self._my_polygon)
+ with QPainter(pixmap) as painter:
+ painter.setPen(QPen(Qt.black, 8))
+ painter.translate(125, 125)
+ painter.drawPolyline(self._my_polygon)
return pixmap
def contextMenuEvent(self, event):
@@ -330,8 +290,7 @@ class DiagramScene(QGraphicsScene):
item.setPos(mouseEvent.scenePos())
self.item_inserted.emit(item)
elif self._my_mode == self.InsertLine:
- self.line = QGraphicsLineItem(QLineF(mouseEvent.scenePos(),
- mouseEvent.scenePos()))
+ self.line = QGraphicsLineItem(QLineF(mouseEvent.scenePos(), mouseEvent.scenePos()))
self.line.setPen(QPen(self._my_line_color, 2))
self.addItem(self.line)
elif self._my_mode == self.InsertText:
@@ -367,10 +326,10 @@ class DiagramScene(QGraphicsScene):
self.removeItem(self.line)
self.line = None
- if (len(start_items) and len(end_items) and
- isinstance(start_items[0], DiagramItem) and
- isinstance(end_items[0], DiagramItem) and
- start_items[0] != end_items[0]):
+ if (len(start_items) and len(end_items)
+ and isinstance(start_items[0], DiagramItem)
+ and isinstance(end_items[0], DiagramItem)
+ and start_items[0] != end_items[0]):
start_item = start_items[0]
end_item = end_items[0]
arrow = Arrow(start_item, end_item)
@@ -420,6 +379,7 @@ class MainWindow(QMainWindow):
self.setCentralWidget(self.widget)
self.setWindowTitle("Diagramscene")
+ @Slot(QAbstractButton)
def background_button_group_clicked(self, button):
buttons = self._background_button_group.buttons()
for myButton in buttons:
@@ -439,6 +399,7 @@ class MainWindow(QMainWindow):
self.scene.update()
self.view.update()
+ @Slot(int)
def button_group_clicked(self, idx):
buttons = self._button_group.buttons()
for button in buttons:
@@ -451,15 +412,18 @@ class MainWindow(QMainWindow):
self.scene.set_item_type(idx)
self.scene.set_mode(DiagramScene.InsertItem)
+ @Slot()
def delete_item(self):
for item in self.scene.selectedItems():
if isinstance(item, DiagramItem):
item.remove_arrows()
self.scene.removeItem(item)
+ @Slot(int)
def pointer_group_clicked(self, i):
self.scene.set_mode(self._pointer_type_group.checkedId())
+ @Slot()
def bring_to_front(self):
if not self.scene.selectedItems():
return
@@ -473,6 +437,7 @@ class MainWindow(QMainWindow):
z_value = item.zValue() + 0.1
selected_item.setZValue(z_value)
+ @Slot()
def send_to_back(self):
if not self.scene.selectedItems():
return
@@ -486,21 +451,26 @@ class MainWindow(QMainWindow):
z_value = item.zValue() - 0.1
selected_item.setZValue(z_value)
+ @Slot(QGraphicsPolygonItem)
def item_inserted(self, item):
self._pointer_type_group.button(DiagramScene.MoveItem).setChecked(True)
self.scene.set_mode(self._pointer_type_group.checkedId())
self._button_group.button(item.diagram_type).setChecked(False)
+ @Slot(QGraphicsTextItem)
def text_inserted(self, item):
self._button_group.button(self.insert_text_button).setChecked(False)
self.scene.set_mode(self._pointer_type_group.checkedId())
+ @Slot(QFont)
def current_font_changed(self, font):
self.handle_font_change()
+ @Slot(int)
def font_size_changed(self, font):
self.handle_font_change()
+ @Slot(str)
def scene_scale_changed(self, scale):
new_scale = int(scale[:-1]) / 100.0
old_matrix = self.view.transform()
@@ -508,36 +478,40 @@ class MainWindow(QMainWindow):
self.view.translate(old_matrix.dx(), old_matrix.dy())
self.view.scale(new_scale, new_scale)
+ @Slot()
def text_color_changed(self):
self._text_action = self.sender()
self._font_color_tool_button.setIcon(self.create_color_tool_button_icon(
- ':/images/textpointer.png',
- QColor(self._text_action.data())))
+ ':/images/textpointer.png', QColor(self._text_action.data())))
self.text_button_triggered()
+ @Slot()
def item_color_changed(self):
self._fill_action = self.sender()
self._fill_color_tool_button.setIcon(self.create_color_tool_button_icon(
- ':/images/floodfill.png',
- QColor(self._fill_action.data())))
+ ':/images/floodfill.png', QColor(self._fill_action.data())))
self.fill_button_triggered()
+ @Slot()
def line_color_changed(self):
self._line_action = self.sender()
self._line_color_tool_button.setIcon(self.create_color_tool_button_icon(
- ':/images/linecolor.png',
- QColor(self._line_action.data())))
+ ':/images/linecolor.png', QColor(self._line_action.data())))
self.line_button_triggered()
+ @Slot()
def text_button_triggered(self):
self.scene.set_text_color(QColor(self._text_action.data()))
+ @Slot()
def fill_button_triggered(self):
self.scene.set_item_color(QColor(self._fill_action.data()))
+ @Slot()
def line_button_triggered(self):
self.scene.set_line_color(QColor(self._line_action.data()))
+ @Slot()
def handle_font_change(self):
font = self._font_combo.currentFont()
font.setPointSize(int(self._font_size_combo.currentText()))
@@ -550,18 +524,19 @@ class MainWindow(QMainWindow):
self.scene.set_font(font)
+ @Slot(QGraphicsItem)
def item_selected(self, item):
font = item.font()
- color = item.defaultTextColor()
self._font_combo.setCurrentFont(font)
self._font_size_combo.setEditText(str(font.pointSize()))
self._bold_action.setChecked(font.weight() == QFont.Bold)
self._italic_action.setChecked(font.italic())
self._underline_action.setChecked(font.underline())
+ @Slot()
def about(self):
QMessageBox.about(self, "About Diagram Scene",
- "The <b>Diagram Scene</b> example shows use of the graphics framework.")
+ "The <b>Diagram Scene</b> example shows use of the graphics framework.")
def create_tool_box(self):
self._button_group = QButtonGroup()
@@ -569,12 +544,9 @@ class MainWindow(QMainWindow):
self._button_group.idClicked.connect(self.button_group_clicked)
layout = QGridLayout()
- layout.addWidget(self.create_cell_widget("Conditional", DiagramItem.Conditional),
- 0, 0)
- layout.addWidget(self.create_cell_widget("Process", DiagramItem.Step), 0,
- 1)
- layout.addWidget(self.create_cell_widget("Input/Output", DiagramItem.Io),
- 1, 0)
+ layout.addWidget(self.create_cell_widget("Conditional", DiagramItem.Conditional), 0, 0)
+ layout.addWidget(self.create_cell_widget("Process", DiagramItem.Step), 0, 1)
+ layout.addWidget(self.create_cell_widget("Input/Output", DiagramItem.Io), 1, 0)
text_button = QToolButton()
text_button.setCheckable(True)
@@ -600,14 +572,14 @@ class MainWindow(QMainWindow):
self._background_button_group.buttonClicked.connect(self.background_button_group_clicked)
background_layout = QGridLayout()
- background_layout.addWidget(self.create_background_cell_widget("Blue Grid",
- ':/images/background1.png'), 0, 0)
- background_layout.addWidget(self.create_background_cell_widget("White Grid",
- ':/images/background2.png'), 0, 1)
- background_layout.addWidget(self.create_background_cell_widget("Gray Grid",
- ':/images/background3.png'), 1, 0)
- background_layout.addWidget(self.create_background_cell_widget("No Grid",
- ':/images/background4.png'), 1, 1)
+ background_layout.addWidget(
+ self.create_background_cell_widget("Blue Grid", ':/images/background1.png'), 0, 0)
+ background_layout.addWidget(
+ self.create_background_cell_widget("White Grid", ':/images/background2.png'), 0, 1)
+ background_layout.addWidget(
+ self.create_background_cell_widget("Gray Grid", ':/images/background3.png'), 1, 0)
+ background_layout.addWidget(
+ self.create_background_cell_widget("No Grid", ':/images/background4.png'), 1, 1)
background_layout.setRowStretch(2, 10)
background_layout.setColumnStretch(2, 10)
@@ -623,38 +595,37 @@ class MainWindow(QMainWindow):
def create_actions(self):
self._to_front_action = QAction(
- QIcon(':/images/bringtofront.png'), "Bring to &Front",
- self, shortcut="Ctrl+F", statusTip="Bring item to front",
- triggered=self.bring_to_front)
+ QIcon(':/images/bringtofront.png'), "Bring to &Front",
+ self, shortcut="Ctrl+F", statusTip="Bring item to front",
+ triggered=self.bring_to_front)
self._send_back_action = QAction(
- QIcon(':/images/sendtoback.png'), "Send to &Back", self,
- shortcut="Ctrl+B", statusTip="Send item to back",
- triggered=self.send_to_back)
+ QIcon(':/images/sendtoback.png'), "Send to &Back", self,
+ shortcut="Ctrl+B", statusTip="Send item to back",
+ triggered=self.send_to_back)
self._delete_action = QAction(QIcon(':/images/delete.png'),
- "&Delete", self, shortcut="Delete",
- statusTip="Delete item from diagram",
- triggered=self.delete_item)
+ "&Delete", self, shortcut="Delete",
+ statusTip="Delete item from diagram",
+ triggered=self.delete_item)
self._exit_action = QAction("E&xit", self, shortcut="Ctrl+X",
- statusTip="Quit Scenediagram example", triggered=self.close)
+ statusTip="Quit Scenediagram example", triggered=self.close)
self._bold_action = QAction(QIcon(':/images/bold.png'),
- "Bold", self, checkable=True, shortcut="Ctrl+B",
- triggered=self.handle_font_change)
+ "Bold", self, checkable=True, shortcut="Ctrl+B",
+ triggered=self.handle_font_change)
self._italic_action = QAction(QIcon(':/images/italic.png'),
- "Italic", self, checkable=True, shortcut="Ctrl+I",
- triggered=self.handle_font_change)
+ "Italic", self, checkable=True, shortcut="Ctrl+I",
+ triggered=self.handle_font_change)
self._underline_action = QAction(
- QIcon(':/images/underline.png'), "Underline", self,
- checkable=True, shortcut="Ctrl+U",
- triggered=self.handle_font_change)
+ QIcon(':/images/underline.png'), "Underline", self,
+ checkable=True, shortcut="Ctrl+U",
+ triggered=self.handle_font_change)
- self._about_action = QAction("A&bout", self, shortcut="Ctrl+B",
- triggered=self.about)
+ self._about_action = QAction("A&bout", self, shortcut="Ctrl+B", triggered=self.about)
def create_menus(self):
self._file_menu = self.menuBar().addMenu("&File")
@@ -689,32 +660,29 @@ class MainWindow(QMainWindow):
self._font_color_tool_button = QToolButton()
self._font_color_tool_button.setPopupMode(QToolButton.MenuButtonPopup)
self._font_color_tool_button.setMenu(
- self.create_color_menu(self.text_color_changed, Qt.black))
+ self.create_color_menu(self.text_color_changed, Qt.black))
self._text_action = self._font_color_tool_button.menu().defaultAction()
self._font_color_tool_button.setIcon(
- self.create_color_tool_button_icon(':/images/textpointer.png',
- Qt.black))
+ self.create_color_tool_button_icon(':/images/textpointer.png', Qt.black))
self._font_color_tool_button.setAutoFillBackground(True)
self._font_color_tool_button.clicked.connect(self.text_button_triggered)
self._fill_color_tool_button = QToolButton()
self._fill_color_tool_button.setPopupMode(QToolButton.MenuButtonPopup)
self._fill_color_tool_button.setMenu(
- self.create_color_menu(self.item_color_changed, Qt.white))
+ self.create_color_menu(self.item_color_changed, Qt.white))
self._fill_action = self._fill_color_tool_button.menu().defaultAction()
self._fill_color_tool_button.setIcon(
- self.create_color_tool_button_icon(':/images/floodfill.png',
- Qt.white))
+ self.create_color_tool_button_icon(':/images/floodfill.png', Qt.white))
self._fill_color_tool_button.clicked.connect(self.fill_button_triggered)
self._line_color_tool_button = QToolButton()
self._line_color_tool_button.setPopupMode(QToolButton.MenuButtonPopup)
self._line_color_tool_button.setMenu(
- self.create_color_menu(self.line_color_changed, Qt.black))
+ self.create_color_menu(self.line_color_changed, Qt.black))
self._line_action = self._line_color_tool_button.menu().defaultAction()
self._line_color_tool_button.setIcon(
- self.create_color_tool_button_icon(':/images/linecolor.png',
- Qt.black))
+ self.create_color_tool_button_icon(':/images/linecolor.png', Qt.black))
self._line_color_tool_button.clicked.connect(self.line_button_triggered)
self._text_tool_bar = self.addToolBar("Font")
@@ -739,8 +707,7 @@ class MainWindow(QMainWindow):
self._pointer_type_group = QButtonGroup()
self._pointer_type_group.addButton(pointer_button, DiagramScene.MoveItem)
- self._pointer_type_group.addButton(line_pointer_button,
- DiagramScene.InsertLine)
+ self._pointer_type_group.addButton(line_pointer_button, DiagramScene.InsertLine)
self._pointer_type_group.idClicked.connect(self.pointer_group_clicked)
self._scene_scale_combo = QComboBox()
@@ -795,8 +762,7 @@ class MainWindow(QMainWindow):
color_menu = QMenu(self)
for color, name in zip(colors, names):
- action = QAction(self.create_color_icon(color), name, self,
- triggered=slot)
+ action = QAction(self.create_color_icon(color), name, self, triggered=slot)
action.setData(QColor(color))
color_menu.addAction(action)
if color == defaultColor:
@@ -806,22 +772,22 @@ class MainWindow(QMainWindow):
def create_color_tool_button_icon(self, imageFile, color):
pixmap = QPixmap(50, 80)
pixmap.fill(Qt.transparent)
- painter = QPainter(pixmap)
- image = QPixmap(imageFile)
- target = QRect(0, 0, 50, 60)
- source = QRect(0, 0, 42, 42)
- painter.fillRect(QRect(0, 60, 50, 80), color)
- painter.drawPixmap(target, image, source)
- painter.end()
+
+ with QPainter(pixmap) as painter:
+ image = QPixmap(imageFile)
+ target = QRect(0, 0, 50, 60)
+ source = QRect(0, 0, 42, 42)
+ painter.fillRect(QRect(0, 60, 50, 80), color)
+ painter.drawPixmap(target, image, source)
return QIcon(pixmap)
def create_color_icon(self, color):
pixmap = QPixmap(20, 20)
- painter = QPainter(pixmap)
- painter.setPen(Qt.NoPen)
- painter.fillRect(QRect(0, 0, 20, 20), color)
- painter.end()
+
+ with QPainter(pixmap) as painter:
+ painter.setPen(Qt.NoPen)
+ painter.fillRect(QRect(0, 0, 20, 20), color)
return QIcon(pixmap)
diff --git a/examples/widgets/graphicsview/diagramscene/diagramscene.pyproject b/examples/widgets/graphicsview/diagramscene/diagramscene.pyproject
index 0acabdd78..79b8c8658 100644
--- a/examples/widgets/graphicsview/diagramscene/diagramscene.pyproject
+++ b/examples/widgets/graphicsview/diagramscene/diagramscene.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["diagramscene.qrc", "diagramscene.py", "diagramscene_rc.py"]
+ "files": ["diagramscene.qrc", "diagramscene.py"]
}
diff --git a/examples/widgets/graphicsview/diagramscene/diagramscene_rc.py b/examples/widgets/graphicsview/diagramscene/diagramscene_rc.py
index da5f0217e..144d9200f 100644
--- a/examples/widgets/graphicsview/diagramscene/diagramscene_rc.py
+++ b/examples/widgets/graphicsview/diagramscene/diagramscene_rc.py
@@ -1,149 +1,11 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.14.0
+# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
qt_resource_data = b"\
-\x00\x00\x00\xf7\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x0b\x00\x00\x00\x0c\x08\x06\x00\x00\x00\xb4\xa9G\x9e\
-\x00\x00\x00\xbeIDAT(S\x85\x911\x0e@@\
-\x10EWM$J7\xa1\xa4\x918\x85^t\xaa=\
-\x8aNT{\x80\xadun\xa0\xd1l\xe7\x12\xc4\x97\x19\
-\xb1!YQ\xfcb\xfe\xbc\xfc\x99\xcc\x08\x00\x82t\x1c\
-\x07\xa6i\x82\x10\xc2)\xcf\xf3.\xf0\xd68\x8e\xa8\xaa\
-\x8aU\x14\x05\x03I\x92X\xef\x05?\xd5u\x1d\xc3Z\
-k\xd0T\xf2\x9c 5\xeb\xbafx]W\xdc\xfeg\
-r\x9a\xa6\x88\xe3\x18O\xcf\x09n\xdb\x06\xdf\xf7Q\x96\
-\xa5]\xc1\x09Ss\x9eg^AJ\xf9\x9f<\x0c\x03\
-\xc3J\xa9\xff\xe4\xb6m\x19^\x96\xe5?9\xcfs\x84\
-a\x88}\xdf\xdf\xc9T\x18c\xec\xe1IA\x10 \x8a\
-\x22[7M\x03\x9b\xdc\xf7\xfd\xf5\xce\x8fWgY\xc6\
-\x13N\xfaWVX\xe8@\xda\xc6\x00\x00\x00\x00IE\
-ND\xaeB`\x82\
-\x00\x00\x01\x1a\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00*\x00\x00\x00+\x02\x03\x00\x00\x00s\xf1\xf2m\
-\x00\x00\x00\x0cPLTE\xff\xff\xff\x80\x80\x80\x00\x00\
-\x00\xff\xff\xffEJK8\x00\x00\x00\x01tRNS\
-\x00@\xe6\xd8f\x00\x00\x00\xbcIDATx^M\
-\xcb\xbd\x89\x041\x0c\x86a\xa1\xd0U8\x1c\xdc\x8f&\
-\xd8\x12\xa6\x0a\xb3\xe1\xe6N.2\x07\x02\xdb\x07[\xc0\
-\x96\xb4U\x9cG?3V\xf4!\xde\x07B\xcd\xe0\x17\
-F\xbd\xf6\xb6\xec\x1a\xef\xa6A\x024\xb2A\x80`$\
-\xcf\x9d\x9a\xee8\x8b~x\x83O~d\xb30hW\
-\x102t\x22\x05\x98\x91\x89\x0c\xe4P\x88\x0c\xd4D\xe4\
- \xce\xdc\xc1\x98\x89\x833q \x89\x02\xe4\x9d\x1d`\
-\xa1.@\xff\xe9\x02\xfd\xf1*\x0e\xd2\xfe{\x81P\xda\
-\x02\x8e\xef\x02>\x0bx\xb3l\x01\x7f]\x1a\x03f\x1d\
-4\x00\x03B\x15\xb0\xe4\x0a$7P$W\xc0\x92+\
-\xe8\x92\x1b\x90\xdc\x80\xe4\x0a$7\xf0so\x1cp_\
-[v<\xc7?\xd6Qh R\x85\xdb_\x00\x00\x00\
-\x00IEND\xaeB`\x82\
-\x00\x00\x00\xfa\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x0b\x00\x00\x00\x0c\x08\x06\x00\x00\x00\xb4\xa9G\x9e\
-\x00\x00\x00\xc1IDAT(S\xcd\x901\x0a\x840\
-\x10E\xc7\xceV\xb0\xd3F\x10o`\xe5\x01\xbcB@\
-\x0b\x9bt\x22\x11\xbc\x94\x9d'\xd2\x03x\x03\x03\x19\xf7\
-\x0f\xb8\xd9,l\xbf\x81Of\xde\xfc|\xc8P\x1c\xc7\
-LD\xa2(\x8a8\xcfs~\x1d\xc2\xfd\xc9\xd34e\
-\xd2ZsQ\x14\x02\x86a\xe0y\x9e\xc5\x8c\x1b=8\
-\xe6\xe382a\xa0\x94\x12\x88\xfa[\xe0\x98;\xe7B\
-3\xc0/3\xea\x7fJ\xee\xbaN\xcc\xd7u\x05\x0f\xd0\
-\x83\xf7}\xef\x93\xb1&\xc0}\xdf\x03\xf3q\x1c\xc2\x97\
-e\xf1\xc9\xeb\xba\x0a\x9c\xa6)0?!\xdb\xb6\xf9d\
-\xa8\xaek\x19\x94e\xc9m\xdbrUU\xd27M\xc3\
-\xd6Z\x9f\xfc\xc8\x18\xc3Y\x96\x89)I\x12\xc6_\xce\
-\xf3|o\xe9\x063 8\xcd\x08\x1exv\x00\x00\x00\
-\x00IEND\xaeB`\x82\
-\x00\x00\x00r\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfcs\x8fP\
-\x00\x00\x00\x06PLTE\xff\xff\xff\x00\x00\x00U\xc2\
-\xd3~\x00\x00\x00'IDATH\xc7c`\x80\x82\
-\x06\x0640*0*0*0*\x80*\xf0\x1f\x15\
-\xfc\x1b\x0d\xa0Q\x81Q\x81Q\x01\x22\x05\x00\xd5;N\
-\xf0s\xe3o\xe9\x00\x00\x00\x00IEND\xaeB`\
-\x82\
-\x00\x00\x02\xf1\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00*\x00\x00\x00,\x08\x03\x00\x00\x00$D\xdat\
-\x00\x00\x012PLTE\xff\xff\xff\xfe\xfe\xfe\x01\x01\
-\x01\xbe\xbe\xbe\xfd\xfd\xfd\x00\x00\x00ddd\xd2\xd2\xd2\
-|||\xfb\xfb\xfb\xe7\xe7\xe7\x84\x84\x84\xd7\xd7\xd7\xe0\
-\xe0\xe0\xe1\xe1\xe1\x0c\x0c\x0c(((\xf5\xf5\xf5\xb3\xb3\
-\xb3\x02\x02\x02\x95\x95\x95...\x11\x11\x11kkk\
-\x03\x03\x03rrrIII\xfc\xfc\xfc\x13\x13\x13\x04\
-\x04\x04\x9f\x9f\x9f\xc4\xc4\xc4\xa9\xa9\xa9\x05\x05\x05WW\
-W\x17\x17\x17\xf6\xf6\xf6\x16\x16\x16\xa6\xa6\xa6\xa0\xa0\xa0\
-```$$$>>>###\xb7\xb7\xb7M\
-MM\xf8\xf8\xf8\xc0\xc0\xc0000\x09\x09\x09\xec\xec\
-\xec \x8a\x8a\x8a\xda\xda\xda\xf1\xf1\xf1\x0d\x0d\x0d\
-\x99\x99\x99\x19\x19\x19\xf9\xf9\xf9\xcd\xcd\xcd\xf4\xf4\xf49\
-99---;;;\x12\x12\x12CCC\xc2\xc2\
-\xc2\xa4\xa4\xa4\xdc\xdc\xdcUUUhhhZZZ\
-PPP\xf0\xf0\xf0\x06\x06\x06\x1f\x1f\x1fttt\xb1\
-\xb1\xb1]]]!!!666\x08\x08\x08\xea\xea\
-\xea\xdb\xdb\xdb\x81\x81\x81\x9c\x9c\x9c\x8b\x8b\x8buuu\
-\xf2\xf2\xf2%%%\xce\xce\xceHHHccc\xba\
-\xba\xbaSSS888\xf7\xf7\xf7\xe4\xe4\xe4\xa2\xa2\
-\xa2JJJ\xf3\xf3\xf3___\xf1i\x00\xec\x00\x00\
-\x00\x01tRNS\x00@\xe6\xd8f\x00\x00\x01mI\
-DATx^\xd5\x92\xc5v\xc30\x10E=\x92\x1d\
-f\xe6\x94\x99\x99\x99\x99\x99\xe1\xff\x7f\xa1\x9e\x89\x93S\
-\xa9\xb2Nvm\xdf\xf2\xea\xfa\xbdY\xd8\xf8+\xf10\
-\xeb[X\xcc\x047\x13<\x96\x10\xc6\xb5\xadB\xda\x9a\
-om\x0d@\xb3\xad,\xe8\xda\x1a\xe2\xb5\xf4\xd4\xddq\
-\xbf\xa1\x0d\x14{\x1b\xed\x09\xd0\xbb\x03\x0d\x93\x0d\xeaM\
-\xd8A+3\x82n.\xac5\xc39\xbb\x95\xe5\xbb\xa9\
-\xdb\xa7\xbd\xc0G\xcedG'~1;\xa7q\x87\xda\
-\xd1,\x00\xf8\xe8\xda\x16\xcd~\x17\x19\x09\xc3\x88\x94\xd1\
-]\xd5\xb4\xf6\xe1n\xbf\xdf66\xe9\x92\x90\xab\xeb\xa5\
-\xf7\x09\xdb\x84a\xea\xcf\xbb\xeeg\xd1\x1c\x1dC`\xa6\
-\xd1]\x89\xbb\x98S\xd3\xb8\xef\xa9\x81\x19Z\xa8\x80\xda\
-M\xd1\xeb<\xbd\xc2B\x06\xbf[T\x9b\xe6\x12\x9a\xcb\
-N\x0f\x1c\xd0\xb5w\xca\xfd5z[\xaf\x83\x8d$\xba\
-[\xca\x0b\xb6q_\x0a\x8b\xee*\xdc\xc0\x9e\xa5\x08K\
-)\xf6\x83\x962i\xf3\x87\xe9\xdfgj\xb7\x0a\xb2{\
-\xe8b\xb2#\xd9\x84\x02\xf2c.\xe4\x04\xd9\xe9\x99d\
-\x9eS\xc3\x85H/i\xe9\x0aDzmS\x96\x8c\x08\
-\x14n\xa2Ho\x8b\x02\x8d\x97\xb0\xf5\x1e\xa4\xad\x07\xda\
-z\x14XE\xfd\xd7W\xe9\x82'\xa1\xe1\x19\x97J/\
-r\xab\x19C^~\xads\xce\xf9\x1b}\xfd\xce1\x1f\
-\xe0`\xcc'\xademL\xcc\x12\xc2\xbcN#\x139\
-A\x89y\xc1P5\xfc~\xeb\xff\xca\x17Uq \xbb\
-\xd7\xbb.\xca\x00\x00\x00\x00IEND\xaeB`\x82\
-\
-\x00\x00\x01>\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4l;\
-\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\
-\xa7\x93\x00\x00\x00\xf3IDAT8\xcb\xed\x94An\
-\x830\x10E\x9f%\xe0\x0c\xbdC/\xd0\x13\xe5\xfaU\
-b\x9b\xd83\x01w\x81\x0d$\x85\xaa1\xca\xaa\x1d\x89\
-\x8d\x0dO\xef{\x067m\xdb&\x0e\x94\xaa\x9a\xad\xf5\
-\x06@D\xaa\xa0]\xd7\xed\xee5\xbc\xa8\xfe\xc1\x7f\x01\
-l\x8c\xd9\xdbJ\x87\x8dS\xda`\x8c\x03\x0c\x01\xf4\x0a\
-\xd2Ct\x98\xb7\xf7\x83G1*h\x81z\x10\x07\xd1\
-\x1d<\xe3A&\xa0\xf6\x0b48\x88\x97Jp\x1aa\
-\x88Kt\xf5\x93e\xb4\xd3#5\xc6i\x80[\x00)\
-\xd1=\xa8\x83`W`_\x01\x96\x1c}\xb6|0\x95\
-jp\xfep\x06\xba\x15\xd4\xe5\x14v\x01\xfft\xfd\xdd\
-U\xb8\xe4\xce\xdb\x05\x5c&A\xfd\xb2\x064{\x17\xf5\
-\xe6\x8f\x10\xce\xdf\xa1\xc54\xe6\x89\xa8j^\xf8\x9cF\
-j\xb6t\x10\xb3\xa9\xac\x1a\xf84\xf8z\xce\xa6\x16b\
-\x0fj\xef\x1bXRT\x81\xa5\x98nLE\xf4p\xeb\
-\x9f\x07\x9b\x8f\xd3\xaf\xdf\xfd\x02\xd6\xbd\xde\xdfp\xdb\x04\
-\x83\x00\x00\x00\x00IEND\xaeB`\x82\
\x00\x00\x00\xad\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -157,56 +19,47 @@ r\x1f\x17a\x1aW\x9e\x80A\xb9\xf3\x82@\xeb\xc8B\
\xfed\xcc\x8f\xdc\x17\xd9\x83\xf6\x1e\xe4\xd8\xdd\xe3\xd8\x1d\
sa.\xb4\x8e'\xf0\x07\xd5\x18\x11\x1b\xedM#\xf4\
\x00\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x00p\
+\x00\x00\x01\x12\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfcs\x8fP\
-\x00\x00\x00\x06PLTE\x00\xff\xff\xff\xff\xff\xb1\xb8\
-^\xa0\x00\x00\x00%IDATx^\xed\xcc!\x12\
-\x00\x00\x04\x00A\xff\x7f4\x82\x11du/n\xb8\xd8\
-j\xca\x0b\x00\x00\xf0\x9d\x01\x00@\x03\x94\x98\xeb\xc0\x19\
-8\xa1\x84\x00\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x00\x91\
+\x00\x00\x0b\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x7f\xf5\x94;\
+\x00\x00\x00\xd9IDAT(S}\x901\x0eE@\
+\x10\x86G$$\x1a\x0d\x0d\xd1\x22Qp\x80m\x5c@\
+\xe7<\x0e!\x0aGq\x19\xb5N\xa9\xc1x3\xb2\x8b\
+\xf7\xec\xdb\xe4\xcbfv\xfe\xf9gv\xc00\x0c\x04\x80\
+\x07\xf4fY\x16&I\x82\x9f\x03\xc4\xbe\xef\x94;\x05\
+i\x9a2$\x08\xc3\xf0QX\xd75\x17\x01\x05\x04U\
+\xde]\xe8v\x1c\x87s\xb6m\xe3\xc3Y\x0a\xefDQ\
+\xc4\xe2 \x08\xf4\xce\xeb\xbab\xdb\xb6j\x94\xbe\xefO\
+\xb1|(\x8a\x82\xc9\xf3\x1c}\xdfg\x03!\x04\x0e\xc3\
+\xa0L@\xb7\x0d\xd34Y\xdcu\xdd%\xfe\x9ey\xdb\
+6\x9c\xa6\x89c\xd9!\x8ec\x1c\xc7\x11\xd5\xcco\x1f\
+$d\xbe\xaa\xaa\xff\xdbX\x96E\x8dF]^\xb7A\
+\xcc\xf3\x8cM\xd3\xa0\xccgYv9{\x9e\xa7p]\
+\xf7\xe7\xd3\xdamH\xa8\xa8,K\xd5\xf1\x00\xd0\xc0\x13\
+\xc8\x06\xaf\x16(\x00\x00\x00\x00IEND\xaeB`\
+\x82\
+\x00\x00\x00r\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00*\x00\x00\x00+\x01\x03\x00\x00\x004Q\x88\xbd\
+\x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfcs\x8fP\
\x00\x00\x00\x06PLTE\xff\xff\xff\x00\x00\x00U\xc2\
-\xd3~\x00\x00\x00\x01tRNS\x00@\xe6\xd8f\x00\
-\x00\x009IDAT\x18Wc`\xc0\x05\x14 T\
-\x01\x84\xfa\x01&\x19\xff\x80)f\x08\x8f\xfd\x03\x98\xe2\
-\x7f\x00\xa6\xe4\x0f\x80)\xfb\x060U\x0f\xd1\xf6oP\
-k\xe3\x87hc\x83P,\x0c\x84\x00\x00\x91\xca\x1c\x09\
-\xf6#*\xfe\x00\x00\x00\x00IEND\xaeB`\x82\
-\
-\x00\x00\x01%\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4l;\
-\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\
-\xa7\x93\x00\x00\x00\xdaIDATH\xc7\xed\x94A\x0e\
-\x820\x10E\x1fF8\x83w\xf0\xfe\x87\xf0\x1a^@\
-\xb1\xa5t\xa6\x1a\x5c\xb4\x04\x8c\xa2\x11\xca\xc2\xc4I\xd8\
-\xd0\xe4\xe5\xf5\xf7g\x8a\xb2,;\x16L\x08\xa1x\xf5\
-\x7f\x0b\xa0\xaa\xb3\xa0UUM\x9emXi\xfe\xe0\x1f\
-\x06o30\xbaU\xc0\xdd\xed\x0a7\x0f\xa1\x05u \
-\x96b\xb7\xcf`\x1c\x5c\x826\xa0\x16\xc4f\x8aB\xed\
-\x00\xf5\x16\xe4\x92\x09,\x97h)&~\x9a\xcb\xd8\xd7\
-\xe0\xcd\x08\xdcd\x02\xbb\xf3`\xaa9\xc1\xed9A\xfb\
-\xac\xcd\x00~\xb7\xfe>g\x5c\xc7\x8cC\x93\xe2H\x19\
-O-\xeaW\x95\xed\x8e\x87!KI\x96\xbe\x8e\xa6\x92\
-\x1a1\xeb\xf1\xfc)V\xaa\xefk\xb0 \xc9TG\x0f\
-\xf85\xb8M\xd7V\x03\xe2 \x98\xc7\xaa\xf5\xb7\x98\x05\
-\xd6\xde\xd4>\xf7W\x1a\xb8:\x00\x8a\xa5\xcbfj\xee\
-\x91a\xa9f\xc0\x0f\xb5]\x00\x00\x00\x00IEND\
-\xaeB`\x82\
-\x00\x00\x00`\
+\xd3~\x00\x00\x00'IDATH\xc7c`\x80\x82\
+\x06\x0640*0*0*0*\x80*\xf0\x1f\x15\
+\xfc\x1b\x0d\xa0Q\x81Q\x81Q\x01\x22\x05\x00\xd5;N\
+\xf0s\xe3o\xe9\x00\x00\x00\x00IEND\xaeB`\
+\x82\
+\x00\x00\x00\x8d\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfcs\x8fP\
-\x00\x00\x00\x03PLTE\xff\xff\xff\xa7\xc4\x1b\xc8\x00\
-\x00\x00\x18IDATx^\xed\xc01\x01\x00\x00\x00\
-\xc2 \xfb\xa76\xc5>X\x0b\x00\xe0\x08o\x00\x01\x01\
->\xc31\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x1b\x00\x00\x00\x1b\x01\x03\x00\x00\x00\xb7\x1af\x16\
+\x00\x00\x00\x06PLTE\xff\xff\xff\x00\x00\x00U\xc2\
+\xd3~\x00\x00\x00\x01tRNS\x00@\xe6\xd8f\x00\
+\x00\x005IDAT\x08\x99c`\xc0\x02\xd8\x1b\x80\
+\x04\xff\x01L\x82\xfd\x01H\xba\x00DX\x80\x08\x19\x10\
+\xc1\x07\xd6\x02\x22\x98A\xfa\x18A\x0a\x19\xc0\x0a\xeb@\
+\x84=\x16B\x0e\xddF\x00\xb5\x00\x09@\xa31\xbf^\
+\x00\x00\x00\x00IEND\xaeB`\x82\
\x00\x00\x03?\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -261,37 +114,6 @@ I\x22\x8f\x8f\xc15\xf7\xdd\x12\xae\xb4\xf4\x04n\xa9\x0c\
\x8a\x88\xa6Y\xd6\xa8Syku\x9eO>\x8e\x1b\xec\
\x0f\xe4\x1a\xda\xa0h\xebM\xed\x7f=\xa9\x97\x96\x02\xf1\
+\x1c\x00\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x00\x8d\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x1b\x00\x00\x00\x1b\x01\x03\x00\x00\x00\xb7\x1af\x16\
-\x00\x00\x00\x06PLTE\xff\xff\xff\x00\x00\x00U\xc2\
-\xd3~\x00\x00\x00\x01tRNS\x00@\xe6\xd8f\x00\
-\x00\x005IDAT\x08\x99c`\xc0\x02\xd8\x1b\x80\
-\x04\xff\x01L\x82\xfd\x01H\xba\x00DX\x80\x08\x19\x10\
-\xc1\x07\xd6\x02\x22\x98A\xfa\x18A\x0a\x19\xc0\x0a\xeb@\
-\x84=\x16B\x0e\xddF\x00\xb5\x00\x09@\xa31\xbf^\
-\x00\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00\x01\x12\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x0b\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x7f\xf5\x94;\
-\x00\x00\x00\xd9IDAT(S}\x901\x0eE@\
-\x10\x86G$$\x1a\x0d\x0d\xd1\x22Qp\x80m\x5c@\
-\xe7<\x0e!\x0aGq\x19\xb5N\xa9\xc1x3\xb2\x8b\
-\xf7\xec\xdb\xe4\xcbfv\xfe\xf9gv\xc00\x0c\x04\x80\
-\x07\xf4fY\x16&I\x82\x9f\x03\xc4\xbe\xef\x94;\x05\
-i\x9a2$\x08\xc3\xf0QX\xd75\x17\x01\x05\x04U\
-\xde]\xe8v\x1c\x87s\xb6m\xe3\xc3Y\x0a\xefDQ\
-\xc4\xe2 \x08\xf4\xce\xeb\xbab\xdb\xb6j\x94\xbe\xefO\
-\xb1|(\x8a\x82\xc9\xf3\x1c}\xdfg\x03!\x04\x0e\xc3\
-\xa0L@\xb7\x0d\xd34Y\xdcu\xdd%\xfe\x9ey\xdb\
-6\x9c\xa6\x89c\xd9!\x8ec\x1c\xc7\x11\xd5\xcco\x1f\
-$d\xbe\xaa\xaa\xff\xdbX\x96E\x8dF]^\xb7A\
-\xcc\xf3\x8cM\xd3\xa0\xccgYv9{\x9e\xa7p]\
-\xf7\xe7\xd3\xdamH\xa8\xa8,K\xd5\xf1\x00\xd0\xc0\x13\
-\xc8\x06\xaf\x16(\x00\x00\x00\x00IEND\xaeB`\
-\x82\
\x00\x00\x00t\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -302,6 +124,184 @@ PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
C\xc4\xff\x8d\x0a\x8c\x0a\x8c\x0a\x8c\x0a`\x17\x00\x00?\
x\xe4\xb7\xe3\x900_\x00\x00\x00\x00IEND\xae\
B`\x82\
+\x00\x00\x00`\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfcs\x8fP\
+\x00\x00\x00\x03PLTE\xff\xff\xff\xa7\xc4\x1b\xc8\x00\
+\x00\x00\x18IDATx^\xed\xc01\x01\x00\x00\x00\
+\xc2 \xfb\xa76\xc5>X\x0b\x00\xe0\x08o\x00\x01\x01\
+>\xc31\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00p\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfcs\x8fP\
+\x00\x00\x00\x06PLTE\x00\xff\xff\xff\xff\xff\xb1\xb8\
+^\xa0\x00\x00\x00%IDATx^\xed\xcc!\x12\
+\x00\x00\x04\x00A\xff\x7f4\x82\x11du/n\xb8\xd8\
+j\xca\x0b\x00\x00\xf0\x9d\x01\x00@\x03\x94\x98\xeb\xc0\x19\
+8\xa1\x84\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x01>\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4l;\
+\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\
+\xa7\x93\x00\x00\x00\xf3IDAT8\xcb\xed\x94An\
+\x830\x10E\x9f%\xe0\x0c\xbdC/\xd0\x13\xe5\xfaU\
+b\x9b\xd83\x01w\x81\x0d$\x85\xaa1\xca\xaa\x1d\x89\
+\x8d\x0dO\xef{\x067m\xdb&\x0e\x94\xaa\x9a\xad\xf5\
+\x06@D\xaa\xa0]\xd7\xed\xee5\xbc\xa8\xfe\xc1\x7f\x01\
+l\x8c\xd9\xdbJ\x87\x8dS\xda`\x8c\x03\x0c\x01\xf4\x0a\
+\xd2Ct\x98\xb7\xf7\x83G1*h\x81z\x10\x07\xd1\
+\x1d<\xe3A&\xa0\xf6\x0b48\x88\x97Jp\x1aa\
+\x88Kt\xf5\x93e\xb4\xd3#5\xc6i\x80[\x00)\
+\xd1=\xa8\x83`W`_\x01\x96\x1c}\xb6|0\x95\
+jp\xfep\x06\xba\x15\xd4\xe5\x14v\x01\xfft\xfd\xdd\
+U\xb8\xe4\xce\xdb\x05\x5c&A\xfd\xb2\x064{\x17\xf5\
+\xe6\x8f\x10\xce\xdf\xa1\xc54\xe6\x89\xa8j^\xf8\x9cF\
+j\xb6t\x10\xb3\xa9\xac\x1a\xf84\xf8z\xce\xa6\x16b\
+\x0fj\xef\x1bXRT\x81\xa5\x98nLE\xf4p\xeb\
+\x9f\x07\x9b\x8f\xd3\xaf\xdf\xfd\x02\xd6\xbd\xde\xdfp\xdb\x04\
+\x83\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00\xfa\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x0b\x00\x00\x00\x0c\x08\x06\x00\x00\x00\xb4\xa9G\x9e\
+\x00\x00\x00\xc1IDAT(S\xcd\x901\x0a\x840\
+\x10E\xc7\xceV\xb0\xd3F\x10o`\xe5\x01\xbcB@\
+\x0b\x9bt\x22\x11\xbc\x94\x9d'\xd2\x03x\x03\x03\x19\xf7\
+\x0f\xb8\xd9,l\xbf\x81Of\xde\xfc|\xc8P\x1c\xc7\
+LD\xa2(\x8a8\xcfs~\x1d\xc2\xfd\xc9\xd34e\
+\xd2ZsQ\x14\x02\x86a\xe0y\x9e\xc5\x8c\x1b=8\
+\xe6\xe382a\xa0\x94\x12\x88\xfa[\xe0\x98;\xe7B\
+3\xc0/3\xea\x7fJ\xee\xbaN\xcc\xd7u\x05\x0f\xd0\
+\x83\xf7}\xef\x93\xb1&\xc0}\xdf\x03\xf3q\x1c\xc2\x97\
+e\xf1\xc9\xeb\xba\x0a\x9c\xa6)0?!\xdb\xb6\xf9d\
+\xa8\xaek\x19\x94e\xc9m\xdbrUU\xd27M\xc3\
+\xd6Z\x9f\xfc\xc8\x18\xc3Y\x96\x89)I\x12\xc6_\xce\
+\xf3|o\xe9\x063 8\xcd\x08\x1exv\x00\x00\x00\
+\x00IEND\xaeB`\x82\
+\x00\x00\x01%\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4l;\
+\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\
+\xa7\x93\x00\x00\x00\xdaIDATH\xc7\xed\x94A\x0e\
+\x820\x10E\x1fF8\x83w\xf0\xfe\x87\xf0\x1a^@\
+\xb1\xa5t\xa6\x1a\x5c\xb4\x04\x8c\xa2\x11\xca\xc2\xc4I\xd8\
+\xd0\xe4\xe5\xf5\xf7g\x8a\xb2,;\x16L\x08\xa1x\xf5\
+\x7f\x0b\xa0\xaa\xb3\xa0UUM\x9emXi\xfe\xe0\x1f\
+\x06o30\xbaU\xc0\xdd\xed\x0a7\x0f\xa1\x05u \
+\x96b\xb7\xcf`\x1c\x5c\x826\xa0\x16\xc4f\x8aB\xed\
+\x00\xf5\x16\xe4\x92\x09,\x97h)&~\x9a\xcb\xd8\xd7\
+\xe0\xcd\x08\xdcd\x02\xbb\xf3`\xaa9\xc1\xed9A\xfb\
+\xac\xcd\x00~\xb7\xfe>g\x5c\xc7\x8cC\x93\xe2H\x19\
+O-\xeaW\x95\xed\x8e\x87!KI\x96\xbe\x8e\xa6\x92\
+\x1a1\xeb\xf1\xfc)V\xaa\xefk\xb0 \xc9TG\x0f\
+\xf85\xb8M\xd7V\x03\xe2 \x98\xc7\xaa\xf5\xb7\x98\x05\
+\xd6\xde\xd4>\xf7W\x1a\xb8:\x00\x8a\xa5\xcbfj\xee\
+\x91a\xa9f\xc0\x0f\xb5]\x00\x00\x00\x00IEND\
+\xaeB`\x82\
+\x00\x00\x00\x91\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00*\x00\x00\x00+\x01\x03\x00\x00\x004Q\x88\xbd\
+\x00\x00\x00\x06PLTE\xff\xff\xff\x00\x00\x00U\xc2\
+\xd3~\x00\x00\x00\x01tRNS\x00@\xe6\xd8f\x00\
+\x00\x009IDAT\x18Wc`\xc0\x05\x14 T\
+\x01\x84\xfa\x01&\x19\xff\x80)f\x08\x8f\xfd\x03\x98\xe2\
+\x7f\x00\xa6\xe4\x0f\x80)\xfb\x060U\x0f\xd1\xf6oP\
+k\xe3\x87hc\x83P,\x0c\x84\x00\x00\x91\xca\x1c\x09\
+\xf6#*\xfe\x00\x00\x00\x00IEND\xaeB`\x82\
+\
+\x00\x00\x02\xf1\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00*\x00\x00\x00,\x08\x03\x00\x00\x00$D\xdat\
+\x00\x00\x012PLTE\xff\xff\xff\xfe\xfe\xfe\x01\x01\
+\x01\xbe\xbe\xbe\xfd\xfd\xfd\x00\x00\x00ddd\xd2\xd2\xd2\
+|||\xfb\xfb\xfb\xe7\xe7\xe7\x84\x84\x84\xd7\xd7\xd7\xe0\
+\xe0\xe0\xe1\xe1\xe1\x0c\x0c\x0c(((\xf5\xf5\xf5\xb3\xb3\
+\xb3\x02\x02\x02\x95\x95\x95...\x11\x11\x11kkk\
+\x03\x03\x03rrrIII\xfc\xfc\xfc\x13\x13\x13\x04\
+\x04\x04\x9f\x9f\x9f\xc4\xc4\xc4\xa9\xa9\xa9\x05\x05\x05WW\
+W\x17\x17\x17\xf6\xf6\xf6\x16\x16\x16\xa6\xa6\xa6\xa0\xa0\xa0\
+```$$$>>>###\xb7\xb7\xb7M\
+MM\xf8\xf8\xf8\xc0\xc0\xc0000\x09\x09\x09\xec\xec\
+\xec \x8a\x8a\x8a\xda\xda\xda\xf1\xf1\xf1\x0d\x0d\x0d\
+\x99\x99\x99\x19\x19\x19\xf9\xf9\xf9\xcd\xcd\xcd\xf4\xf4\xf49\
+99---;;;\x12\x12\x12CCC\xc2\xc2\
+\xc2\xa4\xa4\xa4\xdc\xdc\xdcUUUhhhZZZ\
+PPP\xf0\xf0\xf0\x06\x06\x06\x1f\x1f\x1fttt\xb1\
+\xb1\xb1]]]!!!666\x08\x08\x08\xea\xea\
+\xea\xdb\xdb\xdb\x81\x81\x81\x9c\x9c\x9c\x8b\x8b\x8buuu\
+\xf2\xf2\xf2%%%\xce\xce\xceHHHccc\xba\
+\xba\xbaSSS888\xf7\xf7\xf7\xe4\xe4\xe4\xa2\xa2\
+\xa2JJJ\xf3\xf3\xf3___\xf1i\x00\xec\x00\x00\
+\x00\x01tRNS\x00@\xe6\xd8f\x00\x00\x01mI\
+DATx^\xd5\x92\xc5v\xc30\x10E=\x92\x1d\
+f\xe6\x94\x99\x99\x99\x99\x99\xe1\xff\x7f\xa1\x9e\x89\x93S\
+\xa9\xb2Nvm\xdf\xf2\xea\xfa\xbdY\xd8\xf8+\xf10\
+\xeb[X\xcc\x047\x13<\x96\x10\xc6\xb5\xadB\xda\x9a\
+om\x0d@\xb3\xad,\xe8\xda\x1a\xe2\xb5\xf4\xd4\xddq\
+\xbf\xa1\x0d\x14{\x1b\xed\x09\xd0\xbb\x03\x0d\x93\x0d\xeaM\
+\xd8A+3\x82n.\xac5\xc39\xbb\x95\xe5\xbb\xa9\
+\xdb\xa7\xbd\xc0G\xcedG'~1;\xa7q\x87\xda\
+\xd1,\x00\xf8\xe8\xda\x16\xcd~\x17\x19\x09\xc3\x88\x94\xd1\
+]\xd5\xb4\xf6\xe1n\xbf\xdf66\xe9\x92\x90\xab\xeb\xa5\
+\xf7\x09\xdb\x84a\xea\xcf\xbb\xeeg\xd1\x1c\x1dC`\xa6\
+\xd1]\x89\xbb\x98S\xd3\xb8\xef\xa9\x81\x19Z\xa8\x80\xda\
+M\xd1\xeb<\xbd\xc2B\x06\xbf[T\x9b\xe6\x12\x9a\xcb\
+N\x0f\x1c\xd0\xb5w\xca\xfd5z[\xaf\x83\x8d$\xba\
+[\xca\x0b\xb6q_\x0a\x8b\xee*\xdc\xc0\x9e\xa5\x08K\
+)\xf6\x83\x962i\xf3\x87\xe9\xdfgj\xb7\x0a\xb2{\
+\xe8b\xb2#\xd9\x84\x02\xf2c.\xe4\x04\xd9\xe9\x99d\
+\x9eS\xc3\x85H/i\xe9\x0aDzmS\x96\x8c\x08\
+\x14n\xa2Ho\x8b\x02\x8d\x97\xb0\xf5\x1e\xa4\xad\x07\xda\
+z\x14XE\xfd\xd7W\xe9\x82'\xa1\xe1\x19\x97J/\
+r\xab\x19C^~\xads\xce\xf9\x1b}\xfd\xce1\x1f\
+\xe0`\xcc'\xademL\xcc\x12\xc2\xbcN#\x139\
+A\x89y\xc1P5\xfc~\xeb\xff\xca\x17Uq \xbb\
+\xd7\xbb.\xca\x00\x00\x00\x00IEND\xaeB`\x82\
+\
+\x00\x00\x01\x1a\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00*\x00\x00\x00+\x02\x03\x00\x00\x00s\xf1\xf2m\
+\x00\x00\x00\x0cPLTE\xff\xff\xff\x80\x80\x80\x00\x00\
+\x00\xff\xff\xffEJK8\x00\x00\x00\x01tRNS\
+\x00@\xe6\xd8f\x00\x00\x00\xbcIDATx^M\
+\xcb\xbd\x89\x041\x0c\x86a\xa1\xd0U8\x1c\xdc\x8f&\
+\xd8\x12\xa6\x0a\xb3\xe1\xe6N.2\x07\x02\xdb\x07[\xc0\
+\x96\xb4U\x9cG?3V\xf4!\xde\x07B\xcd\xe0\x17\
+F\xbd\xf6\xb6\xec\x1a\xef\xa6A\x024\xb2A\x80`$\
+\xcf\x9d\x9a\xee8\x8b~x\x83O~d\xb30hW\
+\x102t\x22\x05\x98\x91\x89\x0c\xe4P\x88\x0c\xd4D\xe4\
+ \xce\xdc\xc1\x98\x89\x833q \x89\x02\xe4\x9d\x1d`\
+\xa1.@\xff\xe9\x02\xfd\xf1*\x0e\xd2\xfe{\x81P\xda\
+\x02\x8e\xef\x02>\x0bx\xb3l\x01\x7f]\x1a\x03f\x1d\
+4\x00\x03B\x15\xb0\xe4\x0a$7P$W\xc0\x92+\
+\xe8\x92\x1b\x90\xdc\x80\xe4\x0a$7\xf0so\x1cp_\
+[v<\xc7?\xd6Qh R\x85\xdb_\x00\x00\x00\
+\x00IEND\xaeB`\x82\
+\x00\x00\x00\xf7\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x0b\x00\x00\x00\x0c\x08\x06\x00\x00\x00\xb4\xa9G\x9e\
+\x00\x00\x00\xbeIDAT(S\x85\x911\x0e@@\
+\x10EWM$J7\xa1\xa4\x918\x85^t\xaa=\
+\x8aNT{\x80\xadun\xa0\xd1l\xe7\x12\xc4\x97\x19\
+\xb1!YQ\xfcb\xfe\xbc\xfc\x99\xcc\x08\x00\x82t\x1c\
+\x07\xa6i\x82\x10\xc2)\xcf\xf3.\xf0\xd68\x8e\xa8\xaa\
+\x8aU\x14\x05\x03I\x92X\xef\x05?\xd5u\x1d\xc3Z\
+k\xd0T\xf2\x9c 5\xeb\xbafx]W\xdc\xfeg\
+r\x9a\xa6\x88\xe3\x18O\xcf\x09n\xdb\x06\xdf\xf7Q\x96\
+\xa5]\xc1\x09Ss\x9eg^AJ\xf9\x9f<\x0c\x03\
+\xc3J\xa9\xff\xe4\xb6m\x19^\x96\xe5?9\xcfs\x84\
+a\x88}\xdf\xdf\xc9T\x18c\xec\xe1IA\x10 \x8a\
+\x22[7M\x03\x9b\xdc\xf7\xfd\xf5\xce\x8fWgY\xc6\
+\x13N\xfaWVX\xe8@\xda\xc6\x00\x00\x00\x00IE\
+ND\xaeB`\x82\
"
qt_resource_name = b"\
@@ -309,66 +309,66 @@ qt_resource_name = b"\
\x07\x03}\xc3\
\x00i\
\x00m\x00a\x00g\x00e\x00s\
-\x00\x0a\
-\x02\xfcBG\
-\x00i\
-\x00t\x00a\x00l\x00i\x00c\x00.\x00p\x00n\x00g\
-\x00\x0d\
-\x06C\xe3g\
-\x00f\
-\x00l\x00o\x00o\x00d\x00f\x00i\x00l\x00l\x00.\x00p\x00n\x00g\
-\x00\x0d\
-\x08\xd5\xc4\xe7\
-\x00u\
-\x00n\x00d\x00e\x00r\x00l\x00i\x00n\x00e\x00.\x00p\x00n\x00g\
+\x00\x0b\
+\x0a+\x97\xe7\
+\x00p\
+\x00o\x00i\x00n\x00t\x00e\x00r\x00.\x00p\x00n\x00g\
+\x00\x08\
+\x06'Zg\
+\x00b\
+\x00o\x00l\x00d\x00.\x00p\x00n\x00g\
\x00\x0f\
\x00I\xdb\xa7\
\x00b\
\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x002\x00.\x00p\x00n\x00g\
\x00\x0f\
-\x05\xaa\x0c\xc7\
-\x00t\
-\x00e\x00x\x00t\x00p\x00o\x00i\x00n\x00t\x00e\x00r\x00.\x00p\x00n\x00g\
-\x00\x0e\
-\x0f\x0d\x22'\
-\x00s\
-\x00e\x00n\x00d\x00t\x00o\x00b\x00a\x00c\x00k\x00.\x00p\x00n\x00g\
-\x00\x0b\
-\x0a+\x97\xe7\
-\x00p\
-\x00o\x00i\x00n\x00t\x00e\x00r\x00.\x00p\x00n\x00g\
+\x03J#\xe7\
+\x00l\
+\x00i\x00n\x00e\x00p\x00o\x00i\x00n\x00t\x00e\x00r\x00.\x00p\x00n\x00g\
+\x00\x0a\
+\x0c\xad\x0f\x07\
+\x00d\
+\x00e\x00l\x00e\x00t\x00e\x00.\x00p\x00n\x00g\
+\x00\x0f\
+\x00J\xdb\xa7\
+\x00b\
+\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x003\x00.\x00p\x00n\x00g\
+\x00\x0f\
+\x00K\xdb\xa7\
+\x00b\
+\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x004\x00.\x00p\x00n\x00g\
\x00\x0f\
\x00P\xdb\xa7\
\x00b\
\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x001\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0f\x0d\x22'\
+\x00s\
+\x00e\x00n\x00d\x00t\x00o\x00b\x00a\x00c\x00k\x00.\x00p\x00n\x00g\
\x00\x0d\
-\x05l\x22\xc7\
-\x00l\
-\x00i\x00n\x00e\x00c\x00o\x00l\x00o\x00r\x00.\x00p\x00n\x00g\
+\x08\xd5\xc4\xe7\
+\x00u\
+\x00n\x00d\x00e\x00r\x00l\x00i\x00n\x00e\x00.\x00p\x00n\x00g\
\x00\x10\
\x0f\x9b\x88g\
\x00b\
\x00r\x00i\x00n\x00g\x00t\x00o\x00f\x00r\x00o\x00n\x00t\x00.\x00p\x00n\x00g\
-\x00\x0f\
-\x00K\xdb\xa7\
-\x00b\
-\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x004\x00.\x00p\x00n\x00g\
-\x00\x0a\
-\x0c\xad\x0f\x07\
-\x00d\
-\x00e\x00l\x00e\x00t\x00e\x00.\x00p\x00n\x00g\
-\x00\x0f\
-\x03J#\xe7\
+\x00\x0d\
+\x05l\x22\xc7\
\x00l\
-\x00i\x00n\x00e\x00p\x00o\x00i\x00n\x00t\x00e\x00r\x00.\x00p\x00n\x00g\
-\x00\x08\
-\x06'Zg\
-\x00b\
-\x00o\x00l\x00d\x00.\x00p\x00n\x00g\
+\x00i\x00n\x00e\x00c\x00o\x00l\x00o\x00r\x00.\x00p\x00n\x00g\
\x00\x0f\
-\x00J\xdb\xa7\
-\x00b\
-\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x003\x00.\x00p\x00n\x00g\
+\x05\xaa\x0c\xc7\
+\x00t\
+\x00e\x00x\x00t\x00p\x00o\x00i\x00n\x00t\x00e\x00r\x00.\x00p\x00n\x00g\
+\x00\x0d\
+\x06C\xe3g\
+\x00f\
+\x00l\x00o\x00o\x00d\x00f\x00i\x00l\x00l\x00.\x00p\x00n\x00g\
+\x00\x0a\
+\x02\xfcBG\
+\x00i\
+\x00t\x00a\x00l\x00i\x00c\x00.\x00p\x00n\x00g\
"
qt_resource_struct = b"\
@@ -376,36 +376,36 @@ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0f\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00l\x00\x00\x00\x00\x00\x01\x00\x00\x03\x17\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xf5\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x01\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xa7\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x01\x00\x00\x08u\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
+\x00\x00\x00D\x00\x00\x00\x00\x00\x01\x00\x00\x01\xc7\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x06\x11\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00\xca\x00\x00\x00\x00\x00\x01\x00\x00\x06\x89\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00\xee\x00\x00\x00\x00\x00\x01\x00\x00\x06\xed\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x00\x0fr\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00h\x00\x00\x00\x00\x00\x01\x00\x00\x02=\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x01z\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xca\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x01\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x0b_\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00.\x00\x00\x00\x00\x00\x01\x00\x00\x00\xb1\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x01\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x0eT\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x014\x00\x00\x00\x00\x00\x01\x00\x00\x08\xa3\
+\x00\x00\x01z\xe7\xee'\x09\
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x01\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x0eN\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00\x08\xe9\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00\x90\x00\x00\x00\x00\x00\x01\x00\x00\x03\x8d\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x01\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x0e\xdf\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00,\x00\x00\x00\x00\x00\x01\x00\x00\x00\xfb\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00L\x00\x00\x00\x00\x00\x01\x00\x00\x02\x19\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x01\x00\x00\x07\xc4\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x01\x80\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x0b\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x06\x82\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x016\x00\x00\x00\x00\x00\x01\x00\x00\x09~\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x02\xce\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x01\x12\x00\x00\x00\x00\x00\x01\x00\x00\x07a\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x01T\x00\x00\x00\x00\x00\x01\x00\x00\x09\xa1\
+\x00\x00\x01z\xe7\xee'\x09\
"
def qInitResources():
diff --git a/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.py b/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.py
index 4f074aa19..9ed92b26e 100644
--- a/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.py
+++ b/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
import math
@@ -49,9 +11,9 @@ from PySide6.QtGui import (QBrush, QColor, QDrag, QImage, QPainter, QPixmap,
QPen, QTransform)
from PySide6.QtWidgets import (QApplication, QGraphicsItem,
QGraphicsItemAnimation, QGraphicsScene,
- QGraphicsView, QWidget)
+ QGraphicsView)
-import dragdroprobot_rc
+import dragdroprobot_rc # noqa: F401
def random(boundary):
@@ -113,11 +75,10 @@ class ColorItem(QGraphicsItem):
pixmap = QPixmap(34, 34)
pixmap.fill(Qt.white)
- painter = QPainter(pixmap)
- painter.translate(15, 15)
- painter.setRenderHint(QPainter.Antialiasing)
- self.paint(painter, None, None)
- painter.end()
+ with QPainter(pixmap) as painter:
+ painter.translate(15, 15)
+ painter.setRenderHint(QPainter.Antialiasing)
+ self.paint(painter, None, None)
pixmap.setMask(pixmap.createHeuristicMask())
@@ -142,8 +103,8 @@ class RobotPart(QGraphicsItem):
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
- if (event.mimeData().hasColor() or
- (isinstance(self, RobotHead) and event.mimeData().hasImage())):
+ if (event.mimeData().hasColor()
+ or (isinstance(self, RobotHead) and event.mimeData().hasImage())):
event.setAccepted(True)
self._drag_over = True
self.update()
@@ -170,8 +131,7 @@ class RobotHead(RobotPart):
def paint(self, painter, option, widget=None):
if not self.pixmap:
- painter.setBrush(self._drag_over and self.color.lighter(130)
- or self.color)
+ painter.setBrush(self._drag_over and self.color.lighter(130) or self.color)
painter.drawRoundedRect(-10, -30, 20, 30, 25, 25, Qt.RelativeSize)
painter.setBrush(Qt.white)
painter.drawEllipse(-7, -3 - 20, 7, 7)
@@ -193,7 +153,7 @@ class RobotTorso(RobotPart):
def paint(self, painter, option, widget=None):
painter.setBrush(self._drag_over and self.color.lighter(130)
- or self.color)
+ or self.color)
painter.drawRoundedRect(-20, -20, 40, 60, 25, 25, Qt.RelativeSize)
painter.drawEllipse(-25, -20, 20, 20)
painter.drawEllipse(5, -20, 20, 20)
@@ -208,7 +168,7 @@ class RobotLimb(RobotPart):
def paint(self, painter, option, widget=None):
painter.setBrush(self._drag_over and self.color.lighter(130) or self.color)
painter.drawRoundedRect(self.boundingRect(), 50, 50,
- Qt.RelativeSize)
+ Qt.RelativeSize)
painter.drawEllipse(-5, -5, 10, 10)
@@ -216,35 +176,35 @@ class Robot(RobotPart):
def __init__(self):
super().__init__()
- self.torsoItem = RobotTorso(self)
- self.headItem = RobotHead(self.torsoItem)
- self.upperLeftArmItem = RobotLimb(self.torsoItem)
- self.lowerLeftArmItem = RobotLimb(self.upperLeftArmItem)
+ self.torsoItem = RobotTorso(self)
+ self.headItem = RobotHead(self.torsoItem)
+ self.upperLeftArmItem = RobotLimb(self.torsoItem)
+ self.lowerLeftArmItem = RobotLimb(self.upperLeftArmItem)
self._upper_right_arm_item = RobotLimb(self.torsoItem)
self._lower_right_arm_item = RobotLimb(self._upper_right_arm_item)
self._upper_right_leg_item = RobotLimb(self.torsoItem)
self._lower_right_leg_item = RobotLimb(self._upper_right_leg_item)
- self.upperLeftLegItem = RobotLimb(self.torsoItem)
- self.lowerLeftLegItem = RobotLimb(self.upperLeftLegItem)
+ self.upperLeftLegItem = RobotLimb(self.torsoItem)
+ self.lowerLeftLegItem = RobotLimb(self.upperLeftLegItem)
self.timeline = QTimeLine()
settings = [
- # item position rotation at
- # x y time 0 / 1
- ( self.headItem, 0, -18, 20, -20 ),
- ( self.upperLeftArmItem, -15, -10, 190, 180 ),
- ( self.lowerLeftArmItem, 30, 0, 50, 10 ),
- ( self._upper_right_arm_item, 15, -10, 300, 310 ),
- ( self._lower_right_arm_item, 30, 0, 0, -70 ),
- ( self._upper_right_leg_item, 10, 32, 40, 120 ),
- ( self._lower_right_leg_item, 30, 0, 10, 50 ),
- ( self.upperLeftLegItem, -10, 32, 150, 80 ),
- ( self.lowerLeftLegItem, 30, 0, 70, 10 ),
- ( self.torsoItem, 0, 0, 5, -20 )
+ # item position rotation at
+ # x y time 0 / 1
+ (self.headItem, 0, -18, 20, -20), # noqa: E241
+ (self.upperLeftArmItem, -15, -10, 190, 180), # noqa: E241
+ (self.lowerLeftArmItem, 30, 0, 50, 10), # noqa: E241
+ (self._upper_right_arm_item, 15, -10, 300, 310), # noqa: E241
+ (self._lower_right_arm_item, 30, 0, 0, -70), # noqa: E241
+ (self._upper_right_leg_item, 10, 32, 40, 120), # noqa: E241
+ (self._lower_right_leg_item, 30, 0, 10, 50), # noqa: E241
+ (self.upperLeftLegItem, -10, 32, 150, 80), # noqa: E241
+ (self.lowerLeftLegItem, 30, 0, 70, 10), # noqa: E241
+ (self.torsoItem, 0, 0, 5, -20) # noqa: E241
]
self.animations = []
for item, pos_x, pos_y, rotation1, rotation2 in settings:
- item.setPos(pos_x,pos_y)
+ item.setPos(pos_x, pos_y)
animation = QGraphicsItemAnimation()
animation.setItem(item)
animation.setTimeLine(self.timeline)
@@ -267,7 +227,7 @@ class Robot(RobotPart):
pass
-if __name__== '__main__':
+if __name__ == '__main__':
app = QApplication(sys.argv)
scene = QGraphicsScene(-200, -200, 400, 400)
diff --git a/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.pyproject b/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.pyproject
index 587484a97..f31851b91 100644
--- a/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.pyproject
+++ b/examples/widgets/graphicsview/dragdroprobot/dragdroprobot.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["dragdroprobot.qrc", "dragdroprobot_rc.py", "dragdroprobot.py"]
+ "files": ["dragdroprobot.qrc", "dragdroprobot.py"]
}
diff --git a/examples/widgets/graphicsview/dragdroprobot/dragdroprobot_rc.py b/examples/widgets/graphicsview/dragdroprobot/dragdroprobot_rc.py
index 5b992ffca..b0e29d413 100644
--- a/examples/widgets/graphicsview/dragdroprobot/dragdroprobot_rc.py
+++ b/examples/widgets/graphicsview/dragdroprobot/dragdroprobot_rc.py
@@ -1,6 +1,6 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.14.0
+# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
@@ -963,7 +963,7 @@ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
+\x00\x00\x01z\xe7\xee'\x09\
"
def qInitResources():
diff --git a/examples/widgets/graphicsview/elasticnodes/elasticnodes.py b/examples/widgets/graphicsview/elasticnodes/elasticnodes.py
index 78f006285..90cb49626 100644
--- a/examples/widgets/graphicsview/elasticnodes/elasticnodes.py
+++ b/examples/widgets/graphicsview/elasticnodes/elasticnodes.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
import weakref
@@ -46,10 +8,10 @@ import math
from PySide6.QtCore import (QLineF, QPointF, QRandomGenerator, QRectF, QSizeF,
Qt, qAbs)
-from PySide6.QtGui import (QColor, QBrush, QPainter, QPainterPath, QPen,
+from PySide6.QtGui import (QColor, QBrush, QLinearGradient, QPainter, QPainterPath, QPen,
QPolygonF, QRadialGradient)
from PySide6.QtWidgets import (QApplication, QGraphicsItem, QGraphicsScene,
- QGraphicsView, QStyle, QWidget)
+ QGraphicsView, QStyle)
def random(boundary):
@@ -58,8 +20,6 @@ def random(boundary):
class Edge(QGraphicsItem):
- item_type = QGraphicsItem.UserType + 2
-
def __init__(self, sourceNode, destNode):
super().__init__()
@@ -74,7 +34,7 @@ class Edge(QGraphicsItem):
self.adjust()
def item_type(self):
- return Edge.item_type
+ return QGraphicsItem.UserType + 2
def source_node(self):
return self.source()
@@ -157,7 +117,6 @@ class Edge(QGraphicsItem):
class Node(QGraphicsItem):
- item_type = QGraphicsItem.UserType + 1
def __init__(self, graphWidget):
super().__init__()
@@ -167,11 +126,11 @@ class Node(QGraphicsItem):
self._new_pos = QPointF()
self.setFlag(QGraphicsItem.ItemIsMovable)
self.setFlag(QGraphicsItem.ItemSendsGeometryChanges)
- self.setCacheMode(self.DeviceCoordinateCache)
+ self.setCacheMode(QGraphicsItem.DeviceCoordinateCache)
self.setZValue(-1)
def item_type(self):
- return Node.item_type
+ return QGraphicsItem.UserType + 1
def add_edge(self, edge):
self._edge_list.append(weakref.ref(edge))
@@ -195,7 +154,7 @@ class Node(QGraphicsItem):
line = QLineF(self.mapFromItem(item, 0, 0), QPointF(0, 0))
dx = line.dx()
dy = line.dy()
- l = 2.0 * (dx * dx + dy * dy)
+ l = 2.0 * (dx * dx + dy * dy) # noqa: E741
if l > 0:
xvel += (dx * 150.0) / l
yvel += (dy * 150.0) / l
@@ -230,7 +189,7 @@ class Node(QGraphicsItem):
def boundingRect(self):
adjust = 2.0
return QRectF(-10 - adjust, -10 - adjust,
- 23 + adjust, 23 + adjust)
+ 23 + adjust, 23 + adjust)
def shape(self):
path = QPainterPath()
@@ -386,9 +345,9 @@ class GraphWidget(QGraphicsView):
bottom_shadow = QRectF(scene_rect.left() + 5, scene_rect.bottom(),
scene_rect.width(), 5)
if right_shadow.intersects(rect) or right_shadow.contains(rect):
- painter.fillRect(right_shadow, Qt.darkGray)
+ painter.fillRect(right_shadow, Qt.darkGray)
if bottom_shadow.intersects(rect) or bottom_shadow.contains(rect):
- painter.fillRect(bottom_shadow, Qt.darkGray)
+ painter.fillRect(bottom_shadow, Qt.darkGray)
# Fill.
gradient = QLinearGradient(scene_rect.topLeft(), scene_rect.bottomRight())
@@ -400,7 +359,7 @@ class GraphWidget(QGraphicsView):
# Text.
text_rect = QRectF(scene_rect.left() + 4, scene_rect.top() + 4,
- scene_rect.width() - 4, scene_rect.height() - 4)
+ scene_rect.width() - 4, scene_rect.height() - 4)
message = self.tr("Click and drag the nodes around, and zoom with the "
"mouse wheel or the '+' and '-' keys")
@@ -414,7 +373,8 @@ class GraphWidget(QGraphicsView):
painter.drawText(text_rect, message)
def scale_view(self, scaleFactor):
- factor = self.transform().scale(scaleFactor, scaleFactor).mapRect(QRectF(0, 0, 1, 1)).width()
+ factor = self.transform().scale(scaleFactor, scaleFactor).mapRect(
+ QRectF(0, 0, 1, 1)).width()
if factor < 0.07 or factor > 100:
return
diff --git a/examples/widgets/imageviewer/imageviewer.py b/examples/widgets/imageviewer/imageviewer.py
index ebcae5fa4..93b1e87ba 100644
--- a/examples/widgets/imageviewer/imageviewer.py
+++ b/examples/widgets/imageviewer/imageviewer.py
@@ -1,51 +1,14 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtPrintSupport import QPrintDialog, QPrinter
from PySide6.QtWidgets import (QApplication, QDialog, QFileDialog, QLabel,
- QMainWindow, QMenuBar, QMessageBox, QScrollArea,
- QScrollBar, QSizePolicy, QStatusBar)
-from PySide6.QtGui import (QAction, QClipboard, QColorSpace, QGuiApplication,
- QImage, QImageReader, QImageWriter, QKeySequence,
- QPalette, QPainter, QPixmap, QScreen)
-from PySide6.QtCore import QDir, QMimeData, QStandardPaths, Qt, Slot
+ QMainWindow, QMessageBox, QScrollArea,
+ QSizePolicy)
+from PySide6.QtGui import (QColorSpace, QGuiApplication,
+ QImageReader, QImageWriter, QKeySequence,
+ QPalette, QPainter, QPixmap)
+from PySide6.QtCore import QDir, QStandardPaths, Qt, Slot
ABOUT = """<p>The <b>Image Viewer</b> example shows how to combine QLabel
@@ -71,7 +34,7 @@ class ImageViewer(QMainWindow):
self._image_label = QLabel()
self._image_label.setBackgroundRole(QPalette.Base)
self._image_label.setSizePolicy(QSizePolicy.Ignored,
- QSizePolicy.Ignored)
+ QSizePolicy.Ignored)
self._image_label.setScaledContents(True)
self._scroll_area = QScrollArea()
@@ -155,15 +118,14 @@ class ImageViewer(QMainWindow):
printer = QPrinter()
dialog = QPrintDialog(printer, self)
if dialog.exec() == QDialog.Accepted:
- painter = QPainter(printer)
- pixmap = self._image_label.pixmap()
- rect = painter.viewport()
- size = pixmap.size()
- size.scale(rect.size(), Qt.KeepAspectRatio)
- painter.setViewport(rect.x(), rect.y(), size.width(), size.height())
- painter.setWindow(pixmap.rect())
- painter.drawPixmap(0, 0, pixmap)
- painter.end()
+ with QPainter(printer) as painter:
+ pixmap = self._image_label.pixmap()
+ rect = painter.viewport()
+ size = pixmap.size()
+ size.scale(rect.size(), Qt.KeepAspectRatio)
+ painter.setViewport(rect.x(), rect.y(), size.width(), size.height())
+ painter.setWindow(pixmap.rect())
+ painter.drawPixmap(0, 0, pixmap)
@Slot()
def _copy(self):
diff --git a/examples/widgets/imageviewer/main.py b/examples/widgets/imageviewer/main.py
index 39db14e69..949def62e 100644
--- a/examples/widgets/imageviewer/main.py
+++ b/examples/widgets/imageviewer/main.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/imageviewer example from Qt v6.0"""
diff --git a/examples/widgets/itemviews/address_book/adddialogwidget.py b/examples/widgets/itemviews/address_book/adddialogwidget.py
index 1462711a8..ecb853e80 100644
--- a/examples/widgets/itemviews/address_book/adddialogwidget.py
+++ b/examples/widgets/itemviews/address_book/adddialogwidget.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtCore import Qt
from PySide6.QtWidgets import (QDialog, QLabel, QTextEdit, QLineEdit,
@@ -53,8 +15,8 @@ class AddDialogWidget(QDialog):
name_label = QLabel("Name")
address_label = QLabel("Address")
- button_box = QDialogButtonBox(QDialogButtonBox.Ok |
- QDialogButtonBox.Cancel)
+ button_box = QDialogButtonBox(QDialogButtonBox.Ok
+ | QDialogButtonBox.Cancel)
self._name_text = QLineEdit()
self._address_text = QTextEdit()
diff --git a/examples/widgets/itemviews/address_book/address_book.py b/examples/widgets/itemviews/address_book/address_book.py
index 89518f63e..af0cf3dee 100644
--- a/examples/widgets/itemviews/address_book/address_book.py
+++ b/examples/widgets/itemviews/address_book/address_book.py
@@ -1,45 +1,8 @@
+# Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-#############################################################################
-##
-## Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
+from PySide6.QtCore import Slot
from PySide6.QtGui import QAction
from PySide6.QtWidgets import (QMainWindow, QFileDialog, QApplication)
@@ -62,16 +25,19 @@ class MainWindow(QMainWindow):
tool_menu = self.menuBar().addMenu("&Tools")
# Populate the File menu
- open_action = self.create_action("&Open...", file_menu, self.open_file)
- save_action = self.create_action("&Save As...", file_menu, self.save_file)
+ self.open_action = self.create_action("&Open...", file_menu, self.open_file)
+ self.save_action = self.create_action("&Save As...", file_menu, self.save_file)
file_menu.addSeparator()
- exit_action = self.create_action("E&xit", file_menu, self.close)
+ self.exit_action = self.create_action("E&xit", file_menu, self.close)
# Populate the Tools menu
- add_action = self.create_action("&Add Entry...", tool_menu, self._address_widget.add_entry)
- self._edit_action = self.create_action("&Edit Entry...", tool_menu, self._address_widget.edit_entry)
+ self.add_action = self.create_action(
+ "&Add Entry...", tool_menu, self._address_widget.add_entry)
+ self._edit_action = self.create_action(
+ "&Edit Entry...", tool_menu, self._address_widget.edit_entry)
tool_menu.addSeparator()
- self._remove_action = self.create_action("&Remove Entry", tool_menu, self._address_widget.remove_entry)
+ self._remove_action = self.create_action(
+ "&Remove Entry", tool_menu, self._address_widget.remove_entry)
# Disable the edit and remove menu items initially, as there are
# no items yet.
@@ -98,11 +64,13 @@ class MainWindow(QMainWindow):
#
# In PySide6, these functions return a tuple: (filename, filter)
+ @Slot()
def open_file(self):
filename, _ = QFileDialog.getOpenFileName(self)
if filename:
self._address_widget.read_from_file(filename)
+ @Slot()
def save_file(self):
filename, _ = QFileDialog.getSaveFileName(self)
if filename:
diff --git a/examples/widgets/itemviews/address_book/addresswidget.py b/examples/widgets/itemviews/address_book/addresswidget.py
index f0778d19f..cb2f46ea1 100644
--- a/examples/widgets/itemviews/address_book/addresswidget.py
+++ b/examples/widgets/itemviews/address_book/addresswidget.py
@@ -1,51 +1,13 @@
-
-#############################################################################
-##
-## Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
try:
import cpickle as pickle
except ImportError:
import pickle
-from PySide6.QtCore import (Qt, Signal, QRegularExpression, QModelIndex,
+from PySide6.QtCore import (Qt, Signal, Slot, QRegularExpression, QModelIndex,
QItemSelection, QSortFilterProxyModel)
from PySide6.QtWidgets import QTabWidget, QMessageBox, QTableView, QAbstractItemView
@@ -73,6 +35,7 @@ class AddressWidget(QTabWidget):
self.setup_tabs()
+ @Slot()
def add_entry(self, name=None, address=None):
""" Add an entry to the addressbook. """
if name is None and address is None:
@@ -121,6 +84,7 @@ class AddressWidget(QTabWidget):
table_view = self.currentWidget()
table_view.resizeRowToContents(ix.row())
+ @Slot()
def edit_entry(self):
""" Edit an entry in the addressbook. """
table_view = self.currentWidget()
@@ -153,6 +117,7 @@ class AddressWidget(QTabWidget):
ix = self._table_model.index(row, 1, QModelIndex())
self._table_model.setData(ix, new_address, Qt.EditRole)
+ @Slot()
def remove_entry(self):
""" Remove an entry from the addressbook. """
table_view = self.currentWidget()
@@ -201,8 +166,9 @@ class AddressWidget(QTabWidget):
proxy_model.setFilterKeyColumn(0) # Filter on the "name" column
proxy_model.sort(0, Qt.AscendingOrder)
- # This prevents an application crash (see: http://www.qtcentre.org/threads/58874-QListView-SelectionModel-selectionChanged-Crash)
- viewselectionmodel = table_view.selectionModel()
+ # This prevents an application crash (see:
+ # https://www.qtcentre.org/threads/58874-QListView-SelectionModel-selectionChanged-Crash) # noqa: E501
+ self.viewselectionmodel = table_view.selectionModel()
table_view.selectionModel().selectionChanged.connect(self.selection_changed)
self.addTab(table_view, group)
diff --git a/examples/widgets/itemviews/address_book/newaddresstab.py b/examples/widgets/itemviews/address_book/newaddresstab.py
index 407c48aec..d3d037ad4 100644
--- a/examples/widgets/itemviews/address_book/newaddresstab.py
+++ b/examples/widgets/itemviews/address_book/newaddresstab.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtCore import (Qt, Signal)
from PySide6.QtWidgets import (QWidget, QLabel, QPushButton, QVBoxLayout)
diff --git a/examples/widgets/itemviews/address_book/tablemodel.py b/examples/widgets/itemviews/address_book/tablemodel.py
index fc1a65e1c..3c1dbd4cc 100644
--- a/examples/widgets/itemviews/address_book/tablemodel.py
+++ b/examples/widgets/itemviews/address_book/tablemodel.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtCore import (Qt, QAbstractTableModel, QModelIndex)
@@ -143,5 +105,5 @@ class TableModel(QAbstractTableModel):
"""
if not index.isValid():
return Qt.ItemIsEnabled
- return Qt.ItemFlags(QAbstractTableModel.flags(self, index) |
- Qt.ItemIsEditable)
+ return Qt.ItemFlags(QAbstractTableModel.flags(self, index)
+ | Qt.ItemIsEditable)
diff --git a/examples/widgets/itemviews/basicfiltermodel/basicsortfiltermodel.py b/examples/widgets/itemviews/basicfiltermodel/basicsortfiltermodel.py
index 93f2fe8ce..a30b0abdf 100644
--- a/examples/widgets/itemviews/basicfiltermodel/basicsortfiltermodel.py
+++ b/examples/widgets/itemviews/basicfiltermodel/basicsortfiltermodel.py
@@ -1,48 +1,10 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
from PySide6.QtCore import (QDate, QDateTime, QRegularExpression,
- QSortFilterProxyModel, QTime, Qt)
+ QSortFilterProxyModel, QTime, Qt, Slot)
from PySide6.QtGui import QStandardItemModel
from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QGridLayout,
QGroupBox, QHBoxLayout, QLabel, QLineEdit,
@@ -84,11 +46,11 @@ class Window(QWidget):
self._filter_syntax_combo_box = QComboBox()
self._filter_syntax_combo_box.addItem("Regular expression",
- REGULAR_EXPRESSION)
+ REGULAR_EXPRESSION)
self._filter_syntax_combo_box.addItem("Wildcard",
- WILDCARD)
+ WILDCARD)
self._filter_syntax_combo_box.addItem("Fixed string",
- FIXED_STRING)
+ FIXED_STRING)
self._filter_syntax_label = QLabel("Filter &syntax:")
self._filter_syntax_label.setBuddy(self._filter_syntax_combo_box)
@@ -140,6 +102,7 @@ class Window(QWidget):
self._proxy_model.setSourceModel(model)
self._source_view.setModel(model)
+ @Slot()
def filter_reg_exp_changed(self):
syntax_nr = self._filter_syntax_combo_box.currentData()
pattern = self._filter_pattern_line_edit.text()
@@ -155,9 +118,11 @@ class Window(QWidget):
reg_exp.setPatternOptions(options)
self._proxy_model.setFilterRegularExpression(reg_exp)
+ @Slot()
def filter_column_changed(self):
self._proxy_model.setFilterKeyColumn(self._filter_column_combo_box.currentIndex())
+ @Slot()
def sort_changed(self):
if self._sort_case_sensitivity_check_box.isChecked():
case_sensitivity = Qt.CaseSensitive
@@ -182,25 +147,25 @@ def create_mail_model(parent):
model.setHeaderData(2, Qt.Horizontal, "Date")
add_mail(model, "Happy New Year!", "Grace K. <grace@software-inc.com>",
- QDateTime(QDate(2006, 12, 31), QTime(17, 3)))
+ QDateTime(QDate(2006, 12, 31), QTime(17, 3)))
add_mail(model, "Radically new concept", "Grace K. <grace@software-inc.com>",
- QDateTime(QDate(2006, 12, 22), QTime(9, 44)))
+ QDateTime(QDate(2006, 12, 22), QTime(9, 44)))
add_mail(model, "Accounts", "pascale@nospam.com",
- QDateTime(QDate(2006, 12, 31), QTime(12, 50)))
+ QDateTime(QDate(2006, 12, 31), QTime(12, 50)))
add_mail(model, "Expenses", "Joe Bloggs <joe@bloggs.com>",
- QDateTime(QDate(2006, 12, 25), QTime(11, 39)))
+ QDateTime(QDate(2006, 12, 25), QTime(11, 39)))
add_mail(model, "Re: Expenses", "Andy <andy@nospam.com>",
- QDateTime(QDate(2007, 1, 2), QTime(16, 5)))
+ QDateTime(QDate(2007, 1, 2), QTime(16, 5)))
add_mail(model, "Re: Accounts", "Joe Bloggs <joe@bloggs.com>",
- QDateTime(QDate(2007, 1, 3), QTime(14, 18)))
+ QDateTime(QDate(2007, 1, 3), QTime(14, 18)))
add_mail(model, "Re: Accounts", "Andy <andy@nospam.com>",
- QDateTime(QDate(2007, 1, 3), QTime(14, 26)))
+ QDateTime(QDate(2007, 1, 3), QTime(14, 26)))
add_mail(model, "Sports", "Linda Smith <linda.smith@nospam.com>",
- QDateTime(QDate(2007, 1, 5), QTime(11, 33)))
+ QDateTime(QDate(2007, 1, 5), QTime(11, 33)))
add_mail(model, "AW: Sports", "Rolf Newschweinstein <rolfn@nospam.com>",
- QDateTime(QDate(2007, 1, 5), QTime(12, 0)))
+ QDateTime(QDate(2007, 1, 5), QTime(12, 0)))
add_mail(model, "RE: Sports", "Petra Schmidt <petras@nospam.com>",
- QDateTime(QDate(2007, 1, 5), QTime(12, 1)))
+ QDateTime(QDate(2007, 1, 5), QTime(12, 1)))
return model
diff --git a/examples/widgets/itemviews/dirview/dirview.py b/examples/widgets/itemviews/dirview/dirview.py
new file mode 100644
index 000000000..d1be6958e
--- /dev/null
+++ b/examples/widgets/itemviews/dirview/dirview.py
@@ -0,0 +1,59 @@
+# Copyright (C) 2020 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from argparse import ArgumentParser, RawTextHelpFormatter
+
+from PySide6.QtWidgets import (QApplication, QFileSystemModel,
+ QFileIconProvider, QScroller, QTreeView)
+from PySide6.QtCore import QDir
+
+"""PySide6 port of the widgets/itemviews/dirview example from Qt v6.x"""
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ name = "Dir View"
+ argument_parser = ArgumentParser(description=name,
+ formatter_class=RawTextHelpFormatter)
+ argument_parser.add_argument("--no-custom", "-c", action="store_true",
+ help="Set QFileSystemModel.DontUseCustomDirectoryIcons")
+ argument_parser.add_argument("--no-watch", "-w", action="store_true",
+ help="Set QFileSystemModel.DontWatch")
+ argument_parser.add_argument("directory",
+ help="The directory to start in.",
+ nargs='?', type=str)
+ options = argument_parser.parse_args()
+ root_path = options.directory
+
+ model = QFileSystemModel()
+ icon_provider = QFileIconProvider()
+ model.setIconProvider(icon_provider)
+ model.setRootPath("")
+ if options.no_custom:
+ model.setOption(QFileSystemModel.DontUseCustomDirectoryIcons)
+ if options.no_watch:
+ model.setOption(QFileSystemModel.DontWatchForChanges)
+ tree = QTreeView()
+ tree.setModel(model)
+ if root_path:
+ root_index = model.index(QDir.cleanPath(root_path))
+ if root_index.isValid():
+ tree.setRootIndex(root_index)
+
+ # Demonstrating look and feel features
+ tree.setAnimated(False)
+ tree.setIndentation(20)
+ tree.setSortingEnabled(True)
+ availableSize = tree.screen().availableGeometry().size()
+ tree.resize(availableSize / 2)
+ tree.setColumnWidth(0, tree.width() / 3)
+
+ # Make it flickable on touchscreens
+ QScroller.grabGesture(tree, QScroller.ScrollerGestureType.TouchGesture)
+
+ tree.setWindowTitle(name)
+ tree.show()
+
+ sys.exit(app.exec())
diff --git a/examples/widgets/itemviews/dirview/dirview.pyproject b/examples/widgets/itemviews/dirview/dirview.pyproject
new file mode 100644
index 000000000..9470083c9
--- /dev/null
+++ b/examples/widgets/itemviews/dirview/dirview.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["dirview.py"]
+}
diff --git a/examples/widgets/itemviews/dirview/doc/dirview.rst b/examples/widgets/itemviews/dirview/doc/dirview.rst
new file mode 100644
index 000000000..7044fdf58
--- /dev/null
+++ b/examples/widgets/itemviews/dirview/doc/dirview.rst
@@ -0,0 +1,5 @@
+Dir View Example
+================
+
+The Dir View example shows a tree view of the local file system. It uses the
+QFileSystemModel class to provide file and directory information.
diff --git a/examples/widgets/itemviews/editabletreemodel/default.txt b/examples/widgets/itemviews/editabletreemodel/default.txt
new file mode 100644
index 000000000..98746548b
--- /dev/null
+++ b/examples/widgets/itemviews/editabletreemodel/default.txt
@@ -0,0 +1,40 @@
+Getting Started How to familiarize yourself with Qt Designer
+ Launching Designer Running the Qt Designer application
+ The User Interface How to interact with Qt Designer
+
+Designing a Component Creating a GUI for your application
+ Creating a Dialog How to create a dialog
+ Composing the Dialog Putting widgets into the dialog example
+ Creating a Layout Arranging widgets on a form
+ Signal and Slot Connections Making widget communicate with each other
+
+Using a Component in Your Application Generating code from forms
+ The Direct Approach Using a form without any adjustments
+ The Single Inheritance Approach Subclassing a form's base class
+ The Multiple Inheritance Approach Subclassing the form itself
+ Automatic Connections Connecting widgets using a naming scheme
+ A Dialog Without Auto-Connect How to connect widgets without a naming scheme
+ A Dialog With Auto-Connect Using automatic connections
+
+Form Editing Mode How to edit a form in Qt Designer
+ Managing Forms Loading and saving forms
+ Editing a Form Basic editing techniques
+ The Property Editor Changing widget properties
+ The Object Inspector Examining the hierarchy of objects on a form
+ Layouts Objects that arrange widgets on a form
+ Applying and Breaking Layouts Managing widgets in layouts
+ Horizontal and Vertical Layouts Standard row and column layouts
+ The Grid Layout Arranging widgets in a matrix
+ Previewing Forms Checking that the design works
+
+Using Containers How to group widgets together
+ General Features Common container features
+ Frames QFrame
+ Group Boxes QGroupBox
+ Stacked Widgets QStackedWidget
+ Tab Widgets QTabWidget
+ Toolbox Widgets QToolBox
+
+Connection Editing Mode Connecting widgets together with signals and slots
+ Connecting Objects Making connections in Qt Designer
+ Editing Connections Changing existing connections
diff --git a/examples/widgets/itemviews/editabletreemodel/doc/editabletreemodel.png b/examples/widgets/itemviews/editabletreemodel/doc/editabletreemodel.png
new file mode 100644
index 000000000..b50c792aa
--- /dev/null
+++ b/examples/widgets/itemviews/editabletreemodel/doc/editabletreemodel.png
Binary files differ
diff --git a/examples/widgets/itemviews/editabletreemodel/doc/editabletreemodel.rst b/examples/widgets/itemviews/editabletreemodel/doc/editabletreemodel.rst
new file mode 100644
index 000000000..c936972a0
--- /dev/null
+++ b/examples/widgets/itemviews/editabletreemodel/doc/editabletreemodel.rst
@@ -0,0 +1,10 @@
+Editable Tree Model Example
+===========================
+
+A Python application that demonstrates the analogous example in C++
+`Editable Tree Model Example <https://doc.qt.io/qt-6/qtwidgets-itemviews-editabletreemodel-example.html>`_
+
+.. image:: editabletreemodel.png
+ :width: 611
+ :alt: editabletreemodel screenshot
+
diff --git a/examples/widgets/itemviews/editabletreemodel/editabletreemodel.pyproject b/examples/widgets/itemviews/editabletreemodel/editabletreemodel.pyproject
new file mode 100644
index 000000000..1e67c727b
--- /dev/null
+++ b/examples/widgets/itemviews/editabletreemodel/editabletreemodel.pyproject
@@ -0,0 +1,7 @@
+{
+ "files": ["main.py",
+ "mainwindow.py",
+ "treeitem.py",
+ "treemodel.py",
+ "default.txt"]
+}
diff --git a/examples/widgets/itemviews/editabletreemodel/main.py b/examples/widgets/itemviews/editabletreemodel/main.py
new file mode 100644
index 000000000..491baa68d
--- /dev/null
+++ b/examples/widgets/itemviews/editabletreemodel/main.py
@@ -0,0 +1,14 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+import sys
+from PySide6.QtWidgets import QApplication
+from mainwindow import MainWindow
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ window = MainWindow()
+ window.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/itemviews/editabletreemodel/mainwindow.py b/examples/widgets/itemviews/editabletreemodel/mainwindow.py
new file mode 100644
index 000000000..1489bf28b
--- /dev/null
+++ b/examples/widgets/itemviews/editabletreemodel/mainwindow.py
@@ -0,0 +1,163 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from pathlib import Path
+
+from PySide6.QtCore import (QAbstractItemModel, QItemSelectionModel,
+ QModelIndex, Qt, Slot)
+from PySide6.QtWidgets import (QAbstractItemView, QMainWindow, QTreeView,
+ QWidget)
+from PySide6.QtTest import QAbstractItemModelTester
+
+from treemodel import TreeModel
+
+
+class MainWindow(QMainWindow):
+ def __init__(self, parent: QWidget = None):
+ super().__init__(parent)
+ self.resize(573, 468)
+
+ self.view = QTreeView()
+ self.view.setAlternatingRowColors(True)
+ self.view.setSelectionBehavior(QAbstractItemView.SelectItems)
+ self.view.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel)
+ self.view.setAnimated(False)
+ self.view.setAllColumnsShowFocus(True)
+ self.setCentralWidget(self.view)
+
+ menubar = self.menuBar()
+ file_menu = menubar.addMenu("&File")
+ self.exit_action = file_menu.addAction("E&xit")
+ self.exit_action.setShortcut("Ctrl+Q")
+ self.exit_action.triggered.connect(self.close)
+
+ actions_menu = menubar.addMenu("&Actions")
+ actions_menu.triggered.connect(self.update_actions)
+ self.insert_row_action = actions_menu.addAction("Insert Row")
+ self.insert_row_action.setShortcut("Ctrl+I, R")
+ self.insert_row_action.triggered.connect(self.insert_row)
+ self.insert_column_action = actions_menu.addAction("Insert Column")
+ self.insert_column_action.setShortcut("Ctrl+I, C")
+ self.insert_column_action.triggered.connect(self.insert_column)
+ actions_menu.addSeparator()
+ self.remove_row_action = actions_menu.addAction("Remove Row")
+ self.remove_row_action.setShortcut("Ctrl+R, R")
+ self.remove_row_action.triggered.connect(self.remove_row)
+ self.remove_column_action = actions_menu.addAction("Remove Column")
+ self.remove_column_action.setShortcut("Ctrl+R, C")
+ self.remove_column_action.triggered.connect(self.remove_column)
+ actions_menu.addSeparator()
+ self.insert_child_action = actions_menu.addAction("Insert Child")
+ self.insert_child_action.setShortcut("Ctrl+N")
+ self.insert_child_action.triggered.connect(self.insert_child)
+ help_menu = menubar.addMenu("&Help")
+ about_qt_action = help_menu.addAction("About Qt", qApp.aboutQt) # noqa: F821
+ about_qt_action.setShortcut("F1")
+
+ self.setWindowTitle("Editable Tree Model")
+
+ headers = ["Title", "Description"]
+
+ file = Path(__file__).parent / "default.txt"
+ self.model = TreeModel(headers, file.read_text(), self)
+
+ if "-t" in sys.argv:
+ QAbstractItemModelTester(self.model, self)
+ self.view.setModel(self.model)
+ self.view.expandAll()
+
+ for column in range(self.model.columnCount()):
+ self.view.resizeColumnToContents(column)
+
+ selection_model = self.view.selectionModel()
+ selection_model.selectionChanged.connect(self.update_actions)
+
+ self.update_actions()
+
+ @Slot()
+ def insert_child(self) -> None:
+ selection_model = self.view.selectionModel()
+ index: QModelIndex = selection_model.currentIndex()
+ model: QAbstractItemModel = self.view.model()
+
+ if model.columnCount(index) == 0:
+ if not model.insertColumn(0, index):
+ return
+
+ if not model.insertRow(0, index):
+ return
+
+ for column in range(model.columnCount(index)):
+ child: QModelIndex = model.index(0, column, index)
+ model.setData(child, "[No data]", Qt.EditRole)
+ if not model.headerData(column, Qt.Horizontal):
+ model.setHeaderData(column, Qt.Horizontal, "[No header]",
+ Qt.EditRole)
+
+ selection_model.setCurrentIndex(
+ model.index(0, 0, index), QItemSelectionModel.ClearAndSelect
+ )
+ self.update_actions()
+
+ @Slot()
+ def insert_column(self) -> None:
+ model: QAbstractItemModel = self.view.model()
+ column: int = self.view.selectionModel().currentIndex().column()
+
+ changed: bool = model.insertColumn(column + 1)
+ if changed:
+ model.setHeaderData(column + 1, Qt.Horizontal, "[No header]",
+ Qt.EditRole)
+
+ self.update_actions()
+
+ @Slot()
+ def insert_row(self) -> None:
+ index: QModelIndex = self.view.selectionModel().currentIndex()
+ model: QAbstractItemModel = self.view.model()
+ parent: QModelIndex = index.parent()
+
+ if not model.insertRow(index.row() + 1, parent):
+ return
+
+ self.update_actions()
+
+ for column in range(model.columnCount(parent)):
+ child: QModelIndex = model.index(index.row() + 1, column, parent)
+ model.setData(child, "[No data]", Qt.EditRole)
+
+ @Slot()
+ def remove_column(self) -> None:
+ model: QAbstractItemModel = self.view.model()
+ column: int = self.view.selectionModel().currentIndex().column()
+
+ if model.removeColumn(column):
+ self.update_actions()
+
+ @Slot()
+ def remove_row(self) -> None:
+ index: QModelIndex = self.view.selectionModel().currentIndex()
+ model: QAbstractItemModel = self.view.model()
+
+ if model.removeRow(index.row(), index.parent()):
+ self.update_actions()
+
+ @Slot()
+ def update_actions(self) -> None:
+ selection_model = self.view.selectionModel()
+ has_selection: bool = not selection_model.selection().isEmpty()
+ self.remove_row_action.setEnabled(has_selection)
+ self.remove_column_action.setEnabled(has_selection)
+
+ current_index = selection_model.currentIndex()
+ has_current: bool = current_index.isValid()
+ self.insert_row_action.setEnabled(has_current)
+ self.insert_column_action.setEnabled(has_current)
+
+ if has_current:
+ self.view.closePersistentEditor(current_index)
+ msg = f"Position: ({current_index.row()},{current_index.column()})"
+ if not current_index.parent().isValid():
+ msg += " in top level"
+ self.statusBar().showMessage(msg)
diff --git a/examples/widgets/itemviews/editabletreemodel/treeitem.py b/examples/widgets/itemviews/editabletreemodel/treeitem.py
new file mode 100644
index 000000000..1a25b0774
--- /dev/null
+++ b/examples/widgets/itemviews/editabletreemodel/treeitem.py
@@ -0,0 +1,94 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+class TreeItem:
+ def __init__(self, data: list, parent: 'TreeItem' = None):
+ self.item_data = data
+ self.parent_item = parent
+ self.child_items = []
+
+ def child(self, number: int) -> 'TreeItem':
+ if number < 0 or number >= len(self.child_items):
+ return None
+ return self.child_items[number]
+
+ def last_child(self):
+ return self.child_items[-1] if self.child_items else None
+
+ def child_count(self) -> int:
+ return len(self.child_items)
+
+ def child_number(self) -> int:
+ if self.parent_item:
+ return self.parent_item.child_items.index(self)
+ return 0
+
+ def column_count(self) -> int:
+ return len(self.item_data)
+
+ def data(self, column: int):
+ if column < 0 or column >= len(self.item_data):
+ return None
+ return self.item_data[column]
+
+ def insert_children(self, position: int, count: int, columns: int) -> bool:
+ if position < 0 or position > len(self.child_items):
+ return False
+
+ for row in range(count):
+ data = [None] * columns
+ item = TreeItem(data.copy(), self)
+ self.child_items.insert(position, item)
+
+ return True
+
+ def insert_columns(self, position: int, columns: int) -> bool:
+ if position < 0 or position > len(self.item_data):
+ return False
+
+ for column in range(columns):
+ self.item_data.insert(position, None)
+
+ for child in self.child_items:
+ child.insert_columns(position, columns)
+
+ return True
+
+ def parent(self):
+ return self.parent_item
+
+ def remove_children(self, position: int, count: int) -> bool:
+ if position < 0 or position + count > len(self.child_items):
+ return False
+
+ for row in range(count):
+ self.child_items.pop(position)
+
+ return True
+
+ def remove_columns(self, position: int, columns: int) -> bool:
+ if position < 0 or position + columns > len(self.item_data):
+ return False
+
+ for column in range(columns):
+ self.item_data.pop(position)
+
+ for child in self.child_items:
+ child.remove_columns(position, columns)
+
+ return True
+
+ def set_data(self, column: int, value):
+ if column < 0 or column >= len(self.item_data):
+ return False
+
+ self.item_data[column] = value
+ return True
+
+ def __repr__(self) -> str:
+ result = f"<treeitem.TreeItem at 0x{id(self):x}"
+ for d in self.item_data:
+ result += f' "{d}"' if d else " <None>"
+ result += f", {len(self.child_items)} children>"
+ return result
diff --git a/examples/widgets/itemviews/editabletreemodel/treemodel.py b/examples/widgets/itemviews/editabletreemodel/treemodel.py
new file mode 100644
index 000000000..a58572fca
--- /dev/null
+++ b/examples/widgets/itemviews/editabletreemodel/treemodel.py
@@ -0,0 +1,199 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+
+from PySide6.QtCore import QModelIndex, Qt, QAbstractItemModel
+from treeitem import TreeItem
+
+
+class TreeModel(QAbstractItemModel):
+
+ def __init__(self, headers: list, data: str, parent=None):
+ super().__init__(parent)
+
+ self.root_data = headers
+ self.root_item = TreeItem(self.root_data.copy())
+ self.setup_model_data(data.split("\n"), self.root_item)
+
+ def columnCount(self, parent: QModelIndex = None) -> int:
+ return self.root_item.column_count()
+
+ def data(self, index: QModelIndex, role: int = None):
+ if not index.isValid():
+ return None
+
+ if role != Qt.DisplayRole and role != Qt.EditRole:
+ return None
+
+ item: TreeItem = self.get_item(index)
+
+ return item.data(index.column())
+
+ def flags(self, index: QModelIndex) -> Qt.ItemFlags:
+ if not index.isValid():
+ return Qt.NoItemFlags
+
+ return Qt.ItemIsEditable | QAbstractItemModel.flags(self, index)
+
+ def get_item(self, index: QModelIndex = QModelIndex()) -> TreeItem:
+ if index.isValid():
+ item: TreeItem = index.internalPointer()
+ if item:
+ return item
+
+ return self.root_item
+
+ def headerData(self, section: int, orientation: Qt.Orientation,
+ role: int = Qt.DisplayRole):
+ if orientation == Qt.Horizontal and role == Qt.DisplayRole:
+ return self.root_item.data(section)
+
+ return None
+
+ def index(self, row: int, column: int, parent: QModelIndex = QModelIndex()) -> QModelIndex:
+ if parent.isValid() and parent.column() != 0:
+ return QModelIndex()
+
+ parent_item: TreeItem = self.get_item(parent)
+ if not parent_item:
+ return QModelIndex()
+
+ child_item: TreeItem = parent_item.child(row)
+ if child_item:
+ return self.createIndex(row, column, child_item)
+ return QModelIndex()
+
+ def insertColumns(self, position: int, columns: int,
+ parent: QModelIndex = QModelIndex()) -> bool:
+ self.beginInsertColumns(parent, position, position + columns - 1)
+ success: bool = self.root_item.insert_columns(position, columns)
+ self.endInsertColumns()
+
+ return success
+
+ def insertRows(self, position: int, rows: int,
+ parent: QModelIndex = QModelIndex()) -> bool:
+ parent_item: TreeItem = self.get_item(parent)
+ if not parent_item:
+ return False
+
+ self.beginInsertRows(parent, position, position + rows - 1)
+ column_count = self.root_item.column_count()
+ success: bool = parent_item.insert_children(position, rows, column_count)
+ self.endInsertRows()
+
+ return success
+
+ def parent(self, index: QModelIndex = QModelIndex()) -> QModelIndex:
+ if not index.isValid():
+ return QModelIndex()
+
+ child_item: TreeItem = self.get_item(index)
+ if child_item:
+ parent_item: TreeItem = child_item.parent()
+ else:
+ parent_item = None
+
+ if parent_item == self.root_item or not parent_item:
+ return QModelIndex()
+
+ return self.createIndex(parent_item.child_number(), 0, parent_item)
+
+ def removeColumns(self, position: int, columns: int,
+ parent: QModelIndex = QModelIndex()) -> bool:
+ self.beginRemoveColumns(parent, position, position + columns - 1)
+ success: bool = self.root_item.remove_columns(position, columns)
+ self.endRemoveColumns()
+
+ if self.root_item.column_count() == 0:
+ self.removeRows(0, self.rowCount())
+
+ return success
+
+ def removeRows(self, position: int, rows: int,
+ parent: QModelIndex = QModelIndex()) -> bool:
+ parent_item: TreeItem = self.get_item(parent)
+ if not parent_item:
+ return False
+
+ self.beginRemoveRows(parent, position, position + rows - 1)
+ success: bool = parent_item.remove_children(position, rows)
+ self.endRemoveRows()
+
+ return success
+
+ def rowCount(self, parent: QModelIndex = QModelIndex()) -> int:
+ if parent.isValid() and parent.column() > 0:
+ return 0
+
+ parent_item: TreeItem = self.get_item(parent)
+ if not parent_item:
+ return 0
+ return parent_item.child_count()
+
+ def setData(self, index: QModelIndex, value, role: int) -> bool:
+ if role != Qt.EditRole:
+ return False
+
+ item: TreeItem = self.get_item(index)
+ result: bool = item.set_data(index.column(), value)
+
+ if result:
+ self.dataChanged.emit(index, index, [Qt.DisplayRole, Qt.EditRole])
+
+ return result
+
+ def setHeaderData(self, section: int, orientation: Qt.Orientation, value,
+ role: int = None) -> bool:
+ if role != Qt.EditRole or orientation != Qt.Horizontal:
+ return False
+
+ result: bool = self.root_item.set_data(section, value)
+
+ if result:
+ self.headerDataChanged.emit(orientation, section, section)
+
+ return result
+
+ def setup_model_data(self, lines: list, parent: TreeItem):
+ parents = [parent]
+ indentations = [0]
+
+ for line in lines:
+ line = line.rstrip()
+ if line and "\t" in line:
+
+ position = 0
+ while position < len(line):
+ if line[position] != " ":
+ break
+ position += 1
+
+ column_data = line[position:].split("\t")
+ column_data = [string for string in column_data if string]
+
+ if position > indentations[-1]:
+ if parents[-1].child_count() > 0:
+ parents.append(parents[-1].last_child())
+ indentations.append(position)
+ else:
+ while position < indentations[-1] and parents:
+ parents.pop()
+ indentations.pop()
+
+ parent: TreeItem = parents[-1]
+ col_count = self.root_item.column_count()
+ parent.insert_children(parent.child_count(), 1, col_count)
+
+ for column in range(len(column_data)):
+ child = parent.last_child()
+ child.set_data(column, column_data[column])
+
+ def _repr_recursion(self, item: TreeItem, indent: int = 0) -> str:
+ result = " " * indent + repr(item) + "\n"
+ for child in item.child_items:
+ result += self._repr_recursion(child, indent + 2)
+ return result
+
+ def __repr__(self) -> str:
+ return self._repr_recursion(self.root_item)
diff --git a/examples/widgets/itemviews/fetchmore/fetchmore.py b/examples/widgets/itemviews/fetchmore/fetchmore.py
index 92a2b97d4..5150250e0 100644
--- a/examples/widgets/itemviews/fetchmore/fetchmore.py
+++ b/examples/widgets/itemviews/fetchmore/fetchmore.py
@@ -1,45 +1,7 @@
-
-#############################################################################
-##
-## Copyright (C) 2009 Darryl Wallace, 2009 <wallacdj@gmail.com>
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2009 Darryl Wallace, 2009 <wallacdj@gmail.com>
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the itemviews/fetchmore/fetchmore example from Qt v6.x
@@ -49,9 +11,8 @@ down the list to see the model being populated on demand.
import sys
-from PySide6.QtCore import (QAbstractListModel, QDir, QFileInfo, QLibraryInfo,
+from PySide6.QtCore import (QAbstractListModel, QDir,
QModelIndex, Qt, Signal, Slot)
-from PySide6.QtGui import QPalette
from PySide6.QtWidgets import (QApplication, QFileIconProvider, QListView,
QPlainTextEdit, QSizePolicy, QVBoxLayout,
QWidget)
@@ -88,7 +49,7 @@ class FileListModel(QAbstractListModel):
if role == Qt.BackgroundRole:
batch = row // BATCH_SIZE
- palette = qApp.palette()
+ palette = qApp.palette() # noqa: F821
return palette.base() if batch % 2 == 0 else palette.alternateBase()
if role == Qt.DecorationRole:
@@ -151,7 +112,7 @@ class Window(QWidget):
self.setWindowTitle("Fetch More Example")
- @Slot(str, int, int)
+ @Slot(str, int, int, int)
def update_log(self, path, start, number, total):
native_path = QDir.toNativeSeparators(path)
last = start + number - 1
diff --git a/examples/widgets/itemviews/jsonmodel/jsonmodel.py b/examples/widgets/itemviews/jsonmodel/jsonmodel.py
index 432bc4b33..6e614c77f 100644
--- a/examples/widgets/itemviews/jsonmodel/jsonmodel.py
+++ b/examples/widgets/itemviews/jsonmodel/jsonmodel.py
@@ -1,46 +1,9 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import json
import sys
-from typing import Any, Iterable, List, Dict, Union
+from typing import Any, List, Dict, Union
from PySide6.QtWidgets import QTreeView, QApplication, QHeaderView
from PySide6.QtCore import QAbstractItemModel, QModelIndex, QObject, Qt, QFileInfo
@@ -219,10 +182,7 @@ class JsonModel(QAbstractItemModel):
item = index.internalPointer()
item.value = str(value)
- if __binding__ in ("PySide", "PyQt4"):
- self.dataChanged.emit(index, index)
- else:
- self.dataChanged.emit(index, index, [Qt.EditRole])
+ self.dataChanged.emit(index, index, [Qt.EditRole])
return True
diff --git a/examples/widgets/itemviews/spinboxdelegate/doc/spinboxdelegate.rst b/examples/widgets/itemviews/spinboxdelegate/doc/spinboxdelegate.rst
new file mode 100644
index 000000000..12e505207
--- /dev/null
+++ b/examples/widgets/itemviews/spinboxdelegate/doc/spinboxdelegate.rst
@@ -0,0 +1,5 @@
+SpinBox Delegate Example
+=========================
+
+A simple example that shows how a view can use a custom delegate to edit
+data obtained from a model.
diff --git a/examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.py b/examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.py
new file mode 100644
index 000000000..577f0faa5
--- /dev/null
+++ b/examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.py
@@ -0,0 +1,79 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtWidgets import (QApplication, QStyledItemDelegate, QSpinBox,
+ QTableView)
+from PySide6.QtGui import QStandardItemModel, Qt
+from PySide6.QtCore import QModelIndex
+
+"""PySide6 port of the widgets/itemviews/spinboxdelegate from Qt v6.x"""
+
+
+#! [0]
+class SpinBoxDelegate(QStyledItemDelegate):
+ """A delegate that allows the user to change integer values from the model
+ using a spin box widget. """
+
+#! [0]
+ def __init__(self, parent=None):
+ super().__init__(parent)
+#! [0]
+
+#! [1]
+ def createEditor(self, parent, option, index):
+ editor = QSpinBox(parent)
+ editor.setFrame(False)
+ editor.setMinimum(0)
+ editor.setMaximum(100)
+ return editor
+#! [1]
+
+#! [2]
+ def setEditorData(self, editor, index):
+ value = index.model().data(index, Qt.EditRole)
+ editor.setValue(value)
+#! [2]
+
+#! [3]
+ def setModelData(self, editor, model, index):
+ editor.interpretText()
+ value = editor.value()
+ model.setData(index, value, Qt.EditRole)
+#! [3]
+
+#! [4]
+ def updateEditorGeometry(self, editor, option, index):
+ editor.setGeometry(option.rect)
+#! [4]
+
+
+#! [main0]
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ model = QStandardItemModel(4, 2)
+ tableView = QTableView()
+ tableView.setModel(model)
+
+ delegate = SpinBoxDelegate()
+ tableView.setItemDelegate(delegate)
+#! [main0]
+
+ tableView.horizontalHeader().setStretchLastSection(True)
+
+#! [main1]
+ for row in range(4):
+ for column in range(2):
+ index = model.index(row, column, QModelIndex())
+ value = (row + 1) * (column + 1)
+ model.setData(index, value)
+#! [main1] //# [main2]
+#! [main2]
+
+#! [main3]
+ tableView.setWindowTitle("Spin Box Delegate")
+ tableView.show()
+ sys.exit(app.exec())
+#! [main3]
diff --git a/examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.pyproject b/examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.pyproject
new file mode 100644
index 000000000..70616905c
--- /dev/null
+++ b/examples/widgets/itemviews/spinboxdelegate/spinboxdelegate.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["spinboxdelegate.py"]
+}
diff --git a/examples/widgets/itemviews/spreadsheet/doc/spreadsheet.png b/examples/widgets/itemviews/spreadsheet/doc/spreadsheet.png
new file mode 100644
index 000000000..ae7dde24b
--- /dev/null
+++ b/examples/widgets/itemviews/spreadsheet/doc/spreadsheet.png
Binary files differ
diff --git a/examples/widgets/itemviews/spreadsheet/doc/spreadsheet.rst b/examples/widgets/itemviews/spreadsheet/doc/spreadsheet.rst
new file mode 100644
index 000000000..c0839b232
--- /dev/null
+++ b/examples/widgets/itemviews/spreadsheet/doc/spreadsheet.rst
@@ -0,0 +1,10 @@
+Spreadsheet example
+===================
+
+The Spreadsheet example shows how a table view can be used to create a simple
+spreadsheet application. Custom delegates are used to render different types of
+data in distinctive colors.
+
+.. image:: spreadsheet.png
+ :width: 400
+ :alt: Spreadsheet screenshot
diff --git a/examples/widgets/itemviews/spreadsheet/main.py b/examples/widgets/itemviews/spreadsheet/main.py
new file mode 100644
index 000000000..0ecc5ec23
--- /dev/null
+++ b/examples/widgets/itemviews/spreadsheet/main.py
@@ -0,0 +1,19 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtGui import QPixmap
+from PySide6.QtWidgets import QApplication, QLayout
+
+from spreadsheet import SpreadSheet
+
+if __name__ == "__main__":
+ app = QApplication()
+
+ sheet = SpreadSheet(10, 6)
+ sheet.setWindowIcon(QPixmap(":/images/interview.png"))
+ sheet.show()
+ sheet.layout().setSizeConstraint(QLayout.SetFixedSize)
+
+ sys.exit(app.exec())
diff --git a/examples/widgets/itemviews/spreadsheet/spreadsheet.py b/examples/widgets/itemviews/spreadsheet/spreadsheet.py
new file mode 100644
index 000000000..82ebe5ebb
--- /dev/null
+++ b/examples/widgets/itemviews/spreadsheet/spreadsheet.py
@@ -0,0 +1,544 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import QPoint, Qt, QCoreApplication, Slot
+from PySide6.QtGui import QAction, QBrush, QPixmap, QColor, QPainter
+from PySide6.QtWidgets import (QColorDialog, QComboBox, QDialog, QFontDialog,
+ QGroupBox, QHBoxLayout, QMainWindow, QLabel,
+ QLineEdit, QMessageBox, QPushButton, QToolBar,
+ QTableWidgetItem, QTableWidget, QVBoxLayout, QWidget)
+
+from spreadsheetdelegate import SpreadSheetDelegate
+from spreadsheetitem import SpreadSheetItem
+
+from typing import Optional
+from numbers import Number
+
+
+class SpreadSheet(QMainWindow):
+ def __init__(self, rows: Number, cols: Number, parent: Optional[QWidget] = None) -> None:
+ super().__init__(parent)
+
+ self._tool_bar = QToolBar(self)
+ self._color_action = QAction()
+ self._font_action = QAction()
+ self._first_separator = QAction()
+ self._cell_sum_action = QAction()
+ self._cell_add_action = QAction()
+ self._cell_sub_action = QAction()
+ self._cell_mul_action = QAction()
+ self._cell_div_action = QAction()
+ self._second_separator = QAction()
+ self._clear_action = QAction()
+ self._about_spreadsheet = QAction()
+ self._exit_action = QAction()
+
+ # self._print_action = QAction()
+
+ self._cell_label = QLabel(self._tool_bar)
+ self._table = QTableWidget(rows, cols, self)
+ self._formula_input = QLineEdit(self)
+
+ self.addToolBar(self._tool_bar)
+
+ self._cell_label.setMinimumSize(80, 0)
+
+ self._tool_bar.addWidget(self._cell_label)
+ self._tool_bar.addWidget(self._formula_input)
+
+ self._table.setSizeAdjustPolicy(QTableWidget.SizeAdjustPolicy.AdjustToContents)
+ for c in range(cols):
+ character = chr(ord('A') + c)
+ self._table.setHorizontalHeaderItem(c, QTableWidgetItem(character))
+
+ self._table.setItemPrototype(self._table.item(rows - 1, cols - 1))
+ self._table.setItemDelegate(SpreadSheetDelegate())
+
+ self.create_actions()
+ self.update_color(None)
+ self.setup_menu_bar()
+ self.setup_contents()
+ self.setup_context_menu()
+ self.setCentralWidget(self._table)
+
+ self.statusBar()
+ self._table.currentItemChanged.connect(self.update_status)
+ self._table.currentItemChanged.connect(self.update_color)
+ self._table.currentItemChanged.connect(self.update_line_edit)
+ self._table.itemChanged.connect(self.update_status)
+ self._formula_input.returnPressed.connect(self.return_pressed)
+ self._table.itemChanged.connect(self.update_line_edit)
+
+ self.setWindowTitle("Spreadsheet")
+
+ def create_actions(self) -> None:
+ self._cell_sum_action = QAction("Sum", self)
+ self._cell_sum_action.triggered.connect(self.action_sum)
+
+ self._cell_add_action = QAction("&Add", self)
+ self._cell_add_action.setShortcut(Qt.CTRL | Qt.Key_Plus)
+ self._cell_add_action.triggered.connect(self.action_add)
+
+ self._cell_sub_action = QAction("&Subtract", self)
+ self._cell_sub_action.setShortcut(Qt.CTRL | Qt.Key_Minus)
+ self._cell_sub_action.triggered.connect(self.action_subtract)
+
+ self._cell_mul_action = QAction("&Multiply", self)
+ self._cell_mul_action.setShortcut(Qt.CTRL | Qt.Key_multiply)
+ self._cell_mul_action.triggered.connect(self.action_multiply)
+
+ self._cell_div_action = QAction("&Divide", self)
+ self._cell_div_action.setShortcut(Qt.CTRL | Qt.Key_division)
+ self._cell_div_action.triggered.connect(self.action_divide)
+
+ self._font_action = QAction("Font...", self)
+ self._font_action.setShortcut(Qt.CTRL | Qt.Key_F)
+ self._font_action.triggered.connect(self.select_font)
+
+ self._color_action = QAction(QPixmap(16, 16), "Background &Color...", self)
+ self._color_action.triggered.connect(self.select_color)
+
+ self._clear_action = QAction("Clear", self)
+ self._clear_action.setShortcut(Qt.Key_Delete)
+ self._clear_action.triggered.connect(self.clear)
+
+ self._about_spreadsheet = QAction("About Spreadsheet", self)
+ self._about_spreadsheet.triggered.connect(self.show_about)
+
+ self._exit_action = QAction("E&xit", self)
+ self._exit_action.triggered.connect(QCoreApplication.quit)
+
+ self._first_separator = QAction(self)
+ self._first_separator.setSeparator(True)
+
+ self._second_separator = QAction(self)
+ self._second_separator.setSeparator(True)
+
+ def setup_menu_bar(self) -> None:
+ file_menu = self.menuBar().addMenu("&File")
+ # file_menu.addAction(self._print_action)
+ file_menu.addAction(self._exit_action)
+
+ cell_menu = self.menuBar().addMenu("&Cell")
+ cell_menu.addAction(self._cell_add_action)
+ cell_menu.addAction(self._cell_sub_action)
+ cell_menu.addAction(self._cell_mul_action)
+ cell_menu.addAction(self._cell_div_action)
+ cell_menu.addAction(self._cell_sum_action)
+ cell_menu.addSeparator()
+ cell_menu.addAction(self._color_action)
+ cell_menu.addAction(self._font_action)
+
+ self.menuBar().addSeparator()
+
+ about_menu = self.menuBar().addMenu("&Help")
+ about_menu.addAction(self._about_spreadsheet)
+
+ @Slot(QTableWidgetItem)
+ def update_status(self, item: QTableWidgetItem) -> None:
+ if item and item == self._table.currentItem():
+ self.statusBar().showMessage(str(item.data(Qt.StatusTipRole)), 1000)
+ self._cell_label.setText(
+ "Cell: ({})".format(
+ SpreadSheetItem.encode_pos(self._table.row(item), self._table.column(item))
+ )
+ )
+
+ @Slot(QTableWidgetItem)
+ def update_color(self, item: QTableWidgetItem) -> None:
+ pix = QPixmap(16, 16)
+ col = QColor()
+ if item:
+ col = item.background().color()
+ if not col.isValid():
+ col = self.palette().base().color()
+
+ pt = QPainter(pix)
+ pt.fillRect(0, 0, 16, 16, col)
+
+ lighter = col.lighter()
+ pt.setPen(lighter)
+ light_frame = [QPoint(0, 15), QPoint(0, 0), QPoint(15, 0)]
+ pt.drawPolyline(light_frame)
+
+ pt.setPen(col.darker())
+ darkFrame = [QPoint(1, 15), QPoint(15, 15), QPoint(15, 1)]
+ pt.drawPolyline(darkFrame)
+
+ pt.end()
+
+ self._color_action.setIcon(pix)
+
+ @Slot(QTableWidgetItem)
+ def update_line_edit(self, item: QTableWidgetItem) -> None:
+ if item != self._table.currentItem():
+ return
+ if item:
+ self._formula_input.setText(str(item.data(Qt.EditRole)))
+ else:
+ self._formula_input.clear()
+
+ @Slot()
+ def return_pressed(self) -> None:
+ text = self._formula_input.text()
+ row = self._table.currentRow()
+ col = self._table.currentColumn()
+ item = self._table.item(row, col)
+ if not item:
+ self._table.setItem(row, col, SpreadSheetItem(text))
+ else:
+ item.setData(Qt.EditRole, text)
+ self._table.viewport().update()
+
+ @Slot()
+ def select_color(self) -> None:
+ item = self._table.currentItem()
+ col = item.background().color() if item else self._table.palette().base().color()
+ col = QColorDialog.getColor(col, self)
+ if not col.isValid():
+ return
+
+ selected = self._table.selectedItems()
+ if not selected:
+ return
+
+ for i in selected:
+ if i:
+ i.setBackground(col)
+
+ self.update_color(self._table.currentItem())
+
+ @Slot()
+ def select_font(self) -> None:
+ selected = self._table.selectedItems()
+ if not selected:
+ return
+
+ ok = False
+ fnt = QFontDialog.getFont(ok, self.font(), self)
+
+ if not ok:
+ return
+ for i in selected:
+ if i:
+ i.setFont(fnt)
+
+ def run_input_dialog(self, title: str, c1Text: str, c2Text: str, opText: str,
+ outText: str, cell1: str, cell2: str, outCell: str) -> bool:
+ rows, cols = [], []
+ for c in range(self._table.columnCount()):
+ cols.append(chr(ord('A') + c))
+ for r in range(self._table.rowCount()):
+ rows.append(str(1 + r))
+
+ add_dialog = QDialog(self)
+ add_dialog.setWindowTitle(title)
+
+ group = QGroupBox(title, add_dialog)
+ group.setMinimumSize(250, 100)
+
+ cell1_label = QLabel(c1Text, group)
+ cell1_row_input = QComboBox(group)
+ c1_row, c1_col = SpreadSheetItem.decode_pos(cell1)
+ cell1_row_input.addItems(rows)
+ cell1_row_input.setCurrentIndex(c1_row)
+
+ cell1_col_input = QComboBox(group)
+ cell1_col_input.addItems(cols)
+ cell1_col_input.setCurrentIndex(c1_col)
+
+ operator_label = QLabel(opText, group)
+ operator_label.setAlignment(Qt.AlignHCenter)
+
+ cell2_label = QLabel(c2Text, group)
+ cell2_row_input = QComboBox(group)
+ c2_row, c2_col = SpreadSheetItem.decode_pos(cell2)
+ cell2_row_input.addItems(rows)
+ cell2_row_input.setCurrentIndex(c2_row)
+ cell2_col_input = QComboBox(group)
+ cell2_col_input.addItems(cols)
+ cell2_col_input.setCurrentIndex(c2_col)
+
+ equals_label = QLabel("=", group)
+ equals_label.setAlignment(Qt.AlignHCenter)
+
+ out_label = QLabel(outText, group)
+ out_row_input = QComboBox(group)
+ out_row, out_col = SpreadSheetItem.decode_pos(outCell)
+ out_row_input.addItems(rows)
+ out_row_input.setCurrentIndex(out_row)
+ out_col_input = QComboBox(group)
+ out_col_input.addItems(cols)
+ out_col_input.setCurrentIndex(out_col)
+
+ cancel_button = QPushButton("Cancel", add_dialog)
+ cancel_button.clicked.connect(add_dialog.reject)
+
+ ok_button = QPushButton("OK", add_dialog)
+ ok_button.setDefault(True)
+ ok_button.clicked.connect(add_dialog.accept)
+
+ buttons_layout = QHBoxLayout()
+ buttons_layout.addStretch(1)
+ buttons_layout.addWidget(ok_button)
+ buttons_layout.addSpacing(10)
+ buttons_layout.addWidget(cancel_button)
+
+ dialog_layout = QVBoxLayout(add_dialog)
+ dialog_layout.addWidget(group)
+ dialog_layout.addStretch(1)
+ dialog_layout.addItem(buttons_layout)
+
+ cell1_layout = QHBoxLayout()
+ cell1_layout.addWidget(cell1_label)
+ cell1_layout.addSpacing(10)
+ cell1_layout.addWidget(cell1_col_input)
+ cell1_layout.addSpacing(10)
+ cell1_layout.addWidget(cell1_row_input)
+
+ cell2_layout = QHBoxLayout()
+ cell2_layout.addWidget(cell2_label)
+ cell2_layout.addSpacing(10)
+ cell2_layout.addWidget(cell2_col_input)
+ cell2_layout.addSpacing(10)
+ cell2_layout.addWidget(cell2_row_input)
+
+ out_layout = QHBoxLayout()
+ out_layout.addWidget(out_label)
+ out_layout.addSpacing(10)
+ out_layout.addWidget(out_col_input)
+ out_layout.addSpacing(10)
+ out_layout.addWidget(out_row_input)
+
+ v_layout = QVBoxLayout(group)
+ v_layout.addItem(cell1_layout)
+ v_layout.addWidget(operator_label)
+ v_layout.addItem(cell2_layout)
+ v_layout.addWidget(equals_label)
+ v_layout.addStretch(1)
+ v_layout.addItem(out_layout)
+
+ if add_dialog.exec():
+ cell1 = cell1_col_input.currentText() + cell1_row_input.currentText()
+ cell2 = cell2_col_input.currentText() + cell2_row_input.currentText()
+ outCell = out_col_input.currentText() + out_row_input.currentText()
+ return True
+
+ return False
+
+ @Slot()
+ def action_sum(self) -> None:
+ row_first = row_last = row_cur = 0
+ col_first = col_last = col_cur = 0
+
+ selected = self._table.selectedItems()
+
+ if selected is not None:
+ first = selected[0]
+ last = selected[-1]
+ row_first = self._table.row(first)
+ row_last = self._table.row(last)
+ col_first = self._table.column(first)
+ col_last = self._table.column(last)
+
+ current = self._table.currentItem()
+
+ if current:
+ row_cur = self._table.row(current)
+ col_cur = self._table.column(current)
+
+ cell1 = SpreadSheetItem.encode_pos(row_first, col_first)
+ cell2 = SpreadSheetItem.encode_pos(row_last, col_last)
+ out = SpreadSheetItem.encode_pos(row_cur, col_cur)
+
+ if self.run_input_dialog(
+ "Sum cells", "First cell:", "Last cell:",
+ f"{(chr(0x03a3))}", "Output to:",
+ cell1, cell2, out
+ ):
+ row, col = SpreadSheetItem.decode_pos(out)
+ self._table.item(row, col).setText(f"sum {cell1} {cell2}")
+
+ def action_math_helper(self, title: str, op: str) -> None:
+ cell1 = "C1"
+ cell2 = "C2"
+ out = "C3"
+
+ current = self._table.currentItem()
+ if current:
+ out = SpreadSheetItem.encode_pos(self._table.currentRow(), self._table.currentColumn())
+
+ if self.run_input_dialog(title, "Cell 1", "Cell 2", op, "Output to:", cell1, cell2, out):
+ row, col = SpreadSheetItem.decode_pos(out)
+ self._table.item(row, col).setText(f"{op} {cell1} {cell2}")
+
+ @Slot()
+ def action_add(self) -> None:
+ self.action_math_helper("Addition", "+")
+
+ @Slot()
+ def action_subtract(self) -> None:
+ self.action_math_helper("Subtraction", "-")
+
+ @Slot()
+ def action_multiply(self) -> None:
+ self.action_math_helper("Multiplication", "*")
+
+ @Slot()
+ def action_divide(self) -> None:
+ self.action_math_helper("Division", "/")
+
+ @Slot()
+ def clear(self) -> None:
+ selected_items = self._table.selectedItems()
+ for item in selected_items:
+ item.setText("")
+
+ def setup_context_menu(self) -> None:
+ self.addAction(self._cell_add_action)
+ self.addAction(self._cell_sub_action)
+ self.addAction(self._cell_mul_action)
+ self.addAction(self._cell_div_action)
+ self.addAction(self._cell_sum_action)
+ self.addAction(self._first_separator)
+ self.addAction(self._color_action)
+ self.addAction(self._font_action)
+ self.addAction(self._second_separator)
+ self.addAction(self._clear_action)
+ self.setContextMenuPolicy(Qt.ActionsContextMenu)
+
+ def setup_contents(self) -> None:
+ title_background = QBrush(Qt.lightGray)
+ title_font = self._table.font()
+ title_font.setBold(True)
+
+ # column 0
+ self._table.setItem(0, 0, SpreadSheetItem("Item"))
+ self._table.item(0, 0).setBackground(title_background)
+ self._table.item(0, 0).setToolTip(
+ "This column shows the purchased item/service"
+ )
+ self._table.item(0, 0).setFont(title_font)
+
+ self._table.setItem(1, 0, SpreadSheetItem("AirportBus"))
+ self._table.setItem(2, 0, SpreadSheetItem("Flight (Munich)"))
+ self._table.setItem(3, 0, SpreadSheetItem("Lunch"))
+ self._table.setItem(4, 0, SpreadSheetItem("Flight (LA)"))
+ self._table.setItem(5, 0, SpreadSheetItem("Taxi"))
+ self._table.setItem(6, 0, SpreadSheetItem("Dinner"))
+ self._table.setItem(7, 0, SpreadSheetItem("Hotel"))
+ self._table.setItem(8, 0, SpreadSheetItem("Flight (Oslo)"))
+ self._table.setItem(9, 0, SpreadSheetItem("Total:"))
+
+ self._table.item(9, 0).setFont(title_font)
+ self._table.item(9, 0).setBackground(title_background)
+
+ # column 1
+ self._table.setItem(0, 1, SpreadSheetItem("Date"))
+ self._table.item(0, 1).setBackground(title_background)
+ self._table.item(0, 1).setToolTip(
+ "This column shows the purchase date, double click to change"
+ )
+ self._table.item(0, 1).setFont(title_font)
+
+ self._table.setItem(1, 1, SpreadSheetItem("15/6/2006"))
+ self._table.setItem(2, 1, SpreadSheetItem("15/6/2006"))
+ self._table.setItem(3, 1, SpreadSheetItem("15/6/2006"))
+ self._table.setItem(4, 1, SpreadSheetItem("21/5/2006"))
+ self._table.setItem(5, 1, SpreadSheetItem("16/6/2006"))
+ self._table.setItem(6, 1, SpreadSheetItem("16/6/2006"))
+ self._table.setItem(7, 1, SpreadSheetItem("16/6/2006"))
+ self._table.setItem(8, 1, SpreadSheetItem("18/6/2006"))
+
+ self._table.setItem(9, 1, SpreadSheetItem())
+ self._table.item(9, 1).setBackground(title_background)
+
+ # column 2
+ self._table.setItem(0, 2, SpreadSheetItem("Price"))
+ self._table.item(0, 2).setBackground(title_background)
+ self._table.item(0, 2).setToolTip("This column shows the price of the purchase")
+ self._table.item(0, 2).setFont(title_font)
+
+ self._table.setItem(1, 2, SpreadSheetItem("150"))
+ self._table.setItem(2, 2, SpreadSheetItem("2350"))
+ self._table.setItem(3, 2, SpreadSheetItem("-14"))
+ self._table.setItem(4, 2, SpreadSheetItem("980"))
+ self._table.setItem(5, 2, SpreadSheetItem("5"))
+ self._table.setItem(6, 2, SpreadSheetItem("120"))
+ self._table.setItem(7, 2, SpreadSheetItem("300"))
+ self._table.setItem(8, 2, SpreadSheetItem("1240"))
+
+ self._table.setItem(9, 2, SpreadSheetItem())
+ self._table.item(9, 2).setBackground(Qt.lightGray)
+
+ # column 3
+ self._table.setItem(0, 3, SpreadSheetItem("Currency"))
+ self._table.item(0, 3).setBackground(title_background)
+ self._table.item(0, 3).setToolTip("This column shows the currency")
+ self._table.item(0, 3).setFont(title_font)
+
+ self._table.setItem(1, 3, SpreadSheetItem("NOK"))
+ self._table.setItem(2, 3, SpreadSheetItem("NOK"))
+ self._table.setItem(3, 3, SpreadSheetItem("EUR"))
+ self._table.setItem(4, 3, SpreadSheetItem("EUR"))
+ self._table.setItem(5, 3, SpreadSheetItem("USD"))
+ self._table.setItem(6, 3, SpreadSheetItem("USD"))
+ self._table.setItem(7, 3, SpreadSheetItem("USD"))
+ self._table.setItem(8, 3, SpreadSheetItem("USD"))
+
+ self._table.setItem(9, 3, SpreadSheetItem())
+ self._table.item(9, 3).setBackground(Qt.lightGray)
+
+ # column 4
+ self._table.setItem(0, 4, SpreadSheetItem("Ex. Rate"))
+ self._table.item(0, 4).setBackground(title_background)
+ self._table.item(0, 4).setToolTip("This column shows the exchange rate to NOK")
+ self._table.item(0, 4).setFont(title_font)
+
+ self._table.setItem(1, 4, SpreadSheetItem("1"))
+ self._table.setItem(2, 4, SpreadSheetItem("1"))
+ self._table.setItem(3, 4, SpreadSheetItem("8"))
+ self._table.setItem(4, 4, SpreadSheetItem("8"))
+ self._table.setItem(5, 4, SpreadSheetItem("7"))
+ self._table.setItem(6, 4, SpreadSheetItem("7"))
+ self._table.setItem(7, 4, SpreadSheetItem("7"))
+ self._table.setItem(8, 4, SpreadSheetItem("7"))
+
+ self._table.setItem(9, 4, SpreadSheetItem())
+ self._table.item(9, 4).setBackground(title_background)
+
+ # column 5
+ self._table.setItem(0, 5, SpreadSheetItem("NOK"))
+ self._table.item(0, 5).setBackground(title_background)
+ self._table.item(0, 5).setToolTip("This column shows the expenses in NOK")
+ self._table.item(0, 5).setFont(title_font)
+
+ self._table.setItem(1, 5, SpreadSheetItem("* C2 E2"))
+ self._table.setItem(2, 5, SpreadSheetItem("* C3 E3"))
+ self._table.setItem(3, 5, SpreadSheetItem("* C4 E4"))
+ self._table.setItem(4, 5, SpreadSheetItem("* C5 E5"))
+ self._table.setItem(5, 5, SpreadSheetItem("* C6 E6"))
+ self._table.setItem(6, 5, SpreadSheetItem("* C7 E7"))
+ self._table.setItem(7, 5, SpreadSheetItem("* C8 E8"))
+ self._table.setItem(8, 5, SpreadSheetItem("* C9 E9"))
+
+ self._table.setItem(9, 5, SpreadSheetItem("sum F2 F9"))
+ self._table.item(9, 5).setBackground(title_background)
+
+ @Slot()
+ def show_about(self) -> None:
+ html_text = (
+ "<HTML>"
+ "<p><b>This demo shows use of <c>QTableWidget</c> with custom handling for"
+ " individual cells.</b></p>"
+ "<p>Using a customized table item we make it possible to have dynamic"
+ " output in different cells. The content that is implemented for this"
+ " particular demo is:"
+ "<ul>"
+ "<li>Adding two cells.</li>"
+ "<li>Subtracting one cell from another.</li>"
+ "<li>Multiplying two cells.</li>"
+ "<li>Dividing one cell with another.</li>"
+ "<li>Summing the contents of an arbitrary number of cells.</li>"
+ "</HTML>")
+ QMessageBox.about(self, "About Spreadsheet", html_text)
diff --git a/examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.py b/examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.py
new file mode 100644
index 000000000..57aba6f47
--- /dev/null
+++ b/examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.py
@@ -0,0 +1,67 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import (QAbstractItemModel, QDate, QModelIndex, QObject,
+ QStringListModel, Qt, Slot)
+from PySide6.QtWidgets import (QCompleter, QDateTimeEdit, QLineEdit,
+ QStyleOptionViewItem, QStyledItemDelegate, QWidget)
+
+from typing import Optional
+
+
+class SpreadSheetDelegate(QStyledItemDelegate):
+ def __init__(self, parent: Optional[QObject] = None) -> None:
+ super().__init__(parent)
+
+ def create_editor(self, parent: QWidget,
+ option: QStyleOptionViewItem,
+ index: QModelIndex) -> QWidget:
+ if index.column() == 1:
+ editor = QDateTimeEdit(parent)
+ editor.setDisplayFormat("dd/M/yyyy")
+ editor.setCalendarPopup(True)
+ return editor
+
+ editor = QLineEdit(parent)
+
+ # create a completer with the strings in the column as model
+ allStrings = QStringListModel()
+ for i in range(1, index.model().rowCount()):
+ strItem = str(index.model().data(index.sibling(i, index.column()), Qt.EditRole))
+
+ if not allStrings.contains(strItem):
+ allStrings.append(strItem)
+
+ autoComplete = QCompleter(allStrings)
+ editor.setCompleter(autoComplete)
+ editor.editingFinished.connect(SpreadSheetDelegate.commit_and_close_editor)
+ return editor
+
+ @Slot()
+ def commit_and_close_editor(self) -> None:
+ editor = self.sender()
+ self.commitData.emit(editor)
+ self.closeEditor.emit(editor)
+
+ def set_editor_data(self, editor: QWidget, index: QModelIndex) -> None:
+ edit = QLineEdit(editor)
+ if edit:
+ edit.setText(str(index.model().data(index, Qt.EditRole)))
+ return
+
+ dateEditor = QDateTimeEdit(editor)
+ if dateEditor:
+ dateEditor.setDate(
+ QDate.fromString(
+ str(index.model().data(index, Qt.EditRole)), "d/M/yyyy"))
+
+ def set_model_data(self, editor: QWidget,
+ model: QAbstractItemModel, index: QModelIndex) -> None:
+ edit = QLineEdit(editor)
+ if edit:
+ model.setData(index, edit.text())
+ return
+
+ dateEditor = QDateTimeEdit(editor)
+ if dateEditor:
+ model.setData(index, dateEditor.date().toString("dd/M/yyyy"))
diff --git a/examples/widgets/itemviews/spreadsheet/spreadsheetitem.py b/examples/widgets/itemviews/spreadsheet/spreadsheetitem.py
new file mode 100644
index 000000000..dc70da883
--- /dev/null
+++ b/examples/widgets/itemviews/spreadsheet/spreadsheetitem.py
@@ -0,0 +1,122 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from typing import Any, Tuple
+from PySide6.QtCore import QMetaType, Qt
+from PySide6.QtWidgets import QTableWidget, QTableWidgetItem
+
+
+class SpreadSheetItem(QTableWidgetItem):
+ is_resolving = False
+
+ def __init_subclass__(cls) -> None:
+ return super().__init_subclass__()
+
+ def data(self, role: int) -> Any:
+ if role == Qt.EditRole or role == Qt.StatusTipRole:
+ return self.formula()
+
+ if role == Qt.DisplayRole:
+ return self.display()
+
+ t = str(self.display())
+
+ if role == Qt.ForegroundRole:
+ try:
+ number = int(t)
+ color = Qt.red if number < 0 else Qt.blue
+ except ValueError:
+ color = Qt.black
+ return color
+
+ if role == Qt.TextAlignmentRole:
+ if t and (t[0].isdigit() or t[0] == '-'):
+ return int(Qt.AlignRight | Qt.AlignVCenter)
+
+ return super().data(role)
+
+ def setData(self, role: int, value: Any) -> None:
+ super().setData(role, value)
+ if self.tableWidget():
+ self.tableWidget().viewport().update()
+
+ def display(self) -> QMetaType.Type.QVariant:
+ # avoid circular dependencies
+ if self.is_resolving:
+ return QMetaType.Type.QVariant
+
+ self.is_resolving = True
+ result = self.compute_formula(self.formula(), self.tableWidget(), self)
+ self.is_resolving = False
+ return result
+
+ def formula(self) -> None:
+ return str(super().data(Qt.DisplayRole))
+
+ def compute_formula(self, formula: str, widget: QTableWidget, this) -> QMetaType.Type.QVariant:
+ # check if the string is actually a formula or not
+ list_ = formula.split(' ')
+ if not list_ or not widget:
+ return formula # it is a normal string
+
+ op = list_[0].lower() if list_[0] else ""
+
+ first_row = -1
+ first_col = -1
+ second_row = -1
+ second_col = -1
+
+ if len(list_) > 1:
+ SpreadSheetItem.decode_pos(list_[1])
+
+ if len(list_) > 2:
+ SpreadSheetItem.decode_pos(list_[2])
+
+ start = widget.item(first_row, first_col)
+ end = widget.item(second_row, second_col)
+
+ first_val = int(start.text()) if start else 0
+ second_val = int(end.text()) if start else 0
+
+ if op == "sum":
+ sum = 0
+ for r in range(first_row, second_row + 1):
+ for c in range(first_col, second_col + 1):
+ table_item = widget.item(r, c)
+ if table_item and table_item != this:
+ sum += int(table_item.text())
+
+ result = sum
+ elif op == "+":
+ result = first_val + second_val
+ elif op == "-":
+ result = first_val - second_val
+ elif op == "*":
+ result = first_val * second_val
+ elif op == "/":
+ if second_val == 0:
+ result = "nan"
+ else:
+ result = first_val / second_val
+ elif op == "=":
+ if start:
+ result = start.text()
+ else:
+ result = formula
+
+ return result
+
+ def decode_pos(pos: str) -> Tuple[int, int]:
+ if (not pos):
+ col = -1
+ row = -1
+ else:
+ col = ord(pos[0].encode("latin1")) - ord('A')
+ try:
+ row = int(pos[1:]) - 1
+ except ValueError:
+ row = -1
+ return row, col
+
+ def encode_pos(row: int, col: int) -> str:
+ return str(chr(col + ord('A'))) + str(row + 1)
diff --git a/examples/widgets/itemviews/stardelegate/stardelegate.py b/examples/widgets/itemviews/stardelegate/stardelegate.py
index d283bc955..973eb14f6 100644
--- a/examples/widgets/itemviews/stardelegate/stardelegate.py
+++ b/examples/widgets/itemviews/stardelegate/stardelegate.py
@@ -1,45 +1,7 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 Hans-Peter Jansen <hpj@urpla.net>
-## Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2010 Hans-Peter Jansen <hpj@urpla.net>
+# Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtWidgets import QStyledItemDelegate, QStyle
@@ -149,15 +111,15 @@ if __name__ == "__main__":
# Create and populate the tableWidget
table_widget = QTableWidget(4, 4)
table_widget.setItemDelegate(StarDelegate())
- table_widget.setEditTriggers(QAbstractItemView.DoubleClicked |
- QAbstractItemView.SelectedClicked)
+ table_widget.setEditTriggers(QAbstractItemView.DoubleClicked
+ | QAbstractItemView.SelectedClicked)
table_widget.setSelectionBehavior(QAbstractItemView.SelectRows)
table_widget.setHorizontalHeaderLabels(["Title", "Genre", "Artist", "Rating"])
- data = [ ["Mass in B-Minor", "Baroque", "J.S. Bach", 5],
- ["Three More Foxes", "Jazz", "Maynard Ferguson", 4],
- ["Sex Bomb", "Pop", "Tom Jones", 3],
- ["Barbie Girl", "Pop", "Aqua", 5] ]
+ data = [["Mass in B-Minor", "Baroque", "J.S. Bach", 5],
+ ["Three More Foxes", "Jazz", "Maynard Ferguson", 4],
+ ["Sex Bomb", "Pop", "Tom Jones", 3],
+ ["Barbie Girl", "Pop", "Aqua", 5]]
for r in range(len(data)):
table_widget.setItem(r, 0, QTableWidgetItem(data[r][0]))
diff --git a/examples/widgets/itemviews/stardelegate/stareditor.py b/examples/widgets/itemviews/stardelegate/stareditor.py
index 8431f4a38..296afa950 100644
--- a/examples/widgets/itemviews/stardelegate/stareditor.py
+++ b/examples/widgets/itemviews/stardelegate/stareditor.py
@@ -1,45 +1,7 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 Hans-Peter Jansen <hpj@urpla.net>
-## Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2010 Hans-Peter Jansen <hpj@urpla.net>
+# Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtWidgets import (QWidget)
from PySide6.QtGui import (QPainter)
@@ -70,8 +32,8 @@ class StarEditor(QWidget):
def paintEvent(self, event):
""" Paint the editor, offloading the work to the StarRating class. """
- painter = QPainter(self)
- self.star_rating.paint(painter, self.rect(), self.palette(), isEditable=True)
+ with QPainter(self) as painter:
+ self.star_rating.paint(painter, self.rect(), self.palette(), isEditable=True)
def mouseMoveEvent(self, event):
""" As the mouse moves inside the editor, track the position and
@@ -93,8 +55,7 @@ class StarEditor(QWidget):
""" Calculate which star the user's mouse cursor is currently
hovering over.
"""
- star = (x / (self.star_rating.sizeHint().width() /
- self.star_rating.MAX_STAR_COUNT)) + 1
+ star = (x / (self.star_rating.sizeHint().width() / self.star_rating.MAX_STAR_COUNT)) + 1
if (star <= 0) or (star > self.star_rating.MAX_STAR_COUNT):
return -1
diff --git a/examples/widgets/itemviews/stardelegate/starrating.py b/examples/widgets/itemviews/stardelegate/starrating.py
index 7865e1686..28dbacd6f 100644
--- a/examples/widgets/itemviews/stardelegate/starrating.py
+++ b/examples/widgets/itemviews/stardelegate/starrating.py
@@ -1,45 +1,7 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 Hans-Peter Jansen <hpj@urpla.net>
-## Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2010 Hans-Peter Jansen <hpj@urpla.net>
+# Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com>
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from math import (cos, sin, pi)
@@ -61,13 +23,13 @@ class StarRating(object):
self._star_polygon.append(QPointF(1.0, 0.5))
for i in range(1, 5):
self._star_polygon.append(QPointF(0.5 + 0.5 * cos(0.8 * i * pi),
- 0.5 + 0.5 * sin(0.8 * i * pi)))
+ 0.5 + 0.5 * sin(0.8 * i * pi)))
# Create the diamond shape we'll show in the editor
self._diamond_polygon = QPolygonF()
diamond_points = [QPointF(0.4, 0.5), QPointF(0.5, 0.4),
- QPointF(0.6, 0.5), QPointF(0.5, 0.6),
- QPointF(0.4, 0.5)]
+ QPointF(0.6, 0.5), QPointF(0.5, 0.6),
+ QPointF(0.4, 0.5)]
self._diamond_polygon.append(diamond_points)
def sizeHint(self):
diff --git a/examples/widgets/layouts/basiclayouts/basiclayouts.py b/examples/widgets/layouts/basiclayouts/basiclayouts.py
index a115518f2..827cb7850 100644
--- a/examples/widgets/layouts/basiclayouts/basiclayouts.py
+++ b/examples/widgets/layouts/basiclayouts/basiclayouts.py
@@ -1,55 +1,16 @@
-
-############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/layouts/basiclayout example from Qt v5.x"""
import sys
-from PySide6.QtCore import Qt
from PySide6.QtWidgets import (QApplication, QComboBox, QDialog,
QDialogButtonBox, QGridLayout, QGroupBox,
QFormLayout, QHBoxLayout, QLabel, QLineEdit,
QMenu, QMenuBar, QPushButton, QSpinBox,
- QTextEdit, QVBoxLayout, QWidget)
+ QTextEdit, QVBoxLayout)
class Dialog(QDialog):
@@ -66,7 +27,7 @@ class Dialog(QDialog):
big_editor = QTextEdit()
big_editor.setPlainText("This widget takes up all the remaining space "
- "in the top-level layout.")
+ "in the top-level layout.")
button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
@@ -114,8 +75,7 @@ class Dialog(QDialog):
layout.addWidget(line_edit, i + 1, 1)
self._small_editor = QTextEdit()
- self._small_editor.setPlainText("This widget takes up about two thirds "
- "of the grid layout.")
+ self._small_editor.setPlainText("This widget takes up about two thirds of the grid layout.")
layout.addWidget(self._small_editor, 0, 2, 4, 1)
diff --git a/examples/widgets/layouts/borderlayout/borderlayout.py b/examples/widgets/layouts/borderlayout/borderlayout.py
new file mode 100644
index 000000000..3268d7034
--- /dev/null
+++ b/examples/widgets/layouts/borderlayout/borderlayout.py
@@ -0,0 +1,248 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the widgets/layouts/borderlayout example from Qt v5.x"""
+
+from dataclasses import dataclass
+from enum import IntEnum, auto
+
+from PySide6.QtCore import QRect, QSize, Qt
+from PySide6.QtWidgets import (
+ QApplication,
+ QFrame,
+ QLabel,
+ QLayout,
+ QLayoutItem,
+ QTextBrowser,
+ QWidget,
+ QWidgetItem,
+)
+import sys
+
+
+class Position(IntEnum):
+ West = auto()
+ North = auto()
+ South = auto()
+ East = auto()
+ Center = auto()
+
+
+class SizeType(IntEnum):
+ MinimumSize = auto()
+ SizeHint = auto()
+
+
+@dataclass
+class ItemWrapper:
+ item: QLayoutItem
+ position: Position
+
+
+class BorderLayout(QLayout):
+ def __init__(self, parent=None, spacing: int = -1):
+ super().__init__(parent)
+
+ self._list: list[ItemWrapper] = []
+
+ self.setSpacing(spacing)
+
+ if parent is not None:
+ self.setParent(parent)
+
+ def __del__(self):
+ item = self.takeAt(0)
+ while item:
+ item = self.takeAt(0)
+
+ def addItem(self, item: QLayoutItem):
+ self.add(item, Position.West)
+
+ def addWidget(self, widget: QWidget, position: Position):
+ self.add(QWidgetItem(widget), position)
+
+ def expandingDirections(self) -> Qt.Orientations:
+ return Qt.Horizontal | Qt.Vertical
+
+ def hasHeightForWidth(self) -> bool:
+ return False
+
+ def count(self) -> int:
+ return len(self._list)
+
+ def itemAt(self, index: int) -> QLayoutItem:
+ if index < len(self._list):
+ wrapper: ItemWrapper = self._list[index]
+ return wrapper.item
+ return None
+
+ def minimumSize(self) -> QSize:
+ return self.calculate_size(SizeType.MinimumSize)
+
+ def setGeometry(self, rect: QRect):
+ center: ItemWrapper = None
+ east_width = 0
+ west_width = 0
+ north_height = 0
+ south_height = 0
+
+ super().setGeometry(rect)
+
+ for wrapper in self._list:
+ item: QLayoutItem = wrapper.item
+ position: Position = wrapper.position
+
+ if position == Position.North:
+ item.setGeometry(
+ QRect(
+ rect.x(), north_height, rect.width(), item.sizeHint().height()
+ )
+ )
+
+ north_height += item.geometry().height() + self.spacing()
+
+ elif position == Position.South:
+ item.setGeometry(
+ QRect(
+ item.geometry().x(),
+ item.geometry().y(),
+ rect.width(),
+ item.sizeHint().height(),
+ )
+ )
+
+ south_height += item.geometry().height() + self.spacing()
+
+ item.setGeometry(
+ QRect(
+ rect.x(),
+ rect.y() + rect.height() - south_height + self.spacing(),
+ item.geometry().width(),
+ item.geometry().height(),
+ )
+ )
+ elif position == Position.Center:
+ center = wrapper
+
+ center_height = rect.height() - north_height - south_height
+
+ for wrapper in self._list:
+ item: QLayoutItem = wrapper.item
+ position: Position = wrapper.position
+
+ if position == Position.West:
+ item.setGeometry(
+ QRect(
+ rect.x() + west_width,
+ north_height,
+ item.sizeHint().width(),
+ center_height,
+ )
+ )
+
+ west_width += item.geometry().width() + self.spacing()
+
+ elif position == Position.East:
+ item.setGeometry(
+ QRect(
+ item.geometry().x(),
+ item.geometry().y(),
+ item.sizeHint().width(),
+ center_height,
+ )
+ )
+
+ east_width += item.geometry().width() + self.spacing()
+
+ item.setGeometry(
+ QRect(
+ rect.x() + rect.width() - east_width + self.spacing(),
+ north_height,
+ item.geometry().width(),
+ item.geometry().height(),
+ )
+ )
+
+ if center:
+ center.item.setGeometry(
+ QRect(
+ west_width,
+ north_height,
+ rect.width() - east_width - west_width,
+ center_height,
+ )
+ )
+
+ def sizeHint(self) -> QSize:
+ return self.calculate_size(SizeType.SizeHint)
+
+ def takeAt(self, index: int):
+ if 0 <= index < len(self._list):
+ layout_struct: ItemWrapper = self._list.pop(index)
+ return layout_struct.item
+ return None
+
+ def add(self, item: QLayoutItem, position: Position):
+ self._list.append(ItemWrapper(item, position))
+
+ def calculate_size(self, size_type: SizeType):
+ total_size = QSize()
+
+ for wrapper in self._list:
+ position = wrapper.position
+
+ item_size: QSize
+ if size_type == SizeType.MinimumSize:
+ item_size = wrapper.item.minimumSize()
+ else:
+ item_size = wrapper.item.sizeHint()
+
+ if position in (Position.North, Position.South, Position.Center):
+ total_size.setHeight(total_size.height() + item_size.height())
+
+ if position in (Position.West, Position.East, Position.Center):
+ total_size.setWidth(total_size.width() + item_size.width())
+
+ return total_size
+
+
+class Window(QWidget):
+ def __init__(self):
+ super().__init__()
+ self.central_widget = QTextBrowser()
+ self.central_widget.setPlainText("Central widget")
+
+ border_layout = BorderLayout()
+ border_layout.addWidget(self.central_widget, Position.Center)
+
+ label_north = self.create_label("North")
+ border_layout.addWidget(label_north, Position.North)
+
+ label_west = self.create_label("West")
+ border_layout.addWidget(label_west, Position.West)
+
+ label_east1 = self.create_label("East 1")
+ border_layout.addWidget(label_east1, Position.East)
+
+ label_east2 = self.create_label("East 2")
+ border_layout.addWidget(label_east2, Position.East)
+
+ label_south = self.create_label("South")
+ border_layout.addWidget(label_south, Position.South)
+
+ self.setLayout(border_layout)
+
+ self.setWindowTitle("Border Layout")
+
+ @staticmethod
+ def create_label(text: str):
+ label = QLabel(text)
+ label.setFrameStyle(QFrame.Box | QFrame.Raised)
+ return label
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ window = Window()
+ window.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/layouts/borderlayout/borderlayout.pyproject b/examples/widgets/layouts/borderlayout/borderlayout.pyproject
new file mode 100644
index 000000000..fc0280348
--- /dev/null
+++ b/examples/widgets/layouts/borderlayout/borderlayout.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["borderlayout.py"]
+}
diff --git a/examples/widgets/layouts/borderlayout/doc/borderlayout.png b/examples/widgets/layouts/borderlayout/doc/borderlayout.png
new file mode 100644
index 000000000..8599b9d1c
--- /dev/null
+++ b/examples/widgets/layouts/borderlayout/doc/borderlayout.png
Binary files differ
diff --git a/examples/widgets/layouts/borderlayout/doc/borderlayout.rst b/examples/widgets/layouts/borderlayout/doc/borderlayout.rst
new file mode 100644
index 000000000..652f84daa
--- /dev/null
+++ b/examples/widgets/layouts/borderlayout/doc/borderlayout.rst
@@ -0,0 +1,10 @@
+Border Layout Example
+=======================
+
+Shows how to arrange child widgets along a border.
+
+Border Layout implements a layout that arranges child widgets to surround the main area.
+
+.. image:: borderlayout.png
+ :width: 473
+ :alt: border layout Screenshot
diff --git a/examples/widgets/layouts/dynamiclayouts/dynamiclayouts.py b/examples/widgets/layouts/dynamiclayouts/dynamiclayouts.py
index c0e3266ce..c9dfcc730 100644
--- a/examples/widgets/layouts/dynamiclayouts/dynamiclayouts.py
+++ b/examples/widgets/layouts/dynamiclayouts/dynamiclayouts.py
@@ -1,44 +1,6 @@
-
-############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/layouts/dynamiclayouts example from Qt v5.x"""
@@ -88,7 +50,7 @@ class Dialog(QDialog):
self._main_layout.setSizeConstraint(QLayout.SetNoConstraint)
self.setMinimumSize(0, 0)
- orientation = Qt.Orientation(int(self._buttons_orientation_combo_box.itemData(index)))
+ orientation = Qt.Orientation(self._buttons_orientation_combo_box.itemData(index))
if orientation == self._button_box.orientation():
return
@@ -112,8 +74,8 @@ class Dialog(QDialog):
def show_help(self):
QMessageBox.information(self, "Dynamic Layouts Help",
- "This example shows how to change layouts "
- "dynamically.")
+ "This example shows how to change layouts "
+ "dynamically.")
def create_rotable_group_box(self):
self._rotable_group_box = QGroupBox("Rotable Widgets")
@@ -140,7 +102,8 @@ class Dialog(QDialog):
buttons_orientation_combo_box = QComboBox()
buttons_orientation_combo_box.addItem("Horizontal", Qt.Horizontal)
buttons_orientation_combo_box.addItem("Vertical", Qt.Vertical)
- buttons_orientation_combo_box.currentIndexChanged[int].connect(self.buttons_orientation_changed)
+ buttons_orientation_combo_box.currentIndexChanged[int].connect(
+ self.buttons_orientation_changed)
self._buttons_orientation_combo_box = buttons_orientation_combo_box
@@ -155,7 +118,8 @@ class Dialog(QDialog):
close_button = self._button_box.addButton(QDialogButtonBox.Close)
help_button = self._button_box.addButton(QDialogButtonBox.Help)
- rotate_widgets_button = self._button_box.addButton("Rotate &Widgets", QDialogButtonBox.ActionRole)
+ rotate_widgets_button = self._button_box.addButton(
+ "Rotate &Widgets", QDialogButtonBox.ActionRole)
rotate_widgets_button.clicked.connect(self.rotate_widgets)
close_button.clicked.connect(self.close)
diff --git a/examples/widgets/layouts/flowlayout/flowlayout.py b/examples/widgets/layouts/flowlayout/flowlayout.py
index 431515687..3ab4318fa 100644
--- a/examples/widgets/layouts/flowlayout/flowlayout.py
+++ b/examples/widgets/layouts/flowlayout/flowlayout.py
@@ -1,51 +1,12 @@
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 port of the widgets/layouts/flowlayout example from Qt v5.x"""
+"""PySide6 port of the widgets/layouts/flowlayout example from Qt v6.x"""
import sys
from PySide6.QtCore import Qt, QMargins, QPoint, QRect, QSize
-from PySide6.QtWidgets import (QApplication, QLayout, QPushButton,
- QSizePolicy, QWidget)
+from PySide6.QtWidgets import QApplication, QLayout, QPushButton, QSizePolicy, QWidget
class Window(QWidget):
@@ -72,9 +33,9 @@ class FlowLayout(QLayout):
self._item_list = []
def __del__(self):
- item = self.take_at(0)
+ item = self.takeAt(0)
while item:
- item = self.take_at(0)
+ item = self.takeAt(0)
def addItem(self, item):
self._item_list.append(item)
@@ -83,19 +44,19 @@ class FlowLayout(QLayout):
return len(self._item_list)
def itemAt(self, index):
- if index >= 0 and index < len(self._item_list):
+ if 0 <= index < len(self._item_list):
return self._item_list[index]
return None
def takeAt(self, index):
- if index >= 0 and index < len(self._item_list):
+ if 0 <= index < len(self._item_list):
return self._item_list.pop(index)
return None
def expandingDirections(self):
- return Qt.Orientations(Qt.Orientation(0))
+ return Qt.Orientation(0)
def hasHeightForWidth(self):
return True
@@ -117,8 +78,7 @@ class FlowLayout(QLayout):
for item in self._item_list:
size = size.expandedTo(item.minimumSize())
- size += QSize(2 * self.contentsMargins().top(),
- 2 * self.contentsMargins().top())
+ size += QSize(2 * self.contentsMargins().top(), 2 * self.contentsMargins().top())
return size
def _do_layout(self, rect, test_only):
@@ -129,12 +89,12 @@ class FlowLayout(QLayout):
for item in self._item_list:
style = item.widget().style()
- layout_spacing_x = style.layoutSpacing(QSizePolicy.PushButton,
- QSizePolicy.PushButton,
- Qt.Horizontal)
- layout_spacing_y = style.layoutSpacing(QSizePolicy.PushButton,
- QSizePolicy.PushButton,
- Qt.Vertical)
+ layout_spacing_x = style.layoutSpacing(
+ QSizePolicy.PushButton, QSizePolicy.PushButton, Qt.Horizontal
+ )
+ layout_spacing_y = style.layoutSpacing(
+ QSizePolicy.PushButton, QSizePolicy.PushButton, Qt.Vertical
+ )
space_x = spacing + layout_spacing_x
space_y = spacing + layout_spacing_y
next_x = x + item.sizeHint().width() + space_x
@@ -153,7 +113,7 @@ class FlowLayout(QLayout):
return y + line_height - rect.y()
-if __name__ == '__main__':
+if __name__ == "__main__":
app = QApplication(sys.argv)
main_win = Window()
main_win.show()
diff --git a/examples/widgets/linguist/doc/linguist.rst b/examples/widgets/linguist/doc/linguist.rst
new file mode 100644
index 000000000..24a49a617
--- /dev/null
+++ b/examples/widgets/linguist/doc/linguist.rst
@@ -0,0 +1,7 @@
+.. _qt-linguist-example:
+
+Qt Linguist Example
+===================
+
+This example demonstrates the use of Qt Linguist and related tools for translating
+applications as described in :ref:`translations`.
diff --git a/examples/widgets/linguist/example_de.ts b/examples/widgets/linguist/example_de.ts
new file mode 100644
index 000000000..447d1ceb5
--- /dev/null
+++ b/examples/widgets/linguist/example_de.ts
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de_DE" sourcelanguage="de_DE">
+<context>
+ <name>Window</name>
+ <message>
+ <location filename="main.py" line="56"/>
+ <source>&amp;File</source>
+ <translation>&amp;Datei</translation>
+ </message>
+ <message>
+ <location filename="main.py" line="57"/>
+ <source>Quit</source>
+ <translation>Beenden</translation>
+ </message>
+ <message>
+ <location filename="main.py" line="58"/>
+ <source>CTRL+Q</source>
+ <translation>CTRL+B</translation>
+ </message>
+ <message>
+ <location filename="main.py" line="60"/>
+ <source>&amp;Help</source>
+ <translation>Hilfe</translation>
+ </message>
+ <message>
+ <location filename="main.py" line="61"/>
+ <source>About Qt</source>
+ <translation>Über Qt</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="main.py" line="75"/>
+ <source>%n language(s) selected</source>
+ <translation>
+ <numerusform>Eine Sprache ausgewählt</numerusform>
+ <numerusform>%n Sprachen ausgewählt</numerusform>
+ </translation>
+ </message>
+</context>
+</TS>
diff --git a/examples/widgets/linguist/linguist.pyproject b/examples/widgets/linguist/linguist.pyproject
new file mode 100644
index 000000000..43a13b036
--- /dev/null
+++ b/examples/widgets/linguist/linguist.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["main.py", "linguist.qrc", "example_de.ts"]
+}
diff --git a/examples/widgets/linguist/linguist.qrc b/examples/widgets/linguist/linguist.qrc
new file mode 100644
index 000000000..6ca287c20
--- /dev/null
+++ b/examples/widgets/linguist/linguist.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="translations">
+ <file>example_de.qm</file>
+</qresource>
+</RCC>
diff --git a/examples/widgets/linguist/linguist_rc.py b/examples/widgets/linguist/linguist_rc.py
new file mode 100644
index 000000000..233952779
--- /dev/null
+++ b/examples/widgets/linguist/linguist_rc.py
@@ -0,0 +1,68 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.2.2
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x01\xcd\
+<\
+\xb8d\x18\xca\xef\x9c\x95\xcd!\x1c\xbf`\xa1\xbd\xdd\xa7\
+\x00\x00\x00\x05de_DEB\x00\x00\x000\x00\x05\
+\x8c\x04\x00\x00\x01E\x00*\xd0%\x00\x00\x00\x91\x00*\
+\xec0\x00\x00\x00\xbd\x04\x89o\x01\x00\x00\x01\x18\x05\xbc\
+\xad\xd4\x00\x00\x00\x00\x09la\xf4\x00\x00\x00\xe7i\x00\
+\x00\x01r\x03\x00\x00\x00.\x00E\x00i\x00n\x00e\
+\x00 \x00S\x00p\x00r\x00a\x00c\x00h\x00e\
+\x00 \x00a\x00u\x00s\x00g\x00e\x00w\x00\xe4\
+\x00h\x00l\x00t\x03\x00\x00\x00,\x00%\x00n\x00\
+ \x00S\x00p\x00r\x00a\x00c\x00h\x00e\x00\
+n\x00 \x00a\x00u\x00s\x00g\x00e\x00w\x00\
+\xe4\x00h\x00l\x00t\x08\x00\x00\x00\x00\x06\x00\x00\x00\
+\x17%n language(s) \
+selected\x07\x00\x00\x00\x06Win\
+dow\x01\x03\x00\x00\x00\x0c\x00&\x00D\x00a\x00\
+t\x00e\x00i\x08\x00\x00\x00\x00\x06\x00\x00\x00\x05&\
+File\x07\x00\x00\x00\x06Window\x01\
+\x03\x00\x00\x00\x0a\x00H\x00i\x00l\x00f\x00e\x08\
+\x00\x00\x00\x00\x06\x00\x00\x00\x05&Help\x07\x00\
+\x00\x00\x06Window\x01\x03\x00\x00\x00\x0e\x00\
+\xdc\x00b\x00e\x00r\x00 \x00Q\x00t\x08\x00\x00\
+\x00\x00\x06\x00\x00\x00\x08About Qt\x07\
+\x00\x00\x00\x06Window\x01\x03\x00\x00\x00\x0c\
+\x00C\x00T\x00R\x00L\x00+\x00B\x08\x00\x00\x00\
+\x00\x06\x00\x00\x00\x06CTRL+Q\x07\x00\x00\x00\
+\x06Window\x01\x03\x00\x00\x00\x0e\x00B\x00\
+e\x00e\x00n\x00d\x00e\x00n\x08\x00\x00\x00\x00\
+\x06\x00\x00\x00\x04Quit\x07\x00\x00\x00\x06Wi\
+ndow\x01\x88\x00\x00\x00\x02\x01\x01\
+"
+
+qt_resource_name = b"\
+\x00\x0c\
+\x0d\xfc\x11\x13\
+\x00t\
+\x00r\x00a\x00n\x00s\x00l\x00a\x00t\x00i\x00o\x00n\x00s\
+\x00\x0d\
+\x02\x8b\x0a\x9d\
+\x00e\
+\x00x\x00a\x00m\x00p\x00l\x00e\x00_\x00d\x00e\x00.\x00q\x00m\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01}\xbdR\x0f\xc5\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/widgets/linguist/main.py b/examples/widgets/linguist/main.py
new file mode 100644
index 000000000..e4212e801
--- /dev/null
+++ b/examples/widgets/linguist/main.py
@@ -0,0 +1,55 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import (QItemSelection, QLibraryInfo, QLocale, QTranslator,
+ Slot)
+from PySide6.QtWidgets import (QAbstractItemView, QApplication, QListWidget,
+ QMainWindow)
+
+
+import linguist_rc # noqa: F401
+
+
+class Window(QMainWindow):
+ def __init__(self):
+ super().__init__()
+ file_menu = self.menuBar().addMenu(self.tr("&File"))
+ quit_action = file_menu.addAction(self.tr("Quit"))
+ quit_action.setShortcut(self.tr("CTRL+Q"))
+ quit_action.triggered.connect(self.close)
+ help_menu = self.menuBar().addMenu(self.tr("&Help"))
+ about_qt_action = help_menu.addAction(self.tr("About Qt"))
+ about_qt_action.triggered.connect(qApp.aboutQt) # noqa: F821
+
+ self._list_widget = QListWidget()
+ self._list_widget.setSelectionMode(QAbstractItemView.MultiSelection)
+ self._list_widget.selectionModel().selectionChanged.connect(self.selection_changed)
+ self._list_widget.addItem("C++")
+ self._list_widget.addItem("Java")
+ self._list_widget.addItem("Python")
+ self.setCentralWidget(self._list_widget)
+
+ @Slot(QItemSelection, QItemSelection)
+ def selection_changed(self, selected, deselected):
+ count = len(self._list_widget.selectionModel().selectedRows())
+ message = self.tr("%n language(s) selected", "", count)
+ self.statusBar().showMessage(message)
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+
+ path = QLibraryInfo.path(QLibraryInfo.TranslationsPath)
+ translator = QTranslator(app)
+ if translator.load(QLocale.system(), 'qtbase', '_', path):
+ app.installTranslator(translator)
+ translator = QTranslator(app)
+ path = ':/translations'
+ if translator.load(QLocale.system(), 'example', '_', path):
+ app.installTranslator(translator)
+
+ window = Window()
+ window.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/mainwindows/application/application.py b/examples/widgets/mainwindows/application/application.py
index 3ec9344cb..f69eade2e 100644
--- a/examples/widgets/mainwindows/application/application.py
+++ b/examples/widgets/mainwindows/application/application.py
@@ -1,55 +1,17 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from argparse import ArgumentParser, RawTextHelpFormatter
import sys
from PySide6.QtCore import (QByteArray, QFile, QFileInfo, QSaveFile, QSettings,
- QTextStream, Qt)
+ QTextStream, Qt, Slot)
from PySide6.QtGui import QAction, QIcon, QKeySequence
from PySide6.QtWidgets import (QApplication, QFileDialog, QMainWindow,
- QMessageBox, QTextEdit, QWidget)
+ QMessageBox, QTextEdit)
-import application_rc
+import application_rc # noqa: F401
class MainWindow(QMainWindow):
@@ -80,23 +42,27 @@ class MainWindow(QMainWindow):
else:
event.ignore()
+ @Slot()
def new_file(self):
if self.maybe_save():
self._text_edit.clear()
self.set_current_file('')
+ @Slot()
def open(self):
if self.maybe_save():
fileName, filtr = QFileDialog.getOpenFileName(self)
if fileName:
self.load_file(fileName)
+ @Slot()
def save(self):
if self._cur_file:
return self.save_file(self._cur_file)
return self.save_as()
+ @Slot()
def save_as(self):
fileName, filtr = QFileDialog.getSaveFileName(self)
if fileName:
@@ -104,62 +70,67 @@ class MainWindow(QMainWindow):
return False
+ @Slot()
def about(self):
QMessageBox.about(self, "About Application",
- "The <b>Application</b> example demonstrates how to write "
- "modern GUI applications using Qt, with a menu bar, "
- "toolbars, and a status bar.")
+ "The <b>Application</b> example demonstrates how to write "
+ "modern GUI applications using Qt, with a menu bar, "
+ "toolbars, and a status bar.")
+ @Slot()
def document_was_modified(self):
self.setWindowModified(self._text_edit.document().isModified())
def create_actions(self):
- icon = QIcon.fromTheme("document-new", QIcon(':/images/new.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.DocumentNew, QIcon(':/images/new.png'))
self._new_act = QAction(icon, "&New", self, shortcut=QKeySequence.New,
- statusTip="Create a new file", triggered=self.new_file)
+ statusTip="Create a new file", triggered=self.new_file)
- icon = QIcon.fromTheme("document-open", QIcon(':/images/open.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.DocumentOpen, QIcon(':/images/open.png'))
self._open_act = QAction(icon, "&Open...", self,
- shortcut=QKeySequence.Open, statusTip="Open an existing file",
- triggered=self.open)
+ shortcut=QKeySequence.Open, statusTip="Open an existing file",
+ triggered=self.open)
- icon = QIcon.fromTheme("document-save", QIcon(':/images/save.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.DocumentSave, QIcon(':/images/save.png'))
self._save_act = QAction(icon, "&Save", self,
- shortcut=QKeySequence.Save,
- statusTip="Save the document to disk", triggered=self.save)
+ shortcut=QKeySequence.Save,
+ statusTip="Save the document to disk", triggered=self.save)
self._save_as_act = QAction("Save &As...", self,
- shortcut=QKeySequence.SaveAs,
- statusTip="Save the document under a new name",
- triggered=self.save_as)
+ shortcut=QKeySequence.SaveAs,
+ statusTip="Save the document under a new name",
+ triggered=self.save_as)
- self._exit_act = QAction("E&xit", self, shortcut="Ctrl+Q",
- statusTip="Exit the application", triggered=self.close)
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.ApplicationExit)
+ self._exit_act = QAction(icon, "E&xit", self, shortcut="Ctrl+Q",
+ statusTip="Exit the application", triggered=self.close)
- icon = QIcon.fromTheme("edit-cut", QIcon(':/images/cut.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.EditCut, QIcon(':/images/cut.png'))
self._cut_act = QAction(icon, "Cu&t", self, shortcut=QKeySequence.Cut,
- statusTip="Cut the current selection's contents to the clipboard",
- triggered=self._text_edit.cut)
+ statusTip="Cut the current selection's contents to the clipboard",
+ triggered=self._text_edit.cut)
- icon = QIcon.fromTheme("edit-copy", QIcon(':/images/copy.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.EditCopy, QIcon(':/images/copy.png'))
self._copy_act = QAction(icon, "&Copy",
- self, shortcut=QKeySequence.Copy,
- statusTip="Copy the current selection's contents to the clipboard",
- triggered=self._text_edit.copy)
+ self, shortcut=QKeySequence.Copy,
+ statusTip="Copy the current selection's contents to the clipboard",
+ triggered=self._text_edit.copy)
- icon = QIcon.fromTheme("edit-paste", QIcon(':/images/paste.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.EditPaste, QIcon(':/images/paste.png'))
self._paste_act = QAction(icon, "&Paste",
- self, shortcut=QKeySequence.Paste,
- statusTip="Paste the clipboard's contents into the current selection",
- triggered=self._text_edit.paste)
+ self, shortcut=QKeySequence.Paste,
+ statusTip="Paste the clipboard's contents into the current "
+ "selection",
+ triggered=self._text_edit.paste)
- self._about_act = QAction("&About", self,
- statusTip="Show the application's About box",
- triggered=self.about)
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.HelpAbout)
+ self._about_act = QAction(icon, "&About", self,
+ statusTip="Show the application's About box",
+ triggered=self.about)
self._about_qt_act = QAction("About &Qt", self,
- statusTip="Show the Qt library's About box",
- triggered=qApp.aboutQt)
+ statusTip="Show the Qt library's About box",
+ triggered=qApp.aboutQt) # noqa: F821
self._cut_act.setEnabled(False)
self._copy_act.setEnabled(False)
@@ -213,10 +184,9 @@ class MainWindow(QMainWindow):
def maybe_save(self):
if self._text_edit.document().isModified():
ret = QMessageBox.warning(self, "Application",
- "The document has been modified.\nDo you want to save "
- "your changes?",
- QMessageBox.Save | QMessageBox.Discard |
- QMessageBox.Cancel)
+ "The document has been modified.\nDo you want to save "
+ "your changes?",
+ QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel)
if ret == QMessageBox.Save:
return self.save()
elif ret == QMessageBox.Cancel:
@@ -227,32 +197,29 @@ class MainWindow(QMainWindow):
file = QFile(fileName)
if not file.open(QFile.ReadOnly | QFile.Text):
reason = file.errorString()
- QMessageBox.warning(self, "Application",
- f"Cannot read file {fileName}:\n{reason}.")
+ QMessageBox.warning(self, "Application", f"Cannot read file {fileName}:\n{reason}.")
return
inf = QTextStream(file)
- QApplication.setOverrideCursor(Qt.WaitCursor)
- self._text_edit.setPlainText(inf.readAll())
- QApplication.restoreOverrideCursor()
+ with QApplication.setOverrideCursor(Qt.WaitCursor):
+ self._text_edit.setPlainText(inf.readAll())
self.set_current_file(fileName)
self.statusBar().showMessage("File loaded", 2000)
def save_file(self, fileName):
error = None
- QApplication.setOverrideCursor(Qt.WaitCursor)
- file = QSaveFile(fileName)
- if file.open(QFile.WriteOnly | QFile.Text):
- outf = QTextStream(file)
- outf << self._text_edit.toPlainText()
- if not file.commit():
+ with QApplication.setOverrideCursor(Qt.WaitCursor):
+ file = QSaveFile(fileName)
+ if file.open(QFile.WriteOnly | QFile.Text):
+ outf = QTextStream(file)
+ outf << self._text_edit.toPlainText()
+ if not file.commit():
+ reason = file.errorString()
+ error = f"Cannot write file {fileName}:\n{reason}."
+ else:
reason = file.errorString()
- error = f"Cannot write file {fileName}:\n{reason}."
- else:
- reason = file.errorString()
- error = f"Cannot open file {fileName}:\n{reason}."
- QApplication.restoreOverrideCursor()
+ error = f"Cannot open file {fileName}:\n{reason}."
if error:
QMessageBox.warning(self, "Application", error)
diff --git a/examples/widgets/mainwindows/application/application.pyproject b/examples/widgets/mainwindows/application/application.pyproject
index 0e0413982..a9365ed1a 100644
--- a/examples/widgets/mainwindows/application/application.pyproject
+++ b/examples/widgets/mainwindows/application/application.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["application.qrc", "application.py", "application_rc.py"]
+ "files": ["application.qrc", "application.py"]
}
diff --git a/examples/widgets/mainwindows/application/application_rc.py b/examples/widgets/mainwindows/application/application_rc.py
index ad79e2ead..bc8336765 100644
--- a/examples/widgets/mainwindows/application/application_rc.py
+++ b/examples/widgets/mainwindows/application/application_rc.py
@@ -1,88 +1,11 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.14.0
+# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
qt_resource_data = b"\
-\x00\x00\x04\xa3\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
-\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
-\x00\x00\x00\x19tEXtSoftware\
-\x00Adobe ImageRead\
-yq\xc9e<\x00\x00\x045IDATX\xc3\xe5\
-\x97\xcd\x8fTE\x14\xc5\x7f\xb7\xea\xd6{\xaf\xdbn\xc7\
-\xf9@\x9d\x89FM4\x99D\x8d\x1aH\x98\xc4\x8c\x1f\
-\x1b\xfe\x02L\x5c\xf1\x07\x18\x16.M\x5ckX\xc3\x8e\
-\xc4\x8d\x1b\x17\xce\x82htA\x5c\x18\x0d\xe2\xc4\xc6\x00\
-=`PQ\x19`\x02\xa2\x0e\x0c\x83\xd3\xfd^\xf7\x94\
-\x8b\xaa\xee\xf9`\xe6\x0d\x84Q\x16VR\xa9\xce{\xb7\
-\xeb\x9e:\xf7\xd4\xa9z\xea\xbd\xe7~6\xe5>\xb7>\
-\x80]\xbbv\xbd\x03\xec\xfd\x8f\xf2N5\x1a\x8d\x03\xeb\
-\x19\xd8\xbb\xef\xbd\xa3;\x1f\x1fv\x00\x9c<:\xcf\xcc\
-\x977X\x9c\xef\xdcS\xa6\xda\xa0\xf2\xdck\x03\xbc\xb8\
-g\x10\x80\x8b\x7f\x16|\xf8\xee\x1e\x80\xdb\x00p\xfc\xec\
-\x1c\xdf?0\x04x.\xfd\xb8\xc0\xfe\xb7\xceo\xcbr\
-\x0f\x1dy\x9a\x0b#\x96\xd3\x9f\x1fd\xfc\xd5}\x9bk\
-@E\xb0\x16@xp,#\xcb\xb2m\x0100\x96\
-a\x8dP\x1b|\x14#%\x22\x14+\xd8\x18\x91\xd5\x95\
-s\xe7\xce\x83*\xb8\x04\xd2\x14\xb2\x0c\xd2,\x8cI\x0a\
-I\x12\xdew:\x90\xe7\x90\xb7\xa1\xd5\x82v+\x8em\
-(r\xb2\xfa8\xd6\x0a\xe3\xaf\xbcIk\xf1\xfa\xe6\x00\
-\xac\x15\xac\x15\x04\xb0F\xd8\xbd{\xe7\x16k\xeb\x86\xae\
-\x80Z\xa8V\x81\xeamQ\x8d\xaf\x04\xb5\x82\xf7\xa0\xa6\
-\x84\x01g\x055\x82\x08\xa8\x0a\x95,\xc3# \x1e\x08\
-\xc0\xf0\x1e/\x02\xde#\x12&\x15|\x88#\xc4!\x1e\
-<!^@MX\x18@\xd7J\x89\x06\xac\xa0\xdac\
-\x00\x9a3\xbf\x05\x8aS\x07i\x02\x95\x04\xb24\xf6\x04\
-\x12\x07N\xa1\xe8@^@+\x8f\xbd\x05K9\xb4s\
-\xc8\x0bT\x87q=\x00*\xe5%p1@\xd509\
-\xf9\xd2\xd6\x0a\xf3>\xd0\xaf\x16\xaa\x1b\x8b\xf6\xd8'a\
-a\xbd\x1c%% \x00\xf0\x81\x8d4M\xa3:\xc3\xb3\
-\x98\x11\x89l\x07\xdac\x09V\x98_)F\xfca\xcd\
-r\x7fa\x1d-\xd1\x80:\x09TI\x18O4/\xe0\
-\x9d\x85\xc4!\x89\xc3g\x09\x92i\xd8\x11\x89\xe2\x13\x87\
-X\x8b\xefv\x91\xbc\x80\xbc\x03\xed\x02\xdfj#\xed\x02\
-\xf2\x02\x9fwP\x1dE\xd5 x:\xebTx\x9b\x06\
-\x9c3x\x0f\x03\x8f$\xbc\xfe\xf2\xf3wh\xe86h\
-\xa4\xbe\xf1\xeb\xc6\xfc\xdf\xb1\x04R^\x82DM_\x84\
-\x8f\x0d\xa58\xe7\xb6\xc5\x88\x9e\x18K\xb9v\xb3\x03\x08\
-\x9dR\x11\xaa\x90\xb8P\xefZ\xc50}\xb1\xcb@\xc5\
-\xb0\x0e\xf4&\xadW\xf9U.\xe1\xe1\xc6\xd22\xf5\xcc\
-p}\xc9\x84-\xe9J\x19\x10\x9c\x1a\xc0s\xe5f\x97\
-+7\xbb\xacQW?\xd7\xaad~\xc5'\xa2)\xac\
-\x05\x15\xc3\x9c\x0b\xb5w\xa6l\x17\xa8\xc1\xa9 \xc8\x1a\
-5\xaf\x9b5\x1a\x8fY1\x9e\xfe{\xe9\xef\x14\x00\xf1\
-\x82\xef\x9bX0+WV\x02U!\xd1\x90\xfc\xe7S\
-\xdf\xf2\xeb\x99\x13,-\xde\xb8\xa7\xfaWj\x03<\xf5\
-\xecN\x9eya\x02\x0f\xa83[1\x10\x03|\x87\xf7\
-\xf7\xbf\xc1\xc2\xc2\x02\xb7n\xdd\xa2(\x0aD\x04k-\
-\xd6ZT\x15U\xc59\x87\xaab\xad\xc5\x98\xf0\xdf\xe5\
-\xe5e\xf2<\xef\xf7#\xcd\xf9\xb8\xf2-\x18pVP\
-\x17\x18\xdc1:\xb6rO8~\x9c\xe9\xe9i\x8c1\
-x\xef\x99\x98\x98`rr\xf2\x8eY\xd81:\xd6\xdf\
-\x86\xae\xd4\x09Up6\xac\xa2V\xaf\xf7k933\
-\xc3\xd0\xd0\x10\xd6Z\xbc\xf74\x9b\xcd\xbb\x02P\xab\xd7\
-p\xd1\x88\xb4\xd4\x88\x14\x9c\x0b'\x5c\xa0*\x00\xa8V\
-\xabdY\xd6\xa7\xb87\xdeis\x1a\xa9\x17AK\xad\
-8\x1e\xc7\xbd#\xb4\xd7\x8c1\x88D\xdf\x8f:\xb8\xab\
-\x9b\xaf5\xa8\x0d\xf3\xf6\x18.=\x8e\x83)m\xe3\xd5\
-\xdb\x12\xa9\xf7\xe5Vl\xad\xf4\x91\x0e\x8e\x0c\xc3\xf2\xef\
-\xdb\x02\xe0\xa1\x91a\xd4\xc2\xb5+\x97Y\x9c\xbf\xbe\x05\
-\x036\xf8\xc0`\xad\x02\x0b\xdb\xc3\xc0P\xad\xc2\xec\xc5\
-K\x9c\xfd\xee\x1b\xce\x9f\x9c\x9e\x03\xa66\x04`$^\
-J\x05\x12\x0b\xed\x91'\xa9=\x0co\x1f8\xc8f\xc7\
-\x81':\xf1*\xe75\x1e2\x81\x14(\xbap\xf9\xea\
-U\xce4\x8e\xd1\xfc\xfa\x8b\xb9\xd9\x1fN\x1d\x02\x0eo\
-\x08\xe0\xb3\x8f>\xe0\xa7\xd3'W\x99\xe9\xda\xa3\x86U\
-\xe6\xbb\x1e\x04\x1b<_\x1do|w\xee\x8f\xd9_\x0e\
-\x01\x87\x1b\x8d\xc6_\x1b\x01\x98\x9a\xfe\xf4\xe3\x7f\xf5s\
-l}\xf25\x00\xe2\xb7\xda\x81\xff\xdd\xd7\xf1?M\xf0\
-K\xb9\xe8F\x89\xaf\x00\x00\x00\x00IEND\xaeB\
-`\x82\
\x00\x00\x08\x19\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -215,91 +138,62 @@ H\x8f\xaa\x1e/\x9a5\xe6\xc7\x7fz\xf3-Wx\xac\
\xff\xdam\x8a\xdda\x99\xd5\x1b\xb6\xd8k\xbb^2\xbe\
/\x89\xff\x01f\xb9_\xfc\x11\x80=\xcf\x00\x00\x00\x00\
IEND\xaeB`\x82\
-\x00\x00\x05+\
+\x00\x00\x03T\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
\x00\x00\x00\x19tEXtSoftware\
\x00Adobe ImageRead\
-yq\xc9e<\x00\x00\x04\xbdIDATX\xc3\xed\
-WkL\x93W\x18>#q\xc92\xe9\x16\x97\xa8T\
-e8\x9d\x02\x15\xf6\x03\x872\x93\x01f,[p\xc4\
-0\xff`\xa2.\x1a:\x1dN\x03\xba1\x89[\xb3\x80\
-\xd9\x0c\x84\x02\x19X\x1c\x14\x8b\x85\xb2\x82\x95^\xe4f\
-\x0b\x8e1\xf8\xc3F\xcb-\x81\x15\xdc\xa8\xc2\x1c\x1b\xb7\
-ji\x91\xf2\xee\xbc\x87\xaf\x0c\xdc\xb8\x0da\xd9\xb2\x93\
-<\xed\x97\xf3}\xfd\xde\xe7\xbc\xef\xf3^J\x00\x80\xfc\
-\x93 \xff\x0a\x02t\x09(D\x14\xd9\x14q\x14\x01+\
-F\x80\xae\xddd\xdd\xc6f\x22L\xf8\x95\xc4\x8bG\xc8\
-\xa1\xd3\xf7\xc8\x8e\x97;82a+A \x85\x9c\xbe\
-0H.\xdd\x80\x19@2\xabyM\xf4\xbe\xfbr\x13\
-hd\x06\x91\x04^\xa3Q\xf4\x06\xee\x85G\xf5\xd0\xbd\
-\x83\xcbM \x9b\x9d\xf6@t/\xbd\x162= \x89\
-?H\xa5,\x1b\x01\x8c1y\xc1\xbb\x9d\x88K\xc6\xd7\
-\xc6&\x0e\xa0\x10\xb9\xfdB\xfe\xc5+6F\x8c\x12\x5c\
-N\x02\x93\xa7\xa7\xa7\x0d\xcc\xd39\xb9\x98c6\x14\x0a\
-\xd2\xe4\xa3+A \x8c)\x9e*\xdf7G\xeb\xdc{\
-\xb5\xcc\x89\x9e@D\x96T\x83+,\x0b6FH\x08\
-\x13\xf5d*{.T\x03\x01\xf8\x037\xbf\xc0\x0e4\
-*T\xdfb\x88R\xd5,X\x03t\x1d\x16\x08\x04z\
-EU\xf5\xc8\xa0mt\xc2\xd4s\xf7!\xbesQ\x95\
-\x90\xae\x8f\xd0\x13\xcf\xe5\x94\x83\x87\xb4\x02\x9e\xcc.\x03\
-\xd4\x06\xdd\xaf\x99\xcb\xb0\xaf\xaf\xaf>\xbf\xd2`\xb5\xdb\
-\xed\x80\xf8y\xe4>\xc4^\xab\xb4\xb9\x88/\x86\x80'\
-\xd3\xc0g\xf9\x8e\x19\xf5`\xd7^3\xbav\xdas\xee\
-h\xd8\xc7\xc7G\x9f\xab\xab\xb0\x0e\x0f\x0d\xc1\x10\x87\xb2\
-\xf6.\xe7\x967\xf7wsa\xd8\xbd\xe8^\x80/f\
-\x9a\xa0\x86\xdf\xa96B\xf7\xf0\x03\xd8\x19\x9f\xd4\xcf\xa5\
-\xe7\x1a\x8a\x98-~\xfem\x97T\x1ak__\x1f\xb8\
-\xd0\xd1s\x07br\x15VN\xc4\x87\x97\xd4\x8c0\x14\
-\xe9\x15\xb7\x1e8\x1c\x0e@\xa4\xd6\x191\x9e\x85\x9b\x05\
-~m\xa9%\x1a[\x97\xd9\x0c\xe6.\x0a\xf3$\x14\xdf\
-6\x8e{\xbd\x1e\xd1\xcdB\xc8\x09o\xa9\x04<\xd1\xbd\
-V\xab\x15\x10w\x7f\x1b\x84\xf3\x92\x5c\xbbR\xa9\x84\xfa\
-\xfaz0\x99L\x0cu\xdf5\xc1Q\xb1d\x18\xc9Q\
-D>\xb6v\xcc\xb4@O\x93_~\xd3\xd6\xdf\xdf\x0f\
-2\x99\x0cD\x22\x11\xa8T*\x90J\xa5\xa0\xd1h \
-K[9\xbe\xe9\x95\xe0\x1f\xb8S\xafy,\xf3\x00\x97\
-\x8e\x22\x9e\xc7\x86\xe6S)\x19\xf6\x82\x82\x02\xe6\xe2\xa0\
-\xa0 \xe0\xf1x`\xb1X@[^\x01\xfb\xcf&\x0c\
--\xa6S\xceg\x94\xcf\x09L\x83\xe2[{\xe6\xc2`\
-\x9a\xb2\x14\x14\x0a\x05\x88\xc5b\xc8\xcc\xcc\x84\xa2\xa2\x22\
-P\xab\xd5\xd0\xd9\xd9\xc9`\xec\xfe\xc9\xb9\xc9\xdb\xa7u\
-.\xb7\xcfK\x80\xae\xb7\xd8)p\x0e\xc0j\x97\xacx\
-\x88\xca\x7f\x82\xe2)\x89\x0e>\x97+![\x96\x0f\x07\
-c\xe3G\x84\x1f&\xd8\x92rd\x8eo\x1a\xbf\x07\xa3\
-\xd1\x08-\xad-\xf0\xcb\xc0 \x1c8\xf1\xbe\x05\xb3b\
-\xc1\x04\x5ci\x84\x85\x85\x84F\xdc&\xe72\xac,\xcf\
-3\xb5\x13\xec;\xe3\xba\xd33\xaf\x82\xe5\xfez\x89\x06\
-\x9e\xde\xfcb\x1b\xf7<\x92\x8d{f\xabO[\xca5\
-\xedXCC=444\x80\xa5\xb7\x172\x14\xc5\xc3\
-\xf3\xe9\xc0e<\x92\xe5(\x9e6]\xe5\x9c*2x\
-}\xf4\x83.Zl\x121\x0c\x1b%\xeaq\xf7/\xcb\
-'\xef\x05\x87_\xfe\xd3\xe4D\x0bLh\xf4\xc9>u\
-\x95\x1e\x0c\x06\x03\xb4\xb7\xb7\xc3\xd7\xc6\x961\xae\x81\x09\
-f\xf16m8h<I::e\xf8b\x81\x83D\
-\xbdWC\xb6\x0a^\x9b*\xc3\x94\x5c\xb0B\x0f\xab$\
-\xb4\x04\x9fJ\xaa\x9bC71(\xd4O\xf2\x0a\xc7t\
-:\x1d\xd4\xd6\xd6\x82\xc9|\xdb\xb9a\x9b\xf7_\xeab\
-\xb2\xe5~\x9cu\x1f\x0d\xf3\xb2\xd4N\xf2\xf6\xb1\xeb.\
-\xb6\xae\x94\xc3\x90l\x97U\xc1KW\xab\x80\x9cMn\
-Z\xd0\x1cI\xbd\xb1\xe7\x88\xb0\xef\xcaW\xc5PZZ\
-\x0a\x1d?\xf6L\x04\x06\x87t<\xaa\x0b\xc2\x84F\x8d\
-\x07\xc8o\x02\xd9\xf9\xaa~\x9a\xf10F\x8e6 \xaf\
-\xbcJxCi\x00\x92(\x1d\x98\xcd\x95\xb3y\xc3}\
-=\xbf\xf9Dj\xa6].\x97CSK+D\x1c{\
-\xf7\xce\xf4\x14%\xae\xf1\x8a\xf5w\x9c\xf5p\x02\xc2\xd9\
-\x0f\x89\xd1\x81\x03O\x8e\xf7\xdc\xd2i\xe7\xf3\xdfu\xfc\
-o\x14.6\xd2\xef\xd8\x17iI\xbe,\x9d\xc8\xd3\x96\
-;\xa7\x0f1\x8c%\xc6\xdf\x9f\xbaw_q5\xa0A\
-l\xb5\x08\x8c\xf9\x94\xf1\xe0\xf03K\x9a|h\x13Z\
-\xbd\xce\xa3\xd9kOH\xf7\x0c\x0f\xb0\x0f\xfe\xf3\x87\xc8\
-\xf9/\xee\xb9In\x00\xf6{>\xed\xf7\x08\x1e*>\
-]\xe5X\xaa\xf1GZ\xf5\xb6Y\x0b\x11\x1d\xb3C\xc9\
-\x918\x099\xf9\xa9\x96!\xfa\x5c\x1a\x0d\xcf\xb3\xff\xff\
-7\xfcO\x13\xf8\x1d\xe7\x87\x19\xb9D\xc3\x01\xcf\x00\x00\
-\x00\x00IEND\xaeB`\x82\
+yq\xc9e<\x00\x00\x02\xe6IDATX\xc3\xd5\
+\x97\xcdN\x13a\x14\x86\xeb5\x94\x95{q\xe1\xd2\xc4\
+\xe0\x05\xb8\xe2\x0e\x5c\xb8\xf4\x02\x5c\xb10\xea\x05\x18\x96\
+&bX\xb8\xb0\x91X \xd1\x9d\xbf\x89\xa4\x14\xb1R\
+\xa4HE\x94\xfe\xd0\x02C\xff\xa6\x9d\x19\xa6e\x80\xe3\
+y{\xfa\x85QJ\x82\xc9!\x86I\xde\x9c3\xa7\xf3\
+\xcd\xfb\x9c\xf3M\x9bN\x84\x88\x22\xffS\x91s\x01\xc0\
+\xc7\xd5\x90n\xff\xa5\xfb\xac\xc7==d\x0d\xa9\x02\xf0\
+12<<\xbcj4::\xba\x19V<\x1e\xaf&\
+\x93\xc9V:\x9dv\x13\x89Dk`` \xcdkn\
+h\x02\xa48\xd2\xe1\xe1q\x99\xba\xef\xb7\xc9\xb2,\xda\
+\xdf\xdf'\x86\xf1x\xcd\x18\xeb\x8a\x1a@?\xf3\xb0\x1c\
+\xc7\xa5Lf\xb9\x0b\x14\x04\x01\xc5b\xb1:\xaf{p\
+\x1a\x88S\x01\x1c\x1c\x10ww\xb2l\xdb\xa1\xf9\xf9\xcf\
+d\x0e\xd7u\xe9\xf9\xc4D\x17B\x05\x00&{\xc1\xc9\
+\xaa7\x1cJ\xce\xcdS\xf8p]\x0f\x8b\x17T\x00\x82\
+\x10@gO\x14\xce\xed\xa6G\x1fgf\xe9\xf5\x9b\xb7\
+\x14\x9f\x9c\xa4\xa9\xa9iz\xf7\xfe\x03E\xa3\xd1e^\
+\x7fA\x05\xc0\xef\x10\xed\xb6%\x86\x85\x9a\xe3\x05\x94]\
+\xcd\xd1\xe4\xf4+z2\xfe\x94\x9e\xc5^\xd0Lb\x0e\
+\x8b\x17U\x00\xda\x81\x18\xf5\x13 <\xff\x90j\xcd6\
+\x157\xab\x94/nS\x89c\x8d\xb7\x85\xd7~Q\x01\
+\xf0y\xcc\xcd]\x1e\xb5\xc7{\xdb\xee\x9f;\xbe\xe4\x88\
+]\xb8\xbd\xee\xe2\x94\xca3\xe0u\xe4\xc6uWb\xd8\
+\x109\xea\xe63D\xd4\x01\xa7\x06\xe0\xf4:\xad9\x22\
+\x98\x98hr\x80\x98kPS\x9d\x00\x00*-\xb91\
+\xe2NS\x8c\x10\x0d\x04\xf2m\xfb(\xb6|E\x00\x9b\
+;\xdbj\xfci\x8e<l\x88\x1a\xae9\x13\x80:\x8f\
+\xb7T#*\xd7\xc5\x04\x06\x06\x005(\x9c\x17\xab\xbc\
+%\xbb\xca\x13\xc0Ma\x0e\x15*rn\xcc~Z\x02\
+hj\xdd\xad\xf1\x94'\x00S\xdc\x1cqm[@`\
+\x9a\xab\x1cu\x9e\xeb\x81A\x15G\x11\xc0j\x891\x0c\
+\xd6w\x04 \x0cd&b\xb6iu\x8b\xa8\xaa\x09P\
+\xb6\xc5\xbc\xd0\x03\xf8\xbe)c\x87)`\x0c\x18\x84\x1c\
+\x00[ME\x00t\x03S\x98\xad\x94\xc5\x1c\xe7F\xe6\
+\x1c\x00\xc8q]\xa9\xa1\x08\x80\xfd\xfcV\x12s3\x01\
+\x085\x18B\xe8\xda|\x8e)\xa8N\x00[\x00\x03\xc8\
+\x98g6\x04\x002\xe6\x85\xde\xf8\x17\x0b\xfc,\xd8\x8a\
+\x00\x18g:O\xb4T\x14#\x98\x02\x00\x02\x0c>\xfb\
+\xc5S(\xf0C\xb8fI\xf7k\xf9R\x87\xd7\xbeT\
+\x01\xc8U\x8f\xbaN\xadK\x0e\x90\xaf\x85\xde\xb7\xc2\x92\
+=O\xa6\xb3\xde\xa3\xb1q\xeb\xda\xd0\xf5\x15\x98\xb3n\
+\xa9\x00l4\xa4k\x18\xff\xe0\x11\x7fZ\x17S\xd4\x13\
+\x0bYo\xe4\xee\xbd\xe2\xa5\xc1\xcbK|m\x8cu\x87\
+5\xa8\xfa\xb7\x1c\xdde\xd9<\x8f\x1f\x19\xfe\x9e\xcf\x1e\
+7\xbd\xc9\xbax&oF\x00h\xf2\xff\x81\x99\x94\x9e\
+\xe9?\xbf\x19\x01B\xd3\xf4\xfc\xbd\x9c\x9e\xa5~\x03Q\
+l%\xa1\x92\x95\x0aw\x00\x00\x00\x00IEND\xae\
+B`\x82\
\x00\x00\x05:\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -386,62 +280,91 @@ gSuV\x00\x8d\x8d\x8dn\x8b\xc5\x82\x81\x81\x81H\
mm\xad377WV\xd3\xdd\x00\xf8\x7fFL\xc2\
A\x99n\xd7\xdfC9V\x18\x85p\xc8\x04\x00\x00\x00\
\x00IEND\xaeB`\x82\
-\x00\x00\x03T\
+\x00\x00\x05+\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
\x00\x00\x00\x19tEXtSoftware\
\x00Adobe ImageRead\
-yq\xc9e<\x00\x00\x02\xe6IDATX\xc3\xd5\
-\x97\xcdN\x13a\x14\x86\xeb5\x94\x95{q\xe1\xd2\xc4\
-\xe0\x05\xb8\xe2\x0e\x5c\xb8\xf4\x02\x5c\xb10\xea\x05\x18\x96\
-&bX\xb8\xb0\x91X \xd1\x9d\xbf\x89\xa4\x14\xb1R\
-\xa4HE\x94\xfe\xd0\x02C\xff\xa6\x9d\x19\xa6e\x80\xe3\
-y{\xfa\x85QJ\x82\xc9!\x86I\xde\x9c3\xa7\xf3\
-\xcd\xfb\x9c\xf3M\x9bN\x84\x88\x22\xffS\x91s\x01\xc0\
-\xc7\xd5\x90n\xff\xa5\xfb\xac\xc7==d\x0d\xa9\x02\xf0\
-12<<\xbcj4::\xba\x19V<\x1e\xaf&\
-\x93\xc9V:\x9dv\x13\x89Dk`` \xcdkn\
-h\x02\xa48\xd2\xe1\xe1q\x99\xba\xef\xb7\xc9\xb2,\xda\
-\xdf\xdf'\x86\xf1x\xcd\x18\xeb\x8a\x1a@?\xf3\xb0\x1c\
-\xc7\xa5Lf\xb9\x0b\x14\x04\x01\xc5b\xb1:\xaf{p\
-\x1a\x88S\x01\x1c\x1c\x10ww\xb2l\xdb\xa1\xf9\xf9\xcf\
-d\x0e\xd7u\xe9\xf9\xc4D\x17B\x05\x00&{\xc1\xc9\
-\xaa7\x1cJ\xce\xcdS\xf8p]\x0f\x8b\x17T\x00\x82\
-\x10@gO\x14\xce\xed\xa6G\x1fgf\xe9\xf5\x9b\xb7\
-\x14\x9f\x9c\xa4\xa9\xa9iz\xf7\xfe\x03E\xa3\xd1e^\
-\x7fA\x05\xc0\xef\x10\xed\xb6%\x86\x85\x9a\xe3\x05\x94]\
-\xcd\xd1\xe4\xf4+z2\xfe\x94\x9e\xc5^\xd0Lb\x0e\
-\x8b\x17U\x00\xda\x81\x18\xf5\x13 <\xff\x90j\xcd6\
-\x157\xab\x94/nS\x89c\x8d\xb7\x85\xd7~Q\x01\
-\xf0y\xcc\xcd]\x1e\xb5\xc7{\xdb\xee\x9f;\xbe\xe4\x88\
-]\xb8\xbd\xee\xe2\x94\xca3\xe0u\xe4\xc6uWb\xd8\
-\x109\xea\xe63D\xd4\x01\xa7\x06\xe0\xf4:\xad9\x22\
-\x98\x98hr\x80\x98kPS\x9d\x00\x00*-\xb91\
-\xe2NS\x8c\x10\x0d\x04\xf2m\xfb(\xb6|E\x00\x9b\
-;\xdbj\xfci\x8e<l\x88\x1a\xae9\x13\x80:\x8f\
-\xb7T#*\xd7\xc5\x04\x06\x06\x005(\x9c\x17\xab\xbc\
-%\xbb\xca\x13\xc0Ma\x0e\x15*rn\xcc~Z\x02\
-hj\xdd\xad\xf1\x94'\x00S\xdc\x1cqm[@`\
-\x9a\xab\x1cu\x9e\xeb\x81A\x15G\x11\xc0j\x891\x0c\
-\xd6w\x04 \x0cd&b\xb6iu\x8b\xa8\xaa\x09P\
-\xb6\xc5\xbc\xd0\x03\xf8\xbe)c\x87)`\x0c\x18\x84\x1c\
-\x00[ME\x00t\x03S\x98\xad\x94\xc5\x1c\xe7F\xe6\
-\x1c\x00\xc8q]\xa9\xa1\x08\x80\xfd\xfcV\x12s3\x01\
-\x085\x18B\xe8\xda|\x8e)\xa8N\x00[\x00\x03\xc8\
-\x98g6\x04\x002\xe6\x85\xde\xf8\x17\x0b\xfc,\xd8\x8a\
-\x00\x18g:O\xb4T\x14#\x98\x02\x00\x02\x0c>\xfb\
-\xc5S(\xf0C\xb8fI\xf7k\xf9R\x87\xd7\xbeT\
-\x01\xc8U\x8f\xbaN\xadK\x0e\x90\xaf\x85\xde\xb7\xc2\x92\
-=O\xa6\xb3\xde\xa3\xb1q\xeb\xda\xd0\xf5\x15\x98\xb3n\
-\xa9\x00l4\xa4k\x18\xff\xe0\x11\x7fZ\x17S\xd4\x13\
-\x0bYo\xe4\xee\xbd\xe2\xa5\xc1\xcbK|m\x8cu\x87\
-5\xa8\xfa\xb7\x1c\xdde\xd9<\x8f\x1f\x19\xfe\x9e\xcf\x1e\
-7\xbd\xc9\xbax&oF\x00h\xf2\xff\x81\x99\x94\x9e\
-\xe9?\xbf\x19\x01B\xd3\xf4\xfc\xbd\x9c\x9e\xa5~\x03Q\
-l%\xa1\x92\x95\x0aw\x00\x00\x00\x00IEND\xae\
-B`\x82\
+yq\xc9e<\x00\x00\x04\xbdIDATX\xc3\xed\
+WkL\x93W\x18>#q\xc92\xe9\x16\x97\xa8T\
+e8\x9d\x02\x15\xf6\x03\x872\x93\x01f,[p\xc4\
+0\xff`\xa2.\x1a:\x1dN\x03\xba1\x89[\xb3\x80\
+\xd9\x0c\x84\x02\x19X\x1c\x14\x8b\x85\xb2\x82\x95^\xe4f\
+\x0b\x8e1\xf8\xc3F\xcb-\x81\x15\xdc\xa8\xc2\x1c\x1b\xb7\
+ji\x91\xf2\xee\xbc\x87\xaf\x0c\xdc\xb8\x0da\xd9\xb2\x93\
+<\xed\x97\xf3}\xfd\xde\xe7\xbc\xef\xf3^J\x00\x80\xfc\
+\x93 \xff\x0a\x02t\x09(D\x14\xd9\x14q\x14\x01+\
+F\x80\xae\xddd\xdd\xc6f\x22L\xf8\x95\xc4\x8bG\xc8\
+\xa1\xd3\xf7\xc8\x8e\x97;82a+A \x85\x9c\xbe\
+0H.\xdd\x80\x19@2\xabyM\xf4\xbe\xfbr\x13\
+hd\x06\x91\x04^\xa3Q\xf4\x06\xee\x85G\xf5\xd0\xbd\
+\x83\xcbM \x9b\x9d\xf6@t/\xbd\x162= \x89\
+?H\xa5,\x1b\x01\x8c1y\xc1\xbb\x9d\x88K\xc6\xd7\
+\xc6&\x0e\xa0\x10\xb9\xfdB\xfe\xc5+6F\x8c\x12\x5c\
+N\x02\x93\xa7\xa7\xa7\x0d\xcc\xd39\xb9\x98c6\x14\x0a\
+\xd2\xe4\xa3+A \x8c)\x9e*\xdf7G\xeb\xdc{\
+\xb5\xcc\x89\x9e@D\x96T\x83+,\x0b6FH\x08\
+\x13\xf5d*{.T\x03\x01\xf8\x037\xbf\xc0\x0e4\
+*T\xdfb\x88R\xd5,X\x03t\x1d\x16\x08\x04z\
+EU\xf5\xc8\xa0mt\xc2\xd4s\xf7!\xbesQ\x95\
+\x90\xae\x8f\xd0\x13\xcf\xe5\x94\x83\x87\xb4\x02\x9e\xcc.\x03\
+\xd4\x06\xdd\xaf\x99\xcb\xb0\xaf\xaf\xaf>\xbf\xd2`\xb5\xdb\
+\xed\x80\xf8y\xe4>\xc4^\xab\xb4\xb9\x88/\x86\x80'\
+\xd3\xc0g\xf9\x8e\x19\xf5`\xd7^3\xbav\xdas\xee\
+h\xd8\xc7\xc7G\x9f\xab\xab\xb0\x0e\x0f\x0d\xc1\x10\x87\xb2\
+\xf6.\xe7\x967\xf7wsa\xd8\xbd\xe8^\x80/f\
+\x9a\xa0\x86\xdf\xa96B\xf7\xf0\x03\xd8\x19\x9f\xd4\xcf\xa5\
+\xe7\x1a\x8a\x98-~\xfem\x97T\x1ak__\x1f\xb8\
+\xd0\xd1s\x07br\x15VN\xc4\x87\x97\xd4\x8c0\x14\
+\xe9\x15\xb7\x1e8\x1c\x0e@\xa4\xd6\x191\x9e\x85\x9b\x05\
+~m\xa9%\x1a[\x97\xd9\x0c\xe6.\x0a\xf3$\x14\xdf\
+6\x8e{\xbd\x1e\xd1\xcdB\xc8\x09o\xa9\x04<\xd1\xbd\
+V\xab\x15\x10w\x7f\x1b\x84\xf3\x92\x5c\xbbR\xa9\x84\xfa\
+\xfaz0\x99L\x0cu\xdf5\xc1Q\xb1d\x18\xc9Q\
+D>\xb6v\xcc\xb4@O\x93_~\xd3\xd6\xdf\xdf\x0f\
+2\x99\x0cD\x22\x11\xa8T*\x90J\xa5\xa0\xd1h \
+K[9\xbe\xe9\x95\xe0\x1f\xb8S\xafy,\xf3\x00\x97\
+\x8e\x22\x9e\xc7\x86\xe6S)\x19\xf6\x82\x82\x02\xe6\xe2\xa0\
+\xa0 \xe0\xf1x`\xb1X@[^\x01\xfb\xcf&\x0c\
+-\xa6S\xceg\x94\xcf\x09L\x83\xe2[{\xe6\xc2`\
+\x9a\xb2\x14\x14\x0a\x05\x88\xc5b\xc8\xcc\xcc\x84\xa2\xa2\x22\
+P\xab\xd5\xd0\xd9\xd9\xc9`\xec\xfe\xc9\xb9\xc9\xdb\xa7u\
+.\xb7\xcfK\x80\xae\xb7\xd8)p\x0e\xc0j\x97\xacx\
+\x88\xca\x7f\x82\xe2)\x89\x0e>\x97+![\x96\x0f\x07\
+c\xe3G\x84\x1f&\xd8\x92rd\x8eo\x1a\xbf\x07\xa3\
+\xd1\x08-\xad-\xf0\xcb\xc0 \x1c8\xf1\xbe\x05\xb3b\
+\xc1\x04\x5ci\x84\x85\x85\x84F\xdc&\xe72\xac,\xcf\
+3\xb5\x13\xec;\xe3\xba\xd33\xaf\x82\xe5\xfez\x89\x06\
+\x9e\xde\xfcb\x1b\xf7<\x92\x8d{f\xabO[\xca5\
+\xedXCC=444\x80\xa5\xb7\x172\x14\xc5\xc3\
+\xf3\xe9\xc0e<\x92\xe5(\x9e6]\xe5\x9c*2x\
+}\xf4\x83.Zl\x121\x0c\x1b%\xeaq\xf7/\xcb\
+'\xef\x05\x87_\xfe\xd3\xe4D\x0bLh\xf4\xc9>u\
+\x95\x1e\x0c\x06\x03\xb4\xb7\xb7\xc3\xd7\xc6\x961\xae\x81\x09\
+f\xf16m8h<I::e\xf8b\x81\x83D\
+\xbdWC\xb6\x0a^\x9b*\xc3\x94\x5c\xb0B\x0f\xab$\
+\xb4\x04\x9fJ\xaa\x9bC71(\xd4O\xf2\x0a\xc7t\
+:\x1d\xd4\xd6\xd6\x82\xc9|\xdb\xb9a\x9b\xf7_\xeab\
+\xb2\xe5~\x9cu\x1f\x0d\xf3\xb2\xd4N\xf2\xf6\xb1\xeb.\
+\xb6\xae\x94\xc3\x90l\x97U\xc1KW\xab\x80\x9cMn\
+Z\xd0\x1cI\xbd\xb1\xe7\x88\xb0\xef\xcaW\xc5PZZ\
+\x0a\x1d?\xf6L\x04\x06\x87t<\xaa\x0b\xc2\x84F\x8d\
+\x07\xc8o\x02\xd9\xf9\xaa~\x9a\xf10F\x8e6 \xaf\
+\xbcJxCi\x00\x92(\x1d\x98\xcd\x95\xb3y\xc3}\
+=\xbf\xf9Dj\xa6].\x97CSK+D\x1c{\
+\xf7\xce\xf4\x14%\xae\xf1\x8a\xf5w\x9c\xf5p\x02\xc2\xd9\
+\x0f\x89\xd1\x81\x03O\x8e\xf7\xdc\xd2i\xe7\xf3\xdfu\xfc\
+o\x14.6\xd2\xef\xd8\x17iI\xbe,\x9d\xc8\xd3\x96\
+;\xa7\x0f1\x8c%\xc6\xdf\x9f\xbaw_q5\xa0A\
+l\xb5\x08\x8c\xf9\x94\xf1\xe0\xf03K\x9a|h\x13Z\
+\xbd\xce\xa3\xd9kOH\xf7\x0c\x0f\xb0\x0f\xfe\xf3\x87\xc8\
+\xf9/\xee\xb9In\x00\xf6{>\xed\xf7\x08\x1e*>\
+]\xe5X\xaa\xf1GZ\xf5\xb6Y\x0b\x11\x1d\xb3C\xc9\
+\x918\x099\xf9\xa9\x96!\xfa\x5c\x1a\x0d\xcf\xb3\xff\xff\
+7\xfcO\x13\xf8\x1d\xe7\x87\x19\xb9D\xc3\x01\xcf\x00\x00\
+\x00\x00IEND\xaeB`\x82\
\x00\x00\x06m\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -547,6 +470,83 @@ n\x11`p\xf0\xfdt___\xfa\xcc\x993\xa6\xc5\
\xa5\xd0\x8fx\x02\x89\xb5\x9ec!D\x18x\x13\xd8O\
is\x06\xb4\xf8\xb1\xfa\x1f\xbd\xfa*_\xf2\xd8\x15\x9d\
\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x04\xa3\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
+\x00\x00\x00\x19tEXtSoftware\
+\x00Adobe ImageRead\
+yq\xc9e<\x00\x00\x045IDATX\xc3\xe5\
+\x97\xcd\x8fTE\x14\xc5\x7f\xb7\xea\xd6{\xaf\xdbn\xc7\
+\xf9@\x9d\x89FM4\x99D\x8d\x1aH\x98\xc4\x8c\x1f\
+\x1b\xfe\x02L\x5c\xf1\x07\x18\x16.M\x5ckX\xc3\x8e\
+\xc4\x8d\x1b\x17\xce\x82htA\x5c\x18\x0d\xe2\xc4\xc6\x00\
+=`PQ\x19`\x02\xa2\x0e\x0c\x83\xd3\xfd^\xf7\x94\
+\x8b\xaa\xee\xf9`\xe6\x0d\x84Q\x16VR\xa9\xce{\xb7\
+\xeb\x9e:\xf7\xd4\xa9z\xea\xbd\xe7~6\xe5>\xb7>\
+\x80]\xbbv\xbd\x03\xec\xfd\x8f\xf2N5\x1a\x8d\x03\xeb\
+\x19\xd8\xbb\xef\xbd\xa3;\x1f\x1fv\x00\x9c<:\xcf\xcc\
+\x977X\x9c\xef\xdcS\xa6\xda\xa0\xf2\xdck\x03\xbc\xb8\
+g\x10\x80\x8b\x7f\x16|\xf8\xee\x1e\x80\xdb\x00p\xfc\xec\
+\x1c\xdf?0\x04x.\xfd\xb8\xc0\xfe\xb7\xceo\xcbr\
+\x0f\x1dy\x9a\x0b#\x96\xd3\x9f\x1fd\xfc\xd5}\x9bk\
+@E\xb0\x16@xp,#\xcb\xb2m\x0100\x96\
+a\x8dP\x1b|\x14#%\x22\x14+\xd8\x18\x91\xd5\x95\
+s\xe7\xce\x83*\xb8\x04\xd2\x14\xb2\x0c\xd2,\x8cI\x0a\
+I\x12\xdew:\x90\xe7\x90\xb7\xa1\xd5\x82v+\x8em\
+(r\xb2\xfa8\xd6\x0a\xe3\xaf\xbcIk\xf1\xfa\xe6\x00\
+\xac\x15\xac\x15\x04\xb0F\xd8\xbd{\xe7\x16k\xeb\x86\xae\
+\x80Z\xa8V\x81\xeamQ\x8d\xaf\x04\xb5\x82\xf7\xa0\xa6\
+\x84\x01g\x055\x82\x08\xa8\x0a\x95,\xc3# \x1e\x08\
+\xc0\xf0\x1e/\x02\xde#\x12&\x15|\x88#\xc4!\x1e\
+<!^@MX\x18@\xd7J\x89\x06\xac\xa0\xdac\
+\x00\x9a3\xbf\x05\x8aS\x07i\x02\x95\x04\xb24\xf6\x04\
+\x12\x07N\xa1\xe8@^@+\x8f\xbd\x05K9\xb4s\
+\xc8\x0bT\x87q=\x00*\xe5%p1@\xd509\
+\xf9\xd2\xd6\x0a\xf3>\xd0\xaf\x16\xaa\x1b\x8b\xf6\xd8'a\
+a\xbd\x1c%% \x00\xf0\x81\x8d4M\xa3:\xc3\xb3\
+\x98\x11\x89l\x07\xdac\x09V\x98_)F\xfca\xcd\
+r\x7fa\x1d-\xd1\x80:\x09TI\x18O4/\xe0\
+\x9d\x85\xc4!\x89\xc3g\x09\x92i\xd8\x11\x89\xe2\x13\x87\
+X\x8b\xefv\x91\xbc\x80\xbc\x03\xed\x02\xdfj#\xed\x02\
+\xf2\x02\x9fwP\x1dE\xd5 x:\xebTx\x9b\x06\
+\x9c3x\x0f\x03\x8f$\xbc\xfe\xf2\xf3wh\xe86h\
+\xa4\xbe\xf1\xeb\xc6\xfc\xdf\xb1\x04R^\x82DM_\x84\
+\x8f\x0d\xa58\xe7\xb6\xc5\x88\x9e\x18K\xb9v\xb3\x03\x08\
+\x9dR\x11\xaa\x90\xb8P\xefZ\xc50}\xb1\xcb@\xc5\
+\xb0\x0e\xf4&\xadW\xf9U.\xe1\xe1\xc6\xd22\xf5\xcc\
+p}\xc9\x84-\xe9J\x19\x10\x9c\x1a\xc0s\xe5f\x97\
++7\xbb\xacQW?\xd7\xaad~\xc5'\xa2)\xac\
+\x05\x15\xc3\x9c\x0b\xb5w\xa6l\x17\xa8\xc1\xa9 \xc8\x1a\
+5\xaf\x9b5\x1a\x8fY1\x9e\xfe{\xe9\xef\x14\x00\xf1\
+\x82\xef\x9bX0+WV\x02U!\xd1\x90\xfc\xe7S\
+\xdf\xf2\xeb\x99\x13,-\xde\xb8\xa7\xfaWj\x03<\xf5\
+\xecN\x9eya\x02\x0f\xa83[1\x10\x03|\x87\xf7\
+\xf7\xbf\xc1\xc2\xc2\x02\xb7n\xdd\xa2(\x0aD\x04k-\
+\xd6ZT\x15U\xc59\x87\xaab\xad\xc5\x98\xf0\xdf\xe5\
+\xe5e\xf2<\xef\xf7#\xcd\xf9\xb8\xf2-\x18pVP\
+\x17\x18\xdc1:\xb6rO8~\x9c\xe9\xe9i\x8c1\
+x\xef\x99\x98\x98`rr\xf2\x8eY\xd81:\xd6\xdf\
+\x86\xae\xd4\x09Up6\xac\xa2V\xaf\xf7k933\
+\xc3\xd0\xd0\x10\xd6Z\xbc\xf74\x9b\xcd\xbb\x02P\xab\xd7\
+p\xd1\x88\xb4\xd4\x88\x14\x9c\x0b'\x5c\xa0*\x00\xa8V\
+\xabdY\xd6\xa7\xb87\xdeis\x1a\xa9\x17AK\xad\
+8\x1e\xc7\xbd#\xb4\xd7\x8c1\x88D\xdf\x8f:\xb8\xab\
+\x9b\xaf5\xa8\x0d\xf3\xf6\x18.=\x8e\x83)m\xe3\xd5\
+\xdb\x12\xa9\xf7\xe5Vl\xad\xf4\x91\x0e\x8e\x0c\xc3\xf2\xef\
+\xdb\x02\xe0\xa1\x91a\xd4\xc2\xb5+\x97Y\x9c\xbf\xbe\x05\
+\x036\xf8\xc0`\xad\x02\x0b\xdb\xc3\xc0P\xad\xc2\xec\xc5\
+K\x9c\xfd\xee\x1b\xce\x9f\x9c\x9e\x03\xa66\x04`$^\
+J\x05\x12\x0b\xed\x91'\xa9=\x0co\x1f8\xc8f\xc7\
+\x81':\xf1*\xe75\x1e2\x81\x14(\xbap\xf9\xea\
+U\xce4\x8e\xd1\xfc\xfa\x8b\xb9\xd9\x1fN\x1d\x02\x0eo\
+\x08\xe0\xb3\x8f>\xe0\xa7\xd3'W\x99\xe9\xda\xa3\x86U\
+\xe6\xbb\x1e\x04\x1b<_\x1do|w\xee\x8f\xd9_\x0e\
+\x01\x87\x1b\x8d\xc6_\x1b\x01\x98\x9a\xfe\xf4\xe3\x7f\xf5s\
+l}\xf25\x00\xe2\xb7\xda\x81\xff\xdd\xd7\xf1?M\xf0\
+K\xb9\xe8F\x89\xaf\x00\x00\x00\x00IEND\xaeB\
+`\x82\
"
qt_resource_name = b"\
@@ -555,29 +555,29 @@ qt_resource_name = b"\
\x00i\
\x00m\x00a\x00g\x00e\x00s\
\x00\x08\
-\x08\xc8Xg\
-\x00s\
-\x00a\x00v\x00e\x00.\x00p\x00n\x00g\
-\x00\x08\
\x06\xc1Y\x87\
\x00o\
\x00p\x00e\x00n\x00.\x00p\x00n\x00g\
\x00\x07\
-\x0a\xc7W\x87\
-\x00c\
-\x00u\x00t\x00.\x00p\x00n\x00g\
+\x04\xcaW\xa7\
+\x00n\
+\x00e\x00w\x00.\x00p\x00n\x00g\
\x00\x08\
\x06|Z\x07\
\x00c\
\x00o\x00p\x00y\x00.\x00p\x00n\x00g\
\x00\x07\
-\x04\xcaW\xa7\
-\x00n\
-\x00e\x00w\x00.\x00p\x00n\x00g\
+\x0a\xc7W\x87\
+\x00c\
+\x00u\x00t\x00.\x00p\x00n\x00g\
\x00\x09\
\x0a\xa8\xbaG\
\x00p\
\x00a\x00s\x00t\x00e\x00.\x00p\x00n\x00g\
+\x00\x08\
+\x08\xc8Xg\
+\x00s\
+\x00a\x00v\x00e\x00.\x00p\x00n\x00g\
"
qt_resource_struct = b"\
@@ -585,18 +585,18 @@ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00h\x00\x00\x00\x00\x00\x01\x00\x00\x171\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00R\x00\x00\x00\x00\x00\x01\x00\x00\x11\xf3\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00(\x00\x00\x00\x00\x00\x01\x00\x00\x04\xa7\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
+\x00\x00\x00(\x00\x00\x00\x00\x00\x01\x00\x00\x08\x1d\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00<\x00\x00\x00\x00\x00\x01\x00\x00\x0bu\
+\x00\x00\x01z\xe7\xee'\x09\
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00|\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x89\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00>\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xc4\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00~\x00\x00\x00\x00\x00\x01\x00\x00\x1cS\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00f\x00\x00\x00\x00\x00\x01\x00\x00\x15\xe2\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00R\x00\x00\x00\x00\x00\x01\x00\x00\x10\xb3\
+\x00\x00\x01z\xe7\xee'\x09\
"
def qInitResources():
diff --git a/examples/widgets/mainwindows/dockwidgets/dockwidgets.py b/examples/widgets/mainwindows/dockwidgets/dockwidgets.py
index 61b1dd781..83487ee58 100644
--- a/examples/widgets/mainwindows/dockwidgets/dockwidgets.py
+++ b/examples/widgets/mainwindows/dockwidgets/dockwidgets.py
@@ -1,57 +1,21 @@
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 port of the widgets/mainwindows/dockwidgets example from Qt v5.x, originating from PyQt"""
+"""PySide6 port of the widgets/mainwindows/dockwidgets example from Qt v5.x,
+ originating from PyQt"""
import sys
from PySide6.QtCore import QDate, QFile, Qt, QTextStream
from PySide6.QtGui import (QAction, QFont, QIcon, QKeySequence,
- QTextCharFormat, QTextCursor, QTextTableFormat)
+ QTextCharFormat, QTextCursor, QTextTableFormat)
from PySide6.QtPrintSupport import QPrintDialog, QPrinter
from PySide6.QtWidgets import (QApplication, QDialog, QDockWidget,
- QFileDialog, QListWidget, QMainWindow, QMessageBox, QTextEdit)
+ QFileDialog, QListWidget, QMainWindow,
+ QMessageBox, QTextEdit)
-import dockwidgets_rc
+import dockwidgets_rc # noqa: F401
class MainWindow(QMainWindow):
@@ -100,8 +64,7 @@ class MainWindow(QMainWindow):
cursor.insertBlock()
cursor.insertText("Some Country")
cursor.setPosition(top_frame.lastPosition())
- cursor.insertText(QDate.currentDate().toString("d MMMM yyyy"),
- text_format)
+ cursor.insertText(QDate.currentDate().toString("d MMMM yyyy"), text_format)
cursor.insertBlock()
cursor.insertBlock()
cursor.insertText("Dear ", text_format)
@@ -141,13 +104,12 @@ class MainWindow(QMainWindow):
if not file.open(QFile.WriteOnly | QFile.Text):
reason = file.errorString()
QMessageBox.warning(self, "Dock Widgets",
- "Cannot write file {filename}:\n{reason}.")
+ f"Cannot write file {filename}:\n{reason}.")
return
out = QTextStream(file)
- QApplication.setOverrideCursor(Qt.WaitCursor)
- out << self._text_edit.toHtml()
- QApplication.restoreOverrideCursor()
+ with QApplication.setOverrideCursor(Qt.WaitCursor):
+ out << self._text_edit.toHtml()
self.statusBar().showMessage(f"Saved '{filename}'", 2000)
@@ -182,8 +144,8 @@ class MainWindow(QMainWindow):
if cursor.isNull():
return
cursor.beginEditBlock()
- cursor.movePosition(QTextCursor.PreviousBlock, QTextCursor.MoveAnchor,
- 2)
+ cursor.movePosition(QTextCursor.PreviousBlock,
+ QTextCursor.MoveAnchor, 2)
cursor.insertBlock()
cursor.insertText(paragraph)
cursor.insertBlock()
@@ -191,43 +153,44 @@ class MainWindow(QMainWindow):
def about(self):
QMessageBox.about(self, "About Dock Widgets",
- "The <b>Dock Widgets</b> example demonstrates how to use "
- "Qt's dock widgets. You can enter your own text, click a "
- "customer to add a customer name and address, and click "
- "standard paragraphs to add them.")
+ "The <b>Dock Widgets</b> example demonstrates how to use "
+ "Qt's dock widgets. You can enter your own text, click a "
+ "customer to add a customer name and address, and click "
+ "standard paragraphs to add them.")
def create_actions(self):
icon = QIcon.fromTheme('document-new', QIcon(':/images/new.png'))
self._new_letter_act = QAction(icon, "&New Letter",
- self, shortcut=QKeySequence.New,
- statusTip="Create a new form letter", triggered=self.new_letter)
+ self, shortcut=QKeySequence.New,
+ statusTip="Create a new form letter",
+ triggered=self.new_letter)
icon = QIcon.fromTheme('document-save', QIcon(':/images/save.png'))
self._save_act = QAction(icon, "&Save...", self,
- shortcut=QKeySequence.Save,
- statusTip="Save the current form letter", triggered=self.save)
+ shortcut=QKeySequence.Save,
+ statusTip="Save the current form letter", triggered=self.save)
icon = QIcon.fromTheme('document-print', QIcon(':/images/print.png'))
self._print_act = QAction(icon, "&Print...", self,
- shortcut=QKeySequence.Print,
- statusTip="Print the current form letter",
- triggered=self.print_)
+ shortcut=QKeySequence.Print,
+ statusTip="Print the current form letter",
+ triggered=self.print_)
icon = QIcon.fromTheme('edit-undo', QIcon(':/images/undo.png'))
self._undo_act = QAction(icon, "&Undo", self,
- shortcut=QKeySequence.Undo,
- statusTip="Undo the last editing action", triggered=self.undo)
+ shortcut=QKeySequence.Undo,
+ statusTip="Undo the last editing action", triggered=self.undo)
self._quit_act = QAction("&Quit", self, shortcut="Ctrl+Q",
- statusTip="Quit the application", triggered=self.close)
+ statusTip="Quit the application", triggered=self.close)
self._about_act = QAction("&About", self,
- statusTip="Show the application's About box",
- triggered=self.about)
+ statusTip="Show the application's About box",
+ triggered=self.about)
self._about_qt_act = QAction("About &Qt", self,
- statusTip="Show the Qt library's About box",
- triggered=QApplication.instance().aboutQt)
+ statusTip="Show the Qt library's About box",
+ triggered=QApplication.instance().aboutQt)
def create_menus(self):
self._file_menu = self.menuBar().addMenu("&File")
@@ -280,21 +243,21 @@ class MainWindow(QMainWindow):
self._paragraphs_list.addItems((
"Thank you for your payment which we have received today.",
"Your order has been dispatched and should be with you within "
- "28 days.",
+ "28 days.",
"We have dispatched those items that were in stock. The rest of "
- "your order will be dispatched once all the remaining items "
- "have arrived at our warehouse. No additional shipping "
- "charges will be made.",
+ "your order will be dispatched once all the remaining items "
+ "have arrived at our warehouse. No additional shipping "
+ "charges will be made.",
"You made a small overpayment (less than $5) which we will keep "
- "on account for you, or return at your request.",
+ "on account for you, or return at your request.",
"You made a small underpayment (less than $1), but we have sent "
- "your order anyway. We'll add this underpayment to your next "
- "bill.",
+ "your order anyway. We'll add this underpayment to your next "
+ "bill.",
"Unfortunately you did not send enough money. Please remit an "
- "additional $. Your order will be dispatched as soon as the "
- "complete amount has been received.",
+ "additional $. Your order will be dispatched as soon as the "
+ "complete amount has been received.",
"You made an overpayment (more than $5). Do you wish to buy more "
- "items, or should we return the excess to you?"))
+ "items, or should we return the excess to you?"))
dock.setWidget(self._paragraphs_list)
self.addDockWidget(Qt.RightDockWidgetArea, dock)
self._view_menu.addAction(dock.toggleViewAction())
diff --git a/examples/widgets/mainwindows/dockwidgets/dockwidgets.pyproject b/examples/widgets/mainwindows/dockwidgets/dockwidgets.pyproject
index 2df11468e..9abbf7485 100644
--- a/examples/widgets/mainwindows/dockwidgets/dockwidgets.pyproject
+++ b/examples/widgets/mainwindows/dockwidgets/dockwidgets.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["dockwidgets.qrc", "dockwidgets.py", "dockwidgets_rc.py"]
+ "files": ["dockwidgets.qrc", "dockwidgets.py"]
}
diff --git a/examples/widgets/mainwindows/dockwidgets/dockwidgets_rc.py b/examples/widgets/mainwindows/dockwidgets/dockwidgets_rc.py
index a6052b3b2..5d30d0927 100644
--- a/examples/widgets/mainwindows/dockwidgets/dockwidgets_rc.py
+++ b/examples/widgets/mainwindows/dockwidgets/dockwidgets_rc.py
@@ -1,6 +1,6 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.14.0
+# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
@@ -117,127 +117,6 @@ V\xaf^\xdd@\xf7Y\x84p\xc57\x82\xa1\x22\xa5\x0b\
\x14\x9fe\xdf\x12~T\x1cJ\x97\xa8\xf3\xc5\xfc\x0f\xd1\
\xc2G\xb4c\xf2\xc9\xfc\x00\x00\x00\x00IEND\xae\
B`\x82\
-\x00\x00\x07f\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
-\x00\x00\x07-IDATx^\xb5V]o\x1cW\
-\x19~\xce\xc7|\xec\x97\xd7n\x9c8\xc6\x89\x03I\x9a\
-&M!\xaa\x08\x95\xb8@\xca%\x08\x89\xfb\x8a+\xee\
-\xb8AHH !!\x047\x5c\xf1\x03\xb8\x00\xa9p\
-\x83\xa2\x0aQ\x22\x017 \x15\xd1\xa0\xe6\xb3\xadS+\
-I\x9b\xa4\xb1\xe3\x8f\xb5\xbd;\x9bY\xef\xcc\xce\xce\xcc\
-9\x87\xf3\x1e-+\xd3:\xf5\x02\xe2X\x8f\xde9\xc7\
-\x1a?\xcf\xfb\xbc\xefy\xc7\xcc\x18\x83\xffu]\xbc\xf8\
-m\x0e T\xaa\xa8h]\xd6\x19\xe3\x14\xa7t\xa9\xea\
-Z\x95\x15\xad\xf4\x941hz\x15\xb9\xba\xbc|\xf9M\
-\x00\x99\xe5\xd5\x00 \xf7\x12\x5c\xf8\xc2\xb7\xbe\x94\xa5\x83\
-S@Yc\xe0u?\x0ckBzU\x18V\x07P\
-c\x8c\xd5\x00\xd4\xc1\x10Z\xd0Y\x08\x98\x0a\x98\x0e\xb5\
-1\x81\x86\xf64+=K*\x99'\xc5\xdc\xe9\xe7\xd9\
-\xd9\x17\xcf\xf2\xc6\xcc\x0c\x13\xcd\x19\xf1\x97_\xbd\xf6\x00\
-\xc0\xab\x16\x14\xe3O\x088<\x7f\xf8\x97_\xfc\xca\xcb\
-/e\xdaSyQ\xb0;7\xdfb\x1f\xdc}\x17^\
-\xe0\x81\x0b0\xce\x01!\xb8\x83\xe7\x09\x16\x04\x92\x85\xa1\
-\x8f\x8aE\xb5\x1a\xda\x18\xa2^\xab\xa2V\xab`\xee\xe8\
-\x02N_\xf82\xael\x7f\x16\xed\xf6\x03\xf0\xd62\x94\
-*\xe7\x01\xbcb\xd1\xd9W\xc0\xc9s\xa7\xce\x7f\xe3{\
-\xaf\xf2\xdf\xfdc\xc8?\xba\xf9\x16\xe6\x16$~\xf8\xdd\
-\x1f\xa1T@\x18\x04\xf0=\x89j\xa5\x820\x0c\x10\xf8\
-\x9e\xdd\xfb\x90R@\x08\x01\xce\x18\x98\x05\x18 \xa5\xe7\
-\xce\xb3\x5c\xe1'W;xx{\x09\xcf\x9bw\xe1\xab\
-\x5c\x00 \x11\xa1\x05>!`7\xc9\xb37o\x0fk\
-\xbf\xf9\xeb\x0a:\xd7\x96\xf0\xcdS\x06_\xff\xea\xd7\xb0\
-\xb1\xbe\x8e~\xd2G\x96\x0d\xa1\x94BY\x14\xc8\x87C\
-h\xada\x8cq\xb1,\xcb1\xe8\xcc\x89\x11>N\x1e\
-:\x89\xf5\x13\xaf\xa0\x9a\xe7(W\xaf\x01\x00#\xec+\
-\x80^T\xf4\xc7\x94q/GOc\xdcx\xfb*\xd6\
-6\xb7Q\x14\x85#\xe3\x9c\xec\xa7\x0c%\xc1eO\x8b\
-D\xd0\xa2\xdf\xfb\xbeo\xcbPC\xb5\xd1\x84\xfc@!\
-\xacV!\x94@\xb9\x87k_\x01$Z\x0a\x8e\xc0\x13\
-\x80d\x08\xc3\x0a\x16\x17\x17\xc1\xbd\x902'\x01DH\
-\xd9\x8dA\xcb\xed9\x07\xed8\xf5\x87\xf4\x5c?\x88\xa0\
-\x0a\xc9\x13\x04\x82\xc1\xe3@~\x90\x00\x80Ap\x06_\
-p\x80\x19\xd4m\x16s\x9f9\x8a$+\x9c\xfdE1\
-\x1cYn\xe0~\x94\x866\xe4\x9cv\x0e9\x94\x05T\
-\xa9\xe0\x16\xb7B*/\xc2\xf72'\x1c\x07:`A\
-\xdc\xbe\xc7 }\x89\xa8\x1b\xe1\xf6\xf5\x9b\xd8\xdc\x89\xc8\
-\xe2\xb1\xbdA\x10P\x19\xe8\x99\x1a\x93\x1c\xb0D\x15\xb2\
-\x9f\x88\xdcy\xd5\xda\xeeY\x07~\xfdF\x8c@\x0a\x97\
-\x18\xd8\x81\x0e\x18H\xce\xe0Ia#P\xaf\xd7\xf1\xc2\
-\xf9\xcfc\xb6\x13\x8d\xad\xfe\xb7\x12\xb87\x00\xce\xc8\xb1\
-q\x1c\x97\x85\x1a2\x94\x02\xa1\xa7!\x05;\xd8\x01\x22\
-\x90\x92#\xb0\x90\x8cQ#Y\xd4Q\x14\xa5C\xa9J\
-\xa8Q\x97\x13@\x11\xb0gd}\x89\xe10GY\x94\
-P\xda\xf5\x0b\x0c\x97\xa8\x86\xc7\x10\xf8\x8a\x12\x9b\xac\x04\
-\x94y\xe8\xb9FD\xa7\xbd\x83{\xcbKhw{.\
-s\xcf\xf7\xdd<\xa8\x84\x15\x04\x81\x0f?\x08!=9\
-\xb6\x9e@7\xc3se\xe1\xa0\xf5\xfb\xf5mW\x02\x8f\
-\xcc9H\x00)\xf0\x84s\xc0\x92y\x98=d\xa7\xd9\
-\x99s89\xba~\xd25\xe7~\x99\x18\x17\xb42\xc8\
-J N4\xb2B!\xb7\xfbj@%0\x936!\
-\x83\xeb\x01\x01Tg\xe60\x7f\xa6\x09\xe9yn6d\
-\x85Aw\xa0\x90\xe4\x06i\xae\xd1\xb7\xb1?\xd4\xd8\xcd\
-4zC\xe3blAgin\xa0\x0c\x5c\x89:\x03\
-\x8df5\x04\x04\x0e\x16\xc0\x19)\x05|\xa1\xec\xf5;\
-\x81;\x9a\xe1\xfbWv0[\x15\x18\x94\x06\x89%\x1c\
-\x14\x06y9\x82\x02JcP\x8e\x9e\x15\x18\xc08\x04\
-\x97`\xe4\x96.\x1dosJ\xa0\xa0\xfd$s\x80j\
-\x15p\x86\xe9\xa9\x06J\x0e\xdco\x15\xb8\x8b\x02\xca\xd0\
-\xb0\x11`BB\xba\x9asp\xc9\xc0\x8d\x86`9\xbc\
-\xb2\x0f=\xe8#\xdd\x8d0\xe8E(\x8b\x1cSGO\
-b\xfe\xd8\x09T|\x01#0\xc95\x84\xb3?\xf4\x05\
-\x187\x90\x9e\xef\xb2(\xb3\x14&\xddE\x96\xc6\xc8z\
-\x16I\x17\xc3$\x86\xca\xfa\x10j\x80\x9a\xd4\x98\xaeI\
-\x1cnVq\xee\xb9\x06\xe6N7p\xe4\xd04\x9a3\
-\x1aot|\xd7W\x1eM\xca\xc9F1\x09\x90\x964\
-\xc6\xfa;\x7fB\xda\xfa\x10S\x15\x89C\x8d\x10\x0b\xd3\
-5\xcc\x1fmbv\xba\x8e\x99\xc6\x09\x1c\x9d\x9d\xc6\x9c\
-\xc5sSuT+\x81k\xd4R)\xa4\x83\x0c\xbb\xfd\
-\x04\xbd\xfe\x10\x8b&\xc0@\x0b\xe4\x93\xcc\x01\x0e'\xc0\
-Z\xe6c;j\xe1\xe2\x91\x1c?\xfd\xf1w\xb0\xb1\xb9\
-\x85\xcd\x8du\xb4Z-D\xdd6\x9a\xd08s\xfc8\
-\x820t\x9f\xe1$\xcb\xa9\xeb\xdd\x1c1\xc6\x8cF\xb2\
-\x86a@=\x14\xd0\x05G:\x89\x00\x8c\x1c\xf0\x03\x09\
-fJW\x0e\xc6\x04\xee}\xf8\x08\x97/_\xc6`0\
-p#vjj\x0a\xc7N|\xce\xcd\x81O[D\x19\
-\xd0\xb5\x06\x0d\xb6\xfd\x9b\xf0c\xa7\xcc\x91\x06\xa3A\xc4\
-\x19w\x83e}}\x9d\xc8\xdd\x97\xf1\xb8\xcd\x9c\xbe\x03\
-\x93.\x9f&\xab\xcf\xe0\xfb\xf2`\x01\x9c\x8d&\xa1\xe4\
-\xeeE\xce\x01\x03C\x84\xf4\xb1q\x1f\x19!\x04\xed\xc9\
-\xee\xc9\x04\xf8\x1c\x013(\xd2\x0e\x98\x19\xdb\xc0\x9e\xe1\
-\x80\x13\xe0\xc8}\xc1]}a\xc6\xdf\x89q\x8d\xff\x93\
-\x15H\xa0\xfb\xf0\x06V\x97\xdeG\xb7\xbb\xb2\x0e`h\
-Q>S\x80\x10\x80'\xb9\x05\x95\xc0i\xfd\xaf\x17\xe9\
-g\xfd\x16\xee\xfe\xed\x0f\xb8\x7f\xeb\xc1\xf6\xda\xda\x8d\xeb\
-\x00V,z\xfb\xdf\x02>jB\xc9 \xe5\xbf2\x06\
-\x14]\xad4\xa5> \xfbi\xff\xa9%\x10\x82\xbb\x9a\
-kSb\xe5\xfa\x9fq\xef\xdarou\xe5\xd6\xad\xa2\
-HH\xc0{\x16\xdd}\x05\xc00g\x89 !\x16\x9c\
-3h\xad1;;\x8bK\x97.aaa\x01\xd3\xd3\
-\xd3h4\x1a\xee?c)\x85\x8d\x9e{\xe6\x5c \xcf\
-K<}\x9a\x98v\xbb\xc7\xda\xed\x18\xbd\xdd\x0cw\xaf\
-=\x1a>y|\xe7N\x92l\xbd\x0d\xe0\x9a\xc5G\x16\
-\xf93\x07Q\xa3\x0a\xcc\x1f\x06\xe2\xc3M\x84\xba\x81\xbc\
-\xc8q\xe1\xc2K8\x7f\xfe\x05K\x90C)\xedf\x7f\
-\xb7\x9b\x22Ib\xc4q\x86(J\xcc\xf6vWmm\
-\xed\x0c\xdb\xed\xad~\xaf\x17\xc5i\xda\xe9\xc6\xf1V{\
-u\xf5\xe1\xd6`\xb0\xfb\x00\x00e\x7f\xdf\xa2o\xec\xda\
-W\x80\xe7K\x7f\xd0Oq\xf5\xb7\xafac\xed\x09\xce\
-\xce\x1f1\x0f\x1fm\xe3\xf1J\x8bEQ\xdf\x92&&\
-\x8av\xcbN'\xca\xba\xdd\x9d~\x1c\xb7\xe38\xde\x89\
-\xba\xdd\xcdv\xbb\xbd\xd1N\xd3^D\x04\x16\xb1Eo\
-\x14\x9fZ\xb4,6i?&\xdfO\xc0\xe3Gk\x1b\
-?\xff\xc1/\x16\xef\xbe\xf7~\x91&Y\xb1\x94\xdf\xcb\
-\xae\xbc\xfe\xf7~\xad\x86\xdd~?\xeaF\xd1F{g\
-gm{8\x1c\x10\xc1\xee\x98d\x0c\xb7O,2\x8b\
-\xe1\x9e\x98[\xde\xf2\xc0Ixo\xe9\xf6\xcfz\xbd'\
-/\xa7\x83V}0\x88\x22\xadKR\xdf'\xec!|\
-:zN\x1d\xc1\x98dL\xa4p\xf0\xda_\xc0\xc3G\
-\x7f|\x1d\xc0;\x16\xcdQ&\xbd\xbdY|\x8cHO\
-\xc81\xb9\x80\x11\xe1\xf2h>\x14#\x22\x83\xff\xe3\xfa\
-'\x0a\xd7w\xe2\xf8Nm\x80\x00\x00\x00\x00IEN\
-D\xaeB`\x82\
\x00\x00\x06\xe8\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -415,6 +294,127 @@ D\x83b\xd7\xfd\xfb.\x0c\xa2\xac\xf3\xfd\x94h\x0f\xec\
\xa6\xfd\xd1\xdazi\x87\x02\xcd^\xff\x01\xf9h\x10\x8e\
\x11Wv$\x00\x00\x00\x00IEND\xaeB`\x82\
\
+\x00\x00\x07f\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
+\x00\x00\x07-IDATx^\xb5V]o\x1cW\
+\x19~\xce\xc7|\xec\x97\xd7n\x9c8\xc6\x89\x03I\x9a\
+&M!\xaa\x08\x95\xb8@\xca%\x08\x89\xfb\x8a+\xee\
+\xb8AHH !!\x047\x5c\xf1\x03\xb8\x00\xa9p\
+\x83\xa2\x0aQ\x22\x017 \x15\xd1\xa0\xe6\xb3\xadS+\
+I\x9b\xa4\xb1\xe3\x8f\xb5\xbd;\x9bY\xef\xcc\xce\xce\xcc\
+9\x87\xf3\x1e-+\xd3:\xf5\x02\xe2X\x8f\xde9\xc7\
+\x1a?\xcf\xfb\xbc\xefy\xc7\xcc\x18\x83\xffu]\xbc\xf8\
+m\x0e T\xaa\xa8h]\xd6\x19\xe3\x14\xa7t\xa9\xea\
+Z\x95\x15\xad\xf4\x941hz\x15\xb9\xba\xbc|\xf9M\
+\x00\x99\xe5\xd5\x00 \xf7\x12\x5c\xf8\xc2\xb7\xbe\x94\xa5\x83\
+S@Yc\xe0u?\x0ckBzU\x18V\x07P\
+c\x8c\xd5\x00\xd4\xc1\x10Z\xd0Y\x08\x98\x0a\x98\x0e\xb5\
+1\x81\x86\xf64+=K*\x99'\xc5\xdc\xe9\xe7\xd9\
+\xd9\x17\xcf\xf2\xc6\xcc\x0c\x13\xcd\x19\xf1\x97_\xbd\xf6\x00\
+\xc0\xab\x16\x14\xe3O\x088<\x7f\xf8\x97_\xfc\xca\xcb\
+/e\xdaSyQ\xb0;7\xdfb\x1f\xdc}\x17^\
+\xe0\x81\x0b0\xce\x01!\xb8\x83\xe7\x09\x16\x04\x92\x85\xa1\
+\x8f\x8aE\xb5\x1a\xda\x18\xa2^\xab\xa2V\xab`\xee\xe8\
+\x02N_\xf82\xael\x7f\x16\xed\xf6\x03\xf0\xd62\x94\
+*\xe7\x01\xbcb\xd1\xd9W\xc0\xc9s\xa7\xce\x7f\xe3{\
+\xaf\xf2\xdf\xfdc\xc8?\xba\xf9\x16\xe6\x16$~\xf8\xdd\
+\x1f\xa1T@\x18\x04\xf0=\x89j\xa5\x820\x0c\x10\xf8\
+\x9e\xdd\xfb\x90R@\x08\x01\xce\x18\x98\x05\x18 \xa5\xe7\
+\xce\xb3\x5c\xe1'W;xx{\x09\xcf\x9bw\xe1\xab\
+\x5c\x00 \x11\xa1\x05>!`7\xc9\xb37o\x0fk\
+\xbf\xf9\xeb\x0a:\xd7\x96\xf0\xcdS\x06_\xff\xea\xd7\xb0\
+\xb1\xbe\x8e~\xd2G\x96\x0d\xa1\x94BY\x14\xc8\x87C\
+h\xada\x8cq\xb1,\xcb1\xe8\xcc\x89\x11>N\x1e\
+:\x89\xf5\x13\xaf\xa0\x9a\xe7(W\xaf\x01\x00#\xec+\
+\x80^T\xf4\xc7\x94q/GOc\xdcx\xfb*\xd6\
+6\xb7Q\x14\x85#\xe3\x9c\xec\xa7\x0c%\xc1eO\x8b\
+D\xd0\xa2\xdf\xfb\xbeo\xcbPC\xb5\xd1\x84\xfc@!\
+\xacV!\x94@\xb9\x87k_\x01$Z\x0a\x8e\xc0\x13\
+\x80d\x08\xc3\x0a\x16\x17\x17\xc1\xbd\x902'\x01DH\
+\xd9\x8dA\xcb\xed9\x07\xed8\xf5\x87\xf4\x5c?\x88\xa0\
+\x0a\xc9\x13\x04\x82\xc1\xe3@~\x90\x00\x80Ap\x06_\
+p\x80\x19\xd4m\x16s\x9f9\x8a$+\x9c\xfdE1\
+\x1cYn\xe0~\x94\x866\xe4\x9cv\x0e9\x94\x05T\
+\xa9\xe0\x16\xb7B*/\xc2\xf72'\x1c\x07:`A\
+\xdc\xbe\xc7 }\x89\xa8\x1b\xe1\xf6\xf5\x9b\xd8\xdc\x89\xc8\
+\xe2\xb1\xbdA\x10P\x19\xe8\x99\x1a\x93\x1c\xb0D\x15\xb2\
+\x9f\x88\xdcy\xd5\xda\xeeY\x07~\xfdF\x8c@\x0a\x97\
+\x18\xd8\x81\x0e\x18H\xce\xe0Ia#P\xaf\xd7\xf1\xc2\
+\xf9\xcfc\xb6\x13\x8d\xad\xfe\xb7\x12\xb87\x00\xce\xc8\xb1\
+q\x1c\x97\x85\x1a2\x94\x02\xa1\xa7!\x05;\xd8\x01\x22\
+\x90\x92#\xb0\x90\x8cQ#Y\xd4Q\x14\xa5C\xa9J\
+\xa8Q\x97\x13@\x11\xb0gd}\x89\xe10GY\x94\
+P\xda\xf5\x0b\x0c\x97\xa8\x86\xc7\x10\xf8\x8a\x12\x9b\xac\x04\
+\x94y\xe8\xb9FD\xa7\xbd\x83{\xcbKhw{.\
+s\xcf\xf7\xdd<\xa8\x84\x15\x04\x81\x0f?\x08!=9\
+\xb6\x9e@7\xc3se\xe1\xa0\xf5\xfb\xf5mW\x02\x8f\
+\xcc9H\x00)\xf0\x84s\xc0\x92y\x98=d\xa7\xd9\
+\x99s89\xba~\xd25\xe7~\x99\x18\x17\xb42\xc8\
+J N4\xb2B!\xb7\xfbj@%0\x936!\
+\x83\xeb\x01\x01Tg\xe60\x7f\xa6\x09\xe9yn6d\
+\x85Aw\xa0\x90\xe4\x06i\xae\xd1\xb7\xb1?\xd4\xd8\xcd\
+4zC\xe3blAgin\xa0\x0c\x5c\x89:\x03\
+\x8df5\x04\x04\x0e\x16\xc0\x19)\x05|\xa1\xec\xf5;\
+\x81;\x9a\xe1\xfbWv0[\x15\x18\x94\x06\x89%\x1c\
+\x14\x06y9\x82\x02JcP\x8e\x9e\x15\x18\xc08\x04\
+\x97`\xe4\x96.\x1dosJ\xa0\xa0\xfd$s\x80j\
+\x15p\x86\xe9\xa9\x06J\x0e\xdco\x15\xb8\x8b\x02\xca\xd0\
+\xb0\x11`BB\xba\x9asp\xc9\xc0\x8d\x86`9\xbc\
+\xb2\x0f=\xe8#\xdd\x8d0\xe8E(\x8b\x1cSGO\
+b\xfe\xd8\x09T|\x01#0\xc95\x84\xb3?\xf4\x05\
+\x187\x90\x9e\xef\xb2(\xb3\x14&\xddE\x96\xc6\xc8z\
+\x16I\x17\xc3$\x86\xca\xfa\x10j\x80\x9a\xd4\x98\xaeI\
+\x1cnVq\xee\xb9\x06\xe6N7p\xe4\xd04\x9a3\
+\x1aot|\xd7W\x1eM\xca\xc9F1\x09\x90\x964\
+\xc6\xfa;\x7fB\xda\xfa\x10S\x15\x89C\x8d\x10\x0b\xd3\
+5\xcc\x1fmbv\xba\x8e\x99\xc6\x09\x1c\x9d\x9d\xc6\x9c\
+\xc5sSuT+\x81k\xd4R)\xa4\x83\x0c\xbb\xfd\
+\x04\xbd\xfe\x10\x8b&\xc0@\x0b\xe4\x93\xcc\x01\x0e'\xc0\
+Z\xe6c;j\xe1\xe2\x91\x1c?\xfd\xf1w\xb0\xb1\xb9\
+\x85\xcd\x8du\xb4Z-D\xdd6\x9a\xd08s\xfc8\
+\x820t\x9f\xe1$\xcb\xa9\xeb\xdd\x1c1\xc6\x8cF\xb2\
+\x86a@=\x14\xd0\x05G:\x89\x00\x8c\x1c\xf0\x03\x09\
+fJW\x0e\xc6\x04\xee}\xf8\x08\x97/_\xc6`0\
+p#vjj\x0a\xc7N|\xce\xcd\x81O[D\x19\
+\xd0\xb5\x06\x0d\xb6\xfd\x9b\xf0c\xa7\xcc\x91\x06\xa3A\xc4\
+\x19w\x83e}}\x9d\xc8\xdd\x97\xf1\xb8\xcd\x9c\xbe\x03\
+\x93.\x9f&\xab\xcf\xe0\xfb\xf2`\x01\x9c\x8d&\xa1\xe4\
+\xeeE\xce\x01\x03C\x84\xf4\xb1q\x1f\x19!\x04\xed\xc9\
+\xee\xc9\x04\xf8\x1c\x013(\xd2\x0e\x98\x19\xdb\xc0\x9e\xe1\
+\x80\x13\xe0\xc8}\xc1]}a\xc6\xdf\x89q\x8d\xff\x93\
+\x15H\xa0\xfb\xf0\x06V\x97\xdeG\xb7\xbb\xb2\x0e`h\
+Q>S\x80\x10\x80'\xb9\x05\x95\xc0i\xfd\xaf\x17\xe9\
+g\xfd\x16\xee\xfe\xed\x0f\xb8\x7f\xeb\xc1\xf6\xda\xda\x8d\xeb\
+\x00V,z\xfb\xdf\x02>jB\xc9 \xe5\xbf2\x06\
+\x14]\xad4\xa5> \xfbi\xff\xa9%\x10\x82\xbb\x9a\
+kSb\xe5\xfa\x9fq\xef\xdarou\xe5\xd6\xad\xa2\
+HH\xc0{\x16\xdd}\x05\xc00g\x89 !\x16\x9c\
+3h\xad1;;\x8bK\x97.aaa\x01\xd3\xd3\
+\xd3h4\x1a\xee?c)\x85\x8d\x9e{\xe6\x5c \xcf\
+K<}\x9a\x98v\xbb\xc7\xda\xed\x18\xbd\xdd\x0cw\xaf\
+=\x1a>y|\xe7N\x92l\xbd\x0d\xe0\x9a\xc5G\x16\
+\xf93\x07Q\xa3\x0a\xcc\x1f\x06\xe2\xc3M\x84\xba\x81\xbc\
+\xc8q\xe1\xc2K8\x7f\xfe\x05K\x90C)\xedf\x7f\
+\xb7\x9b\x22Ib\xc4q\x86(J\xcc\xf6vWmm\
+\xed\x0c\xdb\xed\xad~\xaf\x17\xc5i\xda\xe9\xc6\xf1V{\
+u\xf5\xe1\xd6`\xb0\xfb\x00\x00e\x7f\xdf\xa2o\xec\xda\
+W\x80\xe7K\x7f\xd0Oq\xf5\xb7\xafac\xed\x09\xce\
+\xce\x1f1\x0f\x1fm\xe3\xf1J\x8bEQ\xdf\x92&&\
+\x8av\xcbN'\xca\xba\xdd\x9d~\x1c\xb7\xe38\xde\x89\
+\xba\xdd\xcdv\xbb\xbd\xd1N\xd3^D\x04\x16\xb1Eo\
+\x14\x9fZ\xb4,6i?&\xdfO\xc0\xe3Gk\x1b\
+?\xff\xc1/\x16\xef\xbe\xf7~\x91&Y\xb1\x94\xdf\xcb\
+\xae\xbc\xfe\xf7~\xad\x86\xdd~?\xeaF\xd1F{g\
+gm{8\x1c\x10\xc1\xee\x98d\x0c\xb7O,2\x8b\
+\xe1\x9e\x98[\xde\xf2\xc0Ixo\xe9\xf6\xcfz\xbd'\
+/\xa7\x83V}0\x88\x22\xadKR\xdf'\xec!|\
+:zN\x1d\xc1\x98dL\xa4p\xf0\xda_\xc0\xc3G\
+\x7f|\x1d\xc0;\x16\xcdQ&\xbd\xbdY|\x8cHO\
+\xc81\xb9\x80\x11\xe1\xf2h>\x14#\x22\x83\xff\xe3\xfa\
+'\x0a\xd7w\xe2\xf8Nm\x80\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
"
qt_resource_name = b"\
@@ -427,10 +427,6 @@ qt_resource_name = b"\
\x00p\
\x00r\x00i\x00n\x00t\x00.\x00p\x00n\x00g\
\x00\x08\
-\x08\xc8Xg\
-\x00s\
-\x00a\x00v\x00e\x00.\x00p\x00n\x00g\
-\x00\x08\
\x04\xb2X\xc7\
\x00u\
\x00n\x00d\x00o\x00.\x00p\x00n\x00g\
@@ -438,6 +434,10 @@ qt_resource_name = b"\
\x04\xcaW\xa7\
\x00n\
\x00e\x00w\x00.\x00p\x00n\x00g\
+\x00\x08\
+\x08\xc8Xg\
+\x00s\
+\x00a\x00v\x00e\x00.\x00p\x00n\x00g\
"
qt_resource_struct = b"\
@@ -446,13 +446,13 @@ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00@\x00\x00\x00\x00\x00\x01\x00\x00\x0e2\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00V\x00\x00\x00\x00\x00\x01\x00\x00\x15\x1e\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
+\x00\x00\x01z\xe7\xee'\x09\
\x00\x00\x00*\x00\x00\x00\x00\x00\x01\x00\x00\x06\xc8\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00@\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xb4\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00T\x00\x00\x00\x00\x00\x01\x00\x00\x11\x89\
+\x00\x00\x01z\xe7\xee'\x09\
"
def qInitResources():
diff --git a/examples/widgets/mainwindows/mdi/images/new.png b/examples/widgets/mainwindows/mdi/images/new.png
deleted file mode 100644
index 12131b010..000000000
--- a/examples/widgets/mainwindows/mdi/images/new.png
+++ /dev/null
Binary files differ
diff --git a/examples/widgets/mainwindows/mdi/images/save.png b/examples/widgets/mainwindows/mdi/images/save.png
deleted file mode 100644
index daba865fa..000000000
--- a/examples/widgets/mainwindows/mdi/images/save.png
+++ /dev/null
Binary files differ
diff --git a/examples/widgets/mainwindows/mdi/mdi.py b/examples/widgets/mainwindows/mdi/mdi.py
index a6ea6284d..c1fa01b8c 100644
--- a/examples/widgets/mainwindows/mdi/mdi.py
+++ b/examples/widgets/mainwindows/mdi/mdi.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/mainwindows/mdi example from Qt v5.x, originating from PyQt"""
@@ -46,13 +8,13 @@ from argparse import ArgumentParser, RawTextHelpFormatter
from functools import partial
import sys
-from PySide6.QtCore import (QByteArray, QFile, QFileInfo, QPoint, QSettings,
- QSaveFile, QSize, QTextStream, Qt)
+from PySide6.QtCore import (QByteArray, QFile, QFileInfo, QSettings,
+ QSaveFile, QTextStream, Qt, Slot)
from PySide6.QtGui import QAction, QIcon, QKeySequence
from PySide6.QtWidgets import (QApplication, QFileDialog, QMainWindow,
- QMdiArea, QMessageBox, QTextEdit, QWidget)
+ QMdiArea, QMessageBox, QTextEdit)
-import mdi_rc
+import PySide6.QtExampleIcons # noqa: F401
class MdiChild(QTextEdit):
@@ -81,9 +43,8 @@ class MdiChild(QTextEdit):
return False
instr = QTextStream(file)
- QApplication.setOverrideCursor(Qt.WaitCursor)
- self.setPlainText(instr.readAll())
- QApplication.restoreOverrideCursor()
+ with QApplication.setOverrideCursor(Qt.WaitCursor):
+ self.setPlainText(instr.readAll())
self.set_current_file(fileName)
@@ -106,18 +67,17 @@ class MdiChild(QTextEdit):
def save_file(self, fileName):
error = None
- QApplication.setOverrideCursor(Qt.WaitCursor)
- file = QSaveFile(fileName)
- if file.open(QFile.WriteOnly | QFile.Text):
- outstr = QTextStream(file)
- outstr << self.toPlainText()
- if not file.commit():
+ with QApplication.setOverrideCursor(Qt.WaitCursor):
+ file = QSaveFile(fileName)
+ if file.open(QFile.WriteOnly | QFile.Text):
+ outstr = QTextStream(file)
+ outstr << self.toPlainText()
+ if not file.commit():
+ reason = file.errorString()
+ error = f"Cannot write file {fileName}:\n{reason}."
+ else:
reason = file.errorString()
- error = f"Cannot write file {fileName}:\n{reason}."
- else:
- reason = file.errorString()
- error = f"Cannot open file {fileName}:\n{reason}."
- QApplication.restoreOverrideCursor()
+ error = f"Cannot open file {fileName}:\n{reason}."
if error:
QMessageBox.warning(self, "MDI", error)
@@ -146,7 +106,7 @@ class MdiChild(QTextEdit):
f = self.user_friendly_current_file()
message = f"'{f}' has been modified.\nDo you want to save your changes?"
ret = QMessageBox.warning(self, "MDI", message,
- QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel)
+ QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel)
if ret == QMessageBox.Save:
return self.save()
@@ -196,11 +156,13 @@ class MainWindow(QMainWindow):
self.write_settings()
event.accept()
+ @Slot()
def new_file(self):
child = self.create_mdi_child()
child.new_file()
child.show()
+ @Slot()
def open(self):
file_name, _ = QFileDialog.getOpenFileName(self)
if file_name:
@@ -218,31 +180,38 @@ class MainWindow(QMainWindow):
else:
child.close()
+ @Slot()
def save(self):
if self.active_mdi_child() and self.active_mdi_child().save():
self.statusBar().showMessage("File saved", 2000)
+ @Slot()
def save_as(self):
if self.active_mdi_child() and self.active_mdi_child().save_as():
self.statusBar().showMessage("File saved", 2000)
+ @Slot()
def cut(self):
if self.active_mdi_child():
self.active_mdi_child().cut()
+ @Slot()
def copy(self):
if self.active_mdi_child():
self.active_mdi_child().copy()
+ @Slot()
def paste(self):
if self.active_mdi_child():
self.active_mdi_child().paste()
+ @Slot()
def about(self):
QMessageBox.about(self, "About MDI",
- "The <b>MDI</b> example demonstrates how to write multiple "
- "document interface applications using Qt.")
+ "The <b>MDI</b> example demonstrates how to write multiple "
+ "document interface applications using Qt.")
+ @Slot()
def update_menus(self):
has_mdi_child = (self.active_mdi_child() is not None)
self._save_act.setEnabled(has_mdi_child)
@@ -256,11 +225,12 @@ class MainWindow(QMainWindow):
self._previous_act.setEnabled(has_mdi_child)
self._separator_act.setVisible(has_mdi_child)
- has_selection = (self.active_mdi_child() is not None and
- self.active_mdi_child().textCursor().hasSelection())
+ has_selection = (self.active_mdi_child() is not None
+ and self.active_mdi_child().textCursor().hasSelection())
self._cut_act.setEnabled(has_selection)
self._copy_act.setEnabled(has_selection)
+ @Slot()
def update_window_menu(self):
self._window_menu.clear()
self._window_menu.addAction(self._close_act)
@@ -301,82 +271,85 @@ class MainWindow(QMainWindow):
def create_actions(self):
- icon = QIcon.fromTheme("document-new", QIcon(':/images/new.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.DocumentNew)
self._new_act = QAction(icon, "&New", self,
- shortcut=QKeySequence.New, statusTip="Create a new file",
- triggered=self.new_file)
+ shortcut=QKeySequence.New, statusTip="Create a new file",
+ triggered=self.new_file)
- icon = QIcon.fromTheme("document-open", QIcon(':/images/open.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.DocumentOpen)
self._open_act = QAction(icon, "&Open...", self,
- shortcut=QKeySequence.Open, statusTip="Open an existing file",
- triggered=self.open)
+ shortcut=QKeySequence.Open, statusTip="Open an existing file",
+ triggered=self.open)
- icon = QIcon.fromTheme("document-save", QIcon(':/images/save.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.DocumentSave)
self._save_act = QAction(icon, "&Save", self,
- shortcut=QKeySequence.Save,
- statusTip="Save the document to disk", triggered=self.save)
+ shortcut=QKeySequence.Save,
+ statusTip="Save the document to disk", triggered=self.save)
self._save_as_act = QAction("Save &As...", self,
- shortcut=QKeySequence.SaveAs,
- statusTip="Save the document under a new name",
- triggered=self.save_as)
+ shortcut=QKeySequence.SaveAs,
+ statusTip="Save the document under a new name",
+ triggered=self.save_as)
- self._exit_act = QAction("E&xit", self, shortcut=QKeySequence.Quit,
- statusTip="Exit the application",
- triggered=QApplication.instance().closeAllWindows)
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.ApplicationExit)
+ self._exit_act = QAction(icon, "E&xit", self, shortcut=QKeySequence.Quit,
+ statusTip="Exit the application",
+ triggered=QApplication.instance().closeAllWindows)
- icon = QIcon.fromTheme("edit-cut", QIcon(':/images/cut.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.EditCut)
self._cut_act = QAction(icon, "Cu&t", self,
- shortcut=QKeySequence.Cut,
- statusTip="Cut the current selection's contents to the clipboard",
- triggered=self.cut)
+ shortcut=QKeySequence.Cut,
+ statusTip="Cut the current selection's contents to the clipboard",
+ triggered=self.cut)
- icon = QIcon.fromTheme("edit-copy", QIcon(':/images/copy.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.EditCopy)
self._copy_act = QAction(icon, "&Copy", self,
- shortcut=QKeySequence.Copy,
- statusTip="Copy the current selection's contents to the clipboard",
- triggered=self.copy)
+ shortcut=QKeySequence.Copy,
+ statusTip="Copy the current selection's contents to the clipboard",
+ triggered=self.copy)
- icon = QIcon.fromTheme("edit-paste", QIcon(':/images/paste.png'))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.EditPaste)
self._paste_act = QAction(icon, "&Paste", self,
- shortcut=QKeySequence.Paste,
- statusTip="Paste the clipboard's contents into the current selection",
- triggered=self.paste)
+ shortcut=QKeySequence.Paste,
+ statusTip="Paste the clipboard's contents into the current "
+ "selection",
+ triggered=self.paste)
self._close_act = QAction("Cl&ose", self,
- statusTip="Close the active window",
- triggered=self._mdi_area.closeActiveSubWindow)
+ statusTip="Close the active window",
+ triggered=self._mdi_area.closeActiveSubWindow)
self._close_all_act = QAction("Close &All", self,
- statusTip="Close all the windows",
- triggered=self._mdi_area.closeAllSubWindows)
+ statusTip="Close all the windows",
+ triggered=self._mdi_area.closeAllSubWindows)
self._tile_act = QAction("&Tile", self, statusTip="Tile the windows",
- triggered=self._mdi_area.tileSubWindows)
+ triggered=self._mdi_area.tileSubWindows)
self._cascade_act = QAction("&Cascade", self,
- statusTip="Cascade the windows",
- triggered=self._mdi_area.cascadeSubWindows)
+ statusTip="Cascade the windows",
+ triggered=self._mdi_area.cascadeSubWindows)
self._next_act = QAction("Ne&xt", self, shortcut=QKeySequence.NextChild,
- statusTip="Move the focus to the next window",
- triggered=self._mdi_area.activateNextSubWindow)
+ statusTip="Move the focus to the next window",
+ triggered=self._mdi_area.activateNextSubWindow)
self._previous_act = QAction("Pre&vious", self,
- shortcut=QKeySequence.PreviousChild,
- statusTip="Move the focus to the previous window",
- triggered=self._mdi_area.activatePreviousSubWindow)
+ shortcut=QKeySequence.PreviousChild,
+ statusTip="Move the focus to the previous window",
+ triggered=self._mdi_area.activatePreviousSubWindow)
self._separator_act = QAction(self)
self._separator_act.setSeparator(True)
- self._about_act = QAction("&About", self,
- statusTip="Show the application's About box",
- triggered=self.about)
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.HelpAbout)
+ self._about_act = QAction(icon, "&About", self,
+ statusTip="Show the application's About box",
+ triggered=self.about)
self._about_qt_act = QAction("About &Qt", self,
- statusTip="Show the Qt library's About box",
- triggered=QApplication.instance().aboutQt)
+ statusTip="Show the Qt library's About box",
+ triggered=QApplication.instance().aboutQt)
def create_menus(self):
self._file_menu = self.menuBar().addMenu("&File")
@@ -442,6 +415,7 @@ class MainWindow(QMainWindow):
return window
return None
+ @Slot()
def switch_layout_direction(self):
if self.layoutDirection() == Qt.LeftToRight:
QApplication.setLayoutDirection(Qt.RightToLeft)
@@ -461,6 +435,11 @@ if __name__ == '__main__':
options = argument_parser.parse_args()
app = QApplication(sys.argv)
+
+ icon_paths = QIcon.themeSearchPaths()
+ QIcon.setThemeSearchPaths(icon_paths + [":/qt-project.org/icons"])
+ QIcon.setFallbackThemeName("example_icons")
+
main_win = MainWindow()
for f in options.files:
main_win.load(f)
diff --git a/examples/widgets/mainwindows/mdi/mdi.pyproject b/examples/widgets/mainwindows/mdi/mdi.pyproject
index 7df26fd77..0272873a7 100644
--- a/examples/widgets/mainwindows/mdi/mdi.pyproject
+++ b/examples/widgets/mainwindows/mdi/mdi.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["mdi_rc.py", "mdi.py", "mdi.qrc"]
+ "files": ["mdi.py"]
}
diff --git a/examples/widgets/mainwindows/mdi/mdi.qrc b/examples/widgets/mainwindows/mdi/mdi.qrc
deleted file mode 100644
index 0a776fab4..000000000
--- a/examples/widgets/mainwindows/mdi/mdi.qrc
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource>
- <file>images/copy.png</file>
- <file>images/cut.png</file>
- <file>images/new.png</file>
- <file>images/open.png</file>
- <file>images/paste.png</file>
- <file>images/save.png</file>
-</qresource>
-</RCC>
diff --git a/examples/widgets/mainwindows/mdi/mdi_rc.py b/examples/widgets/mainwindows/mdi/mdi_rc.py
deleted file mode 100644
index ad79e2ead..000000000
--- a/examples/widgets/mainwindows/mdi/mdi_rc.py
+++ /dev/null
@@ -1,608 +0,0 @@
-# Resource object code (Python 3)
-# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.14.0
-# WARNING! All changes made in this file will be lost!
-
-from PySide6 import QtCore
-
-qt_resource_data = b"\
-\x00\x00\x04\xa3\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
-\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
-\x00\x00\x00\x19tEXtSoftware\
-\x00Adobe ImageRead\
-yq\xc9e<\x00\x00\x045IDATX\xc3\xe5\
-\x97\xcd\x8fTE\x14\xc5\x7f\xb7\xea\xd6{\xaf\xdbn\xc7\
-\xf9@\x9d\x89FM4\x99D\x8d\x1aH\x98\xc4\x8c\x1f\
-\x1b\xfe\x02L\x5c\xf1\x07\x18\x16.M\x5ckX\xc3\x8e\
-\xc4\x8d\x1b\x17\xce\x82htA\x5c\x18\x0d\xe2\xc4\xc6\x00\
-=`PQ\x19`\x02\xa2\x0e\x0c\x83\xd3\xfd^\xf7\x94\
-\x8b\xaa\xee\xf9`\xe6\x0d\x84Q\x16VR\xa9\xce{\xb7\
-\xeb\x9e:\xf7\xd4\xa9z\xea\xbd\xe7~6\xe5>\xb7>\
-\x80]\xbbv\xbd\x03\xec\xfd\x8f\xf2N5\x1a\x8d\x03\xeb\
-\x19\xd8\xbb\xef\xbd\xa3;\x1f\x1fv\x00\x9c<:\xcf\xcc\
-\x977X\x9c\xef\xdcS\xa6\xda\xa0\xf2\xdck\x03\xbc\xb8\
-g\x10\x80\x8b\x7f\x16|\xf8\xee\x1e\x80\xdb\x00p\xfc\xec\
-\x1c\xdf?0\x04x.\xfd\xb8\xc0\xfe\xb7\xceo\xcbr\
-\x0f\x1dy\x9a\x0b#\x96\xd3\x9f\x1fd\xfc\xd5}\x9bk\
-@E\xb0\x16@xp,#\xcb\xb2m\x0100\x96\
-a\x8dP\x1b|\x14#%\x22\x14+\xd8\x18\x91\xd5\x95\
-s\xe7\xce\x83*\xb8\x04\xd2\x14\xb2\x0c\xd2,\x8cI\x0a\
-I\x12\xdew:\x90\xe7\x90\xb7\xa1\xd5\x82v+\x8em\
-(r\xb2\xfa8\xd6\x0a\xe3\xaf\xbcIk\xf1\xfa\xe6\x00\
-\xac\x15\xac\x15\x04\xb0F\xd8\xbd{\xe7\x16k\xeb\x86\xae\
-\x80Z\xa8V\x81\xeamQ\x8d\xaf\x04\xb5\x82\xf7\xa0\xa6\
-\x84\x01g\x055\x82\x08\xa8\x0a\x95,\xc3# \x1e\x08\
-\xc0\xf0\x1e/\x02\xde#\x12&\x15|\x88#\xc4!\x1e\
-<!^@MX\x18@\xd7J\x89\x06\xac\xa0\xdac\
-\x00\x9a3\xbf\x05\x8aS\x07i\x02\x95\x04\xb24\xf6\x04\
-\x12\x07N\xa1\xe8@^@+\x8f\xbd\x05K9\xb4s\
-\xc8\x0bT\x87q=\x00*\xe5%p1@\xd509\
-\xf9\xd2\xd6\x0a\xf3>\xd0\xaf\x16\xaa\x1b\x8b\xf6\xd8'a\
-a\xbd\x1c%% \x00\xf0\x81\x8d4M\xa3:\xc3\xb3\
-\x98\x11\x89l\x07\xdac\x09V\x98_)F\xfca\xcd\
-r\x7fa\x1d-\xd1\x80:\x09TI\x18O4/\xe0\
-\x9d\x85\xc4!\x89\xc3g\x09\x92i\xd8\x11\x89\xe2\x13\x87\
-X\x8b\xefv\x91\xbc\x80\xbc\x03\xed\x02\xdfj#\xed\x02\
-\xf2\x02\x9fwP\x1dE\xd5 x:\xebTx\x9b\x06\
-\x9c3x\x0f\x03\x8f$\xbc\xfe\xf2\xf3wh\xe86h\
-\xa4\xbe\xf1\xeb\xc6\xfc\xdf\xb1\x04R^\x82DM_\x84\
-\x8f\x0d\xa58\xe7\xb6\xc5\x88\x9e\x18K\xb9v\xb3\x03\x08\
-\x9dR\x11\xaa\x90\xb8P\xefZ\xc50}\xb1\xcb@\xc5\
-\xb0\x0e\xf4&\xadW\xf9U.\xe1\xe1\xc6\xd22\xf5\xcc\
-p}\xc9\x84-\xe9J\x19\x10\x9c\x1a\xc0s\xe5f\x97\
-+7\xbb\xacQW?\xd7\xaad~\xc5'\xa2)\xac\
-\x05\x15\xc3\x9c\x0b\xb5w\xa6l\x17\xa8\xc1\xa9 \xc8\x1a\
-5\xaf\x9b5\x1a\x8fY1\x9e\xfe{\xe9\xef\x14\x00\xf1\
-\x82\xef\x9bX0+WV\x02U!\xd1\x90\xfc\xe7S\
-\xdf\xf2\xeb\x99\x13,-\xde\xb8\xa7\xfaWj\x03<\xf5\
-\xecN\x9eya\x02\x0f\xa83[1\x10\x03|\x87\xf7\
-\xf7\xbf\xc1\xc2\xc2\x02\xb7n\xdd\xa2(\x0aD\x04k-\
-\xd6ZT\x15U\xc59\x87\xaab\xad\xc5\x98\xf0\xdf\xe5\
-\xe5e\xf2<\xef\xf7#\xcd\xf9\xb8\xf2-\x18pVP\
-\x17\x18\xdc1:\xb6rO8~\x9c\xe9\xe9i\x8c1\
-x\xef\x99\x98\x98`rr\xf2\x8eY\xd81:\xd6\xdf\
-\x86\xae\xd4\x09Up6\xac\xa2V\xaf\xf7k933\
-\xc3\xd0\xd0\x10\xd6Z\xbc\xf74\x9b\xcd\xbb\x02P\xab\xd7\
-p\xd1\x88\xb4\xd4\x88\x14\x9c\x0b'\x5c\xa0*\x00\xa8V\
-\xabdY\xd6\xa7\xb87\xdeis\x1a\xa9\x17AK\xad\
-8\x1e\xc7\xbd#\xb4\xd7\x8c1\x88D\xdf\x8f:\xb8\xab\
-\x9b\xaf5\xa8\x0d\xf3\xf6\x18.=\x8e\x83)m\xe3\xd5\
-\xdb\x12\xa9\xf7\xe5Vl\xad\xf4\x91\x0e\x8e\x0c\xc3\xf2\xef\
-\xdb\x02\xe0\xa1\x91a\xd4\xc2\xb5+\x97Y\x9c\xbf\xbe\x05\
-\x036\xf8\xc0`\xad\x02\x0b\xdb\xc3\xc0P\xad\xc2\xec\xc5\
-K\x9c\xfd\xee\x1b\xce\x9f\x9c\x9e\x03\xa66\x04`$^\
-J\x05\x12\x0b\xed\x91'\xa9=\x0co\x1f8\xc8f\xc7\
-\x81':\xf1*\xe75\x1e2\x81\x14(\xbap\xf9\xea\
-U\xce4\x8e\xd1\xfc\xfa\x8b\xb9\xd9\x1fN\x1d\x02\x0eo\
-\x08\xe0\xb3\x8f>\xe0\xa7\xd3'W\x99\xe9\xda\xa3\x86U\
-\xe6\xbb\x1e\x04\x1b<_\x1do|w\xee\x8f\xd9_\x0e\
-\x01\x87\x1b\x8d\xc6_\x1b\x01\x98\x9a\xfe\xf4\xe3\x7f\xf5s\
-l}\xf25\x00\xe2\xb7\xda\x81\xff\xdd\xd7\xf1?M\xf0\
-K\xb9\xe8F\x89\xaf\x00\x00\x00\x00IEND\xaeB\
-`\x82\
-\x00\x00\x08\x19\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
-\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
-\x00\x00\x00\x19tEXtSoftware\
-\x00Adobe ImageRead\
-yq\xc9e<\x00\x00\x07\xabIDATX\xc3\xad\
-W[P\x93g\x1a\xf6\xca\xce\xec\xcc\xf6b/\xbc\xd9\
-\xe9\xce\xecn\xbd\xda\xd9\x9b\xb5\xce\xba;{\xb0\xad\xcc\
-z\xb1\xce\xce:\xb3vTpu\xdb\xe2\x81\xd6\xb6T\
-\x04\xbb\xa5 m\xc1\x82\x06\x08\x07QB\x80\x80\x80\x02\
-!\x81\x10\x92@H\x10s$!gr\x80\x04B \
-\x9c\x09G\xb5Tx\xf6\xfb~\x13\x160X\x8b}g\
-\x9e\xf9/\x92\xfc\xcf\xfb>\xcf\xfb\xbe\xdf\x97]\x00v\
-\xfd\x98 \xf1\x0b\x82\x14\x02\x03\xc1u\x82\x03\xcf\xfd\xfe\
-\x8fH\xbc\x9b \xe1W\xaf\xef\xb5*\x8c\xd6e\xdb\x02\
-`\x19\x1e[\x09'\xf13\xfa\x19\x81\x22\xfc\xdc>v\
-H~\x8a\xa0\xb9\xb6Y\x1c2\xcf\xadB9\xfe\x1dD\
-\xf6Q\xd8\xc7\xe6\xe8\x87\x86={\xf6XSR\xae,\
-\xca::\x10N\xe2\xe5I\xc3\xc41\x04\xb7>I\xf9\
-,`\x9b]YSM\x03M\xb6\x114\xeb\xfb 1\
-y`\x19\x9d\xc5\xbb\xef\xbe?\xc5\xab\xbe\x83\xf1\x89)\
-LO\xcf\xae\x92\xef\xd7\xbct\x02\x11\x9f\x0f\xbe\x1d\xe3\
-\xb2\x04CO\xb43@\x8b{\x06\xcd=.4\xeb\xec\
-\xa8W\xf6 \x87S\x852^5C\xbc\xb0\xf4\x90\x81\
-\xc1`\x5c&\xbfK|\xe1\x04H\x1c$8A\xfd\xdd\
-\xeas'\xf1\xb9'\x04H\x87\x97\xc1\xd7\xbb \x22U\
-7\xdc7\xa2\xb8N\x88,V>\xccV\xdb:q\x04\
-,\x16k,\xfc\xce\xe7'\x10\x916\x93\x95?F}\
-\xa5\xfe\x12\xc4o\xf4Y1\xb6\x02~\xef Z{\x9c\
-\xe0?0\xa1L(CF\x0e\x1b\xb2\x0e\xf9&\xd2\xf9\
-\xc5e\xcc-,!4\xbf\x88\xbd{\xf7Z\xc9;~\
-\xbam\x02$~C\x90F=5\x13iu\xb3\x80\xd2\
-?\x0f\xcb\xc4\xe2\x9aP\xa1Z\xb4l\xf1Y\xa0\xb6\xa0\
-\xa6]\x8d/\xb2sq\xb7\x9e\xff\x0c1%\x9d\x09\xcd\
-cbj\x06\x83C\x81'\xe4\xdd\xbc-\xd3\xb0;\x92\
-\x033&\xd4S\xb5\xd3\xfbXO\x88\xc5\x03!\x88,\
-CP\xbaF\xd0\xed\x09B\xe5\x9bB\x9bs\xfc\xa9\xcf\
-Z\x1b\xee*t\xc8\xbc\xc9E\x09\xa7l\x93\xcf\x9b\x88\
-'\xa7\x11\x18\x1d\xc3\x80o\x08\xa2\xd6\xd6%\xc2Q\xdb\
-(\x12\x87\xc6\x1f\xaf\x82/b\x94M\x89$\x90\x22\xea\
-R-\x9aB\xab\xe8\x18y\x04\xa1\xc5\xcf\x10St\xf6\
-\x0d\xa3\xd3\xe1\x87\xd4<\x80\x16\xbd\x03\x0d]\x06\x14\xd5\
-\x0a\x90\x91\x95\x0d/y\xf1\xc6\xaa\xa9\xd4\xb3s\x0bL\
-\xc5\x94\xd8\xdd\xef\x85\xc9b\x05\xb7\xbc\x12\xa5\xe5\x95K\
-\x13\xf3\xcb\xab#\x0f\x017\xd9\x11\xe6\xd9\x15\x84\x97\x15\
-\x13\x06\xcb<\xd0h\xf2\xa3\xdd\xee_'\x96;\x86 \
-\xb3x\xd7}\xe6\x08\xa4\xf8<3\x1b*\x8d6\xaa\xdc\
-S3!\x8c\x8e\x8d3\x15\xd3&\xe47\x09\xf1\xc1\xc5\
-\x8fQs\xaf\x01\xbee`\xfc\x11\xa0#\x13#\xf2\xce\
-\xa1\xbe]\xb9\xb8Q\x01\x83\x81ttM\xa7\x1e\x0ag\
-\x80\xa9\xb8\xdd\xea\x83\xd8\xe8B\x93\xca\xcc\xf8|\xe5\xcb\
-,\x88\xda$Q\x89\xa7g\xe7\x18\x1b\x86\x86G`w\
-8I\x82:$|\xf8!\xae\xb3\x0b\xe1\x99\x5c\x80o\
-\x09\xd0\x90\xde\xe1\x0f,\x81\xab\x1f\xc4}\xef\x04\xdd\x07\
-\x1da\xeb\xff\x9f\xc0\x1d\xb9\x16\x1d\xf6!H\xcc\xfdO\
-}\xee\xd4\x22\x9dU\x84\xaa\x9a\xbaM>G\xe4\x8e\xf8\
-<<\x12\x84\xd3\xdd\x0f\xbd\xc1\x88\xc2\xe2b\x9c~/\
-\x1e=\x03\x01\xf4/\x02\x83\x84\xbc\xc5\xff-\xee:C\
-(Q\x91\xf7\xf6\x05\xf1N\xdc\xbf}\x843i\xe3 \
-\x18\xf43\xab\xe0\xc9Th58\xd1\xd8\xdd\x0b\x9eX\
-\x89\xac\x5c\xf63>G\xaa\x9e\x9c\x9ee\xe4\xee\xf7\x0e\
-\xa2\xd7lAC\x03\x1f'b\xe3 \xe9\xd6\xc0E\xcf\
-\x01R\x90$\xb8\x86\xb2\x9e\x00n\xb4\xdbP\xd1\x1bD\
-\x85\xce\x8bJ~\x0bm\xbe\x9b['\xd1\xa0\x99\xf8\x16\
-e\x22\x05\xee)\xf4(\x13\xc8\x90x5\x0b\x1a\xad>\
-\xaa\xdcc\x13\x93\xf0\x0d\x0d\xc3f\xef\x83\xb4]\x8e\xc4\
-K\x97\x90\xc3\xca\xc3\xd4c\xc0NzI1N\xfa\x89\
-\x94\x7f[;\x84|\x85\x13%j\x1fJ\xd5\x03\xe8\xf2\
-0\xa3(\x22\xf8\xf93\x09t\x8f.\xa1\xa8\xbe\x15\xa5\
-|\x09\xb2J*\xf0\xcf\xe3qQ\xe5\xf6\x07F\xd1\xe7\
-\xf2@\xab7 \xfdj\x06\x92\xbfH\x83\xcd7\x02'\
-\xa9\xda@\x1aL\xe0{\x88R\x9d\x1fE\xdd\xfd\x0cq\
-A\x97\x1b\xc5\xdd\x1e\x88\x9cA\xfc\xf9\xcd\xb7]\x84\xeb\
-l\xb4C\xd0(\xf7N#\xa7\xfc\x1e\xb2K\xab\xf1Q\
-\xeaWH\xfeo\xea\xfaXQ\xb9G\x82\xe3\xf0\x0c\xf8\
-`4\x99Q\xc9\xab\xc2\xfbg\xcfA\xfe@\x03?\xe9\
-n\xb2\x8d\x19\xb9oi\x06\x19\xd2\x9b*/r\xe5\x0e\
-\xe4u\xf6\xa1\xf0\xbe\x1b\x1c\x95\x1b\xf9\x9c\xca)\xc2S\
-\xb8\xdd)\xdc+v\x04\x90Q\xc8\xc5\x95ky8\x11\
-\x9f\x80\x9b\xb7n3c\x15\x91\xdbjs@\x22m\xc7\
-\x85\x84\x0fPt\xbb\x0c\xf3+\x80\x9f4X\xf7$ \
-\x1c|\x84J\xd3\x188\xfaa\x86\x9cV\xfdU\xb3\x1e\
-\xac\x0e;\xb8:\x1f\xd9!\x1ez/\xe0\x13\xbc\xba]\
-\x02&\xbe\xc1\x83\x94o\xd88\x9f\x9c\x8a\x03\x7f=\x04\
-c\xaf\x99\xe9n*\xb7F\xd7\x83\xa4\xcb\xc9H\xff:\
-\x8b\x8c\xd5<S\xb5q\xf6\xa9\xdc5\xf6i\x5c\x97Y\
-\x19\xd9\xbfn!\xa7\xa0\xd4\x82t\xbe\x1aW\x9b4`\
-\xc9\xcc\x10\xbb\x82\xf8\xe5\xaf_\xa7g\xc0;\xe1u\x1f\
-5\xcc5\xddf|\x94\x96\x85\xb8s\x17\xf1\x97C1\
-L\xd5t\x99\xf0\xaa\xaaq\xfa\xf4\x19h\xcc\x0e\x8c\x92\
--6\x14\x1e\xabZ\xc7\x0cx\xe6qp\x0d#L\xa3\
-e\x8a\x0c\x8c\xec\xb4\xfa\x9c\xb6^\x94t9\xd0f\xf7\
-\xaf\x1e=\x11KG.o\xc3y\x135,\x5c\x99\x1a\
-\xf1\x97>\xc7\xd1\xd83\xf881\x09\x86^\x13\x1a\x9b\
-\x04\xf8\xdd\x1b\xfbQO\xd4\xf1\x90\x99\xee\x9a\x00\xaa\xad\
-\x93`+]\x0c9\xf5\xbc\xf0\xbeg\xbd\xea\xcc\x16=\
-JU\x1e\x08m\x01\x94\xd4\xf1C\xe1eS@\xf0\xca\
-\xf7%`+nj\xc7\xa9\x84D\xc4\x1c9\x8a\xdc|\
-6ZZ\xc58\x14\x13\x83/95\xc8\x14j\x98\xe6\
-\xa2\xd5\xd2'\xf5\x9azL\x13\xa1Id\xb7\x99\x90\xdb\
-nF\xb9\xda\x8d\x06\xa5v9,9=\xf9N\x13\xec\
-\xd9r\xd4G\x0d;\xabF\x88c\xff9\x8f\xdf\xee\xfb\
-=\x1a\xf9\x02\x9c\xbf\x90\x80\x93\xf1\x17p\xa3\xad\x07\x19\
-\xc4OJ\x14\xe9n\xbaX\xa8\xef,\xfa\x94\x98P(\
-\xb7@\xe9\x0e<\xf9W\xec)*w-\xc1g\x04\xfb\
-\xb6\xb9\xe4D\x8d\xbe\xcc\xb2Z\xfc\xe3\xe4\x19\x1c<\xf4\
-7\xb0r\xf3\xb0\xef\xc0\x1fP \xd1!\x89'e*\
-\xa6K\x85>\xbf!\xd5F\xe4.\x90[!\xb0\x0c\xae\
-\xe5\xdc\xe2\xd2\x11\x13\x13\xe4\x87o<\xaf<\xe7\x96\x15\
-5\x9ciE\xe5\xf8\xfb\xb1X\x1c?\x19\x877\xf6\xef\
-\xc7\x8d:\x11\x92\xab\xa4\x0c!\xedp\xea5U!\x8b\
-4[\xc9\x037*4n\xd4I:\x17\xc3rs\x08\
-\x8em\x95\xfb\x87$\xe0Jesp\xe4\xf8)\x1c>\
-|\x98\x8cc.2\x05*\x5c\x22\xd5\xd3]~M\xdc\
-\x0b6\xe9tv\xa7\x1dw\x8c\xe4\x88\xb6\xf9\x9e\x84\xb7\
-\x1a\x95\xfb\x22\xbdI\xfd\x80\x0bm\xf4\x042JxL\
-\x0f\x9cKI\xc3\xb5\xa6.|\xc2me6Y\xf1\x83\
-\x01\x5c\x97\x9a\xc1Q{ \xf3\x04\xd7\xce%&\x056\
-\xc8\xfd\xc7\x9d\xc8\x1d\xd5\x82\xdc\x1a\x01\xce^NE\x81\
-X\x85x\xf6]\x5c\xa9U\x90\xaa\xfb\xc0\x96\xdbP\xad\
-u\xe3\xaeTA/\x10\xca\x0dr\xbf\xba\xd3j\xa3\x05\
-\xb7\xa2Q\xf8\x1d\xafC\x8dO\xb9-\x88\xcb\xe6\xe1\x9a\
-H\x8f\xaa\x1e/\x9a5\xe6\xc7\x7fz\xf3-Wx\xac\
-\xa8\xdc\xaf\xbd\xac\xdc\xd1\xe2\x08\xdd\x05\x5cu\x1f\xde\xcb\
-\xafE\xb9v\x002g`\xf5\xc2\xa7\x97\xa9\xdc\xf7\x08\
-\xd2\xa9\xdc;\xf8\x03\xf3\xc2\xf1\x13\x82\xca\x1c\xee\x9dP\
-\x0b9\x94\xb8\x0d\xc2\xc8\x16\xa3\x17\x87\xc3/\x22\xf7\x0e\
-\xff\xdam\x8a\xdda\x99\xd5\x1b\xb6\xd8k\xbb^2\xbe\
-/\x89\xff\x01f\xb9_\xfc\x11\x80=\xcf\x00\x00\x00\x00\
-IEND\xaeB`\x82\
-\x00\x00\x05+\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
-\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
-\x00\x00\x00\x19tEXtSoftware\
-\x00Adobe ImageRead\
-yq\xc9e<\x00\x00\x04\xbdIDATX\xc3\xed\
-WkL\x93W\x18>#q\xc92\xe9\x16\x97\xa8T\
-e8\x9d\x02\x15\xf6\x03\x872\x93\x01f,[p\xc4\
-0\xff`\xa2.\x1a:\x1dN\x03\xba1\x89[\xb3\x80\
-\xd9\x0c\x84\x02\x19X\x1c\x14\x8b\x85\xb2\x82\x95^\xe4f\
-\x0b\x8e1\xf8\xc3F\xcb-\x81\x15\xdc\xa8\xc2\x1c\x1b\xb7\
-ji\x91\xf2\xee\xbc\x87\xaf\x0c\xdc\xb8\x0da\xd9\xb2\x93\
-<\xed\x97\xf3}\xfd\xde\xe7\xbc\xef\xf3^J\x00\x80\xfc\
-\x93 \xff\x0a\x02t\x09(D\x14\xd9\x14q\x14\x01+\
-F\x80\xae\xddd\xdd\xc6f\x22L\xf8\x95\xc4\x8bG\xc8\
-\xa1\xd3\xf7\xc8\x8e\x97;82a+A \x85\x9c\xbe\
-0H.\xdd\x80\x19@2\xabyM\xf4\xbe\xfbr\x13\
-hd\x06\x91\x04^\xa3Q\xf4\x06\xee\x85G\xf5\xd0\xbd\
-\x83\xcbM \x9b\x9d\xf6@t/\xbd\x162= \x89\
-?H\xa5,\x1b\x01\x8c1y\xc1\xbb\x9d\x88K\xc6\xd7\
-\xc6&\x0e\xa0\x10\xb9\xfdB\xfe\xc5+6F\x8c\x12\x5c\
-N\x02\x93\xa7\xa7\xa7\x0d\xcc\xd39\xb9\x98c6\x14\x0a\
-\xd2\xe4\xa3+A \x8c)\x9e*\xdf7G\xeb\xdc{\
-\xb5\xcc\x89\x9e@D\x96T\x83+,\x0b6FH\x08\
-\x13\xf5d*{.T\x03\x01\xf8\x037\xbf\xc0\x0e4\
-*T\xdfb\x88R\xd5,X\x03t\x1d\x16\x08\x04z\
-EU\xf5\xc8\xa0mt\xc2\xd4s\xf7!\xbesQ\x95\
-\x90\xae\x8f\xd0\x13\xcf\xe5\x94\x83\x87\xb4\x02\x9e\xcc.\x03\
-\xd4\x06\xdd\xaf\x99\xcb\xb0\xaf\xaf\xaf>\xbf\xd2`\xb5\xdb\
-\xed\x80\xf8y\xe4>\xc4^\xab\xb4\xb9\x88/\x86\x80'\
-\xd3\xc0g\xf9\x8e\x19\xf5`\xd7^3\xbav\xdas\xee\
-h\xd8\xc7\xc7G\x9f\xab\xab\xb0\x0e\x0f\x0d\xc1\x10\x87\xb2\
-\xf6.\xe7\x967\xf7wsa\xd8\xbd\xe8^\x80/f\
-\x9a\xa0\x86\xdf\xa96B\xf7\xf0\x03\xd8\x19\x9f\xd4\xcf\xa5\
-\xe7\x1a\x8a\x98-~\xfem\x97T\x1ak__\x1f\xb8\
-\xd0\xd1s\x07br\x15VN\xc4\x87\x97\xd4\x8c0\x14\
-\xe9\x15\xb7\x1e8\x1c\x0e@\xa4\xd6\x191\x9e\x85\x9b\x05\
-~m\xa9%\x1a[\x97\xd9\x0c\xe6.\x0a\xf3$\x14\xdf\
-6\x8e{\xbd\x1e\xd1\xcdB\xc8\x09o\xa9\x04<\xd1\xbd\
-V\xab\x15\x10w\x7f\x1b\x84\xf3\x92\x5c\xbbR\xa9\x84\xfa\
-\xfaz0\x99L\x0cu\xdf5\xc1Q\xb1d\x18\xc9Q\
-D>\xb6v\xcc\xb4@O\x93_~\xd3\xd6\xdf\xdf\x0f\
-2\x99\x0cD\x22\x11\xa8T*\x90J\xa5\xa0\xd1h \
-K[9\xbe\xe9\x95\xe0\x1f\xb8S\xafy,\xf3\x00\x97\
-\x8e\x22\x9e\xc7\x86\xe6S)\x19\xf6\x82\x82\x02\xe6\xe2\xa0\
-\xa0 \xe0\xf1x`\xb1X@[^\x01\xfb\xcf&\x0c\
--\xa6S\xceg\x94\xcf\x09L\x83\xe2[{\xe6\xc2`\
-\x9a\xb2\x14\x14\x0a\x05\x88\xc5b\xc8\xcc\xcc\x84\xa2\xa2\x22\
-P\xab\xd5\xd0\xd9\xd9\xc9`\xec\xfe\xc9\xb9\xc9\xdb\xa7u\
-.\xb7\xcfK\x80\xae\xb7\xd8)p\x0e\xc0j\x97\xacx\
-\x88\xca\x7f\x82\xe2)\x89\x0e>\x97+![\x96\x0f\x07\
-c\xe3G\x84\x1f&\xd8\x92rd\x8eo\x1a\xbf\x07\xa3\
-\xd1\x08-\xad-\xf0\xcb\xc0 \x1c8\xf1\xbe\x05\xb3b\
-\xc1\x04\x5ci\x84\x85\x85\x84F\xdc&\xe72\xac,\xcf\
-3\xb5\x13\xec;\xe3\xba\xd33\xaf\x82\xe5\xfez\x89\x06\
-\x9e\xde\xfcb\x1b\xf7<\x92\x8d{f\xabO[\xca5\
-\xedXCC=444\x80\xa5\xb7\x172\x14\xc5\xc3\
-\xf3\xe9\xc0e<\x92\xe5(\x9e6]\xe5\x9c*2x\
-}\xf4\x83.Zl\x121\x0c\x1b%\xeaq\xf7/\xcb\
-'\xef\x05\x87_\xfe\xd3\xe4D\x0bLh\xf4\xc9>u\
-\x95\x1e\x0c\x06\x03\xb4\xb7\xb7\xc3\xd7\xc6\x961\xae\x81\x09\
-f\xf16m8h<I::e\xf8b\x81\x83D\
-\xbdWC\xb6\x0a^\x9b*\xc3\x94\x5c\xb0B\x0f\xab$\
-\xb4\x04\x9fJ\xaa\x9bC71(\xd4O\xf2\x0a\xc7t\
-:\x1d\xd4\xd6\xd6\x82\xc9|\xdb\xb9a\x9b\xf7_\xeab\
-\xb2\xe5~\x9cu\x1f\x0d\xf3\xb2\xd4N\xf2\xf6\xb1\xeb.\
-\xb6\xae\x94\xc3\x90l\x97U\xc1KW\xab\x80\x9cMn\
-Z\xd0\x1cI\xbd\xb1\xe7\x88\xb0\xef\xcaW\xc5PZZ\
-\x0a\x1d?\xf6L\x04\x06\x87t<\xaa\x0b\xc2\x84F\x8d\
-\x07\xc8o\x02\xd9\xf9\xaa~\x9a\xf10F\x8e6 \xaf\
-\xbcJxCi\x00\x92(\x1d\x98\xcd\x95\xb3y\xc3}\
-=\xbf\xf9Dj\xa6].\x97CSK+D\x1c{\
-\xf7\xce\xf4\x14%\xae\xf1\x8a\xf5w\x9c\xf5p\x02\xc2\xd9\
-\x0f\x89\xd1\x81\x03O\x8e\xf7\xdc\xd2i\xe7\xf3\xdfu\xfc\
-o\x14.6\xd2\xef\xd8\x17iI\xbe,\x9d\xc8\xd3\x96\
-;\xa7\x0f1\x8c%\xc6\xdf\x9f\xbaw_q5\xa0A\
-l\xb5\x08\x8c\xf9\x94\xf1\xe0\xf03K\x9a|h\x13Z\
-\xbd\xce\xa3\xd9kOH\xf7\x0c\x0f\xb0\x0f\xfe\xf3\x87\xc8\
-\xf9/\xee\xb9In\x00\xf6{>\xed\xf7\x08\x1e*>\
-]\xe5X\xaa\xf1GZ\xf5\xb6Y\x0b\x11\x1d\xb3C\xc9\
-\x918\x099\xf9\xa9\x96!\xfa\x5c\x1a\x0d\xcf\xb3\xff\xff\
-7\xfcO\x13\xf8\x1d\xe7\x87\x19\xb9D\xc3\x01\xcf\x00\x00\
-\x00\x00IEND\xaeB`\x82\
-\x00\x00\x05:\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
-\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
-\x00\x00\x00\x19tEXtSoftware\
-\x00Adobe ImageRead\
-yq\xc9e<\x00\x00\x04\xccIDATX\xc3\xb5\
-\x97]L[e\x1c\xc6wo\xbc\xd9\xe5\x12I q\
-\xd7&\xe3N\x13\xb8p\xd1\x85D\xbdP\xe3\x10\x18\xe5\
-+.&J\x04'\x86\xaa\x8b\x99\xe0\xd0\xa2l\x19\x86\
-9\x17\xdc\x1a\x16\x98\x80@l\xa6C\xca +\x83\x1e\
-(\xcc\xda\xd1\x96\xd2\xd2J{\xfa\x01\xa5\xd0\xef\x16\x1e\
-\xdf\xff\xdb\x1d\xc7\xcc\x04*\x87\x93<9o!\x9c\xe7\
-\xf7<\xefG\x0f\x87\x00\x1c\xcaF\xcf\xbd\xfa\xe9\xbbL\
-Z&a\x0fj`\xca\xd9\xe9y\xd9\x9a?]P\xf2\
-\xa5\xc1\xe9\x8f\xa7W\xc3@0\x02\x84\xa2\x19\xad\xc72\
-\x8a'\x81X\x22s\xbfyk\xdaK\x10r\x02\x1c{\
-\xe7\xac\xda\x1c\xd8\xc8\x98\x12@\x84\x99\x85\xe3\x19\x911\
-)\x1aKa%\x94D8\x9aBs\x87\xc6\xbe\x13\xc4\
-\xff\x02\x90\x12\x93y$\xf1\xc8X\x92\xcf\x1f\x84]\x8c\
-\xc2\xe5\x09\x22\x12K\xa3\xf4\xc3\xefM4uY\x01\xb0\
-\xeb\xd86\xd5\x90\x9e:\xfc\xcc\xb9\xe7_.\x11?V\
-\x9eEEU\x0d*\x99\xde\xaf\xad\xc3\x9d\xb1\x89\xc7\x00\
-\xac\xb6%\xfc\xb9\xe8\x87k\x15X\xf6\x04\x10\x08\xc6\xd2\
-\xaf\x9c\xbep\x9fA\x1c\xd9\x15\x80]\x87\x99\x1a\x8a\x8a\
-\x8a\xcc\x92Z[[\xdd\xa4\xafU\xad\xfe\xafT\xdf\xa6\
-\x06\x06\x06195\x85\xd9\xb99\xe8&&PPP\
-\x80!\xcdo|\xdeI\xa6\xf9\x05\xcc\x98\x5c\x1c\xc0\xe1\
-OA\xf4\x85\xf0C\xaf\xce\xcd\x00j\xf6\x02PCf\
-\xd8\xe5\x8a\xc7\xe3\xf0z\xbdH\xa7\xd3\x98\x9c\x9cDe\
-e5fg\x8d\xbc\x81\x07f\x1bt\xd3\x16\x0e@2\
--x\xf0\xdd\x8dQ\x8f\xac\x00\xe1p\x18F\xa3\x91\x8f\
-S\xa9\x14~\xea\xedE\xe3'\x9fa\x86A8\x96\xdc\
-Pwu\xe3LC#\xce5\x9d\xc7\xed\x91q\x5c\xbc\
->,/\xc0\xc6\xc6\x06\xf4z\xfdc@}}\xfdP\
-2\x88\xd0F\x1cf\x9b\x0b\x82\xc1\x88\xa9\x19\x13\xac\x0e\
-\x11\x97\xbadn\x80\x00\xa6\xd8:\xd8~E\x22\x11\x94\
-+*0\xae\x13@\xe7\x04mW\xda\xaa4\xbe|S\
-\xe65@f:\x9d\x0e\xc3\xc3\xc3\xe8e\xf5\xf7\xf7\xf7\
-C\xab\xd5\xa2\xaa\xba\x06cw\xf5\x90\x0e*w\x90\xed\
-\x04\xb6\x0e\xda\xbbe\x06\xa0y\xb7\xdb\xed\x18\x1a\x1aB\
-gg'zzz8PIi\x19ni\xf5\x10\xd7\
-\x00o\x08\xb0\xf9\x00g\x00\xb8\xd0%3\xc0\xd6\xd6\x16\
-\xdf\x09\x81@\x00\xa2(\xc2\xef\xf7cmm\x0d\xa7\x14\
-\x95\xd0\xfc\xae\xe7\xa9\xc9|\xc1\x0b\x98=@\x9b\xdc\x00\
-\xdbA677\xf9v\xa4V\x14\x15\xd5\xe8\xfbU\xe0\
-\xa9\x1d\x81G\x00\xe7;\x0f\x00\x80\xcc%\x80$3O\
-$\x12(+\xaf\xe2\x00\x7f\xb8\x00\x8b\x98\x01\xa06Z\
-\xd5\x070\x05\xff\x98'\x93<=MI\xc9\xa9J\x0e\
-\xa0\xb7\xb3\x03\x89=\xc5\xf8\x170\xb1\x00|q\xf5\x00\
-\x00\xa4\xea\xc9\x98\x14\x8b\xc5P\xa6\xa8\x82zH\xc0\x98\
-\x19\xb8k\x05\xe6\x9c\x99\xfb\xe7Wd\x04\x90\xd2Sj\
-\x02\x88F\xa3\xdc<\x14\x0a\xa1\xb8\xb4\x02\xd7\x06\x05\xdc\
-f\x87\xe4\xa0\x01\x1cd\xc4\x04(;d\x06H=\x9c\
-s\x12\x99\xd3\xb9@ \xc5eU\xb8\xd8-\xa0\x7f:\
-c\xae}\x90i\xe0\xa3v\x99\x00\xfe]=\xa5&\xad\
-\xae\xaer\x88\xb7J*p\xb9W\xc0=\x1b\xb8~\x9e\
-\x01\xee\xcc\x03g.\xed\x13@\xaa\x9dD\x8b\x8e\x92\xd3\
-qL\xdf\x01+++X__\xe7\x10'Y\x03\xdf\
-t\x09PO\x00\xbf\xcce\x1a\xb82\x064\xec\xa7\x01\
-\xc9X\xda\xebdNi)9\x1dD\x04@\xf5\xd3\xcf\
-\xde|[\x81\x96\xeb\x02O~u\x1c\xb8q\x0f\xf8q\
-,\x9e~\xbdNm\xa67\xaa\xac\x00\x9ed,m7\
-2%\x00\xd1#\xf2\xe4\x12\xcc\x1b'\x15h\xef\x11\xa0\
-\xbcf[\x7fO5\xe2<q\x9a\xbf\x8ei\xf7\xfcJ\
-&\x01\x90\xa9$i\xb5SB2\x0f\x06\x83p\xb9\x5c\
-\xdc\x90^J\xe8\xb3\xc7\xe3\x81\xdb\xed\xc6\xf1\x13\xaf%\
-\x9f}\xa1\x9cL;\x98\x8a\x99\x8e>\xc9xG\x00\x95\
-J\xc5\x01\xa4\x15.\xcd7\x19RR:\xf7)\xb5\xc3\
-\xe1\xe0\x22\xe3\xc5\xc5E\x0e\xf5\xe2\xf1\x97\x5c\xf4\x1e\xb9\
-\x93\xe9\xae\x00---n\xe9`\xa1\xd4\xd2\x97\x0d\x8d\
-\x97\x97\x97\xe1\xf3\xf9`\xb3\xd9\xf8}ii\x89C\x10\
-\x00\x8d\x0b\x0b\x0b\xcd\xb2\x00\xd0\xa2\x92R\x93\x11\x8d\xe9\
-N\xdfxT;5`\xb5Zy\xf5\xd4\x0a\xfd\xce`\
-0$\xf2\xf2\xf2\xee\xb3g\x1c\xd9\x17@SS\x93[\
-\x9agJO\x22\x13\xaa\x9a\xc6\x16\x8b\x997@\x9fG\
-GG#mmm\xde\xfc\xfc|\x13\xfb\xdbA\xa6\xb2\
-\xbd\x9a\xff'@ss3\x9f\x02JG\x10T?U\
-???\xcf\xeb\xd6h4\x91\xba\xba:\xe7\xc3\xb4]\
-L\x1f0\x1d\xcd\xc6xG\x00\xa5R\xe9v:\x9d\xbc\
-bJJo>\x94\xb4\xbe\xbe\xde\x99\x93\x93#\x99\x16\
-gSuV\x00\x8d\x8d\x8dn\x8b\xc5\x82\x81\x81\x81H\
-mm\xad377WV\xd3\xdd\x00\xf8\x7fFL\xc2\
-A\x99n\xd7\xdfC9V\x18\x85p\xc8\x04\x00\x00\x00\
-\x00IEND\xaeB`\x82\
-\x00\x00\x03T\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
-\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
-\x00\x00\x00\x19tEXtSoftware\
-\x00Adobe ImageRead\
-yq\xc9e<\x00\x00\x02\xe6IDATX\xc3\xd5\
-\x97\xcdN\x13a\x14\x86\xeb5\x94\x95{q\xe1\xd2\xc4\
-\xe0\x05\xb8\xe2\x0e\x5c\xb8\xf4\x02\x5c\xb10\xea\x05\x18\x96\
-&bX\xb8\xb0\x91X \xd1\x9d\xbf\x89\xa4\x14\xb1R\
-\xa4HE\x94\xfe\xd0\x02C\xff\xa6\x9d\x19\xa6e\x80\xe3\
-y{\xfa\x85QJ\x82\xc9!\x86I\xde\x9c3\xa7\xf3\
-\xcd\xfb\x9c\xf3M\x9bN\x84\x88\x22\xffS\x91s\x01\xc0\
-\xc7\xd5\x90n\xff\xa5\xfb\xac\xc7==d\x0d\xa9\x02\xf0\
-12<<\xbcj4::\xba\x19V<\x1e\xaf&\
-\x93\xc9V:\x9dv\x13\x89Dk`` \xcdkn\
-h\x02\xa48\xd2\xe1\xe1q\x99\xba\xef\xb7\xc9\xb2,\xda\
-\xdf\xdf'\x86\xf1x\xcd\x18\xeb\x8a\x1a@?\xf3\xb0\x1c\
-\xc7\xa5Lf\xb9\x0b\x14\x04\x01\xc5b\xb1:\xaf{p\
-\x1a\x88S\x01\x1c\x1c\x10ww\xb2l\xdb\xa1\xf9\xf9\xcf\
-d\x0e\xd7u\xe9\xf9\xc4D\x17B\x05\x00&{\xc1\xc9\
-\xaa7\x1cJ\xce\xcdS\xf8p]\x0f\x8b\x17T\x00\x82\
-\x10@gO\x14\xce\xed\xa6G\x1fgf\xe9\xf5\x9b\xb7\
-\x14\x9f\x9c\xa4\xa9\xa9iz\xf7\xfe\x03E\xa3\xd1e^\
-\x7fA\x05\xc0\xef\x10\xed\xb6%\x86\x85\x9a\xe3\x05\x94]\
-\xcd\xd1\xe4\xf4+z2\xfe\x94\x9e\xc5^\xd0Lb\x0e\
-\x8b\x17U\x00\xda\x81\x18\xf5\x13 <\xff\x90j\xcd6\
-\x157\xab\x94/nS\x89c\x8d\xb7\x85\xd7~Q\x01\
-\xf0y\xcc\xcd]\x1e\xb5\xc7{\xdb\xee\x9f;\xbe\xe4\x88\
-]\xb8\xbd\xee\xe2\x94\xca3\xe0u\xe4\xc6uWb\xd8\
-\x109\xea\xe63D\xd4\x01\xa7\x06\xe0\xf4:\xad9\x22\
-\x98\x98hr\x80\x98kPS\x9d\x00\x00*-\xb91\
-\xe2NS\x8c\x10\x0d\x04\xf2m\xfb(\xb6|E\x00\x9b\
-;\xdbj\xfci\x8e<l\x88\x1a\xae9\x13\x80:\x8f\
-\xb7T#*\xd7\xc5\x04\x06\x06\x005(\x9c\x17\xab\xbc\
-%\xbb\xca\x13\xc0Ma\x0e\x15*rn\xcc~Z\x02\
-hj\xdd\xad\xf1\x94'\x00S\xdc\x1cqm[@`\
-\x9a\xab\x1cu\x9e\xeb\x81A\x15G\x11\xc0j\x891\x0c\
-\xd6w\x04 \x0cd&b\xb6iu\x8b\xa8\xaa\x09P\
-\xb6\xc5\xbc\xd0\x03\xf8\xbe)c\x87)`\x0c\x18\x84\x1c\
-\x00[ME\x00t\x03S\x98\xad\x94\xc5\x1c\xe7F\xe6\
-\x1c\x00\xc8q]\xa9\xa1\x08\x80\xfd\xfcV\x12s3\x01\
-\x085\x18B\xe8\xda|\x8e)\xa8N\x00[\x00\x03\xc8\
-\x98g6\x04\x002\xe6\x85\xde\xf8\x17\x0b\xfc,\xd8\x8a\
-\x00\x18g:O\xb4T\x14#\x98\x02\x00\x02\x0c>\xfb\
-\xc5S(\xf0C\xb8fI\xf7k\xf9R\x87\xd7\xbeT\
-\x01\xc8U\x8f\xbaN\xadK\x0e\x90\xaf\x85\xde\xb7\xc2\x92\
-=O\xa6\xb3\xde\xa3\xb1q\xeb\xda\xd0\xf5\x15\x98\xb3n\
-\xa9\x00l4\xa4k\x18\xff\xe0\x11\x7fZ\x17S\xd4\x13\
-\x0bYo\xe4\xee\xbd\xe2\xa5\xc1\xcbK|m\x8cu\x87\
-5\xa8\xfa\xb7\x1c\xdde\xd9<\x8f\x1f\x19\xfe\x9e\xcf\x1e\
-7\xbd\xc9\xbax&oF\x00h\xf2\xff\x81\x99\x94\x9e\
-\xe9?\xbf\x19\x01B\xd3\xf4\xfc\xbd\x9c\x9e\xa5~\x03Q\
-l%\xa1\x92\x95\x0aw\x00\x00\x00\x00IEND\xae\
-B`\x82\
-\x00\x00\x06m\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
-\x00\x00\x064IDATx^\xad\x97[lT\xc7\
-\x1d\xc6\x7fs\xce\xd9\x8b\xbd\xf6\xfa\x16\xa0\xbe\x00\x0e\xb2\
-ic$BJ!\x22\xa1-\x95b\xa5/\xeeKh\
-+\x95\xa6U\xa5\xc6`U\xaa\xda\xb4\xaa\xfaV\x09U\
-\xca\x03\x94'\xda\x07\x84\x14)\xad\xc4\x8b\xa5R\x83y\
-\x08\xc5\x189\x0ei\xd3\x84\x9a\x9bcj\xec\xb2\x04\x1b\
-;\xbb\xf6z\x8f\xbd\xbb\xde\xb3g\xa6\xc3h\x85\xe5r\
-l\x88\xc9'}\xfa\x9f\x9d\x87\xfd~\xf3\x9f\x99s\x11\
-J)\x82$\x84x\x05x\x9e\xc7kH)\xf5w\xd6\
-(' \xb8C\xbb\x01h\x97R\xbe\xc6cdY\xd6\
-\x07\x1a\xf6\xbb@\xb7\x069\xff\x14\x00&\xfc\xb7\xed\xf5\
-\xe2`]DDn\xce\x89\x8a+W\xaeP]S\x8d\
-@\x00\xa0P\x08e(A)f\xd3i^\xa9\x17/\
-\xbc\xb4Nl;\xf1\x1f\xb9G\x83|[CL<M\
-\x07\xf6\xff`\x8b\xdd,%\xf8J2<<Lee\
-%+\xc9u]\x1e\xc0n\xa9\xb0\x22\x1b\xa2*r?\
-\xa7\xea\x81\xb5\x03\x08-\x05H\xa1\x0d\xf4]\xbcH.\
-\x97\xc3/\x16QJ\x91\xcf\xe7Y\x5c\x5c\xa4P(P\
-\xd4c\xb5\xb5\xb5\x94\x01X\x80\xf8\x82\xf6\x80\x01\x006\
-D\x05\x1f\x0f\xbcK>;\x8f\x85D\x952\xe2\xb6\xc4\
-\xb6\x04!!p>Sl\x8c;\x80D*\x04\xf0\x9c\
-\x10\x02\xe0\xcb@\x05P\x0f4`\xc4Hi\x9f$\x02\
-\x01N\x9c8!\x00\x81\x05\xd2\x87\x96\x96g\x09em\
-\x14\xe5(\xa5\xb4A\x08XW\x19%\xe2\xd8DB\x16\
-\xc3\x13s\x5c\xbc=A\xf7X\x8e\x5c$\xbe\xa9\xbd}\
-\xf7\xef-\xcbZ\xdc\xb1cGYUU\x95\xd3\xd8\xd8\
-\x18~\xe0\x86\x86\x86\xd0\xa5K\x97\xdc\xae\xae\xae\x08\xf0\
-\xd6\xaa\x1d\x00\x13DU,\xc2s\xd51\xf2\x9eO\xa1\
-(\x91Ja\x09A\xd8\xb1\x88\x86l\xe6r\x05\x12\xa2\
-\x8e?\x9f\xff+\x0dM\x1b\x01\x22\xc0f\x96\x84\xef\xfb\
-x\x9eGuu\xb5\x9ePK\xf4\xea\xd5\xab\x87\x84\x10\
-(\xa5\xdeZ\x11\xc0\xb2A\x00\xb6-\x90\xda\xb6\x148\
-\x08\xa4\x12X\xc2\x8c\x1b\x8fL\xb9\xec{\xf5;\xd47\
-6\x11|/\xc1\x84g2\x19\xca\xcb\xcb\xcdf>v\
-\xec\xd8&\xbd\x7f\x0e.A,\x01\xd0\xd9\xd9\xa9\x0e\x1d\
-:\xa4l!\x08Y\x10\xb6-\x1c\xc7\xc6BP\xb4\xcd\
-\x1a\x1b\x00\xc7\xb2\x888\x96\xae\x02`Yx\x10\xc0\xdc\
-\xdc\x1c555\x06 \x1a\x8dr\xe4\xc8\x91\xcd\xc0\x03\
-\x88\x1b\x1a\xa2\xc7b\xb9\xb0mt0f\x8d\xcb#6\
-\xb1\xa8\xa3\xc7,2\x8b\x1e\x93\x99\x1cc\xa9y\xee\xcc\
-.\xe8\xdfEr\xf9<\xab\xc8,A6\x9b5\xa7f\
-\xe9\xffm\x0e\x1c8\xb0\x1e\xe8\x00X\x06\xa0\xb4t\x16\
-\x8e\x0d\xe1\x90\xc0S\x8a\xb1\xa4\xcb\x8d\x8c\x83\xd3\xb2\x97\
-\xa6}\xaf\xb3\xb5\xe3\x17\xac\xdb\xfb:\x0d/\xb4s\xfb\
-\xce$\xfd\xfd\xfd$\x93I\x94R\xe6\xfa\xf8\xf1\xe3\xe8\
-\xba\xac3\xe7\xce\x9d\xe3\xe8\xd1\xa3\x1c>|\x98\xde\xde\
-^\x12\x89\x84\x04,\xa1\x15\xdc\x01\xed\xff\xce\xe6\xf8\xe7\
-\x94Ok\xc7\xcf\xf8\xe6/\xdf&\xf6\xf57\x99|\xa6\
-\x83k\xfe.\xae\xf1-dk\x17\xad{\x7fN^V\
-s\xfaog\xd1wM\xee\xdc\x9d\xe2\x1b\xafvr\xfd\
-\xfau\x03\xa0gk\xd6?\x16\x8b\x99\xebx<\x8e\xe3\
-8%8\x04\xc0#\x00\x96%\x98\xcaA:\xde\xca\xfe\
-\xdf\xbdM\xd5\xae\xd7(\x84b\x08\xdbBY\x82lA\
-r\x7ff\x91O\xeef\x18\xb8\xear\xfa\x1fad\xd5\
-^\xae\x8f\xdcg2\xd7\xc6\x85\x0f\xee\x9b\x00\xed\x87\xa1\
-\xcd\xcd\xcd\xb4\xb5\xb5\x19755\xa1\xa1\x14 \x83\x1f\
-F\x16\xdcq\x15\xdf\xff\xe9o\xa8l\xd8H\xe2\xec;\
-L\x8f^\xc3\x89\x94\xb1\xb5y\x07\x9b[\xb6\xf3Iy\
-%c\x09\x97\xcff\xf2\xdc\x9d\xce2\xa1\xed\x88\x0dL\
-'\xe7\xd8\xb7+\xca\xfa%\x003{=k\xea\xea\xea\
-\x00\xccu*\x952\x00J+\x10\xa0\xb9Zp\xe1\x9d\
-c(,\xca\xe6\xc6\xd9\x10\x8fR\x94\x92{\xc3}$\
-e\x05\xdb\xda\x7fLM\xdb\xcb|<\x9cf\xd2_\xc0\
-\xcdx,\xcck/x \x00\xb5t:B\xa1\x90\x09\
--\xdd\xea\x1f\x8e\x01*\xf8>`\xc1\xc6\xb8\xa0P\x1c\
-#\x1c\x8bS\xb7\xa5\x96\x92xv}\x05\xe9\xac\xc7h\
-\xff\x9f\x98\xae\xbcL\xcb\xf6\x83\xb8\x0ba\xbc\x82\xa4X\
-\x94x\xda!\xc7B-\xaa\x80\xe3i\xa0\x96\xd5\x15\x01\
-\x00\xd6\xc7C\x84\xca#\xfc\xbfjc!\x9e\xa9\x0cs\
-\xe1\xdf\x83\xec\xd9\xf9\x13\xca\xa3\x0e\xb92G\x03(\x03\
-ak\x00\x16K!\xa5\x1c%0*\x15\xa4\x5c\x05@\
-X\xa5*\xcc\xf5#\xfapl\x86\xf1Y\x8f\xef\xfd\xfa\
-\x8f\xdc\xca\xd4\xe0D\x5c\xa2\x11\x1b\xcf\x93\x14=\x07\xd3\
-\x01\xa5\x90R\xf2PjY\x01V\x05\x10\x08L\x0d\x04\
-\x18\x9dv\xf9\xd5_\x86\x18\xbd\xb7\x80=\x93g\xd3\xba\
-2\xf2y_\xbbh\xea\xce\xaf\xd4p\xf9\xdd\xe0%\x00\
-\x9ex\x09L\xb8\x10<\xa2\xd6/U\xf2\x87\x1f>\xcf\
-\xf5O3D\x1b\xb7\xb1\xf3\xc5\x97Y\x12\x5cN`\x8e\
-\xdbS\x01(\xc0\x12%\x00m\xd4R}\xb1\xb5\x96\xdd\
-[\xe2t\xbf\x97\xa5j\xf7W\xf9\xd1\x1bo\x10\xa0\xb5\
-\x03\x98\xb57\xd5\xd8\x08\x01\xd2\xcbSpSx\xf33\
-\x14\xb3i\x0a\x19\x1f%\xfd\xd5\x82\xd6\x08\xf0\xf0)\xe7\
-\xe3\xe73\x14\xe6u\xa8\x0e\xd6\x00\xcb\xf7\x89\x10\xc13\
-}\xfa\xd7r\x8c\xb2\x137\x03\xc7\x01\xb2\x1e\xfe\xad\x94\
-\xcco\xf7DT\x03\xd8_p\x07\x08\x92\x09\xfd\xd7=\
-?\xfd~B\xa6\xcf\xdf\xf6\xef\x02\xeev;\xfc\x92\x06\
-\xa8\xe3s\xcau]\x1fpW\xed\x00@2\xab\x0a\x1f\
-~*\xd3\xbd\xb7\xfc\xd4\xcdi9\x05\xf4\x03\x97th\
-\xbf\x10\xa2\xd3\xb6\xed\xaf}\x9e%XXX\xf0\x07\x06\
-\x06\xd2'O\x9e\x9c\x06\xba\x83\x00>\x1aI\xca\xad\xe3\
-\xb3*\xd7;\xe2\xa7nL\xcb\xd1R\xe8Y\x1dt\x8b\
-\x00=\x09\xc0\xd0\xd0\x90\xdb\xd3\xd3\x93\xd2N\xcf\xce\xce\
-\x9e.\xbd\x1d\xdf\x08\x02\xe8\xee\xea)\x00\x8c\x04\x84\x06\
-\x85\xaf\x08055U\xd0/\x22\xa9S\xa7N%\xc7\
-\xc7\xc7/\x03g\x81~\x1d\xec\xae\xb8\x09K\xdfv\xda\
-O&\x85\x01@\x08@aZ\xfc\xde\xe0`\xba\xbb\xbb\
-;\xa5\xdf\x8a\xcc$\xd0^\xeds\xcda\xed\x9aw3\
-n\x11`p\xf0\xfdt___\xfa\xcc\x993\xa6\xc5\
-\xa5\xd0\x8fx\x02\x89\xb5\x9ec!D\x18x\x13\xd8O\
-is\x06\xb4\xf8\xb1\xfa\x1f\xbd\xfa*_\xf2\xd8\x15\x9d\
-\x00\x00\x00\x00IEND\xaeB`\x82\
-"
-
-qt_resource_name = b"\
-\x00\x06\
-\x07\x03}\xc3\
-\x00i\
-\x00m\x00a\x00g\x00e\x00s\
-\x00\x08\
-\x08\xc8Xg\
-\x00s\
-\x00a\x00v\x00e\x00.\x00p\x00n\x00g\
-\x00\x08\
-\x06\xc1Y\x87\
-\x00o\
-\x00p\x00e\x00n\x00.\x00p\x00n\x00g\
-\x00\x07\
-\x0a\xc7W\x87\
-\x00c\
-\x00u\x00t\x00.\x00p\x00n\x00g\
-\x00\x08\
-\x06|Z\x07\
-\x00c\
-\x00o\x00p\x00y\x00.\x00p\x00n\x00g\
-\x00\x07\
-\x04\xcaW\xa7\
-\x00n\
-\x00e\x00w\x00.\x00p\x00n\x00g\
-\x00\x09\
-\x0a\xa8\xbaG\
-\x00p\
-\x00a\x00s\x00t\x00e\x00.\x00p\x00n\x00g\
-"
-
-qt_resource_struct = b"\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x02\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00h\x00\x00\x00\x00\x00\x01\x00\x00\x171\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00R\x00\x00\x00\x00\x00\x01\x00\x00\x11\xf3\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00(\x00\x00\x00\x00\x00\x01\x00\x00\x04\xa7\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00|\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x89\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-\x00\x00\x00>\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xc4\
-\x00\x00\x01e\xaf\x16\xd2\x9d\
-"
-
-def qInitResources():
- QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-def qCleanupResources():
- QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-qInitResources()
diff --git a/examples/widgets/painting/basicdrawing/basicdrawing.py b/examples/widgets/painting/basicdrawing/basicdrawing.py
index d7849b0cc..858a8cd9f 100644
--- a/examples/widgets/painting/basicdrawing/basicdrawing.py
+++ b/examples/widgets/painting/basicdrawing/basicdrawing.py
@@ -1,54 +1,17 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/painting/basicdrawing example from Qt v5.x, originating from PyQt"""
from PySide6.QtCore import QPoint, QRect, QSize, Qt, qVersion
from PySide6.QtGui import (QBrush, QConicalGradient, QLinearGradient, QPainter,
- QPainterPath, QPalette, QPen, QPixmap, QPolygon, QRadialGradient)
+ QPainterPath, QPalette, QPen, QPixmap, QPolygon,
+ QRadialGradient)
from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QGridLayout,
- QLabel, QSpinBox, QWidget)
+ QLabel, QSpinBox, QWidget)
-import basicdrawing_rc
+import basicdrawing_rc # noqa: F401
class RenderArea(QWidget):
@@ -114,56 +77,56 @@ class RenderArea(QWidget):
start_angle = 30 * 16
arc_length = 120 * 16
- painter = QPainter(self)
- painter.setPen(self.pen)
- painter.setBrush(self.brush)
- if self.antialiased:
- painter.setRenderHint(QPainter.Antialiasing)
-
- for x in range(0, self.width(), 100):
- for y in range(0, self.height(), 100):
- painter.save()
- painter.translate(x, y)
- if self.transformed:
- painter.translate(50, 50)
- painter.rotate(60.0)
- painter.scale(0.6, 0.9)
- painter.translate(-50, -50)
-
- if self.shape == RenderArea.Line:
- painter.drawLine(rect.bottomLeft(), rect.topRight())
- elif self.shape == RenderArea.Points:
- painter.drawPoints(RenderArea.points)
- elif self.shape == RenderArea.Polyline:
- painter.drawPolyline(RenderArea.points)
- elif self.shape == RenderArea.Polygon:
- painter.drawPolygon(RenderArea.points)
- elif self.shape == RenderArea.Rect:
- painter.drawRect(rect)
- elif self.shape == RenderArea.RoundedRect:
- painter.drawRoundedRect(rect, 25, 25, Qt.RelativeSize)
- elif self.shape == RenderArea.Ellipse:
- painter.drawEllipse(rect)
- elif self.shape == RenderArea.Arc:
- painter.drawArc(rect, start_angle, arc_length)
- elif self.shape == RenderArea.Chord:
- painter.drawChord(rect, start_angle, arc_length)
- elif self.shape == RenderArea.Pie:
- painter.drawPie(rect, start_angle, arc_length)
- elif self.shape == RenderArea.Path:
- painter.drawPath(path)
- elif self.shape == RenderArea.Text:
- qv = qVersion()
- painter.drawText(rect, Qt.AlignCenter,
- f"PySide 6\nQt {qv}")
- elif self.shape == RenderArea.Pixmap:
- painter.drawPixmap(10, 10, self.pixmap)
-
- painter.restore()
-
- painter.setPen(self.palette().dark().color())
- painter.setBrush(Qt.NoBrush)
- painter.drawRect(QRect(0, 0, self.width() - 1, self.height() - 1))
+ with QPainter(self) as painter:
+ painter.setPen(self.pen)
+ painter.setBrush(self.brush)
+ if self.antialiased:
+ painter.setRenderHint(QPainter.Antialiasing)
+
+ for x in range(0, self.width(), 100):
+ for y in range(0, self.height(), 100):
+ painter.save()
+ painter.translate(x, y)
+ if self.transformed:
+ painter.translate(50, 50)
+ painter.rotate(60.0)
+ painter.scale(0.6, 0.9)
+ painter.translate(-50, -50)
+
+ if self.shape == RenderArea.Line:
+ painter.drawLine(rect.bottomLeft(), rect.topRight())
+ elif self.shape == RenderArea.Points:
+ painter.drawPoints(RenderArea.points)
+ elif self.shape == RenderArea.Polyline:
+ painter.drawPolyline(RenderArea.points)
+ elif self.shape == RenderArea.Polygon:
+ painter.drawPolygon(RenderArea.points)
+ elif self.shape == RenderArea.Rect:
+ painter.drawRect(rect)
+ elif self.shape == RenderArea.RoundedRect:
+ painter.drawRoundedRect(rect, 25, 25, Qt.RelativeSize)
+ elif self.shape == RenderArea.Ellipse:
+ painter.drawEllipse(rect)
+ elif self.shape == RenderArea.Arc:
+ painter.drawArc(rect, start_angle, arc_length)
+ elif self.shape == RenderArea.Chord:
+ painter.drawChord(rect, start_angle, arc_length)
+ elif self.shape == RenderArea.Pie:
+ painter.drawPie(rect, start_angle, arc_length)
+ elif self.shape == RenderArea.Path:
+ painter.drawPath(path)
+ elif self.shape == RenderArea.Text:
+ qv = qVersion()
+ painter.drawText(rect, Qt.AlignCenter,
+ f"PySide 6\nQt {qv}")
+ elif self.shape == RenderArea.Pixmap:
+ painter.drawPixmap(10, 10, self.pixmap)
+
+ painter.restore()
+
+ painter.setPen(self.palette().dark().color())
+ painter.setBrush(Qt.NoBrush)
+ painter.drawRect(QRect(0, 0, self.width() - 1, self.height() - 1))
id_role = Qt.UserRole
@@ -228,12 +191,9 @@ class Window(QWidget):
pen_join_label.setBuddy(self._pen_join_combo_box)
self._brush_style_combo_box = QComboBox()
- self._brush_style_combo_box.addItem("Linear Gradient",
- Qt.LinearGradientPattern)
- self._brush_style_combo_box.addItem("Radial Gradient",
- Qt.RadialGradientPattern)
- self._brush_style_combo_box.addItem("Conical Gradient",
- Qt.ConicalGradientPattern)
+ self._brush_style_combo_box.addItem("Linear Gradient", Qt.LinearGradientPattern)
+ self._brush_style_combo_box.addItem("Radial Gradient", Qt.RadialGradientPattern)
+ self._brush_style_combo_box.addItem("Conical Gradient", Qt.ConicalGradientPattern)
self._brush_style_combo_box.addItem("Texture", Qt.TexturePattern)
self._brush_style_combo_box.addItem("Solid", Qt.SolidPattern)
self._brush_style_combo_box.addItem("Horizontal", Qt.HorPattern)
@@ -298,24 +258,23 @@ class Window(QWidget):
self.setWindowTitle("Basic Drawing")
def shape_changed(self):
- shape = self._shape_combo_box.itemData(self._shape_combo_box.currentIndex(),
- id_role)
+ shape = self._shape_combo_box.itemData(self._shape_combo_box.currentIndex(), id_role)
self._render_area.set_shape(shape)
def pen_changed(self):
width = self._pen_width_spin_box.value()
style = Qt.PenStyle(self._pen_style_combo_box.itemData(
- self._pen_style_combo_box.currentIndex(), id_role))
+ self._pen_style_combo_box.currentIndex(), id_role))
cap = Qt.PenCapStyle(self._pen_cap_combo_box.itemData(
- self._pen_cap_combo_box.currentIndex(), id_role))
+ self._pen_cap_combo_box.currentIndex(), id_role))
join = Qt.PenJoinStyle(self._pen_join_combo_box.itemData(
- self._pen_join_combo_box.currentIndex(), id_role))
+ self._pen_join_combo_box.currentIndex(), id_role))
self._render_area.set_pen(QPen(Qt.blue, width, style, cap, join))
def brush_changed(self):
style = Qt.BrushStyle(self._brush_style_combo_box.itemData(
- self._brush_style_combo_box.currentIndex(), id_role))
+ self._brush_style_combo_box.currentIndex(), id_role))
if style == Qt.LinearGradientPattern:
linear_gradient = QLinearGradient(0, 0, 100, 100)
diff --git a/examples/widgets/painting/basicdrawing/basicdrawing.pyproject b/examples/widgets/painting/basicdrawing/basicdrawing.pyproject
index 9ecbfadcf..976bb9e35 100644
--- a/examples/widgets/painting/basicdrawing/basicdrawing.pyproject
+++ b/examples/widgets/painting/basicdrawing/basicdrawing.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["basicdrawing_rc.py", "basicdrawing.qrc", "basicdrawing.py"]
+ "files": ["basicdrawing.qrc", "basicdrawing.py"]
}
diff --git a/examples/widgets/painting/basicdrawing/basicdrawing_rc.py b/examples/widgets/painting/basicdrawing/basicdrawing_rc.py
index e7f9584de..701f1610b 100644
--- a/examples/widgets/painting/basicdrawing/basicdrawing_rc.py
+++ b/examples/widgets/painting/basicdrawing/basicdrawing_rc.py
@@ -1,11 +1,47 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.14.0
+# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
qt_resource_data = b"\
+\x00\x00\x02\x15\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00P\x00\x00\x00P\x04\x03\x00\x00\x00|?\xef\x9e\
+\x00\x00\x00\x15PLTE\xa3\xc2\x00\xf4\xf8\xe1\x8a\xa1\
+\x09\x14\x14\x18?G\x16\xd3\xe2\x86p\x82\x0e\xfd\x17\x22\
+9\x00\x00\x00\x09pHYs\x00\x00\x00H\x00\x00\x00\
+H\x00F\xc9k>\x00\x00\x01\xa6IDATH\xc7\
+\xedVKn\x840\x0cEf\xc49\xa2I\xd55\x22\
+\x11k\xd4Hs\x0eT\x10\xf7?B\x0b\xc4L\xfc\x83\
+\xd9u\xd1\xf1\x0a\xa2\x97\x17\xdb\xb1\x9fSUo\xfbk\
+\xbb/\xcb\xfd\x1a\x05s\x0a\xbf\x16\x1f\xee\x1c\xd7l\xb0\
+\x0d:\x9e\xe2Ba\xe3\x8b\xb8\x13$$\x0a\x8c\x96\x9f\
+S`\xd6\xeb\xb8[\x106\xa8\xc0$\x81\xf1EB\x9d\
+\x12\x09\xe3cY\xe6dSbj\xf6+\x81\xd9\xa4\xf4\
+\x19\x87\xff\x1fV\xe0\x89\xaf\xe7d9=\x14'\xd2?\
+\xa8'\x7f\xc9\xbd\x9dz\xf2\x93n\xc45\x167\xb0\xdd\
+~u\xb6VJ\xe3F\xd7`\xfb\x06\xc5\xc9\x9a\x9e\xe2\
+\xf7\xf8\x93tr\x22K\x90\xe9k\x99\xc9D\x0e\xf1\x19\
+\xd0\xc8hR\x99D\xc0\x02\x07\x91r [\xf3m\xb6\
+l\xffQ\x11=%\x5c\x9d\x9cx~\x080\x13v\xf8\
+9\xf04v\x94\xd0a\xd6\x04\xb0\x15\x84\xfb\xba\x01\x84\
+\xb2\xa9u\xe0P\x12\xf6\xd5\x05#\x84k\xc6\xb6 \xcc\
+\x9473j\xa0\xca#\xa2>\xf2\xe8\xa9\x9ex\x15\x18\
+\x09\xa1~3x\xd75\x93(q\xd7\xb8\x02T\x1f\x81\
+6RY\x8f\x9bS\x1d\xe6R\xa9G\xacp(\x98B\
+\x98d\x85\x1f=\xb3wK\x11<\xeb\x99\xa3\x0bas\
+\x1eL\xe5{\xf6\xb5\xef*\x9aO\xa7)\x85\xcb\x1aQ\
+PFU{:\xae\x82R{\x1av\x0e\x98\xe2\xcc\xf5\
+\x11)-\xc5=\x90\xb35\xbeP\xc3{\xaa\xe1\xa66\
+\xb3\xa9\xa0Q\xaas\xe6\x94\x92\xdbx1\x84O\xa6\xd7\
+\xa4\xe2\xe2\x0b\xf3z\xb2\xc6a\x93d\x85\xc7\x8b\xb7\xc7\
+\x1e\x84\xb7F6\x7f\xa5\x80A\xb8\xda\x92\xdf=\xf9b\
+\x87\xb3\x97\xd4\xe7\xf7\xf1\x92\x02\xf7~Y\xfe?\xfb\x01\
+\xbd\xf6\xdd\x91\xa2\xf3\xda\xd4\x00\x00\x00\x00IEND\
+\xaeB`\x82\
\x00\x00\x03X\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -62,42 +98,6 @@ m\x84\xd3O\x00\xdb\xe6\xee\xebD+\x94p|\xf0\xc7\
W]\x06\xe4\xfcAY\xbf\xb5\x08Wn\x8a\xce9\x97\
\xe4\xfe\x07\xb6\x84\x15$\x5c\xbcO\xce\x00\x00\x00\x00I\
END\xaeB`\x82\
-\x00\x00\x02\x15\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00P\x00\x00\x00P\x04\x03\x00\x00\x00|?\xef\x9e\
-\x00\x00\x00\x15PLTE\xa3\xc2\x00\xf4\xf8\xe1\x8a\xa1\
-\x09\x14\x14\x18?G\x16\xd3\xe2\x86p\x82\x0e\xfd\x17\x22\
-9\x00\x00\x00\x09pHYs\x00\x00\x00H\x00\x00\x00\
-H\x00F\xc9k>\x00\x00\x01\xa6IDATH\xc7\
-\xedVKn\x840\x0cEf\xc49\xa2I\xd55\x22\
-\x11k\xd4Hs\x0eT\x10\xf7?B\x0b\xc4L\xfc\x83\
-\xd9u\xd1\xf1\x0a\xa2\x97\x17\xdb\xb1\x9fSUo\xfbk\
-\xbb/\xcb\xfd\x1a\x05s\x0a\xbf\x16\x1f\xee\x1c\xd7l\xb0\
-\x0d:\x9e\xe2Ba\xe3\x8b\xb8\x13$$\x0a\x8c\x96\x9f\
-S`\xd6\xeb\xb8[\x106\xa8\xc0$\x81\xf1EB\x9d\
-\x12\x09\xe3cY\xe6dSbj\xf6+\x81\xd9\xa4\xf4\
-\x19\x87\xff\x1fV\xe0\x89\xaf\xe7d9=\x14'\xd2?\
-\xa8'\x7f\xc9\xbd\x9dz\xf2\x93n\xc45\x167\xb0\xdd\
-~u\xb6VJ\xe3F\xd7`\xfb\x06\xc5\xc9\x9a\x9e\xe2\
-\xf7\xf8\x93tr\x22K\x90\xe9k\x99\xc9D\x0e\xf1\x19\
-\xd0\xc8hR\x99D\xc0\x02\x07\x91r [\xf3m\xb6\
-l\xffQ\x11=%\x5c\x9d\x9cx~\x080\x13v\xf8\
-9\xf04v\x94\xd0a\xd6\x04\xb0\x15\x84\xfb\xba\x01\x84\
-\xb2\xa9u\xe0P\x12\xf6\xd5\x05#\x84k\xc6\xb6 \xcc\
-\x9473j\xa0\xca#\xa2>\xf2\xe8\xa9\x9ex\x15\x18\
-\x09\xa1~3x\xd75\x93(q\xd7\xb8\x02T\x1f\x81\
-6RY\x8f\x9bS\x1d\xe6R\xa9G\xacp(\x98B\
-\x98d\x85\x1f=\xb3wK\x11<\xeb\x99\xa3\x0bas\
-\x1eL\xe5{\xf6\xb5\xef*\x9aO\xa7)\x85\xcb\x1aQ\
-PFU{:\xae\x82R{\x1av\x0e\x98\xe2\xcc\xf5\
-\x11)-\xc5=\x90\xb35\xbeP\xc3{\xaa\xe1\xa66\
-\xb3\xa9\xa0Q\xaas\xe6\x94\x92\xdbx1\x84O\xa6\xd7\
-\xa4\xe2\xe2\x0b\xf3z\xb2\xc6a\x93d\x85\xc7\x8b\xb7\xc7\
-\x1e\x84\xb7F6\x7f\xa5\x80A\xb8\xda\x92\xdf=\xf9b\
-\x87\xb3\x97\xd4\xe7\xf7\xf1\x92\x02\xf7~Y\xfe?\xfb\x01\
-\xbd\xf6\xdd\x91\xa2\xf3\xda\xd4\x00\x00\x00\x00IEND\
-\xaeB`\x82\
"
qt_resource_name = b"\
@@ -105,14 +105,14 @@ qt_resource_name = b"\
\x07\x03}\xc3\
\x00i\
\x00m\x00a\x00g\x00e\x00s\
-\x00\x09\
-\x0f\x9e\x84G\
-\x00b\
-\x00r\x00i\x00c\x00k\x00.\x00p\x00n\x00g\
\x00\x0b\
\x05R\xbf'\
\x00q\
\x00t\x00-\x00l\x00o\x00g\x00o\x00.\x00p\x00n\x00g\
+\x00\x09\
+\x0f\x9e\x84G\
+\x00b\
+\x00r\x00i\x00c\x00k\x00.\x00p\x00n\x00g\
"
qt_resource_struct = b"\
@@ -120,10 +120,10 @@ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00*\x00\x00\x00\x00\x00\x01\x00\x00\x03\x5c\
-\x00\x00\x01e\xaf\x16\xd2\xa1\
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01e\xaf\x16\xd2\xa1\
+\x00\x00\x01z\xe7\xee'\x09\
+\x00\x00\x00.\x00\x00\x00\x00\x00\x01\x00\x00\x02\x19\
+\x00\x00\x01z\xe7\xee'\x09\
"
def qInitResources():
@@ -132,5 +132,4 @@ def qInitResources():
def qCleanupResources():
QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
-
qInitResources()
diff --git a/examples/widgets/painting/concentriccircles/concentriccircles.py b/examples/widgets/painting/concentriccircles/concentriccircles.py
index d3df51099..d2c60178f 100644
--- a/examples/widgets/painting/concentriccircles/concentriccircles.py
+++ b/examples/widgets/painting/concentriccircles/concentriccircles.py
@@ -1,51 +1,14 @@
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 port of the widgets/painting/concentriccircles example from Qt v5.x, originating from PyQt"""
+"""PySide6 port of the widgets/painting/concentriccircles example from Qt v5.x, originating
+ from PyQt"""
from PySide6.QtCore import QRect, QRectF, QSize, Qt, QTimer
from PySide6.QtGui import QColor, QPainter, QPalette, QPen
from PySide6.QtWidgets import (QApplication, QFrame, QGridLayout, QLabel,
- QSizePolicy, QWidget)
+ QSizePolicy, QWidget)
class CircleWidget(QWidget):
@@ -78,22 +41,22 @@ class CircleWidget(QWidget):
self.update()
def paintEvent(self, event):
- painter = QPainter(self)
- painter.setRenderHint(QPainter.Antialiasing, self.antialiased)
- painter.translate(self.width() / 2, self.height() / 2)
-
- for diameter in range(0, 256, 9):
- delta = abs((self._frame_no % 128) - diameter / 2)
- alpha = 255 - (delta * delta) / 4 - diameter
- if alpha > 0:
- painter.setPen(QPen(QColor(0, diameter / 2, 127, alpha), 3))
-
- if self._float_based:
- painter.drawEllipse(QRectF(-diameter / 2.0,
- -diameter / 2.0, diameter, diameter))
- else:
- painter.drawEllipse(QRect(-diameter / 2,
- -diameter / 2, diameter, diameter))
+ with QPainter(self) as painter:
+ painter.setRenderHint(QPainter.Antialiasing, self.antialiased)
+ painter.translate(self.width() / 2, self.height() / 2)
+
+ for diameter in range(0, 256, 9):
+ delta = abs((self._frame_no % 128) - diameter / 2)
+ alpha = 255 - (delta * delta) / 4 - diameter
+ if alpha > 0:
+ painter.setPen(QPen(QColor(0, diameter / 2, 127, alpha), 3))
+
+ if self._float_based:
+ painter.drawEllipse(QRectF(-diameter / 2.0,
+ -diameter / 2.0, diameter, diameter))
+ else:
+ painter.drawEllipse(QRect(-diameter / 2,
+ -diameter / 2, diameter, diameter))
class Window(QWidget):
diff --git a/examples/widgets/painting/painter/painter.py b/examples/widgets/painting/painter/painter.py
index 3d5d95f10..2ca078ad9 100644
--- a/examples/widgets/painting/painter/painter.py
+++ b/examples/widgets/painting/painter/painter.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtWidgets import (
QWidget,
@@ -46,7 +9,7 @@ from PySide6.QtWidgets import (
QStyle,
QColorDialog,
)
-from PySide6.QtCore import QPoint, Qt, QDir, Slot, QStandardPaths
+from PySide6.QtCore import Qt, Slot, QStandardPaths
from PySide6.QtGui import (
QMouseEvent,
QPaintEvent,
@@ -88,10 +51,8 @@ class PainterWidget(QWidget):
Paint the Pixmap into the widget
"""
- painter = QPainter()
- painter.begin(self)
- painter.drawPixmap(0, 0, self.pixmap)
- painter.end()
+ with QPainter(self) as painter:
+ painter.drawPixmap(0, 0, self.pixmap)
def mousePressEvent(self, event: QMouseEvent):
"""Override from QWidget
@@ -155,15 +116,17 @@ class MainWindow(QMainWindow):
self.bar = self.addToolBar("Menu")
self.bar.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self._save_action = self.bar.addAction(
- qApp.style().standardIcon(QStyle.SP_DialogSaveButton), "Save", self.on_save
+ qApp.style().standardIcon(QStyle.SP_DialogSaveButton), # noqa: F821
+ "Save", self.on_save
)
self._save_action.setShortcut(QKeySequence.Save)
self._open_action = self.bar.addAction(
- qApp.style().standardIcon(QStyle.SP_DialogOpenButton), "Open", self.on_open
+ qApp.style().standardIcon(QStyle.SP_DialogOpenButton), # noqa: F821
+ "Open", self.on_open
)
self._open_action.setShortcut(QKeySequence.Open)
self.bar.addAction(
- qApp.style().standardIcon(QStyle.SP_DialogResetButton),
+ qApp.style().standardIcon(QStyle.SP_DialogResetButton), # noqa: F821
"Clear",
self.painter_widget.clear,
)
@@ -175,7 +138,8 @@ class MainWindow(QMainWindow):
self.setCentralWidget(self.painter_widget)
- self.set_color(Qt.black)
+ self.color = Qt.black
+ self.set_color(self.color)
self.mime_type_filters = ["image/png", "image/jpeg"]
@@ -214,19 +178,21 @@ class MainWindow(QMainWindow):
@Slot()
def on_color_clicked(self):
- color = QColorDialog.getColor(Qt.black, self)
+ color = QColorDialog.getColor(self.color, self)
+
if color:
self.set_color(color)
def set_color(self, color: QColor = Qt.black):
+ self.color = color
# Create color icon
pix_icon = QPixmap(32, 32)
- pix_icon.fill(color)
+ pix_icon.fill(self.color)
self.color_action.setIcon(QIcon(pix_icon))
- self.painter_widget.pen.setColor(color)
- self.color_action.setText(QColor(color).name())
+ self.painter_widget.pen.setColor(self.color)
+ self.color_action.setText(QColor(self.color).name())
if __name__ == "__main__":
diff --git a/examples/widgets/painting/plot/doc/plot.png b/examples/widgets/painting/plot/doc/plot.png
new file mode 100644
index 000000000..e5031e351
--- /dev/null
+++ b/examples/widgets/painting/plot/doc/plot.png
Binary files differ
diff --git a/examples/widgets/painting/plot/doc/plot.rst b/examples/widgets/painting/plot/doc/plot.rst
new file mode 100644
index 000000000..a63eaed87
--- /dev/null
+++ b/examples/widgets/painting/plot/doc/plot.rst
@@ -0,0 +1,36 @@
+Plot Example
+============
+
+The Plot example shows how to display a graph from data using an
+`opaque container <https://doc.qt.io/qtforpython-6/shiboken6/typesystem_containers.html>`_.
+
+It draws an sine graph using ``QPainter.drawPolyline()`` from a list of points.
+The list of points is continuously updated, as is the case for a example for a
+graph of an oscilloscope or medical patient monitor.
+In this case, it makes sense from a performance point of view to avoid the
+conversion of a Python list of data to a C++ list (``QList<QPoint>``)
+for each call to the plot function ``QPainter.drawPolyline()``.
+This is where opaque containers come into play.
+
+Instead of Python list of points, a ``QPointList`` is instantiated to store
+the data. ``QPointList`` is an opaque container wrapping a ``QList<QPoint>``.
+It can be passed to ``QPainter.drawPolyline()`` instead of a Python list of
+points.
+
+The type is declared in the entry for the ``QList`` container type in the
+type system file of the ``QtCore`` library:
+
+.. code-block:: xml
+
+ <container-type name="QList" type="list"
+ opaque-containers="int:QIntList;QPoint:QPointList;QPointF:QPointFList">
+ ...
+ </container-type>
+
+In the ``shift()`` member function, new data are appended to the list while
+old data moving out of the visible window are removed from the front of the
+list.
+
+.. image:: plot.png
+ :width: 400
+ :alt: Plot Screenshot
diff --git a/examples/widgets/painting/plot/plot.py b/examples/widgets/painting/plot/plot.py
new file mode 100644
index 000000000..fd7ff9937
--- /dev/null
+++ b/examples/widgets/painting/plot/plot.py
@@ -0,0 +1,66 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import math
+import sys
+
+from PySide6.QtWidgets import QWidget, QApplication
+from PySide6.QtCore import QPoint, QRect, QTimer, Qt
+from PySide6.QtGui import QPainter, QPointList
+
+
+WIDTH = 680
+HEIGHT = 480
+
+
+class PlotWidget(QWidget):
+ """Illustrates the use of opaque containers. QPointList
+ wraps a C++ QList<QPoint> directly, removing the need to convert
+ a Python list in each call to QPainter.drawPolyline()."""
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._timer = QTimer(self)
+ self._timer.setInterval(20)
+ self._timer.timeout.connect(self.shift)
+
+ self._points = QPointList()
+ self._points.reserve(WIDTH)
+ self._x = 0
+ self._delta_x = 0.05
+ self._half_height = HEIGHT / 2
+ self._factor = 0.8 * self._half_height
+
+ for i in range(WIDTH):
+ self._points.append(QPoint(i, self.next_point()))
+
+ self.setFixedSize(WIDTH, HEIGHT)
+
+ self._timer.start()
+
+ def next_point(self):
+ result = self._half_height - self._factor * math.sin(self._x)
+ self._x += self._delta_x
+ return result
+
+ def shift(self):
+ last_x = self._points[WIDTH - 1].x()
+ self._points.pop_front()
+ self._points.append(QPoint(last_x + 1, self.next_point()))
+ self.update()
+
+ def paintEvent(self, event):
+ with QPainter(self) as painter:
+ rect = QRect(QPoint(0, 0), self.size())
+ painter.fillRect(rect, Qt.white)
+ painter.translate(-self._points[0].x(), 0)
+ painter.drawPolyline(self._points)
+
+
+if __name__ == "__main__":
+
+ app = QApplication(sys.argv)
+
+ w = PlotWidget()
+ w.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/painting/plot/plot.pyproject b/examples/widgets/painting/plot/plot.pyproject
new file mode 100644
index 000000000..0ac776c83
--- /dev/null
+++ b/examples/widgets/painting/plot/plot.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["plot.py"]
+}
diff --git a/examples/widgets/rhi/simplerhiwidget/doc/simplerhiwidget.rst b/examples/widgets/rhi/simplerhiwidget/doc/simplerhiwidget.rst
new file mode 100644
index 000000000..c33c6660a
--- /dev/null
+++ b/examples/widgets/rhi/simplerhiwidget/doc/simplerhiwidget.rst
@@ -0,0 +1,34 @@
+.. _rhi-widget-example:
+
+Simple RHI Widget Example
+=========================
+
+Shows how to render a triangle using ``QRhi``, Qt's 3D API and shading
+language abstraction layer.
+
+This example is, in many ways, the counterpart of the :ref:`rhi-window-example`
+in the QWidget world. The ``QRhiWidget`` subclass in this applications renders
+a single triangle, using a simple graphics pipeline with basic vertex and
+fragment shaders. Unlike the plain ``QWindow``-based application, this example
+does not need to worry about lower level details, such as setting up the window
+and the ``QRhi``, or dealing with swapchain and window events, as that is taken
+care of by the ``QWidget`` framework here. The instance of the ``QRhiWidget``
+subclass is added to a ``QVBoxLayout``. To keep the example minimal and
+compact, there are no further widgets or 3D content introduced.
+
+Once an instance of ``ExampleRhiWidget``, a ``QRhiWidget`` subclass, is added
+to a top-level widget's child hierarchy, the corresponding window automatically
+becomes a Direct 3D, Vulkan, Metal, or OpenGL-rendered window. The
+``QPainter``-rendered widget content, i.e. everything that is not a
+``QRhiWidget``, ``QOpenGLWidget``, or ``QQuickWidget``, is then uploaded to a
+texture, whereas the mentioned special widgets each render to a texture. The
+resulting set textures is composited together by the top-level widget's
+backingstore.
+
+As opposed to the C++ example, the cleanup is done by reimplementing
+``QRhiWidget.releaseResources()``, which is called from QWidget.closeEvent() of
+the top level widget to ensure a deterministic cleanup sequence.
+
+.. image:: simplerhiwidget.webp
+ :width: 400
+ :alt: Screenshot of the Simple RHI Widget example
diff --git a/examples/widgets/rhi/simplerhiwidget/doc/simplerhiwidget.webp b/examples/widgets/rhi/simplerhiwidget/doc/simplerhiwidget.webp
new file mode 100644
index 000000000..fdb8d20ec
--- /dev/null
+++ b/examples/widgets/rhi/simplerhiwidget/doc/simplerhiwidget.webp
Binary files differ
diff --git a/examples/widgets/rhi/simplerhiwidget/examplewidget.py b/examples/widgets/rhi/simplerhiwidget/examplewidget.py
new file mode 100644
index 000000000..5b3e40f50
--- /dev/null
+++ b/examples/widgets/rhi/simplerhiwidget/examplewidget.py
@@ -0,0 +1,135 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import numpy
+
+from PySide6.QtCore import (QFile, QIODevice)
+from PySide6.QtGui import (QColor, QMatrix4x4)
+from PySide6.QtGui import (QRhiBuffer,
+ QRhiDepthStencilClearValue,
+ QRhiShaderResourceBinding,
+ QRhiShaderStage,
+ QRhiVertexInputAttribute, QRhiVertexInputBinding,
+ QRhiVertexInputLayout, QRhiViewport,
+ QShader)
+from PySide6.QtWidgets import QRhiWidget
+from PySide6.support import VoidPtr
+
+VERTEX_DATA = numpy.array([ 0.0, 0.5, 1.0, 0.0, 0.0, # noqa E:201
+ -0.5, -0.5, 0.0, 1.0, 0.0, # noqa E:241
+ 0.5, -0.5, 0.0, 0.0, 1.0],
+ dtype=numpy.float32)
+
+
+def getShader(name):
+ f = QFile(name)
+ if f.open(QIODevice.ReadOnly):
+ return QShader.fromSerialized(f.readAll())
+ return QShader()
+
+
+class ExampleRhiWidget(QRhiWidget):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.m_rhi = None
+ self.m_vbuf = None
+ self.m_ubuf = None
+ self.m_srb = None
+ self.m_pipeline = None
+ self.m_viewProjection = QMatrix4x4()
+ self.m_rotation = 0.0
+
+ def releaseResources(self):
+ self.m_pipeline.destroy()
+ del self.m_pipeline
+ self.m_pipeline = None
+ self.m_srb.destroy()
+ del self.m_srb
+ self.m_srb = None
+ self.m_ubuf.destroy()
+ del self.m_ubuf
+ self.m_ubuf = None
+ self.m_vbuf.destroy()
+ del self.m_vbuf
+ self.m_buf = None
+
+ def initialize(self, cb):
+ if self.m_rhi != self.rhi():
+ self.m_pipeline = None
+ self.m_rhi = self.rhi()
+
+ if not self.m_pipeline:
+ vertex_size = 4 * VERTEX_DATA.size
+ self.m_vbuf = self.m_rhi.newBuffer(QRhiBuffer.Immutable,
+ QRhiBuffer.VertexBuffer, vertex_size)
+ self.m_vbuf.create()
+
+ self.m_ubuf = self.m_rhi.newBuffer(QRhiBuffer.Dynamic,
+ QRhiBuffer.UniformBuffer, 64)
+ self.m_ubuf.create()
+
+ self.m_srb = self.m_rhi.newShaderResourceBindings()
+ bindings = [
+ QRhiShaderResourceBinding.uniformBuffer(0, QRhiShaderResourceBinding.VertexStage,
+ self.m_ubuf)
+ ]
+ self.m_srb.setBindings(bindings)
+ self.m_srb.create()
+
+ self.m_pipeline = self.m_rhi.newGraphicsPipeline()
+ stages = [
+ QRhiShaderStage(QRhiShaderStage.Vertex,
+ getShader(":/shader_assets/color.vert.qsb")),
+ QRhiShaderStage(QRhiShaderStage.Fragment,
+ getShader(":/shader_assets/color.frag.qsb"))
+ ]
+ self.m_pipeline.setShaderStages(stages)
+ inputLayout = QRhiVertexInputLayout()
+ input_bindings = [QRhiVertexInputBinding(5 * 4)] # sizeof(float)
+ inputLayout.setBindings(input_bindings)
+ attributes = [ # 4: sizeof(float)
+ QRhiVertexInputAttribute(0, 0, QRhiVertexInputAttribute.Float2, 0),
+ QRhiVertexInputAttribute(0, 1, QRhiVertexInputAttribute.Float3, 2 * 4)
+ ]
+ inputLayout.setAttributes(attributes)
+ self.m_pipeline.setVertexInputLayout(inputLayout)
+ self.m_pipeline.setShaderResourceBindings(self.m_srb)
+ self.m_pipeline.setRenderPassDescriptor(self.renderTarget().renderPassDescriptor())
+ self.m_pipeline.create()
+
+ resourceUpdates = self.m_rhi.nextResourceUpdateBatch()
+ resourceUpdates.uploadStaticBuffer(self.m_vbuf, VoidPtr(VERTEX_DATA.tobytes(),
+ vertex_size))
+ cb.resourceUpdate(resourceUpdates)
+
+ outputSize = self.renderTarget().pixelSize()
+ self.m_viewProjection = self.m_rhi.clipSpaceCorrMatrix()
+ r = float(outputSize.width()) / float(outputSize.height())
+ self.m_viewProjection.perspective(45.0, r, 0.01, 1000.0)
+ self.m_viewProjection.translate(0, 0, -4)
+
+ def render(self, cb):
+ resourceUpdates = self.m_rhi.nextResourceUpdateBatch()
+ self.m_rotation += 1.0
+ modelViewProjection = self.m_viewProjection
+ modelViewProjection.rotate(self.m_rotation, 0, 1, 0)
+ projection = numpy.array(modelViewProjection.data(),
+ dtype=numpy.float32)
+ resourceUpdates.updateDynamicBuffer(self.m_ubuf, 0, 64,
+ projection.tobytes())
+ clearColor = QColor.fromRgbF(0.4, 0.7, 0.0, 1.0)
+ cv = QRhiDepthStencilClearValue(1.0, 0)
+ cb.beginPass(self.renderTarget(), clearColor, cv, resourceUpdates)
+
+ cb.setGraphicsPipeline(self.m_pipeline)
+ outputSize = self.renderTarget().pixelSize()
+ cb.setViewport(QRhiViewport(0, 0, outputSize.width(),
+ outputSize.height()))
+ cb.setShaderResources()
+ vbufBinding = (self.m_vbuf, 0)
+ cb.setVertexInput(0, [vbufBinding])
+ cb.draw(3)
+ cb.endPass()
+
+ self.update()
diff --git a/examples/widgets/rhi/simplerhiwidget/main.py b/examples/widgets/rhi/simplerhiwidget/main.py
new file mode 100644
index 000000000..59be81ddc
--- /dev/null
+++ b/examples/widgets/rhi/simplerhiwidget/main.py
@@ -0,0 +1,35 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the Qt Simple RHI Widget Example example from Qt v6.x"""
+
+import sys
+
+from PySide6.QtWidgets import QApplication, QVBoxLayout, QWidget
+
+from examplewidget import ExampleRhiWidget
+import rc_simplerhiwidget # noqa F:401
+
+
+class Widget(QWidget):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ layout = QVBoxLayout(self)
+ self._rhi_widget = ExampleRhiWidget(self)
+ layout.addWidget(self._rhi_widget)
+
+ def closeEvent(self, e):
+ self._rhi_widget.releaseResources()
+ e.accept()
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ w = Widget()
+ w.resize(1280, 720)
+ w.show()
+ exit_code = app.exec()
+ del w
+ sys.exit(exit_code)
diff --git a/examples/widgets/rhi/simplerhiwidget/rc_simplerhiwidget.py b/examples/widgets/rhi/simplerhiwidget/rc_simplerhiwidget.py
new file mode 100644
index 000000000..ee8b41242
--- /dev/null
+++ b/examples/widgets/rhi/simplerhiwidget/rc_simplerhiwidget.py
@@ -0,0 +1,163 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.7.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x02\xe2\
+\x00\
+\x00\x07\xc4x\x9c\xb5T]k\xd4@\x14\x9d\xed\xa6]\
+\x9b\xd6\xda\x0f\xd07\x19\xe9\xcb\x16%\xa6\xb5\x15q\xdd\
+\xfa\xb0U)\x14Z\xdbR\x84e\x091\x9bM\x07\xb2\
+\xc9\x92\x8fE)\x05\xdf}\xf7w\xf8'\xfcO\xbe\x88\
+\xde;s\xd3\xcc\xa6[*\x88\x03\xb3\x999s\xef=\
+g\xceM\x9616\xcf\x183`\xd6`.\xb11s\
+\x98\xc7b\x16\xc2L\x00\xa9\xc3d\xbfi\xb0)\x03\xd3\
+V\xd9\x00\x82]\x16\xb0\x8e\x96j\xdc\x96\xfa\xafc\x8e\
+\x9e}M\xcd\xf7\xfa\xccz\x03U\x99\xec\x0e[#t\
+\x85\xcdH\x9d\x0b\x90\x82\xcfw\x07'\x07V\x9a\xf5\xad\
+\xed\x1d\x1b\xcf\x97\xd45\xe5\xd9=\xd6\x90\xcaq\x0e]\
+\x11!\x8e\x16-\xc2\x5c\x868\xc4\x1bX\x03V\x88?\
+$\x0e\xdc/j\xfb5\xe0\x9c\x81\xe7#\xc8\xc1\xea\xb8\
+\xbe\x0f+\x14\xcda>\x80\xf8\x06]\xc2\x90\x98\x01\x8a\
+\x95\xe1\x88\xb7h?O\x18\xc6\x9b\x14_\xa7\xf8\x05\xd2\
+lR\xfc\x02\xe9D\xec1\xec\xe7\xe4\xddp|y\xfd\
+\x9c\xcdJ\x0d\x06\xe9\xc3\x1a?\x01\x99\x85g\x9bj\xdf\
+\xa5\xfc\xf7\x80\xceI/\x14\xc64l\x99\xb0\x9a\x86\xad\
+\x10\x86\xf5\x8f@=\xea_\xa5\xfce:G\x1d\xbb\xc0\
+:Og\xbf\xa0\xc2\x0bY\x85\x19\xe4s\x8dzY#\
+\xca\xaf\xebc?IE\x1c\xf1M\xdb6G\x89\xef\x09\
+\xb9;\x17\xc1\xf9\x88\x0f\xc2\xd8\xcdZ\xd7`\x11\x01h\
+\x8e\xdd\xe4\xb3\x88\x02>\xf6\xbdg|\xecxq\x18'\
+\x08\xc7\xa2\xcf\x91\xad\xb9a^\x98\x1cF\x10:o\x13\
+7\xd8s3\xb7k\xf7x\x1b3\xb6\x9b\x94\xf1\x84o\
+Z\xf6F\xcb\xbc4\xcd\x8a\xccO\xe5+\xc7\x9cR\xe6\
+\x96\xfd\xff\xa9\xbfi\xd4\xa2\xa4\xde\x01\xea8\xcfd\x11\
+>\x80\xba\x1dE,\xa2\xdb\x95\x5c\x85\xff\x95\x08\xec\xf2\
+V\xa9\xa1\xf6#\xcd\xdcLx\xaa!\x13\xdc\xfa\x81\xae\
+ \xcd\x92\xdc\xcb\xf8\xc9\xd1\xfe\xf1\x99\xd3I\xe24u\
+\xf6\xa3Q\x9e\x15r&\xe2\xf9K~\xfa\xe6C\xe7\xf0\
+\xf0x\xcf\x06)\xd3\xd3\x0f\xf3\xac\x92\xaf\x09\x81\x0a'\
+g\xce\xa9\x9b\x04~F%\xa4\x07\x18\xe0\xdch\x84\xaa\
+2a\xc5@yq\x9dX\xd9y\xed>\x1c\x0c\x08|\
+G\xe0\xba\xa0(n\xd5\xd6\x0f\xad+o\x0a\x15\xa4K\
+\x01S\x08Ur,7*HG\xac\x89\x8b\x94\x0d\xc1\
+\xb8\xc4\xcf\xf2$\xaa\x14\xb8\xd4\x1bl\xd0\xdf@\xd1\xe0\
+\xfdu\x11ya\xde\xf7\xf9\xab\xa1\x9f\xb9\xa1\x03\x7f\x9d\
+\xa1\xf8\xb8k\x96x*\x86\xfd\xa7\xf8c\x9d\xef\x9af\
+\x9e\xe2\x07\x10\xb9C?\x1d\xb9\x9e\xcfeV\xd98\xa4\
+\xb1\x91\xfa\xa6~u\xbb\xd2\x8d\xa6\xbd\xd1\xebM\xb4\x5c\
+e\x8ah\xfa\x8b\xd2\xed\xe6\xa9\x9f4\xc3\xd8\x8b\xcaL\
+\xac:\xf4#\x8dU\xad\x9aE-\xf8\xc7\x80\xcc\xa2\x19\
+\xbd^\xd1\xa82\x1eg\x9b_\x5c*\xff\xe2\xaa\xbd\xea\
+=\x11\x91U\xf9j4\xb3c\xe51\x9a<+\xeb\xd2\
+gT\xf9\x94\xe4\xa8\xb8_\xb6\xe1\xa6\xb3?Y\xbd\xa1\
+\xc8\
+\x00\x00\x04C\
+\x00\
+\x00\x0c\xf4x\x9c\xddW[o\x1bE\x14\x1e_\x92\x92\
+-\xb9\xb4i\x93\x16\xda2\xa9%dCe\x9c4A\
+\xa8&\x11\xa8 Z\xa9R\xaa\x06UHV\xb4Z\xaf\
+\xd7\xe9\xc2^\xac\xddY7\xa8\xf2\x8f\xe0\x85\xbf\xc3o\
+\xe0o\xf0\xc8\x13/U9g\xe6\xcc\xee\xec\xda\xa1*\
+\x0f<0\xd2d\xe7\x5c\xe6|\xe7|sf\x920\xc6\
+V\x98\x1au\x98\x16sY\xcc\x02\x98\x09H\x0d\x98\xb5\
+74\xd8\x82\xb1\xc1&\xe0\x9a2\x9f\x09\x981\x8b@\
+\xd7D\xc3?m\xaa\xc1\x5ccSf\xcfa\xbdu\xdb\
+2\x1b\xb2\x8c\x8d\xe5\xcaf{\xec\x00V_\xcd\xf9\x84\
+\x10|\x02\xab\xcb\xa45=6\x16\x85~\x97Q\xa3o\
+\x93\xbe\xcb\xf4\x1d\x15.\x8d\x17\x8dz\xeb\x12\xbaZ\xec\
+=\xd6\x22\xed\x15 \xb8&\xb3Z\x96\xdf\xef\x9e\x9c<\
+\xe9\xa6b\xd4\xdd?\xe8\xa1}MQ m\xebt(\
+\x08\x12:>\xd2*5X\xd1&\xcc;\xb8\x1f\xac+\
+\xb4f$_&\x19c<bK\x80\xa9\x86fB\xeb\
+j\xa43\xfd\xea\xa4k\xc8X\x8d\x5c\xf7\x08\xe2n\xd3\
+\xfe%\xf2\xd7r\xcb\x88\xabuP\xb8d\x19clS\
+\x0c\xcc\xed&|\xef\x1a\xb9\xa2\xbcc\xc8w\x8cZ6\
+aW]\xda\x1b2\x1f\x5co\xc1\x0a\xc9\xe60\xb7\xc1\
+\xff\x12\x91\xdf\x90\xba&0\xad\xd6\xa8\xef\x93\xbcb\xd8\
+-\xaaW\xdb-\x83\x03\x8c\xb7J\xf1\x90\xf3\xeb\xf0s\
+\x8d\xb0p|J\xf2:\xf9\xdf\x02y\x83\xfc\xd7e\xde\
+\x8aC\x1dc\x830\xaf\x12\xfe\x15\xc2\xbcJ\xe7\xd7 \
+\x8ck\x84Q#\x8ckR\xaf\xc6\x0d\x90\xb7(fS\
+b(>\xb7(\xf6\x0d\xe2e\x9bb\xa3|\x93th\
+\xff \xe7M\xc9\xb7\x09g\x95\xfco\xb3\xa2W\xd0\xbe\
+Cy\xa1\xfds\xa8\xa7\xce\x8a&G\xfd_\xa0\xc1\xf3\
+?$\xee\xdf'\xfe\x8e\xc0\xbaB\xf2\xd7\xe0\x81\xb8\x1f\
+R.\xd7\xc9\x7fKr\xa6\xf4\x87\xc4\xf5G\x84\xff\x0b\
+\xecY%\x1en\x91\x1e\xe3\xecP\xbflR\x1c\xc4\xb9\
+K~\xaf!\xeb/\xd4Ul\xd2\xfd@a\xc4\x8a\xfb\
+\xf9{k\xea%\xa9\x1fG|\xb7\xd7\xb3\xacT$\x99\
++\xf80\x1b[\xaf,\x0e#t\xc4>\x0f\xa7\x93\xbe\
+5\xeb[V\x16\xf9\xe38\x09\xd1\xce\xed\xbd\x03\xd0L\
+\x9d\xe4g?:\xe3S\xcf\xbd\xcf\xa7\xb6\x1b\x07q\xd2\
+\xb7\x1c!\x12\x7f\x98\x09O\xe9\x17i\xf7\xf9$N}\
+\x01\xc8\x18%\xf6G\x1c3lw\x08\x97B\xf1C\xbd\
+\x19\x95g\x81\xfd\x946\x81\x01\x12\xe8Bf\xfc\x13#\
+\xd2\xcc\xb2*\xc5\x9e\xb3b\x18\xc5\xee\xfd/\x8b\xfd\xd5\
+(\xf6\xb7\xa2\xd8\x83\x7fSl\x9c\x89J\xa1~T\xaa\
+P\x89\xffEix\xc7\xf6\x8a\xca\xea\x7f\xb8\x90\xe6\xd8\
+Kd\xb6\x0fx\xe2\x9d\xf9\xa9\xf0\x92\xf6\xb0\xa7a\x93\
+\xf8\xa5\x1d:?\x02\xf08\x88\xa1\xd0\xf3}\x84\xb1\x11\
+\xe6\x01\x9f8\xeeO\xf1x\x9cz\xa2\xed\xf6:\xaa~\
+\xe0\xc7\x11\xbeK\xeef\x86\xfd\x92\xc9\xa0\xa3\xac^\xa0\
+,QC\xfc\x9f<}\xfc\xec\xb9\xfd0\x89\xd3\xd4~\
+\x1cM2A\x09W6@\x96\xdf\x7f\xfb\xc3\xc3\xe3\xe3\
+g\xdf\xf4\xfa\x85\x03\xc1\x18\xd6]\x95\xfe\x82\xe8\xc7\x99\
+\xa8\x84\xcfs\xbf z\xa9l\xf09yn\x900\xd3\
+\xc7\x0b]%\xecw=\xe30\x0b\xda\xba\xb6{\xfa(\
+:\xf2\x9c\xe7sV\x1d4\xc7\x14\x07n\xcf<\xdb\xc7\
+\xb5\x86\xd6\xc0\x86\xa9k$1)20=\x8ac\x91\
+\xe9\x17\x05)\xc5\x82\x8c\xd4\xeeX\x0a\xca\xc9\xd4t\xcb\
+\xc5\x96\x9ag\xce\xb7`+\xef$\xd9\xb1\x9e\xc8\x92\xa8\
+\x0243oA\x93~{\xd0\xa8\xfd\xd9\xf2#7\xc8\
+F\x1e\xff2\xf4\x84\x13\xd8\xf0WR\xe0\x0f\x8f\xacB\
+\x9f\xfa\xe1\xe83\xfc\xd1}q\x04w<\xc5\xc7+r\
+B/\x85+\xe0q\xb9\xab\xbf\xe0i\xc8\xefL\xfe<\
+\x90\x0bf\xd2\xc3\xec\x16\xb7\xd5`\x90\xa5p\x0d\x83\xd8\
+\x8dz\x9d\xd3\xd3\x0b[k0\xd0'\x80Ns\xf1\xfd\
+\xe8\x82K1\x18\xe4\xafj\xbb\x02\xa0o\x86\xe9\xb2\xdb\
+\xd1\xe1\xf1\x88\xbd\xf3\x22}\xb5jk8\xeecl\xdd\
+!\xa7\xa7\xf7 X\x04b$I\xf9\x18\xfb\x15\xec\xea\
+\xcd\x91\xc0\x9d\xfc\x0d\xd5\x01q\x1e\xf2W3\x95R\x5c\
+:g?2{2\x9e\xeb\x97\xe2\x01\x04\xcfroR\
+W\xc4\xaa\x19\xb0\x1b\x96$&=\x8a\x95\x871\xff\xad\
+\xce\xe8\xbf\x83J\xcb\xcc\xd9\xb5\xae\xea'\xc7\xdf%\xe1\
+\xb4\xa2\
+"
+
+qt_resource_name = b"\
+\x00\x0d\
+\x06E\xc5\xd3\
+\x00s\
+\x00h\x00a\x00d\x00e\x00r\x00_\x00a\x00s\x00s\x00e\x00t\x00s\
+\x00\x0e\
+\x04\x16\xeb\xb2\
+\x00c\
+\x00o\x00l\x00o\x00r\x00.\x00f\x00r\x00a\x00g\x00.\x00q\x00s\x00b\
+\x00\x0e\
+\x00\xfb\xe9\x92\
+\x00c\
+\x00o\x00l\x00o\x00r\x00.\x00v\x00e\x00r\x00t\x00.\x00q\x00s\x00b\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00B\x00\x00\x00\x00\x00\x01\x00\x00\x02\xe6\
+\x00\x00\x01\x8a!\x0c\xa5\xeb\
+\x00\x00\x00 \x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x8a!\x0c\xa5\xeb\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/examples/widgets/rhi/simplerhiwidget/shader_assets/color.frag.qsb b/examples/widgets/rhi/simplerhiwidget/shader_assets/color.frag.qsb
new file mode 100644
index 000000000..32bd2d595
--- /dev/null
+++ b/examples/widgets/rhi/simplerhiwidget/shader_assets/color.frag.qsb
Binary files differ
diff --git a/examples/widgets/rhi/simplerhiwidget/shader_assets/color.vert.qsb b/examples/widgets/rhi/simplerhiwidget/shader_assets/color.vert.qsb
new file mode 100644
index 000000000..bf97035d7
--- /dev/null
+++ b/examples/widgets/rhi/simplerhiwidget/shader_assets/color.vert.qsb
Binary files differ
diff --git a/examples/widgets/rhi/simplerhiwidget/shaders/color.frag b/examples/widgets/rhi/simplerhiwidget/shaders/color.frag
new file mode 100644
index 000000000..375587662
--- /dev/null
+++ b/examples/widgets/rhi/simplerhiwidget/shaders/color.frag
@@ -0,0 +1,10 @@
+#version 440
+
+layout(location = 0) in vec3 v_color;
+
+layout(location = 0) out vec4 fragColor;
+
+void main()
+{
+ fragColor = vec4(v_color, 1.0);
+}
diff --git a/examples/widgets/rhi/simplerhiwidget/shaders/color.vert b/examples/widgets/rhi/simplerhiwidget/shaders/color.vert
new file mode 100644
index 000000000..e876f290e
--- /dev/null
+++ b/examples/widgets/rhi/simplerhiwidget/shaders/color.vert
@@ -0,0 +1,16 @@
+#version 440
+
+layout(location = 0) in vec4 position;
+layout(location = 1) in vec3 color;
+
+layout(location = 0) out vec3 v_color;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 mvp;
+};
+
+void main()
+{
+ v_color = color;
+ gl_Position = mvp * position;
+}
diff --git a/examples/widgets/rhi/simplerhiwidget/simplerhiwidget.pyproject b/examples/widgets/rhi/simplerhiwidget/simplerhiwidget.pyproject
new file mode 100644
index 000000000..ff0d62755
--- /dev/null
+++ b/examples/widgets/rhi/simplerhiwidget/simplerhiwidget.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py","examplewidget.py", "simplerhiwidget.qrc",
+ "shaders/color.frag", "shaders/color.vert"]
+}
diff --git a/examples/widgets/rhi/simplerhiwidget/simplerhiwidget.qrc b/examples/widgets/rhi/simplerhiwidget/simplerhiwidget.qrc
new file mode 100644
index 000000000..ddc6dfbe5
--- /dev/null
+++ b/examples/widgets/rhi/simplerhiwidget/simplerhiwidget.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/">
+ <file>shader_assets/color.vert.qsb</file>
+ <file>shader_assets/color.frag.qsb</file>
+</qresource>
+</RCC>
diff --git a/examples/widgets/richtext/orderform/orderform.py b/examples/widgets/richtext/orderform/orderform.py
index ce0569c47..9725624c3 100644
--- a/examples/widgets/richtext/orderform/orderform.py
+++ b/examples/widgets/richtext/orderform/orderform.py
@@ -1,57 +1,19 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/richtext/orderform example from Qt v5.x"""
import sys
-from PySide6.QtCore import QDate, Qt, Signal, Slot
+from PySide6.QtCore import QDate, Qt, Slot
from PySide6.QtGui import (QFont, QTextCharFormat, QTextCursor,
QTextFrameFormat, QTextLength, QTextTableFormat)
from PySide6.QtWidgets import (QApplication, QCheckBox, QDialog,
QDialogButtonBox, QGridLayout, QLabel,
QLineEdit, QMainWindow, QMenu, QMessageBox,
QTableWidget, QTableWidgetItem, QTabWidget,
- QTextEdit, QWidget)
+ QTextEdit)
from PySide6.QtPrintSupport import QAbstractPrintDialog, QPrintDialog, QPrinter
@@ -127,8 +89,7 @@ class MainWindow(QMainWindow):
body_frame_format.setWidth(QTextLength(QTextLength.PercentageLength, 100))
cursor.insertFrame(body_frame_format)
- cursor.insertText("I would like to place an order for the following "
- "items:", text_format)
+ cursor.insertText("I would like to place an order for the following items:", text_format)
cursor.insertBlock()
cursor.insertBlock()
@@ -159,17 +120,17 @@ class MainWindow(QMainWindow):
cursor.insertBlock()
cursor.insertText("Please update my records to take account of the "
- "following privacy information:")
+ "following privacy information:")
cursor.insertBlock()
offers_table = cursor.insertTable(2, 2)
cursor = offers_table.cellAt(0, 1).firstCursorPosition()
cursor.insertText("I want to receive more information about your "
- "company's products and special offers.", text_format)
+ "company's products and special offers.", text_format)
cursor = offers_table.cellAt(1, 1).firstCursorPosition()
cursor.insertText("I do not want to receive any promotional "
- "information from your company.", text_format)
+ "information from your company.", text_format)
if sendOffers:
cursor = offers_table.cellAt(0, 0).firstCursorPosition()
@@ -191,16 +152,18 @@ class MainWindow(QMainWindow):
def create_sample(self):
dialog = DetailsDialog('Dialog with default values', self)
self.create_letter('Mr Smith',
- '12 High Street\nSmall Town\nThis country',
- dialog.order_items(), True)
+ '12 High Street\nSmall Town\nThis country',
+ dialog.order_items(), True)
+ @Slot()
def open_dialog(self):
dialog = DetailsDialog("Enter Customer Details", self)
if dialog.exec() == QDialog.Accepted:
self.create_letter(dialog.sender_name(), dialog.sender_address(),
- dialog.order_items(), dialog.send_offers())
+ dialog.order_items(), dialog.send_offers())
+ @Slot()
def print_file(self):
editor = self.letters.currentWidget()
printer = QPrinter()
@@ -229,8 +192,7 @@ class DetailsDialog(QDialog):
self._name_edit = QLineEdit()
self._address_edit = QTextEdit()
- self._offers_check_box = QCheckBox("Send information about "
- "products and special offers:")
+ self._offers_check_box = QCheckBox("Send information about products and special offers:")
self.setup_items_table()
@@ -279,15 +241,16 @@ class DetailsDialog(QDialog):
def send_offers(self):
return self._offers_check_box.isChecked()
+ @Slot()
def verify(self):
if self._name_edit.text() and self._address_edit.toPlainText():
self.accept()
return
answer = QMessageBox.warning(self, "Incomplete Form",
- "The form does not contain all the necessary information.\n"
- "Do you want to discard it?",
- QMessageBox.Yes, QMessageBox.No)
+ "The form does not contain all the necessary information.\n"
+ "Do you want to discard it?",
+ QMessageBox.Yes, QMessageBox.No)
if answer == QMessageBox.Yes:
self.reject()
diff --git a/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py b/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py
index de86e02f8..021328977 100644
--- a/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py
+++ b/examples/widgets/richtext/syntaxhighlighter/syntaxhighlighter.py
@@ -1,44 +1,6 @@
-
-############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/richtext/syntaxhighlighter example from Qt v5.x"""
@@ -50,7 +12,7 @@ from PySide6.QtCore import (QFile, Qt, QTextStream)
from PySide6.QtGui import (QColor, QFont, QFontDatabase, QKeySequence,
QSyntaxHighlighter, QTextCharFormat)
from PySide6.QtWidgets import (QApplication, QFileDialog, QMainWindow,
- QPlainTextEdit)
+ QPlainTextEdit)
class MainWindow(QMainWindow):
@@ -119,7 +81,7 @@ class MainWindow(QMainWindow):
quit_act.triggered.connect(self.close)
help_menu = self.menuBar().addMenu("&Help")
- help_menu.addAction("About &Qt", qApp.aboutQt)
+ help_menu.addAction("About &Qt", qApp.aboutQt) # noqa: F821
class Highlighter(QSyntaxHighlighter):
diff --git a/examples/widgets/richtext/textedit/main.py b/examples/widgets/richtext/textedit/main.py
index b8d582bb0..330ea5fc5 100644
--- a/examples/widgets/richtext/textedit/main.py
+++ b/examples/widgets/richtext/textedit/main.py
@@ -1,42 +1,5 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/richtext/textedit example from Qt v6.x"""
@@ -44,12 +7,11 @@ import sys
from argparse import ArgumentParser, RawTextHelpFormatter
from PySide6.QtCore import QCoreApplication, qVersion
-from PySide6.QtGui import QScreen
from PySide6.QtWidgets import QApplication
from textedit import TextEdit
-import textedit_rc
+import textedit_rc # noqa: F401
if __name__ == '__main__':
diff --git a/examples/widgets/richtext/textedit/textedit.py b/examples/widgets/richtext/textedit/textedit.py
index 1bcec7ed4..8019446f0 100644
--- a/examples/widgets/richtext/textedit/textedit.py
+++ b/examples/widgets/richtext/textedit/textedit.py
@@ -1,54 +1,17 @@
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
-from PySide6.QtCore import (QCoreApplication, QDir, QFile, QFileInfo, QMimeData,
+from PySide6.QtCore import (QCoreApplication, QDir, QFile, QFileInfo,
QMimeDatabase, QUrl, Qt, Slot)
-from PySide6.QtGui import (QAction, QActionGroup, QGuiApplication, QClipboard,
- QCloseEvent, QFont, QFontDatabase, QFontInfo, QIcon,
- QKeySequence, QPixmap, QTextBlockFormat,
+from PySide6.QtGui import (QAction, QActionGroup, QColor, QGuiApplication,
+ QFont, QFontDatabase, QFontInfo, QIcon,
+ QKeySequence, QPalette, QPixmap, QTextBlockFormat,
QTextCharFormat, QTextCursor, QTextDocumentWriter,
- QTextList, QTextListFormat)
+ QTextFormat, QTextListFormat)
from PySide6.QtWidgets import (QApplication, QMainWindow, QColorDialog, QComboBox,
- QDialog, QFileDialog, QFontComboBox, QStatusBar,
- QTextEdit, QToolBar, QMenu, QMenuBar, QMessageBox)
+ QDialog, QFileDialog, QFontComboBox,
+ QTextEdit, QMessageBox)
from PySide6.QtPrintSupport import (QAbstractPrintDialog, QPrinter,
QPrintDialog, QPrintPreviewDialog)
@@ -77,7 +40,7 @@ class TextEdit(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
if sys.platform == 'darwin':
- setUnifiedTitleAndToolBarOnMac(True)
+ self.setUnifiedTitleAndToolBarOnMac(True)
self.setWindowTitle(QCoreApplication.applicationName())
self._text_edit = QTextEdit(self)
@@ -92,7 +55,7 @@ class TextEdit(QMainWindow):
help_menu = self.menuBar().addMenu("Help")
help_menu.addAction("About", self.about)
- help_menu.addAction("About &Qt", qApp.aboutQt)
+ help_menu.addAction("About &Qt", qApp.aboutQt) # noqa: F821
text_font = QFont("Helvetica")
text_font.setStyleHint(QFont.SansSerif)
@@ -138,13 +101,14 @@ class TextEdit(QMainWindow):
tb = self.addToolBar("File self.actions")
menu = self.menuBar().addMenu("&File")
- icon = QIcon.fromTheme("document-new", QIcon(RSRC_PATH + "/filenew.png"))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.DocumentNew,
+ QIcon(RSRC_PATH + "/filenew.png"))
a = menu.addAction(icon, "&New", self.file_new)
tb.addAction(a)
a.setPriority(QAction.LowPriority)
a.setShortcut(QKeySequence.New)
- icon = QIcon.fromTheme("document-open",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.DocumentOpen,
QIcon(RSRC_PATH + "/fileopen.png"))
a = menu.addAction(icon, "&Open...", self.file_open)
a.setShortcut(QKeySequence.Open)
@@ -152,7 +116,7 @@ class TextEdit(QMainWindow):
menu.addSeparator()
- icon = QIcon.fromTheme("document-save",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.DocumentSave,
QIcon(RSRC_PATH + "/filesave.png"))
self._action_save = menu.addAction(icon, "&Save", self.file_save)
self._action_save.setShortcut(QKeySequence.Save)
@@ -163,7 +127,7 @@ class TextEdit(QMainWindow):
a.setPriority(QAction.LowPriority)
menu.addSeparator()
- icon = QIcon.fromTheme("document-print",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.DocumentPrint,
QIcon(RSRC_PATH + "/fileprint.png"))
a = menu.addAction(icon, "&Print...", self.file_print)
a.setPriority(QAction.LowPriority)
@@ -188,32 +152,36 @@ class TextEdit(QMainWindow):
tb = self.addToolBar("Edit self.actions")
menu = self.menuBar().addMenu("&Edit")
- icon = QIcon.fromTheme("edit-undo",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.EditUndo,
QIcon(RSRC_PATH + "/editundo.png"))
self._action_undo = menu.addAction(icon, "&Undo", self._text_edit.undo)
self._action_undo.setShortcut(QKeySequence.Undo)
tb.addAction(self._action_undo)
- icon = QIcon.fromTheme("edit-redo", QIcon(RSRC_PATH + "/editredo.png"))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.EditRedo,
+ QIcon(RSRC_PATH + "/editredo.png"))
self._action_redo = menu.addAction(icon, "&Redo", self._text_edit.redo)
self._action_redo.setPriority(QAction.LowPriority)
self._action_redo.setShortcut(QKeySequence.Redo)
tb.addAction(self._action_redo)
menu.addSeparator()
- icon = QIcon.fromTheme("edit-cut", QIcon(RSRC_PATH + "/editcut.png"))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.EditCut,
+ QIcon(RSRC_PATH + "/editcut.png"))
self._action_cut = menu.addAction(icon, "Cu&t", self._text_edit.cut)
self._action_cut.setPriority(QAction.LowPriority)
self._action_cut.setShortcut(QKeySequence.Cut)
tb.addAction(self._action_cut)
- icon = QIcon.fromTheme("edit-copy", QIcon(RSRC_PATH + "/editcopy.png"))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.EditCopy,
+ QIcon(RSRC_PATH + "/editcopy.png"))
self._action_copy = menu.addAction(icon, "&Copy", self._text_edit.copy)
self._action_copy.setPriority(QAction.LowPriority)
self._action_copy.setShortcut(QKeySequence.Copy)
tb.addAction(self._action_copy)
- icon = QIcon.fromTheme("edit-paste", QIcon(RSRC_PATH + "/editpaste.png"))
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.EditPaste,
+ QIcon(RSRC_PATH + "/editpaste.png"))
self._action_paste = menu.addAction(icon, "&Paste", self._text_edit.paste)
self._action_paste.setPriority(QAction.LowPriority)
self._action_paste.setShortcut(QKeySequence.Paste)
@@ -227,7 +195,7 @@ class TextEdit(QMainWindow):
tb = self.addToolBar("Format self.actions")
menu = self.menuBar().addMenu("F&ormat")
- icon = QIcon.fromTheme("format-text-bold",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.FormatTextBold,
QIcon(RSRC_PATH + "/textbold.png"))
self._action_text_bold = menu.addAction(icon, "&Bold", self.text_bold)
self._action_text_bold.setShortcut(Qt.CTRL | Qt.Key_B)
@@ -238,7 +206,7 @@ class TextEdit(QMainWindow):
tb.addAction(self._action_text_bold)
self._action_text_bold.setCheckable(True)
- icon = QIcon.fromTheme("format-text-italic",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.FormatTextItalic,
QIcon(RSRC_PATH + "/textitalic.png"))
self._action_text_italic = menu.addAction(icon, "&Italic", self.text_italic)
self._action_text_italic.setPriority(QAction.LowPriority)
@@ -249,7 +217,7 @@ class TextEdit(QMainWindow):
tb.addAction(self._action_text_italic)
self._action_text_italic.setCheckable(True)
- icon = QIcon.fromTheme("format-text-underline",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.FormatTextUnderline,
QIcon(RSRC_PATH + "/textunder.png"))
self._action_text_underline = menu.addAction(icon, "&Underline",
self.text_underline)
@@ -263,36 +231,36 @@ class TextEdit(QMainWindow):
menu.addSeparator()
- icon = QIcon.fromTheme("format-justify-left",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.FormatJustifyLeft,
QIcon(RSRC_PATH + "/textleft.png"))
self._action_align_left = QAction(icon, "&Left", self)
self._action_align_left.setShortcut(Qt.CTRL | Qt.Key_L)
self._action_align_left.setCheckable(True)
self._action_align_left.setPriority(QAction.LowPriority)
- icon = QIcon.fromTheme("format-justify-center",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.FormatJustifyCenter,
QIcon(RSRC_PATH + "/textcenter.png"))
self._action_align_center = QAction(icon, "C&enter", self)
self._action_align_center.setShortcut(Qt.CTRL | Qt.Key_E)
self._action_align_center.setCheckable(True)
self._action_align_center.setPriority(QAction.LowPriority)
- icon = QIcon.fromTheme("format-justify-right",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.FormatJustifyRight,
QIcon(RSRC_PATH + "/textright.png"))
self._action_align_right = QAction(icon, "&Right", self)
self._action_align_right.setShortcut(Qt.CTRL | Qt.Key_R)
self._action_align_right.setCheckable(True)
self._action_align_right.setPriority(QAction.LowPriority)
- icon = QIcon.fromTheme("format-justify-fill",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.FormatJustifyFill,
QIcon(RSRC_PATH + "/textjustify.png"))
self._action_align_justify = QAction(icon, "&Justify", self)
self._action_align_justify.setShortcut(Qt.CTRL | Qt.Key_J)
self._action_align_justify.setCheckable(True)
self._action_align_justify.setPriority(QAction.LowPriority)
- icon = QIcon.fromTheme("format-indent-more",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.FormatIndentMore,
QIcon(RSRC_PATH + "/format-indent-more.png"))
self._action_indent_more = menu.addAction(icon, "&Indent", self.indent)
self._action_indent_more.setShortcut(Qt.CTRL | Qt.Key_BracketRight)
self._action_indent_more.setPriority(QAction.LowPriority)
- icon = QIcon.fromTheme("format-indent-less",
+ icon = QIcon.fromTheme(QIcon.ThemeIcon.FormatIndentLess,
QIcon(RSRC_PATH + "/format-indent-less.png"))
self._action_indent_less = menu.addAction(icon, "&Unindent",
self.unindent)
@@ -443,7 +411,7 @@ class TextEdit(QMainWindow):
@Slot()
def file_save(self):
if not self._file_name or self._file_name.startswith(":/"):
- return fileSaveAs()
+ return self.file_save_as()
writer = QTextDocumentWriter(self._file_name)
document = self._text_edit.document()
@@ -658,7 +626,7 @@ class TextEdit(QMainWindow):
above = QTextCursor(cursor)
above.movePosition(QTextCursor.Up)
if (above.currentList()
- and list_fmt.indent() + amount == above.currentList().format().indent()):
+ and list_fmt.indent() + amount == above.currentList().format().indent()):
above.currentList().add(cursor.block())
else:
list_fmt.setIndent(list_fmt.indent() + amount)
diff --git a/examples/widgets/richtext/textedit/textedit_rc.py b/examples/widgets/richtext/textedit/textedit_rc.py
index 6d4ab531b..49c024529 100644
--- a/examples/widgets/richtext/textedit/textedit_rc.py
+++ b/examples/widgets/richtext/textedit/textedit_rc.py
@@ -1,6 +1,6 @@
# Resource object code (Python 3)
# Created by: object code
-# Created by: The Resource Compiler for Qt version 6.2.0
+# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!
from PySide6 import QtCore
@@ -5913,7 +5913,7 @@ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x12\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x03\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00V\x00\x02\x00\x00\x00\x18\x00\x00\x00\x1e\
@@ -5921,103 +5921,103 @@ qt_resource_struct = b"\
\x00\x00\x000\x00\x02\x00\x00\x00\x18\x00\x00\x00\x06\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00<\x00\x00\x00\x00\x00\x01\x00\x00\x0a2\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x01*\xfa\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00\xf9\xea\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x01\x00\x00\xe5\xe4\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02z\x00\x00\x00\x00\x00\x01\x00\x01B:\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01\xa0\x00\x00\x00\x00\x00\x01\x00\x01$\x1c\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01v\x00\x00\x00\x00\x00\x01\x00\x01\x09\x14\
-\x00\x00\x01yH\x0a\x8c\xbe\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02 \x00\x00\x00\x00\x00\x01\x00\x0147\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x01\x00\x00\xf0n\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x018\x00\x00\x00\x00\x00\x01\x00\x00\xfca\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01X\x00\x00\x00\x00\x00\x01\x00\x01\x02\x15\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x03\x14\x00\x00\x00\x00\x00\x01\x00\x01R\xe7\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00b\x00\x00\x00\x00\x00\x01\x00\x00\xdem\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00~\x00\x00\x00\x00\x00\x01\x00\x00\xe3;\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02>\x00\x00\x00\x00\x00\x01\x00\x016\xdc\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x03h\x00\x00\x00\x00\x00\x01\x00\x01Z\xdd\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x03F\x00\x00\x00\x00\x00\x01\x00\x01W\x9c\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02\xf6\x00\x00\x00\x00\x00\x01\x00\x01M\xb6\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02\x02\x00\x00\x00\x00\x00\x01\x00\x01-\xb5\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02\xc4\x00\x00\x00\x00\x00\x01\x00\x01I\xd1\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02\x96\x00\x00\x00\x00\x00\x01\x00\x01E>\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02\x5c\x00\x00\x00\x00\x00\x01\x00\x01=\xc8\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x01\x00\x00\xea\xa0\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\xf5'\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01\xbe\x00\x00\x00\x00\x00\x01\x00\x01'+\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x00\x9d\x07\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00e\xc6\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xbc\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02z\x00\x00\x00\x00\x00\x01\x00\x00\xbcl\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x95U\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01v\x00\x00\x00\x00\x00\x01\x00\x00zM\
-\x00\x00\x01yH\x0a\x8c\xbe\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02 \x00\x00\x00\x00\x00\x01\x00\x00\xaap\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x01\x00\x00)\xd6\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x018\x00\x00\x00\x00\x00\x01\x00\x00kF\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01X\x00\x00\x00\x00\x00\x01\x00\x00sq\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x03\x14\x00\x00\x00\x00\x00\x01\x00\x00\xcf<\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00b\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xb8\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00~\x00\x00\x00\x00\x00\x01\x00\x00\x16:\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02>\x00\x00\x00\x00\x00\x01\x00\x00\xafG\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x03h\x00\x00\x00\x00\x00\x01\x00\x00\xd8\x81\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x03F\x00\x00\x00\x00\x00\x01\x00\x00\xd3\xf1\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02\xf6\x00\x00\x00\x00\x00\x01\x00\x00\xc9|\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02\x02\x00\x00\x00\x00\x00\x01\x00\x00\xa1\xf4\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02\xc4\x00\x00\x00\x00\x00\x01\x00\x00\xc5\x97\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02\x96\x00\x00\x00\x00\x00\x01\x00\x00\xc1\x04\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x02\x5c\x00\x00\x00\x00\x00\x01\x00\x00\xb6\x1d\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x22`\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x004e\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
\x00\x00\x01\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x98d\
-\x00\x00\x01u\xf9\xcc\xb0+\
+\x00\x00\x01z\xe7\xee'\x0d\
"
def qInitResources():
diff --git a/examples/widgets/richtext/textobject/textobject.py b/examples/widgets/richtext/textobject/textobject.py
index bb0c0b168..9ab7bf8ae 100644
--- a/examples/widgets/richtext/textobject/textobject.py
+++ b/examples/widgets/richtext/textobject/textobject.py
@@ -1,44 +1,6 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/richtext/textobject example from Qt v5.x"""
@@ -46,9 +8,8 @@ import os
from pathlib import Path
import sys
-from PySide6.QtCore import QFile, QIODevice, QObject, QSizeF, Qt
-from PySide6.QtGui import (QTextCharFormat, QTextFormat, QTextObjectInterface,
- QPyTextObject)
+from PySide6.QtCore import QFile, QIODevice, QSizeF, Slot
+from PySide6.QtGui import (QTextCharFormat, QTextFormat, QPyTextObject)
from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel, QLineEdit,
QMessageBox, QPushButton, QTextEdit,
QVBoxLayout, QWidget)
@@ -89,6 +50,7 @@ class Window(QWidget):
self.setWindowTitle(self.tr("Text Object Example"))
+ @Slot()
def insert_text_object(self):
file_name = self._file_name_line_edit.text()
file = QFile(file_name)
diff --git a/examples/widgets/state-machine/eventtrans/eventtrans.py b/examples/widgets/state-machine/eventtrans/eventtrans.py
deleted file mode 100644
index 44aca37f8..000000000
--- a/examples/widgets/state-machine/eventtrans/eventtrans.py
+++ /dev/null
@@ -1,95 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 velociraptor Genjix <aphidia@hotmail.com>
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6.QtWidgets import *
-from PySide6.QtCore import *
-from PySide6.QtStateMachine import QEventTransition, QState, QStateMachine
-
-
-class MainWindow(QMainWindow):
- def __init__(self):
- super().__init__()
- button = QPushButton(self)
- button.setGeometry(QRect(100, 100, 100, 100))
-
- machine = QStateMachine(self)
- s1 = QState()
- s1.assignProperty(button, 'text', 'Outside')
- s2 = QState()
- s2.assignProperty(button, 'text', 'Inside')
-
- enter_transition = QEventTransition(button, QEvent.Enter)
- enter_transition.setTargetState(s2)
- s1.addTransition(enter_transition)
-
- leave_transition = QEventTransition(button, QEvent.Leave)
- leave_transition.setTargetState(s1)
- s2.addTransition(leave_transition)
-
- s3 = QState()
- s3.assignProperty(button, 'text', 'Pressing...')
-
- press_transition = QEventTransition(button, QEvent.MouseButtonPress)
- press_transition.setTargetState(s3)
- s2.addTransition(press_transition)
-
- release_transition = QEventTransition(button, QEvent.MouseButtonRelease)
- release_transition.setTargetState(s2)
- s3.addTransition(release_transition)
-
- machine.addState(s1)
- machine.addState(s2)
- machine.addState(s3)
-
- machine.setInitialState(s1)
- machine.start()
-
- self.setCentralWidget(button)
- self.show()
-
-
-if __name__ == '__main__':
- import sys
-
- app = QApplication(sys.argv)
- main_win = MainWindow()
- sys.exit(app.exec())
diff --git a/examples/widgets/state-machine/eventtrans/eventtrans.pyproject b/examples/widgets/state-machine/eventtrans/eventtrans.pyproject
deleted file mode 100644
index b2f660a8f..000000000
--- a/examples/widgets/state-machine/eventtrans/eventtrans.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["eventtrans.py"]
-}
diff --git a/examples/widgets/state-machine/factstates/factstates.py b/examples/widgets/state-machine/factstates/factstates.py
deleted file mode 100644
index e8ca0ef43..000000000
--- a/examples/widgets/state-machine/factstates/factstates.py
+++ /dev/null
@@ -1,127 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 velociraptor Genjix <aphidia@hotmail.com>
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6.QtWidgets import *
-from PySide6.QtCore import *
-from PySide6.QtStateMachine import (QFinalState, QSignalTransition, QState,
- QStateMachine)
-
-
-class Factorial(QObject):
- x_changed = Signal(int)
-
- def __init__(self):
- super().__init__()
- self.xval = -1
- self.facval = 1
-
- def get_x(self):
- return self.xval
-
- def set_x(self, x):
- if self.xval == x:
- return
- self.xval = x
- self.x_changed.emit(x)
- x = Property(int, get_x, set_x)
-
- def get_fact(self):
- return self.facval
-
- def set_fact(self, fac):
- self.facval = fac
-
- fac = Property(int, get_fact, set_fact)
-
-
-class FactorialLoopTransition(QSignalTransition):
- def __init__(self, fact):
- super().__init__(fact, SIGNAL('x_changed(int)'))
- self.fact = fact
-
- def eventTest(self, e):
- if not super(FactorialLoopTransition, self).eventTest(e):
- return False
- return e.arguments()[0] > 1
-
- def onTransition(self, e):
- x = e.arguments()[0]
- fac = self.fact.fac
- self.fact.fac = x * fac
- self.fact.x = x - 1
-
-
-class FactorialDoneTransition(QSignalTransition):
- def __init__(self, fact):
- super().__init__(fact, SIGNAL('x_changed(int)'))
- self.fact = fact
-
- def eventTest(self, e):
- if not super(FactorialDoneTransition, self).eventTest(e):
- return False
- return e.arguments()[0] <= 1
-
- def onTransition(self, e):
- print(self.fact.fac)
-
-
-if __name__ == '__main__':
- import sys
- app = QCoreApplication(sys.argv)
- factorial = Factorial()
- machine = QStateMachine()
-
- compute = QState(machine)
- compute.assignProperty(factorial, 'fac', 1)
- compute.assignProperty(factorial, 'x', 6)
- compute.addTransition(FactorialLoopTransition(factorial))
-
- done = QFinalState(machine)
- done_transition = FactorialDoneTransition(factorial)
- done_transition.setTargetState(done)
- compute.addTransition(done_transition)
-
- machine.setInitialState(compute)
- machine.finished.connect(app.quit)
- machine.start()
-
- sys.exit(app.exec())
diff --git a/examples/widgets/state-machine/factstates/factstates.pyproject b/examples/widgets/state-machine/factstates/factstates.pyproject
deleted file mode 100644
index 751a5005b..000000000
--- a/examples/widgets/state-machine/factstates/factstates.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["factstates.py"]
-}
diff --git a/examples/widgets/state-machine/pingpong/pingpong.py b/examples/widgets/state-machine/pingpong/pingpong.py
deleted file mode 100644
index cd047a29d..000000000
--- a/examples/widgets/state-machine/pingpong/pingpong.py
+++ /dev/null
@@ -1,108 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 velociraptor Genjix <aphidia@hotmail.com>
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6.QtWidgets import *
-from PySide6.QtCore import *
-from PySide6.QtStateMachine import QAbstractTransition, QState, QStateMachine
-
-
-class PingEvent(QEvent):
- def __init__(self):
- super().__init__(QEvent.Type(QEvent.User + 2))
-
-
-class PongEvent(QEvent):
- def __init__(self):
- super().__init__(QEvent.Type(QEvent.User + 3))
-
-
-class Pinger(QState):
- def __init__(self, parent):
- super().__init__(parent)
-
- def onEntry(self, e):
- self.p = PingEvent()
- self.machine().postEvent(self.p)
- print('ping?')
-
-
-class PongTransition(QAbstractTransition):
- def eventTest(self, e):
- return e.type() == QEvent.User + 3
-
- def onTransition(self, e):
- self.p = PingEvent()
- machine.postDelayedEvent(self.p, 500)
- print('ping?')
-
-
-class PingTransition(QAbstractTransition):
- def eventTest(self, e):
- return e.type() == QEvent.User + 2
-
- def onTransition(self, e):
- self.p = PongEvent()
- machine.postDelayedEvent(self.p, 500)
- print('pong!')
-
-
-if __name__ == '__main__':
- import sys
- app = QCoreApplication(sys.argv)
-
- machine = QStateMachine()
- group = QState(QState.ParallelStates)
- group.setObjectName('group')
-
- pinger = Pinger(group)
- pinger.setObjectName('pinger')
- pinger.addTransition(PongTransition())
-
- ponger = QState(group)
- ponger.setObjectName('ponger')
- ponger.addTransition(PingTransition())
-
- machine.addState(group)
- machine.setInitialState(group)
- machine.start()
-
- sys.exit(app.exec())
diff --git a/examples/widgets/state-machine/pingpong/pingpong.pyproject b/examples/widgets/state-machine/pingpong/pingpong.pyproject
deleted file mode 100644
index 67b48e5ab..000000000
--- a/examples/widgets/state-machine/pingpong/pingpong.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["pingpong.py"]
-}
diff --git a/examples/widgets/state-machine/rogue/rogue.py b/examples/widgets/state-machine/rogue/rogue.py
deleted file mode 100644
index 1234bea0b..000000000
--- a/examples/widgets/state-machine/rogue/rogue.py
+++ /dev/null
@@ -1,215 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 velociraptor Genjix <aphidia@hotmail.com>
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6.QtWidgets import *
-from PySide6.QtGui import *
-from PySide6.QtCore import *
-from PySide6.QtStateMachine import (QEventTransition, QFinalState,
- QKeyEventTransition, QState, QStateMachine)
-
-
-class MovementTransition(QEventTransition):
- def __init__(self, window):
- super().__init__(window, QEvent.KeyPress)
- self.window = window
-
- def eventTest(self, event):
- if (event.type() == QEvent.StateMachineWrapped and
- event.event().type() == QEvent.KeyPress):
- key = event.event().key()
- return (key == Qt.Key_2 or key == Qt.Key_8 or
- key == Qt.Key_6 or key == Qt.Key_4)
- return False
-
- def onTransition(self, event):
- key = event.event().key()
- if key == Qt.Key_4:
- self.window.move_player(self.window.left)
- if key == Qt.Key_8:
- self.window.move_player(self.window.Up)
- if key == Qt.Key_6:
- self.window.move_player(self.window.right)
- if key == Qt.Key_2:
- self.window.move_player(self.window.down)
-
-
-class Custom(QState):
- def __init__(self, parent, mw):
- super().__init__(parent)
- self.mw = mw
-
- def onEntry(self, e):
- print(self.mw.status)
-
-
-class MainWindow(QMainWindow):
- def __init__(self):
- super().__init__()
- self.pX = 5
- self.pY = 5
- self.width = 35
- self.height = 20
- self._status_str = ''
-
- font = QFont()
- if 'Monospace' in QFontDatabase.families():
- font = QFont('Monospace', 12)
- else:
- for family in QFontDatabase.families():
- if database.isFixedPitch(family):
- font = QFont(family, 12)
- self.setFont(font)
-
- self.setup_map()
- self.build_machine()
- self.show()
-
- def setup_map(self):
- self.map = []
- generator = QRandomGenerator().global_()
- for x in range(self.width):
- column = []
- for y in range(self.height):
- if (x == 0 or x == self.width - 1 or y == 0 or
- y == self.height - 1 or generator.bounded(0, 40) == 0):
- column.append('#')
- else:
- column.append('.')
- self.map.append(column)
-
- def build_machine(self):
- machine = QStateMachine(self)
-
- input_state = Custom(machine, self)
- # this line sets the status
- self.status = 'hello!'
- # however this line does not
- input_state.assignProperty(self, 'status', 'Move the rogue with 2, 4, 6, and 8')
-
- machine.setInitialState(input_state)
- machine.start()
-
- transition = MovementTransition(self)
- input_state.addTransition(transition)
-
- quit_state = QState(machine)
- quit_state.assignProperty(self, 'status', 'Really quit(y/n)?')
-
- yes_transition = QKeyEventTransition(self, QEvent.KeyPress, Qt.Key_Y)
- self._final_state = QFinalState(machine)
- yes_transition.setTargetState(self._final_state)
- quit_state.addTransition(yes_transition)
-
- no_transition = QKeyEventTransition(self, QEvent.KeyPress, Qt.Key_N)
- no_transition.setTargetState(input_state)
- quit_state.addTransition(no_transition)
-
- quit_transition = QKeyEventTransition(self, QEvent.KeyPress, Qt.Key_Q)
- quit_transition.setTargetState(quit_state)
- input_state.addTransition(quit_transition)
-
- machine.setInitialState(input_state)
- machine.finished.connect(qApp.quit)
- machine.start()
-
- def sizeHint(self):
- metrics = QFontMetrics(self.font())
- return QSize(metrics.horizontalAdvance('X') * self.width,
- metrics.height() * (self.height + 1))
-
- def paintEvent(self, event):
- metrics = QFontMetrics(self.font())
- painter = QPainter(self)
- font_height = metrics.height()
- font_width = metrics.horizontalAdvance('X')
-
- painter.fillRect(self.rect(), Qt.black)
- painter.setPen(Qt.white)
-
- y_pos = font_height
- painter.drawText(QPoint(0, y_pos), self.status)
- for y in range(self.height):
- y_pos += font_height
- x_pos = 0
- for x in range(self.width):
- if y == self.pY and x == self.pX:
- x_pos += font_width
- continue
- painter.drawText(QPoint(x_pos, y_pos), self.map[x][y])
- x_pos += font_width
- painter.drawText(QPoint(self.pX * font_width, (self.pY + 2) * font_height), '@')
-
- def move_player(self, direction):
- if direction == self.left:
- if self.map[self.pX - 1][self.pY] != '#':
- self.pX -= 1
- elif direction == self.right:
- if self.map[self.pX + 1][self.pY] != '#':
- self.pX += 1
- elif direction == self.Up:
- if self.map[self.pX][self.pY - 1] != '#':
- self.pY -= 1
- elif direction == self.down:
- if self.map[self.pX][self.pY + 1] != '#':
- self.pY += 1
- self.repaint()
-
- def get_status(self):
- return self._status_str
-
- def set_status(self, status):
- self._status_str = status
- self.repaint()
- status = Property(str, get_status, set_status)
- Up = 0
- down = 1
- left = 2
- right = 3
- width = 35
- height = 20
-
-
-if __name__ == '__main__':
- import sys
- app = QApplication(sys.argv)
- main_win = MainWindow()
- sys.exit(app.exec())
diff --git a/examples/widgets/state-machine/trafficlight/doc/trafficlight.png b/examples/widgets/state-machine/trafficlight/doc/trafficlight.png
deleted file mode 100644
index ec88a8e8b..000000000
--- a/examples/widgets/state-machine/trafficlight/doc/trafficlight.png
+++ /dev/null
Binary files differ
diff --git a/examples/widgets/state-machine/trafficlight/trafficlight.py b/examples/widgets/state-machine/trafficlight/trafficlight.py
deleted file mode 100644
index 4bfced01f..000000000
--- a/examples/widgets/state-machine/trafficlight/trafficlight.py
+++ /dev/null
@@ -1,150 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 velociraptor Genjix <aphidia@hotmail.com>
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6.QtWidgets import *
-from PySide6.QtGui import *
-from PySide6.QtCore import *
-from PySide6.QtStateMachine import QFinalState, QState, QStateMachine
-
-
-class LightWidget(QWidget):
- def __init__(self, color):
- super().__init__()
- self.color = color
- self._on_val = False
-
- def is_on(self):
- return self._on_val
-
- def set_on(self, on):
- if self._on_val == on:
- return
- self._on_val = on
- self.update()
-
- @Slot()
- def turn_off(self):
- self.set_on(False)
-
- @Slot()
- def turn_on(self):
- self.set_on(True)
-
- def paintEvent(self, e):
- if not self._on_val:
- return
- painter = QPainter(self)
- painter.setRenderHint(QPainter.Antialiasing)
- painter.setBrush(self.color)
- painter.drawEllipse(0, 0, self.width(), self.height())
-
- on = Property(bool, is_on, set_on)
-
-
-class TrafficLightWidget(QWidget):
- def __init__(self):
- super().__init__()
- vbox = QVBoxLayout(self)
- self._red_light = LightWidget(Qt.red)
- vbox.addWidget(self._red_light)
- self._yellow_light = LightWidget(Qt.yellow)
- vbox.addWidget(self._yellow_light)
- self._green_light = LightWidget(Qt.green)
- vbox.addWidget(self._green_light)
- pal = QPalette()
- pal.setColor(QPalette.Window, Qt.black)
- self.setPalette(pal)
- self.setAutoFillBackground(True)
-
-
-def create_light_state(light, duration, parent=None):
- light_state = QState(parent)
- timer = QTimer(light_state)
- timer.setInterval(duration)
- timer.setSingleShot(True)
- timing = QState(light_state)
- timing.entered.connect(light.turn_on)
- timing.entered.connect(timer.start)
- timing.exited.connect(light.turn_off)
- done = QFinalState(light_state)
- timing.addTransition(timer, SIGNAL('timeout()'), done)
- light_state.setInitialState(timing)
- return light_state
-
-
-class TrafficLight(QWidget):
- def __init__(self):
- super().__init__()
- vbox = QVBoxLayout(self)
- widget = TrafficLightWidget()
- vbox.addWidget(widget)
- vbox.setContentsMargins(0, 0, 0, 0)
-
- machine = QStateMachine(self)
- red_going_yellow = create_light_state(widget._red_light, 1000)
- red_going_yellow.setObjectName('redGoingYellow')
- yellow_going_green = create_light_state(widget._red_light, 1000)
- yellow_going_green.setObjectName('redGoingYellow')
- red_going_yellow.addTransition(red_going_yellow, SIGNAL('finished()'), yellow_going_green)
- green_going_yellow = create_light_state(widget._yellow_light, 3000)
- green_going_yellow.setObjectName('redGoingYellow')
- yellow_going_green.addTransition(yellow_going_green, SIGNAL('finished()'), green_going_yellow)
- yellow_going_red = create_light_state(widget._green_light, 1000)
- yellow_going_red.setObjectName('redGoingYellow')
- green_going_yellow.addTransition(green_going_yellow, SIGNAL('finished()'), yellow_going_red)
- yellow_going_red.addTransition(yellow_going_red, SIGNAL('finished()'), red_going_yellow)
-
- machine.addState(red_going_yellow)
- machine.addState(yellow_going_green)
- machine.addState(green_going_yellow)
- machine.addState(yellow_going_red)
- machine.setInitialState(red_going_yellow)
- machine.start()
-
-
-if __name__ == '__main__':
- import sys
- app = QApplication(sys.argv)
- widget = TrafficLight()
- widget.resize(110, 300)
- widget.show()
- sys.exit(app.exec())
diff --git a/examples/widgets/state-machine/twowaybutton/twowaybutton.py b/examples/widgets/state-machine/twowaybutton/twowaybutton.py
deleted file mode 100644
index d519c4f2a..000000000
--- a/examples/widgets/state-machine/twowaybutton/twowaybutton.py
+++ /dev/null
@@ -1,72 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2010 velociraptor Genjix <aphidia@hotmail.com>
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6.QtWidgets import *
-from PySide6.QtCore import *
-from PySide6.QtStateMachine import QState, QStateMachine
-
-
-if __name__ == '__main__':
- import sys
- app = QApplication(sys.argv)
- button = QPushButton()
- machine = QStateMachine()
-
- off = QState()
- off.assignProperty(button, 'text', 'Off')
- off.setObjectName('off')
-
- on = QState()
- on.setObjectName('on')
- on.assignProperty(button, 'text', 'On')
-
- off.addTransition(button, SIGNAL('clicked()'), on)
- # Let's use the new style signals just for the kicks.
- on.addTransition(button.clicked, off)
-
- machine.addState(off)
- machine.addState(on)
- machine.setInitialState(off)
- machine.start()
- button.resize(100, 50)
- button.show()
- sys.exit(app.exec())
diff --git a/examples/widgets/state-machine/twowaybutton/twowaybutton.pyproject b/examples/widgets/state-machine/twowaybutton/twowaybutton.pyproject
deleted file mode 100644
index 223a51e32..000000000
--- a/examples/widgets/state-machine/twowaybutton/twowaybutton.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["twowaybutton.py"]
-}
diff --git a/examples/widgets/systray/main.py b/examples/widgets/systray/main.py
deleted file mode 100644
index 7c9b3eee4..000000000
--- a/examples/widgets/systray/main.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import sys
-
-from PySide6.QtWidgets import QApplication, QMessageBox, QSystemTrayIcon
-
-from window import Window
-
-if __name__ == "__main__":
- app = QApplication()
-
- if not QSystemTrayIcon.isSystemTrayAvailable():
- QMessageBox.critical(None, "Systray", "I couldn't detect any system tray on this system.")
- sys.exit(1)
-
- QApplication.setQuitOnLastWindowClosed(False)
-
- window = Window()
- window.show()
- sys.exit(app.exec())
diff --git a/examples/widgets/systray/rc_systray.py b/examples/widgets/systray/rc_systray.py
deleted file mode 100644
index bc4779646..000000000
--- a/examples/widgets/systray/rc_systray.py
+++ /dev/null
@@ -1,2581 +0,0 @@
-# Resource object code (Python 3)
-# Created by: object code
-# Created by: The Resource Compiler for Qt version 5.15.0
-# WARNING! All changes made in this file will be lost!
-
-from PySide6 import QtCore
-
-qt_resource_data = b"\
-\x00\x00d\xb4\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x02\xe8\x00\x00\x02\xe8\x08\x06\x00\x00\x00*Z\x00\x90\
-\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
-\x09pHYs\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01B(\
-\x9bx\x00\x00\x00\x07tIME\x07\xdc\x03\x09\x08\x1e\
-4hf\xd9|\x00\x00\x00\x06bKGD\x00\xff\x00\
-\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00d4IDATx\
-\xda\xec\x9d\x07\xb8U\xc5\xb9\xbf\xf7i\x1c\x0e\xe7\xd0\xcb\
-\x01Tz\x95\xa6 \xbd\x8b\x14E@\x10Q\x14\xa4\x05\
-\x14\x14\x14AAD\xaaT\xe9\xe7h\xd4\xab&\xc6$\
-\xb6\xc4DM\xa2&\x1a{\x895\xb1w\x05\xd9k\xa7\
-\xdc\x14M\x8c\xc66\xf7\x1b\xf6J\x82W\x84\xb5\xf6\xd9\
-k\xd6\xac\xb5\xdf\xf7y\xde\xe7\xb9\xf7\x7f\xff\xf7F\xcf\
-\x9e\xf9\xe6\xb7g\xcf|\x93H\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00@.Q(\xd6um\x22\xb6\x12;\x8a=\xc4\
->\xe2q\xe2(\xf1x\xf7\xbf\xd6\xf6u\xff\xe7\xda\xa3\
-\xdc\xff\x9dz\xee\xff-\x00\x80\xaaRM\xac\xef\xd6\x96\
-\xee\xfb\xd5\x9b~\xfb\xd5\xa1\xd1\xe2\x08\xf7\xbf\xee\xed\xfe\
-\xcf\xdb\xbb\xff;\x8d\xf7\xabk\xf9\xfc9\x01\x00\xc0\x06\
-j\x8a\xdd\xc4\x93\xc4\x05\xe2*\xb1B\xfc\x81x\x8f\xf8\
-\x94\xf8\x8e\xf8\x81\xa8\xb2\xec?\xc5\xdf\x8bo\x8a\x0f\x8a\
-7\x89;\xc5\xe5\xe2,q\x8c\xbb\x90\xd6\xe3c\x02\xc8\
-)\x1a\x89\xbd\xc4\xb1\xe2\x1cq\x85[\x97n\x13\x1f\x16\
-\xdf\x12\xff(~\x1c@]\xfa\x8b[\x93~#\xfeB\
-\xfc\xbe[\x97V\x8a\xe7\xbau\xa9\x93X\x83\x8f\x09\x00\
-\x00\xaaB\xb3Dz\xf7h\xb6\xb8^\xbc\xd9]|\xfe\
-\x14\xc0\xe2\x16\x94\x1f\x8a/\x88w\x8a\xbb\xc4\x0b\xc4\x13\
-\xc4\xe6|\xbc\x00\x91C\xefT\xb7\x16\xc7\x89\x17\x8aW\
-\x88?\x17_\x16?\x8aP]J\x89\x8f\xbb\x1b\x1ak\
-\xc5\x99\xe2\xb1\x89\xf4/\x8c\x00\x00\x00\xfb\xa8\x9eH\xef\
-8\xebEB\xef\xf8<\x90H\xef\x06\xa9\x98\xfb\x81\xbb\
-H^\x93H\xff\x0a\xa0\x7f\xc6\xae\xc3p\x00\xb0\x82\x86\
-\x89\xf4\xd1\xb7E\xe2\xf5\x89\xf4\xafr\xff\xc8\x81\xba\xa4\
-w\xf8\x7f%^.N\x15\xbb\x8aE\x0c\x07\x00\x80x\
-\x93\x97H\xff\xcc\xaaw\xc5\xbf#\xbe$~\x96\x03\x8b\
-\x9eW\xbf\x14_\x17otC\xbb>\x0b_\xca\xb0\x01\
-\x08\x94Z\xe2 q\xb1x\x8b\xf8.\xb5\xe8+\xfeK\
-|\xde\xddL\x98&\xb6e\xc8\x00\x00D\x1b}\x09J\
-\x9f}\xdc(>\x9a#;PA\xf8\xb6x\xb5x\xa6\
-x\x04\xc3\x0a\xa0J\xb4H\xa4\xcf\x88\x7f\xcf\x9d[\xd4\
-\x18\xff\xfe\xdd\xad\xe9\x1b\xdd\x1a\xcf\xaf\x7f\x00\x00\x16\xa3\
-;\x13\xe8\xb3\x8c\x9b\xc5\xa7\x13\xec\x8e\x07\xe1\xe7\xe2\xb3\
-\x89\xf4O\xd0\xfaXLu\x86\x1d\xc0A)sC\xa4\
-\xbe\xb0\xa9\x7f\xb5\xfb\x92:\x92u?\x11\x1fK\xa4\xcf\
-\xb4\xeb_\xfe\x0a\x18v\x00\x00\xe1\xa2\xcf\x8f/I\xa4\
-\xcf-\x06\xd1\x9d\x00\x0f\x1d\xd8\x9fqw\xb2t`\xa7\
-\x15$\xb0Q\x90\x9e\x0b\x1b\xdd\xb9\xf1\x05u\xc2\xb8\x1f\
-\xb9k\xc2y\x09.\xc5\x03\x00\x18A\x9f#\xd7\xad\xc4\
-6\x89/\xb2\x10Y\xe7\x1eq\x878 A\x7fd\xc8\
-\x1d\x0a\xddP~U\x22\xdd\x06\x95Z`\x8f_\xb8_\
-\x94V\x8b]\x18\xaa\x00\x00\xd9\xe5\x98D\xfa\xe8\x0a\x17\
-\xa8\xa2\xa3#V\x8aC\x13\xfc\xe4\x0c\xf1C\xef\x94\xeb\
-\x07\xc6\xae\x15\xff\x97\xf9\x1e\x19_u\xc3z'\x860\
-\x00@f\xe8\x17\xee\xf4\xcf\xc4\x5c\xa4\x8aG\xfb4\x1d\
-\xd6\xf5\xf9\xd0<\x866D\x14\xfd\xab\xd0\xb0D\xba\xf5\
-\xe1\xdf\x98\xd7\x91W\xf7\x90\xd7\x8f)udh\x03\x00\
-\x1c\x9c\x96\x89\xf4E\x9f7Y<b\xab~\xd1pM\
-\x22\xfdl8@\x148J\xdc\x22\xeee\xfe\xc6V}\
-d\xf2\xe2\x04\x0f&\x01\x00\xfc\x07\xfd\x10\xc5\xc9\xe2=\
-\x09.T\xe5\x9a\x0f\x89\x93\xc5b\xa6\x01X\x86~\x03\
-@?`\xf64\xf34\xa7\xd4\xdd\xbfnO\xa4\x8f/\
-q\x8f\x06\x00r\x12\xfdl\xf5\x86D\xfa\xe9g\x16\x86\
-\xdc\xf6O\x89t\xeb\xc6vL\x0b\x08\x99n\xe2\x15\x09\
-\x8e\xb0`\x22\xf1\x9ex\xa9x\x18\xd3\x02\x00\xe2\x8e>\
-\x7f<R\xfce\x82\xddr<\xf0k\xa6\xf7\x8b'\xb2\
-{\x05\x06\xd1]XN\x13\x9fd\x0eb\xe2\xc0\xbb\xea\
-?\x15\x072U\x00 n\xe8\x07m\xbe\x95H?\xd4\
-A\xc1G/\xea{\x08\x0b\xc4\x9aL\x1f\x08\x88\xda\xe2\
-bq7\xf3\x0d=\xaa\x8f<\xe9cyEL\x1f\x00\
-\x882\x8d\xc4U\xe2\x1f(\xec\x98\xa1\x1f$\xd2\xbd\xd5\
-[3\x9d K\xe8\xcb\xe8\xdb\xc5\x0f\x99_\x98\xa1\xfa\
-\xcd\x87\x0b\xc5:L'\x00\x88\x12\xba\xc7\xec\xff$x\
-\xdd\x13\xb3\xfb3\xf3\xf7\x12\x9cS\x87\xcc\xd1\xddX\xf4\
-\x05\xc0/\x99O\x98%\xf5\x97\xbc\x9db+\xa6\x17\x00\
-\xd8\x1e\xccoc\x01\xc4\x00\xfd\x5c\xfc~\x82\xde\xc5\xe0\
-\x9d\x1e\xe2\x1d\xd4%\x0cx\x03A\xf7\xc7o\xc1t\x03\
-\x00\x9bh\xeb\x86&.~\xa2\xc9'\xbco\x22\xa8\xc3\
-A\xe8%\xfe\x8c\xb9\x82\x06\xfd\x97\xf8m\xf1p\xa6\x1f\
-\x00\x84\x89\xde-\xb8\xce\xdd=\xa08cX;\xea\xdf\
-\x11\x9b1\x1d\xc1E\x7fi\xe3(\x0b\x86\xa9>\xde\xa9\
-\xef\xce\x943\x1d\x01\xc0$\xba\xe8\x5c\xe1\xee\x16P\x8c\
-\xd1\x06?I\xa4/\xfe5dz\xe6,\xfaK\xda\xf5\
-\xee\x976\xe6\x04\xda\xe0?\xc4\x8d\x89t\xc7 \x00\x80\
-\xc0\xa8\x96H\xb7%\xe3\x11\x0f\xb4\xf9\xd2\xd6j\xb1\x8c\
-\xe9\x9a3\xd4w\xbf\x9c}\xc2\xf8GK\xfd\xbd8[\
-,`\xba\x02@\xb6\x19\x9fH\xf7\xa6\xa6\xd8b\x14\xdc\
-+NI\xa4\x1f\xc7\x82x\xa2\x1f\x18:G\xfc3\xe3\
-\x1d#\xe2\xef\xc4c\x99\xba\x00\x90\x0dtk\xb2_S\
-X1\xa2>&\x1e\xc34\x8e\x1dC\xc5\x17\x18\xdf\x18\
-Q\xf5\xcb\xa4m\x99\xc6\x00\x90\x09\xfa\x9c\xb9\xeeeN\
-g\x16\x8cC\xc7\x17}\x99\xb91\xd3:\xf2\xe8~\xd3\
-\xb71\xa61\x06\xea;\x5c[\x13<v\x04\x00\x1e\xd1\
-G\x02\xe6\x88\x7f\xa5\x80\x1e\xda\xeab;\xb1\xaf8F\
-\x9c.^ ^&^)\xde*\xde\xe3\xfa+\xf1\x09\
-\xd7\xe7\xc4W\x0f\xe2\xf3\xe2\xc3\xe2\xcf\xc5[\xc4k\xc4\
-m\xe2\x12q\x968\xce\xfd\xcf\xd4\xff\xd9\xf5\xf8\x1c\xbc\
-\xfa\x17qV\x82c/QD\x1fg\xd1/7~\xc4\
-8>\xb82\xb8U\x03\xb1\xbd8@\x9c \xce\x16\x97\
-\x89\xdb\xc5k\xdd\x9ar\xb7\xf8\xa8[k\x0eV\x8b\x9e\
-\xd9\xafn\xdd\xbb_=\xbbI\xbcB\x5c+.\x14\xcf\
-\x14O\x10\xfb\x88\xad\xc5b>\x0b\xaf:\xe2D\xa68\
-\x00\x1c\x0c\xa9\xe9\x89\x87(\x98_\xb5\x898D\x9c!\
-\xaep\xc3\xf2/\xc4\x17D\xc7\x12\xdf\x16\xef\x17\xaf\x17\
-W\xba_\x14\x06\x89\x87\xf1\xf9\x1d\xc8\x07\x12\xfc\xbc\x1c\
-%\xba\x8b\xcf1n\xffk\xbe\xd8L<V\x9c)\xae\
-\x11o\x10\xa5x\xabw-\xaaK:\xfc\xdf%~[\
-\xbcD\x9c&\x0e\x14\x1b\xf2\x19\x1eH\xfd\x98\x16\xfd\xd3\
-\x01\xe0+\x14\x89\xcb\x13\xe9\xde\xad9[ k\x89=\
-\xc5\xa9\xe2z\xf1vw\x07\xc9\x89\xb8o\xb8_(v\
-\x8as\xc5\xfe\xee\xbfk\x8e/\x86z\xac/\x13\x8b\x99\
-\xfe\xd6R*^\x9e\xc8\xf1w\x16\xf4/d\x83\xc5s\
-\xdd_\xe5~\xe9~!\x8fz]z\xd1\xfd\x85Q\x7f\
-\xb98]<Z,\xa5.}\x90H_|\xceg\xfa\
-\x03@\x1f\xf1\xc5\x5c,\x86\xfag\xd8\xc9\xe2\x0e\xf1\xf1\
-\x18,x~L\xba\xff\xceW\x89g\x89\xdd\xc4\x82\xdc\
-\x5c\x10_Np\x89\xd4F$\x93&\xde\xc9\xb5\xf1X\
-\xe4n\x12\xcc\x17\xaf\x13\x9f\xca\xc1\xba\xa4\x7f\x05\x90o\
-ej\xa2xDn_n\xefD\x19\x00\xc8MJ\xc4\
-\x9d\x89\x1c\xb9\x04\xaa\xc3\xe7Q\xeeY\xcck-;\x9e\
-b\x8b\xaf\x8b\xdf\x13\xe7\x89\xdd\xc5\xc2\xdcY\x0c\xf5\x0e\
-\xed*\xf7\x97$\x08\xbf.m\xcb\x95\xbaTM\xec\xed\
-\x9e\xe1\xbe%&;\xe3\xd9\xf6Y\xf7\x97\x83\xe9bG\
-\xf7\x8c}\x8e\xd4\xa5\x7fQ\x97\x00r\x8f\xfe\xe2\xbbq\
-/p\x87\xbb\x17*Y\xf82\xf3\x1d\xf7ow\x8e\xd8\
-57\x16\xc6\x97\xc4\x1e\x94\x87\xd0\x18\x12\xf7\xba\x94\xef\
-\xee\x90_\xe2^\xb4|\x9f:\xe3\xdb7\xdd\xf3\xf6S\
-\xdc\xfbA\x89\xdc\xa8K])\x0f\x00\xf1F\x9fk\xd3\
-/\x81\xc6\xf2\xc5=\xbd\xf8\x1d\xe3v:\xb9\xd7\xfd\xb9\
-\x94\x05-{\xea.\x0e\x17\xbb\xbfD\xc48\xac\xeb\xb3\
-\xe9\x92\x9fx\xf1\xcf \xfao\xbd2\x11\xd3\xb3\xe6\x05\
-ng\x93\x95n\xf7&jI\xf6\xd4_p\xee\x14\xcf\
-\x17\xbb\xc4;\xa4\xff=\x91\xee@\x05\x001\xe40\xf1\
-Wq,^G\xb9\x8b\xdf\xb3,XF\x7fv^\xe7\
-\xb6q\x8b\xe9Q\x98\x07\x13tT0\xc1\x11\xe2\xc3q\
-\x1b?\xfa\xe8\xcapq\xab{\x19\x92\x9aa\xc6\xc7\xdd\
-\x0d\x9a\x0e\xf1\x0d\xea\xfa\x0d\x80z\x94\x0d\x80\xf80A\
-\xfc\xdf8\x15\xaa\x0en!~\x9cE)t\x7f\xe7\xf6\
-B>:~\x8b\xa1\x9e3\xe3(\x1f\x811^\xfcs\
-\x9c~\xc1\xeb\xeb^p|\x95\xba\x10\xba\xbf\x16\xcf\x13\
-[\xc4\xaf.\xbd\x9fH\xbf\xa4\x0b\x00\x11\xa6\x9axe\
-\x5c\x0aSC\xf7<\xf4\x83,>\xd6\xfa\x98\xb8(^\
-gC\xbf\x14+\x13\x5c\xd4\xca&\xa5q\xaaK-\xdd\
-3\xe5O3\xff\xad\xf5\x1e\xb7_|\xedx\xbd\x8e\xbc\
-:A;F\x80H\xa2\x7f\x9e\x7f\x22\x0e\xbbR\x83\xdc\
-\xc7\x81v\xb3\xd0D\xeal\xa8\xbe\xc8u\x5c|\xda7\
-\xea\xc7\x8d\xca)+U\xa6\x83\xf8j\xd4\xc7\x83n\x87\
-8\xd6\xed\xe3\xcd]\x97h]|\xd7\xefA\xf4\x8aO\
-P\xff\x99X\x97\xb2\x02\x10\x1d\x86\x88\x7f\x88r\xe1)\
-w{\x01?\xc1\xa2\x12y\xf5\xce\xe2\x05\xf1\xd8U\xdf\
-+\xf6\xa3\xbcd\x8c>\xd2\xf2a\xd4w\xcb\x97\xd3\xa6\
-5\x16>\xe8\xb6\xdd\xad\x1b\xfd\xba\xf4\x96\xd8\x8d\xf2\x02\
-`7\xfa\xe7\xae\x8d\x89\xf4\xcf\xf2\x91,6\xc7\xb8;\
-\xaf{\xa3\xfc\xd8Fa\xa1J\xd5\xae\xadRM\x9b*\
-\xa7m[\xe5t\xeb\xa6\x92\xfd\xfa)g\xc4\x08\xe5\x8c\
-\x1b\x97v\xd2$\xe5L\x9e\xac\x9c)S\x943k\xd6\
-\xd7L\x9dqF\xfa\x7f\xae=\xe9$\xe5\x8c\x1c\xa9\x9c\
-\xc1\x83\x95\xd3\xab\x97r\xbavM\xff\xdfm\xdcX9\
-\xc5\xc5\x91\xf9\xbb\xecu?\xdb\x81\xd1^\x0c?O\xa4\
-{\x13\xf3\xd3\xb2w\xf4\xf1\xa0\xab\xa3\xfa\x99\xe7\xb9\x17\
->\x7fJ\xa8\x8d\xa5\xbb\xdd]\xf5\x88_,\xd5\x9d\xd9\
-\xce\xa3\xd4\x00\xd8IM\xf1\xd6\xa8\x16\x18}\x8c\xe5\xe6\
-\x08\x05p\xa7\xbc\x5c9G\x1e\xa9\x9cA\x83\x943~\
-\xbcrf\xcfV\xce\xd2\xa5\xca\xd9\xb2E9W\x5ca\
-\xd4\xe4\xd6\xad\xcaY\xbe\x5c9\xf3\xe7+g\xeaT\xe5\
-\x8c\x1a\xa5\x9c\x1e=\x94\xd3\xac\x99rJJ\xac\xfc\x1b\
-\xea\xb0s\xbc{\x84)\xa2c\xf6\x87b\x0d\xca\xce!\
-\xd1\x1d'\xee\x8e\xe2g\xac\x8f\xb1\x9c,\xfe\x92\x10\x9b\
-\x13\xea\x0d\x84\xeb\xdcM\xa2\x08\x07\xf5+\x12\xe9\xbbg\
-\x00`\x09m\xc4W\xa2VLt{>\xfd\x9c\xf3}\
-6\x17\xee:u\x94\xd3\xa9\xd3\xbe\xdd\xef\xd4\xcc\x99\xfb\
-\x82p\xaa\xa2\xc2x\x08\xaf\x92\x1b7*\xe7\xfc\xf3\xd3\
-\xbb\xf6\xfd\xfb+\xa7E\x0b\x95\xaaV\xcd\x8a\xbf\xef\xc3\
-n\x08\x8a\xe89\xf5g\x13\xb4b<\x18\xfa\xbc\xf9\x9b\
-Q\xfb\x5c\xab\xb9\xafVr\xe93w\xd5\xbd\xd5GE\
-\xf7\xbd\x87\xc7\xc5\xc6\x94\x1f\x80\xf0\xd1\xaf\x82\xfe)J\
-\x05D\xef\x9a\x8e\x17\x1f\xb5\xad0\x97\x95)\xa7sg\
-\xe5\x8c\x19\xa3\x9c\x05\x0b\x94\xb3ys\xb4\x82\xb8\x1f+\
-+\x95\xb3b\xc5\xbe\x1d\xf7}\xc7o\xf4q\x99\xbc\xbc\
-P\xbb\xbfL\x8afOu\xf9\xc7O\xf4\xa2\x0c}\x8d\
-\x91\xe2_\xa3\xf4Y\x16\xbb\x9d>xL\x08\xff\xed/\
-\xdd\xe3M\x11\x0c\xe9\xef\x89\x9d)C\x00\xe1qZ\x22\
-\xfd\xf2ad\xcer\x9e\xe0\xf6\xa7\xb5\xa1\xf8\xa6\x9a4\
-Q\xa9\x81\x03URBjj\xe5\xca\xf8\x86q\xaf\xea\
-/$g\x9f\xad\x9ca\xc3\x94s\xc4\x11\xa1\x04v\xdd\
-\xd7\xfe\xa4\xe8\x1d}\xd1s\xf0t\xca\xd1\x7f\xd0ga\
-?\x8f\xd2Q\x96\xa9\xe2\xf3\x04R\xfc\x06\x7f\xe6\x1e\xc3\
-\x8cXH\xff\x9b8\x9cr\x04`\x1e\xfd\x1cyd.\
-\x83\xeav{\xf7\x86]h\xf5\xb1\x8e\xae]UJ_\
-\xbc\x5c\xbb\x96@\xee%\xb0\x7f\xeb[\xca\x91/1N\
-\xc3\x86F?+}\xeciX\xf4\xfa\xa5_\x9a\xe35\
-I_\x9c\xad\x88\xd2\x86\xc18\xf7\xd7\x1bB(z\xf1\
-v\xb1w\xb4\xea\xd2\xa7\xe2l\xe2\x12\x80\x19tG\x84\
-\xeb\xa3R \x8et{\x05\x87VT\x1b4H\xef\x08\
-\xcf\x9f\xafR;w\x12\xba\xab\xa2\xbe\x88:f\x8cJ\
-\xea\xcb\xa7\x86v\xd7\x7f\x12\xbd\x17J\xf5\xa3F\x059\
-X\x97\x8a\xc5\x9b\xa3\xf29\x0d\xe0\xf2'V\xc1\xeb\xa2\
-\xf7B\xa9\xee\xee\x96G|\x02\x08\x8e:\xe2\xfdQ(\
-\x08\xfa\xd5\xcf\xcb\xdd\x07kB\xb9\xd8y\xec\xb1\xca\xb9\
-\xf0BBuP^v\x99rN9E9-[\x06\
-\x1e\xd6\xf5C0\x15\xd1\xea\xa3~\xbbX\x92cu\xe9\
-\x81(|6\xba\x8f\xf9w\x09\x98\x98\xa5\xf6\x8c\x97\x8a\
-\xb5\xa2S\x97n\xcd\xb1\xba\x04`\x8c\xfa\x89t\xd7\x08\
-\xeb; \x9c#\xben\xba\xf5\xa1\xbe\xe0\xa9[\x1e.\
-\x5c\x98\xbe\x00I\x886fj\xf5j\xe5\x8c\x1e\xad\x9c\
-F\x8d\x02\xfd\x8c\xdf\x16\x17\x89%\xd1X\x0c\x1fM\xa4\
-[\x0c\xc6\x1d\xdd\xc5\xe6\x05\xdb?\x0f\x1d\xa2V\xf1\x1a\
-1\x06\xe0\x8b\xe2\x99\xd1\xe9D\xa5\xebRm\xe2\x14@\
-\xf6h\x22\xbeh\xfb\xe4\x1f->i\xb28\xe6\xe7\xa7\
-[ \xce\x99\xa3\x9c]\xbb\x08\xcb6\x84\xf5\x0b/\xdc\
-w\xf16\xc8\xfe\xebOG\xa7\xb3\xc2+\xee\xdc\x8d+\
-\xed\xc5\xf7m\xff\x1c\xc6\xf3\xf2'\x1a\xf0~\xf7\xe8T\
-\x04\xea\xd23b\x03b\x15@\xd5i+\xee\xb6\xfdg\
-\xe3\x1f\x9b\xec\xbe\xa2_\xe8<\xe5\x14\x95\xd2\xfd\xbd\x09\
-\xc5v\xaa\xcf\xfb\xebWQ\xbbtI\x7f\x91\x0a`\x1c\
-\xdc&\xb6\x8aF\xbb\xb3\xd61\xacK=\xc5\xbf\xd8\xfc\
-\xb7o\xcf\xeb\x9f\x18\x82\xfa\xb5\xe4\xc6\xf6\xd7\xa5\xd7\xc4\
-#\x88W\x00U\xdb\xa1\xdac\xeb$\xd7]\x10\xce\x10\
-_3Q\xf8\xf49\xe7\xce\x9dU\xea\x9cs8\xc2\x12\
-\xb5]\xf5K/U\xa9\xc1\x83\xd3]t\xb2<.\xde\
-\x10g\xd9\xdf\x96\xf1\x1d\xb1e\x8c\xea\xd2Q\xe2\x1fm\
-\xfd{\xeb\xb6\x89\xe7\x89\xef\x10\x161$\x7f'\x8e\xb5\
-?\xa4\xbfAH\x07\xc8\x8cn\xe2\x1fl\x9d\xdc-\xdc\
-\x1dL#\xad\x11\x87\x0eU\xce\x9a5\x84\xdd\x88\x9b\xdc\
-\xba5\xfd\xcbG\xbdzY\x1f'\xfa\x17\x9c\xe6v/\
-\x86\xfa\x8bv;v\xce\x83\xef\x1aEw\x16\xb4\xc5\xef\
-\x88\xe5\xfc\xc2\x07\x10+\xfa\xd8\xba\x08\xea\x9d\xca\xb3\xdc\
-\x0b{\x81\x16\xb7\x1a5Tj\xe4H\x95\xda\xb0\x81p\
-\x1b\xb7\x1d\xf5\x9d;U\xea\x8c3T2\xcb\x97J\xdf\
-\x12g\xd8\xfd<\xb7~u4\xca\xaf\xfb\x0d\x10?\xb0\
-u\xd7\xfc\x02.\x81\xa2\x85\xea_\x98O\xb5;\xa4'\
-\xc5\x0e\xc4.\x80C\xd3[\xfc\xd0\xc6\x89\xdc\xd8DO\
-\xf3\x9a5\x953a\x82r\xb6m#\xcc\xc6\xdd\x8a\x0a\
-\x95\x9c>]9M\x9adu\x0c\xfd\xc8\xee\xdd\xf4?\
-\x89]\x22X\x97\x06\x89\x1f\xb1k\x8e\x98\x99\xd7\x88u\
-\xec\xadK\xef\xc7\xec\x18\x1e@ \xc7Z\xac\xdc9\xd7\
-\x1dZ^\x09\xb2\x80\xd5\xae\xad\x1c\xfd\xc2'\x8f\x09\xe5\
-\xa6\xfa!)\xddS=K\xe3\xe9M\xbbw\xad~\x9f\
-H\xdf/a\xd3\xa0\x8aw`\xcef\xd7\x1c#\xe4\xb3\
-b\x7f\xbb\xef\xca\x1cN\x0c\x03\xf8:G\x8b\x7f\xb5m\
-\xd2\xd6\x16\xaf\x0e\xb2h\xe9v|'\x9e\x98>\x9fL\
-P\xcdm++UJw~i\xd80\xabg@\xeb\
-\xda\xb9\x18\xea\xfb%GF\xe4X\xcb?l\xfc5\xef\
-G\x04>\x8c\xa0\xfa\xe1\xb5\xcd\xf6\xbe\xe7\xa0;\xc65\
-'\x8e\x01\xfc\x97\x16\x09\x0b\xfb\x09\xeb'\xd6\x1f\x0b\xaa\
-P\x15\x15)g\xe4H\xe5l\xd9B0\xc5\xaf\xaa{\
-\xdaO\x9a\x94>\xee\x94\x85\xb1\xa6{\xf3w\xb7\xf7\x82\
-V3\x8b\xebRg\xf7H\x8eU\x7f\xb7\xc1\xe2o\x09\
-z\x18q\xef\x16[\xdbY\x97\xf4\xc3c\xf5\x89e\x00\
-\x89DS\xf1-\xdb&\xe9\xb7\x82\xfa\xe9X\xb7K\xec\
-\xd1C9k\xd7\x12D\xf1\xd0]_\x8e?>\xfde\
-.\x0b\xcfr\xcf\xb0\xb7\x1f\xb1\x8d\x8f\x86\xb4J\xa4/\
-\xb5ZuA}\xb1\xbb\x03I\xc0\xc38\xa8\x9b-L\
-\xb0\xb3.=\x9d\xe0\xc5Q\xc8q\xf4\xc2\xfc\xb2M\x13\
-\xb3\x86xeP\x05\xa9M\x1b\xe5,]J\xf8D\x7f\
-]_\xd6\xafWN\xef\xde\xe9/wU\x1c\x83;\xc5\
-b\xfb\x16\xc3\xdf\x88\xa5\x16\xd5\xa5\x86\x89t\x8fdk\
-\xfeF\xb5\xc4\xef\x11\xe80\xa6^\xe6v\x22\xb2\xac.\
-=jY]\x020F\x89\xf8\x84M\x13\xb2\xa5\xfb\x5c\
-q\x10\x17@\x93S\xa7\xf2\xc0\x10V\xcdy\xf3\xb2r\
->\xfd^\xf1p\xfb\x16\xc3_\x88E\x16\xd4\xa52\xf1\
-)\x9b\xfe6\x1d\xc4\xc7\x09q\x18s\xef\xb0\xb3g\xfa\
-\x9db\x01q\x0dr\x89|\xf1v\x9b&\xe2\x88 ^\
-\x04\xd5;\x9e\x83\x06)\x87\x0b\xa0\x98\xc5\x1e\xea\xce\xe8\
-\xd1*YXX\xa5\xb1\xf9\x92x\xac}\x8b\xe1\x0db\
-^\x88uI\x7fA\xb8\xc7\xa6\xbf\xc9x\xb7#\x0f\x01\
-\x0esA}\xb7\xa2\x8f}u\xa9\x92\xc8\x06\xb9\xc4v\
-\x9b&\xe0\x1cqo\xb6\x8bM\xf3\xe6\xcaY\xb6\x8cP\
-\x89\xc1\xb8f\x8dJv\xe8P\xa51\xfa\xbe8\xcb\xbe\
-\xc5pc\x88u\xe9\x06[\xfe\x0e\xba\x85\xe2E\x9c7\
-\xc7\x1c\xf4=\xf1d\xfb\xea\xd2\x22b\x1b\xe4\x02\x17\xda\
-2\xe9\xf4\x99\xb7\xed\xd9.0\xc5\xc5\xe9\xe7\xdc+*\
-\x08\x91\x18\xbc\xba-cYY\x95\xc6\xecv\xfb\xce\x7f\
-\x9e\x13B]Ze\xcb\xbf\x7fM\xf1\xfb\x045\xccq\
-\xd7\xb8\x17\xa3-\x99\x97_\x8aS\x89o\x10g\xc6\x89\
-\x9f\xdb0\xe1\xca\xc4\x1b\xb3\x5cP\xf4C3\xa9K/\
-%4\xa2Y/\xbb\xac\xca\xbb\xe9?\x10K\xedY\x0c\
-\xff%\x0e1X\x97&\x88_\xd8\xf0\xef^_\xbc\x8b\
-p\x86\xb8\xcf]vm\x1e\xfcS\xecG\x8c\x838\xd2\
-_\xfc\xd8\x86\x89v\x84\xf8`6\x0b\x89>\x0f|\xca\
-)\x5c\x02\xc5p\x9d6-\xfd\x0bN\x86\xe3\xf8\x01\xb1\
-\xa9=\x8b\xe1\x07\x89t\x1f\xf2\xa0\xe9kK]\xd2=\
-\xa1\x7fC(C\xfc\x8a?\x13\x1b\xdaS\x97\xfe&v\
-!\xceA\x9c\xd0\xcf\xe7\xa6l\x98`\x9d\xc4\xe7\xb2Y\
-@\x1a5R\xceE\x17\x11\x0e\xd1\x9a\xb3\xe9N\xabV\
-\x19\x8f\xe7'\xdcnF\x96,\x86\xaf\x8au\x02\xacK\
-\xfa\x0d\x86\xbd6\xfc\xbbv\x14\x9f'\x8c!\x1e\xd0G\
-\xc4\x16\xf6\xd4\xa5\xd7\x03\xaeK\x00\xc6(NX\xd2N\
-\xf1\x98lwj\xe9\xde]9\x97_N(\xc4\xc0^\
-\x14Mm\xd8\xa0\x9c\xe5\xcbUr\xe1B\xe5\xcc\x99\xa3\
-\x9c3\xceP\xa9\xf1\xe3\x953n\xdc\xben.\xa9\x11\
-#\x943|\xb8r\x06\x0c\xf8\xaf\x03\x07\xaaT\xf5\xea\
-\x19\x8f\xeb\x17\xedzy\xf4\xdeD0m\xcet\x9b\xd7\
-gl\xf8w\xec\x1bD\x07)\xc4\x98\xa9\xbf\xc0\xb6\xb3\
-\xa7.\xdd\x95Hw\xa3\x03\x884\xdf\xb6aB\xf5\xcf\
-f\xbb2\xfd\xb2\xe3\x94)\x04H\xac\x9a[\xb6\xec{\
-\xb8*5{\xb6rt\xe8\x96`\xed\x1cy\xa4J6\
-jT\xa5\x80\x9d\x0d\xdf\xb0\xab\xdd\xd9\xfa\x00\xea\x92\x15\
-\x1d[F\x89\xef\x12\xbe\x10=\xb7\x87\xedlO]Z\
-A\xbc\x83(s\xb6\x0d\x13\xe9\x04\xf7\xa9\xf3\xac\x14\x89\
-\x06\x0d\x94s\xf1\xc5\x84K\xf4\xd7\xbb\x5c\xbf \xab\x1f\
-\xab\x1a6L9\xed\xdbW\xb9\xf3\x8a\xa9vg#\xed\
-Y\x0c'e\xb1.\x9do\xc3\xbf\xd3\xa9n\xabK\x82\
-\x17\xa2w\xdf\x12\x07\xd8\xd3\xd9\xe5db\x1eD\x11\x99\
-C\x89O\xc3\x9eD\xa7ds\x11\xec\xd4\x89#-x\
-\xf00\xae\xdbk\xea0~\xea\xa9\xca\xe9\xd5K9M\
-\x9a\xa8d~~d\x17\xc3\xdd\xee\x17\x5c\x0b\x16\xc3\xbf\
-\x8b\x9d\xb2P\x97\x06\x89\x9f\x85\xfd\xef3\x83\x1e\xe7\x88\
-\x19\xfb\xb68\xc4\x8e\xba\xf4\xa1\xd8\x91\xb8\x07Q\xa2\xbe\
-\xf8^\xd8\x93G\xbf\xc2\xb7'[/\x82\x8e\x1eM\x97\
-\x16\xfc\xba\xfa\x0b\xdb\xd9g+g\xe4H\xe5\xb4m[\
-\xa5.*6\x87\xf4\xe3\xedX\x0c_\x14K\xabP\x97\
-\x1a\x89\xef\x87\xfd\xef1%\x88\x87\xd1\x10s\xccw\xec\
-y\x0d\xf9y\xb1\x06\xb1\x0f\xa2\x80\xbe\xd0uo\xd8\x93\
-fL\xb6v\xcek\xd4P\xce\xbcy\x04QL\xab\xbf\
-\xa4\xe9\x1d\xf2\xb1c\x95\xd3\xba\xb5r\x22\xbc;\xee7\
-\xa4\x8f\xb2c1\xfca\x86uI_\xe8\xba/\xec\x7f\
-\xfe\xa9\xec\x9c#f\xb5.\x1dgG]\xfa\x1e\xd1\x0f\
-\xa2\xc0\xea\xb0'\xcb\xf0l\x9d9\xaf_\x9f\x87\x87P\
-9\xdb\xb6)\xe7[\xdfRN\xdf\xbe*U\xbbvN\
-/\x86\x96\xecX\xcd\xcc\xa0.-\x0f\xfb\x9f{\x12;\
-\xe7\x88\x81\xec\xa4\xf7\xb7\xa3.\xcd&\xfe\x81\xcd\xf4\x0b\
-\xfb|\xe7`\xf7r[\x95'~\x9b6\xca\xd9\xbc\x99\
-p\x9a\xa3&\xb7nM?\xfc\xa3_\xe8\xcc\x91]r\
-\xaf\x8b\xa1\x05\x17\xb4\xfe!\xb6\xf7Q\x97\x06\x86]\x97\
-\xc6r!\x141\xd0\xaeS\xdd\xed\xa8K\xed\x88\x81`\
-#\xb5\xc4\xb7\xc3\x9c }\xdc\xcb#U\x9e\xf0={\
-\xa6;o\x10Ts\xcb\xed\xdb\xd3\xa1\xbcK\x97t+\
-M\x16\xbeo\xec\xa2\xd0+\xfc\xc5\xf0\xb9D\xfa\x8d\x05\
-/\xf7a\xf6\x84\xf9\xcf:\x22\x9b]\xa4\x10\xf1\x80\xbe\
-*\x1e\x19~]zZ,\x22\x0e\x82m|7\xcc\x89\
-\xd1\xc3\xfd\x16]\xe5\x89>t(\x97As\xad\xf3\xca\
-\x8a\x15\xfb\xda\x1f&#\xd0\xfa\xd0\xa6\xc5\xb0C\xf8\x8b\
-\xe1\xb6C\xd4\xa4<\xf1\xce0\xff\x19{\xb9\xbf:0\
-f\x10\x83\xf7\x05\xb1u\xf8ui\x1dq\x10l\xe2\x94\
-0'D[70T\xb9S\xcb\x84\x09\x04\xd6\x5c\x09\
-\xe5;v(\xe7\xcc3UJ\x1feba\xcb\xc8\xe7\
-\xc4\xc3\xc2\xefC<\xea uiv\x98u\xa9}6\
-\xea\x12\x22\xfa\xf2\x19\xb1<\xdc\xba\xf4\xb9{\xac\x0e \
-tZ\x88\x7f\x0bk24I\xa4\x9f\x00\xaej8O\
-\x9dv\x1a\xc15\x17\x82\xb9\xbe\xf4;h\x90rJJ\
-X\xcc\xb2\xe0\xe3b\xa3p\x17\xc3?\x8a\xe5\x07\xa8K\
-m\xc4\x8f\xc2\xfa\xe7j)\xbe\xc8\xf8@\x0c\xc5\x07\xc5\
-Z\xe1\xd6\xa5\xbd\xee\xf1:\x80\xd0\xd0\xad\xcb\xee\x0fk\
-\x12T\x17\xef\xaa\xead.(P\xce\xcc\x99\x84\xd78\
-\xab\x1f\x0f\x9a5+\xdd\x16\x91\xc5+\xeb\xea9Xl\
-W\xebE}\xb4%\xb4\x96\x8ae\xe2\xfd\x8c\x0b\xc4P\
-\xbdA,\x08\xb7.\xddHD\x840Y\x10\xd6\xe0\x97\
-o\x06\xea\xea\xaaNb}\x11p\xee\x5c\x02l\x9c/\
-}\x9er\x8aJ6h\xc0\x82\x15\xb0W\x8ay\xe1.\
-\x86\xa7\xecW\x97\xe6\x86\xf5\xcf\xa1\x03\xc1\xf7\x18\x0f\x88\
-V\xb8.\xfc\xf3\xe8'\x12\x13!\x0c\x9a%\xd2\xcfo\
-\x872\xf0/\xa9\xe2\xc4M\x16\x16*\xe7\xac\xb3\x08\xb1\
-q\x0d\xe6'\x9d\xa4\x9cZ\xb5X\xa4\x0c\xba0\xdc\x85\
-\xf0Obc\xb1e\x98u\xe92\xc6\x01\xa2U~+\
-\xdc\xba\xa4;H\xd5\x22.\x82i~\x1e\xd6\xa0\x9f\x9c\
-\x8d\x9d\xf3\xf9\xf3\x09\xb2q\xbc\xf89n\x9crJK\
-Y\x98BP\xbf\x909&\xdc\xc5\xf0\x16\xf1\xd7a\xfd\
-\xe7\xcf`\x0c Z\xa7~\x7f`x\xb8u\xe9\x0a\xe2\
-\x22\x98\xe4\xf4\xb0\x06{\xf7\xaa>D\xa4\xcf\x9c\xb3s\
-\x1e\xaf`\xae{\xd6\xeb`^\xb3&\x0b\x92\x05\x0f\x19\
-u\x0e\xffge\xe3\x0e\xe4!\x22Dk}Ml\x11\
-^}\xf8\x22AW\x170\x84\xbe\x99\xfc\x870\x06z\
-\x03\xb7\x85R\x95Z)N\x99B\xa8\x8d\x93s\xe6(\
-\xa7qc\x16!\x8b|R\xac\x93C\xe1\x5c\xb7\x9a|\
-\x89\xcf\x1d\xd1j\xf5\xc5\xed\x1a\xe1\xd5\x09\xf9\x8e\x90\xa8\
-N|\x84\xa0\xf9a\x18\x03\xbc\xa8\xaa\x1d[t8\x9f\
-:\x95@\x1b\x17\x17-R\xc9f\xcdXx,\xf56\
-\xb10\x07\xc2y\x09\x1d[\x10#\xe3w\xc2\xbd\xcc~\
-9\xf1\x11\x82dxX\x0b\xe1\xa5U\x9d\x9c\xfa\x08\x04\
-\xc16\xfa\xc7Y6nTN\xff\xfe\xca\xc9\xcfg\xc1\
-\xb1\xdc\xc59\x10\xd07\xf39#ri\xd4\x9b\x9f\x8a\
-\xdd\x88\x91\x10\x04\xd5\xc4\xd7\xc3\x18\xd8c\xdc\x0bh\x19\
-O\xca\xa1C\x09\xb7q8g\xae;\xb3T\xaf\xce\x22\
-\x13\x11\xf7\x8aCb\x1c\xce'\xf1\x19#F\xce\xddb\
-\xef\xf0\xea\xc6#\x89\xf4;\x0d\x00YeQ\x18\x03\xba\
-\x8d\xf8fU&d\xaf^\xca\xa9\xac$\xe4F9\x9c\
-\x9f{\xaer\xea\xd7gq\x89\xa0\xbfK\x84\xfe\xd2h\
-`u\xe9->_\xc4H\xfa[\xb1<\xbc\xfaq\x1a\
-q\x12\xb2\x89\xac\xb1\x89\xbf\x85q\xee\xfc\xde\xaaL\xc4\
-v\xed\x94\xa3w^\x09\xb9\xd1\x0c\xe6\x9b6)\xa7{\
-w\x16\x94\x88{K\x22\xfd\xb0X\x5c\xc2y1\xe7\xce\
-\x11#\xef\x0f\xc3;\x8f\xbe[,!VB\xb6\xb8>\
-\x8c\x85peU&`y\xb9r6o&\xe8FQ\
-\xfd\x8b\xc7\xe4\xc9\xca\xa9Q\x83\x85$&.\x8aQ@\
-\xdf\xca\xe7\x89\x18\x0b\xe7\x86WG\xd6\x12+!\x1b\xe8\
-K\x0d\x9f\x9b\x1e\xc0}\xdd3\xac\x19M<\xfdP\xcd\
-\x8a\x15\x04\xdd(\xba~\xbdr\xbave\xf1\x88\x99{\
-\xc4\x1e1\x08\xe7#\xf8,\x11c\xe3\xbbb\x87pj\
-\xc9G\xe2\xe1\xc4K\xa8*\x0f\x98\x1e\xbc\xb5\xc4\xa73\
-\x9dt\xba\xbb\xc7\x82\x05\x04\xdd(:w\xaeJ\x96\x95\
-\xb1p\xc4\xd4G\xdd\xb6\x84Q\x0d\xe7\xf5\xdc\xb3\xab|\
-\x96\x88\xf1\xea\x8f^-\x9c\x9a\xf2\x03\xe2%T\x85\x93\
-\xc3X\x08\xaf\xac\xca\x84\x9b8\x91\xa0\x1b5\xb7mS\
-N\xef\xde,\x169\xe0\xba\x08\x07\xf4\xab\xf8\xfc\x10c\
-\xe9\xaapj\xca\x97b?b&dB\x91\xf8\x96\xe9\
-A{RU&Z\x9f>\x84\xdd\xa8]\x04]\xbc\x98\
-\x0e-9\xa4n\x97: \x82\xe1|\x1c\x9f\x1db\xac\
-\xebR\xffpj\xcb\x13DM\xc8\x849a\xfc\x84\xfc\
-b\xa6\x93\xacI\x93\xf4N,\xa17:N\x9a\xa4\x9c\
-\xa2\x22\x16\x88\x1cS\x1f_\xab\x19\xa1p\xae\xdb\xb1\xbd\
-\xcc\xe7\x86\x18k\x1f\x13\xab\x87Sc\xc6\x107\xc1\x0f\
-\xc5\xe2\x1e\xd3\x03uW\xa6\x93K\x9f[^\xbb\x96\xc0\
-\x1b\x15\xb7lQN\x97.,\x0a\x1cu\x89\x84\xd7\xf0\
-y!\xe6\x84\xcb\xc2\xa91\xcf%x\xbc\x08|0\xdf\
-\xf4 \x1dR\x95\x895g\x0e\xa17*\xae\x5c\xa9\x9c\
-\xa6MY\x0cr\x5c\xdd\xa1\xa9{\x04\xc2\xf9p>+\
-\xc4\x9c\xea6\xd5)\x9cZs2\xb1\x13\xbc\xa0\x1b\xe8\
-;&\x07g\x0d\xf17\x99N\xaa\xc1\x83\x09\xbdQq\
-\xe6L\xe5\x14\x17\xb3\x10\xe0\x7f\xba'\x14Y\x1c\xceK\
-\xab\xd2M\x0a\x11#\xe9\xddb\x81\xf9z\xf3\xa2\x98O\
-\xfc\x84C\xb1\xc8\xf4B\xb8*\xd3\xc9\xa4\x1f#\xda\xbe\
-\x9d\xe0\x1b\x85\x87\x87F\x8dRN^\x1e\x0b\x00~\xc5\
-s,\x0e\xe8\xab\xf9|\x10s\xd2\xb3\xc2\xa99\x93\x89\
-\x9fp0\xca\xc4?\x9a\x1c\x94G\x8a\xefg2\x89\x8a\
-\x8aT\xf2\x92K\x08\xbf\xb6\xbbu\xabr:v\xa4\xe8\
-\xe3\x01}Glna8\xef\x9ai]B\xc4\xc8\xfb\
-\x96\xd8\xc4|\xddyM, \x86\xc27\xb1\xd4\xf4B\
-\xf8\xa3L'\xd1\xf8\xf1\x84_\xdb\xbd\xec2\xce\x9b\xe3\
-!\xbd\xde\xb2p\x9e'\xde\xc5\xe7\x82\x98\xd3V\x86S\
-\x7f\xa6\x11C\xe1\x9b:\xb7\x18={>:\xc3\x89\x93\
-j\xd3F9\x15\x15\x04`\x9b\xfb\x9b\xafX\xa1\x9c\x06\
-\x0d(\xf4\xe8\xc9\x81\x16\x05\xf4\x09|\x1e\x88\xf4F\x17\
-{\x84\xb3\x8b\xceYt\xf8\x1a\xb3L\x0eD\xf96\xa0\
-\x9e\xcc$\x9cW\xaf\xae\x92\xb4T\xb4\xdb\xb9s\xb9\x0c\
-\x8a\xbe|@,\xb4 \x9c\xeb\x0b\xeb\xcf\xf1y \xa2\
-\xf8s1\xdf|\x1d\x1aK\x1c\x85\xfd\xd1=8_6\
-9\x08\xe7g:i&L \x00\xdb\xec\xacY*Y\
-XHqG\xdf\xce\xb0 \xa0/\xe1s@\xc4\xfd\x9c\
-d\xbe\x0e=L$\x85\xfd9\xd1\xe4\x00\xd4/\xf3\xbd\
-\x91\xc9di\xdd:\xdd\x11\x84 l\xef\xcb\xa0tj\
-\xc1\x0c\xd5\xafu\xd6\x0a1\x9c\xebKa\xef\xf29 \
-\xe2~>\xef\xb6\x5c5\x5c\x8fz\x11K\xe1\xdf<h\
-r\xf0m\xc9\xb0k\x8b\xa3\xcf5\x13\x84\xed\xf4\xe4\x93\
-\x09\xe7Xe/\x0a1\xa0o\xe1\xef\x8f\x88\x07\xf0B\
-\xf3\xf5\xe8Vb)hz\x9a\x1cx-\x12\xe9\xd7\xba\
-|O\x92\xd1\xa3\x09\xc1\xb6\xaa?\x1b\x8a8f\xc17\
-\xc5\x86!\x84\xf3\xd6\x99\xd6%D\x8c\xbd\xfa\x17\xffz\
-fk\xd2\xe7bK\xe2)\xdcjr!\xac\xc8d\x82\
-\x94\x97\xab\xd4\xce\x9d\x04a\x1b\x1d;\x96\x02\x8eYu\
-]\x08\x01\xfd\x1a\xfe\xee\x88x\x10\x97\x9b\xafK;\x89\
-\xa7\xb9M3\xf7\x9b\x9a\x91\x01\xd76\x91\xe1\xe3\x1f\xf3\
-\xe6\x11\x84\x09\xe7\x98#\xee\x16\x9b%\xcc>J\x94\xe4\
-\xef\x8e\x88\x89\x83?^d\xf8\xd7\xbd\xbf\x8b\xb5\x89\xa9\
-\xb9\xcbZ\x93\xdf\x08\xaf\xcd\xa4\xadb\xd7\xae\x04a\x1b\
-\xfb\x9c\x8f\x1bG\xd1\xc6\xc0\xdcn\xb0.}\x8f\xbf7\
-\x22\xda\xf9\xeb\xde\xb9\xc4\xd4\xdc\xa4HL\x99\x1ahG\
-e\xb0K\xa5\xdb\xf5\xa5V\xaf&\x10\xdb\xa6nuI\
-\xb1\xc6\x00\xd5\xbf\xb4\xb54P\x97\xba\xf1\xb7FDK\
-\x7f\xdd\x13_ \xaa\xe6&F[+^\x97\xc9\x848\
-\xf6X\xc2\xb0m\x9e~:\xddZ\xd0\x88\x1b\x0d\xd4\xa5\
-\xab\xf9;#\xa2\x0f\xd7\x9b\xdfE?\x86\xb8\x9a{\xdc\
-a\xb2C\xc2^\xbf\x13\xa1F\x0d\xe5l\xdeL \xb6\
-\xc99sT2?\x9f\x22\x8dF|\xcf\xedM\x1eT\
-]j\x97I]B\xc4\x9c\xf6\x1d\xb1\xbe\xd9\x80~5\
-q5\xb78L\xfc\xcc\xd4\x00\xdb\x94\xc9D\x988\x91\
-@l\x91\xc9\x85\x0b\xd3\xbd\xe8)\xd0h\xd0\xcb\x02\xac\
-KW\xf0\xf7E\xc4\x0c\x5cd6\xa0\x7f(\x96\x11[\
-s\x87U\xa6\x06W\xb9\xbb\x13\xe6k\x024h\xa0\x9c\
-]\xbb\x08\xc6\xb6\xb8l\x99r\xaaW\xa70c(\xbb\
-\xe8\xe5\x01\xd4\xa5V\xec\x9e#b\x86\xbe\x920\xfe\xba\
-\xe8\xd9\xc4\xd6\xdc\xa0@|\xdf\xd4\xc0\xba(\x93\x090\
-e\x0a\xa1\xd8\x16\xd7\xadS\xa9:u(\xca\x18\x9a\x17\
-'x5\x14\x11\xedr\x86\xd9\x80\xfe,\xd157\x18\
-ajPU\x17_\xf4;\xf0\xcb\xcb\x95SQA0\
-\xb6\xc1m\xdb\x94s\xc4\x11\x14c\x0c}\xb7\xaa,\x8b\
-u\xa9\x91\xf8.\x7fWD\xac\x82\x8f\x8a\xf9fCz\
-g\xe2k\xfc\xb9\xd1\xd4\x80\x9a\x91\xc9\xc0\x9f6\x8d`\
-lC\x9fs\xf9\x92\x94\xea\xd4\x89B\x8cVxN\x16\
-\xeb\xd2\xa5\xfc=\x111\x0b\x9eh6\xa0o$\xbe\xc6\
-\x9bb\xf1\xaf&\x06S\x9e\xf8\x88\xcf\xc1\x9el\xd4h\
-_0$ [\x10\xd0G\x8e\xa4\x00\xa35>'\x16\
-e\xa1.\xd5\x12_\xe3\xef\x89\x88Y\xf0'f\x03\xfa\
-\x9bD\xd8xs\x92\xa9\xc14$\x83\xc1\x9e\x9c>\x9d\
-plI;Ez\x9d\xa3mN\xcdB]:\x9f\xbf\
-#\x22f\xd1NfCzObl|\xf9\xbe\xa9\x81\
-tU&g\xcf++\x09\xc7a\xbbt)\xed\x14\xd1\
-J\x1f\xa9\xe2\x99\xcfb\xf1\xb7\xfc\x1d\x111\x8b\xae6\
-\x1b\xd07\x11c\xe3I\xa9\xf8\x91\x89A\xd4 \x91~\
-\x12\xd7\xcf O\x9dv\x1a\xe18l\xf5\xc3P\xf5\xeb\
-St\xd1Z\xc7\x9a\xbe\x13\x83\x88x\x10\xf5\x91\xb9\x12\
-s\x01}\x8f\x98G\x9c\x8d\x1f\x13M}\xcb\x9b\xe7\xf7\
-hKY\x99J\xed\xd8A@\x0e\xd3\x8a\x0a\x95\xec\xd0\
-\x81\x82\x8bV{\x9f{\xbf\xc5oM\xd2\xe7\xd7\x9f\xe1\
-\xef\x87\x88\x018\xc1\xec.z?\xe2l\xfc\xb8\xcd\xd4\
-\xe5\xd0G\xfd\x0ep}!\x91\x90\x1c\xae\xe3\xc6Qh\
-1\x12\x0e\xcd\xa0.M\xe4\xef\x86\x88\x01\xf9#\xb3\x01\
-}'q6^\x94\x88\xff01xz\xf9\x1d\xdcE\
-E*\xb5i\x13\x019\xcc\x8e-\x8b\x17\xabd~>\
-\x85\x16#\xe1-\x19l\x1a\xdc\xc7\xdf\x0d\x11\x032)\
-6\xe7\x98\x0bd\xc8\xf1\xa6\xbe\xddm\xf5;\xb8\x07\x0c\
- $\x87\xe9\xd6\xad\xcai\xd0\x80\x22\x8b\x91\xb2\x9b\x8f\
-\x9at,\x7f/D\x0c\xd8\x0b\xcd\xee\xa2\x1fE\xac\x8d\
-\x0f\x15&\x06M\xb5Lz\x0c/[FH\x0eS\xfd\
-\x05\x89\xe2\x8a\x11\xf3z\x1fu\xe9g\xfc\xbd\x101`\
-\x9f\xc8\xf0~L\x86^B\xac\x8d\x0f\xef\x98\x184\xc3\
-\xfd\x0e\xea\x96-\x09\xc8a:s&\x85\x15#\xfb\x93\
-r{\x0f5\xa97\x7f+D\xb4\xf0\x97\xbd*\xfa\x08\
-\xb16\x1e\xb46\xf5\xb3\xcb\x0e\xbf\x03z\xca\x14Br\
-H&\xd7\xaeUNI\x09E\x15#\xeb\x16\x0f5\xe9\
-;\xfc\x9d\x10\xd1\x90\x97\x98\x0b\xe8\x9f\x8a\xb5\x88\xb7\xd1\
-g\x81\x89\x01S]|\xc3\xcf`..VI}\xfe\
-\x99\xb0\x1c\x8e]\xbbRP1\xd2\xea\xb7\x16\x0e?H\
-M\xea\xcc\xdf\x08\x11\x0d\xfa\x8c\xd9c.\x13\x89\xb7\xd1\
-\xe7\x17&\x06\xcb\xf1>\x07rj\xe0@BrXN\
-\x9fN1\xc5X\xb8\xe6 5\xe9\x0a\xfe>\x88h\xd8\
-\x1e\xe6\x02\xfa\xb5\xc4\xdbhSl\xaa\xbdb\xa5\xdf\x81\
-\xac\x9f\x94',\x9bw\xe3F\xe5\x94\x96RH1\x16\
-\xea_\xed\xea\x1c\xa0\x1e\x1d\x9e\xf0\xff\x9a1\x22bU\
-]a.\xa0\xef&\xe2F\x9b\xe1&\x06\x8a~\xa5\xef\
-u?\x83\xb8iS\x82rX\xf6\xe9C\x11\xc5X\xb9\
-\xf0\x005i-\x7f\x17D\x0c\xc1'\xcd\xb6[\xecD\
-\xcc\x8d.\x1bL\x0c\x92~~\x07\xf1I'\x11\x94\xc3\
-\xb8\x18z\xd6Y\x14P\x8c\x9d/\x8a%\xfb\xd5\xa3z\
-\xe2\xdb\xfc]\x101$[\x9b\x0b\xe8\xf3\x89\xb9\xd1\xe5\
-1\x13\x83\xe4R\xbf\xe7\xcfW\xaf&0\x9bv\xfbv\
-\xe5\xd4\xafO\xf1\xc4X:g\xbfz\xb4\x94\xbf\x07\x22\
-\x86\xe8Y\xe6\x02\xfa\xad\xc4\xdchR]\xfc\xc4\xc4 \
-\xf9\xb5\x9f\xc1\xdb\xa2\x05a9\x0cG\x8e\xa4pbl\
-}\xd6=jW\xcb\xefq;D\xc4,{\xb3\xb9\x80\
-\x9e$\xeaF\x93\xbe&\x06H\xe3D\xfa\xd1\x10\xcf\x83\
-w\xc2\x04\xc2\xb2i\xd7\xacQNQ\x11\x85\x13c\xed\
-Dw\xe7\x8a\xbf\x05\x22\x86\xe9;\x89t\xebiC!\
-\xbd9q7z,218N\xf33p\xf3\xf2\x94\
-\xb3n\x1d\x81\xd9\xf4\xd9\xf3\xee\xdd)\x9a\x18{\x1fp\
-w\xd2\xf9[ b\xd8\x1ek.\xa0O&\xeeF\x8f\
-\xdbM\x0c\x8ek\xfc\x0c\xdaV\xad\x08\xcc\xa6]\xb8\x90\
-b\x89\x88\x88h\xd0\xb5\xe6\x02z%q7z\xfc>\
-\xe8\x81Q \xbeF\xf7\x16{\xad\xacT\xa9\x96-)\
-\x96\x88\x88\x88\x06}\xc4\x5c@\x7f\x9e\xb8\x1b-\xda\x99\
-\x18\x18\x9d\xfc\x0e\xdaK.!4\x9b<\xda\xc2\x8b\xa1\
-\x88\x88\x88\xa1Xn&\xa0\x7f!\xd6!\xf6F\x87\xa9\
-&\x02\xfa4?\x83\xb5^=B\xb3AS;w\xaa\
-\x94\xfe\x9bS$\x11\x11\x11\x8d{\xbc\xb9]\xf4\xe1\xc4\
-\xde\xe8\xb0\xcd\xc4\xa0\xb8\xd2\xcf`\x1d0\x80\xe0lr\
-\xf7|\xd2$\x0a$\x22\x22bH\xae2\x17\xd0/\x22\
-\xf6F\x87_\x99\x18\x14O\xfb\x19\xacs\xe6\x10\x9c\x0d\
->J\x94\xaa]\x9b\x02\x89\x88\x88\x18\x92?7\x17\xd0\
-o$\xf6rA\xf4?\x96\xfb\x19\xa8\x85\x85*\xb9u\
-+\xc1\xd9\x94\xe3\xc7S\x1c\x11\x11\x11Ctw\xc2X\
-?t.\x8aF\x84\xc6&\xbe\xb1\x8d\xf53P\xdb\xb6\
-%4\x1b\xdc=O\xd6\xacIqDDD\x0c\xd9\xbe\
-f\x02\xfa\xa7b5\xe2\xaf\xfd\x1cg\x22\xa0\xaf\xf23\
-HO8\x81\xe0l\xca\xb1c)\x8a\x88\x88\x88\x168\
-\xcf\xdc1\x97N\xc4_\xfb1\xf2\x82\xe8m~\x06\xe9\
-\x82\x05\x04gC\xbb\xe7Ni)E\x11\x11\x11\xd1\x02\
-\xaf4\x17\xd0O'\xfe\xda\xcfwM\x0c\x86W<\x0e\
-\xced~~:8\x12\xa0\x83\xf7\xb4\xd3(\x88\x88\x88\
-\x88\x96\xf8\x80\xb9\x80\xbe\x81\xf8k?\xcfXuA\xf4\
-\x88#\x08\xce\x86^\x0du\x1a5\xa2 \x22\x22\x22Z\
-tQ\xb4\xc8L@\xbf\x8b\xf8k?\x7f\x0fz \x0c\
-\xf63@\x87\x0c!<\x9b\xe8{~\xd6Y\x14CD\
-DD\xcb\xech&\xa0\xbfE\xfc\xb5\x9b\x86&~J\
-\x99\xebgp\xce\x9cI\x806\xa1\xee\x94C!DD\
-D\xb4\xca\x93\xcdur) \x06\xdbKo\x13\x01\xbd\
-\xc2\xc7\xc0L\xae]Kx\x0e\xda\x8b/\xa6\x08\x22\x22\
-\x22Z\xe8rs\xe7\xd0\x9b\x13\x83\xed\xe5T\x13\x83\xe0\
-W^\x07\xa6\xee(B\x80\x0e\xde\xbe})\x82\x88\x88\
-\x88\x16\xfa}s\x01}\x101\xd8^\x96\x04=\x00\xf2\
-\xc4\xb7\xbd\x0e\xcc\xf6\xed\x09\xcfA{\xf9\xe5\xca)*\
-\xa2\x08\x22\x22\x22Z\xe8\x93\xe6\x02\xfa4b\xb0\xbd\x5c\
-\x1d\xf4\x00h\xe4g`\x0e\x1dJ\x80\x0e\xfar\xe8\xa4\
-I\x14@DDDK\xddc\xae\x93\xcb*b\xb0\xbd\
-\xdc\x1b\xf4\x00\xe8\xe1g`N\x99B\x88\x0e\xda\xc3\x0e\
-\xa3\x00\x22\x22\x22Zl33\x01\xfd\x06b\xb0\xbd\xbc\
-\x11\xf4\x008\xc9\xc7\x80L-YB\x80\x0e\xd2\x8b.\
-\xa2\xf0!\x22\x22Zn\x7f3\x01\xfd!b\xb0\x9d\xe4\
-\x89\x1f\x07=\x00\xce\xf5: \xf3\xf3Uj\xc7\x0eB\
-t\x90\xf6\xefO\xe1CDD\xb4\xdcS\xcd\x04\xf4\xf7\
-\x88\xc2vR\xd7\xc4%\x84M^\x07\xa4~\xd5\x92\x10\
-\x1d\x9c\xdb\xb7+\xa7\xa4\x84\xc2\x87\x88\x88h\xb9\x8b\xcd\
-\x04\xf4O\x88\xc2v\xd2\xc6D@\xbf\xc9\xeb\x80\xec\xd4\
-\x89\x10\x1d\xa4\xfa\x01(\x8a\x1e\x22\x22\xa2\xf5\xee2\xd7\
-\xc9\xa5\x8c8l\x1f}L|\xf8\x0f{=\x7f>x\
-0!:H\x8f:\x8a\xa2\x87\x88\x88\x18\x01\x7fd.\
-\xa0\xb7 \x0e\xdb\xc7\x89&>\xfc\x97\xbd\x0e\xc8\xf1\xe3\
-\x09\xd1A\xb9u+\xbd\xcf\x11\x11\x11#\xe2\x03\xe6\x02\
-\xfa1\xc4a\xfb\x98\x16\xf4\x07_ \xee\xf5\xba\x83>\
-{6A:(\xa7O\xa7\xe0!\x22\x22F\xc4\xdf\x9a\
-\x0b\xe8#\x89\xc3\xf6\xb1(\xe8\x0f\xbe\x9e\x9f\x01\xb9t\
-)A: S]\xbbR\xf0\x10\x11\x11#\xe2\xeeD\
-\xfa%v\x03\x01\xfd\x0c\xe2\xb0}\xac\x0f\xfa\x83o\xed\
-g@n\xdeL\x98\x0e\xc2-[T\xb2\xb0\x90\x82\x87\
-\x88\x88\x18!k\x99\x09\xe8\x0b\x88\xc3\xf6qu\xd0\x1f\
-|O\xaf\xc7[\xaaW'H\x07\xb5{N\xf7\x16D\
-D\xc4\xc8\xd9\xc2L@_M\x1c\xb6\x8f\xdb\x82\xfe\xe0\
-Gx\x1c\x84Iz\xa0\x07g\xcf\x9e\x14:DD\xc4\
-\x88y\xb4\x99\x80^A\x1c\xb6\x8f_\x04\xfd\xc1\x9f\xea\
-u \xb6lI\x90\x0e\xc2\xcaJ\xe5\x94\x95Q\xe8\x10\
-\x11\x11#\xe603\x01\xfdz\xe2\xb0}\xdc\x17\xf4\x07\
-?\xcb\xeb@\xec\xd2\x850\x1d\x84\x17^H\x91CD\
-D\x8c\xa0c\xcd\x04\xf4\x1f\x10\x87\xed\xe3\xe1\xa0?\xf8\
-y^\x07b\x9f>\x84\xe9 \x1c=\x9a\x22\x87\x88\x88\
-\x18A'\x9a\x09\xe8\xb7\x11\x87\xed\xe37A\x7f\xf0\xe7\
-y\x1d\x88\xc3\x86\x11\xa6\x83\xb8 \xaa\x8f\x0eQ\xe4\x10\
-\x11\x11#\xe7\xe9f\x02\xfa\x9d\xc4a\xfbx>\xe8\x0f\
-~\xb1\xd7\x818v,\x81:\xdb\xea\xb6\x95\xf9\xf9\x14\
-9DD\xc4\x08:\xc3L@\xbf\x978l\x1f/\x07\
-\xfd\xc1/\xf3:\x10O?\x9d@\x9dm\xe7\xcc\xa1\xc0\
-!\x22\x22F\xd49f\x02\xfa\x03\xc4a\xfbx+\xe8\
-\x0f~\x95\xc7A\xb8\xafW7\xa1:\xab&\x8f;\x8e\
-\x02\x87\x88\x88\x18Q\xcf5\x13\xd0\x1f'\x0e\xdb\xc7\x9e\
-\xa0?\xf8u^\x07\xa2\xde\xed%Ts\xfe\x1c\x11\x11\
-\x11\xf7y\x81\x99\x80\xfe\x0cq\xd8>RA\x7f\xf0\x97\
-{\x1d\x88s\xe7\x12\xaa\xb3\xe9\xf6\xed\xca)(\xa0\xc0\
-!\x22\x22F\xd4%f\x02\xfa\x0b\xc4a\xfbp\x82\xfe\
-\xe07{=\xe22\x7f>\xa1:\x9b\xc7[\x16.\xa4\
-\xb8!\x22\x22F\xd8\x0b\xcd\x04\xf4\xdf\x12\x87s\xf0\x88\
-\xcbz\xaf\x03Q\x07J\x82u\xf6\x8e\xb7\x8c\x1bGq\
-CDD\xe4\x88\x0bG\x5c\x22\xc8;A\x7f\xf0k\xbd\
-\x0e\xc4\xc5\x8b\x09\xd6\xd9\x0c\xe8]\xbbR\xdc\x10\x11\x11\
-#\xec\x023\x01\xfd\x09\xe2\xb0}\xbc\x11\xf4\x07\xbf\xd2\
-\xeb@\x5c\xba\x94`\x9dMk\xd7\xa6\xb8!\x22\x22F\
-\xd8yf\x02\xfa#\xc4a\xfbx%\xe8\x0f~\xb9\xd7\
-\x81\xb8l\x19\xa1:\x9b\x0f\x14Q\xd8\x10\x11\x11\xe9\x83\
-\x9e\xa0\x0fz\x14y1\xe8\x0f~);\xe8\xe6=\xef\
-<\x0a\x1b\x22\x22b\xc4\x9di&\xa0\xff\x928l\x1f\
-\xcf\x07\xfd\xc1/\xf6:\x10/\xba\x88`\x9d-O9\
-\x85\xc2\x86\x88\x88\x18q\xcf4\x13\xd0\x7fA\x1c\xb6\x8f\
-\xa7\x83\xfe\xe0/\xf0\xdaf\x91K\xa2\xd9k\xb1\xd8\xaf\
-\x1f\x85\x0d\x11\x111\xe2N6\x13\xd0\xef \x0e\xdb\xc7\
-\xe3A\x7f\xf0s=\x0e\xc2$m\x16\xb3g\x8b\x16\x14\
-6DD\xc4\x88;\xd6L@\xbf\x8d8l\x1f\xbf\x0a\
-\xfa\x83\x9f\xeau \x9e\x7f>\xc1:\x1bVV*\xa7\
-\xb8\x98\xc2\x86\x88\x88\x18q\x8f5\x13\xd0\xaf'\x0e\xdb\
-\xc7O\x82\xfe\xe0'x=\xe2\xc2K\xa2\xd9q\xdd:\
-\x8a\x1a\x22\x22b\x0c\xeci&\xa0\xef$\x0e\xdb\xc7\x8d\
-A\x7f\xf0#\xbc\x06\xf4s\xce!\x5cg\xc3\x0b.\xa0\
-\xa8!\x22\x22\xc6\xc0\x8ef\x02\xfae\xc4a\xfb\xb82\
-\xe8\x0f~\x80\xd7\x80>{6\xe1:\x1bN\x9bFQ\
-CDD\x8c\x81\xcd\xcc\x04\xf4%\xc4a\xfb\xd8\x1c\xf4\
-\x07\x7f\xb4\xd7K\xa2S\xa7\x12\xae\xb3\xe1\xe8\xd1\x145\
-DD\xc4\x18X\xcfL@\x9fK\x1c\xb6\x8f\x15A\x7f\
-\xf0\xed\xbc\x0e\xc4I\x93\x08\xd7\xd9\xb0o_\x8a\x1a\x22\
-\x22b\x0c\xacf&\xa0O%\x0e\xdb\xc7\x05A\x7f\xf0\
-M\xbd\x1eq\x197\x8ep\x9d\x0d\xdb\xb6\xa5\xa8!\x22\
-\x22F\xdcw\xcc\x84s\xed8\xe2\xb0}\xcc\x09\xfa\x83\
-/\xf1:\x18G\x8d\x22\x5cg\xc3\xfa\xf5)l\x88\x88\
-\x88\x11\xf77\xe6\x02\xfa\xb1\xc4a\xfb\x98d\xe2\xc3\x7f\
-\xdb\xcb`\x1c:\x94p\x9d\x8dWD\x0b\x0b)l\x88\
-\x88\x88\x11\xf7\xe7\xe6\x02z7\xe2\xb0}\x0c5\xf1\xe1\
-?\xe5e0\xea\xe7\xe9\x09\xd8Us\xdb6\x8a\x1a\x22\
-\x22b\x0c\xbc\xc1\x5c@oL\x1c\xb6\x8f.&>\xfc\
-\xbb\xbd\x0c\xc6n\xdd\x08\xd8Uu\xcd\x1a\x8a\x1a\x22\x22\
-b\x0c\xdcb&\x9c\x7f!\x16\x10\x87\xed\xa3\xb1\x89\x80\
-\xfe}/\x97D\xdb\xb4!`W\xd5%K(j\x88\
-\x88\x881p\xa9\x99\x80\xfeG\xa2\xb0\x9d\x14\x89_\x06\
-=\x00vy\x19\x8c\xe5\xe5\x04\xec*\x9a:\xf7\x5c\x8a\
-\x1a\x22\x22b\x0c\xfc\x96\x99\x80\xfe\x12Q\xd8^\xfe\x1a\
-\xf4\x00X\xe5e0\x96\x96\x12\xb2\xab\xea\xf4\xe9\x145\
-DD\xc4\x188\xceL@\xff51\xd8^\xde\x08z\
-\x00\xcc\xf32\x18\xf3\xf2\x94SQA\xc8\xae\x8a\xa7\x9c\
-BQCDD\x8c\x81=\xcd\x04\xf4\x9b\x89\xc1\xf6\xf2\
-X\xd0\x03\xe0$\x8f\x831\xb5i\x13!\xbb*\x8e\x19\
-CQCDD\x8c\x81\x8d\xcd\x04\xf4\x9d\xc4`{\xf9\
-i\xd0\x03\xa0\x97\xd7\x01\xb9|9!\xbb*\x1e\x7f<\
-E\x0d\x11\x111\xe2\xee\x16\xf3\xcd\x04\xf4\xa5\xc4`{\
-\xb9\x22\xe8\x01\xd0\xd4\xeb\xa0\x5c\xb0\x80\x90]\x95K\xa2\
-#FP\xd8\x10\x11\x11#\xee\xe3\x09c=\xd0O#\
-\x06\xdb\xcb\xd2\xa0\x07@\x81\xb8\xc7\xcb\xa0\x9c:\x95\xa0\
-]\x15\x8f=\x96\xc2\x86\x88\x88\x18qo5\x17\xd0\xfb\
-\x10\x83\xed\xe5t\x13\x83\xe0\x19/\x83r\xf4hBv\
-Uv\xd0\x07\x0f\xa6\xb0!\x22\x22F\xdcm\xe6\x02z\
-\x13b\xb0\xbd\x0c21\x08\xee\xf20 \x93\xfd\xfa\x11\
-\xb4\xab\xe0\xbe\xbf\x1f\x85\x0d\x11\x111\xd2^`&\x9c\
-\x7f\x22\xe6\x13\x83\xed\xa5\x85\x89\x80~\x95\x97A\xd9\xb1\
-#A\xbb*\xf6\xeeMaCDD\x8c\xb8c\xcd\x04\
-\xf47\x89\xc0v\xa3_\x13\xfd\x22\xe8\x81p\x91\x97A\
-\xd9\xa4\x09!\xbb*G\x5cz\xf6\xa4\xb0!\x22\x22F\
-\xdc\x8ef\x02\xfa}D`\xfb\xd9\x1b\xf4@\x98\xe8a\
-@\xa6\xaaW'h\xb3\x83\x8e\x88\x88\x98\xb3\xbe/\x16\
-\x9b\x09\xe8\xd7\x11\x7f\xed\xe7\xf1\xa0\x07Bw\xaf\x83s\
-\xe3F\x826g\xd0\x11\x11\x11i\xb1\x18\xac\x97\x10\x7f\
-\xed\xe7\x07A\x0f\x84\xda^\x07\xe7\x05\x17\x10\xb63u\
-\xd0 \x8a\x1b\x22\x22b\x84\xbd\xc1\x5c@?\x99\xf8k\
-?+L\x0c\x86\x17\xbc\x0c\xce3\xce hg\xea\xd0\
-\xa1\x147DD\xc4\x08\xbb\xdc\x5c@\xefH\xfc\xb5\x9f\
-\xc9&\x06\xc3\x1d^\xce\xa1\xeb\xd70\x09\xdb\x99\x1dq\
-9\xee8\x8a\x1b\x22\x22b\x84=\xcdL8\xffL\xac\
-F\xfc\xb5\x9f\x1e&\x02\xfav/\x83\xb3[7\xc2v\
-\xa6\x8e\x1cIqCDD\x8c\xb0\x9d\xcd\x04\xf4\xd7\x88\
-\xbe\xd1\xa0\xa6\xf8e\xd0\x03\xe2,/;\xe8\xb4Z\xcc\
-\xdcq\xe3(n\x88\x88\x88\x11u\xb7Xd&\xa0\xff\
-\x84\xe8K\xab\xc5\xff8\xc0\xcb\x00-*RNE\x05\
-a;\x93>\xe8\x93'S\xe0\x10\x11\x11#\xea\xdd\xe6\
-\xce\x9f\xaf#\xf6F\x87\x07\x83\x1e\x10\xf5\xbc\x0e\xd2\xe5\
-\xcb\x09\xdc\x998k\x16\x05\x0e\x11\x111\xa2n1\x17\
-\xd0\xcf$\xf6F\x87kL\x0c\x8a\xe7\xbc\x0c\xd2\x193\
-\x08\xdb\x998\x7f>\x05\x0e\x11\x111\xa2N3\x17\xd0\
-\x8f&\xf6F\x87\x85&\x06\xc5\x8dtr\x09\xce%K\
-(p\x88\x88\x88\x11\xb5\xbb\x99p\xfe\x09\x1d\x5c\xa2\xc5\
-\xb1&\x02\xfa\xc5^\x06i\xc7\x8e\x84\xedL\x5c\xbd\x9a\
-\x02\x87\x88\x88\x18\xd1\x0b\xa2\xd5\xcd\x04\xf4g\x88\xbc\xd1\
-\xa2\xbe\x89\x80>\xd6\xcb@\xad]\x9b\xb0\x9d\x89[\xb6\
-P\xe4\x10\x11\x11#\xe8\xcf\xcd\x1do\xb9\x86\xc8\x1b=\
-\xf6\x04=0Zy\x1c\xa8\xa9\x8d\x1b\x09\xdc\x99tr\
-\xa9^\x9dB\x87\x88\x88\x181W\x99\x0b\xe8s\x89\xbb\
-\xd1\xe3\xae\xa0\x07F\x9e\xf8\xb2\x97\x80~\xee\xb9\x04\xee\
-L,/\xa7\xd0!\x22\x22F\xcc\xd1\xe6\x02zo\xe2\
-n\xf4\xb8\xcc\xc4\xe0\xf8\x9e\x97\xc1z\xc2\x09\x84\xedL\
-l\xdf\x9eB\x87\x88\x88\x181\x1b\x99\x09\xe7\x9f\x89%\
-\xc4\xdd\xe81\xd1D@?\x8f\x8b\xa2\xc1\xd9\xbb7\x85\
-\x0e\x11\x111B>nn\xf7\xfc\x05\xa2n4ik\
-b\x80xzQ\xb4\xa4D9\x95\x95\x04n\xbfg\xd0\
-G\x8e\xa4\xd8!\x22\x22F\xc8\x1d\xe6\x02\xfauD\xdd\
-h\x92'\xfe%\xe8\x01R&\xbe\xefe\xd0\xaeXA\
-\xe8\xf6\xeb\xa4I\x14;DD\xc4\x08y\x9a\xb9\x80>\
-\x93\xa8\x1b]\xee11H\xee\xf32h\xa7L!p\
-\xfb\xddA?\xe7\x1c\x8a\x1d\x22\x22b\x84<\xcc\x5c@\
-oG\xcc\x8d.\xabL\x0c\x92\xf5^\x06\xed\xc0\x81\x84\
-n\xbf\xaeZE\xb1CDD\x8c\x88\x8f\x98\x0b\xe7\x7f\
-pOJ@D\x19eb\xa0\x9c\xe8e\xe0\xea\x96\x81\
-\x84n\x7fVT\xa8da!E\x0f\x11\x111\x02\xae\
-3\x17\xd0\x7fL\xc4\x8d6u\xc5/\x83\x1e(\xf2\x1f\
-\xa2\xf6z\x19\xbc\xeb\xd6\x11\xba\xe9\x85\x8e\x88\x88\x18K\
-G\x9a\x0b\xe8\x17\x10q\xa3\xcf\xcb&\x06\xcb=^\x06\
-\xef\xb4i\x04n\xbf\xe7\xd0\xbbv\xa5\xe8!\x22\x22Z\
-\xeen\xb7q\x86\xa1\x80~\x0c\xf16\xfa\x5cob\xb0\
-\xac\xf02\x80\xfb\xf6%t\xfbu\xd80\x0a\x1f\x22\x22\
-\xa2\xe5\xdea.\x9c\xffC,\x22\xdeF\x9f9&\x06\
-\xcc0/\x03\xb8A\x03\x02\xb7_O?\x9d\xc2\x87\x88\
-\x88h\xb9\xe7\x99\x0b\xe8w\x13m\xe3\xc1\x91&\x06L\
-\xa9\xfb\xf3\xce\xa1\x06pj\xf5jB\xb7\x1f/\xba\x88\
-\xc2\x87\x88\x88h\xb9\x1d8\x7f\x0e>\xd1mxR&\
-\x06\xcd\x8f\xbd\x0c\xe2\xc9\x93\x09\xdd~\xdc\xbe]9y\
-y\x14?DDDK}\xdc\x5c8\xd7v&\xda\xc6\
-\x87\x1f\x98\x184\xf3\xbc\x0c\xe4\xce\x9d\x09\xddtrA\
-DD\x8c\x8d\xab\xcc\x85\xf3$\xfd\xcf\xe3\xc5\x0c\x13\x03\
-\xa7\x8d\x97\x81\x5cT\x94\xde\x15&x{6\xd9\xbd;\
-\x05\x10\x11\x11\xd1R{\x99\x0b\xe8\xd7\x13i\xe3EK\
-S?\xbd\xfc\xc6\xcb`\x9e7\x8f\xe0\xed\xc7\xb1c)\
-\x80\x88\x88\x88\x16\xfa\xb2X`.\xa0\x9fA\xa4\x8d\x1f\
-o\x9b\x18<\xeb\xbc\x0c\xe8!C\x08\xdd~<\xfbl\
-\x8a \x22\x22\xa2\x85n7\x17\xce\xf5\xc3\x93\xe5\xc4\xd9\
-\xf8\xf1?\xb6\xb4[L\xd5\xabG\xe8\xf6\xe3\xc6\x8d\x14\
-ADDD\x0b\x1dd.\xa0?G\x94\x8d'\x93M\
-\x0c\xa0\xea\xe2\x9b^\x06\xf5\xf2\xe5\x04o?\xd6\xafO\
-!DDD\xb4\xc8\xdf\x89\x85\xe6\x02\xfaJ\xa2l<\
-\xa9'~nb\x10Uz\x19\xd8\xc7\x1fO\xe8\xf6a\
-\xaagO\x8a!\x22\x22\xa2E\xae5\xdb^\xb1\x0bQ\
-6\xbe<ab\x10\x8d\xf60\xa8\x93\x8d\x1a\x11\xbc\xfd\
-8i\x12\xc5\x10\x11\x11\xd1\x22{\x9a\x0b\xe7\xef\x12a\
-\xe3\xcd\xc5&\x06R\xb1\xf8\xba\x97\xc1}\xc9%\x04o\
-\xaf;\xe8K\x96P\x0c\x11\x11\x11-\xf1I1\xcf\x5c\
-@\xdfJ\x84\x8d7G\x99\xfa)\xe6j\x8e\xb9d\xd7\
-]\xbbT\xaaZ5\x8a\x22\x22\x22\xa2\x05.7{\xbc\
-e\x08\x116\xde\xe8\xd7\xa7\xde71\x98\xc6z\x19\xe0\
-M\x9a\x10\xbc\xfd\xd8\xba5E\x11\x11\x11\xd1\x02;\x9a\
-\x0b\xe7\xff+\x16\x12a\xe3\xcf\xd5&\x06T\x0d\xf1m\
-/g\xd19\xe6\xe2\xddQ\xa3(\x8a\x88\x88\x88!\xfb\
-\x0b\xb3\xbb\xe7\xdf!\xba\xe6\x06cM\x0d\xaa\xab\xbc\x0c\
-\xf4a\xc3\x08\xde^]\xb0\x80\xc2\x88\x88\x88\x18\xb2g\
-\x9a\x0d\xe8#\x89\xae\xb9A\x89\xf8w\x13\x83\xea8/\
-\x03\xbdf\xcd}\xe7\xab\x09\xe0\x1e\xdc\xb1C9EE\
-\x14GDD\xc4\x90\xd4\xa7\x03j\x99\x0b\xe7\x7f\xe4x\
-Knq\xb3\x89\x81\xa5\x9b\xf7\xff\xd6\xcb\x80\x9f;\x97\
-\xf0\xed\xd56m(\x90\x88\x88\x88!\xb9\xcb\xec\xee\xf9\
-\x15D\xd6\xdc\xe2$S\x83k\xb9\x97\x01\xdf\xbd;\xc1\
-\xdb\xab'\x9c@\x81DDD\x0c\xc9^f\x03z_\
-\x22knQC\xfc\x87\x89\xc1\xd5\xd1\xcb\x80\xd7\xc76\
-.\xbf\x9c\xf0\xed\xc5\xf3\xce\xa3@\x22\x22\x22\x86\xe0#\
-\x09\xa3\xbd\xcf\xf7\x88\xf9D\xd6\xdc\xe3\x87\xa6\xbe\x01\xde\
-\xe3e\xe0O\x9eL\xf8\xf6\xf2`\x11\xe7\xd0\x11\x11\x11\
-Cq\x9a\xd9\xdd\xf3\x8dD\xd5\xdcd\xa2\xa9A\xf6-\
-/\x03\xff\xb0\xc3\x08\xe0^\xed\xd4\x89B\x89\x88\x88h\
-\xd07\xc4\x9af\x03zw\xa2*\xc7\x5c\x02\xb5\xb6\xf8\
-\x8e\x97\x09\xb0h\x11\xe1\xdb\x8b\x93&Q,\x11\x11\x11\
-\x0d\xba\xcel8\xff\x1d15\xb7\xb9\xc9\xd4`\xdb\xee\
-e\x02\xf4\xeaE\xf8\xf6\xe2\x9a5\x14KDDDC\
-&\xc5\xd6f\x03\xfa\x02\x22jns\x82\xa9\xc1v\xb4\
-\x97\x09PX\xa8R\x9b6\x11\xc0\xbd\xd8\xa8\x11E\x13\
-\x11\x11\xd1\x80?4\x1b\xce?\x11\xeb\x13Qs\x1b\xdd\
-\xfc>e\xd5e\xd1\xf1\xe3\x09\xdf^\x1c2\x84\xa2\x89\
-\x88\x88h\xc0af\x03\xfa\xcd\xc4S\xd0l15\xe8\
-N\xf72\x11\xf4\xcepe%\x01\xfcP\xce\x9bG\xd1\
-DDD\x0c\xd8\xfb\xcd\xb6V\xd4\x0e'\x9a\x82\xa6\xab\
-\xa9AWC|\xcd\xcb\x84\x98=\x9b\x00~\xa8v\x8b\
-;w*\xa7zu\x8a'\x22\x22b\x80\x9el6\x9c\
-\xbf\x97\xa0\xf79\xec\xc7s\xa6\x06\xdfj/\x13\xa2U\
-+B\xb8\x07\x93\xfa\x05V\x8a'\x22\x22b \xfeF\
-,4\x1b\xd0W\x12Ia\x7f\xce75\xf8\x8e\x10\xf7\
-x\x99\x18\x8b\x17\x13\xc2\x0f\xe5\x8c\x19\x14PDD\xc4\
-\x80\x9ci6\x9c\xffKlL$\x85\xfdi$~f\
-j\x10^\xe5\xa5\xa3\x8b\xde\x1d&\x84\x1f\xdc-[\x94\
-SXH\x11EDD\xcc\xb2/\x8a%f\x03\xfa\xf7\
-\x89\xa3p ~jj\x10v\xf729\x0a\x0a\x94s\
-\xd9e\x84\xf0C\x1ds\xe9\xd0\x81B\x8a\x88\x88\x98e\
-\x17\x9a\x0d\xe7\xda>DQ8\x10\xa3L\x0e\xc4;\xbc\
-L\x90\xc1\x83\x09\xe1\x87r\xf2d\x0a)\x22\x22b\x16\
-\xd5\x0d-j\x99\x0d\xe7O\x11C\xe1\x9b\xd0\xb7\x86\xdf\
-25\x18\x8f\xf70AR\xd5\xaa\xf1p\xd1\xa1\xba\xb9\
-\xac_\xaf\x9c\xbc<\x0a*\x22\x22btw\xcf\xa7\x12\
-C\xe1`\x5cdj0\x16\x88\x8fy9\x8b~\xdcq\
-\x04\xf1C\xd9\xae\x1d\x05\x15\x11\x111\x0b\xbe,\xd64\
-\x1b\xce\xff \x16\x13A\xe1`4H\xa4\x9f\x9852\
-(O\xf52Y\xd8E?\xf4.:\xc7\x5c\x10\x11\x11\
-\xb3\xe2|\xf3\xbb\xe7k\x89\x9f\xe0\x85\x1bM\x0d\xca\x22\
-\xf1I/\x13\xe6\xf8\xe3\x09\xe2\x07S\x7f\x81\xd1\x97j\
-)\xac\x88\x88\x88U\xea\xdcRj6\x9c\xebM\xd1&\
-DO\xf0B?\x93\xdf\x1c\xa7z\x994\xa5\xa5*\xb9\
-u+A\xfc`v\xecHqEDD\xac\x82s\xcd\
-\xef\x9e_M\xec\x04?<j\xdd.\xfa\xa8Q\x84\xf0\
-\x83\xb5[\x9c:\x95\xe2\x8a\x88\x88\x98\xa1O\xb8\x99\xc4\
-`8\xd7\xef\xcf\xb4$r\x82\x1fN5\xf9\x0dr\x86\
-\xd7\xb3\xe8\x1b7\x12\xc6\xbfI\xfd\x0bCQ\x11E\x16\
-\x11\x111\x03O5\xbf{~+q\x13\xfcR(\xee\
-65H\x8b\xc5\xe7\xbcL :\xba\x1c\xdc\xae])\
-\xb2\x88\x88\x88>\xbd\xdf\xed.g8\xa0\xf7 nB\
-&\x9cor\xa0N\xf62\x89\xf4\xb3\xf6k\xd6\x10\xc4\
-\xbf\xc9\xb3\xce\xa2\xd0\x22\x22\x22\xfa\xb4\xbf\xf9p\xfe\x0b\
-b&dJm\xf1C\x93g\xd1\x1f\xf72\x91\xfa\xf6\
-%\x88\x7fS\xbb\xc5\x8a\x0a\x95\xacY\x93b\x8b\x88\x88\
-\xe8\xd1[\xcd\x87s\xedq\xc4L\xa8\x0a;L\x0e\xd8\
-\x09^&\x93n'\xb8b\x05\x81\xfc\x9b\x1c<\x98\x82\
-\x8b\x88\x88\xe8\xc1\xa4\xd8\xd5|8\x7f\x8ax\x09U\xa5\
-\x95{\xcb\xd8\xc8\xa0\xcdw\xcf\x81\x1djB\xa5:u\
-\x22\x88\x7f\x93\x17_L\xd1EDD\xf4\xe0\x15\xe1\xec\
-\x9e\x9f@\xbc\x84lp\x83\xc9\x81;\xd2\xe3\xa4J\x9d\
-{.a\xfc\x9b<\xec0\x0a/\x22\x22\xe2A|K\
-lb>\x9c?I\xac\x84l\xd1A\xfc\xc2\xe4\x00\xbe\
-\xc3\xcb\xe4j\xdcx\xdf\x99k\x02\xf9\x01<\xf9d\x8a\
-/\x22\x22\xe2A<?\x9c\xdd\xf3Q\xc4J\xc8&\xdf\
-79\x80;\x89{\xbdL\xb0)S\x08\xe3\x07\xba,\
-\xbaaC\xfa\xac>\x05\x18\x11\x11\xf1k>\x9a0\xfe\
-(\x91\xf6A\xe2$d\x9b\x8e\xa6w\xd1\xb7{9\xe6\
-R\xbb\xb6r\xb6m#\x94\x1f\xe8e\xd1\xa3\x8e\xa2\x08\
-#\x22\x22\x1e\xc0\x11\xe1\xec\x9e\x0f%NB\x10\xdca\
-r \xebsao{\x99hC\x87\x12\xc8\x0f\xe4\x82\
-\x05\x14aDDD;\xda*>L\x8c\x84\xa08J\
-\xfc\xd2\xe4\x80>\xdf\xcbd\xcb\xcfOw.!\x94\x7f\
-\xd5\xcaJ\x95l\xd4\x88b\x8c\x88\x88\xb8\xdf\xc5\xd0\xc3\
-\xcd\x87\xf3/\xdc\x0c\x05\x10\x18w\x9b\x1c\xd45\xc4\xe7\
-\xbcL\xbaV\xad\xf6\x05R\x82\xf9\xff;\x8b>~<\
-\x05\x19\x11\x11\xd1\xf5\x82pv\xcfo#>B\xd0\xf4\
-0\xbd\x8b>\xc9\xeb\xc4\x9b:\x95P\xfe\xff\xdd\xb4I\
-%\x0b\x0b)\xca\x88\x88\x98\xf3>,V3\x1f\xce?\
-\x15\xdb\x12\x1f\xc1\x047\x99\xfe\xf6y\x9b\x97\xc9W\xab\
-\x96r\xb6l!\x94\xff\x7f\xbbw\xa70#\x22bN\
-\xab;\xc3u\x0fg\xf7|;\xb1\x11L\xd1\xd6\xfdF\
-hl\x80\xb7\x13w{\x99\x84\x83\x06\x11\xc8\xff\xbf\xe7\
-\x9dGqFD\xc4\x9cvc8\xe1\xfc\xcfb]b\
-#\x98\xe4;\xa6\x07\xfae^&a^\x9er\xe6\xcf\
-'\x94\xf3\xb2(\x22\x22\xe2>_\x10\xeb\x86\x13\xd0\x97\
-\x13\x17\xc14-\xc4\x7f\x99\x1c\xe8\xb5\xc4\xdfy\x99\x8c\
-\x8d\x1a\xa9\xd4\x8e\x1d\x84\xf2\xfd=\xe3\x0c\x8a4\x22\x22\
-\xe6\xa4'\x86\x13\xce\xf7\x8a\xa5\xc4E\x08\x83]\xa6\x07\
-\xfc)^'\xe4\x88\x11\x84\xf2\xfd\xbb\xb9\xe8/,\xa5\
-\xa5\x14jDD\xcc)\xaf\x0e'\x9ckO'&B\
-X4\x12?0=\xe8o\xf60!\x93\xba7\xfa\x92\
-%\x84\xf3\xfdC\xba\xfe\xd2B\xb1FD\xc4\x1c\xf1%\
-\xb1A8\xe1\xfc\x111\x8f\x98\x08a\xb2\xd8\xf4\xc0?\
-L|\xc3\xcb\xe4l\xde\x5c\xa5**\x08\xe7\xffv\xf5\
-\xea\xf4\x19}\x8a6\x22\x22\xe6\x80#\xc2\x09\xe7\xba\x89\
-\xc6\x91\xc4C\x08\x9b\xea\xe2{\xa6'\xc0\x5c\xaf\x13t\
-\xcc\x18\x82\xf9\xfe\xbb\xe8]\xbbR\xb4\x11\x111\xf6^\
-\x1f\xde\xd1\x96+\x89\x86`\x0b\x93MO\x80B\xf1^\
-\xafG].\xba\x88p\xee\x9a\x5c\xb8\x90\xc2\x8d\x88\x88\
-\xb1\xf6E\xb1Qxm\x15\xeb\x13\x0b\xc1\x16\xf49\xab\
-'MO\x84.\xe2\x1e/\x93\xb5qc\xe5\xd0\xd5\xe5\
-\xbf\xb6hA\x01GD\xc4\xd8:*\xbc\xdd\xf3yD\
-B\xb0\x8d\xfe\xe2\x97\xa6'\xc3R\xaf\x13v\xf8p\x82\
-\xf9\xbf\x8f\xb9\xcc\x9cI\x01GD\xc4X\xba-\xbcp\
-\xfe\x94X@\x1c\x04\x1b\xb9\xd9\xf4\x84(\x12\x7f\xe5\xf1\
-\xa8K\xea\xc2\x0b\x09\xe8\xda]\xbb\x94S\xa7\x0e\x85\x1c\
-\x11\x11c\xe5\x13bY8\xe1\xfcs\xb1;1\x10l\
-\xa5\x5c\xfc\xab\xe9\x89\xd1F|\xc7\xcb\xe4\xad[W9\
-\x9b7\x13\xd0\xb5\x13&P\xcc\x11\x1116\xee\x16\xbb\
-\x86\xb7{\xbe\x99\x08\x08\xb6\xb38\x8c\xc91\xdf\xeb$\
->\xfah\xc2\xb9\xbe,\xbau\xabrJJ(\xea\x88\
-\x88\x18\x0b/\x0e/\x9c\xeb\x17Ck\x12\xff\xc0v\xf4\
-\xf9\xab\xdf\x9a\x9e \xf9\xe2\x8f=N\xe2}g\xb0\x09\
-\xe9\xca\x19:\x94\xa2\x8e\x88\x88\x91\xf7.\xb7\xbb[H\
-\x01\xfdx\xa2\x1fD\x85\xa1aL\x92\xd6\xe2\xdb^&\
-sq\xb1J\xad\x5c\xc9e\xd1\x0d\x1b\x94STDq\
-GD\xc4\xc8\xaa\x1f.l\x19^8\xff\x19\x91\x0f\xa2\
-\xc6\x0f\xc3\x98,g{\x9d\xd4\xadZ\xf1\xca\xa8>\xea\
-\xd2\xaf\x1f\x05\x1e\x11\x11#\xeb\xc4\xf0\xc2\xf9\x07b3\
-\xe2\x1eD\x8d\xa6\xe2\x87a\x1cu\xb9\xcd\xeb\xc4\x1e2\
-\x84\x80\xbev\xadr\x0a\x0b)\xf2\x88\x88\x189w\x86\
-\x17\xce\xb5g\x11\xf5 \xaa,\x0ac\xd24\x11_\xf1\
-:\xc1\xa7M\xe3,z\xdf\xbe\x14zDD\x8c\x94\x8f\
-\x8a\xa5\xe1\x85\xf3\xfb\x12\xe9G\x1a\x01\x22I\xa1\xf8L\
-\x18\x93g\xb4\xd7I^\x5c\xac\x9c\xe5\xcbs\xfb,\xfa\
-\xea\xd5\xfb\xfa\xc4S\xf0\x11\x111\x0a\xea\xfbfG\x86\
-\x17\xce\xff.\xb6$\xe2A\xd4\xe9 ~\x12\xc6$Z\
-\xefu\xb2\x97\x97+G\xb7\x1d\xcc\xe5]\xf4c\x8e\xa1\
-\xe8#\x22b$\x1c\x1b\xee\xd1\x96\xd9D;\x88\x0b\xeb\
-\xc2\x98D5\xc4\x87\xbdN\xf8\x1e=r;\xa0\xeb_\
-\x11\xf2\xf2(\xfc\x88\x88h\xb5\x97\x87\x1b\xce\x1f\x14\xf3\
-\x89u\x10\x17\xaa\x8b\xaf\x851\x99:xm\xbd\xa8\x9d\
-4)\xb7Cz\xb7n\x14\x7fDD\xb4\xd6{\xc5\xe2\
-p\x8f\xb6\xb4&\xd2A\xdc\x18(~\x11\xc6\xa4:\xd5\
-\xeb\xe4/(P\xce\xa2E\xb9\x1b\xd0\x97.e\x17\x1d\
-\x11\x11\xad\xf4U\xb1Y\xb8\xbb\xe7\xb3\x88r\x10W\xae\
-\x08kb\xed\xf4Z\x04\xea\xd6U\xa9M\x9br\xf7\xc2\
-h\xa7N,\x04\x88\x88h\x95Iqx\xb8\xe1\xfc\xa7\
-D8\x883e\xe2\xdba\x9dG\x7f\xd0k1h\xdf\
-^9\xb9\xfa\x88\xd1\xe2\xc5,\x06\x88\x88h\x95\x8b\xc3\
-\x0d\xe7\xbf\x17\x1b\x12\xe1 \xee\x0c\x0e\xeb\xa8K{?\
-\xe7\xd1\xc7\x8c\xc9\xdd]\xf46mX\x10\x10\x11\xd1\x0a\
-\xbf\x9bH?B\x18b@?\x91\xe8\x06\xb9\xc2\xce\xb0\
-&\xda\x04\xafE!/O%\xa7O\xcf\xcd\x90\xbe`\
-\x01\x8b\x02\x22\x22\x86\xeeCb\xcdp\xc3\xf9\xd5D6\
-\xc8%j\x88o\x845\xe1\xd6x-\x0e\xd5\xaa)\xe7\
-\xe2\x8bss\x17\xbdeK\x16\x07DD\x0c\xcd\xd7\xc4\
-\xd6\xe1\x86\xf3\xb7\xc4R\x22\x1b\xe4\x1a\xfd\xc3:\xeaR\
-$\xfe\xc4k\x91\xa8UK9\x97]\x96{!\xfd\x82\
-\x0bX \x10\x111\x14\xf7\x8a\xc7\x85\x1b\xce\xff%\xf6\
-$\xaaA\xae\xb2)\xac\xc9\xd7H|\xdek\xb18\xfc\
-p\xe5l\xdfNG\x17DDD\x03.\x087\x9ck\
-\x17\x13\xd1 \x97\xd1\xafq=\x10\xd6\x04\xec$\xbe\xe3\
-\xb5`\xe8G|*+s+\xa4/[F_tD\
-D4\xea\xc6\xf0\xc3\xf9O\xc4<\x22\x1a\xe4:\xfaU\
-\xae\x0f\xc3\x9a\x883|\x14\x8d\xd4\xc8\x91\xb9w\xd4\xa5\
-G\x0f\x16\x0cDD4\xa2>~Z-\xdcp.\xff\
-\x18\x89FD3\x804g\x86\xf9my\x87\x9f\x90~\
-\xc6\x19\xb9\x15\xd0W\xaeL\xbf\xb0\xca\xc2\x81\x88\x88\x01\
-\xfa\xb8X/\xdcp\xae\xef\xc5\x0d#\x92\x01|\x95\x9b\
-\xc2\x9a\x94\xfa\xdb\xfaO\xbd\x16\x11\x1dV\xcf??\xb7\
-B\xfa\x80\x01,\x1e\x88\x88\x18\x98\xaf\x84\xdf\xb1E\xbb\
-\x9e(\x06\xf0u\xea\x88\xef\x8551\xeb\x8bOz-\
-&\xa5\xa5*\xb5zu\xee\x5c\x16]\xbf^\xa5t\xcb\
-I\x16\x11DD\xcc\xb2\xbb\xc5\xfe\xe1\x87\xf3\x87\xc4B\
-\xa2\x18\xc0\x81\x19 ~\x1e\xd6\x04\xd5/\x8d\xbe\xee\xa3\
-\xb3Kr\xeb\xd6\xdc\xd9E\x1f:\x94\x85\x04\x11\x11\xb3\
-\xee\xa9\xe1\x87\xf3\x94\xd8\x84\x08\x06pp\x96\x879Q\
-\xfb\xb8\xdf\xe6=\x15\x966m\x94\xb3cGn\x04\xf4\
-\xcb/WN\x8d\x1a,&\x88\x88\x985\x17\x85\x1f\xce\
-u\xbf\xf3\xdeD/\x80CS \xfe:\xcc\x09;\xcb\
-\xcf\xa5\xd1\xae]U\xaa\xa2\x227B\xfa\x981,(\
-\x88\x88\x98\x15\xaf\x11\xf3\xc3\x0f\xe8\x17\x11\xbb\x00\xbc\xd3\
-P\xdc\x1b\xe6\xa4]\xe3\xa7\xd0\xe8K\x94\xb9\x10\xd0\xb7\
-oW\xc9\x9a5YX\x10\x11\xb1J\xde\x96H\xbf\xea\
-\x1dr8\xbf\x91\xb8\x05\xe0\x9f\xe3\x12\xe9\x96G\xa1L\
-\x5c]8n\xf1SpN8!7B\xfa)\xa7\xb0\
-\xb8 \x22b\xc6>\x95H\xbf\xe6\x1dr8\x7fS\xac\
-M\xd4\x02\xc8\x8c\xd5aN`\x99\xb9\xea\x11?\x85G\
-\x87\xd7\xb8\x07\xf4\x9d;\x95\xd3\xa0\x01\x8b\x0c\x22\x22\xfa\
-\xf65\xb1C\xf8\xe1\x5c?\x8e\xd8\x89\x88\x05P\xb5\xf3\
-\xe8\xf7\x879\x91[\xba\xfdY\xbd\x14\x9ed~\xber\
-\xe6\xce\x8d\x7fH\x9f:\x95\x85\x06\x11\x11}\xf9\x8e\xd8\
-;\xfcp\xfe\xa58\x9ex\x05Pu\x1a$B\xec\x8f\
-\xae\xed'\xbe\xeb\xb5\x08\x15\x16*g\xfe\xfcx\x07\xf4\
-\xcaJ\xe5\xb4j\xc5\x82\x83\x88\x88\x9e\xdc#\x0e\x0f?\
-\x9c+\xf7\x97y\x00\xc8\x12=\xc4\x8f\xc3\x9c\xd4'\x88\
-\xef{-F\xd5\xab+\xe7\xe2\x8b\xe3\x1d\xd2\x17/V\
-N^\x1e\x0b\x0f\x22\x22\x1e\xfc\xd7eq\x92\x1d\xe1\xfc\
-\x0e1\x9fH\x05\x90]&\x87=\xb9Ov\x0b\x8d\xa7\
-\xa2T\xbb\xb6r\xd6\xac\x89uHOv\xef\xce\xe2\x83\
-\x88\x88\x07u\x9a\x1d\xe1\xfc\x05\xb1\x8c(\x05\x10\x0cW\
-\x85=\xc9\x17\xf9\xe9\x91\xde\xa4\x89Jm\xda\x14\xdf\x90\
-\xbejU\xfaH\x0f\x0b\x10\x22\x22\x1e\xc0\xe5v\x84\xf3\
-\xbf\x88\xed\x89P\x00\xc1Q(>\x14\xf6d_\xe5\xa7\
-@\x95\x97\xab\xd4\xc6\x8d\xf1\x0d\xe9#F\xb0\x08!\x22\
-\xe2\xd7\x5ccG8\xd7\xc7c\xfb\x13\x9f\x00\x82\xe7p\
-\xf1\x0faN\xf8\x02\xf1:?\x85\xea\xb0\xc3\x94\xb3y\
-s<\x8f\xb9l\xdd\xaa\x9cZ\xb5X\x8c\x10\x11\xf1?\
-^/\x16\xda\x11\xd0g\x10\x9b\x00\xcc1D\xfcW\x98\
-\x93\xbeX\xfc\x89\x9f\x82u\xc4\x11\xca\xb9\xfc\xf2x\xee\
-\xa2O\x9e\xcc\x82\x84\x88\x88\xfb\xfc\xb1\xbbFZ\x10\xce\
-7\x10\x97\x00\xcc3)\x91\xeeg\x1a\xda\xe4/\x13\xef\
-\xf5S\xb8Z\xb6T\xce\xb6m\xf1\x0b\xe8\x15\x15\xcai\
-\xda\x94\x85\x09\x111\xc7\xbdS,\xb1#\x9c\x7fO\xcc\
-#*\x01\x84\xc3\xba\xb0\x8b@}\xf1Q?\x05\xac}\
-{\x95\xda\xb1#~!}\xc1\x02\x16'D\xc4\x1c\xf6\
-!\xb1\xae\x1d\xe1\xfc\xd7b5\x22\x12@x\xe8\x97F\
-\xef\x0c\xbb\x18\xb4\x11_\xf6S\xc8:vT\xa9\x9d;\
-\xe3\x17\xd2;wf\x91BD\xccA\x9f\x15\x9b\xd9\x11\
-\xce\xdf\x13\x1b\x13\x8f\x00\xc2\xa7D\xfcM\xd8E\xa1\xab\
-\xf8\x86\x9f\x82\xd6\xad\x9brv\xed\x8aU@O\xadX\
-\xa1\x9c\x82\x02\x16+D\xc4\x1cR\x16`u\x18\xed\x14\
-\x01\xe0\x004\x17\x7f\x1fvq8.\x91~\xce\xd8s\
-a;\xfah\x95\xd2\xe7\xb7\xe3\xb4\x8b>x0\x0b\x16\
-\x22b\x8e\xf8\x82\xd8\xd6\x8ep\xfe\x998\x8a8\x04`\
-\x1fG\x8b\xff\x08\xbbH\x8c\xf2\x19\xd2S\x03\x07*\xa7\
-\xb22>\x01]\xf7|/)a\xe1BD\x8c\xb9\xcf\
-\x8b\xad\xec\x08\xe7\xb4S\x04\xb0\x9c\x09\xe2\x17a\x17\x8a\
-\x13\xc5\xf7\xfd\x14\xbac\x8eIwB\x89\xcbQ\x97\xd3\
-Nc\xf1BD\x8c\xb1/\x89\x1d\xed\x09\xe7\xb4S\x04\
-\x88\x00\xcbm(\x18\xa7\x8a{\xfd\x14\xbc\x1e=\xe2s\
-\xdcE\xff\x22\xd0\xa2\x05\x8b\x18\x22b\x0c}E<\xd2\
-\x9ep\xfe\xc3\x04\xed\x14\x01\x22\x81\x9e\xa8\xb7\xdaP8\
-\xe6\xf9-|q\x0a\xe9K\x96('/\x8f\xc5\x0c\x11\
-1F\xbe)\xf6\xb4'\x9c?%\x96\x11{\x00\xa2C\
-u\xf1q\x1b\x0a\xc8\x1c\x9f\xc5/\xd9\xbd{|B\xfa\
-\x80\x01,h\x88\x881Qw*\xebaO8\x7f^\
-\xacM\xdc\x01\x88\x1eM\xc5wm($\xcb\xfd\x16\xc2\
-\xa3\x8f\x8eG\x0b\xc6\xcd\x9bU\xb2\xac\x8c\x85\x0d\x111\
-\xe2\xcab\xaa\x06\xd9\x13\xce\xdf\x17\x9b\x11s\x00\xa2K\
-+1eCA\xb9\xc4\xefN\xfaQG\xc5#\xa4\x9f\
-q\x06\x8b\x1b\x22b\x84}G\x1chO8\xd7kz\
-k\xe2\x0d@\xf4\xe9\x22\xfe5\xec\xa2\x92'\xae\xf7[\
-\x18;w\x8e\xfe\x8b\xa3\xfa\xc2h\xcb\x96,r\x88\x88\
-\x11\xdd9\x1flO8\xd7kyWb\x0d@|8\
-^\xfc4\xec\xe2R ^\xe1\xb7@v\xea\xa4\x9c\x1d\
-;\xa2\x1d\xd2\x97.UN~>\x8b\x1d\x22b\x84\xd4\
-oz\x8c\xb5'\x9c\xffK\x1cA\x9c\x01\x88\x1f\xa7&\
-,\xe8\x91\x9e\x9fAHO\xc5!\xa4\xf3\xc2(\x22b\
-\xa4v\xce\x8f\xb5'\x9c\xebWB\xc7\x12c\x00\xe2\xcb\
-E6\x14\x9b\x22\xf1\x1a\xbf!\xbdk\xd7h\x1fw\xd9\
-\xbcY9\x5c\x18ED\xb4\xde\xdd\x89\xf4\xab\xd8\x09{\
-<\x87\xf8\x02\x10\x7f6\xd8Pp\xf4q\x97\xed~C\
-z\x9b6\xca\xd9\xb2%\xba!\xfd\xcc3Y\xfc\x10\x11\
--\xefs\xde\xd7\xaep\xbe\x94\xd8\x02\x90\x1b\xe8\x87\x8c\
-\xae\xb5\xa1\xf0\xe8\x8b\xa3\x1b\xfc\x16\xd0#\x8eP\xa9M\
-\x9b\xa2{a\xb4m[\x16ADDK\xc3y\x1f\xbb\
-\xc2\xf9\x16\x22\x0b@nQ \xdenKH\xf7\xdd\xdd\
-\xa5qc\xe5\xac[\x17\xcd\x90\xbe|\xb9r\x0a\x0aX\
-\x0c\x11\x11-{\x84\xa8\x97]\xe1\xfc:wC\x0d\x00\
-r\x8c\x9a\xe236\x14\xa2\xfc\x0c\x8e\xbb8\xe5\xe5\xd1\
-\x0d\xe9C\x87\xb2 \x22\x22Z\xe2[b\x7f\xbb\xc2\xf9\
-\xbdb5b\x0a@\xeeR_|\xc5\x96\x9d\xf4\xb5~\
-\xcf\xa4\xd7\xae\xad\x92\x97\x5c\x12\xb9\x80\x9e\xd2\x1di\x1a\
-6daDD\x0cYY\x00UW\xbb\xc2\xf9\xcf\x09\
-\xe7\x00\xa0\xd1\xaf\x8d:\xb6\x84\xf4M~\x0bli\xa9\
-r.\xbc0z\xbb\xe8\xe7\x9f\xaf\x9c\xbc<\x16HD\
-\xc4\x90|]\xeciW8\x7fL,#\x96\x00\xc0\xbf\
-i#&m)RK\xfd\x16\xda\x92\x12\xe5,Z\x14\
-\xbd\x9d\xf4>}X$\x11\x11C\xf0%\xb1\x93]\xe1\
-\xfc!\xb1\x06q\x04\x00\xfe?G\x89\x7f\x89\xecq\x97\
-j\xd5\x94s\xee\xb9\xd1\xeb\x8d^\xb3&\x8b%\x22\xa2\
-A_\x15\xbb\xd9\x15\xce\x9f\x17\xeb\x12C\x00\xe0\x9b\xe8\
-%~`KH_\x95IH\x9f7/R!=9\
-u*\x0b&\x22\xa2\xc1\x9ds\xcb\xce\x9c\xbf(6 \
-~\x00\xc0\xa1\x18(~dK\xf1Z\xee\xb7\x00\xe7\xe7\
-+\xe7\xf4\xd3\xa3\xb5\x93\xde\xa5\x0b\x0b'\x22b\xc0>\
-/\xb6\xb3+\x9c\xbf*\x96\x13;\x00\xc0+\xfd\xc4\xbf\
-\xdbR\xc4f\x88I?\x85X_\xbe\x1c=::\xbb\
-\xe8k\xd7*\xa7\xb8\x98\x05\x14\x111 \x1f\x11\x0f\xb3\
-+\x9c\xbf$6$n\x00\x80_\x8e\x13?\xb6\xa5\x98\
-M\x11\xf7\xfa-\xcaC\x86\xa4_\xef\x8cBP?\xf9\
-d\x16QD\xc4\x00\xfc\x95\xd8\xc0\xaep\xfe\x0a;\xe7\
-\x00P\x15F\x89\x9f\xd8R\xd4N\x12w\xfb-\xce\xbd\
-z)g\xd7.\xfb\x03\xba\xfe\x22\xd1\xb2%\x8b)\x22\
-b\x16\xbdS\xaceW8\x7f[<\x9cx\x01\x00U\
-e\x82\xf8\x99-\xc5m\xb8\xf8\xae\xdf\x22\xdd\xb9\xb3r\
-\xb6o\xb7?\xa4\xebG\x97\x0a\x0aXT\x11\x11\xb3\xe0\
-Mb\x0d\xbb\xc2\xb9,_\x89f\xc4\x0a\x00\xc8\x16s\
-\xc4/m)r#\xc4\xf7\xfc\x16\xeb\x16-\xd2m\x0d\
-m\x0f\xe9#F\xb0\xb0\x22\x22V\xd1\x1f\x88%v\x85\
-\xf3?\x88\x1d\x89\x13\x00\x90m\xce\xb3\xa8\xd0\xa9\x81\xe2\
-[~\x8bv\x93&\xcaY\xb7\xce\xee\xc7\x8bv\xeeT\
-Ny9\x0b,\x22b\x86^#\x16\xd9\x15\xce\xffW\
-\xecN\x8c\x00\x80\xa0\xb8\xd8\xa6\x90\xae\x9fh~\xcdg\
-\xe1N6j\xa4\x9c5k\xec\xdeE\xd7\x0f.\xe9N\
-4,\xb4\x88\x88\xbe\xdc.\x16\xd8\x15\xce\xff(v#\
->\x00@\xd0\x5chSH\xef\xe2><\xe1\xebA\xa3\
-:uTR\x9f\xf7\xb6\xb9\xf5b\xbf~,\xb6\x88\x88\
->\xd4/P\xe7\xd9\x15\xce\x7f/v&6\x00\x80)\
-\x16&,:\x93\xde\xce}\x80\xc2W1/.V\xa9\
-s\xce\xb17\xa4o\xdf\xae\x92\x0d\x1a\xb0\xe8\x22\x22z\
-\xf0B\xbb\x82\xb9V\xfe\xb18s\x0e\x00\xe6\x99%~\
-aK1\xd4\x0fP<\xe6\xb7\xa8\x17\x16\xaa\xe4\xf4\xe9\
-\xf6\x86\xf4\xf3\xce\xe3\xa8\x0b\x22\xe2A\xdc#\x9ej_\
-8\xd7\xad\x14\x9b\x13\x13\x00 ,\xe6\xd9\xb4\x93\xdeD\
-|\xd8o\x81\xd7\x01\xf8\xa4\x93\xec\xbd4:p \x8b\
-0\x22\xe2\x01\xd4\xefb\x9cl_8\x97\xef\x0c\x896\
-\xc4\x03\x00\x08\x9b\xc9\x09\x8b\xfa\xa4\xeb\x07)~\x92I\
-\xb1\x1f:\xd4\xceWGu\xffv\x8e\xba \x22~\xc5\
-\xd7\xc5\xfe\xf6\x85\xf37\xc5#\x88\x05\x00`\x0b\xa7\xda\
-\x14\xd2\xab\x89\xd7fR\xf4{\xf6T\x8ensh[\
-H_\xb0\x80\xa3.\x88\x88\xae/\x8a\xdd\xec\x0b\xe7/\
-\x8b\x8d\x89\x03\x00`\x1b\x93l\x0a\xe9\xba\xcd\xd6\xd6L\
-\x8a\x7f\xfb\xf6\xca\xd9\xba\xd5\xbe\x90\xde\xbf?\x0b3\x22\
-\xe6\xbcO\x8bm\xec\x0b\xe7\xf2\x9d!QN\x0c\x00\x00\
-[\x99(~jK\xd1\xd4\xed\xb6\x96g\xb2\x084m\
-j\xdf\x83F\xf2\xa5!U\xaf\x1e\x0b4\x22\xe6\xac\xf7\
-\x8b\xe5\xf6\x85\xf3\x17\xc4F,\xff\x00`;'\xdb\x14\
-\xd2\xb5\xb3\xf4\x03E~\x17\x83\xfa\xf5\x95\xb3b\x05G\
-]\x10\x11-\xf0.\xb1\x8e}\xe1\xfc\xb7bC\x96}\
-\x00\x88\x0aV\x9dI\xd7N\x17\xf7\xfa]\x14JK\x95\
-\xb3h\x91]!\x9d\x07\x8c\x101\xc7\xbc\xddm\x00`\
-Y8\x7fZl\xc0r\x0f\x00\x1cw\xa9\xa2c\xdd\xb6\
-\x5c\xbe\x16\x87\x92\x92\xf4\xce\xb5-\x01}\xf3f\x95\xaa\
-]\x9bE\x1b\x11s\xc2\x1b\xc4\xea\xf6\x85\xf3\x87\xc5Z\
-,\xf3\x00\x10UN\x12?\xb1\xa9\xb0\x0e\x12\xdf\xf4\xbb\
-H\xe4\xe7\xab\xd4i\xa7\xd9\x13\xd2\xe7\xcf\xe7\xa8\x0b\x22\
-\xc6\xde\x1db\xa1}\xe1\xfc\x1e\xb1\x06\xcb;\x00D\x9d\
-\xe1\xe2?l*\xb0G\x89/e\xf2\xa0\xd1\x981\xf6\
-\x84\xf4^\xbdX\xc0\x111\xb6\xaer/\xfa[\x16\xce\
-o\x17\x8bY\xd6\x01 .\xf4\x17\xffjS\xa1m\xe3\
-\xb6\xeb\xf2\xbdp\xe8`lC\xaft\xfd\x80Q\xc3\x86\
-,\xe4\x88\x18+\xf5\x85\xfey\xf6\x05s\xed\x8db!\
-\xcb9\x00\xc4\x8d\xa3\xc5?\xdaTp\x1b\x8a\xf7f\xda\
-+}\xcb\x96\xf0C\xba\xbe\xc0\x9a\x9f\xcf\xa2\x8e\x88\xb1\
-P\xdf\x11\x9ahg8\xff\xb6\x98\xcf2\x0e\x00q\xa5\
-\xa5\xf8\x96M\x85\xb7\xc4\xbd\x84\xe4{1i\xd2D%\
-\xd7\xae\x0d?\xa4\x8f\x18\xc1\xc2\x8e\x88\x91\xf75\xb1\x9f\
-\x9d\xe1|\x09K7\x00\xe4\x02M\x12\xe9W\xd7\xac)\
-\xc0\xfa\xd5\xd1M\x19,(\xfb\xba\xa9,]\x1an@\
-\xdf\xb5K9\xcd\x9b\xb3\xc0#bd}Flo_\
-0\xffR<\x97%\x1b\x00r\x09\xfd\xea\xda\xf3\xb6\xed\
-\x94\x9c\x93\xc9\xe2R\x5c\xac\x9cy\xf3B\x0d\xe9\xa9K\
-/UNQ\x11\x0b=\x22F\xce\x87\xc5\xc3\xed\x0b\xe7\
-_\x88sX\xaa\x01 \x17\xa9#>j[H?U\
-\xdc\xe3\xf7R\x93>\x07>yr\xb8;\xe9\x13'\xb2\
-\xd8#b\xa4\xfc\xa9X\xdb\xbep\xae\xdf\xef\x98\xcc\x12\
-\x0d\x00\xb9\x8c\xee%{\xafm!}\x84\xf8v&m\
-\x18G\x8fVNee8\x01]\xff\xe7\x1ey$\x8b\
->\x22F\xc2k\xc4j\xf6\x85\xf3\x8f\xc5\x13Y\x9a\x01\
-\x00\xd2!\xfdn\xdbBz\x7f\xf7\xd2\x92\xef\x85\xa7O\
-\x9f\xf4\xb9\xf00B\xfa\xbau\xca)-e\xf1GD\
-\xab\xdd%\x16\xd9\x17\xce?\x12G\xb3$\x03\x00\xfc\x97\
-j\xe2\x8fl\x0b\xe9\x1d\xc5\xe73Y\x80:tP\xce\
-\xd6\xad\xe1\x84\xf4\x193\x08\x00\x88h\xad\xcb\xed|\x80\
-\xe8/b?\x96b\x00\x80\x03\x87\xf4\x9bm\x0b\xe9\xfa\
-\xf2\xd2C\x99,DM\x9b\xa6w\xb4\xc3\x08\xe9\xc7\x1c\
-C\x10@D\xab\xdc+~\xcb\xce6\x8a\xf2\x8f\x96\xe8\
-\xcc\x12\x0c\x00\xf0\xcd\xe8\x87 \xae\xb0\xad\x80\xd7\x15\xef\
-\xcc\xa4\x0dc\x9d:\xcaY\xb6\xcc|@\xdf\xb2E\xa5\
-\xea\xd5#\x14 \xa2\x15\xbe+\x8e\xb13\x9c\xbf&6\
-g\xe9\x05\x00\xf0\xc6J\xdb\x0ayu\xf1\xbb\x99,N\
-%%\xca9\xff|\xf3!}\xc1\x82\xf4\xc5U\xc2\x01\
-\x22\x86\xe8\xabbo;\xc3\xf9\xd3bC\x96[\x00\x00\
-\x7fL\x15?\xb3\xa9\xa0\xebs\x93\x8b2Y\xa4t\x8f\
-\xf2\xd9\xb3\xcd\xf7G\x1f<\x98\x80\x80\x88\xa1\xf9\xa8\xd8\
-\xdc\xcep\xfe\xb3D\xbaA\x01\x00\x00d\xc0\x18\xf1\x9f\
-\xb6\x15\xf7Y\xeey\xca\x8c\xda0\x9a\x0c\xe8;w*\
-\xe7\x88#\x08\x0a\x88h\xdc;\xdd\xe3\x81\x16\x86\xf3k\
-\xc5\x02\x96W\x00\x80\xaa1H\xfc\x9bmE~T&\
-\xbd\xd2\xb5}\xfb\xaaTE\x85\xd1WFS\xd5\xaa\x11\
-\x18\x10\xd1\x987\x885\xec\x0c\xe7\x9b\xc4<\x96U\x00\
-\x80\xec\xd0)\x91\xbeioU\xb1\xef.\xbe\x90\xc9\x02\
-\xd6\xb1\xa3J\x1al\xc3\x98\xd2\xaf\x9c\x12\x1a\x10\xd1\x80\
-\x92\x80U\x81}\xc1\xfcK\xf1<\x96R\x00\x80\xec\xd3\
-R|\xc3\xb6\x90\xde\xdc=g\xe9{!k\xd5J9\
-\x9b7\x9b{e\xb4S'\xc2\x03\x22\x06\xea9v\xee\
-\x9a\xeb\xbbLg\xb2\x84\x02\x00\x04G\xb9\xf8\x9cm\x0b\
-\x80>gyG&\x0bZ\xfd\xfa\xcaY\xb1\xc2LH\
-\xbf\xfcrZ/\x22b \xee\x16O\xb53\x9c\xeb;\
-LcX:\x01\x00\x82\xa7\x9e\xf8\x84m\x0bA\x99\xf8\
-\x83L\x16\xb7\xd2R\xe5\x5cp\x81\x99\x90\xae\xdb=\xe6\
-\xe7\x13(\x101\xab=\xceO\xb07\x9c\x9f\xc8\x92\x09\
-\x00`\x8e\xd2D\xbaM\x96U\x0bB\xa1\xb85\x83\x05\
-.YX\xa8\x9cY\xb3\xcc\x84\xf4\xe1\xc3\x09\x15\x88\x98\
-\x15_\x11{\xd9\x19\xce\xff,\xf6c\xa9\x04\x000\x8f\
-n\x93u\xb5\x85\x0b\x83Z\xa8C\xb7\xdf\xc5.?_\
-%'M\x0a>\xa0\xef\xda\xa5\x9c\x16-\x08\x17\x88X\
-%\x9f\x12\xdb\xda\x19\xcew\x8b\x1dY\x22\x01\x00\xc2\xc5\
-\xbaWG\xb5\x93\xdcs\x99\xbe\x17\xbe\xa1C\xd3\x97:\
-\x83\xec\xea\xb2z\xb5JU\xafN\xc8@\xc4\x8c\xfc\x95\
-Xng8\x7fA<\x8ce\x11\x00\xc0\x0e\xa6\x88\x9f\
-\xda\xb6X\xf4\x10_\xcad\x01<\xfah\xe5\xec\xd8\x11\
-\xecN\xfa\x94)\x04\x0dD\x8cS\x8f\xf3_$\xd2\xc7\
-\x1f\x01\x00\xc0\x22\x86\x89\x1f\xd8\xb6h\xb4\x10\x1f\xcfd\
-!l\xdf^9[\xb6\x04\x1b\xd2{\xf4 p \xa2\
-g7\xda\xd9\xe3\xfc\xdf\xaf\x83\x16\xb2\x0c\x02\x00\xd8I\
-\x97\x84\x85\x0f\x1a5\x12\xef\xc9\xe4\xf2h\xb3f*\xb5\
-qcp\x01}\xd3&\xe5\xd4\xaeM\xf0@\xc4\x83\xd7\
-\x22{{\x9ckW%x\x1d\x14\x00\xc0z\xf4\x83F\
-\xaf\xd9\xb6\x88\xd4p\x7f\x1a\xf6\xbd8\xea\x00\xbdlY\
-p\xe7\xd1/\xbcP9\x05\x05\x84\x10D\x8cZ\x8f\xf3\
-/\xc4\x05,y\x00\x00\xd1A\xf7J\x7f\xcc\xb6\x05E\
-\xff4\xbc!\x93E\xb2\xa4$\xdd\xc3<\xa8\x9d\xf4\xb1\
-c\x09\x22\x88\xf85\xdf\x10\x07\xd9\x19\xce?\x16'\xb0\
-\xd4\x01\x00D\x0f+{\xa5kg\x89{\xfd.\x96\x85\
-\x85*9}z0\x01]w\x8d\xe9\xd8\x91@\x82\x88\
-\xff\xf1wb7;\xc3\xf9\xdf\xc4\xa1,q\x00\x00\xd1\
-E\xf7J\xbf\xc6\xc6\x90>\xc6}\x81\xcf\xd7\xa2\x99\x97\
-\xa7\x9c\xd1\xa3\x83\x09\xe9\xfa\xac;\xe7\xd1\x11Q|D\
-lfg8\x7f_\xec\xcc\xd2\x06\x00\x10}\xf2\xc5m\
-6\x86\xf4c\xc573Y@\x87\x0c\x09\xa6W\xba>\
-F\x93\x9fO@A\xcca\x7fio\x8f\xf3w\xc4\xf6\
-,i\x00\x00\xf1bQ\x22}\xa9\xc8\xaaE\xa7\x8b\xf8\
-|&\x0bi\xb7n*\x15D\xaf\xf4\xe3\x8f'\xa4 \
-\xe6\xa87\x8bev\x86\xf3g\xc5\xc6,c\x00\x00\xf1\
-d\xac\xf8\x91m\x8bO\xb9\xbbk\xe5w1M\xb5l\
-\x99n\x95\x98\xed\xf3\xe8\xba\x07;a\x05\x91\x1e\xe7v\
-x\xa7X\x83\xe5\x0b\x00 \xde\x0c\x14\xffl\xdb\x22T\
-[\xbc=\x93\x85\xb5aC\xe5\xacZ\x95\xdd\x90\xben\
-\x9dr\xca\xca\x08-\x889\xe2r1\xcf\xcep\xfe]\
-\xb1\x88e\x0b\x00 7\xe8\x90H\x9fg\xb4j1\xaa\
-&^\x9b\xc9\x02[\xab\x96r\x96.\xcdnH\x9f7\
-/})\x95\xf0\x82\x18\xeb\x07\x88\xe6\xda\xfb\x00\xd1\xba\
-\x04\x0f\x10\x01\x00\xe4\x1c\xbaW\xfa\xc3\xb6-Jz\x17\
-\xeb\x92L\x16\xdb\xe2\xe2t\xa8\xcefH\x1f6\x8c\x10\
-\x83\x18S\xdf\x11G\xd9\x19\xcc?\x15\xcfd\x89\x02\x00\
-\xc8]\x8a\xc5\x9bl\xdc=\xca\xa4WzRw`9\
-\xfd\xf4\xec\x05\xf4]\xbb\x94\xa3\xcf\xb9\x13f\x10c\xe5\
-Kb\x0f;\xc3\xf9\x07\xe2q,M\x00\x00\xa0\x7fB\
-\xddhcH?\xde\xdd\xe5\xf2\xdd+}\xc2\x84\xec\x85\
-\xf4\x95+U\xaazuB\x0dbL|Zlgg\
-8\xdf+veI\x02\x00\x80\xfd9/aa\x1bF\
-\xbd\xcb\xf5b&\x0b\xf1q\xc7e\xafW\xfa\xcc\x99\x04\
-\x1b\xc4\x18x\x9f\xbd=\xce_\x15[\xb2\x0c\x01\x00\xc0\
-\x81\x18/\xfe\xd3\xb6\xc5\xab\x85\xf8X\x86\xbd\xd2\x9dl\
-\xf5J\xe7<:b\xa4\xd5]\xa2j\xd9\x19\xce\x1fI\
-\xa4\xef\x04\x01\x00\x00|#}\xc4?\xda\xb6\x885\x14\
-\xef\xcedan\xdbV9[\xb6T9\xa0\xa7**\
-\x94\xd3\xba5A\x071\x82^\xe5v\x89\xb20\x9c\xdf\
-\x9aH\xdf\x05\x02\x00\x008$\xad\xc5\xd7m[\xccj\
-\x887d\xf2\xa0Q\xd3\xa6\xe9\xde\xe6Y\xe8\x8f\x9e\xa4\
-?:b\xa4\x5cg\xef\x03DW\x88\x05,7\x00\x00\
-\xe0\x87\xfa\xe2\xa3\xb6-jz\xa1\xdd\x90\xc9B]\xbf\
-\xberV\xac\xa8zH_\xb0@9\xba[\x0c\xc1\x07\
-\xd1\xfa\x1e\xe7\xb3\xec\x0c\xe6_&\xd2w~\x00\x00\x00\
-2\xa2\xa6x\xafm\x0b\x9c\xee\x95\xbe$\x93E\xbb\xb4\
-T9\x8b\x16U=\xa4\x9fp\x02\x01\x08\xd1b\xdf\x17\
-\xcf\xb43\x9c\x7f.\x9e\xc5\xd2\x02\x00\x00UE?3\
-}\xbd\x85\x0b\x9d\x9a\x22\xee\xf1\xbbxW\xabV\xf5\x07\
-\x8dtw\x98\x8e\x1d\x09B\x88<@\xe4\xc7\x8f\xc4\xb1\
-,)\x00\x00\x90M\xacl\xc38@|-\x93\x07\x8d\
-\xce8\xa3j\x97F7mRN\x9d:\x04\x22D\x8b\
-|A\xecfo\x8f\xf3.,#\x00\x00\x10\x04'\x8b\
-\x1f\xdb\xb6\xf8u\x10\x9f\xc9\xe4A\xa3\xd1\xa3\xab\xb6\x93\
-\xbex\xb1r\x0a\x0b\x09F\x88\x16\xa8[\xb16\xb7\xb7\
-\xc7y\x0b\x96\x0f\x00\x00\x08\x92~\xe2\x9fl[\x04\xf5\
-\xe3#\xbf\xcada\x1f5\xaaj\x0f\x1a\x8d\x1dK8\
-B\x0c\xd9{\xdcV\xac\x16\x86sz\x9c\x03\x00\x801\
-\x8e\x14\xdf\xb3m1,\x13\x7f\x98\xc9\x02\xdf\xb3\xa7r\
-v\xed\xca\xfc<\xfaQG\x11\x92\x10C\xf2\xfbn\x0b\
-V\x0b\xc39=\xce\x01\x00\xc08\x8d\xc5gl[\x14\
-\x8b\xc4\x8aL\x16\xfa\xa3\x8fV\xa9\x9d;3\x0b\xe9\x9b\
-7+\xa7^=\xc2\x12\xa2a\xb7\x8a\x85v\x86\xf3\xca\
-\x04=\xce\x01\x00 $J\xc5\x9f\xd9\xb68\xea6\x8c\
-\x8b2y\xd0\xa8M\x9b\xcc_\x1d]\xb6L\xa5t\x87\
-\x18B\x13\xa2\x11\x17\xb9s\xdd\xb2\xfa\xa3/\xd2\xd3\xe3\
-\x1c\x00\x00BG\xef\x12}\xdb\xc2\x1d,59\x836\
-\x8c\xfa\xd5\xd1\xd4\xfa\xf5\x99\x85\xf4\xe9\xd3\x09N\x88\x01\
-\xbbW\x9ci\xe7\xae\xf9\xa7\xe2T\x96\x04\x00\x00\xb0\x85\
-<q\x9d\x8d!}\x8c\xf8n&\xaf\x8e\xaeZ\x95Y\
-H\x1f0\x80\x10\x85\x18\x90\xbb\xc5\x89v\x86\xf3\x0f\xc5\
-\x13X\x0a\x00\x00\xc0F\xceN\xa4_\xca\xb3j\xf1\xec\
-%\xbe\xe27\x0c\xd4\xaa\xb5\xef\xd8\x8a\xef\xfe\xe8\xfa\x1c\
-{\xf3\xe6\x84)\xc4,\xfb\xa68\xd8\xcep\xfe{\xb1\
-\x07\xe5\x1f\x00\x00l\xe68\xf1\x03\xdb\x16\xd1f\xe2#\
-~CAI\x89r.\xb8\xc0wHO\xae]\xab\x9c\
-\xb22B\x15b\x96\xd4\xef\x1c\xb4\xb73\x9c\xffNl\
-J\xd9\x07\x00\x80(\xa0_\xcc\xdbk\xdbbZG\xfc\
-\xa9\xdf3\xe9\xfa\xe2\xe7\xbcy\xfe\x8f\xba,X\xa0\x1c\
-\xfdb)\xe1\x0a\xb1J\xde\xef\xbes`a8\xd7=\
-\xce\xebR\xee\x01\x00 J\xb4\x15\xdf\xb2mQ-u\
-\xfb&\xfb\x09\x08I\x1d\xb4\xa7N\xf5\x1f\xd2\xf5K\xa5\
-\x04,\xc4\x8c\xbdWl`g8\xbfG,\xa3\xcc\x03\
-\x00@\x14i$>e\xdb\xe2\xaa\xfb&_\xe17,\
-\xe4\xe5)g\xc2\x04\xff\x8f\x18u\xeaD\xd0B\xcc\xc0\
-\x1f\x8b\xb5\xec\x0c\xe7\xdf\x13\x8b(\xef\x00\x00\x10e\xf4\
-Kz7\xd9\xb6\xc8f\xd4+]\x87\xf4\xf1\xe3\xfd]\
-\x1a\xdd\xb4I9u\xeb\x12\xb8\x10}\xf8m\xf7\xd11\
-\x0b\xc3\xf9\x12J:\x00\x00\xc4\x05\xdd\x86q\x93\x85\x8b\
-\xad\x9a\xe1\xf6U\xf6\x15 \x86\x0f\xe7\x11#\xc4\x80\x5c\
-i\xe7\x03D\x9f\x893(\xe5\x00\x00\x10G\xf4\x0b{\
-_\xd8\x16\xd2\x8f\xcf\xa0Wzj\xe0\xc0\xf4\x11\x16\xaf\
-!}\xda4\xc2\x17\xe2!<\xc7\xce]\xf3\x7f\x8ac\
-)\xdf\x00\x00\x10g&\xb8\x0b\x9eU\x8bp?\xf15\
-\xbf\x81b\xd0 \x7f!\xbdwoB\x18\xe27\xbc\x0e\
-:\xcd\xcep\xfe'\xb17e\x1b\x00\x00r\x81\xbe\xee\
-\xc2g\xd5b\xdcA|\xceo\xb8\xe8\xd1C9\xbbv\
-y\x0b\xe8\xf2\xff/\xd5\xa6\x0d\x81\x0cq?\xf5\xafW\
-\xa3\xec\x0c\xe7\xbb\xc5\x8e\x94k\x00\x00\xc8%\x8e\x14\xdf\
-\xb3mQ>B|\xd4o\xc8\xe8\xdcY9;vx\
-\xbb4\xbaa\x83J\xd5\xa9C0C\x14_\x17\xfb\xdb\
-\x19\xce\x9f\x17\x9bP\xa6\x01\x00 \x17\xd1\x0b\xe0\xb3\xb6\
--\xceu\xc5\xbb\xfc\x86\x8dv\xed\x94\xb3m\x9b\xb7\x9d\
-\xf4\xc5\x8bU\xb2\xb0\x90\x80\x869\xed\x8bb7;\xc3\
-\xf9Cb\x1d\xca3\x00\x00\xe42\xfa\xb1\x8f_\xd8\xb6\
-H\xd7\xc8\xe0A\xa3}\xc7W\xb6n\xf5\x16\xd2'O\
-&\xa4a\xce\xfa\xb4\xd8\xc6\xcep~K\x22\xdd\x1a\x16\
-\x00\x00 \xe7\xd1\x0b\xe2\xcd\xb6-\xd6\xd5\xc4\xff\xf1\x1b\
->\x9a5S\xce\xe6\xcd\xdeB\xfa\x80\x01\x845\xcc9\
-\x1f\x13\x9b\xd9\x19\xce\xaf\x13\x0b)\xc7\x00\x00\x00\xffE\
-\xf7J_e\xdb\xa2\xad\xfb1_\xe27\x844i\xa2\
-\x9c\xf5\xeb=]\x1au\xb84\x8a9\xe4\x1dbm\xfb\
-\x82\xf9\x97\x09\x1e \x02\x00\x008(V\xf6J_(\
-&\xfd\x84\x91\xf2r\xe5\xac[w\xe8K\xa3\x1b7*\
-\x87K\xa3\x98\x03\xfeX\xaci_8\xff\x5c\x9cG\xd9\
-\x05\x00\x0084'\x8b\x1f\xdb\x16\xd2'\x89{|\x86\
-\xf4\x94\x87\x9d\xf4\xe4\xc2\x85\xca)( \xc4al\xd5\
-\xf79J\xec\x0b\xe7\x1f\xbb\xb5\x06\x00\x00\x00<\xd2S\
-\xfc\xbdm!}\x80\xf8\x86\x9fpR\xaf\x9erV\xaf\
->\xf4q\x973\xcf$\xc8a,\xdd.\x16\xd8\x17\xce\
-\xff\xe8\xd6\x18\x00\x00\x00\xf0IK\xf15\xdbB\xfaQ\
-\xe2K~\xba\xbbHHOy\x09\xe9\x03\x07\x12\xe80\
-V\xaev\xefqX6\x87\xdf\x14[S^\x01\x00\x00\
-2\xa7\x9e\xf8\x88m!\xbd\xad\xf8\xac\x9f\xb0R\xb7\xae\
-rV\xad:\xf4\xa5\xd1\xb6m\x09v\x18\x0b\xcf\xb1\xb3\
-S\xcbsbc\xca*\x00\x00@\xd5\xd1m\x18o\xb1\
-m\xb1?\xdc\xef\xab\xa3\xfa2\xe8!B:\x97F1\
-\xea&\xed\x0d\xe7\xf7&\xd2\xef.\x00\x00\x00@\x96(\
-\x10+m[\xf4\x1b\x8a\xbf\xf4\x13`j\xd5R\xce\xf2\
-\xe5\x07\xdfI_\xbaT9EE\x84=\x8c\x9c{\xc5\
-3\xed\x0c\xe77\x89\xd5(\xa3\x00\x00\x00\xc1\xb0\xca\xb6\
-\xc5\xbf\x8e\xf83?;\x8c5k\x1e:\xa4O\x9bF\
-\xe0\xc3H\xf9\xbe8\xd9\xcep~\xa5\xfb\x05\x1f\x00\x00\
-\x00\x02d\xaa\xf8/\x9bB@\xa9x\x93\x9f@#!\
-=y\xc9%\x07?\xee2x0\xc1\x0f#\xe1nq\
-\xac\x9d\xe1|%\xe5\x12\x00\x00\xc0\x1c#\xc4\xbf\xdb\x14\
-\x06\x8a\xc4\xab|\x86t\xe7`!\x9dK\xa3\x18\x01\xdf\
-\x11\x87\xd9\x17\xcc\xf5cg\xe7P&\x01\x00\x00\xccs\
-\x8c\xf8\x07\x9b\x82\x81\xee\xf7\xbc\xc9\xcfq\x97\xb22\xe5\
-,[v\xf0K\xa3\xba\x03\x0cA\x10-\xf4u\xb1\xaf\
-}\xe1\x5c\xff\xba6\x99\xf2\x08\x00\x00\x10\x1e\xcd\xc5W\
--\x0b\x08\xfb\xbaXx\x0e:5j\xa8\xd4\x92%\x07\
-\xbd4\x9a\xaaV\x8d@\x88V\xf9\xbc\xd8\xce\xbep\xfe\
-\x818\x98\xb2\x08\x00\x00\x10>\xba\xaf\xf1s\xb6\x85\xf4\
-9n\xcb9\xcf\xc7]\x0evqt\xf2dB!Z\
-\x15\xce\xdb\xdb\x17\xce\xff,\xf6\xa5\x1c\x02\x00\x00\xd8C\
--\xf1>\xdbB\xfa\xa9nw\x0bO\xc1\xa7\xac\xec\xe0\
-\x17G\x87\x0c!\x1cb\xe8>-\xb6\xb0/\x9c\xcbw\
-\xe1Dg\xca \x00\x00\x80}\xe8Vj\xffc[H\
-\x1f.\xbe\x9b\x85\x9d\xf4TE\x85r\xda\xb5#$b\
-h>(6\xb2/\x9c\xffNlB\xf9\x03\x00\x00\xb0\
-\x97\xbc\x84\x85\xbd\xd2\xfb\x89oz\x0dB\xf5\xea)g\
-\xed\xda\x03\xef\xa2\xaf_\xcfK\xa3\x18\x8a\xbfv\x1f\xe6\
-\xb2ln=&\xd6\xa5\xec\x01\x00\x00D\x83\xf9\x89t\
-\xab5k\xc2D/\xb7\xeb\x85\xa7@\xa4;\xb7\xacY\
-s\xe0\x90\xae\xbb\xbepi\x14\x0dz\xbf\xd8\xc0\xbep\
-~\xb7XJ\xa9\x03\x00\x00\x88\x16\x13\xc4\x8fm\x0a\x15\
-]\xc5\x97<\x86\xa2\xd4\xc1v\xd2\xe7\xccQN^\x1e\
-\xe1\x11\x03\xf7\xe7bm\xfb\xc2\xf9\xcdb5J\x1c\x00\
-\x00@4\x19\x9aH\xb7^\xb3&\x5c\xb4s\xbb`x\
-\x0aH\x8d\x1a\xa9\x94>\xd6r\xa0\x90>z4\x01\x12\
-\x03\xf5.\xb1\x96}\xe1\xfc\xdb\x89\xf4}\x13\x00\x00\x00\
-\x880}\xc4\xbf\xd8\x142:\x88\xbf\xf5\x1a\x94\xca\xcb\
-Uj\xc3\x86\xaf\x07\xf4\xcaJ\xe5\xf4\xe8A\x90\xc4@\
-\xbc\xdb\xce\x9d\xf3\xcb\x13\xe9{&\x00\x00\x00\x10\x03:\
-\x8a{l\x0a\x1b\x87\x8b\x8f{\x0dLM\x9b*g\xf3\
-\xe6\xafwv\xd9\xb1C9\xcd\x9a\x11(1\xab\xde*\
-\xd6\xb0+\x98\x7f)\x9eK\x19\x03\x00\x00\x88\x1f\xcd\xc4\
-\xd7l\x0a\xe9\x8d\xdc\xee\x18\x9e\x82\xd3\xe1\x87\x1f0\xa4\
-\xef;\xa7\xae\xdb3\x12,1\x0b\xde,\x96\xd8\x15\xce\
-?\x13\xa7R\xbe\x00\x00\x00\xe2KS\xf1\x05\x9bBz\
-\xb9\xdb_\xdaS\x80j\xd1B9[\xb7~=\xa4/\
-Z\xa4\x92\x85\x85\x04L\x8c\xdb\xce\xb9\x0e\xe7gR\xb6\
-\x00\x00\x00\xe2O\x99\xf8K\x9bBz-\xf7B\x9e\xa7\
- \xd5\xaa\x95r\xb6m\xfbzH\x9f:\x95\x90\x89\x19\
-{\x9dXdW8\xff\xa7x\x02\xe5\x0a\x00\x00 w\
-(\x16\x7fdSH\xd7;\x97\xb7x\x0dT\x9d;+\
-g\xd7\xae\xaf\x87\xf4\xfe\xfd\x09\x9b\xe8\xdb\xff\xb1/\x9c\
-\xeb\xceK\x83(S\x00\x00\x00\xb9\x87\xee\xa3|\x93M\
-!\xbd\xd4=f\xe0)Xu\xeb\xa6R\x15\x15_\xbd\
-4\xaa\xff\xfb\xf6\xed\x09\x9d\xe8\xd9\xeb\xed\x0b\xe7\x7f\x15\
-\xfbS\x9e\x00\x00\x00r\x17\xdd\xb2m\xb3M!]\x87\
-\xa5k\xbd\x06\xac\x01\x03\xbe\xbe\x8b\xae/\x926lH\
-\xf8\xc4C\xfam\xb1\xc0\xaep\xbe7\x91\xee\xb8\x04\x00\
-\x00\x00\x90X\x92H\xb7r\xb3\x22\xa8\xe8\xd0t\xa5\xd7\
-\xa05j\xd4\xd7\xdb/\xaeX\xa1\x9c\x92\x12B(F\
-i\xe7\xfc-\xb1\x05\xa5\x08\x00\x00\x00\xf6gZ\x22\xdd\
-5\xc2\x9a\x90~\x85\xd7\xc05a\xc2\xd7w\xd2\xcf:\
-K9yy\x84Q\xfc\x9a\xdf\xb1/\x9c\xeb\xceJM\
-(A\x00\x00\x00p N\x12?\xb6)\xa4Wz\x09\
-]:\x88O\x99\xf2\xf5\x90>f\x0c\x81\x14\xbf\xe2w\
-\xed\x0b\xe7O\x8a\xf5(=\x00\x00\x00p0\x86\x8a\x1f\
-\xda\x14\xd2+\xbc\x84\xaf\xfc|\xe5\xcc\x9e\xfd\xd5\x80^\
-Y\xa9\x9cc\x8e!\x98\xe2>o\xb0/\x9c?\x22\xd6\
-\xa6\xe4\x00\x00\x00\x80\x17\x06\x8a\x7f\xb3%\xc8\x14\xb9\xad\
-\xf0\x0e\x19\xc2\x8a\x8a\x94\xb3p\xe1WC\xfa\x8e\x1d\xca\
-i\xde\x9c\x80\x9a\xe3\xfe\xc8\xbe\x17B\x1f\x12kRj\
-\x00\x00\x00\xc0\x0f\xba\x9bD2a\xd1N\xfaN/a\
-\xaczu\xe5,]\xfa\xd5K\xa3\xeb\xd7\xabT\x9d:\
-\x04\xd5\x1c\xf5F\xb1\x9a]\xe1\xfc\x8eD\xfa-\x02\x00\
-\x00\x00\x00\xdf\xb4\x13\xf7\xd8\x14\xd2wx\x08d\xc9\xb2\
-2\xe5\xe8N.\xfb\x87\xf4\xc5\x8bU\xb2\xb0\x90\xc0\x9a\
-c\xea\xbe\xfa\xd5\xed\x0a\xe7\xb7'\xd2o\x10\x00\x00\x00\
-\x00dL[q\xb7-\x01\xa7\xd0\xed_}\xc8pV\
-\xb7\xaer.\xbb\xec\xab\xc7]\xce<\x93\xd0\x9aC\xde\
-)\x96\xd9\x15\xce\xe5\x1f\x89\x9ds\x00\x00\x00\xc8\x0e\xcd\
-\xc47\x12\x89\x88\xb5`l\xd2$\xfdp\xd1\xfe!\xfd\
-\xd8c\x09\xaf9\xe0]bM\xbb\xc2\xf9\x8f\x13\xec\x9c\
-\x03\x00\x00@\x96\xd1\xad\xe0~cK\xe0\xc9\x13\xd7{\
-\x09k\xed\xda\xa9\xd4\xce\x9d\xff\x0d\xe8\xbbv\xed\xfb\x7f\
-#\xc4r!\xd4\xa0\xd7\x8b\x05\x94\x10\x00\x00\x00\x08\x82\
-:\xe2c\x91\x0b\xe9]\xba(\xa7\xa2\xe2\xbf!\xfd\xf2\
-\xcbU\xb2Q#\xc2l\x0c\xbd]\xacaW8\xaf\x14\
-\xf3(\x1d\x00\x00\x00\x10$\xb5m\x0a\xe9\xf9\x1e/\x8e\
-:\xc3\x86}\xf5\xa8\x8b\xbeDZRB\xa8\x8d\x91\xf7\
-\x8a\xb5\xed\x0a\xe7\xd7\x8a\xf9\x94\x0c\x00\x00\x000A\xa9\
-x\x9fM!\xdd\xd3\x8b\xa3\x13'~5\xa4\x9f{n\
-\xfa\x81#\xc2m\xe4}@\xackW8\xbf2\xc1\xce\
-9\x00\x00\x00\x18F_x\xbb\xcd\xa6\x90\xbe\xebPA\
-./\xef\xeb\xaf\x8d\x9et\x12\x017\xe2>(\xd6\xb7\
-+\x9c\xaf\xa1<\x00\x00\x00@X\xe8\x8bo\xdf\xb1%\
-\x18\xe9\xee.Wzymt\xd1\xa2\xaf\x86\xf4\xbe}\
-\x09\xba\x11\xf5I\xb1\xb1]\xe1|\x09e\x01\x00\x00\x00\
-\xc2F\xff\x8c\xbf\xcb\xa6\x90~\xd5\xa1\x82]i\xa9J\
-\xad\x5c\xf9\xdf\x80\xbec\x87rZ\xb4 \xf0F\xcc\xe7\
-\xc5\x16\x84s\x00\x00\x00\x80\x03\xa2/\xc2]aKP\
-*\x16o9T\xc0k\xd0@9\x1b7\xfe\xf7\xa5\xd1\
-\x0d\x1b\x94S\xa7\x0e\xc17\x22\xbe&v\xb6+\x9c\xaf\
-\xa6\x0c\x00\x00\x00\x80m\xe8\x9d\xf4u\xb6\x04&\xdd\x07\
-\xfb\xc7\x87\x0az\xcd\x9b\xab\xffk\xef\xfec\xed\xae\xeb\
-;\x8e\x7fo\x7f\xd1\xd6\xda\x9f\x16\x1a\x1bhK\xaf\xa6\
-\x19\xb8D\xaa-m\x88s\xcd\xbaF\x94\x15\x9dT\xc6\
-\xa6\x80\xa3\xb9\x13\x7f\xc4\x94\x8b\xd8\xc9\xc0\x16*k\xb5\
-+\xed\xed6\xdc2\xe6\xb6f,\xe0d\xd9\x961A\
-\x13\xc1X\x7f!n\xc8HQA\x84\xdes\x8d\x1a\xa3\
-\x9bf*\xb4_\xdf\xdf\x9d\xe3N[\xee\xbd\xed\xed\xfd\
-\xf1\xf9\x9cs\x1e\x8f\xe4\xf5o\xd3\x9c\xf3=\xc9\xb3\xa7\
-\xdf\xf3\xf9\xd6\xf6\xeci~\x93\xfe\xfe\xf7\x97\x03\xd3\xa6\
-\x09\xe0\xcc\xf7\xcd\xd8\xab\xf3\x8a\xf3\x9d>\xfe\x00@\xce\
-\xae\xcf%\x9c\xa6\xc7\xee\x19\xe9\x19\xe9W^)\x823\
-\x8f\xf3W\xf9A(\x00\xc0\x88\xf5\x16\xad\xf4M\xfa\xba\
-u\xc7\xffht\xfdz1\x9c\xe1\x9e\x8e\xbd&\xaf8\
-\xbf\xd5G\x1d\x00h%7\xe5\x12R\xd5\xc3k\xee\x1f\
-\xc9\x19\xe9\xfb\xf7\x97\xb5\xf3\xcf\x17\xc5\x19\xedp\xec\xcd\
-y\xc5y\xf5\xc3h\xe7\x9c\x03\x00-gK.A5\
-;v\xdf0\x01\xd8_=\xb0\xe8\x1d\xefhF\xfa\xae\
-]em\xe1Bq\x9cI\x9co\xca+\xceo\xf3\xd1\
-\x06\x00Z\xd9{cGs\x89\xf4O\x9e\xec\x8c\xf4\xf7\
-\xbd\xaf\x19\xe9\xdb\xb7\x97\xb5Y\xb3Dr\xe2]\x9dW\
-\x9c\xff\xb1\x8f4\x00\xd0\x0e\xfe \x97H_\xd0x,\
-\xfc\x90A8gNY\xdb\xb1\xa3\x19\xe9\xef~w\xfd\
-\xdbu\xa1\x9cd[\xdc\xd6\x02\x000nzr\x89\xf4\
-\x85\xb1\x07\x87\x89\xc2\x81\xee\xee\xb2\xb6wo3\xd27\
-n\x14\xcb\x09vc^q\xde'\xce\x01\x80vt]\
-.\xc1uN\xec\xcb\xc3\x05\xe2\xaaU\xc7\x9f\xec\xb2f\
-\x8dh\x9e\xc0\xed\x8fM\xca'\xce?V\xd4\x1f\xc6\x05\
-\x00\xd0\x966\xc7\x8e\xe4\x10^K\x1a\x8f\x8b\x1f2\x14\
-/\xbd\xb4\x19\xe8\xb7\xdf^\xd6\x96.\x15\xcf\x13\xb0;\
-c\x93\xf3\x89\xf3?+|s\x0e\x00t\x80kr\x89\
-\xf4\x15\xb1\xc7\x87\x8a\xc5\xae\xae\xb2\xbf\xa7\xa7\x19\xe9\x1f\
-\xfaP\xfd\x1eu\x11=n\xfb\xe7\xc6\x03\xa62\x89\xf3\
-;\xc49\x00\xd0I~?\x97H_\xd9xB\xe5\xa0\
-\xf7\xa3O\x9f^\xd6>\xf0\x81f\xa4_w]Y\x9b\
-2EL\x8f\xc3\x1e\x8a\xcds[\x0b\x00@R\xef,\
-2\xf9\xe1\xe8\xebb\xcf\x0e\x15\x8f\x0b\x16\x94\x03;w\
-6#}\xd3&A=\xc6{4\xb64\x9f8\xbf'\
-6\xc5\xc7\x13\x00\xe8To/2\xf9&\xfd\x8d\x8d\x87\
-\xe2\x0c\x1a\x91\xcb\x97\x1fw\xb2K\xff\xda\xb5\xc2z\x8c\
-v\xa8q\xabQ&q~wl\xb2\x8f%\x00\xd0\xe9\
-\xdeUd\xf2M\xfaU\xc3\xc5du\x92K#\xd0\x07\
-\xaaX\xf7\xa3\xd1Q\xef\xe9\xd8\xda|\xe2\xfc\xbe\xd84\
-\x1fG\x00\x80\xba\xf7f\x12ie\xef0A\xd9_\xdd\
-\xde\xe2G\xa3c\xb2\xea\x7f+~+\x9f8\x7f(6\
-\xd3\xc7\x10\x00\xe0x\xd9\x9c\x93\xbem\xa8@\xaf\x9e*\
-\xfa\x9e\xf74\xbfI\xef\xed\xf5\xa3\xd1\xd3\xdc\x95\xf9\xc4\
-\xf9\xc3\xb19>~\x00\x00\x83\xdb\x99C\xb4U\xe7p\
-\xff\xd5Pq9sfY\xbb\xf9\xe6f\xa4_~\xb9\
-\xe0\x1e\xe1\xb6\xe7\x13\xe7\xdf\x8c\xbd\xd4\xc7\x0e\x00`x\
-;r\x88\xb7\xa9\xb1\x03CE\xe6\xe2\xc5\xe5@\xf5\xf0\
-\xa2_\xde\xeeR=yTx\x9f\xd2\xf6\xc4\xba\xf2\x88\
-\xf3\xa7b\x8b}\xdc\x00\x00NM\x16\xdf\xa4\xcf\x88\xfd\
-\xd3P\xb1\xb9re3\xd0\xf7\xed+\x07\xba\xbb\x05\xf8\
-Iv\xa0\xf1\x0f\x9f\x0c\xde\xdb\xf8\xeb\x14\xcb}\xcc\x00\
-\x00N]\xf5\x04\xc7?\xcd!\xd2g\xc7\x1e\x18*:\
-/\xbb\xacy\xab\xcbm\xb7\x95\x03s\xe7\x0a\xf1!\xf6\
-/\x8d\x7f\xf0d\xf0\x9e~?v\xbe\x8f\x18\x00\xc0\xe9\
-E\xfa\x1d9D\xfaY\xb1/\x0c\x16\x9e\x93'\x97\xb5\
--[\x9a\xdf\xa4\xf7\xf6\x96\xfd~4\xfa\x82}66\
-?\x8f8\xff\xef\xd8\xab}\xb4\x00\x00N_\xf5\xd0\x98\
-\xbbs\x88\xf4\x97\xc5\x1e\x1f,@\xe7\xcf/k\xbbv\
-5#\xbd\xfaV]\x94\xff\xff\x1e\x8b-\xcf#\xce\x7f\
-\x1a\xfbM\x1f)\x00\x80\xd1\x9b\x1a\xbb7\x87H_\x1d\
-\xfb\xd6`!\xfa\xf2\x97\x97\xb5\xbe\xbef\xa4_x\xa1\
-8o<\x88hU\x1eq\xfe\x5c\xec\x8d>J\x00\x00\
-c\xa7\xfa&\xfd\x1fr\x88\xf4\xf5\xb1g\x07\x0b\xd2\x0d\
-\x1b\x9a\x81^\x9d\xf0r\xf6\xd9\x1d\xff \xa27\xe4\x13\
-\xe7o\xf2\x11\x02\x00\x18{\xd3c\x0f\xe4\x10\xe9\xd7\x0e\
-\x16\xa5]]em\xf3\xe6f\xa4Wg\xa5\xcf\x98\xd1\
-\xb1\x81~C\x1eq~4v\xad\x8f\x0e\x00\xc0\xf8\x99\
-Q\xd4\x1f\xcb\x9e<\xfen\x1e,L#\xc8\x07\xb6m\
-kFzOO=\xdc;,\xce\xf7\xe5s\xd6\xf9u\
->2\x00\x00\xe3\xafz,\xfb#\xa9\xe3oR\xec/\
-\x86x\x88Qm\xcf\x9ef\xa4\xaf[\xd7Qq\xfe\xf1\
-|\xce:\xdf\xed\xa3\x02\x000q\xce\x8c=\x91:\x02\
-\xcf\x18\xeaAF\x17]\xd4<\x1f}\xef\xde\xb2\xb6d\
-IG\xc4\xf9\xc1\xd8\xbc<\xe2\xfco\x8b\xfa1\x9d\x00\
-\x00L\xa0s\x8b\xfa\x13!\x93\xc6\xe0\xbc\xc69\xdf/\
-\x08\xd6+\xaeh~\x8b~\xeb\xade\xedE/j\xeb\
-8?\x14\xeb\xce#\xce\xef/\xea'\xff\x00\x00\x90\xc0\
-+b?H\x1d\x85\xe7\xc4\xfe\xf3\x84`\xad\x1eX4\
-p\xc3\x0d\xcdo\xd2\xab\x1f\x90\xb6i\x9c?\x13{M\
-\x1eq\xfe\xd5\xd8l\x1f\x0b\x00\x80\xb4\xd6\x15\xf5\x87\xd0\
-$\x8d\xc3U\x83\x9d\x91\xbepaY\xfb\xc8G\x9a\xdf\
-\xa4\xaf^\xdd\x96\x81\xbe9\x8f8?\x1c;\xc7\xc7\x01\
-\x00 \x0f\xaf\x8f\xfd<u$\xfeF\xe3\xdb\xe4\xe3\x02\
-\xf6\xbc\xf3\xca\xda\xfe\xfd\xf5@\xaf~<\xbahQ[\
-\xc5\xf9\xf6<\xe2\xfc\xbb\xb1n\x1f\x03\x00\x80\xbc\x5c\x11\
-;\x92:\x16\x7f\xefd\xf7\xa3W\xb7\xbdL\x99\xd2\x16\
-q\xfe\xb1\xc6i6\x89_\xf3\x1f\xc7V\xb9\xfc\x01\x00\
-\xf2tm\x91\xc17\xba\x7f4\xc8\xfd\xe8\xb5\xad[\x9b\
-\x91\xbeqc\xcb\xc7\xf9\xa7b\xb3\xf2xJ\xe8\x1b\x5c\
-\xf6\x00\x00y\xdb\x9e:\xd0\xab\x87\xf4\xec?1j\xcf\
-<\xb3\xec\xdf\xbd\xbb\x1e\xe8}}em\xe9\xd2\x96\x8d\
-\xf3Gb\x8b\xf2\xb8\xb5e\xb3\xcb\x1d\x00\xa05\xdc^\
-dxFz\xff\xda\xb5\xcdS]n\xba\xa9\xacM\x9d\
-\xdarq\xfed\xecW\xf3\x88\xf3\xed.s\x00\x80\xd6\
-19\xf6\x89\xd4\x11\xb9 \xf6\xf9\x13#\xfd\xaa\xab\x9a\
-\xb7\xba\x5crI\xcb\x05\xfa[\xf2\x88\xf3\xbf+<\x88\
-\x08\x00\xa0\xe5T\x0f\xab\xf9\xb7\xd41\xb9$\xf6\xd8\xb1\
-\x91[=\xb0\xa8zpQ\x15\xe8\xd5SF\xcf:\xab\
-e\xe2\xfc\xe6<\xe2\xfc\xde\xc6?\xc0\x00\x00hA\xd5\
-Ck\x1eN\x1d\x95\xbf\x1e{\xf6\xd8\xd8\xed\xee\xae\xdf\
-\x87^EzOOK\xc4\xf9?\xc6\xa6\xa6\x8f\xf3G\
-b/vY\x03\x00\xb4\xb6\x05\xb1C\xa9#\xfd\xf2\x13\
-\xa3\xf7\xe2\x8b\x9b\xb7\xba\xacX\x91u\x9c\x1f\x8c\xcdI\
-\x1f\xe7O\xc7\x16\xb9\x9c\x01\x00\xda\xc3\xb2\xd8wRG\
-\xfa\xf6c\xc3w\xf2\xe4\xb2v\xfd\xf5\xf5@\xef\xed-\
-k]]Y\xc6\xf9\x13\xb1\x97\xa5\x8f\xf3\x1f\xc6~\xc5\
-e\x0c\x00\xd0^^U\xd4\x1fj\x93,4\xab\x87\xfa\
-\xfc\xcd\xb1\x01<o^Y\xfb\xf0\x87\xb3\xfd\x16\xfdp\
-lC\x1eg\x9dop\xf9\x02\x00\xb4\xa7\xd7\xc7\x9eO\
-\x19\x9c\xd5\xc3}>}l\x08\xafYS\x0f\xf4\xb7\xbd\
--\xbb@\xef\xcd\xe3G\xa1\xefr\xd9\x02\x00\xb4\xb7\xde\
-\xd4\xd1\xb9,\xf6\xf8\xb11|\xcd5e\xff-\xb7d\
-\x15\xe7\x07b\x93\xd3\xc7\xf9G]\xae\x00\x00\x9d\xa1/\
-u\xa4_\x14{\xe6\x97A<sfY\xbb\xf1\xc6l\
-\xe2\xfc\xa1\xd8\xec\xf4q\xfe@Q?*\x13\x00\x80\x0e\
-P=\xe4\xe6@\xeaH\x7f\xeb\xb1a<gN\x16q\
-~(\xb64}\x9c\xffG\xe18E\x00\x80\x8e3=\
-\xf6\xd9\xd4\x91\xbe3\xa3\xdbZ\xfac\xeb\xd3\xc7\xf9\xe1\
-\xd8b\x97'\x00@g\x9a_$>#}j\xe3!\
-@9\x04\xfa\x1f\xa6\x8f\xf3\xea\x94\x9d\x95.K\x00\x80\
-\xce\x96\xfc\x8c\xf4\x85\xb1\x87\x13\xc7\xf9]\x8dc \x13\
-\xbe\x0eGb\xbf\xedr\x04\x00\xa0\x92\xfc\x8c\xf4\xf3b\
-O&\x8a\xf3\xaf\xc4^\x92\xfe\xdb\xf3\xad.C\x00\x00\
-\x8eU\x9d\x91\xfe\x5c\xcaH}S\x828\x7f:v\x81\
-\xe3\x14\x01\x00\xc8\xd4\x96\xc4\xa1Z\xde2\xc1\x81\xde\x93\
->\xce?W\xd4\x7f\xb0\x0b\x00\x00\x83\xda\x972X\xa7\
-\xc4>>Aq~G\xac+m\x9c\x7f+\xb6\xd0%\
-\x07\x00\xc0p&\xc5\xeeM\x19\xe9sc_\x18\xe78\
-\xffLlf\xda8\xffQl\x85\xcb\x0d\x00\x80S1\
-#\xf6\xa5\x22\xf1\x8fF\x9f\x1a\xa78\xffzly\xfa\
-\x13[6\xba\xcc\x00\x00\x18\x89\x97\x16\xf5\x87\xe6$\x0b\
-\xd9\xdf\x1d\xa7@\xbf4\xfd}\xe7\xdb\x5c^\x00\x00\x9c\
-\x8e\xea\xa19?I\x19\xb3\xbb\xc78\xce\xff$}\x9c\
-\xdf\x13\xebri\x01\x00p\xba\xde\x1c;\x9a*h\xcf\
-\x88\xdd7Fq~\x7f\xe3\xcfK\x18\xe7_\x8b\xcdr\
-I\x01\x000Z\x1fL\x18\xb5\xe5\xe2\xd8c\xa3\x8c\xf3\
-'b\xcb\xd2\xc6\xf9\xf7\x8a\xfaS[\x01\x00`\xd4\xaa\
-\x93]>\x912\xd2\xd7\xc7\x0e\x8f\x22\xd07\xa5\xffQ\
-\xe8%.#\x00\x00\xc6Ruk\xc6\xa3)#\xbd\xf7\
-4\xe3\xbc/\xfd}\xe7;\x5c>\x00\x00\x8c\x87\xead\
-\x97\xfeT\xa1;)v`\x84q\xfe`\xfa\xf3\xce\xff\
-\xb5\xa8\xff\x0f\x04\x00\x00\x8c\x8b\xb5\xb1\x9f\x16\x09\x1fb\
-\xf4\xc5S\x8c\xf3\xea\x1c\xf5\x15i\xe3\xfc\x1b\xb1\xb9.\
-\x19\x00\x00\xc6\xdb\x95\x09\xa3\xb7|e\xec\xdb\xa7\x10\xe8\
-W\xa7\x8d\xf3\x1f\xc7^\xe1R\x01\x00`\xa2\xf4\xa5\x8c\
-\xf4\x9e\x93\xc4\xf9\x9d\xe9\xef;\xff\x1d\x97\x08\x00\x00\x13\
-iJ\xec\xd3\xa9\x02\xb8+\xf6\x97C\xc4\xf9\x97bs\
-\xd2\xc6\xf9>\x97\x07\x00\x00)\xcc/\xea\xf7Y'\x09\
-\xe1\xd9\xb1\x83'\xc4\xf9\xb3\xb1\xd5i\xe3\xfc\xc1\xd8T\
-\x97\x06\x00\x00\xa9\x5c\x10\xfb\xdfTA|\xc1\x09\xf7\xa3\
-oM\x1b\xe7\xdf\x8f\x9d\xed\x92\x00\x00 \xb5\xab\x13F\
-\xf1\xff\xfd\x18\xb4\x8a\xf3\x7f\x8fMI\xf7\xf78\x1a\xbb\
-\xd8\xa5\x00\x00@.nO\x19\xe9\xbbbK\xd2~{\
-\xbe\xcd%\x00\x00@N\xa6\xc5>_$\xfc\xd1h\xc2\
-8\x7f\xa8\xa8\xffh\x16\x00\x00\xb2rV\xecp\x91\xfe\
-\x88\xc3\x89\x5c\xf5d\xd53\xbd\xf5\x00\x00\xe4\xea\xc2\xd8\
-\xcf:$\xce\x9f\x8f\xfd\x9a\xb7\x1c\x00\x80\xdc\xbd\xb3C\
-\x02\xfdFo5\x00\x00\xad\xe2\xce6\x8f\xf3\xfbb\x93\
-\xbc\xcd\x00\x00\xb4\x8aY\xb1Cm\x1a\xe7\xdf\x89-\xf2\
-\x16\x03\x00\xd0j\xce\x8f\xfd\xa4\xcd\xe2\xbc:\xef|\x83\
-\xb7\x16\x00\x80V\xb5\xa9\xcd\x02}\x87\xb7\x14\x00\x80V\
-\xd7\xd7&q~\xb0p\xde9\x00\x00m`j\xecs\
--\x1e\xe7?\x8c-\xf3V\x02\x00\xd0.\xce\x8e}\xaf\
-\x85\x03\xfd2o!\x00\x00\xed\xe6u\xb1#-\x18\xe7\
-\x7f\xed\xad\x03\x00\xa0]\xedj\xb18\x7f26\xc7\xdb\
-\x06\x00@\xbb\xaa\xeeG\xffb\x8b\xc4\xf9s\xb1U\xde\
-2\x00\x00\xda\xdd\xb9E\xfdG\x97\xb9\x07\xfaM\xde*\
-\x00\x00:E\xee\xe7\xa3;R\x11\x00\x80\x8e\xf3\xd1L\
-\xe3\xfc\x7fb\xcb\xbd=\x00\x00t\x9a3b_\xc90\
-\xd0\xdf\xea\xad\x01\x00\xa0Su\xc7~\x94Q\x9c\xdf\xe5\
--\x01\x00\xa0\xd3\xbd%\x938\xffvl\xae\xb7\x03\x00\
-\x00\x8a\xe2\xef\x13\xc7\xf9\xd1\xa2\xfe %\x00\x00 \xcc\
-\x8b=\x930\xd0\xef\xf0\x16\x00\x00\xc0\xf1^\x1b;\x92\
- \xce\x9f\x8a\xbd\xd8\xcb\x0f\x00\x00/\xb4m\x82\xe3\xfc\
-\xf9\xd8\x1a/;\x00\x00\x0c\xaez8\xd0\xc1\x09\x0c\xf4\
-]^r\x00\x00\x18\xde\xb9\xc5\xc4\x1c\xbd\xf8\xb5\xa2~\
-\x16;\x00\x00p\x12W\x8ds\x9c\xff<\xf6J/3\
-\x00\x00\x9c\xba\xbb\xc61\xd0\xb7{y\x01\x00`d^\
-\x12\xeb\x1f\x878\x7f\xacpk\x0b\x00\x00\x9c\x96\xea\xe1\
-AG\x8b\xb1=\xb5e\x95\x97\x15\x00\x00N\xdf\xde1\
-\x0c\xf4[\xbc\x9c\x00\x000:\xd5\xed(\x8f\x8eA\x9c\
-W\x7f\xc64/'\x00\x00\x8c^u\xe2\xca\xcf\x0a\xa7\
-\xb6\x00\x00@6\xb6\x8e\x22\xd0o\xf3\xf2\x01\x00\xc0\xd8\
-\x9a\x14\xfbL\xe1\xd4\x16\x00\x00\xc8\xc6\xb2bdO\x19\
-\xadNmY\xede\x03\x00\x80\xf1\xf3\xf6\x11\x04\xfa.\
-/\x17\x00\x00\x8c\xbf\xbbO!\xce\xff\xabpk\x0b\x00\
-\x00L\x88\xea)\xa3\x03\xc5\xf0\xb7\xb6\x5c\xe8e\x02\x00\
-\x80\x89\xb3\xa1\x18\xfa)\xa3\xbb\xbd<\x00\x000\xf1\xfe\
-|\x908\xffzl\x86\x97\x06\x00\x00&\xde\xcc\xd8\xa1\
-\xe2\xf8[[\xd6xY\x00\x00 \x9d\x95E\xfdI\xa1\
-U\xa0\xef\xf5r\x00\x00@z\x1f\x8c}\xa3\xa8\x7f\xa3\
-\x0e\x00\x00$6-v\x81\x97\x01\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x0e\xf2\x0b@\
-;\x84\xc7\x9dY\x0c\xd3\x00\x00\x00\x00IEND\xae\
-B`\x82\
-\x00\x00\x09\xc0\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x9c\x00\x00\x00\xb2\x08\x03\x00\x00\x00\x80\xc0V9\
-\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
-\x09pHYs\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01B(\
-\x9bx\x00\x00\x00\x07tIME\x07\xdc\x03\x09\x08\x1d\
-0D&N\xa6\x00\x00\x02\xd3PLTE\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x02\x01\x00\x03\x02\
-\x00\x04\x02\x00\x05\x03\x00\x06\x03\x00\x06\x04\x00\x07\x04\x00\
-\x08\x05\x00\x09\x05\x00\x0a\x06\x00\x0b\x07\x00\x0c\x07\x00\x0d\
-\x08\x00\x0e\x08\x00\x0f\x09\x00\x10\x0a\x00\x11\x0a\x00\x12\x0b\
-\x00\x13\x0b\x00\x14\x0c\x00\x15\x0d\x00\x16\x0d\x00\x17\x0e\x00\
-\x18\x0e\x00\x19\x0f\x00\x1a\x10\x00\x1b\x10\x00\x1c\x11\x00\x1d\
-\x11\x00\x1e\x12\x00\x1f\x13\x00 \x13\x00!\x14\x00\x22\x14\
-\x00#\x15\x00$\x16\x00%\x16\x00&\x17\x00'\x17\x00\
-(\x18\x00)\x19\x00*\x19\x00+\x1a\x00,\x1a\x00-\
-\x1b\x00.\x1c\x00/\x1c\x000\x1d\x001\x1d\x002\x1e\
-\x003\x1f\x004\x1f\x005 \x006 \x007!\x00\
-8\x22\x009\x22\x00:#\x00;#\x00<$\x00=\
-%\x00>%\x00?&\x00@&\x00A'\x00B(\
-\x00C(\x00D)\x00E)\x00F*\x00G+\x00\
-I,\x00J,\x00K-\x00L.\x00M.\x00N\
-/\x00O/\x00P0\x00Q1\x00R1\x00S2\
-\x00U3\x00W4\x00X5\x00Y5\x00Z6\x00\
-[7\x00\x5c7\x00]8\x00^8\x00_9\x00`\
-:\x00a:\x00c;\x00e=\x00g>\x00h>\
-\x00i?\x00j@\x00k@\x00lA\x00mA\x00\
-nB\x00oC\x00pC\x00qD\x00sE\x00t\
-F\x00uF\x00vG\x00wG\x00yI\x00zI\
-\x00{J\x00|J\x00|K\x00}K\x00~L\x00\
-\x7fL\x00\x80M\x00\x81M\x00\x82N\x00\x83O\x00\x84\
-O\x00\x86P\x00\x87Q\x00\x88R\x00\x8aS\x00\x8bS\
-\x00\x8eU\x00\x8fV\x00\x91W\x00\x93X\x00\x94Y\x00\
-\x95Y\x00\x96Z\x00\x98[\x00\x99\x5c\x00\x9c^\x00\x9d\
-^\x00\x9e_\x00\x9f_\x00\xa0`\x00\xa1a\x00\xa2a\
-\x00\xa3b\x00\xa4b\x00\xa5c\x00\xa6d\x00\xa7d\x00\
-\xaaf\x00\xacg\x00\xadh\x00\xafi\x00\xb0j\x00\xb1\
-j\x00\xb2k\x00\xb3k\x00\xb4l\x00\xb5m\x00\xb6m\
-\x00\xb8n\x00\xbap\x00\xbbp\x00\xbcq\x00\xbdq\x00\
-\xber\x00\xbfs\x00\xc0s\x00\xc1t\x00\xc2t\x00\xc3\
-u\x00\xc5v\x00\xc7w\x00\xc8x\x00\xc9y\x00\xcay\
-\x00\xcbz\x00\xccz\x00\xce|\x00\xcf|\x00\xd0}\x00\
-\xd1}\x00\xd2~\x00\xd3\x7f\x00\xd4\x7f\x00\xd5\x80\x00\xd6\
-\x80\x00\xd7\x81\x00\xd8\x82\x00\xd9\x82\x00\xda\x83\x00\xdb\x83\
-\x00\xdc\x84\x00\xdd\x85\x00\xde\x85\x00\xdf\x86\x00\xe0\x86\x00\
-\xe1\x87\x00\xe2\x88\x00\xe3\x88\x00\xe4\x89\x00\xe5\x89\x00\xe6\
-\x8a\x00\xe7\x8b\x00\xe8\x8b\x00\xe9\x8c\x00\xea\x8c\x00\xeb\x8d\
-\x00\xec\x8e\x00\xed\x8e\x00\xee\x8f\x00\xef\x8f\x00\xf0\x90\x00\
-\xf1\x91\x00\xf2\x91\x00\xf3\x92\x00\xf4\x92\x00\xf5\x93\x00\xf6\
-\x94\x00\xf7\x94\x00\xf8\x95\x00\xf9\x95\x00\xfa\x96\x00\xfb\x97\
-\x00\xfc\x97\x00\xfd\x98\x00\xfe\x98\x00\xff\x99\x00\xff\xff\xff\
-s\xb6\xc7\xfa\x00\x00\x00\x08tRNS\x00\x09\x0e\x1b\
-(=\x5cr\xeeu#\xcb\x00\x00\x00\x01bKGD\
-\xf05\xb8\xefT\x00\x00\x06RIDATx\xda\xed\
-\x9c\xf9_\x94U\x14\xc6\xad\xacf\x18mTP\xc0\x04\
-\xc4\x85E\x05\xc1\x0d\xc9P\xd1\xc8\x5cZ\x15\xb5\xc5$\
-\xca4\xcb4\xcbJ\xcd\xca\xd2\xd4RJ\xcd\xca4\xb2\
-\x12\xcd\xcaL\xb1 \x90\x08DS@\xf6M\xf6\x01F\
-\x99a\xe6\x9d\x7f!\xd6\x98\xe5]\xeer\xee0\x9f\xbc\
-\xcf\xcf\x9c\xf7~\x99y\xdf\xf7\x9e\xf3\x9cs\xa7_?\
-...........W\xd5\x1dw\xbb\
-\x88\xfa\x8b\xc0\xdd\xa9r\x11\xdd\xc5\xe1n)\xb8dc\
-\x9f\xaa@\x16.\xc5\xd2\xa7*\xe3p\x1c\x8e\xc3\xc1\xc1\
-\x99]\x18\xae0\xe4G\xe2\xa5u\x8c\xe1\xcaBT\xda\
-S\x84lY\xbe;\x98\xc2U\x84\xb6\xff\xcd\x903D\
-l\x17\x86\xabT\x9b\x19\xc2U\x85un~\xee\xbf\x11\
-\xb0\xa5{w\x84\xbe\xcd\x0c\xae6\xa2{kv?\x8b\
-\xcd\x96\xe6\xdd\x15\xbaI`\x03W\x17\xf9_\xe2\xe0~\
-\x0e\x93\xedO\xaf\x9e\xd0\x97\x05\x16pM\xd1Vi\x8d\
-\xc7y,\xb6T\xaf\xde\xd0\x97\xcc\xf0p\xcdsm\x92\
-.\xcfT\x0c\xb6d\x0f\xeb\xd0\xb86h\xb8\x96\x18\xbb\
-\x94\xd0+\x0d\x99\xed\x9c\x87m\xe8\xb3m\xb0p7\x1f\
-qHX\xbd\xd2\x11\xd9\xcez\xd8\x87>c\x84\x84k\
-}L$\x9d\xf6\xbe\x80\xc4v\xc6\xdd1tI+\x1c\
-\x9cq\xb9h\xb2\xef\x9d\x81\xc0\xf6\xab\xbbX\xe8\xe37\
-\xa1\xe0\xda\x9e\x96(E|\xb2\x15\xd9N\x0f\x11\x0f}\
-\xf4\x06\x0c\x9c\xf9y\xc9B\xc9\xf7\xa2\x02\xdb\xc9AR\
-\xa1\xf3\x9a \xe0\xcc/\xca\x94q~9\xb2l'\xb4\
-\xd2\xa11:z8a\x8dl\x91\xe9wI\x86-I\
-+\x17\x1aUG\x0d\xf7\x9aB\x09<\xf2\xb2$\xdbq\
-\xad|\xe8\x8cZJ\xb87\x14\x0bt\xff\x7f$\xd8~\
-\x18\xa8\x14\x1aYM\x05\xf7\x1e\x82}06_\x94-\
-Q\xa3\x1c:\xa9\x9c\x02n'\x92\xb9\x11pM\x84\xed\
-\x1b\x0dJhX\x191\xdc.D\xeb%\xb0\xc0\x81\xed\
-\x88\x06-4\xb8\x80\x10\xeecdc(\xb0\xd0\x8e\xed\
-k\x0djhP>\x11\xdc~5\xbam\x15Td\xc3\
-vX\x83\x1e\x1a\x90G\x00w\x10\x83M\xa5\x0a\xb5\xbe\
-y\xbet\xc3\x09\xf5\xcf\xc1\x86;\x8a\xb5@;]9\
-\xd1G\xde\xf9\x22\xcf\xc6\x84K\xd4\xa805\xb1\xa2;\
-\xf435n\xa8\xef\xdfxp\xcb\xf0\xed\xd2\xc8:\x82\
-\xef\xb4{\x9f\xc5\x833.\xc5_\x22\xbc\xb2=0A\
-\x8d\x1f\x18Q\x8dy\xcf\x19b\x09\x16\xa9\xb1\xec#`\
-\x8b\xaa\xc7~Z\x0dK\xf0\x97\x99\xfe.\x81{>\xb3\
-\x9e\xe0=gX\xec\x14g\x7fV\x03\xd1\x0eqc\x91\
-\x13\xd8f7\x12\xee\xad\xfa\x85\xcc\xd9\xa2\x1b\x89\xb3\x12\
-\xfd\x02\xc6l\x0f\xb5P\xe4s\xfa\xf9L\xd9\xe6\xb7P\
-e\xc2-\xf3\x18\xb2-l\xa1\xac!t\xd1\xcc\xd8\x16\
-\xe9\xa9K\xc3\xc6Y\x8c\xd8\x1e\xd6\x03\x14\xd5\x8d3\x99\
-\xb0\x89\xf9%\x04vDC\x14\x03\xb6\xd8V #\xa7\
-\xe1~p\xb6\xa5\x060\x0b\xacf\x1a0\xdbr\x03\xa0\
-yX=\x15\x94\xedI\x03\xa8\xedz}\x0a \xdbS\
-\xa0\xcef\x07\xddd0\xb6\xe7L\xe0V\x7f\xd5$ \
-\xb6x\x13\x83&Ie8\x08\xdb\x0b&&\xed\xa5\xd2\
-\x09\x00l\xabL\x8c\x1as%\xe3\xa9\xd9V\x9b\x99\xb5\
-4\x8b\xc7Q\xb2\xad\x13\x186\x83\x8b\x83\xa9\xd8^\x15\
-\x98\xb6\xd1\xf3\xc6P\xb0m\x10\x18\x0f \xe4\x92\xd3m\
-Tb\xa3\x1f\xdd\xc8\x1dM\xc8\xf6\xba\x22\x1b\xc0\x5c\xc9\
-\xd5QDl[\x9d3\xf4\xf2\xd7=\x04l\xdb\x9c3\
-\x91\xd3\xfc \xc9\x07\xb7\xc9)pM1d\xb7\xdc\x9b\
-N\x80kz\x80\xf4a\xdd\xce\x1cN7\x97\xfc5\xf7\
-!c\xb8z\xaaZg'S\xb8:\xcaJ\xe7#\x86\
-p\xb53h\x93\x92]\xec\xc6\x85\xee\xa3O\xe7\xf60\
-\x82\xab\x89\x04\xc85\xd5\x09L\xe0\xaa\xa7\x83d\xe9\xea\
-O\x19\xc0U@\xd57\xea\xfd\xe0p\x15\xe1*(\xa9\
-\x0f\x00\xc3\x95\x87\x01\xd6\xd4\xea\x83\xa0pe\x13A\xdd\
-\x08\xb7\xc3\x80p\xa5\xa1\xc0>\x8e\xdb\x110\xb8\xc2`\
-\x15\xb44G\x81\xe0\x0a\x82\x18x\x87\x9aD\x10\xb8k\
-\x81L\x5cW\xcd\xb7\x00p\xf9l\xd8\xda\xe9\x8eQ\xc3\
-\xe5\x050s\xfa\x07&Q\xc2\xe5\x8ee\xd8#\xd1\x9e\
-\xa0\x82\xbb\xe4\xcf\xb4\xbb\xa4=I\x01\x973\x92q_\
-\xce~\x08\x1f\x03\xee\xa2\x1f\xf3\x8e\xe6\xa0\x9f\x08\xe1\xb2\
-\xd9\xb3\xd9\x1f\x11@\x86\xcb\xf2\xc5_j0\xfe\xf8\x81\
-\xcd\x10>*\x5c\xc7\xf1\x05\x5cy\xa6\x10\x0cnX\x0f\
-\xe1#\xc2\xa5{\xe3\xb3\x0d\xcf\xb0X\xf6\xe1\x87y$\
-c\xc2\xa5\x11\xb0\xdd\xdb9\xd3\xbc\x97\x80\xee<\x1e\xdc\
-\x1a\x92\xef\xb4+t;~\xe8\x846,8\xd3j\xdc\
-\x05Fd\xf6\xfc\xfb\x9f`\x87fa\xdes\xc2z\xbc\
-\x05|2{o\xeb\x0f0o\x87L\xec\xa7U\xd8\x88\
-\xb3\x80\xbf\xcd\xb4\xf0\xfb8\xa1\xc3RI^\xc2\xef\xa0\
-/0\xcanVx\x1bz\xe8\xd0\x14\xb2\xed\x0b\xf9\xd6\
-\x1e}\xc5>\xbd\xd8\x8a\xfc\xa4\xfeA\xba\xf1\xef!e\
-\xb3X\xb6 n)\xa7\xc9S&\xa4a\xdc1W\xc5\
-\xca\x81\xcdH\xfb\xfe/4\xc9\xe6\x01\xe5\xed(\xb8P\
-\xb4\x90\x126 \xe4\xc2\xc7\xe9\xd2\xf4\xcf\x95&0\xc7\
-\x15I\x14\xc8\xca/\xa3\x01\xdf\xd3\x168_\xc8\xd3\x8d\
-/\x964>\x84u\xd8\x955vixl\x80\xdc\xc6\
-S,ch\x09\xaf\xc8\xb2}\x05QT\x7f'}\xae\
-!\xa4D\xd6\xa8\x14\xd6\xca\xb89\x87`\xec\x88S\x83\
-%\x16\x08-U0\xa0\xcd\xab$\xe1\x12\xa0\x8c\x9c\x9f\
-\xc5\xcfGM\xaeTl,H\x9e|\xda\x0bg\x81%\
-\x0f\x15\xb9\xfe\x94*\x84\x86\x91)^\x94m\x07\xa4y\
-\xf8\xfb0\x87\xebO\xbd\x8et\x9a\xcf\x14\x87\xd1B$\
-\xb4]S<\xed\xae?\x0d\x8d\xad\x9dn\xa5\x03\xdb\x16\
-h\xc3:c\x84\xcd\xf5#\xaa\x91O\x90\x9aV\xd8\xb1\
-\xbd\x05o\xf5g\xfaX]\xdfjd[Y\xc6e\xa8\
-\xe3\x1b\xe4M\x92\xcb\xbd\xeds\xeb\x91m\x04\x19\xac\x8f\
-\x08\xac\x15\x98\xb4\x97\xae\xf4\x0cF\xcc\xc6c\xb39\x22\
-\x10of\xd4\x98+\xec\x1a\xc8\xb1\x1d\xd9F\xa3\xeb\x19\
-\xc2\x8f31ki\x16u\x8cZ\xcd\xd1Y\xf0\xd5\xfa\
-D'\xdb\x0a\x13\xc3fpI\xa8\xc3\xc86\xa2:\x8f\
-\x08\xc4\x1a\x99\xb6\xd1\x8bW6Z\xc8\xa4_\xa0Zl\
-`?WB(\xdd\xfaf\x8b\xcb\xc29g\x22\x87\xc3\
-q8\x0e\xe7\x02p\xbb\x93\xfaT\x87d\xe1\x5cA\x1c\
-\xee\x96\x81\xbb\xad\xbf\x8b\xe8v\xfe\x83\xac\x5c\x5c\x5c\x5c\
-\x5c\x5c\x5c\x5c\x5c\x5c\x5c\xffC\xfd\x0b\x99\xa5\x5c~G\
-q`B\x00\x00\x00\x00IEND\xaeB`\x82\
-\x00\x00/`\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x01[\x00\x00\x01\x5c\x08\x06\x00\x00\x00f\xca\x1dU\
-\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
-\x09pHYs\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01B(\
-\x9bx\x00\x00\x00\x07tIME\x07\xdc\x03\x09\x08\x1f\
-%\x1b\xcd\xc8\xcf\x00\x00\x00\x06bKGD\x00\xff\x00\
-\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00.\xe0IDATx\
-\xda\xed\x9d\x09t\x15U\xb6\xfe\xaf\xb6C\xdb-\xdc\x9b\
-\x00b\xdb\xb4\xa2\xb6\xf6\xa0\xdd\xb6\xa2>q\xa0\xaa\x92\
-0*\x8a \xa2\x88\x8a8\xb7-\x88\xa08a\xa7E\
-Q[[\x14'\x22!u+\x84\x00\x81\x10H \x10\
-\xa6@\x98\xc7\x80!\xcc\x90\x90\x89\x84\x04\x12\x12\x12\x12\
-\x02\xa9W\xbb\x82\x1aHn\x86\x9b[u\xeb\xd4\xf9~\
-\xff\xf5\xad\xf7_\xbd^?\xaa\xce>\xe7\xcb\xb9\xa7\xf6\
-\xd9\xdb\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x18@\x07Y\xbc2P\x11\xba\x06\xc8B_\x97,\
-\x0eu\xb9\xc5QNE\xfcX\xfb\x9f\xe1\x9a\xe24\xa5\
-\xb8\xdcB\xba\xa6\x03\xb5\x12\x0b5\x1d\xd3\xfe\xff\xc7\xb5\
-\xff\xa9\xd6\x97\xfe\x9f\x1f\xab\xfd\xdf\xfb\xe9\xbf\xa3\xff\xf7\
-Wj\xff\xd9\x1cM\x93\x9dni<\xfd;\xf4\xef\xd1\
-\xbf\x1b(\x8bw\xd1s \x1a\x00\x00v\x09\xebrq\
-\x80\x12\xfcw\xcd\xe0\x06\xe8\x06\xe7\x16\xbfq*\xc2\x82\
-Z\x03\x14+\x1a6L\xbf\xa9\xe2\xecs\xcd\xd7\xf4\xb5\
-K\x91^w\xc9R\xff\x00\xb9\xdb\xdf\xe8=\x10L\x00\
-\x80\xffQ\x1d\x17\x04\xba\xa5\x9b\x9c\xb20P\xdb1\x86\
-jf\x95\xa0)\xcfbf\xdaZ\xe5\xe9\xef\xa5\xbd\x1f\
-\xbd'\xbd/\xbd7\x82\x0f\x000\x8e\x89\xbd/\x0d\x8c\
-\x08\xba\xdb\xe9\x16Gk\xe63W\xdb\x11\xe6\xda\xccX\
-\x9b)\xfd\xbd\xe9\xb8c\x14\x1d\x878b\x06^\x82\xc9\
-\x01\x00\xf0\x9a6Jp;\x97[z0\xc0-|\xaa\
-\x19\xcb*\xcddO\xf2i\xae\x8d\xeb\xec\xb8\xa4\xd0\xb9\
-3\x9d\x07\xb7\x0d\xef\x19\x88\xd9\x03\x00ht\xe7Jf\
-\xa1\x99k\xd8\xd9\x0fS0S\xefw\xbf\xf4\x91\xee+\
-\xcd\x80Ch\x5c1\xb9\x00\xe0\x9c\xc0(\xb1\x93\xb63\
-{V3\x88Yg\xbf\xe8\xc3(}o\xbcG\xb5?\
-`3]\xb24\xac\x9d\x12\xf4{\xcc:\x00\xf89\x1e\
-\xb8\xb1\xf6\x83\x96\xfe\x15\x1efh\xbe\xf9\xa6\xd3\xf8\xb7\
-\x95\xbb\xdd\x80\xd9\x08\x80\xcdp\xba\x83\xae\x87\xc1Z\xd7\
-x\x9d\x11!\xd7a\x96\x02\xc0(\x9db\xba^\xe6r\
-KOi\x8bz\xa9\xa6\xd306K\x8b\xe2\xb38@\
-\x11\x87t\x96\xc5_c\xf6\x02\xc0\xc2.V\x11C\x02\
-\x14)\x06\xd9\x03\xcc\xaa\xd4\xa5H\x91\xfa\xc75\x00\x80\
-\xe5\xcea\xdbi\x8bs\x8cf\xb0;aV\xf6:f\
-\xa0\xb8\x22\x9d\x0c\x00?\xe3\x92\xc5\xce\x94b\xe4\xb9n\
-\x00d\x13\x95h\x9a\xe0\x0a\x0f\xba\x06\xb3\x1e\x00\x93\x8f\
-\x0aj\xaf\xc7\x0ag`D\x5c\xedt)\xde\x09\x01\x91\
-\xe2\xbdX\x05\x00\x18E\xb2xQ\xed\x07/a\x0bL\
-\x07\xd2\xb4\x99\xe6\x83#f\xe0\xaf\xb08\x00\xf0\x05\xa1\
-\xa1\x17\x06\xc8\xd2`\xa4mA\x1e\x94\xa6\xfd\xd2\x19D\
-\xf3\x04\x8b\x05\x00o\xd0v,N\xb7\xf4\x82\xb6\x982\
-`(P3j4\xec\xc2N\x17\x80\x96\xa0:.\xd0\
-\xcb\x16b'\x0by\xa7\x1d4\x7fP\x0a\x12\x80Fp\
-EJ\x82\xb6XV\xc30 \x1f|L[\x89\x0fi\
-\x00\x9c\x07u\x068{\xd3\x0b&\x01\xf9ZK4\xd3\
-\xbd\x19\xab\x0cp\xcd\xe5\x11\xf7u\xa8-i(V\xc3\
-\x14 \x03u\x8a\xe6Y\x9bh\xb1=V\x1d\xe0\xed\xe3\
-\xd7%t3\x08e\x0d!\xb3\xcb=\xba\x14q\x04\xa5\
-\x11b\x11\x02\xfb\x1f\x19\xb8\xa5{\xb4\x89\x9f\x8a\x85\x0f\
-\xf93G\x97:\x0cc5\x02[B\xf5\x0b\xa8@\x0c\
-\x16:d\x11\xd5P\xc1\x1b\xd4]\x00\xb6\xe2l\xa9\xc3\
-|,p\xc8\x82\xf9\xb9\x87\x9d\x8a\xf8\x08V)`\x1a\
-j;s\xb6\xc57\x166\xc3\xfaG\xec\xe3\xeaK\xab\
-\xc6\xab\x13\xd2\xa2\xd5y\x99+\xd5-\x85\xbb\xd4\xbd%\
-\x87\xd4\x8c\xd2<u\xdf\xf1l5\xb5h\x8f\x9a\x98\xb5\
-F\xfd&=F\x1d\xb1\xf6s\xf5\xff\xe6>\xad\x06\xb8\
-%\xd6\xde3\x01m{\x00\xa3g\xb3\xc2\xe3\xda\x04.\
-\x84Y\xb1\xa9\xee\x0b^Q\xbf\xdf9[\xcd9Q\xa0\
-zCQe\x89\xaa\xec\x9d\xaf>\xbcx\xb4\x1a\xa8\xb0\
-b\xbcB\x81\xd3-=\x8a\xd5\x0b\x989\x9b\xd5&\xee\
-\x1c\x18\x16{\x22S|v\xe58}\xa7\xeaKh\xf7\
-;r\xdd\x17\xea\x15\x91!l\x8c\x85\x22\xc4\xd2<\xc6\
-j\x06\xd6\xdd\xcd\xcaR\x1f\x9c\xcd\xb2\xa9\x9e\x89\xff\xf2\
-\xb9\xc9\x9e\xcf~\xcdt\x07-}\x9b\x99\xb3\xdc@Y\
-\xec\x85U\x0d\xac\xc5\xc4\xde\x97\xd6\x16\xf1\x16k`\x5c\
-l\xa9\xe3\xd4\xee\xea\xa4\x9d\xb1j\x8d\xf6\xff\xcc\x82\xce\
-};G\xf7e#cA\x9b\xd7\x94\x17\x8eE\x0e\xfc\
-\x0e\xb5\xa4\xd6&\xe4\x06\x18\x17{\xbaqf\x7fuC\
-\xc1\x0e\xd5\x1f\xd0\x07\xb6\xdb\xe7\x0cae\x97\xbb\x16\x1d\
-\x80\x81_q)\xe2\xd3h\xac\xc8\xa6\xba\xce}F\xcd\
-\xf6\xf2\xe3\x97\xaf(\xae*U\xfb.\x1a\xc9\xca\x98\x95\
-\xe9\xd5\xc4\x000\x95\xb0.\x17\x9f\xadi\x00\xe3bP\
-\xdd\xe2\x9fWK\xaa\xcaT+Pu\xa6Z\x1d\xb0\xe4\
-Mv.B\xd0\xb1\x02\xae\xfb\x023\xf8\xed\xe4\xe0\x8e\
-T\xbe\x0e\xa6\xc5\xea\xd1\xc1\xc3^\xa7s\x19E\xe9\xa9\
-r\xf5\xce\xb8\xa7Y\x1a\xc7\xe4\xcb#{\x5c\x017\x00\
-\xc6\x9d\xcf*Awj\x13-\x1b\xa6\xc5\xa6\xda+\xc1\
-\xea\xea\xfcm\xaa\x15\xa13\xdc?L\xeb\xc3\xd2xf\
-\xb5\x95\x85;\xe0\x0a\xc0\xe7P\xb2\xb76\xc1N\xc0\xb4\
-\xd8\xd5'\xdb\xdc\xaa\x95\x99\xb6o!kcZ\xe6\x92\
-\xa5\xfep\x07\xe0\x1bBC/<\x9b\xd6\x05\xc3bX\
-\xf4\xe5\xbf\xf2t\x95\xa5\xcd\x96\xd2\xcf\xee_8\x82\xbd\
-\x826\xb2\x18\x8a6<\xa0Ut\x8a\xe9z\x19*u\
-\xd9C\x0b\xb2V\xab,\x90~\xec\x00C\xd7{\xebH\
-\x16\xdd\xc8\xc7\x05^A]\x14(\xbf\x10F\xc5\xbe\xee\
-\x8b\x7f\xce\xd4K\x0b\xade\xc8\xf2\xb1\xac\x8e\xf5jt\
-\x83\x00-\xa2\xcd\x14\xe9O\xda\xc4\xd9\x0f\xa3\xb2\x87\xe8\
-,\x94%\xd6\xe4ogy\xbc\xf7\xd1E\x1f\xb8\x08h\
-\x12\x97\xd2\xedV\xba\x17\x0e\x93\xb2\x87~\x1f\xd5[-\
-;U\xce\x94\xd9\xd2.\xfc\x96\xd9\x8f\xb3\xdc~'7\
-@\x09\xfe;\xdc\x04x\xce8\x88\x08\x0aB\xc6\x81\xbd\
-D?\xc9Y\xe4\xbdM\xdf\xb1>\xf6%\x81\x11Aw\
-\xc3U@}\xa3\x95\x85\xee\xda_\xe4r\x18\x94\xbd4\
-yW\x1c\x93f\xbb$g\xbd\x1d\xc6\xff\x84S\x11C\
-\xe0.\xa0\xce\xd1\x81\xf4\x9061*aN\xf6\x93\xd1\
-e\x13\x8d\x82\xae\x13\xdb$\x06\xda\xba\x92\x1e\x84\xcb\x00\
-\xba\xac0@\xdb\xd1V\xc1\x98\xec'jMS^}\
-Re\x15\xbaZl\x93\x16\xeaU\xb8\xfc\xc0\xfd\x8eV\
-x\x18Fk_\xfdqF?\x95eB\xe6\xbfl\xa3\
-xh\xebL\xfb\x05\x09\xd7\xe1sGK\xd7oO\xc3\
-\x94\xec\xab[c\x073m\xb6\x03\x16\xbfa\xb7\x98\x9c\
-F\x99F\xce\xd0~^\xde\x8f\x1d\xad\xfdu\xf7\xbca\
-L\x9b-\xc3\x97\x1b\x1a\xdd\xe1R\xfb(\xb8\x10\x0fG\
-\x07\xb2(jA\xaf\x80\x19\xf1\xd1\x82\x9ce\xfa/\x1e\
-m\xd7\xd8T\xb8\x22%\x01nd\xe7\x1dm\xa4x/\
-\xf2hqf\x8b3[K\xecp\x8f\xa3D\xa3}\xcf\
-h\xbbP\xa25L\x88\xafl\x84R\xc6n\x8f\xd5\x85\
-\xfeX\xd8<F\xc5tc\x13\xeed#\x02\xa3\xc4N\
-Z`s`@\xfcis\xe1.&\x8d\xb6\xa8\xb2\x84\
-\x97\x18e\xb5\x9f\xd2\xfd*\xb8\x94\x1dv\xb4\xd3\xee\x0d\
-p\xba\xc5\x9d0\x1e\xdc \xc3\x0d2\xcb\x1e)\xa4\xbb\
-d\xd1\x05\xb7b\x99\x89\xbd/\xd5\x82\xb8\x02\xa6\xc3\xaf\
-\x1e[\xf6\x0e\x93f;f\xc3D\xdeb\x95\x8cz\xb8\
-,g\x1e\xb8E\x19\x86\x83\xaa_\xa8\xfa\xc5\x88\x14a\
-\x0a\x5c\x8bM\xa3}\x0ff\x03\x91\x22\xf6\xc43e\xb6\
-\xcbs7\xf1\xfbQS\x16\xdf\x82{\xb1\x95y@\xf5\
-\x0e\xce\xc0h tj`\xee\xfc\xf6\x0c\xae\xf52\x94\
-\xe2\xe5t\x8b'a2P]\xc5\x1e\x5c\xc6\x84\xd1n\
-<\xb2\x03\xf1r\x8b\x15\xce\x88\xa0\xdb\xe0f\x16\x86\xfa\
-\x1f\xb9\x141\x13\x93\x15Bw]\xe6\x95\xd1F\x09n\
-\x07W\xb3\x221\x03\x7f\xa5\x05h\x09&)\xe4I\xef\
-o\x9edi\xb3\x0d\xdf=\x17q:\xe7R\x8a\x90D\
-\xeb\x1a\xe6f\xbd\x0fb\xe30A\xa1\xc6\xd4^\x09V\
-W\xe7o\xb3\xa4\xd1\xee-9\xa4\xfeaZ\x1f\xc4\xa9\
-^\x86\x82\xf8o\xb8\x9b\xe5>\x88\x895\x98\x9cPS\
-\xa2\x82\xdc9'\x0a,e\xb4t\xa5\xf8\xce\xb8\xa7\x11\
-\x1f\x0f\x1f\xcc\xa8J\x1f\x5c\xce\x0aF\x1b\xd9\xedZ-\
-(\xc70)\xa1\x96\xd4\xb9=\x5c^d\x09\xa3\xa5\x1c\
-\xe0\xe0\xf9/!.\x8d\xab0 2\xe4j\xb8\x9d?\
-\x09\xebr\xb1\x16\x88\xcd\x98\x8cPK\xd5u\xee3j\
-\xb6\x9fw\xb8\xc5U\xa5j\xdfE#\x11\x8f\xe6]x\
-X\xe3H\x16/\x82\xe9\xe1\x9c\x16b\xf2H\xa1\xbf\xba\
-\xa1`\x87\xdf\xceh)C\x02qh\x89\xa4\xf7\xe1z\
-\xfe0\xdaHI\xc0\xc5\x05\xa8\xb5j\xa7\x04\xa9\xa1\x9b\
-\xc3\xd4Sg\xaaMK\xef\x9a\xb43V\xed8\xb5\x07\
-\xc6\xbf\xe5\xaa\x0eT\x84\xaep?\x13\x09\x8c\xea\xddV\
-\x1b\xf8\x83\x98|\x90\xaf\xd43\xf1_\x86\xb7=\xdf\x7f\
-<[\x1d\xb4\xf4m\x8cw\xeb>\x98\x1d\xa0\xf5\x0f\x17\
-4kW\xabH\x91\x98t\x90\xaf\x15\xa8H\xea\xb3+\
-\xc7\xf9\xdct\xf7i&;r\xdd\x17\xea\x15\x91!\x18\
-g\xdf\x1c'D\xc0\x05\xcd0ZY\xec\x87\xc9\x06\x19\
-\xad\xee\x0b^Q\xbf\xdf9\xdb\xeb41*\xfe\xad\xec\
-\x9d\xaf>\xbcx\xb4n\xe2\x18S_\x17\xac\x11\xfa\xc2\
-\x0d\x0d\xe4\xf2\xc8\x1eWh\x03]\x84\xc9\x06\x99)j\
-\x1c\xf9\xd2\xaa\xf1\xea7\xe91\xea\xb2\xdcM\xea\x81\xd2\
-\x1c5\xa34\xef\x1c\xa5\x1c\xde\xaa\x17*\x1f\xb1\xf6s\
-\xf5\xff\xe6>\xad\xb7\xe4\xc1\xd8\x19\xaa\xfc\xb6\xe1=\x03\
-\xe1\x8a8>\x80 \x08\xf5o\xd9\xa4m\xa4\xd4\x13\x13\
-\x0c\x82\xa0:\xaaq*b\x08\xdc\xd1\x87t\x88\x11/\
-G5/\xa8\xb5\xea\x1c\xdd\xb7IQ\xee-\x1d\x1b4\
-%\xaa\x91+&\xbc\xd0\xa8\xa8\x15y\xbf\xa4QMj\
-\xf0\xb2w\xd5\xa1+B\x1b\xd5\x93\xc9c\x11\xc3\x86\xb5\
-\xafSL\xd7\xcb\xe0\x92>\xfb(&\xfc\x0f\x93\xea\x5c\
-\xfd%\xe6\x11u\xd4\xba\x09\xea\x84\xb4h\x8f\xfa*m\
-\xba*\xefIhR3\xf6'\xa9q\x19\xc9M\x8a:\
-\x08$\xe7mnTk\xf2\xb7\xeb_\xf3\x9b\x12}\xa1\
-?\xff\xdc\xf3|e\x95\xe5\xeb\xb7\xac\x9aR\xe5\xe9S\
-*\x0f\xfcm\xf6 \xcc\xfd\x06\xa4\xedn?\x86K\xfa\
-\x22\xa7V\x11\xba\xe2\xf2B\xe3\x1fo\xde\xda\xf0\xb5\xba\
-\xbe \x8d\xa9n\x04\xa0\xe5|\xf1c\x14\xe6\xbc\x87\xcb\
-\x0e(6\xdeZT\xc7\x05N\xb7\xb8\x0e\x93\xa9y\xa2\
-\xcaQ\x1fl\x99lxr>\xf0\x0f\x85'\x8b\xd5\xdf\
-E\xf5\xc4\x5co\xf8\xb2\xc3J\x18f\xebrj\x87b\
-\x12y\xa7\xeb\xa6?\xa8\xa7+-\xca^\xabV\x99t\
-\x15\x15\x18O\xe8\x96\x1f0\xbf=\xe6\xdeJ\x83\xe1\x9a\
-\xde_\xc9\xcd\xc7$j\xbd\xae\x8a\xea\xa5>\xb6\xec\x1d\
-\xfdl\x96\xb5\xb6\xde\xe0\x5cJ\xaa\xca\xd4k\xa2\x1f\xc0\
-\xbcnX9\x1d#{\xfc\x16\xee\xd9B\x9c\xb2\xf0\x11\
-&\x8f\xefE\x05P\xc8x\xe9\xc3\xd8\x11\xedg)`\
-\x8fO\xb6\xb91\x97=I\x16C\xe1\x9e-1\xda\xc8\
-n\xd7\xa2C\xae9\x15\xafz%\xbe\xaaW\xa1\xca+\
-/\x84\x8b1\x02uv\xb8vz_\xcc\xe1\x86U\xe1\
-\x0a\x0f\xba\x06.\xda\xdc\xb3Z\xb78\x0b\x93\xc6|\xdd\
-5w\xa8\xbek\xa2Z\xab\x00\x99\x09\xec\xa6\x82\x09\xd3\
-\xe0\xa2\xcdN\xf5B?1+\x18/\xd5yEJ\x99\
-5)\xaf>\xa9\xf7S\xc3\x5cm\xb8o\x993R\xbc\
-\x1dn\xda\xf4\xaev5&\x8b\xf5\x8c\xf7\xc3\xadS\xd4\
-mE{\xe1r\x16\xe2\xeb\x1d31?=k)\xdc\
-\xb4\xb1\xb3ZE\x0c\xc1$\xb1\xb6\xae\x9f\xfe\x10R\xca\
-,\x02\x8d?5\xaf\xc4\xbc\xf4\xf8\xb1L\x84\xabz\xb8\
-\xc0\xa0\x0d\xd0FL\x12\xb6j\x0d\xd0\xbd}\xa4\x94\xf9\
-\x8f\x99\x07\x16c.z\xd6j\x18k\x03\x04\xc8R\x1f\
-L\x0evu\xe5\xd4\x9eH)\xf3\x03gjj\xd4n\
-\xf1\xcfc\x0ez\xae\x9b\x80\xaa`\xf5w\xb5\xc2\x16L\
-\x0e\xfb\xa5\x94\x1d./\x82#\x1a\xcc\xe2\xec\xf5\x98w\
-\x9e\xcc\xd6-\xae\x85\xc1\xd6\xfd(\xa6H\x0fab\xd8\
-\xb7\xaf\x17\x95\x1b\xacM)\xcb\x823\x1a\xc4\x83I#\
-1\xdf<]\xe3U\x84\xdep\xd9_2\x10pV\xcb\
-aJ\x19\xf0\x1d\x9b\x0bw\xa1\x15\x0f\xcen\x9b\xc8@\
-\x88\x08\x0a\xc2d\xe0S\x7f\x9f\xfd\xd8\xcf\xe5!\xe9\xec\
-\x11\xb4\x8e!\xcbQ`\xbc\x91\x06\x91\xf7\xc1l\x15a\
-\x01&\x03\xf4\xc7\x19\xfd\x90R\xd6J\xe8\x98\xa6\xbd\x12\
-\x8c\xf9\xd4p\x1a\xd8\x5c\xbeo\x8bE\x04\xff\x15\xb7\xc5\
-\xa0\xc6R\xcaNTW\xc0E[\xc0\xf05\x9fa\x0e\
-y\xe8W\xd6N\x16\xff\xcco\xba\x97\x22\xfd\x80I\x00\
-5'\xa5\x8c\x8c\x97\xca\x0b\x82\xc6\xa1\xec\x0f\x14\x18\xf7\
-\x94\x99 }\xc7\xa5\xd1v\x90\xc5+\xb5\x01\xa8\xc4$\
-\x80\xbcI)\xcb\xaf@J\x99'\xe8\x03$\xe6K\x83\
-5\x13\xca\xdbD\x8b\xed\xf9\xcb@\x90\xc5P\x04\x1f\xf2\
-EJ\x195\x8f\x04\xbf@\xbf\x00P\x82\xd1\xd3\xd9\xad\
-0\x96/\xa7\x0d\xebr\xb1\xf6\xe2y\x08>\xe4\xeb\xf2\
-\x90\xe8\xbfV\xcb\x97i\xd31/<tsp$\x8b\
-\x17\xf1\x93\x81 \x0b\x03\x11t\xc8(\xdd2\x1b\x1d\x87\
-+OW\xa97\xcdz\x14\xf3\xa1!)\xc2\xc3<]\
-bX\x8c\xa0Cf\xa7\x94\x9d\xe2,\xa5L\xd9;\x1f\
-s\xa0\xe1+\xbc\x89|\xecj\xddA\xd7#\xdd\xcbG\
-\x89\xdanI\xbd/\xfe9\x8cE3\xf5\xe7\x98\x01\xea\
-\xeb\xeb&\xa89'\x0a\xb80[\xfa\xe3\xd2e\xce\x10\
-\xc4\xbe\x81\xe2\xe2\x5c\xb4\xce\xd1\xfe\xaa|\x88`\xfbF\
-\x03\x16\xbf\xf1s2;}\x81\xa6\xf6\xe5\x18\x97\xa6\xf5\
-T\xf2\xfb\xdc\xecn\x13\x0e\xa5 \xe6\x5c6\x86\x0c\xeb\
-r\xb1f\xb6\x87\x11l\xdf(6c\xf99\x0b\x8bj\
-\xcaF\xec\x9e\xa7\x06\xcd\x7f\x09\xe3\xd3\xc4/\x02^>\
-\xa4\xd1\x99\xb5\x94\xf0\x22\xe2^_\xd9\x8e\x98\x81\xbf\xb2\
-\xf1Y\xad\xf4 \x82\xec\x1b\xdd0\xa3_\xa3\xd7Z3\
-\xcb\xf2\xd4\xaf\xd2\xa6\xab\xc1\x9a\xf1\xa2@I}\xf5^\
-8\x9c\x9b\xdd\xed\xb2\xdcM\x889o\xd5\xc0\xb4\x17\x9c\
-\x8d \xfbF\xe3\xb6\x867{\xb1e\x9f(P\xbfM\
-\x8f\xd1/\x04\xe0\xee\xfc/J\xca^\xc7\x8d\xe1\xd2\x1f\
-\x17\xc4\xbc\xde\x87\xb2\xe9\xf6\xbc\x9a\x1b\x16\xe2\xc4\x8d1\
-\xdf\xe8\x8a\xc8\x10\xafoPU\xd7\x9c\xd6\x7fBOH\
-\x8bV\xfb%\x8d\xd2\xffo\xf1:\x8eB\xc2\xf3\xdc\xa4\
-\x86-\xc9A\x81\xf1\x86n\x94u\x88\x11/\xb7\xe1\x8d\
-1\xe1I\x04\xd77\x1a\xb6\xe2?>[\x84\x85'\x8b\
-\xf5\xb3\xdf77L\xd4w\xbe\x9d\xa6\xf5\xe1j,\xe3\
-3S\xb8\xd9\xdd\xf6\xc1\xee\xb6\x81\xd2\x8b\xe2cv<\
-B\x88Gp}\xf3qgk\xd1nC?\xa8\x1c(\
-\xcdQ\xe32\x92\xd5\xffl\x99\xac>\xb2d\x8cz\xf3\
-\xacG\xf5\xba\x04f\x5c\xc1\xbd-\xf6\x09S\xc7\xf3\xde\
-\xf8g\xb9\xd9\xdd\xae\xc8\xdb\x825T_sle\xb4\
-m\xc3{\x06j[\xf6*\x04\xb6\xf5\xa2\x0aX\xfe\x80\
->\xc6\x91\x09/\xcf\xdd\xa47u\x0c\xdd\xf2\x83\xbe\xc3\
-\x0eY\xf0O\xf5\xf69C\x9a\x9dvvu\xf4\xfd\xfa\
-\xcd\xa6\xbb\xe7\x0d\xd3\x8b]\x8f\xdd\xf4\xbd\x1a\xb1'^\
-\xddP\xb0\xe3\xe7\x0e\xbdf\xa7\xb0-\xc8Z\xcd\xcd\xee\
-\xf6\xfe\x85#\xb0\x8e\xce=\xb7=\x19\x18\xd5\xbb\xad\x9d\
-\x8a\xce\x0cE`\xed\x9f\xb2D\xdd\x16\x8a\xabJ=\xaa\
-\xb9\x98}Q\x83\xba\xd3\xf2\xb2\xbb]\x99\xb7\x15k\xa9\
-\xde\xba\x12\x9f@7\x06\xe8\x1c\x0d^\xf6.\x17\x86\xd0\
-}\xc1+\xa6\x8f\xed\xd2\xdc\x8d\xdc\xecn{&\xfe\x0b\
-\xeb\xe9\xdc\x0fe\xf3\x90\x85\x00\x9d\x93\x81\xb0\xbb8\x93\
-\x0b3\xb8g\xde0\xd3\xc7\xb7\xef\xa2\x91\xdc\x98\xed\xaa\
-\xc3\xa9XS\xe7\x1d%\xd8\x22+\xc1\xe9\x96\x1eE@\
-[\xaf\x0f\xb6L\xe6\xe6\xc6\xd35\xd1\x0f\xf8\xe5\x88&\
-\xfd\xd8\x01n\x0c\x972O\xb0\xaelV\x09\xcc\xe5\x96\
-\x22\x10\xcc\xd6\xe9\x1f\xb1\x8f\xab'OWra\x02{\
-K\x0e\xf9m\x9c\xa9:\x18n\x95\xf1zn+\x84\xb1\
-\xed\xb4\xaa\xe3\x02\xd4Bh\xfd\x8eku\xfe6nL\
-\x80\xb2\x1c\xfc5\xd6\x1d\x22C\xd4\xdc\xf2#\xdc\x8c5\
-u\xba\xc0\x1a\xabS+\x81\xe9]\xed\x14\xe9\x16\x04\xb1\
-uz\x91\xa3\xdd\x16\xddn\xfbK\xcc#\xcc\x5c\x83f\
-\x9d9\x19\xc9Xcu\xf3\xbc\xdd\xd2M\xec~\x1c\x93\
-\xc5\xb7\x10D\xefug\xdc\xd3jy\xf5In\x16\xbf\
-\x15Z\xb9P\xb1q\xear\xc0\xcb\x1f7\xeaj\x81\xb5\
-\xf6\xb3F\xb1\x9c_\xbb\x02\x01\xf4N\xd4\x8ez[\xd1\
-^n\x8c\xf6`i\xaeeZp\xcf:\xb0\x94\x9bq\
-\xffa\xd7\x1c\xac\xb7_\xb4\x84\xe5\x94\xafj\x04\xd0\xbb\
-sZ\xfa\x89\xc7\x0b\xd4\x0d\x96.\x16Xe\xfc\x1fX\
-\xf4\x1a7c_Q]\x89N\xbc\xbf\xe4\xdbV1\x99\
-\x02F\xb5\x22\x11<\xefD\x15\xb9x\x81\x8eIz$\
-\xbeb\xb9?vt5\x99\x17\xde\xd9\xf8-\xd6\xddO\
-9\xb7\x8a\x18\xc2^~\xad,|\x84\xe0\xb5\x5cTw\
-\x96\x17\xe8\xcb\xff\xdd~\xb8\xc0\x80\x0fe\xf5\x8fp\xa8\
-\x08\x10\xd6\x9f\xbe\xbb\xfd\x0f\xcek98:\xe0iG\
-K;G+7#\xa4\xac\x88\xd35g\xb8\x89\xc7\xc0\
-\xa5c\xb0\x0ek\xb5\x94-\xa7\x8d\x19x\x89\xf6\xd0\x15\
-\x08\x5c\xf3\xf3;\xa7\xefO\xe2faG\xef_\xc4D\
-\xdd\x5c\x9e\xea%\xcc\xcb\x5c\x89\xb5X\xab\x13\x8ed\xf1\
-\x22vJ**Aw\x22h\xcd\xbf\x1d\xc6K\xd6A\
-A\xc5Q\xbd#0+\xb1y!\xe5#n\xcc\x96\xd2\
-\xdd\xfcqM\xda\x9a\xb5\x12\xa4.\x0c]\xd1\x15F\x22\
-hM\xeb\xd1\xa5o\xe9\x9d\x12x\x80n\xc1Q\x1d[\
-\x96\xe2C\xb5w\x1bk\xaai7^[\xfb9\xd6\xa5\
-.i8\x1a;\xdaD\x94H\xceK\xb3AJ-\xa2\
-E\xccj\x87\xdf\xe4\xbc\xcd\xdc\x98\xed\x9a\xfc\xedX\x9f\
-\xb5u\x12f\xb2d\xb69\x08Z\xc3\xb7\x93\xe8#\xd8\
-\x89\xea\x0a.\x16\xef\x9e\x92LK\xe5\xcfz#J\x8b\
-\xe2\x05*\xfe~\x836G\xb1V\x85CL\x18\xed\xe5\
-\x91=\xae@\xb0\xce\x15u\x1e\xa0\x9b:\xbc\x5c\xbd\xa5\
-2\x89\x93w\xc5\xa9WN\xed\xc9|\xec(5\x8d'\
-\xa8\x16\x07\xd6\xac\xa8\xb6Q\x82\xdb\xb1P\xbf6\x18\xc1\
-\xfa%\xcb`S\xe1N\xae\x16+\x1d\x1b<\x95\xfc\xbe\
-\xadR\xf2\x8a*K\xb8\x89\xdf\x8c\xfdIX\xbb$Y\
-\x14\xf1q\x8c1Q3C^\xa0l\x03)\xe1E\xdb\
-\xc5\x90\xa7\x86\x90y\xe5\x85X\xb7\xba\xd9\x0a\xaf\xa2X\
-8c\xa26\xe0\xb4\xdb\xb3;\xb4\xfb\xbbk\xeeP[\
-\xc6\xf0\xb3\xed\x91\x5c\xfd:\xa1,\x0c\xee?\x92)\xd2\
-\x0f,|\x1c\xdb\x0c\x93=W\xd4\xae\xdb\xde9\x9a\xa7\
-l]\x88\xfa\xb9\x94q\x5c\x99\xadU\xafP\x9bj\xb6\
-\xb2\xb8\xde\xdaN\x9b,^D\xcd\xd3`\xb0\xe7\xaa\xbd\
-\x12\xac\xae\xcd\xdfn\xdb\xc59>5\xc2\xd6\xf1\x0b\x99\
-\xff2Wf\xdb\x7f\xf1h\xac[\xbaI\x16\x1az\xa1\
-e\xbd\xb6\x9d,\xfe\x19A\xf2\x9c\xf6\x95Y\x96g\xbb\
-\x85I5\x0e\xa8\xf3\xaf\x9dcwG\xdcS\x5c\x99\xad\
-?Z\xc9[\xf3&Y\xd0\xf5V.>\xd3\x0fAj\
-\xfc2CF\xa9\xbd\x0c\xf7\xed\x8d\xdf\xd8>nt\xf3\
-\xcd\xee\x19$9'\x0a\xd4\x1f\x8f\xee\xd3\xebAt\x9c\
-\xda\x1d\xebU?\xb7\x15\x1f\xb0\xae\xd9*\xd2\xeb\x08R\
-\xe3\xfas\xcc\x00u\xd3\x91t\xdb,\xd4[c\x07\xdb\
->f\xb7\xc5>\xc1L<(\x97;[3N\xaa\xb7\
-A\xc6I]'\xc2v\xc6\xaa\x1f\xa7\xca\xea\xe8\xf5_\
-\xaa\xc3V~\xa0\xf6K\x1a\xa5\xe7~\xd3\x1f\x11;\xe4\
-BsymW3\xdb\x89\x08P\xf3\xf2o\xbfJ\x9b\
-\xce|\x09?\xba\x09\xc7\xea5\xdc\x96\x88\x8a\xe7\x98\xcd\
-\xa93\xd5j~E\x91\x9aZ\xb4G]\x94\xbdV\xcf\
-\x7f\x9d\xa4\x99\xe6'\xdb\xdc\xea[\x1b\xbe\xd6\xdb\xae\x93\
-iR\x06\x08\xfd\x01\x87i\x1ab\xb6_X9\x13!\
-\x1e\x01j\xbe\x84\x84\xe7\xd5U\x87S\x995[\xdaA\
-\xf1\x10\xa7w[ye\xf7\xe4\xe9J=\x7f5\xfd\xd8\
-\x01=\xde\xf1\x99)\xaa\xb2w\xbe~u\xfb\xfd\xcd\x93\
-\xd4W\xd7\xfcW}b\xf9{j\x9f\x85\xc3\xd5\xaes\
-\x9f\xd1\xcd\xd3\xee\xe7\xe0\x8ch\x8e\x95\xcd6\x0d\x01\xf2\
-\xcet#\xf7.P\xcbN\x95\xfb\xd5<i\xa7}\xb8\
-\xbcH\xddR\xb8K/\xc0\xf2\x93V\xe4mQwh\
-FA\x97\x16\xea\xee\xc6\x8f\x9c,\xe6\xa2\xa8{\xda\xd1\
-\xfd\xfa\xfbV\x9d\xddm\xee*\xce\xd0\xb3K\xe6\x1fZ\
-\xa5N\xdd\x9b\xa8N\xdc1C\xfd\xcf\x96\xc9\xea\x88\xb5\
-\x9f\xeb\xb7\xe7\xa8\x87\xd9=\xf3\x86\xa9\x7f\x8d\x19h\x99\
-&\x96\x90WJ\xb5\xb2\xd9\x96!@\xde\xeb\xf7Q\xbd\
-\xd5!\xcb\xc7\xaa\xe1\xbb\xe7\xea\x1f+N\xf9\xa8\xbc\x1f\
-\xed\xac\xb2\xca\xf2\xd5\x8dGv\xa8\x89YkTyO\
-\x82\xfes\x94\xaaq=\xb6\xec\x1d=G\xf6O3\x07\
-4\xab5\x0a\xd5<%C!\xa3!\xe3\xbd*\xaa\x97\
-\xadcB\x85thG\xba\xbe M?\x03\x8d\xcbH\
-V\xa3\xf6%\xea1\xa2\x9d)\xb5\xcf\xa1\x9d/\x8d%\
-\x9d\x87\xd2\x0e\x95~\xde\x07\xcf\x7fI\xcfW\xa5z\xc5\
-\xd7M\x7f\x10\xa6\xcb\xa6\x8a-i\xb4m\xa2\xc5\xf6\x08\
-\x8eoE_\x85\xef\x8c{Z_\xbc/\xaf\xfaX\xfd\
-(5B_\xe4d\x96uE\xff\xd9\x17?F\xa9\xa1\
-\x9b\xc3\xf4E\xfft\xf2\xbf\xd5\xde\xdaO\xd2;\xe2\x9e\
-4\xb4#\x02\xfd\xec\xbd\xc7\xe6\x09\xf0\xaf\xac\xfe\xd4\x80\
-K UjqU\xa9\xbeK\xde]\x9c\xa9\x1b9\xfd\
-\x82\xf8\xe9l\x96b\xfa\xd3\xf9,\xc5\xf4\xa73\xda\xa1\
-+B\xf5?\x8e\xbd\x12_\xd5\xff@\xfet^\xdb9\
-\xba/z\x88\x19W#\xc1e\xbd\x024\x91\xe2\xed\x08\
-\x0ed7}\x996\x9d\x99\x8f\x95T\x88\x9eR\x0b\xe9\
-\xd8\x832^\xc8\xc0\xe9|8\xe6\xc0\x12\xdd\xc0\xe9\xb8\
-\xe3\xbf\xdb\x14\xdd\xc0G\xae\xfbB\xff\x03N\x06\xfe\xf0\
-\xe2\xd1?\x1b8\x0f\x1f<[$\xa5\xdb\xad\xd6k]\
-.\x0b}\x11\x1c\xc8nZ\x9c\xbd\x9e\x9b\xcb\x0ct\xdc\
-\x84\x98\x9f\x7fmW\xeac\xc5j_\xcf 8\x90\xdd\
-t\xa8\xec07f\x9b\xc3IvI\x0b\xd3\xbf\x9e\xb2\
-\xde1\x82,\xbc\x81\xc0@v\xfb`I\x85\xd0y\x81\
-.B \xee\xe7\x1f#H\xaf[\xf0\x18A\xfc\x04\xc1\
-\x81\xec$\xaa\xcd\xcb\x13Ks6 \xee\xe7\xd7G\x90\
-\x85\x8f\xac\x98\xf65\x19\xc1\x81\xec$\xca\x00\xe0\x09t\
-ih\xb0\xd4\xe2$+\x9am\x1c\x0f\x83\xffP\xd2\xeb\
-\xfa\x97\xdde\xb9\x9b\xf4\xab\x94\x901\xa2vB\x0b\xb3\
-\xd6\xa8\x13~\x9c\xa6\xdf\xe3\xf7G\xac\xe9\xdf\xe6\x89o\
-\xd2c`\xb0\xf55\xdb\x8af\x9bb\xe7A\xa7\xa4t\
-\xca\x83\x04\xe6C\xe7\xa6TL\xa5\x9d\x12dj\xcc\xe9\
-\x02\x08O\x84n\xf9\x01\xe6Z_\xc9V\xccFH\xb7\
-\xf3\xa0G\xef_\x04\xd7\xf33\x9fnSL\x8d\xf9\xc1\
-\xd2\x5c\xae\xc6\x97j4\xc0\x5c\xeb\xe9G+\x9a\xed!\
-\xbb\x0ex\x979C\xb8\xfa*mU\xa8\xfd\x0e\xd5\x1b\
-0#\xe6TE\xebL\x0d_1\xa7\xdbi0\xd7z\
-\xca\xb0\xe21B\xbe]\x07|\xcc\x86\x89p:\x8b\xf0\
-\xce\xc6oM\xab\x89\xc0\x1b!\x0b\xfe\x09s\xad'!\
-\xd7\x8af{\xcc\xae\x03N\x1f\x0e\x805\xa0\xe3\x1c3\
-b\xfe|\xca\x87\xdc\x8d-\x0f\x85\xe0\xbdP\x91\x15\xcd\
-\xf6\x84]\x07\x9c\xce\x0a\x815\x98\x93\x91lJ\xcc?\
-\xdf>\x95\xbb\xb1\xfd\x83\x81E\x8b\x18V\xa9\x15\xcd\xb6\
-\x1a\x95\x9f\x80\xd1|\xbfs\xb6)1O8\x94\xc2\xd9\
-yx\x15\x8c\xb5\xe1c\x84*k9mh\xe8\x85v\
-\x1ep\xaaI\xca\xdb\xc7\x12\xabB\xb5t\xcd\x88\xf9\xbe\
-\xe3\xd9\x5c\x8dkn\xf9\x11\x18k\xc3\xaaq\xa8\x8e\x0b\
-,\xe3\xb5\x9de\xf1\xd7v\x1f\xf4%9\xeb\xe1t~\
-\x86\x8a\xc2\x98\xd1.\x86\xea\x08\xb3\xde\x1f\xae\xa5l?\
-\x8a\xba\x08\x9e\xe4\x88\x19x\x89e\xcc60\xaaw[\
-\xbb\x0f\xf8\x1dqO\xa9%Uep<?A\xed\xb6\
-\xa9 \xba\x19\xb1\xa6\x82\xe8\xbcA](`\xac\x0d\xab\
-\xfd\x94{\xda\xc0lM\x16U\xc6\xa7k\xba\xd55\xa7\
-\xe1~&A\x1d\x0d\xe6e\xae\xd4\x1b!\x9a\x15gj\
-o\xc3\x1b3\x0f,\x86\xb1\xb2`\xb6<\x1c#\xd4\xd5\
-\xd6\xa2\xddpA\x93\x18\x9f\x1a\x81\xec\x13\x13\xf8\x16u\
-\x11\xd88F\xb0\xfb\x07\xb2\xf3EmF\x809P&\
-\x88\xd9\xf1\x9d\x9b\xb9\x82\xbbq\xa6\xee\xc00V\x06>\
-\x90\x9dM\xfd:\xc5K\x00\xa8\xf1\x220\x07\xea\x8fe\
-v|\xf7\x94dr7\xce\xc3\xd7|\x06ce\x22\xf5\
-\xcb\xe6\x97\x1a\xce\xd73+B\xe1\x82&A\x1f&\xcd\
-\x8c-e;\xf8\xaa\x85<K<\x8e\xba\x08L]j\
-8\xc6K\x00\xee\x8d\x7f\x16.h\x12WE\xf52\xfd\
-#(\x8ft_\xf0\x0a\x8c\xb5a\x15Z\xaf\x07\x99[\
-<\xccK\x00x\xac\x08\xe5\xafL\x04\xb3c;\x94\xd3\
-_-\xb7\xc5>\x01ce\xa7\x10\x8d}K,6\xa4\
-\xac\xb2|\xb8\xa1\xc1\xec8v\xc0\xf4\xb8~\x9c*s\
-9\xd6WG\xdf\x0fcmX\x07Q<\xdc\xcf\xa2|\
-[`,\x8b\xb3\xd7\x9b\x1e\xd7\xd8\x8c\xe5\xdc\x8d3\xd5\
-\x09\x86\xa9\xb2U<|%OA\xa06-\xc0X\x22\
-\xf6\xc4\x9b\x1e\xd7\x9d\xc5\x07\xb9\x1b\xe7\xbc\xf2B\x98\xaa\
-g-\xb7\x9e\xd9*B,OA\x18\xbd\xfeK\xb8\xa1\
-\xc1|\xb8u\x8a\xb97\x85\x94`\xb5\x8a\xc3L\x84\x1f\
-\x8f\xee\x83\xa9z\xea\xae\xabH1\x963[\xed\xa1~\
-\xe0)\x08\xfd\x92F\xc1\x0d\x0d\xe6\xe5U\x1f\x9b^\xff\
-\x82G\xe8H\x0c\xc6\xda\xb0\x9cn\xf1{\x0bf#H\
-\xe3y\x0a\xc2M\xb3\x1e\x85\x1b\x1a\xcc\x83I#M\x8d\
-\xe9\x93\xc9c\xb9\x1cg\xba\x11\x09c\xf5\xa8qV\xcc\
-\xb3\x1d\xc5\xd5\xcf\x0b\xb7\xa4\x9e\xa8\xae\x80#\x1a\x085\
-\xda43\xa6tl\xc1#\xdf\xa5\xcf\x82\xa9z\x92,\
-\xbef=\xb3\x95\xc5\xa1\xbc\x05\x82j\x80\x02\xe3\xa0|\
-f3\xe39\xeb\xc0R.\xc7\xf9\x03\xd4Eh\xc4l\
-\x85'\xadwf+\x0b}y\x0bD\xec\xc1epD\
-\x838Zy\xdc\xf4x\xa6\x1d\xdd\xcf\xe5X\x8fX\xfb\
-9L\xd5\xd3/XY\xeac\xbd3\xdb\x88\xa0\xdbx\
-\x0b\xc4'\xdb\xdcpE\x9b|!o\xa7\x04\xe9}\xb8\
-xd\xf0\xb2wa\xac\x9e4E\xba\xc5rf\xdb6\
-\xbcg o\x81xv\xe58\xb8\xa2A,\xccZc\
-j,\xe9|\x98Wz$\xa2.\x82'Qc\x04\x87\
-\x15\xd1\x1e\xae\x84\xa7@\x08\x09\xcf\xc3\x15\x0db\xca\xee\
-\xb9\xa6\xc6\x92vw\xf8\x10\x09\x9dW\x17\xe1\xa8\xc3\xaa\
-\xb8\x14q\x1bO\xc1\xa0\x8aT5*\x0a\xd2\x18\x81\xd9\
-\xc5\xac\xe9\xdf\xe3\x95k\xa2\x1f\x80\xb16l\xb6[\xac\
-k\xb6\xb28\x97\xb7\x80P\x0bh\xe0{^\x5c5\xde\
-\xd48\xce\xd8\x9f\xc4\xe58\xd3\x8d9\x98\xaaG\xcd\xb6\
-\xb2\xd9~\xc9[@V\xe4m\x813\x1a\xc0\x03\x8b^\
-35\x8e\xa9E{\xb8\x1c\xe7\xc3\xe5E0U\xcf\xfa\
-\xdc\xcaf\xfb\x1ao\x01\x09\xdf=\x17\xceh\x00\xb7\xc6\
-\x0e6\xef#\x88\x22\xe9\xad\xd2y\x84\xd2\xdd`\xaa\x9e\
-..\x89\xafX\xd9l\xfb\xf1\x16\x901\x1b&\xc2\x19\
-}\x0c\x9d\x83w\x9c\xda\xdd\xb4\x18\xfe#\xf6qn\xc7\
-z9\xea\x224R\x84F|\xc0\xb2f\xdbV\xeev\
-\x03o\x01\x19\xb0\xf8\x0d\xb8\xa3\x8f9r\xb2\xd8\xd4\x18\
-\x0eZ\xfa6\xb7cM\xb7\xe6`\xac\x1e\xaf\xeav\xb6\
-\xac\xd9\x9emi~\x82\xa7\x80\xfcm\xf6 \xb8\xa3\x8f\
-\xd9V\xb4\xd7\xd4\x18\xfe{\xf3$n\xc7\xfa\xfb\x9d\xb3\
-a\xaa\x0dg\x22\x1c\xb7\x5c\x0b\xf3\x06\x8a\x88o\xe0*\
-\xe9\x99\xe3\xf3>\xa3X\x90\xb5\xda\xd4\x18N\xdb\xb7\x90\
-\xdb\xb1\x1e\xb75\x1c\xc6\xda\x90\x14a\x8d\xc3\xeah\x0f\
-:\x99\xb7\xc0P\xaf,\xe0;~\xd85\xc7\xd4\xf8m\
-.\xdc\xc5\xedX\xbf\x86\xba\x08\xec\xd4\xb1\xado\xb6\xd2\
-p\xde\x02\x13\x97\x91\x0c\x87\xf4!\xa1\x9b\xc3P*\xd3\
-$\x9eX\xfe\x1e\xcc\xb5\xe1\x0e\x0d\xff\xb4\xbe\xd9\xca\xa2\
-\xc8[`>\xdb\x1e\x09\x87\xf4!\xcf\xa5\x8c\xc3\x99\xbb\
-I\xf4L\xfc\x17\xcc\xb5\xc1j_\xc2}\x967[\x1e\
-\x0b\xd2\xbc\x90\xf2\x11\x1c\xd2\x87\xf4^8\xdc\xb4\xd8=\
-\xb2d\x0c\xd7c};\xea\x224\xa4\x9a\x80\xb0\x10\xa7\
-\x83\x05\xb4\x87\xcd\xe1)8A\xf3_\x82C\xfa\x90[\
-f?nZ\xec\xde\xdb\xf4\x1d\xd7c\xdd9\xba/\xcc\
-\xb5~&\xc2!\x07+\x04\xc8\xe2\x0c\x9e\x82\xd3iZ\
-\x1f\x14\xa4\xf1\x11gjj\xd4+\x22CL\x8b]\xe4\
-\xde\x05\xdc\x8e\xf5\xa93\xd5\xfa\x995\xcc\xf5\xbc\x8fc\
-\x8a0\x8d\x19\xb3u\xc9\xc2\xab\xbc\x05(\xbf\xa2\x08N\
-\xe9\x03\x0a*\x8e\x9a\x1a\xb7\x8dGvp;\xd64g\
-a\xae\x8c~\x1c\xe3\xb9k\xc3\xaa\xc3\xa9pJ\x1f\xb0\
-\xa5p\x97\xa9\x99\x08\xa5\xa7\xca\xb9\x1dkJY\x84\xb9\
-2\xd2\x9d\xc1#1\x03\x7f\xa5=t)O\x01\x8a\xd8\
-\x13\x0f\xa7\xf4\x01\x09\x87RL\x8b\xd9_c\x06r=\
-\xd6T\xb1\x0e\xe6ZO%t\x13\xd6\xc1\x12\xdaC/\
-\xe5)H\xefl\xfc\x16N\xe9\x03&\xed\x8c5-f\
-\xfd\x17\x8f\xe6z\xacg\x1fD]\x84\xfa)_\xe2\x22\
-\x07k\xb8\xdc\xc2\x7fx\x0a\xd2\xc0\xa5c\xe0\x94>\xe0\
-\xfd\xcd\x93L\x8b\xd9\xdb\x1b\xbf\xc1\x1f6\x18\xec\xf9\xad\
-\xcb\xc72g\xb6\x01\x8a\xd0\x9b\xa7 \xf1\x5c\xa6\xcf\x97\
-\x0c[\xf9\x01\xb7G?\x85'\x8bM\xfd\xf7>J\x8d\
-\x80\xb9\xd6\xcbD\x10C\x983\xdb\x8e\x91=~\xab=\
-|%O\x05ixm\x85\xedK\xcc\xbc\xd1\xb4\xae\xe0\
-G\xcb\xbcw\xe5\xe9S\xea}\xf1\xcf\xe9mj\xccb\
-\xe4\xda\xff\xc1`\xcf\xcd\xaf-\xef,\x8b\xbfv\xb0\x88\
-\xf6\x02Kx\x0a\xd6\xae\xe2\x0c\xb8e+\xb9y\xd6\xa3\
-\xa6\xc5\xab\xb8\xaa\xd42\xef\xfd\xbf\x1f\xa3LOE{\
-2y,\x0c\xf6\xdc\xe23\x89\x0eV\xd1^`\x14O\
-\xc1\x8a\xcfL\x81[\xb6\x82\xd35g\xd4\xf6J\xb0)\
-\xb1\xfa\xd3\xcc\x01\x96y\xef\x83\xa5\xb9\xea\x95S{\xea\
-\xcf5\xe1\xc7i\xa6\xfd\xbb\xbd\x12_\x85\xc9\x9e#i\
-8\xb3f\x1b\x18\x11\xfcW\x9e\x82\xf5\x85\xb6;\x01\xde\
-cf\xf3\xc1\x87\x92^\xb7\xcc{SV\x84?>\xb4\
-\xde\x11\xf7$\x0c\xb6\x8e\xda(\xc17:X\xc6\xa5\x88\
-\x99\xbc\x04\xeb\xe5U\x1f\xc31[\xc1\xa6\xc2\x9d\xa6\xc5\
-\xeaM\x8b\xf4\x8e\x8b\xcdX~\xces\xfdaZ\x1f}\
-\x87o\x06\xd7NG]\x84:\xda\xef`\x9d\x00\xb7\x10\
-\xc6K\xc0B\xe6\xbf\x0c\xc7l\x05s3W\x98\x16\xab\
-)\x16\xe8\x8a\x5cRU\xa6\xde8\xb3\xbf_\xda\xaa\xa3\
-.\xc2y\xe7\xb5\xb2\xf0-\xf3f\xebR\x84\x87y\x09\
-\xd85\xd1\x0f\xc01[\xc1w\xe9\xb3\xb8\xba^My\
-\xbe\x0d=\x1b\xf5\x053\x1a\xb3kP0P\xbf\xb6/\
-\xfb;\xdb\xb0\x10'O)`GL\xce\x95\xb4\x13\xef\
-n\xfc\xd6\xb48\x1d\xad<\xee\xd7w\xa5\xac\x03J\x17\
-l\xe8\xd9\xa8{\x82\xd1\xa4\xa3.B\xdd,\x84\x93\x1d\
-b\xc4\xcb\x1dv@{\xa18^\x02\xb76\x7f;\x5c\
-\xd3K\x86\xae\x085%F\x7f\x9c\xd1\xcf\xefY\x17T\
-\x03\xb9\xb1\xe73\xbad\xe7\xca\xbc\xad0\xda_4\xcb\
-a\x17\x02di0/\x81S\xf6\xce\x87kzI\xf7\
-\x05\xaf\x98\x12\xa3\xbe\x8bF\xfa\xf5=\xbfM\x8fi\xf2\
-\x19\xd3\x0dn\x22\x1a{p\x19L\xf6\x97\xf3\xda\x81\xb6\
-1[\xda\xa2k/U\xc1C\xe0\xc6n\xfa\x1e\xae\xe9\
-%T\x85\xcb\x8c\x18\x8d^\xff\xa5\xdf\xde\xf1P\xd9a\
-\xf5wQ=\x9b|\xc6\xc9\xbb\xe2\x0c}\x0e\xd4E\xf8\
-YeW\x85\xf5\xfd\x8d\xc3N\xb8\x14!\x96\x87\xe0\x0d\
-Z\xfa6\x5c\xd3\x0b\xaakN\xab\xed\x94 Sb\x14\
-\xee\xc7L\x84\xe6v\xb3}fE\xa8\xa1\xcf\xf1\xe1\xd6\
-)0\xda\xda*_3\x1cv\xc3\xa9\x88\x83x\x08^\
-\x979C\xe0\x9c^\x90s\xa2\xc0\xb4\x18\xad\xce\xdf\xe6\
-\x97w\x5c\x90\xb5\xba\xd9\xcfH)aF\xf2\xda\xda\xcf\
-a\xb6\xfa\xc71i\x80\xed\xcc\x96\xb6\xea\xda\xcb\x9d\xb0\
-{\xf0\xe8\xba\xa9\x99\xc5D\xec\x02}\x9d7+FE\
-\x95%\xa6\xbf\xdf\x89\xea\x0a\xf5\xa6\x16\xd6}\xd8w<\
-\xdb\xb0\xe7\x19\xb2\x1cu\x11\x5cn\xe18\xb3\x85g\x9a\
-\x91\x950\x9b\x87 \xee-9\x04\xf7l!s2\x92\
-M\x89\xcd\x0d~\xcaD\xa0.\xbe-}V\xf7\x9e\x04\
-\xc3\x9e\xc7\xcc\xeaj\x16N\xf9\x9a\xee\xb0+m#\xa5\
-\x9e<\x04\x91~.\x82\x96\xf1\xf5\x8e\x99\xa6\xc4\xe6\x81\
-E\xaf\x99\xfen\xdb\x8f\xee\xf5\xaa\xc0\xce\x0b)\x1f\x19\
-\xf6Lt\xdc\xc5\xbd\xd9F\x04\x05\xd9\xd6l\xa9\xb7\x8f\
-\xf6\x92\x19v\x0f\xe2\x97i\xd3\xe1\x9e-\xc4\xd3m*\
-\xd63\x11\x9a\xca\xa9\xf5W\x8f\xb4\xab\xa3\xef\xe7\xddl\
-\xf79T\xc7\x05\x0e;Cm'\xec\x1e\xc8\x7f\xad\xf9\
-\x14\xee\xd9B\x9eJ~\xdf\x96\x99\x08T\x83\xa15\xcf\
-K\xa9b\xbe\x86\x0a\x95s\x9f\x85\xe0\x16\xdev\xd8\x9d\
-vJ\xd0\xef\xb5\x97=m\xe7@\xf6H|\x05\xee\xd9\
-B\x82\xbd\xdc\xfdY9\x13\x81JFR\x15\xaf\xd6<\
-\xef\xf4\xfdI>\x7f\xae\xdc\xf2#\xbc\x9b\xed\xa9\x0e\xb2\
-x\xa5\x83\x07\xb4\x97M\xb0s0\xfd}\x1d\x94E\xfe\
-\x12\xf3\x88)\xb11\xb3\xcf\x97/\xfa\xa9\xbd\xba\xe6\xbf\
-\x86\x9c!sn\xb6q\x0e^p\xb9\xa5\x07\xed\x1eP\
-\x7f\x17:a\x09*\xf7\xe7\xa9(\x0b\xab\x7f\x04\x93\xb2\
-\xd7\xf9\xe4\x99o\x8b}\xc2\xe7\xcf\xb64w#\xe7G\
-\x08\xd2\xfd\xdc\x98\xad#\xac\xcb\xc5\xdaK\xe7\xd99\xa0\
-\x1b\x0av\xc0E\x9b\x09\x9dK\xda)\x13\xe1\xe4\xe9J\
-\xf5\xd6\xd8\xc1>{n:\x8e\xf0%3\xf6'\xf1l\
-\xb69\x8ed\xf1\x22\x07O\x04\xc8\xe2[v\x0ej\xd4\
-\xbeD\xb8h3Y\x93\xbf\xdd\x94\x98\x8cZ7\xc1\x94\
-\xf7\x19\xb75\xdc\xa7\xcfMEcXL\xb3\xb3h\xd1\
-\x997\x1c\xbc\xe1\x9cvo\x00\x15\x81\xb0kPC7\
-\x87\xc1E\x9bI\xcc\x81%\xb6\xc9D\xd8]\x9c\xa9^\
-\x11\x19\xe2\xd3\xe7~\xdd\xc7\x7f$hnrj\xb6%\
-\x81Q\xbd\xdb:xD{\xf9\xaf\xed\x1a\xd8\xc1\xcb\xde\
-\x85\x8b6\x13\xea(k\x87\xee\x0cT\x83\xb6\xf7\xc2\xe1\
->\x7f\xee\xbb\xe6\x0e\xf5\xe9sRj\x22\xa7\xdds\xbf\
-p\xf0\x8a3\xb2\xdb\xb5vM\x03\xbb#\xee)\xb8h\
-3\xa1\x9f\xf7v\xc8D\xa0\xa3#\x83>\xe8\xf8\xb4\x03\
-\x08U\xa6\xe3\xd0l\xab]\xe1A\xd78x\xc6\xae\xa5\
-\x17\xe9\xa7$\x95\x0d\x04\xd6X\xfcFg\x22\x90\x91\x1b\
-\xd9\xad6>3\x85\xb9\x9cf\x94R\xb4\x18\x81\x11A\
-w\xdb5\xc0\xfb\x0d\xac\xdad'\xee\x8d\x7f\xd6\xf0X\
-\xdc\xbfp\x84\xa1\xef\xf0\xcf\xd5\x9f\x18\xfa\xfcom\xf8\
-\xdag\xcfz\xcb\xec\xc7\xf9\xfb0\x16)\xde\xee\x00\xfa\
-\xd9\xedF;\x06xQ\xf6Z8i30rGh\
-F&\x02\xf5\xf32\xba-x\xb7\xf8\xe7}\xf6\xbcW\
-E\xf5\xe2\xcdlW\xc3em^\x0dl\xe2\x8e\x19p\
-\xd2&\xa0:\xaff\xc4\xc2\xa863Tg\xe0v\x13\
-*h\xd1\xa5\x8f\x92\xaa\xb2V?oy\xf5I\xfe\xce\
-k\x15A\x82\xcb\x9e\xb3\xbb\x15V\xda-\xc8\xc3\xd7|\
-\x067m\x02\xaa\xfd\xcbr&\xc2g\xdb#\x99\xfa\xa5\
-d\xd6\x05\x12\x0bi9\xdc\xb5\xfe\x872\xc9n\x81\xa6\
-4 \xd08\xcbr7\x99\x12\x8b#\x06d\x22\xec-\
-\xc9R;N\xedn\xda|z\x7f\xf3\xa4V?\xf3\xe6\
-\xc2]\x5c\x99-}\x13\x82\xbb6|v\xbb\xdcN\x81\
-\xbe\x01\x05i\x9a$r\xef\x02f3\x11\x1e^<\xda\
-\xd4\xf9\x142\xff\xe5V?3\xed\x8e9*\xa3\x98\x04\
-W\xe5(3\xa1\xb8\xaa\x14\x8e\xda\x08\x1f\xa7\xcaLf\
-\x22\xcc>\xb8\xd4/\xfd\xed\xcaN\x95[2\x17\xd8\x82\
-\xaaA\x06BS5\x13\xb4\xbfFv\x0a\xfa\xa6\xc2\x9d\
-p\xd4Fxe\xb5\xf1\xb7\x99|}\xdd\x95\xfe\x80\xde\
-8\xf3a\xbf\xcc\xa7\xe5\xb9\x9bZ\xf5\xec\x13\xd2\xa2y\
-1\xdb\xf9p\xd3\xa6v\xb7\x8a\xd0\x95\xfe*\xd9%\xe8\
-F\x14\x7f\xb6\x13\xfd\x92F\x19\x1e\x83\xb0\x9d\xb1>}\
-\xe677L\xf4\xdb|\x1a\x9f\x1a\xd1\xaag\xf7\xa6\xf1\
-$\x83]s\xcf`W\xdb\xfc\xcc\x04\xc5.\x81\xff`\
-\xcbd8j#\xdc\x11\xf7\xa4\xe11H9\xbc\xd5g\
-\xcfK\xa53\xcd\xa8\xbdk\xd4G\xd7\x17W\x8d\xe7a\
-W\x1b\x0e\x17m&\xbf\x9d\x1c\xdc\x91z\xba\xdb!\xf0\
-O&\x8f\x85\xa36\xc2\xef\xa2z2\x93\x89@E\xce\
-\xef\x9e7\xcc\xaf\xf3\x89\xb2\x1f*OWy\xfd\x0e\x03\
-\x16\xbfa\xfb\xca^\x97G\xf6\xb8\x02.\xda\xb2\xcc\x84\
-\xf7\xec\x10|_Wl\xb2\x13\xd4\xcd\xc2\xe8\xf1\xbf~\
-\xfaC>{\xde\xaf\xd2\xa6[bN\xb5\xa6\x8f\x9a\x90\
-\xf0\xbc\xbd\xaf\xe5\xba\xa57\xe1\x9e-\xa4\xb3,\xfe\xda\
-\x0em\xcfi'B\xed\xacA}\xcc\xe8\x85\xd5\xc7G\
-\xb9\xce\x19\xa5y\xa6\xec\xc2\x9b\xa3O\xb7)^\xbf\x07\
-\xb5G\xb7\xb1\xd9\xeeu\xc4\x0c\xbc\x04\xee\xe9\x05NE\
-\x1cd\x87I@\x0b\x15\xd4'1k\x0d3\x99\x08\x03\
-\x96\xbci\x99\xf9D\x1f\x15\xbd\xc5\xccK\x18\xa6K\x16\
-\xfb\xc15\xbdEu\x5c\xe0t\x8b\xebX\x9f\x04Kr\
-\xd6\xc3Y\x1b\x80\xea\x15\x18=\xf6?\xec\x9a\xd3\xea\xe7\
-\x9c\x97\xb9\xd2R\xf3\x89v\xd8Ug\xaa[\xfc\x1e\xc7\
-\xabN\xd89\x03a%\x0c\xb3\xb5y\xb7\x91\xe2\xcd\xda\
-@V\xb1<\x11\xbeM\x8f\x81\xb36\x80\x19\xedYZ\
-\x9b\x89@\xc5_\xfe4s\x80\xe5\xe6\xd4\xc6#-o\
-(J%?\xedyN+\x9el\xa3\x04\xdf\x08\xb7\xf4\
-I\xdd\x04\xe9\x03\x96'\xc3\xc8\xb5\xff\x83\xb36\xc0\xb3\
-+\xc7\x19>\xf6\x05\x15\xc7\x98\xcd\xa9mLt9\xc1\
-\x9b\xb45\x9b\xeel\xdf\x83K\xfa\x8a\x89\xbd/\xd5v\
-\xb7\xe9\xacN\x06\xb3Zh\xb3F\xaf\xc4W-\x9d\x89\
-\xb0\xe9H\xba_sj\x1b\xd3\xc0\xa5cZ\xfc>\xf3\
-\x0f\xad\xb2\xa3\xd1\xa6r\xd7\x9a\xdc\xf0\x9be\xb2x\x17\
-\xdd\x0caqB\xd0\xcfPP\x9f\x9bg=j\xd9L\
-\x04jit\x8f\x9fsj\x1b\xd3\x1f\xa6\xf5iq\x96\
-\x8b\xbc'\xc1nF{\xba\xad\x12t'\xdc\xd1\x88\xec\
-\x04\xb7\xf8=\xab\x13\xa3\xb4\x95\x05D\xec\x06\x19\x05\x15\
-V\xb1j&\xc2w\xe9\xb3,?\xa7R\x8b\xf6\xb4\xe8\
-\x9d\xcc\xac\xbdkNQpi\x22\x5c\xd1\xa8\xddmT\
-\xef\xb6\xda g\xb381\xb6\x16\xed\x86\xc3\xd6!\xb7\
-\xfc\x88e3\x11rN\x14\xa8\x9d\xb4\x9d\xa3\xdd>\xbc\
-\x8e\xb1\xe8\xf9\xb3\x97:\xd81\xb2\xc7o\xe1\x8aF~\
-,\x93\xc5~,N\x8e\x99\x07\x16\xc3a\xeb@_\xd3\
-\x8d\x1es\xea\x0d\xe6\x0dO,\x7f\x8f\x899E\xcfi\
-\xb5\x0f\x92\xe6u\xcb\x15\xfa\xc2\x0dM9N\x90\xbec\
-mr|\xb8u\x0a\x1c\xb6\x0es2\x92-\x99\x89\xb0\
- k53s\x8a\x1ae\x9e\xa9\xa9i\xf6\xbb=\x94\
-\xf4\xba]rj\xbf\x82\x0b\x9a{\x957\x8d\xa5\x092\
-tE(\x1c\xb6\x0e\xd4\x0c\xd3j\x99\x08\xd4|\xf2&\
-\x83?\xda\xf9Z;\x8b\x0f6\xfb\xfd\xee\xb6\xf0\x07\xbf\
-\x16\x18\xedv\xcaN\x82\x0b\x9a\x9a{\xdb\xedV\x96.\
-;\xd0\x97m`\xde\xf9\xa17\xa5\x08\xdf\xdd\xf8-s\
-\xe6\xd3\x92\xae\xc17\xce\xec\xcf\xfc\xe5\x85@\xb7t\x13\
-\xdc\xcf?\xb5\x13\xc6\xb02Q\xae\x9c\xda\xb3E?\xf9\
-\xec\xce\x90\xe5c\x8d\xbdH\xb2\xee\x8b\x16=\xcf\xb6\xa2\
-\xbdj;%\x889\x03z\xa6\x99\xbf\x98h\xee\xb1\xf8\
-~\xe7e\x1f\xbc\x0e\xd7\xf3\x17\xa1\xa1\x17\xba\x14a\x19\
-+\x93%\xab,\x1f.{\x161\xe1\x05\xcbtg\xa0\
-44)\xe1E&\x0d\x88v\xab\xcd\xa1\xa8\xb2\x84\xf5\
-]m\x22\xd5J\x81\xe9\xf9sw\x1b\xd9\xedZ-\x18\
-\xc7X\x980\xcbZ\xd9?\xcaNP\xe7a\xabd\x22\
-P\x8a\x18\xcbF\xb4\xefxv\x93\xef\xb8\xa7$\x93\xe5\
-w,\x0c\x88\x0c\xb9\x1ang\x05\xc3\x8d\x08\x0a\xd2\x02\
-Rm\xf5I3\xc9\xc7\xbd\xb0X\x85:\x0d\x04\xb8%\
-\x833\x11\x8e6\xebY\xf2\xca\x0b\xf5\xdbX,\x9b\xad\
-{OB\x93\xefI\x05\xc7\x19}\xbfS\xd4u\x1b.\
-g\xadt\xb07\xad>qF\xf9\xb8\xcb+\xab\x1c(\
-\xcd1t\x9c\xaf\x9b\xfe`\xb3\x9f\x85\xb2DX\xffB\
-O}\xc5\x9a\x22\xce\x84T;\x9c\xd3\xf2\x82\xea\xb8 \
-\xc0-\xcc\xb4\xf2\xc4\xa1<G\xa0\xeae\x0f\xad\x90\x89\
-\xb0\xd0\x84\xe2\xe5f\x88\xd2\xd5\x9a\x22|\xf7\x5c\x16\xd3\
-\xbc\x14\x18\x9bE\xe9\x10#^\xae\x05i\x87U'\x0f\
-\xb5$\x01\xaa\x1a\xbd\x7f\x91\xdf3\x11\xca\xabO\x1a^\
-\x08\xc7L\x1d*;\xdc\xe8\xfb~\xb2\xcd\xcd\xda;\xa5\
-\xe1:\xae\xc5\xa1\x22\xc2\xd4a\xd3\x92W\x0c\xdd\x92\x9e\
-8\xcf;F\x17DiN&\x82\x19\x85\xcb\xcd\xd4\xf4\
-\xfdI\x8d\xbe/\x1da1\xf4>\xc5m\xa7\x8a\x7f\x84\
-\x9b\xb1q~;\xc0\xaa\xe5\x18\xa9\xc9!\xef\xbc\xb6\xf6\
-sC\xc7xE\xde\x96F\xff\xfd\x1f\x8f\xee3\xbc\xe2\
-\x98\xd9zu\xcd\x7f\x1b}\xe7\xa7\x93\xff\xcd\xca\xd1\xc1\
-\x19\x97\x22=\x04\x17c\xcbp_\xb0\xe2d\x9a}p\
-)\xf7f\xfb\xc8\x921~\xcbD\xa0\xe4\xfe\xe0\xf9/\
-\xd9\xae\x88\xf6m\xb1O4:\xe6T\xdb\x97\x89|Z\
-E|\x0e\xee\xc5 .Y\xfc\xd2j\x93\xe9\xe3T\x99\
-{\xb3\xbdk\xeeP\xbfe\x22D\xec\x89\xb7m\xd3\xc3\
-\xc3\xe5E\x1e\xdf\xfb\xce\xb8\xa7Yx\x87\xcf\xe1Z\xac\
-B7\xcc\xdcb\x9c\x95&\xd4\xb0\x95\x1fpo\xb6F\
-\xd6\x8am,\x13\x81\xcc\xe8\xea\xe8\xfbmk\xb6\xb1\x07\
-\x97y|w\xfa#d\xed\x14/!\x96\xd6+L\x8b\
-a:\xc5t\xbd,@\x16\xd7[eRu\x8b\x7f\x9e\
-k\xa35\xba\x9dvc\xcd5\x9fK\x19g[\xa3m\
-\xac3\x05\xb5\xf81\xfa\x12I+\xaf\xe2\xae\xa5u\x0a\
-\xb7\xb2\x01\x81Qb'-\xa89V\x98XWE\xf5\
-RkT~\x0b\xd2PI@\x7f\xdc\xd2[\x9c\xbd\xde\
-\xd6FK\xa2\xe3\x99\x86\xa03l\x0b?wV\xfb)\
-\xdd\xaf\x82K\xd9\x08J%\xd1\x02\x9bg\x85\x09F-\
-ax\xc5h\xd3k(\x13\xe1\xe4\xe9J\xfd\x03\x92\xdd\
-\xcd\x96v\xafGN\x16\xd7{\xff\x1d\xc7\x0eX5\xf3\
- \xd7\xe9\x0e\xba\x1e\xeedC\x02\x22\xc5\x9b\xb5 \x17\
-\xf9{\x92%\xe7m\xe6\xd6l\x8d\xfe@\x95_Q\xff\
-#\x11u\xc9\xb0\xbb\xd1\xfe\xa4\xf8\xcc\x94z\xefO\xf3\
-\xcd\x82\xcf\x9aO9\xf1p%{g(\xfc\xc3\xdfU\
-\xc2ZR\xf0\xd9n\x8c\xdb\x1anh\x9b\x98\xf3\xd9]\
-\x9c\xa9^\x11\x19\xc2\x8d\xd9\xbe\xb5\xe1\xebzc@\xe9\
-\x86\x16\xdb\xd1\x1euM\x91n\x81\x1b\xf1p\x86\xab\x08\
-]\xb5\xa0\x97\xf9k\xb2\xbd\xb9a\x22\xb7f\xfb\xd2\xaa\
-\xf1\x86\x8dk\xaf\xc4W\xcf\xf9\xb7\xe8l\xbc7#\xf9\
-\xa5F~\x80\xfd~\xe7l+=ci\xa0,\xde\x05\
-\x17\xe2\x08\xa7[\x0a\xa66\x1b\xfe\x98p\xfd\x17\x8f\xe6\
-\xd6l\x1fX\xf4\x9ai\x99\x08S\xf7&re\xb4\xa4\
-@ERK\xaa\xcaL\xfb5\xd1\xd2\xb66T\x0e\x15\
-\xee\xc3\xe3\x91\x82\x22<\xec\x8f>f\x7f\x9b=\x88[\
-\xb3\xbd5v\xb0)\x99\x08\xf4\xa1\x88\x8e\x15x3[\
-RR\xf6\xbas\xc6|\x84\xc1\xd7\xa3\x9bytP\x85\
-k\xb8\xbc\x1bn\xa4$\x98}\xa4@\xbb\x8f\x8a\xeaJ\
-\xee\x8c\x96~\xd6w\x9c\xda\xdd\xb0qM8\xf4\xcb\xc7\
-\xa1\xe1k>\xe3\xd2hITd\xa7.O,\x7f\xcf\
-\xefG\x07.wP7\xb8\x0d\xa0,\x85{\xb5\xbf\xbc\
-\xc7\xcd\x9c\x80iG\xf7sg\xb6\x05\x15\xc7\x0c\x1d\xd3\
-\xbe\x8bF\xea\xad\x87\xc6\xa7FX:\x89\xdf\x8cR\x9e\
-Ks6\xe8\xedr\x16d\xad\xd6\xdb\xba\xfb\xf1yJ\
-\xb4X\xdc\x03\x97\x01u\xcfp\xbb\x98\x99\x166'#\
-\x99;\xb3\xddR\xb8\x8b[\x03\xe4T\x85\xce\x88\xa0\xdb\
-\xe0.\xc0SZ\xd8\x11\xb3\xaa\xebS\x87Y\x9e\xd4e\
-\xce\x10\x18\x10?\xca\x0b\x8c\x08\xfe+\x5c\x054\xf2\xd1\
-\xac\xdb\xadN\xb7x\x18\x8b\x05\x82\xbc\xbf\x19\x16\xa0\x04\
-\xff\x1dn\x02\x9a\xa4\xfd\xd4\xfb~\xa7M\x9a\xcdX4\
-\x10\xd4bm\xec \x8bW\xc2E@\xb3\xa1\xfeG\xda\
-\xc4\x89\xc7\xe2\x81\xa0fJ\x16\xe7\xa2o\x18\xf0\x8e\x98\
-\x81\xbfr)\xd2D,$\x08j\xd2hC\xa9\xc35\
-L\x03\xb4\xf2\x1cW\x1c\xa1M\xa8\xd3XT\x10TO\
-\xd5NYx\x1e.\x01|\x99\x1a\xf6\xa86\xb1N`\
-qA\xd0\xcf*s\xc9R\x7f\xb8\x03\xf09m\xe5n\
-7h\x13l\x07\x16\x19\x04\x89ih7\x0e\x0c\xa5C\
-\x8cx\xb96\xd1fc\xb1A\xbc*@\x91bh\x1d\
-\xc0\x0d\x80\xf1\xa8\x8e\x0b\x9c\x8a8\x06\xe7\xb8\x10o\xe7\
-\xb3\xf4\xfd\x02\x1f\xc2\x80\xe9\x04\xcab/\x7f\x17\x22\x87\
- \x93.*\x14P\xd1&\xacz\xe0\xe7s\x5ca\x03\
-\x16#dWQ\xf7[gD\xc8uX\xed\xc0\xff\x84\
-\x86^X\x9b\x1ef~m\x5c\x082\xb6\x06-\x8e\x0d\
-\x80%w\xb9\xc2\x1d\xda\x04\xdd\x83E\x0a\xb1\xff\x11L\
-\xdcM\x95\xf0\xb0\xaa\x81e\xe9\x14\xd3\xf52\xcdp\xbf\
-\xc2\x82\x85\x18\xde\xd1~E\xf3\x18\xab\x190A\x80[\
-x\x9c\xeayb\xe1B,}\x04\xa3\xcb;X\xbd\x80\
-=\xc3\x0d\x0bqj\xa6\x1b\xa6M\xe4\x1a,d\xc8\xc2\
-&{\x86v\xb34_\xb1j\x01\xdb\xa6+\x0b\xf7\xd1\
-\x19\x18\x165d\xc1L\x83]\xd4\x16\x0a\xab\x14\xd8\xea\
-,7@\x16?\xc1E\x08\xc82\x99\x06\xb2\x18\xdaY\
-\x16\x7f\x8d\xd5\x09lz\x96+\xdd\xa3M\xf6T,v\
-\xc8\x8f\xda\x1c(\x8bwa5\x02\xfbC\xd7}ea\
-\xa0K\x113\xb1\xf0!\x13\x95\x11 \x0b}\xb1\x00\x01\
-w\x5c\x15\xd6\xf77gk,\x94\xc1\x08 \x03UJ\
-\xf3\x0c\xe9\x5c\x80{\xda)A\xbfw)R$\xb2\x16\
- _g\x19P6L\xfb)\xdd\xaf\xc2*\x03\xa0\x0e\
-T\xe8C[$\xaba\x12\x90\x0f\x8cv%\xb2\x0c\x00\
-h\xdeG\xb4\xe50\x0c\xa8\xc5R\x84e\x81\x8a\xd0\x15\
-\xab\x08\x80\x16\xe0T\xc4\x10j\x0d\x0d\x13\x81\xb0\x93\x05\
-\xc0hBC/\x0c\x90\xa5\xc1\xdabJ\x87\xa1@\x0d\
-\xb5\xa7\xd1\xfe(\x0f\xa2y\x82\xc5\x02\x80\xaf\x8e\x17\xb4\
-\x9d\x8b\xb6\xb8\x12\xf0!\x8d{Q\xfc\x13\xb0\x93\x05\xc0\
-`\xce\x16,\xff\xca\xe9\x16O\xc2x\xb8R\x05\xc5\x1d\
-\x8d\x16\x010\x19\x97,v\xae-\xe7(\x1c\x87\x11\xd9\
-Z%\x9a&\xb8\xc2\x83\xae\xc1\xac\x07\xc0\x9fL\xec}\
-\xa9~#\xcd-.\xc1\x11\x83\xad\x8e\x0a\x96P\x5c\x1d\
-1\x03/\xc1$\x07\xc0\x82G\x0c\xb5\x05o\x84\x02\x18\
-\x16\x93\xca\xa2\x0218*\x00\x80\x11j;FHO\
-\x9d\xdd\xedV\xc3\xc4\xac\xdd\x22<\xc0-$\x05(\xe2\
-\x10T\xe1\x02\x80a\xa8\x06\x03\x15 9{%\xf8\x04\
-\xcc\xcd\x12:A\xf1\xa0\xb8P|0K\x01\xb0\x19m\
-\x94\xe0vNE|\x8evR\xd8\xf1\x9a\xaeSN\xb7\
-\xb8\xd0%K\xc3\xda\x86\xf7\x0c\xc4l\x04\x80\xa3\xa3\x86\
-\xda[j\xc2W(\xf7h`'\x04Y\xfc\x84\xc6\x19\
-U\xb7\x00\x00:\xce\x88\x90\xeb4\xd3\x1dQ{\xce+\
-T\xc1,\xbdR%]8p\xba\xa5\x17h<1\xab\
-\x00\x00M\x1e7\xb8\xdc\xd2\x83\x01n\xe1S\xcd<V\
-\xe1\x02\x85\xc7\x9d+\x8dK\x8a\xb6s\xfd\x98\xce_q\
-<\x00\x00h\x1d\x13{_\x1a\x18\x11t\xb7f.\xa3\
-]\xb28W\xdb\xf9\xe6rZ\xf0\x85\xde;N\xd3(\
-\xbd\xba\x16r`\x01\x00F\xd3~\xca=m\xb4\x9f\xcb\
-]jS\xcc\xe8&\x9b^\x8b\xd7.]'\xcaj\xdf\
-\x87\xdeKz\x8a\xde\x93\xde\x17Q\x07\x00X\x83\xb0.\
-\x17\x07(\xc1\x7f\xd7\xcci\x00\xed\xfe4}\xe3T\x84\
-\x05g\xab\x96UX\xb0\xd6\x00=\xd7|M_\xbb\x14\
-\xe9u\x97,\xf5\x0f\x90\xbb\xfd\x8d\xde\x03\xc1\x04\x000\
-K\x07Y\xbc\x92~~\xeby\xbf\xb28\x94\x0c\x99\xce\
-;\xb5\xff\x19~\xf6\xe7yJ\xad\x01\x0a\x07j%\x16\
-j:\xe6\xb9\xfe\x83\xfe\x9f\x1f\xab\xfd\xdf\xfb\xe9\xbf\xa3\
-\xff\xf7Wj\xff\xd9\x1cM\x935\xe3\x1f\xaf\x1b\xbf\xf6\
-\xef\xd1\xbfK\x9de\xe99\x10\x0d\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x8c\xe0\xff\x01/\x9b\xa0\xe9\xec\
-0\x8e\x92\x00\x00\x00\x00IEND\xaeB`\x82\
-"
-
-qt_resource_name = b"\
-\x00\x06\
-\x07\x03}\xc3\
-\x00i\
-\x00m\x00a\x00g\x00e\x00s\
-\x00\x09\
-\x08\x97\x8a'\
-\x00h\
-\x00e\x00a\x00r\x00t\x00.\x00p\x00n\x00g\
-\x00\x07\
-\x08wW\x87\
-\x00b\
-\x00a\x00d\x00.\x00p\x00n\x00g\
-\x00\x09\
-\x08\x9b\xa0G\
-\x00t\
-\x00r\x00a\x00s\x00h\x00.\x00p\x00n\x00g\
-"
-
-qt_resource_struct = b"\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00*\x00\x00\x00\x00\x00\x01\x00\x00d\xb8\
-\x00\x00\x01r\x0e\xc2\x8cT\
-\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01r\x0e\xc2\x8cW\
-\x00\x00\x00>\x00\x00\x00\x00\x00\x01\x00\x00n|\
-\x00\x00\x01r\x0e\xc2\x8cW\
-"
-
-def qInitResources():
- QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-def qCleanupResources():
- QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-qInitResources()
diff --git a/examples/widgets/systray/window.py b/examples/widgets/systray/window.py
deleted file mode 100644
index 828aebecd..000000000
--- a/examples/widgets/systray/window.py
+++ /dev/null
@@ -1,273 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from PySide6.QtCore import Slot
-from PySide6.QtGui import QAction, QIcon
-from PySide6.QtWidgets import (QCheckBox, QComboBox, QDialog,
- QGridLayout, QGroupBox, QHBoxLayout, QLabel,
- QLineEdit, QMenu, QMessageBox, QPushButton,
- QSpinBox, QStyle, QSystemTrayIcon, QTextEdit,
- QVBoxLayout)
-
-import rc_systray
-
-
-class Window(QDialog):
- def __init__(self, parent=None):
- super().__init__(parent)
-
- self._icon_group_box = QGroupBox()
- self._icon_label = QLabel()
- self._icon_combo_box = QComboBox()
- self._show_icon_check_box = QCheckBox()
-
- self._message_group_box = QGroupBox()
- self._type_label = QLabel()
- self._duration_label = QLabel()
- self._duration_warning_label = QLabel()
- self._title_label = QLabel()
- self._body_label = QLabel()
-
- self._type_combo_box = QComboBox()
- self._duration_spin_box = QSpinBox()
- self._title_edit = QLineEdit()
- self._body_edit = QTextEdit()
- self._show_message_button = QPushButton()
-
- self._minimize_action = QAction()
- self._maximize_action = QAction()
- self._restore_action = QAction()
- self._quit_action = QAction()
-
- self._tray_icon = QSystemTrayIcon()
- self._tray_icon_menu = QMenu()
-
- self.create_icon_group_box()
- self.create_message_group_box()
-
- self._icon_label.setMinimumWidth(self._duration_label.sizeHint().width())
-
- self.create_actions()
- self.create_tray_icon()
-
- self._show_message_button.clicked.connect(self.show_message)
- self._show_icon_check_box.toggled.connect(self._tray_icon.setVisible)
- self._icon_combo_box.currentIndexChanged.connect(self.set_icon)
- self._tray_icon.messageClicked.connect(self.message_clicked)
- self._tray_icon.activated.connect(self.icon_activated)
-
- self._main_layout = QVBoxLayout()
- self._main_layout.addWidget(self._icon_group_box)
- self._main_layout.addWidget(self._message_group_box)
- self.setLayout(self._main_layout)
-
- self._icon_combo_box.setCurrentIndex(1)
- self._tray_icon.show()
-
- self.setWindowTitle("Systray")
- self.resize(400, 300)
-
- def setVisible(self, visible):
- self._minimize_action.setEnabled(visible)
- self._maximize_action.setEnabled(not self.isMaximized())
- self._restore_action.setEnabled(self.isMaximized() or not visible)
- super().setVisible(visible)
-
- def closeEvent(self, event):
- if not event.spontaneous() or not self.isVisible():
- return
- if self._tray_icon.isVisible():
- QMessageBox.information(self, "Systray",
- "The program will keep running in the system tray. "
- "To terminate the program, choose <b>Quit</b> in the context "
- "menu of the system tray entry.")
- self.hide()
- event.ignore()
-
- @Slot(int)
- def set_icon(self, index):
- icon = self._icon_combo_box.itemIcon(index)
- self._tray_icon.setIcon(icon)
- self.setWindowIcon(icon)
- self._tray_icon.setToolTip(self._icon_combo_box.itemText(index))
-
- @Slot(str)
- def icon_activated(self, reason):
- if reason == QSystemTrayIcon.Trigger:
- pass
- if reason == QSystemTrayIcon.DoubleClick:
- self._icon_combo_box.setCurrentIndex(
- (self._icon_combo_box.currentIndex() + 1) % self._icon_combo_box.count()
- )
- if reason == QSystemTrayIcon.MiddleClick:
- self.show_message()
-
- @Slot()
- def show_message(self):
- self._show_icon_check_box.setChecked(True)
- selected_icon = self._type_combo_box.itemData(self._type_combo_box.currentIndex())
- msg_icon = QSystemTrayIcon.MessageIcon(selected_icon)
-
- if selected_icon == -1: # custom icon
- icon = QIcon(self._icon_combo_box.itemIcon(self._icon_combo_box.currentIndex()))
- self._tray_icon.showMessage(
- self._title_edit.text(),
- self._body_edit.toPlainText(),
- icon,
- self._duration_spin_box.value() * 1000,
- )
- else:
- self._tray_icon.showMessage(
- self._title_edit.text(),
- self._body_edit.toPlainText(),
- msg_icon,
- self._duration_spin_box.value() * 1000,
- )
-
- @Slot()
- def message_clicked(self):
- QMessageBox.information(None, "Systray",
- "Sorry, I already gave what help I could.\n"
- "Maybe you should try asking a human?")
-
- def create_icon_group_box(self):
- self._icon_group_box = QGroupBox("Tray Icon")
-
- self._icon_label = QLabel("Icon:")
-
- self._icon_combo_box = QComboBox()
- self._icon_combo_box.addItem(QIcon(":/images/bad.png"), "Bad")
- self._icon_combo_box.addItem(QIcon(":/images/heart.png"), "Heart")
- self._icon_combo_box.addItem(QIcon(":/images/trash.png"), "Trash")
-
- self._show_icon_check_box = QCheckBox("Show icon")
- self._show_icon_check_box.setChecked(True)
-
- icon_layout = QHBoxLayout()
- icon_layout.addWidget(self._icon_label)
- icon_layout.addWidget(self._icon_combo_box)
- icon_layout.addStretch()
- icon_layout.addWidget(self._show_icon_check_box)
- self._icon_group_box.setLayout(icon_layout)
-
- def create_message_group_box(self):
- self._message_group_box = QGroupBox("Balloon Message")
-
- self._type_label = QLabel("Type:")
-
- self._type_combo_box = QComboBox()
- self._type_combo_box.addItem("None", QSystemTrayIcon.NoIcon)
- self._type_combo_box.addItem(
- self.style().standardIcon(QStyle.SP_MessageBoxInformation),
- "Information",
- QSystemTrayIcon.Information,
- )
- self._type_combo_box.addItem(
- self.style().standardIcon(QStyle.SP_MessageBoxWarning),
- "Warning",
- QSystemTrayIcon.Warning,
- )
- self._type_combo_box.addItem(
- self.style().standardIcon(QStyle.SP_MessageBoxCritical),
- "Critical",
- QSystemTrayIcon.Critical,
- )
- self._type_combo_box.addItem(QIcon(), "Custom icon", -1)
- self._type_combo_box.setCurrentIndex(1)
-
- self._duration_label = QLabel("Duration:")
-
- self._duration_spin_box = QSpinBox()
- self._duration_spin_box.setRange(5, 60)
- self._duration_spin_box.setSuffix(" s")
- self._duration_spin_box.setValue(15)
-
- self._duration_warning_label = QLabel("(some systems might ignore this hint)")
- self._duration_warning_label.setIndent(10)
-
- self._title_label = QLabel("Title:")
- self._title_edit = QLineEdit("Cannot connect to network")
- self._body_label = QLabel("Body:")
-
- self._body_edit = QTextEdit()
- self._body_edit.setPlainText("Don't believe me. Honestly, I don't have a clue."
- "\nClick this balloon for details.")
-
- self._show_message_button = QPushButton("Show Message")
- self._show_message_button.setDefault(True)
-
- message_layout = QGridLayout()
- message_layout.addWidget(self._type_label, 0, 0)
- message_layout.addWidget(self._type_combo_box, 0, 1, 1, 2)
- message_layout.addWidget(self._duration_label, 1, 0)
- message_layout.addWidget(self._duration_spin_box, 1, 1)
- message_layout.addWidget(self._duration_warning_label, 1, 2, 1, 3)
- message_layout.addWidget(self._title_label, 2, 0)
- message_layout.addWidget(self._title_edit, 2, 1, 1, 4)
- message_layout.addWidget(self._body_label, 3, 0)
- message_layout.addWidget(self._body_edit, 3, 1, 2, 4)
- message_layout.addWidget(self._show_message_button, 5, 4)
- message_layout.setColumnStretch(3, 1)
- message_layout.setRowStretch(4, 1)
- self._message_group_box.setLayout(message_layout)
-
- def create_actions(self):
- self._minimize_action = QAction("Minimize", self)
- self._minimize_action.triggered.connect(self.hide)
-
- self._maximize_action = QAction("Maximize", self)
- self._maximize_action.triggered.connect(self.showMaximized)
-
- self._restore_action = QAction("Restore", self)
- self._restore_action.triggered.connect(self.showNormal)
-
- self._quit_action = QAction("Quit", self)
- self._quit_action.triggered.connect(qApp.quit)
-
- def create_tray_icon(self):
- self._tray_icon_menu = QMenu(self)
- self._tray_icon_menu.addAction(self._minimize_action)
- self._tray_icon_menu.addAction(self._maximize_action)
- self._tray_icon_menu.addAction(self._restore_action)
- self._tray_icon_menu.addSeparator()
- self._tray_icon_menu.addAction(self._quit_action)
-
- self._tray_icon = QSystemTrayIcon(self)
- self._tray_icon.setContextMenu(self._tray_icon_menu)
diff --git a/examples/widgets/tetrix/tetrix.py b/examples/widgets/tetrix/tetrix.py
deleted file mode 100644
index 1427c9770..000000000
--- a/examples/widgets/tetrix/tetrix.py
+++ /dev/null
@@ -1,507 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide6 port of the widgets/widgets/tetrix example from Qt v5.x"""
-
-from enum import IntEnum
-import random
-import sys
-
-from PySide6.QtCore import QBasicTimer, QSize, Qt, Signal, Slot
-from PySide6.QtGui import QColor, QPainter
-from PySide6.QtWidgets import (QApplication, QFrame, QGridLayout, QLabel,
- QLCDNumber, QPushButton, QWidget)
-
-
-class Piece(IntEnum):
- NoShape = 0
- ZShape = 1
- SShape = 2
- LineShape = 3
- TShape = 4
- SquareShape = 5
- LShape = 6
- MirroredLShape = 7
-
-
-class TetrixWindow(QWidget):
- def __init__(self):
- super().__init__()
-
- self.board = TetrixBoard()
-
- next_piece_label = QLabel()
- next_piece_label.setFrameStyle(QFrame.Box | QFrame.Raised)
- next_piece_label.setAlignment(Qt.AlignCenter)
- self.board.set_next_piece_label(next_piece_label)
-
- score_lcd = QLCDNumber(5)
- score_lcd.setSegmentStyle(QLCDNumber.Filled)
- level_lcd = QLCDNumber(2)
- level_lcd.setSegmentStyle(QLCDNumber.Filled)
- lines_lcd = QLCDNumber(5)
- lines_lcd.setSegmentStyle(QLCDNumber.Filled)
-
- start_button = QPushButton("&Start")
- start_button.setFocusPolicy(Qt.NoFocus)
- quit_button = QPushButton("&Quit")
- quit_button.setFocusPolicy(Qt.NoFocus)
- pause_button = QPushButton("&Pause")
- pause_button.setFocusPolicy(Qt.NoFocus)
-
- start_button.clicked.connect(self.board.start)
- pause_button.clicked.connect(self.board.pause)
- quit_button.clicked.connect(qApp.quit)
- self.board.score_changed.connect(score_lcd.display)
- self.board.level_changed.connect(level_lcd.display)
- self.board.lines_removed_changed.connect(lines_lcd.display)
-
- layout = QGridLayout(self)
- layout.addWidget(self.create_label("NEXT"), 0, 0)
- layout.addWidget(next_piece_label, 1, 0)
- layout.addWidget(self.create_label("LEVEL"), 2, 0)
- layout.addWidget(level_lcd, 3, 0)
- layout.addWidget(start_button, 4, 0)
- layout.addWidget(self.board, 0, 1, 6, 1)
- layout.addWidget(self.create_label("SCORE"), 0, 2)
- layout.addWidget(score_lcd, 1, 2)
- layout.addWidget(self.create_label("LINES REMOVED"), 2, 2)
- layout.addWidget(lines_lcd, 3, 2)
- layout.addWidget(quit_button, 4, 2)
- layout.addWidget(pause_button, 5, 2)
-
- self.setWindowTitle("Tetrix")
- self.resize(550, 370)
-
- def create_label(self, text):
- lbl = QLabel(text)
- lbl.setAlignment(Qt.AlignHCenter | Qt.AlignBottom)
- return lbl
-
-
-class TetrixBoard(QFrame):
- board_width = 10
- board_height = 22
-
- score_changed = Signal(int)
-
- level_changed = Signal(int)
-
- lines_removed_changed = Signal(int)
-
- def __init__(self, parent=None):
- super().__init__(parent)
-
- self.timer = QBasicTimer()
- self.nextPieceLabel = None
- self._is_waiting_after_line = False
- self._cur_piece = TetrixPiece()
- self._next_piece = TetrixPiece()
- self._cur_x = 0
- self._cur_y = 0
- self._num_lines_removed = 0
- self._num_pieces_dropped = 0
- self.score = 0
- self.level = 0
- self.board = None
-
- self.setFrameStyle(QFrame.Panel | QFrame.Sunken)
- self.setFocusPolicy(Qt.StrongFocus)
- self._is_started = False
- self._is_paused = False
- self.clear_board()
-
- self._next_piece.set_random_shape()
-
- def shape_at(self, x, y):
- return self.board[(y * TetrixBoard.board_width) + x]
-
- def set_shape_at(self, x, y, shape):
- self.board[(y * TetrixBoard.board_width) + x] = shape
-
- def timeout_time(self):
- return 1000 / (1 + self.level)
-
- def square_width(self):
- return self.contentsRect().width() / TetrixBoard.board_width
-
- def square_height(self):
- return self.contentsRect().height() / TetrixBoard.board_height
-
- def set_next_piece_label(self, label):
- self.nextPieceLabel = label
-
- def sizeHint(self):
- return QSize(TetrixBoard.board_width * 15 + self.frameWidth() * 2,
- TetrixBoard.board_height * 15 + self.frameWidth() * 2)
-
- def minimum_size_hint(self):
- return QSize(TetrixBoard.board_width * 5 + self.frameWidth() * 2,
- TetrixBoard.board_height * 5 + self.frameWidth() * 2)
-
- def start(self):
- if self._is_paused:
- return
-
- self._is_started = True
- self._is_waiting_after_line = False
- self._num_lines_removed = 0
- self._num_pieces_dropped = 0
- self.score = 0
- self.level = 1
- self.clear_board()
-
- self.lines_removed_changed.emit(self._num_lines_removed)
- self.score_changed.emit(self.score)
- self.level_changed.emit(self.level)
-
- self.new_piece()
- self.timer.start(self.timeout_time(), self)
-
- def pause(self):
- if not self._is_started:
- return
-
- self._is_paused = not self._is_paused
- if self._is_paused:
- self.timer.stop()
- else:
- self.timer.start(self.timeout_time(), self)
-
- self.update()
-
- def paintEvent(self, event):
- super(TetrixBoard, self).paintEvent(event)
-
- painter = QPainter(self)
- rect = self.contentsRect()
-
- if self._is_paused:
- painter.drawText(rect, Qt.AlignCenter, "Pause")
- return
-
- board_top = rect.bottom() - TetrixBoard.board_height * self.square_height()
-
- for i in range(TetrixBoard.board_height):
- for j in range(TetrixBoard.board_width):
- shape = self.shape_at(j, TetrixBoard.board_height - i - 1)
- if shape != Piece.NoShape:
- self.draw_square(painter,
- rect.left() + j * self.square_width(),
- board_top + i * self.square_height(), shape)
-
- if self._cur_piece.shape() != Piece.NoShape:
- for i in range(4):
- x = self._cur_x + self._cur_piece.x(i)
- y = self._cur_y - self._cur_piece.y(i)
- self.draw_square(painter, rect.left() + x * self.square_width(),
- board_top + (TetrixBoard.board_height - y - 1) * self.square_height(),
- self._cur_piece.shape())
-
- def keyPressEvent(self, event):
- if not self._is_started or self._is_paused or self._cur_piece.shape() == Piece.NoShape:
- super(TetrixBoard, self).keyPressEvent(event)
- return
-
- key = event.key()
- if key == Qt.Key_Left:
- self.try_move(self._cur_piece, self._cur_x - 1, self._cur_y)
- elif key == Qt.Key_Right:
- self.try_move(self._cur_piece, self._cur_x + 1, self._cur_y)
- elif key == Qt.Key_Down:
- self.try_move(self._cur_piece.rotated_right(), self._cur_x, self._cur_y)
- elif key == Qt.Key_Up:
- self.try_move(self._cur_piece.rotated_left(), self._cur_x, self._cur_y)
- elif key == Qt.Key_Space:
- self.drop_down()
- elif key == Qt.Key_D:
- self.one_line_down()
- else:
- super(TetrixBoard, self).keyPressEvent(event)
-
- def timerEvent(self, event):
- if event.timerId() == self.timer.timerId():
- if self._is_waiting_after_line:
- self._is_waiting_after_line = False
- self.new_piece()
- self.timer.start(self.timeout_time(), self)
- else:
- self.one_line_down()
- else:
- super(TetrixBoard, self).timerEvent(event)
-
- def clear_board(self):
- self.board = [Piece.NoShape for i in range(TetrixBoard.board_height * TetrixBoard.board_width)]
-
- def drop_down(self):
- drop_height = 0
- new_y = self._cur_y
- while new_y > 0:
- if not self.try_move(self._cur_piece, self._cur_x, new_y - 1):
- break
- new_y -= 1
- drop_height += 1
-
- self.piece_dropped(drop_height)
-
- def one_line_down(self):
- if not self.try_move(self._cur_piece, self._cur_x, self._cur_y - 1):
- self.piece_dropped(0)
-
- def piece_dropped(self, dropHeight):
- for i in range(4):
- x = self._cur_x + self._cur_piece.x(i)
- y = self._cur_y - self._cur_piece.y(i)
- self.set_shape_at(x, y, self._cur_piece.shape())
-
- self._num_pieces_dropped += 1
- if self._num_pieces_dropped % 25 == 0:
- self.level += 1
- self.timer.start(self.timeout_time(), self)
- self.level_changed.emit(self.level)
-
- self.score += dropHeight + 7
- self.score_changed.emit(self.score)
- self.remove_full_lines()
-
- if not self._is_waiting_after_line:
- self.new_piece()
-
- def remove_full_lines(self):
- num_full_lines = 0
-
- for i in range(TetrixBoard.board_height - 1, -1, -1):
- line_is_full = True
-
- for j in range(TetrixBoard.board_width):
- if self.shape_at(j, i) == Piece.NoShape:
- line_is_full = False
- break
-
- if line_is_full:
- num_full_lines += 1
- for k in range(TetrixBoard.board_height - 1):
- for j in range(TetrixBoard.board_width):
- self.set_shape_at(j, k, self.shape_at(j, k + 1))
-
- for j in range(TetrixBoard.board_width):
- self.set_shape_at(j, TetrixBoard.board_height - 1, Piece.NoShape)
-
- if num_full_lines > 0:
- self._num_lines_removed += num_full_lines
- self.score += 10 * num_full_lines
- self.lines_removed_changed.emit(self._num_lines_removed)
- self.score_changed.emit(self.score)
-
- self.timer.start(500, self)
- self._is_waiting_after_line = True
- self._cur_piece.setShape(Piece.NoShape)
- self.update()
-
- def new_piece(self):
- self._cur_piece = self._next_piece
- self._next_piece.set_random_shape()
- self.show_next_piece()
- self._cur_x = TetrixBoard.board_width // 2 + 1
- self._cur_y = TetrixBoard.board_height - 1 + self._cur_piece.min_y()
-
- if not self.try_move(self._cur_piece, self._cur_x, self._cur_y):
- self._cur_piece.setShape(Piece.NoShape)
- self.timer.stop()
- self._is_started = False
-
- def show_next_piece(self):
- if self.nextPieceLabel is not None:
- return
-
- dx = self._next_piece.max_x() - self._next_piece.min_x() + 1
- dy = self._next_piece.max_y() - self._next_piece.min_y() + 1
-
- pixmap = QPixmap(dx * self.square_width(), dy * self.square_height())
- painter = QPainter(pixmap)
- painter.fillRect(pixmap.rect(), self.nextPieceLabel.palette().background())
-
- for int in range(4):
- x = self._next_piece.x(i) - self._next_piece.min_x()
- y = self._next_piece.y(i) - self._next_piece.min_y()
- self.draw_square(painter, x * self.square_width(),
- y * self.square_height(), self._next_piece.shape())
-
- self.nextPieceLabel.setPixmap(pixmap)
-
- def try_move(self, newPiece, newX, newY):
- for i in range(4):
- x = newX + newPiece.x(i)
- y = newY - newPiece.y(i)
- if x < 0 or x >= TetrixBoard.board_width or y < 0 or y >= TetrixBoard.board_height:
- return False
- if self.shape_at(x, y) != Piece.NoShape:
- return False
-
- self._cur_piece = newPiece
- self._cur_x = newX
- self._cur_y = newY
- self.update()
- return True
-
- def draw_square(self, painter, x, y, shape):
- color_table = [0x000000, 0xCC6666, 0x66CC66, 0x6666CC,
- 0xCCCC66, 0xCC66CC, 0x66CCCC, 0xDAAA00]
-
- color = QColor(color_table[shape])
- painter.fillRect(x + 1, y + 1, self.square_width() - 2,
- self.square_height() - 2, color)
-
- painter.setPen(color.lighter())
- painter.drawLine(x, y + self.square_height() - 1, x, y)
- painter.drawLine(x, y, x + self.square_width() - 1, y)
-
- painter.setPen(color.darker())
- painter.drawLine(x + 1, y + self.square_height() - 1,
- x + self.square_width() - 1, y + self.square_height() - 1)
- painter.drawLine(x + self.square_width() - 1,
- y + self.square_height() - 1, x + self.square_width() - 1, y + 1)
-
-
-class TetrixPiece(object):
- coords_table = (
- ((0, 0), (0, 0), (0, 0), (0, 0)),
- ((0, -1), (0, 0), (-1, 0), (-1, 1)),
- ((0, -1), (0, 0), (1, 0), (1, 1)),
- ((0, -1), (0, 0), (0, 1), (0, 2)),
- ((-1, 0), (0, 0), (1, 0), (0, 1)),
- ((0, 0), (1, 0), (0, 1), (1, 1)),
- ((-1, -1), (0, -1), (0, 0), (0, 1)),
- ((1, -1), (0, -1), (0, 0), (0, 1))
- )
-
- def __init__(self):
- self.coords = [[0,0] for _ in range(4)]
- self._piece_shape = Piece.NoShape
-
- self.set_shape(Piece.NoShape)
-
- def shape(self):
- return self._piece_shape
-
- def set_shape(self, shape):
- table = TetrixPiece.coords_table[shape]
- for i in range(4):
- for j in range(2):
- self.coords[i][j] = table[i][j]
-
- self._piece_shape = shape
-
- def set_random_shape(self):
- self.set_shape(random.randint(1, 7))
-
- def x(self, index):
- return self.coords[index][0]
-
- def y(self, index):
- return self.coords[index][1]
-
- def set_x(self, index, x):
- self.coords[index][0] = x
-
- def set_y(self, index, y):
- self.coords[index][1] = y
-
- def min_x(self):
- m = self.coords[0][0]
- for i in range(4):
- m = min(m, self.coords[i][0])
-
- return m
-
- def max_x(self):
- m = self.coords[0][0]
- for i in range(4):
- m = max(m, self.coords[i][0])
-
- return m
-
- def min_y(self):
- m = self.coords[0][1]
- for i in range(4):
- m = min(m, self.coords[i][1])
-
- return m
-
- def max_y(self):
- m = self.coords[0][1]
- for i in range(4):
- m = max(m, self.coords[i][1])
-
- return m
-
- def rotated_left(self):
- if self._piece_shape == Piece.SquareShape:
- return self
-
- result = TetrixPiece()
- result._piece_shape = self._piece_shape
- for i in range(4):
- result.set_x(i, self.y(i))
- result.set_y(i, -self.x(i))
-
- return result
-
- def rotated_right(self):
- if self._piece_shape == Piece.SquareShape:
- return self
-
- result = TetrixPiece()
- result._piece_shape = self._piece_shape
- for i in range(4):
- result.set_x(i, -self.y(i))
- result.set_y(i, self.x(i))
-
- return result
-
-
-if __name__ == '__main__':
- app = QApplication(sys.argv)
- window = TetrixWindow()
- window.show()
- random.seed(None)
- sys.exit(app.exec())
diff --git a/examples/widgets/thread_signals/thread_signals.py b/examples/widgets/thread_signals/thread_signals.py
new file mode 100644
index 000000000..ae8e1ba72
--- /dev/null
+++ b/examples/widgets/thread_signals/thread_signals.py
@@ -0,0 +1,62 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from PySide6.QtCore import QObject, QThread, Signal, Slot
+from PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
+
+
+# Create a basic window with a layout and a button
+class MainForm(QWidget):
+ def __init__(self):
+ super().__init__()
+ self.setWindowTitle("My Form")
+ self.layout = QVBoxLayout()
+ self.button = QPushButton("Click me!")
+ self.button.clicked.connect(self.start_thread)
+ self.layout.addWidget(self.button)
+ self.setLayout(self.layout)
+
+ # Instantiate and start a new thread
+ def start_thread(self):
+ instanced_thread = WorkerThread(self)
+ instanced_thread.start()
+
+ # Create the Slots that will receive signals
+ @Slot(str)
+ def update_str_field(self, message):
+ print(message)
+
+ @Slot(int)
+ def update_int_field(self, value):
+ print(value)
+
+
+# Signals must inherit QObject
+class MySignals(QObject):
+ signal_str = Signal(str)
+ signal_int = Signal(int)
+
+
+# Create the Worker Thread
+class WorkerThread(QThread):
+ def __init__(self, parent=None):
+ QThread.__init__(self, parent)
+ # Instantiate signals and connect signals to the slots
+ self.signals = MySignals()
+ self.signals.signal_str.connect(parent.update_str_field)
+ self.signals.signal_int.connect(parent.update_int_field)
+
+ def run(self):
+ # Do something on the worker thread
+ a = 1 + 1
+ # Emit signals whenever you want
+ self.signals.signal_int.emit(a)
+ self.signals.signal_str.emit("This text comes to Main thread from our Worker thread.")
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ window = MainForm()
+ window.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/threads/thread_signals.pyproject b/examples/widgets/thread_signals/thread_signals.pyproject
index e36f7633c..e36f7633c 100644
--- a/examples/widgets/threads/thread_signals.pyproject
+++ b/examples/widgets/thread_signals/thread_signals.pyproject
diff --git a/examples/widgets/threads/thread_signals.py b/examples/widgets/threads/thread_signals.py
deleted file mode 100644
index 43c79f4b7..000000000
--- a/examples/widgets/threads/thread_signals.py
+++ /dev/null
@@ -1,100 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import sys
-from PySide6.QtCore import QObject, QThread, Signal, Slot
-from PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
-
-
-# Create a basic window with a layout and a button
-class MainForm(QWidget):
- def __init__(self):
- super().__init__()
- self.setWindowTitle("My Form")
- self.layout = QVBoxLayout()
- self.button = QPushButton("Click me!")
- self.button.clicked.connect(self.start_thread)
- self.layout.addWidget(self.button)
- self.setLayout(self.layout)
-
- # Instantiate and start a new thread
- def start_thread(self):
- instanced_thread = WorkerThread(self)
- instanced_thread.start()
-
- # Create the Slots that will receive signals
- @Slot(str)
- def update_str_field(self, message):
- print(message)
-
- @Slot(int)
- def update_int_field(self, value):
- print(value)
-
-
-# Signals must inherit QObject
-class MySignals(QObject):
- signal_str = Signal(str)
- signal_int = Signal(int)
-
-
-# Create the Worker Thread
-class WorkerThread(QThread):
- def __init__(self, parent=None):
- QThread.__init__(self, parent)
- # Instantiate signals and connect signals to the slots
- self.signals = MySignals()
- self.signals.signal_str.connect(parent.update_str_field)
- self.signals.signal_int.connect(parent.update_int_field)
-
- def run(self):
- # Do something on the worker thread
- a = 1 + 1
- # Emit signals whenever you want
- self.signals.signal_int.emit(a)
- self.signals.signal_str.emit("This text comes to Main thread from our Worker thread.")
-
-
-if __name__ == "__main__":
- app = QApplication(sys.argv)
- window = MainForm()
- window.show()
- sys.exit(app.exec())
diff --git a/examples/widgets/tools/regularexpression/doc/regularexpression.png b/examples/widgets/tools/regularexpression/doc/regularexpression.png
new file mode 100644
index 000000000..11e70f4a8
--- /dev/null
+++ b/examples/widgets/tools/regularexpression/doc/regularexpression.png
Binary files differ
diff --git a/examples/widgets/tools/regularexpression/doc/regularexpression.rst b/examples/widgets/tools/regularexpression/doc/regularexpression.rst
new file mode 100644
index 000000000..59a66acba
--- /dev/null
+++ b/examples/widgets/tools/regularexpression/doc/regularexpression.rst
@@ -0,0 +1,10 @@
+QRegularExpression Example
+==========================
+
+A Python application that demonstrates the analogous example in C++
+`QRegularExpression Example <https://doc.qt.io/qt-6/qtwidgets-tools-regularexpression-example.html>`_
+
+
+.. image:: regularexpression.png
+ :width: 400
+ :alt: regularexpression example
diff --git a/examples/widgets/tools/regularexpression/regularexpression.py b/examples/widgets/tools/regularexpression/regularexpression.py
new file mode 100644
index 000000000..261e26196
--- /dev/null
+++ b/examples/widgets/tools/regularexpression/regularexpression.py
@@ -0,0 +1,21 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""
+PySide6 port of Qt6 example qtbase/examples/widgets/tools/regularexpression
+
+More Information: https://doc.qt.io/qt-6/qtwidgets-tools-regularexpression-example.html
+"""
+import sys
+
+from regularexpressiondialog import RegularExpressionDialog
+
+from PySide6.QtWidgets import QApplication
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+
+ dialog = RegularExpressionDialog()
+ dialog.show()
+
+ sys.exit(app.exec())
diff --git a/examples/widgets/tools/regularexpression/regularexpression.pyproject b/examples/widgets/tools/regularexpression/regularexpression.pyproject
new file mode 100644
index 000000000..0896bfb7e
--- /dev/null
+++ b/examples/widgets/tools/regularexpression/regularexpression.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["regularexpression.py", "regularexpressiondialog.py"]
+}
diff --git a/examples/widgets/tools/regularexpression/regularexpressiondialog.py b/examples/widgets/tools/regularexpression/regularexpressiondialog.py
new file mode 100644
index 000000000..2d2bb2bb7
--- /dev/null
+++ b/examples/widgets/tools/regularexpression/regularexpressiondialog.py
@@ -0,0 +1,456 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import re
+import logging
+
+from PySide6.QtCore import (QMargins, QRegularExpression, QRegularExpressionMatch,
+ QRegularExpressionMatchIterator, Qt, Slot,)
+from PySide6.QtGui import (QAction, QColor, QContextMenuEvent, QFontDatabase,
+ QGuiApplication, QIcon, QPalette,)
+from PySide6.QtWidgets import (QCheckBox, QComboBox, QDialog, QFormLayout,
+ QFrame, QGridLayout, QHBoxLayout, QLabel,
+ QLineEdit, QPlainTextEdit, QSpinBox,
+ QTreeWidget, QTreeWidgetItem, QVBoxLayout,
+ QWidget)
+
+
+def rawStringLiteral(pattern: str) -> str:
+ pattern = 'r"' + pattern
+ pattern = pattern + '"'
+ return pattern
+
+
+def patternToCode(pattern: str) -> str:
+ pattern = pattern.replace("\\", "\\\\")
+ pattern = pattern.replace('"', '\\"')
+ pattern = '"' + pattern
+ pattern = pattern + '"'
+ return pattern
+
+
+def codeToPattern(code: str) -> str:
+
+ try:
+ _ = code[0]
+ except IndexError:
+ logging.warning("code is empty")
+ return code
+
+ code_characters = [c for c in code]
+ index = 0
+ code_characters_size = len(code_characters)
+ while index < code_characters_size:
+ if code_characters[index] == '\\':
+ del code_characters[index]
+ code_characters_size -= 1
+ index += 1
+ code = "".join(code_characters)
+
+ if code.startswith('"') and code.endswith('"'):
+ code = code[1:-1] # remove quotes
+
+ return code
+
+
+def createHorizontalSeparator() -> QFrame:
+ result = QFrame()
+ result.setFrameStyle(QFrame.HLine | QFrame.Sunken)
+ return result
+
+
+def createVerticalSeparator() -> QFrame:
+ result = QFrame()
+ result.setFrameStyle(QFrame.VLine | QFrame.Sunken)
+ return result
+
+
+class PatternLineEdit(QLineEdit):
+ def __init__(self, parent: QWidget = None):
+ super().__init__(parent)
+ self.escapeSelectionAction = QAction("Escape Selection", self)
+ self.copyToCodeAction = QAction("Copy to Code", self)
+ self.pasteFromCodeAction = QAction("Paste from Code", self)
+
+ self.setClearButtonEnabled(True)
+ self.escapeSelectionAction.triggered.connect(self.escapeSelection)
+ self.copyToCodeAction.triggered.connect(self.copyToCode)
+ self.pasteFromCodeAction.triggered.connect(self.pasteFromCode)
+
+ @Slot()
+ def escapeSelection(self):
+ selection = self.selectedText()
+ selection_start = self.selectionStart()
+ escapedSelection = QRegularExpression.escape(selection)
+ if escapedSelection != selection:
+ t = self.text()
+ t = (
+ t[: selection_start]
+ + escapedSelection
+ + t[selection_start + len(selection):]
+ )
+ self.setText(t)
+
+ @Slot()
+ def copyToCode(self):
+ QGuiApplication.clipboard().setText(patternToCode(self.text()))
+
+ @Slot()
+ def pasteFromCode(self):
+ self.setText(codeToPattern(QGuiApplication.clipboard().text()))
+
+ def contextMenuEvent(self, event: QContextMenuEvent) -> None:
+ menu = self.createStandardContextMenu()
+ menu.setAttribute(Qt.WA_DeleteOnClose)
+ menu.addSeparator()
+ self.escapeSelectionAction.setEnabled(self.hasSelectedText())
+ menu.addAction(self.escapeSelectionAction)
+ menu.addSeparator()
+ menu.addAction(self.copyToCodeAction)
+ menu.addAction(self.pasteFromCodeAction)
+ menu.popup(event.globalPos())
+
+
+class DisplayLineEdit(QLineEdit):
+ def __init__(self, parent: QWidget = None):
+ super().__init__(parent)
+ self.setReadOnly(True)
+ self.disablePalette: QPalette = self.palette()
+ self.disablePalette.setBrush(
+ QPalette.Base,
+ self.disablePalette.brush(QPalette.Disabled, QPalette.Base),
+ )
+ self.setPalette(self.disablePalette)
+
+ self.copyAction = QAction(self)
+ self.copyAction.setText("Copy to clipboard")
+ self.copyAction.setIcon(QIcon(":/images/copy.png"))
+ self.copyAction.triggered.connect(
+ lambda: QGuiApplication.clipboard().setText(self.text())
+ )
+ self.addAction(self.copyAction, QLineEdit.TrailingPosition)
+
+
+class RegularExpressionDialog(QDialog):
+ def __init__(self, parent: QWidget = None) -> None:
+ super().__init__(parent)
+ self.setupUi()
+ self.setWindowTitle("QRegularExpression Example")
+ self.regularExpression = QRegularExpression()
+ self.patternLineEdit.textChanged.connect(self.refresh)
+ self.subjectTextEdit.textChanged.connect(self.refresh)
+ self.caseInsensitiveOptionCheckBox.toggled.connect(self.refresh)
+ self.dotMatchesEverythingOptionCheckBox.toggled.connect(self.refresh)
+ self.multilineOptionCheckBox.toggled.connect(self.refresh)
+ self.extendedPatternSyntaxOptionCheckBox.toggled.connect(self.refresh)
+ self.invertedGreedinessOptionCheckBox.toggled.connect(self.refresh)
+ self.dontCaptureOptionCheckBox.toggled.connect(self.refresh)
+ self.useUnicodePropertiesOptionCheckBox.toggled.connect(self.refresh)
+ self.offsetSpinBox.valueChanged.connect(self.refresh)
+ self.matchTypeComboBox.currentIndexChanged.connect(self.refresh)
+ self.anchoredMatchOptionCheckBox.toggled.connect(self.refresh)
+ self.dontCheckSubjectStringMatchOptionCheckBox.toggled.connect(self.refresh)
+
+ self.patternLineEdit.setText("(\\+?\\d+)-(?P<prefix>\\d+)-(?P<number>\\w+)")
+ self.subjectTextEdit.setPlainText(
+ "My office number is +43-152-0123456, my mobile is 001-41-255512"
+ " instead."
+ )
+
+ self.refresh()
+
+ def setResultUiEnabled(self, enabled: bool):
+ self.matchDetailsTreeWidget.setEnabled(enabled)
+ self.namedGroupsTreeWidget.setEnabled(enabled)
+ self.replacementTextEdit.setEnabled(enabled)
+
+ def setTextColor(self, widget: QWidget, color: QColor):
+ self.palette: QPalette = widget.palette()
+ self.palette.setColor(QPalette.Text, color)
+ widget.setPalette(self.palette)
+
+ @Slot()
+ def refresh(self):
+ self.setUpdatesEnabled(False)
+ self.pattern = self.patternLineEdit.text()
+ self.text = self.subjectTextEdit.toPlainText()
+
+ self.offsetSpinBox.setMaximum(max(0, len(self.text) - 1))
+
+ self.escapedPatternLineEdit.setText(patternToCode(self.pattern))
+ self.rawStringLiteralLineEdit.setText(rawStringLiteral(self.pattern))
+
+ self.setTextColor(
+ self.patternLineEdit,
+ self.subjectTextEdit.palette().color(QPalette.Text),
+ )
+ self.matchDetailsTreeWidget.clear()
+ self.namedGroupsTreeWidget.clear()
+ self.regexpStatusLabel.setText("")
+ self.replacementTextEdit.clear()
+
+ if not self.pattern:
+ self.setResultUiEnabled(False)
+ self.setUpdatesEnabled(True)
+ return
+
+ self.regularExpression.setPattern(self.pattern)
+
+ if not self.regularExpression.isValid():
+ self.setTextColor(self.patternLineEdit, Qt.red)
+ pattern_error_offset = self.regularExpression.patternErrorOffset()
+ error_string = self.regularExpression.errorString()
+ self.regexpStatusLabel.setText(
+ "Invalid: syntax error at position"
+ f" {pattern_error_offset}"
+ f" ({error_string})"
+ )
+ self.setResultUiEnabled(False)
+ self.setUpdatesEnabled(True)
+ return
+
+ self.setResultUiEnabled(True)
+ matchType: QRegularExpression.MatchType = QRegularExpression.MatchType(
+ self.matchTypeComboBox.currentData()
+ )
+ patternOptions = QRegularExpression.NoPatternOption
+ matchOptions = QRegularExpression.NoMatchOption
+
+ if self.anchoredMatchOptionCheckBox.isChecked():
+ matchOptions |= QRegularExpression.AnchorAtOffsetMatchOption
+ if self.dontCheckSubjectStringMatchOptionCheckBox.isChecked():
+ matchOptions |= QRegularExpression.DontCheckSubjectStringMatchOption
+
+ if self.caseInsensitiveOptionCheckBox.isChecked():
+ patternOptions |= QRegularExpression.CaseInsensitiveOption
+ if self.dotMatchesEverythingOptionCheckBox.isChecked():
+ patternOptions |= QRegularExpression.DotMatchesEverythingOption
+ if self.multilineOptionCheckBox.isChecked():
+ patternOptions |= QRegularExpression.MultilineOption
+ if self.extendedPatternSyntaxOptionCheckBox.isChecked():
+ patternOptions |= QRegularExpression.ExtendedPatternSyntaxOption
+ if self.invertedGreedinessOptionCheckBox.isChecked():
+ patternOptions |= QRegularExpression.InvertedGreedinessOption
+ if self.dontCaptureOptionCheckBox.isChecked():
+ patternOptions |= QRegularExpression.DontCaptureOption
+ if self.useUnicodePropertiesOptionCheckBox.isChecked():
+ patternOptions |= QRegularExpression.UseUnicodePropertiesOption
+
+ self.regularExpression.setPatternOptions(patternOptions)
+
+ capturingGroupsCount = self.regularExpression.captureCount() + 1
+
+ offset = self.offsetSpinBox.value()
+ iterator: QRegularExpressionMatchIterator = self.regularExpression.globalMatch(
+ self.text, offset, matchType, matchOptions
+ )
+ i = 0
+
+ while iterator.hasNext():
+ match: QRegularExpressionMatch = iterator.next()
+ matchDetailTopItem = QTreeWidgetItem(self.matchDetailsTreeWidget)
+ matchDetailTopItem.setText(0, str(i))
+
+ for captureGroupIndex in range(capturingGroupsCount):
+ matchDetailItem = QTreeWidgetItem(matchDetailTopItem)
+ matchDetailItem.setText(1, str(captureGroupIndex))
+ matchDetailItem.setText(2, match.captured(captureGroupIndex))
+
+ i = i + 1
+
+ self.matchDetailsTreeWidget.expandAll()
+
+ self.regexpStatusLabel.setText("Valid")
+
+ namedCaptureGroups = self.regularExpression.namedCaptureGroups()
+ for i in range(len(namedCaptureGroups)):
+ currentNamedCaptureGroup = namedCaptureGroups[i]
+ namedGroupItem = QTreeWidgetItem(self.namedGroupsTreeWidget)
+ namedGroupItem.setText(0, str(i))
+ namedGroupItem.setText(
+ 1,
+ "<no name>"
+ if not currentNamedCaptureGroup
+ else currentNamedCaptureGroup,
+ )
+
+ self.updateReplacement()
+ self.setUpdatesEnabled(True)
+
+ @Slot()
+ def updateReplacement(self):
+ self.replacementTextEdit.clear()
+ replacement = self.replacementLineEdit.text()
+ if not self.regularExpression.isValid() or not replacement:
+ return
+
+ current_text = self.subjectTextEdit.toPlainText()
+ regular_expression_pattern = self.regularExpression.pattern()
+
+ new_text = re.sub(regular_expression_pattern, replacement, current_text)
+ self.replacementTextEdit.setPlainText(new_text)
+
+ def setupUi(self):
+ self.mainLayout = QVBoxLayout(self)
+ self.mainLayout.addWidget(self.setupTextUi())
+ self.mainLayout.addWidget(createHorizontalSeparator())
+
+ self.horizontalLayout = QHBoxLayout()
+ self.mainLayout.addLayout(self.horizontalLayout)
+ self.horizontalLayout.addWidget(self.setupOptionsUi())
+ self.horizontalLayout.addWidget(createVerticalSeparator())
+ self.horizontalLayout.addWidget(self.setupInfoUi())
+
+ self._font = QFontDatabase.systemFont(QFontDatabase.FixedFont)
+ self.patternLineEdit.setFont(self._font)
+ self.rawStringLiteralLineEdit.setFont(self._font)
+ self.escapedPatternLineEdit.setFont(self._font)
+ self.replacementLineEdit.setFont(self._font)
+ self.subjectTextEdit.setFont(self._font)
+ self.replacementTextEdit.setFont(self._font)
+
+ def setupOptionsUi(self):
+ container = QWidget()
+
+ form_layout = QFormLayout(container)
+ form_layout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow)
+ form_layout.setContentsMargins(QMargins())
+
+ form_layout.addRow(QLabel("<h3>Options</h3>"))
+
+ self.caseInsensitiveOptionCheckBox = QCheckBox("Case insensitive (/i)")
+ self.dotMatchesEverythingOptionCheckBox = QCheckBox("Dot matches everything (/s)")
+ self.multilineOptionCheckBox = QCheckBox("Multiline (/m)")
+ self.extendedPatternSyntaxOptionCheckBox = QCheckBox("Extended pattern (/x)")
+ self.invertedGreedinessOptionCheckBox = QCheckBox("Inverted greediness")
+ self.dontCaptureOptionCheckBox = QCheckBox("Don't capture")
+ self.useUnicodePropertiesOptionCheckBox = QCheckBox("Use unicode properties (/u)")
+
+ self.patternOptionsCheckBoxLayout = QGridLayout()
+ gridRow = 0
+
+ self.patternOptionsCheckBoxLayout.addWidget(self.caseInsensitiveOptionCheckBox, gridRow, 1)
+ self.patternOptionsCheckBoxLayout.addWidget(
+ self.dotMatchesEverythingOptionCheckBox, gridRow, 2)
+ gridRow = gridRow + 1
+ self.patternOptionsCheckBoxLayout.addWidget(self.multilineOptionCheckBox, gridRow, 1)
+ self.patternOptionsCheckBoxLayout.addWidget(
+ self.extendedPatternSyntaxOptionCheckBox, gridRow, 2)
+ gridRow = gridRow + 1
+ self.patternOptionsCheckBoxLayout.addWidget(
+ self.invertedGreedinessOptionCheckBox, gridRow, 1)
+ self.patternOptionsCheckBoxLayout.addWidget(self.dontCaptureOptionCheckBox, gridRow, 2)
+ gridRow = gridRow + 1
+ self.patternOptionsCheckBoxLayout.addWidget(
+ self.useUnicodePropertiesOptionCheckBox, gridRow, 1)
+
+ form_layout.addRow("Pattern options:", self.patternOptionsCheckBoxLayout)
+
+ self.offsetSpinBox = QSpinBox()
+ form_layout.addRow("Match &offset:", self.offsetSpinBox)
+
+ self.matchTypeComboBox = QComboBox()
+ self.matchTypeComboBox.addItem("Normal", QRegularExpression.NormalMatch)
+ self.matchTypeComboBox.addItem(
+ "Partial prefer complete",
+ QRegularExpression.PartialPreferCompleteMatch,
+ )
+ self.matchTypeComboBox.addItem(
+ "Partial prefer first", QRegularExpression.PartialPreferFirstMatch
+ )
+ self.matchTypeComboBox.addItem("No match", QRegularExpression.NoMatch)
+ form_layout.addRow("Match &type:", self.matchTypeComboBox)
+
+ self.dontCheckSubjectStringMatchOptionCheckBox = QCheckBox(
+ "Don't check subject string"
+ )
+ self.anchoredMatchOptionCheckBox = QCheckBox("Anchored match")
+
+ self.matchOptionsCheckBoxLayout = QGridLayout()
+ self.matchOptionsCheckBoxLayout.addWidget(
+ self.dontCheckSubjectStringMatchOptionCheckBox, 0, 0
+ )
+ self.matchOptionsCheckBoxLayout.addWidget(
+ self.anchoredMatchOptionCheckBox, 0, 1
+ )
+ form_layout.addRow("Match options:", self.matchOptionsCheckBoxLayout)
+
+ return container
+
+ def setupInfoUi(self):
+ container = QWidget()
+
+ form_layout = QFormLayout(container)
+ form_layout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow)
+ form_layout.setContentsMargins(QMargins())
+
+ self.matchInfoLabel = QLabel("<h3>Match information</h3>")
+ form_layout.addRow(self.matchInfoLabel)
+
+ self.matchDetailsTreeWidget = QTreeWidget()
+
+ self.matchDetailsTreeWidget.setHeaderLabels(
+ ["Match index", "Group index", "Captured string"]
+ )
+ self.matchDetailsTreeWidget.setSizeAdjustPolicy(QTreeWidget.AdjustToContents)
+ form_layout.addRow("Match details:", self.matchDetailsTreeWidget)
+
+ form_layout.addRow(createHorizontalSeparator())
+
+ self.regexpInfoLabel = QLabel("<h3>Regular expression information</h3>")
+ form_layout.addRow(self.regexpInfoLabel)
+
+ self.regexpStatusLabel = QLabel("Valid")
+ self.regexpStatusLabel.setWordWrap(True)
+ form_layout.addRow("Pattern status:", self.regexpStatusLabel)
+
+ self.namedGroupsTreeWidget = QTreeWidget()
+ self.namedGroupsTreeWidget.setHeaderLabels(["Index", "Named group"])
+ self.namedGroupsTreeWidget.setSizeAdjustPolicy(QTreeWidget.AdjustToContents)
+ self.namedGroupsTreeWidget.setRootIsDecorated(False)
+ form_layout.addRow("Named groups:", self.namedGroupsTreeWidget)
+
+ return container
+
+ def setupTextUi(self):
+ container = QWidget()
+ form_layout = QFormLayout(container)
+ form_layout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow)
+ form_layout.setContentsMargins(QMargins())
+
+ self.regexpAndSubjectLabel = QLabel(
+ "<h3>Regular expression and text input</h3>"
+ )
+ form_layout.addRow(self.regexpAndSubjectLabel)
+
+ self.patternLineEdit = PatternLineEdit()
+ self.patternLineEdit.setClearButtonEnabled(True)
+ form_layout.addRow("&Pattern:", self.patternLineEdit)
+
+ self.rawStringLiteralLineEdit = DisplayLineEdit()
+ form_layout.addRow("&Raw string literal:", self.rawStringLiteralLineEdit)
+
+ self.escapedPatternLineEdit = DisplayLineEdit()
+ form_layout.addRow("&Escaped pattern:", self.escapedPatternLineEdit)
+
+ self.subjectTextEdit = QPlainTextEdit()
+ form_layout.addRow("&Subject text:", self.subjectTextEdit)
+
+ form_layout.addRow(createHorizontalSeparator())
+
+ self.replaceLabel = QLabel("<h3>Replacement")
+ form_layout.addRow(self.replaceLabel)
+
+ self.replacementLineEdit = QLineEdit()
+ self.replacementLineEdit.setClearButtonEnabled(True)
+ self.replacementLineEdit.textChanged.connect(self.updateReplacement)
+ form_layout.addRow("&Replace by:", self.replacementLineEdit)
+ self.replacementLineEdit.setToolTip(
+ "Use \\1, \\2... as placeholders for the captured groups."
+ )
+
+ self.replacementTextEdit = QPlainTextEdit()
+ self.replacementTextEdit.setReadOnly(True)
+ form_layout.addRow("Result:", self.replacementTextEdit)
+
+ return container
diff --git a/examples/widgets/tutorials/addressbook/part1.py b/examples/widgets/tutorials/addressbook/part1.py
index 23d438416..648ddea46 100644
--- a/examples/widgets/tutorials/addressbook/part1.py
+++ b/examples/widgets/tutorials/addressbook/part1.py
@@ -1,51 +1,12 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
from PySide6.QtCore import Qt
-from PySide6.QtWidgets import (QApplication, QGridLayout,
- QLabel, QGridLayout, QLineEdit, QTextEdit,
- QWidget)
+from PySide6.QtWidgets import (QApplication, QGridLayout, QLabel, QLineEdit,
+ QTextEdit, QWidget)
class AddressBook(QWidget):
diff --git a/examples/widgets/tutorials/addressbook/part2.py b/examples/widgets/tutorials/addressbook/part2.py
index a5f91a5e7..3c0eb451d 100644
--- a/examples/widgets/tutorials/addressbook/part2.py
+++ b/examples/widgets/tutorials/addressbook/part2.py
@@ -1,50 +1,12 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
-from PySide6.QtCore import Qt, Signal, Slot
-from PySide6.QtWidgets import (QApplication, QDialog, QGridLayout,
- QHBoxLayout, QLabel, QLineEdit,
+from PySide6.QtCore import Qt
+from PySide6.QtWidgets import (QApplication, QGridLayout,
+ QLabel, QLineEdit,
QMessageBox, QPushButton, QTextEdit,
QVBoxLayout, QWidget)
@@ -140,17 +102,16 @@ class AddressBook(QWidget):
address = self._address_text.toPlainText()
if name == "" or address == "":
- QMessageBox.information(self, "Empty Field",
- "Please enter a name and address.")
+ QMessageBox.information(self, "Empty Field", "Please enter a name and address.")
return
if name not in self.contacts:
self.contacts[name] = address
QMessageBox.information(self, "Add Successful",
- f'"{name}" has been added to your address book.')
+ f'"{name}" has been added to your address book.')
else:
QMessageBox.information(self, "Add Unsuccessful",
- f'Sorry, "{name}" is already in your address book.')
+ f'Sorry, "{name}" is already in your address book.')
return
if not self.contacts:
diff --git a/examples/widgets/tutorials/addressbook/part3.py b/examples/widgets/tutorials/addressbook/part3.py
index 3053dd468..611796f5e 100644
--- a/examples/widgets/tutorials/addressbook/part3.py
+++ b/examples/widgets/tutorials/addressbook/part3.py
@@ -1,49 +1,11 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
-from PySide6.QtCore import Qt, Signal, Slot
-from PySide6.QtWidgets import (QApplication, QDialog, QGridLayout,
+from PySide6.QtCore import Qt, Slot
+from PySide6.QtWidgets import (QApplication, QGridLayout,
QHBoxLayout, QLabel, QLineEdit,
QMessageBox, QPushButton, QTextEdit,
QVBoxLayout, QWidget)
@@ -148,22 +110,22 @@ class AddressBook(QWidget):
self._submit_button.show()
self._cancel_button.show()
+ @Slot()
def submit_contact(self):
name = self._name_line.text()
address = self._address_text.toPlainText()
if name == "" or address == "":
- QMessageBox.information(self, "Empty Field",
- "Please enter a name and address.")
+ QMessageBox.information(self, "Empty Field", "Please enter a name and address.")
return
if name not in self.contacts:
self.contacts[name] = address
QMessageBox.information(self, "Add Successful",
- f'"{name}" has been added to your address book.')
+ f'"{name}" has been added to your address book.')
else:
QMessageBox.information(self, "Add Unsuccessful",
- f'Sorry, "{name}" is already in your address book.')
+ f'Sorry, "{name}" is already in your address book.')
return
if not self.contacts:
@@ -181,6 +143,7 @@ class AddressBook(QWidget):
self._submit_button.hide()
self._cancel_button.hide()
+ @Slot()
def cancel(self):
self._name_line.setText(self._old_name)
self._address_text.setText(self._old_address)
@@ -200,6 +163,7 @@ class AddressBook(QWidget):
self._submit_button.hide()
self._cancel_button.hide()
+ @Slot()
def next(self):
name = self._name_line.text()
it = iter(self.contacts)
@@ -217,6 +181,7 @@ class AddressBook(QWidget):
self._name_line.setText(next_name)
self._address_text.setText(next_address)
+ @Slot()
def previous(self):
name = self._name_line.text()
diff --git a/examples/widgets/tutorials/addressbook/part4.py b/examples/widgets/tutorials/addressbook/part4.py
index 87f196436..95f31d46c 100644
--- a/examples/widgets/tutorials/addressbook/part4.py
+++ b/examples/widgets/tutorials/addressbook/part4.py
@@ -1,49 +1,11 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
-from PySide6.QtCore import Qt, Signal, Slot
-from PySide6.QtWidgets import (QApplication, QDialog, QGridLayout,
+from PySide6.QtCore import Qt, Slot
+from PySide6.QtWidgets import (QApplication, QGridLayout,
QHBoxLayout, QLabel, QLineEdit,
QMessageBox, QPushButton, QTextEdit,
QVBoxLayout, QWidget)
@@ -143,6 +105,7 @@ class AddressBook(QWidget):
self.setLayout(main_layout)
self.setWindowTitle("Simple Address Book")
+ @Slot()
def add_contact(self):
self._old_name = self._name_line.text()
self._old_address = self._address_text.toPlainText()
@@ -152,72 +115,76 @@ class AddressBook(QWidget):
self.update_interface(self.AddingMode)
+ @Slot()
def edit_contact(self):
self._old_name = self._name_line.text()
self._old_address = self._address_text.toPlainText()
self.update_interface(self.EditingMode)
+ @Slot()
def submit_contact(self):
name = self._name_line.text()
address = self._address_text.toPlainText()
if name == "" or address == "":
- QMessageBox.information(self, "Empty Field",
- "Please enter a name and address.")
+ QMessageBox.information(self, "Empty Field", "Please enter a name and address.")
return
if self._current_mode == self.AddingMode:
if name not in self.contacts:
self.contacts[name] = address
QMessageBox.information(self, "Add Successful",
- f'"{name}" has been added to your address book.')
+ f'"{name}" has been added to your address book.')
else:
QMessageBox.information(self, "Add Unsuccessful",
- f'Sorry, "{name}" is already in your address book.')
+ f'Sorry, "{name}" is already in your address book.')
return
elif self._current_mode == self.EditingMode:
if self._old_name != name:
if name not in self.contacts:
QMessageBox.information(self, "Edit Successful",
- f'"{self.oldName}" has been edited in your address book.')
+ f'"{self.oldName}" has been edited in your '
+ 'address book.')
del self.contacts[self._old_name]
self.contacts[name] = address
else:
QMessageBox.information(self, "Edit Unsuccessful",
- f'Sorry, "{name}" is already in your address book.')
+ f'Sorry, "{name}" is already in your address book.')
return
elif self._old_address != address:
QMessageBox.information(self, "Edit Successful",
- f'"{name}" has been edited in your address book.')
+ f'"{name}" has been edited in your address book.')
self.contacts[name] = address
self.update_interface(self.NavigationMode)
+ @Slot()
def cancel(self):
self._name_line.setText(self._old_name)
self._address_text.setText(self._old_address)
self.update_interface(self.NavigationMode)
+ @Slot()
def remove_contact(self):
name = self._name_line.text()
- address = self._address_text.toPlainText()
if name in self.contacts:
button = QMessageBox.question(self, "Confirm Remove",
- f'Are you sure you want to remove "{name}"?',
- QMessageBox.Yes | QMessageBox.No)
+ f'Are you sure you want to remove "{name}"?',
+ QMessageBox.Yes | QMessageBox.No)
if button == QMessageBox.Yes:
self.previous()
del self.contacts[name]
QMessageBox.information(self, "Remove Successful",
- f'"{name}" has been removed from your address book.')
+ f'"{name}" has been removed from your address book.')
self.update_interface(self.NavigationMode)
+ @Slot()
def next(self):
name = self._name_line.text()
it = iter(self.contacts)
@@ -235,6 +202,7 @@ class AddressBook(QWidget):
self._name_line.setText(next_name)
self._address_text.setText(next_address)
+ @Slot()
def previous(self):
name = self._name_line.text()
diff --git a/examples/widgets/tutorials/addressbook/part5.py b/examples/widgets/tutorials/addressbook/part5.py
index c8081ddab..1e9c05862 100644
--- a/examples/widgets/tutorials/addressbook/part5.py
+++ b/examples/widgets/tutorials/addressbook/part5.py
@@ -1,49 +1,10 @@
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-import pickle
import sys
-from PySide6.QtCore import Qt, Signal, Slot
+from PySide6.QtCore import Qt, Slot
from PySide6.QtWidgets import (QApplication, QDialog, QGridLayout,
QHBoxLayout, QLabel, QLineEdit,
QMessageBox, QPushButton, QTextEdit,
@@ -150,6 +111,7 @@ class AddressBook(QWidget):
self.setLayout(main_layout)
self.setWindowTitle("Simple Address Book")
+ @Slot()
def add_contact(self):
self._old_name = self._name_line.text()
self._old_address = self._address_text.toPlainText()
@@ -159,72 +121,76 @@ class AddressBook(QWidget):
self.update_interface(self.AddingMode)
+ @Slot()
def edit_contact(self):
self._old_name = self._name_line.text()
self._old_address = self._address_text.toPlainText()
self.update_interface(self.EditingMode)
+ @Slot()
def submit_contact(self):
name = self._name_line.text()
address = self._address_text.toPlainText()
if name == "" or address == "":
- QMessageBox.information(self, "Empty Field",
- "Please enter a name and address.")
+ QMessageBox.information(self, "Empty Field", "Please enter a name and address.")
return
if self._current_mode == self.AddingMode:
if name not in self.contacts:
self.contacts[name] = address
QMessageBox.information(self, "Add Successful",
- f'"{name}" has been added to your address book.')
+ f'"{name}" has been added to your address book.')
else:
QMessageBox.information(self, "Add Unsuccessful",
- f'Sorry, "{name}" is already in your address book.')
+ f'Sorry, "{name}" is already in your address book.')
return
elif self._current_mode == self.EditingMode:
if self._old_name != name:
if name not in self.contacts:
QMessageBox.information(self, "Edit Successful",
- f'"{self.oldName}" has been edited in your address book.')
+ f'"{self.oldName}" has been edited in your '
+ 'address book.')
del self.contacts[self._old_name]
self.contacts[name] = address
else:
QMessageBox.information(self, "Edit Unsuccessful",
- f'Sorry, "{name}" is already in your address book.')
+ f'Sorry, "{name}" is already in your address book.')
return
elif self._old_address != address:
QMessageBox.information(self, "Edit Successful",
- f'"{name}" has been edited in your address book.')
+ f'"{name}" has been edited in your address book.')
self.contacts[name] = address
self.update_interface(self.NavigationMode)
+ @Slot()
def cancel(self):
self._name_line.setText(self._old_name)
self._address_text.setText(self._old_address)
self.update_interface(self.NavigationMode)
+ @Slot()
def remove_contact(self):
name = self._name_line.text()
- address = self._address_text.toPlainText()
if name in self.contacts:
button = QMessageBox.question(self, "Confirm Remove",
- f'Are you sure you want to remove "{name}"?',
- QMessageBox.Yes | QMessageBox.No)
+ f'Are you sure you want to remove "{name}"?',
+ QMessageBox.Yes | QMessageBox.No)
if button == QMessageBox.Yes:
self.previous()
del self.contacts[name]
QMessageBox.information(self, "Remove Successful",
- f'"{name}" has been removed from your address book.')
+ f'"{name}" has been removed from your address book.')
self.update_interface(self.NavigationMode)
+ @Slot()
def next(self):
name = self._name_line.text()
it = iter(self.contacts)
@@ -242,6 +208,7 @@ class AddressBook(QWidget):
self._name_line.setText(next_name)
self._address_text.setText(next_address)
+ @Slot()
def previous(self):
name = self._name_line.text()
@@ -275,7 +242,7 @@ class AddressBook(QWidget):
self._address_text.setText(self.contacts[contact_name])
else:
QMessageBox.information(self, "Contact Not Found",
- f'Sorry, "{contact_name}" is not in your address book.')
+ f'Sorry, "{contact_name}" is not in your address book.')
return
self.update_interface(self.NavigationMode)
@@ -343,8 +310,7 @@ class FindDialog(QDialog):
text = self._line_edit.text()
if not text:
- QMessageBox.information(self, "Empty Field",
- "Please enter a name.")
+ QMessageBox.information(self, "Empty Field", "Please enter a name.")
return
else:
self._find_text = text
diff --git a/examples/widgets/tutorials/addressbook/part6.py b/examples/widgets/tutorials/addressbook/part6.py
index 1d43805e7..d11298fb9 100644
--- a/examples/widgets/tutorials/addressbook/part6.py
+++ b/examples/widgets/tutorials/addressbook/part6.py
@@ -1,49 +1,11 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import pickle
import sys
-from PySide6.QtCore import QFile, QIODevice, QTextStream, Qt, Signal, Slot
+from PySide6.QtCore import Qt, Slot
from PySide6.QtWidgets import (QApplication, QDialog, QFileDialog,
QGridLayout, QHBoxLayout, QLabel, QLineEdit,
QMessageBox, QPushButton, QTextEdit,
@@ -160,6 +122,7 @@ class AddressBook(QWidget):
self.setLayout(main_layout)
self.setWindowTitle("Simple Address Book")
+ @Slot()
def add_contact(self):
self._old_name = self._name_line.text()
self._old_address = self._address_text.toPlainText()
@@ -169,72 +132,76 @@ class AddressBook(QWidget):
self.update_interface(self.AddingMode)
+ @Slot()
def edit_contact(self):
self._old_name = self._name_line.text()
self._old_address = self._address_text.toPlainText()
self.update_interface(self.EditingMode)
+ @Slot()
def submit_contact(self):
name = self._name_line.text()
address = self._address_text.toPlainText()
if name == "" or address == "":
- QMessageBox.information(self, "Empty Field",
- "Please enter a name and address.")
+ QMessageBox.information(self, "Empty Field", "Please enter a name and address.")
return
if self._current_mode == self.AddingMode:
if name not in self.contacts:
self.contacts[name] = address
QMessageBox.information(self, "Add Successful",
- f'"{name}" has been added to your address book.')
+ f'"{name}" has been added to your address book.')
else:
QMessageBox.information(self, "Add Unsuccessful",
- f'Sorry, "{name}" is already in your address book.')
+ f'Sorry, "{name}" is already in your address book.')
return
elif self._current_mode == self.EditingMode:
if self._old_name != name:
if name not in self.contacts:
QMessageBox.information(self, "Edit Successful",
- f'"{self.oldName}" has been edited in your address book.')
+ f'"{self.oldName}" has been edited in your '
+ 'address book.')
del self.contacts[self._old_name]
self.contacts[name] = address
else:
QMessageBox.information(self, "Edit Unsuccessful",
- f'Sorry, "{name}" is already in your address book.')
+ f'Sorry, "{name}" is already in your address book.')
return
elif self._old_address != address:
QMessageBox.information(self, "Edit Successful",
- f'"{name}" has been edited in your address book.')
+ f'"{name}" has been edited in your address book.')
self.contacts[name] = address
self.update_interface(self.NavigationMode)
+ @Slot()
def cancel(self):
self._name_line.setText(self._old_name)
self._address_text.setText(self._old_address)
self.update_interface(self.NavigationMode)
+ @Slot()
def remove_contact(self):
name = self._name_line.text()
- address = self._address_text.toPlainText()
if name in self.contacts:
button = QMessageBox.question(self, "Confirm Remove",
- f'Are you sure you want to remove "{name}"?',
- QMessageBox.Yes | QMessageBox.No)
+ f'Are you sure you want to remove "{name}"?',
+ QMessageBox.Yes | QMessageBox.No)
if button == QMessageBox.Yes:
self.previous()
del self.contacts[name]
QMessageBox.information(self, "Remove Successful",
- f'"{name}" has been removed from your address book.')
+ f'"{name}" has been removed from your address book.')
self.update_interface(self.NavigationMode)
+ @Slot()
def next(self):
name = self._name_line.text()
it = iter(self.contacts)
@@ -252,6 +219,7 @@ class AddressBook(QWidget):
self._name_line.setText(next_name)
self._address_text.setText(next_address)
+ @Slot()
def previous(self):
name = self._name_line.text()
@@ -285,7 +253,7 @@ class AddressBook(QWidget):
self._address_text.setText(self.contacts[contact_name])
else:
QMessageBox.information(self, "Contact Not Found",
- f'Sorry, "{contact_name}" is not in your address book.')
+ f'Sorry, "{contact_name}" is not in your address book.')
return
self.update_interface(self.NavigationMode)
@@ -335,8 +303,8 @@ class AddressBook(QWidget):
def save_to_file(self):
fileName, _ = QFileDialog.getSaveFileName(self,
- "Save Address Book", '',
- "Address Book (*.abk);;All Files (*)")
+ "Save Address Book", '',
+ "Address Book (*.abk);;All Files (*)")
if not fileName:
return
@@ -345,7 +313,7 @@ class AddressBook(QWidget):
out_file = open(str(fileName), 'wb')
except IOError:
QMessageBox.information(self, "Unable to open file",
- f'There was an error opening "{fileName}"')
+ f'There was an error opening "{fileName}"')
return
pickle.dump(self.contacts, out_file)
@@ -353,8 +321,8 @@ class AddressBook(QWidget):
def load_from_file(self):
fileName, _ = QFileDialog.getOpenFileName(self,
- "Open Address Book", '',
- "Address Book (*.abk);;All Files (*)")
+ "Open Address Book", '',
+ "Address Book (*.abk);;All Files (*)")
if not fileName:
return
@@ -363,7 +331,7 @@ class AddressBook(QWidget):
in_file = open(str(fileName), 'rb')
except IOError:
QMessageBox.information(self, "Unable to open file",
- f'There was an error opening "{fileName}"')
+ f'There was an error opening "{fileName}"')
return
self.contacts = pickle.load(in_file)
@@ -371,8 +339,7 @@ class AddressBook(QWidget):
if len(self.contacts) == 0:
QMessageBox.information(self, "No contacts in file",
- "The file you are attempting to open contains no "
- "contacts.")
+ "The file you are attempting to open contains no contacts.")
else:
for name, address in self.contacts:
self._name_line.setText(name)
@@ -406,8 +373,7 @@ class FindDialog(QDialog):
text = self._line_edit.text()
if not text:
- QMessageBox.information(self, "Empty Field",
- "Please enter a name.")
+ QMessageBox.information(self, "Empty Field", "Please enter a name.")
return
self._find_text = text
diff --git a/examples/widgets/tutorials/addressbook/part7.py b/examples/widgets/tutorials/addressbook/part7.py
index 26688c428..3829c003d 100644
--- a/examples/widgets/tutorials/addressbook/part7.py
+++ b/examples/widgets/tutorials/addressbook/part7.py
@@ -1,49 +1,11 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import pickle
import sys
-from PySide6.QtCore import QFile, QIODevice, QTextStream, Qt, Signal, Slot
+from PySide6.QtCore import QFile, QIODevice, QTextStream, Qt, Slot
from PySide6.QtWidgets import (QApplication, QDialog, QFileDialog,
QGridLayout, QHBoxLayout, QLabel, QLineEdit,
QMessageBox, QPushButton, QTextEdit,
@@ -166,6 +128,7 @@ class AddressBook(QWidget):
self.setLayout(main_layout)
self.setWindowTitle("Simple Address Book")
+ @Slot()
def add_contact(self):
self._old_name = self._name_line.text()
self._old_address = self._address_text.toPlainText()
@@ -175,72 +138,76 @@ class AddressBook(QWidget):
self.update_interface(self.AddingMode)
+ @Slot()
def edit_contact(self):
self._old_name = self._name_line.text()
self._old_address = self._address_text.toPlainText()
self.update_interface(self.EditingMode)
+ @Slot()
def submit_contact(self):
name = self._name_line.text()
address = self._address_text.toPlainText()
if name == "" or address == "":
- QMessageBox.information(self, "Empty Field",
- "Please enter a name and address.")
+ QMessageBox.information(self, "Empty Field", "Please enter a name and address.")
return
if self._current_mode == self.AddingMode:
if name not in self.contacts:
self.contacts[name] = address
QMessageBox.information(self, "Add Successful",
- f'"{name}" has been added to your address book.')
+ f'"{name}" has been added to your address book.')
else:
QMessageBox.information(self, "Add Unsuccessful",
- f'Sorry, "{name}" is already in your address book.')
+ f'Sorry, "{name}" is already in your address book.')
return
elif self._current_mode == self.EditingMode:
if self._old_name != name:
if name not in self.contacts:
QMessageBox.information(self, "Edit Successful",
- f'"{self.oldName}" has been edited in your address book.')
+ f'"{self.oldName}" has been edited in your '
+ 'address book.')
del self.contacts[self._old_name]
self.contacts[name] = address
else:
QMessageBox.information(self, "Edit Unsuccessful",
- f'Sorry, "{name}" is already in your address book.')
+ f'Sorry, "{name}" is already in your address book.')
return
elif self._old_address != address:
QMessageBox.information(self, "Edit Successful",
- f'"{name}" has been edited in your address book.')
+ f'"{name}" has been edited in your address book.')
self.contacts[name] = address
self.update_interface(self.NavigationMode)
+ @Slot()
def cancel(self):
self._name_line.setText(self._old_name)
self._address_text.setText(self._old_address)
self.update_interface(self.NavigationMode)
+ @Slot()
def remove_contact(self):
name = self._name_line.text()
- address = self._address_text.toPlainText()
if name in self.contacts:
button = QMessageBox.question(self, "Confirm Remove",
- f'Are you sure you want to remove "{name}"?',
- QMessageBox.Yes | QMessageBox.No)
+ f'Are you sure you want to remove "{name}"?',
+ QMessageBox.Yes | QMessageBox.No)
if button == QMessageBox.Yes:
self.previous()
del self.contacts[name]
QMessageBox.information(self, "Remove Successful",
- f'"{name}" has been removed from your address book.')
+ f'"{name}" has been removed from your address book.')
self.update_interface(self.NavigationMode)
+ @Slot()
def next(self):
name = self._name_line.text()
it = iter(self.contacts)
@@ -258,6 +225,7 @@ class AddressBook(QWidget):
self._name_line.setText(next_name)
self._address_text.setText(next_address)
+ @Slot()
def previous(self):
name = self._name_line.text()
@@ -291,7 +259,7 @@ class AddressBook(QWidget):
self._address_text.setText(self.contacts[contact_name])
else:
QMessageBox.information(self, "Contact Not Found",
- f'Sorry, "{contact_name}" is not in your address book.')
+ f'Sorry, "{contact_name}" is not in your address book.')
return
self.update_interface(self.NavigationMode)
@@ -344,8 +312,8 @@ class AddressBook(QWidget):
def save_to_file(self):
fileName, _ = QFileDialog.getSaveFileName(self,
- "Save Address Book", '',
- "Address Book (*.abk);;All Files (*)")
+ "Save Address Book", '',
+ "Address Book (*.abk);;All Files (*)")
if not fileName:
return
@@ -354,7 +322,7 @@ class AddressBook(QWidget):
out_file = open(str(fileName), 'wb')
except IOError:
QMessageBox.information(self, "Unable to open file",
- f'There was an error opening "{fileName}"')
+ f'There was an error opening "{fileName}"')
return
pickle.dump(self.contacts, out_file)
@@ -362,8 +330,8 @@ class AddressBook(QWidget):
def load_from_file(self):
fileName, _ = QFileDialog.getOpenFileName(self,
- "Open Address Book", '',
- "Address Book (*.abk);;All Files (*)")
+ "Open Address Book", '',
+ "Address Book (*.abk);;All Files (*)")
if not fileName:
return
@@ -372,7 +340,7 @@ class AddressBook(QWidget):
in_file = open(str(fileName), 'rb')
except IOError:
QMessageBox.information(self, "Unable to open file",
- f'There was an error opening "{fileName}"')
+ f'There was an error opening "{fileName}"')
return
self.contacts = pickle.load(in_file)
@@ -380,8 +348,7 @@ class AddressBook(QWidget):
if len(self.contacts) == 0:
QMessageBox.information(self, "No contacts in file",
- "The file you are attempting to open contains no "
- "contacts.")
+ "The file you are attempting to open contains no contacts.")
else:
for name, address in self.contacts:
self._name_line.setText(name)
@@ -403,7 +370,7 @@ class AddressBook(QWidget):
last_name = ''
file_name = QFileDialog.getSaveFileName(self, "Export Contact",
- '', "vCard Files (*.vcf);;All Files (*)")[0]
+ '', "vCard Files (*.vcf);;All Files (*)")[0]
if not file_name:
return
@@ -411,8 +378,7 @@ class AddressBook(QWidget):
out_file = QFile(file_name)
if not out_file.open(QIODevice.WriteOnly):
- QMessageBox.information(self, "Unable to open file",
- out_file.errorString())
+ QMessageBox.information(self, "Unable to open file", out_file.errorString())
return
out_s = QTextStream(out_file)
@@ -430,7 +396,7 @@ class AddressBook(QWidget):
out_s << 'END:VCARD' << '\n'
QMessageBox.information(self, "Export Successful",
- f'"{name}" has been exported as a vCard.')
+ f'"{name}" has been exported as a vCard.')
class FindDialog(QDialog):
@@ -458,8 +424,7 @@ class FindDialog(QDialog):
text = self._line_edit.text()
if not text:
- QMessageBox.information(self, "Empty Field",
- "Please enter a name.")
+ QMessageBox.information(self, "Empty Field", "Please enter a name.")
return
self._find_text = text
diff --git a/examples/widgets/tutorials/cannon/t1.py b/examples/widgets/tutorials/cannon/t1.py
index 2da78ccf1..62411ace2 100644
--- a/examples/widgets/tutorials/cannon/t1.py
+++ b/examples/widgets/tutorials/cannon/t1.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 1
diff --git a/examples/widgets/tutorials/cannon/t10.py b/examples/widgets/tutorials/cannon/t10.py
index ed3d9fce3..8649bb562 100644
--- a/examples/widgets/tutorials/cannon/t10.py
+++ b/examples/widgets/tutorials/cannon/t10.py
@@ -1,50 +1,12 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 10
import sys
-from PySide6.QtCore import QRect, Qt, Signal, Slot
+from PySide6.QtCore import QRect, Qt, Signal, Slot, qWarning
from PySide6.QtGui import QColor, QFont, QPainter, QPalette
from PySide6.QtWidgets import (QApplication, QGridLayout, QLCDNumber,
QPushButton, QSlider, QVBoxLayout, QWidget)
@@ -81,8 +43,8 @@ class LCDRange(QWidget):
def set_range(self, minValue, maxValue):
if minValue < 0 or maxValue > 99 or minValue > maxValue:
qWarning(f"LCDRange::setRange({minValue}, {maxValue})\n"
- "\tRange must be 0..99\n"
- "\tand minValue must not be greater than maxValue")
+ "\tRange must be 0..99\n"
+ "\tand minValue must not be greater than maxValue")
return
self.slider.setRange(minValue, maxValue)
@@ -129,15 +91,14 @@ class CannonField(QWidget):
self.force_changed.emit(self._current_force)
def paintEvent(self, event):
- painter = QPainter(self)
-
- painter.setPen(Qt.NoPen)
- painter.setBrush(Qt.blue)
+ with QPainter(self) as painter:
+ painter.setPen(Qt.NoPen)
+ painter.setBrush(Qt.blue)
- painter.translate(0, self.height())
- painter.drawPie(QRect(-35, -35, 70, 70), 0, 90 * 16)
- painter.rotate(-self._current_angle)
- painter.drawRect(QRect(33, -4, 15, 8))
+ painter.translate(0, self.height())
+ painter.drawPie(QRect(-35, -35, 70, 70), 0, 90 * 16)
+ painter.rotate(-self._current_angle)
+ painter.drawRect(QRect(33, -4, 15, 8))
def cannon_rect(self):
result = QRect(0, 0, 50, 50)
@@ -152,7 +113,7 @@ class MyWidget(QWidget):
quit = QPushButton("&Quit")
quit.setFont(QFont("Times", 18, QFont.Bold))
- quit.clicked.connect(qApp.quit)
+ quit.clicked.connect(qApp.quit) # noqa: F821
angle = LCDRange()
angle.set_range(5, 70)
diff --git a/examples/widgets/tutorials/cannon/t11.py b/examples/widgets/tutorials/cannon/t11.py
index f297a14b4..fbfd2481d 100644
--- a/examples/widgets/tutorials/cannon/t11.py
+++ b/examples/widgets/tutorials/cannon/t11.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 11
@@ -45,7 +7,7 @@
import sys
import math
-from PySide6.QtCore import QPoint, QRect, QTimer, Qt, Signal, Slot
+from PySide6.QtCore import QPoint, QRect, QTimer, Qt, Signal, Slot, qWarning
from PySide6.QtGui import QColor, QFont, QPainter, QPalette, QRegion
from PySide6.QtWidgets import (QApplication, QGridLayout, QHBoxLayout,
QLCDNumber, QPushButton, QSlider,
@@ -83,8 +45,8 @@ class LCDRange(QWidget):
def set_range(self, minValue, maxValue):
if minValue < 0 or maxValue > 99 or minValue > maxValue:
qWarning(f"LCDRange::setRange({minValue}, {maxValue})\n"
- "\tRange must be 0..99\n"
- "\tand minValue must not be greater than maxValue")
+ "\tRange must be 0..99\n"
+ "\tand minValue must not be greater than maxValue")
return
self.slider.setRange(minValue, maxValue)
@@ -159,11 +121,10 @@ class CannonField(QWidget):
self.update(region)
def paintEvent(self, event):
- painter = QPainter(self)
-
- self.paint_cannon(painter)
- if self._auto_shoot_timer.isActive():
- self.paint_shot(painter)
+ with QPainter(self) as painter:
+ self.paint_cannon(painter)
+ if self._auto_shoot_timer.isActive():
+ self.paint_shot(painter)
def paint_shot(self, painter):
painter.setPen(Qt.NoPen)
@@ -214,7 +175,7 @@ class MyWidget(QWidget):
quit = QPushButton("&Quit")
quit.setFont(QFont("Times", 18, QFont.Bold))
- quit.clicked.connect(qApp.quit)
+ quit.clicked.connect(qApp.quit) # noqa: F821
angle = LCDRange()
angle.set_range(5, 70)
diff --git a/examples/widgets/tutorials/cannon/t12.py b/examples/widgets/tutorials/cannon/t12.py
index f2c6ea08c..749c24684 100644
--- a/examples/widgets/tutorials/cannon/t12.py
+++ b/examples/widgets/tutorials/cannon/t12.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 12
@@ -46,7 +8,7 @@ import sys
import math
import random
-from PySide6.QtCore import QPoint, QRect, QTime, QTimer, Qt, Signal, Slot
+from PySide6.QtCore import QPoint, QRect, QTime, QTimer, Qt, Signal, Slot, qWarning
from PySide6.QtGui import QColor, QFont, QPainter, QPalette, QRegion
from PySide6.QtWidgets import (QApplication, QGridLayout, QHBoxLayout,
QLabel, QLCDNumber, QPushButton, QSlider,
@@ -100,8 +62,8 @@ class LCDRange(QWidget):
def set_range(self, minValue, maxValue):
if minValue < 0 or maxValue > 99 or minValue > maxValue:
qWarning(f"LCDRange::setRange({minValue}, {maxValue})\n"
- "\tRange must be 0..99\n"
- "\tand minValue must not be greater than maxValue")
+ "\tRange must be 0..99\n"
+ "\tand minValue must not be greater than maxValue")
return
self.slider.setRange(minValue, maxValue)
@@ -198,13 +160,12 @@ class CannonField(QWidget):
self.update(region)
def paintEvent(self, event):
- painter = QPainter(self)
-
- self.paint_cannon(painter)
- if self._auto_shoot_timer.isActive():
- self.paint_shot(painter)
+ with QPainter(self) as painter:
+ self.paint_cannon(painter)
+ if self._auto_shoot_timer.isActive():
+ self.paint_shot(painter)
- self.paint_target(painter)
+ self.paint_target(painter)
def paint_shot(self, painter):
painter.setPen(Qt.NoPen)
@@ -265,7 +226,7 @@ class MyWidget(QWidget):
quit = QPushButton("&Quit")
quit.setFont(QFont("Times", 18, QFont.Bold))
- quit.clicked.connect(qApp.quit)
+ quit.clicked.connect(qApp.quit) # noqa: F821
angle = LCDRange("ANGLE")
angle.set_range(5, 70)
diff --git a/examples/widgets/tutorials/cannon/t13.py b/examples/widgets/tutorials/cannon/t13.py
index aa00825aa..f9a771d15 100644
--- a/examples/widgets/tutorials/cannon/t13.py
+++ b/examples/widgets/tutorials/cannon/t13.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 13
@@ -46,8 +8,8 @@ import sys
import math
import random
-from PySide6.QtCore import (QPoint, QRect, QTime, QTimer, Qt, SIGNAL, SLOT,
- Signal, Slot)
+from PySide6.QtCore import (QPoint, QRect, QTime, QTimer, Qt,
+ Signal, Slot, qWarning)
from PySide6.QtGui import QColor, QFont, QPainter, QPalette, QRegion
from PySide6.QtWidgets import (QApplication, QGridLayout, QHBoxLayout, QLabel,
QLCDNumber, QPushButton, QSizePolicy, QSlider,
@@ -102,8 +64,8 @@ class LCDRange(QWidget):
def set_range(self, minValue, maxValue):
if minValue < 0 or maxValue > 99 or minValue > maxValue:
qWarning(f"LCDRange::setRange({minValue}, {maxValue})\n"
- "\tRange must be 0..99\n"
- "\tand minValue must not be greater than maxValue")
+ "\tRange must be 0..99\n"
+ "\tand minValue must not be greater than maxValue")
return
self.slider.setRange(minValue, maxValue)
@@ -220,18 +182,17 @@ class CannonField(QWidget):
self.update(region)
def paintEvent(self, event):
- painter = QPainter(self)
-
- if self._game_ended:
- painter.setPen(Qt.black)
- painter.setFont(QFont("Courier", 48, QFont.Bold))
- painter.drawText(self.rect(), Qt.AlignCenter, "Game Over")
-
- self.paint_cannon(painter)
- if self.is_shooting():
- self.paint_shot(painter)
- if not self._game_ended:
- self.paint_target(painter)
+ with QPainter(self) as painter:
+ if self._game_ended:
+ painter.setPen(Qt.black)
+ painter.setFont(QFont("Courier", 48, QFont.Bold))
+ painter.drawText(self.rect(), Qt.AlignCenter, "Game Over")
+
+ self.paint_cannon(painter)
+ if self.is_shooting():
+ self.paint_shot(painter)
+ if not self._game_ended:
+ self.paint_target(painter)
def paint_shot(self, painter):
painter.setPen(Qt.NoPen)
@@ -298,7 +259,7 @@ class GameBoard(QWidget):
quit = QPushButton("&Quit")
quit.setFont(QFont("Times", 18, QFont.Bold))
- quit.clicked.connect(qApp.quit)
+ quit.clicked.connect(qApp.quit) # noqa: F821
angle = LCDRange("ANGLE")
angle.set_range(5, 70)
diff --git a/examples/widgets/tutorials/cannon/t14.py b/examples/widgets/tutorials/cannon/t14.py
index 0e8318ebe..3c94408f3 100644
--- a/examples/widgets/tutorials/cannon/t14.py
+++ b/examples/widgets/tutorials/cannon/t14.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 14
@@ -46,10 +8,10 @@ import sys
import math
import random
-from PySide6.QtCore import (QPoint, QRect, QTime, QTimer, QSize, Qt, SIGNAL,
- SLOT, Signal, Slot)
+from PySide6.QtCore import (QPoint, QRect, QTime, QTimer, QSize, Qt,
+ Signal, Slot, qWarning)
from PySide6.QtGui import (QColor, QFont, QKeySequence, QPainter, QPalette,
- QShortcut, QRegion)
+ QShortcut, QRegion, QTransform)
from PySide6.QtWidgets import (QApplication, QFrame, QGridLayout, QHBoxLayout,
QLabel, QLCDNumber, QPushButton, QSizePolicy,
QSlider, QVBoxLayout, QWidget)
@@ -103,8 +65,8 @@ class LCDRange(QWidget):
def set_range(self, minValue, maxValue):
if minValue < 0 or maxValue > 99 or minValue > maxValue:
qWarning(f"LCDRange::setRange({minValue}, {maxValue})\n"
- "\tRange must be 0..99\n"
- "\tand minValue must not be greater than maxValue")
+ "\tRange must be 0..99\n"
+ "\tand minValue must not be greater than maxValue")
return
self.slider.setRange(minValue, maxValue)
@@ -212,7 +174,8 @@ class CannonField(QWidget):
self._auto_shoot_timer.stop()
self.hit.emit()
self.can_shoot.emit(True)
- elif shot_r.x() > self.width() or shot_r.y() > self.height() or shot_r.intersects(self.barrier_rect()):
+ elif (shot_r.x() > self.width() or shot_r.y() > self.height()
+ or shot_r.intersects(self.barrier_rect())):
self._auto_shoot_timer.stop()
self.missed.emit()
self.can_shoot.emit(True)
@@ -243,19 +206,18 @@ class CannonField(QWidget):
self._barrel_pressed = False
def paintEvent(self, event):
- painter = QPainter(self)
-
- if self._game_ended:
- painter.setPen(Qt.black)
- painter.setFont(QFont("Courier", 48, QFont.Bold))
- painter.drawText(self.rect(), Qt.AlignCenter, "Game Over")
-
- self.paint_cannon(painter)
- self.paint_barrier(painter)
- if self.is_shooting():
- self.paint_shot(painter)
- if not self._game_ended:
- self.paint_target(painter)
+ with QPainter(self) as painter:
+ if self._game_ended:
+ painter.setPen(Qt.black)
+ painter.setFont(QFont("Courier", 48, QFont.Bold))
+ painter.drawText(self.rect(), Qt.AlignCenter, "Game Over")
+
+ self.paint_cannon(painter)
+ self.paint_barrier(painter)
+ if self.is_shooting():
+ self.paint_shot(painter)
+ if not self._game_ended:
+ self.paint_target(painter)
def paint_shot(self, painter):
painter.setPen(Qt.NoPen)
@@ -340,7 +302,7 @@ class GameBoard(QWidget):
quit = QPushButton("&Quit")
quit.setFont(QFont("Times", 18, QFont.Bold))
- quit.clicked.connect(qApp.quit)
+ quit.clicked.connect(qApp.quit) # noqa: F821
angle = LCDRange("ANGLE")
angle.set_range(5, 70)
@@ -380,7 +342,7 @@ class GameBoard(QWidget):
QShortcut(QKeySequence(Qt.Key_Enter), self, self.fire)
QShortcut(QKeySequence(Qt.Key_Return), self, self.fire)
- QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Q), self, self.close)
+ QShortcut(QKeySequence(Qt.CTRL | Qt.Key_Q), self, self.close)
top_layout = QHBoxLayout()
top_layout.addWidget(shoot)
diff --git a/examples/widgets/tutorials/cannon/t2.py b/examples/widgets/tutorials/cannon/t2.py
index 1205a1328..d3adba396 100644
--- a/examples/widgets/tutorials/cannon/t2.py
+++ b/examples/widgets/tutorials/cannon/t2.py
@@ -1,52 +1,13 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 2
import sys
-from PySide6.QtCore import (QPoint, QRect, QTime, QTimer, Qt)
from PySide6.QtGui import QFont
-from PySide6.QtWidgets import (QApplication, QPushButton)
+from PySide6.QtWidgets import QApplication, QPushButton
if __name__ == '__main__':
diff --git a/examples/widgets/tutorials/cannon/t3.py b/examples/widgets/tutorials/cannon/t3.py
index fbbb9b71e..13bd8f736 100644
--- a/examples/widgets/tutorials/cannon/t3.py
+++ b/examples/widgets/tutorials/cannon/t3.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 3
diff --git a/examples/widgets/tutorials/cannon/t4.py b/examples/widgets/tutorials/cannon/t4.py
index b309c7bff..37a2dc9dd 100644
--- a/examples/widgets/tutorials/cannon/t4.py
+++ b/examples/widgets/tutorials/cannon/t4.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 4
@@ -58,7 +20,7 @@ class MyWidget(QWidget):
self.quit.setGeometry(62, 40, 75, 30)
self.quit.setFont(QFont("Times", 18, QFont.Bold))
- self.quit.clicked.connect(qApp.quit)
+ self.quit.clicked.connect(qApp.quit) # noqa: F821
if __name__ == '__main__':
diff --git a/examples/widgets/tutorials/cannon/t5.py b/examples/widgets/tutorials/cannon/t5.py
index a4324a633..ed5d085f8 100644
--- a/examples/widgets/tutorials/cannon/t5.py
+++ b/examples/widgets/tutorials/cannon/t5.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 5
@@ -63,7 +25,7 @@ class MyWidget(QWidget):
slider.setRange(0, 99)
slider.setValue(0)
- quit.clicked.connect(qApp.quit)
+ quit.clicked.connect(qApp.quit) # noqa: F821
slider.valueChanged.connect(lcd.display)
layout = QVBoxLayout(self)
diff --git a/examples/widgets/tutorials/cannon/t6.py b/examples/widgets/tutorials/cannon/t6.py
index c30fbfc6d..ea2e044e6 100644
--- a/examples/widgets/tutorials/cannon/t6.py
+++ b/examples/widgets/tutorials/cannon/t6.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 6
@@ -71,7 +33,7 @@ class MyWidget(QWidget):
quit = QPushButton("Quit")
quit.setFont(QFont("Times", 18, QFont.Bold))
- quit.clicked.connect(qApp.quit)
+ quit.clicked.connect(qApp.quit) # noqa: F821
layout = QVBoxLayout(self)
layout.addWidget(quit)
diff --git a/examples/widgets/tutorials/cannon/t7.py b/examples/widgets/tutorials/cannon/t7.py
index f1c6798bb..1175107b8 100644
--- a/examples/widgets/tutorials/cannon/t7.py
+++ b/examples/widgets/tutorials/cannon/t7.py
@@ -1,43 +1,5 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 7
@@ -84,7 +46,7 @@ class MyWidget(QWidget):
quit = QPushButton("Quit")
quit.setFont(QFont("Times", 18, QFont.Bold))
- quit.clicked.connect(qApp.quit)
+ quit.clicked.connect(qApp.quit) # noqa: F821
previous_range = None
diff --git a/examples/widgets/tutorials/cannon/t8.py b/examples/widgets/tutorials/cannon/t8.py
index cc54194cf..9bb5516b8 100644
--- a/examples/widgets/tutorials/cannon/t8.py
+++ b/examples/widgets/tutorials/cannon/t8.py
@@ -1,50 +1,12 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 8
import sys
-from PySide6.QtCore import Signal, Slot, Qt
+from PySide6.QtCore import Signal, Slot, Qt, qWarning
from PySide6.QtGui import QColor, QFont, QPainter, QPalette
from PySide6.QtWidgets import (QApplication, QGridLayout, QLCDNumber,
QPushButton, QSlider, QVBoxLayout, QWidget)
@@ -81,8 +43,8 @@ class LCDRange(QWidget):
def set_range(self, minValue, maxValue):
if minValue < 0 or maxValue > 99 or minValue > maxValue:
qWarning("LCDRange.setRange({minValue}, {maxValue})\n"
- "\tRange must be 0..99\n"
- "\tand minValue must not be greater than maxValue")
+ "\tRange must be 0..99\n"
+ "\tand minValue must not be greater than maxValue")
return
self.slider.setRange(minValue, maxValue)
@@ -115,8 +77,8 @@ class CannonField(QWidget):
self.angle_changed.emit(self._current_angle)
def paintEvent(self, event):
- painter = QPainter(self)
- painter.drawText(200, 200, f"Angle = {self._current_angle}")
+ with QPainter(self) as painter:
+ painter.drawText(200, 200, f"Angle = {self._current_angle}")
class MyWidget(QWidget):
@@ -126,7 +88,7 @@ class MyWidget(QWidget):
quit = QPushButton("Quit")
quit.setFont(QFont("Times", 18, QFont.Bold))
- quit.clicked.connect(qApp.quit)
+ quit.clicked.connect(qApp.quit) # noqa: F821
angle = LCDRange()
angle.set_range(5, 70)
diff --git a/examples/widgets/tutorials/cannon/t9.py b/examples/widgets/tutorials/cannon/t9.py
index 36dcf8fb1..7cdda4e7b 100644
--- a/examples/widgets/tutorials/cannon/t9.py
+++ b/examples/widgets/tutorials/cannon/t9.py
@@ -1,50 +1,12 @@
-
-#############################################################################
-##
-## Copyright (C) 2021 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
# PySide6 tutorial 9
import sys
-from PySide6.QtCore import QRect, Qt, Signal, Slot
+from PySide6.QtCore import QRect, Qt, Signal, Slot, qWarning
from PySide6.QtGui import QColor, QFont, QPainter, QPalette
from PySide6.QtWidgets import (QApplication, QGridLayout, QLCDNumber,
QPushButton, QSlider, QVBoxLayout, QWidget)
@@ -81,8 +43,8 @@ class LCDRange(QWidget):
def set_range(self, minValue, maxValue):
if minValue < 0 or maxValue > 99 or minValue > maxValue:
qWarning(f"LCDRange::setRange({minValue}, {maxValue})\n"
- "\tRange must be 0..99\n"
- "\tand minValue must not be greater than maxValue")
+ "\tRange must be 0..99\n"
+ "\tand minValue must not be greater than maxValue")
return
self.slider.setRange(minValue, maxValue)
@@ -115,15 +77,14 @@ class CannonField(QWidget):
self.angle_changed.emit(self._current_angle)
def paintEvent(self, event):
- painter = QPainter(self)
-
- painter.setPen(Qt.NoPen)
- painter.setBrush(Qt.blue)
+ with QPainter(self) as painter:
+ painter.setPen(Qt.NoPen)
+ painter.setBrush(Qt.blue)
- painter.translate(0, self.rect().height())
- painter.drawPie(QRect(-35, -35, 70, 70), 0, 90 * 16)
- painter.rotate(-self._current_angle)
- painter.drawRect(QRect(33, -4, 15, 8))
+ painter.translate(0, self.rect().height())
+ painter.drawPie(QRect(-35, -35, 70, 70), 0, 90 * 16)
+ painter.rotate(-self._current_angle)
+ painter.drawRect(QRect(33, -4, 15, 8))
class MyWidget(QWidget):
@@ -133,7 +94,7 @@ class MyWidget(QWidget):
quit = QPushButton("Quit")
quit.setFont(QFont("Times", 18, QFont.Bold))
- quit.clicked.connect(qApp.quit)
+ quit.clicked.connect(qApp.quit) # noqa: F821
angle = LCDRange()
angle.set_range(5, 70)
diff --git a/examples/widgets/tutorials/modelview/1_readonly.py b/examples/widgets/tutorials/modelview/1_readonly.py
new file mode 100644
index 000000000..9dc923260
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/1_readonly.py
@@ -0,0 +1,38 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QAbstractTableModel, Qt
+from PySide6.QtWidgets import QApplication, QTableView
+
+"""PySide6 port of the widgets/tutorials/modelview/1_readonly example from Qt v6.x"""
+
+
+#! [1]
+class MyModel(QAbstractTableModel):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ def rowCount(self, parent=None):
+ return 2
+
+ def columnCount(self, parent=None):
+ return 3
+
+ def data(self, index, role=Qt.DisplayRole):
+ if role == Qt.DisplayRole:
+ row = index.row() + 1
+ column = index.column() + 1
+ return f"Row{row}, Column{column}"
+ return None
+#! [1]
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ table_view = QTableView()
+ my_model = MyModel()
+ table_view.setModel(my_model)
+ table_view.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/tutorials/modelview/2_formatting.py b/examples/widgets/tutorials/modelview/2_formatting.py
new file mode 100644
index 000000000..f39ec462c
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/2_formatting.py
@@ -0,0 +1,65 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QAbstractTableModel, Qt
+from PySide6.QtGui import QBrush, QFont
+from PySide6.QtWidgets import QApplication, QTableView
+
+"""PySide6 port of the widgets/tutorials/modelview/2_formatting example from Qt v6.x"""
+
+
+class MyModel(QAbstractTableModel):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ def rowCount(self, parent=None):
+ return 2
+
+ def columnCount(self, parent=None):
+ return 3
+
+#! [1]
+ def data(self, index, role=Qt.DisplayRole):
+ row = index.row()
+ col = index.column()
+ # generate a log message when this method gets called
+ print(f"row {row}, col{col}, role {role}")
+
+ if role == Qt.DisplayRole:
+ if row == 0 and col == 1:
+ return "<--left"
+ if row == 1 and col == 1:
+ return "right-->"
+ return f"Row{row}, Column{col + 1}"
+
+ elif role == Qt.FontRole:
+ if row == 0 and col == 0: # change font only for cell(0,0)
+ bold_font = QFont()
+ bold_font.setBold(True)
+ return bold_font
+
+ elif role == Qt.BackgroundRole:
+ if row == 1 and col == 2: # change background only for cell(1,2)
+ return QBrush(Qt.red)
+
+ elif role == Qt.TextAlignmentRole:
+ if row == 1 and col == 1: # change text alignment only for cell(1,1)
+ return Qt.AlignRight | Qt.AlignVCenter
+
+ elif role == Qt.CheckStateRole:
+ if row == 1 and col == 0: # add a checkbox to cell(1,0)
+ return Qt.Checked
+
+ return None
+#! [1]
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ table_view = QTableView()
+ my_model = MyModel()
+ table_view.setModel(my_model)
+ table_view.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/tutorials/modelview/3_changingmodel.py b/examples/widgets/tutorials/modelview/3_changingmodel.py
new file mode 100644
index 000000000..2148ec5d3
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/3_changingmodel.py
@@ -0,0 +1,53 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QAbstractTableModel, QTime, QTimer, Qt, Slot
+from PySide6.QtWidgets import QApplication, QTableView
+
+"""PySide6 port of the widgets/tutorials/modelview/3_changingmodel example from Qt v6.x"""
+
+
+class MyModel(QAbstractTableModel):
+#! [1]
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._timer = QTimer(self)
+ self._timer.setInterval(1000)
+ self._timer.timeout.connect(self.timer_hit)
+ self._timer.start()
+#! [1]
+
+ def rowCount(self, parent=None):
+ return 2
+
+ def columnCount(self, parent=None):
+ return 3
+
+#! [2]
+ def data(self, index, role=Qt.DisplayRole):
+ row = index.row()
+ col = index.column()
+ if role == Qt.DisplayRole and row == 0 and col == 0:
+ return QTime.currentTime().toString()
+ return None
+#! [2]
+
+#! [3]
+ @Slot()
+ def timer_hit(self):
+ # we identify the top left cell
+ top_left = self.createIndex(0, 0)
+ # emit a signal to make the view reread identified data
+ self.dataChanged.emit(top_left, top_left, [Qt.DisplayRole])
+#! [3]
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ table_view = QTableView()
+ my_model = MyModel()
+ table_view.setModel(my_model)
+ table_view.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/tutorials/modelview/4_headers.py b/examples/widgets/tutorials/modelview/4_headers.py
new file mode 100644
index 000000000..3feef17bf
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/4_headers.py
@@ -0,0 +1,43 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QAbstractTableModel, Qt
+from PySide6.QtWidgets import QApplication, QTableView
+
+"""PySide6 port of the widgets/tutorials/modelview/4_headers example from Qt v6.x"""
+
+
+class MyModel(QAbstractTableModel):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ def rowCount(self, parent=None):
+ return 2
+
+ def columnCount(self, parent=None):
+ return 3
+
+ def data(self, index, role=Qt.DisplayRole):
+ if role == Qt.DisplayRole:
+ row = index.row() + 1
+ column = index.column() + 1
+ return f"Row{row}, Column{column}"
+ return None
+
+#! [1]
+ def headerData(self, section, orientation, role):
+ if role == Qt.DisplayRole and orientation == Qt.Horizontal:
+ return ["first", "second", "third"][section]
+ return None
+#! [1]
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ table_view = QTableView()
+ my_model = MyModel()
+ table_view.setModel(my_model)
+ table_view.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/tutorials/modelview/5_edit.py b/examples/widgets/tutorials/modelview/5_edit.py
new file mode 100644
index 000000000..1a4481fc9
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/5_edit.py
@@ -0,0 +1,73 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+from itertools import chain
+
+from PySide6.QtCore import QAbstractTableModel, Qt, Signal, Slot
+from PySide6.QtWidgets import QApplication, QMainWindow, QTableView
+
+"""PySide6 port of the widgets/tutorials/modelview/5_edit example from Qt v6.x"""
+
+
+COLS = 3
+ROWS = 2
+
+
+class MyModel(QAbstractTableModel):
+
+ editCompleted = Signal(str)
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._grid_data = [["" for y in range(COLS)] for x in range(ROWS)]
+
+ def rowCount(self, parent=None):
+ return ROWS
+
+ def columnCount(self, parent=None):
+ return COLS
+
+ def data(self, index, role=Qt.DisplayRole):
+ if role == Qt.DisplayRole and self.checkIndex(index):
+ return self._grid_data[index.row()][index.column()]
+ return None
+
+#! [1]
+ def setData(self, index, value, role):
+ if role != Qt.EditRole or not self.checkIndex(index):
+ return False
+ # save value from editor to member m_gridData
+ self._grid_data[index.row()][index.column()] = value
+ # for presentation purposes only: build and emit a joined string
+ result = " ".join(chain(*self._grid_data))
+ self.editCompleted.emit(result)
+ return True
+#! [1]
+
+#! [2]
+ def flags(self, index):
+ return Qt.ItemIsEditable | super().flags(index)
+#! [2]
+
+
+class MainWindow(QMainWindow):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._table_view = QTableView(self)
+ self.setCentralWidget(self._table_view)
+ my_model = MyModel(self)
+ self._table_view.setModel(my_model)
+ # transfer changes to the model to the window title
+ my_model.editCompleted.connect(self.show_window_title)
+
+ @Slot(str)
+ def show_window_title(self, title):
+ self.setWindowTitle(title)
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ w = MainWindow()
+ w.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/tutorials/modelview/6_treeview.py b/examples/widgets/tutorials/modelview/6_treeview.py
new file mode 100644
index 000000000..cac3c6d53
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/6_treeview.py
@@ -0,0 +1,42 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtGui import QStandardItem, QStandardItemModel
+from PySide6.QtWidgets import QApplication, QMainWindow, QTreeView
+
+"""PySide6 port of the widgets/tutorials/modelview/6_treeview example from Qt v6.x"""
+
+
+#! [1]
+class MainWindow(QMainWindow):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._standard_model = QStandardItemModel(self)
+ self._tree_view = QTreeView(self)
+ self.setCentralWidget(self._tree_view)
+
+ prepared_row = self.prepare_row("first", "second", "third")
+ item = self._standard_model.invisibleRootItem()
+ # adding a row to the invisible root item produces a root element
+ item.appendRow(prepared_row)
+
+ second_row = self.prepare_row("111", "222", "333")
+ # adding a row to an item starts a subtree
+ prepared_row[0].appendRow(second_row)
+
+ self._tree_view.setModel(self._standard_model)
+ self._tree_view.expandAll()
+
+ def prepare_row(self, first, second, third):
+ return [QStandardItem(first), QStandardItem(second),
+ QStandardItem(third)]
+#! [1]
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ w = MainWindow()
+ w.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/tutorials/modelview/7_selections.py b/examples/widgets/tutorials/modelview/7_selections.py
new file mode 100644
index 000000000..c879d8f67
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/7_selections.py
@@ -0,0 +1,71 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtCore import QItemSelection, Qt, Slot
+from PySide6.QtGui import QStandardItem, QStandardItemModel
+from PySide6.QtWidgets import QApplication, QMainWindow, QTreeView
+
+"""PySide6 port of the widgets/tutorials/modelview/7_selections example from Qt v6.x"""
+
+
+#! [1]
+class MainWindow(QMainWindow):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._standard_model = QStandardItemModel(self)
+ self._tree_view = QTreeView(self)
+ self.setCentralWidget(self._tree_view)
+
+ # defining a couple of items
+ root_node = self._standard_model.invisibleRootItem()
+
+ america_item = QStandardItem("America")
+ mexico_item = QStandardItem("Canada")
+ usa_item = QStandardItem("USA")
+ boston_item = QStandardItem("Boston")
+ europe_item = QStandardItem("Europe")
+ italy_item = QStandardItem("Italy")
+ rome_item = QStandardItem("Rome")
+ verona_item = QStandardItem("Verona")
+
+ # building up the hierarchy
+ root_node.appendRow(america_item)
+ root_node.appendRow(europe_item)
+ america_item.appendRow(mexico_item)
+ america_item.appendRow(usa_item)
+ usa_item.appendRow(boston_item)
+ europe_item.appendRow(italy_item)
+ italy_item.appendRow(rome_item)
+ italy_item.appendRow(verona_item)
+
+ self._tree_view.setModel(self._standard_model)
+ self._tree_view.expandAll()
+
+ # selection changes shall trigger a slot
+ selection_model = self._tree_view.selectionModel()
+ selection_model.selectionChanged.connect(self.selection_changed_slot)
+#! [1]
+
+#! [2]
+ @Slot(QItemSelection, QItemSelection)
+ def selection_changed_slot(self, new_selection, old_selection):
+ # get the text of the selected item
+ index = self._tree_view.selectionModel().currentIndex()
+ selected_text = index.data(Qt.DisplayRole)
+ # find out the hierarchy level of the selected item
+ hierarchy_level = 1
+ seek_root = index
+ while seek_root.parent().isValid():
+ seek_root = seek_root.parent()
+ hierarchy_level += 1
+ self.setWindowTitle(f"{selected_text}, Level {hierarchy_level}")
+#! [2]
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ w = MainWindow()
+ w.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/tutorials/modelview/doc/modelview.rst b/examples/widgets/tutorials/modelview/doc/modelview.rst
new file mode 100644
index 000000000..017f78de1
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/doc/modelview.rst
@@ -0,0 +1,4 @@
+Model View Tutorial Examples
+============================
+
+Example code for the Model View Tutorial.
diff --git a/examples/widgets/tutorials/modelview/modelview.pyproject b/examples/widgets/tutorials/modelview/modelview.pyproject
new file mode 100644
index 000000000..3bbe9d47a
--- /dev/null
+++ b/examples/widgets/tutorials/modelview/modelview.pyproject
@@ -0,0 +1,9 @@
+{
+ "files": ["1_readonly.py",
+ "2_formatting.py",
+ "3_changingmodel.py",
+ "4_headers.py",
+ "5_edit.py",
+ "6_treeview.py",
+ "7_selections.py"]
+}
diff --git a/examples/widgets/widgets/charactermap/charactermap.pyproject b/examples/widgets/widgets/charactermap/charactermap.pyproject
new file mode 100644
index 000000000..c2b2c2068
--- /dev/null
+++ b/examples/widgets/widgets/charactermap/charactermap.pyproject
@@ -0,0 +1,4 @@
+{
+ "files": ["main.py", "characterwidget.py", "fontinfodialog.py",
+ "mainwindow.py"]
+}
diff --git a/examples/widgets/widgets/charactermap/characterwidget.py b/examples/widgets/widgets/charactermap/characterwidget.py
new file mode 100644
index 000000000..0f01f9684
--- /dev/null
+++ b/examples/widgets/widgets/charactermap/characterwidget.py
@@ -0,0 +1,133 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from textwrap import dedent
+
+from PySide6.QtCore import QSize, Qt, Slot, Signal
+from PySide6.QtGui import (QBrush, QFont, QFontDatabase, QFontMetrics,
+ QPainter, QPen)
+from PySide6.QtWidgets import QToolTip, QWidget
+
+COLUMNS = 16
+
+
+class CharacterWidget(QWidget):
+
+ character_selected = Signal(str)
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self._display_font = QFont()
+ self._last_key = -1
+ self._square_size = int(0)
+
+ self.calculate_square_size()
+ self.setMouseTracking(True)
+
+ @Slot(QFont)
+ def update_font(self, font):
+ self._display_font.setFamily(font.family())
+ self.calculate_square_size()
+ self.adjustSize()
+ self.update()
+
+ @Slot(str)
+ def update_size(self, fontSize):
+ self._display_font.setPointSize(int(fontSize))
+ self.calculate_square_size()
+ self.adjustSize()
+ self.update()
+
+ @Slot(str)
+ def update_style(self, fontStyle):
+ old_strategy = self._display_font.styleStrategy()
+ self._display_font = QFontDatabase.font(self._display_font.family(),
+ fontStyle,
+ self._display_font.pointSize())
+ self._display_font.setStyleStrategy(old_strategy)
+ self.calculate_square_size()
+ self.adjustSize()
+ self.update()
+
+ @Slot(bool)
+ def update_font_merging(self, enable):
+ if enable:
+ self._display_font.setStyleStrategy(QFont.PreferDefault)
+ else:
+ self._display_font.setStyleStrategy(QFont.NoFontMerging)
+ self.adjustSize()
+ self.update()
+
+ def calculate_square_size(self):
+ h = QFontMetrics(self._display_font, self).height()
+ self._square_size = max(16, 4 + h)
+
+ def sizeHint(self):
+ return QSize(COLUMNS * self._square_size,
+ (65536 / COLUMNS) * self._square_size)
+
+ def _unicode_from_pos(self, point):
+ row = int(point.y() / self._square_size)
+ return row * COLUMNS + int(point.x() / self._square_size)
+
+ def mouseMoveEvent(self, event):
+ widget_position = self.mapFromGlobal(event.globalPosition().toPoint())
+ key = self._unicode_from_pos(widget_position)
+ c = chr(key)
+ family = self._display_font.family()
+ text = dedent(f'''
+ <p>Character: <span style="font-size: 24pt; font-family: {family}">
+ {c}</span><p>Value: 0x{key:x}
+ ''')
+ QToolTip.showText(event.globalPosition().toPoint(), text, self)
+
+ def mousePressEvent(self, event):
+ if event.button() == Qt.LeftButton:
+ self._last_key = self._unicode_from_pos(event.position().toPoint())
+ if self._last_key != -1:
+ c = chr(self._last_key)
+ self.character_selected.emit(f"{c}")
+ self.update()
+ else:
+ super().mousePressEvent(event)
+
+ def paintEvent(self, event):
+ with QPainter(self) as painter:
+ self.render(event, painter)
+
+ def render(self, event, painter):
+ painter = QPainter(self)
+ painter.fillRect(event.rect(), QBrush(Qt.white))
+ painter.setFont(self._display_font)
+ redraw_rect = event.rect()
+ begin_row = int(redraw_rect.top() / self._square_size)
+ end_row = int(redraw_rect.bottom() / self._square_size)
+ begin_column = int(redraw_rect.left() / self._square_size)
+ end_column = int(redraw_rect.right() / self._square_size)
+ painter.setPen(QPen(Qt.gray))
+ for row in range(begin_row, end_row + 1):
+ for column in range(begin_column, end_column + 1):
+ x = int(column * self._square_size)
+ y = int(row * self._square_size)
+ painter.drawRect(x, y, self._square_size, self._square_size)
+
+ font_metrics = QFontMetrics(self._display_font)
+ painter.setPen(QPen(Qt.black))
+ for row in range(begin_row, end_row + 1):
+ for column in range(begin_column, end_column + 1):
+ key = int(row * COLUMNS + column)
+ painter.setClipRect(column * self._square_size,
+ row * self._square_size,
+ self._square_size, self._square_size)
+
+ if key == self._last_key:
+ painter.fillRect(column * self._square_size + 1,
+ row * self._square_size + 1,
+ self._square_size, self._square_size, QBrush(Qt.red))
+
+ text = chr(key)
+ painter.drawText(column * self._square_size + (self._square_size / 2)
+ - font_metrics.horizontalAdvance(text) / 2,
+ row * self._square_size + 4 + font_metrics.ascent(),
+ text)
diff --git a/examples/widgets/widgets/charactermap/doc/charactermap.rst b/examples/widgets/widgets/charactermap/doc/charactermap.rst
new file mode 100644
index 000000000..1a38615c4
--- /dev/null
+++ b/examples/widgets/widgets/charactermap/doc/charactermap.rst
@@ -0,0 +1,8 @@
+Character Map Example
+=====================
+
+The example displays an array of characters which the user can click on
+to enter text in a line edit. The contents of the line edit can then be
+copied into the clipboard, and pasted into other applications. The
+purpose behind this sort of tool is to allow users to enter characters
+that may be unavailable or difficult to locate on their keyboards.
diff --git a/examples/widgets/widgets/charactermap/fontinfodialog.py b/examples/widgets/widgets/charactermap/fontinfodialog.py
new file mode 100644
index 000000000..aa874884f
--- /dev/null
+++ b/examples/widgets/widgets/charactermap/fontinfodialog.py
@@ -0,0 +1,47 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Qt, qVersion, qFuzzyCompare
+from PySide6.QtGui import QGuiApplication, QFontDatabase
+from PySide6.QtWidgets import (QDialog, QDialogButtonBox,
+ QPlainTextEdit, QVBoxLayout)
+
+
+def _format_font(font):
+ family = font.family()
+ size = font.pointSizeF()
+ return f"{family}, {size}pt"
+
+
+class FontInfoDialog(QDialog):
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)
+ main_layout = QVBoxLayout(self)
+ text_edit = QPlainTextEdit(self.text(), self)
+ text_edit.setReadOnly(True)
+ text_edit.setFont(QFontDatabase.systemFont(QFontDatabase.FixedFont))
+ main_layout.addWidget(text_edit)
+ button_box = QDialogButtonBox(QDialogButtonBox.Close, self)
+ button_box.rejected.connect(self.reject)
+ main_layout.addWidget(button_box)
+
+ def text(self):
+ default_font = QFontDatabase.systemFont(QFontDatabase.GeneralFont)
+ fixed_font = QFontDatabase.systemFont(QFontDatabase.FixedFont)
+ title_font = QFontDatabase.systemFont(QFontDatabase.TitleFont)
+ smallest_readable_font = QFontDatabase.systemFont(QFontDatabase.SmallestReadableFont)
+
+ v = qVersion()
+ platform = QGuiApplication.platformName()
+ dpi = self.logicalDpiX()
+ dpr = self.devicePixelRatio()
+ text = f"Qt {v} on {platform}, {dpi}DPI"
+ if not qFuzzyCompare(dpr, float(1)):
+ text += f", device pixel ratio: {dpr}"
+ text += ("\n\nDefault font : " + _format_font(default_font)
+ + "\nFixed font : " + _format_font(fixed_font)
+ + "\nTitle font : " + _format_font(title_font)
+ + "\nSmallest font: " + _format_font(smallest_readable_font))
+ return text
diff --git a/examples/widgets/widgets/charactermap/main.py b/examples/widgets/widgets/charactermap/main.py
new file mode 100644
index 000000000..e84a1d8af
--- /dev/null
+++ b/examples/widgets/widgets/charactermap/main.py
@@ -0,0 +1,17 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import sys
+
+from PySide6.QtWidgets import QApplication
+
+from mainwindow import MainWindow
+
+"""PySide6 port of the widgets/widgets/ charactermap example from Qt6"""
+
+
+if __name__ == "__main__":
+ app = QApplication(sys.argv)
+ window = MainWindow()
+ window.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/widgets/charactermap/mainwindow.py b/examples/widgets/widgets/charactermap/mainwindow.py
new file mode 100644
index 000000000..d79285def
--- /dev/null
+++ b/examples/widgets/widgets/charactermap/mainwindow.py
@@ -0,0 +1,167 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtCore import Qt, QSignalBlocker, Slot
+from PySide6.QtGui import QGuiApplication, QClipboard, QFont, QFontDatabase
+from PySide6.QtWidgets import (QCheckBox, QComboBox, QFontComboBox,
+ QHBoxLayout, QLabel, QLineEdit, QMainWindow,
+ QPushButton, QScrollArea,
+ QVBoxLayout, QWidget)
+
+from characterwidget import CharacterWidget
+from fontinfodialog import FontInfoDialog
+
+
+class MainWindow(QMainWindow):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self._character_widget = CharacterWidget()
+ self._filter_combo = QComboBox()
+ self._style_combo = QComboBox()
+ self._size_combo = QComboBox()
+ self._font_combo = QFontComboBox()
+ self._line_edit = QLineEdit()
+ self._scroll_area = QScrollArea()
+ self._font_merging = QCheckBox()
+
+ file_menu = self.menuBar().addMenu("File")
+ file_menu.addAction("Quit", self.close)
+ help_menu = self.menuBar().addMenu("Help")
+ help_menu.addAction("Show Font Info", self.show_info)
+ help_menu.addAction("About &Qt", qApp.aboutQt) # noqa: F821
+
+ central_widget = QWidget()
+
+ self._filter_label = QLabel("Filter:")
+ self._filter_combo = QComboBox()
+ self._filter_combo.addItem("All", int(QFontComboBox.AllFonts.value))
+ self._filter_combo.addItem("Scalable", int(QFontComboBox.ScalableFonts.value))
+ self._filter_combo.addItem("Monospaced", int(QFontComboBox.MonospacedFonts.value))
+ self._filter_combo.addItem("Proportional", int(QFontComboBox.ProportionalFonts.value))
+ self._filter_combo.setCurrentIndex(0)
+ self._filter_combo.currentIndexChanged.connect(self.filter_changed)
+
+ self._font_label = QLabel("Font:")
+ self._font_combo = QFontComboBox()
+ self._size_label = QLabel("Size:")
+ self._size_combo = QComboBox()
+ self._style_label = QLabel("Style:")
+ self._style_combo = QComboBox()
+ self._font_merging_label = QLabel("Automatic Font Merging:")
+ self._font_merging = QCheckBox()
+ self._font_merging.setChecked(True)
+
+ self._scroll_area = QScrollArea()
+ self._character_widget = CharacterWidget()
+ self._scroll_area.setWidget(self._character_widget)
+ self.find_styles(self._font_combo.currentFont())
+ self.find_sizes(self._font_combo.currentFont())
+
+ self._line_edit = QLineEdit()
+ self._line_edit.setClearButtonEnabled(True)
+ self._clipboard_button = QPushButton("To clipboard")
+ self._font_combo.currentFontChanged.connect(self.find_styles)
+ self._font_combo.currentFontChanged.connect(self.find_sizes)
+ self._font_combo.currentFontChanged.connect(self._character_widget.update_font)
+ self._size_combo.currentTextChanged.connect(self._character_widget.update_size)
+ self._style_combo.currentTextChanged.connect(self._character_widget.update_style)
+ self._character_widget.character_selected.connect(self.insert_character)
+
+ self._clipboard_button.clicked.connect(self.update_clipboard)
+ self._font_merging.toggled.connect(self._character_widget.update_font_merging)
+
+ controls_layout = QHBoxLayout()
+ controls_layout.addWidget(self._filter_label)
+ controls_layout.addWidget(self._filter_combo, 1)
+ controls_layout.addWidget(self._font_label)
+ controls_layout.addWidget(self._font_combo, 1)
+ controls_layout.addWidget(self._size_label)
+ controls_layout.addWidget(self._size_combo, 1)
+ controls_layout.addWidget(self._style_label)
+ controls_layout.addWidget(self._style_combo, 1)
+ controls_layout.addWidget(self._font_merging_label)
+ controls_layout.addWidget(self._font_merging, 1)
+ controls_layout.addStretch(1)
+
+ line_layout = QHBoxLayout()
+ line_layout.addWidget(self._line_edit, 1)
+ line_layout.addSpacing(12)
+ line_layout.addWidget(self._clipboard_button)
+
+ central_layout = QVBoxLayout(central_widget)
+ central_layout.addLayout(controls_layout)
+ central_layout.addWidget(self._scroll_area, 1)
+ central_layout.addSpacing(4)
+ central_layout.addLayout(line_layout)
+
+ self.setCentralWidget(central_widget)
+ self.setWindowTitle("Character Map")
+
+ @Slot(QFont)
+ def find_styles(self, font):
+ current_item = self._style_combo.currentText()
+ self._style_combo.clear()
+ styles = QFontDatabase.styles(font.family())
+ for style in styles:
+ self._style_combo.addItem(style)
+
+ style_index = self._style_combo.findText(current_item)
+
+ if style_index == -1:
+ self._style_combo.setCurrentIndex(0)
+ else:
+ self._style_combo.setCurrentIndex(style_index)
+
+ @Slot(int)
+ def filter_changed(self, f):
+ filter = QFontComboBox.FontFilter(self._filter_combo.itemData(f))
+ self._font_combo.setFontFilters(filter)
+ count = self._font_combo.count()
+ self.statusBar().showMessage(f"{count} font(s) found")
+
+ @Slot(QFont)
+ def find_sizes(self, font):
+ current_size = self._size_combo.currentText()
+ with QSignalBlocker(self._size_combo):
+ # sizeCombo signals are now blocked until end of scope
+ self._size_combo.clear()
+
+ style = QFontDatabase.styleString(font)
+ if QFontDatabase.isSmoothlyScalable(font.family(), style):
+ sizes = QFontDatabase.standardSizes()
+ for size in sizes:
+ self._size_combo.addItem(f"{size}")
+ self._size_combo.setEditable(True)
+ else:
+ sizes = QFontDatabase.smoothSizes(font.family(), style)
+ for size in sizes:
+ self._size_combo.addItem(f"{size}")
+ self._size_combo.setEditable(False)
+
+ size_index = self._size_combo.findText(current_size)
+
+ if size_index == -1:
+ self._size_combo.setCurrentIndex(max(0, self._size_combo.count() / 3))
+ else:
+ self._size_combo.setCurrentIndex(size_index)
+
+ @Slot(str)
+ def insert_character(self, character):
+ self._line_edit.insert(character)
+
+ @Slot()
+ def update_clipboard(self):
+ clipboard = QGuiApplication.clipboard()
+ clipboard.setText(self._line_edit.text(), QClipboard.Clipboard)
+ clipboard.setText(self._line_edit.text(), QClipboard.Selection)
+
+ @Slot()
+ def show_info(self):
+ screen_geometry = self.screen().geometry()
+ dialog = FontInfoDialog(self)
+ dialog.setWindowTitle("Fonts")
+ dialog.setAttribute(Qt.WA_DeleteOnClose)
+ dialog.resize(screen_geometry.width() / 4, screen_geometry.height() / 4)
+ dialog.show()
diff --git a/examples/widgets/widgets/digitalclock/digitalclock.py b/examples/widgets/widgets/digitalclock/digitalclock.py
new file mode 100644
index 000000000..f0030b356
--- /dev/null
+++ b/examples/widgets/widgets/digitalclock/digitalclock.py
@@ -0,0 +1,41 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+import sys
+
+from PySide6.QtCore import QTime, QTimer, Slot
+from PySide6.QtWidgets import QApplication, QLCDNumber
+
+
+class DigitalClock(QLCDNumber):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.setSegmentStyle(QLCDNumber.Filled)
+ self.setDigitCount(8)
+
+ self.timer = QTimer(self)
+ self.timer.timeout.connect(self.show_time)
+ self.timer.start(1000)
+
+ self.show_time()
+
+ self.setWindowTitle("Digital Clock")
+ self.resize(250, 60)
+
+ @Slot()
+ def show_time(self):
+ time = QTime.currentTime()
+ text = time.toString("hh:mm:ss")
+
+ # Blinking effect
+ if (time.second() % 2) == 0:
+ text = text.replace(":", " ")
+
+ self.display(text)
+
+
+if __name__ == "__main__":
+
+ app = QApplication(sys.argv)
+ clock = DigitalClock()
+ clock.show()
+ sys.exit(app.exec())
diff --git a/examples/widgets/widgets/digitalclock/digitalclock.pyproject b/examples/widgets/widgets/digitalclock/digitalclock.pyproject
new file mode 100644
index 000000000..03c3b6bb7
--- /dev/null
+++ b/examples/widgets/widgets/digitalclock/digitalclock.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["digitalclock.py"]
+}
diff --git a/examples/widgets/widgets/digitalclock/doc/digitalclock-screenshot.png b/examples/widgets/widgets/digitalclock/doc/digitalclock-screenshot.png
new file mode 100644
index 000000000..2234d7665
--- /dev/null
+++ b/examples/widgets/widgets/digitalclock/doc/digitalclock-screenshot.png
Binary files differ
diff --git a/examples/widgets/widgets/digitalclock/doc/digitalclock.rst b/examples/widgets/widgets/digitalclock/doc/digitalclock.rst
new file mode 100644
index 000000000..d13275d24
--- /dev/null
+++ b/examples/widgets/widgets/digitalclock/doc/digitalclock.rst
@@ -0,0 +1,14 @@
+Digital Clock Example
+=====================
+
+.. tags:: Android
+
+The Digital Clock example shows how to use QLCDNumber to display a number with
+LCD-like digits.
+
+.. image:: digitalclock-screenshot.png
+ :width: 400
+ :alt: Digital Clock Screenshot
+
+This example also demonstrates how QTimer can be used to update a widget at
+regular intervals.
diff --git a/examples/widgets/tetrix/doc/tetrix-screenshot.png b/examples/widgets/widgets/tetrix/doc/tetrix-screenshot.png
index 2c3dade39..2c3dade39 100644
--- a/examples/widgets/tetrix/doc/tetrix-screenshot.png
+++ b/examples/widgets/widgets/tetrix/doc/tetrix-screenshot.png
Binary files differ
diff --git a/examples/widgets/tetrix/doc/tetrix.rst b/examples/widgets/widgets/tetrix/doc/tetrix.rst
index 0749de9de..0749de9de 100644
--- a/examples/widgets/tetrix/doc/tetrix.rst
+++ b/examples/widgets/widgets/tetrix/doc/tetrix.rst
diff --git a/examples/widgets/widgets/tetrix/tetrix.py b/examples/widgets/widgets/tetrix/tetrix.py
new file mode 100644
index 000000000..b5df2aa35
--- /dev/null
+++ b/examples/widgets/widgets/tetrix/tetrix.py
@@ -0,0 +1,472 @@
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""PySide6 port of the widgets/widgets/tetrix example from Qt v5.x"""
+
+from enum import IntEnum
+import random
+import sys
+
+from PySide6.QtCore import QBasicTimer, QSize, Qt, Signal, Slot
+from PySide6.QtGui import QColor, QPainter, QPixmap
+from PySide6.QtWidgets import (QApplication, QFrame, QGridLayout, QLabel,
+ QLCDNumber, QPushButton, QWidget)
+
+
+class Piece(IntEnum):
+ NoShape = 0
+ ZShape = 1
+ SShape = 2
+ LineShape = 3
+ TShape = 4
+ SquareShape = 5
+ LShape = 6
+ MirroredLShape = 7
+
+
+class TetrixWindow(QWidget):
+ def __init__(self):
+ super().__init__()
+
+ self.board = TetrixBoard()
+
+ next_piece_label = QLabel()
+ next_piece_label.setFrameStyle(QFrame.Box | QFrame.Raised)
+ next_piece_label.setAlignment(Qt.AlignCenter)
+ self.board.set_next_piece_label(next_piece_label)
+
+ score_lcd = QLCDNumber(5)
+ score_lcd.setSegmentStyle(QLCDNumber.Filled)
+ level_lcd = QLCDNumber(2)
+ level_lcd.setSegmentStyle(QLCDNumber.Filled)
+ lines_lcd = QLCDNumber(5)
+ lines_lcd.setSegmentStyle(QLCDNumber.Filled)
+
+ start_button = QPushButton("&Start")
+ start_button.setFocusPolicy(Qt.NoFocus)
+ quit_button = QPushButton("&Quit")
+ quit_button.setFocusPolicy(Qt.NoFocus)
+ pause_button = QPushButton("&Pause")
+ pause_button.setFocusPolicy(Qt.NoFocus)
+
+ start_button.clicked.connect(self.board.start)
+ pause_button.clicked.connect(self.board.pause)
+ quit_button.clicked.connect(qApp.quit) # noqa: F821
+ self.board.score_changed.connect(score_lcd.display)
+ self.board.level_changed.connect(level_lcd.display)
+ self.board.lines_removed_changed.connect(lines_lcd.display)
+
+ layout = QGridLayout(self)
+ layout.addWidget(self.create_label("NEXT"), 0, 0)
+ layout.addWidget(next_piece_label, 1, 0)
+ layout.addWidget(self.create_label("LEVEL"), 2, 0)
+ layout.addWidget(level_lcd, 3, 0)
+ layout.addWidget(start_button, 4, 0)
+ layout.addWidget(self.board, 0, 1, 6, 1)
+ layout.addWidget(self.create_label("SCORE"), 0, 2)
+ layout.addWidget(score_lcd, 1, 2)
+ layout.addWidget(self.create_label("LINES REMOVED"), 2, 2)
+ layout.addWidget(lines_lcd, 3, 2)
+ layout.addWidget(quit_button, 4, 2)
+ layout.addWidget(pause_button, 5, 2)
+
+ self.setWindowTitle("Tetrix")
+ self.resize(550, 370)
+
+ def create_label(self, text):
+ lbl = QLabel(text)
+ lbl.setAlignment(Qt.AlignHCenter | Qt.AlignBottom)
+ return lbl
+
+
+class TetrixBoard(QFrame):
+ board_width = 10
+ board_height = 22
+
+ score_changed = Signal(int)
+
+ level_changed = Signal(int)
+
+ lines_removed_changed = Signal(int)
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ self.timer = QBasicTimer()
+ self.nextPieceLabel = None
+ self._is_waiting_after_line = False
+ self._cur_piece = TetrixPiece()
+ self._next_piece = TetrixPiece()
+ self._cur_x = 0
+ self._cur_y = 0
+ self._num_lines_removed = 0
+ self._num_pieces_dropped = 0
+ self.score = 0
+ self.level = 0
+ self.board = None
+
+ self.setFrameStyle(QFrame.Panel | QFrame.Sunken)
+ self.setFocusPolicy(Qt.StrongFocus)
+ self._is_started = False
+ self._is_paused = False
+ self.clear_board()
+
+ self._next_piece.set_random_shape()
+
+ def shape_at(self, x, y):
+ return self.board[(y * TetrixBoard.board_width) + x]
+
+ def set_shape_at(self, x, y, shape):
+ self.board[(y * TetrixBoard.board_width) + x] = shape
+
+ def timeout_time(self):
+ return 1000 / (1 + self.level)
+
+ def square_width(self):
+ return self.contentsRect().width() / TetrixBoard.board_width
+
+ def square_height(self):
+ return self.contentsRect().height() / TetrixBoard.board_height
+
+ def set_next_piece_label(self, label):
+ self.nextPieceLabel = label
+
+ def sizeHint(self):
+ return QSize(TetrixBoard.board_width * 15 + self.frameWidth() * 2,
+ TetrixBoard.board_height * 15 + self.frameWidth() * 2)
+
+ def minimum_size_hint(self):
+ return QSize(TetrixBoard.board_width * 5 + self.frameWidth() * 2,
+ TetrixBoard.board_height * 5 + self.frameWidth() * 2)
+
+ @Slot()
+ def start(self):
+ if self._is_paused:
+ return
+
+ self._is_started = True
+ self._is_waiting_after_line = False
+ self._num_lines_removed = 0
+ self._num_pieces_dropped = 0
+ self.score = 0
+ self.level = 1
+ self.clear_board()
+
+ self.lines_removed_changed.emit(self._num_lines_removed)
+ self.score_changed.emit(self.score)
+ self.level_changed.emit(self.level)
+
+ self.new_piece()
+ self.timer.start(self.timeout_time(), self)
+
+ @Slot()
+ def pause(self):
+ if not self._is_started:
+ return
+
+ self._is_paused = not self._is_paused
+ if self._is_paused:
+ self.timer.stop()
+ else:
+ self.timer.start(self.timeout_time(), self)
+
+ self.update()
+
+ def paintEvent(self, event):
+ super(TetrixBoard, self).paintEvent(event)
+
+ with QPainter(self) as painter:
+ rect = self.contentsRect()
+
+ if self._is_paused:
+ painter.drawText(rect, Qt.AlignCenter, "Pause")
+ return
+
+ board_top = rect.bottom() - TetrixBoard.board_height * self.square_height()
+
+ for i in range(TetrixBoard.board_height):
+ for j in range(TetrixBoard.board_width):
+ shape = self.shape_at(j, TetrixBoard.board_height - i - 1)
+ if shape != Piece.NoShape:
+ self.draw_square(painter,
+ rect.left() + j * self.square_width(),
+ board_top + i * self.square_height(), shape)
+
+ if self._cur_piece.shape() != Piece.NoShape:
+ for i in range(4):
+ x = self._cur_x + self._cur_piece.x(i)
+ y = self._cur_y - self._cur_piece.y(i)
+ self.draw_square(painter, rect.left() + x * self.square_width(),
+ board_top
+ + (TetrixBoard.board_height - y - 1) * self.square_height(),
+ self._cur_piece.shape())
+
+ def keyPressEvent(self, event):
+ if not self._is_started or self._is_paused or self._cur_piece.shape() == Piece.NoShape:
+ super(TetrixBoard, self).keyPressEvent(event)
+ return
+
+ key = event.key()
+ if key == Qt.Key_Left:
+ self.try_move(self._cur_piece, self._cur_x - 1, self._cur_y)
+ elif key == Qt.Key_Right:
+ self.try_move(self._cur_piece, self._cur_x + 1, self._cur_y)
+ elif key == Qt.Key_Down:
+ self.try_move(self._cur_piece.rotated_right(), self._cur_x, self._cur_y)
+ elif key == Qt.Key_Up:
+ self.try_move(self._cur_piece.rotated_left(), self._cur_x, self._cur_y)
+ elif key == Qt.Key_Space:
+ self.drop_down()
+ elif key == Qt.Key_D:
+ self.one_line_down()
+ else:
+ super(TetrixBoard, self).keyPressEvent(event)
+
+ def timerEvent(self, event):
+ if event.timerId() == self.timer.timerId():
+ if self._is_waiting_after_line:
+ self._is_waiting_after_line = False
+ self.new_piece()
+ self.timer.start(self.timeout_time(), self)
+ else:
+ self.one_line_down()
+ else:
+ super(TetrixBoard, self).timerEvent(event)
+
+ def clear_board(self):
+ self.board = [
+ Piece.NoShape for _ in range(TetrixBoard.board_height * TetrixBoard.board_width)]
+
+ def drop_down(self):
+ drop_height = 0
+ new_y = self._cur_y
+ while new_y > 0:
+ if not self.try_move(self._cur_piece, self._cur_x, new_y - 1):
+ break
+ new_y -= 1
+ drop_height += 1
+
+ self.piece_dropped(drop_height)
+
+ def one_line_down(self):
+ if not self.try_move(self._cur_piece, self._cur_x, self._cur_y - 1):
+ self.piece_dropped(0)
+
+ def piece_dropped(self, dropHeight):
+ for i in range(4):
+ x = self._cur_x + self._cur_piece.x(i)
+ y = self._cur_y - self._cur_piece.y(i)
+ self.set_shape_at(x, y, self._cur_piece.shape())
+
+ self._num_pieces_dropped += 1
+ if self._num_pieces_dropped % 25 == 0:
+ self.level += 1
+ self.timer.start(self.timeout_time(), self)
+ self.level_changed.emit(self.level)
+
+ self.score += dropHeight + 7
+ self.score_changed.emit(self.score)
+ self.remove_full_lines()
+
+ if not self._is_waiting_after_line:
+ self.new_piece()
+
+ def remove_full_lines(self):
+ num_full_lines = 0
+
+ for i in range(TetrixBoard.board_height - 1, -1, -1):
+ line_is_full = True
+
+ for j in range(TetrixBoard.board_width):
+ if self.shape_at(j, i) == Piece.NoShape:
+ line_is_full = False
+ break
+
+ if line_is_full:
+ num_full_lines += 1
+ for k in range(i, TetrixBoard.board_height - 1):
+ for j in range(TetrixBoard.board_width):
+ self.set_shape_at(j, k, self.shape_at(j, k + 1))
+
+ for j in range(TetrixBoard.board_width):
+ self.set_shape_at(j, TetrixBoard.board_height - 1, Piece.NoShape)
+
+ if num_full_lines > 0:
+ self._num_lines_removed += num_full_lines
+ self.score += 10 * num_full_lines
+ self.lines_removed_changed.emit(self._num_lines_removed)
+ self.score_changed.emit(self.score)
+
+ self.timer.start(500, self)
+ self._is_waiting_after_line = True
+ self._cur_piece.set_shape(Piece.NoShape)
+ self.update()
+
+ def new_piece(self):
+ self._cur_piece = self._next_piece
+ self._next_piece.set_random_shape()
+ self.show_next_piece()
+ self._cur_x = TetrixBoard.board_width // 2 + 1
+ self._cur_y = TetrixBoard.board_height - 1 + self._cur_piece.min_y()
+
+ if not self.try_move(self._cur_piece, self._cur_x, self._cur_y):
+ self._cur_piece.set_shape(Piece.NoShape)
+ self.timer.stop()
+ self._is_started = False
+
+ def show_next_piece(self):
+ if self.nextPieceLabel is not None:
+ return
+
+ dx = self._next_piece.max_x() - self._next_piece.min_x() + 1
+ dy = self._next_piece.max_y() - self._next_piece.min_y() + 1
+
+ pixmap = QPixmap(dx * self.square_width(), dy * self.square_height())
+ with QPainter(pixmap) as painter:
+ painter.fillRect(pixmap.rect(), self.nextPieceLabel.palette().background())
+
+ for i in range(4):
+ x = self._next_piece.x(i) - self._next_piece.min_x()
+ y = self._next_piece.y(i) - self._next_piece.min_y()
+ self.draw_square(painter, x * self.square_width(),
+ y * self.square_height(), self._next_piece.shape())
+
+ self.nextPieceLabel.setPixmap(pixmap)
+
+ def try_move(self, newPiece, newX, newY):
+ for i in range(4):
+ x = newX + newPiece.x(i)
+ y = newY - newPiece.y(i)
+ if x < 0 or x >= TetrixBoard.board_width or y < 0 or y >= TetrixBoard.board_height:
+ return False
+ if self.shape_at(x, y) != Piece.NoShape:
+ return False
+
+ self._cur_piece = newPiece
+ self._cur_x = newX
+ self._cur_y = newY
+ self.update()
+ return True
+
+ def draw_square(self, painter, x, y, shape):
+ color_table = [0x000000, 0xCC6666, 0x66CC66, 0x6666CC,
+ 0xCCCC66, 0xCC66CC, 0x66CCCC, 0xDAAA00]
+
+ color = QColor(color_table[shape])
+ painter.fillRect(x + 1, y + 1, self.square_width() - 2, self.square_height() - 2, color)
+
+ painter.setPen(color.lighter())
+ painter.drawLine(x, y + self.square_height() - 1, x, y)
+ painter.drawLine(x, y, x + self.square_width() - 1, y)
+
+ painter.setPen(color.darker())
+ painter.drawLine(x + 1, y + self.square_height() - 1,
+ x + self.square_width() - 1, y + self.square_height() - 1)
+ painter.drawLine(x + self.square_width() - 1,
+ y + self.square_height() - 1, x + self.square_width() - 1, y + 1)
+
+
+class TetrixPiece(object):
+ coords_table = (
+ ((0, 0), (0, 0), (0, 0), (0, 0)),
+ ((0, -1), (0, 0), (-1, 0), (-1, 1)),
+ ((0, -1), (0, 0), (1, 0), (1, 1)),
+ ((0, -1), (0, 0), (0, 1), (0, 2)),
+ ((-1, 0), (0, 0), (1, 0), (0, 1)),
+ ((0, 0), (1, 0), (0, 1), (1, 1)),
+ ((-1, -1), (0, -1), (0, 0), (0, 1)),
+ ((1, -1), (0, -1), (0, 0), (0, 1))
+ )
+
+ def __init__(self):
+ self.coords = [[0, 0] for _ in range(4)]
+ self._piece_shape = Piece.NoShape
+
+ self.set_shape(Piece.NoShape)
+
+ def shape(self):
+ return self._piece_shape
+
+ def set_shape(self, shape):
+ table = TetrixPiece.coords_table[shape]
+ for i in range(4):
+ for j in range(2):
+ self.coords[i][j] = table[i][j]
+
+ self._piece_shape = shape
+
+ def set_random_shape(self):
+ self.set_shape(random.randint(1, 7))
+
+ def x(self, index):
+ return self.coords[index][0]
+
+ def y(self, index):
+ return self.coords[index][1]
+
+ def set_x(self, index, x):
+ self.coords[index][0] = x
+
+ def set_y(self, index, y):
+ self.coords[index][1] = y
+
+ def min_x(self):
+ m = self.coords[0][0]
+ for i in range(4):
+ m = min(m, self.coords[i][0])
+
+ return m
+
+ def max_x(self):
+ m = self.coords[0][0]
+ for i in range(4):
+ m = max(m, self.coords[i][0])
+
+ return m
+
+ def min_y(self):
+ m = self.coords[0][1]
+ for i in range(4):
+ m = min(m, self.coords[i][1])
+
+ return m
+
+ def max_y(self):
+ m = self.coords[0][1]
+ for i in range(4):
+ m = max(m, self.coords[i][1])
+
+ return m
+
+ def rotated_left(self):
+ if self._piece_shape == Piece.SquareShape:
+ return self
+
+ result = TetrixPiece()
+ result._piece_shape = self._piece_shape
+ for i in range(4):
+ result.set_x(i, self.y(i))
+ result.set_y(i, -self.x(i))
+
+ return result
+
+ def rotated_right(self):
+ if self._piece_shape == Piece.SquareShape:
+ return self
+
+ result = TetrixPiece()
+ result._piece_shape = self._piece_shape
+ for i in range(4):
+ result.set_x(i, -self.y(i))
+ result.set_y(i, self.x(i))
+
+ return result
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ window = TetrixWindow()
+ window.show()
+ random.seed(None)
+ sys.exit(app.exec())
diff --git a/examples/widgets/tetrix/tetrix.pyproject b/examples/widgets/widgets/tetrix/tetrix.pyproject
index 75121ea64..75121ea64 100644
--- a/examples/widgets/tetrix/tetrix.pyproject
+++ b/examples/widgets/widgets/tetrix/tetrix.pyproject
diff --git a/examples/widgets/widgetsgallery/main.py b/examples/widgets/widgetsgallery/main.py
index c3602321b..e40077a38 100644
--- a/examples/widgets/widgetsgallery/main.py
+++ b/examples/widgets/widgetsgallery/main.py
@@ -1,55 +1,15 @@
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the widgets/gallery example from Qt v5.15"""
import sys
-from PySide6.QtCore import QCoreApplication, Qt
from PySide6.QtWidgets import QApplication
from widgetgallery import WidgetGallery
if __name__ == '__main__':
- QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
- QCoreApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)
app = QApplication()
gallery = WidgetGallery()
gallery.show()
diff --git a/examples/widgets/widgetsgallery/widgetgallery.py b/examples/widgets/widgetsgallery/widgetgallery.py
index f57e23992..d43ab26a5 100644
--- a/examples/widgets/widgetsgallery/widgetgallery.py
+++ b/examples/widgets/widgetsgallery/widgetgallery.py
@@ -1,52 +1,23 @@
-#############################################################################
-##
-## Copyright (C) 2020 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import sys
-from PySide6.QtWidgets import *
+from PySide6.QtCore import (QDateTime, QDir, QLibraryInfo, QSysInfo, Qt,
+ QTimer, Slot, qVersion)
from PySide6.QtGui import (QCursor, QDesktopServices, QGuiApplication, QIcon,
QKeySequence, QShortcut, QStandardItem,
- QStandardItemModel, QScreen, QWindow)
-from PySide6.QtCore import (QDateTime, QDir, QLibraryInfo, QMetaObject,
- QSysInfo, QTextStream, QTimer, Qt, qVersion)
-
+ QStandardItemModel)
+from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox,
+ QCommandLinkButton, QDateTimeEdit, QDial,
+ QDialog, QDialogButtonBox, QFileSystemModel,
+ QGridLayout, QGroupBox, QHBoxLayout, QLabel,
+ QLineEdit, QListView, QMenu, QPlainTextEdit,
+ QProgressBar, QPushButton, QRadioButton,
+ QScrollBar, QSizePolicy, QSlider, QSpinBox,
+ QStyleFactory, QTableWidget, QTabWidget,
+ QTextBrowser, QTextEdit, QToolBox, QToolButton,
+ QTreeView, QVBoxLayout, QWidget)
POEM = """Twinkle, twinkle, little star,
How I wonder what you are.
@@ -193,8 +164,8 @@ class WidgetGallery(QDialog):
top_layout.addStretch(1)
top_layout.addWidget(disable_widgets_checkbox)
- dialog_buttonbox = QDialogButtonBox(QDialogButtonBox.Help |
- QDialogButtonBox.Close)
+ dialog_buttonbox = QDialogButtonBox(QDialogButtonBox.Help
+ | QDialogButtonBox.Close)
init_widget(dialog_buttonbox, "dialogButtonBox")
dialog_buttonbox.helpRequested.connect(launch_module_help)
dialog_buttonbox.rejected.connect(self.reject)
@@ -217,9 +188,11 @@ class WidgetGallery(QDialog):
self.windowHandle().screenChanged.connect(self.update_systeminfo)
self.update_systeminfo()
+ @Slot(str)
def change_style(self, style_name):
QApplication.setStyle(QStyleFactory.create(style_name))
+ @Slot()
def advance_progressbar(self):
cur_val = self._progress_bar.value()
max_val = self._progress_bar.maximum()
@@ -416,6 +389,7 @@ class WidgetGallery(QDialog):
timer.start(1000)
return result
+ @Slot()
def update_systeminfo(self):
"""Display system information"""
system_info = SYSTEMINFO.format(sys.version,
@@ -424,6 +398,7 @@ class WidgetGallery(QDialog):
screen_info(self))
self._systeminfo_textbrowser.setHtml(system_info)
+ @Slot()
def help_on_current_widget(self):
"""Display help on widget under mouse"""
w = QApplication.widgetAt(QCursor.pos(self.screen()))
diff --git a/examples/xml/dombookmarks/dombookmarks.py b/examples/xml/dombookmarks/dombookmarks.py
index 6a97c8cc6..a35aeb0f2 100644
--- a/examples/xml/dombookmarks/dombookmarks.py
+++ b/examples/xml/dombookmarks/dombookmarks.py
@@ -1,52 +1,16 @@
-
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
"""PySide6 port of the xml/dombookmarks example from Qt v5.x"""
import sys
-from PySide6.QtCore import QDir, QFile, Qt
-from PySide6.QtGui import QAction, QIcon
-from PySide6.QtWidgets import (QApplication, QFileDialog, QHeaderView, QMainWindow, QMessageBox, QStyle, QTreeWidget, QTreeWidgetItem, QWidget)
+from PySide6.QtCore import QDir, QFile, Qt, QTextStream
+from PySide6.QtGui import QAction, QIcon, QKeySequence
+from PySide6.QtWidgets import (QApplication, QFileDialog, QHeaderView,
+ QMainWindow, QMessageBox, QStyle, QTreeWidget,
+ QTreeWidgetItem)
from PySide6.QtXml import QDomDocument
@@ -57,7 +21,6 @@ class MainWindow(QMainWindow):
self._xbel_tree = XbelTree()
self.setCentralWidget(self._xbel_tree)
- self.create_actions()
self.create_menus()
self.statusBar().showMessage("Ready")
@@ -67,8 +30,8 @@ class MainWindow(QMainWindow):
def open(self):
file_name = QFileDialog.getOpenFileName(self,
- "Open Bookmark File", QDir.currentPath(),
- "XBEL Files (*.xbel *.xml)")[0]
+ "Open Bookmark File", QDir.currentPath(),
+ "XBEL Files (*.xbel *.xml)")[0]
if not file_name:
return
@@ -77,7 +40,7 @@ class MainWindow(QMainWindow):
if not in_file.open(QFile.ReadOnly | QFile.Text):
reason = in_file.errorString()
QMessageBox.warning(self, "DOM Bookmarks",
- f"Cannot read file {file_name}:\n{reason}.")
+ f"Cannot read file {file_name}:\n{reason}.")
return
if self._xbel_tree.read(in_file):
@@ -85,8 +48,8 @@ class MainWindow(QMainWindow):
def save_as(self):
file_name = QFileDialog.getSaveFileName(self,
- "Save Bookmark File", QDir.currentPath(),
- "XBEL Files (*.xbel *.xml)")[0]
+ "Save Bookmark File", QDir.currentPath(),
+ "XBEL Files (*.xbel *.xml)")[0]
if not file_name:
return
@@ -95,7 +58,7 @@ class MainWindow(QMainWindow):
if not out_file.open(QFile.WriteOnly | QFile.Text):
reason = out_file.errorString()
QMessageBox.warning(self, "DOM Bookmarks",
- "Cannot write file {fileName}:\n{reason}.")
+ f"Cannot write file {file_name}:\n{reason}.")
return
if self._xbel_tree.write(out_file):
@@ -103,35 +66,26 @@ class MainWindow(QMainWindow):
def about(self):
QMessageBox.about(self, "About DOM Bookmarks",
- "The <b>DOM Bookmarks</b> example demonstrates how to use Qt's "
- "DOM classes to read and write XML documents.")
-
- def create_actions(self):
- self._open_act = QAction("&Open...", self, shortcut="Ctrl+O",
- triggered=self.open)
-
- self._save_as_act = QAction("&Save As...", self, shortcut="Ctrl+S",
- triggered=self.save_as)
-
- self._exit_act = QAction("E&xit", self, shortcut="Ctrl+Q",
- triggered=self.close)
-
- self._about_act = QAction("&About", self, triggered=self.about)
-
- self._about_qt_act = QAction("About &Qt", self,
- triggered=qApp.aboutQt)
+ "The <b>DOM Bookmarks</b> example demonstrates how to use Qt's "
+ "DOM classes to read and write XML documents.")
def create_menus(self):
self._file_menu = self.menuBar().addMenu("&File")
- self._file_menu.addAction(self._open_act)
- self._file_menu.addAction(self._save_as_act)
- self._file_menu.addAction(self._exit_act)
+ self._file_menu.addAction(QAction("&Open...", self,
+ shortcut=QKeySequence(
+ Qt.CTRL | Qt.Key_O), triggered=self.open))
+ self._file_menu.addAction(QAction("&Save As...", self,
+ shortcut=QKeySequence(
+ Qt.CTRL | Qt.Key_S), triggered=self.save_as))
+ self._file_menu.addAction(QAction("E&xit", self,
+ shortcut=QKeySequence(
+ Qt.CTRL | Qt.Key_Q), triggered=self.close))
self.menuBar().addSeparator()
self._help_menu = self.menuBar().addMenu("&Help")
- self._help_menu.addAction(self._about_act)
- self._help_menu.addAction(self._about_qt_act)
+ self._help_menu.addAction(QAction("&About", self, triggered=self.about))
+ self._help_menu.addAction(QAction("About &Qt", self, triggered=qApp.aboutQt)) # noqa: F821
class XbelTree(QTreeWidget):
@@ -149,26 +103,27 @@ class XbelTree(QTreeWidget):
self._bookmark_icon = QIcon()
self._folder_icon.addPixmap(self.style().standardPixmap(QStyle.SP_DirClosedIcon),
- QIcon.Normal, QIcon.Off)
+ QIcon.Normal, QIcon.Off)
self._folder_icon.addPixmap(self.style().standardPixmap(QStyle.SP_DirOpenIcon),
- QIcon.Normal, QIcon.On)
+ QIcon.Normal, QIcon.On)
self._bookmark_icon.addPixmap(self.style().standardPixmap(QStyle.SP_FileIcon))
def read(self, device):
ok, errorStr, errorLine, errorColumn = self._dom_document.setContent(device, True)
if not ok:
QMessageBox.information(self.window(), "DOM Bookmarks",
- f"Parse error at line {errorLine}, column {errorColumn}:\n{errorStr}")
+ f"Parse error at line {errorLine}, "
+ f"column {errorColumn}:\n{errorStr}")
return False
root = self._dom_document.documentElement()
if root.tagName() != 'xbel':
QMessageBox.information(self.window(), "DOM Bookmarks",
- "The file is not an XBEL file.")
+ "The file is not an XBEL file.")
return False
elif root.hasAttribute('version') and root.attribute('version') != '1.0':
QMessageBox.information(self.window(), "DOM Bookmarks",
- "The file is not an XBEL version 1.0 file.")
+ "The file is not an XBEL version 1.0 file.")
return False
self.clear()
@@ -176,7 +131,7 @@ class XbelTree(QTreeWidget):
# It might not be connected.
try:
self.itemChanged.disconnect(self.update_dom_element)
- except:
+ except RuntimeError:
pass
child = root.firstChildElement('folder')
diff --git a/examples/xml/dombookmarks/dombookmarks.pyproject b/examples/xml/dombookmarks/dombookmarks.pyproject
index 9a688558d..0a0b203a6 100644
--- a/examples/xml/dombookmarks/dombookmarks.pyproject
+++ b/examples/xml/dombookmarks/dombookmarks.pyproject
@@ -1,3 +1,3 @@
{
- "files": ["jennifer.xbel", "frank.xbel", "dombookmarks.py"]
+ "files": ["jennifer.xbel", "dombookmarks.py"]
}
diff --git a/examples/xml/dombookmarks/frank.xbel b/examples/xml/dombookmarks/frank.xbel
deleted file mode 100644
index f498a5e04..000000000
--- a/examples/xml/dombookmarks/frank.xbel
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xbel>
-<xbel version="1.0">
- <folder folded="yes">
- <title>Literate Programming</title>
- <bookmark href="http://www.vivtek.com/litprog.html">
- <title>Synopsis of Literate Programming</title>
- </bookmark>
- <bookmark href="http://vasc.ri.cmu.edu/old_help/Programming/Literate/literate.html">
- <title>Literate Programming: Propaganda and Tools</title>
- </bookmark>
- <bookmark href="http://www.isy.liu.se/%7Eturbell/litprog/">
- <title>Literate Programming by Henrik Turbell</title>
- </bookmark>
- <bookmark href="http://www.desy.de/user/projects/LitProg.html">
- <title>Literate Programming Library</title>
- </bookmark>
- <bookmark href="http://www.loria.fr/services/tex/english/litte.html">
- <title>Literate Programming Basics</title>
- </bookmark>
- <bookmark href="http://ei.cs.vt.edu/%7Ecs5014/courseNotes/4.LiterateProgramming/literate_prog.html">
- <title>Literate Programming Overview</title>
- </bookmark>
- <bookmark href="http://www.perl.com/pub/a/tchrist/litprog.html">
- <title>POD is not Literate Programming</title>
- </bookmark>
- <bookmark href="http://www.cornellcollege.edu/%7Eltabak/publications/articles/swsafety.html">
- <title>Computers That We Can Count On</title>
- </bookmark>
- <bookmark href="http://www.cs.auc.dk/%7Enormark/litpro/issues-and-problems.html">
- <title>Literate Programming - Issues and Problems</title>
- </bookmark>
- <bookmark href="http://c2.com/cgi/wiki?LiterateProgramming">
- <title>Literate Programming - Wiki Pages</title>
- </bookmark>
- <bookmark href="http://developers.slashdot.org/developers/02/05/19/2216233.shtml">
- <title>What is well-commented code?</title>
- </bookmark>
- <bookmark href="http://liinwww.ira.uka.de/bibliography/SE/litprog.html">
- <title>Bibliography on literate programming - A searchable bibliography</title>
- </bookmark>
- <bookmark href="http://www2.umassd.edu/SWPI/ProcessBibliography/bib-codereading.html">
- <title>Program comprehension and code reading bibliography</title>
- </bookmark>
- <bookmark href="http://www.cs.auc.dk/%7Enormark/elucidative-programming/">
- <title>Elucidative Programming</title>
- </bookmark>
- <bookmark href="http://www.msu.edu/%7Epfaffben/avl/index.html">
- <title>AVL Trees (TexiWeb)</title>
- </bookmark>
- <bookmark href="http://literate-programming.wikiverse.org/">
- <title>Literate Programming on Wikiverse</title>
- </bookmark>
- <bookmark href="http://www.pbrt.org/">
- <title>Physically Based Rendering: From Theory to Implementation</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Useful C++ Links</title>
- <folder folded="no">
- <title>STL</title>
- <bookmark href="http://www.sgi.com/tech/stl/table_of_contents.html">
- <title>STL Reference Documentation</title>
- </bookmark>
- <bookmark href="http://www.yrl.co.uk/~phil/stl/stl.htmlx">
- <title>STL Tutorial</title>
- </bookmark>
- <bookmark href="http://www.cppreference.com/cpp_stl.html">
- <title>STL Reference</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Qt</title>
- <bookmark href="http://doc.trolltech.com/2.3/">
- <title>Qt 2.3 Reference</title>
- </bookmark>
- <bookmark href="http://doc.trolltech.com/3.3/">
- <title>Qt 3.3 Reference</title>
- </bookmark>
- <bookmark href="http://doc.trolltech.com/4.0/">
- <title>Qt 4.0 Reference</title>
- </bookmark>
- <bookmark href="http://www.trolltech.com/">
- <title>Trolltech Home Page</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>IOStreams</title>
- <bookmark href="http://www.cplusplus.com/ref/iostream/index.html">
- <title>IO Stream Library</title>
- </bookmark>
- <bookmark href="http://courses.cs.vt.edu/~cs2604/fall01/binio.html">
- <title>Binary I/O</title>
- </bookmark>
- <bookmark href="http://www.parashift.com/c++-faq-lite/input-output.html">
- <title>I/O Stream FAQ</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>gdb</title>
- <bookmark href="http://www.cs.princeton.edu/~benjasik/gdb/gdbtut.html">
- <title>GDB Tutorial</title>
- </bookmark>
- <bookmark href="http://www.gnu.org/manual/gdb-4.17/html_mono/gdb.html">
- <title>Debugging with GDB</title>
- </bookmark>
- <bookmark href="http://www.cs.washington.edu/orgs/acm/tutorials/dev-in-unix/gdb-refcard.pdf">
- <title>GDB Quick Reference Page (PDF) (Handy)</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>Classes and Constructors</title>
- <bookmark href="http://www.parashift.com/c++-faq-lite/ctors.html">
- <title>Constructor FAQ</title>
- </bookmark>
- <bookmark href="http://www.juicystudio.com/tutorial/cpp/index.html">
- <title>Organizing Classes</title>
- </bookmark>
- </folder>
- </folder>
- <folder folded="yes">
- <title>Software Documentation or System Documentation</title>
- <bookmark href="http://www.martinfowler.com/distributedComputing/thud.html">
- <title>The Almighty Thud</title>
- </bookmark>
- <bookmark href="http://msdn.microsoft.com/library/techart/cfr.htm">
- <title>Microsoft Coding Techniques and Programming Practices</title>
- </bookmark>
- <bookmark href="http://www.bearcave.com/software/prog_docs.html">
- <title>Software and Documentation</title>
- </bookmark>
- <bookmark href="http://c2.com/cgi/wiki?TheSourceCodeIsTheDesign">
- <title>The Source Code is the Design</title>
- </bookmark>
- <bookmark href="http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm">
- <title>What is Software Design?</title>
- </bookmark>
- <bookmark href="http://www.mindprod.com/unmain.html">
- <title>How To Write Unmaintainable Code</title>
- </bookmark>
- <bookmark href="http://www.idinews.com/selfDoc.html">
- <title>Self Documenting Program Code Remains a Distant Goal</title>
- </bookmark>
- <bookmark href="http://www.sdmagazine.com/documents/s=730/sdm0106m/0106m.htm">
- <title>Place Tab A in Slot B</title>
- </bookmark>
- <bookmark href="http://www.holub.com/class/uml/uml.html">
- <title>UML Reference Card</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>TeX Resources</title>
- <bookmark href="http://www.tug.org/">
- <title>The TeX User's Group</title>
- </bookmark>
- <bookmark href="http://www.miktex.org/">
- <title>MikTeX website</title>
- </bookmark>
- <bookmark href="http://cm.bell-labs.com/who/hobby/MetaPost.html">
- <title>MetaPost website</title>
- </bookmark>
- <bookmark href="http://pauillac.inria.fr/%7Emaranget/hevea/">
- <title>HEVEA is a quite complete and fast LATEX to HTML translator</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Portable Document Format (PDF)</title>
- <bookmark href="http://www.adobe.com/">
- <title>Adobe - The postscript and PDF standards</title>
- </bookmark>
- <bookmark href="http://partners.adobe.com/asn/developer/technotes/acrobatpdf.html">
- <title>Reference Manual Portable Document Format</title>
- </bookmark>
- <bookmark href="http://partners.adobe.com/asn/developer/acrosdk/main.html">
- <title>Adobe Acrobat Software Development Kit</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>Literature Sites</title>
- <bookmark href="http://www.cc.columbia.edu/cu/libraries/subjects/speccol.html">
- <title>Guide to Special Collections (Columbia University)</title>
- </bookmark>
- <bookmark href="http://www.ipl.org/ref/litcrit/">
- <title>Literary Criticism on the Web from the Internet Public Library</title>
- </bookmark>
- <bookmark href="http://www.victorianweb.org/">
- <title>Victorian Web.</title>
- </bookmark>
- <bookmark href="http://vos.ucsb.edu/">
- <title>Voice of the Shuttle.</title>
- </bookmark>
- <bookmark href="http://www.modjourn.brown.edu/">
- <title>Modernist Journals Project</title>
- </bookmark>
- <bookmark href="http://www.poetspath.com">
- <title>Museum of American Poetics</title>
- </bookmark>
- <bookmark href="http://www.english.uiuc.edu/maps/">
- <title>Modern American Poetry</title>
- </bookmark>
- <bookmark href="http://www.findarticles.com/">
- <title>FindArticles.com</title>
- </bookmark>
- <bookmark href="http://www.literaryhistory.com">
- <title>Literary History</title>
- </bookmark>
- <bookmark href="http://www.litencyc.com/LitEncycFrame.htm">
- <title>Literary Encyclopedia</title>
- </bookmark>
- <separator/>
- <bookmark href="http://texts.cdlib.org/ucpress/">
- <title>The University of California Press</title>
- </bookmark>
- <bookmark href="http://www.letrs.indiana.edu/web/w/wright2/">
- <title>Wright American Fiction, 1851-1875</title>
- </bookmark>
- <bookmark href="http://docsouth.unc.edu/">
- <title>Documenting the American South: Beginnings to 1920</title>
- </bookmark>
- <bookmark href="http://etext.lib.virginia.edu/eng-on.html">
- <title>Electronic Text Center at the University of Virginia</title>
- </bookmark>
- <bookmark href="http://digital.nypl.org/schomburg/writers_aa19/">
- <title>The Schomburg Center for Research in Black Culture</title>
- </bookmark>
- <bookmark href="http://www.infomotions.com/alex2/">
- <title>Alex Catalog of Electronic Texts.</title>
- </bookmark>
- </folder>
-</xbel>
diff --git a/examples/xml/dombookmarks/jennifer.xbel b/examples/xml/dombookmarks/jennifer.xbel
index 1f7810b94..d50423683 100644
--- a/examples/xml/dombookmarks/jennifer.xbel
+++ b/examples/xml/dombookmarks/jennifer.xbel
@@ -3,91 +3,67 @@
<xbel version="1.0">
<folder folded="no">
<title>Qt Resources</title>
+ <bookmark href="https://www.qt.io/">
+ <title>Qt home page</title>
+ </bookmark>
+ <bookmark href="https://www.qt.io/contact-us/partners">
+ <title>Qt Partners</title>
+ </bookmark>
+ <bookmark href="https://www.qt.io/qt-professional-services">
+ <title>Professional Services</title>
+ </bookmark>
+ <bookmark href="https://doc.qt.io/">
+ <title>Qt Documentation</title>
+ </bookmark>
<folder folded="yes">
- <title>Trolltech Partners</title>
- <bookmark href="http://partners.trolltech.com/partners/training.html">
- <title>Training Partners</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/service.html">
- <title>Consultants and System Integrators</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/tech.html">
- <title>Technology Partners</title>
+ <title>Community Resources</title>
+ <bookmark href="https://contribute.qt-project.org">
+ <title>The Qt Project</title>
</bookmark>
- <bookmark href="http://partners.trolltech.com/partners/resellers.html">
- <title>Value Added Resellers (VARs)</title>
+ <bookmark href="https://www.qtcentre.org/content/">
+ <title>Qt Centre</title>
</bookmark>
- </folder>
- <folder folded="yes">
- <title>Community Resources</title>
- <bookmark href="http://www.qtforum.org/">
- <title>QtForum.org</title>
+ <bookmark href="https://forum.qt.io/">
+ <title>Forum.Qt.org</title>
</bookmark>
- <bookmark href="http://www.digitalfanatics.org/projects/qt_tutorial/">
+ <bookmark href="https://digitalfanatics.org/projects/qt_tutorial/">
<title>The Independent Qt Tutorial</title>
</bookmark>
- <bookmark href="http://prog.qt.free.fr/">
- <title>French PROG.Qt</title>
- </bookmark>
- <bookmark href="http://www.qtforum.de/">
+ <bookmark href="https://www.qtforum.de/">
<title>German Qt Forum</title>
</bookmark>
- <bookmark href="http://www.korone.net/">
+ <bookmark href="https://www.qt-dev.com/">
<title>Korean Qt Community Site</title>
</bookmark>
- <bookmark href="http://prog.org.ru/forum/forum_14.html">
+ <bookmark href="http://www.prog.org.ru/">
<title>Russian Qt Forum</title>
</bookmark>
- <bookmark href="http://qt4.digitalfanatics.org/">
- <title>Digitalfanatics: The QT 4 Resource Center</title>
- </bookmark>
- <bookmark href="http://www.qtquestions.org/">
- <title>QtQuestions</title>
- </bookmark>
</folder>
- <bookmark href="http://doc.trolltech.com/qq/">
- <title>Qt Quarterly</title>
- </bookmark>
- <bookmark href="http://www.trolltech.com/">
- <title>Trolltech's home page</title>
- </bookmark>
- <bookmark href="http://doc.trolltech.com/4.0/">
- <title>Qt 4.0 documentation</title>
- </bookmark>
- <bookmark href="http://www.trolltech.com/developer/faqs/">
- <title>Frequently Asked Questions</title>
- </bookmark>
</folder>
<folder folded="no">
<title>Online Dictionaries</title>
- <bookmark href="http://www.dictionary.com/">
+ <bookmark href="https://www.dictionary.com/">
<title>Dictionary.com</title>
</bookmark>
- <bookmark href="http://www.m-w.com/">
+ <bookmark href="https://www.merriam-webster.com/">
<title>Merriam-Webster Online</title>
</bookmark>
- <bookmark href="http://dictionary.cambridge.org/">
+ <bookmark href="https://dictionary.cambridge.org/">
<title>Cambridge Dictionaries Online</title>
</bookmark>
- <bookmark href="http://www.onelook.com/">
+ <bookmark href="https://www.onelook.com/">
<title>OneLook Dictionary Search</title>
</bookmark>
<separator/>
- <bookmark href="www.iee.et.tu-dresden.de/">
- <title>The New English-German Dictionary</title>
- </bookmark>
- <bookmark href="http://dict.tu-chemnitz.de/">
- <title>TU Chemnitz German-English Dictionary</title>
+ <bookmark href="https://dict.tu-chemnitz.de/">
+ <title>BEOLINGUS, a service of TU Chemnitz</title>
</bookmark>
<separator/>
<bookmark href="http://atilf.atilf.fr/tlf.htm">
<title>Trésor de la Langue Française informatisé</title>
</bookmark>
- <bookmark href="http://dictionnaires.atilf.fr/dictionnaires/ACADEMIE/">
+ <bookmark href="https://www.dictionnaire-academie.fr/">
<title>Dictionnaire de l'Académie Française</title>
</bookmark>
- <bookmark href="http://elsap1.unicaen.fr/cgi-bin/cherches.cgi">
- <title>Dictionnaire des synonymes</title>
- </bookmark>
</folder>
</xbel>